hkl-5.1.7/0000775000175000017500000000000015144640572011274 5ustar00piccapiccahkl-5.1.7/tests/0000775000175000017500000000000015144640566012441 5ustar00piccapiccahkl-5.1.7/tests/hkl-vector-t.c0000664000175000017500000001457214677222567015144 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include "hkl-vector-private.h" /* use to test also the private API */ static void init(void) { HklVector v; hkl_vector_init(&v, 1, 2, 3); is_double(1., v.data[0], HKL_EPSILON, __func__); is_double(2., v.data[1], HKL_EPSILON, __func__); is_double(3., v.data[2], HKL_EPSILON, __func__); } static void cmp(void) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{1.0, 2.0, 3.0}}; ok(0 == hkl_vector_cmp(&v1, &v1), __func__); ok(1 == hkl_vector_cmp(&v1, &v2), __func__); } static void is_opposite(void) { HklVector v_ref = {{0, 1, 2}}; HklVector v1 = {{1, 2, 3}}; HklVector v2 = {{0, -1, -2}}; ok(FALSE == hkl_vector_is_opposite(&v_ref, &v1), __func__); ok(TRUE == hkl_vector_is_opposite(&v_ref, &v2), __func__); } static void norm2(void) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{-1.0, 1.0, 2.0}}; is_double(sqrt(5.0), hkl_vector_norm2(&v1), HKL_EPSILON, __func__); is_double(sqrt(6.0), hkl_vector_norm2(&v2), HKL_EPSILON, __func__); } static void normalize(void) { HklVector v_ref = {{1. /sqrt(2.), 1. / sqrt(2.), 0.}}; HklVector v = {{1., 1., 0.}}; hkl_vector_normalize(&v); ok(0 == hkl_vector_cmp(&v_ref, &v), __func__); } static void scalar_product(void) { HklVector v = {{0.0, 1.0, 2.0}}; double scalar = hkl_vector_scalar_product(&v, &v); is_double( 5.0, scalar, HKL_EPSILON, __func__ ); } static void vectorial_product(void) { HklVector v = {{0.0, 1.0, 2.0}}; HklVector v1 = {{1.0, 2.0, 3.0}}; HklVector v_ref = {{-1.0, 2.0, -1.0}}; hkl_vector_vectorial_product(&v, &v1); ok(0 == hkl_vector_cmp(&v_ref, &v), __func__); } static void angle(void) { double angle; HklVector v = {{1., 0., 0.}}; HklVector v1 = {{1., 1., 0.}}; HklVector v2 = {{1., 1., .5}}; HklVector v3 = {{1., .5, -1}}; HklVector v4 = {{0., 1., 0.}}; HklVector v5 = {{0., -1., 0.}}; angle = hkl_vector_angle(&v, &v); is_double(0., angle, HKL_EPSILON, __func__); angle = hkl_vector_angle(&v, &v1); is_double(acos(1./sqrt(2.)), angle, HKL_EPSILON, __func__); angle = hkl_vector_angle(&v2, &v3); is_double(acos(1./2.25), angle, HKL_EPSILON, __func__); angle = hkl_vector_angle(&v, &v4); is_double(90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); angle = hkl_vector_angle(&v, &v5); is_double(90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); } static void oriented_angle(void) { double angle; HklVector v = {{1., 0., 0.}}; HklVector v1 = {{1., 1., 0.}}; HklVector v2 = {{0., 1., 0.}}; HklVector v3 = {{0., -1., 0.}}; HklVector ref = {{0, 0, 1}}; angle = hkl_vector_oriented_angle(&v, &v, &ref); is_double(0., angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle(&v, &v1, &ref); is_double(acos(1./sqrt(2.)), angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle(&v, &v2, &ref); is_double(90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle(&v, &v3, &ref); is_double(-90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); } static void oriented_angle_points(void) { double angle; HklVector v = {{1., 0., 1.}}; HklVector v1 = {{1., 1., 1.}}; HklVector v2 = {{0., 1., 1.}}; HklVector v3 = {{0., -1., 1.}}; HklVector ref = {{0, 0, 1}}; angle = hkl_vector_oriented_angle_points(&v, &ref, &v, &ref); is_double(0., angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle_points(&v, &ref, &v1, &ref); is_double(acos(1./sqrt(2.)), angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle_points(&v, &ref, &v2, &ref); is_double(90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); angle = hkl_vector_oriented_angle_points(&v, &ref, &v3, &ref); is_double(-90 * HKL_DEGTORAD, angle, HKL_EPSILON, __func__); } static void rotated_around_vector(void) { HklVector x = {{1, 0, 0}}; HklVector z = {{0, 0, 1}}; HklVector y_ref = {{0, 1, 0}}; hkl_vector_rotated_around_vector(&x, &z, 90*HKL_DEGTORAD); ok(0 == hkl_vector_cmp(&y_ref, &x), __func__); } static void rotated_around_line(void) { HklVector x = {{1, 0, 0}}; HklVector c1 = {{0, 0, 0}}; HklVector c2 = {{0, 0, 1}}; HklVector x_ref = {{1, 0, 0}}; HklVector y_ref = {{0, 1, 0}}; hkl_vector_rotated_around_line(&x, 0*HKL_DEGTORAD, &c1, &c2); ok(0 == hkl_vector_cmp(&x_ref, &x), __func__); hkl_vector_rotated_around_line(&x, 90*HKL_DEGTORAD, &c1, &c2); ok(0 == hkl_vector_cmp(&y_ref, &x), __func__); } static void times_matrix(void) { HklMatrix *m = hkl_matrix_new_full(1.0, 3.0,-2.0, 10.0, 5.0, 5.0, -3.0, 2.0, 0.0); HklVector v = {{1.0, 2.0, 3.0}}; HklVector v_ref = {{12., 19., 8.}}; hkl_vector_times_matrix(&v, m); ok(0 == hkl_vector_cmp(&v_ref, &v), __func__); hkl_matrix_free(m); } static void project_on_plan(void) { HklVector v; HklVector v_ref = {{1, 0, 0}}; HklVector v1_ref = {{1, 0, 1}}; HklVector v2_ref = {{1, 0, -2}}; HklVector v1 = {{1, 0, 2}}; HklVector plan = {{0, 0, 1}}; HklVector point1 = {{0, 0, 1}}; HklVector point2 = {{0, 0, -2}}; v = v1; hkl_vector_project_on_plan(&v, &plan); ok(0 == hkl_vector_cmp(&v_ref, &v), __func__); v = v1; hkl_vector_project_on_plan_with_point(&v, &plan, &point1); ok(0 == hkl_vector_cmp(&v1_ref, &v), __func__); v = v1; hkl_vector_project_on_plan_with_point(&v, &plan, &point2); ok(0 == hkl_vector_cmp(&v2_ref, &v), __func__); } int main(void) { plan(32); init(); cmp(); is_opposite(); norm2(); normalize(); scalar_product(); vectorial_product(); angle(); oriented_angle(); oriented_angle_points(); rotated_around_vector(); rotated_around_line(); times_matrix(); project_on_plan(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-e4ch-t.c0000664000175000017500000002660114677222567016643 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include "hkl.h" #include #include #include "hkl/ccan/generator/generator.h" #include "hkl-geometry-private.h" #include "hkl-trajectory-private.h" static void getter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4ch(1.54, VALUES(0., 0., 0., 0.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* geometry -> pseudo */ res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., 1., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., -90., 60.)); res &= DIAG(check_pseudoaxes_v(engine, -1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 180., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., -1., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 45., 0., 135., 90.)); res &= DIAG(check_pseudoaxes_v(engine, 1., -1., 0.)); ok(res == TRUE, "getter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void degenerated(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const char **mode; const darray_string *modes; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4ch(1.54, VALUES(0., 0., 0., 0.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ static double values[] = {0, 0, 1}; const darray_string *parameters; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if (n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); values[0] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, values, ARRAY_SIZE(values), HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, values, 3)); } hkl_geometry_list_free(geometries); } } ok(res == TRUE, "degenerated"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void psi_getter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; double hkl[3]; Geometry gconf = E4ch(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "psi", NULL); /* the getter part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); hkl[0] = 1, hkl[1] = 0, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 0.)); /* here Q and _ref are colinear must FAIL */ hkl[0] = 0, hkl[1] = 1, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(!check_pseudoaxes_v(engine, 0.)); hkl[0] = -1, hkl[1] = 0, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 180. * HKL_DEGTORAD)); hkl[0] = 0, hkl[1] = 0, hkl[2] = -1; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 90. * HKL_DEGTORAD)); /* Q and _ref are colinear so must FAIL */ hkl[0] = 0, hkl[1] = -1, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(!check_pseudoaxes_v(engine, 0.)); ok(res == TRUE, "psi getter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void psi_setter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 0, 0}; Geometry gconf = E4ch(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "psi", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double psi; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(psi=-180 * HKL_DEGTORAD;psi<180 * HKL_DEGTORAD;psi += HKL_DEGTORAD){ HklGeometryList *geometries; geometries = hkl_engine_pseudo_axis_values_set(engine, &psi, 1, HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, psi)); } hkl_geometry_list_free(geometries); } } } ok(res == TRUE, "psi setter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void q(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4ch(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "q", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double q; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(q=-1.; q<1.; q += 0.1){ HklGeometryList *geometries; geometries = hkl_engine_pseudo_axis_values_set(engine, &q, 1, HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, &q, 1)); } hkl_geometry_list_free(geometries); } } } ok(res == TRUE, "q"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void hkl_psi_constant_horizontal(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 0, 1}; static double hkl2[] = {1, 1, 0}; Geometry gconf = E4ch(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); res &= DIAG(hkl_engine_current_mode_set(engine, "psi_constant", NULL)); /* the init part */ res &= DIAG(hkl_engine_parameters_values_set(engine, hkl2, ARRAY_SIZE(hkl2), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, ARRAY_SIZE(hkl))); } hkl_geometry_list_free(geometries); } ok(res == TRUE, "psi constant horizontal"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void petra3_p01(void) { int res = TRUE; HklGeometryList *solutions; struct Sample sample = { .name = "Sample", .lattice = Tetragonal(5.4, 11.9), .ux = -90 * HKL_DEGTORAD, .uy = 9 * HKL_DEGTORAD, .uz = -45 * HKL_DEGTORAD, }; Geometry gconfig = E4ch(4.3687, VALUES(0., 0., 6., 0.)); Mode mode = ModeHklE4CHConstantPhi(); /* move between each step */ struct Trajectory tconfig1 = TrajectoryHklFromTo(0, 0, 4, 1, 1, 4, 30, mode); solutions = Trajectory_solve(tconfig1, gconfig, sample, TRUE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); ok(res == TRUE, __func__); } int main(void) { plan(7); getter(); degenerated(); psi_getter(); psi_setter(); q(); hkl_psi_constant_horizontal(); petra3_p01(); return 0; } hkl-5.1.7/tests/hkl-quaternion-t.c0000664000175000017500000001046214677222567016021 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #include "hkl-vector-private.h" #include "hkl-quaternion-private.h" static void assignment(void) { HklQuaternion q = {{1, 0, 0, 0}}; HklQuaternion copy = q; is_double(1., copy.data[0], HKL_EPSILON, __func__); is_double(0., copy.data[1], HKL_EPSILON, __func__); is_double(0., copy.data[2], HKL_EPSILON, __func__); is_double(0., copy.data[3], HKL_EPSILON, __func__); } static void cmp(void) { HklQuaternion q_ref = {{1., 2., 3., 4.}}; HklQuaternion q = {{1., 2., 3., 4.}}; HklQuaternion q1 = {{1., 1., 3., 4.}}; ok(TRUE == hkl_quaternion_cmp(&q_ref, &q), __func__); ok(FALSE == hkl_quaternion_cmp(&q_ref, &q1), __func__); /* test the assignation */ q1 = q_ref; ok(TRUE == hkl_quaternion_cmp(&q_ref, &q1), __func__); } static void init_from_vector(void) { HklQuaternion q_ref = {{0, 1, -1, .5}}; HklVector v = {{1., -1., .5}}; HklQuaternion q; hkl_quaternion_init_from_vector(&q, &v); ok(TRUE == hkl_quaternion_cmp(&q_ref, &q), __func__); } static void init_from_angle_and_axe(void) { HklQuaternion q_ref1 = {{1, 0, 0, 0}}; HklQuaternion q_ref2 = {{sqrt(2.)/2., sqrt(2./9.), -sqrt(2./9.), sqrt(1./18.)}}; HklVector v_ref2 = {{1., -1., .5}}; HklQuaternion q; hkl_quaternion_init_from_angle_and_axe(&q, 0, &v_ref2); ok(TRUE == hkl_quaternion_cmp(&q_ref1, &q), __func__); hkl_quaternion_init_from_angle_and_axe(&q, 90. * HKL_DEGTORAD, &v_ref2); ok(TRUE == hkl_quaternion_cmp(&q_ref2, &q), __func__); } static void times_quaternion(void) { HklQuaternion q_ref = {{-28., 4., 6., 8.}}; HklQuaternion q = {{1., 2., 3., 4.}}; hkl_quaternion_times_quaternion(&q, &q); ok(TRUE == hkl_quaternion_cmp(&q_ref, &q), __func__); } static void norm2(void) { HklQuaternion q = {{1., 2., 3., 4.}}; is_double(sqrt(30.), hkl_quaternion_norm2(&q), HKL_EPSILON, __func__); } static void conjugate(void) { HklQuaternion q_ref = {{1., -2., -3., -4.}}; HklQuaternion q = {{1., 2., 3., 4.}}; hkl_quaternion_conjugate(&q); ok(TRUE == hkl_quaternion_cmp(&q_ref, &q), __func__); } static void to_matrix(void) { HklQuaternion q_ref = {{1./sqrt(2), 0, 0, 1./sqrt(2)}}; HklMatrix *m_ref = hkl_matrix_new_full(0,-1, 0, 1, 0, 0, 0, 0, 1); HklMatrix *m = hkl_matrix_new(); hkl_quaternion_to_matrix(&q_ref, m); is_matrix(m_ref, m, __func__); hkl_matrix_free(m_ref); hkl_matrix_free(m); } static void to_angle_and_axe(void) { HklVector v_ref = {{0 ,0, 1}}; HklVector v_null = {{0 ,0, 0}}; HklQuaternion q_I = {{1, 0, 0, 0}}; int i; double angle_ref; double angle; HklVector v; HklQuaternion q; /* test the q = (1, 0, 0, 0) solution axe == (0, 0, 0) and angle = 0. */ hkl_quaternion_to_angle_and_axe(&q_I, &angle, &v); ok(0 == hkl_vector_cmp(&v_null, &v), __func__); is_double(0., angle, HKL_EPSILON, __func__); /* test other cases */ for(i=-180; i<180; i++) { angle_ref = i * HKL_DEGTORAD; hkl_quaternion_init_from_angle_and_axe(&q, angle_ref, &v_ref); hkl_quaternion_to_angle_and_axe(&q, &angle, &v); if (!hkl_vector_cmp(&v_ref, &v)) is_double(angle_ref, angle, HKL_EPSILON, __func__); else if (hkl_vector_is_opposite(&v, &v_ref)) is_double(angle_ref, -angle, HKL_EPSILON, __func__); } } int main(void) { plan(375); assignment(); cmp(); init_from_vector(); init_from_angle_and_axe(); times_quaternion(); norm2(); conjugate(); to_matrix(); to_angle_and_axe(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-e6c-t.c0000664000175000017500000003640114677222567016474 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include "hkl-axis-private.h" /* temporary */ #define CHECK_AXIS_VALUE(geometry, axis, value) fabs((value) - hkl_parameter_value_get(hkl_geometry_axis_get(geometry, axis, NULL), HKL_UNIT_DEFAULT)) < HKL_EPSILON static int hkl_geometry_list_check_geometry_unit(const HklGeometryList *self, double mu, double omega, double chi, double phi, double gamma, double delta) { const HklGeometryListItem *item; int res = TRUE; HKL_GEOMETRY_LIST_FOREACH(item, self){ const HklGeometry *geometry; geometry = hkl_geometry_list_item_geometry_get(item); res = TRUE; res &= CHECK_AXIS_VALUE(geometry, "mu", mu * HKL_DEGTORAD); res &= CHECK_AXIS_VALUE(geometry, "omega", omega * HKL_DEGTORAD); res &= CHECK_AXIS_VALUE(geometry, "chi", chi * HKL_DEGTORAD); res &= CHECK_AXIS_VALUE(geometry, "phi", phi * HKL_DEGTORAD); res &= CHECK_AXIS_VALUE(geometry, "gamma", gamma * HKL_DEGTORAD); res &= CHECK_AXIS_VALUE(geometry, "delta", delta * HKL_DEGTORAD); if (res) break; } return res; } static void getter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E6c(1.54, VALUES(0., 30., 0., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* geometry -> pseudo */ res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 0., 30., 0., 0., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., 0., 1.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 0., 30., 0., 90., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 0., 30., 0., -90., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, -1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 0., 30., 0., 180., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., 0., -1.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 0., 45., 0., 135., 0., 90.)); res &= DIAG(check_pseudoaxes_v(engine, 1., 0., -1.)); ok(res == TRUE, "getter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void degenerated(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double hkl[] = {0, 0, 1}; Geometry gconf = E6c(1.54, VALUES(0., 30., 0., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes) { const darray_string *parameters; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if (n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if (geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, 3)); } hkl_geometry_list_free(geometries); } } ok(res == TRUE, "degenerated"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void q2(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const char **mode; const darray_string *modes; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E6c(1.54, VALUES(0., 30., 0., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "q2", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double q, alpha; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(q=0.1; q<1.; q += 0.1) for(alpha = -M_PI; alpha. * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include "hkl-source-private.h" static void new_copy(void) { HklSource s, c; hkl_source_init(&s, 1.54, 1, 0, 0); c = s; is_double(c.wave_length, s.wave_length, HKL_EPSILON, __func__); ok(FALSE == hkl_vector_cmp(&c.direction, &s.direction), __func__); } static void init(void) { HklSource s; hkl_source_init(&s, 1, 1, 0, 0); is_double(1., s.wave_length, HKL_EPSILON, __func__); is_double(1., s.direction.data[0], HKL_EPSILON, __func__); is_double(0., s.direction.data[1], HKL_EPSILON, __func__); is_double(0., s.direction.data[2], HKL_EPSILON, __func__); } static void cmp(void) { HklSource ref, s1, s2; hkl_source_init(&ref, 1.54, 1, 0, 0); hkl_source_init(&s1, 1.54, 1, 0, 0); hkl_source_init(&s2, 1, 1, 0, 0); ok(TRUE == hkl_source_cmp(&ref, &s1), __func__); ok(FALSE == hkl_source_cmp(&ref, &s2), __func__); } static void compute_ki(void) { HklSource s; HklVector ki_ref = {{HKL_TAU / 1.54, 0, 0}}; HklVector ki; hkl_source_init(&s, 1.54, 1, 0, 0); hkl_source_compute_ki(&s, &ki); ok(0 == hkl_vector_cmp(&ki_ref, &ki), __func__); } static void get_wavelength(void) { HklSource s; hkl_source_init(&s, 1, 1, 0, 0); is_double(1., hkl_source_get_wavelength(&s), HKL_EPSILON, __func__); } int main(void) { plan(10); new_copy(); init(); cmp(); compute_ki(); get_wavelength(); return 0; } hkl-5.1.7/tests/runtests.c0000664000175000017500000014150714677222567014513 0ustar00piccapicca/* * Run a set of tests, reporting results. * * Test suite driver that runs a set of tests implementing a subset of the * Test Anything Protocol (TAP) and reports the results. * * Any bug reports, bug fixes, and improvements are very much welcome and * should be sent to the e-mail address below. This program is part of C TAP * Harness . * * Copyright 2000-2001, 2004, 2006-2019, 2022 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * SPDX-License-Identifier: MIT */ /* * Usage: * * runtests [-hv] [-b ] [-s ] -l * runtests [-hv] [-b ] [-s ] [ ...] * runtests -o [-h] [-b ] [-s ] * * In the first case, expects a list of executables located in the given file, * one line per executable, possibly followed by a space-separated list of * options. For each one, runs it as part of a test suite, reporting results. * In the second case, use the same infrastructure, but run only the tests * listed on the command line. * * Test output should start with a line containing the number of tests * (numbered from 1 to this number), optionally preceded by "1..", although * that line may be given anywhere in the output. Each additional line should * be in the following format: * * ok * not ok * ok # skip * not ok # todo * * where is the number of the test. An optional comment is permitted * after the number if preceded by whitespace. ok indicates success, not ok * indicates failure. "# skip" and "# todo" are a special cases of a comment, * and must start with exactly that formatting. They indicate the test was * skipped for some reason (maybe because it doesn't apply to this platform) * or is testing something known to currently fail. The text following either * "# skip" or "# todo" and whitespace is the reason. * * As a special case, the first line of the output may be in the form: * * 1..0 # skip some reason * * which indicates that this entire test case should be skipped and gives a * reason. * * Any other lines are ignored, although for compliance with the TAP protocol * all lines other than the ones in the above format should be sent to * standard error rather than standard output and start with #. * * This is a subset of TAP as documented in Test::Harness::TAP or * TAP::Parser::Grammar, which comes with Perl. * * If the -o option is given, instead run a single test and display all of its * output. This is intended for use with failing tests so that the person * running the test suite can get more details about what failed. * * If built with the C preprocessor symbols C_TAP_SOURCE and C_TAP_BUILD * defined, C TAP Harness will export those values in the environment so that * tests can find the source and build directory and will look for tests under * both directories. These paths can also be set with the -b and -s * command-line options, which will override anything set at build time. * * If the -v option is given, or the C_TAP_VERBOSE environment variable is set, * display the full output of each test as it runs rather than showing a * summary of the results of each test. */ /* Required for fdopen(), getopt(), and putenv(). */ #if defined(__STRICT_ANSI__) || defined(PEDANTIC) # ifndef _XOPEN_SOURCE # define _XOPEN_SOURCE 500 # endif #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* sys/time.h must be included before sys/resource.h on some platforms. */ #include /* AIX 6.1 (and possibly later) doesn't have WCOREDUMP. */ #ifndef WCOREDUMP # define WCOREDUMP(status) ((unsigned) (status) &0x80) #endif /* * POSIX requires that these be defined in , but they're not always * available. If one of them has been defined, all the rest almost certainly * have. */ #ifndef STDIN_FILENO # define STDIN_FILENO 0 # define STDOUT_FILENO 1 # define STDERR_FILENO 2 #endif /* * Used for iterating through arrays. Returns the number of elements in the * array (useful for a < upper bound in a for loop). */ #define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) /* * The source and build versions of the tests directory. This is used to set * the C_TAP_SOURCE and C_TAP_BUILD environment variables (and the SOURCE and * BUILD environment variables set for backward compatibility) and find test * programs, if set. Normally, this should be set as part of the build * process to the test subdirectories of $(abs_top_srcdir) and * $(abs_top_builddir) respectively. */ #ifndef C_TAP_SOURCE # define C_TAP_SOURCE NULL #endif #ifndef C_TAP_BUILD # define C_TAP_BUILD NULL #endif /* Test status codes. */ enum test_status { TEST_FAIL, TEST_PASS, TEST_SKIP, TEST_INVALID }; /* Really, just a boolean, but this is more self-documenting. */ enum test_verbose { CONCISE = 0, VERBOSE = 1 }; /* Indicates the state of our plan. */ enum plan_status { PLAN_INIT, /* Nothing seen yet. */ PLAN_FIRST, /* Plan seen before any tests. */ PLAN_PENDING, /* Test seen and no plan yet. */ PLAN_FINAL /* Plan seen after some tests. */ }; /* Error exit statuses for test processes. */ #define CHILDERR_DUP 100 /* Couldn't redirect stderr or stdout. */ #define CHILDERR_EXEC 101 /* Couldn't exec child process. */ #define CHILDERR_STDIN 102 /* Couldn't open stdin file. */ #define CHILDERR_STDERR 103 /* Couldn't open stderr file. */ /* Structure to hold data for a set of tests. */ struct testset { char *file; /* The file name of the test. */ char **command; /* The argv vector to run the command. */ enum plan_status plan; /* The status of our plan. */ unsigned long count; /* Expected count of tests. */ unsigned long current; /* The last seen test number. */ unsigned int length; /* The length of the last status message. */ unsigned long passed; /* Count of passing tests. */ unsigned long failed; /* Count of failing lists. */ unsigned long skipped; /* Count of skipped tests (passed). */ unsigned long allocated; /* The size of the results table. */ enum test_status *results; /* Table of results by test number. */ unsigned int aborted; /* Whether the set was aborted. */ unsigned int reported; /* Whether the results were reported. */ int status; /* The exit status of the test. */ unsigned int all_skipped; /* Whether all tests were skipped. */ char *reason; /* Why all tests were skipped. */ }; /* Structure to hold a linked list of test sets. */ struct testlist { struct testset *ts; struct testlist *next; }; /* * Usage message. Should be used as a printf format with four arguments: the * path to runtests, given three times, and the usage_description. This is * split into variables to satisfy the pedantic ISO C90 limit on strings. */ static const char usage_message[] = "\ Usage: %s [-hv] [-b ] [-s ] ...\n\ %s [-hv] [-b ] [-s ] -l \n\ %s -o [-h] [-b ] [-s ] \n\ \n\ Options:\n\ -b Set the build directory to \n\ %s"; static const char usage_extra[] = "\ -l Take the list of tests to run from \n\ -o Run a single test rather than a list of tests\n\ -s Set the source directory to \n\ -v Show the full output of each test\n\ \n\ runtests normally runs each test listed on the command line. With the -l\n\ option, it instead runs every test listed in a file. With the -o option,\n\ it instead runs a single test and shows its complete output.\n"; /* * Header used for test output. %s is replaced by the file name of the list * of tests. */ static const char banner[] = "\n\ Running all tests listed in %s. If any tests fail, run the failing\n\ test program with runtests -o to see more details.\n\n"; /* Header for reports of failed tests. */ static const char header[] = "\n\ Failed Set Fail/Total (%) Skip Stat Failing Tests\n\ -------------------------- -------------- ---- ---- ------------------------"; /* Include the file name and line number in malloc failures. */ #define xcalloc(n, type) \ ((type *) x_calloc((n), sizeof(type), __FILE__, __LINE__)) #define xmalloc(size) ((char *) x_malloc((size), __FILE__, __LINE__)) #define xstrdup(p) x_strdup((p), __FILE__, __LINE__) #define xstrndup(p, size) x_strndup((p), (size), __FILE__, __LINE__) #define xreallocarray(p, n, type) \ ((type *) x_reallocarray((p), (n), sizeof(type), __FILE__, __LINE__)) /* * __attribute__ is available in gcc 2.5 and later, but only with gcc 2.7 * could you use the __format__ form of the attributes, which is what we use * (to avoid confusion with other macros). */ #ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) # define __attribute__(spec) /* empty */ # endif #endif /* * We use __alloc_size__, but it was only available in fairly recent versions * of GCC. Suppress warnings about the unknown attribute if GCC is too old. * We know that we're GCC at this point, so we can use the GCC variadic macro * extension, which will still work with versions of GCC too old to have C99 * variadic macro support. */ #if !defined(__attribute__) && !defined(__alloc_size__) # if defined(__GNUC__) && !defined(__clang__) # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) # define __alloc_size__(spec, args...) /* empty */ # endif # endif #endif /* * Suppress the argument to __malloc__ in Clang (not supported in at least * version 13) and GCC versions prior to 11. */ #if !defined(__attribute__) && !defined(__malloc__) # if defined(__clang__) || __GNUC__ < 11 # define __malloc__(dalloc) __malloc__ # endif #endif /* * LLVM and Clang pretend to be GCC but don't support all of the __attribute__ * settings that GCC does. For them, suppress warnings about unknown * attributes on declarations. This unfortunately will affect the entire * compilation context, but there's no push and pop available. */ #if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) # pragma GCC diagnostic ignored "-Wattributes" #endif /* Declare internal functions that benefit from compiler attributes. */ static void die(const char *, ...) __attribute__((__nonnull__, __noreturn__, __format__(printf, 1, 2))); static void sysdie(const char *, ...) __attribute__((__nonnull__, __noreturn__, __format__(printf, 1, 2))); static void *x_calloc(size_t, size_t, const char *, int) __attribute__((__alloc_size__(1, 2), __malloc__(free), __nonnull__)); static void *x_malloc(size_t, const char *, int) __attribute__((__alloc_size__(1), __malloc__(free), __nonnull__)); static void *x_reallocarray(void *, size_t, size_t, const char *, int) __attribute__((__alloc_size__(2, 3), __malloc__(free), __nonnull__(4))); static char *x_strdup(const char *, const char *, int) __attribute__((__malloc__(free), __nonnull__)); static char *x_strndup(const char *, size_t, const char *, int) __attribute__((__malloc__(free), __nonnull__)); /* * Report a fatal error and exit. */ static void die(const char *format, ...) { va_list args; fflush(stdout); fprintf(stderr, "runtests: "); va_start(args, format); vfprintf(stderr, format, args); va_end(args); fprintf(stderr, "\n"); exit(1); } /* * Report a fatal error, including the results of strerror, and exit. */ static void sysdie(const char *format, ...) { int oerrno; va_list args; oerrno = errno; fflush(stdout); fprintf(stderr, "runtests: "); va_start(args, format); vfprintf(stderr, format, args); va_end(args); fprintf(stderr, ": %s\n", strerror(oerrno)); exit(1); } /* * Allocate zeroed memory, reporting a fatal error and exiting on failure. */ static void * x_calloc(size_t n, size_t size, const char *file, int line) { void *p; n = (n > 0) ? n : 1; size = (size > 0) ? size : 1; p = calloc(n, size); if (p == NULL) sysdie("failed to calloc %lu bytes at %s line %d", (unsigned long) size, file, line); return p; } /* * Allocate memory, reporting a fatal error and exiting on failure. */ static void * x_malloc(size_t size, const char *file, int line) { void *p; p = malloc(size); if (p == NULL) sysdie("failed to malloc %lu bytes at %s line %d", (unsigned long) size, file, line); return p; } /* * Reallocate memory, reporting a fatal error and exiting on failure. * * We should technically use SIZE_MAX here for the overflow check, but * SIZE_MAX is C99 and we're only assuming C89 + SUSv3, which does not * guarantee that it exists. They do guarantee that UINT_MAX exists, and we * can assume that UINT_MAX <= SIZE_MAX. And we should not be allocating * anything anywhere near that large. * * (In theory, C89 and C99 permit size_t to be smaller than unsigned int, but * I disbelieve in the existence of such systems and they will have to cope * without overflow checks.) */ static void * x_reallocarray(void *p, size_t n, size_t size, const char *file, int line) { n = (n > 0) ? n : 1; size = (size > 0) ? size : 1; if (UINT_MAX / n <= size) sysdie("realloc too large at %s line %d", file, line); p = realloc(p, n * size); if (p == NULL) sysdie("failed to realloc %lu bytes at %s line %d", (unsigned long) (n * size), file, line); return p; } /* * Copy a string, reporting a fatal error and exiting on failure. */ static char * x_strdup(const char *s, const char *file, int line) { char *p; size_t len; len = strlen(s) + 1; p = (char *) malloc(len); if (p == NULL) sysdie("failed to strdup %lu bytes at %s line %d", (unsigned long) len, file, line); memcpy(p, s, len); return p; } /* * Copy the first n characters of a string, reporting a fatal error and * existing on failure. * * Avoid using the system strndup function since it may not exist (on Mac OS * X, for example), and there's no need to introduce another portability * requirement. */ char * x_strndup(const char *s, size_t size, const char *file, int line) { const char *p; size_t len; char *copy; /* Don't assume that the source string is nul-terminated. */ for (p = s; (size_t) (p - s) < size && *p != '\0'; p++) ; len = (size_t) (p - s); copy = (char *) malloc(len + 1); if (copy == NULL) sysdie("failed to strndup %lu bytes at %s line %d", (unsigned long) len, file, line); memcpy(copy, s, len); copy[len] = '\0'; return copy; } /* * Form a new string by concatenating multiple strings. The arguments must be * terminated by (const char *) 0. * * This function only exists because we can't assume asprintf. We can't * simulate asprintf with snprintf because we're only assuming SUSv3, which * does not require that snprintf with a NULL buffer return the required * length. When those constraints are relaxed, this should be ripped out and * replaced with asprintf or a more trivial replacement with snprintf. */ static char * concat(const char *first, ...) { va_list args; char *result; const char *string; size_t offset; size_t length = 0; /* * Find the total memory required. Ensure we don't overflow length. We * aren't guaranteed to have SIZE_MAX, so use UINT_MAX as an acceptable * substitute (see the x_nrealloc comments). */ va_start(args, first); for (string = first; string != NULL; string = va_arg(args, const char *)) { if (length >= UINT_MAX - strlen(string)) { errno = EINVAL; sysdie("strings too long in concat"); } length += strlen(string); } va_end(args); length++; /* Create the string. */ result = xmalloc(length); va_start(args, first); offset = 0; for (string = first; string != NULL; string = va_arg(args, const char *)) { memcpy(result + offset, string, strlen(string)); offset += strlen(string); } va_end(args); result[offset] = '\0'; return result; } /* * Given a struct timeval, return the number of seconds it represents as a * double. Use difftime() to convert a time_t to a double. */ static double tv_seconds(const struct timeval *tv) { return difftime(tv->tv_sec, 0) + (double) tv->tv_usec * 1e-6; } /* * Given two struct timevals, return the difference in seconds. */ static double tv_diff(const struct timeval *tv1, const struct timeval *tv0) { return tv_seconds(tv1) - tv_seconds(tv0); } /* * Given two struct timevals, return the sum in seconds as a double. */ static double tv_sum(const struct timeval *tv1, const struct timeval *tv2) { return tv_seconds(tv1) + tv_seconds(tv2); } /* * Given a pointer to a string, skip any leading whitespace and return a * pointer to the first non-whitespace character. */ static const char * skip_whitespace(const char *p) { while (isspace((unsigned char) (*p))) p++; return p; } /* * Given a pointer to a string, skip any non-whitespace characters and return * a pointer to the first whitespace character, or to the end of the string. */ static const char * skip_non_whitespace(const char *p) { while (*p != '\0' && !isspace((unsigned char) (*p))) p++; return p; } /* * Start a program, connecting its stdout to a pipe on our end and its stderr * to /dev/null, and storing the file descriptor to read from in the two * argument. Returns the PID of the new process. Errors are fatal. */ static pid_t test_start(char *const *command, int *fd) { int fds[2], infd, errfd; pid_t child; /* Create a pipe used to capture the output from the test program. */ if (pipe(fds) == -1) { puts("ABORTED"); fflush(stdout); sysdie("can't create pipe"); } /* Fork a child process, massage the file descriptors, and exec. */ child = fork(); switch (child) { case -1: puts("ABORTED"); fflush(stdout); sysdie("can't fork"); /* In the child. Set up our standard output. */ case 0: close(fds[0]); close(STDOUT_FILENO); if (dup2(fds[1], STDOUT_FILENO) < 0) _exit(CHILDERR_DUP); close(fds[1]); /* Point standard input at /dev/null. */ close(STDIN_FILENO); infd = open("/dev/null", O_RDONLY); if (infd < 0) _exit(CHILDERR_STDIN); if (infd != STDIN_FILENO) { if (dup2(infd, STDIN_FILENO) < 0) _exit(CHILDERR_DUP); close(infd); } /* Point standard error at /dev/null. */ close(STDERR_FILENO); errfd = open("/dev/null", O_WRONLY); if (errfd < 0) _exit(CHILDERR_STDERR); if (errfd != STDERR_FILENO) { if (dup2(errfd, STDERR_FILENO) < 0) _exit(CHILDERR_DUP); close(errfd); } /* Now, exec our process. */ if (execv(command[0], command) == -1) _exit(CHILDERR_EXEC); break; /* In parent. Close the extra file descriptor. */ default: close(fds[1]); break; } *fd = fds[0]; return child; } /* * Back up over the output saying what test we were executing. */ static void test_backspace(struct testset *ts) { unsigned int i; if (!isatty(STDOUT_FILENO)) return; for (i = 0; i < ts->length; i++) putchar('\b'); for (i = 0; i < ts->length; i++) putchar(' '); for (i = 0; i < ts->length; i++) putchar('\b'); ts->length = 0; } /* * Allocate or resize the array of test results to be large enough to contain * the test number in. */ static void resize_results(struct testset *ts, unsigned long n) { unsigned long i; size_t s; /* If there's already enough space, return quickly. */ if (n <= ts->allocated) return; /* * If no space has been allocated, do the initial allocation. Otherwise, * resize. Start with 32 test cases and then add 1024 with each resize to * try to reduce the number of reallocations. */ if (ts->allocated == 0) { s = (n > 32) ? n : 32; ts->results = xcalloc(s, enum test_status); } else { s = (n > ts->allocated + 1024) ? n : ts->allocated + 1024; ts->results = xreallocarray(ts->results, s, enum test_status); } /* Set the results for the newly-allocated test array. */ for (i = ts->allocated; i < s; i++) ts->results[i] = TEST_INVALID; ts->allocated = s; } /* * Report an invalid test number and set the appropriate flags. Pulled into a * separate function since we do this in several places. */ static void invalid_test_number(struct testset *ts, long n, enum test_verbose verbose) { if (!verbose) test_backspace(ts); printf("ABORTED (invalid test number %ld)\n", n); ts->aborted = 1; ts->reported = 1; } /* * Read the plan line of test output, which should contain the range of test * numbers. We may initialize the testset structure here if we haven't yet * seen a test. Return true if initialization succeeded and the test should * continue, false otherwise. */ static int test_plan(const char *line, struct testset *ts, enum test_verbose verbose) { long n; /* * Accept a plan without the leading 1.. for compatibility with older * versions of runtests. This will only be allowed if we've not yet seen * a test result. */ line = skip_whitespace(line); if (strncmp(line, "1..", 3) == 0) line += 3; /* * Get the count and check it for validity. * * If we have something of the form "1..0 # skip foo", the whole file was * skipped; record that. If we do skip the whole file, zero out all of * our statistics, since they're no longer relevant. * * strtol is called with a second argument to advance the line pointer * past the count to make it simpler to detect the # skip case. */ n = strtol(line, (char **) &line, 10); if (n == 0) { line = skip_whitespace(line); if (*line == '#') { line = skip_whitespace(line + 1); if (strncasecmp(line, "skip", 4) == 0) { line = skip_whitespace(line + 4); if (*line != '\0') { ts->reason = xstrdup(line); ts->reason[strlen(ts->reason) - 1] = '\0'; } ts->all_skipped = 1; ts->aborted = 1; ts->count = 0; ts->passed = 0; ts->skipped = 0; ts->failed = 0; return 0; } } } if (n <= 0) { puts("ABORTED (invalid test count)"); ts->aborted = 1; ts->reported = 1; return 0; } /* * If we are doing lazy planning, check the plan against the largest test * number that we saw and fail now if we saw a check outside the plan * range. */ if (ts->plan == PLAN_PENDING && (unsigned long) n < ts->count) { invalid_test_number(ts, (long) ts->count, verbose); return 0; } /* * Otherwise, allocated or resize the results if needed and update count, * and then record that we've seen a plan. */ resize_results(ts, (unsigned long) n); ts->count = (unsigned long) n; if (ts->plan == PLAN_INIT) ts->plan = PLAN_FIRST; else if (ts->plan == PLAN_PENDING) ts->plan = PLAN_FINAL; return 1; } /* * Given a single line of output from a test, parse it and return the success * status of that test. Anything printed to stdout not matching the form * /^(not )?ok \d+/ is ignored. Sets ts->current to the test number that just * reported status. */ static void test_checkline(const char *line, struct testset *ts, enum test_verbose verbose) { enum test_status status = TEST_PASS; const char *bail; char *end; long number; unsigned long current; int outlen; /* Before anything, check for a test abort. */ bail = strstr(line, "Bail out!"); if (bail != NULL) { bail = skip_whitespace(bail + strlen("Bail out!")); if (*bail != '\0') { size_t length; length = strlen(bail); if (bail[length - 1] == '\n') length--; if (!verbose) test_backspace(ts); printf("ABORTED (%.*s)\n", (int) length, bail); ts->reported = 1; } ts->aborted = 1; return; } /* * If the given line isn't newline-terminated, it was too big for an * fgets(), which means ignore it. */ if (line[strlen(line) - 1] != '\n') return; /* If the line begins with a hash mark, ignore it. */ if (line[0] == '#') return; /* If we haven't yet seen a plan, look for one. */ if (ts->plan == PLAN_INIT && isdigit((unsigned char) (*line))) { if (!test_plan(line, ts, verbose)) return; } else if (strncmp(line, "1..", 3) == 0) { if (ts->plan == PLAN_PENDING) { if (!test_plan(line, ts, verbose)) return; } else { if (!verbose) test_backspace(ts); puts("ABORTED (multiple plans)"); ts->aborted = 1; ts->reported = 1; return; } } /* Parse the line, ignoring something we can't parse. */ if (strncmp(line, "not ", 4) == 0) { status = TEST_FAIL; line += 4; } if (strncmp(line, "ok", 2) != 0) return; line = skip_whitespace(line + 2); errno = 0; number = strtol(line, &end, 10); if (errno != 0 || end == line) current = ts->current + 1; else if (number <= 0) { invalid_test_number(ts, number, verbose); return; } else current = (unsigned long) number; if (current > ts->count && ts->plan == PLAN_FIRST) { invalid_test_number(ts, (long) current, verbose); return; } /* We have a valid test result. Tweak the results array if needed. */ if (ts->plan == PLAN_INIT || ts->plan == PLAN_PENDING) { ts->plan = PLAN_PENDING; resize_results(ts, current); if (current > ts->count) ts->count = current; } /* * Handle directives. We should probably do something more interesting * with unexpected passes of todo tests. */ while (isdigit((unsigned char) (*line))) line++; line = skip_whitespace(line); if (*line == '#') { line = skip_whitespace(line + 1); if (strncasecmp(line, "skip", 4) == 0) status = TEST_SKIP; if (strncasecmp(line, "todo", 4) == 0) status = (status == TEST_FAIL) ? TEST_SKIP : TEST_FAIL; } /* Make sure that the test number is in range and not a duplicate. */ if (ts->results[current - 1] != TEST_INVALID) { if (!verbose) test_backspace(ts); printf("ABORTED (duplicate test number %lu)\n", current); ts->aborted = 1; ts->reported = 1; return; } /* Good results. Increment our various counters. */ switch (status) { case TEST_PASS: ts->passed++; break; case TEST_FAIL: ts->failed++; break; case TEST_SKIP: ts->skipped++; break; case TEST_INVALID: break; } ts->current = current; ts->results[current - 1] = status; if (!verbose && isatty(STDOUT_FILENO)) { test_backspace(ts); if (ts->plan == PLAN_PENDING) outlen = printf("%lu/?", current); else outlen = printf("%lu/%lu", current, ts->count); ts->length = (outlen >= 0) ? (unsigned int) outlen : 0; fflush(stdout); } } /* * Print out a range of test numbers, returning the number of characters it * took up. Takes the first number, the last number, the number of characters * already printed on the line, and the limit of number of characters the line * can hold. Add a comma and a space before the range if chars indicates that * something has already been printed on the line, and print ... instead if * chars plus the space needed would go over the limit (use a limit of 0 to * disable this). */ static unsigned int test_print_range(unsigned long first, unsigned long last, unsigned long chars, unsigned int limit) { unsigned int needed = 0; unsigned long n; for (n = first; n > 0; n /= 10) needed++; if (last > first) { for (n = last; n > 0; n /= 10) needed++; needed++; } if (chars > 0) needed += 2; if (limit > 0 && chars + needed > limit) { needed = 0; if (chars <= limit) { if (chars > 0) { printf(", "); needed += 2; } printf("..."); needed += 3; } } else { if (chars > 0) printf(", "); if (last > first) printf("%lu-", first); printf("%lu", last); } return needed; } /* * Summarize a single test set. The second argument is 0 if the set exited * cleanly, a positive integer representing the exit status if it exited * with a non-zero status, and a negative integer representing the signal * that terminated it if it was killed by a signal. */ static void test_summarize(struct testset *ts, int status) { unsigned long i; unsigned long missing = 0; unsigned long failed = 0; unsigned long first = 0; unsigned long last = 0; if (ts->aborted) { fputs("ABORTED", stdout); if (ts->count > 0) printf(" (passed %lu/%lu)", ts->passed, ts->count - ts->skipped); } else { for (i = 0; i < ts->count; i++) { if (ts->results[i] == TEST_INVALID) { if (missing == 0) fputs("MISSED ", stdout); if (first && i == last) last = i + 1; else { if (first) test_print_range(first, last, missing - 1, 0); missing++; first = i + 1; last = i + 1; } } } if (first) test_print_range(first, last, missing - 1, 0); first = 0; last = 0; for (i = 0; i < ts->count; i++) { if (ts->results[i] == TEST_FAIL) { if (missing && !failed) fputs("; ", stdout); if (failed == 0) fputs("FAILED ", stdout); if (first && i == last) last = i + 1; else { if (first) test_print_range(first, last, failed - 1, 0); failed++; first = i + 1; last = i + 1; } } } if (first) test_print_range(first, last, failed - 1, 0); if (!missing && !failed) { fputs(!status ? "ok" : "dubious", stdout); if (ts->skipped > 0) { if (ts->skipped == 1) printf(" (skipped %lu test)", ts->skipped); else printf(" (skipped %lu tests)", ts->skipped); } } } if (status > 0) printf(" (exit status %d)", status); else if (status < 0) printf(" (killed by signal %d%s)", -status, WCOREDUMP(ts->status) ? ", core dumped" : ""); putchar('\n'); } /* * Given a test set, analyze the results, classify the exit status, handle a * few special error messages, and then pass it along to test_summarize() for * the regular output. Returns true if the test set ran successfully and all * tests passed or were skipped, false otherwise. */ static int test_analyze(struct testset *ts) { if (ts->reported) return 0; if (ts->all_skipped) { if (ts->reason == NULL) puts("skipped"); else printf("skipped (%s)\n", ts->reason); return 1; } else if (WIFEXITED(ts->status) && WEXITSTATUS(ts->status) != 0) { switch (WEXITSTATUS(ts->status)) { case CHILDERR_DUP: if (!ts->reported) puts("ABORTED (can't dup file descriptors)"); break; case CHILDERR_EXEC: if (!ts->reported) puts("ABORTED (execution failed -- not found?)"); break; case CHILDERR_STDIN: case CHILDERR_STDERR: if (!ts->reported) puts("ABORTED (can't open /dev/null)"); break; default: test_summarize(ts, WEXITSTATUS(ts->status)); break; } return 0; } else if (WIFSIGNALED(ts->status)) { test_summarize(ts, -WTERMSIG(ts->status)); return 0; } else if (ts->plan != PLAN_FIRST && ts->plan != PLAN_FINAL) { puts("ABORTED (no valid test plan)"); ts->aborted = 1; return 0; } else { test_summarize(ts, 0); return (ts->failed == 0); } } /* * Runs a single test set, accumulating and then reporting the results. * Returns true if the test set was successfully run and all tests passed, * false otherwise. */ static int test_run(struct testset *ts, enum test_verbose verbose) { pid_t testpid, child; int outfd, status; unsigned long i; FILE *output; char buffer[BUFSIZ]; /* Run the test program. */ testpid = test_start(ts->command, &outfd); output = fdopen(outfd, "r"); if (!output) { puts("ABORTED"); fflush(stdout); sysdie("fdopen failed"); } /* * Pass each line of output to test_checkline(), and print the line if * verbosity is requested. */ while (!ts->aborted && fgets(buffer, sizeof(buffer), output)) { if (verbose) printf("%s", buffer); test_checkline(buffer, ts, verbose); } if (ferror(output) || ts->plan == PLAN_INIT) ts->aborted = 1; if (!verbose) test_backspace(ts); /* * Consume the rest of the test output, close the output descriptor, * retrieve the exit status, and pass that information to test_analyze() * for eventual output. */ while (fgets(buffer, sizeof(buffer), output)) if (verbose) printf("%s", buffer); fclose(output); child = waitpid(testpid, &ts->status, 0); if (child == (pid_t) -1) { if (!ts->reported) { puts("ABORTED"); fflush(stdout); } sysdie("waitpid for %u failed", (unsigned int) testpid); } if (ts->all_skipped) ts->aborted = 0; status = test_analyze(ts); /* Convert missing tests to failed tests. */ for (i = 0; i < ts->count; i++) { if (ts->results[i] == TEST_INVALID) { ts->failed++; ts->results[i] = TEST_FAIL; status = 0; } } return status; } /* Summarize a list of test failures. */ static void test_fail_summary(const struct testlist *fails) { struct testset *ts; unsigned int chars; unsigned long i, first, last, total; double failed; puts(header); /* Failed Set Fail/Total (%) Skip Stat Failing (25) -------------------------- -------------- ---- ---- -------------- */ for (; fails; fails = fails->next) { ts = fails->ts; total = ts->count - ts->skipped; failed = (double) ts->failed; printf("%-26.26s %4lu/%-4lu %3.0f%% %4lu ", ts->file, ts->failed, total, total ? (failed * 100.0) / (double) total : 0, ts->skipped); if (WIFEXITED(ts->status)) printf("%4d ", WEXITSTATUS(ts->status)); else printf(" -- "); if (ts->aborted) { puts("aborted"); continue; } chars = 0; first = 0; last = 0; for (i = 0; i < ts->count; i++) { if (ts->results[i] == TEST_FAIL) { if (first != 0 && i == last) last = i + 1; else { if (first != 0) chars += test_print_range(first, last, chars, 19); first = i + 1; last = i + 1; } } } if (first != 0) test_print_range(first, last, chars, 19); putchar('\n'); } } /* * Check whether a given file path is a valid test. Currently, this checks * whether it is executable and is a regular file. Returns true or false. */ static int is_valid_test(const char *path) { struct stat st; if (access(path, X_OK) < 0) return 0; if (stat(path, &st) < 0) return 0; if (!S_ISREG(st.st_mode)) return 0; return 1; } /* * Given the name of a test, a pointer to the testset struct, and the source * and build directories, find the test. We try first relative to the current * directory, then in the build directory (if not NULL), then in the source * directory. In each of those directories, we first try a "-t" extension and * then a ".t" extension. When we find an executable program, we return the * path to that program. If none of those paths are executable, just fill in * the name of the test as is. * * The caller is responsible for freeing the path member of the testset * struct. */ static char * find_test(const char *name, const char *source, const char *build) { char *path = NULL; const char *bases[3], *suffix, *base; unsigned int i, j; const char *suffixes[3] = {"-t", ".t", ""}; /* Possible base directories. */ bases[0] = "."; bases[1] = build; bases[2] = source; /* Try each suffix with each base. */ for (i = 0; i < ARRAY_SIZE(suffixes); i++) { suffix = suffixes[i]; for (j = 0; j < ARRAY_SIZE(bases); j++) { base = bases[j]; if (base == NULL) continue; path = concat(base, "/", name, suffix, (const char *) 0); if (is_valid_test(path)) return path; free(path); path = NULL; } } if (path == NULL) path = xstrdup(name); return path; } /* * Parse a single line of a test list and store the test name and command to * execute it in the given testset struct. * * Normally, each line is just the name of the test, which is located in the * test directory and turned into a command to run. However, each line may * have whitespace-separated options, which change the command that's run. * Current supported options are: * * valgrind * Run the test under valgrind if C_TAP_VALGRIND is set. The contents * of that environment variable are taken as the valgrind command (with * options) to run. The command is parsed with a simple split on * whitespace and no quoting is supported. * * libtool * If running under valgrind, use libtool to invoke valgrind. This avoids * running valgrind on the wrapper shell script generated by libtool. If * set, C_TAP_LIBTOOL must be set to the full path to the libtool program * to use to run valgrind and thus the test. Ignored if the test isn't * being run under valgrind. */ static void parse_test_list_line(const char *line, struct testset *ts, const char *source, const char *build) { const char *p, *end, *option, *libtool; const char *valgrind = NULL; unsigned int use_libtool = 0; unsigned int use_valgrind = 0; size_t len, i; /* Determine the name of the test. */ p = skip_non_whitespace(line); ts->file = xstrndup(line, p - line); /* Check if any test options are set. */ p = skip_whitespace(p); while (*p != '\0') { end = skip_non_whitespace(p); if (strncmp(p, "libtool", end - p) == 0) { use_libtool = 1; } else if (strncmp(p, "valgrind", end - p) == 0) { valgrind = getenv("C_TAP_VALGRIND"); use_valgrind = (valgrind != NULL); } else { option = xstrndup(p, end - p); die("unknown test list option %s", option); } p = skip_whitespace(end); } /* Construct the argv to run the test. First, find the length. */ len = 1; if (use_valgrind && valgrind != NULL) { p = skip_whitespace(valgrind); while (*p != '\0') { len++; p = skip_whitespace(skip_non_whitespace(p)); } if (use_libtool) len += 2; } /* Now, build the command. */ ts->command = xcalloc(len + 1, char *); i = 0; if (use_valgrind && valgrind != NULL) { if (use_libtool) { libtool = getenv("C_TAP_LIBTOOL"); if (libtool == NULL) die("valgrind with libtool requested, but C_TAP_LIBTOOL is not" " set"); ts->command[i++] = xstrdup(libtool); ts->command[i++] = xstrdup("--mode=execute"); } p = skip_whitespace(valgrind); while (*p != '\0') { end = skip_non_whitespace(p); ts->command[i++] = xstrndup(p, end - p); p = skip_whitespace(end); } } if (i != len - 1) die("internal error while constructing command line"); ts->command[i++] = find_test(ts->file, source, build); ts->command[i] = NULL; } /* * Read a list of tests from a file, returning the list of tests as a struct * testlist, or NULL if there were no tests (such as a file containing only * comments). Reports an error to standard error and exits if the list of * tests cannot be read. */ static struct testlist * read_test_list(const char *filename, const char *source, const char *build) { FILE *file; unsigned int line; size_t length; char buffer[BUFSIZ]; const char *start; struct testlist *listhead, *current; /* Create the initial container list that will hold our results. */ listhead = xcalloc(1, struct testlist); current = NULL; /* * Open our file of tests to run and read it line by line, creating a new * struct testlist and struct testset for each line. */ file = fopen(filename, "r"); if (file == NULL) sysdie("can't open %s", filename); line = 0; while (fgets(buffer, sizeof(buffer), file)) { line++; length = strlen(buffer) - 1; if (buffer[length] != '\n') { fprintf(stderr, "%s:%u: line too long\n", filename, line); exit(1); } buffer[length] = '\0'; /* Skip comments, leading spaces, and blank lines. */ start = skip_whitespace(buffer); if (strlen(start) == 0) continue; if (start[0] == '#') continue; /* Allocate the new testset structure. */ if (current == NULL) current = listhead; else { current->next = xcalloc(1, struct testlist); current = current->next; } current->ts = xcalloc(1, struct testset); current->ts->plan = PLAN_INIT; /* Parse the line and store the results in the testset struct. */ parse_test_list_line(start, current->ts, source, build); } fclose(file); /* If there were no tests, current is still NULL. */ if (current == NULL) { free(listhead); return NULL; } /* Return the results. */ return listhead; } /* * Build a list of tests from command line arguments. Takes the argv and argc * representing the command line arguments and returns a newly allocated test * list, or NULL if there were no tests. The caller is responsible for * freeing. */ static struct testlist * build_test_list(char *argv[], int argc, const char *source, const char *build) { int i; struct testlist *listhead, *current; /* Create the initial container list that will hold our results. */ listhead = xcalloc(1, struct testlist); current = NULL; /* Walk the list of arguments and create test sets for them. */ for (i = 0; i < argc; i++) { if (current == NULL) current = listhead; else { current->next = xcalloc(1, struct testlist); current = current->next; } current->ts = xcalloc(1, struct testset); current->ts->plan = PLAN_INIT; current->ts->file = xstrdup(argv[i]); current->ts->command = xcalloc(2, char *); current->ts->command[0] = find_test(current->ts->file, source, build); current->ts->command[1] = NULL; } /* If there were no tests, current is still NULL. */ if (current == NULL) { free(listhead); return NULL; } /* Return the results. */ return listhead; } /* Free a struct testset. */ static void free_testset(struct testset *ts) { size_t i; free(ts->file); for (i = 0; ts->command[i] != NULL; i++) free(ts->command[i]); free(ts->command); free(ts->results); free(ts->reason); free(ts); } /* * Run a batch of tests. Takes two additional parameters: the root of the * source directory and the root of the build directory. Test programs will * be first searched for in the current directory, then the build directory, * then the source directory. Returns true iff all tests passed, and always * frees the test list that's passed in. */ static int test_batch(struct testlist *tests, enum test_verbose verbose) { size_t length, i; size_t longest = 0; unsigned int count = 0; struct testset *ts; struct timeval start, end; struct rusage stats; struct testlist *failhead = NULL; struct testlist *failtail = NULL; struct testlist *current, *next; int succeeded; unsigned long total = 0; unsigned long passed = 0; unsigned long skipped = 0; unsigned long failed = 0; unsigned long aborted = 0; /* Walk the list of tests to find the longest name. */ for (current = tests; current != NULL; current = current->next) { length = strlen(current->ts->file); if (length > longest) longest = length; } /* * Add two to longest and round up to the nearest tab stop. This is how * wide the column for printing the current test name will be. */ longest += 2; if (longest % 8) longest += 8 - (longest % 8); /* Start the wall clock timer. */ gettimeofday(&start, NULL); /* Now, plow through our tests again, running each one. */ for (current = tests; current != NULL; current = current->next) { ts = current->ts; /* Print out the name of the test file. */ fputs(ts->file, stdout); if (verbose) fputs("\n\n", stdout); else for (i = strlen(ts->file); i < longest; i++) putchar('.'); if (isatty(STDOUT_FILENO)) fflush(stdout); /* Run the test. */ succeeded = test_run(ts, verbose); fflush(stdout); if (verbose) putchar('\n'); /* Record cumulative statistics. */ aborted += ts->aborted; total += ts->count + ts->all_skipped; passed += ts->passed; skipped += ts->skipped + ts->all_skipped; failed += ts->failed; count++; /* If the test fails, we shuffle it over to the fail list. */ if (!succeeded) { if (failhead == NULL) { failhead = xcalloc(1, struct testlist); failtail = failhead; } else { failtail->next = xcalloc(1, struct testlist); failtail = failtail->next; } failtail->ts = ts; failtail->next = NULL; } } total -= skipped; /* Stop the timer and get our child resource statistics. */ gettimeofday(&end, NULL); getrusage(RUSAGE_CHILDREN, &stats); /* Summarize the failures and free the failure list. */ if (failhead != NULL) { test_fail_summary(failhead); while (failhead != NULL) { next = failhead->next; free(failhead); failhead = next; } } /* Free the memory used by the test lists. */ while (tests != NULL) { next = tests->next; free_testset(tests->ts); free(tests); tests = next; } /* Print out the final test summary. */ putchar('\n'); if (aborted != 0) { if (aborted == 1) printf("Aborted %lu test set", aborted); else printf("Aborted %lu test sets", aborted); printf(", passed %lu/%lu tests", passed, total); } else if (failed == 0) fputs("All tests successful", stdout); else printf("Failed %lu/%lu tests, %.2f%% okay", failed, total, (double) (total - failed) * 100.0 / (double) total); if (skipped != 0) { if (skipped == 1) printf(", %lu test skipped", skipped); else printf(", %lu tests skipped", skipped); } puts("."); printf("Files=%u, Tests=%lu", count, total); printf(", %.2f seconds", tv_diff(&end, &start)); printf(" (%.2f usr + %.2f sys = %.2f CPU)\n", tv_seconds(&stats.ru_utime), tv_seconds(&stats.ru_stime), tv_sum(&stats.ru_utime, &stats.ru_stime)); return (failed == 0 && aborted == 0); } /* * Run a single test case. This involves just running the test program after * having done the environment setup and finding the test program. */ static void test_single(const char *program, const char *source, const char *build) { char *path; path = find_test(program, source, build); if (execl(path, path, (char *) 0) == -1) sysdie("cannot exec %s", path); } /* * Main routine. Set the C_TAP_SOURCE, C_TAP_BUILD, SOURCE, and BUILD * environment variables and then, given a file listing tests, run each test * listed. */ int main(int argc, char *argv[]) { int option; int status = 0; int single = 0; enum test_verbose verbose = CONCISE; char *c_tap_source_env = NULL; char *c_tap_build_env = NULL; char *source_env = NULL; char *build_env = NULL; const char *program; const char *shortlist; const char *list = NULL; const char *source = C_TAP_SOURCE; const char *build = C_TAP_BUILD; struct testlist *tests; program = argv[0]; while ((option = getopt(argc, argv, "b:hl:os:v")) != EOF) { switch (option) { case 'b': build = optarg; break; case 'h': printf(usage_message, program, program, program, usage_extra); exit(0); case 'l': list = optarg; break; case 'o': single = 1; break; case 's': source = optarg; break; case 'v': verbose = VERBOSE; break; default: exit(1); } } argv += optind; argc -= optind; if ((list == NULL && argc < 1) || (list != NULL && argc > 0)) { fprintf(stderr, usage_message, program, program, program, usage_extra); exit(1); } /* * If C_TAP_VERBOSE is set in the environment, that also turns on verbose * mode. */ if (getenv("C_TAP_VERBOSE") != NULL) verbose = VERBOSE; /* * Set C_TAP_SOURCE and C_TAP_BUILD environment variables. Also set * SOURCE and BUILD for backward compatibility, although we're trying to * migrate to the ones with a C_TAP_* prefix. */ if (source != NULL) { c_tap_source_env = concat("C_TAP_SOURCE=", source, (const char *) 0); if (putenv(c_tap_source_env) != 0) sysdie("cannot set C_TAP_SOURCE in the environment"); source_env = concat("SOURCE=", source, (const char *) 0); if (putenv(source_env) != 0) sysdie("cannot set SOURCE in the environment"); } if (build != NULL) { c_tap_build_env = concat("C_TAP_BUILD=", build, (const char *) 0); if (putenv(c_tap_build_env) != 0) sysdie("cannot set C_TAP_BUILD in the environment"); build_env = concat("BUILD=", build, (const char *) 0); if (putenv(build_env) != 0) sysdie("cannot set BUILD in the environment"); } /* Run the tests as instructed. */ if (single) test_single(argv[0], source, build); else if (list != NULL) { shortlist = strrchr(list, '/'); if (shortlist == NULL) shortlist = list; else shortlist++; printf(banner, shortlist); tests = read_test_list(list, source, build); status = test_batch(tests, verbose) ? 0 : 1; } else { tests = build_test_list(argv, argc, source, build); status = test_batch(tests, verbose) ? 0 : 1; } /* For valgrind cleanliness, free all our memory. */ if (source_env != NULL) { putenv((char *) "C_TAP_SOURCE="); putenv((char *) "SOURCE="); free(c_tap_source_env); free(source_env); } if (build_env != NULL) { putenv((char *) "C_TAP_BUILD="); putenv((char *) "BUILD="); free(c_tap_build_env); free(build_env); } exit(status); } hkl-5.1.7/tests/hkl-pseudoaxis-soleil-sixs-med-t.c0000664000175000017500000001507314677222567021037 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #include "hkl-axis-private.h" /* temporary */ #define GET_AXIS(_geometries, _name) hkl_parameter_value_get( \ hkl_geometry_axis_get( \ hkl_geometry_list_item_geometry_get( \ hkl_geometry_list_items_first_get((geometries))), \ #_name, NULL), HKL_UNIT_USER) #define GET_GAMMA(geometries) hkl_parameter_value_get( \ hkl_geometry_axis_get( \ hkl_geometry_list_item_geometry_get( \ hkl_geometry_list_items_first_get((geometries))), \ "gamma", NULL), HKL_UNIT_USER) /* tests */ static void qper_qpar(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; double qper_qpar[2]; double gamma; HklGeometryList *geometries; struct Sample gaas = { .name = "test", .lattice=Cubic(1.54), .ux = -90.0 * HKL_DEGTORAD, .uy = 0.0 * HKL_DEGTORAD, .uz = 0.0 * HKL_DEGTORAD, }; Geometry gconfig = SoleilSixsMed2_3(1.54, VALUES(0., 0.1, 0., 0., 90., 0.)); geometry = newGeometry(gconfig); engines = newEngines(gconfig); sample = newSample(gaas); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "qper_qpar", NULL); /* the init part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); /* gamma must be positif */ qper_qpar[0] = 0.1; qper_qpar[1] = 4.; geometries = hkl_engine_pseudo_axis_values_set(engine, qper_qpar, ARRAY_SIZE(qper_qpar), HKL_UNIT_DEFAULT, NULL); if(geometries){ gamma = GET_GAMMA(geometries); is_double(2.61077, gamma, HKL_EPSILON * 10, __func__); hkl_geometry_list_free(geometries); } /* gamma must be negatif */ qper_qpar[0] = -0.1; qper_qpar[1] = 4.; geometries = hkl_engine_pseudo_axis_values_set(engine, qper_qpar, ARRAY_SIZE(qper_qpar), HKL_UNIT_DEFAULT, NULL); if(geometries){ gamma = GET_GAMMA(geometries); is_double(-2.7956354, gamma, HKL_EPSILON * 10, __func__); hkl_geometry_list_free(geometries); } ok(res, __func__); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void med_2_3(void) { int res = TRUE; HklEngineList *engines; HklEngine *hkl; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl_p[] = {1.95, 2, 6}; struct Sample gaas = { .name = "GaAs", .lattice = Hexagonal(4.759, 12.992), .ux = -90.59 * HKL_DEGTORAD, .uy = -9.97 * HKL_DEGTORAD, .uz = 176.35 * HKL_DEGTORAD, }; Geometry gconfig = SoleilSixsMed2_3(1.54980, VALUES(0, 1, -14.27, 99.62, 60.98, 0)); /* Wavelength 1.54980 */ /* Mode mu_fixed */ /* Ux -90.59 Uy -9.97 Uz 176.35 */ /* A 4.759 B 4.759 C 12.992 */ /* Alpha 90 Beta 90 Gamma 120 */ geometry = newGeometry(gconfig); engines = newEngines(gconfig); sample = newSample(gaas); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); hkl = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); res &= DIAG(hkl_engine_current_mode_set(hkl, "mu_fixed", NULL)); /* hkl 1.95, 2, 6 (should not fail) */ geometries = hkl_engine_pseudo_axis_values_set(hkl, hkl_p, ARRAY_SIZE(hkl_p), HKL_UNIT_DEFAULT, NULL); res &= DIAG((geometries != NULL)); hkl_geometry_list_free(geometries); ok(res == TRUE, __func__); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void med_2_3_v2(void) { int res = TRUE; HklEngineList *engines; HklEngine *hkl; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl_p[] = {1.95, 2, 6}; static double values[] = {1}; struct Sample gaas = { .name = "GaAs", .lattice = Hexagonal(4.759, 12.992), .ux = -90.59 * HKL_DEGTORAD, .uy = -9.97 * HKL_DEGTORAD, .uz = 176.35 * HKL_DEGTORAD, }; Geometry gconfig = SoleilSixsMed2_3_v2(1.54980, VALUES(1, -14.27, 99.62, 60.98, 10)); /* Wavelength 1.54980 */ /* Mode mu_fixed */ /* Ux -90.59 Uy -9.97 Uz 176.35 */ /* A 4.759 B 4.759 C 12.992 */ /* Alpha 90 Beta 90 Gamma 120 */ geometry = newGeometry(gconfig); engines = newEngines(gconfig); sample = newSample(gaas); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); hkl = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* hkl 1.95, 2, 6 (should not fail) */ geometries = hkl_engine_pseudo_axis_values_set(hkl, hkl_p, ARRAY_SIZE(hkl_p), HKL_UNIT_DEFAULT, NULL); res &= DIAG((geometries != NULL)); /* check that eta_a did not moved */ is_double(10.0, GET_AXIS(geometries, eta_a), HKL_EPSILON * 10, __func__); hkl_geometry_list_free(geometries); /* now make it move */ res &= DIAG(hkl_engine_list_parameters_values_set(engines, values, ARRAY_SIZE(values), HKL_UNIT_USER, NULL)); geometries = hkl_engine_pseudo_axis_values_set(hkl, hkl_p, ARRAY_SIZE(hkl_p), HKL_UNIT_DEFAULT, NULL); is_double(-80.079231, GET_AXIS(geometries, eta_a), HKL_EPSILON * 10, __func__); hkl_geometry_list_free(geometries); ok(res == TRUE, __func__); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } int main(void) { plan(7); qper_qpar(); med_2_3(); med_2_3_v2(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-soleil-nanoscopium-robot-t.c0000664000175000017500000000463514677222567022766 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include static void solution(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 0, 1}; struct Sample sconf = { .name = "test", .lattice = Cubic(5.432), .ux = -90.0 * HKL_DEGTORAD, .uy = 0.0 * HKL_DEGTORAD, .uz = 0.0 * HKL_DEGTORAD, }; Geometry gconf = SoleilNanoscopiumRobot(0.842, VALUES(0., 0., 0., 0., 0., 0.)); geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(sconf); /* use a 0D detector */ detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); /* select the hkl pseudo axis */ hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* compute the 1 1 0 */ geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if (geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, 3)); } hkl_geometry_list_free(geometries); }else res = FALSE; hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); ok(res == TRUE, "solution"); } int main(void) { plan(1); solution(); return 0; } hkl-5.1.7/tests/hkl-detector-t.c0000664000175000017500000000635314677222567015451 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include "hkl-axis-private.h" /* temporary */ #include "hkl-detector-private.h" static void new(void) { HklDetector *detector1; HklDetector *detector2; detector1 = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); ok(1 == detector1->idx, __func__); ok(NULL == detector1->holder, __func__); detector2 = hkl_detector_new_copy(detector1); ok(detector1->idx == detector2->idx, __func__); ok(detector1->holder == detector2->holder, __func__); hkl_detector_free(detector1); hkl_detector_free(detector2); } static void attach_to_holder(void) { HklDetector *detector = NULL; HklGeometry *geometry = NULL; HklHolder *holder = NULL; detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); geometry = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(geometry); hkl_detector_attach_to_holder(detector, holder); ok(1 == detector->idx, __func__); ok(holder == detector->holder, __func__); hkl_geometry_free(geometry); hkl_detector_free(detector); } static void compute_kf(void) { int res = TRUE; HklDetector *detector = NULL; HklGeometry *geometry = NULL; HklHolder *holder = NULL; HklVector kf; HklVector kf_ref = {{0, HKL_TAU / HKL_SOURCE_DEFAULT_WAVE_LENGTH, 0}}; detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); geometry = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); /* add a fake first holder */ holder = hkl_geometry_add_holder(geometry); /* for now all detectors MUST be connected to the second * holder. We will decide about a better API to connect * geometry and detector */ holder = hkl_geometry_add_holder(geometry); hkl_holder_add_rotation(holder, "a", 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "b", 0, 1, 0, &hkl_unit_angle_deg); res &= DIAG(hkl_parameter_value_set(darray_item(geometry->axes, 0), M_PI_2, HKL_UNIT_DEFAULT, NULL)); res &= DIAG(hkl_parameter_value_set(darray_item(geometry->axes, 1), M_PI_2, HKL_UNIT_DEFAULT, NULL)); hkl_detector_attach_to_holder(detector, holder); hkl_detector_compute_kf(detector, geometry, &kf); res &= DIAG(0 == hkl_vector_cmp(&kf_ref, &kf)); ok(res, __func__); hkl_geometry_free(geometry); hkl_detector_free(detector); } int main(void) { plan(7); new(); attach_to_holder(); compute_kf(); return 0; } hkl-5.1.7/tests/hkl-binoculars-t.c0000664000175000017500000011620615144627103015761 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include "hkl-binoculars.h" #include #include #include #include #include #include static int check_sha256(const uint8_t *buffer, size_t length, const char* fingerprint, int n) { int res = TRUE; OSSL_LIB_CTX *context = OSSL_LIB_CTX_new(); uint8_t sha256[SHA256_DIGEST_LENGTH]; size_t sha256_length; char buffer_fingerprint[SHA256_DIGEST_LENGTH*2+1]; EVP_Q_digest(context, "SHA256", NULL, buffer, length, sha256, &sha256_length); for(int i=0; iaxes, i).imin; res &= imax[n][i] == darray_item(cube->axes, i).imax; } if (res == FALSE){ fprintf(stdout, "\n"); hkl_binoculars_cube_fprintf(stdout, cube); } free(mask); free(pixels_coordinates); hkl_binoculars_cube_free(cube); hkl_binoculars_space_free(space); hkl_binoculars_axis_limits_free(l_lims); hkl_binoculars_axis_limits_free(k_lims); hkl_binoculars_axis_limits_free(h_lims); } hkl_sample_free(sample); hkl_geometry_free(geometry); ok(res == TRUE, __func__); } static void test_projection(void) { size_t n; int res = TRUE; HklFactory *factory = hkl_factory_get_by_name("ZAXIS", NULL); HklGeometry *geometry = hkl_factory_create_new_geometry(factory); /* prepare the sample */ HklSample *sample = hkl_sample_new("hkl projection"); HklLattice *lattice = hkl_lattice_new(2.556, 2.556, 2.556, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 120 * HKL_DEGTORAD, NULL); hkl_sample_lattice_set(sample, lattice); hkl_lattice_free(lattice); /* ux = -89.7639 */ /* uy = 0.0252 */ /* uz = 13.5010 */ /* the geometry positions */ static double axes[3][4] = {{0, 0, 0, 0}, {10, 10, 10, 10}, {30, 30, 30, 30}}; /* the expected result for the three axes of the 1st detector */ static ptrdiff_t imin[HKL_BINOCULARS_DETECTOR_NUM_DETECTORS][3] = { {-14,-2, 0}, {-14,-2, 0}, {-14,-2, 0}, {-14,-2,-2}, {-13, 0, 0}, {-13, 0, 0}, {-13,-1, 0}, {-13,-1, 0}, {-18, 0,-1}, {-14,-2, -3}, }; static ptrdiff_t imax[HKL_BINOCULARS_DETECTOR_NUM_DETECTORS][3] = { {1, 34, 15}, {1, 34, 19}, {1, 34, 14}, {1, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 36}, {1, 33, 15}, }; for(n=0; naxes, i).imin); res &= DIAG(imax[n][i] == darray_item(cube->axes, i).imax); res &= DIAG(imin[n][i] == darray_item(cube2->axes, i).imin); res &= DIAG(imax[n][i] == darray_item(cube2->axes, i).imax); } if (res == FALSE){ fprintf(stdout, "\n"); hkl_binoculars_cube_fprintf(stdout, cube); } free(mask); free(pixels_coordinates_2); free(pixels_coordinates); hkl_binoculars_cube_free(cube2); hkl_binoculars_cube_free(cube); hkl_binoculars_space_free(space); hkl_binoculars_axis_limits_free(l_lims); hkl_binoculars_axis_limits_free(k_lims); hkl_binoculars_axis_limits_free(h_lims); } hkl_sample_free(sample); hkl_geometry_free(geometry); ok(res == TRUE, __func__); } static void test_polarization(void) { /* test the polarisation for the uhv geometry and the imxpad * s140 detector */ size_t n = HKL_BINOCULARS_DETECTOR_IMXPAD_S140; int res = TRUE; HklFactory *factory = hkl_factory_get_by_name("ZAXIS", NULL); HklGeometry *geometry = hkl_factory_create_new_geometry(factory); /* prepare the sample */ HklSample *sample = hkl_sample_new("test polarization"); HklLattice *lattice = hkl_lattice_new(2.556, 2.556, 2.556, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 120 * HKL_DEGTORAD, NULL); hkl_sample_lattice_set(sample, lattice); hkl_lattice_free(lattice); /* ux = -89.7639 */ /* uy = 0.0252 */ /* uz = 13.5010 */ /* the geometry positions */ static double axes[3][4] = {{0, 0, 0, 0}, {10, 10, 10, 10}, {30, 30, 30, 30}}; /* the expected result for the three axes of the 1st detector */ static ptrdiff_t imin[HKL_BINOCULARS_DETECTOR_NUM_DETECTORS][3] = { {-14,-2, 0}, {-14,-2, 0}, {-14,-2, 0}, {-14,-2,-2}, {-13, 0, 0}, {-13, 0, 0}, {-13,-1, 0}, {-13,-1, 0}, {-18, 0,-1}, {-14,-2, -3}, }; static ptrdiff_t imax[HKL_BINOCULARS_DETECTOR_NUM_DETECTORS][3] = { {1, 34, 15}, {1, 34, 19}, {1, 34, 14}, {1, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 15}, {0, 33, 36}, {1, 33, 15}, }; size_t i; int height; int width; HklBinocularsCube *cube; HklBinocularsSpace *space; double *pixels_coordinates; uint8_t *mask; HklBinocularsAxisLimits *h_lims, *k_lims, *l_lims; h_lims = hkl_binoculars_axis_limits_new(NULL, NULL); k_lims = hkl_binoculars_axis_limits_new(NULL, NULL); l_lims = hkl_binoculars_axis_limits_new(NULL, NULL); const HklBinocularsAxisLimits *limits[] = {h_lims, k_lims, l_lims}; hkl_binoculars_detector_2d_shape_get(n, &width, &height); space = hkl_binoculars_space_new(width * height, 3); cube = hkl_binoculars_cube_new_empty(); pixels_coordinates = hkl_binoculars_detector_2d_coordinates_get(n); hkl_binoculars_detector_2d_sixs_calibration(n, pixels_coordinates, width, height, 100, 100, 1, 0, 0); mask = hkl_binoculars_detector_2d_mask_get(n); for(i=0; i<3; ++i){ size_t img_size; uint32_t *img = hkl_binoculars_detector_2d_fake_image_uint32(n, &img_size); const double weight = 1; size_t pixels_coordinates_dims[] = {3, height, width}; double resolutions[] = {0.05, 0.05, 0.05}; const int do_polarisation_correction = 0; IGNORE(hkl_geometry_axis_values_set(geometry, &axes[i][0], ARRAY_SIZE(axes[i]), HKL_UNIT_USER, NULL)); hkl_binoculars_space_hkl_uint32_t (space, geometry, sample, img, img_size, weight, pixels_coordinates, ARRAY_SIZE(pixels_coordinates_dims), pixels_coordinates_dims, resolutions, ARRAY_SIZE(resolutions), mask, limits, ARRAY_SIZE(limits), do_polarisation_correction); hkl_binoculars_cube_add_space(cube, space); free(img); } for(i=0; iaxes, i).imin; res &= imax[n][i] == darray_item(cube->axes, i).imax; } if (res == FALSE){ fprintf(stdout, "\n"); hkl_binoculars_cube_fprintf(stdout, cube); } free(mask); free(pixels_coordinates); hkl_binoculars_cube_free(cube); hkl_binoculars_space_free(space); hkl_binoculars_axis_limits_free(l_lims); hkl_binoculars_axis_limits_free(k_lims); hkl_binoculars_axis_limits_free(h_lims); hkl_sample_free(sample); hkl_geometry_free(geometry); ok(res == TRUE, __func__); } int main(void) { plan(11); coordinates_get(); coordinates_save(); // io_img(); mask_get(); mask_save(); angles_projection(); qcustom_projection(); qparqper_projection(); qxqyqz_projection(); hkl_projection(); test_projection(); test_polarization(); return 0; } hkl-5.1.7/tests/hkl-parameter-t.c0000664000175000017500000002252114677222567015613 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #include "hkl-parameter-private.h" static void new(void) { HklParameter *p; GError *error = NULL; int res = TRUE; res &= DIAG(NULL == hkl_parameter_new("", "", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, &error)); res &= DIAG(error != NULL); g_clear_error(&error); res &= DIAG(NULL == hkl_parameter_new("", "", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, &error)); res &= DIAG(error != NULL); g_clear_error(&error); res &= DIAG(NULL == hkl_parameter_new("", "", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, &error)); res &= DIAG(error != NULL); g_clear_error(&error); res &= DIAG(NULL == hkl_parameter_new("toto", "", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, &error)); res &= DIAG(error != NULL); g_clear_error(&error); res &= DIAG(NULL == hkl_parameter_new("toto", "", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_length_nm, &error)); res &= DIAG(error != NULL); g_clear_error(&error); p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); res &= DIAG(0 == !p); res &= DIAG(is_double(1., p->range.min, HKL_EPSILON, __func__)); res &= DIAG(is_double(2., p->_value, HKL_EPSILON, __func__)); res &= DIAG(is_double(3., p->range.max, HKL_EPSILON, __func__)); res &= DIAG(FALSE == p->fit); res &= DIAG(TRUE == p->changed); res &= DIAG(&hkl_unit_angle_rad == p->unit); res &= DIAG(&hkl_unit_angle_deg == p->punit); hkl_parameter_free(p); ok(res == TRUE, __func__); } static void new_copy(void) { HklParameter *copy, *p; int res = TRUE; p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); copy = hkl_parameter_new_copy(p); res &= DIAG(copy->name == p->name); res &= DIAG(copy->description == p->description); res &= DIAG(is_double(copy->range.min, p->range.min, HKL_EPSILON, __func__)); res &= DIAG(is_double(copy->_value, p->_value, HKL_EPSILON, __func__)); res &= DIAG(is_double(copy->range.max, p->range.max, HKL_EPSILON, __func__)); res &= DIAG(copy->fit == p->fit); res &= DIAG(copy->changed == p->changed); res &= DIAG(&hkl_unit_angle_rad == copy->unit); res &= DIAG(&hkl_unit_angle_deg == copy->punit); hkl_parameter_free(copy); hkl_parameter_free(p); ok(res == TRUE, __func__); } static void init(void) { HklParameter *p; int res = TRUE; res &= DIAG(NULL == hkl_parameter_new("", "no description", 2, NAN, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL)); res &= DIAG(NULL == hkl_parameter_new("", "no description", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL)); res &= DIAG(NULL == hkl_parameter_new("", "no description", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL)); res &= DIAG(NULL == hkl_parameter_new("toto", "no description", 2, 1, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL)); res &= DIAG(NULL == hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_length_nm, NULL)); res &= DIAG(NULL == hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_length_nm, NULL)); p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); res &= DIAG(NULL != p); hkl_parameter_free(p); ok(res == TRUE, __func__); } static void set(void) { HklParameter *p; GError *error; int res = TRUE; p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); /* can not set a parameter with a NaN value */ error = NULL; res &= DIAG(FALSE == hkl_parameter_value_set(p, NAN, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* set a normal value is ok */ error = NULL; res &= DIAG(TRUE == hkl_parameter_value_set(p, 10, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error == NULL); hkl_parameter_free(p); ok(res == TRUE, __func__); } static void is_valid(void) { HklParameter *p; GError *error; int res = TRUE; p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); res &= DIAG(TRUE == hkl_parameter_is_valid(p)); error = NULL; res &= DIAG(TRUE == hkl_parameter_value_set(p, 10, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error == NULL); res &= DIAG(FALSE == hkl_parameter_is_valid(p)); hkl_parameter_free(p); ok(res == TRUE, __func__); } static void min_max(void) { HklParameter *p; double min, max; GError *error; int res = TRUE; p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1, min, HKL_EPSILON, __func__); is_double(3, max, HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_min_max_set(p, 1.1, 4, HKL_UNIT_DEFAULT, NULL)); hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1.1, min, HKL_EPSILON, __func__); is_double(4, max, HKL_EPSILON, __func__); error = NULL; res &= DIAG(FALSE == hkl_parameter_min_max_set(p, 4, 1, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* nothing should have changed */ hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1.1, min, HKL_EPSILON, __func__); is_double(4, max, HKL_EPSILON, __func__); error = NULL; res &= DIAG(FALSE == hkl_parameter_min_max_set(p, NAN, 1, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* nothing should have changed */ hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1.1, min, HKL_EPSILON, __func__); is_double(4, max, HKL_EPSILON, __func__); error = NULL; res &= DIAG(FALSE == hkl_parameter_min_max_set(p, 1, NAN, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* nothing should have changed */ hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1.1, min, HKL_EPSILON, __func__); is_double(4, max, HKL_EPSILON, __func__); error = NULL; res &= DIAG(FALSE == hkl_parameter_min_max_set(p, NAN, NAN, HKL_UNIT_DEFAULT, &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* nothing should have changed */ hkl_parameter_min_max_get(p, &min, &max, HKL_UNIT_DEFAULT); is_double(1.1, min, HKL_EPSILON, __func__); is_double(4, max, HKL_EPSILON, __func__); hkl_parameter_free(p); } static void getter(void) { HklParameter *p; p = hkl_parameter_new("toto", "no description", 1, 2, 3, FALSE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); ok(NULL == hkl_parameter_axis_v_get(p), __func__); ok(NULL == hkl_parameter_quaternion_get(p), __func__); ok(NULL != hkl_parameter_description_get(p), __func__); hkl_parameter_free(p); } int main(void) { plan(26); new(); new_copy(); init(); set(); is_valid(); min_max(); getter(); return 0; } hkl-5.1.7/tests/hkl-sample-t.c0000664000175000017500000004123314677222567015115 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #define SET(_sample, _param, _value) do{ \ HklParameter *parameter = hkl_parameter_new_copy(hkl_sample_ ## _param ## _get(_sample)); \ GError *error; \ ok(TRUE == hkl_parameter_value_set(parameter, _value, HKL_UNIT_DEFAULT, NULL), __func__); \ error = NULL; \ ok(TRUE == hkl_parameter_value_set(parameter, _value, HKL_UNIT_DEFAULT, &error), __func__); \ ok(error == NULL, __func__); \ ok(TRUE == hkl_sample_ ## _param ## _set(_sample, parameter, NULL), __func__); \ ok(TRUE == hkl_sample_ ## _param ## _set(_sample, parameter, &error), __func__); \ ok(error == NULL, __func__); \ hkl_parameter_free(parameter); \ }while(0) #define SET_UX_UY_UZ(_sample, _ux, _uy, _uz) do{ \ SET(_sample, ux, _ux); \ SET(_sample, uy, _uy); \ SET(_sample, uz, _uz); \ }while(0) #define CHECK(_sample, _param, _value) do{ \ is_double(_value, \ hkl_parameter_value_get(hkl_sample_## _param ## _get(sample), HKL_UNIT_DEFAULT), \ HKL_EPSILON, __func__); \ }while(0) #define CHECK_UX_UY_UZ(_sample, _ux, _uy, _uz) do{ \ CHECK(_sample, ux, _ux); \ CHECK(_sample, uy, _uy); \ CHECK(_sample, uz, _uz); \ }while(0) static void new(void) { HklSample *sample; sample = hkl_sample_new("test"); hkl_sample_free(sample); } static void add_reflection(void) { HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklSampleReflection *ref; factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); ok(hkl_sample_n_reflections_get(sample) == 0, __func__); ref = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(hkl_sample_n_reflections_get(sample) == 1, __func__); /* we can not add two times the same reflection */ hkl_sample_add_reflection(sample, ref); ok(hkl_sample_n_reflections_get(sample) == 1, __func__); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); } static void get_reflection(void) { HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklSampleReflection *ref; HklSampleReflection *ref2; factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); ref = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ref2 = hkl_sample_reflections_first_get(sample); ok(0 == !ref, __func__); ok(ref == ref2, __func__); ok(NULL == hkl_sample_reflections_next_get(sample, ref2), __func__); ref = hkl_sample_reflection_new(geometry, detector, -1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ref = hkl_sample_reflection_new(geometry, detector, 0, 1, 0, NULL); hkl_sample_add_reflection(sample, ref); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); } static void del_reflection(void) { HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklSampleReflection *ref; factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); ref = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(hkl_sample_n_reflections_get(sample) == 1, __func__); hkl_sample_del_reflection(sample, ref); ok(hkl_sample_n_reflections_get(sample) == 0, __func__); ok (NULL == hkl_sample_reflections_first_get(sample), __func__); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); } static void set_ux_uy_uz(void) { HklSample *sample; sample = hkl_sample_new("test"); SET_UX_UY_UZ(sample, 1 * HKL_DEGTORAD, 2 * HKL_DEGTORAD, 3 * HKL_DEGTORAD); CHECK_UX_UY_UZ(sample, 1 * HKL_DEGTORAD, 2 * HKL_DEGTORAD, 3 * HKL_DEGTORAD); hkl_sample_free(sample); } static void set_UB(void) { GError *error; HklSample *sample; const HklMatrix *_UB; HklMatrix *UB = hkl_matrix_new_full(HKL_TAU/1.54, 0., 0., 0., 0., HKL_TAU/1.54, 0., -HKL_TAU/1.54, 0.); HklMatrix *U = hkl_matrix_new_full(1., 0., 0., 0., 0., 1., 0.,-1., 0.); HklMatrix *UB_wrong = hkl_matrix_new_full(0., 0., 0., 0., 0., 0., 0., 0., 0.); sample = hkl_sample_new("test"); /* check that reading and writing the current UB works */ _UB = hkl_sample_UB_get(sample); ok(TRUE == hkl_sample_UB_set(sample, _UB, NULL), __func__); error = NULL; ok(TRUE == hkl_sample_UB_set(sample, _UB, &error), __func__); ok(error == NULL, __func__); CHECK_UX_UY_UZ(sample, 0., 0., 0.); /* set a new valid UB matrix */ error = NULL; ok(TRUE == hkl_sample_UB_set(sample, UB, NULL), __func__); ok(TRUE == hkl_sample_UB_set(sample, UB, &error), __func__); ok(error == NULL, __func__); is_matrix(U, hkl_sample_U_get(sample), __func__); CHECK_UX_UY_UZ(sample, -90. * HKL_DEGTORAD, 0., 0.); /* set a non-valid UB matrix */ error = NULL; ok(FALSE == hkl_sample_UB_set(sample, UB_wrong, &error), __func__); ok(error != NULL, __func__); g_clear_error(&error); is_matrix(U, hkl_sample_U_get(sample), __func__); hkl_sample_free(sample); hkl_matrix_free(UB_wrong); hkl_matrix_free(U); hkl_matrix_free(UB); } static void compute_UB_busing_levy(void) { GError *error; HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklSampleReflection *r0, *r1, *r2, *r3; HklMatrix *m_I = hkl_matrix_new_full(1,0,0, 0,1,0, 0, 0, 1); HklMatrix *m_ref = hkl_matrix_new_full(1., 0., 0., 0., 0., 1., 0.,-1., 0.); factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); /* first test */ ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.), __func__); r0 = hkl_sample_reflection_new(geometry, detector, 0, 0, 1, NULL); hkl_sample_add_reflection(sample, r0); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., -90., 60.), __func__); r1 = hkl_sample_reflection_new(geometry, detector, -1, 0, 0, NULL); hkl_sample_add_reflection(sample, r1); ok(TRUE == hkl_sample_compute_UB_busing_levy(sample, r0, r1, NULL), __func__); is_matrix(m_I, hkl_sample_U_get(sample), __func__); error = NULL; ok(TRUE == hkl_sample_compute_UB_busing_levy(sample, r0, r1, &error), __func__); ok(error == NULL, __func__); is_matrix(m_I, hkl_sample_U_get(sample), __func__); CHECK_UX_UY_UZ(sample, 0., 0., 0.); /* second test */ ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.), __func__); r2 = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, r2); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 180., 60.), __func__); r3 = hkl_sample_reflection_new(geometry, detector, 0, 1, 0, NULL); hkl_sample_add_reflection(sample, r3); ok(TRUE == hkl_sample_compute_UB_busing_levy(sample, r2, r3, NULL), __func__); is_matrix(m_ref, hkl_sample_U_get(sample), __func__); error = NULL; ok(TRUE == hkl_sample_compute_UB_busing_levy(sample, r2, r3, &error), __func__); ok(error == NULL, __func__); is_matrix(m_ref, hkl_sample_U_get(sample), __func__); CHECK_UX_UY_UZ(sample, -90. * HKL_DEGTORAD, 0., 0.); /* failling test */ ok(FALSE == hkl_sample_compute_UB_busing_levy(sample, r0, r0, NULL), __func__); error = NULL; ok(FALSE == hkl_sample_compute_UB_busing_levy(sample, r0, r0, &error), __func__); ok(error != NULL, __func__); g_clear_error(&error); is_matrix(m_ref, hkl_sample_U_get(sample), __func__); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); hkl_matrix_free(m_ref); hkl_matrix_free(m_I); } static void affine(void) { GError *error; double a, b, c, alpha, beta, gamma; const HklFactory *factory; HklDetector *detector; HklGeometry *geometry; HklSample *sample; HklLattice *lattice; HklSampleReflection *ref; HklMatrix *m_ref = hkl_matrix_new_full(1., 0., 0., 0., 1., 0., 0., 0., 1.); factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); lattice = hkl_lattice_new(1, 5, 4, 92 * HKL_DEGTORAD, 81 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, NULL); hkl_sample_lattice_set(sample, lattice); hkl_lattice_free(lattice); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 90., 0., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 0, 1, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 0, 0, 1, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 60., 60., 60., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, .625, .75, -.216506350946, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 45., 45., 45., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, .665975615037, .683012701892, .299950211252, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_sample_affine(sample, NULL), __func__); error = NULL; ok(TRUE == hkl_sample_affine(sample, &error), __func__); ok(error == NULL, __func__); hkl_lattice_get(hkl_sample_lattice_get(sample), &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_DEFAULT); is_matrix(m_ref, hkl_sample_U_get(sample), __func__); is_double(1.54, a, HKL_EPSILON, __func__); is_double(1.54, b, HKL_EPSILON, __func__); is_double(1.54, c, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, alpha, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, beta, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, gamma, HKL_EPSILON, __func__); CHECK_UX_UY_UZ(sample, 0., 0., 0.); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); hkl_matrix_free(m_ref); } static void get_reflections_xxx_angle(void) { HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklLattice *lattice; HklSampleReflection *r0, *r1, *r2, *r3, *r4; factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD,90*HKL_DEGTORAD, NULL); hkl_sample_lattice_set(sample, lattice); hkl_lattice_free(lattice); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.), __func__); r0 = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, r0); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 90., 0., 60.), __func__); r1 = hkl_sample_reflection_new(geometry, detector, 0, 1, 0, NULL); hkl_sample_add_reflection(sample, r1); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.), __func__); r2 = hkl_sample_reflection_new(geometry, detector, 0, 0, 1, NULL); hkl_sample_add_reflection(sample, r2); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 60., 60., 60., 60.), __func__); r3 = hkl_sample_reflection_new(geometry, detector, .625, .75, -.216506350946, NULL); hkl_sample_add_reflection(sample, r3); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 45., 45., 45., 60.), __func__); r4 = hkl_sample_reflection_new(geometry, detector, .665975615037, .683012701892, .299950211252, NULL); hkl_sample_add_reflection(sample, r4); is_double(90 * HKL_DEGTORAD, hkl_sample_get_reflection_theoretical_angle(sample, r0, r1), HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, hkl_sample_get_reflection_measured_angle(sample, r0, r1), HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, hkl_sample_get_reflection_theoretical_angle(sample, r1, r2), HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, hkl_sample_get_reflection_measured_angle(sample, r1, r2), HKL_EPSILON, __func__); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); } static void reflection_set_geometry(void) { double a, b, c, alpha, beta, gamma; HklDetector *detector; const HklFactory *factory; HklGeometry *geometry; HklSample *sample; HklLattice *lattice; HklSampleReflection *ref; HklMatrix *m_ref = hkl_matrix_new_full(1., 0., 0., 0., 1., 0., 0., 0., 1.); factory = hkl_factory_get_by_name("E4CV", NULL); geometry = hkl_factory_create_new_geometry(factory); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); sample = hkl_sample_new("test"); lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD,90*HKL_DEGTORAD, NULL); hkl_sample_lattice_set(sample, lattice); hkl_lattice_free(lattice); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 1, 0, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 90., 0., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 0, 1, 0, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, 0, 0, 1, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 60., 60., 60., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, .625, .75, -.216506350946, NULL); hkl_sample_add_reflection(sample, ref); ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 46., 45., 45., 60.), __func__); ref = hkl_sample_reflection_new(geometry, detector, .665975615037, .683012701892, .299950211252, NULL); hkl_sample_add_reflection(sample, ref); /* correct the last reflection so the sample affinement must be ok. */ ok(TRUE == hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 45., 45., 45., 60.), __func__); hkl_sample_reflection_geometry_set(ref, geometry); ok(TRUE == hkl_sample_affine(sample, NULL), __func__); hkl_lattice_get(hkl_sample_lattice_get(sample), &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_DEFAULT); is_matrix(m_ref, hkl_sample_U_get(sample), __func__); is_double(1.54, a, HKL_EPSILON, __func__); is_double(1.54, b, HKL_EPSILON, __func__); is_double(1.54, c, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, alpha, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, beta, HKL_EPSILON, __func__); is_double(90 * HKL_DEGTORAD, gamma, HKL_EPSILON, __func__); CHECK_UX_UY_UZ(sample, 0., 0., 0.); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); hkl_matrix_free(m_ref); } int main(void) { plan(114); new(); add_reflection(); get_reflection(); del_reflection(); set_ux_uy_uz(); set_UB(); compute_UB_busing_levy(); affine(); get_reflections_xxx_angle(); reflection_set_geometry(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c0000664000175000017500000000604314677222567021713 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include "hkl/ccan/generator/generator.h" #include "hkl-geometry-private.h" #include "hkl-trajectory-private.h" /* tests */ static void stability(void) { int res = TRUE; HklGeometryList *solutions; struct Sample gaas = { .name = "GaAs", .lattice = Cubic(5.6533), .ux = -90.003382 * HKL_DEGTORAD, .uy = 0.12907 * HKL_DEGTORAD, .uz = -159.91372 * HKL_DEGTORAD, }; Geometry gconfig = \ SoleilSiriusKappa(1.458637, VALUES(-0.5193202, 64.7853160, 133.5621380, -80.9690000, -0.0223369, 30.0000299)); Geometry gconfig2 = \ SoleilSiriusKappa(1.458637, VALUES(-0.5193202, 64.7853160, 133.5621380, 124.9690000, -0.0223369, 30.0000299)); Mode mode = ModeHklBissectorVertical(); /* move between each step */ struct Trajectory tconfig1 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 11, mode); solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); struct Trajectory tconfig2 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 101, mode); solutions = Trajectory_solve(tconfig2, gconfig, gaas, TRUE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig2, gaas, TRUE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); /* do not move between each steps */ solutions = Trajectory_solve(tconfig1, gconfig, gaas, FALSE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig1, gconfig, gaas, FALSE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig, gaas, FALSE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig2, gaas, FALSE); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); ok(res == TRUE, __func__); } int main(void) { plan(1); stability(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-t.c0000664000175000017500000004316215062214312015775 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include "hkl.h" #include #include #define DEBUG typedef int (* test_func) (HklEngine *engine, HklEngineList *engine_list, unsigned int n); static int __test(unsigned int nb_iter, test_func f, int foreach_mode) { HklFactory **factories; size_t i, j, n; HklGeometry *geometry = NULL; HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); struct Sample cu = CU; HklSample *sample = newSample(cu); HklEngineList *engines; int res = TRUE; const char **mode; factories = hkl_factory_get_all(&n); for(i=0; i geometry */ if(HKL_ENGINE_CAPABILITIES_INITIALIZABLE & hkl_engine_capabilities_get(engine)) res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); res &= DIAG(hkl_engine_pseudo_axis_values_get(engine, currents, n_pseudo_axes, HKL_UNIT_DEFAULT, NULL)); /* idem with error management */ error = NULL; res &= DIAG(hkl_engine_pseudo_axis_values_get(engine, currents, n_pseudo_axes, HKL_UNIT_DEFAULT, &error)); res &= DIAG(NULL == error); for(i=0; i geometry */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, &error)); /* geometry -> pseudo */ solutions = hkl_engine_pseudo_axis_values_set(engine, targets, n_pseudo_axes, HKL_UNIT_DEFAULT, &error); if(solutions) { const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, solutions){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(hkl_engine_pseudo_axis_values_get(engine, currents, n_pseudo_axes, HKL_UNIT_DEFAULT, &error)); for(j=0; j 1) n = atoi(argv[1]); else n = 10; factories(); parameters(); get(); set(n); pseudo_axis_get(); capabilities(); initialized(); modes(); axis_names(); mode_parameters(); depends(); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-k6c-t.c0000664000175000017500000001746014677222567016506 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include static void degenerated(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double hkl[] = {0, 1, 0}; Geometry gconf = K6c(1.54, VALUES(0., 0., 0., 0., 0., 0.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ const darray_string *parameters; HklGeometryList *geometries; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); if (!strcasecmp(*mode, "constant_chi_vertical")){ size_t n_params = darray_size(*parameters); double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } if (!strcasecmp(*mode, "constant_incidence")){ size_t n_params = darray_size(*parameters); double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[3] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if (geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, ARRAY_SIZE(hkl))); } hkl_geometry_list_free(geometries); } } ok(res == TRUE, "degenerated"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void eulerians(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; const HklGeometryListItem *item; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = K6c(1.54, VALUES(0., 0., 0., 0., 0., 0.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "eulerians", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ const darray_string *parameters; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if (n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_set_values_v(engine, 0., 90. * HKL_DEGTORAD, 0.); if (geometries) { res &= DIAG(hkl_geometry_list_n_items_get(geometries) == 2); /* first solution = -180, -90, 180 */ item = hkl_geometry_list_items_first_get(geometries); hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, -180. * HKL_DEGTORAD, -90. * HKL_DEGTORAD, 180. * HKL_DEGTORAD)); /* second solution = 0, 90, 0 */ item = hkl_geometry_list_items_next_get(geometries, item); hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, 0., 90. * HKL_DEGTORAD, 0.)); /* no more solution */ res &= DIAG(hkl_geometry_list_items_next_get(geometries, item) == NULL); hkl_geometry_list_free(geometries); } } ok(res == TRUE, "eulerians"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void q2(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = K6c(1.54, VALUES(0., 30., 0., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "q2", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double q, alpha; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(q=0.1; q<1.; q += 0.1) for(alpha = -M_PI; alpha. * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include static void degenerated(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double hkl[] = {0, 1, 0}; Geometry gconf = K4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes) { const darray_string *parameters; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if(n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if (geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, 3)); } hkl_geometry_list_free(geometries); } } ok(res == TRUE, "degenerated"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void eulerians(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double eulerians[] = {0., 90 * HKL_DEGTORAD, 0.}; Geometry gconf = K4cv(1.54, VALUES(0., 0., 0., 0.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "eulerians", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ const darray_string *parameters; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if(n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, eulerians, ARRAY_SIZE(eulerians), HKL_UNIT_DEFAULT, NULL); if (geometries) { const HklGeometryListItem *item; /* first solution = -180, -90, 180 */ item = hkl_geometry_list_items_first_get(geometries); hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, -180. * HKL_DEGTORAD, -90 * HKL_DEGTORAD, 180. * HKL_DEGTORAD)); /* second solution = 0, 90, 0 */ item = hkl_geometry_list_items_next_get(geometries,item); hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, 0., 90 * HKL_DEGTORAD, 0.)); /* no more solution */ res &= DIAG(hkl_geometry_list_items_next_get(geometries, item) == NULL); hkl_geometry_list_free(geometries); } } ok(res == TRUE, "eulerians"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void q(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = K4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "q", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.)); res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double q; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(q=-1.; q<1.; q += 0.1){ HklGeometryList *geometries = NULL; geometries = hkl_engine_set_values_v(engine, q, NULL); if(NULL != geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, q)); } hkl_geometry_list_free(geometries); } } } ok(res == TRUE, "q"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } int main(void) { plan(3); degenerated(); eulerians(); q(); return 0; } hkl-5.1.7/tests/hkl-bench-t.c0000664000175000017500000001343714677222567014720 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include "hkl.h" static void hkl_test_bench_run_real(HklEngine *engine, HklGeometry *geometry, size_t n_values, double values[n_values], size_t n) { size_t i; const darray_string *modes = hkl_engine_modes_names_get(engine); const char **mode; /* pseudo -> geometry */ darray_foreach(mode, *modes){ double min, max, mean; const darray_string *parameters; size_t n_params; if (FALSE == hkl_engine_current_mode_set(engine, *mode, NULL)) continue; parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if (n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); values[0] = 1; if(FALSE == hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)) continue; } mean = max = 0; min = 1000; /* arbitrary value always greater than the real min */ for(i=0; i max ? t : max; mean += t; } fprintf(stdout, "\"%s\" \"%s\" \"%s\" (%zd/%zd) iterations %f / %f / %f [min/mean/max] ms each\n", hkl_geometry_name_get(geometry), hkl_engine_name_get(engine), *mode, n, i, min, mean/n, max); } } static void hkl_test_bench_run_v(HklEngineList *engines, HklGeometry *geometry, char const *name, int n, size_t n_values, ...) { va_list ap; size_t i; HklEngine *engine = hkl_engine_list_engine_get_by_name(engines, name, NULL); double values[n_values]; va_start(ap, n_values); for(i=0; i 1) n = atoi(argv[1]); else n = 10; hkl_test_bench_k6c(n); hkl_test_bench_eulerians(); ok(TRUE == TRUE, __func__); return 0; } hkl-5.1.7/tests/hkl-pseudoaxis-e4cv-t.c0000664000175000017500000002540414677222567016661 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include static void getter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* geometry -> pseudo */ res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 0., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., 0., 1.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 90., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., -90., 60.)); res &= DIAG(check_pseudoaxes_v(engine, -1., 0., 0.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 30., 0., 180., 60.)); res &= DIAG(check_pseudoaxes_v(engine, 0., 0., -1.)); res &= DIAG(hkl_geometry_set_values_v(geometry, HKL_UNIT_USER, NULL, 45., 0., 135., 90.)); res &= DIAG(check_pseudoaxes_v(engine, 1., 0., -1.)); ok(res == TRUE, "getter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void degenerated(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const char **mode; const darray_string *modes; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ static double values[] = {0, 0, 1}; HklGeometryList *geometries; size_t n_params; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); const darray_string *parameters = hkl_engine_parameters_names_get(engine); n_params = darray_size(*parameters); if (n_params){ double params[n_params]; hkl_engine_parameters_values_get(engine, params, n_params, HKL_UNIT_DEFAULT); params[0] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, params, n_params, HKL_UNIT_DEFAULT, NULL)); } /* studdy this degenerated case */ geometries = hkl_engine_pseudo_axis_values_set(engine, values, 3, HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, values, ARRAY_SIZE(values))); } hkl_geometry_list_free(geometries); } } ok(res == TRUE, "degenerated"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void psi_getter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklDetector *detector; HklSample *sample; double hkl[3]; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "psi", NULL); /* the getter part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); /* 1 0 0 */ hkl[0] = 1, hkl[1] = 0, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 0.)); /* 0 1 0*/ hkl[0] = 0, hkl[1] = 1, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 90. * HKL_DEGTORAD)); /* here Q and _ref are colinear must FAIL */ hkl[0] = 0, hkl[1] = 0, hkl[2] = 1; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(!check_pseudoaxes_v(engine, 0. * HKL_DEGTORAD)); /* -1 0 0 */ hkl[0] = -1, hkl[1] = 0, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, 180. * HKL_DEGTORAD)); /* 0 -1 0 */ hkl[0] = 0, hkl[1] = -1, hkl[2] = 0; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(check_pseudoaxes_v(engine, -90. * HKL_DEGTORAD)); /* Q and _ref are colinear so must FAIL */ hkl[0] = 0, hkl[1] = 0, hkl[2] = -1; res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(!check_pseudoaxes_v(engine, 0. * HKL_DEGTORAD)); ok(res == TRUE, "psi getter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void psi_setter(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 0, 0}; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "psi", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_parameters_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double psi; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(psi=-180 * HKL_DEGTORAD;psi<180 * HKL_DEGTORAD;psi += HKL_DEGTORAD){ HklGeometryList *geometries; geometries = hkl_engine_pseudo_axis_values_set(engine, &psi, 1, HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes_v(engine, psi)); } hkl_geometry_list_free(geometries); } } } ok(res == TRUE, "psi setter"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void q(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; const darray_string *modes; const char **mode; HklGeometry *geometry; HklDetector *detector; HklSample *sample; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "q", NULL); modes = hkl_engine_modes_names_get(engine); /* the init part */ res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); darray_foreach(mode, *modes){ double q; res &= DIAG(hkl_engine_current_mode_set(engine, *mode, NULL)); for(q=-1.; q<1.; q += 0.1){ HklGeometryList *geometries; geometries = hkl_engine_pseudo_axis_values_set(engine, &q, 1, HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, &q, 1)); } hkl_geometry_list_free(geometries); } } } ok(res == TRUE, "q"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } static void hkl_psi_constant_vertical(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 0, 1}; static double hkl2[] = {1, 1, 0}; Geometry gconf = E4cv(1.54, VALUES(30., 0., 0., 60.)); struct Sample cu = CU; geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(cu); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); res &= DIAG(hkl_engine_current_mode_set(engine, "psi_constant", NULL)); /* the init part */ res &= DIAG(hkl_engine_parameters_values_set(engine, hkl2, ARRAY_SIZE(hkl2), HKL_UNIT_DEFAULT, NULL)); res &= DIAG(hkl_engine_initialized_set(engine, TRUE, NULL)); geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if(geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, ARRAY_SIZE(hkl))); } hkl_geometry_list_free(geometries); } ok(res == TRUE, "psi constant vertical"); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); } int main(void) { plan(6); getter(); degenerated(); psi_getter(); psi_setter(); q(); hkl_psi_constant_vertical(); return 0; } hkl-5.1.7/tests/hkl-lattice-t.c0000664000175000017500000002543114677222567015263 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2023, 2024 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #define CHECK_PARAM(_lattice, _param, _value) \ is_double((_value), \ hkl_parameter_value_get(hkl_lattice_## _param ##_get(_lattice), \ HKL_UNIT_DEFAULT), \ HKL_EPSILON, __func__); #define CHECK_LATTICE(_lattice, _a, _b, _c, _alpha, _beta, _gamma) do { \ CHECK_PARAM(_lattice, a, _a); \ CHECK_PARAM(_lattice, b, _b); \ CHECK_PARAM(_lattice, c, _c); \ CHECK_PARAM(_lattice, alpha, _alpha); \ CHECK_PARAM(_lattice, beta, _beta); \ CHECK_PARAM(_lattice, gamma, _gamma); \ }while(0); #define SET_PARAM(_lattice, _param, _value) do { \ GError *error; \ HklParameter *p = hkl_parameter_new_copy(hkl_lattice_ ## _param ## _get(_lattice)); \ ok(hkl_parameter_value_set(p, _value, HKL_UNIT_DEFAULT, NULL), __func__); \ ok(TRUE == hkl_lattice_ ## _param ## _set(_lattice, p, NULL), __func__); \ error = NULL; \ ok(TRUE == hkl_lattice_ ## _param ## _set(_lattice, p, &error), __func__); \ ok(error == NULL, __func__); \ hkl_parameter_free(p); \ }while(0); #define SET_LATTICE(_lattice, _a, _b, _c, _alpha, _beta, _gamma) do{ \ SET_PARAM(_lattice, a, _a); \ SET_PARAM(_lattice, b, _b); \ SET_PARAM(_lattice, c, _c); \ SET_PARAM(_lattice, alpha, _alpha); \ SET_PARAM(_lattice, beta, _beta); \ SET_PARAM(_lattice, gamma, _gamma); \ }while(0); static void new(void) { HklLattice *lattice; GError *error; /* can not set this lattice */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 10*HKL_DEGTORAD, 120*HKL_DEGTORAD, NULL); ok(NULL == lattice, __func__); /* check GError generation */ error = NULL; lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 10*HKL_DEGTORAD, 120*HKL_DEGTORAD, &error); ok(NULL == lattice, __func__); ok(error != NULL, __func__); g_clear_error(&error); /* check GError generation */ error = NULL; lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, (90+360)*HKL_DEGTORAD, 90*HKL_DEGTORAD, &error); ok(NULL == lattice, __func__); ok(error != NULL, __func__); g_clear_error(&error); /* but can create this one */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, NULL); ok(0 == !lattice, __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); hkl_lattice_free(lattice); /* but can create this one and no GError are produce */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, &error); ok(0 == !lattice, __func__); ok(error == NULL, __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); hkl_lattice_free(lattice); } static void new_copy(void) { HklLattice *lattice; HklLattice *copy; lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, NULL); /* copy constructor */ copy = hkl_lattice_new_copy(lattice); CHECK_LATTICE(copy, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); hkl_lattice_free(lattice); hkl_lattice_free(copy); } static void set(void) { HklLattice *lattice; GError *error; lattice = hkl_lattice_new_default(); /* can not set this lattice */ ok(FALSE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 10*HKL_DEGTORAD, 120*HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); /* check that the lattice was not changed */ CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* can not set this lattice with GError */ error = NULL; ok(FALSE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 10*HKL_DEGTORAD, 120*HKL_DEGTORAD, HKL_UNIT_DEFAULT, &error), __func__); ok(error != NULL, __func__); g_clear_error(&error); /* can set this lattice */ ok(TRUE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 92*HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 92*HKL_DEGTORAD); /* can set this lattice with no GError set */ ok(TRUE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 90*HKL_DEGTORAD, HKL_UNIT_DEFAULT, &error), __func__); ok(error == NULL, __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* can set this lattice in HKL_UNIT_USER with no GError set */ ok(TRUE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90, 91, 92, HKL_UNIT_USER, NULL), __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 92*HKL_DEGTORAD); /* can set this lattice in HKL_UNIT_USER with no GError set */ ok(TRUE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90, 91, 90, HKL_UNIT_USER, &error), __func__); ok(error == NULL, __func__); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* check individual accessor */ SET_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91 * HKL_DEGTORAD, 91 * HKL_DEGTORAD); CHECK_LATTICE(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91 * HKL_DEGTORAD, 91 * HKL_DEGTORAD); hkl_lattice_free(lattice); } static void reciprocal(void) { HklLattice *lattice; HklLattice *reciprocal; lattice = hkl_lattice_new_default(); reciprocal = hkl_lattice_new_default(); /* cubic */ ok(TRUE == hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU / 1.54, HKL_TAU / 1.54, HKL_TAU / 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* orthorombic */ ok(TRUE == hkl_lattice_set(lattice, 1., 3., 4., 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU / 1., HKL_TAU / 3., HKL_TAU / 4., 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* hexagonal1 */ ok(TRUE == hkl_lattice_set(lattice, 1., 2., 1., 90 * HKL_DEGTORAD, 120 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU * 2. / sqrt(3.), HKL_TAU / 2., HKL_TAU * 2. / sqrt(3.), 90. * HKL_DEGTORAD, 60. * HKL_DEGTORAD, 90. * HKL_DEGTORAD); /* hexagonal2 */ ok(TRUE == hkl_lattice_set(lattice, 2., 1., 1., 120 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU / 2., HKL_TAU * 2. / sqrt(3.), HKL_TAU * 2. / sqrt(3.), 60. * HKL_DEGTORAD, 90. * HKL_DEGTORAD, 90. * HKL_DEGTORAD); /* triclinic1 */ ok(TRUE == hkl_lattice_set(lattice, 9.32, 8.24, 13.78, 91.23 * HKL_DEGTORAD, 93.64 * HKL_DEGTORAD, 122.21 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU * 0.1273130168,HKL_TAU * 0.1437422974,HKL_TAU * 0.0728721120, 1.5052513337, 1.482101482, 1.0055896011); /* triclinic2 */ ok(TRUE == hkl_lattice_set(lattice, 18.423, 18.417, 18.457, 89.99 * HKL_DEGTORAD, 89.963 * HKL_DEGTORAD, 119.99 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_lattice_reciprocal(lattice, reciprocal), __func__); CHECK_LATTICE(reciprocal, HKL_TAU * 0.0626708259,HKL_TAU * 0.0626912310,HKL_TAU * 0.0541800061, 1.5713705262, 1.5716426508, 1.0473718249); hkl_lattice_free(lattice); hkl_lattice_free(reciprocal); } static void volume(void) { HklLattice *lattice; HklLattice *reciprocal; lattice = hkl_lattice_new_default(); reciprocal = hkl_lattice_new_default(); /* cubic */ (DIAG(hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL))); CHECK_PARAM(lattice, volume, 1.54*1.54*1.54); hkl_lattice_reciprocal(lattice, reciprocal); CHECK_PARAM(reciprocal, volume, (HKL_TAU * HKL_TAU * HKL_TAU)/(1.54*1.54*1.54)); hkl_lattice_free(lattice); hkl_lattice_free(reciprocal); } static void get_B(void) { HklMatrix *B_ref = hkl_matrix_new_full(HKL_TAU / 1.54, 0, 0, 0, HKL_TAU / 1.54, 0, 0, 0, HKL_TAU / 1.54); HklLattice *lattice; HklMatrix *B = hkl_matrix_new(); /* cubic */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, NULL); hkl_lattice_get_B(lattice, B); is_matrix(B_ref, B, __func__); hkl_lattice_free(lattice); hkl_matrix_free(B); hkl_matrix_free(B_ref); } static void get_1_B(void) { HklMatrix *I_ref = hkl_matrix_new_full(1, 0, 0, 0, 1, 0, 0, 0, 1); HklLattice *lattice; HklMatrix *I = hkl_matrix_new(); HklMatrix *B_1 = hkl_matrix_new(); /* cubic */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, NULL); hkl_lattice_get_B(lattice, I); hkl_lattice_get_1_B(lattice, B_1); /* B times B^-1 = Identity */ hkl_matrix_times_matrix(I, B_1); is_matrix(I_ref, I, __func__); hkl_lattice_free(lattice); hkl_matrix_free(B_1); hkl_matrix_free(I); hkl_matrix_free(I_ref); } int main(void) { plan(147); new(); new_copy(); set(); reciprocal(); volume(); get_B(); get_1_B(); return 0; } hkl-5.1.7/tests/bindings/0000775000175000017500000000000015144640566014236 5ustar00piccapiccahkl-5.1.7/tests/bindings/sample1.txt0000664000175000017500000000111414677222567016345 0ustar00piccapiccaCreated at 2022-10-07 11:51 DiffractometerType E6C Crystal sample1 Wavelength 1.7770422817830014 A 5.0 B 5.0 C 5.0 Alpha 90.0 Beta 90.0 Gamma 90.0 R0 0 0.0 1.0 0.0 0 1 0.0 10.23607 90.0 0.0 0.0 20.47213 R1 1 1.0 0.0 0.0 0 1 0.0 100.23607 90.0 0.0 0.0 20.47213 Engine hkl Mode constant_phi_vertical PsiRef not available in current engine mode AutoEnergyUpdate 0 U00 1.257 U01 0.000 U02 -0.000 U10 -0.000 U11 1.257 U12 -0.000 U20 -0.000 U21 0.000 U22 1.257 Ux 1.0124021018228465e-14 Uy -8.834875001314751e-22 Uz -4.999999996768621e-06 SaveDirectory /home/p09user/crystals hkl-5.1.7/tests/bindings/python.py0000775000175000017500000003656414677222567016161 0ustar00piccapicca#!/usr/bin/env python3 """ This file is part of the hkl library. The hkl library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The hkl library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the hkl library. If not, see . Copyright (C) 2012-2013, 2023, 2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX Authors: Picca Frédéric-Emmanuel """ import math import unittest from gi.repository import GLib import gi gi.require_version("Hkl", "5.0") from gi.repository import Hkl class TestAPI(unittest.TestCase): """Test all the Hkl API, if something brakes here it means that API has changed !!! """ def test_defines(self): self.assertTrue((type(Hkl.VERSION)) == str) def test_vector_api(self): """ enforce the Vector api """ v = Hkl.Vector() self.assertTrue(type(v) == Hkl.Vector) self.assertTrue(type(v.data) == list) self.assertTrue(3 == len(v.data)) self.assertTrue(v.data == [0.0, 0.0, 0.0]) v.init(1, 2, 3) self.assertTrue(v.data == [1.0, 2.0, 3.0]) del v def test_quaternion_api(self): """ enforce the Vector api """ q = Hkl.Quaternion() self.assertTrue(type(q) == Hkl.Quaternion) self.assertTrue(type(q.data) == list) self.assertTrue(4 == len(q.data)) del q def test_factory_api(self): """ enforce the Factory API """ # factories dict factories = Hkl.factories() for key, factory in factories.items(): self.assertTrue(type(key) == str) self.assertTrue(type(factory) == Hkl.Factory) # create all the geometry and engines geometry = factory.create_new_geometry() self.assertTrue(type(geometry) == Hkl.Geometry) engines = factory.create_new_engine_list() self.assertTrue(type(engines) == Hkl.EngineList) del factories def test_detector_api(self): """ enforce the detector API """ # create an 0D HklDetector detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) self.assertTrue(type(detector) is Hkl.Detector) del detector def test_geometry_api(self): """ enforce the geometry API """ # get the config for a given geometry and create the # corresponding HklGeometry factory = Hkl.factories()["K6C"] geometry = factory.create_new_geometry() detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) sample = Hkl.Sample.new("toto") # source access wavelength = 1.0 geometry.wavelength_set(wavelength, Hkl.UnitEnum.USER) self.assertTrue(wavelength == geometry.wavelength_get(Hkl.UnitEnum.USER)) # noqa # set the geometry axes values values_w = [0, 30, 0, 0, 0, 60] geometry.axis_values_set(values_w, Hkl.UnitEnum.USER) values_r = geometry.axis_values_get(Hkl.UnitEnum.USER) # check that the read and write values of the geometry are # almost equals for r, w in zip(values_w, values_r): self.assertAlmostEqual(r, w) # check that we can access the axes axis_names = geometry.axis_names_get() for name in axis_names: axis = geometry.axis_get(name) axis.min_max_set(0, math.radians(180), Hkl.UnitEnum.USER) v = axis.axis_v_get() q = axis.quaternion_get() geometry.axis_set(name, axis) # check xxx_rotation_get q = geometry.sample_rotation_get(sample) m = q.to_matrix() self.assertTrue(type(m) == Hkl.Matrix) self.assertTrue(type(q) == Hkl.Quaternion) q = geometry.detector_rotation_get(detector) m = q.to_matrix() self.assertTrue(type(m) == Hkl.Matrix) self.assertTrue(type(q) == Hkl.Quaternion) # check ki/kf _get ki = geometry.ki_get() self.assertTrue(type(ki) == Hkl.Vector) kf = geometry.kf_get(detector) self.assertTrue(type(kf) == Hkl.Vector) del sample del detector del geometry def test_engine_api(self): """ enforce the HklEngine API """ detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) factory = Hkl.factories()["K6C"] geometry = factory.create_new_geometry() values_w = [0.0, 30.0, 0.0, 0.0, 0.0, 60.0] geometry.axis_values_set(values_w, Hkl.UnitEnum.USER) sample = Hkl.Sample.new("toto") lattice = sample.lattice_get() lattice.set(1.54, 1.54, 1.54, 90, 90, 90, Hkl.UnitEnum.USER) sample.lattice_set(lattice) # compute all the pseudo axes managed by all engines engines = factory.create_new_engine_list() engines.init(geometry, detector, sample) engines.get() # get the hkl engine and do a computation hkl = engines.engine_get_by_name("hkl") values = hkl.pseudo_axis_values_get(Hkl.UnitEnum.USER) # check for all modes for mode in hkl.modes_names_get(): self.assertTrue(type(mode) is str) # set the hkl engine and get the results for _ in range(100): try: solutions = hkl.pseudo_axis_values_set(values, Hkl.UnitEnum.USER) self.assertTrue(type(solutions) is Hkl.GeometryList) for item in solutions.items(): self.assertTrue(type(item) is Hkl.GeometryListItem) self.assertTrue(type(item.geometry_get()) is Hkl.Geometry) values[1] += 0.01 except GLib.GError as err: print(values, err) # check that all the values computed are reachable for engine in engines.engines_get(): self.assertTrue(type(engine) is Hkl.Engine) self.assertTrue(type(engine.name_get()) is str) self.assertTrue(type(engine.pseudo_axis_names_get()) is list) self.assertTrue(type(engine.modes_names_get()) is list) self.assertTrue(len(engine.modes_names_get())) for mode in engine.modes_names_get(): self.assertTrue(type(mode) is str) values = engine.pseudo_axis_values_get(Hkl.UnitEnum.USER) self.assertTrue(type(values) is list) for value in values: self.assertTrue(type(value) is float) # check that all engine parameters and axes are reachables for engine in engines.engines_get(): for mode in engine.modes_names_get(): engine.current_mode_set(mode) parameters = engine.parameters_names_get() self.assertTrue(type(parameters) is list) [self.assertTrue(type(_) is str) for _ in parameters] # all together values = engine.parameters_values_get(Hkl.UnitEnum.USER) [self.assertTrue(type(_) is float) for _ in values] engine.parameters_values_set(values, Hkl.UnitEnum.USER) # one by one for parameter in parameters: p = engine.parameter_get(parameter) self.assertTrue(type(p.description_get()) is str) # check that parameters are writable. values = engine.parameters_values_get(Hkl.UnitEnum.USER) values = [1.0] * len(values) engine.parameters_values_set(values, Hkl.UnitEnum.USER) [ self.assertTrue(ref == v) for ref, v in zip( values, engine.parameters_values_get(Hkl.UnitEnum.USER) ) ] axes_r = engine.axis_names_get(Hkl.EngineAxisNamesGet.READ) self.assertTrue(type(axes_r) is list) [self.assertTrue(type(_) is str) for _ in axes_r] axes_w = engine.axis_names_get(Hkl.EngineAxisNamesGet.WRITE) self.assertTrue(type(axes_w) is list) [self.assertTrue(type(_) is str) for _ in axes_w] # check all the capabilities for engine in engines.engines_get(): capabilities = engine.capabilities_get() self.assertTrue(capabilities & Hkl.EngineCapabilities.READABLE) if engine.name_get() not in ["incidence", "emergence"]: self.assertTrue(capabilities & Hkl.EngineCapabilities.WRITABLE) if engine.name_get() == "psi": self.assertTrue(capabilities & Hkl.EngineCapabilities.INITIALIZABLE) # check initialized_get/set for engine in engines.engines_get(): initialized = engine.initialized_get() capabilities = engine.capabilities_get() if capabilities & Hkl.EngineCapabilities.INITIALIZABLE: engine.initialized_set(False) self.assertTrue(False == engine.initialized_get()) engine.initialized_set(True) self.assertTrue(True == engine.initialized_get()) # check all the dependencies for engine in engines.engines_get(): dependencies = engine.dependencies_get() self.assertTrue(dependencies & Hkl.EngineDependencies.AXES) def test_engine_list_api(self): factories = Hkl.factories() for key, factory in factories.items(): # print("diffractometer geometry factory = " + str(key)) engines = factory.create_new_engine_list() # check the parameters names = engines.parameters_names_get() self.assertTrue(type(names) is list) [self.assertTrue(type(_) is str) for _ in names] # get/set the parameters for name in names: p = engines.parameter_get(name) self.assertTrue(type(p) is Hkl.Parameter) engines.parameter_set(name, p) # check that we can get/set the parameters values values = engines.parameters_values_get(Hkl.UnitEnum.USER) [self.assertTrue(type(_) is float) for _ in values] engines.parameters_values_set(values, Hkl.UnitEnum.USER) @unittest.skip("for testing figures") def test_doc_example(self): # execfile("../../Documentation/sphinx/source/bindings/python.py") execfile("../../Documentation/sphinx/source/pyplots/trajectory_simple.py") execfile("../../Documentation/sphinx/source/pyplots/trajectory_full.py") self.assertTrue(False) def test_lattice_api(self): lattice = Hkl.Lattice.new( 1.54, 1.54, 1.54, math.radians(90.0), math.radians(90.0), math.radians(90.0) ) lattice2 = lattice.copy() # check all the accessors a = lattice.a_get() b = lattice.b_get() c = lattice.c_get() alpha = lattice.alpha_get() beta = lattice.beta_get() gamma = lattice.gamma_get() lattice.a_set(a) lattice.b_set(b) lattice.c_set(c) lattice.alpha_set(alpha) lattice.beta_set(beta) lattice.gamma_set(gamma) # change the lattice parameter by expanding the tuple from # the get method. the lattice should not change. a, b, c, alpha, beta, gamma = lattice.get(Hkl.UnitEnum.DEFAULT) lattice.set(a, b, c, alpha, beta, gamma, Hkl.UnitEnum.DEFAULT) # now change the lattice parameter lattice.set(1, 2, 3, 90, 90, 90, Hkl.UnitEnum.USER) # this new lattice is different from the one in the sample self.assertTrue( lattice.get(Hkl.UnitEnum.DEFAULT) != lattice2.get(Hkl.UnitEnum.DEFAULT) ) del lattice2 del lattice def test_sample_api(self): """ enforce the HklSample API """ # create a sample sample = Hkl.Sample.new("toto") self.assertTrue(sample.name_get() == "toto") # check that the copy constructor is working copy = sample.copy() self.assertTrue(copy.name_get() == sample.name_get()) # we can change the name of the copy without affecting the original copy.name_set("titi") self.assertTrue(copy.name_get() != sample.name_get()) # set the lattice parameters lattice = Hkl.Lattice.new( 1.54, 1.54, 1.54, math.radians(90.0), math.radians(90.0), math.radians(90.0) ) sample.lattice_set(lattice) # change the lattice parameter by expanding the tuple from # the get method. the lattice should not change. a, b, c, alpha, beta, gamma = lattice.get(Hkl.UnitEnum.DEFAULT) lattice.set(a, b, c, alpha, beta, gamma, Hkl.UnitEnum.DEFAULT) # this new lattice is identical to the one from the sample v = lattice.get(Hkl.UnitEnum.DEFAULT) self.assertTrue(v == sample.lattice_get().get(Hkl.UnitEnum.DEFAULT)) # now change the lattice parameter lattice.set(1, 2, 3, 90, 90, 90, Hkl.UnitEnum.USER) # this new lattice is different from the one in the sample v = lattice.get(Hkl.UnitEnum.DEFAULT) self.assertTrue(v != sample.lattice_get().get(Hkl.UnitEnum.DEFAULT)) # gives access to the ux, uy, uz part ux = sample.ux_get() uy = sample.uy_get() uz = sample.uz_get() sample.ux_set(ux) sample.uy_set(uy) sample.uz_set(uz) # read and write the U matrix U = sample.U_get() UB = sample.UB_get() sample.UB_set(UB) # get the reciprocal lattice reciprocal = lattice.copy() lattice.reciprocal(reciprocal) # get the lattice volume lattice.volume_get() del sample del lattice def test_reflection_api(self): detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) factory = Hkl.factories()["K6C"] geometry = factory.create_new_geometry() values_w = [0.0, 30.0, 0.0, 0.0, 0.0, 60.0] geometry.axis_values_set(values_w, Hkl.UnitEnum.USER) sample = Hkl.Sample.new("toto") # add reflection r1 = sample.add_reflection(geometry, detector, 1, 1, 1) r2 = sample.add_reflection(geometry, detector, 1, 1, 1) # get the hkl part self.assertTrue(r2.hkl_get() == (1.0, 1.0, 1.0)) r2.hkl_set(1, 0, 1) self.assertTrue(r2.hkl_get() == (1.0, 0.0, 1.0)) # get the flag part flag = r1.flag_get() r1.flag_set(flag) # get the geometry part g = r1.geometry_get() r1.geometry_set(g) # compute the angles sample.get_reflection_measured_angle(r1, r2) sample.get_reflection_theoretical_angle(r1, r2) # remove all the reflections reflections = sample.reflections_get() for reflection in reflections: sample.del_reflection(reflection) del reflections del sample if __name__ == "__main__": unittest.main(verbosity=2) hkl-5.1.7/tests/bindings/crystal.ini0000664000175000017500000000110514677222567016424 0ustar00piccapiccaCreated at 2016-06-02 14:12 Crystal EuPtIn4_eh1_ver Wavelength 1.62751693358 A 4.542 B 16.955 C 7.389 Alpha 90.0 Beta 90.0 Gamma 90.0 R0 0 0.0 8.0 0.0 0 1 0.0 22.31594 89.1377 0.0 0.0 45.15857 R1 1 0.0 12.0 1.0 0 1 0.0 34.96232 78.3139 0.0 0.0 71.8007 Engine hkl Mode constant_phi_vertical PsiRef not available in current engine mode AutoEnergyUpdate 1 U00 1.381 U01 -0.002 U02 -0.054 U10 0.005 U11 0.371 U12 -0.013 U20 0.087 U21 0.006 U22 0.849 Ux 0.878929693221 Uy -3.6132870009 Uz 0.263869539307 SaveDirectory /home/p09user/crystals/ hkl-5.1.7/tests/bindings/trajectory.py0000775000175000017500000001057014677222567017013 0ustar00piccapicca#!/usr/bin/env python3 import math import numpy import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages from matplotlib import rcParams from gi.repository import GLib import gi gi.require_version("Hkl", "5.0") from gi.repository import Hkl def compute_hkl_trajectories(engines, engine, hkl1=None, hkl2=None, n=100): """ compute all the trajectories for a given engine already configured """ if not hkl1: hkl1 = [0, 0, 1] if not hkl2: hkl2 = [0, 1, 1] h = numpy.linspace(hkl1[0], hkl2[0], n + 1) k = numpy.linspace(hkl1[1], hkl2[1], n + 1) l = numpy.linspace(hkl1[2], hkl2[2], n + 1) # set the hkl engine and get the results trajectories = [] for hh, kk, ll in zip(h, k, l): try: solutions = engine.pseudo_axis_values_set([hh, kk, ll], Hkl.UnitEnum.USER) first_solution = solutions.items()[0] for i, item in enumerate(solutions.items()): try: trajectories[i] except IndexError: trajectories.append([]) values = item.geometry_get().axis_values_get(Hkl.UnitEnum.USER) trajectories[i].append(values) engines.select_solution(first_solution) except GLib.GError as err: pass return trajectories def _plot_legend(axes): plt.subplot(3, 4, 1) plt.title("legend") print("legende", 1) for name in axes: plt.plot([0, 0], label=name) plt.legend() def plot_hkl_trajectory(filename, geometry, engines, hkl1=None, hkl2=None, n=100): """ plot the trajectory for a engine. It is possible to limit the number of trajectory using the max_traj keyword """ axis_names = geometry.axis_names_get() hkl = engines.engine_get_by_name("hkl") page = 1 plt.clf() plt.suptitle( '"' + filename + '" ' + repr(hkl1) + " -> " + repr(hkl2) + " page " + str(page) ) _plot_legend(axis_names) idx = 2 for mode in hkl.modes_names_get(): hkl.current_mode_set(mode) trajectories = compute_hkl_trajectories(engines, hkl, hkl1=hkl1, hkl2=hkl2, n=n) print('"' + filename + '"', idx, mode, len(trajectories)) plt.subplot(3, 4, idx) plt.title(mode) if not len(trajectories): plt.text( 0.5, 0.5, "Failed", size=20, rotation=0.0, ha="center", va="center", bbox=dict( boxstyle="round", ec=(1.0, 0.5, 0.5), fc=(1.0, 0.8, 0.8), ), ) plt.draw() else: plt.ylim(-180, 180) if len(trajectories[0]) == 1: plt.plot(trajectories[0], "o-") else: plt.plot(trajectories[0], "-") idx += 1 if idx > 12: pp.savefig() plt.clf() page += 1 _plot_legend(axis_names) plt.suptitle( filename + " " + repr(hkl1) + " -> " + repr(hkl2) + " page " + str(page) ) idx = 2 pp.savefig() pp = PdfPages("trajectories.pdf") rcParams["font.size"] = 6 def main(): sample = Hkl.Sample.new("toto") lattice = Hkl.Lattice.new( 1.54, 1.54, 1.54, math.radians(90.0), math.radians(90.0), math.radians(90.0) ) sample.lattice_set(lattice) detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) for key, factory in Hkl.factories().items(): geometry = factory.create_new_geometry() engines = factory.create_new_engine_list() # here we set the detector arm with only positiv values for # now tth or delta arm for axis in geometry.axis_names_get(): if axis in ["tth", "delta"]: tmp = geometry.axis_get(axis) tmp.min_max_set(0, 180.0, Hkl.UnitEnum.USER) geometry.axis_set(axis, tmp) engines.init(geometry, detector, sample) engines_names = [engine.name_get() for engine in engines.engines_get()] if "hkl" in engines_names: plot_hkl_trajectory( key, geometry, engines, hkl1=[0, 0, 1], hkl2=[0, 1, 1], n=100 ) pp.close() if __name__ == "__main__": main() hkl-5.1.7/tests/bindings/polarisation.py0000775000175000017500000004477514677222567017347 0ustar00piccapicca#!/usr/bin/env python3 from typing import List, NamedTuple import os import math import unittest from gi.repository import GLib import gi gi.require_version("Hkl", "5.0") from gi.repository import Hkl from numpy import array, cross, dot, empty, hstack, reshape, vstack from numpy.linalg import inv, norm from numpy.testing import assert_almost_equal ######### # Types # ######### class Lattice(NamedTuple): a: float b: float c: float alpha: float beta: float gamma: float class Reflection(NamedTuple): hkl: List[float] values: List[float] class Sample(NamedTuple): lattice: Lattice or0: Reflection or1: Reflection ux: float uy: float uz: float class Detector(NamedTuple): type: str class Source(NamedTuple): wavelength: float energy: float class Engine(NamedTuple): name: str mode: str class Diffractometer(NamedTuple): dtype: str sample: Sample detector: Detector source: Source engine: Engine class HklDiffractometer(NamedTuple): sample: Hkl.Sample detector: Hkl.Detector geometry: Hkl.Geometry engines: Hkl.EngineList ################## # Helper methods # ################## def hkl_matrix_to_numpy(m): M = empty((3, 3)) for i in range(3): for j in range(3): M[i, j] = m.get(i, j) return M def from_numpy_to_hkl_vector(v): V = Hkl.Vector() V.init(v[0], v[1], v[2]) return V ######################### # Hkl Type constructors # ######################### def new_hkl_sample(config): # sample sample = Hkl.Sample.new("test") lattice = Hkl.Lattice.new( config.lattice.a, config.lattice.b, config.lattice.c, math.radians(config.lattice.alpha), math.radians(config.lattice.beta), math.radians(config.lattice.gamma), ) sample.lattice_set(lattice) parameter = sample.ux_get() parameter.value_set(config.ux, Hkl.UnitEnum.USER) sample.ux_set(parameter) parameter = sample.uy_get() parameter.value_set(config.uy, Hkl.UnitEnum.USER) sample.uy_set(parameter) parameter = sample.uz_get() parameter.value_set(config.uz, Hkl.UnitEnum.USER) sample.uz_set(parameter) return sample def new_hkl_detector(config): return Hkl.Detector.factory_new(config.type) def new_hkl_geometry(dtype, wavelength, init_values): factory = Hkl.factories()[dtype] geometry = factory.create_new_geometry() geometry.axis_values_set(init_values, Hkl.UnitEnum.USER) geometry.wavelength_set(wavelength, Hkl.UnitEnum.USER) return geometry def new_hkl_engines(dtype): factory = Hkl.factories()[dtype] engines = factory.create_new_engine_list() return engines def new_hkl_diffractometer(config): sample = new_hkl_sample(config.sample) detector = new_hkl_detector(config.detector) # add reflection or0 geometry = new_hkl_geometry( config.dtype, config.source.wavelength, config.sample.or0.values ) or0 = sample.add_reflection( geometry, detector, config.sample.or0.hkl[0], config.sample.or0.hkl[1], config.sample.or0.hkl[2], ) # add reflection or1 geometry.axis_values_set(config.sample.or1.values, Hkl.UnitEnum.USER) or1 = sample.add_reflection( geometry, detector, config.sample.or1.hkl[0], config.sample.or1.hkl[1], config.sample.or1.hkl[2], ) # compute UB with or0 and or1 # sample.compute_UB_busing_levy(or0, or1) # UB = hkl_matrix_to_numpy(sample.UB_get()) # compute angles for reciprocal lattice vector h, k, l engines = new_hkl_engines(config.dtype) # set the engine mode engine = engines.engine_get_by_name(config.engine.name) engine.current_mode_set(config.engine.mode) return HklDiffractometer(sample, detector, geometry, engines) ################# # Config parser # ################# def find(filename): if os.path.exists(filename): return filename else: datadir = os.getenv("DATADIR") if datadir: filename = os.path.join(datadir, filename) if os.path.exists(filename): return filename else: raise Exception("Can not find: " + filename) else: raise Exception("Cannot find: " + filename) def parse_reflection(line): ref = line.split() hkl = [float(x) for x in ref[2:5]] angles = [float(x) for x in ref[7:13]] return Reflection(hkl, angles) def parse(filename, dtype): with open(filename) as f: for line in f: if str(line).find("Wavelength") != -1: wavelength = float(line.split()[1]) energy = 12.39842 / wavelength if ( str(line).find("A") != -1 and str(line).find("B") != -1 and str(line).find("C") != -1 ): abc = line.split() a = float(abc[1]) b = float(abc[3]) c = float(abc[5]) if ( str(line).find("Alpha") != -1 and str(line).find("Beta") != -1 and str(line).find("Gamma") != -1 ): abg = line.split() alpha = float(abg[1]) beta = float(abg[3]) gamma = float(abg[5]) if str(line).find("R0") != -1: or0 = parse_reflection(line) if str(line).find("R1") != -1: or1 = parse_reflection(line) if ( str(line).find("Ux") != -1 and str(line).find("Uy") != -1 and str(line).find("Uz") != -1 ): uxuyuz = line.split() ux = float(uxuyuz[1]) uy = float(uxuyuz[3]) uz = float(uxuyuz[5]) if str(line).find("Engine") != -1: engine_name = line.split()[1] if str(line).find("Mode") != -1: mode_name = line.split()[1] lattice = Lattice(a, b, c, alpha, beta, gamma) sample = Sample(lattice, or0, or1, ux, uy, uz) detector = Detector(0) source = Source(wavelength, energy) engine = Engine(engine_name, mode_name) return Diffractometer(dtype, sample, detector, source, engine) ###################### # hight level method # ###################### def ca(config, hkl, engine_name="hkl"): sample, detector, geometry, engines = new_hkl_diffractometer(config) engines.init(geometry, detector, sample) engine = engines.engine_get_by_name(engine_name) solutions = engine.pseudo_axis_values_set(hkl, Hkl.UnitEnum.USER) first_solution = solutions.items()[0] values = first_solution.geometry_get().axis_values_get(Hkl.UnitEnum.USER) return Reflection(hkl, values) def get_UB(config): sample, detector, geometry, engines = new_hkl_diffractometer(config) return hkl_matrix_to_numpy(sample.UB_get()) def get_R_and_P(config, values): sample, detector, geometry, engines = new_hkl_diffractometer(config) geometry.axis_values_set(values, Hkl.UnitEnum.USER) R = hkl_matrix_to_numpy(geometry.sample_rotation_get(sample).to_matrix()) P = hkl_matrix_to_numpy(geometry.detector_rotation_get(detector).to_matrix()) return R, P def get_kinc_kscat(config, values): sample, detector, geometry, engines = new_hkl_diffractometer(config) geometry.axis_values_set(values, Hkl.UnitEnum.USER) R = hkl_matrix_to_numpy(geometry.sample_rotation_get(sample).to_matrix()) UB = hkl_matrix_to_numpy(sample.UB_get()) RUB = dot(R, UB) RUB_1 = inv(RUB) ki = geometry.ki_get() kinc = dot(RUB_1, ki.data) kf = geometry.kf_get(detector) kscat = dot(RUB_1, kf.data) return kinc, kscat def get_kinc_kscat_v2(config, values): sample, detector, geometry, engines = new_hkl_diffractometer(config) geometry.axis_values_set(values, Hkl.UnitEnum.USER) kinc = geometry.ki_abc_get(sample).data kscat = geometry.kf_abc_get(detector, sample).data return kinc, kscat ############## # Unit tests # ############## class Polarisation(unittest.TestCase): def test_petraIII(self): dtype = "E6C" # RUBh = kf - ki = (P ki - ki) = (P - I) ki config = parse(find("crystal.ini"), dtype) print(config) gaga = ca(config, [0.5, 14.5, 0.43]) print(gaga) UB = get_UB(config) print("UB: ") print(UB) # the hkl vectors a*, b*, c* expressed in the laboratory basis for the current Q # transformation matrix T reciprocal space --> laboratory # values_w = [0, 34.16414, 79.52420, 0, 0, 38.29633] # values_w = [0, 35.06068, 80.78517, 0, 0, 43.91934] # values_w = [0, 36.45961, 81.75533, 0, 0, 49.7139] # values_w = [0, 38.24551, 82.52447, 0, 0, 55.68957] # values_w = [0, 40.34955, 83.14900, 0, 0, 61.86603] # values_w = [0, 42.73321, 83.66607, 0, 0, 68.27333] # values_w = [0, 45.37981, 84.10117, 0, 0, 74.95312] # values_w = [0, 48.29079, 84.47230, 0, 0, 81.96226] values_w = [ 0, 51.48568, 84.79259, 0, 0, 89.37964, ] # mu, omega, chi, phi, gamma, delta R, P = get_R_and_P(config, values_w) print("R: ") print(R) print("P: ") print(P) RUB = dot(R, UB) print("RUB: ") print(RUB) astar = dot(RUB, [1, 0, 0]) bstar = dot(RUB, [0, 1, 0]) cstar = dot(RUB, [0, 0, 1]) # transformation matrix: reciprocal space --> laboratory T = hstack( (reshape(astar, (3, 1)), reshape(bstar, (3, 1)), reshape(cstar, (3, 1))) ) Tbis = vstack( (reshape(astar, (1, 3)), reshape(bstar, (1, 3)), reshape(cstar, (1, 3))) ) # transformation matrix: laboratory --> reciprocal space Tinv = inv(T) print("") # print 'cstar in laboratory frame :',cstar # print 'cstar in laboratory frame from T:',dot(T, hkl) # print 'cstar in rec. space from Tinv :',dot(Tinv, dot(T, hkl)) # compute kf ki = array([1, 0, 0]) * math.pi * 2 / config.source.wavelength kf = dot(P, ki) # compute Q Q = kf - ki print("") print("Energy (keV):", config.source) print("Lattice parameters:", config.sample.lattice) print( "1st orienting reflection:", config.sample.or0.hkl, "with angles: ", config.sample.or0.values, ) print( "2nd orienting reflection:", config.sample.or1.hkl, "with angles: ", config.sample.or1.values, ) print("") print("UB matrix:") print(UB) print("") print("Transformation matrix T(reciprocal space)--> laboratory frame:") print( T, ) print("") print("") print("Transformation matrix T(laboratory frame)--> reciprocal space :") print(Tinv) # compute Q # hkl = [0.5, 6.5, 0.43] # hkl = [0.5, 7.5, 0.43] # hkl = [0.5, 8.5, 0.43] # hkl = [0.5, 9.5, 0.43] # hkl = [0.5, 10.5, 0.43] # hkl = [0.5, 11.5, 0.43] # hkl = [0.5, 12.5, 0.43] # hkl = [0.5, 13.5, 0.43] hkl = [0.5, 14.5, 0.43] """ print '' print 'Q in lab. frame from code :', dot(dot(R, UB), hkl), ', normalized:',(dot(dot(R, UB), hkl))/norm(dot(dot(R, UB), hkl)), ', norm:', norm(dot(dot(R, UB), hkl)) print 'Q in lab. frame from T :', dot(T, hkl), ', normalized:', (dot(T, hkl))/norm(dot(T, hkl)), ', norm:', norm(dot(T, hkl)) print 'Q in lab. frame from ki, kf :', Q, ', normalized:', Q/norm(Q),', norm:', norm(Q) print '' print 'Q in rec. space from Tinv of T :', dot(Tinv, dot(T, hkl)) print '' print 'difference factor:',(norm(dot(T, hkl)))/(norm(Q)) print '' print 'kf',kf,', norm:',norm(kf) print 'ki',ki,', norm:',norm(ki) """ print("") print("Q in rec. space from Tinv of T :", dot(Tinv, dot(T, hkl))) print("") # # compute u1, u2, u3 in reciprocal space coordinates # u1,u2,u3 in laboratory frame u1xyz = ki + kf u2xyz = cross(ki, kf) u3xyz = ki - kf # print '(u1,u2,u3) in laboratory frame:',u1xyz,u2xyz,u3xyz # u1,u2,u3 in reciprocal space u1 = dot(Tinv, u1xyz) / norm(dot(Tinv, u1xyz)) u2 = dot(Tinv, u2xyz) / norm(dot(Tinv, u2xyz)) u3 = dot(Tinv, u3xyz) / norm(dot(Tinv, u3xyz)) u1 = dot(Tinv, u1xyz) u2 = dot(Tinv, u2xyz) u3 = dot(Tinv, u3xyz) print("(u1,u2,u3) in reciprocal space from Tinv, unnormalized:", u1, u2, u3) print( "(u1,u2,u3) in reciprocal space from Tinv, normalized to 1:", dot(Tinv, u1xyz) / norm(dot(Tinv, u1xyz)), dot(Tinv, u2xyz) / norm(dot(Tinv, u2xyz)), dot(Tinv, u3xyz) / norm(dot(Tinv, u3xyz)), ) # print '(u1,u2,u3) in reciprocal space from Tinv:', \ # dot(Tinv, u1xyz), dot(Tinv, u2xyz), dot(Tinv, u3xyz) print("") # TRANSFORMATION MATRIX reciprocal lattice basis to u1 u2 u3 basis ABC = hstack( ( reshape([1, 0, 0], (3, 1)), reshape([0, 1, 0], (3, 1)), reshape([0, 0, 1], (3, 1)), ) ) U = hstack((reshape(u1, (3, 1)), reshape(u2, (3, 1)), reshape(u3, (3, 1)))) M = dot(ABC, inv(U)) print("Transformation matrix reciprocal lattice basis to u1 u2 u3 basis:") print(M) # keep in order to pass the test self.assertTrue(True) def test_petraIII_v2(self): dtype = "E6C" # RUBh = kf - ki = (P ki - ki) = (P - I) ki config = parse(find("sample1.txt"), dtype) print(config) ## Test: # The values obtained with the executable have been tested # using the crystal lattice and orientation given in file sample1.txt # for the following reflections [^1]: # Reflection: ( 0.0, 2.0, 0.0) # angles: 0.00000 20.81848 90.00000 0.00000 0.00000 41.63696 # kinc = ( 2.6300, -1.0000, 0.0000) # kscat = ( 2.6300, 1.0000, 0.0000) gaga = ca(config, [0.0, 2.0, 0.0]) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [2.6300, -1.0000, 0.0000], decimal=4) assert_almost_equal(kscat, [2.6300, 1.0000, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [2.6300, -1.0000, 0.0000], decimal=4) assert_almost_equal(kscat, [2.6300, 1.0000, 0.0000], decimal=4) # Reflection: ( 0.0, 3.0, 0.0) # angles: 0.00000 32.21601 90.00000 0.00000 0.00000 64.43202 # kinc = ( 2.3805, -1.5000, 0.0000) # kscat = ( 2.3805, 1.5000, 0.0000) gaga = ca(config, [0.0, 3.0, 0.0]) print(gaga) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [2.3805, -1.5000, 0.0000], decimal=4) assert_almost_equal(kscat, [2.3805, 1.5000, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [2.3805, -1.5000, 0.0000], decimal=4) assert_almost_equal(kscat, [2.3805, 1.5000, 0.0000], decimal=4) # Reflection: ( 0.0, 4.0, 0.0) # angles: 0.00000 45.30143 90.00000 0.00000 0.00000 90.60284 # kinc = ( 1.9791, -2.0000, 0.0000) # kscat = ( 1.9791, 2.0000, 0.0000) gaga = ca(config, [0.0, 4.0, 0.0]) print(gaga) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.9791, -2.0000, 0.0000], decimal=4) assert_almost_equal(kscat, [1.9791, 2.0000, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.9791, -2.0000, 0.0000], decimal=4) assert_almost_equal(kscat, [1.9791, 2.0000, 0.0000], decimal=4) # Reflection: ( 1.0, 3.0, 0.0) # angles: 0.00000 52.62572 90.00000 0.00000 0.00000 68.38154 # kinc = ( 1.7079, -2.2360, 0.0000) # kscat = ( 2.7079, 0.7640, 0.0000) gaga = ca(config, [1.0, 3.0, 0.0]) print(gaga) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.7079, -2.2360, 0.0000], decimal=4) assert_almost_equal(kscat, [2.7079, 0.7640, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.7079, -2.2360, 0.0000], decimal=4) assert_almost_equal(kscat, [2.7079, 0.7640, 0.0000], decimal=4) # Reflection: ( 1.0, 4.0, 0.0) # angles: 0.00000 61.14891 90.00000 0.00000 0.00000 94.22532 # kinc = ( 1.3577, -2.4644, 0.0000) # kscat = ( 2.3577, 1.5356, 0.0000) gaga = ca(config, [1.0, 4.0, 0.0]) print(gaga) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.3577, -2.4644, 0.0000], decimal=4) assert_almost_equal(kscat, [2.3577, 1.5356, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [1.3577, -2.4644, 0.0000], decimal=4) assert_almost_equal(kscat, [2.3577, 1.5356, 0.0000], decimal=4) # Reflection: ( 2.0, 3.0, 0.0) # angles: 0.00000 49.97822 90.00000 0.00000 0.00000 46.82633 # kinc = ( 0.7974, -2.6983, 0.0000) # kscat = ( 2.7974, 0.3017, 0.0000) gaga = ca(config, [2.0, 3.0, 0.0]) print(gaga) kinc, kscat = get_kinc_kscat(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [0.7974, -2.6983, 0.0000], decimal=4) assert_almost_equal(kscat, [2.7974, 0.3017, 0.0000], decimal=4) kinc, kscat = get_kinc_kscat_v2(config, gaga.values) print(kinc, kscat) assert_almost_equal(kinc, [0.7974, -2.6983, 0.0000], decimal=4) assert_almost_equal(kscat, [2.7974, 0.3017, 0.0000], decimal=4) self.assertTrue(True) if __name__ == "__main__": unittest.main(verbosity=2) hkl-5.1.7/tests/bindings/Makefile.in0000664000175000017500000007351315144640451016305 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/bindings ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer-defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/config/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ TESTS_ENVIRONMENT = env GI_TYPELIB_PATH=$(top_builddir)/hkl DATADIR=$(srcdir) $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la TESTS = python.py trajectory.py polarisation.py EXTRA_DIST = $(TESTS) crystal.ini sample1.txt CLEANFILES = trajectories.pdf all: all-am .SUFFIXES: .SUFFIXES: .log .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/bindings/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/bindings/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? python.py.log: python.py @p='python.py'; \ b='python.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) trajectory.py.log: trajectory.py @p='trajectory.py'; \ b='trajectory.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) polarisation.py.log: polarisation.py @p='polarisation.py'; \ b='polarisation.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-TESTS check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ uninstall uninstall-am .PRECIOUS: Makefile ipython: env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la ipython3 -i -c "from gi.repository import Hkl" gdb: env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la gdb python3 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/tests/bindings/Makefile.am0000664000175000017500000000104714677222567016303 0ustar00piccapiccaTESTS_ENVIRONMENT=env GI_TYPELIB_PATH=$(top_builddir)/hkl DATADIR=$(srcdir) $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la TESTS = python.py trajectory.py polarisation.py EXTRA_DIST = $(TESTS) crystal.ini sample1.txt ipython: env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la ipython3 -i -c "from gi.repository import Hkl" gdb: env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la gdb python3 CLEANFILES = trajectories.pdf hkl-5.1.7/tests/hkl3d-test-t.c0000664000175000017500000001064015133711150015013 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include "hkl3d-private.h" #include "tap/basic.h" #include "tap/hkl-tap.h" static void check_model_validity(Hkl3D *hkl3d) { int res; Hkl3DAxis **axis; res = TRUE; /* imported 1 config files with 7 Hkl3DObjects */ res &= DIAG(darray_size(hkl3d->config->models) == 1); Hkl3DModel *model = darray_item(hkl3d->config->models, 0); res &= DIAG(darray_size(model->objects) == 7); /* each moving Hkl3DAxis must have a size of 1 */ darray_foreach(axis, hkl3d->geometry->axes){ if (NULL != (*axis)->mparameter) res &= DIAG(darray_size((*axis)->objects) == 1); } ok(res == TRUE, "no identical objects"); } /* check the collision and that the right axes are colliding */ static void check_collision(Hkl3D *hkl3d) { char buffer[1000]; int res = TRUE; double values[] = {23, 0., 0., 0., 0., 0.}; Hkl3DAxis **axis; Hkl3DObject **object; /* check the collision and that the right axes are colliding */ res &= DIAG(hkl_geometry_axis_values_set(hkl3d->geometry->geometry, values, ARRAY_SIZE(values), HKL_UNIT_USER, NULL)); res &= DIAG(hkl3d_is_colliding(hkl3d) == TRUE); strcpy(buffer, ""); /* now check that only delta and mu are colliding */ darray_foreach(axis, hkl3d->geometry->axes){ darray_foreach(object, (*axis)->objects){ const char *name = (*axis)->node->mName.data; int is_colliding = (*object)->is_colliding == TRUE; if(is_colliding){ strcat(buffer, " "); strcat(buffer, name); } if(!strcmp(name, "mu") || !strcmp(name, "delta")){ res &= DIAG(is_colliding == TRUE); } else { res &= DIAG(is_colliding == FALSE); } } } ok(res == TRUE, "collision [%s]", buffer); } static void check_no_collision(Hkl3D *hkl3d) { int res = TRUE; double i; /* check that rotating around komega/kappa/kphi do not create collisison */ res &= DIAG(hkl_geometry_set_values_v(hkl3d->geometry->geometry, HKL_UNIT_USER, NULL, 0., 0., 0., 0., 0., 0.)); /* komega */ for(i=0; i<=360; i=i+10){ double values[] = {0., i, 0., 0., 0., 0.}; res &= DIAG(hkl_geometry_axis_values_set(hkl3d->geometry->geometry, values, ARRAY_SIZE(values), HKL_UNIT_USER, NULL)); res &= DIAG(hkl3d_is_colliding(hkl3d) == FALSE); } /* kappa */ for(i=0; i<=360; i=i+10){ double values[] = {0., 0., i, 0., 0., 0.}; res &= DIAG(hkl_geometry_axis_values_set(hkl3d->geometry->geometry, values, ARRAY_SIZE(values), HKL_UNIT_USER, NULL)); res &= DIAG(hkl3d_is_colliding(hkl3d) == FALSE); } /* kphi */ for(i=0; i<=360; i=i+10){ double values[] = {0., 0., 0., i, 0., 0.}; res &= DIAG(hkl_geometry_axis_values_set(hkl3d->geometry->geometry, values, ARRAY_SIZE(values), HKL_UNIT_USER, NULL)); res &= DIAG(hkl3d_is_colliding(hkl3d) == FALSE); } ok(res == TRUE, "no-collision"); } int main(void) { const char *model = "../data/" SOLEIL_DIFFABS_MODEL; char* filename; const HklFactory *factory; HklGeometry *geometry; Hkl3D *hkl3d; factory = hkl_factory_get_by_name("K6C", NULL); geometry = hkl_factory_create_new_geometry(factory); /* compute the filename of the diffractometer config file */ filename = test_file_path(model); if (NULL == filename) filename = strdup (model); hkl3d = hkl3d_new(filename, geometry); plan(3); check_model_validity(hkl3d); check_collision(hkl3d); check_no_collision(hkl3d); /* TODO add/remove object*/ hkl3d_free(hkl3d); test_file_path_free(filename); hkl_geometry_free(geometry); return 0; } hkl-5.1.7/tests/Makefile.in0000664000175000017500000015027115144640451014505 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_INTROSPECTION_TRUE@am__append_1 = bindings @BINOCULARS_TRUE@am__append_2 = hkl-binoculars-t @BINOCULARS_TRUE@am__append_3 = -I$(top_srcdir)/binoculars-ng/binoculars \ @BINOCULARS_TRUE@ $(OPENSSL_CFLAGS) @BINOCULARS_TRUE@am__append_4 = $(top_builddir)/binoculars-ng/binoculars/libhkl-binoculars.la \ @BINOCULARS_TRUE@ $(OPENSSL_LIBS) @HKL3D_TRUE@am__append_5 = hkl3d-test-t @HKL3D_TRUE@am__append_6 = -I$(top_srcdir)/hkl3d \ @HKL3D_TRUE@ $(G3D_CFLAGS) \ @HKL3D_TRUE@ $(BULLET_CFLAGS) @HKL3D_TRUE@am__append_7 = $(top_builddir)/hkl3d/libhkl3d.la \ @HKL3D_TRUE@ $(BULLET_LIBS) check_PROGRAMS = runtests$(EXEEXT) $(am__EXEEXT_3) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @BINOCULARS_TRUE@am__EXEEXT_1 = hkl-binoculars-t$(EXEEXT) @HKL3D_TRUE@am__EXEEXT_2 = hkl3d-test-t$(EXEEXT) am__EXEEXT_3 = hkl-unit-t$(EXEEXT) hkl-bench-t$(EXEEXT) \ hkl-axis-t$(EXEEXT) hkl-quaternion-t$(EXEEXT) \ hkl-interval-t$(EXEEXT) hkl-sample-t$(EXEEXT) \ hkl-lattice-t$(EXEEXT) hkl-source-t$(EXEEXT) \ hkl-detector-t$(EXEEXT) hkl-matrix-t$(EXEEXT) \ hkl-vector-t$(EXEEXT) hkl-geometry-t$(EXEEXT) \ hkl-parameter-t$(EXEEXT) hkl-pseudoaxis-t$(EXEEXT) \ hkl-pseudoaxis-e4cv-t$(EXEEXT) hkl-pseudoaxis-e4ch-t$(EXEEXT) \ hkl-pseudoaxis-e6c-t$(EXEEXT) hkl-pseudoaxis-k4cv-t$(EXEEXT) \ hkl-pseudoaxis-k6c-t$(EXEEXT) \ hkl-pseudoaxis-soleil-nanoscopium-robot-t$(EXEEXT) \ hkl-pseudoaxis-soleil-sirius-kappa-t$(EXEEXT) \ hkl-pseudoaxis-soleil-sixs-med-t$(EXEEXT) \ hkl-pseudoaxis-zaxis-t$(EXEEXT) $(am__EXEEXT_1) \ $(am__EXEEXT_2) hkl_axis_t_SOURCES = hkl-axis-t.c hkl_axis_t_OBJECTS = hkl-axis-t.$(OBJEXT) hkl_axis_t_LDADD = $(LDADD) am__DEPENDENCIES_1 = @BINOCULARS_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/binoculars-ng/binoculars/libhkl-binoculars.la \ @BINOCULARS_TRUE@ $(am__DEPENDENCIES_1) @HKL3D_TRUE@am__DEPENDENCIES_3 = $(top_builddir)/hkl3d/libhkl3d.la \ @HKL3D_TRUE@ $(am__DEPENDENCIES_1) hkl_axis_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = hkl_bench_t_SOURCES = hkl-bench-t.c hkl_bench_t_OBJECTS = hkl-bench-t.$(OBJEXT) hkl_bench_t_LDADD = $(LDADD) hkl_bench_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_binoculars_t_SOURCES = hkl-binoculars-t.c hkl_binoculars_t_OBJECTS = hkl-binoculars-t.$(OBJEXT) hkl_binoculars_t_LDADD = $(LDADD) hkl_binoculars_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_detector_t_SOURCES = hkl-detector-t.c hkl_detector_t_OBJECTS = hkl-detector-t.$(OBJEXT) hkl_detector_t_LDADD = $(LDADD) hkl_detector_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_geometry_t_SOURCES = hkl-geometry-t.c hkl_geometry_t_OBJECTS = hkl-geometry-t.$(OBJEXT) hkl_geometry_t_LDADD = $(LDADD) hkl_geometry_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_interval_t_SOURCES = hkl-interval-t.c hkl_interval_t_OBJECTS = hkl-interval-t.$(OBJEXT) hkl_interval_t_LDADD = $(LDADD) hkl_interval_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_lattice_t_SOURCES = hkl-lattice-t.c hkl_lattice_t_OBJECTS = hkl-lattice-t.$(OBJEXT) hkl_lattice_t_LDADD = $(LDADD) hkl_lattice_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_matrix_t_SOURCES = hkl-matrix-t.c hkl_matrix_t_OBJECTS = hkl-matrix-t.$(OBJEXT) hkl_matrix_t_LDADD = $(LDADD) hkl_matrix_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_parameter_t_SOURCES = hkl-parameter-t.c hkl_parameter_t_OBJECTS = hkl-parameter-t.$(OBJEXT) hkl_parameter_t_LDADD = $(LDADD) hkl_parameter_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_e4ch_t_SOURCES = hkl-pseudoaxis-e4ch-t.c hkl_pseudoaxis_e4ch_t_OBJECTS = hkl-pseudoaxis-e4ch-t.$(OBJEXT) hkl_pseudoaxis_e4ch_t_LDADD = $(LDADD) hkl_pseudoaxis_e4ch_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_e4cv_t_SOURCES = hkl-pseudoaxis-e4cv-t.c hkl_pseudoaxis_e4cv_t_OBJECTS = hkl-pseudoaxis-e4cv-t.$(OBJEXT) hkl_pseudoaxis_e4cv_t_LDADD = $(LDADD) hkl_pseudoaxis_e4cv_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_e6c_t_SOURCES = hkl-pseudoaxis-e6c-t.c hkl_pseudoaxis_e6c_t_OBJECTS = hkl-pseudoaxis-e6c-t.$(OBJEXT) hkl_pseudoaxis_e6c_t_LDADD = $(LDADD) hkl_pseudoaxis_e6c_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_k4cv_t_SOURCES = hkl-pseudoaxis-k4cv-t.c hkl_pseudoaxis_k4cv_t_OBJECTS = hkl-pseudoaxis-k4cv-t.$(OBJEXT) hkl_pseudoaxis_k4cv_t_LDADD = $(LDADD) hkl_pseudoaxis_k4cv_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_k6c_t_SOURCES = hkl-pseudoaxis-k6c-t.c hkl_pseudoaxis_k6c_t_OBJECTS = hkl-pseudoaxis-k6c-t.$(OBJEXT) hkl_pseudoaxis_k6c_t_LDADD = $(LDADD) hkl_pseudoaxis_k6c_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_soleil_nanoscopium_robot_t_SOURCES = \ hkl-pseudoaxis-soleil-nanoscopium-robot-t.c hkl_pseudoaxis_soleil_nanoscopium_robot_t_OBJECTS = \ hkl-pseudoaxis-soleil-nanoscopium-robot-t.$(OBJEXT) hkl_pseudoaxis_soleil_nanoscopium_robot_t_LDADD = $(LDADD) hkl_pseudoaxis_soleil_nanoscopium_robot_t_DEPENDENCIES = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_soleil_sirius_kappa_t_SOURCES = \ hkl-pseudoaxis-soleil-sirius-kappa-t.c hkl_pseudoaxis_soleil_sirius_kappa_t_OBJECTS = \ hkl-pseudoaxis-soleil-sirius-kappa-t.$(OBJEXT) hkl_pseudoaxis_soleil_sirius_kappa_t_LDADD = $(LDADD) hkl_pseudoaxis_soleil_sirius_kappa_t_DEPENDENCIES = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_soleil_sixs_med_t_SOURCES = \ hkl-pseudoaxis-soleil-sixs-med-t.c hkl_pseudoaxis_soleil_sixs_med_t_OBJECTS = \ hkl-pseudoaxis-soleil-sixs-med-t.$(OBJEXT) hkl_pseudoaxis_soleil_sixs_med_t_LDADD = $(LDADD) hkl_pseudoaxis_soleil_sixs_med_t_DEPENDENCIES = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_t_SOURCES = hkl-pseudoaxis-t.c hkl_pseudoaxis_t_OBJECTS = hkl-pseudoaxis-t.$(OBJEXT) hkl_pseudoaxis_t_LDADD = $(LDADD) hkl_pseudoaxis_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_pseudoaxis_zaxis_t_SOURCES = hkl-pseudoaxis-zaxis-t.c hkl_pseudoaxis_zaxis_t_OBJECTS = hkl-pseudoaxis-zaxis-t.$(OBJEXT) hkl_pseudoaxis_zaxis_t_LDADD = $(LDADD) hkl_pseudoaxis_zaxis_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_quaternion_t_SOURCES = hkl-quaternion-t.c hkl_quaternion_t_OBJECTS = hkl-quaternion-t.$(OBJEXT) hkl_quaternion_t_LDADD = $(LDADD) hkl_quaternion_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_sample_t_SOURCES = hkl-sample-t.c hkl_sample_t_OBJECTS = hkl-sample-t.$(OBJEXT) hkl_sample_t_LDADD = $(LDADD) hkl_sample_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_source_t_SOURCES = hkl-source-t.c hkl_source_t_OBJECTS = hkl-source-t.$(OBJEXT) hkl_source_t_LDADD = $(LDADD) hkl_source_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_unit_t_SOURCES = hkl-unit-t.c hkl_unit_t_OBJECTS = hkl-unit-t.$(OBJEXT) hkl_unit_t_LDADD = $(LDADD) hkl_unit_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl_vector_t_SOURCES = hkl-vector-t.c hkl_vector_t_OBJECTS = hkl-vector-t.$(OBJEXT) hkl_vector_t_LDADD = $(LDADD) hkl_vector_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hkl3d_test_t_SOURCES = hkl3d-test-t.c hkl3d_test_t_OBJECTS = hkl3d-test-t.$(OBJEXT) hkl3d_test_t_LDADD = $(LDADD) hkl3d_test_t_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) runtests_SOURCES = runtests.c runtests_OBJECTS = runtests.$(OBJEXT) runtests_LDADD = $(LDADD) runtests_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/dummy.Po ./$(DEPDIR)/hkl-axis-t.Po \ ./$(DEPDIR)/hkl-bench-t.Po ./$(DEPDIR)/hkl-binoculars-t.Po \ ./$(DEPDIR)/hkl-detector-t.Po ./$(DEPDIR)/hkl-geometry-t.Po \ ./$(DEPDIR)/hkl-interval-t.Po ./$(DEPDIR)/hkl-lattice-t.Po \ ./$(DEPDIR)/hkl-matrix-t.Po ./$(DEPDIR)/hkl-parameter-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-e4ch-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-e4cv-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-e6c-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-k4cv-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-k6c-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-soleil-nanoscopium-robot-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-soleil-sirius-kappa-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-soleil-sixs-med-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-t.Po \ ./$(DEPDIR)/hkl-pseudoaxis-zaxis-t.Po \ ./$(DEPDIR)/hkl-quaternion-t.Po ./$(DEPDIR)/hkl-sample-t.Po \ ./$(DEPDIR)/hkl-source-t.Po ./$(DEPDIR)/hkl-unit-t.Po \ ./$(DEPDIR)/hkl-vector-t.Po ./$(DEPDIR)/hkl3d-test-t.Po \ ./$(DEPDIR)/runtests.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = hkl-axis-t.c hkl-bench-t.c hkl-binoculars-t.c \ hkl-detector-t.c hkl-geometry-t.c hkl-interval-t.c \ hkl-lattice-t.c hkl-matrix-t.c hkl-parameter-t.c \ hkl-pseudoaxis-e4ch-t.c hkl-pseudoaxis-e4cv-t.c \ hkl-pseudoaxis-e6c-t.c hkl-pseudoaxis-k4cv-t.c \ hkl-pseudoaxis-k6c-t.c \ hkl-pseudoaxis-soleil-nanoscopium-robot-t.c \ hkl-pseudoaxis-soleil-sirius-kappa-t.c \ hkl-pseudoaxis-soleil-sixs-med-t.c hkl-pseudoaxis-t.c \ hkl-pseudoaxis-zaxis-t.c hkl-quaternion-t.c hkl-sample-t.c \ hkl-source-t.c hkl-unit-t.c hkl-vector-t.c \ $(nodist_EXTRA_hkl3d_test_t_SOURCES) hkl3d-test-t.c runtests.c DIST_SOURCES = hkl-axis-t.c hkl-bench-t.c hkl-binoculars-t.c \ hkl-detector-t.c hkl-geometry-t.c hkl-interval-t.c \ hkl-lattice-t.c hkl-matrix-t.c hkl-parameter-t.c \ hkl-pseudoaxis-e4ch-t.c hkl-pseudoaxis-e4cv-t.c \ hkl-pseudoaxis-e6c-t.c hkl-pseudoaxis-k4cv-t.c \ hkl-pseudoaxis-k6c-t.c \ hkl-pseudoaxis-soleil-nanoscopium-robot-t.c \ hkl-pseudoaxis-soleil-sirius-kappa-t.c \ hkl-pseudoaxis-soleil-sixs-med-t.c hkl-pseudoaxis-t.c \ hkl-pseudoaxis-zaxis-t.c hkl-quaternion-t.c hkl-sample-t.c \ hkl-source-t.c hkl-unit-t.c hkl-vector-t.c hkl3d-test-t.c \ runtests.c RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = tap . bindings am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = tap . $(am__append_1) all_tests = hkl-unit-t hkl-bench-t hkl-axis-t hkl-quaternion-t \ hkl-interval-t hkl-sample-t hkl-lattice-t hkl-source-t \ hkl-detector-t hkl-matrix-t hkl-vector-t hkl-geometry-t \ hkl-parameter-t hkl-pseudoaxis-t hkl-pseudoaxis-e4cv-t \ hkl-pseudoaxis-e4ch-t hkl-pseudoaxis-e6c-t \ hkl-pseudoaxis-k4cv-t hkl-pseudoaxis-k6c-t \ hkl-pseudoaxis-soleil-nanoscopium-robot-t \ hkl-pseudoaxis-soleil-sirius-kappa-t \ hkl-pseudoaxis-soleil-sixs-med-t hkl-pseudoaxis-zaxis-t \ $(am__append_2) $(am__append_5) AM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE -I$(top_srcdir) \ -I$(top_srcdir)/hkl -I$(top_srcdir)/tests $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) $(GOBJECT_CFLAGS) $(GSL_CFLAGS) $(am__append_3) \ $(am__append_6) AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a $(GLIB_LIBS) \ $(GOBJECT_LIBS) $(GSL_LIBS) $(am__append_4) $(am__append_7) # force linkage with g++ @HKL3D_TRUE@nodist_EXTRA_hkl3d_test_t_SOURCES = dummy.cxx all: all-recursive .SUFFIXES: .SUFFIXES: .c .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: $(am__rm_f) $(check_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(check_PROGRAMS:$(EXEEXT)=) hkl-axis-t$(EXEEXT): $(hkl_axis_t_OBJECTS) $(hkl_axis_t_DEPENDENCIES) $(EXTRA_hkl_axis_t_DEPENDENCIES) @rm -f hkl-axis-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_axis_t_OBJECTS) $(hkl_axis_t_LDADD) $(LIBS) hkl-bench-t$(EXEEXT): $(hkl_bench_t_OBJECTS) $(hkl_bench_t_DEPENDENCIES) $(EXTRA_hkl_bench_t_DEPENDENCIES) @rm -f hkl-bench-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_bench_t_OBJECTS) $(hkl_bench_t_LDADD) $(LIBS) hkl-binoculars-t$(EXEEXT): $(hkl_binoculars_t_OBJECTS) $(hkl_binoculars_t_DEPENDENCIES) $(EXTRA_hkl_binoculars_t_DEPENDENCIES) @rm -f hkl-binoculars-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_binoculars_t_OBJECTS) $(hkl_binoculars_t_LDADD) $(LIBS) hkl-detector-t$(EXEEXT): $(hkl_detector_t_OBJECTS) $(hkl_detector_t_DEPENDENCIES) $(EXTRA_hkl_detector_t_DEPENDENCIES) @rm -f hkl-detector-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_detector_t_OBJECTS) $(hkl_detector_t_LDADD) $(LIBS) hkl-geometry-t$(EXEEXT): $(hkl_geometry_t_OBJECTS) $(hkl_geometry_t_DEPENDENCIES) $(EXTRA_hkl_geometry_t_DEPENDENCIES) @rm -f hkl-geometry-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_geometry_t_OBJECTS) $(hkl_geometry_t_LDADD) $(LIBS) hkl-interval-t$(EXEEXT): $(hkl_interval_t_OBJECTS) $(hkl_interval_t_DEPENDENCIES) $(EXTRA_hkl_interval_t_DEPENDENCIES) @rm -f hkl-interval-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_interval_t_OBJECTS) $(hkl_interval_t_LDADD) $(LIBS) hkl-lattice-t$(EXEEXT): $(hkl_lattice_t_OBJECTS) $(hkl_lattice_t_DEPENDENCIES) $(EXTRA_hkl_lattice_t_DEPENDENCIES) @rm -f hkl-lattice-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_lattice_t_OBJECTS) $(hkl_lattice_t_LDADD) $(LIBS) hkl-matrix-t$(EXEEXT): $(hkl_matrix_t_OBJECTS) $(hkl_matrix_t_DEPENDENCIES) $(EXTRA_hkl_matrix_t_DEPENDENCIES) @rm -f hkl-matrix-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_matrix_t_OBJECTS) $(hkl_matrix_t_LDADD) $(LIBS) hkl-parameter-t$(EXEEXT): $(hkl_parameter_t_OBJECTS) $(hkl_parameter_t_DEPENDENCIES) $(EXTRA_hkl_parameter_t_DEPENDENCIES) @rm -f hkl-parameter-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_parameter_t_OBJECTS) $(hkl_parameter_t_LDADD) $(LIBS) hkl-pseudoaxis-e4ch-t$(EXEEXT): $(hkl_pseudoaxis_e4ch_t_OBJECTS) $(hkl_pseudoaxis_e4ch_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_e4ch_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-e4ch-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_e4ch_t_OBJECTS) $(hkl_pseudoaxis_e4ch_t_LDADD) $(LIBS) hkl-pseudoaxis-e4cv-t$(EXEEXT): $(hkl_pseudoaxis_e4cv_t_OBJECTS) $(hkl_pseudoaxis_e4cv_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_e4cv_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-e4cv-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_e4cv_t_OBJECTS) $(hkl_pseudoaxis_e4cv_t_LDADD) $(LIBS) hkl-pseudoaxis-e6c-t$(EXEEXT): $(hkl_pseudoaxis_e6c_t_OBJECTS) $(hkl_pseudoaxis_e6c_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_e6c_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-e6c-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_e6c_t_OBJECTS) $(hkl_pseudoaxis_e6c_t_LDADD) $(LIBS) hkl-pseudoaxis-k4cv-t$(EXEEXT): $(hkl_pseudoaxis_k4cv_t_OBJECTS) $(hkl_pseudoaxis_k4cv_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_k4cv_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-k4cv-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_k4cv_t_OBJECTS) $(hkl_pseudoaxis_k4cv_t_LDADD) $(LIBS) hkl-pseudoaxis-k6c-t$(EXEEXT): $(hkl_pseudoaxis_k6c_t_OBJECTS) $(hkl_pseudoaxis_k6c_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_k6c_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-k6c-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_k6c_t_OBJECTS) $(hkl_pseudoaxis_k6c_t_LDADD) $(LIBS) hkl-pseudoaxis-soleil-nanoscopium-robot-t$(EXEEXT): $(hkl_pseudoaxis_soleil_nanoscopium_robot_t_OBJECTS) $(hkl_pseudoaxis_soleil_nanoscopium_robot_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_soleil_nanoscopium_robot_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-soleil-nanoscopium-robot-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_soleil_nanoscopium_robot_t_OBJECTS) $(hkl_pseudoaxis_soleil_nanoscopium_robot_t_LDADD) $(LIBS) hkl-pseudoaxis-soleil-sirius-kappa-t$(EXEEXT): $(hkl_pseudoaxis_soleil_sirius_kappa_t_OBJECTS) $(hkl_pseudoaxis_soleil_sirius_kappa_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_soleil_sirius_kappa_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-soleil-sirius-kappa-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_soleil_sirius_kappa_t_OBJECTS) $(hkl_pseudoaxis_soleil_sirius_kappa_t_LDADD) $(LIBS) hkl-pseudoaxis-soleil-sixs-med-t$(EXEEXT): $(hkl_pseudoaxis_soleil_sixs_med_t_OBJECTS) $(hkl_pseudoaxis_soleil_sixs_med_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_soleil_sixs_med_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-soleil-sixs-med-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_soleil_sixs_med_t_OBJECTS) $(hkl_pseudoaxis_soleil_sixs_med_t_LDADD) $(LIBS) hkl-pseudoaxis-t$(EXEEXT): $(hkl_pseudoaxis_t_OBJECTS) $(hkl_pseudoaxis_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_t_OBJECTS) $(hkl_pseudoaxis_t_LDADD) $(LIBS) hkl-pseudoaxis-zaxis-t$(EXEEXT): $(hkl_pseudoaxis_zaxis_t_OBJECTS) $(hkl_pseudoaxis_zaxis_t_DEPENDENCIES) $(EXTRA_hkl_pseudoaxis_zaxis_t_DEPENDENCIES) @rm -f hkl-pseudoaxis-zaxis-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_pseudoaxis_zaxis_t_OBJECTS) $(hkl_pseudoaxis_zaxis_t_LDADD) $(LIBS) hkl-quaternion-t$(EXEEXT): $(hkl_quaternion_t_OBJECTS) $(hkl_quaternion_t_DEPENDENCIES) $(EXTRA_hkl_quaternion_t_DEPENDENCIES) @rm -f hkl-quaternion-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_quaternion_t_OBJECTS) $(hkl_quaternion_t_LDADD) $(LIBS) hkl-sample-t$(EXEEXT): $(hkl_sample_t_OBJECTS) $(hkl_sample_t_DEPENDENCIES) $(EXTRA_hkl_sample_t_DEPENDENCIES) @rm -f hkl-sample-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_sample_t_OBJECTS) $(hkl_sample_t_LDADD) $(LIBS) hkl-source-t$(EXEEXT): $(hkl_source_t_OBJECTS) $(hkl_source_t_DEPENDENCIES) $(EXTRA_hkl_source_t_DEPENDENCIES) @rm -f hkl-source-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_source_t_OBJECTS) $(hkl_source_t_LDADD) $(LIBS) hkl-unit-t$(EXEEXT): $(hkl_unit_t_OBJECTS) $(hkl_unit_t_DEPENDENCIES) $(EXTRA_hkl_unit_t_DEPENDENCIES) @rm -f hkl-unit-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_unit_t_OBJECTS) $(hkl_unit_t_LDADD) $(LIBS) hkl-vector-t$(EXEEXT): $(hkl_vector_t_OBJECTS) $(hkl_vector_t_DEPENDENCIES) $(EXTRA_hkl_vector_t_DEPENDENCIES) @rm -f hkl-vector-t$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_vector_t_OBJECTS) $(hkl_vector_t_LDADD) $(LIBS) hkl3d-test-t$(EXEEXT): $(hkl3d_test_t_OBJECTS) $(hkl3d_test_t_DEPENDENCIES) $(EXTRA_hkl3d_test_t_DEPENDENCIES) @rm -f hkl3d-test-t$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(hkl3d_test_t_OBJECTS) $(hkl3d_test_t_LDADD) $(LIBS) runtests$(EXEEXT): $(runtests_OBJECTS) $(runtests_DEPENDENCIES) $(EXTRA_runtests_DEPENDENCIES) @rm -f runtests$(EXEEXT) $(AM_V_CCLD)$(LINK) $(runtests_OBJECTS) $(runtests_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-axis-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-bench-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-detector-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-geometry-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-interval-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-lattice-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-matrix-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-parameter-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-e4ch-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-e4cv-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-e6c-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-k4cv-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-k6c-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-soleil-nanoscopium-robot-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-soleil-sirius-kappa-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-soleil-sixs-med-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-zaxis-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-quaternion-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-sample-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-source-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-unit-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-vector-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-test-t.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtests.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-local check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/dummy.Po -rm -f ./$(DEPDIR)/hkl-axis-t.Po -rm -f ./$(DEPDIR)/hkl-bench-t.Po -rm -f ./$(DEPDIR)/hkl-binoculars-t.Po -rm -f ./$(DEPDIR)/hkl-detector-t.Po -rm -f ./$(DEPDIR)/hkl-geometry-t.Po -rm -f ./$(DEPDIR)/hkl-interval-t.Po -rm -f ./$(DEPDIR)/hkl-lattice-t.Po -rm -f ./$(DEPDIR)/hkl-matrix-t.Po -rm -f ./$(DEPDIR)/hkl-parameter-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e4ch-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e4cv-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e6c-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-k4cv-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-k6c-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-nanoscopium-robot-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-sirius-kappa-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-sixs-med-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-zaxis-t.Po -rm -f ./$(DEPDIR)/hkl-quaternion-t.Po -rm -f ./$(DEPDIR)/hkl-sample-t.Po -rm -f ./$(DEPDIR)/hkl-source-t.Po -rm -f ./$(DEPDIR)/hkl-unit-t.Po -rm -f ./$(DEPDIR)/hkl-vector-t.Po -rm -f ./$(DEPDIR)/hkl3d-test-t.Po -rm -f ./$(DEPDIR)/runtests.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/dummy.Po -rm -f ./$(DEPDIR)/hkl-axis-t.Po -rm -f ./$(DEPDIR)/hkl-bench-t.Po -rm -f ./$(DEPDIR)/hkl-binoculars-t.Po -rm -f ./$(DEPDIR)/hkl-detector-t.Po -rm -f ./$(DEPDIR)/hkl-geometry-t.Po -rm -f ./$(DEPDIR)/hkl-interval-t.Po -rm -f ./$(DEPDIR)/hkl-lattice-t.Po -rm -f ./$(DEPDIR)/hkl-matrix-t.Po -rm -f ./$(DEPDIR)/hkl-parameter-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e4ch-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e4cv-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-e6c-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-k4cv-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-k6c-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-nanoscopium-robot-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-sirius-kappa-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-soleil-sixs-med-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-t.Po -rm -f ./$(DEPDIR)/hkl-pseudoaxis-zaxis-t.Po -rm -f ./$(DEPDIR)/hkl-quaternion-t.Po -rm -f ./$(DEPDIR)/hkl-sample-t.Po -rm -f ./$(DEPDIR)/hkl-source-t.Po -rm -f ./$(DEPDIR)/hkl-unit-t.Po -rm -f ./$(DEPDIR)/hkl-vector-t.Po -rm -f ./$(DEPDIR)/hkl3d-test-t.Po -rm -f ./$(DEPDIR)/runtests.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am check-local clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile check-local: $(check_PROGRAMS) ./runtests -v -s $(abs_srcdir) $(all_tests) valgrind: G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes .libs/hkl-bench-t # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax valgrind # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/tests/hkl-unit-t.c0000664000175000017500000000451714677222567014617 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #include "hkl-unit-private.h" static void compatible(void) { int res = TRUE; res &= DIAG(hkl_unit_compatible(&hkl_unit_angle_deg, &hkl_unit_angle_rad)); res &= DIAG(!hkl_unit_compatible(&hkl_unit_angle_deg, &hkl_unit_length_nm)); res &= DIAG(!hkl_unit_compatible(&hkl_unit_angle_rad, &hkl_unit_length_nm)); /* mrad */ res &= DIAG(hkl_unit_compatible(&hkl_unit_angle_mrad, &hkl_unit_angle_deg)); res &= DIAG(hkl_unit_compatible(&hkl_unit_angle_mrad, &hkl_unit_angle_rad)); res &= DIAG(hkl_unit_compatible(&hkl_unit_angle_deg, &hkl_unit_angle_mrad)); res &= DIAG(hkl_unit_compatible(&hkl_unit_angle_rad, &hkl_unit_angle_mrad)); res &= DIAG(!hkl_unit_compatible(&hkl_unit_angle_mrad, &hkl_unit_length_nm)); res &= DIAG(!hkl_unit_compatible(&hkl_unit_length_nm, &hkl_unit_angle_mrad)); res &= DIAG(hkl_unit_compatible(NULL, NULL)); ok(res == TRUE, __func__); } static void factor(void) { is_double(HKL_DEGTORAD, hkl_unit_factor(&hkl_unit_angle_deg, &hkl_unit_angle_rad), HKL_EPSILON, __func__); is_double(1e3, hkl_unit_factor(&hkl_unit_angle_rad, &hkl_unit_angle_mrad), HKL_EPSILON, __func__); is_double(1.0, hkl_unit_factor(&hkl_unit_angle_rad, &hkl_unit_angle_mrad) * hkl_unit_factor(&hkl_unit_angle_mrad, &hkl_unit_angle_rad), HKL_EPSILON, __func__); } int main(void) { plan(4); compatible(); factor(); return 0; } hkl-5.1.7/tests/Makefile.am0000664000175000017500000000365015133711150014463 0ustar00piccapiccaSUBDIRS = tap . if HAVE_INTROSPECTION SUBDIRS += bindings endif all_tests = \ hkl-unit-t \ hkl-bench-t \ hkl-axis-t \ hkl-quaternion-t \ hkl-interval-t \ hkl-sample-t \ hkl-lattice-t \ hkl-source-t \ hkl-detector-t \ hkl-matrix-t \ hkl-vector-t \ hkl-geometry-t \ hkl-parameter-t \ hkl-pseudoaxis-t \ hkl-pseudoaxis-e4cv-t \ hkl-pseudoaxis-e4ch-t \ hkl-pseudoaxis-e6c-t \ hkl-pseudoaxis-k4cv-t \ hkl-pseudoaxis-k6c-t \ hkl-pseudoaxis-soleil-nanoscopium-robot-t \ hkl-pseudoaxis-soleil-sirius-kappa-t \ hkl-pseudoaxis-soleil-sixs-med-t \ hkl-pseudoaxis-zaxis-t AM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -I$(top_srcdir)/tests \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GOBJECT_CFLAGS) \ $(GSL_CFLAGS) AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(top_builddir)/tests/tap/libtap.a \ $(GLIB_LIBS) \ $(GOBJECT_LIBS) \ $(GSL_LIBS) if BINOCULARS all_tests += hkl-binoculars-t AM_CPPFLAGS += -I$(top_srcdir)/binoculars-ng/binoculars \ $(OPENSSL_CFLAGS) LDADD += $(top_builddir)/binoculars-ng/binoculars/libhkl-binoculars.la \ $(OPENSSL_LIBS) endif if HKL3D all_tests += hkl3d-test-t # force linkage with g++ nodist_EXTRA_hkl3d_test_t_SOURCES = dummy.cxx AM_CPPFLAGS += -I$(top_srcdir)/hkl3d \ $(G3D_CFLAGS) \ $(BULLET_CFLAGS) LDADD += $(top_builddir)/hkl3d/libhkl3d.la \ $(BULLET_LIBS) endif check_PROGRAMS = runtests $(all_tests) ## tap tests check-local: $(check_PROGRAMS) ./runtests -v -s $(abs_srcdir) $(all_tests) valgrind: G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes .libs/hkl-bench-t # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax valgrind hkl-5.1.7/tests/hkl-pseudoaxis-zaxis-t.c0000664000175000017500000000467114677222567017161 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include static void solution(void) { int res = TRUE; HklEngineList *engines; HklEngine *engine; HklGeometry *geometry; HklGeometryList *geometries; HklDetector *detector; HklSample *sample; static double hkl[] = {1, 1, 0}; struct Sample sconf = { .name = "test", .lattice = Cubic(5.432), .ux = -90.0 * HKL_DEGTORAD, .uy = 0.0 * HKL_DEGTORAD, .uz = 0.0 * HKL_DEGTORAD, }; Geometry gconf = Zaxis(0.842, VALUES(1., 0., 0., 0.)); geometry = newGeometry(gconf); engines = newEngines(gconf); sample = newSample(sconf); /* use a 0D detector */ detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); /* select the hkl pseudo axis */ hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); /* compute the 1 1 0 */ geometries = hkl_engine_pseudo_axis_values_set(engine, hkl, ARRAY_SIZE(hkl), HKL_UNIT_DEFAULT, NULL); if (geometries){ const HklGeometryListItem *item; HKL_GEOMETRY_LIST_FOREACH(item, geometries){ hkl_geometry_set(geometry, hkl_geometry_list_item_geometry_get(item)); res &= DIAG(check_pseudoaxes(engine, hkl, 3)); } hkl_geometry_list_free(geometries); }else res = FALSE; if(!res) hkl_engine_fprintf(stdout, engine); hkl_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geometry); ok(res == TRUE, "solution"); } int main(void) { plan(1); solution(); return 0; } hkl-5.1.7/tests/hkl-matrix-t.c0000664000175000017500000001014514677222567015136 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include "hkl-vector-private.h" #include "hkl-matrix-private.h" /* we will check also the private API */ static void init(void) { HklMatrix m; hkl_matrix_init(&m, 1, 1, 0, 0, 1, 0, 0, 0, 1); is_double(1., m.data[0][0], HKL_EPSILON, __func__); is_double(1., m.data[0][1], HKL_EPSILON, __func__); is_double(0., m.data[0][2], HKL_EPSILON, __func__); is_double(0., m.data[1][0], HKL_EPSILON, __func__); is_double(1., m.data[1][1], HKL_EPSILON, __func__); is_double(0., m.data[1][2], HKL_EPSILON, __func__); is_double(0., m.data[2][0], HKL_EPSILON, __func__); is_double(0., m.data[2][1], HKL_EPSILON, __func__); is_double(1., m.data[2][2], HKL_EPSILON, __func__); } static void cmp(void) { HklMatrix m1 = {{{0.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HklMatrix m2 = {{{1.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; ok(TRUE == hkl_matrix_cmp(&m1, &m1), __func__); ok(FALSE == hkl_matrix_cmp(&m1, &m2), __func__); } static void dup(void) { HklMatrix m1 = {{{0.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HklMatrix *m; m = hkl_matrix_dup(&m1); ok(TRUE == hkl_matrix_cmp(&m1, m), __func__); hkl_matrix_free(m); } static void assignement(void) { HklMatrix m1 = {{{0.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HklMatrix m; m = m1; ok(TRUE == hkl_matrix_cmp(&m1, &m), __func__); } static void init_from_euler(void) { HklMatrix m_ref = {{{ 1./2., -1./2., sqrt(2)/2.}, { sqrt(2.)/4.+1./2., -sqrt(2.)/4.+1./2., -1./2.}, {-sqrt(2.)/4.+1./2., sqrt(2.)/4.+1./2., 1./2.}}}; HklMatrix m; hkl_matrix_init_from_euler(&m, 45.*HKL_DEGTORAD, 45.*HKL_DEGTORAD, 45.*HKL_DEGTORAD); ok(TRUE == hkl_matrix_cmp(&m_ref, &m), __func__); } static void init_from_two_vector(void) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{1.0, 2.0, 3.0}}; HklMatrix m_ref = {{{0.0, 5.0 / sqrt(30.0), -1.0 / sqrt(6.0)}, {1.0 / sqrt(5.0), 2.0 / sqrt(30.0), 2.0 / sqrt(6.0)}, {2.0 / sqrt(5.0),-1.0 / sqrt(30.0), -1.0 / sqrt(6.0)}} }; HklMatrix m; hkl_matrix_init_from_two_vector(&m, &v1, &v2); ok(TRUE == hkl_matrix_cmp(&m_ref, &m), __func__); } static void times_vector(void) { HklMatrix m = {{{ 1.0, 3.0,-2.0}, {10.0, 5.0, 5.0}, {-3.0, 2.0, 0.0}} }; HklVector v = {{1, 2, 3}}; HklVector v_ref = {{1, 35, 1}}; hkl_matrix_times_vector(&m, &v); ok(0 == hkl_vector_cmp(&v_ref, &v), __func__); } static void times_matrix(void) { HklMatrix m_ref = {{{37., 14., 13.}, {45., 65., 5.}, {17., 1., 16.}} }; HklMatrix m = {{{ 1., 3.,-2.}, {10., 5., 5.}, {-3., 2., 0.}} }; hkl_matrix_times_matrix(&m, &m); ok(TRUE == hkl_matrix_cmp(&m_ref, &m), __func__); } static void transpose(void) { HklMatrix m_ref = {{{37., 14., 13.}, {45., 65., 5.}, {17., 1., 16.}} }; HklMatrix m = {{{37., 45., 17.}, {14., 65., 1.}, {13., 5., 16.}} }; hkl_matrix_transpose(&m); ok(TRUE == hkl_matrix_cmp(&m_ref, &m), __func__); } int main(void) { plan(18); init(); cmp(); dup(); assignement(); init_from_euler(); init_from_two_vector(); times_vector(); times_matrix(); transpose(); return 0; } hkl-5.1.7/tests/hkl-interval-t.c0000664000175000017500000001574114677222567015465 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #define _GNU_SOURCE #include "hkl.h" #include #include #include "hkl-interval-private.h" static void cmp(void) { HklInterval interval_ref = {-1, 1}; HklInterval interval; interval = interval_ref; ok(FALSE == hkl_interval_cmp(&interval_ref, &interval), __func__); } static void plus_interval(void) { HklInterval i_ref = {-2, 8}; HklInterval i1 = {-1, 4}; HklInterval i2 = {-1, 4}; hkl_interval_plus_interval(&i1, &i2); ok(FALSE == hkl_interval_cmp(&i_ref, &i1), __func__); } static void plus_double(void) { HklInterval i_ref = {-1, 9}; HklInterval i1 = {-2, 8}; hkl_interval_plus_double(&i1, 1); ok(FALSE == hkl_interval_cmp(&i_ref, &i1), __func__); } static void times_interval(void) { HklInterval i_ref = {-9, 36}; HklInterval i1 = {-1, 9}; HklInterval i2 = {-1, 4}; hkl_interval_times_interval(&i1, &i2); ok(FALSE == hkl_interval_cmp(&i_ref, &i1), __func__); } static void times_double(void) { HklInterval i_ref = {-108, 27}; HklInterval i1 = {-9, 36}; hkl_interval_times_double(&i1, -3); ok(FALSE == hkl_interval_cmp(&i_ref, &i1), __func__); } static void divides_double(void) { HklInterval i_ref = {-9, 36}; HklInterval i1 = {-108, 27}; hkl_interval_divides_double(&i1, -3); ok(FALSE == hkl_interval_cmp(&i_ref, &i1), __func__); } static void contain_zero(void) { HklInterval i1 = {-9, 36}; HklInterval i2 = {-108, -27}; ok(TRUE == hkl_interval_contain_zero(&i1), __func__); ok(FALSE == hkl_interval_contain_zero(&i2), __func__); } static void cosinus(void) { /* we will test all 16 cases. */ /* we devide the trigonometric circle in 4 from quaters */ /* 0 [0, pi/2[ */ /* 1 [pi/2, pi[ */ /* 2 [pi, 3*pi/2[ */ /* 3 [3*pi/2, 2*pi[ */ HklInterval i_ref; HklInterval i; double min; double max; #define COS(a, b, min_ref, max_ref) do { \ i.min = min = a * HKL_DEGTORAD; \ i.max = max = b * HKL_DEGTORAD; \ i_ref.min = min_ref; \ i_ref.max = max_ref; \ hkl_interval_cos(&i); \ ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); \ } while(0) /* 1st max(0) */ /* min(0) */ COS(10, 14, cos(max), cos(min)); /* min(3) */ COS(-15, 14,cos(min), 1); /* min(2) */ COS(-95, 14, cos(min), 1); /* min(1) */ COS(-215, 14, -1, 1); /* 2nd max(1) */ /* min(0) */ COS(10, 100, cos(max), cos(min)); /* min(3) */ COS(-20, 100, cos(max), 1); /* min(2) */ COS(-110, 100, cos(min), 1); COS(-95, 100, cos(max), 1); /* min(1) */ COS(-190, 100,-1, 1); /* 3rd max(2) */ /* min(0) */ COS(10, 190, -1, cos(min)); /* min(3) */ COS(95, 190, -1, cos(min)); COS(175, 190, -1, cos(max)); /* min(2) */ COS(185, 190, cos(min), cos(max)); COS(-95, 190, -1, 1); /* min(1) */ COS(-45, 190, -1, 1); /* 4th max(3) */ /* min(0) */ COS(-350, -30, -1, cos(min)); COS(-310, -30, -1, cos(max)); /* min(3) */ COS(-40, -30, cos(min), cos(max)); COS(-370, -30, -1, 1); /* min(2) */ COS(-100, -30, cos(min), cos(max)); /* min(1) */ COS(-190, -30, -1, cos(max)); } static void acosinus(void) { HklInterval i_ref = {acos(.5), acos(-.5)}; HklInterval i = {-.5, .5}; hkl_interval_acos(&i); ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); } static void sinus(void) { /* we will test all 16 cases. */ /* we devide the trigonometric circle in 4 from quaters */ /* 0 [0, pi/2[ */ /* 1 [pi/2, pi[ */ /* 2 [pi, 3*pi/2[ */ /* 3 [3*pi/2, 2*pi[ */ HklInterval i_ref; HklInterval i; double min, max; #define SIN(a,b, min_ref, max_ref) do { \ i.min = min = a * HKL_DEGTORAD; \ i.max = max = b * HKL_DEGTORAD; \ i_ref.min = min_ref; \ i_ref.max = max_ref; \ hkl_interval_sin(&i); \ ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); \ } while(0) /* 1st max(0) */ /* min(0) */ SIN(10, 14,sin(min), sin(max)); SIN(-275, 14, -1, 1); /* min(3) */ SIN(-15, 14, sin(min), sin(max)); /* min(2) */ SIN(-95, 14, -1, sin(max)); /* min(1) */ SIN(-185, 14, -1, sin(max)); SIN(-215, 14, -1, sin(min)); /* 2nd max(1) */ /* min(0) */ SIN(10, 100, sin(min), 1); SIN(85, 100, sin(max), 1); /* min(3) */ SIN(-20, 100, sin(min), 1); /* min(2) */ SIN(-110, 100, -1, 1); /* min(1) */ SIN(-190, 100, -1, 1); SIN(95, 100, sin(max), sin(min)); /* 3rd max(2) */ /* min(0) */ SIN(10, 190, sin(max), 1); /* min(3) */ SIN(95, 190, sin(max), sin(min)); /* min(2) */ SIN(-95, 190, -1, 1); SIN(185, 190, sin(max), sin(min)); /* min(1) */ SIN(-5, 190, sin(max), 1); SIN(-45, 190, sin(min), 1); /* 4th max(3) */ /* min(0); */ SIN(-350, -30, -1, 1); /* min(3); */ SIN(-40, -30, sin(min), sin(max)); SIN(-370, -30, -1, 1); /* min(2); */ SIN(-100, -30, -1, sin(max)); SIN(-170, -30, -1, sin(min)); /* min(1); */ SIN(-190, -30, -1, sin(min)); } static void asinus(void) { HklInterval i_ref = {asin(-.5), asin(.5)}; HklInterval i = {-.5, .5}; hkl_interval_asin(&i); ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); } static void tangeante(void) { HklInterval i; HklInterval i_ref; double min, max; #define TAN(a,b, min_ref, max_ref) do { \ i.min = min = a * HKL_DEGTORAD; \ i.max = max = b * HKL_DEGTORAD; \ i_ref.min = min_ref; \ i_ref.max = max_ref; \ hkl_interval_tan(&i); \ ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); \ } while(0) TAN(-100, -89, -INFINITY, INFINITY); /* // The limit case is not yet ok TAN(-100, 11, 12, -90); r_ref.set(-hklconstantmathinfinity, tan(current), tan(consign), hklconstantmathinfinity); ok(r_ref, r); */ } static void atangeante(void) { HklInterval i_ref = {atan(-10.), atan(10)}; HklInterval i = {-10, 10}; hkl_interval_atan(&i); ok(FALSE == hkl_interval_cmp(&i_ref, &i), __func__); } static void length(void) { HklInterval interval; interval.min = 10; interval.max = 11; is_double(1., hkl_interval_length(&interval), HKL_EPSILON, __func__); interval.min = -11; interval.max = -10; is_double(1., hkl_interval_length(&interval), HKL_EPSILON, __func__); } int main(void) { plan(59); cmp(); plus_interval(); plus_double(); times_interval(); times_double(); divides_double(); contain_zero(); cosinus(); acosinus(); sinus(); asinus(); tangeante(); atangeante(); length(); return 0; } hkl-5.1.7/tests/tap/0000775000175000017500000000000015144640566013225 5ustar00piccapiccahkl-5.1.7/tests/tap/hkl-tap.c0000664000175000017500000001077514677222567014752 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2012 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "basic.h" #include "hkl-tap.h" #include "hkl/hkl-matrix-private.h" #include "hkl/hkl-macros-private.h" #include "hkl/hkl-pseudoaxis-private.h" void is_quaternion(const HklQuaternion *wanted, const HklQuaternion *seen, const char *format, ...) { va_list args; va_start(args, format); fflush(stderr); if(TRUE == hkl_quaternion_cmp(wanted, seen)) okv(1, format, args); else{ printf("# wanted: %g %g %g %g\n", wanted->data[0], wanted->data[1], wanted->data[2], wanted->data[3]); printf("# seen: %g %g %g %g\n", seen->data[0], seen->data[1], seen->data[2], wanted->data[3]); okv(0, format, args); } } void is_matrix(const HklMatrix *wanted, const HklMatrix *seen, const char *format, ...) { va_list args; va_start(args, format); fflush(stderr); if(TRUE == hkl_matrix_cmp(wanted, seen)) okv(1, format, args); else{ printf("# wanted: %g %g %g\n# : %g %g %g\n# : %g %g %g\n", wanted->data[0][0], wanted->data[0][1], wanted->data[0][2], wanted->data[1][0], wanted->data[1][1], wanted->data[1][2], wanted->data[2][0], wanted->data[2][1], wanted->data[2][2]); printf("# seen: %g %g %g\n# : %g %g %g\n# : %g %g %g\n", seen->data[0][0], seen->data[0][1], seen->data[0][2], seen->data[1][0], seen->data[1][1], seen->data[1][2], seen->data[2][0], seen->data[2][1], seen->data[2][2]); okv(0, format, args); } } int check_pseudoaxes_v(HklEngine *engine, ...) { uint i; va_list ap; unsigned int len = hkl_engine_len(engine); double values[len]; /* extract the variable part of the method */ va_start(ap, engine); for(i=0; ipseudo_axes, i); hkl_parameter_randomize(parameter); values[i] = hkl_parameter_value_get(parameter, unit_type); } } /** * hkl_tap_engine_parameters_randomize: (skip) * @self: the this ptr * * randomize all the parameters of the #HklEngine **/ void hkl_tap_engine_parameters_randomize(HklEngine *self) { HklParameter **parameter; darray_foreach(parameter, self->mode->parameters){ hkl_parameter_randomize(*parameter); } } hkl-5.1.7/tests/tap/basic.c0000664000175000017500000005500115116301227014436 0ustar00piccapicca/* * Some utility routines for writing tests. * * Here are a variety of utility routines for writing tests compatible with * the TAP protocol. All routines of the form ok() or is*() take a test * number and some number of appropriate arguments, check to be sure the * results match the expected output using the arguments, and print out * something appropriate for that test number. Other utility routines help in * constructing more complex tests, skipping tests, reporting errors, setting * up the TAP output format, or finding things in the test environment. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 * Russ Allbery * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #include #include #include #include #include #include #ifdef _WIN32 # include #else # include #endif #include #include #include /* Windows provides mkdir and rmdir under different names. */ #ifdef _WIN32 # define mkdir(p, m) _mkdir(p) # define rmdir(p) _rmdir(p) #endif /* * The test count. Always contains the number that will be used for the next * test status. This is exported to callers of the library. */ unsigned long testnum = 1; /* * Status information stored so that we can give a test summary at the end of * the test case. We store the planned final test and the count of failures. * We can get the highest test count from testnum. */ static unsigned long _planned = 0; static unsigned long _failed = 0; /* * Store the PID of the process that called plan() and only summarize * results when that process exits, so as to not misreport results in forked * processes. */ static pid_t _process = 0; /* * If true, we're doing lazy planning and will print out the plan based on the * last test number at the end of testing. */ static int _lazy = 0; /* * If true, the test was aborted by calling bail(). Currently, this is only * used to ensure that we pass a false value to any cleanup functions even if * all tests to that point have passed. */ static int _aborted = 0; /* * Registered cleanup functions. These are stored as a linked list and run in * registered order by finish when the test program exits. Each function is * passed a boolean value indicating whether all tests were successful. */ struct cleanup_func { test_cleanup_func func; struct cleanup_func *next; }; static struct cleanup_func *cleanup_funcs = NULL; /* * Registered diag files. Any output found in these files will be printed out * as if it were passed to diag() before any other output we do. This allows * background processes to log to a file and have that output interleaved with * the test output. */ struct diag_file { char *name; FILE *file; char *buffer; size_t bufsize; struct diag_file *next; }; static struct diag_file *diag_files = NULL; /* * Print a specified prefix and then the test description. Handles turning * the argument list into a va_args structure suitable for passing to * print_desc, which has to be done in a macro. Assumes that format is the * argument immediately before the variadic arguments. */ #define PRINT_DESC(prefix, format) \ do { \ if (format != NULL) { \ va_list args; \ if (prefix != NULL) \ printf("%s", prefix); \ va_start(args, format); \ vprintf(format, args); \ va_end(args); \ } \ } while (0) /* * Form a new string by concatenating multiple strings. The arguments must be * terminated by (const char *) 0. * * This function only exists because we can't assume asprintf. We can't * simulate asprintf with snprintf because we're only assuming SUSv3, which * does not require that snprintf with a NULL buffer return the required * length. When those constraints are relaxed, this should be ripped out and * replaced with asprintf or a more trivial replacement with snprintf. */ static char * concat(const char *first, ...) { va_list args; char *result; const char *string; size_t offset; size_t length = 0; /* * Find the total memory required. Ensure we don't overflow length. See * the comment for breallocarray for why we're using UINT_MAX here. */ va_start(args, first); for (string = first; string != NULL; string = va_arg(args, const char *)) { if (length >= UINT_MAX - strlen(string)) bail("strings too long in concat"); length += strlen(string); } va_end(args); length++; /* Create the string. */ result = bmalloc(length); va_start(args, first); offset = 0; for (string = first; string != NULL; string = va_arg(args, const char *)) { memcpy(result + offset, string, strlen(string)); offset += strlen(string); } va_end(args); result[offset] = '\0'; return result; } /* * Check all registered diag_files for any output. We only print out the * output if we see a complete line; otherwise, we wait for the next newline. */ static void check_diag_files(void) { struct diag_file *file; fpos_t where; size_t length; int size, incomplete; /* * Walk through each file and read each line of output available. The * general scheme here used is as follows: try to read a line of output at * a time. If we get NULL, check for EOF; on EOF, advance to the next * file. * * If we get some data, see if it ends in a newline. If it doesn't end in * a newline, we have one of two cases: our buffer isn't large enough, in * which case we resize it and try again, or we have incomplete data in * the file, in which case we rewind the file and will try again next * time. */ for (file = diag_files; file != NULL; file = file->next) { clearerr(file->file); /* Store the current position in case we have to rewind. */ if (fgetpos(file->file, &where) < 0) sysbail("cannot get position in %s", file->name); /* Continue until we get EOF or an incomplete line of data. */ incomplete = 0; while (!feof(file->file) && !incomplete) { size = file->bufsize > INT_MAX ? INT_MAX : (int) file->bufsize; if (fgets(file->buffer, size, file->file) == NULL) { if (ferror(file->file)) sysbail("cannot read from %s", file->name); continue; } /* * See if the line ends in a newline. If not, see which error * case we have. Use UINT_MAX as a substitute for SIZE_MAX (see * the comment for breallocarray). */ length = strlen(file->buffer); if (file->buffer[length - 1] != '\n') { if (length < file->bufsize - 1) incomplete = 1; else { if (file->bufsize >= UINT_MAX - BUFSIZ) sysbail("line too long in %s", file->name); file->bufsize += BUFSIZ; file->buffer = brealloc(file->buffer, file->bufsize); } /* * On either incomplete lines or too small of a buffer, rewind * and read the file again (on the next pass, if incomplete). * It's simpler than trying to double-buffer the file. */ if (fsetpos(file->file, &where) < 0) sysbail("cannot set position in %s", file->name); continue; } /* We saw a complete line. Print it out. */ printf("# %s", file->buffer); } } } /* * Our exit handler. Called on completion of the test to report a summary of * results provided we're still in the original process. This also handles * printing out the plan if we used plan_lazy(), although that's suppressed if * we never ran a test (due to an early bail, for example), and running any * registered cleanup functions. */ static void finish(void) { int success, primary; struct cleanup_func *current; unsigned long highest = testnum - 1; struct diag_file *file, *tmp; /* Check for pending diag_file output. */ check_diag_files(); /* Free the diag_files. */ file = diag_files; while (file != NULL) { tmp = file; file = file->next; fclose(tmp->file); free(tmp->name); free(tmp->buffer); free(tmp); } diag_files = NULL; /* * Determine whether all tests were successful, which is needed before * calling cleanup functions since we pass that fact to the functions. */ if (_planned == 0 && _lazy) _planned = highest; success = (!_aborted && _planned == highest && _failed == 0); /* * If there are any registered cleanup functions, we run those first. We * always run them, even if we didn't run a test. Don't do anything * except free the diag_files and call cleanup functions if we aren't the * primary process (the process in which plan or plan_lazy was called), * and tell the cleanup functions that fact. */ primary = (_process == 0 || getpid() == _process); while (cleanup_funcs != NULL) { cleanup_funcs->func(success, primary); current = cleanup_funcs; cleanup_funcs = cleanup_funcs->next; free(current); } if (!primary) return; /* Don't do anything further if we never planned a test. */ if (_planned == 0) return; /* If we're aborting due to bail, don't print summaries. */ if (_aborted) return; /* Print out the lazy plan if needed. */ fflush(stderr); if (_lazy && _planned > 0) printf("1..%lu\n", _planned); /* Print out a summary of the results. */ if (_planned > highest) diag("Looks like you planned %lu test%s but only ran %lu", _planned, (_planned > 1 ? "s" : ""), highest); else if (_planned < highest) diag("Looks like you planned %lu test%s but ran %lu extra", _planned, (_planned > 1 ? "s" : ""), highest - _planned); else if (_failed > 0) diag("Looks like you failed %lu test%s of %lu", _failed, (_failed > 1 ? "s" : ""), _planned); else if (_planned != 1) diag("All %lu tests successful or skipped", _planned); else diag("%lu test successful or skipped", _planned); } /* * Initialize things. Turns on line buffering on stdout and then prints out * the number of tests in the test suite. We intentionally don't check for * pending diag_file output here, since it should really come after the plan. */ void plan(unsigned long count) { if (setvbuf(stdout, NULL, _IOLBF, BUFSIZ) != 0) sysdiag("cannot set stdout to line buffered"); fflush(stderr); printf("1..%lu\n", count); testnum = 1; _planned = count; _process = getpid(); if (atexit(finish) != 0) { sysdiag("cannot register exit handler"); diag("cleanups will not be run"); } } /* * Initialize things for lazy planning, where we'll automatically print out a * plan at the end of the program. Turns on line buffering on stdout as well. */ void plan_lazy(void) { if (setvbuf(stdout, NULL, _IOLBF, BUFSIZ) != 0) sysdiag("cannot set stdout to line buffered"); testnum = 1; _process = getpid(); _lazy = 1; if (atexit(finish) != 0) sysbail("cannot register exit handler to display plan"); } /* * Skip the entire test suite and exits. Should be called instead of plan(), * not after it, since it prints out a special plan line. Ignore diag_file * output here, since it's not clear if it's allowed before the plan. */ void skip_all(const char *format, ...) { fflush(stderr); printf("1..0 # skip"); PRINT_DESC(" ", format); putchar('\n'); exit(0); } /* * Takes a boolean success value and assumes the test passes if that value * is true and fails if that value is false. */ int ok(int success, const char *format, ...) { fflush(stderr); check_diag_files(); printf("%sok %lu", success ? "" : "not ", testnum++); if (!success) _failed++; PRINT_DESC(" - ", format); putchar('\n'); return success; } /* * Same as ok(), but takes the format arguments as a va_list. */ int okv(int success, const char *format, va_list args) { fflush(stderr); check_diag_files(); printf("%sok %lu", success ? "" : "not ", testnum++); if (!success) _failed++; if (format != NULL) { printf(" - "); vprintf(format, args); } putchar('\n'); return success; } /* * Skip a test. */ void skip(const char *reason, ...) { fflush(stderr); check_diag_files(); printf("ok %lu # skip", testnum++); PRINT_DESC(" ", reason); putchar('\n'); } /* * Report the same status on the next count tests. */ int ok_block(unsigned long count, int success, const char *format, ...) { unsigned long i; fflush(stderr); check_diag_files(); for (i = 0; i < count; i++) { printf("%sok %lu", success ? "" : "not ", testnum++); if (!success) _failed++; PRINT_DESC(" - ", format); putchar('\n'); } return success; } /* * Skip the next count tests. */ void skip_block(unsigned long count, const char *reason, ...) { unsigned long i; fflush(stderr); check_diag_files(); for (i = 0; i < count; i++) { printf("ok %lu # skip", testnum++); PRINT_DESC(" ", reason); putchar('\n'); } } /* * Takes an expected integer and a seen integer and assumes the test passes * if those two numbers match. */ int is_int(long wanted, long seen, const char *format, ...) { int success; fflush(stderr); check_diag_files(); success = (wanted == seen); if (success) printf("ok %lu", testnum++); else { diag("wanted: %ld", wanted); diag(" seen: %ld", seen); printf("not ok %lu", testnum++); _failed++; } PRINT_DESC(" - ", format); putchar('\n'); return success; } /* * Takes a string and what the string should be, and assumes the test passes * if those strings match (using strcmp). */ int is_string(const char *wanted, const char *seen, const char *format, ...) { int success; if (wanted == NULL) wanted = "(null)"; if (seen == NULL) seen = "(null)"; fflush(stderr); check_diag_files(); success = (strcmp(wanted, seen) == 0); if (success) printf("ok %lu", testnum++); else { diag("wanted: %s", wanted); diag(" seen: %s", seen); printf("not ok %lu", testnum++); _failed++; } PRINT_DESC(" - ", format); putchar('\n'); return success; } /* * Takes an expected unsigned long and a seen unsigned long and assumes the * test passes if the two numbers match. Otherwise, reports them in hex. */ int is_hex(unsigned long wanted, unsigned long seen, const char *format, ...) { int success; fflush(stderr); check_diag_files(); success = (wanted == seen); if (success) printf("ok %lu", testnum++); else { diag("wanted: %lx", (unsigned long) wanted); diag(" seen: %lx", (unsigned long) seen); printf("not ok %lu", testnum++); _failed++; } PRINT_DESC(" - ", format); putchar('\n'); return success; } /* * Bail out with an error. */ void bail(const char *format, ...) { va_list args; _aborted = 1; fflush(stderr); check_diag_files(); fflush(stdout); printf("Bail out! "); va_start(args, format); vprintf(format, args); va_end(args); printf("\n"); exit(255); } /* * Bail out with an error, appending strerror(errno). */ void sysbail(const char *format, ...) { va_list args; int oerrno = errno; _aborted = 1; fflush(stderr); check_diag_files(); fflush(stdout); printf("Bail out! "); va_start(args, format); vprintf(format, args); va_end(args); printf(": %s\n", strerror(oerrno)); exit(255); } /* * Report a diagnostic to stderr. Always returns 1 to allow embedding in * compound statements. */ int diag(const char *format, ...) { va_list args; fflush(stderr); check_diag_files(); fflush(stdout); printf("# "); va_start(args, format); vprintf(format, args); va_end(args); printf("\n"); return 1; } /* * Report a diagnostic to stderr, appending strerror(errno). Always returns 1 * to allow embedding in compound statements. */ int sysdiag(const char *format, ...) { va_list args; int oerrno = errno; fflush(stderr); check_diag_files(); fflush(stdout); printf("# "); va_start(args, format); vprintf(format, args); va_end(args); printf(": %s\n", strerror(oerrno)); return 1; } /* * Register a new file for diag_file processing. */ void diag_file_add(const char *name) { struct diag_file *file, *prev; file = bcalloc(1, sizeof(struct diag_file)); file->name = bstrdup(name); file->file = fopen(file->name, "r"); if (file->file == NULL) sysbail("cannot open %s", name); file->buffer = bmalloc(BUFSIZ); file->bufsize = BUFSIZ; if (diag_files == NULL) diag_files = file; else { for (prev = diag_files; prev->next != NULL; prev = prev->next) ; prev->next = file; } } /* * Remove a file from diag_file processing. If the file is not found, do * nothing, since there are some situations where it can be removed twice * (such as if it's removed from a cleanup function, since cleanup functions * are called after freeing all the diag_files). */ void diag_file_remove(const char *name) { struct diag_file *file; struct diag_file **prev = &diag_files; for (file = diag_files; file != NULL; file = file->next) { if (strcmp(file->name, name) == 0) { *prev = file->next; fclose(file->file); free(file->name); free(file->buffer); free(file); return; } prev = &file->next; } } /* * Allocate cleared memory, reporting a fatal error with bail on failure. */ void * bcalloc(size_t n, size_t size) { void *p; p = calloc(n, size); if (p == NULL) sysbail("failed to calloc %lu", (unsigned long)(n * size)); return p; } /* * Allocate memory, reporting a fatal error with bail on failure. */ void * bmalloc(size_t size) { void *p; p = malloc(size); if (p == NULL) sysbail("failed to malloc %lu", (unsigned long) size); return p; } /* * Reallocate memory, reporting a fatal error with bail on failure. */ void * brealloc(void *p, size_t size) { p = realloc(p, size); if (p == NULL) sysbail("failed to realloc %lu bytes", (unsigned long) size); return p; } /* * The same as brealloc, but determine the size by multiplying an element * count by a size, similar to calloc. The multiplication is checked for * integer overflow. * * We should technically use SIZE_MAX here for the overflow check, but * SIZE_MAX is C99 and we're only assuming C89 + SUSv3, which does not * guarantee that it exists. They do guarantee that UINT_MAX exists, and we * can assume that UINT_MAX <= SIZE_MAX. * * (In theory, C89 and C99 permit size_t to be smaller than unsigned int, but * I disbelieve in the existence of such systems and they will have to cope * without overflow checks.) */ void * breallocarray(void *p, size_t n, size_t size) { if (n > 0 && UINT_MAX / n <= size) bail("reallocarray too large"); p = realloc(p, n * size); if (p == NULL) sysbail("failed to realloc %lu bytes", (unsigned long) (n * size)); return p; } /* * Copy a string, reporting a fatal error with bail on failure. */ char * bstrdup(const char *s) { char *p; size_t len; len = strlen(s) + 1; p = malloc(len); if (p == NULL) sysbail("failed to strdup %lu bytes", (unsigned long) len); memcpy(p, s, len); return p; } /* * Copy up to n characters of a string, reporting a fatal error with bail on * failure. Don't use the system strndup function, since it may not exist and * the TAP library doesn't assume any portability support. */ char * bstrndup(const char *s, size_t n) { const char *p; char *copy; size_t length; /* Don't assume that the source string is nul-terminated. */ for (p = s; (size_t) (p - s) < n && *p != '\0'; p++) ; length = (size_t) (p - s); copy = malloc(length + 1); if (p == NULL) sysbail("failed to strndup %lu bytes", (unsigned long) length); memcpy(copy, s, length); copy[length] = '\0'; return copy; } /* * Locate a test file. Given the partial path to a file, look under BUILD and * then SOURCE for the file and return the full path to the file. Returns * NULL if the file doesn't exist. A non-NULL return should be freed with * test_file_path_free(). */ char * test_file_path(const char *file) { char *base; char *path = NULL; const char *envs[] = { "BUILD", "SOURCE", NULL }; int i; for (i = 0; envs[i] != NULL; i++) { base = getenv(envs[i]); if (base == NULL) continue; path = concat(base, "/", file, (const char *) 0); if (access(path, R_OK) == 0) break; free(path); path = NULL; } return path; } /* * Free a path returned from test_file_path(). This function exists primarily * for Windows, where memory must be freed from the same library domain that * it was allocated from. */ void test_file_path_free(char *path) { free(path); } /* * Create a temporary directory, tmp, under BUILD if set and the current * directory if it does not. Returns the path to the temporary directory in * newly allocated memory, and calls bail on any failure. The return value * should be freed with test_tmpdir_free. * * This function uses sprintf because it attempts to be independent of all * other portability layers. The use immediately after a memory allocation * should be safe without using snprintf or strlcpy/strlcat. */ char * test_tmpdir(void) { const char *build; char *path = NULL; build = getenv("BUILD"); if (build == NULL) build = "."; path = concat(build, "/tmp", (const char *) 0); if (access(path, X_OK) < 0) if (mkdir(path, 0777) < 0) sysbail("error creating temporary directory %s", path); return path; } /* * Free a path returned from test_tmpdir() and attempt to remove the * directory. If we can't delete the directory, don't worry; something else * that hasn't yet cleaned up may still be using it. */ void test_tmpdir_free(char *path) { if (path != NULL) rmdir(path); free(path); } /* * Register a cleanup function that is called when testing ends. All such * registered functions will be run by finish. */ void test_cleanup_register(test_cleanup_func func) { struct cleanup_func *cleanup, **last; cleanup = bmalloc(sizeof(struct cleanup_func)); cleanup->func = func; cleanup->next = NULL; last = &cleanup_funcs; while (*last != NULL) last = &(*last)->next; *last = cleanup; } hkl-5.1.7/tests/tap/hkl-tap.h0000664000175000017500000000416414677222567014752 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_TAP_H__ #define __HKL_TAP_H__ #include "hkl.h" #include "hkl/api2/hkl2.h" #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) /* BEWARE here we are using a GCC extension */ #define DIAG(_success) \ ({ typeof(_success) __success = (_success); \ if(!__success) \ diag("status: %d " __FILE__ ":" TOSTRING(__LINE__) ":%s", (__success) , __func__); \ __success; \ }) G_BEGIN_DECLS extern void is_quaternion(const HklQuaternion *wanted, const HklQuaternion *seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); extern void is_matrix(const HklMatrix *wanted, const HklMatrix *seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); extern int check_pseudoaxes_v(HklEngine *engine, ...); extern int check_pseudoaxes(HklEngine *engine, double expected[], uint len); extern void hkl_tap_engine_pseudo_axes_randomize(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); extern void hkl_tap_engine_parameters_randomize(HklEngine *self) HKL_ARG_NONNULL(1); extern HklGeometryList *hkl_engine_set_values_v(HklEngine *self, ...); G_END_DECLS #endif /* __HKL_TAP_H__ */ hkl-5.1.7/tests/tap/macros.h0000664000175000017500000000736514677222567014704 0ustar00piccapicca/* * Helpful macros for TAP header files. * * This is not, strictly speaking, related to TAP, but any TAP add-on is * probably going to need these macros, so define them in one place so that * everyone can pull them in. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * * Copyright 2008, 2012, 2013, 2015 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #ifndef TAP_MACROS_H #define TAP_MACROS_H 1 /* * __attribute__ is available in gcc 2.5 and later, but only with gcc 2.7 * could you use the __format__ form of the attributes, which is what we use * (to avoid confusion with other macros), and only with gcc 2.96 can you use * the attribute __malloc__. 2.96 is very old, so don't bother trying to get * the other attributes to work with GCC versions between 2.7 and 2.96. */ #ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) # define __attribute__(spec) /* empty */ # endif #endif /* * We use __alloc_size__, but it was only available in fairly recent versions * of GCC. Suppress warnings about the unknown attribute if GCC is too old. * We know that we're GCC at this point, so we can use the GCC variadic macro * extension, which will still work with versions of GCC too old to have C99 * variadic macro support. */ #if !defined(__attribute__) && !defined(__alloc_size__) # if defined(__GNUC__) && !defined(__clang__) # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) # define __alloc_size__(spec, args...) /* empty */ # endif # endif #endif /* Suppress __warn_unused_result__ if gcc is too old. */ #if !defined(__attribute__) && !defined(__warn_unused_result__) # if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4) # define __warn_unused_result__ /* empty */ # endif #endif /* * LLVM and Clang pretend to be GCC but don't support all of the __attribute__ * settings that GCC does. For them, suppress warnings about unknown * attributes on declarations. This unfortunately will affect the entire * compilation context, but there's no push and pop available. */ #if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) # pragma GCC diagnostic ignored "-Wattributes" #endif /* Used for unused parameters to silence gcc warnings. */ #define UNUSED __attribute__((__unused__)) /* * BEGIN_DECLS is used at the beginning of declarations so that C++ * compilers don't mangle their names. END_DECLS is used at the end. */ #undef BEGIN_DECLS #undef END_DECLS #ifdef __cplusplus # define BEGIN_DECLS extern "C" { # define END_DECLS } #else # define BEGIN_DECLS /* empty */ # define END_DECLS /* empty */ #endif #endif /* TAP_MACROS_H */ hkl-5.1.7/tests/tap/basic.h0000664000175000017500000001544215143645056014463 0ustar00piccapicca/* * Basic utility routines for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 * Russ Allbery * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #ifndef TAP_BASIC_H #define TAP_BASIC_H 1 #include #include /* va_list */ #include /* size_t */ /* * Used for iterating through arrays. ARRAY_SIZE returns the number of * elements in the array (useful for a < upper bound in a for loop) and * ARRAY_END returns a pointer to the element past the end (ISO C99 makes it * legal to refer to such a pointer as long as it's never dereferenced). */ #define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) #define ARRAY_END(array) (&(array)[ARRAY_SIZE(array)]) BEGIN_DECLS /* * The test count. Always contains the number that will be used for the next * test status. */ extern unsigned long testnum; /* Print out the number of tests and set standard output to line buffered. */ void plan(unsigned long count); /* * Prepare for lazy planning, in which the plan will be printed automatically * at the end of the test program. */ void plan_lazy(void); /* Skip the entire test suite. Call instead of plan. */ void skip_all(const char *format, ...) __attribute__((__noreturn__, __format__(printf, 1, 2))); /* * Basic reporting functions. The okv() function is the same as ok() but * takes the test description as a va_list to make it easier to reuse the * reporting infrastructure when writing new tests. ok() and okv() return the * value of the success argument. */ int ok(int success, const char *format, ...) __attribute__((__format__(printf, 2, 3))); int okv(int success, const char *format, va_list args) __attribute__((__format__(printf, 2, 0))); void skip(const char *reason, ...) __attribute__((__format__(printf, 1, 2))); /* * Report the same status on, or skip, the next count tests. ok_block() * returns the value of the success argument. */ int ok_block(unsigned long count, int success, const char *format, ...) __attribute__((__format__(printf, 3, 4))); void skip_block(unsigned long count, const char *reason, ...) __attribute__((__format__(printf, 2, 3))); /* * Check an expected value against a seen value. Returns true if the test * passes and false if it fails. */ int is_int(long wanted, long seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); int is_string(const char *wanted, const char *seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); int is_hex(unsigned long wanted, unsigned long seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); /* Bail out with an error. sysbail appends strerror(errno). */ void bail(const char *format, ...) __attribute__((__noreturn__, __nonnull__, __format__(printf, 1, 2))); void sysbail(const char *format, ...) __attribute__((__noreturn__, __nonnull__, __format__(printf, 1, 2))); /* Report a diagnostic to stderr prefixed with #. */ int diag(const char *format, ...) __attribute__((__nonnull__, __format__(printf, 1, 2))); int sysdiag(const char *format, ...) __attribute__((__nonnull__, __format__(printf, 1, 2))); /* * Register or unregister a file that contains supplementary diagnostics. * Before any other output, all registered files will be read, line by line, * and each line will be reported as a diagnostic as if it were passed to * diag(). Nul characters are not supported in these files and will result in * truncated output. */ void diag_file_add(const char *file) __attribute__((__nonnull__)); void diag_file_remove(const char *file) __attribute__((__nonnull__)); /* Allocate memory, reporting a fatal error with bail on failure. */ void *bcalloc(size_t, size_t) __attribute__((__alloc_size__(1, 2), __malloc__, __warn_unused_result__)); void *bmalloc(size_t) __attribute__((__alloc_size__(1), __malloc__, __warn_unused_result__)); void *breallocarray(void *, size_t, size_t) __attribute__((__alloc_size__(2, 3), __malloc__, __warn_unused_result__)); void *brealloc(void *, size_t) __attribute__((__alloc_size__(2), __malloc__, __warn_unused_result__)); char *bstrdup(const char *) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); char *bstrndup(const char *, size_t) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); /* * Find a test file under BUILD or SOURCE, returning the full path. The * returned path should be freed with test_file_path_free(). */ char *test_file_path(const char *file) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); void test_file_path_free(char *path); /* * Create a temporary directory relative to BUILD and return the path. The * returned path should be freed with test_tmpdir_free. */ char *test_tmpdir(void) __attribute__((__malloc__, __warn_unused_result__)); void test_tmpdir_free(char *path); /* * Register a cleanup function that is called when testing ends. All such * registered functions will be run during atexit handling (and are therefore * subject to all the same constraints and caveats as atexit functions). * * The function must return void and will be passed two arguments: an int that * will be true if the test completed successfully and false otherwise, and an * int that will be true if the cleanup function is run in the primary process * (the one that called plan or plan_lazy) and false otherwise. */ typedef void (*test_cleanup_func)(int, int); void test_cleanup_register(test_cleanup_func) __attribute__((__nonnull__)); END_DECLS #endif /* TAP_BASIC_H */ hkl-5.1.7/tests/tap/float.c0000664000175000017500000000504014677222567014504 0ustar00piccapicca/* * Utility routines for writing floating point tests. * * Currently provides only one function, which checks whether a double is * equal to an expected value within a given epsilon. This is broken into a * separate source file from the rest of the basic C TAP library because it * may require linking with -lm on some platforms, and the package may not * otherwise care about floating point. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * * Copyright 2008, 2010, 2012, 2013, 2014, 2015 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ /* Required for isnan() and isinf(). */ #if defined(__STRICT_ANSI__) || defined(PEDANTIC) # ifndef _XOPEN_SOURCE # define _XOPEN_SOURCE 600 # endif #endif #include #include #include #include #include /* * Takes an expected double and a seen double and assumes the test passes if * those two numbers are within delta of each other. */ int is_double(double wanted, double seen, double epsilon, const char *format, ...) { va_list args; int success; va_start(args, format); fflush(stderr); if ((isnan(wanted) && isnan(seen)) || (isinf(wanted) && isinf(wanted) == isinf(seen)) || fabs(wanted - seen) <= epsilon) { success = 1; okv(1, format, args); } else { success = 0; diag("wanted: %g", wanted); diag(" seen: %g", seen); okv(0, format, args); } return success; } hkl-5.1.7/tests/tap/Makefile.in0000664000175000017500000005057515144640451015277 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/tap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cr AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libtap_a_AR = $(AR) $(ARFLAGS) libtap_a_RANLIB = $(RANLIB) libtap_a_LIBADD = am_libtap_a_OBJECTS = basic.$(OBJEXT) float.$(OBJEXT) \ hkl-tap.$(OBJEXT) libtap_a_OBJECTS = $(am_libtap_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/basic.Po ./$(DEPDIR)/float.Po \ ./$(DEPDIR)/hkl-tap.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libtap_a_SOURCES) DIST_SOURCES = $(libtap_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = \ -I$(top_srcdir) \ -I$(abs_top_srcdir)/tests \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) check_LIBRARIES = libtap.a libtap_a_SOURCES = \ basic.c \ basic.h \ float.h \ float.c \ macros.h \ hkl-tap.h \ hkl-tap.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/tap/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkLIBRARIES: -$(am__rm_f) $(check_LIBRARIES) libtap.a: $(libtap_a_OBJECTS) $(libtap_a_DEPENDENCIES) $(EXTRA_libtap_a_DEPENDENCIES) $(AM_V_at)-rm -f libtap.a $(AM_V_AR)$(libtap_a_AR) libtap.a $(libtap_a_OBJECTS) $(libtap_a_LIBADD) $(AM_V_at)$(libtap_a_RANLIB) libtap.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-tap.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkLIBRARIES clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/basic.Po -rm -f ./$(DEPDIR)/float.Po -rm -f ./$(DEPDIR)/hkl-tap.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/basic.Po -rm -f ./$(DEPDIR)/float.Po -rm -f ./$(DEPDIR)/hkl-tap.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-checkLIBRARIES clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/tests/tap/Makefile.am0000664000175000017500000000065014677222567015271 0ustar00piccapiccaAM_CFLAGS = \ -I$(top_srcdir) \ -I$(abs_top_srcdir)/tests \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) check_LIBRARIES = libtap.a libtap_a_SOURCES = \ basic.c \ basic.h \ float.h \ float.c \ macros.h \ hkl-tap.h \ hkl-tap.c # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/tests/tap/float.h0000664000175000017500000000323314677222567014513 0ustar00piccapicca/* * Floating point check function for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * * Copyright 2008, 2010, 2012, 2014 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #ifndef TAP_FLOAT_H #define TAP_FLOAT_H 1 #include BEGIN_DECLS /* Check an expected value against a seen value within epsilon. */ int is_double(double wanted, double seen, double epsilon, const char *format, ...) __attribute__((__format__(printf, 4, 5))); END_DECLS #endif /* TAP_FLOAT_H */ hkl-5.1.7/tests/hkl-axis-t.c0000664000175000017500000002536614677222567014611 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include #include static void new(void) { HklParameter *axis; static HklVector v = {{1, 0, 0}}; double min, max; axis = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); is_string("rotation", hkl_parameter_name_get(axis), __func__); hkl_parameter_min_max_get(axis, &min, &max, HKL_UNIT_DEFAULT); is_double(-M_PI, min, HKL_EPSILON, __func__); is_double(M_PI, max, HKL_EPSILON, __func__); is_double(0., hkl_parameter_value_get(axis, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); ok(TRUE == hkl_parameter_fit_get(axis), __func__); hkl_parameter_free(axis); axis = hkl_parameter_new_translation("translation", &v, &hkl_unit_length_mm); is_string("translation", hkl_parameter_name_get(axis), __func__); hkl_parameter_min_max_get(axis, &min, &max, HKL_UNIT_DEFAULT); is_double(-DBL_MAX, min, HKL_EPSILON, __func__); is_double(DBL_MAX, max, HKL_EPSILON, __func__); is_double(0., hkl_parameter_value_get(axis, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); ok(TRUE == hkl_parameter_fit_get(axis), __func__); hkl_parameter_free(axis); } static void get_quaternions(void) { static HklVector v_ref = {{1, 0, 0}}; static HklQuaternion q1_ref = {{1, 0, 0, 0}}; static HklQuaternion q2_ref = {{M_SQRT1_2, -M_SQRT1_2, 0, 0}}; HklParameter *axis; axis = hkl_parameter_new_rotation("rotation", &v_ref, &hkl_unit_angle_deg); is_quaternion(&q1_ref, hkl_parameter_quaternion_get(axis), __func__); ok(TRUE == hkl_parameter_value_set(axis, -M_PI_2, HKL_UNIT_DEFAULT, NULL), __func__); is_quaternion(&q2_ref, hkl_parameter_quaternion_get(axis), __func__); hkl_parameter_free(axis); axis = hkl_parameter_new_translation("translation", &v_ref, &hkl_unit_length_mm); ok(NULL == hkl_parameter_quaternion_get(axis), __func__); hkl_parameter_free(axis); } static void copy(void) { static HklVector v = {{1, 0, 0}}; static HklQuaternion q_ref = {{M_SQRT1_2, -M_SQRT1_2, 0, 0}}; HklParameter *axis; HklParameter *copy; double min, max; axis = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); ok(TRUE == hkl_parameter_value_set(axis, -M_PI_2, HKL_UNIT_DEFAULT, NULL), __func__); copy = hkl_parameter_new_copy(axis); is_string("rotation", hkl_parameter_name_get(copy), __func__); hkl_parameter_min_max_get(copy, &min, &max, HKL_UNIT_DEFAULT); is_double(-M_PI, min, HKL_EPSILON, __func__); is_double(M_PI, max, HKL_EPSILON, __func__); is_double(-M_PI_2, hkl_parameter_value_get(copy, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); ok(TRUE == hkl_parameter_fit_get(copy), __func__); is_quaternion(&q_ref, hkl_parameter_quaternion_get(copy), __func__); hkl_parameter_free(axis); hkl_parameter_free(copy); axis = hkl_parameter_new_translation("translation", &v, &hkl_unit_length_mm); ok(TRUE == hkl_parameter_value_set(axis, 100, HKL_UNIT_DEFAULT, NULL), __func__); copy = hkl_parameter_new_copy(axis); is_string("translation", hkl_parameter_name_get(copy), __func__); hkl_parameter_min_max_get(copy, &min, &max, HKL_UNIT_DEFAULT); is_double(-DBL_MAX, min, HKL_EPSILON, __func__); is_double(DBL_MAX, max, HKL_EPSILON, __func__); is_double(100, hkl_parameter_value_get(copy, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); ok(TRUE == hkl_parameter_fit_get(copy), __func__); ok(NULL == hkl_parameter_quaternion_get(copy), __func__); hkl_parameter_free(axis); hkl_parameter_free(copy); } static void is_valid(void) { static HklVector v = {{1, 0, 0}}; HklParameter *axis; int res = TRUE; axis = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 45, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_min_max_set(axis, -270, 0.0, HKL_UNIT_USER, NULL)); res &= DIAG(FALSE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -45, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_min_max_set(axis, 350, 450, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 45, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -45, HKL_UNIT_USER, NULL)); res &= DIAG(FALSE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_min_max_set(axis, -10, 90, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 405, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -405, HKL_UNIT_USER, NULL)); res &= DIAG(FALSE == hkl_parameter_is_valid(axis)); hkl_parameter_free(axis); axis = hkl_parameter_new_translation("translation", &v, &hkl_unit_length_mm); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 45, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_min_max_set(axis, -270, 0, HKL_UNIT_USER, NULL)); res &= DIAG(FALSE == hkl_parameter_is_valid(axis)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -45, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_is_valid(axis)); hkl_parameter_free(axis); ok(res == TRUE, __func__); } static void set_value_smallest_in_range(void) { HklParameter *axis; static HklVector v = {{1, 0, 0}}; int res = TRUE; axis = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); /* can not set a parameter value with a NaN */ res &= DIAG(FALSE == hkl_parameter_value_set(axis, NAN, HKL_UNIT_USER, NULL)); res &= DIAG(FALSE == hkl_parameter_value_set(axis, NAN, HKL_UNIT_DEFAULT, NULL)); res &= DIAG(TRUE == hkl_parameter_min_max_set(axis, -190, 190, HKL_UNIT_USER, NULL)); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 185, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-175., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 545, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-175., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -185, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-185., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 175, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-185., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_value_set(axis, 190, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-170., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); res &= DIAG(TRUE == hkl_parameter_value_set(axis, -190, HKL_UNIT_USER, NULL)); hkl_parameter_value_set_smallest_in_range(axis); is_double(-190., hkl_parameter_value_get(axis, HKL_UNIT_USER), HKL_EPSILON, __func__); hkl_parameter_free(axis); ok(res == TRUE, __func__); } static void get_value_closest(void) { HklParameter *axis1, *axis2; static HklVector v = {{1, 0, 0}}; axis1 = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); axis2 = hkl_parameter_new_rotation("rotation", &v, &hkl_unit_angle_deg); ok(TRUE == hkl_parameter_value_set(axis1, 0, HKL_UNIT_USER, NULL), __func__); ok(TRUE == hkl_parameter_value_set(axis2, 0, HKL_UNIT_USER, NULL), __func__); is_double(0., hkl_parameter_value_get_closest(axis1, axis2), HKL_EPSILON, __func__); /* change the range of axis1 */ ok(TRUE == hkl_parameter_min_max_set(axis1, -270, 180, HKL_UNIT_USER, NULL), __func__); ok(TRUE == hkl_parameter_value_set(axis1, 100, HKL_UNIT_USER, NULL), __func__); ok(TRUE == hkl_parameter_value_set(axis2, -75, HKL_UNIT_USER, NULL), __func__); is_double(100 * HKL_DEGTORAD, hkl_parameter_value_get_closest(axis1, axis2), HKL_EPSILON, __func__); ok(TRUE == hkl_parameter_value_set(axis2, -85, HKL_UNIT_USER, NULL), __func__); is_double(-260 * HKL_DEGTORAD, hkl_parameter_value_get_closest(axis1, axis2), HKL_EPSILON, __func__); hkl_parameter_free(axis2); hkl_parameter_free(axis1); } static void transformation_cmp(void) { int res = TRUE; HklParameter *axis1, *axis2, *translation1, *translation2; static HklVector v1 = {{1, 0, 0}}; static HklVector v2 = {{0, 1, 0}}; axis1 = hkl_parameter_new_rotation("rotation", &v1, &hkl_unit_angle_deg); axis2 = hkl_parameter_new_rotation("rotation", &v2, &hkl_unit_angle_deg); translation1 = hkl_parameter_new_translation("translation", &v1, &hkl_unit_length_mm); translation2 = hkl_parameter_new_translation("translation", &v2, &hkl_unit_length_mm); res &= DIAG(0 == hkl_parameter_transformation_cmp(axis1, axis1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(axis1, axis2)); res &= DIAG(0 != hkl_parameter_transformation_cmp(axis1, translation1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(axis1, translation2)); res &= DIAG(0 != hkl_parameter_transformation_cmp(axis2, translation1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(axis2, translation2)); res &= DIAG(0 == hkl_parameter_transformation_cmp(translation1, translation1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(translation1, translation2)); res &= DIAG(0 != hkl_parameter_transformation_cmp(translation1, axis1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(translation1, axis2)); res &= DIAG(0 != hkl_parameter_transformation_cmp(translation2, axis1)); res &= DIAG(0 != hkl_parameter_transformation_cmp(translation2, axis2)); ok(res == TRUE, __func__); hkl_parameter_free(translation2); hkl_parameter_free(translation1); hkl_parameter_free(axis2); hkl_parameter_free(axis1); } int main(void) { plan(46); new(); get_quaternions(); copy(); is_valid(); set_value_smallest_in_range(); get_value_closest(); transformation_cmp(); return 0; } hkl-5.1.7/tests/hkl-geometry-t.c0000664000175000017500000004153714677222567015476 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" #include #include #include /* BEWARE THESE TESTS ARE DEALING WITH HKL INTERNALS WHICH EXPOSE A * NON PUBLIC API WHICH ALLOW TO SHOOT YOURSELF IN YOUR FOOT */ #include "hkl/ccan/container_of/container_of.h" #include "hkl-axis-private.h" /* temporary */ #include "hkl-geometry-private.h" static void add_holder(void) { HklGeometry *g = NULL; HklHolder *holder = NULL; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); is_int(0, darray_size(g->holders), __func__); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_angle_deg); is_int(1, darray_size(g->holders), __func__); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_angle_deg); is_int(2, darray_size(g->holders), __func__); ok(holder == darray_item(g->holders, 1), __func__); hkl_geometry_free(g); } static void get_axis(void) { int res = TRUE; HklGeometry *g = NULL; HklHolder *holder = NULL; const HklParameter *axis0; GError *error; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); /* check the private API */ res &= DIAG(0 == !hkl_geometry_get_axis_by_name(g, "A")); res &= DIAG(0 == !hkl_geometry_get_axis_by_name(g, "B")); res &= DIAG(0 == !hkl_geometry_get_axis_by_name(g, "C")); res &= DIAG(0 == !hkl_geometry_get_axis_by_name(g, "T")); res &= DIAG(1 == !hkl_geometry_get_axis_by_name(g, "DONOTEXIST")); /* check the public API */ /* get */ res &= DIAG(NULL != hkl_geometry_axis_get(g, "A", NULL)); res &= DIAG(NULL == hkl_geometry_axis_get(g, "DONOTEXIST", NULL)); error = NULL; res &= DIAG(NULL != hkl_geometry_axis_get(g, "A", &error)); res &= DIAG(error == NULL); res &= DIAG(NULL != hkl_geometry_axis_get(g, "T", &error)); res &= DIAG(error == NULL); res &= DIAG(NULL == hkl_geometry_axis_get(g, "DONOTEXIST", &error)); res &= DIAG(error != NULL); g_clear_error(&error); /* set */ axis0 = hkl_geometry_axis_get(g, "A", NULL); res &= DIAG(TRUE == hkl_geometry_axis_set(g, "A", axis0, NULL)); res &= DIAG(FALSE == hkl_geometry_axis_set(g, "B", axis0, NULL)); res &= DIAG(FALSE == hkl_geometry_axis_set(g, "T", axis0, NULL)); error = NULL; res &= DIAG(hkl_geometry_axis_set(g, "A", axis0, &error)); res &= DIAG(error == NULL); res &= DIAG(FALSE == hkl_geometry_axis_set(g, "B", axis0, &error)); res &= DIAG(error != NULL); g_clear_error(&error); res &= DIAG(FALSE == hkl_geometry_axis_set(g, "T", axis0, &error)); res &= DIAG(error != NULL); g_clear_error(&error); ok(res, __func__); hkl_geometry_free(g); } static void update(void) { int res = TRUE; HklGeometry *g = NULL; HklHolder *holder = NULL; HklAxis *axis1; HklQuaternion q_ref = {{1./sqrt(2), 1./sqrt(2), 0.0, 0.0 }}; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T1", 1., 0., 0., &hkl_unit_length_mm); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T2", 1., 0., 0., &hkl_unit_length_mm); axis1 = container_of(hkl_geometry_get_axis_by_name(g, "B"), HklAxis, parameter); res &= DIAG(hkl_parameter_value_set(&axis1->parameter, M_PI_2, HKL_UNIT_DEFAULT, NULL)); /* now axis1 is dirty */ ok(TRUE == axis1->parameter.changed, __func__); hkl_geometry_update(g); holder = darray_item(g->holders, 0); is_quaternion(&q_ref, &holder->q, __func__); /* now axis1 is clean */ res &= DIAG(FALSE == axis1->parameter.changed); ok(res, __func__); hkl_geometry_free(g); } static void set(void) { HklGeometry *g; HklGeometry *g1; HklGeometry *g2; HklHolder *holder; HklFactory *fake_factory; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); g1 = hkl_geometry_new_copy(g); /* it is required to use a fake factory, with the public API * geometry contain always a real factory */ fake_factory = (HklFactory *)0x1; g2 = hkl_geometry_new(fake_factory, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); ok(hkl_geometry_set(g, g1), __func__); hkl_geometry_free(g2); hkl_geometry_free(g1); hkl_geometry_free(g); } static void axis_values_get_set(void) { unsigned int i; HklGeometry *g; HklHolder *holder; static double set_1[] = {1, 1, 1, 1}; static double set_10[] = {10, 10, 10, 10}; double values[4]; GError *error; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); /* check set DEFAULT unit */ error = NULL; ok(TRUE == hkl_geometry_axis_values_set(g, set_1, ARRAY_SIZE(set_1), HKL_UNIT_DEFAULT, NULL), __func__); ok(TRUE == hkl_geometry_axis_values_set(g, set_1, ARRAY_SIZE(set_1), HKL_UNIT_DEFAULT, &error), __func__); ok(error == NULL, __func__); for(i=0; iaxes, i), HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); /* check get DEFAULT unit */ hkl_geometry_axis_values_get(g, values, ARRAY_SIZE(values), HKL_UNIT_DEFAULT); for(i=0; iaxes, 0), -100 * HKL_DEGTORAD, 100 * HKL_DEGTORAD, HKL_UNIT_DEFAULT, NULL)); res &= DIAG(FALSE == hkl_geometry_is_valid(geom)); ok(res, __func__); hkl_geometry_free(geom); } static void wavelength(void) { HklGeometry *geom = NULL; GError *error; geom = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); is_double(1.54, hkl_geometry_wavelength_get(geom, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); ok(TRUE == hkl_geometry_wavelength_set(geom, 2, HKL_UNIT_DEFAULT, NULL), __func__); is_double(2, hkl_geometry_wavelength_get(geom, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); error = NULL; ok(TRUE == hkl_geometry_wavelength_set(geom, 2, HKL_UNIT_DEFAULT, &error), __func__); ok(error == NULL, __func__); is_double(2, hkl_geometry_wavelength_get(geom, HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); hkl_geometry_free(geom); } static void xxx_rotation_get(void) { int res = TRUE; size_t i, n; HklFactory **factories; HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); HklSample *sample = hkl_sample_new("test"); factories = hkl_factory_get_all(&n); for(i=0; igeometry->axes, 0), HKL_UNIT_DEFAULT), HKL_EPSILON, __func__); } ok(res, __func__); hkl_geometry_free(g); hkl_geometry_list_free(list); } static void list_multiply_from_range(void) { int res = TRUE; HklGeometry *g; HklGeometryList *list; HklHolder *holder; HklParameter *axisA, *axisB, *axisC, *axisT; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); axisA = hkl_geometry_get_axis_by_name(g, "A"); axisB = hkl_geometry_get_axis_by_name(g, "B"); axisC = hkl_geometry_get_axis_by_name(g, "C"); axisT = hkl_geometry_get_axis_by_name(g, "T"); res &= DIAG(hkl_parameter_min_max_set(axisA, -190, 190, HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisB, -190, 190, HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisC, -190, 190, HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisT, -190, 190., HKL_UNIT_USER, NULL)); list = hkl_geometry_list_new(); res &= DIAG(hkl_geometry_set_values_v(g, HKL_UNIT_DEFAULT, NULL, 185. * HKL_DEGTORAD, -185. * HKL_DEGTORAD, 190. * HKL_DEGTORAD, 100.)); hkl_geometry_list_add(list, g); hkl_geometry_list_multiply_from_range(list); res &= DIAG(8 == hkl_geometry_list_n_items_get(list)); ok(res, __func__); hkl_geometry_free(g); hkl_geometry_list_free(list); } static void list_remove_invalid(void) { int res = TRUE; HklGeometry *g; HklGeometryList *list; HklHolder *holder; HklParameter *axisA, *axisB, *axisC, *axisT; g = hkl_geometry_new(NULL, &hkl_geometry_operations_defaults); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation(holder, "A", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "B", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_rotation(holder, "C", 1., 0., 0., &hkl_unit_angle_deg); hkl_holder_add_translation(holder, "T", 1., 0., 0., &hkl_unit_length_mm); axisA = hkl_geometry_get_axis_by_name(g, "A"); axisB = hkl_geometry_get_axis_by_name(g, "B"); axisC = hkl_geometry_get_axis_by_name(g, "C"); axisT = hkl_geometry_get_axis_by_name(g, "T"); res &= DIAG(hkl_parameter_min_max_set(axisA, -100, 180., HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisB, -100., 180., HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisC, -100., 180., HKL_UNIT_USER, NULL)); res &= DIAG(hkl_parameter_min_max_set(axisT, 0.0, 179., HKL_UNIT_USER, NULL)); list = hkl_geometry_list_new(); res &= DIAG(hkl_geometry_set_values_v(g, HKL_UNIT_DEFAULT, NULL, 185. * HKL_DEGTORAD, -185. * HKL_DEGTORAD, 185. * HKL_DEGTORAD, 0.1)); hkl_geometry_list_add(list, g); res &= DIAG(hkl_geometry_set_values_v(g, HKL_UNIT_DEFAULT, NULL, -190. * HKL_DEGTORAD, -190. * HKL_DEGTORAD, -190. * HKL_DEGTORAD, 0.1)); hkl_geometry_list_add(list, g); res &= DIAG(hkl_geometry_set_values_v(g, HKL_UNIT_DEFAULT, NULL, 180. * HKL_DEGTORAD, 180. * HKL_DEGTORAD, 180. * HKL_DEGTORAD, 0.1)); hkl_geometry_list_add(list, g); is_int(3, hkl_geometry_list_n_items_get(list), __func__); hkl_geometry_list_remove_invalid(list); is_int(1, hkl_geometry_list_n_items_get(list), __func__); ok(res, __func__); hkl_geometry_free(g); hkl_geometry_list_free(list); } int main(void) { plan(48); add_holder(); get_axis(); update(); set(); axis_values_get_set(); distance(); is_valid(); wavelength(); xxx_rotation_get(); list(); list_multiply_from_range(); list_remove_invalid(); return 0; } hkl-5.1.7/Documentation/0000775000175000017500000000000015144640567014111 5ustar00piccapiccahkl-5.1.7/Documentation/hkl.org.in0000664000175000017500000017142515134236420016003 0ustar00piccapicca#+TITLE: Welcome to hkl's @VERSION@ documentation! #+AUTHOR: Picca Frédéric-Emmanuel #+EMAIL: picca at synchrotron dash soleil dot fr #+AUTHOR: Wermeille Didier #+EMAIL: wermeille at esrf dot fr #+OPTIONS: H:3 num:1 #+LANGUAGE: en #+STYLE: #+HTML_HEAD: #+HTML_MATHJAX: path:@MATHJAX_PATH@ * Introduction The purpose of the library is to factorize single crystal diffraction angles computation for different kind of diffractometer geometries. It is used at the SOLEIL, Desy and Alba synchrotron with the Tango control system and at the ESRF with the BLISS control system to pilot diffractometers. #+CAPTION: hkl library GUI interface [[./figures/ghkl.png]] ** Features - mode computation (aka PseudoAxis). - item for different diffractometer geometries. - UB matrix computation: - Busing & Levy with 2 reflections. - simplex computation with more than 2 reflections using the GSL library. - Eulerian angles to pre-orientate your sample. - Crystal lattice refinement: - with more than 2 reflections, you can select which parameter must be fitted. - Pseudoaxes: - psi, eulerians, q, ... ** Conventions In this whole document, the next convention will be used to describe the diffractometers geometries: - right handed convention for all the angles. - direct space orthogonal base. - description of the diffractometer geometries is done with all axes values set to zero. ** Diffraction *** The crystal A periodic crystal is the association of a pattern and a lattice. The pattern is located at each points of the lattice node. Positions of those nodes are given by: \[ R_{uvw}=u\cdot\vec{a}+v\cdot\vec{b}+w\cdot\vec{c} \] $\vec{a}$, $\vec{b}$, $\vec{c}$ are the former vectors of a base of the space. =u=, =v=, =w= are integers. The pattern contains atoms associated to each lattice node. The purpose of diffraction is to study the interaction of this crystal (pattern + lattice) with X-rays. #+CAPTION: Crystal direct lattice. [[./figures/crystal.png]] This lattice is defined by $\vec{a}$, $\vec{b}$, $\vec{c}$ vectors, and the angles $\alpha$, $\beta$, $\gamma$. In general cases, this lattice is not orthonormal. Nevertheless, to compute the interaction of this real space lattice and the X-rays, it is convenient to define another lattice called the reciprocal space lattice defined like this: \begin{eqnarray*} \vec{a}^{\star} & = & \tau\frac{\vec{b}\wedge\vec{c}}{\vec{a}\cdot(\vec{b}\wedge\vec{c})}\\ \vec{b}^{\star} & = & \tau\frac{\vec{c}\wedge\vec{a}}{\vec{b}\cdot(\vec{c}\wedge\vec{a})}\\ \vec{c}^{\star} & = & \tau\frac{\vec{a}\wedge\vec{b}}{\vec{c}\cdot(\vec{a}\wedge\vec{b})} \end{eqnarray*} $\tau=2\pi$ or $\tau=1$ depending on the conventions. It is then possible to define theses orthogonal properties: \begin{eqnarray*} \vec{a}^{\star}\cdot\vec{a}=\tau & \vec{b}^{\star}\cdot\vec{a}=0 & \vec{c}^{\star}\cdot\vec{a}=0\\ \vec{a}^{\star}\cdot\vec{b}=0 & \vec{b}^{\star}\cdot\vec{b}=\tau & \vec{c}^{\star}\cdot\vec{b}=0\\ \vec{a}^{\star}\cdot\vec{c}=0 & \vec{b}^{\star}\cdot\vec{c}=0 & \vec{c}^{\star}\cdot\vec{c}=\tau \end{eqnarray*} This reciprocal space lattice allows to write in a simpler form the interaction between the crystal and the X-rays. We often only know about $\vec{a}$, $\vec{b}$, $\vec{c}$ vectors and the angles $\alpha$, $\beta$, $\gamma$. Using the previous reciprocal equations, we can compute the reciprocal lattice this way: \begin{eqnarray*} a^{\star} & = & \frac{\sin\alpha}{aD}\\ b^{\star} & = & \frac{\sin\beta}{bD}\\ c^{\star} & = & \frac{\sin\gamma}{cD} \end{eqnarray*} where \[ D=\sqrt{1-\cos^{2}\alpha-\cos^{2}\beta-\cos^{2}\gamma+2\cos\alpha\cos\beta\cos\gamma} \] To compute the angles between the reciprocal space vectors, it is once again possible to use the previous reciprocal equations to obtain the sines and cosines of the angles $\alpha^\star$, $\beta^\star$ and $\gamma^\star$: \begin{eqnarray*} \cos\alpha^{\star}=\frac{\cos\beta\cos\gamma-\cos\alpha}{\sin\beta\sin\gamma} & \, & \sin\alpha^{\star}=\frac{D}{\sin\beta\sin\gamma} \\ \cos\beta^{\star}=\frac{\cos\gamma\cos\alpha-\cos\beta}{\sin\gamma\sin\alpha} & \, & \sin\beta^{\star}=\frac{D}{\sin\gamma\sin\alpha}\\ \cos\gamma^{\star}=\frac{\cos\alpha\cos\beta-\cos\gamma}{\sin\alpha\sin\beta} & \, & \sin\gamma^{\star}=\frac{D}{\sin\alpha\sin\beta} \end{eqnarray*}. The volume of the lattice can be computed this way: \[ V = abcD \] or \[ V = \vec{a} \dot (\vec{b} \wedge \vec{c}) = \vec{b} \dot (\vec{c} \wedge \vec{a}) = \vec{c} \dot (\vec{a} \wedge \vec{b}) \] *** Diffraction Let the incoming X-ray beam whose wave vector is $\vec{k_{i}}$, $|k_{i}|=\tau/\lambda$ where $\lambda$ is the wavelength of the signal. And $\vec{k_{d}}$ vector wavelength of the diffracted beam. There is diffraction if the diffraction vector $\vec{q}$ can be expressed as follows: \[ \vec{q}=\vec{k_{d}}-\vec{k_{i}}=h.\vec{a}^{*}+k.\vec{b}^{*}+l.\vec{c}^{*} \] where $(h,k,l)\in\mathbb{N}^{3}$ and $(h,k,l)\neq(0,0,0)$. Theses indices $(h,k,l)$ are named Miller indices. Another way of looking at things has been given by Bragg and that famous relationship: \[ n\lambda=2d\sin\theta \] where $d$ is the inter-plan distance and $n \in \mathbb{N}$. The diffraction occurs for a unique $\theta$ angle. Then we got $\vec{q}$ perpendicular to the diffraction plans. The Ewald construction allows to represent this diffraction condition in the reciprocal space. *** Quaternions **** Properties The quaternions will be used to describe the diffractometer geometries. Theses quaternions can represent 3D rotations. There are different ways to describe such as complex numbers: \[ q=a+bi+cj+dk \] or \[ q=[a,\vec{v}] \] To compute the quaternion's norm, we can proceed like for complex numbers: \[ \|q\|=\sqrt{a²+b²+c²+d²} \] Its conjugate is: \[ q^{*}=[a,-\vec{u}]=a-bi-cj-dk \] **** Operations The difference with complex number algebra is about non-commutativity. \[ qp \neq pq \] \begin{bmatrix} ~ & 1 & i & j & k \cr 1 & 1 & i & j & k \cr i & i & -1 & k & -j \cr j & j & -k & -1 & i \cr k & k & j & -i & -1 \end{bmatrix} The product of two quaternions can be express by the Grassman product. So for two quaternions $p$ and $q$: \begin{align*} q &= a+\vec{u} = a+bi+cj+dk\\ p &= t+\vec{v} = t+xi+yj+zk \end{align*} we got: \[ pq = at - \vec{u} \cdot \vec{v} + a \vec{v} + t \vec{u} + \vec{v} \times \vec{u} \] or equivalent: \[ pq = (at - bx - cy - dz) + (bt + ax + cz - dy) i + (ct + ay + dx - bz) j + (dt + az + by - cx) k \] **** 3D rotations L'ensemble des quaternions unitaires (leur norme est égale à 1) est le groupe qui représente les rotations dans l'espace 3D. Si on a un vecteur unitaire $\vec{u}$ et un angle de rotation $\theta$ alors le quaternion $[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\vec{u]}$ représente la rotation de $\theta$ autour de l'axe $\vec{u}$ dans le sens trigonométrique. Nous allons donc utiliser ces quaternions unitaires pour représenter les mouvements du diffractomètre. Alors que dans le plan 2D une simple multiplication entre un nombre complex et le nombre $e^{i\theta}$ permet de calculer simplement la rotation d'angle $\theta$ autour de l'origine, dans l'espace 3D l'expression équivalente est: \[ z'=qzq^{-1} \] où $q$ est le quaternion de norme 1 représentant la rotation dans l'espace et $z$ le quaternion représentant le vecteur qui subit la rotation (sa partie réelle est nulle). Dans le cas des quaternions de norme 1, il est très facile de calculer $q^{-1}$. En effet l'inverse d'une rotation d'angle $\theta$ est la rotation d'angle $-\theta$. On a donc directement: \[ q^{-1}=[\cos\frac{-\theta}{2},\sin\frac{-\theta}{2}\vec{u}]=[\cos\frac{\theta}{2},-\sin\frac{\theta}{2}\vec{u}]=q^{*} \] Le passage aux matrices de rotation se fait par la formule suivante $q\rightarrow M$. \begin{bmatrix} a{{}^2}+b{{}^2}-c{{}^2}-d{{}^2} & 2bc-2ad & 2ac+2bd\\ 2ad+2bc & a{{}^2}-b{{}^2}+c{{}^2}-d{{}^2} & 2cd-2ab\\ 2bd-2ac & 2ab+2cd & a{{}^2}-b{{}^2}-c{{}^2}+d{{}^2} \end{bmatrix} La composition de rotation se fait simplement en multipliant les quaternions entre eux. Si l'on a $q$. ** Modes de fonctionnement To come. ** Equations fondamentales Le problème que nous devons résoudre est de calculer, pour une famille de plan $(h,k,l)$ donné, les angles de rotation du diffractomètre qui permettent de le mettre en condition de diffraction. Il faut donc exprimer les relations mathématiques qui lient les différents angles entre eux lorsque la condition de Bragg est vérifiée. L'équation fondamentale est la suivante: \begin{align*} \left(\prod_{i}S_{i}\right)\cdot U\cdot B\cdot\vec{h} & =\left(\prod_{j}D_{j}-I\right)\cdot\vec{k_{i}}\\ R\cdot U\cdot B\cdot\vec{h} & =\vec{Q} \end{align*} où $\vec{h}$ est le vecteur $(h,k,l)$, $\vec{k_{i}}$ est le vecteur incident, $S_{i}$ les matrices de rotations des mouvements liés à l'échantillon, $D_{j}$ les matrices de rotation des mouvements liés au détecteur, $I$ la matrice identité, $U$ la matrice d'orientation du cristal par rapport au repère de l'axe sur lequel ce dernier est monté et $B$ la matrice de passage d'un repère non orthonormé (celui du cristal réciproque) à un repère orthonormé. *** Calcule de B Si l'on connaît les paramètres cristallins du cristal étudié, il est très simple de calculer $B$: \[ B = \] \begin{bmatrix} a^{\star} & b^{\star}\cos\gamma^{\star} & c^{\star}\cos\beta^{\star}\\ 0 & b^{\star}\sin\gamma^{\star} & -c^{\star}\sin\beta^{\star}\cos\alpha\\ 0 & 0 & 1/c \end{bmatrix} *** Calcule de U Il existe plusieurs façons de calculer $U$. Busing et Levy en ont proposé plusieurs. Nous allons présenter celle qui nécessite la mesure de seulement deux réflections ainsi que la connaissance des paramètres cristallins. Cette façon de calculer la matrice d'orientation $U$ peut être généralisée à n'importe quel diffractomètre pour peu que la description des axes de rotation permette d'obtenir la matrice de rotation de la machine $R$ et le vecteur de diffusion $\vec{Q}$. Il est également possible de calculer $U$ sans la connaîssance des paramètres cristallins. Il faut alors faire un affinement des paramètres. Cela revient à minimiser une fonction. Nous allons utiliser la méthode du simplex pour trouver ce minimum et donc ajuster l'ensemble des paramètres cristallins ainsi que la matrice d'orientation. *** Algorithme de Busing et Levy L'idée est de se placer dans le repère de l'axe sur lequel est monté l'échantillon. On mesure deux réflections $(\vec{h}_{1},\vec{h}_{2})$ ainsi que leurs angles associés. Cela nous permet de calculer $R$ et $\vec{Q}$ pour chacune de ces reflections. Nous avons alors ce système: \begin{eqnarray*} U\cdot B\cdot\vec{h}_{1} & = & \tilde{R}_{1}\cdot\vec{Q}_{1}\\ U\cdot B\cdot\vec{h}_{2} & = & \tilde{R}_{2}\cdot\vec{Q}_{2} \end{eqnarray*} De façon à calculer facilement $U$, il est intéressant de définir deux trièdres orthonormés $T_{\vec{h}}$ et $T_{\vec{Q}}$ à partir des vecteurs $(B\vec{h}_{1},B\vec{h}_{2})$ et $(\tilde{R}_{1}\vec{Q}_{1},\tilde{R}_{2}\vec{Q}_{2})$. On a alors très simplement: \[ U \cdot T_{\vec{h}} = T_{\vec{Q}} \] Et donc: \[ U = T_{\vec{Q}} \cdot \tilde{T}_{\vec{h}} \] *** Affinement par la méthode du simplex Dans ce cas, nous ne connaissons pas la matrice $B$, il faut donc mesurer plus que deux réflections pour ajuster les neuf paramètres. Six paramètres pour le crystal et trois pour la matrice d'orientation $U$. Les trois paramètres qui permettent de représenter $U$ sont en fait les angles d'Euler. Il faut donc être en mesure de passer d'une représentation eulérienne à cette matrice $U$ et réciproquement. \[ U = X \cdot Y \cdot Z \] où $X$ est la matrice de rotation suivant l'axe Ox et le premier angle d'Euler, $Y$ la matrice de rotation suivant l'axe Oy et le deuxième angle d'Euler et $Z$ la matrice du troisième angle d'Euler pour l'axe Oz. #+ATTR_HTML: class="center" | $X$ | $Y$ | $Z$ | | <10> | <10> | <10> | | $\begin{bmatrix} 1 & 0 & 0\\ 0 & A & -B\\ 0 & B & A \end{bmatrix}$ | $\begin{bmatrix}C & 0 & D\\0 & 1 & 0\\-D & 0 & C\end{bmatrix}$ | $\begin{bmatrix}E & -F & 0\\F & E & 0\\0 & 0 & 1\end{bmatrix}$ | et donc: \[ U= \] \begin{bmatrix} CE & -CF & D\\ BDE+AF & -BDF+AE & -BC\\ -ADE+BF & ADF+BE & AC \end{bmatrix} Il est donc facile de passer des angles d'Euler à la matrice d'orientation. Il faut maintenant faire la transformation inverse de la matrice $U$ vers les angles d'Euler. * PseudoAxes This section describes the calculations done by the library for the different kind of pseudo-axes. ** General process *** First Solution The hkl library uses the gsl library in order to find the first valid solution. *** Multiplication of the solutions Once we have got the first solution, different strategies are applied in order to generate more solutions. **** Geometry Multiplication For kappa diffractometers, once you have one solution, it is possible to generate another one using a property of this geometry. (Left arm and right arm). *** Restrains of the Solutions We apply then some constrains to reduce these solutions to only a bunch of acceptable ones. Usually we take the axis range into account. ** Eulerians to Kappa angles 1st solution: \begin{eqnarray*} \kappa_\omega & = & \omega - p + \frac{\pi}{2} \\ \kappa & = & 2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p - \frac{\pi}{2} \end{eqnarray*} or 2nd one: \begin{eqnarray*} \kappa_\omega & = & \omega - p - \frac{\pi}{2} \\ \kappa & = & -2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p + \frac{\pi}{2} \end{eqnarray*} where \[ p = \arcsin\left(\frac{\tan\frac{\chi}{2}}{\tan\alpha}\right) \] and $\alpha$ is the angle of the kappa axis with the $\vec{y}$ axis. ** Kappa to Eulerian angles 1st solution: \begin{eqnarray*} \omega & = & \kappa_\omega + p - \frac{\pi}{2} \\ \chi & = & 2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p + \frac{\pi}{2} \end{eqnarray*} or 2nd one: \begin{eqnarray*} \omega & = & \kappa_\omega + p + \frac{\pi}{2} \\ \chi & = & -2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p - \frac{\pi}{2} \end{eqnarray*} where \[ p = \arctan\left(\tan\frac{\kappa}{2} \cos\alpha\right) \] #+CAPTION: $\omega = 0$, $\chi = 0$, $\phi = 0$, 1st solution [[./figures/e2k_1.png]] #+CAPTION: $\omega = 0$, $\chi = 0$, $\phi = 0$, 2nd solution [[./figures/e2k_2.png]] #+CAPTION: $\omega = 0$, $\chi = 90$, $\phi = 0$, 1st solution [[./figures/e2k_3.png]] #+CAPTION: $\omega = 0$, $\chi = 90$, $\phi = 0$, 2nd solution [[./figures/e2k_4.png]] ** Qper and Qpar [[./figures/qper_qpar.png]] This pseudo axis engine computes the perpendicular ($\left|\left|\vec{Q_\text{per}}\right|\right|$) and parallel ($\left|\left|\vec{Q_\text{par}}\right|\right|$) contribution of $\vec{Q}$ relatively to the surface of the sample defined by the $\vec{n}$ vector. \begin{eqnarray*} \vec{q} & = & \vec{k_\text{f}} - \vec{k_\text{i}} \\ \vec{q} & = & \vec{q_\text{per}} + \vec{q_\text{par}} \\ \vec{q_\text{per}} & = & \frac{\vec{q} \cdot \vec{n}}{\left|\left|\vec{n}\right|\right|} \frac{\vec{n}}{\left|\left|\vec{n}\right|\right|} \end{eqnarray*} * Diffractometers #+BEGIN_QUOTE *Warning* This section is automatically generating by introspecting the hkl library. #+END_QUOTE #+BEGIN_SRC python :exports results :results value raw from gi.repository import Hkl def bold(l): return ["\"*" + _ + "*\"" for _ in l] def level(indent=1, s=None): return " "*indent + s diffractometers = Hkl.factories().keys() output = '' for diffractometer in sorted(diffractometers): factory = Hkl.factories()[diffractometer] output += "** " + diffractometer + "\n\n" detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) sample = Hkl.Sample.new("toto") geometry = factory.create_new_geometry() engines = factory.create_new_engine_list() engines.init(geometry, detector, sample) output += "*** Axes: \n" for axis_name in geometry.axis_names_get(): axis = geometry.axis_get(axis_name) axis_v = geometry.axis_get(axis_name).axis_v_get() if axis_v is not None: output += level(2, "+ \"*" + axis_name + "*\": rotation around the *" + repr(axis_v.data) + "* axis\n") else: output += level(2, "+ \"*" + axis_name + "*\": parameter\n") output += "*** Engines: \n" parameters = engines.parameters_names_get() if len(parameters) != 0: output += level(3, "* Global parameters:\n") for parameter in parameters: output += "\n" p = engines.parameter_get(parameter) description = p.description_get() value = p.value_get(Hkl.UnitEnum.USER) output += level(4, "+ \"*" + parameter + "*\" [" + str(value) + "]: " + description + "\n") for engine in engines.engines_get(): output += "**** \"*" + engine.name_get() + "*\":\n\n" output += level(3, "* pseudo axes:\n") for pseudo in engine.pseudo_axis_names_get(): p = engine.pseudo_axis_get(pseudo) description = p.description_get() output += level(4, "* \"*" + pseudo + "*\" : " + description + '\n\n') output += "\n" for mode in engine.modes_names_get(): output += level(3, "+ mode: \"*" + mode + "*\"\n") engine.current_mode_set(mode) axes_r = engine.axis_names_get(Hkl.EngineAxisNamesGet.READ) axes_w = engine.axis_names_get(Hkl.EngineAxisNamesGet.WRITE) output += level(4, "+ axes (read) : " + ", ".join(bold(axes_r)) + "\n") output += level(4, "+ axes (write): " + ", ".join(bold(axes_w)) + "\n") parameters = engine.parameters_names_get() output += level(4, "+ parameters: ") if parameters: output += "\n" for parameter in parameters: p = engine.parameter_get(parameter) description = p.description_get() value = p.value_get(Hkl.UnitEnum.USER) output += level(5, "+ *" + parameter + "* [" + str(value) + "]: " + description + "\n") else: output += "No parameter\n" return output #+END_SRC * Developpement ** Getting hkl To get hkl, you can download the last stable version from sourceforge or if you want the latest development version using [[http://git.or.cz/][git]] or [[http://code.google.com/p/msysgit/downloads/list][msysgit]] on Windows system and do: #+BEGIN_SRC sh git clone git://repo.or.cz/hkl.git #+END_SRC or: #+BEGIN_SRC sh git clone http://repo.or.cz/r/hkl.git (slower) #+END_SRC ** Building hkl To build a minimal hkl library you need: - [[http://www.python.org][Python 2.3+]] - [[http://www.gnu.org/software/gsl/][GNU Scientific Library 1.12]] - [[https://developer.gnome.org/glib/][GLib-2.0 >= 2.3.4]] First you need to generate the autotools files via #+BEGIN_SRC sh ./autogen.sh #+END_SRC Then you can compile the minimal library with thses commands #+BEGIN_SRC sh ./configure --disable-gui make sudo make install #+END_SRC If you want also the gui part, you need one more dependency. - [[https://developer.gnome.org/gtk/][Gtk4 >= 4.12]] #+BEGIN_SRC sh ./configure make sudo make install #+END_SRC To enable the anticollision system you need to activate the hkl3d library and a few more dependencies. - [[https://www.assimp.org/][assimp]] - [[https://github.com/anholt/libepoxy][libepoxy]] - [[https://pyyaml.org/wiki/LibYAML][yaml]] - [[http://bulletphysics.org/][bulletphysics]] #+BEGIN_SRC sh ./configure --enable-hkl3d make sudo make install #+END_SRC If you want to work on the documentation, you need the extra: - [[http://www.gtk.org/gtk-doc/][gtk-doc]] for the api - [[http://sphinx.pocoo.org/][sphinx]] for the html and latex doc. - [[http://asymptote.sourceforge.net/][asymptote]] for the figures - [[http://www.gnu.org/software/emacs/][emacs]] the well known editor - [[https://github.com/emacsmirror/htmlize][htmlize]] used to highlight the source code - [[http://orgmode.org][org-mode]] litteral programming On Debian/Ubuntu, you just need to install: #+BEGIN_SRC sh sudo apt-get install emacs dvipng emacs-goodies-el org-mode #+END_SRC #+BEGIN_SRC sh ./configure --enable-gtk-doc make make html #+END_SRC Nevertheless, if you do not want to build the documentation, you can do: #+BEGIN_SRC sh ./configure --disable-hkl-doc #+END_SRC ** Hacking hkl *** Bug reporting You can find the bug tracker here [[https://bugs.debian.org/cgi-bin/pkgreport.cgi?repeatmerged=no&src=hkl][libhkl]] - Debian/Ubuntu: #+BEGIN_SRC sh reportbug hkl #+END_SRC - Other OS: You just need to send an [[mailto:submit@bugs.debian.org?subject=%20My%20problem%20with%20hkl...&body=Package:%20hkl%0AVersion:%20@VERSION@%0A%0AI%20found%20this%20problem%20in%20hkl][email]] *** Providing patches You can send your patch to [[mailto:picca@synchrotron-soleil.fr][Picca Frédéric-Emmanuel]] using =git= and =git-email=. Here is a minimalist example of the workflow to prepare and send patches for integration into the hkl library. Suppose you want to add a new feature, you need first to create a new branch from the =next= one: #+BEGIN_SRC sh git checkout -b my-next next #+END_SRC hack, hack: #+BEGIN_SRC sh git commit -a #+END_SRC more hacks: #+BEGIN_SRC sh git commit -a #+END_SRC Now that your new feature is ready, you can send by email your work using =git format-patch= for review: #+BEGIN_SRC sh git format-patch origin/next #+END_SRC which will generate a bunch of ~0001\_xxx~, ~0002\_xxx~, ... patches Then you can configure =git send-email= in order to send the patches for review. #+BEGIN_SRC sh git config sendemail.to "picca@synchrotron-soleil.fr" #+END_SRC and send then with this command: #+BEGIN_SRC sh git send-email 0001-xxx.patch, 0002-xxx.patch, ... #+END_SRC If it does not work, you can use your usual email software and send these generated patches to the [[mailto:picca@synchrotron-soleil.fr][author]]. ** Howto's *** Add a diffractometer To add a new diffractometer, you just need to copy the ~hkl/hkl-engine-template.c~ into ~hkl/hkl-engine-INSTITUT-BEAMLINE-INSTRUMENT.c~ where you replace the upper case with the appropriate values. The template file is compiled during the build process to ensure that it is always valid. Then you just need to follow the instruction found in the template. If you need some precision about the process, do not hesitate to contact the main author. Do not forget also to add this new file into ~hkl/Makefile.am~ with other diffractometers in the hkl_c_sources variable (please keep the alphabetic order). *** Work on the documentation The documentation system is written with [[http://orgmode.org/][org-mode]], and the [[http://orgmode.org/worg/org-contrib/babel/][babel]] extension which allow to introspect the library and generate part of the documentation using the hkl library. Python code is executed during the build process to generate the Diffractometer section of the documentation. To work on the doc and test the embedded python code, it is necessary to setup a few environment variables and start emacs with the right LD_LIBRARY_PATH. In order to simplify the process a make target was written. You just need to type: #+BEGIN_SRC sh cd Documentation make doc-edit #+END_SRC and start to contribute. If you do not have emacs, you can nevertheless contribute by editing the ~Documentation/hkl.org.in~ file which is text only. The most expected contributions are for now: * English correctness * a nicer css * Bindings The hkl library uses the gobject-introspection to provide automatic binding for a few languages. ** Python You can test the binding directly from the source directory with these commandes if ipython is installed. #+BEGIN_SRC sh cd tests/bindings make ipython #+END_SRC Then you have the Hkl module preloaded into the ipython environment. hkl computation: As you can see there are four available solutions. Let's compute an hkl trajectory and select the first solution. If we look at the three other solutions, we can see that there is a problem of continuity at the begining of the trajectory. Hey, what is happening with theses solutions! Let's look closely to real numbers. The last column is the distance to the diffractometer current position. This distance is for now expressed like this: $\sum_{axes} \left|\text{current position} - \text{target position}\right|$ #+BEGIN_EXAMPLE [0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0 [0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718 [0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612 [0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188 [0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723 [0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205 [0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235 [0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288 [0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726 [0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098 [0.0, 114.39338605351007, 21.85448296702796, -97.074145033719, 0.0, 62.93506298693471] 0.218163667981 [0.0, -128.54167683157993, 21.85448296702796, -97.07414574435087, 0.0, -62.93506298693471] 6.59846359365 [0.0, -51.45832316842005, -21.85448296702796, 97.07414574435087, 0.0, 62.93506298693471] 6.93673746356 [0.0, 65.60661394648993, -21.85448296702796, 97.074145033719, 0.0, -62.93506298693471] 7.03385205725 [0.0, 113.28316795475283, 28.583837575232764, -99.29953499008337, 0.0, 65.16540747008955] 0.21459359225 [0.0, -131.88223933078322, 28.583837575232764, -99.29953638594702, 0.0, -65.16540747008955] 6.69038531388 [0.0, -48.11776066921677, -28.583837575232764, 99.29953638594702, 0.0, 65.16540747008955] 7.18296350386 [0.0, 66.71683204524717, -28.583837575232764, 99.29953499008337, 0.0, -65.16540747008955] 7.37556986959 [0.0, 112.56286877075006, 34.90573305321372, -101.42496979586187, 0.0, 67.97568017857415] 0.209053830457 [0.0, -135.4128111996365, 34.90573305321372, -101.42497263302461, 0.0, -67.97568017857415] 6.81174779784 [0.0, -44.58718880036348, -34.90573305321372, 101.4249726330246, 0.0, 67.97568017857415] 7.41581162393 [0.0, 67.43713122924994, -34.90573305321372, 101.42496979586187, 0.0, -67.97568017857415] 7.7353201851 [0.0, 112.2291126083182, 40.78594007247402, -103.43941832567457, 0.0, 71.33706722449408] 0.202280147961 [0.0, -139.10795451001587, 40.78594007247402, -103.43942357602316, 0.0, -71.33706722449408] 6.96173845391 [0.0, -40.89204548998411, -40.78594007247402, 103.43942357602312, 0.0, 71.33706722449408] 7.63358787543 [0.0, 67.7708873916818, -40.78594007247402, 103.43941832567457, 0.0, -71.33706722449408] 8.10986069093 [0.0, 112.27578927291766, 46.214916130901734, -105.33741042812996, 0.0, 75.22640762217479] 0.196576175748 [0.0, -142.95061850160724, 46.214916130901734, -105.3374188005596, 0.0, -75.22640762217479] 7.13962155618 [0.0, -37.04938149839278, -46.214916130901734, 105.33741880055959, 0.0, 75.22640762217479] 7.83557762281 [0.0, 67.72421072708234, -46.214916130901734, 105.33741042812996, 0.0, -75.22640762217479] 8.49706672677 [0.0, 112.697137434232, 51.201667684695856, -107.11797492933192, 0.0, 79.63023536264535] 0.202327153157 [0.0, -146.9330984641471, 51.201667684695856, -107.11798610058318, 0.0, -79.63023536264535] 7.34491897177 [0.0, -33.0669015358529, -51.201667684695856, 107.11798610058317, 0.0, 79.63023536264535] 8.02185610877 [0.0, 67.30286256576798, -51.201667684695856, 107.11797492933192, 0.0, -79.63023536264535] 8.89597005568 [0.0, 113.49085964586432, 55.76762791023837, -108.78347437395287, 0.0, 84.54867879242364] 0.208455586312 [0.0, -151.05782007465257, 55.76762791023837, -108.78348605483542, 0.0, -84.54867879242364] 7.57761473366 [0.0, -28.942179925347414, -55.76762791023837, 108.78348605483538, 0.0, 84.54867879242364] 8.19307323084 [0.0, 66.50914035413568, -55.76762791023837, 108.78347437395287, 0.0, -84.54867879242364] 9.30675279514 [0.0, 114.6614608037443, 59.941489465646214, -110.3385360479293, 0.0, 90.00000081324956] 0.215562935229 [0.0, -155.33854118146962, 59.941489465646214, -110.33854432979601, 0.0, -89.99999918675044] 7.83839602383 [0.0, -24.661458818530395, -59.941489465646214, 110.33854432979601, 0.0, 90.00000081324956] 8.3502621071 [0.0, 65.3385391962557, -59.941489465646214, 110.3385360479293, 0.0, -89.99999918675044] 9.7307712883 #+END_EXAMPLE As you can see for the first point of the trajectory, the 2nd, 3rd and 4th solution have identical distances to the current position of the diffractometer, so they are un-ordered: #+BEGIN_EXAMPLE [0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0 [0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718 [0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718 #+END_EXAMPLE Then the problem arises with the second and third solution. You can see some sort of reorganisation of the solutions. 2 -> 3, 3 -> 4 and 4 -> 2 then the order will stick unchanged until the end of the trajectory. This is because the distance is computed relatively to the current position of the diffractometer: #+BEGIN_EXAMPLE [0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612 [0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188 [0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723 [0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205 [0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235 [0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288 [0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726 [0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098 #+END_EXAMPLE #+BEGIN_QUOTE *Warning* When you compute a trajectory, start from a valid position (the starting point must be the real first point of your trajectory) then use only the closest solution for the next points of the trajectory. (first solution of the geometries list) #+END_QUOTE * Releases #+INCLUDE: "@top_srcdir@/NEWS" :minlevel 2 * Todo ** hkl *** TODO ESRF BM28 PSIC We need the XMaS/BM28 diffractometer to be fully integrated within the hkl library used within BLISS. There are modes missing, such as fixed incidence (or fixed exit) calculations not supported in the 20 "Diffractometers" already implemented. We need all of the modes already implemented within E6C with a redefinition of the angles (delta, eta, chi, phi, nu, mu)(in this order of appearance), plus the additional modes in order to calculate (H,K,L) positions with fixed (grazing) incident angles in both horizontal and vertical (sample surface) geometries. The XMaS/BM28 diffractometer follows (exactly) the convention and geometry of Hoydoo You's paper attached. Fig. 1 in the paper is the XMaS/BM28 geometry. The geometry is also called 4S + 2D (4 sample rotations plus 2 detector rotations). The vertical 2theta is delta, supported by the horizontal 2theta nu. The sample sits on phi, sitting on chi, sitting on eta, sitting on mu. In Frédéric-Emmanuel Picca's laboratory frame where x is along the beam (y in the paper), y is horizontal perpendicular to the beam (z in the paper) and z is vertical (x in the paper), with all the angles at 0, we have the following: * delta-axis along -y, i.e. (0 -1 0) * eta-axis along -y, i.e. (0 -1 0) * chi-axis along +x, i.e. (1 0 0) * phi-axis along -y, i.e. (0 -1 0) * nu-axis along +z, i.e. (0 0 1) * mu-axis along +z, i.e. (0 0 1) I will come back with the grazing incidence geometries implemented within SPEC that need to be implemented here. *** TODO [#A] =HklEngine= *q/q2* Fix all these engines... This engine takes into account only the *gamma* and *delta* axes. so diffractometers with 3 axes for the detector are wrong. It would be nice to take into account all the detector holder AND the position of the detecteor on the diffractometer arms (for now the detector is always on the last axis). *** TODO [#A] HklSource Create a parameter for the wavelength. This is just internally for the futur trajectory system, so no need to change the signature of hkl_geometry_vawelength get/set *** TODO [#A] SOLEIL SIRIUS KAPPA Investigation of a problem saw on Sirius Kappa geometry. The idea is to compute a trajectory from $[0, 0, 1]$ to $[0, 0, 6]$ on a $GaAs$ sample. #+BEGIN_SRC sh Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,40.795148838481424,134.08834052117254,-55.57809067120416,-2.23369e-2,14.824478553649875]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 40.795148838481424 (Range (-180.0) 180.0),Parameter "kappa" 134.08834052117254 (Range (-180.0) 180.0),Parameter "kphi" (-55.57809067120416) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 14.824478553649875 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" 2.1481674408578524e-8 (Range (-1.0) 1.0),Parameter "k" 6.392014061803081e-8 (Range (-1.0) 1.0),Parameter "l" 1.0000000132413767 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 7.412239314132745 (Range (-180.0) 180.0),Parameter "chi" 89.72020738176312 (Range (-180.0) 180.0),Parameter "phi" 91.03899980444716 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.5513657893786 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 1.1114190632688228 (Range 0.0 1.0),Parameter "alpha" 89.91560430137815 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 1.1114162413072137 (Range (-1.0) 1.0),Parameter "qpar" 2.5045470426602284e-3 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 14.824495004588014 (Range (-180.0) 180.0),Parameter "alpha" 89.91560430137815 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 7.414401593159588 (Range (-180.0) 180.0),Parameter "azimuth" 89.78541978058817 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 7.410055570443473 (Range (-180.0) 180.0),Parameter "azimuth" 89.78541978058817 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])] Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,47.97247473743512,134.654265266118,124.92415016158583,-2.23369e-2,29.904632884360968]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 47.97247473743512 (Range (-180.0) 180.0),Parameter "kappa" 134.654265266118 (Range (-180.0) 180.0),Parameter "kphi" 124.92415016158583 (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 29.904632884360968 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" (-1.3839931497468412e-9) (Range (-1.0) 1.0),Parameter "k" (-4.913404854447784e-10) (Range (-1.0) 1.0),Parameter "l" 2.000000003360829 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 14.95231642186499 (Range (-180.0) 180.0),Parameter "chi" 89.9575990161042 (Range (-180.0) 180.0),Parameter "phi" 271.9039918460157 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" (-26.325999847139332) (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 2.2228381008394895 (Range 0.0 1.0),Parameter "alpha" 89.96116221471468 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 2.222832456913507 (Range (-1.0) 1.0),Parameter "qpar" (-5.009095284686147e-3) (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 29.90464045486422 (Range (-180.0) 180.0),Parameter "alpha" 89.96116221471468 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 14.952081490954424 (Range (-180.0) 180.0),Parameter "azimuth" 90.09480115642252 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 14.952481262345229 (Range (-180.0) 180.0),Parameter "azimuth" 90.09480115642252 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])] Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,56.25907471532187,133.92128004831832,-55.45556970293517,-2.23369e-2,45.53873596992208]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 56.25907471532187 (Range (-180.0) 180.0),Parameter "kappa" 133.92128004831832 (Range (-180.0) 180.0),Parameter "kphi" (-55.45556970293517) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 45.53873596992208 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" 8.37724528421826e-9 (Range (-1.0) 1.0),Parameter "k" 2.018612859089285e-8 (Range (-1.0) 1.0),Parameter "l" 2.999999983141756 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 22.76936798418434 (Range (-180.0) 180.0),Parameter "chi" 89.64969149765572 (Range (-180.0) 180.0),Parameter "phi" 91.0547235659273 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.50191592522592 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 3.334257126919726 (Range 0.0 1.0),Parameter "alpha" 89.97807925598289 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 3.334248661038927 (Range (-1.0) 1.0),Parameter "qpar" 7.513639271725189e-3 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 45.53874024285007 (Range (-180.0) 180.0),Parameter "alpha" 89.97807925598289 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 22.771374111123095 (Range (-180.0) 180.0),Parameter "azimuth" 89.8380685773065 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 22.767244039797937 (Range (-180.0) 180.0),Parameter "azimuth" 89.8380685773065 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])] Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,64.64191214924969,133.78682078017752,-55.41938838621407,-2.23369e-2,62.132688461209455]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 64.64191214924969 (Range (-180.0) 180.0),Parameter "kappa" 133.78682078017752 (Range (-180.0) 180.0),Parameter "kphi" (-55.41938838621407) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 62.132688461209455 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" 9.177457430250849e-9 (Range (-1.0) 1.0),Parameter "k" 2.5693823994163015e-8 (Range (-1.0) 1.0),Parameter "l" 3.9999999929703476 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 31.06634423136446 (Range (-180.0) 180.0),Parameter "chi" 89.5927920859556 (Range (-180.0) 180.0),Parameter "phi" 91.00504369590071 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.51996903181714 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 4.44567618639551 (Range 0.0 1.0),Parameter "alpha" 89.9881895320358 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 4.445664898550648 (Range (-1.0) 1.0),Parameter "qpar" 1.0018187400499787e-2 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 62.13269076337942 (Range (-180.0) 180.0),Parameter "alpha" 89.9881895320358 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 31.068363501362125 (Range (-180.0) 180.0),Parameter "azimuth" 89.83747231179481 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 31.064152026450454 (Range (-180.0) 180.0),Parameter "azimuth" 89.83747231179481 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])] Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,73.83399863752925,133.64586701159254,-55.35712475482595,-2.23369e-2,80.33702663350934]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 73.83399863752925 (Range (-180.0) 180.0),Parameter "kappa" 133.64586701159254 (Range (-180.0) 180.0),Parameter "kphi" (-55.35712475482595) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 80.33702663350934 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" 2.7577312257761425e-9 (Range (-1.0) 1.0),Parameter "k" 7.650403950118726e-9 (Range (-1.0) 1.0),Parameter "l" 4.999999999622215 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 40.168513316578995 (Range (-180.0) 180.0),Parameter "chi" 89.53300638651663 (Range (-180.0) 180.0),Parameter "phi" 90.9773899242238 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.50326819560394 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 5.557095242340622 (Range 0.0 1.0),Parameter "alpha" 89.99619673890915 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 5.557081132533362 (Range (-1.0) 1.0),Parameter "qpar" 1.2522734784728349e-2 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 80.33702737486469 (Range (-180.0) 180.0),Parameter "alpha" 89.99619673890915 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 40.17045932119529 (Range (-180.0) 180.0),Parameter "azimuth" 89.82724901343079 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 40.16632251480728 (Range (-180.0) 180.0),Parameter "azimuth" 89.82724901343079 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])] Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,84.086619565407,134.11156620489382,125.37371040144704,-2.23369e-2,101.43713587367031]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 84.086619565407 (Range (-180.0) 180.0),Parameter "kappa" 134.11156620489382 (Range (-180.0) 180.0),Parameter "kphi" 125.37371040144704 (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 101.43713587367031 (Range (-180.0) 180.0)]) [Engine "hkl" [Parameter "h" 8.392762843275724e-10 (Range (-1.0) 1.0),Parameter "k" 2.459154264227675e-9 (Range (-1.0) 1.0),Parameter "l" 6.0000000015375905 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 50.718567936651276 (Range (-180.0) 180.0),Parameter "chi" 89.72999512595882 (Range (-180.0) 180.0),Parameter "phi" 272.0056587726913 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" (-26.58708882570157) (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 6.668514293021504 (Range 0.0 1.0),Parameter "alpha" 90.00451897705055 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 6.6684973612522915 (Range (-1.0) 1.0),Parameter "qpar" (-1.5027281967821613e-2) (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 101.43713499280318 (Range (-180.0) 180.0),Parameter "alpha" 90.00451897705055 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 50.71877816056822 (Range (-180.0) 180.0),Parameter "azimuth" 90.20844936572345 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 50.71800112341318 (Range (-180.0) 180.0),Parameter "azimuth" 90.20844936572345 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]) #+END_SRC As we can see the phi and kphi motor switch from time to time to another solution which is at around 180° of the other solutions. #+CAPTION: plot the [0,0,1] -> [0,0,6] trajectory from two different starting point and different step size. [[./figures/sirius-s.svg]] #+CAPTION: plot the [0,0,1] -> [0,0,6] idem previous figure but move the diffractometer. [[./figures/sirius-m.svg]] #+CAPTION: zoom on the 2 solutions. [[./figures/sirius-m-zoom.svg]] #+CAPTION: plot the [0,0,1] -> [0,0,6] for different number of steps [[./figures/traj_n.svg]] *** TODO [0/2] PetraIII **** TODO computation problem Dear Teresa, Using the prruptest.txt ubmatrix I see that the value of psi is offset by 45 degrees. I expect it to be 0 degrees when azimuth reference vector is 0 0 1 that is along the beam. See below the returned numbers. This might have to do with the definition of the beam axis in the controller. Otherwise now when I change reference vector by 90 degrees the computed value is changed by 90 degrees. That is a progress. Can you contact Frederic and ask him about this ? Best regards, Sonia See below p09/door/haspp09.01 [9]: setaz 1 0 0 p09/door/haspp09.01 [10]: wh Engine: hkl Mode: psi_constant_vertical H K L = 0.00000 3.00605 -0.00000 Ref = 1.00000 0.00000 0.00000 Azimuth (Psi - calculated) = -45.00005 Azimuth (Psi - set) = 0.00000 Wavelength = 2.07957 Delta Theta Chi Phi Mu Gamma 45.77575 22.88783 90.00000 182.85400 0.00000 -0.00000 p09/door/haspp09.01 [11]: setaz 0 0 1 p09/door/haspp09.01 [12]: wh Engine: hkl Mode: psi_constant_vertical H K L = 0.00000 3.00605 -0.00000 Ref = 0.00000 0.00000 1.00000 Azimuth (Psi - calculated) = -135.00005 Azimuth (Psi - set) = 0.00000 Wavelength = 2.07957 Delta Theta Chi Phi Mu Gamma 45.77575 22.88783 90.00000 182.85400 0.00000 -0.00000 where: Azimuth (Psi - calculated) is the value of the pseudomotor psi. Azimuth (Psi - set) is the value set in the parameter psi of the current mode. Hi Frederic, This is the UB matrix: Best regards, Sonia Created at 2015-01-21 12:35 Crystal prruptest Wavelength 2.07957463938 A 8.03656 B 8.03656 C 8.03656 Alpha 90.0 Beta 90.0 Gamma 90.0 R0 0 0.0 1.0 0.0 0 1 0.0 14.8979 90.0 182.854 0.0 29.7959 R1 1 1.0 0.0 1.0 0 1 0.0 14.8979 0.0 182.854 0.0 29.7959 Mode psi_constant_vertical PsiRef 0.0 0.0 1.0 U00 -0.580 U01 0.000 U02 0.525 U10 0.000 U11 0.782 U12 -0.000 U20 -0.525 U21 -0.000 U22 -0.580 Ux 179.999952315 Uy 42.14605 Uz -179.999932647 SaveDirectory /home/p09user/crystals/ **** TODO another question J'ai un probleme avec la position que le controlleur calcule avec la matrice UB que nous t'avons envoye. See sequence of emails echanges avec Teresa. >>>> I am at 0 3.00605 0 with phi -182 and psi calculated is -135 >>>> When I freeze psi at -135 and type ca 0 3.00605 0 the controller >> should return to me the positions at which I am. But no he tells me that I >> have to go to 178 degrees in phi that is turning by 360 degrees. Est-ce un probleme avec la trajectoire selectionnee ? Est-ce qu'il est possible de definir des cut-points comme dans spec avec ta librairie ? *** TODO [2/4] HklParameter - [X] method to use min/max to check for the validity - [X] add a method to get the axis_v and quaternion of the HklAxis this method will return NULL if this is not relevant. hkl_parameter_axis_v_get and hkl_parameter_quaternion_get - [ ] degenerated an axis is degenerated if its position have no effect on the HklPseudoAxis calculus. Add a degenerated member to the axis. that way it would be possible to check a posteriori for this degenerescencence. - [ ] Add a description for each parameters. *** TODO This will help for the documentation and the gui. *** TODO HklGeometryList different method to help select a solution. this select solution can depend on the geometry for example the kappa axis must be in one side of the plane. *** TODO add a fit on the Hklaxis offsets. *** TODO API to put a detector and a sample on the Geometry. *** TODO HklSample **** TODO [#B] unit test: hkl_sample_affine. Check this: lattice=1.540000;1.540000;1.540000;90.000000;90.000000;90.000000;0;0;0;0;0;0 uxuyuz=0.000000;0.000000;0.000000 reflection=1.540000;0.159010;1.256718;0.796660;1;0.000000;0.000000;0.000000;0.000000;0.000000 reflection=1.540000;0.206208;0.342357;-0.080346;1;0.000000;0.000000;0.000000;0.000000;0.000000 reflection=1.540000;0.206208;0.342357;-0.080346;1;0.000000;0.000000;0.000000;0.000000;0.000000 A, B, C, Alpha, Beta, Gamma, Ux, Uy, Uy: 17764892.133, 5793679.092, 15733785.198, 179.997, 179.999,452408725.23, -575727594.04, -1913661011.01 (affine) 1rst finetness all the reflections are non collinear the affine method should warn the user about this. *** TODO HklEngine "zone" *** TODO HklEngine "custom" for now this pseudoaxis let you select the axis you want to use for the computation. *** TODO HklEngine "q/q2" add a "reflectivity" mode This mode should have the surface as parameters and the incident angle is equal to the emergence angle. *** TODO create a macro to help compare two real the right way fabs(a-b) < epsilon * max(1, abs(a), abs(b)) *** TODO add an hkl_sample_set_lattice_unit() *** TODO SOLEIL SIXS **** DONE find the right solutions. :zaxis: The cosinus and sinus properties are not enough to find the solution expected by the users. The idea is to use the Ewalds construction to generate a valid solution from the first one obtain numerically. The basic idea is to rotate the hkl vector around the last axis of the sample holder until it intersect again the Ewalds sphere. Then we just need to fit the detector position. This way the solution can be entirely generic (not geometry specific). Nevertheless it is necessary to propose this only for the hkl pseudo axes. I will add this special feature in the Mode. So it will be possible to add thoses special cases easily. **** TODO Add the DEP diffractometer geometry This diffractometer is a Newport one based on the kappa 6 circles ones. But instead of a kappa head, they use an Hexapod head. This head can be put horizontally or vertically. *** TODO generalisation of the z-axis hkl solver first we need the degenerated member of the Axis. thaht way it could be possible to find the last non degenerated axis for the detector fit. *** TODO investigate the prigo geometry. *** TODO augeas/elektra for the plugin configure part. *** TODO logging **** TODO [1/2] add in a few methods. + [X] hkl_pseudo_axes_values_set + [ ] hkl_sample_affine **** TODO gir logging It would be nice to generate the library logging using the .gir information. So instead of writing the logging code for each method, it would be better to have a generic method for this purpose. **** TODO parsable logging information. A parsable logging format would help to setup some re-play unit test. This way it could help during the developpement process (modification of the hkl internals) to be confident that computation are ok. *** TODO performances + Investigate [[http://liboil.freedesktop.org/wiki/][liboil]] to speed calculation (in HklVector, HklMatrix and HklQuaternion) + Avoid to call =hkl_engine_prepare_internal= at each computation. ** documentation *** TODO [1/6] rewrite documentation in org-mode - [-] embedding code into the org file. - [-] [1/4] python. - [X] auto generation of the diffractometer descriptions. - [ ] trajectories explanations. - [ ] trajectories tests. - [ ] unit tests output? - [ ] asymptote. - [X] need to check if templates could be generated using the hkl python binding for all diffractometer geometries. - [ ] need to add a description for the diffractometer, the mode, the parameters. - [ ] need a nice css for the generated doc. - [ ] check if org-info.js could be usefull. - [ ] add documentation explaining the sector-cuts a la hkl. *** TODO bug with asymptote on macbook #+begin_src shell picca@cush:~/src/repo.or.cz/hkl$ export MESA_GL_VERSION_OVERRIDE=4.5 picca@cush:~/src/repo.or.cz/hkl$ make #+end_src gives #+begin_src shell /usr/bin/asy -config "" -d -render=4 -f png -o 3S+1D.png 3S+1D.asy 0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES GL Compile error 1: #version 300 2: #extension GL_ARB_uniform_buffer_object : enable 3: #define MATERIAL 4: #define ORTHOGRAPHIC 5: #define Nlights 3 6: #define Nmaterials 48 7: #define WIDTH 8: in vec3 position; 9: 10: #ifdef NORMAL 11: 12: #ifndef ORTHOGRAPHIC 13: uniform mat4 viewMat; 14: out vec3 ViewPosition; 15: #endif 16: 17: uniform mat3 normMat; 18: in vec3 normal; 19: out vec3 Normal; 20: 21: #endif 22: 23: #ifdef MATERIAL 24: in int material; 25: flat out int materialIndex; 26: #endif 27: 28: #ifdef COLOR 29: in vec4 color; 30: out vec4 Color; 31: #endif 32: 33: #ifdef WIDTH 34: in float width; 35: #endif 36: 37: uniform mat4 projViewMat; 38: 39: void main() 40: { 41: vec4 v=vec4(position,1.0); 42: gl_Position=projViewMat*v; 43: #ifdef NORMAL 44: #ifndef ORTHOGRAPHIC 45: ViewPosition=(viewMat*v).xyz; 46: #endif 47: Normal=normalize(normal*normMat); 48: #endif 49: 50: #ifdef COLOR 51: Color=color; 52: #endif 53: 54: #ifdef WIDTH 55: gl_PointSize=width; 56: #endif 57: 58: #ifdef MATERIAL 59: materialIndex=material; 60: #endif 61: } #+end_src #+begin_src shell /usr/bin/asy -config "" -d -render=4 -f png -o B_b3_y.png B_b3_y.asy 0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES #+end_src #+begin_src shell GL Compile error 1: #version 300 2: #extension GL_ARB_uniform_buffer_object : enable 3: #define MATERIAL 4: #define ORTHOGRAPHIC 5: #define Nlights 3 6: #define Nmaterials 48 7: #define WIDTH 8: in vec3 position; 9: 10: #ifdef NORMAL 11: 12: #ifndef ORTHOGRAPHIC 13: uniform mat4 viewMat; 14: out vec3 ViewPosition; 15: #endif 16: 17: uniform mat3 normMat; 18: in vec3 normal; 19: out vec3 Normal; 20: 21: #endif 22: 23: #ifdef MATERIAL 24: in int material; 25: flat out int materialIndex; 26: #endif 27: 28: #ifdef COLOR 29: in vec4 color; 30: out vec4 Color; 31: #endif 32: 33: #ifdef WIDTH 34: in float width; 35: #endif 36: 37: uniform mat4 projViewMat; 38: 39: void main() 40: { 41: vec4 v=vec4(position,1.0); 42: gl_Position=projViewMat*v; 43: #ifdef NORMAL 44: #ifndef ORTHOGRAPHIC 45: ViewPosition=(viewMat*v).xyz; 46: #endif 47: Normal=normalize(normal*normMat); 48: #endif 49: 50: #ifdef COLOR 51: Color=color; 52: #endif 53: 54: #ifdef WIDTH 55: gl_PointSize=width; 56: #endif 57: 58: #ifdef MATERIAL 59: materialIndex=material; 60: #endif 61: } #+end_src #+begin_src shell /usr/bin/asy -config "" -d -render=4 -f png -o B_a.png B_a.asy 0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES #+end_src ** [0/3] gui - [ ] change the color of fitparameter cells if they differ from the current sample values. - [ ] check if a [[https://github.com/jonathanslenders/python-prompt-toolkit/tree/master/examples/tutorial][REPL]] could be integrated to provide an autocad like interface. - [ ] add tooltips using hkl_parameter_description_get for the pseudo axes and the mode parameters. ** hkl3d *** TODO add a method to find the 3D models in the right directories. ** packaging *** TODO add a .spec file for rpm generation. ** TODO binoculars-ng *** TODO remove usage of repa. This package is no longer provided by Debian. Try to find a replacement for the Shape. *** TODO [mars] Exclude data based on the actuator position. For exemple remove all data where phi > 268 and phi < 272 and phi > 88 phi < 92 =/nfs/ruche/mars-soleil/com-mars/2024_Run1/20232102/binoculars/config_qxqyqz.ini= for scan 127-135. hkl-5.1.7/Documentation/figures/0000775000175000017500000000000015144640567015555 5ustar00piccapiccahkl-5.1.7/Documentation/figures/m1-11.dat0000664000175000017500000000353015144640560016775 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.795148838481424 134.088340521172540 -55.578090671204158 -0.022336900000000 14.824478553649875 0.000000 0.000000 1.454545 -0.519320200000000 43.806822760693855 134.699173258415186 124.898719421596411 -0.022336900000000 21.631027888459080 0.000000 0.000000 1.909091 -0.519320200000000 47.272270521455795 134.663292942930696 124.916656491015502 -0.022336900000000 28.515821774030911 0.000000 0.000000 2.363636 -0.519320200000000 50.799541156706375 134.614380653440008 124.961695707137295 -0.022336900000000 35.507536366647599 0.000000 0.000000 2.818182 -0.519320200000000 54.400871058597779 134.558783263233209 125.018919295748390 -0.022336900000000 42.638809595906636 0.000000 0.000000 3.272727 -0.519320200000000 58.486466730606544 133.885612866771112 -55.446989013984215 -0.022336900000000 49.947951730574125 0.000000 0.000000 3.727273 -0.519320200000000 61.900019187605686 134.437430128115267 125.143770198407154 -0.022336900000000 57.481389921502739 0.000000 0.000000 4.181818 -0.519320200000000 66.240375731728605 133.761531531133272 -55.410317548723476 -0.022336900000000 65.297336845717979 0.000000 0.000000 4.636364 -0.519320200000000 69.977235278456675 134.309331314806485 125.259816128766317 -0.022336900000000 73.471599845447642 0.000000 0.000000 5.090909 -0.519320200000000 74.727450269522990 133.632870840991842 -55.349454108211539 -0.022336900000000 82.107358205505832 0.000000 0.000000 5.545455 -0.519320200000000 79.002012485551376 134.177964670419072 125.347572176178900 -0.022336900000000 91.352902210414982 0.000000 0.000000 6.000000 -0.519320200000000 84.475827513793845 133.501851715653856 -55.246517776935548 -0.022336900000000 101.437135910968124hkl-5.1.7/Documentation/figures/e2k_4.png0000664000175000017500000045651015136610441017167 0ustar00piccapiccaPNG  IHDR,L5־sRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATxkcy}!%[f8nK,QIiNR'ʦvmV.Nb&qODkVnbYDlE]lKl9Z7KH"5n[_ݿ_9/#qy$M4 4 ,8677V{1%'VZ8bKNUe p,8*JDDloo -N.ZZ#=ƑX8{VWW}l๾~P *,8qbww7"aQ KNjJEX p,8Qvvvbee%.\0p pj5U(Ҽ'& æ;MZZJe豵Z-jc8a jV3>lZ۱10/Z큰2"bww7zafUX X03[[[SZ-vwwgHi:Ipۺwww#"bee%VWWR_Vcgg'ֆ#mmmnu%j'X[[ʊ%ǪV ]dVMְXd… 20.8TXpljZDMsjZXUmK0! C` ( %PK0@a,X! C` ( %PK }pS`>P|#3i0'K 4%r/,(D4H$>{:́~Oi#м,(}XX(GDB/g<,(G}чbqq)44(X\\p ,~4ZՕi$I9rG>3$`IRjUX$ID$k 8KG?`,,,EDi3^*"I_p,jg%IR)JrpB` \ry!4AxI$I)Ѩ- X07胱R)Ae -UIi- X07=h,..֯L;75,KRk 8+(DD˦.hh 8#EcqqFGWHWU[8i'` +kX6_k7dzXFv 8ܿRX۷neDDQX[8i&`ۛ4+#ֱ춅J͊F60;Kfnaa1J~e3ll[xs4M oX0s;WʾNue-t(_^yW75ip*,ζXFD\؃=_ڳ{{h4""׼θ;;c`BK\}졸qZ\|\v5"MQc?}#Ҵi#"bl;eDBܸq=ƍQ7Cz`&I 1+Jv+<%V-oySi8w馛㦛^Νm)cy\v>Ν;:f)$____? >cvbW7oDR,-넗bqq)XXXXZZߋz}/> vbˈWx[.EB'lWS./(T*G\Wz>o{/Y':x+^?"M#X\\jU\.useшyOx-wQ*caa!:X..6/Ks)0ʩ,#"?xKV"""Ib,,4o{{7&:ϝwqF85eDį/"""IJQ./6Ycoqm8To{?;"""I(/}1n{UOD'3'0o{^ -$8~c^?s?-*q*ˈ׿^ߏ4x=' Vh@֩ ,_[-oySǮ?;g~gz~vo Y.\Np $Mtޓ8 jDDZT*N-3la8)*JT*Np뱺:!RRըV+++1pGmuup .bww7677Z{Zpbi ?[j5mp*,PRhj #]rww7duu5666bmm-vvvo XJ;;;`匴#o ,g0rַTm ˹ʮoM%E˂hoi}KΜyO^J%*JTىX__yO *JFZXYYi%mַXַX J%666bee%vvvbkk+jڼGF`y嵉 .8 'Tv}&'ru+l+jd2>协;l=y^s#*wU!jACw'zxZ'~o9=~WH6q[3;RYOv="WťWUL 8jK@(}7ěḳjdo9=s.Kۛ/4w\^e[#&3hV]^fxDlF\K#& %sMθ{n~G\t<u*&'zo.c~4C${k/!N6e8ŤȸOW6/nכ+^?]~XK pweġ+OjQR+%+?rv.[Օ9gYگgϝ9o]ϟd^K<͊ߏE*c>pK pz]yf@`6 Fm'M9oR'?rdej\KNEݭ& &'˼2s+'QJ"t?"ߋ/*/pA ,)-Ry<*5G_wfՖ^W~$y[A#7Qc*)_ %_P~6iQO#_N#>kQjΤ$Ьo 'ӕo)vnI)o9Ne?<[/Rlf3xADc|H9,l>4e-Rxp'؏H҈lZT]PQXRx[^paS_z\~w|e|&OAx;LZ_ꇪymċT͠V.E7^6xNH~K"i6҈zFوx*"> kQ@5Xrbdĭo SMF2Ev7/Ą\Nu#\2J?u^h%v}>!e͝_7|QՒӌdF֤lDD#mVT6"z uFW#}QyMD1XrXJkM[h2ﯘj7DG2RDGrh7Eo5e6\fXYneRY906$=W2UIAhGdD}Ql ,9ĭo qRVSUW  ,'{p')}IDRk{7KK` ٠r!" ,[qyLfeZ#Z!e67"z4ש܋۵ZD|9"Ͱ]Ee ,9Ѭo q;l3"͝Gd-]nZ(CjۂK•~4.7tLsIzkIi7\&9#z˴﵉OyO޴욭F~8^oNe mziĵoߏ/5׾0"yyX%ef]ʞ4TWUވ:ٰk)"QaɩUb{{;"(WZ!?ő+?wYַꔭpލثVT]oy6o"HfIe9d\H_M[;Ѻoo\t7l}/*2d<,9o A}ycBIɩv`Ϝv7WٿM8ڡBM7wx+>_y꩜TP )c0lWT׬̆]U|}NPDKΌn8˚AodʼE9~}n`٪eݠV6ѭlWSo܈KҰ/ (%oy…yO v呏.Ȉ Ãe7v ̋wg3g&PM}a՝waeιNwD~=Fn궈'o|*O?'{ק++*E}lD<_DKm%'ŕG>q u2g,׷;O}7ܹyAشaȿb.7걷miT'JI)ݦ?a3tBB7LH޾++Ͱ?a%DKWx\~{;wLRY9XAZǧ<əc5Ȥ';|9I 3}˞5+G>qZUfX2@pYn/oIQ*u?ozl&kV>+FZZӐXkYV޶%s~3.'I;Yj`;TJ3njuޖ􆔝L"5FC޼Ҿ=׎[̷oN96K99h!js5NZc?u@ҚknU9AЁ$QJJQr{מ8 -fh|wF`xFtwoWV>ۼ]/Z0Pa ȮoMycqm &?-&|rrG²N_'9~8@Tg9Nsw2בֿ,{8(Ρh0[0owݍFc=q2=@r<&\M|[ՍkiX=iĹs2ZóOV竽ev"kLګҥKQyMeζ-A%'ڽ~o\~Or ?@p9U9E٩&ir؜GG^m9?ExyLx22L">UU9i%eVPY*#8Z7nr OD=ֻ^ZDݾTyMN'H =pߗSU .h۹;3x`sg'e^^q-k?oIIkƐ?:9 *#"--g*{{hmSWxɞosQ,qI$C_pT}o*;5r5V%e6hv˼1g8r[6z>^z7Iޓ9u7l_WAe뾔sC:؋F43~*>Tg oʝa%l8pDpT\{ZT/Wg<;8i#cd}K&q{SNU߰sGQY)s_}XMRͫM[t,i#"MF dՒ.{Bx)nyiQpyFnow},XJ` 3`\sgTUw}<v$ǎ7.~m? ,Bʱm}sΝqV[N{-޸:fe6Veei:;Xڽ5++ 3C[9*lJqY\KǛ9ݛ5ʶ݈K?z)E`"~4XŒ/_dn)# O:yA!-ry$s=6c:~o/&IR9"ӈ^QيVX~js䅖99uēr9]/Um9C)"ya* @` 3fm m51ep0ll_|ͫzQ>Px #μzjD)wO$u-(E4 *ۡذoG&ܼu\xY2H~u*'wI%̉Ξ{?d89)q[cGT[o>4܇T[椕coٳ1аZ2mgLfpT*O8CG_v=~Rgcw6:5dIlmmLXœYw{~+QTUN1 KڻLRy>lNc5lsRN:6rnYm9F=]h=VRDh4|s4-kiV*>#\rTh1>l-gL晰{h ]8Pַ8ߊyWaOS8dSs3./X˃T`epy-UWV&r\h&VFD,[riaya 7goϩe=Q[=wȠmekQ\=N%g $\vO쫪NN4jvx3.$(<-/x3>i9 ]шZ?4׭, +s_Hjfprstri9byqՖzK[߲d!~hF%t)f&%ǟC^6|2ncae^0L_r*0'rr\&OFkfRm9kdc$I"4FcW .HR$%FTLw\ilLpYOh4_n1fxc#^و8d#j;e V` NKpOV7:hpydSA˜9\X~a^{4a.^:dL}hD:V}_OXz|n9PJbqTh7M|\ZG\2O]Äm:xl.ʒȒ`0N.וǞmd@+9X76A5ַL˜y Kؤs>i/ŗ,Km)>\\}蹙;0N([( x#̜oTpY*`3I07 yE$$by\K\ۏFF{Rrig\A<^@6D iUZ6ˑ#̙rsF]`.ap#~\TYr)<,o%p¼p&\yxݥ77 z2ZÕ=h+0/~ϭg0%ЕC]mpWinS*Gh4+0]n&;Nj;tBˈNp9-_fP_iI *u+.ӯ\W"=e֩lV &Gy淟/8iM;6~gX)ν7q}zy4wN>TX7ʜ\V`97 6l~񸾟ýׯFb$iUW&Ѩh';.ni涾ҹsCqL#7$ɴ'~y/í?s\LFD?킓󪲴u*ppXx}}U]#^Ly?lw CՖsr a<&߄s96rnl3NDT.GڨG1iu!s{Z6'[Zi!I^;ř'DOh$/=ǏM}ig09ʗ0cʒepxK8e=Εj9' #0NR]9b%ā2iDy矎T5"NV09̼,RuaZ[[[,hE 07>^\挷ۿ +3ZSsÄcǏ께dn7FDsNue=4}n_^^TW<_CB|w4h4boo'=?*̓Ng,ַ,"Y([?o=ü6QeI) %3]yq_feeǰ꽜Ct*JC吱iB#0|B\ۯǵ'. u%Of;=+ism˱ae[q٬<.|D}y}tz~滿U9Pi4+{Z-syow^֦<-_o~fNg~_;u*a6p,@+"^ Upn[7lN$gZXn_]g8{{*fdl}扻o#zZK[DR_R"Iخ EP+*i$f8t >IDENR&ЋmID4҈G7 j4r-IQjL~eЈh,HvYi46eڲUi4v8gOf<6߉U`37M}#CF~3k,V` o=g10 0{׷,·|&~rַGwߍ.\0)#zX8K~[aeD  z.!O^*68@@9Cu ){Z'TA氠y_]\*G#MQGB‡eTO:>[9}KLx9 ,gqs_xM>ޕ c²@nU]|{VU?~͌̌țT2T|X-(O%A`ID)Å 󅇿7xkOi-y"֯ ܯ6mG pi2t3¥Q4 ILlro9vOCO͹).]?A"2C*f`921e[Ht•i=y߅Fpkp\F}aN.KbпqK *C}$\fK%ZH|VeOZ#pi5+c=\wٿ%}o>)F $X"( Ag3 RpYmw'U!9O*O߂fpi 3_aLA7J",o[ʈzeLIX5prR=lژ'@&:5U<Ѳ"4w(s=u h!vr_gBfJύK\\|;g=z!%d s,  ߒ ^=G4@a ǩ̹nziEbf<sHxyU.K#Ρ]?_)0'G퇈E˼kӔ ERb/Rz`Nsu[:@V =YMý\:;3k~]*CTTĹ A %\/AϽz<)u:T6FY8pܪe"/!K,Kn 2db;ppX^R-O 4AY;eIDY OH$bա VXTz3LvK{ ˁͼW(.cgC1LᲊHi:;AKEZqќ` Dϔkr[&6~ܖT|X+q@%A$b~QHxQݏ<_}г¥|y Ŀew? D@^ue"e1DJ})+~/L*hP4.a L:,ӗ,o,sM;4E¥BdT9\M]QU;^W(P&\:[0o4*˒X- qaB%AŔ ~ʜKRuTWѯP &0p Sg]X ys4y: ^d_ޜsP "TpYUT.A vXmf`e2ѱJڌ9.!ݖ ,taYvɪEiaS0q:S=+> @W6rSV%D|Tą A5PN b0r#+7-81@[l^+.G;пpYhLieeyV oݎ+ ˕CSbxƱԻg<9WVp Z~2T0 ".(ISӞ(i =%ZRbп H$,JXY Y41,W9*ɢ.W*P/\#`\3w- :Z /~JBeAD|8?IKg[$20h9V%Xfeځpr>ɜ`YRq 31} NupZهŮwucQAH$,cNJEWh|$\V-4q[spy˲`*__Emi[H9_7zA7ٗ>w#\kT[[Y9MJ ޸L?U GSc`ns ܦXt] )`ۚuXfNKa*Q&ha6ۏ@Df\ZWrYa 4$XqVC- BʜΪ¥Z%"`"&ק@*-+׋ˢaݠAz,l. O;,sB~]%L鸜4j =ԫE (0qL ]TܞA4hyhEա;D?LOOc߾}H$" A%2CBԝEÂeYYP.*>ہRGcj0_-& pWfۼ?Tb<Ea#20!Z2M`d<421& V#)S9,]We!6.P_N*]zEe k7'~f8y-eIw-Ȕ@D$XqNA"q+U\9ybda 9L5pa!s[pTvڀg[^3p1 ѶҴG e7Y`,: `|&X 9󆵪ăZa b%0RLo u~2T<*ΌPD(\TQ, 8'_tfo^IJЙPˁD~ݖE}-9("$܆m[s5~U28Km2dBTԝRl1uk~7o&cb[6 F`m芼e .cg: @89?5/_t j,;0 CMp'D8K .-.>?5NWy1 r소A AP( A/KgePg%[0,υXpE͢+\#N^OѵXzaz6l/e$XYԵ¥pc%|Ǥh.|ğ/ݶ l|;xx7{sJp!6fKy%؆|Dfq3 ]ӼXKҫd`t۽Zq߽O? 8#3~0o^@oG!፶-#rcꘜw%dqN#j4̂x.[^RKUE|"fg?뵮pXZ3Naz,}Yqך_B V A7P AdJ! ,S$e-LA!/_QHGx-\ۊB+ϳ;9g x^Pz: XJxq&^2yg?<0e!D#XJ毳/l{¥ FD%eI6;6OmM\c3.r(tdTN_H$\!z>т%c\\;<;/I$oH$⼃[ĹGX3p+ E_i@o8$܆y%mnEyBN$elnװEKUh08v^Oc?d?p`Qwߗt N5V0+ǐ'%5Q:,R x)_.ꅄ[jK2; B0>ۉHfޱ*"p;$Xq^AٳgzO v֗7/nPt0p * ey^AP \ #N/\]ޗ@3az,sy? [5,WmKhB#{01VPK-ěwAϡ cM܄JkbRo/?7 3\Er[ֺzxϘAErYR񝵇~&bؐ`Iy $/xɿMV.-XY$70Y_ N殩@˽z &B܏p"13GTogXY q\/*S|lkCgW[RW{ao~;&7`Zz-V;Γ0ǤRmu3.eLn~GxUno k݇A0>Px)\>D(\k$b ʣCgϽ:kʿT.aeqLQ $JָᲲhih('_ǀ-#e^9&\En"* E2t)DžBI$XKŀKoAw 6LKϊm<>>#}: h[*Q$XM!xt[` m`K3'4n_A;/5AS> Gwطo ֙RCh oaYdcӍ1Ef5抚Lg6㺴DyMWayjEsOO(sMJ=g,5Gyϟ67+bV#SNɁΕ>4 oq qn٢ <*}6e>z&N Q10pp,W @%`!-$o*XḾ^ֺ|$“o:]ôymY<@Ţ=̷`/֒ax9|HC3?j?3]zmM"X}|/߸ͯ{!@LA$Xq099={D+J;+G@,x1 w~îQ 'eT_fhy`|X>[Rm\(f֐-tX^4NlfÂzvSEuV,ZZxBKT2WFp4~4:B4J&y#v΀[猞ez5*M,) *qֺw y%D>vbҗ.O8x2#fxd ҽw^rPJ {޽{{Akn&K/ے V^{W Q `b|Lu *f v sO4NL('9䮿h˛f0,o}!;0 J͛s|sӖpUv927CaYO5'嬴1y+-'.n]=V==j~2Ix055 w}$bաA\PX"DnXtE(ge̘h̻Ek[zzKys(m/iv svܹViʣ:+q*),DK`8Ò $s-X5p(6NST͈pC˜r|Vɼ| !&֖Toٮy8?, 8P5Ic#R9,C&x|d5Z3k@wV{2PH8A<ߒ ֆl5p 劫*\巴,Q`|>jk&0en4  Q^~l? _ mQٙs[<oE&H O8:ę,[=1.l<]rRL-_YF2l} Ы}p? }56b"<\{ػ=ס<A7$s/g1܃(5 &6iys7}f^82y 27hc5j`=ܢzsU\R2[{q9y wqcw&[$d4,M!w'ZkG6 -@LTNIDE!d6ѽH6n Yq ]M+7& ¶Un6y<&~6`T v[en3Ώ uBBBmKn]nK^q_\Tq6B%AD{Bc(%AG(8 P)IQ~|עq)A3[}cnmys/Iey!V!z aF@̥+BtS2WZ.SRlJf10f1 bG!Ѿj ⿄=s?UBW@;}Qᦴb?"" 3%zh,KLџ?}:MD-'NJ{cԳT6<qN4a(r[}G @Eюsc} -س  ["\ܰZ)-#+S4@8! &۷~#~obNxLJsV x@52m)QU,s[FM&1OnLZir'&[$9oE0A)tUSN9rUv3Ë!{rU7^\;vTjXt6ƴ}`1!VZ|6,ˁ:pl`A !g}BhN wJT˴{RTmo\YX L Th;@-k+ߑo]O(~Mftܰ tJ &lA6CD^{˽ fܝ|reT8B4ᅻƃxA_\0_֛Wt֟z&UX(oZtUg8V9(y(W+U2\a)]leq\M4jchAs̅hwXX™EtYgxGnB\NչXCqO_&3۷EGXBCeW?Vsenc\H>cm<ѯ w}\QAcBAع 17}_fl,*Bzvu&zrM[| '[OTg9T ;{,A$XA B܁7poden|\_q2L]QDx=Jx沦I3w:*svs=+31 hSyhz,q7?ͯA`I1d/ą+ߔ{U†,Q~_6ʯ?pYE͢u+\V[`lZnXսC^p- {P-sa늅K]JWܒb%;\`ŀ\؎VGkt WM^=͘_X޿{<쳘;s#|\-:,,`|QsV`9XiYLg9ѿg7O,KmGEy4AR7 cAӐ%4Z/;)sɒ"6EJ=ޖ>-`$o~xi*3\o>CĹw޽= 󉉉 tM40==niFC')VU eKƫ0pVqubι<&reH fb|(_Em3 A`v$/|ۯo;c79SppXToNˏ}U\,+ǺųgٖxV[GkO.HdOy,Pp+!c#@Vo-lFϥzWӯޗDŽ4&rnF8Plv˲?)V*όKc%XELOY,G&5GFn]=N}b!s>OOO'mۆ~$✇A $W;?0&ܢꚾ+܍W8-/iq;'uWRw]oJ:.6 a]%4J GX8pn,ߏ}a~~w}7>ݒ o)A*~* R!d7;rViν6`L48;FynCmƥ֙/W3`,߽zY:Aڵu1}xz;s8y45094s?c*94QQGB@"R<~P];&SrQVXi1B0l0D'ppGs?_o܌?8|%{y}Hkb.@3L<1QV$D\ƒXO?,.wwH%9qZl@} LNKƑz6spf\LƁn^}ܓ&N2wrr[2CZf/h4.0|v(O%A $XCSSSx饗DK3x{4JP4cwE&+l J-KǤZ9SJ5LS}*f[fsXf!z==C87 ̞̇ kXM 7.V@9[9xDBH] #1XK;?SB ]iB;aK cs XPԩ6^9/u O~=}tueK@l۶ [Nʹ 0o4Tƥ1NSܱ2w%*wgюGݦM!dgS|՘9)WeG" ݖV꜍yt@6ŗ'Sإ$IR ¤r\:~\XFl\.HЉCصc&LuTqA%A:011W9.I$vv";JjXʮW$e%qp h\t"YwTh$"9 9FkD!n'_e8zH$uצƅzT@Q|g4|xϚ__ߏ'|k. &⼇APt\`A"x_)rZaE;_BӃ 䅉Pee}3`_Ȼɵ{# 51O2m66ZHznD[[e[9ߏAT7Ӧ⮸_zE2<'sfQ^OߡtZ*2 ׄLp1> e8,EyG1a 7+o9%yTQ{,\aپ8:;0v`9LWqa=|ڧ~9}o{8tm|z3{ߴmi\w QT4 ͣ: qLwTXw-z;_0642| ?3.,;T , ~.{uBF&ʒ.!HD:f5˲{V?lQh¥` ;mlP)-ǁl¶|2r#B,X,X܌$X]Lp8.Z##|%pq,,Σ!^ }Mg2et];xGDXluQo4q/xtJ_z) G`{s՛B4|_} g-796 j_?I}9)PFSۑ9ވs3B4U׷!Z">f @ah85UD|Pq .RBM잁0-fhcK /Y YZDfYp.t+M^(}o*N8^9Bda"dBiqq}[ +ńXi%ݖqt1>Ob[П9^>,?uq{yK~s``z!}a FRH]H9 el,('E=!X*'c}9;BT~BKy٬vvx/# (3>9/ڒS Ⲥ?^APK S~IUD BlG|%]4pas ߲꺋rCFsL2;h},Zo^6a^σ-[j`w-Zx{Ew'0rXlI.y`C V{LQn_r}w`hgio N-ʩ)8ombAknܧtT^Kf2[夌Qz8:V?η^3[X Wϭa]r]S9??|TqCK oI'SEv+ ,0*]nDwٸ*7ʺqYvVD=I />BZpX9vBQ.WֈȫitR{2z:mbt,a WBҽ6wm%MJsgaU7ݎWs-~!Ȃ>J+G;xŸ rei"HPo`uW3㍃w %,ȣ)S!RMkϪ2˼Bǥ}jގCm+%vYyzh,ܑ\ːs2kӜox~?!+do|%r=\wٿ(O%AD$XAP.#b=Ȋ:+.beI[*ZՄKo8_z,ǂwE(x%KږK˶j-;)Rj;LG >1,myX5uw]xKg{q_ Z, x'` 1\bbqnǿ,|m@T;H:q{*BQF.fUN IDATbE[N?sS5S p ,e3'5xk,O_/>YBRcj%iR7R$P,X r~6[0ǔ(D\G/ԓ>f|}WKO3X^yUaϮ˒~#(B &&&pMr/Rxr[O7]0(&JuFa@0qT Gјd?o ;Laan<  \ иpd|u ɋ231}w}@ K 0W,GK%z1Qx';Ki5- t:ݖfӀ5q[^yYMeY8}A`i3 ~]i[ɯU>leYp` Vy+3fUΝΝ;_̥nٸ7_pfnaW:,:Et S; ˝6w`s F[xߏ݌f }9q ~/EKTׄc5q`-4FFqC>g'IK_-q_[0u@Jl:NԒe@ka@?ͬw!nL@TMUf~*4d`0l,3roA!%A9$&''177)LOOcbbC>p_ܖ/w-\zCٔJ&_.uYn]j{ߋ7x=OwMu K %Ra$\E}x`` vYN2/;4J a@!A!*L|rrSSSx饗DKgޞ9]aor dՏI_tlML4,U R:ʻ\gjd}TtE@}WV2g1)0- (, gly)`]x蹇 nk&ljSG17; +\иrK,5n.$-y̲K |<#Q&.ÿ*=5p[j<nL^y5/>3KC ̶\LџSYEH>ћ,dcE-¡7Zi&ّqȷ&qpjaݖxǫl>!EUg"qIRc7Soggp߯䆆W-i<¶mp}Ez aFE l“88x#ͧй5/bfxzAO}ܟa= H P vV ]k©70~F\8zx;1[lLϑnݦ+UaQ?gv^5w@Gg}3>ގ+rnSy9j]~ 䲜fv]rY)?*EA  'P-UxoIO=8doӮ\Rfrpu:RrtdCc n`t+7WpYvߔ˪Hs5N^tO }eXG߁e1aՇ/ό1d^$JW.vg:e4-T,Z~ ZׯbQXgCtݙ~CX8bb,IXL+c><`*QgG1̃`I,\~յxVozX8*5:yF#rA&>[%3/l_zDtu<-]҂g*sVUer,"uRT 0n07A[bޮ\i0 \)\(_1<|=2b8! b! bϞ=NܳgzOX;&yEc@L;pY8~e!\E.iѶ.9˶2*qИ|wv+v|Ir D{ QX d+,PH.:;_V 6],̖b.\JkT,I_vDt+@Z,3ފ'SwG^N2<]X)oso שQi1^yR4M|a_[LIᲫ }`봄T]ga#06+ޕyן9%**ޕ@nRzy2СC;A*C%Ad$\۷=.@yK#p,nc+ U\X0眕e4pY1W=pY涌 A9N0_/V2ܸgek]Wߍ)p`iy \|,K we$Zz-"BrB pO];1 m40q3,)\rUFLCI!; r ~`q951m,:oO] uHFQ5\9+UI xޤBq|ӄF[-&If6x 4;,z[ht1B) Ōq@̹юE'>|c!R/sldˢpd_EM^**|AR!XeAD$RNMMajj X߉GCHDXT*(Ԁ3X徱6)筯 ~;3в0Lb@P)>I<]ۮk4M9 p%[1( +ƶ\" *acBXxքZ g24%;8:UCPxfc\p8,oliC|N dM|RxjL30Q<:v.pT !RF||X$QB_)Gn<`KcV,(xb"p|Q!``_j~U@;,<4ϻ7EO Y|"T}%b{im]Ә'Ob~~> vE+A$Q,0qoy $ѝFOiX /Lj@n*hh[2y%U ϽoIꄉ΀Ç`ibdž¿>~|rS$@VmۑngtXN5+vp9,K_4HXԶ.9>Izhr] Wž+⦄=@P")aˆq,92o< USc'2xfjf'Ǭ].K8#ݔ85Ud<ٚHQp$TǖB86AHHq>9tOUvW76/m 0Et;mkYxv_nl1^j2 枋yag(>Tnm~1цI7"W"c5YT.LFA8*4Q⥺Rdd%(Z~fJ}Vd'JF䲬NVquGH uK "&N-o^iDnaeu.k"\"w$¨‚F`,zkv9^T ᆜ>!T0p|W%qM q .Gр3Ӎ1o+_@e(vXT= ".Ka)Pg>9~{(nDcyw%" +ex8@#&PpFQg0xEϿ.PG_I!{@0&Lje0Ś9>B½|`?q-kCw}6s8^! M ßS30(qL xQjO~5(`Ƅמؿ$VAlF/ <(СCx"111"Dgʴ0?1|1]0SϝjߵK|1f]&,;b]đ'LsޑmE,V*r ÈiX&caϣX(7X x!ޜv 4khk *D O=i{Cȿp BQ!P[X)Sݏ˂a-&nAŹQƒחi0|Z9cG:1x CH=P~ŸY-$sͲ 3nx)6Cv!6Ls[CKCP Lצ\N ރ#aӃx_9 aIAD0<[ 02gX'\e!\BEKE (R}Ʒ,4d(Kw⾋7n87!APK "|N7gV_`3哌 !0.&zú5mqs-\/tt3巼|k4ߋi3uLT+ c٬\ fh.R h_kڝeW#<DːRDϾ\y +[˙i˜0ce֜ g ` Zߒ ea1I@oY~ߡ[2 ^DK/%~B=oZobB2J(?geqwe qR^GM|s`_o czuEK*^1:YĹ rYA#NAbppj⛜ϟ&ޞ|/DGY]N;dja IDATBwP7mb1&L9FL#VF u]0Ɛ3M Sd,(V~د1|0q 2{>r޹6\CpP{z씡 ;g6gj,`^0Ða!݃"<뢦w@.&YX18bӅcPE,rp"l|ˢ6dS9m%iz'ǚe0;'[BWgsq~ksp.2k6[0~q=Lܱk-$891m3޼lv!Xjbry$+Fu —Z4=u,`zf>AܪÒ DRARO?jiT*.7!<"<(OrVrHJ+;':Cymk6mgeeG.T4Mb W˹AXoRc}}ㆀip9\ o4DmI% 13U*35&Ӫz?N3+{g/S7g'`r?$ ܖP/͢x}NPWTSe6$\%!',u VrXA=q1=z(&ԛbN'Nq/C-S,z.ɺʈpS*+,JϩpxTXZ7I䣧..0*e^eTM祺ߙ!A.ඁ np6Zp߹ VKQCӪ_~pd|*nk%VFu1os[[{ EĚ4!T랳`S䳜sRj؇>\ȭ_BU7*ɱ VK gT~ˣGŋ8q&&&6zY7wJ#\Jz fv=QRw ]ƿ3aW:ˉiwm a.]g!a(zSPphXZZ3 E))/ `5 ؎jػa`%yZ" b*!3/IfЄK`eFsyx /Tp ¥zB^ VkB? S`eY&7> ~1f! ܔep.U!Z>nF.DP}[ Ov/v2/Aĭ$ VW[n<quqȱhu5Rkl1+0iRĔr?r9YHĶĦ|rXFrRG&9-;,\Aw aIA o<~y~yr4y#UMHvM,-dLߐ1:N;a@ۄ ek\&֚QS=t-VZM,,a0稻+˂P?elJwd1$n??Bjm<7anmF yІc 9 g h4K) ``r){&y-ΐbcD~K}R\/1Ym 9ɅYc@iE~?\~UHw$*fCW*Hh R95NO=Ɨ{'7Z8LV! CK ^QPYk!L.o={Xa$䷌\6vflź rX*磓cvߦYݟPP߹= 3/UB6>(ob]ZvY^hûu^ [ rXAko9=='N`||Bljķ_KaMg330PM\giܖdmyێ1m;Ə ж HZN10Uc g˧9YK>pMY~kc&tOeh7L0+=2s.b B 938AR .:m}ko8h@@Al*=5pvPjMusQ\1 c  o1rcî\(ψ>a\qop-Ho%q.fQB @mu( qaG2,leFo<(Ɋu=!`ZuFQ.6uXBԨ•}45,N?oړ_weuA܊`IA *N8S~>qfM E"Lw5aVoM$A9[Jq[~caUqCx^_a(Xf `o_2e~'`rX J.˘9>󟫂9鲄TqpUm"ekeb;6{y>j0oy A. "g%4K2#}K&vgIԅK#H# ܒ2ԛW1TuPB]e}. IR Jot){9,(/|p+jϭycc>/Aĭ6w 5\+G!_vh|pOᅂ{5xhWXEp}ee^_VF (h)lv=8e<6wA*% cRu(B,=xg_ *CA;^^{ ժ"evowm"7R9ᰲt/˜MShꔺ wÂ/\,/6a"Pū=)u>TU z x nuu`}r+cKpYO2IdvwDxr }ǂ[Fm SМ5rqZ #b=jS={}+P,K`vN+#+0k,/# (/O?A913sQ88xmqzze`epi\zlKy2Q^`"ܻQlG_|*³s&>`(**2/AAFRAR=rfM?oeZ"C;Ev#|S3Uߌ7S~4am*؅u⹯vip9\s/Sh)p~vaoR>(ʫKkX&M=dV  CK bQNyTULOOcpp` |;wrVt7_GӔ}Q~yOӄĶ86fm%EyҽFN?X r{؇+n;Eytƺ#s \U[rLat{-b|kf[$&WpO. b]UM@T ︷%?8Uؖ}Q-Poƴ0@rKFҵ) <0q}L| f[XcBe)u%mRhe0c6%?Y%Sn!1 %ߙ!|/i|Q*s`xȤwr,ʳ n]*Cq`toBADZcpQ'Oczzzc/\yn!~a v17mDβ8ɒCbVάch)%WD1Hi悢% B#/.JD&\-]8 }97 Q.cf0OwXcPNCϢf95`~6, QX !Q56]k9Hm'0,5Sne\sB ?|Jn'e-'MlȼA7+Ò aoy[&l3rWaIPL,8&:`[&Ih}jbґR?t$Ve% 9+q}59}1&Dv$[TL g3GDnn.ӏUK3캀)YrWdkfZL<3D{C^ nxb%wppU&LLi))L˚ߒ~LT'Yg]ȃ  ly=^/#?\ 5- ;w7=txֆv8Oe7F&kqY?ʫ(KNaĺKqB9, =eZ%[>?sףvu4, ge'C&)'hvffGԮvo | sKcwbee 5pwtaɵrsw`ݝ9JpL|ˑs"o`/W~nA 6p702ǞCk#L!8rdNuU!G"\`o{K"` Y,w uo-L&(iNuHNsmimy!߫͒#m l{x{~m]2jqvm̑Ip3Q`xKqB!A KT~˛`U fZB|~ Lh֋pQŃ,z.Ӷxx be̜YJ"j6Q]̜W)<K.8zq.BħF+4 r[/ϓa93pQ3V.7<%ha]~n]0Z+Jd|}}&⡚9(\ELm{z 쇄м܀dȁ`J=eK#W [&u> Lm`XĆKq3BK fppkVpS9>EU& Ʃel`𖒀2 iEKm=!F&eXWVwXV>T_CTΝ㽙w`ۢRve*.K՝sP~(FĉxwFȤpUNǜN? _@7εkrYMPr4݁6 Fz;.ρ]2>#g!nK7:C1xɰp> =44g'2ph:ҥXi k%`f:a[ I.KWh|w]*[9 nVaIAT*?~BZMQMo[$P UOhZKpM diV2, ,R'Ͳ"BR*ƦY*XXϣP, ,R/.ӏsFvc@)w>aK|+RCK Zܔh\wx5ydo?9!AlPp cxxǎ4&&&p ߿ǎe?QJԕPCKZ4thxZ)9r Ԛfc~Uݴlu Ƕ*g1X'dVKK >3W߁k8¤Q% \OjI՚ĢGO !t܂@OT(v7;eofF0.+9&+;)^]\t۾Ҷa>`.plýzo3rY1A+-*3*\|cjE; P{x)2TM{EWV{,YyL«">7bĹ TT}^ rXA7-J{d\AA-o `S|4v2|OR͗z gp\үi [Ɔg7+׆?/XW86lcvU7]y,9!Cn|d{nn'ƺ: ֬}Jݕr\j.KC;a wַNPIAjȤa'8fgiU u`@+.>WΏv:,Up,Ⱦ岜ؐy nH$ n)TѣGqE8qbS?'.B3]vz-tL=fK%2E/eF24z} .,6[I\CTf ab%VNKչRcj/$,"Ԩ+c*`r.`Z8-sL 7EKN)pp~]>`d d7}S&t L*^8BǽψfI׆O=^UV+97b8!X$XA$8~8:ji[P/z%42L鮌hUWK1Ә]&rX2%/= :dvݖ2b^ kgƀ6:.j9lߦ4XgH.VM]9=M`<?%4>z —Ӎ;5#m rtY2 @%-pi\[2]d\gQp60?z?rXu%Sv#NXW7~P.K ޡA-oOox~G~ aGKD#+*hje3E&)'hMI4Y^XX,|2%aeX oć&sؙ9_5}]+!>y2mcF[T 7!?wh z㠾9eeƓ.-98WBgOijY[S}0%E˰x 'R98}bJC3Aĭ9666ы  '\bppp]?[xٿp̅vr>VU'6_C&NHeaGQZ3% gYa&ZV޴֕P} ]DEp.pʵ m({dmFwߔԁhrjxE_>pX(ƚ%;_܅p !q 0` [q]1Ҽ1\ uiZ+eY .|@A-R{N!eG{_+QK Y;[lSI:y}Զ/w\hûu^ , B288 jhy|BT7!0BKz₝ʴ)l/i;e}op 2 <ç؁B:)=12$X¥ߗ.Q9F&8:E$ ^Tjae60{P??uvP +<ÀJ><9K&0c([*R. rOhn|m{#`vD7A/\DSDu{ҝ6$Pʑs eYp%bTꟂ pEسkrm)qmPqx^XTK.M2\8߲ ؅`8 } gl<pnqXi>ukK~+~~~>P|A7 $ QTkaoux:zw{K@U DHX+k u?v,3b;,+߫T[7e8$\sF܏g? <8ʁʆKqBK ±c0== 8qDZc2#h/a']ŒJ[00x]enh95mO}r_dgl<%VT`o2}pjnA 3&݄/uNV'[7xJhgآ;L9/]8UrM d+w` ђnLӫѫJ8|ҿ'rPv;:O$_#Oc챱 FK H0;慉СCT*=y fؔB2oJU*,A4L-vilA*\f}2NtE> $Vn,V&ݲq}=q;޵ކӲEiJR{u2,X*DwwK9  PJ ;'QrHz#nKL>2-0 Tff -P;_FOD_MJN ( { &X0q_My3q) *s]7f =J,ԅ*G3&.U8jb_]w}dA  2PTPT^C:8<01+RbVC?ut[6Ump?$L̼}M= $Vnq|{_AvbzSN҄ 2LZ | q.85~L̵*xnWL1- xcig[&At<؆5Kx cEo)u~l;!u_o%POt'&>R>!l/& f [, * aj_Eƴ#pBDϬD(^p0ȁM&(BS'_<$VnneZMlݶK 58#\J:C$eaHGŠORƒte հ0o%Fm i;K]ҥ9#̳98rp&v_Cutdj4 \V/ǯq NV1qnrYAK &L&sbùŢ_7+1W.aS0q})&eގ'I+VF'C"a08ڭ6c ޛyNInL 27RbjTA LCsL DQaO~5ۉ?Ss 9R¥Tp\ Zx̳%3Lݗo*B?B8PhbGxR~KVX%1h(ʩpXNƧ%xTP:x㪱['` >/Ač AJ-jpbTbX0PpDa:ƍu WS٥ᚄ7ie[=๯mu}Ю ,UQ]. E-Y|Kt,wҕ+e*LO?֓h^k􃱓c2/Ač9, τ"^Ei ?uYFyKJG%_!ܕN0pbw可~-s(»Y \:, jCݖBM _ǣܷ];G]>`8U 'H9, b PaGŋq ڿClNLrFĎ1hq.ՌPg.moi>K[Sg[phW6? a^˲2m5ӏ"r5IjQJff)2\G:,]KJ4 xq>ؼg-9#~&fYYŤ ^=X|2og^<#Ƥ87!AHÒ  ֐a?~?3a0M3]nb)'-U,jV"\Toה2+3>[TLVue6ԗW_xGJrN6,B{Uۨ*a3֮{Pe|H`9'VJҰ12{S @0KMp &%QD7OR~K8R*,G&{Cgs*ߧj@|װAlFH$ u7'aYyvs0`F|h0q3'6կ_ejAc*\1L󡼕=_Hq{X-,--``pg߃kG+qQ.\> M8ϝkp3DKL)D[m5<)y ǒw&lx&b<0fYTVIh5ᒫ5*\wXP S)>~aBŧϷbե6k@usA7$XAsi4 .\ׁ8p]\.]'86⡗e0->P憉KfZń";.7]T> BV@Gp!&1t%粌kzV h&j2xww ww ~pCᅃ}pupa``&ܻ\/;tXp8( 2%Ks\'T;} K','&I$HK Xc BXY.FݎbK˒J59BX7B1ek&tqx|=\ԇ;~h/\ފ \eC w%teZ.f(r z"knKJlPs3B\|'EF >\.nH='|bE0@yV4upCUﰄAÜث2k3p;r""! NmiH g9&]p(X;{+^Cm`oQkS9}9D~Nq<1ΙSp_+Nst#wP H$ 53? :l[)&*R[B;SpSO-7/AfK XjhmM[9̀ð rsvyccxf";YaT&2TAu7|e1pRtHVBR1 }ہLyaB%j3V9P%g[΂?:>7qWF}Ju|\uK`: 4Jq磧¥&b}`TFG4sD9(=s^|:Y%%AD$XAa;C%c nߒwgaujrĵwL=VLu O1>?趨Ev~kM&6㇎g˧vm۶pD0,܀(6֌* QE fUaa3=0K(՜e*g? M&T&`<m8Lj_YX?ZE)8{adML<|RztEr*R/ȣ`>s{թQ=7rI, `IA}?"Y&\[0s"#[rE8)\ƅ*eTxx.cD!Q%GLaqR,A[ 7'VEvض}Gv<<2 RPg9FD}1rXrz/3 KXKaNűz?+J%5k/10ܻ,Ehxoa֋hrXNM*p˔=F&cEǪkϙuwYR NH$ >ri {W Q%!\Ӌѫ,T7';8|R۪m_ړ_w,I$!  Ȓ$Ż-󅎦f΄Mvs&7vKَ[lsv'}7)oMا0qԗj6uv,/-±0 KFeI܊.?=#0 Td`iq9, ? hWuL^,\%OF8,crI^#p@, !ca:TDB=dX:黂FE9 )w9 (cc˒ " A'μy/uQ2."DDr9}HYV L|U-āh2Ol&L| VXySYAu ksعs7i۝aaxf)wL`z$: Bߔ8ະ};:8w9peKq+@QTFĽjEw;w9u070U&< 7$d*R iRJ]*~K15)nhIw |H$ >suweHJuv-ܖ܁!1sCK>^?#֔0^^Pp[ypq̷>~[Ъ7n`'Hw_ p.Jp0MG/a鉖z}X]M?p&e8Oe(6kU#ŐrS{s~em/V>xĸ:Y'BU~LQNn`9vr &}^  A* 8`p9i0Z24Bb]qg-}NdRYDcpدrHNc~J{+xG9,DEE‘Ow`}SZ{'7$euAlfH$ >oG$D=xW*kCEt7ޚ-o0qkƳO暌Kl^8`6/nEK{`"rYr.fNIcJq@k0.7%_&{9|ky*o=UG=%[Rpt%WZg>n6^>hP  AJ^ piu\ 4oa)e5E QN^X0XP/e[y 2ce+Khضm;+p Nlw&7W`18DA'ZAij) .pY|on^?nbPz.Ha):τ4ȇ1}j= qYR  AJx>TO:B| Q\Vb~˞,NDp8B»d y~\ ,rYA$XAĪx,u.î|!bH5L<8fT~KSpsvy )kTVs*snJ[jU"j:p=Q2t7|̈(<9>@ $H~}ps$&odD>ɵD$סldpl 6$XA*x]كpz _2E7_pfsY Lk~˸0"\+L\[ox:w+c0׿uTPJbg0whXYYXZ\m'ںܕS"{~jB*'VEKp0&B}W=ǘtU_ݍ2{a,q];;,=eqKݕavl#Dd-H " "H)P$P̋c6bk01andQ,nKҷ̳'sNfVWuUur9yWt}s8>}|K%a"tBȨJO~˜  e ۲jԳ N'b=H++'W7c,m+'g⧊ qZ 8s@%aKB!Kבs ۲lܛm_8b4շvoyvhgSyi$ca]܇մαo jWY ~ nKX,X|a oYOnw7|qėp%kbTD&|4avXpiٌҵǑ/( G!KB! ^T2&tl ]7d#.iY߲|ڻ5|=<9ͺ$p-wߧ?|GqRZT>i@<CnXڝ}#ԝ\R+xF?GxTM!Q9-q3MXF&U}a+|.ͦs~%!dBBKz*xAp-P6>vzKilW!M<}HDQAƎ8M܌͓&nK]1HߴpP v>:.s讬֭$Qg~DK հE1%<,^ c$pEMse*\&+n){.\jce'ch 6)EDHT G_$-;W*Au ˒S`I!$] :cT{]4ql#.[cir[nM}i졪oi_nr˚N[P<{nRbl| %\ 42jݺVD,V*R iix %-;_XY}a+EJR˽qX8\e tU- J4 d,!  BH ^JJRip96]NJO9mݍeFEo^o}xdJ24By4cccDK6emJvg. \$3t* [JÆ :JօWNFEgg{ h~hs[qh90Ks8>}|K%ACBٿCLrc4fO)[I*㹳lEQo[SmGe{:aX= 5f*I_袢Lq4ͤe&L1H60h4V ,e61N9Dqkx2n0[VNVTSWϋ6q[9,xYfy|΋7]RwX^G21sP,Ϝ?鹁M!%!RTٜ(NqMCyJU ,Bj?[VS^1iFhI 'd@#'RHFh4 df  `mCzca2іoq[{RrSiZ\>2^ҟ&bs#UDqwno. ߦXIԱ̐H#@H4-dJ= =@$qG6pGb}Ed㜦gR@" yji:HG&>R-{m˴|b92?|yP gP$((XB!8 .0C2'Jt&u&CXdkq8!-i]N= u-oY1M_vL'|HUF )#@h4[ Z;QΘtJ鐆()ۑmN}R`}Kq*T·1B6|՗-U 1w!; BH /३676$shsݤ'MR+>Gx ivA$-mqUu[b_iͺ.yrb%~\wtG8Qv?!!&o4؈2e|/"w)¥GkҽmTt #_RT\s1&f^^c֨eci:tfK6!$(XB!%kW&xKKV.=nVHX_,&^J[\yul)[,E20HjGXoGE=Q%t5TTer׷t5ߩwF{<_\ٸ|hj=]cPw$(XB!bwGl*KaL qg</M$K\r~OK{ I[a[ ?w!taK a\ɛĽ[Or$pm> te Xs¥p׷w?b}JRSFMs̮e/ıq4\v5ߙ[`IP$B<ĵ+auTJ06/2PW]}KOe¥'Mr}B\TtYwk4ک&\?`*8=B8X2ĻcShߋpdG&^*rv'm_{4E8×pXûÕ&n֤9!}2wrGȩj`Ywp+'h[T:06%Bv , !ڕ FpܕnBm<=nq4d)4շ(=馾 Jn'Iv'D}^pxws>|!!_MdwMTLۄxM$ٚ"2}M e>9+ E'eVұ!\ŷK}\ %,\28}M{RJnƠDK6!lw(XB!ڕSt9 skD$691S{PW[z}˰AƎ8M܌OحMw ]y' NJHxyu<[8x1,a<NB@NG Q&I$U_ոK%!@ܖ0loi6бov IK82qy7'X9ss[~.!l, !޹ $5|S4dLQЈm4q1VwA5+Էt-piX͞I@O޻b?x&0ywڝDTXDKZ;Ƽi%xf7Է|ucoi}Hx}k/wl4Qk|v e90O%!d[CB1p֮-5|4E6(hc3ear6Ǧ[v:mDQ4-{ ·TpBP />9܇G> I&, !l ;{Wl~מ)6!(\ sЂ[K%.}Fxm([^71kVq낧Zk}|y1zj ˯(XB/, !].¤O0,I;9hM,AkqTP,Je a!6[-DQԛuTkL1n?RlC=_iw≧?/LEr?w@ IDAT`) 7Bl(875pwRۑmSRdܖ.Rd-&֟<շD~K(T0[6miN.m1Y^f*8!u(Oʉ\)T*:K%-&3,túR=hZj~/ctf};Ԩo=՟̦Jj.nTվz^7Su C-m }4|.KBv%!_nu-6@o6^: XOrSij\}ck4&bsz =K0l{f+O?& Sy="JO~ (*8(CRXWԷ&-ЄK[clP*\fBɼoĭ-?GS9;1=Wş}tQ֨ǿ[`P%B#, !?I"^B됈S"!{}Dm &B%V#4KN\!e3Mp~]1Uz SNYAnrsy\ @Bf@Ym^;pP]VRr|-_,l^.4aib:,*M;/EK%U%VQʉ8,Ϝ?-?B KB!]is[:)9Iku^Gu[ZnP%\8Mn#|3. bL{^dǠ Q_ {8*~_te^˟"; ͦ;>$FN*M! , !h3׌y5V;Ӯ-sj4MM]GLe¥St8?]i⹇Sґ&\oyVVG%Sv&S p7T@Yj@.r{Ʒxs({@}K[clEַkzy4o[hR}+mMK3w^,:+@(ռF쫉i0r~asp|K! tB l$)*5Sm/z7W*k3Nxm+b V D@NR׮=zr̓L'ےNŋX!a h@+gTL5]x$( Ȗb~VWFuƢ^eWeRscm.GCc|⣏ˆk/g8,ď}M~ U39Bz Bv,/+bb!Mmn2gcnt-p2&:QӉ檄K{M%-N^}۷F;X 9f^<}1A򳜊QnJhSLSDHƢ\pgGvLb.Kwΰ%C4}|@s .Zs{-uXr"[5ڼ4mIWlC6* [z! Bv,tDr:c J-3;H۔ *\W! [XxKhi&qx Ak^}_ӝpTpӿVI"5e-ی*sR쇺UPԜP<pUřS K^>e5=37(k[Fht,opWL^H\c;îZ6!l(XBّVhct+ oɂOO-]nK.+@7#\r[bC_|*׷|wbF;d;я:.VCP2RBF2-uaR2Yp-ǓT}ד:p ĕ&sD,\U-bF?&f[ʷʬQrPi3g(XBF Bv$g~ oz5fQ+ k|n8m1VjBE0q]Fh*yfܖtW@1wz^aYM(we]BBJa8Ƣd<sBCUu^[T1yTM2q>望Os4,ޤ.ws3aZ//ĩW<]%:N%!dԡ`I!dq-(.U:sK/cG ɨs OE(Zdbgmߵpj#[{#sXڄ>,MRŜ+wMxyu-u\tG:0ց1mԾv3!d`I!dGqa]CP+qRܖk|S궄1͕ pƲ؆m KZgp%\*2oiu^a2j|u*]XW@#q? HhqӝC_HsNƁ'K-g'<˺t[^2!\%ණP!ܲWᲲ4qXR{}.ŭpX*\繗.K N _~FWn6!*, !^[|f;S8SĵqK:x߄Kh,U˝X;h4h4R2J-yr_{~3B^rP&}ܘ(Ț7O袤i5&A&yܖb}K \ >o$nK庴5)aPitYBF Bv igpEWXkk2^D` s7.mbfKoJ{cn+{e2p&pVq܃YR-S3;;%Sp"\ 7I;rO9er/3;+2 a'+bOHZ4cYWp· 8|0N>cǎa~~333.ɖ377saii 'OĩSF?@^y4= &P5mRQJtqˢX(SEurT9r`rozj'e@%n`J8!mKjW TYqr?xS-XcJHw{xl4޿o_BDT?~Ǐ,籸4qw:ɥmۇJOAȋ2ʚXa) <) 4}{sYkr;?G ۚlGAʉ˲G c8BF B5҆Ott KOUU qjhR&b,'Zިas'VSW] C9uTZCܹs8tN:8T߱bwpd?ú5HR 2D˜Q+ԧO3KMEܲBԷ}P=a'. &`yMmR B-- N}4,LLmXM{*: w%9r9D]i %7+5ܕ64'ܕ&ƩSRHa 'Oi.5;鮔RD0͆;uuj ݖ@%R{k,:|!pY4QiJy ={=Th);$:2ExQ{&\n*M:UQ_&*\ݖuPG2)⻞7z_U(XB B-g_S]Gk6k|nL]1+\܋@"a:pS}[7'kOw٨Zz8[,..Sw*s#+wLb)20OWOΫdX,.z팱XYغKr [-G.%U K}وg e9s~gN3 !., !lK^[ծ#\"X,lr,ݥ'soU.kW:4QioI]Th?|G- [k+N_5r+]0 K eIђ2Bf;@[(@M]'Ovb%tTei5,tpg*Z鮔#0Dڔ粊䮗lj\/ى'?~^,ÆrW>{>cA0win BHU$-9{F<Z'F֕97]n t([zbeme}˥޺+_޿~f}E\mܖ@b:z\LK LLdK+64WcrX}ܲ.zYm*!X'b5.gudU+'ϟ{7q% c8B B/+i:%bcľ\qIpi e8 1sR᲎ઽ1YUcu=qWוx['u [`֩t^ tq-M ׄȬ] b^R{ nE.:'{>'=zXR1\BKB!ێ|:OC~uִSys%Y 8D70lUԴ9F]{DUo}K ~'b]~+&jWVAoy9;wnGVXr՝TtH[G К=R9* ca!\B["\m9B4^>Qܧ Do^@U:/cѱN]JaL--=B@Bȶ’nVR&w=K Þ&mi[|b겫3xwn~+M>ӧOi.1СC8y*3LFpmmz_хMo IDATհp{i:Սp&XME}MiYSB{jI\E%4㑅t\l17\6! +, !l+tp.瞱<@ \=6ѯĘJᲦVn$^շ֮|扣}wWP-gggYrSThErkHip]4+XakUvnι^T%-NdpYԩ"\Cph4`/йw;&0ݏf:wՔn}/ Ɖ:s~%!d(`I!d[awWhO\7^)\D?hL6Z!N_eO_8`s3[ ֍aYj&\0RGLގt7i N 7W\pZ(=p[pYmOLV #څ!?|a:{1x W''Zzfj>林{tG1Z- !KB!ۆזÅ+u:>!f;%5K#%@w-}ZD@ל/*¥Ϫ Z&5\7E)To^q!\~42weNXDIS=0{0݊}.ݱFF)S nU>#\ h_RQwCKxioAŠ˹KsU=!JP$mȹ+SJמWET6XU-뤉ߺ+/\/Vr' _?/!FAPh:) @'5 vU]=.Fd~@[{R܍ݔML_Oe1Z> `Dy][z.!`I!dpS!LL_Zjz[>m+\Dc_¥-ΚOXAq[\oKp-w %ć^E jнe`Y:՚W간&V&_2'& d:eUR"҇KSXxKJEHyR~MifbWyxU}Ϻ-MwdY ~QwXAղLL:+%9(=saOLx+ZgY%_4nSȬŢ6V\ էo:l tpC(sim+^~eSY7pԫQ;.% =(*MIDNp!V͟4q約\M '&CbѲ犻sm֬,a/5E-13- !CKB!#υ+Fwpi}btMLV??@>2}VQUon]ioìog:Y-ԯjRoR}R rZ(:{#zj=o+C,c6Tm)W,E\K{_8ݿ:jVb%X]F@B6%!+e]s$M<)\ܖ`_&-MQeK1J%\tQ9,u*]gn{fu-yA|l R}%eպߴ[f4/҄KlC6ٿ1Ϋ䶴o.W7+Thi\L]pTU# EQTWch90Ks8>}|K% BFזwOv#\6[ g˙ 6)\bC_߲Dtf}E:`46ܮjZzT~d 9we".5we4؏VATQ%$dpn_e)麒kK%YXbNVx qܬesܠk[vTn\:,GkМ*< 2y 5RJ>pJJx|ezMAp{\LUcc@#4ݛr]AEZоeglC(XBi^p?>q2"Pm _&Yb궄%Ɩ[]2箬]ݕ&z}sܹsNeo(ӣM ~R,!Uʷ&\|?@,\Nw OS47r*z:*WlW½;kY*UOlF]t&6*7}9;ABOPBNrsx~ȯm,kGx|NHm=~}7 :c ^~; JÇ8vXZrnnna ʅ 'OĩS(VvWuṮ !\wWJFeNT.3Η ۆlEU@$6sz}{FCu~oq(Jq }멩;s~f BKB!#KjLE\'{eXXWMO6ڪ67-^-=k u=rR~w Urvv-:OBׁbwT3\f%O~e_14%h 4[4:iZ}p6VC.WWQi"'vy( L 5Q)3|{Av g-KBȠ`I!ddpU(\VݯLX˭NM'jT}˒8]1]3xɟNtWPiz}SN :-LI|4q.la~% lv"k: ${[2sɟS~\q5ȉIDGQTic6;A gΟܖK!KB!#LALwURO-Yrkp7ہ;-ze{;8.ue*ZYJx'N=F H%I}Kg8ג'نluI?U\njZbѼY4|ֿ0t&:nց,gϰ[8!d P$2Xx.!obW%iki֎Z¥OCēA5sn*MRh·/_D {}KPմ,pY:iΗvtp}La',>s`ƑT!M\oy&isAjJ,TnWTX^p EӖ­S6LEc/?ŏ^EKBȖABH?ӞU+c3vD}KWCR߲ے`o9hqЬS9L"N rE{[ꠔRJTկLEhA{zb}hb"#oCWI`17;nо͸^ef B B]-TԮs ~URI"M<[4qZ'M_Y֔ޣK=M|¥^rԷ;_=srӱӎkWJs&ZvL!Sjv¸e_=*a:.e \^ⴜ |pž~MExU_T4]Zs^]t)L`y1+ ![ KB!#m~,&ĝA$D\7?n^U[b~~[pdaE8I:ؘ!VfkE.[OWu$ x~.S<ęNsbu;ӷ6yAI]]~woKL*)6=.OϽն+jOe;]Y%P$22v j. k˄˲4qS"jic|fĭY߲wea3O!CiJӿ)TF'*.:014`Ii+5ehԮ촁1} m+}">hsu%+׺F91 t)X?mMwwayRJ.D1tp+ ![ KB!#Å+8E,~]~ Va%Y(\ڃ4qn$M\cEq{_0|[;w-:Lf;`i_ðwoHW&B RBDRէLWj5+R+W1%i2j#,˱nuv;ͤ+R|;撬N߄I,O8= !; BF W!h 6$O-X7#gxsđ/ Z\5@oMkLyݽGMy(6Yخ>|OY}K=Bp4:`(o߈7qÝ@ mcv.+neLˍx#+\E8C .KtUlN}Wvw/&/tghKҴpm3vπ=> !; BFׯ~</ݺ-[dT@V-!IWݦDL%2ᲊؚKlBw`l}K֩~VZ(4T:Ru, v4!3+$L;kn )# Z<׽\{vюDNLѼY4M(-v@{L'0(XB .\ʼ\սp)l4*\APIxt?ē%v.m]ٝےVԩSfo-+O]A*DޜJx>Gv(N2Ps]a"VtxlڪAkK@^\W*\j_$EN^K="!P>jNaP$2(U55R߰pY)MՅKuHOwe8T!X:/v L5:ꗯ$ʄLK7f;϶LRv:: #/dC,. iS %ZB%S"-\q W'мYֿ0B¤ BvB߸!3'sNeu/lQJDKcsPJ!eO{)"@OCaii T/|eKa}7>&&]SxR_BFi]J!d 7 n:犱XE˄i W=ז޵{eh =?FxB(z{/)BBFϮ/dՄ*痋k|!:DnyzּeZ8QO g:8!dBBPwO(ٴ*ԯN{7d}KO] [+c$Æ ؅JspСt 'ՍyFdG(DU )!p -lq칶 ,?X/"¶ Bv0, ! 5VNUw wr.KābaSvW8^[Oē-o| oQR: IDATfggSr3iJ)\'~P"\qQRݤ["(_iN\wpiRosm}k&=/5% !; B WU[~TPV4,l޷iM&ĝA$D\&~ҷ*tWeu*Eշ<&ŴܲO n{?+B$\I\:rWf;Xh" qR<)鞂berkn KB!CK,wN5[̪-bč ꤉%ġԋz&>X~: 4qַB!%XR# 06V!dV#uRPi֮Xa RO=^t-N0!2er:6pI,ɴHW,nZ-~纲9~֔uذ5۩Gx扣l3 1;;69ydӵUɓ'sanngtV\O3ތ͸;xZRmi9Rjb\FGաX`pE-r|>> !;:, ! -ņ;5suw`Zlf8>Է%CmjqYJ8J[Zܖf;5 zfTvÇq\}Aıi?t Fߕ(%* I.V2kWaMRv(G}#5c]X|m }b{u,G !; B W\u&ēַ2M,M\ t&x?=l-S-z}K]JFsmV -pekb%2 !u+0 i/~J}W+U&=!Dڳڃk7N!, !݈:͖:6eNÒuo)I[ܖ@5Ҽ̱%lzCԩS)8d+}^rlGYJݦD&PLܕa&V۱1 r.l\FJ}ʲʁ '&G,=02L%!}`کX0'XZZ;\V]߲|ڴ|7Da]WڅKsOL:*ǎfffXr<?ȕvԋLڕ1NF D(K7+۝8<|ÈɨI)e0۰^F2+DX:L':, ! uě6&n,oYmlu[5MKUЎd3:ݢYrs> Ev hI3)e\YI6ǿlSxKȚkK>*Lֲ n y-KB B XU m:MܻI:=-Qe^"v!Xo,..aS-&XyQYu~N5&f;"vXj+3w C@FXt <. aqgu7%OQ$\*bm$X;zl0B B ; P52ЊطW&\?ԯm5NvT8[cEC׳|@A$FlZJ]jWv:Xv/6A5Lrٽ)~nkqdȉ]=/Xo.Nw%!dȠ`I!d(֯6R'_vJӦ-mpY&߁iočJK_N}%T܎JTi333#'Ow+n@TbD5ۑ>wee\iu`cyU#'qٓ'k ? ,:옴;s' , !D%UD9w@>[ ܼ ೟<4WVJ CtpBI`I!dnY7{A%L:o]JWlgԩַsW(89 qWKjWл+e ! (kc6ډ:I:xlg}-{b\p)5#FkF_Kořq}E`[S9oPGMT ~S|x࡭{'d`}?!'>~=BBq굊ƺ #&F-𤃻ptͱTv^ܹs8w܎ouVߎf S@d2 r}522!@#]]Κl~bߧ-gI)DZׁΰ|, 7bacP96m){q<;q|{#3R 60l$k ^]y4G91 HKBH B W?TMv-!/iMo)K4_mҸ̻Ϳ/W~)XvJޮu*8}tHre\kzM;7f;88h'^Q(ctwe_N<|8'LRB b~)\~po6pJlE+( 7uSogu?xo[z,^~a,Z>ձd:8!`I!dpCDeswQq11M\ h+>ėzcթUrvvvGַ׮, J@niܭ|:xrU @ 0vV溂G\K >v.Bhd>^)+? Ntt#Gcr0+( о7ݒ@b.7`u%~/;V"^*r}=M`Ayzĵ,etpBABPq5vԛL.;i4yL>uԠC TNo2v1RA}3JHd!l4 $Ea nnI/|L/e2ab߽ >{]f:r6IӢ jaST5+J\_KX\[IRf3Z_onh>|g5L', ! `*$ &&:6oY)MՅKgk] a LNo)] &b_eltڐ2J¢j1jvF|O32`tW>}'V_[7vM^:cYx;)C5"%Te<2R};i*x}mX[ EDK!bm#'vt`}?ž%L', ! EP+;/-;7 ҷԂMd4 %Wӿ)Tn[}f+km"-뉻+U:xrrW"@w  wʼ<_ X̯`aXܔH Bgu B(7B%GY-F#KW1[ə+w} *X ;@|~܈gֿ {Z25,N!(XB/JVxD>اt&pYG-Y,otpv:EoWM@v+.Wn{? `9w%r+[0DERB;zg\:x"=| 8+}&\Bkbҗ5*'wiljBe"qW @AFF  #0 ;{[H2@h*ͼ5A_ J\Kkn|>$ܻڃl`:8!d`I!d𨓦7Y:ֵp@3YsCzVXrkշ|i)ҙ&.ob+0ɇ>BM4*;bweve5وk)6[ i^n1\ww"Zդ(IHC.~@ch`Q=3^ؙ1l10~4{\$k.J$M6Y;ߪsNĉȈȪ̺|?ؕ'Ndue.g!Vʍx5TgaQ9[su2}*]q54m,/X\lB&߻w4nKO_*8."G 1 G 1NAO˖۲S.K! >'ԵLٚtcgsZ ! B qJF'.ˈxyp$CG[V(V~~쩜ҸZoXWk])e%OWQ]i]Ys\4 (B2BaYvu}n>r4m銕7xg'e-TGM)n%|걏GO[-ܽsn! HHY2o0M\ ԀHe @FO n^j+Q"f Q%KB!W/_<]$J%`erPkm4J+鮴aOjeKw"R@nJƸDkwB^V ܕ"Qgӧ<QRف=nݟXyM%\"TZ=8lh!w+5O7.Qz@w +|gQ3qz.9L〵-^wy "%cᢿ6}qpB)%!}pe>B$ܤno96&~ OgO[y)q2%\D{d0]i& a*,Qs][mH)+ ]A;"ȧX^է 1Mn%"NwRgc+lJpWMv][IE*NK#;@w XZQkDKr⒊Ǒq#NFXi}(uhC gB `I!dC^oRq/CoGt[^9ӻ_bTG[nll_qvyG㪔䠣.Rzf -DAh+C ̙ Od (iTb320f,V ׁpPG(iRz%zunwp:b崬׵KּrX9benemyRrw'P$/x#&qbGn~˔tJe9vSyȋZ=})mcwqW"]9?7HPQ@Xb^8qb唚RNGx"ȧTNEB!P>rTQ/kݕk /h@9#R-6 !d$, !07JjͥTrhҘ:jl.ܖGIdO|饗K/L>b2%-{[z 0LVBF<#ԝa(Ltw堧ܖO|Z9+ٹ?[{Ig {x׀0*k =^93 ]GU? *9*G ;7EEskz4."geP?{_ ` SJ0N!#`I!2ILXwc9B浑ڣ2ĿSy9{,o__~ye/Ob܀Y}j4b~~{RFT>z8q!R{ ܻ <-(WeCwX) BиF-7wYujP/ hY%ZN gBBBQqX ܟHqL\?~JcL \<̪D1Bݕš .@2! |@J?w'P$?ؑz2jNo9Řş?98x6}Yò~˽BpR=9e1ܕpdpCuuvt= (x6u} o }Sc{I\g>,KJ{ qKuM20>|zJ} ]u-XF@BdhΌm8& qpB KB!3&ZU,Jb&č1oi%^9qP7[~4uX1tJ'yfc+t(PkcW>J0 0{wzI 5CI Rd*auUk Kqr40H މ"7H׍@Nw ΝV܊,'RP$2sYZ)`<D6\(QLo- I c-]n2sao $K^eUO[ֲ1ڌ8)YB鮬kqYOrKKh6~C HPwWZ"S]FkMC}F3naEJ h;%1cj岬k34(yMU=*88!%!}ǐp-3ϫ4&^bOS[N*=9Qev:x}r9tY1[vz{tI堯īy%db>\uWz6>1%Vz}|]d T\X9)=DWkr2qUx nKYӢeucvYӢ;{ gBJABLyZ$_y~Y Ys10W1e90SIvme#NǶo'fWqўի&j莙:ݕzNbɏ?gNGW\8~XYUge'Ԕ@*=OŒ{]~wUfB@IgWIᵺ:kf]mт猺,e ܫn=OZ݂2, !̔W/b-Fh sĨs0&~H-sc㦃.}766SIv.ML|'.bX!)鷔^WVR UfɓglB #\i\9nT2Mb}}[~]PuBoMܕ '8vlKx_BF D{igòSb6pynib]Qp#VZp DR~U"tׯ@|@0QoH@RI&hUwY2N!`I!dPN.nES5 ӿ8iὊwo+E2#6p$`~;NC¥tU\۸+s+Z9ycu-8B`fN'ݕ3HgЖp\X=EKU* 0RjOq*rp cju&0HDI})Qu,\OT2, !̔G?Q:>*#>`'1%&n~Lv+X& 8xrQG^eHu`-N M2okweDhTbe?BDD3ݕ0}?}ܾYoA&P+Ҹ,uvrfi=@ZV`88!LKB!8)ϬSrRq/I-r;|Ò=d?a-766/css?#m텴.;w!q3”Va),,,.B0R;,=ue `œM `^;+p+MtU0ir>pȓFZR,uw_"a0ˈVcޫǒqpB BfƫpB,|dlL\h[› ?{w|g6Ps>]Z{PIvLk?[~.IwP=TEuWjwqҩÌrnn{Qܺu AQ%v@)8;am ɞRYjǃ@"V=Fl^vX= 97h&p\vY6uD8, S0#%Jcܕ˒qpB Bf/_C)ѯS57e=跜vL|S0&^a|NT2M+gϞ: ^.HqnνTL:&Z'`~n9E|7P=8+=OEx9k/frb׽J~L2 ܭ%1H$^5>b>VNA.h6!]4ui9"a3$:ڇX821, !̔D!u* 8~iā[wU?sXo d7|ߍ|K`}"pa++\ʁl43v'">~1\!z2xݕX񔛯N"Pst;*ޞjX)%f\̅!#GJ]:jA5wk*lQ;NtuS_`NƮb3BA%!!H?*&ˈr1q}^[88>rX4^y=KAO/o/W]/:8ې}f J'% zO=vkW$|Ctd8Jϸ+HJ\QrjwmBh@Se*X8~{+vY:ww(Z(lNL!ABx\LN$o N1l'>DH)^7Gt+my~@QAvWjJ KxOʕnÅfܕA;ƹxA`yeh-5|AwV꺳҈ܟV£ rAZҭ׫=E:.#[m¿FbAy(lNL!ABPQ}:iH=p~ˑV찜%$W~%b @}pyoq1׀X8sch4Af2xƵ+]"~zW͵+jqVJ vVJY>, r bDY*RxJ5: N9prС`I!d(a7ihp?S~11q-C9sXt-'aS}_Zt~ˍobd2H~1$8e<'00x2xz*c}{[9s-,)ge݊+;Ľ8~фtJ=u"=hK`'CB>`0V2_QKܖVEnKudAee11똸u`U_9 677K/`O%9|uνPV́T1fDžnMXݕ&xa?|B^2+@+[տ .0>rV:RiJܺ ܺ6d&:k]oVp!ѱJˉ0N!;%!/\ɡco9Iz{o9ILqW>!{}/ۓMwecuWfٮܺ<4ZPBjr0Pz]?F ^xmC wھD˦ԴE_+'X2N!b+B!ЄF.Co }[fTӝsOq8-ͫ%Q~Jd^y] -\f\>|#ݕ5\\]7Fz?簽~ 7bj?:Wܻ ,.rY@BAz}K$+ V |xu%VC`3r]qp 2ʾ ,}%%PQ5{ʁ*2N&e{g._Y*fw']CBL=ZB$¥T7Y|l9~=G1J{T3M  =\GZQNĺrWG3x?rF-<}+?Kww~Ҹ+2A_W~T]CCv!Pc[89-97Vp;*qpBa%! gr~Ks-H-80~B-+W(X~ÞJryw_(G-PFJ4JKjQѿo^vM$Jd2xz)auWW'Xh !J!yD7P_z] +)⪐ +;5[88!0ABBG-Eûu˺-TNbS?-aO%9 b%`*B2 ڍXOK:8~N7_Mg?oK..tW{J齄J \,VBo >~C}uAO+>aj '.(XB)B anKW=V㮴*a& ~3"LnQ4ZL+85ZsxGp ܹu.^H<mks؜U}% @%\s ҭ:pI~ iT[NX T?|0R יBȾ@hQpp92+_GGM>P<>{}oeoroNn.@qp8X=O=0ccYWe ..&0,Qc@3+hjhjnCyJj(Pk !{Olé3!ꟀlL?88!TKB! <^,:IL$\-hebCILUn+7JrYr#I.߷r i&J q]qCvClm݃5@ 1vPOqa2.K89 ЭX4QT8K 6"#VJ$GcL%R, !Lx=<-\f|U9$\rB9+!\S`'prp٧d?~&0<$\fܖ}Gŧ뺻RQp8?kW! J,jv%7" lt*h*(B{rySZ%G*c게]BHe8!0? [?l 8B/*?MN,7\TU|TnF>g̹EF8Z;sϔ>vcc/XII\b/ Irt8x cq FǏ}:>߃4ʔL??).. $^8BE@{A : .F|w܂7v#b&:Rz''BHaI!d&$5igG-pL1H_8:&~˜̼׵8x%{*QGE[4T'a-\vk23hPNKǁݕsy|oD2,ge&BQpz=*ЕpX_c^S{S.Q=0urWrWvv.rhpk !b(XBʱ'`.1quL[# bA1qsS跬,&>faDWZ{2G8,777cG%{*QFE30yvW6;ŕA1tlmuvW@:*xu vM/B W}`i!r|{`x>qW*t> ! BfHؘ.6Jg_R¥Ysp9aɖ Dr1Eٞu*ɑ%51nKvZ k ܾ}#x^X9+hx-lz6n{8pRmoxylos󪷲VSBZ6>/$tB5-^u ! B>INg˜8 7O}.Hޕp9*&هIatIbxW9캩_ N~|eYhJ@?*we-{( 2vtWzQ"槿އ&&6.l_ZahJZ5tkc ![sqkg5 KB!SWn ݄rG1B+\AejRt'1Sa8&=x/rL˰E\2h' n+h }Q D(/ J .lpyĽplEE'X;{ ~yBdT=șn,qpBa%!#RY(&T.sc⇨27&>ܝ<8W|''SIH_Ջ]9+bJ8p\Ff 6A2iw5|0z'qBJ2rVno/| sd,ѱJ{,YB1, !̄2Őc-PخC?$&>A4T=$r]]]Y2(xS`8 '7-DQ^(T <4Qp=}S~\~NJ JW$&1[wkux"o(8CpYz`rء`I!da%\ĭG ُqL\a4Ys$.b7RaN{* !%VL \ u(pj70;V *ss'z>u'ROZߺk9WahC#99܅2"~( z?;^+/eܕT@i9+R8z@iWe(HiM<wƽϷoxj G$ n\+DOV^BtXB:Ycgr~0S3˼~ˬR{w#b@3Ib 5IL<87',(BER}]ׅߛsόy6!G(,x桰ہ.D;,]q\ju T< uow7&,dWK7ؔ5l oz8?ǽ՝zd ܫn=!O?h0N9 aI!d$GQ(2]iߓ2.ʌ1HE [˥|;Ds/͘<}11e=0 !p]Z-+=t% 0?ScKoRQ%V:w[CdB!d6 h )1'SE29+QǿZgz78P FIydn\G?h0N9 P$2uĻ3apY.&nG4qL<_JwI;Jz잳Kj*82I7~Rb?J}QqX4{%!6\TB4g[7t>-V ׵K&׺?` IDAT\( uW(SI+/~CJ_نNJ+(x d0RvG(xz8V)VvՠT\eUbl-qa;60S$EX8!/6!` Pið9.&̍r8vxl9p+c('\q[FQ?!=_Nt }2M/mT%c⤈T _t=BP$2Uam7my-%B`!9IZ~R zYWbj0pB2|`*xrpQF%bp]RB}J!;Q]aN\ v_@ݕJ=$uDa fkFc.IcUN 3_l-B9P$2u҂߰q|e" ^4n21q %9:U[-1JeL^F:̈#TdžT:N,TX2W.^*+m * ~k( ;hGERjRG2ʸ+=]]5dg5/vR}%ݕ"a+҈dB/')dk {,9lr΄BfC,%w .1,tW &+\svo9:/ .EoS:z8_#? .=Vj"ᵚ$P](Rbeuڞ Is5JJ/ .؅"W:1q Pu,*%U&2e DDy^LqCoi/E @p{=feBH/iѲ;@4Hz] qR:Zc "CCvœ(x Riw~3J@fjySg.- K !G Bv ҙ0&n6[x+.&ﷴ~KdΗ+\a~0 ɼέk%_}sՋPnKG|h6XوݕpXiOWORb%"҈& n:* ~[ꦃ{]:0be,J HX"p~K@£fu#v-Z2N9P$2b.OK*vD"#\sJ{sK[;3Rkuh]0ިTsQ$GW.^‹PlYzxp{ Zf* .ݴXX-we7(x?NЬJy,h `nKwe$]drBJCgrHWȈcܕYI~ˬ`8$wVo9t)2miQAzjCGC2^OB#Jٙh9xSo8x* ݕTF -rW~@WGX:6mHTdHG;-ei,C^%9ZDV+]E% KB!ShX1u;zɼyBf~K{!Zhr[{*gy<FQ/ -.f#55dG # i+C;c&f(xwX9TFpDR]RGFZTwel%cG*cv grT`I!df 9՝C"\~e8BXݐEAZ-xI-ӇįApY(4=[ʑ&sT!o}ߗ/\/DM5L7~4q[Xqp?3hܓ?a;RJ 8칻2K^%cGpqQN3N9ׄB˰> @u~H/胒N6}۬ g"_Beu.3cQƽl_{/!M O}D>07J+ b+ՠvtWfཎrX>l& /BV(VzJWuokӈ^u眐 6 5_ib !-}N 'w#0'qpBQ$2]$rze~K#rK+GdȬ7Woi`=w#~|3Y2@*UOe]TZM4M%!o0­lJM\f>NQ#9Qp// nU2R{7T{BW8; vL`EY#\\F'uY2N9P$2}L0Wae%raw~2>rK_[qO04˯}w':̗HEn]?[@жXz@XrVkшV?\fͺUdp@C/ }YP=cpyagacK6^܎ǒqpBQBV0uJnwBH1G"%p@Hk+&3ag>̜w1qC7#/3%{ȉa( !8:#s^x,uX'Pb/0-Aޗp]T֜zЎJ䉕ZL;+Y9;,pU| Z-{bwe.l`}:ظ=`L?=Y(&>I,qpBQ%!c CN=nBC_7b0)sD˫b҈NrҊT[QPG!;K |~}~ZrWc,NlAOܕWg]Y?pb¶ bP1¥u,'u(XB*v}eOcbᘸ}oynK#\ܶP!Ёpi;#7g"dz1qX B2BukF1{%xj25!_|<3HTqg?O7Rr[A;gغܼ,,).5dV:B/XJ(wm@}k+Ѱ|K[ZR]H޳{c+w0¥pمXi.<)n>88!P$2epfY>MAL\ݕ?,`p9R~$ڝ'.!"zr\8*=d^+[$&TL| 䅟/gXYSm y+Sim{[9+ҵJVo嬴bզ(Qq'V̦eQ8MJX"y!J um8G*+m[ 6RdB(XB2_< "'!p)b5rʝkav2B(0 quF[/R*&>N,8!a(MH%Nl} _恆ׇJa%,gev"[beܕVG6~, 6 u=@5vqlL֞,k[ֶ3.88!P$2Sd".K-0rc)SϳB-\¥}zQ! CHߵo 0,3!_<=88}#HL՘ʔ_غʹKlXb+TD$1pľ`$CvX9)&\/PfQpCu]0nQ^a;4f><1YR{?Q/ssqOE! BN)TR☀u 2 1q#\N߁3)woZZ $x+\JXY$\[epy9!d?͆vIwFfx `~A}4XiZt2v=/e줜r԰R3{HJuSvB%9>`Ӌ-gJonKą<[KS!o(XBJL7w9GR;跌QApSiE)rmysj3фm/|7~K-qpB`I!dO$`jF[p[ZP$Y&=aLCA=bRɸvc )\Sm\^V'{)o(L̴R dn\U1MJT\ʦYi&GvXJm]Y2b ?=QߟQQek2Ӿc՝woq{x3FF?K88!P$2uvVBr򖡴UiVCvB?+`!;]_%*a ^]GZ\s Lg.b%یBH Bfc-\ -I cd&L++\ mDE7Qzp[ConTe|y*h~up8hdq-q .&]%1/R\:fSV֓JӳlDA: V'Nl.  S|js=vX8xvL`?b%88!d`I!dן}ko@hAPjMhǍԮ21p) }n~Н\,[A$YAewn"BWӜoi;#7g"dzS9[Aq2"HQO>|wpb;&&l-RLgetJXJ Y2P}OYVWO#n*Rk$d+#V>07_y(F41q[NȠ?\׆gBRP$2d" Xxp{3GXKQ@1quOdφGcЃ5ds\L|~˜xȸWly٧q49 dq:7C*S\:\~_qcրXϼ/[%/嶬2nEvfݢ#ra; .6ٚD\+@;3N!CP$2#FĈ8R~K1̹#80p-뮬ݭ!R-TrBDy1!r%)`|L h3L:]Š._{=7(i Kt;=$O,nJ-XvD(>[Og^Ȋf؎NJ}Ma9O&[䠉KB!3BjъH YKHA-[;)aBͣZt ' 8 9yeUñskò"AAr2>L,TfY-鷼%iY8+-wA25d lSϝS߳Q4`Y2t\ݕ0e\SJW\mX 0N!9P$2uҊMDqe)P{2׉dU 9*C5X4}Aitu=lz^ڋc u +b% KB!S?-6&@!Sčp92p)rt21qb x6 5-x\e(O$$ڝ'O cIQ9 -)H-T}o+i,vVRǦ$ h'b<8+{Jn+re-(h8&nO:'1WG2G?88!BBya XG%V=.0ۂ~BQCᨸ4e1q`X>^n pȑswNc(/\J!:R(&>}m b=;[+jXjxS9+M ug:+3ilr`[*Sb%F#9P,\V4qtiwrF5t!LLH[#oaAZ88!BBȌh$호(&;MTsݖ$&nnIniJ^{'j!32 Gqs/u%ܖ#fQrLkWT{a)-V 1K ~'7\Dl'Nys<6?:>b]O QDLqy1*-ǙK-z ~?W$U̲.pV2 <+V#Ҷf'DrV/;{勾3/e{qTvXR-7n{lωp!BBLo>4< Bc~˔[1׽?8ӹWG>ZXh2y,}N0o9"&n 3A3AF ?(vHqb?ſ˲'.p+J'#VkY ;Y9(2/W+nO lȮ1&&<,b%2 Bf4-hG#>L3Zϕ.К3Z+, .?s|;#Tf!\*&LeHč3>B;0nK#4з"&QRYe ܾsJ++JCY؉پ&>P1^G9+}x{.Cz=oo'bkn]{,j|@r؄,+,&ᯔsr+cgepI_ez)%ge)A& ?+U G?WcJ0R%3oY9yӸ+ 3mLL@[+{m0N!c`I!d&ChMx.1XfFXnF.Ls4sot@w>ZX?K^[90.m¬rP(\V-qe1/|/,_&[beage geuV-r<J؍J\;n˸rȹ[G]60tjH}e૿OaBBBndcI+&nKx8>w^[~|^ )ncl55ݜ#6;&B 9 0eucCqz37tL|߲UNEʆۓprb'CpV=uXi37rdLע(qNCzNjM&&oy>&~JqpB)KB!3NiO V;嘴#ͅH !zai @6?(^;y2|yL\]O-w̉ WG =]~nkԛޛIrw~73sLc@pK!AiBD8cC#֎/.vڈlX i`%.:v A7Πgww]yoYuu/PUYUyTgz~'gņR0"*UuMNYdY-.vRDOoas?^' Q%vfLˣ*+)N$, i|=J1`ՁLbL+qVl2G)LYPmc`*+r}Pa(-# ak5]rTʍܨ/˜/p+.+˒J-zVc1~&hw2e9l[Wzd my8pch˪㹻 &~ w7dGA]A’ ĥV)" eh<߼m|^;jJ2dq@Xf~Dpڍaw`K8q8}*mfb,_-b&+ua ˄Jбܳz?YӮ7Daχmh-%>M:\~-{ٜl'A/2=EoCF XgBm;4+oc !?P/?@);jQwoՕ<λ |-1vOegX[vt8 <Ng4 <%CGvdJncZ:i-}_aDnʒ>; *&>GYV'AoRU2oWuP7oa!D_/J%SS㈉{ |_TVZ'w7aʺ %py(+}>2Coye%@qp  aIAVCK5D'..߽4>,cvd\VJDxJ$ywhgb"e QٙZo~$$^IFPYi0>I14@u1 QV*TKrC؈Y *)~Ioym_eMY NVR 'HXAcwe/0c[~"j,w")jŊJ@2pYZydZ[^rNĤ`˂"ur72jn $/1(7gpΈx(ġ2\GxܓŃ*ʤee$?NP0[g#3.1rT$Ej_ܺ(N$, l b@F+C1[.x5|EV 5y^HHƔIjǓ[ƪ-f<o9x^[~,{WY&ZĐɲ ; u] OW0b#f Š_%\)(Yqs>weU.+mQ1]\.~/e%|g1i:}YGڦ#Z!dGqp aIAу@P}$.[1qƢ'D_TUmԀBIVNi*T9 %$%{> -xp?Ucl5b d!] 7h"CӔjHQ/V4 `BeP*a rVfk Ο&&\.JƄUy.? ׆'wEV=ѳrrxpt~?t5x82(qbϝ-\Gʸ v1W *Mw=JX;/++/~O SY>`vVbeMoyd%@qp > aIAd! }[o?*[ū9muaLn(yЧR:I\)k% ;WpF[#wr`-[cb7ڋK-&޲YervWjˡ3w&ϋjʸʠ%Pb J%,uߥW^sm\q8ڶd Y?zlvFp 1dbG k~"yNv7^=+{ْPp%?v_xGՌt/+A K bR䌝Wm<5p,Mom֨R,N\oԪ4>/-bJ&?E&ɫvu/wF&*bQJVx5eZee,uVY$옧ibF!30\G|qy5-DzV^ ـY¯Vu%`2cQBu`w/"$-I-Wx +{޵(&P /HXA c..q'tR-s5i(w+{ٶ%t)w[Τ8Ֆ0 & v3ƆLBHsmK\rN,xLb(H%_^D%Dȸt]4Xȗ,` XFa7Mh;9pW6i46`U}+!{0u|cx Fzm0R J8>ՙXˆ(N'$, {O~7Di g_t@"1q@\ť〛Vׇne'C,&.[ S *.~X)n$ĻF(CbhbH.ߓdԯCtRŤ%Ӗ0MȲPȣRAPD<086dž<ڵܺWf*ab7sM a3> X|>M +!7`rd)ـQ߯a71;2^&N\Ng[cɴ$Q.ϊBu@R./X*屲zb88AD$ 2Dck gM+DbryU\jqkPT-.U88'Cr2CPS L3JXLe1q-N} QI\QESQQ˅ՓIՔ*ʸL#tW!8y4 vvwQWl6.|ߗ;?«s3MPb,0f30h.z` MAwdesJ9l`Np~0X8`DUO=N)+uR)'&I֚Ö'AD&xj,^u7^O;xoQW gp,BF-qDH[RE[+>D'Io%AUg-GޙTT٦3KD"S TǾ)u!i4ar:@oO:]T\U13U`|;a0%*RVafSLWQw1SrvS9l7q>d``{WC\EV*Vv .8ra1qᮟA}C’ O?n O;xj1q!.YTuxV,cn% ddT*ɓ6 ǫ'qqNKr%Eۡ*1׉_NX+O<0=V)"x.B0Ι!D;!>>}q{`^m9i/av2, =&>Vqy2b5Qĥ8iF^J:ws?.?:#o9 YIqp A’ ;xeO"Hxea(jJq_e%\\ { 90\̵i6bҪC@!yn\\6 ,gd؇<|9{z,p~91JEs?xLhd%@qp B’  +++x< 7ۛճCqQj6-v_ȿ6-]G{x]eJK]6Olw HJ<߲]LI)xAz 1Nc[×}{}\i^hC9ֱݸ?y`vJ|A\d!gȣm\!3Q.8e-hY |1`8ۨrS n0u!j假ov}ssguHUB(+sy"pC?LTR'=֚x-5W"'80$, ///<٧:2Q\o;zQR1q0LY%䊱 IDAT["TUGU5_[ƪ-g3߲jˤ$,Ki6Q\DdL)옧PT/6Mܜ`iװjuq,̤ȳ Bx7jBF8ZL `|`υU韠]4d[?_iN֏e &{ÔF;8䠣cXeY wv( S|]sTZQV*x-G-+A AйvZ *U;Ο÷qG+7T cU2u #ـ2ںĕUK$[O~]d,ܦ^y\9 vj1J[q?4_ aJeypb EʺygMJ+,Ly03"+Ӫj瘞* \߆Wx0|.]*.G8%Ui*U[k `:$g)H6>+ONŲ8L3}`WYfRGKOo9YIqp @’ z+JXVֶe4޶eT&DcJ͘춿|߲5&~8FKetB0BuTTqm3zQaC\m qꤋonܟ9`v%nX %)c>5P~9ζ"P̋I.. \ [\7/.&sъÌ e\\T{p!*+-+lb~e>RY$ejQԡ88A@ aIA TD,.)>I<)&.`-4AucR7=&hrCKeL{rZK޻>[ҔjKUL]ƿ`bTV*ej"KaE'K m Ee.#g o0 $^ K IDv-`qI8M \!+ ZʛGd" VG5\A!c# 3>W^mNCT&J-1qE\߲Y+2*r)3FS[1q*'ITpJ좿eՖ)Ea,LJ RJpD-EK\8kc~jKVЋZ'hpLLG/-!.߲g\sц&9 3'˙lD[@VZ!e%dV?\{/"-c+kYNSu%AĠ J/}*;KKY*%-"JHLskF/(71k˨dl2YI3&.oy9g KdG>([$VG`RDK^"1Yi g|x77Fنiy1YIJ,^X)+:h]A&]l[VUm9-K M2㑖[_ VWE%)++T{[.G8BV6yۄQ1Y~|W]yqYY[J A’ 8ĕ C-Eu-uBQHզ;ߒ q)o)-[jKàd=P^Iʫ_oqa브ǽG& j*$H7UM20Ok?22JWURVcc 4» ´[5j8 lKc0fd題#-}+ p0QU)W_Cp@FԧaU)D%\GĖ fR2Qrл*KuQ]T*_ @f筜xd2ժbQ*0pV* <8'+zY dOVYXwةzkX,U,_Zp% 1  vZ0TgT<{1qCI_,˸v_ ;[Ds U97.r}D ^U^p\:q_u%x׎O^'w;r/o>(-S5|Dx eLRFu޴,VNJʖ(|&+׍sJ@=ĿTOA:OcfU1m<~.4+UJJ= Upbbbb?k^õwair ˗q  UXA]ǿڧW./.IJɢ/^mP &LՉe͆dX@zH9e [ULwWQXL<8:W^{pUUF8pS̖=`0&,לR1pf`a,7g>k{!_cVVj=?qJpM{>٨wʽ1fwCxX=&^8s/͋Ԧ%7Lv3bJwo^f怉IXr@{)1\gbRVUeke Y:4FU|yF{tY t @b'8AYAſ_|E\p_WF"+hŔB7GYoV,xi]ܖ8%nBVhZ cz\>?1s |3*)m:P}\p Bnp.cU\^ aX2kI_|xm`9-zVi=}%+0h!kdUVQY $ۡb|i_o?(N1pHXA-$\^^Þ͘:PK}uT2QNo=sKh1* C)z"G#Ko)-;E\bo5M\W^;$*;L|deػWl-m@d`eXcߞ^MzU6~ ;5L+˺y3**}_sT}C=W_urs;v8('Lz2ppGZ6:̟1ʔK CT>FQ6G ]YYZ~ՕqT˕,M.Ǟ뽿% N# (Tv_k ebL\,!&^7 o)owߒ$Mo-֥/#af#o y8ԧ; }0  f!6`'6hmpJ'T@wTK>|yp* 0k;au..["&ONRm ~D_N:͞7:l1-NcE=ynxlԅ4 {\#&+;L^SXFد.+뚬;ooFY |;UL|޽dA Aǘk׮r4,-ʅsx8j-rŹ#2e e U#)*1qm= "ـ2rWCW2AR (c[$2=rT-&1/me4ຘ6Kw0e VVbӶ-J30557[Q8%rY?%l gj E`nrq<6@o>"Ew[79~f8y*KeYU}ʤdeSLoTEeaYYq0ׄLc@q4-&DLg&8Ɛ$8FdOe'JRjǘxT."=&^/,j#ҕ'ĥd1HQtdki%.[$HKD M Ʌ3O@iލCɍ"`ȗr2jEJVQdቚp*XmyU%'iZK*0»S%VÜBP 4~'ag/{5_]QhP?4ys0礨TRRje@BN++5Y{>>RpMfT[*&ZVK%dbK2$f$ʭ_\g .o@|12Dioёy@̙Ϗ\Gx/Wprׯobm-0 <`ܻLɍ꼐b.=x UW ]Eon;"ʙ0I)`z),m|{hC&bẬL?QճgUqބ%l,sʊ\5U1X}Q~8̟?c`o[HŹ 1XGBQ Jf=Y=YURV{T 9UOcuuW.$.  K #aS 1|g^ Ze-KoYӱmDd2XokUg .[[*1MdIQ9PUj ƙvO[ťZK{ ~sX[k Qy<%4X>/.f˙č"r%f16!;)=+#qYfpj(nހ[[rHafSTWZVtc"ᬎ0D~P~.{c9u[2X(,Unm_(sMJrU y99>loׄ/3"]*GEe.&a;.+Ee!*+kUq?zf=h߳Rg\r:ˏՇ4AAGx{yyyܻ40,-ज़j)Օmexm?P)7nu\mD(b1qݯF6-忭d/ZYVG1?Ǘ<ɘ6~.[[Ą6h%R9VW#0[)Wʤܵ,RUtVQVm ]So*-qsXNq|P}?d 0MځzNXڶN" ߩ `r*V]ir!8r99[iMo2./<$ֿ ܿ#n[?9QgsTUQY22L00*$zUr\c{LkuFH~ګXZիcy X] qIqC  GOe7TX^BVK]>G/M#k}~Y~m0.K<6rlL[MTE9z|'ڟ!<8~ZQw30t/߹adQ\^,\N.^8qb I@zu;`͠4a㲲'QFZ*9[if!\|zǣlm*BSC9L@X`bwpQ( eSَK;qIȿ ov\=lYlf#8U,OP {R ɢҴDJ75QU٬".t++>SaBPa}9@Gq aIq߇Oe7<*_^Bbb͘@ӥ`LMGד>#03y IDATWqɴE` 24..fme'a)9}ca 1}NjUHKuqۨ܎ė\)**Q(ؚ{DH55չslHa$*[f#.l}K;81!}VY*y4Mfcs;Oe >E9n]G%)]GNeI_?UB)k *8szp^E }#Do7PU}YJ1>z[kt]mI’ "A֧,Ɋ=b 2!&^JZ4+d/ˈC} b4"Z?j@\6ƥbD\jyP*.{o)IYzgKoi}spn,Tp`A`muBiiBB26a_K5F ҳ1Aĥ Dt >SVxu&DlYr?VqiU7a4a倨ՀM`j**+)kp]Q.lW΁E;{͛ѐ\YĻB 'mP&[#҆MC4aZJ28hT`k =u/a!=+͵d%0GG=&kTEIA2]vTvBTnFVYnr;jԘxx_ GOL<+?~ga t Ԍ؏?(q97' 9i9$**ǿ%"H)~cZLJKD+#UiDLBo',cMzXtÔ Z PRX9.{= !sp13s ĿD` /19<Aſ=7࢘*'Ӽ{x*i*!Gop\M?czeZL<)4ܸ۫ ^bſV)1J\^pO- $, 2*^xǧOe7<{q<DU9q(2%etBZ4&L; +Se4&py%JQO9Nz|>J3CSI]2χҶépN'Y4n AV&IʮDdR] LsxTee.*++Uvb >w+<X ~j\;7,_f:), ÄarrKȹ0*޼w[ԫ&-{,4BFQ =Y 5>(D/ˍHL[A$(>5F2:sK\Ew8*PCyXz%ae(.c@X5$o2:PG-2Sm[*%8/|R~`rPWY*gb⛛{X1!)+KܧqBY8<xKT14q|Uqj5࣏DUe .RlN '}nE<<N>E2&)? Ll E%c a0J2L-ܿz]lܿfi plYQݾЬgSVJSn[]LoIAzXAdS/ݸ-,I=U% @o1{J1}GRYX7-Gkq=z`Xx%|A1d7ۯlHe;_KLǁpNWT''>GTDrf&FcJR:Rq&tEnQL@=,ۡT A$zJC3W\ijW|%2~HR+0&`অvv6q.wKߖfJKoXg4.(Jw\Vad b.n\L^!GGWCi놲M7Uqy\Bٶ4 oǨUbt y޵\ ޣ`oOH[&&RID4p=YT`'/+m[i ؎6@}'P*վ`A4 S|y|CDʱ}p߇9pmpRϖo5(pTe%p$i_|5A$ԧ`T]hWuǗb^XV.v>:M<,1mڲ蕙]~?1nK/aVXꌣ*W;'*+WW}Qa]k5:,3ɟM~9Ǥ)o(u>AR)ߺZ%i6'ŀq1wb%̞-}(-`]YZDz+"JTw0hWeeS㕕#S)Iai๼l^ۍ|t(reeh&B’ bL7P+,EVঔl _Wjz?}O_GwīfO썑T/u y[o}OuAˤK۱'Oa/w '*rױh;㎳!dޞŢԫ)@OBxJ]Vbx40>H0w$Sx]\}eN3JaAA7%AĈ?8óM,6 aS`L\{T<>@rJ_JV93cKbl}*^#a9c(=sm082իz*]F- 8P%AĈǿǽKG/ӣV_vOZ?R^1e-]Ks %Mgoz.N}7c;3 KQDOK]ݹ|sn=(/c|RNHGK,:i>FI=/a.npM7%PFurR]RD$*uIWrzz^*Qqd%pO $, &Q9|\|W\K7nIa'I IZd[ĥ~^8CJL1q%.ee|(.%,Z_8rn} XXx˗+-&ꫢRIKuJ+Y+`X&8xeoMP˩IFQ)[*/}%tVūu4/KdWQƫ)]L7bXOՠd\}*GqY%|+_ |M $, yK*c2/E xxPٮ)n=`Y|Ɓ-?]ٶa~>?я^31QfXkC0M {AFc,"q^^;T"2.(ķKVWǨJfg{BVIN:0wj4;s\qlJ`p=+]]/vƻD\YY /@ 8PK B=2ǗFe3 DmG-Y*>bI$Xm{,i݉I٦]OO߄֛8 $&o[|U #&~۝_o92\S#'kX_qDY jxr^] ,.@v1,~ԏS Y;j,*;ԙ=IrXPnܾ) vwvߢAHXA k׮ҷU Ƀʴrll&DqNbEwq=Vgoٛ c@(,w~.~ׯor׫`990cq.⩧faac>lۆ!:E.1Lϥ DEHԃ2~3Ml_8@vxo^T, CǙ&+`L3Ҧ+,,,!C’ ~/믊Jäj~*,;Ij7Ly}IKYwpa.9mb\`u>5Ƕ4 Z/1i]s,>iT*5̸p#87 0Möm q\ׅy<KM]fR3:SI<,ʻKϟo4-|GY9p0KS'B’ OdFDeVw?TL}i1V_ק0MoهdɴۭIc1>낓߿ [zmcSebq~c*iښ7Ƕ3g,:<yj2Y rc9ET*8uN\im{{6}4M)F"3 4=2TIM?ѿTP,|pGY d..a ) Da%AD}_X2UTme.l&.{LtOJX80*KEco+'O2< 8!$qq!2d1y&2*([E7ǶWTv8|logSTԧr0:OX*av  K >o} <'^cKxe/DLWmek:7Yo9fgYBcUp ZhRE.(U_Jϖr>0(M ~lj*+3TP;# $, ;|^-"Jv1\NT[JNU &?xU[j~Vwۉ˶U@,@Tq}2 {/Z9pNP,`WY d2~a/ 2$, @љ×n!"Z"md/B0ILޖ}>֮v²!\ބ“Ȳg~YX׭/Y~rʁǿӠXxgY d2a P# K 菷Ƿ /IVIT (co3 iǀYq;U,ijߒrlTv,{Y-o#qph K $"k$ǿyG@ZmeJz"I_(& i'N7ھ:[w#S_~{ܻBclj,j;bX0mfDp1 Nqph KA""+$hǃ/v췿e3龾*Lԟ׮2md)Ӟp l'}!rL9}*bAR88p[1nHXqǿǽKĐbe 101x"a DžSE,<[?P.XxgHV G8Lx!aIıToGELƥӼ`tY0xK?>蚚f퓿v7xUQwĸ"n{)..$qp KL(!aIı!&tqxH[z0 3E& Ln]o,!uApO?Lωۇ,[M~olJ“^/rƅL|}x8A%ACgxHebU#חt?&-\.&.$.!-=yN?$wA-YD!Y%qpx KmMİ!aIđod?K }.qRemU[*q Bβ|"&;)2[݈ˣ ׯoRe~oqFoP,af!gY0 #rcЗGF\*# eqywcd9>pc4t>B$#ݤ_kJ` = D,?tf3)L]%6^Cv*ಽ֮˭i IDAT9$jhljUlWʠ2mV Ai,B` Q?:-ݕEo Jw X7HTbR?c \xX ҇t,<eo=eV^G 2! A ,Bbqk,?ҥ˲G`+~]rAeSۻ*C4BLG̽o4?hD$lx[SrwVq~8(ѣG gNˈ2IWelf-;v7e%.Tz<~#`zK"oluU|1RD\=,toķz&~_κm:&nOeLXrwXn@SI֣2OpYu ?lb$Iu?z;yL=9Upae 4!&-^@nug]|-n?eoV>j>~gX92߲hG]# B` )=CnEo}:* .=+o  c{<?tZAN2.L#9&n &Ȕ# 7ߒ:Kp9~]xN!c1'DGp8_4դsPiOe0.\#d%L.%{*)jZV:,o9n?=)-lmM[~O}Llꐊ"{*᪫#2*晧VqeZGhxXccO%7ZW*10q,}}XRގu]^Dc}spyr:ߎXu9l|f8XfJ) K`伨`nv[BJ:^1ķ_='zಽrx1^iz>~4ޗ<TS9DE V]Fwe2/4C@ ,2$n˩:.#z"anmq3^4/4jGu~KpCoxdX\2{*Y…{WqeX7$F ͓ķēؾr3(^ƥD<~˽]nZTb-ux=lM걟qgwyL<Ҟ tl+e]{3BD<X=\Pug]]<7|e+_xm|RHv[n{j~:>ѱ7ߟn{N|1=>DMɈyEXUTPK`(8}42W9}tX>xħj۞z$Tr.:}cYFP9Fy>|GXٮs01XP|K`GT.87}WVCu}u]mƹ߲;#|s~Fǧ"ffv ~.cK^KX$`2}yE3ј#E(.%gT,?p:n#R-{s߲#Ҏy~t-i;?-/-X>tZAeVvΤ&ws."18x췄X>7Ѹtxr/m^ߊ.G߲w_|21-/Ǧ?Y24y sXygC0!k .#:F[drۮu{o.wt>6R靻,[o%v]1=roE`CϿnKy9|'{N^=8xLA1,8~⮇V6I(1xeIgH[e>z\n[so#bj*\>qe1VlnX?K`{*!nݱЙCyIшQcL饈vocd$eUNb對:U`iOedq΅s4qT^zKGcXK`!Z-Vx%e92#"Ogo]imcBʝJtpiPjL|؁=5<Ex4*grI'쩄Y~qͷDLM gk` zmL=w2m-*VlciZFo9.X.q +˘(#Š,Ȗ&؎8ET6ON$ "¼^ķ_=lljX *'Ȱ…`%-[,쩄ɶ8~r7/tlo#NeXxl!\Lv ,OavY +se qLJ|woyΓw -n-w ,:xr]>CaefL"m0\K(TGcSSJӘxu{6o ev|s,)"i -#趌9rzXfcN,ى`8PN~n;.#v ,w 07?5POpf@1.BcY2X~gEˢ4f?cʡQXҏ7 ?^\oyfsD|-{tY<]_cͱ皗+S#DZF\r{o;=lױpaLj0ًAo {#OǍ7gsL|-S]{(}YFrze#^H|twW\텕}LG`ɠ췄 ,`c>o߲cw=~]l=B-!W ղW~֞IUo9M'3%=x7+25:{UzR }dC]I﷜DCh%D8dA`~YXB =v[txN̈Fmy,SzLИx7pt_\'zvEx%!dd ,aájvVV*~g;y&:Чt3^/|*b# dhdz&bvv۲a%A?Oc橗g]C$d\:W[I"!W\qeh묌hn_ş{ (~;R}~BˑwJ"rR1q ^ ++%f%H` CW+.T;+[Zk4h4x;~5lq1Jr.K$x\>d[GX0I0D?s?.DLmx#"Xn5׼.]oyG`riT|g8Kze&bjjB3e<xecEcplG`'_`DdsL~KJ` C?ⳟ|joe9޼Muyccc+؈7'0$w4í^eOG<|zGe-Xl;)I"H*Kecg~˙-);V<ߒX[|s_+ +#頲=V6g4v\F4NS;/Xx?] 4syԔ0sV@r' $Oc[R&Kاs;W^nlǿ[prckoͯgf?-ZFt~ۻveL峑LUv3<~N@rTX99.q:`'IGP (m_.9$@q-?x:n=cl/^l;~7#^+H[~q +NOqg-kk GlIt3{ak,h4"ͬ(}4c22^6lķw-XN"*eKF Yh_ɺ 2"췤(^V/G%/ŸpB;q…x~4~,p`8o؎-nr}c#.ovNvXN*Ssj2EpYr"8K ѣ-%%w~e|ƷF\nxЦ~J /~rk,?|~$5*jϟ oujň\ ~ˡH҅%eӹr~~>@`I,(~;R4?7ZG2c{5vbF1NI$$M`IY$kKr-x(K-lv[n~ghyH5wFez:NFh)dȜNߒ<0DjK '}Ww4I*>g=p{h95Ed]t $!a%0iZ,kZ֘8$jw}&ƛ15_ -tE מm"ٍI9&.d@[6F7>cm}c ;G/F?7Ba{*V%4'3lKns_.GD=eQ:-K` d@-?p:nHm)6YpO-HžJ%PKĉ%+++ޙ`hz)}9W^<_~E/X/%f%"$WZ;0::}l~~o n^'ߝݖCx T:</j~#!_K؝t@K띘GngΜm[WJDǾ#"\^8 -gn,W k.t> [-և,ɍ'OW` T_XZy$#}O^qSO>[e+k`)׍8Ps?K^a7uCI[9s~XKvKJlxBm`W,3PNAM%!+hr*%Vbeeernn.>cJ$pxjoʧ̸r 3O^a5P|K(n QBN VȟKW,kkV{4jGTdyߙu PhK(1q-ϡ;Rpa%Cq橬+(6#@N>|8緂˓'Oj~9%Qsw:8{x嶓U|6Ғ2BdSMVۺ i}t7>TDLh`)&DZj'NXYY1&3Kr!==I+-S+lęXM$toKrX~9M СC~LZTj99V̱p$-O:,ɕJ`SNw}-ⵯIil;v̘,-a%@y>殯5,#`#1~ˣG-FH` ]!NmvYj8y6FH` 1S #1~Vpip ,=)E%%.obL|@O(`w[h )uQ@-O<'O4&GK@H CrXXX_ZZ\H` JH ̡ٛKRk-)3%7eoi$FHP L"-`|Z-O8QKc[8J)[V.dqH+6=e] Çc~~>=gΜ'OFV˺a drߒ(~ˣGH8쑠`pr1&c /ژ$؟֘0z1Y֓ЧZTT#G%VpYߕu)Pzrnn.Μ9ǎ~K U/Gl%AZjrii)w-Ѓ`~K#7@vZc⫫3Y?zhDD]DXHvJw%=gޔ~ *-uYL` #^V6-[{*_O,-gXKN}Y0Ʒ߲~& 'tWh[_,I$ݕ~TC%09 {>S/]XdLw%@~.{S]XdLw%@˝[{*3]$XdHw%@][ƿGT& C+ҞьD%0)] P,kkGAeK#0A,-ک9%@F!`PV @`  ]$Xd@w%{ePvK18ocfePfK1[Z2 L` 0F ` `x3(+%j8|(+%`jSY0tK18MqcoF@ ,;7ǁXwoe#Xe#[.[ZX"1x0j$D` 0b`ԼI`8x(%yqf9PK:vYf9PK(%PK18c `D X@I,.ޚu &Pe e l,D`{#rC` %b:PtK('E'2K`@n,djSYgK(E&2/`CTF;%K 7@n,X!9vYgK 7@n,ȕZXYve ZѬK C:,t`P2I}rC`  %K 7C X J` }rC` 0tF`Cܬ X!rC` 0`/#!X@$I#E` 0˺($%H,ȂJPK#ʬ X@I$F%`d;pP .`(#p`f]J#%`<`Z `κ( %\C` 0r.R[ϺX](%X7/'.}f fweK6ݮ䶝~$iDDQ@yH,#"B%Pnae>-,j%K 5,?yli4>Y#|aP.:,2첼*2$??uC(BgeD¿̺Xd,'%Bh _="E +#dXdlqY0K˲.`;-,K+%@,,/LBh ˷hae<K(Ze(f`Y,ss?u cpվGy=%|=_@>IDAT}\W{]6ƽ=tXDzUaN ݖyRH-,#2 G]G:,h<"V="tX&KivY<2,I^ʍa%=,;%2#șk.a*I&Qu~8b0 KV⇖IH.x 2mqJ`a SI(^ظ=F[?oor6ssZ==`2ȩTW*?mDGGtW,rkq񚘛+55Qteq."eoYXxݕa$ jGȑGDcB(8@;# ͯ?yƽ *{{$lL:, 9O.cd*m t8_2vUy{. wtXH2vX^=-x,.oge:,^.R=9^2"bcظ'o0iG3<,V`h|L6#R,+2FR*ffSSdy,"ucq:+zXLvDSS?oɺ `Gq!BbnN؁(ƦR*."Iʺ`$g][ ;;, #_kegh4/~*66 GѾwr;+;Tw%.tXԤLT^]f] gT>u!c'j2"bf 1;GKL4Ufo%@\s4_{$ުG*[KUc%Ĝ㜬t2mL~F'^[EttFyWMB` MqfWnP*YӭIGޑkV.5 %4L2tmJ}V&uS4 -WʏM7b\JJ-Kh"7t JSU'6 -`h]jh2͹a ;[%˲HX}qF^>tX}P5NV>Qb-KhBC%e"aɲۣ>rX&$:@%x$̐3FoӌkL@Jګ DtZ&8]d2NʲRݭcɑge:8`%4L撖rx)&9sӯ0 1pL҇^jȦOR >SOt+DAe9jZ>rN=XN?:ӭH: t#fK"8%Ǚtz6baf쳿d 3FbK+,E8tmBhYsԕW>9s.o2AX6)X@ BˋM+stfuDAPyt#AX E` -rl,Ԇ hK@8"Ta%_}tdj͚L*Q0SjIzr#WHx[[pRR2)YVpOkڽ{gS?w][pJh,KВ2k׫ڲGӟ.ԛ;[/$# B XKߗr׮=ztLC1ea%;,wZڦh*g1OzV=ZW JԊm/%a 8N&;,Gr`@cǂc۶;<.~aYfK|ĽF ݡ*e-cǤ^魷^oΝ<.D郎4x,5& + x$P㜤-[:Lf̘s;uh֬/iʔ[D΀SQX^+ :,%CK۞f7kV-OC3g^gq}*Q9`GX B` 㜤tږmd0y\qZ)vզ4ԀWCDV@X*NӲN;-Z:Mxvuӯ w0\tNw⋻7JK4\q?O>t.m+* (MI/Yf @J:!םc5eZr16xŦ>VEX K4Yt+-k3v&MБ#un>c-@Q ' )Me<1K_ZFq3u uIwi„UJ>k%n°&!8 YrB˨8qN<M/jo{%1?t *t H8j[\5k1?~|ߗۻtK(*!Ė-)ٯK.ὖQ4nr-䫷w;+ x$P33M7_d ֶT_Є _U*Du EDm/NX 1E` \%۞jT Z~J$/`H>DHy_%%gZ №qJ-V[ە76Y"%'n rGRCA%"!a%4K@lr6o^i A2Hjk ˺PuN;( ^OHGU@; _{}CA` e-+oxH|;l{2nPCsiri7t=onUH$NQ"qܟ^$r CiygW%4! 4ƍy m,k,k[eYkH,4t[`dRR6  xIJhR4mOS_u%T6{t;#='BKpץb/ lV#OnPG_#6o^3(XDb,&YMJ$+o-MRb s9hV_s17MVcVҲne(i^JX n4QF%W8KMhKQ=U7׿~V`3XDb0 (+(Nj5ӏZ Dƍɶ~eHʹ$5w7whnɂ#Q"^Lqm DmOUo?KہaCfT~>%f+3.wn$eKohaٴiكZvV!tI];s{%3 @qL0I=EG~N]]==LJ$*0/ 3%5njb$*N?*Yb @X"XZvVD>̟}~>'vb4>4&*5 B,1EGڵ;u+-1zW|_6R>L)ZD@jWy_1 b,/Qw!.|`^>%ɍ w`@PbL8ڱdt"JGǧѱXݷK<'$iZkxxKzMu21w *gۋy_]Xbw/I?vi(%.}xj @."DcMK@=܅@>G?W% ßN7Z E0ö)/mb{WOՓ{oeys 4|7IS6Nʝ^{{V1C` hw5Sw5SW]mt;@S%M)>'4Kc8Cu Ӯ~6:JN"\/nSo}mv*CpHƥB]h #/kza8gX O6vUB` hJVUNC~t;@Mn°̂q8;("?[cVY CɑR?hCA"ӭ%y空So B>;Zu|Y*E},kghtbA$t? *5E` h wqduvjJc] \w<6megꩧ>'_ +uK@Y|/ۏ{;^0g*ytK@Zlxb}tV,۾Pw + C` hyK'kÆ6ӭCAw,ٰa[Lw9PwrA兦 KBn5L4 NP 0֯~i:ӝP?CAw*W(cݺxYLw@mBy?R" ]uUpcҵ\Z7g`qݔ,@IAxopek ,Ksj<%!%A` *W6_:eXժ?У$K0&zne`<krjW`vQ^P U }z=W!Zcҵ\ZG;s(+r?*KPs]] 1 ,krt-R߫=)|Ng2L^Mj"OX'z^~}oܫe]k"轲ǫ8U]jӃsTD;O"B<։1ADL#ED_.bх;@jӃ>348Q|x4+{˸'N`{{wa)mm޸ b(/)j"T-&N@j)q U S&Zf8U<_,E9wG(/b`8h hd2^vN꿮G{Ƨ*fyT-V|DčILŊ~O`YUDt&8q'?cIDt@@f#b2I'"=" T-5Ay@$ىn P8SN5,Aj/#&_SΡEj;N݈8ç0kEKZhND܈ܘ8 hOe:9T7"f~̥,Lj'GߞT{#"v"-ieZxeI1{/}É+X@2Nj2Fk^cXQ>{'8R3k\)>R}gT;{w׷0kZXQ͌MNϢnD;? ,CjۇGAqrrxw},Mj "n3{@T/nDL:xO>`UK,CgD~xW"P@"F&1D͈8>>նNeT-0A{*l:/V݈N$N'>?^_&PSo.H_o85,KjSϢҽxlB+XLg2\'dމ֘I?'q|RD܍-_o?xSO[[]<A`"n|`vUwDW* W|wi#P5XNHx'Ύ{)o7~>ĺ 01yS8 T''g1WJj;좚L_1߈|e!P5PGE>>x/qE܏T݋__'"~kX1ů:37k*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R TH%PJ @@* T*R T +h*AQD "@DDg2L:u;4yFJ{e0;25Tv$Pk543zΩ*gPDt"XvPl0X]n|j6׊P|'R$P>+Y]>@^Im`*&fl1PF62-:颣YzιƩF)66PU eٗm8~ƨ< יL&E`04_UEIcy-1jk_ۈ(GFnwV{{ΥSeNTǨ:XzTqzfT5b6EQW(.ヺLk|:<\ΏRz'GSan*%ZfV}_uG@ZT|աz.zhVٻu^ljL/[fTW~oDD h8`#z_m0=O@õ.P^gc~&Ʃnw5O:.gQת@5;ar3˫ID*ZG"$k1ĶΈ$P ֪@5kvze?KbI--IFL&I"9jPr77xhO4g[g@+vP785`͏{@õ2PZmu7{ Za`oGj&@;Π?FSSΠ:PUj)Οr, RW.u lL:Ugwj=*EZy:V\XgPAy]Z+vP?=ldw jowΞjPg44\+[`𯝽n[.Ϲ챗9a{[Zέg]uΟ5jve;#0SET7}NgEQ~; V}*]{R=>]L1)ZqHzD[fyby-s*e:<<{X>55;}R=VRuC\ I+vPEqeS{jnkċv3ϩv=]fE_`0 ]}`C?(@K&PE;oqD^}y;j̎^e@Oa FgVg$BAUSQL7NGΛJ9@T?gvWբ.j-W9jTw06C+OzfT=eZRf*roZs".vva-w=^S4f ?)U[E2@Km\ZVuͷ.Ff}싢Ss+R1;|hz@mUdP]Uz>er}ă]V_{UQߟޖ;gnE:8o =$}Y{{ӈ3֛?fgEk6@̞{<:knG{l~8_X[Rob1{7quY=Ξ`PN 5UiףBp"gLy"Zf+ÎgYWU^oz>TwҙZUקwY`>)TUL&I"0;27kXBԲ߿*ʅL޼S9f h9:enw׽g;.{bZfkvP`0ӳ H]hDy"U4VA)`#T =ZhN-eo9=-!P@[hvN-'P@3H%PJ @@* T*R TH%PJ q,G#]-Ջ"zQL?pU`(:zeld2 aRXʤSLrR1A;<\.TE"Fnwг {DĿa`{ݜ}ΝqtskYXx'v"+uv\w1--?3?Z6Ù@{79>uZj[e"S @ZN; _^  #uKQ~Պϝu3~> [h|­whjŎxN<R`QĻ:i$P\'wFo?o6 QƩ^LwP@IZ쾈G~n0ϞDSG( T+UݟkrWՉ2|teqvTEyT'"b0v#l1j/龈(/Gw]*nno/^q`*PMbQ&PbzHW= ~c:7{$":q)jE&!NGKjѢOFq;ѾjTHUTo @Պ=85vm[vV(wOct@"ELW_/`׻vS'80%Pf/=;qr҉s/Gn쩈G&PDy9:{*Ru"z~7cy=U0nEyͨ՗fTV#~C' nf/`3TǧoWe'>>z ;'g1 @ | ,-#7?l u(9"nE7}vuXK?މc'Qߌd|b2U5 ?Uuxw5k::[w+G"n{x|ߨu}z׋L5sM/oFī#"ǽ^=h8ꚦ}ډx饻V|ME?~xx?T&ʫ#5}3k88(2gdx{+_6k{L }''|`T0㙏N{wUc~__w=g6`o:߂8ʮوxYDMD<"%"9"nG9cxcӹ#qƭtnK/mA(ʝS厩Eĭ(w@1^FߋGbg} rX>A;w3g1S힚TH5o?=/ܭ`42$;}CDDǟcEHqtOΝWS"P]\2PE!k\P?O\?"忿yU.-#P\GV{j4c@pM P,m}[]5W-%PNuΞZx]X3Vl*PUc~,MXpf`#TvOX `QVJZ1'/X=}+%PQ 2r"@}+'P\Uk)Sk!P\hg`TWQ=r^ FuED3 a[Dx:0%P[Hx}k%P%UfU W,=UY.3Ft9UFj!P\>-'P\>-'Px@m*@v; a6 T:ծ)j!Ps@*yQD !Pѝ;KU=Pjvw@up2l h񾢘2-b@ }F -$PTܽ @Q)wH!PDLwOUc~FE @)TU-ne/>T>T݌f @fw#"b}ex@k)T?F~?{gU `Tv{joykX3 NMWP+ NMR}:Z^0}[HKQh .jt]Èn7{lnIA Vl! mvw59@l}%Pۡ }[JC@ljהS$PS&Pf'{F~?{WSE41 "Um*HQ%zY/ Tfkx_ 4ܹsNmRU vw@5'/M@U) }-!P=UXÈn7{\@lgO@l}"Px@Tf1:Umne/>bu*`sT>Wӝ`[fVfSדI:jbU FDxtQD $P({6e/ZPmB~*\@l}%PI}[Ho@[Qh9 h7ZOխ#] *^U@+ T@{U}@U;wxj[> 2N%P`Av[Ax߃zi`U9^4>&Phw T l% 7E٫ @vMZS[Orzx!PU@3 $"P9ÈnW@8{ U9^U5Vj[8y!ziPU@}46@xF@xs*>8@ԧ3 hgzT0GJq+{P?Op >. PgKTUf/gKTIW51w=n Nk8,#@ϭ }HS\@O7ljUqO6Tz[q p"*N`pEU fT9TF~*h *;KvMe:8H^X@>$Pc%T` :X@>$P1Ft d/VS6l/ Rj̏WVvPW*zpMp=&*݈`kex_=@,3WF6 XS@,S@,g4rx7+!P`T1 TB}@,f8,_ Tg l8*%⪳ի׋8<^0U@%.*` T n*0p5);yX1 }@\>Dxk$PW` T; 6U*{ 59 5ˍF~*`U;wW= TIvw@up>j P3,U00p>}2DTFk& @0@m*A.jHٻ λ>"i B)}FSYW*+9l]/r;EnvORr%}+)^M%vÚt:ؔ_ [2X%cu{{8s{wsNS5u4wszv;l pX3UrSf* >L@L R UB%>PUxz)` K= p-$1H@@ԥWl(l;(Wl.m@b*fz `ʚ$ mxT u:S6!~?l%>*B@JP6RBTl#>*D@ۦ\5e!mc)*F@U S6#S>U%XgT}fH@D^Hll>*H@Xy#l >*J@XUTQA|}T"MP+F !mP6 a J@۠׋hSO `{ PST8l2>j@@U SRTlrՔST 6 Ub#ST1R<6 6zʲ_ !M@`ӨP3*4}Ԍ 6`@`ʚԀ2.ME۩SP5%M@M `SPS h6oSTjUxKP&PTPw))ԝO $"#SNaQ*rSԘ L PqJ}lԕzB@u41TlH=uS*k~Pc hj4J<E۩PUxzjS{TP7}TPAݨaTP'}l ԉzH@uPA]0Rq=Tz{!#SP)``*'` *)B5T3Q` p*@'*z - *"mM@Ue[B@UUTU`C *bN@U)*ETPE}D}PsR,q,b8LROpnVPUDy#TEjJ 'XUEZE@'8 + "#SPu ;P@@Ui *)[D@UPAUTP}l)U\L=T#J}l1TAn J*HSl9U47R@ e@U`**( WY-%8zgU+jL@) Q-&8]+ 8+;PAj}l9SO HJ@U9S:F'PA q 2Tn~ RTn#`B:a{*H~z_vSjNZ'P͖S0K@Rv7;s@`]z,ST}BGzB*T}p(U%]L=˦PUjTjQP+PULy#,S_?PULUTeA͍j*L@*yq RNpn*X>e8L=`UDT*}p"*X>81BjNTt1hT[VOI*I@Uk;s@M\J=lnTL}`zsSeRSPULs=" q>85UE q>8,KjqTSP+P2Spj*XަaV9T }pf*8/>8Ue]N='"RsPy TpU{O (e%UPU+' 0}*8LjqTPUTs="xH`X+{w:i-#R UEu:ZP *+Gݵ۩'83DQYV<g">HJ@QPx n.+i-&bj.`VO@bPLY$%b{@%^}P  k6oasi<.5#V,%Rc '8g4R P}{:s!b{ *D@vcK@U!b@.}P9*zT.`s@% }PI*C_;WB@vZsPUXs="{{sSPQ(zA NM@Sc[yΎ Om#jF@fSPTlHj@@*/餝8.W=5 b3Fű%P6Tl&> U57RP?}P+kO(tGDhxP"8G˲zQUt PQzl Qv;sK%>W=H@E=0l `>Xڸz`c jc*>h*O6S&fFcJ9P@UTeVUF{V+P'v NRHSpZAPVPQ]1OeY NL@EuVPQ]}TTzl դ[C@U+SzlUlI@5[=[A@Ezl2ǖS-T5lH=zN'j*r*}PLh#VPQ}TTz,OG 8G>X^/bg''"F}TTxѹz >OVPFYk$!"=>j*R'"->ztGDhxeU݌ǩ'XQkSOpb*_-)>X,+p IDATyr PFUlY=N@EeI;4zTz0C@3Ts1W^ů<TإpZ#F!ή/}ZY1DbF}A*k<\I=P!i6k\틘?PHUTeS;eJ;P)*GX@@zP}!TzpA@zv.tFزz XL@U;5 {w:i*K@j>CX>Hk0ȲSR`}N N tGtaR' raRAzn ND@jG>H/SOp$1GtGO' bF{dZijA@ bSPN8%˥Q@@zp taѨ8NG@USe2{w:i,'"b9zPe@%8*OݎM=. 5XVPq~}98>TOjqTH@UKS05Gt1U-U$sPqvZijM@٩K fF }j*2JFXg,SH@z*Ng4*-Pq:;s'3D4TNY T@ 89>`TuySV@@ɨ+"dWzdtGtQZ+k|@`[jܳ|h)`TNXUm]^CzB*c)`.m餝8I@be,K=TjӹPH@UcENX#RH@A} 88k"8s%P1Un)`TLj*ZܻSP*> > > UM57wg}J@US2.> "vv"<$ hT`seYq (նm餝X0 ]T۬T@:mTj V}@EjoڿZTjjѪ+`s <.wʨrTpX}m™uKӐydiu):'?i85BQ#kxx7hp*"NfgCz6.\xE4^…7E1zъeIK_ZqXCz&>?F[b8x<`ԣURy1.p^Ņ^bAqwj^Se0#Wꋈh6_͆{Fk׊`ш7#f>{ǻ"⿈Q4VNUU сp{wd?&xK<F#".F3RԴgv{wg^PY^#}!^?/bs!_h4J=b \`U&I4"z?ҋc{vb+-v0K@uځM̓+׋p*""~,+WPYD-"v#݈ ./qn=WmnygG)6UuOu_b2z1Oƃ;vv#0 ӫ`k^so~…{cz޹F{y)UWJ5b94 vggUU=qte=&PbUվIo]7r"i8uҥx+l8qlbSYsjb27?F yODQ' w8p?2U3έ^…[dl (v˓Dy4֫hz_vǭu\ef}_=u9~?7͈p߂d5m#.\.$+2^{u_t[w~t;w]Yi *6?}~U_{gDLb2iDwVqj4"z^ǣݾ'o~5ΣChߗEzm>"ӏ* [Wk1sLDAe [&y#;truz'W!o;O]=ݝs|5dzƍ _x.~w?K/~mhgO'b0xz?wD;zOug׭y`|K_g'?۟9gS?=D v1Yvaλ"E0վRL^7^׿/pG<瞗FqyyLOλcb0+sXE+~|+YD"_?Dz֝h|C~yNU;f*~3Fk}'+jӥ//F oҗ,GxϏ ;?|\~=O5zj;\(z7c2iDѲ]ؘ"!7g01Zz?7#F[W5m wO.)(*富8SvN睈7#˾)E6} G O^̲<^vwO+7 ֋ޏ"nFkGYmj?[m%1%NDD漸`Uկo?)nx#n޼7捃ѳ[Zg3܌F <;Ϳł?/Xn\DBt\Kh5Uq尷{q ~'{<"^v"^:D+wg/ƑeE|8*_H){?]X2*yޢj71|rދvdf7#o"{}/d'S}qOED4&$ϋڝΟFg[UڝwܣydekԵx֍&QT7GDM#nwğ} "wd2)^S~ _=]ywty>:_[(sFD"7}j|}uwR~!7/za #}<Ÿ51(~ stFDKrXtǏ ls)E|1"<9o "nFߝX?!7i:kJTxaիf|Lp)brar7Lð;T*?R#fXor[7#cn5:TXS{}FmD03?>8Q0%///]7UyD%{u="{Rp=+Im6Dpf6L:lߩ/1f=k#,{ "E5oq/fo\sz\^ⅽ}^սoϖ=ewdы㷫|vpjGP٢Zo\Qp6)+羋"o9͘n~!"W#Lð W}>|7"IW#_߻ J+)uo_Ǜz]+y@W=ȼRe5̧ "˾)+ Snp~TJ#tX(5Ѿ=/rS9}E839Pht+^i?o1nDfD1wGKqnWի#{swZq@5zv l~8kSz~G(VI~zgɆjQ΍ݘ0RR(VIYvO;2I, f ["fъ,}4x@AyۙUR2Y6wcgO"#;Zw_ݵFk1ۈ>qG#& IL&7&xiL_+5"oDEtv:ww}Q'GMF)q5K#腘V;",Ռ )<q^> Ž}ey}k:`fyWI݈O ~^(|#U,v1xfѾg͓ȟ?"Tk5_;j|cL^4MnF np) gF__5G[ugG18$5z_iGf+|r_o<GdYnֽm~SGkb ŋ_U2*;Ź}GmC?\Van {Bw)&]ّu ҳ;վfxﱟwV󫧚]=5zZ;d/u[=]{{I\"7p3;NU[Ep|U{N|tSdٷojyVO^'1~"cZ5/W^[-]fOTbITyv#?K6 )~o>v*՞+=4@:[WO쾛_kS(OlD!zyq%G';:w]Yiͯ\=[c@^1"4 ty΄U!'l8E]QjvWjR8gj\E`-]?wRDJV`jAQ;b8P;nTDs+6z?pK 6uѼhvt|4'b7QTwG9??xu_j_ު{!'!">kޘL~Ywy~ϛ]=up vewG"O"##s-vw&7":+>` qo}{7&4j*ePn~\!:=j4?qT8Uz>sΏ^#/?Y;?OtW:r*jP]ף><yԃ-l=%"d?D\}4O 4oӏ,o]}8k({fg(oW`#⹈|t#ߵqiæ}f[vnLDHz)+{Ǚ v'jFh4}wZ©;w>;{n?|ǣ\<}ΛGx='_55[[Vo([T:y_G Ud_I=R"?;_==vRc2LlbP:Q?_;οx[DD<ϝ~18""7uŽpJo~rS3"bpwa=FLCӅS\t}νhr*_ ]%=|=i|a+xiA쌋_|ONEXAuVs*CUS4H?7ѳ3O}l*j~ڈq*r.9j*"Vbv5JyӮ@"uWI2]yNSM ^"Neٰ>xr3O_Y6:a+,X~ g#`-[50l`TRYVJy^$`0 [yj *~M;jV}}u٠RǙL 5 fW'w#2OtYhr҂{1?={Ba1? ,]|۟}O '}&Rr̮9*dYN&x01"`Zi<̽U>?# zݾuRBr8x%)(r"`5gO};r]ux_'eצjUFa _#J%ƯX]4H=|~/U0f@bllpZ,6/[;o^;еS:yWGur̲0~Ǔ>GJUb|s@=Jja8Ty{; 元'יjV (G: c+]TEi @jNZqRm^v@vAVJ@YhB $h U]wga@;۩F8i I V@ҨpOPP9U)&uTmxގ<.ZRӪH*=SST!)\_~HȺWj}}}BGXh VL"?WmGy{njzZ;.IJ#))m"IzꩧZ/|> ,8V`54jܰPZ>ubqGa?hMXИmR}ꩧUȴ WuƇ@4Xu]y5q4x=nϠ5(5k֘moo Lmz@X>b ҿګRWGjnσ%j0Ar*)PNk:PqT٥V4 O ͙pqPb*(°ia(ovM8vRY{6*Gƻ?Q!e9]dayxUWA`~0X6h@ WㆱaU ޵signkvqW}_*,6טlu%#|zAV#' iuU<|RRi,u.@ U̬Q,KovFN޷8V 4n]˰dkvutr9:W E"r9j&Xx-ULAWZJm~8qIU{>?6ŋoꀚp$+e*67M2;€u{{pRP#X ;kz[*r8vcr 8ψ#g*hКun^~eUH)V4qqQXªNhT4ĬenSqWAjJL{KMI*VW*Mj1/*~LZ 8Ls].\W^BYM*vY6eK;kX|?^g~gk]]>Sc_j9<[$ӣSOi{{[ZM3E+~@:^*$gn?F!LQ:bV҇۩Pm_B=]Wc^7zN0R1TTdJ .H>ONvO `XyPUkwۥ6U^PRءu]P#GƒIfimA1(@:"ܔ8* Ci«#}!lT!Iڀ J&dޖԬ+2)nUM qĽ_{~]~l `Er:[.0}Ʃa^oZkx]v5qHXq%}LWm ;XVf 2;TqӴ(%1 YGL`jM6lFO{z~,$-he<VSԬ݄a(-@R.CuxjuGK Ln4jLe@ iUQ @9O5*&S@ I!`X0vX CQOjN}}t56tiOy'OH*?WN I!`jZUpUgCv˦X4JbV$}Hs8bqrŚ)o~?C>\U~J!+L+F*ȪX L$) ǦͿTd=ԓNH{z8N<2oo[';0OIZJ H`bdr9S ߕQ Lf05*=QcNkN.]FBO'=쳚 /| Y`'}6\mрkNݞ%WPC}XIz_ҽd=%o7Zj)xI|rskJJ0fLb(;] ;N4B<`KzBC Iw߯﷯u)/WLO<-,,G~G?m[|RIZY1pUĒ iI i^Ҿ>[ڌV Nx7J ܜtɎ-?%VW.'BV=r3'43BP?,iQ 5VSـ5KR UF/*f;!FcǎinnNsssrr R&BV&X7VgHӎ+C=.锤2̩ٿ:hnNNJ C-,Աcd}lk^V[9jVWMs0t" J%թ׭XH52 o6*1I˒N,ZhLj_$=uR9YO$3: _\e=Cku'z۵8y66>$FDV=4Sy6;|:&];/Wc$r+IuSY X:}pӧOGC=}q=qx)/uF=JRLT.iFc~wC2vẑHz[ҏj)l7~a=:y>NZ/r+O^T$d"`EWo5+Ip0JK#~Rz˄,1:/Fz]KzXZժj@gΜC=%-,,޽{ӯźǕϿ({F%WeVS(jKym[aKL%YluL&X /9ʔ~j.NJ9zؼ;yI:Xr577y]zUO>d1 ^(S66!+ VaV] ;y- tFf)uAsA뾤K&Y&X{ C1|Fg|H?|ZKKu޽}}rݿO|>:jgcI Z_70H1m2>QI%[ 븤$}]҂/sk|0*וE9;Ѻvx}9?w.v~DhggG(}W*T~E/E $mn)p<@2*)&Xm2y"8+qUoSpQR(i6%1,7zH_>wgzKݾǾ]zC:qD_y/jcS r珼XJj)#d\n@ve,"\RuP%7LbŢ*ʡ5xݩ@ત|:v옎?yS\<~ͷ--ߺU];}Zo>\sźᕶ${TnaH:Xg jvt@qBc *P,vn:~C+Ft1innNҜ^yi/g$Iݾ^չ/|ŃWT*'U|`uF WV- W:hC:=4j9K:baj~~`N ֣^}]ӟ~#zh+͚=L2 m0:M{I,Y;o^_q/k:ӫ :qN`|=OνTwe_R.^|3ֱU*^_ٱ`ur&\ W)cbU_ǎױcGWkssssy^d&䥮kb~.VnIULUXS..nWɆqWLܜ|kڮ"\n|h긇ֆ~jB)YK%Hrm?;|Tp҄) W]pHEiz$TiL3'Tltb\4*zYtD?3Μyt$#)_/c Csy̿bqOʮjr |:+XbV8,<&Tv+5?3>[7+տ$_[2ӘrXJj @e3ZЩ> *Ni=& 81hW۬N~asL C)ո?q0{!5ka_wKҮVW{MnMZl^↺u@ fpֿP?ebNxfgCv&]W*YM2Z.at[IO2 kF7{bB`J)Qշ~{Q|X4? lܨ4v;0!$%;U5(5+fe@kS,RjA^Ag.B\Z{ߝ3_)N(&XSpC[u6lj־D`U <]&Tq:H=@miA 5?HPJn I1"%8kW Ħ5L|nUߍlFdpxiJ-mlVWx;. $ju\uR4k*Nj$mnXS6A `M);L>p57/]ZJjW3п:4[eJMI6:vafTtʳ:qWfۨ@k*pqvy;IN%"?6`|\ׯ7/% }NZ Z*{^p;h\&R kʘߕW}3U,)^at'Y)D~ O0V`m'x, U,qvU)f~no^ָ8{P8GA@ڑ7OjV#laMV<)pF_VIi*w_m|#`MXإVw Wlj5.~ラ!V8n̲Dw X8m}Y;k Y]oJb hZbvv=~wuk`5ApV҇.v9uxpO]'zIu"<9\_J %M˝XhJWvfkB'm\D d_̍ę~ =Y]*$ jr9270 :3ϤnnT嚧wK]] ׵=7׹~dЏq K`8k':?ҍ3g8:~]ZMr9r9i J%sJ )S_W5@ :[ozA0̸~0hR+g/f? kw06*ͷkU<\yoqhoKHZm{u25 `1:AA@ a6$\nӫs_OpPlNW* 6XT踒SpUr:'Y̬IR+Ua˭ƣՋ$]8VK?y}>qΩ^2jQ;=*N WYj 16`I496E충c'a(viQ0*h#GO W-j٥V3v޼H 4jVDEpPLV&mɳ,>naj@ZI WgfUpYCC= ΖF׳wOtZϫ$h81\pujy§{Uw==tnݽJRIRR YWVVc(:X`u,p5 J=?Hd}#aRѷ~G}Y?M=|޼yS;U(|Ns}jEVH\_$j5r9BVau왊3* 3S@:axE-׻aSmc#j__ݼ?wOӏz/Ò/9V TNrY*jC:BթW4V@ZQn)8 CQqmoiKKZCݯGwoᆱUwG?t [aV5TT"dNJR: !|OLzmK%=07#wwwI:&LmLUvJf\)'*WZ]]%d0q#R*UIPƇU [H72Sݫ C}u/hKIZttz'n}"PahcVW\.MBVǒL5T W EUNkc;O ˭ƙ3gXU*Y_՗kKIzD҃sszq=rzᆱ_H+\k>oxJ!$ D'}Y]j0$xR;fzPRҧ:ͧFq\|mTmL6wXN$'֬W%EsGt[-Iz@}$'Nh~H>w^խ۷u=%/%}Mj?vusCZ]5SJpUpU^ߨ$?ҽo..^2/ m|{BQr\U_ӗڒ;zTiI$-iq=SOMݼ}[koH ipUysH\.?8V,J8Lh WCV;#LpZO3~.1󮙄v%]%t>07絴u޽{kλ{kI-iKғ !yޞgW9UTʊjJ]0B*Ljp3C0a;aףAT1Yn+ =T*&\-qε+ɑ$=_zUss1='ztkkKݽwO$ݔIWszN<<)?r>VcC: e);yRZo`U_Є] v|A-_nݹw>@weտS~c*8)3찕BV;J=^A7k^u6uOI;w;-ӻ9}dD1* in\.A] |Jn^ߨh# ^NIWEI=ڻj=~OI%}[mV*w$H~jQrӫ9{kVWM5@04SnIn82JEףQ;p|!kzfC5nD6PnciIJ!i{qÏ+7gO77ZM ʊj kLbV104{-<fNk燪fl!kMհdB蟖OIw%}WfՖ9=3jV'i«\NZ_e%fU 7۷:nc Y-=`uso㸦uU,8Kfw$WBLb-e `X{[ p7J3\-hzRHj4dӅ,B/1WPԏTep5~\7%81{rGX r$tX{(LYQJsPa*Ut3`|.ax+ttX&d}^%}dx^)VITNҊ 0:]J9a(o.!\wj# Y".k~!Q]ƊŢ )|Ng'X :b=r!+ˮ kA R>3}EU5ߟh%@7CvzzѣUR+7f.Λ׭ ̜uUJ++b0V/yU*]6d7gzѿ*pgwׂD;j%nT嵿7ر)R,02mrux+H+c Vx>B0lրtsytM}rϞ5aq5ְE, R3nP5gW]k 0ͤ?a2+Єi Wb!ݫC4 o|\<ߜ4h.IPkl,-Lb02^ 6cҜb= hV(0 /pNNmjLB[!.[  W$)0ӿ!`ӫ>G[+ cVV[8VLsj]ۈtgb&ܸ7Ci|k#ah^i;kI6^ֳtX@*|n҇`|V{YjQ`nܸ1 PoZuEl s.rDXM\.OXLX^JE׫~+NM%V W Ů᪭"_򞽓;ղֳ՗Lbݍ7Ś1 Xb+U fok;!+Zaoqc-[NLjM%Au眖Wί=?(|nnxGXt8$V@vپYdWO ِ~Nt~8^wлy*KFTV[~ dLNکKbJLu3k̆_ݑNLB/mTf4fjNA\n_wO|>؊ Xb!"=Sjk30f jS ! TFg/! t~902ۓlO53Sٽ Wctb' 3JfzUw! Csƃ[xi4v澦vN Y77bLvUp3C9pht%f=@/6di2=7;S.' @G3J)]lE ZU굘nNJٷZ(V/I\Q]f)֞ ^M]5*pN|j[[B:"n\/|7`Xc«rGLZ.Ks7]ӫ;$\mZl;ڊu:y탾eJr٪rkܔ)VDj*S4J Aj{vzu`愡{^HgMYxI^&}(MSk' B%Q Й]no=@7*:[(u5\*vj1\*XJ<,2?ݿ!r*o%}( WG]߿\wYb+޲5IGtk~Y̏;o!$]H7K@zIV;ˍdTvȤPUթ6p9::!,joge&X>%dM07]9+wgs8T_`*MuE8W%)wGr?#_iجUP ۢF]@5{V[z5yRò#1wUR0 ?S6[@21&׫GJ05'\aژWOzT*Z_u֫ߡoul,IS5T\l6Qk7zYJqMR П]n;PU*IkPxHsJ1互U+LejWwy88j'4fJ |bWYWu[םu}BӫE5D:+Iz;xzj낫(Dm_,0&`ezI`qFN^K( B CiAߪ [meOWQg/Q.y3i*ħWbILbkrnY[]m]wOo.rJ]_l5Tf5* ӫ֢b1ȦJozRJ>ժ`*;+0s2&6j@c&!9[tuP$\Te-[ej5Z\EjVVJ̔M7E%ӫ$Wz,`Aߪ,b7l=@ܐ97O>럚`d6`j6,cF.c/:.}j,;|%`qW+r˭Zn5nf Ǔ>ABaB^_%p5ſ@c^8zI/ZtܑW|}}K2gW/N̙3C> N3[kU ?PdzXY`je2`**"_ IDATV^]{#~SL{_?LJe1}:G}tU׍?9mwT.T슪`e.`ӫmj#\q;d*yzoyuM&k+9Zaޜ&"zuTyDE0#2JZneOwn0qX W'Q0JְtTO~WDW_ܢC{j,ڊAfetWک7fDrY|,r"Wxe&1:p5~A+ Ӱ Uޤz+UW`&d*`Ldzu%yLBӫg\QYiDIi%IKaeqk7n=}OoNa,Qzubӫ%:SJ0}tѢ1ϛҨi'~JPIytG葍?tw[N=`޸qczaŬ2FFsPFfV;Xn`[] jڞX.NwSΛoNk+IxfuzUT.(WД5$%`M[xtXnz4tVami[w:q.{9::iQY5zIX5ZM*& 8,+ݒjӫ[EymMֶLOԯD#ՊNZ6 zmM<,*Yti>Tbz n&eFѢN<\#`]L}mոn7p1F=8 eWvzpI$N:\_pV~Q_֟n%}@uG ]w6'XDZ QzxԪ~b۷IS8*pڣ֬NڊQzޞUVM`-|n҇*.>J2\=(c3+`zkpNoܪ^"97j>o,0RL" YC,6^jqWO,S Qm?HzeU39^yzEWIuZ.7I6VyO8dqz鶞+-H$7Dwh> ;*.++dAjfꈗ[v^b:]0q.:[(1 %Kċ2լxwYe3<MʊKmjN=;2:Sk~YCV,:n}QYXLe`j5>^S`9 SRjR>?pWe[f]nzpU΄[E}YlF;i:Ѵ}@*ֱ,}p5H,M!;jZV[e ۷F%MJ{.˭![lӫҐk<TA 90 %BW% 5M}Qi^]1JSzE V%*Z8'pv[M{v1 $.` S0UI{T+W1vUzE.^JU%@TGe*>-mN*^zIZtʀU[U*jN!]>YlUʄVUIzwaMrz&`: Xe);; CJ"G.ܪLB1᪔Epym)$}@#ݩIi@E+05RtUJBC ӫ[N/:J[?gdV-}+aW+wYYeI/ud@ڤ*`r+zWѧ4N!rN jھ?e*~Q_|jhovaxYl.Jwv\N@ZO,ܪPӻ[e-Z{z,C?4m+>z7nľmpuӫIˮz?=rf7f`r0i /Ma:,}B1S᪔~b۷j+-\8NqZ=@ӫ=HȖ[٠P[g1D%@TWe*UX9v&5řWhB" yXӫ#p]I"4G>v}YYIgu[镩Z Wf=,Rӫ^_&HEZ*Ih2Q%\E_0}rl,j'~b[ =ݙpU"$LK8I'%٤zXLTtjR>?d*04tKbV;v*%ĢɄ[o%r3xoj4YU4 OUFPzxDc'^F%[m5_Mzsl'Jgjd@2X@rݤ3V5Jy/$WJz^[ j4MrN^us)J:AH@Z:`^8zyX'9Ὠf3;f&9'acS(55I4`I"`(-:[$'Q'^=3}sNmFjo6}*рz$zʢbQK6R+kRӫ2szE_ӝ[z97p=@tS ˪VMUqYhJ=r+r3ŢyÆSP0 ﳒgzNT%@0ݫahY!1Pϫ}03/2+%W I`ZVjK[38vsӺi^m`U.7@* M`IT$Ӣc/5UNA=8sze3gmWE:zvzP\GP(o2+uz7/0l` qi`UG}۶`VzJF!]H:p=@6C `@, UOI=8]l\wGJlDGQFD{ 5T) nbs3d2H쪙%}YL߄SiBHNJ@=Ma6 cj+Wiӳũ?yX,r%SŪ^HO{SR]u^K۷o,/{Z~J:v=Z;-A*uosUVQOx_{z?ԏPg>z~=`1UIBkѕ}@nU`w\VطfsSDO\A_J S></jn|Q<ݨr+uzp5s!QQTaZnꛒul蘇K'aӾi{vG  o x\oCD1}A=V]Pӷ:(7QqTV XtUrH<`ޖ— @z0.8}aT^yfT=L_u':cZlujO 9vcU؊p[tq֐t0]_zI_xSRC;>ٛp1(rjxJ7?Oϕ*UYxTO6rb+Dzf08)TL Q GR>v][!B,I W =IC!M^6_zW oU `Z UꭍAjKƙ}/E%0O0yjWg.#a܎.V Ƴb+Dؾձ?GTgoS>=xR8Sw~!mjfs3홤 Ono ɣb WtO^{z~sƮ \}oFyԅV{Я* )րUVKj? <]QP ;FnpU .UPjhu5s_"+HR7[  )iQ5/Ec.oA׊3Zj1mmI@*ѿd D1Z f p3ctA[JV߽jt }{{XkWr# U^gzɡ.8nr,v<5p5f/?#^؟-C5}ձ<`* ˭UyjGHq:YTGujGE}ąƘ y8i@b XWVF4&XCW&"Dj%ҷrJO}kFY;a1Cׁ쿉S:^qq#_>bfדaLPUyR"\M(!^u&o͒ϧ*-` WXH3D><zkFray^5Fk OD%@J Y4JE=PO}HmzW A5ln}ki/a{WJ@9ؿڡ{f~nW>Efn U为Ӽ_}&H YyWO6)&}9|m`-6n՛V:a^W4Ҏiݖ\Wg{鑾A!1ϼإVR(O@xcW^ńZ-+rΟu6`& 6d}ڻ|z=j;\bErLbBV7lzwIAp#\͢$k[$[[@|"`׿*d+P\Y|e*5Ү3;?; 8|O _H۱@HIRFc)+PtG\' \- |Aj&mڂ*\;w=eeW%!?ɷ/30)R+ VJbEj1)x?lg=[@?1f^Խzɚf^j*RT4p*FU)3ӫ5SI VWȮQW^^drR+zW0V$1u{2~Woˬ9롗YcUv3FjLwxҒ`|T xvm]%@^ V8hO~(Wmհ׮iϙӄ:Pm8sc}!@DJÂ+E%@:\$/J;ͱVլٻwz5O3Cv{AXj!%j1@"`28=3Fxjlb?r$h[׬vuIw#y~L2wn/&V R/> QX<3FXk} F#jӫJ]gNw" Xn]QNpUjqE++m,CѷZl -x?lg=[@?_ͮWâYf$ ERnL~nX(VjPi_?[0\ j Y'eLwURH:Q+]t:}fLDRӫhyVP м=2~d^Lz}p5r_ wx TlmI*w2bd[aVu_f׾>׎I bU69︐ՆW`k+%`r)"2Djo]n}R}_ͦ,LvP]fG L`ukKRzo _ `VND?Wc4*gt֧5k4fC:ZfsSnB/@Mnmiu&uDAؾUWiU `jv{ \M2k)kӫavMk@t&X\Hl.8nyU`Ÿs;*ISv0Fr$HzR_7 Wgy9dꪤHl!\-RvU}4$)پ0W)ӫpYwnE'0~ϭ-mQόOeNh~5]gN76>N%\լja/]f"2֖T$5":i^B»բMjb_&Iq֟G}P=vzU|g]S @ьۑ)|J5߽Zi_~U a׻Z5 IDAT }Yf 0+$VH3cWKTv2{Pyyvu)DjHzi{ uRjِ0ɖ\!מ_>RPpS**ٵ謁ϵNfI[Z,MnmIү#9EjjzCNVj󧒤vKqlddKW W47 X`RETgAB( [3||{AބhV*Xn-Y^4\ycp5>QP"T@*]nuZ%1D^P bʼnlj8\`9s,Jt#֒ \rVLWk$)s}ag ݫYpuS "`-*`]aS!&XnuL:f$Iw?nY~vERq%\ }vȠ} V X UTӫ6` M zٻӻN2lycp5˶[V ڒΜ "CCc]prP13pUbUݽ:Jup5ȣ'XUr}qJqCΜ䬇H{z Wח̡0>ۻ*P/zi'HZ0^ou|Gvr:QiNpլ:lv!3W1 NW%7}U%o˭;J~zuGk z~[ v@ NQ QizPgwgAk1 ;:4݄{UUHh+RGQcUm\~Fj6U 0LJ%@N٩U^ cKRF%FUgzUY5i[5mIk5rN.**p C*OB#Pl' Kbvp!`,JGNg&ՠtVRN W47kߌH׫QQ@j+ĂUDð!1sUR*AR W9}1}3W꧋ W.Y h[O%%5i xWmzYGէЀW gVf+#@.8TbP*IƳăWӔj8\P&jae@7-1DJtfYl#:J&spu!+&G=xN YӫiQӫ;}?\}ںMZpNpKPlc[[DȊj2R|A+˭W^=.\}^_ du{;c"dŸiejzv\/EpIsSKC=ƫ<:X2" Y1u:H"h5=qU W[}">7$5Y1 QqܠutHM,rz5pU(. #dŰXn g jZ^p&}%eTՖ^ [#`8BV?iDTNw_M{ˊn{:m?=(c>!+NBj4ƭ8IAk">.Ó8B$יgEh5.@ X3g= NVKo6[iD=aL: nj9`QW߬/M\ `XȀj5s+2[ ^oՊjtHni5AQ/eךzXQj@BVQ0Cz#UktUUD5#:WkOM%vwŋ/W0?q xf~NH[7>Bc\rh4nF1δtֿw}njYza$k$ݫ;}߆V3Ǖˋ(4k-UU{qČ ֜b u~7頫؞{pUb5nQ-W#[E1ULWT[{8>`] #d-7[MNv:SW*\ #hGjU_ M(.&Xs.8\6Qa 뼷~ouщb{:WUk[$mI$h)0BaU4]5w#{䪠Y5A`7{.ti,鏜MmƋ@ XWWS8@Z<otav4b"\E4vxJ ւ#d-[fApuVޯ$\ń.} ;޽|CaJou;{TН:J5]f%)sˬ\@rɘve%cHрV;q5^My26!Q0qkKnaQvp>QP"F=@21Z[kK:cZVȠe^ `Y=Pз1*"4jq> dj()=KNdM{ Z/kPA&Q?,B\}QG͇T+LjN{"\EXpф+=cyuu Ys5ouV}jA}YW=4#`L,i7<#dQQ9h W*ˬ=z0&\4a#d>[oپU :ݾӫ,B> v n3LOҊVbϗw8ˬbo\-/t !`$B֬{5>SWt*I{{f9h~eV*b1vM&ߩj* ;lvGA8|g=c ]jzvTլ}YmkVWnie?h-SsS@+|eP8֙N[*i >ԗfRϙ/^HS5Ϣ>RB 1HS>P-5,J:1h}O-Iv^Wg$}G_ 7uй!\tk,ˬoHnl|ŋf4޿ ֕iuU|uPn]Womm7i֔꼷x%;Zi?tASI'gzIg_jN*bWwI02aN+oZ)"`ΔC]yWc 1 \PW#:N ZuIKBҞU BV௠s׬SӆuP h%\Ef{";z\6NLF&T482I[pp52W@_XgoO$[I)^CjG}nA2+$!<{W@<YGj4f Yf廬Qwp5_J`iV3!뿗4[~cW2FhˠUW@MT. 9ٓK *j5zS~EAsAINү%}ߐ=jGfoo$_L)iZ;#UUa`@+VnK@=l%@U+TP X' ֿVTҿHגV_K:\ 3WU.̰ӫzUtbxI!`yo]{[z!IHgR>Qhi/$=Q~EAj$}K_hG[^%}(yIUdKpU+@=@2M+'WwT"wL>8펒EW}LK @lϩ@JvӫGWrdW>I`pLW҅@CpzGc߯$~@{(\0=$!V6QZJ3 AHbV*qYI?d&Sa; :XܹO L n Xr;j\IBDXn WOWJ.y|WNˇugw[:_,IᲐ^:E:'Aн[txzR;8fpzw{S LxH˭7eze҇t+T zXYnl@`~Qy"8 V`zuzVsY[]n5;y멞UV$DZ4L&0^uS/eX;Y@&ͤ}AE5M.}W2j}׿jL7k'@9LE dqzUktsW ~V_If߷LӫRܪXR.[Wu%#$c_p` eLH^%=|%cdFVojYڒ$}W/{?벶@5ҊQ籆 dbϝ$KjF~PD @hŲۡ5NXOҗi&X `'R?UIe=wBheY]^ז~3>g٦W%K7Xm4V mkӪ0u_O$Ge5eze܅M󿧻@cNR\/U- U1]]_|cRMPȀOtەx " X%"`U.鱮t-YF3\7<4(}Nl{Ny?>Yo]3 _38huo%j֞3Wz<{ڑQU ZYmG:Sղ~| yU9igi{Lvt֖=Tw W1<{%@XxUmV٦M@=b471::jjA%ߟDH3c%=>6\ Jҏt˨y2({?ꫯ}³Μv| Xut5Di0Kz| lݒEF8,rqާ Ok}Bf;!_ iP6/B1v_ۺb*gzutKWD}b [1ݘO /vz՘q @EAW㋏M6뭫Ӯ37 /($ez8$}=gSW(e:NX^>7U :||K{b}QG(Q[Y6` '[[ɜu4xհ"euP=@8-quЋ,ߧvDcEWFpI-dpU/<ʺ25`=mN I8ŊxiG=EVVF̺)-mjQWO dV^IbŰvKPd]~v_8aE^/۽:LP[4Vh)V jipju`̄GB^=%=UxpU*Nyoa;WAꎪz>ըXno)VD.*'9>`bU}1zؕaQGY0^qF`}Ow]RvJLx9Μ:EĨ0(VVWQ>4"rMZ 6IdJeQ/kkM-VVJY EOqqp +5pNkV1:%=0pՙu=—G=aEZ{fG]H*ʹXdiz:uL,ʶgPmݏ<\" E'F1Q`L"^=,ʾհ(%B%~bFb.FЈnU)J^="Qy@u:a0'X.W_C}]c}`=*ۺpՙD=L{A AY'v{tS> e{W%Eֻ*pXև?Ú^cVҷKcD jgNqG;HV&5F#gB3c YJ4l*UY'nE8dUzx9j5PBu)mzXVկ顾i4%ZEdF^0:X5[[#"m\*7J1žհ%{"W'Nr+Q=`:XPVo~U)nə6hyf?1p#LhKtɞEOYZy^fJ[rtu[*UQJ$`jUtfh3&YK*\yE^}մPhAMմO( Xk5i{;XvL&%gn'Iد顾>$;S Jx\.cjn}C^{Ph*h%HY4(3c̘#obm|%@XL{JZēp9u:u54(c$ߟQ:V< X*ٚsbsuuuO(y+<ET?q9;ֲ`z@ X$ N~]\$r8#UE^U^_RT9;{Qzu紛Hbz@XWW ]}z[ꬹwm)_:G=(h,ZIo/ӎbX=$iy9֧PBR KʀIykӰQGS:* cGjLtZItU}Mӡ@<&XWVt햗UjA0Ӱ㄰QGT6j1Śj9Ns3iWbuuU $m4  nz:ga5,+Set*1 ^Hw&Yu4toVIb5puIf14j5PR/Mvde @yL.* m/͸9Μ|>Fc5ۻR`יӝD^VIVǚb_EfV WQT{\Foݘn')*DUc$ߟQ:tU<,u)Z-d;j J^t W%W$#Վ ]{h@q}^ѓfb3hi` W\*DJA!&1!+j*S1CjK,W$%~3kP0,#dE1TLWk$%2 IR0:Ʋ+cbE9hҿUL0S_J4\^hVAM+ʃE*i^ju)VjPF(=Uo׽x*1 yȐ]lʒ ў3G=2Ui>`]Y XNx+Kn"w j{>q{"bz@XY^&N"dE ۚi/O=gNO[tfۦLWgBx1Y^ ^cd|zY}%᳍>‰K͖\wNScZ[z})֐8n$g.W$M]VL*IgHTֳ5~qav[oqȏ2: y?1FG ߿O?Tu wNWL=td"Z^VWg$ħ 6$O{n|u:E`h,imJ.9szXJ- _ݚV 3 ;({uRwqܡ~ ~͌jPp]dpNs3^D5%jtN-;bEI}* 7tIsuDiTEQA!lZ榼KɊ?\ ;'iURbdGL5Y^|Z0@)ِy^_J5\(;׍?\ Z)JRU`V)ɀzWSY󤹙KړpW>  Xt+GoϙKmq'+(puיT,UWdGb>>Sг!Qo5K W+̄y-̋lYA)!k`p)e񕔹Uf}IRs$S1Fo8n|%wNW$* Vky9b=e%hf8y`Q W-YWVLȚt֕^ Η}=gNm|Lzc} Z-ml 9& 高/p5x5Xl5D;$*U:HOOEY^|Z0 iviB%=`UKfEX}T=Ilj|Uӫ).Z]=L`S0>inyc)cr7!`][&[OcuS_d*ncJL1)jȺѷ:F!)S3qD8W,|F*+݀V;XxuX-dsupu Yb-$5zdXjmITȶtV)ŋSv0(JJliR$y?]Yb+y~:$X=do5Y JR$߿G`U=ӫ.7dXgbFǐuϙgS z!7Mբ& Z*d]V{1Lzں|Lھ }EbW ;nh WB.u Q1]>nw9V}QV(t ֘b&$fUzQN W~|vquywzU;'ߟ@e;``Z Yi|^gkω~9N*l`g'.qX1fp5 v[ظ!cڱ>g K *#u: 7JW^6d*毝L' ivd!36>.l*"&IvIVvWy[<I@^#`P QK6ˣvv;pL cbTm6[>o\*o *rӪV] X}}Emvgd̹O$!榞7">Qvu]~gW;Okk^Ԩ4 mlHʘD?hU^Uc$UC~V)HR/b5jȺo_d8FVSmx޺֮Mpu˾հW$ @q+`Ȏc]^|)V bÆ{Μn&\pժOЍFc?d}ikYnh&=oN}IwTxP3eGV Xc0kkLQ;-d-Cqh1~B]xuRY[fU/8ꫯc;VXwN?jUŒπU:cb l>Ci52cMfutR޺f{Μ^i,i73%>ݻiQjҙ3ZmI*Nj+~S_ҝmWR>Yi#%H7ދyM~Yo㌏}m3 |pYdx^0܍un`&*ruv#x/8|MR޽񑝕U0`0d}yyR!moEOOsd0Ī$yCf8,,A~H$6`¶VKn~ueuQgzVMzo sI>/pfAzlj_=xG_$:|r{V~`u(\"\^^~;{mIQzjG/IÞ]*̊-n Cu*Ӭ8 VMt-Y鋊X*߿6 t* >~Y_g5(\}AmkBUwѽID߷+*uNgB`lo/>ʆgQw?W = 0!!!+P&v;C(EXof^{Q_#dSu|&pE ϋBN{sIAXn~?`:>N;[Wu5|~M'56 W eKE]єA+?z=C(S`F?Z~o uԏNF "\t.muKv~ۉnѭ,rL].LN={2Y><ѐ? Lm{]ud}(4~'E:qA i_U|cI vUvjܯ Yo{/2 d,ggzuX]7W XLzMfۍ/KnFm#XMO}l0Uk Lz| y*Iw IDATo˺?QM0}f&,.^@UkJLzx8{:^p^{1Ϸ3e!\lquӏPL0l!\]̶'tx|gs݃w{`yP~pkL*m~>0 (U0!kO v{=(~AANz#xO_{/VUV uXovD/֛?^e[XgW=orj۶,˒뺫><XkF]Vٌ 3OzYIҍ??_^kNۺW+_$yCwѿORo7_ l(&z>~WSt$X`0d}ʶ%ߗvv~݇\<3˺K}mۇ txڇA_O Xg W ۶{ո33 }Cv)7kvX7wt#xodR˺_efR8]fލA uϫߚ)\NV6`5$/tpau#x/ YƖf{;o~̦ٻݮ}`- 3txURȲ,y0֜8 Y?RIA6O7Q%@^^P{]ud}(X`S/HzɛY%8\UcRF#YѠf2LoUZ,\5b `͙,BVJU^_ۀwɲ$Y<\bU!`!Ǒ\[zYRjq1`5S8|˺_X(XkvL@|3fHډZVGk?M:mŽH&$gѓsǑ_m-kxzn'LB.t]/;ٽA][W@Z0MvT YIa+ p`{v-I+,NC}U5YV*FxdY j7>D@uݳXz~?Pd/*yQ,Ǒ `-0/ݾfne}(n{ovfn_{/u!kJvw{EK :ͦY].jESW%mzj\Y8tUۛz͒LpVR}I%z=U@rkTX¢vy%0M>~,BX!)j~K+ffhZ, +N+tx]BV Sp|MɊ,;fjLaQjYqT|^WXwx؞<>j1 X+ΰ(tzYGep(dB֔mog ѩ^/Ymb* `,`:S Q631$6SSTuݬ L~Fլ ȝz>J#w}x*SɘUX V$bYnkcݮ琎XM=kdlۖeYL@BHtZ@jouwu+U4:iy0 bfCm0X՛oz>4bMO|5YL!jZևpS+FmUÎ۷FB.,O}$X-Z@V) Y%L 6EejSI[,pjQb)&0͊@t!k<\ޮO W% ( V%"ʪj}XXڀ @L5>zpp!x:^ٱ\LXtkRL-:UOugJ=H&Jg{Vm&LQ+1LAԌ\68>^Ni|z v70Xm۔ !$8pV]|z3 *C<"`JP,-\?+8Ӭ meRg> #X+VLzǦ6y`Mg_`PȌmGa hEZ ՜JVeB9A+q|$D@v,Xe{"7ZW۳zYOWFA Wux_*&V=S d+r˴%nleyz5$ieUmK:Ry* 6!` `+roruWFX۷$A~?v]:\߸mhj&#L6"`Ea5~F6A+2Z_u@v$ka{US`50=p2 Y0ljBߏ>H}a!'@oR7uj^qw:v:>ޔtmVkIU*Yːu]IQ\Du]zam#VE ZPfwP\wuU@vߔ%IhJ5V8ғB ~5kXiӪ}@RJEV+w]וeY ~galJXg(%uZu۶~B2h2U!`E` Ӫ5,C*7U&dlN}ړ 钤~=C2n}Z_ %ˊ7ZړyjZiZMNG <`m^HB TmeV-LJQ8N)~+xWDʉP5_0T)M rd)^8TkM$} [QLݮUIyaևX&X1*[Qyy|gJ8p [lE~A4z|,I,/ V(V ɓXiSjQ@ysJΎRES:>eEajOG A ,D~LFoY URMyP> Ӄ~}=H \S@uڲTq^G X@ʦM._:7s.?$`=F \0Lr< M+`..;$`+P{0,+^<X5v:Zmۖ/#`fG_(Ms]CX:oDW"/넀 X'#`PxyA+D C.VB&W RH+u <&W9B_(E0 D&Z` ` G mnSF!˲fZǑ8Yy'u:*  `Q 8QĠjuݬrHpZΝ*?ޣ/@($*Rj۶\e2%e y pqѤR f<ϛzڶ}kӾ<._,C\($q亮ZK}3,۶~*9h4 h}Iag\<4;otW<~Xk:kH:Yl5K_h|Yycޒ,f$g<G0 C LMc:KH:X$OPNg\LS= @ jxКe`9KH:;PleFVYn>6KK'|Ns>:Hsk<. ;#`PHJE\5iH:;X`5fY"dz,?+44f9E@.g},V LxEiV3Ex =㼠1j9'iSe>IjZ/"b@!ٶ-qp YUJEeb^@]ǃǣ#U*3#Ӎt/""`RAyB|/I Jzᰞ&:3t-j5qɋRPjYNw<K`Xmh4MMtR: a(G X y Z XyPs$dEKKY" VZ:h%`w,2QB@^RVAə2" ]K@]Ȃm=oYw(y_t˞$ huL7k:te<@>vJ ,׼KL g|0 = (/V&XV8~Lu4 uj>:_"t)K pEVh4j!*VyH[66#$f"Ӝye`4H + ڶ-enXMj.k"` 4I0<,@Y0YVq亮zlN%`+kYT  '9NFBm ?!,a,e5.+`M+]x,Ițt|j3*/%Dal&:O!`P8t."O|8z/(؍'uygi [|tݞIrG PLPM梠ՄFClkPuS8@V,,$Vę]#94BӐ4 SQL{qu]Yu&t=ho&} [̊Nb:ѹ]`)X$9::_p_y~w~'A/t%ECge^H pjɬDɑ$_m7/2 pt!+X{ȍxTp_?o~t:YhBy#ju_$K:: 鄒|u:,VYkzL Z\Sp+r# CU\oj}Mh^~]/_Ɔ666%BwVm;͚͚j CO'']| `"ݩhHϖ)@ \޽{駟._K. CJ2R//>ܛg\ebפ^Yy({N4Xj6z^p=0T~HT%L$f/iNe&Zà Zy&F1 QR9F@=~7~c ^HZ݋:qiO:m}z"KaIZ6\yͦ:0l5t/[\իWʕ+/ M=6J_p)?1/nJ% k;ZQѐ8Lby7|UA,0ywnwa|9nZ4Ď/_uYOM]rE<\2ٴMI^_җ/}i?d0fg/fXU)VI/K`|~=999Zm%6iRL1_0d5]]tI/_֕+W!xj62o'1>\`:i-Iㅚ"{,]+֑]1Ub hz|O|5t'ܦl|uʕī YGG4z0A5h5V2VE<ϖy:9 a:=uA2`m4N)b_YO2jV)O#zlX#yI*//6zt:hz:@eE8gY.ȖVƙDLޘ֗^k:Z ]kqu `TO(O;1<Ͱj'MV_HZVѲHobڿ `u7xA&kQu@M׌Ux<:(+WҷaVjղoTDͰ> Tґ놪Vk@@:Xm{I5&j_DkKP>ؗ׆@Ѹ;| Y@eR 7a9mcg}~O )mKckRq†:~  zj4T \`U*d|By'ut ,bxzrust7K83+ sf@y9 ?FeDŽ'&Ogy@NNN:NU]eU : Zm_e|81ZWY[1Ŋ2_4p(^Y#`-<(6xu@I>S+DyleYJZN J<`,`s  Z-Ya+ÓuaZVVEj!h,[aXU_>Zm,Njm_}M h "S(K$g$| j'lFAQ(ߏ&;PT WQӮ'm'@rT\|ݭ(*w|0$ u `Z iW]GΫ0_yITi??>XzUl۞أ:xj.VV ]:b6a* CoՄ˒e*Eat$IaX)۷oʕ+r._˗/kc#jQmX,8r]w$ NyFXt"^7õhRȶDLy.UPY65Ze/?˿/>|GѣG'ǪT*|+$|l 8zްSR$^dzyp=Ëb@rf2tVU5l K Eٶd[&1]lYNӕ+W+WhkkKÏ/] Q^tw4ySIY6&m% XWfZJ*ersp~zuSecA˗/?ǏcIrkϕJE[%I@ir+tcaN3Zʶm6*2Nz1$Zmصj&X駟%}w&&mnF`1LﳁʬVZҩ³bƯ~+]tiGisssj^T*T*z|UXk q`1ŧyqfILbEn|EtҰo5O?~Z>}Y=Szꩧo|C?O5kq zy ֘`ECSL:j}_/W666te=|PW\lmmÇz=z4h?y}ߐ8a-ٶ-ueYsexTc`פAլ,* Cy7aUZU+L惙3*0l5!Xҵkt5}Sҧ>)}ё$qT)V%u%+Jl` LVILb<Eϋ&#Lu֖\W駟?ׯ׿޽;O^dc>bSY^7|}+uT*2Oo<9@n ۱,KjZ>^@xXLިqsDϓ\7|Qo:?~G?s'?ѿ>Pz~7sdcƼ0=fHu`ZOM{RU!RDPty`T^4Tm%: Ml8Q*OQ$gyFO=˶Oׇa8 G! ]X[mx|)u7y"_0<vT eR2|;?Rd32!86>ZvnuAcC ň/&x*+0y#_eVeLE@yhHWMZp5~?_Plf+0xj2M]U+iLiY)t$EӪZ4?`x^Tp5sj\@XM[6Z֎W۶GBF1Mc *w6Kj 'Pf9bfʲmX5~d<62D dI;\5>gu]]dU-'XEMjҤ7+!XE+8H,̴'E/b״Fx*wYv*F2,,;X'Ӎzd<"`&MWY83 X/6u\W鍍/oѠuހu҆UjUm3LlVU `QT`&R\ܶ CVWgs޲{y~;ruVIip*I0j.UU ` U38043!PLpv&F;Iդ$U\yNJyTX3ioBUqҎxULu+1!V׻02ySEt<|51ޭ0xsR*:)3q<fDa^8}tD;c 0L̲tLNP5G=@1,a0L|еRu]U*57DjU _nb%WUX;0jZ@ATxzQW+"`E؈k!iP|ߟtVr]8&H@dd_H M|U .g}(/ӿ+jaNQZUVVm[ad1K XO05 CZ@"53jgBT3j[ HӫosuWc ``2$ɲs+Iܧy+RœAFCħWS:"`E*\ץ1Ӗa8 brq\1Aya p7Vb0d}RZx*P +l6uttTTU5lXVY1 ++BxqzXF `!`9X`N0'VR~ևH +̉D s"`9X`N0'V+̉D s"`9XX˲>@ X`N0'V+̉a!RD @XX`N0'V+̉D s"`9X`N0'V+̉D ض!R@ s"`9X`N"V+̉D s"`9X`N0'V+̉D s"`9js7rA%@~p<9~gʇ6ZEXP| X`Zk  C=a+ X>   ܳxIDAT     Z'0D`a+X" X" X`u]'0L`VH`VH`VH`VH`VH`VH`V{VH`VH`Vp <@`+A`VH`VH`VH`VH`VH`VH`Ak$    0ຮx        08& X" X"x o&?VH`VH`VH`VH`VH`VH`VH`!y0 X" X"캮x        08x Z' X" X"{$D+@$D+@$D+@$D+@$D+@$D+@$D+ 8s D+@$D+@${X~~~vOA+@$D+@$D+@$D+@$D+@$DvOrǯcss+$$V+-Xr/RjnueFlllIo ,XERVX&QDT*T*Oj Hԧ>\j[QD$I^VR/pD` J=|F-$s$"*QTVErp D` |S֥V *nh٫D\ KV_ʤNeZmDDtˎ];epA,X^;xRN+x,+^`Yju#?[X %+ѹ;fT*?+,#"J3䤩-XSݛD鰲2^T#IOj6 ,XO}ꆑjI/k 8,]֝_ٛa9YOϱH-XtJTvZanⓟp ,Xv:ՕYs,O«Neݎ_<KVیjҟ_){aec-s$I'~,},{nWʡ~ue->a%0 ˳8::z"_8'XЖpa%0XQhe^F6ޟFF򌭰<88zjEш~k0Ine:ىWƍ70#"){Ֆ 8pdYaevG^݁z.6h487~8y||DZy<f1RaY'YL71Pa٫n;wooOX Le%w#eh /RٻN|TXԁQI.(K+ERa T4+@E&$F1ՅcgggY-W36뱽-үqttGGGvIAdј20Xaޝǝ{ppY 0 zjqшz@dL˃|C,[FyˈNY%I$h4ՓZ79*JO mm{s=$67bkr?r q܊Zj[[bkR4:s_ гeDx{v;Z${Ք.]KQju#666ΝoFʽOo_ցeD[,$bc[݊˭~xyr'lqr\kXFDo-""ՍjQmXnnvʯ}+)0ι,#"ſoߎJZOyu~En?MDDT*بuoS|K>6r %ι ,#"|g;㿍J/I>]wΏ˟}]`?]DtBJ2rƿWGQ>?tTLznCƑ~tBJ%c? /gبyp)GeϺwQwG.gi.J8#-U[{2Rf9 ϛ**5ǿҪ-#:e7|x;'{?rXRj[z q2ŝ*)ͷz ~e?]`^7)Axv3$I:Ֆ~C跉W"jԾ|4m[Xrn58<<m0έnHyG;W\^o|˩.YtvRLHZS7t\R|KX_K=- iPБ2kmRHY;q<_von ?}鳓vR|em3"i .K|KXOK.mW2G‘y[ w5.|2c?I2y{j'ܺ .K0R8%\d^x)n>qOw Ykm̰L=3[d~`ّ$v%"DDQiOnT#<Йo_)Uփ |K.ǟոGb1F"T]6x;(^Ei>`p9.LZnP9sW7Djj$IyKmP~K.|}Ֆ;?_\l.6\w t'kS9uKYeVUf>#܎JV؝VT[V|K%?#q<(Z8ad[^w3іU[yle:LhU'_k@6Z*DT7"TjKmPNKoyUo vOǣʘ βZ;{xX~yWݙ0>Č6hNE.wNrgeT;s.6߲d}0$&n%֋R:飳VVfE,|8O[³P.+Y6 9?zz"gi24|3^s8?S9ܢgolD5uˬrbО3ji?{eI;z~7l"Z' .&+o>hwd}I#-_8Y}xXgr ,aI/'?3EUs(3+d.%,"ۭOMdjC l2Npږw|``9n3g-!\``KeNW:oWjM~u֥Οʘ2_'.E"q6|,nN;66^Xc"Ֆyݖ~`^%ަ .3rdee*I .a"6jCO녖_W/ Mn=.%#߭O7?qW+󨪜bT TbF:YM<; ,?c^%|ؽ-r󋵉VX -; 6uoy ri(&^t[_hcOjV%W$iUPoNy]j|j%Za=)<,a \zu[nj<{:²y9e}vu\η%[\Y6{rry9-#N˹ͷ=Mpi%P"~g,_nސLaݲ+32rtˑ=[qQπO,pp8yET\fǙՖeBzI|5^>L89p6K8GCXG{м1Gnp9Khٽ^p]5X0W2uY+ {XI= iؽڲnFu#$v2ܱpeη5m[VOoz-dmO?jK( ,_˯ţ7sW7jtГ&,RaX ( ;3ųU5nk-q\mލ͍ͱeݎK.0 -#ϷLϩ,ZY̷MF J` Y) +(/ҜJ'skoS7LUXf{r6VҎ{ͻQn˹ F; -#̷i6x[Ϸ?Y_6̟9-fȍW>pe7 z eMLsogOR-ᩓ?v=慺yyjF݌hG

dy{Z!3g R}̼yOus5ze-y򕁫ftgw?c_=[\wN‡U|/=[[lN&'&EC` dJ??j\gџy"J-td_ee.Tfmx_ǧ-seRUcrОƬEs͍ج;3ݝ; $ -~nTtMyr.Ee-$"28onxg8C(9t`Rp9|_UL L g 3qR`8ƭZ=iv{>\Ћ{:7۹;xT~=>9cx/lgܽ=CNK&uy6㬿ZD+W̷0I` Ld p^<ߌR+y!`x{n:FNSpS7<+c2;`ڜ́OwOF;iu S/n unә}l =SR&-3nŽq4LWXVոy9WaN8ɘ6^P8sXFLyoYM<}u偈+ߊWngMD.ygۯNL F\\U'Nê[9̌퍛N N C(\klNWq7 q[ߛIPw`2I3~(ceĘ{2| [ǥhxU[C` u>yZY 䅁C7֩x8e@g(, .;2o҂˂EsޝN WI)zN뛵Zl6黪gX9XupY6[oJFpaF##B %p&fe6V sT[]RHyk ./'\+,[C7,W2cD-'tػpp~\x ]'7Jʳ0kp.)yp7rc(Z&qNV4eYXsa%P&^Lۯ~f .ӧj*s^wrUmy{:Sy*\NKN0:vwn33Cz-"6kZ$=%{{J-X6?lߞngf%edN%7%0Wz3<qh9޼ʼ`p4f\0{o˼JyE+~OFo_2$NtTQNxR.GU>ٲ)<2}7"eҙouC9v-Y{+N )3֦ 2 }愨wN굳BʬZT *= --rV4ՖYp> ,Ӗ,iX3ǛyN^^(]9&$=P@>cp9>Xm <"!ea:7iFTrޯqeoٌT(-[|jy-#,qTp~ ,1X[Na0L?5G4O:kZT6L_n}XrxSηlR8 ?%T-W^]56V s's\NNNBc̼MP짻ve}.xef;挽wJ˞U&1$ƷWVjK%gw 8Jo #/nyΉ"*YmcK"!,>cp7֪wnFxj2cmCmލvi9{MRUDDue #1sXqm%&̩G` Tc@!|_~G\6*'˩ .yGPxKx=O )3MHYdY;9)WkQHߩ̷o-_|yFK\LK`S`Ÿ. . .+j2 /Vf& .\o`x*Ae[0q%|4puy6q~\~>bh'9p ,0V~6Cg9oLYtʍ 7兓M\}}SGL\{r̞˙i4jFTνwg5F֒sӝ5 .&q1[n6:7)m+ "@WO[qy\~ye_O"-#~5ҳKG8;2W42, <1 "C.-} M&,])erPIUMנx04H8\~iɘXH,X߽e!ekַHT2*MwDx&.eAu* $HXAD@_b~ly]q/PV&hXJv4C\E[V77(.A}KR K ʰr(LyR,(($d0R1Ir1Υ{mq&ʺ+g%@&`Z$wyāzq"ڲoAt"$, bh:Y!q0IOuf!FE[oLU9|{52PDHDVoŚ0MYgLvI\jY\ fJ撕30xM`eLӀi˳ܝ@^%W4pKշ4MX'. 4PiI-;*DD'C’ "!T| ߿g=(Ia1XwJ9$KX)JL폐Qv>oaC0=Qq?!<R@|`.pJC I!K2$15M a4 H@k]Y7 LO:yF5jRQbݻbJ? $H;mf |7D' dK-CjYD}\2L(.cfK;%x>׹%%<%_SBծ}_*DX9jo8c s0.AeȊ޾~lظ ~|;qǺ>y|8 fKE?(oh(B\Oicz8Jf~q)@6/SAwU AMjM@3xGĥfg\\eE[&3٨!''^[(.5,q1M\<4')0Z]QZ{ȲyV#,&kޥ$CVUd9,_ x+?z 7wq轷QY f}k_$oiq9=&aL/4,*Px:At;$, "*>dQQCxDJT !.#%6Ɖ(HD}\2WTvq-/KHJֈLBg'#De?G$a_ş*n3nK \Vd2nƯxͰ~g΍Anny_C4 tYӿnGD[Q $, EXjYy~DFnZ2q|2qw KͨL+.]V%԰Z{LOgݽM PRFa QQtuX.aDXCkvJd3KQ,CQ3.Õb?gkwbP@hH_C?֧DT4F={:( .%ADAR++4I\լL0Ri $T߲v`5[\F]e Iy=RR&W"detN躺m ƤAi_%8XM\1HB\r[\p~W>_Z|߾ mSāBP}wߨJKiI~q\r #$, Z շ$+#d.׆u4A\ \-+C׭K_io}$1D׷K`i8M\&_I34ַ:A,HXAIt3>'8^LKE T\Ɖ;QnS}jⲾea@t{zl õ4(.a(z"qbg$i<[xuHd&.vG,W?vG`1ׯQd~f[H[o!-_x'"h"Go $, ݆WV:$ w!A"&=_es~%6ȷFĤ}\5JYQRWi#ΏUGe3u><t ˀfT`7:a ĥw'5aɹ$䮬BDWM`: ӄe ظ2S8kWz8$ &ː\ۈ_>p&w`(ץD~ n~5`:XZ4e] *,TV  K  IHGpyK5cG 6$8B\FI;ߎf$v>ⲅ-=D4nGS:怩 lVeJ.ũ P`Ft Kӷ'{Urj&|TCXU`L ˀBXگZ\߂66],.$`;Ncǎ M$0%iTeoIm8ѕijw d{9&XwQ/xa4  84o4r>@OIhI{iA3k[Hte]&"=W$`,#ڵiZ{pi96&&/0 T)Bnt?{I%-$Cfѿr5c_7ϟI~Dzq-9QLV.taE&pA’ Cqm߾mA?Erib!+34$u:E\FE!v$MQ'&:, aiޡ" $6\M&(IӴߛ&B֕ڥݩ[r5Qla &ۺXrnV \Cナ__(ga,ӊ._k4L3O%$ \V e2{ē1w`o(ϋ[2@XNo <-,x@rH\^> $, :oImN%瀚 ޟF\"ҳ;n\a2>, ô(5i<1o|ݹ:}3Ϝ`Ydưzj >f&/cfjVՑ<eLቴtGU,e@< l+W_ڑ~U||7~` O4R^0;5 ",K 2|A;?)DT$ګí7߁;sEXYY2K3{KG^:e*.@dѻ?<\Ba?7"-'mi',Gx6C’ A]շ$ZIneRRJ\.~LЀ<VF[ou$1sEXgNk>_W7pΡ $IFPz"ww^wj \n~|[{031v'RCm_ ȿ/^XΟAנ; }==;ѓG#.?R.K,ҿMQOIG#J!qe\UU܈ya|OpvI\68©T丈I*,_\v/`]HXA۽ "=N-}aϞ=Tߒh*ֲ?)`pjU{߀I2AfV?nl❔H40 9Xt!^g{uEHMاfRQ;\Hf"+I"✺劚4Ñڏދ7, K\4cG.!e:o`| 7u?.]8Co"L]2eYn|s>O.i^4->fqư>3[>[KX"9߃\o|p=O~p-BY@GA,qHXAt)رcG#.%1#"]=1P͈zvkQ)2[\Rx]G}K Pp E&NMO2\<" Lxş&&*;&^̢Gݳ_7 Q҇Nj(3i U%a>x;I`b`} /[?8|9drw /%\zT84OYW߂=r {Ξ\a fhq 4@gWJ5`ww @d5pn8}5a|~3TX&$Rv> l>Tߒ7KQ2TVڃc4ame9Ixؤi!sUͷe\k Y2gNsLg%\J]R.B*T3 l>l Įc`yS9g iyt+IzAeL]sqQ9}Q7PDᲓuҪ>=t~'0{$wă,\}D)iX, ̓˒K!)~nZqĕQ!-W QYJr>ߞVfHzΨk0*eLORƉ+5^I\H\ADB)AK;M[.^wpF'^k!J4,aCyX߲ns݁ccȿ$i ׷q/3p!t=An|_vc0EtqnBe&(}yo؆&Z٩)h%w-Kw;EYPWR^3L_5pd/3_\շ:'’ (’ ={ϷwQDөխL`&QIq;v|҈˨؍ ")/B$zP4\o`ĥmtM#y9Yڿ+e% }[, $I,c_$e+/7= .#߿j>͊?bS'Ed|՞餇A+ay+0o5:-ϭD$؉A ¡v/Kᐰ$ 8rpp[.BV&%FdMv2Sqo:ARqYݕ`o?ӣned)LZ4 UE6?%9;k, r,W%LVvܼ,MS]%3YTjQ]<:LMCy \3s/R8AAt$, :"c[òMܖ)lbo5_&˪lV}F-ݑ +g ,epC~2 /<,2/H$ E&z҈K_`SehY'.I7-;<=G%]u*E( `?l*vZi(K{8ttؼ ~&[Z{U*.Y&cGY"-ehIg%h] Î4`Lba,ί/ZqIi⭧xp`AD<$, H[Rxx"hyxeC|-vl9#6%1vR}S#5+,dI,+sY* 2**j4&`:fѓ.i%.;QZs^\˃**H XƎt?"- 04uF$|uz~"շ$ %Aw}K'Med'I^j&neRt\4qG%dYтMqG( nw}See4aȜCY3Ԏ_~Y `p`ySe K@H$R&fIf eZZNe5/,9D(F O٩ ;UjoIA K "N}M6axx;m FіdNĥ-"CƎ/tlekm 4?Ms:Q ]=XLBX@. IFHKfU @gD}KEշGZ_;"4FUiN=KA/LԲ:%AAADK׷47_D s]Fy|2 Ik= #mF\&Y|#i'3f/|ZW4,YMv|ϙTvі.+i%wԍ ͸$*.оoi5f__:m;&'dK!ZVv^q7W|{٦ĥ! \bw R}vgiP}h{ 6ڽu'H K bA۱iӦj8MwFV&=)іؤ&.Cv$?۸%%!8jV6ǜ=vlZ|t%,gC&LX)A x6 p%)ȵg%Y-=Y cRTvC˯ǩoIiAHXA ;MgJt-2<ڛҵDJm3K*.`G d-TT*-Πoytw!?{*iN'qIƅ8,KDYhch@a}iƺ_4qŃ۽^A  .CCC¾}0<@`Y}ߗ~War fw8 sfr >w얏_p  Rҥ% T߲1bSE N!)".9nhJ3[F[L[R"4BzIVZ| N Kxz]"Sx]U\37D=Kec\Df}[[ADzHXA(Cilܟ)-:8LR/CSGlIرoؔL\\ BX&84= IVza(i8[,+P,Y asiHǑlױtK63GZ;"A&钖Z3ʶ^Ro{ 6Nm$ :ܹ+IAԇF%R@9gxJiH4 kZe4/tvgE˘[︝desL\a;hE&-?sKBNJ2eƥ\{T,YCLH<F[}V}KmD`)Q ADG244;wbӦM4q4j֗ `F- ;dmMG4ѪIlAԭ D * {;/K=)$A%"+ei)In%&prsXi]QÔݗ &~_kR #!aIAt4N8o `[l셓|B.i[[^& `:f'ѿl$Ity<:51W=K'RFYr8Ғ3,SKȢ[8L}J+07Mtp !aIAtq;6mK& ?bû0 3]d[d](p;-,HKO2l׹L-bh6Ŗ&nޱ QslJ9IV6Ʈt _:eV@e[N\D<;JURײt lYJei5=xη~G]ّr1ַ\KJbHXA'M|շ|/7v`d}]#/44⒥i-$YVhKpW#+[護3idsu,e$;ʒKeԤeFґ@52L֪:oIA,-HXA!l߾}QԷ10bVAOoeEa xQm#".e^\J_k xLZ ] =S߲Ӣ-&9/{AD$ Nx׷|[NteL3E6pvFqhˤc#f ͱ^$+DcY.c0eaeu w"%]w2DW:Ҳe)QYNOTq9R@A4"zCA|e8|ܵ 2IQx8_TMOOp4Mg rvF':ocl4 LNo9dE}@Z8l;`NG^T+])vSjr5[v~ E K boiѩ K.KgV\2M$ˊHO,+CJ0 XId 2,g`PkHf9y~HeySKjvܑ$R-[Zj]'^*xbmշt;I\vN%Aѭ,7Aũo [>BF;)@NIO(.9nh-CS7a:sE&Xr^Ա\w`8ҒEGZr< IDATr GfS[ƣhl{NAĒ]rtt{4gHO%cPF; ۩Yi1 FNшl4M+8pokL(.ceeȜ9ۑ&༁CH~Jxj-2tPL8zAQՀ˶.318+є+W֤e@_x?\̪MH $K &Kȶ!4"-!@a&& qY) &28f;ߕjJr9?I"de{.@u,''/al.ةHRWDe>HJGNrlVE>C>COO||G7̲ΞK\:v-KE9̎d05]߲.bsF;aP:8AD#{AM ahh0}v _IGFYN@wSwWpBMcAM ϕz#$ZU{˖^lҋ{16ViyZ-* PJ8AA4&o4MCƅ-tr~9AaǦ%$UiM00r|^xuhi$fi1zxP˘GdkX~;ظQ\NJEW\kfر8vlcc1>^I:&&ttIŋ%&f`& ÄHbK`n׶tp椆s&IX[6\¾}8wu0'M-gg)ADwAA1OqNPm5EDT{]sDkλ;3%i 84mX2p=lVܧ7?t aaش lZYw TQ_+&&?E0r@bR& P*No{6 s2rL03-!,e!9,I%s@ ` 08 4M^?UG1阛07'+:q'WbIU`Y7 p [ iAb”ʀɪ۵gˊsdLDZ8>EZ:8iBΊvR< r  EXAD Ν;188h4뢚-.Qіaњ tM М -C$s^eGKEѕuyhK3GĝJء$gQn>;˲;CX:)ղ߿˗S'P.urzxXVG>R\'gDZ8;²*+$Wo |@-s:Pi)iGp|pHBhl:#%uR3ADB’  Z##vz9\i4͕&'=Y L&iіN3qsi;'deRM /UP(Lc ( .\ nAӀrŸʩ)N'+gDJe[|Ҳ!2dEۧE_2d*T&'3 =8IK X : AA,R>׻(HI I2c4Na6q``e㎼ w蹟x>9>Ȋ%J $ {i8t4.NV*FZ W!0u7qEWeEkOOd111>rje&#*npΠ(rΩgItN:8AX aIA-]%4q %w5ک9=/Wй!D5<vF"gO7(+&;A@ڽ$LLToժոxq SSSJ'²T]+~.}t%ų--;|Rt_?|'~r<Ӈl6cw5QbA8TU92I  aIA-?KTQ\ZK-3(qPoMA".$ 35A~SJ5YіQtq'\.Xմir=^krÆk011R]Y*X:pu DW0KKt wDeУY㋇osti NznB ȲLFH˩ ^}%AAAoKP/E%Lu ːh˖7K\.`eťh+~E>5y#jX5~e58u8Lӄi nwi^ۘV]Lݮc [XrQ-+WmƛG3²ej1llMZfBZR=K hfCAg_ K >2X\J ɺ[Z5wv9Oqٲ4qz:]\xGމΧZ27v턥Jv/G2r@UUZLՇa%0`I ;We$\Wem̋?o199cKK*-eYfr\ww""ILJe[%[PՒ@vSL\уA,EC?LOcL0(`k1/erdRy/{fDy%OD7r7O8$3 EK.}ƥ~BK8! , !9 :. 8 loyQwԚ.GMW¥Az݌.s)(ZN PM9J4ֱr[Vs.TV(ZJ 8u';}'(7x`I!p{¥"x|K|XԜ_j27\{ӘYZÅ295,/動WؓuI9IM~ȕ^ְ ۺ+#RJsrÝ}%\B@l[k GR|$0DNV뮶dRK ve,T{^96Vmv܍jEKw!G?z jksyN! KB!4ڮYij0@#RPe fPkufn@+Ǐ7晘bݨưT;, 7~-kضXj'`p?FCbii;w)-˗ȋm gtXB%(XB!%Y¥Nx4t7n|KP߄)n37z.\N?w j[an!JNB$\uCK˲aNERBe$\ƿ0''vΝeX 8P~ UT*]ﶟhټs%\wN!B!d9ס<E AOJ-,5h'ScS}E}8ae)S%+חķEkԵE80R喲^Ρ'vO~̭$}guu ƾ}=} aYBܝ³;,#zj7>O`}}t߼+{O>ySSS<*07 8P 'BFvXB!_vu &J]g#X|ijjJ/g,#E>z*Tbr+_K_%KCJɱ +-{{l ޽' o <18;0k8!R, !Mp/![(.Ǫ5))0=s=]el/Uդ{o e6ˬ?NLMѮ̭$ێc\ʠSRAduRv 0?,lLL¤<߿]vqx٠r;I[` !KB!d Rl; h=1 mKj;vlzZ^ 6uyc+%D,RbeDtiT){l'jj(ZJ4+,DZa"o.7.OͱBABa.ub^N8 a;v"߲M4m9n$/xd{fWF]jN!>h/c?;wVncnn{;*mۅ686G˙vYn3. r !%!gQ4C(>hv4  [@&Kp\m`Ae~2vpw2PP$B:$Ȯ]XSI]. M3;5K&nˡɷԜ^.s+ _ 5Vò0R@_G]&17q06V7ڱme Xy~r0Bʅ%!cRmLxպ$pmi.f S|K!-]0%Rʰ;,cR+Mf,Y5\²wZ:mN_.B BH~ q㩧O:0^'piH&oK|I+"v"vϢew^Fk2rDRTkmQEKt~eO^Ʒsۖh?hIS!dAB)i n@:dXt- )njdӘ,:X+xR^i'D%ΰRR¶m$ޘOvvس !>cw"ۢ*Z>x0zYo\w !W]P$v(XB!9?T8Pv7 q g 1$ |Ki-U>ƻ,I^1] I"6d` wl+a $Nnصk`ǎ]TXluYl5p艖L$O~A!KB!J Nh趬2\Rw>[6Ϸ ^Zܜ_XIH.aT_86Zk! s_zlEصkw,N:N2%1KBICB)QNǞI0 B\8ıN-sKS]Y¥6]&nM/]PL֤Sl:$ yn|ߠh)} pW.͉ph#rGuϞ ܻw@b);nh9J9o\w !]@P$ BHU+xXMw8>-۲SU|K˲!DT-U2rɦ1]7/\1"K=NAW%j Pݻ'!bq2ި<%Zw%FB`I!̮ .u\H m{jź.֗ sKēs4Wդ{ I6qeL+xK-%|i|_C6Z}D2 `a,"a ,p |st,I9ߟ93(BH`I!dtWfPm ku pmOK=9#H}ldž8-5O"\ޓn{.o~6.~ T?@CXub&˃'1;{ر8 j{cټ3BFtX6]! N B 0ڵv cjr,8)\_3=q2 t2uȮ#qi]}16q˲>|σyltue?FYPSԅ|C`Mm^i'$}k G6|LanZYKm@ZQ*`|| ˰m h4Ze`y% %\/Z !DBdv%{*yznB$uomixLOiò,8V[-SuI7,-aҋW+8!Y\;<ox ޽pF}TѲ$KUN.bee4+ !$ KB!Q`e'`¥fXc"a:lW*MԽ_xWbem#~b%!&._Cn3)L0DNysm X]]eYk,>?g?,i<X! ̰$B4+rΊExh 6E"p۱TRzo%[z mۚtuUe'!][ͼ byI;xj JۄšFCû8t(n߾˒nhyvU%%!˜]mI<$Ց(c3eᝳju6Kf;6liu}Rʸ (]?]WK.Qū_}Z Jؿ 8~b*Nhu]_)oT,={anS5v xݰmwSFh9̂]BȨXe+!%! 讼0% /_L]Y詩>:ډ%@hO_S}v]2=*j/RA]ۿy毲OPB4 ׮eTa ;vTXV*X;H}Q5IHB`I!V"¥RIUkHu*+d׵M\WI b6- mbߑC+8J[Ef%$6 Xmb||,ٖ[)pKB%!P$B|džICgbVek̹@8 1ҶR'v-\vh_\Q߅%R",} _H*i6ۖx=Gfw9RrpB `I!ܩ0 8Tl_#[(m:O.7e Xَ 66MOշP&L,`+Z>S)S0čXZZCʕ_AVeI28L (_ c28P$BB|wCufqو!Q9fCs,%֬и2lH96qUtb}&wNԨN+8َtSI]Qp&^n$1UMtUpB􌀢M!%: !DݕiD6f0SSLs cBEbݥLz>FSSeYp*X )%&<˸~z\h*XBٕȵk@`ތX}4&w/}a"\M`cczBXm6p+?roa9juBB3eZoKtlm #F9߲8-- $ dJ VJ u!g.ߖ.l6Q, ke{a\ww'ABȶ0ky¥2uWv"Dž>_.l≥D4$2=ʸ~BaY"qGe9&J<RFpUԈB= t]7[ KIKB!۞3{NBr Xt#r@ű5Z;4ՒQGpY0RJ ۶5z'2l9QNW )^H>|߆8B@f pIN!i(XB\~nFM"Vz۲6)b`,QuX(&/hϲ,XJ- KMqMt߁Ρl]X4ٿؽ=w DB)&27&]ѱmΞV j^9vo8hTKq7:;'SLbcckk ;,cc#1xc>\ՖWBHHȰ:|bd$\Fǔcass,-5`A9-˴|X7.G.dG!KB!dVh;gH.MݖmȨ@]me&C=BjqeY*- NS2b׮**=woX,.y\6l?2 <66EP(TUqҏOT!l 22w#@!P$-ضNNmN,P("\&n+׆m)OܔM<oKV8բQ"LLTk$aۀmBjh6"_$^7Y PE)q5hn40Q G-M,Ҷ+ ,ˁVd%!KB!ے3>^ M-R9"¥NKLͰ¥FzDN-SWcªAT[:0 ^bݖ$@3Uڏ?> 2 - Tz=6;JlcUp +&Dc^҃۷q Pcazm:#%}+i)z_5f'b%!mũ[f;Y\K#\Fvp9Pp`%Snl:u5foݠ|f p2l6(O>jppQjK,[,HBBBSm>6X706XΝ4cw$RFfx 3vpB!%!mǥ=O?=8[<زڃw[y>IllDH)8 +M;>}ٕ@ VNoplKp!hVb(Bk)!cqՅ#@l,ի 2*ǃz}7fӏF#+#򩧆~%A:2궴mVp2s*;*uے|#G֭Yn#α " ¤|bM"2}Kbm̓XěÇx*|?z='x1V +'&&olh9BH, !l \ij$ bA3u3=.MkC?Y [lP[ !_y9ݲUvMΝYjgQo; Gn%,!!,RHHH_Ep8\ ss yg%N! BFSoZ]VS&.MݘF˵r=m2f&l⩚bhBSq>~!\8;7ǏѣkTwBe^[NNVeA hvXNB@$ H7S_s݅v:+}`z=*@[V]v Eʕ౰<>a,o B!%!̅0 lz~'cb8k]0hSk[`gc[},6mOǺ-fj+MoSSS8wΝ;W^yǏ<^Ω܌zo91Yp*@^@dBl"|H LyH@h;Aff JHƪU =>"{WXZZF@\ZffoB! KB!#ϥsc0ls&_XYa'-޸\ن=z'Oq\p%rTV *Qe/lO?3y[ j%؏J!+K+xO^Îbﷺ+MXV LFőpiAgcǝ;715u^B\^Y'xlgpB, !4/ȮTTI좛ؤpY&Wc?l⦚6#\u[޼:Ldu~ ǏqY\pSSS^ IDATڿ.'' f;@tWVx--{3ྐྵXK)[HCqlLLL(ffbzz '"{7|Vp`+.BCBHtW §c¥ɊLג'fX&d&84L5Y;趼~{E07J'N`jj ϟǹsp8qb ;NOg>|_U<_M/]A@ӍbeYwa{p)jߣ;gQDJuW-[x ^ ض@Z{oߓʵ5[rzz>$B KB!#ũہ`iģAuǔ6q@/ 59;raAwE@}ۺ+=z'NmNMB$TNOOȑ#VwYZ"x) W:Xi8߲Gy\X&lχ {PZ<:EX J `llK\b}%V.,BÇW+ !n`I!ddieW U 15 EAϷ4YAͷܬX*72MdW-&N"{ {;|Kf UC )mX\Q|T}%&'cG|߇ҏoYB!`Y&&C6ǩann33wX_VW[bG/o\w !Bv%!hwp &Cs9Yݘ%f cZԽ t+ ݠo9? ,̵%/<^~XEYM(NS|˿|8!|qc{8z-% DQ/51>>۶!H ,Am;,++˘ 4. F Tb"07ܿUGD!P$2\uu"\D0'mLmٶc]cη4oyJtWl̷$EIۿGJqdk8jPJ?|{X86&®jm۶`dž|߃6sߗp]\WH>?7n_ꞡ B4(XBI̛ńK@m,N^MhFmм.lȷ4̷$E8{l,Tbo̹o,E:\NvX2UoYm kf {p/ܲkEN&h !V.-]$>*~FKB!}%!̥72Dƈe$fQ-:9%&@,(fWD|r+[z|˩)I"r;Wq _÷2m,<cKxtꀵf{je@ow~GS~{Hq_mc:,{?zՇ@E:nhJ)u)C<]x-PN%!KB!#ǥ;NKEMk+bGTc6 ԕ%.+eweGɓ-… .GyTs*Eͷ<*<,J H)پ7<&`C 2ʶTEKd/oi޹Bw'%!e7aK;8vf \Yk.u_ۓ.;Wnа-3+;|{]#ʷ<{,-GS-Wq enڀmYDD@J,6ᯅdJ)}/j}zUC_n}`%2 !KB!#2M;^WNSk &O$uJpib犬̪MпY6q@禱͔ńW VD6q[i'].v÷j-h}lr,PDb# ju}yMCš#[-G!d$`I!dd8}nTrlf;)))u6q@oÎgt4kՈcY5.;Grli5c e%0rI 9 [6 lx@I!SlG܋}qۑG.GBABȐLLjcl+"\n& .G9߲L]ix)erB+-)| >^ќ}TVa >lز [ݒvVe[Z=7F_ !Bڠ`I!dd8sX+Uعkw t)\MnM{$WlMJj%m s*7ڵ_be~x [Jزn= >:B!`I!d$8}|nKe/rn)6pO/=VoˬsSm/mk@{f]Z̫123՞QԻd=]&ʷ|W0==SN.ku{+ʯ?wKl5޺o%mR K`OWH}}}m"X@!taI!d$B ǀ~uUSgw {weHʧN.aٳP9ȶHFxs6,-+|Jw*R~XuXw+xbAŝsU KBh(XBj.N1Ft* g@M<:=Ϸ&c7ֻᲠU_$\|˩Ԝa~!|CC%\6g&\26ԑ~!kpt̎QEЌA!wP$2vf816o36pʷ,jJ.;WglۥRGoyY[bxs*00ݖGh ) )|-R @JT^*k>?o/B!$ KB!C˥wnK$]8 љM\LZS{ZT4&M\^^Xv|'N-#mN@Y`n>T2  ˙6x6qB!P$2 @>mvXv++bm|,:5≠]&oyԩ2L #i.o,t*;P߱իov XZ#J J B56q BCBPr:l'O`l׉zue+o28Ls(`w]( y{__\5o\Y'=V?R,e;,Ez<5 HOQpI8!P$21.JFfql0w.-7cwP{)6s5&>UE52(RB˩M[޻6ְh Nu Y{n'AkR]q~e38wb&m|%!EP$2h2;MB^}<|jY[潆-;Ǵį]1G{ϩ.-߄Onc 󷯣6x`wplm!;w=@Xov`[6w B9V B:~PN E^&ysyǁ@YEǍS[mmYkkʪ7VC=~Jfɝ~)p+`zzN]VaΞ=s+;$̷lBӛ PX_p7w K52KO=tJrv lMR4s]!m;, ! qwen]Sџm-2ZENe[^>hǏLJ&ߒryPelL.? :]pg{RXh%RB ;)c;xuKE ~z3/ηc"!! `'dl5tjo'\|.j/"n&2KTk( Zr ze9@'|Aץ&\^> Čv_\tC]i3amRt9i|?kc~W@!dCBPq?SiLJ3!SS--MɭηĢXےݕ˷8Ω$um|"?ury T `gpEXlYǣv"; *O<Փ uƇqy4-)XB3, !]v[FݕrQ+RG:gN< xx~W6qeMy@d'V¤@")ٕ 4$*H/_uWq _÷72sc7B!P$24\qK]~e!rX-S?)3߲M\{Ase7ݕmk_^za4w46^YU7ypD˼_I P҇"ή}?u鹁X6Gk61, ! BK7P%7W'¥V4{5N-&oY&] rQg9ojsJͷLT=4.}b!x"rg[\]vl ~{~ `myvW6C;gq_v.oWVv3&)Ϭ\ZknZ5Բۆp U J/.E}n*{;xD6~ G>ŗ4Os!B!=B .ʤ\սp)!> Y v(/Ґ)&|uٕu[rp[8q8?mΚKn V+F * sO2XJAb 43Ƿ o &KkPaDB!B "UVX@,dGqҨĽc6ְh Nu FlQ5_Pa$w(XBh.@@eL}׾q@;_p^_pYF%k0;аvpBͩTtflGk_`9(={6*7c뎄K&N?89¥\ 6qRM* c IDAT5)!| [Vp/+ !|u=UOonMJτB#, ! 4n+6|INönO,:9j'6هowQ]9TvKoyY\pSSSo1̓ݷ˕y`Vw%˯:p,+ w':Gpt(!P$2ݕ lj~eN-&Z|˰|Kupwڿ{3rkh{ , F(@ھ;xxw&lslˏֆ&^*D!l, ! ,[L݁˔ofA48v|NHTnŮjso8|uG]:|9e52^,XfW*vpwCGu2l0e}iKsX47BVABҾ&82o"jY<|KN{+4Gɓ'ci{p!9(\.)!kB+x҇v`flCpas-Q#oih 'w(XBX.ݼיf"vvqIxx|.mmsl@6q䈰1ҫnQ-i/R땆UZWJEC>$d22l't@#ٕkx*Nm^ @ ͡`I!d8F,Tq*ˌM$&F(Jf"HFs/auAW !KB!G6q'럻Mĵ;.s- u[fv[ M<ymEP.vzOs*%3rsx 1+aڄhnc 2-ZFnhǞxO[ހae6qX~twtmKB!}%!̏~\Mbg.|<8:˷9bgxٕ=#ځn,U8-;8VAdَ:,J y&;mvp/iw*ރjFR6gϞQOGed?uPwVw%"`p2l َl6.~miaڰN-ZhUz}iK{pmBH`I!d( bN)".ɷ ~|2l@mS\f;Tn/o9555e F01h|3@TJv P6ۉ+#SlgZ׎1mex+)Ree>B!dk`I!dt^ΌژyBnh1i|[Q3JSmgTr*zݕy`0҂;xgi KHomhwC;xzpُ&\wom|KB BK7l+usW/-RdMפ|sbNeΝùs綥xvZmtV:Ֆ`i-!`A•&;x]lm>kⰮMċ[.C|BH?`I!dtnr4{b܄pYn|E-Sey95fՕ\5 ]٠G5[='Oυ pzZ̰\+H4nv&Ҷ,H߃eJ nzxْy6p`O[hIW Xz_ !AB@q}nKuR}˷Ex4ڭX~ݗ^h km?[NeDgϞݖ"l6dg#I̶,XBĮྗ\zAɢ]N5V)hQTm*\^YB! BK7!NBj# [S l32 ni']PķSk[5PH\jf;ѮӖ*(JXBm Zu+ݕp_,bO\,߲Mi@$\Mv`C'B B@(* 'RCED0SeWjaN֢˷| t.GhĂǁmY؈,޾tW&+vwl?c΢{|KM\>Vv[v՝B~@!D$+0X@ѵ yNהR^\2EdXX5JD~@`fl-_yLOOԩS8|Dw0$q'X]5RmlT+UH߇빐҇ya2l2nIԷj#=Sk`}i wD2nXꕄB ;, ! nmj[T`e|StWR9Ad|oMwaנ\ hgp :Awe`mu%%Vjwe#l-'k|m.[HBH?`I!dPE%'8-+7m\$U^-] X 0r,U0[%˴$;vN]);;z& }Hϋm4CU ?{eu}\hH$RԈ"EIe[Ў=6}ή}W5qXiX}0&\rK[R$M`I!d[`+n,3 TQ -\VUݖ*Xp[ƽ \N]tlʝ k4R2qWVK`w J!Nv"U2 T+#(:VSl݌!v^}KCh&BKB!ۂlJm^VCKwnˤf u=7 \Ck4x4 'OLʝn|K&oK7lcPYlb0]BIIVٙYH)1 ]ܕ#p G csӱs\cm&T&3 U}4MWi )eWnanBH4r !M%!mΘem+cixA?Қ4;ݹW&SOl|Yr; ^]ɓ8}43vcԫ0m Z,4+b !iw`muQ=;FOdIǮwpt,.+ շXߒKB!Ӈ%!m ݒpY'`Ҿquܖ8iaUu[NAeml{q֩O[=qѓ֜綄}lrWw0F5 hG َ!V cDĭ1N}4ɥ3B6%!9oT雼 =4&n -%u*^/"^|ũO\_KF-=@IJ[v:݅;U0 bRvA/v[~v|E[64q} M<#:N1īշ,Oc4 o} B!dk`I!dR'MX=7 \\Ƶ :u*n=/}K[.\tuu$lhb׮y4D*-a+GA\r4}6'%;84ڒei1znB}`?M,B"(XB:q:8IemZ'.\zd˝M/lpy/:&Ӫoy{lEbbwdGծB@hvߋՕ %`h'0A/v[>`,."'&P,\nr}lbxN|HǪolª?J!L Bc `$e]ɍ#\nF?ݖq _^d9M>qĴC"SWr-Dpfkx[Ja iflb}} @kWF*6?살i8ʧ%\戓n(H.h@<eKB! BK7jUWWԃeC8nDe VXsp+KgIp ¹]ĭoo6] /@8v2jW6{vfX[[A0G#[xOURW*椉'N}m"!瘵lԷlvrDS'4- !BBXԲJn*s6۲;vԷ&;%\ʢ~Wt[:]tp3B%qշԿ.9eB!ڕ6lB ]f={]ݕA0t T+ w>鉼D$7M<91ĽBjQLb7D:V߲$MX߲_BB(XBvd1cnpYmJ7:fZ-ĕnJ9u*I9&=q?95'wZ-])q8pk 2 vtJ%Vp퐸d)ZB., !Ly/XUZmg|Ueri8 uYm闷;xո.wC:8Tq17Zr2ݕ%ĎFh}݇ٹ]xˈwMwl'LA|vЅBaUY$NZ6Mo4 B![EcByr%e 2_fܩJOvIUUJCN9i.Y8 /_ v~:ɓ'WEd,py1\t ?i,)cHj(rbmTR-ܖyXÒB6%!mB5/#\iW]쩿X7:pE!RVNW7RrCi⅓8 tp֩$[A/i!7u8+: C< 4 033~ B`0# f;ܬ]9DWW4>V \,MG+~#!0XWUS%!KB!S{VSt?1Ku(-b.[mYK4ܖq`]'>|se:NKwTntsBշɜVIH?(l53](D USڕ^|t݌X8p9H8󮥚+\i{r%DN 7ۇUQV~Bd(XBTLzebՑR}pYAC|M)\]fB;'O&Be\B&.4q-\..p,~]6"4.9|n MwN b2@_A,,'ZlG,r6*eQ)V#HU2MpU9%!BBb b~/HAҩX8qEeaz¥@9g󫿴SIɓ'qi,..}ؿuŶ5l]UJcl{[ eh4kWa?zvXu8->!p-1%eB4ԪoqX :, !L BK6 \)M{oԷo@$Pg|bbsmf7J0ď\f7>`'c1];ڕq7ۍyV\9+w A!AYa^-/\3a9̊1Zz⬚&hqַtݕ@r(XB6, !L_J_U\ɊUKWq[f,9\m9nx鐺nK<'nJѣG? 7pJ ^5~˄۩餃+jСkn7ν} FX4wʡrWO0ҳ]pUY$X1X99)Мq]x+)XB2, !LT*:ELGUGmY[7Mַ4&SaiS$۝/3~V,70ZJK9P+;]gIDC`yH Uv 1O(.ܖ@P"\i9b%B , !Lԑ7N>..+$A}nK_?N\-'FK֩$;3 JHo$b)40юĩ@SKܕ-%VtpnwG0;3\yh8D0"eJ zO;D2r;Է,qx*Ɣy-ׯeְ%!mKB!S׼:%}wap8= +_'NvHT?+E&_N&:N%ӿoo;D5 ȥ̌]©. sXݳx]Cax`uEaUO,bK2N}KtuHGJ!f=5 !%!)d>cZ;IO( }aQmR7JcIΟpnKտn$ݕOnu*s_:(f+l pjbB'\R]{W/avW&beve?\|p4L>qD=.G G,f)\ў ˹E1ř:f+JcB@BTo(O=.nlYC.:\m75ݖjh:+: L&w _㿄WFL֖ Ўݕ&;zwpR={W/c;ymư߃Ȭ]9T+qǞ4o܎EeQrLWeauዩR6P V !077{L7O;BٖP$2^QPy&nzA#`zp)}H+qnKi,&T3 W*RF`X)FݙY> Gn4WF;:p'u8 8igьǍ# :e.L2C m KB!˲|>`r[ 7ODSM7t[T.{}8,:L&w;޿_ pF{o{-]) @Ɓb׮x"  0 'W8ڔ8^C88ꍸv?c).=[^E44Rг8iqR4q}LK7nPi ɲLB`I!d:$ y-E"إe2]=?xu:8n*8n f7Jr/p0}S&^W\tSwh$hlbvn|]zH a%,=cm2՘W2t۫T:>b047_G]{&pg9{1ܗ=F!l!, !l9_Cԗ/\֯o)7hpr Lmn.k-uD:^̹78}K@oZw@!@F!``lAVqjq^y '>18Y,q)lz\>GaQnS[$6`|2/eRܾ[72ǃo|cdaI!P$|׶p銃BiynK$ecn`giٲp'#\*OM&8pYmYE^8*O8qb ic8XeQ%¥C^F{&,_,Fo\<1,_G6=ӎB-, !l9z3dF!]m  êWA-'\z)KHp qLq3xO}rߓ'ON%gIS=?2[tu/Dv}`4`i釐D8  U*x]0hg4}^ :8 0K{z85h=p릉kKp3N/O8 O@޼|UcB!d`I!d R4{ȕ_ĴUI{npY#M\K۾e۲`qKmׯ,p"^|ESImT<,K0ygY+]"TJh`Ϟ[ *tWJ ]xzbذ [V=ƌ۱H,Dd}g-w%\qo8E4س2|4ɦ!/><!d[CBQM2@ƺ_Vs[ !q%\n(M+[.djUq[.+-DTe^JN]<%ݍvòܕfv`izx0xܕ4|=#{19B&H+P}K@XX" -AӷP"\1Ԉ ]}G!4!B`I!dƕN#\zāk"URfշ eV4DS*\7-uҝך*?_J֩$$ş ^__;+;[ݕNvc}mda4 ڕ`} ?n˜t >2g=_|9TCo^:6]Rb%'&B!dk`I!dƻבnB:¥eP3{Kf*,z;%W,q[ZUo鈦:cNwqܖeVĹeu*MH cLŬp}QҍvMwe33sX]( ((#vߏ~XxZǺ#,8ڌĭ>ǣO8 27`4qOL[_+q,V pR~F6iG@! BaՠtKmi%Hp)ƕpM ;ezd@۲tRW|e" Ku* xrW#I {%VFfN W1 T*2 w`Vf EV񰰾erEGp[׽B4q6s ,5ȇCZ iG@! BBR'\N:-C2~׷x?KR-(o֩$$̹7JUwT*xW`h@4jgnwQhG*QߋBX iE8k&*apM]1(T"ͱv!hu)XB2, !l="u"&nyiZaSwXRP1q^uqܖ{%񖠦 =N%!,Ҥp! cV*V6I*htj#P턉Xi+Gr8w^_;4mr_|LRrUܖ9qԷ|؂6οn-Vb6bPV NhENX|T3kNTtzgĩ_f9wMŢ\L:3 sXu\\weMCxBVΜ+}Z0NOj4hw:)Hm:ڕ}|biʅKf;.\7  !L%""p[¥!Z&6[-p鶕 ep.I Eϼy Q_A C@Vv\O}|䦂.5nfff;)M@DFh4@0ϡ-)V&AAd;pEG4h+‰]s֬"\}W44m,Y?mY(\:m7[Kپ9rgq%BKB!S ipiKψTh -/M@fC,P %J;k=a0 !DDB >D n^:fIJ Tq*x+;:hl%dBe0 awvCO/bae/\>{-,t|iOOORq5榉..uK'}r,ByyxBȶ!l9P]g.'Hׅir¥+ܖ;;EpiRGTG| :(B@NJͳOQ$̹JM5y](R4x)[MYiJ+x0Sz"XX*  q=V߲]@lw=>N%!)CBȖ@*T.iF{pi+/\s42f#N]M4E" \9P4otwEBnlVKȽscEp} [KX)l40( CH֭ ]@+#.)y¥'`Wo9 "jN<¥dJOTGԏAc"!iÿDBz#TYcn}KEL?[T 8%6Gq[nj}Ko¥W\([&u*$rwVN2O4ޫ:c:w>5fi^ٲp(%T.GQQ C!j6kש/bܭ?wZ|bU9N*xe/]R*2uWJ]9CkV#Z 6XXN7[N>MXq~e¥~a+k#ZQVgH ӎBv, !l)~-GMn u:$ԷΕc͗\W1p[P fV Fpw]ήy.;?*ZX)Mv0U2ү0WDKsGN\3q[V3>0B7ع-%⺕}+-MwecE*gBȎ%!-Gpi;,Kz uCi`IM8Su#mbp$ / ëHhZ3m G#H)l4`fBHg]+Mʅ8f&an:=h۳X X N;<!d@B#F:5s) Y~}Kc8-.ǯocS2Ba7hZhܼVa|>s/+K/"VF?h4]%VvwefO$!T)a=pܕf* #Kux[X+ ol9J-$`I!d:$zOK;UJ7C#pJ3 Wo)5sX3%nKpab4 E&ڝNXY IDAT}%79s"^ڟ/U'\] %VvNo"+!2밴ܕF*oEc/hn!j}K3X9 QsF,.=nb2)\FR&u*$ߙOpr/rw~?'۲\\INo*weABb)2wT -u*CG?Rd7\}ˊ -&l1BN%!q$ƍR}d㸴܌b[R3-}l2gv 9nKB]hZqS<?P\_|h@hZb%=+eVJTbeݕUoxY*x7rzȥi@!; :, !l-a#\I7]fjx2uDZ=]%5˭oi3v>#f;$n56붌d ]qʶSiVk7ɸ- ywݘ#O0•;ukWv&;~2B&+5+MgȨ[iqd\a- eU, os[^m+w?+2KBKB![~ cַLԼT3g Bo]}Kw=8B&s^&]2S)tw>B/bdcc_, .YLwS 'UHլtJWb`:Y+m~k[KUBN)Bgg2;i⪟"&T63U4f06-ZtI=Z:JhYw4q=07'M<>9=]'M< #DQ ҿ&,X9c_p^]3qNhu+)V&ю]dG+u~cA$7qQ7I}jFN2M\spzƱ 3Nuĭbyŗ3}tWN:, !, !L'd@'`Hi Y]2)u f-+\շVv)ªWQ$ Fe-M_)2= ky-VbXs"F;Y +'\+ ?KOO|Ιk [ZR-qvsM[eT%:2ݕۀ=ӎBvL '2rs! iގ Sƪo鮫:Me6܈mڹ:hhƈąO}*c9E<;!/ aeDɎ[]o:+T H3\;+8\Jg~k$)^!6鴡MZ ʶ4q߾hAΏJB!; BY*G+\fMa5xc-z-Ϋo)r T f\h]ҸK vw*٧>Ve0!;g:2Ex6FׯMvZ@֭ ?Pb402 N?Z[S?z'iX=c faQrW2pV6:C$`I!dK8eNavmF pmsppKs:ht\\ q0 1 %h6jh4k^ɬ\mct$dsm6@޹crVխlwnaWd n>;ց?x']v?g&^1.G_[pi7Y,qxZKgm3pIwv` KB![ʏ?tKJͨq-4-$J[yo)6oEʍշLQNeIDQEh6hԷL.RR2ظ9x~6HȎX~Õ 5wfҺyVNbwf b .oi(okP:xUo[2x yJB!;:, !L1+H&3@%hwpLIHaN#\oA@Br.Mw=jk/i*;g'NNμq*޹WcRNN 4Mv̥$bɎ F(w+2⺕[nPwy&&M9ei)iFDK {zA_5B7f_^㜌0ݕۊ=ӎBvtXBr<}r4,-A㶴&Mer,ܕ95ĥ!(ht:mMGs>ר>[弬OφQae!ݎXb\x6ى\RmF0uWnGk폽w.wڤuhw*4q8k/?Ɖ'0!2=(XB s)IJkC.=U2dٖvg&$>!j}KBeB0ʅQs(J.KYc_/nl.B_O]@e.#Wh4TY[l4!ʹfgvixoX] !>6|ԷzG~38cPLk(7F%B8P$9~+oY Fˌu*f{KL¥#(vF}RDl4F-K{~'\֫o ߸lI%8h(?x`;+gfӚ>*zkK jWD;kgeXײOԏ[w-n9Ϥ -K FNymUˋ8u2>t_} ]Lf~%!kXBrg cַPnHkԷLfJ[UqMJSt'>Q,.qiyY]I!nKB!A8 \"Yϲz+Uu8)ՙfuaܕs[W5[Xߏag6 &/M<[/ӈw-Lͽnq\Cyd's)C`~/0; t]F#dGxܕnXlrЏw_[hz0 1CMes.gRnKduڴ._t5֫htWB[`I!d>XTrRx% GfZx}'NN!fK!,V0[@ov8u_]1W,%8[&`vo3 nJ_ybeJs4>( @M2fn{v_-\xR}ٛ tWnGXMRBWaJ8!)G.Re4q-ܥN8:i kݐG:/꤉mqO5:>:$awL! uDCYJ44MēIʮwóO>Q҃#x{};V+\4~ӊMpWfb4ۏdr-Su͜h$j]6aGb'Oi\mFNv nNWpa,|MBKB!SAJU{Q CԺ.ƪo)|6D?]-2M$"%!Pi[ӥ¥h7RNOP[\[R$;/l@%V5+;YَJw*2\FQRmkVbac?JBᲢhiSt)|fLc .ݶ+{} ˼+ !eP$2%Mj4ܖq+\teMKݤ@ 9dKi5+'1#LW>Df3[m 3g"ު5}nH%\Bcpi ^;p)e億KBvg޸ Q*2iݮ,ۉ82W C@Қ>Ac?*9xt[Z]7*\Nm R] 6g:¥NdnPW2NnIμqϙu+soWmsXػ7&;TRR3be +Wout?Sh8g=0p{ۘc$KXtNJ^#6ov/-?&N]/gW= B!dCBȖbc*\p HƦJvmY9e,9+p 0v Qά*[pL0'M֘˘OehIld+y}Qv+[@ a9+T26رJkV45tlDg 7 l;޿1:׿W>rJ_sre?y~翉ÇoV> B!d”pB![gkXPވŵ-0֨y-M3*RF sw΋V8BgG3 4솊E-#Xhi̫֟oY)MUR<Ӝz^7d'r<+s( r&MWBY $Hk 0R섩X92ѧ|Sgq~=(\9P\YvcÒBȔ0ZRxdoH;W=6)Mƫf`nfwv̤;k䥉L_xl~U}x;d'q޸VsmDQdʖZ4+<4vwJbg `mv7FK0Dna\ƃ;0a&<TL}z.Ά;/ӹF$óOQ$;㿩[./at"t4!VjgJ)IxbJU`D"VxmYa5,9c7a1Ysl;,7sns9;_r_sxx x WےBȎKB!SAԥZ?ui_Rϔ"[c~ڋ24lU6hLw%̑b-k8. ف:+ {?xXwo9+H) vpVѸo?8ܖϱ-v[ZKNm92븼$tϞ},o?- !($2=RtJN\e˂5`fv]5.M%Է|h&>yZ[Rg=lH7ueEy}kNe ny[~ػصۨWinj"ge* \>Ђ!V3 Kμy܌u\nmiu-9q%`=86Ak+ _}˯~3d.D!$:, !L3f5UH:Z_R~f:_?{7b%A0?}gq`W^8M听TҊ,3QVv[qI9g^?\5SUbeh hh2qWAnJ\_Vn>++}'f,a\;.aplfMr;/:Aj-Ϟ}/OXߒBȶKB!!S R*PV}FcǛ]eʱ/u9 }G|WwK텶2:ѤN[)ᮌTL>s - LgJȎ/Vj6v;42I7~W,qV&iC-Vb4DOun{R6T#6)ǥcSuk|`g>gc}KB! B,TvG _81bR vB Mԩ5Hǎ H<}+vT~Gqvt|>b2+xz6T\4HnF:m3L6obee^~;+gFè O 2LwG8FAX9{gRjis9ަ EKk5lL33gEqx©0p~+MG)\N7O;BP$2>{ߦ*-Q9!շtD:03xB}ˇ֖^Ck˸ks1\ݽ8ж{pYe3-k.[ƻ{%ZdΙwPp}XQAӒ-Do|tsF*V&5P8+e"TC 6Y_SbcԻʟAsA`sVmp9۲%'%\w68Wq6ک[PĩE6C KB!SG7._3@v4Ss[>hl5, zGr7>|;o }(*}-e&zWKL]_$眧Czم* U{QRM[4|Xbe a֬L}' pVZNaC"Uz0qᲦQ~3;՝`E׷}'=,R2KB(, !L9_@pBJ`@%e[*de0lK)f*[o[xw>{3I;*g*-¥ҘH 'WT%h]!.--8/q!~خnb+};X\'qV\Sr舕~~_jStO@,S4 -ߛX Ln:\r fqT8DSaΖB!ބ%!b:% lJ>R2\WJ9A$i8#7雋xw>SKܛi f mYZr ft~,h&dXbeZ{~EGo]Wufz^+q xYiիItV4pYj֬1\/YL7>C¥OANG\=nKNױ8-}Bf|iX$d+JMZ7{rVZO9,g*hz`+އ&Uιiݣ*-tnK¥(lF5_)}jYQ RY+~JRR(1PkTmĘЖoRmL}KQG$d9^ϫY C:*X27izX3\R)4p%XWb}0sg Q( 2_YD3QK-smDBzQ(Vzpͷc*x& !L B(~k bR,oy8\ǏoH,nL匴: N[:nKhP<Է܂4WΏ#==dpOլ-/˳rUjge\'+4\HW"V*g+הXyA4~_VJ 2~_T7eu[ɸ!D(w akrBBf2)9릉kAGz-4J % ^}ػ tzXوJs7pa*edbeo=qVv)4=d~q܃M0S8#{/ ه}j U'D\I >.:Lc1%+kXq$'j^_%jJ(Lps wk~ os vb0D9}/Be"P:N+t?o8+չ?X{j)y҅*)81u׸Syt$}*}I,[$K,RShu{훵=#VClZ{>ͺ屨ixvצFKu͎aK ^&)MI6fwT?2"3"2"3T~ѕYQ~}^Ϟ鳬j ^Lk%,g LG+C`O2B#, !iPKTl>Wx"'/ǓѤG}DbI@)DnP#3Ŵe-Mhf 갎Ϫ[CiVs(.077ao">? )UgRL ҈/㐕F*+mQ5^r).v}N.+q)%\4q|y]/ⲛ4qVd!%L- L'’BaFxy{WNeVDA8Nc #kfit׷Ld8׷|QR G*-&RK?qY$kJZ>ԫǁxUYtFUư/#eHo-'5+" \wΦXl'`G\D_iղ~}fnuSA- !X$2cgH×qxEgOex2R S6ʨ HRfLORE_":ش|K -r3P sX4q1 v,)$f4py謮;/Jd-QR< >m֭l'-)+Ed岌<;K0qkN_"ݺ *. ) vq *eDOm ;Mї {a$2˱ӈWWH/]Jsu,q)hK n.!ؒRf-ض uUһ?H ܇ DV>W$b hIJ5ܣ^J^2R] #ifrE7浨w+.{̝#r梿UQz#hі|hK|cK5;[4`t+0`=xqS#PXB:8:?W$c$SgM'e፱Oj uٙJCd-X@H%gY},MJ-ֲ?sXX{Xx@JKaأhxb`\uz2ܔFTʕ,2] X5?^(|-dA,rǍ\߲y>wf rύF&#`>"V=B/!dCAaI!dh,..b~~ǎUW]z-I僤~ KfG٧e&noi2t*-EL簖-SrA9E !ݱ{ YiFl v"`|BI%)a-I"ERo,R] R-Om !dCAaI!dM0ӿgffr{ wVqY%M\2hY.#Uq)&@IXe*Bթ _҈Q߲h˂s⒡#{0|T@!w_9%މN([XǺ HU*)j$ 쌿ZD^q-U-]yF[g?R-;`J#QԎaπB6'@!d377FUݻ*+%o h!EX89De%y Om!$r|2I"),kJt!+eY-ESfUy,p p ~-K/+xl?όcyurqrYr?U/q TZcѕ}F<)\7B80’BPTg N.zm%oiD$A99ol۶' ;Ej ַç-i=շġs-cqS{/ldٿd!)*k5-d"|iesֱh= p%ĄnJHZ"*^UnJCZ6@X\g&i(L&Fy/:ޖdr6J-?`97O5N Sn%֭ r- !dAaI!ש̳oכCojTon)R4;? !ǩ4Dii}Kѯ;MғZ)oP@9U26QPf >[=Y _2dQMNVC]Że;:c0ڧO;/.OՅu YYVԫl)+Fhz^իTEiԶ?XWIM9i8]EgqTğy8;}<îo}隌C! KB!}ìS9==$hAo3e 421/.u(ۅ̔:[JHkefQJ&om8r[8{l"LR%ID&sSq}iR\*iiU"'Dێ HI9St4`jpi⏾}B&’BHW]WT0(C{[ar#'"VR|}K[&}8[BXsVR!О?YR/1іSM6>?@ qne IecA(SX"| cQCFVvTV*e x;/eJkG)?Ӝi}ˢPyS\G8'TL_B#!/177.w޾Jɾ]oJ6tBC#vʾvцq Bcjz{,SHe/'#ᢏ:q^,)ϳ!Ns=sb 10/]L6?,uO"'56ՙL"+CV&kR 5Y^rT);N Q ,'_s3QkYϓ>og뜢a#wp2r|ϘWIeל;3YYkLaw_2M|5p 3$BKB!ި߽֩,cU/Hv$ M`vm2P4񤻤mDY܀OgrX~'J'o)-rRL7ӻK奄ؾkНwa";DVvER" 3VP IDAT$S¥L$$K@ij9 RViYnKf3Q{y;^>oa׷n=x_N.? (DvsgGSrYquZ}˹\Oі ! KB! NeIZ70\&X[ ZrO´Poi]2[MDže2&.SΫR2HWH_\RZn|Xc㺬bY $mi$O @ eUwD*l6uΟCm{RKEĥCe}Kbl4kCQ\VJIh `Ep [TZ߲4S2(, !8QT^uUY]Ә=>+p.)Rַ\ncYLW6"R hVQ}Uo)+o)W(E[B oͻn|G0rswMRVKdewvG(W)#s#y RVtX}LRBPx]0yL`̷Y/Zy;slS#M%!lrFUɆߔPڲ]*ZE\RQCM=G}˴U?Ȏ|7: |e,s@vՉ #)+UQ-=:PDeGq>?RU.7<?^OXޕH2WI\I@18/CՂsr畼D[gL¼^kLqU L 0}3⋋8pF! KB͍@bvM  ǞB&lk}˕&P&NE#tqLWQ$f*41܀e& ť3ϡ;NdeP#,+2'+B1 Mq!FBtΜ2UJYP9K.3Q!RS;^1Sk.x5MOeU=HeY&c&"S[ X1wLԷr~ۇ1<>q}gH! KBلu*G)Ů^ŧA?M@d%FVn2>q8wrSLay,5BȆ’B6Z}x3f~.)iMqMD*dAx;-M\4E֬oIQ]qx*[ӡ׷(.>/Wodgt'14c#'RVfu+;T^@. in'qKEZM ^Y ,k)΋0wǎ1ʲD-.m:uX&gˋ$m\ϿyNxXrrX|qW4/`0O{jᠰ$Mש!G* |+s`,r l٦Q .볺oEBDZĥ))ۅ̔c4$Z3O[xrX\t+ke-uk#+ʨ|QvTIkdZNP%2degy mJoe#;qGHJ= /L޷j "\AbqY$"D^%qYMi!u9ܐEryim麿gEv<'e&ؙc8pqf^;1?0!dCAaI!=u*}uˀm2'2e* Ù30>K!`FBfRoFFRyһ%RFm@=y/1qYd4`Z:Z1z iԬV `vEX/",ua }/&)[7#{<gWrɽGĠ,,|n?8߻J9!݈ 0dǜ*Dؙcaz%! KB٠:e$4Y|Gpo.[ ot~1.'fēW}ˬp 3=][jj7C y\O(If}e/+NEd22n~8a H"+kuǫcJ0IJ8%2ΜNR~~#N9qDmW]m8(ϱk>sw4==ťy@r=Ut_?Xؐrf-~5.< !W(, !da {J}c˰p!((%iKpO>ַLWeo4;-"B6{>hXkm t DczR N(vOV1o5W\ Qw:4D^KU"7eRS6<罚v6ty㼂}?,1p!'IYIڞkZ\<˙%!@8 By8pǎ޽{133ddu!% kۇc?mҖhcJH'QWіp}زHd]}5oEY"*7&;ʊT\@&otD`&GK-rO{?R14t1g#JJ}KhW4w9֦~sDyEvH/-&N!ՠ$uFSYƮcUeNXt_2%r#8J@olZ!"+շmBV̬;w}kߌ{m10쀇w [-YXR25+#ETR%i,!ڶC6 _Rt/QAnSNzX, A^?r. -HiO+ev=7q e $د10v_dshu:ss!dÔpBYgo6M"8]x}8֦`+1"bu[/H~sɉY2^4q}4q׫ŵ~>XM Cd:r?o=[zSd]d_J xZAZ5ݻAv;6Vliu} ǹMks:w(\kNjg3-<"~\dYr~aLM]ELOz"NPӿ7:Uʗ'+/ռWNOy[HIaD\:Ah򘸦0MRɗ{@Eiz[xHT´^{279W4z8*EE/ Cޏ=&:6}0> +YiXSi3pSXS Xn .k~"z,|e-{I׎ eb2wrO@uqi=L\qD\]VSooa>Z/hioI!2u*7uTeNG$Z}65%)նX]E8Lnhɼ1A׷ԑBfʱZ|'q}^:#}`=h7X>y&dLYDU6Qi&1[6 ( 6ax1aE,EBuKUy;枛R\-8{26e%YKdYߒBkXBHbSIYg;ߚlM]2ò)\M6,۱>^4cR$'׷ǬR2T[n; Cއ>{Osg-[ CVF,20V You(O"^n;J}nQò+W2ck,X7-KC&=9-l4,@V*x+`ַG>aOB #, !dPT2]|9M߹>+@!jmm6_ic)bH?{}ˬXz*z,NOGpg\Jˠh˅G0r42!@gщjV`|D؎\`GW"Uqinw"-ch֧E".2SehNJ{Te~4c֮9Ǎc6pA`5shMB++W8} bqq6M %!S=DX5vNXXSTeRrT]*"QoY4OԤ,LsQAqiI^1d&zm$馷½\xgW0LPu01`|BDV5+u"8lBQ] <ctΝA81 W\ _Y';/jtȿosU:oY$6-swRVj1ǁX)$!:a;߂|W~TqD'K!7-zNc T\ַTe/rK]0b"Dc$ѳemyχXX8|^."9t}+FTeh,c -В]$*;ViO"-tV r%" MHs34hm"?qY$y\Μі`Ρ|ťpde1-5 閩)̤>pMTqZ̊BZ"ӿ)*ö?HfyLs? iEJ2D_VS機?xZS'Piw'?ws/cƯ(-k陧 /lC012Y+2W"+mҲK||X J)Jb!ڲі-"ծZ^E/x #%Ǭù똛hj,u_:9YƷS4wh,{=4O[LL1\X'9/' ;fdG_d']lGeiAmOekjzeLb:-uio届E-o1kbQĢ+JTvͳl>JgiaJ-ϟqߠ$0{|iLOOcnn- !FXBa {Jm^}YoFEMKxzu?F_AD;QqyC`/'(/3h[&Ҍ̉J!I tM%2jbQ磺ENZus'z迒vmhyQ y^oh4:y%)#rc`-RSB62`XrXx Hu ~Jqu!DUVxNq&n2N+D)y(, re,7!ز KVQrN[|Y$؎;㜸Ph0!cXF-JnQ Y96fPE\d_eE\v!52=qYAJQ`|qe:|{ퟸe!N.ظbq-QŶ" Siil0ՈJ@vh1:qpV:Xz<%mۆhVF=m9z皯ac26+շTY F,E8tfo=hw@{zDVnO(uVIv'yݶHȶ+nmFJI=2'.e"O;g_m]xQ".bD[M-P֞vzèo9`YFEf!laI!}5Fo߆o߆ô%*ѵ ;h'LVO5v`:cL).=e羻y. WŴj$X8|_`{ͥY[ֶvL"+@Gj"WW A)jږO7j^2}L nC41^ ]r)n=qJۭB|c{P87e1=aY4ҹxwM\dK.J(0’B\!q˾k£O$feF#H.ePԢ\~%`|K"-(K(sLbяHHfO5mX5R!.b=&ϛ5hQ~Zc.09GJڝ4 IDATUEV$R4d+zRI)$í[3! !(''݈"ή'WOQ|Ay+-=B%(~oY#EXnsWR$^KFĎ9 h NV\7{ LMMaff&G>lBȺ’Bzߣɾk?xiT+I÷+5(M{@KI]ˉ-DbcL9deLh"r4qIŜgoXs_ _rRMjdk,c9#Y @V`HTX5((TP.s_tq6gtMЈuרw|j9O]헸,x?v&.YZP&.݇m>Lezo o}a)t{uBȺ’B+36~Jj~6L4 -1hK}@vm91yt>r|HT[q,~-E_L ^ryU#P{&ơG6 Ğ*/[DpQ@kh6,'-!*[Id%VW-#:1‰IDcc~Eɂ=ׂ]iS矞됱e@PrP\r֞6Y弭BP}.̳h,ciϵmhJ\ IO#+N6;oIYPXBHE@otϽ ߺZu*Tdu[{Elr2'2h-nPu-J(݃T$"11crb1F%a{zchBT*Ҷ MdekgDP(NRӰmm#G41aGuk{-"|b+cu#L撀Vj6W$.c&S弌9Dv!4ᘻuƼԧ5o4q\/'ő ėx//2L϶ǺEbc|B,b݃n77gXraVw7+>{M"*UrϟE:hX*jQq<_C8<.v?!_! #, !Ăӿ?~ϼ2KX[mѠmD4qs_1r3C!ַ ^r*uhCdk#>=frEWViF*m_҆ YX͈:}a+"\рE6[E[;^L_r^RNy%e%$OSj}%!dd$5rpͫ_'RE|xoJ?CB]KU"RQeV2w(m`U5 K[d&`!6jhv˂O}Kcd,9%ĢYY _LYIHoLMM0[BF KBNW]}?6~AS'C`j!1MQiF_(oHGH\}˜@uRr-_rp ϶Krs݇p!*M !.MIY4.C$[P\oh5#poҨEѕA}pևmJwURzD2yU6,㚓.wmC92[Dk?de9ӹspGz|-N5~n';\e6(+Z]ioI$ T'_Yw=K+&Yz<*Rae#/ bDUPՐ}WũV8WC;bݛϑ]uKTab>G\BUk,O @VZ$d4R%!PXB6,jE+1b 1)R3L ڄ.@%nciua^)Qrr%M&.v!~aRKc羈{GU\ۂK\]ۿ)6h@ +uNZ4M_ ̻t%t٦?[k>x6t`4t@I碱K5O=JJBFiLOOwS?[y>{`Ly.is1Wܬs2*srޮ-S4OGicside㕸iXz'O{q%_٬a`b}KBH/0’a/IW{{t C8꜍mg{~\mIi-Oz&-0mLrϕ=|,n75yKhˢwђnȟ>J{u!: Ӯ0pS9DK\Lm"3 ƵDf>'ڼlҘ[̵蚓l7夣]9y>8lnY8-f8K7B|;uTfG?G m66yXoK?kۊe!@VDxkn!}Q{tPLoQp~Aߛ O6TK𼦛q^c9{.ŵZύis| Yl2f9'Kkvsj5lC_tG9fh| CV:,;ޏ-wEwcB|$o֩$k~:Tť*8sScЅ F`:wc<7jQr}ׯ jPL(51ZHnsS*>7Jay6/q+@uq钖^tK KϹ4'Kde$ 2(, !#TQ`_~iAGY"gZAV V­ rs)g2*!EOVC}no+,lX|O(GZWaK@\v#4DX'\9n?^JuqIYI C]8S KBb {Jdsǰ/?K*PD.SVS\*Y&?t/xo,ﵺGѩ֨z뇨,ύiw#O9\K :s(8AY*W\Jm~l1(+z²w~B KBH¿QCa_~ xKCX"4qoX*kso6Ncf3v ,U6Z}KP%2P, E? qY4f7n}y!, k|y)7(,!*lzCbk7PK6aY&>8$JLS\-~㛾`6^Q*#]ST+bЫ,ϲ_0ε/9.yqu9XڼQn}NtSzd=Ba9XyPXBFH#yii(,K}#L / N+QZҬQYFXB\HBqlmlsrrkygqaq`i2댲W(,&Ό+B6_FzgW㱈˪-Kނ_H%iz}7OH_ĥe-DZ ȊZU\$$&QYSh1t@/)X0*s*jFPZK _n&>I\&錐5r`}KB6/:dpG/>IPyC KCץ 5WXMĔN`v_ rT[e ӗ-5a3 aYIRg=iYeyl_lLhh6瞶SD⒲w(,ַ$dAaIYs وz(fm,<"-B&8A8+}m}0J>:S\ eV )<ɽ>FHn Y6egMq86'k[\sqY (mUyh,uO/uOEq9y]r$dPX9l|(, !kTŞ?XO}KE@d[.RVN>w*5qiǫZI@v{]h+R77Aܾ,cSq{V.K\t5.eI*]*RoI.,)E’2pKٌ%іRZtKS\$8/e4Đ.aڷcԉ$MPNYڜ;NТ,%&~/+_[4 _]/هXxK6g[aCf7h<{2 J  AƆ’2PA63r Lp/3îo)^]ױ!_~s,gމ-.e?E@RHM*~PV h= XPXB=333)2z D5XY-OfE\ZEM;^,UaLZ:vep{a{J}>JcaYPO"6g[٘m|dtJ8sX^N[a迏xlL(,G"d@aI ?coaE}KET$%.+{r?>շ,[둶߷h˪,3H&Js21򯕒1㔜cOn__N_]HLIJxxe%.}_^]s8s8u>ya jWgs?2~N!dBaI֩$7<7} =Էt##.װe}#sS˱(Dd.}KuQ:(:+1kNeDzyV]ij2\/l(,oI’R֩$7o![IEsZ^^x *%e%LPXO%!$!co%0Rťtm"R!lS`0#G,%o.㢫hK[]&. E_M\13+iإP|,Uriqmc5Da"<.hK}H- $Zfg²0 H.I.ZܥA"*[EUt+,u~ YPXn|A$N%!댅Ş?D&.t Rag}Krl?8s$^߲23i]R}giJx'%zo :[dPXnX"BaI&&d}3{ӷ0oXa[]I\Ssmqz^`iJ]B'X-0Xoĝgtw/8M|g]^eeY4N9Y 9z;KqXT~g 8!  w2(, ٤{$dcEmiH˂cY3,4 !  գ,҆c`a +IK`ַbx/.Ψ l++jkO'٩(.Saq-e%!y(,7',EBaI&%dcQ~MԷtIKg]˼L9E[ qe|p-œEyЊ++kj5Tno{ׄoKŽiV\v+29.샸Ԅeءܰ%!k%!3{fffS" Ş8րPI%{59ȷi&]EYMOzHhַ4q*cyDXv部vt-Va\zCaIيCaIu* ٜ$-oV1[ j9qiD Β(io91>,{u&އ&^GvaYY\*)Kkƹ2e5)+ )’HXߒAaIu* ,( nܐr-bj!BDQMPs=JLe<{~FWͥ%UNZk=΅%1.B%!Է9A!/Ma钘 G eyWIY}TZBb>Z-a(*J>D_a~k8" ϰ^%!PXl#PX`-BH$M<IF#%<.a\[|-珦|iBqQYӲKpKѬ KR KR?(, p:B/~-Y+,xoߠAQ}K6ِi}q9CRʇl`F#t%AMg!ա$dB!oyL#rAFi.-KgB\e*",#) շ\]K㚓F;-% oIHwPXNaJBH?Xx(\ &>J]mjM\Z%ĽZhKT\1$reISӔ% [R KB!dM~URtKdm@Oǵ4 FK\n4񬆥#rEeپ9*ܰDT-~G \L %N)’uTB͞?&CXJiY{ZޚS\'e+Z1",DmfXn:53\%!=BaIze)’uFYKږVEbMø=+jx\" eigO'uEBKANTq9KxMQi6R%!BaIRqCaIK+8g񖷼]zS!dG/>..}[$}> 3ph"@Z [&S".G$M\;eG[Z7²K_)*Yn+yVb0rO), KOX; ??G?_0>>ZZ074>z E%fofD\-mQ[w8xli[ Cӱil4Ba !M{h,9nzc~z{(, K2*!: n ~bbb2Q!Ba7c5j޽{)* !#Þ?G-m5.=[Ƈz'1۷" DZƣ .7~x D\H̕e[ޢ-w}RM(, K2HX KBĭކGuDQ0A7_LuƒG15QRJ˰B8?A~X~8_KZqLNbl|<4qmַZ4}jҕnBaIHoPX-f’z} QDVaJ{8w * o}SanySćxRa~=-ǶoGN ϿBI}˛Eyo9IxVYHԷhR«\ޯVUwMqG[FUPXda}K$ϼeWarr QzdD8FMX&Yx(f*CP2-#ޯ*v\D[1M MYò[qY$1LTv:tIh嚣*Q*%\l&(, #+]w݃ ""Y]|io|>:BH$-oN ,UB});F_Yڵ:j;.H`o9i'qYNeqN'Y%*}Zwք]ox}J KBz’ 3M-F’>˿p](u+$ <9GFSN N#G BHH[ D"),D^O?Z0hҎh0Y=(Maq9:i^#M"u^5`ދ{{’ޠ$[%!}~_crrK*+pUT2qmBH_oiq 8s>LN"#iݞ%,+։_@\ٻHNO$_d 3e{L`&6Yn Y=ɱ7[urBrjK2Zu 1YղY %c h gF#3-4u}|j=~wՕqmni|%%l,ߒ"X6ϼ6>qpkge{sQ '~qq1~EkJ]G -#2\D?%-7qOT`iwJĻUI` #$췤h =׍<;RT.te߷9rHUwsiL|c-vg_!ogG";?JCo.X kwwnvUvX,*-)%lCuqOSZMA Bx+޺/>w}`+Kh~;-#2\6#bdxypٓ$?2bw۪aNnsL]=Knff&&&&"˜8%-huVӞ>'?FZ;) ʅK?k=2#"RUwuxxߎJ6͈>r.g߲XPyck/,5slu[۷~F,a{6顇׿xvpJScޭPr!'OF#"~7#͈o!n3㮿\oVhOF|;| ityCCS&k5O;Xv8yr5.,a{͡C;K؄~bǎS'O'ON8'O\vo#7 4/ū~塎qOm!\pYp+񽭄.#Z{=t9gy`<XJUG,&ozrz=K~KB`I5=>8~x<ԓqk_fS8 MӟbϺ߲w.NhzIKe v^܂߲1*K6_!co6ZN;,Ei'iq><9rpg#} ܻʥ4]=Kf~%kwY _t|Cˈ42rqU1Prt  ,#}tinv9"XRTc[L\ ~G-B/MBˈBk 4Kݒou:\7|v%uvAnK/[ӷp _bkg5hl4111a%I谤 #tW]v9Jw#pH+gZòS[fiO谄a ߒT6vҘxZ#]z&e-x+|P&X2췤RKa%@oD|]| ]`I-/ 7{+lX,dVUw3bh(_lCˈL,e녭~v[cߞ|mK%n嘸^XoW#=2)c,~Jx>PG` #Fct(Wxm=w=| Z6W˶{w_{w_M` #췤@MqG>҈2w-O,a{CkdLd—'~"hOm.vW2lX,am[-K2cΝk׮SoϷ?цZǝo'.3*%]˶mK%~KK`If?f3d/̈́ Scu_ Y˶w>nkG` ׹rllL%VN]MLL.w6333%}⃿w#*"J[j[[)|`I-(Ih},|hrJjZ-vqСev,ɄFJ匠ȑ#Fg)`#ywڿVh9 e&*\n+g166q*X SSSg|w~sM]O` f'?rqX.̐ 樧۲R~@P ڵ+ǣRđ#Gh4REF ,IhHnfĻfMh;pۭKqjLkYS t ۻ |!hW* KY@] vmlEe70%l;n'j 7UZ1-YW ;WB_ @/, .LhVw>r=&޹Ҙ8K2TRԟXm.3$9Z,|NuS}\7%T~r .VI+Ł?dQoA;ź#%E:)#B%PZjS+4& %rgdM;|SO}&zD˹ػ*0 cff&FLLLΝ;l63ZJ<w{"?.^5coTγ~aTO ){KN]ѣo͏733311px#`%SoU?xWvɗI.{w_w>O>4xݏVk׮j[#dfN,:pXDŃlO/oMF#UN-L<۷wm/Np9G"Nseꚜ֏15Ȳ{{c_xV_;U/j]?O]]&$6s8֝s,,,??D/-I`I.unLj-gh兀8{9"tp(7i1)eF ,ɄeTs/'uMj:t(bffƘx,ɄXDgwe'uMc[fLh_k=݅sN@\{IsĄ!$?_V<@ݓtۮ]VoK2Zh,e>gjjJk6= @ [fCl6SmFc>#G@q (TFh4O]J!]|%@=^XOl\{e;0?:,ɔݕ>(&%Yo?x1>XYJPW1cci IDATcrX]'hڻ,FLLL8k@WDS(x{e;߲`Po[K`tQi+[%&]>-K` ,)uQu c[$%vZvjL|jjJpIKPBJLG;v.FFv. СC[nCs1:Op =rJfwQr^h<02rEe@n=^XOoB` dܛ<X1:7FG.2O` tC{eDؘn@A)혛#:[?r^'G|6?GO]VrF 0&g2Ja 9a跹阛\@X@R˲sL|[ , tSYc%Ϯ]z!)˼0&ΠHa[tSyoct[@o933S1q%$(c?H8Y~nJ8 #52rEe@O bff&&&&"xcKFpꦄ XȚ"4=$?*~K%o-cff-˩ "R5J%{cv=K۵kWX9r$&&&h.km2 eeoIa I~˱t[ -Tlt1&} ۘ6IP =1q-c+[.mMvX5Z=UX rnԥ@ᵃJGfvKXJޚi-jTS-2R` kT?Yoi$V0 N{L|v=1?$u9Ph1񱱱ĘKX ;1qvp9&^TZ&G` TdW{3&=oyС$cKZz@P +>d-` Da%@tzs#G߲l6}y%Ȁz8xegQFh4O] g%)=^XOUFؿ~K#Zq8JkI] ^{L<"bbb":XPHA=o97`RV- '~K$ `a F:,2(8iK%@8tMݗH%@URiss1;- D%@F5l@{L~Kba Q5u Fij^'u! ,2UGɘ9qQFpҊRXdvovoye M` 1+=&>;ԥth *ۦe 4%@4uWq蝉[udK l塚hbj7XdDq8I]@~Tn`P ,2Bw%@vTn.K` ,2@w%@:o=DK ] 67rtYF` JxpyaluOF 1ݕ.>&Sٝe %@B+mnnzm,A"HHw%@>[Sٛe %@"+e~HT5;A` 7l#hN]@ ,ͲRK`+tY@` Jj!}qÇ@ ,!ˊ!}65e1|@7(2%@$na8PTK>i4$qPTK>] @5SuK> 8Cq}oz@ ,'ǁXOE#XE#z%P`SSKX=oz͇@,z'Ɂ"XE"!t/>,B` CޛˁX@,XK(=n<%D~OM` #X@AXK@ @` >X@8x;%@8pF` d >u P N N` e ,X@4SeK(y&2o`]TF:%K 3@f,X!9x%l %K2x%@2K6DJ'RsKlSK.J]K. %^F` ܏.] %@r,8ݕ`Xd.*Xd.KV# 3tYJ` ,2!ഭkX@ ,2 EE$!%F%%`] 6%@&]FXd:2wvW,Vߥ+,_K]@&,2=hR] wc蹯wjꋺz=~XdK7(8@Rl.hJ;#b(Z uJ_7z޿}r,wWTj'|/~9NX\| a%@tw<"R1 7. EқQp+X=H=PՅ,rh8@=ӫW*/zM` KZQGU%oK1tϱ(JuI:-ȇtWE Z>%K7p*8,rBK,;tZ:$j>}t,z}*8@,zQ1 ++zI` PYdK;+U%P Kn+%@<[ P4KZտCv:jk~wXݜuSx_R +KT~(+OHu"@,zZMX^:-)MXQݚl6(Rh}FT[s_`c*Y):K_Ea Px.荕aejc^}P]Ch i#jS/%@7=tKZ*u ]%t,W* -huWU+XI%DDD!؎lxN` ' oZlUv@1 ,$Ke`VjXQVJW. 'VF_ Wl6S0HJGDiXFJg>l~-">@=_:F[9R_k9*=19 _:,RyN).kRN]@,ZV`!X]6ʈZ%RӡeKȀ솕J jצ.aUeQ*2`nX(>%@Y $SX"TjuO2zJ` @+u)[0Y? |Z퍩K+%@j -K%/ߌK`,2 o]mBK ?!ZeT*W.Wc~= !Nk=?sOť #ssbm %s:j_I]@:,2e_el~:""+<Kݕa !.g.cJgGHhV;R c=KضrD;u@z4xNJVy(#@7,2Z|갬Tq*9h<4^2"bqX\D4_ `VX2_e50،HT.K]Fϕ˗ȫchy,ODR:+"șF'"zi &u@G#xBRƩg!ȡz%M|y{Rԥ=z"Ja S}ZX;,WzWɇcqXD|#찜|JuȩAg٩\~N{OKxo.#ȱFZFD\*.ؔF+]8#9 w /N?޺_ĉ _ Gѥg.Hxko g+Rƹ^`UG#⛩H^%r4ӹ\s1\~OY\qϦ.2b."'SiKeKP^7.#vq{ϧ.y*"TV`@T-7G~z_KSTnL+e`Bȕ{_%KXc a%@o ,rk5.(cTnJfIDATz|scROֺJg^gt"U/Et[yrr9JrC14:p p H ##88?~O_߻[ȶcq<":)nWbr; `B۷ժ,:s!ܾ?jFXZHFFGFZሡru'G_~dK ((z?̑pa%@ ,R`Wҗ33K-bkz?RX KNiv<"j`lF,./}鑘v@t""crDŽia )eʮ]/}Z\=tBN~2Za%RTX Kh|c\\8y2ba!b~u{{7.V,D0}=V4CkYA` Z+Xv#8q"+_9=Hf4q'N]@ (jrr¾JX6:;*F1 H` @UGzqo>~TzvJϊҿ?gV=P!]d$y^}2r((_ҕqY=9FHIIFTX PP:,J8ycjꛩˡZ~~4u)Y;,~!J_&\;)a""<חn@ uVUG9*kxw2H@` @fT*ό'I,;`f\6#ⳉ眥ƙrMN7X9u15x+N] R*]F+hwa>ӯG7lK_VWR@bK2R(x+o.*^N=v:%1q^d&'5 dڇ>tm<╯DRȉR^6lM筸/dZ]L]" ({e򕟈|D%W*lF,'uZw~%_I]# 7&|q]_.k͈x̣K74q_8IT*WGeQKre߾};R7 璈xcX^6#, zdtk~t<W\/U Y ,ȥ<7^OG?: 8d6#:o(؀8=ypS@,ȵ߉#я~7u9 Ba]IҨTDS@,Ƚ{{>#~wĿ_I]tx7cy77#[=j/.XP8G?jdO"I/D=׮ENGgYv*P B,`K/E|qĕ+o='`d٩S~ *fsx-/]xqO@}۔,|9[֭[;?۟۱y{uss367oG[_oFk?"u 14ߞU_}>lg}ϛI\[ד3MIs/NF X6%Лo.?RО`)X w2IlMy4`Y b.s;wS`9Yyn~ٹY|07Ν?ekrsm] ճ^ݬes۔'M %%̙bcx/=^ kZfM,w{.I4=mJ C=`krsm] ճ^ݬD Ξ<kk7˚krsm] ճ^ݬesG"M0>_zS,kZfM,$y(9,`ڧ꫟ #s?OZfM,#E,`I~7̙ ں,g彺Y7XH S X:sZzʍ,u-XNg-XV{u/WL[oRu"X+WceFzE,'u-XNg-XV{u/~,"a` 9}nw[rׂtւeW7kzb,{6Ҵx%P޼,_ Y ճ^ݬ,EJhK]zW˱Yyn #70K%'/|e kzVޫ5e=h hFsek"XN`9,g彺Y,(q?V%0q?SYrx-XV{u/Xfӑz` LU ^ n kzVޫ52˞<z` _,YTDK`p;Lrsm] ճ^ݬE DKU7!XNjO,#XfٓO8,hN3. ee4=iz0` ̝n뭷/#:˥]rrں,g彺Yw,xDD X b;\1s[ϵu-XV{uWJ;ޞGOߟy' "F@gj~~>e ,*M(u^@"3۶%I\.u **MNH@dzztz R" Cm=/iqqq>@-*(㒤]v.`1 # J /NN@`hv]-8d$`Slt 0TG L[qnb4`Piձَ7A!`.Q\N\NlVvmڽ{w&*:jT\NǏ_s>NnP7??/ITmE-8[V)IZdtԶuЦf$eYr5/..Nt *vTOvd*Cvޭݻw˭JN%UéCl@-*@z5g[uf[Nl*I^ ǜnq$Tjz{3  J `(:P6U|ڛNN SG@Lc>Z! *@ j;_'Ozm=@@0SAw;~8熵]̧]SA@Ӄz̧-SC@ Eh /*v]z#2WT.S.@bQ/0N6TřlVfg@˟Q:~8UV б=2s|M85??/I:|p`"*@FuTh^A8N{aU.Z\\dN@bT y-..*N˶5ծ]VClp׮]TOt iՂ# fmzG@hvITЪ,hjRVo0rG+IMgR3TIEeo:;+a0`L S`Po0 F`c>F .Km:|KS`TP8jS˒ m!I:SKQ-/OŢ^G-˨pBf&tdLNmg!Qi`(*P]Wfg^FO]_5HPAv7T0 9S4 &U$T`L* 0 L̠8gꊚϙV0jg2W`*`ڜVک 3oo:; 0!tuuԶ w&dJMMw&~-2TPYp-d2Q/g:3JTLOuɓ@ `ΔIT?LuTfgO@ Ӯ1nz[6ZA|*tMozG F )S©͞3-S]=tFdJ_◢^ P#8FSL J;_v&S:}f&^J,d2oYȹsɲbz)C? @H/[10H}?IE=3zǢ^Т @gR8]?Sfulv.}kJyGP@L3u9ITGPՙ3gɲ,It?|݌~5sjyI"@_~GhllL/_ŋ/ʕTJTP&;~A|4Wf&l;j Ro_}HTJrY'˲yҗ娗0`sF1mTL|N>X,=˲,=#^p6Q6fƔSZ1O aժtǴu6 y%-//饗.<=Q/`PA}8oYFSW@pjLNƴI u|>R1YyeIeY* Ag✩QoDgJPO5N>D"!T-DT.i-~C]W cT 52H-~/u Q/FoݯmۮeYZY+W^ֵkWu--D"~C=D"!ɒUh0*x5]zEB6?PA-L L6m 3٬u_u>O WO *Kx\T,ih4)DTA0U=, U0ʲbb,e}_dÆ?8Zd^FO]3LikN-/Eں:%IYrb|~E++T,T(*m~WuUy^YzG^> *N_aP8uE~;(2m ɤ,+&˒>nHzUT籛@m @L |0-* ϙ2` &2u>~b>@Dƴ9Ss0:O^"L30zf&jO*9Sy1g ThT6s.G`AmUE@v>S)9Szf&OE@PӮ˜)`ę6*h#=*=̙:6;Rz9S@OvPLhT8*f✩+b|*SlL"^]רV>hi/ujyI aAtZwTt *3u%N)<gYSt @G9SؙLFΧ=T̙Zd^J0g ,&Χ:6;|*6Ph)h3-z^*h3% S043eZ;0T&1 9*k6gJb0?*SE@`i5r"QmԴ"/L L TQG@8SL]z!TAAUTZp,c)9S1u>m`P#9SLc|폠 *`D0g L|*0J)bg2ed8gꊘ3`}|*S$SP L3E;NmUT&! 3eJTG0[Χ 0ĂLWLOEvT LG0_LOTaE@ )LŜ)T 2&ϙB`>Im̧È "͙3`0m&U m`hPC9gyL,3SƶTAF@ p;)3`m&UAE@ (L@LO0 $*`,8[1Ĝ)ÍTG@ L`c>@P3u%1g yL|*0~b># #l[5;49S0:OLB@UMuN bHuE"Q439ۦOFîٶ>Yi 5hTy|0mU|* TtY B$`>7`pAmU #_۶>lZj3X䔑h\T0YfYUSR*|ۙTbSͧ 0)msOe S`*6։ timF)un0g K;)#O` Hծ+b?TI̧T0 Ǒ3;+0u|`|~ L !B-}k&U7v>)f2u>m * siYz$iT03E; *&ϧ@@uumnU; v>)0q>UGP`#PKp*Ы ~$]P0O6̛ڟ-_%USA̧2T .* m[dZSjXV/B@^ҋ*IgRP|*ƿm}0v1ʒp*K`hLN'1 AB@-k5 Xu׵L~yIψ` `Ϥ*OE2*d2rQ/=ꃳ5: :jX7=_90󩂶?*aT@%IǏz 葯©nΠR]-I+M&Lb|*|FTv$ igg{L .KzLOTy,r:ݻwo|Qtm=ͪs3XpYSsQ/#?10򅨗St?j`*uWå^>T٩/lUP!*TZ^ҩ奨SUO"zQ:PrRmyp.I`LNifrJw_3]dtuuqtmG2PFB۴ ߱m= à\fZK3v6N-/TӺTTẮk.ٶM85d~R9%uB5{N;*dj52e>ՙlV-omF[=g۷ȶgz.e`fPmDP=uHׁ}@ti̧F6)T 3:g|;Nq>.7$)G-IIOa^ה9Ni5-m`D@PTPk6:8 .*D{&ͧtTՊl˒-FT*,GIRQA$ŔNad9/CTćC3JsM;}KS0 BT6ƤT鴦wIJ(#IcjBnCB |Ez^8+TtiP9%u8n/KzAS BTzc.hLEUMx©0cv} _FZrBR(T*^ ('>aTz\-Kf0ImE]T5NP*8۹tS5` O[WဪXWʒɯN6*))[ /ȗVw ۽{R"mrj#zT]0䶿 ST5ʑPQ?|XLFrǏknnn ZQքSR/s>o( ɔlI]C+$ݨURTRPn6:iY`UV2˶$~]wyvjK_:yu/نװv* ?-)f&t ZMuJ߯>IӒWM5 @*;e5 S+n۫^`ը*aUByI+V*a՟ʶߤtfV,rZ\\lٖ{n-..VGYtС~-] ©VNusnp p`қ*Ԕ-j/jNfZMhXfћG}@UTW+ r/uLO57wRUn`T+Ak3#zr~Z"`m y}B>EPjr6jT-U?]jBU[ouhOmS_S󦚅UרUUըjF->$ v ϕjv-`ʩN|Egg2#we>}Wo MCCF;TpqvFgQy' / IDATߣ|ZV;ՇMU}+`"dkÕU+r/U~*qUPגpӶ7\9^̧" OtjgMSB)T5YVmuXLS<W,W<WW}e  PuW` ?kjT)We۷^ls~U^[ ˺szf*O ]W7;ۓNϷ{)FW۠UQ] ,KWtE]zE++WU,U.yA(5f:5J B){ll,ݓ򼸂Ar5]{IXRxJRqMIT(Ub2ϪTWoFUURk Zy_A^^~ߊ(׽*)j8ըL6XX=WRYڿv?.s +6#$zBRo7(m{tZL^(J|}TQ[d']ӫnMr˵AǑWJQҘ\oIVUBPRT>ի )%)RYVAu pP^UU8ʫ:* ªjL.I[BU@*>mDg NOu轿u్R%f&439uP%U`^'u P,{I7nA/jZ65-d2::8o_gߒ4.)L3y&T*\NPHڵD*dr\丶l"ϓ  VڪT} §U+:I׫v>WY\VJr݇w|HMay"Zﴑdֽ{u;!jX??.)`ܶ}GKz=G"e iK*)E~ uM@ۺA=ߓ@t52KbɲXƶ(S\JenU!TUըu18<eX7k7W9\};~U.S.S6աC{W+vڥÇ7}-uZ^{uZTN Q!~ E-}JM>+?e$%dYI%cۢTjRS>WUUUSxV3ʒe%vP{}@Uj5S5J(H{>5]Wވm' )I5Rp{_}xU/Nm]W>4^cV CpP5!?ڢXlL~Sm0eYA8NH}Zt%rYRm_ҥKfr>CS;їdjX'KzA9.Ќ^SQ/=5Ohg2VF2Ijz#w %yy^P\VT5 +,Kccey)eIxQ_WvCVI'?U:z7D[)5z˿ ]WM/z%}tD!N-U}ɓ= (RSJ&5>Uk篩T*X ɓeyWJLCû;;]dOڵO=/Ҁj=Kkz43s~5EQ8Mc P!*Too:ӗJ\Ye/ʟ+5x|\ԔǧyU+yP%yފb˫Te_.ᠪ\Q*v T*x<ٛt=_}Μ9˗/ڵZYb [Vܬᨗwm=bXԟjVy^:h!BTFB^ V\)9f_t,kRƶjll<ӵkWU(U._-ɲ*FAUR]ʡBQHT:O޾8z6>|~EB^mXXoƯK}zEmP8 j;y%NX Q!] y}B詃ss:*WqR˗j۞W U~VW_jYՐ*D"{7zTPptWrWJnAXU.T(Vrk,=Q]yEk_V]~P!*T`>UwAIӲ %*Sգ\UTնU[R뎂yTWCGLX\ĸl5}}>us:sjU>R]A=m&*J=YYUZj^fI#"B@ܶ~Χ 8NVW% Sp6dYJTkӃ*򇦿o`? JJHW_m(/5~@UrMo}OeD_>fF6n%mnV*TmF۟$9}FITʲJU~%UmU5jTETW*yTo}`Ţ^0ŢRqk||B[4>>d2D"x ><X,^xvuG;wԁ?%I_f/߷]uP/>`ϔ*<[WT煏 *W*Uv ª`TPURRbDM5Uug !u M_`c6;g!ZGğԩ53sՠ*jOlNRs];T= SSuN(+Q Uհʪ bjTs>+j UCmC%m;N'߮zX=}W^wwtWs… ruonYﶿZڠ..Ќ^SQ/Cnk<:|!jzL6LF{m[;vn9e3/ƻ6ceB+ʪ\;ŒJlmTPAz@bQ}u!I5??\.EuO\iP-1w 6Sm̧rN(}y*[u!n[`VV3pl:)@@PN-/R詃ss:b҈>ڶx ՆX@6BUBUBUEYVIX^RArP"dsPMT=ۧ7ymo׾y-..j׮]m/A?8>lב^WS_hqT 6A'O]brsf^}Pꯩ^{βb *OT+ꢤGf{ӻ7F Հrr]w5:|p^־nϞ"BTLm;8-0=-}Durݳf^}P]^UC*? *? *KZ̽Zg亿tuS`P p_S}ܶk .˯^ BTgOJS&n? =<=,ZyeY]KʲVT./I,:y A@5z5?hQ=A/BT T db_fSnP7X~cW)AURUwTQ~PuU,ϻrl{B'O~oSP nSfe0z]j*)F@PaTu+~7̺rG>_?.?edYIIJ;b+*V:U'O޶kaG@5DOu}Bfs.>G@PaPUPՌ>*L%me]'KTvK}'dۻ\. !|']WXi퓚STz* |!eTzqU5%=mO@@5ĂUٶYSOuF*D ʴ?IɁV,{mСCǏk~~^\n{GOZso[ n7^C[6䔎lߡTKc:jQ/cTP"㒪mﵬGk~ Q Tt~be{e{^` ]WRM} N)E@Pa8IS}_]r -~m[?N5l۫okկY_";)پC3SQ/g^o(5 ߒ랉zI.P賡N z9 T3wb%z8%:@@e\WOe=jvѵaSi6mLP5 їξO>*TqV5i ɔl6oZNfg[Q/ *|qt6+?USUt Ϥz\ɺrOF$@Tl&0dڌVh3S=[~㲬 !>ۢO n}.h3/^ǔ%~\lTPd&#q`: `SZoV4;~^@TFHjrIV *#OeJ5Uu&eTS@ p2{J꼂׭~ ^Ќ>[ykd۷E$YTC?n*Z=u_mRToeJr^!*ͮ>*|E0Jv&S:}a;i~d랋zI02ڹU.:FftwD@@5r)iTOu|To3"۞z9`<!6"Tz?#!T_=`jUOvvTCǜ?z)`$!TO"jFS;Z9FQmwmF0 ՐɹYLWANn3%:쬎vKcP _j6Lmt?Љ 2L6ljz)0}Lnv1Ѝ)S-d2P l/3Q .1m>U폠 :G@5Dd6%ZZ &ϧ:zh}kqߓjoum{W4}+Ҫړ{hWs[ APujyI^NO,d2ZdtpnN `]y!j_4Y豿kDmwDsD'6wݸ]A} IDATtnbR&>5kﹲTd5 ~/^FMuqt@STP ;f=ٲ@~Pk¢(7;x:emY;zϲ\bF`uEW޷s%F9-֥{).oFk 9mZ yZ^2" ӺTTCCVͮ KQAkz$č+g:Tm&'[TS6O'&m\4֘_yʒJ9=SjY[kP Gg25}zD5I/6_&D Q TwM(҉2j7|.+WtԒ_5C#lF XT9jO>=+Va|'OTm[f%mT0CrdG w6@m|v?T9A]%).JjLP*ơ(UU+,s)g9w_^N1 D@557{P?) MLVI9?6+3T﫤: :x]ҞeY[FxCJ,\R%5&iréFT8].<_, bv1tR]t)U2i>UTFCNVkz9(ENp 7MN6ߚ4o:QCՀjU=>/p 0ZΎONL:ۤJ.^hʫRٯ{kA//`Y/%K+R#Q9[COVS UTAUQ:OfI0w_MPu{] o9v&SFe>BՀHS\E@`xPAiZ$.3kyMSϧj:ܒbq)^35AY/c`FIS&WNՇRv[/jf fS>*6xNQ~P YUU)Yl^];tƥ ҊYb,駞l߮MOEQ@@5Te8z/BnIkAC@NTJ5)ok/䉢oC59ö?s.?WLLM:=TAzTfUTUySUV5 fTV[_һ_h]u׮%'KkG5%+f))Ƿ굗$3j}ʶlfWO}r B5]IxP5.JaO1)g]RSZ[1UJϵVT^pYETF3JjrWTUUYUPURt^'Ik!U\mnmf /ӂ*jQiz- k:qvJքS݆6jpMӓfm|zTT%nx\ޯ@ϘZS9e Rk>/k~@?^j!b}UUUPQ58%}0RoAH)ucz#̦ GP4TG_dj#ju#z !B#g'&ubTgKyuC*공'nӓ]U6S)~ijT@*V VA!%˪1K^y /Yz#W6׆T)VaU*T5*4TAPtjp c'zm1|&ߤvݗ/D)̝jv^㯚-NnщG&CCÿ{Ͷ?IοT!k^Χm(ϏI7> ,YۖXM-+f%O$''BTm%ϓ??*K***J***oT-Ie6jX5k Uv WC+^ƕ[ͪ Z Vx<jFLk ?sBrտ\NY#,svrNlMnQmWoK~'yVSMR Ow]'sJf |*˫uҋ>!G%KP?;Lill\㓫!%ψ*RXTqB!br٫VVY./k"5)+Ukf7Od͙TlT/Ov»p7AD=@xkl,k+E\MD0AATv YU`&ƠXvW20Z2˱]ب2?k89@ >kEsK AqtˮqRQ^G}AD-3޶#bJ!E>o4r;Hi+Lf7Tbvt箁bjUJIY>o'X=4TA AUeޒתRj/%Ol#9EAk0pwu1 uSYR}_0)Sb X#WcJy{DjV}*cx}4vz=;FT{^24LtgoCo֑]@K%niBSK ښ簼\6c*Ux”:3EpBT b1flb/Tb onZF4n[FhmTaOU)qI T{*QOJŒEfiAk1JL5T9QH*/jڟ=fXi%|Z)~}Cx=U% r"Uy(SW>o*#7adU:>YUaϑv|w#̓[89/!єDSK3Zۑ簲\U3 5KT:g޾U:]~ʌβ"tpXQ<m(ů\U5/';P_}spUr]^(zcu3׾æsCwa_ƼU&u\HsohT6@!/@v9c|8 &fH4%֊tsr,VVrnPVәÎQlݑ4?7/+oDz[&mzE)%3*~<&|b}doǞv#yL= rY0P8V+BJ=10 f:󽧛oqSx4 <$8&jQiTVXumۆ{"PUy dzԶ+gFQPUppWDKr/XV?+*QV*WiNU4cvOb.a &$3*ʈMeDT1wbڟyw?H*+jF АJ'Ҏʝ:t6\4 qיt>(TUQ|s.Rm^H/]ݘ4 z`|MFk D")JL(Jes6lSYwe0{?Ix}?ݐWv}*ARJ"0U"lI%5ܼ܂TJJh*w:߾}=%k(J2u:a j;~$ ±ƛt> Kixv#wT|IL>2Ϝ{ǘB$ sS2Q%o_z}N1 n*aLC z>{O^N }V̍?qpHc: 0q04?܉)KR2ex{gڎ̥H@i)J#@TUJ#CNX93 "j5j&vx#EU}FW?dޏ}g|i%쫤E.bDi@2e֧zC*1ҿڵ`E\r?laeP ,_H0sNFso$ugE1$R Qp:iT1AoFH9PAQ^ #WmW\N&aB#ɽ.+3zK9kڷh-k~>E$E*:J'JEG~ݒs t :F6^v#o63DŽH=nGUSNّVfDɧ3#Jg`+` 1E%>,9lC+qĐ5G;:>Ջccc>ՙ"qߗ>x~m/'AA\ՍO"CJnmʼ;U+`1AcI%c욿c|+wTlm'}a'sa4hׁ\e1܌QUi`{1 Lc`^df>OrI4h  ,iDI^guX~D8'2 H#aEg}<>r)ʾ_X伢l'{nuVww<)Eq-%7ObOCk$HXmMa)a_%/v,\̻T>'?{ >m)K?7Ŝ>;H3S!`yݨQzT+0jRXO^nmqSTg %Wl:}}YL{mHNAg|: l uTfo=*d\{]6&/D*Yq7>ols81t|է+4)Tb}*ݬOn֧l}*vd+¸KX3{SSPi%8 Q0eUH'Ǚ#:R_H"z/5QX^Ӌ՞NYTvՙ"C5L0Em#( (7{oDzcE8 !ź-F־e%<}WI1exdbP0xwcT +| S]YMl :fOD׳c F)L\.VX[Hx\:4CTiy:〦sEI~)gp 8+Îvhmo(QCCxatqpԨ𙜜(NATT5b䚷9ed.Qo oގu(BJڢr)JLyރNJ*d \VWBQT\*14[Te`8t!XJTi#jbG2OZ.ZfJ˛y=:xE\ Á;q\Jq04RڟE5Dՙ"%18X'ӣc8eZz$L;"3r>ILMNu:ߏn,NOcqzS#UCxz=Xi4RnbV`Al3a]6O[.cHv%FOrk~x\LSv]S.UCT lZTq:9Xl6mxRA(! h`% y=#Z*DC10-oܭϰR{H3kbR!ЌmƀO[2)\K"[Sihmlsz) /QlXǚķ-a۶m>[o51 EPUǑ771RuuwSA"cc=nQhrl :z*`~Hsv > >BFd.ˆYWl=cd|0{˛Jdm~Zݗ1qhLJ W}'>3ʺ+C:iFqonȪ^*lS Oi!d =Viؿj@ UU%DSh*x2pX 'Jx=Վ4z͚U50"0eXkeUBn)h6bhr ,Зu`]3et6\4J9A$*/!!,[e}?p6hDMs>tuwcjrFG>AH AU^׭ȶ)} A$k+"J6nhqe|?1^wEP iU}>Ut*a(ۖCTi`PxMbJֳFb{.%ΌqLlWIr=kH+dvyATe2q`8p= ihT;thIwgސ چU]8=6¹$qDUbB̏}Ĵ?UU_׉[o|ȔCJBHr,zT;*xNSgߑDU U(/Qe%LQ2xԹ}Ĕmv9V߸%T+N*ƔRLV\@` 8#:Ltg$U̥USG Xz|CWw7vQA AUv#oZBF5yD/)$THr׎=xkd&-Ć &6fNAC4ZV3>ՙ"ƁUxڪ? 8J&꫁#OE$g|]'FޔLXDR=n / z3F8~L?iK5z]j5R^ UJ\.gU*m{^ثFOMu AUCC_LaD|> J[-S␠*ux{%BTʫb-$̢Gd\HZJ&*-HHRʕn*,'`dfGS!Ͼ  =ߧoNRM=0@u AU?Q%' է"V+՞FS"E*(&{)%iT9đ\|DUhieeUՌf +U¬OtO}p>T-=si>NiQ 9S  T-,N/83QS?y!0GG?NN8w`w+KmE@)%k"%*13V* ZVWB-ԧee;m t +fOK@8PxM|aviǞ3zcڟ(,HPDcA*fN+ U$JjuNTDq>* GSOLvRR O6!=fNaEU8~vDU%#MTNr *h,HPCCx,JDUϚTDH_%Q%gwZB! "bEUl*\$ɥ{}2Rzc t,$ {+ Uϴcijdj9/`ƧA4$bFTUpƻ >QlçtPڟ ~'D*FJI>UرVQ' *T|gUHK+X[Q*3@wէ[.q}x'z(%Q%KA  T1"OՇG V+TG:SŲE qR!h>rQ-*rĔ_X)d}\Έ0J**q ?J 3Ɓ`v4Ŕ *h,HP̗5<S~}N3#V3TTue5rP~Q*:J#J"Y[ )d\2vi<4 odi3E%,ER4Y k֧*̥T;ES3sT:S~"ƂUeQA3TEWw7v"lb>k]뮗 b *lg5&Wsq%8~r)hJ 9%y X#oEJ%hYYh=%QA @%LA  T1:`qj!9՟""AZ:Siw] ( )U{Q##9ڊURqQL)ߘbOf,a(+]IJжc=(*g6G)o5p:wf.uaLA  T1TT H"ٹoU|QxvCXjCTR>mHO QRWQScI+}21Ϩr9.|Dim‹"5Sf)j5PTQLA  T1`"xI"Js|/Bէ"*M5ŔHԧNgT1Y-ATQ}*zCȰ(;OszSTW6h;*+^;t$*TԙA4$bD^_sH[{s<jvէ"|aT9%RTr"JJIʕ'CURQ?Y W"m´̦qԧ*G: TXQPY-L?N̈S4Q2*[}ى΍(eGVHôH0oOZ\E^SFsSAzxg rvɿ]&TՐWH)Y[QIEY2ɸQ{QU>d AE7Y똷Ta%S]lO,hA4Z'а3/ۄ kN9U%B>POχ Wm+3`I187d늱s+1W_xv8x`iXZ 9(d1e Ґ02 ؘ")IDqPUL<{S}_4GTY}OStP}*:SRTA&" XWFN)Ooh*Y[0[!"|\XYVA48kNkO9ۢDRQ$blq)jR"ƂUL|%GGUk0$;SXg7م"(]x X )U{HQ%ϳۈRJ*dmAOB?rV 9Eҳ#̤q`HPQ,$bTrQ姜QM>Qujs#{QU U{ *lߘqUHVe3"ˁX4TVu z)>TTA j*%kEiJeEL;6:cPX6Ӄ ;7b}}jc7)>iR(|Wa0VK@.uƣ@󜼯h*g&/jdHPQ,$bvq@T\4xD,XF3U,q*[N((J&{\ eU )<ô7 )Br)bL(|Nbp#TeHHR5:$(_ 6Twc@\Uws-[xuزuױc,.s$6nn\n`,yDGoT "b{ o:_'o^t "vs>WP:_4.<~B>Ezh*U{9_)I[E GGڶԶBC,]@n#kY\ڏXxtBGWfMǼ!HƄ"(T1=i~^QNs5gv"OU*brJXQ>@Ds,0Pwca7@)O1J*G74NJ]3-RPY狋.ŕʸrnu%UĔ~$ TA x{*8umy;ߦ#QGX~T>{`4o۟!v -2i賛T2ʯ/WCDl^9$Tm(œQNdKҥOPIE*-8+Մ$ h6CؚHR5$(T1psy")._d\z\#Qgtuw~U5 x8zJQ5a#4唟q-ڥ!jQUyUUYu󳆜3ԶeW&t-fOnTɢPh䔽,y:)tx(0=L_,*JREAq AEDkn.xu>cGRqXtz㕊,H*Qn3IE!AEDomGA< aPRS}AϗkQu>UutO_;~B#(ULh"BR*R["dmfge=++3;߬_\οrʬ_xة Yuy xe`rt$Urʂ$U}C bIV{c̸@a0ιZXXwFS1s(|ӿDqxxخOs>LMNpհlCVYu05 ?燍}G^lR|0]v}|èQX7h3a6qMǘ#tKJ|o[qI*롙cX1h:yn!|vED1e1.d{# վMܼ)۴SS}!OTDc"Q}B|C}Jzd4>Odc^J,Bj~cMJ6Ww[yCf 9U잝A2zW;)|f|Xy?9Tz sq~lb IGQ]( b!A__ӡTQzJ) է*/:DbF0vܬ9IDIDU(Q~}QDJ* )E{*dmʲ!2TU7 J)%k=B) )WjOH6[$wsEb ?HPQ,Z'Ј0xqeOس/Ӟ cڹo]xsS5!^v ϵ(mpF賛$>|iSuy7x|Ϊ6|TmhsϜy|sڒS4zt=f<4چVx$rH&dxt]|pm8mjgnߦU z "w@AAX/DJqi}_aOhDWx*)Nw#VV}nJ ՙ= rʍ*(L1Vh*IDN7PV 7-ļ"zD+5"IH&u,-wa= YZJqtu={ΟA~sCԨ*C(u#Oׁ\Emm> =CS$U@TA I/3?4.9ֺ>Q0F/fnd—2[i7R@uj`k^+zC%oOX,qɦ H[DX(nѣ:&9ձ 嘷x$sRHS\r~`ۜp jd hiK(#&#MM8ұޖ.LpӶH5MlhE}q C!q_I]D]7t݈z{#qb*2WV1e1=~A EP?vsdsaxU759cT|zp \[-mܨD/)nRLҷOu`cVel^9g*ܩڈT*m )f?Vio:HruGj [zGė4aE%k=8wPֺ_M).R6< l QJF3T5EPQ,AUv5 W3P'r7z*p{ŎqQHrXv۷E+ut>eĔUUD*jL $s<~TfWȩ0T/r8U V3V_Ww]D}Q:_m3zU>[_cY?>DDFA6q\R9욻j޲THi6@%68pWM[ b*7 ,[øf9q]iH&hmmC[[;ZZԌL&13}KXxvyrn+CK5jfZrʒWްp^ &q7#)+1Jgw^UŧKe<[Y^ ,֣ANYL`#C J+3GG4ϛmgmWJ 6U$jb)ѬUatQ1/O1b {Cj~)ôw6ܖ 9UMZ2 C8W w,֌gMC2BSS3Z۱~}m]K1>Ν?Ņy`%4x -?@np\oOe׳^yv]I ˮת[ir^^|kR!PڅR(Te}/%AT)87Ua;c3/h.[#zSQ:_}~*i_%q$ ~*R((J%Uy)j>RJֶ7rȗDhk PUfD(tD"T*ή+pw|xuuO8=$Ξ=ug#=N_:G-|rNYJ)|];:0y 8rhd ,UB b!AUfw?~  $J'J-\?*wpQX,QuxxS*SCoT Q%/Fb$r2*]:H LTD^I7S 4"I(Ŋ;RHl(U1nY%RH75}mnv_o ~1<35F[82<ϲ[N{ndJN3ϱ{(T%)\d)4-QNYMHPQ,$}T9e.y.%TQUOyAOo[x-X]O4+%]Tr*SՑS$Sn/SVT̨ĘQidT-mmԯ}s[߆/< >Dž1n9鲝 h l.{E3t ITɟܖgK*nH/LI,pew v9D4HPQ,$ʌ-:rQUOԧz2œGS"1UG ~GޏeU*iwDT>I%U~Qp(Q }cL,a!{twv1/;.Wz 7)>⦹h_k!wtLv׭1Ľ Zua_sf2XX+/G~$6>;nۖh_.t2@.8L|oHݯ vr=)y5fbU kY mKN㊕Dlc9d6< B 3)Z ))6x}ªEeգڹoW+lsӅW1zU/AiTrij]п!È*U?HTIv:N[ǸLU4vRyCv]?u msS q@y|n ;ɩ$ @>d@6̀g23+//ceqϼe| Z헑;Ҳp>ɖy&^ZN$-܏yXx4a\ׄs=4h `]%teCtW&b JG7n |6gSqDfOT hdĴjק:S 7TenTfm>+^J߱)&WT!A5?vٱ&%uiS$2 OsEBEOt3'{"1K&ljš|X_#ҽ6?mH;$|a,{ySINUS]:~ޏ|mqoۣmMvo K4,<`9U29%9O>LNׅc\TCP=C b!AԵɑDUܼ0+QU87 V]vmI]T=0@|uN_|ɔS~E"iUA!D?*EbMQa )U{HQ%QR$J$R‘'J(!OSFI# T7SbLJ$I$]x~?/~\zs.È`yVR)E)Y[nݯ*qY/~1{9c!Պ(JׇNH(AR9)EdMbDJRL"JtbDR.ykSrI)w)[B EEq% ,4j ˮLb$i]&8a#giFRTɦ&lظnz#| Igv]>{hQ$~{C."׈()O*Ki<0=ix3q9$(T1ps#(:[T?K}*38xJ67(U!!ȩJn.Ss>SIu8"46sG_|ڳgm>|Eu#>u8ʸ\}3?엫WHPQ,$bE%ل@QH4[b)>ƃ-!9HT}W@T"rȨv0vrJӌZSH(KF9r.-TzVMCc]Y<LtD{ݒU@xeYT,F^??ęI\綦G4_o?G?Tx O(|u.\m\+6?1]}sJ*J$(T1֮79%H)r*B1#Ƌ tuwc}(1/ce"|qtmSRɛ0ň*QTU>} dH]O>Sb =`9zc[꺛kIh䍟2UEUMԧ.Y4LV}T*]}0󯗐=m7WyHPQ,$b֬s(1OIeGQ e{/lGDOEbqKSN ߦzU~"ʯ?;߾"D(b H AP\9íۅ,N 5yEU> d=H%Ie -kpߏo;^\Ύ*r+drJwMI%. : z޻ Wt^"4SRuR)[pcﭸu T]xOaZ)dBJUj9%Wk>JVM((կ!AED$=Fd{_^|Ipp0!qV(`[k;FHWTYwơ V8<{Yʡcm K<0>s?}:þy㡩!ImJDZw$ C)~1Ÿe^O1zG?PH SsLŏ ':$35::1޽{]ىelᗲRlaWES-݆K ~t~ۧ:01+sa8b?ede٬$DJehGӰw {/߂F4U6ks.WJGSSg%9 BLd=*J GD’Kre}UZATLMNNbtt'OĶmOb?1V?1OGQ6m0ᆯOEF Ubl)]4dT0~i3F^7T6c K ¥ Ά3-I܂-WmCoGqo>Y}kH1D2is3P?7a~M~d r+T.Yu_ QUT`z"XHPW[ *w$U"H*DսT$ *><1u-܈3z5z!s/jHOtUa$DQU;oH,QFQ%k' ʬFױ;D +,?L\IedDIbDMQ?\72 H*F6_}'h[~+L): ~MMpD+ܙub&CTh*!'CEQ9-UTշ#*A/c TA xٖRD5%KsDU 2 bpT|+ pELC "*[Z Q)00/Ư?#"ʨV% fT$zz / /o3g9c>VV;EeERYwN|0ǝeݱ|?Ax)~ݻcxxe(c/CA ?mwճb0GτX@w@_Ծ;P7$;^TJu~$~KK} iH5aOKI38g 45w-m@k+n6 }7:M+Dˆe\z&ΝvLn]MeU4U*k}۱Gp? ێ?b2=-]ۘs~=wc"L6]2$Mit|w%w] j T1%zv*]Qz2wV0 !ׇ ,^ طo݋'OhVD<~hp 2|P! %̛ǯ_ Qb9DdWJp^=z)ZZɁ۾׽4$Uhn ˚U\&Ft%Οy &鸣965@[[89vS> -+[Hz.l߸OXRH]Ssdb]I)$ A*&uWAHha 'D[F\uNQDYCeRݍall CCC$˯a_1ׄ?8 bշ#HH}&FT,\ :/~AJyUO&zV1tzWVb#i =AR͔TVTUp&PW¬"ǖT&#.ljn1M劤J*, fr.v,sM$czaETУ\>C IY%V*b*9'j EQAA95B "w5Yp֢9V.7N V p`xݷSn:z^x@wwwu':?<bDU$JQRIVTTڅy(7? pԛ IDAT{fgc-sqW4ϡg)NE]E5zx;*s*灦@S3֬839R(Sl|`u#Zp QΤ3CkL훯mKQ Tjr2le{A+B4$ T?RQgX(*ԾP$22AF30JWoUyQ(<΍y]NQJ_y8 ҅?;hj5×Z]T E5HYV1wi ҽeII&TtB>Wb̐T51*TgGYϋ70BĔk(  A#ٿ@!PʽT\(ŏ Q:S"֧W0P !0I-FIJS ?anA.T}k|_ $⣷zEI#4Dؙ)l%Oٶx-YC(OZ1Gp9}DU@*zs{p_)Â:H ꐠgOUTb( °L>Q/n)57QDKn}vm}Dj?-e>HT)Λ Xsȩe<$bw[}ρTnGRYw%,Ie֣Bֈ,-b fEe%O$m|{:/ SէBarDQYmpX΋ eUQS׎lxGe 9$b R QH+Wڟ+ 5b:_ݍ}'OF*ͮyq"DU~g; IŤ+B*߃ #T;o.$fẈxzesͿg[tɔW,Ae%F=U4=N\֧Tr%o}* 2a k[T?Or))Տ KKSTg Kb>U?S"btAhJ*kk(W};d9nx~<++ȩݳ3$ɸJ Q2EUZxX~ɤ\\hɶ8tx=%[0}{vNi>,ϖ3rQTULYLPAD!A3w #QקŽ"xSnw^OԛG`Ƶm)J]PSDU`4[yhWbSƝݩ(C7K =6#R邜EU2izTYdp:Scu#˺ Tb5}=0}^QeH%6* b Wl-IP_ᒙ  g*>8c$UNԙ*+Sc1CaU}*IGPđgP*HW w\/^93NP1q C74d%bm*L *ጤr9y}:&  H$%da^,*[YjX{Qllw;fCw1%oH3 g&=^;,ٖPMx<$A8GQW^fWeݿؕ/*~r bCtJUmH%{!RUWvl`eqV?Hį^#燠+ "AD |PۆGE:FL'L1?;TOAB_V'N=GIj3zsQR6׈Ź8K%Z*h*f;RŢyQ4&R)*C-QZK50JU.)?w%99aBHlwj"h$P5٬x0ŶY?Xq/ Zn @TУ}qǯHxG2Y+SG Un*xo^ BL.oJ1^}4'B2rRK=XJ71PU]**6fgx<TTUnq<  T c?EEt,׍=Safggq}A~AϩA%Tyo^i{*B6W.8;t<_JG5ӧX8X_ *5u.RJraml"gQ?Ek`EEHHj\JE?͌n+d)rMctt~!N16@ -TEoa?Uqwo\D}.XvW?NJc;Ÿt (KPK%/k Tzm$PƸqS .$:w7a~#By8U3\T^pMyf  T q@SO5B* TY;Dh%$;b mڇPsm za:^pR"U6Kmwja }Q*`eE免#.O1a|B\iB&>Y#a, TA qHKP^TS }gy:M%kTE/iPh U.n*?~Q^Y"qppE=WuD1>*V; X T*PEu 1k Ţ.TU*>̈.N7&'Ic~*edO^SՁ T~, Q@`e"XB/Th :@=SA6Wݻ#bhATn*Sp po70BF)T-eʲ;!$NuoTUX\b*&R^^./_ߍG3x"rحx.G&L,&''ۦ*yL~?6 U~kھʯCRqjC'~5k۟TJ,f)R_q*fO@+1}׼Ν)<Tx(LӃtG? zCUxԵJ 7j)M"Ͷ]?Մ)N;|P">P ,TIXY8q_ǿq">\(֨_/K7~fa:H$TTh aPժB;uq[-"T~>^ !9bb?=X) TM##L;# \?Aq4ڔv駚b0b? U㼆"d$NMDۧM]TLяY*At;RP;ypOժn*~GOc-&R=TM⢊5eO.* BU=FH`̫zVz:Q?U+rg}Mœ!?Q\&sܦ.[cC"ÏES68$RA ^2D*??ˊIUTN OST݋&F. #6) rS87U=*cÒc})"7U{mS"YnTɄ5NjS]Vhع3i~xghTNAJU*KOHZ\U}ϒ@EQ7Hj2 U*HiPOO(Ee'eJyW?UbE`q*L.)>gŎ<ڔ33%AD x 3W?Y?]غ)':"@O67W7H1 JAEPqS<&Rō@hT?ꪷ0< > {X1;BUKD$rQAD T-}TVU)Y>)? X?է_"!l*y@H7UHXi:Tb?jʕ"ncf5CJc]ػP(9\t/^ťKWq ܸq 5h@(3gLUtN1T?-֫XL\pי?ǖSCe U.3**A Z'>*?pSVN3g5_P566櫟jS-GwU bG?Y:k,KUo' IPOeVPL٬g?U,&)lأf^B=%9 qn*f>N} g;'uUy~;kՓC:S`~Xh8Is/w VV*p:p:p 03> JeCl%*bUj YC?qDE*@jrUOaQ.]?JG(gI" Z;Y|VnTZUT+PJSMӏ%;| U֓JTUa\Q!3Ou|׉S_[t1E`z_،MA4T`9~ɷp`  .[hHɄ =S2D?G^fFOV~҈qMKeA@U?xʰSvOizE3E |?/p{좇]ؘ}| U>Myn*)9`nw&~2k5G؟ yd2@*`ppoSU9`m-o~sś/<T;)t^bw3cq޽~ 4+HP{~LAtml~N~خ T?0q>c)G $P YtbD4' i]狘jL'J3eG$L`ߣ}:L4SnQA &Hj#xܢ|? T 뙢8юLܖPe"aSt,*3 qS4qH҅M6#y *U`ey|MӀ%wP%E銂T"U__IerƋT|RE&Tm66Ͽm:X/k.,"ڌ;YOF'sSDSVL4#a IDAThW&p F=&T SI$\yiݒBU-T--0v䡎OXDOH(8tc8}$ 2 ʊڱ#)6FEVTA H4$1RAiw!Nb5~#߇q>PA Tmn*؟` Y2`)JL3=%r:9"fC2's(|"<4ʱ0B)K"s)zjud֭p e "Qn~$ǡ\J?8{/NP(cpptUJ&u[^.ԩv(9۾[tpQ8Hr$c$PA Tmʁlaؘ*`uI%L?  q6H>K5U ۮ ঒|Pr_BS>6F=SDǐ;wS/V.QL$JINBQ _:*y@H7Nuj׋}.^岆R wO0K J,SJk<wSb`N E HۛT?߾Q?7oY)EQha¼_T" :,H0EĪ UDg|嚽O@ Fn?PejOa0NB-*EbH088PU ꊆt@Ù A4]\ŀ!N.*E>7y>d:bӺHL+d-qf/*84 {Lq*E}1c~vjQ̏ vH ~+o8""{)ɝXuO߉\Mvɷ !V7d>V-T4S$NaNq L!`}]/*/&|p9RC<7ĩe,~E>_T*z088tZ/S_Y)bzSo?eZGoď  T],DpJ=>ּe58Nj SDG2t5NG&TYH1*mׅ Ua&~#~;f.D;E;b@2ҒJJTtqlKtxTTP'EzLJ?=ӃMXY@*ՃR@*UA =U~}T~SHźZ KώLs?1_[" {ʯX~S0H1pZOrw(rS5C x85ԓ$NEDS)R)_0ǘh{IOO$K$){E*͘-!K$(8y|#qW?8aH}ܔ5aP1"tQ=G V!`6NrO} )*t*_%Z826'&H"K]0E Co80qOcq,ۂbcfKKY34mǜ:9b|rhᢵʸpVؑ0WkQe17Í^ (6gh/BU+H$R(XIN~PeqفB**mnر.\Bbik׊ؾ= dS1Mǵ,3ɝ)_|eEn~! A.`6?4| xf)n"w"f.Arqjp:y:v8۾\\9r'_Gc;"n4J,T:GxCn8.78B2ً%lڴɈUpضm;z{SH&T} DnV$G/JM %#"0$Pu9_4 ]zًB'aZ&N6"<*Qe(8q༈ĩV$!aT MJOOQn+Gg.*Auv@'חF2 h:]$1Rjed}g}]}G wW)m AZ.gSe| X^ A4K{S(2ƂE˄u6)y,c>畮C"T,;"Q)z|jT]EQӫ TY.pP)ϭLss7iR I cHm 4r 55L& |Aar0r' л!a t&r/s[TXjhL )ἶmOq̹,w T0QSaMEQJp?)a埗4 "Lx BTdu=\TA}"vQkILNf/ !pp0ŷ~{@"U0EUteN#@.G+?N'Ktn•؟z)j9/aC;te?@AOOMΦM\nیT*dP ( HLՏ~Ժws[짦}@AmS̯Q] : ) ccŴ9$L=%s *v%1~D2@kBŽ@NToo&~2MT7]5#~P8S(^26mڄdH&UhZ DtQRhYUx|bPS4z k Xv;0EVr3{K|E>"|,c bBQxuH*W(T͞ީ<ǩ*@o_JwP:yd||6m`nnHHD$@2 vkvQGojUnm?G V*YLr@0aGb&rp8NR b!I$ \.s;^D \ҏ8\;>E*顶I g_SN>c 4MEoo})p-l޼4b*b1 sS,5 皒#I@Eⱉ 8w^OUhP zS (1򹳋lڔB*nmsQxH$SZO%Rց^O""$P9⻹ӥB"8˘oȄC(%ϯ 1\AMN(] PMo')ư_U%HUUS@L;8qJ]axx;IꢂEudkTa}yhA{nm#hEH"j('T=?rKDmLLb<\\F渗`ÍdD2CTlZ?J;&j!OSqU2 q}?BGL&UUP1)E'w7??bT:> 3v, 'N*"2fxzb'5#cc"SHXfD/GmrX$/Z-?52] 75_h-X?U[4=CA}?J W^;LpQU/7n@bӳZR.pPQįMq@EԅvR"S>"HG8B@,>`$-{c^9mrG"T-.S5BѾΦmc1J9Nb#Bsg˫dt1?EujtPgZuHz UHy aWBD$yzbwtbrx}jpdl GYADXT>~` 4n 2P@bcn˄9Q!y W'{?uZDrv v(&W2Җ}}(78n`ؑg(B"R|Yo^]A풲9A !]ӊ#1ܫ p DƘE S_n&Dn ˜ԽŏɄ2 nED-Dn*ɐ^ω|kD;qQL7R]iP-,((HF̯TJƆ5wrv5Ee:MXk?.LٶOqF3\SAt6$P-xWA#L<3Vs0EP(J(hևW`ٳ+(Kڊ颊ŪWSky8<%* zϔ`ɫ!Q@E#e'"g ܢpPcNP`>WG.\~*y}SIT j}DpQ\~o"W?``Bi)«/d 7n\.ܺu񸆘q # QoU9{GCINt+6j1)}{T%@EAԍ &N1\bCTŠ(g^N#ќ~b5c2ae^OzvEV ߉lo羣E Ue?;WjS#SX\\ĝwރӧOw3X x<i~?cm"P(T/dw#At$PAuccSy}ŏ0#ʄ* ܘ\氋poPh+ض5d2W)6֋ SR D2 D x,JgsT5>XܞkovA TAD]Db @d`HdC(T En됬e_2W]Q&\Q)T!}EkDs ` KK$ )TlIpRw7ׅF2[vxˆQ焔<0]`,KE*D@AQrW;:~cDb~)G4 g9`cc6p5 mҒ.P]T$PqJ*;NklO#* "rrW0uj@Wbܘy}77\.w1؟{ ds̜APh=SnXT hBe%ZX}\tx<)"!նC#@y 1=mN1U} h_H" "g׫"mJvbBbZ\\~"<^w灙P+#)7b0,)4p PU`mmtMc/I(|% +FIO׾$^xP".* "RL F{/PD|nsY$sգmϼZhHXϳg %@4KEc<4X?7*P(LBQ(fZIjgEt1ʕ-(_qY/e V\ :  HOmf)W_~*_.+y%s/{.W?rh(LkrhtPD)H*)3m?ck IU(ѣ|GsܝB!*yPA.+G? @EAD鞒uDY-yD֢"^K㎿ɔRi*咣 ] BhPTb1(ږ*CUPړBzB"#~XtAt$PAa^b6,s1[ +gkp{2?ͣ8G> S8_>_ę3E<@Q"4+eb*T>wēɔ*U?5ϵQOPw`ՅxݡP#* "2&_8К368"]0 sISCϲ|;d 9~[7 T# Le2)byϡ\mKa G=DSJ `U0Uӳ½.b1GS PuLY~^)2 `s,ck"~=@EADďjJ%]Jc@,|[J%gqQVWZjT ~{*KJ*BUnTWd2 " gO&DQď  |uU< qDO%psq79cko^ Mbt" 81zkf- g:(~M IDATJ%`o-栲dT-URhAU(18l< T4T*VwW:T~)UWy?;N3/SC?H" jb⅓S=|x->@CP{щZؕ߉s\Զm10i]b&T ͞0\QL]TVΣl>g-rYJ%`tJAUhBU;ATdwwP ]At$PA5aDHl#ƍ[?T8 "\C8暿î՝x 1F ##qڂQH TxUn@w)N~0W~=Q c``^jTT[nxn*n 4M34 .?8$LE4󳎉VAt&$PA޹rQV S^~*?.\GGWW;iToROp*PcmK/ã@yݫbL?5G TsP)vJ( KKl?и9%y 8}] * "4/ %>7J䦂ûAewM*P>P4]Qi%vI)E)H" B3uqN@?p/qk2E@?~-A\~`Q TNaW~l{ %qQV e07`&8$"~0c=T.|ASSyE<08Tw߉G˚)Pmlkk}͏*5z>({oؾ "#HOAE%-@EAb7']\gA횯At\g>._[0e}OAwS}!d2)ܩ/#~TŒ7&7l[vZ*G2=ΗNΩtH㎃[P(hfoeX\S[K_oB9xw4%3 ^-J&]Sď  p>B!H$C.BU"ZEKn 7jη0u r?{PEp S_W"{b{lsbAQbKwRY]Ul7U)Ċ{zXϔ>E"ߵ/cǎ=؄^{EZZ_|u)ꠊ}/2p׽TgBv"o(DBA k Dh-g\!Ti)\BSMW{/F'033ǏC6D!L;PFs@2(1ST}pLx]Qta*Ex$1l߾ [WoPа2pIi1Sb*c5'1F?H" aLJFı?xY?WORȼLpq,@-L"~-@EAb򥷄=c6n #TئTHECbL(sZ$Ө=e'"رcD=S͂Z b`G82|DBAOO U* b1<KKKx7Z0ũ% U H~)P4k2Ou-LT G?H" |8g<9>Y D>ANubn/k b|:9DfvmupO`?Q;Vמ)={#= S{4) ݆rr UUដ!!L#D2)*UllhX]F^#ز|HD@AkS-Tc"aLrqk hH& %s񧞔쌎'0cO!=Sg~>c2SP4{eTo]ǿؙG__^q$q YTbRIրժsW~e3h)+Uuj UD7C? BAɗrH:n&c\blA"TquHLl\.?d {hL<S? {ܛ>+<[P-H; T> /]NSzT̈iFyRIC #tgukݭHH*թhMxQI䖢AvH" |a cvl,g \L0BHxGئTH)qS񧼣}n.*>GT큽gX,p8};'˻tEswPi8e?{`>6z VVH$TtU.z-28t(oouǔ eH9"~A* /eps/.B, "s%܄*gWTŖhV8sOa?jZg*kK5> K/zP2~q8}V/HČcCʈ=T"gUEҚ^2OǼ\G(n1?8e?>* $w{4bg>Y,!@?p/qk2\kS5{T-L1F:;},;l>&RU*@܅!{MEt^T]{(G TA'S@x^\*؟eS\!R)7j{,E peŮWEcC4k~=%S;v"Ի( }7^ (ꚪT>蝪p"U,{w-5%6GOj܊['>;HD{AA!=x U~c܀%T5J(I0?x_3S"XjS{d6lÇ}^@[?,GW9qJլw*8|U&=yU*Pď `tA]sW*dϺOe e&j);OU;3%qGuC" )>gPfA ާ8|{ǖ UzFQď  )/>#3 bgK?܅۶cux_El !Ȅ[F)bw{*8U*wZ AϦ[D؈[#n* BH5hbƠd #TئTH U~cl\,bbgJ5 (p{?U\q ҪwcIܻk/(k7bUD3]e>d"~=@EA}n:~A ظ}@7&bRGϜ%Z}m~*cS"DT&Ĉ8vXL(mQYDa nlU)\|ssK?UwT@T8|_E$?E#n* BONA.2؟m^QI쏍 X'u{bɮ=S{L*S(C}@x쑿J(MmY*66"ky"~=@EAK (T\JnJ5 ظ:?6.XW䞲bOխ=S2Sk%2HX?TRUb 8o|gLR ף4h# x^Qď  ?y[ !Tu~I$USjS"X~*{T ?"|)V@pOCtj>JP˒3?Ӆ8>©Sct7 T%@EA8]s}"Ty,u"wH*gWPOx_;_'Su{ϔOOgR&T6tZNTCpUOK@|#C0]؏/^C<>}|y-$wBSVCDOuMQAtzo\ …ˬ ])8 mPqg^POt_岂u&E"Zd۸hqs));L,&''嚽r,O8a{ J vz/)Aeq*]wdlTSjxv?ĩ~:?h 0E$ A9  ?9%\@IU^?㜦Sq0T~b$Ou1LMMaffp8_'b֧!,Cb^DTx:)bUZ^."raƯwV?ԡf)@ǼG?>H" ,LHߏP&1;vݘAթ)_ Uva|r)cC! {O1}TÌJ dӦB؟Aa Y#~D@Aaa To.:Pew q~*:`[m Ouq?~e|H)JPڸ:`zR*C,SR=`ϷC 豿g?AB]&uS7nwa? 0t~[ɲ_LصdDGԮ?xaqPu I7쌎b||ZFⅩVYSSbWU t TfzES1qTw9M], wvv7g-DQ]c(G TA0. ~llrjR5yf^T5S=PMwOE=SY[0' Ÿ?Y\RSJX+jX;wp ;>BwӷݯA?&H" L.ߔ}, yEM&kr\\]D-L<՚$DT;F=S!Y[0mKnT2)UTN 'ړ%KڰJ­G|cB ,'rAe r.+Dw@ApO ?T2uBUXͲ ?ゲxM`栗{Ďzjx`>bE蕲UR9TɾLFslpC~?nm7Jӟ4k%D` ߊoʏ$LH" 7'^;H3/"}O%u0W[(އ8ꆨ*j`LBi}~>@,Y}7^#ާj\RhkJzƆ~?­D68T_ٖwƙO Fw#8('mTOD7@A|e:GO3vd:s&(q1E*TI1kS`]T|~*{T:=b TW JQ+XO8J%Q#0BĨb~Mw܃G~as2\%m=,@w|aW&i@EAHSx?PC6[α_3QKq1&I3p&pw(P{?|~*Ꙋ!U]tJ$>.}CRrJYwQJz119 U~buڅ*E?lZ?ՙ@~ap5hWH""~|/AGOaEGDCA ="R.% advT 5&~0v&T_~*g|ѱ63D$\Lu=[?cFOHGΧλD/ˡ栗{K{KuBVF>†=я=EDAA3wy\tO&eT)B6E6OE=Semgg"'MZZܽ= YW.UJEÏ$Zd?TSw܃3??a[h-εVWI"Xȷl\HYcTN] TA&_}G&]~*Ps p`m;GxHx"gF@@o_5>k0VU8U W?"T SGC_|nbpȶ|W/e颢t/ji6ĭ>h*Uhrt>W T"O@,iϮue*7맚.87Cd IDAT/a/W7)GH5GDwAAD;j\_,DX+']Vuc]QSc?033C:vS-x_<(q)邔ӸU {4K:vH b')@?T{0/!"밭y%;N ˙"I#r.S]Bʶ6/Ϛe;?tٞʝ`.BUwx5OX S,799QUx&"Q{x]Ӡy>MFLցTض^ >KS a/?rs~$kpTuBwH$"~y@ELnpCpdy_xP%{$rUabU5zdwkW=-~=S|?qq_)ڈ* lVi~!R)Zj枲@ݽO ,T t}ya]>FW{{繮ͶS;jŲ7W"! qs$Ibq:~gnS j?{o$uy~Y7($%H$II4=caNLC1;xL^xaEk{;˳;K;,<%" @`"wWu|{YG_U/ t˗vR[c^/%#Ghx"Ѕbӑ#GODǎSjC2bn~ >)N^%5 _ʲh$VOYZ|BK D~7p/$/]ZװPE4q?B *BbN|H SڔT jA>!ͷ6]j=uX"vĉ cdd###e?UTGp4 V`Oԫީ?Uj`{qmD!I;Tweھh BSEK_JY#TI#P".&4J(C~41r3CD{jCML})8*Sj_.}uԥ{*}J?Ula(͝T))ﺬ58u,˗\; H{"#~ TҥSIя!yG~,Hό$N#Tžޚ@r3,v?թSˠx#ba\B0]S%Pjk5i~r%q߫&M) eS,!T91c"fK[/w=1Ĵ##lm(PBH@or UNǒyT[cq: ȺvcjEC>7=Sj))CUazzzĘ U.SzjO: 0&psiT>GGJcX㉩*m]jKBiΨlw#@E!]ʩނK{-@ c=B*B!p'I &nNNBNRNTTpUik׹޼iwT3?S?8榚U`jӝS ",Gy\xƿ76)T֣buiBqdpZ8UP".dlhRHDxߊ(GׁCjU TuG TRvc.7M8S%3c U>L)vE!*BB/!(L-hsBp~<9EsS9~ 7*'|[Iyz?O?~z:I#HF|BU ĥ~Y^[A"@"^EVCX}U=UYe9'e\p D)rMEur8bH"~ØsQ ]N+>ŏ΃!t;AO?҄4ǑgNb(M_o)[P j?i>rt3,GO<-m1O?*(@M>vT")n.(PCJҥBTHs-5ƐgM=o_Ylwq$n!t^z+9)9T6}?U؟N[MXwښS+o.|ڳ|=%|4Z1w=p Ey4v1 UQ؟o8:>Jn3G1@E!]I(.*qFTk7lyn*y,71"zѭ>%[gY\T[U+_{2567 yсROAVrt=UO[^b15rCki :l*:$EH0Gi TEz"SD*\mr :9֜GO; Uikx_trTT[1W"AHl({{*GT9zObVqO/ISKe5p7UXKZk:.1$F"~j>!@E!JBU8W?Unĉ2 Jsiߒ@7~c"]3,~ Z{D_@vO"VoEvPg[|yQT3;uԦW5(rD{JwORS}ZYբ}5=Upb!+ EJlSPe҄*׸ե]3PuY4SmF4(PBH1~gV͞'=?Zy`֪\)ǧ=[:~ÞQO%}@RqB`f =@5})zjvOEOS}]MWJl:)bZ-iLN0G$-ޗ6?B Tud9@cRm#Ty/PZɓZkjx36c,_C, "Q)}"ާ_e`UTVW,TES*ڷ$;>p0\M' LyLYxa_K[/ "Ʉ4@A?B*BF jSSȺ=P&\ơ֚5,Kkőmx5aď(! >>G)nPPiBgNb(KZqL צ/ŨL'8X_~r608S@_+UWh_pO-8ɜOT(Hi׆9u}ZfQВ#+-O& 9J!t!K8$Tu1Ϙ;\?9{iBԈPR?Uʺv:A{[6|g"= 6 { !z EضJ+KWk{JV%PjjM]N& 9\ָ9,=Os9 WSIΧEH'CB+ILtJq]Eӄ뤩?zXgѡT-> k8EzO2!(nJTtOALm]T쯝T˪IPcE s{*B{C=c~nj잪Vb|fM[jJ]70wrYƦG(k9>#~GI!tWnJBm:q]3JI"Ȋ-LݶQ.aFP"-$T0GqSyOLqSɡ}EF*Q!*BjL<1NrSS97::ʞ.O&HWZvB!:<@bׯ]FZSU=UW2'Eu&)-j{MTj<0wrYxhG(NFQ砃΃!t8^9#nfR)$U9fbR#BUQTAG) O :uo!UP(+@!u=tʋsWeTAʢJwOyN>2E#c\..}9ZO0村>׼mҹP"n!ә\z_ PѮTO w\~#,Z\vO SB=;O*ѫ5V'w;pEPs7E _O]Y7~=Wk]^O>tOҩP"g3D2)$U9fbR*hSSx_W.3oLF9rFKVaTXEtaEUf}U0m;>O^Dya.JEʪ,Gr9Hr2Fs 1uv Uq.כ=El"G\(PBH7`ʖT-ov/)m qR G uUz0Q/ !{J TpO;FKV*=ĩVecuݱ{4)yv*XigWYm=xɁ1Ո(E! *B.%֬8WON^ڡ^}?e SF9=wr G upZ` U0+S==@`wĽ~/{VUO T8U^ۏBcK ?{MZqS9֡GMKhyxc!#{@E!H*P!r.1o68sIy*\vFm,3ǚs0rϑ=Ga4ȟo.PubŊ+]cU^*ߋ"&/MVSZ>u,^ap.'M:|Qu"TqS+T^oM{Ϸ_77z)rE-`;1bהR1ҙP"fꔼE - MBr-*75)TuSuYUHuګ?J_o#GlryA"JrߒU*'?cXӌwm,r]K ]>Vgq!F/g]E(%J="! *Bt{E_*Or;pS=ϘՖ~*E?)Lvr򯟓lQRhTzqd 9Bۇ8fp VWje1cI- 9DT}Q>!mH?6v2p |_wesˎzXNAB:ޤ_Sc UY1FqSEUy\`\\wSkei'zN-㗍 B8c#;D?U 0DP]qwB2WYԲ(YV@s8Ou71k)zj_ |z_?ĿhtRN(߼U΃!t09Jኴ_~*u{Tir)}] !k IDAT@Ş)zT &^H=,c֋zwwS7o{O'S Lpprb{|Ar p\?u=S,Go3O+;w=Or X6ҙP"&i T@P: f<׉vqSɿSjYj_~i"eſt$i߯y``a'WK)`2P,/-J|r_E=O랪VO -f(_tS1Mmc8r]\׳ޫ-(NJSeOXY!dCB:qCs{5GO @ČujMgrij{OoZK+잩H;7sIq'!X"2R/P(%rxWz~ֿw8?Հ QOr= =e;tkBU#?s?B TN_&4|䵒ƪ㺉 |f:u3T- T'ML1G֊50r LC@OISA] "q=i.HNچT=(ĩL&L7|ϸKsm4AL]>Z/Tb9ڡS!BB:y-.HLߜ h 'CayTZ/S PѮ%aD bXC?=9IX>|_w--T?B*BP)7/aݤBIOEL*ᦊO\an*$ݴ3Ϙs'yq|:Og7QrtOh)AP(`ppw=&fPVVkQص%Lܘ8qS`nlj%Ty\Q<:y? QLk{ue+S"~YD,I'Ӡ@E!q=%TP-.~LO!@jmQq>Lbc'MZ^߭>YzJ!T+U\z]TWWTT`bjH)Ƚw}T1VI 7)52֘:ᦺ~*aS{iTP"N% cJpA UO%o6C?U^7fJkoI]bU8_H#:*=\Bc;:Qє*-vn%~*Za8}O/7*o>!*BP rQ$TY?yqSEUYkר# ?wAnIKܸHP(J6 oǥ簲TFXJTtO-/!xsht#:Fzk8_D-*Ӏ`Ԗ~*K\ƵӜ[jQbԦ[Mk4⧎ȁ!t(]B yScU)Tf02c@v?뺎2Pڇ0E6GS %m̔(F/b >ڵ7073ZbV* s[uHfDBՉ*N+IW@ĢTv }fap]Z͉O/uasѓ!*BP~p]DwTh S@ G~؟KMS|䵴UW\'ڕM:]~/ F>f,ѿqJcRYٱ;.FBE=SĕITVeZ]VeoqADbRфz)ՒT l)C#5#11+%۪8EԦ 7MOň!Q(PBH%?KRsrU͹r??#GdThDʌj~z=% J^lގ),-Σ^U=$yGcBF?GQJs:e akBߓve7u޷6C?ZG"@E!J3>*78heUc=Tz?UJO#]򺩒G&wg4y?'|"GU1(c %7J{JKqPfP]]5*/̉ =h ;Yjtdj6O\i}-O6Om^#~t!S P0QPʈ a+?*!Mr d]IVS<.^HalFԢ}N"sY^(DUoo/1?7r윪U%,/|μND.#Ob'W6A?VT۲~ c9Ø<S"@E!.2Ŧ$M^kTF SqOl_)O+TY?cF^7KM+TypS?ua<-v|jxR+BAbO 8z"SOEvO=MGhW?T%-+u\N1[ s׹~q R:ґ'[/J"R%<@E!JSJt ^Tb[4K^-:N?؟9#PTWZFw[:vQnrOPT;J}S4qP( +BV{J>{\zJq8yJJŴtjԱߓv襜 tOuŗqK'DQ>;;fqڷ8BȦ!t,{#'op\T~*_~*B #OώQ*_vh_!TӃRO Ke./9U&Z-W*aT8|Tc(rtO$*T8]St!C1RRh;4O>SL d7~ iM=O,!GSAQ U=(PVT>%NU+=Excuma*d:fTvrSYwM۵O :jGď)B Tҡ?9]B]S~*u*j)C"d3v}ߘ(/PU^c}1Uz4q*(XD+KUVLq)Z. >lq!eGpOuPb)R.5:~RyZK)Omb B!GJA +1 QbD7Jkuu|t\|?^ujLTkLGC}6'p :Nbpl ozIH#ɧE? hh_P( Q]]S}U;"S<<%k B׶ZµS*7ԃ#'+)Us-%,6Ƙ~JkԯqpPS݉.ͺ]S3EHCB:]|JQ.T"JAkhB󨿃pp_?_j}B)y>Pe_5G /f\ 8EE^z{cc jjE>bES,g(FזXzilmʣΧ)2˗!L@OI{j_{^VaUjRѾ%`䗼KģJ'{ETÉU)SD#k*[yp:Z).o;x5|lJCx `ń ;!Q=PEA9Ayci`SZ`(*q|;Mґ%{@7 uZ;U)Y$Xs/^{ma,bۀ ._66jt# sy_<3ިク-'tOnr? !>"%SWcR)@6MMSg(߰9fd*k{yx'ds2v<Ϟo@p՜<ׯ +SR*bXD k5w=oeY/3}q/ma>7Ut˅:bqѼT\ߨIYCc}Wq! *BXb|")1S}J rS”أOeI S32cֵ\k :F0v<Sh<07 QW'a(SPΩ&NѾyAXK(Q]ڕ!9$B2cM Ua np֞FC~*;{pg *BDMRQAᒊMIgU{ (VqSJw}MT-0r]$D.](G]ށd{JEfOؾsBk-Z:_Y~*󾗛"JV?S"TґX^(uT4OE!2!B~*T—*SPT<~MC;J!g(׭/>9-^OHtiL4q$"~"p{J9+ڷ,k^ϱzwDP DVT+S+w?ƢnSdt SF@E!”{#qݓ;}ZMV͞!'a]f0ԅ nPj.0w;P߈zTLjuc'km:!;{ ]MvՀ~S>;wH]Ej)Ѿ%`aNDyy`NLU|,t{0)0+bc"*=0ߵ U7"觺w˸r?l![ F!уtqj-7~@ DMS?دh}TvtM޳؟uyc}IŔ\9GҢby0L}R*STaԵh_"`~Q`n11[q9+LnmkʵnϾrZ:ܿK lQ"'E>mwUPf(嬊~Lz/2S9A2.qP*a*b\~3m9L.~wJ C:}U-ڷ Hqj ѾZpBȘ0[$3p}&Y?uiRD-0bcL 0[Zcδ&N/tdsB!B!t (rPmD7)B/@;ƚͅ1ϗmwqkw?Ѹc?̛l?^៻{\׀A_ T}ZxnqJVUO|Ƶ!7)49H=.mX;ZmvO{Bf!t"zࣽE)AtL"<Ѕ&5ڼx9Gײރ=_cH"l='`y=>'T{[H&ũBqDV )R&PRg_ڂCH8%Lۉ_dGVBjG!N`Tϝ'g UtOB#.D D7Qx83zC1'`?==gxŸv djq:1O^Κcƌ@N K#7ſm*ڧNh_ 'V?ouX^"0; |9x^3܈UQB݊ us8Ӭ"!l"$̊H YG∟]cFȠƊVd 7yH݈5:?QevTy\=iJũRIN@ANaRh)N-yˋZԡڻ] 3UcB"g[粷["@E!HBU4bSB,NEB6?!Z5OzP%Qڜx$|7-##TC@V#S;SUSOVJ,N-/ #CEBUZT˱?[TG!NW؟ZS?-@!*B@uaCBU*Jw6~*MJF$E.9L5vSPŚjd-9MzQw(c} q^GXbTzb_yADj-$tDixfKݝt=SxOurc"OE!!t(Gi<( 9F/^WX5”~c9R9tT ;s7r+o [) Q:SS+wj XZfYuBdh.xwR^Ljԍ6i*5:}S^=E!dAB:)BEBbkOtVSSTB;uNKSCӅ*d[)q>}[? 8UPT!ԥ8b}ZQ28/}Q-dl/n>.sw?[cnTvݝM%`Bfg@!dmP-ڽ`  ?!P{CF_9B *=(XahY4Pcc!P4XN(!o@K*,vǩPU7ԧ&c[3uX|)CRӥR)wm IDATd)C?"B*q Y ɹ \fL ]wD@aя0Qc䞏Cč{,&nLe!lV"EtIOe7E$ O=t[5OvWVLT89"d=; } x1dT('T]j@UwOĽSE!NU 87׊+*.;tO26BQ>}700'N< kB!*BPTϔ!TQ|$Tn~*]^뢔C8&#ZOװbqPeg?;>;0y1gt%Nr(Q~KD3?[u>ؼTWmJ{,݃K#ޥ/BȦ!t(aTPe:BUsT(jR?ƂTmL7]n*ӛd(*:8:p (o"!o!;e!.N/]Bt}+]FgY!Ng/ 9c-=ƳlTPrO0}y鱷_~co=S{Bf!t(_T(eS*vSB%TT2"TXQ?K2bȥTM=_!W?m;dOsN'b}dĩe!L--'NxPv#*R~q<@-:FlPo$-w̕}?x7nF?%T=E!d+@B:+ZS%MI&XeSE*Wo[FO0~]M_ĩ>)NştNssJSe`a>z{)U SOǤ >6uGJl9^< g?={BȖ!t0h_fqh?UJ IMSO%~zhDQ7OłtqJg3rEtψΩ"@e;T88vBMM|>6i*5U U7 z?=9_ص BYO(PBHb QTFzTSŎ&3s<~x~*FF2λcO8@A:TOvN q霊WJWR2 Sv2 ,wS%OZwkc~vh_coS)&.xc8psB!kEF/BrP 듃~yrWn$joSJX uG bC Ht '!" 0uɁyϮ>S,I'0λxDl OW5=9U,)) 8UU}˱8U^fĸJL%͘ˆf?[9ֱڴ@mO_ 53w>C Hu1L]/arrK'B Tҡן RN)%@sTn*]IG+i*TGeST*2hAĔ~h}s;B`ׄMz="g8d!jXuS3Ӣ/:*܎MMs1/v1e:jsjUDԞŇBU+9.uמϻ@/bx?/׿IBȦ?B`􈟎3gر?}aߡ8v-Narh7&w{bQ*PF̸_^5ÓJ8b7 7xrTׁ=!!N=8ҧ)Rľ[VsJSs3B{wؕȺ9uXKk^TѾGf ^/8x?B! *BdP<`Kd9f~Hqߔ"a;T0B&}zgͳ!ZYGF~wUzμS}@o_\S*p}u}qjn&mCh#TPx/iuLS.\Tlk B!t0߲ ߿:ersg16BSbsVGJ̵8v41pPɫD.(XaT%Xi7ꇜBRP{;'d?"XL-qʊe:2g;f)/┶$%)!` *_H.cW}'<'IE7e<3,/&.?SBYk(PBH,HH`$`lqR8.݉>2uv?UnQ ᢒg+0jR9J{N}V3puR T_rGRc}9,{fpȗܱ>9zz'%S*[TT^U`f8}"0mMyRp7U!>2@Qj6QN!! t.x,mKE|hivⅽw]uysBOKvS~*WOں5 i)퟿+*3I}{'kO뱞rNX_U:@e85c5؈PѱwZc5jC Z Z("V6zB֖|W* 1xg ydB߇>wۧpi`Gtg(oOr}rčx*:(ǣׁ@@'MDYC}Cpp!~S <5UȾ`,\S!MO r8͏ h}]Ѿ67zGpu_!΂*BtM]HqH8bGS8]㟟/L]GHTp]LǖWh?Uk>4_OF%>ŏ3&UE!>e=zߔzR휲c}[O뛟 8p&œ."k;؟q8j%צ{:v(!4 *B5I A:zҝyRU/ pߎ#˅+&h^?1*SE P1NVS.%0}~.CS8A=b}RJ甌-.sœݚYBU~fjYPB`S]|-Ѿ*FoOpQZ<!@E!# |94t%P]QڴHD}eN9׷qqGb5iYxֿJ.\4~D,CKV.Nq-z] ĒE`E'(V_cg3U]kRZSLmh_,-d?!`!t8qP/Bf?CWWqcxo*O%נ'os%G??eSxӸ{wutbq 4;[aJvO Sė"}8WU}SMS M!N)0Lsas9Ρ~4׻Hkny0gMFF-d?!AE!݀2@?׉~ 9|;o?M+ZT Ok.NEǩɨa3?}=0O%? UԓO>^0|kg>wyg=Ht9^;- ɾ)Ϻ.PIqjuEtK8>zVM[Ed z43yUh_×jS=sdztSBB!tGM@Fnj!n_W>x_.nÿ>t?vH-e?vLƼ+rvA[ $R-e>OwVn~ _N+_bq 6?7^O۹4q*PB9U"}, QjI:gE l.4vں9Y*:cWNT#n*}.)Qh_SL]áB@E!]ChXJ'CӛgOo{ng)Dy+(e R> r}nJGaLi>Gũ.~ wu|2)89kVnZU SJ\SK܌l/H[Z_ UMy,cWJ*.֟l}YH"Bt#.>s/~ŷVr;ᑅo ̈b\J C܌suɀ( sDe%FOb@>)^rS)!,H"P;t 8_^|)}Yo @iv 8/dT^^ ]֥?I}r윚\} ;t}aqwlƃi?Ϝ.d~9&U}iL_3Fx8_<B@E!BHRBՑE|uFDN  HFOP<*!ZYchf ֦~X #꧒O#A”biNb-̄.@<]S\b}uoZ)霚y#b3JUވ~*d Py9t!@;lh_QTBt(PBH[[@)_Ñ".-; DL(p MA #!K+LTjڍc4?}3*Y֚qiP_wW)ѪTٲ|O򥱴}' " $Pk_OU'8Z#NUVş07 6 m +*Mrl9kk T>ov xǧS:e}i>&.xc_PE!] *B2:sG*( q41FݼuB8?uHrnM`OMHB7*ה.NUU9, qj`^ltORN(M]05!@9ES;ߖhߎ^k[SB@E!ƀ1>[,%T!@%*IS6G2XS0S>y~m\c9&+#}}@*h XsJS7*֧ĩY۾8 ٮ0c_x[r_^*mc+.21ovԺ{S}iT2G!]*BP0uE>|_1p$3Ħ(nN~*q>^T&)CD뢊or7t).SX޾3:μ!>oJsM׮ʪtNɾI}}sJ^҄<"VdtOsSik8#TMFS@gG`?!t!8_:98~m`n*LݓL^ۂOx(3!fIWZdkT`Ws"0?_:fԋn)PќwR"{7}8գC,5 (C_,ןx|"Ci1}]NmsN&37w+BkO̓'B3Zge TM3=SK=%\ٹKtC@O ӷ&Ī݁]W霂)Ǿ[Fz)o@X?ufSVԊ,C"C?'1g,%BrtX@*p-!ϼh6; ̵;5lEҘ(wQ UҁP"8q9oɛN]2zLP$c 5O9|“<\OEL-pe.!$H^#Hwbl!ٛ+SEjRO[O[kjpSH =>#ƄD,=BU~ǦW\+Te x6Sϥ<>y:OOE!*B¸zTo}c4L@h 6YTb:ØehcpHcAWOUB3֠ٞbl)M}B`)O+?"fŜ0μ)ҷc5-5aJSJ CrM2tZZ8c'p 5>'hOѹSHsSi=BUepSA{̝"~*B,(PB3CMJ7`Z{.X rS4qE$_E~*CJ駊TJ$LLKqWLpO{L+H7wQ^)rMkTyQSs3G\u\ZpLE/\R]=Kw<'oW)W1ڗSBHABx{m?AF3^X~*%)D9iǩɨa3?yhgv,%%N)S)C$^ IDAT]]>]pMuV>9MEԂpM-.?oJ>>'M ;B׍(S !B(leSMzg"-*B"#c|҄*O?UѥSIT5hTwO֟ /1fl ,/OZGPᚂa2ҧ ElqJZ]S+Z %T;kOs[OBU}pk krnEbB&!d 0::PT#bQ 'eڙ؂ `Yo衊ǢW+T`ͅ5ϥZ\TTB^z#GlvS;U,ƥshS{JM `^ó>]O[5ԷMmM%P_8*HSdv4sBdS97k^->WΡW]j_֖w?3w>" T{xsԏހO0UMD(@Kִ$fljtNe i*#^T%JX hGOTyOI>RJlOToڶީ|jZb"*BD=S###-|ܶ_3 K4gx USi R4eHng8oξ]" )tde-TtwQdIDU"[U%NR\hIwmŦCǒ퓥YIHQm&%(|۾OLw|?U~gf ߷c1!IW;ȝ*H#gOb t12< \6ȩ]!]\9]țkiF B bUAT7 7úÎ* pi-9)}V?cY|稣FEׯ5*+e\v̄uX@cΧ !FF(Y9UPT S: 1vx5!^v2r*HϴvuAz$o8nm :TMʩ`>! *BIbJRzudHԫ|xڶ."5DJr^Rl(R*Lbo} x3/Ԯ*rU!]XdH L7V1%ɱf 2;`a -*bʝx荎!Svm0Tc^1#lgUvC6TKtCa<gVH#Re<߂MtnL bsxDTN ;!Xʩ׬O n vt8ɼ={_9:a2',*(LUGiWTEXny󩂪nLr `T0SդF!!/I12waS !PqH9Ш~{]ʧҷl:+j޿oEqVΔF="} E/}|CPYjkRѫ<ώsO]";~w)?*HV!INTudXI`yv6*b-oUॷbS̝J'j>ձܽs<_AJK#Bz@9S͘=|=gBJPGjX"|󡲗Ty;[ͧGgUt;gJe#ǫ*Sbj*ޱYTBٶlnJK{a1U-DQTHȧ Zw+/[S9|C#,("Q"bɧgf>:~Ƽ3T |~s3#7%jJ>)+ JT *ϋ;] G{x"VNS$OPR82ڠ~m#sRsΡ|{3fPy¶?B2T%R3DX:PvMTYjOTN#,5];J30 "S+^L+r%'wjhH+S9J(,sl{}nWc@(&qQ^nhDH;>ϰn1 z mX6y|r*,}{ 3fP{P=_ҷ^!-T3i̙j=?ǟ"nrRE8ߩRy!Sl:Rζ*mxC-⒟KՏRTs+ UOeP(0ȩx@s9e':Lm|}.}>$LIMOReŕO&z)1ʩ.atwc2 VQu׿Z=x/! +!Cr){ލo+UTn;MTj9_ljOeS9S)/Aggz/*$T@1rjȹc_Q D{*4t1Rʶz1e<+{ʩ̧ QQ,ܩTqzrYTj!$(!37`ǯ%PUɣ iJ%8-kl|* jSgC3w[Vʹ9IqwPc"Tw+S;j)e#(]X Tue۲|D&`U+c۟%IqSՔ6`6pQ9fM"JŚ2Kg_" EoԶ?SBH|^!dJE9s˼{!ܓC56*e8MS?8MB2kkkl:m7沕}xc^wmqN,[;ktm I`X=U`r?0: (S,MNZ`+2JQ %mӶ*\{mS{aTA'j۟\o$Ҕ^SEX νl>Mʩ&(+IBG!MT*XYY{1r_˯A>m)l:|w зqu, ^[P?[E\dN~'NJt cX;p=6E!NpҰS9UߩJ)=cJSeU\A a']'Rt2<5ljUIi2;fZ[1w(`Oܩ .~QT3fʲGiVPBHRL?FE[vV:!*[ b03̘( jӊQe^LXUHC;֮^]wwWQ*;E)]@յ UVA!suoT0nN2U&UIk'?4[VyrtOUȑRTBH+PPB777zNyF|SE%iH|ж?4ΕsPzΧjTx'`*ƶ4S[]RIOP\P>OdAT䱿yrqPtD ڿ±cOȑqEgOzi:(!ASǏv ֿ|#ɕK +MX!UT'UZ5ϧR`,GBSa7dnbΔZ>ϧކA 9SplU`Dh+D OJ$qW>lc]L2K=/J# l`h 2T,S4ӊ2VSqJ$Ҕqe2-%Qt)j|r$ >z#G^ıc8{vB4(!vAS*Y,~iǾ(**hl9|uy^Ol;H!&mP\*,k_R82j%P9tlsMr`m:;(]&{] C@!7 ]S*P]s2J ?,7O@QWN?EU[w4*0 Uxo&m"r$ٳq;cVG! I' 43aP̓'K1϶ZvO3ͥlks{ [qK9۝y$mAiəlחր}~:>4䭚mwR6 RRU$TQUkܡ$lep&|MM|UI1:kE^ظa̸&M5Z\^+ۂSK!*^1~?r9"bH:!XAEH3QETGni P =T6*'u.m[OeSuɧP.^!:i;x36GWl{SP,5=S*JP5`wWŕz4~te|KT.T-[LmuzRSOE9ERmX]T@AE83 wrVμW]䳊*qU&A"T}^EfT>ebe܇wrUZ~MhEru`$|RJn.j)(m[\Ȉ kK))J.y)4S$ݘ}E!=200g}G1} *TV>*4˧7$m[Դ ;{OX9m7ܩ!!(UB5#*vneIDiҰQ6Z&סɡЪf$D~]Z<זcꤐ$q㹨AF)*\׈ޱt=SjߵBH3AE{*0g*7OB|ȕ"-C`SN~B:*Mbjm6M4wBܭpZjog[n6=-{!xeP*5 )`g U@}sjor`>FYK!t<7C^ePS=̵1"-zT\fT,߃JVΜ[dy>Z$ǂ*j&6Z>i>UbT̡JC;FiS#Cdk۵C)QT9SB`mo9cRH9U5!ШRn:n`l xiR=嫦czx`ZSEOP5 cqwD/RNlzΞ1PPBLu8_gDr?cJ0HTR D?5ŵSM/rR#&&h LLmnykTl<4$*&!$ft(H\DUqRrLDQej\tmϛxgX<irT5 kz+m}Sרm̧" TB͙b;_gavF*0aլ <B*As XcHO;}Xtdооr{"}gpiMȩPp@1 } t9婦ks i&L2H3U%Ӆ* t֦?,8S?@71:)RTɶ?SB *BH_Q8T϶%Z N)FƇY[s rry GTx n/Vx(Q11TfikbɕFW+Mo , y1>:/@9D<S5cI "þ{I SaeV W4S]s6MDng+ScI au6WT9b&!$ *BHaT2|c9IsJnk!|*K7`jVEt;P k{&9,="HZ, 8{ƙہ mwcd)C-\O|?}u jcc, k Lj؂)*(T=ZNo"U[UV!eZoКpr j>ձc8vlmCAE̙J ?*/Y!*EZ+uͤR& W ʇ9b;gxTILF͡o\L f3J%$U:)ҦYfTm>k 9J>UXuzMϘ.BLGSgUBwӈ)%Ξݏ~폢U(!Ao盛KzIO}C!v}[ '5IX PBm&Q$ʒQn< I/%366=^v*v *K+@ WE୞2\$<'D\EVm'ti^K/!G¡COE$TTÜS&|}@H*$-C2iV IDAT>X7>t* +E"E#~a;Tp'6|./1yI D$ ڑVQT) $)JAyPү'ǚH):\;l|ItQ)BB`>!$PPBRIZ2Le-1;s+/uF1T%cL9UmuxT [zQjK"gjmt "6CAU$݆0H${^9VQD~ SUhZھZch*r>m2*}Q^B|qC9ES>գa5!$PPBRsK㿈p}UR;#pDȨ6^mZпQTr΋܆ANuVkoI PREUQ W$22Lc yjOu !mSf(!aii9SKo!`gSq?C;!61ݶ=aȯ) +O=ɧP󎞉))Fǵ#ʛn6=E UJQ[dR7¤U8dMwӥo-WXH2tuMV|L]Nyʵ@}(`ʧzѻ^!PPBG͙b;_҇P/v?O*pTUp7B&FE4!9K>vql94ߛW. }_G VTP^+`_MF{+T1IfʷuCکvONMF/5LUTnhT7MTM\JjimL !URI&;`E8CkqVhq-*taˢDD"L̳:~i4SףU_"ˬކg 7puʫ{&ƀBA0ز2|QTWd!0|_2 *WdaGY=ϧҤ*fJ{uDʬzSDGϧ:t"!=!!IZҒ~qʩio5^v;.>l6PQ~aچ2&ð 6lq;o`(TstAqG 9NqZ{_|nkS6sLss)gό^5A@}T׮\7h?zAԯo60.+SGǎر'qЅWEgXAE9SDEʏ^T=ʆbAۍϽ|*_ Rk"mwm`dLGZMe!$v,[BZDSr|%*/TqK@./Y\e[_=Oט^lϞdoJb]GyO~~ ϰl;ZͮgnȵoX.A9ER|-?С :{v#׿dݟ/!!-3E_V$UYbʴ(*LXyƻmgcxWEU%T\s,KN,ȨVDU4*®^#`7E_[PN8j Om"!%ժ{g>L8Yӯc+U U0˪&T\KQF9n9_!8/#J@R 2o|9CQAt_HqVOX"=d>| yTTH0g _xdET9)L@ݬ V3QMbϮv/̲JV:u0m@tَQNLEFu[a? ٪T]bc8յ`AAǎ=C.ZJTz= *B *BHS3EzJo^'*I3TRUJU[4bݕVy^#lk5i ky))(:mo{GV/`i{!!$5g|$ XJ_ 6BdzLێ"ȧOϮxߋ*zNTM OFn:W9Զ}mfMl^F7"݀sdU| T^ZTT̙"irG8\R:ɧ Tph)J_?|n5PI<dOT5[om4yCR"0oΐcqTP"ɚ^pݵ rPNnAA9zH*NGAEH@AEqsGŸ% GTԪ*cAN7H+"?bX:(bgZS"J]'aoz}u_}@7"݄sLw񛙙B|W>!!sH6!XᏅ%U SN}oJ>8{*9̧6kx VM霿 6TcT]TuOEAEH@AEȀÜ)E* @Ȧʙ$ e4k!!777i?j*J fUT]̧Or Z h'`++Wqɩf+h^vu-*:v85PPuNA%? *B *B L~o>'yEUTQU m瀯 <0%ׯTȫ׶;U(t웮)T"sZT:ʧ""dP?N1E O>T̰ƹ O%kmQΉPo1vL [WnEZd^4a^?+U"I@A9 *~@? *B *BLA"0*g5deUɪ&+ij9 ~:YU˧PNyDOX Nkmno^0tTӮOEAEH@AEHÜ)2Ȉ| P+*b>UP%UDi*'=1X|$'5Qٶ?u;j&QTmHk (HPPuNJ%O~`iiSl#—_g;=8*톤톤I@x-6/_f;oHPmoqXnF}9a~a9Q9-oٍq gvhlo -1-muN `^|K6]hx `{CSKKOTss?j(WXAEH)2T*P/I3TRUW?mURirN*P6u*p.mW.2`JS)Hn *?'PPAԜ)~X%r֫1|߮S Jn#DVǴmUT}+*Tas,ZjJn:W9vw|䔄mPPuN 2wcB *B2sH?TJ*m*R>" Ik%пTF*^VP]"Đ7UPPuN7 "$PP3E=8a߽ \+ԪH-AeYBPCP$F|렅*q*j7jg[mkMZm PPuNR ߛ 2T/AdHR N_S9Tr]ȧIY{'mTM圎^UVΥm7S@[-}T$6(:'IA%QE;TtO>'w'#-{I?YJU? J5IR@R׀oY_W>kPu|Y&uCNJfs)n\֯.R,*$˰UAPIwjB!]ǟ?! X,P("W~O|U\w kwXIŖ(0 UQP6!i.|]9U(`Y9X˲p?w!٤R9/GR@vŔOWSyWQTV=}{M#J%W~mrNm" c[ww͍TZ|**TVA%᝱ I'T?BN P,ʩ\.#8_{p$٠R9J9,.~/l)ᛁ< MV=ד{="={ZQP_S@N[nz@-}Q`>i I0tAAEH9 JaEr)۶O}9S$,,|=)|d߽"W$U+ra-x_$ZEX{&z ǻOՆl۟Ar*InH(:'+J|*BA)(oC4BaȭbJS ۶ZΕw1%y`}[I#lˇIo_l灉} EVlET_cc%UyAs(j^ٷƸ-M3|wr~Z/s8ķ"xs󩖗y"BTO|G1<<,Ķz3 ޿tVΠ)~'*[ZגTbĤT`SOj*uRL.CFcg^E[ Z I *B:'?Q TFଡ଼:[Tu6l۶'{> ){@ $U>)~'+hoJO*NTEl׀mdjUDs,$!x'?1J "lã!:~WLՐA#j)b*}zEUP>^Eu _&!XSTUQl'wG> mDBA9 m̧"706y'==ib m|u_T^w!]"j)[T95JTB0.va0uVqHdմ˧ {mΧrkS@&eUJQEqa>!=TɡCسgi+8w )PŔm_O_K%>&j)b]S TjE5U*cr9QMU#j怐S5BN?\/Oz=m +:_*tԶ?S?" ~?{'0<<\.\.Ru5eZ1Vp{~E_Z ~wiBNVĔ}(uI{hU, PN}ihR8圸*BK!l)}\5ιm\z"0qT!rr슪jʶ?BbT?!_=Rip^1˨ƣqqw"DRL wsuYUuM໕WLqk**>ȩUl`` *S?T?!_F4|>nTVGȨ]ELz䔔Ys7n/ */,,| s)VMua`>!|_RObQ\^TzѯmQQs4Gw苛7PPu *IZ2)TD_0,Ҥ.vwkvwB{{O/8T> (P(*T9oEyJ+mNO%wwә+eO'̧(:gTt!8qb]`kk ;;.lTEٸn(*ST뎘<Dx򩤤R*:fҫN *_۟a0s!γ"VM DA%YZZb!mBAEH|rKBXDV&67ױ-޻pwömv=]/ªtp[J*UT9o%) UAi{ ( B>|*9RBNT-*z UPPa>!PPTRVQV;RAFOTV!F TyGyЏ~tz0S=TA"H>Jm S@QM(:*=NH *J2ظhՏ^1djuʩ=WMI)SD_?J*O%E5IzU$PL%UPP5G|*BT$tREUVqwT$LLe5* BOS؅T=YQMty 8Ϳ.P p~BQ(:*:̧"Kd@:fIZ陘;^; `8bJI!%= Tf_.]LzE$)z~(:5?SAj I=SY͚Cժ)),YS/9T}LI5PPLeBA9T|*2PPcii 333&b nKiv>ZJoӱD%ՠ0|O?PLe Ρ SABH u tn;.$rV<IPIWBT_Q<8^q xmdP".7u%xCTPŔ|+>T/WJz%$( ΡSABb$11ŖVԇ sՔ|Ԝ+tդaSBTl2zV)`)%UPPOZ2BbR9/ce_ .GY`lҫ |䠠 |*PPPTPVVΫ**fffXJzJb ^K!!TPK.lóIL̩\0ה5r^j(zUPPul#IKKKr2_/hJ $.ɩk^ޖb*| Surj;/+Ӽu;7U ḨTCAOEAN )aii)Zjee`zz +$Kb9S,!Ԫ)UN5Srt9` &(<X?DQ$"X?y'223397jyym$PPDV%*v n[NNv D4h^5UwĔojJʩ`0ɥ.2affn ?F$sPPDT*_" h.dH`s iJ͖+|Y)$L|jԺsݿݥoPTuexRcvmcGP.Q.eAAEC%/TLْS.G}RNI))'jbjBLI9N(RKȶ?*BlT*?sF(HbTU%̈́SRq?E$|@6^OfMrJ}D ʙRAH{)!!H4X)Ezɫ9Ͷ?B̧m̧"$̌Q@۲))^jJYSRF۪Χ>"D;߾.Ae #*(PJm̧"ȶ?S,@AEKQ :GS$NOCLٓSހBySaUS@L|ҫ`{/8 ]jg`:{ G)_Hz5`>!Č̢ROEI2_]R'ɢzTڅRjjR]턤Bל~RH&TOS폤 **ZbTI&6SCS_JEi+c]~}$R~VRH1ܜdBt|* (Hj)MR'ɲ*+ݡOAbjtNɚU*XE5jCI 2jii +++Vl#BAERC+w?EڣR9G#eɢAUS9}zK|USCг.F຤JP"ιm5SBSKS~"PtSBtfff0??|*T$0Ejǁ I":RNATN^9?t9 o*6kޡB!&OE iOfT*`Yr*.2UNIL9Sj)!ԺswrBz̧Z?y5BR?X^^R "} I S *\tz[ɩW!*)<UKySrz9E!笟K]ιBI 28s } *JӫժzSD%US@k2j"s*w+Lj BLm@MD!$GQEQTXYYbG7"Dr 'T*T*))"I}M90 kS+Z= ][~.&B!mrǏczzm"q@AERܜ'KGonDM9eF/:мrJm}RN@ȩ=]~MBbUSBlʚ+mD!@Sn)t,BtGENXYYLOOzjLK$koBbT9xv> `vnOSEPNBH¶?BO|* +HjQV177דt> {!$~>O)T9!,]S-SȶK]Lz)Q.1??i * *+Y&JܥO%k[BIc^9x3 ĔE%3 *JݗA!$=G^s<BR**  +H4+rjzz5 T*P.:{r Ȟz Aw҇Ƹ]rjS20S9sT+H?~J#ժjbjpTNe+]%Krj"*6DuqrVT9uk_ !t|*B OEo5x08SYʝц9)KSu)hp3(!4eU\z"!.2jvvgΜ" VPBR9/gWNْS;j)MN貵`nTNM 'f>!G\F\S1x0"$B$Y EUSj(cʜrʶݨrj Bz]כA!mE1a!􅜺tr6 S+}p+۩e[6?uLuB[O^G^ɫI/dXZZJvQkPPBzJ)t+.u)}.u9 Fk6^B!!:̧ GCWZkDTBNYkrܲ,X(}7B|^!$%Tjm}+!=olmAT9)֧GL,`]GN:0ۗC!d9Ͷ?BrkV.t !T*`Y?z*}`e吳?"6#!!GTgΜ22!kE-ʝD)TNY9 ȟR]srJSBHESB<`~~XYYa>U"tS^C{s weT ؎uB!2c^ !$Eeczz+++l T;9dzJFS*ܩ|. Snk̜ZB!)!TŤ@!Se *BHZ0DUŔ/\.\.TNa:S;nȞ"BRD*&vƟJz5 ̧&TK9d+bnAk_qLTOazzj@9E!$դ&j>?;\W\ !)T酂 SNeoBU"m0?~{BOŶBAErXYy.eOւm4TJk ڗnM)ڷ")d_ODl3)w=7~~S>IT[9dz_@P.j5eT d_!/xpwx0Mj(B+4vƟB_1rrJ+++XYY133VPBڢ`t!rhTO)˩B>S;u@fO (B!]%|"stBG\ǙO(!-r*k}= GW{>zP@4zN n]N%B!|*3/30!O,T{9QO)!FT.C좾[vnSNB{"S3㙈;̧JfPB"S 9)ާ1{ nlu1O %BI3j>SރmLE&I=z>UZE\f>Ua!$)=I/LfLNB*)WNYJaagksmw/BH9h0g*XEEH&TO(!M9f,ʂ){ * ߃\.-wD{)B!ɫL5΍_E!S9slTPJNe-݂ȖQoVO cb$67n6X=E! -fff0??Y0 PPB(9dz UOJT=S{'TuԶўBhXEEH6)˘4VVV#T#'x>YAek=CVOY( cks[DT'&BSI/&`>U\PPB ޗ'o8=z uؖ zlB!YI/3RT̙3X\\d>U(!w>UO */)eY(x~766ֱۮzBI")̧!@˩I=qkY,+2Ξ}[`%BHNHcʧ"^(pVN G// *905u?+?bw{v"BR |:x&BrI/!YXAVGs\eP'n)lo^3{BIT 333TXAEȀ EW`0D*$j)˲P(~|懸r`!&vPPB *BJ2el+h:OY\Gz66mbB!$ s! !@N6);_S, Сqw۰)!6?B CAEȀ1Sp\Oz! H.Wq̏P۟BI!TAQ ;S^H+p\./> Ql'BRs! ?2 0w PnoZ9H,˩k:!^z4%BH"PP2T*;00y)ѕX?X ܏-lQPB!ie(.]=Iz)S(cNX<Nz) s@ "eL%6Ϸ`Y@>Ǎ6jv=z:!Bzy켌K~2PPPҧ|3Ÿ9rd 5r 9`bKj!Ø.)KP,=o˛†MAE! ULpA I//gll`m@+JSYx9ɲao>B!$Lí 0:z_ #AAEHp*>ه䓫`)@ TBPez ֻZssXFGοPPB!gGPI׿3t #?Bx>&xk%GBN/(-|qYI "BÇ%BHLPPa>q뭷{> !)X\L% ]wOT]w=ʕX!B&WO%xUzgNz)"$8! YS:-z#J*˲pz_Bmˁg?ܞ8dBH*"$C8־ ; AOI9Ӊ#Jھ[r9::Kޤ"BBoa۟ 3g'R Drv/IS` wR%Q|Rmz87-xSDDD_+~P5K:v;E?U"R@%2aʢnj*Nlzrn`9a R~*7#Gq^~*|)LeYZZ6Yeg_wk~Za0RDDDXq=S;Kő1=e Op*98ߞ%6rT2Zm"yUډI/?U"SDsύcjMOE*= T$'K>&UY˝;X]^^ӥ3TG8xC|E9|?ɓO_s*]d3eSPyp]OOU5*G<N۠+I/p}.ZWwO\盌I7Jd4P i=SY4=eq>)}AP | RUDf!/=7Yu?xzvbgΜڟ_l"1ɞ,Җ)hOuOU5kJ]eUz+]ztȸSG0qT O>}S&5)pU!|)`AFAZ! IkYldiZt;̆N \@Σ}P?S@%35u4MOE-xɀʽMOUGvnNz_rwQm|i,n;oq];f}}YS* ~/` ՚r_^|>c\TѤh&" .JTf6tţG'y""""*DJ$!3:_Z޿).Sɫmڿk8 a7%crjК_=TrM]DDD ~Ӥ(ٚ*X=SYZ9}yF }]iWvׁtP]T*HoꡊX__>z\ 1E婟J$*y](DT}:/NE**$Upk|`TzK a j~W"W~*MS8 df%(pSOͣBO^OO㦧/j,aq-.ыZqPL*ZT.[~/W VuA++.v秨*l.K4Aeظ #WbQDDDdE>NS̪MdgNvcEVxcȓep)J2uITȑ{hWiVu@mG?6w迚_5p*df6.wVp~G/"""i8>ՏJf* E{SM=AZrtp⮻֭%:vP'tj/Wr,秨/YF,߹\CE"""Ek4_Jf*)iRɨJ_ jラ5o)U[,W*=A *"tZLgJf*)i%ϓTo^;zJu6o CCw_z ,Q]&|"""-Cdw<[T2+PILSTVD>RuOEdwO>00?.|n?&5]*9=좂p*ct FY1꧒S@%g*4ƏՠJwKZ+f/C/mzRɐF,+`% C+-HDDD 3gjOJILdԴNM%Mh *zS5zܹZ ktOe?C*_>h/ EeY__T@%""R$ƪ"}p\SP%eJgKL.^ann\znwވQ2T7/AOeT-!uwH!D?D,>ڟ*JgjҦ}x /AEC\a5Kʰw3OO~o)*C_H^1)*BzD̙꧒JJYz)ø Ꟃ>0TcnqQ®P}t egS~/t]TjJc@'"""j"zޭ~*f d*g*KYƌOP%APyҥiV2pz ;/2x/9E^Ekk4kJDD$o&RԤ[T2PIᕭgj/1ֳ1=)?a럚g9/LӎQ)}!nLT6YU#ƀ.?OMTϿO%FֹsJ35HU۫ J?9տ;v.NrLQݠ ]T)*)*zkz>?PMԬ~*MSI)I͒g{UzdOPyʘjO|˗~j!K&Y6O6hx#*uMQ"!2:v?):5J<\W,--}PZl?yhgq^yMVVnc{2A,&"\ƷnXN/;l\ѯޡqIk}u {ZZZdazއ11~'xů}8"}4A%p;pJ/==^z_Ck_{V6pduz_UFeC5js;LNETR$ $W35HY/ss~OmlA~Qovv e ঠ|ZK|* #L0]DDdPbO%EJr1=S2>HOPcժ0'm\y( \ m6'҅6 -vjU["""Jr~*)T2qOԩʢ)pI6q CkܹssSR; |P^տ*jEcBDDd`!cddt>~*I^/35|V?jc j˴۫XºgOU+U`6DݐQizJ į)IS@%cLekfR *Wz6;t]C k wž ӓ~pwQEJVDDDɬiz*O:vYD)ILiov{ 6y:ܺu(]_,!2p JTYSTAqUzе0!DžX>`~OAL!c)ٹ&YfWp-Lk~/OQ)tYzqEյ]L"""cD~*CFJ=SQ!cI{Y~EwY;XǀL!wpP[ ӻۉ4v9&"""ٺ`Z+dPHgJnT@ɘwyޟ{q<0=RURV!Ѕa/DvGT2j={9ґ!g[A`8qɕ+}x\Q=k_U˖D D=h,-aazއ1UɓO_p4A%NR=ģL ._^b(eMzS>GUeJ` UEDDd4=%%qH(;wA=S2"^?!5׉ =q50)x_#U迲_z>%Џ=1ڟ!;{Nz>C)1& ?Aܾ}nw)[H+z}]Sj>4#DDDdWFP)8uySɮJvD=S29>J^7PT8|&&uQ=O;_~ʳT:B {xZDKTlI=S2[MPtĽHj}(kk-hsGծ|ߥw"STNdשׁŏo~aD+ّu0٠~**ɤ)mS8v }w;|  taz:9a*!U%|AFɶLd'PILMґW)fI o2+%m \al_$UUʰ1Ie'""";a5=UT:??SV/ pYNRהLRmی177 *[zWK)Z96B*۵خD"""yH|?$M)I>v:=nװHQI;Ԡ*P@+Rѵ0DH5MO$?U)a~Oo5kae8ܾ}{g<8mudC:'B |]I*|l<ؗ?6)3gjOT3)3u|ZY$ndofΝ[-'(gH6>n)Y'|H僪d@CdgU3~B*lwMOMï)m fzޗ!>zH@Ȕ L:^Z3 >u+MO^/ƗʇT8]!Hϲ~&N KTMՌPϔ~ٍNåK0?`,G?E.^l]ç:|qB*~>~٤3%)|Zv bm4<qY!~YT~o.dH*F$"24S͖j sZ哢})=7EE!W}}h]ln|U>d}"v`1\mQDD}"ϯ</ռGHT%NI%};NYk۷oq}0ivq%?oxh^hK@)YbN&Tsv$k]HaOSU]O$ Z+9T%rLYe.KU>ژ3!ʻ sk*y>IUa/~hODDfOQ@Ugԩ>!AaU?k#^}IfO&%ܘ'|qz~j='""epJdNz^T%))n>H'"\arODťvb"0IAW4Ijq9)kyQ?U9(2~O=Sӭڗ!D2YkysFc?qfe^ B0B:e;]!/OW6EDD@J̙Zb DgJSSӯ>'k*>Ro$WVViVw8AunWK{WVۅTI*_^!qc}yz̺zDDdʍȎ<}?UG8}9VTkk-VVrX~$IiAgJfW2ޗ^ Gt]~Ǎ;#>MK]`+J%|'W6週Zc}n|EDS;wA=S2ÒS\dl^E!Kw ծ=)*Y2.^KTuz!Ur?vī]k7t)ZObP@3uyH.?=UR"_FV^bcy=TIRBȘx*Y5!U7qu$~.n}i*JEPԨUuu٣qMNDrp*uP'ғ |j*QP|}ܸ4øoBOŶX3`ϖu}YUb6n"YQMzWldDD@PPY4DDDJ*Ҹ(E$MPMn|PHRV2~q0r=zΟrTB}BX=Ƚ4Uro&:4*zTJ6S?dhj3%2wp'")kn°ˍ8thaO{iBf&ŮYlwR/5TYk_~|$_'\He#-bNDDfwSHjP_Sϔnd'7xZ7Et} &7Ehf `R]ж. f#!.J_χT1xtU<YlV%hGL=fokzJdZ9sVkc=JLijJ5w^}E`"K1vIMQ<5c!Yv,X1b0Y!vT6pa룪!UTn""k3>zȔk FGg{pYS>J`*v;۫ ]쉠 5ގk"jk IDATLn/ !+z̤IS*O|PS@ gJ|"6ٍɓ_UEܹs.'#l;.A%*}x* \Urz*4EC*'"0®'""+p^fgΜU?)zD)+Cտgn3??N1!* oZVV0A`k\@P U`T_H*_U*BK !S׏G;IEdO{ռ`;w3gjOF^Q pO*S D*bmm T 6^緕)n<}~~"`DƂ`l_fYVq6 `?zݿm ,MHT.w4=U 6k'O> /|'|"C 63%sWP@{" " +i䧨Oz8fDEPTjO`RߒS[MS Z7ۻ_ 5""R~W컚* *1S G]PϔD]?T5t6@.uk}#o+wB]l'TTkn`jln!ƺ_bϗWҫ> ݕµ.P}T""c8CDd2|?*L:|އ"3AW_nMPYB+ۜCs{{#"\ :j:ZcWbXl{TtPe6dTuٛTa7F꼶EDJ+p^TqhOԩOu'e_k Ҫ.*us"8"ڪ@}T""eYj$^|yNh 3u D O],?EédH姨\U,/a~~ȎG R$ 릺.wY[YÆQbhntQV"l7Q_bT T3TM`7IGUV+2͑rtvR?ULTꙒ}8(zm֐]zk~nnwZ9#(r ^qT:AA_ |PU1馂+`O!U*RE݈nK6LS"1FҒSd@)"oU~Y]TR)o㷘3R2yKUTEH=TmT@=C:qHeQDtVp `"R ꧚鳜:))!WJϧYYWYƐT{YzFH5[&0c 0;UDX%n~OQ'Ru )"R- NgH9svJ{:y@]%Ul*OQ)e79b013R RmV%jeREUKW.2A@P zaUߠkV"jZbuNykh >,U 3%2ފ}zrk STkkm}C>xx4?g, ; 2KFD6V2.~>w/FDa).*+3'Y*U@)^ 6С?iHe%k]Tah 9E5E噣4 Ȃ`U&*?MUsAU!qy:R'r+\ :JED2nz>Tt>gꙒ7dx2ޢW jےɶl?a姨BV׫'noQC CU3KT6*_T^P yBjGDD6ioP>iz'өTSPgJAfp' ~dYVE齲tpSTR Y^)*/lCk-êVUAvX5Qo57Q⠪ CS n\@CVR @EDd|z}PYeL!Z 6| <RmRɐ%㠿,}f{z >`>[ҕMύVD`xe@X&3['꽠*OSCR9I*\Ké7$ΟP Ν)))T]sD *u.NB,faz9j\HUi%XŮqThX`"0ևUɪDik LZqiboXEDd2Zy+*F/.MOI~i]L:U5 p D%ST5?8~禨hb_$5VhG2bHbۉj-#NDԉtUƺ*0jꖨ5"lbf#2ɐ p"DA}j~L/W2$1yXi }y9uLI. 拽}<:<kj֡7%AP<^Ͻ3Aoyx}c&l^" }w[^7@)>*3}&~ `=~+`BC1u#WuL@> Yo%Cm1 ʘ6O7xoz\"tW>)y3%GST…LɓKeMQQzrWM>7aL|" xwo !]MooBe`ªŶ)5]ÅIvDa;! P5Fuap.%hT>ਛRiȘ\n}CP8U`0MT:wVOP^ȊA1u\ƍƯgMQuǵTZpmxկ DއP=wgΜḚ̆Cy@A]>*FuqgA⾂ :)*CӢVO8lgGExLg6Tn+ : +QJV⏫E.!VՈ}9 { uNӷӕESgL~$ԩ9y ^x+ 3AuY]Of Ƽ۱|T7Eb)J1t w TLP㮆}7j;Ϯ?+ B[@݂;cEDdڸmT'{PZ\u5hMPxᅯ˿cC)E[Towpp_.!/L_n ~/jj󬭭{ao+F@}7$ «sՅqP36f-A^}*֭èTWU^|+J)JPۊDY *p/t_ԠW  +Qhdmp/OӱTdsw@23j*nڪf` F`ȶpԐ5pj E}"=>{oT D p+~ouxvxTގgS[k_Řj0 !5OT/~g".:p7k#`%C)-kb*}_ T^|mSI˳jg9uyS"z(([ˣ%'|YP#M*kCpJ>q^_'_OVd s~82uU^S_Cᔈ kI! GSVއ Rh_ԩ9}zULWoiT]S"CFo/yEdPoĒ!UhmH-SPgUXpO@suj?NDDdŷ! ge.>Qȶ:y8s,Ǐ??/N9P;w{g8F &Z p*yKT͇1ֺ>*wq2Syj= X.3pjJhzJdXks=Ϲs߄[siOd;|ѿ .)0J}-z}TCUԨVY_?uPo܁nkB'p""2&]x]z1R0N|_>U~S8%2 vx>%'(죊U`SToHRPH,W((*KȰΟ㏎jdչs3%2r y@Ud@,L䚟E%;ק4=x}nʽ n2Q)QȨ~Q9=SN=?>QHW.LOT~29K}($VTp3ZB}U?}(""2V%ʗ ,%NMu)_B:HA)yU;f>:~ 0JvQ|}T\nFuwwHϦ}x%t+n:.갷AywP}⺉1]ϷA%2JzD&IST[#Ypr*}U_VU3~ '0?*v__<̡/-R_T""awݛojʻXΟ嵎1ȸjʯgJd>yt:UF|RUsSXֆX"G~n{i|ለHt[%Oۙ3gw~%{45%y@-/ )P5[)dUt)*kC]N ~.*&PDD$OL*EF/쪟jۀ D AST[{wf짨 zAV~ɐ*.QKg>k?đޛ$q5e}hzJ$O>LiO(Pm&\9:d@ j>*we Kɇw g)p#bߴ2Nއ "Sm 3%Rd :p%~ٯ%;*.ЍC ~.M~EDDF۪`ʻv"#]Q8%R4SkL9sV|"? L*&y5Mpd,.lƝYs|ۊ?GcS!vٜk|ý짱SY;zdx wzـ2&AP!JBRRPTVkVQթ ^^""RfYor~[֤N޶뗞z1?NާoĭC};C)'O> /|'|bm~zD#y@-qg~J*}U??I ӥ~ zWve׎`>n~O܏}(""26nD6|?׿/:>y|Pn z*MOT@+ye.AU~??*BʷHTKԡCm ٳNgw#<9xP)6T: OQ%KtT@ǻ!/VW kGgvC*/#}(""Vp[LԔHa2U>ǟ֫ܺuc("zx5(ouҊ^8XxE! VjHqHe^-;CK/>$} pjs-.V/"9 ÐNg(̀ СE|7Kr"O>&.ptOWd&Wj1\R #c睗ҷ_+Ck NM>n mCO%RHMvޥ =S V1Uz]TsWk-=1>r[TpvqHS0Dcy!UWK]4=$vG 2䗿ȯ7~D6 :S%)Ðv3sI{줂*B,O<R)R%tMR%C'N+J;_p7_\އ#"2:K4-©H`jmmg+}ijsTOjO ;C _3~ !Uu1F!8|䱏 /_ǿY>$bpT co?JSq5y)oO7k Dv"¥>>!RioK?3/_}yHD^)]o{ JV 2|԰|YFrcڟHPy24OI!ՠ>&*?ūډ{~~?_>ለ䫋nZGR;pd=%Lme$Tl%psߧwe>*PcudHUA!U>>Ox৏sCydD`uK GTɼ?ls^{2S?Ʊ'{_5>.NCH/`_ӝOR]L }QT}nnuS,F3T4$}&"7G+| C !U=qk BFR~Z!Րÿ(syh`* εg> ql$H0 G3TD&M!]gsi_K J T{i vc3wЯOhOD_ӕvOTI~OD6KMBuOy:/t~O)Rxg>߮s9\ɤny-IϿm?e-[~ujX{.}X""E&4)7oƳljOkǷ7'Zg?~*`nncɏsׁDl?I/~9\T5;8I"IC }jſr7>sy: ^kQTgV@%zVW'N*OT"vT=mBt vW'RE~JT#RFGgSFއ$"¦n2E N-5=%2&3 OruzUnݺ硈qk~Zۙװ %~{1=OϾ^瑞ʽU{*~N.]EDnyMqNO̪0 tsJ5Sj6'Qqkx8jb[u]'['`a_Y$RZ Oֈ  7mMJӻOkjNiOfM=Q):_TпJʬ|v <ӳ?IVHUasT:jg?ȸʷS{/o=u*rnOGv ` >^^W]L } ˺Jց܊LyY₪''57we >WY:unJ`ֺ_ u\GHOPрg+T|3̣)?>wN͎ɝ+7ZrtY[+V J;v{z_pDQ>)fL:%_K$tVMR=E¿rN+91G hףD` RI')cuJIj"2NgNg}H'Ҏ{;>XXxi \P%INRuIt?I/+NSWIfy:X1f~I~Yh@%w3' ^xu1o[OԌ|DOd\0nM]8S2A~*z?>)ڗQ*u6OX rWs>۽7tT=}-Xw^p u.")"Uz[+} pgj+S5A~*)fs=T޳9axר~=}. 1 DzaTp dqX"2e)M@T/t>ّoOTq^H0!U:tJwM^&|Sjd/U}Gy0/JAy$[_D&W5V]8&>oaALv{W)U@:ȳ~z_pD  2j?Ik?lZ[?6.a:0/NcOKZY7loJL;B?P U&WO0D"t֧|(e@婟J8Eu7PH[a\zv]SmNVV3a{8T>IJ0 ^/҆U#WU~+3y yNyEvl=S[)u@婟J|/#޺ | k?1~_b/kBCv@^\kvS.%C+FhE20LJ3ɳRRӰu>y7QKQgj+3PAJkRDss܍[n2~kĘp#U1@5Q>hRmfqV|@VI~BQ KWoNꠤ4!0j,/›p?d37o@&eL@?UR4{|qLsX>1MaW~jB-Rik?J77='Sj8xaëߚaI%^Av0j)ZwT8%27sw#:tXkRssE~(ڋX<;[/O7 ԓ7@_i* ;}_Ͽ'%|PW'{h2/[2lR$[y.**)Y\2O%E<È)ڻwX(ʟ/OSaU lY ˜:ؼx˰O$!;?/ߡCc4.$[{X^+'45% n}2LS?HOB*ٽ۸+}c&T6ȘZ[KP%4Uk-OSKeuQd 0J{2. 7I_~;r`w0ݕIAMMIDb(JP?maYZtއ$^f|Ž>^STuj~C7TǕ|!R(Y3_:ү@ é׽w}bvt( p7MÝáCw>Q S@ATfrއr F{e} cqqz5ZKOGzkt_^cs7U8Ɵ+Kw%k!VXȽo?r}R &Y7'i ~N2 S0%[Lؗ)4mO~^:Ȍ+=O*)bIh|?.%'MGؼTUoŷ.ؗDz!6pJPy~(~(=yy$_%"p7|8U,ss`i[ v !СE}<#ÿo}C*ٻ_c+Xt0ķnҩjpFg~u%60ڡ^gn|0nV8""R2wᕧN6N:_dt:묮.+!MPַiOƪxk~1`&F珱~ c㕿t/U4=,nu Գ b*9EdŅQP۽O&o|ux?D""RxR"o˽U?MUC(TuS}&f0*P6K/".MJe RJxស+#""s{.; d'NiOE=S{]pTOc'>)bNQ_\އQ"qTEXCT0wT?~נ|^[hҫ~6u( ÐZ?f[ǿ~õot|ԝE3 dN4$ v5uME/4'NXd\ CؒBQkDmc%JTndHUDžRojn*ccLTu-+Z!aF7E_XwwAr?= ̒H =ăHtF,}>\H%xQ.1?RuK?ImvP_Dαdi7% O $afvGwzzڞYi`E~wMir X/e?$W|?K@ưg\RѳϞ|^|瞓/~N8[nkuu-K}VW3jVm;\,߹y υ+19%*l.OwRk/v,K~n@{H`%otw!5* d 9j{?anjBvv-8wg!bȯO>+8)m< UnKB;s}Rc۶)JE8%I8[(|UvqY~*JvP++*qHDQ{ɲeMP+*zz)cKR{lXYt{]TÏg*ɇդhB*(KyWej6 5بkcF}llԵhhPscCZVSڶ-*v{E,C܏r Yfs_W p9ͫt5ޟ| sE(?g>aύ8s&y w:0>_܁+uMM1p3J6 z̙Ӓ_I5C:p#DB(wvJITFgCrwT,NxwSr* R_) >WBsx}bbR3E]]$/?T'bnKz\܁T=v4h}>細0~۾Tff. zW )=$*#v/铲ɲT,NPZjmQjb*֏;;luIMAUWN'!5v:~s'tˏrwP wl9ATy SD)/D;Pmj߾eֱLëT*ZX*tEB`V6c~8AD!IOɲާbqJŢZ-ۋTòPx r܏5c~wSPTQ(*XT0{~~}~ @51jGq@<ϷNHw0)) c8o7wҋtš/*qTTiT%ǹ)"UT,,kJS*'dێl,k SNW:*xw/UN*?RFܱ¢IZr}/sT@@ 7N#avTB90 .o(-Jw'տ !}DgeYW8)I5e۷ SܖeJAfH\!u︠Ba f?sЗB<'P qLQ#Pu?sw(qJJK:pwOa`3 S>@%1 q{$"x,,ɇdweuc{nrkw=?PT”ZEn*! T8s绽nF.4Ricw)s&| T>B90.Hi Tq%gdY>v*7RQKsUp'u"UQ ho>@Eϓ꣄)D&.O~:pwOaGU$P3WjiJܗq4*("UԞe=~q*ѿ=n˲ܥP*_w/O㞤,G%Q~inX:;m=Yn TCoqTσCHkTTSŽ3@#TcY[{Fkk1PwSTQ,K0Pm=.P7cf M6ˍTm;jGm}7T T8s(wK!j"Dmw>@o߆c҇q>sQ)_$Jb/ˌakK5PI"RE3hk}_pz*?tѪ^*駱ĔM{m|>ͻ*}*@51jGq@Z^'La8%5P=߹lV;Azoyfg/FSdkm]TR$9΢ܽT@%T>[-˲*x'UCn'OՊԴ3_{@si[m@ERD^;1ŪܝS*)=SE|*cOk+(JPB7#;/V[cUn*;;׉T!w}IwFIY֔SɻzWnTa_#P?Pvs0V2Gx{E9ofcO)xUzꦈTS,q0N9]QdXA +1XNZXܣv;xm&>7$PTGQ q}Z=LPT07wJb?UAJw{n  eYױNwVϻPeoY5TT$ݑeI^jOQU T\?@e9PQj(8= Q۝}z s_1gn{vK**}R?|.@%F>r;fwTuǪvV~%-o{uI,GvlUdUUM:"Pѹ0EBqJB**2T83XT˯7~EG@eYuyR)uTyAc͏T?> uvRݑŽ-Męk*XSmՠ?@e!P/~ S@bz_Ud~`$|ƽgj'T>S#TO$qV0GeY?ίwa7XmV5Q?T>lo?UKUsHՐ_gr [Lß۲N&P}\Z~BB.Ct]SS>AVŵgj' T`/ܻ>*Irr?GN$Uwr?v"UXe˲Z_+p7U'RݗT,N.$fi0xUm>~[!K2@@JB={Ըow~4q>sqI?spR_oT*K)ayw.mêz#яTheo>:Tȟ4/iMҚ n{GD^>^%P5j3PŨD)$wNIcѨΏ&PqT>I8_? T>B9ƍ_$y{~(;$=UT0Rm WsU!0)WG*;~,)inq%ݖb1KӇa_>~[UYUF"P (VpKJg|`\Ô/Jb/Mq׮#([J7q7UX Tꄫ` F`;Wks$7RwLFUIT(;ƪg^T* TܻV RH#A#Gzِ%m7$yT*cٶMe1PH5J䆧&ՉVxՉV[Xz;; .v{CStO{VeYZn+] TTü'qWC=t;M@U.T.{ec\”/U؟juUKKW D*ʵ=&֏sO*Մ,V?7TY;n78nPXU]PX_{e.+ՀTüg緼WRȊrZ,e%P95YTS2O*ofwSb?Ujʯ)ˁʲ$ǹvV PS'7RE/RwV1B#7VmȲ6dY59NM]I7$?JWc~"P ul9*խҭG;̨e7PMO7X12WT0e@%1ƍz,n "U\ڒɍR~zL(M IDAT{mIY:ʒ,.yvuIwO8nk}C<'P qLQUzDN) jC =P Y)si'ʷ|U㾌Tb?U\-(ہJgMd:;h 7^ I*j_u'$WTU_{z)zT8[Ѿl`T8sS*̱*Q<*Nrq*rﶚ;6OnzHV78mmUyU֩T T8s~i+5Ik~T})si3*̱*nQ*|)%:nגB{Y/i_O"P LQZ;Z@h_g\L$Jb?Uߵkw@Mn%wSA_F&@51j{;t$U"*Fҋq>sY3L*ҫVX`/?n|%nT6@QEW{ה4k})D 'k{v@c?9ƍ+P#T7`GnuaG,jv@| F)ˍSu};PJmFRq>sY3\*UEw@ߗm_B8rK:W?N>//ǁ. =| T=.)sy'wG2_}Qkk?=_零s7'zFT T?Pj(|MNo*[*[ۼI8<)_n?sq2*5K=`L%=W?2^"0^wǨnwLgb/Sq*cp*nf_ @B%^snY\T uY~Z9'\e=P/ KC#i;&:e3Pw*lVQ2RqT}1lHE,o o @N|Ih??zKo헮Ci7{'M a*xPt8P#L@UZZe7c뇽gT>lm5*|~7[;@a|#P `fwSb?U2ݸ=K%8Peml\@%.N"N%{U*-,}@cᰟ*YjC=~TT׵e0z a8G{+jRg|#P iyfg/}~dq# !P}]U 6\q*93a1aߣ^s&sw%Mmg}89LC TUЉTl-j70 ajq~S@2Ǟ P1 ׮"Pm ,RU-7PIǨ~i9qa{F@5B2G7gluO}4F;@5=dTLSgjT`?9ӉTUPPPݻGnĨ~Sa{CcF !P łnׯ цj9jĩx1=UUǍ;vTBQ}EjW`CIMBcU{Ƈ@5&VWt%ȕN"P  E{F"EMa*x jĩk)CjU/7R=!@5L*'411w\ȒC=J TT*9ĩ1ba*0eڵ$LqR++[@=Tw@$ȑ6(ٶF|"Phyfg/}~ke7 T!x9 I{ ;&PMOX1L3??G*3~ju!P MLH^yP@aG s8=Lc/9T 23s?C짊Vw"P TW^K/Hwlyo>q*Z2WT0e @0 TD*(xH ^u6: *Tt3e=SEJ(Sc?UtHU@59)#/{#T0^~_;XnqW 9O#P̱g|@ʁ嫚euG*U\t_yGzUEK8%m ,q*L3??G U0gTVV=g TTcGZ~?H.jԁTl} ;cϔ9@C333~*3++zH *@lj5uTKb 9,jTrt e{U*-,}*Oe?3ݑ@@>Zn׺w=xpu_XAUsTĩ1g=S P׉TV)۶u޲{Ukk4/0.|&iLqj8p3@17Us]T Tݒmjm=xpUFh(EJZn }cT~*s7m;nk};xCo <ΨG6PG2Ǟ)C2j'T#*q?mݿﴱZ&dP0D}j@U*9*E|3-8s@@8m97lz߇MȀ݂TsUoJa*vE2`nwTT#izK[ظ7 E H;@g"N q>s) @0eE~$@@~t;.qf/F`*Fva۶ZܗJaXq_c:yO]JtZtڳ9ɿ!۾.~[,@hFqjg#L CCc۷o~zU--1Տ{FU(nߐm-˸/ ~ YP*e軨k)C! F2~{Ik\} V?@VG|lo27RI{U*-,}H9Bc/SmK7~8<Y4\d}N Tm=S(1Ђfg/}9~#BW˰BaZu@OIlr9͘ ȏQ`TJ#}`T8s)Ta9y:stܗ:~멧RǍTR;PůkbPxZq_\{LJ*GAT?zML?N++׉S9FSc?U8È_F:9z^HzdTQF}ΈpvozM=S31|[~*C׾}dGtM?VFs¸)SsFXܗYYr?X-qwWlsÇ*TwuW ],뀤7wV> zwGaRǞ)s!N*]pP5s)$ CեK/ҥ㾜T ZZ$#[n*Vҧ%ջ"X?Db5esT@(g},'1ΝZ_?-FG<(P(Ȳ,P(P(X,x'T,'&& MLH[{'&b,m tmaՒkfV=Zmm۲lV>8wl>v;+RAGq>7}o8{=~,[* 1>4A`?9?e$=ȋڻ^MwX=hcދ$i; 5)mj4jq_F*1·"P!QOO^*了Z_Zܗ O;Xz)K{0{T+HL#L!TH$Sc?U|Eo7kcxܗ cHzR8/ywYYUT{-RbĞ0C 03s c}uA?J"Zi4c9vPE*7kÞ)sJE sq_0B*|[؟!Su|{ݯs7Ʋhc$}(xwM5kJ q> O5;{1IS{gݽ5ݻe=&y{INzOҭ_&) ~rreĎ=SJ!Oe۷ ml`ď>ϣ}nc-ACԤﲣ shޗR|ag iGB걟ʵq\~@E=RN@<86Dmw@e@5{ooCSS)D2Ǟ)d#~H=S;|`yU{3ݿ z`@Jx~Rʑ=4Tn(Iz8h ]Na{5*d۷_O?T~+~Qɸ/`H.J$ÁII{ωNȎR]S"L8?dcfG1{| _y~ x}kƠAGc0sFv{܇)q0S2B&9sZ'Neu܇ɗj3/ckm {w(*q_FSCY̰55uI/kcn2C Ǵ58ZHt7w3GBy2Ot%ˉIJ&&''l~Cdܗ-<&5y#|Rw:satT+K]^#Lby*\|7n*;A=AQwתhHZw1vۗÓNa>/ׇ aÜLj\TIyrMr]y89;;2Z\뱿yI_kq_.4Qae۶ZܗJ!Tȥ~ًq_N~E4|k~\*m\~tg*J/Hcy*B~*goT۾@uQ%78ϋΩ냜Lj\TIy_fw45Tޱg{ ~pOj~[N}Oo*}cT8v*`2:txܗ{~OׯJkkKܗT.ב#g {0 TOcguYF߹%igz(^PqT뻝S9Տޓ8vw>.\/g* L!PC`?9`tT1է>uVӧt)U0ƿFj#Py@U*545 L0g0 1UZZe$ʁgu)I$tTi:kTj\)Fׂa|@4T@DUOՁϞՁTƿFj#Py@冩uTL#L"Pb/SgϜ%Py<'P@EJhW.Q|Wƞ)sA`yfg/}~}3gg T<'P@EJhW.\^g*90&*`3~=)7L!Lm=S* T@LOe:tV%PyN9j<*U_|3ď@ČTU{NϪT:E"P@5c*_;Ͻ[R; LÞ) T@BcٿywTsL"P媰3̱g H C޽ŧT;?TTi:J5n3”9d"P D2pJojϞ P}{Th T4~;*׸[j@#LF?sLN=Is) T@J1gZ]}VKIDAT/#3j6?f!P9&P:'JWSҍ@2~j_ԃ@e*c*>ׇAg\R\ܗ $~T T9&P\y̱g|@ Y^ًq_F*jt66kcTۿ@E@EyQjD3a A2~8F=-@|N"PEsL"PyN}~~`ϔ9LE2TO5zQ/V}U@E@EΝRDQbϔ9LG2Tj}+T8ѽFTyTnO|3 S#TEΝ8F(j?wsL"P ܍QU.(a/* gOesTQqdNsx TJRc89LDrpU㇪jgg TC2jGwK!z)sFrPexT?zU<'P@ErwI |S$1F+q_F.O^"pw* T9&P5Pl)_^#Lb@`cVf3ZTzN1*/ʍQT.0.#LEЅp/3n:7XzN1* RwK*!lVQ2Rq>!PPeTӉUU|T T9&Pe%PJw55uoN)${@`Gc?Urjhux~T T9&P5PA.A*3eq> P2~VF@5cUZU!u p2WT0eH 1VjˁWT T9&P%5P7$ "28*C[^ًq_F**־$I.+*cU?'i3L!=3a c2_6QYUTGbT1g=S"PTURr*js T )s0**#~*se>&IV;K"PEuLQ._$bT1g=SF@`3GʏZcwXu T{@5e;Pj]]pH1_kk_GJk?/;T;/#L @d P)]˕sx Tr3("Lc8DPe?dmo')H>'P8\~sY0J> 0gZ]ҕ/)Q}TG¼@5TRUSSw;na|ƍ@`UCXG9@5;J5/:9s"aa @\Tb_8C$`mFTnZ<U0jmѨ}8jyfg/}~*emm?*{Cr5ĞpSbGc?V{:X[;#OvrwQt.( )3eq>IB(333~*duv> M/9*_rHLT*ZX2 @ⰟcTM^V(>~ {ZQrGC^WR=MM@1g=S@ OePT8t*~*sq>s*~*s*@̱g @ 1H ̱g @ZcU"L84#PH5B9I89, PH=Y\TضFe|@ 3U|S@ s3WjiJܗȸzF28"PȬGZܗJD=SS@  TQ`ϔ9 @.,/_Ÿ/#O0ŞpSr@ WOeTag|@ ff.0gTg\R\ܗ P-ScЋq>s*B0{E189L@70 0eq>@}189@;` 0|; Pe?H7`p*c,.^n*H۶h⾌TbG!189#P!UZZez5”! 43s =S* H=cᰟ )sh`jvbܗJaT8s)1DTh1g=SDTU0Z)s b289L`LOeP#LÞ)/1a{ *c?”9 ^*c89$ ?sꪖ}zF28$ Pe?y89$ p/3 lVQ2Rq>H.$U^2RT=S Tpc?`ϔ9 T333~*iŞ)sJE sq_`@*HS~*i)st"P@ ${a RT4c 2TUF2Ǟ)d1 cd 2?s*@ q>&dc89d 2pUF0eq>c`a @9؟juUKKW )RS!P@1`7#L@~  gq2cضFe|U^2RT$L5??G.̱ /LcDt؟!S)sJE sq_ aT-Oe? 3Ǟ)NTm T8@1|3 00S#TC2Ǟ)Tc@:0g=SS*d"L8  B9`a 0 *@hxضFe|Q"PFPe?`3GD@9UZZeVSD@2~*`3eRhaa.d )a?{1`,jvbܗJ̰g*9`lTb?9Scϔ9L@ĂTOl=S3 Sc89L@wp3H  1Oe?|3H Q P< LcT*@"1ba t*@1gP L8 TT Tci89 MT`/M԰m[F-H%iDcH:iFcU--]2.z0eq>@73s I)sJE sq__8B3eq>@|U㾌Tb?ƅ=SCd1(1g=S,#P2TU%”9L@C`@333~tbϔJ/ P0S~t`ϔ9L`@Sc?Urg*L`@@2_0g=SG`OeP/”9L0:*FT?̱g #P0b#TE0|D@@DU|SD@@ gq2wSmj4jq_F*1xB91g0x#UZZeF^#Lb#PB9S=SSć@@L T3eq>G fW5;{1H%Sg*9 @ !3T28B aff.0g(/3eRhaa.=T$eyq>s T$e)TaG Oe.ccA % 'm0eq>҇@@̥aq>s)ҋ@@J1g.0| #TK|Sd `/˱Me۶,`l!P!*sca l"PAVWt%^ 1@vȰ Meh3eRhaa."Pqv?{1@~ȉ嫚e~*L3??G GT =S3@>)Sn?{̱g |#Pc2c{Db?U^})H%L_! ;y:stܗ8VV/$Ǚ3uQ vTɓt1SadS`7*З.]zQ. Ο?g=ecI:?G*0Sa*00Sa;) Tb*̅MTJE sq_1P1F?0TDd~~0Fl9y:stܗ:VV@$~g  D.3ƉT r~K^ԥK/}9 #A.K*KwP@\ ݙ3u̎ | n* /0@b~x0T QҶ0;@*$#P a $Z! ɓ֙3㾔T:VV@ⱃ ̅č%qUR\ܗ00H嫉O@Ş)V~3ҌT ObF@&ĵ*?L,!P̈c?ո{@ dҥuҋq_ȝ?N>{.95P5;S 븃 d֙3uѱ | /T 8S"L!P\H~*@ ҨBըvP@qȥb@r,jv9B'翭3gN;VV<13sa౿avPU*-,̅4L"P|uT*LT}j?{v*bฃ `gΜ։Gwc`x*zCa K ]?u}\ܗZ*Ċ%n*]Vt+IENDB`hkl-5.1.7/Documentation/figures/B_b3_y.asy0000664000175000017500000000145314677222567017401 0ustar00piccapiccaimport three; currentprojection=orthographic(1,0,0); currentlight=White; size(6cm); triple b1 = (1, 0, 0); triple b2 = (.31, .95, 0); triple b3 = (.4, .5, 0.76); triple a1 = cross(b2, b3); triple a2 = cross(b3, b1); triple a3 = cross(b1, b2); // orthonormal coordinates draw(Label("$\vec{x}$", 1, S), O--(2*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), O--(2*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), O--(2*Z), gray, Arrow3()); // real space draw(Label("$\vec{b_1}$", 1, E), O--b1, blue, Arrow3()); draw(Label("$\vec{b_2}$", 1), O--b2, red, Arrow3()); draw(Label("$\vec{b_3}$", 1), O--b3, green, Arrow3()); // reciprocal space draw(Label("$\vec{a_1}$", 1), O--a1, cyan, Arrow3()); draw(Label("$\vec{b_2}$", 1), O--a2, magenta, Arrow3()); draw(Label("$\vec{c_3}$", 1), O--a3, yellow, Arrow3()); hkl-5.1.7/Documentation/figures/traj_n.svg0000664000175000017500000005751715144640561017564 0ustar00piccapicca Gnuplot Produced by GNUPLOT 6.0 patchlevel 3 0 20 40 60 80 100 120 140 160 180 200 0 20 40 60 80 100 120 kphi range kphi range range n steps [0,0,1] -> [0,0,6] 1 -> 100 (steps) hkl-5.1.7/Documentation/figures/m1-101.dat0000664000175000017500000003524615144640560017066 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.795148838481424 134.088340521172540 -55.578090671204158 -0.022336900000000 14.824478553649875 0.000000 0.000000 1.049505 -0.519320200000000 41.162927817487045 134.090501606352660 -55.567541315342602 -0.022336900000000 15.562801325942528 0.000000 0.000000 1.099010 -0.519320200000000 41.531593227615659 134.091785622937238 -55.559521599375081 -0.022336900000000 16.301774869405996 0.000000 0.000000 1.148515 -0.519320200000000 41.901086207481988 134.092309868625819 -55.552260606322797 -0.022336900000000 17.041431537721767 0.000000 0.000000 1.198020 -0.519320200000000 42.271362938531858 134.092168498083538 -55.545661168518130 -0.022336900000000 17.781804141488802 0.000000 0.000000 1.247525 -0.519320200000000 42.642389280018165 134.091440743741884 -55.539641514723996 -0.022336900000000 18.522925768939270 0.000000 0.000000 1.297030 -0.519320200000000 43.014138958295028 134.090193761404663 -55.534132286705045 -0.022336900000000 19.264829800529721 0.000000 0.000000 1.346535 -0.519320200000000 43.386592159261809 134.088484844597275 -55.529074176122897 -0.022336900000000 20.007549923899361 0.000000 0.000000 1.396040 -0.519320200000000 43.759734419644637 134.086363171597611 -55.524416226612814 -0.022336900000000 20.751120149080791 0.000000 0.000000 1.445545 -0.519320200000000 44.133555748098409 134.083871192589442 -55.520114359915446 -0.022336900000000 21.495574824104864 0.000000 0.000000 1.495050 -0.519320200000000 44.508049921605398 134.081045742914881 -55.516130227402535 -0.022336900000000 22.240948650897206 0.000000 0.000000 1.544554 -0.519320200000000 44.883213919880951 134.077918940416396 -55.512430284908994 -0.022336900000000 22.987276701646088 0.000000 0.000000 1.594059 -0.519320200000000 45.259047464925239 134.074518918854920 -55.508985071993571 -0.022336900000000 23.734594435492145 0.000000 0.000000 1.643564 -0.519320200000000 45.635552647530886 134.070870425339933 -55.505768571989904 -0.022336900000000 24.482937715824217 0.000000 0.000000 1.693069 -0.519320200000000 46.012733618897784 134.066995316393331 -55.502757710945332 -0.022336900000000 25.232342827832110 0.000000 0.000000 1.742574 -0.519320200000000 46.390596338100046 134.062912967074766 -55.499931935969897 -0.022336900000000 25.982846496794721 0.000000 0.000000 1.792079 -0.519320200000000 46.769148361993381 134.058640613931033 -55.497272857570351 -0.022336900000000 26.734485906686725 0.000000 0.000000 1.841584 -0.519320200000000 47.148398671503131 134.054193641849736 -55.494763992627433 -0.022336900000000 27.487298719510200 0.000000 0.000000 1.891089 -0.519320200000000 47.528357526438825 134.049585826303314 -55.492390471994213 -0.022336900000000 28.241323095107546 0.000000 0.000000 1.940594 -0.519320200000000 47.909036344514732 134.044829538577119 -55.490138838096115 -0.022336900000000 28.996597711643297 0.000000 0.000000 1.990099 -0.519320200000000 48.290447600708198 134.039935919625663 -55.487996909066531 -0.022336900000000 29.753161786777788 0.000000 0.000000 2.039604 -0.519320200000000 48.672604741979818 134.034915030279763 -55.485953564852977 -0.022336900000000 30.511055099428926 0.000000 0.000000 2.089109 -0.519320200000000 49.055522117633089 134.029775977867502 -55.483998666998048 -0.022336900000000 31.270318012395009 0.000000 0.000000 2.138614 -0.519320200000000 49.439214919457285 134.024527027838531 -55.482122912734020 -0.022336900000000 32.030991495623454 0.000000 0.000000 2.188119 -0.519320200000000 49.823699133757223 134.019175697668743 -55.480317754530056 -0.022336900000000 32.793117150390550 0.000000 0.000000 2.237624 -0.519320200000000 50.208991500439950 134.013728840294050 -55.478575311985892 -0.022336900000000 33.556737234271239 0.000000 0.000000 2.287129 -0.519320200000000 50.595109480138760 134.008192715699380 -55.476888298892021 -0.022336900000000 34.321894687029271 0.000000 0.000000 2.336634 -0.519320200000000 50.982071227472630 134.002573053662474 -55.475249956563637 -0.022336900000000 35.088633157461700 0.000000 0.000000 2.386139 -0.519320200000000 51.369895569553243 133.996875109082424 -55.473654000615561 -0.022336900000000 35.856997031218022 0.000000 0.000000 2.435644 -0.519320200000000 51.758601989994482 133.991103709533093 -55.472094568805332 -0.022336900000000 36.627031459729977 0.000000 0.000000 2.485149 -0.519320200000000 52.148210616338496 133.985263298316028 -55.470566178276933 -0.022336900000000 37.398782390150686 0.000000 0.000000 2.534653 -0.519320200000000 52.538742211792531 133.979357971786754 -55.469063684474243 -0.022336900000000 38.172296596603111 0.000000 0.000000 2.584158 -0.519320200000000 52.930218170030415 133.973391512666495 -55.467582254655163 -0.022336900000000 38.947621712509672 0.000000 0.000000 2.633663 -0.519320200000000 53.322660513390254 133.967367419307891 -55.466117333537383 -0.022336900000000 39.724806264363771 0.000000 0.000000 2.683168 -0.519320200000000 53.716091893536372 133.961288931997444 -55.464664606543394 -0.022336900000000 40.503899706790378 0.000000 0.000000 2.732673 -0.519320200000000 54.110535594699698 133.955159056459593 -55.463219997861970 -0.022336900000000 41.284952459103629 0.000000 0.000000 2.782178 -0.519320200000000 54.506015539484096 133.948980584498116 -55.461779621921877 -0.022336900000000 42.068015943357345 0.000000 0.000000 2.831683 -0.519320200000000 54.902556296760814 133.942756112697481 -55.460339785196773 -0.022336900000000 42.853142624086978 0.000000 0.000000 2.881188 -0.519320200000000 55.300183091479767 133.936488059438943 -55.458896961374471 -0.022336900000000 43.640386049691500 0.000000 0.000000 2.930693 -0.519320200000000 55.698921816863063 133.930178679592672 -55.457447769545539 -0.022336900000000 44.429800895690313 0.000000 0.000000 2.980198 -0.519320200000000 56.098799048135284 133.923830078358009 -55.455988968890374 -0.022336900000000 45.221443009854411 0.000000 0.000000 3.029703 -0.519320200000000 56.499842058396801 133.917444223306177 -55.454517443240391 -0.022336900000000 46.015369459407474 0.000000 0.000000 3.079208 -0.519320200000000 56.902078836114853 133.911022955589061 -55.453030185466545 -0.022336900000000 46.811638580353041 0.000000 0.000000 3.128713 -0.519320200000000 57.305538104607450 133.904567999813196 -55.451524289063101 -0.022336900000000 47.610310029097747 0.000000 0.000000 3.178218 -0.519320200000000 57.710249343248783 133.898080973125076 -55.449996941715035 -0.022336900000000 48.411444836484840 0.000000 0.000000 3.227723 -0.519320200000000 58.116242810439580 133.891563393547102 -55.448445412123050 -0.022336900000000 49.215105464411330 0.000000 0.000000 3.277228 -0.519320200000000 58.523549568503782 133.885016687378851 -55.446867041294425 -0.022336900000000 50.021355865116107 0.000000 0.000000 3.326733 -0.519320200000000 58.932201510476609 133.878442195985826 -55.445259236276584 -0.022336900000000 50.830261543460352 0.000000 0.000000 3.376238 -0.519320200000000 59.342231388719625 133.871841182084296 -55.443619465661996 -0.022336900000000 51.641889622154856 0.000000 0.000000 3.425743 -0.519320200000000 59.753672845538276 133.865214835434983 -55.441945248166263 -0.022336900000000 52.456308910356874 0.000000 0.000000 3.475248 -0.519320200000000 60.166560445930415 133.858564277977194 -55.440234151910737 -0.022336900000000 53.273589975689845 0.000000 0.000000 3.524752 -0.519320200000000 60.580929712366100 133.851890568621258 -55.438483781068747 -0.022336900000000 54.093805219976872 0.000000 0.000000 3.574257 -0.519320200000000 60.996817161848050 133.845194707602190 -55.436691778424965 -0.022336900000000 54.917028958924298 0.000000 0.000000 3.623762 -0.519320200000000 61.414260345263379 133.838477640512821 -55.434855815282781 -0.022336900000000 55.743337505995903 0.000000 0.000000 3.673267 -0.519320200000000 61.833297889234231 133.831740261946237 -55.432973590532264 -0.022336900000000 56.572809260762746 0.000000 0.000000 3.722772 -0.519320200000000 62.253969540511584 133.824983418882198 -55.431042821019687 -0.022336900000000 57.405524802071774 0.000000 0.000000 3.772277 -0.519320200000000 62.676316213112706 133.818207913838592 -55.429061245852722 -0.022336900000000 58.241566986292447 0.000000 0.000000 3.821782 -0.519320200000000 63.100380038257853 133.811414507819450 -55.427026609334369 -0.022336900000000 59.081021051036089 0.000000 0.000000 3.871287 -0.519320200000000 63.526204417645893 133.804603922722862 -55.424936669394341 -0.022336900000000 59.923974724752171 0.000000 0.000000 3.920792 -0.519320200000000 63.953834079579210 133.797776844115646 -55.422789186371176 -0.022336900000000 60.770518342537315 0.000000 0.000000 3.970297 -0.519320200000000 64.383315138955084 133.790933923266209 -55.420581926239954 -0.022336900000000 61.620744968726115 0.000000 0.000000 4.019802 -0.519320200000000 64.814695160659497 133.784075779418629 -55.418312645817544 -0.022336900000000 62.474750526599983 0.000000 0.000000 4.069307 -0.519320200000000 65.248023227167025 133.777203001608058 -55.415979101096504 -0.022336900000000 63.332633935896339 0.000000 0.000000 4.118812 -0.519320200000000 65.683350010199732 133.770316150573592 -55.413579035259055 -0.022336900000000 64.194497258594652 0.000000 0.000000 4.168317 -0.519320200000000 66.120727847086584 133.763415760331128 -55.411110182594321 -0.022336900000000 65.060445853638669 0.000000 0.000000 4.217822 -0.519320200000000 66.560210821832527 133.756502339897878 -55.408570257411242 -0.022336900000000 65.930588541287179 0.000000 0.000000 4.267327 -0.519320200000000 67.001854851630114 133.749576374593431 -55.405956955385882 -0.022336900000000 66.805037777814377 0.000000 0.000000 4.316832 -0.519320200000000 67.445717778933741 133.742638327434435 -55.403267949562554 -0.022336900000000 67.683909841419620 0.000000 0.000000 4.366337 -0.519320200000000 67.891859469561780 133.735688640488661 -55.400500886233786 -0.022336900000000 68.567325030192407 0.000000 0.000000 4.415842 -0.519320200000000 68.340341917565468 133.728727735881307 -55.397653380958232 -0.022336900000000 69.455407873138128 0.000000 0.000000 4.465347 -0.519320200000000 68.791229356974497 133.721756017114899 -55.394723015491302 -0.022336900000000 70.348287355336424 0.000000 0.000000 4.514851 -0.519320200000000 69.244588381496243 133.714773869879053 -55.391707336907785 -0.022336900000000 71.246097158404822 0.000000 0.000000 4.564356 -0.519320200000000 69.700488072367747 133.707781663134966 -55.388603848381550 -0.022336900000000 72.148975917575100 0.000000 0.000000 4.613861 -0.519320200000000 70.159000135326778 133.700779749999668 -55.385410006353560 -0.022336900000000 73.057067496782253 0.000000 0.000000 4.663366 -0.519320200000000 70.620199047448139 133.693768468576707 -55.382123221448154 -0.022336900000000 73.970521283388067 0.000000 0.000000 4.712871 -0.519320200000000 71.084162214685975 133.686748142717164 -55.378740851998842 -0.022336900000000 74.889492504241147 0.000000 0.000000 4.762376 -0.519320200000000 71.550970141048964 133.679719082780935 -55.375260194554791 -0.022336900000000 75.814142565021598 0.000000 0.000000 4.811881 -0.519320200000000 72.020706610497342 133.672681586393480 -55.371678485692229 -0.022336900000000 76.744639414981748 0.000000 0.000000 4.861386 -0.519320200000000 72.493458882881470 133.665635938966602 -55.367992895512955 -0.022336900000000 77.681157939497496 0.000000 0.000000 4.910891 -0.519320200000000 72.969317904971817 133.658582414373967 -55.364200519227659 -0.022336900000000 78.623880383010231 0.000000 0.000000 4.960396 -0.519320200000000 73.448378538200998 133.651521275609127 -55.360298377209730 -0.022336900000000 79.572996805332266 0.000000 0.000000 5.009901 -0.519320200000000 73.930739804891061 133.644452775167281 -55.356283404790361 -0.022336900000000 80.528705574596799 0.000000 0.000000 5.059406 -0.519320200000000 74.416505154434873 133.637377155705252 -55.352152447139559 -0.022336900000000 81.491213900472587 0.000000 0.000000 5.108911 -0.519320200000000 74.905782751880793 133.630294650406256 -55.347902254600946 -0.022336900000000 82.460738411795546 0.000000 0.000000 5.158416 -0.519320200000000 75.398685790935133 133.623205483462186 -55.343529473889994 -0.022336900000000 83.437505783194766 0.000000 0.000000 5.207921 -0.519320200000000 75.895332834031564 133.616109870610671 -55.339030640328602 -0.022336900000000 84.421753415916683 0.000000 0.000000 5.257426 -0.519320200000000 76.395848182614145 133.609008019328542 -55.334402170921798 -0.022336900000000 85.413730178644187 0.000000 0.000000 5.306931 -0.519320200000000 76.900362280522373 133.601900129398530 -55.329640355360247 -0.022336900000000 86.413697214980346 0.000000 0.000000 5.356436 -0.519320200000000 77.409012154591068 133.594786393173479 -55.324741344798568 -0.022336900000000 87.421928825006475 0.000000 0.000000 5.405941 -0.519320200000000 77.921941896496989 133.587666995945995 -55.319701144989708 -0.022336900000000 88.438713429428574 0.000000 0.000000 5.455446 -0.519320200000000 78.439303190759034 133.580542116245510 -55.314515602597545 -0.022336900000000 89.464354625975645 0.000000 0.000000 5.504950 -0.519320200000000 78.961255894383328 133.573411926130859 -55.309180391288237 -0.022336900000000 90.499172349053893 0.000000 0.000000 5.554455 -0.519320200000000 79.487968674362918 133.566276591596932 -55.303691003268199 -0.022336900000000 91.543504145269267 0.000000 0.000000 5.603960 -0.519320200000000 80.019619710553840 133.559136272663693 -55.298042731173219 -0.022336900000000 92.597706579301331 0.000000 0.000000 5.653465 -0.519320200000000 80.556397471873353 133.551991123765077 -55.292230653285685 -0.022336900000000 93.662156786781310 0.000000 0.000000 5.702970 -0.519320200000000 81.098501575716682 133.544841293905876 -55.286249615112858 -0.022336900000000 94.737254193348946 0.000000 0.000000 5.752475 -0.519320200000000 81.646143741563122 133.537686926992535 -55.280094211553205 -0.022336900000000 95.823422422267058 0.000000 0.000000 5.801980 -0.519320200000000 82.199548851819870 133.530528162000650 -55.273758761202416 -0.022336900000000 96.921111416347060 0.000000 0.000000 5.851485 -0.519320200000000 82.758956135021421 133.523365133119967 -55.267237290559677 -0.022336900000000 98.030799804504738 0.000000 0.000000 5.900990 -0.519320200000000 83.324620488791041 133.516197970091497 -55.260523496430238 -0.022336900000000 99.152997548140448 0.000000 0.000000 5.950495 -0.519320200000000 83.896813963787395 133.509026798239120 -55.253610728375328 -0.022336900000000 100.288248909059803 0.000000 0.000000 6.000000 -0.519320200000000 84.475827432656629 133.501851738775741 -55.246491944501145 -0.022336900000000 101.437135787782026hkl-5.1.7/Documentation/figures/4S+2D_reciprocal.png0000664000175000017500000046121315136610367021220 0ustar00piccapiccaPNG  IHDRL`[bsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx]\}_ @@7q,vi0)۔aff@{$U@bJkoVr B9fobY/+ P^mĞDQ(ّj,O$ Mo$ދӧLyyNS9!F 1S6$HieeE<ϻa$#Hyzg%IKKKP(`iiii$6H&ʊH>z-m5q,ݽn;FCMT 0_#?s̳Uz/=yݺ!ltSP11H** 4(︲C)H2i4TԐ~ 0 u(q 1LAe=AuNʡHN=I lk>$F$DߣדU_v2"pp0$t~֑3ozۣgiN{2|\Y+%#Sha&mCIEd⑴,㲎3輢sM̷Uڶ}A߯]%L $`aQ#gRN"D t X}9|Rミ<蟻t7J$`Jl ~ <ؚ|S5ʨZc={3[3;aҶwCL¢@>|S5l+~J{ct$s%'}K¥ 0 "@j,.&O8TfͱySdjبUF,{Xsc53 Bܽ[ԓz?H["@j}-5Ǫ*41.<Ωz&خsѳEeHj ԓݧ}?{Y*~wѶAt}=cl3>"uFu3ENFyo9n\ƅAD GDFaB#msu sM7]VhEO6.nhs {x f i,2vvN:=gN14X{7C#S}=Fk냮$$Adl`$ ѴF"KQoEe]Dp\uL*Xjh;eL6j5͕I51T CkM"(* }կO{1•}*Y6.nlcm --Iʊ]HGqvE.tU1ʹ&kc䜣Úן!M7$"@x++clV([獎l'F;FQvu51ߡ*"FLH'G+QYTccͱySż*皬aNsnt#=&3-)^/Al a-8*c|s+:ׅdB\^uc ?3.iHnyXkmQu=)ؼs5Y@LM{h~*HCxꭠ$[YϖGRV!&Fe3xpx-Áٝ_jEWsۨN$F6~Ѯ{鮣I6r-qm?!Dr$[YU?:'cL|F/Y> 5ҎeB(b.|LvMRpJH>jmH(Mp4jy;xp0/#jà:FiWsM(|]Gָ @.$IGՖg_^VWjj%ϫ28* T#jBMs ^:O{p?8:}?꼾 U~NᇄHnz0hyy9-<-[NINI?!MHy-jIKs?'3eW+?˼GQkTtΆm3^^th70:&EkHg~1ڌfSv]HQAOגv"[c)2t uʮmz5|"tPieFU:PɢN{`um\C=TV $S;s(}$Ikk~]){pd" Ҏ=Ȝ"L7]ebxT׳.#? 6.m iC.8ZJ}QlGɇbvC$ȅƸc)2|S5ʨY:֘%.k89b4\S@Pg++3 /₠ncjY1Ye[M(fk\s-ܽ^_zI\ڋGPgGՎڨǭ08:ۍ:zM#ju Lr*/% ~awIR kWidgsl9E晚oVu^+G&!{xM|Huzt3#?є7KU4~-||-}Br晚o.5-Z{xxT(Y!RfeE~xJ(3qc)2|S5ʨYic~fς~.Vey+Pm*]\Z-.{&e\Y+:d2jY#z9{ƥA'"@+V䭮Z$j6}3D38;kh/8Z[|#B#c˞cb6U*xXvϜ*{Z@~BT$@m{}/H++Z-y>++3>L>VB%MlG3PގZ,{ie\Y11d ʬ]z~aGǕ}!}HWOK ZZΣgo;zZ-yMQ;Y@~_mbT8t =JAt@IRGqkE4N4]~LШ:kVFJ_qX6븺~^5j=Ddy=m QatCZJ@^.e kkÏ[aS:IKs,l-2yGєkV"!>KXq)H6nm?h=ӎ1y瘘kbzjVQMpa$dYG^gNj=Vpwwu#|7cQ{I@l9rܠ!PLx4F.Fu 7X'kFqe۸1DB~H'G׎;%I[[[ڪxW Iq+c>n60iyyaX)ҒBq]O:uXZ\ǯ6 N6SΏٯW oe8,N$~\ k\ه ?7C*srhuuUKKKr]رCss;tU]p^~ݟVaR Eyeˉ #@rσvhǎ9I mmmu I+*9r.#28=58 _{zl IDAT.%?Lv@)xlȍE癚oZU7fGʫ_Z.U+B8 /}髚̌Hzzn׸3-q㽕,;~08*u%({NSH0| ωc;82 m4MQe4<"8rk-΢. ԣ/}sfg477Yz[v^@/ׯ׫ު=A~);ey$@0vΑhHQeqiZe-a-#jW fQ=BЁpƗfffh4hHz=w U2'ܕTD$i.LJ:z%=0x :F..u~xAæMcj˫uRGuNJэ\ޛg3<ʖHHnxWfggJt5}]|Iށeevq& Ciw%&ײ }'ym'4uqe;\mղY5* :~WMJƻG` szјܜfff.ʕܜ),J ,-,JbCI|R;GsVGB&16e[sM7]V'>k*ƣlr_ԫ;.ukIד--߉-8h;8X;j,kvqYwNy曪aV WIxDpT.9ʅ=Rr<ʖ P/itMtk;ߩ`5C[[Б )#pRyg*u8}bjҍ? ^gfzҽf;ccͱEQZ#s8`ƅ=y-2g_֎;u m?(B4YI%<ޖ )8O)(Iw~3*m;h&tFp4n|5G5F]#82?j 8+imGPhS*ah%PI"]FElwZ~tzGה"51V2Z^𨢺eկz=ϢN{QxHJ|_\(8 G戨B^s6(OPT4$2=D-g11d uʪ[Gu l.~Uk~uc o;z!@T^}j4]~ҍ#lE9IRt4߶GU<6YL5}[l-{&۪e^Uk𨒺eկj-N{hu۽GF̌yG3|Umz??իj؅4< <V5br-u[Ҏ!8?.)vjuT:ǵ)s_g]N$ U{ڷgeaNu$ W RGqz뭺c{{z0Tz״>x:MgR+~qMZQXv*֩z8.Ŗ@MpN٬z Уmh"< nVۨhNRב1V2^ĺk kqi/EY\YC>dw]X?6EGm?< #o ]-FE}7oׂw~{{B%79Ƹc;ȼ"or/e֍Oxd]P߶i lWK\6.ohG9HK:lR48${40Ju'(Jߺn锦v{eO;Ƹc;ȼsM̷UfPUSzQ\C^.$$C8fFC:rm@{ZT2JzZ>`F I!RP)iq7UƸc;ȼsM7]v2j'<]eQzQ\CwMp ht@v^R*(KxTVp4 Z6U{y=z{P봅GUV]G8h km_8${{iǥZIRιt+ڵgWLO;8c˞cbتWV혵wYYF2WkQ=&CN!@m=?6&D5jIKKSS'o c>n5עꥹp ӫNjgЇޑIIRoWOVNq#[ySd^xnZ5m֘=OxdͺA2ãи'FےߙiB"@TPhi):< ;zn$IN ]gI4+i۹ZM]8\J;&8xFSfhdCM!<_u \a* L[RdؚTjwQm]GPgiI:|Hj5 驧بphƸyEKs}̽򛋶$} iCo=x3vH)icc\x|GW(P;Mkxd;l(3<*KAK{)`Pd`qA++(Mej0&8 k?]?)s=Mc⮙NWGFCz=]{k0ή8I{[^=O/}͎#c/s&曮c^%£,~T^GWޢ P)?2(q ҆G'!m;jD7nlIwh}(?i53e[FQe35T l̹y=Ь١u=T񵈺 <|<ڳi崺`r\ֱ,Mu Lre4B[s5Gn7]v'IC9YFu1qu_oLfh*GH++麋]KcD%)%vf.^umz7 P֦ڧOWj|I]𳛸(x׵Ww" uC~pտt!mlJ֓KOWӧ-[h\ֱyW目ccqůsg5Uq\ܓi#cЅojc HU8,ZJxbEu!%Z'7~w7Ү]o](ێxٌ[[z%Oz]ݢHH =vU~47n͑g%A ^ׂwfz[=yFwRթ|ulk)<ݡul"<2kwdB#OIB P:$IKB~tj(Zcqsgm /g~C/ׅt}kK~3򡤟{k6Z9y]Iwo!cC!IF5ѵ DGn|u4սhAR/wO;:uLU2624tӵʬGzu[Vra(.ń$v!с(] Zt;ۻ⺁:u:kx7zjl^ץ齍g-ڷۡFcpNϜP}ܻuKCF zڔt!}?<WTa+' IoK,.m< BǑ.vqy@{wpѴ!<NK>.EYl\ô <>#ZگekihAq?8.7.u.vli/yN-8T"ikK8}z1?M5 v78躤͆wp=cniEAX~풤J$m(֯296-b`b[NQx%G&fFx:;hԤ=F(]ۭz qqsSu4&uT ^ǍIsM҅]5 4i!RO3uwu }#խU;g4MnݔnS_[ځ֝/ZЁ}MBT4|k؅H$\N?9&VfhZg~s#Я\nlKk ^O}7xtmhk~|-M ã kK7N=Om>rŎ#elG٪inY^5bUrhF@NTGvQ?}|YGQaQR7?]ͦÛ^C:f%`m?C;g!iHӏw7' ^ӞMמMmj !R3}ИŻoOk#]~ ( ]GYSҪ04qy2B"@*:<y1q5-\[X\ԎfS3tIᎤYI{zUvh_ѮY4/ޖ^:qJvȽ${yv5Rs9?m.4 ASzJkwi%7SpTAz=4EudFqeCvz JjUi7ON?h>=(m@vä=O:]^I7 iӵЎ=Z.;~]WO')&< ]c1_О F_tE궻n6?M^gEݹ;WCmwwNyE皬azj'v\_Pm쫎Ge|o}WBx P:$R!~3:UCo. F[ǣZɳt htKS?<f 6\u7u[uG>} ;zƮ$ѵXi` 4ZsH\cm3ԣٰK{`="<_5\ϵS~4H1_{lJ_'cҼNs-jnظ)dK{xIi?;Iِn].I?-<:5cP1qouޱ8.K(3*U9t[,֝=zcQukTkǙ(Ps#vĿ{Bڸ?Z֮#Sa/|qmؼWW$m^Vݳc:oxZx~Mo?ĘbuT$8K$GUs\Ezڮ]U7kHM(Yt!~_;!ynƅ4IFu:pއtgk{uy}lMt;1|tË,5ƌt!ݹnͬkgQVZe /-&MG5K,< wq}~g!  $sjNCLR`qi;Lu#2ѵ [fqȖ589>U ʫ¾]3[˅udea!LYHHi9x0vĿ{B^1cE|zt|kYI{Px4ԏ?{gc`ܶwd{Qਊ&kبe^Tw͏>25t}yƩ~L{xTBhF@n[&Bld-OJ(F,עꥹnh ;^LU4_t!ݱ6fd]GyW`R򿃕ԲQu^uFt%qeiYF16$UdI:52>pv:.J1Y.sRT,u+_l $S:Γ+.TLlGǿv\Y/݄@q+ףD6z]G1;ܣs BMu%}Yk< it]Gke[, w͗w֡Ȯ:G%wٸ\GVqQ~#k£qQqqv"F;%Ic s̮=V0ndll$u#Sld]3Ȥ" <ך\CFau: `~?H3:ny^gVGRNJ~CkGD]'~uˮcGJG)2/[|uL׊kC5MpN U! GY5ͪP+ǿv\!QF,]Hy;DY~˜WŞ{T0T'mcK}G:tUZwaGLqHI>"9KQܼqcu4NC(5ãóY:*ZeKuɯ2 ߓ*£*̸u9 `$q:g;:'wkd ^']ZB1>=Z:ccC)U$vuLRCv?#U5\ϵ08 [p i &%rUSZQkk{2~ ?9axH$ L\{ݡ#׵ѵ [ٺN22~G2i?*u%<ƤtE#\B"@y$iii)y_( ^gzU]G!n~CcJS#uSw!Mrک#S\>2}~2רb-֎~J J ~Gy%?QRzY%-@WËp_k|-aOケ#g!Eu! :*Lq$82>V_5X˥Gս(]~ `\ -//Wj79M84:~4עf4~ܽY3ԹGGiL Ʀ36 ]Gy:2te3%GLjgR]~>ϥd󿑣\ uݪ NV)z{1G^,V+rԼr}]s5S #{뛮gZ=f cl}릎{v+_Ǻv޷ #_(Mבh~]S^)x$ܣGJw ņHu!Qeב5K5i:L?w_I>r)qei6j4We?6E/4\/r/c_Q6#֗߅vǚݞZ[W6\MհY`̏5s\5㸴qJƕ ۵R `4tCx{'~ޮע^^̿ ]c2شrt-B};)s^ѹ&hQXT_h5-£r5N{u `Դ43 ^g5J^$XЙ資e\ڵlySd^ѹ&5LQHk)tիvZ5q* \˟Q 0q&sy":6à<؅d*H2تnGׂE}i]WԨh+]HHc&q|{xWΡ<B&罞vi3fkY;2Ԥgc]Hy?"Q^uRap$U4^\[?{sMG⸼yaM&ō2Dq+r\1 ǹJ:OSU~SР*yiUbdL]qD~Zl#]B8s,(=v-S.ΐ pv.F,ĔK"tC1QP.$ HBSPFY+;Vɗf=us u!:r3q{{ň#}bkK:r[~܂!+b?o򿼜e(#2g*t%G7~~tkב.6xؼ>u!rI|u䂜}JH?FލcO HB(Bx$yq rPymXL96n0&-]kkztȮ#97v5š`B )hr[W^6Ab Gc\#$1_ 9#먗[w( B1&G7p.m$CT#ɘ6"Uah9c+M^[:ڳ3T2k2>;Ov""|Y/z|˅"t s&Ÿ61B)Ľ%snD!Du#[tiѰt_s% Cc*=;KgX/m $fgү*>rs%# bv1ĝM9X؀6j1_[ ţu%D$ HBJxd"踎l]@҂8ŘW7NHJT\G6NN9OdXObn:\GCڗEɊ*R||?pl1Gy~$B!4M#GKWlL]Ѡkĵuپ>dLuF },Y5o3'F5#qh DaMEX9ּ@BHhZS؁U#\Gv$ {]U4!QZvIXeqNrMSv!xp0fI6K"!q}O^$B!Qfff&a`ZEXcC8T(lhk%Nدg:toב"$.be*>iS.E#CB AwP@"1 ⑊84d}ץ_S}]T{m cڳKbsRd(߇.ԦDھZ<XHY,\;Fzx14.$ HBQWٚh:"h6ZWcLDm~hp\k‘xdB Qc}]H#[$qPP IDAT\G)= GzG9 !hUϣ^L31ŷu,p&m;p1{Ԟ6_Ow]ݸmsm,>?obp[ "Xslq\I u7=>( BQ&GѰ{H#j3L]K\|OP\31ZOd\3w~ 1\i]SsLQ) BG#{Mu6$5TWkrL#b> L~>-a|[^D!D`k[GUhP#X&JSvIX8WBto|<]He"tԞb:RY'zGl B( BQfii @8]rWd"H$#^SONR4x9ٹ"1LnB/=mQ6Q @(3!j*BaܹO9=^K̥߻M҂@3lKapLm~Sȅp;޷d+H(/qׯbW1Iw䀉X8J-]i#S.(1}Db(W1O_}( BZ\DkiK<1i%!iqq@Q_fӗhc|Wc+M旱]Jq)4̱'5_*ƀ8&?ϡ!x{IlG%|b;6t!\睍;xjSnrق%lRrZoRϝ<Z[0| H]Qǔa+3r05l_7gYwG{玹*՚3Rh(֒5ɼz>"ŧ(xS.0BD!%&T'0C`ԅ+kОNJt#UL&TpRxu H1 G f|k!H8JţH*n 1$HRGg(Ft1}AD!%FU<1>]xkud*`c+`YGՕfuθtL8+#G3֎'يG(Z8tt (+Gt|ӁD!Ւ,3??;~Ÿ-lG6G{בi:cTS`́W |L)H Gu!aK4=l)oľ N)JqƒG?b/$B))J?ōFƻ ,ق] H׍d:ұ&n9f8ubH ŜLǚ/((I.6DxN|*[F1Ƒ#}BS,2Ṑ!CyxI7>B5HTlGgN$5%gf{ xeqǿmn]%4M0oܠg0T莳y]sԅ+N /6H7'yRbu!ubdKB9w8;Lq΃;bS@"'j33‘#(ˉ%mn~ ln_\VZtWG!È1'!( B33<ڍw킸jE%US/\2u -gK\P (e6ow}~wgHɍI7 \H GG%ؔHRBQ1׌i<"և'*=!Ėgi=3,,D)鲸u #khXagu)++NߣLqVk5o3GH<2/%ظ I5-%3lԺ1'׌1AuD! {}\b+ 5msģO?lEA‘k9T Cc\ hN夺Xɧ[fM$Q-lbJ%fi׹"|HBѯKF ~/ą$ $B1'T8tQlIw:i,D W$}}y].]J6sLi!J.\G)$saGz^b!!D^f鄣,.𒺛H)FZ{v.8Brs*]ucBcN?8Ѽ.) BF#GilaiiIi_,sIubqJ25ŤQ{vn}vG#&L>D}OdF.jO`#IbǚWW9<"WM,,<Ή!d8rXZb_&3:tc:fkԅ+hG隫cU<:C GFOdSSgK ?<~x9I5ҦDш7cqKP;i)acF"_B# G;q!IB<L%Ɯkdƨ؎?|( B֓P<B(O@jY4fTcIz:Frx52k7N8N5XEtR"(څ$}>$QGmĺp?E:'rc8r"T#m HBH~:* ?檠2đ4hctƥc}%=kKҵGEL(H,F.$b$*G@|)B!AD)'ivv&QVg#X+ב.s+M旱]Z<Ɯc4FBI6ale 1M1^aG{({6ϊr[>D)#fgᰐGy=WG{vZ?(7Ĝt^hQ]H.s*pD+$.ϣk{uC26 HrG33&#E5ڙRI;u GQ(בo(gԅ+kОNJ\<]Dby\)ב G).$W3risߠ$AQĔK!!+md36p.npDx߫!:*p$kiߣ쌛}G- 7qq!Š+}DP*F'8G2jQ;^2ZtǔK( BMolM* 9rvvU< G&!:L8Rtޗ'btyl(N+wB@<,G؄(Sc#{D(\Q8ȸaBD)6|ښ5V @4.dTڸ$D.Q]i6uIټL2:hu6,[L.$㱈G0ܨu2 1\l( BK*Q<2&8\wوG7g:t|nV_GrslMoظo! T8Jv! s9b/X# M)'m t.( Bɑ##KRG ?^6.a":X8Gcڳjk.ģϑ !FH},pd!\phCEY3AR<(l6fMx GޥТ{5]Gxhv uAQq\Br6]Ò#Bp]~xZe5!XP<-~ ͫ)u$1FgX9s+ W(IlǚZ<B@k(%2mc}OHQjp}xe}CKP@"T<:svo5׃`+٬m2Nw͜t^fn>1t,˭+x源| GZ}DJO7^!CR hf8{6t6_޿LLLt:wX,"rUWKJ)ٜ+Sbppei,?w&3S2!DbUh,)y$BH,.?G)~t v0>1>x0$Ř#ӵB G@"x7sr|\TH 1'+AuOc{d}e=~ HIţ5 {MZ-$W‘隶%k\G: G)/̍S'Y/X9E'i i>Jz0z"BkDōr:' E,KP@"M*-,ͣ$4 ,4v|\8NL#[aJ'XjKkО/]su\&@_sp%R9$ 踏b'cAXtN):|?Fq3k1o'p+~\;1G6@hב$.Ȅ,V.$__%2SBcqpN( Bbq8wO\Qw]#)غBt18Օ&-=YX_ F<6kEB6]ҟ#1䐁!kNXxTVVz.+hPl['d&‘`bp+N]?to "#!GllJ.$_Qv-#,X6 }x$BH<='qGҵimu.fE8$:Rţpέ'O\ߵxdB(Ȗ^8Et ׅmg7DGe;ap1Hb6>s}hQ-Ҥ)pl^W3.;^˒ګKkО6+]sy>#W|ܿV5" GwBF)8#)nvK9qIER\f.$b?57ySsyՕ&jX_G~ K<2V8HZ)p21l9R &!}7!O F 9Bfr/nVWWf#iבxQ,#Á Iߣik4t<۹|/.GٵRRko=9dQb>71F!|) B’6ͦH\HJrX[d2:vkRyvZM} l"ٞ\GwG) i`3m9RV熸bȽukvH HpHF߄hIu$tǸ:>4UWk!kxiz}lctA8"ڤ.}Ks@J IDAT(A [v<1\r!$ gn=x$ Pt ٺ{Lƪm:7}]J`2ƼJ.&k7O]7Xt<۹㸊S83 3!8zoP@"gq8w}eH{Tėls]86lo:!n^cMƛαxTQdQQQ>"$ ko'Q@"}iţMNLLL釮SH%7Uבct$@m~ c׻*U<9‘oO%ֈ G).$MQ/=UB)x㧀D=r?q>\G6Ml8LkΩ4Q_vZ((r9s%1#D.e1r! ]]؞1 M䌉+ܲ%^|}20J|!X\d#\K@EG|1IlE1l4 ҵQ:xs$J̗UTב.$KQ/}Dʼ$!~X\.]c#1:kqkv})H%\&kpcڳݥk,rʲZv=R1zIS@(@uvB(tyhn$B~G FGPvI/N8*ղTNߣtp*'5_*F6 G)Sk:ZHJp, RRsB/|m v!qlRv KGETmɚT]Gnn~q B#?1\r7/S9.$A #I|i^B>|^7P@"%{DHFׅJ%ęXӍRQ̼ګK5GқX#SBUqo7p~WB(4>憌kkB!-W[X` *^orMgc' Ŕ,YSŇ+;wJeﯫbthYd͕G)Od3QLrl|\1FFޛa0<!q=x$nuBudHBrUQ{5ܶN7xŒĥpť 6QcI= '( Bܐ-.ML -]tHuבKOב+Lؑ5+kО\B82ys%cqB:LBX*BzgCyM=M"Ot+)8Dv8p7lS'!J@HJƚ-u]2q*x>7k29hM9!hSF" KלtMq(kבN|⑉Ȅ!\ y:\ESr|:|l¥S(ʅsmjģ2%e:"M΅c)ӹ!( B5qJ47JkG1Gc\9 W7NY X.Ǜα )]H֧B<ڐ{^!D9_6(u?"%͑r$ÇHq-o=Q8Jo:ft~/yv1(`GN+( Bd`.%/`kkULDIN5UJd)]Q8Jco:f\q\QN_tP!6BX&N{dx1GyؼqQAIţOȕP"(ƐvpH8JB\$/gHݯeU~m?k!~IGgMltJ iZ 9GOv ꎲYd\:9JKڳۥk!| AKJƑjmFɅ .}W( BȖ=:`[e|bҥg暼&=FgX9i:Gg ͬ{%fIb|8i G麓̞V]؞17M!}E@( BHE#Gb4k~:N)_Ѱ$J\*ۚwU@A !xBf,ғ.$oP牔O*8Rc#dgw( BHG A(%O RaklɅS'gM5TE4uL0`^uҵ9v]ױ1]ҵ^ԾZþ/a'p iZ(!6y'D'8kbGxSwP#L;d|:g^dcz RB<먗.I|T\HNGB H}>sq1heb4k&`t4G%f5㮽F kR.#G~bq:*pBr>xDbԏC{ڷVZi$Bi3gQ&:kBUŗp4l-rt6/>:5W*BbLҹⓤx$ r!UwWeK&BHP@"4ΞalAvY6|/\בx؇9p*Pڳۨw~Ε"Vϵx 2ȅ$>)vDY ׽Xz!DT4x$ hu'dݘ68}8 s.\8ubgZlnޘF]/x$KQN0B)!?{Ags/*OHe=)H5EaNuy Gi<sy!ţТxbsҾ%9#הrc( B4k$k|I>unPYCZKrMbTt8;.%DSBF߃A24D':$"K<]wJ<1:tΩ4Q_:n~bvk{/96lJƐƊI4]'&ړ&Q1]l G5%P@"gq1q}$DqFCD.0L7fctMQd˵{T#sdP{מf?bɃxߒ $BHRш;J7J}֋/He"GL]hNw?uMg" G6}γ+1_:xpUO>;B?x ~MQ!,.KKȑٔxrdW%kY=jўpd6s\qwW-P‘=6>q.X/AHlAn1!}$W.'!-mkZ@;$q^KtǚwBRH‘T,lJOchGw߿{nsyk[]؞1\HlJc9P@"#q:k.TcTb`K8tƙ,~Rv (Jzcg;WbER"a5Lţ.X6Aq(G#!d'?42Ƃwq*y0!3RtMw%ICH&VLF'~|-e ) N,yB)!ݤ%kgML\z7wĸR#CO>Օ&jX_^6Q<[)FH_#SxBE)EYU9uDܹO>q-@R'pI1+TW_Nˮ2No<_BG6v: ^?i )Eɇׁ"ϓ[N G, H-(Y3g5Zh_ "ޠu0OjT 1] !\GTwWD6P 7%ds H}43C o,ȸ>]ʣLTtIZ=;#. ZQ|}D6~ϑ=Cф!$!(!>(7Tly=zcxptOߣQJ(Juxꎧp!g(B$BH>ZZJGGΦ\zR ͟~d^_][*@}>p.]#E*YS?u Ʃvk4\\(er8~;)cB Q&ɵ#(#"$BG6v^[[S۶u1:ұ.*NZ9,p$6s^:7&r-³`ҷ|-'cхp2^ʋ |; |!Gt9\zN6;60(нI#royxwu>sq1he}A >2uR&HT:?pMq\t#?\ ]4w!8~PpDĸzkEBΞ*KԷZ "dƴZ-LLL k0#!I:loͩ4qBRv;'֋:uFT<u5BrJţT8} (t7G>?y 1pQq63s+M旱:Gg¥C8r?\i G[Scݮ' B Y׏!P$BF <-O<W05G*CbtHO?/#xdZÁW О]E Q b|.1}\G_ t!  .6&ןE!$ vN E5jiu&N!I/Pl8!#]rL]qDҵ BėZ+kRZE`MW枝ܳsGR@B'3xc|jZP#DH {;7}Tҵ{ģG*q}G*kR/k@}_9KgMC457OTnjִo-G}"^uwUyv/;z!E }o~ON#C H6Gz FZxc!q(fƬ%#ձctMS_̳]7X,q]zT \?o=5]G)ҳOdAe !ءDH>A,BP !%06F 5 Gn֋A!W\.S-t\H y"/r#! !eǷH6ţU9#*aQFy8ݱ +M旱eU8E\ |}ѱtz}"\R$B!DHI]@>G)33s!u=y͖a>5Z!Ƨ}ڳzX-N^LkeҔuͳ;lC.! !e&up-.Ξ k*Q:RRH#x W$ѽLKp3Z1\)ڸSјVuy6̅s>=B) RV22i"Pl DG TG EsYG@Ɓd7FuL`Xa&N6]'\6mwW-^#OlBR8,_#2 HTԑg>D:w._$JEgE]Wd a>2YZҝd2VCND#GbҌh?3(Tݫ%xAm~p QT'w.$sGBA2ѹs;)էe=mG險(Aĸߛ^IH7mhSv˓z$vbd4NQģR6V<.!yⳄB).G1{E#G;G!6~M\LLL(A5xj2Kb$Xe)_~1$d|r<[x4kO_Ë_y/|'#(BH!DHp5 AٳI/.Q(񨇡PD(dZj&knrEU֦x'!Y7(ʼn I1GDzWp1̜Z&bŮ Bq>͞:fEէe$' q;,fV pR<ҥL} -gK$#)\oBF15Qfm' {fsuI!W^+]{ZGx{f?ș!:).G 97yZv%_-)9xI:>T'h+J3{:GKpźjuSh,(E̅ǰGx^}ֵ-!xDHYp>cfaV9 Hhnt?\\G[x7O+=rF1Đy*[YWyqBȣ|xtM&u*{BH;%la/&%o5[J:Л䂕L]) IDATqꄛ$溌#nB/\qI]G$xlnK =sM0~?~@x4&]zn!lwR@"ܜ;chTG..Qha(QRR>Q,j+}\kg I(TĹu\{暞Hԏ]{?4M3RJXFHHŜ]=;]#/[$$I;6g|u2يs!K CύN?GkYWydC^WO^''ۯK!9)gZYQevr#AhuuPscxe@{v.81}\4ţ= )Bᅯ㷏ۋG "uOo:!$BN*>3guxS&xe|mmM>XGS`B{v:t#Q(b$)x(Rr T<{}מNB!rB $BN)dD*dG>ۈ {MSh鸏NiH4;}ڳ3[Ӗ G!Fy/cHս]J%bQٞq A >vz0$ż>8K+/ᥕB $BLWwO|ʺ"asJϠL5X[]SJb)]9WQhDwl/aT6בᵷvy>\Py+=3yn'B!Ņ!E&r|ztĪ4hGV}IθյU2q3bhS'KbpI2*‘)X\B<2ĪQ{ Qyec/쥎t\C\ _S@"Ȥ= *g[\Lr/{ț+=B׷+Hg|q kK5(FבkQ'259(IzU4Ȗ;}ߧi)mM!xP@"nPea3[=eyţ'HrfA) ɷ UzPgJ,&@ pd:W2)n:w- HQ\C \ZqG1fU2.$'H74Nv?NѺBaW!LԛXt\"e9s&ڞG)hߔ, ec,|\QR֞NJB$q-hb(GEVgb<xhe_׆sO_Cs߱B HT(g!'r@"k-Z`bb._nQZљrG.9!G.C \ZFͳCz֗t!?ǻruЬ%}B1DHX\L! kd||<ɒ71x>:g%}] !Pqݻ#HyvdpZ !ԓӵiG>GtB)i#+\bá)#ߛ^~GN]qDSTuZ8IȞJ1p+WwugG(HtcR!HW$7IB_?ByvIm-%p cqlc+M5ZX_bcz/Yˢ<;;d}^HSA=}ӻ(^Zyh}a׏BF:)hyv)xȅc QZv;'5l"SU #x_zw׷u!>W~ex VN?8W~ D82 E)g)/b $BG" H~0neɓqc^[*I1:*p>JQCrW(?}-=D/$%Ҁ>LQڑP,!P@"(ffQtģJO1g\*G.҈GKkОV/]=o.6̉5<7JͳCK>m߆ڑ0(z $BB:ȊR^Aɡxeb"&jX_G{VQPu$o(T߇!k7۲AGG!1<'e.XE !jҁ!E`qXZJG|1;# ǁ$ɱG Nߣ촛5fcɑ]#͚H*qo6p}W4?JBזkbx.tBJ$B@ZFȊjCښ%lbrpp 5UQ 5.#'Y|(-u8 ùHvcA |!lP@"y5G zpΗg8X>ڙ;G\ϺCB ~:==>K]<\zQ3HAzk@"$f<e*AGRxT]i6ke)Y+zRLQP\oZk/_|yOx=`cM!>qGמ1G:WvHyA!d6϶fHIgڪ(A<Kڳ2mIwgTQqkٷ|-"赗ׯk[{.y8t?)SKţkO_G~nBHJ:b1#)hB G.[]ivgsz]<*xz=]b|z#?̿zo\߼<`nn<ݏ>]vg#ۇBx}tvןO\>3BHO HF l`q]mxNA |縇D< ?1-y"[,G!y)w( 'i#66oZ%g냐Eǁ$fQ U>;iO!@Iv@zRGwa/ m|on;L^Hg !>@J$Bbcq1)_BXxsx$xq =9!"9nJew$(hp"G~1X|-нJac[8ڍm/{{^Opoc}4q ' Bzz\ q+ĥC%( \l<8>L8fi96(F]4ʮc,1}]pG_{`!~9XXG)>DBvB ޯDHl;5#7ڸi gh5ZhNo,AȜ؜OǾ>>9z_}!C[#h^zaZo.Ѻ~6^RVxo$}tzL6+qCVWIߣ/ўяm\FA8M4|N:"o} xG{Rˇxgx>F" rƧ`yk> G@d.߄tט!1Ichfօxd͞tސSn:awLuТcQJy#_Uxr_zgM|D.ϣc;O߅T|E͛Bv(ū (YEنedA$BbܹO!>(序\}54 GՕfQ{Vqgs^b$mJ0]#xbgp؞1w#Qʳ}*=촛<$IwGXӥ Ce/_;J#ۆ枞ǯG~Gs&HФ#1P1==_ǡ8.R$~6{ЁDoXfHQhcPl$k"qmHMu"*9?UZV<## ."(ʙBpx#( Y)簿8vuuP׵jcH";auuKK1[>!b[(8QE?sQTQO (gXBZ ~ ( YѸݐ $Uf@O>?~pi6slel? eMH(vB F9!}D.R(S\ !dP@"',_3q1|-M*=$ $7Ȇ+M<[oVd2(.P<^O|N (Qޏ#$B|5c/lȎG6G⬨41h/]+x~kkk׿aϵa2#\TL<d(o/b "{!a o? i4q4mY[t L;NǴc3oUOk_^VQlLBdZTQ-үEB{B!H]G,_fGP‘e9q#fC(-]['cJ̱97毮$fÈG%tͷxTZxt!({x+]H7B(8Bc@_XMk.6*G>6͆Qm~SOȆ!O0>>>ߑr"F)֒(_!]G]dڅyLǢ ˍB_,-|͐M?5,J^!xT]i2wI/$w}kj4*Q4JqxS24ג(_h9DBR5 'O_ HktGҸj`po׉k4o;/;dmiyYQ]G1mf,8ss;&$ E,kQ/i\Hefe9Bق!>`1 ekţ,}H1NrM]F oMwE Pz .+M^[yI6Ǧ GU8*+'%g#kţBj,Յ2ȟe3FqS@"%,_3[l/~!z I਽ hkzXsͲ: AQ7M1FY(u)_V<*^\HEVEϿ.6#&=sA|%ZU@}P͘9u -5]V`(wW<{JlQGtע-[,sqB\P ! Hk +Q0X[]3J=;*GXZ^G^J\^QY0sn*Z6Tj8: xDh>F\Ha~/9v%ƐCD$ oshPp#Y?L(`k:O] Xjţ-ȷ8&+ߠh` AA H#5(Xhkk߯?}ԵٵIdJ<:>ְקB!r\NK%Beָ XK "sQlGLU$p։4f&C% @ 5/}nÏ62 燋1 z_އc'@δ5@:8_ڇKqoi.˒煰MQ^ȁDjkN=Q<:~|8⑟)A"C tEm| et uA_`cŵοČq n:znҏ6VBe~ָÊ(1DB! xGwF⑑Hn`o u"̃[$rb٩d~*EF*Y<JųwXGA"˹c,e wݵ_<Ֆҟd# d$yji5D;״;:o"q`'1ד+jG^xy`;GA"ù'(7&bGO %M`1|+ģOk% Ic)%="ʑvKT8SW@ڳg$W4HD_G~#J]ι##h>zZ#`Qѧ\pp/,jصvuw&$ZQ/2"]mͳTX?,2hm-C-֚at)X(~B@s]vؼIJR`D8FqLDp(iN0/BA$ICPT r%Z ׼{kJG$?>t:d2YX۾x+6( &1*Z?2!2 h5(4uF1} N{KG;ΣŊEPP0}t ~n@ lQB/>*@k!p y1KҸ#]$ԁDiXG_D_ .kK qЮԵ)ZZG4C/'!J'Q1}/jy7!}/?nSEZe &[^{^;tBAO]cŲt-Ġ@\HQv  K( +W HiD#GpM_xTA[G/3*o avm25XpG"q# Fk:ƆpBqUm'iD`9l>S7.>pӖ~l/E>bN$&,݀v) ^ IǓ AA H6QkAM*IGnou;wb]׹ߙ pxA,XMުj HL\ADdC&kAܼmS/Uņhe iF=rڐJ%I<4#An#cJ`*JlȰ=Ɉ-<#o xܽ/iecOtlGǽBB]HQ9g2FD+8Lk TD@lE"HGlS&n:Z}MPWz#O<\oAkj:]V!#u3FDeٞ$ym?^ՙǾᆴeT.[l`#{20'Bj!EEedCD]q "NWD2F9Uv:j) ȷ6LHSתyvai$IŲu_?oH$CAE##λedNeE$řSɪԙޖO8^}$ +E| 8D`hs%xe%U)l{u$m裏BUU*MDVG8Wxl8rd_~AQU5Ů\.5v^,A屿j[>XWk#+۾R_q5SlG^RhGvAƛ}$+~j!EEep5:e[dZ-̶%hH@MGc܆Sx4r  RV<"(qtC@&[\$m@;5=bۊlaQy Mqʁ裏ZRD#@shP8#T|rhUlZ&x(e p?7FI< LbD #MؙIԳ5 טW`t),]gouR j}>?GpqBg( ~؉U& q8a*2EK]kUGkpو0fffH< GjI<͞x80_Ӣ6R׌nS/} g_qB¹1DTp 6ʁT0 H.y]( (xE-ZBB?b'v40q Q=|Sw 1 Vo$e]_ &9NY>x/l{R<褥7qXݣC[MSkA9t:jw+s(?E qBcɸZ;+G(ESλxhEYdF`E_y!3L@"އGFL$W_>0Ե:cg)kH< G3}/hmGUlcI".x)P/`(#]HQ8fQQ /d=H@ #O50?׮]CPX@ |sJ#7GrK! Hl%6.H2Gk^O -uo񨭭 wm|H<ݠ1{F<2fc욫 _ޏ />X%~FSN=)֝Pii[#{#Y ~ [<GVmbG +Rl=bk>lm"nQ<GA_vqKpv!I2g {~B7D#{"P HM6bӦ8qxA|)Wpnƍy ]<* J]\\ؘ@N|,qnj[?47me$Rɤ9Mb#پO+C<ѱTV{zGq!I2_ {D҈bN#!-/ۀG{ͥiS?o6"ʕݝBW47߄f455MM-E-[%v"DP#ǨjyYiks>'VQxkklwXշ eŲtQ,N󺯈v*ˉ_C8DSH']:GzЇų`ųL_3sZsAp$ik/z("Ɇ*pY' >|8"O<(1x`&&NʕKH#KƱdIx,YMM IDATMMhjjƅ z;[܃-[6gg:VÇk P#G:qFO6բfBÛkV(RY,[G4CYK 7zގeC[K##;k5g(0Xl@҅@rEc' T8!SSm۶ cpp>\c_c}{|J`;h"='|1MhQIK;r-[6#],( hc4V*CKV@#v#iˁWGxOZX#Xv흶/l?hGT{A#k4.&>#B˾YٞdضԵ̗ kqThdH_3RV I lQV($ Jcs. Y DFGQ:.KgdϞ=BT1 IbE;nu֬YlΟ?O?7(|LDjjjƏC}.(i]P Jg94R@ -G.?u"ٵIoQxTF<ՇDZ$ !Cei8I]f 9dq1\HKGEl!qJ $< 9UUD9kBUU|?ҥːHq\~ iLOgLRTbbJ9xvG K񈥮zL6r>(~^юn_y8^xi@Nħ79qcn]k֮lOi*q*>^_W6]dյDG2V_M@BB5ъF#Q"D,FL`‘1-Ja``سgmۆT*Çcppd=X ãĝw~{\y ֬YjGRANb;%}[ś'>xԶ"eE[ Z< c Ѕd3 ?ſh/~XX׮Ꮱ15kXvxd%UZ$)9tdZ}͌+!u!Itc$ h*F9*Et*ԆMMxa7ӘĹss>JfJX @ f=)S\ux/H<ٞڷ$۫xddnDž,Φ')]3MgMM4~s"ŋ<6ܸ/Ɵį( E۶X6uʹdC8X@[Dە_oTй$;܉LY B45xp\6?UT \F6\炅\.e+~FE!̮MZ싉GT)2I< =ۗ_/H?՟yc\ww.Lfh",^MKphz]Œ0d 즥(,0$.Lfdo>-vs_ ?sKYn g@Gҡƞɵ/{{BBB _RqwwwG?o(_Ĥʕ'|Ng>AQA{#!bٛj;CLU ų7o}7qqK.uAtJ]Ojg$.$8܈% c4Ϧk| H?;C[ ==' uf\W>O߫Z̃[S݉DXcVMEPc;8GϨzݣvi\tڹx$^GT?v1'? G %x\}>rY ĽtMOc#p*s v6 .Z@_w!u=q_-pR#A pM(T#[l0aD}L9MCT HӀb}T q_i $Ӧ}BnbF~7kVwwE[ddؐ/( 2K5Q?s Icꈨ \HDplJQ~$v:Dž͍ˉ#mmuH5{uw,_uH<c]\Kh6xV$R w>ƹ_MUf{h9$f:hx kͅqkP}7Ul#$~O;"* 'HB2$B((mSOlSEzۺGQ2D2կ+Ht=wR|q!I|<qaD HJT%)Z%L7\鸍C]tfZ,;Ls̻Yţ-(W3i؞G񋷏csX[wGsi_F2fk\5 G7oW_c`HeSH )"Ȍ dB"F6H@"}7V@$[0U윋-s~88lwJMVZBǺ#N}]Fu"A1HETs_*ZǵYK 'H ?Gf4Je> N##z#&1.$8:U@\-,H~Nچn #t>#ɼDHT1[͓DQ@⍈ԵǗ. ^_+u"S׌Ų7UOD}G,C==8QC6}~-Xk = l:JPǧ9M*s!?<+E<Bf$ld$"TUJ+.E%*m #ն5^rh^ҌNu_gTQf{RH4xGr9(_}}a۩kj_/&qj/;%6E-̱ (v'KatSLI~S XT)䄎##8zfEus2 YD0REAA`pPw*[PTioҽ533%ͶOSlGJѰVWGTG E.aG g;/eNg1\_XϥmK´HCXꚛxoRca HATB"UVTb+hLLM{5.UBQQiijA{WU_u޸ZՊV諸a{%PLA[]qNus0C.u-@ ~z=u&qoau`}cꚭzJq.0_;;ADr!AAk!ލ"ڪBUUV~c+* PZKSK~3336ģ'-V823|\wL&LO AKFE{e5iO$<}"LJ>zȦ\Ǜպ_ׅ ss!GF|.Ú9v'48 g($ D&E8DGۏ?ZX]wپ$*ipī-䊫ՁͮK"qzGH<⽯@d%@-Egn cZhc(>DNnSK Z'lZ{dWjZ db1x竄"}soǯv4>·(QkK+X j5ydsLUz왝]8z2I\ܲ` I'lMױi$85, BR JJ[ (wҡC8tPD;qNQZM#;E2D{W;ĭ܊ĺ: ^}k8Ga$͕GKy}%B~EWAcǟxsCI7O^CMD$TOYcq|+[GFppqAxY:]kwaod9߼ t =5pyt Y˖ .5&UJl7;AT xTZ:FKShëZݣr94bْ;Xӥt3cI_1ud$?f)p̢G_"ۓ&^*uqK?]rW082"s!>I# pq0AVqD@ мQ߫@UꚱH#c]"hĈ-]6:6:?dE$!GG`EϞ:F|U Iu[%#?#~)##;Įeo><)KP\ى9 [`ŬEFjux~!K|8a6ֶ"2{13; tҪ$OK<H %8.Em?oǎ#& 1q)Ԅm8/vknj 9egT=uXh0Xs[Η3慬D( "Fdr"K D fmr#CHq!d>Mq9h$dJ@  Fi\Tڟ'4̌.$ *y8rAԂ\.M8)8eɇmclڴy T(2m^JQO"6#hmS& _U1w~coim뿸^h#C a8gp!: 6vL|ŤM̒-H@"F hK]KD*QɸT"'P]He-lgpa"#fc&DxԻ6$ D hC#&G5H{W;gT$avmr&&p[.bBUŖŐX &udQ 5UHk5qܺ7ڨvޗ()"u!zp$lZ$o~ՎHLY]H  a8^=^GŴ[VӸΕ#1ĖB߶ Y $o=~UYژkmb0"[<ԈOjRX2wI333?ĥ2Q)fP:Ưnn;knŒk HMnƑ G܅"3%uģp텰 >qft9ٖ\!0Qgq!֌ vbpH@">>ݘXBO]%*MD%;N%۱b+df~b/r__H<}BcD*1+-Mrz_{ze~وM sXef.&E\H#cL D46,}m@ F h ]TB)͕SF?2Ċ+U(RJ;klfj_>x}@w<$nPXd{$.̅6BԅcZ4P=+$,轙Va#kD؃U[6Yq qթ4ى./!;]̺#K=cz-`p !|7 _M<"ב5a3 p>;8sVdۘV׍DZ52ωؤp!LԄ#;WRI2Z2 HAbbjFv.J.PTbfRw{7:;1NgSS+vĖ[3瑞P0h7?43SH>:>Qd9G878ڨ6 ) 1/w 03e I}8܇D46mj]YS)ۈdANwiBW,n*+.l'`@jXf@Y rK,+>T3[G̔1QM\VE|$ C'Q.ⱸm~6l/~K ZUX8-~rz[;v܋;Ń_D_!݄ģ721xSK_]< b/\|;B\H2G@3B\LH"" HDB+9GgQZM#s&ΕHs.ؾ|w{SS,[?snL.mâEP&h+5A8x:]]_N ;8GƑ9Av*ORRH< /;~C7SXl<GVWű~zݍ4sCmW`ۼ1Hz"ԅ$Į#ƇIVqyh 7n\:Bbu b+bk++MAu9tPp#1h]# l_ګ:xʕXO${by1=6&%f܎ydv5 .a8e2'>>r0vB' Lh柰vPBq+~Ͼ:01,_뷮}mE6)⑔seAз=!ɾ8 52S_$1ö\'O#!T"2"ʊgg4 /Hs//E-6E$mPBXоy#owv,&G'qGǰzjto3 hq.$)P,0vj`$=<q#FAԆV`sF7ţ5]Hx2>d --M! D.AO?]Tb)oFJV=u-L_8dE gGO|[L$2< =UmSpuYkϣ"{C7+㺐4w~N{NҴH!=م$AJHx:۬EI)n$D l^1|̌+Un!I0tW r99J$fC8D }yH೅F3aT02ƆV` "L9eIʄ#c WXy#Ȋ[57ѳ‰c5EleK"$9 uJ[D[@  :LLOm;jkkV<2"uT،Rb";t'p ߌBo2xbAV_\#B SL*VJQ<24hQ-XZ41{E9/i+ˍ==#{Ǹ/k(\#>nawv6$($_*&8BBnm$MPURv NֆMwm۾mcL]hHV~D弾[v*NBQp?0q&&3}8:<3Ya veڧģlވ\jѽqz4)YM"ug%yU#!&RDP $ [m۶ .JQ2D2eV};K$Q(ƕ ҥu Zm%@K*J8dW#Qdw=~Q"GGQ1EY}-B+OtԱKk,s;̑-R.⑻d`VE$bԏN# HD$.>1-?EmcBnE#mF,7e"RrZ\lY W686r%BcCQ8e;}U%)45hΣ7w9e6Kk;cڂ 7B-EM8 hda_Vە*7"Հ$ jN]>u8GA_߂brQRKyw#;SY4NՒle a+ @8~GFqt//{捸cOk7s/o,Cz6oߔ5;toF|e\ϡJkKkKRכڝ+9̑)'lq9$d*ЈH-6A[ :p9;//>S (JKy/C=G벴^O (mn_־x=w }i_]Hz$;YL MGE Š :}63\4zGG$yfz-Ѓ٩y&*65Չ 浂ݷ͙J$ݯ[/XlIҧ_#iT6SѨS_c>ܼ uT"ۓKnJ$x;ZM8GU;B#"Ɏ$"]H@"&U+|qc④5 nbRrJJRWWs@ȌX{ܩwTPH<&,q Tȿ5hSƞځqA}xߛH[^S H}z%5mYzD2_=wNƥ pٖ'iL;/B](20BPbD@$H+" $ ɷtD\.t:˾X(D CJvyaߥ)J z `$:݉J~Qα*q>:,FxYNk \HGA GG2 !VP/$y2 DXP mRP hwGu_JR8'Ծ$*E

'x6*EeidiۏkpI̱BqSs fQ8F8=xFELju!XoHOI!|S?NsL"R8"AA`ZȉGa0xD$KqCRGZ=~tvNVw7/zWXK5$'jVŶ%ƅTPB. ȇ;_W=!F?ZZ) H*tD4wLLOkGwnrx6$I]VeZy @Hs gՕ)ۏ$&cLAp.R8⒦Ĺfim~x 7ƶb*; -!96]HjBG&Ѩs%l,4RH3UH' HD@lNh)k#?.uϡ &KvQG(=Tt*%Ѻ4SSBߦUJo7wZ"^r .LH:;: s!&:A4Ҙr[#$9r#tRD"\A8d&bٛT+D N×s1%gYuuM @v|*QI/8; $Vd{TUJadYZ,_VdxdoTvSHjA|U(҉H{L,NJ:F:^E ö%W!slN5Iե瘨 vg'G:k*TrBαzkXo ʷI8s&*~y#.]"~"۵F<;U=;Qq]NYߊ7,'Y Tw%ydmI&DPN h$ ȷt V(L" 2"c {$Q-*E\3Lj*MOw0{%msS. /ǩҀ/%Dz/j 8gGl&ܱ=J0Xm1ްwt9]G΅#‘QL늚1,M`n&;$ `;xb",J`4Q)>tuSD8N(smNPņIjKa}RYd{\gHB7R9SlGM@-8аDS[&c҆3qH2G@" Թ`rJk\e>~> xd3QIKhGv2[\M۞Z-*}ދ@11G*9&ݞBatl iimc`ə ɣh_ģ#_F, gҐ=D I7RD3kM!h,v:RB5|\wd[< FADc'xT |ѩJT=]%|*k>0nO鿷6r퓐8{pv,&?ıCE%}: B9<##Q‘;шD{("Q*%b툑DP#LLOT?iS<攰oo%AxРQ-DY͍[>% )~(@/ͶcJd8:k}}L8<շܦqBp66l7*Α.$}=7yG<\G"D ?ޖH{!ƀ$ۨ/6S8| HTnxdH]#Uk ޝgc1~i巩NLOw%ǒlRG,}mvgRAeis=ɲ ƞVDž"Lblp vp[ 5#sh I!kly{n$dt!9$ ̱)qw䅰\KjJ{L@;f1w@Ԕ \{=XQ)sK_}*E 17C/'Iqtэ;qz4&?wR IDAT2/XjdH])9=Yn3U:KE$"UHfX?H@"mۂ 8wdD(,y@XH]55⑍Y= ug3V[i~ZD|2m}-;0[B/=8Qm瘻( yIy%)FtaIOQ-HDLHn"W{DX!3L4Lh {.BáL?#rj[ln, gn13 s[IHţZTܖ5;i%FlSSƐmt*x-`P&:Gq ɘҀ.4}ili\|'QĎY0ٞ`sٖ<K 髵e#{&# q3 [Լw7 e^Fl )mA:ȅ$?$ QN ;Zuxs#:cRyP4 @:g1=݅{/RX#; /(I$<sʶ=Gꦺ% ױr=s+mLk""@H>"s)b_mh+e S H{& <0lFd/HQs1wSQ%" 25[oKȄ谤Bꅝ<- ʅ#u{]M2BnUb!T޽በD$H'^EDDr[  "{xģ0}pዷ$ӟS|%N%W֊>}Q95~?155nf;I:Z> 1>.IpkD G$qeXҡ]QJA6_3 G/I_J-{Vϼh b;~019Z9'ʵhϏ v)(gh#x:2$9Fy? .\Yai}iIf"9wJ㊮t֖M`"np˂6w@"azzغuk9y@mbхģf[ʁoxc~~@dw<.*9Q@<_3=*dnũTZb+$ٞ{i.J=5I?r=^a҅T{)X1Hu%euI3HO-3K*IYHr܍d+$o\;@A AILMMes9>jKc!ָ &*=wD`z|?xwY&]4(6Q&Ⲷ?l_Цem)QIqL:AYkGiQrLn#'ĤפU$ '1(dh I.&&"RŽ:d+%{)8U$ dy'M"lقn_1/_A?-NtƘ*dR,=V//w,E##F>Cό`J̖[ R QmIG@dFD$pa',< 埘@ Ip BR ]P[DDrjDRO\HE$ BVMPGz5^aY:+S4'ci8mTI9jϩcco<} oy9,`|<- H-ǢbgekbMoY9b|̸yS]E QB_=nb.oK!&I.[" @T\mPZj4$PAɲ $T5,xd⩂cJ8ճ2HTۀ]=OTZ-4{utV;h3_{{^?%nI,$")>EG$=I$ao uLk'PČEN\Hbńn$6~+fkNKg)*Ȕ'XB%"$ ,Y+5Yvtqa#KT0@HbJ`Wo4cD }r$mX֖s!ed4'Lu%Ot$FNlj9^IlsP+)MHJH"$RQV,dD$w4פXsmʢl) (q #^ꭗJû}d BEg#k1irlcԻrH$Mţ<#'q^l$1%'+'q%1BWy%Ӵu\>W/džWs؉còw6~Eg!Q vmvYVwQͅT}Y!eNR~Kf3ƻouHģI6 ~2G˷܈:IQ T2JUy-/[ w#TK]w-G{~.BQ[6u H:oObҗPܥ{I]vvɵRDZr寄R(R7U K&0|P@"R8YvURf_0#cC &h8r?X8#ɝJۺңarnr*Elx&&',p#yR!H,B~YB8v)FJHT%N\ppy-<;}2G|Mp#'tᚓDb˱8r!EKH@"&Ν降riTl;C`3_9(;'VJg[&tX6.N[_XpYw~#w0H=\d[kY["#2b8qALі~HdMuK$-9>ʇPH\◴eԘ|,o%" H0|Gţ:8߂:3Smai!mD=s8k{Xd'9J8.,,Ji3ڑᲶ}$ΉHfG Gģ "JB@rD\9R1NL\V#l 23Q(.b N!Q.JU~쓕%V,"]D ^w#GRxd:Ϧ59q^,,fO $ˬN?x=L$ 4*' @v}ZB\zз)nbaiԸ+b.0L0z~%2[ GBQǾr*nC 7/\ֶvjm {I[ʦ>\I*TGP 4EX1qij]'g~p;LX֦v#K̈HtA\ 4ZD" ,|Gh)&wLej\#hb~:M9sD^r*ZtF:/ (v Ms ,A!4iW K&#Pj<ȰJ;U 11;~mV4r\ĊH4U"R\4NE7lruGP^%na񱘈I +f1h1CS T5m?1*vY[dk(" ?]D2>R#C)JMWGH?pfv}em(ZfND tJ-J'\T)OP4$h5AILMMN6Lm9Q%& :M|i{u\H KQTZ8=tLswң8/fMQ)$۽}8낢I¨\HF{r6E𪏷-x))#)E,J+e(aY^4/.’<7)I!-*\HrB+ 4l9 Ha~^ɲSn6T5#;hZ 1q<RatVvY/`:=t_D N[kԒJQF/ۋ/`bj˜iB*}mVd$\q_˅#h,!S]HNqb2#}t# y HX"&Ǩ-zw!5H$ Ed ^mM ~k ӏ1HY׊Y NT:‹JTj9*?vo$WNm8u8VәHҎix6'I&(0#t1"5s bBHt!qe@TYMbD" #퐀DPE\8£jrg#[Ⰹ& G4% L^=[ V֗ 7(JGJ$*H|O ڪ<y}.r&ԖG6$X۲9  GעK$.pI׬)-$:|H3 ]%SHMH$ ɴ|G֊Gʖu@lxTwIĸLMsM⑚&X""{ׅoet,dnsrɄY,}?DVE;@-*ѝߚId-J]ou! HѶrS?t{TLIemœlPRWdۥKׄģ$(Brc6<׏BLL#CD^3J"GQR H2aibk HQ5v; hXmGM,>&㳀ytKJlKw~J׮؉w ]ܹD,khR|軐tcT D BM{ĂIsGBRp,$D&- GJ)}qᨈ B:ҿ+[P^^"N$kmAU&^5Mc}nl"Qk{ Q]I^ l'-k+%4R]HF-]sQsģBr| kA>;ڎ MR8"e¾2CJ[E~YR E$uhae^iģы2R:mYL&A57hrHftjʶm/+gk#cT>{/xCWdw8rF/kfS~jR'VNIkCZG((qŤ4T9Hb =/I2R7skj}0AlW5q^ jUSCF7ax鰑PȁD;T4MM6Ael)9uQ{9J9ǝ,'~'Wm$4pI$IբDgB5J<-Ņ#QTz)H5'̅ ]996}xA<#tOe]${ѴN$Sr -"RG׫=Y^\g۰xT'EM+ (ꦂ|J+,x@l7EgeGOT;Vw,_8N[ګʛ52N#6)u!Ii(GN}f#pP IDAT (#YJ܃7K.Dgb^s#-$ԍ\I2NbAϦ\H$V:xtǮ59d|G6GS *bqM/8S+tlDػ6sB ȱĊJS NCT"r%پw#aک8wd$99IEH&0j_xĶ&er Iƣr04dz~8sl>A$E*!pEHb>hB>$?j|2TK|_Ri$ :L@$X@1ߑȫ_Wv~)o܁Ԗ "(}*ۮ,WL?2'YL^3[qD@gI/>sYľER?- EKD%clsxhYqJ=R1Rې b:bD%tqr9~DOj"L+͉DǖJەPׅ$"#o,ҁ4l'uM$LNuf5n&Q hE6TWbY‹IkkihS O;~ف?EȩdHkGs{q{{{1z(F\B:w! bEH.*RAFx^P<◽Q}<Љd8m\H0r&p }x'R$[8r"EwgS`k&LhU$6?#1jH@"MMh eM&M<SUcf-TVߎ,ndQcoQ1hQ^0Ŝ/&j$۪o8z^0^T@*vھqwrӖ 1uţ|d8nF.s!:g9bntBR$D`x0DH}׶X*7[5\bCUmjIБCB})E4¶-15>"'p'ҁSpDį|g^HOӥ/k ]HB2m( }LDD+PWDbp+_P`7M-"j}.eESR{6V˽*#AD" ,)2(#Ԇ5}d{`[ H?K$HURzN/;J~dG|$_N((»yeiJ0[u)b(&etHMdꪕGzSjT$H4;RQh#k:Uͯ--qqqΫρ4tPm}ͿP\jd` &^I Rp/} LN#'ID$r(&I/O$X"T4.݁OwN:i /^EBw_[ Slm8h1BƆm$'k+.('5%&l3 pD^.8ҁ8K=O R]HDٙ{MijGo}7PK'ń#A6]pI&,>(HENQ*HR`!U -q#Dx≟s.&9N|$DNɳc%A|#66[O+A^#r4v){64R6bjх$'f׶E& Q4񭖈9u"7)H@"q,Z 9.|it͸3ߑꀙ@Z-q42ģfQ8p mw?ns!{d (AXF *^^px]KA9#J_T jϽ8emC9D BRq=pMm*umxv.뻰nş;O-HRǒځF3:/~#[ٞ ("On 1\Hqi' >PhP7R#$b{'hb,Z/q1hA)qҤ}dk\i8-z#c2(h7DQJթ䠳jkW aYnm?݋F*, eu_ _{і=! oރ7_u[|[,X}U+HExA▲.$>$-G%֩ )7X!d07 Hax1tM.7ܰ\[̕SAe MԹ;/J?G/]yBNL`ahA\;ETz]59 u#$bx'qX$8t `$H~!vۭ 8 umֱWWcXhx˘y\"ΒN6I^0 8𗿝`ETU8u^C3:&vұ-t!-~S^I|dPÉs}E?/|f~4.F8bK¢ģIP|'I2pD$[^kwac[n;~|2DVzyql:42Oa_d[gY[BZ…T COnĝGNJ8љ𕛱]),_`GMazpڸH0\A ,Ҏi BTC**JdX*Aw`EXP@A4{~!>N|G-C JSS61{u˿35 金GyArDV6=^0_ V`bjg]pŦw/s8_v`{G<Om0=?݃ǎ CT5Ow?鶛R;ItWoEH6L[qሓ" _ɓ0a;N30ϼWDOQXY9q0أ6y^ EsN I~ ?Hrfś?/|޷^Wtˋ )-p%Ekքi )r%-c'Ub7 U6ʅ)̍T 1@|NZŋ;'Nĉ¿'>W|!£/?ZwSrD(iR#mO%%lH?>F/ů}m%.ܥX;_Lys/فia2l ߸ -੿z祇}BJF`-]{.|}m7i/vOl8^#,"#/#)Xs1K(G GB.ԕSaS\Os4\X22$r OqŋO¢Eq#it n;(GUGmc*:iWe]y,{d {>m֮z3$&BH+3_[+=ғ̽:+0>~8}| ilVB1BژB8K/yD%\xȉ=J*Gl bl.cA(ʃ:2ۜ'޶7IZFL> t UAl$b ƒ%'c@<8(y Gf|QHY9ۜ"U[QAtxGbeŢNFzВy 螧O$Qg/_ šC SØaJAHC#znUCZ5g1,t֏alC$\p6~㹑>7&wbe7_]!nadNUL$G0ݠ~K6P &%i(F"KA&=%v=rL5/i#A`ǎ'S;q).:q[G'}~O@jxT' hTҶ H*? 6f>t#=p,m kQANrh '.^cQ/6ˏ)0?f1,}fVooCхb$N<*H8VtƃĹ6↧Td?v3“e Bjvx;wI'-ᅦ|=8\ E~tԍ%o6УbS>MS1)+ӏ)$i-a#Wq|Q'1|0ޫ`h.r>9翆G^yD'WRIm*lm2Q&HNH@R Tm3Hes=_{a+|`ZGC/s6QxLSL!˗;xCa17ݲG-a#fr/*%%cǰ<󿓜i~x/#W^yeaY[m\5aLM1U- ģ gҴ;ɩDd?}}KR\w7nwݻSSӘ}a3sOT% ŗ^&w($N'ee-XN_xzI×DLQz izMI]GM&ĘY#]{d |דmW^=s5ŜJ<5h?k׻.sO.pvIw ]^\ 1?sFIn$r D">*/mm4WFb@7++ qh|͂t5r &;Ъ(9Y[XQѿSZba#Qp4- H# ꢌ 6\7q M*l+@R\)Yv-/A (T qí7{w`9cX~rAXso/*eK,W.\Ukf2iUƞhnDJ#C/wU\$ aSHIQK,b0jorVUpƳ<vÿww3Og<~ P /7yJPT!"$ *R/IVq"Mq@A7 HAl9>b-":[2Zɫg%l34y } 87ylB@&.䅩~83̟=m۶p'7bqkzppYg-׾$*R.dEv\R>m$(Mp)ʊJyrOQCjRf,_Fa57etݺCi-W}*bpBR(t..$1!(b]?c.esgqWStF(^D.,I@"J# fffi)[spj'M&X64|m'c6 \3j;? 7mk;nm~/nq<H!92O[qSU4kf;x4nÕ;Y,hVO Wx6^m($z;?[sϟڏya ^شΏu9jX Qe͇mTIcYOr\y, '+eKٶߵ]q8-]|C<ޚEcGql( ^+8M0Ql B L\vG 7&V$p6mR>JU0d%"75ގʲqD}]w4zNl{;n~b7u,<{HfŮ)ԕYod8`⊵pG8o`ߎ=85=XqJ8{%88Sn$ Z&a(hGAd؏9J!)GzuM  h6bٲe %n@u}d4A+AR2q\xFܹNlk;{;ߵ؍nDRG߻>Ѯ Տ6R +/+ /=!8H@K*! yS$εwpm~p7. k($ Js!O$Qi)HDsRsD*.p;RL PAAQd}Tx$ }]5m|/mGY4t|$ gP%屩"žDK H|bG[[ 1H.qQH.}:MM W+D$$GR:Rg&$M cTDHU6aTʁDa6_T5/[8ʠc,AxhwIhɤtq&pJE]!QWu8AQ_A}#qOq_pb-;[79X&X} zL) Q$)T[$uZU@a^iԺ.}}t]J=(T>G?6嫽5("q8mcKGC#i`>Q,ѯ88 H1m {+&H?`zz~{Ya2~_yh6 X#Ռ8YE&R҅HJ %n=r$FzIG>ʴ,L"&[H\Х׏0>V!չCl۶M6Nz^|||lpD=<j;rÆL1a`C DxOV$M+~bcB@TK gD#$x G$)W|+$fWc G8cG'_[1??lt. ࣗ|T$ LZ۪Q H@"Gw۳Bת_]O6]J9(͟yZ:c; *RH_BylJ1 RۖPPRNiQyZ>6echek8Q;.~?㭹[Wgg-g8E}$ՐEZ\v-U"$U HDaza433F jjtD?"!emG G AdW@C5g8Jգ\H24ֆ@IbR("A@B((y}.$5 " Ip Fs/LƖc2qt[s3՝?6Ideg-g-\K> ūO|1m?bZ3Og!ġI:q-(_;:.X*$U HD!>&''!T/ݕFaƘ17}dÜCQ0 NkQ61ň]ȌHJB۪] GaR6VL w !'j8!Es)&8{txqͷڮs.:.|Qi&hݜ@H:@Qn+.I#QBMy/VSIa0 jŒS^W At+x(y)/!YDxW|7RLH zqɊyQI{Uc!q0+(5MTBNDH@"LgBh(K⑜_>4=~ S[Q ],cKr!Ȧ^w$H`HP #Q ( Y&LDJ26p z8qx!*K13/\nx75q >8HBَIsoH;0YaL63іV?Ѝ4|* HDáom6L+a{|eı71fy#XZ*\b&1*\ԅo9P} "b;~el`Hs@$;ucbLl;+$)H2Ss7+<;.pCa>վ\ϽX883 E1SIKE*eUT%$ Fr55G\Σ郳{[j:mצq,W#%eS\HI ‘BD Ȣ@_s.$ XFB-G a*GI`2pUC#_?xo"X8C k@6;hNMtX>aQ H@""& H-1O S2mig45nÌ$h)ki4TIJׅ.IK)_%1o]D̒P$@"&!8@*)HE`Fq(,>wg&;(>ɎC#CG3)ATꄢҨmr#Deff&|&Q#! L4^bA Mı51fb0D)(xyKhĥl׼<̇\;)Zʦp!E#A0rITN;kA I:n#0622tbCan$7t¡Qi:謌Kj$UL ("e8£6MƓ6iS+ J \H8KqA)_$Y?269 q Bׇ()Ƥ)Ťt1Mbmpչ>ĘؖF|g *yn$ BA)F{$ֱTX$Tr#Ց@ dݨfkc5}oEtt ZBSL7F3.$YS҄R65ɾ$%./*)$>.]HZqBX=).N$X_}q;b[kxB l K1iX;4u[AaINR._H@opb$n݊o|ay,da{D+&ZcƗhS51AOZMWBKRl"R:].a_Gn$DۂxƏ_J%1שDLJ[rJ\LKmԭP@(&:##*YW}bxPdDT\ 𖯑D9IBrv)cjJ 86㯈Ҧ`f]H͞cND.dP,$M1b'&d9(ipUI[8_5 z[h:k8$Ji,>ΓD( I<Ff,hM&Z547Dӱ(Bol]H IIM#R ("E-iFm9!+&q DR:dGL**ŜMK}xdA^Dz _6r/*5Lի3@a~ ]bhN%b@tIWy(&qbΒ lIPt\HIZtۦX^h 2:BRo$&E; 6DB W xeͺrg|NyFT:ww * _IV4ەXd!mdY"}oxߛYkB2tP!(ִfjE R4J/i^B""q a)} W1E»$\ G| 1)d'GrLb9%"TQiA[Tҹ[%(Hu@QVsqr0H* GD#bĢ1W*P \*)&Dy/ÖT KI*$pZQ [0@ eG*3l4I,͢Mk!e{@Pz;8a֟կSTrM D&))m2[n,&"sQ!Bb|BR焖wւmsBj=>i\wL~eyLBJmYPH^iexKm6VHݫm J,icN!-2AI&ZKdJR%MکlH'vg‡@tMwuRŐDc˖- {d#<7wݬ>䅹dBx"ϜYZF$@]eT9Z}eq!HIn$^H⷇D1/Ɲp+ӅDAIC$JGfRv䔔5*FIlDrEGTthlATUH)s۔8#?Hce,c8R+ lw}EFJޕdۊEэUFR)#i\ 6l6އQ{`܆lX dKuoP ݺr+ib^}=Ήm1 {%kG#-ȤT@%VQLoZTvZeHqH4j&E_6N ,X֖Q>M-Tl1*ܝ(ܐP6ͩH HOwI[]R I@ܭ<0tW"$=RG9)c$"(*w~ ^zRՐDDHSk$տb n$CCR5o/ HZyE$ȗyUd"]:r}D&$."LRa|osGGvבtoQdZ1lcJQi'vrw=øAApj:=SAt#  9 UϏqMŦ v͹M.$ݲZ"D$ $]3)@.qeCG0U GITD8 'G/yģtUF n$DS“/77RTHA(z{zL:ij IDATDsZZ9Zubc󘚲|95:)8'ca1+b:o[h Yw̏WKHb[t˦œ_H΄\Gzդ\"F&eiZ#iBXdGģ*Dʤܦ՛»}}P =?S d%ᤸ(mmМ|D54fڤhl:$'N%#n$JEk~(Q#R:Ej%ߒ5iBzģ\TؑG8Q(p7 d~VH@""eol(*bRQ$ 0ƒma!ɲDk5/4D OrZ]HYE$"RD$pB em.#$-o%NXFL6M۔,,鸎-#U&'r+CT" nN#ϊ_cn4mW^lcX#R)Hsb IކqH$^.AD|7R~,MHa!-AQA*(]IiM Gy eT-}$Rd8n% U_^axpFr2@-e?>~ xJq!e vC@^&te9Xióۓ G&tʄGjXEK|Deyxpz$J"$ L.2Ę* 9 K~>FO 7 JRĕ,MՠSHpdE$!I8o<ݒIISt->z=yģԱRhH$7@*d@AUs0C_YD12H0CsbU%"eSH$ ˹akROlL<S8^(ñD,j3?  ]at&l#p)n$hI~3+ asSt.h+Bם, @̍^'xɹf>peAAt"Bn$3]l96A>BbZ@*GesV))4G(p@KDzZt9P .$iΚBPғZ%} G#J ȸHP!6h ARŅn9koQDV@"A18 S9( nf[yGZ , wZK,ϕpb9乒=" W^OO=37OmG:Y~0¾ HA4w7t}eA̋Aǖ%)5"RrM IlKZ4{:J.^xT :16DH ZF%luu/c,cDɴٶ4&\`DU y&}zCjKYy[X@s,ZcZlJ_f|L >ȁD+έ;8y/+v-eCa?$B4z.B*_9߮#=KL):eCK^2Gz HAGS q-V%mig2l RD6!ͶxJ22cݪHɵc=&^_b՜csv/%mxTcI?H@"uhWgD"amkXB jz\7hYE$ ZBX ILglD#1j*cP$ btO(yڨQ?,lj3HŖej$V̽8ԭ*.Med+#4L %lA8wŹuP?%k9{iuB2hTTao򦶏OKP.:uK^?V|I[ P~ we.̮Zixb8;1(Wq:2֕/ H ).fE'Yɜ\ۆED~}Ohфt$!$9HMd(UP!zia3n2F<Hc$ +2R8$ QgOp[?&3"RzDLOu(FyшmUD@G,9nB#tZ"H9%B&W;Q17/?;emJ+7#.)WjzҧU1Q@DD:-;qX4P"RD"RY(h6#"6T)Puq h\(|jUYnHh A m=}ša\r"(]|QXMl kf2,{!̸I@"\͕ea\I9GxD4ʁDD(}Tp\I"Cb+A"&$e$ H9W^֒̍=⑝êu r u/a+OȁDDEu_Ė9`v9J"'R!tZ4ROy[$Ɩ$&2Uв5.ؒE$DT^9M^rG4FhDKH%2\8_&v 4tݡz2nֽ!oEKEQܦ0 HApWȅ`Jc5"D% \ O9H@ƒUdvW $ AgmeDZ+ Vfg,nd 0YYkqIJVoY?jh3լ%3DNԀ7q: =Ċ7Ն3C I "eZׯ ;|QHI"^ЪxD P睎|xﰧDF:H !;Q8U&ҋu &epq}f,r G.:-E;@77/}# HD,HC8:HAZB(*lwwE`}ݙ3ʘD㛝t ^lLPjr8H˳ݓ5 KNM?ۃP۵-}UyZ遴I| -GDDoghMPҹdѩ =:1&e=۹nXǃ1148`>-\cjޥjbQyk# Hp X_H;Hc5?bV{1`HM Gt0xS]m]@ pJE':NB^ HyZblڝ]jn~(ڭTбdEyĆ9$}X|s锿OztHTF,}'qJhz#<ےj۞8PhZx5GeYS;ځNJ*?;q-ie jDyf)D8ۍY@[t5$8;VK>Poʴ}ckr`kߖhǨ:WOꖥƀ;,ܛʂ7&Ǚ{ǜJf)5ިD@JpVC i0r!i^'Rr UG&εn bp?Fg00yiDUn&BeH{]F`LڦI0|/[Ӑw2vŁh(Kţ `&\HB7u)ٰΖ3.Rm 9`/07݆Ʊڐlq(ʡ%߿?ȑzCymiEk7@?fSخ88O5e 1DKR{@ l׻Vl0W؉h }a1foTROWh^Jz5h- lG׾8-j(yG;ֆh;GU @?<96sSvim@=2l뒉=Dޜ-ţ@&R™zDyME3]InBDm@[=>NK̎}͹sTnp"_+ Hp f37K[s&zn@\kq`Mw1<Q)t6OtY nBڇ%,*o,<֜tK5s[>.Z>'5&;_?"XJ٢A8`⯂ɻU $p"{v\;h-|?ж\?7`Kt%$>- uH!= ߟ|25ScLs1M#,O 1,] H( ؇%vm;|5K/Ui083-޽/ ki^s%Ǟpg@,"[IE7$\u"^j;;&Z+v]`s=j5B>-Ɯ) ѭ%^ $"f=m-"5m#q`nu1&%6Gx6 WA5rrA@40wҚmpq7BҦ`(5Nkɧ$Pn$"+p w=FӆOa3y[0mk10gPjPD9[N f5*OQ~ge zcQLOa3]*ERck*\yl+ n͵o$bu6+= Djnږ>=%GQ4#MׯոK.F߫+?"Xv_:j7KG^pDTZ>_ nFx]k)F+q*{7aX~yUʒOk'>W+6-?݀u/p].60Fn>~|SBwɴd n|[. GG-ZhǮ\ޥ` R]}D6J6q!M(,D/56BhyR1x ~.|q@u}|C[ui%-ǾӒ 4} Mcpš^ADZz%} iQ0 5xv`.L\jUZ'Л};_+ HHaKnb&k'߳q_ӵcCRܪ`MT9øSyQ+4|+sGDp V~^J~Hه0FJNpIF۵ͩ%V]khܙ"\z~! H*ٮQH:hinH{Qvyjm=F"$}hR)Ї-@vMX׏;-͡hG:vlVZɚR镛c`Bֹ9Sk\1Z5%N\ 3gђny7ҞNY/G욝 T3Vѵ8krd IDAT#iN:nWv@@F>軙fNHK試v-Nd߰n&Aqh)WǞ*1^[?"B `~kG%;Nn_g嚦Z4 iǝƨXs\Gtm8|ufBdMVfMN|Tvq9eTL",\{! 6\e1_20N|-$(Bm@l.#Uyk,UDns($k6EO?;}@1m~=Pr7_GD~^}r&e9mrBؗTIG Zl'& WIc Wǫ&\?'s E۲u\2Cn\i8W[? b_uߎuGZ,Ӵ6F;S3b w@l׏|pf7 h38@mj~ϙcbצq9;%urlpGD[3לU<lCϝZO ILj*ADr}R۪7A-bi+@E|!$f҆6y%/%@j,߯!4ZsNLTO߉c}$ Oc[yR:MSDJYvc/]^{ޙ!\IŴ@M۝u`$X y:qY21i'NHJ&$$\~Q'HMY- ̧H۩ml{LHZ_~_vwEڐly I`sas.b9-\ʕܩ$oJV.haD{TZRiTvgXpe Ip&to1RF`5s 6Ǹ'B ֦ULqd[v~q%lY!\M$|]Rj*\}L?vo! *榱7 @sM޼yZaB8ߚT2;^uB8 LڥkWS,>5ǖոKz؁ v?|+ZN ;B ;Ah?w \hx IHk uj5R, Vw RT/!MU3å,<̉|5l,@`5mM\;|ý hA@ .6cń%uN#*;DS8i؋$ٕ+MB)ZN-^ H0ׁF N9*me":PD2{gu H7ilk%Fh99@H >" Si{ijAJ J==wʻ2k'HQgDCdW<+4V|w卯4aR_Z=->;X`G65T,P+IiIJWt'a#g"MowEn4HO?;ɕ'gp#`[H)Ҧd:/))On#ޏGEybMNG1).B:ǢrRgwM_#"z;;uG@ʹ& eɩo8:2k(:f\;'v2k.7n&/Rs/!MepxR?w77$nd2,o2kgpk':̉4b2oЮG#c̍H.ϩ)-Ę׀6pC$H]y}Ҹ:=6L4=$w,EhDX5q ls)ThAp: l Orn]g vS[.Ťv.r#E\)ִ"6-3fUuҵW_?6HMD#MnlVD_h7XBT4̢IXPs%q "(-L[1Gn$pa @dEXJxJ1IH!)y`BJ*Tj6TBCP㼫]w(L]}wv>Omh!Q0|-$ؕ.7҂DZnN5ZRH#nbQɴ\08˩T,n$0 L(A)W\k.[< ?軆dK(FHJIZ5乧fHIj=t$C#a΂13p!}~2IqF p?f IŜWRr/'&bK?#OJH*=Jmb.6<;ı~OV*M@@@8 7s瓑QF*'U=<7gKJDKE$yK@\̓n:Hs i=WZV*I6?6$A+J&IuŵPԘfDI /$hHY)nJ%@LÃuXck)F+qNq~$p&p%8~rؔJ0 D2Qf1‘؜d5t $"QHaRb4 O}V D i=5;0 &H5%ZiyKw\pɴ'!"E$a_1B:\ti!"(gM 1! ieLZ#`䀀86-NC.F6SFJHIj7H\WćHK+h i#B뤰~SV,j}-$$||8bo~$#)0b/!"TPLBNDeHɭt)agAD;SZjcw$0#$p!m?:Ĥ @(z-d$5/G%[; HW*`$O[ț ".$-]b-j9 @ |76P҆+[.evsyzT3h$’hIM*s@矶A*;ʋR5NIE 1Sb-j9`HHilqF9Lq#q|1Pu0]zlrEDPJl,3g`ϊaTi\Hhii\Z 1>pQ<;pt{aRX9є2#bnVL $<#G䧌44R"9|eC[W׬<:s$]\\q اAj|=Q<;p~tYocX5yHlvTyS$)!"H*=7_0| mbƮD jƘro WS @LjE@@@w- %#OۉRLHb)lV|P1IQfp7=JكbB^P=呷ѿ߿~\q cxJEƥxL@ p )œ%dUt}1ŒhEދKĜK1!$$("RP)#"⡭ژ_=+ ^+H/ }iܷVTNl*/8@@v+l:Pv*bdWIEof+O ' y.%"I7㋀ >j+EkΡIhP(ٔų@@׏&L#'X J9|AbBl|7 HD-P;vyI2"R7WC+:ֵƕxr]Ңr~d@ZHS)Ic Y=HWH_$^i8mHTDEE\`& z.$#WT5ʬ('MUHᐬL&G EKq Ip>] }(. ww# H_ p*6uuKa \HkdCƁ()&M9.çD$H1P6E 7 gԸ<&j"Ҟ\qrp>͡Wc D<#\Htdi>]"NNc.$ H|B2;ĄDF8b64~r)QN"Rf=ݲV乊X~}N 0;HeZbKK?偀8eu..$)8hHN8rX675x]H"R̟Ġ1,lvvھeGlGR_6mxiq|Zy p#P צ8! ue1gxJZԁ#'cf@r gH粇L5)2:bZƕmZD¤..Z5ǖŘrv >~Hl xtvk%$׌k IK1 I IdĦjr"R l2-'ı,zq%7U9GM21RRF H@@T4BQR#aBD Q̉$#DBg-qĨ9)Z}  " P eil+r&B9 JLQ4fR<'q! J5^&"EI)T($g%BжҼ IGPa4+"];jpGcؗr>0r ;iIVފ}rbLG3b D I DJ PFDmX\&&bLD jRDr7ɔR,l*:Qh!iֳ;p!|mkmc_ H }Hv9wؤRJ(S\ ؜ GGb;y±DA!4)װ\&"RɬZ]LZ9K0*a~Es`: c .$8 $r w_DAIf8qj&sFDR Fj"QP9quz֯PDJL׈H|RaP͢Q Iˣ{rpԄ"GrknvvHk DRy5+4Ve:&հ9֤?i#3V&-+RJ:"Em>x v풒Bi;C۟lf_Z-۳;pӑUpݩ=-Ǿw?4H_Hil).+B'DIDvW<)qgM8NM8Ci'wcO[5 ^.w8:ҵSS,1j/G˱oH4H1,*eu'0"8u߁>˴4e^p"Yl\DBQךBBDǠD-Fh0Dʋ:vY94ME2 " Հ1y@@Tw$P7+[(GQD IZ!$jEKIĎPDr/"*d|hJ)R2mkh"l{M(< :{S_D7L ߋ+a-@@@Tzl #)F!"Y<"RQ6;qq(T&")?urcMX)eUe2΂(&3/2!)e"ҌVtD|RΡXb_ W@H @@T OcsDPfܴȼD9i仐RbQQJ`Mb9.")!ybH.)-adZu\{ F%9f TDbQ{|%\[! 4 P-_Bd34P\Q|ƵYHQfR("e_L"_E$F -O'p^/X({}K!)۲qp!IM)W%@# }moc;1Z"EZϧH1g'.ECVZd~8-Y6F:fzkv_)8x&&]}"WcK?PH_[HHf>-HO"/-^܉un]uöTic::H‘dW0ow8_s[;W~(;#yk8)\YFJ_WiьX=qq] CM)-XUp%J@r@Tw`+bw7 ُaJl=F@dD'Nf`+Mj4?aDubDZx@R9H:e&%Ӈ"'Hjg;q;( IQ.&e9`1"kgP'Y1'' ⑓tXp(Hcp4<m^܌MsNI[ХBRES $ADr sJ cB\/{6pH_[RKcӑ]IKŗDF姮)ԴN:S{}өl7Mk=e?{ l[*j騦U[3^:LF >高O3'Yr~pOb,J}@: Gfd#GnR7*1SuYe|El'uukBD|N*Ą#L$D$.&HsD$Ey~6ʄ#o%RB_gFL!$eK8R=kA: wG'"NrNxHx$GdIu"YeB)Qi jTlps!TNTɶ\u\$RV:H:l ڄujwaȊ A#jYAAB)lˉIJQ.t)/'LLr} Ab=%#& wSu@c9!iTF^)rI};>œ8KI`H_[$@3w:󩤕pL<" 8FRTRL\nJy:&vL|c0b)&I%""aǚ:2ѬX3S%OPQ DCv4t$'zRΧxRا#f@@4CƖБbu n.rMG 7Ies"L G&9ɤԵdhJbn{X/>,b\}f GL,2.jD%ړ/ zX]4ݏq)+$,kiTP"OVtH_H}ґ7Hrkg8̌QpTpؚX'gQJ:U`K>/jM v]pӢctuĹ6y3YcSb-sr~Ղ5:dv@@4wdG͆oDZĽ>$3HalSƄ;#&^=H=uD=i1:R#;M?&mRbb3-Edx<1*qBiM.z)*mq!)*7RpF-\H'rq|k)EK J2@ 9b^hbo.Jq e\-e4,p瑨{;zAnxu-V`!R̓9;L䊥6zHE\cVşBjL2"A,2ՏTv8 W bSVZ]SjƘRvu<: }m[ !~tKjͩ/΍dk 1H KFDztuX;Hv*!5ы RDAȒ("ǜ&ۤDٚBQI>-'&8$i-$"toe(p$ "R=Sb st,7׶)l& Hl4ok>HMQ7~XاtŴE:P"Ll֤zERD}OzECcHa1HD]S+nLi3$ҒHi!zHX]\G*rm5ʂiHt,MO:]چ-⮷]b_CdVrEGޜQ왒T\wk\k $?|޿2Q*!=/l=$Z)KP'I~ESKsȺˇhkRZS~h;Iq l=RGDv^7LCQO[k7hRxاxNCBޙ'O]md7)&niOH2+)BP6q턈DC4!4$")u(ԗ9cL]erzkۃ6@|>(2?nMd /\HN<5yxACFzԷǘR،ӉuAHM$*ԛl=l*[LJS|`T^lqao6JGnC?d~)o=o+I?L^ɵ1:oޥA*O1MbszF,-*)qS};H_8k4X=<,njrsQ/LMm!46e _*LcӣH(i'M'RSٸЦEdDc}8b왴lLJ3b,&qG青"D"o [RUf?)E '6|AWJG~h?x\69r:]H9RRCjƘh19tQ.b%@h[L?؏?Z˗˶'IQ Cxk<ɸSm͊Doܲ}91q!*R" uOd3BŲlr42"uxLq"QJ0bR+!8AɏCI\HKHI͈M D8sEEveu{ް18r.jic^…}@ y|%1Eos)9t41} ;(3kMZwu?Bu ##EN0ğsE]LF,^,Nw݈F{b )-#-ǨG>!ƕN;HyΜE 4|Sٔ}>R7dM9rObSu TO=iՑ^zzL 1wD}OI0t]Npi0(F2N#"W/cg>v^" ű1#OC^8/2)U`{^qN-eu\p!y[[ 1jkV^m@~?8 8a/z.5NIbC87z?=PCXm i+B!뙑$qDǗA\'Bg!#)sen!2;zub/kgNeO6R93Vw=yC}, NmhWۑY*b e 1hbkh:$%iaH;Aȼs!)v%Rٴmf_Zؑ;j-N4蔲#'! ?ʥByB[Xw Ka*T*p-%D$DPaVG% CZ>]'KTG1j-Gqo$p?Ha\?&&pWG2ڭ$%1:4OmYH:x%$^Jۯ~FoI,=x{HcqmfSثȦ`46`~{K{) 9ub씶3Gb(9<]q;S)k~]*X:vX*62ۼEÒμ~%/e8{_GhkGwg酵j#Fͱ0 p)? rv&{'&DƝC#~}H\D"l&JŝH:2-Wlc?x&AHB)D? )RTIQ쳯FCD\]qv<|m*EjIcFD2:5\<"\eN$i;3G.Ɖc, ={G8,⨥ئh9-# 4 p9 ɟt"Y19 2FqB 1aI 7їI>Σ`q"}q!ủN.I>ye"Y|Jn={zX #{7}ėHţהpH*\/>{E:kGP+`uJ19wƳU+Prxrj#FͱM74׎$A>;Ej 'PdS؂6R򑫆|ROHΜ/:QʉD1 ⚛f&3 nmYcTd22HAG,ESwu dz} FG@JWns~;"X+ /KuɭW'ZϞ+!{ j8@|$%ӸEH6mZL1m?#vt*yj jH >~O*HDnp!&GHn|)RBB<΅-DS"/&?&(")lv_ Ix1P矇ґΝr#)#8) t[kD7_]6SY^T?:Bu;Z;KISoIB>kGNOL ɥ jtQ≾x%2O/zH].$W5IL!$6--/ب3Ջ:R=H?B  Xg*|*WIeHؓ릈J3.f w בF+$"7WYknZnы4i<_/cD &v8& +ZYK)jo pKL}t;~_iG)lD./.@dDL"CqEQOTa,Q")Ȧ=aHk3p< "AD}RFݘWiLe$Rt65)luz/&SٔMeӪx%+]yl"z@e|BQk)Q[n-MbeynJ}~~Z=+Kc#ƗeT]ǘ re|kRٮsnN-qB5 @ڱ,҅Dch}xzM igRxjϩr"P>Aodsы #:d=FJ~oՍӤQ{NHQOƉ -=a)r)jE!j;̔>tDc_8s J\8D$xX~;+N|tN95fH́4 #幒:x.?_Kbu&:Ѹr6 n'R=qh!)Ї=+ G8+fmVl >a4zRQ{OLHN@:I쫳.$ȶ->bڲv']HNu)WH;VY؂\R=ja6t")*(8'\hDA~tnɗ=2Rns76xҕzRD\C*awN.=t;9j1h!)IW?:8&p!qL9MfqG{TBꝈ$&xQw%-[$n|cmnO鎔ҡxs"1 7"^kO(TI,b@(hQ}+>ۤh$#ӂLR$d>lHam$jViG3Hv@xZf2B܅T .mi~#?Ɉ$F9R/G mօ8#0s#щCuݛ$H@ !Y 9'zkk_pvV"/"]AxaGJ9k&sw:#;JIx^ 1<BzKb,niJ8J_j%ŕ)Wfs?ٓtYd~b~ -}4ѕɈGMe[zE$^X;"lc X)1¦?^:v\Xẹ"Rq󒆅1EOxGz_8˹WD%Nl %#X1(&&E$ED %ص5|5Oye= "@Mh%ԗ&6|Slz-7Xa)".^'ԱވJdRzHː"#BzSo8zHZH~amfX!Ɉ 16KHDʺB"B0~‡6mc_8RNHaĵB K"6ɓ/ME߽¤ }CM)YĐhԵ ?~8Gy7im'H~$fSo k\=$?m>xaGPL[B+- jg^IR x."U$;ٜ'msK6&D 98"bR hHǡ^JbRR&.Y\|*lœ8K=.vq!I(V {\?=⑶EHB E$)$j7zJ6ilOe"ChDL@ S:7 cHp\A̠n7!&)sKh\VRJJ1RxS.ȊOGL}}M>Omh%9@Js1l7bڦX[w!'ٻ~9xx:܅dd߅Ą@R(%!"Kf*6LEd z1QRfRBLq'y.)"Dj![%.lyn(ρdڻwBr A_hn )f.U@DbBqi#zzY!# #T6)"уlAmBHB``.$5pa® +G1#0$ME$R3)"EPh+D$P"/>G}1;"(mB*Dߧxr fGLTµ8| ns!T6[)[~E$W IˢL<_yxJvѐ6~G2s bڣ]HΤ8u!1|͋K$>qg0$FaH% غ i+T6eGNHdk!TGilv0 Y[D VI)t!-Oe_FgJK Gh\"T*[RL0Qdx\\"/zre…T|gesKBHRC &b]Jk1Gl:u"iE!<?G]HVHJAZH~' I>QGo􉥳N$V ==͸:.HDu!E4N,G6!wEhuMX'BB7t!eנ_^h+M,!"C1`{w'5H_H__hEkuB4%46+"ɉHF>zғBҶŴ )1"R"3w .$bBG Ô~opB#iDunk1%K.?p Rf& AOm ME+rT!WIe;\gӧ|j)Gk.B((]okg:YP[/4gB2T jp!uE.$tYBB>ئF\o~-4HUR /_N,ʥE)/"R{!cq'qN}Q]@@"zB\ He{mhkG "QBzBzd]H]ԅƍąET92>WFJĠG j9H#؞INi"I\'% nBjyr%пb1)Zy)E@x;;y(kZR杭{IHIiEVD!/zpgDOvYBzRgţԍ.X (iՓVFL h1X"Қ -1Vkٲ[GccfǸ62& IHVx$!ư]V97uAskMDJS]Eg\o NiE<ÜKSq>Ǒ張ScLSxd_\ $ϑIt!I'.T9 j4ómw:l"u…j usu.}l 9mbw{BtC~+ljb-Q@$PPI>}rDV"3L*=)2QQ X9ϑ'T?\5ק8b.>vku ~~4&]H^/B^$Y*| 59>;U$#$9WR$)%eOnFu#}ʧ1|5ٵ֒T/EC$G?5'VƖU"z1PO;qa"R%7Eo $!R@@ …<|FD='Ke{\*IOBFwʶEAm' ))b l{Z)lFŴdzyڄbĄ iʵՑ=FIJw 8J:f'yInJ$Ɩ'/7Dq#kϘ,AD\5ק }ͱP$G &ǟ~4B""W09""YH:H/:H[+J=9 Х~xZ,mL*M""b2TKȧDX2Z$ D[LjEE$"I-,b'q9ͥ4$.wJ;ѱ:9yc+a/ &Q@@ >~pL3\HڣpdW _'=uXN{p"M! $$5:HݐuEkR(Ŵ椱qƮf.Hʔ]H(*"&PbbRjM M v4WAD:bQ{|%@(1  @.c=z=@_6Cz.QD(JҷMƽ%)ꔿΫ{BŴUDHA.%EbmޅYa#-\D EFx9B|+V)J*؈o9#M8SUۊ _Y3gI'x%Fr~ $km xN_BYR8:.yŴ{D'DZ-"9qKe3+ g<(BJJ9a Ɉ7aٔ IhINټM|?NqHct2E]a)R(-q],i' ~`rb$E'gHLk#EMc &6҅'>, ^k@hz[iCJ[ƝH1ljFqu2/DL&)+ 源]HNT)(Okօ"l"/,#EzHɦ*A|s46DW˹9đK02@Z;@@B )U88뇺GZ46-is^U=$'tBHȥu4ƒԂ%Nw\HӨȅ$C\,"gIk..:HO"M[vE.hN/RBHA̶$WilHFQvnH97 z͡IR;@@9R7iwvش(͟ד}fSٸd$"k/?,։6~x*kGsIt/v!w|([PD")BO~1Rc+Śyb˱̳<9R "CMĸxp IQ[q!/֊Da-!Lx`"^ }OEݫHus(\uU7L&E~RQE+=DzMʎ @VHq)6ݰJC4Mɰ5M$ZRnB){(sѶ[&㐄M'bBıpɀJ׌Ի6lw@y>j 8`&w!i-F])}Yu!=9}{~o% .$Czѯ&yҋdx>`]4Ic})]L;%ͿG]mGB%"2 KY(<#仐vzL6$TR֦M&v'9K+:Oا3KI>3ƀ ǟH6Aj.|mxCS~ooW"zRʿH/"$=lXښ.qCZImI׍B^|:[Y*\'x[PُkI,,s mCJ[ Dsj9OMh%9\O5 x`?~@{+$ɧNҷo[Ͽӯ􍈾ы体d^J:_ej"X#2&#%Lb: W:+l>N%^{"Fĩ2W<>%,i#(6ISO|x&9]vl;L8icN1iIv+q}JՁGHXDaț:H=Qߑ~t"kU? 1 ɉ5s|H9$4}>)i GNH.# 4|1mjgbj\ ɟeƊ8Ms"&v9FZ/L'L=mZc4m&!G9Ȧ #nryPxeW|a")\dxr\Eo\P]@~/}_/Efڤ5Qߓ"R^^z%\HJiNB:zPGul7-$ZHX6]H泰ߌJ+Ҋs")"/!UH5i)'Re*qTq (e kcwȜȊHڵ`ʑީ/hղ1"Zu"}8R5;{j@ j!k] US{ҽWDz=zCz~o߾^e IDATFƪGϯ_IOzѓ^=Фŏ#&s YIrAWRP@Y!oxӜo䖵]m/Zkz n$!b‘H'u ̧GYw<޸x(vvwy}[h]{\Rӏ?џσ4!?8kkF{BR.!Y9_HS.ȅdB@gӂmM>M(7昃140ʖ#=?-&@zHNDH҉D}oWduLx71&eIl0+# D:>$+l!& kͮ Ȩlb" "2y!&" $]\6')+EI+\On'+"A7u)KQ0COCkPa:D:s9k:cq'qN}Ma\Hjj oA1iQCqƚH&]"ED/ s0ވtX HFD2Q9 ɯ4K9ۺJ4"fTye$oHpw۹I)#JQ "=)#X"m(~j^_uLCTy>gMѢPQ8w.}Q<@@ FtSHTqbo^ S^cam^{I?4QI+' Oc3IlKDv)0X8Lk#9I8{RT(02,‘tqF^{>S":RMgc\ O2LT+J@Djb=.su}Uk"1?~D澲x+~Lċ=_z9 kW6i?ϋ=wNRBZ8rAJ_!*X N ]b\""{=e.}f_H;}EcND2J/"Y(=6(6A]R߳gb-khG~p]jƘpM78Ͼp Ƽ~/}_ jĒKenH?n6)IRH)GFNЏթIaXؒ\Iq! 1 k>r l}ï[zHl_L{M,'RII 5usr4&"y)z얳߿^Ύ##p"]?V].ƽH?~szBrph'GgN{D2.u$'=qqӺ ɸFsuE2"KiRrM1b{|yķ 96;|6=t)IHcD$so\+[M$yNk>66Q "8(*"m',+$bcCD5Lk!FqP˵=I`!p] ؂ iqg/lD\HRw8ICkҺ#xV=)ݑR=+ \#BJhm^IJWInXZ6UҎoH;FTLeK$_yChC룽bڕHNdT bN"gu[[ 16Bogp]8`g>~8OV9SzM}St̝|s|7F~lN}O}q/͛H++ܖs!:c7'&H|9tqumr3ZƗw\בe ' בx{-?G8}3Nk\CR[ pH?B@p μ~~4B1EHzMD6 ]H31 R':Rzp IiRRz!Nh_d&qMs':޽-Iw([&;ԲTji8sIry/0Y|aM:J1TiZ6(6櫆}AGu"@nݪWuf lj[j)h{ϡ\ 9<)lKuSm?A+4`{h['t $eдER~,rHMI G,k(#ϮH]`*[[W{ҫlGzm4:4zt8\zZp14.Q{8M\H;hFQ3ڋk7څiljPSmu{v0 vik +oX\Tg6r%]~HZ#6}cVՋ $Ha{s3:avV!?7muи/Oն]X{Py~>rTԆGn2ov;k><҃VᣔXkυ9"56W +o;u^=٣oh.0(zo߳o_m7aX-W'%T\Bz|5}IQP}T/$H?L{m*[N C6Nkk"jԷ.tz~i9N2Y n`YvrMi3C#h7+u`}?5HRkS0I*#sm.cYq})\J釋cUMR>S S٬iڣ<<:}oTileZnF59#u84 iO_9bVA.P}aNu*QJv+Y<9Ol|*R)mSNρJ?}{u=S{!`0q.7 g6 yFBmIj['SJ裯I^˱OjFdɳOU&Xq}=<44T3ŵԪ)l݅n)l!Y}'<ϸ]uG4̊#fri.ii*jmA՚_wە~۰_cnɩe|Û!ֿo]jRr9?)caH%q'򅬨>dT T>? قv:YlB!34:Gݧu휧ѩiQvgdw,EKӢ5.; ǵOoӫݟ6Шmѱу)dz9b!dsHyu)dWR_\Jq*eEQ>U~Sښr)mJuSNѺ)nJ6ӏ F A#TaInml#g{R6I˔R3Hb}fQߥi@^||zH)wW42Fz.p=DrU=8KM{~ê.P:f+N=[oEW#њy[{HZ@3Hjc=Lj{cݎv_HC3L'J~| L Rʙ] M?*kԼo*Ղ}h?@O;G}4=Ms06o)rvق 0gfx$i!Y3]tGGmey,[ܯf"<Ihu<4}ײmDEmK:ԗ)Ҏ[H5{$lGA|zz6|W! >;7&C62qRUH'H)mF@ںzg, = .v,HۆUHSݶA?<h-eozV4B|mlOZ‹FkBB|.<HFp3\=W%szݲwuAa a 'F߹Ѱ=F.ms`oF2nlqv,ۚQ3BRs_̀j\  iq2ny!N}iy{9O֥3Hi_@ǧ'ߴ#e|oO滰la^W i9d2>Mk!iGM3ʌF`o00m ֌8Q_]dޮm_3lei[?@=+lb`771iQcM mH|-h6٭zW_6t6@:}PA?#X>(pPGAѩR)lWۮR:(uh3ZBsPB 0BGmOM ?ݮT!mMqybmv8hmAkv q%2ܷ̌Y=(yKnLFŝ{ڐЦ޶ؾM㱔&UB }v{>VwخjÙZ i\46>ͨ`jUImGQ yskKsg1q¡izt~{!)c>7y|\G*Ib/~89ϗ훤g轸bp ;\8{@p*v=$C "<}Ock h?۲T}\+oň,AR8HIʸOfJ_Vl!%2Yr[ :7~ "mCB7R-GD>U](o{{"uHj>?EͬB:W'HMmcyHjw:.HGEן [Vg5FXd1l1[W6AN`&΍:\o "Dk#ØD ReFVc9iAxd M{-hH`F/ N+觮5ƕA5)ntnsqJS髦i>i:(ML/l_Y27,HK|M?4^|wjx#Vx۶o_n2vSm?u;4}!x2h@{"L=DRIYvjh#0Rk )ϭFZˆѭ+m\%Qw iTߞe3P%]0c1%`ϤXQ6"h'w& }0DP` @7pTW_A٦oSp֨A)մǀ)nFڟ6gp/3\Wf?M\ݎz6ؚu\]SیU ,qSϜv玫Kr$Q=!;zInn'w`3'^}6 $(w/i'mإxuƕHU=01mHѧ)g}X`DN}eOIDi_tIQU`aPclfx=tj>g8f-;AF aѯg6s?%Ej|H>9|oHH @B,IC6}2BT5˛aT!s '}B1i;( ]k7DD0/i,ߌBQ3\g&4Ꚛ"Sn։;̊h6j rIIMC!vXSW+uuK>Nί?`x料֘O4k 6$@Rj 3vSm?W[9۴A7?&?~( rz79hidJ$|X؆_*'Kx]KwLJX͎8k dhfF5XOM]t.4x`|7=8N%6%ܰ.}=K9!DՖvuRklJIXTE:^gh00ߦH *H˪~.PZ~!87Q IDATlҕ,\hgjoTuat} H“o_ !$~.jُD:sTw@ 686*a"+l GZFkw9Kh- T "d4loaGl缜؎Es`A"jKB&)p?_!-P}4M\ GօIe*2ݾE4>HB1Hcqި/[r,8񄵰wR[M.uVMI$b]t0D##N<%`ɹ©mm(4;mq[v~#vAmIh$._[Զ?,EALHP㕺z%8:ݯEjAW>}M)5 ZT7#[dvPצ]XQm0i+E>(??7KOu1FmIhT w }\# # @>B"u"٦Y$/ʢ'qGiEH=F$>f\:oe'g a<|i\)}92ەrB+S$Pj'&Q}$`*7!R҂a0tW15H j{G7[`>0e2!Fa¤URFZWV*HBmJ9.Kb-Q}$J=wG! 9+IhPz4liR>Qc鿱[chXgaҪ@)t5 Gev/t_R{)oi#*/SJRX6>T͋zHJ>,4DC 6>PЫ.w !iHsf0j{x:ٌn^ϱsQ隋H}23DH˔RFr}B>G vHPg ,26#-Djip=$6ՇB i& 㝦G.cI_zi.7X_0BX0\o3+£[߶v iO |TJQJ?"LBd\S"W+ɳO\"i1"nj!G]u IR} 1XHcb=L2 Ջ _[[,jl>Y162ΐ_plkq"iCo+/-,ԗ)Ҏ[ I#L!@|z:jSsM!~3 m;ZҸ\e)c4D"%312mn`@e\,PK&$!JIyI[S lں^Qw1ltG.ZXΪ]ѽRh>)_93tH/&$x>RW+'t ,atޒ~M$5.< &G 8_ ,+םXߐJ6<5ly?+ c}B5H)OsK rJoI@| @^ܼЦe!Rcކ.mp/W)4M: ?KAT>Tz9hsh6PoL[s ߶mSWmѶTTc* [?|0!Rvrg-- ا){ U߰:s *Fo v-$ n{%H:ۇI_ƣa` '˒߮`2-3NXjbu^KL\IkFb5PW#"@]'>QjH0?C2$-äÞP#@qZ~˯.|"K~`46nhY#"89BϣH쓏R aҮ9T ן6Hk!AR 6Hn¦:Jk Xvt{Zyp)(Kgio֭XbbڐЦmJ|R~T?9B @;`L3Sj>Dhkt!Rܘ!P_hAi1{5 Ңffz:[r4ѧnzAHZ )E4F8sJۀNb|H{kI?5X#,E;rR8 D`J[$7C:/IMWD5ց=< r Ws <MKC$OH8.[F"@:^gjLHډ"~loC~nCɀ^bf*\ZܶEKo<^}mNb"jl?wlW@Ta $ؙ !T%'rI48}a/͕7 ,ίtliF(ci.."ӦIBlJK-{ҡk ܝr"5']EPE}.cŵv4R^Q88 SRCAY '"oj؇k N6C$ʤzqѐ;<(([+G_@֌~%XR)SMw}E8Lv#E;uu.=* h"5m3hmKx86ܞs;MkިЁԊ9?"DҎf>H9F[ղ9,EA @:^t>IfB$m>Djwu66_&M:3S׬w:֘O $6-Ȗv+T)WrE&Ta $ع>DR扶OJVc!鿺Os0NG̺}]&5.lxAn۔[}$?XE[ ye >l!Yb^ɨ uIzf~7TEVGb<ҁBEBS=~'RRR%G:""G؊ pڧ X|]ockfSA\qWB_35v`GGMqBB/J)'R1>.0C '@)u nݞ~Hs@R2U~Y#HjFsҔѸNv_\;~TXt!i0=(.6#燅8v1OLk rIb5G 0r{}b WF!pa8̍wΦpewy"+l|C Mt“4<}CARBI}RJ?"L'`x>;,c梙m՚4}++~(wZFL$(5DJF$mV)[O! WTit{3XϏH`g0aa$r6hsk;3\ ~7NQBH|IJ{;ԗ)Ҏ[,IP}N!B?IvG Cr&m~oZj,c;WYL" a'd%Hn?u磀oBǒ<>BhHIw7ws>DiYѰzQ CM,;^5Z |Zܙs'"iCo+kFUZ߭#,`͝ttɸ3tf-ghWe&UG DFmS{Qi 7@ @̺:^g-S!>SFhs&,xW+-D;χǾmV )u5R.'$iʎoMm#DAr{}]I)w4oIѯ2S׼;,VLݾdj_ ܝ;ɛo+DuR$iN}@hT!$E"W"߆wC$6FWvhe'§V U:O()"m2I1ÞXj r'}Bb!&$"׷3D:H it~9w>+UGf3\t!mbU#Œ*D)?}!x0 @BLHEW')"AR[9ߪU-9+[eMтپ?^u#8 !Rvrgk?wLĎ@);#FXxda4 Fw#q/118]>~4D}M "3G^qiԷ)% 'չ۷p\(1Qb#@/"MU#)G5RC3\-^\M:ͯ2H}+4Jp4S>`ժ iOT$UD5 ?? `;w<wIz Dn5j>Pmd6'Sm7s/.`d9M `I)W-cJƛ@FuI;F{Fnr0"PlB{91>".k^DE 6=!Dj5]U iAY9mb5Wvuj \g(AͥFzB{M"xr= %HK-A-!+X={Tw @l}2RΊ" ː"-7;& Fz7Jh:*1DJm~ߑЇ)K_{ wX.?ȈV 0IJFV7{ʅ܋4i|3}q b[2u޿%-o$  [ !BnH$Wg ot@\ݹAp䁲1O_!JFJ|ZڜRZC P*Gȍ ̧T=9^ ǩց5f2DH h~ irHۢDZ9P!P/nrw @lhd\8ݶ2ã $~"QmIIiQbC2=̎☻ !%H |+euGɋo!ZQ#yb)"HIR\R xqs6yG{liaBG$6qc>6R<ݾ׷~DG ͋PJyE㛬:֑Tv鹲*HS~)*%[qZ#HBJ)&ƕ&8uCV9$8zr9<ʴÄHy0#H/F^S}QYyH흾Aqo`3LT J-'n߾oSvmHm9I} J헯r XG ]"5E ib#m^;iXui*v20)v7618FJ\ڐZ\_0BJ]HJ͗ .7@q_"j6iDL0dC^ E5$frR{J-!\Tِ ƋX"|6x1* <1lH5͔o$$5-Ͽ . ! vcw%`r#V<66/*uH))wH{d뿓= C$Vd(} p?u/ex<£mR] 'PT=$HGOI!R)mkDw|\G>HڔRU DH矖FZv£D<ã?C $V#I[!h!P*F)u!RJ/CZU~: ˳1eSb5R&AL)[(k(O?xnοi 8~m'8XeEpH{6qaSbnimmR$e%>BIHJEF2^>Q$+Gy`7o߬og!R )'J *(ps͵P$@Q!R "i]m(A^5m VN´+BZ5T1L]CiqH{}13NhO R+tT#Ct"?>*EE dj%I)k}R'yxYdI^[ڶ)5(1B%b7Ϙ 5xIK `H,F"ZH"HIB;%o\8"@"9$wxvծKJ*dGJ)>PJҖ:HE≽> ,G45 P<{k:u*D$-[x}ݶɼX%OiKՆAPm?׿g;8v߹"@T")vԩꒁwٸs<ǔh\8!@§?Uw?;Zh b jI#MUHSR\ҏ){x_%P{7E؍<"isn R x ~>繻M)mV#l$sJ  ve"mPrΉӶC2sP9TDT=ށp6jE؝AT wuN:ãJ9R[UHZR%]SiS7BP+$.B$ cXR_-HAsYR_|^kv6f] gZHݲH-AҒec w2|>WSdbZ[mJ|fQ} v \`};h^:N1p9ݶt)9N` nMq;2y&iWK@+~ *=^wL]CP}tuZrjP߻[}SKBHTU{$ I쓏?E,`GgO?x^ !{k}070l_Jⵑ)D-us}õT ఩I8Hg#vm|lw5͔!˴6 Oܷ%N*X]B!R̖N: =(ilZI$$m "/!@`F iS椪FS$.5/J"a/mw݄G]Ocӥz-$S{RvNj#SװKHxzSENa'<.T!i!w?ǵ@}{7dAO?x~xw%t'\T%| BH4ItЇ9RULJaXh"m | yPIE;x}!ǫjsJgJ1u {G I4HK]ھgb k$s^#TZ#+YC$sۉO$&Dil1'AR^JkhJVGB${/BHbGs!LJ;:L]NMe@\g_-|_dr[Y+P[#0_JsJ/?@*ŏ^¾]ޔb£^46]j$*Ғ;Ydr5G@@B$@z@;Ii;U艎K*µ+y.?KLL]ŏ^._1F5ҖB49&+~R>/$.(uvsScL05^]h%\k;?T߸ۗ-<5])G{Rڞ"_K԰5:?.7߻0P@$O?x~tnenH*.)y/^gJr5Mkўmi/?Z}Q]6T Oh3Ķ/@QD ?Iu?Erߖi_ O]l@ 1a/ىNx拂?mt#"IBS$m)=Hŏ^ORIbNXtDUџƶU^$/Q}[ Gw8c.H$O_{# ;|\R)=IP)TSHOM7 uRk8Iq )nrEzB TZk<$2h?xmC9$}[#<(cmAR*S<$)%.{ Y&]5SHd.[~NJxLB2z r.cN) *e5Nj HdG/ԓX' G $:+:H1$jӦbϡ+X8\4Mo^φ7ntS|c M2GǏ4J5mHꋯ[{7L] !"5JHrS_;<"IOR_| \:^ @@{~_^N/}sMS KQUH \]iUjsKx܎GuO] akp5s꯺s'kǛ{4lL)p-R=?Ҟ㫰1r#`$.ϠzKwTS|&wʓܒ.V{X+B?fSzqm^{H.Lc(tSN˒گ%j؇B/CkQpŵSڦ{ Qƶ*\kJ*K@xlC@&4'ִ6}'>)Ƨ IB.50Jql`;$ G/n׭)H-}YQvMA6'I!wS$m 69^@@/Ro9 "Fb_~R]~2}_BTuZ0EzyVG@8T PEj->cUպmI?c44MJ\Cu. @PO}.jF`~Npʂc\ŴK$IVދlRfS)m%SV1(% j+> ۗJѦ~KymIǜRC5 <*@7mK5R^lx1~Ky]Iǜ=UPDxG@%~zSڶT\hC =y*1)ZH%WLxnKy=.1.<'<b` zۗg'כ O4(9@pk,ZF9^?3x]_^sl *oawJxF/dޏj"IFR_|ޓTӆcy8 PnJ[")f[az<1O?6BJ)QE lG@\La`FS&sS &^0C=W8w7֩}d#5+?k԰|xT $vҦhsіnU^4 u#5[CuUJi OTNisb]h'OM.`N׍k-#J/G@"La`uϗra 'BL`zGV߸T߸ݍu:zܷ5j۟ Gu\H $v?U/~tDwZV )FrzO\R o?S/jŚͲ9}O*$Fܯϑ޿*G{G;?P>]%Wrvl_s[~HJ_V,]_^ S UpRM!RHxHÔ%~82u Ȅ)l`zeҶ`Ȑcj[6JࡼʅK,pIx]H胯c]v $0vJۖ5I1O {Po 2Hx=H胯親5 '*߾TԦ5na_-Ҩ.wII}QZ%Xp̸h6t{uşfv}I'fiѷ?r\I[㣺K QNjQUH;'u'/KL9S5ҽĨ6e 'cIWT(7ENZ*%S)"j{'9BYU!:50'?k԰ U&\RIj iLj֨i_< VU#)"D$UHBaҘ~mU~]` @FR*mc[;E)BE@Zv㤨\Bufr?s?GzBGlH OׅHaRƐi @p/R}mۈ )u9FRTH7ľIx^K胏RBcE@4Z~$ʅ"j7)g)QR_s<>G@@TAZw.w6G~T!es>G@)@2/R}7Z5Җ\b*ZGKFZ| ^꾿'[IYBykߤngP&$߾TtARm*GMkFb֪i_~|]jT4d*IW'o1!FϿ% nWk~ƶ8 @ӽ'oc?(^?֨}[I-JgcCxԅ a֚='1pDxΥ|2}[I} ڔ5!@4MWS$*G_`ހ(N7bz[uw+\PnRk <EӿzWsI!֯ j>ڭ}|,| u -I\'!B}[Uku|"!@UMk*HBhwUmAaCxԏ T:mIX5a'1BhwZͯFximaR'vΥ|2_0>Pk)~AxZ[kU΂OnNehwC<$PtR$I{&/q*F{G)rƅwG ]X=廙a[>Q맔~Bxؕ]׹ $kAV |*F5})5$L[@ϵ m'rQω^A'k%ʶnMr_jx#J t^fᅶ}OB 8*TtkϘRkg h IK]$UH{ִ)" aq0)w[ |m`/#ݚ3}D_#&$ m/!5LO͋^e[~JψnOx` I';:a}ski[Ӿ/F  ,)HRjg'JE 4ʭi_Kߗ_G 9HRjf'(S4ʭi_kڗVU#s6.WrB4ʭi_kڗ)^G| 0 : 6ωcȓKA'sMe}mJ%< y^+RI)RiO#!HD ,UiTnk'-"Z$){彺GEg(Q qKߧ?wT7@<Hyo^/cK8$(Xd8/}2sl mK2KjŗOOx $ xr۔AP`R]^\oHZGW;'|t*I&B 'A#)>p#9 To^/Rܧ]HK߯Dg\*]pVd4$*=`'!R+r 7$}(yYe v":z/}")k$ @ؙUI-Ivꅺ||YoTȽ}'uH;v{窤"KV":ra"; NvmiڶbՅH5kط5 `m5>9.۞{LY FUI.?{ h@2$U%M6M">Za6񽣺~rMx@4$x{UIPPi#q>0e @)ʢ$]`hᶊ jװ+#!@&/RͫuaR+'"a^> Ru!F@/$%AQPk?0FC輆\T( ZK .K9H{ײAZ  zIpl h]W˃_w.9)m*:.%8_H L pr6y{Gu]7$Ti6Lj6R*8 8IpﷂgU#a3 ]dK_P\qZ|vq|}` U'Ok;3{=(̂j0 q_|B=}IU\TuDp}`;H*lLSOICARagGB[(]~R]~ 3oa twJŶK :sF.IDAT$J*(H*䌁!@i$=PzGI%0E @21]~ +qAlH B"I@^H`׽|R ;4૖@d#@ IJ _4)iP$2t7uR.mEwHHΘ^ JH(w : =oC0IENDB`hkl-5.1.7/Documentation/figures/qper_qpar.asy0000664000175000017500000000322514677222567020275 0ustar00piccapiccaimport solids; currentprojection=orthographic(1,0,0); currentlight=White; size(300,0); real k = 2; real delta = 30; real gamma = 10; real mu = 10; // points triple C = unit((-1, 0, 0)) * k; triple O = O; triple Q = rotate(-delta, Y) * rotate(gamma, Z) * (-C) + C; // vectors triple ki = -C; triple kf = Q - C; // Planes pen bg = gray(0.9) + opacity(0.5); real r = 1.5; pen p = rgb(0,0.7,0); draw( Label("$x$",1), O--r*X, p, Arrow3(HookHead3)); draw( Label("$y$",1), O--r*Y, p, Arrow3(HookHead3)); draw( Label("$z$",1), O--r*Z, p, Arrow3(HookHead3)); label("$O$", (0,0,0), W); // draw the ki vector path3 ki_p = shift(C) * (O--ki); //draw(Label("$\vec{k_i}$", .5), ki_p, blue, Arrow3); // kf path3 kf_p = shift(C) * (O--kf); //draw(Label("$\vec{k_f}$", .5), kf_p, blue, Arrow3); // Q path3 Q_p = O--Q; draw(Label("$\vec{Q}$", 1), Q_p, red, Arrow3); // draw the dots dot("$C$", C, p); // rotation plan define by the rotation axis triple n = rotate(mu, Z) * Y; draw( Label("$\vec{n}$", 1), O--n, blue, Arrow3(HookHead3)); // project Q on n -> Qper triple Qper = planeproject(n, Q) * O; draw( Label("$\vec{Q_{per}}$", 1), O--Qper, blue, Arrow3(HookHead3)); draw(Q--Qper, dashed+red); // compute Qpar triple Qpar = Q - Qper; draw( Label("$\vec{Q_{par}}$", 1), O--Qpar, blue, Arrow3(HookHead3)); draw(Q--Qpar, dashed+red); // n and x0z plane path3 plan = plane(Qpar.z * Z, (Qpar-(Qpar.z * Z))); path3 plan_n = scale(4, 4, 1) * scale3(2) * shift(-Qpar / 2.) * plan; path3 plan_xOz = scale3(2) * shift(-(C+Qpar.z * Z)/ 2.) * plane(Qpar.z * Z, C); draw(surface(plan_n), blue+opacity(0.1)); draw(plan_n, blue); draw(surface(plan_xOz), green+opacity(0.1)); draw(plan_xOz, green); hkl-5.1.7/Documentation/figures/4S+2D_reciprocal.asy0000664000175000017500000000324114677222567021233 0ustar00piccapiccaimport three; triple a = (1,0,0); triple b = (.31,.95,0); triple c = (.4,.5,0.76); currentprojection=orthographic(2 * (-0.5*X+Y+.5*Z)+ 3*Z + Y, target=3*Z+Y); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-3*X)--(X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-Y)--(Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-2*Z)--(2*Z), gray, Arrow3()); // La construction d'Ewald void ewald(triple ki, real gamma, real delta, real alpha, real phi) { real k = length(ki); triple kf = rotate(gamma, Z) * rotate(-delta, Y) * ki; triple Q = kf-ki; triple Qyz = Q.y*Y+Q.z*Z; triple Qxy = Q.x*X+Q.y*Y; triple C = -ki; // Vecteurs incident et diffract draw(Label("$\vec{k_i}$", .5, S), shift(-ki)*(O--ki), blue, Arrow3()); draw(Label("$\vec{k_f}$"), shift(-ki)*(O--kf), green, Arrow3()); // Vecteur de diffraction draw(Label("$\vec{Q}$", 1), O--Q, red, Arrow3()); // angle vartheta draw(Label("$\theta$"), arc(O, Qyz, Q), red, Arrow3()); // angle vartheta draw(Label("$\vartheta$"), arc(O, Y, Qyz), red, Arrow3()); draw(O--Qyz, gray, Arrow3()); draw(O--Qxy, gray+dashed); draw(C--Qxy, gray, Arrow3()); draw(Label("$2\theta$", align=W), arc(C, C/2, Q), red, Arrow3()); draw(Label("$\gamma$", align=SW), arc(C, C/2, Qxy), red, Arrow3()); draw(Label("$\delta$"), arc(C, C+(Qxy-C)/2, Q), red, Arrow3()); // projections draw(Q--Qyz, gray+dashed); draw(Q--Qxy, gray+dashed); // Ewalds sphere surface Ewalds = shift(-ki) * rotate(90, Y) * scale3(k) * unithemisphere; draw(Ewalds, green+opacity(0.3), render(compression=Zero,merge=true)); dot(Label("C"), C); } ewald(2*X, -30, 40, 60, -60); hkl-5.1.7/Documentation/figures/B_b.asy0000664000175000017500000000115414677222567016764 0ustar00piccapiccaimport three; currentprojection=orthographic(1,0,0); currentlight=White; size(6cm); triple b1 = (1, 0, 0); triple b2 = (.31, .95, 0); triple b3 = (.4, .5, 0.76); // orthonormal coordinates draw(Label("$\vec{x}$", 1), O--(2*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), O--(2*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), O--(2*Z), gray, Arrow3()); // plan draw(plane(2*X, 2*Y)); draw(plane(2*X, 2*Z)); draw(plane(2*Y, 2*Z)); // reciprocal space draw(Label("$\vec{b_1}$", 1), O--b1, blue, Arrow3()); draw(Label("$\vec{b_2}$", 1), O--b2, red, Arrow3()); draw(Label("$\vec{b_3}$", 1), O--b3, green, Arrow3()); hkl-5.1.7/Documentation/figures/k4cv.png0000664000175000017500000027505715136610224017136 0ustar00piccapiccaPNG  IHDRLsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx|\w}Ic%v-BXfԂn{Kwͤ[H-\BlRnnP L(PX@"B8v"8qFhFgi&g#9G۟u]> 7*m[333Q@" m;KT=$IR)WT jaaU?& WZPf*HɨOߝ8qbGyRI DŽS1ACRIÇɓў@ +Nl 0y!Oվl6K8Vk޶5|(I!U! `iwt 0Py -{י3} 0m[OMY >F@kۭ󵊵?TTRTRXÇ411333 зNr;TRIf5Λ$*YQy5$ :iEST,U*6@8&}ӞNOVRl6 MLL΢fYIkԉ'\zTugSa3mX,n8T=P"ՋNu TXǶvfff411Ѵ [#Db.ל:OXC'(E*zU7d"up `bPFSa+SA@~]kTh433\.G!:@Pz&TTr>."tݠ~E8T{0Ո~B8;T:_XSE@ؑySSQFpT*T*)ǿ ->`m|E>59VbɩYmsTpjffFtɞ@PZ6=SbopTX6DӰT*ɶm-,,S*333eYr Ç!T14Mxa:@@Լmk.gKX 5 #)z3gSfAf!U0iP!RRmےi'C@:_TnfuvÊ T Ì |~* #*BS~* *"q\+K,{+Ok !q:]0,?~끃K:iT;+\>*$oj̸N8.U :ii*TSۧ>"oj`*lRT*8LmY@cP℀ b$=S[* O': 3uELu*:JwF~*T0gj+LPqlVwT`1Ah޶u:U8UwuN©NJul~ۻ~;_,1c *0s OkJTOuי3\ *AT©^Lu*TOMOy\>nt*~*/)hLP@ L%힩NOV;w^TZQ @#>4*`_Zu(֩5TfPQcX/~2g>s_ԧ0X>t7|tsů)R߁ՓO>rԧ0>)*K_kUx/.EE>5_|p^(.k~;@@kOG*kU92H2})V "q\绤:zⷙK: FFFtE=3r9-,<i $&`۶7pꊼuA*@x,Nro?t:-q$2u\ԧ0`=SOME}*]N~AP0nY ct}+~ Nr阒`jY51Պ_3q[:NXUf*s亮G>=\>*"©~3שc'yEyx##I2(HZs`P@|quvkq Tl~ɤ\ eYr5?]4oۚc51Տ|ӊ_3|1a]{j}2huuEWVCq]ItWYuvyIrԧ57d;Aի_}T^OZիzuY+*Wu겖4::cULP@aJulX/vS}e$i]I11Fk~"6ĭgJgkq OuCJ&\7W*KDBk~`Z0oۺ}j*+L\1Tvկ~fɤ\WVZ]]UU*ee+Tʬ *Bx/.ʒ.(^TkMbQOM >)<=&$Z"*=SRA Ν{HDRx?:yZBOcɲ,IF賟?4@|^sBԧUm./E}]3hkzt5*L#ǩZ\^ꊪՊ*wU++W庎FG3W%{LPo޶SW=XHT*1>$=dY\ET^\{. S S=yZ?{~`x85Z@@`Źg:Jԁi&% ?|PYKBPnY޴㸺֗ &*Ci.QcbLI:p̌ԁYԗk7|n饪S< u@KGB|+vd%ʼmk.]0*_KҷX)+OknfuwU[w _\QVSZWUVUUCe髺喛eԧ 0 8SeySa|1:GUW(/?SQ&@!{s|G0zgtvy)誻Μэ\ԧAPtԧ0[AT)zЪ̸O?ؙmbL%]]ShϡTZUPuXU*r:SS*K$oj TTMfƣ>9_,z}MP`/.L·ňԁ b @XL]z'nT?*D@` =SOME}*]CvSX<T=S@ıjP `PLSeJ `P{L'kU @ߊk%3 4Ƕg) CN8~* Lm` ,T*}!X[0uA!>OhPTg*n|SS5~*PLz$z0<@7Puq홺 ) x$@@`ıg,z_\?A@`Wĵgr' A@oP`/.Dx,X*=1oLC.nTA@P誠gOk:G?ZA@k8S`X{)~LSXؙd'`pvV$/bc{kR%-VQΎk7d mLPh[\{.p M~8_,z -T2Ƕgu> Ri:p0T @KB!Sz~ۧh-|q .u>_kq ~ӹ\ԧз4:~8O9*ĭgJg T_*6"P7o۱왺 )`Mfc'OF@`:_\E7_?0!מQc?UGP0y5&6D0lOFTg @ĭ*X#Ä Lp?U\O 00,ұ\ cq왺"zl/觊ڟD?7* u8L_\p?@P1TG0Sqb s|,)tKX pATJ?*0Ǟ{TsO G?DT[ϔD)+X ˞ "_&3]# cug @ TЧhűjP %*:jLl))~*#=S* bq홺$zO*. P{gRX5i* * q왺")''? *`|qb0 Tv =Sqg ֋k?Qc=G@\>`u>h~*P=Lm` Z3ڟD?*3U=SЉ_\*@/P]מQ T.LIL@/LfcO)*`m;=SD0~AЁgOk~*@638S SP-c3"觊4D?h8L'kU`+T&3uISTqA? \>۞)`pJuXS1Ms9E`ű?~\nĔ?ќΎ]|7bKZ> nfu7AC * 3FPHMz OubTj76 -g T N0{>MMNcHuEL0̌SF@mr9_n oTey|0kq ~*T뷧EpUq\# 0~;_ ;ꇵ?zۙ̌Dz?⋀ fL}jJjBwIi*z[?UGP@P!*[+IO;]z; *[s9}/B6NJ4R=Sn:Jr~*⁀ C+}[FV$j3荠*.kTbSS:  zXZ*Oba:]:: )T0x0оhicpթugu>@TO 닶NèV'ZNLE?*ySnMPz"颼 ~D?mT8wroJj[J]>K).觊T/* ;r9=\,J:hu# %=#/`kq Pa`N./mRJx7S_c23?~* ö7SV_Y"G*bh** *JQaNM{ fur@ű*X#  $ivv6S@|)NuDJ"V7SU@uaIb*>wLZ .Kzj8[?UGP1QDT*8\*Wx;q&&&v~Ru_E5[}-)y끃QC|J/}{>X)>:>=S}Pٶ]ezzvJ}aL D Q!j./E}]EP@$>@7׉'vON:w%In0&3̌X5m ۶1t vR7x~/ӗCcc^79?AAվ8SuL[kJrR(_39|fR/|L%٬nd$M^P,* ;CSNBViq7MO_T UO%I7dMDgE% 7~cǿXͿυnfatx@D;CS Z9}]S BTv&NTY])) <~fAUЭ1j\-tSyK^p5iDҿ%*w4: Zy_%=-)`PP!*T1kWuT>#-è-\:_T쬲l= T0駠jYeyӘ&@*LTB^F[X?4LS[8jo* 5*@Q@N5K'OTP‚J$ivvVcpJR} ˶.~kvyVk}=y?|p(ֱ#]{Js^ ;6) 2¨* _fUxZ*蜪m9[ªO % %%yzZta`T333[>|X l6u۶{ؑ/۶jIæVV<WqMfu勻:M-yR+)O5ZjRvᔚuZH&rz4N {^N_W|))?D%+P2R:=FFd%u帎jNMZMjUUUUkUjU՜Z=@r?'>H(aBT2XF coqBS#7zp½TU-{[J BAxnj2QmkzjV2r$GOGDo?lGHTO|}r@nWN0OuVm]FV0)Y&AFF46 ,=eIWWUUs &auP87>^_fRX,KI+d;d"TzT%+jEJYJ `EПd*XVK+)J轿85\NoUŢM?$㺒H:Wuk_}73D/*#+6<,$jW")df\R}FK+d2d2XFdZ5+WuS~(UQşN'F ?V94^pFnЗ2A_ZpeȲ,%,KDB#itl\QRVRjk]Uᾩ ѷ i *&򂪪ٶm+iP%IJzt1Z-+kVWWUV5> 몪ͯyq,WI7{F %-t"tjDeFFe$U+U*eU맫!u&j mǶ &鷏я%li@_ +v#j'zTRw/< QTud~jQ.=LV\G5Ǖ#x,(=[>n:yϼmbQ򂫔V%%%ܚRՔ,T"t2tZ鱌ƌOWUUM5Ǒ*my`+I`*-zIcoZ㨬fvI@}/vln8t?Ƨ&4jv,h4dfjK/Z W[wueyaxНPSBsm[ygжmk[((#iu5*W#5)8JV*J\ MW5؞k$UJ[tG5iy* U6NTW]ҵq0'X' zh.m} FTNOEMOOd?]0jtcNꢤr!y^]Hjw)]|ۧtC6iP%I7r9ڏ+%c$4NWYWJ'Sf5rʫTVSU\9[LU%CpX򟥵jLu{jJZ3`9{=wܡco{VZ.I*RsivvVڷoߺ?˒Ç릛nsS[{Ķ?Jѷ`z<0OC[';i$1JSN+8=/g$]hmM/|o-,gg%iӐj3ߗŹ~$&&tU7K%Uz}ZJʕ1,T|f/+G0%~]Z$]+dLӕ J:ܧ?_}m}ݷ\T*O MLLlŢN<6mavAU;y)Юj2FA\hÿ\N?l[wnx6']Wϸ.95]uqy]|Q,I2k)3H*PXJLO*H7%FKˬ/CD-J3i}uUs\Uk5k_]Pᔴ }m6щ'zsJ7 :yOs_df\ԡT:S隹BAs9|^b}՛Μp]=:zZe=}Y=ܳZ525Ӟ=htdTDRI4 13F)ȒB4Z0NmRI:8Zu|GvܮTl6ؼT*T*ɓ+JQ.v _o8i:09:wlt.*}t~<=']W:5=W)9jfF(L)iYJSAՈ2h[=Vb*NWUl[㎮| K.]R$۶U*Tt钊ŢJRsNEJfɨ^kEy}T TըO+9G~Ћs9.גJ%9jpWըFFF*ו_ dwNG֏ω[uT52tӟ֍Hu_ c%mq>/=}#wVWk^=[8)`H=˧7@]^xkuLׂ/۶J3%k} K2I˫֪r\=+e1AoW\*e*뮻`p"*eyW[X%QҲ4L+$`DPxP^[59y~~%SDp*P'F@P {._bit ٬= $y=nfDBf$ѪT՜j+-YF1^0%# \׭!UU^HUZ@*H覩)U+o_rU+V+\U-zիn+_Oޕ-LSm+R `P!*TgRUwH}+ض>kXԵ2AP52Ș:ZYJ%@JZ2F64#J}R}**V?%-//\^URVVSVSZ$ێێD{]\N©Q۽kωp FT ZuQFWW}>b$KitdTn/_)/ *DŽW?ǟ OS!UUORJKdB׼ -~4?U^VgU#ǩ*ǩRatH$N{ Ѩ1M&%IՊ$Bp@)*1ޚ_i*? ~UyUcH,$S>B.j[oy˴ΟB}\^W^P8YXj5uWHzm:rěf[۫}4G@PA_/)?JWk !1kp/S©`YHH*/$,K vU r1jU?*R)W ʑ:~@xuuE#GC`D_ޕ+kSB@P!,AnIGy=z7 ߺJ~*^ _/,/JW~XΊZ*L+ȨFGǔRɤRRU* $w}||^_{vkRiۻ_Ok 5Fs=~4PDͪ\%(Jre2Fe0MRxWKJJIJJJIc2\UG|:=T-yn;YPZU"T:=RiddLɔɤ\y^Zmy_Akm}PnUy^d23S.:iW SªfU~P U2,c)aPP>Ji-Hw\WZMk_ Zt-7qjɔ?QFFF422tzD++WUG[VN?f=Wqۻ_RO+}j'AŢ1Mj4Unf,%?USA@5*/OR*ժf~p7&*D"T*FTմ\gھ}W|j~?t߱> n-!jêdp?Ta*XB*)OSC #oO7_wk_/`=6tKS?uLdD"D"OTt-}n;lKj_!U4xQ@sRXuP6+' X-U*J:k!UTYR²i1JjLҸ*ϟ>p;ZPuo>$YN%H$uuNNޢc~\pP5[k%jN"SeON?٬UͿYXe U['Q(8J9r{?5HV$UV}z>*:]u%c,+~rqԡCtOhrIۧwr5ן} U~NU]W5y!Uu帎z`%&U}j>M\w󂪔(:J7Ae4UʬRjm*R׾}C*c6F0{g:{MNLNzPGm[_" k%jV0O Qu77a%T*ܸTCX9AX]/XKKic4y!URҕjUoyvI]l6BGΝ{HO=|*WM=y:B]xQRIӾ}vIj/|$5ֲ1t`yI}F}p$nJ9Ţ ݐDKyTIB(殻k_]eyV2cަWn,릪ZD}UI)e%kv0A?3TV[w}Ӊ'$IQTI6F[ 9ݠw 8SkS|^/̾FrUv]NJ+&"W7|s:U Uu9J;زJYFiI}n0]V;7…MrRYIR6UnxԶ-i_VSo=p0SzOyoԧZuvy)6UtC6[ޗbqݚ^S0d4?zG`jm+Ъ7Ub*V%]$I&П~z.,qE@E}zzGч>Mg۶~ԉ'4t~IWfZc'N*D vvyIg>:>=[4UfffÇ+$h> mT=$VB@Ǡ3gtGe$m=Z,jD[Ti 1{8QU1QՕ*hY_^~ U)JmTIi/GOnkSWFzheשUUeciutq'9mT}[T_mSKЍ!y!tB@(q[Affy^%$BAZ_ZkUZ^P4R%uHZ1F+ƨzqt].?8sgqE@5: =TS Q!B?[P_*D "kQUm1ۮ m$+ ^' jOU}nUv*JY\itUHcm'P jOr9}Z zOu^ *D *nktי3}3M.+@rN8!ǏJRz,gBmoovl+}[#q:pPROkn\NQ ˘RYIkko1^BT c?Ș~;WB|+>PL23?MzT͋)E@Paı}?_*`L.erJk{wm߂TZdfz35nPuQ T5o] O MCXk<\[g~1U]ow UL|b>5߫U?#V]٧wGo|td'8S(HZ \cq׺u\>Ugtvy)>>G}FoW\ic*>Kz宝 MP >~LSIu>>^0M#3~zk~ ~k:^zzOD}J0ܟrLPmZ} SET=ѿ~w>%:TkRmԫ qϊ>ar(֩5T溋OE_x?ET]oIqLO 8S~?4U򧧤ç^OP= fbOuuY/|bAoɨObj@ݛj|YP~ѫzjI0骯y8SxAo}+g+SX"@T7VmZ0=l[ga2ڟ$}7ߢӹm;S IDATX!0%`j sJᵿUE>5ӹ\ԧA@5`i0ӫ1=vAU:jOՀPX`nSdf꽏w]wvz]^'4y1[NTBeL ? B]uńq_ΆOTzR$іHJ-w(֩uvyIg>+4W(3gtc.@_ sS\ oQ5<ʲJhT#UJiWr](eє2T' UCcUQY UR2F,}OJ-_e7.f&3̌c'w<'0Xc۶?5^5>v%}ZT+~ +~X]}KZQUhLh= Qz4eySk!6[Tn3=pL=5=ګ}јF4JiDiMLQé sQYXzQ!U͏^V MW]ѫ2CŢC?UӘ $twLP!*LPuW:󺬲ʺe]hL{èTcZIRj](e}4iPm|uj-jX =n*oʪV?IUTE/,Ʒ~) O`0Aէ ?Op 5Kꏟs ~Է頾34-Rp*NQV=Z {gi}Tj0QUUUUTQYG+F_Hnt'ʒ3qJcG?aUzGSO ` Qajg{`*@߮qUF{4RCJ)[+C_L`jmzjɩ+κ6NH5+F_ ևUkq*kXV=*URBߝH悾3uo+K cɲԒn^x?~~* >mrnPǕ[#*Ds=SZ%=6ZeGѨ+I%Tw*IILuƟOQ5/Ao~%OV9rֽTLUeT+W,5#t$saCߣ/Y[ƒeJX % Da}G">WA8ců}&noK;' Іƞ)ɋJ^.X}omR*WfnN4}]h}yjYT9)VUr꺨*U誊{Ou(6t倾}zOIU}e+x?zu&>df\XUsm?Uŝԇ8?GLP!*LPg*,]4=ӘF4FtL%B5M Ѝ &$5T5o )룩NfN(rEUk냍1ZST/;Um JkT^!n @U")-"~X~b'Lymuzֺ9VJN{=ކTuܻ7=inCnMҼm9ס#ǖ8)Y,H$A3 rLr.`;p36fKǵ?SQżV|s"g*ZЉn6;#9=FQU>햐P 2R MimgUV}e)EkQ*R#*qJ6FȕkS2WĴI, q \Xւ8dVp399~1 CN('pQj5e7Si1llllvm}6vv6-Fi&ᔢ@eq$q$ r,/Ju?%0~*H=[Qy?=̒U"؂[&X&l'kf?*"u Pv)P+R1,:a|}tEjdvnOEDBC)}k PQ%={12ϙ؈ЍdߔMfHᰋp:]p7ytA.F0$IHq$qȊ$԰HSN3޲ vlv8l8"CdS$)x\B<"'ԀLIMW)Sm*Y u@DceоcHvR@BbR/>WN_~*}@O~MDT PYP[Kpuiw^ Ef @ x`J N7<455nf!`i9X|q9YJǕvk%57^  a`^l MB3dYª6]%îV2ej>UZ%1U6!8I-%֍^|rm)D.E %b괔@BuKe~P$~? 6C/VjnMp;pE@ArJ$$6ե}~%UɀJ퍒+%2ulh,-,ic4NhVKXL]PrkV_K~o9µ?"<T_o8~WrPYP(3srSy>кnf>i,.GՀG pa*^ zƉ$eKa1, ڀjߕb j;X.є,skt@TKQ Q]Gtv6At8ŻD2R D\ AvT>[a*01_Y"*;~-c XB*uJ̡?|^TOTp{ ~*"4Tp!i@edTdT݆mAOucn"ho+8Ztu&(("XDvҮ熻+aw.H͈H}pR$NIt!CF7kjj ,` C@6T܏a OO"@T/1s`4wc^ O 7D G‰:Uq5ՆDz6]Q'7D .gb `BRDb즊cٶm Qha6M%#*J.:jۖV2no:WﭕSPc?Y}ho'dy\~?-DD}jPWc}bVt-h:ELQb~ȹӫZ{r7R+Zh_jG!96y^"X<NȊGLZdE˝A`RXK6~;AC黐^1l^. yږ+]>Wtb^N`^N}ѡCe(>z|>SqaĀd6<K(b¬PWj*2 7F-gHSTTy>0/ϖk6/A-ox =39&9).a)IfCLGEk@Q3*)A/2S uuTKyy3t{YKZvnꃉ H9+ СCE ! QN\3VFN\[Y Km'ЅL 0j[7%UOe~bH=1i Z Fng8A%heV.h++++AdK-a2d;D\ %@}jqH ' DBx r_}@ *2 *?NÇҎ_+GPUL?\tѝhE;2~j[U;4ĉ"# abb}}}"*WLd\+_~pŏ?wᴯ.wMf| 2C1T٬/a 8ųJ(XH42,-BQ-뚞M-`m?p;dkTkp+5lUzOUa{A0DGG"2ѷ \uZǜ'#"="4]=7`rT?|~?=rv7 ݆N Ze#ni~mO{IɵY*}j"6A8毱Ffg>FYq/P(Q\#Z T&y?K<Pvw@*HχqAD`@EiԀDK+^لmkX}~grUF,GaU2TrrOdENSzPbXB XpDlvEe.՟z[o9µ?M:G"i\3)mȽW^W{B׮}"pŏ҈+~ل.WY>weQhwXz/,i<,,~*^J-O[cG2V@ޗmm AQDd7fn(^.w~xE'X]`_^GDk *E>z?y2" *2K#MP}g^Tϳֵ?}ΒAx9=.R,~ϩ1G?3Z !YH@d@'"u~J<8=6GX D[Oב хƢJ+=SǨ*:߾}XNTFЈLQ yn!}PQʺWz_ )yow^S6̶ @A^kᔐ CFV// h(cnߋ+n.#,{0>W+dHPH(:L6Wʦ^O;l8`p(;T\p@]paS_DQ nxЄ&4X8ԉKqVCkO寣+TP78FYo.Do<~uRɊTηqeݱlu,9M08V{jfAòܖAUܕO^ ׶ljAbWZe| vZ% ,+K_$LT2M(~ aχ=x1::>ٳwy"j8 (T1S,~T.wكoeQj*2KT:yYOҤkN]uG TYFXjE},ݞB66Jidj6-%+=Ql{cR`Cq,ʋcsocNxE'Y&&C,T cttسg ::hPUϵ囎TPZaG*tt`k0Z!U ,P[]ndyЫ%}a^V7/Avϻ ԋVeRVzTe2T6aWl v1q8cμo`jq.*B!:tسg)"17"<J+\*gUkpZ+ԃqD]3`D5*k'[ϗeAXtZ œ섄 A~}\ A^~.+: (mJH`ע*-R>+[xDÄuږ$=k9o} `E0phtEP|"OE 8#gj|Sɉ.kT*O%',WTm)oy-m'iWӋi1$ZxT $ rJ:a%@` |vCzr 666Ar;p"eXF}`R.SgEQ՟FWBꢉ៙r|#!P(9aEDIWGm~c.Rxѱ/ݏ߾ܿ12AՂ+uE! ,R3ڋf -ɉ'=2J]Oz#-v`KLə(!ZP Zu .Ad )ːd KJNi;cwUނ IDATƢDU(JS`SDŀJ.B8Wܟ+RlPuc7*PY=I ̎<_Ӕ_=Rr? EV=Lsư3 $E ތnF: BLUaߞ,=WC*^`"1"₄ee K"fqp3͖S5([%=@ ɽWD*jAzﶒV{ߟv 8NB,R'ʂUQD^)ixrqm`-EDe{uc"2>gԌI -ha suhڋ"ZtdheA(u8b XX1bgwIdD9E#G>P( a``g#`@U%xTx3*w 8YqAJ , yβkoݻ1=heɶZ0 QX vQjüt}oxԇ'D8LvADC`e@ jH,,aQYɿgڏc8_y(ٙ^ GT[PU_lioW+:PK-RPYP~3݃wV}&OTvF4v8Z>&4A M-! N@Ԑ >V_zzjy|c0ETPUP#? ]kz_b?Q:TdT`~_S@q|Vޗyctl} p&x0-mU2&?®W+zF(T" `Lai2MwjT , gʬ~LSӱe|zAU.'[s֔H굟cQa@UcbO@~5~W>Q1"0*nߌGlw|szCFS-"8kg*3C,Dpc"TqALTUtJ }LTTԨv3fX=mj[Ω 1rv{εjL?؊Oq|ji7&+PAU @8,Q]a@U.]dTTs3G~ɧpn0Z+ܸm=z]M: PeV˗qiUZmjjcZZ§V~QT7jqLPTQnTPPUƖ~*7q (&_;SO>cWPԐ-6?3U#Yv*[Pe+2NZL)i*42!ǧpcTVT&TDU<7b_h/D짢z#2jj"/S>w-NkaU9Le>ɥE|jTk1yg@ET_QEc@D.|J7z(u:Bχ=CC?Z#3GN@};%lʗ+{0:~}nۇ{Ѿΐ[sWs3+ڐ|) 7l'?;v܇.^ dKۙrGN&kjWtbwzn_48`SDT8AUa)jSo>gF~*EƞR*&Ʀg^e1n?g|xq-ܹ38wNC)*<=S٬\3LwC<ϡg5L *€f+j_2YdOE"WTGPOչ݈D?o7(ijΝkӸvmZ|)cXv$KTuodvkza@ET_PUP8?kevM(쟢t|508 tSDVhT&_;W|bK=T"Mo3(+J?Utו䤔~eLgo9c^:vmz TR/ȕ]CP~za@ET_PUЛ̓_wͽrU(젢Tv804uBqʡצ=؄'_fQrycUX\6z՜*dꆸ?[yTR #+"ubulPWM*V_STӡ^850.cQ?8gCS%tX>']-zu x}~0'/bHeD0}OcjTKW*'sim{,P{^щ]={ZSDT8AUA9{eMT+ ~*rLTTz&z|>NArᮬk}ӝWtį+gT>Wߟ_)|8AET_PU3v{QTYc?UZ ~**VT M _{gqb[Ii;Հ*_Pe|pTN-2̗&D~reÀpůJhz<1ST.SxyhC!l ghkT;͸{ޙ}O<(♶|O:ݾ>_ \#O 5rt*OET*c?ծSњ3U*SQJBx[/+#nŖۓ/ڐXutt;E_M3>GX©@ɐ=ǧzdZ)"* +HuOq%y3x0G\^NS8^6XT#vxFD~*{W^v`_,l}o# zj_uމlΫk/UUD϶Yg<(xE'E#8UB?Qԫ\Q{˴.DCӡ|>!jY};%Qݚ`Ǐ_G z7}N7l9;޿sj>vr&5ѱ~n힌g 埘ҟgx+]Q76ſ^ #+~yE'E U?X!EJN9V?JOEXgT*7v8`V_Vz|kqe[l7-' ~vtczoڧa/܋MԆXtS_5(^ůB!PWveō;e=ͿJ2aj|C!L},2A2ǵ?U^ыKks[:{eL[lOiw~=_\Wԍuw)xUGk4h*W#/+2g8P UP?H~*"3k짢Z*E};~*liE=Ѿ{/eN<>w?N/O?{ˉ>FԆp}=n#Z7U޵L\Q7ڧ%'V32 ^q~EUDD+~'ho&_*bd6S5z*8l6;:w}3SY itNoHNG3y%+!=i+k { 02kDD+~wr@a%}/ @]ppʈTDDW񫀿w{Oa/[yu?%ʞanjŅRw\Qs5Rp"W짪~S.l@݃7ݳ~Dz$St??W[h+~Tpv:yuy9n?m1hU}S3)Y©b*ee:v_rNNd P'W} ~WՉ8kGv#Dz4~O#}9P EZ6ڟ1"R1<-HOJ)~o'K2g~~S짪"Lkc8S짪QPЁfg >񹝈^[DY3+UoƝmUӝW0ݕZڐ,P7UcѣZx? b@EDbUd S!_? "'rv왲vL]AఋpLc +Sl=P8c~L~O?t=qFf0\Hm S+RA2"3SxuxC!t|34\#G,;,E}fA-H DG'R!zо{/w?bQ 0~,κΧORrӝW]TF~O?v?h .,%*""m\lmO﩯W*o 97WHuT̑#왪짪 w.oUhMxKg8fw qr>ǸTT4QGԊ0Fmd%NտӡP2|>Us⸢0!kTQ6ixX^^2X5Gׁ',08%bcSvtNoP;i*+aw^ˮE7{GDTf%&sE ~]O֢!>] *DuM_5Įp+jpu߷݇_b:U_vH2N )TRMm-STE#ZUf?U-g~**DxZDY4ڟ^OROEDDǀR2©Tg"d맪?LQOEh N) ~*cy-' S==uUE 9%Ŗ3"*Pcj|FYa@9H ̎ Qڟ1J[T43YᯄkU q/?TWFwf|ݽkcѣZ3k?TDT*Tm봒s ҂l!rS}cJu "JaGdcxe>0FXt0k꽟Kog1U<ڑFWrMR% Uk_J_e3Sc@U~zJAZ@QD']9S50"R1g|g)TeUPߟN]CDeS}a>QC`?U3UF_TK?LPU*b3hG EQ +2dE+5ߖVnk+|jv^E:DT_/3(TZo⦑/V4/pz{ IDATȗp+yGG z7}N7=W}8x5̤SDDT8T>əaTWURYƎ@b``= $* x?H V T_#X1^jٶCTQ{_b{w=}/ZoͦU B+MDDI}oEDL ;*#UԱ>FN>FY}|ܱ"ثލG0[At(c}nߌ/c{/:Ge|uFVNPUXT S?NTv*U~*F~**bM#_綊Z0|P Y2(7:_&&&pASQCG g~*}A508=RoR2*JMDJT !m{1SQѬOըW~L* `hRoi7OŊzT) OE gc8SSjm*A aszH DǎB XL*1ßt9kFpJ_?e 'cYҧO*2O~*NSQ#`?B2sﮧmiTƞ)NMTUv},=UU@ TV LYC0ľ}ǵ?j(kT4~*eS-DL8TU9LT@I=SS(jЎ@=SSջvJb~Fó.uj*\,=ʒtât!u>&= 5=C_33{3L?7Q02=T_RT4UF?U)왪-`TԐ=h"""**2 OTpTb?5*SQ)~*3SQmb@e 6k]Tق*do~*Pg~d5SQ^k~*""- LkpUTMraT2Sk Ja2V02Q>ETeң*UdT0::ʵ?jz?^Oŵ?""2htCxCQKZƤn PSp_D?8U400qB!:t}}}|f׎P?A.0:S/2pN\Yo߂ñ~L_uKލG'""ʇT&KNQVֲ5?2pq&&&OE _~P$2N6oz{`N.㥗f Oŵ?""NPY ) }BIl6B5v804U>J|D((FGG#Tۉ&/ԓO740#np ԋ$B ? b1[TfJ`l,RϑOس{8Aei2Nn7x3E 3|9[oشIVUWn47ہӧ#x][OEDD Tx(QJM6B3EO500`*N:S:i/3pbظQ NHMJ$8^$IT$ 8rdNqG z{+ubl,~*""j8PhŤwS!?2PSc*짢}N~TU׫NF('KKښ>5ѡ>v֦92b_gf?U?}ꟗ 9\KU?=R`6SNO#GGkS\Smʗ>J]gtݝ < p6vË]_-)DaT{˥45aWk+U.UnI׮UDDDI\!ϮҩG ٶC};WFoKvH9.t:t@]H$EQ(eHR C<@" P (oyXZR~C fm[ r!E @4ZODD*T! a|t~*5JS Y8QCS]Y`Qk짢F}Nt,"IM: NuhHSSWI( pr!VssX^"AjqQ  J}7>z+Oqb+~GRL?U)'ZL1jу@ ~*j(z?Jw|j8v.]]e}wSSQH05T2.\ŋ3 8ҎVmPǓZE1Ң'֊|DDd5 ,Q*AU~*nA`HEc) Ҷc?U cbhmU{\._>paNff1?+W+WpΜ~p:[r5cacpa.]R--hiim%$èԴVHD-P׉zJ҃)I*ր+~vC0?r2tQA~*m vQQ"+a?5*SܹՀ o5(d,.*D9`rR n'=}t\k hmmRKK˰_4 HAP`6R}{ ƍO522S{8AeqzH*55%'gRk6dm;WSd9߾}5}_4(g86\w8~| ׮E$07U5p8yxy)ЇZ{сs]ڟnw.Bv~ѣ3]/fb1{pU 198é*Jù.G =ST+T*j_}po2"ss p{@4ğYn6'׮qhkkGS3ܬRt p^*8}rW&[?{078TSm3d13E5G(OE A1b)/Fvh]w݇wy׮ciIA42|?NN65ף{ǣ݌&\?VDQHG"1VHjowgj b i| p|T2TQT hݺp0>~2Վ`~_::n`;[VRT!U(T @u?"""b@Ucn %J*~SNLfLQ0SMLLT׮vO۶}grHTUo[7mAG:-"Z[vےTNf0AzH@ 9Mڟ@9G*3Lq`Z?4z?B 477k.\G< Rիg?R3[ƍ0?rmmmpR(!񾹹Nn'Qa@Un>ٻFLOR(]y=vQmX4(Ν{wZPW(TsfUQ*cc&dF#M!~Q' D߰,]na%wx(}W"`yyT >Uj xӴ`@*Vge>{tNHe5LNN"!U(bw#"" wR)7`sH|9kqgh/}* JQMӡi5%j"r*ΜA.g4E @$b(c|| SSDĘ{TDDDP̥DֲpUTT3]&W_Ǐ,QD׮]>sۿ lOMSmVVj5NU"h}Nn >1:5˻8u&';U7orZ* ,A;rxԿOsg/NT6N/hA,V+4E e.ˀ$w}3w/Xl cc*t2vw7sG4U{a} D!Tv9RQS= `k8;S=>U$ ,K<$ a}} ǎ',˛$b4}g2": TD€*?,MTih?ܙ"N>kA٧:~4K,isJ#FulnZ fsϽi躨>*"""e_4j;SDS>ʨSE":t]GT/ưptwҥYd2Ȳ1h I%G"hqw#"" u9T R7"#:WL SKXYY ^_,N~[\B\~_JW.L,Ο?rj5anN>>jG nIDT!u9X~U)+;S N<oq/}6a55CӢ̌]ssFuhL':(Q0 /.-, ^R]B+ׯ3"O}* gjTk a|<M,G`rr&Cׁ-q(PkT}*E/($.-})Dd[\\>#O5b <|u f!BQdSTDDD6TTw9R7n ࿂ئ"1"n>յkאd_,>?2ebBG$Al`zz (JrAU%hSTDߗ@Db@E{\N$>`H%SD>OSQffbx(cf24 0$ PU~{ *`a@E9T_z`hX#b{{3334@LXV*OQ:xBk7^| >Q/ffbx0)D" tP@Q$*i;pwSDOED:~\6PU@U-H oSTDD> @~si v>_7)Hڵkܧ"}Ty;6:E%NP) 2"G҉DJ iPRDpjܧ" \̡cv6yhGoB}G?bHE?&TDA€%WPWxZ>Q0=zyxCW,4%j&ꁔ$5Uw#"Q  HKK%~_'>}j7 IDAT""E"@"@**4ߗFD}㗐ϟ[˓tSDt>S\ >K}K³p Μag'Xl5z٢z!Q+Ca:r)/<T4P_]Z;R)꪿ՆsJyyũi`eeW^Eo Pzzſ@,v gcDRA,CcKT<|hi!r XG|"*:2SHoRx+b EDG%**!urt qd?P=OzDDD½WUn^rNE9X#aS%IS }<_f%T9D"W[(~8{()* GΉ~hX9T*,,,`qq" ?R=d˗'V+G[?E%ˍǃ (|ΔF!€FxDDTˬڙڏxN:(dF)*I҈|" ŏg>իWehr3x睯07^xO| `bBN:t>P|>M"3|TDTDDDC٢rOEtx;SssoL94MG PZ}( d)ZOLQx#"""Nڵk$I/h}p:SOWk55RAUUD"zUk]֛(x ]Gv]|JQx0"""BNPuUd2,//#fDޣG/w| `ʭTHtNM5?"jƀhD9TdHӬѡ-v=/})z/,V3edBkh:G F\kTtPX~=(d0PUTk/3p떁+WF紑i0J)w@eA4jn!+~D(T+++ܧY)G!㗠;EuN;SY~j1;\~3$Ȳ\?1eYѕ} ebSm_NJQx0""" x<ׯs Jymz֗ߝO~r@>o`}@v2pupVMI`S_WG _TazӉ(VƒQquUGU;>6w(`s(jUy@V*p\#pAB^4"rxjz {- ׳Gv >ߗECM!Bf /~f`>Kwz8~<\.Mt\0 RO*٬'O &+WV5jw׀Va8';KwskŊQx0""" }e.vmo?3ի'c0 YUh(JEW)%'VQ?aeo}ʓӑ'W`֞SժhxSeS}bŏZ1""" vT׮]c/^f?ާ';۷^=;pT*>F"W=HLST<&岁)`v$vw?Bf5dժ8 dedg$V X# TDDD!lQkܧ 7TX_}} |Q盛{PڙX"dprYOe&~Q@Q$?m:5UTx'sjZyQX0""" !wTtj_7S?gqsIσ)ĄSfQ$4B*h|tN,&1p`rr ӴB*'8{iT t#bnR,TSQ€Q9AS>UxڷnTh ͹gE~@'ա(:LӀjwa`ȹΜ9|XY,,M@ {}N@ESeFi)<ժ ֑tC < *"""B"@">UHxU٧rjgsǷܾ?%/T??{VEH%IT*~aO)YT gTgԩS@, F&sQRJbWb A9~rzyq*Qf[kM͹gp/־w/x?Zcx0 MP92pN=<06&vv zǏ똟HkkVWs0 WSSt]ŹsQZTp"}~pNKh:5 ?T:oPq$(,PQvT }Q HW31> hM;/CuXQߡrHpf?)qTмYw5Lffyc8@4O?T*}'.`bŏ(PQW>U2*4k#(v˯;⚄tBrj}nܵ?x|wdQ5Tg]"%]AT)'w3MCE/uHDDHDSO]Çr٪vw-I_*N5Nw*"""IkTeiԞ`jD2k(d ??$5*!wu1~8T&)*86LPqJ199JfS8 <~ o3NV?}ĊQx0"""VVVO5"^1a֝^V*[=/{T;7H$hԂaT(&TM5>Ԕٲ$Le &c~,?o˕P.[(\驏}S~rT[vdU;wIo0bS{cŏ(<PQ8_޴Ou5BU`qJ25LPŵO5}}_>Ąr\TEar2RJZ͂iZP]6)E:`f${]lo[u`rRN?꬟_gŏ(,PсXN^Wzݙ:v뫯O5~\ ŢZmdLܹi@\BbV3a,PHebbb 'O6ymz8 y 16b|| (PU4ſ$A>_aTQ`Pɩ>~7gܜ&y?"*"""S>y3uPS}Kx} |*{n٬|@:䤁HDlL)ٮYxJłaxr@6+NM}1ƻ n?'bo/wԮNJb@EDDDlQkܧ:ۇL@|>ĄL0:fgu?/>a{U5(bQVbQ67+Wbx9.0sWS *ڋ?"*"""}7٣ܙ:ASo자sk…1iJE/,05VtC]Pխ~Qx0""">I|[9wjPT[b<:=\:^ †:L|.66bŏ(xPёiݧJӬy >woT)7g>U?K?[ͯSFG҉G(|]XYYA2D:j_\u>g=c\8VȬa}U7}اC%~FQk(y=}kHo+~D|]L&R)/kdSKDE0$$wL$wc *[20C;T QiWst Z))`ŏ|qzouuT}7;S٧OTpM2jC7z@$8aH%*~{?a@EDDDC٧J&ܧ~>Tb!`U?TBTlů̻f$]Q?"""*N>U/^{vNqOPNJ S&v˯~/;S}*:N{;ptϗ<ϵ>  +~DDD4S]v?Rp*~b*;Sާ>Wk?VNŒ?`@EDDDCϽOS-vi=;SUb}վ?8+azB׬M"m^G =RD!F"4RT=Z\\\koqL혡YC!?n|m|vDWH~pznDC)SVZu_ky?gիd2X^^>SKD%,͊T!l7}SOJ)Ss ]otx4Q$}n Nci;S^wC\;ܧ Tϓ yr?`@EDDD#٢rONU,NHWD0S>Ǒf9sNQ1" TDDD4_$2;SGYCekKܧxj֊?'j:VTDDDAܧJRX^^F&Δ˽GթGC@SQb 󃈂'(p}d2U鑫92 OtK 5'p*HX;v?sŏ?a@EDDDծ7AUk0u5, /l X0jWk~{y +~DSv2 VVViLFSHW,J}iԢY#2+~ *""" x<ׯ#Jauuz*ߗV&{o&(ڗSӦg{R.k#u5^ÊQ0"""P}:_]֑_}*}* :Cכ¥J^_kX# TDDDJZAJ&M;SYj6}#٧~3>pbů?g=-ebSm:WD4PQh9Tt+++X^^x]kL9X]/ع?T7:hnI0q(<PuH$H$zڧgg}lmWʰS~O~=ߠ~?ݏ|⣨r;mC ҉„Q:SLj_6>lgCVIdd@H9aL fg{so'Gs+~QF.66bŏ(x$˲,/h)a՗^S~ 2lec|D=h@EG9asHS0MVjUZq}!^cDpu8p#s{9ۧZ]u~|]q׹Xc(j:E,7Y[yvm` _s{ogr)z?#`g dYn:9x(x8'\'_XOMy%xxb8?]u&>w/HQa[#pa@EDDDԇ:quutST=ys@`z'T9r>ʲP\ДRpPYז\ժ@b?ʍ=~a1'_P:5/*~aŏ(xP5rҗX{j*v;|w{(-5}^i"j {NP{*w}jV?wj9IU }nZ g*dPȬT1:<`+~{OE.~ *"""}8w~xT`eee;`.x9ԥۡ.L95)'_K LV)89UvZV'j5u%sws3g+dP]|_1?e#nMTkHk9qEDǀw0_~zgWWWlpbJiv0h*$EuݕOw擜e{]QR`ʾ_~@|nZzaQFzXeU1`l N߃Sd W>4+~|Q+TDDDDmgZfeRE˳Ǣk,pF0TtPuqRJV!)"\,>d:.ԓS˫~ט52X+T2jIuBYQh&&&<<(êUa9NO R0 hUDU$ wM`wpQ}2Tk 缶h1"""PsB#DT?;&Ձ̟'Sٖ$ɮ݉ S}~XV;CΝt An]# IDATd04yUņCYsǘ |xrf ˩%;*' qww?fg[S {j=aWx z =ҶNJQ0"""Pjݙrɹk_h!]JXT#TmnEsvL5BI!9C ) pi2j&`S}"P8$;̬5N[Ə ,EAE`޾ -6s踝{wjTA5ѸSYTU lY5 ,W_>mJTgla_5b@EDDDT/^u $w-*;iQa=L]tL$Ĕ$٭< V멨]Ul=eZI}t]<xE`Հj @)KV`D~/m|gqG΢Vq67BNUx8r;&..T׮=һ@u9"m (4;S5޵X~={NPYixs"s|ⴔw`ڡU@ȹ[3@^.WQY9a՝' ?ͭu眚*`MOTs 9C:kTS ފ_!Uҁսv%c@EDDDw;S,uܜP٦X.<%NE "UPdUL`ގrv; "QT`rn/WXU|ǛPgO"v$ Sw!ʟu7 iwR9}*QPQ`3jXCOle@lJp#SUjӬ*_LU+`Q`fN*TwB=vzle;E\jXIvamoAJ߄uDScPVUŏwT;S{K>┌EͧO7g5 >MQUP-0wٳk| P.&bmS)cPǢBz_(B)]-jg G]~!k:׻*~NPr{kw'_;SR&]faPu]`jT$:$UGP*QV`9w۫aFI,9?k>*"0̹PARu @JSCx1k; 徂ڙ]S>;a_TmP1" TDDDuE_j_7N(8yT[YMY`X'idUG$:A\DTT*_eXAUj'@>~”KvU,\a|fvұcGzܧ:^*~ !Ry?':3" TDDD4Z)|nǩ ljg pnMv8#2Dlj-T V"NLU*@$FwwEez|r iH,qZ4ER7#SOP ֯ ]<4*"""Yð3a} l^F(I`luȚ1&b@1>1U1BBrl,!>i, D+`fR%>8>y5T5+~DԌt:LJM}yT7*wbMGpb4"cxp/#U1읩85 r`͟T ا,SRI*QzC`/ާ/0 :“r<=`ŏFưL7GT}f_Yk%J%qW0= ̟92mXg!;K}>Ee?q^ j2G0 Pb}:ݕO7"]+~N0ŊF;Ss^ODƀFB2vo>Urw 0wu&W]nDTT w#݅%ɐg`izgԙe&V X];[PQO5gBUvQ| /缾D4PPsL [}8T(JXOu8c'q/~2Nw-qw35>%+b"rNPj"S,@3PFJ/~﫯sjܧjw! C[;LEF*"""Jü3QWqBT}(Bؤ8w)<'߬bs!r (E83<5+ $zX5*eqJUMƢ$&v6Q/ >+~Vk?"j`@EDDDCug*H ej_7thN>Oa~ ~zM{oҷ.^f8կZxpfATT#.*`Y!UŀYA^=:CP}*VKĊ1"""1 ;S]ƩU 3ŋHHe@_Xޫ0F8U;[ϋ2p?'"@j ()KQFt~Ʊ~_}[aܧrNP{`X5h*"""ݨL@BCbRRHU-{c8{f..bQ&]7 ߗ?.p8IU)JX;[(?q$(T*~V_ 7:(SKF.[N}1* R9 ZF>wy}s9XJXR)'m'\U1PdP5(`Q.pn'p?>UPj*~s׉4xt'?" 'TDDDtZwFH),~_Jwz8lNɺNC1| !Ր3*6N `|Bu1n@ErBr ?@y |_N/(AU;ůROH;eebSff*""":R:(SS~_?c1Țs/<ԏD!gaV1 :pjP281/NQiF*JNR."#uYCekcdkyC7Z^^w L-vc]R52=I1ul. SP{)`o;TDDD习Lj_1/}GiƓo' eg&]mUS25?mgFSf)1@.?*/hbfO"ہ튟!zױGD*"""L: ߙj52վu`fVSIU@b`wsQJEW8e]v*5JGri*/T &&DHGn$7DW >=bϻXnʾNyR{WXnݮ`:Q0"""C T;#Q{t>&=IUEƠ* v6Q+rIݲé{zk$k*Kw1XW)UX_}ujNP:B.0z=A)"""md~jڵk Rk?(ͩ;B4Dt.xM(Է7}_ܵ1@T&%p)qtĔYTU4 sW_EekK۩Xn)j7FNn" """qLo&ʼnU#Te, ju>U" $fOu(;q@VM 0%@RWjƩOn{jFIEnm+}{_ ЍCDŀ䝩vߗu`dT 5F1/©R(mCZ'>!iڻS8MeZ4$kOUk5 TFһ^Iug*H|D\h|U$(aF/Hp.O-+">*@Lɾ_*k%ˍJoW0u$dg}"ÀpڵSS@V5Tc_>=w<_j#bm@?iR*`9RDoc r~_*dP8_' AT" *TDDDQvZDZ .$EUw yq׾g ׷S%ܧI j~ (!bkKx4)w(VeFخ6jQ#b@EDDD{xgnFׅUpZS

wSTn^l0ȃ+ RQDOO*"""k Ts[z=%xCQ {Zkܧꢘ&Ye{,]$?7_WBf */*~n@7tzp|W7Rzו]GV @s/,vcOO܋z>┌EjU7E*=nOUqN2kP>6<{!:U GS3HDC폑bhz}DL B.;SRkSC(]f}T-P'@}ʩ0-_/uXT2z[5Omwe\z\wd5B('jS[ë?2" &TDDD!vSrܧ2)*}n~ wAݩ;AZkp x_6Q%L doȵۧJ4U ST`'Tk~G3'}XenYO*;w{㳿p滁څOvc`E^ B;S}ِ1FIv@% !υ;z~z+NO817Nvyk{V QiT;>Ur _R;TMF`eQ%+56en}C/ۏ\> +~XD4zPXT"੩ TB\ >U*Z}N(e7B* ՊV:4d>ܼ6kZ" /TDDDŝް7|ܵSIHz0Y$jr*xNT+woԃ~*~ݾn!Q01""" |%-/pDHDSY(AF4k0To[yU ܜjkQ@pg?۬' >AUTSeX 4Ble= p #T?"b@EDD43u0|3%PBOe:'Ĥst7? _@NO=]KS>U_#`b@EDD4œ:wjjOڟY[SMz8,+DվXλjdg׽{.FmSů6UB Thj518=e[,3k/+~D/TDDDC;S[zOOHS*WBR -NO0S SDÀh$ILy,v<=jHh_k~驠T[YOOOz[!͎0S1ҍX# TDDDC;Sj}DHD%,s ,;~V[i.o<:=eeb޼rFST[C^B*qҊQ0"""Q: L } Tsxj"BTpmPY{+~A ܧL3}Gǩ rʫsbqL7XQ?jʩY 1n-bܧSD€hu>SG>:}IhZ,5*~LZjOuЊ|DĀh@ZwX;o|K>o& )sv4ZT##U,jaxOխ )pc@EDD4:Zjy½O8%cQ;ڟ,'ė=eUVֳjL*"""qg_|3%PR֬U20_U VEHu?ᔡCQf2epPeVDPCZwo6}W}UX#V ;SÁ>:*No0TL=t'OY{ ߆;5LTŦ3ED1"""S: L V/;NSˀz@e9?g j3G.]u_^{ϻ7 ^)"*""qgjGOuڟ,ۡڟBZj+i@g> ,$ۧbd;SChߗ@Tn*cϲ)y>=ռ\eԩb0yzڻ7 > 9@Puޙbo,vh8T(JXqJQ_EeHNXe O o-φc9og,T:~%шa@EDDw[j6yzJOe٧d)'@Lz0}^S'u/F*"""֝D":bFEh!]iݧ)Xԧ,PeP-<rXS^ NM.xfDDt( lܙ Ѩqj$ɮItLVS01qpC\;uѰ`@EDDǝjTL%%qʂ=^UQ+gdȫ}F'" (u>S> }I 1 4Tg@&NO9cGDD=b@EDDӺ3:h`&]F:$#XX"p6o+j`jGcHx* IDAT*&J)HHjz߈T?yӳb(PQ(pgj%-/{uҦ傂ZE"RCb.F%?53b b9V€ZkoqqK>nGS1q>Y% 7vX1 H9}w3V 1TDDHܙ WWcc} IV bVC.f1,?tE ~_x;éӏb ;SBu{Nxb1E"Qpj}MZ[lOzV>UAT6Sv u3b!NmoxxGBQoݸjNER̨E"1C!nZT=f(5|j_i)"*kSj|kQkSјBѨbWWT2ߵ/*ݻ;UmoT.1D@pk`*XoI,վHT--qE(N--JO|abݧ>pl?} 8`ߺqRٝ)Ңh${K*Iʻ--J<ܐZق|M}y} 8)HZY6ޱ/bF/)hJkj}ؓM}=S?c3PXP.J3%ߝ~1nݔ=h G[Fz@BA+*Ww;qQSnqM}T>fTag ُ,n7c- EjI$kѝOT^[3©{;Mmv:?}tʾ+}Tf _H9>JIV1Ec-:vXwnW}]){駮OS2j6V :S 4LT2j TOJKTZБZ_kmeYU)",Iw߭9M=С_PY퓤"4;Sj|޲LmߋG@ug:jQ,ߕnIHW(֢GqChVcwjӻڷg|Gɧz]M}8gwZT!؂)>Eiq OHq#j;tD]k޲(]΂ڷ+D ̠*TR?Gp?T}ag ;AtcRj8zM;pjEZ^2ɧwsMiYeo)TOg|lj~N?WSCCC&B]ɞ'4bR*SoGI+Z3g_Jw?1)ַxEB8% L[JpZf$I/W;XT;S؋_ЗߥOmq5uQk+O oͫV)*ޓ->I:`%wٸ3jږ Pv7<<#c=_|C=/?"ܹ-]q`RmOQq}]]1bb%ig}m _Uu?QNu~̾j!|سdO^Vr,JHEPPٜ:!<$%Z"-qtP pjtgQRY~vNY~8:TspaVv6:~}۲`׆SޔT.T.J7T.6©h<~ znZ,V}wrIOs;mǬ=x^/ ӇSpjy ue:;Sh7dO< .wW;-TbtAZ{Ger*׽pڷfSɞ2}y1 3fKt+THZ_|N%K{*i]W*Sw+'>wl :蒪S/ JojvA>pT*U"BSM6SW!UD*cJmDB- sgռ2Lim++ʒ90'uV80jiwajZ?Le$I/ ý;z=}\P6LQ烓^l֨)dT2IMץ+YXQ K᰷jd^0/]2 b-Jlӽu}4sVAJNX^jwS|wݧB@(ӭ\TT z/~OZcԱnIky?2vEcBͯƯa!@5:vX~}+ҊN-<{Ng_8նQێJmOE vg*L|pdO.L5}N>WI!>*u<$}'פ[7@nl%Au7TVJ"۷OnHtQAc =֢pEmGԩWTZ]1.Y)mNIV$.g-9=>>*T*U JJwIR#5TA ݕ|DzSHKFHZ*BRm|T~&^V+O|l.~>,V|C!׿tHϞshxO'K*WSqQ xPxB|WQ,-6~N?qڷ}$-,jq1o3܏ |Z#L|9UfP5}Q >U~EZk$RZFb^ FR6/ʕmkyFϪTn_;CT¨bJСCGWT̯kx?qڷB"\nQGޞP"ª}?jw jvzgޙJksץha)3DSU)"EF8uPu/ұGmRkjRk=ئX4[Z[Z޸JWj} Ƶgvgw.y}yޞPggVW UsTC:w?_ݮbʎTبEF֤Uc4T4~-oNI^nOΗHTZ(WoR)r>oS; Fs%JvTz^zfnXV<Qgg:;ۨP3/۪ڷ>w_p߇TeǍt3㯱iV]4­Z >ٝs=dy;SEhLXVEQSaJy)7+;FH7M Tv^Ozq담|ޞ " ;H|?zE0a\SUʕTk _ͩt2#R$bVkWUun~weW{?JgJݧDkbJB"ZZ*JtWfoՔJpm/ڷżzSP3?H::eku#U(Jnwz~ucd΢t'F.oU쥢t]to50bQ1E1C!WymͨWި}jQϋ?WUBt/J/L㢪zи&(}p{?+l~+R!c=ߨEcՑP‘LK*\(y9b\Mݹ-L:xȹlFon^QO7>ETNuՍjS:xhvccߩX0P o[7۷_HmXN}+)s>"ƵT(S(aJ%J0U0~J߲7U*I/ri}hݧD@Jؙ$3 %SedF3#W?s*"--Jm핐JF7^)#iGky*b7FA#)m\'Q2wHǶOyk11.FWvbƻU{0-Q"QF( U.KbQb%2+f]\a.d}Sݸlug:൩a7: mOtMI!c<•thgU,l^ƥZެUbT4j z׍5cw+Src㥲6ʥyeBFЉjd\EYj k)# E*!#x,J*Jacˏ|\ێOeO@@.w_O'٭/TTMۧ*?9k1W6}sKEϯh}-TTFnQFP)|\6*rqT*n|T\pd#03óP##D6¨HdbFmGXsK% `*/V;Ƶ=i@Tcاo ݙJ&H=n]qMu9UY7zX>*=T+?Uc?;wnkmuEblWXyKXUzH_J嚏UB_› "m!3 G߯\qʥlNηtyogl{)/TjaS}*p*p vzzmjXcɔ.?TkyiU<ZX{:Zk9,/TXUBk ʥ:T׷  S*V(\YU>_!IlSf0e@-'k?Gg_8նd_ORC}1kS{Pؙdf4>>̨2j\ާ+ڟ9ՐQuJwW{KZ,)z>n?T(\*z_%2{嚿jLaS%p ì3WYujp}c}uEZY6=:޴_nX퓤SXԋOb{>8Z#64׾"IqT&|V)i_:e*WOӹOC};|Z/zA7n\Z^XX؞TJI!YkUd˵g +|޸Z'[6 jT[WSOHDjw&4>>Q[o*s>$UOWP+t}ʒ+K7>6%V廚Օe#2#mI#GetXsUXT*RQ <`#~վlToĉzӏC@MdL2 [ojznuPCZmSU}̠+;OJK*_[RU~uc}H(O(8փ?|Tu JEJ%%eKeI_M!%Tf U.-X4%XZ#ڪ9t=9ڷg}6KN? 4;S@}՝]~@G?PկT_zC{vk+ƗUGUoJqbq#r\ɢ*WU~RZz)U2usg#&" ;HkLc塺SIR)}*|AߓTFUo^2n^,/K)slX0*|kMhRkeO{KRŋt%ٳĉx?h0*hT*Pv;S{a:VATSSAH0XIuTn}J/dVT(HTq%Y)y[ U筷E'Nٳ_/^ |3Է:NͷO}r%j>R>U#,l [-V2?OdX /l :RmkՠOP!dYMNNJbg jt0UTTM+[j!#{]mmހ \zMwgXݧz6"}ݙJ&\MvvTfo>UrQEP\7zS[TT`*v }*kT\1*`S9lFoݧ:B@Pl6IILVScS ꏫk>FO!$j~0ok@yݶ`__ VT2j gݧjqS;>Nu=EyZ]-lO;S@}SaSYkR8nj@ObʷrmFo[zZc @Pu>`u0kSaO\\<S1*>" L[$j٣h.qRc ;j3\O9mq1v ̌~ T8OjUD`ݧlSgg?G@sؙcg}ޫ_5~껯XjeG&rY}-nT**Q[v`g;OOua¸S+AT['Q *s=D"JPp`:)oSGk*5>Ko_|ʾ >2kS"*P;S0zSo?Yاr}mKU$Q0xWf`Δ?mOոTgԩ'S]5"*L[ާ2ا!V:S>?nF@5R;S@S>#W?OH.}/WOuƲӏUTgݙllާSmjdS#Sp *ag ` VG?\⦥ל}sڟBRI쐳/Qڇ2kSp*MW3L&PWoM3R T]zj참jaS}*N!TLLa'̠ZBqT0oTu^j_?8 @S3G{1{}*/9zjLSp /Sy>;:O?nߋj(?MA@!jwNNS}jj_Ǹ–اlTlgL2 :)']폠j3\Oa{}6uvQ0TlP;Sh&sWZW6~@TT|Qbޞ `;*V[v`g N>uQAՅ 㚪OUUAݧ1~ TlG@`ؙOuW*5*5>U{T6f}*v"'LQͷO}r%bmITNS]f`E0/pjj\y}}}-A}hzTMATv)`k5ާ2kا׶d_O>4uz䓏Kzӏ#W*bg ` ^>#W?kjS^|ھqƲ/^ Pؒug::Tfo}?`3yjkg:{:{9}/9h\ 3G0?=7-?Jfվŀ]x.^T Ξ}NoE@vg*LR*!zT8n>>`[ٳ_اP $vd23t12*kO MS}ZξDjkzщ7US0PPu>}bٕ!UmSTfP>ZT@@~$5 '.Lx0oTu^j\ܧzgӉǩG@Lm0E5>k_|9Tyť?)K`"Z#6L;7zSo?MݧjOUr2gT{1 T/{z")`1#"ܧ\Oj_Ǹg]zMw_ݧ:{9* @cg 0H3}¨mSm|Oj3\Oا T*@ hԠڟcTTO[ch*gؙBe23!Vo\ ٧jr;>j?lVؙB0MhzST?d,X{ϾoSoꭷ`#*jw$WS%>}=J=VzT}F7S-V퓨{enQT*ş <)WR;Z=Onѐq}GXk>>tʾ >皜  <Ⱥ3E~•_gZ?T5rʬٲOecmɾj$}WixxgQl x!L`Y?Wwڟly=uŧ{1Òɤd5JӴ "<) = JNjZ=~OkKP՜}R[AK}m5?#OMMUk*P @-3j>W?UT.}/HwwwrrT@GhzzF/^^}v}ٙJ 'W6~dD8335nT@Gk_bz⦅-_mw#J+'.LT}*pj;>U*R:V6 Vb1E1E"E"}.]zOA`:P ]TzQJ ݧzG:!tQܡ>>T@|_O~bE1EQaBaB!]u>)xE&cF(/jwVS9&=sn_!Uuj?}I!loS--qbT8Q8R(R($]};>x_;SLƸ' }4i1酗Nz}STtwwkdd}*eԻb D6.B\ollP V_2jT5UUHնdT{1ا܆ __ҥ(oU4R2)k8U. N=2-vST\vT7z)S ;ο[ (*1v)rT*\.o~z`C&3A<R\ܧZ;~Jհ^^1~zdإچվgܧR.訦~, PwDZZF7_NIq0U\NT*U.DɫYO5}C[RQ>ob4?;?Ё'*WSB{5e#*J[? zT H3eM;#3B*}?[TT@cP{_mm,TmO6|֫RTR, XGfPI\-+ $#j>#4y]Yc h*`XQV,uo;3_q- O5tٶעS2T2Ul`#*`g?PE?n jè/߶9?;zqg?Z ڧZм5O!}O4 _/%D$z%U,T,*aTL6Sf/=/}y_ccF(E05z}4ujrrR}"vjm=P(TJT(U(i}}]H_rYҗ /||쌹Oށރl :S<[###_:& ؁LfF~xYDBT(P(PXW>Z˥UTY?OdK))ؽ՗jk{ۧ32RTP1==?WH$T,ϯju֌k^=*/})u_V>j\SiTT2kSG@оwMg$Isgto[ (/jw6SGVا 699=}>OiH=w4TQ?#o)N+Jixxx羨8T55m?^l{-dݧl ffmy\.l6yS-hζ멶:~q[^ ۧH fNm{Tf OuD6lPu&ܧ2kSTp%uWTlV\! j ~{<@? Tp==::*Iµ[w:r1Tӻ0aZc AvR)ISp <xTxQ/$kP`edi !/NU_;Z;VvjAU__rFGG555cMCC07fS{D/\i>;QOf! 8T{9TTT*~`#|\>gOT寭0>fݧr"d23$hL^oyuwwkddD}}}JS5fեn%}l6l6nN^Ť'4==\&RB]߶ܤ2RT*6֞u:~~N522' S(/ꐨ,T*~p\*vkC5C$uuu5M&400H8ǰO!٬O_I@ۧͿCnA*QC'!ӏlɺOE^cow=N;N+ڟ$MNNV~#c٬~tڱf vbg ^eS)itt}*?8nS0k滤i Np%*8oc~O[TSSSSUUv{e;ʬYM")u>TYk}}}z*:ܧJRJf(*~pݼ{&TRԧf k7A*D~ UT\}*8 pQ__FGG 4lP؟]ؚg-,iaCǜ~O'pAOb {oZロœӏ؅zT@P5vy'TTeN? `jQJ[ gMSO)p\nVU1x?؉ L&SD~jjJSSSB)`j %L&544j폠 v W~h*hwn?T$`L&fݽeE@lccp18tmuuTMMMUk}}})*ZmetT?L.7\nV>۫cN?`ɤd5JBβH僉JYc }*J499ywOq=Lcc @@OToޛ`Q~$>xS>U:f յeGMy>dSQI&QWW4?l *vzTzee"x>Y;rC=  +jjjJf C0qAG 422o^̨p PTeN? `T\}*l744MS6t5E0 CfͲOݭ g蒪c)^rZXL&L&JNf\~OUoa va l)itt}!s p `\nVZXsQL&522>i*:Xh*~7[TT#4Y{݌ӏ744$IT*r0Tp yoO>U0P4M U.7gL&L&555t:l6KG4mاobʟhLfF'O>E8p%T\N< @0 522>i< @CN(ջf0v!LjddD]]]JJRfN?v *#xYc gxxXl}* ~aU[ا&*!Q.7>xP}*jE-y>rZXL&L&JTp f!u'IJR>6!/S b ܧS.(T.AN.U.7gbNN544DATp 7#G:ا1اr?F8Yaاr]!`{Jf <}*gQc ;>xS>U6Tv$ӏO>UsQp_S쏹OEźO499IA-)czv[###_:V__ɤӏ\Pw3ZXsQL&522.iR)eYPeاV6eF\Pp ` }*{P~)-U:6AxOקt:Qj{@&q1\nV sc̊ @`}7vZIR)g#H2F pyjAfPק\.Qޱfg{$I%IMMM)N+Nkhh_\PG8w9 dRCCC.#[}#G:ty0Il6˻`SxTZJ&N?P566(:>*~xWF?* 2O8F\Wo5* ؝Kw >t `؝rYrQwwӏ-c= <.aw `fT` )TT Lf)}*o @PAy5E}geȥ0}*AB@>%3*3S`:Owqޕ@P>A9MnܬzK>?A)/ܬv1ޕq~ *&tSSV ǻ2gtSc:*2ٚbԁ{qf7m& LfZhs*:n՛a``PU1xD?S9 tE'T= IDAThz{7pqT˱3܂no>-TK3܊no`> T˰3 @܍7TP.266r .緫p8v}*jP.`LQ^>7x-(oU"Ѻ1kU{P2|S/vW^z3H$bkOP\ pug:#+WoXh52kU&cg s՛YZO8 hv@PY/u^n٧L5jj;S )+l}Xű`T@sE~fg{~Aۑ#:}|XiU0ko88qA4Y#T諷fL ?e23LT`2:3W>?~T ̝Aا;ܴ3WS6c 'vjaaN=S^>YsO؋ *`ؙh k}*՛GS v)0*j>wj||Tdf4>>@rfգ[0kkZ\|`]Ο?#cc`k I,?[\׽{K ̠sT6̝)|`ݧn||}*`:2LNw ;>pTLQwޘ?*>*)2kNUAz: T@}TLf)pr*kсmS1sk*@@ܧ2|A:?u'S\nVܬ}Wl}p8X)¬ӛo 26fNTX ;Shic~}*)`3S3wاBPؙU.7}*v$lPؙVrY-,̩g}x*> *;S WoʬN-اP7:;S >U8ag 6>>A*e؏LfF\L18zc.\xUϟsQ} 666OE~@@O2w yTv>eQ vT.zLO!ke23L>TvTpsgj``G_d \*4u7pqM+gSXƜ Tp*8)pTp*8)pTh 5naSQS4u>p'GPf#BÙu>) jhdf4>>A<ȬӅ sN?| *4;SS`+vاB#PL@0OF` OĺOo88.gfp izzlA@]dfؙTTWT1sgj``G T6#Lv}*T;S` A@ؙ؁}*6ag Sa;T0;S``" 0G0p?HN?/U>_o9]Ο?#\P ;S7b*)OLT>ا 6|*Toӏʇ:gd23L|ܧ?T>`L :(4 T>DZ3" *bg c:;SlaT<"SlZpU?Gr&DVW9,"Ţӏ]^{U;@@bSE@T Q?*}ڟPTpPC@ UD@ p`.Tdw@PC@LopMTlTP?P9`*!Bo9N?F ~ ɓONB3:y)l\P5;S>\PTC@@La+a9)l!t1XDQ .>UcAe3v *PnpAT)j#')EGC{wAkN? *A}allBa::=ݻ D'.^{4= ~PB@;T.P]w!] LnT*jaaG *؏jw:!E"Q}U8vj ̌~ .Th7FpLfFShXG 6xT&|P=\PY30/ݻN?peBa.4o8'" 7=='צ@_P3TpH7n\qq b*TL`*Tccβ^Pݾ}Kkky rPH\P5.\xUӏt &րjy8H@ PT>df4>>:\ p*Yo9]j |PLͬU(q@* Tp U w 竀` ^QP--ҢӏJ\R\&1E@E^SP5??FgpC$R)Kک${S u3; 5 pa#RHІ! mJ.HP i ) eѦ$KD\rgw;3;̼^`vyf+-ZPQJ6W_`ҹ?{Y0TJ(}w^FF^@o~⩧Ny/jKx;S',wQvP]W2#vPo~X]ښT ._ivP]*b`ݻ?%X]|5ƅ 8+*=S F;FFF{i0*bP;L1l޽] J^ Je%"*N Jnrr*%+> "Sf7[otCT###q\ܾ=` UX]];T }777^ƺ*èU@hzRYP=E r .\N|[*x7] M n_oOJ0Toŭ[JTU4gP׀8lP;\y0X#bD@c/O7㩧N`tj5%@i|[O=u"ݾ=gOwPA~x=`X^^ v_c= vxPKK g `>w}߬mNA;*ww⩧N7ٛp;|TKK CKjtowuT.|' @VW ҡƗոp;t3iA527nwOAэ~Tz&'ժS o C;AuQE;m>sƎ S]; FF"~y.JgaND rӠjۀַz0R?I|\6rT*+!<}kyM*NJ@1o}5E@ܽ;kkjK@ez/5EXYYeLJ0PD]Tݻ# "TP4+W/qi0\: fRY߿W"~g#"b4"_—رgr] ŻݿPWeee9j+YYYwOo?g _R> TPLj5bii9  ,G{ P w^@LmPe? hjj&^Z菂z 2TTP )(j++m_;eT >DK,,{ 0VVj%)dc*ȗQ?>W3qF: 2Ǐ?SANx0%@ =St%TCyǻPT ]̵?& ,tTT^T3155Q׍VPe~*Q[X`hTծLҳ*c˻0z1lU?="6S5++)t4h)gT%TxW?b[?:^޽;`*׀* zkzzFH@YZZT=үVr 2wxȨRro*2`g\T ~{]T_/G`X3JUF?æ['wԌAw3Ja.:xШd'˳gTU ~e{豾<tW3U]S Pejy#B*\`*S*s3Cӻ^lKt&*8_#24wةLR*AT@;eVVJPe~*(<6WES띪yGSTZ-]T+2`g< BNʨ~o L@ b~E}RH@*JS##WV'qC/|I?y/!floee9ޝ`*3UF?eqǹ=n@.ܙJS(Aje(~SQtyQ-z250\ܙϥވt jP{Z*bE;offq?"w컟"ZYY؞V&dc*fi)CT*W8Ed=S0Tǟ1G=y'TDRw{Ǿz*"`*3U؟"ȳ(~?.*„Scy/!W35l| u@O[: )XŰL"ݺ5~tΝۅ(E=E^gUKUiff -?Eڞ~*藢RTD託􏞩Wog/33'\H@N?q>T{TmkEBO JTDȈVZ3Oec*zeii1^FC33T4?;*S蕬gOfTZQwQEI@s9{3չS^_A)7|#z덼yODEF^Gl~F}6mwǏ~}M éo󶞛~H#utDžT++Fƹsg?_""\Ͽ&Jt҅ C=SSQԀ*"⣏>7?h` vl(Z@5:: vZK4;;/Bn}S@rj>J7Hnƛo!cSq(r@?;}Q Je%ܙr{~tZʲQDgϞLeT__?T*"⣏6vNePMM4|Lhqt/B -iPeSTщ},|@522wos`Xߺ9n;8ծ]1>cvSj*B?U'6wUDF8Qjrrx;f/]V2 Hqe "Tns8Qjtt,&'>4"L;|8c'&'ᇏFY!NE=1hqtT&90)A)M@!4é"Tccc199𱠞`*]8_#TAU:ccrr:~xkUDqwGwn}aʡRYŅ&TDih8_nSTcn^GtQE;n뭫B*TVb~vD4 "P[\\L%tTAU:c4cQƀ*BHP6TD]&c׮p3ΗT'UN]t[;t5RTD UVcii!eRY@rj>J/b`~]TJPED|G7<-.ލ-)]&>GTgΞ=`**c/~*;L;w6<@~?JkvTw=EtkoUԩ%OEDmՁUHܽ{;zKHPTDɘ{jJ7;;Ν=O cDD?L=zrT뛺u߭ |3J.UF?U:ApۿP("PE8(k@eLu_=SPeS37y䱘*"LJ*OZzw4+_@566ӻޏf/]{Z)D@ONP5|G*Vc޻}V+-(_@5==cc `L˫gBT:ao?XYYŻQTZNe .3Jt155>PeuT]oj*`3EkUFPpxczz&"+qz|&@M J@ep0ΗTUN]tnFT^7޳ A J@gϾf cTXZjVO+EkUFP`ۿP8@Tmozܹ#hWRkol0J8_SRTcn^=t@52qvMTV"":ڳfS2H)̩S/MH?#G2xUD-qzܹsc Je%é w+F0zƹsg^FGJPE~Oj@vB*:yPՊ4[%g*]Y)}@rj>J(%T8q"כ<𘟿j.h`3ՙg D0**~055G<PDߎ7޳ JŨV܀h`3=S \@ON?UFvE@}ƍ5y>KK>j|h_J7=S l@PT>xn*`U*XZZJRwpT{++|g1vݾ IDAT2 kjj&m~PekiiޮwѾLufzZ**r:r6W3<UDm7c70jZvM W@56633F8_AjecT]TPe4Y@m욪7\S"J7,| ]@T3W.<>PEĝ;߉[MP|S ̥K*xu g@]_~GMK "5;Ulj5^F)kL@Հ*bGlׯodWVbyy)j4~y6|TAK'jM@Ղtss7y/Q Fbdv}x6Y+@,,4';UP D'jéS/MH?U1=z^H%{+}&k奺 P IT8wL(UuF?UFU}@z7֭&kHW竍G5z)6Ѿb38 vʕq+y/SKR 6Thܾ=_4Y?-,4%|p8Lu3D+G{ ZGvN閗ceqa Ǎqtz:#~tbTn[o?`G](¨a cnTSLu S3W <P5FGk׷n$.]kPngW\f۷B1|LuSTkzzw<ؓ T122ov&_0BP5?wfFT^S3}O_~C*Ujtt4FGڵ+q_6aR V}%©KgwT=b3|d!jlv}͛7| VáT !JgT=&Jg/=dqlѱO>_n|Mf`TըTV6G 9D)zLO/_{Ce#PPx7/?Ǎ52[]J޻Q$jv.T3K@gtRm j/<42TVRYi E;sjo'LC@ct邱>'jcrw/M@dTF@߷@'Kj,--佌R2Η/U\O2JI?ULODDR]1>+ϿΟ4~ET *>k jZ=!3ՙgr&*cS^R : wŮ]qǷM/@l2ԀJ8{z+U:Dzkzzw<'}&$ڵkWOķ'|mTF@ՍjnTJgT*~ީTOm]@Pe?sizZ4PEtP zCTgLS3B*UUv_ jj5?vUp73UONP}TTٹ8{&? F0P5P O0NTJD?U:cWR Pgheuu5f Se/rPtB*Uo?T@VWWcukkkMBU#©.Lu8_y JLP_<4<&^@U[HDſWM0ܪ &'cjjՃ&|S'*9ctT]03;x- zPEx5~Y?M0\SUTws j,--佌R278TBP_w4 T VWQV__n7 X[,'jӀJ89|SG@5`/_{vH%O@UVRY}߉7M0VR0~T©-..L%J3!U`%\?-K@B&N?p3z j~tYH%'~YYY?sq[W[Gޅouu5y I SL37TCʕq+y/Sǎ=䨀_Uvěo~?8(K=U={S)Lu3!!"JO{U@R8gGoo$-ULm[}[P5n@5>>{ku2MJgoЩS/K*֐J@g@UDs-}wL聬WYS;훏 P J7;;Ν{@@5S3fsH%*B@UT֯݋q{?,$vIm}';훏 P v8_:=Sqq({j~jq?ӟ8qƍ/y/ 1,P"©LuFy/|8t7^JԂϷ(~o}{Gg*_/Ɓ$@-Z+>'ځXZ5_NF~t73'okįZ.9VWU'7cnfrP]R7zz1g>&=SLш?6]?UǟkݻoC=w{9'cVcmm5]~|(]^155#jqtzhE@Y?彜ROվw㭷ƱcO Jرcmm-n܏w$r'*Zy/Sy⥗^{*:yyTSﭷƝ;^ ;?ԧG$`S3.N;ɓdz>e/ĥKj᭷dK!Ѿ}cȑcoFD{}MmZB(%|씀dcooׯ(euSK'"Oy/GR ={={#<o{Yi]qe%jfq(_*=Stbd[mЁS^*ћooF(ǟR~16miy[G>]F7}<:]_XXx_v_v횈]vDLLL|{?zo#.ըVQVRYV+oy\T6U*+.j5Tׯ]jϹ]_e ޸Ob~V|]n=Tٟ͏5>Ǜkǚ-f_G}5ZW6^Ou4ZCvxݫo&vnvv6Ν;2(9;׿j7߈=z`Ϟ}gxaՍ,5%Ş=jBT:|tS>J)Tݽ;׮={ ={{ᇏDDw=RxtjP䤑FLu3)j408Nx:^}qy/tjT~sy/p^*a8|H<'38|xG^@eTmD}h||WhaޥoZ8u|L/*zJ?U!Tsv\zj7o՝XXXWvH3cc199iTE|^|x^9 }!Jgo>Zj$j7&6Rnxt4]uZ5v񉘘K~{;#.ըVQVRY}e}[{R8VܻT֯R]Ξv=Zv~]o\jo}׿}vuǛoy68J`t@;jgX-ZzoXYcjt4[c5ZWngrr*&'-z(K'h젢0S.]`/">ݘ%\Dmoii!eq>ʟn~sj^螙13;""z(6;p7=~GDEOĄ]S=SQ:(S^*~ 6TvMݣg*l;w&e@[D׿x'즢ojkPD^ԇU?-XP?F@^cbbҮ3 |?(~ӧ_{9f~VG}<9rRӻcz6xCn][m=RuV&&&cbb2eNTgΞ=#TΉOǫ~C?U_?>SwVտ8mp7WЎl;bc(v院TɓɓJ "^޽ѣc>AųjwY'yeP FGGQ/n"Mؘetz$S;~ؿЏݾq\r9==dˁLOZ>AeS5uhϮ]8_'L1hT ec"}ux'Hvuo~}^4V:ezUmtt̮Lu8hd;g*}g>b|dƳڋuBjlli}oqƶ_K;_v_㭾G͎_lڦ>0 ̟ 'g}_T5nş?T?tˁٿPk/ ahD) k67N08@@SOU nI?̦)VSS155D]lmt65ab>ԌŮ] GVqt)*]}?^Nn>qؿP\r 3ՙgzy/t߈'{)S||{)K|}~Kdtt4&&&SuJ/ TW_FO?7nrɂɩ/A_YYwS fggwtMA=?U &/սkpGt>&&&cbB0UVy% fgg3qܙ 3j>Oߌ}y/@μNTgLAkvPAeT>$;4>>SS©Jg 3}:NQJoFy/nLLLĮ][//ccc1::122#.ըVQVRYXYɮ7_*cʽKeZ.9jsekkk%"8>uNuǛom[746mj퍏o>װ}}9wivS577ZZ}?m[g'cy۟[i|v?߭ϩx7 翓?w3166&']5; rj?*;_{j#PmO@'jl566ZP"ubvv6^z;`T^F) 6__T6Pm=G@%ڞ*;O@XLmLu_|H@T3ٗkWT!j~j9*TyFblL01ΗN0PAuҥ vS9y_ P<<U}Tj 6V2J8t DPV >󙟉|P o|>*}TT###1::*c/` O@]f/͸|b(OWOφ7'<uϳy۟+?xZ0Uۑ̆T"|*AU:T[}?k0>P 'J@qU SJ'PA~~W__Tomnz\@՚jT*UzTc166jCIT:|*+Wӯ佌ROܯKJ@T'P59y?osT^@522*j@TgΞ=#>PAK'>SPw[۷P&ں>J@U|zk|*+>1׈tTS^6H?Usg_?)P58O@Ux*Ug?IDATW@UJ0՚tqܙCI@9O~~)ſ+jqT['P o^c,Uzނqtz *ș~t;L|=zL@u[ ZPm]J@%?y=[5>[j`3zTPk?K@uTP O@Pk|(5|LA@uFP՞#G7~>>"_ 6_@uT*Uz##JgI@$Jgog_F@X4&P{L@5VP+v@522M TP` vӟ8tp(>*9t8tp<_Pm:.P5ZJ@%?y=[edz=c|3ΗN0!0יK.MC><O>I*T'P o^DŽR)j,--佌R2#T3'?(7ܩS/MH?U{x*U4xm,j}TP :g*l;w&eP0Tۻw@9rL@xsT zPJT:|0XT0@\O2JI?U@@<m׳sT[P 'PΜ={F0F@H?U:TݵgϾػxT ׳sT[P 'KrL3K@L?U:TݷgϾسg_<{vvj9*Ty;7L3O@N?U:c{޺J@9TPem3eAKg ~t;|Ƚj9TPe5o!ꌞ).*2ZX'vF'J@qUqtz`8 `댠v33{GoPݿ7'<uϳy۟[juuU Gt` ` C=33wW|T&g=mn>1ΗN0D0׉qż1ff{⡇j}T G@ZHhqqA08PUYTP?J@]@Z]]mz8_:p?\t_쎙= T'jvv/{j,--佌R24#TOU<+9*U UVl.*=SSvT@K*jz: T O@%^@%*>=SPm9ue*Bf;TFP @jU Upzƹsg^P*m:<*"СC@U TTj5B U"zRrj>J(%Tu^mP =&ɚ_c?펪^j$lLu3) H*V=$PyL@5V}@UV"B53tJ@tL?U:A` vY *|TZ]b0E@t~t[ZElJ@J@6'=Tj;G,M@ttQZm|,j|\@%yَǫ3S1 AU:c#"bjj# zJ@aTCb/` %3:#"" f?BJ@sE`~P='JgVxCMPm}<TATDp?|S@? 1nnf\|1ePSS뻮fbjj&TO@UZj56vS&NPXm|>==#jyL@뀪RFT-B8_: ct邱?z`Mym JT۳Qmj5^F)&ru8}QJr"B@5#K=g3gϞLP`/~*jrrjn̾}E@UjqqJje7=SE" ԩ%O طo[T?_u.,mB((=Sfggܹ3y/`P8ɘjrU@aϞ}[Y՝;Mk]YYJe03 (,TU TgLE' O?U:c |Le!JC?U:Ae$Jg (P*,3 (%cU`32P&Jg"1ΗN0 Pz:sMZQJA"*?8_:0T1nnf\|1e0SJ@ 佌RO@/J' h: n380,TPrj>J(%T3ՙg!~t =SH@ S^6H?J7;;Ν{PCK?U:c8_:=S*TT ꌞ)=NL@P_gUA08@c*U .|S Z0NP08S1=@Uqt) d3.] Dj,--佌R2s*T3P| K77w3._2`*q>:tvS%OP zƹsg^@ _gSCT:|%+Wӯ佌RO?z:s@ z@?U:ce/)P~t*L3{*O@3?*>ONPs/@Jg=ȇ :#hL08@T9T38_:@1 _qżT"|!(AU:c1ΗN0P<*1יK.ZZQJK@PPW\ӧ_{ Dz:s@ _:T38@9Jԩ%Otqܙ@T%33N@9 JH?U:T@ꌞ)P~t1ΗN@ ~t* otz `@Jgȃqtz `K'A0|I@0Ub/` ` nL30TC@P |SE@0D/_{@,..>*!$Jg؎qt)%R:sc&j5^F)@@0\O2JI?gSgϞL _:T0L3@=:D`xJ7;;Ν{ -S38_:=S")TU0XS3vTlK?U:cP~]*ڦ* G0N;%`GS3`/)R Hb/ I0|tB@@GUAqK'Tt_g.]`7ZB(%|t T3e/` ^Pu݌˗/ h D=svS%Oݧg*l;w&e0T观Jg~PW\ӧ_{ ٳgS ON?OT:=SA@@.SOJg < ȍ~t`3|LP*r*a'ꌞ)B@@aJgad/)F@@댠a JgPPHtT (:f/A!q>@@@)̌LP&*J_g.]`7QVcii!eq>H@@LPf*J_qż,..TީS/MH?Eg*l;w&e@T cOEL3P0P\O2JI?g3gϞL0pT $TK` h &T:=S O?U:ct8_:=S CC?U:A;%ꌞ) *?a/) d3*L3P0U1ΗN05*c/_{dqqA08lP@AU:c8_:l%̥K jKK y/@s*hʕq+y/S =S9{` ZP6O5L3P@Nz_"Tg*l;w&e@i`SuF?U9Jg  ~tKTgL@:t@?U:cb/)蜀 @?U:AUSL@KS3P@K'=Tg@oGUqt)-\tn.V2J8 @P_:|S_*#cn^Fi,..P@USg*` #~L3P@ή\O2JI?N={F0 0nXL3"9uecJT8wL#On3&On*TgL@ S+؟qtz<TP:SJ08 JFP c TPR1Lu8 JNP(c `0`̥KrMUVcii;`PT؟qt)L*@݌˗/SP;ueuJT8wLzH@_g:38  +Wӯ佌RJ3ՙg``Jn?tz`8 `HJ׬JT:=S0T0S3ΗN!B?U'x{q^F)2y/߉Oǫ~#N|>0^|~n<qO'MNx:NxZ?]##ʂ__{9ԋ//B NI:AUcJL;aT8B@M?NOE=|@tP;uM5Tqܙ :7q>ی]QOu+y/9{` Ѽ 'W_F<|K^|~F~A3 AԀJO:Ο-Ο-對_|!^z酼 ;jvP Aɓdz>5cecț E67TE'B@J?U>E (UeLEdP(z8Pd*pN~%ٳgS@fNx:^}qy/^|~Px:8ujvv6Ν;2&Jʕ*R@g (+T@jLPf:ROUg FW?U^#~zA"FTLH00~__{9]/K/2*``#*0ɓdz>n1 0вJߟ3){y;qxoɓ^|~=:smjvv6Ν; +WON@g 5T tJtP;wl 0Pd2FIv4B n/`v8TJYSkO;kT IZ;n PFu7-GIENDB`hkl-5.1.7/Documentation/figures/B_b3_y.png0000664000175000017500000003673415136610351017362 0ustar00piccapiccaPNG  IHDRPYƜsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx}#w}OK3r$G# !?,D?UKrruWK]q<&.Q; NH؞*I;^a}KC277e!PC#@eɓn3PsH.0*CnvIR.@2diiYqrj6:y޴ @em!ɗ8jSi/ Aʐ|>c?(rr9~.}>AP%qy---3@2~}qu@2{| %I̙/0*N:-qnJiU`T P(nMieT K PmEz }sϽۜjnt"@W.CXp9 T$9][HAr'z9(Zv~=TNۭ6@Rߦ|~IS3P\X%~P)Z^^V.|E ZxA}+9AJѭpO(QõZUC P) /Vz[y*T^g^"[nr\+4u@vxV zRrrթLf380sPӧD/ £:t}^1@Rp=vm_ӷtN{V3~P)8utkiI[sPA+i),~WZT**Z]}hѨѨK v.?y^]}KRZ=pHVP(r@b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@D &@L(P1b"@Dy$X,WTL{,+4B!@Έ-Hj*:vZuN2.q:A ƶAW`c}:W[1rsu*WD-+(Hj6i;$ٞBeј$ ' ZF?YedTPAeeZCh@D3P?I#BV+0eѭ0eܾ;1f & ٿ f &hʼn'm(P@B[0 HO0_P1 rȑ#}Ο Lis'.ܾ]L8cΞ]֦~*`Bz矢{? ;@e׿٬JKqWݷ S65a?>.aE®5c#@ezP>AUM}KA-hŽ;4>9L*M5@^yV_ D"q%(5"@Y‹ PFU$j΢8g:𨬬*Bh<p}Vf 4KEgeSI%*O*P)WrN)u>Ngۨa&ZmzmqT$JkmYAp/|^VlKoسaaȭ-`6ڻS#@> ҒTVяWqmhCW*r䜑iSFJQؾ[xQxaJjV,:ʪO8>lr[9EDyO^# 5l|S4CNt00Y][^TmK^J(h14{?cI͚?lJC ܑ}NTWH )IGcңyI{y]oyyҕҡWQkjܶd"brž*ע,IG}Go|eS Tz5;X4T*(=[)<K/;XDT>یoy?tHr]q.]ŪtQAJ1JiDؿrx3%Gԡo˾%T)ؓV,Jk_Ғe]uzv#O$KM+  }[#ZIrzڕŧRuk;NW H (,<XaS.хsOʯe R:w@ayZN-/OӹW SM'sIq4Q27yz%T'<- T\ O5!j+xMq4I:$iE!'ry]yӔsrzjᩪ`iKA,,ZxX\W)B+OWǾTV+>qFO)}uھxI~Ӷ:UL+eoTQ>#W\Z SXyӾ[̏4H ;|Q.סWh~{q5NS$^G o5)izmWSX}Vо{Is (<@ҧ_h7KJz3+l.$$sIs H22>g[/QNx gZP0  kPD0UYeZwpDxʕ'`OPXB u;$0h&G0i(5Zwi @anѺL  s`ZPKDܡu6;0W]AZw!@an:B[vHw!G\uH s I(̼DfuH 3$Zwd0hBLuH 3 M(Zw0ShB( Zw @a&кd  3 KPZxs" M|oB|',0ם @ꬵZ__{jrɛQwQ$ '`Ϣ/(dښ677e P3.nn\󳞶G)  5#&a& ^@ZP3bܣ[DO` ъSdC=RTv>i@e̻uRe/vuWP!QwH۩7f2_+IK_z4啌Z#8 :?Il zw~]}_hiiI|^\^_R?G/WUi$Nt`$Gҋ vsCy=}I^H L *Baf*U__=u]j6j6r~/ҟGV.!ֺ4ZGkK%ؘlWxAa|{uͿ/[y$o~SZRZrQQ9r(^8 l\.|>GnW_׿&]>_sK(P@·aIږrY5IzaZթf9̩\.eu{z%N:uZ'Olo~SbSھC<]ǩVRpmwjee͆%---)ik|) x37tWj}z3zGGPRwD 7zCUo '=OV.*ߴi35dT8:+:.^C+Ta^k7*Moz׼Qsv RHͦ$^keeۯ'͆^O_?뮻UׂZ[d%׶s嶫SHFVFV|n}j t}_y~'p% R-BA7F[g;JVhR ʽV067> @ (?LJw|Xwj]}uLd~wIגwV\.):Z^^+tWGĶ"-={wJ -&FrU2ڐ+#{ssTOl^ѨKRc|W^UQP^m|^WQ|t.SsV&67;jsS'dUemMI^2ʔZ?~\ p@R67+rG)z~!uCw|H? oxkW]8Q$T*pX\ /]7ۧ|>)l˦N(E+MVrFEYm\Z}{loUzΆeY ZzҔtN ε+&`L[(xʝwJQh^9vLky˖J1sզ~U;TVu%mo5׼DG^7Rt1$R8H hԴ}I˒Z^^io˵-_TŅ4 mo_VVk% mqLsI"@%ʪ_WU:y`Oo|c'2's5[zT8!1]W^?!Z(nT,/h H5׼D'^$~dLUXj x'vpLӹBiݱ\ 09{Ǩ>&| { J0r5T(*N8~cٹ_;&Ϊf&ѿ}G^1p0a\ʸV > j')D:] mK }q3ԯ%yC'`0*:qD Y%Z?{4HPt\cB篋 jP6#%u6 PIJR$k]Gڭ 3$*$vտ} ދ^z[m9Jam8B o ORV٨v5F\4#b1Zp+05aUjuuVɄJr>FlTf  jӽ Շ98{1ھ7.UHE a OVѓ.v M^ݘ$9k4vY677>6&%X(M?<8c?BRS?FT a1Ȟ>#ɑ؏| @V} OUq)Wsq`er??ry)HNNI}[d“B0¨sr:(́k7M;>$9Npڬr {LbmJQߞ(enMyNK\'@9%?81gk۫o9}&3]p{iFtqY'(̛ef+8E^#q?I| ͈j`.OZ-KN'~yI>w~8eKl)nFfTuSTغ Ó}EgԿeYqMR.5Qw O ѐ޴W>OXuW ? '@5R' O͆T˯׫R*3juWʢȴPGvkߧp''F]~*VjvUnc?U*mnnVT3a.6 e)oUT' SIkR#TקJIƘ'ھۍv̍jQ +d\TlZ_N!IrTɯn߾,]ޒ.E.[[*4k677>vafF2k>SZͦ$i6W/_.H/H[[[_7LuiرcZ]]48PU*8qbqSȈ(@&E_z(hߵs5 OJ?\|"mtyKkyرc]h}}]RpAU'Nرc;U(@&8ަ{f9?/F#h] ]|*,n 7Zթ`͍O~B'^>huuP1b6 \X*J, Qb(;E3ɪsrbQPF PV'hg}{F7~>(Xup}]Qq%t²!q̱jPd>,`n3F wFiyj̰v3uq#<et] 3('׌n:?{d99D5 2om ,$M5 2mG ojRtϊ(Ȱnvݱ(ȨʎAnz'B01V{Fo[?I Z!oC}+ʁ3_ŷ_=BLJ;@~ a]*jhݏQsٿ[+p+PFˮCN( o/Ndi2Fշu>?:F=NٻJn03 BTQDv:#cLj'jYo'o7`ҫ>p\uCdu 'Ϫjm]ҖtA弞qYzǟU?,E{*3ƪ]z>Y-iYZ>>A!]Fǟ|LWmE慑Kֆr)Z1jk!ZwϽ7UL"@sS&Ir"1jY+Z~aҕjVowj=(`N|~]|rosvꄨ::#?綠|)(#L*džE-kiV/:ը%hJQr]w~;/fFU偣^>G%9x%-iI+Zi wTSr`{+tVMw;mHR}nGW^N$jjꪷzԺ˺-]y7 կ (`T3 Wi[۪rS>~вnW]:+us[Ot/& C #GUwtjIK)'GNk٪GTWMjH5TooCW~M?%@&9}DM}lu@W]jiKOq=O;߮br؁,5 }9A-k5\ĨhH5Tז.ב#OӉs @/`_W A-iY֥ve=_Z7l+tyCuʫncz/Ho^.d L}~C){:Cjm]RM5=sO?ִ @Ã}~K){ڧ}:'W~ʟOi/RG0C>].Ia~PTk{V?l^3M{9[5J*Kg*01nk0ז^Ny<aNq&|L(ٳUʑ%L((hITL C @"h/14`hD  &@L(",C޶-d @n/$ Zx.="@H}0II`P7r'3 }&@<#ھĿf  @:0hHD. >ZxGAOVsX dmdZm1L@z:] TQd-<rz\Ie*;@l*K)(q#G*i- &cTVca@rʑfǻސY XGP3ܺݝ>@H>J}GY)#*PgF|\yVSab|> @2?ٞM}UaS0c|U.>' Y?E+V>ό &dcwyUJ#>ߨFQxF}'a}q;Q8[DwϪ3<>ζ 0 @2s\ @Hij4hQ = @ <~WA*h)ހ`J`X 4YuR+sK'SE<eu$ @֦ (ϴH<E0LaGh]yU0XO:ĩ\&^ONh=: R@ lwA̴`Q1-<?sTBsRIENDB`hkl-5.1.7/Documentation/figures/e2k_4.asy0000664000175000017500000000052414677222567017206 0ustar00piccapiccaimport eulerians; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); eulerians(0, 90, 0, solution=0); hkl-5.1.7/Documentation/figures/4S+2D_reciprocal4.png0000664000175000017500000050352215136610402021272 0ustar00piccapiccaPNG  IHDRX(YؾsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx[l]W~dْLWʲrlRZ~J5 d-_)y״]L5:=IJ Wze[:{INI2<$-ʴe._xpnZk>Cʮz=hh*Vn+n76`VsɹsBo `ћ! zOE Vm6:OݮSO=Uذ?hvȟ՚`VgyfнO ji:==-O&\VAO1zEfffWD3X` u]88vܹs=jaaA.=:XSy᪈ʊ<3 W4+p*pȺ Ν'x+=o']Ϸ=c VpUDdfff^6+\r* V*&#`h:V*Q@ #\0*/<>}ZfffBojxC ` vr9y'W:XSju'8cҹz9X&‚LOOXD Hnk (Ov7\yYYY͉ B4|v"< @z^/&xgDflgzzZ|I8"Xv""O>dV`ͷʇZg=2 qD"`C` !V0D X+"`C` !Vԏ[c GX@0/gX@0_-ǡFX@0jO> 0B xٿVKdbbɟiVPD][[=xGOԕ^'-ٷo\x)@+?""Ғ^Od߾0@+ʕV%"=ٿ\x1+xVք۷_z=?3@+ _ݫ"='VsX4+OϤ՚^'^?dmZ211!v;@+Cʮ"կG?IVչs)VKW՚VkB'"=~tx]}mwdksI򇡷 X7/LL\ڒV%~i &V_"UZjMȾ}>?? =F O~&28 D@kuK^a6 X/7!"]}"Ғ7X~ε4hMr51~0 rWEٷ}L+~+o#Z֠5bzG Xsgdb;v:`&?<L<719G e[ T^[[=a=V~vyЕ*?"j5!tn}o+VYӐ+-;s'7Wy> bmZy>D;z]/= 3?O>|٧gʧ~*_Cw X@0]?#VG`~&_Bm1V0D X+"`C` -I6%I>#Gn#G:VAu:7k։_BW7VH?xF bC B#OhYlw++pwI3F ZD \!`Ml枣+7EBl "`Ehk*n%tKFE:q ]Okނs'VN롷 +3v4 ek4+'ds,! ]ӏVBWF NMIčuM8*I6^XXŹa%W޵[%ynM#5z- G6tMݭpetv8_zj?.؏//׾ nHM]mc]P(ͽ^zn: [m^JZ7n흷'|+ڒdF+xP8Y~;}:anK*ͩ'i凿xk#`P]6juJ7WwNykY`{ft|ykjXh1SǮNSQ8u茫;μs]^/3vv3rK@VƒdUN~v3J.cS]>CZ?;z50XUḮ*CTѯ Ku>סjݰ1c|w\wA[ Gv{=0`Ϳ>DeCT.Q TMؘkcZ!P϶vyk;+]h:VڒdsWa+Eo/KXD%T3|u| e סnW4 +-Ip*/tMl 0U9.Hu֙7jR/f{͆3_"xE|XhV!+-+MӦ&}α9V BQaq_dF?P}\ =WPhD_k.RBU5\QWԱÁjm]kt;ED;;^'+~$&ݫ+01ߞictƹ[gNyuڬaM`zx{'}𞈈?ȉ>PB"tYku9jFڑZWsNV;G~<2ydG,n㊀@v{0RClК`4 TlMV1Tu*U(+ k I~HdėOVdp#/I>=OWBWi?;5@]b U]c|y۪ᲞA4L+%P0s#r l$l:VkA @3e׫ٸ3e9vjȈ&NY[O|s[Q@v{=^e*٩.UuaNͺABUJεtuVV!`ӹBW@֯2:lͷUfM UC&t&$|HZGNCW+"`Gl>y5 Z+ث0PP VSg^,mשYoؔڤxl@VzjV{sE @ETԙ|uj֪VYL_vi90/͋*Uݪ6zsBϵ1V Krզ!izVkV|@rvqF ` I6 W]fymYkǷ&{bXCͫ;|[5,Ԛ<<)S_;W^"%hok +iPUg{sNyuژoZ`U|UڢA9NA @DGh5+>_ݥ:I8p7\mհPgؔL}|UW1Hkk|}9raXHsK++4BOވPU$`tߴy۪a` ՙ;I>Hė86`c.I6s@@,,|~AUl`XM焘gkL~;{֔0 T|PVA"j:Z^s4TN*0B (O=u *!v"ĘB˘Xr0G4MU4*:a_k׮׿ִFZrT6SC1`:WCYX1 kBWP3\U穆v9dx9u6!1?V+V} h@lh$xy{*CpavO6%P;U#]CZ=7r.k3csWBWlpyuyש1jaת@UMXmU +0[]Vy꩝qv"uQ!ix3Nwl9uٚo^p5`5ku;0 Pyo$&nVć3X$tZAk6|c tqQdnNcc+_ E}jqcMםgkZM?ov(u\ƶd+0W45+mO+\uYg PmǪz_u8ݱ&M؜o.6VG[53}D5>j. !`C BHZjaAw_^]uz{cmpY3Vt3CPW `FPssp!,ր5+9}ZW"gϖ7 G놪ٸjx96ژ﫦VcĶNlk_ !kx0bdpw++0F,˫}lN]keE;u#F!T 0~Ա)g&JCMTc;ܖS YC#`F ?ák6hMW# >Q,m_DHpZ6WSosuԙgk:M]H_z-6)Pm^ G v{=`%ǃhl>Jk2q~lԯ-.X[5BQT}R!= +5:b_Ma#"I6yDhWVSӻ_/-"P(wZk3, vZch nBo#jb+#b>>!IJA #t"=guncVɽEtѹosqMؘkz[^wIҔpuT hQykfWe^Ъ2LWݳq_u8c̱1|\#F!X h^m9u)9rVds-e٣DvuXV%T*RxMkG6wm"yNVBVX#\V S"} kcTB̪`5{mfZ-|-"<[5P5.UΈ#i^uȩBoc ns4+`(s4ys\g1:|;\u\ N +G6cM]Mأd wXJMU6BWY"tYSes10jG45Tmy)3cS2)5q"T-YB+@[5+0./."}ʺJMٵ^sO1:tǚ7|BQs_y*j멊u_E 4Lz $~K" _ ]1^Zٗ17W?H-z=:3?{6ksmwU+D}k W V\LL{@a"ɇ rhN&G#tŨu^/ʾ`%;U6W^`nU3@H]:Jj,Af,XJj+I{v!_Xa<}UWmfgcUrY3Zk<̪_EOkۖS36 A ]YCʲtW;5۱:3w"{+[v=Uc|yۮf5rM<8tz}BVXh9H5v‡em^ݝyÿ:kE?4tw:XEDf V]=|[5|Y_W# W Vn^YB D.I6 W#%2]arZחv_KWUjb뱾؜ozjXؔLRQڇ)̑| dE=@ks8XyuNr-^M8{νc\5_w^ݹ6k島uOo0+BmkĴg (Äj"`"nBq}oc\k=z٫WbXsl̵1U-6kuT՘C˘fG Dث,tM?b,,]\4lj^Z'Xmkg'X;dsmwUG]kMcSa&OVbܓ'Z+$hk1J:jW-U=& }U,DMCәآ5g}<|zuܷ9Fw,:z\gìZW?5Ĵ8V By9@M|<-Bѳ'XvTԼ9_Y])LLoKK"g~ٝJ(# <\mjkke׈qmO籪kz^M,I69Z_,׮][ tU3VEזiCաkc Kb}1.o:\mU:#6k]UБCG8*@@`< Ek=笊 VMǤ׆4 ~pwsωJd~_5X-;3;X[Zf^LL{E='%|Z^0M ]:l\s}eñҎق%umw5:s̫;f |6X{Jת5BU&}Wn7+Ylr*"uyeY_> @?׹蚍E`5{oz:{`5滪壮WU?z_WWrjq4p,t͆:gu"sqմcؘk:Z\jw#QX8 ]SiwuW*2>dΊ<{ӻbu՝kc:k:\ps]_CںW ؋ӹ iwki:}Ϊq:jxk&̈?*+=`x96ژo֘<q1Nw9u՝뢎zgTt6vubYWE{v F5oX)׈i*˲DmG 8$韌xcKrPǍ#G?ٸ:8MV1V |XpCMCz*1ɱ΍9td `j@-W~і7~zE^WjA8gg"V3fz{*}g2)*W=Q1Y&$9uxxE 8n=]"]ondCVsLk3d L67?i35o~5ܳq_uq.֙Sg^ݹ6ۮ㺦uN9봖zj{eX~?9uv%fvbq}M^Y^Uՠ5k"rAz-o`8c}ϱ1|W\sər;aVsŶ CQ"9qx>p4Mq">:sm;MD8tmqؘkc:ypI]kz7xh94!V~Z*\wVݳqq.z:-Nk{kŸ;!++`Ilƨ|]rB/ym"ٮVCWmr9uٚoZ>kg:鲮֊q}U '+Zk!V{M t\6d掙"%ozurpYMu}VLk}ګ{+`Az * V_7kнw;L~o{2^mq1Nw9u՝뢎Z>V3uTqphj鲮׉m*1MQQ"G9t$V: \X|i'\M ){=<_^oB>!r#L9-Y:õLb\vs̫;wW[j iJ֙<4)SwOϵ[Wwjz=ϭg[!I6ӹY= +ߖW':kU%4-|xkk6;?|K&=HOdyvYLj:VI3 6)TuIaC5lŖ>BsB˂u\5Xm\wjaj=9e^+27!u@V7.ɧ-{̉Y\ת ^놯:ctUc]RVוhpa5}Hګ[0 Vtj[Dzƅwפ'"ȑ;a/ZEUݷ1Fe-zcMƧstV:Qp}"L-PUDvq9*0 F}WMC\QwOuN&BԪ"[彍?Ckrc9p|Z|`Woȭ"rXdƲ`8ݱ&}α17;V8k;4TM>YPq W]p"P)PU'(n_ ] b}>ym"[~.RUG{1Nu]&M焞kZ5}';Y>ڶZeM}]+dHz}UF$t]ʂP醭:jvJK{墼{E9*Uϥ'I{#twy]&LJ"Nwr|jEfkaX9YjQb%`*p*e\X|Ik5/D-TUbU [uW kUZ"_ޕKr&"V?\TD~%"ȱ;373_kBJ?>UZ"wr~|fKG{$,aWwnv`סF03uMMW}y!CØF(nSW~іWVS4hUi/ȁ5]2g?`Sݫ_:>:ڷ}==9(C֨W'X WU&alSպ\BUE&ez66p՗X54T|ނu@$U]ڵƛY|:oMksVgU.?cMȭ-%=^DݫU?z'T5sko'k9=pѵJf:\uK֞<4YP5{uTUVwkpjQ<&ȑ$ ۸VܵZ֩|Z^=9]|gU.(_C-gR%Lg"=2g섬臬זշ^-x#ulv:c VqUonڥjlݫ WC1qO$u F< {֪Hժ{UuMW/_\/Gq-VK7xUzkjτ|CMOH_gCE䦈'"E}.K kеc܂UnUW2k|b ju%.VrHhU5VE܄eMԽ}bxEٺrIZZ-dKM٫C̪mӲrse'L^@DCQU ]|ͩ3\5\rYNr;z뺮s>txsI+02kFUplkjY7kz}z:TmVig?{5 X?|fxd"pu@7tתTX:Vm݉6o!SwM6׎*KMX!Jna_WrvΛ{$MH8v_clm >*={:>-G(Ӈkz"YEDNl|eFm-='X5"Xubϓ& k0h11AUP5kVXtnr4p"Z8MUצc^9эU9&i?>-k4^4qx,*13w"s音m_epijsboz5?pjŶI:rHlV$ٔNg5Էq}moתni3\ӵ;6{BjƪJDޅ9"\. HʝI:\u:tؖ>WU~%%ЕK""757uV7_;>-ZamH?`WUR.]5o:μsm̷]'[UgXV4!8'\[pX诏d3釬 E+Rkrؘkc:k9;yhϹձ]E=W5}FbZLRl6#0vkFȮ#~o84mU|>֍{4uN-!`XiCokra#BӲu^o^>B:G_~AD `%8U43&\]:d'qX]u WM VmqZVy5G &k Wc3"j\sx[k5Z5tU}kU-?t}gUmǧU9tMZxUcQX2uZUMu}suc#=Yć]b,$ɦt:EPwͶjH"EeuT]v kUGf53w}N%tl]? Gc Vmrr4@\e՘b^X X1W ^7|,TNZU _Es#~AЕK"?@6ƈYvk Vm64-Xꆭ Wm#gUUF)X T%IX X1ul\_ KV}],t_]S[6>;'{$@ݡ^(6#pqgKֵZU[nJj{+]ͨH[31TE'$`$kʫWUB̲u^7s={/=HэUy%yizfNfc2JXcZ}jn(; %p5U_sԽJڬ5Ĵ]5cRӎ `Hkh K/휷Y֩jҵjz-^H2*?DU‹"-Z\0b$,aWw6븪Yac6]W}^3oT3TIbd롷,HnOSorMpq{$@ /H?\/q.֣R $%XU@` !U}]/@3}f5V$6wwUE^V]+\1G7Vƚ|Zưj IDAT>2/8US1nzwY5a(ݺSG8 Vqj^>Gu]5h=uxܸw5]cM.[?TgSvEhe\x%y7y[/T+ W +zmڵ;6o|;C["^88ϔWik.VVp>nj '="\ Nb[_EDp `HMWH=*S}nZn7knZr$УCW.ǧo5k;UQ0.uVVcVkvfM%z뺮bt ^_E{l1 t\y-VH%8Z8oAj+DD#sjҸwX. W}w X R[Hݫ6źaMgjH/c?ЄcX1[ r՗䍷^W0J]u:Ykw0X韻zlcM>24*kθAg+Dת)Uc'=v,l%Z.kcτE$qh$UdpjHŸتM_Zս/jwV^=3v}ctm-oW:]ak5{DcqH6BQ {4=0t:Xf u9 &Mԑ)XXϊX qEXxPqcm:]Ua::cƙ\M?fhY2ї_7~}1*<+bk\5lqU/vtjlϚp5εbZH{1hN&GJW2xUShkN֢]: -ƕ:J]uDU+O~Etm+/0ܵ:,]dUPkJuVu_uF7Lr[ٵZƪ<%yiyg׷6Fw\]]᪎]lu`UDdिsWm5䱽/\qp5 3Ե~b=*Ĺʅ׆f*0\u!jށǮCW.Gfw W]i,-8Lǧs|w VcLk0ZRY[hؾf6ĶW[+uĶ-w!+`Iz rFjUZ'\dq]dy /ȱ5lfk;[xk=Μ:Mֵ:Xh[bKVSW]i~6kU?.zL+%I69wڸ&ww?:aNrLʞpP%rǧ9;{P ,6{LRgNyuژoZu [Xcs?M WV>׉e<1EB:,.VV4 G"7& bm\Z>o5Pj /6ݨ]JXZu3?1BjGVI Whjj}JhPdOfk|kyF/ț|hîql+Ū%]~k ׳pG$ ݫ.v/~IJUݪy` u:79V[^=7]6^\3u@wkpJG*\ta+bŮմ-.j: MBZoIJU[++$  $oʺVW7s=yͮU9㎾*]$""o}l=n*Z!V=`5|4@LѤUf'}Tԭ*sᵗmyae5իnV~|z!t޵VGkyV X<U\sU=ee W~YQ+=#pn6(\jځj2'D*b҄ hнڌ44c:JMUƍ5y~jQ RuBԪބAelwHx\=3_[' Zc.VU_lkFZ'`5u4@L__[^ ^P&`K (hƍìR-?Y]wBm]Ϝjҵ;\5eka`5W4I$.~c+#I6ӹz .$ot^v*THEkUZpGgvFʳXk5'TZ<U0ߣ)E" VS@ԅ/?*KTTI``E1rI?Jt*4} b{b~I煘aCUɃG$Mtb^cWF ]F@Dj*gTkp5Pjƚ\}dhݢ&aPb5 Zc>`WIU_|__w#`%&*k]pG@37upUCW.ǧ95)\Qb5 V}Ϋ;7["GĄ@V{*A lklƚr{Z.&^MJpaj sW>2ktd ݱ XZW5+ zؽJ::kiPj+ x W2V*{"rk:U)/ț||.:QM:PڄpU5 ݫh*GS]"N&G0vjʴkF'knVpU6ӻV}?b{Ony:l# @?]{5εbZ{XCV$ɦt:7Co4W4o5W󮗅thuVo}=كi}5 X*8V՝kc.j4k q^m 8׊ia1Eпo X1Wo7sMk[z@J*VS]$"mcMƧsty썂Xm<V;CUԽi/ZR"` US:NXjUz>Jkq^hKm>Vy.Ʀݘi Z1t-uԵ*Xuн^s߃)91oUTkUgݬEjpZbzUy%ygvV]CguҵZM56ypRн5N~>Ti{61ݾz ju].2VSW̪Mps,Ob]9RtNSVm;$-3> $;MWV e*j{6T++jCorKjkO޽yUc]v^Vصzƚ\=3?=>HaYY9"C]5Lؚ:։0X[QMW}"\m %`KM]`L]1uZͪvVܵ*-sWwcu%ov^`õl\<nM Ztb_5MXgf]‹$hԞpR[]EteTWݭc{E6Ba "5veU?15%} krϯqg b؃+V pFgjͮՐjTsܣ󂈈u9tN4%.VuBu9UޘC]WumoNm{{Abװ3a+JMWCpՔngͮղ= W_k;Ϊ疌/bmJpl{~Zvj[ONtsgTWu!ho IɹpUlluk!pU%Z3=իgkת`5WaOkSculqMUPsdbk@רLSJOIZ"`E%&G0fE!j VתiGL WHl>vEy[g"X;W܍9Kt1XMăD qbմרt}^HJ>&`EP+ \ Qvt Vޭb-\UQ1ї_7z]]5^8ZژoZ5?J$ÉQ}_e}'#ywJ : ~I}m;ANiҵZvҚiVK|qp4/욌ѵ:X5?Ū@3 VEG^%MҴ#XHII*cd֥~е^&\UUcתHՇ\~q.VMusf瞳XY`5@Oco#s4@" rs]-G{}5qOB"\`|X WuCI_]*WD \ PUuMY:PbmZFZ'`Wm5leKlߓ{(5'\-=my++h91Q;\5ٵZvEң/ 6UuUص`5fl- vD^ !ˁ{/$$\`L WMUѸVunתNVq5ztcup3s5cZ|= vZsͷU#c}zS_hFll=}ƶvZ-:j^'Iתj.XctǵD{EzfZMe&1tqVSV L޶`_[[b{5!׋Uþt[-?EtCQ]e=G韻Zx4@SV*SVin,b$])lXÂ5ߧ)gL{Qa#JXs{UIkUpU v:cMCR15]뚲j]5 lCR1%+?j(1ϘRe_}tHlJs36cpn* 1Z5_2b?U;h~ӱX5Ϋ;R,V~Xg{5#}YFM2T WV!\`]x%y~B]니ȾyUhhC/Hh[5;6꠆tZZ7|u,כT{m{/p5)X:Xv{qW:mZe::]u*rlcM}4@VƜQܦZbqwC%[T.D $فp/ky P%Xர/ 2 V-ҊmWq..qLұ[QQN FV!IՐ"H8 3ss@X9{XHvܫ65+x|Ko5D+ Q\%BNYDĊa(3c\lhW7s4pD](tFq5wIXؽ$Jv\^Wm!fTbJB}hzB!(,鷢q\E\E\ m4f]UN#մ*]йS^ F114*Uĵ+ L.lzB!(DH\VeVEfpo%ǼLq5-f8 q&IX PUtU]nMU>GFq4`kƖ9q>:X  BLKq f5aݯAgpyD\ {^ڄQ~fqUk5fZT4 ,u]10[G*\N5;wuʽ)l JPy}ѽlwJ|q5 B"mu?^Z=hVr[0,g$qՍuBu#cb _]/٫2IxiB`ڵ5c ͐Zg/ BHr$tWUVWځʎk {w;mfm͓ǃ J\ V]X %AI&5޾U0$e? ݫzĆafHyD"[f4!`fq]I+Wlm &`uM23WףdV-EDMUs~ZmrWm7LbAsjud ͐<FqBI0ĽXhXǃQ+Fomн٫(_;R(G]]U#NkUUX %4 {=tCrB!"0vj@ٮՀT]];TݨG]EQ! b++u**PŶm/*fy@Zݫ6B4$[6=!BQW"CXf{nOIUqe4]ʬQ_I@.$Ve PO{5bB1'[ZUfGLՂX @!$)aQ]U @.-rW4J\ C\\ hbM\O7"[Qsol<6 dhB!$jTA~ zVW:,elv6T5ijzҷ}5"Dʬ!P5iLk^A".g" WۿghPX5=!BPr{oިŏߚ u=l(|gI"`mB7_<onekD։Yí#Pkմ*[tIqU{F$W3ݿ6 FhB!$lWÊ[ Q~Tv}}ؙ֎ pffԢ殚WZ5VgUTt6-zv5${5i$D$V^%1U IDATtTX)hW !P\!`(õ*|3qUD)n}\EHt[wPXJ"59zeMItvLctzlG J!$եEh(yy@\T!z蛹 XW7Q%X뮷TXuk6b ZC20Zui*%8_[t5mUªK kRUW-xw=6͢ )PXe4!0fW[='(jXl@}ªv+hPWSU_sLM]DdQTтtͤ@8>eN.,. (Y{BI'B4BE@$no(hTM^Y@UǭoCw*LPR-.VDdhW ,ٕb|IU2G#$F50wBI{om~P3qZTىMZ!*]#a۾~}uױFdjNb6 jWmp,_rgɼ֔-B!" ]&$9\/Nj4F>uڄ n#XZd%Uݫ6!'.9M&-z u@Xwd'KU &٫"X|MH{5^r qubu→\4^E=fFsl<\P`%->4=!B$VaEfᢊajVm PQIo0-F9.-jxusbR[e(m"QKw_>$xEGƍ(&BaBHBJ.G*: ;հkt,va9QZEk X֗}oQO{6!Bƙ>6c g ª1!""8/C=J\CU\un=WgQUg}Uٶ6z /T*5uJ!DJ#C&nxP,VF:y-dאYGUXX #Wmqk^XpzyVB!Bnj9'ӉEtT:XP#3s r{ذuke]GUX-9.^M*$D<$&8kotEkp5WZf_ު,f=ﴵ?;[?5Lg+!H̺UQsQuִV +X If|p?n}D>af ⪨kUTѵ27oݫ~1J,fŤ-X#'Z:XcFsWmf^XVa% BH .]>a+~\V=Hz*;dF4`~6E\#cj'X;ղ}p{$ 3q&&-4l}ox~xp-ƀBѢzq5,ȶUMrZI4 GqUQKkbUn}ܫ69Z;7+"+ 趭"BZ ݥZAM\ h$@Ҝ.VU}Z"XU:)lHǜkq5F4R1=BC~ֆﴷGc 7=!üjA3J Ey+: Eª[7?wմUHV5k׻{+GW^({5VP`V C/ ?w~w~&ppϛBf.[2F~O\% Pk'' Z;*u[$()V]uw4G$½j5L굮_#q4йu֢X)ZNh8/X`mO hwU(ocUhBR9[Ed j8h+;[Zyjef"o*[\uem9GQ͵Ca#p~{ H}Æ}58CԘ 8kt6֘FxXwR;o7㷳tBH)}njga\E~:$@8v]4תl4 n,V=%ѹ{w WeD<$X-SL~>/xgw5=!njAP)FW[VQ&o*`i_|QIkUWbU_tJFJ&kX-%[6=_/{>:? {Eg0|Y݈VB=élGs@cqV}8"7GtG.Q)qU -b ܫ?5+U3_'}L^(|\8sW/˞yu vƓOOO~o_J!1߿{ j+Gkᵑ@5X8}0kTanѹNtZ2@X"Ūa^DF?Vp5F0\ /sgv~w?.>XÿGoZ !$FV剫~v&FuzscܓSo@5wUFq5 tFv*t}٫x`ZK"i?O2xSp8ñw\ֽx;v;sgvڍ'xvƶm㽟~?Q0>B,oBmd{Hsu;jqV')Z[ڡ\:DUo/Ht]d4Ƣ}@" UFD 7ZuuY`y{y۷cBkպ{رc' /'|;ycBio趢UځʎhհV#RؔvF^dHLXu b)tvtjlE"0f8<'Kگ OgU CըǏ O"ƶ輝Go>YY\{nڵ;vD[[.\8o_P(̘B_po5D4@!˵*K "ztwVjjUo>GT ?]iŪ+Odel(|qfb׌X-}bd=f7`۶ضmoߎm۶cкk.ttΝ;֎ݿ;?oz|BI-Eumm-~iFP"`f}*;ՉAfRճzqstyO?;|W!!hg^\%Vuao7w5jO5&E:O)-bi?x4@J'.qU ӵ* ^WCdʦ>&νjuKI./^(q(J½U#n1c۶mhoo_wV~8g|W6cZ !DnYUYª4q2XۤVB-wuiT:ըеjn>m.ֵ(nŪj:WI1-BH(&{ë$D՛_UEhkkG{6|#|F_?o 04T}B+!(! `""VP}wlV, &qUw蹳ѵaY*7WU x$ f|Y^u9Q`5H.lzD*~whooݻwjU*_XX (B޹bA]akDh(_]EXc$V]m C TMޭ![\UAaE57t+d"6"{.UH!uLxS֘P(2@ިǏM#'oΠM=~U7񍪃K35W=.!K7ެAkNXъvaTX6G4WewqUkWzY5Z C5%.{B҄(P`5㬡PX5=FqD|q_?W6WoMB+"Liu> k\"jCEׅӽSh['OAն( SL"ЭڈU!q# ( K~3?7v6ZGGI! wAB4@jZ::&qVC:}3W7_<.w(uT\uY'k*jykZ(zb uv]BHɈ 's$/*|6aӣBH5"\]mǖhBu!jdfj4fqw:ۺE\Mk5ªK([ rPyr6cLbgf /Xtӫz^cq5;7^ p2:b9ōUQdVe r#Cժz\E&ݪkUI{$LR"r}!jI{}j܇G -HM\"?קY !$o)D\U+욦jYlp76sb5wui_m3Zb[5"DXֈkUAuNݵWV^$(9hzR`U@.lz'sRs+rlקɉ #%OPZuׅ~nYL1xqh dfEkVd:[Uݵ*GZS$Id$T$^KIܧCU2= IDATQ~vӫ4@5?SܬcBH̐ `ZX 2C#*2 Nq>5WjKG-WM:mP%DX١J!i@U"hi 6rY KjDV7ub*{B"|uJrS]'kZ? 'HX:Q(aFhɡ^dM#bgp}Ꜻ_glǎC!!E!ԉT%|*۷>j(=d7s4oZK"iU$PXu{xqx/hWc័D'k&re#lY?6<"Y\:&2泺BJ! ת쯍Ulv E'SZ@?ĹHAb(F7JqF\VB1DiuKTCy΍Hkխ1xqpq}e֩rkDֹkmI\!uvvtb﮽5%B!!(*PXe4@ZEK.k+y`|\_BHyoIX ,n6Z۠FWj6 n]G]#NtnӢx ^XeM (q^M!Y7f1}v oOupVB4.E ~5D"p=\E6 Q(㭧J)Js*sRX%콗kH^"k_bzELCpI:< 9nބDRZ]Ľ[Di>F۸zD^t]:u\, m8qªDZX)u3<$ m+fZǏ\nkk3=1AW~}.f{2>9:z Oo V<7UCa _h\O[ #|#vF[+s{u58"?Z{&qU?:PO)wQ]G=GOFheֱikš^\ꪟ>{W|tq֘JcJꝬ@52e.\Bpꔾ3OHkVmt&pLj `k5dZ4o[[Fm]#cn ӎau{V?~|b5 !lZ$Yc,BpoWR*6V#훹 yx{+%vZUYٵjJXmq>ы/MDmfNqBDžS`mB.h)ȝ>S簼 _ Odxlkg* EgBV"rV*u\E~, Wi-uEQיtʘAU*\X}_؇ zt TZ ȁa5R`m@.HLڜlgpcS'!(fNNܽ*S\?;R `kUH. -B[NZ/Zޚ:UD/Vp݆!l{3:re#C9bgp}yuxBxȯBbC{-z?t~ ]kPXd~\*VZ/Z*k3bOW\jcԆHr۵y _סPXe4E攋Eg>u|d(pLUh ٙ!R7>[X$n z/,zJ(L\M֋:Yep~~uW+>.Vf bǿh<ug ª1Hښl7y5 CCտTc({6JT\R7:/# KnXʬS_OuZIׄZՉѹ屦.VMf 0}K;XסJT@5w/_1ܸ.TֹBbMV*1mdR٩.kwϯF(۠ukaZ5Tr%ɵ*_{e!XVTsW @TA5b?oG.+PZc(;jUNaQJ;m޻N33WsoKͣltFNtn[\AkTXս6|nմ8Z QR~zq(PdmUFl3տOLPd%$f:[k%nQ pv,o*ciVRу|lѣRЯ2b}࿽R,Xو}zIXsM@REVYLSvY3؀L4t z7? ΣSե~}jU߄iR\}d:AtŽ4bՅBȩgO!$@B`LHy4}6k.lz2(S.1}v %;DV@XPx59TVEh%U߄kgIUquS4jo*VzoE@'X-̙uBhzFSPd\,"w4Oq!1vc+QlrZ `k5@7GEXVAw_Ye֋kU;hwt s{bB /뽏R`u5FPd |6&oG.+!zJ/d.nle+c?}^YE:ybcmT&ʬs6 thͭ6kD|m"+!91z_K, U#RY&*|l {2wY¡CG!"Ž*S\Uѿ!t;VC yxr:[tʪ!Z:k㡩8?=9rG6 3#"FBa(\,q˿8i:>^kef+!Z ^ufS\U^v*#i"B}QU@AMj@_,Bܲi Eܽ|gpkx@V*ΜX'&z宦]XQZe֊СG-ݵWx.!kUtBH HZ(HxE(d>1ܾ=egdB[r We Z[TvS ^<g\$݃⪚Zޚq%}抔jj[D!$Z`-V8LAHd\Jcj"ώ9{EL ݬ0{'߹*7^ #IQ>?wն8hWRYª˦[ ji,NxK^?Xt㊬}EV"Y\:god96 ï||bQF:\vm]D{e}3WQ~f4@UXjj~~!zW]X z|cFK>Bi&殒$77ǏnD ,G/ OӂaK.ͼG ZU5G5Cn+c]}3W6`i_[Okj-`yLggG1.VWl݂ߓF>?\!$I8tx"U\nHNpܽ|gpkFBBS(UѼҠk+'v/Nr*mJ\x`"{w>b5 >gf02!>!t8q֘J EpEݹPʈ)FfmDWEh{e4pӢ:k72kNP*qhj"0W1Mg>J cI(q @Ont($6_|ݫm-~#@jXתnqEϣSoh daUejq[+ZnGFx{I"&EbU[f%l%V$-_FYC0bnߞ["mҵ*"XTlf(A8 2\Vu!Cȵ\@űOkUb/*jxBIX UFTdD֟<~JHS.1}v ¥cBfNT D |>7!FgmfJ-`*&An0_E5uVKͭu3 N&S@>oz"Bfaolnq8\:yBKOuTlǖ'Y\UyNcZuQysMXn51BE"V$Pd|6&\LΜ怑JH -6abEV1vk[#N">6-@ M7e0B@~XseFC5w/_1ܸZ|"2…un$ܫ:ªׁ̽jKxUOª>W)*D{n~c.VBHꈵ8kW YY(\,q}\|DV`pjUUQŕJ;Pi^U9FlVUS5]oj^ݫMbm2W !$Z`>4=!Vd#7:^Y_rlק'2؈ blI$_Op #@IJFUsitz4(qt2VzoXqhRU֩NkP>W !$uV`M@" ?6=NlfqKd᭱t0pWe[j}h,u ^JqB"v+UBA5:,n~@iV>QEH:ԊZez'aU7]eב]KG'U@5lzScQ օq|ms{l\B1ܾ=Bb{-OA)F6U^*n4,6ת L#]WݣQWG5 ~^ת:2$}.B!ꈵ8kW Y+!(>;S(ՠiTV##\(?KGvתnaUU I~|蔛*K.V7Ut.B!ꉍ}hzBb+YR.1ԹxFWu(&0U"kkzh)DUUjzG\urFYj+q}~00V \=?60!%B`M@Hb*|6o"+! ^)F Yݫa]&u/Nnxu4Jתi)U P'|zqVB1khB$d>Eܽ|gpkɈ S% 5 ATv6L(Dݧ+ )-|pZqUU_%er*j騫~~-zJ^U_]g_?ǩgO!0#G\=gCڍg"VYCjz BKnt&=~lzXQ.eͬ-md*b{H^&ӏ IDAT6= Vzt '$FFj孩ro b8F02ID&zr7@!D&m+Z ?cmw $tq*\j3O><3|nϚ):g NA p >,׹*c2&o[@|ƞOʸqj.*6Vu jL3ro=SfȦ~/=yy/`&׽ `$]߸׊CMJ}SL3P]]յ1kBaw>4=!"<3_ǮgFGǓczhd2՟R*@OOE˃G1Zj­ZzY5TRY[[߾w 4[aOO`n\-2@ ^셙 <̠=s !x8Pv擌{kŵnRe龆zF`u51Iwi}>}=Y{z6Yf%x_,r WR% reFjOP>k4IjUP\Z\I~GZ*aa/WY&ܞ9C~O͋{_ \+Z7)M2t_C VfrTR~3O?ͯBR.;}קayy8b .Ȁcx,;w%v[^UU_n@~k" ª,lUXZuvs+ MY q0z Mo>e*XN`M@Hq2;:`RlM~oOEQ̙y,;w2aը4p:VE'TP/zڦcd*V[u KV!R{EfM_]ڀ~jo~t q)yly*q8LAH*˗1}v 7nVL#F&Su sst.ċW [תBѸ{e=EW]OWme 6 zE^5t7tJ&ͬO1= HSVYc4!ኬNsY#R.>u."+P 8s0a?V؃,QŘ(k*;;qj&]H)k*$dC {* nuzs_ !sɈ d6"@~z6V]**w\F|~J֫_O},&嚐'Raq(UX}cKÛVfZ]BkhB,Yfq&CdB+!lq΁|wD_GnfJ-9eQz-tqU1stvt@\ub Zy'}KaBqq^%$Pd'Qн*jؚ"7{Ueo _^Y@UǭoPޯZ[E9fEUz"JfoG|U@@ugW5!$0QмUB_CW^X!7:ܙk"+sYS.;}קayy8^- WjY$KU`~[@ iJX5Md=@a}_j)]k߳T@x[C:q% !XQ5[6ٞ7ro~WgQr" A~QD^%d$zJXǃg(iga*U;jVpz#|ڪ=JC?ǩgNX1F# W3b)H"~_MYc*!q2ʝyϏ|c `2 |6/QΖUv֯tZ ҽP]}f?('e:jv#ͭL_ a G} =:DDmi>g =J11IuEV9:Y(>;S璝:>~ĆdLqU׷!Z\ǣڀ['C䮊S.b-Y(ƳV&x,XCb !$#+ojE\~pWc o~rlק%72`b $HwWEh>{UIkge@24C#S䥸`ij#ddʚ% ~COZ}OvPXe4!941Yݛ_hg)^VcfM)E7%tXuAR8?xIjU[ܪmP3⪪zD[H\Xe,`}& &ѽJt6#7:KY{2ώƍג0: 9SpyVW[}8 #<ܫQDj]Z@UDkQn7-vwmWU תK՘.]_AÌq/!+sW f_FǏrϟOf.k&f5EHsAkWEĬ(b~jhV٦:k騫G٫cX5/ /6C! yl65[ՊTa:Wx+Y{{7ܬZKBըìw"hFI4 jU1W}ݬlcqEUq3m!tÏb(È8k]%D66"ܬYlqL62ָT{`Iզ&]OӺ)ס IZ$@~M$]xxC7I&X OC * HW/xTAU,ޛ~2sYս =ܫ⪔wod۷XH*;7^KfdPuf4^A*vM0,NhFKVzutgBqZkjS;U1}؋'z3@I?L`J?]kO#wuFQ~@U< Wn x+yEfFm:5-ČBqUkɇtl|]p'c ZGM/$46g $-Z74PXe4!94jV4z_#ᗑ;:c 2VG Qfr>W[ƽȁuMzJ(ܿ!QlIltΆ!N4_M5kO,VuJ!)@8k(Ve"$[ #7_I`>1ܾ=Ȁ `d*cHsWE]A^1G5+ h['Oҹo2gGP6e *5b5 H@ )+UB94^m%_n'\ս Y(>;S/f23@ooUh=unV/w#t8*[WeX }3WTT]'aմi 6QUOW>j)W ]6~T!Aᵒ \nHkn#YױQcGe$@a{W\AϽE, W Ga.Wo>qplHGtMH`u5Hjn&5Yʛ_a>ͷ| .ͪE+nA%lS{UpW7{4pD* ת*L&QՅ}fp6  & qBXseAYA( #qJ"w/_1ܸZ#Y5Smuo;jT\i/G/UsWZZ5%l*P\UCRΎNs׮iZ`jñ C$~\nYoVj_=4=8BE o~%rϟOG.+zݬ*G:Q> |TS צu"I38ªP\E-|1FqfBH$O4_áWcڊ_Qd#U.YO2;O˜]̩)T\ [SC{nFڽF4^dWUnQv΋p À5&eqV1G/I>I7? {OhB 4S5gj7|6c}{*}nֹ9Y%Ž*Um@N 5nZ4'^'k&Uۑ-I\Ձ>aõp.VKD!- * /YV_ɥ\,b KY 7kooJ(_fqUon%o*Ǖ& )jܪmǜ@UEǷS< IXm8.aۼPkhBP_īȍ&F>ޛ_W”ENsX^1=2zIbkQ4*ݫZ4@ը:ݚ&U)%&B5 {.VK6/Q?F,:ݫ(+>jvϟFW~?leo~%lM~?=D w6 Nr Wq_K 蛹Vu` lWC8\6[yGb ^{''W,W]v48WͯseLÍ'2DFͭZ}h #*;ʍmfK{EU;EU_U׹`%.V$,q^ H^yW6喱; ^z'(-?ѕFW~zphUtQ~ Ooߠ+?w} ._"|z>w~_GG#Kyg-'o?Aޞ*)@DX7xq=E, /մ 8h)j;_Mu5g$#V1 ]OU͸D/lx]]յѮRimr5W LW՟-^y.757YiUޔ'9|azb9^A ?/}Uծՠ_Sv5+ 8:Fh2Z}e/6 (ϾgzpIX1YwIPlŵ:{e-]4?|-oKq38Ûӿ:lU&|cmmUl#EJ6Q ZCƺJ_ؘ=kNWfh꺺{`u4 bLΣ8JIESxS+B,47sYI=on*єIAs$ǕҺVfz7| y6 P8J *Y!Mp2XP( S.;}קayy88v 8u MObV[BQDJ;fQ>9WuIű!qW7qt8辽1C!xO̚>aӬb VY{K84*8ȍ}/T*{H`>ŭ܏pQ04##xU {UR\B# JP^Y@`UQ('q/)>J|@RI "h=d3NRLޱ8XݩvUWU?RIUSw˖lJޙ;df74IX8@3H$PhB"zh6@vP$sN~^;bZ8"{Akb{S>Fmȯً7gZvЇ*{֩9; &FFpG'2n̄W̖-CXe0X< QWp'02rtZ}t:[*A8bZ[C.bS޷""9bZ7Qu8p47Boj|MGTx;]+|D))ia~zx3 SXaZ.ZA'>!V"ۥXFXP@ ,~Cfc7JY8\\={6T*`(z:+T;!56xiy^ӱo IDAT HgԨ"sj\[R)Qh[^Ll4fsvj%VoE#OuUPT?zo]ÓsMjUq¶(3غ5RY\5K#au ZӊsutccBDk8/]Z}qoU+؝rLC.zA ˿@cl|cz<ʄ`UtwG>s#CCeϋ6;1fSĺua1R2@h0XE;u\x5UJN5AGGuX\Z6f֑km6 g#il .H`Vŷ*Kn9&L虥FV%Ht%©|m/|gj *-c/=+Q%O VtrB`5[\Pg[GN!I%kx|Vsk:]yk]N0̎#-[lo <`?#]G|y<^I`uRL3Zߪv#og JJS ݿw~DK=}6Nl fj7!8[װ{qkZ\-hhoI\L )+bh UY-φ9bi@+1v3'%,XMa9+ Jo,2dRشK6WCh!nM"UAi{{H7VYݿ:וU[,8LZ1EI|y:!?]<^AyK:X@+Alw9Әψtѐ"+5n=1BE읧~ .ղ.OgQR)Al޴ɜVSodw q1yGΖN/Ƿ:lbedxNkU|rؑΜ<ðގ^}]ъ%[yf#yf2 (~oebdg~t|r-ჱ1g!+dfœjX,bGJ]GrwrUtzdV`,݊h /,F=X6\5cT!Mpu눉(8Q8U-R ނ*=ss, 2׵ShN%ɗ!Ә4ttW]]zK|XLlbTXd(vj'4W  ׾i]]YGZ0??_~2+VvOj?38ɭH\U]^g68%qoU;rٙrk-`u+k$W+AD%ȗȗUpd7{\x`5[@,^?_;SUH⪥~Nx C. ^ <:j̋qҊNtg/S~E|+v:] hw.CƇЂVKpX|R:6 Z:+["z-`J\w uǢyт望ճ(׮WYv/:RN}XٝZ'5!GgK'7 `z1P]x9%c99y/`Չ*$i|Y0-c/=dXX4۠%nĢkUN`@9u {LO_ٯy}Uo2K -X+mB:LbeK9%oU;rٙrA::]g57DQŐ/9}YsXaKY߳ X-#u"q8ZrjNq㏭[5;/ұjwwj%&HEgK@n@ :LbeS8V~sٙr>J]#Jʼ{ LvȃUg]ѽjcGѕd @qU[ 拫NR3Pr!q̻Xy#=V;ӾH`79y/`5:] :!_Vs$s=zۗ056q `V#B`uu:c~C'OrO$pjcc$.W]JZV$2eu0cVx<]u 3'O%A@nȗڂAߵ _7ȗU„nw|p U@Z,0_+|W5{ H~``]N3X\Z.80!k\`%q9φEL޼ VxwAim̴%S~ `u:]`nae5i܎FɗUNq7k8 tMb2;r쵲fvf :r0|K<3fp/#UcNqҥdV=T,M3s_:Xbӕ |YyݽRMlbc+_0efvJ5Vߦ/W%UI\e8fų;x &:X?/V XV.V^G N}9sԲv3'O:X]u/y܎F5/Ab1,=ۭLBkU~t8~Ǐu6 CnM@\  ˧ J9xXws Vć(6iҗfTw06ZԸVŷ*xkwb BU*$ȗڂAS]j{rtRZǨH+Ǖ:] <.&۱pP*2DcӦ/\3HeW-  oWߊnwr/thekvh P+ :] |ȗV-biɫjdV,73E<V$AUEcqC g8uӃvƐ}礸Vŷ*S~9$#u'-r34:G/y܎Fq94n| -t%G1ݒΉ--jWqU Iĥp#<|2=AxzZkhgH$Jo.r:މ;\z/:[:uo<3N,6/+snGfYX"k,9ZYuXH6j/˥7x(Rבݏ;O<.zR$F1cǎVb>8V-o.l@ .V(NtJL+b[ߪv+'OPOA0$zlzn܈!b}}A 5&IV!m {%N ,\8L(P\eΤ0ĺp55V'|[װ{qlW%KvTP\w\]^W.]\[~2+jW=ny1RݽqiPω' Y۸CXͅVw%1*]7 !C]7lDWL"r3umsG "HHjiL~::\WTxjJݫ/vZg3>VrEzlT `7obbXS)a%2Խqb4 R) ͫI !|gjMD[0^z~~}m(zuJSz1wU* q,x8y8W`hkhcvGKXy3#-N;ɖ*d/B=J&!^|3L/+C槧1069֗5+SUsYfE{u +7Wl5gdV;vl/﷪5>u1X^.lqF1`~;1ċ1 #NCI`']Kb*Sl@a1R(-d)x]e;庻2Ko4vU,mwe@,95h P`6p u"ln܈af&y½|m/|YSK.q{eegnYn+Q&`% u*u:S+Uf03*t^|{v#e\n* `b9g@ݬ,.ҕ;1`!T;K/.Tn@8z;?Zg3Z4h ؼy,inP-⪷ދΖNSbrLy+Ol FՎ|vC rJSJL|&ܸ׈<;w[6\|8Z[ 7nD}K.8.&Fxyџ:ye,{U ) 'Nl,#U`m2,NtO'>ϩBҖS)&g'XoVv\,v [8{ u|<[c*|1!LFFFK/^^>d!.<'M%PFo4vCݬ $0?@vEd;H^UY/w̢U T5Hӈbm2+j}qC>-pV[[6@$ emrՀ7`j|ZPZ81i_kE'z_ұ*YCxao^^ذk=`P53e{# Qriڵ]N_Ue퍩gf"`ӣ>#ro]CdJk#hW۱cv4662t=V볎ʏ9^;V9?*w:-ۆsqWvV?/ǂZ³aA>y+8v @2][ /uH5VtR+AyZxtxWxWO <'?o>A@MM yd7ekr3S-v/ADj ǰ`bdx3/ۻgلsV\_շoY}[+ܧZ #*js\~y4,ɬXgYDZ*ݹk]E$$ObCN{LC-3x^ kXiɵ; $Lq! \p]RWNt~V'?ox<#=EUxϋ" ltVF9ޡ r8 `B&8o".Bmݻ?YZՠ@e]ǎ.O{V5Y$Z\j-зr,]V<"^KXc{qC!y+4VZqrAT%$It~W[_aaa<A@~q|>_W!I`ՐPt䲿ݸ*ob*;_,XI$p!ŗu,yڜ[Y]~ODb&R%֪ϡp#t#wՐjئgt]3X׮(.=aغ$LKF"2~yYI$pGK/YKXݽ%_e~u>jtl$v ݯ}e5 $ ouVc]׌8fǴ3O%xvqڰy+v:pjAB +fpZW˛֭}xH]]܂&466MM⣡IhDCCo² kL}soyDJX7$c7Z 3UCa{ǎ+uJp6E"@0Upjy*Kf87,zJVkdJ2j{{;vlߎƒjm:,֕`ahiw~8=z/:[:-US-X}0TǓ9f}9%aG.;[/u,sϑJ3< l`ZՀsGxjL. 7n/~ ~O C(B"@.7&2ށvlgh[ڵ/ ˩XP_ep~C'FGgQ$][Jz +q%$:7Ř}͝tqo=!#<SL]68O8QtZ\sؑΜ*uQt#Jt:h4"K,^Q\5;U!ٛcøym! qq!(-'A y4p0S\X邞:XkoW໋4[7XegNKpR3=ϬxV ׿С+W.`f&Sx'w?sjo bY0ۮ2_~BFON&n)EEJߺ=+o s,poyP@RbtCȶKH"Yv&k7_U᥎bdu57ۇ7oWS9xG߹$3NPXɃ .sۊ_:/?.o\-GqG0Rtn\ZDW7󵽈|P7+:g@ww1\W~jLA ]'sקͺ{~(=Ezzz7;?ZH\79=<] * $O:U`sh*ue6ɭ^Nxx˸XAq.l.V G©SlXA!sh K/wOc*vcc7N/KrnB 4[VrTs)4ӈl-3پnWIXȅAI,kku ڄV5#fyyd, (||)PRG1 uq8mV{rؑΜ<`%±|O_|2to;][[ htS}] &dL"}e-R"Uםi8~QXN`nc+u(27N#:UZ4εDq5/,W'H9`}Ymo&d@; /o+2QLbum"ݛb8}S+A HX6阜j]ɗڅ-Eւ]] DIʑoҐ@8pϰ$7tխJ~fj}\]9=+'!#( BEzC-Տ_Ŭm+|b{%U~zֱmm-/%xA uq8ꅷV{rؑ䗰ގ^]ˏϏ.锋F,jUڔNUV%U\s ᓈĖ]Ebq}ǰ\um_m{P7)QD]AD5Q^000P(Tx>H -7opf l ٔ#\c*ͩ$2)޾N"q槧Eua k7lBCC+Ldvɞj.7\nuj5$Z̵/Y<|+dpgfH$vH$RJ:Ԭ+XoV,yL>j,5{3P_  ubwjcT46@*e ٛ 51 C3]9y/ǦZ|>VP+ATKTxF܁ŋg!_V&d ?$ێ)ĪUA1S"S~ >"2~%jau*'ujbVMSzY-$n]^crե)ljn}ˡallbu~tӶYs yA8ItH$ˬ[x]\wJ2!m ^?Z{ =X=Tv)y.O E֓'NֿTǪoL-.ot=Ǫv1A&v J%xTH$H$J_L;fh&I`vɑ@.z<x<֢n>CSS+>r{aj; 24ڽ @_%{뽊ϻjN=ۺXݲݲAX AEѕ,3,NIGUkj,J%ro]CW:2=F$`0`PD1; y$!U= po]xUEUVaسM^ܼuW,1{= |~7 ){@{NTo&.tٶDn>d۴{:@M{'1Ӄ[n6}X \D7;Dd`o/6 Ȫ{Xbr2aϱot:D"Q̪ߪ%Ǵ G7OYR$gkU::45ڵ fO/`v ӟwD!? M&$!Ro6@TeuvPc,buaX \Tx;v YD.ȚH Ś5,$WKuV ZA(:0uaUnIlLvZQGpj6<6oibr򗘽7 y_0怙πd jaKۨ$*#xʹW vun¶V'}U %]n8vܰ a5uZ]*@+ADUR,JhȈx\,vn9f?9ށߒeNcQ^6~NZU( ⇣+uɧuY[[$ԓUKr0RUPH^ r`aA g{Dp=+P{rslb+hT(rݫ<`y: ]$ X6$33)̤,EW Dzբ᚟1qyʖ,-rUElkDO!DiK~qլCU>io!ӳB^<[W?{ع:ܚ6ܽ{kטb PhuVv'w yY*}U7 ]N?N^P;4`tvv!y)&ohK7Pޫ 6u5ø&ӺXy;-8~8l]  A:+|m/|g2 nZ*WqގVV:A2 ;LvK\a긃??Zҽ*0_\'r6#NFHʹRй}5Dw%p>͉/cǠXۧ9ݫɑBk2Я %Uo&^^uZboVu /Liy >6]<^3Ŷ;(9+XP3=(>OA!t% iLIG-[##ɓ}Ɐ /.\*ʅTo6Qr!5 " )Dm]K ` [dI#HvaCh&paW{xj"/VAA0< 8w 0aS3N#uve^)T>E+բj0D0Q B!QX=yRZNN\\H-.{}nCx5_!B?x8ƚ*w:q̜XZܼm~бJA8a੧Te Eq bϭYz`ZWd"B>ÓYadW `IXjd.*A]K\Q1UwvٙW5ȱ]Xp{?>/KV  őD:,Ԝ0HE]4nb͗Uk}0՞cW%U֊8U((v>\y,jHa}BC [̥k#P~]N}7nA`% Łw ʰ?V_e+:XJ(&ˋ YⷪDmOU23kL0T UYHʹmTuUkrw[96Sꭄ;ͫ!턯ɧuApPNMb槧)tFbO/Q/_$]ב "pHqqUͶ/ZbBw&DB{IL rXTU6m7b>M8ri[…W`% 02:ˀs-EO<)/3o}/.M땢:d^ .~CUl3{g5 - BI~!x'877㗇C r8d+'IpCci~;/uaT3=ϔ|:X 2< 8wyWY*Aeg|Y P_W)@i$ U^ngw&^Ou ,,U>:xn>nWy.V꫈j-Q&iuPOe}Kr,:X 3< <. n^Ijh-,Z#;B۪:mWEW:O#rOj0d'}WMRYivcڑC-OTW-"4&N|$ ^x]֗^W=5D,Yi\X.Vǰjfi(wjm\%U:GyE¤H`% "ˀݬsjֹªړ5>_h\.){{,gE'05e%qU._ 6WDygI;R=,Rpr8y+//ՠUw=wa#oNSݫvvw(v:m9mhaJb+DVX Bf|p:׼(&R*u{,L{<+[@4Qt#t?Cx"uػQ% DRdZȶleZȶkHC~ݬZxVg8 KQm\v<~JT9m8PR[PGAA(0< <pi0c$jܲ_V K%ihoG֭%}Y 4|aϱ 2.mk hWUlf!HHm 18p}EV7uZ y)t5Ԥ> Ͷ6ٱ>V_ oHky ^Gl]ekշ!lIL]V*"鋧cjz;zѻDWJAr8 VEZ?cPT6Kcyl`F.3b&UxX 6Uej)FCm_x8ވa]+cGªm5\hjgQKH`%  O=@e}bu ׾+qU΃Mc =I(=2KimyxTW(ܽJ#r5yu|:A؍㰸pCBM6X b7]xQpЂn3R#ug|ɫIt 4:|7ѱq-T[ U,{̪[G*<<^[ZX,uV#<<SXyZy1ۅU ڄV£cM  X0< |!" "k˴iWb9۸vWmlW}u,`!P[$)4X~RR.Nrnλjqui:h<1cǣkxsut8 FB!5ǞxAq9'_|ەJyYĺ<ŋmյD=709yk}X <‚5o,=ju.-&y~ ZZC_8;XUhںWWk([!ꖵ[IQ%xFuu *A/NV9|`_]&5~ǚ$k5k]΂r z,|x<1Zi5V DOV`j~@`mmGJ'?{6;($%@E)QʭHn=ȱ6nuε=gsnԍ{ԖĹmӴq7MRmDvIL8LbH$b"oy>}g/ "X\Z4VWWP(PXc/.Gۛ "̊HL!mhOdi LjH\e3fX|d=;a xx|.^3WxrU9^efFk [6%+AAc@?ڟ{ `"k ME^ rYQ҂XbY*:Z1|XXdžhoߌnܸ @N0>><҇x{,r߆xbMVa7a/Jj<3+sNjAq}9o{jnXXB!) b= ak+RR|aG\-vmm$ڰa$&M͡Wq먩iBSS [aFڵWSXE=b|1v#J`tl;cRО"d=iﶟ۾~;fcX\3M3:9_XIƃ,ۆA7ǎڇB37{G!oui,jZ6mwOB/annKˋhjv+Ӌ&xui"G[b ݷw!3Udkavj^yF:o@~)/* $rs_I%'T; T VR.">̱ZΏ sR7TXMռ@% GdO֬7[5~KBs٤WFmD߽7P%Z~< qEm+]ӻbۄRsȌ}S-A8uJxpi鉛uXn[` X\t&2Z&)Ah=.Dyi}6+HL!G{Q|-+WEx8yRX>x P\xk Dk8rb 8U]"Iʡ2d+)Kc~4 T  "&D{&݅l,3L[>2^E"XgфVaTڙǖmزMKHo!mǖ[/38.|;L aeW(W* Lt' -U(N"7C$AlS/pY>oAWll5,Z'FUMw]n$K|\hi [)`*H+Z#eۑ  X+7M7Iw zqӧSt8.i}6=ў:+/`VKxy,f=c"xκ/9±尒sbeT\e۵\L1hD)9)gP vw$ADrf`EgCЋPqҫ EVFĿ٩YLM%k ȈPntw1Db =W\t2^$E, -:|dH`±尒HHb]j% s/R1&kYrfa$=h  8v >4O R*kiA]cI/lď4E־Xk [ٽDCJ K +Q\}w +߉m[Ǒ_۫_kV2ղL\xg\( P ̊!M~CQyp`) |گW0U7{e"W_x-ߖT/Kr>c;)Ch` 7+WX =Wyl YޏVu0qUdaG4ګjyn֤{'kX7ob<`蟓f;g16okdxAddwjWc!Ǯv4LU8эQl XÁFjIŚѩ; Z_zېA<ݚe$ Zojݝw[jK% Q,~\[3oOyz==݅قzb K˨ki*jkQ璅y\um lǖzн],,pa[ng\9S̾7|k{YFq :VrXC|LkJul>{|BǝL !hZj\ p xvW=C/Kkkܬ7_;Z?lC4Fo7Xq 2ckUYЅ?B~1J \l(/iU,sp/Zs~`R3zo ]Kw`q# #XJVidE1ghZ g:V)mq A()|O ڬFl% Y=VUAw_@C"HcD[  i2: 8.dGہBWA"ڄпI=|1 ݹNk-92s_hB@+*+j'g"b%L,øL5X Q'O iԘƚ(cc%.bNzX% 6ϾW]Ow!GoFFz;"'*t)G; ,ՆclU5Va0ǶXw{uq_a5T0[knFwKT  e*lߞ}CdaSnV>_]Zr6[7#yX*Prvѳg[hoJb*w0ҁKԭ]DYq:_stA 7yi&T$rUccY"Vva)b.b-V>XYW//!wB(GD{.{ K=X,%  d`t4_b.a}<~EG7KҤWAde+#TcKW=YD,-6~<ΜBJ Xɽp@s|-a2VZ\[ nsbKKNm@=x׻Brͧz;FFj82sĿTWtS7.^T۱<f踷YT-J"!7r[X A,~v.ь{y.0v(Z+T\YQ҂Fk~!z~ĊD#he [jg*Yݲ&3S5H\՟᧯5#-ȼCz{.BW }QͨajXC|TbW xV-_]̤^2!5sۋ/nVRcRdecD9Z-jA J$}ǧ$a+ :u걪pU$%Y+E\:Аgk>G~1^̾7Db ޞT BZ s _尒V.n>b5 ܫ⪍ڗ#t w>cjVysn{r[rAӼP"&sf V23(pSNX׌vU"r6M4FP1@wAWVyL8uJx޳R:Dгg[v.t$.`n3Szn*@#ёjZec1[kZ[EƯFؿ{>c本p.#9X yop}pC8)9*uzA Vndq#mmr0vw4\o8<xa $E@6ێLM%ͶKu`NWPKT~_` ؐ,c7.VU/F3|/x/-Yn ~!.>mK`%+AA0= RfխZe*./=U ̭UhnR)`~^pDVrز9aۄ\_ :0$.wa) w5o$r.PQxb`>O!zcHVuv)]wz4fm!url5j= A N1t5ڂ%h&ҝ͉?n b^"z% qՋV47 %2`xzk-kwıeG@v=zt$. ֐ dڑ_ci{zE AUNtcm m"*[ua6#3G<5q~vٍK}㷧p0~f(JXޘ P\EXbz~_ C` B\#Â5W71 ]%&ZZj/.v\l@ݍKQ,μ&]t/0Na{OEڨj5-B"skCҵօ0YS=mhfYu8G+`% V"n)9 oF*BJԓ'B>_S#7H1AHBǚܚD)y|׬qU.@_vQ1;9l\ FFJ@"1l}6^/ b"-j/ 4, Rدj"re̼WXCk'LuVkŅst Tʗ+cQUN2r 9Tp.j-_̜HVSֆT"\p'zz\YƃO 0ij0ӛU9ŽW*Q\2:މB' <APu7c*@ݍK@&ОPǵkhD JBɦ$9Xilra%yb6qF<æEU ,*zʾv=԰Ǘ`t*<`% 3orqըު.:1>gpxr xfl?xy#aKKiބHcu0Dkܫx{h'2E<&.Onc#^ֱxgdmkB> Džs[J"ˣ~#NWrZ'֋B"U@`]ESվGԴ7UK l %l'k=#ҍHJAl=!,;{j 7 <> n N %VH [F.[ݫ:?1@;H`:v~!/9eg'g15@{{V>5@$Az{#8]+# E\ {lra%w^ _Y[Xª\:^uŶdM r:kS9M5X 8? , =N/w n])4O_!)l;(U@6UCx5吸ʬ:VWV#ya4TW_H,H,x2-D#Xf?:.-hY\|sfޫJnUD7F@$ 9yh]*jO/Uѱ[T>m3a fӾb#*ewi%+AAT:O7bIؽgzr\nzYoz |Z@E.2*"M$osp>_k]Fx@6ێBMםw^ Ԍ,V$FU6 9UsՆf*6s*;:#Te]0b<8XI`% Mު#,W^5daЪZIB\@'"q_\еAوhNwE2##BIlB+Vʗ"߉X}"p^+xH>1}GfUjyMGaPT dҗQMe(Id;שrWPcAAj miXؚ¡B֐.JďbyDSg'2mӑ䷕O g}`>ԅ<&c!Bo.{} L? >*#q ^ܱԋo=e4,qUU ? _Ua;r}dcURl>IV `EkszT Ty`U5+,AAN0~a v;qN`-[ii>T \jY'$qU$?=qGr {Y=ݎ2PEEkI\YdbYAn&w/ڵ"# V16ƨj5+DXŗJ+˽g^ S\.ъk[,l[f/8(pyAO=as VҶS"-[MHٰu1ɳV!DAA1<\P(R{Um ˧`ܬ!r6>[؉x{<Pw7!.4xXR`j*Kgk"1%MF$UrʮWI`q尐 x2c[h^?1,Zm @Xo,H" 7뮰;I(hn*])uʙagwK7[m#+AA0Oow*{Uf^y ̡fuJ7e <nG1\F1^$qpH oyic\uu"hX\[WOIV~,ڵN&Ϫ?E[ǚIKyvr XçjPX{^&3ea׼7ścSG띓@rwaVӼҼ&{/bT4:FZJAǑdprnp\jWx|Mk0Dd J\A$!LzܚD'~U /XI<@_iԌ/ &w^zScDoXf?&bn-4UՌ-By,|aci^a8R+qժZ1PYig0,]3fCygUGU7N0bu*WVX "Dxs=xGx܍ί@슃 "DnܦX+U\cdX ٝD$xUD]҄Zj+/ñJ6%3r @`4c82sDʻt_wmqJ;b5 %WeVivDVU ai 1r}pۃBP  Q\MRxGěyн*g &x۸cui4UK`€qr7'Zɗ|Yp7~ty$9j3UVf`d(Db =:K6h $,9XF;zqaAN>I^ma0V/˘<<),?xk}t=o]/&D;B]/Mp{y΅}=s *Ūs_k+[ކXAwQՊKXd9b-HNVr:q*@AL288!EU=|F` KнG ak5͇uk[ܫy8Na)a_E݉D"]dLZE. ^ r#(摆<19b+U;8PUaª,ק|iX@Z" IDAT+BYƙ@+AA0Xo O|ҋ*Wݬkj('l>|DݙHݫ"9X/B^*0CAfHdޱ`KtU2róWEXCvz":V^T央^$$M=VC҉jVU6~Um*Xde q3V `Q\}GtK8Ճ9nKt٤W$3qJ~]I`q尐~!WEX^\5uU5EIe?}\hqLGt$i r Zg `yARUU z\çd0^(8sxW_p.ޜc%&&.]S;k$:wvdIAD GE,: \F\\ͳ~n?[y_[38xsvܬ!ޠ.-c9Ecr3b ^?fcyx ݯ:Ixٷ}ص=$" 3q?w7KQ䰲LMQo"_<<{Uz;^j>žږ`S3W ȶksg񡊤]MWMwR32 ő\0:Ú2M_o`bST8.  3|Cr@n&o6z04p~> f],XvMވ UNODʮW^9iTZj~sV\uƒ9WÞӮW4P0iUvz a_pT0NwK7Z#  \<mMf87bc.}(Wx|$0bza~q^Wgi a{{A5o@'*#4 拏ӕ5jovܬIڤ&S]]}zqSȜVP9[UN+M2ʼnmuܬ*p2^VN3z4bJȱ  0G^o߱ Ձ %'R />z>L&} 30~q1!ֆ--Nzt?X>Ǜ&য!_[+AA =Y|w`&秧W0z׾^|./9=WEN? c ǫ,6\ΝrNDq#R-Wu=9v>T\|pW o{q;A.QU)f* MAn>-%_˹YDYu&NV}jڎ*!ǰ뱺)P V q9c'1i I, ܫekRVZ-__!](Q]V?`X.- c%<&ޞH{HaXYLH6%QbTD7EvoEnbq&gc(^ĻchؘEn&^a/v WEtk2^u'rV9ql:NN^Q5U(JeV8zSfQlOuٙiVZۺ/!Mu՟JA Y) Ɨ^ > LDAɗ|YX2  !nM!-8_$<|XK<14K/8XW슫ꨖ\ Vg/PjTM?7/N\QEVr L?c&kt՟V Xo*Z*`S`Ō^|bWڬkji 7xŽt?^Y;w1Bf [$qB%a zs~5Ӽ$/.ab e-և4,6?3tGRulUTbnSQjtY0j"gu.Yu\d @XuH+AA|2+OPU>VxY=Iؘʯ\XX=~`ny8yRX>0J/إuɉK'H6t~ƑU]E^ӊU\7UZH.ַoqtuܫmF«3q՝ت`59jv+ݹmj#z"wj_ioc|u.]NpP V 0Nfe?̓ hv3ˆ XZ-m)twy&zfui,j7!>UegvTmp#ĺ W2dngڐZ@s1ד\8 a |tr;*6w?lX}=ȿw."75]yH9^`E-n{a}w%rkN8)'UY)XTU6l:U6k\׊'w`R1*J2B"PH5z BAU_VԽT X!-384AP \Y}|v34Fܞ~?a\\,LjܑD$ ]iq f2uYÆuv,/%q$;X+SxWSF1yq;/^|% :z:Du9-NpqC6Ƕ@vzZz vUKS%~- < V} \i;W/H 88ѭ~  _]u_^qrl E j[8|"@qC% B L\'^x»`f7 VoN8cX"MT ?A"7oҤWvDV79&{||n Iihd}a0f/%Vz|$PR] Ko/,q<~8`$x>to*&}n=Hy_?-#E kY #3kgMVdTMUQ&Dh}AZ]TڬdYoub 0oXLʻ;v`%  d"eVfz zmFܶ Vnv~bXݬ}=UkеVy]VVDְǢ8t1ErWI}Ur׎NӼ353EU+o}ߢj5?USj9A_d D@ԭCjFjA-z/zYkGyЧ *@A[glj,/*]Qͺ `f ( k^^e٫ Lj4F68qB(Ze+M"3 8X툫ѺpXeǵ$X=] /(o?O' @%QIt1#3G'k7PR:g{m\\UVZֽşݫ8||T.@,# ,bYݚ]1I*QpYEn:OӸzq/o5]M5@랇=$MxUL jÉMU U3"ê믖IUL :KeQ_Q>bKkeZЖ P1]ocm>F#{cJAKY=hnn-  ?n C\9"+撛J 27kH,kiA]cçCC]}?`]d"Hww[WJ汓֠wk@c7#7p H.Ff,w/oG}4Np#j,|~\{3K.V&wOKQKb;5$sURu<%+J<i ͲaP]>+&rx qyH[#8X+A뭲2R0U'z$exk#)Įkքf*&rz|==A/a{yG(ZEOK1Rqs9s4Np#icǞϧpIb++ 0sd2WcFX J-^_ٸlO\s]VJ5RNsjjKZ*-jjMjcUGV^-@9Ū.צ AH:r\\k Xg#<dVzӼ` K I\|vJV -+-YW͢y"wL&`r^k8GEڄ8AV+@~Wqmobey?7~"7Sϟ:ՊZgU+ѲʕW92'JOvv5O]ue Ų*'.RZN Y zkعPpvuǻAzzՏ{8+1뱀狃f+WV=!ZKU3q_Njתx=WZrו^ }hVzejI~(Vxbsnb0Ԋͱ KV 3V0R`X\ hng|~>f!GF؝c17/jb* \bW9Q_[U":W%7iqpiz(J'+u^*IJW-^m|vlsb§-TEþEl5P`% 188(MfZI59XYXs`0zG׊nVfUaHnO"ء *nX2rBbr,GL(Q_H`q #bSssOHjqPӵN_rJX_#X/|O_ܫ.Vsq$DS.k>Kd$kZSCUyjd5*sbK[XB+:o|Ʉ&rAbf&ዃqB5e@ܬUD2Y4&7Z,?c9=:<,<Ѻ _;3m06( Z/:]?ؿ4`uזzkq^ފq[[8ގesJ y \ jMճګzB|&P%!Uj-nFuKSUPY굶*'(?q /ƸtZj/1]jV>U.ݝ۳!6x  BF>V+V;?cgJn֭(`nV Ӹ6$Xc= %NЯZ8 ^\h]8 v޾ܿ "r9|?|<7IފMC$3+a=7=[=,eǬY?U-4«\4guJS*;\qzN\WPs gp(P c%Ob {A+RcZDF/p^h*>|'rAUǙʈ [6 7"rx癛U~XdQ҂FR,$G}^ʺb]JEn{j_Uu[l[Ea}9^r~bH$ؼs8xkq$~|#XY^:]<Ƕb O pqYmQ9mrպ{Ubq}bjujn]UTWvҲJT97;ucS8%p''8j'_}xU;2 IDAT +AQ?~bO޼-UVK9C)lEފ"w_@C"HcD)2rL$cY$ ^3#~XYO̺.q杒5}is4C x>cǞϧN]t=7WY8vArr(9TF|Kڭ#B q\Wÿ>>X 9}q㳟ؿC[owaᦉP5qo|>u%Bkj|:0<oO G#HT֬WNsjf2ifl= IzE, ׌bis}<4!@ ֕Z鈡(pZOi4\Uk*GZmpF2ZUir'WVZZ.UOMJNx% ' rUw+~¥BcG=U?IhP(^> X?oPSS# Ϡ>ĉPׇPs'wnt9YrxddpAױ|b>ɗ|YV­;W>K|ޗ~i:`OW < "eβ<ٮj}x_YܬѴ0+Yzx`% B_kpWV9p\$b8z8|`EOf ͋ P\=UI5X92&ƄW}հw^aw|Ȉ |sW':wǯ[$ OqAt k5\,еM8ӗ7s>IV裏?yGqgA{/z+ 3_}M|d%jq*{hcqUcK"wU\IRXԼ<8TfU'2CGloCw% f +AO=4@mlPZI`$pU':XYaн ,ܘynH [Fr{Ҟʘ{U, ܑaz)S/ nM>Xc8RmNßZhEң\I_rG !+zUQ\=ҿC?,^ b=M:wl\#o O㶶oo+\ܫ< X?i; ~r'"se0Y௿<?G]#*d+4B,tUU߽*UQXDPT$dW' %Vh-e_Pib9YYm }~"I X P8}4դVx'+q3b%q+)t^=DEVܫ;H\e.WUO\;~yDhfv:&8 2}EuAt_z `C#r坮\G]Ldþj2S=ڛ8{Mª½- Y5⪙9 b{U&J p^W\䛉$芢a7OeY 7Wx?AA'?9^;J\\][k /woS,7QL{[Wpm=rR[8 M?'Pb=!G2>MXDw7ޚouRW2Q%S86t)X=qU㊏?<~q4'S=wZgy]@Jˏya  ӧ j!޲ TAX-d5i* Ký7+ 8ι{( Iz?б?h[<L[o፿}o$r\hXt rqu`]{MXкXu+UP[RK])ȝ UǾ*=8Y$(ZYPEhTgSK?q3\v +A(O=4`Æ RiA\7nܐǁwUD:I+@^ BmVnVIgV4g6*?ɧ{g/"0#񧴮W*@Չ#pSCkr9?ޏcǞB X-!5#{M±;N,b L|MBllpoÝYff-ƲɄn B6 aA4L ԍ-B5TzU}9U~>u~zS7|y\>ť?YL5F3;*W _җFu 8RUk/K{ߎ{oܖDո\W\ҝ? 7~wşg_^a'ӵ?t]t<-{vڋF\xم @ |,_cQG6<7ݙLk^-VO=N+UgXkx?ɚQ 5O(X !w'x"N8Gs2X;վՎ?G?ъgQ#\d)©&fv6ʿòyMVnzUG(Wñl-:>n})(YvGwB vʜ>ÏgBA$]+m|ߣ<жk'(]V%s.6{o<~XB ~ǻk?eÆe^we) Twhwl`/Vmi |}~/cENTص{ OVPi%no7*D+!Rz?S?DG;v .{W=*`0Nm݊N8UOPJ٬MŊV $ϵ-u\ -Yw$UB@WmN6kQ!su <+qs?1aLL{ǦM:? <cݵ_ϱ,?*]?rDk?A,V lV5zR1(KRꖧWvXSqp9ҨA6++!Rqxww c0[a>0D .`2S'N6ߏa/e:7:u+ Nv겎)!Y٫e+iTV D-NG{.ťk̾!ue~㫿vM&Ck\u93?nR)#K j LtUw^q#OiY[#-|,^%++!y'ӟ>cǎ75~_aÆ|`ƍUH(:{5M_x%pe]l֙gN; IVf5fd۲Yƀ+- s)f-X;2W D}1\Oxo|i.<(C /=O4Bu)ƚsd2e*KU`%R}X深n% ~6eW˭;]g6klփ+nzA7:j Y+}FVwݳܮJ#;{-]W`h5ƴHG}_ >{T*ZmU"0BHጏC!4.FTfYH+K6k^钽Z6*%Kl6}{^"dNg%6^;9LC1d\ڱD!-];!`Bv_~//^&h\S,$&V4@!R]\ 1"`gΞ7ebGیoz5}`G>4tԩ4ʱIWU^>;w ׎%!7t/XCSx)s9# =n3e5EO 1H[vb9!8BYJ򨄘Y]W(7y`a'SOc3>#]pu)9j\)IRuxŬ#Rg}:[٫cmX:cd7 l32`#}mn^z  85V L4zXdj@ǚ{dmc=.g(d`%BB٫M ggN_tl«@SxpƑ7w~xeR̞COmF~| %BAz=W?/n3AO֫}+HgN:{A;83̍ݵ7_=U\xم}笵90``c8nnqǝ{0`љLtK̾4{ |ÑhuUNu oߊ ^i~uaF?N2UMǦqAY`%"'ѿ; $Uゕͺm =:e_9gcy/~( 47^=w~} <)qi,8e>٫*R5^1+k1z4&w ϭwU,@=OwG~37.U sek1w׻pxiKt/n0%]g7:Ԋӕړ& ^PU.^U3=yP]+b {.`%K$PV(1:@x9}(fj0#ob/]|sڛ{? X:iQ,X|F]ŘrbݻaYatpe*Q"@?R,ZDipL|g˞'X5s/j֫oȫG`@)Kv:?[٭auO^_BWMuniNy'Yo5Xe²WCXM]Q KsUJ`*L}Po&+!X6&''S'hHrACV*Hđm٬' {,>X7`̓{5㎾}G>jeQU^♜]`F.o-Wò]OdBjKb}.Ğ'8Ömi0 `e#0x^/u*N=kgTOmUO1VKXvCh dxK >1=4WDS#!l+ @\3Xrg%!TN0.xtMU tC$ 1䈝ao81|0 ){<|sq Z!{.P0s'0>l\dq;wXq- IDAT\疷oy6v8 `L}7h}D0a8vRrX XBufK%Y wͭvr!cpz7nSVgm(@)N=T,en9Co?.,*e;㭽|-.lSu1`7N?;V+qx0|e OK:{ KY 4z7Ҳ}7M. X٭@_mzsL@$)h/l=i=c4VtyBM2e3`nJZ$*7yY\uYc$⣓x ~}c&}^?8v=ѷ𫇱^-bbKv4t/[պ]`+'BH#e{#_sJ&ïZM\|PyR,2lbjNKynvcx,6^;K#|LAc~7|?wa CJ`3.#U_6ο VF* <>#[>eV^[%瞆ֻ(U` ~6/V}kL\M~ǦB7^kA(X !t¦I7Rn? +k^WwN_9f4}X/ PRU&@.kst^1x"K"G60_cAǯ|-]{ {x_/``n ܄JT]& z _xGE#ڪvo_ SVY73/}?w{;Umsb鹧EY'P$@X<߽AF d̾ЇVCG jfL7!FZ__ZUI9{b:vH_x{`{=%]MN .<FhBLHG"xT:7T%-%X`f`ߧ/]ߨ_ONm|2 %1 3C1 ;ֵ~n8ߎ9|n+~~M5驧_߿dz1 8ua2\{߅bc7oxsZ=ڗ`5 +{Մ [Of|caK&`{^ör?#MkcZ>#ο1(X !T]w|aU7ER`wWa p; ܸpC^Uȋ^]ּn~UjѪu<7)XE[ɪ`kQ/J` yX{EhEhŞxz)<=4nTpKըcz3s7+u+Տ]^4&"ĩWFC6`f` U  CU[Z Zpǡ`%B*}NZ-ղW"XUy\4|IOc~r`2D?SW_6}+W%cHLWU#olɺ}{ՑH1tNoHoC=F-ZZ2sxCE.j"FXm1*fÝjW-Z]~~vktmKζ[/ذ*$ԝ ZM**#U%k WU(RrOv] CߗYb`lVqMiK&i0w0 iuiXY WXo%xɒ?z37:{ Zg/`/Q trN})UP+80\;VK)֥.9 VB1vv]i,$Ǟ{ {,.ڴ }''9>M*Đ'g•r7ckU5J05z`"e!VBHaGezEi_շ͕E1qw7Ǯo|t>qZX|v 0jO~^C_mi[,٫X#;T2`%Zbttbxx7tSy+Eʱ)Īi$~0ػr5=*Đ5\%Ox2Ħ: +ԝjdk{ذNVjeZ}{2W}^at>kݓF.&`e?gpxzp`~g-!ZKWg$h0{UV^F8H#Os|*BjuV'kbbb"VNLL$)7_'jn9`YbљzGvՀ.57*MֳQrB5*ŽQƢ`%tt0t:R}P̣\%M.l]c`|cJABQ%0q=OQY=*b'*[-YGZ lVς $% 9M,jԡXn97g+o_yL,:T,:kQ?a;)rՍBH*2Te2SmXȋ+.GoW7_t'7cny;sR9SyP9肜,i 7n鯢,Vl fڙNd Ī/W^?~j?XbQ"jvGKVviua^6뛯O~EgKڀ ,LXB\Ns1}(fƐ٬5\(c6o$xeu$lsTJnJ?#fWrY6P\nW[U$Y{p;0z٪\Nw%ӫ'UpS,Tuo _be{qA./=wXxzs )rd&h- VB ".0<<ۇ[RGT=X"eN_WEd«>Eʌo,:< lQDRZd!|2Yϔ䨢/[Pu0j Wؓ x-]{y$喢lUiDƪk~8܋L89tk}mpK>ӭVGJ(e*S:q/ZQ1#  VB5I2Rmed,!`MN;uѝx6f VZ|Mt={KvKV! 3LX&-:8<]O+T᫱`;Y6@V _|FHVcM|ljX5b a´kG/{^З&/<= rq6++!h g*:n1V?ul֢׎r59Uǽe 09 Yd?P/٣I%̛hA^]ؒ5>V.)#=OóWg VgO U e]cA9;-Yu']Niߐ!t.02UR%cb7(X !$-@8 ӷ]:j"q[IF1}(V7V}6kY4ȋQL8peqB:DhoO~\UuIV P&:X ZW! 'p}.z%Tc2^=Cl5]|XA6kOIֹf1g?; 8m)/0ta\}kQO f-W+!4aUd1iľm[0B=omU^:'*n+q+JȞ?EjYVpumiKP@>jJ D-rN PDĥ[wUo_(՟Y*#\m|}:kzj\ eAJ!5erryjy@勍:U⩊anyCN7&mK֝;-ɺqJA+#Fr>1Rt+O%1+OVk1\5Y@_Z%K Sٝ _& D#U0lm<}j-Zݜfx7ML.PBH#H"XZ>Vn‹wcygUS%Pl>WW!vDku丏pB%IgBh< u"z2bco%tVklW,<#"!"{5 @@U<7lV VB!ISϲw3Xuzc\ jM 7"ԔYQTB]jDyX5\LdeκJؙb %V [3`$jo䖠rU!+}3}mY\%r`a%[j:sYe^yn:pzoʨ?QBHaUX4p+O}k#9@1SJkh%HgD_jXҒf8d7U$Z{}ћj*ӻ'(RUא~!~.p_ܱq 麺ǑS:dfi RCH҉ 1V*""",*W|CYIT#WC8Kd`~ޘ IܺYB#lJW $U"iĪ/]D=;6p* O^?A4-LJV\9,@Ljpsդݓ]N~:pN,鱲G[2C+!ԜIlڴI$)dlˡ ]fG3 KY2͙.})WRQR/YaUjX @@ڣ&Tz@E\l']+c3L lyj,jgρU ~p PBHmٺu+|AHN췡`U x.%.t^ *^u^\%NBH(ۦU⸸,ְ._"X* \%kӫ?weD+5ezvBdj\ H5٫= / PtU {b~)X !J0.&&&ni&LLL87rKXR1 5ePV@MnyØz#斷G/jr4 u-dU.d߀nI K[\pӝWUڄ"Cd_&q7|&׍;^%t=Egn VB17t+[+_ FGGjVWkK`3)kegzt'yw^Cy. qSGB#/!"2cb $XKV$.Kh><ד/ ݛg'J2E"Ī5A_sLԄ)(!cQpWsx']9}kD6+3X !Fv`ejTORCZ&FWbQ hC?m\]61M i}߲%= RU6YHSu(kZUfFmAIRHib["Հh !6aB`uddjB*XSDɩaC fKWA:,~m ={p3OK[N`%R2\C{2tTF4\}j&L_=NeN_òz806l 'Z%N3TY!U*I4 FdK~fñѢN[\QOݣFlorrUlCc/>"5sqL3m쵲Y^ۯC8QNFd/!|Am,Z(]l~%X0/xICy9p@"h`rRzw"qZҟ{<ɪz|Eh%Yw ?Z~ֺ)%U>wߦ8r?I`K^ .j`Im\hjyw$&3(U5 RE0%'eWc䙽wt[.9o ZsjxW:3/г ky),q^FZ#`% '+ėж^U"`arU#Ұ7U1%1}(fWX٬C?ډKKʢ6o2Yǭǂ<?Xzh4Z N lk?,UZm d&bJmVW$;g11[`W*$V۬gj`,}qK A<VQ=V-3] Bj[Fݴjbbyu"C"%K~gPP2}1B㘾z#-nPU-YIvc(eQ8$?$.H6**E+O>IE_4eYհtҸkYk]ve]9Ⱗ1?LJתnpPBH-qD֭[Y@Sr+`cN^mvwh}oyrlUn۷ch6n~e'?$@a^uZyJdFk9 IDATqP?5D'7K׫6'Z_*੿꒨­]-'FeFjjZUqFIWG)R+FGGtB?t\Ց?i;r5_-xH}x4}JeKv-dզD@"T*RJF*YnjSP, X"ғ* A0]5dWؾxj=Ijnt^Mqpm[^sjzS~UfaτB4+_ FGG=ubbNnø馛*ylcxlDToU.łG˺..6nܘ_"DZkT깦j\*^dl%HrW}NW=Mq6~##zwb =N2?r8RC_2i?)ַϷE8f8wQ6"=0PKm*&{5*t!#]GZ#i\(X !]6YjsᱟO~;0`h,@bZOթ`mlBոT!l}:{MxU6UQ` lZʈӘ-YXJ<y=h[HgKeze6CJ-WS EզYi++!B/_@rGbm"/"HVSuTyUFU%1@u?U W:T5^2 q4.5ZxLkI54UFXJ2TPƈ2jok!˓Jx*]2uxxI( +WJ!(t} .̰GSMgY*\-ckMUR.&S%(lzik4 ?6GzK}0^}= ̾|Xaۄ`0qT &WLk=?%8}{7њ{}o(iN VB!d"2MxDl= ׃ 1.Jd Mlh&D#U Lu j5}R*5GGe>yjAr(1dآ l`̳E(FRB!$H‹#;BBNre|DU٫BF)9DH|nŪdBDV_V[^IUi*ܫ\ME`ZhmrJ!])X ! h#DvX-"l V;z#斷 & ִr\uFº*!Is@ 3fRN>8\#krBeEaXM%O1$>>uo *a!])X !Uz {q׮El"cWoĪ{1x8ވkF, M? d G!APx謞e8Ik8%+j5B/\@ٛB)ٲVCC)jxcJڵi#-] ӌ)A!Rxlc7!ޙׅL?iƊ9&b۵.^6nTK>}w /tݲs+G3Y %;yx`j;:+5*\SW!@8rAܑ;pN*%fD~UQT6GURY=",\![V<(nBt:t:f֭de+!:*ъB">_~jDCkjIe ^`G;q.ƾOm. 23U\}[%+!$,L{km!I $5f2֨eV צ/?=,~Tj j(JF)qgnB"fyRD Ǹ/<<ULDʂ NbG;M80XpUt{6lxY&-3X1bԈ#*ܚ{&kx@>[5q$TT#SUO=UUM?#T%愪 BHeՒ"x i׌[6cv0~+5hyWZdU5k;z{oGk 1) 01AΔXG4/5_f/qh$bHej u^s$ $PB!Ȩhw*%.jzy3}ڂnٌXu8V~kXjYSɪUzQYuvE'mJ*l9as%_V`PBz6 'I80ˣnDJ!WʎHbdnEڎ|_l&IK2(ss/*Xn]F52QЛ*Ni ׀ !4XM.Wf jG٬UBJ!j0k|%Q;uvpաM?s%̇WW/Y ܅GE ے+|5FSTe tdk_)R7z7DgqS =jE Wm(X !) 'eSKa [Ѯ4mQ`R5X}̬[d%S ["GaY"TJ#dͬҨF֯bjX r5"=jq?UYgΫ:B!("w6 sM%*ɸTFq;ڽ3TJ1QDQ1T$F#[#p_EL۲ &4t(юWAZ?,h Unp0BQv!ēŝK i$Og+V8&qJ-fƴ>6:bjڍ~T VB!T T^ *=\ci'+Fq{.Mr5wdc U(X !UU‡I>ˡVsom-W6[`Nk믺d%$-ȝ QYekt+WQ$K:36$Ƚ)jkj#KF!+!T$EJɪ9 |yŮ p>e4|[̺5̺Ք~*X"$k)C-YS}-[l}Ƕ$Vr5+V`%BH8*ɔX(YI(U(OSH 7ߚOemhR, ' v$YFRV(t*Oih\FHqſrIVxR^yU@!/%m *o0}/jEHlvaDC M'6|+Z-=$ YS6ac.QсF&H^U8 VB!DGTx;SZfHl!9z?ɇan|[TI򕕰~eJU}j}Qح(X !vpc#XyVUZf2G%HeAGQ>c'. @*OEJ!"C ɤ$ڄ9j51B5:7›M{[ġ๣ hc]Hjɤ*dZ'Wzo몡\uyIJ!uPVjdF"f8 >/Ůr;~8O5;U}Y%jo֛N#_ǴY-[UҹBZXEpoIkQۧn^*cS*@J!(D@YT!XJ3^M5OR%1}(f.wf/Ѐ5Sm'*Λ&UWJ{{]5L6[pSLJD† nQZ5BdXWW VB!DI-YVurh,dbC7 JUϗm-xS y)4vCL&h*K֌٬}n~|%U$OST3lg>ejI"WTEx%`%BHc:%Tu"z0l@NsEͬ[CJڹ\ek!HehvPwu%6yֲ뱚UwR {dHa+!:efQ&'kLHK 5De*V(30 "(/Y|@  8!= QhuX%̔IqaJ 4L܉>dB[C(xYU .gCkM$5yCyQU; ŠXM7i3my-FZjgBrdJO&M.ozݒ{o>1RKTrQ#ZEeJAM_9ȏVXuEjofZU!BFR'b|qu-H4<@"ta̬[?bsʱ^uXn̺Ֆd%k%xKֈŐy?_z+\%0B!ա, (ɪ:,NNq.ΧSld%^xɪG6kXgzI}㶈:%̫:B!D^Fg߰(ᓴ_2b3` 9!:1}h!腉M'F{{O s#$z'n[m_":躣z] ZN٫+!<햄`-9IfqqT ;fJVʿk>\m74E1 egjHV{@9uHs#7S3)/Bz13q9]M*FLhJZ+4:/I \dh|R+YVY\Bⴗp?\'7O2U e)nb DVK"൝[Ʈَk6zDk}o.H:)Gj$ZU^OE]&ZrAB.}}gx2-/;3lT%%@J*fQ]>k7VNKڡP)7ƥD偨E֌ X1K VB!J]ZܡOݤkq= aߧ`nE0ʡdY@2CD3P0:u4x=Rϫ:B!Zr5A%](df#׊ehP!T ﲙK`;K4ߍJQ5.z1z$;jJ?B5$/k*@J!hCFWt=`G_(+Jmd7RCT;4~=1j,Zmj&\#HQ,q ^ B4!ݍWɑE\XK>G$hnGwT_~V3CN @FR%AյP5.c:+}I%b/5$\b3X)X !ŔxњC]vh Xux}DkH[zro]I=u,ꙬUH`LTM)-3+!.Tu3eU IDAT**T`6k}s+71}F (X6`ɽh~n>ģyC@һ'Iwl/0$ru^(X !4/gƵY5~td`Q;(ZC3w6|[>V=wR,~TFmbo|2}J0M^iRSB!ˍdNdJQ`q9.rL_;>+1xC;&C' UbHHOZp@$D'YS:-KRgWIArX`%BHIѕ,(gXl&3IA_mG؉=|5Y*PɪkR,~TMgJRk\u_ `%BjJZ=YIipk7Vs.6̭hcѪО܉ۮ[n:zQ967&+FT} %0!R e kZwv_%I}NB%\5QyZ:ZOq˙W jFh xIt 0Bю7\ -S$ad@?!YGx?`R | Au/&U3DBJ!hF 7ip9HVVB - 71Gp% ^[uG)V? *U&.94u PB!z+3y9Χ H;ViT^&cS?y=`ۏ`ފna 06|[zJWe!76W`2ICJ!hȦM jgGJV C&j7?z~,6oV mV=Lj(mtOi\y,R9%tu PB!>̱s#)`o%kL^KLjFhe/3wYSAEP=>?+B)Iix򦆂Bѐ7N"dٔ _\֑o?RuHŒM̥k0n5ZņOܚLe@Y@tbTIE_]B*O"Nn7*@$+eVs Dl:wwxwԭL@Js'f֭:kz|~t7VR&oZ 3B!0Mcy{?+n"j]VfB!rW4iK4B}cۏ຋?VhՄ{NͪzP}MTO1ˢ#CJ!%(.5bi6q+//%k^6󒥔DoSf>Ѣ^6|[ա$G1:1'AAQFF󅂕B!5FvP2+i p WLsDKj\ cfLg1U2 FM8oEWkC~t9) 3u PB!Znwi& =Rf2B1=sEJJ&5Lnj+ 7 Ņɑ&i4:FTBPB!`u|A٫nD3H>fd(=1~:N@e|nh CQqEFr̫:B!'`P4UV%8$v4B6St}%_4yax6+3Y!'ZBv5)y Vb}x3Vcf52^0F{],U BbЙ:+]yTa֑Ե* VB!HaV45>G0Y!3Y|rQKh)% :\Y{v=Z}8YtAU) b.Qkֶ*%#UP(BHMh ]=b1 Kx7# ll|$2 G uxkZmcf^VkkU\GTETQ BjBFpދ̽)GE}>~4h kl=cQZ{/f̺֭507R:|ԽJ~uNgYZ V VB!&[m`?!ȘuxҮ%G M3G}edՙ4ןoZ:H9X7zjef ?%uxB)8X VB!&,[, o[}h`*Z fGʡlYfm ɤtjXS)Q9զlBUS2m>T@BH R5V3vDeZ)}XdEl<"%yKvS2{M.|lĭEV}kYR2ZUP8BH\5!D؛ȺE6SY꠆ Qõ5"}PjHH9 T)㵞܋ 7Wr猪q[qd!i\zBB!$?&ATvK|=.8B'ISCH*z3Nv=of 7ߊ.[10Falĭn WSB]XˆY:wJȒfeB FiGB&\=VI1P5EhQ-A|a%M5p݋iJJjLBHٔGC̉ЍaD= H"1gј@ Td0F[7o|JY*G94qΤNn`WuB))LrOD0z Lxӿߵհ9Gazm<ҵʌIWMv˛k,9*9ؿ›6oRKX`+!Rkr@F=7$ xote}&Tp*Nb:Z*߃:dKB- r0BXD_:Ǟ D[(X !n+5\GZJ_; ړPz4SJVnT$k 5YZd .K?T.7ji|J_gV1#KJ!֜.=YpgPt&GqpbcuBFlKYeQ9ӵ ̟٬D9(,T_CBJ47`%BjNN~m3"a#4]12H$([Ez*GI ,$Ӧd-fJU)E+ф& VB9BKDE" Sz/*07n.0u,=|)7Pur0pk,T; VB!!CkAPDZ?;Hnug#բD~wdORk.4[,R`8MoSU=na(uڐ2g#KJ!TJ_h5\ pb p5"Zb$=0}lEb("\KZ~ I-]S( 6@2 Φ9Q* U"U 1.b+x ǘ(s :&YG[WlngWC,R4w3də+X[((\ϩn݇;d XL S$Ys-Jf{*+*h\X)%+3%+=CNMiɞz+i$)>۷hOGxN-4xM^@/HQիV1\b:$9+'F5og؎m4S$+mUwNf$~6g:%y]#rhP6AҫVEټLJsRu[F9MUU*Ҭ٢`su:GTZu>=h=d/oe.<3Q* tM%%_1xQd_s~bEQT~jBt˪fgjVO”B۫u%YKodmWvݜd%?}OR`a}q.utj`4a%o{wq&s,+LB}#rdlX}L>sa ɑ#wg}>S9*)>/[) @;B|ko5]ly==m=lTH}]B#vV5ƽ_}(Axa)P+Z}\hNu*Ś6`MdiVzc1Ρd'k%߱6)Y-*fQD>}L>rH Q9;b ""c|,fjx5j ^D4V&`BՄi(P)KVU> IUQ*# j,΂*T?CN Q Hz[GƁ`@bL#~29bP)&@d2RRږԼ,Ӱ%k!UJVßN^DVaЇOY޵{q+$kmQ89jiVpRP`V$RēI©)%VtLlʴD%~IMq܆pLU쯯Ҵj?aCRuZBxeBjܷ1Gh'`@" uX/PNF-Y.j4:lS&^SuLR)YHՒ jQɪ7{=zRus^5eLK$+R`.-_6Q($<4|\Y FVjSojZ >5O0S$kŴ:|jWbdK^=vU>hPktٱgЍeK]ymCIV0WN6Q| :Vjego.{p-Or::Lΐ":>d ~ϖ~+Y׬9,ZzZUn_{a$+RǠl-m{ fy@@0LqڻtȻXo!G#wFH$ܦv%EKg8dl_{ repy2M}Ϩ&x9yZWâ_G#h049ԣ)*m:iSy;fj3VEv<ܯl 5R-E_y_sO|i,$YB;{=xNKiܷ9 ) @&DX ,꩙Wʭr>w%Oi's34K:**yՑkcږvܓd]Q'x4+Sw7vMʙe+Ȓ}>};Byΐ;9̡l/63Ú v+L>?k̖˼kr3gGꬊu9ڥjHv1څyޑd⵫x&0x ]#5 .H݁ x= 6H@ye@JŚMemm"՘_ZrAFY$kJn}ySdH$ *M\j_UI"t/3ҵxZhY˶u}q1ꪳˏK֭dm5Zp[ <X+|9[eK}Ϝb~TD͒#׹ VLKhl*Y$OY-aV :-V$T=Mb;[D#+pQqs8_7qp}7>d=1g H7V 6 Q>$v.u(Ow\QRji'i,uYkrFBVIVb$\UyNִp,}M"ȯWwjN-kOf-c13՚,}̹K+kF:t:RRR_,Z\r[ Vmmbւ0MSg扼P,LL 1Eߞ"OzyOxn.hVg"sIVuD ZZvq֓mmK8ӹ< Ay`$egZ_l-dRVZLvTut, DڱΐĆ'y![2r\V'UݝGv^Sp]I:dz$k}<4(jzAd+r~ X0!^mqʖ +Ŧ+OjUwBʝՍzEdlڹ):fV'q@fÙ7[{{2rکMV6kKux+$>ԗgkg:g P~ X0>)Q_YTod|@)&;hr5 I4PnhiVs+䒕%J{S6Z lz)[ޅrZNkj ¦fJґ5FGZV};d=k/cs8ӹQ &z? x~Pl+ebp*5GLtap\rId9qyGɓ#{"SOzaX W_ ~,##9zŏ"rnؿ&l(BTZ,m;uΚtsX"*tSþ.o^U2V-=3i;>q~` zؽFy@)4V5̎o?C4#XY5r@Zbu$ Y,ɚJ+1.YM%EwOeΕٽ5k-uUliye:4+\?oy'OГzaRher-Ϲ|Zs1r?^} VfJ Y0kԿ*P Qw KQw%J%Xy(U2l+˱뱎\{FB]3N^ΆTo7'tVy3 h-Y"/&s9d}[=#zLZ;S(\spm;<j`_"E 75I6PLJ.Kd[-ꝧw4^%oSѾ'꺞~{:G}[9E7VꯚX!"*J>šruTZmhWkm?AhlY(y=ߦoa~$W2j҆'̬Z->ʒ<`T1i|[S#u HϜ?vH+'T H*e$lzb+5uX W9*m\}iPJ2D]NHPXTPd&֕!e?u!['sje\5ӣe?f8R_zljɽ?_S@J.jeH^rP|lJrR`:P `(pP׽_J@,ER\HbP;l^^;"֗U+Uer_{;YI%)c[9v .pՒT+`1l./ի~nx;mg=! {objpuj_ɷ^' V͗Gϒz]"@[ٰD-u4]bCI. %xwԻɹ b !HygA4 U%WLT,ґ)oiUU j-*̬~&s6If=9؎\g/2婌\T'ayzvhI6hO5N#8G+ `5 I'룧'u{*AʷKL&B5duc= }vu|C)-:w޴x}[G= ^X$XsBsHy*Uie_/%QzT3:PG{y/jD+O:݅KjJ5AbuYYų!!JXRKڥ1qZW+i:|y/ұ*њJz8Eemm,d}Fצ7:GN=ﯘb%j4{/r%Azu] X`WHjLK%ayyiz\($o(]:5p3겆;6W5YLdY/:b[^>okگ1{A}Vp~憎6x iІA8OQƁ4tANQjRMּG:dW` X:rϖڲ)Bzr4w{YŁKbU9n_AY3krU Z16jw+m#SN/J, g'.Т86KͩDDJg:%zޭk# ZAyW% _?g_X(%鴕H}7/IV[r\uD@YB ewoK밆K* 0KtY.y=V}ZMޜڮUke*[8*WuUV J1XR |Y ]ʥr4'Sdu=kX.6ؼ#6ɖvvkLnV5exs VG0.͆e2VNCȕ V6U9ɚi*K˘_Kޅ V>;'[IgU901))]ƲTH:'~N{Yru|4Z Nr0>rXBxH:"D4H{$kyֵE>[>r}:poZE~$ZA@ym@S\9dFBSHbkbTrKtk\r{BkkQh ہ+VOHr%X)J}LhV˳4k|yv W]ʯ^FR}*,'n%>U]c'Sz=yrDe=B22s]"W-Ii rutU4&?7,q2LL^`킸BL<ؚ/v6-S{V{5 OTkQ5Gzu&8 {VNbjLuӫ4.Q :lkt B᝗ \r|+V*pեrFuqhHcn ch"u"uXIw>T<2>i!|= Q>M^@f=g\rq)3!Jל[=V5#}-P> -AS1j&Lʔe\cLZy#&%kN^DFQO2rΓ+ۿ\tb</R{a0OkN4|pR;lq\1].QӢ/,eZ6 hj:%Y~SS;VqcaALQ.޿4jӆ|j{{8Rm5l#!5u; )TSwϗ礫芗 `U/d2.DFDߑcUd}/f$Yr ^WIH`2~u~vqLFHۊj:_v `T|*>񲓬>vqu{Υc00qSKgo ~;ҁSdbm6ő&mASX9) RxI0U0.Wy5X4!05ՎXx4n䂂X}ByX;...i<˩LpRyi4dR*c]!kەRU[vJ%rlX->Θ~a&^SkzÙЧt||fr$g+ Varߦ@S6 Vl0ҫɆdZ?X 5>)* Xd)!_]ȱ$odކ$.)Ś 5Y]u},e^L[yB/dIU4^-aO]29MerV_F5#J^'QYcOU]{b\bX+I^6`KC $h-mG 65H`>?_Y5Xs 鼰 /`]\Գi{. HM4*%\ffXާuSԷ<^{p ܅zΓw9G995=n:fCMPS1*XVCU|+*fy%W{^Ɋ\I1kf!BV^eIV;]":'?Şb8MgBMVQGN>$YE}қ6|P xm/MN2*KkAF\{"YBM߈ڬ%򚬹`XReMIG#ӒG\:J:t+jJDdN2U]kWq%Y@]1>Q,U>v?[ۓ-ź'g+hos99lRNP{9@`3>~z<5Y& •G\\h(FHd}7]1 Vt#Ws_qj: _qѩ N9W|WTg2b+$+7+%!IsG50(f[58;9l J {fjTee%ĒCR=2o9z1$sy+3JEԖU;HֻR3Wk5 $b5la̜rIֱWWJm[ey1N?-Yindnr/*g_Hֶbzy8V``+NjrX%b@W=~)\!&Yd} rkN2%.@eH%YV/_U=sX%l5jM’N6V_HdZYIVdrmɢ^Xnov-ZE 2p \O s`)V"d> (>Hr5ה`ѐb}#W tFota^\uT@+F5ʳ(XĘkQ~mg=(塳Ο]tTKT-ckeFG$kQ.7p-N݀RK<HցR}\go \O<V< b%^65R!VGJk/^1z \ޘh}k#^*@xDkJ^JdѪKdJI*2)S::Dzlgnmj+mSdHϻ^dMX$d4pDBGZYTK)#J3 dh/5&v>-zH~O%X}z?܇~Jzj*KAފ: h5 \TIV]*`*J,EkrOkmV? *:;v R2#:[;%q%;[RXKn b~Zn࿵Ld=Oۚ2Q9H׻xV<1XV򾐬=@n}OF&γ#^\譓X,jZ)V.X5iF&ZTV[ԇe3HJ)E} Väd%7`U$OdNYJΕMn$>ԗ1%@=KoF}`P JY Vd2u^>&Xo,z uX#E*."tu9UJv*1^&%MgQ* 1,W+[6CkbUUOϒ[.UϫrBSzW{9h:J?r: Sv3+Ώ_ S¢,3JDPw5 RA!Ӻ޿/zSIX*]uYs ֘b+%kz%}I,rfi9=LUҒy`MQR_ٟSV_FYx4kV\"gU~Njoj./_#>sdʹ֟GRz^GeLʽ@+Rÿ$ˁC3 zU&덧Xtu+ԚQNuXS-֋%kLN)VvLʯ^/%?"[IZk*D+5+eRLsHQd.V]p,*7*7bm0XGkZjKy%ywtc2v~<~@`>~f6U, ܂d)VSG,0(UY*KrK*:בw:ŪRO2DoJOL$.su4+Q&%+Ϸcnujս;b-8bgJZh_Zj*,xo!XwAaT*Riq;C~JaJf*IZ^!:$WyɀP&sC(T;*K;`pńZϮ OΑ2Z+Ӡx}H?#T UiTQ8d}9$뾴֟1ץ4 X}`n?J7C/z`Rv+|BJWOIRbvXU[Ѥ՞W,_+$k1c-\VS)\!eN$ZSҬ9ŚO0']GH)FnYSGkZG=@ rzbM/z~xދRIH6)V"9UQ& H֔^Rvr#X4a}jfE8cDa4,]JVbUZI[A_\Rd2|RZ#z>ngZk_Zx N 6o_aq /D?VVNjOLv m$X)ƛsd,$~am|~S[,ylB,Z` WA?~uW+)[? v27bWF+Qf~D,VӵߋZw{eCbLW Ⱦ5[Q.g 0.To^Nx{ZdgiVb`eۉTav8k̏ Yۖf55Z&^)J]X{|ƹ@nO }8;r߷rM X,:ŚXdkAT)YYהb]T@h㨣VeXu-V.YsL-Svkץ.P(:˴0U4 (K-T-Rህd-OCϴD"Ku<ɪ71[~Se,pFpsdm6 d+3KӍ\)(Ya7:k+J֘b心h%bzse-V5}x""P9.Z\p[I5^_mV4OJXӴ͐C AX%P*Y*1ɪ%kJTs>XWy-VrLJU&XUUcOg$%JVgzUZiWS[]OKCl%+!A YG+hos8\d\mV4G=ŚX9XuvmH^RD_;IVj5XTnR|)5WUəȔu?_/FIV)IIU)Z㱅7SLԪtm3%oja+LȫHcigmg9gt)Ay`VV& IDAT!SY de$5bFz(|aЫ%IVYGJ5"]XeG-UbKup|[b"SV-?VNKV)We|L[q[mk c- nWJ?j޿@VwS?#<9>B_-DS9r )$-05A HoȇWT@(r%j\D?L`co}l.,3NjGƳX;+ضؕ_?v>ak.åsqpy0i-^ljٓGȺZT:qzNݏݙqgmV jZGҖ83^h>H0WEJb1'Y}.tCbە}FWj$YcM1$#\P9;&X;ȥ pI,FJ")9ekS:X~|(O++Ҭ*cyV|e}De+-4yY~xƮ=sle~6Ig$k;}zp}$t׶)P} Xp(~#Q"ZfR5H> +d]]ѷ7e-_Wd@zi_>tunb-1_[IV-#tyy1UM_sX$$[̇Ud+~]mq=o reY>[d%j/ggg;tmc8_?O<A@)gɇ{'t!_kh#愬䩧﨧hؼd@|.)媔9ZIYeȓgO_/ ^-0\ Yځ=˽cT vTQ> s#Iᗮ\.!qsjh\M`=8?~"O. u=|].Q9P*b Ԏ_/7BrBrړ>(Y)Z5}|J;% ۰}\ɽx X=( vq0/.8u,]ZǪ[ZlCLB"/e0-Mj17DZWZG_._+8RF=CtA>RR:c>Gz Xp8>~`h{$'> 9;G7Vsl:Qbzzzʺk.KV-Z~k. VϒRjF_ ֫< ڀWkPR5>?;jWYnwZK֮ZBoW,9H$XpH>?_gjxTDc \߇=fryb3!bo7fnt^z߾D7#:,kȳ֘br5iӫ.` J$wIURܹSh-ʗˢC\&ӥ)_^%*=s6ٔngRwB9mJۚ2FG9Sÿ@ $XpXx54U'OzדY}XQ9VX{SXHO}لRJt%`M!%+_VN[rI0ĢD:LkNPswptyzճĪD~k]4ʎC>_ UK)]עvO掑d=OۚV3Ƒzg??pX0@ǯ?L!\kL$k4Ҭ>FW^fWc^ r̵ԩj5fYEmU1>jr:eLөr~y;ӡJĩNdj_nClqǮ*51a\+ l~VmImZ8R_7 8HwO!Yr1 zb#c5Ao7#rW%dv/!ZK-ySFܷ<:l+0 TրUkѬ8>$kQ3;*ƴri"Z=17/&y86>5nS+nb:$yڶh?cJU4o1`I?2-8"{#kÀWDݲTP* N}O;Y&kV)pP@|ofDIn9&b4QJ!zl6(hVY<6-yRKЫbJ&dIV![}d.1"Y>;CH(UerQm14 YogZk_s4qy>ʫ/x:z\0NO+եH/׍n+ݮ7ޮt]W߆]l+}[IfK6N-O^3eJzs}VLUWO'DXU"(nr/|ez/_i$9۷hOSϏN0ձAgNj|q.%S|mx$v-L_o!z+Oޮt<Qa `M_ÿb>b{O_<]|GP%YzRl/JՑBR. Ǫ֯c%k9ducx{Ũ_cR9]K}eiޔlu4.@9[+HcRGG@ ^=>(S RjRnx(?8O%«a`[ v (QEKٔ3E}_.?b;c["Bk,+j S]mc_'{|/}dc{+$k>@Ibϧs|ِ_ܿV}Z'YS `VRU[Nqޘ<8V=Y++w}ڹ{_Ghey-J$XpZ~Oc^tDi/aK-XoWk,Ѻ$W޳wv*WUueX :RJz*j/{Tﹸ$Z)Nz3̜zB7\3)1H{)Y|cr5mWS"vMJbYU Pf U[p7Vtu{8qugw`qt!wodKw nuP"'9 pT@xZxxYDD'B2ӊÛJP"w\HER H x*z95j*6_z|ND4ܷs؁r8CU( 5, A45@8c2JT>٪,W؞_S7m=S"\f}r/ap ^=H|~VJ^L^9}^}|iLn}/a*T@Jft˒ԓjtCJHy r4N=4+O(Uj5$^\D+iZ\G/>R]rvj=˙\ϸV`gb}aky`xHtP DOW{jJ|EګWQв2}J{.]\6HהIחcd)d 0Ir;&Zl2\.SGV"q<N~>:!t/]m8mm5Z\ZG z. X|~\_Իo92-d2/6URMo݆}YnJz-H3F_}ۇ=1+Y9iB$Xt"Z$kDk/>itXcv.>ƴ-#l@vZiBjE<~Mÿ@ V ?,0]+ҢIrz&;K*h/*Ad{?1) ti#)^\w!GS&^H(],qt)WU>RRS9LNg->oآKGӺjs9ykS z>0^o?w|@+O|+"7 $V$w'0UG@Xu]uS;Γ@W.f̥(7aryXf%{f+ T*-~ȹ$/s:r]h>_Zhӟ-PWa':8s=eJlq-6N+jZG7geO*>+^~SOeO5a%gLz^WƾcuZXWŏb)V9ʹR=sMBi&;=d@g\^:K]P̫{V\jed5n#t-ϥ-L _dƫ[ luF Xr3?0hY(kf\ޤttoEM\)P5ʷL<,26՝=M>S2kLuq$FTe( Jpe+HUuB6/.]&Nƞ\丛s>=m"ZGW\@ysx9J8& = 4||XK T*K8V49O:%.m,J'(_0}Z[0d@fX扊^&(~8a}b>/ G_|J mUĶVC3>+/_c.[s>=j]M+1ga99ԟ߾?"zF`K3LKSd Wt.ү>OJ)Fh(Mb)ɴ2r>LtM, ” L%hdo\j ʦ>R[UߟqMuݟV j9#q)g<29WW +^d+huXӫJjӚXRRRWWw_-Ŝ|2DqД{uYY5ŪۼNk%ek]U~::ԐocZhע8:;s$} 맨a.:$Yh-ekATIXF5J՞%f( :fF*Q?xgIم/HV4?RzUϛiV2ZrRJN ĵUk<ʜg4!ZB-΁_:rd/,D13'=>=jmMK}qfd@@x$U;hf5`cՔ>|߳NYuR~]Z5nI j7/,`_jղ#?̲Ū,ZGu̸_WM@mMK}"r@I)V/ea*O{)Z2itJ4zgY[}UET/k%<x=_Pl5+ͪӫDh%j,\}yyk/C%W'cy +)=}<(Y\$ZG= uy-jV"dxoI$Z{4kLUu[\9I2٪uh%^9)Z~Kt,*E r|Z`zǜɺO{Jۚ2+HHV2}V/hX*L僻E["ש=}tö0:6=S|F.Wr<4r\QnF,4~gm^+mk?hGlH~IA_' ͡F#*+9*kj뭦EIzDkN[Z"+*LnSy\|5k7-j_/,*k]9}\kF-2r\G׍μ_[o-` IDAToKk Lq>‚ :@~_GQrޫ^E6&Z> PE+{A6LEضg}c5йg=#zpp_:%ZӢRl9_3\c-bkGI-_?Ym!bw_ɺO{Ch?Sk f:DOJxr(_A>L:V2 :aIZ坋_b'=9e[ } U㒵؇YV6 zQ6 /S+q)]t{o|zWzurѥ>m٫=X3> H(>~РOD"9z=Vk"9WZf)OK=͗ګy҈#m|~+|+c)O>bzri\YٷrϏN4Fτ`#z@jcKebS~mFUF6ZӼYFyG;3tB[[Լ\Wv8/̹ 6ߑ_uvjOg>Mq> dZ@|I s^,![\d%2eL*)V[R>.$Ysbr61+S\ZlZ W%Q+BTo1!V}e5;vVH*W /dmڷhOS@28+@]* G. I9Ժxo%kMf&V}_~kp޳iEzk))kZ1'pl-d+gWY?Sν-|6!+ Ymgn-Z-l==+@]*;K1qߋL%KU&Z-9%`:6U`~>007V2dk-H+9%Om7Z`LnrFo%3RhowGt|@` Ӟ/3gIVbK^pU.&V|׈5[>O#P3dk]H;%WGWw7s+Ȇ_l-Q Yk>XاzM}.`,z2-[IJ,Y:jI$VYϊtO}B|ufɎwo2[RyfU<=},U'䧟fB*=4w޹VV9d}jB4-g G@߾?B"|O7&VuZuN$ZNz.>ۛ5Uk OC̑Z˵cyZ,2RցӵՖ>9jJlƢňKWvx{{DnF g`^V|RBHIYKdU1:=>-|[C[™ΥE _g* `ϯE=(E)-a^M *hA̖ VJ\̕琷ct{& g*W!?O}wޭ߿n0$k[m6[@-aV@=Uc᱁\Dw1Hָ@|^ `HV^*"<ɷB>[rYbn& 6#{>뉒IUb5˺wo/zOx*?d}G%[ZGeJYʪ~< `>oޖ$7;l,EŞC[bbuY1fBE=o dei"%uӽC=aq=^t ?ߏj@j?Yi`׽~*lm/ Z񃬺Ak?lt[~mf Zh'S+3D*GP&X]]O~vO:5c?8R2)9Fڹ)ZW `X?\yzwaW \i-Nގ[ ]>[q##;>C<VxM6]-ϡyt1r5Ȁ漢/s1Uؕj>)]?$`-V˟^s Y6<.0 W;!vWa=Ԗ̆yY/8fC_378f/#yc=rfop'Lg$d7qrr+VxB*XTydu*\U~@]ǰTڙqzǩjtN [Y3`Q?=/o!k?yLtB ltݥ?B\ǰ>^un1;]8nɶ1xH(RNcOY5rek\3Ua#&N7Y?VʠU\½\a+,н>VOvWVeCVM:V[?7;uWqt٩e6=d;|lv`&znjf^zaa5ԅZSB%eKbݫ#`dSm;9M l`vV[nycz U{(]x|еf֞vk~,*Rkh!3֮j8`5\CXc?M\Hn!Uxt]]zf]VK4;qaC3F/\=LE4+|Bl&\-4j̢` Y_J j;@j!k$S&9<7^ V.w@8d=>f=>Zu9]M52}7ќuՎapKH5KOH W@Q^-VDj.d7cݨNf&c;؏N,|׬g g=ߧ\C7DO.acJzC\I'IsC*l$6򧗷?Bֺrj=텬3MY#dt`~N՗CYmgi Tؚ 5GA"d 6H%a4[@6ݫpA ЦܭǪ!cJn Yۛ>KUߎWsjvxkW9Ug…]saK.(!kIa+н ].=ug^z=jk\"WTEf1 uiyE1C3=3dMq/Ky0)Ro0PA*p+eևf=l?TtWfm.G-r9a"%JMu>C֘Ak 芰#^+V!z! v^9WFz͂cX!7xpt̅91gݬ1%9.!mн%XTuOԎZ1A톒UC:R]v~߮܎3-G-=T!g-0/9~$ۗC r Q?ߥ2F XȪ}<~P{k4NAQWy4#j^ NO/< 2mqj=LeK{oFX, X|A:1y <ٶ-4 W r$ӐT`p:0'7E9r YC>1_)I/iIs+"`b{ F'BֻzZ?[PGo5ci]OV.&jZ+}/;D(tWʽ.i.s Z9p>6zeSϛ2 Z͋G>ōR^aq<{꓿3\]$D5!+ݬO6_VJF XT6ÐuPWj̓h8n^Kw`cu8pFt5u_rYfO|9p$p*|!`rwyVjS!i7hV:wj5Z_dW.d1vj`fAW}t?q>yX +pݥ Y1}ݫZa>hn+dUç Vv:Xc8vO:9ϭ59UD Uֳ(7 ԽjܦY=eǪpLT!+ݬH\ ]'V ?JN:(ZYu Vs+ҩM` ;e Q+SگUYL(#t pdbSmBfmZ.T}żxgjO>jl,rY*a|s2cq/SQ;V\l/n?j$d_2ͪZSk6)k5("s-M+;p/^:~Ę^ Yf-o|7C{W+@f.w!Rc!kk~- Z5RIf4q,øLWZVX>S1G7y",\f,x]ިTFz(+@CֻnֹƋ&44fdz+i>|c3d7kh)^~o{yXy8%{dw?F}:|Zw ÷Sx,c7PF^`>.ݬAGl y+[y{!dљ]0i%<27RtMxTU`uclhV9B^WYÑ0aot.9 d#t"$Vmlznuf)UlofUZڪ&\TX TNi8g=aB\!+ݬa CW}W+@!kԄcE؇S5q}*j[oϋBo hGle^EhTw Bֺ\Ъe/~j4I9{QH9Uy{Eǵ1CwƐ#֒~g6d$÷WVU't",VB\6S״j$ N2Pוn<Ց4)k  \@*b"`(YQTﴗ Pʸ+M ʨ-?|k̫ns:]u uKfMJ$eGq~}?I= +@v5LzxdIj]_ŒI uXx[ k, XV+}m7Hj|noLg(eـcǕz69tFH`ΪpMh7|_l/!\#i.r)5ݽc0i򸱎=(BWo^E*+1*e=5hmw_}ʭpz⺲dxHTnMjz{YQ~4]j(*LIsɵ(oSx>vsXԯqiWDY{)}67f9\:5i{Ipir.Zc#;~>^nbwzKJx?y9A[JU'Ui`XVKyQ6ֹKIk_Z<' WRK˧qKfmKE=)u^J{mtp]^Ej+uTJbTM씴PTXky9e||f-k1Re%L IDATTLBX}-ݫH`Ů޿ Yc]ͺ:m4eh6ül WEw3\|mJ:TL)?=_|$ `XjVgl'VuȕrkH_6N'+9܏c8c8v1I s#.V;{t.wꐰ*_!kw#Q]SA"\ U?F5%`I%k`+HB ?!TjsŰِT)g`meu?UH-"4$!`RC:mQ&\{BNYcSj(Yyݫݐ>d^ h~&->wnW8l־P!k ݬ20GtfieUB cȪԢ%~l/t@7z*Ix$6rJ# \ciHD mj:kei,Wݏ"T:d5,)< p@kfu-Z^Uς=~ūc,ےcH*- `/y\p΂eiD QݐU`ݬۘ?s ja3j]\ (5:2e#k|$#`$m#M6Q懦:0@:3YRa (U\9p$t +f=:Sۋ#jV2UsTZ ݣ&J:?V 2Is1AHݫF>~cy=ڭVm<ujc{pUm!YC*}ـc8Pt+e`eUF cW\M=:A\hZH+9ڮwP}nj99.ЌA둴 T#x=`i䀀VׅJ*N=8U\^ᰝ-NJ k*RK4'hO|L~ԟQ^ꍊY `uAkc"&> 9!`"W_ͣLKHť>|j\wTE W#+_=?RtOcL Yy!`b!kc"hd ܯe"9@yE5ʒe7*}y!`i߹ص`nRq{:t&e]J b1~+v$ynn*rD o> YV&ݬVf,mIY6]׊n20`U폶|D CF5)~') y~XnVVYJ}$pU䊀uBV Z 6XpUs]k[ݬk ZScJstEnK=+8J-+T;H4\|ݳYU'nfcJ UoT,  AȺ4h5WLA$\gڠ51ucN&bAޣ{y#`@PW\/,)JM]tkYYQJ7ڃV s\} t]d#]EX٣nXn]Q!~zi6Bw'i.sr}Ѕk7*> E `@!Rs )VCU5͹.F{"V9s1{/(+ Y/8 P4vw]ų:z.JfmƊMk%Xk׆BIXl:W7KeV4[Ms^Ol`mZ{K=-m>&2yoLb*|zV( +;.\7KК2V,Nav&?KyOK|?8'[%C),vG@itfpɹ}sA?AkZRe(ھM= ;W\Mq8.kUU,C5L]"\EX ƢU)GZHᾚps(G1Bֵo%r!:*JF QA-3:@4YJLidvZ[]EX UݬcdVM7 |r>Ɵ,(Xk@ !kS}יņ;Xb,Jo \ \@{?,)tcc +ЅMǏ9P)pJs^.X V./N:îB] H5RcJsK`MX ٣cȪTnVm](/bi!aFk}:%eSR]{ـ0l]+Q5eL;JX6 Xqcc3x߯YF }|@zW/M%ݬ=$peVU'Uig凗n;K,BѓKo+vЯatxALuR)ݫX7Vљm]V>7"a|L@A߱~Re5XPGgZqjsOseZLInP,}{, HW^ͣk;c$)I:l pbm#h?R\.ѽy @VeA;>+c4#OIρb2O9F?G|X9:ؽ{C+vX삲"*uc-۵X}0ugJNXP&d].R4uf ALb ѝGZ)ԅk8o+VWuYCj-RAk9ǜ])`U!뒠fvBYk2ט,9hM}ITk&d*Ç\`~40Բ{N{'Nzqiuc}`P&aHb"&l޲40VR.k[ԥȥiAגnumԁx:1zR>$.%ńZ?_;]`:벚  &.JgZ;JZS=sR؄x6*0%_PuWXȮVOWAk;SupsqZ{ &rchK \}Pt;m/=LPEZ { s0\c|MW8X٫o>ނ5w)S9**&X '.a6roJ׊8XĎݬ~\1環"ʪѝKsu{SOLic|Rƥ[c+/@ A uͺW7ܘd,qډz0Sb8vNG䢔O?I=`XᬻY1Z}cb-z;o9-U9V@:@Y֐+\6]%V6D:$u^dr~@Z@FY|@c&.GsJzN=sIyYͪ]0*DN$ժN^;Q@kK)k9s/H͇Z2>uYBkbf7bM9~ T.a \ `2vz"-h2UV]%V!IkVL2ϔz׈p(nVB)HywXA<#K4DvS] ` qzwݬK } EZb뜤#Ra#9B C ff|@L#&! 29IG$F^p(jpـ{J&K!Kb-Ly^IsqU9hlU?ۦ V`n9!Z}p?U?M=R+H)%ސ6%2>~vɇZRfbDO^UsxoHRωpX믯ӟ= b!9X#~NR Aȹ}$ `Vӟ}jͪTP62#*2s|OHoΕ@ Ӳakc "J"s=/ W|+^w t5S\8s1QjYya1i*Vn&sXXuv?ZjYyIL2HvI 䆀RjН+&*jt4WW<8,p :bOT^ZEz^:g*/VZSuM*NN8M=rRDYs648"`0l@?h1 9[ZjYy(^.4,@ ``ـ91V_Ȍ.RR˗R7AA 1Sb1)H*,B)>xN@9XXZ64pv?|n%W%[hc<#*PVN h K\E|nex_y1sބ@yX8Zͪ}2I1Av0R%W%k ]TWXk~+jR{ (,}=ORO@nـA pFJ K8s^ivSՃ*4@ CЪTд`fΓ>7Xd gs+*P6Vx Zc.PzY-9\Wj׬ @P_][uO@&! Eh *^^Ap~>!$ W ` h3l uȢ,PzY<@C +6۹$TT@d 2?8*>Z ;b>BBKz,S{!޹D aِ&G XCX9J=*VDpZn zNwW XCX9t܋eQЪ{`SH8xy5TcٽH HV5<:^CֵTg)&$\+SKr,K:9KU V]uګo76 [|2CWo!*ǒαsY"I @6V⇭)o`RkK9R#p@+ Z]%˜BֵTg)瑚$\C [ARaTNw?rX*`Mc)ZyT@ Vs Zr O3\B5Uk)!wzp+W/q;U3 ]+V-r(˽!hUjy`* M ` VPAW72<9ZkSZU$wRw!`{48M6d-*\"ϽzPaV#`/j~Y+0>yI("|"ΝpO0BR=މz豿JWZED; jdx^udUU9O๳*"TIDATPX]:!jN YKs=*K0jmHZZ`F!kipp, 4Vkro6\Hɩ:gJs>@s'\+xr_-`MEvX |NΒb"`@V/Z]csgI@b]%57ssRw, 9V6_ݪ*d-N*IX@C^g\~nkD !p=~Nt?K^~~kTmgz ]:^p~@*X S/jK%"u?UNl nh0V䀀2wX4lUO1N^?Q$ѺkpK8ωsk@NX Nakr'e]SuN̟U!`B/\!p=벮-|5@*\ tֱ*0Їc~i%Vіrk@X`eܫn7t`=d]k%[y΁`@ X`[gX2O. so.L VR2lm8'?4fbUuTjYPV!lץڴݬTC\U%#`Lꄭ:.>A?W۟*5A-S*㊝`Z4adwkDz:}tه`$j`hZ[ZY3 V+]nuG+fͰB'Xvh[B`UAkFyR۟lUfz*+ Yz5`XIw۠W?(dL*rqQ?jayoКI%N X~IdfR}oUՃe+ +cNooi͠&TwHfRe4A߾U.!QUM wk݆/eVՃE AV? ?**DD R=u_M=#M}gx&^h4K O6ſ3ݩ +~;|쟇iPVp_ROrjě#IENDB`hkl-5.1.7/Documentation/figures/4S+2D_reciprocal2.png0000664000175000017500000043744315136610373021307 0ustar00piccapiccaPNG  IHDRL`[bsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx]\}X(Ql[=ezMdKBj$\fs JQHEj#J*;Jfױ!1RX{J^,˔5ЧA^HI&gNϙ?~P>y=Cp9R mHիSOG&dY{(Z^^  (Z^^p(ɄK,`Q|ssZommMΞ=&P֬gY&DDD!A(ȲL>ϋH}!{ #KEkǧK@AeGq$4"@@#n `dY&YƆ C9{l㽍z)>u HիWeccOW{ꩧdyyYΞ=s0.a#e١"BxBe|i(TDEvq]g,$sիeY{##@0^|)SO=zcmX4Hqm#hrG @LYM/q#<jt XXŧ@3$ 5hG`$  XG`{իW%2'><^Dٳ]AeY&G \˲L+<poS1\`n<2LDDdmmM+e\zU& I$s-//ٳgի1S˲l0 @0z)CR#8{ ;'UhyyY>W#<jt ;W^U"h' GF\FHhDFHhDFHhDFHhDFHhDFHhDFH "/[d "@^xo{,$ }Q(]HP »t g?i@,%}߱I"@.],-۷wV@z,k׾.y]w%_Wco C`}{ٕry≋!@/JD'tDx?$ ۿ}IzJ$G!""GO܍@b,|o_z=9rdI矏+HUvwoK$KKGڵE B?zbG""+"ғ#GOS7s{$ ر7YZ]ƖF@RzŻ'X -^ODDfH}m׾e$ [qǝ6)툈矏GH  ߕ⯾rѮw diiInݺ%_:Hʅ diii3޴ ֭[\B`_y]^/Ȯ&$ 9r^+嗯^oIDzrֻo|3v HƓO>%G~[!mi'"=}6A,{%l>HKKKH #@_;/aJi$+׮}-F AHwܱw-R)l۷A`!|cwZ8vK_z[/x$ q=DD{%_ GHUows`=H_w#'ܾ}[>ooD% »zlllښ={6v 9\FHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFHhDFw@#Y~`YN NE E@-cɶA=yε`e9@uXt| @P oaCl!ǁRLd'<݆sFƯ̄?{ 1F7I,ݽ4֨_͜  & $I}`0FEQv LU'Tz3~8u(l?V z38C *"qCHri6T:yL H+DubB]ҍ֝d`홀vE'e9Kf p1$*f9{ Q:kT\* P @dXWܐZ1!ǛIiz(LTaF_fO$"]D..I;d<۹.o5{?po/w{.a^  j/91$rA4OQ*@'VPc.~]n%t EdfO[F)բ/'О[cw.9 |b$` Wj񾜸DZ5Im|M]/r͛ƛoLä]_U€CH@0 Bvk2tIJ HDe`T*4rq׸Tǧ0|u|3_EN.Gs5 *dGv~#C n ,rv"B]LdN14Ҭ= ȕc6`-ִ+0 6@Z#oxBp(%t4.MKnIAx2 鴣(ҟ룎Z5F)|2{*[q>4 6H#P7vpcnMNBC*t/k-7H"HB$Pc`$ٜS9:FgXߵmu98Hfv~#׶$50qy8 1>s]pYA >06"$rSܑk$}  5Fϗ# sbuYe*FSI3v~B#07i"Z^mI e4X.W:VQ鍱CGDn:>H:+gb `!T^6k?5-yl纘惘Z}_sclɎ|_3>C7!@R D;ͯS \|W5vZ¢Wt#-$DF#gcҴKuONi)M!Ğb8R `Rۏkow>$m!.$ya]υFm;6slu1U Gurç؋#Ug[&rY<"@@5 WB^rV?(MCvIjpc^̹.k8>GÚρ&O7<"@@W~8ڥl2z~itBd;jXG1"FOH x)F~lR \1Xsb̋9e Gus#jXPt#B9A0\t |ƾ^ҍM2Z(slMa:Q $Ѕ=6]>%m `ޝ=k"z|@h705Cx~h]QjlG%mg>|&V` ^o-%<}Ufeo"Jh2ᒵ0Q: Ф#_~r旹PO`gGJ:J14J(֚1B;uHQ {k߻FQHH7N[8ljQB5V~y>8 kbSsw ׾wMN?%mCz}bGFn渘]GVrçn+rXrysgڍn @SQ2J94u?F.rxhCF]٧}e9 u"z5#b)m2źDmQBb?áyD-0&}t5B @XE`g>1foeՑzhT\-n.Fx+]GmZ8~B>$yvjmlPM??k}Ͱm<:G(Pe_uSx\vSpJH>:)mHH%8ul>yʗ1.s]QU^iѼG)5)a" `|HٳgE66dO'ϋ,/7ϋtDWhҴ|9|hlKߏ.C紻%!Rbo=}3zў񍱬5y^]"rHOP {z3zǪovNL1 LX;D.q~޾#_ߏ5b|Y3ncf/dG[72:^אQqo#E.S[Pd2ON&ǶǚۜS㣃X96\pY'tmXXpFٮb^5l%;oș `>ã 7ƒݨ)j}$"\D#cms5uPuCbxeΛ;K@7QXF_5{hsc?D;f$.+_TiLmVo~ptcR=q񐗩%j] \9װh^6OQ WtAHq tUҵqɁb7 ʖ<]BQhXo=yzSlR؃O[;掜<~2ܢ$nt}4HF_6R ayL\} Y;z.Y(v`{}[9u)0$.65 0DD&v\W3X96\U+DkUpvkH}l%gNqS:d!rgZOj8m\w9Fg\l纬f׷fΛ;N$Ec?uMDdm_pFF>džb>녪`,o{NޥФ"A񍱌Ir'z8dqT^8(:rqƛq1e B/[,(ꤲ D 1XF_Iv#DL&/EA K淝}@gQKRZ!&qx:3&}#[nCB #ÝDar8x\ul<6֏m6Ǵtǚ7c3|uBՍNqOZHQ]Jl%'< @L)8upT|^KmuO25Bpu|׌}97&8JcT7ա}_ˮə3H DxcH'8*ln r[q|uUNs*]1t|9.绪^5 u4Q.[T5$@G:O26KGmp2YnE B9vʃ7ZQ<)̓vd.es d,F4 z_NVܟMkc5-_&b~s.Ϋsxys]Q+dkiGGq׉TCr s#=7EU_/EnLk4keoyѾQ9Ujs]]W͈kudl~ @pYpri|ݘ䗢 gn=;>hԻR nX$zxDpԍ53D9$GGkky Tt mlfM2˗|޽K=ώBp׋F}9Ͳ/&}q?${HGuWWpHd?uKЖq{"K TM{s}qcMƛΉ=g-BX| ]_uE B11SU$\^ۊ"@TGZUQUTXF>67/kK0*amhdHo͖u#gxSi, -J C>.aаd7 W<:_W=VO!dHōB$M:*k3f\5| YzK]BuAWق!!@P>G.G/a|y"{.uC5sRV"kFXG98|~\ʦ ,kqUm5o:IlōkWRy1>5o:fjzQ#8kJr5\ք ,d,xR5ÿ\WH2T*T{8kc|9vQu_7)TB{RfH`aR鄏m|1gϵ}kGKeZ!zZ(Rk\/M%o.ekFށHD- 2 ynr"ݘ<>Qq96l纘V!ZC U?Z) {Դk~£uCNjkIyom%gsC2$09dn.Wk;6X:*\w9Fgϱ&cs5u_BV\sxk'[g]ߵcºmRݗG;op) $yO r1.wkjZ++r .25CN*6IqOmNTF:k<g.:ZHe sSZ:N*Im?!<׷" ^Vt\M΅83ny6b`£u}׎N5뤴_,Ǹ6s{V$m*muN1>5o:f^*} QGr֬^ly~.[oəqCm$ >]M$Nבs*]1Nwx96l纬N~5RXsV {9켵#;o,|H&ٳjQȠhQ.W#8r;vj>Q!jX'zUR؃DNHhsry:jGnu1u5C?'<]3Dk\J {Б~wYj I6]Glcϱ縘bZ>ꅪ=/OK].Zx{}U]$6G2JMgn::Ne1 geyΫ1s\u1u_BծY{Cԏ^j,rDp&"jNXd҅Tw\'Pҭ-"?g9C295Tλcϱ縘b>Q>^#Z)&iXi)֟^|ZU窎=_in7j=8 S_ZM~sUrϱ縜"|rٹ䲞mkn5bUvLvZ-DA&M]v8twlȻMy'rߩa~o]GQ74t^uLqƛαj>iཱྀ:HQRݗc;o[;r[ $x2{v:2=VUOxùхKrk)""EDdx|(rȥ.䵉^ݶ=Ԉ9.x96\wUc$DG:+ÕO\#s]w]uu[ZPO\s+AϼG!3>T%EB XO#HF~4.n)<:ɮ+"?쉼VDrՍ0q&ߺpY> 2 ؛{Kv]o-ƶϻ»we㻛2y}˵/:!ƗH)8rСQ xDkuf1։^"Шl> ב#0IXXP [. GQOnG?<<ƹy]Bc="nӣeڤN+]G)G!繚惘Z5Ct?֗Î4+AOãD0$*:͚.$$:ndU;ƹ204b x"}ã;{"K=mٕK}|lPR-B{ox\LuM۬c3|W5u\FNG>Y#zk3Шl޻mj=nS7ns?g9."w(ono?qC=_5CFN<}92]HH7nzܫZF鱪z+}ʆ|euOz=]>*nS|۲߁T&T:VHy'sT~e(9[AO\su(Q5b5nM`kg>@F٭]Gumâ:ǚƚJ3%6Dtl9vKgw"MouOBERi?ERщtޕ쇙<}]T:LH8k"u֔7uG*Uݱ:©e?ytl^W v=z';k?n"*H?"򚈼%d3^kxǚ7S3Bpʽ+9q,} Q:1b0,6CnSkz\5_mdpjY>z^Q,a}횵LJAMd"#/zcUAL瘾1p1Up䂯p'TBi~sx5sQ뤲GYv7Or<Յ-ȪLw|LJ"iÿnZkud=db:\ 2xߠ )G]7TZJ {hPQw $x2sթ } y:28grbWх=켽#' +H̹%k:6H*uTt8^c6L?P0]мꫫMx8{sluYe_wtmUp^gL͸i7Ԭ#TZ! R}Ӛf^*kיl{s򒵦nN.tͩcznʓx"ۏtSGɘOa|^x*#Gz5}=_Zz^gͮ[(Ő&=;gm:@$X֟Y?|ɚj@zבMQ=hڡm[ ^H&jo5>FבE | G{3}{3,IgsނFWoM@'cã_ƪ::c*֜{e=R%U(0?g͛o xߣT>@xZ)=k^#hVW/c#@H%8)FRuݹ5TTkk>s3uW.\鉼yucWۅd0o 8R3th?xZ>),^b4ߑ/1MQתԍvAunҵ7N-w1Feq]H]6gPprkQzknԂ,. O~\3T|xv1uuT9 LW6橡G[q0'u681e |ԫP}5L}Tyfu26$:` ~£9*uuY{%91#ƃ 3nokȦ ]GR |I,8Y)Im?!t9{xB,۵i 񍱬a৬5)TT|xv|ݘquڎ:9gm[rθOdr [>zdr(7]>ե(pQs)*.YS "quU;lƫt""c6hz]Hud #W|YrP5\\Q֜T$u^HH$hQ~ZY츶MFՑdѕrᒈ5RGVCȦ[fͼbn븮UUQ֛fkZ. "}v26$u}eӅdډ9zaҵYTZuTk) l]:"8Zwpr~+ ntN5SZ_EQYW.c#@ ٽVH{lӉ9%Qk(R3Na'tys]/j,`p$_Yȷy REb&HQWH~G/gu:U=6=G );R(\ Bݣt#2ߓQL3BWD@dcŋ:ARcUIQ1fKrb5B(#wig/)\r},y~~NׯY;o$" RxT5GsUTo:f0Rc%ȋ7N-Q]Ogek29>xnxdF(\'n]H Gi];:תZ;Sۓ h|c,G? I 񄺎DO]+.]{Բ^Q$!'Ml#[]AZ(5)T}Lo-捴nXT=3Tjҵ{4N@d{]HmȦ[vMxdE*H$tG.s)JxǼtU)w! X.E6,jzsxn+y͋<߲~TeR3u{mȕ\>_;1Ji*GBhTF}uGŸ`qU=cMcCw9J\ِl?*o<^Gc\1vf^HU]H&DȮ#ۀ$ਨJݢ2 IDAT"k]eGֈVJkzבS ֿ.&C;i|۹:[Ǚ lSC>fUK{qXU5ckudUב C(_).]s%@ϥ>^t9+ OֿIkuL!MluT){Ȫ]-}Tp.$Nk{ 14_Sծ#N26$<0T|Gmi;^Wy1+O^Gx.Pᑉ]G)G>:\,k5>r|>wؤU {̓Ͳfح9>+tPr9c391SHE!Kޅyߦd2Y~kyhl纘惘zkj_B>V5뤴6kJK\Jm?J~-Ժu=?ruj^\ljjg2)7O eܚ#Gm`]HtVQ( \IMG 2#sb%{%3/ȦIx]9!j=>Hgl%>ͤQvKAW^'$.c#@Kr?'o\uk;#1+O^<<5zc:B:i,ơy먃k.R׵|H}ߔڥ& uJ cHPUxT_vb<]VgpRxA p2o^: }ÖN]gy>-ppT @7rO.VG=?usqs֍W+IEz"/=z6cM:>tbN_|+׭=xk'|>g߯HHXu^ܿaU wQ9m+ #fTe2Vw6xӡ.$)sMcƗ}4? sY:*#@ aRr5mvy1+O^l?z5_ C4x?Bo3|xd*#HѥkPCQŕ~Lp3dTv v t u$_VhܚZ:ko:qWerL,90TJ]G #KM]y}^M|=g߯<~b?Jm?*NN Hm'MmΩ7seGB@kl6b-װ5=F5WEo2}k&ԾH C(uUy d4G?Ui;V5dn 9M\o%yiu 8Yz'ٮc3vn1,k VםGb2sJi/:4>}25Eel;\t#7H9Vٍk{dXjx96kYԅȖ˰'H$qvO](n=_5Co£8RڋvK ޡȆjIבzu:ѿʦ<5>hK!=ٌM98*9sB>'۹.븒`pT0qv()£\J{Qa֏@ ix h#mul%pIaJ}nUϮ#1#ǝJ]HtU\gBQzj~5bڳRKGǼ6`aɺdd:|u՝ӭomW1+O^l[mtgp8qz t!u-^ lj #w\<8?Φ=>\K'OdXb-]G.yzce|Hza]>XW*ߧT^ *<lw"rϮ#6QȀp'ٮbju\"8;E]z<}AXGM|ve@e*5JuV$""/>vҵԺṯlk"|J ggHO]T.<}T(TcpT 0#.:ڎs٩Vmy1g7ՆG*R:s-(w!x~6뺮QBQեkt#ύT^T$ dX??̞Rw^y.TLӿMKzTVy*)Tz6ViB pbב]?ڏ^D!׈V5:ʶ~v=H6~y,A[(B7q%d:4 ٕd8fp%^yZ8]Gl'_?mjv!r }]G>TsR Yԟ{s 0ᑫ7o:>ME5TεԝcsNҵGV/]rQUeRV]Swށ8ʍI9 kĔKau"t]HH4~y,71T#5m:T6c3\ٔ}nMLƚ/3a:V__.{-p8X׺(7))n :)3$ܙGt]Gm{=+2 TǜpYDDϭ;d|1'<۹| .?rCs]G.ܡRl2X񰰁ިҒ@QY  抓$0:rHلC*-Ƭ d\f|Ȧ먉Xj3<)7O eZs-HipdH!8*j4Br$uT@Y')]'= @=fvΤuT߶c)Dg޸O=>juM+> w!me+.nZ !A|26$@8ώqu*82 λT;z"+O\tWQŜXA'YY9?>j97qvGBU?}ɫ zꘄ:&Q`gxLnSKR:e8x3B:lusm׶]G~~lOEQ)>Ct! v Bu u#}GR]HHd lv4J>Tqٜo%91ҵTL¦]G)G |"[ )aGPe:БEWˢ>)=ϔRbt £PoCtX>XQzlHYZdJ1uT8}ԅ7T1,ҵJy|NR O`!6lGRsܦt:cTaOcN?yY'=R2:23,qB2هT#fg+\IMp+eQ^Tg*JI2FvE\GH]G.b9cV$y-d:t|׺ ʔ?i/6|MBt黽tbh5R㺖oGb=T^TQ~ $@2Ư. ABwqy"GiK}Il;}uZy1 lSCK\guM뛮jn1?.9ԜaufΗN$p53 Hbt s>)\Ƀst#urp4SO srQeCKv`z-J@RյV(P') @Dw(:suIO?Φ=>fWOg\TGBkB}VQOfenY<JA=}i"@Du^¿n0ҩGNᑈ'/e0fZd|y ]G\G=1Wۅ"1ݱc3@ԅRPQ{pvb~ן~<"@xun"ᑫaʗiGLt:*I 8*v!5j MN%=9/ki*_/K}UoTJ2걪Sbҵ>hjs]w]q.j-W# '!s^,Ty .porm:udx DDo_y.s\u1h"2Ӆt,KkH(żuE9Yk 2;l q}wXцOdj~隫}v|(#WJ[׈ `e4K',a3.k/OگQ]y&:r^S ՞]G>^=>r%2@$?q+kg >t:..t'2 O{bNys]QQ.$_[{"8&]g]ߵGcv!@D6~e,!߼vԘG1tt(ņ&rK|b#]G88*v!sz35OE !6cV} M?q%#Ùm]uG!'ҿʦ<5>Us随@,k]G Ge|9Z5.]K͏K{Bx~B&i 1 u['# 9{cN?hܪtZ~gYoerڤUaK)Nu_ewuA|RGY= NJfP gtHHώ1+O\<<:t隯jxBב  ʵ>M~JujqA|J[Ս 4۔ˮMm£xH~ډDn1:5[vn1?Ů@QATp!p GbpՍ JƯKl L;lΫaRtťk{z-t:"8:IhwK{"##3gm:;/ Ev"r*׀Lʪ83[#ٚ ŗVJzDwd3[+~ IDAT$ Xn6(fYC@cVؖ@NZ$(AB_쇋۸ݸ}__ $y9/sR2ξv6QLX[_ 7F丸ᕮM?r\X{ocQRR$y$B" aG0h#VjM:eM8Nb#(Q) BiḲLvsflV¾vLqXbIhVVV(i:‘XYH24T>HB $B!-k߄(DI"`deEE촃z k#˜4?I0Y(ۍi;tR;*2Ĵ>EH2TtgMW$B!-k%"B8f@~ D-ZjWo#v[f!Ɍ]⑎#7vV"se#^D&k%/cD!$r4[/1љ:⑮#QSȕ+ k2DYD4󼹢Dap$+v϶F{ҴU;H/m6y0 L HBP2Y\Q|!*2pK׼GաA9O*%E`"C|@nlb*1`!!Ut:ɇmP@"S߸JT_*bppU%!dŘ֑#dd!I۞G&]$$N>2 ABpf'!LH%xo1$ G[S'!E!!mYGqd#٢lGiN;^Yt}K( BQ$36'VQ!:0Zڝ'GE89KݼI\MMKB2@<dY M%C5b p.; ÅdYH!pţMfDdZR!*i((9)W+XDG"HpGhI`GFs`ZtxLa0Œ!pf'ATN:I͏ꁁ~DS5>$V&fLe9%=m6U$#Vh-( Bδ/k BKX"2`pT•L^$iYG")%rbe!>"Ȣ Q$z\,xɇk H6yBK!:(,#ȖZߣpf5ob֑ (de5H#Bp~xx^K4!t0kfܼ#JhIu$bLqQ&879u@5YaIdnH2d Xi$[4IH4mM}O–M^tn HҡԚf|%]ѯ%oon7S'.]u<&GqQʎ,{f!<_`I=n!CB:o6Ì% %欣yҵTGI*.&dupg L<6v&W^1!$ :*nQ26 HҁyL}ZD1[Gq}:,x \ʑ5VERydB|,bAvSM91ƒ`uii=ftA$B4+{]p dMVQ GQ/ímD{l9E'Q=3ڕjlI| "O^#50s*L9fS$B 2r,0Y>22Nd/+Hpr Ck+DŦN: yHBj!Z ):4 !kcϥD!&7"BM*܄1&8#N;ȏN`dԊ-R($ؘ}D:6ϤCWO( BiÙ,8}]xdP֑Ǟաd~M⠣dԬ#"yBmԈ1v=\"1P@" TߣLVs 2%4)8v=5 :qw*1Qe!8?Fe&vDZ+-<땆sd;s7 !GQġVD)$Jҝu뗝v+W0S{ŷģ8$Lڈ( ۨWG#!9&GL$B!Dg3#rӟ4Jdq8IN;ҵ_9݀߿xQ\DTOM-~,$U u⑈&-X*< Ͻ~ Hbμv-]S]#D+8$:(, #on~,O8HDţ8YGi2O?7Div<0xMf B\-G"%!kI^;&8$,\@5ǨB$z:,_^ResE02(e6&F̃K!S@"1cnZRfűvqEvOypkI6iIYG")h<,ʹeor>" |w6Dmk"D!)\-c/lȬ#!fLH0!$%3K2XN"ģ14]r^~ O?,oc㌏;'<#[ BG ^xnbzy$BIjx(BuQf:FIGKȕ+)=U&exd=DGE0:L8H1ۨlBcx#OB::[:;a'J +AEQ9i VKt GU1W|φhH G~be! ")̈,L9M296?وZZI#NB,̟Yj!H$䬣$bZҵ‘7OxsD1_ -[$J_H7΀!XLtMKpԿ(( K{jrաҵ,񒘕OR拲hO4 G~Zf!Ikt!$txIDZFB,Ϊhd%eLqXEHU F7_eL%DeoKi˅#Zc>%m}$JpL *B\:Xv!C83b?lgd*IKD/;(aϞSWr$ -B#56dؒiѾ޵,4ȲMxMMDD!2c͟QҖu_L8ۆLT+҆ [2m_Od ɚ#Kߣv& HbjccL8w׿(Ԭ#߼KҵH}DoVMkH2lyR(D>ts ך%lrG6nQ6vđX6EEE6 i —LJ#YYG0@8DX!t-erlᵩNBR5QYGJDCJ֢ PV Ě S%dͮ##?2,Y#.$P$Bk_Cfʬ#YBo #W:4кtMpwsK:W ώ 8UXd!e|!4{CyND!( #r\м0Vߺ G[s*{A~e؊)YGP},$_ kg5pcN!RFB,`M隨M쬣(-:Cy{N_\=H5J;ޛr~LdSe[DYH6EQĒ4pWIZ>4]ABRD],$YIQP>S#Hd;'":| D!sO<1&h̝0YG"CEQHr z }L<{2ǝd^ҹ|SϗLH!TR=eGM=!D8!`|cY%x֏qX득vu75Ϧq$tȲ緫bO,}DCa"BH (W}bp6${cd)@2@ijR;ܦ8' Wvxw!D#BL:|#Cq1m #}Z( BB10(D3d- 1{T=0}rBm5)⑨Q&N(W 'F7S $ n Ί $BQȚ5€qsd6G1=5  ?u-_$UK:W|vdٓmчdϣN_,$>0'B~"CD!k#@A֚I^2FVZ,[vj}#7^8JmhG弤sEmdz%ڑmS?GjɶOu"%< Iᄒ1]޲wGb9@"`H_Q-E=Ƙk{j(r/lexd9y.\\|CXnQ-)BH D! keaq6/:Gx8kҵXQRlF~;:折/ڎ,{~* 4[>J'Y,M_yODf5}!$dcb u/NIǯN;s-]#"ۦl?ۓmчjO^[,$6g1+bW{RB"L{? H>2!(IHXaHo5ߜ'kɰf3Kt1_ϖRXAo /vi͘S<"AB9(胸Ȓ h( Kȕ+ +]DHh䷭c툶nHM"9 )%!##D!1~ (+v6ڡK8le\9i =Y@`B8i_\=oݓ: IgI_3LBta H죰PXd *IEK<[ PK ZWQ clȴTUҨǻÄ IDAT>eH@,$6&^6S"bu@!6F<HEԼ8vtGQ {j0up5 t˄sbyM",p.>qXHI2Fv+k^;x f"! $BHjl[#.I}EGx$촃\Bxdb,Tg#PæQ@"ԲdI:FĜVvVǶ#;k8z^$*S d~RI1]GB017HFQpv1QEo1'?:-]2/_mTؕS|Q6dؒiS |?ZB\Auht‘&7& ˖L~6e Z6OdSE:|BH+( BHHƾoxGi P\ovHFY žXEɚ*$*AP')/hQ@" H'%%L/!D!Ɏ 1{TOTK':L4i:5V,GBZABB t-x$V72ģ({j+y.qBM]L8?Qgl+]#Ď,{|tiC-mp#"QcQ"?"ĵk?D!-(_/ù4FnTj-E ?::q8ĘڰU8R #uTn!0 )š!vP@")] + Ef֑ aBoTT+]d1dQe6 G}+҆g(YGRg<YHmHǽBH"( BHd&DGQ8>[v\O!zIg+-K+҆H;~{2#h6ώp%ɰŖHGxS`-]K t{lCJR8?2<Wz}u+b<I M!$!$ZYG2JdGQF\Auh |#( mCYvUw$$?yL³b腧^>:B|?Fvŧ_#f Gb=!$)9%ݼdG+qdѓT Ya2)Kģ9⑇,qS/^ѫu?F^ܢc#b.!2X2JD G2EdG+9}WO{ YGiM!Ҏ,{6ЙCxl%$ )Ak#^lj7#B?0A!ƳkI-$[V{j0u_"ʴ®N2숶®.?!} $8=RdЬ-G~'[.B2= HG2Jjmx0>?ZrKz Rfh_LC7%B /̡B H;w%%:QaTKҚuZ8҅)Hl )8ƶYHb TW^5Rqۇ}rB$BG]m?Fk2>D!Ci:4?f>bp3ۨ1EِiOFfI<[1B듯W I!t9X٫ӯWB,!p>r~|z-3*cd 1~ Jגfv.lt#C$G*yg)>,$A1?:4㖯>zgw_ O`l'B!B~2Ot31A8]bx{j0up} YG"Hd֓)6(IkM^ѫ5+@t!c9!; tOtnb ZĬ#٢ ej2b0Q<kC e4^i\C7}:Zĵg>y !zBNO^!)ۖNS{GۏO|TS#O<,$',%Vߡuy[FL&!X3!;cr ,%$Ҿ'O<:~8F_&Gi*Q%oȄҬ/ )5&ώv3L^X~ !3!KzuGaHH|YJ!!#<[xdŞc06; W`]<2imN1_3:A<%k~"5}/R~\tF{N]#Exh>A0qN<1`x䕮]ʑN"$cߎM)|iGH. Ht_!'BKVb:4s_z+ {I/ HCkI>,y1&ʸcߘ2nZ$L"RT]dSe[O_} G/R}B#͡XBHD(BGfcZIQL#ģr CKג[ G&f\ Pͳu_1|"O~ksG SEHh( B:RFAIxd`x-;ȏN`Рk&PxRoINlT^? }k"l2ϑ_RfV(WjP@"t k#((n AQuh@Qs6l}YS!myNYɚPt^ } B2=SGQᦓ2( B:kCWMR6'r\0`pkm:2a2ˈ:L5vBf!)X mg7b9#4A+Eip9.촃\B{HX&˿ {P#;}4۶|M!ȿ,$Ekqedt3f b&4) B:wfNR[ţ1#t#bb=כop •̵Hx[RJ#@@$7C  HS^si?PL+&gq$XtMH+x}\g!&tQˆG"+!QvA~ts=kI֠St G@>!}6-_Kx) Ir,#FS/ŧ^HwV5BDI5m"RGi B!P@"G#Yq$Ax9=5\@pZZdzohA1|f\%uSHm$|tHy1ұq5QP,eѓTێȹ"m44Ѩ-_#S,$BI!|>}Mx՞3fo^2GΒ5MƿiNT Ak0* ɔ5"`VP|) BRClfVx=%zmL?Ԭ#MDIc߸ S5IHmfpvđc4Ox$ ‘tVQx$ A~r=A\zE})k[&P@"G#YG2  x4upɺJddBf&C|Nxd !TKM}?M!Dڍ`(I 4 δ==\@5(Җudh2?pGAi ]UXFu ( BGhnHڸfQvک= Fmx&Ȗl#YQ!OnSNfpLjAY c&Cფ H)_/Ùq8S!Fro^T8ϔ, GB0jg=URfYH61B!P@"XMKCbR@w*Fx"xlanߣХk:RkQЕ EHk\ ␚dDƘmEV,fE׬$B4-_\D cKoV>C-ux$25YFb0ٞ**}@Sn,$ 0^f!&!ZֈGI7AdG!D -;s-]zDXGYG*0q[0cxdk_ZdDx)z 4g Hk)(G׆=_}utmf#͏NpKDۮdOF6ZYF*)FQZf5'8aYH&MlB !J7pn8D,5ڐ%@wKr CJtdsu‘3Ůj (+_3,$& K!@b%5BJMQmG'0S@uhPDssEtpdK#u>o5]H\DYH?-ިDt:|h!J>H6d~ !ZߣЀXI战aK?F7WF6ęRk6Bm]lB,!:Ӷ:>h$=j[fx$UZ60Zu+(_3TC,$%,6_H̙t`y$Buy T,a9nelvA\\Ox8㮍u}nTdTG|4k&\bdºŦX I)D !VQQֺ:6h,Wv1vsGIALPio7t6G⧯BBkS|( H}$Vlc{~t[&n9"zm:RF/E!5׫mtIl%Pi׈H!*Gʎβ*cG%T($‘M|`S44 ɦ5)V BQޥDG'Lj;xv\OաvIfggQ*M`vvVm<:liN` Y#Lv5dšŦX !r-z Hk((1$lMg?  TM2'<&6Kض}oߞVbt GK0j*GG겐 '46J!)! 7ׂD)S<[E͘Qa@&kGMxwrJbK+֢[0C(?kWD6S0d팠Cz( Bf(:A ̖!iryZ ģY;9۷ocgP,ۑ)Bu0)&tD6S0l "$BM6?ҵi$2CH00n7/?f9I浙?;;Kx3Ґud DH2W(نԗġ+YH; B┬%EeRqi7&0SX[jGJL;0-(v,|ʹk; #L[tNE_@"$=wGw/8{Ћ|`}3371qJ%J% 0~"MeDHuoLpfIys[;*MLd+UߤBiiDH/)k6__iBJ9KqB @"$!?[cii [~s~l?s/ү6[>ٝso@e׈0~z7YQ1M8j20r ԗ"5HGɚ^&!G/_}M,d!fIHqfuI޽}xIܿKKKRw;'W~ơCGpx141O+3~UJ'(Kx tT[FY^Z+,|0';U7L}MxLMߘ\O!~ZLţ}{C)pjkgRBP#e"J-z} >ur(5%k:>$)vg=b1E@,R{!Vq0)~[>oxKT_-=֭[o+ݻwi` ]]]X^^Ưگ pR e&3*)+$Z?4wT6exRvک=Y6o| V5Ckw$ܷl[*3a(Q@dۊ0#gET&V.Ҹ !ѐp~f!~?\!ط<Ӈ^ 7qgSp)u[~Je,--?8۷?8J E8`?N(J| $r[Ȗ` B-Jl~GBŠVIʶ®)`rlQZCHlfIC"Fv$Byl()!7_?~Y`XZZ_k2.\8ݻw8<=j䧅TwJk!>ҹ!"dS׮?bx4;; RQ,f1@W\l^$vgx"1YH&STl$I/{ "?/ }sY #eq]+ѲLY-lR@ßn~L!գQyK l# )4_{O_ܻ]f!'xXXZXvt${S83@ʼn %A!;`7/`tMx;j),ɴOLE&6_3 |>ދ\w.Nޠx(%rIE);LDŽ$!8Ͼ훀up!" oM8 +ߋuSn,|U1i4 vf) ߳5 {,#kQ8J?^7S5f)#R)k[(cχJ?kF( b?`F``iXx|0WY mD$?8ƾ0;Qѵ6pgK]nݼ<)xbvuv7+P<% ;ţ~Pl)q  E+Q#mqB2ebk6χJ?DŽ< H| ! {u@&,/"lXѣGz:ʛ 1PJvߜ@nMWXptǵ-_k>^-yJӪf7WSΖmWȦϪ}Ädi?oI1e}4lQTlB!il@"$OG6[6҃E}`fd oF@g" ;vLpf169Kce:W|-nvX?MT28߸;ħh/*p![vb(J## Gb1L<]#q4B2e}bk܍{ 4WG?~0=]@e`qmb^z ΝCRsR-"5"l-wjYI+JvRr ߓǭnO[߳dt U uI2,ayq&'q{6 AeI}!Ӟjǒk(d7fcՆ)׆qÕW곐 +m+3!%vA*@"$&#_?oxdy=Еqţ{nE@HiD*({6>IRu||'o^m~Ec#_oLCmfggT*6N$ߢt gc?fqyeYH cn%2 )׏ 13xd=k%ne7H2{رTg"93NA/w\^ُW>NԏmXqvQ8Z_}ۭn՞W+qkGdoL`^SPu %= Ga5˶Q6:}&ƘU\"םKlC\K}}J'kI 1Hؿl7(?A^6^q/?f?q uD9YFiexbRcn܋۷N{?|/^VS$ks=\=~$$}ZG{(YK T6g\l5,i|=NL!J/7D61u-E`S_!bUa[~t3ŷ 1cvg3ATHzO hee2kK2eELɱWrOwL7{$Z#V<֜르Y7JxXw@xD,q%8#VZ'GcURgL$IcIu mzlS,&"b+|g{/c]+몿.eرc( 5ZdGal{s[`08SIҎ;c{xi uL㒑="+#L7ԄӶAE_g_up}C}=b2p@j=zh-t3pn: *JTioT=1S4mܲӒ ږ%rh;/,ƥ4dQ&1 5A~_}gobh$dL?gm3ߏNJ=Bl7|n7h/ l,ۥq18ֈHΌ#7(XHT5}4|بX_윙þ>!-acq*d+ ƥ 7=!y5q-b22 5AZft2ҟfkv!ğX u2` x|}ڝ 6te0.)lD$إ x_LS9 (ķ0߼A7Pߜ|Nx;* r#K:]821&tx?R'gCm2* 5LB28l 3o# iɓ'Oe||Ҍg+\~ [voqב+$yl`]&c%%qn߾bDXl9إ1ϊ5F۷oؾ}fo7nMZ?>{ ^BDd|_Mذqvc ؼe3C)p/p[Xy%k~G6mKF;6}xc҇pGaf''}RMrM1z \ƕ-W?ߏ]vɏ+/)ɦ߁SQ1!FBئeG>gQL1z bf S3L\pLc_/LaB 9Cሤ~$~#\G 3X\`lZM ل%b>_+y}pe{zrS_>k 3B;G\vdġSٰk-t# =/ʖ+x^H&_RL9&~.Y@SFLOJغ$cԦ?c%pz _/s7M.c#KZb+8z(7q-qQ)s}՝so櫨>>k-#;;!?ZB\\O!xLtd0@#b=nQԔ(L)۔iWo*\W} ! x{>{>JtH=͙qkyG՝n+=mK̤oL`Ǐ%cu6V%#uH*lbMfxݘnS(&_bh$fLʟf%!mCIR{ jO+qݑ4ŴHc HJ׼qgh'ݾ&[&܏^rvs ̶)gocq$bSZ_G1f\보ad1+҆ :|;U#xYf ƤŦߑ21mI=ELA=Be 9SWcŢHRA(LDj[榺b\;qo"ol)ĤSAI^ߣsKGj>]WLD$[6#T>zL1cnC=]>L/*R -DYR_jZf ;wnJǩKa}0;;Y?^{!RpƁK@qhe"=i} 2m$2!-n2/aK|1g6ݻ{?(6o݌܎vڱu҆ NtfؘӈE0X4V@2C#bdņca|*}ӧ =L!&q}niҹsǎyXe2K51a||!d bǎùsPTp9ͱɀ'ؼi)$03gx}[˞I~iޞ%l۶ bWT% Nt`ꇝ0{X 䳆G&`q IjkG'& V | [3h||k~^TT HO"ǎCPH+_Yek [JN6?[B8JM<ڷoopw]zUq-ܺwhD"!'F0X<lwڪk#*DrrD<|bAnM(LfBT =AQ3td"97ҠuGȏ+W0C4(;;* ( ']y^nJlؽCoUT6o\lWG7K5³Ҳn6 Y)PF)kJ1Y# ?>4ѣpI:_FRTHmgdߘ\=~"lր;N̳p*ܾ}{>]uټu34wWEP#|ŦXm%g72$ɡbϋ9W˯7 $.'A@=eAc)Tcaf>2\<Pn+"Gܒ5Q[f:D?Qs 3;N7C֢>ji-9eOd=! )tі7(",,H E t-. FΩ:4;OC񄤷ØR I^7KuGBݼu3vށwOO߲-j4b#B~3vt<ߜTHs[{fn^@ [23áKעZhjLڳZ?;PT%8Ok}.֍[k(i+_ESA0a%~EEP ∜sc kADa&HG{7^Çp},//aiZ^^2G} G/2̬d~g[_^ )~O"8JΟ?G&g I~oan{[^vdyI͟~$i[&CB2m͢b{*Ft:ZewoåK?ğy WW1`ii\Ve5qQHڎX(G~"=HDrfAAj0;Lo-ᖆe!84euahk](P,jcl-"Ť۶o#g)udڇI'e ~j xdImlm?-)'YK$)J#Ol)4=g3ep-d2O~r<⊀\,%; HkKYCH@r$vaFO,$KΥŜN<"v{ظq6l؈ 6bƍذ{ذƍl~?$vb(OD^f*{4D;оזՆ촃):$Dlvv.xA\}jM8L`h *<ߪ}CZ3Q~aJPMe[[Bٍ-gt{8[K ȦM@?v $:Y{"jng֓sFxN7&3ѐE͜:9zaǎ[IBݖd$AH][[UV>2UBuc2#/z<"k>@d uuLMM9vj~bVeRd3y S8|Ebdd3Շp]ZpvG[F-_| G}?}x6oh57D(@#Q2N>߰bP5#}ՓxyO+zݣτ',<#'¾&v'1SI㧚ĨgyR?voyXU;4`5b9x6e&YH2ϗ̱DPIu]czzXȂ~O?8~_blz}}}t޺emZG?VPPYXj9ĂGM$on6akJ1AiW;} >K\bGfL29!y;cT2%C*]֎G!I|y|kK-wdpn($ HK3ÇcrrRbI/gm1? W^o½{+Pj>]"Y_׌ znFa%TeR)@IglHY];x70&=)M!@ xvL:gX^'|ƭ#ǒȎ^Ғ*-H2) Җ^zR)UA+Oc Cl),gDFйNQo$:E}YO?z#GʦÇo.9_3_r{͓hVPZl`_\HsYCGeݯ((m~g!mul#]nLMMfj5cj*\֑2#G^{GX>\&~ }>y 3XPk&%@VT ~^H#=ԻUB9-+u5Fu}?[3||ڸoQy=uJw4lwJKu .5P;ilkW3x#H:;e8{bIiP%Q_/-c_bbg>^NƟvdo>/3Zlg֟3۟{ByNyYߣS#Wˮ]u.v@*"rG}oqys֥ #dsvH@"]">@ Bs(ϝğ<)sKuyTVPe!SydG4xS>^ƩK}vG@RzX{&JkKؽywfޟh)u_솳si< ȇSߜed\R.{ ;GҜ ,nvхE #7_r׵󸰰F701R( yM-+eJ Ux[&y$ȇ7C*)FHjSE*Vq 4O4J KV9Yޏrof)R8ʥlydo;"YHi\YHiYگb$o8s; $ߤ* $i$|9|0jgkx-L~B34W">ۨ)<9_w r1G}G̥k4CCC`;ґH)_d%-n~kVRh_VԍOFDÇpW@ {޸p+ر/Y%gfĪyBjҹH9<ێHM,$3."Rd_!bqHSȶ.RI?H*EvHY2 ̌Zsgff[`%Ayd .幓d4GJZK5mc.WHgXؠsgy&|`:WNbf?jیGsK,`ux/G>?'29wzKo5 bN5`ۻԟ[X>?<;qG&WnNc$+_fk| #;kY m"{oŞ{pvYYF,~R{a.|$(\hT|`(].IT%RV*k:{.~6aÆ8_"6n{S!2#-yY[ͫEQ0ݘ{5ѝ)󫴶bqrp . )okC$ Iq TpH*yP?'4 `\ɓ3dx-]Ag5ǂ6j|\+{ XbLxm6p{*wnc}?~/}o}k|ᇍuE@fاmSU}}ذa6=pKx"-gZHZl#c3"{2By.񈄠_T H H*iĉ'\02eN>UJЊdy33;eQK;DKׂoJ*-1 4G>+]U tUԧ+],ݼwq1$RzHH>}J֬Ym}mYsf2+7[C,PZ'|Mɦ3@#8Ge!5x Itm3g.H +.e<\܆8=I1<4l=N/Vȣ !@/]ug2,,,hG ՋuLbG \ҤV poEF0$p,Xƽ{+8o}""⇋RvCaP@e)Xf FP>ts ;vwWt*GQ :D&r9g!A $"2v)ĺ~7ј߇0?xlH3D2 k)΁E]RGzGK#}ڽS֌ˬVeVVX\݋Oضg/UE"hQ VJ_VZa``6=2ܹ ?>+x]ܽEgX ~3t%o {.oEFG- 1(,yAd e!yBovM .*)׼6_ؒkQ>9odzmC2yY<{&Z=Vi"ŭ-\<*/ m[(8Xi,T֖t-* ?;܁7Vg Əо+X^e}~ XTȡGAy._S͓8?T7RBuÒqٓLNH "TRV3[Bf[΍H))yq^@wGҵuzGJ)oG,:wS OJ]\qx'>HlLbQ˪+_>鱧JsKoWsM3{>o,7.ݾ;wŽ{]ܾe}}+dȎYxa^8k5OqW6^0^r|PQ!H% )/g^A $"uJ$Q$KXy|QhtX^tY,;%kswWβV~,V HR+],-q⏱ȶBsE!cە̟;{poβչ ,jhh#s##ml~wll7p~8" J< I9 K^A"! HĕJ66sBk9gB_>~ mV׌^@yI,Tβ*tVtP겅R(J_@]ƞ( USX^nn/n60 X@ҕ0mr;f9ߴ}%E dvG6Y9I_ 3t>d^H ’J;]*X2B¥6'yTZ, ;_>^f.=K#Ȱt+Ћg+aM uvtl$Xe#wb#T_{q*ehb?֌ĭ7}OyxXx~|KƜc9fy?͓QFbe%>:1u+,$Q0 yA F4H RZfJ;!RlhA#3ttooy䵯Stn=jES_Fӱ6M[z C(?"HTZA1@Su{++_q0˗3Evb-Ulx#oq]HGR/1Kʀ&&ك^[Ô #HE(qI0.YHa0BlHIJ6>GRIHD d%R}< 5QZK (̼"uU(($VX}t)"T?? mbh[o^_,U0nx 87͓YI{䖩֙epB=~ L.nWO'|cJ,&''1U?4gO#VE>P/yK!Hk>Dk 7Ш7ҕG@:IPyīoI4fo0>}O}| {";2P9vr]R1H!3`=D {_skk9u:a&>QQf*MARz2RdG0fNiff1rō-ҵ@HͨW$8˳ 6>XJ%m@ٖdE(*ĨH$ᒅ$(sA HDKz9T&6T IDAT}~7Ec5؇O@kWnGbݸ_Y梵ݨO;qXY-ydi/T4aEl_JdWF|xp`:qVD=S+V-$Q/2Ny@tD LTQ~³OE*J$}(TUȂb8Ȅ͐HYf]ttytuVLrRRuȑ,%qlPi,Teđ?2*;>siϝ&r̯̱($!!H Fmsm]TRM D З5g/]3Q#F,^DyL~pLw>bY̓,d`G2f%LoD{(3$pz8D XL| G.mY$ҩ)ŋtmqG6`Cwc(bA_c 0F@;M,$Y_CYJƗDDa紫3;RoT2K)Y~_c~oJo{aoFsT*c܅̓}ϨvuE^LBbXD~H#'W+!lΝ<]?45#B 8q׮]u.) %w~ӳޝDJ'ΜH3{w#F{J1>C)EXQA96 e ;J^ϻ( AM>h7kvd Tr`Ȳ.]~> kW*u)Xtz;*,1g8D&"96١[ Iƹ1f?AHi"D:i!T:qb}!s>Fӧəh8'm^Gq糛e:;Ebe4oRgB3 IC!c^mME;0$#ZEyECGx4;=6^;u8t^Cb4ܺϓ%@Xp?&F`dTIGҵfN͠sMЎOhQ4"gEG|8%u\4"?!3Bj!UcW["0n=^EƑn3pވ N:ţ#.DAhLSP̙JZ@| *jnܸad)A/PLd&|w=YfqUS3fzeuv]I DZ̧WQĂQmfч"'aגK*]\DE`KyKcuǧkU,,,Q/aǮo"ڗENQmfч$OcI]'t-$ҍ@qSd5x di.}H ^@:ep HCO TM0O̷̩qcFZEu ʓXXXxp˃((NJ+ |6PA{:Q)JHCy1@a@,$Qb"|vD2IXDBJHA$F(-EeG&pX_=H"KךQWk$n /Zm";eo$/ u܁- D8wDhqO,$YHUJI7T$L""D:S@xf[/B*KtdT2/yzc{/lXZ-=6zy\}}& uQ5nIH= b"\LרđLDWTp$Z$b#\=vJO=; Peҍ7z TT] t{5MǕ.18;;+(o/w(-Xm$^wd["JkS>5\!/adz]]c ?L-Ӝ3.hygE *KIC*d*g_;͎*lKv_850RG"i}"y$Vc>*0"M,$Ў䉔_&\$#bL:c#DzMIq v"1z"e*I"]l}jC.w>3D\w>ˤFQ)$j_> [90D4 Ike(ي$]]] V~֌0J pm[voXZP;.;7Bc`_fއQ<+?lAh򈲎%ΜjMs"6!D&oH!ZVR3DZ"Ƥ)6HAb5S 783ftm6 n^޽gcm;IXh\뀢@MezYipD{1;;ƸC䩎O(YRD I 1AòFLx-cD0HD3[&29ڼ 3'&=BHIjYH2O˴{ֈ1 HQ6ReM"Ĝ3HS=iT׀!O&đ9$.AtXf] :KXw8`PV`Jfiˤ" $+8Nc %5$_1ה-Q-$(S!LH( +DCt#>L>˧z*9Y(M?$7jOc [_9ˣNk: 3xO]}a``CC[ J A?} M  !j$_8⿈P#"oct MV?/ә/MO h?HDq)g55,ХsmM<>@&v=>x&6mŦe~[o@~}/~I{Z\H9oRD#A)Zy>8fBs'89>^Q_]l#Di# <Im6H'ΞH0,J7vvOׯVw1: CzU?:[0z}x}(mXMHeWPDB ʡ PR zDD~Cde`="p"( $@"u̙LAV!z:$񞒂ʜh 旰_[;BC\~ 7?b[EY -˱ssc/㥗^>##UeQf˘wj\@by̷8g*@"kV G2eho VƎ];EdzTW5YS¦M[y.tyV7b3ѹ9eꗺ 3lqK (}!R,iqQuaI`e! *qe&d"x3;XDH9InH$bS~wXSd/_;S 0o}pz466&*t;֡coq(n}]gqmإν@ggK@b ccs`H%=CO"J#~Kh@"z9x m>l"c',O2[ M$*ȭ$zM',,_N9)᲏d;<6xhG8B`8y|?jaݺf_..F`'v[`HsgVRI'TBk2#>pKRa.Q_[Hu$9$*( ^RsέX(vU Gb|!qL}!)}G638'ҭQ"{-iKH$HD1᱄M'N%=v tmaaz#9dI@IH Ń" tQz* *J%RR(;RO*GZ[ PLBH%L周ruɒ9u2BYENDaB5'=[LhG'v!:Hw`3˧Np hbm[v|X`)EE}عҾ PNw%Uunv0ߚ|k".\@BNg%>y.D{IE## 8:XƑpG^Bw>kj5EIl62?*e DQN΢ʣ#?U^Wށt[;:}; vڿ/Y3:Kt:[|'tٙJ[Yd{i/jq5nI-^?EgR{f$l@ϔnII"ڔDw<3_ VR>U0ٳD$O/<8?ЏF0vNΉx߇`dl7̱Œt\8uW1eN&q'^wXBtAs$<^ŖZ;9t;ۚx"M&K6Ax%kȍNh95[1T;ԓASLR̙H8#l,|_ff%keh76d7*5j*=;|kPq 87c[5jw vG?0yG9=xQyl#< %RoN\".H$P&7$D PREO*^VQcZ:G'UsJN$w@w`KˣPK9oQb[fJWzRil+̣yZ989.<Y$"WXv- I,yQi ᖸ#H !D]bPoI[Eq%bT6";hG\ (q)ŷ,Y;TJrHy#K9NGg Ϳ',L !l(j'eGcRI>cB"DQ,dIθ4ȣ!TtQK%y$fQt9dFHz+ZRp^Lw_D(d1 :ʺl~,Mig!el8fZi< '4f &wݿ+$b!jaj9q6etFFCw41"*qft-6 m#`<=sG16:(FXUAmu_]JMxّ!ZAH@6YHH(7 Fb$HJ(){kEHAx{6MQRARI]^/ JK u,/uYݾ;V(@Ȋȱ區s#{tZYHur#"$H4*IH @(&Lh4bk2AtgN}IGq wo)Yʜ0Z FI(oG R1DGY## HV(I1X6.H "H9ī -a3] yTȶt|FRmHn]S!|?NsLI6A|H)QLoF9_ƣ-T/qkAj=3gbtޒ7;AsMԸFy)!z0^d\N Ery8R\G"YIDR~8ϵI]$Q:ᙝMm]=<q@H6Yƣ-ҵ,crKdΝZbli9T\1|k .6G|P$܈V_V'9R" *g' $xP#_sum.P`ˣ4.>};m dd.H3(Gȍޝ`*L+\0@57 IDAT1O.T|-xe #~YHɣ4DFqK|DRlBJ$"$P;u\,{ HRdm[6# ݉IuK[m$ Ċ#\YIEhF\#+ 6@("-5ffzGJj% x_lE|I2&ٗ "ܰKN-M#5ưw lo 2"IPqL,_ hpAYHKJqh$EH%Dv@" $_N=FXvGωDZ.",w~PADknkΝ]Vk䤒G\>>Dhg!≖!'*ɣ$QQFUaD2=h)@"sYG A..<1FsӥeTAknccZQ]CRϹ<-R@"/ JKʣI@-pXaqEqxN?I%m!.HA炵iK}r;&d_#YQ>XRI]0ZKR}qLsL"NᲐbJ"Gԍ +pj(I$QPH1noccH Ţ2us9; ,g,ڑ,HZ28ҹS16:g=bM4(ߒ?"C^x"< C$9AA,4IFht:x;.B~ p0pټ~8G<O-xd%!|s ˾w=yg#y%B~1vH Šv(~{pp({~VK/<",]#y5tiwpޝZQ͍aw{KI@T:]< u{ f2|@7LJ0 ),$`PqwY.:KY=r(7VN&,vw _RoԻGJYAr.Hp= Ik|wǸm12W fB>z&J hR"KTE: yy#L:^҆bHz%DL)dT ~.>zFCCQ,[주JH֯ TR3:h͍bl :mu\5Kj8FjG! \{YHN5{*QØK1 !lǶ4g|#ZVBH$D~T&@:zG * FO({~ Hgt4R^HwB #i`yA=Q?k) ౫c,t.Y#(4R<Fµ.NGnRf?K$BҐ) H<^HDqھ˒5XLo,fĝk@H>` Uٗu`9owSRbw~#FH5Q9>%H!l:S,uYOJr$c 1E]F)$ H ^:yPz$[(m\DӖ)D<ʆ1w~RABɸ[5[V'(t$Gh$2/FYH'Y cBBAQ]T`ړB!f%9刱U$W" E$RG $@ Q,;n#3"dYGJX(1?K}Ka(Hl%d%e!ńs$0u(^Vh੧/?uHb#ꛅq_()Qy Y F@JGփH.R%ВGA8#%FQsӅX1tS&uWݬMxKkp}bDJ!ŕj epj5LOOR駟N)čY2F@Ը"^GIENsiSqJ͋/E+PsrAS"Ř̀?A*fGa3FAa ƦNbd&u{d$0ug#3H< de9NK@";T\p\ٓ>E8ED]QG|sEPw57/XkF - hD\|WrM t *X#}Be)S&]Đ탮CݲDRϼqXISE .%kA ](uIEG"Ɣ"ҤҶY\r!:?Sܜe*M~hT@ t"\$L>QLq;uw7C8M$ "- JƑH +HiH@( ɬ#Wy4;7<0aR,/$z%XdEGœ&>cd*me*lSEg}Ϝً"*;Q}W[s9 (b4d!%f%ԧ⊣ȣ/3]φζ\dR5ᑍ nEHTKI8HDQNeAfe{;_[7HIQ+j\a yIcfI71e(+xJqoqR3x.L_ƘcI$9}NG֑%|njbNEP8H2Ia5lc>~dڪ/ Y 䄎YHT)$|SeAK- U"k~}D/"Œ4)UIfXR+1R@ ~/},0SugF4Rf*·pȶ yg%$?ߙP"1 +"@$H$|S` ׅOXud9jȣH+>Ax@1ț ]*5R+M"/;H)[E:R E8O)'ϰ8RO5GvϰdHe#6XlHApq7&zn1CD r^hrrSSS8 y.pddGd}ċ$("JxB?؏llWѾci_$``SQp]8I$;8~ >^)< u!\V8aWCRW) }-K${6C#it}$èI$v廯b()R&l/5w:DjыeBvQFל<1$ov$ReR1_D@ޑ-)&sc_?y"##vL$g sp22k-3[$9ܲH*{lԹH@YHq$BZbN f$!2g<1 /H0R^Vž\7s #"!xJ$Q |x~c$2omfY3,2%LJvaԓK%m$esW>1ȉD"D;./h  d!x͟C1g?0\;ȵ=Ttk?ҵTz+W-ھ$8CjjD}~G-`ȹ-$rCBd )vXrel&11$ Q"9 No.5?i%dUiȮm@"Oe2#%ɣdB" );2OS&zQtd~].3K%c:ouI%Bb"^),Ƚ@-iz*Mlauytd^d<2oe6$%}/LOz&;GDL$HDNeAlwd˜ƅ3>dH8wF> [._GZېJz5(Sd/4~KقgE\8V<"Idl (S]<[L;nZJf[枍d^G"*qtQP( ANNv"v RvLca.x@H8ՐH_ /xfU IMJr$Ln>r$mY9bDҋt['}/4rD )J$^hrrSSSY^BQ>DQR* d7hGh<^siJmowP=?mykgz{>poՌqB{#M"QGJE∕#eσedQnZ4dKH$![tBb#gXф@l$B0:jZ~eG2/D)mx#1-^!GQbK$)m.Y&Wh_oc;SҦzRi`S\JNR= )#u[V+#ɾ_|y?f#i/!c=熶= IY LR#{k6R,d%$/e9<g!IDAޑPu/rn۳ (/4G#S>L<`H7|-%FRU*PRId!j:)Evܚf#0)NB#pŴC1E֏Xp8X{u6"mKڢH$# ,TbDi..@"AHXv$Oy^\<(DC$dGg&?ڌ݆Y@=bW\3yg*T"TҼ}XPX\S84?fd9?q*zmW@A0sR ;.,H%ma%]!ܴ|APUŤp$QEHD @w$6y=m -3,YI\S٥RA .]fRW/ݵnJ266{B5a|RYH$duC/;&bJ$H!zZ-bپd4l2#?lj_Qc˚憖e.ѻ`z緫jA)hI| &Q\.dw2욅+z>ߡ=dyYG%kB),?\ǫ5վ+=dIV wL}z5+pIhBɾt"H$jgX#r6H0zG2 IDATBˣB Dlä^޺} ׭O515Lez ĸzr8lylc]9!v]nM(.G2mZ㪒,uMIݢh2{RɲMP=d@D@C ͯ{{2ܴ\J@"@"l{{$y8u y$7*>? TN9"{PD&HzMgRiTDX'$(#%P#@*㶴 Ge%9VV_"2bؖ1NO1 )vݿk$"!zG"#_'8>"I,'"#bL)1&&?`VTٹILkP<إsf*.~gTz2% iޙľz\)Bl2w,$FK8ș}yxdJ,$EC1ϮDһ`I$|"=6{bRvCca0tLHD|6nuyT%ka"y!KuӹcJ '?ִ,|T6Ris)w~% !^GGl|Pyd&l҈џ]8RQ"I $PK^M$$zHl6xd!lz}KT2EݸvI={^1!nvy~6GnX],LRT9dIl&d.lVTo)V,$ %qb2vH<@"nedIV6zvTI*ygd!يiC) Uq$gkoz %{ll$6w"fy){V@䲫ssvȷgae+5<$ $Y$(&ɞ}$k ZLdAo-R +wYS7[f f dI!3rMb^C*")L$HZiwFGEG';iͯ((q&qY+ M>swl5RI\,$v C#`R<ZC"c#0b/Uח{]C-ecHY1~5gU='‹!zUu8*Qx/(JE>_c;T$Y $"Ŗ#GҘt6((@i&ޣI6WRӞ6ibq7%kM7.",?>.Oyľ3wkO.P[Yfd$E:LD,a>-mӷj)٬ya,cc eOJJŨӀHDwO}1^VB__!__>T,A/"\E1s#B"QKh\P3&?&D4ZBiT]NɒJZUq˒d*%eɺW,$Vw3)@z7r=HQ<{OϚBu.YsVDB0yG6mĐ]*Vq$E$f[|f⚍drMH`1*ac1r\!9F"Dcq(7/}嗿Ƒ#G~tgyٷHo"B$H#6/B h,^YFBɲ}xs2k\-f/`sLKpf*}܋{7vR4Id%2:GG-'>#8qPERO&x3곶x#s&\`|fquKwas_^ʆX= ymS2KqnDdIxA($KOO_wO>i|Oޑ3ʅ4<#Q␁$\d028*l8@Bҏ;2:|!Tx?ҫWۨ˯{_6t8RI*^X 5Ǽ_M쓟 OGG~0N}|4N}/>YԷ]"133,ȔeUtZG[L $D#kq#U- əb[2 f#%}@" ceVoUuW{38#dHgPdO^D7y c?_PE6-ϝVXƦ -a#͌TkRETR]b Tf7ؿ0)U'>??{?^<{ϛ0u>r.a35F$H.G#~g4"<2A,eg!Yr4G1 E[BdEl$H??Ze^ƖG?.\8Y̩Q2W:n:wYǝuq8~G,yXDyU*)7h򫗵gdJ%w(/tH9hWHk#~iđWVG $ZmOE)e&2D3#jE4wYM:AZ|Oww6಼{~=(e#GjR:I𻮧h>F Y!M&KSs`+viO_3q_"Drf p(pYgo?ɣ/GԵ]n\#h҈o/e=fs߇HcV?:|;xׯ|#<:;uEmNa#č߀X:ڗsZ}  ߿uV%3g^;j<[z=~7>8cGFf72Ez3CcK>j˼7;ŐN&[_JSTJh6`FXl@&'^uң_tQ|[GMA|y 3v׾x?~Uo~8Ek_eo5 hSgH䑮5#9HR\ںaZ;i8iYxlP 뮻܃>gμ?#< /3g^@Y0:p,O?{MLo97rSS $_N~vǸNf.)l/vl׾&IK_>f⭖TwFg|V盯氢DrtÜG%y$!pq?. 847>(HzYgOGk7oo2y;F7-hL(g}3%['^Sx|X&Hf͢ ;ɟ9?4uS?9P~kEVB4㬫 C*3|+_''puoo{0n2.9BLro QĘ}5U_r] DnYibtuuY5{gwZǮUȕwN_#$^ƹ+ֶøw˛Ź/ ǣCRWSbaÁoJVVQfBRwvADH_V{sG@bnSC1OEc{|4\N=x5ԃ[xfJڻ~J(æB{>sTS8t!.|.?v9>ӏ?jsC}F$8K.,K:֛ R˜_6DnZ"$A"DdKҺҸP>RS$%R;f#Q B"oc/bg%ָ.| o0>'tk6x;7_|oh?rug=|\ *n6~1V+oj;l9o|n0yk\ ON]Xqi6g9q!\¶cNHık/8q.?v~?@Q{ @g 8u){ZVo< qzt_~𗛉eծMBUY)ߨNe(PT,$ҠC]fTXM̥c6} $B~Ї>4wV: ΔHl5Gkbk.z:KUVRo`#dd""|;'d})Omﮟ_q:(ߨ%3=g MoW.=w~_6$LeH46S8H$ܔ)4CK*5"I>j~F57jV}\_as%ÊY<7pN2#E 2'rr(Dє9Qa@"ɳj; iNX9r{{{#f溊ZjQ}ڟcc♒ ?Sn_?"DI72Rqkc/NGC[M Gd#OG<l_vۗFQW]( AH& @MG[rHMERQ9[ϔڇn қwQո}~Go|ތ\m;TpjN:#GH͒XҜr!x >o\SŽcx-0oW>.Ce_]SɱSَ]{ ה,MU¶s-sϿpPRWDZKJ"l_v Q5bQ~\J2H-f)C62ei*'֗kbT3OՈRx\CCJ%jڣf\ݪ1>kK\(/v"d8qR yElM71.Y2>$|?;n>w}[!3ljsY➻Žw݃zձoVTrhqW( 7nD2#O~p]?UH (Qlfm# hjo_@{ ۻPw'~O|x;|𚷾Z.]t!:o%RS$g6i*z_誨Kl0{ p)lK?. RLbD_vUNaHb ۦBzpH2}Ҕ5]lM/>Po?v171NcnmI\s5OoLY0ݬ@Ng_Oo64ބ kw6RI*Tھ"\tE ґ^U͙J1:)LG3L[ʴ376w.li/a9(Hy)Cޝ- $B)QSAyV;.X$7_f9^<8X@g+ ;nw|TǍF)7nH!U(A] .57z=&^}h3Q<չQXNuJiUQ8"(!1@ }4<FHs_`OMis&8"Q 0Y vI}l&Qdױi!R!<{qտuZH/m)OC& CGE*]uK /;[$F)H$egiכT!@*]*~? u;aam&6<(H`N8'OXjޞӱjKa)>D,N9(1 o`#dCrg(ct]9s[4jf66 ǭVQ%ʢ@Q[fvR#F&U UśAP `vmoOeD'Oć>$:rtߐq} IαODfFqщ#YT )uK뷔$ȣ2l$U4Ɩy J9{U(<'O(O=$zI_;;pCWJMCU>Iq)\{ݝeH$v1ɓĉ#G C7سPcaChrC 1,hP3vZ}i2YHZT/da@ȣFIC)Q$.ơ%p[vx'#O_|O?~)A^ /=+╪*>jbLNۦ #$ $YFv_8}mZ34yX"@08~tLw^3wIh M۬,DK.HfId U;YH@-8 E7YCvq:7]S?} (K|}O?4_{\ .zQ)#Ci`FjISADs mѩS먦HS3@r% ~ GqK_sGJ0#/hw͈>+ I&!U&j]jnKB<Gꀨ"IG0 7+t!\x댣7(KG̤o[x汧ckoο\pK.0dW5ԪUIۣ@"ǩSZG>F4-ķV9&!Q 1 ~BHO9>څ'5y) RB:?&m&A hǢ.ٮGjHXvK.\%V?J%oF&=g7? {_q>JƞtvAq9>uy$H $2}p ]BUEs1M}N5(1!v5BƦ%Y 9b۴Z^.n=MIiKvm(Q#?EKu#Kc]RK8IطԵrU>3x{ڳ: HH0%V[ͽ'F"i $2jD}1hz^tPjF\}q,S"ϡ#vk`]Pil}dqd& #% g%aIUk >Xt87䑺MOb%q8"wkw};B̗p+1ܸŸ/lD$NgwI!0~<ғzS죹JB3 P ]UAaٲfHH0B#*ydI@-*e 1N"u#j[ Wq=tC@ NX{qϙ^fK'f#mGD߾1^u*76a"$žs p܈HDJכ*cU<4 ]s{AmE".6AFHDiZ$lْ1H2f#9#1˨%e;Ry;%p+!]JUvR ǟǟ6`Z*2Զt[[(<ׄ"iJ(HP|} GPn97XJ57!$"#Ŏ,$ۂfqdHPa#Y\26ϥ,$FW_BcTi$okO1+ǮX!--8ت26rǟsH=;;]?~:ؙjv톯 $um(2 ěc: b×ܦvNAqf~$S"w$4'S4f!S6BI%655vaJ[-ehdBJA+eQ]B|\Gڌ&9]Q-^|/33,RiJj&*ԩS.!"g?rrx"KL,A"ž3YKL8նkێ8Km;Nek?q=P*7劖D&I|\e#5S YHM" :iˏ IQ+%\b`l.[etGF*댣w%G$uQdfޜ 3"fEFYghrϱOK!$W8 ou@|ՒK?R$ױO_;!_2L$<' 0l]-m`oKD"궤lJ*-tٔeRUiД#*fqAxf!IԷeG&lEZcDnmJ% =暾P ׊}I2q bUbz P~!ctR=>we2^WKjfR[$d>SqT=ՉTՌv1p[&V2$QϻR\)rSJ]i.-Tѯ%R(UO{Ɇ=ԩS8qnz~sȑzmf @J ^8,DSABLJYH,ҕeٞo$V*UDL҉#&vUBIzӌX:Lv>HnکBRX&ydK"#s/|sTcF $n 'N>>HnM7݄|#uy Q&(#boL __ݤLמ̔ĄΈONUO۩KT6?<.ϛl$HmU ?}fF>8x)42ڶʹn+b2֧3צJjqnLRo]6N.R)bww' Ei*FDo=3b7rqHOIerlц9`aڛ'DjKȋiÐ}Hd%P|&<G!op;!>~zbzD ˛kRomҏmP'"~@" "qmʣͯL3(Hi Suj86$u"'CĶۚ> ɠLSChoTH#9К֖Fm5($"'g"3 t?-G& G&(5L}TytRe~H2aR\@"-L%P4I{M0)[,hH,IE~YHn5(QߴfH@k]f 2."jIͿl韲W'qETGzG}^L~AH@*)H$ 5>ˉG7pØ!)KGqSxc|C $~F;Uh,&Ȳ_S) G"Id>F&m5 <΂}^EdRW[ڷ#}sэCT:,\m Hs@D#J!Q}tfHܳ6<$4HbM0 .DjPbIX" @)%ɤS0O 8Gd*]olHrU;֡:$~[%~1r Aiy覮RNN*M  ƍ7hGNubEG{{Sh1$ \LM쯹㋜p@i7SS[>YH]ɶߺoDlSd$o2Iد%[AJ*$Q0AINy ',-}$Rc(4%IG" V& ; \CeC{82mJҾaHOSjtvJ(BQ*BttzO:ȧҾSݔhN9ңn%_1z7FPw<*b%X tS5׮Щ c ema\ ǭ鶫׺k|]!zfGJaqk )؈^o~Q}`J?H$8FiBim [,pS7KToT2,], >)mv]R_jv`AU?d")[A*M)}ԓѲ`d%MJ7U745HTkDbu8!Dv8>G>x[aeJ$觳IvmQ%:U TFe׆}YGڽʣN@+=T "}Hj{'i͸Qu3i7KSO#ָb`)c3qA\cS,A0 ɵD~E">YGhDv [#?̤ E˚đmIiQ&O}QSfMH6lRim|_PՔRk Bp'Uh{ $T f@xC}Jeڔc598&;`缝(b9ڋmX%h UwװS3Z[\vco$_S֑[A3]Ҩ8-)H[R`^hmLf|oa> JO(DɆz Їr T8KġB')o*K֒- L%@l @6YGVGd:CpFfx7eM[RfyԋQ<y1g$T$ꋬoB~Dt 7g >u(A>FR!L5n'cLs9Me7e2ZT6Q IDATIŵ4U$4(m8?陫4>GRxSע>gn**4D*Q B5l7")+):%c ǛTZ"dJ|%KUIYaV R6Mhel&Xr:23<5vG&'xuRmJ=|>V6sگ8145#AHd)m2ĝ\EY$F__36bI Ƙeldzqf])qSEʄ")Rȑ#馛Hlj=1wkFxF*JOO"P$S[z !2d! B.rȵ\el#~q1Ql:nq¥Lq<2㞁54{)\h.4TR@"If#N5TO"PJu;hhݬRӒ2Y0йY%CeJDLRciSƨTvZG<**vs+gxyж)li}c>Cn651CLIDL~ Q,DK20rv=Օ~amsqRښcjZ[w٪JVo07 YCƝ"Ho:_G}j$*Dc>(!05@G{zs]$h8 Kǥ3g(q8&FL}pHKU$m529}T33>L鋍/2Dv^eH@re‹dl$9^ܧT环X2KZcRSv;X|+e#9KhEa+hZLU(=d/a?(d{@"=|tMzDJCfs!ddfB vdoK|Ex8a!'dQrKJuـg]n. "ۻ!M7WCcy۔6Dy,s$N9xG](Ù۸e,%0L$&d?Lp|u>~)kNuȢT<@"OaBӃ@T!EjqKΥmuMH>RKT$Be;6z, l>FV@I0/>!d$J zrjUf|ӚxD)*&^39^yz9*JRn-y^zz˛Kc_#om c(>(D>:KXp\یy3tbX⨈)Qc$%Hs2"I^)nZt*ؚ֑4h\bLD$B$OaM٥!1vBF&gnIn0<=˼s\욵>l:wm N m$~(!҄mĔBd,ukhX&56!2g&u ~inSpK=B<ϐN(!꛴%nj _KC H/;r#DZlʀid5 H[-ZoE|4X2GcG3VHu#+c;gDD"  KSY> )Y"AW;I$2թb JGGvS -!j{^~tۇҧ_q~*E?Kw y>ZXhSu`k_ Bò z'!Qm`y!m4fg(:Xxg%ϥ92 ŝ;2\"Ib"A%疜짯QU:`# ϋ[ q !d"Nŵ#ݠ@X.sD>3}*is:{O bv}2ԩ < y4weM@b!B=&1\!L't}1WKxm>iqs@B sA>Mtι\݇Kޙ}';wZఌ#-{ -/= $BHrS{y͎)QBnw2&rn_?Elrmx&iS" U@{rHuk.4\UUyE3 2 y$2ÌNa#8z!.nN#F}01E|ӛr+H0(9f &jt?̃2u4+ #ﳻۻ* $BH:5W=zԛb1K%J%ٕfxbHS|S G=#LU|2_Y@D!"H 46!c6IB!-:zP>:Q1_QbG"wǟ5!ZV+yC>]L⽸v 'd4R際IHX9aF싹YIW%-6<ڌWhG )-`m$ $Bq!FQGgw҈%1g/enbHݭ{I`qBq]'L?h^:Xl,R;Na#N&RE;Y,A;);h~Nd,)0tj֦;OetZͭRp*/*z!$"[1Q"د^kIq#d1c+#p/}^</ƿ6KAu7 y$}衄S!Z< \#dab=[Yáp'ձJ5nO"ڄ7l 0ͫ`WLG^h "hHeb9wgc7 swg*}c3+G*q8#$\#eB.-dH)ֹX!:TPtP+^+ɭh2+[b<[{xw`!WOBȜD#%ڛ%D Ҿr(m7F:?(b(F{ "ﴝrIJ$ u=^1юDHZ&/,5 #WzYO&t"a )Ę g:tslHJO@tMU ! }z_sw ]"Y,ι 6Nc#.pRP'ݬ2$ӺsZLm?)l^۬ӁfdWfwLCl[<)jm{(SEu7ASu<3!#5D zdLqSHCd!-)Ęd9âM'1.+Itc+,^MJ> V۫ t~^޳nU!SbP)mY4b-Im I~G͈%Lt5jbsȷ_FDYG;5 e#%q]%49I\ $mR & e*qV_D#^P%J_y5k B01Đ)WJV8}pK 0$Na#&(_û=OUR>O[oJKÕԦp~cO$X+b!B_:* ?DUIc u0:7Be_o8f!^I/adtZ˟ȸӅRe}02ATœ>Ҷ=&E-#S6fVI_c'R*ޱ}l>W>-wk |ZrH@"x㵐K!H1/H Ow^f:8y3_)Sh̦rHHh|Ҟ^GcZy,mJ[r")S@H,y[>.ǧZ*oc66Ksb|jrY@"&@g#"I[*!`}?(,g|r>(!=赐0@$ED>d98w,(~J1Nc:cb$V&:e $.M>7޼tKQAaBHxR^pCcQ}|!$z-Bܙ^;m# $BH/ ڇdx5T4?WnKZ\+BN~xNcI%URD4}Y>Dx0H^x}PiĞbi"C")Ixf o.MBN9z#3.w}P BC&޴Zˏ+.&p(Y1ބJ 1.$|ҋ|\xb %# -l@ 3mR<)oDm#hBߡ£Ug8 ^xHˁ]eMs챧%MkQ^;\S3I.Kk_RbK?ql}^߾VAD B2dR5ڥu$׭ Sw6D*м2"(iu!\ [rG" S'/@"'il r)3oX5H̟8x.MD8F*J&L,!@"U.o{Bo[Ksb#Dʋp2Iɐ462 IDAT p-51Œ:9e}"$"vdP B1d$-m;o kO!=jx-S$Eu|koTJc">B& Jq5+:YwK!?źk G(2iYHkbE%ؖ!{3!k4 ގJda"AL&!]&@cC!$(RLSV9M$9~P;E TC6"g3;μq|,51Ţsl&RٕFȄ,i#()d#h YiDrkޣUʂ/6#k<Ř]a6!>o߾VAD NS M-g]茓ZҮ^MgT$>S,qS,51Œ i#dD_FD!6Ln8df6)ݎFIJaqCud)F<D ȥKL.XTbFq{eH8~Yw_qHW[8>BoڶєV2~"HDI<+FH о4>ȴRjF^{pkdEFH"ilc%'0K#!ؽhY hH؛! If,"^\H*I}Ey#_eDY$Y$FF%7f!)cwH Hq@jaA,l=KҶoN%2 %RuP,d(0xc81mL=>)E!Zv//@"DRkT] 2-{}/>ȞdZ8DfFQLB$lg#}YR_ q`Hq6ώuJv%&T͏ }͖H unDz#(F;o2F"feHg¸ܑ:/M}\!tFg|Y̓Zli&-ocq7\\ inb㳑r}Yb X58{!2@eu7d)')[{O=ʗj٪ҲeuSBW~Uo̖=_dC :#J9ToK7! H8@ .\fO[XZYn144Y&RWΩ~ABˏDƤ_6I)]n_$XLc{r3(!:VA4.uB.h(н|`wΒV8i2ۢw`5&z*bNs!61#!i\<Id!,u $BȨfi]AmN씍>L{Ty$&Ф"B̖dA`RFzCYzIP BȈ x-a1YaLOwVXe,I"JS_{. "89ɥD"$QRO!F?f#@"Xs:ݎꦤIe>l",l4 %9K´7̍{-_4v"1H_S1fjobA1 Y2 $BݽQ."Mt;?Ӧ8]Ml$g)DJG. TxHl$o(+9VrP(H&^H)j0(Tz[P$Ll-E҆DR$QZ gI@&U$JapOpP$Y52ǯ:n^(1N eHx\*iLgYr%/)TZޓ5͕ wJY,K߱ţ#]ȥ!H"k!d"V۫ZrKt/IQ:N$5GSFq}%ƗHaT|I8)FYHɽy˥H" 5HIE vĪtiXG52y#)( ~{(ƬGHsw!>z[cD*qvK?BR2D $B$Y?p8Ԕ "l %mY"ͤ%%Q_$WY+ri㧆:H0 i8I*qvK?ƀ"5{(!qс.7FҔ(t)iu:EmmS6U"Y}1?Fy9( OãD"FzccIG*qvK?Ƃ" P B&(n9kJ)t)GnJH#0ThE&*^{Ϣ BD Cb _FL $BdѮqE0RKV(tN{$D*FHqeFd:PYJ$eCސIeLRw8Vd $%?j@"LѠ iKKF2&5֕L&%F* l]65.QۍWhM @ܲzSccIG*q[ƄYI$Q UP B&eowoBG8Ս_T?(*F$bڊ0$4Ō; YOSa;hU`FI3Q"4R%˭?S@D|!9}M2)+CR~*Z 7akFzHH*t"IRvnjv~7oA- UF%@D"sR.֟`V1FP(!H _>]4V"I:$WTSIU!g!$R+Ff|2xR";Hdvb!c2R.֟0 _@@"LHƦGΦd j#qF f$Y`jJVO]&4m%RKgc| GF|%Rȝ%d!FSOJR.P2i9pxv $B䔭7ww0wSʠ#abZQo PˤH3Ԉ5"2֦I|{6 Q 3̔(x.ا(A#O.݆29ǯ.A>Ū6M摴G92=%e# ȘdHD*G[ "ǠHQ"E !TbFjcb2)=&ֆ2 C꧂맄(cdqa"Z6Zh jOUZilrz$K(FHZ{ {,FsoDo~56?<xp $B,.\A*a#B'gC1C: ;A]8%$S(D8 S,9Ja8Bbk\:RʍPug{N_CDz}(x$Vg2#J҇H')l|(u-g0DRN%t X7ZwD{im J$20JDb#+"Sf @"F+ IgIKՏ VFO%f +R~D!sI'$$%U"kHv'5ІH4ns~9tWN)^ҟjsRRXE>^@CD Y )Ih{ UF( (V%PDR)oHBcH$}CP\J|e%$^0 )>bDjMHP%sl3HCEw3))Q?j2e"BI,҉٨HUxDoD A1!wq,-H ^HȡX%I(XrN_3CDil(4"{ڙDO+$_3 ȵJ$,H[Gv>qj׳큇, H1fYH@-5kf(!<)KsiO)Eh*YHDTd 6j6)I'zH HUnE}1`~")S9s),|.d %(p $BȬWpjz0$UCU(dԕToQUI"A/tHm,K$K#h Q׸l!HXB"I79ɇXk\6RJBzkv(!#e!i(5W$mouYHhg ,Hje G:4mD2eS(,~-C%O.HA۝tI'R9MNeX㲑b}XJ? ١@"NuLbEG,$!ȒH&G<WWk#$Y" ̈́MNuLCȼ#:(|jLGԗ1,O;)O1H8kP BfGHuLil2oIf ¨FUjcQgH< 'sIyCSuJAin%3Dn)YHscD1eI}%!$ ^gӾ){h-BI7? :T"i*ٴ.ظDj-!%>P$\@"D4W9ju(SHAت)hJ&DT %5mHZa)ZåAH"imU 7EPXwp]CF YKB;8t[)ޗ% !$V+ tUS:.gU2FI46e,J$ EATHR!*cD$R{:%R3xtigTM04HwnH_b>1EʱHdp;H8{~l) ȏu7BeM{[#}-y$[XB$ 9c7I}%R$08} $BHT9td@D #^<\I"͆&IYHD5ߚ죪O!-lkmՖH!I1IYpO$f&GaBJ%g#؇BDqBGQϚ=v=vʖFSʚ}JՆ( CkE,Vu%ʢI N_s@!& (Q(kboSlHNA#@rMEQ,-(uRAsUu>mʕMK(P۴W2xt[ctׁb껆d2itW%#oK˖cԽc ˂c}n"h,twE^f mH.K?B"rlHDpZ?DW4VAf0UO+Cʴ1f_>ǩlLu $e$)# [&#tQS+?qOJGRϩtFl$*u%!Y\YlScD 1K?ƀYI$8}?@"Dj{< l=5~{dvnrATIFTr&hP[(6Ը1]QXJ,iG@*& rFRqM$(U}pDBh8و@$<3, Gmy7=Ol^H:{kjc7w"1b"]|IN_!$jV+GjsthRBȣZ& 塔WZ5:idqc!J$5?LC3цH$`G3A&EH2p?"{[éli+)E 1S_ƀLpZ8={{4RΥd!>nEiS׊zJځzji ֋n7?lh-]Mu=nz20Vږpj樺 ah6rs:#TY4WZ>Yiţ#]ɩ/cmd"8}mHݳ\Hͣi.R *:."7h~hqMHTT$> ǀ$DԬ# HD$#C#ݔF׏J&y$y51\H"u웫obtrĝk4Bkà@"$ jD6\y}|!l,it`#նg#Ed2*HNImޤkvz#jMuvןt\ f IU(@RTQƖHRR>RpT5 G"|l>u->S bFn?{K%4?"~fi9 IDATm&# DF^=p0T!b&F4nr[ֵϭRTP[!j-q$Ո4}m)@RTW4g7p$4L5*f0D#{xN]˹̅%H(n#{64?q [c V,$z14ѪH5H'ވ֎oktFHp}S(IRJ//YTLcCX?ͻEEJ\7G\H( T6>[J =-+@$B\=$mH@IDT#GN&rE7F u&@cCvL7FBjQG:&GVgܧ01λ>ZNO{RTSi?[7 8XxNн=q!t3u ,X;z;;{:n2gȸk 7acXָi/~n&\y>UA%cE2)&QN9vpMiHV phԆOSۤ[KkY}l(ڈs5U.ZN T*qH^X ^ik>u` )l!-}J%yx5`{ ;|Z`n6HӳqNYւ4B&Y|$D QԋN#NL` DLHχUHqiy Ҏ7-bL9)):~&JՄ?_^זTi(؜Mǒ\KJ1R*\e4L`{;nxuN*}!lld̎GnPj .]R1w@?i;jqrV񊓼v.5&pPגL(G3qM,ݚGMek!cHN]m/+TkJJ:^?L$A-x|Kj,эk ytqQ!ҥ렻\"8BL|NGJbz@!8dpVHI#hMxF *-é*'`R $>lj#ԲCͷo,>&J!R;j1T)W [זTC'YmM}BMmǍ_)-ą|")]i1m@HO_[ 7`70! )lLu=\J -zHCB}xZu’Qd' wC;̧ kwB6#l5A~Vϋ(LITu{}$鏁O-+H*{xi(̀C%`"C , u#&}-!(+Ѷ`0vIC$Pi@xX=$p:kha s+㑳fع+J-G@wGpt)SW11OΣ{,q2$Juhb ?W*w7%.vGu y~*s%]pA Jr%qRc qxKGb5 3H18(Y6/#baxqsy/)CU,#Fn%kJgv}-[q#oN{Դp3B \-4#ħ OYsO[ .SpZQː5ƟAbT6h xTZ/!<<GG9`R+r"PqPAb )HYᢰjD5j` -nPԖZiLGyN Tu)l*֥686!s({il.}-AZk}-pha(n:0+j˰ڐOe7 JV} b̀GIГW梣qbq L6xb0;MSڌVNiOgKfmTħlmcGW*#M_[G@RTOilIasBk.Wi僝H\+.xRd,xdLtDk:0 1p3707:#Ra .v Hީ}yd8xrafI8x݆%ڱI+c?Ok!N\lލ+=N$yԅX-Z ZkLG{ akIH*+MDXQ"q:H *l.ā?.%H/ iBwLPwępSD axxdy,oIДCyS?C8^4wpM2X:jbUU`n[(b $rĘQϓJ5C TSh(@ȿc$]@T6v$# %BΘ;iB8 ]LLi{J@B[RJ5F\KDv+T~0ryxd>6B0G+Vz1,s; 2%A!Y)jtn"c1+I)H*4Odp0rKw_pmۅM +;ܷ#]S.ݹ.OG )u"/䝩c! H%iCJIu>=8>{ոt %/Gy)L0Dj{M,ryCw6ңcrl9=*PyV^J:>}45 ܌=&&.u ): 8| ObgKq _P ܠG`GNr{P-ea_Ы7Q-xhN.'}@6!᧲C *k"$A680"PJaR p!Ta|҆|z1ñ'y'%f݇6| ye(k<}&$ڢ˖ueqZCR˱tԸ{RA ֕$Ju}=|?g7(H~5oYoI/p@R@F- 4u,n7-].C1퐚ց>S,nEq,. !v)ep4F)^ۧk"Ymֶw{Vn!JUCKGKH*Tzy~qD;Jc\䏽0H$,zCC>$ L!ua]HԁHFN!fbDm#4:v#388HPiӨs, l-6f=D:3<\eN$j; 'Ԁ|t8m7ҾWh ţ8ZVrlc:rKHIJRJ: ]D 0H<Kx9_J.>$Σdw"}$:D@gRDOfC^6~;VuBGa&(\fS#cXkȸJN$.'ll\$oS8I .$\@ ӹp-$+.$n&(__M o$`#çu\@$q'&[ԑιNp,.N@:{uw*lڂmM"$+/%u$Ե$JuJ||?n ) ƹ q/P2'fCKp!ŪIW@ @g'Y HcW/H!quҧzH`DrG' ,NJ tPN#:bitBi,c#.5|5vIH\87" @v"H?y)mtE3ΰ5je?[#pVV>N T*)/?9@\L[THaWT6*8\"]H(zS%s\X.B; yA'00O}YF@QM;H mǜG2ؼ;# g̸b:4(Hت -)ĩ &I)c/H^]p!"ۡ@iӢu!:Agb!m3 12]E :z$:C$F_22qyt' xԕʉ\Cɹ}hg\Hk#9ZbnRWjeim$Juj%.$,_NFȁ6 @.>B$r1RˠW\߁l,zOBz{S3cl /,0'x3pokMy vN$ @O|>"(4"ȷє*x'3>^Him$kVyoHLQmeɅBjt|.el)cβkI]I>Z@RTW7G>2<ܰh)v 6(z>"Oh .qRt#D!HA48zHIo qpv2""Jcn{$FI}(=޼fRGqwwىDXnNP r{ 3\H-b1H6RWj!h{IR^//'fkb `q}"@j .R=Xk&2ᗷ !U?gz!$`n9'Rgad\8WQ,wX'~5\7j#}߅Hԁ侰 > B2LgB-_u-Gw!\Hh)Ɍ7}SOxgu-Gn"%G8MN'H0e!GXئlߦ~wuڊiKNgri_:TkHJz'x:s/VLGu;WR!G}He{!.¤'!ͥa|AƿX:;V}l*Dn^Ӱ28ҫK$Dm)\ # &!_Rd$[ he]-7WgyS4XJ:J5:Ӿl%I$J0z5k6x+X`QB-z[L=T!H AGA{H>DrŴ .Ƨ=A]rXAm3T6 XDp2D$vT%biI}>' ! Ǒt[ HsB$C1==JnkJ+<"cj-gz,/J+H*Up!Qp$v]# l(F AI_܁Op1>T6 1<@ !' Q> ٺG1H 7{q IDAT5q#Io&K 'J£ @Ir!#BAգw B! yx|=$Θl=$<.$PUQhfH3# ryS ȫc;#*PqJdd=; q6@4o$FZZ#<D2)G]S@> i_X#Q3S"0cD't&M@ -b$>GR<( rƎ.l)\vqZ'3W@I}r} TTB ~)u" l}@wYn=Hfxp!u@F!\8j!:H&F.$D"9g 0k`",L+ #I H I8 ԕAQ$C"eJ3q?8<"n bRtZ#:E 3\lcIR= JDW"ZHF n=)m$!m(} h*s b$aR3DR[Pl^$)agpHOIGu^#K(wGw $J.$W+:b Ew)nG4͹n77n+|Hދܵ j{\."4ΰDpd )|#*H:F)HJE%I>XTf;ThGSTv!GPss!"f}k!)7g߿#Dt<!H*㧘f8rŴ}:[0+FPBQ,BlOȅtilϾtt(LF6G "%.+uvc@EXZ[DaV%:\!J`.dt^r^^gHF X3;U %1rش>ڐ$Jb#\H[QZT;v[?#BYs!-%>QIB-$v.$ 2ûHJ i~*:SL\Z M4ʖ$# e\0z'yq!USr/["b:-֑bU_;JQ;RRZ?>cByERI:H=tx߆Eq!}JgsN$T )> =ͻ: $]HH9\kOiA #&GSHYшظ b Rⶩ pG>G } `3X*DjG-ƔS7QSvIR= hxM]H9xDRH] $-[L/؁]H@G (tCی X} 1t}Gީeqs1ЩAAH>f@op B>}p!U[GU,l[\-bL%-޹R:xv[RR^_ ^.Mt!e6M]OcC5q!^y-'d\H] 8]f0qsC/ D¯ZHq{ږp? |آ$엺fh͛>HZG+£IRj )2l}oCmRِv ..Kхԉ.^x7 vSehyy6]Aj%HDHg&J&E҄_<̍DΓzڅt#^ZiLGy$N"Ԗ@RZ]!u 0ƿed  "c ր!op! x tw!] d:x:BKpL @1`"01LX1,X 1h:meݱ "F~c5C :AZk!ð1"d m- ƺsg\e'ǀ;|kD;?; [ʸbLcbOG_թ$JrM'u!Q'R\ORQ*["D>9Ww!])$AG\HR!Qװ)ȑ\H8-hrLy#nkb!]Q'}2eq}x7M$@"_$lm"Үjʅrk_Z8-uTcGG=Oړ$Jrz>lZHzCo{ʆvC.wx+B R#Fk &W Hq0xp>`SK(:9a)dI [R0؋3+Άύ q _xQ# hʍCjo꾷WIUuJոԁԞ T*.$ mӧCOG"{Hk.`"4 }ĞF g3RnI\HܵRr( x{i Jc#„eIlB8b )NUIO8v;X-ܛ#؝"rnZոtԸ$URQRRTH/]H"'4>ys!npBڷkBm5F> P r)I_cA,0Z Q`pb$YKGyxp*T©bED Fis K\Ha .Ʌ$AP:ųNFZ)".Hۨ8ZkL-ܮGwURԦ T*St!᫩,v!EB:[oI1m4H!A$ /$Q^aޤObN$HRZ ɅH *3d?s`Y{J+)aԅAH! t6ߕa/CBO]HF"St!-Et!R7aGNej=sLIud qԸ+H*J]Hu! ,B&4x4u!tkO #ҒlH.$:VL=*G蝃 X\ IR T">3rP"DXk`}%`xaG"ii\X…$6]ln=Us]HG[K!Rc9Vrl%)DcU ڕ$JTB B3ҍDBCπHq;< I#<©lY$I.$#T8Ưy6̦-j +a7l)DyyqTZF.$L8܅6R"e]\H7ZU-9_Vrlc:rKI]IkJJR v!E.ԃ4$X4! gIHHdra sil5)*\T'ʙnH%gX'-:U~Yp;HD4Rqb]HB}x*:Bs\VrlcRxB-H*J,By'ut^H-^Pۻ:46s 3&= imȍ?!7qx@(04Y\ %5RYi,| #RG rUŐsZ1Qf gu}TǿX-JRWjEiZRRT<_` ɂ{$6B/^L{xݐ zbl qP"< Od:bڎ"y]IBSϮ-]ԊȲrOCj3!T'DPƂMv?P6Iń/VYBcJ9ߘRZP=+@j\ T* Bs!Yaz3'Jeb* WBz»Oe[vHB#RL>CO_-Fcl o"q!VkYa&Lcs@%qM (C`6cIn"U9 qͱZcQw/)LR)GKJR篈 L RFAA {=& ;Gt/&1xSBz@HӋi8sQ9MLR2ZƖC2eӴ)MH Q&9I)kp"gһ$DNwլZ)D:Z &fH/H*J5ϯ1i )[Xہ#Xv{]pi9d]Hq$WR׺΄H4u@,Ҕ46 i2 m,fgDb s` Hs8D*tv,$"m,8׵$mkfL!Ҷj)IW#%e)LRUH1IR*y IK}![W4P\Hw~+o/T6-D2e3|{j!a4\Lp"t*/"K.$aAGx[\D@O3H]Lnq%a)J*S46ۇ>'t5v зcyv~ )q #VLOdZH>Md|H!RЯb*w^RT,Kcc(B"EB&M#s!g #K]a9R0WS1mm dt9c;oxHLJH[< ZQn%Z:V,& C T*R6u!|.RWomt "ڷ>@ uHiKRٰ8=*?  & &'=m>Щ.$qu~ )B%{WeMZ T lcʸp1ŕ|;6 lf& L˱J!>j)Igg۟-SKѱw*Ju$y3Xk f10 d kf{7nL\Cꮃw3E=yOP|F4Q/؁X0X XcuG΀a8V*e(,M k!W#l%-3+ sңveM!Iw7 ]~ffzPeU1o=kVj)_kgڧPSZXRJRMo qn7 wxEilt Kg{ûIl ns"Ḍ^$?E}u21$W_Gr8i׈4K\saK`LY(< }H >V4y ,++ݛ6~WZLlMֶS'>j)<9>)u)R=+@: T* }(A75 ږc*z}xCە ~w;X PZ6Wv u"%,> B[@ (mͯ!JH . 87B%dYr:[]*@ME?34⬰|S_iR8{\-RQ✢3S J/rT JIRf+q;ā<Dv N;\=wxߑ ; 赓_:_j"AIx꒦|!pW>+mgS - 9 pCNչh} ,Y84rNz|3"Γx˛Vo:b5R4(7GsθO-JRsGǓ@RTO_`j"0 QqB?cz;3"qW44Ӂ9D,|>aoA($b@L3+6v6)m\ Y ~(s*78RHtҺѰ| !d];Kd,*I7@ sIo3.FaۯPQo J#-ؒZ'9EjV9X] )H*J5S?} ` ݴG ;L|Amk7`nLg3:):~k=tpq-:#R@ڀ#Гּm-7hSPHU !GGp.͕s>{Ę=+#.Z4aFLIq @/!bOzcbㅀZ7 3f cKj- \=*s2O*@:4MRPP;TA5RxL&w)mPPCTpվZHo0TL CZ hxED[#E}j2tR}$O5ilnO 8Pp#Jе`uմSjmGsSґbnQՊ#G1aEkW@RT;>~gB$j)6X `T'!1.?-ž 09_[`DڇZHX6.$?O7nX w`il@cN9T6>T6w 05)xQqM@"ps<1yI>!Չއ-)9:IS|>WJJRݩϯ?I  ֹ n{C׻[yc=ްzH=Kk#w`.AC=\[ȁ!]88DNmڐBxd,6> t7X"ݩ 7lr*.f2`0Z?G 1e"pNs°vK >,YNk+رTڌ)#:G Υ{u U T*N.$DABX DGH@;",g$D2="cIt dH & ƞW¡r1NK nC\i|;9]ΰiz][Å8P\pj7: I!zcÎK:i-GG)cKk T*j!1֪x=؞C5nWݮp]գ7oa_ 7 n὇[M|QA@ I+*헊lFqZ>t~E5 {r"1c4c*#PKJR-WB2#ސbӢ46q\M$.v:?HO!E!*"$^iHus wp?yJR#NR!bmj2[*ҥIa²K -s|w:Ba]"yR!RGc## ufKɟĎж}cyi!cS58]Z<RJR-ן!-mݐ~H6O2`GrPNۧu(͵@._<8]s]HC!m~ OR -Zϋidp[Mr" MdI=n\:`!gd>"s{G*K-x~ ?5^ٱcDH珁.}/GwզG:T*j~~ kbGGNuD.&:nֻGхG΃,a]Y6^&6[>!vD2GR؆f cK:/ v A$cWulyq|;ZARqq/!u%VG@RT/ޅd&ܣpᚮ68 !7.w+ud8s'0Hn[@GRt 'Ut~W3%˻ПW@(MN" gRܠ" v0gQ!#|J*{F6]F3k՚.,kX-c?I-V3¿<}tN)@RT oR$pRCU]Lg lYE(S:ہ5CZ1A$:.qt>G+ τKRst}# 7%`$ãaSƖ=aFi$!($NeX1W̪7- gZ)Djoj%I-V+Iy)Lzh=(MaSTS0mÍv) T6lڮ4-[Oh<7iē*+$Fd%TJjK6*aO\Q#)hnroc60]| [|AH499h`JMkB4M!;QCV␴:~Cg-}RIR6RZP;TH*wEu{BBlAz⁄Z0Bg X@C"y[ \fjrW/A5r $Q`&tid.}J>{1Z#X+,ߵz,ԗPtfIRv_$};Vr1ͥŵoȕS oBܙBzH;Qyǝ.Fq[a.qAt؇7 mx~Vyl aGlIQ֬]8S Ej BZ-r=NcsKNGqθO)[zN g?ԁRT;+rH yA$;,v%%>ⅳiZtܞ$@^I/k ':yxdW~_txő¦1Rܘh셷!#4&6G6N"8hPm7#ohKZ8r=kelbi!E~)6Qj4}1$JQ//?Ϩɘu,MH]ǂ9&Lr"q'%)Q xHNP#lB.Uލd}U'Ը:G h(vߒ a$ϣ8,K㈉GVd}o9ƞ26WKt8wF~!zG:T*jgFCkDʹ+:/ȿ\( 6qK$݋ $K) $iu!žK_$Nr1Xmgm}i1/}T>yIR_<)fC&޹ȁ% cr)Dr;v5,cAb {ɍĶ2бDlRpP%>l !7Uޘ_C!Yo OIGuOUm鱤IRnkT}axbmŅRjFxjtFט--ş=zT5'G'} JR5ϯ3}*}:Hà ~W]Xt`Lo30wOa/?.` A/ @ 0=Uڠ)<[Za9Hˋ!cG T+HG)H*Jՠ^?B@| "75Br$_d@$n}c+u&%R)j,n'fYs1ʭacN,1tL4>r̺Jvn}U$Hccl}{|I-4G* T gx:Q T*Q7ΏB# 8hqpB:r IHL#@P5ru;F8H*;} aQJZ,aK)4JGq9ɢ HU 2OG~qxR LnQ^BT*/M_{\IRoS׆7ߒzC~Y ik)n=NgC۞oJ)5!OhW6IEz! ^Hhq$EO:w4R58mpmX^Q} ~_r~qw ZFϭ4KRxRRT HH  ږeQ),f/.Z,jxdId882J,Q(# eAQ}'iB\ g1Z ȱ/%I*&H-MaSTSןzƥY0_^S ~3enC}4%K!WlWg"}ZYٜ6t5ںUmlq֟8UƱu` Gjg`r?~U[- y9%%]@J T@RT7Koa_BD{/G-O#,`)$Ğ6*u$Y q%9dY7s_i򞖜Nt^%oK<+>ys` 1j\5j5$$J:r0d R46`P)IU]#Os)l(&t$ C`W_AItn%-D$$+dmWn3P#)rd:) g[L3`6>:D $bttpڰ\4MRxyvlbJa0. ?9 ħԵsR녡)'#ǒ4uI֔ے6c[N?_qڔj҅@$9?U{R !jtTRPJRJo?OngX4(8M;Jt5.?Rٰ/a[eYqraβ%F66bEuqm481]cؿՉXx>*-ĐS˱ըsܲԡth=wFIRϯi*FFR زl*FP{TK$BBכ:JQϒahx΁ԺH2W>ִG!^Z^m~Hm¸X-ĐQ~J:%Q5+u T*"pD C$ q8D .hQ-Ķ?Y B Nl~IeL\KOxTȝPpXT?!Ѵ6Ra)@RTjHe*ܞ`i{ w& ~\It"8`J6|y%3V1]iX'MX[VXUn<*wfߘ,xL׺1:2DFqVn[#" HJzLWT\ T*zy~dpM{ݲdH@B: `$Yؾ+7*Æ[ލ~#N@,ehf[<߆Qn:"m?c0.W+q=: KHG*.H*Ju`RIRRT'Iec(.f Du!Q蔺R7 9P>*DxW Sn20iPZD,jpE΍8k+ "}"=6Qn)hC}H%IJR@//# IDAT"a2"C;D-HY!~[n]u_ fFQ%LWGHkE|>6-}\[9U'شZ /#,H*Ju?zHaQB$ C6I~ ĶAA.3? ESd++̑Qy}WMCAdIyL춋u_n͏?[L Z-RQ✣@-}|/ T T*Չ5Xħ0BrD!eI&[Nwl#DD x4F=Xp8ra94=}3n_ x4_6B-OҞZtq8Jajei#UI T*Dzy~F.H04,=CI(.$$H#&1AwJ*jUX3fu2E g"3k,h)Z;nkHajHU$J:~RM$Jz nFqQU ENT2j5R .}U w_Cj6:X&nóBV_K #uHJR=^F ' ,[ȃ LQ gz[JXwJcZk"gLbttРoPm'uHJR=~|sr2DydbdT)l]$tIe/@3Em\@W3 IniSǍl 7-ĐS˱ (.uJJR=pQmjIxooEa$l+S*FuhQINl֠ M&b$#B-zjƽjpd[Rj T*Ճ%N5)r# :Xx[I/6_Kwv9F׮z42ãXH ZǭrjݫR}G T*2Cr7l" "DdU(ͺ20pd5qefq0M ݱ-AЙ ^ io~Sz|R,%u$Jzp!dqåRBe+đSMљ%mR^)@RT*~yuY 7HAf@f j&cδ_0s糕8r:/Ji4)u$JR Eo˒}h-g%4BΆ2Ȭ(?;]Uo@N uA!Q~=~([m%= hJcO}ZB T*JDz:Hi6t2d4` pQ+ ŝ\\{}tkщʜЕ.WGA,q#r4z~8[p#8UTKHJR^zHB$ "17R4:m˦0Lf|ۊcrIw#FUpLHlaVQrI]Lyl 6* naqqu4i+#گb)㶖&}ZZ T*JH#'EhE$ )K(<}t1;ߑGnq!Z(oȎ5HK-}PF~m~oTKKJRz ]xC XuXl@RCꯍ mMOͫAMw Il9)Dg <^?3ϘjwjYH T*jTo?2DrSls ؓ4jy |LEp(R{ؒh.PH T*jT//-)A:Գad6yE0N[ir$>Z`m|p^:DڍZ=bL%=G{s6}/_}ZE T*JU/@"u%7@2۔ת.t+nZSa_v!qZVh'}~ZiIAU11/)JTkIJREjP#26U)DHbgdQ|"L8^}GuR &YKgH{# Rt)cpt6)DwƓ;cBY v#RRTzy~O?MH$%gʔbוr8U]m+G^ iO鼵>q[T 7{/rRRZ[ T*J5K//yTr#Aƍ&l2ɛzRxj|#"ˋTA '̒7Q iZTk !J =fHj )@RT*lHPFʬIbU㍪g>U-p[]=B 9[LgHMIRTwr C"UҮ к+Q_\ܮv_ 6>;˱Bwbȩj/V*)-:h! β-(>w$JRݭd6\ڐdb0i4*Rhn"t3`*4aa!o=s;-PRժ_U^G-IRT(+mzˆJ-p!8ŴAZu-~\}Qؕa&~/wl?`cnȏiV7E Z|8ՂϏT[KJRS-Dr#! ͎`'_P7|W8V۠blq-شGN7UT9MN}Z T*J^_0Ha2l~U}|K96 GS7Uw~qZ㛣JU'u$JR-?'C$ Zيkb޵hۻfRi(̩a|fĦ)Ź3g8r:Я:f?IRTC$r҅q.-rYJ/|RH{kɺ lK3$ǘWj9ij/)@RT*j" ލ$]$ jmiVqێ#ǝ`Yn)[1Uefnv{AIu5OP7yn ܏-5 40Rm܋*o;<|^Y UHkW-OH;ع}RT˘%}I7?? :; Q q ,59H#9ߏm@ OviI=(.[?r XxG .DXmlI^}UT*9A6hG]}`1^دsH)߫ 5tZ>r *˿_.8@96ɘiB6a-;vԣs?L9/Bb6RyRp>R>SJi$ckِ Ňn!Ь$9w0-z;"uН &,qU3$$^>?sﱰׂ!@9HN#)C"0whZ :IYm6p?fH):)w CYIw2O}C$c<2'l Jg3i, ybIz縏$ܻjRguog}"]|x r&W韉.N*#@ured^HAI:>JuMI|f#M;ZhRQX uH7l$F%:& f :)|HO A Zl -B$cL{l):8f£l4FJyo$ɪe:"PRkЂ s(*Ox}zy"R9@)1X!Pa`#AP3D&p:79QQt}3@ڊ9d6RJVϘZC@g5hCP7DN^Ht4q!<2& 6f#ٝ 隴zl*EEm*uH{\f$sq $&֜e}Fw.I5Xs ]g,]>HC$cXI.u7w~ %Kx4YH[ZCTh %5!4Fd@'Hvx'vGe*U" J._xd1O4́BѾ-uāĚl#T:5hEP;D2zOBHA7ommvȼX:G\Iil^*}=-]0j "S:.Y[;OEjӿl$v>R벥XI5e4#@c@c)p 5LF%F"HʯР6H0dblhG(Un|ctJS5&b|fH}!k%H(8}u4 %nugZ?;&bve=g%z9xDSļ%Fڞ3'GILIm)E/RX GXdLo}3]Zq=Ē%N*gHbهH IOs;#G^+{6R ljRbB^fc?a@([dLgOݦձoMcb`̯HmYr^Ha}(Cx GGG^zH#L6ZAb.g#RpG(J!1:.ϋA<{ͷSg$bkl$WҲ:Oj].JhC64ot $p}1-0(tzT௱`FRY"6W%EOta 6׎o}NxwBMLI?DrmC) = #@ ÌEL!29VmZ$|tͬ1K׀>H$'"mB 0T )ĒrkSrBG$;b?:O,Ԡbk$>Bj#H[C:H/B%/,] ڎi$ey<£vW+ɘ x$#>5,J?Yt @@&'OmЃ%qDBړ꽛+H}_Jc:C ji{K3kb]]||aہw, F} N>H1$:g-AE͡J_TuXugQ.~~,q}nAg1zʺ&yġn}>j^K}6o}H;OjvYaFOR-4Kͬ!<1 a߭/ smLFy5dwbg$ˡou>{~{{R4Z6 B햴mC$cz;au=y]S_c+M1FԽD཭CľG@\,aKn vƖ H=5G.O=\{VZ=>Jh ˳ieEc.ikm4yєn|+/uHgK,`4;'_^ff`cIWKB%gͬ!<a Z}2K.!f#s3c ?ns3Wɵ(=4,ξG@*@B}b.>>wh.Y 9g26l/|݀?O5 %f P'yb]z~J/g,- # $త90(ʦ]":b Y, o{3kXd6p<1K 9>&/앙9wX᎓p_HZcp >.3-mMH9W {P~*|MA [~ ZJpmg3@Y}l;L|kn߰{ԫ17*LIIV׌M+ k]|/i`L=r#@^FZ6nTB䢫nE0f!UN}'Wkτ XhgC %nR\ې6iz\i?YHA\FZR[ARcYHrEz|І@YH}RINf!jA!u(-y7Hac"L:$ l "w ɼf#6HqJ1 Iv~>ɵ}l Ed@'ƠH@+UJ+YHt+{$HƸTRJP: UB*mRR갡,*l$cjw%`ϏYHl:liW/-@\>>}䁝kmzoB(U$;jD,GH yl)\-*f!M.izli;0#@$+zTމ`0)+JjFZ=>Jh%#@'$ڬd;v? ޮIg$䫤tix @YFc; 5*pSsQ2ە6ԺPڦϗ˦ـFH ;H[Ib^rѭޮI_$6 1ɯRIYH%v5M"P2Џ Wg#6@5a C,{Z&>^_,ͦ@Hڌ7i[g!>-:csG@9h?+YImáni~/li3kCx ཬmg'u=f<*[rރ]4՚@sԘ?%!@jLZVR$YHvKoߖ{Pke"@억mX23go Pn\#\H@ǿzl.]aRH̆ڥvKoAm <FT-k B C3 nU=_,Ms]H@I$8""f!ۭSv kP>$PemCla1k1TCo6VmG@@qm R?f<_5vkhc {(-UAm֥l5vkhc,Nxԅ yY[0I-zW3.e[C} #6H ڶ| 6wofZVCo6C@: pmʀ0-cviBsԘeȀ Ti$'*p`i#Rz%ѥ-#5X,[.@&HjAW"Rz%qJ[4Ckg$c/Zmor}$^AKjƐm)# 쬿uhv`z(`@9UltKjg̶pܒ=GD \B8,Zz%3e[7N&@@ aRs9x㞠nIJ4=%< `ĭ]H li9{ufΚKjNmxF!$KA1Њo",e[R[{@$G$cX"-ۢ>%<0 ɘiM}Q-%eKJx` ܁j!RMܒZR[W @ H2zis6ǐKA1-W-$߮+s ä$D[Z[KkO [#."$bl $H,^wnC[5ޞ7Csd=ۅHbKl6eۘ? @ks6C%_f+YxmT,@|HurP`^6e@*H!|67<)] o6f_Z@AvA>{!:/ՠ| mJ;@vn{9` GH;75U"{ޮDd @.Hm5+kH$(T:_ITj]{"ϒ5 Tbj(Y 2JUH޵+b,Y @eg%mIڠՙ Jko[f` bVfͬ"KD*^B"HBMlm-W<]\TrlKHD[V_n/ocJ~BB{~ f%mEH%Kh[6d dHu0+ioFyTzoMlCs1 # Y}e1+7 * j詗 m`-iVR[`XB{%ϳ : &Y6^I[ MMTC/6zYG4"@@0o:6ޖ'Cz襴ѡ:X}Nfُ4Zz%ӡ : \ 쵙Fg^J;-# @@2~~ A@Y" ^%fad$͙6$8 $5 `a-Kh釪GUtttOuW_Iy{~9j>~˸ 0̶mE E@ dvHT}f%Ib1u **mdD@{zLVU)ݑ#GԞW,T{L8T}T,5??/Iڿ=3(s@sTiAe2)h EB.3$LFTC 0tꃩzggu8E`,rZۺ֓'uwK`(,ڶNtk3F@h󵋶?lUXTXTPfu1MTuڑg28p@?Dd2©#GlzTjThC3mP( T6P"Տ9SݺIm۵ gR5*@$r9-S?t[C@VQLF1Hm :*` @oPnP:|*ԛS6e :@P&T yw훟n}=D@amkF@Pz&T=S)!DEh /*,ڶNDTWTXTXT m^`8-ڶgS3NhXrj~~*+QAlvdLuTïpjnnNtѾ m9SݢoxTX&сUbQmkii9U] l9S[CP5|洴L&l6!ڿ-* O@M-ڶr9zЬMQUU@ ?ΊzZtИXSUMұ={5=9ͫꟅ|^dzY-RM bjѶubf&eEyUSTag˥X1 qC@19S4 q h@P@}T+ *8ΙşڗJU|*T0FmT+TPűLFT`QAChѶuT0m[ \oTa̧B'^W_埢^P TxT\©3-S]OQ*֗twKjT0rXSL J;_:g'^J,:h m=rK_]Q/`$nХ5Fw8c oO?{T?@ZTPN$=okW/. :13C_gQ}r]6?- uԅ'APǶ?Μ9s1t]t?H+SnkʲN,G5466 驧ŋOkiᨗ0mh^J©izLONŲx6 JrG+c\W/G4D@$3ubf&LLu+<*.O}BtJR+N68fƔS+Z[۟$aªL捺⊝*KzZYYOַzyC *装\NU8uQA 䔎?N۟+_9tzLHH1J$T*% *胠/sFA_\|QxFdRjȲ,9C@hZm-rvFůp.eԨs.czY/>˗/ҥZ^~FdJփQ/`PA=Ll©󢝯W:g'^J,:hH}+}_=J22W*e:D@[̙[;Tq>U7 A*Jjу9Tt?R\.D. z_#g%ZYr)̵nqPWԕWR"aZju.]ZeJtiE++.*CaKuhX)Φ ,HҺ!xTIt :9SsA*NWdRUp6Ce)HZ@m['ff^FO]wwFw8ulKْWu⊝J&r]R)iuuUT.T*zY.]T\TP@ v(Iz\ $h;swl)tbffI)WAeH$$IJ6?6P@̙B8*hƠ{H$e `1,˒d8#Y/,rZ^FOWgLťůS+:2zf^+T21FSURV˪T*~%]|Ih||RF|Gm۫Q8uQ^;_éQ0=9˶RWQ*1>nHzp'?ɲ**u@Ι:/LMx>U\ |{9yמ5^@%9N6?6Piq3ET|KulXΧjz% ?|Pє`PeyV^NTFB.&v>2=9c{ƦO@E_Z>TPEZƗ/-`H1$HYm-r h͜-tjeYg˥3f2m͛u}_:VTJ`UU*UаUYmfcL$=.fM3Riڹ;VAՙBT >lV'ffb3k$鼼)[AP5=9RzLUHl*t @,|q `v>䔎j!  Eێ圩E0|pAp"09S'ff^J0g )h>Tsމ||TC `?|TSI̧&Ts׶?*F@``uy1g -<*.O0 \.s°ؗJ؞OE5`!0P9Sqk#0|* -z\!>< "𜩸L!:1̧mΔĜ)SlΙz\S=ӓSjO*&sJbnKP̧`{Pq3u!$GP_T*hK0%1g T,S?TbѶ3ͧ z @OsNDa=STz9S|*l-㜩b|TShؚd 0m;V|Lߡu\ҩe-^Ζmf2 cTPX\LL T!Б\.sh/ֱ={c9?PhK0gj!z)=Ü)`q>ՉS @KA;_܂E;0U|lKXT ϙ[;0Tqjc>@sT6ۜ)9S T1 `#*59S` vӓSjOF@`];_\Ĝ) n8U|*#F\\L]z!&󩂶?*01 $L&h 1̙7qOTQB@L|`>%T`Q/e@P19SŜ) SťOb>7* v8Ι@'UTqB@HxT\v>)݊|*@P12@y>m`PC.3v>)TAAVT㜩3`0 `pPC&s.D#'O?SaD@ ͙3`0mq y mr"0X'bGP0|q).hcPETTbD+ySD@ \NM0%1g pc>@P9S0ؘO?T@:g꼘3 ~T`P)پT:m D @L]TqiDv8Ι( TSl*`Lťj9S^\S4T>[bL1 sT@sG0홞U۟|*?T@qTI̙nT1 Cq3u! 81 A;_\)9SӓSOE**` m;sSS@7.sNDal8ϧt sT <@G6qE1g E0*.T@My|0xGPZ!뜩"AO̧P ,r3E; }TTS0* mD6?Y; 8Χ%^0(ޑͮ2W7lEqshn-tjeYg˥eAߵn#`QAwƶFctoP p0g -|*FFod԰U̙|*'TI3ӏ: 1(qL(ҡOFʽfNA* hnKP̧@@繜~kfF; /3u! \APǶ?*⍀ #ᷲYE>jAhc`3ӓSOEE@X϶oUMIC~3]MŜ)@6*h# ~[s[O̧ ~Kfu?]X)@J>̙ҾT:m̧ +ٶjkZ_P]Ŝ)@'1 8 Blܞ)73#0u|`|~ TSC@X rׯŢ )h`Pao)cBUSv`|y>m * m[y.}݆QVZILESmU 6* rw_Y9yT`PaܜySR_NQ5t|81 E@rs6 ZSjq@U$Iy$hSP|*ogzaIc>pG`hLONŪOb> kS vVկ$QL#hSP̧h**Q/=5ֻgf4ꤺѹn{8Χ F*Iz 葯©nΠR]mIM~&$h`*ڿ$QES\IogqOT}nԋ-KoGс(lwgBA1qUO;z Q1zl;.z=uxvVi&m.lO_N}aL/ D Q!jʲN,G"Q/ Ћjpuȑ-{)aPBnNΝTQ6=9)qΖqOۅ|^ùf^2PVB>}wY= àXfZ#Q@;ܭN," S]6S3PmmZZZf SR!TKΉp NKkAU\S)tИ}ٶumoLKY*/T[TO=z4us4.mv>^W9`01 QaU8֓';j@.'W?|v-rvۍb6^%饙nfe$M^P,* [BSnBvȫ0i>$]4Oum*T((!mجX߂c᪬2ZXe$c< "T-S ڹ}[S0 BT&Nf2zv6?R0ʪ7~Xq7ՇTUCB-yt61I ۠rJ.pjy>^aA@Pư]7$/ -jTU osC*7FaU7VWelF7R]؂9---iE+X: * cS"BTgINZ p0S yS}e[XgCfTx XZVAuUp?7;lV/&t p>\:zT,%I󚝝]SjU<pJZy=%y>`ؗJݑ}_ӒCZ Rɺ0¨*_ąhQ@ fNUF`QXUXQ>D>e٬%l"Ҁjnne{Tkd2۶EbKm:306MU<TӓSmk5UJ=OҤZSfI fVRGmETl4"`mg%q\߾Z JUI7W\!nhǕIj\Yլ"UQgW ˒VmTUQ@Oy//ֱ={2jL^TP-% IDATzN(CG}eTjd "WB3rCuOA*~iV@?V&׍k-Hm˶Y]`EVAYK^z lv˕S|*)Z8>ZL)e/wdYF$d%,%D\z~$ )tqVou5WfSm6= WV%<> Ϫ >O0;uTrǶuPe^lVXz;kǯ^TT=mއt[6Cw4?ޏcqZYrP"霤TO5=6Fd,KDRdRP"T"P"[VBXJrj*+fy.ׯr/j-GNQZVRQZT8EST~`Z+ZWmVX᪪֪Ғ~nv?42qN%3i/ ů*fz(N: ^Χ7 }]UR~dKV"d2tzL1\ו::UUU*UV/RRZTkTW"Y RɔJKxTNoGn^UUJsUl`KϻG4<TT}Ͷ5;3Sk+ Tɑ=؀S* "p ЫT$$edR~{e^Jkl|B;P2zY\\֥+*K^P0պ`( I?^?|=̤dYVBɄd"Tz\%-JYrIr EЯjR]LIm^V[Sˡ̌Y}vTN6 %?Z%㺒H:]uk_w}3SA7 :=*|7D8ҾTzKm_#ruT2R2ؘ'vhbbRdZUK/sC~uR5\P5R(iPf_\%`^#ւ+KFe)aYJ&Kil|B;:W]U]쪯 ϛ `8zTSAU0,$/Hm+f_]WS*#ԕ{z^?5mLO:=1*]ᶿnKzJ+w^W푌jiUO_|F+VR^(U n\W5[^C=0՛*}U(TמQ:T:5&e$Ue%U*뫫j!s&ߪ*gi-誆ꃪl[B*qU%뽟~. (PapTvUWI퍧0 nV?}5ɔvU^rT+ ߕ0%ymoUyiRjrܺ58@ѵS䔦'ΖVuݒvhFmm.˻;0J>f'%~B>E\N5Lc{l[۶|^\Wr5VRdKꪴRcq*WU.y퀎:mWURƊpJҿ.FUxv`q-뵯̣1pUSBAY : 6{N/hnI:'WZK%yԪ.K)tbfFf2M*IzQ6ν1].4V_]e]TJ(LjblB;TUZ]UZriQU m*|?KkAՄjUg ןHSw|]Z6IrAXӧ5??h׮]Ѕ $I_Vנm}PVq)`4e&^Fo}T@H$ KS3N;8=#Ǔ֦|--%iHY=7s9=;ā$ŢryZr˥U%c466q%IYT|>Y7/+# ֿ_+e01ixhk! ]sY/zիw^zo;\X,Wx8 =aڶ~?4fAU'8T0j:FAB>hE s9m dIy -?/ӅR"ɩ+u491TZ)+4F)<`4.J* wvKcY?$u[25\_3j}uUu\UUk_{mpJx>۶tȑ,M~h(z)8Is= )н)۳WR騗3 gZ;c~ٶM8tw@7QuryF3fPSx>^NO|oiI NS5=7r9-K~(qTVU5qoNJr׷6#'a3Q諷/k9ՌF3+uWG066g7z_}ɃZwk|s)#zYҪ*ՊP2re`nW\.g.뮻`p,.%yw,/Jei"'.#ai@5{ +ze/A/V"Я/GH4 º =Wp @B@5ZpNg˥3f2:%OrzĶBn Mǵc|RrAUթ*ҲeS2r^`u rZRUTeTZ R-L_@sT /Cgܧ KZ]J,+^JMOXxMz_R٬l1^O5Us[9&h!BTFrIVcTݶAqժpp*n*\MT5,oUXJ%zg?U}}/kZ8q]Z\WҪVW/YUqq*?~~EѕZ+ju>|* Q!\Nw%qc4LJV*eI TJkUT~Ec 6T~pTS**iYKt?|Z? spTz;fu} Ri/uq9.VyWHxMFjB_2f[$k"B@)mOT./AUڿK_}8U Z)aA8TS5 %]VYR5Gہ j||BjJ*K?/r于P=^]o?~ͽ?7 M(i{B@P!,AvIҧs9=t͵πBp_.Rh>_UU /"/Jwկo^0}*ɴqk||B;4>>T*d2D"T*T*tzLriC8%IwuW?E{>)olvV·}GS`KuhnMONEYu-9zC.'#_-Iͪmn9J8\Y2e%IJn}II)IIIi4!i\_N~^g?;-/yɋUTH$Nն M(W2R"P2ŋϨZ6}nm mST5G7dzrJ]PuU\̧zv&#uU_ʒ Z UO7Qqr\%*!ϥ8!JyTjU7^Q@Pur]#J'pٳվ}tЏkzŒ}]uPEk/.AUx>U*r\GN-\VF*cw>5Jۼ*8JRUPYVM2ksƵVEk_hj nkM-2fcswN_c~TE!7[SaT\N5m~/aTݶ=+*U\w +ɕ*VYª *~A_XJqTW .V*zk_ &p:x:}^}OǾRiug~WN}U=KΝSXԮ]k׮m^񚛟IOnORwZh o}T"ͦ:[.E8S(h!׵٬8s*- Gcʩu(,J{5\o6U2&B W%-~K)+f^ @UO͇TT亭XG$knnNbԕ^>urmAշ)08*hkg>YWiUJUZvmrUvÛmJnVUVշ›(]uve)e%,T*vIOs:S`qb{]?~5W[7X,j~~^dB~'m}pf5hͮ z ={^FԽtL/^blS+˱k3FPlV + 'ˬԟ7vwjBo1K#qUrJ$iYғL"?gm,qE@C_]zӛ~joQǚ>϶mYPGс6K+ fe5_\G8*۩eZYz=uxvV[Lyȶgf6R 5[_n~FF ?^ uʭ} ZʑT1FRYRqTV$=# IͼZ}s}`PX8uM7777%߿_l/Aէs9}*9^`*l8UկYME8* U=oڶUQmg_ ҒR(eJe*h2zqtu&wR@GHUHf:yy* 8ET5smaۮ u>$M+-; a@@5:OM}Rpj;/t*D l;.z=ﶿ^X.v{m[?1;gR@[XTjlVìv©~ϧ:#ZB@A?IɁнl6#GH577bX;\NZL~k5$p `{LON؞ڗJG913٬>|{^ ǨbyIkm0㪩~BT0| -/^EPLwynNU;3ZS Q!0|'w^2A 1Zb&g29bövZ$)A/ֱ={5=9RztS?oҿ?/}U }.tn^Χ://|GoO4A yضpf #\v֡cTM^g?-oy~T r}폻 }˗o=>)-o[r8%6A@#BAR: t *A_Գm-ڶ~F$@T1|aȴ~םhӓSj|Iw# UL|Ekψ>a/z }[6}^z荓7:׫ F :S+Q/'v?v?|I^R}#_GU |>Ժ宓 UP >TqzBz-=?B5D*Nvmv]bW?AV#zַ֣zI0ܟfn*Zl |?I=y>?zI0rطl[Ba_T}d_*c{jzr*Usuާms_I]:FSS=G_~Mo Ր*SS+|ͧg=wg~h#R)i*=%*x8jҊyp}D@5ꫧLmT=weR PP=Ջ`k h%ӓSj;t<C IDATmG!Sm=WOI 6F' H %:S(̌gQ/bj,j0ջQ=NAU :hrCjܙϯ{m0s[z ݘ||?"!R3MI:ͧ T@m 6)BSIF?pAXxJoumǍ=V|hz=?H5^rQ׬\lx՛@TZY֩娗 ya*ؔq]2DYǍ}%@޹goKЖ^WQ*?1'wx'_5Y͂-pNg˥3f2::MQA5aV7;Pgu G'fo;tYk.#u$]c6?vV2]۱shn-tje9AUwm&ۘO QA5c>EnwT Iw5_"D *DUGw$~HR͂-_`jVVXSr#Feɲ,cj_[;\⺮\ו8 >B_1zyr|>erIw\-zhr9}!_wXf(P!*ꣻdt=/enɵ]Uk.^ԛ@Uw8U=(!Ȳ2ȘP7F2/ ]W[ McvZp< Gi>U֓'iՀH6G I;* y 2*D ?wDOlppg 6ϧjA5'HD,Jo(L*Hɲ~eվzZ0մpj]Kߚ@j[^I*W\yi s~q1 ≀j=b̆=(EG@rUI8ܧT﫤: :x]ctʊY7ﻍ|Zуa%I%)?J*HRA;YR8ꃨJ*\UUA`=D"7+zR]Ձ8ͧ 0 cH\nàrT?))>zպ|BON66 owyM&wzoP{C庺bBO?W׬͏5h+ƩdJJ5HTBDB 5$K6v}K_0{*\1[讫Zꬫ{ ̼*Kuzc*:sw :h ,*- jϷ ѫvq{νkTMiy0T'ɲ$+UTuT}Zу蓖Ze%B*)o_7֎j>o`Kr*[ jj*uj1z~8US5TP VSc| ?>w_:ڤJ.^߳hʏr6U^q$ǫU<]W+Q1]56d2.Z)A8u־7 3 Vxz*© ru1ĸP JN˘x_ӓSڗJǪ *{jNATT؊WKQW+ϷϧjVdd%_QGU_Vt86JǔJJjTH[xT}1 WKIϠ ϙjtWSбFuVFUUϗe=ӧ) [5VrTqOEQ@@5m?!T7q%u5!B+64"諕 yhuMOVB\򂪇zR+`*T*d2NYuw糚 @W-jN WM?~)ϫ WUUªUkUu]UJ W}7[WU}~r>;1??!& O@)>UUql#gT/Y=R(;S_7ThGwZD:M›Z@(*i>UBJXR"Uo}V1Jkw K)O j5 •ORj}_{\5nܼ $RZ1SWTj VIe: ;xC܂*de[6?ۯ=}iN e?{oeGu~ݭnBt ,de8vr.^7ʣ&ov&Fc;Q0-bP 45z8S]̧j:v9T}+HBfոW"R)_\%:+wS)fLI"(5ZTl+UUa)*T*R)RBeJ UsnEuYUgΜNHTmP6I&dWV$=N$) [`nm)[0(ַX_2Zh(+S]M*VD⌡ t]Б:͕Z5&l:;~ |RAecuK}*;am<Ui-Re~\V,vQg~Ѥ V] U+8JUk:A 6.?\tDJyAt Xˋ)TS2)KY]Zװc\>*Jqq K;ە%6T)wu|ZA8MK--C}fm,F}@ +3*\|JJs@oT%Uf$[SjPu]kDEق溂!l>ADs!AI@E:sA,[{!vP"8]TOT+L k`"pZ%<HDEETwT {rXu RgϠPZ¥2~RF#\q91oxV JCRV* KKH#!A__? J0JŢ=1&~YҌ_FQ'TUWӧy >U7Q}* AwAtM-6փ Tc.)ɻ| kP ʖ1:OAԊej>mK ׮OҰyaG\xj'ʾiN_&KTQuؚTn )SbpjOTv#i|TzTC$D է"]sP^+K^KJFr h'V`]W14|u6 pS xK5&4k74R*Xا`Q#,>cO6Oaq~Me"6.-誣+dQ.t:LLfT*(ZU'BJQzb߭EjOTlTYRGSʭGCTĦrcڝzpa:5iէj8pZ=h[HP;Kv{X[X% 1׏/ž~IcE@(R9*oU;76#II0V]5Jw#O%_ժ%tX;ok{Jk5ΜΜ݃fsH3(JX\G:A.GOO/՜GTUU"ѽdʮ?m3ufh(OnRfQ_\rNTWk.pgC T!j ~At<~v`q\ڜdx6Ǐ5%0`ovse :WmM5մi !l>wVq8Uk*7/|lJΜ9i`>rUݎ$O$T?ݩUVQQ@RxagZpڏnL#QU;333xGbj"T-}{d$kOv "HPu&}rUL]F+s0ßƔSrgJ4RV}-r{pO\ι+`&EOO S)WFf\LN]+ݾYJGRq$`@QTR)[U1zr]6QEiɘ87bddB"RZ])~Q(r h%]{V 02J< <%O{|v_5وS9)hxe^%mz$c enǴtLTU0d㎣O%bYl;=sy<[ Jr lscgG[rʼ+`դR(U*%*xMIc:lQt[}*;DUt:S7n]wEb bBT-dtfAEPu]x1v\t ф"+́l?~ύ|⟃Uxʟ˺gJ*-h+ wyk%ݖ_ع,tVO :Jk>@I{mږ}W ) hw5f:-x4<;iqu[>xҴ?k~]C>Ӈo=i(~1E|Q(E7IFGNtfA EP'+cFG:9A11BƏ7[1'/ڷ|<9ZWX5gUvڟUm- E8*EUVl]-GQ~U+rT*Rԧvx2?/t>SQ_( #r ) 9˻vvEYA4X}$mQۃ^8O Ht=رW7%%Z7U<#f\d ~9l_e>Dc.sCaGMv.|"~VlPmvTJ{r9]~ƮlFcpUf>TUgkT|Р4Mд4\OH݇(˘\է0CpCO_R7vb+ ^hLNNb׮]ظq#HNDpHw0l$ <M[&`ung}*0pElƯ{}(QFq"ۅmuF^ UOe5gj*uT6]pkFSc5J?pv:k_nÅLWu[}I3EMjPe'RNUouӿk兊y;:.o>7&?x?A-{aaSmjoDdnV}#O *YTm__6tGUVPQ,.\.# >8?߄3P}LDk& $BJe[$ 3ݿc[6E9^ OF-1cǭOF#)b#;(ꉏFkXARE$3RJ:VXTS@UmK*>nէSknW:TkB/Tx#T:R^W5*Ew"A6JؔNS[8ηz:uSG@ujD)n{yE}ADo30hG| (/Iڟ=6߳odX?f1a1C!`#-|cXEPۅS]M1 j`OLۼ0WhΞ+\ae?wUu%- +Di~lvUW @\C/'gvnzpCO_WKSSm733)'oddP_RdEP#C=2ݓ At4\Vb욭^Qd㻴`3uY3~}㏏SǕ-cҶc8(lf<ƸjpDZøfXKQa`Ff W0Rtˮ/J.?6zn磩4?}TQTPVP*J+;'=BNbL"B|IqpN|#Dգ#ZPmWjD!A<RdQt9KYS2RJ$;йczw:e}~>v:\FXFTWv=*Tժ)*2PTjZ\@"nU֙t>hHP5g'ĸ=tv##xŸ{r33-At$}lŞbi$R8^b_)0}ŕLׅ.HTjzTUyYȄTbew;nXIAJ$kI+q1u3zV2 ΣZpi"9yD)ϦLDB5{cבv(v :5ٙ{dFG1;3AAx) `0_R7OX}(_M(M iO[n0"էb9Vnl_],f?evܲ=oـ@;ީ L l ۧpbԧuQ0^kf}*&Mם<+d=rTW^yeoGdISQ뺳՜}.,Ǘ{{(' }TDS5>ՙ""WTg`7*JdĈîK5T(PAD" s F3oZB:~}o?}6xzק[xHM%ilzmUzAბ"duw9J#ࣕ ~" )Lqev;'JuGVjՊ*X,b~~RϋO0nLkd}*;A7$ġ)|k}2QU/L#:6DAC1)AƕRQEŢTT"+/[(*vFiStE1kSҋ ;v%Q|rW\?Hgf(Q6\.'VV˚썸rS<ŠMLQUQZg$'r >{Ө+L:SYjNLى ᅡ!XѰ mͶQ  G/+cسJ76^DSY\׹܀=PiazէNOuqbSad!,\(:;e*.H@Li+UM-=H4A\ii/JU5GbJG֥*J(q)|v.Vs"Ӎsgh*>oԺ!A &qx.n+Ei$ 1rƮQ%S)%j bɱ8q-ڶTqW?cUmפtƈ*+O3EU߉cXq0b_(l$mJHORȩ{@4KVe[^ V_Ź_\‰Gp3$@7էQ)lHP5VUzD փ l~?p!AU+\˙QMŸSI39DէjX5};%Z'ӦT X1{ +tS6HX'=H3Po4XeE_iH3N$+rރ3JMk>Ճ!׼l:]wEb :TMAY) zOE^HP}׽{W-ATqTT Uj|{1}F Wia_qVմ.T@3S2K?q yoVt>,m|n/%oGJK!N@6s={(z=9,gK}*3E &]JBx43J4WCgGt:T LHP%gz*.ޔHXĔR=ŷES?( x>}AҊߗ/,j{]CSkT۟Cn[DH14[T5"MOVtL]RPR)MMC?~qLv"S|&TӍiBwQ)"HP5/OIH"DcZ~P}*buxZqxKbQ,&RO%L%@TEVqƫjeUTE-eNK(TYj́s]VKE\V9*QU S TMT6A'^vmm UΌVT'')jڹ7X{gPئwaǥW+Km DUWSLL+VtL-?+e 퍦WX)T N*1ow/-ťdCtNJ)T]j0%Y"n%A>m36{Bpɧb?ތ= C̓3⪮SQUTEa#Rzu۰U* %1"μ t>J.. ESu3"a)T]j0MLy@z$QTzէ"x8B**1mٺSADHy(&E 6~ק+!w #2(,Ja,V8F)W%f9l@? *.HP5VP4CT}&2MTD'ux;|Q?z @yDJ ں>U}%Vq *;Uj!y@Ri}{?Lg:Sa}f(i'Q%JA T oԟ ]۳XP}*aL%e9s.BJވTƕR8^b_}J"*3BXQRqILy-'O ڢ}w%:VA!AE UOTPan̈ է":Y,Ǵ?SN /T>J)$RJ4~z}Ga'F!ƖV]$-HJF S){P1ArK)SMՙ At$)|*^o-<O*mtE:SI9S?Ѱۅ.;.R,d< WQ#|CJ$B‹%~?Ar)lJ09%z?lR#`NSP4$gΑZ4#/T$ A@[k_9U1 ?EĂSB:SI洿n{V A,| i*dQDU"'jK(* }JאTQŌ!u@j9MêbѪO;w.$po=U1֙ At$WPلZ%C 6:JiD˨w:_~~VZ!6\'N[("8Sz}I+~laHL>Ubޅh:y-RyO{t>Y;\Ư,.P42^ԙ At$C&Da;F2>lZ)X>}7nFNCDէ; zIǷӫRm`UbĔ vw,IeDTILA T !Ms­=ox>"OE4fESr% Tz$mJ͡iAso2PGL.Z\@*fMLl*WٹՄN#N}z AE  *FI>I"j]Oէ}۰g$"#k*dQTa4zէ,bSSUfsSAZEz*wh]Z)ΑZN5JLِ"Ux az: {NAP}*K:_:>+lDR'BQ%>HH RDU %j _!"qj(Tr"zB߻(QSN{M2>KI\.+xQUt>$ A ~1q?~qI|.d c>VONmTӫ0 <ngEBJ yDJ"X,zGZǕV PZ2UlXZS>{$2pcoTI AE݅ t-Xm z N bKW0T(NA:tqDm#DoEN#DPFoqcP\K UVˉl{3Iصp?Ԥ7AE H* dQD՗$ZGN3VMMnC,e3O="!%k()H&$T>}*JESNˆ|22oosiR * BA< g $T$VBN3fUk0vm$f%AU}6ZT5L\ř`?AJ4^,- GZr =u^yյLj9@ j_M׸ڴFQu0dS%¦:5WXnlƽ]FMZi|%ҪBJ^ _)%hkhUȾ}r X\( aiɒT&)M2>{&䈶AI!A 4ה Z3 »Y/wڹE|tg?Qh>6~~;)@\ew-ZG|}ֹce0̝!9f=pch]gv&+|@?+k"AePUx/GׁpDk*mtu:O>}_)DH򨩆XM%kgUE5z*iRc]߀l/]?psd/Zvk/'7NZ%$jJN( j/>9.O*y"AEtTs!1UI_+~2/p[)J¾lHRu$H ËGP)+vx79lDaQ}1;>it?wnδiɨ8J${*Ѽ$s4 -LTI(۰qω9zFE(/ŋC$JU*Ky =%UbgSϐHPT \޺~a!^DV]0 {dDUCb1x)RQ5z nT6ZF w |DUSU)%j b 8ܾϟ3TaGG![sx{DRpۄi29, 0 K^:^,pdllI$O59IAI!Aq\QLTTD'CJkT&% QWG%.DTJ*Y{=EUER֧..gsjc[wq݄oG{R!޴?xS\YJ*y} 9FqI]TZ"^ԔM2>stm * B|= Ui+" : >Ij$Z]+ldFi+ HT8nOY\ wꄙi{IRuxqzl2Dw>g=@R|UM9T)v3$U'C jk:gGOɢUKz^S'CZqǓpo5Ċ+d}"W$΢JXma* 7wLkc6Xĝb[kɫ(2+~}*gNn.USV~8ޒRII%&NZ IΆAIIz݈(\1 3-C\FS)ր~ӿD{rҩOmt33=9iu-[0U/͞vÁG/sV}YM//Hb%ٍgq)~9H|ǡXc(6~y?~.s0d/-rMX)l9ם8/X\g[? 5Xo!T϶='jޟXUѶL&JRj&'zz$ :jMu1tSS}JTDw¦Q}B| ^{S#|Z$uOd lhRmQaOu)ڐ;Ν -j+J3^Jժ7מ߽$l]>s6'E"")$߯ 8iBQŽ[UnQY4 =}8|7xemix׹y|3S 6:6W@*Wn*9?b.>0>(ϝPOyU*6 CӬe Hi@*m>.y?E2Tog2]>rӉ^KAtA10DJp Qw?]g |S  3~rGe?I,*`qq)ҪYQV#)m0EQMT*d@*%Q͋2?yq%Y/Ԙg?%FULuC7StT=϶U%z}פ!":"")T$$Eb؀k^4 VoX,L,#v߻GFHTI:Sko`׾$vL0g36  ,JnbGGv,dgP93qsp9X\NA[J(4ed=oo x%+tPU͟ú9@/ʜ30l5Ś`/<8Eu+JkoN^y>Y?vtWRON=}tg? ."̞?<xm[j-$1v ^TVOz l^DE$s$ e);FQD#dN-diӠ9*YԔ'/yx1Wȩ(TftM ͼ.RUzzzۇ|O/JfO3<~y,V =usV&+ЖS2φm5ø*@N9%KJ9WCUÒT m pTV<T:ʟLiGEхP_yb Lt Ks1bؤ##MEg7Ϙ)^j(pQQKdrI #l~Iۣw6ܖL9Jy gF2)N8<ŻޱX5UTl=}}ŗl5nEo_5LOcǏ`aH"YaeiZt.-܆v\{vy 4~8zzU|dpm}u:o* hc?:i}*2Ͼ㟮3^<%zTar %Gծ"")$?_3[ZDR Xu l_zy|k ilɯtn_m1l-EB&}gCtnkIs$aJL%#jUt1͑!D4HPTuT rSTOxR"l}ݓΝ$:!&#oc]DLpcMDsd2*/ :D*k fL9um8͠oTa!'p۱RUGRAՠjT\+W[nozVO?!6)'.ucolS Q^ŗn]" n'+!C TQS"zTx# * SH=}i>eR`ℶNԻ}{fw':^^A]oqD0;3ٙ\-93gZ=5!)\X(z*DD^{[oך0_q, <1< DB"pv1/:Wx ᷁31M7%:F!z][^ATyxgOC8T+Tqt-~6Amkf{ou{SKh'T=>Mɿ' /T*aP0y(pIJDwz݆ǵnƷ,M]ʮGmtIkà cjߛS29.QD&CɎ31.@~y1䛲]$$m{n4] Vr9h2 K ^C׽ժӮdusb@@\Q*A/Q]ZBq<9/~+Q*^R5|ݑwIXm̼eH9qmkD5CUEeuy(ÊN7VJl*,ǻ~Do_IAm5oY/`ܰ?]T0 `c L."l~cM)I*m@OC EBEOt3'"6MӠRHeX10_Їw o`~4ds(#ovOe1ǫO%/Fק:uxOXS NGXGPAI!AZK]Tdi O=XF>ՙlFfQtX*LBm#6c(AC1EX2GTɎVQUHIO7U7\HJ s(!ٳ-/UU&G3%J#c q;ފ?|G?e9{f7&d_.:p9U"9%8OVJ$u}=yxnW蹩7W^֞@Z * BZO*OTńy]!9( 0T(8fgfTE=ccXr*HWa*k;GUH,2*]BJQTmћE*e)-4c3;}l,bRZ * Bj8w$ b_OL6:Z?J70#mUBm#6QeGtL$Vй :;MSS#;ym)eݡ>[ )tYZk`E-FtkUys"GS 0ԦJCͤ]ks#=7гtwDi?|8bXH!%[6v@Q}TvLN:oxcw'.{F)Jk $H L9([VकՄPQI4ivUXRT$-Ä9LT}7AT"zȨvnDKDU3唪DP@vD/=O x07waTC jbGF}H*'V^ Z\chAHLu/#aɩ0*HDǔQAؗ@TGQDU䔢Z4bO Tn䔪 `Kg_GKEX,ղ9J/e\6C Tl9H*.YV7ow{3p/9Nr?T^9U"9%?2sFRkgOXvjT@3%yLI%LAIIzH#DŀQN:@1/%ܦAHԶQ>q]ץL{ˍr@0s&#d_dOtnIŻFHv +옔>(bǥ/RDM.;F}G}SuRQTN^N^ |y'A}g=b'*\Q.A/QZ?7޺[9;86ٲ>*9?RNlÖxPc*q\}ՠƽ_`ڟhXc@).YHmYQYUqg*yȾ+U={=رo N .b^/GOs5*):7_C\eގ7_) {֧bpfޞF=1<߆8\6h-ow FQ$խA9 6ܹ35֣U`#+)Տ " ؿwJr=ԭ-]gNiqXhLMMظq#FFFHTu 1&s%.J V2g ^DUsasdA69ټei?q8qT2nTV*y=Um=؂}W^#_uus|gס<] ULLf2HXa# __e)qxS;EidޞF!2yq~8jgs~"s6C|սwV",ΝNOϜ鍆T \XUqe:(/Q:]0x8f/FGG27L{ ۿ&3,̛rT4%MÝZGT6=19y=fҒyNJ*-Ul[]ՌJ3HsXn. /w`㙹S8tYxĔYǶͭ5Eաk>g:LXˑ}vjjϓΏ С#%S6J%|,EQ5TA$Ux8s#lQFMqR*Ff>7۸Ax:<{=|q`xx#5E4Ak+DLDA4Qlv^2* 9u9Uj 5[/WP{cfԔX.Ţ\Ţu?xHPYIF*‹ѻ!>YqԔ-[bЖO"Q%Sr}>{_^yW^y!$կ61`3L!AEDR:6mݻ\ qS :SIȈ#fff(ˇ$=Au ֧2B5GO%p[֧ :7MOʩ!+/;3C2x[b@ϪT,2Ϙ/Unn=~Ph?{CC@_p941%Qlmq՟W`l Y}*S_k58rÆB@_4 Uᙈ"MFFW]ujF #^@A4T :ug^V錌d-$d0ڹ3z- ⮻裏b*fm+1L&hNntmTm"0+ tbJ, %z3 S''OT[(ZZ % w%Uz@]V"I2 [mIuA82sfUhrJeŮozq|S({S#y9x@X9B nj_'*Xb%⊩$d?w$XNjv+.U:,WD2J7t:n *+zxjQS2 0<<]vabbDU z-l#\(vas*%+a%?LT6 :oJԾ_&NÖb!w#wa$UޒTmTዤb$UN~ޏE5ͳXdI)}C.}U #G=FQN=TE6oDꫣb剞  q0F(m NTy@0:]7PDݸglbgddcccظq#vEi-b{OZJ*k[)pzii̾d>q؟~0?'lMl..f IDATIN%`ØxϷL֔T+lqe?nTeRQ.ai<=k?5J*Mk OV .}ql1xJ$H&mBE ~pU@V=ĔLOg0 fHP5_$JAaיjd:_?S5՝bX #DeI UQv?re*iy z>E!/9sfZ_GRf^]:gM9DSqTBIe2rz(<7eǪSgeor<N*#JiRORAD_e]ʡ]?_(+̲hpM6_{ю:Xj&ea?9mT|\]w vڅ^z P(Z;.fݿf-kUQvHEUK$UTQxPQDlSb wVĉcܹΜ\}N_qt.aCbE +j">*i;UjV@v氢x( PU-u'rJէ_S`g pip@T;PT=8q$y~%_f=24hodp\r)j A@FS Oŧ?HN+L%Pקh`ENQ%mᶓvas*_WaE&$;7\՗-0q?錛DPlERiC5W(Q).a,e%Տ%2kS9Ӊ^IQLIgoTOl%.9D/A$֣PWR"3>՟/>]oFDTWTENm=EU4BNBXڟT1s pa$;xɩƱe&* R4?-efI*\Byighoc-ٻQsRμˆ*a&S{@EEzHP5oT@UTlҙAt[۪TRDژz})XBx*NnYvmDl_Wy ^&A-HHsSKIN5-qE?Y GRwc-lIeգBٌ*-.BEe'OĴ> n~~: o>mxa剢}([nlyaæ)'z{$  s}R QNTEU!M FGG1<<`bbS]t|f{DFD& E` NDR)vDUAEY!'D9ͽHCo.w^oЛ{YK^9ӳif=]4sgq8sMӎ#JZLR˷~G,Sr*̄Iٖ1/X~BQTA-Uñh;%GL%Oe?!SL%g̓;o֑G@ n@$E荱M;K-ki11ِ݊cbb;cKސfϬ%jƻkQjRDR $H\G+s|Y/3_u>RW<ޫ"&Q?Ux28û |Wby<KܖCr%๽on[Fzbeĩ{~%*Ԅ.T܃mwK$祲GU.1Lol (3{J|{xS0D?C\~JEu=Q->~!)<  T5Sb'TT 'AfqUm[aJ&O>IT^GN`,V#T95P馂>q@-K7s5;-ڄ7So's"U➒u'URSPHh>" p-qnAQ4#+Hŏ./%lYzv$TcfQ2v-l=|<ή) "h$P)BSA'Y'At83~*d?8jr9Kw}[ξ2Ox Sw_H%T#DI(RBRCU5JQmH%{.RWvl`erV?dįޙQ?8%AD |PۺGE2FL;L1/w ANj~*OAB_Vk'N=اHjtz/jRE%[Ź8Kh%Re"O/= Xis=Mq/}=Tֺ"P~%{≑+}T2{t~]=ŋSLŸP̭b)zEEgamlgaQp=STw!$AD!Nw)IT#O_z=S ؘ)iTCbu 9[**PKTMĩ߼5h]R~H%c;Ÿt(PE\(;Xִ" Ou~hUu=Sl#/AQ$PՉ] vP`=Pea\O(:<31AT~ю駪DˆMFxwA|¹ U~P 7o)/ifzU"YQ?7HЄ2W~{  66nz$߄sѿ8DQ” I9 @UG.*t Ag|_BUPg|M%X$~K^/ SƗxz..8%,"̉Tx%ĪDBsV K%,L/yҎUUWuwQiڎRbSUnrQA #=s?96zG'SeXT ?.!.р8?n*ߦ}U'}TwR%ڟr ( z(&PЄrه֥xĤ$؟JUWL_ׇ+U'AD} 2E.)P,^^@5zL&'|mGtrSK|'<6Jm.WWީ!q}xbxPT]pJVD*>Jcq9H(Zz=Ƴ6PuV^*yu4;> OwXS:>隼7Q?1|N@eAu:;1D*Ieꧢъ&~VcyP< ʯP]x?n*6ו~RZ/BHj/tO QztvGd➊'*Ib~*ޛ;P\U^0Ja2y=-jDYz:a?\TAKX A4>G4'L Z*L(6 U~kZʯCTqjS$kK/)3XԯK_G觔 8}۸2|q?!RZl U؟e%IN.h)d2 @s?*~*_~ҧzZL&rT8VdI$BUTlXVB*PRMĩw_*Y_Dc9u$~2_GtHh)+Pe!Pլ|;u4.6Pxv/*\wpB2  j T ^| S*~HOAyfbUU&ᘽj*oOuBq^CUNk$NWKGK7=O O@e3 TJivrJ>||pOլn*~ǎO`"Ϟ~uMY'ADm!Ad[ UySQьPT j_WBU%8>*7d6ו܅?xW|lHDcG UmK*#t*a_{wU"V^."N]p=wsB;I?R\T()v>PAcPT/!?p^A8A=S Ob TM(S #2Uq~X0IMOJ&N.-:n(<- UU+S\pOq"$i=T2N_~f$wM┿؟4Za]zOEA@Ue.*]TEEDLujtt M(k]Fl7R$ߧpnZ U^؆yS;RT[N㱷Q)AjTYz 3e[ j T 3ZabCX}*>V뙢8_ga5BҢ}~+:P7 *OsupqG?ر&'o_9lĹKD+J(PK%<,ݍVbl]:G/!Q ~FOo@8я?vyVOAD T pQqQjb#0չT333uw/]BU:zrSՊSG^_9|A~p߭b~R sE%O5JDXL漣*]Tr5{?۲pĹ$wH`.@0) j TMd)E4҉:LQ4jbbnTٳ1}n-TQ p~ UaT*7;^MTУݜ~&s?Õ+9wءTtK)'8JePGHX?U3VVc~g?Q!T5EULys>Aw#$P5 0+ũT7`DA=S꧚|~"p,BEu5qjl@o/c<>J2t)fhaF UT@u&H?K/vk^vT;|b~AQCUԱcF"VUbNTVa뾆hWgQ?U_lp}9P *:4*a YVBzS{"+j/RT`u"*Rn$L묖w+di+UA TMzUvʵJ?$I$R)d2~Lgچ!lXf^B{Jt=!T릂ӠkuSA0qS ow\sPE#V-9R?U sJB*Į]wbϞq =,,buy7n7n׮/g r(j=TZRn{*VvnrHhBU5??=Sn01gptPQ{^}S ";3|RnTjEl3̀hjgh&&3Q >*I%_nj0bd|) ƅ 9 q{p[~VV X]U k|/~q;#?}i<1< (&18'P%*#ڧ9? Y\Lpz.[[|SJUO/M*߱PVD/>uQAD TM]T~*Ak'"a? /a%8"؟PUaBYPRdѾV|?N,V@w7 19-8~-,-˕bqQc._N~7,PUE,=[×?.m_E"!A5GBD*FI 3(ˆAi_'EgJ䚲BeA@U 7pJ0SVOizE43E |?W=V*Sbl:e * 㦲m<B0;>ٵУPυi@%СOw\.\N o7FpX@Yd*HE*v'?=J5 IDATǡKUJYtwkBLAu\ԏOU`$q>'~* ( E؛Y]rrSSl̲&㙉 "Zl1GgHD96;ETn*'Q׹A_[%E9i;U 맢؟Ws8>GqXZZƆ۷5Au%9%tMY)U$i?I$N%RSեLJH4*+`z>T<_gʊH~G%y#梊VRUո $AQ=$PHTn?ΆLQhE^%TYE)D?Tn?74J B}TzMa?45!h``T.^|^ֱn_ϻ5!&AT {Q$ANuaӦ44⤲TlE*{$T :bwdAq+KgLY S"Z2z'sSh$,GѪLg F=&T S6I$\yiݔBUj-T-/i0~OT@WHH8x8s8yھ]wiR=g颊c~ M}" *d9"UԸ9T)BUl/ԁ~{Y:5et !a"՞qMSl1K& 3Eq>UɞrS"-b&~؄(cN%BOqS6|F8ey1h_+ H&^lݺ /_DP66*"뿞}'pqHE93)%!Rɤ&Rc++:UNQs\T]5쨋2w>vyA T-ʾLb*'@K"څɟ"lrPybë\6Mun@&r\>l~:M~\xضmfg/c}B@u6%; )#I1H0ݸ_I_0^{?۷ G*Ţ}* @*7Dgsq~w|H1saz{]F39' Hjq8;""$R+S6d_˕G'Rn'(/RO< ۑN %y._b>=(ITH&NI1ϯq:BM6!Ddx\B:k5~QA詿2ĩ39' Hj#$;E*3;kC=SD;=8"o9D,CLn*8 FX'ˋhzHb,T@2)#,c}]+*/*Ł{r zX\*B2 T1/8\E)YR)@==]ۄTJ+S_]-#LO?eѻy*”" ڌ BU{|E@On2*yfbU)-|U]M]qLE$xB–…j0b3"qʝ_jb1 L`yYA\F ˚8U_>F9 !O1?R. `uu܅.2 eM=FOՇ^_/R.f^g0Mq* :ڔdè.T"k)͙|U=јU0bcPD垂]7~*ok*R_ U'P.o@Q4@Q`!~Z{yH ! At8t@&,dg? JMW I"~i_0c?{jc$T\j\4yZl! CՉKx_~~}C?|UV|~vŠ xuu2|SD'ptt6qulrqY/˝njws1"k׎Gi_d(-FUHTJ"J2۰]OF2ٍe Q2Μy۶ [F2 rT[g5?G\f3FDpHp89o*vMzы@ aX&a EB(׊T2Co;\p^DԱ|+~VEh?xztK9:sQqC qvx==)$شidXZ\T͌ eg~ rگ@EWY* c^PzlR!d/\SB>D,?_&Ic9:*W%Tq|+hןoZj $ ]ݚ@%EdI{17w [ Ikk cx˸¸TظҸE­gןQA:AD@EdϲYѱcKк!a 4&'G b!ǯ 1`XZ=1iPhTDS$N5G1S$$I,wq?X)a?/2RLx|D"!![E޼>n슲 Wgc䢪~K "BH"ldmH%$LD=uՇpt#X)]qn•؟z) !2Usɷw ~*EUnOӝ4__̓I@Q6 I@"3\T/ؼw[4LYYӯY:oNOqlbZdrr *v%1~D2@kB¶:}L>t$! Vn&]]IAp*Pv+@2 $ TD"fdM oVFGy Saʺ  T'_foo7z)-3 Sa&{QwOy 88هXdO4ia.Pbc>^:*Wj(T͜ީ6T');g<}>>Zi-`Ӧ>Rq2HDH&'*Ljޢt1Ny_{^k8N@E@&lSŴL;}8x'G b!I$ \.s^fq̾,w|TZ&YZ.MwaTmSP e gTP؄E ꂔXLA,@5?߼l~n+\O$Z5s !㓓xIUՉF/)aQ>™{J$q E"cnN|s[_@t7˾,C);B_[ UzOQUtɈ>wOlc~~7"! bJwi^O?qfeAD*ml~"}kI|1؟ᖢ)rtNy.Be;X~cTVQ2OB–FBU>8_OQP2AeYEood a~E9q Nj>_y SqJlWkZA!́Lf-E^kچW|EܵDu5A40Ms^u^kt\ PMo♧)°_Uo %1) Ә0I⢂EuxsTa}f&lϔ\>{N TD< UϴyRQ?ן9\\FƸ`Í+ #en$n~u`|U_hNn)=uY +Lp%d\( $ǽV@Əy2 <@"M>t On*UtPqAO,cvw \6nl 9@.׼%LٮVƩNvз&QZ]zfb$J[ GsOD"? bi ֹ#јuno}>Ӳ,w{J(޴l/WP8 S9|WvHcee &,F̏uQ6HUMj T7o 3egPedt_BD$yvrwrroex{zpx|e2ƃ h1uO2*|K=Ucrc!%J314117?Vis_g˱jײm}}9MرD>'C> <>^?$ o i^؉X, T]L]TV "4n^%Assl.^ ټy $>_U"A.yTWCD@E ޅV6YSS Y sv E!;sM,xF.g*@ 3|B$̹r6AK>_y 14I/oW} di(mكwA:1ljO8%tKc4^]ư. MOOG'@Z(g#a "JH"xwON+bPL KoV6l..c&cO} q9c-~I( b\D$YJr2;s;ߪ%ܸvbG0(pWn+T JR+CUll~WpwQYv9 a(G)JKHXsMސ@E4^s\= 3қ(Z)C(r[5x:|ؘy+Pe=띟Z?HSDSqX[ہkxG I$)|(K|uzq*J"zzzpᢊ*DZ0)gǔ}z\7x5A xѺLDlrjS60k^_Tn`yB>Y~!ܸ`ϞE:} o^x(i%IF^/K(ӤGW_I7o^X\ݍO^TYRW"Io/PHt&P1GU UD)}u oVA TADM0Db @d`HPr7Gi~jO%xNE6bq>!L6Q0G T X^.#H ntP%b+0T+Saz)[YF.\;T#΁* &d/] v6{?/pm0?TSh|ϔ-'sP:TUA9|nSa667˚@euQ5@)ժ"Vƃ(?=D@A9ٙk4U7f\L׆Kh+'z^ϢZ(G4מ)7L*0%rex<)"!U`1?''U:QeyV.BsWZDAA9/] 5l1j.&!ǯW,2u7ji}D=3$ ^2tN]ܾA~aMԱy>$lO4eو&>#At$PAbEX0cA UT~s40W-Q-# yL!Š}$B ƺEߎ.œW?-BuEZziXs(md  N!VpT>u4"tLjʯc90Z);$LUC\#G?H" "agП9E8ظ@"vYY~*wt.AL>t +A{灵n*`cxy;d%CQ*թC)R hnUTEpv!hgBd}%[8MP堲S lU)cu@99(G TAD IDAT$d/r["2؅4NTܘPf9̽xK+Gg&)L} \Y:,.o_@_088K(UfwW<T~)E (u?$;N5Z8 S~α Q#΁* *&_9Z qT.C~*^Oa,PI=ED5RqSo۶rMش)RL[]{aŻTpt@<.axx Ν6J%M<+;eoU ޏ1W U--gksED@AQ{JԏvآnxS9 gAD3˜ \7r*bt{Օ|.FoA\kU<^[PxqC4;[9D6m+P$Rj Tn*n>TUTʕ ]{pH 7q)[9D(iE"At$PA1߹΢ ӏ 4O\T~]"qOQ1:6o,-m`y9/`˖5[F<.CQ HHxsPTozT ֏/`tT^HRkkm>&P5Ae]e'$IP\hCAT49%9%ظ|  Lz67 J}nBM_K0gO uN?.?CnSTN%cd$ "L/c˖ؿTM]qJ%MbzT,@J ]{J}D>МS##@: $vދQ( AP66"~6{AeuM) P>`TMR[LQE""Ǐ{@EAfsý}! qpYe7_F5P1:T*n66JXZ@>/nk c˖x#_Kss FOc% S6J;CG0=CP}}@W y^z(TC oi|0wP)E}AgH q**D;$ : PLr<`r2Y(؅ `쏻M\5BUI ":P-~kA6or”a.?OEtZƎڝq-F1&qJ]ǫL"zln adF.bQEkk@T&QJ1]|QIWYE":EBA)Q7 T"v2.ZG_M< 2'?+UOtlxӡa~~[ U-@;t% RsPqf0PSQ|fe;{o-ڷ6G&^{==dYR\ѨMH`At6$PAɲhH2mF!T!˸RQ*޸I(9g-RpagQ=29L&G/^D6 FGGSO?|@8 0qΕ3gYR75>oniEi-ΗJiΩTJ=y]2yՈKKА/|*5J_qGMSJz)t?#N* "0Z9:lP DƐPU~*knD4:[ͪ}Ǿ-m݂l6Gbtt*]z'#sbv ̙9M1 I1m);̮Gǡ8:XzWҦH$Rql߾ 6 ୷^Ɔb7nq 8bw W MTDbщ"~9@EAfu8@5"cH4/hT~c.k hc|&TY=?Sx"=Gb||L 竅0eÇPu"y )R0p>Ec!\q)[/+^$MeMǁXLB2زeǏ\nu VV[4w7GOн(0L|bo'TGA]KES.gAt$PA0Snn%c#؟~S?WOGE#NB+l?M`&a٧Mccc0ĉ麈DDJ )#J$5)&?_XmT;hW *SYm Oayy kk*rJ-`&ѼI"}C*61Tr$L3\&фϧAt $PAz]abO6U. ?(9ECb"m^kq> SV2 2 9BA3(~~1q~1ϣGNb>UA"!+Evi X D}ڎe<8 ܼ ?@RwJg_SW/oDSD ?(G TAogNN%) 8 D>ANubn/k b|:9DfVe5pO`?Q9RӞwI`{)=m*䤌((JPb>$2TUEa}]ƆJovǛW¾ln*}Gt"a"~"(G TAo[F<LSNj1'gk쏍 `[H@G5]5n0'{^?jxiG1|ˁa?j}3^e\:gv{SǜZ4*VRFJG7i߶TJbzOU*  ?On}8TP9]U /*b~# TA/L>a̎sN.&fJ$A<8GئS& "YˇlhQ?Uk`jn/$?n>C_^C+H$H>7|S{K'WZ@" eR X_|qݻ1eF=R*?AA! kKP"c$ U..a3Y=euh֞ ޡ}To]&|xB/H;l;1gUGxV>i\ PUX.?:ڂ>"TY㉎G$TEqs >{ w/qmOG@G>+Ѽָaձ|P?U*=S~KoҞpbs+s+П9<7 =Ɖ(J?\Tx\vص(7B UDGRMďϥ"E dwE!G>77GU?8E~bl<i3'Q ]k?ŋ[2>NqV@ĔCsZAz, Rz9'~e/E(cr̛/kqDsbVn$  OW9F˜\LBU|ظ5DN.XuOgU|VП =@^v?Ex%Dr(:!d~OëʯD?H" <*Mw"TyLh#wNqB`{B UnKWX@j鞲S=zGmOEbn(vg@R}Y9xQGJE]]6m'TWg6iq*xANHE TA+ jKrQFLkcBYT-266 C4&FSϔste?0Sq &U}T Нzc\bpNF.)HWb"~)G TA+Svx\&&Ѭ>hOu꧊k]x|xln*]@"H1c Pj5U.W};UDX ޱ\ϗxl)>7UVD4){tMOD{AAር{ "qnPU~* UbOU=3\w HqgPU 'N)~jv_-ғPPEF'[ H @,b T9@TqPxힲBT=SN=$?Gt(Hvwx,9?}O؈\(Pď : G^g}FN$A~/*pn~*u8ظU=eEO)bKXoϔx5,/;)S5P9qX$ 5 E"7#N* BHuh9A'i3P cBHc*~{DT)=SNr*[[R]@L럪|8UwP;1q T$c/([/cUDKoB:*E?H" h>hm 8ظ}@7&93?c 7Ǘh ֵuOSu#ȑ#3%b7]DݡnlULI\|ssK?EsTJ@K8t_7]R?cyA#~mD@A!dSp{`gjtϲX/(T EZ6N@ObSSSe{:=x$'{8"sQY#P,ӛ38M m(MEt<|,/hďG?H" |%\JnJU Tqu8ظ`]U{ ub?UL9qQuGU+)D6feKį׮Ø0ቾuP%YRRygG?H" lLq!Br"O(ԴVtO`]T|]=S:0ۓ>"|Ir@[wOŌC4bu{ݍScDSMďcN*3 r"EsA, .BGϴ.ȝz*gWЩJEVvOYav)'NlўϤPR)M8\Ut=8W?U*2O.I^֕o≾K}7k&wrZQď ڏN7.AUV.^l2(3 /;*POt_鲂u;mM$E8nu9n O0j||333B6m"bjj 333SO=E}Ѕ*](hXX%95Q߽*dM⹕ᷮ|{kr? 0E$;?h/AEA|`s#4sw{x_;D~#G`zz/^l85Nn8>4 a"r 1&NesʕRQ$ 8˼$7j8E"~](G TAឲ܄"~*ǘ~bSynUjWQم*0Eq>gz&Q4d@Ww>md)+"?`Ѧ*OV?z T(gsc(G TA7Q?B $]eŒ{*|?ѣGqѦ#!<5 `SO`SMTv>S*XDmHZ﹕ϷP98ODkAAa`?i3 bגK jQ>8[*$䞲266 CneM͎&N9$˸]2˂x͏SE=ڔ{﹕tƬh:_D'AAa ؅ >˥\cuMW?Udzہfꧢ:, @W~ tZ6˕x_uX mV0w(u*)ȲI\"~c(G TA[;z?1NbIudpo\-+Rr!\Ox|D@A@wO ?TNb?܅@DiAb}ltu3=k?T#v3U=s=37(+B/¹JmlXeNd5N?7T駚vS4IVBLĩ b"E3 dԞx ? 8qk~*Gh}}{fPT5V'L[@Wj{Je.2T5eSE`}cCV"rp92n;T?ġԹ/L Fw#8{nt9E3 LyP姟5+T9N/7Ai.H*qL: C).*>Wm?gQ}Wrs1Y}tTtJRPYO8EQ#0BYĨb~E&Jr܃O 1fj{f/sD ` tnxKv("HDBA *byݢulxhnx$ ]U TzmܖH4)0u1J%EU,jѾ†6k*I v1ʺn71M8dOS}O\#T#* Ǹ{MtA| .ҖTNO} TLՎFH 6>]PXOQ :{_2 䦋JMZEO5||MQ_OD?#01HH"A$PAt8@m1 Ul\I5EPXߩk j033c#jv>/jy 6> $E{iayW+P)n"-pXV[pa+s~LtG{,Z3=l3hiK]E*I@@+ڷf{|Km/ ⽛7<>dhZ,PU+SO-Ϯy@>*M*tcky*-}C?BHoABz+]*E9F%Ǿb jcÅ6ũg󩿧133x-.x_ < %}xZzz_,}_^؂Q؄JGꚊZx ,~f]6}ػ.]:S\=EHABz+7"858!Te UygZzwUm>7Tɓ{:"U !F=/ _$PrPަsʀ1K)S'CoJaʳHGzj)~}P"愳]&88NtE9BU+?8*^>M+, ~=Sz?ӧqi>ɯ$S^J,-0Hu4{ʈUzz#[_5޴PuWw?pkԽY"J!L"Uވr\B T9<͸bq:ygOw)T5mszio\ &|@MG>;==M  0G Q^q0>)Lׅu?k<ڋOr@>RBJr 䱦*BܤKBl(PBHs,GgBնr%MP iBUcO75TirS9EDP2.+7F{[#OTT'Od/C68v/Y`t B#׍%Z=&M) eS,!T91"fKۛ/w9t"#l(PBH@or UNǒyVGcq: Z;˱d #TyndU{rћGF@VqSuZ H/E>1-j@Cx_ꟺn`~1)KMK9W #(0 (9R}(Go4O=oݬDis4b=vwe)m_'!B! SW*ERXIPiB>% s(OM9鴋t*Ϟ&˞ngUzJYʲ/ާ>CZM T G TժRscj] [8S%3cM U>L)NE!*BA!(L-hsB|8'ysrl#}ֺ 7*'|;Iyz?ӧqm$A2!. rB!("54uu-WS2.?Tƚ[ ]Li&k - mZ?1@Er9Fc.7Xt! RĔx+MJsy$2Te-!"e U},G7َ=SrN˵.)d7S"@E!$؟qPJsSY{9گc/mN|mӱk~3c{N"8"7<*SA,HT_ZAVKW-TؐO<"-Kʵy}5wrC;gJ) rcB Tc|Iy^oҮHLIku%s*O?UjO+T9}M=SS_JtW&R (rt@ (P^_}zIZ[n8t[бc.7dWGL.,e}ki{.^-7gIoQTRLO't7!WiZv jMPPTi.0صmܝȩSzgU\T;A;{\ha.*яU J}}(j †^nEʲMMԸG jʱ~:So 䧓OSBv>!r39&X?MǕd yLOoX^=SˋRɓ'w1$hv MSHVd8#KUʨU+Z.jB+ _PG4v1 U+Mr;]]ښyk"Dو^;AB΀!WofYQx":˵WH9T?}ٳ^>&|;jTg4!bh!0? >P4 EQSj=~r_nWCqC!Z'eCR{2m}I}F!1!sLǘ;Du×G.Pڊɋtz{jx3c|}C, "Q)^ej 垪 qJEׄ`u&)^$))C Km{-m_;$y%F!:!GH2mOU.vvڌtk=SG[?ՙc-xĚY`hXsO{*`R?PUF-b.w =LQ7U؟D۱H%DH!*BlN1pS^Ty?W[JߴPؿiqcOLm<۩]$e`~{jdxjuu+WƱU!V#k-{ *M r9쵵Ʃ֞=,K[L{qwu>ٙ0Gi Tҋx}k7)Tyu43'1%TeU8S{ӷfTSz`Slz/rODWov\)`p`ÃCUk8W9S+;C%E2`4A*U(#]7mmP[kE-FB[:5=tR){!7@E!=ɟEBEI*y\GAMK;fTbo٪~=Ă= 6K>{ ! ECZEymZ=vOTyX[\ uWS;n*5r2Tƍ A^#@ۂщ;:ltU)lE@]x>,B Ts8\I۔AǡU4?Mر.kf6={NLjiX;=ާ(Lm-z?ӧq u]-pfu9%S{ }C5:kW?@RѺj@]{j_,Sm\pUyTMBU^q,¬m U.AZ_5f_(SJR1by^{n(PBHv%bq9TvV?U^cjn͛>Lm_9g}6hzzzC7-n*5&/-JTѤ0DPĞ}תX]Y@T{j}UD6Tʵnεմ؟5?kjbt7}=+g\? P.!8wD*NQs- M]kSe`?ԩS狀Z*ZPBUt bV1zM*@,Jmwp9gKQuep(_ʞy)%9I>L|:Or7s7QA:t;>=T)U.x dLOՆ@5a_#OOcď"@E!=f,S Pѡ[~ڞ{j;N:ŞO&HWZYB!:=@bCn@ׯ^Ɦ5`mxIQƵp1SkoJN.kO~rtΖ%Cވ_kAEHAB73QƪmbR3BUUTAW)z O =i>ë q `J3җa:! *B2I͕WP㦒iFP*qɬϗ%vg(TOuo Ɏ+=SabvpE+}*WQպ=mq,d DiQK=Qy15XNY71A . TDGLbď@E!]N)T~*u×G.PbM]}vT! zoڧ9)BOs#pܻobuy }5}kb-OՔ`r5eƭmSY=q>B!BB髷<&')x5Sڜ~ Ag[S}.gw2">TO \yE)TYM'D/ᮻ> j(GEV5ܷ1`|+x*):bjVTz?TLMK[O>tOҭP".g,3D2)$U9Ĥvʸ|ijU8UTeX_=VOK,(K'j[ҮmEo1l*k6SG'"fG! *B.#]8WON.PZ{)Hz?,q|z` U S}}@`C/+Kk*ڧJ,N._JcK ?uxCqS9FMh ݺļ?Bz TL_bU"Fmcck9Gr lh5oc9'oy|H+L,_"KF ULJj8^U`=@ ._A*t= }*ޔap.'M:|Q:H\i U9ı7X}n^g_VoeSQJi rI)!TR*ɿyˣ0&t'!6+oQy?c FAtC\r 'is IDAT>񗹊Me e UyTjaּ{*pOC<X]]Hҟܷ&}*O#)n*5&p򭣍Ek-ZwZOXŭ_-!(S߶x7E*B ThNTt؟wᦂ{1?]#T7U{bcS"M~Ծ(hJqqBT~>(>(>w}WnSl"((PBHۛK}*`L4 5'Tch+nP* L^+W?Unj#}Nb'fw/=`U.đQL ~FB{dZԺ(Yդ@s8:Ou71k%k=g|'hQvO5ͮ\7Gޅ!t1yJኴ_~*u{ùTiz)}_l@Ş)餰z %*px%LKx4fo?.gwO}S0E$K[MviX?ʵY}BU,Go[Wvzs X6N(PBH4n* KETuCyT?)T-PujffO)Y&\J+NG }}&,D2&L?ա"a}mE}ZT SZbEN7Tl11X1k-grg}VךtOm9O<"!dABqCs{5GO @ČMjMgrijOݶW=StM1u~gNBDu (%PKFA}Ou(ڧ?O=e;t(Bz ThBUBi#zMT'`hN|oJŝb +7?=%/>sO|㡛3P3EԪ{jeY8>{L$d|ʹaTikici]o=}#c;]j&E,B TN_& f>r*9X7kq KnSmn8Mզ@uh\gq>Qޔ”ˁ4? }B  (bhh>(޿p?5W BNܾ Sٸ{jmESn'Mq 8n*>Ksm4ALe_׵ Um8Pc|!Y(PBHgt &br<>vϘM2P㦒iF83E6xc8CфU`B}8tv W5j]pvar߃8\]?=P'T!;*\kQ6TOL>*7<<0G@E!]Jp4%  UR4h)T%T; ɵ[vSy\`rN$eNS"M`:4A%\"S}{J 8Ν} hԪkwjfnb8?u3wT3>wSd 8WS.#i6֦{6O%5#t'!R2*yC"%TOZ]bs2Sm,*Ǟ)YL{f۱&TYK8t;j.}j|rꝪ2ffq08~LUk%fb@c aplkYs|j 7Ս+G*tOm ;wS"ǡ@E!Jt#B6J,m~n*STy3Eg}*~ci( JYab%@BQ:t.6VШU=ׁ|N0&+ELcZNw}prPc'T8lcj6)S[M7SB Tҵ(1+xn*|n*@87t=Bt&t UAyMDJ{*( -_n\EZI*e5!v8 SU`Z*&8Rh`ڇFI!%8G4r8S-Zr篣;xv@S}ߖn?rKB TҥPEPeˎjM#TeYޠ)[bl6S=)Ɂ7b EڅݸtXL=*ӄ`ԑ~*K\i-kN/n_?q*%vPҫP".sR7ARBU oj *ʌPF?UfrN.*sq> Sdxۺ{*Df1zTi{M,Ϣ^Z PVU`ynxRiPu|jgb@=,(夭al1 u\O^gtOmO~ϾΦ*B Tҥ -a uOc{~\\K\!@y*:ѡn*1e0kLkǨD9?c{bt;!(QS}}E\|ʺS PѾe{KIGfN0_OS5vE KoMc ۵Dď)Bz Tҥ?9]B]S~*u*j)C"d3u}<ܿ6Q^,juEciTP@_*5ԫeS*qJ:W{q )C<$~#KYK^`Ԕ*IYC]Sazj58! *BB" @$DaW?U(M ʊE"y&TEn*m$IURS dsC?g}Bv'a#\E EUW(Q(PVPFѾj+sjmXZTq2,VZ/g o::qg[瓝G'"~>(LzB:#*)@ WbLȳD97n:-~+ 0Ԙz+,mNt\=6emN|&!p?O 69OpR>)NѾ @P@hVީzԾZENsjuX]ko뽚Zµ|RSk}8R q|yRR1_Қǚ7 U=՛/|x᳿ikgP"EBT U0ũHRbP:A` 8AB8׏e}(O2E27-TŌ5 L{'Xauh4RI8}{*(P( PUѨUVO>omX\V{S/9#uL#*"wbl UȱKr~)1/잢{iJGgyt7)BF!;QN$+ NXx,yNzŸ爋Tf {-j;'\򬓏cO<3Χ)ω)F\$:5ׯ=/:5Qi)+݊m37J8\Tr>@,BS}o:cbCB%pARp "JsD`]?OuV2$*uL~+MQJ|}"_:@)FaNuqJ 7"0U[qMs|NTqS!yGۙT9SacYo3`]m4{'d{2u]hBp"g7 $S =Qz읪jO+b`i{ m,[8g\NMu2yu3ZmhL6)4OeGwS"x@E!]K,rSi,zj{lz?VQ)BH^".E*>S؟cS=TzPsDE@th_"Ww|6;fM>ׯ >;X3ih_=%ڷ,/~ 7J:.\T~JG!N 7tO-ESaS!MCB=Hg9CRsc_#ta rta ژ'Yw!}O:NS∬RuSUMR2iJ"ebⲖ0eo*)$mH?SBF!*эe c+""c;'>qN$czz:?j" ߨ? ;gHD_4B }Kߥ}zpj*`}]S+0x9>x^t0euLUE7d# }k8/"!l".$̊H ӕJiO sXO nhGvpcԍX0UlG!ۑg ٓFpVXS"P~&0)NU5TYSk⺫+ѧrm|PsîDz^;/3g:D,ReoS{Bv!t)"/c U~*[h([ `MN 8 Mhb?B6gis糿=)L*9GZZ?CZ)zpNXXzj_ T˱8,/kO~سvcPS)8>X5cf?ڀ)B! T҅uaSBU*Jw6~*MJF$E.9L5vSPZꐛd#9mzQ,!w(c} q@XcTzb겈 8xHUz8z>G?Չ*"OE!.!t)Gi>( 9F/^WX5”~&c9R9tT :{']Ͼq(oƀ!S)%P)t%{ʲwj X[=_Uyk6g LC/p?[үc7_ٿ7χJptΖ#B6!! C!hP'@ LJ:P4aPA! C$K9vByCr_&Pfs,>OJRϾq>E>{Ai[>On9eSjV8N,E |D[%NA94!996׹C7#];/#Q*0uz|8`-Ls37g>TSB+tPBHQJ金b2"gEo=t[5OvWVLTxy&wEf0u=!N'xx1dT('TC@MwOީ!Nj/M8׎+*!;y ]eE)MܜũS?zpr#B![*BRTϔ!TQ|$Tn~*]^뢔C8'#ZOװbyPe}g?v8:pbDZ'o|BSg3ȎYo.5 YO)8U. * ,΋Rc_!Z9>Rs潬7Pb~{1VB;pd>_nubt7 !lk(PBHcH U~_,TO 9 *vmSn,د9La*O [tӕ馂=E&@E'Sn?]csjPAP z\n<,KeoiX\RC9"Nsqo? F!lo(PBHR! qrVB练Tc U8"~<FOsp؟&r&U"dp!?]c2֧9 hF2WSԺV_x8xv3*R~q<^ sPo$-;zNEܼPE!K ![Dh$^{a"%fo %.MB"XRBtQ,y&sxZsZ:yn Bv b,p& l/dT |'Bĩ)NşB!~PSZ\nS0? ?J9AY")T8iy>bMI\ ʌ8t*鬲*yϧbTd@R;g?k^XNZa̿ &5z [ !jtwsXSc;5}8 ,̊q%NE?*9~fuS)*W]"6uRJ8ۂwϜ_|Gׯ``ALLb}FBȶ%ҥ{.Fo.Hw?O2"ҮnƢy9 ߨ8]W:{4xrV[OM<h&X_TO>5HoaS"s7B.M*yb}!c*}S9U*PqSsW[&9ES[9'en{Ϝ˳\\>LLblTB!q O.Q8HlZ9d iTU>%*LiO}+@\S*p~PTSqjq>&m?y OC1^ФPnױ!sb'*O_κX&v\__i{BHP".=Y@;ѵ!,6j~mqO]?nS&&*>5X Z+FT%'T=^ ,&1}㈲3jB,pm``hX_s&c}sjXXҶx 9lPeJIJ]<"bfPTELL0?r!BBB'PX]T͓2Y=w-+C9ޛtMɋ鯝*D9&?{^ ױJ &1tNy)2͜{2t)NiTTP9*e9wN-_p0DϷwhzM_28̋؟6]7l],jllĵkˌB(PBH7jŒ}L59WѼ}ye~4B';hE% V`TE@-3$*f8FK`f?].]550(\>đX_E8eœNew)8bxN*O6+T5C]9PڹR&䣙bfPBBFABP+/ChOHɿXo^z{{@i\Άxj JL)AD1>IsS3`_swORsJepB k2Wʖ88/ĩ8ƴ=uJyTїSfڢbfYX(ca~*B!*BzB*.);* q>;{w8^>_T.~_ Sb~*O1ߗNHSLs7b!0?'Է|Rߠ>I}.甊դsT˖8"ũy3fE6*cQx^ڠbfa?! {aʸZso^׈go]?S!Ŀ(. E͠۸ܟxi{a;q#{x @H K DYz!"q ЬFy»I}#I}8x)kZ}Se*\SBe-z;'oJ=vNٱ*P ѭ--Ǿ  &Ɯ."k;؟q8Zj'בuY~ASBi T D7jz @uIwIVݵ_\n/},zmh~8O%xBmIc,DS3\K`&pC/5:*#}@.CS@#b}RUsJVV9`yQSh@Pv65.ReC!.בhF7:thcBHP". CиJӕX@uEi"">pwnOXb5iYx6J.\4 ~D,C2t] [(]SΩ5`eY%k+WE'(V߻mP%f6MǍ觚>ؙѾ,__@TBZTm􅈃zQ2>!~۸C7OavPi~*?ys_[my3)ŋ/{}p_u^,N||P\{? X o0@4TGjo Ssjy %ĩc8&in8Lt;9nҚc^4?=5]8Ѿ4~>SB T K(c|D| ܽ|ݷ Vd?UEeS皛Scyj2jJOO$LS&lgUb?:0sK/׾;?Ss9g9Db)tem~`p( %O7tJ=OSpMΩW~3zVMۿEd z3NyUh_r/.T׮-ME! T'0I}v]\,¿Ihn)I|c5=f_W?.^ 3T&IwzDn))2ַNBR~ַbq 6?7_O @8({未i*P-u!JI҂~W͍>Nwq3'Q38%Ռ iKf]Kca^(@qE!dBBzиBOG: _ݏu؟SV.Q|BwØ"|S=ηm{x|%TM}o990w xqJ8vi}q*r"5bT.R8Vy1_7m-C: UYơ.!U-W8veb"BaďBzCWF([#^/,_)޳rS)!,H"P; 8_^{ۘzzUŚĿ1񿧅Y]S% d lHQE=/*CW*zZܒIEO<1u8x"MeA?UT8ԧh 8Uȧ?~c\cXc*gĿ=eo 8,9%ũF웪ȧ)qjyAvǾ 3eXgK+TwKyļ{ʘ0\j=խѾ4~>!G@E!].^_1 p#$3Ħ(nN~*q>^T&)CD뢊ovt)<|ǓY웢=4הwjhOVsJMEO[S&T"{~*J;ثwqZCn7;ڗ!@E!]_q+` 6RT=~-X'KRbtyAOO ^}3"M/k_Y/a}p܁ 왟 v9sXOR"sP,N)aE?F]+C9W8]d5-8D׷~]T9c 8:!Tuh_z?(&&F#.!t0u1LNNǏ~S! Me`ĊFSE 1@~ ͦ~\# ׏;Xu=sC)[{eMy#}†8eMeҼ> X%$SHN1~ P,Է,/ o9xq'hO+MM,P8B TCLeq@C% HvvtU9`" "d?!a駊TJv$L Jq$~*(=Wn  }`SJ+Cĩ!N-<(PBcffOb򎃈oz `kJ\-ntQǤ<')+>0+qJ3))P;,- )TuSSZT$N- 2_}S>PB =iOnD*M g8 /.]BaL8~kז"*B!n?7=&T}p}`HAZ2`I\+"-YcSnvBlyzsUw{٪{uWwdc'ܥ6{ڵ;A.EKvHm6)"H$@}3=yx tP$B$2>U(2lU\UAUs/c ;_jD0%sPr* )#t!U&#E-}f8mީo3|ucԾySe9d lUGF"S'TŅ9NL%UOe "͒,RŕuW߲-f 9xf$@@m̜3UO;__s m'SJ *$/\؆KSKP̧ WN__ZJUR9vt>W-Ɖ&ax.4tu^7|xw̝)Tٝ JA7t _)}ޱS~ՔNt[Y~pkRªZ]bPe *rjܩ}1 :蜩\.v8{QGoMRPeTFPTFT4ST(DPJocRVz^Q|wА44R=eSp*Lw6-ԖPw )ҼM鎻KV#U!U/5 9mq[fYweb㖇冄S8T+nh}}+|*h?T&=g'߯o~;*ESeo,mw3:*i>\Q SyA{_e/ ZaiN<hy>bjxNSA9=2sJ )Gnȵwrde憴v4o; =8Y4mAU S J/ [ HqVPii$QMMՌ9SQ{>?9CJaNTq֠Vud;UIB0TjfKUl#2EB޼-}7qéJz_AU\[䧹i⪎,kXՂ:*ZcY5\]iX8ܩdΧ3|\//4)TiΙfC] 7AB)Q|Y|*GTQ5TLֲY]=pPrJS>}ժ)>;Ni؝kߗץ[FKߓ9CWت,A5 yzb>Uܺ8W/Y];NmOǏcUBTDvT&wxiX5*J%Ķ )NF}cKN==s; J{JC^Քm닛9 (K@eT *#uQZ*SqsqB* U4(5_[%ĒTN1ws\xI/^3?#GK@P@ϷŜ$rҥdAU^ToR (/ʔ]3HTlQlR%Qͧ^!V̙2ߝ;w4͝t+/T9%P=2HN8/IWzH$ ThBWT)U]eelATkqu5}:s}IGg>+W羔kP@㜩jf?byPO T9A|JIOeWdL)o mRfOp|Q TVzϴ?=ҨN R_Y©ʂ[_t;؉uWU*OlPSmTøʲk}]\U^r5/ٰu˗}-ի?ju4TK9S\#f?ܨrK;l+koI2*S6H|*O|*%U鳷R > ]|܁{zSp(e`*JP#T:f'D+{⪩*zr>ULt>UFܩS ?lc>4B'͙Jbqzy/4*GqU*;`mw3~>UYUB|*s(C`;XEuiSk{FuuA7;Er_;eSd2CW v,T;v&㮭,<&}=%!-H۪y ȃAU%lDǣqUoۿF Enfq^tEͩX,jjjJ333NIG ّ$/moi9s} >}D_D8N\8^:SQ9 toҶtA'NJ52ݒit% !Ύ}mzmc%myNx`}lJBB~˯GX~Dz%vsھr+NIңTN?x9rD>i?XEԠLU{aM{\^w3[[)RIvv)Kj us*A۟r +moKsΔom^-}Xt`L}A[_d/vTZj'\ c9n2Kr?*7Uc唿?a۟kWhk?1 XS_xawaCx.^̧:~XT*H[L%1GskԖ2nTm>y{ko|*[(IO:ݟW;=Q9ݱ/ l-|r0 ,!߱mpBmZۂ4c+S% ߧlGXGNTdT|>?]U鍦s6چMW;_*#9Gt;:5J!yoΏ jN/X {ۣʂhSafdqUGq!O]mm1ǂ]1w:Sݡ]S9rD++Z]h:wP* LIWG>+v W:CURĉoSJ%PqminS;ЀӴC;$-y>>p$|ǽCߨw羡r*r$ReT4ډQB(3 Uz8n ļSFSioC/h9StI٫JOHnHwVO m}@tk;"9sN.}0|^ *ra*Ab|*[5UpHSKxeGlATE(cd5Uq^tqCёoPVk||T[UA@ z0e4uwk/I`WESdMwxlUp=wӽ#?sm21fx%Oib#Œ6s$i|HcwIݻJY`*T-mTc9a66g[jSAUrJ${PU]mA-0r}~- =T]!RU TzZ/ϙJGik/HyUHfJUO2)˾v3I۟&ECΧ2 /j9Sk#{|]Z٫RkguY:8&WMmw~شm (#ڶWfP]C-r Gґ{ P&ĄA}15?%[Ւ%9UMI-Otj؇zmllX\ՁC:xpT!Г3[EB8泥lUT*'c̧ʔkUS5;~WHm[#{ByLg}{Sڷ_:pw40T2-#2Cmik+R- "CϥүheSTD+*T-_ms_*a>;Qh n0 <TzY bT9TS%p3~符wh}xk#]_5!?ޭO*Q7ݏ^u*=I ))o+ RN?^__Y C *dl5r*`AjJj|wnx8Pt4m>ߠ@O еsrUSp:A-(_H)˒%کZeU?TnSeT;ojD+PC;аL1[ 5.n@y榴.mnx@ʫRMT Z*(fE-)^XUJBՒ5 dW-jT7VW7jc>nG@+1g9NWyfcmEC=TENT ¼Uŵ]ӽVT֊9TmLs)_{o9omJƤ[_n7K~Ύ{=9Aʿށ*@Ƕ`&D{=!Q\pe WeJŒ/t]۵C#N^Y,ih(Z5N#B˙m̧ ts||&{UToXUG7q󩒶I}>U5ͯ]12D~ފl݁7koJn8ukg>ix}+ ?kRr+xUf΅<N `U0(Vݡ}@ , ǬTܟj*#rH̝Bzoc>nE@+0guRf֯1ޠ=̧SE%t;IUŅV*|*)srVﷲeN8j068a-KA(i wMHo^nϺFTDXBqMI&|Ʊ`DuTJBz*JqU443~)>JP<yG~)؇v SZ}i/vP(h~~^ A;T}uoIΎ&rQ0H:CT~NfQxyGжsZxl+Q,e4g?߰s9sN+SE_cG2fVT^Y8rxҮϱtA'Ojj68Z|P!Vd>UPxΊ2+qI_W~8bSUeYkzn-}e5ڝ9j||T㣴xT:s{BHUֶSE4|̤2N^yO0ǶUG/eWN"BUsА¤Kkd #?PhSmfnswcQL8T|@EEC l g|TR^Q#NlllX\ TTT:FPbpw/)T83'Pa I+blOcVkO]~'N5KOsQ-y`p v"]UPrh%5T~:2G ¤p嚶JRy(?Bp*Z#«hhf^+r`y}@*^kv)Izt<|Ca keeT:  hk/~BO)CϝJ7sJ@?n 2LW20 J'zdkPw9={lm`@{Fj)O4, L,e[d V!Eš*ymL%QqlU* ǶERm+ lk2`YWhoK6>}~^U5>>-* @[cT~ F2c UF87֥7euU+#DJ><빛|&H֜命Z޳7 ߎ $ZM$0Xi nL(YB$gk^Cs(Z% ¢װUPUnVq5\=˨@$J<6&USپzx>ՍWZF8ndO7жLuOR}sy[VIe6hP*%O 6V џG(%T򞗸 3A8Ք;rheFb ,PlPeaRYP$ZYlE2U ͧPs>m1??Ϝ?7RF?[8U]~8?"OhX0v|>UO_S.i ?ֲ`FLql UJFcŅI͜OU) "aMwbeO !YtZum6g"rmpY}SToq3e@ @9Suſ)~vBfX7qUU gF*HFH-wmS5۟66ηgTkZT73xhIl{3`~.sBC[HOZΉu1 jm y~p :)j "mk]3)c%:_,ݺFݯ}-|*ob *aTZ_vC~f!dxokO 1b)TYSu>5}/~[saTJBHUKU;n>I\N|*9QUЪ k<&ky "Pl VWOTyǎ:|*턀 @ELr9rRJ2geJ@T7#2*3~_YF(CCۨ_zn 5d2e;2  =Ph*`7W?) z /+GB̧5B5|{c vHiBqeg!勬AUc#L\ aap*sUi[**lA,ٮc|Z>*JUY-|u$YqC׾f Χ@KݩP(h~~>>==M8rNs-츟ǎoGq} L;2eٖ˶~9mɨRFe]β*? ˮsܶ{$܎LC2c;g\v9kXqPˮiݸn]3zkk ]b+;S@Y]믻Ռ:th) @7 @Ù|̙irO[A8S9 W(nl>UY吿RQ]hvlnJ#{/z̝Iω\'j簜ԺV~B?椕UuImY[,jTUXm>U 0zkX?vZΧr$ݺ)j)`wT@PhL!:pJ~|*)x3]qQR*3񤺂3~HKK51mi{Kt7"$!S簮C 5aƅSsٹ-ێHuT d;fIUkE׈ ̠x̧23[E°~ 5g38*W 4]3LMLLhff&%ؔ͝rNs_> 72 xcJʷßOe"dB=ȡ{7~ԨoU4]g >'uYe;1?;)Hm/v5FBdU&z:7'A0z=*B0'J\%#*aTe>#Ph0E;j;:~攞>;/eݐo[q?BaOR8ϝJIXPUQb}X3.jAU+xJaa\,Ad48Jm/v~Q$4V]e`2C'x\)J\״vK&5>>-*F@.̙B#Nʝ5T}R'#4Jo㪪Up;ZX[b)ds?8zuST yoݔ~\PN|*F@&B!3s(/澒w[BU x )=,e SFdpwt}]?Rv*UP8aKNO(YB$ye;Tg ROe "CeT~9"m>Ԏ @"̙BşSNyTM }y7fa6(3o F"{PIYT~h}3=s®j稶V5>U4򶣡-@TAUlvѰRESװ< "תP5/<;дΜOr|hſ~UOWl2ҜL*>R9ySkmcL#{l_;m]'cl~~.ᯋ۶'\Nxרt תv=׍Mi-)t|z} =_'yґ#Gt=ܗvW4@PeΙiSyAWR۪V"IJUxi- ݯġNۄP:aRpJklW=Wsĝ3]`׈y\v -kj&)4]]}{c_ŋ~-*{ s.N@O\sj*q[ֿ 2N) 4p|*ܐu59IQiՎ#y\$5n>U&?9c6Sٮ8׈yo[9DS@x.^UǏsXPDL·v{r~ϚW%߭ΧSPE'3r22 |*L=G.f΢p8uC&*;G?gIńS;ق%EcV\_?w7Χf":?3ו+WO I9SSh;WoLL RH8?kXe RQh@*ZysHs* F?Ϋ?Iٙ4Ȳ>RTgUvBP%m@ Pxle,ECՃ^T)[]e k?^|l^wz[mtU=ܗtPPT: 3ǜ)tW~ߓJlCm}JUΧr_6,xNӪs(X~.͟OezvsT;fС$V5VK+L t̠=U%O *{P=*733/mqԍ;5\'3Hw.J_#' }bv5%jDU+QϥrPUO8U-;eukItJדƏ7>_;^P^3?*{P=9SF9/-VUVTqTyg߄lVڳQTVq۠J8*#ۻ "AQkTNǶmTNvJRWOPE@tfP=lcK󩲎!^5U-3yulDTe9,#қWK \TMbvfωLrSI*c>yqvs?紝ێ#TIKOzl;?v&#z9g>g9? *0g $v>U_F?s6!SqTT9S5g'W?{5/T%>[PJ*jJrjjLPu\k}MIk0t ݫ*TTP݃ *1g (|S-J;*/*MUTT~%N&#ǫ0D݇}DI$i4Wlb#Uy^TJT;G?J(:)ZY:|s;>_vƸQѴ;k|MeU1TvpynZo_^Q+NKxyu19rT: Х`v>3giLotjq*T~럼ʧPXm`cW[PI?TlPUsȰ+^GF۟|3TYå aRGI[j L k疴S-hmǏ?g\R$T@az?AgϞ+;v䅯kZ~}nPD'#+TU)yH~ִGmo˹uC=UM9J?*UT֙T9k)T=֪ AyToJﴦjySl}̧% $1g ̙s: Y_{ޫK~7Z|*TRU)r2rCNrﮦRUAU?IF B۶pʸ|@"U C*o3}-p j\~|ǏZg* :\tT.j ]RTRcW_iBH9t:i%Uq$}hѐiݔg2Y{KP$:¬h8j稶VJ?ʦϧTANgnt-zoK7V*ߧ~wˮy t t0s0R%Uwj̧;)Oyƶ䪔oPHss"ww>E՞S9dT?KyZ3sX̹"Uϝ77?Q+1o 툻nԑ#?@@ :9gv>tFTIj]Z~ e! ay,mU_r모|{~&YP0I+j9dSvp*QhUCUvsJZ~e|>)+kU@%IW]?0g (P47!-}7qm ͧ'$~_2@[^_YH*qq5Z O%k'Yy7rr\Tynt *0g ݦ{{e)7rAN6N t*IO|J{400eYkzO~]tz(eOWSU~`UVU~>$ɤR Rq(&2U©:*n)ғwTԃj)qkPMKI}[/j``0٬2>?~L\x 4sɺ1Gܶl*ZUe ;Ϲ)wTl|bٔk/:J^Eը;U:mi9o&&PP^;TKзRNOL22{L%)\zG);u{(vN-?>5^^MVEU嗤W^JE (34Tmֶ$id۟dS}]nݖR 4mI"B!ڽv |hOhpjppHnT__V}^PI.}K/-?*gUrY_]z<23U fx#nߵ7Z$i}M֖2I;v@ h 7zQCCP__pq}3fޙ3z:dROUVŶyU1ޔt_2H;Nϧc]n8"/ *t*v+O*g_ҥoihhDALᔟ ;WJ^h^H~%_ Q?HHu=ҝҫ! IDAT۷\K:pPi{[r*r)S*fg &s";[UqUw8osdl{TRi{kKܐs$fff&OPA4S+ )SG/x>a:WQTAPe2T~YE}|O |sCޚOմs^TH;~0~ 4ϡ *PA?__ ?\9%#Ύ#1-|ϧZ~{|a)/CSݿGrzS:xGj'2*IζYsHUSm>71Z/x^IwH8xoJЋ.ĉSzlWt^yɽ֖ۆ<;;ώ}qO%\48XolLVU~^x1v$kvܶG^U !ݺޙ ©uup @WrĄ4??BFP'7:}V6ۯH0%m|;eUS~`Va@P-:Tp' WRo3ʩ>,]_7_KRfVv|J-7l#qMNN2 h!*Nh߾r+;)7rmGs1[*=#+4׵v.-?ǻ?k{a~L%\KwmٖwT-̉m =٦m5#mumdxkKGnL{ ?O4PO~ />~ KL[Q->FVS=sSepJ~EUƘOZg isC࠴gTS%p+W.S. B\.|*A}w_(LEèGX9O=zɔ_ Rm՗5˺Gjl*ӟ\e']_L{67r={Kʟ mݵYWGU5VKYlyT{,)C)폠 =*ħ(JRP%-/2P8YSoB8s :ÑKwvֿnoJrܠ*VUO[G۟uWͧ+kܡ3S-,,haa?`2;SzixxXL&Jmikk[[[}@j;~7GG>_m|o]̨+2[|Kn`@Pfx|>lc{y՟cٴ$O6|{nKuZrj?IU@XZSu[[[[ں ݾ=ޒxUQz0 ͱVJLuto#󩲒W:xtůnߖnߖvKˆ󩒜ct!D?j~~T@*Ο_hxxXX-mnRO>z)9OhCs1_q?O:ptgRڒnp㛡a)UƛWi>UκJlVP-a1 ܜwS!I~-;=*)5zˑΧz}ZkܨB<$rˬƺ$/$e3bBwPMWHI^0ՙ`>P/fPkIfgg^^xQkkthC*/te>շ!-`>y:XAN Tv@7#B LjB0KRHʵCl2DTҡeJ*-)*t#WXARPPPhȹŢ #L!^h.ͧ'o;CM3DGJ٬;H R7khS@ ThKflj̧򃪷І! ݣ:ThK~kUTBAb1x<==ݠE0z\ůi=чs>M omȭi/#)AU>g>zdݿA)E"B#^}EOzkߓV4ü|*4$)3g"BCtW5.;^ZlxkKoБ[7 LNNjff&XXX ]ijjp m` 6rMG^/ci/ -@0T,577Ŵ -~:Sh'FVoSIu)% hOU(hCO & B^}Yc+}DoPzg%%w0 ?h Zn\syCÇK{)؅uZŢhCע `iΞ=/5\]:Gƺ66^ e ^0Th* *dp &'')yEKL,iys=)?j~~T:Th mT>|>fqqQbQ|^M\)"B'{ Ig@`  SRn~~>Z*W pJ&&&B GnZ6aQ-?P(haaA QP(H*I%1@3Llok65E`l󩦧yoBEo~ET=t[<R399i m٣z rcZ6~* B)@;ON@@~S4cbĉSS@#ƆYU_;I} rϢZ\\d>Vm l+E;P ɭZ>woe_!%*)@G BTvB@RKE[6n@rh||>OP@@{LiƺMu7U(hC6j{)giN<2 $}(Jm̧BZ6koH)}}**8T>P?s> *bl3 DhI2 B[b)H5ܡL{)O4̟B5KKN@VW륗r-j033iI‚]T}ʝ8q>h3~PU(\N{)󩦧U,577W h*B!T=)W,^V>e*0|)yFW@F. '["P(E|TM@g)/(izzZAA meff&hKG577n~TM@2S:'1 ]v[ MNNQT̙s:{\u_QMNM{9jqq1h "B[Pf_ҡN'Nj LxYe=:xδH()AU>4 -~h I{&Zm̧|*R7??wX\\ OQ=՛Μ9 ţdOe EReNyIS=>M̧OOBۘQ6133Ӓ=T@rĄB:?E>)@=ZYFt\.\.yy z y.}`>t.|* z3p (̧wLMMX,jnnT= @jaSF+/+VV@ rfgg555|>9 @*7h3̶?Su7*_\J{)mӒϧ(4 :q וTaOh2̛bz'h崸|>B@_!Sv|*ĻNh zmTЙTbQ u8*M0t@`>tIjjjJ|T @SN:QxY/ki/P\.YMLL(k~~^B!e̠pSN1 :̌ :Tp -?,̧LTp Ѝ̧dOE_@C8q;ZxY++h4??O_ Nz u<~۟$-,,h~~>! Nz3󩦦T,577|6ANz]xYe=@5==M_ԅp ^:`>t"RFNPΜO~E@&STz]OT@bKKHTЙ m-@@ :yT0 :Z?UN;|*Ţhk*TD8@mG59y4l555\.ҺTbNeVV@ rfgg511|>y `E8@sm̧333B| |*Ļj,*eN ՊLPƟO555|>9@'N i/U,^5-~Շ *)ڃKi/PO4??:IPt)uAԔŢOU-~cmXby r9r9-..*+kzz? *G8@VV@ r511A_ *G8@gS8p}Ci/U\ R_P.TP= )::Uo&''^F!zԙ3@(/+2H㮌PЃ.si/4:폪7G@ NНJFcH:c;@+/X)zT/SuT@XZ)z:Uoz3.WM||GyGmOP]̙sX vP]` $eV<^bpWF z @[xY++רzЕt'NSS`Ẁ6]NF@@ :ؙ3L"iܕu=C:s@#:Ғ1@:h_TΞuvi:A.|ϧJvG՛S:qAЁt'1À]]_ɓ_BT@ch TOt*M1g +twSOt*0g t ?!joTO7*9sN'O2k tb2H붪T퇀 h)@b>UgF4<UghD[;͙ɓO43]b@rMGOզOחHWZ̧ *N̙hT+i՛׍O4P#LT*ͧ9S:{m.$tAgϞb Ŋ*/kb&'n`ߙ̶Cz<% * 3gIfMXL_[][nd8e* 9Ss>Ξ=|* !*biN8E0ЦNS__]B2̧# ~0E;@g4;-~:o#s:vPKwC}OP--]`@Hs>%Bb|*zT~;_ߵp 'N*/Gw6}}Y R1xq}_H{9@*BO9s-%O500Ȝ)4SP'0g vϙ|*"*t5LT,^y>sS0 ]9SS,^5MN8jhV>TTP0g ImT~;5v>L|,sΞ=GRq'EtAgϞb S~E_ @z}C`רBG;sNdϧ݀ ɟ3E;^w9SP0g ON֟$3m̧B m9SߤC(RISک$giSuA;2`5 HAAR:! m/HPR@RҭʢMH֊\rgwvwfv̼^`vyf+-`gSQ4*rkfu=S-Hw*r'z^ @OxSk:ȕg1 TݬAE.>]v*+u*3 T䉀LT䁀;}xY]SyS#+*&2O؟nPq8` ^|%ctp w̼/Q>J|K SO})%젢#LTt3ЛSI*B@OE'蠢e\K }9TH*3@ 5S Sш5O>k H)|tC2'"!c8` ,K@̼/Q>2=RK"vP=S~&z(TI@LPD3F(~W_nˡA8p ^pz̼g S=L=sY/ո IDAT:gOctP)~bUATB@U08)X/+0#~13zKvL@c/|<ԗ^MX]]]z4vKvLXX2*CCCQ.^m ׿|ˠ L.䏀w O@Cz G@ی囀*GSC@#|Pq"Pc"L/*Uk7U2b T_TxS}N@#'ݬї^@?9}8qqlj:.3fvP@AfG@AzgqlE?Uw:D0~Y/2<<R)eS:KUޣj|T?vP,c'j`4?nRKPSPmc? wΝD@ HQhSJ@"U v8"|P.P5A0E0VV1;{#!U;#چq>:a144}AKB@Ekgz(䋀Nk7UY/ off^gyN8EW5o{gAAUg3EW$;ܹoz9Vc``*'ݬ+vPEgĉDžS@ǝ?z8x>:;Ld@\~>gOէ;LywP>R-tdz'|KKY/ j T /<_Y/&L'۷bnfK$"-jfxŗ+*y_^x/z6Lg`|Y/ J9TZ?U=P#T*z*LQ17i* Q4ϯg,+++kcy99WzYWR ('Rw^F^@ZO'N<.gf+Y/ĉbWne hITssƭ[zVVʱj={n! jfxSݻf++vPћ}xbfXgAg^Sk@|Y/ B{T"Sz)]TyɻA+R?U.wP院AaV*-GDAEs?UvP院ߍey9ܧ]~:}xo9vj`` nޜ[f^"r+++~~ ׿|Xy@%5 @JK*+/AUf/)@/5 ""l=jiiq* /]&ٳ/%@JY/ ĉ7mϵ㡠5jqqޘhii1VWW젂6ֱwP̼

`qnx@ X^LQ?zUgGOAS=St%J{ 駂LU»Ћ:ѡ:ΝST TYB*zbtnL5I@Oo}F R):S=SdPE觢u/:9*F27:9>>iB3eT# ǎ=jh~~>hd/˞FrPElT˺#G<N^^uTvMUe@H*c%ׇ (;w^RDıc꧂Oe ؖ)hM3qZ P%Skn߾ۿG@~e;5{T# "SA9y}SEjpUB?biiϩ4<ʦw)H=S6J$TvSQTYm>*;Uȧ(r\F P%PPdQ8_/陀*bc?\wҫ9r\H@JRS=WFz'q/M?4aY/>floyy)ܙ`*ѓUB?Eq֧=Ĥw oEީS]L5?ȻըRt ۷2)E6!՞F"X2GeN~MLL+zǾTRL57U"T78p0'^=T*w_yL8_-}P%{_ Rwd}TE2ׯTo?AyeQf=$J܄SCY/>W3o|u@O[8 XEL5"ݼ9LLLƃzg?Zw\'"+3ՈTd%o411%%y "O}z' %/EՄTp*"bpKaGTsTnc[3旘RмSCCdO0U~*ctZ3Y/k810e0U.L's?AY/I! ݊R)>:%빼󓙂~*:-"=EjjDɓ/o4[oofˠ?o;ww ޵9Fy=oy궁Qܹ3kT.]^* fO2@G^?7n\k'Uvl[@588##5v\.Kizz:oį7TK.ǩStmqdvF֛*Z6::<TӘ@)--AGkr,//K3[D̀*kߏ^~ˌ|T7n\? 9[@566Q1Y770JJOPE+ܳ?@ܹ3 ~17wnTaRTv𮚏 LgT0GZ1#"BH'é"Tc1|j*a/=AieRjX@tr:J'gb. "">k@–ۋPĮ]5g5gϞh0x@0~*=h۷w.<@v>RwTvOQg*Nҵ*qROEDeվ}U@ܹs+~[HTD{Jozz:Ν;z@8v(z@z7Rd7usӭ Լ/8_zj$**=AUۻ@{ "PER;(j@eTL[=SdP%Sg:`MD@GW㣏tK ;/ɚK=S"JJOPСz&n4R3POpћSe3HT0zpÿ=۷oG]5˱p'JR)hS8_zYL5*a/=AUxx^r'B*6Z^7KSA0՚<Ւۀ*!J_8t ""_}tcЬ}SP=`**_.\?XD^@Q饺~R(c~2ҷYTSS{-P.cq^?yBT AUzz޽b߾{{2Jn{7m!@JH_W|PhQ`+Z0(T@0썸x|ˠ۷oŕ+?$nF=E-, R*8_- 'Ol7UJzx>| "*!W[uJ˱0NEn@5>>Jozz:Ν;2ZR*_Sxx0W+WRT%ŀR>UoA:WKĥKԩW^F!-w?*"{s􏹹Q.¨=S9{LOS O&ᇣ[qvS}2ҷ澩 =Sg OU|Qɾ]{?_X\\Ye]TFNTz3HTZa>U@Qv}V*bqq>JRխPmK=St@O&ȑ[U|׮׮_kqqMST1\蟀*߳ ]S Q.'+ }Ec/^jcT]TP%q{u뻦W@eTqZ.J3W,PE 7ߋu?R)*j럀jdd4FG=99b/~}P%'*Ç|W>C[\\Żmj֛ѾbLj*!J_187>o:ޝ;sQ.W߀ʻqS kͅ 3vSD<౪[3J^}7^}oiiFTDTz\.|($| jTg/'ȑcw?*b nիĭ[Y'@˥XZZr__@5>>%)| P5`/qA GTT10PܺiƏsooPE ʩyTJ'jɓ/M~|:rݐJ@700|vu >KKU%=N哞ܹ3Y/TM2TR;*Mo͛u^e2UXTFETzvN@C.]S^z*_J@1\֭vn~Ά(sSg5gϞL JI?Uzȑc111y3Uu@|Ww[ZZ56ڗ3US'ʇJ@U+$~v;B7Fc@544© 36O|xχ~@58Xypa*Tݳgoa3^6O*[>Pc``0z'qu6څ"ĄީZgT*=c٩T+W.UkI%ZƗX c/==S#cTe# TTCC$nܸ^kzY\.>W8 Tz:O@ae7~;O>8xG^R.TZ0%j0Η`{T]b/qWC*UP ~=s\A(r,//[jAz NuYua?;cT]&J_wUB_TTCC1<<?_ď~z(Ri9JPj+;v7zR8_zl2`5.~>P,J./?} ϭu==!mR.cqq>eql 2t8uꕬQHc||2z3!JP ]x?L~V/P5PUJw5zBZg5gϞLeL@OyIH%j-v?|_<L%Ti*TJ8_~rɗ'?s3U+ծ]bxx$~??PdT*E\zGmMNuܹ3Y/*OTR PĮ]#'?uO@7S U;ITJOT~ rJ?Uz:Rr*}@\ rTc/B@j@% =S3oOΨR Z{uo@;˥(Q;: Sa/==S *T osH%j_@kg~Hc=JKP O0bP~_uH%j@5<+B9/?:K(K;~..NqL'j$Pu.<` A4iee%VVʱZ'Pվ? j#TkUk{?PcTuDj_@+[^ jUkͅ 3vSd<#[nPu&J?|  &'w9r9^F!!J_{ T VVQ.__7Q7ՕX]X/'ՀJ8:| zKovF\x>eJ@՝\.E?_Ŀwߋ7uVWWRCU*TS)M%JO?UkC*UwJgr\t!xGx*J`'B@՝J8=S zk~J@M@ҳ?rxˍ@N%·RFT SJ8_PK.ǩSdBOd=hnTg?o? 'G/TSijٳgS}B@G*~$&'6*v@U*?xw]얪֏}T羍 ji6=N=S?>tRO֐J@e@U*-Gw%я^o?&t@+U/STSJozz:Ν;2ȀOJ_:C*URv?>pga dw[lox\@΀J8s3p ?H<#Rػ@<A:~?K_kޏׯO~_^=j}/^DS;#j)""^zG;xf©UO5(gw޹lN{x_}K_JwoKTBsljjpjbqQT7SD?6O~MLLűc=#~Yɥv7'%hlnq#~ۭ#~SS{S_LgZ;R:vػw&ܹ3ofwߡܝrhѣ+W$>駟d,rƿ}pM`/==S4"b׾S(w\8z!U=H썘yޕ@SEV雺'e`57[F tPQOU?UJۗ[Y/=x6>'ȑY/ !TsLL ؎Tl駿=v_ ǎ=ǎ=.Mo_K٬BJ{ݻÇ|N7rY/S*J'2J/OT=\7|<8\]PP p W_v]v]vH|?xw+++w/(Q.TZVkoy\})֏Jw/r9׮\*Ϲ\]& յ^Oss7cnf\~6{vUg|coazj/$;zuպQZkDU{Sk֐6<<w뛪'sd *ZoS5[oT?XK#kad,5%z3q>I@E˪Nz%~ܙ+WވԔ^55;&'wk>۷oywGAN:իctH_-zZsm5?H|;O?լR8~_|2NK%?_/}= - *#uFE15upX\57z=mO~&'?TE>^_xׯ_۷oŝ;s@*wL*VnWLiFT;hݻ&oŕ+?{>uz("b-3^@Vyq&3E(TU[qqczd*Ɲ;svW}zo"cjjOTkLM: T%TG>Rrʕ7g?{#e#w(}$>'OĽY/ -;WyMNNmg*%=Sd*駿=v_ ǎ=ǎ=۷g?t]BƺɩJGr ؘ*z3GTt]؟jSm111A혟IF#"튢bdĮQ:('_*%Tz0xaT:6=^cS[nWANjjS\TGȨ]SwJozz:Ν;2)x c)Zxk*q_DT^TU?G-XP?F@VcddԮ3 |?(~S^z9bnfx(>rS1>^ܿUw춂MvEt. 輑z3՚g($wRHE\n\nJG?UŻ4n${tr޽"b㮂Zv|'[5::mw؟CkH͑~b/=D@EO^u?ŋ^Nf>qػ@?X_KBXr[m_Pcaa>j>BcW^2?h`j¼`*%|TAUz>8~xAq{m韩}N4zl :cii:#ochصgJz߻Tjg;:*/Tg3Η`~e}G?UzI?Յ 3}=wq##>_z9@ѱ6l"; <ٿ-B%r,.n*d{w*Ru?թSdy≧bvFS]Wq_g? =r *L3)` ,=#n_ Sc}_w RW5UTP'Tpأ/]G]?\Kldd4FFSr9ܙSt={&Ν;R wtP&Zڵ_;|+Y/hAμNTkLAcvPAK}/"/iKvhxx8ƅSQ3)hj5r^?3VXАPw vnzz(쀀 vҥkT`o|^@%9TP% ju |o}vL ^~^F! 6__T&Pm=G@%ڞ*9O@U[LLw惔TAUz6~;?|N@#PmO@'ehh(S | u*h\0c7U7~ T >O@U}j>yjr,.gB2#6Tgo_/T[>O@U}j>yLU1Η` O@mf/q+/o?__UTo>dɗ~ oDZcP j'~<Uϳy۟+>VxJ0՘ܹ3Y/ 2*=c_W[ Pm]J@%>q=[>jppPy3PAS'ѣ;_#G 6ݾ1 T׳X'- Zg A@9*=c͙6[@uT\U1>3Η)䈱s֯T; 6O@%PU߸j=[9A> Uۙ7/ Tf v>y78_z)7䘱U;b8p0?(y\@%>J@U}|zu|` SML8䟀 @P9p8p`<Pm8.PZJ@%>q=[%Ǔ=c|3Η` C@a5.MCǏV@% U T׳P*rY/A`UK={'}J@1NG@U9/J(sLAq 7;{#.^<2 O=ݻ W@%jj'kj~#݀J(¼`*%|Pl*('_*%T{TߡT5Y@U繛]c*u#JBTzqܙH@=_kSng=qQU׳sT[P 'Jt@EZz3E@=ҥq+Y/S<$v=;9G@j{<UjٳgScTЃSġC jg'#PmO@g˅3)]*aO~SS{bjjOvvj9*Ty;3Lg z z~uJ@9TP%m3eAKO T :wC#PmO@Wjc`5zJ_wTªZk'J@~U՚tqLAPA2AULNN8xTVTՏ'P9y?osPH0q>o*ceɵUz7'~<Uϳy۟M@v{'"T@k썸x|KS199w("TP JY yTJ X#J_Zh%uT:gW=mndJaL …c9011SkuT'w/{r,.gB2#jT*MjTURl.=S *$P5&ں>}@*Lgh hɓ/M~Za%PZJ@>ZVR9g*8wL B@4_kSGXED8p*Pm^J@|@U.cu5Rg*=|@*`.]N2 I?Uq8p0"6WTf v>**W. +=S9{` HE@*=c! O@%jj'kj~\.E0KO*2T zDOe%ںf T;?o}PJyC JO.*-Sg쯷%Uv;T T;?o}TRegT8_zzvPme/=AU?P>.PdGT㕵]:A@t*=ck{#"bll=Z'zJ@0*!E1Η` $1Z#"" &>OBJ@sE`nP'Jwo'x փRi9`3| nP]c/qAAPm|<Ur++X]8YXsIDATLd6uѪTJrAU)!KO0dE@d_k.\1GGTMWv` 6O@l@U.\.ݞ숂v+˱82 85K.ǩSdBOEVg~ YZZu=S9{` Ȝ c"FG6Jٳo-T [wJ(K[nJ8'* WN|_J{mꘀj^Y+"3t;w&el rG?Uz bdd4FGmPڳ>kPݾ=Ww]l^RJuχ^g/==S@ O ^#j) T@J8_zzP*=AE$JOP4*PSg0Η)T@!KOP@^ Zc(2Ph'L@@\0c7)˱82 8KT@Tgn3Η` E*KovF\x>eS)z Yq'Y/S zLN@4cO@;J8/T@_tr:J($Tg5gϞL}C@T`'LgG*/T53л'hL@ЀUC0|P4AP?b3Η` y*&kͅ 3vSH\QHvN@CqS R2썸x|`yTJZ#hɓ/M~*|3t;w&e F?@6LgTmt8uꕬQHGTkΞ=#h3@J@gKO@:H?Uz*Lg T*=c3Η)Pt~U;'j)Pt~48_zz!ȀjLg [* 38_z)|P䀱fgoŋ^@fS)@3| G@3ZsŒ?X\zd T9u8uꕬQH^g5gϞL䘀 z3P *8yec)JTzqܙ@T53)bP~Syg5zK@P`3qL JOPdM0)!3d8_zzz KOPt`5z G 3tqSM@ÌFP`*=|A@UZa/=@Pcވg @S)?*>$J| Okͅ 3 r,.gB2 ]t9Nz%e~* BTΞ=#@@@SA3q> ɗ ܹ3Y/P~Ao3Η)PP~U[S3vTlK?Uzg f h~UP:E@@ǜ=S K*2*=cqL*2*=AN0=S䅀 O?qL7*r_kUTz+$J8_z)N@@KOPEL8E UȌ'HT\0c7Q.cqq>eq>H@@3GKO0@ (,cވg `aa^0q>N@@Pd*OvUU6U3 *Tاʃxv "اgLcg TE/)O@ OOP`*)h b*_ٙ ajU'GC@G"w|Sp\*8"zzMՀx,@;TAUx|-*B/R_Lū*l6gP@٧WrO/)6t}x%UzL@ ^Sgg !LՓ[P%P@fUrL@T)x] S@T9AU *(_=_zzz |PDPڟ:_<I@Rww+|hxLERr `Tާ3٬R WO}*;S?TMX,.S}*;S+ z>UCLų3$O}*;SL@ S{YSgg A@Tu#H}FLNR7<ǣԧ$)>xS?Bx px3T4F0|D@9nv{25Nl6I}qF^g$u)3bC1TSP 4Te m>k>oPUU6U3FǀJhЈTes8z%w,YX.xU)M6{ާnv{>0Nl6I}#^P+)*` H *u( r&xOu)+T@RP)UmP . Tǡt 蜗Tes^S@>-YX.xU)$*)L%Ayj Us7Nl6I}@㼠FP *P:/bǣ0^k:*hϵTS@^eJ#T@/5T5A% *O z>bq` pԆó\xIoSAg6 ͪiEPb9hꐀlP}*;SA}*;S ( >O@p*@<#۫l6I}@T$e$[zKr{1;IENDB`hkl-5.1.7/Documentation/figures/sirius-m3-100.gnuplot0000664000175000017500000000024414677222567021326 0ustar00piccapiccaset terminal svg set output "sirius-m3-100.svg" set title '[0,0,4] -> [0,0,2] 100 (steps)' set xlabel 'l' set ylabel 'kphi' plot 'm3-100.dat' u 3:7 w lp t 'm3-100' hkl-5.1.7/Documentation/figures/e2k_3.png0000664000175000017500000051173115136610436017167 0ustar00piccapiccaPNG  IHDR,L5־sRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx{Y+oxlsqBd7{1TٵM Ha9PˆJ%P'a!1cH$ʺ7 ڪV=6Ab!鋤CRZ-է/Rw>Unz'3vwV)PI7oL^28fKάZ6%pIY__We p,8jduuUh pv j5zLFe YZZ:5zϫWzL9+++Y__O+#`:LjY__bժXpeqq1׮]R8Z8SJsL` LҤ%MwZz\r%juz=z}9}fXpzjZw^jOiLpN꾰2I׳X7z)IVYZZi___b&nNS5h^Ҟ@V;M KNM^O%s.#lTV\lfX05jZX0 +.6-L.%%V K&bee%j5KKK^ SD%^͛ +KNj^zR&!Ԭ*Y__X\ EjMzݶ$bRV_ղ+W =G` [YYz\S-Yv$rJdmmm.%'^[ 2V\LfXpFmsڵ,..;.TXpbziN^9׼JM` L -XSC` L %05XSC` L %05XSC` L %05X0U>OLz L?~& &D` Ty>^"`j|Oevv.o{'&D` xHLQG>:0Kj5SC, TIJg&"&A` TxgS*jR*S*v L&iju?2%0K&c{"33iZiR̬p H` =өT*Vr|>pL{RNe+EE(h HL>T*)j/J)"?.%v^EQT*T*gkk;k. %w;r%V HQRTl6p,}KTJ;luBneV+v @LO<.m*Rmmy;ޕrHN`%X6Mm趃Ev+xk',n`YT*jo]0B` DwIQH[a$RѩL\K&xWgtv +=-EQJ̇?,S#}cl'_^JpN` kW:+3,ۏαLZv oߙR ,[ $i6GgKNLwvue2hn[xԮl6^NSW̤T*vWsnX|jN}%mo{dg~e7+ܩm o׼O%>ozӍ+e)EQʃ&XsEP''>d44۹{կ~դ )X0Un޼+WZNz)Lp`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!K`j,!X޼y3z4^ 8N²VKgԩY__We t*eZM -*Pղvl/cp~X.--EzϫWz4V`yreeeWK O':òVe}}=8؁G\v$_8'N4TU Ɖ +80keVK^Onzv0 ˕$I]jz՝3ɞcW^|uuuZaTv---ڵkyfVWWs$[M٭LY8p ,Z$rʞZ&m_Kx^а2N8TՁ'0`*,kځ!cAvL²[]_1ٯ{عjUX ʾF:mOK8ݍv)㵯`RX|ЬKPa LCW'I%05Xf~e^S pz~ fii.JnEҾ7\\\yZE%p(;Z-kkkY[[~PYlXݝG2B fX...ڵk;zrڵ=UfZ$9xCAvfX^zugޖzW՝ˤ]uya%pۊV=Pw'Gv{q_O)"<{ ͛7p `4TUo/i6Wa9ͮ_|C>x!i4Uz 333;28ۙ ,||V4$կ~u|5yLzI` p2I߿lnʭ[/֭糵VF4ݯʹZʹZ$` ,.3X&ɷ~뷧Rdss#[[FvHپ5h4EQ섘j5r\tG233ӹfnn.ssB:̦(,o}WʷC\hg6|+ϛ޴f 377ٔ˕T*3\fg粽Fc{5_ IWܗ7FV*N ٭\JJrr i4CLIr'FZ\dffSq9^ϷfI/Ir䫿$R9J%˙vXg'R`sX&?|b(L*mkksL|M~~lϱ_aek׮իI\'hZI/,jY[[K\r%ju 8n޼- 2j5ju'\[[իW4!v`K0+&znϗ_Zj%TnlBKU }﹥^9V}U5G_Aeֿ " .A ,^yW䑕A>rTpuڇk}Pw+rAes=)%?s?tc2{,`0%^guu56q`'ܭ|bɓi<0/o뵬Z;$'K}ߗzTˍgג;ݯaesrPyP9hxi&y!ݯ[ݹ3 i %S|K8ēy<Eqr[z NN{Zkr\rPeeo(R?6t75<6QzNг\Ns0Sh E'dϷvڤ Lpy|˔yߝ绒tʷo iwCrVS>nHyęl&3g璭9kvJG .ϥ^Zp ,9s̷{3wH9G1'Lg2E))xij7ݿAe4koUe2<XQw&_LWh~feer+fvOI.'|Sz%gRp:턔)UWFp?yÝs|Ff#ʹٴ?GUaA堝GURZ=߷Q!e=~iff$[9^hm{ 솖಻xsjYp "L3N+cO<ճΈSMP͐ldcs#)nʓR)}>yNWS`g CBVvl -җff~v՞ y/~ɗ$+{wi|lgoFU\V_-Xr.o 'w瑕t= s@(7:&C6nj~,vLZ/|u)TUv}вx"EHQO1ljVjuʵ:yyk`Y]/}GY~Y/sb@UeQ*TR*STR.S*UR)S̤R\/H;xVIgA][JL+NvFc;fc~,,\>:pO{eؽ?]|BVaK%V^jm0ʣ'ڗ)N"m;d`e. _mSuY&>7k?K>۩,R*W2S\/enn>EQJb'Ll4ilo[[ilohhוQݿZ-TTjvBrR(J1'5zW%:\N#Z*>Rp 9#3 *{?t점rs|,y{/lYOE\I.uo.gar.Rdkk3/|y糽fJ6Nv3wrgERwfʳ(Tʥ]NQ*CYޕ oݽuVneϦGWW|P ceeE8T\{'#cdxϞMe/'6tMA݊Q\qve3 $gLmO4%\d>ty屧>>0VH9ɶgX]@o9蒣wgxeH/UKk3;?Ӯl!d %GwTv?3xGqgY|[W罍l\*>*Q|#Mp6 ,̷y]?Gpc UW:MwQ||MxaebCAeydRRi/䫞MӌJ~?"ϰ .%3_6kh-6 d;v0p{Q?bnprOuMuJgNNVߟwX {vhY$E*T'q͟zK~So=k'YVl&w}KRl6l7V]&)O[mj;,z 0ѧ>GݝwSY9Ʊ:~ʞs85bO*w rԹ?0̶7F .[thlam⽛#WU[EVRu250BLy=92ұ˾;G.7X֟E1 t "r~N"x"Ֆʁ{/UVV'TȋuZ+dff}|~]i솖E)),{c9k<$)-Rzi)rf2wi!uć>ڲ&JRNYՖp&atXzK#=3yoP;>N9N 9\vn]O{k6r~3 <06j2ܽ߭<`suRe;U ){w³AeW=|bzZKy=-Oj g$#sERʳ.gna'Z-?{vxm/%W~s>gLA%SO` p~{}goaǧM|rr7I^X[ث-{ "lغΈHg/3,~ikCˤoe9}4|I]Y3I$)3r\lmnfskopj&iΧTmٽ Z$^[?} RYRqƍI/Κ?KKKY[[K^ϋ_/8g}ͷl݃;SnKm빳v`{l{k2ܟ|o#ֻoL8vi\gu)Jk 怠2d~n.3V+i4A=-=yS/,~ԛ??2 ë,OqR{2hv67V2;7ٹJΈ޿['T}=0y6:綒w_LZW˿y'sʕ\vM SO%! yU;krN%eo6_zu_!-8ϷtN9m5pҝ2*wTvR,u7>Ҳ<}(#Y3ɗ'+)3Eʳ.̵[ŋ"[ܼvfimݘ[99r\nFgW|sSz8=Tr ,(<3yC?_#ݰ}0szvU؍{UO`4r;Ցivr`mԙW쩪wSV233dS=R_2E)}_CSVvg$/Kl*nx?4rЦl09|@9,& ,?;7Nr;;{c_RfffR.x .d?вhWf~ofWpZgoHp9Rfƭlmmhvٖf$nefoh="OِB %k׮MzILG~6o?ѹ7(v|p':LcY!6m⇽ہfc+[EQw/:a{NU*2?0jj_;s0GR*efݟ½dϾ3ҋn.f*lnFi6{w=jCa;wCˍy[Ŀᛳ|Sz[ py#d%x?Uc1UV&ٙM9q*+Ms$i )TI_pZʝ}aAe +3Zв1m4R)?{>+8Qcϳ\8)K)ϕ3wy> iؼ͍ixohyPepv`ysEH?XSy%S`~| TJQl4jl0cݹ`XY*e~NQmAeFƾ;e3οTzeJ/Mrl9mEQt-4w79Jx#{{Cār'j>V%|\K8ef\l~ټ#Bmu<9dpݶ{=x_ʽuVc\tx߷V#[EJ)i6fceZc}k96ٹjdQ>EZ6{'&~[,%$/iWʙvBv7鶃ox-J\"|5?˩s\$K\<Q"{=c)oo6ՖLe6VJU)<\xF'[T*/=fp9h}{OMXYM|iB\rR*|g'FhZxop9(չZoq9K` Sa=3Ѿs6 .[TGks!XZSۍ4[(ՖC=/Lr9tK:촊Yӧ6B$+RRYJe;/gvn6[uV[񣄖*3{Zv6)JEP\ `X”p6=&;r'uaeߵߎ0 z=mE*w>/nuG8r.&]EJ߱ ƭn"?r+)=; -Zi -KBK7s*hpp^M}*]#KF<\vÓsT[\v+ 2xo'10lco5<6rm'YmyM|OhiCw?hmEor|R))JYcm?J]Pd\4y/f{kr+포͵܊В eptK8g<37|,vۿscVNSxuہѪr>}{2suHj\ bzB|;S&~eܕk\ݙf /<ʹ{CN98L30e+BKΕz$:pNpLwRܸ^AN`;uk%<=q}$-{ol --Gos ,{7ZT}Goy]:)Hi;/e|66n7n k -=ʎzWo K?61mr4 IDAT`žq'L&ެXfnHM lNHfe,m`r }cR6ozi`htk^F,Y "ZV)%iEiDD"tO0UWZEpiV\Z_޹αb@ nƒ\THi~66):AK?t,>DѼ#pY!L[O,m>6S1yӇhjL-\@XT_QF `&[Zp.ZīPh Ei֨YF %bUO9-@Kib`B}٤S鿍vڵS":$H Q~Kt6?$a%|H_{3l[VXc@Y}@0"X7KeB«/74R9' @Ϗݱ2:~0/v[Ň4WrgZWs& d \#W%ec-}PYue06^st8/z<t"Uo$7To7ӈ% ,Ӛ,=u6L<3T;1_S0YyJa;ulVoЄ >f1Bkdn2/ ZB9-tXfS;ZVGDڜ"`I"JE9\H$ҙ>?Z ֯ ܯ>ڎ_J2ϱ~X\m@fZ_rkn[p)BH7xdzœÔdV+tEMJ(F[|% ^Qظ1p<LގLធhn %h^Rn5oh Dd`ZJƙj洄6| ZlXe8$KTY$t֝8pYJE9raWs+u \2$42(ih+e }OJeh$ tpn쭟!%-2qZK~2L3UWNKUǷ"= eٽ@oqnHhy `[4142E{yIyВI+ (h2*<mrm|w]X94EH_,I$Rߢ.$tӝ="`I"U#HJ Jj˨Kl ($JUk0'7Ew 7\Vkop@*)+Z. ^9"0ܐpUpӔ@9,0qۗ/Xm1T08. }m aý`>)Bj zhx>R}i qǾLВT#G`Ϟ=(RD:]DD"HD"mf%`* 20l]EhR^jc\ xrL޼*AJCfo9P('*JD#`BV 2:<s=c]nJ&pl`KɘRIwQkxxMgq.4̽r_R͛OF-7:#Yh)|Wנ%|Z*g`1؎ u-IIɂD:}ED"(%DL cx.!SUs~FiE.9$¼ҹ䀿9T[s0WB)R7V;-@|Omjf,I057R!zsa~C=:(UJu? vUqToG*RO& g GmQx~ÕZBd*ģ+hٓ-dž:Ǿ]KВ$Ey*I[,I$ҪJKŀD"m8(:T6F|y)̙Ênܸ$eq5AfUwe!HͻTV+ )+7~7YN{: j,lx ,(Grh*)ܚmR VN >.rOpټZ747v146dNKχkgqp -6:yN|_ڰ6HA""`I"V]zA"6J XT3]e`UNg[ (ͱZH R\ϝV \jׂs *Od e.Hx'TDVVO\sx҉?ہq Hwۋ+z RmgK_[g/~L؏p cˋqNK@dphMKZs;~qVNHQJKf_H$zjC!̃yh-_\γPVnfε?0n[Z) m}̊*D:AD bX ąfڹVXm`zKG)(S,Ux0ҋA)_#,VSG`qLsҹxKߺ'#h 8J:-}9ܚS҃-YD:3ED"(,D"bXTjK,jL@pA@@3oUe^ಏy;v6$˝;T)^'i<H*神Ye;|q-vL^tT$ҙ+$iDI$ZhCA VAcW43n1̃}.sqZLeܱpӜ d+8gi{|1==C*\ +$DVXKpiQR{ƕ^"Y\k*368rX !!w3p mih?"`:INLN6\8z^Ka!D 2=ZB<]RcVw"Ct拀%DZWC6vڵS"H2R6Ͱ߶RgUe?pv zͽҼW9!".+ w^㹵6xk*ЩK˲_`R4$d.9U'R37iJha<,y.J3Fj)Wf% ; PbSعg'>(:K@Btxoq&xZВ1خZ/=6fU-A"="`I"6DߒD"Tw> ˙ciR5üyT mדr#`%2jNV, }Ueb0$XX jvq~K9p0 #,dCs B@VBB t[F;~GE%p/ c"HAK9.dj:/k Z΢<$'$iCsw}D;8g * _Q_EpY4G6^ueʘ~ e9#T)b@=Ч $ߩut;@ 6Z"EveR;S.`YE,ˆl M!zӘNSda(O*ܜ\*';^ra?m@K>o;aMA)t;G1` YQ>Ki]NKخF_xߺԟo$HP$ɤVZ!,My.pR@?t@&JusW e骬`%oBrX`sU/q0e],fRnɴ S4s\c .[*:@M^t}#>;:@.X!ç|>"_Z~_BK{(ܺSuZÙo ,X  -}NKU5=`tr`)^ -#%[<p3-+|?ݏT'>cm{z/>q5?,֑#Gg*I$RR,I$i!\/3$# +uge밠*L;+Ql+yסvpYhLmL?=> FF7 w^}PpԗȔ@"DD"VpQV*UqQt4f*WLͱ/eq:3ύoi:m}-d+M?q|N"xذ-3"Z*в ``vm [?)NS~jm[hdx7~v:<$XHRtfΏaIJЙPÿDr ٯ۲ُ2<2.CmضU`ZV+E_)&O@f XFLjae_ /O*L\㚛rnRϬ o1d\Η[nK"TL}Zjy*I>_{/݉'tbd䶴6\דNKr-0 ~ҎSs1>1n<kn鿗w}*I$R"`I"8Q~KS15Luk6e%gl~~o!6s.i6+BҶ $NĬ _;pq]y*eK$tv>L^ cjW_qW_PXxZd H$4$tj׮]Qʞ={m6ڵkE"rt>'[U7w#X$>JXEqvDfdư( XzEڣ>Ӛk)y0J@myfzH}4ôfOmky=`yIˌ.ޡ@":^ Vl[{Z@$vOػ}=:5\/# gp﫞HZhsXsuE_Y?K`c^t-Gd+%z6#%J^P Z*$sGCh9ڋ;ع"y,:h@T=6$^6$ s.U̜^SXxt7M"V*{ݻ7z$ǎ;}vLOOGKnKis?[LBJXt +$Xx,`iy35נtJgXsޜ[-3ΛY"'i-uғkwO/HPx iZZk#T xTdy<0n4~I7hפ+g/կI 0]sZu` />(`o8``.؈ p|0/mg~󓈿K htKm'ޑ|&wI= u.Y@lnJx~&`YlZS3,uYFKd@"6 ؝O>P S;(D02BuBc`vy~`-oL9r1==qs=$H"rXH3Z۷oLJ>(Ҭ5 Tp[a4VkTϚᆾDd_yydNZ[޺sNבwM7G TE|90B˟Jυy^*v`p췾Q=lWеܒ(2Oj~uh NJa{2T]Ӑ0uq9?IsN+{Y[NVN(|NwJ%]܌bX]1~YөstڃA| @c fpəAϬ  r;vciL/Ǣ31 @/+g|`6: :GL[5*祅R9-m@C;d-q] zp.8?;e=\!,--ĉ་=|3:O?QJ*$U1$_{w}\>۹OHb}YvwqUp@7slL}V}B9p2sYQ0\1Tcp9W,+8LK7!  \NW W j=Yj.ٺ׿&87j^z#PIQJ$i=DKtjjj SSSߒDZ'e`%P.H9 *geb"(i 9NL0n4-S;9 ]cQ#jr#歫hMОv1AzFhܣu~s'sEj6Tbd@9xP\Dz,LR׏?+B ^*h j~"oz Y'lq@=otgKY-,LJ7>&Y;37^L0N{>L:npjhLKp97zӲӔsV&TV. p"|ڹh9,ozi5Y9|nch ai] [ђ;74UEqϮ 0;{sx9'"~Q"`I"zQ~Ki}d._pҲd v63*9h~RiZg U L3g-c=o&kZ鞥̉\yV&m6lO~8O_X{RwX꯹q^林%tJ*N3T@sn2άcm+p;]x dz%ExՀ}/vUL0-@.˰-jխѝ<>.n u\{ ć֫o^5(O%Dڌ"`I"H%i0e`a zg6MjjC͢u .ۣpʎ/mh[Phߊ=ϋû}H&(G+N/,B s3F2p |py18K[z]2$UugrmjgY5XV]u1ScjHIJ u޷&&u`nn(@m8"pT G.Y5_D^*|̤E-E@F8Jψ͓p8瘟"9me)D"mFÒD"6CHY0zO­ f܍|K5pHƝDA_\0BA]=lz>hv+o!L+T$X+@DA!ϟR!y۪pC*1< < 9,*3=f.YHG,7}BYK饡>YVU ~Gc((N*ěE n*Ӎ_L05*\rɥsa{,D:]DD"$0z%c- p*eY2}})g=^O9i]'^RJUdm9jl-7}Rv'5cm8mlaxb\|Zl~9‘c8It8-2ϫay0x@J!0rURVHih i8LDY @K?@̼:p"CrT6 ,~Lrp> !THMKcE~.,m9oP TM"SI"N7QH8D" (&o>ٳ۶mî]6zZ$҆iY.]nay㕅bEcQOI(:Ѵ0q䬗3&6֓jgk(Wsk(R"e9WH`~,ǁho!B[8M>T'BDx"N fY=by`-?z ~_}[*W½`Nj'̻?F^"g%RGKdaxabBSO=KPߋm@1N춌Kď=?hq W`zOJ:>tXg2xok7ߝ4^,V7{ 4h8_-<\"͊n9 o.sDas,--b~n[!^ÿwUt$ &Eμ<\y:̌+9fK*Z٘<71TJy)ZK^__f3o".BsQ0t{8f2\/qdJGzE^buy\̚%420 lNzp;pO܎w.}8xzGhý`F2)'CSjO=zn)`C>V湉^"vB۱Rm7먊jrXQw)t`j7.={x񟊋2]U|%:"7!M3UU(x\{VEtͣj!)6;-Yo0j?!et!xSsuۥ` o{>׾$t9,I$i455\NOOS^ Y;2ʘ !,?~qC5K)S8FFej2iC1ϐ igcQ1'2˼5E2hÿ́+{Qo5H룣o:bsx_{?Kms-ҙඏ봱|j xŸ^F߁wM o?_?}| 2 "@sE 63 Bx= 6gl%i@"/eTN ݚ&rX*e[v#`?6]5Б#GgC"Nٻw޽ѓ H3Iرcoߎ#G`zzG;6zj$Ҫ+ +8 \2%U88e>cU٘p.S:cRk7p)gB J]k/;'9c e%o |xn+4Wr-4d 2(n[@ xV:``i@,<cB15|t;=̜<\yV|kvc8/z0 }]";i߸ҥ^[}u|tj.DחcwAwZҕmK߭n3q^LGm˼c,>ޫF<rꕧ8Te\5Ҩ]n<1]p>G J,bIEqWtoSO(#peWS?WZm}#Gzg#c9.u$ߑtӥw7@c:d] x˂Б΁[a!谍sn3'<99{u8|9,C|ϼ8yKyZuj;s_7 e0nPVj" hq|V:նK%8>wؖ2y4f(!k % ջ-s/%t$\ t u`BGcs@ 4x p-zBW?Zs媣}za F X?.,.-?ss@=Ø8LMMa|||]M"Hk) 'Hu'Da3A](J~0v 7\pG;@nnKw?|9pXν<LA:-x7ϩحp* YTg.uأ Ccu:+_^ʿx"p10y$!"zHQZ7K .^x']|-z&9𑯮|$L9,I$i}L8+8鴓VUku G4W9~eC5t v),ZqykObX XK]X@jεjfj*~kC^>s 3GpTU7`i?ft^$l.ݕaŽ̟; mk2|VV|#:n ݌,vo<ϏK{|\pEqב.P 4i;zu*@r|)`c.D{ ᔄg^효KĴoLk 5 !ؾr<"nz9O~xpc׮]$9,I$iDII|Oġ";hF59EsJ܅U ([o+1Tv_^(_cS/vXڹs* AMr]4FbtI\r,*GJ{_$!sM*gHR(-_/Cm? ,aQaHr\F;؉.x/~?;,W|^^v%%kI>߹ IL) /\ܩ8%}v Uy%!+pj. "կ ׬JUq O0 !<>]zr[20mi10b4T,UY}#PJtV$ ӿ6?MUOV;WqYTEۆ=hjȿgeB`yeay]G_!splDUћ=|˩!ީ[0i8Z،nsd'4|Dd,,OI%uIR|A # ;rEX34pǷ8f^Zh@d*4<]ڀSsn/RҿڵkWD"N;$HM&oIl`Wj۲c,w P5*榲4,ZK^yAܰc {%TY7A؎c91)g^0^r]—wn, …nc5W_!?X ;%0( RȰp teCx 8` YyşwN݄/k_cO&Wa sW YܷJĮI/'(WHMBĹ̉3SHHih"V+Ip}V)[wZ6똆G@c? \t8["Q fa Z]jK."\}ػOxM"H(%D"m2[n߾r6DVYr.T [Q>+StS~cEK眮bxzy0 z=öД(a 0s<6r4GFa1斔%Z[sA _>=}=Y. -&]8.d*^`;sN壯`fa_r)n4[81x`LYr`ΝBm Siqv;s?_y,/ŧ!*+<_]7 q g]&ԺM`iTB3{bVN ۔-U _+!k[dFTj6U>(ɦȏ2Vsqa^Kckkի2]Qζ$sU1|J;ј \ene,Ety-L(4U2]&`+ xۯ?ĭWR:ur~~w$HgD"̚~aٳ!z/gДU jdn*8_blfG!JAaC8eEs*m3cr#+p[? R 8},+5PG_\zkH 32xNT@'YH0 .EK1p?n,|?aځ{IKMx? bBՙxO=ܸ_z2^z0| rN*d 'w!k X'_>kM^7>ttUJiN b~" bp }ckVNNSL^*:\ `a2l~ݷWq]sN"~?ByCI.c9'e&j @hLO8ԩ<F h4KH3<G*!׿(Q+SI39ڄv892f>1p9DS)<%r͸inkia!N ʐ 3-!RpCW|9)LZ4;1aY.V,[M'|'6\xIYd]^/kA?m` jFUGw>c o鴻Aѝ.hI8uMPG;F3Lta2d\cDz]0quƻQ%O&I?ձ8p[YZ4!$N6ipgWWPnK`Tpk)sZ64R p w$:ՅnE mh4pFƍKkfxosJ %.eSl?L+ ɫŏ0@mC'&%3'bڤ]k3`rB)a1h(-p>j! %V>Cm [ ]8AX4ŧ)? >]F h4K&.Çe-\jZʞCo*Y_26(;m䯄 3= :uEM~ȸN5,1n4rN\ v48~?7Ω7o71q׀ue@00p):E?x|~;ȩ7QB90(F}LU:Gx_ϹLs%((W+1ysy|.ׂΈ㲕(L^G11;^'C-b=DM\?zME~`ǭ;x1ܾjFѤC5EW>tR_ 1Jڜ2HbO ƙkJY\4R9FsMm]ӴrBӉzd6 i¶ SEI)V*jGo㾻w59y ;8L=|l˻VƵ`)~LWu9i_1pLV6n;j`Y` òѶk׬=?{coS.K5CG16]^8lXfǻ)5AoqPo5(> ?t yD7959pn(}xx5PxsbɫŸ]W'!ᒉx,\s :f3%D\h@b8s};Y鉶. 1 T*:OFCk4% 044䇎k43GGƂ IXb\G&_Hil)bem1" R۳MRh@LPR~KO܋+be =hE) xnw]xӟJ;hbd*q{,Y7nڃ6J>u"N IDATFDF~d8 `RP?/@'E:ƀrHI)aҌYx&*$t6YWjp|Rj~^K)$}Ju$ZRUm> n b2*QW\\nA:0z |>Ph.YRh.Ct~KMz |Or,n29gr,`ʎ<rZ&MsY{u}ӎCwSِX簔x-}7m08G9J :)RrJKOsD*4FW-*Z|-R4`\TIoP~K,W8,-xLe:-WGP$ZDhn)a)Zv*K.] nI8,9}bAʎQ%w SQ]GMCAjrDFEpy^y(0FMFa ǻaαw~n稨9`ӦXf`& ~JF:<>uY0ܼ6~lF\KF ֭[144>0qM"]"8ދTS> }si>i.B92m $; Ւmw 6%8XWܘ3U'#k8M+ܘn)]>Oᙧ>t>~L'^AG֬řS'P0e%R({a(%@넚y`h>p8TtRTS}܍'|9/EuXܖ*[^j K;q~|FNׁ4}xg:ɢDI?=AU}\K|WEFVuYc[F˶WV"gۮN~\}?FeerXyWځJϠT?"UKOY$z.>v`0ptO-˃U0ͥpCÛ0GPޛлWb&Id0 e:;? :iZ(Jss{zFs`4Fsغu+lΝ;wByc[ Ll;EpYtNyӀ3]ǹQ?6;xaWBsX{XHXFfB#uS$ جc\c4R˵มGW}GFk}#bP/k/.Ge|xwP>^Ms7z=Y`@{kRRI`ǎ{oEo|n~W=pG"T\6DĽQxOCߜ3h4h4W(2%įD}?'),SE'9ApMZx6Yai WGCk ~ 33i~Ji4ZU|߃ク!q[} xĢ;(_~4X_w#pZ,.\&6;uZv"F&'ol\a6̶:{ߴFL?t/Xťƻ)cc9Go7Vz9T[{]cõ#Ǖ54q!Awqs) )p/`GmA*ߋ= b݁twQsp9,995ttz~1 L3Я38~f\.epb 0GbʫA=8g6C>R2[<_qzq|IE`"gKn,Vp^$ q~64NP5q;Y,3R'$Jo$bD$=!^,_ܾD{h4N e1ReÇwFbǾ?5 `8*}7Dh8(, `p0~|_gufFs%h4ظq#zzz044 aƍ=5M 3>=_3h+8F{+)ex!JlL+%3D.֣RCs0`&~c?y d?|'Ξ '|Z"(NkP ,&S)]q 荰K6<Lw}@fD@C|Oͫ<8[aqq̱g~B2rCHDc3o FZjct|skz'w5 ='/+x/4~6/>O\oV1 GE[*Ex^?~Df.T߿6݈O}S?,۶b~:  F8@arL95%h4Rh4Mc``oy92/ 2`2[h1\<-Mڵ̺~<+s|p\ErX6rX"a- i_}۲xy쫏c}mꘪ]!1R"sWJdˏ}-_1m~~4SgY: Ká!=NFM 0`%FK{ί],9kepb$"Gx Ei*sL袟JKwKGuy-Q 79O.|gRi-^P&O\s8?^q>Zy_7lb`eQN: eqe9Ssh4h4M===H900s~'18:26Qb\AU'/i%h2N0uKs[2]ANKFBDhVlBTeYtF|%#V3EX0ay3a)H_|hVɆy4]SUܓr`M$7y`ht,6r>,o)ݕ90m'1,pZV(@ݙQ5csm>;B~.@p(Wɕ8Ms"OJt[u9h /KKqYs,WﰌcV\F<|r_V?Gx7%qertpGC;ÿXh4FhŖ-[faΝ0%ȳv+/_ѢE):"¥2v˄˘yYdF]ɺn:剡0_y'4^Io{?xnߋX4qns<+'sb;qmVa%ۦè_xfY'3\wpӘp$c}VKRȘg~cx.̣#*a|0Wf ^tlxiO*#sc&J,Ồ:rB<"}^z>|evg*2D^ӅPfʬ<i0t_Z ۦo+Ͻ>3۱i6?,UwǾbpI`RuW*#+C7;aD06xtp/{V+b",jSܙ|܀gZ@gxKT \/LwKǢ!jʘ΁k-ѰCqjv_h>$!34C7ĵy7wr8i.K N#|w%a~oi.44N]gg-|׸HXaPU[RV8.^ىP3`/7K'K%X> }[eˤB=rHH `QcX`b(DHR?ds()!qaL>GY-ẕ(ܹ\m f"d96i30nZlpɥ1^ 10g9.L\ о`u* XZ 5$2D^<-3("FcdE` m|/~75W_պ㵀Ǿ8틳gY nEX]#+`+F.p T.YQɨ"IG 8@+< σ["(\RHĔ岜\BBk*$<r aѱ(>2<^&Sb S沌|;G鸌D賛7\*z}e@U߲R'7ajoP(}v_XMQpq L]15J@k4e ܡiąY$|9i\aⱛmw[-V  ӈk6r|/{*,_z*e;풬)LQ4Fר7ǡ^{6MO,iK 63(4ah _8 )ӿ  H\jK5\Uaȣ$V&icTyBMX G?+Œw@ "4|j)/52/3 lv&pXr|)&f|Fi4vXj4eCCCؿ~GUWi&nW`2u?%OqQi6mq˵uD9+4Ò-\?c:_4ǞH6 Swrdep&ab  ܋ TC9~21pj_iL#{]dpOτاT60R}+vrUm2^6Ls\20.NC.X 1~UcrUz5QtzmLrXvcgUm 댬B;-f>Y`ps ?+NC-YSm‘ G045f0lƻV)ˑ$ 2-V\.^|o: +(R8(^ܕB2\h'K `Tatai λP<#c[ZZukT\%TqqAJv:n⋚-Y6 tY .#n0q r=Αį?׿L0Ky~@zȸ/938KIϲlu+ë  IDATp8g|_|4r$>Fh4[nŖ-[pر=˚0 rW&QDxK?SyEKe>#F)qebѨEx pƅU\U*0`>(\)ys3>_Bi lh, m 6K+OXbɩ0Mw< nSx8puLAcdyp춿0aOza5SŁ )_@<)Auc"rdvb=dqeh]Yrb-[ tXR <+pYJ$e|x[F~Gʁ2¿7}2;1߿w&جh4h4͜zzztxy_K$Zf1cEqnKebӊ icv4OH<¥/na<ß= IBr=YYIۤr?R.}Oo3xJHg.eyXg4VZ}q激_PKKm %L\H\zvN+k HcB&sP9,ǯVz;TqeJ&.h7.p{_cdepo=/>PL.˹*U92pIO- 1oF'YPh4WA?ffv|ܕQ/ 8hlkP鹀RLׁ0]=+av 03p:*:y;ǨZ0Lf嬕<ӘxJƻwozg(UJ g<17/اR;}dc[6g;kZHhǚYĉ_ƎgAAb'1,7Ͻu*!* `)ݓ@z^K)<}.8kGM7]\ |0EJfGlۄb۬)Ŵ9{87ܷ0+eq|EarFFKY'*]~ѓPA9^[6 {IrL w]\Y *0YʜaiQ2`C疁+`cҟs-Q 9wy3u&'~sNI *̠| [y۰V&G'G0]v[ wKYr#5?Q78x7T1*}1!rF.KS+"岕ɗs<"o/(K 䰔`qclvlF\hRh4 &ߏ>Y.+Uf \FD,8^S*"P8Lhv9ؼ J2c<|fG֏8,4sCå\Іb`~Mm0IJ.ܖe"pXZ?"4oj nݿŒkkHpXFۘX }<z4Ex&j.%K /TRT*$"rad@i (Ui(D8:UWu]8,k%ګPغTw%lULJph:RĎ@-Fc'h4M2-[puCHd2*9e4uw '47Դ@y>\]FIۮ Vq1TVɻIp4(],=˒X7(4spz]*v1 ǎ,+uӣ9&L/Rb5qIZv\qrKcpUN(5w(Y\V2LzGVx6%]\a)]A~v? 5#?`B8.Ud])|IQ:2hG~MtZX]s⢬Uc!>MGr[j3AOyW<B@h4MqRh4,q-n:j9)d إ9)kYd5TmYlA~MGHt[+WspIђ|Q O8gBQC`?kq4& rzN ~!鲔NL)—91Wf Yls|ys5p TKcId28J@1(ИWUO_ H̠V r_`Yy:]b _d~\u1"\:,% -? v|Fs KF\2L|ǎشiz{{{j-)j :T >+xD505Eط * ,=\2D\\pQOc+\etN&-N,6n[F&"@r ҉I"8/t> 1J: HFEwUR5GzU]É.CJ>N> ؜#z&.d{Uۂ-7o wsZHh.;tHFh. dM|rߝYǴpR9Rߓh4U:;;9S+̞  hK.gүiAro9| Mo3Kf+V Ly쫏+?saLTh 㷯;Ż[t  ,.\>/2΅Hxd@ \(#zs ېEyXU_uX&W5G}d%\6 ZKFɏ,5Fsr)|8lidmBe5Ԍ+4eiLP\ǝ}gV,$9%|xsy8j,ץ"4YKÙZ.Gmx* Ze| {~FYyJA%! @pQBC } 0 Zn%\l F`@Ԝ0al;)V[JQ `@xU $DY\%&ܕb?:Gér׿OlR%<{Ih4K-Xj4沧p944Y%{{ {g(\P¿#]Deb 3q["nK9cZ1nK[L+-V>/*E,y)XS%|sTM|gI8o%)rͫ8`7 ܔ"- rXn` ڵ|@xd팢:,e߄kg7`;p'ǻS8.e8o#dB`]fIrcv`@1JEwjpdPgIHX7Jz}7Q[l On^3w[/w44fAsXj4AZ-?W#DⱼDXen{ Sw^0q;ׁSi:0}dx.|2/hp `r/|:+ux:YgO 1]":rV`0&$|nBt+ گއ{2tY&ˢ¸aP[Ƃ&8^=,ضa)g\o|c\Q?dS~K9F~t-pԶ\jzkeR5(@Std( x/˱/r糔QHv?^9!%CcXHdw MQ|3 mLO i䱄qm^4e4g_?DH!<*%sQBԀz \L/ rQWb:xOu(98_o#_27~?;Xf(Q++߃gh4Zh4osyo-84S2$V&W2G9.gⶔ+.Ԝ'ϷX n7RO|32* [w0#SucF^rp H~L!ZJNKS@cy0=NE|\k_C5*q˨+078v\'ߒ1sp:SeB-9sK׷(Ύ+pa^>kc %ƗwJ Y"£n$ܽt>KFYh^]' IDATRh4G__֬YsQ=o9-Dnᙛqل6adbaL'ϓr/R w*\”j@P8E2!oZtu3  $7¡ x9-pQrp9A.K#(<"]VΉ{}RTx?қuNa(Äɛў=`Nw Q;u-=b,`hSi*&9#cŮ%UG mJ tFw# @7&;::FYhhRh4|?bjh0/\ #]nK9%/eP ix 4R!ೣp>hu"_4hvǭ;Tnjf/CPKe`T-qHL]w= ի=3+jq!@,<ϢUQ)C9߲\[6 ]$v*!ᵲ.:D798kUra,=/ׂ*}s0 fTzq ƄGɱ&lq|Fp1{F,4d~M6a``;vМo|?xpdkb膦} be˜)f<֌h:V6+pL](؏b]Pl蜎c_}\D泜S-|\inp20&G8,  x69f_a<+eJ$~2D`a>}DȷtTK`B'+>pLtW mY)e5eD"lW<ț2Ihgؼm|OAhah4Mj~˹ 7/~ьƄ%&J0&3u\m)W9LYg/޹OBI&rS2rQl~aG,cY,EĴ|Ib\JlYu<@֑-EKuP+SQ%%+O)HuRpILcwSrV:+_]t(ܠQ\Rh&Zh4&[nm_(kIT0EIf,]DRo90q^rPPdgV\t^с?hǻR(R2L(I\ᔨ/zC6Qњ9 %7ܕKw,L}9KaRМMʤkc_ gW08@- <|\g:dH8#w$Bkt}}7UU*u34< !myU #Z>gh4 -Xj4F߲m~=o MzBnν*U 5v[8nlә E.r _E+rQyP8,bQy@NƸq G_w#,Z fy 43]FMUpA*li+)6o)j6 e' {w]!w$޻q\L  |4eZI5uk7*VS+R^w7v>,]+JĮ,$A"EIaD &hLO?r?dfUVvfUuO`<]]#AyFKڟoפWg+qJ0[M>O'WM{Qk6N>Z%o? XސÒ  @ղ{o;Ob%7azH/s<2oi\s<=GÅoW'Gق?<~p7zLFz];>}{(aT 2UӚ΀ވDuȺ3i:[~_kɝIQ3O~ ǤJnV*%9`L:,DKp,.VUq}d'p&KXḥg]N:ٺHBuWÙ͉"m:P=K  A'*M\o7M|?psgvynG}˔4qR} k}KcstNtC4u_{'s?'>K]No')>13$XAĀؽ{7vލƳ>'Nt~븑 .oxI51pIJkv{\4,2.Hs${ R"<v5_1vPbN gGO~|Q!\_Q0 1p_>e첌D7EKGܔk"=٬au.ޞND+L)|zh'2+o,}'MQRm5.H7_u qK=?i.ԃ{Iڏ'170E!Z~>W AĂB%AA 3M\o)R k[$9,oie+]yMW _-&h jncZ,CyvhQ_c BdŃquxJ0pc{7+Ls_q0s&^ a)O+n.!J"\ܦdH gRTÕ#s )n4XPl"rVqTTϒ e A1-k_N߂~WpS-[}˨+1)~f_o-s[bu8`jlet_E1$e%nkMIw42G{?(|q]< B;O]YeZ=c;w :#32A:aA4PlڕKfLNWι`.uQS  [?>K(Fx$\^+7+3b.eJk6&= lV?wJR'weYR AU& СCB C!Ób g&y6waDK[Ý,&+:/> V5бַBVx,\2%_uI| g/\-=~rW]L,NIJK gx". AA63bQ+6L;KH3[9MzЧ6icA_9s(ۈ ?<^8=B1p2Y<"NQ/% )!Ќ+c>8 X>x9ZE0֒.|Q\ԱşzpXfVC=zwfup/K(9pz-`rYcS.!Vvշ?8z)Xw K,WTϒ b!  ovKB,Ip[/?"\"Mܲg)\mOיul6Rp|L{X_2oȇI&]ɽI숭K㚐U+#:'yLb||]z2-B-L嶔 NeڱɽQr {Y0c %ҍT1.P& 3SˑE(5 % A1!m}Dej.y}˼! ?NZ;璵;-aP$m4a ߲Oq>/ΟITGoy_ccpY,Be;-Y"^Gq5< ^y+c iycfSⱯ(<8AnЪpQRtַMv7Ms}gIp`IAD䮴 .&i71i̙ooie/{ 4sgz+wz]u+F,XCs_FuT"[VF9V`VM 8ۓu,R,=ٌg@!)@;c6=A͛/b)mbBj[bO[v>]y)7:]-8&5;gIĒK '>{ڶ[LT¥JOԷ,vI.Ჯ4q[2]_ΟοNׇXECA:;RD4%B5'w0\r8ZϡqYԝc^Թ:R0xr'{J=0xp]Or~ 7Oql|O>i(Wɽ a+ R oi&X})G-A0ճ$GH$ y`w5hinK&~\/g<MAt.5w=Wsv ާc2:%ϝw}n44ۄGWmBt>!Kg'19=?w-&;# GcD=~ET.?]S5#ZU' ,L .\2cQ!X,:^꿂 ^,?u*ozNԺ6]8MP(ۆ`W(isoJ¥OeU2m|Fzc4ٹ4osF\=q4>DK%`'jD(\u *a)z;%:^@mbbG7_*Tש1+U_x~itZ%pk}.; T Et^R=K B%AA D*u(KݕP a"tor[Fk'bčz49s:խ$L:Od7NҎHƧ6-`I,  A1"wutx~!]x.ET2-M{baA8ǩg pL{ʥpM7{sg.zӝMw< vx1a^W%If<3VC.QS-74q={NBe?d9V{CIay^ߒ9\Lf|J||_,N_gI18H$ OHuDEīhSDBXݍ˳:q4scsw==X*h6tx4E%LZҿ*5Z^ L @,=߇狴pRUJǔݶr`ry<Ĭ/`KIKx`;T(L4k;bQ(Q:N hG4gf u:(x/ڀ_QܬXSoKx M|Zd{"dkG5rT,`@ s|kQԳ@, n!%AȂX 8M3[F+mhcHv}v=Oii1 enKu8Cx]\+Dvsv3sމCɯC0P,d^%SږUy>wqZ:'&~ P.y _nַ 4Mk3#)nW:3:qTێ/`'qgI1wH$ 9!](.Mal 3ēs[9o94qs]:3M7sKTXXn͗8>9qD4X< lx;(*`$mbQrK`KIoT4\>S UNv-ǡ z!Tϒ H$ >٧RHPrŲӥdkA84q]׷Lq[ZSKJMvRp"#ZZii/z׃(y bxd Dݪ]]SEGA=` لBiqҜM2~59gG>N,  d?=.U@TD;B?5ۘkݜi̋篾e~(i}ˠ+u=<ǀWr=wqF+% yxǮKNߏ_7CXc> R< P˄\ְd~?< {X#x^qLhwM1RM>sA_OŸR<<>&ETϒ ?H$ >T,&tld }܏Kyvm%\߲v^/iN 0'b TXXH(J`.LjnKδW{5.>ϳ-xmQF&4?+{oi:,F8ը=Z 0.1gI;ް  O=wl2qFI]ӱa*5_˴ tP=eeےy<gO Nm;u''E"% P*y^\2q?R?gywbO9܈_ϱPy ˣr_%@ 41`k@B\xzpyl7+4%AbA#T.w^y:YhMILgs6Z֌F-NA "M܌ipb!MzoyʀݕQr%jFC?pREvGKmP9a;cc,!\9<_ņO딙\ž[S)i [=͉"#/ qwlCNWzA!  zDԮqkSHԮDpg8QK2q.(M\u__9\߲rS<QJbyS!6jI+#G\;zh%?iNja4b"V^NCģDpQ߲@ fJ U]K0Pbq9n[ͩ%AD~(%  z`_$Vҡcf QN1%Z:Y1&e"MX,10 ExhKW7&f6-_۵Rִ9|b%~p^%BAx9J2<âoVWƋɟ[YK53EJxEMa Ʊ p|Jh!Xnd,NVS'HʪoɌ Sn)vZN8"I%փ&,$XAD+gR45R9U.{&pɍie26>:/è˸SPZߌkKfȵO*xm;W!C QPK ap\>2+,'L0:_. RժUYMs z r?omm[n?@Rzca@,HN)SRmOjEh;arG,N,9fdg -餝Gv?p jJϖr(qcIJwiw-m,.[}Kgxk|7&[v&tY'C*]R*8APlx~A8,KÚC gO~=+2YpXG/gq[Ii[*to!f[>U٨'.ɔqgIaA>=<3&Ԏ36݌XO2W+n7rV&ny|woƕmz9Ii!sKqF+ …8眃BkK,D__b0M+Կ$ѝӚ4[4KbrXZĕJ4qqJ4_P|⋲| J 7Y.&ʑ Ǖ@r#S95yKOcWs7v߹{ءA`IAY$kWJRK'Ikcs @_r-&Oy>瑩"UƱe(!ZՄiO;100p}B)ڕ1d1]X|jӳ).]L 9&ݩ*'. J, p HA+Sr4r%/+ ۙǕyD^X&Yum11ڃN?{YJHE~?[wSob峘 ε:h_t0awx4絡kĵ+kKkc8!U;uMr/qݕTp`UJyS3 /Z]ʩ\۲Mw.-[>9{7ݖ"(h%MҌ.71_<;\z3a 7QBބPG/tp;8ijMxT=GͣC A YRǖ.˲K,L3EsՓp&n#!&<4oSЍha/ݕuQDrM?kkt.G;;r[NK npbd6DNK֎++MַdQq@*wP*CvZ*&tkzDԬ4cMYEܖх|Ȇ5gI, ؽ_T]|?is5}>Yw}KytյW^r]zoiq* >ʥDg?EƒE׸84ly+c1nْ5\Կ{ g hVDCrCsFTi97Q.rF}˨/eMd@ WQ8s[ssXNq:fW?+'vשa1KM4T0ERXᲸhP=K հ$  D™c:7H@Sdf9p'6-53>{l%r4~9Z1~sٓ5J'L=} kas]=/LMER] @}. N[$6-3vX;"10V :]P2Q2:jv 9\GPm Y.cո1~.\H.}Vp[dI#odwϪa9q=)mu(1M>@4B 2Tϒ A!ܕ`Uî1IX .GkG C%μ+>{lba"  e5]b-&u:уpIKrCe Ev[<? J7v=(Y?[O2v A@y&pc#pĢ*]G<+T#2q#Q4q RJ--F;P1MԹ *jFֹӘ:7tK*Q K!2;-QڽMNLnjaQi<>[* oj,nSKKrjUnAYgg@{#8P j^L[x^9Ji)s,x= \r 6AH$ }OSѺ-PD?#L X8~n(?x TEjwmP +ejtV2O$YRV$`~J> >,xYʝtrDV h5 t\~T:?o0m])CQx|h3KsfUu%1¥cLTl$ܖ@"TTEEhrqZh}s-B꤉2k&wyJ}_`yg+vڅCOA=B%AAa3N,U%|?҄˥\23Z~[:.7@DOCh}pKSAY>|;P,EYA)Bm iB%ӺPﱯ~ q\&G9 ETXIİ! X>~nqM%\j;0:,b ҅BM,pWm11j"^[]#+ai +QWkMe$NbqڔT*8c`~/؍C D|Le+:@ Q} ;Fm qc֩|f0J(_lrpa'lͅ³k`Խ_uGne,/.-[isɔoؔLObnVH,O,L* 3݂?n@EzNJ[x?Mw8ɗULtG E>|y:/}׳L*Nԯ bisI|mi7Wwr,op:fKwϊ){1g|]ԷNBtBRz]{eP\9 Sx^)ZWѺ: )R,XYH`Bd)Y*Ub*l|6o&Z&fv*cvVN@:'C{4uLg̓{><˘㕚Am[~ne\6陹ԁV;WS9/Bdh*@REut%]N ܨHo7MN :`HokWE}g\E365@Wq&0IlRLN˧n2k::=}|lJgQQc4q .aiCO6kZX|.ަpJr,Sҿ|jCĢAIJfS&Vz-c ?S}K~ӕ&x_26U߲i4]iqrb%N WQm-B,BtT2IX,c7nMڂq38s~aZ@*V/5V2sɴmt")%& fԝ\8 ert O@ퟡ}שxvcF4'bq ߝp5däIX_\<[oYV۲{f5h5AKPEձ/F>?b)C.E59h_|=ƬSbըc#$W=*T  AIJSҬ9KnզMK .-Aεef=8mFTb1&S}KM~amTZc/5;.VJ@,$S2߇P,Qźu7}ׂ.7xSlN-5RU}V%T&_Ȼ 6rZ#et4"3?_!q.wjjDZgڇu[o*#KKp*Z" VExhy6Kym lzVMږjr3݌b_|Ը4h+G NOgdJEXY~ A,FH$ -tp)L8s D3S aK۲ks-^WxR(@ :ڔjԅ"P_,$;w:Hyd*l:DwD,P(~#(mڂhNsZa CJBJ,%)B W;Y9_wA9dMU9t-%F r ]01wY̝hPW,k37+qJ&m llJsq΀:[(y"+}<븹ߊ;L[<{~c_<~?1:! X?"Rӫ5cLWJyK0.]:f_mbaZzv"45o9~UjoYP%Q+_{ V6TF:Z EjЇ>oߎv׏3Μ~6x E%JaJ A?BUZtE}0PZhoJ%Cvaq%"l)\fj n0U(1nҿWns1$R!S£DV„ )%뺖}y2i%+..ZTr}fhV;|,F.zfR8W\uV漢UyL,`A0rP tY*&wqL 4rr'p/{2;|+ XԐ`IA,;8%nq-Apc\"ؕ"\Zشɨs (׌5m &\Sg3z->yx Bqj#i=|Ct޴EW,WcWe&-lmXn\p?4.]v t;!>v v=tbWdٳ@jw u^[;#Fp{H!vs^g)&jM!n<,:.uDEZx\@ vi?^#ƢSun;xc1Q<:6jSI6ݑݩ;=*[&ThHBd*IҬ7 ^6Q!0o*Pښc@)Zϯ'w%ZE&XN?:S#8A $XAˎ^+\i֕kPpr/j; :Է)\eG h=ذ JWe$ "*#&now1dA'"UZwd 0S庍(7 wI1ꘄ\  hG:mj~dԞg/vY2k!.k $ g-%eJSd%^v[̄s5IΪͯ:G)ɹ-Ww-.սUFӬ=*.K Ѕ)@zH_d_o$V , ežC/!SyJAـHks F S05%\i-®]ܡ6ghKJY¥yNyA>c+ 5:VstPIKWeTƆnĽ|Sw+;wJu(;V/v}G&Idtv 5Pڸ (a/:ix>4!R ~1uW״Qs9K"oye|dݨ]RO>nG/% biiO+ݩ{0a PnN3\9/MѤ@PӚ 뭞VRGp 'H$ ϝ8ej)SVS3xZL%,AXգ1+E]2m KS'P80xGA-ܖYl=g XAew+b*}/aŊUxShfm!be-Zl_Ai*> ?4엝ٌݠJTP}f)N.s2\9Tketb2rV*L,[G_p ~lmi֯.݉y4d-gP\.] My.A%f%uݙ @W&;A\O`IA,8՛'SyJʖty.]B18M#\.z1pqL_΍vZNcψ:^eIv.#غu&??zY6&Q5݊kRe Pi_P5Fi'á9'T.o+̓F&?\7,uc[w/RunExKk#RS&t5q5)լQӝYYKR5R]Mw Q<.k `CXkʬ;@>ζK]\u*]Wq1RW,+D uO5Wk%\lb7fj^WGvm}ak8pՏY#U<1<̥,1XG0oc;O`IMvX.Ò X6ejw%g1pZGBfs 1tMr6FY:^S-].P[Gv-糾 E2M\ >d8ջ~9RfF\V WeuD EVaǎ_u^ݔ(h4QZ E림0TR]ӿ Z3pyPJ0G'iq`E jY[2U[0u) 0/>]ߒ65ݙ9Ĕp+ XN`IA, %: c u7N%!\.P8bO3JS%Mܟ#M%h#-=eqKo~cuBTbXW,apéO׮&ӿM~)._'P9@:.vnH!XÞf> ¥3M\- =-;1u:.kosr\g~uϭ42[E7ɚqS4ݩʣ =e{>R5M 7c8`ۗ#  AIJ`ᗍ=)Nʄ 2P@BK6K{1tNOp[:ͼ*kW(T}K01q>}ֹӘzhjpUV*2Bnڊ;y;^2[un aZ]~_~>I4u[ tG9'u2Ე"zb2Mв;>L/dl%YRь2٪x9.Ww™Pmg8\ylnLmܓF֘,sA,GH$ 39O~ u'bBMw %σ_&{T)աrEȺ;u xڟaXz[Zc\SԘ?x*jmM;x]71酩jV#5.xFW]wڭ^?*iV97ҩ_Q_E%} 盥PE~ΝV*XV( xt}ֈ PtZ`w<Abh297r}meƬֹ4_?czˌkQb=DA˼KSđ'abp&~(<+Ķ)?spgmw `l+˲NX `w7~sEوY]\.4OJ[ - ZJ'ɔp)Vʦ;< oMT"*ȺU Zt_H׫=~eKDc鶌U\)Ry 8|TvJH 7Ƀש8  AĒF+mzgLXDpL}X״KU oT̰s7Mdmym<@+Ӫ 宴[\=%:32u -VʑH,+e6l!pyͦ+gXٸ&s(UG0_Z{,/.M42B%u%"fy]=Y0S[t ҧe 궿#Dôu)51nd ,QRݪ4+@>cQt'َx 9qtjW/?:?A , %`ܐ8.mǴYNnw8&.wU3bKK_:D]״%_)4)\]^\]ir8oG"Xy'L/Kb{P)WҋڕUsV5=}8Qa.r [ BK R/2ʢ6qh0 n.nKuX-Ou IDAT}[yX{kNObZ{:__ClQ,i&.罾N$LWsV2+-i&+eH)׷\ɻ{;?k`;+]յ>_D{20FqрwvkLbX:X6`X.J! W:#1 2FOV9KOG̮{-4@<lm.jt|JXIB%A?+TJD;Ώ)scj8J"t`\09_! mmYΩ>H 1ObngbZ2+7r . J{?S?{۸i\8+EݻpWVߡz~D_DMoYK%\0ώA䪅ngL([Ǡ#Bu9EweF/XIB%A|#]&¥"NZenܒEE`x|n-Dַ#A+Y-;NYipW'>᠏wy*m~SYaKu*(,Ư$C48nKkg@\ؙ v[fWm*\`/X(OjCK b))n.vItŨ{YXnĵ+u[BVd{B}Q8{ޮzQQSh/)+U浾e^SO? xK~8u>Χ/o8Yt.ou* =vbA#L w⸔,L'.$K9`Jſ&2^ֳW(.*^&Z٪yDt tkV$VA XJ^z(P"AҶQ.dU En eJ t.[#{b}ː"zC3h_wWZߟYLܻu;?|xhV p[0lk?ĨFV@ԫc~/JhT΃=J찔N0&)Q,RE0[n۫I*$nRgY81q`;r*.g_I?ppNK b}veR!6Z/*/)eRϪHvᲉZ$*_ۂ=,Jovj+֞? ^<ԷLJ8-v`.Ν{:[? v ]?&rL:~qYy" PqLUŮu(ω, ZXPMl6uq뮪a)ϝd , #/xٺ_rf9R`-ŀԷ,dZZ߲ GثU+(9 ve#v]xn ,ӏɇ7aW+{^p+zf]6:ڌiVtomi5,gZòCTtz Qs+遆nKp- ʦӷ~Pi[7pY]9a' A`IA,f5.%1Z!YW8ܖƾ BQU=,HW3Mwʖm\HbS. /:vçqsG`N lmb+1cSYap2vX2KI C9 t,"kiq8XG+<,5 G(\Sr\P㨑+Yg¢%5!K bл+U"1+TT E2B:JZce{_ϲ8|G g?]{4xe\t}<n;môm-^;A*ewGu:JG9iqLe+< ?òj'?wo0f[?'&xKNw-A쮔$%K_]“s~ࣅuD,$XAKC]uXe 1RCtb]S^W',b@X z%S÷@u\pQ›'kD@Mv A%A4|DȫDFǮ7abr3c }6W˄27a zEk+1/Jr}qb;ey^Ҳˆi8J]y h^,Vw{n6~翜M.Top ۗʈiDqxXi^; WanܘpҏYQ+)6p-<pW׏J!Z WXI, Wol8xW ӾPT8DܡUk+hcGQRkS|ܕ:t-j"wG+E-W;x3ؼ>F."p׎aGt թ VTܕry mrei4f:Y3*%jImY5yx\R6>#8ADsH$ WoV+\VǪ"@͘x

\.oR ѽuMIL]:RpG:IZ`4e*ܖSGܪ?)R}ċb)M :CMv @%A$8x((f;`V&Xk<.) , i-K#3HxUeֳݚ_n>* `IA,܇m Aaa\0-kis"\dG_tGa ps+E#v &ՙ b! XhxJ$OmuQNUĮ1ĵ4[xny i:h-esW `[x-w~Yu+vzg} 3T=~/կ3P& R_pO?h/dm 'Y2 ~shܖ8p[1^sUKRVeզ:eՎrL PJ Ɛ`IA,4/_pY&2qz(oƥm.c+-C"D {fm&$KXg?lۻ/j8c*~+k!k{qG``PW:qJ] ʌhqp~e DS.0&^9`?u["$HNN*PW{N]XIu* ƂK baI׈fNAV/ɼL(DPs>W'&omNba sJ^)*o>p5-uض[;w𝮍/#f'N-׮Gn~ƈ7թ֧ݛcf} 3TKWvQ 2Ja>a0@kk/FiYB,QoAvP)žUr)M1H$ nf-;=&1q᠙DL\LpY2pYxO٘(UVMRGsryݕ7TaxIlA0>_]ΟgW6 5}?Dg2`GL> g*|,n@׍W zJˤ"TL:&^2gJcn?xgD$ b`IA,,9(Ѫ*܍òҭX^x2n1q@S61q}z2d!p9U<4&{Fʊ9g]/xaX];1XvpY\:\YzaNL޼WZqJS#/L:GR(VWx''5.~,}.OEp[jOaE;oTGǡ΅b',,p`&)M1qH$ OT l5v:Qdb=%jK c~#-ƈmS\Zw7oڕ `IEeݕ~7-_۸ģ/Rȓxԯ43˴َTRw2k>-m\:4N&p|#\sXjr(|ڱjrhe:65Չh).d$2ԉ)Zĝ[Q[7x2m#vWit7ſ  AB(u4 y+R(Ic+[ UeL(&u*E܋-.d!w'ukǽ[Xis+ ~ow+8Rw小/[U&i!\.bGS9x{fsBМeQ:O?{(w.Y׻aݖ#\ᶼ{K=rᐑpy~Yӝ&;jwqs_ (K b| 4r[fUHyNӌIM"&/.1c^IkW4\͹#X L2+!^`ګkl ݽ{2HkW{@7T¥p'.Z}KTr₥eK+?OD073.`&+c2}"ԅva ٝ8|Jy~Y:rJ]¯<_n , #qWVzK+u[Et^ɵ".c1(d^ؙ'"Vt]Br0m#X{]9pr4@~5H(-)87҃D<+:,#TFڕ~%܇9;b? E&nK19L7VkjMJ<,Eͪ;Mv篾e -$XA ,CrΖ,\̍XrF1qqNDy{Y zez.m&(X.w' J{`o7 =w/Z^ǥH\[iܲ0w6([29ROup 8b-TZ& 7V?&^F1Q*`~MzjJy;Ađ@%APw'ot2O}Q߲he$xn"g]ZNwewhX+M7oHrWz#`8]`4{o9kqPS9O"*Q=e;x<02)0ɐ|X)ܕap7<W ` ]&iL`:QG QG xu.xx£_ u-զ;IA4K b m)ܕ4eC2Rj}:1q ܼ2f{jβ+pcmbXp>C][oyq=T..~Q+òLȔk\+c IDATA3K ba1c⹱UeULy:@h,\,#$;{Y"\~B )ΩCq6`VW;~: ,g]srd?*ط8& B ~p]'8CyfBv[neL|ΐ]G?Ӽ`)Q\x3$ f ApF)\jXf ā{??pee]`n:<'1`.{ u] X5,=$׷tp}-:^l8Z2&Y?Ԯ~Σk?uq{u #p9NLU.7'Q:,ui-JS}$ bƐ`IA, Be-XfPnԋ +9;YdqE~P0JUK%9Ճ`zҽ<0'ZAp>@ _޶U|m[o*k8YwE`rJxn-=`3 =+\6IO5%SR2u/.$VA, ;7Ļ¥F4sVG$&.-8*D},D^eݹCMuYe登>Yoql]3*:ϼ ~fzJoIu*׍`Xw%⚕,3)+8x{Ʃ#KZ[u,EKQR{ȼf H! X._beV_4l'=;g*\ |C1qJPS?&nǼfsjNxv+}rny{cP3L vYVk{q]{h>3d+%͢4J d&e6+}w3SsNX*\ƿT9GόsSLI):SGp K b!%%R^pY+&e&QēqՂ̭%"_2}񂭖vO(S yZtgiwp5y4HE-s%皤:OF,Vf;I\qWJ;;(4'%%jxXyҸ13rXqlC@V#$VA $XA ܱ>m ʂ3%*b@MU8.wIs K2-AF|2Qn{;ڕ;x~VG ۫ vWJGCK_]}K +S8x,V83RQ;xÙ8V B<n˪%*.̩1VTGl b%*;v<2^}E b0A|#8+͖R!|bo cȋ)xYx0sɩ܋c90 hbAo.{ ԮLW_֞Sҽ{h2iYXi1wa\o4Bn\I.L\ʯm\ rIxv(]״dTrDG]q?4/A/{вj1EX|kGIeÅ?ZRdQ\\|nL bn %A1¢F%緾&&Lenaƚln}K]wpz2CRwjXxf;qZ0``4WFё7ܩB'ǂ.oR%;vW$7eJBeFjWJ;xw#k_ )1q-0'D[0Vv|fom "A5V\tlRF8*A\A%A1UݯԷ\i+z_}2&q}Iĕi1qvآgpkュ_{qNrǖ ++I4 ;=^==;:.ofT^:Բ8ַ$َe( a ).\" &sgtWRL( NJvЉ`-DdBb9Rƒ;?(Y| 2EQo) , ;dx%Ji%_b--sc5s d\32,ئ j-fK ʚ҂gv%^0!D2Hw.G\Y$1%ճ\{vL_-K~EGEGcSa3^C~\a :֞.k-߇uB>3v.֭TcݲKq37A\C%A1(#[P,d1**&juL!17V{+ ֌v_>J?ka²LmTK]):zRIlm\lulm~˅{c^BݐII4Iqɹ/G!FucH$kH$ ˛3Z㗲eeja q֍NAi\5,=qZxCBFHkcf\g5YC)&^ԯD#,]G3]%wea'FW7.%ᰵR+1_ ae!1s'Y`Y6RbpPpᚔ aR{%A,$XAsa)SXoJ?f.+ceØk#e~v Y#UZ(!)ɌPT¥'r^ʛ8N,X;! w%88SAEp=&MJ\l\en~h=׷4G!#VeRVյ(Ǯ[IA,$XAs͚ueIENN<&Yt1qq*&^ X9"??t'rgrc]|x.^C}dm;CwAg]YUr\Z7kSL|AݼHkWlL,2!;:1Uxzm2kW%[Z>ouOf-a;nS2Lﰔ(/J b! [9L([ uݖ<ĕ&Xұz,l<7.a"+9n;D/bigeAûW4o[5=wp|G“!w~TyG\+M/AD1Al7ܑ!ndݕK|ڨZojJH{ndZksi%'_ooW,0, wT2+pGOr,^Y?wN-g_۸'qq\ioo㸊X1?`qw𐋔Nڕ3>⻪|`*"zD˕__iv:wez b %A1\޼U,&#I*ǧ'[r̘xnlUL\L 6laPtQiYe;,!a _y$a0 Vq[RL|~N<0?ޤ,RDH+= %1I$fڨ*$9+ , `Pv.D1qRWhWގ)YFsΗ&vZw L_H.h,*_o r\~w:pD,VvD+PXI`IA95TVFRz#\֍'ʅK,;wk}P\:˫@y: 8շ<{]i4a,a7qWڕXX/JܔBDTkŎIffO- /YRR綜8YRt'g%A@%A1wWTmI\MkweeLd[6t[*e0we,*WS1vQ/%߅:-l X:B-ޖlG<r6 Hy4\R3t;L΍Xo=oO¥ek-])կ$ bi X jCxU :t= /f;"jen`pֳs;wKQS?Uq~Qq2&}1,cq[^:KKvx{9&8 a֮dQ(,Cm3p|d@#?&9-TeNJ͚uY7.շ4ߩ ($XAs͛u#EtJL\seeL@BNu[*1-A0HϽV5 }\8,~2_*Y#bZr\U|mB8&!َͫ(v̳ ia ݕ>@}l^bPHo\VcN$=pɟ%8[bA $XAs͂ [6)F(rSRs"wxYck#J]RLQo+BTkuT\ߤ v{qTlL@.jYܕwW t8[P%\/"C5[U39n\ Tv0߾ 8 5-ɕӸAK A\qyJտ2@GfWrcJL2,.Z֯"/*׮~%sL?,W߯;.8KvT߲GiJu 0`& ƒ,qpv|Ͳ3XO1@iMwXɚL,Hܖm)?M}I7ϯ<+xI%ARC%A1WpRPWSCM:"^8&GM*&e5jt2,ۈiHcqe_ EJE&~ƕo'Twce}^Wjgi&lB\KDw[Fa;h>E>qru}Yߒ+쮔 iu\(B`Cl_.1qZ!j]:e.&.+?c NT/&~|cE kH$ o5w#oYGj[fn,SF XJ.Z~}|]er[B[rwe+[4%׮tlmc!pWx$jW/C _MrEO_FhF"\JkkӢt~[ǎ›E}B<%AC%A1G(F%lGYpy$1qic⥋(ۛq}˻ŎqY֋[9{^ - F,Yq$7BbzObngb^߲wj6ۉ1ؖV+kW+c2ݕg:(1)C8U f gf%K=|:vOW5! +H$ l<r[*qYĕ}kLpqW ֳ 6·|dV➽3p҈k [m#Cݫn pcw!qÀp~Y( 8x׭ Sg|gy4.C_en-v8o3p/> rA} A\_Yb!wX5u[&C%\6kNBh}ˊnMYvS9fYm|}4>L>!Lˆa`ٍ8BJ?| M Z IDAT <0wWfJJopO=<۬A,u wtb&_CEek/UVܕA5$XAsΘ¥5ԹKV2j-3旻F-skzvVN0LaqJ0s F7qq~)b޽^Wݕ8Xi;HDaD%)=1!9wW-YRRL>g( Cpi{q=K@GYǥRnF;wX;` ⾇K b.x/X1B.DKm'&^nE3շWճllg9jXtp@*zuG#~gm@, !LHgt+r1E.w%Ƕ, F#ڕ]ɢ8.ܕ~,X`.G} vU5&T# |鼑ԯ Rsm3BS{ ܖ%;t[Ȯ=4qpю*L ! X0bLZY͎X*}Qfޒ)oMU=fbװ`2 |b8 "Q Ĕ[^:K2&ہǏ 0r[hsW%wV@]9A|n7Yr@*ĤNATԸ-MB7x]wfAQ A$&^O[!ʘ8-\}%)gY;#[v;wyb'N6fӴu,- 0`P˹cY6.$.>kW:iGz6-i c,qpIJ9~ ftw Ժ`Di}:Y(8 j=Kfn ขfvYJu' 9<DS.ǎ'.\jNW;O'z\pOz/.r2᪳O L#vb1V?SGxGD%wWvu]? &Vcq0~쮌Ҧ;|>']㇡DIL<t."eU1q,Z,]Lݷ m+PJ , `,/3pi;%84bշ<˜7'VY6٣ƿ_Y?W=)(`E eDZ\)n"R.շ0>+%8 ۖcuX~ €H`;pztv7X[D℩yKVm .\A /8//eBb%x6~ {R8,]IA(`IA̜˛R*Ʃ":FԞn[߻\]ڎZr9R.BImKL͈,__ݹ2w1qA\+ v6 =}4.\t]S[:ҋe5b,O#ZJaڕEb$9, H$ fwsQ+UjÈ*+nd؂ sS߲nLppYYRit[CD=[9Ht@{-&0w gRCX ڿ7;!X?'S{Vܕq<2-?uqweq]pWCx?\̀$  ^*~hL6&nDBYnϝ;czFJ (K b cĹh̛hLƞ$&. l*jW; շTٗfHj|u53<`"s@y*:'N @cE,Dž*aY "{''JGزۙ,[ڕ610jɇw1a=,h+=0 t>3 |?{p z9*5de1qz=a+EܔADH$ fb\^g;nʓc}4f/^w_ʐD|أa:e0Y7 i²D fY߅"`ݻO-Gu}ˌҲcoVLǏ@{u n]Xݕ:+, PH+{e )cboQq[zCF]IB%A1Tƈ )WZIagIL-\b|fhbZSA9;\qd{C+/9?\L\;;%Xe!D1Xl;so&f–WIΕQV+]i /jࡇEw00ǵ+}?uXFgmqQ\**Ci P5q=K<VO0_7 h9, 9ک7B8\f %76[>tsܙ__1֞ rI7Nt:FGZ NDK 0}GY:kswd(+x$;1X! tG4 8x\2N3)%Be`0uBV.&\i}K13tW  gK ⾠03JVLm)捳/+ݖS4:JW;O4{n |!,OM|LUmׯ<ƅty>؋#F, Y}ӂiټ!.0玘g^oBƥ븴~*v]iJ/ք6=}{ua2F vWvb+ss܎}iRԿW-ļc1u' 1! )_hu2J{S5M+&.dcخ[ _o~Ư]~?omrtʘ:"n̲D<&n a i"D-"&ʱKקOjWNV maX?v߾EC]71Dyac)pe1me'5'kf_O WNH8A1& ' mĺaJKLey1̆j 5k3d|;!YSNS.o u n+aY 8 o u }?v;(yx=`7J@gc60xa ,brxC # >r{&~<-^ SLxkmW ׳2(NA 9, b b(Lx]811qcxSG6&۸N1O{\Գ.՝+8 xDwܑۼQǒY6<σZbu,8zD -;O &ݕ+ڕ]ɟmԩ`,By|ZK\t0eꮴqp=tkX!Gwg(vWC\G\I&(v:B}!QZ,]IAK bWӈuZp9g1[.e&@Zn;{":5FZ2V`ȝ[tѱ&E :etcRW4v o@{F]E;7 $hg^.3.DL&,k;Pwp bP$ !BbIꍗ4"mU'&^2>3lx97XHb{a9s+ /Q7BL.iƪE*<eze+  $XA3DiuzNE4F̺➑O(oDl?_X 5;,m ̶1Fp,Džaa@k!Ɨ>?ӽEWrI⮴xLJǎO|b0cweOqoEʓGC`؇{v V Aۑ{ZpYU2w~:dRϲd ]IAL aIADuu1n}KCzX8eaǒs+gcԷ?> o+7os'ySYEDZc aY|D,Fbe,DZ/~ozČy}[v:Ab\Ҁpc,7n\a,}hOQFsl@Qdz~H=Mշ.^VRtWgճO{`IAL rXA3O(wUvb#&qYĕ}}OǣiJC\ 7|5+ec8b q ?~fcm'-gxw_ op[$O;Ӳ9vWA~'#Q<8wmJqpYz-0(q9֬+ ;xx>tqp:z $ AL\7Ԟ-1R\#}^r?U"թmp ,vE V…hj9.?shvB kjdxmp/:!0ưuLh4kWƝEJ+7kWy=v% F~eYB4{*Nng} _6- Vh-/8eq<ؓ{0!ܕa389gHq=Ĭo} geQtpГWX,Cwx`\kXa;$VAӅAČI}zcxñ*& [ܖ1I+]?cN .µ-l^°,8ewZ`cgyzƻ'f{>nη|0rQd7~=؅{*nm]i+C ڕFD]鍀7yBD6˔"^ѵ{*sWL4)NALrXA3 KGgbx!܈-%* 5ef7&J4Rlj9._2vq+O}\lt0 FtL0S +k0;ȸ,0Z+bt?xhw7kWUf1<~:6ž} cc4胅+ xsOp@ kpsrs9FvZKNYm)"2k+u0V0 os~ &$ fQfeFd(9_L[ְ7ܖMueLPN:*V@g 6 ¥mcmۂa[ri?&gg{bx;w`iJ3ywVVnA\䭮==`A@KC.VX aJ1J9`-Kް Gқ?wK e(  zfzR?s2OfeVeuWwu_Dr2z 3Y' ٻ2ܗ_wr6ڄsi_~!|5CpImEoUa2~Ի  (aIAL ƘH)o9P']EӖjܢi}r;֫}>E3Դ(Wk=3X][K˨Z9K v֕RV X8t~ױbS?S%S Wz%}xj 4/0^F98I?Q˰6TrdR8ްEzW,)]IA$ =8g'-Gd@ ٧ЀEoti]>t^x({OeeM}σ]*r0忥2P"4-oϞ<4'v֥e$ҕxo``0 J'{ 0:m|<8wsGfp1N[~~Qitpp>y G ZoRRcGO'rޕ08*''3AA%A'`li]e)㔉_ꭔIX*QDN!xEbβ- cJ ̲\5}<M+D;LT˶xjׯ]F}n̝6U8.ޕweD?7K/LJU& .C\f-(ok95<ىEAp b:$+i3oD5ery\*Վ91:p9 lq6S)1'vW?>!*Eqڦ V.GpCL߃v zY"֧}Һ;`Z܈e%3 DZѣ'|Nvt7|gOٓGq !des] Oҕo:0P&z|\+N(^&~y2Od, ( K b΍;GZKJNnI qoY`=28s?=^Q8 n~fRX:}j}R*B% IDATŅ>~IX޳^ft3fmauRTw<~s=sgĕv绛"{W.O vt"QdJD)%.;JD1 'G̐kIWrAu" $ v,݉'eZ2ҖĥQ%S2%s@[!.dĥ*i rVeeqry#k+Wz*N:L\,g5iygDE>}[:8{ ôx {k3> K"e)ӭk8].̂] )ӕrC*ŗfy}4w=})ZpF/%7 3iUReqOKw1~La9Gg$gJS$  K b0ߴKdJƥVxC\NL\w2_͢ f !׿2ݧٳ"rnv`X60Av, .{x,-wry;yyq "JWAS%A<."xJ\-`rLqQ&.Ay8ih[V3CeEL\SWMl /.]Ŭ, rh?{>})&کVFtr @yIQAݞHV{bҝ&`w$ǽĻzaǁ&vr@E_Zh+2?Yz7"Y Օ GA%ADʴ+ ddƥ,effÎJE~0$97PX.`̉Q &$, Zomԡ*[2Qd0 ԧrw,wZ(# A{(̡JCx&p{ E?1K! RI$LS|diDҴ,eANka |.+ 2]Iѳ ¯pNCo |yc;vS̑ѺTڒs dH>se9룅%\'!ee|$ K baq0=yHx5qW& KOԳ[ru_v[#. q#C~'OS8 kTFRC'0@hPϢ9 W북C<xl\ aޕ .2mtMi G=51*X38ԹiW/?]qy.|_&,sK„LZLyI1i[Dw>T2oyмNfp3@J~[Q!YIALAĮ#%2 [&oɠLVij%ĸ-T&2_=F$wsN S}ܹs;lˍUNQ?Kslvژ! *e}{]k(CӾbK?(YD;Fdb˲8~~|aJW!d+&\xY,|Ῐ+I߲zW&պ2q{MM#_b%P8䔀+DJ;6& ] AAL717xKkrHP&oXTݨT#C΍%-Dķhgq^]NhVSh@m+0-. -1ol^Ura4QEZ8\*U6.ֿMxw})Dw~ ۶^ABߋD%}u;sBmnwoh}xv$R8uF5܌5Jg,&R/c|`csdOV)+)؝y;AĮ@’ u1V\\ qIh|mxYR1L/%.C2uVOZ\f}F{e|a!|GL˄eBO?#&c07XaRZr>chu;]RZV> n\Mxi_]wREGX\2Yn 0xnٷ˖Fҕ{"]y6~yv5.>Ӽǻ&)B#g@aq4&. {mXod,?LVޕAހ%A1b9uII)Ġg@R&bRpeYBfp婇Cc>DxG7"i²,_3|h" B@(tJqbrUHKG3অs7᭑K~&P*JVtGM`L0OtYVzuErڈVQ-_,*~ζӖ"]·Q- ]7=&9eS˯xp Y:DMҕA^%AĢR$Sń,V&%#)̄gJ iu9=0q\=:oQy0am;3n_Xɋo{:~{8zX %pA7 w]XUɲq!-"iiz}wV</z xM5--UiE)KջRi4<[+`6/Wz/U/ޏVeev9Rp&'%(2yVҕvVc|CeԧʿA%{TfD5 pJe-UdyxEϊq@־pW}Y<_vLVs.ޯ ѿ2]pKY{Z'J۲tzm weB-e"])MDiG`x8'&RPcp/JnVA1 HXAJӖYe깞~T.8-NJ'1ހK: }D%X [ps7g(JTwpMk < Z}-<`;{;HmnYMeـi < P`r_Ҟ:zKU&xwvK/ua*AV8P ؋$ vL=o9Ƌ@: Ye~8qYN[f 12ƻQ)i:tKmpUJÈD向wnIU/3g>rmV,÷lzp=GPpʢ\INS![Q_ˉ޽-KK_;/ӌf UJ]Vzo*wX߂:Mǻlg\;q=7;qYN[mC\qz8$ *$,  xĀc0ILl3Fx;ml-\]4m ˿eJ0vQ?ko8/,pJ6^y?0;('4}ns IK}2;9ZpڗvϰX`i10e 83+y48z&+xVpz"]XOoeγ/9_0M3qqHѶ*/V&=+˟HIJ bbM BDEz+Q Lq.nƔTc"^PK踉v@|,ulRog'`e2 * dh/p!*0c`0SF}Lejnoo67O?_!d Ejbnfe1p&$)x/]^Bxxڗoi< A85pٟ dxx(~9Ge׏V{<ӽ }\ | f |;,ɭϡhQrM<ƁG%-RrIɧW/* oInMJ bC’ }h*J5D"\/.|!.}I9Ǐ[tߟq%Ũ\Lqu'.U2C\dG\ra0i0 խ_G>屈ǩVq 4o?.~O\`e3b\9z\l[$luvM4F ?sӾ}GXj5ѫR&ܑR+Y p@J/}:-8?ON'ِ07/:.>mj2?M-qpC&rңyR}FrƚdX xƹҕAކJ U"R&΢R3~C[:PƝ0'.Ov2-(˖ !x0 a&lSUԹyt2’JwZl&y, <0U9O ab,,:"&Qd<3sE@uW޽= Gwn@nZ V4юYJ!}h2\u&`?Ӿim" ۡq54ir@KÌXG#<-LW(گR?WJWA{AĮ2˲sMTuѸiqsW?[NЅelad٧R{k`0\$,wyTk+hml]E}-=F? qq,*Wxd_˙Y`n8p(U @㹿A[3K}oo$d%o^{hҋgW'~ΑSimwY|ů@o-9{v )"ӭ48".#:/72ҕ+*+ǡt%A!aIA:yɌn;S#Ef,O\'Qi!bTx@Zir]\}A@[Vc Nv6n* gg1?!޺cGVounbvnGTQ*@*f"0X6BS27!ʿeJ8%9NRV2 f0 HYҕrHW2߅s4}rڗ<~fFMv<m!.F>⒇! kRc:`ɼQP PK bjh e˸WccjT%-UOJ_$2oXj, o`NK%2ߒ'62a0!Ӳ`U<q9臷=1]|EE:31@XLCDsc@%,t JoxΑp pVEyٲRLvd f~Ade"Y0DZ)BL)i(W q+^ N48%Ɂ̉ygGܯڶ.ҕ[IUTWny_ -HXA`HKb IDATd)'&;yR42IxbQ%6f׎$lXbx q ^ag5H `Va'* ijՎ92' g]O^|}ڧǩTpRAc.]s1n)f7L~]Z+5ll4m&K[8@Kh^L^p^۸֫%13x$$-VːȁC te4+ `.ɟs~2tB- _h2Z> 8LwewowEɼe^媘(JVj4Le`@DŽ\0HJOdq?i D)8! ƯQ&~$!d)xzVq)#9h2$DSn~($ $, '}pCĥ. 皿(!2.OROFiXdiΑbT^82[R\)}s0` f$_QvT\aaq =,j iu{"Eix|-Gc 3*9fs*DZ91QO*DZ t;h pst/~< u1C?)DՋ"]YY*gò aJ׀e,03bOܴ_in&s$bd7 eh5Ò!\˜!Jyȅ`eXcKJWA A!.B0La*Ƞ 52} ̴XLqityz2q5~ ^- )+,R-_X?@39sspz=4n^GpV)7L(p`f5VvxHqɲ qYGKweZ^s$; ic.]Cnnӫu))&%!-+UQ صHT49}*AYx Yy@yR\v@)߸,l#e2oN3,]LfQ,K|(ro|  3 JWA AeOEpKkqȂ-3&Hy)6[fg!i0aRGl`u[&]{\rM:m3V >3 }ryXzK` Vr-_$ }K@If] ~?x%qN9xα[8ܛ p߂Hr"Y9Ɏr`63!*Yɹ&+)=ܸ݂}>8'OO%^'d%`-+q[wp qkt̓hf{\t%A aIAL;+-KߓS&)!X\&v ]Lq92KN`yt#0D}* S;Q~%GW#5qPn RQ!dbr&@-[Ns[K(U(~aH:>h+Beβ'rM՗p).9~C7xÄ{8rE%KԤ@G'q]Q_')K`nx%*Ǒ!+=@Bٯ_&9>]{mv͕eHҏҖrPm܅{H`a$c9r,V9~?'F^_X: po½$%&'O?≆l[|W Xde VcqBD|q2eC|pex@I%<#m ˼q♵>,8 ].Œ66AۅҕA~%A|"~7$m@KJRjyMu_KӢqijť&i4DetJ㔉'ls¼pcyFĞ!Q&0Gd. A.vp_CXC(M^S:_mvp/Ϝy,1 !p}%.(MKLb240juJpJ-SJ!!x%+ C@ude:}gR~ At2e%|yYg>)ĥ 1fkҕA~%A|";δ!23m)3DXaqezR㔉Bq0b60i0 u&=N&_*4D\[`%'1 !CD nn5ٹ,@e^).N'C\OmgK2pq㹾->ƒ9ץQY}j Aހ%A1%E ejPRv[o USy-r mz3喤ej؝O/sJ}s@].\%,a3D q>ڛ06a2ǶQ0/&Ctmv_q!/)uY -$OH ӂm;(WGp`~sN۸v"<72PYÝT ELAܓ5Y)etLY x%h Ye!;߷\k}-8m8߷qƕa9 t%A!aIA:\`IJ#} e:9m1]QƝcB0,MDƢ1r0!]X-)-a bCn=p,4Ŭ7DJ69Gp]~+kC)a>G\ay}>>\Br&&EHKL4 LN ӴPTp8,ڵK[p=rҠ0 /| u9)˙d%S|'ݷSL$+@ ݇g(R'!+ V-2e3'`!sٿLNas{]l:ra4 X ˲JN ؋mi4UIoBH2%-B7B}+wpe!'>?QS Jp'y3A+YM.ťget;@k+0w j0s"~˱[s`VΕ\ |ۗqc K7ܥ9MAA nX!iK+p؞*1^8[&'iH&_zs3S4ReRdM36#r1^<=O} ѺuS3\8uȘ|/a `2 GQ.~riЋ~_/1Դ-at CTe +3!wDq怔%)+-)+MD8ь&"٩& e*S.KSiN;{Y7\qZyɌYiKA޷g.%9o\f/⩇NC'qx{oZsuRp ^%Apdr-=CR$8q[ ̼teR,f[r%q`,[ƽ2%)Xek y& Kwxtb ~(Y;p77>Zw 8ঔ{dx 35H~yPdJ$zn Qjǿ\5OxR^ l9+ 11{e!<=n[JW@_"Og6 LRD\&I}Kɒp̥@s#Zܥ%\ilC'qcĕ&_QX\R W aIALΥIIy$*˲Hd,S8-JdKƒϕT4}ۅL Le/WR]1sQ&}$-j+o;_C}-?Bm-<,gp]MϬmBD7]dLLc_/j2%' 3G ^ YnY`-ťeh v*怨2ҐI!ePg"_Ϭer%at$}嫅sW$ʿǠR\6t[<ew/J"qz#IM#.˻0Կq90g~(?3h<,=@INcۚ42U9 +O Oz"RVpLX\&\rG>X!2ed%AqA’ \JFD2q]\2\Xbd qC*I@];-[1oLdq&9{^ioᑿ\exಣy+xfotsh6*5`fNJrFp)+ e*͙'Ռw1/JߝrcM -@jC058RoycĹx㝳Ů  $, ]s%,ffzn(WPl}qu,3+mt>ЫEe*[5by-ej<]aYX\NVZ|wǮ?)0IhgXʭrx׀9tJ ܲӎ{Vf%+Ӳ2ҕ Y%+{2YkcWĩ]4HJA&_&tڈ˾KGi̛׆02_]kŨL}..<< b@’ u,--8AAmHXAΓ'%Y %.Ju'wo`T7H[&X |nXGF6rJ]*S&k ѡfprWbu>[EL|hWmd,;6޳2 w--J3m+}@8 {:Z}'N//P8Ao!aIALuǘKʫx;+.Kn%O.+u%HfW/"2幎L`"N B+Cߒ&ܙ<օt$%4L;ѧrykeU^.&03 dRxMFxЗ ),|r;~W:1Glv;+Rߗ՜gx'.'._ҖAľ%A1y})G#fWSщ.?9 po:ԅ2CĥR IDATE[ m̻吴d;qg:IEQeҽqktٲ2=TYIv*$ 4$, DzZP G%LgPeY2N]._ QfV/L<*WEL\%0-d3T4qk>$D9J'O< Cx{ g49&ҽqk7yZeR KMZdM~xBq{)\`d(a7r\*gawL[A{AJO& TmJ-xVq):z9}2pk޽xʑqiq=e|^C*U*H+&(ӕYeD3qc]ir7Vx~z#Np!+M 0x&pf *҃Z v"Ym8'N˲#~7 n=)qeQI8hgT8$ "M b|Bʼn@)=ݸny\O.or<7^&Ǝ)Cε| UK9"bRˤe ^>ʬTި&W^&.'`e,h|!.G뛌>zwQ-WW!RٌdJCdS=+UǓtZ@sDʓڌ%!*:eNr!!o.zblwqA^%A15>u0scpLއJ(V`dKoij2S&5Otʻ8YtAܪ-$ӛR4-- r g݂3dfUW$B(I) a`LAxwFlWۓbPTvZu O}XXffɝ\>|X2gRQV3k:Y.{>L}ЬF~;[嘸H=q>RT0ۿ qTenoy$(, ! s?3(4D`FeT-x*s7[VFN(VR@9X0:&FrZtn2wAo[蹣 'ٻ0]sWpر")*3&׉l)G)qiʠg`njSƶsmRhjU]Pl㘸ܤ-x.ڲ(Fqmpa'cBz %!@21s Ġo߫83*J]TF*'0D4:&gLT[B Ox"r1pn[&,E?o2aE}@7 }_)O(WDzGMXZP,O*8l ~ս} 0NM^6+Y93IhwEy{ *}ը%~wGM ov3jXr[rfLǏ5BS(, !  PԇP\f4c\<%*v.83jzLlQ=Y9 -$nˠ"1^ÊH-oi#E}t`7BVSnN^WE$"EXѲ0=ùjI]X[RR$)[Sc|0;JQ\WV eP}? TU҇J ^Vym4lժ^3De? $0I-/uQ]3qCKB6%!;sc?Z qoxog gFRm* ᔂ}H- kq"X"~DL<\5pw19jij,+0EիJ"R TԲ3Rfi33ݑ"1 n 6VSˤT,u|\VwKZiNEeRVE3JDJs!]M-+zPYy{~ K;v?;@8_c/b1rbTIvSFn%Yiq̙pmoI!dPXBBӇpd2),2l P jaiA2Uͦh)ڻ v,rpu Y Ĭ5`{_{vloچYq}貲#k+k+ Kj2"h-'-4 hbrq-_Y4+xk-8_(x'ߒBf$2t~nUe~_l^Say ?Q;(׀Dl2V5iTi"n[FŔ"H\zr(u;ٯe(?0QښnOM)A׺ |̫̒|7 4+.cIWnXZ JR3&1+*% k*Q{􍞕n 4DcVnOQemhԕL!Vy̪ĿTW1Ak:6!G? ގB%! ˆ俪>}#ް TmJ f  ^o Spֲ3+&[fV[F#HXͩ앸< +aW`mGJ"\T*VRKq]i?d֦n3?Q[j, ߶G)QƉ<Ø&&quJu`:z ~ ^{ +#u%%,܈BZ(7jyΞB0ff)?<3BY&$Jd;,ف+ \W'Yī)$:YDRR$0[m%*2PLaffejѨѨj\xƽV'xi[v HaÇG%!Pe ߊvJ?!*sdeV^ŒwcX.q 5 :yUm2:Z5~=.8 ! mՖ/,}EɤFۡ[>γؿ1qB!)(, !B^wVJay QL4n TB4zKChq c%hL 36xh"&kgvݪdJSTRT=UML<"/{ѨBm;w{133f˸rmV@р}?vعls K!lHaC ZRAX>o QN3 YYUKu|xx'bg .=usc*&I揬b?bS$+6Tl{%4J37Fnݝpң8~XL- !PXB >qF~R(-x ~[uaOAFS61qtoIWXItBͮ[(&n2 Y@;fgoˠT?ll{N46so|_"9,VC 4-llVp%YXm[A%[B\`v+o $i;eCXJVJ! a׀|{ZT^" 3jj.[Ȼr__ *nWx藸To$*4ϓ&2O~t!:~ѝβRc|3oI!$’BHwވӯ )vWq>uy1q%.E fZ=tL^'ZF- (dxȷ<iI"u<~ۘA|9~$ZR+&#uŤ)1MiJsTǑp},™-+.?x2^޼X*,.bʯkY) ԱuIH_“|xLV6խ^JV޼wT-u/bgL|-~~t$%#11yD__鶊 1 ގ v _8BB(, !&:u*9 Ai1X،0)Yde:m1aKTWJ3&r2r~v2 MxdJM wǀrp:4gNˬw^܌k)]iƧ8qb_wKs@e TFe(. =N* I|U}P1}߃> Yl*PYmr;ݶהČr.k0g:"gQńf&aue6oI!DCaI!d?<5.Q+b$YYhDjJ\ms[*jJCD-H%gQLeRW["ܡ-8 ijf?#٧ҤP3ϧjjx$/n0ڦ{K_^ wxE|}EUWeH VZ\җY%$!=H]PV6U jJVz&>xK ;溓&Z\eL|mE0&Vcz'8~] ͒|xr!,ׅp z +70Tqӭ;fTLV8~Ҍ妥%$puj;2 ^dOB6’BP8y$N:xqA\Sˈ֑( x_nEyҔ#-S!(lGĥAfggMN>80EeQ}DKL[.Z|sXCQ{Ymo-* o q)2Y_޺sk%!L6B-B)cBQy![3`06o Řa^Ӟij?MzWkؽbj*.+-[^eeTiݿك_x+M1RVBqa[?@v g jFpcanև#\s قу0euRI J%'QXJa| [Bs`c}J >][C[BAaI!g$Tv*fR^l *aebZ\ƅ^L}Z,A{eFUF&IYej˶7#.~+upncV(8D8Q\LY-G <.alK>lۏLJ Ae>~Ŕnh} 8waz^EGKSpו%fgmjbk[&|eT {X:[9@[2&N!PXB f|pSRнO0YŒ@Xb~iq)ϲz<RDL<\g[kqiCԨ ge`xbq2~ .͗IlgR[ZsҥN)ѷM >x7^Tk%'ҐYn-,45lan4×P.+YlF*^w86\w8n ދcR+ShLγؿ1qB#(, !l 3+Q}-rcE[7j'lqsY-ao0ڭ`]ˠ:3r2aLxIti>~4{tKS?|Pmiԧ&%Tyjv@X KAaI d<շ҂PUٽhf?zDfU9KE^JTm&PíWs@$%K%\V)bj5sssX__럅o91~|}+l׮cbv_a|8~XL- !d<Rg!Oe'>~R=IE.Aֲ#*Sé,&u#sb`{a'y"up1E12?gm\A>/"kا2͹}8W?X6²CCu O_[/'*+5ZR"4++cp-*f0o]-v>1UUYyj}شq [o kP@w-nD܀zϖ+ %-AFGbWv/Bz|BXaI!0f{}*;q-,dUO,ef&:Z֨G͊H2VN׮%Hvfˬ:*WRʤ19>\k\m?` XeWk2N2RHaCHKU"S L]~!) নlE}{t3<2p +)oo5:*7pr+^\Ϙx/[Jfqxn|e3˿v=..p8;YmI!#%!Oe'T,bS1…b|L0[2&N!I?B֜?ǎéSp73@d_#^16 X*ˠXheᮍzRz4*/2:&m^{RhYp,Lm284Ʀdln#xSh4B[4c[u1De;\z_.\؅w1O[oI!7PXB1>x>><Q9_fL\-S^hjbR-z}xB.o)KdY1eƱ b~/`%`,Ƶ^{/`[+Ncbo6\]P荓(CLi);22 :Y求y]]UO$΁}1={byyf[ׯo_lN"+N͏ :&2PXB*~aSYCIKa|l+.Ler:0;FUoZL6["Q]FxQ^s7K+_VP$CseajƂ]ѳ;FJcVp**!* 7wﯜUMחRê*̾rFԷkkO`y>>_ŋ/s哸g鎵uKs/s D%8x0Μ .ĝweKB"Iƿ:4Ԫ$޼O=gH(nZ\z.r!'.c0ʝH ժ2r~~P2''66ԵO}u6_qpޕR_j$IG߉xB(QgO kq~iT%Wd'gef<)+wEZUL-;wj BzYCyo3hJljO#iϲla?~F/_Aly+-?0N4ZR9r dLBz%!L#G=q8CB<hyLx=oܭ+qtKHu2zIۓZ/&ESio_߿s$c 7׮֑J&Jn$^5#\Im%+;ND2Eeii54 ܩEv%:^+,WW;)V tmG4X]I8~9oI![’B&3=C QX4ީeBn] Xܘ8V~[o>(e+CG G;þ}告?wJ\+85r0R2EV*Pcޫ}JV~#CTD|YJXEerYEwj1Żppu5JEc%+]ׇh6=,.t(}cm\cJҞǎՖ2LZ"{0hF3c(.2ցi#y]j-c1qެuF_9(я;TMF\RJqd2ߏIUqԁ_\~\x<7^$mɌwflTٸ[VReYjֹQL Q/k\4~4-I JՕ BHwPXB2}*;q栗ef,<HbՕjY$]\W9LeTX4+:4XL\_O "o, dY}GE,1|i n5GQoyL$-m[IrYIF#k'1+L J-.u<\!ؖ )+3"๢ْ2,yXU߈-{D ,/ qYi< וh6}l(=2B`MرVBȤ!TBzʱcBQyСq8|#@ZÄhK,ӳ=opsyP\&=9g[p}bS²hyR (3D~ ;.lzQ;w*iJN6kqqYdR^J"oSރ7ٰHKī+cUyDBB ĺy*goZ^URQRX K=<F KH)aƿ/܎Kn@mAT}?z<2\ۛWG2BXaI!cvSى{u@~>1<ϲXx1qL6 lEK˼xt2{ 7ORj. $xƘQoUZ`tn5Y*)y6iqyrJSVBXB@XfUI)$ nRg{^$Ғ 8fY}IZ{GUJ,,l8=c[̣`|ՕhI KBqΟ?~SY݅_0 |c .%e|l֕ iBvo=Wmk\S\xLc)Exeqoyp>hjiy]%tUe$YUiYov zW;!+&Ϩ("6ԾU,xW/2oMWVJiY[ZZSSjQ|9;shl IDAT8%XL- !$’BFd#VeSعb;TWep]0=L#-[FՖ4!8['ϕo,.v̗2s963a߾2qh1eY ĔeEV$1Mi"Y) < H1-(}CJfK?CX"UIUUUen|&SYem]AQفF:%-/g$$Q}*qR1|l~>L(r(Ol8xB$63{آ"-|D:!2/_QoT[Jjv8<]w;vDh)׭>\qyׇ>7%}dYriرrҏ?*n[Y_W7ffUAQixi5֯e}w~ƿ'u_5F‰b+=,ada%!fJڙ{u GðJ@²Ss 2ȭl6ۆvq9I x$-WtHi+.=x9J5^ygQo0֧om#xߵi I^oFJ60; LO( ܌g2R]/+Mu]3Ed%J2t~©Spyma%!S5[=hWX8Fxe3j|QacTع2.w6ĘE:LCr]m/"25Rn KaRǕ?=P4gV~h.܀٢8w`WQ6 :mJ -)ԯOޭ&ODeVS?5q_)gk Bȶ’B G~hAL>o'.%mĥԌ22esexrlťo=Uo=jd8x. mf-V/!; }t`ͦxQo/}(.*S}(o(5ZT]J3'${U^j5|Ϟʕa)֮ڎqpdR?jB+2$t7 a >2&,*1q7)(.3ѾfӧIthy^|q}H=2IF -|~RoݞZatP-PIKӝ$}ϡ\ͦ,wQ42fj.7J9 հjjB{SbRQ3v'+)u/OO%ݫWe7k˂}*Hޕˬ$Cp!;v- !VXBȀHƿ92!MsG7[}Y$6u| <_1縩ǟo)UcscIS~>94d1;UOKS&FۼOb>쟹vc(崌}bY3hgnJJѹ&)ekk2夾79Q4%YajL3> ˢq B~kGCƍaTXwJBv’B Tӯoԓzt:37flym㹎jkUUi9)DΎp[ ;?/] E#28vxxe9W[L#i Doi-+K3%X )%~xofXX*ii'BѨ*%eR?ײ7%) M5_Yi <)LVSz9N2^zVaX\dpA|3 B2" &/6q ^l1( BP.Oann{܄;wcffml5.cuuh4̨B3Ҍ,&*MAg3&>xdJ G1q&!%!t /fͿC,b~deL>o'.HR9k6&C\vQa!1oݗhĶmKi9mGnٽ[`n`.5OV;*.D@Pj >S# iQi͔#Ɋf3|ج>9k[)y4d7a1 !%!tTs_D$첪,{^a#*ϧU,:k9{Wmי}\X\̲-K h1W-{;w;vǴT3-8&b4/D̂qpCUXjΈ2PXBHxs_yJ[f 𮀸jLTRՖҲSgF\OjK!ƫ+؄QaV[;M ǃec^efՑ:$^^ &:Q>ypC]XjxB(CaI!m`tfrӯKEʞW_&*S'[` qqSck!QTKq9b,FY\fٿ_ݧ++FQcTNj; गL2PXBHmx"C &_쓨4[PWZr .GҶ7EsrL|[8S9pc&IXj8$!dԠ$f Bi 9^TX&21!O;qڿq!Z7\drcI>o { FQo'FOǿ0Nz$ K BF KB /hۃif[nVbf=7eՖv-N ch_{֥ hՕя'8aѣh퐢L԰%!dPXB=#G=$g?WqhQoYIqEe: 3v&ggtϰ1z'Caaę^" KB_H7(iiTZ =6&޵4qXxy Z ˶PrUu5IJhiZ\V1#c"XONjQSنq3fL^CaI8اlpTiYHXr/n#+7#1V_&!PrXMғ5Du\/S2}lB\N`('=3oL88+f̆- !’21$ Pi'1͈u-Dey;qZ‚/Sx~-_k&|)p$ͦ3111ree4E%T`ܩ݊ŋȤAawrB6 %!d"`JK1>Z ' Kc!.3v.DeZ\ZU f688͙xRTX1yN- VW2N6 e1؞(, !c "%"q>'f2K`wcc@\hZ#neFE O21IolEM *'²;XX@ Q2O_*-qoiz"&'Xee|,}v3ϗz{T[N;eq9I-GO%ߛ`Օd+PXv[7B’2V2h_3,se ceٲҼo5\f/> luJ8ggr6ԌrL|[OdR4pS(ohȤBay89&!(?d`LUZqqiVRDM_[&}DL~/"SZf Ye5/ {)5&> d@PXn^O%!daJ2 GSi"r[f٬wc2}$6l*KQdmudPX$AaIY#G {Hdp,]eY2E.;VYK\4oi+-./=BƐ8_b 6mUiIgL اr88B$$k+U},-eBXv&&ۯbҼKU[v[^KVYe1F9}vac(8َS?5I²?0UE1$gCƁG_zGH Y.3ERRv4qX~Pm4S*Sc_˜$I`ۀpٌdO0NeB@aI8c G?IKˬJ.0[\-ϋ_hn˗^~.vU[f)JFۏQoy7ﳋwST NC eIę"dAaI*e;x2e-S1quE%f}il+wˊq@%,۲][d880- پPXBTIї^?HZZ* yُ=Tq`>!.*ܩsfYq*˶r'{7TNC aKB_8$苯׿/3Ҩ̜2 똸yv!\<ߨq _~x-!cuटPXNɘ8dL7!ѯ} G`ۆ9-c@C DdTʜx_~3-Ooc2v-{L/cd^@aI6Ō?1K8}|PmgR 2?ywUXRt]2)-d˞ qaQt B~kGC;"dPXL&_|G̓Bh~,"GwϪO~?MKˊ %.9[oFXRTN(r{  KB #G=$BH8ҫ8_,'ߨ rӲ2&&n{{4qJbvb1q˞ڲ[avȈAaIيCaIȄ>lOTGIy,x8 ˘lOUY %+Sexe!&*Ҷ @M1’raD KB&$d{sWp [6}/j ]!/HLM>VYcqc⁴@q9>o { $,&p2PX$EH$d_!&#΋%)%.k5Ҳ访e4_<_kHE1өe;ayvnd$Y0FHo$d`/BH;~ ?v$'Cq77qY鹀u+Wsv- i RՖ=&ed{Q4v $g2Bz%!g#t⳧N? \ \De* G|O L [h}91kǓҶc`L|d4zi.3a88Q(,I̘8SotM95;vSJ\6@4ڲ\KK%DLXue8b$4JĥLHKH&-. Bo `|B%TnoJYf2z:t ?:u-  KB$luUo(hY@4]RUPPeu= w]%15np=H']ip^!}QgӋ Npv*)g'2:vI8{ѣ155&` %;sկ~=rsMo__ hoyfff7p,γ3x#wMV$LJh/Dapi%֏88@-~KXK豏}{^Ri(n'uƞJ6a}\LvR.S^iy^5{-wΒf`hDHm0r~Kc-ɳOwX+aI/8TVXB{w}aP$I)JRx G~}۞JvXoZ.]Zݖ{\vz ˮ~Y\8w.˚ec1bqMuO:\vtxkcCAp>%d4 ,G{n+14TRy mr s,#\mJ]\Ӳu}3 ErEs1͜a@sx8K3.u]tp$\5q XBjvVJUae˻Ɓbll,BJ`L3l:2. 1rF:w.K"n\\o|u˖/Iկl~' HwPI`I]ߊ %tpo]}.ryϪʈVX?}jTW˖}z1V(9s9qH.drqllޔ6\@p\w%iXo[2e/طo$r9J՝-5h4}0>_Jl`$Xmв24IpD|__/,.Fh$m/[n_`nCknR8ŏ}8gq51%iqd8H~\o)CCH7lr1 ,|7Ҽ,bi;X6{9*ڛ"N|%b{JP$/XXX:g2$"dL<"{Y~+7\k7-$:~T]Z-&''tXBB|h[l7l]_\\\,/^:,zj&♧[e=D t]>p}ݲqeJ ox74I E0Ì:,-):%t;q}Ǿ}#aex{P:\ +F|[H oeO6 [.}Ӻ><1Tnv^>C3'b߾HJC+ݖ.#կn 4,iߒ"X.?w".nl:*y~W__KW e~sVB:]kOsAķ³ E24[od7.{am` :a;çd Ÿ /^>`'I.m+B[@Xuu]X N~mGi%\2.Ϟ3O4f~횛p+`et6셵;3r9z<"|Zg%F췤htX{} /8chh("nŅXXXXR~R"Kru[F#|o}D4Ү<>rKoׯ} qlDXovDE/no>ӼوfpqkN{ bhydv=LVe_ּldm`$yUVZѣGcjj*:,a{@I -~ܹs1??߈Fr-qm(SN#N=Qjl\|Ke1y\qO .otϷkL. Ev9&9\@:bid<ߒXRxZ+`|ߎ8{l>B={6779pȴzswy:- -# .u mdPEYMx5f$>.~Q>'%Eоú-%#O~y|+_瞛?s+rXo۲}D X7keˆf^@3!ѣGIK ȑ#1>>WgnfY|88Y$hK$XR|.Kx6Ќlte>dCy>в%])WBmw$ta;djߒ ,ɴ.M 0hG<~ˇ"4\:pz͍lp~n+_nW%ME4sK~K@`Iitzh72xSt[)x,'fݕ*%`호Bk<е@󩙈gnI;|gJ%XSER' -IOk-z{Kx_÷@42]be8JL` ߒ~XRH/ŲI>oy\{ g;|m^&L4;G̵۩ F` k?֘8$jO}?7#6۝m%22.d}vWF' :-%P8{#UYs~{o5XɃo0d'mK~8>wwth.ntڡ72.d;: ,uWuKX~KzA` ;'Cy"vH2R`vtX6?>;#=zԘ8]#$czz'3t?{uhy'[X` 92.d;:,KؘtLi8p@.>666Ϸ>цF>w~"^x.\vdsCշ<2lGqp@` [ߒ*Y듘Ç/3=='Oc[`=؏4F$K!cW$:yܦ h6 6_o955R@i)`3?qED5vEyܪKy~nեBƍpxMe7=;5% -. ,7 4x*C'R+>}qpTV[htLL#G,_NYD4txR9s?5_۝'&??}O-F6N~|h|Y4==Z-N<Jeݦ&pzG+ʶ~VX @q(L"Ser%z`MZ[j)XI9Jeup9ټ+YcRnqIsssTZShӰݕVQVѣ155BNcX9kwV_ @ִ}8oG?9٥ghpB9CCC[<_]OU?60tp166<&>99\;,ɜV xDtn%Yd7{֧r^vEQx;fUHGSnO&찼ᏥT _19pؘaIT0a%i9xuqڝKݗS7\w|p,9JeaeDDUQ=pU aۧF`I/ZZ}MԆέقvWe]c[̩V19.^ѣGu8dI+l٬Ko wkO9FkbmgM c[_h4kڹ#b{zz:[[fc jQ=v{ QZ!6Z{ zf=x$=j.HOԞ+o?K2Vr7eR#mikK,kmp{1{1w|#dFﯬT*)-SaF= @!$j9r$jڪ?xf ݓ~lHF#"Vgyojv7Dv*jSiRH_~G%@|h|t߲MdJ`kl9rĘx,,a%@q(ȫ֘x~Ç-zH` tij199鬍X]11qWD8j[K-K` .J%:Vo9==mL tQ.%J+E ko999wH` )KFGGc|||yL|jjJpMKPBJL33wr@ڥ@[=z~mXqh1;(K֘KF#"ީN!7&&nZTj.e K ȍ/t[F1M,{gt##.2O` tCkeDÇu[a$ BH F~hoiL|KȹV{7ksso }~˱Jp!!%Ef$<;>&>-uX@N^?q%AkL\NMM ~K%dnJ m[@vY~K%dnJ kvX@;,˜8K R%L7%GW%ӅX@JtSE`LgP[ >K7%lHx~K )#@VLOOdDoL\` }PuSBg%E&-@ *Ad%OkѣG R` =`~K觱.~R@LLIa%Gbv1;9Y= IDATK8|p @+Jio V~˓'Oueh4}y%Ȁȑ. QZTڥq[/v2"zH8V;veE[@sp V;Jk͝L(֘xDd=z!ڃJ{*߲^\ڥ@oyȑXP8w *T~-`}vX+J-`5%;pzx~*N] H8f_%F *l]JVpiLA׏G~&ypyQtOe'tYF` 2ݕ .7oftYD` "ݕV_gekAe.K`,R Z-WTf{3,A!HJ|{$*[j5 H7lQH X"J!`,R`;K`N` g>`7| `L` gSSFxc@ ,'t"XOE%ZOE%ݕt[v"N` '>|(| @/P("%@^8P4K>7qhcKh=61qW%P`SSKX=oz͇@,z'Ɂ"XE"!t/>,B` CGܝv E!XE!#9=@Q,z'}K(.`=>%D@,z;;@,z'3K(y',X@ا I@ ,̒s9%K(ZD% ;@ ,̛C9%@9vN` d %K 3@f,`;vL` d %R. ]N])a @~ $䗿`@f,X!2C` d.J-%@ ,`P8䗿`@f,H8^v[K 3@f,zX8'K($i],z \X4O` !O` 3H%D,] ,z X@!̧]@W,ziKڟv +bXpPKXsi5K& 7sI(%@H m!J` vY+KX} .}!7D%P,KX g.}3vqpx}#i@G,XpEX .I "IN]@O,X80v=#W](.%@ `wD%P\KX )%@*S+bXڴ  O` %e(>%@jlǹHsisKT -iKT]vJ`p,Rui-si7Khq+A"H.K6,KL ٴK+%@&`=J`,2C% 3. %+vV\/%@x g"lEB` 9BKK` 9KlKL9H. UKL<0Xf. uKzUwvW,l|PI%`~d nKT*Cמ wks?U ._PLF%FvE$wFP4?j$m_;?/@ݕɪ&I=a{ɵKs8"bq/z]8@ ,qp 0P$;%@ܞvtEwO(%@ -A;Xp|{^kK\ z? ^ ,|XD?ƶ>s&z= (%@n$3=ݕ@,zd|>K.dTp,rBK,;t֗%%@TȦ3SF` # ,j_/T^׷%%@ag -V@1,zh|>ZdѯE#(%@wN5zA` ClyKJ 0NGĩj&@,zR:W> ӑ։WE"j5i O鄕O-i4($h~F}[\"➮>u*VLy~L\{šXk?koN +#W]BD5tz钮jK*%@wjI"LW"G` 'oNHBKFX1>>v ]'l7 -v*;aeqp}2Bh } +1zB` GY oIHVXa%P\Ih] IGDKlqIr}#ow;x@HQH>"qetѣʈv }#HYO o$/ %KX! e7]¶/MGO_k|.0>2I~2@<y +#Xd@޺,[@~|/eT*oHsJ8@FjǡCY=%|=_@6}/VUDoFk&@qȈjܜ~-u[dI="<n|Ci _eShO@:Rw%0tXdHeicI(~*5뇕q]@j31qC%Z?F\v@z$xNJ QPFnXdLzU?L#I~*2Q#*ML] 6;,2*I>ya*zɥK?ooyc*V`a Q.~ڈ8#FGXd QR(~:28Eoݕa$ jSqGĪ^X8;ҥٵ_#6^!jOlE%@U/+hxOvh21+iKP-Irn˗] #8v!]g`5#9 [ _{bq`}G3h<#7x^ ץ]FϔJo8ߍ"vU;. stXH"vX\Oba᫺-x"VNﴳ2_ʍX Gj'FËXFD,.ůFxL4ʈ ,6x>f$ G՗Free\tU$,DD|?"1XLZFD H D#q6BRѩX.oJb_$*R~D "Ja S}mVvXy1?X\|,;?{'w2?;,J-ȩAgٮTzy31<ƴKvl4]H +:#ȱZmZFDo.ؖgTƮvVtH8@5GvVG“d$s. FƸ9[ ~tX\8v'.#5CC{oN`]3dEjbW. WP^9%.]1<|uڥ\D<.$Uͽ7]@, VTHT _]xыޓv)0E I]so`21KȄk=R`W]O.2JPJFa%@ ,Ą}[ꪟoOq5?v)x2".$*eKP^ǎ%2r_kߝv)W6S(%V{ZvG=&^j%tD<4?M BX fhy(2rկ~O]׽Np @QfPy&BrCX [K#ܙ׿=~&nQp @QgBP=JKF#"ZԖn%mK'OsIrzkTRIRRi(Z_T.p9啯rrĞ=WrW|w-dۙ8\z7{yL_#hyiYMܺĿu\g#٥ıc%ZD* #;vOZ)2pçn d$\n^#"Jر} Ozi!NG` +K` @D_;9swLO .sK[}Ka%@ ,X -?vre .qK"b.!ۯ ,OX ;,XiYIB}m<<y +J&a%@tXpZ댇G~b|B\rwc=N`'yf);r*V;K -?^e7˹s"}D<|4xr}Jl0՗=LBk^ٟLUK/}M%9Oy&%"%jiRxz{o3|8͎Ŕk)>a%@,T8v*PIDATK.e ů_[nOӴP {t1Lp'╯cd.YfP9w0k"jɴ` ?;}.f.e\tя迌KǙ3I,v͠R@cǎFƴ`:,ؖc.c`]ze/_/>v9lK#c!L tXm㯎Jx[>v) ~$k⢋ƙ3ߍg/p<XbB4U*o4:,ؑ k{ /=^W]ݔa%ij#%;vYSJ|2@Tg?{[erػo߯Q*,r YBVU*oF[JXU֨T.K:0<|c$zC$`E+,2?'W gKZ|qe !Ǟ= $/M$.CTǎ=-i ?T>J. GZC\/̣J&* ġ;TsD{0Jv`hh4"J8|jm -}uwU*7E6vtV/j}0~wJv!I^Ih,~qh|#ŪҾ8v쨮J2@*>ٛ..*R:"I^W]@4'"boDce'%ESa%@A*c~15dECz^Z6.S 5]EӴ|@*>ٛw~.JG>JFHE.(EbOD[:4:vOۻ:㿩 wEp]c6iDBy14FVmߒ9gB J\%w FKzgmTX,/lE҂@ܙs:vsνIns眙'M7̽ضaeo0,W2V2"h*>&">ԛQ$GDjRVX%J>Ieo60'&60(8U 0fK*[N$9!.䡲BI&&bh<Ѽ~FۇZ^s~8J^mPHw5.9Pv(BCE1.dI1qh(?cLrm[SSbeo xD|<1w /G+l 1TO%,$9>ysq%cf`ۡ&&N<`[/cK@|(7cu8=Io;j XPi1=} 6nSVsr\|%Ą~Z]Teo , 7;MLrՈF#b ̽+!Jsqo"^7"˾Q6_۞Co.b6" ͱm$$E?eo,*6|46l8/ly.n##cF,xz%7{e-sIr^d~W%%X0nĸK;_/{;BlDږZ#ՕtXq+q_,z` ?'ff^[Ν-{;S S<%$Hs^ﲷ,z]t\\tquwTvɅZƯӘFāa86]QxjIs?}^[`nZ7ݴ&.ص덲Ƿ\ވ?+?yQ;%IC^Yv}`H [;w5b׮7`.b#U0n1Ħ8ձڍ|k,7\O~kNUt /Hq q/cfkT˸DkK|Fs~?̪CCdc!T[V%#?7ɸ?_vB>|Ekݎ_Cg@׏OqdQ l_B%}%X0nq +w[v`Ckv{~J"˾V6AlMfiz]4J KoǏVT%X@uG5ה(O۷*){;! v"~+({'rPB%,͛#~M BP @%p`Ӧu}_n?Ȳ)te#x,ʳ ,I#tk۶wIJ` t^TM**%V틘.46jJ` }fMWr߾%4&ڲ&X@Y6lȣmeQ$gEvVd5eoz&Xjk۶gxw(I3#ˮZ}#X g/#|0*I%N7#z*bވ0LȲ ` %X6]~y-{,GUUNS06&FM?5{ߋ{/~|냘`}vv6fg?Fc6fggh4fh}oDD0qD,k:wy_?~k˹~޻~ b-X4^~;t-M,*`PAnN`)XiM,?`$g4OS0K={ލ~'`k:,:`} 42Kwu0|صMk:,:`}iNS@` Cߊ|+˼,c\q\ Gz_NSa0vz#vz#ynXl?W\4eȲt&Xcǎcǎek:,:`yΈZ'Xںu_q0ff eUu,X+uy8N#ˮ)%o.n9r}  kz}^yz'X933c˖?eUu,X+u y\'R0ly6!XZXl?W\4,d]$/_K gbz՘`ٯkr0c\q\Ϗ~#:V` ,rOԫ1=9#X.ZXl?W\4,Q)'Xm9kr0c\q\ϏN):K+SScjjz^kr0c\q\o\Q.2 |{/?:+X. kz}~e~yr_ Y._ɽ ǂeZ^vLӚ(@U @MN~>b W\<,:|enZ4(` @/ր)Xɽ`~ii)""lHV\{,WjM,G#X#BQ&X+0nXl?W\4yl0FKR̗Cך`)XGL/EDD}yq X79DD̗ ewk`Y`$FvjjkV;q#XC^y2brª`ٿ:,:4<""Km X#b.\1`:,:|?WIm7K`dQeUu,X+u|.M8?e>,Rz/'' rǂeZ#{>?56"yrrm |%0xjŖUzc\q\{ e_\,C_y, k"qvS@KeȲGFLN>ڲ"X~,X+Ӓ'_gٿ- @5}e\5brrbƂe48?-yJ `eo[19be4|ʲ/,*$4G?bjυ[`FQ}9Q'X zQ#f,4\a="Keš2W)o);Fv3.'X&ɧVt,jZ3@K+vf1e$YڧRsډQ:+M*cU+U ]IENDB`hkl-5.1.7/Documentation/figures/sirius.c0000664000175000017500000001620015133711150017217 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2022, 2023, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl/api2/hkl2.h" #include "hkl/ccan/array_size/array_size.h" #include "hkl/ccan/generator/generator.h" #include "hkl-geometry-private.h" #include "hkl-trajectory-private.h" static void hkl_geometry_save_as_dat(FILE *f, const HklGeometry *self) { HklParameter **axis; darray_foreach(axis, self->axes){ double value = hkl_parameter_value_get(*axis, HKL_UNIT_USER); fprintf(f, " % 18.15f", value); } } static void GeometryList_save_as_dat(const char *filename, const struct Trajectory trajectory, const HklGeometryList *geometries) { HklParameter **axis; const HklGeometryListItem *item; const struct Engine *econfig; generator_t(struct Engine) gen = trajectory_gen(trajectory); FILE *f = fopen(filename, "w+"); if (NULL == f) goto error; /* print the header */ econfig = generator_next(gen); if (NULL == econfig) goto error_fclose; fprintf(f, "#"); Engine_header(f, *econfig); item = hkl_geometry_list_items_first_get(geometries); darray_foreach(axis, item->geometry->axes){ fprintf(f, "%19s", (*axis)->name); } /* save the first point */ fprintf(f, "\n"); Engine_save_as_dat(f, *econfig); hkl_geometry_save_as_dat(f, item->geometry); while((econfig = generator_next(gen)) != NULL){ fprintf(f, "\n"); Engine_save_as_dat(f, *econfig); item = hkl_geometry_list_items_next_get(geometries, item); hkl_geometry_save_as_dat(f, item->geometry); } error_fclose: fclose(f); error: generator_free(gen); } static double hkl_geometry_list_kphi_range(const HklGeometryList *self) { uint idx = 0; double min = 0, max = 0; const HklGeometryListItem *item; HklParameter **axis; /* get the kphi index */ item = hkl_geometry_list_items_first_get(self); if (NULL != item && NULL != item->geometry){ darray_foreach(axis, item->geometry->axes){ if (!strcmp((*axis)->name, "kphi")) break; idx++; } min = max = hkl_parameter_value_get(darray_item(item->geometry->axes, idx), HKL_UNIT_USER); for(;item;item = hkl_geometry_list_items_next_get(self, item)){ double current = hkl_parameter_value_get(darray_item(item->geometry->axes, idx), HKL_UNIT_USER); min = current < min ? current : min; max = current >= max ? current : max; } } return max - min; } typedef struct _XY XY; struct _XY { darray(int) x; darray(double) y; }; static void xy_init(XY *xy) { darray_init(xy->x); darray_init(xy->y); } static void xy_add(XY *xy, int x, double y) { darray_append(xy->x, x); darray_append(xy->y, y); } static void xy_free(XY *xy) { darray_free(xy->x); darray_free(xy->y); }; static void xy_save_as_dat(XY *xy, const char *filename) { uint i; FILE *f = fopen(filename, "w+"); if (NULL == f){ fprintf(stderr, "Cannot open the %s file.", filename); return; } fprintf(f, "# x y"); for(i=0; ix); ++i) fprintf(f, "\n%d %f", darray_item(xy->x, i), darray_item(xy->y, i)); fclose(f); } int main_1(void) { uint i; HklGeometryList *solutions; XY plot; xy_init(&plot); const struct Sample gaas = { .name = "GaAs", .lattice = Cubic(5.6533), .ux = -90.003382 * HKL_DEGTORAD, .uy = 0.12907 * HKL_DEGTORAD, .uz = -159.91372 * HKL_DEGTORAD, }; Geometry gconfig = \ SoleilSiriusKappa(1.458637, VALUES(-0.5193202, 64.7853160, 133.5621380, -80.9690000, -0.0223369, 30.0000299)); Geometry gconfig2 = \ SoleilSiriusKappa(1.458637, VALUES(-0.5193202, 64.7853160, 133.5621380, 124.9690000, -0.0223369, 30.0000299)); /* Trajectory */ Mode mode = ModeHklBissectorVertical(); struct Trajectory tconfig1 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 11, mode); struct Trajectory tconfig2 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 101, mode); /* move between each step */ solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); GeometryList_save_as_dat("m1-11.dat", tconfig1, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig1, gconfig2, gaas, TRUE); GeometryList_save_as_dat("m2-11.dat", tconfig1, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig, gaas, TRUE); GeometryList_save_as_dat("m1-101.dat", tconfig2, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig2, gaas, TRUE); GeometryList_save_as_dat("m2-101.dat", tconfig2, solutions); hkl_geometry_list_free(solutions); /* do not move between each steps */ solutions = Trajectory_solve(tconfig1, gconfig, gaas, FALSE); GeometryList_save_as_dat("s1-11.dat", tconfig1, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig1, gconfig2, gaas, FALSE); GeometryList_save_as_dat("s2-11.dat", tconfig1, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig, gaas, FALSE); GeometryList_save_as_dat("s1-101.dat", tconfig2, solutions); hkl_geometry_list_free(solutions); solutions = Trajectory_solve(tconfig2, gconfig2, gaas, FALSE); GeometryList_save_as_dat("s2-101.dat", tconfig2, solutions); hkl_geometry_list_free(solutions); for(i=1; i<102; ++i){ double range; struct Trajectory tconfig3 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, i, mode); solutions = Trajectory_solve(tconfig3, gconfig2, gaas, TRUE); range = hkl_geometry_list_kphi_range(solutions); xy_add(&plot, i, range); hkl_geometry_list_free(solutions); } xy_save_as_dat(&plot, "traj_n.dat"); xy_free(&plot); return 0; } int main_2(void) { HklGeometryList *solutions; XY plot; xy_init(&plot); const struct Sample gaas = { .name = "GaAs", .lattice = Cubic(5.6533), .ux = -90.1 * HKL_DEGTORAD, .uy = -0.33 * HKL_DEGTORAD, .uz = 11.1 * HKL_DEGTORAD, }; Geometry gconfig = \ SoleilSiriusKappa(1.553, VALUES(0.00892, 65.84862, 135.42159, 100.249, -0.26559, 66.64474)); /* Trajectory */ Mode mode = ModeHklBissectorVertical(); struct Trajectory tconfig1 = TrajectoryHklFromTo(0, 0, 4, 0, 0, 2, 100, mode); /* move between each step */ solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); GeometryList_save_as_dat("m3-100.dat", tconfig1, solutions); hkl_geometry_list_free(solutions); xy_free(&plot); return 0; } int main(void) { main_1(); main_2(); return 0; } hkl-5.1.7/Documentation/figures/sirius-m.svg0000664000175000017500000011773315144640561020054 0ustar00piccapicca Gnuplot Produced by GNUPLOT 6.0 patchlevel 3 -60 -40 -20 0 20 40 60 80 100 120 140 1 2 3 4 5 6 m1-10 m1-10 m2-10 m2-10 m1-100 m1-100 m2-100 m2-100 kphi l [0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps) hkl-5.1.7/Documentation/figures/med2_3_slits.asy0000664000175000017500000000441714677222567020576 0ustar00piccapiccaimport three; currentprojection=orthographic( camera=(3.01553867584536,7.69355163375629,1.55824928263524), up=(-0.000558993492954675,-0.00231647705177596,0.012518906910417), target=(2.93710368526323e-16,1.12323345069498e-15,1.74149973955484e-17), zoom=1); size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-3*X)--(X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-Y)--(Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-Z)--(2*Z), gray, Arrow3()); surface slits(real size) { surface s; surface slits_in = rotate(90, Y) * yscale3(.3) * scale3(size) * unitplane; surface slits_out = shift(2 / 3. * size * Y) * slits_in; s.append(slits_in); s.append(slits_out); s = shift(.5 * Z - size / 2. * Y) * s; return s; } // La construction d'Ewald void main(triple ki, real gamma, real delta, real eta) { real k = length(ki); transform3 M = rotate(gamma, Z) * rotate(-delta, Y) * rotate(eta, X); triple kf = M * ki; triple Q = kf-ki; // incomming and outgoing beam draw(Label("$\vec{k_i}$", .5, S), shift(-ki)*(O--ki), Arrow3()); draw(Label("$\vec{k_f}$"), (O--kf), dashed, Arrow3()); // project kf on xOy triple Pkf_xy = planeproject(Z, O) * kf; draw(Pkf_xy--O, grey+dashed); draw(Label("$\gamma$"), arc(O, length(Pkf_xy)*X, Pkf_xy), dashed, Arrow3()); draw(Label("$\delta$"), arc(O, Pkf_xy, kf), dashed, Arrow3()); // draw the slits and the surface of rotation triple n_slits = shift(kf) * M * Z; path3 Cs = circle(kf, 1, kf); draw(shift(kf) * M * slits(1), red); draw(Label("$\vec{n_{slits}}$", 1), kf--n_slits, red, Arrow3()); draw(Cs, red+dashed); //draw(surface(Cs), yellow+dashed); // draw the n and n' surface path3 Cn = circle(kf, 1, Y); draw(Label("$\vec{n}$"), O--Y, blue, Arrow3()); draw(Label("$\vec{n'}$"), shift(kf) * (O--Y), blue, Arrow3()); draw(Y--(Y+kf), dashed); draw(Cn, blue); draw(surface(Cn), blue+dashed+opacity(.2)); // draw the ange between eta_p and n draw(arc(kf, kf+Y, M * (ki + Z))); // draw the expected slits orientation triple [] positions; positions = intersectionpoints(Cs, Cn); for(triple pos : positions){ dot(pos); } // angle eta_a draw(Label("$\eta_a$"), arc(kf, n_slits, positions[0]), red); } //slits(2*X, -30, 40); main(2*X, 45, 45, -35); main(2*X, 45, 45, 0); hkl-5.1.7/Documentation/figures/k4cv.asy0000664000175000017500000000244114677222567017151 0ustar00piccapiccaimport diffractometer; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); void diffractometer(real tth, real komega, real kappa, real kphi, real kalpha=50) { real hight = 3*10; real detector_arm_support_radius= 2*10; real detector_arm_length = 3*10; real diffractometer_support_radius = 1.5*10; triple KAPPA = -cos(radians(kalpha))*Y - sin(radians(kalpha))*Z; // tpp draw(tpp(hight, diffractometer_support_radius), gray); // support draw(support_k4cv(hight, detector_arm_support_radius, diffractometer_support_radius), gray); // detector part draw(rotate(-tth, Y) * detector_arm(detector_arm_length, detector_arm_support_radius, 1), red); // sample part draw(rotate(-komega, Y) * komega_circle(diffractometer_support_radius, 1, kalpha=kalpha), magenta); draw(rotate(-komega, Y) * rotate(kappa, KAPPA) * kappa_circle(diffractometer_support_radius, 1, kalpha=kalpha), cyan); draw(rotate(-komega, Y) * rotate(kappa, KAPPA) * rotate(-kphi, Y) * sample_holder(diffractometer_support_radius, 1), yellow); } diffractometer(0, 0, 0, 0, kalpha=50); hkl-5.1.7/Documentation/figures/zaxis.asy0000664000175000017500000000344714677222567017447 0ustar00piccapiccaimport solids; currentprojection=orthographic(1,0,0); currentlight=White; size(300,0); real k = 2; real delta = 30; real gamma = 10; real mu = 10; // points triple C = unit((-1, 0, 0)) * k; triple O = O; triple P1 = rotate(-delta, Y) * rotate(gamma, Z) * (-C) + C; // vectors triple ki = -C; triple kf = P1 - C; // Planes pen bg = gray(0.9) + opacity(0.5); real r = 1.5; pen p = rgb(0,0.7,0); draw( Label("$x$",1), O--r*X, p, Arrow3(HookHead3)); draw( Label("$y$",1), O--r*Y, p, Arrow3(HookHead3)); draw( Label("$z$",1), O--r*Z, p, Arrow3(HookHead3)); label("$O$", (0,0,0), W); // draw the ki vector path3 ki_p = shift(C) * (O--ki); draw(Label("$\vec{k_i}$", .5), ki_p, red, Arrow3); // kf path3 kf_p = shift(C) * (O--kf); draw(Label("$\vec{k_f}$", .5), kf_p, red, Arrow3); // Q path3 Q_p = O--P1; draw(Label("$\vec{Q}$", .5), Q_p, red, Arrow3); // draw the dots dot("$C$", C, p); dot("$P_1$", P1, blue); // rotation plan define by the rotation axis triple omega = rotate(mu, Z) * -Y; draw( Label("$\Omega$", 1), O--omega, blue, Arrow3(HookHead3)); // circle generated by the revolution of P around omega triple C1 = planeproject(omega, P1) * O; triple C2 = planeproject(omega, P1) * ki; dot("$C_1$", C1, blue); draw(O--C1, dashed+blue); path3 Pcircle = circle(C1, length(P1-C1), omega); draw(Pcircle, dashed+blue); // Ewalds sphere surface Ewalds = shift(C) * scale3(k) * unitsphere; draw(Ewalds, green+opacity(0.3), render(compression=Zero,merge=true)); // intersection points of this Cricle with the Ewalds sphere // and the arc, ATTENTION problem de precision lors du calcul // des intersections. Pour l'instant ne pas utiliser delta > 160 triple P2 = rotate(180, C1, C2) * P1; path3 Parc = arc(C1, P1, P2, omega, CW); draw(C1--P1, blue); dot("$P_2$", P2, blue); draw(C1--P2, blue); draw(Parc, blue, Arrows3()); hkl-5.1.7/Documentation/figures/zaxis.png0000664000175000017500000053647315136610413017427 0ustar00piccapiccaPNG  IHDRy[QsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx[$uvV CԤ(خ@xg{f}lE6 ?h0<̣?SM 5h?dȦ<c"M%$2;"vDZ{Iu2bWDFVEzGi!*aWBxt>8w&|@`=:)g襟})r1/w)FJ1,:38LNj9@_?K*KL%٣UXqK k?]e9+Ƿn2\*46&>5ON1gW?{E/}?ꓸ @hnV,fVXuUJ\hV*o08 )1J+ J +B\]l@-D#F Fwl -`o0*FRx !Q ` Ŭ.`+@hsx@w]~ζrɈϷZ,,-ΒJ#W?Y]ڀ*W ,ߘ8ؔ<|:R9dL^~ *H$+G|jW>W Z%ECio]f$lo,1KxVB ȬjY _*g\u2$P-@ۧ'QoQb#U8%hϢ䲿q@hL>I+{V탵?vUZJg襟9ނ"8wV=yer`X19sRjHY[sQ(ڲ a@h, ,"g_e6VRy\\58[z̜q_}$  ^"+$"'g%ь9\؂w"œCdr#U/w8{8nVy@h0C?{p=f%_*/5#T\5CxM\6 0+>k"K{GjKg l-e֞,YWZP,0Kd͒Ԉ[D\px@w]Vg`iF-y\\5$jI,1F, _50`u@h[̰upM"+G|lNJ^\$BH8{m@@h[o#+&@d%Q/Wm$̾D-@=,kn:1q9csJi#UOj`]}$?@hPyXSpZEؘ؜yZHՓ[j1 /\CnP 5twwZ|jS_2#wus[[hB @QF%Cݷp{ahVU"/5W[ Z5KRI<-Yn%|kVE#jY9si!QK^Z.IU!nMP-DIesSƔmYYyRs9jHԒ1kcj!B wιkoLɸ9sRRs#UO֊ ~<a z&Vl)8cB$csIKYGtRPGΫq+zx~ $ӓX-[dq#>%Rs9jpᮕn1BOW ? -Q= [|Uk]11kIKYV$\E\]^nIobI?]BF.rJ\Ȭ}cBBcccs8r%pԫyV:Rr9F({E*x<ZQoi&ݥsևƅʕYҰ R$I=z( 1k 6 lX6 r+ezؔ\jYGt\+Ctq-`q6V|\g=gtlJNJWt=ZDFUǸk"*弿?Y[ `=ݻw'#$Uo)\ڪ 4%Y3g}-cnk_{<u+cF7s5ƪIb,jWc`VVٚ9\=K_eLշDX+Zz$ 5ڢ(N$kJU^ AsoSp\ k8fm9{ yQn+{aj.g z%д_Ց)YX>hG&'x<T fc弥p-KhUԘZjHԒv1|҇^?wMןP#ZP ^efcȗn%QOn1CM\јӳ0k B cO7fBIǕ]'WcjYy89ןŬ--PH7η JƂĒ͕#]SXcomVZEV^|xݷ$(ݻ9Adi%%rNXZbARZ+G\Es],cm+nG@h&EѴYkPl,Hm+>'5 Njszἂ5'[ -(ȚU[Y5VXm5$jq|Om2 "־8H;'3[P-(@wY}cBBcccsRj娫u).r.9)AN7y(dD\dJ+.UZbAbsUX)h|0+8KhC;W@3[-ZKDfcĦJԑaXj:5 [Yz+"- q<WPAdHǦJԑWj4Yf"Jy{t~_>l4ZHdɫq"oJOK!Y/w}40eEcn̈́\1YL@dyY#;#D5VUXɱ h|ƃQ {:{؆l\|Z9jSAfqVVMdMɈs+z/gmtz)!BL-1!q19ur-=\u&g! -"+z8ؔҹukj+}`VDΞrz4̇V c^yUµZuA[S/1p Ifi:^4+}_>R= `ޞBdɬ +QG^>hA J-,-} 'E ` eYKsBcC\';#Ww5] 5 Ǖ Ǖ˷"Bl$Z0`Qd _y=,46N1qSRs9j嬭iLnmdV1H:_[0 Y?O?^4[Kz#;##_VZK^mjY[UqT1?O'?^ze[0B y"(w׾1Sq猑箓nB[ Y86'PȘ[B inr.Bօp.OYDZ3F:6&>6'%+t͒tUfxԳO}$`_Z]Cᾒ؇ן\37ug{ڿ?hO }%UY1!q19)yu宯uҔv;^{Օľl-&XDZ3&$.46G|j^jDZ9kkڷV'm^q !B n,ܥ)rMIKȗ']Wۘ)o,c[Yz0;g\[X%=^[_:.W|j^j.GTurS=rhcp_߫W_7"V `U}?ͅk_y+$o/\moKQ8!hI#i-j9% ՋWtk-ܜDQ sccsprsבYr%Q+[YRՋW_Rr;-@iJ#;tD9Q۱Y[z|0O앛Z }y,4Vjz؜gcq_]`_l%667%U~m5"{{al u9Hą!Y/w}-crR{. ©o+.v+4N U [ q{zؘ؜\:ܵr0^ 5ڏRw-Y-} qSӱOq"F Up?<>u}c$BcccsRRs9kHQWx!h6 3zl>~T@5:6{y:!q[YX'= ,ㅠp\M՘ P Z|fYdٯ%o/L]6<6'zΘyR$kMlZE,feS ^ gއ_ї8 PٞǢ X#>5/5#tc,Hg6[|O_Gr@hԀ q ͝Ñˑ]G^14-͚,bZ'UY־z%+,@ZlL^8~YY~|sHiOӒ/U+Gc-dVcR[9b0ן~Y3z;[X _8+ YCd͒,W6'%/5g\usXz& ŏ@MiK-b 1+gzΘ8ؘ؜\|Z5KqlNֲ[fk2Ho^BˑS׉M`1+ "+_lL|lNJ^j.G>w9k;{l6^ =py;^ċѧK/6D<ZI+c=gD\hlL|lNJ^j.G>wzk3zlEf?{~hSBK@h>+kq猑*SG^ E{ Y:gvLQ B # }y|볲jp" Kx>h d 2CMJt&3&V|q "`#hVvéױ1\)95}sHą)+QV%A[? tPCb yGDǯc`׸1bsΕ]+Gc͡m/oޛL7vKSx`<gYYsǼ]Z^bogemMdp[fhCl%Ά!ʠiv(z7s>SSAcùߗsy:cBc!xr9kHQ7fmۣ35aǝ־fS>oTՋ=}Iq+NqvYY9DV\$kCZȬ{Z 3;9z+\/~`@h1z|DOy-lnylNlMcBBcsr#]ƍ~ :vσ9^ÝcB 0z{Cq.OYcoLɸ\9)y58HY_˘1'4jwt/2ӎZx`<B {;׬uSAfaVV\lL|lNJ^j.g :Rr/=^(eMW x`<B [ rr)+>gGr/===<>󓱯}5zG/*Sw`lM9;k Qk0܂6`+srȬTAaVVjn8ؘ؜y\u]r,~vw(ˣmHv?Z"y_2 X7ZYY!Rbq.ZDZ7d\hlL|lN<|:Rk^dVPj_/5;K{|8;KC\԰-FHf9NJd00fk^ XjgeI,[Νk=gLHdlRy\uk[j%xc{zG/xE%"gyFD'w]h5lyk2T V ͌9l-+{𻯰6+#vn:\53tDZ9c|g[قk6D64-RzK%KK};Yؘ+*ϖ <0u n1\Ӭ}֯uVSCV0>Q*@8gܐYz_/7>C9Z--*0D|sC%r8rsHą/YCdch"d*/'blsDMF᷁QW!&52nAv E}VGru9cBIӒ/UKfu0+ 1w븁Z>IZ6\Wu X%ZTͯZb8dIG) IDATq%) K9)yZjIY_˘ d2kjt̹ODjB 8h-O1++r5, 3ry58H]x!>zY#x1{qvW1Rѧa@%+|N̬,שH*YY@d"y 2 T dV}e#вIJ]8-}O75Ck*fvʱ\jz8ؘ؜\uI2 ͇գYg@fW6 Ȭ![Wy棟Dן-3z^`qVVnaU*-rrsᮕvɱjekcKgːY4TBClyZJb"WdVYY`V|NJ^j.G>wZ9kvw}_)4۵ljcS[?Q$lB?oR ]c:e3KZ 󆿇/-X^b-#\uk;5Nə!=ʬݾp7`.Hd~*n9idɳ't!5@0C e ݽw3+uʱg}JY;&$N26&>6DW>wZ9#13^k>χ Vz4o]fiE~;FYu+R -qUAUӬ)RfWI,ߙ[foiY3RgeŲY9f"8S&Tf̪uY]h6Mbw? =u|8(KZɨ%Q"|q._Z>v8ؘ9\5$jIY}5p߽~̫6|r!Bp&J4zm y U3u\ZB _JWr+fy:\cB$csėYGf1 i˩LJDDg=^>-ȳnC͂{FϪ =p"=~Eu%2c#uBQZ7t|ВL[8/aoLɸؘ9)y\\58HY_˘Dt-=3+u}5; @8;KCdن Bk)s(8{ sjͳr&M3B$csYGfښ??7kkK-,2.<`$VcjNHG? P-2{^V|WfeU5B<+ "Kgcyph!w;CWxC(E{V"l?&6 Zddƞoz>/F-^eq9csJrsבvɱԋ$[Nnp&G1p}BLlO=럿fi ݽweeFUnCʪd\K5$Xvig叽JVKN5s{x9 Q2K-9UU\u4 %wK38Xvl->&Kn * tY0+KOD\hl؜\|:ܵr-5S0ϚK5|NXвI,%J-<,y $W2KbVrX!b j娛{ Pc@!Qݟ_s7Eg*@-pʬaPJfmqVO\n)&1n؜\|r=ƱCW gܻ[JfgM) ( 0wXrsy:1j#>gG.G>W Z9CӸ!# g[ .q H#7vCwFeVwzZdVW2Dus2f ?dV}Me=wx_&ÖX[PXʟÑˑUtc/ͽ`#uuAcO5\f+ (=͈o2lWܷbVV=Ry\\5$jI]_˘KhI΄/p Ȭf\p0ZDx ûzd"0+Oi^!q19sJr֐%Q/w-\lu]l9t;!Nh'HB HeVYX2+EFiY!YsRjp֑ԋ[,{i{0kS_? [$4{R 4 `M%jUP*٣؜ҹ58HUXsh郓5n,<$tlk% 0^Qe9J˱ @ s0U5bmVVIUfl|Μ<-u]b%ZcMǻ^YVlg(c'^xEWM YDvYYQ-/YwKuTjā Z>ZnXRغZ'7~MDfaip j?46wNJ|:ܵr9cg-klh!3b9f?3L_@Z,==,e˗X!VӬ9)yuk[jec?{^OX͕"P5|V4w ygԙ9?aW4sx@#Af.q,dTu}z%sƅIK͵kǰ7=΍QvzqZ/ ۢZ7 JH)=y ~pHl̊GBʚSr֖O!B MfR, 5$I,1ܸ>fVu3Z8YS"PdTTX&7&$EZ|IŮQf>p> 5C,@TУ|~_kڨpg1w"@h0`~,\Ut (XacoLhDdmIS?6'%MKdq](J\k{p;"Cݻe҆￧%~|.S 𗅉K鷞#ͯ{w'9$U첥9KyK>1>cƅƶY9)aX,--!SWm]䄰ZSJYP8C Q3SݟAj0B :ˬ/TJɍ]c}H g\hlL|#C~`\"KBfIQJd&AL={@c lI”f:vOߣڏ9dD1H-@hsghO)!5}ĬXMI#KyDgȒy{YDY#k]]35!3z9hBC-in~|a S`ʭ,T|JuCb8BcQ1[YîDVI. [tnڅS{smּYzӼZg|[ H-N@h-đK\Bj.Y.e=gLH\hlL|CE9:fXpq.DoJC>mZ~\ ;J[(Q2k1Yʝ[.)/Vt Sm2+|.!Uf{(5뎏CdXx[Zk=GLH\hlB  +v8_T=J? !z7KEHz~4KaO%ІƞNf`|?'?B lVf8%\q>BshǬ#&$Ejs$s䵹T 17n ޝή!{￧W$m҇ 5 ڎ[f􍈧'uUVOOf0Kn,[;sϺKCbB$bCH'fdV \'YƘSEw_'.$ѶbdU[3 Z0+zɔƕX5OY!2KBe|sĄĵ?)'q9dV()J"K>_fg??*ؘ2D>)Śuurھ4H- jdV,!RhJnqH5|)GZf--BW-rJ.17-oB$_¡ʼn A_Z;"^rfIme۬i[D{+3ɵ[B $$\ZWzyKYT?43.4 %Ȋ+JKdq,rhbDrq~@/wQ& qZ󶕠X|JZ`@h-|RT Nĵc" ܹ2SdqK^DlQd%q-G2;7wبk"B־5A4Ioئƈ!zZ`u@hU6CjNpq (Nac}H g\hlJ "ˑWJq֐[rqGuo:ٟ>0EQ_[b-&CyCWn?kB TOOf"椕O~5,TIZN[KA>_*YiZgٳAj /'%԰o0H R4uCVEjAjށfZY.[#)+e=gLH\hlBJ=ƬIԵR;'g[Ywݝfhᐬw~k@7H.ql;'QgNmz̹,6R -P-̊%F.[Z#8%WJ9cBbbcdO(%DV#'5,'$wܘ1v^ "k2Ď$Sm"o7ǷYhG?OI7e( .mĐȁj߿\ ?!?=0/Zf @ULʬ\DVKsSUJ/\2ˇP9BʙǑLd"+8Z=g){vpVmO2w @"WJ/WԾ1???E.6AjZ0Y'U*Dp_Kdz6֗#J ܂:L_b"KE훷D?q~pȹ??7dԊǵpB>z }ǁϴsȆdy^AjUГYrgjYZsy)p #5+-xrYJikIL8I/)pYZm?1}s/h3[B`c4msy$·-ǦCVx~Z6 z:QLV}sSLG%FdI+rg?gzܬQd){ӋYsRx9b$BcccsR5\2 5,- Dijp^7ZKvhNv~L~ 7Ki5l Hg13X1s<-{z[2+V.[.E,YK'θؘ؜6IJX$"K?_ew[h~7?_={wܝ/f(ְ +!>wKGX?CؚR PI'bIY!!1nθؘ؜\s2.W>W YEVEgg꿡k"Ӛ{%6z}^-lw﯆"g v :dVȢ!֧(R%oи6?g^[2߮Dzן]Π ٝV_9?/ۈArxj~kVL廹_fHgvHYsD̊nnJݻo1\%=ݛ{zx|H?<?O?1ߦ_'_?xO|t9 ZjsHϮ{%|eq}>+9DC? ! n~޿wa+Jɤ2Ԭ,ؘԼ\|:5r֐%YSn鱦Ǘχа6ʠΪQf5[heY6K?L^}}1-8-@l2gʭ+f*onVV:5Rsdg\hlBW.G>g5]CV[v% !pg~zX_V 8 gHggp/$3؀Ź.,Pi:]"|sƄJy1Id4,*i㬽fM5 v/2C=ݱ]^%ơ%Z@Z(7uY)%=3,dO)=cbq _1mN<|:Qjluu"4] XcO,l*Z7c0ySx@\r R hB ηƒ*|ru"+-Bع)hYmRq2Kyj\l?McOHf(cMz΃g9eFK.@j @h"Ȭ!r*4~)g.7c_7&$N26&>6̓)Yy*uѕbU}iѤ7h'%z)A1Cd<3ga#N9Y>r'T+iQCY!''1')'\kY%^*^zusSRlY@|ѴݚzIo#n<:ixi>? F @Vo=vL9 3*FY%\Hؘ؜6Uc[R(.r\ z kӴZEǭ IDAT>=w;E}ĖՓ7@j"@hldI_ҞysRZ*-biXBcccsRRs9kpҐ%ĸe7YtQ.VKiߵlD43@9>Fq?_Z 4ГY9/ܧoXg z2+e|ɸؘ؜6_jԜ]%%$s-ZXҰ-z`Dfm(rC )ۊ-gnpr-(y/ƊYc o)?eoD\hll|K`č mp!%rȬXnY{aJ?Lcf1"? =-g$Zcg\R鷞t@Z@ߺ )|Vz^|j_WN愢Adq b-&e9"DE^RYa/{󉵢b_71Z[brCo>9,5%c{I핻 YUd5KZ]KbKloUdp` RQo5k 5PnĻŘ.wAH-P - F:!9| K]ٳR2+HrRzB]dYp,n dz(G,5 ZbȾ gG2b0 SÌ_rw9"o.9no~h)}cBjE"Sǎ:W>wa2J۾( }BÅbU>zUE>]j_p )o kss;J,),wIjZ@-KGiNXJe nٓKf:_BccdV()'hk5.$NEVy :zK-Ǡ&%2oO,4TݐL>r%e鷟Zzۏ+\/ȓ95'bEOo؜2IBKJ9Q:*z%jHjIloIdr1o"%,՟u۾,r8ksL-%R ,14%joJlj_{BƷ9)2+Nu$!#$.$ϴ&j@ ` ǮR1?De6^ܮ }O/s@ji =FȢ屢'7&4CqJm%F|ʬ8DM*EV[d~[sq"y뢮c}p^EP9ڏk}-24d'ky,93zBg*+6z R X}w! /Čgz>59doLHdlL|3+Daݒ\5$jIU8Sck|_+3q? Ok_NM|M?^M [4^%oOt~pM7ʗ%tx\=ąS#F".4ϑYCְŹ8ڂ҈Ƌl]l}жь}d/K9~o{er07f7i kӶjzEZT_loB@,J2I4kqޭvc~Z-CJ)Be*7eL_䃄!b$bccsRRs ښ[Y@d]v!.͖K)5m>fBK KmH~lă @0wYsubeVXƧ O)-8ΌjYkRH9.J\it-$Jl=ҲM)Ԋ'^3l+g0q8&TMV~’7 @02koĥg\J,.bOFSNN jYGt]>DΞXk\%[6BM;7lG 4Nryv0o 8N48DOrq}sX$$d8v jYmm 58HkkY9rڢB5 0Ϛo-QÖD4iYwJ\Y>H,>jY1'"+Ef^OSZvMɳ/@[K"JCϥ68YJ9cد|QRox FCvƅ,OY׮]ZdI86>VfŐzu[Ȓ*>CȪ `[(J5txɾ;+BdYL-qx =H j3Ju-+،=~{֫Z -0 3\1Ƅĵ1B8iJُg·ٛȒ` 2P =@-}PL릦t짖ؕ r, &h}dfK&poz/5LZ&!1,+*bd\BbBBcy1!$D^؜6/lk"D-ɚ9k/*klU bkrv 3"s7y+4z^xi}}7eAƌ+.!-{|,D̊)&w^r֊b*WeVΫ5]h/C q/;[|A4v` zAc4=ele\ְnҖL-0qxp0i8D\X~n8qSr8% ARql]dch]'-rPbQj weAdyl~H|Nh#3Ў᳴&Ėq~a=NK-<$z?=/ E М\@f䵹'Agp5,@BfIJ"k@q_73;vDZة c?dOwgy⥊Z-c`Un7lpbӓgxH<B yA+eV@ 'r<;?n#!_rJjJSd|RʬbL?`do%Yta;Urjf_:gYy7u/R7o׆F@h!\ 2T{iRcCzǷ.w\hlL|lNJ^.^%]j"(yDf9mFk./xت[=< Wٷı!`7P[=5/ZDgl! "!\"K!}D6 X%8ޣؘ؜<f5kڧ h/'9@xѺ2 ;ȱZ=|^P ՓO3ǹn8MNm굷*vEu]"0S @hC.sȏ屢'߷Nh<퓌S)p&]j:U'̥@T] z!9_n/[O D ",.*b3:5_VKȬys?Sky%ګu Sj]6nx`qK_ss !M"$r )1N-pE$[Y hMmlMtiFmĐA-',n̰cgO暉˧cvhl-kL3oiAjWC &RcŮ3$wغ)yWhlL|JNn 1DzjXKtd64^\K%aiۮ}=ihUv_~81́]`яz7m=5WgmHoO~չ-`[@hmݤBRy}c|zH eVCf5=W4D =qUj~mN@򇊷(kF~Lo>;m7,ޮJ68Z$dQnvFXrRzWxI6/ZdK##߮DE w5W"j~hh`_۶Xd#z1z!z:V2csy9=zUoM v8[Ԋ0Kcet=Ɓ n?.BPPZUKuY5SLj B)9rDYHtc +~cT&0/k:>4mC>v@2QqAk;+ׂr*|%ׁhY[ƪnsm2SRyZBkc>8?[Ju)wؚ9y{6>CgCjIPjj']׮_BfiAp k ?k8~o]r&t; 'WLOdgn;$2}:/Ń߻\R1_^)KRIʝ؜T#IY)p}A$Lښ9sN]ln"m`=~li}-YY|_ a㦴g?LofBheH_4;/b){}8fgq,.I+|\"d[8[*3.&VJD8jY9r\xK2ZGE=?ejL&zNs3^YpjޕmYKMEأwos[7Fxy.:q}ķ9ҲFRf -\)>o}n-$XrPj`[xjWzU Z3Ry2Ƚѧز)3*e-ju^XR#ԲoKyW p|2+Vl gؘ؜a>gdlL|[)p,\"+'[YEM(h7h}!$Ǟּuj %{:deVOd >(C8t]|==(h0u[OfXZ+g=}.@?s1},jY[Y1ڷ@dS=GtBmj;38L})lG\R&(9neXGLx+5Y1Xel.-,!ś)uZ+)|ƋY;,uccsRRs|N DMnKnU/kj:޵v,`.Q$\Kk߆g\ڮ}j\f,ڢ:-= %߂imw'/%-!@$eV8) ט$^h|M9!Y"iڹԘԴkOKKMHQ d¾a;D^å$ԫ=EtTYb,?;e/ZԎqZ?Z+k7>/#_A*@B>p#1X8DٕȒ}"=^2+YҧV|a4?jgzdo6wh@AP:N kL_KPf DE\\fi^v,O.[j .N| P =7__9)'ReVØSj9BccSrJ\r.=wv19Dsoq5M a? E1$٧}{| "ùs{],ekjךu".˒[%˩ ^w ֥6wyZ+Bked"kX)ޤEN) %8r9봵"Qr^H,)hbڷ]{N8Ѿ-Y{Ȉ, OCWá$撍p/9z%:ՉS筅s?2"R}moIjyZkBbKs&[]J,NWvl/jH戏iReV*gUR"K̯5VMusa)_Rjԏ+EvDUT'Re/]ł=4^6 dV)h^X~v]ZmOR_}=U)7{_o1i㤅%%%'gNJ^3d͜)jY% h%5_5l' oXJX!Y {9~6-bCd̮SK.u1r *dr!8SyK5s,IɓYmDl_J"+/ƔCfFˉ.:"@}Aҿ}h5h~&_쏏(C78^Z1ߜ7S"N>R+v=YUC]?~ʱgA^([ m8QLUCZfRJH9?_zcئ-OC4Jͽb@?L0= vBMϗaaLK IDATq.l9peR+.˶ ^ V'6Ϡ3~4V 5!j ijȐ1 5!C׷߹i h3*UfQu/%R_J},^\5Wxk{MQI0TZc߆xl5ݲAYuM@ ghd=+eV;v  frX} 9?mNЪ;{;b>(TjpHT"Bm ؘ؜\uzfK"vWDzf1Qo͟=lbe^jFKrݘ/APo;VOj-Bh9bRݺq F *ՐTi4 2+ؘx;jH\9D?5ˬhy4J}0QBz9&Fr4n+|5`F@Vu2L4%N?;KT:;nE)f71[%q;q֥n>Kܱ 'Z&íKD˧WSjkIq|8><1yҥ"H5, Br Mz=a^fLOUVFW|iCE0cŚ.ŒYNwhPf?5+Zp[zXZVX8P-'b׵}e/[YkY)DZ#U/WPl-J ~FPMvD!k"k"uNZu?b3N-hp_"ff:#rᳳ?Len;W;3k(ڞ~/ m~i*4;+a96㌋O#Jߓ\Gi[j?z 碦oIDդ$s/;~4{kpTݭ}nV}qGmdο9}!ހNq: hn5C4?!ӾxaNko=Rάq!.% rȬޥbSr89@fsՐ']8_*Z$+{[>簏MIr̚Y>vhF3'ud:-6P?{ iZQӜ^s^~?쎧_{bd$ON5thDVuc[W, ȁ[X?NJKrʬ}[f\u&r}|pSƙ2/%1?5(IIE2 >i?(9TY@@f4:)7nT \n[9?syjl+\yvS7=Y5Zfx0{Jj"}Qx Sh/~>QWsZsa2˸R.׋ܗF%O4.\0/˝6\O̮m˺Vw---Ѿ͇E3jKJĈsQΤqHJ "KRe/䐅9(-7ip5`J~X`+N˪p3\|[Jٱj?l0t d{[fs-IĢsL_pזIL)"jo+y0twϚΝp`Ƿ[FU>й-8&6vwpE"׭|$S{Xk9imZ[~m~.CC%{HI=pȮؘ<|Z񛳆D-zksIRWڢ/Nt^6ּ}S/cdYln~Af4/a: lǗF_{\zs:1:,+:5M=VƜnA< QslαDGjτ?n#\DlSn@:"NϦ7dGz-%tjK Cm.eko&%q!yXZ2ƞ8YB_ϦdCdZ-`E[uM䟾Ͻnl,G{jSH=ei [l юRkGƴF˲Y<ķj*`Ʋ4#/(߸!I+rd2c~qT\HoKI]q4pL-oƞ80TudەxwX>MJc2 {_|ҏ3ӱ ,2a>] )̼iKa,<뾹оpGnGz2oFgǦݎVtmB`Va=gg)!5CdIps׉[fRBIבvɱ(KKmEcO)m{@~ch3ִMEbSj-k"Kv?[~ ,kE-:?PC}~ +kfW,-s4o549оU!:OѲfjjgN Z[c!:zhN~!n=TVaF2+煱pHU%eVbNJMȬru]r94mmY"]"$_4ŔP*Pj=DZ[d-NoԜzV+k)9Ƹ8v`+VYZSYRqȢcӜ ucҎ:+Ctܝ^Gю8ߒi[uUޭkY>2KBdpJI}CC-kY1~bYv5m4od5/"kA-}Nl!)Ҝ+5þ\iJZjYfq %dDVzMȬ2u]b94`%^RXvY Q.4[c5aKmp㚵%zAM}>^OOjL!Ni:u\c|a +{mun/gkt4sNjo߄hCq ;Pb}8zY19)yRuڇ%"̒GS/1?X?k[AbVdzEVl,]r-5}̒CK1;6}_P'k؆B&,x0y/jtz`=5;zVyزNm_NƷ"6٥ڣ7+ɞe.Z ^de_&i4 5mXuvowih2K"ڝW;r3[2[\n=*ît[_ݬKfu=6Z#fJ<ZYpQw8Fc%>B 5kfL W _u4q6(FfX嗀q5t'oKg1_}ؙ3vσ;Ѓ;z=x=x^~z ֲ/zv.5w8;y^^-S{yϋ^}U  {0E ,EV 9eZ5KK 2K(Y7arIC @ ^댧vjX^iecq4[jv$74xxVkfNFg t}Ui3<#5#㎌y~y7K6;mwt#C :Cw݇wx@|f 2}a,%YrRRBf骕n14C޶(Km'_N_JDod׾~Udi%{ۢC f+j<˿ߦ]lշ Po6 HY5YfTp~K:?Oh4[iu,"OjM+{Gy)JYZ]oVc6MCqGݑdž9H3pY5^ֱi;2iuh;N[%'!9%U?N9\W[J,YydnjuMp_| ↮>{7[ם{kzk-zА!sa">SfUoIOn]K+6ϑoefUtm{emwmݺh"ZDc=<Ŀ\s.WmܜtSȪÝmݎhfwx?{cKv}OmΛ(e/v7IBPH&2)11F&lEE6PfDl&3hF5ӷdqΟꜺmܾuNUO*+n47~xʜgԄn fЛӛX_bß1:Zy,Qҩk:?6۔RN f-~|vhɗ/[a`B){7ps1RCܿae.AeUB5_Brh9ƔG! jF p>%Cp:89aPEN h:nQI%+*:BsBS[扱|ZLIƈ1z|˿<jIJqf _~muvmkc1OջP>S+s՟JmJOJS'9ux$߰^?5X&ZABo@ Gຄ$vM; !3" ̂:zIKC-V hFg&sh>-&Zꮄlc;a;~~/N (v.>XC w>TɃ 2Ay;LnWe2@O>L]c:Nd-}1R9nRԕ!"ױ)0Obt~5J\hssWny`l`s^u p1`A݀,X-އvS ЦVcQr9%y>)"ֽ>4SI ;PE8? g3:0L,jIUGQ#aU,Pg) y\0+F_ƖO}c1u9ԎI*"nI)%a֒Z.JB;!МPt&J}a*ak)(9f+8vY1R,8wPBJ?TQ%ML7nk{ 3~j͟Uû`{M߾; .RXeT0+ B`V1@R!hNvl וTء΢!bYǬ j]EF=B/C&"i߆4WKY fS+J!K{wN4w=֝ *V9qUv!t^MC%@?_ck.j 5dsO]_]s[̚Lu8hK6rcݸobٿ``n3S5ɷ]%g xeզ߆nθy3PHo[ZQTAVNn'[0glZ}q3=3{8; 3,^$'w>,]w;t%u<'ǵ%NЊ^wg)63r}˪CM*D5嗵1_ǜCdM P )]jR>>)-V@n߃fE7l21}-;}b9fz6g}R?e+>Qd]WO,.~/q_g56j˗,Wՙz t[Ҟ{^Yݖ,`  >0K=#Z.Y|( ?t ]}0 'cjE_?6ziZ};SG>M/ R#s; fMWFmwQ`Q}5[}We}K?[:o+aCRW"!CV-?7ޜ D 0Yv MvtsfuzQ ɩU+=P50(4S>9Vn6n v^aډ -FT2V%\\ P>/F;Bά@!ZsU"iNӊ hE/罀M dum#&@V?w{^8NkY_?`;vT)i6/wwYo}yK65Ro~ta\̊o:3f;̚9Ꝼ쪔jYBg4zT:}oo|sh6="1W@Wt *`U ;t Y=,xefo"Aɦ~ߙmۇm?UOr}O}c1GY fŚa\mvQT,3T^_f^|]jJ޽oL`\xB2qHKy (`^JL-f.fՑlfٺ̾yV9̳LY=&p֖!^9W4z]!S%'ֵ+[zao{=}r3vg;{N<xsF ~8mH]PbSm<,cb1GS$̊`֔Z }MJ/cqD󇁵_J9wkugM- Lkpmd2+NE~} YeES LqkġRU1Cש%; JsYcwzT1`f9#LʼnkIA.uEYansZ#uPPKt_# 8*TBYUrl+ ȥCB5[ڀ@EsgłYs_ bc)뛲a֩X.JO}W=}>^Ζj=2o 5lR[BkgSf0Qc)Ѭ3O_& z]QUMq^xgjA0NE?C=.^뭭,@ tKqάi7xh>񧦂Z{hB*TJVU=[J\- V X#PP6&?<#Guڀ@]~5S##~K)\b1e}S׿ܧvrYJO9(yK/C{:8x|rf)ѻ"WZ8|nߘU\nutaZjnqd/ɝ]th;H&t?BSN4B-P%"yt%9ˁVB"R ԤKظMvhC;&rZe{k*TgfUpeU{.[*VQUKg:cNͥ5N(0k 'u2G̊_הuQwJm))ɔW9}A=%^ G.q_7}oh&V8FP}?gammfb [l`\n=R)nW~p2n&j$tBcY{8BD)e;1|\ RcY>HUNVʥQU%* PZy8>{A8OG&fn*^=qW5rƘ#>Sɲv(ts˱#fHaVJȮ+]h C{$DU =ܛ0J̫%rjBc :Tır9WW⣧pZ=db^vB}aWX 汜P[ssTa֚΍ѧҏ!b#җTG99AoTC+g`^m.JsnfG]*s00湴 =T{N-rv0١swj ;CKl /JxQĸxri{8;^v"p[.-7`L\!Ecz\Z/pY]/Ys5%.zsY4̚J91Q*~vhnHeU乒-hPs |x{K pVxZڥ Krshtԥ|{OꠛuxƂA?C.b?&<Z6bKdź}Ysh \U }M]MYr.& /!2庳2R^<(rw:{yԕ$ci@c4`e;2 ze)H̺Cva]7 ;PU\/Uٴ =gri;*+d!+[ʑsiݾaQG jCa֘~L~¬X -K:pL>b%XOQTzYK) /nSs }誜\D/v}?ǀ0D"N-R:ǯ;]=Q~ïal:jMs6X&gde򦭤U/~r׭E]0eվLwpbAוglHȡZ1P,Eu ^%]/uhkz軴H ;h1rh\ZڒsiɶrآnpϚ9ATƄY}9jߘuLYxr\s?_RorgRC }\C pC ~gOz􋸽~Xo^~}S= f}]b֒xV؊f`n 5PkūJe!~Q6Ax%+Q3e,Q; GQ0p``W.-u(S \.>{1(Ztq*RY1)׷}b)[s|FmwU}쪥Dzt]K?Ry>T ?⾀Y]LԶ1>/|X{Wׯ|o7pn[9ϛ|_J.chK{aXB ,eރ0>Sp{kt L1 ܮ8 MB/=vV\b>rʷ+t=jɺeh'haZ:QV Y{r/+Q(eY*PV%N qƢc+gsn\}=$ؼ/_L<6HYlľ]=5vc1e}Mm W6տ5ì7TscYʥs!{O_i@2qpdŒ @m60Kr]ZQy^WEc ÄPRBō\k #;pޗ-uC`C[MKe \Z]]e؝DmZ dum;fa5ȚKkY15q\7kKk۔zҌ{{A\H"1_ =:D*w{щb6JpGE6/sJ8aX~yףeɗ E9k\]ZZYadNX:ЄR7W8 5&!|UsiQb pL-rCuP:b$9|rY}vo_ j5jZ5Ys!&ևX P5:/Cd<kYcʱVq\7et*Ko۔zgO0N-qg-sg9h}@ 0.]Zu:Ϭ:اEw1,`(F |W=48.- i9~K]\Z~ՄӍҡ5Q;,RP,QU%*^90UdL=(,־8ٙ ;cw<a!z@~4m.ڀV@J  N^W5/c3ԗرƀY1fMOjJ_Shq.~NҪvÀ4КuJ3W! bi/VK|QM"ҏꚲ%H6اXSCRJp ~}W`B Ywk͹Gl^49 Cl xK:\usZ^%P;%\vT/U2VFmWERw蓝0f<*%ٸwAsȡp {ڦohzhjPrN"폹OS:gł)UaWU( eQڡNS=<>p3ܡܝ<;,P%rjW*U(PB3v`P_.L#Kr̚ LflȊzw6xrYk8*LƘZ\޿Jt?>zBᐺ8Y:6[؜~{{S[ ,=z(d 0K$`)L0F 15ٮ)0%sN`'8a@ی'f!RWF>LJB?Zš'ʾ\'X8w8Jeݮ$w;?)^<Ǣc|Kx x ئhܚv޴ࢫL4n-S^-x&ץ%aAإ-eZ :^UH ;ĹSqgD03Yk^t&)t2u҉2 IDATZUU Gg E,K:΢Pk/Kp{8eqrDYQg•;T Eh\"-S.>{^4<"Jfec f0kĂ$S9?էloY?wkSj!߻1mY~~HPCuWCםU4_5:|`D%gX-08-R{ᮠSB9oӲjkrnP9t.=4e6V+GƼmJ/NNj{R.pk=΄q5PC^" mGk¥%ria{n3rC;A<#cO>Z%jZR7!Nem;Cv2CYC`2uYV*FkP`QϜp2;O~v})YfK0óO;!(wrhY|R4{5WV]kXT%~ Ν={<:n_owO^g?hnvʣuS6s <}%ꊖ6O~.B5`CKIC9)Z:?Tխgotm[MNϛZv Wa;K$ fNsʥU.N9[+΂ybօ{ߺbYC(Bb,%!~kYSsh SXJ)5> ѩKDp} kU|ٓ`]{ki>05+`Vg@K蹴B-he M٦K7jN,=\ZrK.ІY5w<%:rhݡ]OSKjCrC뎇*H-9l.-?YiwVl̐Sfl3>cTuYRfMSperAK?PjcO?Cq ԫGG̣E3DOroӯ\sw+)0`˾m. ]ιvœnqp00(]Kp3&I(!sz` 3ppٜpԌzCs%7{~ל ¹kZvhL7 2uUU(ȣUT%r(QGʝg)Y!G`B;q!Gb($ԪUҩ%}ƙGFh9rt=qdZڝ5'ڡ; -hjG֜iaq.,\;K?OEk8'~N_<u`uIs98D]Zׄ޹ەUmz(l\N"Rˡ"uYqłgsVfg:sʒP6ϥCj( ;,+.#]Z  rhYUH _օ*781?o.Zp9?SW X`)a1ZȚbѶR#f=S7uKZ]4{$u4)es /oׯ ; i-vVcZ'ͥEȢqEIfx6u)mJӖޮ,J欞 ;5Y(Q=H.-n0K#J^ O"9ڥ%@ʣׯC㡂Z4A<]T-|.Z8ӏX0lR^퓂+k/iK\0sYӴJs+H/C{#1 sriNեEc.-<'4R 4B-U>Sg4! A6ݯ{5~ٯ]Z[dK5*QKN?K1ܾaP''9C@-n2xS"}KT{g1 юyf5T$%w],~^l +H/}[ZW<{JKl0>Ҳ *NW[Pˀ:eZ!^C΢7ˆoxprCrKبK˅!tge—ecYXwwݥD,b;w;,cfw6I采cRK:9՝qKi6:ޱ0+r%fM5>r nl:Y2D_KˍM w.Բ!R͞Ɂ&j[-ϮKve@cY pFs xs2ra~]ZܸP(riUwĥ =(G*9N0„w;,42PKI KB':=H?H]ue0؇a_YKkY;w6S8]lT\<)IBz!Z=Y;ѵ9j{!(j ICǝpH 5C5sO-5k%RƚU }ާA6-do'2vKYƁKKJ$*P :T.9ěCrvi2A&.z17Z*1l߇:hu{M9'Yuc˃Z&|=T,CC-P%4?tTFt5WaJ-R縱朣rC!qi)RD\ 2av(ȡU~ȡ&ZfKdV-j +ꫩ@VײKSe%oKm,j ]הu.ц礫SkWT9'>/[ Ƈ% ꦜ3Sȥ/j(fHGƉe94"ሜBx F9nwhsԄ6:X텃nKץe?*5glU"PV!EQwfi:: ub!0+a?˕K渀`VK }jSXTTKD/c<-p SFsڒT%|XK7@r>G0=.&]Z9:ЖVp!E l5skjn5<<7:ʇIu\5<:B-/qiɩvmms)@qjU(*+2ANBOu4̒K.2,̚vpaio NǥjY1fǜSOJs&/̚G+9kzߝ֮F~#|W787 XKSߺ[jPФaTf߰KKcW>>g,`KUvg!ۏ.D, ̯0MajIVv\Z^LOK}`fFYUŲi,Kk@GYMu1 R"feUXi=kY}iˡ8g=SI8rΤҏJ}r\zd]JAOM8z>/$s,!S>9 }HP˸{(2uqvid g1PWj7\7Y;Ԏrg99n49g^8zX.:`;-*ɝ{w:.,Y/ʕ?0Nȥ_S); fŨg֛ Z긭6m0+ͺlN)rar8/^mv9ғԜd5\\xƒ/ڷKq9\ܺt92iT( p]/\ng zYlc琻תsLssgY0ݧ՝E}1Uqgzuձc͈؜C΀2Чb`UDaʢ+ rE1 .Ҕ?Z "Pк! ;$c3MfR&^3.^Da:ZC+95afjYiB(\ar㜊p?p:oI⧺!s$Rw3, 7y2/o']Z-кebmU/39ì%o/s~M o̾m0kZ-}z)mQݿL~Ne5~yXA 7ԲV@-hM$uq - L蜗SK)rnrMKK͂@t爎Y!J/`h^Rpeϣ;N/Io8w8VG=T?>4P¬4{C;:eV}rx`aZJŕK0k̼ bZoJtdJQa'6[ U^-C*K}C x#W.- )x4;g4UpLRN-0S ;-8>?K}#KSZm,"ѴRY}Ynʲtg:ITm#zovY9hy]9]}J~^h7|abB:nSn^qZUtoŝ=k&dTe D:\:ĺ:E!UyA:{콃>jhEZXd;B+vX%**ujhN:%BY~2xҀ%0Ѱf7 `M bijSrs:eWVJ/ʿS8{.g>|g|= 7TRyfөY\&Eԭ}T|ZdҍBCV de-eN{=oYkìv3U!z躵yᅐsR9M. "w=Plљ1`p\Z6&~/+P;<UZY1 Ob:!1 -?tƬío.`VM|nR}EcB3~_?{2}IN6SWM rWn-2-nRrD_ Ufyyb`|jh`oBPO6#$;]rsiU$uiO+~8jQ/oXN+GVC{.nv=(3l*f V _ΖvTTUmv޿Zh w?/֦Rǽ[ z#:kGpM~v qE`\YSsp TeE-eIFFP:"uuYn"ygC]T,c8 lp%Qs܃ IDAT15>z"8ɧ @PQ T1υà 30=gz48 ء9mz[͠_v$˰ h\·󁥦WW[/oqxyg/:&ʡaV$շXPa֘qUM?漏SR8Skx5>fG]ĭ8c./~c``66NxPIu丫& dK9DV>-hPȵe+8 ,r\Mk T^rG(K)qdΧUq.naY9KyC*E}&W0Z4䔨cء)^rFVкSo 5dcƞ㼧XwS"̚CK¬jЩũ7q>|~`pƘԜCP6?$juidT LylWYb:ǭ%[z[fddPt[g[ k|$̢㭏-Yx-?[@J0Pɶ*JH, 4q *0!@!¬ MZLwdJm%`+0ߡE|SwbjZpҘ0ky/)sާoߒI\68Ʃ[k.t M踪rᓯﺳjSBdJv|o!шj{BN-Ƶ`P6)ݭ[ꭲuC}|Gl\E8Ɖg~v$VVQCGʪw=4Nqip,p?9hOS먓8ʇW*#"C"j̣e kEיL&޹~=Yk=@+;+6ӏ) sFEl~m0k6RjI)SᕫSBczppMφƶH_Z~rZ,`d *UI \lhe'%j0zjǂ޽ф0[3 ?*x]K Tcy~(ūR'#l%`V,z)C 2t52ՠ\Z7ܤ a(ӧ\߲c_i=kY\̦ؿ fo3bHpw7J*V<)q.1jZ5^|Fc EpX*n-h/Z~,eQ@rZK|Z¥uw<,Qp$nf-:STsZGT(?ˆZ;^.,hyd|8|N1txyPȡuxńYS?VAV76*&\υ\JOu c5Sc{if)uNEVŐ8710`޷ߏ@/ l.?΢Z(2cmu::\ @=2bH닸NJq{"z^ZL}?i.@!)XU^JH$\2\@!Y%vء@Bd/taI-3~Ze1Ź{"77uN};#s}勺J;n>ᧇ8f/kL\S8I6, x߬]k ΁׷n ŲϯAeLI5b_%UWIkS\0mV,O,\;T[~~;zkBG'VK`_>F=w8nء}R8tQRͱ%Zq'Q-2.-8 $BX˅a~ءE}yV@!NEM}`А?S|rr0+ d/SYsj\j ` Z,q~<;G[~~َ?{O \X7_=v̀PMN>-­.p(̦ZtY}@VhZGRH_$VءʥN.-dN([G;V.-"c~2N-ho_QERQp65}b_VI`V[i;gCŔ P"hK/2szܵW?Yh,|ݣi. uk"]YKEì%΅ν2Fcfƫ[,l7)UIef>Z>تq5f!U<hE H1 ؕh5!,2h]B1qiʸ*RPRB-në;|t@ 9thU4;7RI8eX.Wj [HӀL`xxG17e>vnki5t kte obh9_&ԗZR5< 7ܴ9>iCB9}KpqrjСpa^RDC\5V'2ZYv=Xgez9GLMܯs&\Z p*[D~r8 PawxQ1BBмUQpʂn3Yr)O+7Ę?9WW/|9+[͇7ROboYKfH?̚WKoν1JVi^3>O7QY&oR秧Q\ZcNIB.rP)+اo5S_w -gTEZD~\PڡEZ[K8TaUҩ%#I]yceZn2xCZGВ.-^1pwhZwЂU@0% v CͶ<-вY_ń()uj5fsC>,RŰy\ fͧT{*?k՚7l61|ٖRZJԢ. {2lѝIަ~RXxd1 U7A$e<,tC0yxz!G G(ɲ Yl^a /e?TK˩Eߣw?^Iz¨Km"Cs}<(ːÛo v Յ!ecߘuLYRm)>iY) > U}Mk-pÓC܋%TR*ӯ]'kq`t-Yܳ~rm5=gQ/w@,Eh!Fh3V,}!BZ2+pÿWMZZEb&Nf 57Ʃg~Pl0^@PvXhain'r;BcjF1n-߱SR.-zXC*M =qnGꈒq%J>J07x3DBm%~/2c8< Weкe0k~Ul/vS7wrYs)s">U}^2+ 7.~uَlZN\N4P8Z&I<0S+@-X\ )48tY{"f :B~S[rg)9.#0^PbZn-$*veb5R-IT \WN+n]dZY&ru3. eء0[󡞸qrgY)ml0kY=T4Jʭk c Rw7|>^;TPUI3Q@-̹Xݥvez0DHŃAV@R PKt_RC- rCy\j*g@ zX"VM-wkcG_xQxTXX!}~:!޶%jR<r9OUr~%a̝4w~NP+C+| 5}&]r߮ضb55X[rmQ5i 18R$&_O"_7 O5bѾ}`Fp{zQ1؁{vmaRd?.Յ9VV{2kMbZ(/Q|i/JKh%#ʣ\wT$wC]:oZmbZe*Y9n>lS6~Sԝs9׹r)C5/K#KG9uZqX=|.Pp'_zlJEڮh/+arN:CoQywp*M9mt>Ը*ÜsZIJ 9ceLs P8 T*D`b8ˌqpVUL3$VUyd7ZOq'p{6uɱgc(+?9s0+q#7 R`VwQnsUnI:pŲ[+=ֲmNV-펥p/4lkGٰjcu&To`-ows*GO-^GAriU&U I2 Exqn.J ,QZu!N!wmcf̬/!WZxX0+vC5EҚaV dt=7ƷyCsUE~"G.>ͧτ 6)^~ܾe;r=w `kZ:qW-ͬZ(Vhs냛B?E*GGB-Nvy;Q-; 682O @-*eeX肭*\Ite)f,[ӿY엪,?z,L*ǰlBZ fz!ܥ5¬cJ5բIUv޿T[V>?*/=?Y^?M#Ű4$R߯= Q_:}- 8LM->/jEdW]F'uBslaE%|VUQ@D˂Cڀ$LTw;,ԳIZOtȬG7 ^9h,}C5d>ZĒj XEUG.9|6o v 0+f[6;rdTZP@KAktM͡nѣ{N*1|H~n]ZxV-}_mbvؘvq}{Mu"(Q.%3+ТLDn-(RVUê".nyg9N-jCyRgMO~a8?=7L0UO.)\0ksiRo#Ŷ۔rߖ6't"s' xO ӇnZp=}n,-vj[VGx!n-.ϵ5eyc˞uar˺Iiޘ]$][:99*nT*pkUSiGcb9ZL OZ*3L/G!*H1Xn5[gN|y݄C+n8Si)5NfŚǩǜi;465uvn(ܷ9Ӊ̥ 7ѹ;10Gp2 \,-3eP {Tc}cjQCNI{PHSYﬣ9̲du˧~YĥEiU9cK:JK4URxݰ:w7,sccW*)|rBQ@&E96JzcRv C9RwYRmJRG'6*gO9,o,ۑT%6ce5-jۚVp{ѰKAoT圥`_Vpp˄iD7mwA,e8bIfXC0q K ޏ>Mά&tWwKt)9|!V/0pep;%aV +ԗ:6RjI)ij☗։n;nKNMJևN}Rrָ(0/p}-aS9ta șfޗ8,HTL'g2O:DHxUUP`YA#Z(S2P{3;݂OWCoY`B2?;_Zba0kI0k\w0+s&>M}NpHw[2:|^Ԕ{(Gb9j" ~>(&LWsV,6P٦Ukl w֩˸TC&N-^A;0*#$]ZvRx^/sv Fc楽N.Zx6̊]C+s:q9p.}ύ`VjJOv-:pXt.ONu:p9ȬvBZ )׻qjSvܯmPP+L;!TpzHJ*DBs?"TaFĭb5рDf=\ZdcfGJkYc+k ѵ\ o0kLIOӉW ')OU9m})CN@wT37j:lBui$ʝE\OrlU2Eae [KOE1g1k!9|9n~z>%5ֿuLQגm~Lm0kSiI':5脏d9iiŐ\&W}B:![MY}u%_s\ͳ>5G0ɣ%Ewsi;Sċ c`@QT &_39YJriId,Ӳp:2mlvhY1 foڔ fsYKWwMUj,J:弦Zu:c-pmyk"aap>̪ԝZBoQ_è{<4fk-=Z;lӒ3 0RuUѩe;ˇB7[8 ;&)Ԃ쎻q }}yJh]r?@}`V)ʎGfc/kHp/rN̚V)e~=1Rɰ "OR\-~JxK`wuYi>aJPYvj K j`rC5aUVhbM!22U܇ZY5Y,X.t^ƫ0+b}bsì1ɕ4MsP9;WR9Rmi;V:>W{8M1߇)ʠ@-^ߓq}Fp:N\>0*B-{X r4A Gɝ Zvx[M5f.}Ȥ>IuM`$f̊>K Pi-B}ȩ޹_&ԗIh;fLǏ. .Dnw:š dEKzfP1^ :ESYZCẴÅZٸUccj0~c5nծ-8P[ni% ?=ĩhIKS|`V<dlN7Cҹx\Ƿ6p;kna~#oKZf*{-y*6tu*Pf?PE9ZʡnPɽuligY\?sC')zs{ˠoN+)'Oh5BMui) I.gYRXshM0+J?j;~Zք^}6O1}^d_NFVd]vЪY0wYS۵S¬KŕV_vsXKT_&ҏ=hOх>ϯ/? X%$uw/-[|g!x A;+劊X5 ڠdA-deR)Pfpj)0PmʣetN_tSaoM_n>W3̊ JT*0kRYSBH)NJ:Ї!ʵߛڎ%nIpn}4s֡w?\@uNlbJ1?ILu1o=Hg!SA@۹X8bzYƙX'C>AQ} GC<-jr/9ϰ!8L9Ejar@ʟDՔ姪#VkYZ>J_]tڪS }i@p ̺x}:)m`()`T8#$jjw@\5IwW֫r &` Ԓ%&(c,pi-98L N:` S֠1Xzm}yŘJ* 7oon{Y9ױO<\tڪk>Qnݴi=:o:]D8Bau>{9&4+f贃Ҝ)T$'k$,(kTdM+ =tn! )T!&}4sPyYMiZ:0e50cY3uum *λkӦ9Dun4Nt; i,J/GtwgN5tjjUNO 8T͉Mw^kUCX&U,1⮫/#~v кFc?FSƒ9`V `8VS?ԗ&r:rMc8 Z?y='98w5G9C`kՁc@zԲVyPK=í [viՕh:d5jP׏ۗ80JhfM1>suqZܟQ?w;Uk~oluǹ\ TMtGTJ A`keJNrNāZPЭr7ǖ ܂SƕUjY5'۱\Z-+V R0)5VSV _<r)?Rѷ? 3=~cBC:ϭSh 0ffhe݉v#ek z[^r j' 6`./ǺoT8v-F~S@Û@b1̧ Lٿ9o:r-C]ۘJr8rcLUv>1Yǔ B<-uA|OWc XZJ9JF)So}j}ά槹tCVmEEe,ud)~XlUiۀvV CZaIM`SS|`V:h]sZ..SX`Vmi u1L9p-Rw:goLԪ5@-1:ݛ3B DP+pC-ƇBԂsX7 ?Q+@p1OZQ YS@4f- Խ4U)^8o0k\GW)m mjp\~pRᆛz)u5 yZ:rM_e/@-|s]aН傱nP3]e~çv8Њn$̊9\>1-;f߭+/@s^ùFWXܷ9{oS\ 8*/=-s#MS聆F*G?{ouMݲ̋r,9W(^P)*yKJh[I'"9݉lQrْ&%KCm $Ed[tH9qpl>yϰa㞳o ~k)exK=7Vg)̻I6AFF~,juI;0SZw 0&w1 ::aݺ\uПj?_c.lN:3agGIŢv3C 2/9ȬeKY* BdVNcѦXuGHd}&+6BQEλ uY [4Z.Oť[;ͱn/-By{grbo9H8?(ܰ<}bmiSM#kT$TNryxk#tyH-<Bx2xi ZVK!KZy{r 0_غa1ܰRHfﶹ0=tmBPM'8O&Bzd'n{ 7HbϔD-$t&$䢶2 %F/(3j 1'2?,ޘ!K,[70vXZ}sU>԰$)"ʑelYa0LŦȄy4OZ 7| :تlBva j In"IjXD%!RYDRK5xYMZriOCɲ2yjMc[&}jp Ve %{J>Yyi҃afDfgR&_{xd/-mB4οk}Z2~|c7-_ranƫ+hPđZje{iZV7=|4 'K ;Bh~0\*2kB B6U, d-¬Lbӯ=B<2Λ!K)!%ޟ0 MpZ[!pZ2JFlgEZr6%V&o'e/-d&JGl</glKKGlDͰWP40%C,j)"栴ZM5tDgm;bѺJf#sv>%`yTnL#lJ`54 PG:]\ylJSZc|Md1`lM*Og Xzu}#d|>O\H!C]cYMfaq+_R6 +eTlrҎIɬ^<16>KYasPЉ;c3'xp]Eu[+Zxki,uZ])JL{jXXR=c:!RSKU8!ͺ%rija )`y$R? "BjS AfDERI{BLbG(0MB(4N=s nYhcGcڃ͞((Dj%wNn&H-[D(Y{5၃P+@GBSvXXڼlARHS;_j!tl̂jьrgGNG[,SK i7绢o& \!wSk:L$WzUZ}se4Co(Df9Iˋha 2+=0./ ϩpC†wB?Z0 Vr=HʩTHtc&t6Hhi*-Gő[Vyw~(^ZE +׮)sY)PHY.5ɬ %Y-a UilhVB[(<({h]ŸRA o-T0[~V8RK-IjINZRKR zk$Y;_,t2ا#pDC 2&I\ꦨ/5DdaVn$jQmX|&G5p my~!oˆ fZ2gCj4o-۠pIP{Ԛ̔:1,yn1ZBalj2+"B%cZ ]-yeF+MZRj~_b'MT_CW-8h,~v4o-" HlRRkJ}4ZCfkXj衬I%ZVeHшa1ܰ2kJ.K.ctڵ dV bhS,C~1na޴b']". :y"9Q޽Sۄd>w. t_L"IOWU;|-(rn&RK~,i%N%[x*jMuYސvZo7LdVnZɬ!%}$"M!{vvowj㱄64B 2V =vcRkVB!褰C?M*xT/JV\%JY-.F>Pc ZZ|& hQ[&.`O}0wуoc pE@Dgq+]K=Ax5?r)R>?'`O@džk2 v0T2D%eO syEfβe2 /ҡv,5 @0_s m%ѺUi/$}K0l tm!B5v00(IpRݬ XڨrzyB*EjeJ$F.#7r> _fM=f6`[ЃE0ۖ\0Pk/S1/ %N)ѵu E^Zۿ(Z2~N:+ ːPNۚe|:7Ri֥(זMy^2|X}k; ZW]I',Ua̕W撿\WNn:Xec Ei"`?y_~ _t>.Y+AZq5i;=LXQh)%c:ܷ:5l.-"a^\@C "+J_*DfQBfM=.`$0ykc+56`l#svmS:XB*"&v16<"e g=[k2[pt ~-ƥPLY2%WwVԸe*Ed|KNG3 jyXłȬ>'ROwqf%qȓ#Ehtj-)$m]eVg:ʼnlmq4]>B`l.d9LdVZ\:̚W J 6BKUM5M):!Կ q&m?,?u%3A|P0j/jPjx^YY?PϴsGRa#Ę5up#,Z%3Ky䴰,aTnJ9~`CJ,q mQ K3<%EDbz;ǩg6YfX8P{hldHjY3xZQ* gA}%#GV 2WN2+mDfᒏUwj,-:,}چ͞jb_L3+ #N\{= 7ޠ-3덏< _wYz ` =IOOߠ,#{ȼc!hASv8&4rEP2tfJjmv6BK?)dVN"ɪ!TXB|Q-r-sal˒B*3};:˷w`g8~ȸ<گ,ߴM[ k&Jr,%52i-)9$Ms]:2K${ɓ-&Y#JG;FfY-GPO^>ڄnl 0utm i@y(4qz[j>EQZB  |Kk-1PDF߮ o"U.n@S'PiJc\j -ڜ%ȬF!n;9e;m; WGN6@Xҹ3B뵥 R<L38-EhRp?[%bFBwɬ&YKB@kYyŎXm*Q-E2zY }{ N=3߹o?P"U U TCj<~$ >+HBj`!8H B =->RDW,jn'\L!oK%JxLl U#ҧ" "[?< :D}Q¶e`!q,Fd "B>@ l%PIpՅ2r:DN~^SƏ PY&}Naݖ0GW/=ɂ 7ѲM 5Yj؊ @W@p|@j;c) ?U>#[<×Y`XyWNn5Zi >V@dVAIju{gsz8zoYҽ;Z'F2Nx/{1@@|XRTJpo6[0; ]kbv^*nGeYNqTaHqO䮦xZu0m'WByHd6su5Т͛p"kQX\<Rxgr?)fvxhm}8qp/\:,`4R**rL #D"exh,}I&_ MDwEY)tCk* om93^83Eo9<hՒ! a!z;$-GhH#,YLY$f{h~0"Ryg~Q$j 7RȬY5;[YE8Ѻ =)*0J#$֐6luJ c%1HȰrxttRs¦O4)A[u=="mRaMa`McqCӯ lK+sȬvc^W' Oֱ{ZWVsu nnh5c僁̺{Qo,wH;02tuK ZR/LZ|J-foY[V?16hK+)`njmP;Ȭ|09"c}mDچtm6?*!{)C&tdd˝mw֩Lcؿ|^:.:!ZrH-=vb˾PFfy drxkW S@farj dV " 3۷,90Xܚ2!3(suxwGQu~߮L(L~H `,#5~/s.E+h3;]5T=x@*$)SJ^,rAdVyX]y02,![sn밑Y|,Y G;p( E@@3s4O 895S.4QjogԭQ6XY!Wv%iB SꌑejGs륪KV &]Xv-%|dm̢0l m"ϱgyN]އ?4n6#F!b76M-aכڈx6_97ua"]c~tm ^[ӈ2{h1GO#gy 7hS+Y%9#vT>%" W)2kP [+8qܷWzn_:̒ʿ{d̛ A%io:f!xoIFl5@jHEJj\ Ϭs,BCsR̪٘z-{hZZDa Tiے\?ga'xLs3pm:8 z 21Ň6!2Єj !IFH-uUJfhrA7CkƀҞ45ȬZ VJg)SJn-=fOm,?nWVD:liJ71쟵uO=/3[K&9<5 aLÞYp Aٛ_!,ބ3Vx 2COFxzv4VڐCHf(wK%JyF`h('Zj4+ b<}e6}c`5Y[\zi_3/tG\dv^7l'3,c-k]OU61Mh)—&\JY%DfYS &j*BȬ3` ᆙ {Gݾt#3ygaAQb!'fm (5vBrOg>#?çЪ=[^i"k 2k A͒Y0;GBA 7 OUeϒk ؚ-0QVä֐23RE&)(KdSZ5n!:+K#0Jxgabl̪%/‹BdvرndDxcm}X/uRp.󈛂T|է.!M`dMpC1ge1  HjK&2+E+5j AU<0ߛ"hK`!lzo(lazgy\!N]އ݉xnÍc$x0۾ZۻqG OBi; "D=R!]X4Jon˥C@fySFNyt׶!JoѓY4g q}Vn,[@!mOk`wvG;Vc8@fۡ{zNOhpo@M~z+ %LoZIB p(Bk ̪XNl"aN`}AVۘ5n!&Ħ]]oa@" Gbk}#1u[+:8Ȭ!Ԑ'RDr6Z4 B#p-x+=I-]ao-)!'ʏk[qZ/eX2wV{g c%2 |srhä́Fze֛X_#NRǙXU? +^)`5kzfn_:DfpJxkm\& H$#c̕ʲq K @fa"+-ߦÜ-0Ȭ2X\^:6G'nkwo_:ه~N^ɬ?:a+ 3Iz!@@!RKdh <x`*nܦ=XȬr;vFsraFM'ZB Yhrʸ{5{jc k/K+h=j"tOo:$B#FBa Zzt%RG i ֕]Ik" ᱉dV `:4\s֩S}-M,O*0/.QP7ᇼӅ !HFjvvj2^$$Cog+'$4R8U5R~W$5#5Bm*靅=~ZAK.n+Zskϱ}/ga +nh7IyoDŽr։ ]}1 qpCi&̫@ Fq_l}gHZ7܉.Gͳ;48V uh[UV,"hNBZlx .ı6flw:|!/xp E!a3'NԛE%:=;d!;G"Mq`{^)W"$Aʇ&B%ls҆) 5DfG$Vm{jaA$@朸y4q07zBk.xomN 6{AjZ,T1lr#% Bn*̪1b }!Xq@ bK,GaRUmX鍀 -z. o<p>GGf-eCx"GAQ,#4 Y[[ 72okY)"jAYiQu3i"d&5YY8tSpm?@h2:}nZ@  b*WYffΟqؤh Nty!G!w\ԏ-Iڵ\^b?h1̪*Fi3bl["xla\l\ {, ҦnRrg(w~lW@ȃ,| !m>b9lciK%*b"2._O&le0W4\:-sML=~+IhpᇔSڿ|rV>4-6F a_Q-Ȩ@ǯdo8eS*,w "6G0ڄK&Bt2xZH, :]~XXl /]0O0=?5ţ}bӮuiȴ7Lp%'2Z9lCh5"7%&yZ(E .*9~؞JS UKE0C?7vC٤N iY|lHV}7~ \.A xߛ*76,b/0_{ոMh5Ctb&j4jYuɖ"ψR`KSt `(}[f\!U%ǻ;ՉGcD->"؜_BM"lm0^Hu_T_>?t[7-5@fڨEdɖشVY^5Y4Ub$vax.Iqvy8yyN74@BnEI-}9[+5rQ* {!aE'KjHdŖ\ȷfûgY 䓲k-SH; x-렵ww#W>э;-d@Q IaejPxaJ@0wxȁ% EGꩋu >þRǻg%i#㸬7Β&7Njspt4?yο{OS@ ZHoeA1V7ꐛ!֟kKxgmw~#2+X\F0ɬp,h= W)4aWvw;ō2 m\ [9JBb0[[@G+%r53[%>bP̚ "꡶XZ{ZBsf,0Ae,PU~wᆾ&Ca m-s`t"O-**o?m #z:|0OusCͭUsڿdVyS[JAdV~VpRA w7O@hK!V&i2vBˇ)aVsm&FRj-۾t$TYI Xy 'D#Hu@nqBpB .t'Bh+p}x0Z1!g6u\@n=Z wP"ŭ;M0N+d7L dV "yӚ MM%t (ι('⑨O>&61ɠWc+ꢒth ym-axt]١U\߶WqZjY%Q(Q'§3I0{7z 2Ad͖b|EnYd-?Žp ڰw69xkkH!`ܦ67;Ph@ZIȬZWQi2kn;1ΓrA+v U J_9WL"+@|c1)`Kp!n?gIn'pq,+ ahdso bm$yqZ rNlPMu<\K 0~"va[yBfy2/3WLyekୃN; M7˻GiaZP鬯7>YY:<C*97:ZΏrDfՐ[[/4sJ> jp#BJX&g ep=9z魅p '/-z^CVPezP +K7YWD`-Z'0)6ƐV&$ С$OdU+6I\UT [77pB, k-#ԲxtV743\s;Vs!f="&-o3Up$Bm%х=%She]6T}:imN-ubُQL>5e$Hv^.ir;yyp8P6Asu"Mhyh'812IO䓔9˔C6Yj0Gitɖ{I9HHf4HtYfJHId韬xByCygtc=P921Q얷.@աe+jܺmu6h dVK:#2.Q @ѝ@f%0Y+`Z!~vH 1\pêey?w^C''v&@VbPwgRMjރݻ6,7jyIKdyɖ\؄6fGND3%,fSȲF2NqTNj\|!,qE^rIx"Aӏ@hJDՕڸKUI!Y)4Zv,Ff՜C%P:Y̝{!}j 20X2["?t_8yE.sv{gT 7, !c9]3vk@ (I|-iPtl祌ZW̩睅'u}, 6R۵dv^X%n$N]Ǥ5|'Q(l|;XcqS Q|%=/Tn$xi?tژ_-YdLcے(`CJ,=(;,fQf`--~O[MYì=}NTvξ/t`܁=$1}G*TvR+$m!hԚ{kFxk'jy][s]46nRԖ1 Y UkJ8r+'/.$qx&'Ilj[V[A6uKh#eC ;тh#iu՞TXJ;GNfJ3^@S-`>Bq홒\AC>/<͋ VlRl&#BjN*]kWo47r|dm *靃9b'"pAw LIf1\!#B/a#meRD̖VA)UNf3L%Wz>dՃv^ "HTB !:}.,oUC'a%I0!,Ēɬǫu1ôGJh2kGVa;$9A(ɻWu5n}gP6RfȘ7fǖK3FIOGN'3@(РVy5\,ZR-Y-cEd> w L! Tb ӕHyuoY|%upôkvD6 ڋ80ʝ3/gc m <0&-%U{OdcϜ6U Db!A^:RYl$~ZPjf#a5ٿMƒVݛn6a. QO.hjJD$@Nj1 7Gˆ@hiJLĦYm"207^#'-#%ۉ,C#l4ǫv] o|aJ+@G>-oc姒g O ĂlVjclhЪ3%ifƒB\! nzn>I0ô.4Ξ/*e!()FaK;+̲dYv` ?6ކ8g9 Z1eEUZҭUׁo )GȬxW EK ǘGzJ&X?tH\-ya1DWJ٩1Jq0O hg Y_,%e&\/9B(,n@(G9uXL]#rPwZ<Z$20Z'0 3 Yj7GyzBIb"ގT -5Q5<' Yɭ@O>$s :t@ $Bwҭtv+|%&X̅ykSw\e׉}޵`#Aa[Dy''K4jv9B@X 崙cwZ5y{_3/r,7(ݾMEи A;/YD'R !bdRjٞWj)њaW:]5H@̖/o4Båey_-f3OV|V4Q{j%*=/cU$ZIߑDfQ;1$BkhjydVC)_2z6e<Zl?̳h/ěf4y\mV$WiS8B@H,ZWʄMIdVEpLDdV^` #"nLd̚N%IYUsXrK)bg&@܉֌:X%pÊ7-/rk&egGjNjc V_I(2@&hA>:A$'liS]B,ϯ"/g6!WK.}>XK&HpToeP̛kU,K"+puM[bHlZ2wV g |Vio`ۢY@hB)[E%BDArb@!0Xi@ׇck_+͠+/ejp][rqcmDf0?6Bɫ%@KN+1̚N̫oƗZVi1]MMpY-0b˕;_'pJIty[\dRswξ{OU^NM@Yp DZ&Nk;f0ƥc ʦ/珩Fw, 6&0=PnT$ʥrX>4C7 3eLQϢ*fUMؒ:dSژf6Nms'Fr6J[D!V/ 1e0ѫi__艥`$6KXLfXPxA}L66c6r+}+b*bLqdlq, bHH|4 xC e$bMI-k֨.@H_-@Jja OZFvg8:S\S>e?&[Ja,i8H⁊,:.2+.Ț؏<_=$dI.ꬄؚDb;3B{=x\L׆Y-+;.ƑU|7yd&JӑZ⭑Z hbQ`O̶& j #R*)dc}R}i.`%76hbUuIed+eښ5k=hjD= PVb @D";; jt9ڒ3I,flR23Ė[Kj.o'hqNKTPV[[ڠ~"ͧ@ٜMha_ʹHfaX0%6bGNlB!RW/O)(2M6Nd}H8͡THo!ag΄}:,ʸ-֔3 Q.~Z^c+Ab1͑`kHH.Or˛b}x/Cj9YQኦ$dG hJqm溾M;Ucdr"RG~%2k9XrےFS4Vʫ)Nf=gLB ]aL'zl=T`*cؒDVv/:p/J F^,Uwξ"TS!s\'\RQe-kV\g!0l '4B@s *Z5X3C#J#4Wަ&X䬛CNn5؀Xj=bH(]R0Oc䲨ӗ s:#L^[PD0xo-syΚMd)coTqxٿ*` rˇ=ĖHj !$>7I)9l@L3L XPJ9/α× -YKk `o QJ(6*4M02 ǀ1`B k D]E=j[YOH)_Dmwy$f YX{hWpT oi\l֎jZ[\R^'Չ,F ,B89Hf8t| UI鋷ijؙJgj7e^,YZ{c֒BI(S̲,fNYNK&\myà4lÔOlY2UFXV|μe grv'NS, R(LљL-2hZYNJHNnrM$_66d&jԺ{y:JrX;%DܧĜX m`C(0،XJ;z4̔6%ut`>O̷%Y )2 bƗ N.6lqsx%TѼZR-vJ؇zJCz!o$dzEQ@͠Zg~F:KT'&ŜjFh9F5vİ1ClJ]CeȬ؉˜2J,)TXJ;*"I$SY!i턕ZIfi&W?շ}er:ިuɯ!O&k {g){kIP_LG"!ΚCubUMs3ZڙY&HE6"@  NJ_',.%Ȭ:s@dn0"X`9(>Fc!U|j3˙pI̛C=rs*PC&?=$M'|9_d< A4fQMᆧu3!Ok1gw9\fEPXƱwzſ OЙjπ@+ ˖OiA}N\*(CJ|wn;w?e fDI Ǹ@ b1cN-i!.z3WHi"lp?3kJ)fge֒||^]ΌX ,rVHԥNgCM8t֍zkK5IfؓZ]T[ؚh=g a{ia 9XX†D2Z-[ty6ZQ''"aNSWkdVM~n-NP!\֕YV s,4fMS<4Ƹ"nn-I-bsDFׇDc<1$5pCNb 7vM/5OvDW|\,gԘarD^\BZ\\F윣 Z< +rvy\2s-o5.j|ء]=s92j/!|lzcњCjt*URZ^cū BCV&,)twJYrȅ"B;5a/ Jb31rvQy)"\YEhq\ӞkAڹW<֏&}4i2j?3.aNB -,x]=kó % 6Df%[ "քP:mI.V!" f[8%!}i DlzMI9-h_-b!!0-܋?yy:x"3]̲[;}a ؎I!s$$BJGjZ.HL\kRUK!PAbt`x4_5*Z){&9Q>}%Y-OKW*#"Uv]# dR$bJ&\f"K@S "H]Ė% R(A[RKY)3%(| zCxE;+Z˙~r $Z#,x-{O9K%`*{iaE. 8wvS! VC+"idFLIjYvdؘ!2.ԍŭlLdn߬tdGBUFl(Vi &Ob =[|OtI$H=yZR bˁa3;lQµlF) u{i<.'^YRq^}cz Y&rzhL8/-CakAAF'GZ z!.ČRɬ,Iw+D*f1hM@scṔw++?KOfu}ɬ^ĐI*YG=הRH!m >,yk5SZ{/"ʼ3Y6,}tbYGؽRInDz%[$e;.m@j;KC !6ণǦֶP]EN[&UqhTB˦4ׂjidDfG 6.f\U3ir02 L$A#dA>BL䖑zkI,|0{ nXےl 5Y|] K"8 IDAT<rKGl~yo-mJt=4SKОّNa/iȆƋMjR`wiIP9)} 6 iG+%Y*0#}!sA_I%G& UC&֐Y;gBOf1B1֧q>+=?3CwN sJ u㮽l7|e-Z!sm:HsQ[CqJih?@HgD0k[bk^`">t"hF @h 4 uݛdC+;vg&,=&h'l[Hڷ Tr1^j`YӵXJJY|{ޞH7T+ ą׼hfa' SEontCYO-M9#]d=}&!L(d=LW+%N?-~W*WkmYSZ7 t+ԑ_cf?.>];-bز9eT`/'6B,f_7n&o',װ`GC2gH qa)_v%m->40`В_Reb"a%{`My'o6ĸ<\Z\ޘ+xmqYSOpdhp5QZ: ~?wX.؊iNvBLY'tbc7~@LKC7qBK c"5 &g$[NAyb)R@h X&{ ir&2u;U1T_ j<|v\}\:_0ۆ! >T= ;-RurzL%2 +!p"&TbkLy#Db 2C0H%`d(H @)L9弆Pq:ok}5&glZVMB$q)PH-@MˆAЎujxH-vZ}>L`:@bK%34Z\txKN[5ސ H$J MN-93&ٸӢz/-yHNlqOFZJ9&NejF>9Ѧ,ƒ@&Zk[UzdZt ugx$HhJl|@o *jw.θQV΅Yml//m/h1ه!t$&O#t[@f/~M"w\yZ|ֈӘq` _aF_&q̔s%*^ yrMuTQ%}gOw3ul|to Mza1{XYg(~<5 / (n/T֖ݽwcw["%LOqj}\8:t)a]Z7X OO&$_V ) \ a@@>mhfr±z'>FOO!:1'6ȭ"M!;4k-5H&e-v;eMiCyxi1 SkL{e=0MZsM:&Rޑf8ym , ;潶&u=EK87Nȑ[5>xEfiYTSϔ6Pji.IPPM?)XR8=D,a蠙Js 4ZF5@pg{kJg ZGc~luSSY嘗ܢWcb9z"K:L=}Փ[9OlMCpCBjrHp)ld&Oj}cYz1̒d/eK7pt;} YZRKS 7 %t=#w8P )?YJ^W6X,Y~)ĶanS]1(56{Jrg-kXsL.ɴop]LliȬòYlH &3X"8n 9>eħ1ǃ1gBhuQJ)\_XHa>-MCc]ۄC9O6r   - 7\8\'V.A3yr LtP< ~Ei<L,!^ ,N@^ǃؒ#rHlޡԒ#cZv7|~&CW_JOf)Bf\2\:"KV5V?܉fN9U[OZr߻9tw(͕o5 A$BҼoīRKho_6>HՇ9ƢbGl n E@$ >CfM*u盽j@Xp o*d_Hjq%^>Gt2'bCZ I#0x$S SOt q!Q a MSۭD<_y"K2>?kُA:V=\:4Y*&Xw!F7pkަ%sXH6x`-9ESʵW%2FøhCLw$$tđ$KGv -w>{jnJ[ƽX׍;1[7i]pl1qSx~朗pƝ{.won=ֺ?/O}A0`ֺ@fHqfSXDXh.%4U{.Iz߬ vcր>9~L0p%C M3PMb2œY.b3AIgMfpc6\@~C8 )S7c3<9㥙2R`BR Ҍ" pù`DEթ5$W=-lMvYS lȁkiCh.(pƤdMϳ\'YґXZ2Jj19`jhg "X d› Z%[O:hcHf* & <[p/3J=.nDU܉JZ)t9)gV0ˑXsVÜvDo䧀%IJjy_J}H iCmLlJ?oJ;}@}1}p2ȵ[s"J.sJ-q {[_6ئ̨eY`}T(kⓄB"xi)L$HP0ekZ gM: dHpYH-TP->$⽴d,QN91Z}+7y ^9/(!ǻ^7ccn(uyie.Jf ԓr[2fi([A:!˞ZBjM'OwO'{`q7l1}ůWw`V敄0Ѐ@A͝e!xz9G?ǫ\Z)lpyXo1ؐKkO ?RQY"QUչF R CGMc@T 'c:P%8O+ 50}"(YʾZ<Ѧړst%{ #~uWvwO_dzqY&,;ƴiJw[t ɅO6@e沵_=-!}~/l/[ι"sx#|I- >hv Çc ԑ u+rsAR6vD>(ѯ ,^cp@O 7i`ᴔ́$0oWN̛Ǐx*F" 2k<IJzhjzh >=c°y^~18݁?2$>LX'L/Y,~o@Z~X;혊/0Zl c,ڤ ;{{1u4p&8B.OWhJ̛(Kxݒ^CApy }^tnZ,8({n}{'[~}iyyiId Уipn!LhIfUckle aXsun'w ކ h}?#9RH{lk<B%CAy3zI{6Aj}elh_jۜY]; Gvs`CB/AD2a$d"JGLOc0N_7M#`iͅx JOn (4*EfK{K~V83pMg++0 wwTZh2Le[߾9Y͞P ڷ\8yiM\aA)OfYLhOveΚDY[OdPy5TLpaW,=MnaVO|`0~/ οk{5 P)7lcXmڸߪ#4ٟ¢ ! 0 606jW*djSS`MZ 0\O~cu%Z, +JT"92#$?ֆJƇyh$(h5\lMB!0yko9ԇ=oxK?_/μ^xOo[<|/}mF|7Q'<5Լ?vY y vWL'-a>J>]t;MAsN/JY̤ݏb" [@>* #hWvSGݟxL<וz#- ݣ*'[Kaku5 ;H-)Բ(YCBNfaY`-3%DfDCx{]W`X 7u䠗= " sn;|>'>>Q]EX(.:͕W,>]Κd82K$DRD uC#ph{i?ý?ɳg|HsS o}Ǿ x'~vcp}8yyorݾtIT g h{K<-xϟOg{1]E) o;"xO5S͸g@lFL S:0&زZ2%[R+EiՍdV [>wlhbK @9b+x{__TW_uu<%A,Z_ ک/6BW)VgN "G7Y>Y1x'..X}EX}%wA>F3'", ˶`f2Q%X'6RKJfsgo,'hO7H$Cmpo}Yۗ./CBÃ[p_8pxnmCwOï{ey֗˼(ω)]Wap3`4ץcNlLn፻s>'#@1?q lfOj>v !߆ w i>Z ![4;."6$"U/0+n}>ƪed}3 6vsnGW~"ֽ="7S7wn/tݥnP" 3UgSy&<}NZSH MH:uԯxkM9F/\pOGo;Ёc;:3p܂JM=YVp[7osyg/!<{£w] :wWoyE}xVWW~Ϩ59Ĺ4Ewl6HwpS1Đi!>V/,Sud6 2a d~Oa߱}E,.h<蓰}zlN联M$j{y4Vԙ`_3]W^N"F2z}x5@Wބ?/Kx# G׾^W]4?0b>YY80x$,&6X4Sƃ1M=lݘ"6n[{]xZ gʄ3o<n\~}w!~:07t?sן-#-~ _d[~-{B\OaRv2k=szg>yR LH,:f2S[#mo]~a~M"|/X(¶ e!YGG瞄5O IDATpUspUW$TţqL8E+Gngu02U_U\ĖiwrV? +5]h;æ?6[S"-:ReαYptm'0N>U"\}pt۰&W߁U=9,h00E"I&, *%1BO7V6|g o- @$~* d'SL^L%n-x[:Q.ʿַ؊]ww}]_=߸]cB[~`StLF乞{_C읥=DYYCB~<8XB|8mE^8aSs Ȃ_M`n=!CsWaLpDn#x>>$/Y-͹0%=@BEBb'DgEL ,e8{=)M'VYfy%Gy'˧ /-@ݫd 1xfϙW$ xΌ622m#o>gll0M3fR3}fmJ}l<$3@*""#"#2c"o[73țEd?~9Kl1Dw?QL,e"FRKt1+r2K؝{Qot:U@ߪ"('1n'{vE YzX])'zfZb%s=mܮ*P̧6WpZ7O=GJ߃H(QY {}/7܈_yOoyvnUb8&OVH5dR!E xwQ[ dhy>W/X| 2dHfmp}3ihS*p;*} ;+$=bDvʯ˳-gLhQop6rz}<U/5d&_shkP n:mHq|^RVs`^e1p'sU']LrjA*եLcY!QFg B_sؚx\!φ!к D7KqnQ|- ^k։/?wK M;.7Գ"Ud"A!>|+i R?wB]5 {gy&%q)|_>S)J`Ml.7uT 䞓t0~z:!iP4",|J>>35 =7V{q$~]<{k=,(fbj]L8` c!: Iņ Q<)h$zo\Tch@VÞlx? GQiOb?Smm^B|ýB[v0kz0)㪸f)b+/BX9J9:>T$ө [cg_pEM`\@sؐWէ(.'j2B@Q(6,脢=[Ԉer9|=7H-\1&z£w`peA|{vw~_\4&h |%ǿ;;gs_:.^K\xs/^E|%Dgm B6DKotiޥ#TeU͟6ȝ!ۘeHpSY[lb[6-ᢸV`f5,94}DfQ%SY2HIosc `{"˱"{P`ϞK/ll\ /e]K.ك(pE\pϟ窴 . (ˋ,褍wrg?j_z~;K_c&?Hbp<܆0.UWEفB7ן'YNqq/D6&# bhQW >GwOU| :o z,d"2wܞ0H!:kȬ-!B&Bhn/6QUظUE\K7/|EQoDZU3֍KpWdqbE`e.Q(˦nFFlDg|&{,l/r*PHL.1o.s ;thҀ eSgCMD $ .;l70N1{ i7T!_3{R{pX=w>]V,%_/OOvAL  I^,9VAvp`w@jk9ne=ݷm J欬&21_yM?{]?Zm /]u!Kfp_<8]J=_\EGTI?=zybQb[o흜o8xvLiy/ٍ-ߛʍZv{h5?/}nOr^%h`v"Gw:9?pW/x:2BɃǷp؃Ҳ?wrOˑ+u535ciWH>uJT9ߍw5DB).EK6x2q*lH?oT]rfS:Ymߥ|DZ(MI2٥v&3dl5< PT\nTC.o8\F1|g_*nۖJRRkxw"S}7| vяEwq\?kߙ.rMʋgQ=u5n(5M߸w ǃ"#>o\w3hH%Oc%yӡkC+,A,nZ-W8h@.XG2+J{*|b~s6&7,<oE3ݫp-@~ hFh8#1ju]Kcݰֱp' ԑ\{Q-Wlv|.o6M]"?/$&2*tP/ ='c~>5뾽OhEbq81(|PuD9֍O@=C[ٛX1g-_ZGwFwT#9P%(b[ʿGz|&677-_֎MnԞS}V+q.mg_7MMZsQm\.sbEKD>@.7 ecoW2vO8uwjy~2 @Nruy 9R A Uc.7"'V2K!O [B8{B''X ~8(rhGGj îl"Tװzݷ~wW6s-5vދ+`t?x95{4\´muź&*ksMlaI"m>ݍ]|ymnPY uܱ5;4hZ),#F&2R_t"tEhMYv.78h:Ngp8PLrkz$\4;(JMH\IݧB bLxQZ qc  NEٔi}|wk`uoY̪{ (P|QŚغ_"Ƿx8z({;UTׄ{)-KUG^I&](ƥ̸)cf(-fˊW_ة ay,o|ZRWoz '>rM{rEh18y|Щ MO)!؟j)[06bmYmqw,dV$ZW 8̢̕dKVs?Wq><\6h7Y=֓Ug-$% mK: X]lDL]3㲪[I.${vcu\\1A!h }ɬw/wJ 㷜ݷԳoϣ%p^TQ<\o& ,?f4p{ߏgVMgnlC ;J'쐍L DLZNM^qccd=Wbo^Ee3Jgh>x| Vfp9Y6fOv1://l"֛rfl9n{ps-u<,1TKtKNZ;nʔݙbI?SNp"KH Dvۯ4VّYzP^rOxнgb*=|tV.?* uWu߯.Q5j#JawRd\)({ VoL TS]Q~Smʎt?qVɏG4{g05{P+Eٗ6m{ck^6ı<~655"!п9#9Lh$bEg&R#JficYnnf!,KB"^;?u=/8I"ʲ!N4]ꭋYbKCp}RM[2H dV;td#7PDHkx; HH{?wyGF {d+wooOeI,Z{d~nXģ?vrw'nE`$ Sv='Xija "k>Ӻڤ'R`A6;5Br*(_r4 k lizhKF,FE}9p>el*bΡ,cצ9gP0>,'l&\L֫g!RI-.2!pLVȉ 8a٢Oc=/(|1.:_jgKW(W-?ۏ8Y?n]~X|?%,_ޏ;{ptUZЏ~S밿6xKId ch@g{@/Owإk[ ~cI5KU7X0oNs"R 35D |MO,P&Q(ۖ/;4d|8|0Nly˯}prIqs Җe}a "뻮vmE?'#FtVI\9APmCUVaeC@5 U^ O{m_=c=[[O6oz֭95` 񎬾CVtka'>o2e[-p[ %lϑ[R,׿$>[mBK0Ȗ.r://}/6q-c/y1f %nvܾl+ F `,k4M7]3_VA鷡DSmt˵{כl6n˲m_(J*>kXo^%ʢN-EfR7kYu #{_w(~>zIQvuY{xpoo g}LV/.~3r`{ά'0l_\,ߏR_};;/!;F_{w}}rCt{1|N=ʘqʓZ՘*ڱTl-4Yܸa>i*4YClV lI,ʼn\ՙ}Ñ[O%bZ9Y%\M7ot,> IDATO=&:'=ZهŁ^Ftd˺#EPdeL:j,G Tvx'G.e2( cAv ~2C;8oz[~eX3Holla)zx\tVFuAMf *:(IbB>¦zǷzV'8~2zBP? ww}u .:L.:˰ \{7p;8X`ߙ? vp>3?x|Uo_~'V܎.ߐ(}nWK#jqU KMDV&'7y25{р%+UW.;QmM#,>.;1+Gj"2v@6Phs,s=aqqcU£"v7vYd7:BYgfGu֐1sΚdz[a`ᷝ6C͆A@0o4mxzKN(Ke5d WM$Hȫ*O$o42Ъa-u}bK J!Gf飳z8>{WwYPĽ)OnykpݫC.=/ ᕕPrl=y^}gVx'{>'o=.5N9 GlV_z?/{ojYa_˗xKށU2C>Giq{i1cMOjkӖx/!PL#zd2%[g`jUS'Sif-m[Hh,gs UTh,㉺}:('B+|М,\(U_Sۑ M,%(51D,T0RzK[O DJ):tQZ-Uolœ` 2%5h"X2AABt,Ad* Fkx=zoy_s;vg_zo&~;puVEiVm.oKMaOjU:Y7YS vu1Ė{)AˑX#jiR\P2P-T.>EFHrhhƻ+{cAEOh=H0ŶLfe a]ƈ [NX푥N#f!d_MJS|ܪ[J\v(,?*n .ZQEh Ъ@krCpusO+"Q: +Uc?ڶ'x-#'Ur&g=(Z%<#x=}_Yq$5~o\^Dfu_ҒM FiOtԺ϶$K4Jm-,8:C$U5=ģp#D@jC~G|@͞T2E 2DGn2ph)( )bN~[.u$WIe?R"Hj&-T l>GlT}FYԕm[WMb'Y{%UkTdY߉99 I}Fu>XY+\{σ8׫q,7QAqetcm2˦1t.OPK7]S)%dj4deA7v(%Wr\ɦXOkQ7%TEUKt\}H'1 5%ؤޱ̎&>R,=DܰXࢴP[U?YU<9REҡ!Yo !.qdc7K>zglVd>H ~7+ Ib;m4SvKym%IKpo'sq#!#rL!V"*=rL.$id!slAB}Tlbud?m8Hrr5+'Y1vϱM"9a\QX~o%!#}ZJ³ZA[=lVhe8> R"KC8HY<# cGDg)(*{N!SҐV8aZOKUg~%F.ZI,YRYPIC˃On8,ꨫZFI)Tlon;uߺzC! (ua8w!3.c[Tk.=8/ c{3`)%$<'bQմ;S;Ӹچ9oɅePO_.%!J; ָW?k9!2:FTYJKJd3h6qeCL[zsގ-魅|C~`y3Kˮ^?1e$mH耠d%[(cN~S[Lm6PĖ8鄇RtVTsӔۗ4Aόm(5g-Hvr]\Hf-(,Mْ9>БXHJ0VYHlcI ն):[R&o(@ߗn,S7 j% )ğ7Y?3tWYr,K2MI'3e{B[ݥ.d :5~"洼SPh>۞ɬqHu>d"8$,=`C)4i%̎b# 4["Xviu3&ҋ/'npV|33N27 l *"yMS"%5)(35Jqꢳ6(ю)I:[5SrcbtVgOOl冦'b[(GWc\cN>S[BA=tVdJ8NʘT;lT$/]a" QɎ^F%⒰RFB0DV76udVv=«9%7o&lk)󃵿B e1~ucPqն9LדYy̶_F>KIlG6DJfŰRmnbq^*}NŎX?1u%I1ZoY)"+-ҫJ^.YI1ΫDܯY,2fWCò_x.'!]nyaD1z"J$Q/-ˈ>Տ;-"/ث=[[{2Uқ1lt(wc{y=s@\vXwdcPQu[L9(m<2i2Iᬆz(Gk  _bۄ~VlP`So#5{ =RZH Jv?+PNgGHzx"KKlpPXqYS&b"jC =aHS[9"9ǡx2K/Õ /qj-jl9얞jHF)y%K,QuQ5fR}0Na":t2d_,[(. 6œ |`_ZS'4&D.RQ+5Տ+5{jŸhp]%M0PZ-Go5dj.(-UjϨ#+$PF`m%!Y`խӝ"Xu&V/ yEbU5*#P0& $8P&+6Mq.Y@f .5 8Pg=A1'3'R >X?gB2)YU&5zLf'E;Dz5%;s(?)X. ԦKҴYq'2=fam] Ǎj{j X3ר,n.@A`qdDQU(PUcȬ1DH--@ GtcL#n4NbG ~|H  $5AmQvL m-aםhw{PFc5TjQ:n8l\ﺎڲm'WK U  W `7)̝8jrC&A(`}S*uaGIHj =+USO,9Rql(j/RW#fzb /9Ȫh:9Cd|VbI;"Z"KG^cȬ^yzbeDSY?*ZꥳY!lw9e4"Tyi22K|ʐ)a,jKOtVD-b gOf3Ǿئ =Yh2U5Zߺݥ7W1XNMHh)S[C#ߦ`36-沤.(,{Xn+AA|G^5y,1ӽUQuĵluh5u3n^z-S(;gA*dA]FW/R_4]ؒY&k(V_.;\kV% G7|} p!#ƠhE\W\MBٟJɍ?}m\VHH'aȭuZژ*\lnYԑ}ϓPbJR JO/![z w[pql^Z@^xVHyU˲DHЭXj+Eaq$<5uŨ)mV;$}E W [[_n-9D=&-s:=S?$d%%*/YK*Sq4ęCh_L(#uLi>o.c,vİ3N G^ 9  נ>ۗ:<׆ -4I>L>$="nچ DVs^gK-k@ɚԐ RY4KrKEf#SqId$[LV=:jb9-I]"-VBx3 % e'mJj P mvDbij7*Ȍ2'bY>JĖ>Zi<͗Y[?l $ŕQM%dv0rcT[џ n@̚rғ$Oh obӑrÌ} zZϞj/^Co?ٍ&X[pՁm p*hZ+zd%{lu$VwȢ2ت)ݿ,4H#L,@N\8>Փ4Dfi1/z q%@E⨢м`H=rgb!2T\JD'O-3 yH$5l\BeO]{Fhls?5Ėb\r;(FD}辒 5_FWCm'IKutV]טBr e/߄R&a\>䰲6` UEv mto9'fRR`zHEr))úھZ*OaȌ0TLݾ(-TJh;;>.lxdB1*_1aS?S1a ܝ8HN'%*E6/%so1d6U1 uZٲ UR~J,:MB6=Хsb %(%#XYJ u"pJq4oOʵЕ3]E3}>g*z `' Ŵ_LA _˴,նo2YN%cDk8fTU("wDIQSgHY[b$n]" *<{ bؒe5偧բhQ|JΤ.ec[ou]e'(aТ61 Z#2CtűF& ~IXMJBTzY"0D`ӻ<4c|05J@NNXY;9POqkԱ'$1qy@9DWhœBKO;^-8Ȫ $4Eʏm lmA7lq6DjcL2bⱸjK勗,rTD;bkftsj >0[?H]ɉq5^U riUhj>@nq- QgZb,%X<Y7+j,4vAA!" GeeLȬuqFL4/ N7P5|/)ۦSlgJM9W*rPq-*Dk6c԰Y쉁 %POVHoz~\HWHVcC#~ H&S[ѥ'zD2R& VN&ޛ/#ԃf:k|`TV.,(9O>Sh6Av JNR;2!to4zp1 ,#J4%fo}ZR3!O-z툭) G*vU;RGk+#HEjAUVMhF~LOwN i JL#MvDVh[$|>䱲 eAUٔdl-)1Pʠ, "27MRވs1&'В) >B?1JAvنPKXOg@nNh%<1`;9 z$Ib]^66եη%QZ0T .$':bKܰNecnO,1&DV@difz7dM6-yd8Yni0#m )4Xg!X?EWTU!) Wǔl uk`<կ S9 ̈́|(ZTln-N0/d_F=+["Km^3Ț,aye~3'ҥ8N!#IeC b("c0sU%8872ˇ|*}Lel1ܱe*m Ifj󆘰r/rY3݂=>dK[{rkǐuF(ju²*##dhMg5EQNMITTI|?QkQYb<厰bD[)0o)eR;%-,3Mg99jR;tb#;\:57SG*v80T였U i0rz9R^+R <]+##6uf>Kʉ1sŜZ-"zVU#"%82n0'Jy7"+S8r2YQ)*kcO` I&c`y#x& ƆBh6G 6Bn{|1v`toWQj)MO@/xyrlui(F7G^qX\Om7{kuIvUvr( #R{[ Ѽ6#XL 8ybMsfZaOd 8rɬ),uT@жS c2O') Z󓋧†֌ѐrC*XC=>eJ&gV|H=R׮Ȫ[@y_IB"5uۦ e%=U}Onr1$m=puf 5j 27( ldVXȿIEfТ=Ԛ_M>XD57zĖMVӆ [z{{H%\E"dPQ*MiCxuAk"K8WAf9"N/!Bk&bis#|!UeSYRCkmw}aͶ֙<ݓA sz'7ǐeMFaKXUZjcәS֓{SJ87E3jjٰ읇Na4M(2tyE_Y|/JMrf+%[\GbN}ɘL`S. RoWypK&&qX#"Ծ ֩9-J־{\6i.bí8pMR˲#%? ZB}RFDnj41lXr@UP>>SV9&4)l jưǷNj>>S϶N@yZ{hs%g"Uߦjw*4+hѠ#H-sJ(֒rQlKe gNzCb3}Y9̀雿[5Q5e,bڶmۦZ3;G2\BV~t@fEDz֔Ye]8, 59aƜ0DZ96CT`e}:vbJ,`[W*˔bK䖋+o9Do8"2洘BQQ>QYf$,[cF`謄&L;W2E9:Lbo(P^Ds9T#7q#gHj{vQh;\cmԟ&꺶9(!&KS^,@}z (/K1`n->ͽGn}R*y3hڍ ytKl58f2+*r%j,@Ah9A e_&$'3I>tAFBfrX‚W4d gr$-f^^%fmtCAkڨu7Ns}%kKcc3r"G]% ^ƲⰠho&u!kX|>o$-9G^Y$ @P%֞ (1jOeJ]hrKDQa/Sqm҂P SYZ ~DJYG?ƮaiCҏHdf"s%|!e)9%L O\+WJjtm)A@̭sk9)4X*?.w0UR%A>K)Cˉf9bQog.HLHQ_ڑ1$6 sNɎggZ,YDA\6D YnA&x̑Z+n1A"\LjedxC@0R FdipDdH7{ىDV4ki=,a_V?FeM!t"& ը(&ʓr) ߠuJ3mj̓Z+#,"Ya*Z=Č֋6sj y!JsդLT5a$bkk1#D,?Xƅ%#3J&ށU-[o|B/sp(L8 =LUbXP/%{Q9˫|LfJԞ3}1 T~FqX.))l5IgeN=T3>+;K&͍zEiOspd(8ff2RS1ns> ޮj| -_`25Ҏw,&RbC_ 2+61ɬ1u}b@ߠqY@Bk.QvdR3\p]2͡ #f k$Ԓ[;%툭iR&鼉^ikRdᤳܚ0_,YR\ՐXdK0a(,:r)J~2G!"WuTyLn,ՒCJNX/0\凔I(c]"/ JE%o*x($KLJ}WXĚޓ1"%0E+#Xt5EԬ̚rtxe) 9CLP}Fh~O(z'ZA}:\4TԂE IԖboyLzqp.$Vu;4E4֨ʔ,WaF("YdS/Ai̜,9Lob^~HȉOʠFftȾKp?oe$M^Xd,)]78da\MkQ.cμRaMl:y㓦VA>3FHFfT}KSP%\:c鎭T.%BY02Bkyf&h*ȼ1F-\k m=J̫MsRNy-緐%r¡T 휨~a,<F]!YJZQE넱Gs>^݃C{h@1zZdwPkW{>Nzr&. IjA)q.1na4ed)^20dV}ll-yfdm !] v7Zg+ &H-_Rڝ1"Ek$ &1{ E2A \VAbfkPIpaj"YlBl3W^KH)EgXnt>CZ'!dB0(-Gj*ˑ.FUqRI=šî)]ӣYd1H8&!̢ږ@:vNElr׆p<'zCq?I%{_A>?S?mwp+IQ"D{JBL'S`qକQJGtVFdglb{L-J4*㥎ԢH)J_"X,=v1R~Z<5=bKԀz{qk|Fb=ї0#J剥=:lA&&K vRsxki+-kI-@Gli9/5UL4ӺN͡նax^BCdaVJC$*f2+L*p]|-^C̚EjPiOZ[aXݕIF4BѾ1;,iI( >QP2')9h8j* 8L2#=ˎs"|9:+CO lZ{/ѯʑZ3Ck0#ҎjnEYíwL-(FRr$¯ TlEů2P%(DgŒ T+b Oh~+a̧ݙR`ff#R7zj+L;k9%al-&fGJVD.R/*0,3&|+ds&t!'Gg#Um(< 9K#- u닥?%.ݓH8oe\ڥZ6}&2KM[&G?o;{kJa%?d2+̱d9:+ B_c#@KS# F؛#2fԮ K@N(sB:9K@ӾCX2yKCw!a!ٚɬ2cΚB-?=Bk,BϤ&&-&H!H /XRk8P0w'gܴQe %7GgqLf bDɌ)]6dVzT|x\rȽ0UAY,/45DFFFFXX-XI8+ܯ 3Y}6axG<:>;3(^m?WWXЀ j_ {(dKLؒ$s@x u"LpZ`͌oBq>,Q5VJ]0' Ox$Q <,*4DsBk]]5>["{`qheh$|4'P/=!tRfqCT6u#,9 ϓ3W+!#aS~ۣ>JO$|Kt@b # @ ̊#Ӆ,)\GgQ+{BFZAt!ޚp.߀uD5ZKj!BD¦HVX zgڪQEѮLf2+Gg{?: JK`^^?ʤAjbg'3%B'$n~HyF.9 Fb J`aO{~"uTLfѐ- :eDh-\^H>@2֕LZG(CL\9)e]#ݙ5΢f'ܔ]R΢v-Rpe 2k"W-rYkʕT|.]fX껵AyF b} JexEmCMh@@*:YSAWH- oX^4.~Sxo"[ä%2!32"[d@¬MpNI#9Ԙg@pPAQ)ؠB&ȝ1謱)1IfZFkVWkHplfd(ih~ZGd&4# 9kBפHdV,PoO&hu%+(QØcC1xb6%ETe@YxdRK49d_g!Z<쩪h֚B֤aPvpc2s싩d=S0&mb/):+ֱ%+B,@c IDAT Z̠ÀȮȘq. _lL;eKa[ox:R#̚ŐELfZ,Hqvɡ1%ef1׌NmH3nㅔ=r4+ȤQ3{g>",AKĶ1HfX;֥?OwQ_"-;p>E(0&T$`?wB$tȫ@K[JDs#N(za7d֨{FmcHIʔXoZ!덀rC`[G/35m_%nUE$[}-1~Ș-J tg?TnAnLǒIЌ"aNK鶅):lrDž@:Hض΅̢59:ˍL*9GzԭKT 7tR!O1IpCnc~McҰEZ*PC+cNAh<0y!{K SZ7Z1K-o:,0t y;Gȓ1 o gȤt?rwZbf1Fv&b;'Rh"2+C7,( zC#<~=K oϗ$!El$d3:dd2?YCg֜QH$MTXABJ3F@tPWJdVDXm ]vhIf 4CȔ ԚSF)[:d_dxA;o J'Q̬9N@Ё?C_+)Y.K m+: b߯c X\UϞrI`i DO$KgYɌȤWI ̉Nj |odo2`SɌ"~bʞRñstV쥟}X^5n{K$D,KI,A?ml[L:O~& k;PW\H8UPc&t!',[=EͦQU6ƒuJFgWWlE y bFF]EjQ{ Ni bcLfM0w!:XAfQjk-x/weO6 >4g )|8_ZE]ȶy VZ90sO`"=(4MNsNa5Yz {26VFfR^e]b]:Ċ6$#-fcԢh= 34n_ۛ1AܣOI)㡊9OgBfM>qB?m_v%Rj18Bk&)]~Xmaފg]T*Y+ZΐcJ6ud_(aJf9pZDBm[~ɿk!Ysnj46F.94bP3V*KPV2ČJrn,~A)ۖ LWcT2#4(}nQYtP;J@aKy]Kpe-W/FEh-dB(\5 `\:#a5C|lvqO(e2"/ՙ}Ł! F)9EgQsu2+XET 1%BkԒC3r /*K552 3Gf^j|2 dT&< G:0TW23Ṿѐ]xP9E~Iݾ `.ӗ%͞*n7N/q"O9DgQudVdVX67y%_=%Hi#[{kuگDJbR)HoI5%d'c8Idi5lj9+WNrHEP?]̊Of֛RD7:Bkq#'fS!`K1-!摑)]KI#;~H1 2J"GUDPA̚,5 *|P}ز}hZ=n.UF$ٺZA}M5]H1mƤ5J˃a!~R)bږ,wK +e9<նDh-\82Ȑ@aBeNwDwHhKAv(#̢Ēa&*h%|!.!cYYבQ!5dM7JZ?ey0}F2ɷF O =&XdȒ40,z-5Bq˫exzCm`>L A|B~c3J:޼dF`>&t8Ry݇9eY׮&١Lf}1jIZx(=ڏ!~"!Rti&S+%чɴiZ)c[\Ua,{ˡOȦ[&Ȋ%:+=4Q"uҶ}{X~Gl%+Rt:ȈdH.Z ƥ# g\ǒg"˾B@GϵO_bOSCJioP(3丣^rxfȠg%treRo?O^&e06oc6#c,!?yȎHEzgxӡvvY9_T =$2E†dlYB h2IHQnu#񢫾p@x .KvOY82&#Py'BQm OLYdV`PI` YLf Ԑ(% =n[Kݿ3a]&W4U:q4'k$22RB)`a{wy%ssm6ԿndVLNPRJaHH%l:,*j2TXױD`\^ z2$Lf7@ 6pi3˫HNNҬ#5a:V8y;)ߘlNvtfF<Hq"I!;% (. B612 p'1 e&[J~9C2Ut@r= +πГNnvq bD zhH {&R|pL`u7nHX~95,R#(ɐo/2kKu u~i&>hzm``}&ܗ32Ħk @L'yY,'`"5FJ>[5涔sj\ɬ)EXƈJ U/5)<>H-pݕvSg w0Oc^8ЃE%ȫu(2˭K5Rb\Ȭ<6tT:Y.FJ@ )^#p6Y[72+@8Rk &vOǝer&3y0.uE2 9so;p2R4Sc.rY*Kt5b81pG1/{/gVO2f 5 ")퀟yt6n&#2;Nl NmglQJ( P BNJ$PBκ/5YBSy商eeXgώXU& F&'"[|A⮌ɭ 9:ʠ7QٺY!J{(ڙɬ2S%(]WH):*,5=v-^)} f{$scS+T;l{med3)"lʈw+%sA3zpsLVʨa<iO~g]s6lr'()O1*˗Jc-:P \ʋԮzxu}=Bx7/_~vr<㺆dЂx+[yed8?i1p i,ƦA<> HtlLV曯\y5+PE&u2kX][lwѓH"J/SCB xD\B9J5ZI@^iq{$dddep"9ဩbnMYsI K ǗK5!R -G+@õ=M)ꏓ}X=9sr)DtVF}S3$1M}8ZzDl[3W Y1Q#\#&E†dlY=\LUTShGFkIKL@Uۓ#Rƴ;̘˨RJΈ~GKL0?2'\N}žLfOB= BM~y}X("T5%#/Q2%,nk.gdd?qI!6S4A|7T+ -h6D Čc|Fg ו]ڶ}SBZ-AIyJtl|d}8&K;&ZIa5r9Rks22҂-VOJu`vysSFRye%`qhD_ֹGe372kl}jdu@WpTVxH_%V}uXZec2ﳕ@FFzgYD MmԺ=CжNfQ1}Lf|R=`!@fIh#1:j`YՖcدw2O]BC>0c|`=v ӗ::-)BF+&2VV,2+lvpm/2k>#,9\^銁+/2EL,IgPHrKRAi܁傚ey `ߣybFF߀OG5DjA+$b"vƞBDgu΢@{"n١+ғE~g{&ĩ VGHrl bi%ue55yA,\xn`:և&}- -/V |MfQqmG>1̩ -=Th e-_ V`Ś2Ɍ92Čpp@>0Ѯɬ02Yٱ3>Er28O ~(> }M Y+T[zbKULjU21GX[%#a&8 @r_;@֌hȢ3+l[cY q@daLf[_ct- ؾi۫|/{hA!9W$\^K폟,U 7bj%DyXX;Lr#K6d#/dd;)ڔ =:J!*ˇ9Y#p{-8r75Lf* KDkI#4Sqz 9Cٻځd*DL"t'$fdPlgD6__IJĆT\&[2˦s uϥHf r}Gg# NA RYsIi wP_,>UZb.LԒZ72 <aj#u&W*P~KbʦBf;r*Bم%oFhmFhY9CWXZd&<۹]}5CU&vKS4\Fj . sovM^Aa  9 s m^OP΢ГLf;U M!"Z^V!=읩0suڊ:9) EAI-ifp ꣁծA,# $N`~gSn:LR"7|Ɍc?5ddVH}y9b{C-yMw;o-=ZE?D^Nn2g<30ePBGv;@'eEb7ı-qKћSe\!525a Z(}rW7TuB ȬY@BkEw2AtɖL'ĖQ.i5؄D2Ô I3?3Xg2#cxA|x7o m_C zB6囸Jf@}|Y,*_DVȬ )<%KhCGP1Y7҇7)>m ~Mm$)BPþ3 &dtHi-c?هk:U1wZ z sz?qYR "bG:e=ЂLNf)̧NGiˏ-ɝ<Ք7EB$Pt1rޭK.w;Z7CB߯@VB8/!`+A_LB-y?%K_ۯ\-iTt|~΅U0עZn>AM5fYfΪI\ۙrgSb­P6@-R(ܒ ҂-TŸD55UVTӜ#AGBmEJh$U{!Y1*SJ&t8ֺ@ u gcz8`3h7G:=жh]-{ڣvAڠֈJ%B8榦+)ֶ`GӤ6LYnkqhCSSS*ݿ꼂%|6g~О`Vc[aYmU`y=&0ddZg֗[Ae=7beF;ñ''C+_Me3MM YTB_bpX\Rose[oYqdžYG 5L YMy]/@I3+}uZs>H;i-z=-vZSmL_"jIAfvϦx]SjKy*as1]q)=*e^TԶ~J?Gk3W4Z ;\+ôՑvriMH&M<#-Û0ilT4k,.ui~IWL$6|@u><͑ߙx!g=?+j R fm?6ZҜ$w!h#̬ aã1x{_MM5H?3}>hݿJޡ海S'E]{Ruk .s|RulPLx} T]`͆z<•Nqj555U#_^VQˏjYx/NpfIbձ fYqޥǤ+3(hGϼ۹&֬\ k <ZȢ-jy UP+\/߳4m`CAcZCHA?TkcǟB}K7gJ:/bBXuV T\3̺PḅS*;3 fY^M;F1OfP;M`d4 /};*s\@>2vܒ=b/X?kT9=i DJ{I}IǷʦǵOp`VJUZ`V @l0+7rlFUr,̥8CA#- 4R.-Zn5 kgF$j =b@mJKΣ_3m]Q[qQT |kjjj*JAdw:,`ls0TwVͮ8W{,[OQvD%Β*h9a/^T -[˩e+;:hXqx\ajB- `9 fR^5vBy LH+GbP,v9첞SQ,l-SjgS*栌?~R>:>Ur{M0kzsJ=q ZHo1jQ1ZvMY,X7<5:H&CvɅŹZLY=SeC5*28h'HrT=1-C^Ϧ`Vi+\*uu3w8l4`[ֻ4Y{].b| ϝ%U< т(x[JXNR,:6~ؑCxk>g5&lEZٺY k^kBf-83$[kF#C*9*؅5Mw:,y uٻm0+J Լ fb* YBY@@ jUfZ4ll4:f9ƒK})8c`L]7jwZ X(آ!188gC~u QoV@/Wsݡ 0q.拃˹lhs+-~N<[機Ѵ]vŋZz}){OuƈIf|쬕߳lrTC_ܧQo}b^"aDa fsoh{dq5S(vt%xUޭi` 3T=%sfI7q\u~|?<ʫ5[vy>Z3&Ljuvn$3(zHC54"MO~sQYדzkqeŪ0+Uj8b"ם㘙zk#U Вaԇ]G}9,c$H`N鰓aCA8V2nI`R7xV#T.9`ra>s@0XFKNi_2΃Gʬ]/MMMWNLe47p5ìX*ORAVlxm0+u; fu)hCrxG| SCI@⺵|4, =tZ:̧EkqLB-wjF0kղ V0;`9wkh:2h4U/8cMm(# zgXywE`5 o~UJ-Ωuu\ R~RhkM`P ;FZzȄIǏ?aAu =J4H[,xe.s롖,#*KFclj5Sl:fw _SA*#6MioW75ZJ^uPl0+ì zs!g0;DTQn|GSʼ#G-9zYs"c8Ѓ@{]z}cO 2̒spor#g#%x{b=r\W B-̿Y1 ;(^ȕdʱ8`VX+gJB%_޿,:)pq4_55yJUg%w)}-JY)J Js]wn"*`V_xT c&GrJ>X':'tlze1gN$Fh8|(@nNI8Q1au&%;7 ο3:?˭En"ܣuMOHjjIjS5J3 o?"̊]Y1Q`VLH5?zl7Sc!P#z Br7\Y9L'o'HءcafPÓ\f(Y.x[аCOʫ^3wH,f٩(eV<|uz{#b#`klfm:JX#\wLٛ*dN)CstK@L Y)`V)4\,r|rj@+lvǩepI^/ufB,:KHn ':KKsm K'40A Fd(ߕXVL|zȈh # hZ6T%^EmnVaw?V grUe4⶿9ٍ2M0 hgWV۹lGzsr`uf rhQe=D j.$[b@bC9Pk+ p+;LO0`zhC*vH%e!R/Ciڇnb[}Ej*^\Б IDATRڼ?W#uhyEՇ20;+(|Įok=@LZaVlŀU[Tsv v४ZÚЉ#B-7ȄYəphhEVgA- I͇*lIQܲpP•2ct[=ecNqˆ\vnR&l`߅qgorA}Qל TkSimkK ѧpۡU FOzK)1گqMcֹ'P R)TҸbq篝L/U%J k \42̈́Zd,jɐCqֲܲ g_5W 7V@2:J9_Gg Bk<2,d-5ǥ!aV+b`Pw!P1Кvha@-Hw=g)  D_7Cu.-N$9TaC (,,eQ>6.GCi5JteSjVA8}k\ !5RVh2AQ5pԴJè)rﵞK !_~^Hr ̊[0+RY˔b[ZOq*Z2LV?з9#FK˺ቺ uc-_T>._n- nn-x-A-:XƌB-? CAnݫ` 1g 1]Zc=˪I7#!s9MѬ]RAl;JPXTbjTIbQ>@BVIs Ol0+)dWV̊_zJY)`V,ٻ[gէꟃBsۙCq3pZQb/WI,H.-(ѳ`"^49Vg}ߣCq`>l `7]yc3n(xhds5f-Y̞WO+c (O8Kn?p=\zZ'qY= r9Apc+)#({YC}*Muĥ<☚ϯ4?2!$[EezJY׹75@hUB.-* F-..<ʵV%Y :O֍59ꔣ!NA?MӢQ&YӸiz?m&T.2>+լ阳96-#-mviy^-O0 U65mUiG֞s#Sz쨧ÿ8z$$ٵ7=⻄bjN}%|mrdp T0ŧsD҉%vIIWX6-8O(qvC`apEqpp&]Z؅Khvx6-aѵɗLL g sbR\X5 V`8>j8 fA֒BJJp%&OEQuOԢ0]RÉˎ6>[N-9S+±)\ZQjk}~/kys%!|Yi[)ry/fR P5LNU+q_;m wh>YP~5zB[ĝ%3Uҹ6yS-áEeV:Yآ vCN-SByҜZMUפ6 ֔6%/u|+9!|Yiˮ~fpg f0KUCu"gdVtɐC"-Ya֫ _V@Z7C}bI-+ Q-#pL a?8&ӄZ@-Km1` ۍČ ?4Hg-c͌]I曬EPkd"16Rt䱭U9iE× WvkY1U3TS:0tB%8@!!Pr :Iv8< 9tJ%QK".3}=G=.`Qj;'n2ӅƁ%hbbhvah!HbxMٽQ5cPCx[G\Z+0QD'Un7y>3qs@eHU8k6A;=Fnn/:ԼcShմBG^RVjjTK:|Uso皓@H:*!g%]ckYsMٺkZ-`pi}R5L2w2jqΆTDiE dIV'k;܌Gý /E8I S*x7w:@ђcb4O<|Zt!j)Y>dodM {}-PWd"8AZ[۸$kdR9 -ZWn rg`"JZMP;uOmyY%iϾ5ι`ֶr9`^?9 /Xrg 9g=qR'(2h)p΅<0SK1Gd2iY_7* =NArj+#Kz($5 hZ{z ^,37 57Br4TYjЩޫB(A8X}pA`\j9JϽT…FJ:RB4֒S EKz:ǡk^Rs 0koؙrb f`k'r?=:C ֋W/0&c#.ޓ-3IR vR)$_g MW_G1/z4{Q:Cșp+Dh(א =ڱ3z&^2Bb)<ʋl6"o,c> pHAҥHH!g'c-Nhn-.+5B嚑rhCN-=Znq 5]~}|kuy9xbDGJl;e;%ìX Uw)aVRrakY3>ŋ@X xK" %؂vh9k%&fKHGCђ~0t)?3alqOK& &b衄(V T>E,o fJ;CRЏ+LD8h "P˅R>5F@2vwP6VrkD}nKY)f弈Mq| ?Gks f}1ܿrDxc8ut@".0sthA!Pgrh*CkѢ(C;A\HQNXIΘ 8PKpˉҐǠZ3^x7d+յ,ҵ>C?onU2UWYsf)VMo/K&ԳGԺOkd8*IY&RV-RHuΥ5z7xC}PYjnpRNݐ[b$#uCzGK.I#S@?eO>%ƴΝeeȲWv+~eֱ{ѶgOJťJScax&6;yvU}BrU%s~lmJegζC+WR`Vz RY .5̊ 斫s#U#:5H'k7у'vIp%sV^8TeUx7{f|3;|}1E|YBuc f_>7JN} ^@g8X Zriha_ pˆY478'#uN!zhBY[V!sJ1dӫ,)]Yxd0YXh[Fj|smorgwv%H [E[r5 D‹?[X#Y*V>4UF=%TK_Y_[OR@mq58(gW|lUn,`ˆX6 ʔKH yN0~7N fP":GK@-bl[Y[@<7 G4#2-x }engpI@NhΡeK|k2~^R$gB=JZa֟.JۻT\ElӍY f0+RU)saVlmU`W 7wq tdh:sҁ5. 8.-ɷ,u{ڱ]ZLݴP,`˄ZqMw+I<[lA UC(h!_5ḿ^b91P`$3Y5e*7Q :dv$l4q묚0Ԛ> :㰝Tp׎kte55M~or{%KTʟ._ fQO _Z];̊*#Ģ9&~^Xy]:.z[^v(hpd> qa: @K>%j}_pK!7pbȺ9ÓviCjut1$`K}#‡L7C- 6Eaݪ_N $(=۝9F\ZƳh>Z NC/cDbdMde( /֟AVc߻{#JppKvU K9k$1٫\Y{ۿeKlK9q !92ap8;{62ӋB :hv Nx4Ժ7pnNoW]t>SK{`fC&9\˴0٢ɬ2bg (Ȳ rŅkZhA/L$KalK\L^zL\ҡu(9|Q=x9Y;+r[c:1G8*Ģ=6n fJ޺ \BrBF.9gӊ:n\b;UY+UY7NY3փ{}/: `Js@ ,7lQ؎171j A@ sw\~ E1BVYfXFyNsqij8%gh3ד68Jn24]_bN9UZ*T6sYe)c¡u+/e GY fm=6WoΑaVN6WYwpp0ӥ%, %V{p%pmR : Q:C[3Q<ͧ:)NĒ-Ӟ9ٶ6Gcor Ag -F]N~R*n-(tscN41Ok$p~xpԚ;x & %φEbfwy\\^XŘ>@# @-@92c8dd TG d5-Y)UE pi3ҟdjv6W)\T>5`VN:D2ZY-`pi WnrxOwǥEsi `Ky^4ؒZ ]uh-gpIfiy)͝KfĵggZ důڀKbW65ϲ=οcwp%@ \Z/~I@u"1!1:trx5"՝%к GǩeAN-z!1mu=ˍJfɤc`C8!=/gk`@"yB\a=~جlU6Ӎ"lW6Z6, ܦZu,#3zM{Yh Tӿ9?Djj$u+{+XH g7[dG%1/sfym0^gC1]; Cx3up= .,×GG֐;]ZfI׉A&gV\Z70ßN7NNΧeҚy9ߴ G#-S3~[ȅOj˗SKb|Z;PȢjS7٘6^vl=g/UF,qh )%-YZ}@DwVYۢڠK:JWYbͺ#:=zᔒsgq7-nìG/5u1|T[n<߰\Z]PK#I:& M4ʊ.f<E 4̢Puuy` )U3#ᬧ4+ԕc+W bW-TK?cf΅A/?~pia;ks\yf8Jqͭ=~휔bWJKקͺ2E\Zl0 & +Т.-íE%L6u%]Z7tiuph$D!I>(O5M`8wA* @1 )@- iE\\֚iȔ0gz\Nqȥ5G/QfqjsLmTg~p(y;lk;R{$V]{ǖf8.̊J8Sk@*]ZTvȡqwC;֐~pl*uh]K5糆Z'rC87vfѻvZN-V\Z;M`+VbL 4;Z rce2!${9sara:+lqg|XjGJwӴJګoR}$W%>t5LJwV]ԙap@Kǥ%X JsAer/ C>0#Ң0jV'Zrj)|ͥS @J%wp8, & dze TۉƏS]}okTk\ZEpRͅO5_M}Q5TuUEO'Y5/5GY{ X]{do{$ IDATڶR7V_< h].-pv$V .ayfС7ȣuÃ8 u`Y+*2DmKKH,jTX&8gn~h4 $4\TĭG}ʽeL#PsiUҨr5wVT IwygaoY5¬Ǥ(y5 Ky*߼N\-в]ZB\0 -aϝ0CκȐz . ђ /v2B;n lu#Ppipfɭ&!`c;%zҜB>`y\˕EeʊaS<UFVvQ=X.QkmM%]&>^ݫ7uQN~v +%*aV %`2[i?߰[\Yv,J`t `Ier jqO-zV< `Nb|t'#2ć]AڥÊ㺴N7s'y, LP#nN-1=긢AtHv .-mu.WG-Us)mr{^|FݿU >G~z03Tu70V][~nǔ ?ܪg5,ઁviͼthq-j([;а j=DZC>N:W'Ĥ; =d l.AxaCIdm ' Tf9~Wv(^K0I;,ѵmSj8OveZTدWODҨtg~J{]Y2GY%QfBn\1KK-ǥ9I¬B-#b^.GKbIn<_' ɺaХ,qiQW1O(:\Cٰ]@ӵt\yVsZWNx]X t1g\W<1mjЪ\5YZ@m>eRۗ&pZ\ s/Hk`V2kUϿ +̺rwp@kK$[&{G˗KK:D-#5[~>KvH\Z,juiEa<< &o\rHKGUjeMlEbj[@a] ,,_cu+GYފvK.Ƿ?!r̒l=~Ϛ]Y f+f8nI~n#Y-@`kC96ӡrɥrhI.\20N'tĥZ;ڠ%K+E> 3H&sAC,k[ܢ`ͅ[Qe%c"[ckK˳[D [kPZcLհ>C>Eb/t0}|[T{)]:kY{aqK0k NcЀҒ,4[rHsi wqi]Aj>K '!]'riIul[ǥe"x+\Zm-of?< ΅#Jk򹱘FZT#}E\F*5EWsY]j\Ye>C+jb>ᆹAVjUz5CǗuT30+}EGsg zL C&wrjYaY*PLhT;<j(tHclM){74ϥs&z=[:jx<%hi<5 nR3.|-vi8?vad:*kQoj}|"/ ;.y,~ U\Y?"ګ-Ǖέi&Y1Xκa͝EՀ[g^vi\;\pKOr? qgV,iV'0uipbqCGkę =}=s]Z[5lJVYo5R#0(R,X]W4rKi0f%^Ғ7\Z@<.ys@,g];!QVW. RΏU"0*;k4j0+Oìi0k}-7:Sxƭb5%dR!WҴe9Tvx\pyxaZ8^Gvi @ f'qWCz(@V Cvi1[Ty]Z[J+˲>~2y`خ>Cׁff. «c0߾Ia?&b*ࢧ |>==R;1U"09P ZG4z`v۝}M~6[. .-!'vH_.xАC ⻴|2?Yl p̩%!mi/Tg|hXEXL4E]R}ojڢ~vE;˹a6Qz֑ؒ-F=_Y?)YtFsgj@qi52rsi]C><N#\L)4Dw+.^8Hin7tgƘLQʷ\r}wXpbT̓iʭ\qutU2?/jnf99/i/jY1k0k:bS5XrPysgyԀgW/4 \ěPgpC .rxzx O'+t~T29FZ&RDd.riq "?@J1q]&%tt74d2%4qq}1BխYi,:5Bq (Ԣ{gtm QH&n~ll#{z%7(tMqt(E续_b^^7ͻ(?K |;`V;{[B f+`<7;˧x?+;^߽Ó|2/417O9-"yo0kY]O 5VˡѳGϴF*ZjCD^5I"=Dv؁ %Rrg 9ʥӞLojA;n\0 Y |^ ,9םk\{,llFaHͣEf& ]GwɪgU_Dh=*m'Rp|<q#.۹Kvy ]/T- FcVçK, lǝfML [#,1٧)Tڔckcԝu~|9`~u\ڳRl)HUfe_mxƫj@kBҥ5ri lP>- h!|Z*Vr,vY[ug)9Y"}0s17_pg]*siٍHʱ߆_n{]Wc ꝱkbֳ?7aBuԵ/q\R}+*^$)&}Kκr(%OQwYuGۍ0Tp&8ylρ`YsuwJti=8NE=3pӘPzփqg`L8.@]yټ#a u8Z>riޗ ^6>LE11s0=eƳ z=pf`|7`:Q`beo#33J.0ahyjEZ9ljc^?]g}Ħa:9DWl:4ylMq*zo|PS$O=UJ)É=LJ659*?z"ΚКKܐCjq' =w=TI_2ri|Z[!n1#İsgN--bբLYta3GhJNw8%s\Z::胻\wihN˹gUfr̜߳PĊvԱٯZ.$mxs};kQ,n%OԟR侀1[~\-=v1{l?ʱ3YZ3亴C\G[wcE3өz0ƆCց\UC:und7}LuboܰCP7suʻkz;-.ܰuig]vFkٶf$f}p\T6{zw-њ#zk]Ä:O1by/3.rg>Ȝ[TK]UȊ]gY嶕jOVM hٺ~mejo}߼#x\ZTV/{Z}Ox(?xk^?,vjuL~HKnum.۳3?A*J9f^s<>̚*Xfg h-UˡP=ŋW/|(0g"O<㇤HCC]p'T. ^Ω%Be1Wq ?1hy,7 o8]$,s/wRk(C{l瀺._gos=^N&mC'ڀgYy<帞' ̦,:4Xyo֥MF.65.[c޳.}-rDѓo~©΃>{}9/sםGÅ'$.JAV`֞u8O*L;kZgW/! [=&(1 :=8[=XZ}_C6v1t7:9h=np'00$C hW",sh1lE;})/ @*;~n-97P i-2Kᚋ F.Iaix;cc0_ۃYwا~o==6c˛g>q4PS5=ok]._?o; IDATUZ+3 9${1ri]6 t!aJ#oSz. kQ YC":AVVߤ<6ӚZnCQ|ʷ}0f\,~6 >.ܳ^sK<0SjK`ػGY{0O؝wˏÓos<>'IU*v܊ħIӞ@VJkTaV nSJI6 prf|~x-uCxxxxxxח__ƃ\pQ^0SPN! ER`$|dg-qr%?dx`_"]僓rsfryK`Y2-){-;=+lm^eɣIMZW^/>~'0G ?|bǿu'D=C(q[G 0k/ ocm0k0+ߎK9YZd`1EȠ}h9z^;.""h =4HRLqz0\KΥEASKq'bUiuiK`MiOtCۭ%} g莇K%lKFӣi~1|vhyW|E=O^OOg,1.0v>|H$]9?;{qԶ4>rXu VnRjj 򹴨^Mυ3K@^8~H=K]Z\ ^x8[K:.ʥuCZC )EZjǰWy" Fc5F($gJx탗Qg֔iC!0BLmmJ [5] Qz4U.Jj5+JC6sg'VLIbϏpn\VϨ¬s8eM>w֛o4wV 5QkBa:My!P>z|\H.<\H_ = ?PCxh;B?F^-Tvl9jC" ݖV ! EC P  j,5 AT#zmP5Zr/O^Ї$jkjYBjR ꚨGf^~&w6zOVm}|;7Y+e(J bO%/fmyeKYkϫ>sw;6SZS³40!hءri=2-тvhC-n׶O߉e' 4>G<8$TݞYWIݿ\ V/ZELid֫yc:u~|ǟ*wWs3>gGp8oƄh/,K/Ƙ̊ӆ}|yYnGY}%,y\Pxj9"٣gw{9Ӡ*ztPg !d w=d .2DL^s9q$2i _Cm,ˡŘ5ƇvD`-3c pDg9dgiry?0 X8>}_Y3C$Ee>qR&;13TA*TMs[J_svu3?c}vHUH->WN_܀ZgIgՀuƨ8mp|Isz] ʹc"poЊ"N?9P@@HB߃a[HnDLJeqdπR.KW}TӼ#¬:?t ~g4ؒ{?ŋx8ɷ?:"cf5 >В֟ןɷ?Z?k0ɾ>K>K0khV\6WaZa5YF[R5,w2DHh ᇦS8ǩ]3v(ZZR#h{~ .-pl;jH=޶Ks0lrY7VWJ RS2@(D]Z>}0@jE"un>h0+7z\cb¬eR=z'TZ bIaρ {t\Ii(&ZL;N-uTy{C"-7r.Fm4v {=P ri+uZB/Zw^M} I]xպ&]|3gw{0}NHsƏ¬5@֖cK7kۈu|k0k[uEjtbNE 2ϔQC!сu yVp:tө'tyxܨSwtjɶOLBq//=^}ߋCyK8֣\3rTȤx=t B/tsDsmGpP?FJZ.35PKͭXAg:]^}tոG]Џdsj2>KlH\qx\j^G_rAB"AQs|Jn?fAVzJ{\NXP<63Vvz̳ιJjH@|`L,`S'S rh)EriI蠀G%@K@+`YYW= e- RtH\` I7#[L*uKaO%#9- 簛kx2! q]D@+kը* fUwi0!Q=j6$̒*Z9^~|HRa0^ fqGYi0k^k\~pa&LonN-)M}މ^PN8q;pޡ~e:By@h%^cF^q3[i&u^L2xhO/SfbucawՋt8p " ̘Yr{?gc]1I3 IYO. ~ncὸRx1fˇyw4Dck2 i8t'RMڲ]>v-_um_Y:fZx2owj?UiUR$)mo\pE3a_ ~(呡\,_ ʼ,?%~jAkh32fz,2Y}.?u×n0]7gfNKJ)1ROkg[ .c!mpyEߖѯ8ug~R6QFluƖ6rr)l]~7ܢ׶?ˬ} Ū|Le+{; Põ&vv{YubdֶZ_c8B`a&^G婼ODTX{8]3G브YbriY2+c2NdV{߯Y7+/L9o6~a>pkxsYgin^2̫3啹L0VE꧒eˠH3IpZs{(rښxnh>꾱3m ̥ W`ZN?~vnV6}MW-m٬"wB_RL@Z< A7l+Ǿ>wV$JGf=v) %.$컟o\Y;+3kVu7D-d:c^yyb^K/+]޺tL3.w -;i3[N M[. G%͠RkV!Yet2wIZ5ZZGd[,:b+|n[\luR0zho)6ik/c&>NѴ{Qޝ˲tˬ 6 'YAhed@j rŰy,J1^M֫2fnS0ζ8|/?[CƎWoeP)zwAYݐyՋivѮ?|<~[˵kqr|UxuJ+Wߵʬw2<5ZvU2B|nXC+3_|A%P|$c)/4 jzN/뗯Z_К,X}*',}R5l&; Ӳ(z|{DLn-_M֤|.jô>8t i]bhdzȬ}i=в%Ƒ󞕲"/g96gzdrojX_<] 3ZzZG1Ƽ1^ukGWj}ag.WbE/3N=5T,3 [F~yو2iSMֽr7楝ڨCl6X2>36?pЄ5"2+wZeNlY~1 B }dꙙ#[ gkZ/_?^dfue2Ɲa/F5f=q5e SyMw7Y[\Ր6۶$6Nm㱑uZdYb@fEmSﻴ̊S Y/ݍ ÔÂv>Ŭ廮3sy\. k)]j^^Ts?W)&~ /cDcJ2-JV-ZFi+{AEs Q×psyGq(=KjZ?9I_ڮdV.Rfx3ʬBx7j2 3L=Lgk-o2=e;[pض}X~2q:pde)֛{¡K}dB-F4NC-T)n9?yl_/c:|ŖlۋW6-_ X8l\Mhܯ/S*V"?yR&b^ , 3L=4ƌdb?o:Rk&bkK`-){yYTdM22Jq\0ar)/;V1E :3;l?۹ >[S WE.^HڿG&jBXh9%Rv-g\BƩQfh{|dTVdRe S 5CLKg)Wy1/ʼz5yy\̋\rx1cextĉȚTZD}O>܏4ıO;4Ƙ\]?W7ĕ83J&zJIdVמL5ZJ.Q tc[}ey2{y/,?dwuW 2kuߙnvSxGffm= ̟n[%N,r錽l[f9 JؼZU1" ՄQT$-E\"roY7>Qd.ZJXM=\;wq(_+ֿh؋zH0z]3e.k.fRK/ =eizGqCXʫ0 ݶڟ,&;c+3Vc"m_>(A IDAT 2TQӱ+=քA>()2b!Rx !dڤYNH;6u}JTC%ל܁`ʡ"SS S.;OVɃa=G1Ck)68KٕFX\I^j]A|l[{18<[2ǺKB>l,, 6UrZ;"nQDFd2+<~ؚ9rSfz TCC3;ȣܞez84#eKZ(~)" -d"R1ck(ƿIVWqQfM:=l9R10V c )qqNՇt\-2+vJ6ұCqH;6,rkŅZAh)c6pX걱f"3nRk6|z Rlҭ_iBNCqw?^lu&KIu<ݽwf^g]?۾oI]۷"9\P ; c-1}#E\ɘ_pZ'kQ˵>朆K&h|JD!|CHy=Xf0P/L9Tl}߮3f2%.&S?~uӿGs:Of/+^Lwu_뷛Ը"DmRjucʖ ܾ5pڢ?SYMG\)?>+XtAj>UVesӪȊm"v} i /!5`1S 5CR^$e23Bz b琩2B8W_6[YZhfcts ("z6kzflM, Ο˿?KݝԨE΀/~CxYbHJDf十J7샫Bfۇ\[dnZJ~t5Q0 r L0MM\IZN7ܒZx2k>o:3?؎暈,V57V%=vwjOfs,v+M Bz2fdؒ1[)hEdI_/Zر 7*n#]Wޑ V{|]u.`~rΘG|hN cL5pܛnDíoE1=bݲ?q5|e 1`+LxەY;S ]RpKGאq#ttMhY%_龤ckY1bdVvZG6eVdVv\q5_';K;dh)>{PS vMg *c-+.6263˭ZAɿ]Zl؛AQhͧcuEnRZ{P;46ݬ,3Njp ;Bf `Fאq*xNEʾcKCfW5fۏrvZmÁ̪rS_NØQOV2NR8LAtG4y m;,2gI W eWm+Fĭ$Aή l\ Aא,RKX5 i{DvLMbbMNA6.-bhYS M=-/i'mKb̥#XMEջ lw?Sm*LȆWEJ/Axlᬸ*vϝ\NʑZ_1>Z]7y.m[Xh]o%gIݦf[Y^S!0հ.Ъa1f;e-Ӎ?L{eQ4ͳ>fo2k2<3wѕC!:F?bI㛟#qq5^cuaoq.udl x E>:-2K3>R_oȬt5 5,2L>#_Ȭ@hUzr"fR_ʲ֖ŔmS`;Kk!ˇx3;a7oTyJЛ<ˬ[P$1XZY5 *$#72˾M3Skƅ5Ъ~m͉ZAjz裕zHi˯s2LK;\ Ŗ꩜ h&uu[;76-Efsϧ:Z;$_:Z42K_|ɘڮ:9^gbcL"|'gY ~jX'xc53W3@(V/\p֣Tdd5wROmΡşc՝͇]:H.[C'k­t7\9՟><{ U)qYkN MkL阵_,٘Zu,.\n^Ȭ:AhUl1fY6˫=u{rWf&if.fh06ef0-6wok/s2u=M!֛-ğ5t^i~I~S~s1iON_2ccĴm+% JB)/=nzuBeֶB1Q_ga *d=p*BhZSyeR˒}=.N DZl9ܑTM;6=9N"UfmllsKԭVVB?C iKzZd)2˿~ )2TL:O 2+ q5Ъ/(fRkTc5 Gɿ}V8̄ľv4})-eI~b\)?yN$VzJbi~y%A5V,9&#TH"JB25KTmjYԲGubdR2+2F *ZƘ8IZK:Yyvֲl[%Vffm7sd_. w geYң>ONW\G7*mU{RA./мgY)EfI J_ȒYĊv9"{|g,ʵ^jo[.! *\:- R VKՋ2l1<7q>4Ydo,[[nVSZtuCܤqnfۀSݤeq 4s[9CzZ%E61HՇt\xqJ\ u_9T^cvFcKn=F9_Y7.]{x͇1{r?c.ǗxVvsyی}E?3E SZݴ\nKMvG|^D#%"/Ytx:n1Fphh?gY9K%ƓOy=[ -^*]7U)ʬ:2˷ܷN[_.wT6 C^YN}EXٲ-?zho2,-әY-KG2kwte> EzOا2 aR(̪'64Ȭ{tlxqbϥf;u,S/%9-}!Xj`Uvyǫ|5fkM?xgi3GlqΚZ_Y599HқecgZzn}QҶNbh?^LJ*W*8ڧ8)Q--Fs_)o2+,1^2+k3_l/ujdh5Bp#x|﬏nxz=-3ֺfiY~Ь&}dV7%h堳ov ()|#z4;ɛ5Bʴdl]뙨x_s,)jY)IfI$? Ŵ5--\DՑ]f8uڃ ưe2&i$Ckx5rˍZ< Eӭ.΂okȳq3ξ<YS =%f SBmSkG"V)eVLҿkdV=JqJvV ~q0lME\>L;kL KYL5n\Fe1JpC\~jzjugn{> ݚ]bR2^dVYZR1rZdIǗ)+6FL{dLLx>Եn:{c9&QgufݬAh5¬uP`eQl zf6nլ]f%1JԡmO%X|cO@-EfMfI !FrMu촋>^y9R_dZ~HoY%$ɂo~PP Ba]-+jaP|xg:pgv8۝nk(ټgLK|FN}fv(3@f'YBf X5ˬh~)f=̊Y =_?aݬAh5ouԺ?|mԭoO=tg5-qh 縩Oˮ?n8;P7vTͩ4@fG(FI:Թ1_sCfsN]s=̊|3㫹f XmLZ=J?i!СXECc:{ּJBjdy]@ECjX=Ǝ[ vr$w8, ⲖsrԾH))J# Y7< N}=-O;k<2e[En:rʬ͛tܶ2;dWR}3 2т2F> 2+mLI!SCTkYȬ}y ;>d[#Ru.Z'aXO,2\Vqk\OkVqL?hٚױlr)v:O>‡h%"H"ѷD2+mLM2KIuxWhۘvT>ue+ET eV&e f։ZVd̘-u%I-MwNT騟 bLf׺?1tuPpaIKG۾Y#}̗˜>kYR,8d_S}N,|\dVdVc:#ۯ:75٤Dl w^lz 6.)dWff"׀2@!,}j}I Ǩr} $Af!uMf'2K.2MfB_ -0ۯ_>X{XqYyFՙܫy8uUx6ٹfphy7kGv*Q+=RqIĉQ 7q)y|-?G)ssTgLR}=dOy$}-\?oC0f~:qQq>p97Vǝ EfmlWpMIP0c6;6gwnM-q"mIf6)VIYL$$HK-4ɬk { -ۯ'7.x6qݬG wՙU.tcE\S}j0ECJ3Bf+}$J%r-P)"|2k]G؏#%9מ2ƐVЂ~ +[Al}sc})o_ܝKĭNw剾&vYho1 I*%2J 'h;qZ=ꗨd|WH{;dhG{@[%;[lWޕY&yMD$lqh_Lm =!(u-!H=2+qUfIK2kkL!2+今=EaX/ȏԲn[+vo[wBݰӾK+{TC5m-=!(>Fk91B*TJ2KFN=PZ1׶׏6L9];plٴ^^/yh\Kv8_Y.Aͧ_ؑY&bchi_5ˬuR._m=ʯ_ax؇ -eH1t/m}vҴt-B5v>hWC[)A<9E~2@fz22+EfŌ%m6ȬZSJLf@^$ޘzquFӃ-wfȖeļt| ܺk-jM*[̒%ЮCyCfG*V ݖRfžw2X\!C _]uBkR/bL%ew6|v+'v9 QD> 2+]<-rt\YR]81rrG*\ͥk\Rɬ?Zo6׏RZMt7Ơ/1wۍve \"Zoik#zK ҡEf?)Տ}Dj<1ms,2d]M2.R,0x͇_~~8n_cyUikXйTr\KKt2WE\VOjUd'ElɘDdV"6EW"@ja,>ʷ<>gvE2/%媟[-6!0aH[v ]4 IDAT`ji&9ؐ3CmUj<Ȭ15 5SfInbŊU^ MiYf\Ydo1{R솇{7ARU q'ޯa+s\Pغh@fٚ[fI!uceV~siAfHuƺh[l˸R\/;7A0~И9Sg=SS}PVޝ]wևn |aY7"K_|mB"Ne6I#ίS7@r#!RMBf_8~{;!Cqz_$ޘl|=[ldw-*pܴ~%P✩T)=-ˬl1uK '&2 u2+dYu$d9Mf^1̺~rEfAdhA"l.~}uo(tI*ѠIhEXİbCǨuT[Y1jjJdVxP$9ctVG9-Ej vSO76ڦ&YN=E2+9dX#Jڏe!lEfŴGfi/~zRYU)RdV<5ճ#Y B DZ:rF/u.VeV*(HD "Ko|dVEFa"V2N-Ŭ,zȬr .\٘IXC Dѷ_ͯ G^_nٸUFgK,!?Yj5[zȬ1H vd= 6D\YqcduG2K`p-28Z 7~pU_BK1nMZK;CrigYȬضIHVETJoOه Y׆_ECJٳCe$.q8NB+).t/һ>=nKM?n+"}ZhZ>-ɬ"I>JʬSh]dȃqܤּ/[+`{$"YOR v[fإHx*WѲ mWBf9+˷M)Zl0B ` -^{֛f7{uyHNB. 7seȬ2qYeۦJ<)2w|Ȭe5Sw ;7d$IkszCUBo_J?_˷4킖q@t22+RײfyB $#SEdV::1ۏ~g)&YO]t0ޛhV*È//0U1>uk`DKC%# mQm6U1R%dO1u]?# ?-HΦ2&[ZfPXЃd_M8\#XYibj̊oSJf:ڵR/Vf]rEBf=! -»?o>2Nj:SWK)桗Y}?p|}i*WzfOH;MDbpZY9hJ-bdVȵl̂d^m/;c`)RkuW,A17iyQrgݴzδO%y<ĩIfikD@AxuȬLڽ}5 dhA6VƸel= ZxDEC59 mJ6W~jCѸEs}YbMfi)9K-ѷ_JzIɬT۵uV[gЋ1o~S~Ђ8K-cQG,~,(ƘUˬ=]xǢq[YAfmW?D{ ʲ십:YK.2 ЂxI-cŖԊ"R6oef Fj~cѺƅJ^{&q6X2˿<&ke]̂Rds5׏iLx&UF &RRfdzne?Cкƕߔ̒k_K;M}HׂiIUZf|GmW=2 C ޙL_pԑK3ƭL/ճJˬ֏TX)'eɱ;e?)b#dSڤoZϳ㞢#-b --λк~r5o_4r (Se:`TeХl9 ~Ad fAFnv>U.!cnɨPqwbvY ~x 7co PGqu2 jYK-cbK4[˵#s,^DȬiXKW!EfiAUNgY"7^ w2 jU#f[2-Fc|Cf)@5hCqjYd=2+}2D*t[,[y Ђxųyg70["2˳H|*4=5CuUFۦ%ڕ\YY.u 3||xYP'-}e̮[DW= wdگ3d:Ufi̒i!JҒSW&x,T˱2fs堆B/%# 2 B "K_|mYYqY2m 4)%\ň%eVlЬi=̂AhADIMA /7i⎨gk-O8@\ǙfeIBfhE~_9h8Ȭuc8~AfA zܤ1.ZA۝2K2 uMk+"+U|dVH/Gus U{ۥ$W8!Zc0fW {Y -hws}ę /dYN@9jJ9wgʒW:2+O2+׹p sfeԑμ Q%Gf̂@hA3K-cVZYmVYY s_z-T[ʊStFr{k2K;B |n^ \dwtەv6q3+Ky4HTƞ6׵ OƧk]zuRmVeVG2.tGfݾwCfAs1djuY=ԉ|LܑvlnqL G+W~G,xȬtRg(YON [* eś'3 M2ZD%\/uFI. i\jٯHgʬYcd1mJfIؾB㧖\)-_,'Y2-h2"V$Y~ۜiEV>$jY1Ym4+M錶VIgUI}?@f AhAX1aȧ:J&Jϵߓ^N*7"l\dV\Vdo}dRǬF&gQϱZ,8-hMeLZKId̪NWr)zȉc*%Wjx娓Bt,\!rhzޘ?CfA JTX" <YZYPZVEV~,X,~j3>u$MHɬTKIe>gW {Yp&Zp Ϲ\pߐeAfA 4Rc]d̊o*S,.RfIo%\ĴЂSge>_#IQl+QͷC/?G9o]$$cjG麥2RזuT'Ҕe+s[[ȬWs }/ m#2|#ZUVz# K-c[.Č64 [@Χ Rŗ%N2K*]Wqbc*JeeMY|Ff I-*q@?YY$)-|j?15OeVL2/Xp`"1N%4 YXϗ$R&J@fO[s^jVJr.;:VGujGd1-R˵N@fBX`M+G~ ԒfIZOTqsde)UJ\dheLz%Ѿ Yچmc]flJ3JU].%|۸uܾs pZly2Tbiq%d볂k :U&%\]/v?CKIu|zvd֛c>s@ '[+E,!YZEfI }=k=gZxZsjVVlmY2us,Xdeom[fdrmYDfALj@ndߞ/k72+O}dV"b$Q׭:2 3eL_*L% fiE1pl`k?2+O}d_>uk۞ZrYYY=,`ZS/ ! b+SeRr#!EfŵEf*dӒMZp|y{ռ~V"|T&Y 2 ǞDdLd6O]dvmYY{\kݣ:!b[|fn? r̰XĖ cO㷙wԘkCz7Y/ 7- S]8QVb*Ȭ|,9[JZ>.Z-8*b%צ,.dT22˘3," 2[Wi&FRj[>$R&$ ԗT1Yy1+kVgDfC( B 0u\p@b+:;+T wyVw$Vg m Mx&rdemY.eZ.[ve C.1&DYYiS5;ҚU~$-[B @ASI*V#@-5.DV"+=YY2uYۥe֙Mh`eزsK)CsZV%V>J+#w[dzeV,*xWryCh_<^d ,z7KTkAFf饶պJO"+6FȬb]eoYYGP-w/?[q7ITH:D1i<Zؔ{"+El-2dR*G m"[+Vnfe<>^??f!vZ'@2 7 sAnţ.*C+ǡ~UتȒ3*,:%dVhL ʵNÛJ?ՊD7~E%KXz5gc]ZBI ++Mr9̊+!$d&S (?6l ƻ+r U-w}DV8-폆}=+El-YYjZ~{6mjɥIffeL>_6-O %&))J;=2kM-E~r *bchY!mdq*RhEfIʫmmz'8-'X0~[hRx4s)u64#$VdVؚ륖YDWɕCpI!&Y< NϟOr [)c;:2h;.-]w4[YϐR'\2dsc1Lnyc!@h D@i#vMp/1FdV$VDVl#oGfeiձ1 Nϟͻ?y?B_C@ArtnQdC#kLLtI%JI/dVr N͗rU-B$RNT\jܵ mԲ^g#ے^mjը"+ Z''O'O'Gc]~ mEdj%Y*uvm, <W/ѣ=kKxz7m]4GZõ#T,dL +r{m-ɬ,~ ܧ >W9P6uVJ{Ԝ5#RzXiEd REf!bom YL1)-q_0{; R]v頵hלc@d^cVo}YYYrec[s  X򏿼/Jj%Nтr,si[X)bkY1Μ[fUZv&V"+ @h&]qNr MжSutv YY>use\I R1msK+׺2+Vl-XAh.+$mKqJ&%ȊiOVzkJ]"}څ8Փ[n*Zʦ?5*>"+o; r*U]dVZYXG ﵵ[ֆ~kBBޣqgK2n"+6[T'THŴ*bVZ]X+ @h7?6] iZBArpoMdQr9֜%6NOVv_F2˵L:kO~"Ah@0QZˤ6Uݜ 6~*"ҵ"rK*X%dU66P5Yde@,-":[Gܲ{ -ݭ[Y)hoQzs_5",|ې_U2[KZfYY B D&Z1'n|ǩUf.erfbVkҢ*v{)S7VnIdee @?{OC̱ΖD;HGwZEVʸѴǒ?"t "˷MKYY.J.[\b<~v5߼ @{2O?yr"rg| ]r̚qH$Bڑ&;[$fnyoIfkZlIc ңy%ƖODDO}iSx^Jfԍ[!YYede@jZlrK*Ա}4=J6%%߆,:Չ[[} -HwVO."Vh|9dyD1($Y1sR:-ږRffi Ah@6qM)KhEdRz_r9K*V"+MKYYR9dtV (#+ r|G_gk'R%W X[VV pտl,XDVh[m"˧>YY:IKr_+6ʮ]R --(ϟͻ?~W(P5ɮ%[[VV)2^$|DVhTYVbט#m#Yqo~P %xbfuDvWoQdC6%O*"+~麭demO}US7Vn ee14/?%Ti\0RƬq}2%UĒ_,ZZ;hj?ĉ&V~75++e\m}1ќч__ZP%+K,Dhx'wO¥l,e6J1pG;"+&REb,|۔KV,[y,OaB B }yrH>I) Zur弸Pr5J,ɘ,6deNVcK^Ahjf]H"Nhz94%Vy&N+%b%+˵bz!B kSnYUYyce,faI--bڷ |ꗨWZdmϑML:+Ad@5 *k*RV%wCfRFdɷ)-\뒕W^qVd@ :!HU;"+̒B^X)꒕MMYYL/Ah@-c%&$5%'u,3}R"+-"˯ٕmquT'$+k" Z4 'Di[g;X~'I9_JzYYL/V@h@3|՗/>U|BdCRSuP[6Vh;-"˧6RYYo[Ke:Ah@SUj=B*|Ydmξ*rD/ ҂ I&ULJצRUUtzy㷖Jgv\LE1Z mעr+bcH +6)L/YB> 6WڂjYq~>% Y.ujʊ_1xV" ` B `Ϟ>2bDSBr,4gH}^s]bI*W"kBI|S~x3,=Zx-cF*% Ϛ#F$VhmJOC%\}z(B }2?{v[ckJBrPݯ6%SuMGĊk:mEȺ~v59" @^ۈUHc4!ieb+4 i*{ Z X@0هYXg\>eM2Vi颡mԔDDV:9E޶PiZ+D@JZxٳyR؂V5gY,xfc9:ڞ:++Z>Gdq\@U2QZdWMP5K5)b劯\n2˷>"x[rBd-X -8-c-ݳ%O̪us3+] ]^RdM}@Ė1 ɕ21j:1KL+t."~p3 J(:[SJ.46JC6ML[ iaZk]DvyZEa}X $-QnXȒ%Nb*sI!$$Y{6ƋB @ه0$%Z]rEȒU:c,l6,yMRdY̓PϞ͇}0Ot/6PΖklg&tT$"|ۥ^xe+O%6b~p3Ϯ, 7OE2Q!.sYbha)b:6fcEdM),qYZ0x8*-Z$;k8%eTYXI,"+Bczi-cʮuJ"㕖YD8%oRX,6Vx@xem~Lݿ)pKlжbk˷i.ur,,P7C6@+ `2-9Ɓ^þKɵH,z)kY! -ܾ"-h~ZwZ%d\-qj9Kl,z疲wŴB@h4?9dm &-"UrkƒUZ YH,ukVMZpX8O<+ygcI*-vj-{MĜX.uY3n߿8-OkX+eS6lk?Kfc֋6xT'rBl-~z5;@h笭~卑H,xN/iSfհdcoAd-l,s89^Y[S$%UMKۻf,bc zrmEbԭYdVZ昕E6 `` !S!}Ηk)AdiqvH,WJe6R!X0ViD+, ЩҴFD2ria\3еa]?Eb6-إZO}ޖBt)n]bI: mAŴI5C:Z{!# `8,ayqSuEVh[mȷع$KXR" ! z6O| k|GEbAVVukVPd]?XAh@4mQLJw} YwZ/Vb)-bĚ.HQK^"\nz׾"KGTtAX)EVh\" YZKXHލ%T"++m= cm@d b}ʔBHB $a!ȵ% >YY}cYH, B ,U9wc!+6f҆,:E J< 'ֵZƊiJ_"+5@ -P 嗸 )"$b dj^q^?Ab>Zaj_LM W5 ҶVim |jɸ:SȺ}[[SUJ]5JK-,hY,,$B pjRkɴEdדUrb*! B /qٕJLI(,zYq޾{WH,48Xw «ԻJOKDd0u0vZXݾ{Zw1yk5+#kkqjkZ2$Vc6֐]]Zpה9Z5IvDVkS sfcY +f-c^%>hXqrOGԖȊk֣x˧a.+R*^ô$VhTS}k[먎B`]??0`[kJYZ (|uج+^`;6-גڅWO D DV\="Kp1w?-f|XWaMҟR_tDm˧釹DA!$@h?=[˗$6QZZg>h1-EE/j_LEfAcFiH B #)QJINA,%\BE{i5< s( j( VOnB @!^k$bbh[^ve6PB e/[̊OXO0-eh%^}:p fiZbuֳN챕Yl>'LտaɖZNCR@ yTnN +Ah@U*=&WaQ/IENDB`hkl-5.1.7/Documentation/figures/B_b.png0000664000175000017500000002540215136610356016742 0ustar00piccapiccaPNG  IHDRbMsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx{]יo}`c q׻k/>IZ-jo N\(Y)43EUƘ/x秸5R @Q|Oƻ]jW1g 5veo~3Μ}~s?ykkkFuSgv: ٚ;'S^$XZa<^ׯ'b`:>{z푵X>ZalNOEu`lbihv`DZQ,\.Ǻ.ϑOI7φ~c=K`i$QcE)p`l}XL9??`L06\糶$iYXX8pcqmm-KKKv\Cq8RUzvP&q`r{Er!\vo&ρ+ͽo 40un.=KC0P$( F#E"@`H0P$(͝7:gVN]ףc;Ihn7NgԗqlgXZZ[/DaH0Pt&Y|Й+w$I~1r`|{wVgggO3ƹ+IIz*#9u0~L+W\=E0>N;rlfw~Kȩ̴v̌F)s`|'c3<_ O}/6666OT8q0>'37w%fUV|V8{쉴Z]l666裟<0z'TZ7j2;;7nG#48q0>Vk&n8Q0/ΥyˎVffZG90r' Tff_:|H0lE4;Q0}'igϹ7oc=~((^/ZiZi~tW;ޟ$w#ͳJFxʕ̴bqf$$<&`;MVΞ Gy4W\a=1ʯFIv`|OmbtecVLcۏLv߃1˜$܏`+xV:cp~ǟ8U02GG~+#iu`|'233g_vqcc#}jַT֟:cN'y[t:6 !( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( F#E"@`H0P$( FRJzԗcG0–nY/Ǝ`-KYJt ,MTSu4(`ܨ/Bj{|RutMN &`djfa:YN2h#\zuѫY{ȥ׬&E8F.=[ #E"@=L[T[G02o{sK02TYiLp0z" ?^(O02Qq)KD# #\ QW;餵OMvx;J>juI?f5KYJ7T=#cqf/&M=_vFZ*YM;]WY6-7Ysd?3Mx>Lv{"+\"͉@#!f0`Rq8(6=\"M(V?֜ #FE=Vdۏ^A1RܸXai2Ҹ{:E #0@`H0P$( F#E"@`H02vգ``dTcը/"{ޔe{F.c_XG})?Sӭo}TwW$`ԟż{^?—/&kQ_`d$?yL7/F.\:Y|bZ/o9W?OW4s.ꗪt|{?|#~ȅtM^<$&2+u仒,s%sy^dn>}c'JگFyFDXťM$Ir%d.FwFNN_&/ͮ$/Lk&O?on&IL+OwI4'1y{A^/lܸ5 TWr#'V@}0I#gNnɇ,iigu9l~Q^*pLn͙XbA8&IG;h'gԟTR]Z*I*U{A2TQt;p`T#9fEq)K\ FNdxIgԗ#ȉ4hO0rlãh]` F(.ȱ4(Y't5KF0r$u,g(.!ȑE%-h#EF`((H#0E >F0.F^]#یF쌢n$;^0v#ۣvF>EשG{1XQ4p;SE%/,&1%լ(E#/!h8%d `dQ4p1NB0^FI K(8 x E!Q4pZqEgA0N1h,)լ(.eiL<8GѝtF}9SEE,)3&TQ4`48_Fk(Ml0E\ Fh1h pq&..Q4Ś`lV4 D&&GѝtF}9c3k"qx `4&"hu0vI7]h`Sg9F#6h 02Q4x`4/cFgdXUI]m LLct:;oELc=xmkh` 48<:# uq1Ykh`-- ~6̉IZ?˃//~o(y1;}lGl^Wd2FNy/l2NS:x`~/Gyu-U:U}8; U+vYXX¾]&.$UVE_٪1K/Db} $:YҮT40ٚ߂m'eeeeO4>:KExGSXC}JkkkzF^/ _8?bv}zY[[KxKTu"4:tQzt9q1^w?\~=᱘awq?@k=]SuvځG %Xmk}n{3^[[^ܫ־u]ZgA#pUUu .FqRA.3(kk6TEBt:;+gx`e{HƺY\XX*UYE`ƥQ\ )z^M~nqr8Zsjwr]zw~|p>3#[YYIwnG[ +?[Y677jj?ּjO"a r^dsO2$r6|`y9?niqx8\0233; F>GHw'I{=׽vd׽o| ƽ_+^?Ya]wN_ ]IDAT&y'I}ka`=7'{l|[Q>ڿ ͕+W'II9|Gͻ+I6;cP>㖇?8dl翐?֭llސ~aNʛyW~O|#n~tGZIۡ=A8@rM|_Gh`H5ٝ w^v?v{rss#쟽7y5yl~g޹]s͵kx|Ź3 _]['z1|?ܻzMu}ms^oϫ_1;~M@n6/ldwD>n~{y97RnWou-$iZ;fq7v@~+Y__^ڭ}gq~~~_w|V_vZ>#ssM?~Pu}9zg7#[`EϦ;?Wܺ~oc]0^LMbwʝx`~)pmnV ZEzzmoQ_>}aϏ7x^kfvv.oxKy߸9u=ݮ0i]tKKy6yܰ5O=xPQx3~kz}3AO4c>Kq]?n?gff?s˵M 6.jxuUv>毶۹Y8o|ݟD ?ps]پ$qvb'>?򕿓ڷj+arOAg҈jSUC=zpԗqb  Oz0&Ouu}M \X׃xWWz pn~+++G'CʮPuoMH/~KQwƃƜ:cz,_{^<>xgs{a+}IUUѸRu^x!WK[Hrg]G:0r{xؿPUUYZZæۮ]N};Ɓ{ޞwz]?ࠀi~8ŵvYNwf,U5xv=>nS`={F;dOz.D5Ӽg}69KLDIo28{4 K!ڬJV6UAcr( 21sx9% D@0`mKr0vA>2~-bϗSUq;~岖 6b `N:%I:txO`A0@#BAKA p/Nl?Zr- :W*Inu?A0r#9jvl~^ =)=#BAbGwnji#%=ss]|^ *`Pv|b;U.U.U*t!ٶ/,,P!*:i;TrYN|>b:oaaA:d}4[,tĘSX,mkC)I*J*˛_^^&TkTB'A)>̌fffg)Qp[`#*@3+Ў8*J[Na7m@kTX gW>46p15̴X,N  Jv ^-H 9*`T @PnXA?-,,ȶm  00I观_ԩS\}7|j|N oL5jN /)`Pvdqt\ܧ;6**˲wcV'MKM88W*鞹9-(LN:u)+.1AI^O5z $Iw} מ^7p**kffeXU.8`[L AYXXlX:tB"ӄbz TG|}hhj*p wTXNfjHz킦v!U8iP6  rQ8Զ !Hb/.?;qE@c`j8OqF@cuC?!F? $U$]tfuEOo 1qҶLJߴ$άuZA?ΊX(1 .˟xm67h67g58ŢNڶ@B1A 8gn.諫Z '.T+\ IC@ 䞩 BI X@P@$gj+[T!D$@{}T~l?k@0A#lzUTnu?AFT0G'm;QTEz zq0ѽtt]\#h?&`, Z,>gj+NP5Kb?}Os?&`D=SI 3ի$S37G?FT0GB ʷ (ЍUxܧ0Ҙ!JJ8=S :{2>O}*# b`JaYLV'ln:SbQGaO}qc铟|(SiIZ4uVJR OOUO=xܧ0!%)H_Tt/)EJ%37_ydI(yk~;@@1KjԕOd@ *kU9wQc$MLL衇X+~$]V|S^kά{k< ]rI>M]FT˖ǟVIP8uU:(ln:k'm"-|gf庮$OyO&SITKž{>IZTTIA?֖>'J)D1zO|f?'m;1SLj&Zk%iktl~^ 7UZ_ꊞ{<ӗdܧ0rZ,tĘDSWS85lfs:@b$H?U6;!c$s%IRij5}3*p/=S׍p/)AUj--S:yZD7,KVGB&qaZkB\4j\^#ڻ&cv]W>ׯڵZYy^tF_q&Ha dP=ss *.u~9M}*}X,1cÏ}V0=I224k*k~]" {G05I !:{21?=b{@w%ѰrZљ]V>% ^#ƛJYZ[kVv]ʚ][&'St *RXu>잃ݗs?Qnpϲ$m(I7Ɵ2Hb[TЅLIL p/IAUΞ=t:-€*|5졲JT VK{>*|I1+~$uX[m;SّW굺ᆽJX`԰M -qF_]V;ΙY]4f^nT:1F[WVUժV5]~Mjr2/~>}ǟHP8uU:_éq0NI"~DLFX2FJ~eSTq5?P{I홺,z&OO#>jyiTY)`&$j^۔JI CV- aQeV;_g 0BAGIL0%|Se67$fOP~O}8NQ뀖~_{' 0(I0VGB)V_ ՊάB-oWyjJPZz)K_wܦO>m@@`,$1{@P+>:6?cCQ~0+Ogϝ4F [,ue>6:3+qF_wnOcbO`A ž$SLSiݻ~**8:iۉ *.)t`&{%*:W*5*$D9iۺgn.1]SIOM tܧ7J%Br;*%%փ)/i QAb@PiKȞ"$*GP0gꞹOonJr?k ȡg $S-S*#)`p~LSIS*C)`$u폠 `PZI홺,z0ܢTIA?p#0 L15Qq0ՉO4p!0TžLa%?B@`(|I .u>$G/*L%m` I~#O#*IZϔDT'*.=SE03NڟD?@$LUD]KJPS;스L]D!UI\#,*%%3Nd?kC@` )`%*\#?*}L37 =S@@' =SIr?v %g!J4U?I}Fג$jO)V;w.T+: Jܧc-'TԞ"vS*)ΕJ" , bLV'Hd?k!БgjXT)`$ꞹ9:@@`K:_҂bV_Rm}*C @KўL/JTP$i=S=S TO%IdELn67?~*(*"z TTqG@L]D Lµ?*01X(1 $zq~*8" =S&iTA'Tg @E~*0N1@qq0MT KbU3`{a?UR$@P %gu>TE HhTRu>)Jj?k IX,L_OuT {G0`POTQE@$LUDC? FL{}"NO?("FHz$z p/IAbTXrDL]2NAfT%=S]Ġ?0!E+T"T`(PCfPcLILmS 0$F?P1Kje3 yTIA?T@3$;&r1LSXP1HbUL?a@?IXP(\Kb|Y*O]J=SQRC?8*` DS@kSt g*i|SЙt$P}Ğ^DTO 裤L]D`ąAUD@AΗ`Jg a67~*NP;8왺()SE@/=S}*}C$SE@t)@?%jX t P{)a?UR$@m$gu>>I]#[!HjeLS%T`+T@ Bb{Xq0ՉO4""9mQ`%?a01e^ nu?Ac *s1FKF(eG=SlI:b T1*_m\@jԂ*z`|O c)cn©a J()Giݻ~*00V;h@jئ*)`ETT006PЯѠpjž+1UI\# 0~Ͷ⎧a폞)vfsӉb"B}qӘZPvR z)@OT<TH?- }RoNW)ND~* &"tiN)u^3觃l" (sDdoЪZ*zS%eO $ BbPPanNRoaT:~Ta|A TE!B"GV:]T'U/T:`7%?FFڣk+:5{LKX`4Pad=8*W5tҪ݄Z:`X$*\#`Pa$PнA8ՠ.FSF@sm/)n)^ *IkS00Rm=V*I:uh# U$}S~@( TO! ۔w$5?ލ~*#TeȘM'jO aB@BN_EWE0Hp/IAUOJT@U,U.> cmx Vr@%*\#  $ԩSqp jT뒾"i@$?v_CIST BAok0_4к"m,iTAx}rp\㚙Ia׽ŶOǝZiOcO~Oܧ14.T+zʥO T4¥~5R_0Sk)#B\Z;3+qF_T08O ԏihu>쮷SFàpۅݼvYҳ[|=ܴfsz%]&㚶ŢG jq2TNB}FoڶaP\vc>:qt>]Vtfu%AUOuK>o& qCɶm©}=>vꚤK"3FP~s38>8~&m[/g 0Bj'驻;@֦]|*r p q{I짺U(ȓXlf-rrۭz1[^uKyi2f C(F"S^BNiq?˟0%Jn[S=8OJJInVnp zp Neݙ7*#%P!otN *NN q!ڙ$SnBVZʨue57vAUȭ9j\=rSyK~p5kۚ -&NUIψp T UUDp é0~xOۭz-z?\lTmXՂ[0zm.KY vۻ~Ws^T URPuQ~sMRVdpjs8* S æ*U[ͷjsX?5? Iw3]蓡 JAx|rqվ𸙙M{GS;yAUN q!a^*fRҔ֧-¢)7Tͷ=!y_|ݛlau* E@^/H-,,hyyYj\\.ԩS@*|.z;"SRsS"B\gUIWNSZ h0S)SseGoQ<2 hVU8]c_׬m*@q@N5Kw}ŢU.%IN|0Ԙyq6S`.sݾoǒ,O0f:w_kߐoZR馏avav_E~*:-vN|VV"?bQbQiI+l[Vk@zޡCX^wg'yqt\@H6u\¬D8Mk67\i˟%[JRW.Rǭ[wت_]PUUn* 7Jp{O^,N֝YhÊ7.Z^^޲;*\ S?~g éV? vDŽ Gѽt0UI/KYMJQtp#?_&ZvLd[aa{~ME{OptC W3MOl'#?zqbQwQ(< hU%pORcΪ"uq=LN5;U@#)FMwZW. NaH<%ZMImofkNJbOކi'dU6OEjy/:ޯJZ nSU?T@1TaݕR%N9vTO/E`& jBT8--=$Gp IDATFV $EgE|?mVZe7&S8[,?Nc- VS-':TS$ RWԲ\|HmtJ?t Ƥ?X,#cRRRVJTJV*\yA$y )U} &jM]9z8Jx_sX [,4?{ =8:W*2F۶nmc?׻|K@v}N۶\@AU_;ZBAFXc zP{PoЇ:X&FoٶSnAWS$W?"o*_tJ*,cJNgNhj*)c<[W^WVSmjjn ƟXJM$c2X&Qv*d?I庮ӭ׃ەWTU#U^vAUxKyoxŢX>ZLT=8kjz\ɕ~1ڀ) PhLNH5?ߏ8)CHKҷ '<ˤ0(䔦et}kWUVT &/a P4Z7?XfRX,Ki+t?t*LvR%+ZUjEjpE0j3]Lim.QotLplz?37YAoڶ-n'\ϓ\WFْ{_Z -O8X|w^E7idwII'OXiMLLhrjrJu]~M/}#Id"HJ9h)}Y,eW,RʲN4&s]UU><] }! *"?Iam[yB$jP)xmTc @ܴfs=U*kPY>IdtHT u_pU~%?40v'b%ѱBAG#q=8>_I(?\٫k5.K+tܜnUtmk?R(4u4<]e]UJ)NkjbJ=7u몬Z]kLUyn1UܢaUփ)I7#7je *i@^ЂJg|P{[}k$U(D Ξ=SNiffF7tӆJW\$:tHv[NOmu 4oA<0Ocw?s&@nHS:yNqZ{^ߔt9]kzaӠ}}yYp$ w۶~P m[S33&k岪>-UVʚ*Պ1R,T|f/+G8%}]$(dL˕֥ K9'>_j}C]}ܠ\.Lޜ ]sJ%}<=l DJћmTu^' ft/:b{mHuty=y[וjEV+tꊔJ)7}n&rdRJKiciI Iۄrw&ci2K+tKG>F'2j}Z<]Oz]o|kzk06_q:t|f :~`NmN]M{{\Swi@3ٸOoEm-BA?8-O>y}ZUW+=ZE9pMڳMNL*J+mAUR5US(cY2~(2Zév!zꮫ5O#?`v= rYrYw}dVbL|I[U藣{} ~}UyOy=yz֭jE LߨjjrҖ1(TMh=+&5*5H-T4zzTszq{Л]Ғ$*rGrYm7:fffteJ%ƱgϞ% tP/Q[=otP!.tP%SkqN_|}yYAhT쟙w۶^[(hE57eZhWդ&&&*ϓm\݋dܔtNG6ω[uT2tЭWXZ_ c%6~{~g> ;#}R+uzzysWM} S_B/}{> ؙYMּ}O-zqTv.5-i2\KYe'H]WZ&Kë]R[F\F W zކWXe1J[d0jb ?_3|]xŝCTJ?ŢU8KkN"B\W.Bi-  $o }qR/@7FrII u=OOZ4=~ߠs>+W.kZ[Z*+_*ޡW.}"Swڶآ^4Vy/O B@5~.T+:o  P*FI0RnbJ\]~MjE+n]<>Ee\4J}Rc* jRQ:]U'OIKK絺U*kV+ժ__$uauxOiz2N$n^{NS6#B\ׅjE\iձypE *YҤ4Ji&'&KA0SaP_sPSUi0$uW)c)N^W{XG@{yΫRYڵouTrz#rݺjFWTJK _ɓ[ *?AQT  zXM24F$iVHH >ELT?_k1MW4Utݯ&?jҖtFv@@7a^}1AUOWBhz{v{O*H]d?U胅>U*}T#6uSf=RNea8NS 뒮,I?z?G499zTUʟD<7]WWwڶP*m@IG8`+T Tڟ$]'キ3`*m i~Tp;0O`oEZMtV&&&599\n&''dNJddNZl $顇 B;eV;f'G_gNw0ѽ4TfXc8 %hIJ5ݬS oR)%O,cdYF)$lp4%)8Я@@ՑvEj5RieĔ&&N*(J)NU~] :w+jyI_&i qAI ZUTT* e,YRXjcHzH'z׼FR@Pu;n;QeY)ә`ʿMLLhbbR섮_ZP8J>ߊuT9ڽ6`Xut>d>8W*鞹U_-do2TקAPr=u7c)m,L# I!UcTt ؈ ~vJ2d°jBz]++|`ڷ}5ΧNQݻ/S0߅h@5UͷhXG0Tk~H%ilT{OW]wivyӐjkIl"Ou0hdêk~X<* ,c)eYJ[4UeG5%i:\UgOTz|wI, zRJҺvcggѣ?_a Zu@uz\/ANd '\S=UXeɊU[Q*ʸ z?HQ$U^}:OUη%/^yde3Oo:…:z4;{$_m]ݸj_+:y9/\KJPUTR=OmVgX~XeڧT 7?ʸ2TiLSez/դ֧!կ5=vO%R9pkz{@g<ٗĉjUq{q-©NBNd/Q~^^j +ɓ*VYªp *~_XIT7Ғjzk^`]Pc:rty}YZ.\Μ|.]rnI7t.{_"I݅O^AZ>A.-߸sV3qF TBǹRIŢnm=ϖS+5~6ݼ ` P ,Jk{5@n eME_t%e^W&j򼭏;|㒤SNiaaAry'j4|n)0ޒOuO/  jSsG pWТ+NqS q! Y]љՕOM#O:ܦP*W^2끕!RWy aTjƨfYJjTת%=#ֹHI0f,R>|XwuX'Ovvվ-//СCm{ A `{=M|y`*$U>[}8Az*ą B\4jkBA{$1FGz~^/$P0jm[_ ¬N©AS} q!°Jڟ$wLSˊ;۶uqIҩSrxC{[ۉVCWvlnZ'L6S{tҶ»>@1ArYNc} *ą *$S]wɶomv*aµ T^oAՒ0XT FIw\ Ɗ_ض-[5unտeN N?tܧ7/-C?>S_㜋= JDpK~* $S3Z)~||ܧU<8zTT"^GѽT%Z)(~#Ap0nj;}ZۧKzF_)}@ss*ոO H/J35mP?TXOezHJ9BO>%@T beȴ~ǝ0,fs [f^O]w˘ UB|d>?U?#VF].=bdۿ.\ܧP%bQRhW6 Ob=WJ_mzܧU"|P]7aNV'a?UR$?z>sLS@t=%u?AUrO_FAѬ>񹟑m)SE@5ж{nl J0JeOPO \*m> j*zܳb`dubS^]ߕmYhܧcj9+m>׺9)~Y}L+׏ }:0FT9=ATIf?Ճɶ>H<vogE@_R{bV`FPNNW}s@%1u; @"PpzT'Ƕz-z38M'jOzm-9NܧB@5bʎ/S`&͉`,ET+tܜNvܧA@5bi0ӫ1=nAUΕJ:b OF' IDATՈyX`nSln:qT"kCT#L/AT?ӟtۓ"O]#PLmw,S$S!FMxTOvq@'OX,O] SRv[F@A 2M%OJ}ǚ$vN$]VtfuE nu?Ad?=qZxjT5aSJ)QJ)YJɒjUW]9W$K^h&SLfM3B$=u?؀ !pE'RoR͏zݝ6@ߝY}άPj6Ֆ|h5ruB)8jop/ _vad6| ~r՗uIm)LX\%f:άJܧŢEwnOՐl:uP a0}|zfs_RuU)՜&4 M*)!h ~6Uɩ06r#a*X~UUrKՌn%K/Uܳ%lnZi=pR"$5 U+~Cˎ? {>!*Ï?ąP!nE}]kД&5F85 Rhj'Bk1|g?SXnKI)eJc\Y0kU!tQ=[=nN =S!}`jRS5I0^ϟ1҆9)Qw]g筮EN*wCPFBhXU >zJ˕j0t]TZݫ 3zt{t&UUUHy? r fsӚM'*Z,8H$&}&,l>0b qas=SQYMݬ)є4Ie5Ѣc*AO-@7&Rֺ*m6V;ZɿU6\VsO՚Z{]]TVĕ|j~o5$5&RR*wdW#Sw-7`Soԯ*CZ坡J dTPfR!QWSUIlTRɨ=DB|eJLĒ "hBՠ*8UFxq=H"srL^c!d7Im8wҿX) NPY+*9:q leՂ6lM)!J `fff`nSp;l0J}:%C ddDxDddRyC+-RTTê"_lIz0KRMTpb=6M`%sL`i˂b`)?ϷG}d4 qBR& yr-k u}A|f1.Zl]R6R$JN45r5!e$$8㋐Eɤ>YMU)N 88]WZpJ d-%93JMR92zMU%v$ՊDuJvt*!dZE|LObXLuR%ћyqtKFfTDTPY,Qh(eo%*"""{|~aLL]\Ѝo&S] pE8Mp5lB2@t>$IB"G"GRN"L )'HNSN{ A?UeppE8"DgSfx\$K' % SU|g7TkeJɰ!T: " qePc_ڛ TH1ԋ4hkOq~TXATV\/DDDDE؍4P`֠u+LBۍ\Ͱl1D0yC,,F/"#TKv(h{m LovmJhr6B $Vť$jh=L]ҧR|1}qSu 82%'}w0tRe+?% %}T?7Ce{oUOۂ?")젲_ +ErAEfarY KAǺыrOp6։UʔYDI 1eZJN !e2d]]OGl(Ov+~h7WvMTVf.8" C$ Nu__}տP)Qz忄Zn mBրT%ZzMㄖaU>*͎O7]׻Ò걟;p폈,E|OH)Vb>##"<TdT} }W}N~*؇k67ډɩqyc/FO*H%1xxUI""bX .õ+-8 v8 ]pY/st@TJQ QYGt4lp*wbEĥVAU2̩"uI=}Ln[a*01_Y"*'~-bXPC*eJ̡r ^TOTp~*"4Tp6{]i@eHDTPYP&\+np z~~͎6qY][HőP(3AQD<Öv<\/q';+ " M8'cN RACn!E4;p9!@@,Ӌ۳MUeJƩ'vƀJXi3C+f"ORBf[3]GW~* ȪAe%zr ^ބb[xMǛt`5H55%0 H" : uv<1y;|sQ̵1EoŬt5$X.I' 'T-MH!I1%J&6um;"l"8 ːZP.,BVAX[_TӍ+@B#} 2H& ,7wݿ*V~zZc?Y',==uL}#"e"pjO".m@z &uq 68 !bf1;N#)3U8]r+V MDwS d )+ I!Hn8m  J%˲VzUi$ۨ2;ᢡ*mEr^WgkeTiOEDVablnAz,ܟb? :)ݭfGp}b(Fth*q Zx>; ڟFTۣl%f_D=W=N1>Xf1p")'HD+Y,&lQuI^?A Bz{_Ǵye v:ff[O<щdɄ)ߏ_Ekq^z%Ād%x_1a1(+~DDUʛѫqi&tJ W[~%RU˘MN+6l҃ ɂ?ox=SX>fڕdR\BlfCss D d1AYӊܵdTHSL/2S ueTK:4^֟e-i۱\WAՇ朦*`0czz~^D9qdUX9so~TDTGfኟ",ӿ.`rCמKgaׅ%UOe~bMI=8bz MB3MvZ\mp9DZW jɺ-YӮ_WL_[NAV鑕`J}ZXz8U~*D1yAMĺ(>r ?Sok\0HD5+~&9Y+J~o+Se@D*Yq=kŦwuwMTk;-Wngjx,'-cO] }[Pm dYF$”܍OӪ a)Vk%zp$-zPr<Qm&~ܳYN?cɠ < |sEGFdn2`kTH"!$H I@&"u~r<8=:G Dm']R haҊnx0h1ʸηg4A})3NJ;'̳Nw~ۂT"K Tk"у@ u> c@eSrݟ\#ĀR՗>{Z4B?Uɜ0_ϕu?Vb%V-JB+!S%X2MzDS(fpB9y 76WџU=נV3Edh4v]RWc8EDDD Ns |Z'J~xq]OVaOLގP4Z\#.(!Ǒ;eI ^)re>n8 ¡ݖEI'ĤN  8lʛh! "hF3ZЊ-'8歆WGWnq cll ~ >4TCƨ%}ٯWW*"_:M=ՖnCf^=}pI%+NS׼uXgџfM`iԎPt-< 쩩9E\UTsW6y%@?W )]O 6!H`Q^x*:k֏&yDR4ccU0+^X4Nj/1aΝ>Qa@Ue/uW٦0WQJ^ܺs'=jQj*2KTӇe$gMSQH@F)4YMe lz`%_ `_#5 pc>9XhxD'<f bNLg[2:;;sNtvz17ԫ囎TPu#R;;1FHrr|*Tdz ׆ zxz[9v*+ ^jTM#z#1 ,Pim^;v,kVBѵhBDfNH! $hK diIY]6NR TjTVg%ش`+ObpsmE5I Z{FjU?LLLc``=SD%S@_?)dqLU]^//3"**2K#TJ OXv^u)|;f 4-6!^M/nǐRT+-J K *V6uʰg7TA v1,x^"Z&kObu1MT=SD'Ȳ,/4*?RM ͔oJw0.WN]=f;_߇(OTs]/XkN?czP56:K+wh*f_E ZьV}IRWӮHIRY CZiQW\$H6 ))aAbv2WwR hn&F*2Q `*pbȢPUɹ`/% M)6:eŏjAQ~ ,Pi  IDATGPӔ€JfKZAG׋;?Q *2 OUzq߮K ry; 4v8ڐ>f4CDKpA $ )!gUk?׸ηgSD5U 1\S>0޵~1"0ZkS6*gjV|^ҵh pcJ\z]EpGk=C#k~*LTUrX~*LSŲZ~*"*2 Y92|uAU.Ǣ}ڔH굟eQa@UaN>_{ \kT}$c@Efa@Um]6:r>7d}N!TSmx󓇋 r<6jl8jW=9^dQa@UOʡ*k2j<짢FO} jP Jc;\֟ڂ}l }9*39noubׅVUu( ,Q]a@U.?_dTTpS~q;5@pPD ܾs=ͭ?Qƀ*-j=ގ٣SKg3v:ߊ/7g폪Q}a@UaFU%1jlk짢zwp2R8<RTKW?SUӣXv*[Pe+2NZIgb=^T9Į0]UsP©L  M |-TToxUUT-PMDoy?kyXD%2.&XTFηaNS3+LyQ}ɾ{F!` y,,OTJ|ɧzR'Aty94Ւ~?:pp oÎ^otFG!hh-&%?E+{[+Aꔒ,vz^k9O_]6TщX hNQU=YBr>|zٯ@TT=Sb?UJMP&c~*#m>Z`DY]pT)oqSA쵿HʇTDU<}xR2~ɨjERq*"<죤~RD9aj=S~ͳN:׊-֘_|PTZ^|7ބ)*H׋;'A,pu *C/TS@u6)D{`Q~)Rڕ2rY_S H V2AUsOfHO\T>  zsxo?~{)^evPQQk L[~Z:_GPOաco2(9I Lcbil!V>ҹ_JQo_#K1NO-"ĠLLΗ *’VeY_ae8E: š!Lcc ;},j0{t0Xp 6=x]>SIdeMhC׾GiQ݄эm9\ I\Dq{zi Y^<zs犎ZJ)"?=Qi\ep6\OEVRJU/T^ :zZSܶucEUDCYK,ÿ^-3\kS3'  zno_ʿ,͂NGҪW(SQ%:hC;}kqbU}ՒOW|A*yѐ!*W}gx\kSc/TD+~U"I1rNjCC8 bc CC\Wp> QUEu!V==}mٵ0r=Hן^nSٸ}_ ,z_ᛟ,oOYGtcu޵GDU5(|t8cޝssx;B^*JXeﻟkWLP&.\ ЌH4tЫf#ͳl}򾼟Tư*4[O,Jy'vm_ E#ES {/NPk`8BIqYa|DV53> AS62S10q62bFltxSQݻ$ MŹ}; z,w ~ͳp~+n r}=NDߌ@::_w01cj$>w+<(fkzkOLkJT(-: Ρ!lYquo߆/?[6mCmufgmg0r=DCkq_|[E}S[yK}lj{WCTݿjr چ޻ vNxD'EDTU[>}TwRԵB,H*k##\4O8`Ɏr88} zX;݆h?B ܎gט}ڟ; zf uXe+\ɔ2M:_cמڀOڰa|sy^X4O,TKS=dmTŞRp4PbG/KhF_.=uӣXnOyvnn_ 4%=ރ91| Ԫ5޾Y;N#.<] T젪(Al52HO%g> {Jѽ}OEuBz 6mmtl?q v`/}lAԖpKuՈtA*Cϔ1NoG}A v.o?Ւr lj\3U*SQ=p 6lvY]XPˌTV\9\[|N? oT T_ Y)zh|NiR;F7!][Q}c@U1j(%,O%*A *Nxqh'A}5XT!Z0U]SCyUTs!@M~2>t{nߝf%QHh-Jocx?etܽ(PϔJ=/:3"""\#GJO ^?`i?Uڟ\#BSҺk짪3UM?۸G5cZZ ;AfGsWG:oܾ:vm?x*ې8ސ*T_JҵɫWl^':>ѣ?M|L+]Ƶ?"ǀButJ lR_~*CUl?U!Yꎁ10 N6*X=c'azu>Q^v phh1Hr?n0m<~z1|oC J vO)!U{J1㺞TɐTJVFrlTJ5mr|/T`4۷qq;58DYa v NfTZ?U4tЫfghh-mؐyZqW@ N?ӟ;B q?C`жS>\վ.UOPe/ZD)tZ(u6zWηr~~ﻟkd9Up649]hfC)ڟU7N% nĮ; zf ߽|/#|oR!g$`E(AQoA*W8 UJiaJTK'u?Symd"u;8#pv|ytmG!Eu n|Y۷@3(KHvP>Gs^cz{~{_nv (|[m352 Ebtz#RG!" d7W.>$ڟS˸?s YH5J?:_u~}O}?х+lwc'ou_w1Xd~*ͮw⟆sQ yw4h|#o €P,TA4JO2w<h .,A6vPU_u=S{Y/K|zOwdo!9SSgF6rѭGmB;\OY*u'wi\~**;T젪DTxW!Tx3 LMj3U{OEf:p'nV~g,wmgMYRUǀWǵTDDT)g;V& WiSUYgO{ftI.*~8^l V|u ,'DoZ6\>{ߍx} ' \PqUIeV #>Ǡ8AEDv}!MJCS~*vPQ1Sm O{ u ݁xH&|b~hh-p#Zwzñ]USuj;iB?U(v'PC2)ᶐvx?=҂sSjP'A84},;8AvMաM?/,).Cdvى>t{n5 F\s3/e}+>cKB*mÚA\(OLΠAUvaR*GWlxH|SkPQ{mdD_c?{Ɏ^XjU\b@UAVx EGɬyg(kYzk>0*,Séo|TDU/ 5T?g|{6eZP D4dECk m=rϳ+7,&DX R;>9>QUET)%P3"*`P?+Si| h6=()iG,䊟J? Wy~*"b@Ufo2cgXC!kjID1gθǠZ[ى/Bm2G7%[=?*5?U""AZ^2t>Y-~rYq8R QVed0hY74ĉ) ;_߇(Od()<}nn[OY{{.38i1,m,h*_S0)ʂp(ñ~3D TOŞ)2 a@Efj?}y ~P~PQW"eL@+jD܌onOŞ)2VDkMa kӣ­?)5jkDD xni]S{䙨&NSiӧK^U׋ފmD\j*"* Ѫ5e JJk*|7D@_`~2Քie0~k>os+.gkNeMV<.XqP5:m у*TDT*T((AU PNȸWlP`jc@UY|jkgww5BуE5*"* a*K'2*[HTߞ:zqGxu>0FZt0k꽟Kug1U3-2嚤ҧ Uk*}GDM~*STOU*UUV^곟jDvYLJŀ_2%;WDd൑lq\^G"/;_|]>cQƵu_h8mppW+uہ z֙}%?7{}|;xeLSDDT8T>%3èli/ 20"~?/سg&&&0<<`n*zѽ}veR IDAT6}AB5~\?wM-nyS =Ui%-T}o=K~ {;GSӘXſQb@U$iӲT2$HVDd-O8Akbpp~cccxW#e~_<Ϡ|VSvoiħ~Ӕo6-r?mTz_7{Z'J|؇ a0EDT&젪hvj?P.,_TtI\gj||`C .:=0TZ'q~; 2g=T3_9BуEӿC Ә*젪vPTf*W* 3Bz:ԏ3*CP-UVOT TlDV(A1T E32)_  v_cE*51ŀrPUHCJFս%+ICzPg%0{y:UV__+~?J8߿MJSYsOŞ)"U< k&ur*TUZ_IJ ?2$j O8wLC0xqw>Fqje2'2  D4Tr+_X@(za)"+2'*TDT )*uJFTTz!zAe';8#\p ؿ?FFFXN aG׶Ϙ}!>_+4_?5\7Ն-Rwvk#?(KϽ(>.Š)""* і 3êҵarf&Q]+A_ moϞ=G A[> mό-ZîTto_#CL_#"a@U!;RNOTF%O%XCET^ƞrOMz188ߏ1SQ޾ _<~**TOUTNS@nLUx~gSéڟqPe$KӞÄlV5088>qƦs폊8o_|VS~o^=}ܾkqVҵ?""2 Z2Ac*_}TD2ZT%짢Ƣ1bO5rP7{QPULG!#ZZS9)C?JWRT2qϪAn:PURLe *s/<"*=SOi*j짢RhTfjeOEDD%p{/k >OP?I?VK)_J,p$*AKNLjddC 5HDUq1yf#w7| QV{|j_IW ""yznWl5[A4tЫf#ͳle}&}Yv)YX4,Q]UOO噠*?icDhoRe"j짢R|]7ժm~*Y  LRTOOEDO111aSQCG g~*mA508-RnjLO'jgT@TԐ6=hVjԫB?7{TDD&cU7`hRn7VOzT) OE 8Sje*Aasz)l^ͳ &;*TDTU /ZA?dnwmYJLB[c?5mTT,ʲk/7""1Oi=TDz.bR5z*QJa2RTŀS'!"jh *_҃(*vP{T2FFFOE A4qb߾SjCSu{ļ~*-Y$"TUpU 6,dl}#DwpGd2?UGZo_kT};еELY*`\ST8uF*jbb5c?Q1Oըk@b1%R7U\)I϶'kRVD3ũx޴?SQ޾ _<~**TOտk""<TUru ~!Jƒ?ٰ'WUASeS 2⠊=SDD5U)]TCb>O<`@EG:_ehkJ󵚾AUIk"")KU6%"Bc!Oʶ74ĉ*~A\SUDDD€wR2zOQ`Tm 짢OEEc?QP?!BU{x~bYf0UOETT ʌi*TDDTPd] ujU Y[=TdE왪GTT*j *18UTW=žeTQ#`?OeSQ`@e>mJ Y6eEU,J';8ȞSallk0~*NSQ1<'1kDDdev ♻> Y/T@NM~USf W ~!}4 x0ǟ}!&`lLyodH&vꫝe`۶H>_+|VN!Ukej ѯas+.gkU>Q>2>EeX[ :ée짚`?5w'L?y<[==Wk]]@w70?ɓ?>GDDV * wxT CAҮ'䞤 AHUVG:׋AAall ~3Bu{6J]Cww*rfrrr9 ov~.T֦QMM[svQu|妜kp20=]/IDD㊟\ 087!ϮҩGz٦Bm\+G#p:cz NNgVb8@eq2$i$'HH$d" -. ʚáp(T6mj7W.DZVH}nF+DDDb@eA{ }MRrT?j c:4Օ~? U~*j4۷Te09AOOjImp:X흈FD"XLRN,MMJ AbD1=WªDBªwߍ~VWT?U,Ɖ)""YW>̷bM992gUT~SQCW3g"V) hjrJ_#:;011w|($|8&'8{Ν@hm@[[ (Ni뢘ZkmUV~RiT+u>""T*AU~*nA`HEc)Ҧb?U >8-6gIW_kوg'pį155>XG}8pۀي9p\ gNKXX-phj0*5w*Q ԫqb߾`J|0""].}TJ(#K?K(Ltt(i'> --8z4(33ŋJ8r9CߏPwu-mmXXbaa6 ]YFI 2l6fSBո_O*h=SDDde8-?EJ3UOtv~?2)moϞ=swϛ}˳bhnNʋ58r$˗#DqL= ?w\sM+mi:uq,.Bfg)^'6n,oHۊUG"TN f0AZHu߯OS-'X˜#S{Gbpp0Tjn.QZZZuΞG<.#RեK>Z3ZĕWl q)HRرvRT5@_q߯OS\KÞ)j$~*Q#i~H$ Ο?b1U4 W_,Xw䇙*VEZ閺b{<O;$vssl}8.s{Hah);>ؗdqZ`ba/Mśln2Lgnu_ת"IRQEV=?,WEQNvy?qgh?}**TUP(Qp Ý:{vl.)MA@ c cL?9Z1+wkPSY/wtD^w QX ܧ"y2 tj5j@&©jUTO42"4m c4@j(2C$2^ߩu{TDDDPy7 O7n` !TMH$YUa$P'.N6OL(v I3<Mt?C*H$uA |+#o\޴OeEW)"SG~}g*t06dy8PHΎ\.)h:>&}LOOADPYPȗ>Qܙ"k WF}*Ԡi>?g _0~\2TYV0>>U$wK/ AQ 7xW?"""Pܾ:^bx&_RNATDk ̪%Ibuu׮]Cg<ԯ Nx[TDTn_JW.Lѣm?j:>p|=T:xY5"""7O= nE|3)Fjܧ"8߰Ԡ!azzڬӧg iPU@8Ntx/!羲?4 \v eC^`e>W}Q STa]D" Mvw)*"""?c@Eo$}0ݾ viiiTK_zOGzjX|4 j F Cs`H$SD>OSQxp'N@d*EH(r՟9GnPy *ڧʵk8Ō8SD;Ox{{iLOOCUUa(\?Ei)*0"Tto$_oyۗ2r;1"vTDDcss$4 P (7orX ˉV_GV0;yOu5R)pzR.G32 :dD@TD *"/a@E}20/_wRUc0E}VTDԫ'É3PU(IdY4xo//7nOKqcȟbOEDP)r8qbvJ E~3TD *"/a@EL,?I$4i)"X?Sy[6{13&Nq)*Է}! *:lAիu}*"oz%ܼ5mKTYƙ3@~?Ѩ #SŤWCDNb@E~ D$] DQ\~^[[[cPE4DuNΜ cc.Οb{PJ,>@hX0"WqΉV֩( kzD4 }x<}*!`ߙK~t,w{[BE04k~5hb귱QʠZ`|||~JP)Q #qa@E#U<"}qLDU5<~ssټuJ\4")$OP*"""ۧZ\\dacg vwwqswMZw @Ƨ _SR k׮!Jaee67 >| 7o~ Y>PSv"CLMM#@a?Eŀm)V?""!ŸOEԣaۙ:H mcv {@@ U F-_GH^b@EDD4OEݰLDׁ|>hEH2 9${)?۽HDhDXd2Y]X,×K׉R $I$^cHE^ѮʗENu0mFTDÀhXAǠ ѨuRi)Ij|?,{HtUX#V FODZd27On`ƣW8EuN;SY?D >afFCگ gh%NIIe~b0)Tksn}Fo:VDQ\~TԷ7o`vrmPf\ ݙggP.obk xbx,J%`~^t}8B+Uz0e©ZͭڜܛsbTk$NDGg ܻBH UQyZ x,UܹFhuႆmYN} ) Z'FI66?'^ϊ1"""vTKKKn_ j_7:uLvܙE80,T4 Y\*Tⱽ]e:7#WV1*)CUUUQi`u[`FGs l_aŏ?Py\> kTXӶwAzٙթSaeeȲ҅B@xT*"N)YT +]~[_KgZ\r twzZ /qb*pO+~(VOۧZ\\d^^?kߧCO6{w|@o;S6!U*"*]'*G.IT$03s 'ՌZ'A54n_09πEN?Ê0"""k^>?ž}Gާ'koO5Ǐuӧ9ҩv"0 m,7VPU*^3 }]67g (>MUq= հNMYSC^]:oP1# TDDD>dqʟ[릟}6nM<_wZ'tL8Ae@$r{{ ]7B*+8{iT و5ÓnKswJkwҊYAU>wnTp6ӗ:g\O(!Рe(FHeTUC/٣Eo HR \~_ }T8iJ vu$=ZNF_MD!!q'ucSY᝷4)۸2~8lllZ!$5NSTkmh˜?qrjnEpHn\r(Ő/eL6xz?PQoվnNo#}QU >} LM UPY2pn=06&2zk'Oj/ E\իx?MSpe_?Vz@U,|x>7di",)SAőt"`@EDDDMS$B ֱQ1>-W+ck8{V/'*iŋɓrgXdxwbvVùsھ;:QF:]ɓOSS@(y yd9T*e @.'+WP~:uGDPQ[Tkkk F7؃D@`oNT^+ke QPY$ u8T,p hެ lܴ0= ΊOMB ~9j_.7*X_?"c@EDDD]YTxkkkH&*"uTkNU FRI]*%MAT)' wu0CD/u`P `0K}T2굾LN/3rDg Nw*"""IkTeyԾ`*#Y=uS}UNΟnblqG?Ij~H4M V8U`ʪ Y;S"j ̙D;bQo G]Sn gm3V׊ (V̾O}捁 LLʧQ:^q$:wn4Fol~0D(d\ С(hY֖$`JD(,AUe9 -T2P(,NOS4dj|it 619V-MTkj_;SUƓ7ާuwtBZyR)wf05'P*QQua  2E$N:=ܼrR=?<Eéa SOPgJTڿ?"`@EDDDGnjii=}Kwڧz n][XoBכ7+U\Ԕ1LLLA TTU]S2dYOBU5T*L&BAGh kT<Sä׊_Wk?"`@EDDD \dϾ3DV}}.\vݺܿo7SN2AUCP.m$I^\ry k{7 +~aŏzŀeO.'}NLVTq7ڧ9fgv\dHؘ{SY3tr(#ũ~6Oxa׭g}Ί~Pi)V*"""k^>H9Rug*Q0Zՠ&&4,,hHQYff4h8^K|^L#{Tֈz  η\Ƴjp'gxRwQPX?S?a rw~g_o '.\h~2vv0 R FMs/=Wݵ UU+O&EH.?yQ~Ê~GكM?E= شS%Itj7*OKo`׊OMu׭)j}}ˆ0" """bX\\"#L{QO/:5O#NSx[VS}:+Qd?F>o=" ^X#TDDD T*U$ /kdS틅D0U%:AwB>GTv|x5Ut$b!J;݆;OGDDDF~z}>ZŝðjS=m3j#L=j!0m_'ޟ0"""`SqSj}g*Y1x3j>>y[wK.~mGқ;"Ċ pov;S~ OETGD *""":>U2*VWWYk#~+o%~^狧ulLE>Vϵ +1]! V?q>V vTۄSQS^ޙ:,>/zSS??VY5-V =>*|O捦atLVeoO{1]! i*ud <{VYLv0"""aD=ZZZr]ko)b XK>|jS/~-Wk> gFNbsnJYsM_׬*""")>U[YY>ULw4V}㛬Hug?o=V$}7o Lby;SNw;6&U2D/װ4)#Y|>wSޔ5ΑR'NSEP*"""yVTxTJ|ΝcOST!¦(?uzGvbU׮]C* ۗu$D+++HRHNցU1\]:U={(r*H?[x<ڧX[[C2ڟu,Jaaa;n_YAU/?T^Šᴫٟ;.~*"""vaZE, /L:X=<ut*~uYaŏ?X#"""OjHRX]]ڟR)L--!Y1v;Q|jߟ᷎ ͧXVOP/DQ\~DkkkX[[õkܾ5wM//Eсڟ:5ӐxdwVR}րhxTk@Xj߈^O5:Ǫ;F~y^."- ȷ}d2U g ,~k|i!Ŋ4߅/opSEDĀ|>U0 ؿ3jM޵o~f<^kWT˶lP*""""EeuugK[C>.mիx͵}wShWW7?Ъh1""""j _?T~6߼at}~kϰk=Aeߜ[c^k~G?tzQX X}~vZ7;O-bq}/at`=|fgNsh#\@:0""""A}*vX#ƀm$ H2 K$0TOCtL'OS3總OUZ(E?yOD9~>*~a8N= zn @=:Xkミ1`w[<'`Ђ"fN09):PX]x^ՉKSnTsjuXsF8IKOʴ=Ep@"] FFJ=/VLO(*%Nɲ8tjPT:9{0e{?€yjJoPkFhU*=`# ?q>-p)@ FYe|ldДRpP׆\ժ@b>Jp?LLjx T[;(bw< '*~)"a@EDDDԃ`ʪ󭬬CXjߣ@!$o 0D}O *©0/W짦j5s)Tj %0|jz_AU {ůTwk?Ί0"""":u?wTX]]=N~//> F~.sV(u3f(bSV~j ג=H0SG|zJ5NN̯ VƉZM|]5êRQk,pc`.p"p٧zu/ğVGlGekEDQ`꠰FqϮw?+Bu1Bis|V(@@1)P4@U ]|l JjLw3 C|m}a VAUp B"gp1>٧µWr-~Q.GDPh---X X x|>/}|<'.]ʼn)k\ Ʃ)IQDXYߓ0Z\_f@CWaUl'ʶGE<*"TӂfP5" Q 6GNJ`ŏZ1""""v>?~3;ln咸#I`i`,$NiVOSR6^?%7N?)@DjR\>Ǐ\.UaXVO b(jTU{;@fp xjn`w'ϵ~kjpgh1""""_B#CmT:Ձ#̞'S ږ2$ɬ݉ S}|F;C֝4AdF@jj) T JhO_ Ɣ lm;wQ.W0Z4y,NYG.#m{bj@TSW8C8Me2Bq n'N@eVG 7;S5;Xy+{VP ixgΉ`j̪Rr# z(eBRQ jnk@! 0EXu&39{簳BzVNMsf&'sY,p /.TαWRm UF*"""ܙjgC8egR6UTp'v84'!!+9'CSveaN@"C?|ªc<ق2s ᓧMgQaX>9 \b]n~ެ2{0.nbSN`ŏŀ<ˍVodϯ}m`wxjONZqbJӠA@P֠5QقjLs@(LЩZzjz{PN ,e{ %_8Meޱd`BJނqLUcPVTŏyw\;SK>Ҥ%ե6gU6UPUP-g*TyLMӃ L<ӧ:e,*$ʪ "eЀһ?uTvX+~sP/t0jkwҊw#TDDD)nLKdX뵿X[?&iNAR(Z8`RjuJ(rQ J8{~|\J`3g<IP$)InO0|& coFҭ:kHw^vP}/ɶiG҉yBkoii׍J-Eajws &O+}BV4CjAKVbPf8U,v,䓧P`ȶJa!932rYO x xX/T\c8`Z 6ڏ0"""LU;l Vo`T]' <ᔆXj*]TeՊ81UŢdDxtR34 P$@㴔#T)*3 'o+Rܧ:Hk0Kŏ'֊_.~=1u"`@EDDD#kv9jSmD27#8iU OB. ~bRy  |r=^,@:sXPTA3uqW|-ҋyR0WtT :=ЩY#f h$IpgUbcվnSNSSDT S`,8)s93Urnr0}c/r `sNtm7ʆMd5GD`@EDDD#cvy{c}}k{60jP^^;r0JEJ|405̞92`yH'NPT@3OQ@Wk@ZCQ7Td I8;ٵשWadɯz"6TDDD4PL]jR3D6a<]G-ԊNb;'FϜ"Sxx$CjJSgZ'`d3ӻ,6)*;kj/NOT5NS5N0ɻY5>TDDD4;SV;j_7>U,BgSݽ#N>'Pco)\Kbs#ZXT. 튻py 9)!uVA_T*P.V O}uV/TPZ|N[1M??_G5 h( T;] :S}18Kx^ΓM"P,p*v<5+ $r 5*%qJQUB$J<;(NNi?gtu{ +~DŀJT,:վnJs/qP#҂PA|aY8rsorҷ \|Tj`삨)]UP)*&BJz> Ch UX;^%VȎ Qؙjj_7V/Y,]ETE<' }Ezjkʹl#g8/rFSA X5X)KGB>\O}myy^ۜۨNPj=AE!* nTvFYۈO C,a9$64. r.PI.#`ϼ叾rؼ_'j8EUU!`#“:$}yqBuX#~1""""|L-y$o;MȪeĔr(E/XsR1+m#rPTP.\z~}*'pz{ Nl#潼֝QYwV3ۗ]rNYS!tfoߒjHHKHféA} OS&eb8]eT"=zHn_ߨUw.~}{NFefzYD^ƀ7eۗpG001 B@p aiDF'o#5P`鄊I$$&O0r z<5+NQF*!*MCT\@FC>6>gt8adjy CEm XxigjC=fJ 8񔨑iAH3pn6<7҈MC _M`j ̪_QYSM!2Rɏp鹫gVo@J>؞ců{ڽ&vy*""":Ғۗt$Vo2@ é$/?EnoF@6 n#"c)"!UDPxУ ~T Ȳ\) =z_}N+~ݵR5?ӊ' vj;@8ΑB av,Rwn!-©BNlx@T1 IX V.`0<))UsڨC-Ty+>Qާjоy_x'>"9+;SFWȉ`j,dPULMMc&rɩBemЁIVAҤ%Ubi{b#,'(-9?qzQاjI g'q$66 #ͯ0Bo?:VH`@EDDDI&X]]0;SFڷᔪAR'Pق^.ł-2gv|dX IG<4e &&DHn$7 Ib>vaߧE/g{s1F}~U`]ne h1"""#T;#Q{x:!-IQǠV*8=5é{zkR?GDc*`K1"1])Ud퍑C6UB~kV(p{d/F[<Z\\d8X3@hnN)"i(d35łP>پMۜoZR7WȪN#]}gkuV//%tW079%N(*dE R*\(YK;b! <}#I'YT(K.R.\>x>UkO{Ui #Ӷuݾnšu"b@EDDD}T;~K8`)3 )*Uj:ʅ 2{SGV(}#*]7wTqJ7)*9أd?TͯհSu-z X#" *"""IT,:j\Q + dIFX^.5}4 I>Q0TPfJjU_+YnWw^GhOeAi+ܾ@Pс:=LYNYQQ-J马;u陁ZUAk})3RU@#|jݭcvC'D)"b@EDDDigHTکPf 0JT>'wY`@}>U,}'@@T= *"> }^s{vUwATȻP>u>/ޙuaj"ܨV,|j}`Aa){/ x?sFJ/uױG_ @sϯ,ycOO싮z>Ҥ%jU0ɷ@THpy'?EIJ%u>v{:UsOq7 |ˁ+֩,&Fh׷HDĀ3*~+^9=5U`y[oSqEdT)`j~ʹ }xKmo;~sU-W+sd5B(+jSۿGTDĀȧ3Վg}CT8EeݽOOQ35 6vx||ӮGщTDDD>}3ʓվ!n*iR  L$ 7ӧ\Xn{ێU8{SAo nv'P^qpg=VӺO<_ `LQPI06C*Hv?={[x ݧ4v.~-vV+V$IT;>UK6A6XīTpw[$ŀZwbOM`o$ ڟjUB)RIVʐj5MCVsxjVeŏȿPywzj|O%"jJddԪ~d8uS쵿Q5͊_1"""|ž}/X$S(AFOkuT[9U 쬠jkGpg?;+>AUTSe]ݺBwn;VFx㕑zŊ1"""qܙ:wO٧ҭbR9Ij/s.;tT;Oթwz I'TDDD#̪qg?vT55DSV0|P9X g8f]>U^m* Tj51n8=e k/9yz{yaTDDD#η%V ""*_ (t)pv6Woi^+~?s#"o`@EDD4Z)>j>UhT?>% 0._1`@oѐL}gߧZh/`4LO3j_TܾcF~?"TDDDC;SZ~+%1IVmM5rTJqRJjZzKA)%/U*^}*V_ w ާTiێjaاtŏܙrXbVxzS3Hh_3k~)Tێt쭰9ܛaܧ"1+~DÀhpgjpX#O aYᓁzh|>rpʩSpz*Ouܵ02OCٟo}M;ISDĀEd35Q++S  `۠2WP9\VV︂*Qk"u  /6TDDD.hݙb<50VD@\}*M$٪|aPSY>C}4͑t%TbTNTxb_P `xGѺOUp?IuF05VXsՠ[cȟP H|#} 4\ݧ2MYuV*`>z sL{۱ gY; 'U:"`P `$GS-MXR')oOjUxⷻX.;wwžO |X~dqgP9;Sz{q/<&Yz/`PU*;OPՀjUT.:SNO9Nei_T*^;ROLZ|KKKn_GdRKSydJT=<=U /ܛ8kfߵn?LQ+TDDDGj7}*N}r~@PEN85վۗw<;6LQ' ;SÃ>:NݧB2)w<}!>SDVw~?k;SD *"">%I0`n*wT?e*êY205qR%JNW#q}*`zGܙ>0S'f(e|jF;v4r㕇νOO:Q8w[ />U׬ѡ0"""¾3:pY~OOбb! <>,.ːJ7ѭT/ omdžYgȹ7>M]o}ID4bPX!fR=Sˀd)+R80}NSzϹ7# }D4PٴLb1}4*Jso>L@}mU$!Gp80z3ETDDÀ;S>5V>$>1׀*b{X&"n7>"" 35:XQv*SAB7#,Tq*Pz_1\~?!qhx0"""߲LV "*cEI(fπQӁjM}'N}czĀ|ugujyMbdMX0urj`jGH Ѡ @ HHkz߈T?}۱bP/pgjžz9F IDAT}/y2i$$VĔ*bbHlUxTS#V{Ϲp*ePܾ$Sb}=wes ]B,F0;FTٳH}pbh1"""OΔwۗ@Jw ($@jodK cI$+bX=Yu{`p"}DDCyw>| TȐ$ `ݩJ ɝ-G4)cIwZCZȹ7#""1"""H&X]])/`<\"c$$Y@ՀjE|TrY$XH?i}NS qCތ:_,)`<)5OOp r$è`*"BЂ& Iyj0""ǹ3AgK,*YH0*PS"+~""b@EDD#;S޷VK RHZ*W.łF?[ZTSs}DD#L7xz&0i (e=je{JzzRFg X#"- hYu>Ly[bgc3?g"2)MTBڒ'r^R]h jحؽ(fStH)X\v!.`hprMf+GjbG=tDY/$%h29ߜ3!ERg3 ŷˣ5)e)q)+",Kºl}흞Uo?}^S {` ;SjZ֭Y qYјl'ʯIk+UOj>WV  pj|###~_jZfw*,yy驥ݟ Fj0&jqz ‰ u@-k9g}sz*)+s׾)w;Vm^c‰ :T{ڇ57#wU1% V(N-K~aާ/= +v>}T\DBhL˹%5it׾yC 9=U+.T;ާ=GT_3ITК;utJqSʝ%Jվes׾HTcM]Slҳkp#4]*bg J} @cܐ?`c Eb1uuuʲԒ0/=1.>UjqToyN,QT#4 ;Sp/O8z>.)ϜI} d={.sGX\xB{{[*}+ҢJy.OZ(ڟ>/éc+TEPvg*Lrj TК޿$O.mO%'w_kZ[#;".KK4x﫮+l+wff>Ч̽'I7uû L}hI;&ڳלJpusk-Kڷrά 3J:qO驛c׽{0rLQC-}h9w[RCJtȊ't_RaeNUݵ/8վdߘTJRJ>~T~o_cQl vp7Tr4TGa©4úϔݑ팢/-J }kߎLU%'rGzܶkTwC@'La;%}xEzNu'~ϴP ;K.x=nt*GK*rϼo렊jn"~_ tԩS422B8GLJ]?_/xPSu(٭O}~{Zi)7ˌ!S̜RN(9I_PeQ *33JyTHW-i95սTutӟ5\׍"ܒI}^vM]6 ܵ}%o*}кV[2ɣ=V . H>"1!UCD=9yf}eoN}^vmRۊJ<}BǏj@_e8w*]SNʇ]KTG|)RHEP[]ڜ:(+uvIE:OjwWL8%?o)ԫ2̏;Jڷ8/E1~YۊS{O_#vN_oSue:;ShJ*ytP|;UP ,©l₩ n>8meWxh9dw-<;0:*@vlɣ|T˚"B})&=P)PK %b1e~e/NNY4Xx'yN=|͌K*zz䄞)җTQJʧN:E8J񈆏 7lK*t D*Kz:d%:ѽGOVVu,^^YiH©s\slv׾WSz5uNȉm=>hTLQ烟<2mOjKYPBFH$\50=']p z::eӣ~fn^~egNW Y&={7ӫr֖TTP@cg A<:cRIR4Uq׆; ukVZ[x f[y!ھ_'--ÞRWw9s=9j]}x}Ve'7=/z˻pgRۊJmOEڝd2(ɣ[CP)-n^}^4s*yf|^zlW`U $,I5#ݼ.utH1xBXB=ȑO˿U\Y6'rp*lS>I:+E5ǓG7SQC@m&JSNL!<7R AU)jǠ*(=/xX%yNQ f;i}RU_,Ho>5/LX)>1>>lL]6?<$τS)W4оt޽s-ޚnKŢ NIVvN9߁O'Ϯ T&ؙBX\J˙lCҡҕ~wPT+ҍiCf*:MlR ::BN9zbT,w+k_!k-S:QiOOTXLN=ΎNˋZ({u)sw['~Co+T_|&:E ZG008LjbȮujuYhv")0AKg PS>u *T*[[rKʟ?f=S{aisjTquvuk}Z[^iVWL8l~oˣվ3=iq 8;5yM\ ZTu>SʉIĤl5)3T$"hT:L_3'"STŨM85sT iԻ iҡAG**U(k~nFk9VͩRo9m'~6j_=Vw|輦\Ѝ:W4*A8*hA:¢w7_ݪ.AisǹxGiG*bjј%&Z[Vhz`~rw6:=,^7G3w,mM%d':խoͨ"{uS+k MG~F7]EnT=sUg{^VA|+:W@ #ljVT?9-Rҵ+#5 "Qi=nNUEuЍUЂFFF$`G~0{C7ΘT}*T>ڊ"WT<8h(Y4U>*E&ʯUNU/~Z.1wc|}~<{$]Jή)cqEq%EU\[TsSSR+}éyPUվL>dB}}*hATbL\J=yvݧ*W;R>CeYՕHWXcOՕ¼t'?͵ Ǥn00uXLX\X\R>UkkbЗG!0zϒUmn>fjS@k!bg ⇣i-fIUyZh^ZI[>&xȌqήRm^7MPuh?A2{li]bw4aD'db1E&+ fkt;KԔmKW ױO B&j||\;Sh 9ԟ?<3r&JfIsU)Hk}>/>2DUWԵǜ&Z.iBz 5 _,^b&D&*M0眜ZY6nI|Dڳ׿5)WhTzTg}TBTLUM>F˙繑Sk}ُzP5wNQBs?uܜ(ݩnuUUxJ'>b &,3@3ץ[3RSzR}&8+#4AsJŤ9-eⲢQ)QX]X/S湖+}wT(=|©Vv{z>?'*T*Z䠎O/%Sz7~C2RܧZ]楞K!Lt8bD9}jNS.Pg}rhuUiLx|/}޹l')sRm;Vڑ{0-b1Yј HD-مB)rNM.ͪE.Jc,վ T}x ̽3E#ze4enXo}/s7$Yf܊H`Kl*e;'Z oVnU1aN, ;ͩ5;)\b_%UJ'^ΐePɜrvR洔"QY(eb(Xk5L>ՊZڷgʩ}O!@@o&u49o?] OUTgM.0' EhuuYJP(2S>o¨JPUV޶mS+͉bvX:fIh%0s3hPh%F+~_cVq!,svhq=_ VR0`NK=zԗ4Mq{-}[qjS@8P@L%I|hKGƏi˙l 9TuUC& Mzz+~-,ʲxڷڪ4lAհ'~|$ O|gIj_)qW. j,r/✜*Pш,+:eU|Y濉mp :_n H-©%}ZۊSc |P߹shW:zBLT?9a L%)(;[75}{V}'}%tjiiAuł R`Śבz6'+R8J\oaa2ྲ,-1DiO)Ͽ)K5yC_KT O3-V!}/~j8:Ue幛0{S]ԉ'?}Von_[U`+ 'jNP9ʡd/éc+MmvAj3˶j4;S^z錾3~oA3v=ȞuCu''ݹZYc*'VSQr bS+rTMPE@XT@ 󍌌}I@`LfFU}FgS-JU4laH!t/RzaTJR qKj'.So33vM4 *;UkTE@*hT*Pvvo򈺣?Sg"&TOVEJG,ZVNLʏ#|ay $i'AUԎA@cg ^|}ш}F.f^jP9 jI;P5:'*H6$vfSKub>-Kvk_=+M ڟdIEW7uӻyNI³=XdgϣJ>,^Myz?hwTpjwmSYr NLJ'&}*ٖk"ny;%yNڷUF}*@u>`m&~TS3AT;1)O\Kk}*xp˻-Tf P{g:P:N5bo4bݏ]WuP%}*ܳߵ/n6TTlP5T@;S@}Az/j}C!%}RS!m`g \P|6ۧj&}>  ©3T;wnR/ߗkSuﵿͰO{r{γIܵSM&.irߗG@`g /,u{Qz/VUvDU#*wOj΄TϼSZۊT%O*9$ ]*Ԩ󍌌}I@`<-Lcgaw=KU$}o+Ӻw<9MO p6TmgjT_KTj`ĤMx\}gOVCCu䤦G0T}gjnǾ۴ڟ$}TSNST!վc+Tv`zzΞݯY<9''e۶E_ؙk{uʵ?Rhn/>U ֤gz |,@fM IDATxIL}% Tr(ASm>Жؙ6.u8hj}*sVc}*H&'jr(TPB@R)v:>Tʍ=OLJڟاj'TB}gO}YtT v펳Ou`̨T$S $Ii7.PۙfUqp NPhylVؙͥދ{Q/w3CvC7&JOTVs{γpJ0oXu̗TCCu?m @˪ݙJ&Jy#?OՈM'&S4é%oj_LNt_U}* @Kbg `1}*gXpSjS˞޵S {`:{v?TޙTPk҉FUNJ;*٧ WOʩ}?>l @K`g ϿH0dz/j>!վ8=ɣ<>E@ ؙ6G_NoS}$Сڇmb @"Z:;S@Źsz OխjUD;ާ:yrR'ONRzTB)>v٧:qK5S}gLH oyY}ezzΜrU폠 @XP:Ȉߗ;S1q}o1Tv)bprS}/kNSA?gGk R gO}*D@ ؙcg5u+}j?}@׳]Oվc @XPl6qILnLWcgW<=uswۧ:{vT @3l:_۸OeNSOՂZ[=BŸ2*Jؙ ھΜVr[}~gW_;/zgoA}-TڟاjWn~w@Ou / ν3EηyܕJײW䭭B[ՙczwXC%%5v]O+}OO 0)VZ=pjMf5^R%5gjbȮdIEQ”w>Sc @Phڝd2I(i:_mu/9}S:7WPU٧j҉I<5uٳSTɣO/T)Szg&j 'r$nb*nyzzk=վ6ا7*MP_| ^Lhp}08>8ا7* L՞E߃)w*|ا }^Zxv޻CKݧ)4Du>¯:;:ܧIjwj³¦اlT<LM^l"j?~S}uAjsT'ONIj gؙkaܜ}O5wOjmRQCޯ3g\ ]&9*722%TUu`lu=yQA7ΘT}*T>>g x 3lΫ)Nzu p}ok*5>U[T4gϞP,TUܞ'QC0OkTv$j||\;Sn)W1&J~#޵!S8K2aC@`[ؙ6:TN-<,yWD ާz)=tYNhmT*J3Ա`ȯ}iwOOqS7Ǯ{`Ξ=ЬFFlvVԄߗ lʽ3E[@ a}*>UoL[ڇfgO(>iSR~_!Z ;ShG56]wFzoV:>] |٧jr;>jFGТf5>>.)(LycHOΘ` ڧ+?Y2ޚ聨;Uo*:er;SdSShIU3cj_CnyV퓨ef˵T*şA@;ShuNI95>Ske75p]ӽS̻SGk RC[rN87ZB)|h%uOI=rjڧrjSyXY'jZ6;1bT@3VtPwFMf]Sy\ͱ=bdRdTe2@P!Zͦ=7j|@rj~S}dmO[U[pN˵? pο3V(%QڈT_PT  h!)8 $z511SO?ײ3VPܧIW6Y!U h^{]_sV<[o]_??j|܍aPJT8cNS`STqR2,? ,۶m/hE_O~x$J׳m@u{x`kϮyxLxxa˽\M^_ _Ub",+"˲dY|w%UؙBX4:RZUcUS zC#۞9vSM@@uP936LT?1T"ѡxܜDD"R@e>_Y/L9" J/jl;'_#BK"jOkFcj+rSI0M/[aI]*@P2OѩxۮyurJ'hddO5>>΍p ~w:;Ht(7̏m~5ӮvjLp?SmRQ 7NPݻrc '{w~矪[DbSdr)PU,ڲȈTsLhMfj, &4Vz?=yu>U&&F@P^ ޣNER8%W8eyTbQ|~6h7]UgVĤtbА&MVTTlQkSE@k{^=={]T<X, E_ ڋ'$wƄSܙ@8AUuRQ49MMkVh9NO~d h"*`}ww>utt*W]sNH9/`ʶ ~:hq&g*tAաit 齥o> 8ʩO4 >;}R$U$b N:2;**+ 5Zg$)}٥˞=> ɤd9fP;=٭X_: */U>穧~]O=>?+OOK9ؙBڧ9kMT`c h *`󟿣nEQI***KaԺ+Z 0_|J_S?_}~VhQ:}`SSZ@~&}7Ǯ{XǽO5>>qj="9euueY5Ժ Z__S>Hʁԟ"ۖŧ_項xZs{5)-٧:yTMoA[SV!388ӧOkL %*`Νo_Vgg$i}=u絺|~lX:e멧LH_q njo4OJاv I|]* Z]]JNkkԯ =Sm[_QCc5d_ʍSSڄ{#Ti*}j9?#BөS7_;}C477'~uJ hSЦt7ƪS`3SC@6>>ӧOkxM] vJO>9zEaAGRɳ[rh;SmQЁVF@5<y/ ؆S w$] R;qʜrUS[xv޳L}*jHlVl֓ǚR67BSZ4';~SKT \&jf=;=zlE P>n!hUm;39VfhJ0%uS{e)TLP*zdTh/jQ/ ާyT7Ǯ=@3v;pe \r?hp>`p y)l6ۧNo5- 2TL(}bL9/2!ܣMf˵}گOiHOS-<;O81>PA@/cccıYVӂ)Iz$馤eI=SN .KwnRU~]ĎC*}?̻kS]q#T*%p 4:Y?jީ0Sw$]:'SR̉*z;r^2c.c}S:{|\%I }JC;z_u\0H1>>^; N;Z0T-@w@SL@M7u>J8U٠0<љcro;=6E/i9寮5JT kjjJcccJ~_4-` A*#C9!tgRZ;rS=}[Vztt5Ϳ<}Y j,?*h_))|%IAwNKmLՆSNSTB-@>nnHu_,T5uQ_-` 톊xU>G/+ wHSz휞rzw賵Ss^]/}ǖ7TzԷ/i/QPާ8?,NP 2TLɄOdΗPƝ)i)NM*'&<ጾtܭ뒤;=L42N>]e2 +L}ig:#N+jjjJ/lVlVyESLIIR2fzTzTQ&*^[ M6ݤ TqRTh9T6u&)n鴦dt^)`LI H&>U;wNI7̓)w(TJa 657uO_>zFFFf٧BKa KRnu/NH'F\"Pet;z?/ Ԍ9Id*TZcڝ5I+2b{@OTh5TU6 bFmw·7uE&@ګJ0lNmvjJ|WjeMԊL8eSZsy @O5<)KOM@W۬ΗWT}?٠>qpsSQCq qѷ:=K%? _8,iVT6ީ^8%>9R$ݖtTgoN/w~K NO{@P7lVu[X?/310SW$ݒO;éZoM9L-rZv<-wm w~*>𰦦466>|388X7meSB p©0PSS1m}BͶj>ޣARsdt)@"oX;)f0))|TN U>1Y8v8T_4ظa>z-t:>Pիm_\[v)'馶Nm6~S[9[SOEé!H8A@ɉ(pUs-Z4#N%u8%m<-J_)e@G UWF@{Sh@aS+jJ_C_Gү5@KqSJߗ }T*L&l6K$;`a fU}rDVwW[Cj'$}OZSfrR[KRf B`/T؎dz?26 c85'GVuAOJic8 :%}Qܡ<>Z}) *~ٟ $w}۷"L8Tbz ]}*}NP""` @A>}}* ȭ)ǓI}~_9SQCTmN5@b @=STJOn5[8uKmU©z'{S}q\{4 T꩷O4 cxxx[Wۅ&BnM9N}(é6SZ_TRjMf*'!p tKy}*eTcccS!H g٪SO-𧦤Sd¨nUW/[_p VeeC ~N-9?*n>2ƸS]2?'/O'Oop?lVQTmt;ߗqw3 Vd¦.m ܜPJPwݡr©Qqj B"w~Ik>ޣߗ *NkU V@UGkJ&SS UlߊYA*Ub)w0UpʩH85!Uʒɤd9d2:u #T,?T=S8*NulB9c攣^8վ6I اPTT]*]NU/ IDATSjO ۓ}; 9!Cmy]ok*6޹oM99h >w਷OU&X@-*~;tL&#IT MQ2T*TSR))Wϒ%ْ]+wsSqN@V>U&a [c```ӎ###MC*}RFgdB;RpJ&lK*Jvxr*'S$_RH2ӧ500L&CaT*U>eE{]6*(W{rJޛr^K&ݢr6VeNNuH:ا55uQ/@@(*Nk||܌aHNPWw;S:}4xto/N֣ݭOJ* pSSЦاP˽O555>p ;utUfNMLtB4&NulCET?r^2d>^{rv?@ON>>Xmw4998ЇSaڝSe}j_ɩz4պd&ZtGRGD~qT}@(&+}~_Ɩf욧wʄ+~ДeۊjTBmLܱ SINϒeKmmj}ySHz9O.S>7j?lP]é0Nݑm9%mNYpST%}TSʝ_sS(s5551 '&7Ne̯wۜ ʣN iݮꓴ"WاA2T2ڧb=PEaESSQtsmN9mIErz VeB4 psܵ?Z?MckwjY&tIOpPIvdcIвr4ה;w)IR!T7NIw[99cW4 T]ɼ|YOاP}@@ӄz -lվeRqpws}ܲ,Y]վC|"vާ>/@@SeYj-Te©ޙpUVeN99Z{LE,Ed;Kzq%u7K?$ l6EPht,F8%}9=UpJX$K,+U-h.)'i}*j})S 9* cnhwJ2S>=v""?BiwCM6T V&a*4D˅S3F/r6Nչcsz**ۖR@e;wK:@ gj9/@$I>}Zd2B Z.wzv9=Vow*b)ʒerZ@@b*ǩIS Od8a LUU"DD"SESyIlO ܧK'~)W‰ gZ25^1d~}驈Ѩ,RPRBS@ >Ue~4y5@[Oi"dNڷ.<իGыNOŢ1EŢmNck3`ל}*_jݒgrU{_pPg7\2at[&L*1rU$s׾h4h4&m &r}SPqjM :_`|=5U? S!8ܓ *^wOd>fEQ<%KBA))@H/5Wڙr|[^ݘk#>𰦦466>U@T؆ѝS̯6ߞrNOY,R4S,ں SI~"x˩&}GH[[{{T ŗ%I%Iie2e2:uJ~_Z]ipJ 0T "x)tz*P45EٞѴg@CyOצ;S`:3uߟt pT"#-NI6T HDD u Һdm)@>v#7sS *ۖN_hp*LSRunO=ݽGm+ϫ^4!@}ؙd }l6d2>Uq 3e4^o)ɄJRzwS]{_]S!_0wa _]qgj[ߏST@(8Tاj*w6$%sǽzSҦbzz*hueUżi8=h[KL<׍&<ާ8! 6nlKIѝb˧w_VWV_[Sq([YKeppPO2 T @@`SmNI;=%SO*[Ssz}S;9Jz5NQL&ui (P. Tg׼szRGSxH++Z]^V1_0S\5(%%'O*uU8%U!UD"Qݷ~~-V~uMv6ST4UaNQa>lL~Kh/dwzͮyJh4xH|^KgKjU79EzT9*Uo*e4Wo)ic.Se)bYJ:?;Z]YQPXs/7I&:u U;v٫G9lU:KZ'UpwT$Q ¶=p:A:aFgU\/ʶly 6=W~_9A𰦦466>]Ph;T9A%m jJ,KX\>Y-/紒ɶ 8Ed2>6Pmé`w9+oZ%ˊKdRhmu|0X:S69ޡU *#3;+j}-/;fPϽO588mX2M/_aOm9R,B]뚹yCB) hTup hSiQt9=)NYX<77/[3*Z6@PhghNIMI==f+IJJ'zڵi-rO`~_ hv4Sz)z%gW[h4Z[]U>&;B@@P:j~?(RvܤE}ߗEI{%ko,KFzGt']:hh~"VKg /?|W++~_V%Q9RDv#Q}A|R<ѽꃕe& f?t\xA1/^z錾3.ݺu+S^Ҝ©J<6C&˒:;;խoJE띑\Vߪxa8T@8wnRMLLd}1p**PT}ժyYdI,uwHfgnHT_lU@V. E‹56KZ9zT 1 3WmUϲ,+I57 * wfOU_x ^:Ç $} "NNOɪu fO x!IB# xm^aʘÏ륗})BΙ߈ZNIf= Zi|!eY:tpPk`j33[۟?ܞ;7yOHT@;7Ymj߲̝2SN8%w|{QW o["tq^k?{w$}yܻA%E *$X;8I$T\NJeUʲ,;*K(+J%lZݙOx33ݿNOotO%M>-}~?V@%""2-ơC_prsEN~'⥗iJLep eSTj3}O%6t:nܸF7b~ DDDd:\ߩJT"SEHAm3վ.%L~"YfuuNؙڌNDDD~*GT"AHg*⦦S>L?V]*Zk?`~h*"""E~*GT"ŦJ@Μ9wM]hZ!W) {j'a{X\TZ)T"{vΗjj_[LYx\pPeTdK78v>*UDDDF\}دMoPU7hj Yڟ*P@%#η`j_;Nl/H=y|ycr4X^U@%"""7pSS{9>{D BH=Sî%izNRd4Y oSA/Grֲ▽MqTkHSn=&=+QW=`ZK7 UQ+N?Ugjgyi8gW?H>P(zT[띂&ڗ92[g}CcQޝ?V?d)QLeo:.IONAjG_AV+~d@d#./_f DDD#㹒N$&LmηQ''DdP_u0izUj1f`pΚX(ݫؿcm_DDDvӹ<浿LĸΓ/\?1ӿTDF#ʢ..J{S0SQU:} | 9<~ѭ 3S<_TZ=T"#{NlOOY\@e蟞J'!!N%ӷFn_ZMA~w-Cj=S;1eJdtyȴ;ujShz*T>6NG'>?~x_1:Z޽2j. 離>ơC_#---pcN|^XKdW"4,==.KS}~zZQ9:p]OZm|9,NK9pФ\DDDvԊ~:dLYT"JdHʢ)+G OOD} zN]%e%20 t ̂3>>{DbILeTdMOF#x{Zh4XS'C_ڵ,SDDDƥj<)/gJdx Dv̙s>=4MO [uO+*4 a8 TNz/]Õ wb#KբޡhLEDDd6t:tnu**-Iiz*oTKT}nz>°Kuӟt$0jKcv;ܽsNEDDDryٳO%C D2u)Vk.CY@9zzoqSFFz(j2(KNPe 0 䑋ٞ*dT^|iy֧dOO%ڷyzjy*iߔ[)Ak~*PY;hԚ?tRP+MOJdk DbyLeih}92+Av9S^]JAuOvP q*b}}n˾'}""""hbS?H6T2ΟX,Nաu^2MOT*U8D۫:N2;P%2 .j#"""2iESTSTz})Y9TS@%\%e >Ȟz1j W,qƇqB2LP[lmU%-Q7"jGTꚢECdtf[kRtjĕB9u|Y>-ڼh4Q^}-VV`{2A,&"\ƷnXN/;l\ѯޡqIk}u {ZZZdaFއ11~ɧx饯}8"}4UY IDATA%p;pJ/==^z_GgxV]6pduz_UFeC5js;LЅ NETR$ $W35HY/ss~OmlAq~vv e ⦠|ZK|* #L0]DDdPbO%EJr1=S2>HOPcժ8m^}( \ 6'҅6 -vjU["""Jr~*)T2qgΜʢ)pI6q üܽ{kSR; |P^տ*jEcBDDd`!cddt>~*I^/35|V?jc j+۫XHa]§_*0ZnHըJDDd4=%Tɤ)| Zuy|yUTz#|].COy !bVUd8廨UC"KwKu^~"""d4='g;{dP${7X=?ۼ? ~`annzn߾I\jR) *UZlABDDd,y||0J&A␱Pϔ\j+~s6{vV5Wd䧨T,=8Z.&ԏ }"S?L!#ᨐ1ͤU?⢻,]c@U{ Vzk~YSTuz]DTPl]0]wFT2N d$3%{ *WdLݼv{uOѽ¸ \_T*iBԍmMϗdk}"~*5ʞ:UZZ:!䬑z}? 'N4z׷8/" ʗGz zٲQZ1]S,,0_;y)^zy&d:)ٽ_']x 8r+t:]݃{ E/SR~zߧl^ pT!0ڸ쁦$.\? T2/gJF ':A>nܸN92TV|@^kķ WKA7Gղ!""'fUrTZҿ0d|/}("Ƥa 0?;wn7e fcEk*RmGՠ4=~3et~>O~*uPɎgJ&LJP鵾* Gwߢ.wFr @y6u[#"\gUXa/OYyxJvC-gJ&c *ZcmEmڵC0N]S~*IU_/"?z%""";2O%P@%3%1cǏ{cGO"x7.LOT56T>!U%\>/("""V>S?*飞YZ:!@*~67El6i6᭷VFsMP+LW˚9JV6&l;´DDDd'̺J~*يE!Μ9ꚒIJm{1}G?Acy{^T~5?_5EU?FHe۵H?RDDDt3ɟڟ_3u>Ncܼy;0囤 |>*@ !] #L dZH_SP%LI;YVV\Ý;wvA>1ACH>JO>y*+ %ɷ&}?9{P@5=SZGU>LFfZ޽ @{rrT&~ʇT>JT>JvV5+vTyz>ڟ٦jƨg}yB죗LɐϭYU:c S{k|**;|HR,gyzO5PLI'+ښݸt:\ rt}Se֥>|ڮ+w#>꧚M JN=SRl>ɇ[1n[odqF=WR)IWOTB*Qk.N""CS?l}2>NiOί^U\qswYW#MP_S8%ŗhs8e%"ܹØJ]ŕx.diz};JvRUqTfua"""r=MOt? .jP3%Sdc8^,'"VVVGjc>΄)߫W鮩|'U7u?khzJdL|?GU ӧ_PDBvdUx5j`&y<2皴bscɫ7GN8Ҷ);}S:zdpjP pɆZ˥KK<Խ!sOխ =ߤvb[1od% [4+R1Ĩ\4A53%L0kg07ZmYg&t5$']o$Urڪ 猯nZKDDL}"GT堀ju>LMVk_އPpߧg֭%j}y6.j[ tχT<=^(gvw>+Ogio)ɞ)MMMv[? H͒\[YY՚Z=\/ܺ_YmR'|yz%Ǐ0)7b7Gx";TMTS̙s JXPW[MPXYa|vb!UC*=I j엵_lǺT""2W L 2V>P@U`gJ|R^+m7A獵ݻՆ8xwqoVB]/k*T%?~LjODD̵~:4v9SM T)-ۭz+~aΝ4?;GGq= dHeғTɞ&.|j9J>~obRȴwKȨrڋ,_sZ.JR%zU?DW;c8; F 6m?i1 Tlf_1Ho3ޟƭY )5FNhJd,ɓO_駟$A)]tz_z/Wvя^a~~7x,.Mweo]Gj*—AʺŸ_ (OjJDD hm5OUT rvEL KOU\r5yZK/s2T8f0˸N"2*&{/R=ƇTu?CvvqsD>R%""#4pjOdb|?AUN|/}("9BToKY{c[q:Zz}QP%BH n#cid!zքTUUTqٻ*aA@@RVyDDd59/AS'ғ |j*QP|}ܼ<#oBX̂X3`ϖu}YUb6n"YQMzWldDD@PPY4DDDJҸ(E꥗$MPMЙ3n|PHRV2~q0r;;vΟrTB#}BX }Ƚ4Uro&:4*‡zTJ6S?dhj3%2wq'")kn°͛9|xaO{yBf&m]0 L_k*9M廩ct=I*NFnՏP7̖)BS?x)Χ)*JO^o𚟵njipLnjN2.lm]0FHT%C9\gdU%q.:y6ЭuKԏDID)zȴ8{@g{Ԕ Gk~=%WEVkcp=TxfB5{`_UXcL`B*m.TmGU5C(AM?ED$fr}>)T̙s d}4=TvhW"4A3k!a,DxOS%dPjBp(3=TK}Heݺ_+BVRI4AU꟒Jk{j|ϔDF' ({6 ]>OH5kw`oDv]0& JF7U}4U0.T{_-0=7hʇTOREDa]]ODDfWᔽw?%2Ξ=~=R@5LSV@5ZPa~~oc&CU[`߲Dȭa A%T-ɫ驾UlTHB""3))w?Ó8jy48"gϞ*@.$TMI*@p!U`Vt;l4o+3{·ry-T A5`a#ؾ̲Ymm|X5CY,5]"K!""sXjzl %N|_O?Tއ4+mgJ`P@{" " +i䧨QzVDEPTjO`RߒS[MS Z7ۻ_ 5""R~W{* *1S G_TϔD]?T5t6@.}{}#o+wC]l'TTkn`jln!ƺ_bϗWҫ> ݕµ.P}T""c8CDd2|?*L>Bއ"3AW_nMPYB+Cgs{{3"\ :j:ZcWbXl{TtPe6dTuٛTa7F꼶EDJ+p^TqhOOu':U>ݼ@.>.%B)UuvoZnapCѐ>KY֨.)˧` D`\ZEXc o1ATdTT[JDl;kWMd?K/}=)MPz}qS".T2ST*B2??dץfr ?^uS]a(14g7z+ڛ Lj/1Ae*TI&0裪VH\M]T9 p g*LI>%z=T6k.IST5nKBs\Q}9ZTnM[ɠʇTAʯ>tS'*EnDӥjkWDDO)z_Iiɇzf2RϔHE7[*yE.*Ձ{귋[̙as "_ 6B*_A!U8(PiT+J8\)S`@u9NVהɐhSV묫mn1J1NST cdoufVɫjF.ژ 0 CqT~ʇT>jp!Uh:a))L8ejzX4=%fuofβ}ϔxP[o[T bmDuil  >Q5Ԡ\2tP%&|8e*A|KvSRͱRvB*A23?>EDʡ@Ws!+IY JLL[5?Bj}}Fc *Ƚ,=i#-1OR*kV,T_PuS _7秨) rq3DΞ=7Sk=NLiOn*STu6SU2ssCvQbV5ϙ  U5 %UT JooPHU۵D+JED E:W4Ƅy@~oRTvo=y5EST)6!(UnsfUv@}cU+lRPu?Rͻu#0g鿇yN]^,S*RϔL}sП4$WV.0 vWh4Ś̱xjBdZªAUUDT AT<ғT CNt*5=U<ݼ@d(e*Yzd ̄镥'éZdaz-OX)Uj y[p{AWBM\`!ªtۊ%Ea/L*A/JTM\i<}!UZ#""7)J'4=UHZT~3%堀j˸dT,}^Y:)*T,L/|!U۵FaU+٪ ;ʚ ؚjqPUS!UP7.!lmuC""2Z >,yŬ2&Dv-OUSPu>SR 6{ dH勇AUq_JypCߞaϗt&nsf{U7X%^'cVI≪z/ *T uB*5I%"(~83ydÅ K7u3%%j}.(RAC5nw I[,LO2nj 6MC]u6n L*m{ABP 6n4M!XM>LF 7Uԕ>oEť))O5kSPӧ1&Cy@エduz*]]LQc HF7piYl;ZeV։: XT`XmZAU5"F[LlT&R@d#( O͏VWZվ2f=C 7mAڼb;NcJ7wY0_Ka!i$UXVw%.h.yaVWo? | z5eb'6`aPo3dNtUq3[k7l[/-'o@`"YR|8?/m۽׏\S@UTƬy7'⥗aHͫ)=6.dJ<]Z-kʏc S{U5o~~-+V-OYY.L#۱е` dU%5 mDs!4,A#Ҩ`-$JED*p+©̆i*'6xrGVTR6nle5~=k?_3Jnka( t IDAT/~ӽ\ *"Vo3[?d܌[3}9TLW8b-ɪf`&^+VC + )SmbTo= *UhJfoy>L9{&d  6P0;C \`MQ:~a;: o.#7Fg?srOwB쬄T5p]Q^x9e]T_e]=pW(V,\-v AFDQL6p,**8cB$EOɓO_+\PU 3g|23OP0܎7E;ڸ)ĕOQU*uOswX7b?w5U p]VvMU^YO^MUUT Tں*Іu+""ƭo%>AAkJfNj/~_}rL,: |'+?u|a:vd@W~APVgmmu+_x[1*!Uཥ^蝫.į7T?u0kf #V!Ȱn7F=b[T"NQV'2BP`׀Bb^W7U\ nwFkkw;vUʧ+{5M)I/WqV5=``xe06}s }ED ,ESS.ZLkR0%U[{++Csՠv>Kjު_+*ԨVa@ y%G(Lx@{qɖց{XU_+H݉oYSNPbkcHZTϜ9/(y@A]-9!˂ϐh¦7uUOUYT*ͣ<|Jgj{đ2uW'. DDYM9\8*F ƴ>Bp"O3bȿJ~裏kJd(_% |@X2 e} Ngw҉6 s,¥> V'gϞGݗ&c ΟȩS/pӈ#y@A]kzSN%oɐ0&ZG.5\pN9NF{+4O#WT""2k?NM MO ©S/p7AuVDپʗ྆WkF:.7{w>X:1A»HT;5-A:DqSG3g)QU;+)9!'FU?؀dUz(gG*}pEDDdJy@TI_WDuE}S,:zDFn!(ټ \Auw՟lOSo_pM\@U&*E2O5굿=TgFq<" مɐʯQ&G}`D ʁ~^/WHUɹEDD DEީ鱎1eK(ӧ_i?՞:3%;; pgu@O}BzS.6~/UMQՈ7TwP݂ oeXDžS55>~9R\0K:DFiTRϔ$ijk; NNQ\josᕵfQ%qG8EJDD2.{MMys1F\QS Pu>LL>2B'׈oUC*jqn k[]~(hpO?s6>)p;5RS3b;{ܮvϯdϔDp$(%e?!f|k=Ej.7EemHI7rQ5>_(>,SJѧD&…6:s朂)B^Ý)daz^Pժ_2 K|Y>ҏq}(""2I \c٭.k*E>ɓv70=SZ) T[.lN 3P%C]/Ragg"8_,&DDJ܌g7!no'T*LB\_k~Ɏ)?ECJq4 t*߷ 'vqS}cѼEDDF۪`ʻ~"#]Q8%R4SkL={N|"替 L*&y5Mpd<.lƝYs|ۊ?GcS!vٜ똯}˽짱SY;zdx wzـ2&AP!JBRRPTVkVQթ ^^""RfYor~[֤N޶뗟z1W?Nާoĭ7C)'O>ŋ/~~jm~zDcy@-Wpg~J*}U??I ӥ~ zWve׏b=nOO}(""26nD6|?7?EzH[(:mU V~]`~3Rؿ~|~\U""]o-ɑ©ÇA"g:˛*x/r.i/Rl MJ&.Jw'C*_[ۅ׏bT?W_x'PDD$ g©))" Ðe:Mf}O>ͭ[7x׸}PDZQp7q*ۓ" 2q."CƁՐʼ[R~*BZo .=djGUď뢚?_ vhqH%pOǾ%~Wለ:L/SfDL$!fO%RDķ蝰 l_0}.!A>*PHge~/<刈Hy`x)* uOEۭ̞ O'Tvf ]zgɐOɐ*Pì&n*Ru>IuF!U'>/ӿ5>ԡ7XiNDSkk;[KU{zZk"l0%nߣwe?R%W_WW1 cO|gy:?sߏ?![ Z{{Tj**kytwLy{_SP%yxwe.eɇTՌm|PJ~[~,_?ͱOݟለKpDn}"3L Ηe$<~1J]JTz/R j:C=PIK,7 I<[[֭I]FqӃ'y&>Ut` XoYc70ŷv9fXsT1Shb6alћҤ޼rj@>* cJ:|xDq%?>]FZ$վ_rOR$kz'4y=!O}H"2,.JS{ESv{lYZ]]x8$6uh-•砭pn3)Y7Ldo'|[nۯq<E>[ӪǘV]/)^Fo?z~U̿>T[ut ?(""p,(dlڌszJdVaHTZJfW9rOߘ _!UkdOڀ ::"j*T ~FAHAH=Nl3hRj{VSS7pJ+~2kJ.+~YO%fnnQ\H%;wWX:k'_߇@k1Þ"_8M9Fܙmh©򻅛\L$oyLm% #ZOЪ0nқØJ)S^aViIi]}~U>j!@8Noݯ[7WuvQG.{<2s, d@ ?]%\(DJo~O&=Scrͦ:u֊55H!'Ҏ_ҥ>)u dʤ'N_'E${/UzT<}?xu/<_N19GXhBdTX]7;nѻZ YYR 'NrБEd$^3~ TpTx*8ORkUr?v>~vu~|_y<<| )]۵.S85c&;40 i[SNLP%Jdb %'e澩 kV&ܕ\v/ͧ]/uqOGFRicZs9$ɫ@MENijjFc[XP0&ӣݞUAJPy/__ҥ>1w>)L/ZORZV= ,4žr_=B+oPwVMۛRh%·PHɵ&3Lv:20JPy꧒i9NQQR*.,|W$]TƷUz+!AބQ({T>IJ0G ^G]_h O)F|0V> UsDzRS?]~Gpu?^~c_քT*?b*+_og_`ϟK ʇVЊdha:f|﷗g gaE|>ny}wGdJ-?Bxu+ۓ;,)Uܷ"FͶ755%^"N5 Xf5f.ÇhO cnT{2pk0V| +i.n_k}3wdN|dM`_Z|KM d+p7SEP@%1|Yf6ڟ\QO}1T{.pk@c|eY>tz:j- DS;BcO~C?<̾_|W;|hqفd8@p/ˋp$8Af~3Pyi\H%wwOcXĘ*TY+kz"dPbei*N|=" ATw~~=\ޥ2"{cd\,^_o Dɨ\ԔdO(f}/SI~}{MRoW;Ø:~?z{w'.fmM3ޯI w}9J1>|7C`j0TO%yi6})jT~\瀃ӈӫ4Uֺ_z:jK^K1NO7\Y/Y QZNE}~:}#R0:A=I^oU8+pi)pž$Oɤio{ HSGf\W~yH ~kOp)9I5h:浿x|+upMǾ|ݟ$?W*ʻǸ8M#*y ébLNR0m/_䡇PdF,,|;CRޭk_1`L%pN5\GT7 5'ͥ>fW>㸝+?G=~ֆz=OuG+>pJQpaRM&YguuYij|?ws^k2V[sk5I5:ױ33{ҥ`wS_5MuXS)$(.\ jM4ykMÃYŧ%⹻e]OSp W>jHO>4nP?+l s!;0A}[nbtBz51[6QɀYz!qi:T*+A@ߐ5~jl#_);pU0%;QpJ}2.Sh IDATz'8HIs >z(Z1ոʯU>í@+ޗ^>EQHj1Kpv?z^yNPq)fDvnwAr}?= ̒H =ăHR$ŶKue9v/WruWq[)ru*t[A9ewݓh/I| 33=}tN̯ޯdj{zf7]vMQӧOĉq_K갟 Q)%H5j5I.yQ9N]P(PP0 F=ro˲J D`/R99#DZe MNKm}W;kMoir X/e?$W|/K@ưg\R3Ϝ|^|g)8qT7oZ\חJU2g>V}ں/w^7۹ǝYVs ;yG 9#rKU\ƥwׂ=_(LY,{FS܀K7l]?w{*jBEUPQd :rvÖݶն݅v[v[qCG9?_~Z~Rx Aܒ/3v8?R Ƕm S*?g]qJ,qQ|yfg/ⲄTZVV~EI TTIe="˚RWUBܽSǖPhɿ㩳=.>who㹻&T,emW դhB*(KyWej6 5بkcF}llԵhhPscCZVSڶ-*v{E,C܏r Yfs_W p9ͫtߚ{kzO~mqTgFA{9D<_σXQ|ZMh/@?tC8 g~~N\kwP=u)IK/4ҋ˚R8!I"R!;Z[{JITFgCkrǃwT,NxwSMU(8*ͻ,+\}> =}RI9΄wwuIc_z; .NH(LݒnϹU;yn'Ci67P|sjaaN}O;z̜'TzW}H|? Cz˲>"˚R8BkyGUn,/[?}'7U];ޞlpϞБ/=TA5ܱpwP~7L[=@}*Y3ͦgL Rhaan$wUZیis\ T*Z$=!z)wkl/R˺B,s?sf 9OBU0RGjǢ,bqR¤66uxuKg7s{9U0>-Q㔔@u]3g|ƁJb/,BuE%%9PIDYQYVIȶȶ83z7T#USݡ) )Zד~= T TCoqTw{'0\0NIiTR[,GSL |*sa]T:~K;E!IO˲/7"9}Un꽣*jHND  E5A=3-@ T'1PUKՇ SHMw]2@u}Ž370I1gZ]/ vwQIiT>yAD=-zLT{ܖeKуTow/O㮤,G%Q~inO[:m=in TCoqTσCKkTTSŽ3@#TcY[{Zkk1PwSTQ,K0Pm=.P7cf M6ɍTm;jG̶>; }wT{9UsGnzrF;]ڷoCr 8(”/@%1%ի$")Y֧5P>zUg/Lsn:hRg/?wRMhbbJͦ6>}>y@xN@5{{8Gryc|0~{܇nmU F=Odʷ|E)2T赶Y.*)JgQ^*^Gv -˖e}@!7Pݕd{K'jsԧj{z߯C깴6E"P)syTbU)_{wŞp" S?sBիw@%$Nޑ?i{7Dwې@;r#դ,k= T*հ^=ѹc kfv T=w=Sgl73s?C짂*IuCD)k8(S ~ruFHUW'RKrT,QxM~|]_WoT*ϣ|(SRվ}-{BT*ZX;@%* wQ;PܽT7p SGNwVϻPeoY5TTw%ݖeI^jVcUT\?@e9PQj(8ݗ Q۝}z1s_1gn{vK**}R?|.@%F>r}w?vQz*[?u?ԯ=%˲ {d۱ɪ +:"Pѹ[0EBqJB**2T83XT˯U@eYGuy\ uTyAc͏T?> uvRݖŽ-M*XS-ՠ?@e!P/z S@bz_Ud~`$|ƽgj'T>S#TO!$qV0eY_Pwa7XmV5Q?T>lo?UKUsHՐ_gr [LOU-Y'nT>@ev.ʏR?%J!xow~tjzv S3D*Ta0?]TQV$9 9Ώȟ_Tw#U'Vm}] ];V;_eY-oɍTk*'n4}_"} %%PNJWZ%J!˽kjз;?@S8L$q؟9BU~wQme)PNDa%;aՉVuG`7P*wqrQݓ&iMjӽ#x@5{^b;hTG{*S$i*cpywQIY TT?LwT~**+ѹ˪ÔXN~%jqZjrq=I$XLaXWޒu|UwwjįTü'Շ;#|@*{*30K| kqwSeի;VPMևrՄ:**8"X7=Fq?G[jHr#{TMnZtSlWnzea@E2@j˽;j 4GN:r Yb۶~#MIE1mkk_WnTt@nx:jRhՉWh5X9%w пʽPpj78uIw%+iU&@e@5{>{=}I׼_TrKrW?̥-LR|VWt9@ܻ\+n*#ro:wX1;XMȲ`sCe~vC. U՗7"P @5{}~{ &~_RVՑ#YEz0e(-|2Pffs7!SeOa,Krj(iEZY5%=r#y^"g,/T9rcՆ,kCUnߑt]sتt|U:+P&C"P/|O ȌK_vtÞ)sJE sq_F(Tca*[_۪yϲ"Rť-i(G${He1,9˲rjIZt{Dsg0s{ŹQNt2&-?R2q~R|W4;{!H%Seի$qVTH IӪ=/ɍVPp; ؐBvU9K1]wyJ_x@5!Pe?P7GBnwML3??0L;CrĹ.ҡ-n cƫkuCsIVQ/ZWe=*1jGqn/=r&iM^b/3e.{v@c?9S3@ov/$]މZR3/I%V T8sbTK|=@kc!K?Lžd6PI zn* +U!9&P Q{wwG__@h_z1g.K{v@c?9BUzj #Pp7/Mj1/QrbM`/SdmNr|2_:]wQ|*wϿ ;E"PνO(`uq./tRh_ 1g.{v@%1*]ܻv@GnJGi@5%P$!BU/҅0e./|.PUKkm ޳*n*wSQx'^\@@ =rr$s6P3GJ.~;K{r_dߗm_䱛cx!jj)&Bu{vt*Fҁ0N}1W{j6$FVK7O@r#))ȑ6#)3GF `/KM`>7P[sHC}•Pn-_;DHےֽaS6{Ͷm5/#@c։T*RZ?W_zߟӑ7n=~Z;qIԐw ;PMO7S 89T;`\q_~?U~{@eYöR1/{WnwܽSm~ ĩ^ 1η;ffs7!S%ѳ4]Rl^%Do]8삹*T2g\R\ܗ 1V;3'@MuMQ}Mאs*w&{17<ՐhvBܗJJ7RUat޿jq~SpSTOepG{T^ݑt;6T%|3*$S#T%C'R? 7Uj66䆩an"N%a{F@52_2\?@}* ,K֛Vw@% n:r<ƅq>s-*^> Tǂ{;ꮤ{ޱiw.jzީa"~*sŧTBB;wGnĨ~Sa{CcF !P łnׯ цj9jĩx1=UU뿹;vTBQkujW`C}IMBcU{Ƈ@5&VWt9ȕN"P  EWN,EMa*x jĩk)CjU/7R=&@5L*'411wC\ȒC=J TT*9ĩ1ba*0%g%LqR++@ݗTw@$ȑ6(ٶF|"Phyfg/}~keT!x9I{ ;&PMOX1L3??G*3~ju!P MLH^~P@aG s8=Lc/9T 23s?C짊Vw"P T嗟׋/Hwlyo>q*Z2WT0e @0 TD*(x絸H ^u6: *Tt3e=SEJ(Sc?UtHU@59)#G'T0^~J Trr{0 ҏ@rxFs'jqv[?y^. ׆RcdqԈضFe|AB9FV{lq Tfݖl[wDo olImuT(t8|SCUZZeZw"P+PٶjIc]z-B lwKceR|*Ωmގ5”!@Q*s TTͦxڵhq?@QxT88{@a~*sn8U~'yifyU8e=SU,/_셸/#Oe;R Tͦڍ?;DWpW -Z)ik`!P;P̰g*9TNr?s2T9Kw;zj'}/AvgTTt`k{1Η?9؟!SYYmGgTqfV[~jE\_&NFJ%GWag\R\ܗrT3TIT%nw_W 1?H]Bn85<̱g c?9B:@@j5e۶]ݻhm폇 @^5Y IDATz Ix}*@Ea*LA"P~*s gmT|9Urmd۶m[_Qxmtq}"P%-PMOY>̱g A*ta?9B; T Tmml  <ΨG6PG2Ǟ)C2jT#*q?mݻZ7"dP0D}j@U*9*E|3-8s@@8m9lz?EȀ݂TsUoJa*vE2`nwTT#izSظ E H;@g"N q>s) @0%E~$@@~t;.qfG`*Fva۶ZܗJaXq_c:yГO~]JWuZtڳi9ɿ&۾&~K,@hFqjg#L CCc۷o|rU--1Տ{FU(gn_m%/ ~ YP*e軨k)C! Fy2~{Ik\} V?@VG|lo27RI{U*-,}H9Bc/SmK7~4_<Y4\d}N Tm=S(1Ђfg/}9~#B˰BaZu@Hlr9΍ ȏQ`TJ#}`T8s)Ta9y{[:}Tܗ:~'RǍTR;PůibPxR“q_\{LJ*GAT?zML;wV++׈S9FSc?U8È_F:9z^HzdTQF}ΈpvozM=S31|~*C׾}gGtU>{VFs¸)SsƍFXܗYY֣r?X-qwWls{q_IJP !,S`D rI%#6qG)CB] cu)8q?OP*T>{}+M.u@ң;nx߉`PmKUFcϔ9'.8GJ?UF۷CY֣> +I(W.*k89@t q_NS--]rᡇOq7v+铒1 sk*^gԹsg3g @@Uv)dy#^Vqo}T(dY}^(U(U,*ݏ&&ɭ={܏RyXT6wHmjIfGVQR-ٶܶmvKmvq[~tr;v6icm~ϻ?~?Q@Q)j x87EyÞs?-˄|SHBbʜjqcz{E뿠 ;UwIsaRPWQpjqהǶm5/#CR( '?juTwS)5AX'wW%H`Fǽke${t*$̱q?/ Q۝'P='P ^w ̱g YRT>}ޟ={^ў=L/ÒT/=~r$z &չJ>qd3Ǟ)d boxדOg?49j_Ru2B8}wA0X9I`xRҞsTjqהSa1·,bD2؟<;w#~E#~&3Wz_&}ݽ'Z1(y}Q;=}/aJb/ ;IO҉G3pq>|LINy펉N0:aĮ^ 1·arPe.cfjT ޻kUINq${q{Pݻ|KzPd'0ÄaGcD}.z≧㾔x^7nq_Ru=SL;wV++׈SAt9؟!S 'T*}C{|T=2}(^;q^vN}^|T?FzO5?.6T.g3FR\ܗ$ 豼|T!}?obڷ TmC:B(G}EnAGcD}.<]ۚj*3e=SA`?U8rZ?͛O=ϵo*}cT8v*`2:txܗw_׮}Bkk[ܗT.ӑ#g {0 TO#gtF߹%igz(^PqT뻝S9Տޓ8vw>.\'g* L!PC`?9`tT1'>qFOT=|Nk?@EyUT0890z*`3Wjirܗ(<'<D=OJ_Lw{N1@ƯhvK;bt-^ 1D@DPeT[8>3:p)*/QFTA'+Paj0Ճ=SS@T@ T=}SgT1*- T9&Pu>˷U.g|x1X^ q_F*j{=*% T9&Pu>*ׅn g~~0 #̱j{0u0 LT*ZX2\"P1a?9vwzFS*U T9&Puܻ-T8@$17衇~@E9j<*U\\ ;c{d!P _8=X|@}@1@ƯqT ;#LcH&@*s TMUѾ@E@EJ׹ry89l* 3Gߓ 9~Q@E@EJyTT];T8GRPeX'8**TT:/om) q>s) =T@J0%|\l~@{Th Td~Q>QjHmѨ}8>* eU3ll@E@EJ׹j*}wX#LER?sꪖ.}hVQ5%Px@1@9Q*zF28n* ffs7!SW*TT =S* ! `/SlGuD"PN1@5;`=S@d^2RTq\tWE=*U4*UwR#žpS@ b?9S15t)Is*cj;wJ{̱g .a2~k4z+T*U4*hw"J{̱g >q2_tXuT_D!P5GCr=T3Ǟ) ?T@N*zoY5G T#@5cjnr>?.F0{|!P9~*s?z#T?wsL"PTḴg 'CC?TU?8K2T@58*ټ[ #Lc7c*sţZ9"P9j<*K>GT3G 0U--]2r^LcT~N1*\~{3Laa||*U_EJsx Ty Tnr>qaa @/.xpC@sx TY Tn]R a۶ZܗJ @_*sJN:Zm;v>G2N1*+TwJ!3e0`7*;bV;E;;G2N1* RwR ƞ)s @ffs7!S%_w:x@5Ju;cϔJ/@J pO~U_ B2N1*\.Iaϔ9 P^2RT鵶EIR~h$wYTq=Ia pSc?9V/?'P@G*>Ҏq>s @h2GʖZw PTßS9mrwGl LcQ!P Sc/hIR,@1j?F|MQ89L5b*?jla9&P5@uI:Fva@T"A2_~}^>*jtRfB0g0 J*a/B`r#+IjsgQ E28q Pc_9NR}NqU`|#L'a\q_RVo9&PyjJn{Ƿ75”! 1jUsjwΕJk^trD(89Ăp/1HC<'Pyֽ#*`lVQ2Rq>q#P^2RTۜ#P<@U.GƉ=SĎ@ 3~*$UAu D2$|S`@3WjirܗQSpTy2~*HLT*ZX2 T0~*{1EZ^ q_F* Ƈ=S`TSc89L@tT!S#Tẖg Gc|3C1a?9B 0{`T0f2 q>sx CSx F*s@|S *HUZZe@la|*HB9 |S<*HY\Lm[F-H% TPW4;{!H%S"L3??G#P@1gT=St P@J̜g{U*-,} EO{̱g ҉@)~*sd =S^*H1Sc@0g=S~*S#Ta{ ;T280g=S=*a* TQ*s |Sm*0!T”9 T*sq>s)cU--]2H^#Lb@9D20g0Eb/Kb۶ZܗJTsW4;{!H%S3a @3~* 3eq>@ efs)(1%bb۶ZܗJF@B9ba `3WjirܗdZ^#Lb 233 IDAT繛cϔJ/a*@ T@x28`\TX^ q_F* 0ÞpS!PƊTO =S3  Sc?=Lc N*@lOe?|3H v2GBa )T`?9Gc iTDa/B0eq>@RD2q>s)@؟9B0|4 PRPe?|S4!PRp/q7Röm5/# :*s!3G ZVWt95”!iGy2~*${U*-,}Fdcᰟ q`ϔ9YCd^2RTL3??Gd I289L@4S#TaS3 Oe?89L@ S#TaXp3 wOe? q>s KCB?)s@5B9ca  1Fq_bRS@@c89[_80۶h⾌Tb^2RTÞpS@.3~l`ϔ9 ̜g҉=S* R@Oҁ=S3OeTŞp39!c89L `?9BUS3Sco3Ǟ)F@1gP=T8 !Tc/#L-b/KM5mѨ}8A` U389E`3Wjirܗz0eq>Ə@@ UO3L#L1a/Sucϔ9 -/_셸/#OŞS$ `\^Sg|$ 9؟bϔJ/ P@2?̱g d#P`2PE =S$ `?1g=S `/*”9H)C2?H/)؟$*T8n*RPe.)c#L *2p/r7mj4jcyq>@@̍sq>s)@@1gZ]~zF28E ffs7QbϔJ/D@@1NT28A 'hvBܗJ&3a !P327~*LcD OenT2Ǟ)@@\pq>s TaʋrŸ/#3|/czoSq_ rܹZYF&O҉GC$!P.'OɓO!L@_~x]Bܗ:wylܗ%` Xa ;@OA0LO@*04S!q>;@h33s{7UwPU*-,} T`$:@85FHS^r9BczoSq_ FܹZYF`D*>Ǟ)0*,jb'vP.^|A/`Ν3Ϝ2@p,,AEq*0vO҉G3;6@,,J:H 8HvPDI[J*H"~h0@'jvBܗzs)h/`;'Os}KORRܹZYF*337TJE sq_T U$j?U{@Z cH3vPTb?=S ~F3@2#TTY*~_ŋ/}9#wY=ٸ/`七 d8B8"L*YO҉G>7* PLOe0@r!-y*K UAEyT q>ȱ~ cS q_@N5ܹZYF AUT02@S 33vP1T;v`=S*>}J'Nuq> U)s,I0t {晳q_@j+ V?@Z4IENDB`hkl-5.1.7/Documentation/figures/ghkl.png0000664000175000017500000043617615133711150017212 0ustar00piccapiccaPNG  IHDRtZsBIT|dtEXtSoftwaregnome-screenshot>(tEXtCreation Timemar. 18 nov. 2025 13:33:261q IDATxwtU^IH^i*PD(E+XiRDl "HE@AQ@EzK5@ 'X $$@B>sUHHLd0˿( EDDDDDd΂Elپ,hw?O?xy7mΔO?RL;Z7}S-v'$PZU^W~7n'k\Ç ٻpvrEF|+V;1o/ %x^ڵnɪ?aff¯2#֫o *< fM\y:ul {;>~ Б?q ǿmmHQKLLb]x{q/]N hXNB.\dy櫃173H翼#8fr:"Bx1F/dGnTb߰gzgsss|}Pz$F# b_6..N aaaxڽKKK֫s]W$?/3hۺ%'Nq2t0fg_Wipo)]DDDDD{-̱4m[ZZbaiq۟n701733=J% 碣*0w&8w<ȉxy`?>:)Ϻ-gogGZ58~$q=pujaccs]?6o9ПW^OLlmm&%nׄ"""""rcG~e|+(F?ظ۪[k HUiU*VΞϾ߸םᆱҶlZb4ٳe仾HKKAԪ^,2r/ZC-4bW~\ )4o(lזXڿr ti_||~p1V:vݏ3^y$""""">g+w8Sh[[k HTW hq~w<Na^ԫ]+W'G_`?{Gn&~qqv 7k^OfV&r(H`kayg9kf|5eJ@Y?b9r,sssrxgDfÇIIMe1 %"""""'OQ>0Qo :v*ODDDDDho{Ȍ% SXR֫M&ذea_Wfx ?/﻾~{{oLBRmZ6gnKjA<ooB"D AN CZ5.۴J gN{~aܦ-ax~_˒GDDDDD䶘EDDDDDD m.hP/DDDDDD&@DDDDD#\4ի࠙DDDDD䮧5DDDDDDn?иA]KDDDDDFDDDDDDDDDDDDLbG""""""""""""r5 M-""""""""""""W""""""""""""r5$""""""""""""IDDDDDDDDDDDDrv""""""""""""r5 Bi ;""%_YIIN*PDDDDDDDdw)WO< \=<Sҡ=,)1GCDDDDnI %܃2ӱ)8DDDD&YYې^a=h49}ȱiں-M[xg/|'r}Zdgg3iA za `Ӗ|pA+qVRRRx聎tӾ{boo`<ħ3 /ФQC<+CEe7,0틙Xs"oȓ]:>7ֈ@b>sݾao ގظxF{˔Wc֐0l|Lڽ0дQL#-ٳ/쇽 ,_g1 $$$ѲY~u5ϦLʊg_p!U*bgk~#gJfMӳ{QEzF.{yͫeff2b &%<޵ !g*/]!Ҷu+:uloqalmy2+VFJٰy+iinٜ>dwKظe+4mԀ}&gʵ]gW\85],ZQQ)Cg;Cq/TPIJJU x7|>k LgS&2dH~#Zr:\Pf+S)#ǰt| g}uá#G>5~rN˜mvԿ/.,].`<о-/ˎf̞˼/`4q/bċ oB|BʊOtnxNK.tbضsm[uyoA+^̹bŪOb.?#a<(:{9ʻ&䜧+S'߰ \ƲeN:=Оݺ}+ԺՂа^]^H"""" ;222IIM%++Ӭ^?^GL,Xn͛6’I~dDV-g.Czuˋe?$9]4e**VQ߸[݂ycg2888+$ bffqlٶujckcS`X\]aW.Y{ߤB@O1}}u2^b16.S6UBO1v҇eSdꄱ\'Y_1Ayֹi6*/;gڗ_q T>РnRRSXRF +++ٴ?dؐpwe+xGLpIL1<}-sEroWʕ(PahhӲn7`meņ[dƗTT2:r6ZLj8|富/Џ6mQ5 gjU#:w?y*/>8,>1y R7ήv2<gɌ/ ʗ d͟3Lp~e8x7eҘQp1WGzakkK|BBm\eĘ^'#ʠϳcW͜MPʔj}Ғren_~[~͜{+V~&..8t''|ߗ\7{TGn <#5sMJJ*3x@BgU*U xϾB;K:PǙGdggpTT,ؿo noR|9^x5{; _B\|<u@5yFʠ5g?݃~_}{^sf~K޻<$ @|Beק7ƎgILJ*Hiʼn,X=?0NPRJe|sF\fѠ^lllhѴ1Ղ*p_ZjVFŅF`vX[Y9_:sANJym@oL\\|uߴ4ёUؼߵ1oՒfڵj@Ot!?vvѝh"s4_{{Sb[;EҒƍNS>NةpSNt ?>^t{1=s1ՕNJը[&oKpvrSpؿe\޵ nԬ^>=fuyƘkdsqqvݍgwcɱsd ( Յ]Pf V#1?`G\Z2M5~c ض uhGL#6\]]yCG \(Po/^%SRض3ؔu4nPg''O>rS77"u3>++`~TPw7Wk^7ss0e|ݣ;*%_ D\|\γkѼ_""""R<4nԻnh֔޴K/^'y.ͯ/+SOvttw5?':?-T.W_LϵG'Y'2.) VZ͊U1 x{yx4mԀ+ViѴ1?4jLYv{~S]ԫ]P톟>c {{.Oo|244\ k++""#qvvU6%<ĠϑSGZ5ϿLS8}&fLi$P\ kVgАhܠo4kGCl̊U1t(NK{&>BbRΑvy ߏL%55ՔvlիGrJ v=h䭑ڣYY9n|]͕sΖp24==n횗Bg߁|37~ J;;9}=֕)h2r dcmMʕ9q֔ff;\f/^Qzg,͜sINIn: & IDAT,޻nau.գtڅLxOOr7,w%|EDDDt5DDDD俣Y,-ݝ?f歬߸MO;}h̿֕ZFFYYﷴթt-[4 7M`oJ7ja{{;^E7igZ5C$XӼI#4!oq6|}yc{4oڈݺۣƐE0K?~O&uot]-ߟԴ49zT2үv,,,{7w̙YY7~0r YҿTTaLBH +;,tuXY]ߘ"=#ycE^}Rr2TauXWnQɏ>^ |7fWȞ;?Aݶ-#""""Σ+,iӪ ~}5k (ˎ|;"l9+h7_2;x0/SaHJJ6"%52yNYq3z_,_6mf` `_MrMZ5/l۱+H77,- =~>Ӄv*1o 1M#Oב6l۹+ήWuߒT~e{ uX(E%^s>.b-t؞F D|Buǚoy_ ;]vv6ǎ(/)? o/֮Yuxya49vD}_:, yMUa KK\y9r,ȃi""""Rtԁ$""""$D;vDBB"ǎ#gڷ#9%i_~E\\<ڽ%e*ˑco"m9r4E?,%..ɾTN-Ȩs|,}uSE;G0Z4~P ټu;Cv{}eYq3+WAjZ)))Yzb.^"--acmh;ȱPf[8}Q,'e&8;̯%!![r:Ӽ==nsljzb\5bёF,أ_{ŅB/Z/Cl\{M[s.ӃEK_67v]fCpqv:`~g!yuz3VVV8]\#TXٵ|>u2Ȓe+8q{;*W@Sinٜ.i3gSB9&Y_bx{]w6osssS3f1xx{ѺE3"ݰ^O?Gӿ൷˓=⧟W%;Cv3xԪQQoq]o)Eڵ3bt)N__~T '[mA՗2k5Lʗ \@666y/q'`gӱ) ,SOww222|\_Ղ0qdiz˗c☑^ǰk?jt""""r ͙V[K#82i%J8ӧgEDDDDD@Ej ;v"F[]%),*""""%nfJ6RrE\\Yzbh٬II%"""""Rh:.]$Rԉ$"""R lqqխ8zy~Gzz:U*3qXXh Z{@:Krb޾889cfDDDDJl8y;G|h $)rE@CrbjHDDD233'g9@쥘IDDDDDDDQ9Hc\꿯_zI;KAπ /쳥v|q/-]\Mx\ْEDDDDDDDQI;:{٣+_oUD[ zlȯ|a-[\o|i9:o"љJ: GFM]'"""r133hT'H.%7=ȶCԏ=SJ:{UHNr-~B}-8_R ٟ_*_[qq}^}t {niEDDDDDDDDDN7t-~B}-8_Rn8 [VI/ϭ_ޟ[ZsIk0ܽ.,DDnA@RHH"R=w77)m-Nzujȴ3 ٳs s}hӪ\l\e ɉڵjꠗ&"ro*vRB<1I%=-~-$"v'J:$ .{xak @ü3z cFk<π4nؐテ=Tn1l[ /'OqJpDDPc/]*ձ`DDDDDDD^c4IMI!>"aqrq#|\y@W-R_\f_E0r626/8[}Ԩ^o 5 (k*ŸYՔכfM (ِ_>[ jqnrwqlۍ[fceeMi$"""""""y2 akgB =JUk_EK-HiϫCߢ#seկtXe7i<|(Pг!}nq/yܭB&BeuH *TʚPS :DD4=Z53h\RSSxkkk.mcݺpScB^ffzH /]nKo |[m$%{ 7)+{x)촮#8x#ǎѯoGcd {M֭ ?sO=DTJKO# zuf|1\tA{'¨V5趞a1.G"""""""rK e he3z,ϜɵFӤq#hs_+k O"ΞqƧ~@ 8~"^y 11\epDhj#!.'"XDDDDDDD\Htzw.^Nmn%ʯJ/VPܔ0ҷ3 1o8:8䈥%c/G#ʕc$&%`o z޺{N/"M.|T]0zePbˣn>IOKֶ""[[R@޾v¾Wwjv/)F%/n]R#GGVV)efk}'OP,;‚_.nSo+3>4ȣO5Miw;Fu%%%1g<ݫ7[ON0'ܰ^cيo;& v"RXYY1exNO>3\J~Y+ݺ>=Vwضc'碣o:$W>d*ժQj_Nwv.5-.֐!,{9G0v„bkSDDDDDDD g<ݙ:qBrxԩU)gy|1{4~,*T0e YsGp.:ww֯GrJ IDJWWWi͍ao 5m{{yMݑEDDDDDDe@2jv!)!~U?k~ϕ޴qc6n.?Ǝg;zΉ@ŋJ[z5s/4_ bJ(:)-t7PzIv¾ȭD~aaς-"rlػ?ea}6nb򔩼?v UTaͺu&"""""""7VJ/).^Wu>,YPED6k\5r\tɴo7ﹾjOwH"""""""Rzt""""R^Пm[X'5m›GpQBOv͚;99D"""""""RIDDD? ??1ʕ*q222(DDDDDDD13  CDDDDnҭ;'ǜQFkZjZ'"""""""w/ K++0x!-R_\f_+;}_NnK*mTqUrܷrtjޟ[ZS""E wώg&ZjoDD?8{[@O1~d*W@ ٴe G!"""""""#ii1]=]Aԗ6[|-8uo7*_Xwy+l[-_vKsJD:$ooo2?q2QQ888PNm̜tzظ8>>TZh:CRs1 |ppr.xDDDD㈊/'CPiJDDDDDDDv[7`fkg3I K8,)1;/pDDDDDDDd@ZZ*QgISGH)d&1>訳P!=+NTD8V6dѨDDDDDJ` K++Rqpr&|KDDDDDDDaWoDܥ22K*&)iDDDDDDDؙt""""""""""""RNb|<zbem`(DDDD0Oĩ0+PFXXتHDDD0 XMŪ50s&"""""""R\ IƨpF/YEDDDg1rְ<7_C%"3`Db|<>~eK8$),$ǓTҡ=,R NDDD.b0p$RLI"""""""" J:IN$%&t"""""""r2HOڦdemCFzzI!""""""" 3xuo37s]S?i$''J?} oG||6%5qlQl'h """"3h,0DDDDDDDdWbƍؽg/ٹزmv̕+d7Uprr,0KƎ]<%gRFHLJXh)Sghظek;ChڸQF*""""""""""""wE^~e|)OU m;hִ [m,gڔ]!!t{ ?忬;ӱ];^~ ;f6ּ;-S[_C3iX222WoRiݲ{yy!&NcWHvt{ =?L5`wT ͛IHL3՗9X|);CMVoa1!oТmʲh\32>KZĄ9 i m޲m͛6QpaNzEDDDDDDDDDDDvv 5i:Hi `mmM ٸe ChX>mӚZ5A6iצ Y&deeg~ϟ'T8-5#))+W2՗qsuӓgƍyƷevճvUL.gÿ=ٱaB^BNLDM4@`@Y'!1єh̕/33[ݰiFlܼt*/k_y*4jhJɉBL xX4A33ڵmЪEs,/OgaaAO3},EVV碣9t3mg##1Ԩ^1rxNmcD.ԁ7iw7Ƽ?Ȩ(NpˋxlNJjjݰr4[}h`Atog/zbxGw\\sy};"FҾz=ϦӾӣ zu9 9{&<~,Uзh𣌟!х@233? 33^`#x{_ތ;}'1)Pu;?ɾ,@PP*V+nukvSZj .U(*;B!!!$$332$!d$̜{ϙι~ fƖ_St^aي?z矯{:xH@[]"Hս{whu6={TZVl'y:,2{:O=yR^y'խKW=?[. ukkz: Ү/aH  $8qP'eZd<jaL QDTG{:І9Hy'e+>!I2XCa)GDz: If@ٙ*+-QtlGmY:j)VrG^d2)<"Jڿ{<hLTR I$Zɤ$t(2IjQhxcB#dZ<hLdX}ЊL&m6O(FpB -+o IDATNH  $8!'.'o+66V+V2 G}Tgϖaw*߶mJEDDhȑZfvͦw袋|Pv p)l2 4HӧOWnnn[,b8tM5#>>.5jX\~ӆ ?ƶX4e}駒O>D PϞ=T-Yĥ8P@jŢL*,,LÆ s$~:yxM>]aaaNJKK=z8'''PȨ>@;Qrnp%oQUTT>@7p ]uUܿ(55USNju#I w*$+''5G@+=y3GRw,痷D,hRNԩS'IRtt?k1c*-X@-kn(>>Q^XX(IQTT222j-,,T׮]#YHK4gIғO>* 8PTUU%LK.:rBCCuFzzXkԨQ-#ͼi5]yM1YT]vW^$yv*++UYY)"Iӑ#G$IǏٳXp&N(Ikk.޽۱ѣھ}&L=hܲiժUUQQ!٬ӧC5j`͙3G6lp\#FЋ/ϴ`mڴIɓ'kʔ){Gz-vɥH'Oa2 Cyyy+dN*I*((Ptt3$͚5KÇנAk {:$)sJKIS9YHWPpJn{2>v0 :n==h8 _6[bylj6uNuٙ< YQ ]:?@ax*6H(/HYG@r@H?(];UQcH RTX*I:O I$aOHr2<hL%VY9ӱEqe)*Riӡ6TX莬<hE PDtG{:by:4PHhbO SeE<?@Af^ο>7mVSC*,,Jw{npƏ#M Ðnt 2VXYYGzJ>udة-R}:YΔ$)2"B/jjM UWWB9'NsN5WVV͙3vFSlLGyۭ+%I7n}^Ժ TZZWTsة`{:s/PZr+.BfsaJoVZ 9Bzp; SGGdz{v__:w }{wz//h1>;w}n]7bMVw~L^sru۲Uk?^Wҿf_~:fSޙzMLڵZH~~~ztӤ3Tt!>ݺsx~͊Ӟ{ۣt񊎎5k5b0uA@ޓ1:Zwvb:vԠ4_h%n>c?Ȉt{Kk֭sg.~m8IAAAuM_ޫݺ*((H҉&{JYŴ'-M ;׷f).6VAAAZ~CjM }g^~u}yggXf`ecF+22BUt bIR|\\zt@ԛ37̱-Cgnl6֩S[3-։\ڳZ/azp/N8!J.I~yfz] :TcFlr0֤oUdD&^?A_wcɓ+3֟gddn:E)z59زk{JC7n z:V#mVx4FڂI HpB N&4b0&@ N̵.0 !v)TXpJO婴J `uVxDm#s\%b'($,\&W&6MBTyyb:y:$F%tAJ,+2L pڷ[ =h$N+6L&CKם\u{ٸ}P߱[{\nj}owKn wC75nx;Pl|g9P@eC|ۣN,y '{#/;6UcK}\M-nϭnhƍ 84\ex: F$ns:Vd2n'Y#8!'==(0抣^7=ᱶqW[ۛ[}qCαVChKo~7?7o93׽x\q릾4\q{{ے[5oM-nύ9 H qfH @ Ԑ?VfVKl6ʫbܵt-:ޤ/-+k@{uKg-sm޺Usf} aRXXث~'w{Z@:varW{kw1sϾ>OP1cK}ϱ.7 oT#R]]yO_.[jM# ϒϿпՉ\':_ҢK$I_|w~K5SkׯW<;n5WTO/oh_V?wWOFw˯?^W\zzU1cK}ϱ븄f[3ݖ-iWWh>ؘӿ￧uP|)GĄOZbԔ꒔^ \@UQYW"#"*(ЯH Q:7мo=zJ~ -j3ǜϙnMݻu$M^[HYǕp!i;~-JJLrws8w>vWyEۧi<7_"~H"hگաJ݋c@,2d+"Gi#G>BVvOjW˴c.+3pW_zQ<>zXo|||ӡ%I/WO pNw#vos ]}l8ZuSSkw:^+5퇄C=.I:t8]=wӛê$E;TߍؽMm']yl8ZuSS:a_߉|O/nOm>;K;=w֟S3m>>]OݻuUPP<e!t-*""Bow];VKx $񂂂tثiikoϝޢ/-׼TZV&ժlȈYV-SiŪՒ8IR>)*,*'?Sqqmب79*((Hdzؘ}nV+":tLWJ^JK3"#=@ >s$)&C be;K+VҠu\\}B}hzZUWWkԈIn5zHIR ׿f[s,Tuu:+sg0geXtQԀd2ckoS5_?]_|Lo>f ߓv 00P7N7NMjdqס>yMjb(I2l.I}\р0{vlvzH@[]"I2]G57?G}R]'_jo~7[Y2).@@{D N̆ax:4\Ov⡾{q5p+eu=oHLR>7xmpWUR~Qc:?{_o=N{ITQ^P@c UEy6 ӹW&׮11My?wokj7[Yzq nO~$ۙ#TQ^&ӱEVK*P@d VHXbm6Ozm6Y- W`PmI:'L9e)*$6,E92uNtH2}ԭr2!?UVTBv;$0'_??U)$,\Izz:,І}9IV䫲S1|﯎qlhv&O)'+C"EDwTBa v*d).Rtq#Ь+2nzNUTX<a? PQcգw3wh.&#__?'$4ba(>!I~t82Xe)*R\DOuNH%VO SaA";1 CUXP@dZ8@!aZ=hLth ?UVTx: v/_ݖ-62ߟmP0d=hLJ퓢7_yL UVVik#׬M~RqC.@ S޽4rpZcQvN7=_%I>oMn_6]}gϛSo蟎խwBWrwL }b.hIҏGTYY%IGJ?rT6SO<|ˌ-8i;:y0dWHvhH  $8!'$@$=_ t,w׶v}`` $8!'$@H-/[oӅh,^~GYY= H h`Op>\#t7q)g2}~䈪'\|$pz߽GVTd]:Tq\­X}hϞ4YVuMJҥw7+1IPj>:6oVS RN[>]\v:K֮_{4nXUVV\;tXA!C$I Hy'I~ٓbE:hإC4Ǭ#GdԷOw6DnB5jI:3Ǐfdg&*2"1S4Y,%&$h xZcmu8=]EE2(>>^?>L!Zr:aUT\( @?4Q}"._.m>9zTaa*++Ӗt4$˕u"7W_,Reee nfi𣏕sBaZZ~O$WE){0 ]AGpE=Kef:ʎP`@:wr }N[A>f"w闲XMPt4#CTZZo7o֜yUYY *(+elTA֮_ v:|X[mk^`ѓ IDATkX>#٬ݺ)(8Hӵ|*I҈ W@lݦR߰A<@ӠKM>>ںmݼYdzKR.NYdzURR={Hr*))U{N<?gkPPc{LL Nwssh. %%ڶc233URcuYy|}}ܳISΉamnӠHg&{O.Z+t!2$ISp ẨgOHefe)3+z-&nY"-+9.? оyV+,4LdzuA_ ;+1IR=nۮActf~2UWW;rZb~Rza:~<[v@lɼ29ɘ:@Qd1L RrmU  iT;ux;: wu⌙ [8g2$V٨uuMř3*4|7"sC=?OoQF8xuekѶm4n8;V۷owhҥ7o-ZիWowk>W+Ǝt ~]'NTuu֬Y%KB7xSsUUUi̘1s驧Ҍ377e4h M>]58qBcǎՕW^^.]~ڱ ӧOӞ-͞ëU=WXXm6G0I͟?_&Mr$~$馛nѣGsN;@c.];il+&&Fyyytjz%֯YHʒb$?~\Tee$)77WFɩuETTj_R:QQQ\꫾6F{}Wzi-W-Ks{n:$=3>|$ Ƹnw o}Wzi-Wn^x3F?$iɒ%JHHwCKz]wMѬK⬳7?@u^"5R~~~Zc;ekm-DÆ SbbN8˗k:tVKc|̓;@k. >\TTTw}W{^I|7kHABBN:|;IJOOWbbbo߾NGEE)((H ZbE5j[hϼi7xVyyBBBV^#F[?n׫*I˵zj%''k֬YKHHЁʊDUTT;7ц7i^ɓu}I. wC qt;ț#+}RCUWW+00Щ0 ES(11Qsul6-ZH'N5{l :kk.޽۱ѣھ}&L6Weeӟ+#I*((1uE9VC77~x-\q9LIOtE)55ե6>6+٬|y]X111W@@z $=Szꩧd;vLӦMݪUd2TUU%Izg_TVVf̘ W373-ݮ8IRPP֭[ 2D=^|Evmꛛhmɓc://OW\q ԩS%Iwqf̘~[?~V/_XEwZ3cƯvnt!Fk!^{5͟?_k׮ucT‚S t+֪1c9ܹSC QAAADji|yS,yP;o_˅ƺQxR!6*̏nR[e;aږ-[4zv!IyٍXGkXG{ԱX9sRO$4H"""""""rƹG.%GZNDDD uڕEjz\pDFFҵkWV^ @nn.ӦMSNDFFŋ 2X.Bx 0 ۛo鵿ŋcn_{5:t@xx8ڵcUxOر#<ǹG2j(6lHll,CenmmUW]ELL _~9ׯ/N< 7@FСh[oѵkWbcc4hG{rnZK4jԈO>Mݻ7QQQ$&&2qDrrrTtlL26mڐ]wE~~񧢪#OEGvDDDD?Υ^Jhh(:[laܸq4l2o]w[W^y%\s ۶mcߟkӇ KfΜɓYp͒%K0aӦMc̈́ѫW/C*tԉ9s{?~8窫gܹYz٦sǗwɚ5kXt).}ڇשS8uTuCDDZ\G>T$"""Rmo`vޫ]v;[n9êYn^{w4^ym6{Vweѯ_?f̘~ҥ|8qqq⋤ HMM孷r3f 駟.ߚ =$1= ?c)@}GOysw}q}9+{1Ti۶-`kѢDEE1~x233yל%''ΫK.`޽0o1c~vÝ烃}95k憫 Ç\~VfxK@HJJbժU~CDDD*V)5ro;lUTRaa!_=;vdԩ}o3g?3h ?k.u_~%^x!_~%˖-ciӆ[o~3hL2G3l0L8'x;wrWrJ󅄄pWaKZlɰa0͊+w'OԩS3x`9;wnyft|||<{q;v!gdffra5jDTTݻwPĉy̙3!qƑM>}XhC .`}D?OnMƬYx{v䐒Qжm[СC㉉:t xm:?GR7]~ 0={3qD6nȿ/ _kCDDDJ;9}id&&L ##-?<@x/;w3@iҤ ƍsׯ `_h!Zlɼy:tÇK/smOr5pw3|rx'h֬Yf~JsQ&M?̫ڵk=z4ZrϟOXXC 4ifbܸq;v'@jj*]taʹnݚӧOꫯ2tP>#?}.5jYYYϳ>ˀꫯcÆ 婑|wKk<~6rz|L>3fУܞ IDATG~7 SSSW۹~kS\\)))YyQJUŹ6 `ӇW&&&ϭ|yק?jw%ze}̢-} QDDDD*ɧ _~^x+V m۶dffO?VZ9o_~%OxΘ?>(fH7\ӟbc{# 4+3|pƌҥݹs'<?={{[oi<쳀og}F۶my7ncϞ=ty#<<ܣD322HIIYfsIRSSYT>jTP/fϞMrr2~;cƌstԉ{ ͝r|'߿^zڪ&ͣﻢʣ~ \L>ro*$˧ -[xbfϞ\unڴ.袋Xz5Vvgq_jݻwgرhѢ0kчMt $55Rsٹs'?+uy=8p `޽{SOe֓&M>'ȑ#,\˗nXO b۷u1i$z! ɓ'3ydVZů r~>nJNN?-[;h޼9^zOsgݺuX,g`_{m۶$''3rHnʏ?ȨQUMCDDD&璼a=c?V}/,ʷKe^ֻۖ IDDDDΆ =7ofذa|Wp >}Sr뭷ҹsg֯_OBBBT~}6mĉi߾=aЩS'tB||<7x# t҅uֹUv5o,IǎYv-;wy ,`̙L8G@rrY 2o<.c3gΤq;v裏ҽ{w]zs^wԉ>)S;eLtO/{w5oޜ'xѣG;0n8LӇ>ܔ˝ȑ#Yx17tisqM޽Yv-aaa@s'--xg`_{_gҤI <@άYч+{pyrϫKm^<0 41J^[w=+Rv""""gWk`_Jg9ӯQ\\K.o߾gy5i'a5k,gcW֎;ڵ+iii^D:դURs=Dze˜_04jXʚ[7ϡ֐DD\z^{ j"}I00,:'?Z}6-Z[He+%jSNq!.J߿<.Hһw:ɹo= 7y *?t&&im PôșV6)((`ѢE 2¤I2dH޻!22իWRCwNnݪ{"~s뭷::nMKρcymY}(JtVG#Dw4jrAU!AӬ\ӱcG"""XhQuJ4h@޽{"5ZIJJaM^hԨQuCDDD 7s*n[4p,Zqܹd 5rպ 8>HVTu#A04F^*Br)E2}Ɏm6-} W4G^Å""""RQ.@s.W7kv6.|HL{t] #g0u@}H(@#R>*Ʒ;ʌ"Gm . GE8L{1:{ĭ8ۄǾ7>nH>0,l6K2J ͆Qɹ.U"""E]tƷ#4` 4=N^ao0_9Gʛ*[H%DD##=!Ⓦ4""UZuM4ץ\){QPYBG6#D-9#:b^8x/dG""""g*|0cQ/:FVfq!&$Vzu-4ץ\){l]T"d0,Ytd:GrQ)UH9ɼC٥ `IHlƱldq!"oP~4ץ\_s]DDȑ9ILG_k Wiؗ+jWv[O+W{U8j)'HY6[uGɰXG||Ȩ.5[7}әrJ=@*Zn:rHEARcEIu IQ%2B,S&^""""Ru @ RWhH]m)#n7^GIt_c);.UHQG""""rh:+qIQ3qSQ}4ۗufɥ^#""""IDDDDDD||>*rMOFInNJ1r*=FN-]'""""g$:*#GH-H2KGGp-HUDDDD<H"""""""ux,#즧q \$g;ǨGBIDDDR$""""""RǔBRv.UH=nAQ$$6^t jDV0f##=cAb֕Ksf\\?isT5Qxt#GV)ql>pUS ~}@DDDDҧe>8rM8}(5b!:&Iy:)'*ՏtRWkT鳄Ʒ/sWI EDDD+}b惔ߏ\0JgXHHlN*uRWTuQ *QtO|AOEǐQk5ץ6\*s]DDv2+t]3B<H>0m6}K]j łiUZuM4ץ\9Vy#o˼ʏAӖ幁ͷ}z&"""""""~W~sH@[ DDDD*ATȊ+.򟾩Ie5v8fBw=l(D H"""""""%#*GRi|Mg2dbcc y'*H駟ұcGysGeԨQ4lؐXl۶.r֯__TuM6ѻwoHLLdĉ丵)=`٘2e mڴ!11|!"""+{RE*|#}<{ , ܯ0mMLg茶 ZmE%;NH~N:1g~w?;vcرL0+Wz5M[nCȒN:q:t(FrG%33y۾} 󙙙1\_֭[5kgf֬Y}_= ۽{7C !99m6lV׳j*+kضm |w^+,,O>_2sL&O… m,Y„ 6m7o&,,^z9_C*?~sUW3w\֬YC=lSѹ{;d͚5,]w}>o~CEDDe+X}J^acc&t+;rB2MlVl6+lѴmk Ui̙3{~x6#F`ĉ$%%Ѷm[&Nȭʇ~v޼ydffұc27::fZYf Ǐw$66-<<|ddXr%̘1-[2h ,Xo E_|.}1|p󩩩lڴ3gҾ}{zɂ 8}4< ^{-s-[d+V ##_~?!C0k,f͚fVc=ƓO>ɀhӦ :yyy,Yo}ȹǗ_|L2͛3dLVSѹS{ȑ#,Z~N:ѵkW,Yo/>DDDD*PyJGf+ܯrF6LFXh6kqg%$>-*D)_t1c/;w&22Mr}9?"&&_|N:Q~}  ￟I&1rH4h@vxW׭[G߾}'66Çsq*fk֬o& ~7Zhvl߾} ÇKRR@Ny{K.?yC$%%j*!"""R^f£"[olrQÑ!!UV!fLg`bקW= rӱcGN @||<gᥗ^r N:ŋ/țo_ͩSHNNv駟fСܹɓ'sn:BBB4i۷og۷Ç׿EZZw}\uF[nef`#D~;jՊ;QFDEEѽ{w6ٳg["??_{H[niӦ1k,x~[999py]׶m[СC㉉:t 8*>>GR7]~ 0={3qD6nȿ/ _kCDDD4oo (㸙nݻ>k 6+&s9\L#H""""^Vb40an~:99lܸ[ny|ɒ%o@ꫴnݚ]vq-o/ rWpelڴ){/>hU~")){0p@N8Z`;v`w͚5dffz,6w\4h@\\۶m{aȐ!lذB.]ؼy3[Ӽ :>? 8I&1k,ƍDZcǘ8q" V&gx$13[o/`̘1=z<)../W^=s׊8RRR0M&uߕᑜ{s0 fϞM>}_Xj@s$_>jw]g}'""r{R~zsV}L̄ФrpQd4M0 ĴO6+lV,rrs "(<cqNEDDDUU@zyXb!!!ㅅoꫯfѢEdgg]kkѢ޽y'|„ 8p cǎ&ڳglذ#G0tP8}se >|8ڵC k׮u>ei׮\|^tm~}v|~WZn]_FI%R-4"F IDATyyyDFFٳg׾[ɳ> v|gmۖ^{qQ^=C߿8=X %%f͚ɓ'IMMu fOfGMV*j\ٳINNo`̘1tܙN:q=XU{ 11O>ӫW/Q[դyT}WTyTޏ"""g{o7\٨ 4f p |Brnlna:Lrr!جVUZ6ãI~HDDD_TԲeK/^ٳKb fΜI=_>|~۵~oÇi߾=`o믿vnNo3n8ȼ6T 0 xW(((.]|r J }0dffҮ]RܹoIII. qϢ/@ZZGUaDDmڴqVC 4ŋyw6l> ;CAA{G6mHJJK.Yf6w}٧?ۜСVj8p ;w~p?x }[""""UKw>晫1v0MU KOsw ܂+LD q^dڬ;HQk|MEDDDmU ?1}tF޽{ "..yq16oO~ܮ;صkfر >cY瓖ƻkĉhܸ1/f׮]۷ jƌ̝;#GanFFu/ o֭[by,''W^y;ӣoαc/{O͙3E{n<Ȝ9sXd {/'N`l߾={0w\OUd8pdz{nSO=Ŗ-[ZO4>'x#GpB/_wbO?n ((ѣGo>֭[ǤIx衇0 &OɓYj+Ǐ'((a?)99?̟?#Ge7oΥ^)w@۶mINNfȑlݺQFq7:D>DDDDt }J?HΝIMMeч~M7pB^z%ڶmˠAbڵϝ{Ӈ3`zɋ/<>DDDD+x &=4r JB*}$Lgi"ٜNyXʤh+"""uWھYYYDFFwRfxڸʲuț{e˖W8jDV05ٚ0KcvJZZZjIcs]׽I&9uSJl IDD\C>Iv晫1v? ?{t.aHNnK=Rdłb!'#&(0"4Sx^X~@3o= jһw:ɹIEDD\^e||մ0"CKp ~L5P,tWb;EKa6-D|ÄJ].U"""5Q昔X0| ;kTܶ*$ۗ+r\!Rn^>YY9FR?үHM fIOKRl6Rv"oP~4ץ\_s]DD&s_4W G>,ehZܯi:`6g5֋n'08D**џđ:As] uѰI32/c` # ZL{ }u8%oUG⽐ ab3m`BX$LϯBc?Y MdD8!} DDD%DDDDDDD'2<Խ0Vh_p_u,eVz+t2=+45>\k!YGzJ&""""5$9g->}JFn3ttm:oa))9'!iLlVr{YZG(Ds$9&$RDC`{@JF}>V!}q;(D٫S Dpp0f? l`Hy)RH"""rnP$"""""""g]^~}⃶BL}});* l6[0)w9s&$2ԷBDDDR$"""""""g]2v' y>I= DDDDDDDz(qYn [i餟Πyv䱌xHFӮUHnKH6{Rxh0ĶI0h s!R CLH"""R(@jsQ"BJ]ΩHE׸U!*D* ɾ]ɥ4M=D9bAD#V-!A.! !c?L T!" DDDDDDDXp! JY΄)'1 p*}O$(qYTֺ>Hi"Bl;]CHP{dkGt:#BB#c9O! DDDDDDDZ e0SeJB#KixNZvkCzLPpH!RNN.`_N!t DDDDDDDZ;v̱sPkp_DxTRv^U!JfQl4f;=H Gl_.=D´N%*0 BtGzDDDD&H"""""""RkOƎeL2v'OT2v7oJBrRvJE毄Y0"g8!i1"HXMN cdefo)R o@l|*.5"""Zž\`ELH, 's>}%EUHIQ(1&&/TIF)`/~l{u@PY "tQ:,G#t: ͩŢ⭚ =$1= zbHOCdgeآu\44}v"""'R !+;q8IMKA\6kEUG#12 {T5l*zZcOQ4le08@^HAk~SO VGa!42_%U?H>8rMD0JdX^t ɔƺtRWk&ڷ~4I&=fSbb`o'$4UfAY j$u<ײs@*D k"kcbڬXB%0K@P )DA'N꾌% 7mv*,RG2A*w)UHRvEB$#4f(4,@ A@@ @ {`Eٰj*DjIDDDDDDDj۠\Ʈh,,e{-k$#DZd_ٴ6c ! Ⱦ% 0X XFl`3Z ),ȣ0?œSج6ZM£h:jM%_IQ$"""""""5KQS2v綌]Xd}rrqr#_+z% g;ϸޏf#0(@ (YiT` r)NÖlZbG~A>6 b[\LӑU8H"""""""RH񲌝Y@b'$4&jA`MޥWZR FUHH) 4@KQkGd|a~.da͠0filqѭ#`KA~>%ؖT5*H]veѢE6++ 0_JmӡCf͚U1o]v%66Aqȑ2o۶.r֯_vf1eڴiCbb"wu~Cğ>S:v#dZy饗hԨ|M6ѻwoHLLdĉ丵6T퉍oxX. ԓidgeؗ3k>X]6+2K p9FqnU!?{wUuug@’'PcJ(TD'UqAT+JغmUڪ_ۯKR[jEERWְ@X,s;3}&~>$sIApp^EpU?1TO IDAT!me ɧgO;2Yd.Y`8*:M=#P UPWUv%ـ`o7\[WKM!t9>ofjp q_8o7ogf~}?}Y+JKK[k-VPP@Ϟ=o{1E>=b˩ =cc )11?\yys=z_b{^ 333޽;1=71tL'|2guƍfܹ|'O """w o-g'6vGI)3F@[5e+{!~m-<]i؈b;xU{SURٵ^;8;a?"Uá2;D2ӅP2" EcqIDDDZcP˲먨^;w{?}GpBN=To'|kn5{ YuAqqq@P +ژ#+-Z+xp̥]uU|G஻⤓Nb{^-ˊmY]iZ8ֺa{L0!KpkKyxpfL:~q U^MMB2 uT2ph'}{_=X} $!u@6~f0Ä /Wo5,"""JT G_&99a"OfӦMaRYYӌ JJJӻw큠>倽-R11T]]رcf޽,[^{O.ctdm!p.Oѷ9zҥKc+V`ܸqQ>XŃ>b FEk@YYYl޼XEEdggSWW1ڲTОz,^Mٳ+cԨQka֖QSyԖ"""V}5$L iχ? zHH >Y"!7F){1Lp&y3QW .˂$t"1 E b]PUR{ٿ{B}O$P{Nt֋u؋WTMT 4{{o ;˲xgڮZ{';;cidNϔ)SxKg}6| };/9s6HS$''S__%<(-- ;wýt)SK/Q__=+0|prsscznc B#G@II^DDDD1E{CgU`8-]0~HAID>0|T[翔ɏәP 95T~2zP[{0m4."֬Yúu1c3g~r=c.g}6۷ogΜ9lڴ|~ ִi8}~ȬYغu+˗/oo0C:iӦO#k.  ѣ """GgH{n$''Pt}AC] //tpdHᶲ XWQ1f&YGC$cT*/=vp̬C*wCPUUÑ@j$"""V nv~3uT1 ϓy9c[sk{n#//V\IR]^ZZJff& 'FśokFnn.=.9991~i&LYgŸqxǼ1H,X00 ŋ3| ào߾;qFƎ˘1cx7x78k ˲ӧ|GTWW3f~_q}1k,B=71M]L4 01c]v .gĈL2*-[FJe^DDDDZA} * *vg+ɝ1d4vS yWñcOi(Ru%'VJO̭otUaahP1J7< W .Euy1{vdǖ) O@;D5mU$"""`+o7̞={xegҒC=ċ/ȇ~Y @yvq4wͶt1cPZZiG\ZkChmi}DZk>k\C})V?M X.ptt-HDawZw2~o{(ÝSg:}Aǒ{ JCm}kKJ™>Gb2]z?`=l\t9z=Sm Xg"))tҙ T`:Ćr)gN_V{3s-gWڕHfw0 LW=5jKxA&*$iM*Fq!Ү;O2}{=%gXK0Cm}0!J$P 4HJEr>EDDD)@: Əo['p9ADDD'CpfatJM0 wՖb/~G} *t# OKpo+~<v/M*:d,ٷȿ))g48;7H!LCg}c DDDچ Ἔ%ߗѿ(ڵӿbHr&ԠSjhBC f] 廩+zlv\O@:bД(~7U}X&N8"Gߛw=u VRiHH `+gwZj{:}yN{C$,H = 4u+gB> 埗ƴ(H9Gzp`kȑe&yOmuiO֥hZ9ڬC?϶,0P_Wmuq#;è_ }OGZ UGJo Q9=Q[x?0216zͮ: tO]1EDD$:U Šs4*K=HOE$R:wIkV_uiO֥hZ9uA XU]B]~,wcV⪶#p@rWc4|X X931=r|+Q=eʹ̞箃noU-^gNmWhlf9'DR5HS^})*, kwaiRTX@Y꯵.ֺt-]"""G30HI+QEhЙւ@cΦʽ6ڻUӳɝhfG_{Op԰M|v?-rXQC#n.hz DDDZIuUY􆣴9iRQ^JQa]һ#gZNk]:xu?'vp%}Qu7`$tj Ҳ!}ֽ~Xc^ 3n9wO_cHãhO 6[qxN?CZ4Pr}oMnc5#EjJIH"""KR@~b Xw!A.i7֥-Z"k]DDh ,vxQRta̳a@JzxRrAg`Q#+@ sp ;KEEy^|_Ӗm4{7 '_泫]ЯKFi- GfO#ֺtZ""""Y]B}~,ˢno:TfG)`8훩7j?8r/y4칦G[.IÖ7I=ܙlxjme᪰jG)&JI"""qzDDDDDDD]Yԅ @Z6@rJ*CFo&]?Ԗc4Ԑ`cGWxTXMkWppJV? ʷSv?%4-ھ. /O$"""- $iw:uC4US Ii8L&i^a+w; r8ih#ٺsΝ0nm\W6;r7 e>zh>kKVwO^6[H"""q $iwO9p2)Xv.ӢeRYUMA)]12q/\`+{ 7aݏG92\{ͫBz`]=ū#.UIW%H)@vgѫ` [>Pa}sWu$%&;ٳ !RLwpV6YU a~f"dBE!T!^n |J Be$$i p?EIq1_Zקs?44Ɓm~Ը[u- Q 5.ωș9W-n[2бT 0&P$""< DDDDDDD+X4L, m jܹFC jkk ֤&\۝hT\0C͠˨YT2]|Kã6o<)|4sGM )Kgs?Fo(""ҁIDDDDDDDڭѫ{;]U$4Xoct\vuO`8oѼfvN= 'V,lbx]S# N}UH#O=G?xGDLkzm,ˮ@, jkk)9PʪN~p2{v78j`8EYY9 @AA4mGW/soਗ=ڬq>>UHjsIn5jNxdbO1U"{ HV8FVȾ;R <9 l4=ր Shg:蒅~mc~Sƭ}3+<28jwOeЄB\jnu51boW%8 Gq_ CVcB${;29(++R:5+<߮n)V#nWDPS&+Ԁq Q6;<| oxP_- DDD$9:Xs+W7M_ >,~_PWW1DN෿mйݻw3c zE=8ٶm_hk:Ё~F޽9r$ ,j1rxݻ7^>SN9t;w.555~m """rXu\u (ؚa:e3q‰bxO(/{'y>4=Z3Yi?bcȢ i8lx~B )":z0`%UG DDQ?<]wwy'9)))?>DM61qD~򓟰vZ:,&O̗_~mz^x%Kb .Ҹ!mϤg1iYGzMi&;IIJ5'H5L[}£9/78b@[֙-.""?;HϣM[هDr7rWPWW?>_~yP9sPYYɢEǦMFjj*?ٵkfݺu 6 ol޼CeAyvqg.7ԗFƉf鍊n"%%nc9{L6nȈ 8rӣ@/z+87]`?[lpD}ncEk=Xe1ydOάYӧ?}-&풻 Iy;nrJ8J7 >#Vxmԧ%Qs ; dYIÞ}/':s w@8Gs- NDDhQTXm0`7pÆ c˖-<ѥKM7݄i/UUUt֍{w?t;E]m+p{9r$,]4ncwM׮]COOO'99kz瓝Mzz:}Mz ٱc_uLx!G0x뭷ֆ^zQ\\LaaX~~>^DDDDڒ){-hͬ_9r֗ P91G<<. Y]G!\ n,87|:>\5?< ݴH- LTu$""[LҼyxyx)..G,X7SOyϗxb #DBkFdG;c߿hMAVs#l!jJ1=[>z;=;Hw%6c:I5(Zp$""DB555,X??{/ iӦo'pWz?C7 .\Ȝ9sׯ&M⣏>/nV}#;;Bў={BV]dddP\\='##6f1F[}WZV,n{/&L.]JVzm8{?;y2aoTWW"ND3£6p=UFͩ"ھ}|~!}cCaeY<viX#Fh"ڨk:PVV7ߠb܌mY[phOk={/ӦMcl? 5j/puT磈HG@oZ}-z&*]MkpUGwfKE:a>}cd(ϿƯ )h~M~l;;v_rm HNNKxPZZwܙÇ{!@SLᥗ^{W^a܌1Z#G$!!6QspxE!ǎsRsB*OO稻OJm}!}}[ IDDvQ4.RVZEQQr|bb",X">s[&MԪԧO/_ʕ+ٿ?wqad޼y̛7KsN̙Cbb ˗p8hhho_c׮],\ŋs 7̧ME]Ě5kXn3f`̙Oc f̙3M6_|}:ښ6M~35k[nex~s3cH4m4x yv_|5\À=z^DDDD(OpQ0mchJ}Tϊӂ[>uw 'Dh:KpӼAHDD$Q$~SO=s9'zli>Çs뭷r7z.ss!//D vX}r=pmGII +W$)) ?IBcQx7yw%'';O?̈́ 8s9묳7n=|< `axbϟay6nرc3f oow}MaY} 55>jƌï~+>f͚Wf<ƐӴiӼkI&a3fל 3bLBUU˖-#%%kH[֔@(f ޙSx\Et£}LO FxE>R󫎬s "(=1-2k2mvXVئ`Ϟ=׏öUܑiC=ċ/ Gyvq4wͶt1cPZZHG\ZkChmi}DZk>k\C})[|Z'<5#svpyhcGo}}{~Θ7 +fpש_$HlC@x8]ADDm(?SRk2tիirrr=6aM&=]}!1\'. zۼ{57>j ^U3O?j㋈n bйKtq"UEy)Eoֺ'ZQd -}9$a rXq6i7r+g8 U}m?(PCU=$r-~``Gӛ-'r.#Yudʨ"""GdKQai]ҦIQar`Z^hKGҵ.""Ҟ{ BT?s/Noc~}S[eRxwr;ʅɏoٽ'8{CeX@E~l!׌`0Aal`XSt}{; Xsxt{QlQp#aR?-`XFg @m]78(QpGF"""?;HCDDDDagzDDDi:z0 L P<ޅ yԼIa;HGV'y#{w_1==~e!_# rxd}z~& [p5;öIDDڳ@H"""""""r i, ?gNdG1):b/MȌ׶y̐~BG>[Q[0|ãf#""1)@b7P]g<иO@$&I7I &S$=o-ãLe ˦njzuS T&O}է}x!zӭk ((5rpQ< 9(@V7t tp줸.%'%$agpagHAo$y064̧a(RRᑧQC)|OyQA,I|Ƙ;'[YФ.23=8ֹaIDDDDDDDZ]MzM7LJ"zaA0)٧}bxN $y׵C$+lH=a>.\uuy{{v]R6)|#c. elT6EE"""DDDDDDDUfV:ىڂZu!_!OD#_׻z**_=!A>UglX?ΰ64}: E ;l3ZljB1&>B~tOZgֿϑHGIDDDDDDDZ;kN; ƱFpU /;LJs_wlg8| mGу#w0MBiRp[?ggpa`AN]R( %yVp)!mqDDD^NDDDDDDDڭN;4nS886n`?Pc8282b|{e3OFXudz-l4H[iVw}0,4nS,\BM̷# H AЅCF rl >" ܺ.[E cU,ݶ|{v=55ޕn],2qʝMw>ZEk[:IDDDDDDDZ;uG\#7Aik"lYOܜ%J*hn{Xc|@`}~)㿥OsoR#{Nj{3H;{ H29}pn{]pQHL"Y]~Oo^*mlOhm!OF89*|`JIEB->P}u=x IDAT52n p;! sЖz>.>!}Y8LK{މHǠ x_UXy#e8tFf֥Z"k]DD-}B5Y}}0߇kk5DI}h7xӭp^BN~0u7vpGމop̓>\.5Ǎ`HDDğJrf kwkGziTRTX@uUYDzۤnZ?iEDDڳG1f<05mb rneHG{L>n`|C#h * C*G!u @~*3"x(mk Һvgw_qx>.mֺtZ"""m^H*#0;I߆ד/4jAR,!ұ˟m9=̉u۹&rYdY6`߁2J#Ggk]k>gNŠx_}MFi}PY֥Zk]DD}B;Lz <S1p10Iwk#!tPs_ʩB;/(,9>uptx`Upd5Gpէm%NaI)uj6T*$Qj_^ԜZ+E]u""}ڭǂ k8wv튐k׮Ux"f̘8}DQ /N:!)) >(jj,=p:DDD`ذaؼy >}_y>}:bccɓ'###âף;?W| Hr-y2z|Æ lߵkF0$%%'@eeEONDDDDIUԘUHFU[U ޴vnLYW#uܩiG#LUHGL}5 6 !!|\}ҥKw^֭[^iP]Au%\tADD g詧Bqq1.\h+VgAzz:j5࣏>ᅬӧOCrrrǏcǎGW^8u:t耇~/_ƒ%KM ,^'}4%P_Z-suz~x駕J_]y8y$:w D۶mQRR0Gw~z聹s{ %%ofϞ> uZ$ ƍm݆3g">>˗/ǘ1c6?qdggC0|tɒ%׿NC^wҮucxԪU:ݿkr;A{N!""jL=iq_2P}H֤j>BrG{I+5=0kL;NE<EΏ _Gxx(ӑ0_~;TL:UySLQEua׆X";t!қk!~Qc,4tu&L0>#եV7v>,IOgǹ:lX ifDDD͊{֭Ï?7˗ˑ޽{cEѦbNѣG;w.:gΜO?/ҥKĉ:`JLOuGGG#""GgsFee% mt%%%(++IDj[o{+wy< kzts%2s>4l0?CŇ~'x;vo _; {UDDDDMVsK%@'t#'\1 Ҧނ#{m]+JO1""@N0|lݺ{|ʛRM[oa8}4:uq NLLSO=_~Okϟ̝;߱xb_3gDJJ Ə<QQQ(,,}^^ش O>BC]AJ]rXooԷ۶më x0x`ztuK}4eRשҮuAbԨQJ5ke~{:)^wsg!~;J61 +2H?ԮH O[8g6̧sr:ǵwUZLe Yfx=U:$""O*N> ^~)۬9qN %%;vDuu5JKK=:ֆ ca„ xPQQዧHym[nGFV0uTs=Xb"}KJJgU{7䩕|TTT`РAHNNF~~>֯_իWc(//ztws>t </JKK`<xx{뼦Eh*\6YER]lo:9ݭí#clͣVrcS̛7Ào>% Zlҥ ~g@RRN:exYY lgRR6l`=##ÇGXXBCCq)xTT|GKՔ*b}SQuu5BBB,mڴ Cu7|I0flڴ ;wƒ%KCy|=ŋQTTns>TМuw6m|A=܃~o߾x'ѵP]\5XyԔ~*$M,H%ԭ̫u%Yrݑ8^R]@JԮQ"""cǎ[nUIVeW]uV^Q:~z&LP0o $ZnI62JMMEΝI?Yj:u,nn„ 8r;l;w<'*}.[b~A |9t:/w#(.. Xk*88:uR!<]\oEQʕ+>}]]={FAQQWNC^w"""fT"Yq䴋zZaxǭu$Sۜ,/+Swus⧟~{g|g׿g}ʄ pY|$ ׬{8 a&O_WA 3T jțUEDDtI~!Z|=z4<>|pOXt)ХK'|| L@~륗^Œ3гgO7߄뇛oo&Znk}-Znݺa޼yXzRm۶SO={3gT(..F||rҥ5j&NcСϕ_~WF=l2֭O rG}A { nݺ~ɓ'1h k׮ڵkqUWp}=^t $)?'\=Cxwsϡ_~(**͛>e6mrMbرӧO̚5 } tr ˱~zp}#::߆"""qNUJЕH 6q}Gϳ{`G,#I|Bu"-68`"BطsoP]!ߵ}b 3^Ҕ_DxDdc@lC\:|0F#MjJci|wӿRӺX]w퉆t鎃7d:P7yHJ"۵\sdUx$yo[d%4(hޠtBzi />pޫ^#"*W'gH佌 TWWcذa=&k߾}9rQ˴o>7ADDDԴ4u5@ő!8FkՑ{ݏ== {,# $YG2V!6(ZUc$W#yB+$JN2Ǿ{}\"""c&]xӕ:Qt੺k$g-_x:Gȃ!)DLԭg布}?(Q3!KDDDD͂WkA5%H6UK-l:Vٞ@o>8 C2HNr{edLX IAq('V z=juc p`ȽG88ȓi{[VN?Z'~dx`B~.b{oG~l5$MeE9.C=""""rS|b2NCeDycs.Zv{*;sj9Hj ; HOw( Ӫ,|1]]]#V*\%_ɓc g3($'~Dο9™Q1q=""""@х|jQ\THОhS ;oK]BrqE7 JX; %HQ,@TbW7ãZ1# .ŀ4m'#ȶg7p~v#1X=6""jrue kBBP~ADDoCjR;x[EjGmakк5"""j448C~xQa5*$SyQJJ-`, + FQQ5-2U#u(c jkxicF0Au"㙧f/;oP7X;TY3.HNg<`Op ;C gU7$I$4]5{UFUD|ln?ꈈʣQቹN%U+7^CΝbox'rm#EΝDDDDDDD|fjWO\Ƭl#Gmjjj1k"DUl{ST_= |wwTaýwMyF54<0HBj_""_0'RO"+'K|. 2"Q9$""""""f@wjz·6 aa***TH!3sat NχUH=_-_/ymu$O_52xuKFG2p4ޠy:֫#""" z=jjj֭(~ k׭Cq%'H~5Xz|6ʶ{ꉻfLS XA'x9WF:Gf=;~ȼhϪ?^Xh)7S<׹vbhf{m<|v۔G}/<w2a<RI >b|Z'$^ŪˡjocX+k)a:?j3e8>2܎PnKY4"$D5s f͔?H۟x: pݘAX]_,XM:/88 `颷oؒvӴ9!5sv???|Ï|s(̜1:vN7߮:ox0iغ};FY/ߪٽRq4zHdPVuѽ`ӱrdeg}J;_LFt]|#NDDDDDDTȓe=H?6\35JK#uV}x(F~>}O/߂ k}Vsspg|җ#3l%I= ͞Z%oSd 8[ȴ&oi'}p$9CDDԲ8, ]oiSmN,[=0chѵsg}`@zsY63gг{wm/.(JP sߚ%TVʥS'Ok )""""""" \ ZKv7>=-#k[ѱɱkAvz\dy"%o0k+tro4:u+ՙyՑ'@˙ܭc^&"erh0jp : 6cE=z=T*SZ~~KgRz?Zh%<,PYằXv-X_-/|ZilDDDDDDD#> #.n^z ;TɇH}yÇ% O{܎?o^Yd~^]V1yӭ(=##{ ]"y2]]]"k[?|75QcpFV#:*~~HJL u?(H=yn`wdfe[T hӮqw6moAӶO(蹫Mr =  ׍"""""""GHY'? mN%?"fmq㈊2U9 `5Js63ކ?oPu9gcsvTl#tu| #ɗܭ w'85 Ű[*b|? ݺtGmsx ?ϼ"jp5*uÆ w^A޽ߞ_- B}pݘǽo,e_0s } ['$`???_/_xG1l`(8|.YňCߋ>G:z|'IJߪv: 3UÛ,1B3$lxg$ș׷V$/y/@~|Ս18"""ji};HzkqNޯNОhđ9Hn.q~-:%@R|39aa}(vTT+I/JKpm{Ѿ|3g,e/Hr1@X`q)< [AD/03~^S % 9>a Bu1rneu` ;"""""""F}Nmc]]lC++ێ#@^e:G~{ ~wGP.ܟΓq6׻$ 5.HIm׶ \O= tu@@Bס>뛈);QfZ:LenBiK]sM_DGLWZ ǒO>eч1D4D]wzVR6aaZfKvvqX%TJ1W=o/nD? Ŀ*$""jQ Qj [v nY57qqQd<u`s|^z)Vbjl c)lF,Zw^gHVCASőepDDDԒq ;"""""""wzkbgZAd!okiZ}4j/^ i{m#w 69 (ɐZG}7$?~ PԐ A$B$ɭ@Jvdܩun\Ȳ|_qDDDMo[/5G'Wn'hO4Hѵ ZhZmJragF㸲J߯1"R%A T*Ξֿr{!*TqJ:G rpEοbQcuYcDDD͙$# )M_ufcYIUK O Wl" oF^Hg}t-tgukH$AM]$yyc]x$*waU3 @VA% *o@ G?3D""f i4toJ=r7s]7<DDDDMߩ\V"%}Giĵ"ƴݿ?UT(3IwG咱mbbjF|Ο"**D jv ':x(mHK Nχ&1,w7"QJmβ#0dHo̞V B$S'$o $ 2 <(ZMc\5:|ʳ=\Gle5r$H ?Mxt t ~~"BBhZ*:$!66ڧKVޒ+i $zQoMt:̟=Qg.~D$"T*DQjiLZ'IEUrd7G}\\WV!Qݩ>,B$cА>&>(bؤa1n I񤈸Gwjy LBbCmI)) SJ"YGVArW2dqV3r:ZiDQudSᑱ ƀE$*I-oLIgɴ%oaֆ:p"""{OTKDDDDDDDԀNnzI3p vmTzö] A g獳8uJDFN"3" UABTTH}P 夘,au0nh8$Ig>8cwQ2K98j=kx$W![DDD5H>*J=z۟d$ \×kQ'O8sFٳUϯ^ѵ)$Sx嗅pwcİamNpw8g22 ~_?]]DDDDT7JtIgG6#{$#l%0 (.\f c^zػ3fD9<Έ8[t/DGfaMaQn:<  ,$I*UB((l$I[p~xLWW$ o#""jy5+ `ʤ2i[SQ矮 Ǔn1FClaCqo*#J%`2kϝXDQXhV 0G[/ʩR)}l^;k`btjgBDۧ`/(@Hp0xǥKp=Vq9wC'TVBQEpXkIp!JOrDjk6)vك1׎‘Pt"0rpddɴ4TVUC 2D ;vBn^>j5ڧl޳eeeC`` Na GVv6+*S0kVy;}~ U5bdd ??:x0bt:ڶi'OwRPXTU A﫮B.]l4,{EѳGwTUU\f&~*tj9X^^NBŋJ|P՘uם NvLSǎ8pkÙ =vŨA >.|{n8~.]68p݋̬, Fx;t^$5j,F, 'aqցh2N 1j.@xP erEE5ҲJX˜x IDATq=%8x0%׻Î}̫k:ٯ=<&E{} JcN.2|RXsK^Y`}8$o>Aܰ9jADDyӦBVcϾ}طڵmwߣ%\*)Q'!:|QQ7={tɴ4TTT`@kЯOH%_ 2 <ݻvEmm-\H9VoW"3+ i^;>H2a<`m8iiۧf-7#.6e/cٷ+p 8[oSڥa-FRbb}?&޹77)PTH?}؈Ǐm6ڷucF.s IR 8__\?6mFکS/(@6s=fmӦBlٶO@nn!,y;)<;wđǔ6$I;f4еK1V|ddXFSRбC>k]@DDDDH- kH>7,v^HLU?jyPj8:42"W9g!1 څ#> C5Nt:[45Ap8%(UF$APb%Y ca=-ҦHrrϕmͱxWD""wbbcicccQ|?QmNW6F Nj/B$$%%)SunEK}߈h4 JwlzϽq?ş{*}[\,?n&O 2".cGuoUuOGCqt_\lr]8jBCB pe3HMKŋ(//QռΡ{ Svm/XIl|}FEF" bRbk(8t2ΞE˨j}qwI``%.6O@UvO~'hr?_B|Ed]j}=]@DDDD"U;H-$o=8Iuf` 4j t_ I2Q eeV!/ 5HH(A۶ &Akn5T$2TvʺV|l&3ޕpWr=oapDDDRyNJe׀m,KPQ(Ϭ';R&t:RI2MWk(%:yXmoy b;wR[ %+++"4$F GD,kWOqt޽y~JqVZQ*0RڵøCyE~7=ѹ7۳m^1zVSwı'pM~رROCpݢIM`MlwO_""""ry(a`vZ:ufM$YdT(*Ua$ ;fa`:QSS??9KY)awz*I $zH(@yN$w@ $G#kB""ޕ3KVWAF VԴ4dfe""ZΝ˄e3~r ~~AZ+_Vg!yQn~>jkkѦM2[F@|s[ywH=DFX.r_B@?-ҵKgDGG-soTRZ:8_W"qfV#/:uUhsL5Ъ+,*hc]o4PyhdA cV]cz󢩼DDDD-uZ0eLL$^;fk0fYSYbGW='/Jv;kU QR v]#~g|ez7Yg;ݙSvp IY ɡm*UG<""+U ?ס` 8[m-[iS6+W":*gϝZF}]w@Az&k"ĠO^ѽ;2ΞÖmېK%qZ'׋eyrBBBq,Ŭ ~[ڷG >رssr,źR;~j~7,EEE">.ya*DDD3mBQZZu0eJ"#7W rN!,,II;wm6קOyZk?$o| h4Ő$Zc\YPBEدXd1G۬#쾡XF(w՟U* +p{'mVpΝ0Wfݲ!T67Ze6˄a?c0dђG* $BjْMO! 4PIB.QD( W "˥Wҋ =lvvgw%I%3<̙cr~<5;jxOb✂BޟAiUU y|Hҷ" $͐uI/ ?XD!CbD0wMk >M7B g۩XblSw  S k{1ONn.+E{Mo*T('EAA|^ rZS<&7ˑѧ 2tQP5?5[Bg6l#Vtx^{޼|1>5 }zw6b { ͛vvHsХ.$ܺ hHO@`ViAADㅡዽqz-jJaezPVVX)CmM-ʲ8[GW%դLAakY0v*:[T"Gs lmtD$3K.UĈDP(` +N#~c¶1!x]z. |4$/p~Zכ`тq^ z tHMKCbR0jp4aK8ۣ7o12h`Sw   -sƭqkʕx9񂏏|}P^^a`g @J@BkQRS/r*Cқۛ/V<4QO IFQ `>t@OHTר@#1S > z$ҫI?G$50F0>t?{\?7>[>tJJr784'xD=4и74uà#h$ 1;-V˲@EExJ*4˨Yoqד}vR8d]tZMsaaXv<) \Db DwS#GT*l##b0u ݴ$¦PD!   xX0yIJ1ذx= ˗+ se5#O)XSHb\D:񺌿6U;BMӃD$eIc7Mt%Sr "BnQ.*" .. +&pd7sII w/\RHc:-;{\W t2㞊Ÿ!]{R;LxL<Ŀ k JR Bub,X  ^oD<ǁC'j}`д1~@nж\zPP?WNrt/d3TFDbO,[=~tWمo2#   $ 5.$ ADnA0o֔P(RKD`DoN};;$)aHDT' Eb1D IGUa{-jrC /=+ &H"[,9Btk5~ϏcGRRr>IE@q" ii:NFR}po-y;n>ڬJAA!?6  cy %=QS)u?Z>$G  $ 5.$ ADA^JꁐhTUUAN\ _yAi)k&HKS HU,-$99eYHR0"v3bEJe(.@m\9mM>Ie ;;{ǖ)bb/ :E"'"ABu pq"V3 G̓c(**@$$%`3 t\u gfջ쭤RF~f1c`l7 ?fTKfבY4Djn /5! A4#TAAAA<4^<' j[PGvv@u50=AvRBRs9˜!y6R;) Sy%!5s$FZYe!J YQRL k -H6'aC{;Bqã ݻO.`MU7K 7,uRR2n[ERxuU#Y./ڡz膬,]1^6mLRr}APdj' X 3HDAAAģ_Uĉ\۫Ӫ?%$aTGUR7`Li0:GzW Ԋ=F* H, ֥q2' ǨO*"}ǼC{:rg?:uBXhk*4v"x6<<5rLK%h3{k[GuWAA:yJ_+^},u_W \r +7 MǎMZ[%7BBu섬3IhH@"   w| l&&d+|۫e  P9CmbuSؾWꊲc) gjӯrC}@SXDHdW vAUfhސDAAAXx&xLyh[?uU=Pg&Wl*0R֩_8Rhj}(0NEVV?;wxSJJçxx!    GEՒpLȋo&BM}cBsǪ}/6ֳ|kpXwͦuQ pABӐWUB"`#⡂>nB7ƍ:U y;nbXLD7@3L \n\vFo&ct=6Ut j"h6DCLKzɀ^IڻMxe [$)sc_;jx1.eehy<$Z~-DnIX WX=dbϫgq2$ 1vpcp5QRם*|{!ʫS?B܊ZNz{qM>&sceha*%TcŨal`bĶsDeU Mĺc(T0vOy7,dYgU<a?u 0FvpBp=kqK#vu&Jt2pǘN΂eݔrg=_Cʍdb,.((W|VQiaRTհ8y_+\1$ N"Αcb\o-Buqe1'd XsZExc;GAy-\* [! x(aտ9xY1Ja;Eme|/1y#sP I=U¿! PW EH>s ]xD<FVB`uqckFCCڴc>csͻJG Wa WI@m HA|7=S?`h>ŭl`!Qxc;P/7`W٨amR9 s +Jv/U |uv v'<1uS]ys;]Dx}8ًp>W~T1(e`Z`N_c< ta/lT墵G% ]Dp!2j{xkҥɎ*w[BRw db^^[.ER-%Ƹ ٨ֺ66/#żQ03v ^ߖ?j*gq<k!GwGy@"fͩb1w Nff5Z{Il;XB\'r<&{a†l4X~q`ɓjiC,bHw7,zV/}_ VD{fm  z~,˼c2n.xIvX{/rr @w_K@f!ሰyK4h=7 e=QSwɸti+y 2ftwNֿKYT,J<~ž2|~g+_~*T viKleȱBeT~^ ]+teL󥸗WL9V\P_)t>#:8aB˫A|F5ؕvntytcP)gQ^͢B 9 Yr/>w G3%*JL :)X}WRS\ " Uf:1(BZ;:XB%Zs*U\K)Ux|8Gʳ11m yx"<-"I%$`wcc `ʏ&@kq [HGğ?sOqx8]=ىz8~}Wg^&m lݷY|57 cYݏ^z>A4=FG|/ ޢ&!>R{Ip4A]F^xb%;ڬ% {/[( xXV..T=RPj S#G;*LxSuNJh֛_V w'|5x=%@Pz-eiscPaEo#!>;ϗ z[il/D O{~-P]x:ST{Ip?&۟Ut h\D92zY G# ѸZn\#-GF(۹Joxl爣7+x?+MP_AA< D[v>y0Z6OO==#uH޺4Eǭ}$* V6AmzezR.27h ]вX"xs|<»Uxl$D[}6i:h`l7nEzd}BId ag/a$B;)5pɎVQB&FaeUNv6kc) \ĨaOtkJv/ֿKt CIp\{H+Ƀ4PJD0(jWGF ]36Zy^V=J5H{PW h -僛q"= vR͗D[n' Fwoq3q$VvH<"&ŠTkᮨB (ByuN*]\7'X BAnL1?T.X1YE8&`ܴ}2si0wǿŋ}\_7Ge]. jh`x{'|4 wlrsCQ^ " `ݱblCܔev!_㊙{ϫza2zŵbWl)_XuC<dӼ e!b ˺kR[(7Ld ]37:}@YaX}l0d(*(@\u5j Q]RrdWӉw6}-)" dФQyf-M H ^ /2 -f80/YKQTr^|Db]à(Gif?lKx{t;vCa[.B=(_A9t =%g+/::a\"_.C}0NowǙJ|K!g|{n<sV&R_ݳ08QR+,€G,↢ZPW,ƆJc3bYhHW{5 F9` w;ZܒZ,ޕ0+=NJ0r8I(9ײx ìvu< h[߸yA~**4|g{.J 0uS/nbØ_w@ Ftp°YܞYǧb_W7h#GWK)rNI-)M+)smNI-N:1psm  lxVM GB&Ya{XFH9qwEWN1dk,m%VY(A47lA0҄! 1ԭ oT> RSFŭl9k18J]F(7 Wb6LR%FǴ)t fB&F`{6,GyZ+ss/oCU鸟WW/ٷsU`XŕoGs@^ofQ-_'(#^Ǯ4(=dnvh{A_~~B0t j焬Z$fzbh uպ qܸ$U!>jMRU)X[tD#RkpNE  ۄ!jJYa{hO{)音 s鼗__xߛ4nzKׯ- 'Ot`K, h\ij^zaꌢZ̉uCBdts?.DWӼ!U`Tײ۹rTհ2 } 6icIrKj`ʪX֢{늏+B~-~78^c7+ 3,r?f=!Jb|g8ى`c=b]+Eѝ.B{Mw8qC*f0+*-U K sdD :cR7봐v?P^⍡*9 oW1tCVZ`x{'ϫA|.",Z3w1wX!L,}/`N3q<ba1N(f!btoEC_^ c:9F8JEaկ\'tqƜXCj~ PzY rD϶\8a/!!z4X~q*b|gĥWAcbFG% neWc2Ql#&usF |S%:4+Y?&wsAU \JƗNjQX@ &wwA6h!JT1=^VV*p9!q"}7Nު epg0 ;"CBvn 6-"639 {N"z^؜}h!^"`2R@KtGtK),xuG z8XMelW jB]6nNv*Jq;mϲ쉆qܱf  'O q෰Rj00I0=+K}t&:"γPo$[ke)kbx"-2~~H-26)isyu\ ԰h<,?jrij޹3Cb -B5P6) I, UTX=Q!BHᦆy:и6./!%AAHn^`L9)XCI uW%$Y)ivfw 7wD>BˋH:ӄiFPu h*, +P``/²o_"{a9h4" h4M\7QShZ*2mvRODVlU*%Vi7bu.)iDAAAamE#};6$ ZՇfomFW40dF|IL"lB bQ9lI   hDi,K3QJӼD# թj>$&6FB"k଑ ]GA4-$ AAA,Ɩ, YEipw['# ~7FD]!ҫݸ74ģ HAAAA4JH}$X;b+OdEȐ3MbќiMsA< DAAAD5q +)sIaI6 HAAAAX -ؘ Yt9;Vf~+mqjL`    uk=JDb52t`!Wg1\Ws 銹X[j&2Q77^wH>6&}[?-6_ / ~ג]%BDAAAE(b@DCM]D{HEF EƋh>|n2.-zI^HDӥ IDAT3 `ɢnn\ށ{SRҊF,A@    QGAX *! r1;}X6mN%+EY`YԴ"} ƉG  Ѭ`Y,K#CAAAA Bm'󆾕;Q`d EdFV٦,lӝwݴkP4i_ VS=bI5"[$    Mɼ!s2`\Gpln*{0&-gUSėZ%4BWhl@35oؾ֥zŝ[cR"(RD%H@"   lT>D!dy!I]bYֳC^0$5zTcZVAEg^[(w1LA4 LH>"v/_>}ɓFlݺݺu'F믈kT}jj*Ə///DFFbʕ[a2e {1^Zuu5z-n...ٳ'?:u 'ND֭쌮]:u /;<ի8p &NTK04vO? oٲEpڵkcXhӧ󞕄L8AAAQpm^? ذayi& VBP3ksr2 ?06Gqqq;v,Zj 2&kz ϖfBv.]`\BeVZaΜ96Xg~~>y!&&놟E  m R z>yx,r;tkP<4~;bxs6fՀvbG5S"}wx}=|::<ٴ!Fqb׫|DQ֭[qe1Æ Õ+Wپ};Ν˗#틊 6Xd ^}U\p6mtRAj 4x">3]˗/lJKKѯ_?>AAA:m۶ vIp!㏸pzQF!##RL6l> #GĄ xHii)~7^6n3Lׯk5´i .O4 ŋ+x26&_}Uǁ#Grk=|09B; cXbpB,ZH(f ƍV駟"44k֭[9r$fϞk׮aڴi4i=ʳ16G@)T}sĈ4^[k~rs^^tqE̝;~~~k~ ;wľ}p ۸y&vL>pppg}'NMOOG.]0w\޽/_ڷos_BBBf=Z#F`Xx1@&ĉܹiaܼyK.7|+W f*AŒ%Kcʕ3fIHLL<|x{{###-ZUV8}4w,%&&"22oFHHΝ3d} pilڴ 1XC͛+piP[ 8|||OСC%U_}=_Ɉ6a͘1c^09Q bL<+jjjLD\rŠ&ښ ϖ߿;vy ::Zo]va„ (ڵk6kCA*s;w4Bdg_<#^H*ڍyMyJ3AƧK+ O@N_ȇ54g Nd̬3:xjYRzm=1A4ݩ#'+ 9YY`Y $F6y CH eVTT:oV%%%puu奤2L̹sl֦8s v*퍤$^ZZZʸAJKK}v/ppp@׮]cG+ׯ͛7o>sC+V`ذa(++C>}yfZ aaa{l߿?^|E$&MҍIO:T* D#G`޼y'|bϟWWWkf׻a̚5 26&۶m.]ॗ^—_~ &,wży (Xv-Fs N>C||<޽S⭷ºu~N&M)S`ڵ'|E! {xx`֭;cڴiի&Na^x밳{gp‚ ~aܹ3`ooe8zzz"33GOۇCqkk/4?[n~rccǎŬYsN?^^^{uւ6qj.MAÄqD;; jjy,Uh\C偅/ѰEMuSOh !8]G2ዢ ѣO=d2\]]uDݽ{^^^prr)ӪU+,@ݽ{{Sm,IUUR)sYŋo`]|2pGHHT*Eǎ[8z(׏ɓ'ʕ+Jxg?#bbbm۶o߾xud6l֮] p|ޮ][$!a`Y\7oSO=TDmذƍ3ؘhn+q̙3:~߾}Ok.Gʻヒ?Æ 'aʕXdC̙3yCmmm_ݻwQ\\CAPŅ yfel Ht5229994{mgϞC~xUV:cmBeJJJٚ AAVw Q+DJcv6|c իjS+x+^գa3Pwԉop/8"Ǡ(߶m/mϞ=a4ر#c.MP`߾}\[$O޽?۶máCtBPcΝ BΝ {,˂eY۷oGN ˱e-N: y2 '*_sQ]Ý;wx$C.#""BR+b=ccb,?%%'NO?ͥ8q=leY ע".Çc;>}: Çc˖-d`YGogϞ6>}YYY^NƮAcРA?~m۶Ųe8l͈ç~+klLL 6 bOO?9s`Ĉ &p˲H$u+ gϞѣG.%ի(ܾ}*ϟ]fBX}M6x"= gggb駟s«)q`Yo67?[gϞB֜_h~ܪU+,X2 8rVX 6^^^dž УG1m4s@dd$6n܈ϣsθr fΜ:u!iޝFMgzA)-ZnZ(7_ .\઀Qb!(~Q􋀲"PY\A\+`J9r01t$=-LJ&IUEDDbԨ]pD8jѱ|:&}H`RGj?]ݸ0 /,_n8SHMMŏ?Ѐ.iHOO(ҥվO>Ç:ח.]ڵk1m4TZm۶ƍѺuk,+8z(еkWlݺUsFGhh(6mڄ, 0hڴ)f̘1c0]#˖-Cff&Ѹqc#==)EIIIxW3ϸԹ1hQPPZj!8cpB#GRر3gѪU+̚5 CHKK͛71i$L4I>b,Y ,Y"??u1}tO(l߾&L@vti:B(]Ν;#cǢnݺܹ3~WԪUKKy_|sΡsPjU{ xϝ:uBvv6f̘iӦ!%%V½+Yl222Я_?cРAx7ε= <<۷oѾ}{ԯ_saä:XH'ctsMQe&trJyX e+ip\$ =|ם\> )n>4o سfŞ!@@Xx82^J "Klzw|Fk#'p%p,}lEWq5@J`ى]LflZSDڽ3e%\~,Ŵ{jR0>C¤mO?+gT|239qn޼Ν;<(RsrrrгgO_An<ҁ =l QE&rؼ&nXJJh_߿X H:?v\N|ɰ#1 !p ;G"""n:YD3xۨQaTZ;vD|={w@DDDdaxB R0\;-wt?죭FxJeT@\ Ƣ[voϭ"|i{w@DDDw':|p͡nBGJr_9W|U:sz|E^tǓ}i;jr4z*'A#K ;7!#d6r^Q`qrP 3l̑\Mǭm*Um}x<$47r-&ծaYR3m~Wo)_"D׿^HDDDDDDDQ?6Ԁz+~<חZ:G^ ֹҺ_DUoyg(0DDDDDDDD.3)<8R: >p$Jklc#- eh8*A䏜\HDDDDDDDa23:'mݼ|r_N1(59ND%KtatqsJq lG6cd;Uw" @""""""""D׶en}u5s/+[>ݳ4^ ".f >tWxZ&*?>ѐ-cmcQ#s]T' ]z* ω2;4" DDDDDDDD.de7JYT(ҬGd|d; CTR櫉Y(18w-Khpݽր!]X/s(r+eM@""""""""${ '*L j YYμJo Dhrz 3tpv))y-y=b;d%FHDDDDDDDMVb3'x!*,[K B%Ȝc@% {Gj,]B YHow\:`$ TE Hۉ_~6V=&"_;u=~K[辽L; 9Eӧ@$"w KJQW5՞2MWkFhy!& T᭾47㦾<П8k8Z tvDl{A}#kD'>x>" T_G+9\< ~eE͓TVZHC2U- 7i`knJŦ\s;te׊3G滸[)=f f?f5CQ_,^lI %=sGgyO5<氦'wFnܹQД{n}0h \Yz޻> t.6l`u.\(ho>_ڵkqGo>VPXXh4aܸq9s&<^xA1W>%WϜW8p ֭[ٳg#77o6mҘ&L 6`ŊXf lقÇ|""""*Ejù&q_ō '?pz@Ž9MA#*DBz]^5O[6(?~yyy ۯ8^z%\pk_?Ӻտ+RSSq7̘13gĕ+Wп\pA??>|8d?w\lٲk׮vHy޽{ɓ+7GLC!;;-[M6_|jB~~v$&&b۶mСF# CcǎqƘ8q".]˗KeF5j`ܹI+GwqF=G:33gΠQFؿѢE 9rM4 2~ݹMz]'GBDDTa_? JU\t$ͯW@:w: [ZW.z?5ּ`T6o6* 0F|aQܼae]6!  ;s"C0gL>0iʕv.CURطozh̝;kv… 1rHIM=DZm6,^o&D߂JJJPZ5[hիW{ož={Tֶ9py4hjySSZZ%K`رҶW Fdd֭[ ʚ3j׮}YeR=z͛7|\Z>.Suɒ%Ygǔ-[Ze1s=h޼\f !"""RSߛVŌ]. kΈF@於m*; 5DTHׯ_ŋe"9ubcciW'///`ӧOØ1Hz>|8f̘!L)))sHw}Xz;v ߏj 6mj/DTTлwoݻW)7n4i5k&-78>ojVZjժᡇ\v F:t@xx85k7|eeeתU EEE?>nݺM6)>eQ4ϫǎC x"--MzƘ3c:ulƎZ""""%%>@ 0D FnOSs!84roH1x:pT.}4nΈLSjܹs(111K.ֱ-osŀ->C7ݯ8{9T^&Lmuعs'rssw^ ºuTǗ̜9~! 4ӧ#F޽{`ӦMGjjÇ{KժUѤIifHKKBBByf۷ǏGVV̙,M4imbԨQŋdϥ(>}:}Y0͛;v`ԨQؾ};{9>>5x>s~~>x 4mdž uVL:19sODDD` ".f9⡠)|X:{rۤ"y@R,**,ىˢ"l_+++ŋ1n82ZcڵXd AAA`[:up}!665O`ѢEcY&Ξ=w}{/jժiӦYfҲjw}7Zhhh˗/Gtt4+]SDQDQQ;l۶Mz?,=+0RSSx<䓘3gtVBYYntIIIի0c ###Ccĉp%?۷W|vx}s5kƍC͚5Ѷm[̙3+VpzLvQP- 4ױ{{4rؤUT@s;լ Q Mj0*jj)22իWǑ#G8q111˗/M:8q 2 Gx "w߿?BBBp!ٶ۵k'e)IHH@pp]TJJRkBBBвeKmqM??ٳ'͛uh4:}S.{׮];\rE 8߰aC_W\ǑGڝ5k୷ʕ+Qzui믣gϞY&^K/Tig#%%.]۷Sbb{%wVȑMz(-J'h/|SnOs )XeY}M@{{b"OqorJD@5}_|a믿z6-[^zV%Fk֬b_[`F-erǏ((++~RRR2u]m*3kӦ jժkZm?teF߿azY_YY:uT;0 N|g;vrss'dN–-[K۶lقaÆ?G˖-(`DVPTT[n9x>yUO 0RI& rjL}Ann.'m;y$ك~l""""0.M%z!h||?Ti*l#z hT4<:U,)'@6u(hԨ233 /yxbu'N`@*U{D^^{=dw[lRRRСC۶mùscI:L|vm{̟?_xw\zK,;#>jyӧO/2V "^~e?} ==eeeG~~>LÇ>@*Urn='Nğ`\rk֬i0b<m؞͛7I&ʒud۷oUݍ7?Gdd$DQ{SLp?` *^zAAAضmqw=zoAI("88ƢE(O1c:v|>ϫgkJJ ~m϶q;R^=̄hDVqFoa_|sΡsPjU+8z(еkWlݺU1[Zne˖!33hܸ1ӑԪU  f"77-Baa!ꫯgѴ;v̙3quj fСC>pML4 &M1K, 0k,]sGx^=s^}vL0ڵC\\ӥgiSaa!DQ:˖-CFF` 4oU߁XˠtXP=:׷{wVع;"fBN[6HLL VX=ziXϽxrJl۶C H=7~7oϣ"r_wVsN‚g@aU] S"gA"S 9,l#堑my;cٻݏ|qy݈my 9,QR0ӗ+CBBmgΜ}u;ׁ_tkz5hDtG(`1DDDDDDDD^#Qn}=}Z0p2~eJF+y&\=,Lj˗7Z#"yJHC=}ZЗӃFη\jݢ]DəQblUpJwu 8Ӻ[Ʀ7J@? BT (S;P S>(XMW }9_Ҏ*r8kdl#Dݕb{ŴyM8۳ X4$4cϩEDQ6h  PZ/Vl@_k.:4 7Rm}=<20gFCujW? D3D)B+lXkFpy:Ej iK>RPP!P ˗<$""""""" `*H7X J~?i-|AmT(aL 7F8;~A@\|QvDDDDDDD!ڗx.A1 s~VmKuukq1,}ǽ?5<;{CM5_ D4vލ|ܹ3~Gu/_ۣf͚۷/Μ9S)ʸ޽{ѣG <p 3`=Zq޽{e0BRRR1-\ Hڶ|r>O\ѣG/m/))A׮]QRRbS~}c1{w0qD!''9ڴijժImgeeYo>gNbҤI8zվ{/l) q v΍%GOII '()) /\)ܹs1o<̘1)K/a_xbdgg#33SjW^~e˖_~AN# ??SҥKh۶-S.'''ND\\tΉK_ǂ k.4l]t 2ZYǏǾ} k׮ő#GЧOԮ]-EoSxvlXnfϞ\[hڴKcr?2DDDDjL1 )CQ66hdو-%P8reI hР5kƍАV/ȲڈO"aXŨ֞DD$*EQRRO?T6x`+f 4o9r$wF0k,)"˸G} 33}ك+Wʖ]~=<گ}}s=g̙3hԨ/M|hѢ9&MHeo߾.]`xQXX(ܹse]Vױ\t 7Ν;ѬY3۷/RSS /88kΙ0aRRR0fDŽ d޾}Ю];J_Ejj*\X>22[lA6mY/28 m[v-F|TRFCE\xѢExp)ދ'b̘1RƍwE߾}5/2N8/Bvsbe˖:u* EڵÐ!CK/p|Ϻ|2jժ|.\Dl۶ :ttڲ,zqF=G:3&-@,CםۤuB$""FV Z4q-O_Ko!%.ٮSӌnpr|пî1[̹q;q)Ȣ4h?zh-@Pq,>6GW]WW ŢMԂտv@YM@& !@@R@PP-?O#'PPX( }e9QH+WĐ!C :|l}4h-44bw=z4Νڵk;,pB9Rvs -[Z}k{AӪo6l];%%%RƐcYjڴi:ֶ;̟?'NDXXò(--EB7}΍G˱^zU̡Cp]wYmٳ'JKKGoTڵ{nB\|YsD%K`رBJJ xGJݳ>H)x֭Ԏkג{{ ?V옴܏ JYHFJ ?:sC+6qzM= pG{1OOð'냿=+ ~} r6xe\š|I" ׯŋv2NNNFQQ:u e|גּE,-XC AttSN~CvލYfadVRR/QQQC޽dرcHJJ?$''#22?0?n  "-- öEE\z+F:u΍ΝC||<"##q}aRk׮h4CGfo PV-9rĪ<\zU+۷oʦ9s&>3 6 ~!zٳg#))Iױiq5;wUVFaܹRGĖ9Xdt=kgժU EEEV٭[i&>HKK̘܏ ۈ/6hdو/߮1Zu8%^DٗJAAA?u khdMoƏ&-6R6bs,}rܔiHD@:w-cJUtlbbbpŀ- ~!zƍr /_ݡnܸz #GD֭e1b݋?6mBxx8RSS>0>???#v؁͛7Gxx87o8<|صk۷o.[nEDDڶm]vŋش%rO֭sNb޽ݻ7 uBBByf۷ǏGVV̙,@^p)̜98r&Lz~Ϟ= `ҶN:aԩXlPF _sbCVVv--˗/vjҤ ڶmQF!///^DFF5{qOs|hڴ)ߏ 6`֭:ucs瞈*iBYHtA#'|lЅ'A#7\7Z:SjMieя`0H#.--E2gyK.,]'CKӝE1 /9Rh1DTHJEE\-,**B\\\񶲲2,^ƍ駟iӦرbZ_1k,[w}7Zhhh˗/Gtt4+cY&>#!!þ5k{믱sNMNЭ[7^ٳvnȽ?u}݇X4jӧOOgΜ_=aÆX~=\Ǐ#==GsʽמXs焄=ڪ|JJ .]۷o;5&G@-CDDDL{j|ܛMA#Q? 7i*:r:)XlD P$v? s<29Ok*/#;<_|a_G-߲eKԫW*;h4b͚5R@,㌰0YtIS ` ۷uViɓ'g 6h(b*>h4b뮻Tիv)-e?,['//0DGG;}nknn.d+V~hӦ7_|oիWݳZj%e}UDGGcxGQN\pYYYx'ѴiSܳ,Xf͚I&ػw/{9L2uڵlG=gܟ ٳgc̘1DAA^z%<8޹TfRV-Ev8vuI):[O%hj% $*"Q`hF/ZBM$s" )Kݙ Vp@jݺ5֯_,hժ6mڄf͚Ie />n8SHMMŏ?Ѐ.- .D>}k.\իk.}EXl222Я_?cРAx74EE$$$W^ѣG]b֭Y1VZI&G ߿?|M09gΜAbb"9Ku]9s&;4Xr%|A^jOz#33FZƍѾ}{@ll,rssh"")) *ygݬ]ӦMCժUѶm[lܸ[`z!"tb'|ÇcӦM€PXXMbƌ3fQN3f`ڴiHIIUpj:'UMÇcѢE8{,RRRзo_L6_ݳJKKc̜9ׯ_GV0k, :jj.^޹sTToߎ &]vCzz:4q !"""27he_@TMKwn!ڽHQȮa{dpKKVЈ.S`! @08\Tv4O3iD糇x!gVM.K+УG7 o}(((} ѼysF6WZN<[[#5 FU08)J9Е%GD)ZDu"4Y'""" $׮ZDu1vƗOQ}hrʶ:׍ ǻGf} Qqf)BCBPJ( L?b3@ )-e稲M4 9FrWQ=f5FQCɕ^Nb|!*:8H3'O *: "3PhyܧrZ6P)/(rЇZ]shذ,|'뎿>?EA TT&4L1pI!Ggm߄;0CD?eˢύǦ\Yv"tnI;Y67XS5#3"DsjDZsTL5G Uëd@"_4p,ªTAj ǙG~^kISڿ 㝑V A0@0d HH`pti^e_F[P^ ^Q46Phy٨tEP^BD gq⟈OP|Q1v}HkGO`Ȳje-9Gkv:(42A%vA 2f eLhvG5$P#B`,x-hs\653树8u3H35 ɑ[j (lkVn|*~8wCM ۷ob9yaU~bTKݬڦL쓨^=¾L]췾3~9``Ugv n= $PE@o}pr5uwY㲩{{ےbgE_܀롐z(1 %>>_3'jI1JK)PTulez4j}6>\ r\AGr#0>SFʳ 0D H#_M㡛bH$DRo#4ߋF^9-[(iKs漽/M~ZT}Y4D&į;n^DDDDDDSZbZe+ИU|jUpmN&\a^NL. AAʗ 2 $M5-ok 9a o@y:]4<Б[N.D${i1Ht>)ȳIGڞI|#ժUـvj+s}rS*3X-agZ6ɔ}de B^ {܊>Ȝ1󏢱EGMo:SV:nMG ߨhYdK cA^Q@"""""""qKy4 !.euMYHv+_N>)d0 $CyPIsRv;n篙F::zN;-?SKS>RKҰlG' $QKϹV M( )SjǠ"b;kF# ) HXfY RNtkؑNW0hQ\[cVnh}1x$WlKR̳xq,^J!$A)#""""""wyS}S뼨Sw,eɥ|'"Ved0 AT @ i ;g L.xd}+SVE'm^ IDAT%ӱDgWdǞX9ey) .('D"E@"""""""GZ&NU]IZ(`Sʺ̖?ɴ Qd0@`L6` vH4DaDr+.h,(^4v고TǾi*?[,{t|lLvۉa8+Q `|fW@[ZM,'Ct 6Vʟmd<*rB BpP)kI0fYeBV,HYHZXtU1hЛ4h$u%<z{?uIG8ODt`|Q!f1-Qo+ʉ"7E:6:EsŒ+Ͽyi2۠{O3u%xdvmJ<;I?9H(g A>hdnKq{y=Q߷,3']< %3ReӢ(b8~#I&5w|I&"'1DDDDDDDn7a<=x#F3,'ci);4A0V] R&/Ġ+#-Z{ggh >$m ʃ=mF_K{̯岆\ jA"V-+aQ=H:U<;En};ȟ0DDDDDDDn%0m6UC=Ъsl(3Mx ByH Vd )we!UTD=uXWA#1 i垁y=uD@"""""""0lh0,$GeCL?"EDŏ(:~4r͝41aHN!=}˒֪Ϝ0fp"Iz+((A Q`HP` AeET2JK0܉'] ]ձkNUV=X~NcLz~?}[9䝗s. |jW|G;AO $; -<ǔʭJ϶O*/*} ?|Ps])SN? @LoxTKU!v dL''am`Gm>ztsXZpTBh4 dv]~=FytV$:my}I0 ׳%+KB+ϵ;ʂ*k12iUfVyБVJ,*9vK?XO׬?88_.g֏?#@L;<TRRiQ*lku YkJHŲ6 *c+Il31&8d܌L59+<IVI蓅:˧Oz!oNؓӚ$1I$1`Z A;,PPa~ZOr= Cao)y5 钗E;ZaZ唄DV HfLL~ASi_5WW]VK Eؓ^ZJ Btض$gKڰ}[oCMfl|B"O-4DhLՓ.ŇGƏt9 HXQy8B< $iZkZkimmMeRj%Yc T#4*F-PA*6Iw8VGXq)cQ?~ gL{۱sZ[ 圗sZKƵA[H^k,H*J*<{_'dz?Zz.}y`c#\HQ]F iΝXiek,ku $51FG7US9*D;#Fh4ӇF=\7Pvw$$mۊTT&k י{RcMҚ$xV-LyXY>rk||@a?A$ᎱnJ#GqEipE(կ|v^gRv;Zy=׎$o;UR&U\VTuKy'^{.6-h@`lOz釆>^dm.^#Wsiaש@Uz6qTmgB VnV54>cǎ+['`TzJD; ~߹\myXA\Ї>YI2˝1^KZ,R)P : I mccryQRiGYxő84!+_|.ykv8ޒ^qnGsp+gl\J*KJzQ¥?J_jDv{ @mܠSSe"5U!MZwϮۭʫ$?ppd"5941K 2ٜ'{N /G]'{*Q\am׻ڥe?re+^ex#KaZ9-1=zF&l^5(t˕K+l $aT9(ɪ8NQ!k'=^ǏǑڎ `Z/\` R $!U'PJޠ""eT3O?GߢybK7`,WMm R4АCݳk#)ia /NN<"lZhTaFC6 SYXly 9'gmPx/oLMVR úNэϻ~;<1ɥws^ Y<<> vֶX}TI_Ǭ) qY$l. Sy+\ ^O._mEq]kvMVI x/k AIAЩ*V\I0)L/a墌۠y|ވuEr Ͳ i:-Bk$f{PzHc׻ˬ^ɂBb:.4* M*WwiP伓sidL>)W-eaTR^왗9y߸~?[b\Z匑U$%srYe1nIxT^f!Jue!R<9''£+<@)REѦbk}M'2Q;YIpX+\X/Q2wV~~YYw֏}c}~%L POp3<'կ}q1Os"aB -wz &}B4()(m\"'筌qyRVʮSTXaFMOam:I|9_4i-(¨l_ ml"#cl>a罔ΩXyۺ. XseT z$c.)IےڵkMOإV8}@ɜ :Ju_|g|}=KvT`i *zӞ+~q:nG\Y;){}}TyX{_B_qO|?e#X.HJLc;:wg_90ǘFa"g2YhsFӎ0B}BHP}wɤM;YeOYy=s v/b Vq( 0gmm-=vz|_|.}:+ iJR\ZP&.UEy˺lͣ8gsTQ0I^/}u|k[Hvk׮riuTxq0 {Rd]:ɦkAULnW߼/`ȧI߾r~s >5db,& %;wO!LG-jv6i6(D_5UX6v],\l䌑IERiMi {]E16ob'g(*bHa;vp{;_)Y(mV$Ys%g"(J8siT M(IaȤ%lOb8G> :kGu@NTcO}ʣq.{y0PVjymm$6w6Jr6 l*p)j?~n~j )K]U5` $t62֨ agH#4pin)&2MwdMrr[H›l} ?۽}Nkkkڳgj H@ֺe6widlw$kLH~77/`HPm41j:NkZ0ءO!hDk n)uGYuH$H*| ,I@8/Ns&iigbؘd$igOև^4ziJt&oo{(O榎PWyCAfRV9Gpke 'ArkR4 1 *hCIfoʮ!R^.itK+qriI" :k"uvkIL, U')Rz˥(IHƗrS5y`#cp!gJsB0S :Gg mf-kE(v("Xe$ICQ+HZeM-!P 20ְ0IF?ͷ} nokssS[[sK5oGNv ɹ4HJ߯ aDz4 $@%;hFQmxo|?0VT:Bb\ШhajPjoryrPV:!^KN>VP2{#c\^uAz<#XڴMSw 两%,@q,elWa=ުQ YV *nsy?h-oRzok{{[ۥ_JiQo ZYgDZ1ЍnxTe;4 `vzNͺh^-9-c M ~LjmgW;BۙQߘ,LWYP!<2Y4/}=J%zXM$=빯tn>/ϯu/- dL2$D^'!K" e1~LeoxThaWiYZ1@^ǁA:MoTcR6ʁRodto/}](.o?gHR%bOT:8/>3/kIF~=f~,!@ԋjJ1FX[m}O4ԅ/daPE"MMk J#,MhT-}}^ySSG1O#mYdLx OԷJJ5 ӸRm7ؒx_7e֌O0d0ekZ9E>[I~_sTn.U_@,:5Yبcuꌧ?N98[MOajx\`lx 6R8)&?yEQ$'8kDZHHmmo%睯 dMY/Al !'Eq~ ox=]+Ǭ4.{|k]n&_$)ɏtARʤRJiP4}N*L ǓmZ-~Fqt~%=w$ZOXuz]Lq&d;rdCtUH?cǎ)}kYkO(B*T+|=%_gb̨ 9,4jf) VdI+w>)i!my.Xkk)B !:ʢXmmN I ?~wru) > | o@y'k!EQE:gê>:r៾__H^%Y!R^R,/XAR*T{oۺNtL~? Hk-f7='qJY *y#cǎ) A~ƭl`v[uNWp$ @T4hUZԍ E*U! }B:Yt 9F]مF=#}ޚN&IOgaPXa Qu.ۑon)vI@U2eFAX+;nꡮvs:~|[N2R> 9Oi =UJo_xpv{޽_>aP]л=<#d/RgݤR_rTe<\ҠJ}9s.ݾʫ@i)Nص%aRڔ1V:SK۷['|C6 Z|+f2H{}u PO9K^)yT5puQrI[41GOM>znDh4IT}%iH6uyS *I[qWDQ(nVtmmo'ף(R{;ұ<0BϘd]{vk=:q^s.y̧?Fq$ſy-ɯs~N2:SWX IWes׫v=oӟpw[ cMAM0eJ!3F&YhSmewӹcH5R'$*(_F~Zԩ:J^ ;Eq\l^u5yU\igm-TEBceީV=4Q`4^^'Wm.iQ'yN[R;sr侗Nq+WGZZAv%uW:ʠ j 7ҊQ666(z$W9QfX}9|䈞O^gCɃ<HYۻrkuc cqcH^I%SRed sNUk}7nk\HI-hYZԍs*M<±Z:z;^/x_Hv-ZYQuAu作:J^Xv[4~HJ:';t%kQ7eh4Lf1F3B9Fn!jv(6DO؁:T}=Q^y/x2$aҐ fkJپ!wEpR yO<%Ww @AvM\:䝗cEQvԔ8 f1FlՒhFhfYGuЈ(s^)㷲%O{~}Ny体1Fxxw(~*|m9< ۤ=I%b0ԹӐXKIARO( äu]]fG6{ydtsGQV X$@VM|ʛ*VMwȹ١8FMoZfjhe7/k~U'?8N¤?=-]WuTN嵖42*@(JŵP7^0,W (A٬z)i]gI/8 QV Gެݢh-οl?DmݦgwvcMۺn*I#:1,&j~>TԎ$cЇܫ _7Y Ds%E` >£0<>(@5!@LfZ540FŇ̴h@hQoیV_9ԤGO65ԁ&aj=jVz+=2Fڽgw5S1hMFn8PqϚj\'^A;;/|ZǷdpNeQW D@iHTnJätM' :k%O>_ ޹$T2S}jgHqL ;`Aٱ-f|?W4at_IGkt;4><0\[ tGCݝs+2Vv<~˯ҧ:)cw(W]f^J0s_gͮW ~I(R L#dGRye@S'm(RŊXJԁ P,ƆF5w_MnNUFUF1+_Z0v{}0~;%<q~1gԺnc`)9rd>y=>>/20gakwtSOl4$L?S֖ окNRR}}dٹ)bEQ[Q;RGXn 06ZDQCyQ_$n28rFK^e4D`5 iVRSN5%0K|hڡ5Lij%#t'sle7vK_<,c~VuaRb{R:-1yxm]޺&ՋuLZ}uQQ)%H =HjvphfV7YxјC#4vYw8?DV1)VŊ],県52 sGd6mQh#7'?2TM,20svI4y:9eHM * 6hI5+T-}]qCY^{1'sÎ7NFFw=]J5,<R}TyGcSq>}c&?z]m dΕӽRw4$@ڵK6 OB >  ufhUnyNH3.~^}黒;5=<~OѸz\]-: ΄q%-Io]+VW]_.v-oRJ΍qå#km~QںΥMD众cEqR}GBQ ;$@=WmDh4Vu h 58S:zN9ĉMF3½3,"[IM|.~LIgJ>ݫuu5#7j]uL镡;7c<=r ##9IQZ}uzIG ӀШEF5M2wھ-PrOsh{F87?Uҩn/:p67t ii׹..|"_h]S+hu򵏒uUU0 yG [׈Ш#M-YMz[gx;,dI7З:k=MuVRdKEQ$!.4 P}._(W X$DVu]FbZhdmê%X>]}bjjnx}I :|T^{PG駟IՏt^R]ǒuWby/6|Hqԧ(N.,U ?Bg-kN0*6=Wjk)-zn=H:C_|SlhC:tN9ľ]!S99+¼I꣤}]VإQcL2&"@T◱E C#t}J/;s\;I'8SG76tȆ8hkJGPɹX9. $rQUŅ$D55_>g foF vyE3jTh3mn4Z]Qwcz/c^]o(7=%NY9KGѣta?pXvNR]8j6H|Z}}Ǿk  E#4Im{M:̲F3)x2^o=YFuے$ˏ]O1'!Q+"'d|knq]#imO @$*99"7^B 3(̎:-?YjH ՐD!h*G?X+C:F]qLq+A k$9CuI'? 0ƯkDhT 3V)0>zȣzk=:1}SmJ:y4%X%^S:\3Nt :ڽ鈔bH@?HvBh4g0ڏBh4#gqOgS uߠ96D@06)' Ʒ[ӭX`dn'̛\S P qPJPBCMh4T`0M?ݔAMXDdW$4ғ_Hn:,ShQsqI Ef2ótkQU_ @T5$4*::pTCh|Kϊf6;}sK߻zw+~v^CP}sok骏ꮾ,z9c.ΫߠjLu =` 709*1FYi4]k X^CJAjNtf }IDATa{OV2*UCU#XdѠw'G4ʹ{7b%£#y@Hi]Sә_ޚ~IdnCKV#gEQ5G2snv"ZөC5=\g~{75͜~y֥|~GjGa5 k0TPѠ=Z-Zaum\4jGokȕ1굠 &A'm/z l`@a( CZar@A(ke5tX+k 6 M3d%//|r)cq(EQ~=?mK~Za1&;7 BX*kjB–ZkZ׵,@j) '!$HA`v=wٳWw e6X#H$0u| \22$K֑1g^OyB04oXt3 ?EsNgZN JE]W eݴr.V}4ϗ >{nT\qJ>%ib_]Nr4FF~wS)ڒ v% 9CX*9)VZmXZvF.6 rN12@h/}?֘l턄AAQR4 -XH;'V!Yg {qܐ`)sᣇLw|_w~>(uo6ZJ+sfقy @,$3F{9gd3N9;-\X7ωˋ}ߡs~?4%nE\|Qo.#ASK^y2sJmfg ʁG$I&02&79∾osv][!U)a_TM0bJnԴ$]P3LqBe)$Ry~Y/_.Iٟ=~v{#>פ~g! ^8Xa hw%RO/nN4_W_S:ԓ=$: >\#]MC VXa5n,3Ld#Mw~:]qIO?[㱧Hy( jT{7Ih93Z3M >?Rq׺ ʨ[4$OvNpT 4ƱZ"5-F[QU'y:Vi4]Y&U^G#*gVH jΞy~|ci{u!s,gidޗ/B 4H;Щ#\tǼ=_?xFFsH ۼ޻8olͣrJg麔:p:ћր hgљN-Iwj>0ۜ }%KGnHڎKH* P$$Y*G󲹹5~GTUE8Kr۔.* a|ki0 v@Qrk,xmO 5oǏo@(fLH^ұ-"@,Sx񧻹y|&v&eqv4@h|NcG?$Hv2$ݼAk^wn}f~?|} `zkn~Iڼ$8pdFi{Un~5 @OyCu>'`' @h?RCQ19^{N]|nrO_Sy2~җUWw)c@|G?#zˈ !& f\]Tp?1wwN_ϫ]xd~Vg}hm`~\닞4@UL7kz`t~̏G‹~]Mfa}}n;`řcG'0 IY/x&`Zi{!M<_8{mAuKb $Qax͘=$Z|T!@hF6F `G"0 F:$CXC@-$#0E8F`4&C"@hE(H5f`Dj!@@$T@V a `Q]f `P] i 4E4@CE!@h w?$ C  EXH;a `G 0 "0$G`ET 4?$ ,`=/V Ha+ c!ο7X@@i&, A*o!(-G$$Zh;;JPB$  %H(!@@ JPB$  %H(!@@ JPB$  %H(!@@ JPB$  %H(!@@I `6$i̘1 `Euۋ$IJ\y66;Y͖V{gSO VO~=|Hgu}ěXÇtOSG7e#IēOy7>kRޯz>f $qUW茳ΖFQFgu rudX  :wIک8{rCV m;G ;js0/$J}-H(oNc8t ׶]Z b(Fr)Ơ/1*^%RD,)W ..m}A2a(ҵL3]eWTj25 9>_kUW2W^l+#CmѺ-?_}rhĉꓓG1RQaeffjؐ!0n:l{EM;V̗eYں}e]&,=0bfM:%v9ha>~ڼEҢuވ _~U;v{F+)7OY;++~w?YP(.pH Ĕ+i 5mz5sTevk%}{Y^JꎁU~L_o5NCN\p˲,wA ~WsO%sf:IҖ54{%]V:Yǫ}cTV%1➇U^ny4o JOWk o7n׶wHr%I.6oݦ5zFA7@EΟSXp8?b+ؤC%\. 诚Z?7]ii:XO<6K u!Jyn`{aQ$VWr8,++D@ p"@@H@ X%˲ƌ1 Q(͎҃D&&gBB6*bArjp8ڡD ex 7Wrj$ZĄL D;immQϤ^nz22ݒH ĄgBB2ᰚȕᦅTuR\JJND f]g$ǔtH"p1=C/G1&tOjt{J=R{((cLC!8L wR3O`QMj*%ͥOaH1&/@L55=pn(+Wůn,9ݶ.b΅@kl pc۰cT6s ` xTcc*Rp֥uC(շʌx7ȨꪼU'2(I]|1Z+(` Q!ĊhK!DHFPE $hw!*XjU0ޅ`jǽL8@Ғ(Z@CE،֎{@^Ǻ$I:rx@(&N6 V``D0q|zaU*.S@gvvVa`C@a^ ( q8v?`YXXRm&p :|VBC+ \٫ taaAj*Q \Ea쬪j׳hZXX$a8Uh5 ȑ#3"I.͢U`v܋Hqwx}PZ0  P{`C0.)P(F0F $`.cEQ0Q! " $){^Q)cPL *D0 q<(`aaAJR`D0PJR`<F@DZTTEіYQq/_Ǻ$IF!I:|0(F@;j0 7a(FyXE C%RÛ>0F(vO7D)cEQi =0* yA 0D( P @@a( QA 0D( P{oK@A`#x`nqǝ^ @#wێ{( Qԇ>tJcK@`+knq/D Gd1>?rP0R,c4rP0}zc^@#s]wZ d<h #sZ+I2&PbQ(F;U.P q/ B {%c -2@D0ǎȬfL4:z*Q(F{p[6ѣwaE("Q wܥru1$!`AI1f@z^" @C_/cUl%i=m~h̫@`+c\h)D4MǷ@(H{P^!'ͻ@JǺN(\Qm;u|$%Ik< @`>yhv$Z-}6hD04Gީry~RV*JJDֲ(@CsT*TT @i},A 9vx7PIr:hu>MSqǝcY+@Cs}!J.U|nKD~t+@`(.g=el2o$IuX. @CqȘ@eg)u> C>n1EA Wd7Na NYkT`xD0:UCC:$((@w~ՆJu&A #zcz9v^;v$rnI_=ߧ4M$~i@`ժ0RP0( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a( QA 0D( P @@a} )20 9inK} D>jIj:0D0"E2Ǜ(.Wa j^;"5Ԑ$UUu`#T-)R]uI. :`e!R>]~^S Q.j6y)B PSMaLZMLQA 0CTSMTW] Ӌ QFM5?#JrStyL'*DPB5м7T#EӜ@%)E(, ߷*US QL-_)IUUӍ QLlzlp%E t+gUUIҼ?`2)Jɾ@(o\'`i@((D0U{.<QL0% @S#?)>(PAZWRzf?V}\1E`֎{(zj0 MO=]j\(i\j2G9I*V9URtxQ! ƋI%uPӾmIs.Rn?* _>`DC^.c^F˒.tC.%h_ Ru{1H`W ßܯHz\y}열DZ}˝Ox@{ݻEj0lؕR0W}s\>u[ewo4W BQݎ=DD]5 "u ;Tr{s")m3j1ϫZ}>PC(v(:wJD҅TPwEhsLLdT*um~=CJ (v(Gss NÒ\hYJT1޽/}Go|E`Dk˅I|9ţqh#Jz@N\7=D+aM. ݣ>F=Pޡ=arQ$6Q&j6Wuw~ꪫ^4+0P! E~E>_{;go/從O9}M$-,kik:pgt'A!ī>N B@4v A{D֚{u ^0/|!0(hQoW{?W:uB{NG~z{?3=D0Ѣkra>uIhgO'h~QohOc4D=_]{]u`4D?#+B{MV*ɘ@>o”w8hy}I=;B E^!?ԟ]zn<^I'oCN77ԟyL(zD0}O߷@R"c$nuleL k}SuQԴ(MVkM˩J@CI`PD0SKC;}qg*M[VJSN(Gب; $5emTiHj e^6Rی %{oh<8 v@̷ovgqTt}tT*3iwhD֦%kECY`h˶CMNP @ 5;;X_YU%frN/~R#k}]-@, DT*ifr^snRkM4`¹04 +zFѥPwDZ^>ԩ|FI)gϛb`G*IG EqV;#&'$ZYYw|qZM(IZ?A C+9rxEq8>8^JU/Cg{DEj4$---mqϐ?ʵJDƸ}}lmڞZwHIqsbt'Edm`TD0pJϭjuJ^@>I3)"?Mιn`>ׅ:alS.-RQOPUY{C DZ8^hljuB4 CU*ME_g$1{+Hl=:A1-YT'8uG:tc\(UIk`;;;J~`톞>zz]jUaAIAIƸEڮ~hw]%]!cBѕ,0!IRd}VP%T9Z}eI11=*JJD֚*M$?ȵֻjnOsG[&$7?OMysZz`D\v?Oi2C~j+m$7=~}袧)MS<Ξ=ݮM%h'+MN(jU^)ic5Gz b4)g?aU7EgfzK/ݫ{}D>ku5QdϬ>bzE~Fگ\;5?V C K jrnF^J*ږVeLS?CSi"TWz[ @Ahg/j) _ȆQ RгW%t|IiI++C+M_ՖJn~_Q8{=B禺C5u+5Cm[ה7 գ> z`20Bb$MWy>S(n1{U.T.rV++gjZWΛp3pǜkIMUzMCq QzZ^ş܍JSJutKAPҴ@${ԙYpڔ F]8Z^50]oqLL{=B`zo;^j4ʘ2,cILw{Zk*| Qic{=-^Ol ^G(@Tls2EZVK%I:՞i; hfeITjh.v0 g\@J(@ж;ĈsgvR!Eѷ47qI{dL}RtkNJc}I'T3^(h 3@ ÏxLҌ$lhw گer㤤 Ù@蹻 2ZoGC^CR j* _;S>QP`WI蹻 :(zDss˅{гr-Oi~WUs`k43Q0mD#B7@T…PnI7l(NCJ:jGIG{=(br;)|Q2UJtO\6쀥3jm*?){fT@AEm%?(9IF$joZz\U!*IJ{UseMJ"{Jf*]x\{B:-iY 4GiѯQ@D-/^Y>윍:hu{J]1Y;ĈpH??RPVҕTZn[SNuBOK՗T-D_˴7Ir)գ`R@Ah#iuT'u`n × 0Lnǰ 3Yws+~).v|URSᬥYIC S.nSgj4P' >䔺DV1$Z}pDWa!8 ;oF EOI:)iEy?*|pPD g@X/I@0tFOg@ ɶ2Ɲe0|h. -''&Qk^6?NzG80eTB*r034ɝ=N(DKrh Rts]U/5ĈPӬWTQE{%Œ{%;iiiIKKKgD(L(Sss"ik{fCVh*BoL@ԆvLQWe-+CO57˅%F?M>ohv^h"P4KԘR]uKp/vJz(FQH :F@Dܻ$Twityah~fCK٫/WClC=1MFEsHVH>%kSYTARy|_?}0/y1,q% > ppj7F7g&Iݡh6̷gQ$6U&j6t!o+IEú#vJ\lev̷7 Ù;B S^\ZV:Գ]?C7(6QշK. '~vu ϓ؝j):^ HMg8jSyDwGIZax./AJlh .~Mjǿ!RE} Ot(:!FQ(J0LU^ݪ(]Mj'PQGT`"],l_x~~Qb,6(IZ:}=OW^z>6@@ŕXq%֬h/|ؙԫHjI/"m|}.0|߬0|h/"],&W IDATW*Nilէ?{R{fQ6+z/o^+u}G `3xk]`:eG%Δ4[U}PΛ|'HNyDݧF aFar\hqTzn=V_6+`0D`nk[|uG>u\sWjeL DqﰍwZMRTAPRݵvBOT+gq/DL'QݡZj4"buA CށhIC=GqbW_Y]{Mk{aoyi2ԵcqV&VJSvBQ|}AՔVijjtz}KWE `J{؅|8o8Ӥ576 ˅9CyCvi QAj}[' {1} }ki?@J4e{T*JD檒dM]E7bw@6]Eqn=UlsR^8^2%`JYLRqgc{Ky~+C{f۔heLyC4;7>wZQإER:4iR}袋jeeYO===Iemv?t>U}ZJxAU} Jl4kԩ Nofs6-ic E[w:t~Do 8?k*RVxtز1z A=߯J|\zk<}]*R0Zq%VF:R0 gQ g k0ݣSa Q"WUTi(M' zX/]k04f+<|uh#QghBIAh}:t? ()?O*J\QRe+AdG%ΔvEїh|Ct4l2n(jR:LMl̙z/u׽IW&(jED4^o~3ӧtSZ^>$ie)u=j5dw,Ap~*qEKKKlٯ~'ÙjOH:P5]^=)M%IS'O>[nWoKw^ǟu= (R?%687 UX=| ZM.4OJ#G.Q(E\:κ=D^FryL~ѭj]_n[͞|I^9BY4ڪ]Q Kw|Uo{[K`dD` Ѹ_5A;xl{6?l)IM$- DJ>U*O$E7%E)Z[RQCGGT{) g^߫z^ C}|Vw^CdJ4wv×sxQ^Y~Rx_*0nہ$ViʘM$P_ B;⸥Z[TJTfA咤0(8^|\aH ` "vpp8^tH:>6ݯjgNsC=.MӖVVuGu5gt=dS(`D` g^w0S%*; A;-jf3q|Vq|BҚU3%Wr*K%$iaaahu`3ReLRw{}OP?h1?()/{S?OW ?wO;ON>|AԮL{yIRwhsQ$iEQt*T<}}Bkkgյp~8l(bQ\%FҌJ$^YJ[8>GKR8~Lq@Js8U+̎{)Pߛq|\ :@TP?5='ov:D Eo|.YZV*MV>kEmŎ1ݫC.NzJ++gڡhMη:N ?o$5O= WH9[գBeAq%VRR!'QwM_(J%ۋC7|r}r>wV^z@>^j$O;P2۳WvV6s~nTQxI{%DW?T괷wPWjdL 0*go>w@H++ZY9f31iMTBQߥR7[E \J}VƔdmKVS33VW\1twl(Mzۭf未Z}j_:5l?p.q%q(iS}#]"~ʼE=Ku*JַOIכ,?pj6.Qt|IiI_hm-U<e}ˌl(&?mޝj_5](֫GiU%U Ub>͞7Qr:t^iϞ>}RǏO{FVBKPXQծ܍ZFǏ?{YQG++L68?fl&iERK) \_6^p&Y77"*QѫJsc˻nGJSe=*Z^>4u[tdu{+RMsƋ@@^şܧRiudKAPif1 ,$|[|>HZQZEdžrգWq/J* ~TUrVEP]*?@IRm3JTkk|{Z[WHgΜڪ4is{kzQuei*k[2$I3y#Q'̷ȯHZtZRZQ\ÙzS= Ke2%;y~q|\hBֺ=[DZ]]d$-%ɚ4a7QoGDG S$ޤ0h4#kms&G0^U0Z\Qa#ÿao8)0*qeK\ffggu ߕGRIQO|UfBu$j~֦aJ ND칆ku^?@L Eѷ47_I:Eov4թ aIUR}zd׹>gz3 >q%Be'gͻ覆?KX~՛~ളwxg|h^o?ދ{b=alSU>&i}KOojcYW>Z]`h^ZMxAÕüсoIwL/ =Վ^P>3# F]8yCkhbgmeνo-u|ujIu0,TZ o EuWnl"ȿ~+BWBQ..~RaXe DLp&`5`bF6ډ0|eoQn4m)Mգ䎬Gh~~[JNo NծR>Gss rmfDWB. V_(h/fÙ$bp}LKq{xׂiB~$}2ƵJ%ݻ_RYkk+Z[;4AI.u04fC|yvo_O!ںjϪ^IPTp,˪V_Z eT6̷gHL&_! l&礇2?jɷA /|tzo2W~BaZs+{0W +u/+zթVrd+CH:_TƵ䉒oϢؚ!%>|x"*ǠMJy.@޽te?/ҙ3n=ķl(M{k{o+?9"j~~uD? #^+U:p0|U^c8=D߲ŕXP?&ǰ&FnC2f}KuW[/ke匒wdm@4;()f2ffgYMզ0x4?y$) /ƽ]'v30B5kT-$)#Й3'%ǨU,&;h)/{[vHVT`/"а}>g܋w3S+hy粸z(ɨղ:~q9sBjAƀ4q~l($UkVj_= Qvz}L ŕXaJGƽd brDO>GnTZ5)cMem#M;>Wk/).-#`Dag~8`qγU8 "ン Z=F㴤DIR1$Pwq _(ff+B}UI$5ɑ\/@1VJ.DEƪU2L~)ޤ(zTss1{dm)TΤ~UuSrahjj*  PpE-/J/vkzWPJ;!F$ ˴SՎx\L3+T>jJE?>Q(8_ ү>_=RGREը*^br{1劢FrQw+|>54){x_)IǵI{ BOxQEK I{BQ;͆-uKJpahrEѧFx5 (PzQTu*,L!FZ\Yj7+CCP[Uc3[=*nzEU#k~ALnR>_Q|EWEN0EC%Q+T#m]*^o8GV\h`֏0|U]z ?t'?c VZQˊ%--=(\說TL~Zǻp@ /jg"P苊U_R)szp4Pz jǶnL~a TEj4k~&L5Q W{=Ù:VjY1#Ʌ*TrUSH hܧF~0|‹I_vI?((k8S"TϫѸ_^IS %#:B(Gƽ<0;er;XֿDi3`g(Mڇh<,BI3#nuJQt`$' #G;D 0D |^p&i:k^/I@M: A} '2tBF~JoM7՗ Wt$:"U}1"DjOMao-O B}ZաMۏiʅ~Jh{\}o~V^/~mEWbU* &Kӄ@^ÙV=EwinW%t\ah:TڼB4Qg|SE;7&{7ԧ?vntˆ%#3iD v,^o8^l+|57I= 2< z|~h;))VK3_ԧ5˜:<[I @ ovvvKɇNÙFTjMl9Q;J*QIjZWctկ'a]ꮳ!FRwYW]\?`@A80l1) QuI>-)@Ԩoq~l$MDijffFssGtU_k__zn%maKi/Y*Izok=>ןgzNJ\QR8`@AcR \z gzgG]uLχ> M1 ~>@糡ߛiK++:v6guЅzӒN[O\%`Tq@J͆3C~I{;H@ԘƸyk}H}( dm$iԩ>]p!8qr?1vgOA7F2;;;ޅ0"`ˇy>$\XV=rO{hGrբ. T QWhvl jqPS >qZ[;4Mwgz^$Ln ꪫ6:!SqY0tTV&2Ʒû*Qcem>$_-jm>LH;{ZZfSJӖ]턞Ѹ G C4h`Uwfa?6(AIA)M[|(C?ZK? Bϭ;ri~ܫ$#Ṡ] AvjT*w^۷_겚TƤ |WQjm"*MM%&'0`*jU'D{MOe43G]t=ߧ{wS&CoX9J]*IMB`( }(R>aSP%~6U:t_kmmU'Nk #rFj`DB0TXqNgG{{[ںQ3ptBIے6Lv}5ME~D EE F*yx[֖mu:c|u?* MwOnJ˘LJ w @^8ޒm8vS޳uw눺m. ?1_7]&4yA NZ_6SjI{`tPx8uD4r)Ǜ2 0  ɘ+BApQҍdsM[$mےnHzRڏwMqV6TcPdw LY%MUҒ$[U:Bԛ&S҆AU #_ QX t3Vܡ$T/tUn;:X ^/>񓄡',#E~0P @ͦ$Q`cD׿OApJt AwnV!0$c3@U#9ES`˗7}뿡z_א a( ?(鴤%I:$iꪮ^ժ>F-j4Io;k/{ctIIzQI9IϕFQ$/뵯}c7ƅRG [VVV~Dꅟ$t&u{fc߿K&4u0k_CS`wQFG [bt8/U2e>JmTI}~i>o7) EpkD 0DS`TZIRdY<)? M2[ʩP4Yc4{?<}7=o (Ff%k^ᕡ٪U?o~i4V6[SOQڿʿSos uAQ[^:R2>V'U*}w|Mo*QxDplIBWK-*Z'sZRv EKxv}z.!Vy(Љy2U/ =^ ;³2LJ}d|wT,ΝNc0'D\S`tfSI[a)Ocn$8(Ս{N~4vs@h 4=M~X|6(MRV73go/8 +&m]+tX:64Vyzk^s~;aJ1"wA͓#>o=qG֞x3zߢ?'rMێъ]u:-mooC:}66ݺj4m[ظO|#:s>8S0Tg&ڲ\`ZR-yO.LҀxqƳzkj6?{SxEPBG8IU۶^ےy^[TƊR{x7)ۊXVh)'R9[G CYQC]$W) DRGRIRIrERdv:-{Zt5EP4fGStn*I$(8J w @a(I2;6)CWW*:s.]K.ݥgϫRYNvwKФRNF㷧.L.vwSJ%ii9z DRO~cz≖V7L7Vʆd;'͙)T`8Q Q D! EirE_˗yO?kמHUJG(%([CwG !<Qdώ66n蓟 (@A =_陮Ujn$<임Iln t0 H;vknɘ|9(ІQ$ʕ#wXl6 O K@f;I) 0:)zTzJIL?_d:cQ!JPT.U*]tZiPT C;ڙ-YruztYPt~kw"qu#,O0ÊU֦:G CɘP2?HĴ6cXɔ$<\*+Ζ:XNGɔN*4fly魕r1VP . E3N",u?ɥ| * CA@0F!IjaV> ;Y Gh<&;RN:~Os67oSIs/u+.h/z+imIڔaYq`bw6,=g21VWWl6u[ C(g&?B (NUBJZRm-/_O{sSkuV?kt4 Sk3tمz3 w7G}qOܹ vVK>,.4=>[1\Y/.PLOwK[`DXzXt0\É-0*eCA(R*R&k3\UW߯Fヒj˺y>ߡ͛rz^8N&E>] @MUR[޷A냺@2]E*Mvzqd7,~L'~0ÎӹCjW|?rZt&VV)SgƳ<6Uu뎺uDw>fND^?qa)XD4UwSHҁ|vOYVV);-[RTyXN;L}HcaswLiC eNoǻj^? ǹ 0ETVuռ@ # 2즷Eُ%`eIey^IZ&M0tZ0۩ϥS^k}2Sd3jsiTX:8/ PA7 [D 3@Z+k|?YdMOW9QzP^rY%y^EII( Dk CӁg~N IDATt[! Y?#NOIT(MK'@!ʼnq+=B.&LVEn+ D7۶Q&?9LY'ٜi5yt<094U7, %k$ɘy_4uNn%ߧs|Y|+ Pu۞Uܧz a_vzLE g`E%f]6eJJt#q+=Eh>I˒JJO?||vMC7$= x ^?͙&eE_ kLPQ麳,z&71 ?'_qU᧔R/VfQWZ_2릻#S=ć*jﮇ;ÂaM桕r'pٖ ֒u<J|?:":KZDkX~D6hCRH6ͮ)馂^y #vG/)>^LȾ}$,”y/+ <%U<3 NU9+Q>hy٩E Xnb6oWomюUKdK*FyyEUڡ͙b?Oʰt߸Ye<C 9/ej4~EIZV&IL.(ծ^Ө1=HQ`^3yܜHO(ݰElt5y;hZիyA ST_tZIӑ\EhIITKgU}oGI"z~2=mNO(ͰL<~Rm4Ϳ]`XCĘ ÿ%ahD# I joTվGiV2*=#M],IIs,J_o:39SٔPnX_հqXXa"]DYVV~H҅>]euSJv;F7ek}gO|?09"tyr =W{qUTXDm?v%Ekkj>$" !d?HC) CKgK׵4' T=ϓ畺zގ.BϴAyr{ ϠL(R3R=:yңG fꅠ5PrMN/5梌]>%kT d$J*J**ox·MunOˆQTTzr:MxhΔq6l# oFIg+C]uhk$|I>$th:m˅WR\)>}F}FwyΝ;+W^o8/\Mo=ϣCON"gVa*XA3\i,"*KJǻSJBrjK:BP4;>5mqGN[N[KKKo_Dz>W'3';Aw  ٿIPdڣ\a4=-?;E0D`}Ta)%աntgIOwMs]jRe+;vq]\C}ߢd'Ss+(8q1zTRDs[2-8"c<L1?0VJ2]^:^h[ͻM*+:s朾'|/雿ug$-+W~EƼl/L'f)@qW1֧G H$,kJaJ,1d̋d+$cJƼſyE ]x_g* -zkfNWyty{{򼒖NS ;e̯( ߮d]d|?-c^2O'X8)j6r a 0#uwUGh%T3LV1/1/ceߧZs?@l>yl?"Of\g@TTiXh{;(ݑ\sӃ^[7󷴽tc8~;|,6wD l֜IZ|;,:2Kd'dmy^I'?/ccWTX |@6W%U ̮ ֭z tt(+T,KzыBgϞ_gv>^zh+zbrDbVMco*Ysz7ohdkuEԻ|%Apnz;3Q 8`RD]tp|Q 6{S{A{פC[: IJe---…t9=M=Lzlǿv>N"B 6 p?u>^e5$ ]V̒lu!_zR^2=пq`D* PR呭8l=PuO\*lh;V!6yPtyyYNG[[n7TN=$pYC ̏AգEǘT>*zaKQX`E=OzZf"R-$])oauWz'/*mw QnKU*%hTۻNϖ$c.Ș 3|9@QDQ5:sjXsY^o$9xUuKY&H?Sz}xԽ(ZRܫw~;9#X0 QԫHOIy^{eJ_N+BxXS5D@t{REwF˘ )}ωZ0 DpLRY7ZYy0$]Roq DҁEZ]}\E1@GDK*+*+ZZZKY7&O@dǴ;J*/텡mJIӧO:ah򵮂q'YjczUm 0nً.ai➛(UY%vK{{;:};zk^4h0JX^aXX* f(^ǰ$ʙ-{28uNM}sRE7kO<\[Uzwf̋|_ 'e0 zkUJʧKi04LsƌNK[zΜ7ZMj4T"dkH K ! BZ- F<^O6c$cy5G-Vϑw)}to/:ZZ*ܹS:/w/~/ F!Ij9@Xk'֜ɘQ>.zk+=뇦gC:-dqwG%ah]Ƽ/P&-ݜ)P.xHF(z닧 뇺 ZC4efDPr/^O@g#CoT6lq/A¸ M $\Ysk+$ u'3n1||Ò.(E|c?PQimmMjUW^{8԰5I).n$ 7 E{ONz3LW)MϗJ%U*˺p6=~IozB3oǺh`n{<%%Su3O}@҇;)d;eO|\U{<};YJNsٓn0zA|92+QEMY֞\q'N8I7) C#]$M ]:Jl.:=ml\g>RTҟ$넡=ꤏ a)ǎ  eK銌E{3ȂS ?睕$[RTQNDZt۲U+B_ sۦuD&cZkPDZa ]0u;h_ZC<=cy{ܱDG#MwnJw+.i{w;Jg7neD'F(3Λft_ZYILSwN:rnӉq4գ04ivo_'c1FAA-#YV:ԭ]BDžɿIehy*Y&I0i)NUIwwwǞ::4!BưRiqy:<f(\L3&+Ee=cZh<&$T*uӳ^𸶶nvO`l~v?(uJ2}ݲS0ܿTG] %Rw5>=*RJ%eu:mU&Um%Bl7zMuA uAX Ș2DaMzt z_y.;/;Syϻ׾Ehkoo[Rg$xwP}~z)ےb7_?2Ôd̚U5M]r+Sy IT@zFz-NbraTUuY~:6OjsZnhr;8j]%J8 zZN5b&O QcnLVjgg?zNӟWի Mka]f{IPctzw"|PegPO\.̙sz ./g>i=XN3KKR1pr[Y*i!()Jwx-U߯Fヒf7o>Gnml\q*3iqQF ڪ~x;vlؙez=RoPeXqeYRYҙ3ZZZ6h%{&վg] sRĔyCStwZq&ǵNyYJ˪T|ZtOwfKNt%hv I GtECA1QKnx!I=\i]g$)lKKΞ=znn޼'n|V{{;7e>=cdЅR7]>N;$O_`&U{(0&HpkX9Hz 8X-jdh<&;-[RT6@H*%k&'0̰@ԝdcےnv (;>Q4Q4J0SD^cD\iyJv-K?у#`Zjc{A”y`Jyu)_-k?0!v50lɵ(`!}?cnkwVRzCҞd{~<æ׻)N#?w-{nŸKU)ubC[kޓ絻QfJc{gOtz?5.V_ `eCǘΓ$`~C號ahkdwheeq9L p?>js!pn(FOɘWMhǗn$OLaR=FQI%-*IU +Y$Rt:rUIN]PxX&.)P,mDX ,33ʔtAw돦!ӪJa_J ZGtДt%薒tKg_#kt{>Va*BuLc kZYysQ@,̠_tmRiIJ`1jv$,z^T? ͆fQweIq~Dp.>QpU՟PU'ky YWn᧔R/VdQW%7EVת8n q:Yi<Γts,/&Q8jʘw=!*Ӻpv/=ӣ6Άm7#P8;pS] *2^ (!HDƺS zn<т1YG* Gw/1/;~6A ̖y=qKwVi={Q{^K#_VUf+D DqR;ړg$ `fq L(xoXs&w]l G LΘ?{sCwJ]t^/WG?=%:fClty]ҺoLhD17^ /"Zիy+,4d-?StJ);wQKKZT z.I?:Mߐ@Y=9xtcρDQ(,@ `\4gOZa 8H@EHοSwFҒeJeqGviUWT),iwsUL)z28_5N*$OqQ:=J4 IhK;e^Rx >u$gW̒a͙$ MͲz/h<*tIDAT[TT>uDvvTZ&|W#kA`T8 a)@'fj@닃@Jey^%H C;5I:lmA.V/ ݔezUQA%T\ìp=% -a E@sEyBfo+ ?'iI')n+Dah }F$c.W~>N9eX(+6#EѰlb\$-?_%6S> W{azqNDh4TVTrvÚ3bMdN"W~B++.zkJA눺 ԅ[JЗ?A5Ak㣌ZQ SĿ'W=PrLΰ9IM"~ݦ׻ez=0?`8ߥFϔ4[:W!/Uc25k3Î鏙1&ͦR!_rĺS0[htL'WMOOo_)cUÿǙb@VR\Z!>~˞3L%Hkkk3uOwҲJЫ^z{hCװTfeÒJTSd̗˘)/JMzr/e0;Ywrkmp3=_Ha/{>y*zުWꁼv"\) Cc~Eg~V S*[TַkOoHXTÚ3IIز!/J1WBФzS~ym?f=Ʊ2d ( *$M&gFV?M 26rK !*^"TU voɊBK6xDiawglK8~g<~?ґ33><^-׽FSS]s Y?u%Rֱ]ב#G|ߗ@[fBKZC=O~J42AccCP:/} Di [Ra^߫B+F%FqV30ǺMC 㟑n `Uz=}$ rNk:9~I<#* Ce2`DAPSV7mN8oՋ{\vZsI6弐z?>رdd2VR*qhigzΔ=ߕEҏveJ&uu/ye@TMO O}A@j3aVdmv("a( 0P _AZ* }9k+îk.ֳO7G:~I(($T͒>~T> ^뽽jHX04fiZfu49X3*xcjE؟u>3CzA"D< w|,*0 TTVՁRQ; O}ot_zj>M޿?׭~g-Xk*`td@uW $iD0Ԭj*5H|}5AjєGZj `ݲ+>vٱEQcd=VVnF}_ũ %!R Cx }scڴbYөFjDN}F+Jzhf3O^y'?R锤PkehFPY%UFkc(>L馛mcsbD )v5Ԫ kvq= \6;"IT \j4~UG嗿QwٮOGǏP6;h7Ӓ&VW\]yoz֔N2Νwլvա6R>IR>Jq (Cm(S*d2ps]X6X̛NoP __ƍ|@}[L۷'8z8?5uН;| \b<kTԎ\rט͛#;+mrjk:b >rݺh ڮd7dڿa{}@48šhT$M)+@p&)1Pg5[Ӛ6hڿPRjPu8ެRՋ/>W*=[k>#XwL(j:5չ//٬5!hJ4LTF|ںmz=d>v\q)iRǖyovO߮_jb}= I:z9U(>L__/ì?PxLͯ?C}7{j}qYm*u^wlD;v w(vtСGÏX՝y!hVh ժ*9U*ݪ*ڶmv׸ n+-gӂrY 3'&&T*y&''g_|v-{ѣtq9rLGSr"a|3wm}} dpԮӅG/CkJ!g2 ]h QzܮM>m}ό(ΟGuMoֵ^/~D =+yϻկj, A}3+޽kNvjX,\Nh@ԄrUcbbNW,_|\w6]wݶFPz1;v\Q$wV*$E[g(6sbכJXP]^j]TjwjwahںMKEj{?oAp}o|˲~?K!F'|B=58d3ժV+ڭڶmՊ>3g6zy|||Ryi6/mKy֧&#?#IjV&CkL:֖(j2[=m*"Zohll6o~HGtYNe'vbp w&ͫ9P)l@& MJS 4 __ZP{z}<)DK˽fY$;b=޳һ^Q ;ŕDM 0M˼ J͎hÆ1dΩR·"ڕɐ4U08G\6I| Z7v5R/ٺD-]BqIV*oTxUޱn#)meN^z^y^|0h'ϛȔg7VդT>C qZ!jZ%fh*^+ߪQOBΝ-u >ϷN6,wPi(KځaBdpitΞ^z:sWj}O{$Em S%| `usPu@Or5?$M<EiEQJA U eJRT(.a(h篗Tt)e^o%ZLjoW E]nk Es+Ёng+(jer?ӼH5C@;q ?lP:A6m֖-W/ѱc3jTk( S\0Hv^t5IENDB`hkl-5.1.7/Documentation/figures/ghkl-collision.png0000664000175000017500000043731015133711150021172 0ustar00piccapiccaPNG  IHDRtZsBIT|dtEXtSoftwaregnome-screenshot>(tEXtCreation Timemar. 18 nov. 2025 13:34:25r IDATxwtU^IH^i*PD(E+XiRDl "HE@AQ@EzK5@ 'X $$@B>sUHHLd0˿( EDDDDDd΂Elپ,hw?O?xy7mΔO?RL;Z7}S-v'$PZU^W~7n'k\Ç ٻpvrEF|+V;1o/ %x^ڵnɪ?aff¯2#֫o *< fM\y:ul {;>~ Б?q ǿmmHQKLLb]x{q/]N hXNB.\dy櫃173H翼#8fr:"Bx1F/dGnTb߰gzgsss|}Pz$F# b_6..N aaaxڽKKK֫s]W$?/3hۺ%'Nq2t0fg_Wipo)]DDDDD{-̱4m[ZZbaiq۟n701733=J% 碣*0w&8w<ȉxy`?>:)Ϻ-gogGZ58~$q=pujaccs]?6o9ПW^OLlmm&%nׄ"""""rcG~e|+(F?ظ۪[k HUiU*VΞϾ߸םᆱҶlZb4ٳe仾HKKAԪ^,2r/ZC-4bW~\ )4o(lזXڿr ti_||~p1V:vݏ3^y$""""">g+w8Sh[[k HTW hq~w<Na^ԫ]+W'G_`?{Gn&~qqv 7k^OfV&r(H`kayg9kf|5eJ@Y?b9r,sssrxgDfÇIIMe1 %"""""'OQ>0Qo :v*ODDDDDho{Ȍ% SXR֫M&ذea_Wfx ?/﻾~{{oLBRmZ6gnKjA<ooB"D AN CZ5.۴J gN{~aܦ-ax~_˒GDDDDD䶘EDDDDDD m.hP/DDDDDD&@DDDDD#\4ի࠙DDDDD䮧5DDDDDDn?иA]KDDDDDFDDDDDDDDDDDDLbG""""""""""""r5 M-""""""""""""W""""""""""""r5$""""""""""""IDDDDDDDDDDDDrv""""""""""""r5 Bi ;""%_YIIN*PDDDDDDDdw)WO< \=<Sҡ=,)1GCDDDDnI %܃2ӱ)8DDDD&YYې^a=h49}ȱiں-M[xg/|'r}Zdgg3iA za `Ӗ|pA+qVRRRx聎tӾ{boo`<ħ3 /ФQC<+CEe7,0틙Xs"oȓ]:>7ֈ@b>sݾao ގظxF{˔Wc֐0l|Lڽ0дQL#-ٳ/쇽 ,_g1 $$$ѲY~u5ϦLʊg_p!U*bgk~#gJfMӳ{QEzF.{yͫeff2b &%<޵ !g*/]!Ҷu+:uloqalmy2+VFJٰy+iinٜ>dwKظe+4mԀ}&gʵ]gW\85],ZQQ)Cg;Cq/TPIJJU x7|>k LgS&2dH~#Zr:\Pf+S)#ǰt| g}uá#G>5~rN˜mvԿ/.,].`<о-/ˎf̞˼/`4q/bċ oB|BʊOtnxNK.tbضsm[uyoA+^̹bŪOb.?#a<(:{9ʻ&䜧+S'߰ \ƲeN:=Оݺ}+ԺՂа^]^H"""" ;222IIM%++Ӭ^?^GL,Xn͛6’I~dDV-g.Czuˋe?$9]4e**VQ߸[݂ycg2888+$ bffqlٶujckcS`X\]aW.Y{ߤB@O1}}u2^b16.S6UBO1v҇eSdꄱ\'Y_1Ayֹi6*/;gڗ_q T>РnRRSXRF +++ٴ?dؐpwe+xGLpIL1<}-sEroWʕ(PahhӲn7`meņ[dƗTT2:r6ZLj8|富/Џ6mQ5 gjU#:w?y*/>8,>1y R7ήv2<gɌ/ ʗ d͟3Lp~e8x7eҘQp1WGzakkK|BBm\eĘ^'#ʠϳcW͜MPʔj}Ғren_~[~͜{+V~&..8t''|ߗ\7{TGn <#5sMJJ*3x@BgU*U xϾB;K:PǙGdggpTT,ؿo noR|9^x5{; _B\|<u@5yFʠ5g?݃~_}{^sf~K޻<$ @|Beק7ƎgILJ*Hiʼn,X=?0NPRJe|sF\fѠ^lllhѴ1Ղ*p_ZjVFŅF`vX[Y9_:sANJym@oL\\|uߴ4ёUؼߵ1oՒfڵj@Ot!?vvѝh"s4_{{Sb[;EҒƍNS>NةpSNt ?>^t{1=s1ՕNJը[&oKpvrSpؿe\޵ nԬ^>=fuyƘkdsqqvݍgwcɱsd ( Յ]Pf V#1?`G\Z2M5~c ض uhGL#6\]]yCG \(Po/^%SRض3ؔu4nPg''O>rS77"u3>++`~TPw7Wk^7ss0e|ݣ;*%_ D\|\γkѼ_""""R<4nԻnh֔޴K/^'y.ͯ/+SOvttw5?':?-T.W_LϵG'Y'2.) VZ͊U1 x{yx4mԀ+ViѴ1?4jLYv{~S]ԫ]P톟>c {{.Oo|244\ k++""#qvvU6%<ĠϑSGZ5ϿLS8}&fLi$P\ kVgАhܠo4kGCl̊U1t(NK{&>BbRΑvy ߏL%55ՔvlիGrJ v=h䭑ڣYY9n|]͕sΖp24==n횗Bg߁|37~ J;;9}=֕)h2r dcmMʕ9q֔ff;\f/^Qzg,͜sINIn: & IDAT,޻nau.գtڅLxOOr7,w%|EDDDt5DDDD俣Y,-ݝ?f歬߸MO;}h̿֕ZFFYYﷴթt-[4 7M`oJ7ja{{;^E7igZ5C$XӼI#4!oq6|}yc{4oڈݺۣƐE0K?~O&uot]-ߟԴ49zT2үv,,,{7w̙YY7~0r YҿTTaLBH +;,tuXY]ߘ"=#ycE^}Rr2TauXWnQɏ>^ |7fWȞ;?Aݶ-#""""Σ+,iӪ ~}5k (ˎ|;"l9+h7_2;x0/SaHJJ6"%52yNYq3z_,_6mf` `_MrMZ5/l۱+H77,- =~>Ӄv*1o 1M#Oב6l۹+ήWuߒT~e{ uX(E%^s>.b-t؞F D|Buǚoy_ ;]vv6ǎ(/)? o/֮Yuxya49vD}_:, yMUa KK\y9r,ȃi""""Rtԁ$""""$D;vDBB"ǎ#gڷ#9%i_~E\\<ڽ%e*ˑco"m9r4E?,%..ɾTN-Ȩs|,}uSE;G0Z4~P ټu;Cv{}eYq3+WAjZ)))Yzb.^"--acmh;ȱPf[8}Q,'e&8;̯%!![r:Ӽ==nsljzb\5bёF,أ_{ŅB/Z/Cl\{M[s.ӃEK_67v]fCpqv:`~g!yuz3VVV8]\#TXٵ|>u2Ȓe+8q{;*W@Sinٜ.i3gSB9&Y_bx{]w6osssS3f1xx{ѺE3"ݰ^O?Gӿ൷˓=⧟W%;Cv3xԪQQoq]o)Eڵ3bt)N__~T '[mA՗2k5Lʗ \@666y/q'`gӱ) ,SOww222|\_Ղ0qdiz˗c☑^ǰk?jt""""r ͙V[K#82i%J8ӧgEDDDDD@Ej ;v"F[]%),*""""%nfJ6RrE\\Yzbh٬II%"""""Rh:.]$Rԉ$"""R lqqխ8zy~Gzz:U*3qXXh Z{@:Krb޾889cfDDDDJl8y;G|h $)rE@CrbjHDDD233'g9@쥘IDDDDDDDQ9Hc\꿯_zI;KAπ /쳥v|q/-]\Mx\ْEDDDDDDDQI;:{٣+_oUD[ zlȯ|a-[\o|i9:o"љJ: GFM]'"""r133hT'H.%7=ȶCԏ=SJ:{UHNr-~B}-8_R ٟ_*_[qq}^}t {niEDDDDDDDDDN7t-~B}-8_Rn8 [VI/ϭ_ޟ[ZsIk0ܽ.,DDnA@RHH"R=w77)m-Nzujȴ3 ٳs s}hӪ\l\e ɉڵjꠗ&"ro*vRB<1I%=-~-$"v'J:$ .{xak @ü3z cFk<π4nؐテ=Tn1l[ /'OqJpDDPc/]*ձ`DDDDDDD^c4IMI!>"aqrq#|\y@W-R_\f_E0r626/8[}Ԩ^o 5 (k*ŸYՔכfM (ِ_>[ jqnrwqlۍ[fceeMi$"""""""y2 akgB =JUk_EK-HiϫCߢ#seկtXe7i<|(Pг!}nq/yܭB&BeuH *TʚPS :DD4=Z53h\RSSxkkk.mcݺpScB^ffzH /]nKo |[m$%{ 7)+{x)촮#8x#ǎѯoGcd {M֭ ?sO=DTJKO# zuf|1\tA{'¨V5趞a1.G"""""""rK e he3z,ϜɵFӤq#hs_+k O"ΞqƧ~@ 8~"^y 11\epDhj#!.'"XDDDDDDD\Htzw.^Nmn%ʯJ/VPܔ0ҷ3 1o8:8䈥%c/G#ʕc$&%`o z޺{N/"M.|T]0zePbˣn>IOKֶ""[[R@޾v¾Wwjv/)F%/n]R#GGVV)efk}'OP,;‚_.nSo+3>4ȣO5Miw;Fu%%%1g<ݫ7[ON0'ܰ^cيo;& v"RXYY1exNO>3\J~Y+ݺ>=Vwضc'碣o:$W>d*ժQj_Nwv.5-.֐!,{9G0v„bkSDDDDDDD g<ݙ:qBrxԩU)gy|1{4~,*T0e YsGp.:ww֯GrJ IDJWWWi͍ao 5m{{yMݑEDDDDDDe@2jv!)!~U?k~ϕ޴qc6n.?Ǝg;zΉ@ŋJ[z5s/4_ bJ(:)-t7PzIv¾ȭD~aaς-"rlػ?ea}6nb򔩼?v UTaͺu&"""""""7VJ/).^Wu>,YPED6k\5r\tɴo7ﹾjOwH"""""""Rzt""""R^Пm[X'5m›GpQBOv͚;99D"""""""RIDDD? ??1ʕ*q222(DDDDDDD13  CDDDDnҭ;'ǜQFkZjZ'"""""""w/ K++0x!-R_\f_+;}_NnK*mTqUrܷrtjޟ[ZS""E wώg&ZjoDD?8{[@O1~d*W@ ٴe G!"""""""#ii1]=]Aԗ6[|-8uo7*_Xwy+l[-_vKsJD:$ooo2?q2QQ888PNm̜tzظ8>>TZh:CRs1 |ppr.xDDDD㈊/'CPiJDDDDDDDv[7`fkg3I K8,)1;/pDDDDDDDd@ZZ*QgISGH)d&1>訳P!=+NTD8V6dѨDDDDDJ` K++Rqpr&|KDDDDDDDaWoDܥ22K*&)iDDDDDDDؙt""""""""""""RNb|<zbem`(DDDD0Oĩ0+PFXXتHDDD0 XMŪ50s&"""""""R\ IƨpF/YEDDDg1rְ<7_C%"3`Db|<>~eK8$),$ǓTҡ=,R NDDD.b0p$RLI"""""""" J:IN$%&t"""""""r2HOڦdemCFzzI!""""""" 3xuo37s]S?i$''J?} oG||6%5qlQl'h """"3h,0DDDDDDDdWbƍؽg/ٹزmv̕+d7Uprr,0KƎ]<%gRFHLJXh)Sghظek;ChڸQF*""""""""""""wE^~e|)OU m;hִ [m,gڔ]!!t{ ?忬;ӱ];^~ ;f6ּ;-S[_C3iX222WoRiݲ{yy!&NcWHvt{ =?L5`wT ͛IHL3՗9X|);CMVoa1!oТmʲh\32>KZĄ9 i m޲m͛6QpaNzEDDDDDDDDDDDvv 5i:Hi `mmM ٸe ChX>mӚZ5A6iצ Y&deeg~ϟ'T8-5#))+W2՗qsuӓgƍyƷevճvUL.gÿ=ٱaB^BNLDM4@`@Y'!1єh̕/33[ݰiFlܼt*/k_y*4jhJɉBL xX4A33ڵmЪEs,/OgaaAO3},EVV碣9t3mg##1Ԩ^1rxNmcD.ԁ7iw7Ƽ?Ȩ(NpˋxlNJjjݰr4[}h`Atog/zbxGw\\sy};"FҾz=ϦӾӣ zu9 9{&<~,Uзh𣌟!х@233? 33^`#x{_ތ;}'1)Pu?IoB R , ,* " Ev]um?ۊkA*HYD@zBLH#3?2$! x13s {Kij[\[Xl?} )I7G{&0TH}ղewhu_6]TXT_6mҼk\K]+e?Mj2ҋjqYsWR:tu][iԏ@y$8dUNqXdZ]*`LPHXS:ЀHYU`WtlCd2qsp9'0$6ժ#]hҙ; ,jHML&)08D{wnC Ir+:6%d2):6^9] hLTP`Q`pcCTP`qu2Ij#Kdjuu"k$ IDAT@HptL|"##lٲ "0|W?m4l[lu]GVr(Zzt+66V=JJJ*Tiɒ%ڵƏ*X,bq1bD}3335nܸrݫoԖ-[4h 8P[n裏jѢE1c̙+WvK.sAv WP*H6MǏדO>;w*<+((ȡPYYYjժ6m(77WJII)W~vԺ@#Qru+O?-[*//OSLСCpB]ά_QF~FF$)88a{XX$);;[UgZpA=GRy,o8^H͚5Sf$Iz嗵w^M4I_f͚9sh֭?7Qmߞ+IPXXRRRe]V=h<%T+RӧO$=:}t"I:}3ɦ͛СC Ծ}ԱcG{ bcclٲrINNV߾}/B;syΏG#e رCm۶t&cTZZRY,IRVV:$IԩSիW/uU ,ҥKխ[7ڵ.\y)!!AӦMӒ%KԾ}{>_~!ChРAݻ&O\<Ʀ mԭg 4sLY8+7焂CB]$eLrQ$H/=s#Oi& 8.H<ڴiSM$ԷoR'@a6 1?f8И=d2y:T2:e&YVL<R`Z J 9SpHNX{ձI'u0W |{V@VrO|]hLSJ=|P9$ܑjUn >SwuH2}ߢ2R,?*P6͕4za4_??ŷh@f>;rse*&j-fUTL^@HK%/O!Mۼ}db$ͦ"Yv8YAA٤V4R>$5šFUlgP_Lҙ;<=Oxyzz)#-Tx@.V pةN䨠RRj>}Zj5JHfF}\j=p݊CjrCg0tHo}qQ#վmZX6qh݆iެo\ %#ifh$FHp@ &ԻWO?pn@{ 6l`CC)7NRHn0 IhCB]h ̌:eWdte2t;wbZeձT)"C YNd%_&8pS&IAMB{vdNC ԙ҉lEFd2$}tݹUvW;Wu_4.U:7TVsKUǭw~_ﭺn wg2ѱ4PfI*:U `9.{Tم%wd+ƥs@U;{nU]Uխ_۸q) V}4P&Il<b2d @=(/k}q>bZѸhr8ssU9zWk[]}7w93W^t-}ξWsm*]U+nwwCR9VM-~}ݥ{cNH 5\D%j9j;ッkݤnSku¢j <\kw qfM:E&ä:?ƃc[ RuNgtpW9rg_\xW%&vw~ޑmӳ;u{z׵~_E*;8{nZ_9pPo&L_6m7_&.ԯ֛Ȉ///>~F:~=yxx?=uYx֛ZB}8.U^+wmwU\T~JOjj-TfS@`5տm;~#龇Ӄݣ=Zc;+ u+I>zo0z%I&Uw+spʋZTtؙb}] U]wvU$mݾ6iݲV]wN Ϥ{td!lqo̔$(Ho :}}BBBR-u`Σ o@ jO7 Ao]LJRVv>x>S,ՌsTXTismRPUnnX)I$u^yyvwnÏ^t{b)2"B׮UAAPB4GWvmվ][M}:,r<zޗ$)"C 9IGVPJM;o^AAT4},M8YsWYY$_6X$5i,og5}l).6F11j߮Ͼ)Ţ[RXX;wdC|ofSbNjݪ.^~.Y];+j5tU[3:|ȪU{kSIij$uHҥzvm93E"$_'Ĩ`ۅٸ GUU q5*em5|P^UyTϪڸ@  $80PggNP̞^^ U-RnUl}ub*I 9_~Uj:~M]y^CVӨf<;{q)#-E<7Ula l6JdSdW;RfZKPXHy<paWaM#ժ]l3w/&̝G^'i Ptl<=p@e*SN6]CGޮZrkGJHK-WNIAʞ{)yxxHEs^ I$e+Vje5v}kZ˷X?Ed2imR[zᇴj:عK)???Yf]ݵz74ѱ=TW VixSka{`%vVK&}"uTiif5R&N7L23g$iZ~󕛗ݻQ]3*|ݒe+tM~Vקz:vϧÇiђ%=`;9jڷm߯|ʬVuJyz 6qoLra$!H/m/G"$@Hp@ ̒t^ձ[wƁƂw  $8 $@.A?T'ss] P/7_?TiiG] @PkM_P̮w^ݫH}1E[CTVV۩WH&'םee Uϫz(*2RҙGCڵ+I]_6nTʑ#2 uITBM/7* ss)33Sofђ5i$ 8P%<%˖kD]ս$i(+;[}$Iڥ]o(I@}9;=tH6U;$eZ~ef*_}VtT3spJx0|Bڙ$ŢX>WX߼e&'+7/OfEGGwz*_KҹYo&o>.!N?.i:|XAA***Ҧ[t8$)'礊Mu,3S -VQQ]^ZڻkedSpP fze8!Iw/Ţ0 Y^ɇ7[$IMo;|8E>>iTkZn<j׶ŲԺ?@Uv5 Raa~޸QgTiit"'GK-j99ZndtAmڲ"Zuze IDAT fjB~~:WHz||i:Uu׫Lw5#\ro6o٪7nj+uݺ[rۧcjo>G5ֈ0 ^NPmٶM6M^3@Qj6G3fd:ѪeK'9wWc2 Wǖd65t`L&k:rڷkWW]*uvi6mޢ˚7 NY9yR'ssRig|Ʊcv|MOXNXt z6MӾ GKW73gD;tPlLԘ $yxxH"#"$IEEŒ$ժmw(![,*,,t(??ߡ ðoە3w䜔$};oCEŎm^ ~~~j:uPSR$I[|uT>w(sE;#~~~Y tuފ֒etX>s~O1prz 9&IܩЩ38vLM?n&Zh!ɤ)3Z.|m3 #OOOI,{Yɓ  RiiN:oo:j9yRMuy /c[Ј#t>۷o׽ޫ֭[O /خj //\zTRRϖ-[tu)$$D}ѪUʵm6 2D͚5Shh{JRRRdF4F˗/W.]\ѣG5j(EDD(44TCUrr>Όs8qB~"##ձcG}Gս{wjJKK60O>Qdd-[VT~X7NTwT5w3m$jd2iǎz饗}vM:Uyyy2d}$uEs֭[5f=7o^>Zhf̘9shʕ{Հt7j˖-4h[Y| hٲeZxzI,<==eX~FQqAv WQm{-ܢÇk۶m3l0iժU?JJJt뭷:Q՘>ӧտyzzjݺuzsiҤI}O\/~'o߾uj%KԵkW?^ʏ;ӯ &hѢEzTw83wCUmn#;:pL&O$EztI cb1m6#F讻RTTOkƾٳO(55UaHN{O7oj@]np WkhclI&jBc8mTTw uIرzΝ;+ @JLLT=Զm[yzz\y UW]Uaֹ (4Nj޼ye~$cǎJHH%I3g,wȑ#5w\Ig]~~`Xtʼ;zW-[ط߿_qqq T>̙3um?4b>|X۷oΝ;{nvmr///z6 4>>ø(VvZ=OIIRSSo(''GO}4h [~ƍ7ސjg@]n z}v]iidX$IGUxxRSSUZZ*ITddd}qQL6Mwy$)&&Fǎ+OBB/I馛t ȨN0eee)##Csvml=zT999z7_(""B~nf۷OQQQ+O?e˖Ӕ)S4tP-\P_}7+}3*#hڵz%Iz%IN@f`y]Μ]wrFCa護R 0|Jzlϙ9Pץͻ_yPztf-.~# +}DХ;jUjjy=oٷo,V^4 :¶”]n{nn"##._.yRhhRSS5auAzռys-\PԬY3Cjٲ^~e1B&MԩSٳt1-]TS=TPPԘ>3Bu;vW^z>Lcƌј1c$U= i8^@jl PLL^xmݺU-Ⰿ/R;vԑ#GOll-[VdWAAA Ծ}ԱcG0)&&FYj۶233+ÕW^ӧפ wX;xVqq\R{_-ͦ_t5hʕjӦNGy1}X۷a[~~8qB g<; wNw8\JcozHt}[nڵ|IVk8s^ Uqrqt;{;GgHUVV&___ma(VHH (>tv;vΝ;>[jȐ!kڴifϞaÆI*wgϞ=jӦMqرCm۶htUZZLHrrrc]~!|F͛7k׮]5jFm~Z}~miҤI5k?I|||4n83F/VZZ^|EhР3?~x}gڻw>kzꩧ.׈nҡC4vXݻW;C7/ZW5VL&/_.I驻KԊ+O矗as={Nב#G4vXyzz/EhO?TҴqF=ÊW\YbL&N>-9Pi0ta(11Qm۶Uvv\Vg}V;wV^d-YDD-^X7|Zn|P7p>3{;999/տ 2D R޽5yd{y׮]pB͛7O 6m,Yq'PN}v-]T^^^xM:UzR׮]`-]Tݺu G}$0df͚^{Ma(::ZԾ}{ڳgzݻkZ`:u$1}Il6<ڵku)u]O=~mu]y_nݺ);;[Vρh c:++K^{ ШQ$Is&MO>DmڴUPPKj(<<\f:s^ UHij[.8n=wm0͘1C\sM9PW!ɽbd^_^S۷oWݕSH ;/wR|fΜ5kָ4wN˝bX6NG{&]@^z揑(99YӧC֦Mԯ_F%= I%;ժTILtԮWXk"s7?r=3s(Z怔8ƪEFŢ*޾ nSiJI:Q8:\YPT\1s@#F<"ZJ:~HǓ(-uuʙ23UwIOpH*H/ұ:JreEqr( 9f-uE6Hǒ(MuuP@ HC v( NPM:F̥TKNNV޽uwSZt$ٳz7ԴiSyzz*88XgϾfCSN]wݥ1cOHHay~ifϞ-0l}ƌjԨ*U >(ƫW&M3Ͼ?SѪ^|||Թsg8pn̖-[C[Zի|)))zUF 5jH'N3f֬Y "##ua… 2ejԨ. 6M6R@@ 3g؍)ltXVk_s)++1:رcj֬n͜9SիKƏCiĉھ}]7n7ٳgծ];s=ڼyFѣGkԨQ昌 )##ѽ{<?A_>|vޭ^zI/ʠڇG}xDIOݫN:)**J۶mwL׮]u^ZK,QVVtb#<-[(""BںukΟ?mM֭ȑ#5dřc̙7ƍUbEnڼ(WoVM6ոqt<;p=C_5a-_\C56w9}Y-_\sբEj*=N:yNuj׮];$I۷O~Sb-sGUV-Vk ??V8PR!;lWXd5k&///5o\oҥjժuZjU||:w,???իWO|lܸQZ4ion'|FW;wVǎe>^.7vX曪RJ-[(///IҼytqSn$u]җ IDAT۵sN޽[ݺu3WPA]t1c:#n>ahٳ]n\zJJJRbbϢNAƍIjԨdBΟ?{LM4Ѱa$gϞ9r٣H=ڽ{yܺut]wiݺu7o>կ__{o^xAz%"""k?믿]СC/R Ҙ1cc=Zx|_5khݺuSv*+m^|y)##Co飏>RݺuǺut)IҮ]<cǎѣ$=3!22R>VnݺW^;wn;v?O?^_ _|ٳg[oULL^{5UREvb\eݻ+..N4|-ZH'NܧMjٲeJNNրf8}cǎiŊZx7oL ܗKKK\ؕ|}}=FwV M;vP-4l0:uJSNU>}ԧOI֕9r9ԁԮ];ٳGǏ[oen?{ƺ[njܛ_m[ժUsi}{I͛7|SzO˷9KޠA-[n[rr:u{젺k۶mYYY?T^sjΜ9_~YϟW&M$,A(tծ][԰a4n8kĈ?.+u8\9oѻs;wNvVZ-[xYdKyOYj4c _+W־}ԨQ#W*U3 RJJJR``dznnDgpePrGVTT+IիBBBԴiS (TxyyxsԺuk(\)3sjբE̘Έ)nԨʗ/"NA@cܹ!mݺU;vtZ @r$I_4|p(>>^4h ?Ѽy󔒒iӦiٲe o߾:uꔞy?~\YYYZ|YPzjܹJJJ'|bשSfM\RW։'4lذ"Q֤I4i$>|Xsէ~g}VRN+""Bnnnә3giw_6mژs=q&Mm۶i߾}0aw1Ǐ7NSN޽{u!7NsK/М Pn4x`}:v옾kҥUC:x {*>>^cǎ/b^՗_~1cÊ /HʹnXKq)&&Fʕ+C0 +WNC ѐ!Cd0`̋Έ)**J}/_~U5kP\R,t)**J=z͛k.EGG'0 Q@CW׮]ui=;v uj̙Zzx4o<SÆ jfɓ?h-f͚r.\_mڴ7|+W7VZ1cZhMjҥZbBBB|'xB R:uԿlRSLq⫃`ĉ2 Cah9r 0 6loF{QXXBCCtR-]Xlڴ+-^X={[5lPR2P6k4e)22RZb*V(IMMY/3gm۶ر"""ԲeKM<$~\c +=r{_7jܹj׮u}MZjx4$\7"׋j UjjjDٹR~\Jsռy?<\++Z9yåwFM ܤd|PHɓJHH]wUS)ܹsjժUIOpY6mR6md7M6)<<&;;[SNUNdXN:{7xzzjҥrww/.+,,L͛7/iNӻwosSՔSNijذ4i"M:U,ժUS6mJzKkذKzӴnZ5j(i*uHZlYIOU:p}Q@ H0,Y֒*RS\GiB(NW#YYi%= !i\cu&:ʊ:@QQ@r_uILpyVUGWݿHǓ(-uuj;)-5 p9VUiڻs<ǯZpu: g:@Q/ )%鄎9vFbgeU(EFr\GY\( HW8(u:? HC v( $ء;`P@ HC v( $ء;`|IO4II:G.ZL"/jŎGU(+EA+TjroY,4oU)iH*ٹXVHbNg+v""]\9E2$PƩ47Vo_.2X,UUPpceJSJ҉"!uu⊙@-.0Y,R#E:\GiA(nWUKzC*WVfFz%Q(+EE6o԰X,YE:\GiB(NW`P@ HC v\@ ԩS9R… 2ejԨnճgOqT5mڴ \ua>*WlիW7'$$O?5:tH:u.3(/ʈ^M4?>>Ç7kK҆ ԦMyyy) @ ҙ3g6w :V^{5կ__z甕HNߪiӦ7n?go&M/֭[էO 8P/3f駟sJ'Oܹ1׿ m6nnnv322Խ{wIٳgծ];s=ڼyFѣGkԨQE}PjQ({SN˱uU.\իdeeeK.v1|A=#ڲe"""[j۶ܴn:9RC Q\\9fΜ98px mܸQ+VT֭1P4;vLz衇믿j„ Z|j)l8r}zgrr6lؠӧ+((Hv:uꔼ{GՋ/(IzWyf?\p5m4+WNwqFQFgbћowyG93gnݺ3gz8vZUTI PZt){NAÇ5uTڵKwq"=ܣ#GowJ @rRRZZBÇ~yzzneZ%IɓմiSUZU:u/XCժUS W\vO>>>֭;? ճgO+W=ڵkmۿI&*$M6M!!!vٿw^5ln[ddN<Pmرz76syyy][l1+00P^^^y)C_|E1͛nݺٝ+ݻwסC}vܹSwVn*TP.]̘Έ#իWWRRm "NAƍIjԨd$'Ο?{LM4Ѱa$I~~~8q٣{OSL+@۷o wȰ{%i„ V|}}eԩ֬Y#Ţ{W7nTzt)M>];wW_}~X:tPllFȑ#4h\8zߕ_-3\~#r[k׮%I#FP-$tIyf^ʕ=z4ߎ'___%%%f]sb2GRj}X0̟k׮ݻ7Rη/wiС'+ڷo222f>|X;w$|w﮸8IR@@ ͞=[zbbbkJ*ۊj,9}cǎiŊZx7oL ܗKKK\ؕ|}}-dFwV M;vP-4l0:uJSNU>}ԧOI֕9r]vڳgƏz]zհaC=Z۷ofrʩRJwU͵iӦ<7C[̙3ըQ#>|\2tϟWnT|y޽76ߵb s- 4s={5gk۶mYYY?T^.ŕ:K]iΝ;'OOOmVR˖- ?ys>LW˹0 yyy?fjUvvujξjHYC]>x222ԠAٱc5' 6]pww73HHRSStzxx~f7DddfϞm7fڵk1###`egg>sկ__jܸgV-ZdtF MtFT|y%'')w ::t;vhΝCi֭رbR1 HEÇWLL&___M8QGƍ믿}vOwVbbnݺYmҤIJMMբE4c 4HTfM͞=[wo#Fh„ ںu>5k'P=E~V\)ŢϛΜ9?X>lGU߾}?ȑ#Zn{1użԸq4uTݻWҸq4gK'NhҤIڶmۧ &y'*(K:t蠃jڻw5vX/EX}3f>8͟?_/E$bbb~\R:t Pr4d 2DK,ͼ(GiҤI:|~OjRfʝ+ :=zhڵkO_"pF @rBI_]vӧOk֬Q+_1jӦ^룏>2֭[kΜ9 ȑ#pBu]zK*TPHH}Q[[ITT ÐaJJJRe%I7_G}TwqyPJMMʗٳUZ5k.cSO^zzꩧԾ}{͘1_V-͘1C-ZPӦMtRX(xL] IDATB!!!$-\PڴioF+W_ 7'5rH!IRÆ 7hϞ= Shh.]K$5mT_}/^`͞=[~ٙxIl6լYSTR%]VOVhh^z%3F111QFW_UHHzj~aΈSAO=4e)22RZb*V(ܹ}s@fΜm۪cǎP˖-5yds3bdlq-$ 33Sl/=3gްy] ?FFy~(yU)iHr5g]!ׯf Ujj5vrr\}=_4k r5%p:edt ۴iKz@ٴiڴiS&G9WV!p{VPPPIO(1aaaj޼yIOp( [br=\pe7!v1 Dլ$菉U'lR4IjNy( 9XdZKzCV KNmr 8p]v6룸pj<<++=-8$=-Ut,҄\GYQ\_ܙ"Q~wF$UבgZu$1A~t<҂\GYQ\_V.G! 7# H&O*ڻsRcZ;ӫ|)WGpV'LGkN#&alq-$uIϣTHI:G.B EW)u*reEar}̟~S2eg!A}':ٹn# %IKx_52\GYAU$l'>Pj)uv $.Ӫcl'H(U( pQܙ-]w-vЍR&+DƢ }T{$mXvZ"\$xQqGdK+;H̱܂ЏKӋ\9G9E>wT8D Pf:Rǥ,$]m:[B=Pʗ(I_ΐ܍6"r>cqY#2:eGu2/$0.>ۍJ3 H2ˑ#q#k㲫/koM$}G P&lVpţ:{$ m\o!&)oM݁J@ 6,?'Ðl2rvW96y].tϦΙ0De#Gvqxd˭]á)$L;S6~}qKRvTвvyòvp%t BJ %?̌t٬֒`2,yxV_uU+vJ! 7@rj[(5,lVk%Q(+K tU͐12dt2dx_#CpXy^Gp$\G\=Ԯ}_gIrdf&5H:nLrt#z pSZU86$id3d\Dt^G_oţ\t#z pӺZ 3tHu I~٬%V<ܖf}$8Hֵ}tu .; [6H66d rs# M[ϟnBo)D$MiU:rt]βuqY!)q9k]ťGvymٲE ֭[1>/_sjѢEZj|Iƀi%=Bۻw:uꤨ(m۶-1]vՅ zj-YDYYYҥ]rrϟW۶muiȑ2d1Έq\oմiS7NǏϳرc C=_U&L5tPs 'Oɓ%= (Z̻řG((\nTϟ^/T]*KN! 75ʗ)316iCCCկ_?=Ӆ>633S9 ?ZQppbccիW/IRVV֭#GgϞy0@1c-**J*Uuaխ[Wvw!I_u=h߾}۝f*>%= IΙK_--Vr fQժrv̟~+"l<kg}O2,23.[NKҾk84ݦ2s~T$YmW< ]8#ɐΞ ֿ (d7t;#FH^~eƪGV4h?8q}BBBp%DsN޽[ݺu3UPA]t_|1S矫q=)g`-Yi1g;v|MUR%^^^rwwז-]W``$W7ouf~${:t萶oй˗gϞvqի+))IxKVQ΀Bv`>$kd͒0̇Ir2.v&y֔ܽr:љWS&M4l0sᆱ9sW_}}N:z1ׯ׬Yh=Z`j$$$ZjE\AAA?s挒|;((HiiiJOOWBBB RbbSb7~m=t-hO%9v^T\n_BB]G$[*W\3bljժ"""ԲeKˊΝ;O }Ԫ٬l9]H˺dlmt 3kϻњX*b]ȒQBNgR[.;6~IR?Gs'%Yd> eu) l6 8PZxݾo淣{쩵k*..ή4uT4ѣv]*)))+)gb:#FY}W#6+߈\o{ڵk5|pI҈#ԢE IW qV9wi-GlnFm矗$-YDl\}jݕoyeU$n(s~SbQnuj0E!G]+ϟnbM2 Id/&I,&0ʛ$?+Bqr[HC}B:+.KM6M~.\(www}ժU+ݻcq=JNNγ=--M5j] yWrE*(3b7ӧ@;vL+Vŋռyseff:Wr<)pF M;vP-4l0:uJSNU>}ԧOI|6PRv6c{aP]gm.9K 0r]eMR97wYϥ<Ο&Ú-˖s<.>?yҨq g}fnZZhv1={ݶ ;t;vhΝCi֭رbl##IJMMS PnrJZ`mׯ`Mg@ٔ_N7jH˗Wrr2 XB膺ǝfRw\s|$Zd(nK.-*.M$]8 2.v&]i͖0.u&3I^2j63 &s] HEÇWLLM4IZhf̘A]i\wʕӐ!C4d-YD  777ʕ+eXtyIRllK3FV\\ϟ^xAṚԣGm޼YvRttx Έ(:t5`ݻW;v~uA9mZeXKq)&&Fʕ+C0 Mg@>H&MÇ/_~U5kg%To__(xErnSD*fŽud΋_jOSΏFN!)"ҥ |kN)nt!K%bp1~Iu+ IСCuk׮:} P֭5ghȑZp95j^}U(99YWV 97$MMMʗY1iӦꫯxbkoհaC3̙3նm[uQjٲ&OlwF Y&N(LΟ?_#Ga$5lP|٣0jҥZtnIɓ'eTfMIRJvZ>}Zz饗4fĘ*tF ܜ̜NJJRe%IO=4e)22RZb*V(JJ_j϶rZD_YKx[͟sjHwG_QHn[ʷ2KlLt&Es.gvY1(TþO1 16vc{/ѣ9s y>gټ5g{=H A@X(.(Ġ'"tWQuWt=ub @9f1G}TIx?row*Nw￟7ں= `|ehi۶m~tvvf]7mOxDxXݳ[NC w!LșUs#ͿL E&sJy=[ J!Һh[  (}#C`ÃPP?䌻Ny%W+""""Rk2rqǔyf֬Ys!2m޼s9gJG29wwӴ{`sr4#gEX\Ae11F˘y`J'i;aPr"A,19da|~#Xs g~LgmtrbF k׮eѢE{"իyp!2fADD؉I=u]^sx`,L(EZ2JFJI&.)6JoY0k%᝿IٛcC*aq''LZD4Lj`/`zg^nZe\SdqOsG#"""Sc`"{ @DDD7ȍcZ[$ AXG5!`!RlbI% 0p%`PPLw)LTwU l8Na`bIق#HL[DDDhSöm|>HNmc^ս.u*FsHN޼Gn ״v<xu7|)kɔvʁYX/U$Y)ϣH=Hr$A"K(}/ۂ)0_;?;Rl~g|NLrG%x7{T)vwR]["Sow'#:WL$eͽ."" `:_lbhG 3F*D Lt=Ij$=H)$.4U>l`Tχ mq'LŠd*1(լiu|>u{GՅ l篾/*D1) gڲZ}[]5۶imY#:_Le.""#sӴ]EDOvRؼpvxdJ>oIAd'6]ȃj `pgD.<~~tFEzIC]PX(tW& $ akvL :ܴjw{t8$Ew)o|ڟW/a]WDDD$Hyk@/<􁣌;mIk>*k6~tx{]EDdtn<+Gn Ō$:ڎv^mY>4L5&2^JLù׷<1xVᎣ=4"S4hӽ[15х|[ IDATVcRĦs,ѓUJk!;W:PZXO}|E0WTG8Y` dۘѡΚKv 8IƆ0iC:3 ߟkǯH;}v DDDdZCH""""$$/?Er`Ky)HJGǾHXvVZ#LN-}ͤPeib˟R 2&*f`:T,a0U<.`q!LbYL_UʌrHTT]+*kZ)HIDDDFF$IDdښcZ;Լaӽ[1 +@ p=FmF^)Sϰ*>f {ǙÊGaY>g|Li=xII6:0Ɔ,_{~K~Ӗ nY(v<1'D A7Cd,p߷/("""A,@҂"""""""GXh^yG_so}Y6l'p1ƹJt1SjkqIarxz]t&p6{iw6 !R#b #.`?vc}/Z|VPUXUTU1 _t|3V''OZSX*C@;4R:/\v""""S*DDDD&0U L MnT6A>rU"%s8]ZIGzFj׌k}BWERk#Xcm#6n1@:%S k/^fٳk/gF+UH*W#7w߭QMc%}oz_\DDD$E8CDDDDDDdҋU"łL%݊) vʢ "cs,0CDQt3џ \}d/1?Ba gBVkk3qEX%InSUT69ka僢J`s 1VASd,_l< :Rbճ;c\rD?݇<ʴ:U>ǿx"Ȱh ;c$״v&@{ 0$u*;1]|:;הvILljib\SyYRh+TCΝ > ˰ JDz£Xde+2ձZUmv.?C0NL{י.Lu+nXeXey7ie>\Gӏϟ^<#´7x;IDDD$_NDDDdv""v݊k)ۊ1욺.vL2ܕNxn顆/ySR³?y 3І1',G~,! Q_@̙c6|EP!瀿ʦGT&+p Zd'苲p:cF@݇;瞮.i~U"H6NDDDDDD8[yCRt)NQZ'D%Us08C,؈m^liSخi/&:^b$D3\A+]m~8B\Q)X>,hx S[@WNi0`ͼ0@JG+ˇI&8ca> l<γ߀7"U];~{}d $ LH""},w(wBhp }W"Ǭ~yU$Iݕx)GzN%,s*DDDD&0U L{~>1:!$d|>,OASYؓelSٹ+H>Q(C䊤Twp^x_i=VJjKCaYW0}z!;>: )d:~L,a5G# 4C Wlj¥ሽo .gv DDD$IWNDDDDDDDd\z`+$Y`;ɉ6a``%T\N"<6?M442}I:ۛHL܏w%k` ێ`y;G &`clAo3 aN *fC|nl#=OL!'HrO+E oL% DDDDDDD&Wv£Xd" Q=g13O#D,%Rz:6 )Yi(Nf@^ Cn~ ‘%eK#<:C@Ii 6e?h¥,i3KseW$"""S#nc{8"qGyE% gQ0m^JLc}v|C8! @qU4_160S^^Nh(ǎ.r%C{-ԩSAt\SE.D_soFsPthP Bn:#(oJ>ixtzvC Y:e;]fM=Vtu埿|+"""<}nf56QY]cJ9;;;Xlۦ֖} 8{}|ҽн>^w.""{Wޗ?ԕ"Eŏ Gc^ٱ(%TJ |Ol#BF&~$%P^AR Kgf0@`S}4x|~n:/o~ OOuY![iCS$Zg >FGrڌ6 ?@!8iY:ڎ͢+ׇ2|>kYt}=tQ?eӽ.SX""2/:ٙ"D`")B0@_q9eQvk2/TvI#Ng.V{:c\}8mҧyH믬,QN4n:7Moo_'&@3tp#] 6{3 5pBNDDDOvYMQ=Ǭ&{U.eн.Shu֮Ki1D%)D (.p7m\2^b4L-/U{)ߗ"(" %HՔl3ՔWNo2#HJ \ARn+d8\s?#`^C^K~&g.,J>oԥODDDDDDD&Nكw/H&"a"!H=}US>k R ))5rWC)AqW$%d| irU~@;vCmNgkSg\cv-[}d%!eo'~džw]4 DDDDDDDdl]NgGq" D>*)fsvԦX>.vܲɈE4 u%/rCqӲGwDC錌5[adCsJ?ʆ"giF6aL@֮ڇ?HC0 . GYNRGQY3Ob(tM^vG%0sW*ūG%c {2*CiuV7ru#+WωoQy\:W(w!egrU_}4VΊ.vDUH"""S$Ij}D >nHY)&` yP@i9V)֯_oX!#3?\}k>|8CXf ^x!۷o[=Oo EWWH>gJ:k"C嬓SR3 T9͍'O0 eCZ2gfhpy]uU??߿/`o'Ν;9餓Ƥɠں= `l@{pTg㔖k׿n-~^~e-Z}7oTUU弧S?哟$vw箻;W_9}+׽{Ú5kx׻u]̙3o[n7-[nv£QY;Fu{누 uv EX?X> "!lbg%08_I $ `wX%iY,y&9`T4,X\NxS2$4_^ma) Lrɳ ;o #2yG6?ۺS[Y|-DDDdk -@ |ӟf޼y455| ꫯ~UVQQQ9s?mSSSWVXAUU_~9{C'pӦM[oDQ3s5\Ccc#Mo/˘q^x^z%wqW_￟w]Ix_X"eXt)eC7p>}:mmm$k..] woY27G@3δv0 ƶ B :;(lD@SZUZv0G%Rʤʦc߲Dk7lLck/}s+O?^N%RG5R߅*+.֢e &HX^ $vIH~~c/("""^^ҧ>)~a~_#뮻x7wnx ~i&vYx1O=?w}7s袋x'ӟ 'W^}1mڴ1-J`1fppoy/Znz{{ٷoc}E"Raa!ʍ7/O~@~/Ry ҒͱC:/3=úuXn """2=٩,t*=N ``(D 0Dai%XHNxTb,%~tPjz)|1uLV3urx!*\ܻzvAPH[fniݻ%,pOcGeт';Yd/yqam7J.ѝKU#L.9+BHH$7醴f|+_a۶m-8kpٲe k֬nn.mꠣ޽۳򩪪Jvɲe˒SVVFcc#v9x IDATݻ9ǤlƳT0||+_᪫⦛n*UVrJ>яw16ԿwʣQDDNm/$0 ŵNTTgD0K*IKI!{?fD>H,8(PVdȐh8_<'yGCJy%H6'dH~D=E8\fYH&ĸ7[(HuF'"""H N: ˲ظqc|{]P(rsgPSSo~~gzj֭[Ǽy())9&]bs'?I|m+K.R~%o%׿^x!~|޽8_uU\}lٲ_|ks},9V.7+®];ٴiSC\m|>yZ xxG[',X!SUW]oi&ĩ """2afJ|}g4Dg@`0 ^yA9 `'@vhw"5yEN~>m% yd_ܘx.jy#֫H׃3Ij]m1c]^*yoG د IDDd |ooxy'6OpB>OO|F=momo{V ?R>/OӬZvq 83\w׿fҥG?'preqsgaÆCdu]XeYg?oDz,fr _x1yYz5~:> > ˗/r]]]c9s&eee< p};뮻.>\7Ǣ=\eY\s5;g},ZK/~?RZZ wL\/}hD L$1m ?X~j߲;>1P&7kok_zO]sad|}XQGG{v"eJ۽y_K-*1'LIIDDd6 j=8x gf``MwH}pbS= Dv˪\?$ODX ^z%~_/̧?i>OMk׮o<V^׿= 1 """2QWԕ~mC9%!؋/PPTJ6>ʂ!}EtAuB_+ =$~4S(Գ "}z>NwdUm^W |j{:PVTٗC@ޜU\XiO"se FDDD._ٳgs饗uMg}63f8/^ҥK0Dƌ~7D,+D `"AH#E}ELcWX_<>EiJ(h4Meg"ؖ\;c̿1e8*TQ^3xpzΝk"UB_-G`Ap4ų,:cca]xI/:꣘U6^!5]^IDDd"(>{""""""""NmMvlg-[X $4v$-<Hk35`D(RDw$Q2w.f㩓e 7Co3WOsʺŪb-z/Q[IEE9}C`(qdnˀl8Gmw3+k/k'1W1>9FL=; Ύ@'^Wq%ď~E YPQ `AJz8񒹜xܴxqb_uAKYuQGKu5wN3-fahɌ*N; SXLw B093hWԳpcw咮;G1NE}oeYN_ )EH"""$Nk]Ur' 0&/w%j̉+8a ,`p%N=OK;D+< ;Z ۏAxi\ĂKfVǃ#A m?Kx#}SB+# DDDƳ,۶g6U2^b4Zm YzJÂy\jp~b'6Gǜk?ͬFhm'‘}쬖1 a*f.Vd&98bsӮ^\p/:ԯ;g{E.%̲6R4uGKSUQQ^No !,g0DEq4;>&qGsoDw 塼NkPDr2wCe"ѽ.ShuoMd`'|GQJ"_hvitj̯5#uK>ߟYpJbY,!zA* b"^S_j]yo[nOP2H# RDDD Hyk@/<􁣌;mIk>*k6~tx{]EDDDun/ I>j\EZ οˬ!/s3Ժs Xcv<&sx4(%׺jhpt(@_&&T9E"ct~ws[d7;ϪNȴGvA~trͶ^_R;(ѺikHyjw"mG8ԺvS'^9~,Jje<ӽ.SX"""cYD>)Aqs=&bTdh T$""2N(@l|05LI$>FX kemmN7NjS{'6;LJaFi/wxT^8^ !RjgxQ}4ܱɕg8;+:u"""V R2w n]ßwlzE۟; P{e}t8٧t,x%Gc,U抣SUr~֮Jډ $\`;Qe}ºD@)L'e;G7pI@17|wɟ%\c9&1Twib\HyE~g =W\xYI{FGr=FCddV(!# r~;m 7CO) "Z{xGcfD7FtyGDDd2P$"""""""JJ[Ib+*+mc~B"'1c%RŽUHÙ.qFiyI%E`YtɌ,dƢ OgT%=q䚮xKTՏVױ~PI""21)@4N`̮wQ:D:)o0 ȐEUQQRLEIШ(Ds{;xe[,t$>O$ƕ~+Ir.hVCQMˠi*DDddcR}4 pi_ğTૃ7Uqi1C9n{dnMgG h0XإȳU_ ~ 6Y| \j& \>ظꮬ/7twvP][w߱ضMow'-qމ#K{ݡ{}ӽ{]DDx: JJK ܉C8œ0lrZQgArpb3ݧ[ӿ |=\|"-+g{=ȱUO^U}4ȫ($iY:ڎ͢+ׇ2|>kYt}=tQ?eӽ.SX"""cʂH~0cH U5[J$"">1CVf56F|>h;:uD{]"""GˣH4߰8&[ಀVTTR"%3aPI6GÑށxp.y[3Z%v ~x4FG1R^ﰃ#H;eI3h,B$I""2蓳cl2^b4XK-y׽2ÈV'II ̯<~pwC=4ۜ Йy\;itR}y|_+v]'0:5@GS<<:V陈,E7JRc3TJH v:9:/xfK"h* Mڗ-c3 1IDDDDDDD\5uXv݇Hrq m[$k`u(G.92IuFyc ikﱉ7 DDDDDDDdTvFV2&X8y(]PB IDATc!9])'z>ǐOx~$l݈n.u<0G5͏;e ZT}$""@!, !AqHѥ^ۻYVP`(@p}5rw" ȸ7`O K#5oN#UU2g6B )$BHUA@PQw aGw'XQOQTzI@HH=ɖmd7yknfy$0>jeqtZ@D-ʒmo+Xq`EGe>ўI,8G]Z-@ 8w]˗pZMcc#}1ሊ]w݅K.+))ٳd,Yj:/2zx/`РAf˘5ko&m/1tPcʔ)qytejm۶Y?pƌgAmmIGnODDDDV2FIё`>m8I ɴ nϹ5a=$'{Wݕ-\]?((8ja#P G }tX#""d[m6ƺ{6T*8q ,DZrJTTT`ԩRFcBVc޽Xp!^x|G>ؼy3֮]o;v}'OOOM7݄[oGI0qD=zԥ}P?qOa8,==ӦM̙3q16wqZ-v܉7ӧO7Ñў5k੧‚ pAcԨQM~WAk}˖-ȵPVVa0K[M#| ơV1/z(?YxgcuX.Hq]DDD."ڿKr(w\__???ddd{6:=z!{AnnvÑELL ֮],Y-¹sRx999HLLӧѣGɓ'1`={ݻw?*\R:n̙g}>ڃ{\3 ?njQ?^-=g?}Y<ӧI3gΠW^,t qz_~?>|A@CCpB<.飭Z׺(8q".̝;111Xf ƍ'O#;;[ZyʕÇN[^wҮuCxԡCc=|`<'?%FClQ<8 ڬ1gGnr @/Ò u w˨Iٻ !FwDBoח>hR;%""rFtYFK/]"!!O?m槟~d[nAFFl_㑗Zd1n8DFF"<<3f@~~^!((N֭Ì3p]wŋ8~~-(d7n뮻Lw߹"{-Z׿*?$$8r䈴-##  hԩSHKKÌ͟4ӥ>]]yA͛\ƢPTTli[FFN];m{ݞ>ltnV JUF{e'W+G6))JZ;ơ*G-)q4<*LIgZJ6#aQ+3,@zyf|wؾ};M?*f[Xf 0p@~,սuVĠ'Ob8v֯_guKhNJٳ=>~ʲTwdd$Ln>ȵ^z!;;(**hӫW/%}Zkz ,oVG[?WYYYرPisEtu9r$&M#F3<}_n""""{ִnOִ >gϞ5i[YY"$$$Xm۶YlĨQ`={V2쏈@@@KRyRX 1#(m;v#l_BE?7;v@^rJ̛7UCCJJJP\\,X7isE̓*ӵn7|3gģ> x1d <ӟеVm^yudsg20HߏڌK*zA{nih 68occ_}͛ɓ'K {J9___L|ٳັɓ'ĉ8uy/ѣ:uիM믥}EccÞJKK!x DϞ=jGG[?WDBB+iN7|#>$wM'''N];m{ݞ>Y?cvD-֞./4Mq4 "m{9G:ڗY ޢ1a#X6d}S~rYяmWO]0Dh[ `i4 :. q}ï\/1iK//ŋQ]] OAGFF"33S P\\O`HKKO~ٳg裏⧟~Bff&222;ý ={6j5Νc?>^z%1c~13gÇqi̚5 {[o|GX~=?"W[u|zC=C Ԗ! _Vգ?Tjw׼1M;{2Ȳ禭S[i35iOdВj!c->2P}!gWRuH"""ǹ$@{7x#n6tMCbbԨQ#66{ڵkӟ_b7cHNNFyy9^}U`Ȑ!ꫯSNz N ADD{9 0Çǖ-[e 8={Cşg[;wOii)bbb?s;SNŤI0b,]\1z)S[nk&VmADDD)grZM)ZCÌl$9"-Qlgoxdc!c.TZ~ۿ.3Mj"W#<EG)7ڒph.qw݃pn{kbܸqz+Myi B= 5gٶ֝uq :W]J<򤱴k/֭[g2+yIcv>| ŪSjHDDtbGhOfv4b zLwZia/^!M⽩#+Lk~^e{Rсvs4<2J4yA0=G쯔O-,~|[ϙ~UM'd6n>8rvFn.@"eff#GtP<֡C0f̘2<+ӡC0qDw! C']IɑJ$Cx4ˁ4Wc )=wUNv06L*$Q%95TBl Dn͕HmYTY+9j+ow lڴ  Ǻ1l0we~aՂA!M=2es\F۠zJ$7oߢQX O!""r+<@ǎ1fwȣ%%%_~ˌ5 ݾ.@Hyu$;vXWl }xuNvV9N؞jgRc*$GR~REn2DY _Z\}d8o1MCN@9p] M(N&fǑIq[& tZGY i:VS *M;{Tlآ&GA0WiyYD2{0gH1x"""vDDDDDDDd×CP٠4!3P ȌSq:;C{jh^&)e u80g0 [2eq؜\}$>uh ."Z<1!7: oRR;#""r+ȪrӧM@*GGZθʼ'}lV^v{R6)L,QkWFGZ(84r_BxzG04vRO @TN)1SZ) APӹ`"{t:*~yS{k-։\aŀ_ : : :y_%{VC$C{{ڙV}dV#lG㧲%܈̗GZGQ[gOhrv ~d>HDDx7A,/u0RY^ aXk^thɵNDD f<@A@A Z3G;4hPh$"%ǮCB\45kgcaa-$>l,13H""VSP^Zqt:K~BBѩ~xNW W]DDD46 @EJ 7üu!D-")8 n~jZAZGJxdrxdZudRdV}RPJ!@ެı&屢I^keQDbD%Q?WW ~\UN60H"""Wvڋ.PRT?7Ƀ*⛌ɓZ+u"""G}TR{)Ĩ(讂OGT @v^ ѮA 76ߠ1Hjig]5H`q6fi=c=6+~>cmLcԇh܈#;&]xՂ:y ':APلExXppG7lW@`pdT|  ~ V46#3)k-VpdIlp#i & q=t|EDDJ*AL<#""WT5 KDP/-W2 Ԫ懷 س4_icYudwxrF@R$lq*<굫6OKg3}x{,DDDD䀜CiqBDDW;N}ϱzGFk(5J":A;H0]]c WfY~v\ruѕd*댒{e#"+v"""""""8;7 ʁ*?S5QΤᑣuC5R-[:U1GwF$=9 ""jM&Hy9Y@XdGw_?JDQDC}*+s1A!!\ZEvj,}G20xNN+nsVm DAdY IDAT3??9^^o$,g#{Ƭu*ZxF6e wObGF95ݪGDDʤ 23V{~ < 󇯟?#s Y\Z"{k^"s*B(< ]$|HZfrJ]ixPKù~yQ zhCGjb;3<""""` 63jd{8DDt_)y=e}:;Ng7? 񃷷=W^UK< ‹K 3ڡ窎LsTu5MM&xʼ 2wO>bGFhL]d>UmM5**bPUQښjwpSym|23jo \bJE_ g#D+9+#nc5,j5kϡrODD.bEvdQ;"";C!"+yх3d-,F)D21? W>?sM}G-B_D#k:1mo?xE}Z#8KpuX$';諏:ޢX}DDDmEU]UwJwBz9KX !X{i ҶU+ϢMkGx?7=AF{\U<&""jT(N_WT\7n;ga¾OSfξA\]iAȻ!DDFj-$Cc\\_Eb!d5E"DQ(WYekm76666Acc#y5|v5\ ꅠ {]'76l=bzj$"""""""qTtR;c kxr),)3>2O, :wY;{3{˖E#,5^ s[9@>pueOfFfn& ]%F^#stdymLM;K99X|)aan r{6?'K.AD|wMBO lY8@>)-_`<ُeolԘ|- dٲh4/Ļ͎ @lwT0 C'ǪomHz*X?B~ Y%ydҖN[d4jhhh@^~>:u=Pifa@d<ǧ# hmϾ2OƽgϿc'N؉X╿q7)p0eҭYYxqt*""qǴRØ#qpl:?>.eg[N I{JAլo?o.j?027sfIVzkcd*;;ci@N0^~1@d=XʉlF曮JyDDte MBnS;#cG6V+ >Oq>36>$7_ǣO>[nۧ&ۦ<>qq,|mbIr|r,` :b'⥿߮]Xzt+>FA֥lGDDDDDDDl RG:3fdHxOzn\}ؿFm C$ϝ?Hty_n; +4رwW_$zpcvYʜQ&=>>>xwfz|rq,Ξ=_~ޭ/i3{q1rݶ݀}ƎAveY u AIsf q);"'2~;"##1ѭ2V""""""F2-BiµOZ,JJ_|5icY(]*j^~1̙]t{ooz2DxxPy ~l48'FQ cxDDDX*{gݍY3g`ϾXv=|q|PhѧW/ŬK6،ܷɶǟ~ NJV076&~~՗Vϸ}66m L?Loo+4⣭=K%j44yXBkZᶅ(GS`˪A;;aVS:7iS'X-7DM>6ooo= F܀Y=m;v1ijR5wVؗihhFkZ o/o)t>YBC[46""""""RߔF|B2Nϕ_3o|QF` S^S1Z1h>P}Kk>JD٧/ Rs^tǴqNe.ɇTxiaє].BdD$|}|@1!N3g0ɲ!RINgIS;];wơG<*Mg xGc朹8oÄADDDDDDt0<[҈ >hL {>jl4>j\}$@Zh ﳕ?}srpd ?uyGDDDTrO>w~ssq);?[3gp1mN[ΠbuuC_UE&nسo?8hr討صg/kPWWo1ۧކiX3ȱ9v߄YYhllD ! h4glsT3|`^e\}dξxy+2Ki45omg2N+z=EӇ'cy `cbI{aɿE <./ î^Pߤ>y 1^ 8/Y| ,]  n29܏/Ly'ΞmSl,;ϒjZuŸ~#on׋t8~>]9KJyM?+}:7sl*!5ǻEhPXX@`` "DѲ8@WTMH1 6ԏMPEV6&PŽH" 8V}p>D.pbtqx>o(+=Gaa5 7J\r?4rCFL7ig%Vay\Ȍ/ lqh\큠?8O@EPY ;Ò%uxlݚ Y*x:[q GɅS)GmX)<$"""""""j*rjPSbৡV>y+Q 1QQTV"VjĒ%uعRH+U>?:* 82٢~[\P1yox.}vXڥG޹w{v^ ?""""8{rf> oqk'b m ྐྵQN s:lZ 8v{b-wbKwmGvv|Ѣ"@׿1o>ŀm_(•SYuaLsONW5u/Bl <@"""""""e%{LIR[P̚V'#Ua"M+-!=џDy>>ĉiHNN4Q>̆|=f!R+Gp^\0}y!y(NaGDDDDDDDҴe>SZ KJ jJ\P̞…g _}'NH)Oznv:+9՟R#Ɠ7B'}6G?uVcDDDDDDDD& K^5 !¼I0%%s0A lq{Ax#^y,ﯕmwSYVΩzvhvF\ѷhagDDDS]D\vdY~8DکS͝`4][C!ZjbE1X:CqѮ]\k*lm;'oobFl:VQ{ $"""""""jfƽ1{d-NV*6X ֙U4iYpf Vzakk,(Q42e\ItgﲩUR+[3\ø}wǎ/4X ,t>eaۺV5GB$kLB"[ gZa9胤`-4 5!>+B$G&uض" Sԩg琪4u. 6;8 ^RFGҖ]0@"vaa 7g$ϲe(.j]ԷU}[irA|EH]҇H2փ#?E3KBvZd =w72/\(ܷuK}_P@91ObYeeex /b[0 97 U_toQ\\?LĮ]!"=FX!蜐@?E~øS(.)AdDƌ 8ں:t7JGyee%8ܼ|xyy[bW\7tTqR6*++ IOc<ں::tQ]S??t떈a^ //O{y:=&&+,*|G|f&Ç#:: O?]:wF3hhGn1aPT(*.#GQPPza`[yN+5|gHuuu菤>}LCٳ(.)ADx8ƌ'yyy{qw.\̂z#ǎavSQZZ Vp\0DG_Ǖ7 O];wu oK * 4$Oy0~j5|}-\o`@r?08wJBC>y /FCJC6iCW|8lՇXv]rˊ[3wx2g;3M_, kzP;Z)rmXovUK!}4-GDDԾRj\Bǚ؈b_ӵ=W$Į]{ïJx?!7/O:Na˶_ au8~$hp:5MZl؈:S8o"lڼe刏Cyy9ΤKŬ,[>:v9VoKvA ** _Ł_EDx8'Nz!:: 񨮮Ǝ]ӆy8rʪ*ܽ/f/o//;vہmw 5 F9tϵ}IOLr|ε:٣\|ő>]97ٝlxdYQkGDDDC =sۡC8tv[njzaa2,;'ǎ@dD_7 PU]өi OJBjܽG O5Z3ߎ;[˹HgQSSaCŐA "Vyp;qpѷOh4,tt.Z9ėkB֥Kz5m󆹈n ǔɓv4IOA6Ӧ܆(TVUaWkq:5ïN0viرs.eg#>._G{ͼc:T*2Ν_Sҥ{n0&h4 Apݣ&p"0}TT*ugfJm2 ,}ˎH?{ҹt-HHGظ⮙3 vًөk K?rq)͑c "Ə 1ӻk&AD! "B~} """xfH1M5Y^3٦5X*tO׷zU3KP[zjۛgAlStVF.[MX}DDDwbˢ: GEEب;Gǒxiݻa(-+3p#a(,,J{o8~ǯ.a8oi~a/š IDAT\lcU!q?7zS]}}P_OSQ#6_l,ނ1QREa>S@@L4~)msypԖ hG>}QTWǩ눈jԝXL]6TgTDD\^VnUf~? ^zJ s'm~0v(uUlL; +oo55//o#kWLykjO?y>^Nc}󶲾OVV+MTݿN!CУGw9ǎ+w^wI<(/['"((HnGDDDD9拺̧Csb!7NX/""<<?EQA!7Wīspr&LE@BQg fIM&UH^*/%Ӈ=~hz5]7=ݲD_Q ]YȊSU\M=r$j5ӑu ,,hKM wFxU*=BCvhof?jrhйs:unKM;#=~_ (--/q)[K޽yJ7(:8_W#q֥K6p@YLOy+*.6ic]o40t1dJ.} """s7#mwי[CII5@O_WKkbуj7[Cǖgk!bQ&,>rk$9JS;1^U\5d'mSQX}DDDWV *&&زt.^lS ~0ڳ;wƝ3g <, u "#"qExyya;Uн[7>ri=MCQQ1:vĠЯo_d^]{ ;'eaZԴ3juiD}w}ͷ B Go.y6t A#αodLu{}}=}?DK7 ﮡKሉF^~>[&mQQQ?iJ?ሉA^^7x@I?Fee%BCp97 N %gΞEHH0 @.1d >);$MiW InprA9Rxo=XΎpT {plU :i&H+L1H@M=, 觴Q_t~yI!hK];0jW˿+9B?DDDԊH nhhlDUUn3MJBll kjw~nBIhlhD֥KSHS&OB޽PQQǎF H0vhreDEF"$$D:Sl, J@n|j/w{__DD8j5r._F\\'LmŴ=wG^~>ມC1hJĮ]QS[panayETǎȺ`LҺ9dǏG.]P]] @ӧa8:vDAa! 0zS0~߿ <~ iSK8y4T*?wKDBB EQZ!JQȍ!P1)2,_ ίox`3f|*X+PGWg^@Dt%O+^fi'\U *;{b| 7"Oo5J͏?YYw,鬮t-} uם.ՕtjvكGOޭ8JLdT7ګ S,)`'HkFY qhd&}2ND,]Yհ(0X-e592<GG_ E`ʔd@_;@mm:H? q!p$"}_x $ChV[ Nk/D/,ZVmJ#%K-Hl9s q^~&w誐ۘ+ȳSPXZDp v|.T\OfT( ~0 ZDf֫V5/R̬YH ˆ 'a do{a߼t~ ,[\}$=<4skJ:,0g^l_qb6ve_cÅ Y~@ i4Rv6Μ=Pv뭈4D퉟/-N=,""""j;[$۟Џ 8R8b58WE5|!Hk^m([˖캘ŋmve::q"sد&--z__Fπ| ]ATASk æ@_וMo#Ǖ0,}$PPWVbи}DGW"99#Gd _bd:|Iu_ǭ܀&`ǎ]8qpAV5}Ø+}I =(AAAAXts⑫X7fLɬ 38:|6./ LK#8z'"551ҢGSQ]0:}Ohk#g9`J vbHxIg;JDPbKV#v3<>o,{[]Fιtfyҽr$󭉍YYϲ,X  ,:6     i#w3>svdɚ>0tE0 'G7ݔO(jfAŽ  PޅBAݥpc`` a agንk}d _'2"-jq5+mEPzhYCFE=,iyvR%zyBA--2%Քf>2 H>J( I":ns]3~l&X=FnL\0 UG+8f'֗ 4]1#s<@QO{ⶩ7!6&{LB&}}o&Nӧqq䜻WK?vůǍlJW\u#Yp..t\`l[r6uqJtHl caǜ8Β#AAaܸq}݅  R811 H#39hH9'$`w HJ,z>]",^lok+p~8t.##O%~;'$  G9aOd[+" H=smS!.6Wkjs>IpobޜDRb,/r nq`=,k XZZtgAqCJxS'pܷ8:ƥ+\Z\}鄟G"A.$ A#ԻDAt!r0(!( 1 a{.jX@:)h㼐$Dc*Y'NŁ6tI7ߌsM#l$!-"QWGn ?֬/Wth|+'WH"o<|>IE@| Uv^ޖؒyyE).}~GϙNG.:]?#[# I"_y àXg*~5\$A\$R   F~P({ X7c6YO\3IXD: Kj$4f|i޹7l0C$&!7Ȃ +Pa_SE$n_${ѽzV42Bfaհv^*yܻp& u8w>yX B0(4.pJ bJb^d~YU'}vddX8^P8+PaBp<k>l!ࣗd$~y AVw!$ X{ `~Q{EܛHJ@R؄Y_dBرf$۪Iy &/$ɲi%56iA!se ڼyJtN :ZÇx-1ABAHD2c}ot=ba ISNG}ͳ~iwNZİai((, c3p4s_uGrVaW܇|)ؑ*/o>cJ˵ܷ8wR&؁< $L_څR, z aGAD@RBA*Ì7_ЛC .ߴd#ƪa IbX Lfx"[@,D,I;) /ye` G|EN[!ɕsH@ߌ<23Ό%Ph QHNcHrĤh^.00*G$LD{sۤ8[aՕ6S䔀eML?7,{|>>|0~XbTVU 扦H؝\lg5qh]A$ A#ԻDAJxm-Ɵ"CDef q tVJ"EdJy! q(wEI Iff6z#-]j6,lnqhHDmo#ʜ̬/h)bG? 5E㯵 \Kkp@B|d~ZI4v(j؋ B&WZ`sПaݔ3•\ 8T/yl6>rp'ZxBdss/rmʔVMyյ7ω> HAA$ .$ AR6I&= \W| @*y2uXy8) }8'L`S xz/)P'^⊐EHdL휈4E+yS$c38W+q}so^>}DMNVcR!򠧥%`*˳6Hg*rYba:]r-pxb|+wrO`g!ZOL`ѼìB7 \=s,֢V2QRjoIV؁0ΎߐDAD@RBA*<5 Hb$"Y H&[Iy7~eǒi*my/3$WH+iɖ]Jp@w.G@L" xc-Xhdᔺ$:d’p%%V.*^^+jgd;-5XQn0b183t.Kª51RUx%z H@]H@" \lcxbf `lO{2 7Zj7 G ReSxĕb vRVuUٝ3:#!IJ(Z2NhvZLڵ3fDg 4`%"{Cb$ G* Gq=Q$?rE3!98x{9j\.15aWg%%itpB2[~߹Ep|[m z H@]H@" \,A; _ c)ГUZka$FBXSm$o-3FPHŤ￷]̴箻e IGw_ H"L( H)9 H#coqLu]~;OJ 0 W.z$'#PI•F&YpU;^)};36aL_*,%C56v?OĵY@"    YDzKr\Y'&H)\$F؆ <٬aa!9`dhd[Rmy{bYufp~U㓵qZelΙ^ᗹ)EXhhh,xzz.]BGGǀq* 111jh4hmmEii)jkkhAP/_F[[`] 111 B@]] eMG+jtooo 6 /^Dmm-燘 555(..`RDxx8鉮.t:q|j 0`m܅JBff&qtuummmhllDFF^z( CT̙3%%%AVP*m:z IDAT˲`#Gıcx ,-|* dff©Zƈ#PQQjnZPՈBMM HŋLHHΟb{|A\\<==Bn!4..hiiFAXXZ-N:e'sRD$BaJaРAǩSd݇ѣGN0 `#F@MM DTUUHMMEii)D֢q;00AWy닂0 D /O#a0l0477HJJBQQ(]B! g8h AIJDqCr$BJeNkk+J ^o-rDwP(Va00tP,j)^RZD$aω71c@Peee}=J%PZZ444@!33eee􄷷77aT*단(\tFHHa0ԄP[BbbbPTT|||`n(GA0깙`Fyy9X^ ( gr{kHt-w@՝*g^h4{>󱳳@ss! b`0tB[%.ʋ 1X ̋yaXެ%1sBOgw&h0w; hkۍ/ﭝ9Gl[;,,J]F1! $[X{Kwn܆>sƽۛr1{.x;нQ7~"f2x$<^X?q") uuunOOOtvv bPT===Eh.:;;cDPPlɽy^&b׆5 Σ(--gC˲8s "##QSSb6l***x˲hkkCaa! eY.dR_QUU///B!""0f=ntttĉIzsbqY.ah40fh4<==Ǐs yyy:t(pEuG?4W9r{{;j4ѹ4s(K7m doAba fU\t `X]-`;f@D8Tf"( 6,+p x]\#"MA^aB YmFD_"K  {҂v2^;tyyyDV$9FVիWEm9ɓ8z(~hmmEnn.`MKK X kIJ`'~X_w_c0Յv=z7.Ǐ;vLR b&88Hdd$BBBpy^9㡩hq<иs\:5 |||DQ[[`N|6 AA ( NLJ~/|', !PzB01B'%H{!R^x lj'0ɗdvvezzjlvlVwhHFa;nIf!:Wqyy92220x`\zFVVgeY!66[؎˲ܢ@q'HKKCkk+jjjPEjj*BaaǴZ-gVqqq(//`@CC •CMM ҂Zxxx ,,/@ӡ FYG}}=P( B!Khq7J񨩩2va{/z>:zܞ,񏲐466 y#::999;fo6 2 j1h |B4ڼ>]_ xpHzko$Vb %GbYiI"&&hnnFQQÇ+<<aaa@}}= O6" Ũ 6.`'??Pոx"Abb"P(܌*(pH1byo4Bgg'P\\ FFAgg'QRR½`AZZjkkQYY RNRVVbZƘ1cp1NfѣG#++s}Add$RڊJ\r1dWBB|}}a0ԄJc =??h4VJB[[*++Є= #=p{qVqq1w\PP8oE@BBގ TWW67nSD8!s%Aq=%m1nF Q$ Udd9߮ #OH(\<*a= ?mX6J8.TW'ƵFVzţ:.%9M(;_YlF\BֹS z\pM/+:3B#T2$G;/^-=СC9[^Gz#""9$ .$ ArȎx `s{2sc+$E$e9>m -a7mX@ p8̘$3BYD+ #V~F$4e0{1Ywq9 Hѻno|hP(NAyyy_w wAH@ڻp!;  %,v<B mB+mىLrƅJvN.i,\JDX3ۇߑ5Y<s#~E}Y_A=Kaׅ$uћt[@2 8< ;C˼UDA=<3и.W\BvAA7l9B9W@$lӂv&;qX=Z4I^IyAdD'?Luk]!HuE$ ]YK- ߃z_"o{hh\{}  ,`V$"$ O#ɑd-<XE Z$w`T~>0r"wYV HMzf?s0A\t[@"   b! !̦mpC¸,Uqs *u dvi*W-0$z@U-$vq($zUaM xDAAA b!w,BRtv{tWF|d&+Q .GeƎktݹ$'+2A͵T/$&D\DP!$"g)tGѷDAAAJu;{!ɈY< :Sa7բY<=șE{IX"u(PzD#$ AAAuYHyWbOQ C_1 8{+R-/&]?=K&H {3id%?     3gFWd1NŢoܿ$#wo坓PdhOTb{3HP"xD   ZGIvŽ,%!I^(&Wn͵TK4#Hds6K%ɵ:E$   q&5w '$ qJHrhTW/Vإ \mt3$9y]hĉ" -6B V!      q$CIXw {H\+!Q˕tA)ݙ^oF("e%;0~TU]K #(oQqAAAA4ΆQ_]vI¹.Hu.(Iя+Fl"b@3:rR0=>v:"#Er'p8%w|.!$   pB;Ix!Y';#$9ε1rhrnrPQ+AWD#9+lɱNJ'1pO-rΩ`?q33mRR#G" $ AAAJHM^INp{5 qg(ך %LD {'OqY_f!V5.Ά އ$   NHj#9! y)e5O$q g 9޸;IBkGzU4rhd eo /H*-pIG""< nςտlyj'6K;%wv 7AAAAA\G8t@ra?$1eѳ|!I*$Xڵܙ포qzO4r\#TNPbi$&n ٕ}4侦e`d碡:K;     GCgM3;?+$˸[DkpFehXO G Zem=gD]X':/`-iA H@"   k'B ͓ GĤ&[$m qԽڮmAUs `ڄi9.OțXӿ,zLH   :DJ;bƟ], nRo+-<؏q--sّyN uH^’F4r\̉J/x amOZ#z$'" #C!   'zJ !wһtP.-펹7KO=VV?wn0uWy% 0r K#%'"nW,lpTbn DKvqJ~vV#$    Y0@EJCn;mmښKmM}ru"mo)D<\@6[j)gbrs=%YNsbgģA7ran·H}__dg1 S:10pmN"Q $ AAAu+ $)5 $jBcQ3aO/_vht";7Ƨg ź:R($\>F, If]AKru?k&L9C"2b`ct)~ Ą pAe ;AAA9s&ʮ fݘ2e 'xM]E())yk/ EEE-Z#GuttG\\|}}1n8߿駟`cƌ~˫cȐ!v}xGpL: ,\5gϞF7|# ;0x8GXr%bcc~]p,X{AAAooo :֭sn0`0_ 7___$%%~O>Co/Gh&''sATTqwܹs5s /Fjj*|}}1zha b0zj$''#** K.EGGdo~0ddd?&l 91$eTbms1䶹hjt]8kN~"'(CL IDATvSCMb0Xl&GRy S fs~Fuϸrt_Ph:,K4@< ̘,nh,W<'V?m/G#(8.^)SƩS0}tL6 O-_bٲeXf ^^^8q"Z[[MOS^^g}?8?O>;vU;::pmaȐ!8q}]Xf gԄI&wշi&ljB/c׮]pq?sŔiӦaϞ=_0c ̟?ijjs ŤI쾿rL{{;xɅ w8q0o1Ԃ1q#''?v܉<̘17_={w^aΜ90Xd ֮] .`ŊXr(Ν:o#))I5[sE̘1K,ٳg`…طohP5i$L0ӧ#((Hֽg555=z4`ƍ8q-[0[qO<{lٲ۷oǁCىɓ'CVȑ#xWj*_~@A1a>H9\1PiHm.o桱Dޯo%k)(Sd%k0p8d>e/u~$J2@Μ[xTmA"y8~ ʜɲ5%($jd~ȺI219?.D/X? -iE1aNuDQMMMͥ-Xظq`t\>(W_}&6`BagxP\\lg}v 8**}Ô5{/vލN/9㘛ӧOKzXc{{r~}iˎ;0|p\FFE]nݺ-**ٳg AAIo#ACɤ1)5*$O4u<<.e?oS5iEaYR`Yp%c6;}|q0(eVT<xN[-&_mQ`dfNnЄ. tmG'6 7DO}DxdIA'ڊWڽY=dףѮLqq1BCCjʔX3f`^HHxihnnijj—_~ a8s ̇~cՂ]bÆ 6m^u$''p%tZJ{b娩[o冑rbO=O8]uxb+ј8OLLѣ}<==+`Ȑ!ܽeYKX|9T*cӧOѣG~ jڕsHyy9x ,_ΝCaa!~ɝ8q 5n(gr4PTvTJJ / |{j~}sPP<<<0i$^zJJ N5o)1I)|AH{՜hTXp$s ^F^Jb^GvadOOLot7Eea#.rc { Ʒ7mKꫯx{X3|pDGG۷se;h4Zx7i&ڵ.#lق%K`s0tP<`Y,r/1bz|tG!5jZAvܶ:S.]'^رz^Tʝ;;8j(`Ν<\ 2;=9yƌض {>VZF\\6mڄ| -܂BzP(ĪUoooZ T*MoGaժU0dn^P@Pƺ?V҂[gņ MЗ.] ^oooŋ^lÇEPl޼?0 [x'0zh,[ W\JBCCoߎ_|?0nVٳ9Z-X޽{SOøqzml9t*++]~!n6ߏD^>Su4&rlݺuhnnRġCp}aҥ>}:رc:u*|M̟?., J/bHNN?95kছnB;pPPPO=ƌ J%&Nx8q탏JJJ;oƍ9UhJ%X /p.ԽgQQQx駡j{bڵXnsaݺu馛Caԩx)))믿bԨQ8}4~W^#`@RKxE?%UEAS;ڰ]:x$k ⑳ <(mVo7Ul52mĿ9\69҇D!ç;<-Uvy ʹVUR>cn_J8D,8VxţeKƙ3'+,:)XO/p(DuDn|}{wv_< 5F TՕ*%78VWעCBQCB{A8G|J#GbXz5?cĈt:.,Y,GUU&Oc@4uuuXt)X  =okjjsNѣg9$22/2I&᧟~WƜ9sPWW$Y=w>êU؈,]K.`~z!99 ~ߺk躍kNCHHT*c z9G8z(֮]V1*-Zĵxbۅy{駟bݺuxW|r#"" ,K/O<1c ,, K.ŋe]s]]Xx?Ƅ pIpm:#\0aؽzn~}cY/"RRRm6dffr6}V\YfARax7xcm=x{{x1vX୷ƒ>ȕ6AA PvB٦wY@k2N.Sf8Te~opc#f/g { g$R\h?# O*|lO!+)$@ 5A;0qmbDr"AџQ7 `lٲSNuS1h/|n݊CuWIΞ=cB CCsFAsWPÞA3xx"H1G(@TP[c,[[~{! Ǯ2?];JV "Krg3BjLH)tQpr"I)A BnAٓϱ=\xomiI ; =4.s. -P)5 A/*ӡ# ގ &tS44'N`ڴi}ݍ;M!B8%(Er%xDZ (rHR`r#WIp%dN{gW;eVnn.:wgDDDD/Lg )l*3|e- "YX8h{BrJ|%GQRj#_P,Ir˗!UJG:LO2}TH墋 (@JIIUQ&{\ǶC"333(ڷovE{q=bYS pRvPF O UV ;wb,:?\҇=bRtH&$&fF.\l3d;;s/Tiv|K rŗ/JۏoROLi`(P՚UJǩqj#RHLN^PC K,g_6wkp| )1*ZŇHDDDDDDD'&4c1<2<f(VE8e LH(i WCS"h <& p'x *e[֍lZz"2<_$%"1D@"""""""A|摮z  qҠ0Oj֐ _DV@#}DeR5F(n -O/( $y]@Dc,eY>듦.]g.KYqYL6(2D~6n ݀ZR" 樬];xdB7ǚQ(6l[HopQ8ʮG|7!>o#QR#Dq$""""""Tp)fL=BvLFLֻ]NZd^.L6;$Ȣl%"e2ZϼR^A(z|AՇC xJhJDYO(HTa7!k[F}:YU2K߂";@"""""""")PG=QF@@V !B|^TRNolA[k:K\ϲ ?Āf  ҖZCw]`!z=%tX4cJW .ߖ/KIgvBv7F.EKmߢ!YR\eC IDATBt~WD"_@""""""""uvdD5GGLpMhM:w`'j Ȼ!1R؞O(>JJڼDq$""""""" te||D](8s(=v18րؽtY:t$6Bs(nEj0S+QvDDDDDDDhub~~;G-]Fe1ɢńҥv:|L%3;u.•XΒqb!ˈ2"H\(~0d8OzpI0_.nɸYb+G[6 S,i8#=Zg%Qc>N8I&;)Ξ/"Qn lX>2S^G ΄D 0(.A?D^>8 $"""""""2& KT&Cˀҗf,ˆ4Kp>5ko[pHϹp_/Bz;Q.A.]Jg}#js]=HEƈ&>bDHDDDDDDDdX <$/߳ =$Xْ/];-5 7eæ\3|>\[*_}:+JG; ! #_[)<4 O;|Qᵮa;l8‹otj082.dAM]8u IH˨S_5̗h0lHafhV`Q;IDEWi˖-{ _f%KoG*Uлwo;vLBNN4i9sl߶mu놁;Adؾ駟Ҷ<>{=̩S0rHԬY3;v_~@ZZ^ܹS\ۇw,|`Æ 8p ׯ *m۶׿؆y*^ٳg233C=RZ\ǣ^zUBi]0p@ԭ[iiiq[os5v2 }H5$B%1I$5~ Wшb~y(iك]Gزe zݻc֭u>c7SL͛Q|ytW\2E.]SOa߾}Ǐ'DNM7݄gϢzxe0r׮]c=2XXXÁ/PyGpU̘1Xz5]PoANp]wa͚5/ѳgOTREjSNnݺϫ^Jw5k`ӦMի  9W:oxk xիüy6=;vo\{E^c]nƨQ0uTڵ < Ə #Gs^Xjf̘۷^CƍӘ1czj,]+V1hР/CDDD㿤Ҵ KW${+5 ؜mdHql60X1f7ݬ'TBY}dNI{L *ne&Qr nQѣQXX_6p@$''dk֬Ə!CРAL6Mʠ23f 0|p }Ř1c;_~ĉ;`֭Xll_| G"111dxgqiѧO?.]… !O2e N .o߾8}7  #FȎ֬YX~=V\Yy={Ƅ +7-=vލ@jj*֯_֭[˖W9TZyyyRӧ7]vpp8JcĻwFVVߏ bܸq8{,,Y"2d*WYf:&x>՞f 6 {ϚӱcРAܹS Dh޼9݋Fe ?n(KGBDDTj[Dyt_a|9ѬVS;S9 :6j\ v_ڦ멫6?tM]uB,]W/\jeBZG4Ow6J5jT\̛=mXRT.))@ڵ_paD"9|"2x@ZlYHC=cڵ  %&&Rx,c9s`ܸqHJ MaÆa֬Y^fÐ!Cd'5ƍpB/,,D do޼9>Sv[ ~غuom7#N32W;vdR۷͚5}\z>b}Vjy]h}rrrТE,[o͚5ˌ2DDDDJjF03r %/;#,gӆ,'-E.HAbeB(ƀtS߿ŝwމlk׮ h?FJPF ۶m{ lwU8pO=6m*-7h75˗/G p._ ۍv!99M6ūb]VԩSRׯ_ڵk7ߠrdQpetзo_dee7tlZx>jyWƏ5kZj1b13c:|lN[""""%f܍"f'ժd.hdA3_`.hdm15Z#;&/_D;~([N|M DOTH'NTT)`{zz:ٳu9s&nĂ [nhذ~ObŊ3fl;Z¦M}vl۶ ={Āj*塰SNł 믿bӧ9s={G߮x>jJ*ǨQPJi3gҥKM)Y{"""*[}7D9m|S /iMj҆@f ׺kTht2V>>j4k]mf!gr_(Rjj**V{l?x ӑR'##Ν t:x ԩe-''NzR,8~i]"!! _зo_$$$`ݲmmV"RRvm\ %$$Emq5|?~޽;fϞUVv>o'޵m.\Zׯ/.\0vX۷/X-[+J'O_~ݻwG*UӧOdz>T=Ϋ}v6lX@,={%%%Ɣr5iۨ60L )xњ,Ow6, Vװ hX2+u=~7?qXpg)~]xj z>(`'|l-Z@:u2Jn7VX!Չ26w\ 6L~88QQ\\,dee!''Ÿe޾}>֭[jժXreݻw#33SΝ;56")))ѡCSp>o0rHoߎ5j.gÇ~z<ҶLJ~-ZHEQDAAAhe˖8<_9^#x>j'z聜ݥ3ڵ 545^zaرcСCغu+eרGȶ盶Ŵm1uLo&RF3!P F!hdYkFa%ch3_ORͺM/5@1J 6D#>1VF= 4ĉ㣏>ٳpBTV йsgƍéSrpX/[n:4jҳ-Z;v^ f|HMM(/OÝwީ/]Ӊ7رcѳgOnݺW_ŀIrQrg̟?M4AJbʔ)h߾=h}Ğϫ=5++ _k.r-ؿ?F~m۶5& Ӊ;AHOOΝ;1w\o4hu{ ņGK+:|*"" ?<Hp>ci&ؕ l?6E:{1X9,dC1ݯ 2ܴpuVK!emf~LU$~u))Q/WMO \Dofpb!|\V D[tilժ dgg_F˖-vZ4mT*5kJGQ1i$V k5o ФIKx'u/**w}Sʕ+hٲ%MzHcĈvz)p\0`^y啀 Ċ ۃY܈ɠM}j4>oMӅͱ"8F#< EU$4&Qr n1FӱtRt͢a^<7IJe˰qh%.l駟p#??_yTDVqS;~HJ}r/(T>`S)pF?R3KfOidG8hka7Q.!t"}e1{EPѐElA,k׮23=\)E*ʄ/±c'v}GdDdb/k>Iq5u]aṏ-=4MlEΝ<"""W~zl3T'-~採&t7m>koC.h>xܵeȷA^("%촤`ժUHJJb"u QD/eTX}nVY./ֵ[sxfG7#Q rD{DDDDDDDTF*3bKкKkߧ~50ޒ~uo 7jX afG'cGǷdžV)ߥD?DDDDDDDD6)%l1USWMo ۼMKX -➨bHDDDDDDDd)_xH " (HzD]\d+B|,VˆZC^ЉZ0jhMe Dw@""""""""{%d!i$#E#hdRh"ܿEc ӛKi=,lbv"U ԗ"hA#}+Vv['ɒ#>.~YH4 @*@K)6+㰦u˦-Q? "?Š-˧ (r+ QP_NOc QZR4BFX6RHTxkA j⊑ X0cED$"""""""ƣ+W Z\o«(f),e#YB9xExf様l2IgH(~0DDDDDDDD5|56C*FBmb#4 W^o}W]ggDϿ!P< :jrrrФI̙3G{k׮^:УGܹS sO{̐O<ȑ#,L>=` _|vtԮ]cƌAaa&MB;֭3|>(((#дiSM6]$… ѬY3T\{2Z+W`Wjժ'Ϯb$)?vcƌh׮RRRиq1c""""UφQKvH˞Qm( 6"K"(-b.\!P2v "/={k׮ѣlق={{غub?ƍÔ)Syf/_;vĕ+W⺌U?'|:u 87t ~Ξ=իěo_GƍѢE پƌիWcҥXb֯_Aɖݷo텅ԩ ~֭x,>:ƍ#F 77~!Zn *Hmgggc3UVnn.t邧z طm6O?) qՐv΍?SXXÁ/#<"QXXիW7oO緿-233Yfa٘2e O0gѣ?`…ĉ_|E|gXx1~tw̞bUgϞE6mxv7njԨ!9{_ܹsyfԯ_;vӧ2zYGƎ;+W޽{ѫW>zl٧Xjf̘۷^Cƍq6xߍ" Ĩc"hr nQѣQXX/M8p 5kcȐ!< 4iӤlx,cwy &Nwy[nŲed~4h=Đwq~a?#t .(OMMѺu}+V?_~EڶrJ <yyy(Wn7Ҹ1}t>|pmaܸq>|TaÆx7лwo]d?⣏>ݯkѢ&Mz "ڶm|>,{ֹsPjUf͚ӧO###7nDvt}v#qO3YÆ ޽{efƤ~e(6iV/*%"!%L\ Ҵ߮kIȪR4Na@q4fe{΍ۄ~UEy~_k#UAڥLyBbB"O}hm*~#WO_4jTT"KJJ8.i[^)޽_P(`/" Nj=sH˖-Ã>?O;v]0`i[bb"/Չ2V6lf͚իk7o ";eO -Zފf͚_W@W^y㏇SXX(e 9˗u֪jm[aΜ97n4^xEEE];7}΍X/]XfݸuEEE?@͚5^:l"/((stIZhF߽{7 g}&mӺgٳRUΝ;K ֑l|nfǤ~ePB7RJ1ԙFWl 5+#)F U<9pOBfGPT%IPȗ$8@r Μ9[ƙ8<.^RèVRSSC=z4nDÑ#Gd;w.|A?|oז-[0m4̙3o?FJPF SKߏ&Mo233w8p@@cƌArr2ׯ#FԩSm[EE\t ?#?+jժ%:7jOaa!N85k"55wq>S˗vѮ];$''iӦxWQ\\ Z*ѣGq%g|7TSN| ,@1c 4iбqe8q˗GQR%4hf͒h`r`ѢEY=jժ8|Xvt|v_HSx~ԫWǏG͚5QZ51BzN1c""""ˈ/6hHҘV-GHc1D]Ș,E}ݠTr:o ~n)3G>F 346R6xs|s,4$Q 8qBJO*={V^8sLܖ [nhذaȾ .`ɒ%zիx0djJc۶m_vZ$''K._֭?dn0{l/8z(}]l޼}AIIjVٰaRRRЦMl޼gΜƦ(>Z¦M}vl۶ ={Āj*@BB֭[;v̙3 ѣ>S{Ř1cPN1w\L0A֡CL4 /ƈ#Pre<ϛ*M0#GġC0k,L<|s@vv6l"-ݖswjԨڴiCѣ8s ƏL<]HSxW^y7Ν;zjlذ&M2=X;gz&B2A,LdXo0}c=)?p#8҈PRE<80!)KӍE1 '^{b<(.&"ϟ*lYzzQF-iXp!F%GƍѾ}{6?'Obڴi<9n4oiiih޼9,Y4P=*U`Ϟ=3gj׮uw?ݻ=ayhҤ T]O>Mte8YsE'O1c %rקVZ;PZ54h'O#<t邌 ԬY>(fΜ)馛999]6~aL0!]~>(z.]H۟x [۷oݻQredff6uTRеkW{ィ\2#F`ҥIiӦ[n{ѠAlڴ 'O_=K,_Ÿ[Ю];4i=z֑lJ*ǨQPJi3gΔ>fk,V=mj+zAko װDFLf>:&ze~ t\.o *)YH,]hkt#QNc(ΩRSSQbŐ%!(=_oΜ9ի#!!A\2222B@G-pk׮:<(-- 5jP\QF\fV^:FѣG_s@۶mUm۶pڵ+lقK.~@NpС, &ѣxwm{gŋ[oEff&>#t/XR ѩSYYYd̝;Oӧoرcgկ__|.\`رطoԎϮܵgϵkưageeٳ())15&q!"""R?B5 IuV>~Ff@Hj4FFk*!#JE @ŐA|y}smS٥8RQP @޽Gi| ~-Z@:uSn7VX!Չ2f$%%8CΝ;Æ ٷa:tTիoߎ;vH:[O>_>n7DQ[@n;w7߬=i&i)3ǩS)[ѣ(((l.IIIHKK3}no߮z۷oG5dKnݺhݺW_G}> +V@ȳZl)e`^zavڥxsvc…2d= oVǣC9s&y|gX|96m$ܹ3:w/p:8q"{9ԩS-[ӑ McHڽ{76n܈ŋ;w.}рt\/ѵkWdffbx衇{\r:t({1C=>vXs=hժ.]3gʕ+dn Я_?HKKÄ pVZ8}4裏q8t?w=>3Ο?c@ӦMqE]s~_|֭Æ mJ7@ ЩS'+W~)>lܸflڴ wjԨ͛73{9sdt/ /࣏>Bo6&O?馛p%-ZI&x1sLddd`X`LT3Ϡ[nBwߕΗ9Ynu놢"\.pUV8|0^z%dddo߾RzYsEӦMѨQ#l۶ O?4{9tM?]HSxcƌ>|8&N|<ӟ{LfXHMLemV(В~UаmR͚4yRp_f-pvˡA(k{hRKݘ(vhZj/xѲeK]M6f͚QFAEL4 'OD.]_#111DʼyЫWӧ駟b! bXx1Ə>}raxWtEEԮ]/"ۇJ*SNذabV˗㩧}Aзo_RIII2d; ?{|f oSNx˖-=ܣϾSz-L8n-[Ě5kpU۷c(((@&MK/'yʕ+ /|hӦ ֬YVZ\cBEt14h֮]lhܸ1LÇ;:u9992e ^xdeeat|TZ.Vg̟?ǏGVVz^x!qֺgԩSqlӦMC=0v.~Sx\R%|73f ڶm5j`ر1b1c""""Y*s]Dwz"ci0"5CAV}]!B=#C\T(xtO3iDC! bKHOOҥKѭ[7EfOۑ/^ѬY3[!Doe˖IId1EҏJ~HJyb ^SUf+՛'F/Ha7ypYׁ3`J]^0IHr,$7_/իWqTjJz(nRH7?EEAʕSrII Û y=ϔ޻W\D[m"8z"2x53ŷHժUCΝ 'd?AЧOhL ~s~LDDD7 W3Ba!ByIe2h 0hF3vհu=>ZrE< ;HDB{$"Ma4`<$$rI:RVB[.IEt4A#z2z|Co,)6 kdPvD@ """_ HDDDt8r!!?$_V5 )\ kD4ZM෨x8D ~zN/{Usd,r%$&2( !1E׮E{(DD'F!QjʗO(HIuR LNZ^0i*T J4TީVn>[ч=T<(r8p:穨L dbLajC` +Cˢhԋt ׌;aE5-i'+;_U-|?nm.SHbwG p8x|BDDDD:>yIʡ|rhv"@7ؤ oMI{gjjr@ @{@,YpRp!8иxUc5hXzLdBE4h$FG ƦdAs$C+jB"_Y. Q8}8Ν90ADTf<1U\֒9zVK 7H xJ%p:H!GS%]fj@H ſu +fd&-iY?7Tszd]?ɀ!(pDU.ߋ ı8wu6FBB"LDDDDJJJpE;tIʡnG>jd7)S@|.QTZH|s[_Ԝpp`o ;On$zoQd6#$2T32Dk{4ڒb5gE/[>C%z(5/pY.\cRE)UA@Bb"*TDZlFNG@2#UCRC ())1{ *][ ɍ!xh!pf y}hCĐB#I"A1ޞ-42ދLhNt+rQдtNg9"u +pRJOlBol:WP%%%j&\[N<. CCK9=+B(7̠f | IDAT1hd <3#\PHƨ#Q2L"""""""{=,yQP l@?lGK9,q>u2rk~РB^ =n%ViKCљehz1adԛkЊ֕}UdF_@"3Hϰ 퐾?_$1ʼn $""""""htYH]r_( I ;d`ޥ#xIC@rxJt E)\f(F;촰L-V}l(Jb,(.0DDDDDDD1?xTJs֕34V a \,@(( )+r픲|) T8Q"v*ݠ;RtQGj̊Ct"<;^YH^'?JDqKQԍ\7>w^Kٹtǯ(U98`@A yG>z\o7M,egH<,Og`:{Sfc;3GX{8pC#oB\Ɖ$?i" QTI#=.~fr  ,?{s?[fNz 6ۿ—G>vM t'JܞﳍfHKf0hJ@F LƖ DßR!GvY7ZHWA{aL(~0DDDDDDD%y/fUC<@>GAe"y7:K2B")f!Qc4wْU1<9@34 bHDDDDDD1_Z*;j}IW벚UYó<o ;O_ɓ26҆Le!騨d~1FR)fƧ[\HPlLjFG!c"; QD~I#_YHm,*t]Y4Ko~HgpA*}.oɻ"y:F42*GLHce&h^GD%O" Ƽ VlBy)H/]-aNӉP0_p!xIW F:)£қX0_[YĉcOQ20VF*Q!l2W3B_{Pܧ3*dmӒ>woHDDDDDDdQH$c&rFFTZ*s"AJ3 "GRgmоH:*6}:0i_[5ld. à^ Qִ) HWGLPA#_[۽FogNyJK3}ߴ(7K \𔎾Iя$I Lɾ,$XI@|x?',PXHa3DFzFVGDG-z}W&Wڶp:G`=o;pvk!͑/W4H:e}4KǷQt UmlRRdQtI.hC'rx'<  $V`URiAߟn#  0h5"<2ܣev&$.w ${J*OZ].4$e(J? Wd(/\zE~3`{RBg(0DDDDDDD;m9 VRD̞Gg ; $pKKBy<oa6^NWV4V&42b6`cɢbHiC'P^M+XZ?ۯ%Js%)X. TW? RUȭC &Ȣ;"D<dZc#,|{0(>0DDDDDDD0,$ɉx#G#Ϗn3# FṱFQ9 q:t_}1hoi$G|?^n)8v=A$1L- Hgv}KLTJ.mԏ<rezNU(:@"""""" ;aɺ,$"A@=÷+m!A +b:tIv)t,5W^ |܁EHDDDDDD.z2mEGYܣX 9B@]@e\|Uw{Q "e l~D(*y i8}|AQ Iݥ8'#8k'#vN.{s{r"BB'yrryf=yΆ/4E7\,'O(!;6A ^.oӯ|*~cbW(veo_R"bLٻxκY3{II"4+ ^ATC$t) N(jBRD )z޳?VY3fkik=5Op}DQ6v};`;aA+\1:vԜzqZ!Fyv_1B<4%n{׾/If0 UHmpU>nkbȔMAV+ OqclQEaa(z+U)= "fbϵ¸2vqh,(V(å^uϤOauvȂemVtƦ!TJ+vcmãx0*T$1j*{m\{*Lmr׿,Law26o>nHtH뺼[ԕ9ޘY4eRA55\73r=eZk Ш&إ~' ȵ|:'I(]89\"Y#cUKiW${GN_ s6[뽜1ҊxN.1F6-4DɷS=di[4DJl!BxuGa(G#I)>5^0\W䜶mVaFN{A:+xFTLv+b[¬3dzǿUxq;ܗD(gww:/}߯dkLv6'ι BFwz h&=B$()(i\"'筌qYRZʮ][a)FOam2I|9ݺ$Iͷ(Iètml"#cl6a罔)_yݺ. Hsm| HA1FäZ-{m۶GlSTE>Rxzm?|a2>9Y>ow=n]+:;, $@I^^^Ow6L}Yq?zU!Wئl׿a"h:)4k )_yU!BH dm "IY5OR׌ 55\b99 Y(|zUڤJT.nŧ$ؑdd˚lq(nQo]n[ GR IitAvZ8xHRXܱ]+<#yyx Xy~.C(6y=wn9oYH /vDדz쫹Fg f=0֨шGe޲k5 F3?Y/4VBIG r\!R{ $>Rd&EJwi bdqFrURP+ k(T60gee%9vr|. }:+ i R\RP&*TY˺tͣ(gsXQ0Iϟ/y%:)cmVmN:*(R u$U;{,{x1k+[kI:J$ekDwNO~v'xP7 B"U h\\$֪h*22lh& Ш&?,DBʇGVd"$ɸHBJ*I@k*$|V?cId 'hY`f䯦8Drq`$/>ɱwR$'P{bQਸ4H}Ԯ|Oyt6Υo|V\I*66K|;W%9H6YGɦIIJzSvpY.g[bwKUk@_HPm41eQP ~F }n>V4^1Bd\`"3tH!?8Ir. B$k"EU+3Nq\噴G\ɤstFQ#ʆmɢ7ι:2W-ܱa3N˭{EQn(rY:\_{ $ *xq=,wZYYюeU5A<%HV.mgK%ke6x&YcrE/;lWJW/c @jQq:Xcl6h4J6FY9~=.hM744^BY(IIŤB' ?rQD6[ڙ(2&^#ɷogk Kֶ仚96WA%A"dH&LŠe_|4 [lf7^8 S;Dj͋k]]qT Fia7Ng{*zȇm'cw:#uq9Ci} ) (nwgp["L$KůC+ #z|k-_0 @~0>Dc}ts!)>j)Xkl6~oDf!.PVhͷZШsYvXFARg t&Y(bLdM4< {\1t>w&Yk $E. 5?QhrJj6"5WI:$oWmWܺQInHdtJ+Ӿo 8p0Lq1|?okJ'?&٭^>&¥ Ie+v'5{6)Qb"@#8ZjYrnycw~d4$:D*;mh!*R];28dY0Drf!5FJ[C$EIuom7(@IpL#äaCᐓ1Q.8i]ш)HYk0Th(h4$v$<Ъ. y|>T Hm/PR;vY o~t@QtuZͬIiX}䞏 -#MKQh PF_8mll3xpVv 5&WF'm o&R{4șD2iUKQ"%\d|!3U32&yA$3=N}/ vk6 |a)Cm *bUFqHHq8e-:_TѠ*>c dke|;G֦׵$Ky+tcIN%ARyAFɧ"'ϴ j $@)[hJQ{o~?z0RT*B]b\Шha*PjorYbPZ:!_KN> X eFƸ&xFrI:(jGYAX;qqeKideH6LۯbK=zFUGãv%V>D IDAT@n-ȍ.=10wt3o^hssS1 XA("-bߩ_˒O$t] vѬZUs#j 0!FL*mgW9BۚQߘ4~LGYP.<2i4/}{T3K~WI"I6B:N?^e_D2&ZR"y/BR%OPhf׆VmJ;<ʵUF,- ovx*UXΥt&#3oeQIjD R{~s_=OI2z=cZT:1RElo`{{@%-g4f`4 4*0Qo '彑7Ŋ:Ek&_iZd$JYƿ{+P$$fUW/=傋{~.Po44!jiO"NGß r.ڭ\ϪiM{znUF=H=$uJp)+8V+ߐ;׳ǗkjB5fmeYuG}#0iu%f)bv]}ş$$ՠhHWG xaB j,NY9BrYcM%2z\Hx[/덜5Nz- :}(/䝼:Bmq+:o (ځE>03*'W7WwB]߭,$f^mTQl4Ш9P~S|tc ~y&߼;xr]*ɇ@šQ5CNh{|Ozd[%9Fui$4IÒ*?1g%k;,"_^Q)w3eQBʧ~0p>?w£'4P2&yg#dYTIiP)~glwCa}[2+FN#d0ɥkZ9>ZI֒}߲SNQO*'5?_@4:\Y ٨_"tݹ_uӞzΘSOh4VӮj=Ba&T]odҤaR>DY9+kgq& 5pcw/iE|!LH6J0t}i+vHʇGŧ>Ͼk)]x8HuV)ڟ$vwowzIF1s"?ǝev~p-d}>HIkǾλ_[dZ^;_^:9 @3jjQ7RO-˯11y˷fk=4BQ5V 05 w[J0b6[CX <‹.1(J[eEQV+f+fK-yIz)#c&{KA/\ a=HW+M&Ks_~gI1q$D@)٦_Ի2OTR-T,i;!әg*{6H^i6[ʟ^y%=!$m[XvjSLq&d;p`Mt5Ivާk뒤C)|[YkO(B2T* 7<&[gb̨ ::Q߽,4d RbI*|Z㝗SB,ZU4)(S(ȅLA2B*GZ67[8@뒿zwrε) >| o@}k!aE:AUHWuWk8pP/!m |"i@KI)HJYbH rPz)PjI7d)dqҔnySMEڻ1ҭG?:tA ︕ Vn|[WxMG0 $@I Eݰ(/Z_T-4b%jM7ِcRh4^h5rMgd[xɏUW+ m+T E.hJ4(hJ/ۤz]aEh4}0sNgI =eUJ>z;{aPU_;.dҞW|=o^7,e*$Y?) JԯR{t}{;ԓ Z'(>V8L H2jmmMls=>]o&AQf3oLI6l;.ܵ]}VEe J뀫\ҝEѐ!G}^1UjUH#sdvQ峨fZFәDG(\\a>iS;F$Ti2I ( 0 ZVҊ~jm:QQ[˴svعCGک;E/Dxc%Aқ_o\vǎ#vщ'ZH(MN^yEygpWncDyP/yLi 󌑉ZjW}'PJJ#J]Ǘg>s"0 k.+4R}oW(NFڽgo) @L\fݢn㭭C}UHm2`ZӍ?䘖=4R`4^^GS-E.nQ'yv[B;}q⾗NQ)j_WG5VAv$Ӏŭuk_W2Jll(x(K*Y[[W( W_unz iG9{ys{wY0ޫw*7&7^7vW2U]FF1?a-TwJkG+{.ZMB0-EaTNJ2&16Z3l-)>26^#ljزՙkQC}SO0TwTu ^/ܺQ=)=ßpqY빸2(f+T /a5|-I%Qѐ5q:<Z%/x UHrǿUWz>ooӗ1G=z?LJ?:^Q񹮐GTheWض.seHggLaFR'sGfslIj49*VKB lڸsͣb^ -T sh y $<'qѫТn؀M_Cw6nhͧ\{jM7ٰU΢(49ڄ⚯{}}_M:xoVO8hksѮ1#zx|ӫhm0m>D2vR-χT[uW+9dQtfFF hh4l4h&f|]|F!#կ}佞;T[gH 09U-JQUfg0R8VjUFS<ĄfU xjQ١&ٺe罞Oܻ.oٹ<]z?#߽:BaNULguOoWu1p\(yo $t^,׾.^+>qՑW@ 0>luo6[&4h%M0cQ`T+U7#O0~O4Fo?΂?z}zG=wS9~67Q0)~~B8hY lWֶn]gi(E&(Z-$@9 ܢn֡Q5VƚE]BlziM7CiמKG#!CƜ,<hii{‹V>#?R/Of9tv0\38 [!-9!@4jlQ7Vh4ItUE$4h#U1/Bj k6 JnN9aH4ПOxk?w^1?]aRHI}Jeã~-A:+lH*HA ZIy90jd&T PDd`-& F 4ƨGh4h@(Y3!;P}T~}ʯ4+.ovy佗1&L0 (۶WJ5 ){3,ʅ;Bex_̋|dgQ8(m]](#kx7k$yHa&k wBQjYW6UqrI]hFhjiGUҐ(ӳ_Ogv|Az当1F:3L>MR|6~㌏_mž8Ll>jIHD} )JVqh4uAzV{坓mė> [v< շڈh샕ބhhC F1lR5F?@u#TR}40WA+Awݳ|׿=(yZ)")k-uidUJiP嫕kuѡnkݚFMuƚ$k YkE 0{HMڨ-&2﬋OIGpMv &kuVߨ=ag1g;׽ V %cȇ7 ^7)Y rD}';#Q燰V >JãFRydm!,U}aV!k sB2ihTb/IQШӣz)>P>e:۫={9J5vܡf`sW=}䣟1;30R7ՅG#m2tC=+>T2sxчt4=w_o#ol<ʢ@媉Ҁp;ӑ uIA>ߟ|sqdL(J+v Fe[MIͮi'4[}z}yg$ڹC`Pĸ3m]gYV gvwEzN/tZ !O~[/ں1zXeFRzy+äs;ΖI0TP$a+AιǭW/c~GVuaR|{B:.1z~pm]ֺՋuLR}uaQ* H5{ %UmШ4m3*Ehԏ>vQ~,cxTXb8Ut眞˞rj~]#};+k;wPQ;`*Fxu} =~WU hq$/9Y>)RF\$県52 3G(e6mQ7h#?"TM30uvq4uέ78fHu J 6hq5KT͡}]~}뙯^y}H?Ot$W\55Fuۍв}]gs~~ss3i]((kG2F6y£(E.L  ghQar_KxGI;GߪahM7> 7<666w=h=/eW`5 TOшcBCQt7w:MiO5t֯.w&NOzHi6 /ʵs>(>$3GV-[#46B[`T~Ź CIFOQzx:*nTh1w6G>sta:cNt$}z]sn3o JɝQå͖vl!km~QҺ%댍D众"Q\}\Q 9$@5jWmDh4VU 3h u8:x9ȱ}~WF3vn)#[Ju|=~DI'Jku{uu{B7h]uLɝcZ, H.9!聙#@vQEǬyhTh de=>իq/&Sϡjj(a/G?/TR/w $o~[wӵfKr u4 \6NRg (]EN6$"UGIQץ%GM BUtJ=4hԡ2m6Gi˩RzW/?e`¢Mn9Zq]8Vұn/^s@^G:Zڵo:ʵ 0[Z9 lxݣ^GsS:+!@3fUq$BIB1ISsNo߾ђtڷ~uIqŒ, ocD޻(\Wl0]}"$`^cYuUzrh=e⋵5`Ad9+6W~7%i?^Ӿu{u!1ITX(K%EQ$)YyE.R`>> =| J[hKtEѢVm I,ub7!i+׵vާ}꘣.{2EsȩU"]}#$<0[HR"#4bhDќ\{5Wɑ,9\ܙciGH:BD\[Ӂkڳg=+9*C%"y82l`GaZ}媏)JLJ@jVg֩3?VGYV84e%YϨVќ} ZߨhPou9ghgebś10- cV%GNҁu!ݻ_׶m ]nE)"5 YG>>Z׵>"_\5"@LGZޤfQC5[Wu2`r\lj/te` Ԏ:)?UjH5UD&Ө2_v>|C#ioLZIDATjZ[;( 5VҪI;DO5"4zIh=]Q1|?5gu\Ԯ%QQftٌj;8ѐ<&hg_&\#x׎r)niT{-kJ/~vctauu%9YݵѣyO#cсyUo S^CO0 $trV{yu׀R) pX>>S $@)7;rsF%~JP֐!YimqD1u3*b֑}| $FDFvZ]mN>lL$Iƌ3Hw;HqԢШʊ#`;rGXh,70vtRFhWz++N . ϼOߑ zn~,<ZLd*FKTiofvluuUk=Za(k, ;T68yOA_ h4l6q(h Zkd)ZFoh46yH1r9(E0R(JqN.rr.?i6yJ`|F229#غ1}t. $Bٶm[šJʊVVOF3 q#cL5hu۪mۦ#mꪚ+MA cL8ȥQV+TksSF|RRqY(RdB$΋ܳ^[q@?HffJCfSZ]Yj 5$!$HA`#m۵sرS۷!e6HBEP80Çux rW.)]G(J柆G{=eNgD5 IE7^=DH[yŋ$[`[YPMy/"~Set}׃+.uQ &15n岜 u I|1.–l`u#s[юǼ <`Ǐ~8GadWyeJƆkgZh,hP4io,$BqIj#'E֪e76rqwH}-ʍF/A# LVHjh*L2߭AX(sIuFQnݡt ZW0; R=fp$Io+qᴰY`O~釤-:sYKip!},Z04 e 0H✓d6vx/猬1rX#g+ܟfpyc0po~>8|ӗe ({iɫ>ofF w4`<HgIk&+2F+1O+9gza2?Cg|XeJzW/L?,? +.m#ItSz*QY ( Pߒ$}+%IkZ#' 9R{=!ӛqE#zE9l]{yOc4r<$2nzw5 @Xb+ GL+]r7q=ho|v!ǽ0B& k=*Nj` S3{YC wJ[ԕ ~|aYpOXc}zmċ>c ^Ȱi)U]Lo|s5BO 0%.~}A#wb3zk>W^x߁勐|+}fK|#@`F& R\ڬ7zC2M" igK_J}U]ba4JqE3R7boлEOx푹k.vh}p5vJ_WB"t"TX T1WO4v}ҥ^ss4o_l׵3q [Kd&ixti*eJa!4F)ms=I4#..s?'P`B&oP7vLH'` T1F(X*' rgCb`k @#M4a  o&dSwkL;؍|f TT@;˽OB~F g̜r97q;7<_e5NX& 7`ƌ]Hܵj2=1gӝH5vh=HuV%66ڶ9}*̹z:R)~`9QP#fQ767[όP2rZVl1s9xK G2NҸc?}}}44 Aj@8fEQ?+-,+Lǭ4מ={t҉ ߴA[ӐtuvIϾDEE`럒$/<&*;.!)TKjgXqMUR @,elS)eXDPy[Ui+]gnp5rza^?j,VՃK:AP @E 4tOe@X,H5s`e6'x@ VFP#y3{ۮo'?c] u-o'=7;*7^gρ%KWgG=2֨zʓw\}:r{V@Pyϗw (UYX}R/}nwpnwCv7Ieτ#`V~gfϸկT6Wv;_:PE͉s}G=ޕ@MM<_c^M/|D˪f/?7|,w6UyO#?l @yOj J@=0z<}`z{So?`əCk'0MIIy&`Rek.8_?yeNUX >T_=f `~jb h#@ؒ@H[( ` ,<#P-$C` l /$ 8@w0a[ /\:"Ё `+!,% ,+"0&$e1BDX!@XDT)"@XT"@"0gHuQ" "0@PSE`^jbqŝ9 # ,`+ @FlEHHDX#@@yHKL `j ,"0}HF`f 6@=yOK BFCX#@@oElYn:?#v)s;H[E# HZ͟oL> SyR"@[k  H( @@ P@$  H( @@ P@$  H( @@ P@$  H( @@ P@$4=L=)32fs` ,n$iu身y<2jǎ]:u7tXxK"@X*?ɏtp>pҍu#o)kcsNտ)79}S`),-kt-o#>f#Iȣ鷼ߧ믽Z/{> $%q5W鄓NF˿QF't*s dX  ,:mQڪ8;v+C9d!D``muXk坣غW X `оvL $PD(U 9t׿+t]wg?z)z_H__uQG~G3 z2fSd/.{s{/yO%I+ͦЇ}x^~ы_Rl˿?Yz;ߦ9F{Stl}V>x;u>QwoQaǟYv e{mB[0H8A41Cц;L4za p0jZ \Z얶XvwIdndo2w7woW\?E|2MREB/YPZ_1RmM-XR͝3G^\-εZbf*ToeY:pRU֬\2-YX7CG%;,a ~}*60:#D9OHN76jR^snʔJM}>͞UvX,~>P*RNNwpI^T֯S#AmZ/d͑!VU=VK[||3+˲4ag蠀G녋FU_9vUuH54h k񢅒t+ݝFu7\k3^zz{3r*'Oˣ)| " }}[t⇓Py$XGuF"zCkSЎvɶm=Ɍq{>RtEڭV|(<:Ru[{ڹgΟQۼQonؤPHu7j냏?UgKϪftgLW{GVAZv{:ODưFs]LMU3g|>,r;cNϧ$сex7@@ H@ ( d˲dY1fq_+΃xG! ?'WH PP(?Gƶݎc۲<<pb> %@V() *T">v7IvGTRD +UPTD|\v!֭.Yp ȗD kTVUzBm u%/*㡈=2ƨe)UVU;ǽ.f(רnFn(7wҩ1nG{ ,G&$Xy^GcCCEQ~a5c( dʪj%JVq(cJ Ĕq,˒?'WBUUe2 &:*8ve}RIENDB`hkl-5.1.7/Documentation/figures/e2k_3.asy0000664000175000017500000000051014677222567017200 0ustar00piccapiccaimport eulerians; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); eulerians(0, 90, 0); hkl-5.1.7/Documentation/figures/Makefile.in0000664000175000017500000005447615144640450017631 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = sirius$(EXEEXT) subdir = Documentation/figures ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_noinst_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) sirius_SOURCES = sirius.c sirius_OBJECTS = sirius.$(OBJEXT) sirius_LDADD = $(LDADD) am__DEPENDENCIES_1 = sirius_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/sirius.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = sirius.c DIST_SOURCES = sirius.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(dist_noinst_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ XVFB_FLAGS = -s "-screen 0 1024x768x24 -ac +extension GLX +render -noreset" AM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GOBJECT_CFLAGS) \ $(GSL_CFLAGS) # wee need access to the private part until the trajectory is done. AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(GLIB_LIBS) \ $(GOBJECT_LIBS) \ $(GSL_LIBS) SIRIUSFILES = s1-11.dat s2-11.dat s1-101.dat s2-101.dat m1-11.dat m2-11.dat m1-101.dat m2-101.dat m3-100.dat traj_n.dat SVGFILES = sirius-s.svg sirius-m.svg sirius-m-zoom.svg traj_n.svg sirius-m3-100.svg dist_noinst_DATA = \ 3S+1D.png \ B_b3_y.png \ B_a.png \ B_b.png \ crystal.png \ 4S+2D.png \ 4S+2D_reciprocal.png \ 4S+2D_reciprocal2.png \ 4S+2D_reciprocal3.png \ 4S+2D_reciprocal4.png \ ghkl.png \ ghkl-collision.png \ k4cv.png \ k6c.png \ med2_3_slits.png \ zaxis.png \ e2k_1.png \ e2k_2.png \ e2k_3.png \ e2k_4.png \ qper_qpar.png \ $(SIRIUSFILES) \ $(SVGFILES) CLEANFILES = $(SIRIUSFILES) $(SVGFILES) sirius-stamp MAINTAINERCLEANFILES = $(dist_noinst_DATA) EXTRA_DIST = \ 3S+1D.asy \ B_b3_y.asy \ B_a.asy \ B_b.asy \ crystal.asy \ 4S+2D.asy \ 4S+2D_reciprocal.asy \ 4S+2D_reciprocal2.asy \ 4S+2D_reciprocal3.asy \ 4S+2D_reciprocal4.asy \ ghkl.png \ ghkl-collision.png \ k4cv.asy \ k6c.asy \ med2_3_slits.asy \ diffractometer.asy \ zaxis.asy \ eulerians.asy \ e2k_1.asy \ e2k_2.asy \ e2k_3.asy \ e2k_4.asy \ qper_qpar.asy \ sirius-s.gnuplot \ sirius-m.gnuplot \ sirius-m-zoom.gnuplot \ sirius-m3-100.gnuplot \ traj_n.gnuplot all: all-am .SUFFIXES: .SUFFIXES: .asy .c .gnuplot .lo .o .obj .pdf .png .svg $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/figures/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/figures/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: $(am__rm_f) $(noinst_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) sirius$(EXEEXT): $(sirius_OBJECTS) $(sirius_DEPENDENCIES) $(EXTRA_sirius_DEPENDENCIES) @rm -f sirius$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sirius_OBJECTS) $(sirius_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sirius.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -$(am__rm_f) $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/sirius.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/sirius.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile .asy.png: -LIBGL_ALWAYS_SOFTWARE=true @XVFB_RUN@ $(XVFB_FLAGS) @ASY@ -config "" -d -render=4 -f png -o $(@:.png=) $< .asy.pdf: --LIBGL_ALWAYS_SOFTWARE=true @XVFB_RUN@ $(XVFB_FLAGS) @ASY@ -config "" -d -render=0 -f pdf -noprc -o $@ $< .gnuplot.svg: -@GNUPLOT@ $< $(SVGFILES): $(SIRIUSFILES) sirius-stamp: sirius @rm -f sirius-temp @touch sirius-temp cd $(builddir) && ./sirius @mv -f sirius-temp $@ $(SIRIUSFILES): sirius-stamp @if test -f $@; then :; else \ trap 'rm -rf sirius.lock sirius.stamp' 1 2 13 15; \ if mkdir sirius.lock 2>/dev/null; then \ rm -f sirius.stamp; \ $(MAKE) $(AM_MAKEFLAGS) sirius.stamp; \ else \ while test -d sirius.lock; do sleep 1; done; \ test -f sirius.stamp; exit $$?; \ fi; \ fi # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/Documentation/figures/4S+2D_reciprocal3.png0000664000175000017500000043740515136610376021311 0ustar00piccapiccaPNG  IHDRL`[bsRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx}},@R$8kIDciM&d&΂dו}䪮N(\IU*wľl9Q|\‚RTžKE9K)K2E*"fJȕc,D=̼_U(tv?~S !f^F zP:$HU ($j$9H0M Vf~V6SƧǏ7:^1F^n%IfԠ z >W (g @G[ kwu'4a $L-$D $D"@@$0UzzVWWl6y}ǧz`jhuuuOWjXbla0#I^$#H@IR ܐ aI0mLzܳ$'@"<$oee%V/`m6H0Dx8DDxQvWRFx@0Og#<hHik !<tL#H <lj`P"h+++z?$-..&T xiã^U#"@0z^HrfYܢ`̰ r$ Zխ6^0I"<$[`) H& jAZ-u] H&JOPs3$Db "  "  "  "  "  "  " %@ҿz `-$Sǟзxk zOHڙ3Bկ~%uLKh0]vTK Zǧffvis^X wΩVIVѮ]%I]X uVӮ]3ѣ>Z>H7@ V.9 W!@0>4$ TӮ]+_F J]Gsx$Ԇ؜s{*V ܧ'"w˺k4\ѕ+W_~Y/^׽Z?` P`|[k׮][HsҌ~W]$X y'533#fle۵k^{~>] .HΩSVIgH9H334\׾lC`|WmHINm}J!@0U ̸ 4@iffF/_֟)Hɓ5333<@{6@mU!]|ml $S웺ꪫ=FKNQ- oͿ+{`$Sڵk0@hپp*jI5]{U,A`j|i.?{\V\9Hq vnas hf 8 #@0>%}'ιK7RCGQ¢gzŸ2&42ei\1{3w~~U3WmI>1 0vE>\Sc9^'TSCe<^|Ei cK/^招[a`0 "@v# o@=h,PFE>kEczc'L%ns;'o 8H󍼟m:dq i$4p(y띊$$D!@;xe=Hd`$ Kr?i4Ҷ-z<98(aؓ"`xaCgΟ!HB$$pQ c{oa $_OBQSu_cx=u5nhW)n/n_ $HvH w^:r-.\I%=mKuFYbۗ٧&09q l]g3|6^ HN Q`zhuuUv[iE$WM-Ӣ~jU51~Ƒmm멊o[tˍT3H4yB$7H :;LT8ى8Ų4sâmQq hm쓧_޾&8=uykEc: ʀpp{K5҄a 1'Y]ua==l^o/Ymjϥʫĭl݋Χ%ڞfKpdMl}>U1 霣*q l^w pnvB AG­Wn2~b˚q'}{oOK{sv0-8*}}׆IarlO$S Pdom+8@QAF^"[U0m&00Njٶ ݳW|{@ -.>x1-laږ<܊0Վ`ITmja[ղnWs?yۤi}p*KDx*8y>><28Yc7Ǐ6^بz)Ȉ D;vl"㯬8E=: z9U#74:(ϖXIIGFfkj*B' ;VU8E!Ҹ @0LHZG{٬jg+< ln+m>&oj7TMbh4.˸3߮z6lǎ鎛F3aΟ("MKhdCPbz' UGE0u̅3HcC@z++= -mɸ\9xptw/v~:_ 9 ;HXz-ziMmӆSY5VK50w`n1q8Eg.p`걅 !v$G*#'r+jkee,:Z)z*#iLSԸ6LVdز1C%@DJ}-̱cNh?EsP3fqq3u+?W;ZzpITtx2(}s{YIZ}b>A}>0UYTTG[UGeU͆*^T zT lix+g$>[ng ՆRCRtQ MT J')1y*{jl}6qVPK&DH *DZ\t¹MǏ;㦱iqq{oAbWKՒ^/C'OeQ\PؚVF*]>YB*Fy]QTRu|qQ7UVcQ"+L/$`ʊS}$UwokVe<K:)fR9EDQ^:Ҏ]9("rz6saퟲfRCUMJ!\8S206S-la olzleE[\{c4>{F?:Q{bW!b{NANaײ\s/}mnO~q˘@x4{᪣2~U . {ozSow =A'Шر?ϬD IHzUҿ?~\W$]6/\|=#lOYG݋]ut/Q꨺K68!4*]ڶyg1yrQny,K5Uh pbT zT iܵ[?\ыe,Ǿ?HW-uvDĉfSpx۴Ҷs/}mҴK۶>&1jذb-V_|QlZDHT" _٣fv釗Z 貤׆ܯʤYdoe{O65V9&b?]enS-j~8԰/nYȆ߫d:H"@q?=VsB n'X?'u_ʵ{Գ?_}E]"G-x=:t(j34j5GM͆jCi z/`^[&nC`cT҆6^={˛@VVF!Ho[\oߧH}ZM j3?Տ_{Me vHq{C=GG:<26JDCM|_̱+ؖI l?/{Fﻝd3U/LVg~_Hڥk_{M_˯zuUWu33V5֟}k]<ytip[}$96]K6=I.k۴T>~Yê<+jܢ2y𨬟I?-_$ 6^ܨzS geeT)sho]\gߜV5bz׭?{ f.]= m>l]HK4uS;&k뚜Z%'Tz?i4lO~cA갨"f;*(gT‚,;k!R@sI?zT{醟ՒrE? =񭯩/]!SWjeEkSzBQ_jc*8 'TJr?mB|eFEz:q;MJpT>ıl|KH|'IOh+;{IW/w߹C~o˶uWչJ^tv.(LQhx*d=9&89T/nLL˘ HA!RI"Gē}UMUg}?}z\g6ymoǶh/FIz=l476,vUFYS`TCw(LF"D*48> IDAT4'cǴܳzǯj]U*9!~N=v݋]-}qiDRpd"8r_{ u{Ilm68J*O4 QQB"sqXvQ$GU#0JxHz|Bۛo=[߻uk"_z{(oT Hݾ).?L;QЃmw6^{qCy[i$Li L>`\@hc|s2Mpn[Q68@HOh+{6_yYOkv_ݒ޽mRo+8z;׭Vt${ۯ5mI'yڥmOYL(a% 0QU*;U$!O ?wOf+ >\7/,ܹo~Ot:QTd}t/kkAg-ōu=$iژjmYgq,2>'Uz,:;CT$``w??>߷uVHǏg^(* kkk뭦*Gq8Y4m ̌Wd RCpxd8,y,h 4Qle3 اõֽƟH&FʴU{V z ;B"`|8۟"EPf d_kgPyߢ~N}zOi¢[1G5IóR곏MvEGiT~,ʹ2G3,Z-qH`I׭}g*"ofs{ܣ'p k\$@i Gy~+ᱪ(ǂe58GDq?yHY UѹH[! V#TF 􆻦Q#9;lUs}CO;mM!QMyC<mF挙7UxTQdxT*~U(lIҠ( !eG["GGZ-H@5Rq9JQ%R'nsת.8JQup(ԤF!9uxdRѿLKp4 pR6`0zPnkƏܱc p٪&mB$׽y>,.H_sǒ@ $g4*y˼_T"ۖǦEUƸ%UyxTTn֘/_z c #@&ʊS$ GaOAjnߚ&ةit.,8sNRԃA]OܺLݯ]YD*r Iϰ˄ޭ7 V۫^]rE:vlt.Rn.GIIN@5(=`GVgY[}r[XHI7uveD_1ce(6DV{VH`tXN{n9k:OJ w=HMj''Z]uyE=dݏZSqhma*m}L5?Ϛ̏5>Q1 L*{5UL"@keE^#"#{Iۅ]rkkΧ{;%PrO^ϙՌHhSDm >zP,24*BUȞyOXxTIlAh4*"%C&۱c6iw.R% I;߬ǵoj~{5RTYA98J#oDhmB]=u#T#INsĨj(uv{vkqUp)id]ֶY¦}Ny+ LV)YPf5E #Q5s:a Y*[٢ wta.bXKECauk뭖tіދd5ֵi (3l*͡QJ4NQDzTTdfAPlv@Ş}"EEJp/~PkAU#y$rB$fsIpuĭ3m"6O<}_Xe5*;4GEE@VVVvňOh0:k眣gxP]lGGxM];=(i~Ql[v}Mar-iãq 5&p˛n-oeXCDykon:,z²Z_\vQARki뭖?kkΟ~9ي٦a%M޾RSsU0nY{*r8Vϟz !@a뜣O|cyIltWR9dze5-^Ac(ukA}چoGӧ)#82&M"fio_u=^e ?4ۛ۴q }WPf #6t9B$/$0=H!<_aCʚ;<(KEGq۫~Dx5RܘIl]m1-4*?9ך&bZpf C#?#@c':MnTnfli^_{ezؽVkrS䭠&>Q<dL=F,Vc RvhX6i!;[վxʹBD<6#۷u0(HQZ-ia6Җ7I %i3QZyLF&#, ><*BQ=8($J6^(~c Ýv5)<uatʚNU#6va}lisO3gӌt4m}>yo24*"(5c`ExTE흣ĦƦ1J*$ [pǹ}SKAa_m᧴?zD"@q<|o\ϵ}-mq{zOR{#wrniKt,m<}82p5Q{7SWvQuaYҰ( E:kdC$)^T>Axmkݞ-m5t:5 5͝ *d̠q[~넙-mE+m}L5? y{o:fcLTT=c XaG:GoB¢(* vWC%#bw{zO֥}Mv_%~%9"FuIN.uަ;$IKk^>|XZp-mqk*82ШhQ c9nsT1Wܶ2x%T T&liΨPI jZmm4:k-mICkҞ}Mmow9N~#F=~~K;VEA6GyLF#zonDcrM&mp`fC#6F((]!aEI6I'i}H9[n;rb-MuM<˝5Iki_K軛zbō-t4sѮYg1cNk΅5~Us1u]ƭlHTNrH hT@:n0)Zz]2KjtBa3'Ok.I-}ͭ{74pWeG/Zm-m!#M<X q;OAMYMk<59w!IYfBx4~c*&oz[Ck94;r-1j\IOlkwe7$T! cvTI٫O&]X۸1}.v{zi]k$[&$EҍGm̗s-iO<5Pٮ"%y#vM[Ҍme1Dx*")a3J5%虔L66!#iB"@u]ѝUGa!u )~6AO.kZIWKU[g$5k?Io9H9[ٞxs@wهוd!߇-mIK3w~(}ڸ=EN dAaKEQiB"@UGą@c$}&]X۸ <'u.֤a˚|@e䜴=@Ҍ9?ipe':667DJ2fڠ~YPZ١Quu5(xW>ָYUS|AW$, dx֑TLQ0)͵9C?9yZ8YI7<@zMҫ^Ii۷'T6vmpw+[M߹_! X{a U3Eʔ95C%p0oҫ@jg% ڙ2JSamT>+'Or誚4Sj@~,G^;~.sBj7 =Z˃ó>sknt1ړ|AjrB$ӧ^/ۘq 87Ò5QswtC#IB"@$: {.l̰qmڅrwnOvB?}M Qxc9+nFtZ9zv.V!Hp}9׮bڽCv"5NniK0%8*O~ L,4j)bۚ5fc9w#MHh7UHH LUGq_y4Ok&nO\%9n9ojI5Ɂvֶl=ti_SO.COۥm҃?uS5+]vB _%RDTVk&'DZ]M>nڠiڂxP+|Z5fc9Gsms[e$W! XK/Eu1^ /{~hU_;פkkw]S& 4>zMNxkAkҹ_;Ckaҭw('D8H?=$y;wKZ"e퓧-MS k&L"^Qc?q\G1;~YEA4G&  =(+ui^͓Zڠ)Eݞ^uŸywHO\\??ξmkmli :)ϫȴ2C#<Gxd<9m llYGZeC" 0Ŷ₣P(OX4( ZO:e N?3kWWݾͬ36%7JQ[_xh{Q@($m䎟MQއۃ2b <2<^Qc9nY=Os)Jȋ 5mg tEQTXMYݞ5Ի~kF"5GIz,8[֑TߤMvPv0_uu1z\O:t~sXCr˒~ZҪ#J$^e/:u۷ZҡCjdS} ՟E2OL75q,2`H1~M =2Ȏy/%!L"F^RDqPv(븰(ukA幞5pݟ;Tќ6~K#;ݒn܏#@sOSwk~>|}iX4˚\*ڶZZ.sˣ)OQcN9~ojDk=nY=OUa q, 6^ޘ*U/pgTu&, GE\rzn_5(mo[j6%IFS͟jhnmU߿ }5dMݾn:kXdQs=ƗWʚ?K:)&I&59qfh~?h2Ob^eBsI[d}Ln^ںvУ&0is7,H5^k}m]T+N4˺s9|4~m]:g5{ϜN"UC#+ cj2~?Gv}}o-{oz ySVuk~J"ã -ýCkk' h?msK>rXójzjso~@Kg?)\,kʺ6s8Esos9϶ߧYHHL/.H'AT \Ij>n]3 %m3lhͫ[_;̡سAiohOѥM^k;Cy* ~]=:<2$£r>3!kA"@`t]yGA⪃N?Zڪ#SaS{nO֜`a[גTh0ڒFUHj .uۿ8|R[̘F֙y_^e}pUP*G=hy-z2r>ܶ{#ٻ0m$&֖ q!MTѸW7n][c!}%MD[V߲cu#!H%W9[[_^ܧ|b*c\G>ں.?#e0ync#@`BnY^$>aޟivZcaֵ*YsA>)e-{6ُ F *%I7tcEJVci l il\ 6^ TjK;% Hl:SA&gxT:hv Lnu;~WGt@өHz6RYlpBKk:c =Ӷq>*wVeXbI Qq=L 1wuSã7cAEAEQYu&KuL߸'%iGI:Jn@Km-km%V#5mUGA7E <\;op!CюזxE@xd\67)Qo\ 0vw$8F :^Ik% Jwi&PyhkwiSzzGR呭W4ζ6APl>õ3+|75Fcy+2tFAc*}sMkDZ 1uQ71QQI_ǵ k6(=C[[67&\!67mB j|H~Z56a9|3N9_`i`[L+b}GeüAl ( Ldz#~WGzOuk,ײTZuwК.k݇S&G94}ЭBzj7HsšW4وu1lZ@{IC<GN0~z|ɟL3̸7ʴGy t/:eBI>͵\/(~؍ʝ;W)(HN戳c][g?rhtPP5RUGA}õ!Qy;#SL muܲ(s6#C#qƶرcǪ^TjjU KZyd|x'l:J9Ӛ~ǂٟ`|mҴTϾK=}IRV>z% kf/ʚ.h7>"2;ϫo|.hf/UWהaਈ˂#I{뜮Mmq1˞9b%Qz7^-{o)⌨@b݋]-=S֢x}^ۇ jv-zUG!ֹGwoMvöj?|ȖMI5is˚l3rV<ҹ{>3Oh("lzXrկwG"<*8G%Wxi| `)wZ(. J.uJHa+eIҹ{G 36i.d`Q7D4 Ȕ" [^5LLyxg 4P瑎sޑW-⏿]Y^UIs'w-js=|v UGA}?|YVKQy48*xF5S,|4GGvS6͟׸lc#@[=")uJ$3q_ιGn]3YQDv!m*!I*Ȗ` Z:Z4+'5 my,r_[/hT=~F K:^i*k3UGqj BET+k[mݳzM&|mYD]g#iiB{dCGD.;"< 0.  PŮN=x*sӼ4Tm>ZݾX޺pXIۘ2 KNxMRT4ײ\{DUҰMBoܣ;J:NұҌ'9K.<*oCohOھVPQm!SlItՑIE?y}#~VGv[eQ|f̃#8T! PJSi/ukA}Uu%C3rY~Bq'i" ۺU2VEYo[lk8WX͛[:Ct>D2b:82dINx4[LΏ1謹2!k C$$*(< Tō?ꚉj VN:ۚsHZI:_6EL1m \6"͓#<ڶN";`fc؄#-z*){mж5P u/vu_G?AR*ײ^Hr>uݺꨊ!ӥM/]lY¦S'lU#m/5& L3Q$]WL7qRƪ0>|~;B$BNbcGŏ]UeAl[OZ B#/$X'<** ^ZT۲ T%5Zl;5_ylV/vD6w,QBNARd+Dl +,[qU7Gs4߸We\(҃K|sp>ukA}Ӷjw/j4cԻ=5Zӥ}M5V궦۹mpQd(:CGţyܯ8XknqSj)z&3 QlZKgkD@ALIkaCi^G][u=ɽ6Gw,+麲; :47HgwIyߤt6;i9ט*<Dz{7fsת#u%:*2<[OqKz?a;ٻo]+"JӶ*AmUHeG! ֶ$}&YE?ğfkpTDK1K5i:L+j}E~eL'ȦƖu$e(S{<=<)Mz`(mZu܏ZS@f}] ( I=R)F6km=G#>Ow>R9#C$TRo]3Mq@xd\UƦ))t1D"@OZse o"\Js-hKz?EֵsN?VvEM*~~XOdK$GX#t`t>R )>lG=2ih5)£rT 0£YieB V9ٻ+Mmj{iSi ~Qzv9~{2T_1 [l Lh.cr #NE!i S竝QxUkyã]Z*)CƟj kEUTŬasDUDgYS~%"Nh,=ty~H )bs>d^4F*cI\Mok~v6!EUG~6U! Bb7_xPTx&Ͻ<Ɨumץíkqc\GOd8~wƗvdcL#W)#Kج3.?qYgI>߳ 1Խթ?< :K7mX$}JJo~iYI9oy/,H>ƗVS=%϶>_;n؍7ܺf?H Y_s?IXa 8rٴ hF\8'OՑɾamGIr#Igٻ囯YYk Ŀ u?uQKk:%g.m4q+ۺ6 %X, xial] @ F`xU֪DIe'<0JҦ'ֵ}s Iվ0(GV! Rw@K~p`4NURl)@Ro]s͋#;Ll'UdlB]yGyp$ u<&C4qӦ~Cku0芠, |[ko^ڛԺ>G>nҹ[ƗVҚf/5{Ɨִ]:֎16o]˹0ne[צG=~T5mqM)r!`Igzv*mЦjlcim} h܂޼u=^j_uGDO )'Drkj ɩVZ ÊRyGc\g£ɜ϶dDŖpeUfP[XTuivZcaֵ"2ڗ'a*7 c_ʾZ:$mmes٧﷎\vGk瞇CZF@R/@b  Rf0A$S6HÑSSJDz PЕx垨Py8:U ${UWߵj<; 5byf\[e@< |L]K?Bl7 A -pMKײG58:k5o:GgB[?ɹ8s4wqD4(<Ʋk\ֆC]m:= 5^|t)_ Cx+p05cV޺FDtHȧ`N?^cwk'%g;"hĕx1uMb'-vҵHVIҐo Hx pDxPYռ8M_+k2^7霺y\׌YEDD{7\5bkd[cw5odvl: A"r|6 A53IKR.:h<66Hģ:(g:ub7}ԑdyStma<&Mجen?=9tys9g181„#io](lICB@+ijq+WQCKב6‘O0߭Ƒ IDATf\\18 "qe>x?k3#ݜ8*TcYEDD{7Kפt ̱F6۵rOR]0.! D+RKʁx)yP8ʅ @gPT]DUuu8JM|9=UG*Hty5Y/ ɷ0f.w,N \\5.b88y๱GJɣ9B@1̋G 5QL\&չ\Τ1~J];.ʏUDhYeɚ]H muW\$|#pKN>r! fR“(/]HZ_Ft:&QH]1%d:T rJ2ӿ9~+u9nWA )szɮ#*C(Utٕ~c2o::wj ϚbαLs1Yҵ]G9uŷRRH守nzOq $psH> 9TuTw!A@JF2y u"qƴq CMISܥåMce2d|~ jw4~ȅ"l Tb\kß\@|B<_$P @똉G-ܮt?s% CcV޺FDDUX:tǚg;7̅fމ*Y̆e  &}>o B(O>H D0qٺ)qHs1WhƴtMU: !em0Ylqwu@Db_&%*?m~$\ﷱA@f`*躎mYdyØd?hLKGƚiGsV3c*8HM$p6]*RYj^ 0ª瑍pT+Q܎U]EM4GYڝKbud ct~a &˝X1AJ=[#3z*u$@ڲ?U 0bMp:Q8oN+{73k:޷KHa]H!]Gbe3y?$-eH2⑊8T[udܟ~LRo4js4ב.΄ZRHP"QF}9&)ydH kSJ̩.$HelV4":"C1&ޥåMcG G \#"ztj`JRhNG(#yq6u}$gkJX 95 hQS$Q]|[ǒgѸ+ӾGUtՍkv^6.I1]HV\Gܱx1gKgiq\ H{=O᳌ `>/tq G&U3ihQu+בٜP kF3B,,/!XLf#=\HfNu ב/>!k,_ޢhLiבu!*͟w&{#[ޅRD]Gc(w#bp$Gb3]I))*,r @gőxu@4upL,ql, (O};H. Gbfl#[$]GsT!ҾvpkE0 @'c*n:2CgJ6y2Yrh|L)p GTLExM-"쏔딒G (FhvpGn$Sp5Ls1W.n4Rt\GB~v!~rH:xT@u)5!>)ߜ X:mwiH.B<-G.\18E(CC̕¼`z@ȉĖopABUHMHsB?QyiB$quqtM@XgyKXqB (<urxrQ2Jg}&kvtͱL~ytj]H9y;VO!f^\t~>k&c~l#?q ҅!)qtYL̼@}?pr|A>Jȡ y=aNRO,-_""汲qb>]G‘LWCy,)u!I:"r8[>~V{^w~ @GGu~ݵȅ+dzxJJIpƷc3/!t̹ ƫ}$Q9ŕ xhR7uB8%i:Ӓk.1ݱy̱oKIK5=0BF:$GI7S$8.~UȻ# ^BEʅ 7Fhw삘 C*1LE=8Na+ܸL<:QJm 8qW*!K. b:} hB3"1'& ]vA\nN>"x!d-4Y_/]s96l*HR3wE|mB&veԺZ|i%BVQkJZ !9⮓8Z<Cq:s]B Gd?=UZdx9#+H. *Vkt_O+|yHFAm9, t>@@ѧ#hAO"LHב .5Ǭ\FDDUT4ud ׇ8QM$[ltHs!-0%{Mq!A@:qmqq4"-"=zܢ]l>\<*!J.$I Qs Cv޿C p/6D*p 0(b_tM[.GpBxTKxԦCkk\]sUXï 6I${XS>or*ٺ ]=Vtb[짳ҵ;.\:s-5ˣSROZ5y}dp{*^?\Jx $W6现q:2FGDD!x 9c.|0 Qs.?N幎#&GE>tzmHX}::lq_w:U9x4hLiW^َ)t1yiyP~9ՇG.)! /yS\uL~*&BØ[D4{XmC\G1zg(ʅߎ}$f\}3ҦM"(a Ϳ,IB׵S6I ٴJ^*pLPRt4t% uTsXFh쑑 Ɂs%'G%+$zdq b6O6tĢ6㤻|Giڝ^_Sq]&L:*蔂udS˅ĕ3pb}ąDwD)7]$Go]d"KJĜs!ML<*]z1AH kxey_ܥ|,KC@?8\GDk[2{4Y9 GG'iZV6e̕E"e,~H4~Bw-Cw:byA{&%j'"'F(34UHGsu MiZo4åMJck:ރktxu7RLN^j.SƓpF658,}h5 Xo Ѵt‘#s5L♎םS{|.5<~cZ!Քq 4 kY8B߅xTM1"1qGft}ߤ]| @#OGtWG>bٺpQe2atmY\i# M~47_>X6$WF6uRbs*uBkOSByj FjG 檠2đT7Os1:㲱>J Y\#GjoVӜߘG&/)6. 8*ȅ} !#߽Zfa2Ҧ:4hKaiNR{k#a:e%es 8nx.g^H*"..4xѺ B`P߳~VH!|f8qp5+ߞ:&EAݸ!d||OXPj֭.$sSB@=vQr]#<%_ܵ @)Ii6_bN:T< :-[Eј&5"kr^WSԠa$_)MpQBr{;`<#Q> A+XL d )`鈮U(u5\G GDҵd] v.>#]lqy~:N-.Nʹ'1Nėr˹br1Gp] #1 8?_SEw-#UG+WMtLz9(R^,^%{!Y:^G\x@1 ㇠#I8HؙkmۇS@TUuP8"]ڐ!`7&bw47+_S*)+aÉ7\ sg.jMg>J]^-$=ߒrɈߦvAT<#Tv YڣblRl xr5WTwB Y"8(Ӧk)Cȳ҅{مkï\HT<˫vAձ6#Kzt r$)wpi@w~z7/L\G@Z$au!q_Et0z#Lk@ ؃Q!嚥a$Ɉvq>Džuɚ\G#"z1MWK\]kڮQsRCҀH8)kiӞ;~\H!}!&?VQTs1k2^c^R{4Y/ .{`#Qff [(qBrxmp : _nm.T?2V\#"ݺ#Bre6npBr6*"yp؞8Y :Rߣ?usUt؊Y'x&q--_""KԢ׎DFuQ@ۅ"L8cBq]Gr;j m?>!~N @){#ա l]I]G_Ro4åAy#]%`+ >(18]HFŵ>$.HCHJxy8r%ŶuBql"&&tVv=6[<2{trMmS|GL(|F8Цkv0Hb69-]\>:l!nב*ln{zX^4 IDAT޻aDs} #[Or {#f*]H>Fy *_k#8zpr(9FѱxA(>\uθx],K 7d}լt5\=*mp,mm/"Q9R((= Ea`ρKJ/H7WqwU5:KSoҀ&g5JLŴq@"3<9_/k7Prt BN6!gCB@@7|3nבxcf%7c3vn6{G2 9>j!{#97 p嘟Ј5~tj: Gy\H k'%{gDh|]sKE|\k+m&Z| r6f?| 6"HFL +]] +e\9c.| cv1B@#C%@@q\ GsG*.2Y/oQo4|)>Kֱ]kE~JD% !օ`]#@x٥k-Cu @\۫Qr/N8*$thrvM?@q}.N[8>r!D.e\H۝_Ѻ#.-?r! @GM_UmW]Gn׈O/"t@ĩ3J\HT";dg/og D?TuMQSmspϷh҆q $G>A9Rl#Q7odSh9Dh2 !ǚMr gkZ}R#SBA5lhplpp#½F scGbrÍ{DR{k.#-KW1#ZyELg2fH⑤gYKrn C@R:rU2! *YӁQ0=N*KK$ A/YŢ\-g\/H8҅v%k` ^ /@@Hh,][P4 #WB#k[iZ_B82+u<۹18X$"@(É i!'@lh!ǵ! @$G8X6kv1 GDҵ^:49[,"e}xuKȢk/kr9h 9hS "Dס̵H'M nudBü+׈ΥGπ/t|6| |#N$Q {'MbI%FǴi/|_KC@@1WP9ƕ3ƕC,_""R[\2(>@0!܅zH 5R1BJ~gct鎵. hrVr.#Rpoҁ(pْ=s[84c8]G.E:%kJ\FDD l8׮BXxdו Y;s!}G݅}j@{@Q-c¸Wp8Jl#uTQgIϷhHtͅpK-cptDpaB>A'!0  "dv6u!\gkב Gz1. #Q#1(FQH]B?}fq@=ށBv4CMpq*ٮc:V'y~J+kw~zcc1/k##f$Ї'פBrZʡ xf/H RTDj8I:tǚ?L.m7FJSG\r=S O;6P2FBɑJ%k`Hј&kR.#G~bũ|EV1Br>xsr,:XW 3+]>`qxe]ruD4-]os]Ӛ˕[\n!QҼl., \tBQ:RX»X stU'\\%\F@4Y(?A8<۹1Jb>k΅>)I{%W @@viR%k1Mrg:^a-""ڻqtMۥ3TXţߛ:aHmqyZkUw]Hc -P;}mxauIre]~q!9pMKz1. #W,I<ȁRpipI0?} 6*TTsѽ~]$t\pNE^JD6 G^HG |@@q#qk0=<.];(Gb|̱͕rO޾(v([+뜹q/S߃ <3k]BOMU-ZGՙ*04$)wpi@w~zAs1Ūc<۹1$GXAuB*^fɀn|]lp }Z GFίKG*W8yKt0ܳd˵Ǫk/5dx.B#"߿n_R@<@]9Q- p+q! $|y&o]Y7&fys97-T#F:.%%Lw! şy"Rt!ƊHi{{@@O\}p G*BO(o9;Iw¼5G1 G\|γ1?aM~_<\G1䱄z̗g\HRD,`! 0ҵ#ݘ$q&c->-]ۻ7E.Q1ys9[HDT>.\yL~J]:\4uQ8bg+<#iZܮ#0^SQ<(u!Imv?}asp! Kg"uZ)z*=j&gޒ%Q8rQVF g1d$¬W% p!I8\pyrp\xyrn!; :-(Y|yz1MήV $ū['y\bQ!M^&M!p1<~F6@?oZG@@Gz}%.rL(YctMKײG5\pn GJhtIjEGods s@<3M #XGb938g5""sW)ģYG/kzcɉp3DDt@.$< f q &1)_EDD{72X;hO AD&Zt~V9$`d}B 0u&HL<ڻ!ϽJq-Fg;3F$V@2 Go_kŋ )CL&3Qs@Կ[Np:?!\G.r_pD4{iz\fүPq9hxTB!M^Zeǂr@$4Vt7ōV*ETq}@t 7d}Ut‘ (;\qJ:rn^ ]H-<$0d5BşϚb4J8b3f|nNR{\#];#C嘟0x;Qx{.%}UHB3 ߎG*y1BG%kV\#Z ׼ KZZn:!r̷K|-֒ˆp@@"Rp! :~L1 :' <8!#]J,_""եk BZK=+}-VQ(Ǒ!# oЍߘ9fjn?u?{>y{poMD=@MF7ΎEJ|Z|GDD@CodKF^ЂHܛlQ%⑉;Ja|hŚqwVhaY^6ב#\7Ϟqt "\H5Gꀀ G\>tP|yѣS'\ Q{kRd-⑗GkB*GC@G\⑭kG1ţd?h<-];kqxV5/vQqs9cTIJ._,aQ ~| @g'P/.5lt'ҵ;?z^⸊WOa!\% Ȳ|-%kN\WRMwK j}6zƟ*{xz,eC{6&W#V'-{c"(_HGƞ& @ 'JTE!U\\d㜊GYڣ&s$v13F$Vؼ|h(ilqBj#x?KX *8>rћFe nH(.. K$ Y/Ub.g8k.KK]GNgk\S6]:v5zW^xQ *s\Չ) Go:v-1\ _e햋GDkm)Y ąJOަW^x׻ޥ7A7a&"X J\/E+HoQo4z#( u!Nr//_d-0I^ 0Gz?{޽.< ]:Dd3#HP?T#:qKǸ]L&csy$sUp|pp->X7hH| %k!=c(ͅGSNFDDosy(˛;7rF(}uQ)#Xrh%G]pE4ǖC1N]ţЮͳŅdG|J<"&x𛇥_<@<'޼f xYZ-""ڻf-.crq{)5 *`xmzLPrCUO&r&~viC@FG.JLu ҵA}#)jֳ󽛕 H1?Z|}ޠPrDOަ^33/Oz,@qL@VxdS'c8ݱ%ۻt4/]B[σN_7VA<_a]َOEeپģsw?~}~>ymu8~򹏸#|GDDj.8Ř>{+W2?'QMZQȞZ >rx}ʽsYKg IDATxW½ȜG???oxqG#."/oQo4jyZ[]GPH4&/ C5Bb!/P}'DDgϹPȫ,/O/O5H@D_||}< t U<ίvyRSe>-_{ֻxvyen' y9o #.5]8Tc /oō5 #N"qHf\o#CxOPV67g"'O}2s w7G!JL‘5Hȵ#LEѣ G> _X<|ȦA4PoGܛ)k >:BG1] )5M[\_s=]?ģ5{,>hBz\+ CQɔ/ϠDHN7%G=832h~ZģJ|-@<"ʕ=?V$= ViGJr.$7(S')d.1,F~8#]]x4-]NK\;\wWl)  ka^˺yv(\HUkM9xq5:vxk(ax YR}Wkx. hrvKgNQJģY˫ #5xTQ.$GE~~.Oަ_WvV9w$@g9QZ<Ml{t.V\#"Yùv' S)[_B#)S<[xB)k+Uɍ:z : kl.HŵiMSt4$+'Rp#Z>b:Vn|yntAs7ߤ\.ģ74Za:H:ȅc (+] hb~>{M8` yx^z~v׷u! {p޽ns QN??O~.M#S(@EP@@t6W_lm~vY1FgX"%Zi!Akp$ {)}Z[#(}-3>G/$%RM&Qw%HN$-T$HI"B<Ro4zu]86QI"KZFyv`}7=R}[#Ka @@tFӢJ< >QJ]:\d]$H‘TCR˺|u|~<> ីz#{XJؤ~  HpB<>@0= hf}&nBHz ʴhy6XmnR8jkcnMGp7.$)&Hֳ›׸#C1UVPt-Tɚ ב+B =Gͳ:_nﱚGm+ 'ozzԁ0sA@e*g.~"%)wpiP]f]qA<">R YYB(C˅8\ONz}&"xf*n)IYHV>҅S<>B<=GDǥk>2s&Ir$i*|J,_kxDBN@Ly $@}6:E5D܄$\H?* Zk#x%f1{ؕ-ݹxBI,?TٱG>Z^?3,B\HR.WP |! Zxtu!]0v]ܰw&Hu$(Q40̫y6#_05W)pE =&S@"g58l1ug=- d-&Qh&E~ǽֱJ =/pc8ܗ.#s!+cGĒ7&`7;nbJ\ Otz#5MSߜܹtA1A.e8#.|G!-Z`\ģu?kRg<}~>y.$){Kyg ZK -,%d}M/vQXF̂Q^Jc:<5G/]Qyg17ű+o]#"<&Iš`TDl 9$H].'Ɯ@QS+I,.C: +[D4{\ב߸R!~y6^&噷é Icαm>]ܳ.^sH,_[oRUS6':uk*K:%qK-S2&/k8xD0 MHY&@@D PY6ϥxą !q\2JiʴtΥ 9prKב$$Y DɽiK=kB5]HF B> gHh=G}uY<""oOK}.nǞdGbL_BQͳ]G|oIxs`s!Ib %#J(Y*p%q#Ro4ZZ7TQ#,ߛ ͳc<|M !|  dVBH=J/bsiZ{4YWh4[F޾ kBY$|uA:$@pg<.v M l YBhFU,QQD2,_xd׷+b)W ! #ΞG˪b ==d]k3cn6?Fבobv-ɑKgͳ=hGB?ot!bʵc 4=/XϦEl#hHј&եk1GY87 U^ţTbړr%߻>Z(t}WKQR{4Yh0S<ߊ4|BnZ3`TĸyvZG݀9$*1 pCh3уO xb5zC÷xdC^no*5!#X Fy }x䓚ZHќ I@>Ĕ+ H(=51EӥxPr !J65A#B3 :$xN> %*sn|qYO6cṟٛti0N(ٱqV~|ĻSk ~ 3{Bc8Ő0={S<ѭ?~ߑ‘9rR~\>]H͆6].P@<穟Y!J| ţd?]:\,]_ţdMI<⦫‘(O>Rjs X"]HA?p@x}č+߮qGe=/6eɁk^6dm(fבÌ0(#5φxĺ5aWP*B --G@@f`lMxzɸ+[i|Z,Q~GO+;pdP(q5G^9 ~\ĸ$ mT@@e`4-_/}a_}t)짳Gڱkj\\#A@4sE E<2uk<"\HY)>@x:} An)h%15"GGݺEAxI?4QjxD|-'W' IڞІk~1@,;3?Αa ӣth't:W(,{qP(9& : ׎\v %b"񈈹|-Bjj5q0 уo@_lےtmeP~GDT,~Bg`}z\Q*_}`w2 @@dS<2R8W Osk&9 ue /ԋGU8ՕQpߟq!a-_ -J0.$IeB?ڀKw ;ftu:t"<[{bz87y^\m}܏nRoͅQb=4Ք%R"GޚgCcfqKXEј&/E,e*#.ؾ/14z>i ģ)_as2!Hq?ò?uqu"Ր짳G\3aUG4ݝG^J\ޯQ hFy{)'Q,Yslk(]”32!HQNq;b|+⯼urkPW#e%kk#@8C>zQ%`)_x41'.$I{eQ/wBt $(J#N8Jߪs \Wh'5p9^a^:wu‘˨1M^^ H#B=]$  z D1(/k8ҵXţnݢxLO$ G.DQ"5> )} y@ G~YSB< !짳ݹx!:`Y⠢IhC(ql#GX7Іx4a..$IK̹{ HqB@D'.Jlc  2h'f]o;""?ͲckI;y2b~^@8GV.$i?ct9wc Ityέp# YUҵQ;R<](`Y4ʓO9l 5lRrCсC0 H׸i%wɚơ<+];\d}-*[h?ͲŚ7u@&;$SN!x>ˆ򕷮-MW~G1$ G8}y6'-,ׄ5*KlQ竄1$rPwLDDך9~cRWu!zobntnjkySO6ЁS3G Ȱ|-h*)y8:iɩ WgB8]By@},kGv<ŒRzkՈG/Pd-W1\*FNGw,޾U~.D I^rl@4|s)MS'ع+__#QVvIţwgQeɚZe9c҅JkR#RH(W:b]HilIMh 4" -..p8t 6 "bhҿ9u^dCm}ɚe?Ӵ^<-.l=ɇ~gdxQ[ +._L@…$u9haM%~m"`>$U8\>gMogkJ}|G9}tk&ٟ|Wq<'"9z` "i-{BBeB=ʑ%%"aO%Lc~1b~m/Grģ_brISܥåzzsj]Gkq+TqW# k؛z^_zM9{v?ytqr6ek1j\YEŃ9sppGܪ$>Q?Ale~V ҅$q9huvBNit -..~3W_}u ]v>%Hx5lQo4ɋkQV\<^[8pu@<",_HBr!E i8B<`m{$d]uIވq!>@Xҵ`/NpH`_|G.ŚW޺FDȓxGh<`0hnm\q1@>Z;נUֆ}1Eklϖ6^S@Jlp(o@NU._""l0'c@NjDBE sBw6zé 򰖯tpG̎ţ>Uk4:ɽ GR]E*>jD3fS^H"YHsHiR8fqq%l9T~yRUc/xLlQo4ɋͥk#5urp/ׯA}$:DbRZShe4ě MMh5~~9ah8Z;P3(MSqnSZ/.ţ8NSd?=3\3;2Xm.g :ģ|~ 5X}.b,W8pT#jy͒0uF#/*vݎaw!Ō{yŽW_}vBjAGl:<@A $-MHJ,c&k;ٌ֗s"jl&=뉓9g=dI$geKىIb34ND9=|Fn !4I^nߪzn; T*eҵA|Wa}ޥkcʣ"+Le:RAEȬL0]gCK:v}AB*üa CL,]آdRY3C>|hdA<ʸʹFݣ?(G\f#K=NvYGTK(#X0j@kKȣk^!!pa SJpL0?+@zcxc4pXk4Cu<ԟޏo}E0rԑ깔[9$~P!b/Yؾd!.|-G}:Gq&o5ΑkEP_tnrA'}< H@ r s MKG֭={3ˣ-H)nQe;g)0HEB5,(DYHB5 >SX }t=< `rpE,..bqq%,//ayY!tK6qmܺu+q1LYa< *|a-];|2&fry˦ gFӺG5oc]'(IQk|`l*79 ڜE?3߁H&{ލ{ƩSߞkA}׮EnɣP\rׯ6&)#,ݔ&x4~zGZ Z-٘U&۷lkg:=aɣ3;ـT?\@R],ؿf!/.(szq1ٰjp{p}ܲݍh6bز;00p? mw{saLcS5o(dӄɪs Tw [k> )"@YŲ$(~fǥ=6vmI^!9viX/~guP }Fls/ @@lXgyH$Bh~ .˔"Fqabh||"۟w܋3~*P WWrebJ\˳V;^wO:>_ǦM0>>;7 x9rHN{WXQeQ13M z}$e[(Yeߦ Z2cNktKe MCن lנP˩ol>bl=_*0EBT0XK؞y;v?%'OMynkZSuQlsZMLW}X;NO:mNWӿgIeE*;bYHU 0FEC)4]׭3DD"ǭ:0?gK?aժpOg'>ݭF9A~g KJvŲc}gc [y0rs{q{q):._G<g*>Lјmy^5|dcZ$y/S5EwdyT|{yO_B'u2nݥj Y؇*s(J B*5:j ձPa>""sT"sƧHHƽ{رȴ_g~eo GNug}<`=>}ϣhŲ;{k4@ӀZ #zu˚0Q F[>❂P˙$LZC5BC,ΩUCK JW|JB>i) JƠORb#SiZnj$S(Z~Qq(v0Za6u--QLj2Ȓk.,"F* |&cb6`CoK%&:3dEHU>5)KLydͤ bRu (l}FFRu6ϭ2W(~z^T 9_"(5@$ lkd K:}-X 8,>j_yfDhzب2} ZDbJhXTEbJ#6ƾζ> Xׇ5kbw8^^KY(ZFShщ͓}D92CycVxLBC T X 1X*1I8rH~$l! M51}`_k%Ek,E02OCև7n0.:.]a߿WX>)J,_Sd[܅g qmQaYHe{M6^JPٱ~s,HJ| ͽGh+Ky$Ws h6QXnQECf3넢NXn]X=W]k'0j2.}c |yPiK|P82J>Vp B*%3"Tw_#$ĕkyKYO‚,a@b2Ro053ݘa-T8&FҵuzGZ lsf:^v;Y)Rꅣ{Lo.sC?9z8Zp"u,-鸱o ` m#7v}Y^kkuwe൮Vg (`KRY^ϲa1 $&wX*l@ˣʹbak-5alXv?T*bk17y KKXZuZn.owBG9[yd}[ۆZMEgӃ Ab\g!Qøe C B†,J|b2TWDF!t@vz IDATGgoFwZKCu/#>2Ecpb;1A\?1epc ;:5ʯ+aZhq9yB-HziD(lPs?3v|Cd^X 1dI%/ѝX*#I6Y,]ٿ:bQ! M51}`_kb{w$Qߩ6}*e}(KFͣ1e\q?,G1]݇Q(2k#J ?T=P)oAqeDuP10 ej@bBt-w~X*eIGQоQۉ_\ê{4} Ms#Il#6 EnRo:>TOґH7{(_\cR0UDfxKS5 ^ÚX&øg!Q8a mX$em|c(Kb4(ZwGm4W ZML~P;Eu(YI=U/Ss bfDj3LTX`ʆA麮 [*`?L#2`-{N՗tmF^6'>ݝ. FAأ@{ o?~K*q8>g 1=CL%BQm8zxZIizG'zG,$+9Dզ6"hmGIQ5nű2X19"% IQ),-w~}7&:טRn\6Vrau̯,slO;ri!,"Xi_ C>2P90c¶rwTd(Iskw>%"" :2u[R!f!1*DS4E' 1P X 1 QK !Tȡ,O>(2_&{~rG KEEkȐF} !z+*c"sTB(:#[7 P%Ga"H*eH*ɺ̔wcQ2#ni M51}`_fèi)Ъ;-dB c(DcɢmpYz< ()w~y7qqh6,*S Tw [k>]2e;jk:Yҗ((~B-)+RA3.DB<^>Xt8Il,2ǥM$$ю.l SؗI%oc T*dʣmQh>y4MŲ f8DѵhMGeyD5JE ^ί4YH/@RuBIJ!.H ȖJG^9bPy_9kzGR7Lw du6F f",' bɒ^?9'ृxrM' ":'bҦ`0=JԼhlL+*y#͸Tӳt͔G#G;SSd9ƝXOTȊ/&CzgN(B ae!mzA k*v.J8.Mu>cŔJ~z8}j5C$[.]죈6M\v_9װz䉓h_kcdݵ-FPbLKlQ4#ƛf.qB%ٔu\عqgKTbC-pzi{L"z >S8o(ЉÄZ<&)zhCs03#[oYYJ0Kh6.T<2YտJx|![&?'ry%݋:J_T[[Ck1#>E,WTA@YƔYH*9̦|˫v2,T20K*-zQx6M؇fè4q$<SlQ+|VHYӷ T U܁(;bC-7>BR Q? PNGER Td0W,TꋐG*i@aS&3K/TryQ`{t8`y*\}}&Cj܊{ä\Jר đJÏDJW"=$X 1 l#vJfv`ȤzMC8R&mU\CSMuxwbeTV;W( -Xmd^S; ƭzM)KbP"kA:l\@rۘ$-H D'ׯEJMT$WÁr(U,hO4pQCw-Bl$(ϡ%R))90L*HC1&@b&2GN hgK*-QOq5֯_wdE!saEi_$dz<>>ӠZ%g PhJ'x4T%ߊI#]7"X3(mFGgk"0s٣1^vS}4=7>Զ_h'?zMqQ0Yrr@ :PBL!YVR3(J-1HMug0W|5x(((ĸR.<:~XѨ]|NS|{hCs0-")Cdz#Snyy\v^ ?,W`;?_NQo.95_ Q,oRq_rO-; b= hR4dɉ㍟_ڛI,$ @b& ! ۿV}[[|qk1f0.L@=C݀!~;ߗ`H%@ѕJ1_vf%&kiay$ب}<bg!IGEFIOѧ 0Ŗ+>H H+G yL>`%<3v`5k v}W+uށuCr 40`6׼ߏ85+17;sp oG(Pg ׻W$ #]ʱf,a03 +G>J'ry%&W;7pEٸ 6n܂Mvv?k'$.̌9 cxds@㜱dtL%WʢyL0(Œ'%wO?*^w\2'iYH$_C-4đJ<ugP6R }rC^0t&`w~~N†ʆLI}*ԷB =<7W1{i5n_?-[~ns'=qZ]@jkhLU0ƹ FGgJ#H\!J%!+VGKXQCK'KMs| #_T4Iї) ܊}@b& ԗ ږ>X"i^Sӟ`ժ¾|S* vl ,%&OI,KTGKV}(}~m")us<ʼÌ:m6hR9=%Ra@2[Zlo'O[oHX!-nFM=|ͩ?`.]-FcJ%GYd?aP# <}ԫsNiܔbəYH,XC!3d!8pED|ILʱŀ0#3)݃ǎY64s_h#$h_o[KffF0::m:SI,hA!ٔqL(}9~G6bHZ]3ިh!^K20tm~~F3HZ@`0LSSrYb;ZnYyd'#_bK6ffGЏ3YfIw~tQr( #'r@ׅҸ)b'Ǹbe!`yV֑h#(R&Z$BD[F (X 1 BcAoɎ4M4M[{+ےEʘG1<`;͸̌!f033V4GQt2(uFH%,yY4$z$O D"(i $a&]nZZqQzC*~7TڕJgоfVeq+S1ySvyDuޣzVE-E#EQ,_;Q( (?1!<:Caa_"-_cFlG[ El;2.YоH*}x np 0:2+J6J΅Oʱ3LQYHlHUif VT6uIC=>X 1 Kcu[ѩwt#k1XqfѾ"f,9sLDe^S; M2cDx^f!zwNWŋ,VRjdŗIg*#Hpma7sSŪw/WRfЕJիmq5M]fk?>ϸ3k/ehO !,$J(x[naHرF"_&IHԳ|E;hk\,<8 H.H#QN"ʎ ]$BƪDB0"֭[Z<$/I}ѝLd잻8P>ch*X 1UCEE_EObce!m; ekQ1rMDHbP#yf!=*?s#`e!QGydQFi˦vxrDRl$%H xfb/Ȉ۶ ˈ(y$3R p. (+N4ÊH26əg#QXF% X 1  q5)Ų#)ﳠcJgecjuR$%yT8ʥnTDaSCюR$Q741nmCcX 1  FxmBDTy ׎A#?DRi4U}_ uV18Doqp2ż3a8G³ܔ-dde!|s ˽w=eg#E!?B H 8h\jtD\ <_ҵ?k,"Y[A[mLmffyn5TߣVE0JRKGѳ{LOp 84Qf!Ņ0b"#Ҡބj5ХȯK*m1m07= ` A= ,sgf WJEØP9aB) g!QX&SG6zH!d8WEWH$^HX?X 1 d}EkKd͇y-<зYi ;*-%^Fw8յ}0ig!tQ ,y%4 Q'^!3HaVVZPˣ6Y{NލKLH7s LND#[G$Qqc8G$y"u$F{D!^{d1nr^,qp# C6.]San(*pKB۪df'M_Y̝Q%<ރ1Q*|:׌hcqf!=].^E=Sq^TtZE(tǷF2)H ,r0N|YHBΌgk:ƝcCݥk.nh!ffF 1J/CPQ !k2GIbc-3B2^)$F,D+@bFODĺwobٔ* Z&) S׆H*Jm̎`t4-cFϟ[d}0B |іGaG%N-C&kig|#^ĐH\aX5j;獞QLo]lߝ;G~4a?K$BRy,?2呔%ka2#X$׀>C cnz* gHFBzޛi,yA%=.@ q։}|.bI=5++-BǔtKDD`0L[@&E4oˣbhu緎\jhXw},dzTT+|:R+#by%˹XmdVS3Ⳗٜa, dJ%q=! e繧g!=r`CŖ' SŕF)'7N=#{∤l$g EIl!'J"?X 1 gkXN< %y^~<_\r/L*[m+sDLs\~=JwpV.c;ˣg8G8y2ޖ摱kHm ҈5H@6gCQDzh_agARm X#aYGg4ƝjU8>=,_GG]^JZRIVVQ][%lEgTq*qtbyhC97t)KyH"M:"' FӃS$q>B:,HBQB:W;n߁Hg 1Lh40>>fOt!цոL(4XijcB}=cI:DQ>w ृxuG,)\E&/KDI))Rd9D}n:Ǚ$:gIcDͤ*9QnGE@GpJGZV(J֑$q0Jz.g4N$er`I Nf#e+RX"q $ab1>> j5<tA>bJژUy-|mTJo%o4שmJv+J4/XozxN^>7ʔH)&3Rt(jQ$q7Hotzl$Af3`iO$pg#P.69$sHIa0=Yhll wp N+{GMXe ո$&^0 ǔ`'ǧ`{3ZfHR55ҥ6 dy&mRLњyC?t=엕d&t@y㻟 ZISazSYK֢Yֻxˣ7)K&YV<S  bp]G*1  [RƙU5:Jc4ơLgv"|$L9QJqiC[OpO"s/s?F~]+:YPF"ik DbUA,4H ʣ)Y\ )dЛO(iǢ eyD-< #Sn(ikӧw[_tHՒ.g ^]CD1d!e%Ҋ(/3z`ú㛷-E$=f ~)JTK I4H SzŲ5.5XR+,C-nH;J@s2zƜJ"axJ%WtPC6eWTj/qҝsp 빧>;Fw]X*1ʓ@L,G6#SGiq?FC3ՃHH&n6m#%4DH~ma֢J$H SzGcccؿ6vD LȂdEtPCeO [[v[[h]nᝯ™ O}v vcȻpDHaw"Ca߰}SLy+(@fio}"d(\:EIl$F̯H$ǨI$ no4j6ܖnah`||nWfRHfe#ytT"٪sQ"lBYHi,FYR΋ f,"Ɛ X%B 2(8r&Tj4jxub&#J$Q|xK<G.Wū!tady3ωDRGRd>b .9 I*$RZX 1؋e'w"i.QUY չcyeCT*ɏJw~'}MhԱvc;bi}9Ai1L,p"hxO[~ǑG>K֢els>-~.`$onpf932I$lJnaԕK%m$esW> J"X 1bˣ"28b ZFq$moE3YPtE/2!C'JϜ7qTzj͝}Y*Iܐ1b$7؀VC_w[ I'e!@Csdlާ#t#l3cMYr)D@]j~i%dUim@b0%kY([G(B|S9'>)ITjmݯRQ @Ju=ppoG {.(ˣel=%G^S'DF۟)lՋlG̣\f_ҖDr@Bb(a@zGv.y\8CՋ>)bGziP5}-xX)̅XCŘSrK;}LC$6OTbғuBft- MK2@$}7H됐W,iݧ.h\)mFRK$3(3d*>)P =rHnK6Ðf||+ܠAz|vdĪxMJ9geUV%EQ3qM*o=~nz0VK"mz|$3ȯAHFyLrl UJc\%;?:ЭfvgG$u3+I$Hsj '.#)IdQ"md0Ƭw466NiHk_ЕJk7v+T* uYHeDI#հXH#s 9?:;r$M|\uRI$,&yy)[1(> IH,zGo^AYQYb4GţR!L|2`IT_ʦ *#t)L8Su+8"5"A;~M4O'uf "ӏX8XutLImKڒH$+(T# 1"scxvX 1 (y$2#*qPB9ay*q`Cө۰ G?3^7SrpK% ϋї= 鑄QG. w[L#cAKy Gng!Y+ՠ3"؞]W"6:>X"2X 1 zGd呬} Iib1.s\RX8#eya&~v#4$ 4K uđmMI3]8y%r-H*z䏫RIHH7H `0b;ljjr .{C2Q>P%ޡ;fy9 G%kBJ(|,5w>k]dIN>ϝZH2IGά$kE6JkFru&I;ª"X 1LGYAB!([5daVGv߸իV_P+CwMS۾`Ab ]R._[Y!$#[{$E}bH\r4ʣXH6UIt5"[L<;!9u,TW()5-e +ퟅ$ ?}:$ $M]*6MGI3J׃L|ޠ IDATgPW+爀J_"6}+FH%>b>Y,<'9Dih9GGNI}Xѩpwď)N^m)7)\u\5%+=.AAhk `񔒘i;va2¬wDY@R#eCIJ>C/1؇1i@&I 44͆b- ui7S:pK7:R>T* ,9op!yG>r=+2YF"yd:#oQHhVS(94CR&~>u?dv!H~Dflwej.\"!9!Þþ1gX 1L'šL{J/ץLn(Ɣ}x!>bʉ0SrVڿ?X*U6U{7A~;)Ma}qh%lGGm~%<đ&Iff'u3B-5`fx!%9-I h)xqQ@bv`J&RfQӐJu4rKXu1 /nYHχBJ7(ȓ_Ѝakԕ=5HGwm헍eQk\ޑI!"&%#j-e3ۊ.&&K+.!IH # {lKքdqa k3NY#-aeCJB99Bm.œ5 [GLIvRk*\`Wk*-% @(7@4wQ#aƑ-J$ :#E?%R K" ]3G= ^ X 1 ATwsdFQ72M#jx$X)?*^:/#TD FuT*W Ȗ1Xy-,٢'֗] ˣ QE3F{Æ9D$ϝtMT_"{3dR,$٢y E:ISY9@bpvOdJ0nIc,/_c$nz wR)#\jBݐ,v} ,as&Q$:ljv"$t`lɖY I@BIL#[CK<; “(l2;Y$ X 1LBYpE;F&Ѩ7%C*8$'z9נA ARрdJk;KoGBk{|~>B,asiT"921u~YxlH C(H$L`_f9YHYO "&vܾCz,&zG,X˞}TGdyWdJ%|')~g`#ZZ8 `IhT%<Ho:P "= /8-ʓG=#>BAsop-,`*XwY36;f fٳ,I13rMb^C")L$H qLLLp#?>EyD=>k~TMr?zWqHCC͔ʦ XrImE.UR+!i$HbqFeH3{砻#lc7+֏̣GD|18̢ʺ$bEQ6@bz/|?BiZ ?%׬w466(NF$[XONcؘ^A*#K$ٟ |ӿaŲ%bLM!7csC!v 1$ĭ gLOK h3TTP1Sxu4p d*%eɹW,$Qw⥓8o}q;H4snFn$pG?\ $dHeBIHQah#>_Ŋ+bJ@_fe!W{/~<PJyt#82y$x'vR 7M4Mj5j5ZobGB q,ߩZK}hcKoWI9d73#C]Aaf!9/V} }N;OF $}g>2;HחS0n߲bldP_v ,hC(vGA[%ah@28Q3S.^H:LF |VQB<哅"YhS/H X Lf}scǝH.ek[#MI ޼- %%m0r.?뺣vi,$H=t8YEf*"@ˤU!ʱc/aŊ>2t} X^^ҒرM|~)ѫ/zE3-4VBQ\A9ˈaGnb˻F߈w`7csG6]…WcյC?շq8v ˬl7Z'}9c},(>DaS6ȡ)Hmu4w6~2iηW7ψs?{d4" ,Ng 1=iVX٩$G: yd.]~-=lZv>)0ղOј&ST'ʣoWLe>aa Ьl 0&m?WpU`XVTLT ByY^{"p~E!+HsGpB`[ff%uku9ZfBfy Zgm);o r@>}8HHI~ʼ;Oǚ&2yDzAf$9Y3,{V7+/ $YB O,[X: dޫyػֹg_Uw_6<7 $ۨFf$l $ ~%.b9R}$qkmuqǻg8|?7w3{$$ؿDb>>\^!"FH]+(p- N!FTk^;:kiX[j+-λށS'#]&PBTnI\h^{SPpL̋d&H2/GTmn~R3 iwc7NbNDD@zapE:Bk$zkI}d><F}9,@G>=|o k>~!bۄ7OkTR_:,6 xo_Ye8+9 ֮,$Tu^ɷ2jMkW\ 8qTzoގ[6}}zg ~-ϸLmF;z'#"G,f(L$&]P#ﬦ5D]vF$}@4 ('>q@QlբW_ūR~WkP[_گ= >J&7C죹H_iF nPOkk$%!qqOͳ(ޅM888]g,=gOo?/kTb/>|3}_cƯ7pVO@} YHEkT?E$tw$a$).FA: OÙ(HSd ldC=|\txW+WW^>^}Uk,Zmm؏~&Kߘc+q#Wk18>o@g$nOFH~Tv{%Tql_ݒJ_lK7?WsXYU{Z"t9F^U:aΣ<͐Q8DHcfH$s_ȑ+wuF_չ\&>ocg=H&e 呝Tofz9||1yo6B}6xO,}xYam{|_~yH*͏KQ(5v"+ WaqՆ!Sh X`DDHO~W ^Ə;{sanq1Gd\rֶ}Tڌ#?W}(83=^\VBӯK.FFb!=wJG^S%׵L䖕H!F\?Z[U|vuzJێ4]Go9}x[>O?ŹǣCRWSbaÁoJVVQfBRwvAD!qÚMp}H1橈}lboV7^;)hg{5S>^?0l!$?sg ^z=ϮKz)Hp%W;ikj2]MAĔϝ+zkŵCAD Kk}H)s 1}ت'G:޻Sܩ3?7^hɧM괵F*8eo&u?F"x'ktG>8<(!N*7©C*}J%Ωp'}6"eo _sTgYױޔP"}}!uӺ$)E  Z$k^Zq")j100e~#s|[gt:5BHo|ӿ[}Kg=2\_*~nyXV8xkO; \~)p/-~~FS4R%b#t&-vcc}JyPnտ:, RìS}lR6ɛȧQ G?{jPss1ȣX M~rxKx9ˉ!?G}$dJzǭx싏N>o?yO(P_; y /e},#M-w\~ZTzOi&iV6e Ue|J:%ʢ@Q${K4uIRaJ4J3:Z\VBCsJ3aXP&D;SC "CP59lY$~!#yϽyOїk|O<~n[gEDz陗w^W)?fѽx _?1$LeH46S8H$ܔ)4CK*5"I>j~F57jV}\_as%ÊY<'Oę3gp{;ezY*Y 1]41S,C55ơG?'}K!;֙KUReLc[W/="^z%|+ ?x=^y՗ѽ8znkJ=$Lc+QDRWQT5$)1hČ"1Ged6~~jT7Hyu)@zԦ@"Q}CΞ=CNe˝>o!!1H!Ʊ2366Na#dgt~7? >{[)ilEĔC&Z܎̉ ˟ IVYH8{v=88813URr0SxϔL}g?޻Ik!BM̫ԩl~AvmzD1/tPwd¹¹_v;뎡(! ZSPK$`D{#?Ϳ-9")(札gJCOb yֻ(Kj\!xkỵܟތ\m;Tp,Ξ=Ǐx͒XҜr!x >o_^SŽcx-0oW>.Ce_]SɱSnV|d!nUkOo(E>f-RH*ñDocwuT? YJLY+ ̨S5bPAR Y%Wjs ʋν;6Y.O@yDF&lE@lc[ R(J:Yڻbc(P;ߊ7T>_sO5{x{~Z.]yU!:o%RS$g6i*z_誨Kl0{ p)lK?. RLbDⶈvUNaHb ۦBzpH2}Ҕ5]lMG~O[нیqon6|?ܧaYB&&mi  /HJ&TRi+q Wj$HGz[V6g*Ih~T30mM*8>aЖ]Ƃ!@cw(Y8 FHs_hOQZS,cXov9^<8X@g+ ;>R{;ziRԵH\IPJ@|OSlR-wf1 uͣQkI*[\?ԛVE#2 G##`$4,z@o~/¹¹/Wk5 V3kZF&kNrkljH|rvw"oL}P @l3gt ӧO׏?682!tcJ&JBC ɱOd>bp1@jbLNۦ #$ $YFv_8}mZ^i8D2 ap“qo!0YsY9,,$]2(@w6u볐Z(Mq8j?n⊽uэ%z/<P֟^|Eo_. \~;OHfihW Nc7RH $2ӧOk3Ξ=\G5 @+fCd8>\K?R1xO&@E#U$pdoFQ]YH441 @6TK$2P u[b9O?RDI8X)_I+kXg?GY/>d&}+KϼYKï|p5k.o]s!w]|0VݯT$O!Ξ=ے>b4 iYҮ7اY7Y1b!Bz!U.,>MYHI6$H$h36 J@T=EO=GtGv8WEŲW\s. ,7(?ldKxy#oޱM7]aI7mԯSG"@"8<<ɓ'+?Օ$#7cjQ cC Cɡ]kMKI sRi1Q\R@{*(*ӖH $4P4FI F>Ǻ pœo#k.w}陗w^gup (JW_H0%V[ͽ'F"i $2jD}1hzN\yPjF\}q,S"ϡ#vk`]Pil}dqd& #% g%aIUk >Xt87䑺MOb%s8.wkw^yO| Bz=`˰3%M4BP u.)oGzR*}4wCI=~Bpfaʘ*(46[SI]FhR%L" Q%$&qT?I.y4>^}\Mc+:'P/eek{b1q#" )^o T6۳f,vTB^شښ!Ix ("iݦBkteKƴ"ɘ(,RKeoکCn#Ǟ…g³sؾjJ{L%-{V* 5H $o_Q2*s[~s>ָR'qMMIm&<v# ɶY$lH s) И#USJ<<ևi>BKiˠvvqC}翳H_? ߽ ߽P?~:ؙj $um(2 ěc: b×ܦvNAqf~$S"w$4'S4f!S6BI%655vaJ[-ehdBJA+eQ]B|\Gڌ&9]Q-vUry13"ktn(HPΞ=[?B\(r6#'7:/boLa(R[1eĘ|Sm־菳6CTsYOCj rShI$l2U6R3͐Ԥ)¨0"{Z"%H/UF}nN6RYg<.|JO+RiI*mc&c̼9I f $2">E>Bx1c ϧ;+BHqp* Iy*-4&<4HHZQHD:0hF-6=FI46FtԆ3luwVRD3mT³jTIk߶N3BߝDUl9(Ȍpҍff7)s©kDl_=wd=50YH j+S4,iZP{\E7R -q#m1!3H-$"pyf"iҵmK҅zZ$ۛJ&=gOꑥ?fo ɓ'%1dBP Oy7: jɥ)ا֯❐7j0 Ͻ';B2*L3[}K*䬤5-)Jz ]6ETEUb4%H>Yf8YHR}<*mY [Xivv6.[dRIClHdDbPL\h~. 7/ 1*h=(W?fXkKɞX\ivJ҈%53I)-mD2f)m8DPjf-I+NJ]UND(HX)vK}Wp ږT*)T dqY>}{o9~x67܆}4 NzYMski Fx!CbzL V,fs[J겎l7C+*C"g&đ|*D$iA,dBY;Ii$vHT!),<%}9jG*1Vzf#M  νދӧOG%YtI{G?Z@߰eR2"vɴMJޥ)LyOLHT$YHLeHzz F2$V 1 #g&i$쳋H#mkK;R.-c}8smP$Uؾj{""O}wPtP Q888kHD&33)Vx#9TJ$^.ǖmV6 yqI&ѽ6 G*A& {ZjRQQnq$brs问'mWѮG2Ll_L]*o~{f#~p#2=<U hS- o~U%eG~$EJcRSñ!E=”'YHdR%D{JF ρ֔4mk E$)>9ɘydؤi>2i45aםۘ0hZb/b}7!AZ׭+2,ΚMJZT{]Z2_aKm6Q$Aھ>^J"]}ޡFP҉VmHglKCii>8#ĝn*P `s=VytY\(FN\y>IHr rE!o=ٹ׈JɘrBH}$e$$y{LI~5n?,:UT :%HWMǎJAe2GTT{#`ZI cTGB}1BW_SK29oBb',;x-^O"l/7EdI_rVR]RګDz$Z:ȼwylꚮDb|-v/@"Zp=RaudN"0%|1MMD|ه9E „Ltc8>1te!um#$mGY-IꦤG8{l%wu-!(8ux-9ذn, y 1TKk]S=.~ø[mWuo(9%.B$)k##'R dU#7,~b' 3Hp(D7+AEAlUIAA}9X9 n!`)ەdX,7Y@}Sښ,:# hg+ F~bDR tTR9:'eJR}*o~nRij(!58$>ҭqB 6p|T}$aHOg[Hڬr#Kt"i, ٯ {m;8{GG( nV8{J|E97(! NӘqG9ꬿg6ogXGqRf <҈zMY6[ȣ>lؤ/YJ\7>8Bm "d0{RVbS*צXWq1ٻt{EKm^,mG,AcZ+~>@' e EF&iiNYGZ2gG,oc2ܝY !mT~B $BH6T+~1\%>ǔc d^&uT:IPxS\lH0f* >`TZUdT::"4j6K)kښ2ȣ^y&ȋ8#IG$)TeU_dU}z# 'Og >u(A>FR!L5n'cLs9Me7e2ZT6QIŵ4U$4(m8?陫4>GRxSע>gn**4D*Q B5l7")+):%c ǛTZ"dJ|%KUI} IDATYaV R6Mhel&Xr:23<5vG&'xuRmJ=|>V6sگ8145#AHd)m2ĝ\EY$F__36bI Ƙeldzqf])qSEʄ")R{H8=wkFxF*JOO"P$S[z !2d! B.rȵ\el#~q1Ql:nq¥Lq<2㞁54{)\hw/.4TR@"If#N5TO"PJz~4Rr5wSX4nVseiI^R_ ogܬɡm@%wr"W&Շ4)ZcT*t{#K;˕䳏T<_< h6B41 QjEjɚ!X$~&Rst_~zPthJF8mm1e5lH}UOq7!NGrدCCȣ>wG"αeHX=w=.o4ƇcR38Yǿ]>8H$sxեS*6>*ęXGqL&ƗGh";/ز $Bk 2E{6/estp % nשIr,f㕲%"~TuS-*wrWyj2J_R BjN;1w&=X"%@_223d!h;DVBk"I<~԰n2(%%y :l.H?C&曫D~Z[qu)XSzPEOٷnq2<ԵplG5wzH.;( o3B!m}#HɄY(I#X\Ww̘XCbe:tZ;1X;z^k^{[Wqy DJP BHC|hp*ER!8bǗ29ޯe,zȠn8jZĒsic{n⨻G{GI)lyεk"Q$P #KODþ-DoY,ߴf-j>^*QnJLWj~Fίҩ[K&mpyX[@@"o/7J$+?6c.X68*bgX,'Id?R뜌"Hc| (J9ud/><I)lS~SviHh[R$ B&`?'tO2o!(fmO?~S4=%y4Ե'`7#HNB7g-y}CJ4y[.1e8! ivz {̙Ij*Cu56R)43 $B|&mm'dC(%\"6[<2`Yfw%V֛q;uQ&>_p;5V̮őьF"b]@"XoQ".,F;Cx`T>OpJrHF:$s}#4Lu*H#ő䑝TB{z Di].cFyWJ2ũzkBFr{>ߟp^*Ǻl-!=5/<3xа#/y; yHuؽdwF=@"p^H$r'JYesG!(dqe{d HEXHP~lrɹ%+wqu}D2Hlc?KHFHmq툯}?G7(KF~C 9Q"L2>FFʦmaN*<=H0p]%uBOC]c{.D77B=&1\!L't}1WKxm>is!D_Oe6 s.WR2wfG j]`/8,Hl^AxŃ1KKfǔ \_;q`c9sO҇B"66s<4)MieHR=9m̵w.<aFBZ8vbgdcq7Fёk#>"E>MC$ND 3džOi X K|w~]:Hp!$NLM?=EZMBN1%Jlc3Y/,@" K|PMJczRE\@ $R^lQ=(~¨/(XS#@H-ݕ! .&|^\;Hxqm2)tͤci0 m#\¬ѿA kk YOImƫD4#6!Dd|EAiDȒ3 2?71JֽW0UT8ԮBn/ZKL,6)DzĝGBR'Vt ĝVRL4?'2甉|mbo:[Nk}`wu2z_r{V{}8GMfo|VDƘ(FeBD2J1M}H8VuFV_ ]<q޽twPB)l-rj}]ODPYPX'smBfgVT6IBwUq c#/y4Gs1qW*Hi0X4d?cDHNp푘;e?3M¦3?#V ߆⹶r~E0y;KҐG!$U^|pQoe,D"ZCqb;)o)S%1YD"HW1lmRG!PмS>8b| Vrbsw$#Q\p!s1˥OٜP\]>x5s3Cy4H,8u 4ƴ2Kwۄeۏ@凇xQ#gG/V (V\IlƀBbttND4H1]7wӱ3X>O cձԣ{8hIDIF \!HI2pdr[| *(b:i(xVmx]Q1X٭Y??w^0b[&6&S_x33|)BHfэ$Wc:r.~v@"˜7S&8y c1wK :^W5i2Xիǧ_QfazGwoVR@@"L$Xhdohׅap46 HMW2 c,Ul0눨p ![a.#fy5>;sdػc).y,xbJC˦4*4uFǯWQºgDZ0 Nu$.X@1Uhalv$iKq@6BH'~T!3%љ_65|ހ,99 8)ZNkH(!ٲ]wX{VM.%ҌphI,` }%Ҧi?qTL!x.2 G2uV'$R.]"sݠH' H/qTRM !${Z 7mY;p,t%n0}OeSsD4%(/4%qD&=ᾉ}B{~dl@͒S'@) /!s[<)ؕ?OkS=4qJqg!ey!$|ƌ{2SMiڡ="׎1q78pSbMǜ(1kcv?)cs (K7FɈ.DqbBO)SDom=Ql%Bq&S" G)c8cjH(_}.oЌ#.r+5HvRbL3Hڊ9Tblan' *vY@DY/߻ E҄.Tr,BcR8_)(qnVzYM`i]9-vD&6M6Bo9Z_mԈ@3Mro2+3BH;!q-Ie 6=hgS Џ^ʠ):eH O=2&ȉŸh)m!אbLT _aѦEbd1r&p^BDYUz:?@Yg*)1^h6B,y[ 1O6x$f&TG:v5k9o@",NsrjF$zGc6e28+/fi/q(<`5!e!/p\wX!xgSCN ޛ!qt^U6$>8HE:^ɔ%ki]}!hػt෰x0WbbH+X+kY ץV\BFB}/ݞ*)L'7 ΥI'AjpH8b?'RN1YHwŐp|xOC@"xrSbs?NS27FY2oOdb )2>D *aNai۞s"꿑_tsH3E쯱I)V>6+ RY5R>-9 $f BZH{mz$Ҙ嗍l$b;/x3IN/Ȕ)4fSl9UfBDY4 iOz/٣1<6-9) $O<-FbSI-^71NJ%91F>5P Bb}uZ ȏ nփس¿G$Bfdp^RWG>̟F>E9eHZH{ B^ci"i"b㋀wbP1aLG#qL4BD,7E !&}}sq~_;*(L O yH5b:z0$DE;+mpdDuB0 mIkCz%B;ɏi1J1/>g3hQ ob45-\S,m]$`S$% OYL}ŴR5GCbd $BHtߛVkq$@!!ƛcRI!%@DbP Bz1BځO\,Q"DRcDaxM/Ř] cLV1,2ܗcLN6Y4y_BG3!Ѯln3䕓YsuS5.*̈竇Dx#6Tv%r\@" `҅~{r^!pXDB$!x^ }"cL:RS%ո}$HįKwa8қ|M ?M?qmsNoM# ʭeily/_}#!H8v"\eE~ÁBn!h>D*{ G{BB,7đ")]ʱ"~\.ď.r>82 YH #]HSZ?'GkcAɈ!q2 8,TK*qH9D<-@ $B1v[U)v0Dۆ>ȨBLd{%XH/ XnߗN>g)ly]7Co2gV1б!^Sܢ0N֓rl !iVsZIJ@" ͧ\CGcF2N&K ƾH4%TarL!2;aTDpj*[i9;iLp;=|If!d9R&rCv&YDA}~+v(r)ƪ;Jd+ &OWzf|80 )EbC%ָtN+D!aqXc}>Hcf"[9v9vPc.=tt-kkj&IŴcI}KJcR6rTp[8-v/*(!A?@PVJ\F=x?uxaΆHeW\%-/ڞ; a C.țPqdH<-{°SWRnP"eF &I|S;8p1m"1pTQ4ad G!$n>5wycxCJ_*1%R^IHJ\y Cn[b!7[ff)hB2=k]2p\rUOܲ)[ڸv‹oثcX D˜snR"ČGT $BH0F଒gIܰttd|%30j_ |Y3q1ycMGjv0e! $BHh>|BT{k-UDr7Nm^k!)q,s!l&! oiiF~KX~ 9QMu`n )z_dxJTR|Ms929HmU}\RI IDATQ1̺] /8_9B \L?BZS,*1Ƕ$x+D!X 8f^vTu&f' Ix( rd2ė7$r}sB(!A,Zg]7?n"qc*)˒JK\@"uv,U+1h~5ukDjw%ydG`68\3w29ݷ'd DH)!$()(q#u^ǛdSB*蚍ó/' LZLHt/o>g#>"kpBed>XoRNS诟*{$/ղU-ef]c:{ r$x1-E{zɆtr)Gr}oB3!q"@z]9̞9l1,NDgbhhLSIl$S%f!ݾHLH!F)>Nk# df Q BFeut5i\:=]P{!%p.8dKE:kM"hU4 n?B8mxcFBӸ,y|)BXHQY[ҮI&Zh -dOyI$N?ϒLH$1H#,ݿW-XH"k!dN|pP :b K!U$/d%"RL)K^R۵'k+'26Xz[cGG 1K?B@De $BDvW䤗^[?C u* Hj,RJ$/5M3qR"{r%K?BADGk(!0@UӮd%jd-6G;R,Q"PYO!H3(q5'2G {B|,1~T"~e 5HIX=~zq{?)D$)AJHha=ER;2%IIK2JI|W&BO -t|apr_RT"~EkrJ. P B&ı\n.v)Q (6St"'$"ڦl$Dd7b~LrP@1#GD,F1~T"~Ef@"LƩQr R Rf_%ݖjG`^Њ$MT.ݽ~ &Y5 (1dE7:Bf! '<kG H8]`}:P~WfIj;T,'ʌu48u84aHD\7!mʘ #p8HJ@DA6OCietMj+!)LbK)U"ٺ"=9Imjj]К8)e!-0~Tt% H<^Co@@"Ltdq$!~$QThI$Ŵa$r !dRV,`MUnJkâr*TD~ B9ZQ/ bHho,xރZ&)n1`AjJ0 EJ"X]ȭ?S$bP B&E+¿#⽹}iDdu6bI*BדB跋BHV xdD50DvN)pSC *1d"X]ȭ?SCa@$CDMM#A4G΍*!HEԾ-M"i?2ei$RJ1J:* J=KH;;KB⍦%X] er\s6H)[oIahAUGĴBͣ+ImTgՇkE"ueM$m$Zǣ8g!&Й)MQ>\'1̱OsQB)7F>\< !drN|]I}(;uUC:jm#ir`Qe)zJF1 wTۏD像A59Df!MC 1u!>eRzL,9} !dVGW%OO QFq; El꟪>6"IP -,Y&")Akl~xƅI2y5=HYh-]N T(FCNJ?bRuA$υ}!pJI=PR+pRA@,XrHmp4 1Ġ#ָtA482 7P>Ie"GN$ SjTQM$R}/Z`&JAL(!uoE;6 %Bcsb%")3P Bf糤%Džv{+3J)?\IBLH*Z5Y$RRbhC$R7RΜNC+'q/rOj?x}ȹo@n"/f @"̆,FѤl=d*w#~ԒI( "ؔ7J$!1$p!{(.O yHcx/e"x}H&|q$(JIx $BldvԨZ5u2T$DRll*t0|?Y) Rp>Gh8}!dVV+Y85_gM_rKBs*IQL@⨪$H:Y$6%`̑Y4kT,d!$ǛC5.) %!5;Hّ4GE+ɷк,$3JRuN$2P#qض]"2 |cmHo얡'Yx}MnIqH1>,P Bf:H~WE&"ʣvSd@jQԈFI5ilc}D{,f&^'~Odzn5frKpx'Řl$Bn(!# :HAY Aҷi3Dahj3z FϊF@Hq҃$Ҽ:%ӠF47ƙMZ"pS,X1f"ŘBF7xJ^7,!yfkPD iO!A$H(J6 6&ZbKzldY7E/p))~gƥܘXsl&R/F" 3@"DAilլBv$Y GL$IUJ$AGJ⨩DQ"wv;-Β3mǥPm%b ~}3}ewMP ȣ& ɔ@nDRD(S@}Pa:]gu,rCp*H,-;gi%.!$iluƸƑ% {:Gd )e wHqRƒdG7 H# cݮ{ a.4ĜEag,q9.RI5W(!6mUN儚m" %ARfP4j Q$BI3} b$VuJpiP$HrnU4MhV.=\$uHV"b%1Eʱe}&dCD e1]ՔNn Y#khD4M1 IoQ$TFX#:N ^']ZYFS2L*M-3,$җm̱ur}a6Y(!$*NퟪۮaJcMPgzYӞH8BKI2*#BkM"|Ri_Tm.:|F.wn*-b5ݑE{7nB"*)Sʱ", N_sǏ_?342ȈO#WjgR=HbFR:R%Qk $&jSq Zۅ~%&zDwu AbF6II9QꆐizbDH9P$k~\4w"r e糦vϴ]]x6fRoК#eQ(Ue(67jEQn<\%bvw]wE^U\7p]Wާo̷p jRtx DwdFHC쯝㳑r!XzIp@"D8+ t Z {jE)f#LaH8?X?(=U(~]@jҠfi#AɋmK$Qi@] :`(ӽgh:KCCCE݆eIn" jiML% ǀd3@"D b%9*Y$mJưV i2 B%R#}TYPiҨK8$KY1k#^kGupz96ExItȡCH"ų@"Djw.~D6 ʽoS*y@^< $!42.-[eODjD*3iPY"i3ő8=l/ 7dDh5 #(\8mbEGCB@D@"D8AsqR:dU?r{M#5 $TqdLJFX/ I)2IG M.aDJ 1&uӹF.؅R(dM@_P"DZS,:bυ $ !$Z=T֢<Lk˕B#V8*EYIZԖHcU&I|J#DF=Z.ZY}C$aƅi$&17Xt 9!$I$8}Hhi}[ɀ+P 3},$X%!{^f[[")R6)NW05ƞUDhZ1mkռDjc&5m},bJ69֏BLA*Q@Q(&ߦH6J6:F TODY6[PXՃʫ6}\ڔ+6U(P,6_gi@!df 7[.iMw d>騯KGU5-Ǩ{D\X|ۙN\+~D|ؐ~0574VAf0UO+Cʴ쫷om9Nee"X]g ) II!H,vXGP23^[}R:r|}N Uw37e#Ϡ=WG,q= NeS,&Rх\1J"ka!$jV+SꧺGj i&HDid@u\.WnyEb#JAuev h2 g$DrRL$FȌ#ٝ( L3RﺐJyܜwc߳敉4<틶Ϭ=vs/S,&R1ɗP Bf^P:x:L&źI(4;[<:Rѕ2&F&׆AD΅<"pKJj,]V|$TT$> ǀ$DԬ# HD$#C#ݔF׏J&y$y51\H"u웫obtrĝk4Bkà@"$ jD6\y}|!l,iGj[O"܍j2LBHmy$'&K$eIjS@mIWqg* 0$g%u=gg[-{z9̆$$Lu67s[<:Rч36Id8}mH$XOc#̦z$rUHI4֥T߲%JG,REPdRU]ƞHA"Uڡ.IZC"Dq#q`RA$:6D28D߶ H t3S_x:ɭ?S$N_!$ V*uvL{i:\0Bk#iV-*d!SԟF&:Jry e[2cq#!$A'H9s"f^6G"g#E/gȣVrIos[<&RʐP&pp(!`f(-\JI+A:S BA? nE%ȎJ)oӇZAIIRY" p7G^f?dhEM e׆CDI46Gҭpqa+"fU٪k&T픶BpF~^B/E$.'I(i2ojĬI"UCVizHƑ7,6R~!%Sl2VVTT%dM-Z-gN7FKB$X]ɱO1@LεqBbڇ/ܺ)KT:'p½n&I$@\ kU(ړe-^z} o[ױ-_lmGl7ImnOOy!LmCR$(] Ƹ*cRTKY5-g=~"ۭrV’~TXJMX[{]4Pڭ,u*[ 1bӮp^8}-,H$9@DdbZY!?\ee{̵xd2 ,TIe}6lGhimݚu;L5*?Ź;5SRv?g?Gw$r pmv- $!{zy+#'uP)LVFI5k )|8%c-Ɛim;!)>"QR\ju zP=$rzzHjN7V0rsUe񨜆T.eśaY%$I^!' \;!"+" H/E8ӱL1>3r;2}zk˃6ayG|;鏛t Rd .-/\Hvqo1;x[Dz[7,Nk On%Vlz#/Tյʑϐ 1csQbr9I\[e' m}jAScLC1)F.-,)qCǶ!}my@*k4Y=嬔nkrsQ/7徶| ?MvY>CYyiɒiii #}2ڌOHlx\(- =Y?cLf$yTީ(RM&zUE.Ϯz7f WЇW&w. 駟byHw)W҅Ծ觴1Wv!51l8xI,hq&q~rPɩxTڽG<QG;w篃1\'#)d`ĄQ%$HE͋U3D*!LɧI#n(kQ{R<5 bݓ{ eSن!U#k"=T'ò J'hAEP=mħ'ӝn5wY &CnEŐ+p(﯉4 {;8;[|ٲ̖}Я8r[G^u8 ?O/?/()$i7rvŤȊcRwτ :H6oZ2jQq~mn i j;Ų& * A^dcbR!~D{D!hp? ű{#!RK5Q(y1)+$yWT;XEDG>$"MFCHw7sTG9jƽ @ p*^?7>qp y- Edyj[WB⥴u'zwb:lk?=B kT^Jc%ǖa) 9ZɍD29mGb{ޜEJ<®x8C)k.jK/c)KεLk 6uҺHgtJ -8=Κ^za-fZQsl}?ʣ?84pHS,MsQ?>I&@e/thG^܇#|HMؿs yt E'=w"m4F:D RܼVCD\rwbt}"il֋HQgGDlI| j}l8qnľ` ţ8j9ZQslC9%# HtD7҉ =@(x' 5Ą%)x/%.%Σdw"q!5̉tƤ.I>ye2{YcX)4ĞV؄;>*~b5wC4e4^ ) DwP\L (__q&rFi:G|: . /$i'ߧZ #)]r#/8 0ft3]Tw-BuZKI<G?OG)Hp NgcMt!n>8%.ˋGLP"2Nb3!qw%bդ+1  Qc'Y)hx)F^Ԑi Ll/Wg*}*dzHΒeCdˊJJql3A;HOcyysխ:ONFr׊ȹ[@y'o?bDJ7,:"\g81rQ '24+G pJ^_/R؈( /1@DLH"ظb%^x[9Uv!K|Tlycl^B'2ԝOFq~&F1)(9~RHb)Qo}:\ƚwgW [NP.%ilD$[ADJ/d8cq"PR"1=mk'%l5uq6o%j Qk H ;7L:E1E9Z(RRF%}/h$#2J<]n65oGHBQme I7߅T\R)Gq g9+ ,̧?}5p NW7G>2aR@)lBjH<-y8'һPE;4Ot ]\΁C .N.xkkE/L8;w"Jcn{IY<0J#G5B=󈿳HF.)JP?BzK#8m+ ,G<ЇE5 )t5V[m;Opw'(Ԓ6;f.! umw!(Q]%{bi[+bXKmIs"5LL˄ "*.L:H̹"]HC5o;fePteb &IRb(. ?߉]T_$E_Oj{Ca+.=]!59Rjb˙eMqI@@8 fzRgRp+ !)RۆeֶN։uM)&C]mwDPI:w!'ZHƐiL9HA.$!0Rr4Éd7,G##8|»cDl9sq 1H̲mDGI& )+ziQ`T=9r۔!c+} N})grX$0$CӧLٜb:-.>rֹZ/"y lsI\DⅵS1)Rظ|A톉!Mt6.ZAeSEћpdqR /[#>jt$߉C+&Ĥ䗳sR(wms/_aħoo5Yo "uKGs g:axh6|+RkٓbXE%lk#" K" Q{il7!e2T'2L8r'L# jQ3l IL@O}H  dGI1% fJMHOt ]㨫 PPI 9Cĵ.LqB(G"s$$/8IҕDF<"R^$ EmJ38x$g%]H#vkkj#:p-a}?Kt!TP)[~EX ʢLAJQ@@<4ikTLۧRdt\H֋FRHju!T'B46$g_4&MeE{{Gi+vLF@."t-"MI<JkKD$ŬKtB8B* s* )~T+sSوꈁS[BһP ]Hc]H"bJHT:SG@ .-.e#7DTR`$E̲ \E@1J._]v|~K~Du!nn9Gu.G&`SĦ_; >By. $ ҭģֽ:ʄB:.wclΉj!'yQSz]H!"qhָ͟8 9_'D<~4p I_" r;(ԅM]H=zcpз[F@"ZoP~KHPcL%*݄G9N } J]._jSRܦ%񈧱&HQDѕ愤eiqREEf߇ɁBbݧ҈m[EYRٶk>55Ġ1>\ $u M77Ӎ\>[օĖɂ2u->͋Hvخ _vh(ֵRp!5\H2˅ą :7s[:vk!EnAND1ŢԶDBo[2 ּ郈t>55Ġ1>I\ycģD2jyRTHek[hېGk'"QBnB )/e EvS2+m .)Dd}Ap⊒"_ʍ$zB: ߑcC WC c1B8 TO{57q%k 2 ږ5ZCFҾr .W6W%"7PCzҕLR\Hm{ NPji%k YFLm'X1X! u[v[얲!&-u&LX0l'}@  }xߥj!zHilTZۊT6Ds!]t ]7ZR'"5x$d $Sٲ)lo޹LfbOpN(*GC \pRdI [I,K]^_t6~mLTPUΏy*ܸR}}F^k\}<1TH _/-GRKxsi)8ނ B&FA@r_)lBDROa )q$.$Zg9),ګ]S񨯏2ؤxķ0axiH BF]\}.85…/b$%-;XV.Z7iG;T˵%Mq qԸB0^绐il΅tѭ i߮ nhSب .F5%R((Z)%ĉğ\=*GJ"JKb!)w–zrK[ kp!cjK\ޖ邈Tg_{8r[Qp@@Ha \HRD\Hr!ݔ H}Խ~7j"R#G$/T4KyבsT6!YQHʹ227t1uIٕ7آR# eG}dėev!*,vq!lpsx?ZQslC9+ dB 'z֦NJES.DԐ)l |lc؂#)>"!Z$IIB@*pf6ՅzɇD,nL7w[Kc{&u0'&Q&SdzYIJ3.xR><#UWSK9jm' BBy'ҵt^HoF-^Pۻ|%F1QHkcn$ 2Ij&Pܬ\ %5RX߼l# "OgabW)IFňk9RBPI1[qVGO;z{UCZqt/ \I`EV7 }源,ٶuOb.Ŵ׍.$-!/f('5 zGbNEBRt%eҜJbQOŵ}ڬnd\ʹg"K8u t18c,ME.ṋ́YHWSK%joǿ4< r @… fZDbl[Le^\Ho[xlKԎ(-ְ!YL þeҐk%?,5؜$DnG6 dimD=&T+JZQ=n "W jj91~~bG 3ӏ\HD &gD YVF^oo)}4\ښ|*TH" "b2RsOcˉLd4-I~DGVM6rilYrilR`9E)k9I\AB_J. @r5C }֛#H7GMh 4b$kLeB*v‘oomtս߮WڴvDC.NIH9\ K]k"5)ҝŴgq&,e߬,9’]Hbs'*iRPTJgҒDA6\F4~ܶmn "mKM=1@(bģc F RFXj[WֺH-zHWB97oN<~Eƽ%  j^ZH܁?_Ldĉ1ȩH,w!e/uP䅧ИU}.&(ni+WD8UOY˧?9!M8̦SU7@߮Y&7x%G,DZ&@H0eqHnٮҵM:n)zDWb*wriPpv)MiERQ2Sfx GmA3#+s=:\V.וTL[vR$H[<)"r\K%j:WpI@@҅o5,u@EomԉH.-IeN9I8G=/DL&Ȥ-ANMu!eWOv!EQI8VYuRIIb2tV KzufDRqS_ak>_9e"R788Bc02 ^@q#.Ra(,Yج(]HB468E.h.J."ػ%ƶdbk0@D:Oߜ#ܠpkbC8@@ x':Rivج(͟vەT6."y iN5O]k6:HR"P9e-,*PDaS`)tTǓצ-J3{ij%ăϖtj #]H/d!c,n@cF oX-$cXC5tҭQskf2MCz W7 5k'/ze'"2D;a2(UrklX2\ Ycugΐneq<dҠX6&p]Z2&A(n Moܝp`rĝp ˉ41ȅFյї*֪B Ȉym^ҷXJ!)_kg:)1AcL_.$KŸ(ڕG5.Fo6&u.$CoΉ4&g"))GM,˦y99ŴS_1LʮSٰ@%"`LY< mHh ۉcǤklEaY_Z)^T{SӆF&ֶ'>K3:OxL{!y33 WQXnë`ԶvSٮ+]oݫخo;эoDt1ko޼"RJS()(9e>I("i݈-i-$Ogʦ>7ԷMu!$gJS81D@H0Iָz=&uDAjچ,c RkZ't.(ָ{iBQK ax( IEf_L٢qLd-̑B}ju˻鰐H֥k}l_JZ"rIo3ImyͨWw7}#U5YC9jQ#`u H0>D?vb AݴG:;L|AmjkCF5dnLc1((5StZjhz.y )UdR rilIkdd}C։m-7VhKiGFA(AHe.nǣ(GL84\>2|2a=){V!TCl†,D*!1։6D{!DDG\.̸##k5rJh.ڎx8RS+b^9Q Hp//~Q)ZDd$6=&kږ v#s3C74B2E'UL jB 28_"kj!bٔw!yaqs2)"Fn!2qZɉ]y~/sE)oX{}\']\F "ٸS.?DǨ%yoKqT'l} {;Zjf{))9Ĕ?F5_}t\ ~|i1:7aM}k[jZw+o %U%rim=;{.tKHf[́E$98qHG-ߥjaՙF旳:1˝H!b‘'!9[^m־]W%^-m%!sݿo-9XzB@:2p B|/-<: t6abCkC.m ۭD@2썗\H(J*~ &9LxPn|ma%G,d|*tC"v#I'e!>6qp%}ZZ)މh)xcRK>m nz$Hw5Ƙ8Zs+ TgH_dv8bq!^i; j6zntԅMG~ڷD$ߋ.A@j燧uN8C,M֦]AW9ʉDR6(䅜;rqmJRڢpd`w "]߬KHOe!tGr0tO /(6 IDATAD5#+tP }@@y.$=8SLxZTEWɧndFAamtqՐE$Ut=.]7MDLTʥY=R- E%/#=d#<$cH(F;4c@J jgbKekڦK? n$WP ƧD2$ #(rKjLWNۧ5,mI\H1}tqzMw!u9`>rVlUz]LM:$'RI,)x$Ђ-^K'q3j>LDR>w^mzJ?x-g8.}/;>:p  ~|Ή !bxږ9׭mɻn[֑tktuH>.$>r$d(E4Mi2~c7{6rkE>wέA$߮ObӬJڒ" )7oL?*CP|Q(:07%֒m,m&ε҆څ*=1.NH-YӐ$OJD qjS&n"3vktp)s }uu"Y8'R֝cDsdl#'"qc% .99('v0gY!~$ 3۹k՚.,kW_5c ?563s87 GlWӿKe ,3[UPimKMPtV$:5 YӥUc$ΖV(Wp%9Lyf:#Hal򽛶F/T6lڮ2-[+h:7i'WH MfWb|\,-٩'}ΚHAsk(g>V{V^R|n 9%(=y!0q!l}-SK99قZC3g8`#҂"Rټ(=<n  $`%c-5Ɛu$|?&\$Oc "eQp & i< n'1_\۲B!+lp}Z[8b"QH&^L+DCV\AأGYcmISlȗHImr\t!iAvj k Q;-q!yBJj[náFsۙ{w.#.x>DZς sLN#O;W\rvF(~$7ja]G?ׯ[a[ n{{>P{|ctc K8o' 6x-޻\*[T'ţ=fڼ@Ğֲt5'7DV>٭Z'^ɴ(% L 2bPHY3-ĶvҦE# -N/ kH~.W6MI@-*#}̹s6N]1qm"ry%'5{9ӱl ѹA lT#vykMKmwKil eؾ%Xj!4d#EA(jTAW O*ZT<&Y&F$SuT3 x}u.[OczA<rQD\A%s <-أGGq,wYgkrkq.B@:3p |YLw?GLޱRzil.,[\\I>)nv(](mY A.zϭ8*-b\LK* yµQ_l9e2xW{~. s&+ެ!_{kw-˶j.bَgOlv vD\GnJ$N̖@BZ4roiЏKH"kȮ{[WZdbMGmQ)^(,*H Im{,?MIA4b FJ397\*|Frl|װdwMgM75R1N:@TR`'^?ҟO.͔SL J\D-XmiZj[⾦dmCMc؆lRrilOaU}Cĵ(Y!_@јNin$(utFD"wC:l!LGl u g`[,mn}v[SS,%TxLQݍs(ߡp#W8ɽSfg^Hy'ΣġGpL_kVJ!I83GΤ)>$2؄?`*H_{ @yy~_~aմH)ocamDjmZ6\6Dd%95aI D)#TFFn6#.4vUv#Y_oDcHzWPϓu#ԅ oł qIH_njxŲ?-1(*o%]-سZKGs*g& ǵ<LϿ v ?^C4"Hm(p-H%WQ[t%Iؾt;J=xkcJ\ے=ˊt?s9Js8juT&#G$T) Gq: I)m\D4%MH쯶9G/~|pk$? {HanD1dj{;\a-{RAo)Hdĉd;4HwKw YQ8Ϲ6LU\e6R x{ZJ+y9HS:֐Z;,qSٯu8 "MoϛڄHΡmX@@J{z1w3)B$B۸$۳sYhF \Xrǖ9Lpt4g,=ɷ*r֢fe/B4b$ONP*|E>T-ǒ6smvavix#V[.>&#)yqτMj Qٵz{^reۘlFvHtiZ&&GYQ1 W}[u??ڸ\ Lq/_x/S׺7ߒzC~Y ik#RZֆm[+(:FהUԫ^^=e[~̶GR]xJsz+Τ%I_<ʞcW:} ~ݺݪٻO111z>bxl =6rOGL  "QVmIZA0}#DzAkFH`p5xFK I_g-(ai!h!*}='eAQ?IkG.TG?{!͑#Ǿc6Brlnwk\%c:ְ)6r_fLSRՅHf^Gֿٜ>t5uS8v$Z$T'۳NvJLёY2ҏ_ng1W=G}IrP@<p +o.xԉD%Pۓ8bnF|%9E1iOJ?߷=-:\Ķ9dU3s_i#s:Y*+*>x۝I\5XyD{kDqknU @@PE)"Q*"e<_צk1SXL,P$n>P- %D^jQeF"ʈI6&R}D@2AOibf~L"^BCG @<DHaB/.R=c)lDƥ'wx(䧥ޓcI6`: I%m 26NIOX<#6}uXgc @HDs~0mwk>s1Gc_?pP "8P| (|U 'iXI&O`p,a[elvrnΪ%z}lK]}Xbqh 3iq+7;HuRC %jm \㚁C<w x HHJE$#{#,n;x| 7'5J=K!Y(i,kAij](2׈cH}6ی^ڿQnz "W rjQ~8@@B?3H Fe\D" i@4Qq[E<./bQ1_{,)/w%'FAJJ(dDlqDaInҫIC̘"]J#:lL;nK0A@DG ĐL #Ke W^`WՂ$QD;| \!D@ 67m ˗'垾F †= k".%&n{;1YuctdiŽnJk%7 ːpNW#E Nwa^DrnYNHDԅDuą$];FBeB:5B,FbCZ3nz7#4ѪAiTobj3zж(UHG_5%5َ ,G@  \( "Rtw.׈H FA(^ #<.$uq>?H"moѾkMMךb(qNi"6m!B-ϧ N?!Q·0=UD⢑u/$GAz]a~E##́h~}Ku&f mF}D\ׯuvojj9P >K~F>$׏N^EzZ FLDZD2$^jG2Q#$đӐQ`}q``9k\^  hBq?"Ri5:q81 j> xy~?G]("1FH"+c=nxEE{Q$F\LRʇ<D/,߳%"VK\H]Ž261%HLRҊ=ynC7VE/?M<9Lj9sj[Sӯ!=|A!")A$"I?I͋HQ;R!BW0Q*IA h%捵4|AiL#Syvw˟uHsI8R1 #0$8!ӗHRA,">{2(GZX嵅(xV=M/1p!,͓&(VK3K8;wZK<+"~}ٟcx $0 Iyy~?ěi/ &HVHn:[5HIC*/*.>KDftߞ-]} NqwGk?]7%90  /݄J3#ļe{ɆiE kG DN,'$R6rzwROLa>%ģJNl"P[_?S5jպ'5L<_~BD{HD $RڼzHn;&&N(ţ w xy;-ťa|.hTG"R==th>S ~|D؍:I 7&^4;ʯ^!d'u5TO\}ȭ<6ׯ5M7gSw 9jk,G- ( 5D4 "y!"n-LQꝊ g mwrR~46Z8}jj!х%L /n |YDa12[MRuSlWdcn)7)0$Ms*"mq 湆JXp [Aiw>s /E$k|bP!CU$)G55߸X LceG`.Ayy~ Ec)FRD^֑!i@1Ihpv5gUK R3b]> ðxDZ}q#{9qU$x`^_zH&]D$CXjfb=sG>kٕ=i, l"-/ģZIDKHڛoko,@]}<8_~E$7cD$7kWV{ Os0G9,CzsEU-pSy@Dڮ}%73KMl}zY#'"is$aۂ5HnjMf G [_k7IsR糖8J%?"UHzHŢ79Ʋ~'&-[>!i@Ά l~t6z"sWďtHㇲZ1NŌ}~ #Q'"~|fr"P $]lV I6I# Ԣp*Rq^_ :Xt" `|uhlK܈MDZ^?R8b`T #^?zHHnI^tFl ތmvr4n=#UMģ%cWmo^}~kQK}tbX}A,MD$! dJ1i5L6˄3;{?Y@+z'ƹ[l"ҞBR E8JsfX H^?ƙHrC)"ŅR7e]dsYCDfp qh(tGl*}FG&ѠX8JsFXH^__ܜ."ʪ1E}Єrav7cnLw2ҝv,,n@ĶeGcj[SQ⼇iXH)YnQ?n$>pDY䷛Ĥ`a-]q\&"mFڊ=$kuPS,}vb`}"RIDXRVI! >Wh1i]lw]W i!ƵP5ސIDZmB^yh*= XHz6/ӊ{Ra $yq6m]oކğ1 -x0_sOb+i>x_{Z[^qI "mFڋOSޜO # +DT>7Q2_5-,Yz5 DzSqeZ9?v6}DV7[H$54c^J#F& BQIMJElIUm#>V& Ws%=&Qt&])D=G# t@P: @@0OjE$2BR/#؞ѬZ<`NDO֮#.'5i-FڟcCsF $xy~QOf#-"i!;RZ*:&0n9 ?upt6 "^;M1IJ $yy~?L#TS[ N_W|1=Jl[U>L.=moFڒn?G 9@@0gzy~)H}n$*„M&޼^. 1}$}(h-ˬB=}-ڗd+ n:8p"Gl -`6_~Rhjmv@txٻ5/>mۺ-omob(Qslc02KwgH` >$"mrdK@ǍH}I0]m?Z4t-N׷HVmяs#5P/V( n^?vwHͪU.^H`Kyn=e' \Xul^hĻoowTiǰ_5P,YJ?<Mx2Q_Iڐd`0h(2}AfQ]/}("m>SC }X*wZ'n=(l~_IJ9X>=)Tk+4U|}>[ bFR*1s7n#X?{G{cvx6p#яZ(Q{|SW&pL6x}Eyy~/LAD S}BRސ- O4kłh__hotwhw~5XW+G` XوE6lEvdGيycţmH7[k@w795o“ "{}*VGJ̙ Ǐ?x@ X/ZD޸ L K9ojqQ'5>(G* .ف;\ÂoLnGjc9*ˁ5ƻrb֍ jmi"f8`!WCwd7V3k 56 ~U|>@@*?"(!4Z3x6*+'#8]H 0yи4GFڎbHb $=2GDJ"aIH{kfvr{s܉8*={Cui FF^S,C){;}y-"7OWGт/׬zf>Uv(b)T,X{~k&@P:;gzHgDܙcuLlKf8o[e/ID]@#P ?~!kPZ _'{ycGen8k^H[x5G55*p`7~ǟh^VI8xt>+әB7G}%9Q ip`7~/?~!qXe-ʎSiN5Q[<zsqxCDڧZQm I|Op`WFH~X!I ijEWZP8ˍqkmF}I?5~KY>g@]@@;AD#ƋcFk'NU6xv3s[޷[㚬}r#mYgroJǽC *^?mBcw@mˊq4~0HC# 7R-gfKwY&k @5?O<}1 M`.r҄(M +;i_wB'vرp[@@l9& l/vIq<<3s<FlCfǙa2#@u+kHCt:Kqs]4H緼mu^) j٧p@I$fA$WC$F<(#*x}}3D*$Ps.ASPbB$|GЃ i?C9'< kC~_aJ'ҜWGzlJA$:!{}#cN?= sg mb6y.HGa RVHІ ik6RȌzy)>Hۘ$\ν0Bc9 .5CPzܮ=ARlD;&Jx4YH+ZCR<A kBh76ΆVHC ɧc9tw޼{v>*C z5Oʉ<2s탴HT}}$KI?a"D K<+_=ҫ)e4˸+92'#絰8iuΚ$Km"),]H>~cw uWB rgeO+ HkGz}!dg $Y!s{NH!Q f m=)kPk6R 5c1x!PR{s26 L SGu7110Hne 8kfҦڟjJ$y?'4lAh/3zT샴H%S}5Ԯc 5A$g$@><Н?bg g <|DA"F,KJ^R>-|(2g^ )$@3o 6ow6y1=<:<%SbIH5ϻMJCZ\%P_]EH\ t}Oqg k%\r,F"Hҡ]w 96ΆUH\ K$>.egh_i=YH+Vf#>n9#|~b,`#GۇJ!󺛟lr>k 8 AQ4  Hw+ DH wjI:̃{ߚ=| B Xʹw)5tTjPk޽ޱq6q0vxٟȿuB:+:Ov֢E{W^}}$J;Zzgs>B3@Q33iXو&ãmSضx[Y&H-txf?)H=DZ=f̠AG%QM-cfuY Im%J*t=H H"$Eo k؆R$>%"$<N~}2I|;cF̈́G^m*u/$cI54 O/B{z(d4x] ) GC%mfμv @H8}N?R .̇G_f!PmR(P)*'Bl2$] IK907PА [F9Hϻu Rg Jt #@ •ɹ2Bz~ sU2Kۤ1DZRfuHD"i@5a13r^O2{i55B$F"97r|_'ض%Gj9HrNV-CSvJ ]n7r?=C7X؅Q{:jZ~+Ԝz|h$#v @ N߃} V)2M%f#1#,ihp6N}3\// PPi#Ѯ=(6P((> ` HJw^)si\{ &W ;1iq׬Mrn% )4ߗ|70e>b$2Y~t>{oؽ%Ifvl6[!/jOʹZW mu3gHdrxН|pwϷcg$b\kjgiY[:Oj]!,sY $ m9-}ўtt`|0#\[(KmQW׀]@͵sa4B߄e={ Kʌ$ GrmC = P@ ÌEL!2VmV$bvݤsK׀>Hч"R 0T$ )Œ$5*%5?b>t'[njP1rҵ oó6$孡v}חR` mw㞨F\Gx4RAr.%f-IɩOK! ^Xx @ۇ6r|<2^Sf!m)ޭ$վ/1DK ZinҹtV @$*;ݹ}E=5X0(@A}r$:.ZC`uuG,[G=czio I9q*%[{yjZ|i97dΜk@f  j_͑o}H;o{ i;<0#I'_kM̥n0?~ξ;c}Fy5d$,@g$O˾G@$Zo§S=&H8ntxRSLMϞ?]>%_-ik "BOg,]" vnw9@;tGjaH%+\%uYԺBXhݤscp͵w.i1s2Z$vZW#35 <!@@" ɵm#5DZ $@)96#@@Nw)HpA $mOA퀡\[ f)M:=`$Z~t>}?xN?RP'sbe6uצkIE[}V$԰ưܶH{ $i%dFV[?A{^se6)5cy3MgK @@÷.E?I$ pJ ƪ72F$a$x EB%0X$6 m%dZԹ<Z"{v&qZJأ-^roIc:s0v1 KFrne><Kf~K1"0Cw/Kv7 ?A# R:x*5Q5R'MZsR.͏XA'KG/ bp=jڕjhݻ}Rҫ^vHgzkxfg0 6o{H^A*C,$+jHrHŇϞbq-IGxdDQ%mɹyej9.5mPklz_y/:DAjM{6pmIۥ%{~{rюnjz϶ֽ#힕VO md~~G# O<{v RxZ!T M:#РW '.NX򎪦Mi2ڻyH_%Z{F&˾G@)@AN?8 h.YK9W26l/b݀5$f и>t"<&<շ|^YHn_}>`{ $w/ãGl|wo=k֮cվO߫KtFxT@>8B۵޾XVAE|]2dBLmH )s)"bR 8{PX{);;1X6A,z-15_m @/k[&|¦?zm%z%l'$`V𲶕UAmեl-v[hc ,ekk!mxignv*!@MK$>^KZZj㘶hβ5Hιll|z.ekk)b# - hw`z(`@9Vlt-3g[ ;Wh$-قdžP80.2 vl&D#8HrNFT\ݽ'hk"^ɦG  vaT5mN^.RVz)-ό St\ћG KZZjG !@4*Hr.~it\^jo>HFI΍l*n˲^Zjˊ{$m{v!>Czj-W @HZ| S. T$[RZ['V/$. waR玔$DjkړC@$ I1B4z)[k[k֞<[#2  m$"SÎ;"ֻ^kչ{eP ɹ`FBQŞ6[k Ix @AAs@)8Djgk#*Y|p?,2R(-ekWk#홛ݙ.rH K C{۬M}W]wͲG :H$a$RV{ۭM1gD ⋅[|1#w;*0H-f-]srqu7;7{{Fx )$. Cfp-Dj'kSeȅ @ ɹpFBiuX{@{{*"<As2PJl"ދ~mXws_ȇ @Kw } K޿f^6UK6b;-DPR|dM'<P ޿ܶO @4Lt2"i൷`Kk!@0d$mRl-؃ЦBm`#5 p۳9@Zj]{ ϒ5 p{׬]BC"AFB$w\?KFЈu%6*5"YkoWY@$JZAw7= ,ܵ-S;373 a/n嬤2Kfg"Y[hW6IpnKն6"Y[h[6d DHbX/e$Dc޾d THڬ>Ddnm5 `еYIH[攇H{7 FoonǬMPPIeBOBG%k @@YIRCϥ.DSо606Heҝ}{&75!R t mhhDdx[H Z[ic@;u@3$d|+$(J*M^}Z[hg@u@;$d&E#+7=ʙJJ;=#V ~I_?cgy_}I[k=r+hXB*$tùMoN38GEjmmaV @3[ɖu I΍ &F.ikq>GDa7gAQ7nzkϯѫuMp]H0JK ~|7aFQwsYmH0i0LZWdQ@VA /dev/null; then \ ## This code is being executed by the first process. rm -f sirius.stamp; \ $(MAKE) $(AM_MAKEFLAGS) sirius.stamp; \ else \ ## This code is being executed by the follower processes. ## Wait until the first process is done. while test -d sirius.lock; do sleep 1; done; \ ## Succeed if and only if the first process succeeded. test -f sirius.stamp; exit $$?; \ fi; \ fi dist_noinst_DATA = \ 3S+1D.png \ B_b3_y.png \ B_a.png \ B_b.png \ crystal.png \ 4S+2D.png \ 4S+2D_reciprocal.png \ 4S+2D_reciprocal2.png \ 4S+2D_reciprocal3.png \ 4S+2D_reciprocal4.png \ ghkl.png \ ghkl-collision.png \ k4cv.png \ k6c.png \ med2_3_slits.png \ zaxis.png \ e2k_1.png \ e2k_2.png \ e2k_3.png \ e2k_4.png \ qper_qpar.png \ $(SIRIUSFILES) \ $(SVGFILES) CLEANFILES = $(SIRIUSFILES) $(SVGFILES) sirius-stamp MAINTAINERCLEANFILES = $(dist_noinst_DATA) EXTRA_DIST = \ 3S+1D.asy \ B_b3_y.asy \ B_a.asy \ B_b.asy \ crystal.asy \ 4S+2D.asy \ 4S+2D_reciprocal.asy \ 4S+2D_reciprocal2.asy \ 4S+2D_reciprocal3.asy \ 4S+2D_reciprocal4.asy \ ghkl.png \ ghkl-collision.png \ k4cv.asy \ k6c.asy \ med2_3_slits.asy \ diffractometer.asy \ zaxis.asy \ eulerians.asy \ e2k_1.asy \ e2k_2.asy \ e2k_3.asy \ e2k_4.asy \ qper_qpar.asy \ sirius-s.gnuplot \ sirius-m.gnuplot \ sirius-m-zoom.gnuplot \ sirius-m3-100.gnuplot \ traj_n.gnuplot # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) hkl-5.1.7/Documentation/figures/sirius-m-zoom.gnuplot0000664000175000017500000000052214677222567021726 0ustar00piccapiccaset terminal svg set output "sirius-m-zoom.svg" set title '[0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps)' set xlabel 'l' set ylabel 'kphi m1' set ytics nomirror set y2label 'kphi m2' set y2tics plot \ 'm1-101.dat' using 3:7 axis x1y1 with lp title 'm1-100',\ 'm2-101.dat' using 3:7 axis x1y2 with lp title 'm2-100' hkl-5.1.7/Documentation/figures/sirius-m-zoom.svg0000664000175000017500000011745715144640561021041 0ustar00piccapicca Gnuplot Produced by GNUPLOT 6.0 patchlevel 3 -55.6 -55.55 -55.5 -55.45 -55.4 -55.35 -55.3 -55.25 -55.2 1 2 3 4 5 6 124.85 124.9 124.95 125 125.05 125.1 125.15 125.2 125.25 125.3 125.35 125.4 m1-100 m1-100 m2-100 m2-100 kphi m1 kphi m2 l [0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps) hkl-5.1.7/Documentation/figures/sirius-m3-100.svg0000664000175000017500000005364615144640561020437 0ustar00piccapicca Gnuplot Produced by GNUPLOT 6.0 patchlevel 3 106.7 106.8 106.9 107 107.1 107.2 107.3 107.4 2 2.5 3 3.5 4 m3-100 m3-100 kphi l [0,0,4] -> [0,0,2] 100 (steps) hkl-5.1.7/Documentation/figures/m2-101.dat0000664000175000017500000003541415144640560017064 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.400329236644680 134.704182457759515 124.948883389789160 -0.022336900000000 14.824478351069175 0.000000 0.000000 1.049505 -0.519320200000000 40.768091717811103 134.706359702530165 124.937616264109579 -0.022336900000000 15.562801324235028 0.000000 0.000000 1.099010 -0.519320200000000 41.136743457943830 134.707659256589579 124.927942885839542 -0.022336900000000 16.301774870100662 0.000000 0.000000 1.148515 -0.519320200000000 41.506230350808977 134.708190640573207 124.920007652536029 -0.022336900000000 17.041431540404567 0.000000 0.000000 1.198020 -0.519320200000000 41.876507620777176 134.708049077837842 124.913592033952341 -0.022336900000000 17.781804145832595 0.000000 0.000000 1.247525 -0.519320200000000 42.247540324475438 134.707314695586376 124.908512076805337 -0.022336900000000 18.522925774662525 0.000000 0.000000 1.297030 -0.519320200000000 42.619301511138339 134.706055402697132 124.904611811382637 -0.022336900000000 19.264829807397874 0.000000 0.000000 1.346535 -0.519320200000000 42.991770790416759 134.704329132918787 124.901758069503543 -0.022336900000000 20.007549931754514 0.000000 0.000000 1.396040 -0.519320200000000 43.364933205514326 134.702185612128090 124.899836467702713 -0.022336900000000 20.751120157782115 0.000000 0.000000 1.445545 -0.519320200000000 43.738778340029832 134.699667761595492 124.898748184328028 -0.022336900000000 21.495574833533635 0.000000 0.000000 1.495050 -0.519320200000000 44.113299602953063 134.696812824044002 124.898407354240746 -0.022336900000000 22.240948660970343 0.000000 0.000000 1.544554 -0.519320200000000 44.488493653184769 134.693653272360478 124.898739021274210 -0.022336900000000 22.987276712267988 0.000000 0.000000 1.594059 -0.519320200000000 44.864359932720781 134.690217549715868 124.899677417224481 -0.022336900000000 23.734594446616502 0.000000 0.000000 1.643564 -0.519320200000000 45.240900285727704 134.686530675790323 124.901164614561935 -0.022336900000000 24.482937727378488 0.000000 0.000000 1.693069 -0.519320200000000 45.618118646295322 134.682614746765182 124.903149331349141 -0.022336900000000 25.232342839794260 0.000000 0.000000 1.742574 -0.519320200000000 45.996020780923956 134.678489350241193 124.905586040580332 -0.022336900000000 25.982846509122183 0.000000 0.000000 1.792079 -0.519320200000000 46.374614075378744 134.674171911521739 124.908434111577094 -0.022336900000000 26.734485919349495 0.000000 0.000000 1.841584 -0.519320200000000 46.753907357984126 134.669677983703224 124.911657196484796 -0.022336900000000 27.487298732478042 0.000000 0.000000 1.891089 -0.519320200000000 47.133910751916126 134.665021492938337 124.915222663117333 -0.022336900000000 28.241323108362216 0.000000 0.000000 1.940594 -0.519320200000000 47.514635552489757 134.660214945300254 124.919101106425359 -0.022336900000000 28.996597725171654 0.000000 0.000000 1.990099 -0.519320200000000 47.896094124102639 134.655269603637151 124.923265944643290 -0.022336900000000 29.753161800569615 0.000000 0.000000 2.039604 -0.519320200000000 48.278299814327227 134.650195638166821 124.927693090299584 -0.022336900000000 30.511055113468398 0.000000 0.000000 2.089109 -0.519320200000000 48.661266882089798 134.645002255819719 124.932360652360785 -0.022336900000000 31.270318026668722 0.000000 0.000000 2.138614 -0.519320200000000 49.045010437649331 134.639697811706839 124.937248661347866 -0.022336900000000 32.030991510130072 0.000000 0.000000 2.188119 -0.519320200000000 49.429546392776849 134.634289905405012 124.942338867092715 -0.022336900000000 32.793117165123185 0.000000 0.000000 2.237624 -0.519320200000000 49.814891419673522 134.628785464348027 124.947614550156899 -0.022336900000000 33.556737249230032 0.000000 0.000000 2.287129 -0.519320200000000 50.201062917065919 134.623190816633382 124.953060345318448 -0.022336900000000 34.321894702209050 0.000000 0.000000 2.336634 -0.519320200000000 50.588078982847826 134.617511754485378 124.958662095538386 -0.022336900000000 35.088633172862657 0.000000 0.000000 2.386139 -0.519320200000000 50.975958392326973 134.611753589728863 124.964406738558409 -0.022336900000000 35.856997046840519 0.000000 0.000000 2.435644 -0.519320200000000 51.364720581257927 134.605921202644538 124.970282176583254 -0.022336900000000 36.627031475568948 0.000000 0.000000 2.485149 -0.519320200000000 51.754385633290894 134.600019084834258 124.976277196259716 -0.022336900000000 37.398782406220867 0.000000 0.000000 2.534653 -0.519320200000000 52.144974271098832 134.594051377203840 124.982381367300420 -0.022336900000000 38.172296612886434 0.000000 0.000000 2.584158 -0.519320200000000 52.536507851019074 134.588021903561696 124.988584975652799 -0.022336900000000 38.947621729017463 0.000000 0.000000 2.633663 -0.519320200000000 52.929008360785332 134.581934200315516 124.994878944492498 -0.022336900000000 39.724806281102900 0.000000 0.000000 2.683168 -0.519320200000000 53.322498419960922 134.575791543091071 125.001254785864006 -0.022336900000000 40.503899723761400 0.000000 0.000000 2.732673 -0.519320200000000 53.717001283079831 134.569596970259028 125.007704533621236 -0.022336900000000 41.284952476307481 0.000000 0.000000 2.782178 -0.519320200000000 54.112540845143116 134.563353303998753 125.014220708871164 -0.022336900000000 42.068015960800672 0.000000 0.000000 2.831683 -0.519320200000000 54.509141649256179 134.557063169267849 125.020796262441507 -0.022336900000000 42.853142641773751 0.000000 0.000000 2.881188 -0.519320200000000 54.906828896502027 134.550729010674132 125.027424544862427 -0.022336900000000 43.640386067628476 0.000000 0.000000 2.930693 -0.519320200000000 55.305628457749322 134.544353107712311 125.034099265866800 -0.022336900000000 44.429800913883049 0.000000 0.000000 2.980198 -0.519320200000000 55.705566887356234 134.537937588540245 125.040814466979739 -0.022336900000000 45.221443028311107 0.000000 0.000000 3.029703 -0.519320200000000 56.106671438924892 134.531484442199371 125.047564494963822 -0.022336900000000 46.015369478132058 0.000000 0.000000 3.079208 -0.519320200000000 56.508970082680428 134.524995529916310 125.054343961739178 -0.022336900000000 46.811638599350310 0.000000 0.000000 3.128713 -0.519320200000000 56.912491524852868 134.518472595114758 125.061147738735954 -0.022336900000000 47.610310048375339 0.000000 0.000000 3.178218 -0.519320200000000 57.317265228720593 134.511917272695115 125.067970922683159 -0.022336900000000 48.411444856053400 0.000000 0.000000 3.227723 -0.519320200000000 57.723321437640799 134.505331097222182 125.074808821437358 -0.022336900000000 49.215105484273579 0.000000 0.000000 3.277228 -0.519320200000000 58.130691199777722 134.498715510613636 125.081656939685203 -0.022336900000000 50.021355885289402 0.000000 0.000000 3.326733 -0.519320200000000 58.539406394821697 134.492071868942077 125.088510951780577 -0.022336900000000 50.830261563946415 0.000000 0.000000 3.376238 -0.519320200000000 58.949499762555099 134.485401448795471 125.095366693464513 -0.022336900000000 51.641889642962134 0.000000 0.000000 3.425743 -0.519320200000000 59.361004933467683 134.478705452966977 125.102220149293558 -0.022336900000000 52.456308931500786 0.000000 0.000000 3.475248 -0.519320200000000 59.773956461340426 134.471985015767302 125.109067436421668 -0.022336900000000 53.273589997173957 0.000000 0.000000 3.524752 -0.519320200000000 60.188389858109545 134.465241207735744 125.115904794725623 -0.022336900000000 54.093805241813911 0.000000 0.000000 3.574257 -0.519320200000000 60.604341630791623 134.458475040139717 125.122728576337991 -0.022336900000000 54.917028981128901 0.000000 0.000000 3.623762 -0.519320200000000 61.021849320826064 134.451687468994635 125.129535228633529 -0.022336900000000 55.743337528573875 0.000000 0.000000 3.673267 -0.519320200000000 61.440951545881759 134.444879398799742 125.136321298981230 -0.022336900000000 56.572809283730095 0.000000 0.000000 3.722772 -0.519320200000000 61.861688044240815 134.438051685895971 125.143083407709057 -0.022336900000000 57.405524825441049 0.000000 0.000000 3.772277 -0.519320200000000 62.284099721844534 134.431205141735319 125.149818259607585 -0.022336900000000 58.241567010070440 0.000000 0.000000 3.821782 -0.519320200000000 62.708228702342396 134.424340535680727 125.156522615237506 -0.022336900000000 59.081021075241104 0.000000 0.000000 3.871287 -0.519320200000000 63.134118380117492 134.417458597762305 125.163193300724075 -0.022336900000000 59.923974749401815 0.000000 0.000000 3.920792 -0.519320200000000 63.561813476595418 134.410560021154055 125.169827193710674 -0.022336900000000 60.770518367645991 0.000000 0.000000 3.970297 -0.519320200000000 63.991360100101254 134.403645464410545 125.176421214032601 -0.022336900000000 61.620744994307202 0.000000 0.000000 4.019802 -0.519320200000000 64.422805809295753 134.396715553681332 125.182972325644045 -0.022336900000000 62.474750552672084 0.000000 0.000000 4.069307 -0.519320200000000 64.856199680656857 134.389770884664074 125.189477517766150 -0.022336900000000 63.332633962475306 0.000000 0.000000 4.118812 -0.519320200000000 65.291592380283504 134.382812024333475 125.195933812801414 -0.022336900000000 64.194497285700521 0.000000 0.000000 4.168317 -0.519320200000000 65.729036240032130 134.375839512812121 125.202338256315997 -0.022336900000000 65.060445881288118 0.000000 0.000000 4.217822 -0.519320200000000 66.168585338793363 134.368853864779283 125.208687902483049 -0.022336900000000 65.930588569501978 0.000000 0.000000 4.267327 -0.519320200000000 66.610295588791615 134.361855571109686 125.214979821984500 -0.022336900000000 66.805037806619012 0.000000 0.000000 4.316832 -0.519320200000000 67.054224827748712 134.354845100086436 125.221211088695085 -0.022336900000000 67.683909870835635 0.000000 0.000000 4.366337 -0.519320200000000 67.500432916983314 134.347822898795556 125.227378779424171 -0.022336900000000 68.567325060244585 0.000000 0.000000 4.415842 -0.519320200000000 67.948981846188417 134.340789394248077 125.233479965410467 -0.022336900000000 69.455407903846293 0.000000 0.000000 4.465347 -0.519320200000000 68.399935845306402 134.333744994485983 125.239511704747812 -0.022336900000000 70.348287386734100 0.000000 0.000000 4.514851 -0.519320200000000 68.853361504036670 134.326690089699497 125.245471047533030 -0.022336900000000 71.246097190516906 0.000000 0.000000 4.564356 -0.519320200000000 69.309327899803478 134.319625053126089 125.251355020468793 -0.022336900000000 72.148975950427996 0.000000 0.000000 4.613861 -0.519320200000000 69.767906734711985 134.312550241952010 125.257160624692887 -0.022336900000000 73.057067530411359 0.000000 0.000000 4.663366 -0.519320200000000 70.229172482333013 134.305465998212100 125.262884834947386 -0.022336900000000 73.970521317829210 0.000000 0.000000 4.712871 -0.519320200000000 70.693202545235152 134.298372649568421 125.268524587687466 -0.022336900000000 74.889492539528874 0.000000 0.000000 4.762376 -0.519320200000000 71.160077424196501 134.291270510017171 125.274076781319593 -0.022336900000000 75.814142601194774 0.000000 0.000000 4.811881 -0.519320200000000 71.629880900065928 134.284159880685394 125.279538266955882 -0.022336900000000 76.744639452078061 0.000000 0.000000 4.861386 -0.519320200000000 72.102700229710081 134.277041050352921 125.284905846107876 -0.022336900000000 77.681157977565078 0.000000 0.000000 4.910891 -0.519320200000000 72.578626356975974 134.269914296210658 125.290176262247314 -0.022336900000000 78.623880422090153 0.000000 0.000000 4.960396 -0.519320200000000 73.057754140561840 134.262779884331366 125.295346191948468 -0.022336900000000 79.572996845477363 0.000000 0.000000 5.009901 -0.519320200000000 73.540182600068050 134.255638070311988 125.300412246994313 -0.022336900000000 80.528705615854705 0.000000 0.000000 5.059406 -0.519320200000000 74.026015182351912 134.248489099673861 125.305370959673240 -0.022336900000000 81.491213942903073 0.000000 0.000000 5.108911 -0.519320200000000 74.515360049951937 134.241333208459167 125.310218776621824 -0.022336900000000 82.460738455459435 0.000000 0.000000 5.158416 -0.519320200000000 75.008330394138682 134.234170623649050 125.314952056120333 -0.022336900000000 83.437505828157185 0.000000 0.000000 5.207921 -0.519320200000000 75.505044775073273 134.227001563547333 125.319567053697995 -0.022336900000000 84.421753462240915 0.000000 0.000000 5.257426 -0.519320200000000 76.005627491930014 134.219826238254768 125.324059920521975 -0.022336900000000 85.413730226409740 0.000000 0.000000 5.306931 -0.519320200000000 76.510208986381954 134.212644850019501 125.328426685181370 -0.022336900000000 86.413697264267995 0.000000 0.000000 5.356436 -0.519320200000000 77.018926283171240 134.205457593606070 125.332663253307075 -0.022336900000000 87.421928875902779 0.000000 0.000000 5.405941 -0.519320200000000 77.531923471951430 134.198264656624417 125.336765387793832 -0.022336900000000 88.438713482028390 0.000000 0.000000 5.455446 -0.519320200000000 78.049352235264237 134.191066219888285 125.340728704837090 -0.022336900000000 89.464354680377710 0.000000 0.000000 5.504950 -0.519320200000000 78.571372428186152 134.183862457698211 125.344548657007849 -0.022336900000000 90.499172405365385 0.000000 0.000000 5.554455 -0.519320200000000 79.098152715930738 134.176653538089653 125.348220521655946 -0.022336900000000 91.543504203614916 0.000000 0.000000 5.603960 -0.519320200000000 79.629871276520447 134.169439623226026 125.351739383324059 -0.022336900000000 92.597706639810013 0.000000 0.000000 5.653465 -0.519320200000000 80.166716577161850 134.162220869520041 125.355100121390194 -0.022336900000000 93.662156849593046 0.000000 0.000000 5.702970 -0.519320200000000 80.708888233550184 134.154997427975871 125.358297386042878 -0.022336900000000 94.737254258623125 0.000000 0.000000 5.752475 -0.519320200000000 81.256597963542305 134.147769444386796 125.361325587994315 -0.022336900000000 95.823422490172462 0.000000 0.000000 5.801980 -0.519320200000000 81.810070647975891 134.140537059575053 125.364178866182684 -0.022336900000000 96.921111487069240 0.000000 0.000000 5.851485 -0.519320200000000 82.369545513821208 134.133300409570580 125.366851070769641 -0.022336900000000 98.030799878245688 0.000000 0.000000 5.900990 -0.519320200000000 82.935277457255140 134.126059625815600 125.369335732985860 -0.022336900000000 99.152997625132542 0.000000 0.000000 5.950495 -0.519320200000000 83.507538527434335 134.118814835421205 125.371626036789124 -0.022336900000000 100.288248989546872 0.000000 0.000000 6.000000 -0.519320200000000 84.086619595621173 134.111566161258651 125.373714785665896 -0.022336900000000 101.437135872049069hkl-5.1.7/Documentation/figures/e2k_1.png0000664000175000017500000044726715136610416017177 0ustar00piccapiccaPNG  IHDR,L5־sRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATxkp]%xpIu Yb'fpc I-ސM9n[T RɋHʅ%q0Kn%F6f%tm.gl,fca<9H}ZRnݒ>tf=eYYOG` f9ip\Zz}S ,Xp)j$ )Ei4gz38 pTSc0\]]=*,tVE |Pa R׳j5a%#Ri4Y^^ڬ9l6UU\aK`nTf=%07l4dee%Zmf3fsa k690>nf_ -\CaedkkX/\]]0KZP@ryy9Z-jkdyy9jub,P֫Vz?w\8W5,0f3I&s)^a%e抰z%s^l +1%s{z +X0SJ ,a%ìa LlmmVZz*\fͩ^%&W թJUׇ 5UXl6#F,YOֽ$Y^^NZMVy~^Oszdee_-Ye$IFlyy׌sl6Ǯ[ 2GV\Oְ\Z +/f$nl6ZzXsCK807XsC` %07XsC` %07XsC` %07̕|c3$`|O~g= fD` \_я>5i0#K>Lnܸwg=fD` _Dvȇ? 3 `nlo/)v~h`̅~,..$I?3 `.|㿚Je!eYRYHR-X0:I,#E>rJ̀GҍeL*"KK7\CKf?nueXB KH` moE[aY((RE>am׉G>),J(h NSOuEJJe!{_p],L:IE%i[v FG>ܸq3J%솖*"e\#Kf橧>eNeRޞpB` ̼Odaa!I$Kx'l %3k/"VXE/,R,,g;a.O $Tnf-X0}v!|0,E%e·> ,F` G>07:~p[x%v mW i__[òs3>eR-Xp?y_*n`kWX&Iʇ?-*Xpᖖzt+QXW*vpq\ťT*ENN +{_;epq\wGWʡ~u`[xY&ozu,p7Gtchtx^hYIQTco&rx @?G~Ǟnvwgww7V+^yu{7~묧 X0W677Z60Z!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n,!K`n\H`fy. (ryy9;;;,#]H`YՒ$BK`Ni4gZ!\M -^]]=u z$JxVXFr1qJ`.q%4ܘh zf{ j6i6vƝ0Α[[[JVlf{{`&90|{{=qVX=j5kkkvVWW^5e2Ivvve32VZ^^Nzdee@w^TS;l636L'wvvZ6x 3&q²^2_9^i`*,{Օ۽ǝ[ՄT6hZ'mX8[*,feh}ZPa ̍KWI%07 ,Yl8āeٜ۩VSN*"ꡰq0\^^>z=K`* zFF1{ l20Xz:wkkkd&qafFUִJr<װ\]]o3l6󶷷IreeEX XQe98l6ՓGvOzY_EGs{ass_\cN~s/{ /H.8Ta9~Z>/ivc[,--/??ip *,KX&z>я_R/eww7{{nv2o~cyߘ{S{M6X\o.L7я>޽rދMYjvl,@B 0ۥ ,;㻳gw~߿ꄔW+Vk~YE?Ĭjy7c\{K2 ;S͛rܹ֝PyYnݺFn޼7ou_s97RE~N~ޝ?';fZ|#]O]fiFnܸ/o~(7oҍ,,,fqq)7nȍ7s;t?5O\2IH]fqqH)o޼7nfaa1B/j KX&#.oo,,-V\臗nuvYOI#ߜW$I*,..fqF˥NX/8ʕ,$IQtڿy>>=&p+X&O׾&IR,,,v7Y>o8t%Ε ,]yk$IQYXXOq乏>-~p8Iw|7I:eQ_h?Gg?G|wWkEOp%$OKY&/~g$'?JټYl`#ߜw㯧j{r5ìfgg'۩?I+X&̝;/;ڕj5YYYIjK@W:L׿{F{ӛޔZ-Y^^6q W>L{S_+?AkkkY]]M~p ,r֓ zFdee%Zm67758 \Z-Z\6Zzjpe,TRVS׳p:b ˳VVo @`y ree%;;;L^~׷l6TXZvMlvRp,;;;&XjhX& 5izO|ojjWJx6<,5'}څZyJzX23ַFL̏;2]zp^CZVe{䱱:jzR^VG8p%3M^ߜ̿o uvv^:yMN5<}&T*)?%/NsMG`\%\?OݖAˤu*Ov[cs~S^?ˢHJʅnhYixn0%sp5՟я%{_ )? )*[V??5i6ӆݡcJ^FR=7%sip}UՖpt'{ _X~X{xłIċJ')+K`,kַmַG`ɕ .Ć0=XNvɡTg)ZL)0\yZ-Y^^N&$wf=fp'}C*GU>M ̣&7V_w!׎9#/i- )oHqO&Kbk&O7R)ݿp7V1Ƭ'GIZMLH?~xSPOFg…k?~cꤼ .ǵ\ei~4rћɆ>}T^P龊(ߢ,;k\%JN:)_fd?dSTSՙ}=pt#;%i'i1jxǜ~M|iÓ^[+G*+*)nT&{Ie!Eչ .\Zͻ?t~d$9if_m=RL`zZ¹FoM+|=MKW[dZrz2HW`} I}eܫ2pЫS̻{ZNh ɋ_NZf}'6/PwMn$Vu;˺. .;*W5C`L$Y IDAT6-g=]ɃLZ_m٣ZGOR9RF<{Dyh#b} IyL8u xU8\ 9(,=Щ֬,+GboZvw/*o9ē˻eR:e5\>Npe8LA` Iֲ$.+ݷ&o8xRU`M|pdUVdss3z}ɔLZy Gj>rl6VWs  Bÿ9*:XH*kp")*^ #*`uç 'X .Ǯl{Sqj'^[I|4.ExR˛6o-s/)xKk%p;#PTQĕGco2+cB^Vb3.v?SCc2i1sƅ4Y'+r\h -nx;E)n~OI|z[cx34~ &sQ`p -t_ 鄖 w͋8: +v 1jj{44v{ 8u#*$Ozല}(N73|IO8q'~#^ke))i~'mt=կ{3Kwo>5R]拾eS4iTzAf3y{Gy$juS$IQD YL^NVVVRf=%Wכ|~ֳaz~UWf3}1+GW<,G؈$ ??^KS??T~8CySiBN,}C/ڿҭ_턗3UUݟ;{Iv~+xmVfunVZ(߯gϬ_܇fbϸ˩jJ'Ao}zFF!."9ݒ~7n v8u+G.{߃r`n&3064sQ%z`nk1diI?4|D >ksd{cOEM}w/-WeJޒ2&=\ַ\z6޶19iөWګlN`9XiYIO .[IRfnT=O tEJ K8(WX&ɯv.ƳRsT8ұwQ78 sjQcVy x뷧?3~nc3=*.gX//exoZ&nuHR~-ٝa='S{}BYݢ䁪nwWi9\qvwu?ಝ= ^N8=pkkkm%L$_y͙po\5crpUc{p[p⡱jyr=4#+"3ϸ:st_Pm9̡\HkoVZNoIꄖ)SIy+MV "eQ\~wŒ^߲w{{$)N8\v82Ra l6RÁ d\MSxYVV"UnoN8c+ϼr/(cVLZpePbJ%e9?[^T?^L]&2eܯlg}i-z-I?̬n|sg:\fK8#@`9;1h:<6<戀r)qWQpD ,7yw矤{6vyɃv2yBˢ .[ .yWޑ̃kl;}Gm .ǵ -$y)[e2STri 3RRղFfo$_qkb`[#i> Yp;vòyN>>xʁhFy&hzZϨ{6iŃ:S0U+)[I^z)h2E5ɭo-7LW9nҍܿRk,g:jMy_Û^2)2S{C%+4\O$vf;!.&#^}šFƇ5<-*ax8<ǎsqxΣƆ42;"YazĹy~>0R醗G% 2Q֘ZݖQ .ۭNZ{)$7VWMsx?t7t~s)[e~YܾśK,VR,b)CYLg'$7^7c׼fiIn%y(I/?n'e̓dS}Ffxfyy9J.5-po ̣-VwՔčl7>|)ć۬Gn3nm7yLKs>-|[Sx/c~y4sĈo鴈K@?*^I*E|!ٽz[VN% 7rέzNʴs>VUv-׶Ne{voUov1-0k֩Ra Zf}}=+++i4LٜW}gp5TUǍX1GVVNPثV VR9o6j5Q;ՖgR9Ɖ'9pJ{l\zxڊɳ:#KUv*-ۭJ~UoO_;Ƀ)Zd㉍S}{Ͽ/}rC}eYqSmXI1Xm٫\LmՖj^E~ԟ8zduu5kkkJYOjj{?~xSi|yӫ9&/~鬦uPiy`Vpw脡G apyT9ܢ}}K󋿛?8Q#{F7e}B^/(ܹܾ}'K7[-v ~T5o? }[[[zpi4I:ǚ#y; [#_:i]mv&"cr ;M#q2>ݱK7~kJ#D'ǴyMk^F}3/S.ps!7;.[^<ߩm3\59X=kNWZstn7Y?/ȕ0cַ.ڙaIT:UJ=cçi*1*U,Ybs?}ƼYmyx?|4{3v`^MQ9N.l `:<(RT:G^߲l'K7F\6ruY?}-oYKC=e^k7{nPIY;k[~k U9qlzI%-FSD%̑5Ip^δ38Exk-{ױk:Wm9#\>gܜ& OrNxiEX(ۭ}S>qpyd>4wR)[s`mxƉnʤrK򗥲Pɽ/iڐg/2ᓄeCGjy -a[[[J̡Z,//hdkk+fs`KnM>FB>*txơCpfaa¬:>5zCG3G2th  _7zg5֎v ,=&ʼn6}C-TfJϵƒٽ neR"f<Û辯 7>p3JVRԟ?V׳X#s94xm6I?M9<#8A/ZGSJR/#7Po$Nvw~w"}'.*_b:}Ֆg'j:EVx)ʤ(%I2~}Y~'>N?x*,n%X[[K+,/N{W/rtvc2QmУڠOS]ow~;g'sc4&~10Cs:rlҹ]SE%EndThi׷\?iBֲַdW&9zONUmYl4mUƝ[jK/foAg]ˣBnw'Si9Zִ -Zrs˽Uv^@ tjˑLJUڿOT98ygR2eo5qI-9I"<Z&yYv*.xn?rt6dLpYf6jTR>h\6ORE|R^'EK_΃R{I=|0lpx\Af3Iti ,ኲV 0rJ'~n .U <,ú & .7m I5\Fg<5,W9G&iǑӹ-ˁx}Ebz˳^z1O{u-C TZZ- z0ˠZfmm-+++fp<䋟ϑy2tlaQ3vY;3~sG޵{Լ2jlG<4ߟIuà7N <Ī,;`lee^nw*y?`![_]Sv fU)ޒܬs3o-D׾''򊕴/֭͝YX\HX$ E۲d))F:S|=o,eܛIn%ӽ]*S?z 8g[[[Ua%pMQ&гO?zw{jJL =Q{I۠GWM8jl|6 WX?shlԜƍs㬪-G>}J3&&>ԃ[?^-iHN%^Pnݹ_ʽ{/u+-ֵUQ SIyT{ڈ)s8c6>%k@"<փ  +*< x( {4噶;IA׾Nt7_z3psN\ ,ۗ1tӯ\U_NbT9첾Br~p9bzE$[BҮo7_O"^~;z({K/AZ>ȁv['XӲZVBKu*g̓$ˬ{qLq HȢ3C/5Z{eyZcÖ]^K]i{j`{u:H[EZ%H@ &AD`ξYWTwW|z2왚_p " ­ :mq5=R.fKGj^ʹs#us띎',+sQt\c_!2* IDAT48K\?xuT*\D\VnLJnJtar{րiLLqC7?X7sWObTfgp;snMaeOZ=iy|gDZ "Rna$AnMDX0yⲐ@\*+,G)D&cشpPeIX813﴾@)PwLiTSkBQA=KOU$%"-1 O\Opf9yNITVRVZZiY28HKaZgϞ=݃a{XXXĉ,//2sssmADοz׼_V{pJVށ\ VZ,"qIZ#i\I}y dJU-~=ҮQ{?S)q\:K?ogt}JJ\ i'v듹S E[*]Oo۶'*m=Q9.qGwO뭆}U2.5vh9t ,YH쳰oGN|}o~۱T+TUvq.G HkM._ٗ~䯎B.ϟg… ?~SNaKAIq[ q*tHuxVAȼNy)՘Ԗmً.rgdO!n lsz{N=fHRrHJUO#/UBE\[x^}˓tiJ2Vv/غ?2xԴtA 48I>3ټ !7aa)Bo)!n\+44ɔ<qi`",|).sH6T8%!p}ӧO?ԂaWr&ITIhڞ-UuށeZ(\X-"0?5)" Q:01$([^0MOEZ G#KA29wQvazvTcb͈ж*mlAӖ6 k;[v<:8ϛtLm˻9Se_g/' ֛nH:*!jr ֗G>AJ?AufڝfcҲI4Ҳlr|EZ A"D H A]²oAI(![7Yn)q6 VGXFdKs48F%.!,}\KҎ/Rf[FO^giulsWNb1NO05;KjlԽp;]Z*Kj_Z[A(KKK@J LnUWCI ab}}j͉dM mT+Q''/=eU+gXqtzDW SҹǯI|KR[Ch[| I/R{qC/٫R`z -cٸҫQ'-e\혾0;wND `DX 0Rq)_ a|ڍ2$MƶkRziN\ ͢2+:^|-ai !OIbK՗ݡExl{H`TɠT.qѓ|~/l#RRv",A4K 'VX0y2$OJf1M&c[2uM arH} qy/+cmb(Pړ\׿$92rxRģ'OU` A؝aӑ A/v̔i/OjXYCtIV--GP1=%ODZv ^J=Av?'Nĉ;wE )%I%CaYzxPP.'ˤ!T6,zDOpIu7iIs7-!ݶ$]n[h'|\e;ia*M<-}X(:uڣܔa-0:w? &>.і͠:;Zz/= e) ѸAzxxpM6^=˖'JD_WGT ­KAp:ӧ勇 lBXzu "#M(<%"oY޶Af7+(ڇ ֭`SeaR0rL:o8^vdžvۋ5%,altogqi܀ɥюsvIfgi64 \[GY e+hݓve|6^=ˎYVT+ڶMY9 pk") l+oGiSA2Y_"+Ҫ#KLӗXCRs_״mۜ&ܞ51&?TawmiR*{yQ4Mql/Q9. 8T&bi^8߻~'`[ly\å4ZkZ..oz__Dl WÃ.  41~6LXS)6",Av derJŢ$Yx[L%HSl #.Fڋآb.cL*|E(1ޖ&)m eYHL :-OV l }*.;-%-[mG_Z~ ܚKC5PI6]hcU1m+R(_m*TOjB pNͳ/.]/w~@HJA̳gϞA 裏D[ h9y_~((}?9qde"ٝГy͚p;wE8uDU -԰alz59`%/ڲ/O)NXuڱnU}˴g8/94wIc,V`-3Y_[cY PGS2$-2 e|[+^v1|@Q17allb;h[w jZ^dqmq[WϲEd=zmЏ GRA[ '+m;٩ȔA[LJ .A%N 1Uh`1ƶEum9k>[U2kڜnehcLk 4IERP@܃04q`gַ߯ ?K^vమV7 z oanzxK &{ng+r<=Wϲc",DŽey@D Q$RA|cGEXngE$&-/Y%=ҢcQ)ۺM)6Pe< !g'ͳ 8h ?-mm񓥜?)m MOXn'ag؈K7~3q -!:^nc]˽>(MݷuXhteim`h88]ope‹(Ԧ8ڞ }u*%(A8",AQH <;FXnyYB!OmNӷN-(M 4 #.cLk妄%."B5AR_c&,'H_֞hXok vݬ{oN^8JKHᓓ&^}a7WQ2wPXؾt 0m(Dz=i,Lco{{ s9 "R|²++lTT*9"Mu3R36Memfq+4^{OXf͋nLcWV/,nᝰ,y;ْڍ:o-}N9_]~kI23`7շ /wSZ>jAQ`fnvI^DZmtagi%Lv]쎍k;^˴zMWrffOɇ؞bH  RpXIMhJ?).k6fY(ֱ쇍,0DI6l֡AWXvFv@Ln,BeZ׮[O\F]yv9v&j"i⡧m`b$ӳ4[ :Ĥ^%L8 rL_ZlI͟uvaDX b݂0c-,7IY9)".V i/k۠r2k[QX=r8qٍ,Ywx[IԖ#)4 ͦOX0Ҳt])Y{Xv؍zLX^COFjKO^ܡqc`rn4frY:&eU4LlXzM(L.F ADX k4A( ˍ"$YQ )b?YQ# l{;̚fk7\$oSPJ 232V` ŢR-2QXv7qQuWRC/2&,ïeW̮oI0L0QJENvYIŬ0:쎅k~DNg(ULɇ~7gӧOa`DX X zB$ .Yi:$-IKLLaฮN Rfbcߩ2\d[OVex3NFPM/i^ݨKL䧉+gMҲ|+{LfQ*Y__jwЖee-S)WZiq:/-uv=KճGn\w@ ¨a)®$r̙ c',լTh%}Q\ɶHSֵ̍b)"Cˆqu(%\GKӨťՁz}²t''wJ(tay7o\Oq9l}풖3)J3%kؖ˯gi:e*TUǡlawtXZY, ɩI8į~pÑނ  j 3V²݂v3ږ'rS+ފ') .y BRSOsReZuH)2ƴk(.54#iAD֏|“c7괮_et].k_}q0:w+omlh[7p:YzTEѕ,iᙝcv~񵭟ET Y@B MZ`CxxnB;TZ&4d!w۠B3m>'/=aNz2,".UE7NgP Q}ǮM-3eu,U<o|}vM'>P1Scvnu:FmPrJL')ʴMͶxLZT)q~y{溃ׂ l& V<3`An"BKf66$Hʋ,iݾ'tBvVq$O| YsݦeKO)iIsLh >g'eLe42k۠y}E\4.1ÒwO q۱nSDXd!=M_ԥqUK(^Ҹe֌+q0=RdmmENڀճ j8K}}-cѿ_2H ?|(7'zZ<{ V277ǣ> R7E-[g5ǥ >Emhnx( oLퟲ0RmNm8JW IDATʨlO=׷]E_%oY G0mScNhP)RhT/1~m*t^稓z_K\믷Nnwxwzێ\dSyA7[^JSk[DB#fz59qNAoDn!Z{ *&'8GoخDmRe[A4u ZkVLNLbk 7mm[Lj\ݸ~ԖLm9wq)aa)-B",,,077 pMX64뤋8)-O\**Ռ6Q\eY rǟo{Lv]6 E{ix Ii gk .ѡ>N]οǷB\{yQsp0:M` =쬯˄1,0Ÿ.Mc&.m{I7? Wk8ڡ6= q,t,Z[kv52զ@c@n&ihZ&mƲ[:5<(9u|WaKa)- 2ssseLصll5BiY.0C2oQ˴!ˬž(mOY mi%C\&ج:'Ioll N_x n\z uiM-v Je_/B}ÓO^a+L?E]\C ?TffQmX; nWFp0v;ts7P 4b;65q*jS؎m۽ݎ6hǥc60w}6F,//s?s\pǏsFaKa)@/M|aaeIv5",nH}*)- ))CJfmtޞyetq%mӮKLK9􌎗>qoO 6\ *s dvK[]:>ȼGuj5O%0}dPj6P'î=÷ >?UIJ>OT8p5 hmQb4$q~f|su8Ud0H7oFhji NDZC?DnYՉ :y|dqqcǎqԩn)%AD Bp} MD\ -4YLd˞$fE^9iLK8Էt46y3pZ'y~',{ NWu'(nݜk5 jr U*R }j`:ºx }o ": [kQ@\B4M<"Aʦ2QZb6( {E)NGVؚF[Q|zIu*%HB BA}e$M\Ull=YY I2.}M(.7egR״!43el髣{R%԰1cVVo$B\eid U@K<|v(ò:XڍճKK?5`r,ᄄdS)8(A2ϟ… ;v'NHĥ9gyO{ol1 ?F{ detAN|0\?y}RNlϙQY1뚥mK8P3 :m> ZS6^%C`c5vqr6d4 @gbP@J']=y²'1=a}~/R>)I'!]uJ)tKE7Ey JT)]iSTg'سofpLjG4Kk85X^?:xr,u{8r6>nxe3s0=@+ mԦ{4K oY\bVYkopmq<5WcrAۚU=|O>ſs,^`͏ҿ8v?#?"eAA KKK,.zH ̦ fmգ pxt }e pCʡ%}Ĥyج H,i6 ۧdwo(]݆c}M%e\D=TT`&T'{P[²y=88muh6\v/)Kwo{<ƕ6W_4/^[NdSR%{9PʻggQ+0&jrޤոDd-~e)pk4:tn9v,C}c_5u\.]z9x{OGHRJYTG.0BΟ?ߕOq)%JJv_7byFRxBceәow9#y۳&甸=뚤]k- ڛOY.=m.I s]e)I$y~r'yDGk\Xv7fdjC44xi(à+ 00LT\R==>47~K^|L>-\uZ.c7ɟuҪqʋU:ncck?1ʑINBior mEW j)ag?wow&4y}?h%&> q)GA H YXX`aao)-#XIO tRq9paA}PwC3=3m[8uZc[6V{ czq<۠_~?jy<3}ǎԩSSKAMB[ Ȅ~Z l}ַDV'K^I%2zb3S\]g;mY":d?uޢ;I6s5\yVD\XRf27YOHJR2Ip&ScBS奀wZ'8Vp|k׾ܸ~<%awWx5tmZ-2׫oiQ߲+-[^_\ފru*&[^hCZabr \tmJ207n\^uSY :/{^xO링ͭoyܹ:U)n@ &-r.i80aƂ:O¥'x MY6Q\楉'9%i5]ޜLBk]{%s}ͨ0Rri0ЕjFIҥcH^*@Ⱦ@TV&HcppzxXtq:6Nח/yy_y/QB@f}pv_Z[v %oe g¡T.195E:Zhyq^SxW|7=8u(7SRT p!RaK}Ka+)anpSl-ᆰCՐ,,>C3Ot },i`̻YϚwͺimհNtPp7zRfd;9 k\\f:mCB$FmA 90ĥlT*2 CjYȓ:soH E^Co|O>a~NVolgAk9$-le p'c6KN?_JRuWEmne넞]Ѯvظr KX?.O s0xD]j74_/RkǶXX㹗ŏq{x53'u-dz ַ4zncc3I P#.3{p]۶ ƱZ?~Z׮_p覆w:76_{_\LTRR[ #C 2ϟ… ;v'NHĥ))޽6vµ4X,W#Խ3/9~볿ZlO{ſ9sf+"KA1A[ [Q|?(NyhIÀR=:w"іi);&I?u~e^eƌYѨyRC]kLCyu0У݂˗B"rL֠\Mvn/Jt0LVt o lj=^Fc\>pQm LNp̃={h6 ]nHERr, ӕmS엞g}O?|op/bq`]PMyiNRxyxǙx3sL^h&|3[Bl~Ccﱘ?IZi{u*}UÛuMLMMλ:A96s}?Ͼ?5\87FTӿAnEDX I-$H @V30aIePNN<%7Gj^%̾)נb1 E>\kW; !Ic)ݡgIHݤlX'&ml+*'^,yϥ Υl{6KAuXY_w/r}m03{v:n`[҂LKI:j\B VowZƕ ~%&maIc+ -!sw$26g= !M\e[-fًv],#Zcu,v~7_emmŏ&)VWW9}ԩG ˜o(-1>"xz"=^ rsf+*.nL!e^%d'O&AɽjXj[tG)x"47-0cTL;N"%m'$VNE(i[Jy,#0;;7sž}}y(qM[CKo_cogu}fu#/m6\ Cۨ`v59Ų,.]z/>m|>&o `7z] T'SeXXQ{)pW7o$շt7\dr:pCi5qm [[-ܤxhǥN㥔Ǹk9E^ IDAT.?Ι3g仞 H KA2FIىe(oʫ h"abQշ̫[۸-j[v7S}˄kuTVMGkܠ;o{쌂}@"*b5)]tbR3eqY|m=gנӁVA1Ü8WW8V^{ģiʵQM~FTBJ2I<~m x|sIoҟjhn!DȇsC^y_zFm^ˠePϲN~$Q_ KA@P`iiE/:N[ P(zb0R6ÀDvC,/7=:t!L0LmHv"і9畸=mξרTʯa ݂=їxQ t@:J?r EPZHN>Gi8|LMF5B}DR6d ghrJQoxu5r'&u\_={6jñP: $ SѸKk|L>ܳ;tf¿(%/Pm;0ߺ˱u6Zir݋ɋ4rKy Osw˗:= y5e:,DX DKA H}Ka`r#,?X Ma9)R",!9'MK;h])(-+MiЂ9}~?Nw\ߗ!,W&Ed$e;J|TS֩sd#:&[k7<>ȋ pUv[gKhIۆ}OgԷٽ^}˩ܫ0>֎o*4g>AiYNj p(9mrx]q҅CA"Ra'$M\$QX`#Kb"0^.oAeXX)j>_Wx4kk$ve^x7=_w t-b(45V5.;(!FBe^J`c cqY߀/v܋ -W=>u!v<`hpo@w46-=eDX a)[E\ a=ʓ`LoPHED+7ecW2XO_ML#.JZ z)a4T-5ZQiCۏ{')dߧeɼ=[Kth6mi%IX؁CWX=ٻf 7T4}9{B?ぴlZl׹qTu&>*F!+Ìe}^~c2`Iu']\X,pP_b6˫k?O%V!EX Da) ׷\\\dii @ AXOM!kXOLffO'9oED[6^d]>SXRDVƢ*@Rq]h7`j+T/2n -]t r}wlpeR/K6'іcHeo Aw;Fe\X3fW\F[T<瀇zQy'?ΡGOu QDX b"iRRl|}$[dȊ,&e="_pDFXz}6El]\qww  \X5OVv:hj}ǟ\RqONei[Z, ׶p63{~G!e/˼^*Ķm_ZBOXGJ):IZj:6fokU%M|1g'M<\NN٫oNA Pow~_Ha)E -@Pryy%I `?a /$*UE>66u槉'ԩ"KX+4Fv@ݣz݄+;Օܻp?}qOG!R!|Aƒ3gpiyΝ;{";E HRٗ)zMe }e;Nq61h}fH+Wu oB \7`z}4vxті2 g\~u{'3ͲRr껗n7olC,?OR_r}1|*GQr/]_ݵ;6k+yo0q!6&nOyV|_la=+^=FX,~t?F gz%=[O';. YH -Fz<v'DX )j{$ M-.sȓxᎅ`HemIHshB焥v߬LOF,]'oO#j٪ $Z5aGs;$Q(JR, A¯5=~-HZtib4-h{~rcs>ȕ--*slǚ;pB,Bn蔥(NOP’ " K "V&>;;u#֝'#dF\p#SN8fۦ7m$YǴ%H?̇;yX˝m:LZYQTFcL>`,PL*p5r`OαKx= (%&GD%JL2ii= ÝfMXRs,=/~PF2Ҷ}MTEX[v&2\ZD"-US /]~ϝ'aI%AKxW_ ,}r0M=. FugA0džLǶ~g~i6L ˔dp_Eʪ@/u*`׆',7lƏ*6$L(8z:X]cV 3ΏE02>tqB\ʜo^CW!!9CQ96v=|#c7&uJ .(PnX*.]].޴PhzWSXaZJKKPQ! a<)ǒ,+%;(攖2qs>Q@+ZT;n90  EH))K 4p)O=իg?? $, LOOR˿Tne -=4$l':lq61 (=+#dF%m;Iˠ S2|Foe=J ha[ͮoT̽wO = ;BT U0 04Reґ8]y&޹6IAДp -<#Gѣ=)"7O' &BbgÌ{%;NI̗Hsplw/ΦHG{ B?>D fpKO7 }\0!j āwK<R̲˄( J]o9< 8pm+X;py=@lqt+g(A֩rP9,.o0{,N^;;ċ!xP’ E_&[np# OX&azȎndTt^&Ƽz4aW\漸iK_tڦK${ӑSeerv窉 IJ(oe 02Vo 8r e)%R/1ώbc\_3cߖe{!Hr_Q/](5.. OB-7&ǿ1{MX{)a2Mʑx]ީ=  (aIAt ~a۷ǎã>a_ ;m1Cvz]K_FE:ŵHvۮ~fqQVvs9w,CI SVA*9  p8`7 ss`]{ Ue 0p?mie$-=-'wUf"LКy˸֥tpD440e킴 8ןù #xA’ d8ˍg2deN,lABF墏29Gernvv<||\{ZӉ9q8pbNpOfzBV+|w Ep_Qqڹ@\V =You &z K 7.LeD['! +8ӄ0 %IYfơG/yihD aIAL穿'rn'PJn]_7m\2)}Viznwe ߲m2l'YN1?eZӟ aMY =;_S q ~?2a|)'*Ǣo~R-{%RiQI"q#c(J !2cCA0Y ^v/\ymWEqAĚ oK_i[E*2,DLiN%%.3}l<}MyKiZ*"EM`9gќ$.;-ߙ]LY>pNG\aZP~Xנ+n6P|AL#;O⭕pr{^ʔS3@yM1V,cqo'ب=,?:BZ}U齠 B@Iվ71\ oqܼmIa %, A-ϡ'sέaR(z/tL{\m*ZRx9ŵvL[}Ҷi{$qʎjN'%e%4jP0hY+ w9!h?8&~j>"($ B#$, ~<8x ;GqC^ IDATy' Kun"xd힤ee֦mO3qϴ%BIywήw/+ASN^I4l{;7o3.dXD_\ a0pJ-IK]".NuN/'q*OLXY prB9zK,lcú2  K b]>}e$.C[q`-e5"7?i)DpbWxz Ka_*xKb p PVV05i+,/.e^ʲZSoϾ  K bC㗉طK^ȝKݹO2Eȵ]3BXq1m; ekՊq./ɮHVT a Zp`k K0gi64"yoaܪ`ic]f 2c]~ķ ҖXGPDe%-PPL!ZL, Nw~ahGސ$ 6;q9+0e~2 \[ ϥbW(ػM!2M5@UꫫTV09M,=*Ra&,;0jU\ta]AĺC’ 4|/-wʎ~0@,;lm2O"-[NT]ۤ-M\vLƕ۷=lI_=cƊ|~xb KM Sˆ',%ᆩA88d T p%LwoLF}-e$.7)bqJ22`1!%@VF!q1{N\z{XWF$ 62ཊKӌwF;!iK_dFe[qf^v98XvޮRhgegO)0= -_{_;\e2eNW. {åNlw(zhr6j UV19 0be J(EzYFSɤ\VA+$, MKZ˭H|*x:fJId®S2pes ,.Ye9=#YR|XƧZmɄ%idP,ei 3(/3+*-Lǻ Y&N-7)`qFFFQ,”'-; 6wו|ϰ b]!aIAlj#l-%ڐ.+{Y'9 H\<';mӖHK[V((CBd"[VXgGWFѲpCy)jB9My׌o^ <0!%dZYA^4!I商>-ۮڈ*<|hRy㽽eѩI۶a8BqZ˭{xD ?LpP^/K#[nߒ78o*pSO  ^/K/aɒ,x @ s7֕A$, -_&[C_Xx1gYq?ӖkY/D%KM}_.. b aIAly-7zxR瀕7!ԋ\P ^h1DzX ʍ@iDLKOwNnv>-fONe%gᰝhR]FR~[TXB9~  A{% 7 RSsݤ:2o3̔"w Q\fng[9HHV D|~cRKWOi7]ߎ dG&g%-Xgp+Ůω[987P,, o71`yy _p b9"  ~,9#G}] a72Ƞny"-往X/`S3)eÎN20wW>m>wR',`Z`P,ci nAJ/[i6.\7!mw6s*4 T˘ڎE4pKY2`Aq>|G;+x ù. u%AdxqQ;v ǎRGS.f#.te煺 ;©koy'|籲p徟#q9LNc ](pf($“ KS6vz_~ _εA * ' -7n㌍d"k}ؕKnܦt$vMٿ岆dxru^Ļ-qoyiQY;A0ժL%e4:Z}ߐO|x_c3$W^VѰ똜n?%ӕQiJTa\A!aIA/ Sg= gݔwsnKŶkEc'm{ /)6Y̻m pT:p캗+݈t:5|sqC… n &``n-*ہ[p JZ<21ZhbԲMa 5^J)>r}x _(p0?w S`wbRRWU3,eF  K [>8<9G˱Y e_yJ2p[ײ*1oL;=Hv-v;˔1Ya^ Y>s4ljY4uprh<3f`.-&mI}o?^|ZKF0Si7 pK@x \sP!2+ r@2(.U|+i͛ %@cH2HYFK³J*. b$ ~˃رcxG`}n3\N)0bry hʒEKӆ(q`7l_\AĀ aIAHo/wk/.-Er*x'r-6ahb7k"T؇\ v/m'V|xIV!oN3_"RJ- |Ν ed @`Y\(0n~K˂w3tYp `p%RhKPFoY/4DjULMm ig+W^7IX aIA9[ܼjBر#/)}9aYE r r ##ee%J`*L4ei 0û g^ڒay&*p::x1U('{YLӴo}[ø* yuA =cǎرcx:φr%32cѩeۉlKJ]{]GГ)}T ≏ԓaݾws})}3%udOr6\t"8&+r+W*ضM~~ !LS^(Ln@y߻J)4vwiX%P.P29X6``AI%8dSayA^_i hqCb}¶l6D7uQDVn\FrHoc)Кh6𰮎 $ qQ9r áoLaa?zlPYѥ],ߙ$\zhoRR',dp7M sPVZ` aT*cνDJj:7 G*0]/ɕ  R@BBp0+Cߘ!Ԣs{u\?,#)ڵ7e{`!QA`X\,߀0m)8*,re.83Қ=˷˶_GAvz< Y&~nN!Zno S63xJO/+u~Cߗr4 ccZVS9:: [CRE¶l['ޥ6P~[P7 3 &%TZXk@9J(w( %\S|ͦ^?>I p/x5gZTH8|grj;*++pft.{Vce^I_{?BeAl(aIA}bff?0ۇcǎGll%J%YF2A;Ʉ^dna;;୕{BZҖn}zY\ YAr}B'ZH K+k4)?{)=\4☜}G3gNc~~JEaeX\n_O IDAT.^N^xnƧ??3s"Vj&j@ehJW ܰ;Dq.89>oJ\mMtO}=$bdza` *:i˿ OXִڹ{g *20ą 8umT6j5JX^火W 7/n|c{pL%"h: MWB„0M]J.𛦫]ZZxJK@|]ʿ78oQXY^0:> .D􉖅G_.p[7[!$, bD[?G3ib1x=yJ_'s'{ >ة-2BDLWq.ݭaeRN3{tFFrp _餔 ]Ԧ( ,R…s=U*P +Nۤ v0Ey&e(X`@epbB-N\;HRI'-7VITnn)ص0=42 %TpzX!aIAdxqANl•nDTe,qM[Ktf8#m&z >i˖]TctDo}H[ڟRAqѱOP,k[敃 fޯ6M9^J y .̢Vsbri ʓ'Ɓ}˺KY2ƵU0aZ&\%t @q9~Km J%Z\ Z\./x晍!-2q֢ruuH'F @:KK (GP,IhU dG>*4s* 'bC’  ց,Lc RJ8dliW&. }k^yeZ2 ](-eRQTtkt3ooe$+ח1mļa;P+^9߿^rמay.Fcnvҷڀm+j_V91| g7G1 . ťa  ˂24czjaHJ-- CK=hcJK ,߾ݢ>rj`bb Ub2LH,8!aIAY+(LXĤB&- ņ,/x޳^رâ~ ?c#0ryRIZMIKXK(:١a\AD aIAY~e`l"0^zweT*IBAw4[%GP>7w ۶aq.aMcJ| Đ$ +SY\&Fā<2hE%֌=x.sxqٖ5-&.U[(1Yv8uW.ѐYJ ޕ1WjU-+dad߶m;ptTk~ꧺOWЉT {-!+uUԇڹnXł7\,MSA2Zѣ$-O %+ /J(GtYJUXF'CBeAl^HXAĀ#M'D_\r.Z[)6S2_ 㒇Hl eo/v^ ))Y\vؽ \ Y9FƀB]ɂt+=YY>,;vmtr(,ov,,̶+wC+Wʴ[ S%-at/K%paKK6}'?8ZZi,iᮂlJ* 'bB’  z,LZB[Al&:NVf&&./iN1ǝۼwgqD`+x镁Q*+:aIҕ?F/R hRJ;zp϶t>%HKDG3g3,,,a||“:iiY( (CiY,jiI,sׇw|,i71? ۦwHwe4i߼i q+ϭAA1?@e+#-UTL`k&;3ebi2{ܠ:"Eߛ$it֚L|NZ!;Á1-+ j?])#F4] z]{mþ0}eYضH Xn8^y?+m{w9+4iir066IKH瞛ի$- '²9喲 AcŒL įɿAAg}:|diBaKuHC~IiO)%˕\/qRBib6nep }gLJã4 ޕZM(etj՛Fc>,#XYqh! $Y N3 nvuB.R$,{R0= Ţ*曕5^axC/ _VPbr,\2h% iZ8AAGoF1).S_ RLٿZ[tKHfq͋1#\kix)xme=6yD`qPJ+xz W*Zpg5~eRȖt/,>x|׼pX;$q `سg zL4ta+)c],g$-{@#, ZE虖Aʕ8 K 6$, fV/+miZoR˴2񬵓5ئ.*m,?}JLv߷r-Ihp`\r0MJ+mweUkZ\7 a&\JK)ÁkuMN;?pZS/{^]cFGGp!X\[nهmۦa:Y(oMrSZ?L /e*^[adzZt%B’  K ϜsgϷOuS&OHh)﮿eRZ& fD2)}r iAXV8gqozNX̭3aYu]n"2), c:IK 6$, $mvm0ޕYU\e<2ZZeR\ߎ5ˬb)I RJZAI_Y2]dpVRʦkDp$|y ۷OP(^ҕфe0{|7t?PBeJz25yﯝ;Ga ++LLLiJmwp=j) ?vRO= T(M JIL~Y8* K 6$,  2R]ZTN~-YCq%OYeYXqULZ=HKV,y[IVݷPn3[Y)`eY9`n`^, /uX2 1pKs@J%8€NQ?~~ip.0::ПV^+|c(-f85gIZn:x_K AYxQt,aK?e dKK[WA c'@ACOyy-b,|𺷟Y6V5cS ӄ+R]2X"cwazkX12ގm!m`ϑR  {}-Ӯ[So)ϳ@qw@)4G)-:!ĐxuEJя * vŽ>zRT`CcP'OXr_7Aހ;%waޛ0;; uaY‚Wme ‰q^}c~/~xG4,.aN{ܦ_1tʒ+>Al6(aIAkSAbDetweV"1+m_32(oY&LKV9Fgmr˨hdZ>?2̌SV +M{d صw]3:4?@H镂7We&+9CUlNzs$c0BJKw%JOXe41'N]\.0XhjS|L_Qbyi#(c6yڋKm#H>Al"HXA8sHGy$_Z*dK>x ,hOi m%nlii  ŌSRJԷr0L`l(})woehx=++:]ܸ |B6)~6X$e֤6߿2p.02RĤBW/brr<:eIl9 ,o l? j9FFt[J{> U8NeAl"HXA8t4]كdYKW=ډ C3 `xاpveY6R)q`RϬԉn:?Էr0 =d~,YI@Iǔ$bs@’  P]1BF>S\9vnbLQ80ᕉg d#0Mf\0[H[eH˥e-H,ka)fB}+ KV6/_^iR PM K ݻh1ډweR;qqv4ls!V&ou^iJ\IԴ˒Y(ݭ7iYx߼(;LE\RQG=+.8Pf\vl)>{"pνVy_ &'G0P*A;B8g`^{T堨L%ʿ#R8{ʑX^Zi(qnZxy+SJY!aIA]p(Q *.ڦ-&鿰T2o-Omq|.q7vXJ[i Pa *-OuSNoQ4򥘊۾jY\{WK԰f_ ~VE~he9. S^4\sIKà OZwK}QYFԏyc;Z*&& 1OYMǒRAl|HXAD~aGqx6&Ƃu֍L94Q*H.s[Ƥ^euƴz6ǎL}`7XYK'yr]ݯItOG1oN&Eسq&he'+^&Y9PT~00l^owTeairyŢ8B1xAWHZnXNɓeOek2).CfRٰ1p۷0>yx},%AACRLN%(/eKþ۲I99#K\fc#lg9%bת:a, IDATS)x{|=p69eeM7DDVf%+YyIoGrphLӂșOgcdwrzccAiYTZ^F,74O|x$Mhv"OeH83w r~'`Z'!Y4Y },)aIf%AA3GER9ye`2x^i2^<;CKKҎq&fӮ,N#e@~$.,\?WOZJ)N6GF]4|,i81RPJ{V^eOV^!Y.hP$<ZOӾ{`rr7na||i2LYe7nx]>|aٱOe _Ŗ; RY##c`c,WJA5c]AC AA+Ph ! /"e*<0o[x?7##BB)AUT=|;*y>|C q玏fѽhuRZ޿ȑ&O 3g2Y@*RƉ|kX]mbt~<~vFQE.RrLhg'A6@AQWr. PYFUDjibuzĺn-uHE$Llřec"#7Q7an"J;;rlyܹS0w"ڏe!=@&bŲ2Mnx"1pʭ&z񐃅!Cj Y?60ݻTi)-r%!%O_o姯_֩,$+K ooy{})9m,yE##(vzA K 5( 2G+UyrUx]H}a,6Q8`1c?JWΥP6*$-S'soTZIV ,/zpOMEVz |wE֚MEVw)rˉ#98lZ(rubٻfs1 r2nTru!'g yϊe*2{Cu*4>\ C=~z)+ŘKp~!>HXADڕ$Nϒ^:/ڈ/1hrÐҎe܄蔖rsRI9n@\||ܖhZє{FTr, "r=+҂|s|AT!!= waXAJu?SR !p8qDJlcYb~@QTBV~x:1tW^}J++MX,uֱ.;7\ jXAD"XQ[O2^)'rN8)2;7T]j|Ycn:?7òT#,ݣ;xG;:@V:w~jx:ϻ1g&py2\mad(޿SH"uo`&KA$ DJ 3$P8+ef:rӼ7E#捥xп&`J8gKGguV;9p:myeѽ:yJՁP+,9U鶀5`5W8=uVd6\:߱/[M<c(֒u+d8\BDj2-q2L \zI̜ԩhi!-d<CcaVLHK+Mw5/_NB’  $kWB/Tei5;֙]7R7sfI(%ԷLYT\Αi$r~Ҳ$U .A xM :UETBV6Cj 9q۳g~ 8vڵ#.hw;O,pi٣{XY qTZ8OJe曔>PSO_.)5+Wu*$R ":$-4SNC’  йp\ Q餝fy޼:<4sH6-urc/.]GyW><|g|s=+y|'ڼ\[VW`Y ,RM g )r9 ~ ef(#,s>BU0P,gZJ%xLTXAo  4kWf(HKm*x1"/G$&ȼ, 5a1%L;sĥIR={]ris+gaX A׶V y u]L$q["U{qN+T.j]S\!EJYjw_k:| ֿ]<5:5w(}|C4ds]û8vlp[oS!]RWx*%( ԰w|cwZ2OZFCrS g'@Av% ˜@u#M cTEuġSO5󓒏Sb@rqeG !.BƕhΕ'd/%ϛry?\!u^;ZT$ˀ.վ/lVZցr ʀSRl vJT.Pј80r\єR$*HRPTP8\ha /0Z-&R"8v<>So h =a {&XJ%XV7+)0)r8YMwlT@KoM[  R&~Y3GW[ 1&AvC’  T"m~S6B.- :#k~ HDyE+ubgas&Yl5NVJx{HPsGm[t q yѵZJ'I^.0TrqNBTZr !VWXXX{-*ʖ ,GlUEɓoJsDkke}0,wԭd sp%H,~ =KXxcu jX_c<ȯanC4tA K Px6O")TthyGr~5B٨KeʢEі6cb2OE7Dz2KDX6UҼ@|@l;T=Ȭ {XJNZXJ4e?pJ%,,< CpfjX^?&NV%aD%+yms^͛M,//رSx睷X;²GVrs|тFN?v*taqqccqݶ-!Ui tF[X$b0!aIA~#~}"&bI0BCF5.1:"CL'QƓ4\@! đo$mіr|휔ssSyp;un86T"4+ r1X,9*.}P.N ~}U-<ց#VљamUAiiZ2}C;:qzX:`fٰJc8I=z MU%qy|/$ӻjkB`eF,mE`&1yRb#36Z(r K嶚C5`NDJ"eVYSBz:*XHW?^&~W7bkw:گcuV?RqWE㝅9><2ZIRR’Sp Aթo"M.\\?ɻ,qtr#5 R<-- nĥ".Eb,DݰvXRW$y"mL'oBB#)U9Y.etϢcvP.WG=Ƈ~J OoGjwtNRRu*ʵ!*- ׻y`Su*M5%9|SoO|CyV۶:*r| b8}UM9sVS _r28\+˰, 0x'-$,d0r7AD aIAz._KegAbQ[hfi릹psrV33d[j dW&Zm`u pfYB\2KH0U2}QeyCLnGn/OQP"ɶDeRR a݇z}Gsy 4VWB@' *#*}vDZ"Rͣ~36Qc5XY"|MdZ?[ oH%Wso̙9cرWr ZpuX_ݲY5A !7щ^l?ZČE"W&8OK>Db2-?As&?><9o %֡}`瞟QU!*~t?'Wu*ҿ]kw\KTqXqHG/ xɗTꥰa,KyۻĀ0s&),* TeT?C6A2_A K bWse!rO:i'&֙-5Ou}Ku]XH4OecuY2&YtJÏѹSkM^*G)Jk)Yǯ-,5"yiHfiy۪H2~kk6I֮Oy׊ҾWHx]W/ET~c03⭷GeʯcO:i[6Tv3&@k._>97z1XFQp:^˯lyȱض(gaI@B’ ص]Cra;aG}M⒥Rg|I4"߮eZjnL;쐖0D[F r;5(Oe$N\r@g}K](Ʃv0\Tq"y9\A#fĔV'>xC5N)(Sr29&:w+Blԩ,pu,/7aG%[+mU𢗷yo`h\ qܽb{,D#WH?8-X*`Y۪Tr)>F'}\sE Va}deZX"L>(74% A’ ؕ:s^I]CqKlj&9)Dv\| U?!-aB.ʴ=]}@mq=ȋ쇬aƖޭ iU:*'L_&!D*&Y΁ÈS֟5 F:ԩj\Ԁ,_p%=Q"PCeD@`eEZ.K>FJgG#,onaZaqчbYĉuI'z̥򹷀iFZn{ha>,1KXJ4QTǒ A%AH_+xqMMuz3͹ϛe,B8Ҏ\`bR^`td.X1^}=~9 rsSeC,i^/)SJ8AEXAW mԢJŗm8Se624E[楉˧Ħs2EhNG9MI:+2:\E;M .gv}K8HNAcpleppE&X_w.([)R}˶-&%ZHB!+QL쑰p[Zž}XX7JN$a9М{XW< \FlfS֓$b aIA*̾[$)dj*$˒aWQp  AĮrCm#/F}Ϳ˴3=K2etfVcG$f*,i1uQYY [n2f"M܏O%Cv׶Atᅨ?x{>X?A@’ z{%&%qu~Y490Q")zeW2+Tw N޺PkBַ!%ǏaĖШ;hKm[Urt;wP+K@wg X_de&Uq0 g=Ooxn,] A9: CC2ɓ;w.<DzRFW aOQ ILxb99G:{5J׿q1&?7I m%Asy}@+ *KULKS4uպHC:^JEQIZ ɐ!TMBy4f(E͚ K&84&އY7TǬK GMVEew}zhSZ% c}º Q6}|E;xJܧ\U!*U!*v*^:t7jp]Kʕq[\sHX^fhҾ Q)Q~uw:XNŅ#BXQ_DlEirbq)dq04T׮eX_oE!*>_HV(f&|:*kUMw>vy.$$teLE-Z7 bc$ Xڵ+Sх!Ear[˞Cn}tԥhYMeRU|8 2un-+L5}L5D}AL`u*7JO[,ySYXZ QBCV q Z{xp0DG Qf7xՆav$z8,lKv`Y6VVV!\Wʵ5!+y}Z-{Dp饭K@2=ldžeY.iDs|1 %ADryVneJ*:ceE[v$4h]W-巙ډMҋ}N Ą]LDQNF麾e\T!|b/S0ǁ9J {oϏRYm3ض۶86P!>&;/,7o{c |qu`L2\r[)BM 8^721A&!aIA<ĥ2N4Eĥ'tOAO?RqP4Rf>EWDDSQ_ğgnCK0 f22䢫NN-X[߇￁58lm+r>exHeUX'>Q>@rGU){I]-, p.#, K +o(Ihim:qHwI6-.5JM9C y$jXBskmteڤ[-J'u*wȞY|_L`ԎS%ܩ:(0@.'7>|:O~pAͦUqLKA;+7hTD |8TxLBjaXDs1`\n9ċt߀LcGAC1pM{]JY75L5eNg~RQ\ ͹ZVJD}WW wvt%<*9Z:0P))jmKUZQo[Ώ!{}kƹv NXm0L.v /ADN7aKmtp:Me^/_R?h9p%:NV%NYGsmIeteR"[+S}'Vr,Ղ-XK%=Z$%SR q_TVP֗ovY;-Y/2 ;ND!aIA0o'7#ADw$ .߸+7:,َKr[ږ-̋z2"Pse?[ [ZogΧSTH:{@|[68ᣌl`TI6!>=9bIר<}u=2p}?n=`_Lq 6$, 'DtmqYVŻJWJϊ MՎ9Q }3cEz qѕid}KNܨH|oyu7( a K԰ 6lQ|ގVF/>lE iYUMw$~kYDJ~k6.Dar'CnAO ^ys!)kNb}c֧&7/2sc3 |=L_9w`=ei Ht{ku(Ⲍ2nhԝiR SM/솵ko;a`EABbv mETD},o%<&ҷ2dB\n'M3Vԁ/7w>AA+EZt"fvVi$OeI7A4XWմ,!29cgI[`QW2C1`ѕ:^xa IDATs\ bqIl?"u_4Ku;oq, `חvwmxAA+,BVJiSg?K.Z&.fglq$o5Gl %ADpJsY^"PL\e] s▉:~; 2TTӧթRX2+y AKa {xKIG+,Sg>/b ůA0ע768GkDwqBTJY p ]IB’ \qKc&:&W]ؤ4I,)qm2gKuJ<>cc+$nw 3M65JSMnF f ^Fٹun1kkGWHQ)#-:Q` pC*XSm9'b9V2-|DLNL.R`d"u8}z MWXor?4ٿ%@)AĎtwp=Ptkݾm wSҴN]%2.Va6M=V0@tḺT]FS}!TJ)\de?@J7܉Szqۏ*Z?ݧH "3gϷ.P?>dC>5hUL&&&pvAِ$ v< ǎ}X2CeHqzU2KinD͗i!qq|NCv]iSã+P}SIśeE7DW2 !~ w}~K~:F%aɸNUIK)+908 A[% v4o1LdQiRu861ho3N[v&1-އ4q`ѕѕ:-oN%oQ$,Rt֯QH^W`?610&;At EXA;ݨض2dަ1M7G#. s?IqZgPd~gs'*RTH/ /[Qtj SMHV1؝b!'tp WΘ''/QP~'7n$]pƯ6zpACAĎ+WE74NעfQy@E g4jjі6ExeByQwd>EWF<ѕidls~̦hAe cM|O_[mĺ _i;;T(Sѕ< |4sxk{N^ґtG2٘o^ls(A}eZVnRZ2f;N6A’ ر)KR)Ta"P>ޮHuĕNmiqu=k!Qt妘uCL[Ӝe K.N?EEOOo={(ѕtJ~e:Pbŗqq_ğoy@:%\tgO^o_9)EEeL|p z{"A]@’ ر4iV2Xر(+2x;StroYD2Yyic(7GueDW-Ϗ%թ,"`\K hKo\JK!$YwԯTtp8G 388igK4N4QqZ88ّJ8@8ٿ"ȁ%Acrnr1պm4qdH84qaĥaY5G\CӋa4qͺk]kdxX%,t{Z=`Eƍ8qΟ?]_e!".Y\ sS{tD0u8< c_KJ'xOO`e0 `ZLťDM jÀON  %Ac@/̉nT#,s +&o׃4qUR7Nģʾo9yxh['>x Gݮiҳ{|b|||Sܱ̠-.؛C.߹R}{F m:VT2jc1Et /em4q x,-*uQ 0 ADHXA;Wf;y-wَNeoCi9JWs"s2Z>F;]EW2c^IxE]w`w43>ԷV~k=p*J%(’іa,PWz'&3Mw$I\r-EN*H,WӲR24> At K bGׯلtJY-ca\S Mن%ہ;,n.geGWm2^055ҍFcNj=UTNLLlݑlǾ58!wk?in'U鈮T.de\n.%O"; p/B5H*W#-vxS'AĎD 3$I)ַyP1ަi"!墬HQݗ"uۮ5c-SNWxisPT`}˵jauTGv{NIiW;8F`j7~ @-Hν!$UyO10rrbR4 pvG#a) 0G"ws\_ 4AD$ v o)URW`xǶjD˜hʭo%\VfH}HteDZ'?iJVӿITv}<|e9K(<,]R |!+}O!Sq…շTӿIT1p=w SHѕv;8cV32$~&d}AIos1x쀦;; ղh#Q!< Tɭ2ADaHXA;o޺=OEťFJR^DZ&.l4M9v3i⚹"5^8V EWn/oIu*_ծ#޳|y {*xv:m B\(204v&]u#Xz薏={=[R`dcupv| $mPآA%A#rSʤڸdNmYbP('MZ6Hot+7mIѕۧӿ%_VʷF\r ֞:X <5ۋoQGQ8XVt7t%4?HT:.|^IYTTY [9] $ vRX:]e"+v%. 4:8KExvԷ Ksf;Eŋ;&NbnF[i]R;*=[?CܖߍL6Db>&OrWڝ;*a?oIg˾;:wَJG,YH !:^B!d<)8߹RR ֌+\ (xq99Sl `\Pv-uw[伹VaY>讜o籸8He#E7ROQs'0(t;!|0Dc~Mn^7/Wx KY|ĥ+/g'ѽC g $?saGeBTC%!GkPe@8ܖR--_Y^B8PP,:4qRVշ%MsJ kWN?:'OѣGKKKdzXN+y0lkׁKD wd $\>Pձ񎽕k\ÞA37,^:u*Gh8~;` D?;~eX8ABH (XBzwB0&. U@pĘ[nzmTLggsVp XXXHշd=[Q|8e 4QMa,Sڕj#Tpa92t^~<2sOręM٣ߝhRj>B B;xLw15%TJAsY߲ ƑKk`4O=A崡;nƬoyIl3]u*늎±c5t8'KW犖S @kOYz2n#UJit @C|C3*/-=._|s{oܾ[p'/9t~*6h9?l:CIG!`I!dq:,MyrU}˱-^l~`שK3MdX|z@ըN_?G"0Y?NXi+@Bd?YOTf.M1/?噩iphG;wG*NDc$P$2՜~jkԷL4,S@}qNK*tWNeu*GE׷\\\& ]&\vtlJ5ۑ!rW1-V+|#?^+3M|քK2I{b%K;-ztWBf B]YLQl֯L[ԧ[ rSlކ'H;M-]ߥa!:n-;6h+qPVʸ;P~W/wg2MM|7bD \XlR B]Yr,\fiѬ !Ny}KWݖG?f;®S]'Od}-`vk 5َY2^,J7ӿSbYHTϻ)k\pS~F5y53vؤCJo9m1"IGe^َN@)2qWX9^яb C!൛Kַܑy,)8?8So::;A[.//o '8隂e4Wj+4-XB*Ҭ] #%{ϘpY!M|d}Yc6!Y%!Jf.;*-b2mi\oy%][}`:.u*G-ݤܕ݋u`-v;YzB2;vWN{l\BH-YrFMw!d`I!d8{ujl;2P$2U~}Qfub-c0U{cXkTo#[kWV`=JnIYl|9..see4A0-BTBBT^ Kr]Tyuܖj(iaUu[.bAemllu*4I G9ҚܖH[ܕ-]Tݻvzܕ>L512.jiS+ci⫗LlC!S KB!3]%K%otMģY \+7I%Tn_'Oɓ''&F?zn./϶wDڕ" ۘߍ՛T #Rwt~7r[>t|E[4q} M<#ZNīշ,O#4k.GL˒+ !dˡ`I!d&^M4q i*׷~~u˝\NСC8~x^ZZrᲛJ/NkSW]4v O{]@JArG+C qǽƦpd9ǘ&[[,M\ Mo{L˃/'_Φ(ZBCBĉGgM.GNW.\:d˝cM/kSC Yrg27Uѵ=&{V+\N{cuHfXFn;"ȉ  \қoULωI8[VMw!d*`I!d:IKXl 4QHW'Vr ϼ\޳dn;vl! oY- +ћʮE(Ӳ Ү3a))2Gԟ)E19"q4qoY;t[B, !LohUWW'ˤC(nDe Vآqp+K{Ip َPob׷`8L5T_^?iE,#a(T IRsEB+&DZԖjQ߲1MJYߒBȬABHJiUv*s6۲`}Է&HJEΙ^miMَf7Jbo9Nw\UkLh3?]M@(wqRo~t轋~:TJ])GwD^"&_iN!(xL7DگV߲$M`}BtB Bp9Bx$ZZꇛ$\v[čuYpV}K;xrltpXkYioU^Tsrn4ܕ"ծÁwbm}~@0@hGׯTb CO-Qbm%F.b2rͪo玻i!L, !Lo{,֪͖u~Ueri8 uYmʙj\֔:dT4ַ\uwJYDUl^C}4<ߊ]{u;ah4 r8]@,tPX`,rUco-]9>6/4qMw!dJ`I!dP.j[,[`Jߨi&\Vu[܀pL/\н?3SI6.u(-Sh R.9XΞveCqgp+]? tJߨ]9GCO N!./<0ŐEsuxSUh7൛9CY}3'rl{tB BrbJ:e=re|mV2zַ^* 6'^n֩d7 XXX]<5zzltpix rۻ d"AYow#1T<Ɩ.A0O%M\ 91շiI}2e^|^?B, !L piѧ 騿{(f-Էܐ۲p+<Y9`1#YLgJԭo_.rSpW:kW =~7Wn`muzl'Tڕ'ə.t[pY^/cvXpt۲pi-+b]z}u ɂnשhsBpշtOŜR rW6I:/4 vvۻ{a R[+{yydʩE刮"q2u̎EǙw/ZNRd.}-jԷbBw%6!)%!`Db<+ku Bk2uDre6c.7찜MXLR,\xv-GGp,^ TvPsuJݸC~ VWW g+uJ 0qWu?ľ*DKm EFY%X,5djiַ4Iξs|;2P$2]T̟e)5H:nj*\sַc.29n>;K֩$ӄo%,//=Lmk]R]UJf;n {Ûo!0]V*e >wzvXt8-.!p-1śeB4ԪolC!S KB!. GJģ?wF}K ${9,"_~Y9c[k30ӿ)TiL=7zsRĎŨvrW6@C׮iw]{~Wxz.BW2vW~#( +̹Eb&,랥b̻8gb2r-$2P$21~}T:vXUpe&Ȓ5ݖRm8$c:vT2L+7+{<|ppJ ,?eڍ]ٰlp`=8@@ivʁrW>njXtEM͖"w~Ƣ~V8!Иo:CG;6!%!h^_U(8(ڳ- M-͡19<}K3B%v=Xaa/pj%,.e_ծlwF;ړO`8x#xXW=48\ծu; p.c]%.!JnsX2m)HH$MbeN%BT@BKGI|yca沂Ar [v[u¥m9tpxjSIfϾ` J;^VC'_l*R+VsoH $W>]X1O,.eQ#S1䍮o]z?NcClC!KB!:%`U-qz}c󟙎f;vc&!x'8؎ܖ4ܗ8y5Lw(we4=g>v0ݝڕCObnL%MUO>pƢ|%LLc斺3x"&J$rYکB&KB!ġ^Z,w*lӝLQUSguQܖUbUSxݖ_SIfgdZD;>/c3H~1$x {|o&kk2|ԯA{oumHt-Ԣk@SǔtoQׯW~O?]?}Ա૿4ytB BbaL?Ksй[QKܖݘܖ̜U܈+ ݖj~4qcb~$X^^ɓ'N%]1jp-ћ}!NXQRh?@~F/׃?w׵+}]Y Vp99ec.-XgnsK6۱D,r3MqD,p08?1;8KK{u:xfd?C4?]?.|9j_~Mw!d`I!d"|C':CK^2"s+\6ϙ%:e}2YeVG`twȖ5K09.RUܖ`}8۲pYcMߜDNӿɶ?p _ڈAŽk@ghEʨɎ=߷ݿ^|^R+Cv@ծE+?Cxv,.K܌wo#*KpsGt,ÊoUnˇF[BKB!AgRv'}Rq[L.kVᲂ ᲆ@i/|v wXlg^| @tR|9z_&!-%!"C]RRXˌlY]{xoYf.dcycqeC cDZ݃S-S\jW>DPtox(KCgI51\ \b52.u8cnG<gHS !l9, !Lr2DAq[&ǞoXGmY%V_m9f6RLPIvO$o8ʓN'qW /'ݸr@E0>Xb]XXX\k 9Ƽko=^եZfڕ5L]xPiKkN!%!-~d-E67"Ce|q[h=i˚n˨~esN%ىx ~*A%= 4wjqB.B~o4 Wu+8| ^!c8vX8o|p ] ܦԷ,{xgIle^t[:&&JT8BȖBBȖ?_K[Js[".]Ӯʌpi v) 3#[.xKi)G.+-߫G8NmXq|_M,[# n8tmnƱԷt_c܌%nSGEj+me滛)B B&BR.ce2R3~UI<),Fo{nQ}KV^r%TN 5Z"\f8 TbhrW޵/!eq8~Kf,\.t|,u4TM0+K|6`fHt-%9nм)weaݕ6[PryB%!AB8i+1eſ؉V%k iZ*n˂G.-eThzSe @޼ܕODb[)<v݂5\İW঻2PbeH|cNwRKַ$:\cpY" 扦^I0t&\n]DǖM!dj`I!d-\&H*sv}K!2 ;e¥~pܭ*n҃9eEe%Ɓvʅ*Ɏ%< T&nrW6ߵfW^þ]9HR=b$&]61շt܎%`1%hJK;qe cqWژi.[`6!L , !l9߸xʜKG8P\2~-mWJެ2apMє nKxᰴM-~%TN/-J޽9+X D"rW޵k+u AԮk@C<)dHm[-s1DL \gPG.q+mpY3M|STB*(XBr%IJp)Go#NR&YwzA?K&N+\-SUoi:cNsQܖeVĺeu*MH#Y:B?JĝMwe ss za }a$PvJ׋6& .)hg9aqx]¥L>lqR#&p v\%*Z9Gk7"/ %TB΀%!-GjP¥4bCvq%\:]ַLu[.Xꊔ?" _/N%!9<gWDw={V;hG5ht氾AR+} 4zY/G9]¡k_f*.'-{p F#离+]ԷdJBYP$2.pթo)D4t_2,&K[ඌ0LN%! /y,6һJ(,=k@0@w} 2 ChG*Cve bK+H? qlǚMHUD"%ZbjQ\1EkW z[殴[2Bv&, !l="qsI7˼4q)ݨg[J}*b3.1p9R \z$RSIXiRC h /N^vf :|h'J]9ܕ>0E+o9q۝V(+ 7 [Vq[ĥcS3# +MplC!; BL9!..%\-j?W[I]%ַ)M8R&׷~IA0<;َ<_ϩw9 ?^tVKB9+#Pfvp~aN&HaeXG@Lqv%VNNMʈ[9o=^mif++wQDk'B!ctBv""3"z/R#sZ )b2p)Rlzv9{V.]"o^<2[:w}?KKkܜm˘XJB!Ā%! 0',.-RKdDR8Kj܎[˥ǭeb^DgL'\Vݻ h4h6yѱAv8% (%P ^RX% wt*5h4dDB?at^pv@XXY@t 'nTre%jceҞRGZ~= %ݕB BD.I˳.Hۅ)M K[s-{=;f{"2}x|nKMfR߭O$TCajbRs0KBL^5I)K\4RKטKKXrt+EԜxK{˺[Uݕ$2MP$B~u?ַ4GKj}K1fɑ9nMo~ڥpiU+--:@]S Ix_[Lt%)p.h9}pp2+Ɗ7weQw"N΃ wx%9}س+[ڕBծ~N@kWJ >~$VG_%kquZ,sgyc?/rM,[8baBZFu* qc͢?5+ !L, !l1XDLR8 CČ&@J^ <@Fϝp{JMTRG14#\u3彔x([PV ӇQ7CL.gXx2 +GyL&d^!^ev$zAau3PJh6h5WD<5.0gBǟQڕtWBF(XBr҂_.K}ŎH`!ӂYJrti1X W.ҵDʘ^E:D™oc0BJBeʄ^\m)ҿCajUJ.._!ۗgט zVl#w n|J)!eRJ-VjwN!ďwV08|?;MszpYLebosH4ǯ_qWf6wdAw%!i%!-_'B%׮4qd Ng}Ks0 > 'W/TnKB<̴X{,ОڑHV+jhvWJJ8\ ݵ>n(M 늅58 e 3WTEv%mm'\*[SrKw +$2P$yu&3e%b떸+mIp-m0#ƃco]pp[0 !@VQ@һ6B'!ۑH4M?5itT*x4!"e0] >&A?rV{GwkezԷmY5x6t!$2P$5)Siaw-[o%dVoi27g0jLΈe¥mY,\f1PʸN%8;sƥ]0%D椂s[ΝVvIx i L~#J }Ur؏DK ~peEcO\vވ]I!d`I!dbd`FT2>r\܌b3-]lf)=.sܖN%h6:kƲ!s/Uek(ڝ;H߉X)C]W¥+}DըCeg# 1]-4Ϛ9`]Ƴ! B!dszƠ4Є#ZL9/좗+? @hYiIgB>ƾ'FU@i6:⋋BY<D~~r|<a<4 :blO΄_q`&^ص;*S + \ğլLViw@+UW^x S /G^ ׽gw ~,Oٸ}ͨ圏cX=p>hD똱4RS1o/H$2+aI!dk[N:4SËݕ#25v["_3~9g3bNGmZ?~Dt[2GʨNeKթ4VM|sc4KqWwU97ծlwfTRbei6Q+MvR׭u< tqqZjL![˜1j^#}R!|,t|,uS/+ҷoc"$2KP$2yg> %]Qhp[OF"vAՌeˢ2汅Us\jUJHPYV|"sAJNΥJ _ +w!gohG9+sScW4;Rz`yrF_kf'-o)eazSr:p*JB!S !L<6fgHB?Lٖ SFoi&e6܈ڹ:>h4h49EꅛU'y*29<͟l1|¾jV]brW0-}L~7J?[~q5s הSkl!1i`Lĕif} uxSo ݕBf BThYW4 ->7V߲XhWҾ"GNlDu*=aNI.;2!^#r2!3/U.LܼwV&h$u+~o-& 2 |`h6E_k+Q*?UB7MDǹpKaPrV5lu0NB,BBȖ9`S ܖ9َ0.2;f;0a9"a r..miז/\F3 p8hjt ֽJdVD&2<6 ^C n@쫑X9V@QeSd ntu' ns.<evEJbk,WL-8qc~*]}l3o˷&\]I!da KB![?Q?Y)ZiZHx"SRc:]Roԣ}02 -}%ؑe Ll4ޫ/EbVh@vu+PF~X_kn]%q^%Ӹĝ55~4qΔ4qc Pe obvqFiG&:x@w%!نKB![4'RF^Jlq-d|2>q\bJ{OiN4q)C~0 !QG㳸 Ӫ~n|p`a7:F˒4KJy`F&+M<[/ӈu/Lɽocq\2OG8!z`eVpi]_qΜ8K>sWtM5.]Ӷk7 y+篭_NߏOU/Bz(XBr>yL1.^VtJT&JLucY9eRrW/l=cut= Jl%X4H rn9In`K,Q&+.lo});XQ}}?lu x R/%/NJTifeo=J__Ct/d#(o@tL .ӿ\ǿ;ctȯ~|]׵ gpm'~p}W*_!20%BȖjXPވĵ-0 k y-M3*RF ID`FoН-[ F,*Ҭ?W߲R8Py9[{(ZYX}!V%iJt;+vXB`'Hʡu`mGD*be)8\5ƹ>Gg[6)Z7Y wX7W~ wEŋ[.^vV@;=jz:MtDf­=LWxl}ѻ[Mw,o} _;kVsmahEʦZ4T*x`tJw#g EG3ȥ3q8.嶄sμs~⡋+_)|+}]/·&N!dfÒBdBnˤsjڍH3^ 2F9R lNހ33 j!f Bø0cNYSMx\Zځ)!;/ӺG$Ñ,lTbeG\`>c7 R;+MtVy}:MI!1n )A%[ly]{ҼsD[\gvEkvNeĦm\dk˫ףS)BD6B)"mFDxFWBR2o}Km,Av~ϲJo~}qcGЉc`ڼ;W\RR;sYDVNMa#h{ ?іڔ:2qy~, ru/)=>~cZYߒBȒB8RBL"rc@F_z[6Q=RqF[F}hk'gOک L +^k'zY̤-@-cz#k'O2h~.#C8_^ԫTddYّ" \ޔR7`d΂S?,ьF\mu2Zіt xJܣ<܏/.uA>_@&<9'X4%\l;uw&d@8q"+.J^ h>},]嗕RVO v h͹e,oIT7^i,SXRn!M\JK.vY37fs*8/㌏߈ӧ7ji7P\B(, !, n3og*5("!շ4$^cE2Jf@}k.Spfxh8fr_u=M\շ =AeȋD4b )L9-z.W+oxά(P!$]B3[_]iD`={D3TmP>HB ]V :h.:NYi^yYDVʟqGʎ.+exKJ~l)R6[:kd6^kҐ}NMo)܇2M q^#BB$x_n 1)ť3BRI2E\`&.U <~❯> UoCW)]e6Cȗ_M?jCVR5]Αue-#!B-miDqI𧞳⽬8hx ;)I$<ʆ߅$ |VFV$;[$`ϴyD[9eĥ"ϼXyh,f}-[&&N!dѠ$h纫qg =[TS-ϸBTg5, z҈L Sw͙շL-s)-R2[Wѕ9G=.yqzh,oI!d$hgH  'cr"-WRDH["hK*3EsuҪ Uoę4\ZL-yqk"RS\R))2Mq_mݖhK ;O0ԉ vo_<6);%ҲN. Ywu,5+g Yl6>K55YO/C@6)ZqmL'PXBY\HId g!-yBZ4p''Ҫ ׿/BLmR[\j/W{ea}."0;g/ܥ-=̈́,6L֖hhr&\gtRr(W)ee5IEVj*ʴ^eGifdZrJK@CgZߣ-353//5M]im'(. !,BT"#&qiOwq)ڷM»Ο|gV|ʭN׷" edZӏHoQy0-/YWzm: YpR-Gљ^USY)>ԷNk촒49U)edt.W IDAT75+cT~ap*&.0R_jWz6m*|nSYd}KB! %!E7~ kRH&!.ӈFV!-myly G^TEM36'Q'dm)eіQնѕ6Z1҈n'g3NϖӉuW#^0P鲲RLNX?Fde,jV&BVε9Qr7gDVV֬Cvde$Z?-C8:*.{Ժv).VR3p!6)7a˖oI!dޡ$$߭cChK= {xKr-3mli$HSԷC*d$bˣXkZ{*E-m"3bqJ2@Zk_8N:N,i22wDR65+["Rka]h.qYxE\47z"`^ť3/$\vB KB!K.ZZ,QRnc˛.M3_#8=!ZMW\"㤸T6IKMj4qMdbV~IBJC/N$ߠnc."+o9J)**;\#;v"L~9wjQASY5z aE>Ԧ.F;eշZZ\܈F'-hKHO- MIY9Je')`5ET܌?_ַ \Gt]}ZSK%+0]*>qyo-{m !FXBYT>"$C@}kǻ}XLF,Z]\##;ewW-#q.W2")*%Q4҈,&ϙ4Eb%Y 4Yj 4?X2U֔DVjTeIUvTY9mFVNת u_=vCiFy]}λOxY·z7%!$2d_/fRfs3goT@VOS:bh̲,o)v-z}Ku=b}ol֕f:I$ Ώ"+ݩΣ1+QT7ױJ W2Yderj2W]k_h zQ@?ĭ?>p.RuIB)B6qiu =~ ?7s/TGk+tRݘI傚JrfwQ5Z:9`MG>M-iZrh_EޖCu`?Ǖx;hx b#jp)'?Klisuԝ/L]Jr2)3QDx{M%>B˗,+O!qB)B4%qbg}^Kh&ėXKq0J8~)L#ldPvC&Ď4q 1.e?ēaiD@&,iQec7xZO^Aч4pVe]IT#SV*_VĝZFdY9=DV`zȽo(ǻ(䝫|+,xs'Ncd9J1&>>~o\B@(, !,:~1[co7[C/jhH~B\ihD*w,b-mi̥#eTNLh)CĭXא5P\``'ϣQ`QrؽN*$EVY xl̤f-7+7#"ixmBb/Q<}čj^e7iזd-oAlv[L0MBH KB!Yv7.:My | 0rOjsQ~G(g_P_瑧sf5eO| xtXdY)Q[n2BRaI!d x gn{ 7%, mƋKDQ,8XIN#3M1hdUvlv'c-!"*EXh|b-M<}\[^b8?v8ƞ|Hh~DIJ5<^R #eKn#wo3e`2?f[P7J=9..-NT?梿}}u^cYV <{oX>Nބ;BR(, ! _-TT>P[o׋b~ QcRMֈ3G,21!FZ2r^Cii:ߠ׷ԇF\G W2Y X 4<Zu!)]*z IDeNVI`j ?UzHyZߺr}9\K_4q1eť} FWa}KB! KB!ɓ'̡Cy^ 㞡eKq3L~Yxc,Sq9ju]vY}KECoTrշ;B}K洌$#Ie:,Z7ã"RRTeU)#+r6Lwf1vʼhKD-鉶ԚoN[=ϓEV;K}saoyM,B! %!Eɓ8tN:믿fERD?ʍaBe$S` fG9j"SN[$I4S2".5,TF.3pKkgx $}Oa׾+- O< ]l3<Ԇ,)fJQqYK7dz^?ťmW .@q&1(3-c;zzdӿq;nc8!,s(, !,('Ow [cGO50kK[Gі44Q9؉e$`-S9ٗ"M<}n:ݻDA9puhO". 0'1q|gj _~Dx܀O?"ZEճJJ-"J HQiJl Y9 L^FeU!2$2ֵ/p2і"KϏC?Ӭ[9߈ӧ7jioI! KB! gϞ\}>:=*.ˤRF5;"zQBiD%["T]-hKHᩅt-qKR??cǞJ"ѯ#P"x S?{)^чiw u 8^tb=S[-csd|ocܧhKDhKPі@T}KǀO?ioI!˛b/BiTݻR_ M"!+"0ڠ.ck%Q=cW1D.L)ŵ?b qNtX'Jt8֙^޹ӟ7>S]0أ "˕GǺ ;$P5%kJMJϜ®? (k}qBR֭O"+GT!*eM4d6kU:BRhYQl$Q˗K~P|}QK㡳_:a!:{2Ж)ӿ:Gg,43 7`˖ ~ضb/BH8_BH):cGbޱAAf$OvMzWkvmv]?Ǒ84G8ZziG5,kzy1\̓ r"[¥|=YM6©ղJ)5DXlh;ܚTmV IbW_nFFpSRVuQi.t;4V".Ui٘f:0rqC" Ө#CgKt.0:2^P{X?([9TM'~cYԷz_v.++u+2*HHD;>ym$UTYuDU7x5+LSudF&+g:WuB(q"8_\:OF[AiEVi6=Tʳ/˸ď2M|۶$ԩ,bxG-|ڡn&hK-%:;$P LťXE5R\hKqFNfN1T ٙܞ|,HMRW%Tî"UV֔JN@5GEu'5@$걪֪tիT*4vɎ^e+Io4zkPQҲN y#Y$@\ v KDmE :_jʎYJ^Lo̤) W`佲^"4' Z*O˥Z'nĭL IKg}KBYT{B'OāMuvWY)ٻ)SbXhCDP8d'"1:>c(Kƈez#Nź1e?iI>'ڳm<;sξO݅IdԆ:IdedgԢ%+LG\s[VєXT愨l ufɟf#._.~P}yBgo夭_}Ny}r"6:]3yi^demf+VMqIo$i7mزe6mێ/!x`%!`^TcK$ M`vm2P4dH,Tn@'39-RE%u׷CQ9)Xi%TRC~lkCcYYkV6mtIJ%sJ2%\{22hh;QwO% N+NL*HDxQv[lz*}uޟ9p,"hf2ԭlNބ;ܥշ~b/BV4B4Ne{.a dioKQَ522Өo %.a[t9[F\`".=^bcF'=]:P Y9T@NRFRVҨIRS PՇ7Ete[d.eHfzWnv8:EE"ˢoYƂ>ک=TP IDATI4q9p1yxeRG%! B$QrS"-\BSk2٨jW}KMJ1Kn#2-Dpd%Ia黁jEDVVh;MD#TwETBO S]d"+"DUJY9U[Kc=vEb(1Dn[Tt>bԷ|`tV/3o4qַ$’BV8f;5dKh_MI -۵l9ĵ.1~ԷL{oP{[ϷF'AH Yc<*dP]ՉѩTQtIYʨ"^HOLi0< ԇIEVRr DM?/^Q$b+%.}PLeuJ\+x㗉Xy#xmf+w_4qַ$ђBV0:~o݂_S/!6i`|l]b]\:ĕqo Ms}Kdn^2KׄPCGYY'%u+U4c]Q}!KS t.]0UJY9l3܊W(ΗԚ=o\$X~>*$.ϲ8{*}6u+Ww2BYPXB DS9H._c'_24-f%,;q";zBJ")&.U[jM}D6&%w]R,3M7~X~A,uaSQ^GYY"n6u Q)WG$zJ3I,gEY`v6KDe:|grR{bR9'j-G .Tx{ܷƂ>کze[ҼJ\a-7o ɓ4BYPXB bPTwa}ㆨ/vILo6n5ylVCC\Fib-#cLƶ4q!.Y&Ep4TSKqio.!//a/ӟI6ЈxHYխ쨲RyS,V#ĝ",i94x)6ij) 11E!/X\u2롳HΚ$mooGoJnS7-A;K[B-{gϻqyKB'(, !d0u*CHw \x& ť)Vk,DE\ꑒ]L9HO5'gŰVZR!e~-IEVOv%DZ")4QYFY<#$ڞlJ޷j ;D :+ROy~q{EE"DSq3מ'W9HhKM]V6 fRVpNބGy[nĞ=ƞ=pq:t|F! KBYASwteNd6Ud_3g`|2CnQĥRRRr+3Lep}KS&:r{F}K#~kqa/2];rAVG+P"!-ٮqcXV#^Z.,UAϔk?hz-o}ʿ)]z{q.wKM=!M}n_8߻gdzF͝ F\F!+T֭$*'ON#;qcBG˂YBKNeL6Ѿsq>4*m%X1G82eGQnhCqY=o?"6SS=aL_w&ᇎ`ׯ:04FmZ SV+@T2H\Tw|yvS:*uHIKON~ 0,:g~8->ʜOOߐ33mi cm*ZkA2u+L's~5׶gMغuS_^G!FXB2L޳gb/olߺcN)EWt-bGI.1SEc`z2I WTc}tny_HSht-ԏ% zY>Я]Y&5]deD:TDeQىeNLtPy6<YvEs/D>w,mi[?+z3uE:X|THH)DVNM|cq@&cǍoI!}LXu*CX;QJf-ǔ}C$5h匸DB\Ҕnj̯ٸ^qі?w' `b~_GvꦬҵPY!鯒g)LVkI)*4DK#*'9_M\8g=y]kK'r(Z\ѺDV9NrWpaT-t&KB*B!s!}8uvލ={,KY {wKi;v q-드fhsJH2&⤟&e{Kc&PNnlέg$-sYsۅySi!^Щ6Fַ&.'c,PW\%~?~UYd]}5o5EYRތ(;SqJVIwOfz˵X#,KFvXvW:dMfηvGkSZeโ赠!|d􂌮ܳ&BHI(, !d T}u~ec׷̄bzМIN2*B[*4U;/.շmBVl8w}ڛ߅Gb`؁@⟿q]jVևUYJCX1:3ӨY'KVƋ!Rl\jl1KW֯k&Y&zu6,}48i>OÏ=|;򣫀zRd]e5:55 kw(v&$v3$YZy`ߧkiq\=Z:{*B;'ONqqlݺ Oaǎ{Y2pBY"߻w^5*Cu_aƺCT8}h(mD׺[Ƌ"\&=2n4GtM"Dh=n"&;]=g_F'5ki94lJ]iKOQD!ǫ6)Ѿ9JS4o)9 ;C+*1r/`\kr}8#sq.wZsy\~~6YmŽ7okitBN!ɓ'ӈʕR2;n®*Muc d@ 1gJw5EF!m$2VV)oמM*rwWROb8i<"GǮ=@@֮Ga%DVi*l_;de"'*YFbʷDkT{ݥc t]߲4qѠZ֖;o'}_guEkw6y*o_RS@YIy-M- !$’BN;V|T7\[$Q2'2JJ-LŦ+-v=$\NOVZ榬$ L7[Ba KBHlu*)+ɃT [cX69Մ=qDZL3IG}K9m~2-+_ܤrїAH~v=xњZ Z",#cGpjZRAymq()sF Kߟ\ ܁}kcԷ,1L6{*sm4}N΃TX"w'Yw~wpС^!,*$BSb:qpQD1i1MZE\ӶǶ9X,KKCbXz*z,'#1FZ3.es0r1عwҨʄW΢SDC#f;r^? Kq';\@eͺ,R9v;yohcZĨ+RA&f@949_8`Lߏ_pΛnX[sz8g#?ldu%_859/xüOHǡCo>A"x(, !d?F O\_=R3 )$y-1Ҹȷ`ql}oz~"S½)w)GalDU&ghvXwju&+k"bIN!(&.+keҲIe%,",M`g./qy".,52{3]Kajx~demf+ֿĺ !,%6!dBaI!Lk~,-/9m*JM$y`&;#R$(, !daʅc/DKHSTk eUYXJ\uUro6q=-),Ǿ߃ReY4 Vj]Fb-X$xw:F+4Zc`nZenQ Y94dt(#.]_c{JRg):zb K [B32߻w令\v}K{d%e-+$9 ַw8XᣏaݲL&MW!ZRlE; Vd*-6MRǹ(L58Q"8FejD:Pz>%Q]ի+2-1u:zK= [e1f矝WYI?a)7 !ְ$yu*1 HjBzcR߲3L'Qljzx[*,h}Xt- &F,E8|1={1@{'Yy7._JduRgdlwm[l IN9#blkrR̉Km׀8FeԮؘ8kP{Ϧz}oikO p}vQreemf+e%YCfF!dYKB#)4}D%tF>&}qd:cN).e<0GWŴr$/1vX`{ͥY[kf5ېDVJ8D6R ˹-nԼC[ee3WYՑWG͸%=[c6ek9a[{Z;ŦrdATE ! KB`b'&.Cdu<*nH#.}S/;D\yatrMdia~$cvy@{fka $'Sde K(JCV'՚"Jzu&$!u@;Ջ).ˈAD$q}9jXK>5=036={:>YY 0ۇaJ8!A8a'OXRN~vevlL_ZzܜNZRs)#Dijt#M@ՙ&n<5 aa}O m۳M4uD^K97[@k\ f[LZ҈L%P߸Q @qS䳥KW߁k48Mx>#\Ѯ:]iV9K*oE%RFBV":NMȠcر#w}%%!t wflk߿cU)m sfG\@c:I ]!rm('bq?b,Mp&EW^rcqc K>Eő*/Et͖D1К3g$ss6:1*# A {lM}֮O:dlzY\Cyť!'mi]*":}kU`K{mkq~֪LGIxYXOpGpa}KBR)R67جA/Ñ./^ƫU>յ׷Tv4񹿺 N$.`_Y.EY^k1;x l"0um&RFYvieehՑq&^fr0n{ڞKW{d}h_Wɵ9Wtε~tϵ>k)8s4|PVb)P _B KB)T.=?jX*.}O(署`-PVd K BL 'zla2{2R躾y Mlzm 3M\]JޤؘVR[kxv GOt_[لG!۠Bl :و%\oғqvA0P_*m|xiiDqXOѦ{Y r9|e~G0v(,rȻ xlncnlncnblS1Gman'<:ms[ok3פx=Z7lŵF6\>{1׭3ke8(DV: '$dسgOoロF&,8$XXre?gNeV=׷4%q\&;ik,`eΝE`__78RO wg0&deWC1zM"UY o]sv P",Sf=5Y\kukZkmvs3ZCYߋ`ʺӿɂ",UXߒPXBV$SI?s s?Ͼַ bqٮZ׭=e|XsAy,re~=%.D|BDTVkJEok ߶KemvX Zk]9ڝKװV\RVzAYI&,%3!d!aJ8!dEt=?~QHK%R=Ad^FHãXOgavڨ6ѮԀ!T+U17<"=&hf7PbLV_O1`Ib=8oö~\ڻ*){MW`YWrҖ>n[kMF<tmOsMuY֐[wY;e%! FRęD/aIYN%q,ƞ9L0D"6/當uXxHFNJKk"yS ~(uX0cq=ۂUe7]=׋qrUDʮ mآuxI pX=x-kkeֆߡa\o~˹4py TdY*5!d$,{!)bQHe_Xi,&z̡…`2Ӻ%(]"0XG\&"5t]3K/X77`N _>ޏg#{y #'fģ(Q~:qn;)wVaZKv%.SZ2=Ts33J2n$, Xw؉SBNXe^y6ˊZeT`O=ձ,+"KlODN90'O8".j.*{ֵ7d|oDX|1g:BE%ݶ2t˵?yapf8cBYI 0X % !D拝&%2q!,}-m3OicEB\|n ˁmZI>\3i⑐}+\w58֕tĥGdue$6q`ge%T(,BH7PXB$L5! ?+bR Ba|hi.ZQjj%7"jNDE@8`Bq1{dcTԝ߁bi{9)?J>),ϕ$.C`2(/.]2huIa4pq@Vz, e%Y PX]O)’2N%vɧ%VoeY1Z\uB]44!$b/ ('?!EXT]Xn&K˧ )/.)+R²%!%!d`1ӿٳK"+ǟî?.-DZr@Ke~D(o,`jU.Xj_Q:뇨,:i9v#g/` .$ύo~<}rU?ȥטv++@YI'ؠ$ $m+T?v_)m%M\k!%[Vщ,k5> o p1oro D2+*9;C̫BXz;h>W[ qY(Cĩ͵VgRN\kX*s^HDYI!*lRb}]WY &,}iG[ cK>n/עMfKg ˗O͆m>Jl0JT4qf\$,*YS6㱈˲- 6 *\H%iz}xU_ןKw}Z(˅%5bDTYO$&QYtS?Phh!g=ekFPZ֘K o6$.Y3! \(, !T᧟Ů?d&-+tmE\ȼ.PT2_1En69*ׂjYB2 lxĥCnVaYJRgӽGZYk::a)3+gA\RV<(, ! A#z5Nj}K! k?Kc Zj~}^Wu~7UB Ȟ\S$*{}(qh>",]Ƕ&kGR.JlU~Lwǯ]^`$rzEr#@’`N%Y ~YO$ SRQ.s3QX|Rf'^EڴhI@v{]hKR_nϹq,9)漎cdm+muZ[rfDUU%_AI"Ba!+ KBȼT?Dm)eEyiK"K]VJ't !^8{唥9Xe)4q5M=ׅ{cKe y 8_xܶۼivo40sv2 J  A’20md?LmY;l[^o,ҐFuqiQHۈЌy]m!nk*6ISTZEEĴΗSq޹ ,l$.=k.htK$ YPXBÁϓ4B(X%>gJLq|=Q "c9zNP"p?f +-./ua^'s1ӔNly-t).)2mI"U_=FU̴c,O(,nI’W={,?uTknʳ[Ǐ'i܈*@VdiJaZ$-gt3wa/xX}Ʊ5²`Em=ζ9=mBdftGlth6DX:#PV RT,(, !}8 $}*.[*%1,,mvYٛ+UzoY 5W׫qߢ-^ KLJ21򯕂9'7[qim?Ͷf8w67&,sHm XudBa9%!K KBHϨ߻w令$G?KK5U2(ioxzoioDhk_0q"*SqمĄW4 qZ JH2ktAEk䅥c.ͼ_w=C CatB.aJBzcg+S[đ? X2>q 8s-"#N,FT]o~xuׁ\4;Esczm x.v}sg&\7MYIV Kַ$dAaI) T_?aWN]\FZm]˜L..r=7joi*}o).&ϹRP&²uNq"9_rsxry[S Ŝ G.%e%YIPX.M%!$!s".#U\IL!("%3M`jy&>8?R<.E΃Yj+*rҾ9q\jNҢVB\Z˯&,sZ$+ ˥ YPXB`B~ O-Q~Gq..C[6IČ'^s_{n!B+ڌGjUTÜR#H&.Ob~i(BFWUd%`f"*=)&儥eN Ǫb]]*k}U#@`9Z4w@20ǿa7Xn-W֗` ѰsrKhTyӥλ,wją(]Qh o|j?laٲ뱃p][=|1n}Rse+,.%B>->H~Ve˽ۃʍͺ-72Ve3_7:kr˛o8CY=Qfe:,ۼxv& . 2kxj>WX ,G0K[ǿgff. Ň7#z0Ѝķ7,U8퍉_g>nBmwҹ2cMK_:,!lq@Af5uY6߲ut=16V쮻1e-[Q+oܔ!b61gwefqݮVvH'|U`yS?Ot@ ,ʿC[S . KAerk`*|r#X8&ۑ?+Q,Xb/w=G/F2ˎ6BsbxKa%tG`I;MAq"qi~lePķڠb= IDATxe{n-#\yyDum2%c⛞n˦e]]w_Dž/l# .]޶%d4'?`{YOxc'W&?8Ղݖͺ,;oY}#&wf/b2ƊňOxɘeDcMq;_XBo fK/]vFX966B1bpѦiTqXjَ߲6[Vd}ZŸ+b8V -i.?&k`Y7rⅈՈ]mymyVKA j0 _}w416Vbq, }b2aG'[Cbc? oq%BǞ{kncn~m/Xm *Cr΃V#[ ,7K~KF1ccb){;~1}ؿ$W8@gkƨxDk #/EaRd}+j~˞η|q9cZgk' 'w .+Ae D` X2,[W"D` }/o;˯=:+#a/_]3 sj-i(O-SZFmL|m|"\ynTLse6ɷreUCպ۲ݮFKaߒQ$>{Oƞ={cbb"͝uUըV}&U6@z$߽>&^lZv߲lrTYF21Nϑ1;, .w 1#.kkUum.;l$,I0JGKoz{(x1 c|}Lps`_0>;zToyOV67CKaeZۯ'cU{-JOp|qQ(wZo ,;>OV| }zHZ|?^ooe'#6ϐ—3]keWessw~vU6XBot}~L\qc|||U[);(VcuuuSHx'KL~-BT~2"ue5"&7oxIpL|ybwew]p{'{wWe#%F`I---|D'ЅZgL\yc||OvRn%WW/+_=^2#"xӛnLpjcէN.J—6Ոq깛owߓr,Ɗ>v9-stu[x;%Ya%Y&w}wW^/ǣP(lyBX]]Pʦߊj5Mo17% COlZ;-kO?R^eEծ,~ˮ;c^r)kz8SHLO}%F`I֜8q˜8#| 7Hm~ŋceeew~;"qIF+nG(}eo"H]pXx-ܻgt[69LՈՕڸw?^(w3K,ߒXBn7. Br-pB\xa*Zᷓ. q-L7eDˈ^ϱ(ٳsGcF`Y(F盎)XLpEuv#,2- %W.Kxz7.VWW… qsq…x^o|OEZNhGݟqeoOhѼ2j;/=7-WV".D]> t[~^7D` X-u[:KrKw_/k3groV `- ZFd&`v:&)oxM_6Vnkoz#$O$ޱc""bvvWWo~s? 3q,4zhy3ePXڽqAe'g塃׮'UH` X7[[$],ɿz_UoyOEyj0辤K7=~ėCKݓ ,[KOhO[vq%F`I^5oIZB~K .> .[i 4QnAY] w ,KO]ݖi *%yg%i0trt ġW<>Ï]P¿xuThxz%5vAdVcu2Vw{zl֠QeY.c~~~KÒ\/] 7?8~=]BT}:S}>&^`—I),uX%0&^ *ST ,7KF \j})ȿ-`3O )|’jz/lCƶ{pyluKQxQ[c *1?7ccQ}}-#R k~ѝ.v[~wT ,7KF1q% r߲F|S٬vJxmL[}A%F` 57%[7oD|ojUO _B 9^pyqu*%lf% rmG?2!^`Y7w+K;q1qF`I*---ҒwfŇ?nķ1D\\geD-.Aez#췤_J}WihCl?xp—U),uauʙuKvg%Xwb߁$lI OFp&Lº,: .ou::干G` XB[NOO붤mŤ _p;YZZڸ ;9ǧߊOquQ9BKaI5($:wrJR'Nl;"$rLMMm O>1CM%8ǧ?pGKB .SiPf^+!鈈v"$|7'Gxn)t[COLLMMӧرcQ..Xr4dĻ\&[~”0%]{a^?+ ) %cSSSǎ3&6K:] @2㲟GOaJ’j+[gA YU*bzz~KX!cBH+M [gtS@['B`IJ5{IEڪ͏:xF7[gtS@F5 .Gx@3tL_ e:2|ڃ/D݅zחG KuRF.JȡRR)N8 +4&%ugM=b)L x9:^FL,--E\ؿrj^Cca955<;q{zz/0q_QS2mHϋ o!\u՗.2̙ z|Ț9NF@>aIrU0a%I9|~<{[kpėIn6^:w2]#H8 :qj#IxDO%vkjvQr,I5+Ȳ.¹W:g'"6uM.cKXXxp殏c#G~SSRU]ݨTzUJ˱irff&3% i 0 ZծND{adcpPr:; 6}]c[f)J1?_.YZZj ĉ]ҤHԥݟyk=h65j 4`1q-PV[۹#b{ii)6Zfs SQ.?pGQ.?IW]atzj? Uc`e,IrKKKݔSSSq8p@kh=MDFXcd]F`_[~ V'liE 'ZҸrjjj80%uJE[G_ Vee6 ,ɤ+kl1tX;#@7rzpY_XX\TXZZtfR`7pR$,T*ʼn'baa!Th񎈖$+-`z8kl2=B=rhzq:'V~y-SB`I*Ǚ_VzxAݓہbvv~˔X R);ry/xfݓ$~t(TjE@]\޴/%殏r(O\zы&]dڙ3/@-لiaIl@> (H~cnjV䇀7[ ;%ySeY.c~~޵6H` ܝ*W}L߲\o_K+(U[h.Jd~˥%c} ZE ߲&R%q|R@8p fgg7XRh:sط]11?R -O8ae0B\48{c11qMLN\l_ZV.rT9dQ.?I2&&}ޝtgμoǯV8ɪ﷌c;X@&ɘ<.RO` C}eDn-@N)^T*|ژ8 A~Kc , rA#@ϖ~˙Jp !%yf$<=vFAi:, #|V,F(!׃˅o)M $~K.1Qo)M 0<vX@;,˜8K R%$L7%EK% KKKX@BtSy`LgT[ !S7%HxvML\;2`i1q% A|*M mXfH<4$F0<'N~K% o-`fffbii)-Iy27wg oV[^~4ΞX=ѤK;p@t>}:\.']V2$qtf-@Tcy1qHx!A%@oc[ķI6˧T:G_X R7R T>}:;:,`:*RYJe~KRRicB[ ,A%po ÓF` ɩ=X^>t9k1鈈OŘKX =1qzp8&>55R)z&>9y(&'']K~aa%yP,ٳIqa>&n%U @ՃKc# pFMgnL1(3&X0*`~}ޝt9 F+#qQܛt)z:,#Je1*ط]%}!o ,pМDX 6XTُKD cU`4o a @GVr IDATՃKc"8 WbLNIC+ 9[0JtX+a%$~KFKv$tXВҫRY3gn7&@,ئ\>[g~~KrE` &8rIt>&~G.z&`my8sv-4%!<,O'|:{c11qMLNIma 0ℕo[5K&a%Y!QJMb=Q-H-;,FF[}L~KH%VuҘ8i`+f*ŨTcrPLNNFK!vc%i ssw%]1g?t)(%(ƒIdq[0tKVT̙ۍ04.cssw +8{c11qMLNI@ȩrT;fo%?[0 KrEp``9#~KK3 KqEp )KpEp *ŨTcrPLNN2H%@"86b=Q-Kp c[ W*Mo @'tXd@o @;tXd@Vo Neo%e1g?t) by8sv- {+/"~,L ,R UU*q/Z`Y_^.J" ,RȅvzwR{6=:7 0)cg~4Rƿu F ES+`y8s[ZP]eK`oYS¶caA7XD|*L 0T 0)`r=e "%@ HN[,Q$HݕɫT{|OetYF` 0ݕ8&~pvOe;tYF` 0ݕS.wNtYD` ݕV,6oY|PY%KȆ~K{*3]X$Dw%@,/?Iu׎hX$ N:`˧.` NY)%@,Q HJewK!87wK!w^Y1`c@ ,;7<X woy%rwJ` 0$+rT%`H@yS#%xA8GK!7q oCoś@, @,lnΤK @,; 7Ɂ<X w4oy" Wl`I` x %;vW%0"Yr@` `@0LXy!p@ssw&]@;9%䄵D@,wH y l@w#.d`\p#RC` 9b:uKW N` g@@j, gSI5% Y&3/{K>sUFH %K 5@j,X@;vW%tM` H %R.?KK$] OhT.?t $H%7L@v H %K 5@j,yI%;%tK` @v @}we@f ,X!c %@,KȑBt =X .2I` 0K>%>% X@N kI3%x@, V./j %@KF@>,J` pKX0 I7K& 3qK ??ȵդ +%Pe ,|X .ZIX (tX" %p!N` 04.1`h~"ȕ(@,h8"I` 0T?tDp.B` 0T % tW%:cPa `t%Hp7%@"^tdE@ ,#SX$F` @'.Fp1"N` (%z6B` &]KD0 %@~2H9ݕ(X$N%;] %@*wI@J O']P ,RA%+#H ]4:IKZpIa/XʿHR|D\HD,RGh Qp`t ,RG` 0tWM` JoL H ^0Z&]@ `X>I%h^ ޜt E/35?X&H7%]TzU_0LK{dQZV. o #b,j 5~>lx?Cr>6wW6}P&l|-v1.X[A00:,2>K(xDԔqp qU ȓ_ d S%]}߫`fgBKsVc4 ۞ѧ^=  Bh E/@ ,`nnc@A@` YWElxjg] `@fg<\@= %@M ί yI` 0 5C<}t>}UpX p˫#4ОᅕSSڹI` Yp;+K%%K}Ӑx$iD ko%@,rGh ]d컇~NAX ܰ;,ޒyFݹx|gv%MMxBg>yFչHWy"R)i 0LɄ7'vn~+TjE]pG#*4|n#vG=}yؼ9[9B_kɭ:,rckX9\Ӊ`C0;Ƅ+xK-!ٰ2wX Aϒ.!"~:tn#YuIWK!H; BK8dMM +X O%]BDD 2HGX1;;t }'t-288OK!IS`!\$]@,(-cu$]@F+ȯBZ&]()>>b|.?V~/">o"⻱uTf) 15u}<j.C65KؤPxqDhVKt0F` 0dR%@s +#"fgoIX .K勓. VNMM` ']BS‹PW!F[zݕ@ ,ƱFBK`tǒ.T>2J` ReVBK`<i+#\l jZMQT.?G|<" |.\](loWkȦǢ]YWhfuܭBگX[bC%@BeQ(i ְ2fg5B%@j]iV_oȒD&rmK-/:,T|ieP6"uew" t C#HXگިPZWK`,67wC%tRhcIЅJJ[z%  fgZ ?BK [)VF,#HuY -Ǩ25ڤK:W Hrq'"W kODHK*wzݟS~9K%@JJ/÷{z%@T"uξ7 Ej]wG:,kǮVjx"U4y<;+Q Ej]/I /bH֙hVfɓN,RfnKY?Fp02hd:^R6/K)^- Q(ܔtȨDC}F)U(|$ò{-{ 9SS7D-0tXl~Fş3" w"#tW,RknkXr\D}anvvWpT+#G>Y M^];"p٭#6>5(FK+^𺱱m t鱨27o. 5)77w0WuKw[$RL8D ; Ȁh_H־kk_ xG«[`4ȀhuI10kclu[[oG*NKHR(Fb_'] е Q *t!C'h 5reDbrbeIt3qϮHxpB=/u~'go4Ɲϑʏ^a qҏɓ?tg19˱w.hLDSE$jn&]@,rTzH7ڻƸ⊷'] Dw#b҅$uI)K(&NDx~/ݹQX,FXBb" AegWVդ`[R^WhJ;?Pyxa &PxvGqbb1 bc16V<xxDOĥس'6>7@ OfX;_9~:fZ=KU,%]Ffx;?Ǐ:.Ȋ gq ` -{w;cvQ* .Hw'O(^t#H8 3>1Q(k'Oo?˟: jr V h -[:sW,- .}}Ka% ,P -mxD`m`YFՂo}X\tbD,!dmn +a%j;-.#Wxu>\@h%+~?~z A:,ئ\AwXEDF,/>xǍЍը]Lga챩E|0 KnyT`ُry9ň|T<؃hJll7xlu[`1a%@: R骸Ik/~Uzg/~<^w _K u֢|KEX KZSS/J{+/'][ Q\KVJWɓS15uUҥUqč78ٽGK ؎Ps3~Bq];!iTv*U*KHV96&J8$RcE%J8v31]c#OvlGp1w{wKZo3 _)]]vհ@9D+ ~d2.S?Y6j٦Y~#jqYӦLnW1ӣ4 /|_t=_WN6= O~$PP8a LK3MkڴUtiʔLOǾψXiqsy~ӣ4׺.:{>{}Q% k4N)Me| Az2g Vꢋ6iҤjm+#FNSJ` 0Wʶq1y M:_7jixqP!>lϞuOtv^'y:}zM @W|_%$ P{\ln﵌jk[&РΞ}Co "V@2p@ \oz v::IIKN_jz$HTʲ+  YtӣKֶZeR)%*ɴ8W IFTm82IZ[~J.1=?Z4*̏ٳz|jmMmmN/R:HP#-HDu-W ԔkCNҲH' yoy@2m$k>mz @,5g3d3e!mqA*uRKI`p*({("P6L懜GuytzjiYtzR.6=?="CRFSJhPԕeЙ3릛[q㠊$-Sѹ4t)F)cj`DOuڼy1PCR N߭tnR(XFZvIυAd"V@lL+DLOҼh6BITe-Q6(]]PWmvX<AùHҌғtC529UTe-wU΋` H[o={7= LOܢkI:^ ibIԇ< } Xm׮E{O۷޽2=uq | ]PuIX K@\9U+WNGo8@9׳54qI'j>/466^@Xǿ0K@شi6mի_ʘ.iZ{~W.8!d Btm/^:%Hǹ_{1 E4g{oM |hz B F*/k1ΫSd_R@*T% %!X1E+VLюoG1=Pc4zZ8v]^F+gyf1Y sd؟4P(@4|Szѷ3=#?V}8]5'r_T4DdP *%)lx6nDkqGYz& ׽6=ԏi-_>A7@ ',MgIZ|O?H  سEfw8a hZ˖u'ǦزEdO .msMՆ mG 6FCQ@],۰]^ӓ`e-T&|\dz@"X~}JvI?T`I?fIP=B% pXrD%\q˶*CJfΔG'/7ǹWL*9turne-m/kz"#XPC?v^}U:tDFbYum/0= UC ?k.I8ȶ!T:=[ץW^~Sqcz j` s; /H?oz*@Ӕ<3=^|Qo<=uLΞ-"1rǴuAeů Y,E}rGZ&,lr02q=`^52|/x^'+X:W(@\,@d~<eu%X],E}e]?EqEUۑIƽ˱ke^Z_t5+9E @,@MeIϽ˱ke^Z7,g$uה$U!` F$X6Ft/K"P(?\[׀I {k&B26`+e, %I~},@uw$3 \%XVv`I_yy+C͆` '}'R~1p`Y&XۋKǹS_ ` D!\1&ruM ^+E'"XGL/1 52|/x^{sȎT` J6Y?^vw er{{jr$ON 3&` 1Yro]%XoM ^+~e]1$] 2Y!`i~M ^+'9ꑵm_I``\@~婻@e5Zrkb\WǾ`952lqnY%@,u]SwGc,,6sh1+Ѳ7˽`Y{,Vm4:%@do( FL{P[`8_\\8 :7X?*{htdm&XZj,mV9 :%u;aww`iY3eۗԞmϒm*qFi@<__t}IENDB`hkl-5.1.7/Documentation/figures/s1-11.dat0000664000175000017500000000352615144640560017010 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.795148838481424 134.088340521172540 -55.578090671204158 -0.022336900000000 14.824478553649875 0.000000 0.000000 1.454545 -0.519320200000000 44.201599433591383 134.083376379263683 -55.519563717544919 -0.022336900000000 21.631027973350982 0.000000 0.000000 1.909091 -0.519320200000000 47.666702676920970 134.047872377568297 -55.491623814191392 -0.022336900000000 28.515821952447649 0.000000 0.000000 2.363636 -0.519320200000000 51.193503814688064 133.999474227299828 -55.474311464995999 -0.022336900000000 35.507536435632723 0.000000 0.000000 2.818182 -0.519320200000000 54.794302405621707 133.944457950948077 -55.460498190916077 -0.022336900000000 42.638809731781684 0.000000 0.000000 3.272727 -0.519320200000000 58.093602764001723 134.499318209866630 125.081129160636834 -0.022336900000000 49.947952253919453 0.000000 0.000000 3.727273 -0.519320200000000 61.900019148649832 134.437430134106108 125.143771297554935 -0.022336900000000 57.481389853146958 0.000000 0.000000 4.181818 -0.519320200000000 66.240375744681771 133.761531517873635 -55.410516983777811 -0.022336900000000 65.297336836153605 0.000000 0.000000 4.636364 -0.519320200000000 69.977235340969443 134.309331275452251 125.259492343706356 -0.022336900000000 73.471599900128496 0.000000 0.000000 5.090909 -0.519320200000000 74.727450326524419 133.632870812001897 -55.349173258754760 -0.022336900000000 82.107358281853394 0.000000 0.000000 5.545455 -0.519320200000000 79.002012473631467 134.177964675439455 125.347569518309953 -0.022336900000000 91.352902201656960 0.000000 0.000000 6.000000 -0.519320200000000 84.086619565407020 134.111566204893819 125.373710401455185 -0.022336900000000 101.437135873670329hkl-5.1.7/Documentation/figures/traj_n.gnuplot0000664000175000017500000000027114677222567020452 0ustar00piccapiccaset terminal svg set output "traj_n.svg" set title '[0,0,1] -> [0,0,6] 1 -> 100 (steps)' set xlabel 'n steps' set ylabel 'range' plot 'traj_n.dat' using 1:2 with lp title 'kphi range' hkl-5.1.7/Documentation/figures/e2k_1.asy0000664000175000017500000000050714677222567017204 0ustar00piccapiccaimport eulerians; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); eulerians(0, 0, 0); hkl-5.1.7/Documentation/figures/diffractometer.asy0000664000175000017500000001214614677222567021303 0ustar00piccapiccaimport three; import solids; restricted surface unitsolidcylinder = surface(unitcylinder, unitdisk, shift(Z)*unitdisk); surface torus(real R, real a, real theta1, real theta2) { //return surface(revolution(reverse(Circle(R*X,a,Y,32)),Z,90,345)); triple f(pair t) { return ((R+a*cos(t.y))*cos(t.x),(R+a*cos(t.y))*sin(t.x),a*sin(t.y)); } surface s = surface(f, (radians(theta1),0), (radians(theta2),2pi), 8, 8, Spline); return s; } surface carrow(real radius, real a, real theta1, real theta2, int direction) { surface s; s.append(torus(radius, a, theta1, theta2)); if (direction < 0) s.append( rotate(theta1, Z) * shift(radius, 0, 0) * rotate(90., X) * scale(2*a, 2*a, 6*a) * unitsolidcone ); else s.append( rotate(theta2, Z) * shift(radius, 0, 0) * rotate(-90., X) * scale(2*a, 2*a, 6*a) * unitsolidcone ); return s; } surface tpp(real height, real radius) { // put the centre of the top surface of the cube at the origin surface s=shift(-0.5, -0.5, -1) * unitcube; s = shift(0, 0, -height) * scale(3*radius, 3*radius, radius/5) * s; return s; } surface _support(real hight, real radius, int arrow1, int arrow2, bool draw_cylinder=false) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius * sqrt(alpha * (2-alpha)); // becarefulle reference of the unitsolidcylinder and the unitcube are not // at the same place, so me must take this into account. if(draw_cylinder) s.append( shift(0, 0, -hight) * scale(radius, radius, radius/5) * unitsolidcylinder ); s.append( shift(-dz, -radius+dx, -hight) * scale(2*dz, dx, hight) * unitcube ); s.append( shift(0, -radius+2*dx, 0) * rotate(90, X) * scale(dz, dz, dx) * unitsolidcylinder ); if (arrow1 != 0) s.append( shift(0, -radius+1.5*dx, 0) * rotate(90, X) * carrow(1.3 * dz, 0.5, 0., 90., arrow1) ); if(arrow2 != 0) s.append( shift(0, 0, -hight+radius/5+.5) * carrow(.8*radius, .5, 0, 90, arrow2) ); return s; } surface detector_arm(real length, real radius, int arrow1) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius*sqrt(alpha*(2-alpha)); s.append( shift(-dz, -radius+dx+.1, -dz) * scale(length+dz, dx, 2*dz) * unitcube ); s.append( shift(length, -radius+dx+.2, -dz) * scale(-dx, radius-dx-.2, 2*dz) * unitcube ); s.append( shift(length-dx, 0, 0) * rotate(90, Y) * scale(dz, dz, dx) * unitsolidcylinder ); if(arrow1 != 0) s.append( shift(0, -radius+1.5dx,0) * rotate(90, X) * carrow(1.3 * dz, 0.5, 0., 90., arrow1) ); return s; } surface sample_holder(real radius, int arrow1) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius*sqrt(alpha*(2-alpha)); s.append( shift(0, -.8*(radius-dx), 0) * rotate(90, X) * scale(dz/2, dz/2, 0.15*(radius-dx)) *unitsolidcylinder ); s.append( shift(0, -.8*(radius-dx), 0) * rotate(90, X) * scale(dz, dz, dx) *shift(-.5, -.5, -1) * unitcube ); if(arrow1 != 0) s.append( shift(0, -.8*(radius-dx)+dx, 0) * rotate(90, X) * carrow(0.15*(radius-dx), .3, 0, 270, arrow1) ); return s; } /*************/ /* Eulerians */ /*************/ surface support_e4cv(real hight, real detector, real sample) { surface s; s.append( _support(hight, detector, 0, 0, true) ); s.append( _support(hight, sample, 1, 0, false) ); return s; } surface chi_circle(real radius, int arrow1) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius*sqrt(alpha*(2-alpha)); // create a revolution surface triple p1 = (radius-dx-.1)*Y-(dz/2)*X; triple p2 = p1 + dz*X; triple p3 = p2 - (.1*(radius-dx-.1) * Y); triple p4 = p3 - dz*X; path3 p= p1--p2--p3--p4--cycle; s.append( surface(O, p, X) ); if(arrow1 != 0) s.append( rotate(90, Y) * rotate(-90, Z) * carrow(.7 * (radius-dx-.1), .5, -90, 90, arrow1) ); return s; } /*********/ /* Kappa */ /*********/ surface support_k4cv(real hight, real detector, real sample) { surface s; s.append( _support(hight, detector, 0, 0, true) ); s.append( _support(hight, sample, 0, 0, false) ); return s; } surface komega_circle(real radius, int arrow1, real kalpha=50) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius*sqrt(alpha*(2-alpha)); real hight = radius * sin(radians(kalpha) / 2); s.append(shift(-dz, -radius+dx, -hight) * scale(2*dz, dx, 2 * hight) * unitcube); s.append(rotate(kalpha, X) * shift(-dz, -radius+dx, -hight) * scale(2*dz, dx, 2 * hight) * unitcube); if(arrow1 != 0) s.append( shift(0, -radius+1.5dx,0) * rotate(90, X) * carrow(1.3 * dz, 0.5, 0., 90., arrow1) ); return s; } surface kappa_circle(real radius, int arrow1, real kalpha=50) { surface s; real alpha = 0.1; real dx = alpha * radius; real dz = radius*sqrt(alpha*(2-alpha)); real hight = (radius-dx) * sin(radians(kalpha) / 2); s.append(shift(-dz, -radius+dx+dx, -hight) * scale(2*dz, dx, 2 * hight) * unitcube); s.append(rotate(kalpha, X) * shift(-dz, -radius+dx+dx, -hight) * scale(2*dz, dx, 2 * hight) * unitcube); if(arrow1 != 0) s.append( rotate(kalpha, X) * shift(0, -radius+dx+dx+dx, 0) * rotate(90, X) * carrow(.6*dz, .3, 0, 270, arrow1) ); return s; } hkl-5.1.7/Documentation/figures/e2k_2.asy0000664000175000017500000000052314677222567017203 0ustar00piccapiccaimport eulerians; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); eulerians(0, 0, 0, solution=0); hkl-5.1.7/Documentation/figures/3S+1D.asy0000664000175000017500000000205014677222567017023 0ustar00piccapiccaimport diffractometer; currentprojection=orthographic(-1,1,1); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-40*X)--(40*X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-30*Y)--(30*Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-30*Z)--(30*Z), gray, Arrow3()); void diffractometer(real tth, real omega, real chi, real phi) { real hight = 3*10; real detector_arm_support_radius= 2*10; real detector_arm_length = 3*10; real diffractometer_support_radius = 1.5*10; // tpp draw(tpp(hight, diffractometer_support_radius), gray); // support draw(support_e4cv(hight, detector_arm_support_radius, diffractometer_support_radius), gray); // detector part draw(rotate(-tth, Y) * detector_arm(detector_arm_length, detector_arm_support_radius, 1), red); // sample part draw(rotate(-omega, Y) * chi_circle(diffractometer_support_radius, 1), cyan); draw(rotate(-omega, Y) * rotate(chi, X) * rotate(-phi, Y) * sample_holder(diffractometer_support_radius, 1), yellow); } diffractometer(0, 0, 0, 0); hkl-5.1.7/Documentation/figures/eulerians.asy0000664000175000017500000000260514677222567020273 0ustar00piccapiccaimport diffractometer; void eulerians(real omega, real chi, real phi, real kalpha=50, int solution=1) { real hight = 3*10; real detector_arm_support_radius= 2*10; real detector_arm_length = 3*10; real diffractometer_support_radius = 1.5*10; triple KAPPA = -cos(radians(kalpha))*Y - sin(radians(kalpha))*Z; real komega; real kappa; real kphi; real p = degrees(asin(tan(radians(chi/2.))/tan(radians(kalpha)))); if (solution == 1){ komega = omega - p + 90; kappa = degrees(2 * asin(sin(radians(chi/2.))/sin(radians(kalpha)))); kphi = phi - p - 90; }else{ komega = omega + p - 90; kappa = degrees(-2 * asin(sin(radians(chi/2.))/sin(radians(kalpha)))); kphi = phi + p + 90; } // support draw(_support(hight, diffractometer_support_radius, 0, 0, true), blue); // eulerian part draw(rotate(-omega, Y) * chi_circle(diffractometer_support_radius, 1), cyan+opacity(.8)); //draw(rotate(-omega, Y) * rotate(chi, X) * rotate(-phi, Y) * sample_holder(diffractometer_support_radius, 1), yellow); // kappa part draw(rotate(-komega, Y) * komega_circle(diffractometer_support_radius, 1, kalpha=kalpha), green); draw(rotate(-komega, Y) * rotate(kappa, KAPPA) * kappa_circle(diffractometer_support_radius, 1, kalpha=kalpha), cyan); draw(rotate(-komega, Y) * rotate(kappa, KAPPA) * rotate(-kphi, Y) * sample_holder(diffractometer_support_radius, 1), yellow); } hkl-5.1.7/Documentation/figures/m2-11.dat0000664000175000017500000000353115144640560016777 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.400329236644680 134.704182457759515 124.948883389789160 -0.022336900000000 14.824478351069175 0.000000 0.000000 1.454545 -0.519320200000000 43.806823181239331 134.699172673320760 124.898698419684052 -0.022336900000000 21.631027940230176 0.000000 0.000000 1.909091 -0.519320200000000 47.272270521397260 134.663292943045093 124.916656490057775 -0.022336900000000 28.515821774038500 0.000000 0.000000 2.363636 -0.519320200000000 50.799541156706404 134.614380653440122 124.961695708024806 -0.022336900000000 35.507536366647791 0.000000 0.000000 2.818182 -0.519320200000000 54.400871058600750 134.558783263230879 125.018919297943327 -0.022336900000000 42.638809595908398 0.000000 0.000000 3.272727 -0.519320200000000 58.486466730588852 133.885612866780036 -55.446989014087158 -0.022336900000000 49.947951730554870 0.000000 0.000000 3.727273 -0.519320200000000 61.900019187605913 134.437430128115466 125.143770198370348 -0.022336900000000 57.481389921503769 0.000000 0.000000 4.181818 -0.519320200000000 66.240375731730282 133.761531531132846 -55.410317556704427 -0.022336900000000 65.297336845720594 0.000000 0.000000 4.636364 -0.519320200000000 69.977235278473131 134.309331314776159 125.259816151267486 -0.022336900000000 73.471599845426894 0.000000 0.000000 5.090909 -0.519320200000000 74.727450269521938 133.632870840991956 -55.349454107672727 -0.022336900000000 82.107358205504070 0.000000 0.000000 5.545455 -0.519320200000000 79.002012485552328 134.177964670420806 125.347572178419384 -0.022336900000000 91.352902210420496 0.000000 0.000000 6.000000 -0.519320200000000 84.475827513799928 133.501851715637201 -55.246517778030011 -0.022336900000000 101.437135910954609hkl-5.1.7/Documentation/figures/s2-101.dat0000664000175000017500000003535215144640560017073 0ustar00piccapicca#h k l mu komega kappa kphi delta gamma 0.000000 0.000000 1.000000 -0.519320200000000 40.400329236644680 134.704182457759515 124.948883389789160 -0.022336900000000 14.824478351069175 0.000000 0.000000 1.049505 -0.519320200000000 40.768089313883856 134.706363469966419 124.937541806076354 -0.022336900000000 15.562801322332973 0.000000 0.000000 1.099010 -0.519320200000000 41.136741488320595 134.707662396815067 124.927674768121975 -0.022336900000000 16.301774926234920 0.000000 0.000000 1.148515 -0.519320200000000 41.506228657815491 134.708193308772621 124.918945063266420 -0.022336900000000 17.041431559528615 0.000000 0.000000 1.198020 -0.519320200000000 41.876505992607022 134.708051459764249 124.913941328134115 -0.022336900000000 17.781803975746548 0.000000 0.000000 1.247525 -0.519320200000000 42.247539049097341 134.707316698369169 124.908176548718615 -0.022336900000000 18.522925804440469 0.000000 0.000000 1.297030 -0.519320200000000 42.619300621454549 134.706057005328432 124.904023834905729 -0.022336900000000 19.264830026099741 0.000000 0.000000 1.346535 -0.519320200000000 42.991769806735014 134.704330650380967 124.901762466892208 -0.022336900000000 20.007549924874784 0.000000 0.000000 1.396040 -0.519320200000000 43.364932259860460 134.702186952110594 124.898473147141985 -0.022336900000000 20.751120003962402 0.000000 0.000000 1.445545 -0.519320200000000 43.738777532036359 134.699668951701511 124.898519022564216 -0.022336900000000 21.495574766974055 0.000000 0.000000 1.495050 -0.519320200000000 44.508050635162363 134.081044747022446 -55.516824890582313 -0.022336900000000 22.240948789718164 0.000000 0.000000 1.544554 -0.519320200000000 44.883214819226140 134.077917802383922 -55.512507389283492 -0.022336900000000 22.987277157398673 0.000000 0.000000 1.594059 -0.519320200000000 44.864359375638756 134.690218398641008 124.899778099943035 -0.022336900000000 23.734594446754453 0.000000 0.000000 1.643564 -0.519320200000000 45.635553197106283 134.070869619745451 -55.505654980378793 -0.022336900000000 24.482937746404311 0.000000 0.000000 1.693069 -0.519320200000000 45.618117923295479 134.682615593963789 124.903284819298165 -0.022336900000000 25.232342586592832 0.000000 0.000000 1.742574 -0.519320200000000 45.996020293932780 134.678490001125681 124.905540945138483 -0.022336900000000 25.982846405750326 0.000000 0.000000 1.792079 -0.519320200000000 46.374613645576709 134.674172485194362 124.908371811706644 -0.022336900000000 26.734485819254761 0.000000 0.000000 1.841584 -0.519320200000000 46.753906712371268 134.669678646271763 124.911741178259490 -0.022336900000000 27.487298389737063 0.000000 0.000000 1.891089 -0.519320200000000 47.133910466146219 134.665021955471900 124.915256834720665 -0.022336900000000 28.241323144517452 0.000000 0.000000 1.940594 -0.519320200000000 47.909036654282282 134.044829092366001 -55.490112463091108 -0.022336900000000 28.996597739051936 0.000000 0.000000 1.990099 -0.519320200000000 48.290447848312468 134.039935511311796 -55.487963231220760 -0.022336900000000 29.753161739696221 0.000000 0.000000 2.039604 -0.519320200000000 48.672604727535877 134.034914698934301 -55.485914331232529 -0.022336900000000 30.511054642396747 0.000000 0.000000 2.089109 -0.519320200000000 49.055522207975784 134.029775961562336 -55.484204150309964 -0.022336900000000 31.270318343493180 0.000000 0.000000 2.138614 -0.519320200000000 49.439215355035174 134.024526680524019 -55.482028718457990 -0.022336900000000 32.030991894712436 0.000000 0.000000 2.188119 -0.519320200000000 49.823699277840852 134.019175011712463 -55.480480567387225 -0.022336900000000 32.793116354222008 0.000000 0.000000 2.237624 -0.519320200000000 50.208991641637681 134.013728525355106 -55.478596770977461 -0.022336900000000 33.556737076168680 0.000000 0.000000 2.287129 -0.519320200000000 50.201062752955586 134.623191070707861 124.953071692136064 -0.022336900000000 34.321894713547458 0.000000 0.000000 2.336634 -0.519320200000000 50.588079163809013 134.617511877598133 124.958554665664423 -0.022336900000000 35.088633649957174 0.000000 0.000000 2.386139 -0.519320200000000 50.975958249681653 134.611753816354707 124.964402658445948 -0.022336900000000 35.856997067426015 0.000000 0.000000 2.435644 -0.519320200000000 51.364720471857609 134.605921415117393 124.970262776767228 -0.022336900000000 36.627031544292386 0.000000 0.000000 2.485149 -0.519320200000000 51.754385339766849 134.600019287199615 124.976546178607194 -0.022336900000000 37.398782090334301 0.000000 0.000000 2.534653 -0.519320200000000 52.144974173833631 134.594051555148951 124.982391427719719 -0.022336900000000 38.172296653547654 0.000000 0.000000 2.584158 -0.519320200000000 52.930218286436713 133.973391331003199 -55.467565201947806 -0.022336900000000 38.947621700006614 0.000000 0.000000 2.633663 -0.519320200000000 52.929008290509216 134.581934399138191 124.994741733496042 -0.022336900000000 39.724806426782777 0.000000 0.000000 2.683168 -0.519320200000000 53.322498281878481 134.575791697344755 125.001279116950087 -0.022336900000000 40.503899653847839 0.000000 0.000000 2.732673 -0.519320200000000 53.717001208009286 134.569597164263115 125.007609505199682 -0.022336900000000 41.284952620853254 0.000000 0.000000 2.782178 -0.519320200000000 54.112540731404053 134.563353450614756 125.014250173092137 -0.022336900000000 42.068015933998012 0.000000 0.000000 2.831683 -0.519320200000000 54.902556356946157 133.942755978039997 -55.460389749747584 -0.022336900000000 42.853142559796773 0.000000 0.000000 2.881188 -0.519320200000000 54.906828967393253 134.550729098273735 125.027303703514477 -0.022336900000000 43.640386312290786 0.000000 0.000000 2.930693 -0.519320200000000 55.305628417850720 134.544353225513163 125.034005062640020 -0.022336900000000 44.429800992704337 0.000000 0.000000 2.980198 -0.519320200000000 56.098799431813667 133.923829860922950 -55.455620173713712 -0.022336900000000 45.221443461726494 0.000000 0.000000 3.029703 -0.519320200000000 56.499842109188755 133.917444113178419 -55.454572193689351 -0.022336900000000 46.015369409548391 0.000000 0.000000 3.079208 -0.519320200000000 56.508970337237415 134.524995549363325 125.053936055134486 -0.022336900000000 46.811639077120674 0.000000 0.000000 3.128713 -0.519320200000000 56.912491728314691 134.518472961554949 125.061157175697275 -0.022336900000000 47.610310392650227 0.000000 0.000000 3.178218 -0.519320200000000 57.710249417661629 133.898080867409675 -55.449987357322954 -0.022336900000000 48.411444839849878 0.000000 0.000000 3.227723 -0.519320200000000 57.723321396351857 134.505331192150294 125.074759981373376 -0.022336900000000 49.215105531812135 0.000000 0.000000 3.277228 -0.519320200000000 58.130690460227413 134.498716045308470 125.081913659514825 -0.022336900000000 50.021355340512805 0.000000 0.000000 3.326733 -0.519320200000000 58.932201548058131 133.878442108999650 -55.445307785848414 -0.022336900000000 50.830261498649797 0.000000 0.000000 3.376238 -0.519320200000000 58.949499713387091 134.485401527579626 125.095378717371659 -0.022336900000000 51.641889636858807 0.000000 0.000000 3.425743 -0.519320200000000 59.361004681919461 134.478705646094852 125.102378174870836 -0.022336900000000 52.456308732997890 0.000000 0.000000 3.475248 -0.519320200000000 59.773957843639252 134.471983617214221 125.109090104832148 -0.022336900000000 53.273590211962457 0.000000 0.000000 3.524752 -0.519320200000000 60.188389889105217 134.465241284136567 125.115747435358657 -0.022336900000000 54.093805409788487 0.000000 0.000000 3.574257 -0.519320200000000 60.604341592264838 134.458475092347271 125.122795406784732 -0.022336900000000 54.917028966450822 0.000000 0.000000 3.623762 -0.519320200000000 61.414259765157496 133.838477036482061 -55.434505087886869 -0.022336900000000 55.743337131591282 0.000000 0.000000 3.673267 -0.519320200000000 61.833298656632536 133.831739007669938 -55.433102267451140 -0.022336900000000 56.572809075757306 0.000000 0.000000 3.722772 -0.519320200000000 62.253969767214329 133.824983286810834 -55.430772383880814 -0.022336900000000 57.405525057537425 0.000000 0.000000 3.772277 -0.519320200000000 62.676316254750724 133.818207847554561 -55.429068483072164 -0.022336900000000 58.241566977408702 0.000000 0.000000 3.821782 -0.519320200000000 62.708228809158093 134.424340516995784 125.156401330400925 -0.022336900000000 59.081021228129096 0.000000 0.000000 3.871287 -0.519320200000000 63.526205382677226 133.804602919246861 -55.424933783026169 -0.022336900000000 59.923974895482409 0.000000 0.000000 3.920792 -0.519320200000000 63.561813312081362 134.410560141731366 125.169972034190238 -0.022336900000000 60.770518232264266 0.000000 0.000000 3.970297 -0.519320200000000 63.991360029892775 134.403645535175684 125.176460025937899 -0.022336900000000 61.620744957160873 0.000000 0.000000 4.019802 -0.519320200000000 64.422805832631369 134.396715565540291 125.182921227579754 -0.022336900000000 62.474750593749143 0.000000 0.000000 4.069307 -0.519320200000000 64.856199659285039 134.389770940276691 125.189411257228187 -0.022336900000000 63.332633998817307 0.000000 0.000000 4.118812 -0.519320200000000 65.683350266669649 133.770315980861199 -55.413281793201584 -0.022336900000000 64.194497507347876 0.000000 0.000000 4.168317 -0.519320200000000 65.729036183461560 134.375839573271776 125.202368108203771 -0.022336900000000 65.060445855380621 0.000000 0.000000 4.217822 -0.519320200000000 66.560210942063890 133.756502257867140 -55.408394455911129 -0.022336900000000 65.930588664522773 0.000000 0.000000 4.267327 -0.519320200000000 66.610295648851306 134.361855559357082 125.214909559404276 -0.022336900000000 66.805037880291565 0.000000 0.000000 4.316832 -0.519320200000000 67.445717838372900 133.742638274166808 -55.403182270468101 -0.022336900000000 67.683909889574096 0.000000 0.000000 4.366337 -0.519320200000000 67.500432877258149 134.347822949331260 125.227375763383932 -0.022336900000000 68.567325051727337 0.000000 0.000000 4.415842 -0.519320200000000 67.948982029916948 134.340789168143374 125.233499043352253 -0.022336900000000 69.455407901874906 0.000000 0.000000 4.465347 -0.519320200000000 68.399935810173190 134.333745047248783 125.239495834904872 -0.022336900000000 70.348287392501192 0.000000 0.000000 4.514851 -0.519320200000000 68.853361496458490 134.326690111904668 125.245531737281027 -0.022336900000000 71.246097196982689 0.000000 0.000000 4.564356 -0.519320200000000 69.309327893118208 134.319625105513296 125.251251830953606 -0.022336900000000 72.148976012509607 0.000000 0.000000 4.613861 -0.519320200000000 69.767906715339095 134.312550271431235 125.257185357176454 -0.022336900000000 73.057067418432794 0.000000 0.000000 4.663366 -0.519320200000000 70.620199163661425 133.693768284878303 -55.382119494344288 -0.022336900000000 73.970521277641168 0.000000 0.000000 4.712871 -0.519320200000000 71.084162310481588 133.686748073145083 -55.378573805698430 -0.022336900000000 74.889492594176488 0.000000 0.000000 4.762376 -0.519320200000000 71.160077380504092 134.291270562646844 125.274084454616187 -0.022336900000000 75.814142585643594 0.000000 0.000000 4.811881 -0.519320200000000 71.629880877690695 134.284159916119108 125.279259753020938 -0.022336900000000 76.744639450151567 0.000000 0.000000 4.861386 -0.519320200000000 72.102700203133310 134.277041099153877 125.284871579171011 -0.022336900000000 77.681157994929194 0.000000 0.000000 4.910891 -0.519320200000000 72.578626344649734 134.269914316065467 125.290205024461685 -0.022336900000000 78.623880428612821 0.000000 0.000000 4.960396 -0.519320200000000 73.057754099953115 134.262779928242935 125.295354418860498 -0.022336900000000 79.572996826569906 0.000000 0.000000 5.009901 -0.519320200000000 73.930740054027140 133.644452239968189 -55.356313733388255 -0.022336900000000 80.528705404360622 0.000000 0.000000 5.059406 -0.519320200000000 74.026015254316761 134.248489282866814 125.305333577314073 -0.022336900000000 81.491214409068846 0.000000 0.000000 5.108911 -0.519320200000000 74.515360022198337 134.241333251608438 125.310174691750106 -0.022336900000000 82.460738460848290 0.000000 0.000000 5.158416 -0.519320200000000 75.008330282043659 134.234170746443027 125.314953990151977 -0.022336900000000 83.437505793773099 0.000000 0.000000 5.207921 -0.519320200000000 75.505044682994722 134.227001608787333 125.319736224762508 -0.022336900000000 84.421753344286927 0.000000 0.000000 5.257426 -0.519320200000000 76.395848361140182 133.609007764115063 -55.334403547540695 -0.022336900000000 85.413730175778184 0.000000 0.000000 5.306931 -0.519320200000000 76.510208451382837 134.212645665768207 125.328432214362437 -0.022336900000000 86.413697244644112 0.000000 0.000000 5.356436 -0.519320200000000 77.018926208804572 134.205457635111799 125.332825456277789 -0.022336900000000 87.421928785286326 0.000000 0.000000 5.405941 -0.519320200000000 77.921941944072501 133.587666951920596 -55.319678771615372 -0.022336900000000 88.438713462654917 0.000000 0.000000 5.455446 -0.519320200000000 78.049352173922898 134.191066259523978 125.340826713250379 -0.022336900000000 89.464354614018589 0.000000 0.000000 5.504950 -0.519320200000000 78.571372387021100 134.183862500162149 125.344550091537471 -0.022336900000000 90.499172383158353 0.000000 0.000000 5.554455 -0.519320200000000 79.487968707895462 133.566276553116012 -55.303732125110379 -0.022336900000000 91.543504157564286 0.000000 0.000000 5.603960 -0.519320200000000 79.629872458607593 134.169438308590486 125.351786928128192 -0.022336900000000 92.597706796435631 0.000000 0.000000 5.653465 -0.519320200000000 80.166716553816386 134.162220913654835 125.354990760241236 -0.022336900000000 93.662156865114682 0.000000 0.000000 5.702970 -0.519320200000000 81.098501603331002 133.544841256324020 -55.286320924264089 -0.022336900000000 94.737254194995586 0.000000 0.000000 5.752475 -0.519320200000000 81.646143766955163 133.537686924119328 -55.280078727960664 -0.022336900000000 95.823422467541235 0.000000 0.000000 5.801980 -0.519320200000000 81.810070771206597 134.140537304866598 125.364249614658220 -0.022336900000000 96.921112173473745 0.000000 0.000000 5.851485 -0.519320200000000 82.369545502123884 134.133300456742461 125.366713036390777 -0.022336900000000 98.030799921878355 0.000000 0.000000 5.900990 -0.519320200000000 83.324620529270291 133.516197921618470 -55.260511965898523 -0.022336900000000 99.152997574467449 0.000000 0.000000 5.950495 -0.519320200000000 83.507538620654302 134.118814673345582 125.371643079914492 -0.022336900000000 100.288248975714453 0.000000 0.000000 6.000000 -0.519320200000000 84.475827487142382 133.501851693551430 -55.246488271449294 -0.022336900000000 101.437135833363456hkl-5.1.7/Documentation/figures/B_a.png0000664000175000017500000003664015136610354016745 0ustar00piccapiccaPNG  IHDR\e&sRGB,bKGD pHYs,K,K= tEXtSoftwareGPL Ghostscript 10.06.0QL IDATx{#y_=Ù!)IK]ɖDī" o;dMv7Ƕf#8"[" NK!%6%d,G8β_PoCwE4u ﷹtRGF7𢪀gNF7 9穷 \ vjyy9e-ꪪj2P(H +] \W(UZY*c}b(cXf.̺b8ժVWW%I-R WUU>|XR:@_pea lQYl҉bUU@p.\14jUjUJVY˜@0Õ0k*ʦ:pyyYB NZ pjZ- WBǯ?@bUZr^+E \ \^^v+[dC)F`:W Uvˑ@QJEӃ"QlD +%[L/W nl 0~ڈ?\Kl(< ժ* a "p% FaK ⢻Egᚰh@>X,P(fVWWU*&J0N 1Xt_Zj@v&hА|Wa lckB/ :x`>*\5qt!p8FK1c.\#p8Fp 1c.\#pرc%0Oz ` \)u=[oOz` \)uZXXѣ$0"WJ]roMz)`DZXX$}.QR賟A4?j\)477 %ʵ'%Rhnnu+P.'>DF3!~y )g ˨pѣJ$I) 8["p̽תnu4 w "GܭyASUo#]#pѣy^rrVFAJ{W\O.紾#G\d+E_=[Sqcc}Ӗ \)B^~~#!pr$m`-Űlj6I,ss|'W'pIR^2?d +No1l)vdFBJؑ#wi~~~ݼيzM_O ,!p%{a+ꟽh4$y\ !p%,~b矡߮yIj4\ !p%ر[ jW FAJБ#wuKꄭp?0pR ;\ :zr\|VNb lJZU*Ec^.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1c.\#p8Fp 1^55ʒLҋ}J%>\Szo\c.@l뭗}T<DJp+δ*"<mSE-RzVbU t!peԺM \ޗD <0tDW#pe6h)8Fpbb:C~bQ(0\yl`Q>~\ce CUg3SJ>Ӻͅ'W=FaE`3ꄨ-蔯N*jI.Br*j#{x; p9n]<~ NuK.ŏ+?֨s}E;wMk>[[K& Y,3c3&q K.ƅ5vc3cmg' 3\cgG|?vwҢ.Qr!Gv Wꘞofw{-ۃwQ;㇙9m~VVF;\p5vFJUyzd,0\ 79-^8h߉sEƨI p9a;Xu_д>_ݯ>wG]RQw/u:)]kӨ2 RQ|֛j,Vo p-;=ӠLT peUX[ZZfVp$}2[g*o$i .UQel7Zޯh9/?v{eAH)+`?+.H+VpR:]0ôZҒ$+չOQjT"l@J0ÕYF9-MȂN!pM#B"T }h)8Fp3\"!0\@4Z HI/ H [0\@\.^. %\0\@BLKo#p)@u  H[0;\@ `0$,^ݲ˓'}j6zjYkkO%8;eeɓm_':.]\:@zo$8f[VU튪[evd: ?Hz)6a ǏEJK_K|sö mH@Rh)U^(V%ڷl"pWZV\{][.&W<՞XnC-c Yv| e\)cVֿ煁knnzdUQe}Ѱ}nt]zIz)m[6nڷNy?R1y'<r)Age~oּu3I/ p#[-]$Z:WғY2I/ Tttι<Huɼ$<@J]Z-}rIiϾZsgϕ^ Eh)`>hTy"/tw$v)B !o*OUs%o<єK $sIz!pCXyyzz穱^˒^Jh'!{>$F9J :z KNva ؆eʋIgIZssz9?g|R&锤Ot!p[0jT9^^%逤y)3ں֎N+ [.،"Ї\cTy5_҂=gK=`=II/JJD aZВC ճO?F3l%+ \5g~+ w[-}xIzy3$-HK\^8\:qR0tNGKhG:]a+hanA'^~YZ3 [joLr h)U9ּrڻg9z]A-VjŪ[#p1e~(ga>8nEg'IK-&eRXR ׺TzD×**$#?C_d2. ʪ*\;AbDƅ j%0*[ D[.ajŊ4 KzVZ]jqB0s[T(F{|4%.J5gi|RJ)k*8cb?W|Y\I6°z{ѣO{O[fuGO'_yZ?.rDL?}=Rh^ ~5|bQo6F5!RnvOK tUO/kmQK zN15AoCv:u.}\y^)|#(p Ěj4{tԧ> tU Nh{\/~N \ n.=3j4j2oK/ѫ_x0 ['[=yr˝Gzk^׼zk_/L/ :zկ^'f.iO>8|(X}> Ծ/ _R֔tRMj?RI5V[Q)va6߷["/Vw~z]v%K-qww3%qEKinVEf+K/D\pO:l'~cխ؁3ZV@FSF=1Zf!o6j45j6=𱏫&P|hCX.XPXj(T :L5SG-͟>o|Kj ]rɛu饗.e]5b-'&zlm _7577-,޽gh߾\pw#Gns='5uWxb:U9 R(hv= P.)ϫ WVWVFF7\.E缜r s=OV ic[)ƾ1ZVuhyYBAeCt!-:B$`fNhO]0E9vvFX]U;Q5qTT.҅z?KZg'g#}k_P.S.wܡ;<~2_0&/ch& :öhu;PmŮCՙZtB(7/h)Amh@zqieE^\T\֡nqk&sA>XW:-h+of666tUz~?;q+墟XU:x??ipplv=' ['ͦZ+)Y56 =㯑ahp~]azNRIo0FoU*FW!.d\48~w`>Nu7 5 ml._4`me-5QjAA`^^tt}*=}߱ckaaj Vi5\.Hsbm QWNIzQE]ayl}1F{S[CDFrWmo[| m't~K"pMD3Z-ǻ_]s͇[ij|~Nss WAm_}@2|+ ~5y#~b]ah_*&ctYRw\fGzd^ҩd*]qQN\{7_i]xh4t?ԾܜhڭFU$-)'~`T_+VMiXEIWE-*V8h4TmkޫZ?6Vvz=Qg):&Va^w>TtoC9ٌzGsr4\\RI%rK:XOJ++)t [;~DŽgt Hf3 UںO7W~Z]''aW{2%QJQX*.~>> IR.ӯ5j4z'k;?m9ڨv!/mk~TҺ`5)QqehL8hj6HZ.zr]yersX0Drߋ`33=tҒT,?}?|;Tn=/fn{~WYrf HJW_}UصB54xq7- [xkMG~+'fQW `l`oҘ̶aDԦ}e+n櫛G/˱oWKΪVfU7}reakEO\im?jU}QdWlm]1eme v;%&кZ\\Rt=gv3*v qfXE 8cJҦO<(cADc pZGmZݎm:Fծa{6a;Z cW(F*\YstZ\<k%V3%.3`mCUfTU-//<`'nAD  ΀oŸVeꪊbPV4mY,UTT,;y$mڳkK¹Ȋ_l0/~L8N7rRi$C25FVQ(~3Z-0l+l/Mנ(=|11aT{4j&lcU0n#lI*,%?+WV. V 2s|D!V*7aR!lco'.t\aK"pU(t˝k.-u>?b ؍(EО~T [|c',h[-őYm"pjҌ/ƪSla(W0cL{6+pUUUH' :O%ߎQ4Kfɉ-k;TkU$GsӢµkVS>gnE Vt EmEW3\`5a+b$b a–} Akf$lYQ\V4 ?-ډ@0õV [}(cuv"xF?!p *a+>$R aΩR;m s\CJGJ#] m g@z`d,*DȈ#VTՇakWvQVDN5Űv@3-JQJvfň/]7p7rxd.~EoM[+tI)S=j_Gry). ߢ/5·""l%.̘~TzV+ި~+2jpT _zMj6;A+j%J–'r>c%f}&cE'B`LU>"jum [*&jt(g2MUP8y[@^H͆hr݉jSTۉ^ns+QfQ zM-1vtfSR赾yaUєa jRm]؈U8#]25>MiT[An!FAkcCXץ2%/|QL \ZIA]򢠵`c]: dԹD ISBp8 5itd~dxI$vlH D IN yA Zǥ/o'^NS:cXVT35;{A*hʫXOZ-2+a~YoOz #vdaX^~A:q" \Zkn *m_󤗍QY+ak˅+³KRQw SMծ@¦gh0>ζ$c}&㒨tEt2H .@\~FT"pavXu.M 0A.0xZSL .$|Q\@Bv&"{G]]cx+:q&j+\Rʵ"7vEde}qH<_a++.R,nH"WLF)|uaZ m)Zu*dtmjvv-y+2.%Fg2VaY ;k){_ʊ3CKŶ@fYul7>2(˄.\8X-.&;n)F61b e U;ETp {,js\ѾL-F._`m:+ Q^. ƪLƒ(R4ꄭAp D` Fg2D0._]͓/ :uVݳ]K3o_$@T`Fm \~ժJ?-]>,+]0CUwu v ה9:FT`Fl \qf'?fΞ^lOS*jLkv͌/ؒԩlExT`tOkح[0b}0v@ ܇vlfD L;pxf-`|1Sok؝mseD @e|p|;_ A|mvؑ];>z!`L] dĶ$~Lm7;_T]W|c\+l+p ;n9ծ'-w]?v*9 N&׮]W-}@/~zk.pmSK1?o^ݖ::Ϊ|t njvTz>Z;}J/AՃ7ŸFC-qNXuR_Ԧ/k]uZkZ)ۻOJ}WNp0;IE*,IGZe6+hCuJtR8s?|Y.LaF+lףz浠=ګ:Ct@t@'Nŵ[3L10ͬꖤTnМ4y-hA{[kh믏Or0\3ҧ7SN9Zkҵ_gj㺧r>O$j* \6S[oV5%kŮXڧ:SuN8;] ć歺U S^TC UWS +(hWS]5iMk:zY (h0v5TSSA;xEtJ'uBП^R R5`|ꯨj()|{nkt5/S {iY:Kggo̧\v 01RI_sW^yZvMޚ+hU TF~돞>/ 2̀}B_)hh^)'O^XWM% Ksz?R%@}T围_׼iC׆^qE]η2 S\ wMW^XqCuդVNyY]wޠ'| I_*_{Gr.*!@l)|}Glu@g6 9i}h*Bl`hGj:Sz&?_bƤE+G=ZIOzʯǓ^ aR \fd^µ̞%I~ҋ0Kp=^=?L.zo\Y2`Glm* [ [|I1?'?8F0[¡Ȋh-p`DE5 `h0-F0[J"l8ZQp @6ؤG^3 mcEz\@Xu6'=0/9g)HN :?.a]21^ 72c @:XuVQaJ9{`.1T;;lsAh\qijAĭXu @:U.gŞǕd*1. 6(y_-ȝ^'wL @vY.,EcZl"2#<Ǝ9`Tzo8 Tzo8;pK~F%J cF0݌:_nsUp"e}kHCQpO4INIENDB`hkl-5.1.7/Documentation/figures/4S+2D_reciprocal4.asy0000664000175000017500000000324614677222567021324 0ustar00piccapiccaimport three; triple a = (1,0,0); triple b = (.31,.95,0); triple c = (.4,.5,0.76); currentprojection=orthographic(2 * (-0.5*X+Y+.5*Z)+ 3*Z + Y, target=3*Z+Y); currentlight=White; size(12cm); // orthonormal coordinates draw(Label("$\vec{x}$", 1), (-3*X)--(X), gray, Arrow3()); draw(Label("$\vec{y}$", 1), (-Y)--(Y), gray, Arrow3()); draw(Label("$\vec{z}$", 1), (-2*Z)--(2*Z), gray, Arrow3()); // La construction d'Ewald void ewald(triple ki, real gamma, real delta, real alpha, real phi) { real k = length(ki); triple kf = rotate(gamma, Z) * rotate(-delta, Y) * ki; triple Q = kf-ki; triple n = rotate(phi, Y) * rotate(alpha, X) * scale3(length(Q)) * Y; triple np = planeproject(Q, O) * n; triple xp = unit(Q); triple zp = cross(xp, -X); triple yp = length(np) * unit(cross(xp, zp)); // incomming and outgoing beam draw(Label("$\vec{k_i}$", .5, S), shift(-ki)*(O--ki), blue, Arrow3()); draw(Label("$\vec{k_f}$"), shift(-ki)*(O--kf), green, Arrow3()); draw(surface(plane(Q, ki)), blue+opacity(.3)); // diffraction vector draw(Label("$\vec{Q}$", 1), O--Q, red, Arrow3()); draw(circle(O, length(np), Q), red+dashed); // ref vector and its projection draw(Label("$\vec{n}$", 1), O--n, orange, Arrow3()); draw(O--np, gray, Arrow3()); draw(n--np, gray+dashed); // psi angle and its origin draw(O--yp, gray, Arrow3()); draw(Label("$\psi$"), arc(O, yp, np), red, ArcArrow3()); draw(surface(O--arc(O, yp, np)--cycle), red); // Ewalds sphere surface Ewalds = shift(-ki) * rotate(90, Y) * scale3(k) * unithemisphere; draw(Ewalds, green+opacity(0.3), render(compression=Zero,merge=true)); dot(Label("C"), -ki); } ewald(2*X, -30, 40, 60, -60); hkl-5.1.7/Documentation/figures/sirius-s.gnuplot0000664000175000017500000000047214677222567020756 0ustar00piccapiccaset terminal svg set output "sirius-s.svg" set title '[0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps)' set xlabel 'l' set ylabel 'kphi' plot \ 's1-11.dat' u 3:7 w lp t 's1-10',\ 's2-11.dat' u 3:7 w lp t 's2-10',\ 's1-101.dat' u 3:7 w lp t 's1-100',\ 's2-101.dat' u 3:7 w lp t 's2-100' hkl-5.1.7/Documentation/figures/traj_n.dat0000664000175000017500000000234615144640561017523 0ustar00piccapicca# x y 1 180.195371 2 180.813073 3 0.424843 4 180.590416 5 180.792872 6 180.868849 7 180.824758 8 180.851837 9 180.431954 10 180.889088 11 180.794561 12 180.815753 13 180.842793 14 180.858062 15 180.504292 16 180.880547 17 180.908082 18 180.909971 19 180.486832 20 180.913101 21 180.914589 22 180.490879 23 180.492126 24 0.474524 25 0.474049 26 0.474404 27 0.474810 28 0.474845 29 0.475107 30 0.475227 31 0.475243 32 0.475180 33 0.475246 34 0.475028 35 0.474779 36 0.474893 37 0.475082 38 0.475165 39 0.475251 40 0.475291 41 0.475288 42 0.475247 43 0.475172 44 0.475067 45 0.474936 46 0.474979 47 0.475110 48 0.475203 49 0.475262 50 0.475291 51 0.475293 52 0.475269 53 0.475223 54 0.475155 55 0.475070 56 0.475070 57 0.475160 58 0.475226 59 0.475269 60 0.475291 61 0.475375 62 0.475348 63 0.475307 64 0.475252 65 0.475184 66 0.475158 67 0.475219 68 0.475264 69 0.475292 70 0.475306 71 0.475307 72 0.475295 73 0.475270 74 0.475235 75 0.475189 76 0.475161 77 0.475181 78 0.475225 79 0.475255 80 0.475274 81 0.475282 82 0.475279 83 0.475266 84 0.475244 85 0.475213 86 0.475187 87 0.475229 88 0.475262 89 0.475285 90 0.475298 91 0.475303 92 0.475300 93 0.475289 94 0.475270 95 0.475245 96 0.475213 97 0.475247 98 0.475274 99 0.475292 100 0.475303 101 0.475307hkl-5.1.7/Documentation/figures/sirius-s.svg0000664000175000017500000011773515144640561020064 0ustar00piccapicca Gnuplot Produced by GNUPLOT 6.0 patchlevel 3 -60 -40 -20 0 20 40 60 80 100 120 140 1 2 3 4 5 6 s1-10 s1-10 s2-10 s2-10 s1-100 s1-100 s2-100 s2-100 kphi l [0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps) hkl-5.1.7/Documentation/figures/sirius-m.gnuplot0000664000175000017500000000047214677222567020750 0ustar00piccapiccaset terminal svg set output "sirius-m.svg" set title '[0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps)' set xlabel 'l' set ylabel 'kphi' plot \ 'm1-11.dat' u 3:7 w lp t 'm1-10',\ 'm2-11.dat' u 3:7 w lp t 'm2-10',\ 'm1-101.dat' u 3:7 w lp t 'm1-100',\ 'm2-101.dat' u 3:7 w lp t 'm2-100' hkl-5.1.7/Documentation/hkl.html0000664000175000017500000110226715144640564015563 0ustar00piccapicca Welcome to hkl's 5.1.7 documentation!

Welcome to hkl's 5.1.7 documentation!

Table of Contents

1. Introduction

The purpose of the library is to factorize single crystal diffraction angles computation for different kind of diffractometer geometries. It is used at the SOLEIL, Desy and Alba synchrotron with the Tango control system and at the ESRF with the BLISS control system to pilot diffractometers.

ghkl.png

Figure 1: hkl library GUI interface

Features

  • mode computation (aka PseudoAxis).
  • item for different diffractometer geometries.
  • UB matrix computation:
    • Busing & Levy with 2 reflections.
    • simplex computation with more than 2 reflections using the GSL library.
    • Eulerian angles to pre-orientate your sample.
  • Crystal lattice refinement:
    • with more than 2 reflections, you can select which parameter must be fitted.
  • Pseudoaxes:
    • psi, eulerians, q, …

Conventions

In this whole document, the next convention will be used to describe the diffractometers geometries:

  • right handed convention for all the angles.
  • direct space orthogonal base.
  • description of the diffractometer geometries is done with all axes values set to zero.

Diffraction

The crystal

A periodic crystal is the association of a pattern and a lattice. The pattern is located at each points of the lattice node. Positions of those nodes are given by:

\[ R_{uvw}=u\cdot\vec{a}+v\cdot\vec{b}+w\cdot\vec{c} \]

\(\vec{a}\), \(\vec{b}\), \(\vec{c}\) are the former vectors of a base of the space. u, v, w are integers. The pattern contains atoms associated to each lattice node. The purpose of diffraction is to study the interaction of this crystal (pattern + lattice) with X-rays.

crystal.png

Figure 2: Crystal direct lattice.

This lattice is defined by \(\vec{a}\), \(\vec{b}\), \(\vec{c}\) vectors, and the angles \(\alpha\), \(\beta\), \(\gamma\). In general cases, this lattice is not orthonormal.

Nevertheless, to compute the interaction of this real space lattice and the X-rays, it is convenient to define another lattice called the reciprocal space lattice defined like this:

\begin{eqnarray*} \vec{a}^{\star} & = & \tau\frac{\vec{b}\wedge\vec{c}}{\vec{a}\cdot(\vec{b}\wedge\vec{c})}\\ \vec{b}^{\star} & = & \tau\frac{\vec{c}\wedge\vec{a}}{\vec{b}\cdot(\vec{c}\wedge\vec{a})}\\ \vec{c}^{\star} & = & \tau\frac{\vec{a}\wedge\vec{b}}{\vec{c}\cdot(\vec{a}\wedge\vec{b})} \end{eqnarray*}

\(\tau=2\pi\) or \(\tau=1\) depending on the conventions.

It is then possible to define theses orthogonal properties:

\begin{eqnarray*} \vec{a}^{\star}\cdot\vec{a}=\tau & \vec{b}^{\star}\cdot\vec{a}=0 & \vec{c}^{\star}\cdot\vec{a}=0\\ \vec{a}^{\star}\cdot\vec{b}=0 & \vec{b}^{\star}\cdot\vec{b}=\tau & \vec{c}^{\star}\cdot\vec{b}=0\\ \vec{a}^{\star}\cdot\vec{c}=0 & \vec{b}^{\star}\cdot\vec{c}=0 & \vec{c}^{\star}\cdot\vec{c}=\tau \end{eqnarray*}

This reciprocal space lattice allows to write in a simpler form the interaction between the crystal and the X-rays. We often only know about \(\vec{a}\), \(\vec{b}\), \(\vec{c}\) vectors and the angles \(\alpha\), \(\beta\), \(\gamma\). Using the previous reciprocal equations, we can compute the reciprocal lattice this way:

\begin{eqnarray*} a^{\star} & = & \frac{\sin\alpha}{aD}\\ b^{\star} & = & \frac{\sin\beta}{bD}\\ c^{\star} & = & \frac{\sin\gamma}{cD} \end{eqnarray*}

where

\[ D=\sqrt{1-\cos^{2}\alpha-\cos^{2}\beta-\cos^{2}\gamma+2\cos\alpha\cos\beta\cos\gamma} \]

To compute the angles between the reciprocal space vectors, it is once again possible to use the previous reciprocal equations to obtain the sines and cosines of the angles \(\alpha^\star\), \(\beta^\star\) and \(\gamma^\star\):

\begin{eqnarray*} cosα^{*}=\frac{\cos\beta\cos\gamma-\cos\alpha}{\sin\beta\sin\gamma} & \, & sinα^{*}=\frac{D}{\sin\beta\sin\gamma}
cosβ^{*}=\frac{\cos\gamma\cos\alpha-\cos\beta}{\sin\gamma\sin\alpha} & \, & sinβ^{*}=\frac{D}{\sin\gamma\sin\alpha}
cosγ^{*}=\frac{\cos\alpha\cos\beta-\cos\gamma}{\sin\alpha\sin\beta} & \, & sinγ^{*}=\frac{D}{\sin\alpha\sin\beta} \end{eqnarray*}.

The volume of the lattice can be computed this way:

\[ V = abcD \]

or

\[ V = \vec{a} \dot (\vec{b} \wedge \vec{c}) = \vec{b} \dot (\vec{c} \wedge \vec{a}) = \vec{c} \dot (\vec{a} \wedge \vec{b}) \]

Diffraction

Let the incoming X-ray beam whose wave vector is \(\vec{k_{i}}\), \(|k_{i}|=\tau/\lambda\) where \(\lambda\) is the wavelength of the signal. And \(\vec{k_{d}}\) vector wavelength of the diffracted beam. There is diffraction if the diffraction vector \(\vec{q}\) can be expressed as follows:

\[ \vec{q}=\vec{k_{d}}-\vec{k_{i}}=h.\vec{a}^{*}+k.\vec{b}^{*}+l.\vec{c}^{*} \]

where \((h,k,l)\in\mathbb{N}^{3}\) and \((h,k,l)\neq(0,0,0)\). Theses indices \((h,k,l)\) are named Miller indices.

Another way of looking at things has been given by Bragg and that famous relationship:

\[ n\lambda=2d\sin\theta \]

where \(d\) is the inter-plan distance and \(n \in \mathbb{N}\).

The diffraction occurs for a unique \(\theta\) angle. Then we got \(\vec{q}\) perpendicular to the diffraction plans.

The Ewald construction allows to represent this diffraction condition in the reciprocal space.

Quaternions

  • Properties

    The quaternions will be used to describe the diffractometer geometries. Theses quaternions can represent 3D rotations. There are different ways to describe such as complex numbers:

    \[ q=a+bi+cj+dk \]

    or

    \[ q=[a,\vec{v}] \]

    To compute the quaternion's norm, we can proceed like for complex numbers:

    \[ \|q\|=\sqrt{a²+b²+c²+d²} \]

    Its conjugate is:

    \[ q^{*}=[a,-\vec{u}]=a-bi-cj-dk \]

  • Operations

    The difference with complex number algebra is about non-commutativity.

    \[ qp \neq pq \]

    \begin{bmatrix} ~ & 1 & i & j & k \cr 1 & 1 & i & j & k \cr i & i & -1 & k & -j \cr j & j & -k & -1 & i \cr k & k & j & -i & -1 \end{bmatrix}

    The product of two quaternions can be express by the Grassman product. So for two quaternions \(p\) and \(q\):

    \begin{align*} q &= a+\vec{u} = a+bi+cj+dk\\ p &= t+\vec{v} = t+xi+yj+zk \end{align*}

    we got:

    \[ pq = at - \vec{u} \cdot \vec{v} + a \vec{v} + t \vec{u} + \vec{v} \times \vec{u} \]

    or equivalent:

    \[ pq = (at - bx - cy - dz) + (bt + ax + cz - dy) i + (ct + ay + dx - bz) j + (dt + az + by - cx) k \]

  • 3D rotations

    L'ensemble des quaternions unitaires (leur norme est égale à 1) est le groupe qui représente les rotations dans l'espace 3D. Si on a un vecteur unitaire \(\vec{u}\) et un angle de rotation \(\theta\) alors le quaternion \([\cos\frac{\theta}{2},\sin\frac{\theta}{2}\vec{u]}\) représente la rotation de \(\theta\) autour de l'axe \(\vec{u}\) dans le sens trigonométrique. Nous allons donc utiliser ces quaternions unitaires pour représenter les mouvements du diffractomètre.

    Alors que dans le plan 2D une simple multiplication entre un nombre complex et le nombre \(e^{i\theta}\) permet de calculer simplement la rotation d'angle \(\theta\) autour de l'origine, dans l'espace 3D l'expression équivalente est:

    \[ z'=qzq^{-1} \]

    où \(q\) est le quaternion de norme 1 représentant la rotation dans l'espace et \(z\) le quaternion représentant le vecteur qui subit la rotation (sa partie réelle est nulle).

    Dans le cas des quaternions de norme 1, il est très facile de calculer \(q^{-1}\). En effet l'inverse d'une rotation d'angle \(\theta\) est la rotation d'angle \(-\theta\). On a donc directement:

    \[ q^{-1}=[\cos\frac{-\theta}{2},\sin\frac{-\theta}{2}\vec{u}]=[\cos\frac{\theta}{2},-\sin\frac{\theta}{2}\vec{u}]=q^{*} \]

    Le passage aux matrices de rotation se fait par la formule suivante \(q\rightarrow M\).

    \begin{bmatrix} a{{}^2}+b{{}^2}-c{{}^2}-d{{}^2} & 2bc-2ad & 2ac+2bd\\ 2ad+2bc & a{{}^2}-b{{}^2}+c{{}^2}-d{{}^2} & 2cd-2ab\\ 2bd-2ac & 2ab+2cd & a{{}^2}-b{{}^2}-c{{}^2}+d{{}^2} \end{bmatrix}

    La composition de rotation se fait simplement en multipliant les quaternions entre eux. Si l'on a \(q\).

Modes de fonctionnement

To come.

Equations fondamentales

Le problème que nous devons résoudre est de calculer, pour une famille de plan \((h,k,l)\) donné, les angles de rotation du diffractomètre qui permettent de le mettre en condition de diffraction. Il faut donc exprimer les relations mathématiques qui lient les différents angles entre eux lorsque la condition de Bragg est vérifiée. L'équation fondamentale est la suivante:

\begin{align*} \left(\prod_{i}S_{i}\right)\cdot U\cdot B\cdot\vec{h} & =\left(\prod_{j}D_{j}-I\right)\cdot\vec{k_{i}}\\ R\cdot U\cdot B\cdot\vec{h} & =\vec{Q} \end{align*}

où \(\vec{h}\) est le vecteur \((h,k,l)\), \(\vec{k_{i}}\) est le vecteur incident, \(S_{i}\) les matrices de rotations des mouvements liés à l'échantillon, \(D_{j}\) les matrices de rotation des mouvements liés au détecteur, \(I\) la matrice identité, \(U\) la matrice d'orientation du cristal par rapport au repère de l'axe sur lequel ce dernier est monté et \(B\) la matrice de passage d'un repère non orthonormé (celui du cristal réciproque) à un repère orthonormé.

Calcule de B

Si l'on connaît les paramètres cristallins du cristal étudié, il est très simple de calculer \(B\):

\[ B = \]

\begin{bmatrix} a^{\star} & b^{\star}\cos\gamma^{\star} & c^{\star}\cos\beta^{\star}\\ 0 & b^{\star}\sin\gamma^{\star} & -c^{\star}\sin\beta^{\star}\cos\alpha\\ 0 & 0 & 1/c \end{bmatrix}

Calcule de U

Il existe plusieurs façons de calculer \(U\). Busing et Levy en ont proposé plusieurs. Nous allons présenter celle qui nécessite la mesure de seulement deux réflections ainsi que la connaissance des paramètres cristallins. Cette façon de calculer la matrice d'orientation \(U\) peut être généralisée à n'importe quel diffractomètre pour peu que la description des axes de rotation permette d'obtenir la matrice de rotation de la machine \(R\) et le vecteur de diffusion \(\vec{Q}\).

Il est également possible de calculer \(U\) sans la connaîssance des paramètres cristallins. Il faut alors faire un affinement des paramètres. Cela revient à minimiser une fonction. Nous allons utiliser la méthode du simplex pour trouver ce minimum et donc ajuster l'ensemble des paramètres cristallins ainsi que la matrice d'orientation.

Algorithme de Busing et Levy

L'idée est de se placer dans le repère de l'axe sur lequel est monté l'échantillon. On mesure deux réflections \((\vec{h}_{1},\vec{h}_{2})\) ainsi que leurs angles associés. Cela nous permet de calculer \(R\) et \(\vec{Q}\) pour chacune de ces reflections. Nous avons alors ce système:

\begin{eqnarray*} U\cdot B\cdot\vec{h}_{1} & = & \tilde{R}_{1}\cdot\vec{Q}_{1}\\ U\cdot B\cdot\vec{h}_{2} & = & \tilde{R}_{2}\cdot\vec{Q}_{2} \end{eqnarray*}

De façon à calculer facilement \(U\), il est intéressant de définir deux trièdres orthonormés \(T_{\vec{h}}\) et \(T_{\vec{Q}}\) à partir des vecteurs \((B\vec{h}_{1},B\vec{h}_{2})\) et \((\tilde{R}_{1}\vec{Q}_{1},\tilde{R}_{2}\vec{Q}_{2})\). On a alors très simplement:

\[ U \cdot T_{\vec{h}} = T_{\vec{Q}} \]

Et donc:

\[ U = T_{\vec{Q}} \cdot \tilde{T}_{\vec{h}} \]

Affinement par la méthode du simplex

Dans ce cas, nous ne connaissons pas la matrice \(B\), il faut donc mesurer plus que deux réflections pour ajuster les neuf paramètres. Six paramètres pour le crystal et trois pour la matrice d'orientation \(U\). Les trois paramètres qui permettent de représenter \(U\) sont en fait les angles d'Euler. Il faut donc être en mesure de passer d'une représentation eulérienne à cette matrice \(U\) et réciproquement.

\[ U = X \cdot Y \cdot Z \]

où \(X\) est la matrice de rotation suivant l'axe Ox et le premier angle d'Euler, \(Y\) la matrice de rotation suivant l'axe Oy et le deuxième angle d'Euler et \(Z\) la matrice du troisième angle d'Euler pour l'axe Oz.

\(X\) \(Y\) \(Z\)
\(\begin{bmatrix} 1 & 0 & 0\\ 0 & A & -B\\ 0 & B & A \end{bmatrix}\) \(\begin{bmatrix}C & 0 & D\\0 & 1 & 0\\-D & 0 & C\end{bmatrix}\) \(\begin{bmatrix}E & -F & 0\\F & E & 0\\0 & 0 & 1\end{bmatrix}\)

et donc:

\[ U= \]

\begin{bmatrix} CE & -CF & D\\ BDE+AF & -BDF+AE & -BC\\ -ADE+BF & ADF+BE & AC \end{bmatrix}

Il est donc facile de passer des angles d'Euler à la matrice d'orientation.

Il faut maintenant faire la transformation inverse de la matrice \(U\) vers les angles d'Euler.

2. PseudoAxes

This section describes the calculations done by the library for the different kind of pseudo-axes.

General process

First Solution

The hkl library uses the gsl library in order to find the first valid solution.

Multiplication of the solutions

Once we have got the first solution, different strategies are applied in order to generate more solutions.

  • Geometry Multiplication

    For kappa diffractometers, once you have one solution, it is possible to generate another one using a property of this geometry. (Left arm and right arm).

Restrains of the Solutions

We apply then some constrains to reduce these solutions to only a bunch of acceptable ones. Usually we take the axis range into account.

Eulerians to Kappa angles

1st solution:

\begin{eqnarray*} \kappa_\omega & = & \omega - p + \frac{\pi}{2} \\ \kappa & = & 2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p - \frac{\pi}{2} \end{eqnarray*}

or 2nd one:

\begin{eqnarray*} \kappa_\omega & = & \omega - p - \frac{\pi}{2} \\ \kappa & = & -2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p + \frac{\pi}{2} \end{eqnarray*}

where

\[ p = \arcsin\left(\frac{\tan\frac{\chi}{2}}{\tan\alpha}\right) \]

and \(\alpha\) is the angle of the kappa axis with the \(\vec{y}\) axis.

Kappa to Eulerian angles

1st solution:

\begin{eqnarray*} \omega & = & \kappa_\omega + p - \frac{\pi}{2} \\ \chi & = & 2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p + \frac{\pi}{2} \end{eqnarray*}

or 2nd one:

\begin{eqnarray*} \omega & = & \kappa_\omega + p + \frac{\pi}{2} \\ \chi & = & -2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p - \frac{\pi}{2} \end{eqnarray*}

where

\[ p = \arctan\left(\tan\frac{\kappa}{2} \cos\alpha\right) \]

e2k_1.png

Figure 3: \(\omega = 0\), \(\chi = 0\), \(\phi = 0\), 1st solution

e2k_2.png

Figure 4: \(\omega = 0\), \(\chi = 0\), \(\phi = 0\), 2nd solution

e2k_3.png

Figure 5: \(\omega = 0\), \(\chi = 90\), \(\phi = 0\), 1st solution

e2k_4.png

Figure 6: \(\omega = 0\), \(\chi = 90\), \(\phi = 0\), 2nd solution

Qper and Qpar

qper_qpar.png

This pseudo axis engine computes the perpendicular (\(\left|\left|\vec{Q_\text{per}}\right|\right|\)) and parallel (\(\left|\left|\vec{Q_\text{par}}\right|\right|\)) contribution of \(\vec{Q}\) relatively to the surface of the sample defined by the \(\vec{n}\) vector.

\begin{eqnarray*} \vec{q} & = & \vec{k_\text{f}} - \vec{k_\text{i}} \\ \vec{q} & = & \vec{q_\text{per}} + \vec{q_\text{par}} \\ \vec{q_\text{per}} & = & \frac{\vec{q} \cdot \vec{n}}{\left|\left|\vec{n}\right|\right|} \frac{\vec{n}}{\left|\left|\vec{n}\right|\right|} \end{eqnarray*}

3. Diffractometers

Warning

This section is automatically generating by introspecting the hkl library.

APS POLAR

Axes:

  • "tau": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, 0.0, 1.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "4-circles constant phi horizontal"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "gamma"
      • parameters: No parameter
    • mode: "zaxis + alpha-fixed"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "zaxis + beta-fixed"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "tau", "gamma", "delta"
      • parameters: No parameter
    • mode: "zaxis + alpha=beta"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "tau", "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "4-circles bissecting horizontal"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "phi", "gamma"
      • parameters: No parameter
    • mode: "4-circles constant mu horizontal"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "phi", "gamma"
      • parameters: No parameter
    • mode: "4-circles constant chi horizontal"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "phi", "gamma"
      • parameters: No parameter
    • mode: "lifting detector tau"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "tau", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting detector mu"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting detector chi"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting detector phi"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "phi", "gamma", "delta"
      • parameters: No parameter
    • mode: "psi constant horizontal"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "phi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [0.0]: k coordinate of the reference plan
        • l2 [0.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "psi constant vertical"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "tau", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [0.0]: k coordinate of the reference plan
        • l2 [0.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi_vertical"
      • axes (read) : "tau", "mu", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan

E4CH

Axes:

  • "omega": rotation around the [0.0, 0.0, 1.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, 0.0, 1.0] axis
  • "tth": rotation around the [0.0, 0.0, 1.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_omega"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_chi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_phi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "tth"
      • parameters: No parameter
    • mode: "double_diffraction"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
    • mode: "q"
      • axes (read) : "tth"
      • axes (write): "tth"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "omega", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

E4CV

Axes:

  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, -1.0, 0.0] axis
  • "tth": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_omega"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_chi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_phi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "tth"
      • parameters: No parameter
    • mode: "double_diffraction"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
    • mode: "q"
      • axes (read) : "tth"
      • axes (write): "tth"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "omega", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

E6C

Axes:

  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_omega_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_chi_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_phi_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_phi"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "phi", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_omega"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_mu"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "double_diffraction_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "bissector_horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "omega", "chi", "phi", "gamma"
      • parameters: No parameter
    • mode: "double_diffraction_horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "phi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [0.0]: k coordinate of the reference plan
        • l2 [0.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "psi_constant_horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "constant_mu_horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "phi", "gamma"
      • parameters: No parameter
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi_vertical"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "mu", "omega", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

ESRF BM28 PSIC

Axes:

  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "eta": rotation around the [0.0, -1.0, 0.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, -1.0, 0.0] axis
  • "nu": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "constant_nu_coplanar"
      • axes (read) : "mu", "eta", "chi", "phi", "nu", "delta"
      • axes (write): "eta", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_delta_coplanar"
      • axes (read) : "mu", "eta", "chi", "phi", "nu", "delta"
      • axes (write): "eta", "phi", "nu"
      • parameters: No parameter
    • mode: "constant_eta_noncoplanar"
      • axes (read) : "mu", "eta", "chi", "phi", "nu", "delta"
      • axes (write): "phi", "nu", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "mu", "eta", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "mu", "eta", "chi", "phi", "nu", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

ESRF ID01 PSIC

Axes:

  • "mu": rotation around the [0.0, 0.0, -1.0] axis
  • "eta": rotation around the [0.0, -1.0, 0.0] axis
  • "phi": rotation around the [0.0, 0.0, -1.0] axis
  • "nu": rotation around the [0.0, 0.0, -1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "constant_nu_coplanar"
      • axes (read) : "mu", "eta", "phi", "nu", "delta"
      • axes (write): "eta", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_delta_coplanar"
      • axes (read) : "mu", "eta", "phi", "nu", "delta"
      • axes (write): "eta", "phi", "nu"
      • parameters: No parameter
    • mode: "constant_eta_noncoplanar"
      • axes (read) : "mu", "eta", "phi", "nu", "delta"
      • axes (write): "phi", "nu", "delta"
      • parameters: No parameter

K4CV

Axes:

  • "komega": rotation around the [0.0, -1.0, 0.0] axis
  • "kappa": rotation around the [0.0, -0.6427876096865394, -0.766044443118978] axis
  • "kphi": rotation around the [0.0, -1.0, 0.0] axis
  • "tth": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters: No parameter
    • mode: "constant_omega"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • omega [0.0]: the freezed value
    • mode: "constant_chi"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • chi [0.0]: the freezed value
    • mode: "constant_phi"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "double_diffraction"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "eulerians":
    • pseudo axes:
      • "omega" : omega equivalent for a four circle eulerian geometry
      • "chi" : chi equivalent for a four circle eulerian geometry
      • "phi" : phi equivalent for a four circle eulerian geometry
    • mode: "eulerians"
      • axes (read) : "komega", "kappa", "kphi"
      • axes (write): "komega", "kappa", "kphi"
      • parameters:
        • solutions [1.0]: (0/1) to select the first or second solution
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
    • mode: "q"
      • axes (read) : "tth"
      • axes (write): "tth"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "komega", "kappa", "kphi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "komega", "kappa", "kphi", "tth"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

K6C

Axes:

  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "komega": rotation around the [0.0, -1.0, 0.0] axis
  • "kappa": rotation around the [0.0, -0.6427876096865394, -0.766044443118978] axis
  • "kphi": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters: No parameter
    • mode: "constant_omega_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • omega [0.0]: the freezed value
    • mode: "constant_chi_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • chi [0.0]: the freezed value
    • mode: "constant_phi_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "lifting_detector_kphi"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "kphi", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_komega"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_mu"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "double_diffraction_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "bissector_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "mu", "komega", "kappa", "kphi", "gamma"
      • parameters: No parameter
    • mode: "constant_phi_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "mu", "komega", "kappa", "kphi", "gamma"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "constant_kphi_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "mu", "komega", "kappa", "gamma"
      • parameters: No parameter
    • mode: "double_diffraction_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "mu", "komega", "kappa", "kphi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "constant_incidence"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "gamma", "delta"
      • parameters:
        • x [1.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
        • incidence [0.0]: expected incidence of the incoming beam \(\vec{k_i}\) on the surface.
        • azimuth [90.0]: expected azimuth
  • "eulerians":
    • pseudo axes:
      • "omega" : omega equivalent for a four circle eulerian geometry
      • "chi" : chi equivalent for a four circle eulerian geometry
      • "phi" : phi equivalent for a four circle eulerian geometry
    • mode: "eulerians"
      • axes (read) : "komega", "kappa", "kphi"
      • axes (write): "komega", "kappa", "kphi"
      • parameters:
        • solutions [1.0]: (0/1) to select the first or second solution
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write): "komega", "kappa", "kphi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "mu", "komega", "kappa", "kphi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

PETRA3 P09 EH2

Axes:

  • "mu": rotation around the [0.0, -1.0, 0.0] axis
  • "omega": rotation around the [0.0, 0.0, 1.0] axis
  • "chi": rotation around the [1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, 0.0, 1.0] axis
  • "gamma": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "zaxis + alpha-fixed"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "omega", "delta", "gamma"
      • parameters: No parameter
    • mode: "zaxis + beta-fixed"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "mu", "delta", "gamma"
      • parameters: No parameter
    • mode: "zaxis + alpha=beta"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "mu", "omega", "delta", "gamma"
      • parameters: No parameter
    • mode: "4-circles bissecting horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "4-circles constant omega horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "4-circles constant chi horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "omega", "phi", "delta"
      • parameters: No parameter
    • mode: "4-circles constant phi horizontal"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "omega", "chi", "delta"
      • parameters: No parameter
    • mode: "lifting detector mu"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "mu", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting detector omega"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "omega", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting detector chi"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "chi", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting detector phi"
      • axes (read) : "mu", "omega", "chi", "phi", "delta", "gamma"
      • axes (write): "phi", "delta", "gamma"
      • parameters: No parameter

PETRA3 P23 4C

Axes:

  • "omega_t": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, -1.0] axis
  • "gamma": rotation around the [0.0, 0.0, -1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector_vertical"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write): "omega_t", "mu", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_omega_t"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write): "omega_t", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_mu"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "bissector_horizontal"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write): "omega_t", "mu", "gamma"
      • parameters: No parameter
    • mode: "psi_constant"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write): "omega_t", "mu", "gamma", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [0.0]: k coordinate of the reference plan
        • l2 [0.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "omega_t", "mu"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "omega_t", "mu", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)

PETRA3 P23 6C

Axes:

  • "omega_t": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, -1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "chi": rotation around the [-1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, 1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, -1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_omega_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_chi_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "phi", "delta"
      • parameters: No parameter
    • mode: "constant_phi_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_phi"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "phi", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_omega"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "lifting_detector_mu"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "double_diffraction_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "bissector_horizontal"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "omega", "chi", "phi", "gamma"
      • parameters: No parameter
    • mode: "double_diffraction_horizontal"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "mu", "chi", "phi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [0.0]: k coordinate of the reference plan
        • l2 [0.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "psi_constant_horizontal"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "constant_mu_horizontal"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "chi", "phi", "gamma"
      • parameters: No parameter
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi_vertical"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write): "omega", "chi", "phi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "omega_t", "mu", "omega", "chi", "phi", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL CRISTAL K4C

Axes:

  • "komega": rotation around the [0.0, -1.0, 0.0] axis
  • "kappa": rotation around the [0.0, -0.6427876096865394, -0.766044443118978] axis
  • "kphi": rotation around the [0.0, -1.0, 0.0] axis
  • "tth": rotation around the [0.0, -1.0, 0.0] axis
  • "dtx": rotation around the [1.0, 0.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters: No parameter
    • mode: "constant_omega"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • omega [0.0]: the freezed value
    • mode: "constant_chi"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • chi [0.0]: the freezed value
    • mode: "constant_phi"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "double_diffraction"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant"
      • axes (read) : "komega", "kappa", "kphi", "tth", "dtx"
      • axes (write): "komega", "kappa", "kphi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "eulerians":
    • pseudo axes:
      • "omega" : omega equivalent for a four circle eulerian geometry
      • "chi" : chi equivalent for a four circle eulerian geometry
      • "phi" : phi equivalent for a four circle eulerian geometry
    • mode: "eulerians"
      • axes (read) : "komega", "kappa", "kphi"
      • axes (write): "komega", "kappa", "kphi"
      • parameters:
        • solutions [1.0]: (0/1) to select the first or second solution

SOLEIL MARS

Axes:

  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "chi": rotation around the [-1.0, 0.0, 0.0] axis
  • "phi": rotation around the [0.0, 0.0, 1.0] axis
  • "tth": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_omega"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "chi", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_chi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "phi", "tth"
      • parameters: No parameter
    • mode: "constant_phi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "tth"
      • parameters: No parameter
    • mode: "double_diffraction"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write): "omega", "chi", "phi", "tth"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
    • mode: "q"
      • axes (read) : "tth"
      • axes (write): "tth"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "omega", "chi", "phi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "omega", "chi", "phi", "tth"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL NANOSCOPIUM ROBOT

Axes:

  • "rz": rotation around the [0.0, 0.0, -1.0] axis
  • "rs": rotation around the [0.0, 1.0, 0.0] axis
  • "rx": rotation around the [-1.0, 0.0, 0.0] axis
  • "r": parameter
  • "delta": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, -1.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "lifting detector rz"
      • axes (read) : "rz", "rs", "rx", "r", "delta", "gamma"
      • axes (write): "rz", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting detector rs"
      • axes (read) : "rz", "rs", "rx", "r", "delta", "gamma"
      • axes (write): "rs", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting detector rx"
      • axes (read) : "rz", "rs", "rx", "r", "delta", "gamma"
      • axes (write): "rx", "delta", "gamma"
      • parameters: No parameter

SOLEIL SIRIUS KAPPA

Axes:

  • "mu": rotation around the [0.0, 0.0, -1.0] axis
  • "komega": rotation around the [0.0, -1.0, 0.0] axis
  • "kappa": rotation around the [0.0, -0.6427876096865394, -0.766044443118978] axis
  • "kphi": rotation around the [0.0, -1.0, 0.0] axis
  • "delta": rotation around the [0.0, 0.0, -1.0] axis
  • "gamma": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "bissector_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters: No parameter
    • mode: "constant_omega_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • omega [0.0]: the freezed value
    • mode: "constant_chi_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • chi [0.0]: the freezed value
    • mode: "constant_phi_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "lifting_detector_kphi"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "kphi", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting_detector_komega"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "delta", "gamma"
      • parameters: No parameter
    • mode: "lifting_detector_mu"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "mu", "delta", "gamma"
      • parameters: No parameter
    • mode: "double_diffraction_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "bissector_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "mu", "komega", "kappa", "kphi", "delta"
      • parameters: No parameter
    • mode: "constant_phi_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "mu", "komega", "kappa", "kphi", "delta"
      • parameters:
        • phi [0.0]: the freezed value
    • mode: "constant_kphi_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "mu", "komega", "kappa", "delta"
      • parameters: No parameter
    • mode: "double_diffraction_horizontal"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "mu", "komega", "kappa", "kphi", "delta"
      • parameters:
        • h2 [1.0]: h coordinate of the second diffracting plan
        • k2 [1.0]: k coordinate of the second diffracting plan
        • l2 [1.0]: l coordinate of the second diffracting plan
    • mode: "psi_constant_vertical"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
        • psi [0.0]: expected angle between the reference and the diffraction plans
    • mode: "constant_incidence"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "delta", "gamma"
      • parameters:
        • x [1.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
        • incidence [0.0]: expected incidence of the incoming beam \(\vec{k_i}\) on the surface.
        • azimuth [90.0]: expected azimuth
  • "eulerians":
    • pseudo axes:
      • "omega" : omega equivalent for a four circle eulerian geometry
      • "chi" : chi equivalent for a four circle eulerian geometry
      • "phi" : phi equivalent for a four circle eulerian geometry
    • mode: "eulerians"
      • axes (read) : "komega", "kappa", "kphi"
      • axes (write): "komega", "kappa", "kphi"
      • parameters:
        • solutions [1.0]: (0/1) to select the first or second solution
  • "psi":
    • pseudo axes:
      • "psi" : angle between the reference vector and the diffraction plan
    • mode: "psi_vertical_soleil_sirius_kappa"
      • axes (read) : "mu", "komega", "kappa", "kphi", "delta", "gamma"
      • axes (write): "komega", "kappa", "kphi", "gamma"
      • parameters:
        • h2 [1.0]: h coordinate of the reference plan
        • k2 [1.0]: k coordinate of the reference plan
        • l2 [1.0]: l coordinate of the reference plan
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "mu", "komega", "kappa", "kphi"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "mu", "komega", "kappa", "kphi", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL SIRIUS TURRET

Axes:

  • "basepitch": rotation around the [0.0, 1.0, 0.0] axis
  • "thetah": rotation around the [0.0, 0.0, -1.0] axis
  • "alphay": rotation around the [0.0, 1.0, 0.0] axis
  • "alphax": rotation around the [1.0, 0.0, 0.0] axis
  • "delta": rotation around the [0.0, 0.0, -1.0] axis
  • "gamma": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "lifting_detector_thetah"
      • axes (read) : "basepitch", "thetah", "alphay", "alphax", "delta", "gamma"
      • axes (write): "thetah", "delta", "gamma"
      • parameters: No parameter
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "basepitch", "thetah", "alphay", "alphax"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "basepitch", "thetah", "alphay", "alphax", "delta", "gamma"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL SIXS MED1+2

Axes:

  • "pitch": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "pitch_fixed"
      • axes (read) : "pitch", "mu", "gamma", "delta"
      • axes (write): "mu", "gamma", "delta"
      • parameters: No parameter
    • mode: "delta_fixed"
      • axes (read) : "pitch", "mu", "gamma", "delta"
      • axes (write): "pitch", "mu", "gamma"
      • parameters: No parameter
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "pitch", "mu"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "pitch", "mu", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [0.0]: the y coordinate of the surface \(\vec{n}\)
        • z [1.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL SIXS MED2+2

Axes:

  • "beta": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "mu_fixed"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write): "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "reflectivity"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write): "mu", "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "emergence_fixed"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write): "mu", "omega", "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
        • emergence [0.0]: expected emergence of the outgoing beam \(\vec{k_f}\) from the surface \(\vec{n}\).
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "beta", "mu", "omega"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL SIXS MED2+3

Axes:

  • "beta": rotation around the [0.0, -1.0, 0.0] axis
  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis
  • "eta_a": rotation around the [-1.0, 0.0, 0.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "mu_fixed"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "gamma_fixed"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "mu", "omega", "delta"
      • parameters: No parameter
    • mode: "emergence_fixed"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "mu", "omega", "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
        • emergence [0.0]: expected emergence of the outgoing beam \(\vec{k_f}\) from the surface \(\vec{n}\).
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "beta", "mu", "omega"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

SOLEIL SIXS MED2+3 v2

Axes:

  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis
  • "eta_a": rotation around the [-1.0, 0.0, 0.0] axis

Engines:

  • Global parameters:
    • "eta_a_rotation" [0.0]: rotation of the detector (zaxis-like)
  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "mu_fixed"
      • axes (read) : "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "omega", "gamma", "delta"
      • parameters: No parameter
    • mode: "gamma_fixed"
      • axes (read) : "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "mu", "omega", "delta"
      • parameters: No parameter
    • mode: "emergence_fixed"
      • axes (read) : "mu", "omega", "gamma", "delta", "eta_a"
      • axes (write): "mu", "omega", "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
        • emergence [0.0]: expected emergence of the outgoing beam \(\vec{k_f}\) from the surface \(\vec{n}\).
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "beta", "mu", "omega"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "beta", "mu", "omega", "gamma", "delta"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

TwoC

Axes:

  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "tth": rotation around the [0.0, -1.0, 0.0] axis

Engines:

ZAXIS

Axes:

  • "mu": rotation around the [0.0, 0.0, 1.0] axis
  • "omega": rotation around the [0.0, -1.0, 0.0] axis
  • "delta": rotation around the [0.0, -1.0, 0.0] axis
  • "gamma": rotation around the [0.0, 0.0, 1.0] axis

Engines:

  • "hkl":
    • pseudo axes:
      • "h" : h coordinate of the diffracting plan
      • "k" : k coordinate of the diffracting plan
      • "l" : l coordinate of the diffracting plan
    • mode: "zaxis"
      • axes (read) : "mu", "omega", "delta", "gamma"
      • axes (write): "omega", "delta", "gamma"
      • parameters: No parameter
    • mode: "reflectivity"
      • axes (read) : "mu", "omega", "delta", "gamma"
      • axes (write): "mu", "omega", "delta", "gamma"
      • parameters: No parameter
  • "q2":
    • pseudo axes:
      • "q" : the norm of \(\vec{q}\)
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "q2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "qper_qpar":
    • pseudo axes:
      • "qper" : perpendicular component of \(\vec{q}\) along the normal of the sample surface
      • "qpar" : parallel component of \(\vec{q}\)
    • mode: "qper_qpar"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "tth2":
    • pseudo axes:
      • "tth" : the \(2 \theta\) angle
      • "alpha" : angle of the projection of \(\vec{q}\) on the \(yOz\) plan and \(\vec{y}\)
    • mode: "tth2"
      • axes (read) : "gamma", "delta"
      • axes (write): "gamma", "delta"
      • parameters: No parameter
  • "incidence":
    • pseudo axes:
      • "incidence" : incidence of the incomming beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "incidence"
      • axes (read) : "mu", "omega"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)
  • "emergence":
    • pseudo axes:
      • "emergence" : incidence of the outgoing beam.
      • "azimuth" : azimuth of the sample surface (projection of \(\vec{n}\) on the \(yOz\) plan
    • mode: "emergence"
      • axes (read) : "mu", "omega", "delta", "gamma"
      • axes (write):
      • parameters:
        • x [0.0]: the x coordinate of the surface \(\vec{n}\)
        • y [1.0]: the y coordinate of the surface \(\vec{n}\)
        • z [0.0]: the z coordinate of the surface \(\vec{n}\)

4. Developpement

Getting hkl

To get hkl, you can download the last stable version from sourceforge or if you want the latest development version using git or msysgit on Windows system and do:

git clone git://repo.or.cz/hkl.git

or:

git clone http://repo.or.cz/r/hkl.git (slower)

Building hkl

To build a minimal hkl library you need:

First you need to generate the autotools files via

./autogen.sh

Then you can compile the minimal library with thses commands

./configure --disable-gui
make
sudo make install

If you want also the gui part, you need one more dependency.

./configure
make
sudo make install

To enable the anticollision system you need to activate the hkl3d library and a few more dependencies.

./configure --enable-hkl3d
make
sudo make install

If you want to work on the documentation, you need the extra:

On Debian/Ubuntu, you just need to install:

sudo apt-get install emacs dvipng emacs-goodies-el org-mode
./configure --enable-gtk-doc
make
make html

Nevertheless, if you do not want to build the documentation, you can do:

./configure --disable-hkl-doc

Hacking hkl

Bug reporting

You can find the bug tracker here libhkl

  • Debian/Ubuntu:

    reportbug hkl
    
  • Other OS:

    You just need to send an email

Providing patches

You can send your patch to Picca Frédéric-Emmanuel using git and git-email.

Here is a minimalist example of the workflow to prepare and send patches for integration into the hkl library. Suppose you want to add a new feature, you need first to create a new branch from the next one:

git checkout -b my-next next

hack, hack:

git commit -a

more hacks:

git commit -a

Now that your new feature is ready, you can send by email your work using git format-patch for review:

git format-patch origin/next

which will generate a bunch of 0001\_xxx, 0002\_xxx, … patches

Then you can configure git send-email in order to send the patches for review.

git config sendemail.to "picca@synchrotron-soleil.fr"

and send then with this command:

git send-email 0001-xxx.patch, 0002-xxx.patch, ...

If it does not work, you can use your usual email software and send these generated patches to the author.

Howto's

Add a diffractometer

To add a new diffractometer, you just need to copy the hkl/hkl-engine-template.c into hkl/hkl-engine-INSTITUT-BEAMLINE-INSTRUMENT.c where you replace the upper case with the appropriate values.

The template file is compiled during the build process to ensure that it is always valid.

Then you just need to follow the instruction found in the template. If you need some precision about the process, do not hesitate to contact the main author.

Do not forget also to add this new file into hkl/Makefile.am with other diffractometers in the hkl_c_sources variable (please keep the alphabetic order).

Work on the documentation

The documentation system is written with org-mode, and the babel extension which allow to introspect the library and generate part of the documentation using the hkl library. Python code is executed during the build process to generate the Diffractometer section of the documentation. To work on the doc and test the embedded python code, it is necessary to setup a few environment variables and start emacs with the right LD_LIBRARY_PATH. In order to simplify the process a make target was written. You just need to type:

cd Documentation
make doc-edit

and start to contribute.

If you do not have emacs, you can nevertheless contribute by editing the Documentation/hkl.org.in file which is text only.

The most expected contributions are for now:

  • English correctness
  • a nicer css

5. Bindings

The hkl library uses the gobject-introspection to provide automatic binding for a few languages.

Python

You can test the binding directly from the source directory with these commandes if ipython is installed.

cd tests/bindings
make ipython

Then you have the Hkl module preloaded into the ipython environment.

hkl computation:

As you can see there are four available solutions.

Let's compute an hkl trajectory and select the first solution.

If we look at the three other solutions, we can see that there is a problem of continuity at the begining of the trajectory.

Hey, what is happening with theses solutions! Let's look closely to real numbers. The last column is the distance to the diffractometer current position. This distance is for now expressed like this:

\(\sum_{axes} \left|\text{current position} - \text{target position}\right|\)

[0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0
[0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718
[0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718
[0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718

[0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612
[0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188
[0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723
[0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205

[0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235
[0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288
[0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726
[0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098

[0.0, 114.39338605351007, 21.85448296702796, -97.074145033719, 0.0, 62.93506298693471] 0.218163667981
[0.0, -128.54167683157993, 21.85448296702796, -97.07414574435087, 0.0, -62.93506298693471] 6.59846359365
[0.0, -51.45832316842005, -21.85448296702796, 97.07414574435087, 0.0, 62.93506298693471] 6.93673746356
[0.0, 65.60661394648993, -21.85448296702796, 97.074145033719, 0.0, -62.93506298693471] 7.03385205725

[0.0, 113.28316795475283, 28.583837575232764, -99.29953499008337, 0.0, 65.16540747008955] 0.21459359225
[0.0, -131.88223933078322, 28.583837575232764, -99.29953638594702, 0.0, -65.16540747008955] 6.69038531388
[0.0, -48.11776066921677, -28.583837575232764, 99.29953638594702, 0.0, 65.16540747008955] 7.18296350386
[0.0, 66.71683204524717, -28.583837575232764, 99.29953499008337, 0.0, -65.16540747008955] 7.37556986959

[0.0, 112.56286877075006, 34.90573305321372, -101.42496979586187, 0.0, 67.97568017857415] 0.209053830457
[0.0, -135.4128111996365, 34.90573305321372, -101.42497263302461, 0.0, -67.97568017857415] 6.81174779784
[0.0, -44.58718880036348, -34.90573305321372, 101.4249726330246, 0.0, 67.97568017857415] 7.41581162393
[0.0, 67.43713122924994, -34.90573305321372, 101.42496979586187, 0.0, -67.97568017857415] 7.7353201851

[0.0, 112.2291126083182, 40.78594007247402, -103.43941832567457, 0.0, 71.33706722449408] 0.202280147961
[0.0, -139.10795451001587, 40.78594007247402, -103.43942357602316, 0.0, -71.33706722449408] 6.96173845391
[0.0, -40.89204548998411, -40.78594007247402, 103.43942357602312, 0.0, 71.33706722449408] 7.63358787543
[0.0, 67.7708873916818, -40.78594007247402, 103.43941832567457, 0.0, -71.33706722449408] 8.10986069093

[0.0, 112.27578927291766, 46.214916130901734, -105.33741042812996, 0.0, 75.22640762217479] 0.196576175748
[0.0, -142.95061850160724, 46.214916130901734, -105.3374188005596, 0.0, -75.22640762217479] 7.13962155618
[0.0, -37.04938149839278, -46.214916130901734, 105.33741880055959, 0.0, 75.22640762217479] 7.83557762281
[0.0, 67.72421072708234, -46.214916130901734, 105.33741042812996, 0.0, -75.22640762217479] 8.49706672677

[0.0, 112.697137434232, 51.201667684695856, -107.11797492933192, 0.0, 79.63023536264535] 0.202327153157
[0.0, -146.9330984641471, 51.201667684695856, -107.11798610058318, 0.0, -79.63023536264535] 7.34491897177
[0.0, -33.0669015358529, -51.201667684695856, 107.11798610058317, 0.0, 79.63023536264535] 8.02185610877
[0.0, 67.30286256576798, -51.201667684695856, 107.11797492933192, 0.0, -79.63023536264535] 8.89597005568

[0.0, 113.49085964586432, 55.76762791023837, -108.78347437395287, 0.0, 84.54867879242364] 0.208455586312
[0.0, -151.05782007465257, 55.76762791023837, -108.78348605483542, 0.0, -84.54867879242364] 7.57761473366
[0.0, -28.942179925347414, -55.76762791023837, 108.78348605483538, 0.0, 84.54867879242364] 8.19307323084
[0.0, 66.50914035413568, -55.76762791023837, 108.78347437395287, 0.0, -84.54867879242364] 9.30675279514

[0.0, 114.6614608037443, 59.941489465646214, -110.3385360479293, 0.0, 90.00000081324956] 0.215562935229
[0.0, -155.33854118146962, 59.941489465646214, -110.33854432979601, 0.0, -89.99999918675044] 7.83839602383
[0.0, -24.661458818530395, -59.941489465646214, 110.33854432979601, 0.0, 90.00000081324956] 8.3502621071
[0.0, 65.3385391962557, -59.941489465646214, 110.3385360479293, 0.0, -89.99999918675044] 9.7307712883

As you can see for the first point of the trajectory, the 2nd, 3rd and 4th solution have identical distances to the current position of the diffractometer, so they are un-ordered:

[0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0
[0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718
[0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718
[0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718

Then the problem arises with the second and third solution. You can see some sort of reorganisation of the solutions. 2 -> 3, 3 -> 4 and 4 -> 2 then the order will stick unchanged until the end of the trajectory. This is because the distance is computed relatively to the current position of the diffractometer:

[0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612
[0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188
[0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723
[0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205

[0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235
[0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288
[0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726
[0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098

Warning

When you compute a trajectory, start from a valid position (the starting point must be the real first point of your trajectory) then use only the closest solution for the next points of the trajectory. (first solution of the geometries list)

6. Releases

5.1.7 <2026-02-16 lun.>

Tests

  • fixes typo when checking for arch (arm64 and ppc64el)

5.1.6 <2026-02-16 lun.>

Tests

  • updated the sha256 for the CIRPAD detector on numerous architectures. It i snow possible to skip these test or an architecture by using the NULL sha256.

5.1.5 <2026-02-13 ven.>

Binoculars-ng (Haskell program)

  • Build with ghc 9.10 (Debian unstable)

Ghkl (Gui)

  • add toggled buttons in order to display bullet internal and/or openGL model. It helps when debuging collision issues.

Hkl (C-library)

  • Added the SOLEIL CRISTAL K4C diffractometer.

5.1.4 <2026-01-20 mar.>

Build system

  • It is now possible to gives a CABALFLAGS on the command line. The haskell code was instrumented to support a new option useThreaded. This options is activated by default, but some architecture do not supporte threading, so in order to allow build and test on these architectures, is is possible to call configure like this.

    ./configure CABALFLAGS="-f -useThreaded"

  • remove old ICA files, used by the old maven build system.

Binoculars (C-library)

  • Added support for double images.
  • Added the `hkl_binoculars_detectors_2d_img_load` in order to load rigaku img files. For now only uint16_t images.
  • Added the Rigaku XSPA 1M detector (RigakuXspa1M).
  • fixed the polarisation correction.
  • switch the photons array to float in order to deal with small corrections. (polarisation)
  • limit the stereo projection to the north pole.

Binoculars-ng (Haskell program)

  • dispatcher.ncores = 0 mean: use all capabilities of the CPU hardware. The default remains equal to `4` if this property is not defined.
  • Projections
    • 'q_thetax_phix' -> latitude and longitude of q with qx as reference.
    • 'q_thetay_phiy' -> latitude and longitude of q with qy as reference.
    • 'q_thetaz_phiz' -> latitude and longitude of q with qz as reference.
  • DataSource
    • better error message when we do not find the data's. It display the faulty DataSourcePaths.
    • When opening a datafile, display the real DataSource of the DataFrame.
  • DataSource Image
    • support for double image from hdf5 files.
    • Added a constructor in order to read the Rigaku images. `DataSourcePath'Image'Img (Detector Hkl DIM2) (DataSourcePath Attenuation) Text Scannumber`
    • Added a new constructor for dummy images. DataSourcePath'Image'Dummy.

      this is usefull if you want to obtain a cube with the intensity corrections (polarisation) . Just set all the image pixels values to 1.0 and voilà.

Documentation

  • Updated thanks to Didier Weirmeille from the ESRF

Hkl3D (Anticollision)

  • switch from the g3d un-maintained library to assimp in order to read model files.
  • full rewrite of the configure file parser. (it should be more robust now).

Gui

  • migrated from gtk3 to gtk4.

Tests

  • binoculars-ng detectors tests are using sha256 in order to check mask and coordinates integrity. If you change a detector definition you need to update the sha256 fingerprint in the hkl-binoculars_t.c file.

    example of a failure:

    detector 9 fingerpring: 5c747478f67ad54485bc3502c825bff41c0934c94a0160179909c483d75f541a , expected: 49885be2c9cfea697b8f6a6e0c00f9dec687760a8b4cfdb4eda94af1014322ce not ok 3 - mask_get

5.1.3 <2025-01-15 mer.>

Lib binoculars

  • it is now possible to mask a ring of n pixels around each module. Most of the times these pixel's statistics are bad.

Binoculars-ng

  • Added float64 support for masks
  • It is possible to define a fall back for mask location with this syntax. `my_first_mask.npy | my_second_mask.npy`

5.1.0 <2024-10-15 mar.>

General

  • 5.x runtime can be co-installed with the 4.x series.
  • hkl.h contain all the Public API.
  • A clear separation between the public and private API was achieved, in order to propose a Long Time Support of the 5.x series.
  • c-tap-hardness library was embeded to provide the unit test framework.
  • gobject-instrospection provide the binding support. Look at this page for more informations.
  • Documentation was generated with org-mode and asymptote for the figures.
  • New diffractometers added
    • APS POLAR thanks to Pete R. Jemian <jemian@anl.gov>.
    • E4CH (eulerian 4 circles horizontal) geometry.
    • MARS beamline (SOLEIL) eulerian 4 circles vertical geometry.
    • SOLEIL SIRIUS KAPPA
    • SOLEIL SIRIUS TURRET
  • New Pseudo Axes engines.
    • qper_qpar
  • A not yet public hkl3d library used only by the gui allow to compute (Bullet) and display (OpenGL) collision for model described using the COLLADA file format.
  • all private symbols are now hidden.

Binoculars-ng

  • Added this new program in order to project 2D Detectors images in the hkl reciprocal space, qxqyqz, etc… It support for now a bunch of Soleil beamlines experiments (all SIXS geometries, MARS, CRISTAL and DIFFABS).
  • make it compile with ghc 9.6
  • Added support for mask per scan.

Buildsystem

  • add a –disable-hkl3d flag to avoid hkl3d library compilation.
  • replace the –enable-ghkl with a –disable-gui.
  • use ./configure –help for all the options

Gui

  • Rewriten using Gtk instead of Gtkmm, in order to minimise the required dependencies.
  • Added a 3D view to display diffractometers and collisions.
  • Added the K6C 3D model.

Bindings

  • Provide the garantie via unit tests that the python API will be stable during all the 5.x lifetime.
  • For other languages look at here.

5.0.0.3381 <2023-11-21 mar.>

  • fix for real the HklLattice segfault <2023-11-21 mar.>
  • added the [qx_qy|qx_qz|qy_qz]_timestamp custom projection to binoculars-ng <2023-11-20 lun.>
  • added the q_sampleaxis_timestamp custom projection to binoculars-ng <2023-11-17 ven.>
  • fix the segfault when trying to create a non valid HklLattice <2023-11-17 ven.>

5.0.0.2661 <2020-10-02 ven.>

Only finite float values are allow when setting an HklParameter value or range.

When using hkl_parameter_value_set or hkl_parameter_min_max_set functions it is not allowed to use the float NaN, -Inf, +Inf value.

use python3 instead of python2 for unit tests

In order to prepare the removal of python2 for Debian 11, we switched the unit test. The remaining part is during the build of the documentation. The best would be to report a bug against emacs in order to set python3 as default python interpreter.

Added the Soleil Nanoscopium robot setup.

5.0.0.2456 <2018-02-22 jeu.>

add emergence on all e4c diffractometers <2017-03-16 jeu.>

The emergence pseudo axis was added to SOLEIL MARS and E4CV

Fix for multiarch (headers) <2016-05-04 mer.>

The ccan_config.h generated file is arch specific. It is then necessary to install this file under /usr/include/<triplet> on Debian like systems. This way it will be possible to co-installa 32/64 bit version of hkl, or to do cross-compilation (arm on x86_64, etc…)

Fix the FTBFS with the new bullet 2.86.1 version <2017-08-13 dim.>

In order to update the internal structures of Hkl3DObject (the is-colliding member), we were using a callback which became un-effective with this new version of bullet. The logic was rewritten in order to be much more efficient using the manifold informations. Now we iterate on Hkl3DObject object only once (n) complexity instead of (n²) with the previous one.

Added "SOLEIL SIXS MED2+3 v2" geometry <2019-03-29 ven.>

This diffractometer contains a global HklEngineList parameter in order to activate or not the rotation of the Detector. A new public API was added in order to deal with these parameters.

const darray_string *hkl_engine_list_parameters_names_get(const HklEngineList *self);

const HklParameter *hkl_engine_list_parameter_get(const HklEngineList *self, const char *name,
                                                  GError **error);

int hkl_engine_list_parameter_set(HklEngineList *self,
                                  const char *name, const HklParameter *parameter,
                                  GError **error);

void hkl_engine_list_parameters_values_get(const HklEngineList *self,
                                           double values[], size_t n_values,
                                           HklUnitEnum unit_type);

int hkl_engine_list_parameters_values_set(HklEngineList *self,
                                          double values[], size_t n_values,
                                          HklUnitEnum unit_type, GError **error);

And also available via the Python binding.

engines = factory.create_new_engine_list()

# get parameters names
names = engines.parameters_names_get()

# get the parameters values
values = engines.parameters_values_get(Hkl.UnitEnum.USER)

# set the parameters values
engines.parameters_values_set(values, Hkl.UnitEnum.USER)

5.0.0.2080 <2016-04-27 mer.>

HklEngine <2016-01-20 mer.>

emergence_fixed for the SOLEIL SIX MED 2+2 geometry.

HklVector <2016-02-09 mar.>

The hkl_vector_init method is now public.

HklParameter <2016-02-25 jeu.>

At the end of the computation all solutions are filtered in order to check that they are valid (min < value < range). BUT for a rotation axis this check was instead (min < value % 2pi < max).

HklGeometry <2016-04-20 mer.>

Add hkl_geometry_[sample/detector]_rotation_get method. It is now possible to get the sample or the detector rotation expressed as a HklQuaternion.

qr = geometry.sample_rotation_get(sample)
qd = geometry.detector_rotation_get(detector)

HklQuaternion <2016-04-20 mer.>

Add hkl_quaternion_to_matrix in order to convert a HklQuaternion into a HklMatrix. Then you just need to convert this HklMatrix into a numpy array when used from the python binding

def hkl_matrix_to_numpy(m):
    M = empty((3, 3))
    for i in range(3):
        for j in range(3):
            M[i, j] = m.get(i, j)
    return M


M = hkl_matrix_to_numpy(q.to_matrix())

Soleil Sirius Turret <2016-04-26 mar.>

Add the basepitch axis which rotate around \(\vec{y}\) in mrad.

4.99.99.1955 <2015-07-15 mer.>

Add the ccan_config.h public header. This header is generated with the ccan configurator program.

4.99.99.1950 <2015-07-07 mar.>

Fix an FTBFS observed on the sparc arch

4.99.99.1949 <2015-07-03 ven.>

HklInterval <2015-07-03 ven.>

hkl_interval_cmp was wrong. Now the comparison is done between HKL_EPSILON and the distance between minimum and maximum. This problem was triggered first on ppc64el architecture.

PATH_MAX <2015-07-03 ven.>

Replace getcwd called by get_current_dir_path instead in order to avoid PATH_MAX which is not available on hurd.

4.99.99.1946 <2015-06-30 mar.>

HklEngine

  • "emergence" <2015-06-22 lun.>

    Add a new emergence engine which contains only one pseudo axis.

    • emergence the outgoing beam emergence from the sample's surface.
    • azimuth the sample's surface azimuth.

4.99.99.1940 <2015-05-04 lun.>

HklLattice add an hkl_lattice_volume_get

volume = hkl_lattice_volume_get(lattice);

HklEngine

  • "nrj, sample, … dependencies" <2015-03-24 mar.>

    Add the hkl_engine_dependencies_get method which return if the HklEngine depends of the axes, the energy, or the sample. the possible values are stored in the HklEngineDependencies enum.

    dependencies = hkl_engine_dependencies_get(engine);
    if (dependencies & HKL_ENGINE_DEPENDENCIES_ENERGY) {
            ...
    }
    if (dependencies & HKL_ENGINE_DEPENDENCIES_SAMPLE) {
            ...
    }
    ...
    
  • "tth2" <2015-04-03 ven.>

    Add a new hkl engine which contains two pseudo axes.

    • tth two times the diffraction angle \(\theta\)
    • alpha the azimuth of q in the zOy plan.
  • "incidence" <2015-04-21 mar.>

    Add a new incidence engine which contain only one pseudo axis.

    • incidence the incoming beam incidence on the sample surface.
    • azimuth the sample surface azimuth.
  • hkl_engine_parameter_set <2015-05-04 lun.>

    Fix a bug and expose the method in the binding.

  • general
    • use #define AXIS "axis_name" in all the code to set the axes names at only one place. <2015-04-23 jeu.>

HklLattice expose in the binding the _x_get/set methods <2015-03-24 mar.>

Now you can use hkl_lattice_x_get where x=a, b, c, alpha, beta, gamma in the bindings.

a = lattice.a_get()
lattice.a_set(a)

HklSampleReflection expose the flag_get/set and geometry_get/set method <2015-03-24 mar.>

It is now possible to change the geometry stored in a reflection via the bindings.

flag = reflection.flag_get()
reflection.flag_set(flag)

geometry = reflection.geometry_get()
geometry.axes_values_set([omega, chi, phi, ...])
reflection.geometry_set(geometry)

4.0.4 UNRELEASED

  • add the SOLEIL SIXS MED2+2 diffractometer
    • engine: hkl
      • mode: reflectivity.
    • engine: qper_qpar
  • add the SOLEIL MARS diffractometer
    • engine: qper_qpar
  • add the PETRA3 P09 EH2 diffractometer
    • engine: qper_qpar
  • modified E6C
    • engine: qper_qpar
    • add modes : hkl psi_constant_horizontal, constant_mu_horizontal
  • K6C
    • engine hkl:
      • add the constant_incidence mode
    • engine: qper_qpar
  • add the sphinx documentation

4.0.3 <2010-06-06 dim.>

  • remove the usage.c file to avoid a GPL2-GPL3+ incompatibility
  • update the documentation
  • fix warning catched by clang

4.0.2 <2010-06-01 mar.>

  • add the ghkl manpage and .desktop file
  • fix the ghkl quit menuitem bugs

4.0.1 <2010-05-10 lun.>

  • fix a few ghkl bugs (.ui files installation)
  • add a –enable-ghkl=[yes,no] flag to allow compiling the gui interface
  • do not forgot to link ghkl against gsl.
  • display by default the preference panel of ghkl.

4.0.0 <2010-04-14 mer.>

  • add the autotools buildsystem and remove all other systems.
  • add a GUI ghkl for testing purpose based on gtkmm.
  • add the GNU info doc
  • add the gtk-doc to document the api (work in progress)
  • new structure for the HklDetector (prepare for 2D detectors)
  • HklGeometryConfig shared between all equivalent HklGeometries.
  • fix for 64 bits computers runtime error.
  • add the GError class to report calculation errors (not yet used)
  • new way to set the UB matrix of a sample (hkl_sample_set_UB).
  • new ZAxis geometry
    • mode zaxis
    • mode reflectivity (mu = gamma)

3.0.1 <2009-10-23 ven.>

  • add the psi_constant mode to the e4cv, e6c, k4cv and k6c geometries. (thanks teresa)
  • upgrade the user guide to explain how to add a mode.
  • the horizontal modes are also valid if omega = +-PI. (e6c, k6c)
  • remove geometries with an invalid range from the list of solutions.

3.0.0 <2009-07-15 mer.>

  • Rewrote from scratch in C with the GSL library.
    • now most of pseudo axes modes are numeric. So a 6 circles mode is now a real 6 circles mode.
  • Eulerian 4 circles
    • PseudoAxisEngine "hkl": "h", "k", "l"
      • Mode "bissector"
      • Mode "constant_omega"
      • Mode "constant_chi"
      • Mode "constant_phi"
      • Mode "double_diffraction"
    • PseudoAxisEngine "psi": "psi"
      • Mode "psi"
  • Kappa 4 circles
    • PseudoAxisEngine "hkl": "h", "k", "l"
      • Mode "bissector"
      • Mode "constant_omega"
      • Mode "constant_chi"
      • Mode "constant_phi"
      • Mode "double_diffraction"
    • PseudoAxisEngine "psi": "psi"
      • Mode "psi"
    • PseudoAxisEngien "eulerians": "omega", "chi", "phi"
      • mode "eulerians"
  • Eulerian 6 circles
    • PseudoAxisEngine "hkl": "h", "k", "l"
      • Mode "bissector_vertical"
      • Mode "constant_omega_vertical"
      • Mode "constant_chi_vertical"
      • Mode "constant_phi_vertical"
      • Mode "double_diffraction_vertical"
      • Mode "lifting_detector"
      • Mode "bissector_horizontal"
      • Mode "double_diffraction_horizontal"
    • PseudoAxisEngine "psi": "psi"
      • Mode "psi"
  • Kappa 6 circles
    • PseudoAxisEngine "hkl": "h", "k", "l"
      • Mode "bissector_vertical"
      • Mode "constant_omega_vertical"
      • Mode "constant_chi_vertical"
      • Mode "constant_phi_vertical"
      • Mode "double_diffraction_vertical"
      • Mode "lifting_detector"
      • Mode "bissector_horizontal"
      • Mode "constant_phi_horizontal"
      • Mode "constant_kphi_horizontal"
      • Mode "double_diffraction_horizontal"
    • PseudoAxisEngine "psi": "psi"
      • Mode "psi"
    • PseudoAxisEngien "eulerians": "omega", "chi", "phi"
      • mode "eulerians"

2.3.0 <2007-01-24 mer.>

  • Refactoring of the sample part.
    • It is now possible to create different kind of samples easily.
      • MonoCrystal type.
  • Diffractometers:
    • Eulerian 6 Circles.
    • kappa 4 Circles Vertical.
  • Refactoring of the PseudoAxe part.
    • Derived PseudoAxe can be created from an already existing PseudoAxe if the Geometry conversion exist.
    • Better related PseudoAxes (ex Eulerians on a Kappa)
    • The PseudoAxe is just a interface, computation is done by the PseudoAxeEngine.
    • Eulerian 4 Circles Vertical
      • "th2th" : derived from the twoC
      • "q2th" : derived from the twoC
      • "q" : derived from the twoC
    • kappa 4 Circles Vertical
      • "omega", "chi", "phi" : eulerian 4 circles Vertical pseudoAxes.
      • "th2th" : derived from the twoC
      • "q2th" : derived from the twoC
      • "q" : derived from the twoC
      • "psi" : derived from the Eulerian 4 Circlers Vertical.
    • Eulerian 6 Circles:
      • "tth" : 2 * theta
      • "q" : 2 * tau * sin(theta) / lambda
      • "psi" : derived from the Eulerian 4 Circlers Vertical.
    • Kappa6C
      • "omega", "chi", "phi" : derived from the Kappa 4 Circles Vertical.
      • "tth" derived from the Eulerian6C.
      • "q" derived from the Eulerian6C.
      • "psi" : derived from the Eulerian 4 Circlers Vertical.
  • Refactoring of the Modes.
    • Derived Mode can be created from an already existing Mode if the Geometry conversion exist.
    • all Eulerian 4 Circles on the kappa4C, Eulerian6c and Kappa6C diffractometers.

2.2.0 <2006-06-19 lun.>

  • Diffractometers:
    • twoC Vertical.
    • Eulerian 4 Circles Vertical.
    • Kappa 6 Circles.
  • PseudoAxes
    • twoC
      • "th2th": omega - 2theta (domega = d2theta / 2)
      • "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda
      • "q" : 2 * tau * sin(theta) / lambda
    • Eulerian 4 Circles Vertical
      • "th2th": omega - 2theta (domega = d2theta / 2)
      • "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda
      • "q" : 2 * tau * sin(theta) / lambda
      • "psi" : Rotation of the sample oaround the Q vector.
  • Modes
    • twoC
      • "symetric" (omega = theta, 2theta = 2 * theta)
      • "fix incidence" (omega = free, 2theta = 2 * theta)
    • Eulerian 4 circles:
      • "Bissector"
      • "Delta Theta"
      • "Constant Omega"
      • "Constant Chi"
      • 'Constant Phi"
    • Kappa6C
      • all Eulerian 4 Circles modes.

7. Todo

hkl

TODO ESRF BM28 PSIC

We need the XMaS/BM28 diffractometer to be fully integrated within the hkl library used within BLISS. There are modes missing, such as fixed incidence (or fixed exit) calculations not supported in the 20 "Diffractometers" already implemented. We need all of the modes already implemented within E6C with a redefinition of the angles (delta, eta, chi, phi, nu, mu)(in this order of appearance), plus the additional modes in order to calculate (H,K,L) positions with fixed (grazing) incident angles in both horizontal and vertical (sample surface) geometries.

The XMaS/BM28 diffractometer follows (exactly) the convention and geometry of Hoydoo You's paper attached. Fig. 1 in the paper is the XMaS/BM28 geometry. The geometry is also called 4S + 2D (4 sample rotations plus 2 detector rotations). The vertical 2theta is delta, supported by the horizontal 2theta nu. The sample sits on phi, sitting on chi, sitting on eta, sitting on mu. In Frédéric-Emmanuel Picca's laboratory frame where x is along the beam (y in the paper), y is horizontal perpendicular to the beam (z in the paper) and z is vertical (x in the paper), with all the angles at 0, we have the following:

  • delta-axis along -y, i.e. (0 -1 0)
  • eta-axis along -y, i.e. (0 -1 0)
  • chi-axis along +x, i.e. (1 0 0)
  • phi-axis along -y, i.e. (0 -1 0)
  • nu-axis along +z, i.e. (0 0 1)
  • mu-axis along +z, i.e. (0 0 1)

I will come back with the grazing incidence geometries implemented within SPEC that need to be implemented here.

TODO HklEngine q/q2

Fix all these engines… This engine takes into account only the gamma and delta axes. so diffractometers with 3 axes for the detector are wrong. It would be nice to take into account all the detector holder AND the position of the detecteor on the diffractometer arms (for now the detector is always on the last axis).

TODO HklSource

Create a parameter for the wavelength. This is just internally for the futur trajectory system, so no need to change the signature of hkl_geometry_vawelength get/set

TODO SOLEIL SIRIUS KAPPA

Investigation of a problem saw on Sirius Kappa geometry. The idea is to compute a trajectory from \([0, 0, 1]\) to \([0, 0, 6]\) on a \(GaAs\) sample.

Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,40.795148838481424,134.08834052117254,-55.57809067120416,-2.23369e-2,14.824478553649875]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 40.795148838481424 (Range (-180.0) 180.0),Parameter "kappa" 134.08834052117254 (Range (-180.0) 180.0),Parameter "kphi" (-55.57809067120416) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 14.824478553649875 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" 2.1481674408578524e-8 (Range (-1.0) 1.0),Parameter "k" 6.392014061803081e-8 (Range (-1.0) 1.0),Parameter "l" 1.0000000132413767 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 7.412239314132745 (Range (-180.0) 180.0),Parameter "chi" 89.72020738176312 (Range (-180.0) 180.0),Parameter "phi" 91.03899980444716 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.5513657893786 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 1.1114190632688228 (Range 0.0 1.0),Parameter "alpha" 89.91560430137815 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 1.1114162413072137 (Range (-1.0) 1.0),Parameter "qpar" 2.5045470426602284e-3 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 14.824495004588014 (Range (-180.0) 180.0),Parameter "alpha" 89.91560430137815 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 7.414401593159588 (Range (-180.0) 180.0),Parameter "azimuth" 89.78541978058817 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 7.410055570443473 (Range (-180.0) 180.0),Parameter "azimuth" 89.78541978058817 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])]
Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,47.97247473743512,134.654265266118,124.92415016158583,-2.23369e-2,29.904632884360968]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 47.97247473743512 (Range (-180.0) 180.0),Parameter "kappa" 134.654265266118 (Range (-180.0) 180.0),Parameter "kphi" 124.92415016158583 (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 29.904632884360968 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" (-1.3839931497468412e-9) (Range (-1.0) 1.0),Parameter "k" (-4.913404854447784e-10) (Range (-1.0) 1.0),Parameter "l" 2.000000003360829 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 14.95231642186499 (Range (-180.0) 180.0),Parameter "chi" 89.9575990161042 (Range (-180.0) 180.0),Parameter "phi" 271.9039918460157 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" (-26.325999847139332) (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 2.2228381008394895 (Range 0.0 1.0),Parameter "alpha" 89.96116221471468 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 2.222832456913507 (Range (-1.0) 1.0),Parameter "qpar" (-5.009095284686147e-3) (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 29.90464045486422 (Range (-180.0) 180.0),Parameter "alpha" 89.96116221471468 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 14.952081490954424 (Range (-180.0) 180.0),Parameter "azimuth" 90.09480115642252 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 14.952481262345229 (Range (-180.0) 180.0),Parameter "azimuth" 90.09480115642252 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])]
Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,56.25907471532187,133.92128004831832,-55.45556970293517,-2.23369e-2,45.53873596992208]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 56.25907471532187 (Range (-180.0) 180.0),Parameter "kappa" 133.92128004831832 (Range (-180.0) 180.0),Parameter "kphi" (-55.45556970293517) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 45.53873596992208 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" 8.37724528421826e-9 (Range (-1.0) 1.0),Parameter "k" 2.018612859089285e-8 (Range (-1.0) 1.0),Parameter "l" 2.999999983141756 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 22.76936798418434 (Range (-180.0) 180.0),Parameter "chi" 89.64969149765572 (Range (-180.0) 180.0),Parameter "phi" 91.0547235659273 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.50191592522592 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 3.334257126919726 (Range 0.0 1.0),Parameter "alpha" 89.97807925598289 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 3.334248661038927 (Range (-1.0) 1.0),Parameter "qpar" 7.513639271725189e-3 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 45.53874024285007 (Range (-180.0) 180.0),Parameter "alpha" 89.97807925598289 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 22.771374111123095 (Range (-180.0) 180.0),Parameter "azimuth" 89.8380685773065 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 22.767244039797937 (Range (-180.0) 180.0),Parameter "azimuth" 89.8380685773065 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])]
Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,64.64191214924969,133.78682078017752,-55.41938838621407,-2.23369e-2,62.132688461209455]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 64.64191214924969 (Range (-180.0) 180.0),Parameter "kappa" 133.78682078017752 (Range (-180.0) 180.0),Parameter "kphi" (-55.41938838621407) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 62.132688461209455 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" 9.177457430250849e-9 (Range (-1.0) 1.0),Parameter "k" 2.5693823994163015e-8 (Range (-1.0) 1.0),Parameter "l" 3.9999999929703476 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 31.06634423136446 (Range (-180.0) 180.0),Parameter "chi" 89.5927920859556 (Range (-180.0) 180.0),Parameter "phi" 91.00504369590071 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.51996903181714 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 4.44567618639551 (Range 0.0 1.0),Parameter "alpha" 89.9881895320358 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 4.445664898550648 (Range (-1.0) 1.0),Parameter "qpar" 1.0018187400499787e-2 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 62.13269076337942 (Range (-180.0) 180.0),Parameter "alpha" 89.9881895320358 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 31.068363501362125 (Range (-180.0) 180.0),Parameter "azimuth" 89.83747231179481 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 31.064152026450454 (Range (-180.0) 180.0),Parameter "azimuth" 89.83747231179481 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])]
Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,73.83399863752925,133.64586701159254,-55.35712475482595,-2.23369e-2,80.33702663350934]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 73.83399863752925 (Range (-180.0) 180.0),Parameter "kappa" 133.64586701159254 (Range (-180.0) 180.0),Parameter "kphi" (-55.35712475482595) (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 80.33702663350934 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" 2.7577312257761425e-9 (Range (-1.0) 1.0),Parameter "k" 7.650403950118726e-9 (Range (-1.0) 1.0),Parameter "l" 4.999999999622215 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 40.168513316578995 (Range (-180.0) 180.0),Parameter "chi" 89.53300638651663 (Range (-180.0) 180.0),Parameter "phi" 90.9773899242238 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" 154.50326819560394 (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 5.557095242340622 (Range 0.0 1.0),Parameter "alpha" 89.99619673890915 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 5.557081132533362 (Range (-1.0) 1.0),Parameter "qpar" 1.2522734784728349e-2 (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 80.33702737486469 (Range (-180.0) 180.0),Parameter "alpha" 89.99619673890915 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 40.17045932119529 (Range (-180.0) 180.0),Parameter "azimuth" 89.82724901343079 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 40.16632251480728 (Range (-180.0) 180.0),Parameter "azimuth" 89.82724901343079 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])]
Geometry SOLEIL SIRIUS KAPPA (Source 1.4586370000000007e-9 m) (fromList [-0.5193202,84.086619565407,134.11156620489382,125.37371040144704,-2.23369e-2,101.43713587367031]) (Just [Parameter "mu" (-0.5193202) (Range (-180.0) 180.0),Parameter "komega" 84.086619565407 (Range (-180.0) 180.0),Parameter "kappa" 134.11156620489382 (Range (-180.0) 180.0),Parameter "kphi" 125.37371040144704 (Range (-180.0) 180.0),Parameter "delta" (-2.23369e-2) (Range (-180.0) 180.0),Parameter "gamma" 101.43713587367031 (Range (-180.0) 180.0)])
[Engine "hkl" [Parameter "h" 8.392762843275724e-10 (Range (-1.0) 1.0),Parameter "k" 2.459154264227675e-9 (Range (-1.0) 1.0),Parameter "l" 6.0000000015375905 (Range (-1.0) 1.0)] (Mode "bissector_vertical" []),Engine "eulerians" [Parameter "omega" 50.718567936651276 (Range (-180.0) 180.0),Parameter "chi" 89.72999512595882 (Range (-180.0) 180.0),Parameter "phi" 272.0056587726913 (Range (-180.0) 180.0)] (Mode "eulerians" [Parameter "solutions" 1.0 (Range 0.0 1.0)]),Engine "psi" [Parameter "psi" (-26.58708882570157) (Range (-180.0) 180.0)] (Mode "psi_vertical_soleil_sirius_kappa" [Parameter "h2" 1.0 (Range (-1.0) 1.0),Parameter "k2" 1.0 (Range (-1.0) 1.0),Parameter "l2" 1.0 (Range (-1.0) 1.0)]),Engine "q2" [Parameter "q" 6.668514293021504 (Range 0.0 1.0),Parameter "alpha" 90.00451897705055 (Range (-180.0) 180.0)] (Mode "q2" []),Engine "qper_qpar" [Parameter "qper" 6.6684973612522915 (Range (-1.0) 1.0),Parameter "qpar" (-1.5027281967821613e-2) (Range (-1.0) 1.0)] (Mode "qper_qpar" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "tth2" [Parameter "tth" 101.43713499280318 (Range (-180.0) 180.0),Parameter "alpha" 90.00451897705055 (Range (-180.0) 180.0)] (Mode "tth2" []),Engine "incidence" [Parameter "incidence" 50.71877816056822 (Range (-180.0) 180.0),Parameter "azimuth" 90.20844936572345 (Range (-180.0) 180.0)] (Mode "incidence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)]),Engine "emergence" [Parameter "emergence" 50.71800112341318 (Range (-180.0) 180.0),Parameter "azimuth" 90.20844936572345 (Range (-180.0) 180.0)] (Mode "emergence" [Parameter "x" 0.0 (Range (-1.0) 1.0),Parameter "y" 1.0 (Range (-1.0) 1.0),Parameter "z" 0.0 (Range (-1.0) 1.0)])

As we can see the phi and kphi motor switch from time to time to another solution which is at around 180° of the other solutions.

sirius-s.svg

Figure 7: plot the [0,0,1] -> [0,0,6] trajectory from two different starting point and different step size.

sirius-m.svg

Figure 8: plot the [0,0,1] -> [0,0,6] idem previous figure but move the diffractometer.

sirius-m-zoom.svg

Figure 9: zoom on the 2 solutions.

traj_n.svg

Figure 10: plot the [0,0,1] -> [0,0,6] for different number of steps

TODO [0/2] PetraIII

  • TODO computation problem

    Dear Teresa,

    Using the prruptest.txt ubmatrix I see that the value of psi is offset by 45 degrees. I expect it to be 0 degrees when azimuth reference vector is 0 0 1 that is along the beam. See below the returned numbers. This might have to do with the definition of the beam axis in the controller. Otherwise now when I change reference vector by 90 degrees the computed value is changed by 90 degrees. That is a progress. Can you contact Frederic and ask him about this ?

    Best regards,

    Sonia

    See below p09/door/haspp09.01 [9]: setaz 1 0 0

    p09/door/haspp09.01 [10]: wh

    Engine: hkl

    Mode: psi_constant_vertical

    H K L = 0.00000 3.00605 -0.00000 Ref = 1.00000 0.00000 0.00000 Azimuth (Psi - calculated) = -45.00005 Azimuth (Psi - set) = 0.00000 Wavelength = 2.07957

    Delta Theta Chi Phi Mu Gamma 45.77575 22.88783 90.00000 182.85400 0.00000 -0.00000

    p09/door/haspp09.01 [11]: setaz 0 0 1

    p09/door/haspp09.01 [12]: wh

    Engine: hkl

    Mode: psi_constant_vertical

    H K L = 0.00000 3.00605 -0.00000 Ref = 0.00000 0.00000 1.00000 Azimuth (Psi - calculated) = -135.00005 Azimuth (Psi - set) = 0.00000 Wavelength = 2.07957

    Delta Theta Chi Phi Mu Gamma 45.77575 22.88783 90.00000 182.85400 0.00000 -0.00000

    where:

    Azimuth (Psi - calculated) is the value of the pseudomotor psi. Azimuth (Psi - set) is the value set in the parameter psi of the current mode.

    Hi Frederic,

    This is the UB matrix:

    Best regards,

    Sonia

    Created at 2015-01-21 12:35

    Crystal prruptest

    Wavelength 2.07957463938

    A 8.03656 B 8.03656 C 8.03656 Alpha 90.0 Beta 90.0 Gamma 90.0

    R0 0 0.0 1.0 0.0 0 1 0.0 14.8979 90.0 182.854 0.0 29.7959 R1 1 1.0 0.0 1.0 0 1 0.0 14.8979 0.0 182.854 0.0 29.7959

    Mode psi_constant_vertical

    PsiRef 0.0 0.0 1.0

    U00 -0.580 U01 0.000 U02 0.525 U10 0.000 U11 0.782 U12 -0.000 U20 -0.525 U21 -0.000 U22 -0.580

    Ux 179.999952315 Uy 42.14605 Uz -179.999932647

    SaveDirectory home/p09user/crystals

  • TODO another question

    J'ai un probleme avec la position que le controlleur calcule avec la matrice UB que nous t'avons envoye. See sequence of emails echanges avec Teresa.

    >>>> I am at 0 3.00605 0 with phi -182 and psi calculated is -135 >>>> When I freeze psi at -135 and type ca 0 3.00605 0 the controller >> should return to me the positions at which I am. But no he tells me that I >> have to go to 178 degrees in phi that is turning by 360 degrees.

    Est-ce un probleme avec la trajectoire selectionnee ? Est-ce qu'il est possible de definir des cut-points comme dans spec avec ta librairie ?

TODO [2/4] HklParameter

  • [X] method to use min/max to check for the validity
  • [X] add a method to get the axis_v and quaternion of the HklAxis this method will return NULL if this is not relevant. hkl_parameter_axis_v_get and hkl_parameter_quaternion_get
  • [ ] degenerated an axis is degenerated if its position have no effect on the HklPseudoAxis calculus. Add a degenerated member to the axis. that way it would be possible to check a posteriori for this degenerescencence.
  • [ ] Add a description for each parameters.

TODO This will help for the documentation and the gui.

TODO HklGeometryList different method to help select a solution.

this select solution can depend on the geometry for example the kappa axis must be in one side of the plane.

TODO add a fit on the Hklaxis offsets.

TODO API to put a detector and a sample on the Geometry.

TODO HklSample

  • TODO unit test: hkl_sample_affine.

    Check this: lattice=1.540000;1.540000;1.540000;90.000000;90.000000;90.000000;0;0;0;0;0;0 uxuyuz=0.000000;0.000000;0.000000 reflection=1.540000;0.159010;1.256718;0.796660;1;0.000000;0.000000;0.000000;0.000000;0.000000 reflection=1.540000;0.206208;0.342357;-0.080346;1;0.000000;0.000000;0.000000;0.000000;0.000000 reflection=1.540000;0.206208;0.342357;-0.080346;1;0.000000;0.000000;0.000000;0.000000;0.000000

    A, B, C, Alpha, Beta, Gamma, Ux, Uy, Uy: 17764892.133, 5793679.092, 15733785.198, 179.997, 179.999,452408725.23, -575727594.04, -1913661011.01 (affine) 1rst finetness

    all the reflections are non collinear the affine method should warn the user about this.

TODO HklEngine "zone"

TODO HklEngine "custom"

for now this pseudoaxis let you select the axis you want to use for the computation.

TODO HklEngine "q/q2" add a "reflectivity" mode

This mode should have the surface as parameters and the incident angle is equal to the emergence angle.

TODO create a macro to help compare two real the right way

fabs(a-b) < epsilon * max(1, abs(a), abs(b))

TODO add an hkl_sample_set_lattice_unit()

TODO SOLEIL SIXS

  • DONE find the right solutions.   zaxis

    The cosinus and sinus properties are not enough to find the solution expected by the users. The idea is to use the Ewalds construction to generate a valid solution from the first one obtain numerically. The basic idea is to rotate the hkl vector around the last axis of the sample holder until it intersect again the Ewalds sphere. Then we just need to fit the detector position. This way the solution can be entirely generic (not geometry specific). Nevertheless it is necessary to propose this only for the hkl pseudo axes. I will add this special feature in the Mode. So it will be possible to add thoses special cases easily.

  • TODO Add the DEP diffractometer geometry

    This diffractometer is a Newport one based on the kappa 6 circles ones. But instead of a kappa head, they use an Hexapod head. This head can be put horizontally or vertically.

TODO generalisation of the z-axis hkl solver

first we need the degenerated member of the Axis. thaht way it could be possible to find the last non degenerated axis for the detector fit.

TODO investigate the prigo geometry.

TODO augeas/elektra for the plugin configure part.

TODO logging

  • TODO [1/2] add in a few methods.
    • [X] hkl_pseudo_axes_values_set
    • [ ] hkl_sample_affine
  • TODO gir logging

    It would be nice to generate the library logging using the .gir information. So instead of writing the logging code for each method, it would be better to have a generic method for this purpose.

  • TODO parsable logging information.

    A parsable logging format would help to setup some re-play unit test. This way it could help during the developpement process (modification of the hkl internals) to be confident that computation are ok.

TODO performances

  • Investigate liboil to speed calculation (in HklVector, HklMatrix and HklQuaternion)
  • Avoid to call hkl_engine_prepare_internal at each computation.

documentation

TODO [1/6] rewrite documentation in org-mode

  • [-] embedding code into the org file.
    • [-] [1/4] python.
      • [X] auto generation of the diffractometer descriptions.
      • [ ] trajectories explanations.
      • [ ] trajectories tests.
      • [ ] unit tests output?
    • [ ] asymptote.
  • [X] need to check if templates could be generated using the hkl python binding for all diffractometer geometries.
  • [ ] need to add a description for the diffractometer, the mode, the parameters.
  • [ ] need a nice css for the generated doc.
  • [ ] check if org-info.js could be usefull.
  • [ ] add documentation explaining the sector-cuts a la hkl.

TODO bug with asymptote on macbook

picca@cush:~/src/repo.or.cz/hkl$ export MESA_GL_VERSION_OVERRIDE=4.5
picca@cush:~/src/repo.or.cz/hkl$ make

gives

/usr/bin/asy -config "" -d -render=4 -f png -o 3S+1D.png 3S+1D.asy
0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES

GL Compile error
1: #version 300
2: #extension GL_ARB_uniform_buffer_object : enable
3: #define MATERIAL
4: #define ORTHOGRAPHIC
5: #define Nlights 3
6: #define Nmaterials 48
7: #define WIDTH
8: in vec3 position;
9:
10: #ifdef NORMAL
11:
12: #ifndef ORTHOGRAPHIC
13: uniform mat4 viewMat;
14: out vec3 ViewPosition;
15: #endif
16:
17: uniform mat3 normMat;
18: in vec3 normal;
19: out vec3 Normal;
20:
21: #endif
22:
23: #ifdef MATERIAL
24: in int material;
25: flat out int materialIndex;
26: #endif
27:
28: #ifdef COLOR
29: in vec4 color;
30: out vec4 Color;
31: #endif
32:
33: #ifdef WIDTH
34: in float width;
35: #endif
36:
37: uniform mat4 projViewMat;
38:
39: void main()
40: {
41:   vec4 v=vec4(position,1.0);
42:   gl_Position=projViewMat*v;
43: #ifdef NORMAL
44: #ifndef ORTHOGRAPHIC
45:   ViewPosition=(viewMat*v).xyz;
46: #endif
47:   Normal=normalize(normal*normMat);
48: #endif
49:
50: #ifdef COLOR
51:   Color=color;
52: #endif
53:
54: #ifdef WIDTH
55:   gl_PointSize=width;
56: #endif
57:
58: #ifdef MATERIAL
59:   materialIndex=material;
60: #endif
61: }
/usr/bin/asy -config "" -d -render=4 -f png -o B_b3_y.png B_b3_y.asy
0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES
GL Compile error
1: #version 300
2: #extension GL_ARB_uniform_buffer_object : enable
3: #define MATERIAL
4: #define ORTHOGRAPHIC
5: #define Nlights 3
6: #define Nmaterials 48
7: #define WIDTH
8: in vec3 position;
9:
10: #ifdef NORMAL
11:
12: #ifndef ORTHOGRAPHIC
13: uniform mat4 viewMat;
14: out vec3 ViewPosition;
15: #endif
16:
17: uniform mat3 normMat;
18: in vec3 normal;
19: out vec3 Normal;
20:
21: #endif
22:
23: #ifdef MATERIAL
24: in int material;
25: flat out int materialIndex;
26: #endif
27:
28: #ifdef COLOR
29: in vec4 color;
30: out vec4 Color;
31: #endif
32:
33: #ifdef WIDTH
34: in float width;
35: #endif
36:
37: uniform mat4 projViewMat;
38:
39: void main()
40: {
41:   vec4 v=vec4(position,1.0);
42:   gl_Position=projViewMat*v;
43: #ifdef NORMAL
44: #ifndef ORTHOGRAPHIC
45:   ViewPosition=(viewMat*v).xyz;
46: #endif
47:   Normal=normalize(normal*normMat);
48: #endif
49:
50: #ifdef COLOR
51:   Color=color;
52: #endif
53:
54: #ifdef WIDTH
55:   gl_PointSize=width;
56: #endif
57:
58: #ifdef MATERIAL
59:   materialIndex=material;
60: #endif
61: }
/usr/bin/asy -config "" -d -render=4 -f png -o B_a.png B_a.asy
0:1(10): error: GLSL 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 3.30, 1.00 ES, and 3.00 ES

[0/3] gui

  • [ ] change the color of fitparameter cells if they differ from the current sample values.
  • [ ] check if a REPL could be integrated to provide an autocad like interface.
  • [ ] add tooltips using hkl_parameter_description_get for the pseudo axes and the mode parameters.

hkl3d

TODO add a method to find the 3D models in the right directories.

packaging

TODO add a .spec file for rpm generation.

TODO binoculars-ng

TODO remove usage of repa.

This package is no longer provided by Debian. Try to find a replacement for the Shape.

TODO [mars] Exclude data based on the actuator position.

For exemple remove all data where phi > 268 and phi < 272 and phi > 88 phi < 92 /nfs/ruche/mars-soleil/com-mars/2024_Run1/20232102/binoculars/config_qxqyqz.ini for scan 127-135.

Author: Picca Frédéric-Emmanuel Wermeille Didier

Created: 2026-02-16 lun. 17:10

Validate

hkl-5.1.7/Documentation/Makefile.in0000664000175000017500000005672415144640450016163 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Documentation ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_html_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = hkl.org CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(htmldir)" DATA = $(dist_html_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/hkl.org.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = api figures sphinx AM_LDFLAGS = $(top_builddir)/hkl/libhkl.la dist_html_DATA = hkl.html EXTRA_DIST = hkl-default.el css/style.css CLEANFILES = hkl.html all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): hkl.org: $(top_builddir)/config.status $(srcdir)/hkl.org.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_htmlDATA: $(dist_html_DATA) @$(NORMAL_INSTALL) @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done uninstall-dist_htmlDATA: @$(NORMAL_UNINSTALL) @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(htmldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_htmlDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_htmlDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_htmlDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-dist_htmlDATA .PRECIOUS: Makefile hkl.html: hkl.org $(srcdir)/hkl-default.el env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) $< --batch -q --no-site-file --load $(srcdir)/hkl-default.el -f org-html-export-to-html --debug-init --kill doc-edit: env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) hkl.org.in -q --no-site-file --load $(srcdir)/hkl-default.el doc-show: hkl.html sensible-browser $(builddir)/hkl.html doc-publish: hkl.html env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) $< --batch -q --no-site-file --load $(srcdir)/hkl-default.el -f org-publish-all --debug-init --kill .PHONY: doc-edit doc-show # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/Documentation/hkl-default.el0000664000175000017500000000620215134203532016615 0ustar00piccapicca;;; hkl-default.el --- Hkl specific emacsen startup code. ;; Copyright (C) 2003-2019, 2024, 2026 Synchrotron SOLEIL ;; L'Orme des Merisiers Saint-Aubin ;; BP 48 91192 GIF-sur-YVETTE CEDEX ;; Maintainer: Picca Frédéric-Emmanuel ;; Keywords: hkl ;; The hkl library is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; The hkl library is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with the hkl library. If not, see . ;; ;;; Commentary: ;; This file contains startup code needed by all the various flavors ;; of Emacs for a hkl library documentation generation. ;;; Code: (require 'ox-publish) (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(inhibit-startup-screen t) '(c-default-style (quote ((c-mode . "linux") (c++-mode . "linux") (other . "gnu")))) '(org-babel-load-languages (quote ((latex . t) (python . t) (emacs-lisp . t) (gnuplot . t)))) '(org-babel-python-command "python3") '(org-confirm-babel-evaluate nil) '(org-latex-listings (quote minted)) '(org-latex-minted-langs (quote ((emacs-lisp "common-lisp") (cc "c++") (cperl "perl") (shell-script "bash") (caml "ocaml") (python "python")))) '(org-latex-pdf-process (quote ("pdflatex -interaction nonstopmode --shell-escape -output-directory %o %f" "pdflatex -interaction nonstopmode --shell-escape -output-directory %o %f" "pdflatex -interaction nonstopmode --shell-escape -output-directory %o %f"))) '(org-export-with-sub-superscripts nil) '(org-src-fontify-natively t) '(org-publish-project-alist (quote (("hkl" :base-directory "." :base-extension "org" :publishing-directory "/ssh:picca@people.debian.org:~/public_html/hkl/" :publishing-function org-html-publish-to-html :headline-levels 3 :section-numbers t :with-toc t :html-head "" :html-preamble t) ("images" :base-directory "figures/" :base-extension "svg\\|jpg\\|gif\\|png" :publishing-directory "/ssh:picca@people.debian.org:~/public_html/hkl/figures/" :publishing-function org-publish-attachment) ("css" :base-directory "css/" :base-extension "css" :publishing-directory "/ssh:picca@people.debian.org:~/public_html/hkl/css/" :publishing-function org-publish-attachment) )))) (provide 'hkl-default) ;;; hkl-default ends here hkl-5.1.7/Documentation/css/0000775000175000017500000000000015144640567014701 5ustar00piccapiccahkl-5.1.7/Documentation/css/style.css0000664000175000017500000001501414677222567016562 0ustar00piccapiccabody { font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.4; color: #33333f; } code { font-family: "Inconsolata", monospace; font-size: 16px; } p>code, li>code { background-color: #eee; padding: 0.25em; } h1, h2, h3 { font-family: "Roboto Slab", Helvetica, Arial, sans-serif; } h2 { border-bottom: 1px solid #f0c; padding-bottom: 0.5em; font-size: 1.75em; } h3 { margin-top: 2em; font-size: 1.5em; } h4 { font-size: 1.25em; } h5 { font-size: 1em; } h2 code, h3 code, h4 code, h5 code, td code { font-family: inherit !important; font-size: inherit !important; } td code { font-weight: bold; } a:link, a:hover, a:visited { text-decoration: none; color: black; } a:link { background: #ff8; } a:visited { color: #666; background: #ffc; } a:link:hover, a:visited:hover { background: #ff0; } a[href^="http"] { background: #bff; } a[href^="http"]:visited { background: #dff; } a[href^="http"]:link:hover, a[href^="http"]:visited:hover { background: #0ff; } a[href^="http"]:after { content: "\21B3"; background: white; padding-left: 0.2em; } #meta { margin-top: 2em; } #table-of-contents a:link, #table-of-contents a:visited { color: black; background: transparent; } #table-of-contents { line-height: 1.2; } #table-of-contents h2 { border-bottom: 0; } #table-of-contents ul { list-style: none; padding-left:0; font-weight: normal; } #table-of-contents div>ul>li { margin-top: 1em; font-weight: bold; } #table-of-contents .tag { display: none; } #table-of-contents .todo, #table-of-contents .done { font-size: 80%; } #table-of-contents ol>li { margin-top: 1em; } table { width: 100%; } table, th, td { border: 1px solid #666; } th, td { padding: 0.5em; text-align: left; } tbody tr:nth-child(odd) { background-color: #eee; } img { max-width: 90%; } div.notice { position: relative; margin: 0 1.2em; padding: 0.25em 1em; border-left: 4px solid; } table + div.notice { margin-top: 2em; } div.notice a { background: transparent !important; border-bottom: 1px dotted; } div.notice a[href^="http"]:after { background: transparent !important; } div.notice:before { position: absolute; top: 0; right: 0; padding: 0.25em 0.5em 0; font-size: 60%; border-bottom-left-radius: 0.5em; } .notice-warning { background: #fcc; color: #600; } .notice-example { background: #def; color: #069; } .notice-info { background: #efe; color: #060; } .notice-warning a { color: #600; } .notice-example a { color: #069; } .notice-info a { color: #060; } div.notice-warning:before { content: "WARNING"; background: #c99; color: #fcc; } div.notice-example:before { content: "EXAMPLE"; background: #abc; color: #def; } div.notice-info:before { content: "INFO"; background: #9c9; color: #efe; } pre { font-family: Inconsolata; border: 0; box-shadow: none; } pre.example:before { content: "Properties"; display: block; border-bottom: 1px dotted; margin-bottom: 1em; } pre.example { background: #fec; color: #666; font-size: 0.85em; } pre { background-color: #f8f8f8; background-size: 8px 8px; background-image: linear-gradient(135deg, transparent 25%, rgba(0, 0, 0, 0.02) 25%, rgba(0, 0, 0, 0.02) 50%, transparent 50%, transparent 75%, rgba(0, 0, 0, 0.02) 75%, rgba(0, 0, 0, 0.02)); } pre.src { padding: 0.5em; } pre.src:before { display: block; position: absolute; background-color: #ccccd0; top: 0; right: 0; padding: 0.25em 0.5em; border-bottom-left-radius: 8px; border: 0; color: white; font-size: 80%; } pre.src-plantuml:before { content: "UML"; } pre.src-javascript:before { content: "JS"; } pre.src-clojure:before { content: "CLJ"; } pre.src-c:before { content: "C"; } span.org-string { color: #f94; } span.org-keyword { color: #c07; } span.org-variable-name { color: #f04; } span.org-clojure-keyword { color: #09f; } span.org-comment, span.org-comment-delimiter { color: #999; } span.org-rainbow-delimiters-depth-1, span.org-rainbow-delimiters-depth-5 { color: #666; } span.org-rainbow-delimiters-depth-2, span.org-rainbow-delimiters-depth-6 { color: #888; } span.org-rainbow-delimiters-depth-3, span.org-rainbow-delimiters-depth-7 { color: #aaa; } span.org-rainbow-delimiters-depth-4, span.org-rainbow-delimiters-depth-8 { color: #ccc; } div.figure { font-size: 0.85em; } .tag { font-family: "Roboto Slab", Helvetica, Arial, sans-serif; font-size: 11px; font-weight: normal; float: right; margin-top: 1em; background: transparent; } .tag span { background: #ccc; padding: 0 0.5em; border-radius: 0.2em; color: white; } .todo, .done { font-family: "Roboto Slab", Helvetica, Arial, sans-serif; font-weight: normal; padding: 0 0.25em; border-radius: 0.2em; } .todo { background: #f04; color: white; } .done { background: #5f7; color: white; } @media screen { h1.title { text-align: left; margin: 1em 0 0 280px; } h2 { margin-top: 3em; } #table-of-contents { position: fixed; top: 0; left: 0; padding: 2em 0 2em 2em; width: 240px; height: 100vh; font-size: 11px; background: #eee; overflow: auto; } #table-of-contents ul>li>ul>li>ul>li { display: none; } #table-of-contents h2 { margin-top: 0; } #table-of-contents code { font-size: 12px; } div.outline-2, #footnotes { margin-left: 280px; max-width: 960px; } } @media screen and (max-width: 1024px) { html, body { font-size: 14px; } #table-of-contents { display: none; } h1.title { margin-left: 5%; } div.outline-2, #footnotes { margin-left: 5%; max-width: 90%; } } @media print { body { color: black; } @page { margin: 25mm; } h2, h3 { page-break-before: always; margin-top: 0; } table { page-break-inside: avoid; } a:visited { color: black; background: #ff8; } a[href^="http"]:visited { background: #bff; } div.notice:before { display: none; } }hkl-5.1.7/Documentation/Makefile.am0000664000175000017500000000160715134202130016124 0ustar00piccapiccaSUBDIRS=api figures sphinx AM_LDFLAGS = $(top_builddir)/hkl/libhkl.la dist_html_DATA=hkl.html hkl.html: hkl.org $(srcdir)/hkl-default.el env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) $< --batch -q --no-site-file --load $(srcdir)/hkl-default.el -f org-html-export-to-html --debug-init --kill EXTRA_DIST=hkl-default.el css/style.css CLEANFILES=hkl.html doc-edit: env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) hkl.org.in -q --no-site-file --load $(srcdir)/hkl-default.el doc-show: hkl.html sensible-browser $(builddir)/hkl.html doc-publish: hkl.html env GI_TYPELIB_PATH=$(top_builddir)/hkl \ $(LIBTOOL) --mode=execute -dlopen $(AM_LDFLAGS) \ $(EMACS) $< --batch -q --no-site-file --load $(srcdir)/hkl-default.el -f org-publish-all --debug-init --kill .PHONY: doc-edit doc-show hkl-5.1.7/Documentation/api/0000775000175000017500000000000015144640567014662 5ustar00piccapiccahkl-5.1.7/Documentation/api/hkl-sections.txt0000664000175000017500000004247115144640567020036 0ustar00piccapicca
alignof ALIGNOF
array_size ARRAY_SIZE
autodata AUTODATA_TYPE AUTODATA autodata_get autodata_free AUTODATA_VAR__ AUTODATA_VAR_ autodata_get_section AUTODATA_MAGIC autodata_make_table
build_assert BUILD_ASSERT BUILD_ASSERT_OR_ZERO
ccan_config CCAN_COMPILER CCAN_CFLAGS CCAN_OUTPUT_EXE_CFLAG HAVE_CCAN HAVE_32BIT_OFF_T HAVE_ALIGNOF HAVE_ASPRINTF HAVE_ATTRIBUTE_COLD HAVE_ATTRIBUTE_CONST HAVE_ATTRIBUTE_DEPRECATED HAVE_ATTRIBUTE_NONNULL HAVE_ATTRIBUTE_RETURNS_NONNULL HAVE_ATTRIBUTE_SENTINEL HAVE_ATTRIBUTE_PURE HAVE_ATTRIBUTE_MAY_ALIAS HAVE_ATTRIBUTE_NORETURN HAVE_ATTRIBUTE_PRINTF HAVE_ATTRIBUTE_UNUSED HAVE_ATTRIBUTE_USED HAVE_BACKTRACE HAVE_BIG_ENDIAN HAVE_BSWAP_64 HAVE_BUILTIN_CHOOSE_EXPR HAVE_BUILTIN_CLZ HAVE_BUILTIN_CLZL HAVE_BUILTIN_CLZLL HAVE_BUILTIN_CTZ HAVE_BUILTIN_CTZL HAVE_BUILTIN_CTZLL HAVE_BUILTIN_CONSTANT_P HAVE_BUILTIN_EXPECT HAVE_BUILTIN_FFS HAVE_BUILTIN_FFSL HAVE_BUILTIN_FFSLL HAVE_BUILTIN_POPCOUNT HAVE_BUILTIN_POPCOUNTL HAVE_BUILTIN_POPCOUNTLL HAVE_BUILTIN_TYPES_COMPATIBLE_P HAVE_ICCARM_INTRINSICS HAVE_BYTESWAP_H HAVE_CLOCK_GETTIME HAVE_CLOCK_GETTIME_IN_LIBRT HAVE_COMPOUND_LITERALS HAVE_FCHDIR HAVE_ERR_H HAVE_FILE_OFFSET_BITS HAVE_FOR_LOOP_DECLARATION HAVE_FLEXIBLE_ARRAY_MEMBER HAVE_GETPAGESIZE HAVE_ISBLANK HAVE_LITTLE_ENDIAN HAVE_MEMMEM HAVE_MEMRCHR HAVE_MMAP HAVE_PROC_SELF_MAPS HAVE_QSORT_R_PRIVATE_LAST HAVE_STRUCT_TIMESPEC HAVE_SECTION_START_STOP HAVE_STACK_GROWS_UPWARDS HAVE_STATEMENT_EXPR HAVE_SYS_FILIO_H HAVE_SYS_TERMIOS_H HAVE_SYS_UNISTD_H HAVE_TYPEOF HAVE_UNALIGNED_ACCESS HAVE_UTIME HAVE_WARN_UNUSED_RESULT HAVE_OPENMP HAVE_VALGRIND_MEMCHECK_H HAVE_UCONTEXT HAVE_POINTER_SAFE_MAKECONTEXT HAVE_BUILTIN_CPU_SUPPORTS HAVE_CLOSEFROM HAVE_F_CLOSEM HAVE_NR_CLOSE_RANGE HAVE_F_MAXFD
check_type check_type check_types_match
compiler COLD NORETURN PRINTF_FMT CONST_FUNCTION PURE_FUNCTION UNNEEDED NEEDED UNUSED IS_COMPILE_CONSTANT WARN_UNUSED_RESULT WARN_DEPRECATED NO_NULL_ARGS NON_NULL_ARGS RETURNS_NONNULL LAST_ARG_NULL cpu_supports
container_of container_of container_of_or_null_ container_of_or_null container_off container_of_var container_off_var
coroutine coroutine_stack COROUTINE_STK_OVERHEAD COROUTINE_MIN_STKSZ COROUTINE_STACK_MAGIC_BUF COROUTINE_STACK_MAGIC_ALLOC coroutine_stack_init coroutine_stack_alloc coroutine_stack_release coroutine_stack_check coroutine_stack_to_metadata coroutine_stack_from_metadata coroutine_stack_size COROUTINE_AVAILABLE coroutine_state coroutine_init_ coroutine_init coroutine_switch
cppmagic CPPMAGIC_NOTHING CPPMAGIC_STRINGIFY CPPMAGIC_GLUE2 CPPMAGIC_1ST CPPMAGIC_2ND CPPMAGIC_ISZERO CPPMAGIC_NONZERO CPPMAGIC_NONEMPTY CPPMAGIC_ISEMPTY CPPMAGIC_IFELSE CPPMAGIC_EVAL1 CPPMAGIC_EVAL2 CPPMAGIC_EVAL4 CPPMAGIC_EVAL8 CPPMAGIC_EVAL16 CPPMAGIC_EVAL32 CPPMAGIC_EVAL64 CPPMAGIC_EVAL128 CPPMAGIC_EVAL256 CPPMAGIC_EVAL512 CPPMAGIC_EVAL1024 CPPMAGIC_EVAL CPPMAGIC_DEFER1 CPPMAGIC_DEFER2 CPPMAGIC_MAP CPPMAGIC_2MAP CPPMAGIC_JOIN
darray darray darray_new darray_init darray_free darray_char darray_schar darray_uchar darray_short darray_int darray_long darray_ushort darray_uint darray_ulong darray_item darray_size darray_alloc darray_empty darray_append darray_prepend darray_insert darray_push darray_append_items darray_prepend_items darray_append_items_nullterminate darray_prepend_items_nullterminate darray_appends darray_prepends darray_appends_t darray_prepends_t darray_pop darray_pop_check darray_remove darray_from_items darray_from_c darray_append_string darray_append_lit darray_prepend_string darray_prepend_lit darray_from_string darray_from_lit darray_resize darray_resize0 darray_realloc darray_growalloc darray_make_room darray_next_alloc darray_foreach darray_foreach_reverse
generator generator_ generator_state_ generator_argp_ generator_rtype_ generator_new_ generator_free_ generator_t generator_declare generator_parm_ generator_parms_ generator_parms_inner_ generator_parms_outer_ generator_argfield_ generator_argstruct_ generator_arg_unpack_ generator_args_unpack_ generator_arg_pack_ generator_args_pack_ generator_def_ generator_def generator_def_static generator_yield generator_next_ generator_next generator_next_val generator_free generator_incomplete_
hkl HKL_DEPRECATED HKL_DEPRECATED_FOR HKL_TINY HKL_EPSILON HKL_DEGTORAD HKL_RADTODEG HKL_VERSION HKL_TAU HKLAPI HKL_ARG_NONNULL HKL_WARN_UNUSED_RESULT HklVector HKL_VECTOR_X HKL_VECTOR_Y HKL_VECTOR_Z HklQuaternion darray_string HklUnitDimension HklDPlaneAngle HklDLength HklUnitEnum HklUnit hkl_unit_angle_deg hkl_unit_angle_rad hkl_unit_length_nm hkl_unit_angle_mrad hkl_unit_length_mm hkl_unit_length_meter HklDetectorType HKL_GEOMETRY_LIST_FOREACH HKL_SAMPLE_REFLECTIONS_FOREACH darray_engine HklEngineCapabilities HklEngineAxisNamesGet HklEngineDependencies HklDetector HklEngine HklEngineList HklFactory HklGeometry HklGeometryList HklGeometryListItem HklLattice HklMatrix HklParameter HklSample HklSampleReflection
hkl-axis-private HklAxis HklRotationWithOrigin HklTranslation hkl_parameter_new_rotation hkl_parameter_new_rotation_with_origin hkl_parameter_new_translation
hkl-binding-private
hkl-detector-private HklDetector hkl_detector_new hkl_detector_attach_to_holder hkl_detector_compute_kf
hkl-factory-private HklFactoryGeometryFunction HklFactoryEngineListFunction HklFactory REGISTER_DIFFRACTOMETER
hkl-geometry-private HKL_HOLDER_SAMPLE_IDX HKL_HOLDER_DETECTOR_IDX HklGeometryListMultiplyFunction darray_holder HklHolderConfig HklHolder HklGeometryOperations HklGeometry hkl_geometry_sample_holder_get_real hkl_geometry_detector_holder_get_real hkl_geometry_ki_get_real hkl_geometry_kf_get_real HKL_GEOMETRY_OPERATIONS_DEFAULTS hkl_geometry_operations_defaults HKL_GEOMETRY_ERROR hkl_geometry_error_quark HklGeometryError HklGeometryList HklGeometryListItem hkl_holder_add_parameter hkl_holder_add_rotation hkl_holder_add_rotation_with_origin hkl_holder_add_translation hkl_holder_transformation_apply hkl_geometry_new hkl_geometry_init_geometry hkl_geometry_add_holder hkl_geometry_update hkl_geometry_get_axis_idx_by_name hkl_geometry_get_axis_by_name hkl_geometry_distance hkl_geometry_distance_orthodromic hkl_geometry_closest_from_geometry_with_range hkl_geometry_is_valid hkl_geometry_is_valid_range hkl_geometry_sample_holder_get hkl_geometry_detector_holder_get hkl_geometry_list_new hkl_geometry_list_new_copy hkl_geometry_list_add hkl_geometry_list_reset hkl_geometry_list_sort hkl_geometry_list_fprintf hkl_geometry_list_multiply hkl_geometry_list_multiply_from_range hkl_geometry_list_remove_invalid hkl_geometry_list_item_new hkl_geometry_list_item_new_copy hkl_geometry_list_item_free
hkl-interval-private HklInterval hkl_interval_dup hkl_interval_free hkl_interval_cmp hkl_interval_plus_interval hkl_interval_plus_double hkl_interval_minus_interval hkl_interval_minus_double hkl_interval_times_interval hkl_interval_times_double hkl_interval_divides_double hkl_interval_contain_zero hkl_interval_cos hkl_interval_acos hkl_interval_sin hkl_interval_asin hkl_interval_tan hkl_interval_atan hkl_interval_length hkl_interval_angle_restrict_symm
hkl-lattice-private HklLattice HKL_LATTICE_ERROR hkl_lattice_error_quark HklLatticeError hkl_lattice_lattice_set hkl_lattice_randomize hkl_lattice_fprintf
hkl-macros-private HKL_EULERIAN_KAPPA_SOLUTION hkl_assert hkl_error G_GNUC_PRINTF alloc_nr ALLOC_GROW NORETURN DARRAY IGNORE hkl_printbt
hkl-matrix-private HklMatrix hkl_matrix_dup hkl_matrix_init_from_euler hkl_matrix_matrix_set hkl_matrix_init_from_two_vector hkl_matrix_fprintf hkl_matrix_to_euler hkl_matrix_times_vector hkl_matrix_transpose hkl_matrix_det hkl_matrix_solve hkl_matrix_is_null hkl_matrix_div_double hkl_matrix_inv
hkl-parameter-private HklParameter HKL_PARAMETER_DEFAULTS HKL_PARAMETER_DEFAULTS_LENGTH HKL_PARAMETER_DEFAULTS_ANGLE HKL_PARAMETER_ERROR hkl_parameter_error_quark HklParameterError HklParameterOperations HKL_PARAMETER_OPERATIONS_DEFAULTS hkl_parameter_copy_real hkl_parameter_free_real hkl_parameter_init_copy_real hkl_parameter_value_get_closest_real hkl_parameter_value_set_real hkl_parameter_value_set_smallest_in_range_real hkl_parameter_randomize_real hkl_parameter_is_permutable_real hkl_parameter_is_valid_real hkl_parameter_fprintf_real hkl_parameter_axis_v_get_real hkl_parameter_quaternion_get_real hkl_parameter_transformation_cmp_real hkl_parameter_transformation_apply_real hkl_parameter_orthodromic_distance_get_real hkl_parameter_type_get_real hkl_parameter_new hkl_parameter_init_copy hkl_parameter_is_permutable hkl_parameter_value_get_closest hkl_parameter_value_set_smallest_in_range hkl_parameter_is_valid hkl_parameter_is_valid_range hkl_parameter_fprintf hkl_parameter_transformation_cmp hkl_parameter_transformation_apply hkl_parameter_orthodromic_distance_get hkl_parameter_type_get darray_parameter darray_const_parameter
hkl-pseudoaxis-auto-private HklFunction darray_function HklModeAutoInfo HKL_MODE_OPERATIONS_AUTO_DEFAULTS CHECK_NAN HKL_MODE_AUTO_INFO HKL_MODE_AUTO_INFO_WITH_PARAMS hkl_mode_auto_new hkl_mode_auto_init hkl_mode_auto_set_real HklModeAutoWithInit HKL_MODE_AUTO_WITH_INIT_ERROR hkl_mode_auto_with_init_error_quark HklModeError HKL_MODE_OPERATIONS_AUTO_WITH_INIT_DEFAULTS self hkl_mode_auto_with_init_new
hkl-pseudoaxis-common-eulerians-private hkl_engine_eulerians_new kappa_2_kappap
hkl-pseudoaxis-common-hkl-private HklEngineHkl RUBh_minus_Q hkl_is_reachable hkl_mode_get_hkl_real hkl_mode_set_hkl_real hkl_mode_initialized_set_psi_constant_vertical_real hkl_engine_hkl_new HKL_MODE_OPERATIONS_HKL_DEFAULTS HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS CONSTANT_PARAMETER PSI_CONSTANT_PARAMETERS HKL_PARAMETER_EMERGENCE_DEFAULTS HKL_PARAMETER_EMERGENCE_AZIMUTH_DEFAULTS HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS hkl_mode_hkl_emergence_fixed_new
hkl-pseudoaxis-common-private HklHklRead hkl_hkl_read HklHklWrite hkl_hkl_write HklDoubleDiffractionWrite hkl_double_diffraction_write HklPsiWrite hkl_psi_write HklEmergenceFixedWrite hkl_emergence_fixed_write
hkl-pseudoaxis-common-psi-private HklModePsi HklEnginePsi hkl_mode_psi_new hkl_engine_psi_new
hkl-pseudoaxis-common-q-private qmax hkl_engine_q_new hkl_engine_q2_new hkl_engine_qper_qpar_new
hkl-pseudoaxis-common-readonly-private HklModeIncidence hkl_mode_incidence_new hkl_engine_incidence_new hkl_mode_emergence_new hkl_engine_emergence_new SURFACE_PARAMETERS P99_PROTECT HKL_MODE_INFO_incidence_DEFAULTS HKL_MODE_INFO_emergence_DEFAULTS REGISTER_READONLY REGISTER_READONLY_INCIDENCE REGISTER_READONLY_EMERGENCE
hkl-pseudoaxis-common-tth-private hkl_engine_tth2_new HklEngineTth2
hkl-pseudoaxis-private darray_mode HklModeInfo HKL_MODE_INFO_RO HKL_MODE_INFO HKL_MODE_INFO_RO_WITH_PARAMS HKL_MODE_INFO_WITH_PARAMS HklModeOperations HKL_MODE_OPERATIONS_DEFAULTS HklMode hkl_mode_free_real hkl_mode_initialized_get_real hkl_mode_initialized_get hkl_mode_initialized_set_real hkl_mode_initialized_set hkl_mode_get_real hkl_mode_set_real hkl_mode_init hkl_mode_new hkl_mode_free HklEngineInfo HKL_ENGINE_INFO HklEngine HklEngineListInfo HKL_ENGINE_LIST_INFO_DEFAULTS HKL_ENGINE_LIST_INFO HklEngineListOperations HKL_ENGINE_LIST_OPERATIONS_DEFAULTS HklEngineList HKL_ENGINE_ERROR hkl_engine_error_quark HklEngineError set_geometry_axes hkl_engine_release HklEngineOperations HKL_ENGINE_OPERATIONS_DEFAULTS hkl_engine_free_real hkl_engine_free hkl_engine_init register_mode_parameter register_pseudo_axis hkl_engine_add_mode hkl_engine_add_geometry hkl_engine_prepare_internal hkl_engine_mode_set hkl_engine_get hkl_engine_list_post_engine_set hkl_engine_set HKL_ENGINE_LIST_ERROR hkl_engine_list_error_quark HklEngineListError hkl_engine_list_clear hkl_engine_list_free_real hkl_engine_list_post_engine_set_real hkl_engine_list_new_with_info hkl_engine_list_new hkl_engine_list_new_copy
hkl-quaternion-private hkl_quaternion_dup hkl_quaternion_free hkl_quaternion_init hkl_quaternion_init_from_vector hkl_quaternion_init_from_angle_and_axe hkl_quaternion_fprintf hkl_quaternion_cmp hkl_quaternion_minus_quaternion hkl_quaternion_times_quaternion hkl_quaternion_norm2 hkl_quaternion_conjugate hkl_quaternion_to_matrix hkl_quaternion_to_angle_and_axe
hkl-sample-private HklSample HKL_SAMPLE_ERROR hkl_sample_error_quark HklSampleError hkl_sample_fprintf HklSampleReflection HKL_SAMPLE_REFLECTION_ERROR hkl_sample_reflection_error_quark HklSampleReflectionError hkl_sample_reflection_new_copy hkl_sample_reflection_free
hkl-source-private HKL_SOURCE_DEFAULT_WAVE_LENGTH HklSource hkl_source_dup hkl_source_free hkl_source_init hkl_source_cmp hkl_source_compute_ki hkl_source_get_wavelength hkl_source_fprintf
hkl-trajectory-private darray_geometry HklTrajectoryResult hkl_trajectory_result_new hkl_trajectory_result_free hkl_trajectory_add_geometry darray_double darray_sizet HklTrajectoryStats hkl_trajectory_stats_new hkl_trajectory_stats_free hkl_trajectory_stats_add hkl_trajectory_stats_fprintf
hkl-type-builtins HKL_TYPE_UNIT_ENUM HKL_TYPE_DETECTOR_TYPE HKL_TYPE_ENGINE_CAPABILITIES HKL_TYPE_ENGINE_AXIS_NAMES_GET HKL_TYPE_ENGINE_DEPENDENCIES
hkl-types TYPE_HKL_DETECTOR TYPE_HKL_ENGINE TYPE_HKL_ENGINE_LIST TYPE_HKL_FACTORY TYPE_HKL_GEOMETRY TYPE_HKL_GEOMETRY_LIST TYPE_HKL_GEOMETRY_LIST_ITEM TYPE_HKL_LATTICE TYPE_HKL_MATRIX TYPE_HKL_PARAMETER TYPE_HKL_SAMPLE_REFLECTION TYPE_HKL_SAMPLE TYPE_HKL_UNIT TYPE_HKL_VECTOR TYPE_HKL_QUATERNION
hkl-unit-private hkl_unit_dup hkl_unit_free hkl_unit_compatible hkl_unit_factor
hkl-vector-private hkl_vector_dup hkl_vector_free hkl_vector_fprintf hkl_vector_cmp hkl_vector_is_opposite hkl_vector_add_vector hkl_vector_minus_vector hkl_vector_div_double hkl_vector_times_double hkl_vector_times_vector hkl_vector_times_matrix hkl_vector_sum hkl_vector_scalar_product hkl_vector_vectorial_product hkl_vector_angle hkl_vector_oriented_angle hkl_vector_oriented_angle_points hkl_vector_norm2 hkl_vector_normalize hkl_vector_is_colinear hkl_vector_randomize hkl_vector_randomize_vector hkl_vector_randomize_vector_vector hkl_vector_rotated_around_vector hkl_vector_rotated_quaternion hkl_vector_rotated_around_line hkl_vector_is_null hkl_vector_project_on_plan hkl_vector_project_on_plan_with_point
list list_node list_head list_check list_check_node LIST_LOC list_debug list_debug_node LIST_HEAD_INIT LIST_HEAD list_head_init list_node_init list_add_after list_add_after_ list_add list_add_ list_add_before list_add_before_ list_add_tail list_add_tail_ list_empty list_empty_ list_empty_nodebug list_empty_nocheck list_del list_del_ list_del_init list_del_init_ list_del_from list_swap list_swap_ list_entry list_top list_top_ list_pop list_pop_ list_tail list_tail_ list_for_each list_for_each_rev list_for_each_rev_safe list_for_each_safe list_next list_prev list_append_list list_append_list_ list_prepend_list list_prepend_list_ list_for_each_off_dir_ list_for_each_safe_off_dir_ list_for_each_off list_for_each_rev_off list_for_each_safe_off list_for_each_rev_safe_off list_entry_off list_head_off list_tail_off list_add_off list_del_off list_del_from_off list_node_to_off_ list_node_from_off_ list_off_ list_off_var_ list_typeof list_entry_or_null
noerr close_noerr fclose_noerr unlink_noerr free_noerr
ptr_valid ptr_valid_read ptr_valid_write ptr_valid_string ptr_valid ptr_valid_batch ptr_valid_batch_start ptr_valid_batch_read ptr_valid_batch_write ptr_valid_batch_string ptr_valid_batch_end ptr_valid_r ptr_valid_w ptr_valid_batch_r ptr_valid_batch_w ptr_valid_map PTR_VALID_ALIGNOF
ptrint ptrint_t
stamp-hkl-type-builtins
str streq strstarts strends stringify stringify_1 strcount STR_MAX_CHARS STR_MAX_CHARS_TCHECK_ cisalnum cisalpha cisascii cisblank ciscntrl cisdigit cisgraph cislower cisprint cispunct cisspace cisupper cisxdigit str_check_arg_ isalnum isalpha isascii isblank iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit strstr strchr strrchr
str_debug str_isalnum str_isalpha str_isascii str_isblank str_iscntrl str_isdigit str_isgraph str_islower str_isprint str_ispunct str_isspace str_isupper str_isxdigit str_strstr str_strchr str_strrchr
typesafe_cb typesafe_cb_cast typesafe_cb_cast3 typesafe_cb typesafe_cb_preargs typesafe_cb_postargs
hkl-5.1.7/Documentation/api/html/0000775000175000017500000000000015144640567015626 5ustar00piccapiccahkl-5.1.7/Documentation/api/html/right.png0000644000175000017500000000040515144640567017446 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8үa?MIdEr,-hAIl ry}sX6 !9#D r$-Br$G"$;WZ&!cq \`軀O=QoufIENDB`hkl-5.1.7/Documentation/api/html/hkl-hkl-interval-private.html0000664000175000017500000005606215144640567023351 0ustar00piccapicca hkl-interval-private: hkl Reference Manual

hkl-interval-private

hkl-interval-private

Types and Values

struct HklInterval

Description

Functions

hkl_interval_dup ()

HklInterval *
hkl_interval_dup (const HklInterval *self);

copy an HklInterval

[skip]


hkl_interval_free ()

void
hkl_interval_free (HklInterval *self);

delete an HklInterval

[skip]


hkl_interval_cmp ()

int
hkl_interval_cmp (const HklInterval *self,
                  const HklInterval *interval);

compare two intervals

[skip]


hkl_interval_plus_interval ()

void
hkl_interval_plus_interval (HklInterval *self,
                            const HklInterval *interval);

add two ontervals

[skip]


hkl_interval_plus_double ()

void
hkl_interval_plus_double (HklInterval *self,
                          double const d);

add to an interval a double

[skip]


hkl_interval_minus_interval ()

void
hkl_interval_minus_interval (HklInterval *self,
                             const HklInterval *interval);

substract two HklInterval

[skip]


hkl_interval_minus_double ()

void
hkl_interval_minus_double (HklInterval *self,
                           double const d);

subst a double to an HklInterval

[skip]


hkl_interval_times_interval ()

void
hkl_interval_times_interval (HklInterval *self,
                             const HklInterval *interval);

multiply two HklInterval

[skip]


hkl_interval_times_double ()

void
hkl_interval_times_double (HklInterval *self,
                           double const d);

multiply an HklInterval by a double

[skip]


hkl_interval_divides_double ()

void
hkl_interval_divides_double (HklInterval *self,
                             double const d);

divide an HklInterval by a double

[skip]


hkl_interval_contain_zero ()

int
hkl_interval_contain_zero (const HklInterval *self);

check if an HklInterval contain zero

[skip]


hkl_interval_cos ()

void
hkl_interval_cos (HklInterval *self);

compute the cosinus of an HklInterval

[skip]


hkl_interval_acos ()

void
hkl_interval_acos (HklInterval *self);

compute the arc cosinus of an HklInterval

[skip]


hkl_interval_sin ()

void
hkl_interval_sin (HklInterval *self);

compute the sin of an HklInterval

[skip]


hkl_interval_asin ()

void
hkl_interval_asin (HklInterval *self);

compute the arc sinus of an HklInterval

[skip]


hkl_interval_tan ()

void
hkl_interval_tan (HklInterval *self);

compute the tangente of an HklInterval

[skip]


hkl_interval_atan ()

void
hkl_interval_atan (HklInterval *self);

compute the arc tangente of an HklInterval

[skip]


hkl_interval_length ()

double
hkl_interval_length (const HklInterval *self);

compute the length of an HklInterval

[skip]


hkl_interval_angle_restrict_symm ()

void
hkl_interval_angle_restrict_symm (HklInterval *self);

restrict an HklInterval into -pi, pi

[skip]

Types and Values

struct HklInterval

struct HklInterval {
	double min;
	double max;
};
hkl-5.1.7/Documentation/api/html/hkl-str.html0000664000175000017500000004307215144640567020106 0ustar00piccapicca str: hkl Reference Manual

str

str

Functions

#define streq()
#define strstarts()
bool strends ()
#define stringify()
#define stringify_1()
size_t strcount ()
#define STR_MAX_CHARS()
#define STR_MAX_CHARS_TCHECK_()
bool cisalnum ()
bool cisalpha ()
bool cisascii ()
bool cisblank ()
bool ciscntrl ()
bool cisdigit ()
bool cisgraph ()
bool cislower ()
bool cisprint ()
bool cispunct ()
bool cisspace ()
bool cisupper ()
bool cisxdigit ()
#define str_check_arg_()
#define isalnum()
#define isalpha()
#define isascii()
#define isblank()
#define iscntrl()
#define isdigit()
#define isgraph()
#define islower()
#define isprint()
#define ispunct()
#define isspace()
#define isupper()
#define isxdigit()
#define strstr()
#define strchr()
#define strrchr()

Description

Functions

streq()

#define streq(a,b) (strcmp((a),(b)) == 0)

strstarts()

#define strstarts(str,prefix) (strncmp((str),(prefix),strlen(prefix)) == 0)

strends ()

bool
strends (const char *str,
         const char *postfix);

stringify()

#define stringify(expr)		stringify_1(expr)

stringify_1()

#define stringify_1(expr) #expr

strcount ()

size_t
strcount (const char *haystack,
          const char *needle);

STR_MAX_CHARS()

#define             STR_MAX_CHARS(type_or_expr)

STR_MAX_CHARS_TCHECK_()

#define             STR_MAX_CHARS_TCHECK_(type_or_expr)

cisalnum ()

bool
cisalnum (char c);

cisalpha ()

bool
cisalpha (char c);

cisascii ()

bool
cisascii (char c);

cisblank ()

bool
cisblank (char c);

ciscntrl ()

bool
ciscntrl (char c);

cisdigit ()

bool
cisdigit (char c);

cisgraph ()

bool
cisgraph (char c);

cislower ()

bool
cislower (char c);

cisprint ()

bool
cisprint (char c);

cispunct ()

bool
cispunct (char c);

cisspace ()

bool
cisspace (char c);

cisupper ()

bool
cisupper (char c);

cisxdigit ()

bool
cisxdigit (char c);

str_check_arg_()

#define             str_check_arg_(i)

isalnum()

#define isalnum(i) str_isalnum(str_check_arg_(i))

isalpha()

#define isalpha(i) str_isalpha(str_check_arg_(i))

isascii()

#define isascii(i) str_isascii(str_check_arg_(i))

isblank()

#define isblank(i) str_isblank(str_check_arg_(i))

iscntrl()

#define iscntrl(i) str_iscntrl(str_check_arg_(i))

isdigit()

#define isdigit(i) str_isdigit(str_check_arg_(i))

isgraph()

#define isgraph(i) str_isgraph(str_check_arg_(i))

islower()

#define islower(i) str_islower(str_check_arg_(i))

isprint()

#define isprint(i) str_isprint(str_check_arg_(i))

ispunct()

#define ispunct(i) str_ispunct(str_check_arg_(i))

isspace()

#define isspace(i) str_isspace(str_check_arg_(i))

isupper()

#define isupper(i) str_isupper(str_check_arg_(i))

isxdigit()

#define isxdigit(i) str_isxdigit(str_check_arg_(i))

strstr()

#define             strstr(haystack, needle)

strchr()

#define             strchr(haystack, c)

strrchr()

#define             strrchr(haystack, c)
hkl-5.1.7/Documentation/api/html/left-insensitive.png0000644000175000017500000000061315144640567021622 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8͒NQ@pds`*4@W@ A!Ԇ@6^ 5hxIH R`sQp̙339B|sKEQTK@۝΁i^~Wʆ`0TJ6TcYn6A ƀ~߱>}ǭs; lYkwr 5U= /" "uU=ɲlArDzp5I4^E+P3Ɯq_p ̥iUYp=#IENDB`hkl-5.1.7/Documentation/api/html/annotation-glossary.html0000664000175000017500000000554715144640567022542 0ustar00piccapicca Annotation Glossary: hkl Reference Manual

Annotation Glossary

I

in

Parameter for input. Default is transfer none.

O

out caller-allocates

Out parameter, where caller must allocate storage.

S

skip

Exposed in C code, not necessarily available in other languages.

T

transfer none

The data is owned by the callee, which is responsible of freeing it.

hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-q-private.html0000664000175000017500000001312415144640567025425 0ustar00piccapicca hkl-pseudoaxis-common-q-private: hkl Reference Manual

hkl-pseudoaxis-common-q-private

hkl-pseudoaxis-common-q-private

Description

Functions

qmax ()

double
qmax (double wavelength);

hkl_engine_q_new ()

HklEngine *
hkl_engine_q_new (HklEngineList *engines);

hkl_engine_q2_new ()

HklEngine *
hkl_engine_q2_new (HklEngineList *engines);

hkl_engine_qper_qpar_new ()

HklEngine *
hkl_engine_qper_qpar_new (HklEngineList *engines);
hkl-5.1.7/Documentation/api/html/api-index-full.html0000664000175000017500000057320215144640567021343 0ustar00piccapicca API Index: hkl Reference Manual

API Index

A

ALIGNOF, macro in alignof
ALLOC_GROW, macro in hkl-macros-private
alloc_nr, macro in hkl-macros-private
HKLAPI, macro in hkl
HKL_ARG_NONNULL, macro in hkl
ARRAY_SIZE, macro in array_size
hkl_assert, macro in hkl-macros-private
AUTODATA, macro in autodata
autodata_free, function in autodata
autodata_get, macro in autodata
autodata_get_section, function in autodata
AUTODATA_MAGIC, macro in autodata
autodata_make_table, function in autodata
AUTODATA_TYPE, macro in autodata
AUTODATA_VAR_, macro in autodata
AUTODATA_VAR__, macro in autodata
HklAxis, struct in hkl-axis-private

B

BUILD_ASSERT, macro in build_assert
BUILD_ASSERT_OR_ZERO, macro in build_assert

C

CCAN_CFLAGS, macro in ccan_config
CCAN_COMPILER, macro in ccan_config
CCAN_OUTPUT_EXE_CFLAG, macro in ccan_config
CHECK_NAN, macro in hkl-pseudoaxis-auto-private
check_type, macro in check_type
check_types_match, macro in check_type
cisalnum, function in str
cisalpha, function in str
cisascii, function in str
cisblank, function in str
ciscntrl, function in str
cisdigit, function in str
cisgraph, function in str
cislower, function in str
cisprint, function in str
cispunct, function in str
cisspace, function in str
cisupper, function in str
cisxdigit, function in str
close_noerr, function in noerr
COLD, macro in compiler
CONSTANT_PARAMETER, macro in hkl-pseudoaxis-common-hkl-private
CONST_FUNCTION, macro in compiler
container_of, macro in container_of
container_off, macro in container_of
container_off_var, macro in container_of
container_of_or_null, macro in container_of
container_of_or_null_, function in container_of
container_of_var, macro in container_of
COROUTINE_AVAILABLE, macro in coroutine
coroutine_init, macro in coroutine
coroutine_init_, function in coroutine
COROUTINE_MIN_STKSZ, macro in coroutine
coroutine_stack, struct in coroutine
coroutine_stack_alloc, function in coroutine
coroutine_stack_check, function in coroutine
coroutine_stack_from_metadata, function in coroutine
coroutine_stack_init, function in coroutine
COROUTINE_STACK_MAGIC_ALLOC, macro in coroutine
COROUTINE_STACK_MAGIC_BUF, macro in coroutine
coroutine_stack_release, function in coroutine
coroutine_stack_size, function in coroutine
coroutine_stack_to_metadata, function in coroutine
coroutine_state, struct in coroutine
COROUTINE_STK_OVERHEAD, macro in coroutine
coroutine_switch, function in coroutine
CPPMAGIC_1ST, macro in cppmagic
CPPMAGIC_2MAP, macro in cppmagic
CPPMAGIC_2ND, macro in cppmagic
CPPMAGIC_DEFER1, macro in cppmagic
CPPMAGIC_DEFER2, macro in cppmagic
CPPMAGIC_EVAL, macro in cppmagic
CPPMAGIC_EVAL1, macro in cppmagic
CPPMAGIC_EVAL1024, macro in cppmagic
CPPMAGIC_EVAL128, macro in cppmagic
CPPMAGIC_EVAL16, macro in cppmagic
CPPMAGIC_EVAL2, macro in cppmagic
CPPMAGIC_EVAL256, macro in cppmagic
CPPMAGIC_EVAL32, macro in cppmagic
CPPMAGIC_EVAL4, macro in cppmagic
CPPMAGIC_EVAL512, macro in cppmagic
CPPMAGIC_EVAL64, macro in cppmagic
CPPMAGIC_EVAL8, macro in cppmagic
CPPMAGIC_GLUE2, macro in cppmagic
CPPMAGIC_IFELSE, macro in cppmagic
CPPMAGIC_ISEMPTY, macro in cppmagic
CPPMAGIC_ISZERO, macro in cppmagic
CPPMAGIC_JOIN, macro in cppmagic
CPPMAGIC_MAP, macro in cppmagic
CPPMAGIC_NONEMPTY, macro in cppmagic
CPPMAGIC_NONZERO, macro in cppmagic
CPPMAGIC_NOTHING, macro in cppmagic
CPPMAGIC_STRINGIFY, macro in cppmagic
cpu_supports, macro in compiler

D

DARRAY, macro in hkl-macros-private
darray, macro in darray
darray_alloc, macro in darray
darray_append, macro in darray
darray_appends, macro in darray
darray_appends_t, macro in darray
darray_append_items, macro in darray
darray_append_items_nullterminate, macro in darray
darray_append_lit, macro in darray
darray_append_string, macro in darray
darray_char, typedef in darray
darray_const_parameter, typedef in hkl-parameter-private
darray_double, typedef in hkl-trajectory-private
darray_empty, macro in darray
darray_engine, typedef in hkl
darray_foreach, macro in darray
darray_foreach_reverse, macro in darray
darray_free, macro in darray
darray_from_c, macro in darray
darray_from_items, macro in darray
darray_from_lit, macro in darray
darray_from_string, macro in darray
darray_function, typedef in hkl-pseudoaxis-auto-private
darray_geometry, typedef in hkl-trajectory-private
darray_growalloc, macro in darray
darray_holder, typedef in hkl-geometry-private
darray_init, macro in darray
darray_insert, macro in darray
darray_int, typedef in darray
darray_item, macro in darray
darray_long, typedef in darray
darray_make_room, macro in darray
darray_mode, typedef in hkl-pseudoaxis-private
darray_new, macro in darray
darray_next_alloc, function in darray
darray_parameter, typedef in hkl-parameter-private
darray_pop, macro in darray
darray_pop_check, macro in darray
darray_prepend, macro in darray
darray_prepends, macro in darray
darray_prepends_t, macro in darray
darray_prepend_items, macro in darray
darray_prepend_items_nullterminate, macro in darray
darray_prepend_lit, macro in darray
darray_prepend_string, macro in darray
darray_push, macro in darray
darray_realloc, macro in darray
darray_remove, macro in darray
darray_resize, macro in darray
darray_resize0, macro in darray
darray_schar, typedef in darray
darray_short, typedef in darray
darray_size, macro in darray
darray_sizet, typedef in hkl-trajectory-private
darray_string, typedef in hkl
darray_uchar, typedef in darray
darray_uint, typedef in darray
darray_ulong, typedef in darray
darray_ushort, typedef in darray
HKL_DEGTORAD, macro in hkl
HKL_DEPRECATED, macro in hkl
HKL_DEPRECATED_FOR, macro in hkl
HklDetector, struct in hkl-detector-private
HklDetectorType, enum in hkl
hkl_detector_attach_to_holder, function in hkl-detector-private
hkl_detector_compute_kf, function in hkl-detector-private
hkl_detector_new, function in hkl-detector-private
HklDLength, macro in hkl
HklDoubleDiffractionWrite, struct in hkl-pseudoaxis-common-private
hkl_double_diffraction_write, function in hkl-pseudoaxis-common-private
HklDPlaneAngle, macro in hkl

E

HklEmergenceFixedWrite, struct in hkl-pseudoaxis-common-private
hkl_emergence_fixed_write, function in hkl-pseudoaxis-common-private
HklEngine, struct in hkl-pseudoaxis-private
HklEngineAxisNamesGet, enum in hkl
HklEngineCapabilities, enum in hkl
HklEngineDependencies, enum in hkl
HklEngineError, enum in hkl-pseudoaxis-private
HklEngineHkl, struct in hkl-pseudoaxis-common-hkl-private
HklEngineInfo, struct in hkl-pseudoaxis-private
HklEngineList, struct in hkl-pseudoaxis-private
HklEngineListError, enum in hkl-pseudoaxis-private
HklEngineListInfo, struct in hkl-pseudoaxis-private
HklEngineListOperations, struct in hkl-pseudoaxis-private
HklEngineOperations, struct in hkl-pseudoaxis-private
HklEnginePsi, struct in hkl-pseudoaxis-common-psi-private
HklEngineTth2, struct in hkl-pseudoaxis-common-tth-private
hkl_engine_add_geometry, function in hkl-pseudoaxis-private
hkl_engine_add_mode, function in hkl-pseudoaxis-private
hkl_engine_emergence_new, function in hkl-pseudoaxis-common-readonly-private
HKL_ENGINE_ERROR, macro in hkl-pseudoaxis-private
hkl_engine_error_quark, function in hkl-pseudoaxis-private
hkl_engine_eulerians_new, function in hkl-pseudoaxis-common-eulerians-private
hkl_engine_free, function in hkl-pseudoaxis-private
hkl_engine_free_real, function in hkl-pseudoaxis-private
hkl_engine_get, function in hkl-pseudoaxis-private
hkl_engine_hkl_new, function in hkl-pseudoaxis-common-hkl-private
hkl_engine_incidence_new, function in hkl-pseudoaxis-common-readonly-private
HKL_ENGINE_INFO, macro in hkl-pseudoaxis-private
hkl_engine_init, function in hkl-pseudoaxis-private
hkl_engine_list_clear, function in hkl-pseudoaxis-private
HKL_ENGINE_LIST_ERROR, macro in hkl-pseudoaxis-private
hkl_engine_list_error_quark, function in hkl-pseudoaxis-private
hkl_engine_list_free_real, function in hkl-pseudoaxis-private
HKL_ENGINE_LIST_INFO, macro in hkl-pseudoaxis-private
HKL_ENGINE_LIST_INFO_DEFAULTS, macro in hkl-pseudoaxis-private
hkl_engine_list_new, function in hkl-pseudoaxis-private
hkl_engine_list_new_copy, function in hkl-pseudoaxis-private
hkl_engine_list_new_with_info, function in hkl-pseudoaxis-private
HKL_ENGINE_LIST_OPERATIONS_DEFAULTS, macro in hkl-pseudoaxis-private
hkl_engine_list_post_engine_set, function in hkl-pseudoaxis-private
hkl_engine_list_post_engine_set_real, function in hkl-pseudoaxis-private
hkl_engine_mode_set, function in hkl-pseudoaxis-private
HKL_ENGINE_OPERATIONS_DEFAULTS, macro in hkl-pseudoaxis-private
hkl_engine_prepare_internal, function in hkl-pseudoaxis-private
hkl_engine_psi_new, function in hkl-pseudoaxis-common-psi-private
hkl_engine_q2_new, function in hkl-pseudoaxis-common-q-private
hkl_engine_qper_qpar_new, function in hkl-pseudoaxis-common-q-private
hkl_engine_q_new, function in hkl-pseudoaxis-common-q-private
hkl_engine_release, function in hkl-pseudoaxis-private
hkl_engine_set, function in hkl-pseudoaxis-private
hkl_engine_tth2_new, function in hkl-pseudoaxis-common-tth-private
HKL_EPSILON, macro in hkl
hkl_error, macro in hkl-macros-private
HKL_EULERIAN_KAPPA_SOLUTION, macro in hkl-macros-private

F

HklFactory, struct in hkl-factory-private
HklFactoryEngineListFunction, user_function in hkl-factory-private
HklFactoryGeometryFunction, user_function in hkl-factory-private
fclose_noerr, function in noerr
free_noerr, function in noerr
HklFunction, struct in hkl-pseudoaxis-auto-private

G

generator_, struct in generator
generator_argfield_, macro in generator
generator_argp_, function in generator
generator_argstruct_, macro in generator
generator_args_pack_, macro in generator
generator_args_unpack_, macro in generator
generator_arg_pack_, macro in generator
generator_arg_unpack_, macro in generator
generator_declare, macro in generator
generator_def, macro in generator
generator_def_, macro in generator
generator_def_static, macro in generator
generator_free, macro in generator
generator_free_, function in generator
generator_incomplete_, struct in generator
generator_new_, function in generator
generator_next, macro in generator
generator_next_, function in generator
generator_next_val, macro in generator
generator_parms_, macro in generator
generator_parms_inner_, macro in generator
generator_parms_outer_, macro in generator
generator_parm_, macro in generator
generator_rtype_, macro in generator
generator_state_, function in generator
generator_t, macro in generator
generator_yield, macro in generator
HklGeometry, struct in hkl-geometry-private
HklGeometryError, enum in hkl-geometry-private
HklGeometryList, struct in hkl-geometry-private
HklGeometryListItem, struct in hkl-geometry-private
HklGeometryListMultiplyFunction, user_function in hkl-geometry-private
HklGeometryOperations, struct in hkl-geometry-private
hkl_geometry_add_holder, function in hkl-geometry-private
hkl_geometry_closest_from_geometry_with_range, function in hkl-geometry-private
hkl_geometry_detector_holder_get, function in hkl-geometry-private
hkl_geometry_detector_holder_get_real, function in hkl-geometry-private
hkl_geometry_distance, function in hkl-geometry-private
hkl_geometry_distance_orthodromic, function in hkl-geometry-private
HKL_GEOMETRY_ERROR, macro in hkl-geometry-private
hkl_geometry_error_quark, function in hkl-geometry-private
hkl_geometry_get_axis_by_name, function in hkl-geometry-private
hkl_geometry_get_axis_idx_by_name, function in hkl-geometry-private
hkl_geometry_init_geometry, function in hkl-geometry-private
hkl_geometry_is_valid, function in hkl-geometry-private
hkl_geometry_is_valid_range, function in hkl-geometry-private
hkl_geometry_kf_get_real, function in hkl-geometry-private
hkl_geometry_ki_get_real, function in hkl-geometry-private
hkl_geometry_list_add, function in hkl-geometry-private
HKL_GEOMETRY_LIST_FOREACH, macro in hkl
hkl_geometry_list_fprintf, function in hkl-geometry-private
hkl_geometry_list_item_free, function in hkl-geometry-private
hkl_geometry_list_item_new, function in hkl-geometry-private
hkl_geometry_list_item_new_copy, function in hkl-geometry-private
hkl_geometry_list_multiply, function in hkl-geometry-private
hkl_geometry_list_multiply_from_range, function in hkl-geometry-private
hkl_geometry_list_new, function in hkl-geometry-private
hkl_geometry_list_new_copy, function in hkl-geometry-private
hkl_geometry_list_remove_invalid, function in hkl-geometry-private
hkl_geometry_list_reset, function in hkl-geometry-private
hkl_geometry_list_sort, function in hkl-geometry-private
hkl_geometry_new, function in hkl-geometry-private
HKL_GEOMETRY_OPERATIONS_DEFAULTS, macro in hkl-geometry-private
hkl_geometry_operations_defaults, variable in hkl-geometry-private
hkl_geometry_sample_holder_get, function in hkl-geometry-private
hkl_geometry_sample_holder_get_real, function in hkl-geometry-private
hkl_geometry_update, function in hkl-geometry-private
G_GNUC_PRINTF, macro in hkl-macros-private

H

HAVE_32BIT_OFF_T, macro in ccan_config
HAVE_ALIGNOF, macro in ccan_config
HAVE_ASPRINTF, macro in ccan_config
HAVE_ATTRIBUTE_COLD, macro in ccan_config
HAVE_ATTRIBUTE_CONST, macro in ccan_config
HAVE_ATTRIBUTE_DEPRECATED, macro in ccan_config
HAVE_ATTRIBUTE_MAY_ALIAS, macro in ccan_config
HAVE_ATTRIBUTE_NONNULL, macro in ccan_config
HAVE_ATTRIBUTE_NORETURN, macro in ccan_config
HAVE_ATTRIBUTE_PRINTF, macro in ccan_config
HAVE_ATTRIBUTE_PURE, macro in ccan_config
HAVE_ATTRIBUTE_RETURNS_NONNULL, macro in ccan_config
HAVE_ATTRIBUTE_SENTINEL, macro in ccan_config
HAVE_ATTRIBUTE_UNUSED, macro in ccan_config
HAVE_ATTRIBUTE_USED, macro in ccan_config
HAVE_BACKTRACE, macro in ccan_config
HAVE_BIG_ENDIAN, macro in ccan_config
HAVE_BSWAP_64, macro in ccan_config
HAVE_BUILTIN_CHOOSE_EXPR, macro in ccan_config
HAVE_BUILTIN_CLZ, macro in ccan_config
HAVE_BUILTIN_CLZL, macro in ccan_config
HAVE_BUILTIN_CLZLL, macro in ccan_config
HAVE_BUILTIN_CONSTANT_P, macro in ccan_config
HAVE_BUILTIN_CPU_SUPPORTS, macro in ccan_config
HAVE_BUILTIN_CTZ, macro in ccan_config
HAVE_BUILTIN_CTZL, macro in ccan_config
HAVE_BUILTIN_CTZLL, macro in ccan_config
HAVE_BUILTIN_EXPECT, macro in ccan_config
HAVE_BUILTIN_FFS, macro in ccan_config
HAVE_BUILTIN_FFSL, macro in ccan_config
HAVE_BUILTIN_FFSLL, macro in ccan_config
HAVE_BUILTIN_POPCOUNT, macro in ccan_config
HAVE_BUILTIN_POPCOUNTL, macro in ccan_config
HAVE_BUILTIN_POPCOUNTLL, macro in ccan_config
HAVE_BUILTIN_TYPES_COMPATIBLE_P, macro in ccan_config
HAVE_BYTESWAP_H, macro in ccan_config
HAVE_CCAN, macro in ccan_config
HAVE_CLOCK_GETTIME, macro in ccan_config
HAVE_CLOCK_GETTIME_IN_LIBRT, macro in ccan_config
HAVE_CLOSEFROM, macro in ccan_config
HAVE_COMPOUND_LITERALS, macro in ccan_config
HAVE_ERR_H, macro in ccan_config
HAVE_FCHDIR, macro in ccan_config
HAVE_FILE_OFFSET_BITS, macro in ccan_config
HAVE_FLEXIBLE_ARRAY_MEMBER, macro in ccan_config
HAVE_FOR_LOOP_DECLARATION, macro in ccan_config
HAVE_F_CLOSEM, macro in ccan_config
HAVE_F_MAXFD, macro in ccan_config
HAVE_GETPAGESIZE, macro in ccan_config
HAVE_ICCARM_INTRINSICS, macro in ccan_config
HAVE_ISBLANK, macro in ccan_config
HAVE_LITTLE_ENDIAN, macro in ccan_config
HAVE_MEMMEM, macro in ccan_config
HAVE_MEMRCHR, macro in ccan_config
HAVE_MMAP, macro in ccan_config
HAVE_NR_CLOSE_RANGE, macro in ccan_config
HAVE_OPENMP, macro in ccan_config
HAVE_POINTER_SAFE_MAKECONTEXT, macro in ccan_config
HAVE_PROC_SELF_MAPS, macro in ccan_config
HAVE_QSORT_R_PRIVATE_LAST, macro in ccan_config
HAVE_SECTION_START_STOP, macro in ccan_config
HAVE_STACK_GROWS_UPWARDS, macro in ccan_config
HAVE_STATEMENT_EXPR, macro in ccan_config
HAVE_STRUCT_TIMESPEC, macro in ccan_config
HAVE_SYS_FILIO_H, macro in ccan_config
HAVE_SYS_TERMIOS_H, macro in ccan_config
HAVE_SYS_UNISTD_H, macro in ccan_config
HAVE_TYPEOF, macro in ccan_config
HAVE_UCONTEXT, macro in ccan_config
HAVE_UNALIGNED_ACCESS, macro in ccan_config
HAVE_UTIME, macro in ccan_config
HAVE_VALGRIND_MEMCHECK_H, macro in ccan_config
HAVE_WARN_UNUSED_RESULT, macro in ccan_config
HklHklRead, struct in hkl-pseudoaxis-common-private
HklHklWrite, struct in hkl-pseudoaxis-common-private
hkl_hkl_read, function in hkl-pseudoaxis-common-private
hkl_hkl_write, function in hkl-pseudoaxis-common-private
HklHolder, struct in hkl-geometry-private
HklHolderConfig, struct in hkl-geometry-private
hkl_holder_add_parameter, function in hkl-geometry-private
hkl_holder_add_rotation, function in hkl-geometry-private
hkl_holder_add_rotation_with_origin, function in hkl-geometry-private
hkl_holder_add_translation, function in hkl-geometry-private
HKL_HOLDER_DETECTOR_IDX, macro in hkl-geometry-private
HKL_HOLDER_SAMPLE_IDX, macro in hkl-geometry-private
hkl_holder_transformation_apply, function in hkl-geometry-private

I

IGNORE, macro in hkl-macros-private
HklInterval, struct in hkl-interval-private
hkl_interval_acos, function in hkl-interval-private
hkl_interval_angle_restrict_symm, function in hkl-interval-private
hkl_interval_asin, function in hkl-interval-private
hkl_interval_atan, function in hkl-interval-private
hkl_interval_cmp, function in hkl-interval-private
hkl_interval_contain_zero, function in hkl-interval-private
hkl_interval_cos, function in hkl-interval-private
hkl_interval_divides_double, function in hkl-interval-private
hkl_interval_dup, function in hkl-interval-private
hkl_interval_free, function in hkl-interval-private
hkl_interval_length, function in hkl-interval-private
hkl_interval_minus_double, function in hkl-interval-private
hkl_interval_minus_interval, function in hkl-interval-private
hkl_interval_plus_double, function in hkl-interval-private
hkl_interval_plus_interval, function in hkl-interval-private
hkl_interval_sin, function in hkl-interval-private
hkl_interval_tan, function in hkl-interval-private
hkl_interval_times_double, function in hkl-interval-private
hkl_interval_times_interval, function in hkl-interval-private
isalnum, macro in str
isalpha, macro in str
isascii, macro in str
isblank, macro in str
iscntrl, macro in str
isdigit, macro in str
isgraph, macro in str
islower, macro in str
isprint, macro in str
ispunct, macro in str
isspace, macro in str
isupper, macro in str
isxdigit, macro in str
IS_COMPILE_CONSTANT, macro in compiler
hkl_is_reachable, function in hkl-pseudoaxis-common-hkl-private

K

kappa_2_kappap, function in hkl-pseudoaxis-common-eulerians-private

L

LAST_ARG_NULL, macro in compiler
HklLattice, struct in hkl-lattice-private
HklLatticeError, enum in hkl-lattice-private
HKL_LATTICE_ERROR, macro in hkl-lattice-private
hkl_lattice_error_quark, function in hkl-lattice-private
hkl_lattice_fprintf, function in hkl-lattice-private
hkl_lattice_lattice_set, function in hkl-lattice-private
hkl_lattice_randomize, function in hkl-lattice-private
list_add, macro in list
list_add_, function in list
list_add_after, macro in list
list_add_after_, function in list
list_add_before, macro in list
list_add_before_, function in list
list_add_off, macro in list
list_add_tail, macro in list
list_add_tail_, function in list
list_append_list, macro in list
list_append_list_, function in list
list_check, function in list
list_check_node, function in list
list_debug, macro in list
list_debug_node, macro in list
list_del, macro in list
list_del_, function in list
list_del_from, function in list
list_del_from_off, macro in list
list_del_init, macro in list
list_del_init_, function in list
list_del_off, macro in list
list_empty, macro in list
list_empty_, function in list
list_empty_nocheck, function in list
list_empty_nodebug, macro in list
list_entry, macro in list
list_entry_off, macro in list
list_entry_or_null, function in list
list_for_each, macro in list
list_for_each_off, macro in list
list_for_each_off_dir_, macro in list
list_for_each_rev, macro in list
list_for_each_rev_off, macro in list
list_for_each_rev_safe, macro in list
list_for_each_rev_safe_off, macro in list
list_for_each_safe, macro in list
list_for_each_safe_off, macro in list
list_for_each_safe_off_dir_, macro in list
LIST_HEAD, macro in list
list_head, struct in list
LIST_HEAD_INIT, macro in list
list_head_init, function in list
list_head_off, macro in list
LIST_LOC, macro in list
list_next, macro in list
list_node, struct in list
list_node_from_off_, function in list
list_node_init, function in list
list_node_to_off_, function in list
list_off_, macro in list
list_off_var_, macro in list
list_pop, macro in list
list_pop_, function in list
list_prepend_list, macro in list
list_prepend_list_, function in list
list_prev, macro in list
list_swap, macro in list
list_swap_, function in list
list_tail, macro in list
list_tail_, function in list
list_tail_off, macro in list
list_top, macro in list
list_top_, function in list
list_typeof, macro in list

M

HklMatrix, struct in hkl-matrix-private
hkl_matrix_det, function in hkl-matrix-private
hkl_matrix_div_double, function in hkl-matrix-private
hkl_matrix_dup, function in hkl-matrix-private
hkl_matrix_fprintf, function in hkl-matrix-private
hkl_matrix_init_from_euler, function in hkl-matrix-private
hkl_matrix_init_from_two_vector, function in hkl-matrix-private
hkl_matrix_inv, function in hkl-matrix-private
hkl_matrix_is_null, function in hkl-matrix-private
hkl_matrix_matrix_set, function in hkl-matrix-private
hkl_matrix_solve, function in hkl-matrix-private
hkl_matrix_times_vector, function in hkl-matrix-private
hkl_matrix_to_euler, function in hkl-matrix-private
hkl_matrix_transpose, function in hkl-matrix-private
HklMode, struct in hkl-pseudoaxis-private
HklModeAutoInfo, struct in hkl-pseudoaxis-auto-private
HklModeAutoWithInit, struct in hkl-pseudoaxis-auto-private
HklModeError, enum in hkl-pseudoaxis-auto-private
HklModeIncidence, struct in hkl-pseudoaxis-common-readonly-private
HklModeInfo, struct in hkl-pseudoaxis-private
HklModeOperations, struct in hkl-pseudoaxis-private
HklModePsi, struct in hkl-pseudoaxis-common-psi-private
HKL_MODE_AUTO_INFO, macro in hkl-pseudoaxis-auto-private
HKL_MODE_AUTO_INFO_WITH_PARAMS, macro in hkl-pseudoaxis-auto-private
hkl_mode_auto_init, function in hkl-pseudoaxis-auto-private
hkl_mode_auto_new, function in hkl-pseudoaxis-auto-private
hkl_mode_auto_set_real, function in hkl-pseudoaxis-auto-private
HKL_MODE_AUTO_WITH_INIT_ERROR, macro in hkl-pseudoaxis-auto-private
hkl_mode_auto_with_init_error_quark, function in hkl-pseudoaxis-auto-private
hkl_mode_auto_with_init_new, function in hkl-pseudoaxis-auto-private
hkl_mode_emergence_new, function in hkl-pseudoaxis-common-readonly-private
hkl_mode_free, function in hkl-pseudoaxis-private
hkl_mode_free_real, function in hkl-pseudoaxis-private
hkl_mode_get_hkl_real, function in hkl-pseudoaxis-common-hkl-private
hkl_mode_get_real, function in hkl-pseudoaxis-private
hkl_mode_hkl_emergence_fixed_new, function in hkl-pseudoaxis-common-hkl-private
HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS, macro in hkl-pseudoaxis-common-hkl-private
hkl_mode_incidence_new, function in hkl-pseudoaxis-common-readonly-private
HKL_MODE_INFO, macro in hkl-pseudoaxis-private
HKL_MODE_INFO_emergence_DEFAULTS, macro in hkl-pseudoaxis-common-readonly-private
HKL_MODE_INFO_incidence_DEFAULTS, macro in hkl-pseudoaxis-common-readonly-private
HKL_MODE_INFO_RO, macro in hkl-pseudoaxis-private
HKL_MODE_INFO_RO_WITH_PARAMS, macro in hkl-pseudoaxis-private
HKL_MODE_INFO_WITH_PARAMS, macro in hkl-pseudoaxis-private
hkl_mode_init, function in hkl-pseudoaxis-private
hkl_mode_initialized_get, function in hkl-pseudoaxis-private
hkl_mode_initialized_get_real, function in hkl-pseudoaxis-private
hkl_mode_initialized_set, function in hkl-pseudoaxis-private
hkl_mode_initialized_set_psi_constant_vertical_real, function in hkl-pseudoaxis-common-hkl-private
hkl_mode_initialized_set_real, function in hkl-pseudoaxis-private
hkl_mode_new, function in hkl-pseudoaxis-private
HKL_MODE_OPERATIONS_AUTO_DEFAULTS, macro in hkl-pseudoaxis-auto-private
HKL_MODE_OPERATIONS_AUTO_WITH_INIT_DEFAULTS, macro in hkl-pseudoaxis-auto-private
HKL_MODE_OPERATIONS_DEFAULTS, macro in hkl-pseudoaxis-private
HKL_MODE_OPERATIONS_HKL_DEFAULTS, macro in hkl-pseudoaxis-common-hkl-private
HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS, macro in hkl-pseudoaxis-common-hkl-private
hkl_mode_psi_new, function in hkl-pseudoaxis-common-psi-private
hkl_mode_set_hkl_real, function in hkl-pseudoaxis-common-hkl-private
hkl_mode_set_real, function in hkl-pseudoaxis-private

N

NEEDED, macro in compiler
NON_NULL_ARGS, macro in compiler
NORETURN, macro in hkl-macros-private
NO_NULL_ARGS, macro in compiler

P

P99_PROTECT, macro in hkl-pseudoaxis-common-readonly-private
HklParameter, struct in hkl-parameter-private
HklParameterError, enum in hkl-parameter-private
HklParameterOperations, struct in hkl-parameter-private
hkl_parameter_axis_v_get_real, function in hkl-parameter-private
hkl_parameter_copy_real, function in hkl-parameter-private
HKL_PARAMETER_DEFAULTS, macro in hkl-parameter-private
HKL_PARAMETER_DEFAULTS_ANGLE, macro in hkl-parameter-private
HKL_PARAMETER_DEFAULTS_LENGTH, macro in hkl-parameter-private
HKL_PARAMETER_EMERGENCE_AZIMUTH_DEFAULTS, macro in hkl-pseudoaxis-common-hkl-private
HKL_PARAMETER_EMERGENCE_DEFAULTS, macro in hkl-pseudoaxis-common-hkl-private
HKL_PARAMETER_ERROR, macro in hkl-parameter-private
hkl_parameter_error_quark, function in hkl-parameter-private
hkl_parameter_fprintf, function in hkl-parameter-private
hkl_parameter_fprintf_real, function in hkl-parameter-private
hkl_parameter_free_real, function in hkl-parameter-private
hkl_parameter_init_copy, function in hkl-parameter-private
hkl_parameter_init_copy_real, function in hkl-parameter-private
hkl_parameter_is_permutable, function in hkl-parameter-private
hkl_parameter_is_permutable_real, function in hkl-parameter-private
hkl_parameter_is_valid, function in hkl-parameter-private
hkl_parameter_is_valid_range, function in hkl-parameter-private
hkl_parameter_is_valid_real, function in hkl-parameter-private
hkl_parameter_new, function in hkl-parameter-private
hkl_parameter_new_rotation, function in hkl-axis-private
hkl_parameter_new_rotation_with_origin, function in hkl-axis-private
hkl_parameter_new_translation, function in hkl-axis-private
HKL_PARAMETER_OPERATIONS_DEFAULTS, macro in hkl-parameter-private
hkl_parameter_orthodromic_distance_get, function in hkl-parameter-private
hkl_parameter_orthodromic_distance_get_real, function in hkl-parameter-private
hkl_parameter_quaternion_get_real, function in hkl-parameter-private
hkl_parameter_randomize_real, function in hkl-parameter-private
hkl_parameter_transformation_apply, function in hkl-parameter-private
hkl_parameter_transformation_apply_real, function in hkl-parameter-private
hkl_parameter_transformation_cmp, function in hkl-parameter-private
hkl_parameter_transformation_cmp_real, function in hkl-parameter-private
hkl_parameter_type_get, function in hkl-parameter-private
hkl_parameter_type_get_real, function in hkl-parameter-private
hkl_parameter_value_get_closest, function in hkl-parameter-private
hkl_parameter_value_get_closest_real, function in hkl-parameter-private
hkl_parameter_value_set_real, function in hkl-parameter-private
hkl_parameter_value_set_smallest_in_range, function in hkl-parameter-private
hkl_parameter_value_set_smallest_in_range_real, function in hkl-parameter-private
hkl_printbt, function in hkl-macros-private
PRINTF_FMT, macro in compiler
HklPsiWrite, struct in hkl-pseudoaxis-common-private
PSI_CONSTANT_PARAMETERS, macro in hkl-pseudoaxis-common-hkl-private
hkl_psi_write, function in hkl-pseudoaxis-common-private
ptrint_t, typedef in ptrint
ptr_valid, function in ptr_valid
PTR_VALID_ALIGNOF, macro in ptr_valid
ptr_valid_batch, struct in ptr_valid
ptr_valid_batch_end, function in ptr_valid
ptr_valid_batch_r, function in ptr_valid
ptr_valid_batch_read, macro in ptr_valid
ptr_valid_batch_start, function in ptr_valid
ptr_valid_batch_string, function in ptr_valid
ptr_valid_batch_w, function in ptr_valid
ptr_valid_batch_write, macro in ptr_valid
ptr_valid_map, struct in ptr_valid
ptr_valid_r, function in ptr_valid
ptr_valid_read, macro in ptr_valid
ptr_valid_string, function in ptr_valid
ptr_valid_w, function in ptr_valid
ptr_valid_write, macro in ptr_valid
PURE_FUNCTION, macro in compiler

Q

qmax, function in hkl-pseudoaxis-common-q-private
HklQuaternion, struct in hkl
hkl_quaternion_cmp, function in hkl-quaternion-private
hkl_quaternion_conjugate, function in hkl-quaternion-private
hkl_quaternion_dup, function in hkl-quaternion-private
hkl_quaternion_fprintf, function in hkl-quaternion-private
hkl_quaternion_free, function in hkl-quaternion-private
hkl_quaternion_init, function in hkl-quaternion-private
hkl_quaternion_init_from_angle_and_axe, function in hkl-quaternion-private
hkl_quaternion_init_from_vector, function in hkl-quaternion-private
hkl_quaternion_minus_quaternion, function in hkl-quaternion-private
hkl_quaternion_norm2, function in hkl-quaternion-private
hkl_quaternion_times_quaternion, function in hkl-quaternion-private
hkl_quaternion_to_angle_and_axe, function in hkl-quaternion-private
hkl_quaternion_to_matrix, function in hkl-quaternion-private

R

HKL_RADTODEG, macro in hkl
REGISTER_DIFFRACTOMETER, macro in hkl-factory-private
register_mode_parameter, function in hkl-pseudoaxis-private
register_pseudo_axis, function in hkl-pseudoaxis-private
REGISTER_READONLY, macro in hkl-pseudoaxis-common-readonly-private
REGISTER_READONLY_EMERGENCE, macro in hkl-pseudoaxis-common-readonly-private
REGISTER_READONLY_INCIDENCE, macro in hkl-pseudoaxis-common-readonly-private
RETURNS_NONNULL, macro in compiler
HklRotationWithOrigin, struct in hkl-axis-private
RUBh_minus_Q, function in hkl-pseudoaxis-common-hkl-private

S

HklSample, struct in hkl-sample-private
HklSampleError, enum in hkl-sample-private
HklSampleReflection, struct in hkl-sample-private
HklSampleReflectionError, enum in hkl-sample-private
HKL_SAMPLE_ERROR, macro in hkl-sample-private
hkl_sample_error_quark, function in hkl-sample-private
hkl_sample_fprintf, function in hkl-sample-private
HKL_SAMPLE_REFLECTIONS_FOREACH, macro in hkl
HKL_SAMPLE_REFLECTION_ERROR, macro in hkl-sample-private
hkl_sample_reflection_error_quark, function in hkl-sample-private
hkl_sample_reflection_free, function in hkl-sample-private
hkl_sample_reflection_new_copy, function in hkl-sample-private
self, variable in hkl-pseudoaxis-auto-private
set_geometry_axes, function in hkl-pseudoaxis-private
HklSource, struct in hkl-source-private
hkl_source_cmp, function in hkl-source-private
hkl_source_compute_ki, function in hkl-source-private
HKL_SOURCE_DEFAULT_WAVE_LENGTH, macro in hkl-source-private
hkl_source_dup, function in hkl-source-private
hkl_source_fprintf, function in hkl-source-private
hkl_source_free, function in hkl-source-private
hkl_source_get_wavelength, function in hkl-source-private
hkl_source_init, function in hkl-source-private
strchr, macro in str
strcount, function in str
strends, function in str
streq, macro in str
stringify, macro in str
stringify_1, macro in str
strrchr, macro in str
strstarts, macro in str
strstr, macro in str
str_check_arg_, macro in str
str_isalnum, function in str_debug
str_isalpha, function in str_debug
str_isascii, function in str_debug
str_isblank, function in str_debug
str_iscntrl, function in str_debug
str_isdigit, function in str_debug
str_isgraph, function in str_debug
str_islower, function in str_debug
str_isprint, function in str_debug
str_ispunct, function in str_debug
str_isspace, function in str_debug
str_isupper, function in str_debug
str_isxdigit, function in str_debug
STR_MAX_CHARS, macro in str
STR_MAX_CHARS_TCHECK_, macro in str
str_strchr, function in str_debug
str_strrchr, function in str_debug
str_strstr, function in str_debug
SURFACE_PARAMETERS, macro in hkl-pseudoaxis-common-readonly-private

T

HKL_TAU, macro in hkl
HKL_TINY, macro in hkl
HklTrajectoryResult, struct in hkl-trajectory-private
HklTrajectoryStats, struct in hkl-trajectory-private
hkl_trajectory_add_geometry, function in hkl-trajectory-private
hkl_trajectory_result_free, function in hkl-trajectory-private
hkl_trajectory_result_new, function in hkl-trajectory-private
hkl_trajectory_stats_add, function in hkl-trajectory-private
hkl_trajectory_stats_fprintf, function in hkl-trajectory-private
hkl_trajectory_stats_free, function in hkl-trajectory-private
hkl_trajectory_stats_new, function in hkl-trajectory-private
HklTranslation, struct in hkl-axis-private
typesafe_cb, macro in typesafe_cb
typesafe_cb_cast, macro in typesafe_cb
typesafe_cb_cast3, macro in typesafe_cb
typesafe_cb_postargs, macro in typesafe_cb
typesafe_cb_preargs, macro in typesafe_cb
HKL_TYPE_DETECTOR_TYPE, macro in hkl-type-builtins
HKL_TYPE_ENGINE_AXIS_NAMES_GET, macro in hkl-type-builtins
HKL_TYPE_ENGINE_CAPABILITIES, macro in hkl-type-builtins
HKL_TYPE_ENGINE_DEPENDENCIES, macro in hkl-type-builtins
TYPE_HKL_DETECTOR, macro in hkl-types
TYPE_HKL_ENGINE, macro in hkl-types
TYPE_HKL_ENGINE_LIST, macro in hkl-types
TYPE_HKL_FACTORY, macro in hkl-types
TYPE_HKL_GEOMETRY, macro in hkl-types
TYPE_HKL_GEOMETRY_LIST, macro in hkl-types
TYPE_HKL_GEOMETRY_LIST_ITEM, macro in hkl-types
TYPE_HKL_LATTICE, macro in hkl-types
TYPE_HKL_MATRIX, macro in hkl-types
TYPE_HKL_PARAMETER, macro in hkl-types
TYPE_HKL_QUATERNION, macro in hkl-types
TYPE_HKL_SAMPLE, macro in hkl-types
TYPE_HKL_SAMPLE_REFLECTION, macro in hkl-types
TYPE_HKL_UNIT, macro in hkl-types
TYPE_HKL_VECTOR, macro in hkl-types
HKL_TYPE_UNIT_ENUM, macro in hkl-type-builtins

U

HklUnit, struct in hkl
HklUnitDimension, struct in hkl
HklUnitEnum, enum in hkl
hkl_unit_angle_deg, variable in hkl
hkl_unit_angle_mrad, variable in hkl
hkl_unit_angle_rad, variable in hkl
hkl_unit_compatible, function in hkl-unit-private
hkl_unit_dup, function in hkl-unit-private
hkl_unit_factor, function in hkl-unit-private
hkl_unit_free, function in hkl-unit-private
hkl_unit_length_meter, variable in hkl
hkl_unit_length_mm, variable in hkl
hkl_unit_length_nm, variable in hkl
unlink_noerr, function in noerr
UNNEEDED, macro in compiler
UNUSED, macro in compiler

V

HklVector, struct in hkl
hkl_vector_add_vector, function in hkl-vector-private
hkl_vector_angle, function in hkl-vector-private
hkl_vector_cmp, function in hkl-vector-private
hkl_vector_div_double, function in hkl-vector-private
hkl_vector_dup, function in hkl-vector-private
hkl_vector_fprintf, function in hkl-vector-private
hkl_vector_free, function in hkl-vector-private
hkl_vector_is_colinear, function in hkl-vector-private
hkl_vector_is_null, function in hkl-vector-private
hkl_vector_is_opposite, function in hkl-vector-private
hkl_vector_minus_vector, function in hkl-vector-private
hkl_vector_norm2, function in hkl-vector-private
hkl_vector_normalize, function in hkl-vector-private
hkl_vector_oriented_angle, function in hkl-vector-private
hkl_vector_oriented_angle_points, function in hkl-vector-private
hkl_vector_project_on_plan, function in hkl-vector-private
hkl_vector_project_on_plan_with_point, function in hkl-vector-private
hkl_vector_randomize, function in hkl-vector-private
hkl_vector_randomize_vector, function in hkl-vector-private
hkl_vector_randomize_vector_vector, function in hkl-vector-private
hkl_vector_rotated_around_line, function in hkl-vector-private
hkl_vector_rotated_around_vector, function in hkl-vector-private
hkl_vector_rotated_quaternion, function in hkl-vector-private
hkl_vector_scalar_product, function in hkl-vector-private
hkl_vector_sum, function in hkl-vector-private
hkl_vector_times_double, function in hkl-vector-private
hkl_vector_times_matrix, function in hkl-vector-private
hkl_vector_times_vector, function in hkl-vector-private
hkl_vector_vectorial_product, function in hkl-vector-private
HKL_VECTOR_X, macro in hkl
HKL_VECTOR_Y, macro in hkl
HKL_VECTOR_Z, macro in hkl
HKL_VERSION, macro in hkl

W

WARN_DEPRECATED, macro in compiler
HKL_WARN_UNUSED_RESULT, macro in hkl
WARN_UNUSED_RESULT, macro in compiler
hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-psi-private.html0000664000175000017500000001310315144640567025755 0ustar00piccapicca hkl-pseudoaxis-common-psi-private: hkl Reference Manual

hkl-pseudoaxis-common-psi-private

hkl-pseudoaxis-common-psi-private

Types and Values

struct HklModePsi
struct HklEnginePsi

Description

Functions

hkl_mode_psi_new ()

HklMode *
hkl_mode_psi_new (const HklModeAutoInfo *info);

hkl_engine_psi_new ()

HklEngine *
hkl_engine_psi_new (HklEngineList *engines);

Types and Values

struct HklModePsi

struct HklModePsi {
	HklMode parent;
	HklVector Q0;
	HklVector hkl0;
};

struct HklEnginePsi

struct HklEnginePsi {
	HklEngine engine;
	HklParameter *psi;
};
hkl-5.1.7/Documentation/api/html/hkl-ptr-valid.html0000664000175000017500000002721015144640567021174 0ustar00piccapicca ptr_valid: hkl Reference Manual

ptr_valid

ptr_valid

Functions

Types and Values

Description

Functions

ptr_valid_read()

#define             ptr_valid_read(p)

ptr_valid_write()

#define             ptr_valid_write(p)

ptr_valid_string ()

bool
ptr_valid_string (const char *p);

ptr_valid ()

bool
ptr_valid (const void *p,
           size_t align,
           size_t size,
           bool write);

ptr_valid_batch_start ()

bool
ptr_valid_batch_start (struct ptr_valid_batch *batch);

ptr_valid_batch_read()

#define             ptr_valid_batch_read(batch, p)

ptr_valid_batch_write()

#define             ptr_valid_batch_write(batch, p)

ptr_valid_batch_string ()

bool
ptr_valid_batch_string (struct ptr_valid_batch *batch,
                        const char *p);

ptr_valid_batch_end ()

void
ptr_valid_batch_end (struct ptr_valid_batch *batch);

ptr_valid_r ()

bool
ptr_valid_r (const void *p,
             size_t align,
             size_t size);

ptr_valid_w ()

bool
ptr_valid_w (void *p,
             size_t align,
             size_t size);

ptr_valid_batch_r ()

bool
ptr_valid_batch_r (struct ptr_valid_batch *batch,
                   const void *p,
                   size_t align,
                   size_t size);

ptr_valid_batch_w ()

bool
ptr_valid_batch_w (struct ptr_valid_batch *batch,
                   void *p,
                   size_t align,
                   size_t size);

PTR_VALID_ALIGNOF()

#define PTR_VALID_ALIGNOF(var) __alignof__(var)

Types and Values

struct ptr_valid_batch

struct ptr_valid_batch {
	unsigned int num_maps;
	struct ptr_valid_map *maps;
	int child_pid;
	int to_child, from_child;
	void *last;
	bool last_ok;
};

struct ptr_valid_map

struct ptr_valid_map {
	const char *start, *end;
	bool is_write;
};
hkl-5.1.7/Documentation/api/html/hkl-hkl-type-builtins.html0000664000175000017500000001144715144640567022663 0ustar00piccapicca hkl-type-builtins: hkl Reference Manual

hkl-type-builtins

hkl-type-builtins

Description

Functions

Types and Values

HKL_TYPE_UNIT_ENUM

#define HKL_TYPE_UNIT_ENUM (hkl_unit_enum_get_type ())

HKL_TYPE_DETECTOR_TYPE

#define HKL_TYPE_DETECTOR_TYPE (hkl_detector_type_get_type ())

HKL_TYPE_ENGINE_CAPABILITIES

#define HKL_TYPE_ENGINE_CAPABILITIES (hkl_engine_capabilities_get_type ())

HKL_TYPE_ENGINE_AXIS_NAMES_GET

#define HKL_TYPE_ENGINE_AXIS_NAMES_GET (hkl_engine_axis_names_get_get_type ())

HKL_TYPE_ENGINE_DEPENDENCIES

#define HKL_TYPE_ENGINE_DEPENDENCIES (hkl_engine_dependencies_get_type ())
hkl-5.1.7/Documentation/api/html/hkl-hkl-detector-private.html0000664000175000017500000001755315144640567023340 0ustar00piccapicca hkl-detector-private: hkl Reference Manual

hkl-detector-private

hkl-detector-private

Types and Values

Description

Functions

hkl_detector_new ()

HklDetector *
hkl_detector_new (void);

Create a new default HklDetector

[skip]


hkl_detector_attach_to_holder ()

void
hkl_detector_attach_to_holder (HklDetector *self);

attach the HklDetector to an HklHolder

[skip]


hkl_detector_compute_kf ()

int
hkl_detector_compute_kf (HklDetector const *self,
                         HklGeometry *g);

Compute the kf vector of the HklDetector

[skip]

Parameters

g

the diffractometer HklGeometry use to compute kf.

[in]

kf

the HklVector fill with the kf coordinates.

[out caller-allocates]

Returns

HKL_SUCCESS if everythongs goes fine. HKL_FAIL otherwise.

Types and Values

HklDetector

typedef struct {
	size_t idx;
	HklHolder const *holder;
} HklDetector;
hkl-5.1.7/Documentation/api/html/hkl-array-size.html0000664000175000017500000000545615144640567021370 0ustar00piccapicca array_size: hkl Reference Manual

array_size

array_size

Functions

#define ARRAY_SIZE()

Description

Functions

ARRAY_SIZE()

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr))
hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-private.html0000664000175000017500000003212615144640567025172 0ustar00piccapicca hkl-pseudoaxis-common-private: hkl Reference Manual

hkl-pseudoaxis-common-private

hkl-pseudoaxis-common-private

Types and Values

Description

Functions

hkl_hkl_read ()

struct HklHklRead
hkl_hkl_read (const HklGeometry *geometry,
              const HklDetector *detector,
              const HklSample *sample);

hkl_hkl_write ()

struct HklHklWrite
hkl_hkl_write (const HklGeometry *geometry,
               const HklDetector *detector,
               const HklSample *sample,
               const HklVector *hkl);

hkl_double_diffraction_write ()

struct HklDoubleDiffractionWrite
hkl_double_diffraction_write (const HklGeometry *geometry,
                              const HklDetector *detector,
                              const HklSample *sample,
                              const HklVector *hkl1,
                              const HklVector *hkl2);

hkl_psi_write ()

struct HklPsiWrite
hkl_psi_write (const HklGeometry *geometry,
               const HklDetector *detector,
               const HklSample *sample,
               const HklVector *hkl,
               const HklVector *hkl2);

hkl_emergence_fixed_write ()

struct HklEmergenceFixedWrite
hkl_emergence_fixed_write (const HklGeometry *geometry,
                           const HklDetector *detector,
                           const HklSample *sample,
                           const HklVector *hkl,
                           const HklVector *n);

Types and Values

struct HklHklRead

struct HklHklRead {
	HklVector ki;
	HklVector kf;
	HklVector Q;
	HklVector hkl;
};

struct HklHklWrite

struct HklHklWrite {
	HklVector ki;
	HklVector kf;
	HklVector Q;
	HklVector hkl;
	HklVector dQ;
};

struct HklDoubleDiffractionWrite

struct HklDoubleDiffractionWrite {
	struct HklHklWrite hkl1W;
	struct HklHklWrite hkl2W;
	HklVector kf2;
};

struct HklPsiWrite

struct HklPsiWrite {
	struct HklHklWrite hklW;
	struct HklHklWrite hkl2W;
	HklVector Qn; /* Q normalized */
	HklVector hkl2; /* projection of hkl2 on plan Q */
	HklVector n; /* compute n the intersection of the plan P(kf, ki) and PQn (normal Qn) */
	double psi; /* computed psi */
	int status;
};

struct HklEmergenceFixedWrite

struct HklEmergenceFixedWrite {
	struct HklHklWrite hklW;
	HklVector n; /* the surface orientation */
	double emergence; /* the computed emergence */
};
hkl-5.1.7/Documentation/api/html/left.png0000644000175000017500000000040615144640567017264 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8үa?DAPY\$[p+IIMlf('}Mpy{_ޥ}^q xZ <=Yj) <04\~+Pl#",Qϑp Iǐlsw>[/]_i03IENDB`hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-hkl-private.html0000664000175000017500000003637515144640567025760 0ustar00piccapicca hkl-pseudoaxis-common-hkl-private: hkl Reference Manual

hkl-pseudoaxis-common-hkl-private

hkl-pseudoaxis-common-hkl-private

Description

Functions

RUBh_minus_Q ()

int
RUBh_minus_Q (double const x[],
              void *params,
              double f[]);

[skip]


hkl_is_reachable ()

int
hkl_is_reachable (HklEngine *engine,
                  double wavelength,
                  GError **error);

hkl_mode_get_hkl_real ()

int
hkl_mode_get_hkl_real (HklMode *self,
                       HklEngine *engine,
                       HklGeometry *geometry,
                       HklDetector *detector,
                       HklSample *sample,
                       GError **error);

hkl_mode_set_hkl_real ()

int
hkl_mode_set_hkl_real (HklMode *self,
                       HklEngine *engine,
                       HklGeometry *geometry,
                       HklDetector *detector,
                       HklSample *sample,
                       GError **error);

hkl_mode_initialized_set_psi_constant_vertical_real ()

int
hkl_mode_initialized_set_psi_constant_vertical_real
                               (HklMode *base,
                                HklEngine *engine,
                                HklGeometry *geometry,
                                HklDetector *detector,
                                HklSample *sample,
                                int initialized,
                                GError **error);

hkl_engine_hkl_new ()

HklEngine *
hkl_engine_hkl_new (HklEngineList *engines);

CONSTANT_PARAMETER()

#define             CONSTANT_PARAMETER(_name)

PSI_CONSTANT_PARAMETERS()

#define             PSI_CONSTANT_PARAMETERS(_h2, _k2, _l2, _psi)

HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS()

#define             HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS(_x, _y, _z, _emergence)

hkl_mode_hkl_emergence_fixed_new ()

HklMode *
hkl_mode_hkl_emergence_fixed_new (const HklModeAutoInfo *info);

Types and Values

struct HklEngineHkl

struct HklEngineHkl {
	HklEngine engine;
	HklParameter *h;
	HklParameter *k;
	HklParameter *l;
};

HKL_MODE_OPERATIONS_HKL_DEFAULTS

#define             HKL_MODE_OPERATIONS_HKL_DEFAULTS

HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS

#define             HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS

HKL_PARAMETER_EMERGENCE_DEFAULTS

#define             HKL_PARAMETER_EMERGENCE_DEFAULTS

HKL_PARAMETER_EMERGENCE_AZIMUTH_DEFAULTS

#define             HKL_PARAMETER_EMERGENCE_AZIMUTH_DEFAULTS
hkl-5.1.7/Documentation/api/html/hkl-list.html0000664000175000017500000010356615144640567020256 0ustar00piccapicca list: hkl Reference Manual

list

list

Functions

struct list_head * list_check ()
struct list_node * list_check_node ()
#define list_debug()
#define list_debug_node()
#define LIST_HEAD_INIT()
#define LIST_HEAD()
void list_head_init ()
void list_node_init ()
#define list_add_after()
void list_add_after_ ()
#define list_add()
void list_add_ ()
#define list_add_before()
void list_add_before_ ()
#define list_add_tail()
void list_add_tail_ ()
#define list_empty()
bool list_empty_ ()
#define list_empty_nodebug()
bool list_empty_nocheck ()
#define list_del()
void list_del_ ()
#define list_del_init()
void list_del_init_ ()
void list_del_from ()
#define list_swap()
void list_swap_ ()
#define list_entry()
#define list_top()
const void * list_top_ ()
#define list_pop()
const void * list_pop_ ()
#define list_tail()
const void * list_tail_ ()
#define list_for_each()
#define list_for_each_rev()
#define list_for_each_rev_safe()
#define list_for_each_safe()
#define list_next()
#define list_prev()
#define list_append_list()
void list_append_list_ ()
#define list_prepend_list()
void list_prepend_list_ ()
#define list_for_each_off_dir_()
#define list_for_each_safe_off_dir_()
#define list_for_each_off()
#define list_for_each_rev_off()
#define list_for_each_safe_off()
#define list_for_each_rev_safe_off()
#define list_entry_off()
#define list_head_off()
#define list_tail_off()
#define list_add_off()
#define list_del_off()
#define list_del_from_off()
void * list_node_to_off_ ()
struct list_node * list_node_from_off_ ()
#define list_off_()
#define list_off_var_()
#define list_typeof()
void * list_entry_or_null ()

Types and Values

struct list_node
struct list_head
#define LIST_LOC

Description

Functions

list_check ()

struct list_head *
list_check (const struct list_head *h,
            const char *abortstr);

list_check_node ()

struct list_node *
list_check_node (const struct list_node *n,
                 const char *abortstr);

list_debug()

#define list_debug(h, loc) list_check((h), loc)

list_debug_node()

#define list_debug_node(n, loc) list_check_node((n), loc)

LIST_HEAD_INIT()

#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }

LIST_HEAD()

#define             LIST_HEAD(name)

list_head_init ()

void
list_head_init (struct list_head *h);

list_node_init ()

void
list_node_init (struct list_node *n);

list_add_after()

#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC)

list_add_after_ ()

void
list_add_after_ (struct list_head *h,
                 struct list_node *p,
                 struct list_node *n,
                 const char *abortstr);

list_add()

#define list_add(h, n) list_add_(h, n, LIST_LOC)

list_add_ ()

void
list_add_ (struct list_head *h,
           struct list_node *n,
           const char *abortstr);

list_add_before()

#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC)

list_add_before_ ()

void
list_add_before_ (struct list_head *h,
                  struct list_node *p,
                  struct list_node *n,
                  const char *abortstr);

list_add_tail()

#define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC)

list_add_tail_ ()

void
list_add_tail_ (struct list_head *h,
                struct list_node *n,
                const char *abortstr);

list_empty()

#define list_empty(h) list_empty_(h, LIST_LOC)

list_empty_ ()

bool
list_empty_ (const struct list_head *h,
             const char *abortstr);

list_empty_nodebug()

#define list_empty_nodebug(h) list_empty(h)

list_empty_nocheck ()

bool
list_empty_nocheck (const struct list_head *h);

list_del()

#define list_del(n) list_del_(n, LIST_LOC)

list_del_ ()

void
list_del_ (struct list_node *n,
           const char *abortstr);

list_del_init()

#define list_del_init(n) list_del_init_(n, LIST_LOC)

list_del_init_ ()

void
list_del_init_ (struct list_node *n,
                const char *abortstr);

list_del_from ()

void
list_del_from (struct list_head *h,
               struct list_node *n);

Example: list_del_init(&child->list); parent->num_children--;

[), list_del(]


list_swap()

#define list_swap(o, n) list_swap_(o, n, LIST_LOC)

list_swap_ ()

void
list_swap_ (struct list_node *o,
            struct list_node *n,
            const char *abortstr);

list_entry()

#define list_entry(n, type, member) container_of(n, type, member)

list_top()

#define             list_top(h, type, member)

list_top_ ()

const void *
list_top_ (const struct list_head *h,
           size_t off);

list_pop()

#define             list_pop(h, type, member)

list_pop_ ()

const void *
list_pop_ (const struct list_head *h,
           size_t off);

list_tail()

#define             list_tail(h, type, member)

list_tail_ ()

const void *
list_tail_ (const struct list_head *h,
            size_t off);

list_for_each()

#define             list_for_each(h, i, member)

list_for_each_rev()

#define             list_for_each_rev(h, i, member)

list_for_each_rev_safe()

#define             list_for_each_rev_safe(h, i, nxt, member)

list_for_each_safe()

#define             list_for_each_safe(h, i, nxt, member)

list_next()

#define             list_next(h, i, member)

list_prev()

#define             list_prev(h, i, member)

list_append_list()

#define             list_append_list(t, f)

list_append_list_ ()

void
list_append_list_ (struct list_head *to,
                   struct list_head *from,
                   const char *abortstr);

list_prepend_list()

#define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC)

list_prepend_list_ ()

void
list_prepend_list_ (struct list_head *to,
                    struct list_head *from,
                    const char *abortstr);

list_for_each_off_dir_()

#define             list_for_each_off_dir_(h, i, off, dir)

list_for_each_safe_off_dir_()

#define             list_for_each_safe_off_dir_(h, i, nxt, off, dir)

list_for_each_off()

#define             list_for_each_off(h, i, off)

list_for_each_rev_off()

#define             list_for_each_rev_off(h, i, off)

list_for_each_safe_off()

#define             list_for_each_safe_off(h, i, nxt, off)

list_for_each_rev_safe_off()

#define             list_for_each_rev_safe_off(h, i, nxt, off)

list_entry_off()

#define             list_entry_off(n, type, off)

list_head_off()

#define             list_head_off(h, type, off)

list_tail_off()

#define             list_tail_off(h, type, off)

list_add_off()

#define             list_add_off(h, n, off)

list_del_off()

#define             list_del_off(n, off)

list_del_from_off()

#define             list_del_from_off(h, n, off)

list_node_to_off_ ()

void *
list_node_to_off_ (struct list_node *node,
                   size_t off);

list_node_from_off_ ()

struct list_node *
list_node_from_off_ (void *ptr,
                     size_t off);

list_off_()

#define             list_off_(type, member)

list_off_var_()

#define             list_off_var_(var, member)

list_typeof()

#define list_typeof(var) typeof(var)

list_entry_or_null ()

void *
list_entry_or_null (const struct list_head *h,
                    const struct list_node *n,
                    size_t off);

Types and Values

struct list_node

struct list_node {
	struct list_node *next, *prev;
};

struct list_head

struct list_head {
	struct list_node n;
};

LIST_LOC

#define LIST_LOC __FILE__  ":" stringify(__LINE__)
hkl-5.1.7/Documentation/api/html/hkl-build-assert.html0000664000175000017500000000634415144640567021675 0ustar00piccapicca build_assert: hkl Reference Manual

build_assert

build_assert

Functions

#define BUILD_ASSERT()
#define BUILD_ASSERT_OR_ZERO()

Description

Functions

BUILD_ASSERT()

#define             BUILD_ASSERT(cond)

BUILD_ASSERT_OR_ZERO()

#define             BUILD_ASSERT_OR_ZERO(cond)
hkl-5.1.7/Documentation/api/html/hkl-hkl-source-private.html0000664000175000017500000003403715144640567023023 0ustar00piccapicca hkl-source-private: hkl Reference Manual

hkl-source-private

hkl-source-private

Types and Values

Description

Functions

hkl_source_dup ()

HklSource *
hkl_source_dup (const HklSource *self);

copy constructor TODO test

Parameters

self

the Hklsource to copy

 

hkl_source_free ()

void
hkl_source_free (HklSource *self);

destructor TODO: test

Parameters

self

the Hklsource to delete

 

hkl_source_init ()

int
hkl_source_init (HklSource *self,
                 double wave_length,
                 double x,
                 double y,
                 double z);

initialize the HklSource

Parameters

self

the Hklsource to initialize

 

wave_length

the wave length to set

 

x

x coordinates of the ki vector

 

y

y coordinates of the ki vector

 

z

z coordinates of the ki vector

 

Returns

HKL_SUCCESS if everythongs goes fine, HKL_FAIL otherwise


hkl_source_cmp ()

int
hkl_source_cmp (HklSource const *self,
                HklSource const *s);

compare two sources

[skip]

Parameters

self

1st Hklsource

 

s

2nd Hklsource

 

hkl_source_compute_ki ()

void
hkl_source_compute_ki (HklSource const *self,
                       HklVector *ki);

compute the ki hkl_vector

[skip]

Parameters

ki

.

[out caller-allocates]

hkl_source_get_wavelength ()

double
hkl_source_get_wavelength (HklSource const *self);

get the wave_length

[skip]

Returns

the wave_length


hkl_source_fprintf ()

void
hkl_source_fprintf (FILE *f,
                    HklSource const *self);

printf the source

[skip]

Types and Values

HKL_SOURCE_DEFAULT_WAVE_LENGTH

#define HKL_SOURCE_DEFAULT_WAVE_LENGTH (1.54)

struct HklSource

struct HklSource {
	double wave_length;
	HklVector direction;
};
hkl-5.1.7/Documentation/api/html/right-insensitive.png0000644000175000017500000000056515144640567022013 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8͒J` /S_$AqrW(>m"]\(49.Nd39{eM#MSIιEiHz|3{̲l3,KkV'@EEQlwyiq]Kh4:mĦ,;ts\aR5/7'Wps׭I,K1=0j0Wg> PU𻤝0 ]?qCҫιg~kA_IENDB`hkl-5.1.7/Documentation/api/html/style.css0000644000175000017500000002740315144640567017504 0ustar00piccapiccabody { font-family: cantarell, sans-serif; } .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; background: rgba(238, 238, 236, 0.5); border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; background: rgba(114, 159, 207, 0.1); border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } span.nowrap { white-space: nowrap; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } .function_type, .variable_type, .property_type, .signal_type, .parameter_name, .struct_member_name, .union_member_name, .define_keyword, .datatype_keyword, .typedef_keyword { text-align: right; } /* dim non-primary columns */ .c_punctuation, .function_type, .variable_type, .property_type, .signal_type, .define_keyword, .datatype_keyword, .typedef_keyword, .property_flags, .signal_flags, .parameter_annotations, .enum_member_annotations, .struct_member_annotations, .union_member_annotations { color: #888a85; } .function_type a, .function_type a:visited, .function_type a:hover, .property_type a, .property_type a:visited, .property_type a:hover, .signal_type a, .signal_type a:visited, .signal_type a:hover, .signal_flags a, .signal_flags a:visited, .signal_flags a:hover { color: #729fcf; } td p { margin: 0.25em; } div.informaltable table[border="1"], div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.informaltable table[border="1"] td, div.informaltable table th, div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.informaltable table[border="1"] th, div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } h4 { color: #555753; margin-top: 1em; margin-bottom: 1em; } hr { /* tango:aluminium 1 */ color: #d3d7cf; background: #d3d7cf; border: none 0px; height: 1px; clear: both; margin: 2.0em 0em 2.0em 0em; } dl.toc dt { padding-bottom: 0.25em; } dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; font-weight: bold; } dl.toc > dl { padding-bottom: 0.5em; } .parameter { font-style: normal; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .informalfigure, .figure { margin: 1em; } .informalexample, .example { margin-top: 1em; margin-bottom: 1em; } .warning { /* tango:orange 0/1 */ background: #ffeed9; background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; background: rgba(138, 226, 52, 0.1); border-color: #abf562; border-color: rgba(138, 226, 52, 0.2); } div.blockquote { border-color: #eeeeec; } .note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; margin: 2em; } .note p, .warning p { margin: 0; } div.warning h3.title, div.note h3.title { display: none; } p + div.section { margin-top: 1em; } div.refnamediv, div.refsynopsisdiv, div.refsect1, div.refsect2, div.toc, div.section { margin-bottom: 1em; } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .lineart { color: #d3d7cf; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-weight: normal; } .structfield { font-style: normal; font-weight: normal; } acronym,abbr { border-bottom: 1px dotted gray; } .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; background: none; } .listing_lines pre, .listing_code pre { margin: 0px; } @media screen { /* these have a as a first child, but since there are no parent selectors * we can't use that. */ a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 2.5em; padding-bottom: 500px; max-width: 60em; } p { max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; background: #e2e2e2; border-bottom: solid 1px #babdb6; border-spacing: 5px; margin-top: 0; margin-bottom: 0; top: 0; left: 0; z-index: 10; } table.navigation#top td { padding-left: 6px; padding-right: 6px; } .navigation a, .navigation a:visited { /* tango:sky blue 3 */ color: #204a87; } .navigation a:hover { /* tango:sky blue 2 */ color: #3465a4; } td.shortcuts { /* tango:sky blue 2 */ color: #3465a4; font-size: 80%; white-space: nowrap; } td.shortcuts .dim { color: #babdb6; } .navigation .title { font-size: 80%; max-width: none; margin: 0px; font-weight: normal; } } @media screen and (min-width: 60em) { /* screen larger than 60em */ body { margin: auto; } } @media screen and (max-width: 60em) { /* screen less than 60em */ #nav_hierarchy { display: none; } #nav_interfaces { display: none; } #nav_prerequisites { display: none; } #nav_derived_interfaces { display: none; } #nav_implementations { display: none; } #nav_child_properties { display: none; } #nav_style_properties { display: none; } #nav_index { display: none; } #nav_glossary { display: none; } .gallery_image { display: none; } .property_flags { display: none; } .signal_flags { display: none; } .parameter_annotations { display: none; } .enum_member_annotations { display: none; } .struct_member_annotations { display: none; } .union_member_annotations { display: none; } /* now that a column is hidden, optimize space */ col.parameters_name { width: auto; } col.parameters_description { width: auto; } col.struct_members_name { width: auto; } col.struct_members_description { width: auto; } col.enum_members_name { width: auto; } col.enum_members_description { width: auto; } col.union_members_name { width: auto; } col.union_members_description { width: auto; } .listing_lines { display: none; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; background: #e2e2e2; border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .hll { background-color: #ffffcc } .c { color: #3D7B7B; font-style: italic } /* Comment */ .err { border: 1px solid #F00 } /* Error */ .k { color: #008000; font-weight: bold } /* Keyword */ .o { color: #666 } /* Operator */ .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ .cp { color: #9C6500 } /* Comment.Preproc */ .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ .gd { color: #A00000 } /* Generic.Deleted */ .ge { font-style: italic } /* Generic.Emph */ .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .gr { color: #E40000 } /* Generic.Error */ .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .gi { color: #008400 } /* Generic.Inserted */ .go { color: #717171 } /* Generic.Output */ .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ .gs { font-weight: bold } /* Generic.Strong */ .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .gt { color: #04D } /* Generic.Traceback */ .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .kp { color: #008000 } /* Keyword.Pseudo */ .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .kt { color: #B00040 } /* Keyword.Type */ .m { color: #666 } /* Literal.Number */ .s { color: #BA2121 } /* Literal.String */ .na { color: #687822 } /* Name.Attribute */ .nb { color: #008000 } /* Name.Builtin */ .nc { color: #00F; font-weight: bold } /* Name.Class */ .no { color: #800 } /* Name.Constant */ .nd { color: #A2F } /* Name.Decorator */ .ni { color: #717171; font-weight: bold } /* Name.Entity */ .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ .nf { color: #00F } /* Name.Function */ .nl { color: #767600 } /* Name.Label */ .nn { color: #00F; font-weight: bold } /* Name.Namespace */ .nt { color: #008000; font-weight: bold } /* Name.Tag */ .nv { color: #19177C } /* Name.Variable */ .ow { color: #A2F; font-weight: bold } /* Operator.Word */ .w { color: #BBB } /* Text.Whitespace */ .mb { color: #666 } /* Literal.Number.Bin */ .mf { color: #666 } /* Literal.Number.Float */ .mh { color: #666 } /* Literal.Number.Hex */ .mi { color: #666 } /* Literal.Number.Integer */ .mo { color: #666 } /* Literal.Number.Oct */ .sa { color: #BA2121 } /* Literal.String.Affix */ .sb { color: #BA2121 } /* Literal.String.Backtick */ .sc { color: #BA2121 } /* Literal.String.Char */ .dl { color: #BA2121 } /* Literal.String.Delimiter */ .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ .s2 { color: #BA2121 } /* Literal.String.Double */ .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ .sh { color: #BA2121 } /* Literal.String.Heredoc */ .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ .sx { color: #008000 } /* Literal.String.Other */ .sr { color: #A45A77 } /* Literal.String.Regex */ .s1 { color: #BA2121 } /* Literal.String.Single */ .ss { color: #19177C } /* Literal.String.Symbol */ .bp { color: #008000 } /* Name.Builtin.Pseudo */ .fm { color: #00F } /* Name.Function.Magic */ .vc { color: #19177C } /* Name.Variable.Class */ .vg { color: #19177C } /* Name.Variable.Global */ .vi { color: #19177C } /* Name.Variable.Instance */ .vm { color: #19177C } /* Name.Variable.Magic */ .il { color: #666 } /* Literal.Number.Integer.Long */hkl-5.1.7/Documentation/api/html/hkl-hkl-geometry-private.html0000664000175000017500000013603515144640567023357 0ustar00piccapicca hkl-geometry-private: hkl Reference Manual

hkl-geometry-private

hkl-geometry-private

Functions

void (*HklGeometryListMultiplyFunction) ()
HklHolder * hkl_geometry_sample_holder_get_real ()
HklHolder * hkl_geometry_detector_holder_get_real ()
HklVector hkl_geometry_ki_get_real ()
HklVector hkl_geometry_kf_get_real ()
GQuark hkl_geometry_error_quark ()
HklParameter * hkl_holder_add_parameter ()
HklParameter * hkl_holder_add_rotation ()
HklParameter * hkl_holder_add_rotation_with_origin ()
HklParameter * hkl_holder_add_translation ()
HklVector hkl_holder_transformation_apply ()
HklGeometry * hkl_geometry_new ()
int hkl_geometry_init_geometry ()
HklHolder * hkl_geometry_add_holder ()
void hkl_geometry_update ()
int hkl_geometry_get_axis_idx_by_name ()
HklParameter * hkl_geometry_get_axis_by_name ()
double hkl_geometry_distance ()
double hkl_geometry_distance_orthodromic ()
int hkl_geometry_closest_from_geometry_with_range ()
int hkl_geometry_is_valid ()
int hkl_geometry_is_valid_range ()
HklHolder * hkl_geometry_sample_holder_get ()
HklHolder * hkl_geometry_detector_holder_get ()
HklGeometryList * hkl_geometry_list_new ()
HklGeometryList * hkl_geometry_list_new_copy ()
void hkl_geometry_list_add ()
void hkl_geometry_list_reset ()
void hkl_geometry_list_sort ()
void hkl_geometry_list_fprintf ()
void hkl_geometry_list_multiply ()
void hkl_geometry_list_multiply_from_range ()
void hkl_geometry_list_remove_invalid ()
HklGeometryListItem * hkl_geometry_list_item_new ()
HklGeometryListItem * hkl_geometry_list_item_new_copy ()
void hkl_geometry_list_item_free ()

Description

Functions

HklGeometryListMultiplyFunction ()

void
(*HklGeometryListMultiplyFunction) (HklGeometryList *self,
                                    HklGeometryListItem *item);

hkl_geometry_sample_holder_get_real ()

HklHolder *
hkl_geometry_sample_holder_get_real (const HklGeometry *self);

hkl_geometry_detector_holder_get_real ()

HklHolder *
hkl_geometry_detector_holder_get_real (const HklGeometry *self);

hkl_geometry_ki_get_real ()

HklVector
hkl_geometry_ki_get_real (const HklGeometry *self);

hkl_geometry_kf_get_real ()

HklVector
hkl_geometry_kf_get_real (const HklGeometry *self);

hkl_geometry_error_quark ()

GQuark
hkl_geometry_error_quark (void);

hkl_holder_add_parameter ()

HklParameter *
hkl_holder_add_parameter (HklHolder *self,
                          char const *name);

hkl_holder_add_rotation ()

HklParameter *
hkl_holder_add_rotation (HklHolder *self,
                         char const *name,
                         double x,
                         double y,
                         double z);

hkl_holder_add_rotation_with_origin ()

HklParameter *
hkl_holder_add_rotation_with_origin (HklHolder *self,
                                     const char *name,
                                     double x,
                                     double y,
                                     double z,
                                     double ox,
                                     double oy,
                                     double oz);

hkl_holder_add_translation ()

HklParameter *
hkl_holder_add_translation (HklHolder *self,
                            char const *name,
                            double x,
                            double y,
                            double z);

hkl_holder_transformation_apply ()

HklVector
hkl_holder_transformation_apply (const HklHolder *self);

hkl_geometry_new ()

HklGeometry *
hkl_geometry_new (const HklFactory *factory,
                  const HklGeometryOperations *ops);

constructor

[skip]


hkl_geometry_init_geometry ()

int
hkl_geometry_init_geometry (HklGeometry *self);

initilize an HklGeometry

[skip]

Parameters

self

the this ptr

 

src

the HklGeometry to set from

 

Returns

TRUE on success, FALSE if an error occurred


hkl_geometry_add_holder ()

HklHolder *
hkl_geometry_add_holder ();

add an Holder to the HklGeometry

[skip]


hkl_geometry_update ()

void
hkl_geometry_update ();

update the geometry internal once an Axis values changed

[skip]


hkl_geometry_get_axis_idx_by_name ()

int
hkl_geometry_get_axis_idx_by_name (const HklGeometry *self);

get the index of the axes named name in the geometry

[skip]

Returns

-1 if the axis was not found


hkl_geometry_get_axis_by_name ()

HklParameter *
hkl_geometry_get_axis_by_name (HklGeometry *self);

get an HklAxis using its name

Returns

.

[transfer none]


hkl_geometry_distance ()

double
hkl_geometry_distance (const HklGeometry *self);

compute the distance between two HklGeometries

Parameters

self

the this ptr

 

ref

the HklGeometry to compare with

 

Returns

the distance between the two geometries


hkl_geometry_distance_orthodromic ()

double
hkl_geometry_distance_orthodromic (const HklGeometry *self);

[skip]

Parameters

self

the this ptr

 

ref

the reference HklGeometry to compare with.

 

Returns

the orthodromique distance


hkl_geometry_closest_from_geometry_with_range ()

int
hkl_geometry_closest_from_geometry_with_range
                               (HklGeometry *self);

get the closest axes values in the HklInterval compatible with the current axes values

[skip]


hkl_geometry_is_valid ()

int
hkl_geometry_is_valid ();

check if all axes of the HklGeometry are valid.

[skip]


hkl_geometry_is_valid_range ()

int
hkl_geometry_is_valid_range ();

check if all axes of the HklGeometry are valid. (there is a difference for axis)

[skip]


hkl_geometry_sample_holder_get ()

HklHolder *
hkl_geometry_sample_holder_get (const HklGeometry *self);

hkl_geometry_detector_holder_get ()

HklHolder *
hkl_geometry_detector_holder_get (const HklGeometry *self);

hkl_geometry_list_new ()

HklGeometryList *
hkl_geometry_list_new (void);

constructor

[skip]


hkl_geometry_list_new_copy ()

HklGeometryList *
hkl_geometry_list_new_copy ();

copy constructor

[skip]


hkl_geometry_list_add ()

void
hkl_geometry_list_add (HklGeometryList *self);

this method Add a geometry to the geometries

This method try to be clever by allocating memory only if the current length of the geometries is not large enought. Then it just set the geometry axes and copy it to the right geometries. We do not gives the x len as it is equal to the self->axes_len.

[skip]

Parameters

self

The current HklGeometryList

 

geometry

the HklGeometry to add

 

hkl_geometry_list_reset ()

void
hkl_geometry_list_reset ();

reset the HklGeometry, in fact it is a sort of clean method remove all the items of the list.

[skip]

Parameters

self

the this ptr

 

hkl_geometry_list_sort ()

void
hkl_geometry_list_sort (HklGeometryList *self);

sort the HklGeometryList compare to the distance of the given HklGeometry

[skip]


hkl_geometry_list_fprintf ()

void
hkl_geometry_list_fprintf (FILE *f);

print to a file the HklGeometryList

[skip]


hkl_geometry_list_multiply ()

void
hkl_geometry_list_multiply ();

apply the multiply lenthod to the HklGeometry

[skip]


hkl_geometry_list_multiply_from_range ()

void
hkl_geometry_list_multiply_from_range ();

hkl_geometry_list_remove_invalid ()

void
hkl_geometry_list_remove_invalid ();

remove all invalid HklGeometry from the HklGeometryList

[skip]


hkl_geometry_list_item_new ()

HklGeometryListItem *
hkl_geometry_list_item_new ();

constructor

[skip]


hkl_geometry_list_item_new_copy ()

HklGeometryListItem *
hkl_geometry_list_item_new_copy ();

copy constructor

[skip]


hkl_geometry_list_item_free ()

void
hkl_geometry_list_item_free ();

destructor

[skip]

Types and Values

HKL_HOLDER_SAMPLE_IDX

#define HKL_HOLDER_SAMPLE_IDX 0

HKL_HOLDER_DETECTOR_IDX

#define HKL_HOLDER_DETECTOR_IDX 1

darray_holder

typedef darray(HklHolder *) darray_holder;

struct HklHolderConfig

struct HklHolderConfig {
	int gc;
	size_t *idx;
	size_t len;
};

struct HklHolder

struct HklHolder {
	struct HklHolderConfig *config;
	HklGeometry *geometry;
	HklQuaternion q;
};

struct HklGeometryOperations

struct HklGeometryOperations {
	HklHolder* (*sample_holder_get) (const HklGeometry *self, const HklSample *sample);

	HklHolder* (*detector_holder_get) (const HklGeometry *self, const HklDetector *detector);

	HklVector (*ki_get) (const HklGeometry *geometry);

	HklVector (*kf_get) (const HklGeometry *self, const HklDetector *detector);
};

HklGeometry

typedef struct {
	const HklFactory *factory;
	HklSource source;
	darray_parameter axes;
	darray_holder holders;
	const HklGeometryOperations *ops;
} HklGeometry;

HKL_GEOMETRY_OPERATIONS_DEFAULTS

#define             HKL_GEOMETRY_OPERATIONS_DEFAULTS

hkl_geometry_operations_defaults

extern const HklGeometryOperations hkl_geometry_operations_defaults;

HKL_GEOMETRY_ERROR

#define HKL_GEOMETRY_ERROR hkl_geometry_error_quark ()

enum HklGeometryError

Members

HKL_GEOMETRY_ERROR_AXIS_GET

   

HKL_GEOMETRY_ERROR_AXIS_SET

   

HklGeometryList

typedef struct {
	HklGeometryListMultiplyFunction multiply;
	struct list_head items;
	size_t n_items;
} HklGeometryList;

HklGeometryListItem

typedef struct {
	struct list_node list;
	HklGeometry *geometry;
} HklGeometryListItem;
hkl-5.1.7/Documentation/api/html/hkl-generator.html0000664000175000017500000003503415144640567021263 0ustar00piccapicca generator: hkl Reference Manual

generator

generator

Functions

Types and Values

Description

Functions

generator_state_ ()

struct generator_ *
generator_state_ (const void *ret);

generator_argp_ ()

void *
generator_argp_ (const void *ret);

generator_rtype_()

#define             generator_rtype_(gen_)

generator_new_ ()

void *
generator_new_ (void (*fn) (void *),
                size_t retsize);

generator_free_ ()

void
generator_free_ (void *ret,
                 size_t retsize);

generator_t()

#define             generator_t(rtype_)

generator_declare()

#define             generator_declare(name_, rtype_, ...)

generator_parm_()

#define generator_parm_(t_, n_)			t_ n_

generator_parms_()

#define             generator_parms_(...)

generator_parms_inner_()

#define             generator_parms_inner_(...)

generator_parms_outer_()

#define             generator_parms_outer_(...)

generator_argfield_()

#define generator_argfield_(t_, n_)		t_ n_;

generator_argstruct_()

#define             generator_argstruct_(...)

generator_arg_unpack_()

#define generator_arg_unpack_(t_, n_)		args->n_

generator_args_unpack_()

#define             generator_args_unpack_(...)

generator_arg_pack_()

#define generator_arg_pack_(t_, n_)		args->n_ = n_

generator_args_pack_()

#define             generator_args_pack_(...)

generator_def_()

#define             generator_def_(name_, rtype_, storage_, ...)

generator_def()

#define             generator_def(name_, rtype_, ...)

generator_def_static()

#define             generator_def_static(name_, rtype_, ...)

generator_yield()

#define             generator_yield(val_)

generator_next_ ()

void *
generator_next_ (void *ret_);

generator_next()

#define             generator_next(gen_)

generator_next_val()

#define             generator_next_val(val_, gen_)

generator_free()

#define             generator_free(gen_)

Types and Values

struct generator_

struct generator_ {
	struct coroutine_state gen;
	struct coroutine_state caller;
	bool complete;
	void *base;
};

struct generator_incomplete_

struct generator_incomplete_;
hkl-5.1.7/Documentation/api/html/up-insensitive.png0000644000175000017500000000056615144640567021323 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8?/Qϙ?[u$VHTDۈBM+! hkl-pseudoaxis-private: hkl Reference Manual

hkl-pseudoaxis-private

hkl-pseudoaxis-private

Description

Functions

HKL_MODE_INFO_RO()

#define HKL_MODE_INFO_RO(_name, _axes) .name=_name, .axes_r=DARRAY(_axes)

HKL_MODE_INFO()

#define HKL_MODE_INFO(_name, _axes_r, _axes_w) HKL_MODE_INFO_RO((_name), (_axes_r)), .axes_w=DARRAY((_axes_w))

HKL_MODE_INFO_RO_WITH_PARAMS()

#define HKL_MODE_INFO_RO_WITH_PARAMS(_name, _axes, _parameters) HKL_MODE_INFO_RO((_name), (_axes)), .parameters=DARRAY(_parameters)

HKL_MODE_INFO_WITH_PARAMS()

#define             HKL_MODE_INFO_WITH_PARAMS(_name, _axes_r, _axes_w, _parameters)

hkl_mode_free_real ()

void
hkl_mode_free_real (HklMode *self);

hkl_mode_initialized_get_real ()

int
hkl_mode_initialized_get_real (const HklMode *self);

hkl_mode_initialized_get ()

int
hkl_mode_initialized_get (const HklMode *self);

hkl_mode_initialized_set_real ()

int
hkl_mode_initialized_set_real ();

hkl_mode_initialized_set ()

int
hkl_mode_initialized_set (HklMode *self,
                          HklEngine *engine,
                          HklGeometry *geometry,
                          HklDetector *detector,
                          HklSample *sample,
                          int initialized,
                          GError **error);

hkl_mode_get_real ()

int
hkl_mode_get_real ();

hkl_mode_set_real ()

int
hkl_mode_set_real ();

hkl_mode_init ()

int
hkl_mode_init (HklMode *self,
               const HklModeInfo *info,
               const HklModeOperations *ops);

hkl_mode_new ()

HklMode *
hkl_mode_new (const HklModeInfo *info,
              const HklModeOperations *op,
              int initialized);

hkl_mode_free ()

void
hkl_mode_free (HklMode *self);

delete an HklMode

[skip]


HKL_ENGINE_INFO()

#define             HKL_ENGINE_INFO(_name, _pseudo_axes, _dependencies)

HKL_ENGINE_LIST_INFO()

#define HKL_ENGINE_LIST_INFO(_parameters) .parameters = DARRAY(_parameters)

hkl_engine_error_quark ()

GQuark
hkl_engine_error_quark ();

set_geometry_axes ()

void
set_geometry_axes (HklEngine *engine,
                   const double values[]);

hkl_engine_release ()

void
hkl_engine_release (HklEngine *self);

hkl_engine_free_real ()

void
hkl_engine_free_real ();

hkl_engine_free ()

void
hkl_engine_free (HklEngine *self);

hkl_engine_init ()

void
hkl_engine_init (HklEngine *self,
                 const HklEngineInfo *info,
                 const HklEngineOperations *ops,
                 HklEngineList *engines);

register_mode_parameter ()

HklParameter *
register_mode_parameter (HklMode *mode,
                         unsigned int index);

register_pseudo_axis ()

HklParameter *
register_pseudo_axis (HklEngine *self,
                      HklEngineList *engines,
                      const HklParameter *pseudo_axis);

hkl_engine_add_mode ()

void
hkl_engine_add_mode (HklEngine *self);

add an HklMode to the self HklEngine

[skip]

Parameters

mode

the mode to add

 

hkl_engine_add_geometry ()

void
hkl_engine_add_geometry (HklEngine *self,
                         double const x[]);

This method try to be clever by allocating memory only if the current length of the geometries is not large enought. Then it just set the geometry axes and copy it to the right geometries. We do not gives the x len as it is equal to the self->axes_len.

[skip]

Parameters

self

the current PseudoAxeEngine

 

x

x A vector of double with the axes values to put in the geometry.

 

hkl_engine_prepare_internal ()

void
hkl_engine_prepare_internal (HklEngine *self);

hkl_engine_mode_set ()

void
hkl_engine_mode_set (HklEngine *self,
                     HklMode *mode);

This method also populate the self->axes from the mode->axis_names. this is to speed the computation of the numerical axes.

[skip]

Parameters

self

the HklEngine

 

name

the mode to select

 

hkl_engine_get ()

int
hkl_engine_get (HklEngine *self);

get the values of the pseudo-axes from the real-axes values

[skip]

Parameters

self

The HklEngine

 

error

return location for a GError, or NULL

 

Returns

TRUE if succeded or FALSE otherwise.


hkl_engine_list_post_engine_set ()

int
hkl_engine_list_post_engine_set ();

hkl_engine_set ()

int
hkl_engine_set (HklEngine *self,
                GError **error);

use the HklPseudoaxisEngine values to compute the real axes values.

[skip]

Parameters

self

the HklEngine

 

error

return location for a GError, or NULL

 

Returns

TRUE if succeded or FALSE otherwise.


hkl_engine_list_error_quark ()

GQuark
hkl_engine_list_error_quark (void);

hkl_engine_list_clear ()

void
hkl_engine_list_clear (HklEngineList *self);

remove all engine from the engine list

[skip]

Parameters

self

the engine list to clear

 

hkl_engine_list_free_real ()

void
hkl_engine_list_free_real (HklEngineList *self);

destructor

[skip]

Parameters

self

the HklEngineList to destroy

 

hkl_engine_list_post_engine_set_real ()

int
hkl_engine_list_post_engine_set_real ();

hkl_engine_list_new_with_info ()

HklEngineList *
hkl_engine_list_new_with_info (const HklEngineListInfo *info,
                               const HklEngineListOperations *ops);

default constructor with info part

[skip]

Parameters

info

the info part of the HklEngineList

 

hkl_engine_list_new ()

HklEngineList *
hkl_engine_list_new (void);

default constructor

[skip]


hkl_engine_list_new_copy ()

HklEngineList *
hkl_engine_list_new_copy ();

dummy copy constructor for the binding

[skip]

Returns

NULL all the time the structure is non-copyable.

[transfer none]

Types and Values

darray_mode

typedef darray(HklMode *) darray_mode;

struct HklModeInfo

struct HklModeInfo {
	const char *name;
	const darray_string axes_r;
	const darray_string axes_w;
	const darray(const HklParameter) parameters;
};

struct HklModeOperations

struct HklModeOperations {
	unsigned long capabilities;

	void (* free)(HklMode *self);
	int (* initialized_get)(const HklMode *self);
	int (* initialized_set)(HklMode *self,
				HklEngine *engine,
				HklGeometry *geometry,
				HklDetector *detector,
				HklSample *sample,
				int initialized,
				GError **error);
	int (* get)(HklMode *self,
		    HklEngine *engine,
		    HklGeometry *geometry,
		    HklDetector *detector,
		    HklSample *sample,
		    GError **error);
	int (* set)(HklMode *self,
		    HklEngine *engine,
		    HklGeometry *geometry,
		    HklDetector *detector,
		    HklSample *sample,
		    GError **error);
};

HKL_MODE_OPERATIONS_DEFAULTS

#define             HKL_MODE_OPERATIONS_DEFAULTS

struct HklMode

struct HklMode {
	const HklModeInfo *info;
	const HklModeOperations *ops;
	darray_parameter parameters;
	darray_string parameters_names;
	int initialized;
};

struct HklEngineInfo

struct HklEngineInfo {
	const char *name;
	const darray(const HklParameter *) pseudo_axes;
	unsigned int dependencies;
};

HklEngine

typedef struct {
	const HklEngineInfo *info;
	const HklEngineOperations *ops;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	HklMode *mode; /* not owned */
	HklEngineList *engines; /* not owned */
	darray_parameter axes;
	darray_parameter pseudo_axes;
	darray_string pseudo_axis_names;
	darray_mode modes;
	darray_string mode_names;
} HklEngine;

struct HklEngineListInfo

struct HklEngineListInfo {
	const darray(const HklParameter *) parameters;
};

HKL_ENGINE_LIST_INFO_DEFAULTS

#define HKL_ENGINE_LIST_INFO_DEFAULTS .parameters = darray_new()

struct HklEngineListOperations

struct HklEngineListOperations {
	void (* free)(HklEngineList *self);
	int (* post_engine_set)(HklEngineList *self);
};

HKL_ENGINE_LIST_OPERATIONS_DEFAULTS

#define             HKL_ENGINE_LIST_OPERATIONS_DEFAULTS

HklEngineList

typedef struct {
	_darray(HklEngine *); /* must be the first memeber */
	const HklEngineListInfo *info;
	const HklEngineListOperations *ops;
	HklGeometryList *geometries;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	darray_parameter pseudo_axes;
	darray_parameter parameters;
	darray_string parameters_names;
} HklEngineList;

HKL_ENGINE_ERROR

#define HKL_ENGINE_ERROR hkl_engine_error_quark ()

enum HklEngineError

Members

HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_GET

   

HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_SET

   

HKL_ENGINE_ERROR_PSEUDO_AXIS_SET

   

HKL_ENGINE_ERROR_INITIALIZE

   

HKL_ENGINE_ERROR_SET

   

HKL_ENGINE_ERROR_GET

   

HKL_ENGINE_ERROR_PARAMETER_GET

   

HKL_ENGINE_ERROR_PARAMETER_SET

   

HKL_ENGINE_ERROR_CURRENT_MODE_SET

   

struct HklEngineOperations

struct HklEngineOperations {
	void (*free)(HklEngine *self);
};

HKL_ENGINE_OPERATIONS_DEFAULTS

#define HKL_ENGINE_OPERATIONS_DEFAULTS .free=hkl_engine_free_real

HKL_ENGINE_LIST_ERROR

#define HKL_ENGINE_LIST_ERROR hkl_engine_list_error_quark ()

enum HklEngineListError

Members

HKL_ENGINE_LIST_ERROR_ENGINE_GET_BY_NAME

   

HKL_ENGINE_LIST_ERROR_PSEUDO_AXIS_GET_BY_NAME

   

HKL_ENGINE_LIST_ERROR_PARAMETER_GET

   

HKL_ENGINE_LIST_ERROR_PARAMETER_SET

   
hkl-5.1.7/Documentation/api/html/hkl-hkl.html0000664000175000017500000005755715144640567020071 0ustar00piccapicca hkl: hkl Reference Manual

hkl

hkl

Types and Values

Description

Functions

HKL_DEPRECATED_FOR()

# define HKL_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))

HKL_ARG_NONNULL()

# define HKL_ARG_NONNULL(...) __attribute__ ((__nonnull__(__VA_ARGS__)))

HKL_GEOMETRY_LIST_FOREACH()

#define             HKL_GEOMETRY_LIST_FOREACH(item, list)

HKL_SAMPLE_REFLECTIONS_FOREACH()

#define             HKL_SAMPLE_REFLECTIONS_FOREACH(_item, _list)

Types and Values

HKL_DEPRECATED

# define HKL_DEPRECATED __attribute__((__deprecated__))

HKL_TINY

#define HKL_TINY 1e-7

HKL_EPSILON

#define HKL_EPSILON 1e-6

HKL_DEGTORAD

#define HKL_DEGTORAD (M_PI/180.)

HKL_RADTODEG

#define HKL_RADTODEG (180./M_PI)

HKL_VERSION

#define HKL_VERSION "5.1.7"

HKL_TAU

#define HKL_TAU (2. * M_PI)

HKLAPI

#  define HKLAPI __attribute__ ((visibility("default")))

HKL_WARN_UNUSED_RESULT

#  define HKL_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__))

struct HklVector

struct HklVector {
	double data[3];
};

HKL_VECTOR_X

#define HKL_VECTOR_X {{1, 0, 0}}

HKL_VECTOR_Y

#define HKL_VECTOR_Y {{0, 1, 0}}

HKL_VECTOR_Z

#define HKL_VECTOR_Z {{0, 0, 1}}

struct HklQuaternion

struct HklQuaternion {
	double data[4];
};

darray_string

typedef darray(const char *) darray_string;

struct HklUnitDimension

struct HklUnitDimension {
	int l; /* Length */
	int m; /* Mass */
	int t; /* Time */
	int i; /* Electric current */
	int th; /* Thermodynamic temperature */
	int n; /* Amount of substance */
	int j; /* Luminous intensity */
};

HklDPlaneAngle

#define HklDPlaneAngle {0, 0, 0, 0, 0, 0, 0}

HklDLength

#define HklDLength {1, 0, 0, 0, 0, 0, 0}

enum HklUnitEnum

Members

HKL_UNIT_DEFAULT

   

HKL_UNIT_USER

   

struct HklUnit

struct HklUnit {
	HklUnitDimension dimension;
	double factor;
	char const *name;
	char const *repr;
};

hkl_unit_angle_deg

extern const HklUnit hkl_unit_angle_deg;

hkl_unit_angle_rad

extern const HklUnit hkl_unit_angle_rad;

hkl_unit_length_nm

extern const HklUnit hkl_unit_length_nm;

hkl_unit_angle_mrad

extern const HklUnit hkl_unit_angle_mrad;

hkl_unit_length_mm

extern const HklUnit hkl_unit_length_mm;

hkl_unit_length_meter

extern const HklUnit hkl_unit_length_meter;

enum HklDetectorType

Members

HKL_DETECTOR_TYPE_0D

   

darray_engine

typedef darray(HklEngine *) darray_engine;

enum HklEngineCapabilities

Members

HKL_ENGINE_CAPABILITIES_READABLE

   

HKL_ENGINE_CAPABILITIES_WRITABLE

   

HKL_ENGINE_CAPABILITIES_INITIALIZABLE

   

enum HklEngineAxisNamesGet

Members

HKL_ENGINE_AXIS_NAMES_GET_READ

   

HKL_ENGINE_AXIS_NAMES_GET_WRITE

   

enum HklEngineDependencies

Members

HKL_ENGINE_DEPENDENCIES_AXES

   

HKL_ENGINE_DEPENDENCIES_ENERGY

   

HKL_ENGINE_DEPENDENCIES_SAMPLE

   

HklDetector

typedef struct {
	size_t idx;
	HklHolder const *holder;
} HklDetector;

HklEngine

typedef struct {
	const HklEngineInfo *info;
	const HklEngineOperations *ops;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	HklMode *mode; /* not owned */
	HklEngineList *engines; /* not owned */
	darray_parameter axes;
	darray_parameter pseudo_axes;
	darray_string pseudo_axis_names;
	darray_mode modes;
	darray_string mode_names;
} HklEngine;

HklEngineList

typedef struct {
	_darray(HklEngine *); /* must be the first memeber */
	const HklEngineListInfo *info;
	const HklEngineListOperations *ops;
	HklGeometryList *geometries;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	darray_parameter pseudo_axes;
	darray_parameter parameters;
	darray_string parameters_names;
} HklEngineList;

HklFactory

typedef struct {
	const char *name;
	const char *description;
	const darray_string axes;
	HklFactoryGeometryFunction create_new_geometry;
	HklFactoryEngineListFunction create_new_engine_list;
} HklFactory;

HklGeometry

typedef struct {
	const HklFactory *factory;
	HklSource source;
	darray_parameter axes;
	darray_holder holders;
	const HklGeometryOperations *ops;
} HklGeometry;

HklGeometryList

typedef struct {
	HklGeometryListMultiplyFunction multiply;
	struct list_head items;
	size_t n_items;
} HklGeometryList;

HklGeometryListItem

typedef struct {
	struct list_node list;
	HklGeometry *geometry;
} HklGeometryListItem;

HklLattice

typedef struct {
	HklParameter *a;
	HklParameter *b;
	HklParameter *c;
	HklParameter *alpha;
	HklParameter *beta;
	HklParameter *gamma;
	HklParameter *volume;
} HklLattice;

HklMatrix

typedef struct {
	double data[3][3];
} HklMatrix;

HklParameter

typedef struct {
	const char *name;
	const char *description;
	HklInterval range;
	double _value;
	const HklUnit *unit;
	const HklUnit *punit;
	int fit;
	int changed;
	const HklParameterOperations *ops;
        HklParameterType type;
} HklParameter;

HklSample

typedef struct {
	char *name;
	HklLattice *lattice;
	HklMatrix U;
	HklMatrix UB;
	HklParameter *ux;
	HklParameter *uy;
	HklParameter *uz;
	struct list_head reflections;
	size_t n_reflections;
} HklSample;

HklSampleReflection

typedef struct {
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	HklVector hkl;
	HklVector _hkl;
	int flag;
	struct list_node list;
} HklSampleReflection;
hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-tth-private.html0000664000175000017500000001046115144640567025765 0ustar00piccapicca hkl-pseudoaxis-common-tth-private: hkl Reference Manual

hkl-pseudoaxis-common-tth-private

hkl-pseudoaxis-common-tth-private

Functions

Types and Values

Description

Functions

hkl_engine_tth2_new ()

HklEngine *
hkl_engine_tth2_new (HklEngineList *engines);

Types and Values

HklEngineTth2

typedef struct _HklEngineTth2 HklEngineTth2;
hkl-5.1.7/Documentation/api/html/hkl-hkl-macros-private.html0000664000175000017500000001551615144640567023010 0ustar00piccapicca hkl-macros-private: hkl Reference Manual

hkl-macros-private

hkl-macros-private

Functions

#define hkl_assert()
#define hkl_error()
#define G_GNUC_PRINTF()
#define alloc_nr()
#define ALLOC_GROW()
#define DARRAY()
#define IGNORE()
void hkl_printbt ()

Types and Values

Description

Functions

hkl_assert()

# define hkl_assert(x) do{ if (!(x)) {hkl_printbt(); assert(x); } } while(0)

hkl_error()

#define             hkl_error(expr)

G_GNUC_PRINTF()

#define             G_GNUC_PRINTF( format_idx, arg_idx )

alloc_nr()

#define alloc_nr(x) (((x)+16)*3/2)

ALLOC_GROW()

#define             ALLOC_GROW(x, nr, alloc)

DARRAY()

#define DARRAY(_items) {.item=_items, .size=ARRAY_SIZE(_items), .alloc=ARRAY_SIZE(_items)}

IGNORE()

#define IGNORE(x) {__typeof__(x) __attribute__((unused)) d=(x);}

hkl_printbt ()

void
hkl_printbt (void);

Types and Values

HKL_EULERIAN_KAPPA_SOLUTION

#define HKL_EULERIAN_KAPPA_SOLUTION 1

NORETURN

#define             NORETURN
hkl-5.1.7/Documentation/api/html/hkl-hkl-types.html0000664000175000017500000002036215144640567021213 0ustar00piccapicca hkl-types: hkl Reference Manual

hkl-types

hkl-types

Description

Functions

Types and Values

TYPE_HKL_DETECTOR

#define TYPE_HKL_DETECTOR (hkl_detector_get_type ())

TYPE_HKL_ENGINE

#define TYPE_HKL_ENGINE (hkl_engine_get_type ())

TYPE_HKL_ENGINE_LIST

#define TYPE_HKL_ENGINE_LIST (hkl_engine_list_get_type ())

TYPE_HKL_FACTORY

#define TYPE_HKL_FACTORY (hkl_factory_get_type ())

TYPE_HKL_GEOMETRY

#define TYPE_HKL_GEOMETRY (hkl_geometry_get_type ())

TYPE_HKL_GEOMETRY_LIST

#define TYPE_HKL_GEOMETRY_LIST (hkl_geometry_list_get_type ())

TYPE_HKL_GEOMETRY_LIST_ITEM

#define TYPE_HKL_GEOMETRY_LIST_ITEM (hkl_geometry_list_item_get_type ())

TYPE_HKL_LATTICE

#define TYPE_HKL_LATTICE (hkl_lattice_get_type ())

TYPE_HKL_MATRIX

#define TYPE_HKL_MATRIX (hkl_matrix_get_type ())

TYPE_HKL_PARAMETER

#define TYPE_HKL_PARAMETER (hkl_parameter_get_type ())

TYPE_HKL_SAMPLE_REFLECTION

#define TYPE_HKL_SAMPLE_REFLECTION (hkl_sample_reflection_get_type ())

TYPE_HKL_SAMPLE

#define TYPE_HKL_SAMPLE (hkl_sample_get_type ())

TYPE_HKL_UNIT

#define TYPE_HKL_UNIT (hkl_unit_get_type ())

TYPE_HKL_VECTOR

#define TYPE_HKL_VECTOR (hkl_vector_get_type ())

TYPE_HKL_QUATERNION

#define TYPE_HKL_QUATERNION (hkl_quaternion_get_type ())
hkl-5.1.7/Documentation/api/html/hkl-hkl-parameter-private.html0000664000175000017500000012360215144640567023500 0ustar00piccapicca hkl-parameter-private: hkl Reference Manual

hkl-parameter-private

hkl-parameter-private

Description

Functions

hkl_parameter_error_quark ()

GQuark
hkl_parameter_error_quark (void);

hkl_parameter_copy_real ()

HklParameter *
hkl_parameter_copy_real (const HklParameter *self);

hkl_parameter_free_real ()

void
hkl_parameter_free_real (HklParameter *self);

hkl_parameter_init_copy_real ()

int
hkl_parameter_init_copy_real (HklParameter *self,
                              const HklParameter *src,
                              GError **error);

hkl_parameter_value_get_closest_real ()

double
hkl_parameter_value_get_closest_real (const HklParameter *self);

hkl_parameter_value_set_real ()

int
hkl_parameter_value_set_real (HklParameter *self,
                              double value,
                              HklUnitEnum unit_type,
                              GError **error);

hkl_parameter_value_set_smallest_in_range_real ()

void
hkl_parameter_value_set_smallest_in_range_real
                               ();

hkl_parameter_randomize_real ()

void
hkl_parameter_randomize_real (HklParameter *self);

hkl_parameter_is_permutable_real ()

int
hkl_parameter_is_permutable_real ();

hkl_parameter_is_valid_real ()

int
hkl_parameter_is_valid_real (const HklParameter *self);

hkl_parameter_fprintf_real ()

void
hkl_parameter_fprintf_real (FILE *f,
                            const HklParameter *self);

hkl_parameter_axis_v_get_real ()

const HklVector *
hkl_parameter_axis_v_get_real ();

hkl_parameter_quaternion_get_real ()

const HklQuaternion *
hkl_parameter_quaternion_get_real ();

hkl_parameter_transformation_cmp_real ()

int
hkl_parameter_transformation_cmp_real (const HklParameter *self,
                                       const HklParameter *p2);

hkl_parameter_transformation_apply_real ()

HklVector
hkl_parameter_transformation_apply_real
                               ();

hkl_parameter_orthodromic_distance_get_real ()

double
hkl_parameter_orthodromic_distance_get_real
                               (const HklParameter *self);

hkl_parameter_type_get_real ()

HklParameterType
hkl_parameter_type_get_real (const HklParameter *self);

hkl_parameter_new ()

HklParameter *
hkl_parameter_new (const char *name,
                   const char *description,
                   double min,
                   double value,
                   double max,
                   int fit,
                   int changed,
                   const HklUnit *unit,
                   const HklUnit *punit,
                   GError **error);

create a new HklParameter

[skip]


hkl_parameter_init_copy ()

int
hkl_parameter_init_copy (HklParameter *self,
                         const HklParameter *src,
                         GError **error);

[skip]

Parameters

self

the this ptr

 

src

the parameter to copy from

 

error

return location for a GError, or NULL

 

Returns

TRUE on success, FALSE if an error occurred


hkl_parameter_is_permutable ()

int
hkl_parameter_is_permutable (const HklParameter *self);

check if the HklParameter can be use to perform permutation exemple axis rotation can avec equivalent position at different values

[skip]


hkl_parameter_value_get_closest ()

double
hkl_parameter_value_get_closest (const HklParameter *self,
                                 const HklParameter *ref);

Parameters

self

the this ptr

 

ref

the reference HklParameter

 

Returns

the closest value of the ref HklParameter from the current self HklParameter


hkl_parameter_value_set_smallest_in_range ()

void
hkl_parameter_value_set_smallest_in_range
                               (HklParameter *self);

[skip]

Parameters

self

the this ptr

 

hkl_parameter_is_valid ()

int
hkl_parameter_is_valid (const HklParameter *self);

check if the value of the HklParameter is in the min,max range

[skip]


hkl_parameter_is_valid_range ()

int
hkl_parameter_is_valid_range (const HklParameter *self);

check if the value of the HklParameter is in the min,max range strictly (min < value < max).

[skip]


hkl_parameter_fprintf ()

void
hkl_parameter_fprintf (FILE *f,
                       const HklParameter *self);

print into the FILE f an HklParameter

[skip]


hkl_parameter_transformation_cmp ()

int
hkl_parameter_transformation_cmp (const HklParameter *self,
                                  const HklParameter *p2);

[skip]

Parameters

self

the this ptr

 

p2

the second parameter to test with

 

Returns

if two parameter transformations are compatibles. (0) compatible, (!= 0) not-compatible


hkl_parameter_transformation_apply ()

HklVector
hkl_parameter_transformation_apply (const HklParameter *self,
                                    const HklVector *v);

[skip]

Parameters

self

the this ptr

 

v

the HklVector to transform

 

Returns

the transformed HklVector


hkl_parameter_orthodromic_distance_get ()

double
hkl_parameter_orthodromic_distance_get
                               (const HklParameter *self,
                                double value);

[skip]

Parameters

self

the this ptr

 

value

the second double value of the axis.

 

Returns

the orthodromic distance of an axis between its _value and the value


hkl_parameter_type_get ()

HklParameterType
hkl_parameter_type_get (const HklParameter *self);

[skip]

Parameters

self

the this ptr

 

Returns

the HklParameterType of the parameter.

Types and Values

HklParameter

typedef struct {
	const char *name;
	const char *description;
	HklInterval range;
	double _value;
	const HklUnit *unit;
	const HklUnit *punit;
	int fit;
	int changed;
	const HklParameterOperations *ops;
        HklParameterType type;
} HklParameter;

HKL_PARAMETER_DEFAULTS

#define HKL_PARAMETER_DEFAULTS .name="dummy", .description="no description", .range={.min=-DBL_MAX, .max=DBL_MAX}, ._value=0, .unit=NULL, .punit=NULL, .fit=TRUE, .changed=TRUE, .ops = &hkl_parameter_operations_defaults

HKL_PARAMETER_DEFAULTS_LENGTH

#define HKL_PARAMETER_DEFAULTS_LENGTH HKL_PARAMETER_DEFAULTS, .unit = &hkl_unit_length_meter, .punit = &hkl_unit_length_meter

HKL_PARAMETER_DEFAULTS_ANGLE

#define HKL_PARAMETER_DEFAULTS_ANGLE HKL_PARAMETER_DEFAULTS, .range={.min=-M_PI, .max=M_PI}, .unit = &hkl_unit_angle_rad, .punit = &hkl_unit_angle_deg

HKL_PARAMETER_ERROR

#define HKL_PARAMETER_ERROR hkl_parameter_error_quark ()

enum HklParameterError

Members

HKL_PARAMETER_ERROR_MIN_MAX_SET

   

HKL_PARAMETER_ERROR_VALUE_SET

   

HKL_PARAMETER_ERROR_INIT

   

struct HklParameterOperations

struct HklParameterOperations {
	HklParameter *        (*copy)(const HklParameter *self);
	void                  (*free)(HklParameter *self);
	int                   (*init_copy)(HklParameter *self, const HklParameter *src,
					   GError **error);
	double                (*get_value_closest)(const HklParameter *self,
						   const HklParameter *other);
	int                   (*set_value)(HklParameter *self, double value,
					   HklUnitEnum unit_type, GError **error);
	void                  (*set_value_smallest_in_range)(HklParameter *self);
	void                  (*randomize)(HklParameter *self);
        int                   (*is_permutable)(const HklParameter *self);
	int                   (*is_valid)(const HklParameter *self);
	int                   (*is_valid_range)(const HklParameter *self);
	void                  (*fprintf)(FILE *f, const HklParameter *self);
	const HklVector *     (*axis_v_get)(const HklParameter *self);
	const HklQuaternion * (*quaternion_get)(const HklParameter *self);
	int                   (*transformation_cmp)(const HklParameter *self, const HklParameter *p2);
	HklVector             (*transformation_apply)(const HklParameter *self, const HklVector *v);
        double                (*orthodromic_distance_get)(const HklParameter *self, double v);
        HklParameterType      (*type_get) (const HklParameter *self);
};

HKL_PARAMETER_OPERATIONS_DEFAULTS

#define             HKL_PARAMETER_OPERATIONS_DEFAULTS

darray_parameter

typedef darray(HklParameter *) darray_parameter;

darray_const_parameter

typedef darray(const HklParameter) darray_const_parameter;
hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-auto-private.html0000664000175000017500000003514415144640567024655 0ustar00piccapicca hkl-pseudoaxis-auto-private: hkl Reference Manual

hkl-pseudoaxis-auto-private

hkl-pseudoaxis-auto-private

Description

Functions

CHECK_NAN()

#define             CHECK_NAN(x, len)

HKL_MODE_AUTO_INFO()

#define HKL_MODE_AUTO_INFO(_name, _axes_r, _axes_w, _fn) .info={HKL_MODE_INFO(_name, _axes_r, _axes_w),}, .functions=DARRAY(_fn)

HKL_MODE_AUTO_INFO_WITH_PARAMS()

#define HKL_MODE_AUTO_INFO_WITH_PARAMS(_name, _axes_r, _axes_w, _fn, _parameters) .info={HKL_MODE_INFO_WITH_PARAMS(_name, _axes_r, _axes_w, _parameters)}, .functions=DARRAY(_fn)

hkl_mode_auto_new ()

HklMode *
hkl_mode_auto_new (const HklModeAutoInfo *auto_info,
                   const HklModeOperations *ops,
                   int initialized);

hkl_mode_auto_init ()

void
hkl_mode_auto_init (HklMode *self,
                    const HklModeAutoInfo *auto_info,
                    const HklModeOperations *ops,
                    int initialized);

hkl_mode_auto_set_real ()

int
hkl_mode_auto_set_real (HklMode *self,
                        HklEngine *engine,
                        HklGeometry *geometry,
                        HklDetector *detector,
                        HklSample *sample,
                        GError **error);

hkl_mode_auto_with_init_error_quark ()

GQuark
hkl_mode_auto_with_init_error_quark (void);

hkl_mode_auto_with_init_new ()

HklMode *
hkl_mode_auto_with_init_new (const HklModeAutoInfo *info,
                             const HklModeOperations *ops,
                             int initialized);

Types and Values

struct HklFunction

struct HklFunction {
	const uint size;
	int (* function) (const gsl_vector *x, void *params, gsl_vector *f);
};

darray_function

typedef darray(const HklFunction*) darray_function;

struct HklModeAutoInfo

struct HklModeAutoInfo {
	const HklModeInfo info;
	darray_function functions;
};

HKL_MODE_OPERATIONS_AUTO_DEFAULTS

#define             HKL_MODE_OPERATIONS_AUTO_DEFAULTS

struct HklModeAutoWithInit

struct HklModeAutoWithInit {
	HklMode mode;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
};

HKL_MODE_AUTO_WITH_INIT_ERROR

#define HKL_MODE_AUTO_WITH_INIT_ERROR hkl_mode_auto_with_init_error_quark ()

enum HklModeError

Members

HKL_MODE_AUTO_WITH_INIT_ERROR_INIT

   

HKL_MODE_OPERATIONS_AUTO_WITH_INIT_DEFAULTS

#define             HKL_MODE_OPERATIONS_AUTO_WITH_INIT_DEFAULTS

self

	HklModeAutoWithInit *self = container_of(mode, HklModeAutoWithInit, mode);
hkl-5.1.7/Documentation/api/html/hkl-hkl-quaternion-private.html0000664000175000017500000006441315144640567023711 0ustar00piccapicca hkl-quaternion-private: hkl Reference Manual

hkl-quaternion-private

hkl-quaternion-private

Description

Functions

hkl_quaternion_dup ()

HklQuaternion *
hkl_quaternion_dup (const HklQuaternion *self);

[skip]


hkl_quaternion_free ()

void
hkl_quaternion_free (HklQuaternion *self);

[skip]


hkl_quaternion_init ()

void
hkl_quaternion_init (HklQuaternion *self,
                     double a,
                     double b,
                     double c,
                     double d);

initialize the four elements of an HklQuaternion

Parameters

self

the HklQuaternion to initialize

 

a

the 1st element value

 

b

the 2nd element value

 

c

the 3rd element value

 

d

the 4th element value

 

hkl_quaternion_init_from_vector ()

void
hkl_quaternion_init_from_vector (HklQuaternion *self,
                                 const HklVector *v);

initialize an HklQuaternion from an HklVector

Parameters

self

the HklQuaternion to set

 

v

the HklVector used to set the self HklQuaternion

 

hkl_quaternion_init_from_angle_and_axe ()

void
hkl_quaternion_init_from_angle_and_axe
                               (HklQuaternion *self,
                                double angle,
                                const HklVector *v);

initialize an HklQuaternion from a vector and a angle.

Parameters

self

the HklQuaternion to set

 

angle

the angles of the rotation

 

v

the axe of rotation

 

hkl_quaternion_fprintf ()

void
hkl_quaternion_fprintf (FILE *file,
                        const HklQuaternion *self);

print an HklQuaternion into a FILE stream

Parameters

file

the file to send the HklQuaternion into

 

self

the HklQuaternion to write into the file stream.

 

hkl_quaternion_cmp ()

int
hkl_quaternion_cmp (const HklQuaternion *self,
                    const HklQuaternion *q);

compare two HklQuaternion.

Parameters

self

the first HklQuaternion

 

q

the second HklQuaternion

 

Returns

TRUE if both are equal, FALSE otherwise.


hkl_quaternion_minus_quaternion ()

void
hkl_quaternion_minus_quaternion (HklQuaternion *self,
                                 const HklQuaternion *q);

substract two HklQuaternions Todo: test

Parameters

self

the HklQuaternion to modify.

 

q

the HklQuaternion to substract

 

hkl_quaternion_times_quaternion ()

void
hkl_quaternion_times_quaternion (HklQuaternion *self,
                                 const HklQuaternion *q);

multiply two quaternions

Parameters

self

the HklQuaternion to modify

 

q

the HklQuaternion to multiply by

 

hkl_quaternion_norm2 ()

double
hkl_quaternion_norm2 (const HklQuaternion *self);

compute the norm2 of an HklQuaternion

Parameters

self

the quaternion use to compute the norm

 

Returns

the self hklquaternion norm


hkl_quaternion_conjugate ()

void
hkl_quaternion_conjugate (HklQuaternion *self);

compute the conjugate of a quaternion

Parameters

self

the HklQuaternion to conjugate

 

hkl_quaternion_to_matrix ()

void
hkl_quaternion_to_matrix (const HklQuaternion *self,
                          HklMatrix *m);

Compute the rotation matrix of a Quaternion.

compute the rotation matrix corresponding to the unitary quaternion. \f$ q = a + b \cdot i + c \cdot j + d \cdot k \f$

\f$ \left( \begin{array}{ccc} a^2+b^2-c^2-d^2 & 2bc-2ad & 2ac+2bd\ 2ad+2bc & a^2-b^2+c^2-d^2 & 2cd-2ab\ 2bd-2ac & 2ab+2cd & a^2-b^2-c^2+d^2 \end{array} \right) \f$ Todo: optimize

Parameters

self

the HklQuaternion use to compute the HklMatrix

 

m

the HklMatrix return.

[out caller-allocates]

hkl_quaternion_to_angle_and_axe ()

void
hkl_quaternion_to_angle_and_axe (const HklQuaternion *self,
                                 double *angle,
                                 HklVector *v);

compute the axe and angle of the unitary quaternion angle [-pi, pi] if q is the (1, 0, 0, 0) quaternion return the (0,0,0) axe and a 0 angle

Parameters

self

The HklQuaternion use to compute the angle and the roation axis.

 

angle

the returned angle of the rotation.

 

v

the returned axis of the rotation.

 
hkl-5.1.7/Documentation/api/html/home.png0000644000175000017500000000040015144640567017254 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT8ҽ Aߞf`n v`6`/`Yܡ`f&k$,} 0b+ԸaQW~b O e{y N[L}.piBzmm o.I]7^[;%:VIENDB`hkl-5.1.7/Documentation/api/html/up.png0000644000175000017500000000040415144640567016754 0ustar00piccapiccaPNG  IHDRabKGD pHYs B(xtIME ,EdIDAT81 @D{xa;$]r =JR1, Sd-}0̟oL:m-QO[ k TzMޠL,:ךu!tK; Pp Ot@l/̵*l}IENDB`hkl-5.1.7/Documentation/api/html/hkl-hkl-lattice-private.html0000664000175000017500000002100615144640567023140 0ustar00piccapicca hkl-lattice-private: hkl Reference Manual

hkl-lattice-private

hkl-lattice-private

Types and Values

Description

Functions

hkl_lattice_error_quark ()

GQuark
hkl_lattice_error_quark (void);

hkl_lattice_lattice_set ()

void
hkl_lattice_lattice_set (HklLattice *self,
                         const HklLattice *lattice);

[skip]

Parameters

self

the this ptr

 

lattice

the lattice to set from.

 

hkl_lattice_randomize ()

void
hkl_lattice_randomize (HklLattice *self);

randomize the lattice

[skip]


hkl_lattice_fprintf ()

void
hkl_lattice_fprintf (FILE *f,
                     const HklLattice *self);

print into a file the lattice.

[skip]

Types and Values

HklLattice

typedef struct {
	HklParameter *a;
	HklParameter *b;
	HklParameter *c;
	HklParameter *alpha;
	HklParameter *beta;
	HklParameter *gamma;
	HklParameter *volume;
} HklLattice;

HKL_LATTICE_ERROR

#define HKL_LATTICE_ERROR hkl_lattice_error_quark ()

enum HklLatticeError

Members

HKL_LATTICE_CHECK_LATTICE

   
hkl-5.1.7/Documentation/api/html/hkl.devhelp20000664000175000017500000027256615144640567020061 0ustar00piccapicca hkl-5.1.7/Documentation/api/html/hkl-hkl-factory-private.html0000664000175000017500000001355215144640567023171 0ustar00piccapicca hkl-factory-private: hkl Reference Manual

hkl-factory-private

hkl-factory-private

Types and Values

Description

Functions

HklFactoryGeometryFunction ()

HklGeometry *
(*HklFactoryGeometryFunction) (const HklFactory *factory);

HklFactoryEngineListFunction ()

HklEngineList *
(*HklFactoryEngineListFunction) (const HklFactory *factory);

REGISTER_DIFFRACTOMETER()

#define             REGISTER_DIFFRACTOMETER(name_, real_name_, description_)

Types and Values

HklFactory

typedef struct {
	const char *name;
	const char *description;
	const darray_string axes;
	HklFactoryGeometryFunction create_new_geometry;
	HklFactoryEngineListFunction create_new_engine_list;
} HklFactory;
hkl-5.1.7/Documentation/api/html/hkl-typesafe-cb.html0000664000175000017500000001076115144640567021477 0ustar00piccapicca typesafe_cb: hkl Reference Manual

typesafe_cb

typesafe_cb

Functions

#define typesafe_cb_cast()
#define typesafe_cb_cast3()
#define typesafe_cb()
#define typesafe_cb_preargs()
#define typesafe_cb_postargs()

Description

Functions

typesafe_cb_cast()

#define             typesafe_cb_cast(desttype, oktype, expr)

typesafe_cb_cast3()

#define             typesafe_cb_cast3(desttype, ok1, ok2, ok3, expr)

typesafe_cb()

#define             typesafe_cb(rtype, atype, fn, arg)

typesafe_cb_preargs()

#define             typesafe_cb_preargs(rtype, atype, fn, arg, ...)

typesafe_cb_postargs()

#define             typesafe_cb_postargs(rtype, atype, fn, arg, ...)
hkl-5.1.7/Documentation/api/html/hkl-compiler.html0000664000175000017500000002066015144640567021106 0ustar00piccapicca compiler: hkl Reference Manual

compiler

compiler

Functions

#define PRINTF_FMT()
#define IS_COMPILE_CONSTANT()
#define NON_NULL_ARGS()
#define cpu_supports()

Types and Values

#define COLD
#define NORETURN
#define CONST_FUNCTION
#define PURE_FUNCTION
#define UNNEEDED
#define NEEDED
#define UNUSED
#define WARN_UNUSED_RESULT
#define WARN_DEPRECATED
#define NO_NULL_ARGS
#define RETURNS_NONNULL
#define LAST_ARG_NULL

Description

Functions

PRINTF_FMT()

#define             PRINTF_FMT(nfmt, narg)

IS_COMPILE_CONSTANT()

#define IS_COMPILE_CONSTANT(expr) __builtin_constant_p(expr)

NON_NULL_ARGS()

#define NON_NULL_ARGS(...) __attribute__((__nonnull__(__VA_ARGS__)))

cpu_supports()

#define cpu_supports(x) __builtin_cpu_supports(x)

Types and Values

COLD

#define COLD __attribute__((__cold__))

NORETURN

#define             NORETURN

CONST_FUNCTION

#define CONST_FUNCTION __attribute__((__const__))

PURE_FUNCTION

#define PURE_FUNCTION __attribute__((__pure__))

UNNEEDED

#define UNNEEDED __attribute__((__unused__))

NEEDED

#define NEEDED __attribute__((__used__))

UNUSED

#define UNUSED __attribute__((__unused__))

WARN_UNUSED_RESULT

#define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))

WARN_DEPRECATED

#define WARN_DEPRECATED __attribute__((__deprecated__))

NO_NULL_ARGS

#define NO_NULL_ARGS __attribute__((__nonnull__))

RETURNS_NONNULL

#define RETURNS_NONNULL __attribute__((__returns_nonnull__))

LAST_ARG_NULL

#define LAST_ARG_NULL __attribute__((__sentinel__))
hkl-5.1.7/Documentation/api/html/hkl-str-debug.html0000664000175000017500000002456015144640567021173 0ustar00piccapicca str_debug: hkl Reference Manual

str_debug

str_debug

Functions

int str_isalnum ()
int str_isalpha ()
int str_isascii ()
int str_isblank ()
int str_iscntrl ()
int str_isdigit ()
int str_isgraph ()
int str_islower ()
int str_isprint ()
int str_ispunct ()
int str_isspace ()
int str_isupper ()
int str_isxdigit ()
char * str_strstr ()
char * str_strchr ()
char * str_strrchr ()

Description

Functions

str_isalnum ()

int
str_isalnum (int i);

str_isalpha ()

int
str_isalpha (int i);

str_isascii ()

int
str_isascii (int i);

str_isblank ()

int
str_isblank (int i);

str_iscntrl ()

int
str_iscntrl (int i);

str_isdigit ()

int
str_isdigit (int i);

str_isgraph ()

int
str_isgraph (int i);

str_islower ()

int
str_islower (int i);

str_isprint ()

int
str_isprint (int i);

str_ispunct ()

int
str_ispunct (int i);

str_isspace ()

int
str_isspace (int i);

str_isupper ()

int
str_isupper (int i);

str_isxdigit ()

int
str_isxdigit (int i);

str_strstr ()

char *
str_strstr (const char *haystack,
            const char *needle);

str_strchr ()

char *
str_strchr (const char *s,
            int c);

str_strrchr ()

char *
str_strrchr (const char *s,
             int c);
hkl-5.1.7/Documentation/api/html/hkl-hkl-vector-private.html0000664000175000017500000017013415144640567023024 0ustar00piccapicca hkl-vector-private: hkl Reference Manual

hkl-vector-private

hkl-vector-private

Description

Functions

hkl_vector_dup ()

HklVector *
hkl_vector_dup (const HklVector *self);

Copy an HklVector

[skip]

Parameters

self

the HklVector to copy

 

Returns

A copy of self which need to be free using hkl_vector_free


hkl_vector_free ()

void
hkl_vector_free (HklVector *self);

delete an HklVector struct

[skip]


hkl_vector_fprintf ()

void
hkl_vector_fprintf (FILE *file,
                    const HklVector *self);

print an HklVector into a stream

[skip]

Parameters

file

the stream to print into

 

self

the HklVector to print.

 

hkl_vector_cmp ()

int
hkl_vector_cmp (const HklVector *self,
                const HklVector *vector);

compare two HklVector. this comparison use HKL_EPSILON to do the comparison.

[skip]

Parameters

self

the first vector

 

vector

th vector to compare with

 

Returns

FALSE if both are equals, TRUE otherwise.


hkl_vector_is_opposite ()

int
hkl_vector_is_opposite (const HklVector *self,
                        const HklVector *vector);

Check if two vectors are oposite.

[skip]

Returns

TRUE is vector are oposite vectors.


hkl_vector_add_vector ()

void
hkl_vector_add_vector (HklVector *self,
                       const HklVector *vector);

add an HklVector to another one.

[skip]

Parameters

self

the modified HklVector

 

vector

the hklvector to add

 

hkl_vector_minus_vector ()

void
hkl_vector_minus_vector (HklVector *self,
                         const HklVector *vector);

substract an HklVector to another one.

[skip]

Parameters

self

the modified HklVector

 

vector

the hklvector to substract

 

hkl_vector_div_double ()

void
hkl_vector_div_double (HklVector *self,
                       const double d);

divide an HklVector by constant.

[skip]

Parameters

self

the HklVector to divide.

 

d

constant use to divide the HklVector

 

hkl_vector_times_double ()

void
hkl_vector_times_double (HklVector *self,
                         const double d);

multiply an HklVector by a constant value.

[skip]

Parameters

self

the HklVector to modify

 

d

the multiply factor

 

hkl_vector_times_vector ()

void
hkl_vector_times_vector (HklVector *self,
                         const HklVector *vector);

multiply an HklVector by another one. This method multiply coordinate by coordinate.

[skip]

Parameters

self

the HklVector to modify

 

vector

the HklVector use to modify the first one

 

hkl_vector_times_matrix ()

void
hkl_vector_times_matrix (HklVector *self,
                         const HklMatrix *m);

multiply an HklVector by an HklMatrix. compute v'= M . v

[skip]

Parameters

self

the HklVector to multiply

 

m

the HklMatrix use to multiply the HklVector

 

hkl_vector_sum ()

double
hkl_vector_sum (const HklVector *self);

compute the HklVector sum of all its elements.

[skip]

Parameters

self

the HklVector to sum.

 

Returns

the sum of all elements.


hkl_vector_scalar_product ()

double
hkl_vector_scalar_product (const HklVector *self,
                           const HklVector *vector);

compute the scalar product of two HklVector

[skip]

Parameters

self

the first HklVector

 

vector

the second HklVector

 

Returns

the scalar product.


hkl_vector_vectorial_product ()

void
hkl_vector_vectorial_product (HklVector *self,
                              const HklVector *vector);

compute the vectorial product of two vectors

[skip]

Parameters

self

the first HklVector (modify)

 

vector

the second HklVector

 

hkl_vector_angle ()

double
hkl_vector_angle (const HklVector *self,
                  const HklVector *vector);

compute the angles beetween two HklVector

[skip]

Parameters

self

the fist HklVector

 

vector

the second HklVector

 

Returns

the return value is in beetween [0, pi]


hkl_vector_oriented_angle ()

double
hkl_vector_oriented_angle (const HklVector *self,
                           const HklVector *vector,
                           const HklVector *ref);

compute the angles beetween two HklVector and use a reference HklVector to orientate the space. That's way the return value can be in beetween [-pi, pi]. the (self, vector, ref) is a right oriented base.

[skip]

Parameters

self

the first HklVector

 

vector

the second HklVector

 

ref

the reference HklVector

 

Returns

the angles [-pi, pi]


hkl_vector_oriented_angle_points ()

double
hkl_vector_oriented_angle_points (const HklVector *self,
                                  const HklVector *p2,
                                  const HklVector *p3,
                                  const HklVector *ref);

compute the angles beetween three points (p1, p2, p3) and use a reference HklVector to orientate the space. That's way the return value can be in beetween [-pi, pi]. the (self, vector, ref) is a right oriented base.

[skip]

Parameters

self

the first point

 

p2

the second point

 

p3

the third point

 

ref

the reference HklVector

 

Returns

the angles [-pi, pi]


hkl_vector_norm2 ()

double
hkl_vector_norm2 (const HklVector *self);

compute the norm2 of an HklVector

[skip]

Parameters

self

the hklvector use to compute the norm2

 

Returns

the sqrt(|v|)


hkl_vector_normalize ()

int
hkl_vector_normalize (HklVector *self);

normalize a hkl_vector

[skip]

Parameters

self

the HklVector to normalize

 

Returns

TRUE if the HklVector can be normalized, FALSE otherwise


hkl_vector_is_colinear ()

int
hkl_vector_is_colinear (const HklVector *self,
                        const HklVector *vector);

check if two HklVector are colinears

[skip]

Parameters

self

the first HklVector

 

vector

the second HklVector

 

Returns

TRUE if both are colinear.


hkl_vector_randomize ()

void
hkl_vector_randomize (HklVector *self);

initialize a vector with random values. coordinates range [-1, 1]

[skip]

Parameters

self

the HklVector to randomize

 

hkl_vector_randomize_vector ()

void
hkl_vector_randomize_vector (HklVector *self,
                             const HklVector *vector);

randomize an HklVector an be sure that it is not equal to the HklVector vector.

[skip]

Parameters

self

the HklVector to randomize

 

vector

the HklVector result to avoid

 

hkl_vector_randomize_vector_vector ()

void
hkl_vector_randomize_vector_vector (HklVector *self,
                                    const HklVector *vector1,
                                    const HklVector *vector2);

randomize an HklVector an be sure that it is not equal to the HklVector vector1 and vector2.

[skip]

Parameters

self

the HklVector to randomize

 

vector1

the first HklVector solution to avoid

 

vector2

the second HklVector solution to avoid

 

hkl_vector_rotated_around_vector ()

void
hkl_vector_rotated_around_vector (HklVector *self,
                                  const HklVector *axe,
                                  double angle);

rotate a vector around another one with a given angle.

[skip]

Parameters

self

the HklVector to rotate

 

axe

the axe of rotation

 

angle

the angle of the rotation

 

hkl_vector_rotated_quaternion ()

void
hkl_vector_rotated_quaternion (HklVector *self,
                               const HklQuaternion *qr);

rotate an HklVector using an HklQuaternion.

[skip]

Parameters

self

the HklVector to rotate

 

qr

the HklQuaternion use to rotate the vector

 

hkl_vector_rotated_around_line ()

void
hkl_vector_rotated_around_line (HklVector *self,
                                double angle,
                                const HklVector *c1,
                                const HklVector *c2);

This method rotate a point around a line defined by two points of a certain amount of angle. The rotation is right handed. this mean that c2 - c1 gives the direction of the rotation.

[skip]

Parameters

self

the point to rotate around a line

 

angle

the angle of the rotation

 

c1

the fist point of the line

 

c2

the second point of the line

 

hkl_vector_is_null ()

int
hkl_vector_is_null (const HklVector *self);

check if all the coordinates of an HklVector are null.

[skip]

Parameters

self

the hklvector to check

 

Returns

HKl_TRUE if all |elements| are below HKL_EPSILON, HKl_FALSE otherwise

Todo: test


hkl_vector_project_on_plan ()

void
hkl_vector_project_on_plan (HklVector *self,
                            const HklVector *normal);

project an HklVector on a plan of normal which contain the origin [0, 0, 0]

[skip]

Parameters

self

the vector to project

 

normal

the normal of the plane.

 

hkl_vector_project_on_plan_with_point ()

void
hkl_vector_project_on_plan_with_point (HklVector *self,
                                       const HklVector *normal,
                                       const HklVector *point);

project an HklVector on a plan of normal normal which contain point.

[skip]

Parameters

self

the vector to project (modify)

 

normal

the normal of the plane.

 

point

a point of the plan.

 
hkl-5.1.7/Documentation/api/html/hkl-check-type.html0000664000175000017500000000625215144640567021331 0ustar00piccapicca check_type: hkl Reference Manual

check_type

check_type

Functions

#define check_type()
#define check_types_match()

Description

Functions

check_type()

#define             check_type(expr, type)

check_types_match()

#define             check_types_match(expr1, expr2)
hkl-5.1.7/Documentation/api/html/index.html0000664000175000017500000001702615144640567017631 0ustar00piccapicca hkl Reference Manual: hkl Reference Manual hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-eulerians-private.html0000664000175000017500000001132215144640567027152 0ustar00piccapicca hkl-pseudoaxis-common-eulerians-private: hkl Reference Manual

hkl-pseudoaxis-common-eulerians-private

hkl-pseudoaxis-common-eulerians-private

Description

Functions

hkl_engine_eulerians_new ()

HklEngine *
hkl_engine_eulerians_new (HklEngineList *engines);

kappa_2_kappap ()

void
kappa_2_kappap (double komega,
                double kappa,
                double kphi,
                double alpha,
                double *komegap,
                double *kappap,
                double *kphip);
hkl-5.1.7/Documentation/api/html/hkl-ptrint.html0000664000175000017500000000536115144640567020615 0ustar00piccapicca ptrint: hkl Reference Manual

ptrint

ptrint

Types and Values

typedef ptrint_t

Description

Functions

Types and Values

ptrint_t

typedef struct ptrint ptrint_t;
hkl-5.1.7/Documentation/api/html/hkl-autodata.html0000664000175000017500000001604715144640567021102 0ustar00piccapicca autodata: hkl Reference Manual

autodata

autodata

Functions

#define AUTODATA_TYPE()
#define AUTODATA()
#define autodata_get()
void autodata_free ()
#define AUTODATA_VAR__()
#define AUTODATA_VAR_()
void * autodata_get_section ()
void * autodata_make_table ()

Types and Values

#define AUTODATA_MAGIC

Description

Functions

AUTODATA_TYPE()

#define             AUTODATA_TYPE(name, type)

AUTODATA()

#define             AUTODATA(name, ptr)

autodata_get()

#define             autodata_get(name, nump)

autodata_free ()

void
autodata_free (void *p);

AUTODATA_VAR__()

#define AUTODATA_VAR__(name, line) autodata_##name##_##line

AUTODATA_VAR_()

#define AUTODATA_VAR_(name, line) AUTODATA_VAR__(name, line)

autodata_get_section ()

void *
autodata_get_section (void *start,
                      void *stop,
                      size_t *nump);

autodata_make_table ()

void *
autodata_make_table (const void *example,
                     const char *name,
                     size_t *nump);

Types and Values

AUTODATA_MAGIC

#define AUTODATA_MAGIC ((long)0xFEEDA10DA7AF00D5ULL)
hkl-5.1.7/Documentation/api/html/hkl-alignof.html0000664000175000017500000000532715144640567020716 0ustar00piccapicca alignof: hkl Reference Manual

alignof

alignof

Functions

#define ALIGNOF()

Description

Functions

ALIGNOF()

#define ALIGNOF(t) __alignof__(t)
hkl-5.1.7/Documentation/api/html/hkl-container-of.html0000664000175000017500000001221615144640567021656 0ustar00piccapicca container_of: hkl Reference Manual

container_of

container_of

Functions

#define container_of()
char * container_of_or_null_ ()
#define container_of_or_null()
#define container_off()
#define container_of_var()
#define container_off_var()

Description

Functions

container_of()

#define             container_of(member_ptr, containing_type, member)

container_of_or_null_ ()

char *
container_of_or_null_ (void *member_ptr,
                       size_t offset);

container_of_or_null()

#define             container_of_or_null(member_ptr, containing_type, member)

container_off()

#define             container_off(containing_type, member)

container_of_var()

#define             container_of_var(member_ptr, container_var, member)

container_off_var()

#define             container_off_var(var, member)
hkl-5.1.7/Documentation/api/html/hkl-hkl-sample-private.html0000664000175000017500000002507115144640567023002 0ustar00piccapicca hkl-sample-private: hkl Reference Manual

hkl-sample-private

hkl-sample-private

Description

Functions

hkl_sample_error_quark ()

GQuark
hkl_sample_error_quark (void);

hkl_sample_fprintf ()

void
hkl_sample_fprintf (FILE *f,
                    const HklSample *self);

print to a file a sample

[skip]


hkl_sample_reflection_error_quark ()

GQuark
hkl_sample_reflection_error_quark (void);

hkl_sample_reflection_new_copy ()

HklSampleReflection *
hkl_sample_reflection_new_copy (const HklSampleReflection *self);

copy constructor

[skip]


hkl_sample_reflection_free ()

void
hkl_sample_reflection_free (HklSampleReflection *self);

destructor

[skip]

Types and Values

HklSample

typedef struct {
	char *name;
	HklLattice *lattice;
	HklMatrix U;
	HklMatrix UB;
	HklParameter *ux;
	HklParameter *uy;
	HklParameter *uz;
	struct list_head reflections;
	size_t n_reflections;
} HklSample;

HKL_SAMPLE_ERROR

#define HKL_SAMPLE_ERROR hkl_sample_error_quark ()

enum HklSampleError

Members

HKL_SAMPLE_ERROR_MINIMIZED

   

HKL_SAMPLE_ERROR_COMPUTE_UB_BUSING_LEVY

   

HklSampleReflection

typedef struct {
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	HklVector hkl;
	HklVector _hkl;
	int flag;
	struct list_node list;
} HklSampleReflection;

HKL_SAMPLE_REFLECTION_ERROR

#define HKL_SAMPLE_REFLECTION_ERROR hkl_sample_reflection_error_quark ()

enum HklSampleReflectionError

Members

HKL_SAMPLE_REFLECTION_ERROR_HKL_SET

   
hkl-5.1.7/Documentation/api/html/hkl-ccan-config.html0000664000175000017500000007346715144640567021460 0ustar00piccapicca ccan_config: hkl Reference Manual

ccan_config

ccan_config

Types and Values

#define CCAN_COMPILER
#define CCAN_CFLAGS
#define CCAN_OUTPUT_EXE_CFLAG
#define HAVE_CCAN
#define HAVE_32BIT_OFF_T
#define HAVE_ALIGNOF
#define HAVE_ASPRINTF
#define HAVE_ATTRIBUTE_COLD
#define HAVE_ATTRIBUTE_CONST
#define HAVE_ATTRIBUTE_DEPRECATED
#define HAVE_ATTRIBUTE_NONNULL
#define HAVE_ATTRIBUTE_RETURNS_NONNULL
#define HAVE_ATTRIBUTE_SENTINEL
#define HAVE_ATTRIBUTE_PURE
#define HAVE_ATTRIBUTE_MAY_ALIAS
#define HAVE_ATTRIBUTE_NORETURN
#define HAVE_ATTRIBUTE_PRINTF
#define HAVE_ATTRIBUTE_UNUSED
#define HAVE_ATTRIBUTE_USED
#define HAVE_BACKTRACE
#define HAVE_BIG_ENDIAN
#define HAVE_BSWAP_64
#define HAVE_BUILTIN_CHOOSE_EXPR
#define HAVE_BUILTIN_CLZ
#define HAVE_BUILTIN_CLZL
#define HAVE_BUILTIN_CLZLL
#define HAVE_BUILTIN_CTZ
#define HAVE_BUILTIN_CTZL
#define HAVE_BUILTIN_CTZLL
#define HAVE_BUILTIN_CONSTANT_P
#define HAVE_BUILTIN_EXPECT
#define HAVE_BUILTIN_FFS
#define HAVE_BUILTIN_FFSL
#define HAVE_BUILTIN_FFSLL
#define HAVE_BUILTIN_POPCOUNT
#define HAVE_BUILTIN_POPCOUNTL
#define HAVE_BUILTIN_POPCOUNTLL
#define HAVE_BUILTIN_TYPES_COMPATIBLE_P
#define HAVE_ICCARM_INTRINSICS
#define HAVE_BYTESWAP_H
#define HAVE_CLOCK_GETTIME
#define HAVE_CLOCK_GETTIME_IN_LIBRT
#define HAVE_COMPOUND_LITERALS
#define HAVE_FCHDIR
#define HAVE_ERR_H
#define HAVE_FILE_OFFSET_BITS
#define HAVE_FOR_LOOP_DECLARATION
#define HAVE_FLEXIBLE_ARRAY_MEMBER
#define HAVE_GETPAGESIZE
#define HAVE_ISBLANK
#define HAVE_LITTLE_ENDIAN
#define HAVE_MEMMEM
#define HAVE_MEMRCHR
#define HAVE_MMAP
#define HAVE_PROC_SELF_MAPS
#define HAVE_QSORT_R_PRIVATE_LAST
#define HAVE_STRUCT_TIMESPEC
#define HAVE_SECTION_START_STOP
#define HAVE_STACK_GROWS_UPWARDS
#define HAVE_STATEMENT_EXPR
#define HAVE_SYS_FILIO_H
#define HAVE_SYS_TERMIOS_H
#define HAVE_SYS_UNISTD_H
#define HAVE_TYPEOF
#define HAVE_UNALIGNED_ACCESS
#define HAVE_UTIME
#define HAVE_WARN_UNUSED_RESULT
#define HAVE_OPENMP
#define HAVE_VALGRIND_MEMCHECK_H
#define HAVE_UCONTEXT
#define HAVE_POINTER_SAFE_MAKECONTEXT
#define HAVE_BUILTIN_CPU_SUPPORTS
#define HAVE_CLOSEFROM
#define HAVE_F_CLOSEM
#define HAVE_NR_CLOSE_RANGE
#define HAVE_F_MAXFD

Description

Functions

Types and Values

CCAN_COMPILER

#define CCAN_COMPILER "gcc"

CCAN_CFLAGS

#define CCAN_CFLAGS ""

CCAN_OUTPUT_EXE_CFLAG

#define CCAN_OUTPUT_EXE_CFLAG "-o"

HAVE_CCAN

#define HAVE_CCAN 1

HAVE_32BIT_OFF_T

#define HAVE_32BIT_OFF_T 0

HAVE_ALIGNOF

#define HAVE_ALIGNOF 1

HAVE_ASPRINTF

#define HAVE_ASPRINTF 1

HAVE_ATTRIBUTE_COLD

#define HAVE_ATTRIBUTE_COLD 1

HAVE_ATTRIBUTE_CONST

#define HAVE_ATTRIBUTE_CONST 1

HAVE_ATTRIBUTE_DEPRECATED

#define HAVE_ATTRIBUTE_DEPRECATED 1

HAVE_ATTRIBUTE_NONNULL

#define HAVE_ATTRIBUTE_NONNULL 1

HAVE_ATTRIBUTE_RETURNS_NONNULL

#define HAVE_ATTRIBUTE_RETURNS_NONNULL 1

HAVE_ATTRIBUTE_SENTINEL

#define HAVE_ATTRIBUTE_SENTINEL 1

HAVE_ATTRIBUTE_PURE

#define HAVE_ATTRIBUTE_PURE 1

HAVE_ATTRIBUTE_MAY_ALIAS

#define HAVE_ATTRIBUTE_MAY_ALIAS 1

HAVE_ATTRIBUTE_NORETURN

#define HAVE_ATTRIBUTE_NORETURN 1

HAVE_ATTRIBUTE_PRINTF

#define HAVE_ATTRIBUTE_PRINTF 1

HAVE_ATTRIBUTE_UNUSED

#define HAVE_ATTRIBUTE_UNUSED 1

HAVE_ATTRIBUTE_USED

#define HAVE_ATTRIBUTE_USED 1

HAVE_BACKTRACE

#define HAVE_BACKTRACE 1

HAVE_BIG_ENDIAN

#define HAVE_BIG_ENDIAN 0

HAVE_BSWAP_64

#define HAVE_BSWAP_64 1

HAVE_BUILTIN_CHOOSE_EXPR

#define HAVE_BUILTIN_CHOOSE_EXPR 1

HAVE_BUILTIN_CLZ

#define HAVE_BUILTIN_CLZ 1

HAVE_BUILTIN_CLZL

#define HAVE_BUILTIN_CLZL 1

HAVE_BUILTIN_CLZLL

#define HAVE_BUILTIN_CLZLL 1

HAVE_BUILTIN_CTZ

#define HAVE_BUILTIN_CTZ 1

HAVE_BUILTIN_CTZL

#define HAVE_BUILTIN_CTZL 1

HAVE_BUILTIN_CTZLL

#define HAVE_BUILTIN_CTZLL 1

HAVE_BUILTIN_CONSTANT_P

#define HAVE_BUILTIN_CONSTANT_P 1

HAVE_BUILTIN_EXPECT

#define HAVE_BUILTIN_EXPECT 1

HAVE_BUILTIN_FFS

#define HAVE_BUILTIN_FFS 1

HAVE_BUILTIN_FFSL

#define HAVE_BUILTIN_FFSL 1

HAVE_BUILTIN_FFSLL

#define HAVE_BUILTIN_FFSLL 1

HAVE_BUILTIN_POPCOUNT

#define HAVE_BUILTIN_POPCOUNT 1

HAVE_BUILTIN_POPCOUNTL

#define HAVE_BUILTIN_POPCOUNTL 1

HAVE_BUILTIN_POPCOUNTLL

#define HAVE_BUILTIN_POPCOUNTLL 1

HAVE_BUILTIN_TYPES_COMPATIBLE_P

#define HAVE_BUILTIN_TYPES_COMPATIBLE_P 1

HAVE_ICCARM_INTRINSICS

#define HAVE_ICCARM_INTRINSICS 0

HAVE_BYTESWAP_H

#define HAVE_BYTESWAP_H 1

HAVE_CLOCK_GETTIME

#define HAVE_CLOCK_GETTIME 1

HAVE_CLOCK_GETTIME_IN_LIBRT

#define HAVE_CLOCK_GETTIME_IN_LIBRT 0

HAVE_COMPOUND_LITERALS

#define HAVE_COMPOUND_LITERALS 1

HAVE_FCHDIR

#define HAVE_FCHDIR 1

HAVE_ERR_H

#define HAVE_ERR_H 1

HAVE_FILE_OFFSET_BITS

#define HAVE_FILE_OFFSET_BITS 0

HAVE_FOR_LOOP_DECLARATION

#define HAVE_FOR_LOOP_DECLARATION 1

HAVE_FLEXIBLE_ARRAY_MEMBER

#define HAVE_FLEXIBLE_ARRAY_MEMBER 1

HAVE_GETPAGESIZE

#define HAVE_GETPAGESIZE 1

HAVE_ISBLANK

#define HAVE_ISBLANK 1

HAVE_LITTLE_ENDIAN

#define HAVE_LITTLE_ENDIAN 1

HAVE_MEMMEM

#define HAVE_MEMMEM 1

HAVE_MEMRCHR

#define HAVE_MEMRCHR 1

HAVE_MMAP

#define HAVE_MMAP 1

HAVE_PROC_SELF_MAPS

#define HAVE_PROC_SELF_MAPS 1

HAVE_QSORT_R_PRIVATE_LAST

#define HAVE_QSORT_R_PRIVATE_LAST 1

HAVE_STRUCT_TIMESPEC

#define HAVE_STRUCT_TIMESPEC 1

HAVE_SECTION_START_STOP

#define HAVE_SECTION_START_STOP 1

HAVE_STACK_GROWS_UPWARDS

#define HAVE_STACK_GROWS_UPWARDS 0

HAVE_STATEMENT_EXPR

#define HAVE_STATEMENT_EXPR 1

HAVE_SYS_FILIO_H

#define HAVE_SYS_FILIO_H 0

HAVE_SYS_TERMIOS_H

#define HAVE_SYS_TERMIOS_H 1

HAVE_SYS_UNISTD_H

#define HAVE_SYS_UNISTD_H 1

HAVE_TYPEOF

#define HAVE_TYPEOF 1

HAVE_UNALIGNED_ACCESS

#define HAVE_UNALIGNED_ACCESS 1

HAVE_UTIME

#define HAVE_UTIME 1

HAVE_WARN_UNUSED_RESULT

#define HAVE_WARN_UNUSED_RESULT 1

HAVE_OPENMP

#define HAVE_OPENMP 1

HAVE_VALGRIND_MEMCHECK_H

#define HAVE_VALGRIND_MEMCHECK_H 1

HAVE_UCONTEXT

#define HAVE_UCONTEXT 1

HAVE_POINTER_SAFE_MAKECONTEXT

#define HAVE_POINTER_SAFE_MAKECONTEXT 1

HAVE_BUILTIN_CPU_SUPPORTS

#define HAVE_BUILTIN_CPU_SUPPORTS 1

HAVE_CLOSEFROM

#define HAVE_CLOSEFROM 1

HAVE_F_CLOSEM

#define HAVE_F_CLOSEM 0

HAVE_NR_CLOSE_RANGE

#define HAVE_NR_CLOSE_RANGE 1

HAVE_F_MAXFD

#define HAVE_F_MAXFD 0
hkl-5.1.7/Documentation/api/html/hkl-noerr.html0000664000175000017500000001042415144640567020416 0ustar00piccapicca noerr: hkl Reference Manual

noerr

noerr

Functions

int close_noerr ()
int fclose_noerr ()
int unlink_noerr ()
void free_noerr ()

Description

Functions

close_noerr ()

int
close_noerr (int fd);

fclose_noerr ()

int
fclose_noerr (FILE *fp);

unlink_noerr ()

int
unlink_noerr (const char *pathname);

free_noerr ()

void
free_noerr (void *p);
hkl-5.1.7/Documentation/api/html/hkl-hkl-axis-private.html0000664000175000017500000001740015144640567022462 0ustar00piccapicca hkl-axis-private: hkl Reference Manual

hkl-axis-private

hkl-axis-private

Types and Values

Description

Functions

hkl_parameter_new_rotation ()

HklParameter *
hkl_parameter_new_rotation (const char *name,
                            HklVector const *axis_v,
                            const HklUnit *punit);

hkl_parameter_new_rotation_with_origin ()

HklParameter *
hkl_parameter_new_rotation_with_origin
                               (const char *name,
                                const HklVector *axis_v,
                                const HklVector *origin,
                                const HklUnit *punit);

hkl_parameter_new_translation ()

HklParameter *
hkl_parameter_new_translation (const char *name,
                               const HklVector *axis_v,
                               const HklUnit *punit);

Types and Values

struct HklAxis

struct HklAxis {
	HklParameter parameter;
	HklVector axis_v;
	HklQuaternion q; /* internal */
};

struct HklRotationWithOrigin

struct HklRotationWithOrigin {
	HklAxis axis;
	HklVector origin;
};

struct HklTranslation

struct HklTranslation {
	HklParameter parameter;
	HklVector axis_v;
};
hkl-5.1.7/Documentation/api/html/ch01.html0000664000175000017500000001721615144640567017256 0ustar00piccapicca [Insert title here]: hkl Reference Manual hkl-5.1.7/Documentation/api/html/hkl-hkl-unit-private.html0000664000175000017500000001677215144640567022510 0ustar00piccapicca hkl-unit-private: hkl Reference Manual

hkl-unit-private

hkl-unit-private

Functions

Description

Functions

hkl_unit_dup ()

HklUnit *
hkl_unit_dup (const HklUnit *self);

copy an Hklunit

[skip]

Returns

the copied HklUnit (memory must be release with hkl_unit_free)


hkl_unit_free ()

void
hkl_unit_free (HklUnit *self);

release the memory of an HklUnit

[skip]


hkl_unit_compatible ()

int
hkl_unit_compatible (const HklUnit *unit1,
                     const HklUnit *unit2);

check if two units are compatible.

[skip]

Parameters

self

the first HklUnit

 

unit

the second HklUnit to check

 

Returns

TRUE or FALSE


hkl_unit_factor ()

double
hkl_unit_factor (const HklUnit *from,
                 const HklUnit *to);

compute the factor to convert from one Hklunit to another one. self * factor = unit

Returns

the factor of the conversion.

hkl-5.1.7/Documentation/api/html/hkl-hkl-pseudoaxis-common-readonly-private.html0000664000175000017500000002510615144640567027005 0ustar00piccapicca hkl-pseudoaxis-common-readonly-private: hkl Reference Manual

hkl-pseudoaxis-common-readonly-private

hkl-pseudoaxis-common-readonly-private

Types and Values

Description

Functions

hkl_mode_incidence_new ()

HklMode *
hkl_mode_incidence_new (const HklModeInfo *info);

hkl_engine_incidence_new ()

HklEngine *
hkl_engine_incidence_new (HklEngineList *engines);

hkl_mode_emergence_new ()

HklMode *
hkl_mode_emergence_new (const HklModeInfo *info);

hkl_engine_emergence_new ()

HklEngine *
hkl_engine_emergence_new (HklEngineList *engines);

SURFACE_PARAMETERS()

#define             SURFACE_PARAMETERS(_x, _y, _z)

P99_PROTECT()

#define P99_PROTECT(...) __VA_ARGS__

HKL_MODE_INFO_incidence_DEFAULTS()

#define             HKL_MODE_INFO_incidence_DEFAULTS(_axes, _parameters)

HKL_MODE_INFO_emergence_DEFAULTS()

#define             HKL_MODE_INFO_emergence_DEFAULTS(_axes, _parameters)

REGISTER_READONLY()

#define             REGISTER_READONLY(_engine, _func, _axes, _parameters)

REGISTER_READONLY_INCIDENCE()

#define REGISTER_READONLY_INCIDENCE(_func, _axes, _parameters) REGISTER_READONLY(incidence, _func, P99_PROTECT(_axes), _parameters)

REGISTER_READONLY_EMERGENCE()

#define REGISTER_READONLY_EMERGENCE(_func, _axes, _parameters) REGISTER_READONLY(emergence, _func, P99_PROTECT(_axes), _parameters)

Types and Values

struct HklModeIncidence

struct HklModeIncidence {
	HklMode parent;
	HklParameter *n_x;
	HklParameter *n_y;
	HklParameter *n_z;
};
hkl-5.1.7/Documentation/api/html/hkl-hkl-matrix-private.html0000664000175000017500000006470415144640567023033 0ustar00piccapicca hkl-matrix-private: hkl Reference Manual

hkl-matrix-private

hkl-matrix-private

Types and Values

Description

Functions

hkl_matrix_dup ()

HklMatrix *
hkl_matrix_dup (const HklMatrix *self);

[skip]


hkl_matrix_init_from_euler ()

void
hkl_matrix_init_from_euler (HklMatrix *self,
                            double euler_x,
                            double euler_y);

Create a rotation HklMatrix from three eulerians angles.

Parameters

self

the HklMatrix to initialize

 

euler_x

the eulerian value along X

 

euler_y

the eulerian value along Y

 

euler_z

the eulerian value along Z

 

hkl_matrix_matrix_set ()

void
hkl_matrix_matrix_set (HklMatrix *self);

todo test

[skip]

Parameters

self

the this ptr

 

m

the matrix to set

 

hkl_matrix_init_from_two_vector ()

void
hkl_matrix_init_from_two_vector (HklMatrix *self,
                                 const HklVector *v1,
                                 const HklVector *v2);

Create an HklMatrix which represent a direct oriented base of the space the first row correspond to the |v1|, the second row |v2| and the last one is |v1 ^ v2|

Parameters

self

The HklMatrix to initialize

 

v1

the first HklVector

 

v2

the second HklVector

 

hkl_matrix_fprintf ()

void
hkl_matrix_fprintf (FILE *file,
                    const HklMatrix *self);

printf an HklMatrix into a FILE stream.

Parameters

file

the FILE stream

 

self

the HklMatrix to print into the file stream

 

hkl_matrix_to_euler ()

void
hkl_matrix_to_euler (const HklMatrix *self,
                     double *euler_x,
                     double *euler_y,
                     double *euler_z);

compute the three eulerians values for a given rotation HklMatrix

Parameters

self

the rotation HklMatrix use to compute the eulerians angles

 

euler_x

the eulerian value along X

 

euler_y

the eulerian value along Y

 

euler_z

the eulerian value along Z

 

hkl_matrix_times_vector ()

void
hkl_matrix_times_vector (const HklMatrix *self,
                         HklVector *v);

multiply an HklVector by an HklMatrix

Parameters

self

the HklMatrix use to multiply the HklVector

 

v

the HklVector multiply by the HklMatrix

 

hkl_matrix_transpose ()

void
hkl_matrix_transpose (HklMatrix *self);

transpose an HklMatrix

Parameters

self

the HklMatrix to transpose

 

hkl_matrix_det ()

double
hkl_matrix_det (const HklMatrix *self);

compute the determinant of an HklMatrix

Parameters

self

the HklMatrix use to compute the determinant

 

Returns

the determinant of the self HklMatrix Todo: test


hkl_matrix_solve ()

int
hkl_matrix_solve (const HklMatrix *self,
                  HklVector *x,
                  const HklVector *b);

solve the system self . X = b

Parameters

self

The HklMatrix of the system

 

x

the HklVector to compute.

 

b

the hklVector of the system to solve.

 

Returns

-1 if the système has no solution, 0 otherwise. Todo: test


hkl_matrix_is_null ()

int
hkl_matrix_is_null (const HklMatrix *self);

is all hklMatrix elementes bellow HKL_EPSILON

Parameters

self

the HklMatrix to test

 

Returns

TRUE if the self HklMatrix is null Todo: test


hkl_matrix_div_double ()

void
hkl_matrix_div_double (HklMatrix *self,
                       double d);

divide an HklMatrix by a constant.

[skip]

Parameters

self

the HklMatrix to divide.

 

d

constant use to divide the HklMatrix

 

hkl_matrix_inv ()

int
hkl_matrix_inv (const HklMatrix *self,
                HklMatrix *inv);

Parameters

self

The HklMatrix of the system

 

Returns

-1 if the HklMatrix can not be inverted, 0 otherwise. Todo: test

Types and Values

HklMatrix

typedef struct {
	double data[3][3];
} HklMatrix;
hkl-5.1.7/Documentation/api/html/hkl-hkl-trajectory-private.html0000664000175000017500000002516415144640567023712 0ustar00piccapicca hkl-trajectory-private: hkl Reference Manual

hkl-trajectory-private

hkl-trajectory-private

Types and Values

Description

Functions

hkl_trajectory_result_new ()

HklTrajectoryResult *
hkl_trajectory_result_new (void);

hkl_trajectory_result_free ()

void
hkl_trajectory_result_free (HklTrajectoryResult *self);

hkl_trajectory_add_geometry ()

void
hkl_trajectory_add_geometry (HklTrajectoryResult *self,
                             const HklGeometry *geometry);

hkl_trajectory_stats_new ()

HklTrajectoryStats *
hkl_trajectory_stats_new (int n);

hkl_trajectory_stats_free ()

void
hkl_trajectory_stats_free (HklTrajectoryStats *self);

hkl_trajectory_stats_add ()

void
hkl_trajectory_stats_add (HklTrajectoryStats *self,
                          const HklGeometryList *geometries);

hkl_trajectory_stats_fprintf ()

void
hkl_trajectory_stats_fprintf (FILE *f,
                              const HklTrajectoryStats *self);

Types and Values

darray_geometry

typedef darray(HklGeometry *) darray_geometry;

struct HklTrajectoryResult

struct HklTrajectoryResult {
	darray_geometry geometries;
};

darray_double

typedef darray(double) darray_double;

darray_sizet

typedef darray(size_t) darray_sizet;

struct HklTrajectoryStats

struct HklTrajectoryStats {
	size_t n;
	darray_sizet nb_solutions;
	darray_double axes_min;
	darray_double axes_max;
	darray_double axes_range;
};
hkl-5.1.7/Documentation/api/html/hkl-cppmagic.html0000664000175000017500000003176115144640567021063 0ustar00piccapicca cppmagic: hkl Reference Manual

cppmagic

cppmagic

Functions

#define CPPMAGIC_NOTHING
#define CPPMAGIC_STRINGIFY()
#define CPPMAGIC_GLUE2()
#define CPPMAGIC_1ST()
#define CPPMAGIC_2ND()
#define CPPMAGIC_ISZERO()
#define CPPMAGIC_NONZERO()
#define CPPMAGIC_NONEMPTY()
#define CPPMAGIC_ISEMPTY()
#define CPPMAGIC_IFELSE()
#define CPPMAGIC_EVAL1()
#define CPPMAGIC_EVAL2()
#define CPPMAGIC_EVAL4()
#define CPPMAGIC_EVAL8()
#define CPPMAGIC_EVAL16()
#define CPPMAGIC_EVAL32()
#define CPPMAGIC_EVAL64()
#define CPPMAGIC_EVAL128()
#define CPPMAGIC_EVAL256()
#define CPPMAGIC_EVAL512()
#define CPPMAGIC_EVAL1024()
#define CPPMAGIC_EVAL()
#define CPPMAGIC_DEFER1()
#define CPPMAGIC_DEFER2()
#define CPPMAGIC_MAP()
#define CPPMAGIC_2MAP()
#define CPPMAGIC_JOIN()

Description

Functions

CPPMAGIC_NOTHING

#define CPPMAGIC_NOTHING()

CPPMAGIC_STRINGIFY()

#define CPPMAGIC_STRINGIFY(...)		_CPPMAGIC_STRINGIFY(__VA_ARGS__)

CPPMAGIC_GLUE2()

#define CPPMAGIC_GLUE2(a_, b_)		_CPPMAGIC_GLUE2(a_, b_)

CPPMAGIC_1ST()

#define CPPMAGIC_1ST(a_, ...)		a_

CPPMAGIC_2ND()

#define CPPMAGIC_2ND(a_, b_, ...) b_

CPPMAGIC_ISZERO()

#define             CPPMAGIC_ISZERO(a_)

CPPMAGIC_NONZERO()

#define CPPMAGIC_NONZERO(a_)		CPPMAGIC_ISZERO(CPPMAGIC_ISZERO(a_))

CPPMAGIC_NONEMPTY()

#define             CPPMAGIC_NONEMPTY(...)

CPPMAGIC_ISEMPTY()

#define             CPPMAGIC_ISEMPTY(...)

CPPMAGIC_IFELSE()

#define             CPPMAGIC_IFELSE(cond_)

CPPMAGIC_EVAL1()

#define CPPMAGIC_EVAL1(...)		__VA_ARGS__

CPPMAGIC_EVAL2()

#define             CPPMAGIC_EVAL2(...)

CPPMAGIC_EVAL4()

#define             CPPMAGIC_EVAL4(...)

CPPMAGIC_EVAL8()

#define             CPPMAGIC_EVAL8(...)

CPPMAGIC_EVAL16()

#define             CPPMAGIC_EVAL16(...)

CPPMAGIC_EVAL32()

#define             CPPMAGIC_EVAL32(...)

CPPMAGIC_EVAL64()

#define             CPPMAGIC_EVAL64(...)

CPPMAGIC_EVAL128()

#define             CPPMAGIC_EVAL128(...)

CPPMAGIC_EVAL256()

#define             CPPMAGIC_EVAL256(...)

CPPMAGIC_EVAL512()

#define             CPPMAGIC_EVAL512(...)

CPPMAGIC_EVAL1024()

#define             CPPMAGIC_EVAL1024(...)

CPPMAGIC_EVAL()

#define CPPMAGIC_EVAL(...)		CPPMAGIC_EVAL1024(__VA_ARGS__)

CPPMAGIC_DEFER1()

#define CPPMAGIC_DEFER1(a_) a_ CPPMAGIC_NOTHING()

CPPMAGIC_DEFER2()

#define CPPMAGIC_DEFER2(a_) a_ CPPMAGIC_NOTHING CPPMAGIC_NOTHING()()

CPPMAGIC_MAP()

#define             CPPMAGIC_MAP(m_, ...)

CPPMAGIC_2MAP()

#define             CPPMAGIC_2MAP(m_, ...)

CPPMAGIC_JOIN()

#define             CPPMAGIC_JOIN(d_, ...)
hkl-5.1.7/Documentation/api/html/hkl-darray.html0000664000175000017500000005373515144640567020567 0ustar00piccapicca darray: hkl Reference Manual

darray

darray

Functions

#define darray()
#define darray_new
#define darray_init()
#define darray_free()
#define darray_item()
#define darray_size()
#define darray_alloc()
#define darray_empty()
#define darray_append()
#define darray_prepend()
#define darray_insert()
#define darray_push()
#define darray_append_items()
#define darray_prepend_items()
#define darray_append_items_nullterminate()
#define darray_prepend_items_nullterminate()
#define darray_appends()
#define darray_prepends()
#define darray_appends_t()
#define darray_prepends_t()
#define darray_pop()
#define darray_pop_check()
#define darray_remove()
#define darray_from_items()
#define darray_from_c()
#define darray_append_string()
#define darray_append_lit()
#define darray_prepend_string()
#define darray_prepend_lit()
#define darray_from_string()
#define darray_from_lit()
#define darray_resize()
#define darray_resize0()
#define darray_realloc()
#define darray_growalloc()
#define darray_make_room()
size_t darray_next_alloc ()
#define darray_foreach()
#define darray_foreach_reverse()

Types and Values

typedef darray_char
typedef darray_schar
typedef darray_uchar
typedef darray_short
typedef darray_int
typedef darray_long
typedef darray_ushort
typedef darray_uint
typedef darray_ulong

Description

Functions

darray()

#define darray(type) struct {type *item; size_t size; size_t alloc;}

darray_new

#define darray_new() {0,0,0}

darray_init()

#define darray_init(arr) do {(arr).item=0; (arr).size=0; (arr).alloc=0;} while(0)

darray_free()

#define darray_free(arr) do {free((arr).item);} while(0)

darray_item()

#define darray_item(arr, i) ((arr).item[i])

darray_size()

#define darray_size(arr)    ((arr).size)

darray_alloc()

#define darray_alloc(arr)   ((arr).alloc)

darray_empty()

#define darray_empty(arr)   ((arr).size == 0)

darray_append()

#define             darray_append(arr, ...)

darray_prepend()

#define             darray_prepend(arr, ...)

darray_insert()

#define             darray_insert(arr, i, ...)

darray_push()

#define darray_push(arr, ...) darray_append(arr, __VA_ARGS__)

darray_append_items()

#define             darray_append_items(arr, items, count)

darray_prepend_items()

#define             darray_prepend_items(arr, items, count)

darray_append_items_nullterminate()

#define             darray_append_items_nullterminate(arr, items, count)

darray_prepend_items_nullterminate()

#define             darray_prepend_items_nullterminate(arr, items, count)

darray_appends()

#define darray_appends(arr, ...) darray_appends_t(arr, typeof((*(arr).item)), __VA_ARGS__)

darray_prepends()

#define darray_prepends(arr, ...) darray_prepends_t(arr, typeof((*(arr).item)), __VA_ARGS__)

darray_appends_t()

#define             darray_appends_t(arr, type, ...)

darray_prepends_t()

#define             darray_prepends_t(arr, type, ...)

darray_pop()

#define darray_pop(arr) ((arr).item[--(arr).size])

darray_pop_check()

#define darray_pop_check(arr) ((arr).size ? darray_pop(arr) : NULL)

darray_remove()

#define             darray_remove(arr, i)

darray_from_items()

#define darray_from_items(arr, items, count) do {size_t count_ = (count); darray_resize(arr, count_); memcpy((arr).item, items, count_*sizeof(*(arr).item));} while(0)

darray_from_c()

#define darray_from_c(arr, c_array) darray_from_items(arr, c_array, sizeof(c_array)/sizeof(*(c_array)))

darray_append_string()

#define darray_append_string(arr, str) do {const char *str_ = (str); darray_append_items(arr, str_, strlen(str_)+1); (arr).size--;} while(0)

darray_append_lit()

#define darray_append_lit(arr, stringLiteral) do {darray_append_items(arr, stringLiteral, sizeof(stringLiteral)); (arr).size--;} while(0)

darray_prepend_string()

#define             darray_prepend_string(arr, str)

darray_prepend_lit()

#define             darray_prepend_lit(arr, stringLiteral)

darray_from_string()

#define darray_from_string(arr, str) do {const char *str_ = (str); darray_from_items(arr, str_, strlen(str_)+1); (arr).size--;} while(0)

darray_from_lit()

#define darray_from_lit(arr, stringLiteral) do {darray_from_items(arr, stringLiteral, sizeof(stringLiteral)); (arr).size--;} while(0)

darray_resize()

#define darray_resize(arr, newSize) darray_growalloc(arr, (arr).size = (newSize))

darray_resize0()

#define             darray_resize0(arr, newSize)

darray_realloc()

#define             darray_realloc(arr, newAlloc)

darray_growalloc()

#define             darray_growalloc(arr, need)

darray_make_room()

#define darray_make_room(arr, room) ({size_t newAlloc = (arr).size+(room); if ((arr).alloc<newAlloc) darray_realloc(arr, newAlloc); (arr).item+(arr).size; })

darray_next_alloc ()

size_t
darray_next_alloc (size_t alloc,
                   size_t need);

darray_foreach()

#define             darray_foreach(i, arr)

darray_foreach_reverse()

#define             darray_foreach_reverse(i, arr)

Types and Values

darray_char

typedef darray(char)           darray_char;

darray_schar

typedef darray(signed char)    darray_schar;

darray_uchar

typedef darray(unsigned char)  darray_uchar;

darray_short

typedef darray(short)          darray_short;

darray_int

typedef darray(int)            darray_int;

darray_long

typedef darray(long)           darray_long;

darray_ushort

typedef darray(unsigned short) darray_ushort;

darray_uint

typedef darray(unsigned int)   darray_uint;

darray_ulong

typedef darray(unsigned long)  darray_ulong;
hkl-5.1.7/Documentation/api/html/hkl-coroutine.html0000664000175000017500000003150515144640567021303 0ustar00piccapicca coroutine: hkl Reference Manual

coroutine

coroutine

Description

Functions

coroutine_stack_init ()

struct coroutine_stack *
coroutine_stack_init (void *buf,
                      size_t bufsize,
                      size_t metasize);

coroutine_stack_alloc ()

struct coroutine_stack *
coroutine_stack_alloc (size_t bufsize,
                       size_t metasize);

coroutine_stack_release ()

void
coroutine_stack_release (struct coroutine_stack *stack,
                         size_t metasize);

coroutine_stack_check ()

struct coroutine_stack *
coroutine_stack_check (struct coroutine_stack *stack,
                       const char *abortstr);

coroutine_stack_to_metadata ()

void *
coroutine_stack_to_metadata (struct coroutine_stack *stack);

coroutine_stack_from_metadata ()

struct coroutine_stack *
coroutine_stack_from_metadata (void *metadata);

coroutine_stack_size ()

size_t
coroutine_stack_size (const struct coroutine_stack *stack);

coroutine_init_ ()

void
coroutine_init_ (struct coroutine_state *cs,
                 void (*fn) (void *),
                 void *arg,
                 struct coroutine_stack *stack);

coroutine_init()

#define             coroutine_init(cs, fn, arg, stack)

coroutine_switch ()

void
coroutine_switch (struct coroutine_state *from,
                  const struct coroutine_state *to);

Types and Values

struct coroutine_stack

struct coroutine_stack {
	uint64_t magic;
	size_t size;
	int valgrind_id;
};

COROUTINE_STK_OVERHEAD

#define COROUTINE_STK_OVERHEAD sizeof(struct coroutine_stack)

COROUTINE_MIN_STKSZ

#define COROUTINE_MIN_STKSZ		2048

COROUTINE_STACK_MAGIC_BUF

#define COROUTINE_STACK_MAGIC_BUF 0xc040c040574cb00f

COROUTINE_STACK_MAGIC_ALLOC

#define COROUTINE_STACK_MAGIC_ALLOC 0xc040c040574ca110

COROUTINE_AVAILABLE

#define COROUTINE_AVAILABLE		1

struct coroutine_state

struct coroutine_state {
#if HAVE_UCONTEXT
	ucontext_t uc;
#endif /* HAVE_UCONTEXT */
};
hkl-5.1.7/Documentation/api/Makefile.in0000664000175000017500000007307315144640450016730 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- # # Makefile.am - template makefile for gtk-doc module # Copyright (C) 2007-2017, 2020, 2021 Stefan Sauer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # As a special exception, the above copyright owner gives unlimited # permission to copy, distribute and modify this Makefile.am template. # You need not follow the terms of the GNU General Public License when # using or distributing such Makefile.am files, even though portions of # the text of the Makefile.am appear in them. The GNU General Public # License (GPL) does govern all other use of the material that constitutes # the Makefile.am template. # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # -*- mode: makefile -*- # # gtk-doc.make - make rules for gtk-doc # Copyright (C) 2003 James Henstridge # 2004-2007 Damon Chaplin # 2007-2017 Stefan Sauer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Documentation/api ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/gtk-doc.make DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ # The name of the module, e.g. 'glib'. DOC_MODULE = hkl # Uncomment for versioned docs and specify the version of the module, e.g. '2'. DOC_MODULE_VERSION = @VMAJ@ # The top-level XML file. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR = $(top_srcdir)/hkl # Extra options to pass to gtkdoc-scangobj. Normally not needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = --rebuild-types --rebuild-sections # Extra options to supply to gtkdoc-mkdb # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Normally not needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/hkl/*.h $(top_srcdir)/hkl.h CFILE_GLOB = $(top_srcdir)/hkl/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = $(top_srcdir)/hkl.h # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES = \ $(top_srcdir)/hkl/api2/hkl2.h \ $(top_srcdir)/hkl/api2/metalang99 \ $(top_srcdir)/hkl/api2/metalang99.h \ $(top_srcdir)/hkl/api2/datatype99.h # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.xml building.xml changes-2.0.xml content_files = # Files where gtk-doc abbreviations (#GtkWidget) are expanded # e.g. expand_content_files=running.xml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = GTKDOC_LIBS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).actions \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test @GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_@AM_V@) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_@AM_V@) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_@AM_V@) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@) GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/api/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/api/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/gtk-doc.make $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am @ENABLE_GTK_DOC_FALSE@all-local: all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc @ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true $(DOC_MAIN_SGML_FILE): sgml-build.stamp @true xml/gtkdocentities.ent: Makefile $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ ) > $@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\--path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ test -f $$file && cp $$file $(abs_builddir)/html; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\--imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\--rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\--rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs @HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" @HAVE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs # This includes the standard gtk-doc make rules, copied by gtkdocize. # Comment this out if you don't want 'make check' to test you doc status # and run some sanity checks # if ENABLE_GTK_DOC # TESTS_ENVIRONMENT = \ # DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ # SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) # TESTS = $(GTKDOC_CHECK) # endif -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/Documentation/api/hkl-docs.xml0000664000175000017500000000720014677222567017115 0ustar00piccapicca %gtkdocentities; ]> &package_name; Reference Manual for &package_string;. The latest version of this documentation can be found on-line at http://[SERVER]/&package_name;/. [Insert title here] API Index Index of deprecated API hkl-5.1.7/Documentation/api/Makefile.am0000664000175000017500000001044214677222567016725 0ustar00piccapicca# -*- mode: makefile -*- # # Makefile.am - template makefile for gtk-doc module # Copyright (C) 2007-2017, 2020, 2021 Stefan Sauer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # As a special exception, the above copyright owner gives unlimited # permission to copy, distribute and modify this Makefile.am template. # You need not follow the terms of the GNU General Public License when # using or distributing such Makefile.am files, even though portions of # the text of the Makefile.am appear in them. The GNU General Public # License (GPL) does govern all other use of the material that constitutes # the Makefile.am template. # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=hkl # Uncomment for versioned docs and specify the version of the module, e.g. '2'. DOC_MODULE_VERSION=@VMAJ@ # The top-level XML file. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/hkl # Extra options to pass to gtkdoc-scangobj. Normally not needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--rebuild-types --rebuild-sections # Extra options to supply to gtkdoc-mkdb # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Normally not needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/hkl/*.h $(top_srcdir)/hkl.h CFILE_GLOB=$(top_srcdir)/hkl/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES=$(top_srcdir)/hkl.h # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES=\ $(top_srcdir)/hkl/api2/hkl2.h \ $(top_srcdir)/hkl/api2/metalang99 \ $(top_srcdir)/hkl/api2/metalang99.h \ $(top_srcdir)/hkl/api2/datatype99.h # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.xml building.xml changes-2.0.xml content_files= # Files where gtk-doc abbreviations (#GtkWidget) are expanded # e.g. expand_content_files=running.xml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/gtk-doc.make # Comment this out if you don't want 'make check' to test you doc status # and run some sanity checks # if ENABLE_GTK_DOC # TESTS_ENVIRONMENT = \ # DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ # SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) # TESTS = $(GTKDOC_CHECK) # endif -include $(top_srcdir)/git.mk hkl-5.1.7/Documentation/api/hkl-overrides.txt0000664000175000017500000000000015143377262020165 0ustar00piccapiccahkl-5.1.7/Documentation/sphinx/0000775000175000017500000000000015144640567015422 5ustar00piccapiccahkl-5.1.7/Documentation/sphinx/Makefile.in0000664000175000017500000007472215144640450017472 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Documentation/sphinx ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer-defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/config/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ TESTS_ENVIRONMENT = env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la TESTS = \ source/bindings/python.py \ source/pyplots/trajectory_full.py \ source/pyplots/trajectory_simple.py EXTRA_DIST = \ source/conf.py.in \ source/bindings/bindings.rst \ source/development.rst \ source/diffractometers/e4cv.rst \ source/diffractometers/e6c.rst \ source/diffractometers/k4cv.rst \ source/diffractometers/k6c.rst \ source/diffractometers/mars.rst \ source/diffractometers/med1_2.rst \ source/diffractometers/med2_2.rst \ source/diffractometers/med2_3.rst \ source/diffractometers/petra3.rst \ source/diffractometers/soleil_sirius_kappa.rst \ source/diffractometers/soleil_sirius_turret.rst \ source/diffractometers/zaxis.rst \ source/index.rst \ source/introduction.rst \ source/pseudo.rst \ $(TESTS) all: all-am .SUFFIXES: .SUFFIXES: .log .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/sphinx/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/sphinx/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? source/bindings/python.py.log: source/bindings/python.py @p='source/bindings/python.py'; \ b='source/bindings/python.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) source/pyplots/trajectory_full.py.log: source/pyplots/trajectory_full.py @p='source/pyplots/trajectory_full.py'; \ b='source/pyplots/trajectory_full.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) source/pyplots/trajectory_simple.py.log: source/pyplots/trajectory_simple.py @p='source/pyplots/trajectory_simple.py'; \ b='source/pyplots/trajectory_simple.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-TESTS check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/sphinx.make publish: html rsync -avz build/html/ picca@people.debian.org:public_html/hkl # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/Documentation/sphinx/source/0000775000175000017500000000000015144640570016714 5ustar00piccapiccahkl-5.1.7/Documentation/sphinx/source/pseudo.rst0000664000175000017500000000531414677222567020764 0ustar00piccapicca.. _pseudo: PseudoAxes ########## This section describe the calculations done by the library for the different kind of pseudo axes. Eulerians to Kappa angles ************************* 1st solution .. math:: :nowrap: \begin{eqnarray*} \kappa_\omega & = & \omega - p + \frac{\pi}{2} \\ \kappa & = & 2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p - \frac{\pi}{2} \end{eqnarray*} or 2nd one .. math:: :nowrap: \begin{eqnarray*} \kappa_\omega & = & \omega - p - \frac{\pi}{2} \\ \kappa & = & -2 \arcsin\left(\frac{\sin\frac{\chi}{2}}{\sin\alpha}\right) \\ \kappa_\phi & = & \phi - p + \frac{\pi}{2} \end{eqnarray*} where .. math:: p = \arcsin\left(\frac{\tan\frac{\chi}{2}}{\tan\alpha}\right); and :math:`\alpha` is the angle of the kappa axis with the :math:`\vec{y}` axis. Kappa to Eulerians angles ************************* 1st solution .. math:: :nowrap: \begin{eqnarray*} \omega & = & \kappa_\omega + p - \frac{\pi}{2} \\ \chi & = & 2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p + \frac{\pi}{2} \end{eqnarray*} or 2nd one .. math:: :nowrap: \begin{eqnarray*} \omega & = & \kappa_\omega + p + \frac{\pi}{2} \\ \chi & = & -2 \arcsin\left(\sin\frac{\kappa}{2} \sin\alpha\right) \\ \phi & = & \kappa_\phi + p - \frac{\pi}{2} \end{eqnarray*} where .. math:: p = \arctan\left(\tan\frac{\kappa}{2} \cos\alpha\right) .. figure:: ../../figures/e2k_1.png :align: center :width: 8cm :math:`\omega = 0`, :math:`\chi = 0`, :math:`\phi = 0`, 1st solution .. figure:: ../../figures/e2k_2.png :align: center :width: 8cm :math:`\omega = 0`, :math:`\chi = 0`, :math:`\phi = 0`, 2nd solution .. figure:: ../../figures/e2k_3.png :align: center :width: 8cm :math:`\omega = 0`, :math:`\chi = 90`, :math:`\phi = 0`, 1st solution .. figure:: ../../figures/e2k_4.png :align: center :width: 8cm :math:`\omega = 0`, :math:`\chi = 90`, :math:`\phi = 0`, 2nd solution Qper and Qpar ************* .. figure:: ../../figures/qper_qpar.png :align: center :width: 12cm this pseudo axis engine compute the perpendicular (:math:`\left|\left|\vec{Q_\text{per}}\right|\right|`) and parallel (:math:`\left|\left|\vec{Q_\text{par}}\right|\right|`) contribution of :math:`\vec{Q}` relatively to the surface of the sample defined by the :math:`\vec{n}` vector. .. math:: :nowrap: \begin{eqnarray*} \vec{q} & = & \vec{k_\text{f}} - \vec{k_\text{i}} \\ \vec{q} & = & \vec{q_\text{per}} + \vec{q_\text{par}} \\ \vec{q_\text{per}} & = & \frac{\vec{q} \cdot \vec{n}}{\left|\left|\vec{n}\right|\right|} \frac{\vec{n}}{\left|\left|\vec{n}\right|\right|} \end{eqnarray*} hkl-5.1.7/Documentation/sphinx/source/pyplots/0000775000175000017500000000000015144640570020426 5ustar00piccapiccahkl-5.1.7/Documentation/sphinx/source/pyplots/trajectory_full.py0000775000175000017500000000376614677222567024243 0ustar00piccapicca#!/usr/bin/env python3 # -*- coding: utf-8 -*- import math import numpy import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from gi.repository import GLib from gi.repository import Hkl sample = Hkl.Sample.new("toto") lattice = Hkl.Lattice.new(1.54, 1.54, 1.54, math.radians(90.0), math.radians(90.0), math.radians(90.)) sample.lattice_set(lattice) detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) factory = Hkl.factories()['K6C'] geometry = factory.create_new_geometry() axis_names = geometry.axis_names_get() geometry.axis_values_set([0., 120, 0., -90., 0., 60.], Hkl.UnitEnum.USER) engines = factory.create_new_engine_list() engines.init(geometry, detector, sample) n = 10 h = numpy.linspace(0, 0, n + 1) k = numpy.linspace(0, 1, n + 1) l = numpy.linspace(1, 1, n + 1) # get the hkl engine hkl = engines.engine_get_by_name("hkl") # set the hkl engine and get the results trajectories = [] for hh, kk, ll in zip(h, k, l): try: solutions = hkl.pseudo_axis_values_set([hh, kk, ll], Hkl.UnitEnum.USER) first_solution = solutions.items()[0] for i, item in enumerate(solutions.items()): try: trajectories[i] except IndexError: trajectories.append([]) values = item.geometry_get().axis_values_get(Hkl.UnitEnum.USER) # print values, item.geometry.distance(geometry) trajectories[i].append(values) engines.select_solution(first_solution) # print except GLib.GError as err: pass for i, (trajectory, title) in enumerate(zip(trajectories[1:], ["2nd", "3rd", "4th"])): ax = plt.subplot(1, 3, i + 1) plt.title(title) plt.plot(trajectory, 'o-') plt.ylim(-180, 180) if i != 0: for tl in ax.get_yticklabels(): tl.set_visible(False) hkl-5.1.7/Documentation/sphinx/source/pyplots/trajectory_simple.py0000775000175000017500000000446514677222567024567 0ustar00piccapicca#!/usr/bin/env python3 # -*- coding: utf-8 -*- import math import numpy import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from gi.repository import GLib from gi.repository import Hkl sample = Hkl.Sample.new("toto") lattice = Hkl.Lattice.new(1.54, 1.54, 1.54, math.radians(90), math.radians(90), math.radians(90)) sample.lattice_set(lattice) detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) factory = Hkl.factories()['K6C'] geometry = factory.create_new_geometry() axis_names = geometry.axis_names_get() # set the initial position geometry.axis_values_set([0, 120, 0, -90, 0, 60], Hkl.UnitEnum.USER) # get all engines for a given configuration engines = factory.create_new_engine_list() # prepare the engines to work with the related geometry, detector and # sample engines.init(geometry, detector, sample) #[0, 0, 1] -> [0, 1, 1] n = 10 h = numpy.linspace(0, 0, n + 1) k = numpy.linspace(0, 1, n + 1) l = numpy.linspace(1, 1, n + 1) # get the hkl engine hkl = engines.engine_get_by_name("hkl") pseudo_axis_names = ["h", "k", "l"] # compute the trajectory motors_positions = [] for idx, hh, kk, ll in zip(range(n), h, k, l): try: solutions = hkl.pseudo_axis_values_set([hh, kk, ll], Hkl.UnitEnum.USER) first_solution = solutions.items()[0] # if no exception raised we have at least one solution # move the diffractometer to the solution engines.select_solution(first_solution) motors_positions.append(geometry.axis_values_get(Hkl.UnitEnum.USER)) except GLib.GError as err: pass plt.subplot(1, 2, 1) plt.title("motors trajectory (1st solution)") # reorder the motors_positions for the plot motors_positions = numpy.array(motors_positions).T for y, name in zip(motors_positions, axis_names): plt.plot(y, 'o-', label=name) plt.legend(loc=2) plt.ylim(-180, 180) plt.xlabel("trajectory point index") plt.ylabel("motor position (Degree)") plt.subplot(1, 2, 2) plt.title("hkl trajectory") hkl_positions = numpy.array([h, k, l]) for y, name in zip(hkl_positions, pseudo_axis_names): plt.plot(y, 'o-', label=name) plt.legend(loc=2) plt.ylim(-0.1, 1.1) plt.xlabel("trajectory point index") plt.ylabel("pseudo motor position") hkl-5.1.7/Documentation/sphinx/source/index.rst0000664000175000017500000000152314677222567020572 0ustar00piccapicca.. hkl documentation master file, created by sphinx-quickstart on Sat May 28 14:45:51 2011. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to hkl's |version| documentation! ========================================= Contents: .. toctree:: :maxdepth: 1 :numbered: :titlesonly: introduction diffractometers/e4cv diffractometers/k4cv diffractometers/e6c diffractometers/k6c diffractometers/zaxis diffractometers/med1_2 diffractometers/med2_2 diffractometers/med2_3 diffractometers/mars diffractometers/petra3 diffractometers/soleil_sirius_turret diffractometers/soleil_sirius_kappa pseudo bindings/bindings development Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` hkl-5.1.7/Documentation/sphinx/source/bindings/0000775000175000017500000000000015144640570020511 5ustar00piccapiccahkl-5.1.7/Documentation/sphinx/source/bindings/bindings.rst0000664000175000017500000001610214677222567023054 0ustar00piccapicca.. _bindings: Bindings ######## The hkl library use the gobject-introspection to provide automatic binding for a few languages. Python ****** hkl computation: .. literalinclude:: python.py has you can see there is 4 available solutions. let's compute an hkl trajectory and select the first solution. .. plot:: pyplots/trajectory_simple.py if we look at the 3 other solutions we can see that there is a problem of continuity at the begining of the trajectory. .. plot:: pyplots/trajectory_full.py hey what's happend with theses solutions ! let's look closely to real numbers. the last column is the distance to the diffractometer current position. This distance is for now express like this: .. math:: \sum_{axes} \left|\text{current position} - \text{target position}\right| :: [0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0 [0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718 [0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612 [0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188 [0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723 [0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205 [0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235 [0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288 [0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726 [0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098 [0.0, 114.39338605351007, 21.85448296702796, -97.074145033719, 0.0, 62.93506298693471] 0.218163667981 [0.0, -128.54167683157993, 21.85448296702796, -97.07414574435087, 0.0, -62.93506298693471] 6.59846359365 [0.0, -51.45832316842005, -21.85448296702796, 97.07414574435087, 0.0, 62.93506298693471] 6.93673746356 [0.0, 65.60661394648993, -21.85448296702796, 97.074145033719, 0.0, -62.93506298693471] 7.03385205725 [0.0, 113.28316795475283, 28.583837575232764, -99.29953499008337, 0.0, 65.16540747008955] 0.21459359225 [0.0, -131.88223933078322, 28.583837575232764, -99.29953638594702, 0.0, -65.16540747008955] 6.69038531388 [0.0, -48.11776066921677, -28.583837575232764, 99.29953638594702, 0.0, 65.16540747008955] 7.18296350386 [0.0, 66.71683204524717, -28.583837575232764, 99.29953499008337, 0.0, -65.16540747008955] 7.37556986959 [0.0, 112.56286877075006, 34.90573305321372, -101.42496979586187, 0.0, 67.97568017857415] 0.209053830457 [0.0, -135.4128111996365, 34.90573305321372, -101.42497263302461, 0.0, -67.97568017857415] 6.81174779784 [0.0, -44.58718880036348, -34.90573305321372, 101.4249726330246, 0.0, 67.97568017857415] 7.41581162393 [0.0, 67.43713122924994, -34.90573305321372, 101.42496979586187, 0.0, -67.97568017857415] 7.7353201851 [0.0, 112.2291126083182, 40.78594007247402, -103.43941832567457, 0.0, 71.33706722449408] 0.202280147961 [0.0, -139.10795451001587, 40.78594007247402, -103.43942357602316, 0.0, -71.33706722449408] 6.96173845391 [0.0, -40.89204548998411, -40.78594007247402, 103.43942357602312, 0.0, 71.33706722449408] 7.63358787543 [0.0, 67.7708873916818, -40.78594007247402, 103.43941832567457, 0.0, -71.33706722449408] 8.10986069093 [0.0, 112.27578927291766, 46.214916130901734, -105.33741042812996, 0.0, 75.22640762217479] 0.196576175748 [0.0, -142.95061850160724, 46.214916130901734, -105.3374188005596, 0.0, -75.22640762217479] 7.13962155618 [0.0, -37.04938149839278, -46.214916130901734, 105.33741880055959, 0.0, 75.22640762217479] 7.83557762281 [0.0, 67.72421072708234, -46.214916130901734, 105.33741042812996, 0.0, -75.22640762217479] 8.49706672677 [0.0, 112.697137434232, 51.201667684695856, -107.11797492933192, 0.0, 79.63023536264535] 0.202327153157 [0.0, -146.9330984641471, 51.201667684695856, -107.11798610058318, 0.0, -79.63023536264535] 7.34491897177 [0.0, -33.0669015358529, -51.201667684695856, 107.11798610058317, 0.0, 79.63023536264535] 8.02185610877 [0.0, 67.30286256576798, -51.201667684695856, 107.11797492933192, 0.0, -79.63023536264535] 8.89597005568 [0.0, 113.49085964586432, 55.76762791023837, -108.78347437395287, 0.0, 84.54867879242364] 0.208455586312 [0.0, -151.05782007465257, 55.76762791023837, -108.78348605483542, 0.0, -84.54867879242364] 7.57761473366 [0.0, -28.942179925347414, -55.76762791023837, 108.78348605483538, 0.0, 84.54867879242364] 8.19307323084 [0.0, 66.50914035413568, -55.76762791023837, 108.78347437395287, 0.0, -84.54867879242364] 9.30675279514 [0.0, 114.6614608037443, 59.941489465646214, -110.3385360479293, 0.0, 90.00000081324956] 0.215562935229 [0.0, -155.33854118146962, 59.941489465646214, -110.33854432979601, 0.0, -89.99999918675044] 7.83839602383 [0.0, -24.661458818530395, -59.941489465646214, 110.33854432979601, 0.0, 90.00000081324956] 8.3502621071 [0.0, 65.3385391962557, -59.941489465646214, 110.3385360479293, 0.0, -89.99999918675044] 9.7307712883 as you can see for the first point of the trajectory, the 2nd, 3rd and 4th solutions have identical distances to the current position of the diffractometer so they are un-ordered:: [0.0, 119.99999999999999, 0.0, -90.0, 0.0, 59.99999999999999] 0.0 [0.0, -119.99999999999999, 0.0, -90.0, 0.0, -59.99999999999999] 6.28318530718 [0.0, -60.00000000000005, 0.0, 90.0, 0.0, 59.99999999999999] 6.28318530718 [0.0, 60.00000000000001, 0.0, 90.0, 0.0, -59.99999999999999] 6.28318530718 then the problem arise with the second and third solution. you can see a sort of reorganisation of the solution. 2 -> 3, 3 -> 4 and 4 -> 2 then the order will stick unchanged until the end of the trajectory. this is because the distance is computed relatively to the current position of the diffractometer.:: [0.0, 117.7665607657826, 7.456826294401656, -92.39856410531434, 0.0, 60.33024982425957] 0.216753826612 [0.0, -57.436310940366894, -7.456826294401656, 92.39856418853617, 0.0, 60.33024982425957] 6.41621345188 [0.0, 62.2334392342174, -7.456826294401656, 92.39856410531434, 0.0, -60.33024982425957] 6.42197739723 [0.0, -122.5636890596331, 7.456826294401656, -92.3985641885362, 0.0, -60.33024982425957] 6.50570308205 [0.0, 115.89125602137928, 14.781064139466098, -94.7660423112577, 0.0, 61.314597086440706] 0.219062698235 [0.0, -125.42334103772737, 14.781064139466098, -94.7660427050904, 0.0, -61.314597086440706] 6.53671995288 [0.0, -54.57665896227262, -14.781064139466098, 94.76604270509038, 0.0, 61.314597086440706] 6.67989976726 [0.0, 64.10874397862072, -14.781064139466098, 94.7660423112577, 0.0, -61.314597086440706] 6.71437170098 .. warning:: when you compute a trajectory, start from a valid position (the starting point must be the real first point of your trajectory) then use only the closest solution for the next points of the trajectory. (first solution of the geometries list) hkl-5.1.7/Documentation/sphinx/source/bindings/python.py0000775000175000017500000000524714677222567022433 0ustar00piccapicca#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ This file is part of the hkl library. The hkl library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The hkl library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the hkl library. If not, see . Copyright (C) 2003-2012, 2019 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX Authors: Picca Frédéric-Emmanuel """ import math from gi.repository import GLib from gi.repository import Hkl detector = Hkl.Detector.factory_new(Hkl.DetectorType(0)) factory = Hkl.factories()['K6C'] geometry = factory.create_new_geometry() values_w = [0., 30., 0., 0., 0., 60.] geometry.axis_values_set(values_w, Hkl.UnitEnum.USER) axis_names = geometry.axis_names_get() print(geometry.name_get(), "diffractometer has", len(axis_names),\ "axes : ", axis_names) print(values_w) sample = Hkl.Sample.new("toto") lattice = Hkl.Lattice.new(1.54, 1.54, 1.54, math.radians(90.0), math.radians(90.0), math.radians(90.)) sample.lattice_set(lattice) # compute all the pseudo axes managed by all engines engines = factory.create_new_engine_list() engines.init(geometry, detector, sample) engines.get() # get the hkl engine and do a computation hkl = engines.engine_get_by_name("hkl") values = hkl.pseudo_axis_values_get(Hkl.UnitEnum.USER) print("read : ", values) # set the hkl engine and get the results for _ in range(100): try: print() solutions = hkl.pseudo_axis_values_set(values, Hkl.UnitEnum.USER) print(hkl.pseudo_axis_values_get(Hkl.UnitEnum.USER)) print("idx".center(15)), for name in axis_names: print("{}".format(name.center(15))), print() for i, item in enumerate(solutions.items()): read = item.geometry_get().axis_values_get(Hkl.UnitEnum.USER) print("{}".format(repr(i).center(15))), for value in read: print("{}".format(repr(value)[:15].center(15))), print() except GLib.GError as err: print(values, err) values[1] += .01 hkl-5.1.7/Documentation/sphinx/source/diffractometers/0000775000175000017500000000000015144640570022075 5ustar00piccapiccahkl-5.1.7/Documentation/sphinx/source/diffractometers/soleil_sirius_kappa.rst0000664000175000017500000001264514677222567026714 0ustar00piccapiccaSOLEIL SIRIUS KAPPA ################### Geometry ******** For this geometry there is a special parameters called :math:`\alpha` which is the angle between the kappa rotation axis and the :math:`\vec{y}` direction. + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 4 axes for the sample + **mu** : rotating around the :math:`-\vec{z}` direction (0, 0, -1) + **komega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + **kappa** : rotating around the :math:`\vec{x}` direction (0, :math:`-\cos\alpha`, :math:`-\sin\alpha`) + **kphi** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 2 axes for the detector + **delta** : rotation around the :math:`-\vec{z}` direction (0, 0, -1) + **gamma** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** eulerians ========= PseudoAxes provides : **"omega"**, **"chi"**, **"phi"** + mode **eulerians** + Axes : **komega**, **kappa**, **kphi** + Parameters : **"solution"** When you compute the eulerians values from the kappa axes values, there is two possibilities, so the **"solution"** parameter when set 0 or 1 allow to switch from one solution to the other. hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector_vertical** + Axes: **komega**, **kappa**, **kphi**, **delta** + Parameters : No parameter This mode add the bissector constrain ``tth = 2 * omega``. In this mode the equivalent eulerian **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega_vertical** + Axes: **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **omega** This mode do not move the equivalent eulerian **omega** axis. + mode **constant_chi_vertical** + Axes: **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **chi** This mode do not move the equivalent eulerian **chi** axis. + mode **constant_phi_vertical** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **phi** This mode do not move the equivalent eulerian **phi** axis. + mode : **lifting_detector_kphi** + Axes : **"kphi"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **lifting_detector_mu** + Axes : **"mu"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **double_diffraction vertical** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **bissector_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"kphi"**, **"gamma"** + Parameters : No parameters + mode : **constant_phi_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"kphi"**, **"gamma"** + Parameters : **phi** + mode : **horizontal kphi constant** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"gamma"** + Parameters : no parameters + mode : **double_diffraction_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **kphi**, **"gamma"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **psi_constant_vertical** + Axes : **"komega"**, **"kappa"**, **kphi**, **"delta"** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. + mode : **constant_incidence** + Axes : **"komega"**, **"kappa"**, **kphi**, **"gamma"**, **"delta"** + Parameters : **x**, **y**, **z**, **incidence**, **azimuth** This mode allow to work with a constant incidence of the incoming beam onto the sample surface. To use this mode you need to follow a few steps: + align your surface along a direction :math:`\vec{n}` (**x**, **y**, **z**) in the laboratory space, with your diffractometer. + initialize the mode, so it can remember the current diffractometer position for futur computation. + set the desired **incidence** + set the desired **azimuth** of the normal of the surface in the YOZ plane (azimuth = 0 -> :math:`\vec{n}` along :math:`\vec{y}`) Now it is possible to do an HKL computation. psi === PseudoAxis provided : **psi** + mode **psi_vertical** + Axes : **komega**, **kappa**, **kphi**, **delta** + Parameters : **h1**, **k1**, **l1** The (**h1**, **k1**, **l1**) vector is used as a reference for the computation of the **psi** pseudo axis value. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/k4cv.rst0000664000175000017500000000660514677222567023521 0ustar00piccapiccaKappa 4 circles vertical ######################## .. figure:: ../../../figures/k4cv.png :align: center :width: 8cm Schematic view of the diffractometer. Geometry ******** For this geometry there is a special parameters called :math:`\alpha` which is the angle between the kappa rotation axis and the :math:`\vec{y}` direction. + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **komega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + **kappa** : rotating around the :math:`\vec{x}` direction (0, :math:`-\cos\alpha`, :math:`-\sin\alpha`) + **kphi** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 1 axis for the detector + **tth** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** eulerians ========= PseudoAxes provides : **"omega"**, **"chi"**, **"phi"** + mode **eulerians** + Axes : **komega**, **kappa**, **kphi** + Parameters : **"solution"** When you compute the eulerians values from the kappa axes values, there is two possibilities, so the **"solution"** parameter when set 0 or 1 allow to switch from one solution to the other. hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector** + Axes: **komega**, **kappa**, **kphi**, **tth** + Parameters : No parameter This mode add the bissector constrain ``tth = 2 * omega``. In this mode the equivalent eulerian **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"tth"** + Parameters : **"omega"** This mode do not move the equivalent eulerian **omega** axis, fixed by the parameter of the mode. + mode **constant_chi** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"tth"** + Parameters : **"chi"** This mode do not move the equivalent eulerian **chi** axis fixed by the parameter of the mode. + mode **constant_phi** + Axes related : **"komega"**, **"kappa"**, **"kphi"**, **"tth"** + Parameters : **"phi"** This mode do not move the equivalent eulerian **phi** axis fixed by the parameter of the mode. + mode **double_diffraction** + Axes : **komega**, **kappa**, **kphi**, **tth** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode **psi_constant** + Axes : **komega**, **kappa**, **kphi**, **tth** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. psi === PseudoAxis provided : **psi** + mode **psi** + Axes : **komega**, **kappa**, **kphi**, **tth** + Parameters : **h1**, **k1**, **l1** q = PseudoAxis provided : **q** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` + mode : **q** + Axes : **"tth"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/med2_3.rst0000664000175000017500000000324214677222567023715 0ustar00piccapiccaSOLEIL SIXS MED2+3 ################## Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **beta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **mu** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **omega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 3 axis for the detector + **beta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **eta_a** : rotation around the :math:`-\vec{x}` direction (-1, 0, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **mu_eta_a_fixed** + Axes : **omega**, **gamma**, **delta** + Parameters : No parameter + mode **mu_fixed** + Axes : **mu**, **omega**, **gamma**, **eta_a** + Parameters : No parameter This mode add the slits constant orientation compare to the surface of the sample, which is along the **omega** axis. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter qper_qpar ========= PseudoAxis provided : **qper**, **qpar** where **qper** and **qpar** are the perpendicular and parallel composants of the :math:`|\vec{Q}|` vector. projected respectively to the surface vector of the sample. hkl-5.1.7/Documentation/sphinx/source/diffractometers/zaxis.rst0000664000175000017500000000253114677222567024002 0ustar00piccapiccaZ-Axis ###### Geometry ******** For this geometry the **mu** axis is common to the sample and the detector. + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 2 axes for the sample + **mu** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **omega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 3 axis for the detector + **mu** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **zaxis** + Axes : **omega**, **delta**, **gamma** + Parameters : No parameter + mode **reflectivity** + Axes : **mu**, **omega**, **delta**, **gamma** + Parameters : No parameter This mode add the reflectivity constraint ``mu = gamma``. The incomming beam angle and the outgoing beam angle are equals. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/k6c.rst0000664000175000017500000001301214677222567023323 0ustar00piccapiccaKappa 6 circles ############### .. figure:: ../../../figures/k6c.png :align: center :width: 8cm Schematic view of the diffractometer. Geometry ******** For this geometry there is a special parameters called :math:`\alpha` which is the angle between the kappa rotation axis and the :math:`\vec{y}` direction. + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 4 axes for the sample + **mu** : rotating around the :math:`\vec{z}` direction (0, 0, 1) + **komega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + **kappa** : rotating around the :math:`\vec{x}` direction (0, :math:`-\cos\alpha`, :math:`-\sin\alpha`) + **kphi** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 2 axes for the detector + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** eulerians ========= PseudoAxes provides : **"omega"**, **"chi"**, **"phi"** + mode **eulerians** + Axes : **komega**, **kappa**, **kphi** + Parameters : **"solution"** When you compute the eulerians values from the kappa axes values, there is two possibilities, so the **"solution"** parameter when set 0 or 1 allow to switch from one solution to the other. hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector_vertical** + Axes: **komega**, **kappa**, **kphi**, **delta** + Parameters : No parameter This mode add the bissector constrain ``tth = 2 * omega``. In this mode the equivalent eulerian **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega_vertical** + Axes: **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **omega** This mode do not move the equivalent eulerian **omega** axis. + mode **constant_chi_vertical** + Axes: **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **chi** This mode do not move the equivalent eulerian **chi** axis. + mode **constant_phi_vertical** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **phi** This mode do not move the equivalent eulerian **phi** axis. + mode : **lifting_detector_kphi** + Axes : **"kphi"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **lifting_detector_mu** + Axes : **"mu"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **double_diffraction vertical** + Axes : **"komega"**, **"kappa"**, **"kphi"**, **"delta"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **bissector_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"kphi"**, **"gamma"** + Parameters : No parameters + mode : **constant_phi_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"kphi"**, **"gamma"** + Parameters : **phi** + mode : **horizontal kphi constant** + Axes : **"mu"**, **"komega"**, **"kappa"**, **"gamma"** + Parameters : no parameters + mode : **double_diffraction_horizontal** + Axes : **"mu"**, **"komega"**, **"kappa"**, **kphi**, **"gamma"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **psi_constant_vertical** + Axes : **"komega"**, **"kappa"**, **kphi**, **"delta"** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. + mode : **constant_incidence** + Axes : **"komega"**, **"kappa"**, **kphi**, **"gamma"**, **"delta"** + Parameters : **x**, **y**, **z**, **incidence**, **azimuth** This mode allow to work with a constant incidence of the incoming beam onto the sample surface. To use this mode you need to follow a few steps: + align your surface along a direction :math:`\vec{n}` (**x**, **y**, **z**) in the laboratory space, with your diffractometer. + initialize the mode, so it can remember the current diffractometer position for futur computation. + set the desired **incidence** + set the desired **azimuth** of the normal of the surface in the YOZ plane (azimuth = 0 -> :math:`\vec{n}` along :math:`\vec{y}`) Now it is possible to do an HKL computation. psi === PseudoAxis provided : **psi** + mode **psi_vertical** + Axes : **komega**, **kappa**, **kphi**, **delta** + Parameters : **h1**, **k1**, **l1** The (**h1**, **k1**, **l1**) vector is used as a reference for the computation of the **psi** pseudo axis value. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/med1_2.rst0000664000175000017500000000210114677222567023704 0ustar00piccapiccaSOLEIL SIXS MED1+2 ################## Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 2 axes for the sample + **pitch** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **mu** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + 3 axis for the detector + **pitch** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **pitch_fixed** + Axes : **mu**, **gamma**, **delta** + Parameters : No parameter q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/e4cv.rst0000664000175000017500000000512114677222567023503 0ustar00piccapiccaEulerian 4 circles ################## .. figure:: ../../../figures/3S+1D.png :align: center :width: 8cm Schematic view of the diffractometer. Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **omega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + **chi** : rotating around the :math:`\vec{x}` direction (1, 0, 0) + **phi** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 1 axis for the detector + **tth** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) Pseudo axes *********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector** + Axes: **omega**, **chi**, **phi**, **tth** + Parameters : No parameter This mode add the bissector constrain ``tth = 2 * omega``. In this mode the **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega** + Axes : **chi**, **phi**, **tth** + Parameters : No parameter This mode do not move the current **omega** axis. + mode **constant_chi** + Axes : **omega**, **phi**, **tth** + Parameters : No parameter This mode do not move the current **chi** axis. + mode **constant_phi** + Axes related : **omega**, **chi**, **tth** + Parameters : No parameter This mode do not move the current **phi** axis. + mode **double_diffraction** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode **psi_constant** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. psi === PseudoAxis provided : **psi** + mode **psi** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h1**, **k1**, **l1** q = PseudoAxis provided : **q** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` + mode : **q** + Axes : **"tth"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/e6c.rst0000664000175000017500000001124614677222567023324 0ustar00piccapiccaEulerian 6 circles ################## .. figure:: ../../../figures/4S+2D.png :align: center :width: 8cm Schematic view of the diffractometer. Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 4 axes for the sample + **mu** : rotating around the :math:`\vec{z}` direction (0, 0, 1) + **omega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + **chi** : rotating around the :math:`\vec{x}` direction (1, 0, 0) + **phi** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 2 axes for the detector + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector_vertical** + Axes: **omega**, **chi**, **phi**, **delta** + Parameters : No parameter This mode add the bissector constrain ``delta = 2 * omega``. In this mode the **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega_vertical** + Axes: **"chi"**, **"phi"**, **"delta"** + Parameters : no parameter This mode do not move the **omega** axis. + mode **constant_chi_vertical** + Axes: **"omega"**, **"phi"**, **"delta"** + Parameters : no parameter This mode do not move the **chi** axis. + mode **constant_phi_vertical** + Axes : **"omega"**, **"chi"**, **"delta"** + Parameters : no parameter This mode do not move the **phi** axis. + mode : **lifting_detector_phi** + Axes : **"phi"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **lifting_detector_omega** + Axes : **"omega"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **lifting_detector_mu** + Axes : **"mu"**, **"gamma"**, **"delta"** + Parameters : No Parameters + mode : **double_diffraction vertical** + Axes : **"omega"**, **"chi"**, **"phi"**, **"delta"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **bissector_horizontal** + Axes : **"mu"**, **"omega"**, **"chi"**, **"phi"**, **"gamma"** + Parameters : No parameters + mode : **double_diffraction_horizontal** + Axes : **"mu"**, **"omega"**, **"chi"**, **phi**, **"gamma"** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode : **psi_constant_vertical** + Axes : **"omega"**, **"chi"**, **phi**, **"delta"** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. + mode : **psi_constant_horizontal** + Axes : **"omega"**, **"chi"**, **phi**, **"gamma"** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. + mode **constant_mu_horizontal** + Axes : **"chi"**, **"phi"**, **"gamma"** + Parameters : no parameter This mode do not move the **mu** axis. psi === PseudoAxis provided : **psi** + mode **psi_vertical** + Axes : **komega**, **kappa**, **kphi**, **delta** + Parameters : **h1**, **k1**, **l1** The (**h1**, **k1**, **l1**) vector is used as a reference for the computation of the **psi** pseudo axis value. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/med2_2.rst0000664000175000017500000000256614677222567023724 0ustar00piccapiccaSOLEIL SIXS MED2+2 ################## Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **beta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **mu** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **omega** : rotating around the :math:`-\vec{y}` direction (0, -1, 0) + 3 axis for the detector + **beta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **gamma** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **delta** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **mu_fixed** + Axes : **omega**, **gamma**, **delta** + Parameters : No parameter + mode **reflectivity** + Axes : **mu**, **omega**, **gamma**, **delta** + Parameters : No parameter This mode add the reflectivity constraint ``2*mu = gamma``. The incomming beam angle and the outgoing beam angle are equals. q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/mars.rst0000664000175000017500000000471414677222567023613 0ustar00piccapiccaSOLEIL MARS ########### Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **omega** : rotating around the :math:`\vec{z}` direction (0, -1, 0) + **chi** : rotating around the :math:`\vec{x}` direction (-1, 0, 0) + **phi** : rotating around the :math:`\vec{z}` direction (0, 0, 1) + 1 axis for the detector + **tth** : rotation around the :math:`\vec{z}` direction (0, -1, 0) Pseudo axes *********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **bissector** + Axes: **omega**, **chi**, **phi**, **tth** + Parameters : No parameter This mode add the bissector constrain ``tth = 2 * omega``. In this mode the **chi** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **constant_omega** + Axes : **chi**, **phi**, **tth** + Parameters : No parameter This mode do not move the current **omega** axis. + mode **constant_chi** + Axes : **omega**, **phi**, **tth** + Parameters : No parameter This mode do not move the current **chi** axis. + mode **constant_phi** + Axes related : **omega**, **chi**, **tth** + Parameters : No parameter This mode do not move the current **phi** axis. + mode **double_diffraction** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h2**, **k2**, **l2** This mode put a second hkl vector (**h2**, **k2**, **l2**) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. + mode **psi_constant** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h2**, **k2**, **l2**, **psi** This mode allow to fix the value of the pseudo axis **psi** at a constant value when you move around an **h**, **k** , **l** position. The (**h2**, **k2**, **l2**) vector is used as a reference for the computation of the **psi** pseudo axis value. You can retrive and ``freeze`` the current value of the **psi** pseudo axis value into the **psi** parameter when you initialize the mode. But you can also write directly the value of the desired **psi** parameter. psi === PseudoAxis provided : **psi** + mode **psi** + Axes : **omega**, **chi**, **phi**, **tth** + Parameters : **h1**, **k1**, **l1** q = PseudoAxis provided : **q** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` + mode : **q** + Axes : **"tth"** + Parameters : no parameter hkl-5.1.7/Documentation/sphinx/source/diffractometers/petra3.rst0000664000175000017500000000370714677222567024050 0ustar00piccapiccaPETRA3 P09 EH2 ############## Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 4 axes for the sample + **mu** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **omega** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **chi** : rotating around the :math:`\vec{x}` direction (1, 0, 0) + **phi** : rotating around the :math:`\vec{z}` direction (0, 0, 1) + 3 axis for the detector + **mu** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) + **delta** : rotation around the :math:`\vec{z}` direction (0, 0, 1) + **gamma** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode **zaxis + alpha-fixed** + Axes : **"omega"**, **"gamma"**, **"delta"** + Parameters : No parameter + mode **zaxis + beta-fixed** + Axes : **"mu"**, **"omega"**, **"delta"** + Parameters : No parameter + mode **zaxis + alpha=beta** + Axes : **"mu"**, **"omega"**, **"gamma"**, **"delta"** + Parameters : No parameter This mode add the ``mu = gamma`` constrain. + mode **4-circles bissector_horizontal** + Axes: **"omega"**, **"chi"**, **"phi"**, **"delta"** + Parameters : No parameter This mode add the bissector constrain ``delta = 2 * omega``. In this mode the eulerian **"chi"** circle containt the vector of diffusion :math:`\vec{Q}`. So it is easy to know the orientation of the hkl plan. + mode **4-circles constant_omega_horizontal** + Axes: **"chi"**, **"phi"**, **"delta"** + Parameters : No parameter This mode do not move the **"omega"** axis. + mode **4-circles constant_chi_horizontal** + Axes: **"omega"**, **"phi"**, **"delta"** + Parameters : No parameter This mode do not move the **"chi"** axis. + mode **4-circles constant_phi_horizontal** + Axes: **"omega"**, **"chi"**, **"delta"** + Parameters : No parameter This mode do not move the **"phi"** axis. hkl-5.1.7/Documentation/sphinx/source/diffractometers/soleil_sirius_turret.rst0000664000175000017500000000310214677222567027131 0ustar00piccapiccaSOLEIL SIRIUS TURRET #################### Geometry ******** + xrays source fix allong the :math:`\vec{x}` direction (1, 0, 0) + 3 axes for the sample + **thetah** : rotating around the :math:`-\vec{z}` direction (0, 0, -1) + **alphay** : rotating around the :math:`\vec{y}` direction (0, 1, 0) + **alphax** : rotating around the :math:`\vec{x}` direction (1, 0, 0) + 2 axes for the detector + **delta** : rotation around the :math:`-\vec{z}` direction (0, 0, -1) + **gamma** : rotation around the :math:`-\vec{y}` direction (0, -1, 0) PseudoAxes ********** hkl === PseudoAxes provided : **h**, **k** and **l** + mode : **lifting_detector_thetah** + Axes : **"thetah"**, **"delta"**, **"gamma"** + Parameters : No Parameters q2 == PseudoAxis provided : **q**, **alpha** where **q** is :math:`|\vec{Q}| = \frac{2 \tau}{\lambda} \sin{\theta}` and **alpha** is the azimuth of :math:`\vec{Q}` in the ``yz`` plan. The origin of this angles is the :math:`\vec{y}` vector, and the positive rotation along :math:`\vec{x}` + mode : **q2** + Axes : **"gamma"**, **"delta"** + Parameters : no parameter qper_qpar ========= PseudoAxis provided : **qper**, **qpar** where **qper** and **qpar** are the perpendicular and parallel composants of the :math:`|\vec{Q}|` vector projected respectively to the surface vector :math:`\vec{n}` of coordinates :math:`x`, :math:`y`, :math:`z` of the sample expressed in the sample referential. The default value for :math:`n` is (0, 1, 0) + mode : **qper_qpar** + Axes : **"delta"**, **"gamma"** + Parameters : **"x"**, **"y"**, **"z"** hkl-5.1.7/Documentation/sphinx/source/introduction.rst0000664000175000017500000006344014677222567022212 0ustar00piccapicca.. _introduction: Introduction ############ The purpose of the library is to factorise single crystal diffraction angles computation for different kind of diffractometer geometries. It is used at the SOLEIL, Desy and Alba synchrotron with the Tango control system to pilot diffractometers. Features ******** + mode computation (aka PseudoAxis) + item for different diffractometer geometries. + UB matrix computation. + busing & Levy with 2 reflections + simplex computation with more than 2 reflections using the GSL library. + Eulerians angles to pre-orientate your sample. + Crystal lattice affinement + with more than 2 reflections you can select which parameter must be fitted. + Pseudoaxes + psi, eulerians, q, ... Conventions *********** In all this document the next convention will be used to describe the diffractometers geometries. + right handed convention for all the angles. + direct space orthogonal base. + description of the diffractometer geometries is done with all axes values set to zero. Diffraction ########### the crystal *********** A periodic crystal is the association of a pattern and a lattice. The pattern is located at each points of the lattice node. Positions of those nodes are given by: .. math:: R_{uvw}=u\cdot\vec{a}+v\cdot\vec{b}+w\cdot\vec{c} :math:`\vec{a}`, :math:`\vec{b}`, :math:`\vec{c}` are the former vector of a base of the space. ``u``, ``v``, ``w`` are integrers. The pattern contain atomes associated to each lattice node. the purpose of diffraction is to study the interaction of this crystal (pattern+lattice) with X-rays. .. figure:: ../../figures/crystal.png :align: center :width: 8cm Crystal direct lattice. this lattice is defined by :math:`\vec{a}`, :math:`\vec{b}`, :math:`\vec{c}` vectors, and the angles :math:`\alpha`, :math:`\beta`, :math:`\gamma`. In general cases this lattice is not othonormal. Nevertheless to compute the interaction of this real space lattice and the X-Rays, it is convenient to define another lattice called reciprocal lattice defined like this: .. math:: :nowrap: :label: reciprocal lattice \begin{eqnarray*} \vec{a}^{\star} & = & \tau\frac{\vec{b}\wedge\vec{c}}{\vec{a}\cdot(\vec{b}\wedge\vec{c})}\\ \vec{b}^{\star} & = & \tau\frac{\vec{c}\wedge\vec{a}}{\vec{b}\cdot(\vec{c}\wedge\vec{a})}\\ \vec{c}^{\star} & = & \tau\frac{\vec{a}\wedge\vec{b}}{\vec{c}\cdot(\vec{a}\wedge\vec{b})} \end{eqnarray*} :math:`\tau=2\pi` or :math:`\tau=1` depending on the conventions. It is then possible to define thoses orthogonal properties: .. math:: :nowrap: \begin{eqnarray*} \vec{a}^{\star}\cdot\vec{a}=\tau & \vec{b}^{\star}\cdot\vec{a}=0 & \vec{c}^{\star}\cdot\vec{a}=0\\ \vec{a}^{\star}\cdot\vec{b}=0 & \vec{b}^{\star}\cdot\vec{b}=\tau & \vec{c}^{\star}\cdot\vec{b}=0\\ \vec{a}^{\star}\cdot\vec{c}=0 & \vec{b}^{\star}\cdot\vec{c}=0 & \vec{c}^{\star}\cdot\vec{c}=\tau \end{eqnarray*} This reciprocal space lattice allow to write in a simpler form the interaction between the crystal and the X-Rays. We often only know about :math:`\vec{a}`, :math:`\vec{b}`, :math:`\vec{c}` vectors and the angles :math:`\alpha`, :math:`\beta`, :math:`\gamma`. Using the previous equations :eq:`reciprocal`, we can compute the reciprocal lattice this way: .. math:: :label: reciprocal :nowrap: \begin{eqnarray*} a^{\star} & = & \frac{\sin\alpha}{aD}\\ b^{\star} & = & \frac{\sin\beta}{bD}\\ c^{\star} & = & \frac{\sin\gamma}{cD} \end{eqnarray*} where .. math:: D=\sqrt{1-\cos^{2}\alpha-\cos^{2}\beta-\cos^{2}\gamma+2\cos\alpha\cos\beta\cos\gamma} To compute the angles between the reciprocal space vectors, it is once again possible to use the previous equations :eq:`reciprocal` to obtain the sinus and cosinus of the angles :math:`\alpha^\star`, :math:`\beta^\star` et :math:`\gamma^\star`: .. math:: :nowrap: \begin{eqnarray*} \cos\alpha^{\star}=\frac{\cos\beta\cos\gamma-\cos\alpha}{\sin\beta\sin\gamma} & \, & \sin\alpha^{\star}=\frac{D}{\sin\beta\sin\gamma} \\ \cos\beta^{\star}=\frac{\cos\gamma\cos\alpha-\cos\beta}{\sin\gamma\sin\alpha} & \, & \sin\beta^{\star}=\frac{D}{\sin\gamma\sin\alpha}\\ \cos\gamma^{\star}=\frac{\cos\alpha\cos\beta-\cos\gamma}{\sin\alpha\sin\beta} & \, & \sin\gamma^{\star}=\frac{D}{\sin\alpha\sin\beta} \end{eqnarray*} Diffraction *********** Let the incomming X-rays beam whose wave vector is :math:`\vec{k_{i}}`, :math:`|k_{i}|=\tau/\lambda` where :math:`\lambda` is the wavelength of the signal. The :math:`\vec{k_{d}}` vector wavelength of the diffracted beam. There is diffusion if the diffusion vector :math:`\vec{q}` can be expressed as follows: .. math:: \vec{q}=\vec{k_{d}}-\vec{k_{i}}=h.\vec{a}^{*}+k.\vec{b}^{*}+l.\vec{c}^{*} where :math:`(h,k,l)\in\mathbb{N}^{3}` and :math:`(h,k,l)\neq(0,0,0)`. Thoses indices :math:`(h,k,l)` are named Miller indices. Another way of looking at things has been given by Bragg and that famous relationship: .. math:: n\lambda=2d\sin\theta where :math:`d` is the inter-plan distance and :math:`n \in \mathbb{N}`. The diffusion accure for a unique :math:`\theta` angle. Then we got :math:`\vec{q}` perpendicular to the diffraction plan. The Ewald construction allow to represent this diffraction in the reciprocal space. Quaternions *********** Properties ========== The quaternions will be used to discribe the diffractometers geometries. Thoses quaternions can represent 3D rotations. There is different way to describe then like complex numbers. .. math:: q=a+bi+cj+dk or .. math:: q=[a,\vec{v}] To compute the quaternion's norm, we can proceed like for complex numbers .. math:: \lvert q \rvert = \sqrt{a{{}^2}+b{{}^2}+c{{}^2}+d{{}^2}} Its conjugate is : .. math:: q^{*}=[a,-\vec{u}]=a-bi-cj-dk Operations ========== The difference with the complexnumber algebre is about non-commutativity. .. math:: qp \neq pq .. math:: \bordermatrix{ ~ & 1 & i & j & k \cr 1 & 1 & i & j & k \cr i & i & -1 & k & -j \cr j & j & -k & -1 & i \cr k & k & j & -i & -1 } The product of two quaternions can be express by the Grassman product :eq:`Grassman product`. So for two quaternions :math:`p` and :math:`q`: .. math:: :nowrap: \begin{align*} q &= a+\vec{u} = a+bi+cj+dk\\ p &= t+\vec{v} = t+xi+yj+zk \end{align*} we got .. math:: :label: Grassman product pq=at-\vec{u}\cdot\vec{v}+a\vec{v}+t\vec{u}+\vec{v}\times\vec{u} or equivalent .. math:: pq=(at-bx-cy-dz)+(bt+ax+cz-dy)i+(ct+ay+dx-bz)j+(dt+az+by-cx)k 3D rotations ============ L'ensemble des quaternions unitaires (leur norme est égale à 1) est le groupe qui représente les rotations dans l'espace 3D. Si on a un vecteur unitaire :math:`\vec{u}` et un angle de rotation :math:`\theta` alors le quaternion :math:`[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\vec{u]}` représente la rotation de :math:`\theta` autour de l'axe :math:`\vec{u}` dans le sens trigonométrique. Nous allons donc utiliser ces quaternions unitaires pour représenter les mouvements du diffractomètre. Alors que dans le plan 2D une simple multiplication entre un nombre complex et le nombre :math:`e^{i\theta}` permet de calculer simplement la rotation d'angle :math:`\theta` autour de l'origine, dans l'espace 3D l'expression équivalente est: .. math:: z'=qzq^{-1} où :math:`q` est le quaternion de norme 1 représentant la rotation dans l'espace et :math:`z` le quaternion représentant le vecteur qui subit la rotation (sa partie réelle est nulle). Dans le cas des quaternions de norme 1, il est très facile de calculer :math:`q^{-1}`. En effet l'inverse d'une rotation d'angle :math:`\theta` est la rotation d'angle :math:`-\theta`. On a donc directement: .. math:: q^{-1}=[\cos\frac{-\theta}{2},\sin\frac{-\theta}{2}\vec{u}]=[\cos\frac{\theta}{2},-\sin\frac{\theta}{2}\vec{u}]=q^{*} Le passage aux matrices de rotation se fait par la formule suivante :math:`q\rightarrow M`. .. math:: \begin{bmatrix} a{{}^2}+b{{}^2}-c{{}^2}-d{{}^2} & 2bc-2ad & 2ac+2bd\\ 2ad+2bc & a{{}^2}-b{{}^2}+c{{}^2}-d{{}^2} & 2cd-2ab\\ 2bd-2ac & 2ab+2cd & a{{}^2}-b{{}^2}-c{{}^2}+d{{}^2} \end{bmatrix} La composition de rotation se fait simplement en multipliant les quaternions entre eux. Si l'on à :math:`q` Les Diffractomètres ################### Eulérien 3S+1D ************** Nous allons nous inspirer du modèle de Busin et Levy pour décrire notre diffractomètre. Les sens de rotation sont respectés mais le repère directe est choisi de façon à correspondre au repère de laboratoire de la ligne CRYSTAL du synchrotron Soleil. Les photons-X se propagent suivant le vecteur :math:`\vec{x}` et la direction verticale est suivant le vecteur :math:`\vec{z}`. Ce diffractomètre est de type verticale (le vecteur de diffusion :math:`\vec{Q}` est dans le plan xOz). Les angles permettant de décrire la configuration du diffractomètre sont présentés sur la figure~\ref{cap:3S+1D}. .. figure:: ../../figures/3S+1D.png :align: center :width: 8cm Dénomination des angles du diffractomètre 3S+1D Eulérien.\label{cap:3S+1D} Eulérien 4S+2D ************** Nous allons nous inspirer du modèle de You pour notre diffractomètre (fig.~\ref{cap:4S+2D}) ici présenté tous les angles mis à zéro. Les rayons-X arrivent suivant le vecteur $\vec{x}$ (le repère est différent de celui de You). .. figure:: ../../figures/4S+2D.png :align: center :width: 8cm Dénomination des angles du diffractomètre 4S+2D Eulérien.\label{cap:4S+2D} Le principe des calcules de You est d'exprimer dans le repère du laboratoire le vecteur diffusion :math:`\vec{Q}` de deux façons différentes. Une première en utilisant les angles du goniomètre 4S puis une à partir des angles du détecteur 2D et de la connaissance des coordonnées du vecteur incident. En égalant les deux expressions, il obtient un système d'équation à 6 inconnus mais seulement 3 équations. Pour être à même de résoudre le système il faut fixer des contraintes supplémentaire. C'est ce que l'on appel les modes de fonctionnement du diffractomètre. Il est commode de définir d'autres angles que ceux du diffractomètre relativement à des vecteurs caractéristiques tel que le vecteur de diffusion :math:`\vec{Q}` ou un vecteur pointant dans une direction particulière du cristal :math:`\vec{n}`. Cette direction peut-être soit lié à la cristallographie du cristal soit à sa forme (une normale à une face). La figure~\ref{cap:Pseudo-Angles-li=0000E9s} représente les angles liés au vecteur de diffusion et à ce vecteur de référence. Tout d'abord :math:`\theta` (angle entre :math:`\vec{Q}` et le plan :math:`yz`) et qui correspond à l'angle de Bragg. :math:`\vartheta` qui est l'angle azimutal que fait la projection de :math:`\vec{Q}` sur le plan :math:`yz` et la direction :math:`+y` (fig~\ref{cap:Pseudo-Angles-li=0000E9s}a). Il y a ensuite les angles :math:`\alpha` et :math:`\varphi` définits comme précédemment mais pour le vecteur de référence :math:`\vec{n}` (fig~\ref{cap:Pseudo-Angles-li=0000E9s}b). Et finalement les angles $\tau$ (angle entre :math:`\vec{Q}` et :math:`\vec{n}`) et :math:`\psi` qui correspond à la rotation de :math:`\vec{n}` autour du vecteur de diffusion :math:`\vec{Q}` (fig~\ref{cap:Pseudo-Angles-li=0000E9s}c). L'origine de cet angle $\psi$ est prise à zéro lorsque le vecteur :math:`\vec{n}` est dans le plan de diffraction (plan contenant :math:`\vec{Q}` et :math:`\vec{k_{i}}`) (fig~\ref{cap:Pseudo-Angles-li=0000E9s}d). .. figure:: ../../figures/4S+2D_reciprocal.png :align: center :width: 7 cm Pseudo angles :math:`\theta` et :math:`\vartheta` liés à :math:`\vec{Q}` .. figure:: ../../figures/4S+2D_reciprocal2.png :align: center :width: 7cm Pseudo angles :math:`\alpha` et :math:`\phi` liés à :math:`\vec{n}` .. figure:: ../../figures/4S+2D_reciprocal3.png :align: center :width: 7cm Pseudo angles :math:`\tau` et :math:`\psi` liés à :math:`\vec{n}` relativement à :math:`\vec{Q}` et le plan de diffraction .. figure:: ../../figures/4S+2D_reciprocal4.png :align: center :width: 7cm Pseudo Angles liés au vecteur de diffusion :math:`\vec{Q}` et à :math:`\vec{n}` Il est alors possible d'exprimer ces pseudos angles en fonction des angles physique du diffractomètre. Modes de fonctionnement ####################### Equations fondamentales *********************** Le problème que nous devons résoudre est de calculer pour une famille de plan :math:`(h,k,l)` donné, les angles de rotation du diffractomètre qui permettent de le mettre en condition de diffraction. Il faut donc exprimer les relations mathématiques qui lient les différents angles entre eux lorsque la condition de Bragg est vérifiée. L'équation fondamentale est la suivante: .. math:: :nowrap: \begin{align*} \left(\prod_{i}S_{i}\right)\cdot U\cdot B\cdot\vec{h} & =\left(\prod_{j}D_{j}-I\right)\cdot\vec{k_{i}}\\ R\cdot U\cdot B\cdot\vec{h} & =\vec{Q} \end{align*} ou :math:`\vec{h}` est le vecteur :math:`(h,k,l)`, :math:`\vec{k_{i}}` est le vecteur incident, :math:`S_{i}` les matrices de rotations des mouvements liés à l'échantillon, :math:`D_{j}` les matrices de rotation des mouvements liés au détecteur, :math:`I` la matrice identité, :math:`U` la matrice d'orientation du cristal par rapport au repère de l'axe sur lequel ce dernier est monté et :math:`B` la matrice de passage d'un repère non orthonormé ( celui du crystal réciproque) à un repère orthonormé. Calcule de `B` ============== Si l'on connaît les paramètres cristallins du cristal étudié, il est très simple de calculer :math:`B`: .. math:: B= \begin{bmatrix} a^{\star} & b^{\star}\cos\gamma^{\star} & c^{\star}\cos\beta^{\star}\\ 0 & b^{\star}\sin\gamma^{\star} & -c^{\star}\sin\beta^{\star}\cos\alpha\\ 0 & 0 & 1/c \end{bmatrix} Calcule de `U` ============== Il existe plusieurs façons de calculer :math:`U`. Busing et Levy en a proposé plusieurs. Nous allons présenter celle qui nécessite la mesure de seulement deux réflections ainsi que la connaissance des paramètres cristallins. Cette façon de calculer la matrice d'orientation $U$, peut être généralisée à n'importe quel diffractomètre pour peu que la description des axes de rotation permette d'obtenir la matrice de rotation de la machine :math:`R` et le vecteur de diffusion :math:`\vec{Q}`. Il est également possible de calculer :math:`U` sans la connaîssance des paramètres cristallins. il faut alors faire un affinement des paramètres. Cela revient à minimiser une fonction. Nous allons utiliser la méthode du simplex pour trouver ce minimum et donc ajuster l'ensemble des paramètres cristallins ainsi que la matrice d'orientation. Algorithme de Busing Levy ========================= L'idée est de se placer dans le repère de l'axe sur lequel est monté l'échantillon. On mesure deux réflections :math:`(\vec{h}_{1},\vec{h}_{2})` ainsi que leurs angles associés. Cela nous permet de calculer $R$ et :math:`\vec{Q}` pour chacune de ces reflections. nous avons alors ce système: .. math:: :nowrap: \begin{eqnarray*} U\cdot B\cdot\vec{h}_{1} & = & \tilde{R}_{1}\cdot\vec{Q}_{1}\\ U\cdot B\cdot\vec{h}_{2} & = & \tilde{R}_{2}\cdot\vec{Q}_{2} \end{eqnarray*} De façon à calculer facilement :math:`U`, il est intéressant de définir deux trièdres orthonormé :math:`T_{\vec{h}}` et :math:`T_{\vec{Q}}` à partir des vecteurs :math:`(B\vec{h}_{1},B\vec{h}_{2})` et :math:`(\tilde{R}_{1}\vec{Q}_{1},\tilde{R}_{2}\vec{Q}_{2})`. On a alors très simplement: .. math:: U\cdot T_{\vec{h}}=T_{\vec{Q}} Et donc .. math:: U=T_{\vec{Q}}\cdot\tilde{T}_{\vec{h}} Affinement par la méthode du simplex ==================================== Dans ce cas nous ne connaissons pas la matrice :math:`B`, il faut donc mesurer plus que deux réflections pour ajuster les 9 paramètres. Six paramètres pour le crystal et trois pour la matrice d'orientation :math:`U`. Les trois paramètres qui permennt de representer :math:`U` sont en fait les angles d'euler. il faut donc être en mesure de passer d'une représentation eulérien à cette matrice :math::`U` et réciproquement. .. math:: U=X\cdot Y\cdot Z où :math:`X` est la matrice rotation suivant l'axe Ox et le premier angle d'Euler, :math:`Y` la matrice de rotation suivant l'axe Oy et le deuxième angle d'Euler et :math:`Z` la matrice du troisième angle d'Euler pour l'axe Oz. .. math:: :nowrap: \begin{tabular}{ccc} $X$ & $Y$ & $Z$\tabularnewline $\begin{bmatrix} 1 & 0 & 0\\ 0 & A & -B\\ 0 & B & A \end{bmatrix}$ & $\begin{bmatrix} C & 0 & D\\ 0 & 1 & 0\\ -D & 0 & C \end{bmatrix}$ & $\begin{bmatrix} E & -F & 0\\ F & E & 0\\ 0 & 0 & 1 \end{bmatrix}$ \end{tabular} et donc: .. math:: U= \begin{bmatrix} CE & -CF & D\\ BDE+AF & -BDF+AE & -BC\\ -ADE+BF & ADF+BE & AC \end{bmatrix} Il est donc facile de passer des angles d'Euler à la matrice d'orientation. Il faut maintenant faire la transformation inverse de la matrice :math:`U` vers les angles d'euler. Diffractomètre 4 Cercle (3S+1D) Eulerien **************************************** Pour ce diffractomètres, les matrices de rotations des différents axes sont les suivantes: .. math:: :nowrap: \begin{tabular}{cccc} $\Omega$ & $\chi$ & $\Phi$ & $2\Theta$\tabularnewline $\begin{bmatrix} \cos\omega & 0 & -\sin\omega\\ 0 & 1 & 0\\ \sin\omega & 0 & \cos\omega \end{bmatrix}$ & $\begin{bmatrix} 1 & 0 & 0\\ 0 & \cos\chi & -\sin\chi\\ 0 & \sin\chi & \cos\chi \end{bmatrix}$ & $\begin{bmatrix} \cos\phi & 0 & -\sin\phi\\ 0 & 1 & 0\\ \sin\phi & 0 & \cos\phi \end{bmatrix}$ & $\begin{bmatrix} \cos2\theta & 0 & -\sin2\theta\\ 0 & 1 & 0\\ \sin2\theta & 0 & \cos2\theta \end{bmatrix}$ \end{tabular} On obtient alors la matrice de rotation de la machine .. math:: R=\Omega\chi\Phi soit .. math:: R= \begin{bmatrix} \cos\omega\cos\phi-\cos\chi\sin\omega\sin\phi & -\sin\chi\sin\omega & -\cos\omega\sin\phi-\cos\chi\sin\omega\cos\phi\\ -\sin\chi\sin\phi & \cos\chi & -\sin\chi\cos\phi\\ \sin\omega\cos\phi-\cos\chi\cos\omega\sin\phi & -\sin\chi\cos\omega & -\sin\omega\sin\phi-\cos\chi\cos\omega\cos\phi \end{bmatrix} De la même façon on peut calculer le vecteur diffusion en fonction des angles du détecteur: .. math:: \vec{Q}=\left(2\Theta-I\right)\cdot\vec{k}_{i} où :math:`I` est la matrice identité. Finalement: .. math:: \vec{Q}=k_{i}\left(\begin{array}{c} \cos2\theta-1\\ 0\\ \sin2\theta \end{array}\right) L'équation fondamentale nous permet d'écrire: .. math:: U\cdot B\cdot\vec{h}=\tilde{R}\cdot\vec{Q} Cette équation est de 4 inconnus pour seulement 3 équations. Il faut donc imposer des contraintes pour résoudre ce système et ainsi d'orienter le diffractomètre. Ces différentes contraintes définissent les modes de fonctionnement des diffractomètres. Dans la suite nous allons nous efforcer de trouver l'ensemble des solutions possibles pour les différents modes et non pas une seule solution. Ceci afin de laisser le choix suivant certaines stratégies à l'utilisateur d'utiliser telle ou telle solution plutôt qu'une autre. Mode Bisecteur ============== Dans ce mode on choisit d'avoir: .. math:: \omega=\theta Le système s'écrit alors simplement: .. math:: :nowrap: \begin{eqnarray*} h_{\phi} & = & 2k_{i}\sin\theta\cos\chi\sin\phi\\ k_{\phi} & = & 2k_{i}\sin\theta\sin\chi\\ l_{\phi} & = & 2k_{i}\sin\theta\cos\chi\cos\phi \end{eqnarray*} On a: .. math:: h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}=4k_{i}\sin^{2}\theta où :math:`k_{i}=\frac{\tau}{\lambda}`. donc on peut écrire: .. math:: \left|\sin\theta\right|=\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}} il faut donc enviseager les deux possibilité selon que :math:`\theta` est positif ou bien négatif. .. math:: \sin\theta<0 On peut alors écrire: .. math:: \sin\chi=-\frac{k_{\phi}}{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}} puis en utilisant le relation bien connue :math:`\cos^{2}+\sin^{2}=1` on a: .. math:: \cos^{2}\chi=\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}} Il faut une fois de plus faire un choix selon que :math:`\cos\chi` est positif ou négatif. .. math:: \cos\chi<0 .. math:: \cos\chi=-\sqrt{\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi+}^{2}l_{\phi}^{2}}} .. math:: \cos\chi>0 .. math:: \cos\chi=\sqrt{\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi+}^{2}l_{\phi}^{2}}} .. math:: \sin\theta>0 On peut alors écrire: .. math:: \sin\chi=\frac{k_{\phi}}{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}} puis en utilisant le relation bien connue :math:`\cos^{2}+\sin^{2}=1` on a: .. math:: \cos^{2}\chi=\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}} Il faut une fois de plus faire un choix selon que :math:`\cos\chi` est positif ou négatif. .. math:: \cos\chi<0 .. math:: \cos\chi=-\sqrt{\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi+}^{2}l_{\phi}^{2}}} .. math:: \cos\chi>0 .. math:: \cos\chi=\sqrt{\frac{h_{\phi}^{2}+l_{\phi}^{2}}{h_{\phi}^{2}+k_{\phi+}^{2}l_{\phi}^{2}}} La résolution du système donne alors 4 quadruplets de solutions: .. math:: :nowrap: \begin{tabular}{c|c|c|c} $\omega$ & $\chi$ & $\phi$ & $2\theta$\tabularnewline \hline $-\theta$ & $\arctan2(-k_{\phi},-\sqrt{h_{\phi}^{2}+l_{\phi}^{2}})$ & $\arctan2(h_{\phi},l_{\phi})$ & $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $-\theta$ & $\arctan2(-k_{\phi},\sqrt{h_{\phi}^{2}+l_{\phi}^{2}})$ & $\arctan2(-h_{\phi},-l_{\phi})$ & $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $\theta$ & $\arctan2(k_{\phi},-\sqrt{h_{\phi}^{2}+l_{\phi}^{2}})$ & $\arctan2(-h_{\phi},-l_{\phi})$ & $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $\theta$ & $\arctan2(k_{\phi},\sqrt{h_{\phi}^{2}+l_{\phi}^{2}})$ & $\arctan2(h_{\phi},l_{\phi})$ & $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline \end{tabular} Mode Delta Theta ================ Ce mode consiste à décaler :math:`\omega` par rapport à :math:`\theta` d'une valeur constante :math:`C`: .. math:: \omega=\theta+C Le système s'écrit alors comme suit: .. math:: :nowrap: \begin{eqnarray*} h_{\phi} & = & 2k_{i}\sin\theta\left(\cos C\cos\chi\sin\phi+\sin C\cos\phi\right)\\ k_{\phi} & = & 2k_{i}\sin\theta\cos C\sin\chi\\ l_{\phi} & = & 2k_{i}\sin\theta\left(\cos C\cos\chi\cos\phi-\sin C\sin\phi\right) \end{eqnarray*} On a toujours: .. math:: h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}=4k_{i}\sin^{2}\theta La résolution donne 4 quadruplets de solutions: .. math:: :nowrap: \begin{tabular}{ccc} $\omega$ & $\chi$ & $\phi$\tabularnewline \hline $-\theta+C$ & $\arctan2(\frac{-k_{\phi}}{\cos C},-\sqrt{h_{\phi}^{2}-k_{\phi}^{2}\tan^{2}C+l_{\phi}^{2}})$ & $\arctan2(-h_{\phi}\cos C\cos\chi+l_{\phi}\sin C,-l_{\phi}\cos C\cos\chi-h_{\phi}\sin C)$\tabularnewline $-\theta+C$ & $\arctan2(\frac{-k_{\phi}}{\cos C},\sqrt{h_{\phi}^{2}-k_{\phi}^{2}\tan^{2}C+l_{\phi}^{2}})$ & $\arctan2(-h_{\phi}\cos C\cos\chi+l_{\phi}\sin C,-l_{\phi}\cos C\cos\chi-h_{\phi}\sin C)$\tabularnewline $\theta+C$ & $\arctan2(\frac{k_{\phi}}{\cos C},-\sqrt{h_{\phi}^{2}-k_{\phi}^{2}\tan^{2}C+l_{\phi}^{2}})$ & $\arctan2(h_{\phi}\cos C\cos\chi-l_{\phi}\sin C,l_{\phi}\cos C\cos\chi+h_{\phi}\sin C)$\tabularnewline $\theta+C$ & $\arctan2(\frac{k_{\phi}}{\cos C},\sqrt{h_{\phi}^{2}-k_{\phi}^{2}\tan^{2}C+l_{\phi}^{2}})$ & $\arctan2(h_{\phi}\cos C\cos\chi-l_{\phi}\sin C,l_{\phi}\cos C\cos\chi+h_{\phi}\sin C)$\tabularnewline \end{tabular} .. math:: :nowrap: \begin{tabular}{c} $2\theta$\tabularnewline \hline $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline \end{tabular} où Mode omega constant =================== Dans ce mode on choisit de garder :math:`\omega` toujours constant: .. math:: \omega=C Le système s'écrit alors comme suit: .. math:: :nowrap: \begin{eqnarray*} h_{\phi} & = & 2k_{i}\sin\theta\left(\cos(C-\theta)\cos\chi\sin\phi+\sin(C-\theta)\cos\phi\right)\\ k_{\phi} & = & 2k_{i}\sin\theta\cos(C-\theta)\sin\chi\\ l_{\phi} & = & 2k_{i}\sin\theta\left(\cos(C-\theta)\cos\chi\cos\phi-\sin(C-\theta)\sin\phi\right) \end{eqnarray*} La résolution donne 4 quadruplets de solutions: .. math:: :nowrap: \begin{tabular}{ccc} $\omega$ & $\chi$ & $\phi$\tabularnewline \hline $-\theta+C$ & $\arctan2\left(-k_{\phi},-\sqrt{(h_{\phi}^{2}+l_{\phi}^{2})\cos^{2}(C-\theta)-k_{\phi}^{2}\sin^{2}(C-\theta)}\right)$ & $\arctan2(-h_{\phi}\cos C\cos\chi+l_{\phi}\sin C,-l_{\phi}\cos C\cos\chi-h_{\phi}\sin C)$\tabularnewline $-\theta+C$ & $\arctan2\left(-k_{\phi},\sqrt{(h_{\phi}^{2}+l_{\phi}^{2})\cos^{2}(C-\theta)-k_{\phi}^{2}\sin^{2}(C-\theta)}\right)$ & $\arctan2(-h_{\phi}\cos C\cos\chi+l_{\phi}\sin C,-l_{\phi}\cos C\cos\chi-h_{\phi}\sin C)$\tabularnewline $\theta+C$ & $\arctan2\left(k_{\phi},-\sqrt{(h_{\phi}^{2}+l_{\phi}^{2})\cos^{2}(C-\theta)-k_{\phi}^{2}\sin^{2}(C-\theta)}\right)$ & $\arctan2(h_{\phi}\cos C\cos\chi-l_{\phi}\sin C,l_{\phi}\cos C\cos\chi+h_{\phi}\sin C)$\tabularnewline $\theta+C$ & $\arctan2\left(k_{\phi},\sqrt{(h_{\phi}^{2}+l_{\phi}^{2})\cos^{2}(C-\theta)-k_{\phi}^{2}\sin^{2}(C-\theta)}\right)$ & $\arctan2(h_{\phi}\cos C\cos\chi-l_{\phi}\sin C,l_{\phi}\cos C\cos\chi+h_{\phi}\sin C)$\tabularnewline \end{tabular} .. math:: :nowrap: \begin{tabular}{c} $2\theta$\tabularnewline \hline $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin-\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline $2\arcsin\frac{\sqrt{h_{\phi}^{2}+k_{\phi}^{2}+l_{\phi}^{2}}}{2k_{i}}$\tabularnewline \end{tabular} hkl-5.1.7/Documentation/sphinx/source/conf.py.in0000664000175000017500000001575114677222567020645 0ustar00piccapicca# -*- coding: utf-8 -*- # # hkl documentation build configuration file, created by # sphinx-quickstart on Sat May 28 14:45:51 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'matplotlib.sphinxext.plot_directive'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'hkl' copyright = u'2011-2013, Picca Frédéric-Emmanuel' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '@VERSION@' # The full version, including alpha/beta/rc tags. release = '@VERSION@' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". #html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'hkldoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'hkl.tex', u'hkl Documentation', u'Picca Frédéric-Emmanuel', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'hkl', u'hkl Documentation', [u'Picca Frédéric-Emmanuel'], 1) ] hkl-5.1.7/Documentation/sphinx/source/development.rst0000664000175000017500000000637714677222567022021 0ustar00piccapicca.. _development: Developpement ############# Getting hkl *********** To get hkl, you can download the last stable version from sourceforge or if you want the latest development version use `git `_ or `msysgit `_ on windows system and do:: $ git clone git://repo.or.cz/hkl.git or:: $ git clone http://repo.or.cz/r/hkl.git (slower) then checkout the next branch like this:: $ cd hkl $ git checkout -b next origin/next Building hkl ************ To build hkl you need `Python 2.3+ `_ the `GNU Scientific Library 1.12 `_ and `GLib-2.0 >= 2.3.4 `_:: $ ./configure --disable-gui $ make $ sudo make install you can also build a GUI interfaces which use `gtk `_:: $ ./configure $ make $ sudo make install optionnaly you can build an experimental *libhkl3d* library (no public API for now) which is used by the GUI to display and compute diffractometer collisions (only the *K6C* model). To build it you need also `gtkglext `_ and `bullet 2.82 `_:: $ ./configure --enable-hkl3d $ make $ sudo make install if you want to work on the documentation you need the extra + `gtk-doc `_ for the api + `sphinx `_ for the html and latex doc. + `asymptote `_ for the figures :: $ ./configure --enable-gtk-doc $ make $ make html Hacking hkl *********** Bug reporting ============= You can find the bug tracker here `libhkl `_ * Debian/Ubuntu:: $ reportbug hkl * Other OS You just need to send an email:: To: submit@bugs.debian.org From: xxx@yyy.zzz Subject: My problem with hkl... Package: hkl Version: |version| I found this problem in hkl... Providing patchs ================ you can send your patch to `Picca Frédéric-Emmanuel `_ using ``git`` Here a minimalist exemple of the workflow to prepare and send a patch for hkl. Suppose you wan to add a new feature to hkl create first a new branch from the next one:: $ git checkout -b my-next next hack, hack:: $ git commit -a more hacks:: $ git commit -a now that your new feature is ready for a review, you can send by email your work using git format-patch:: $ git format-patch origin/next and send generated files `0001_xxx`, `0002_xxx`, ... to the author. Howto add a diffractometer ************************** To add a new diffractometer, you just need to copy the :file:`hkl/hkl-engine-template.c` into :file:`hkl/hkl-engine-INSTITUT-BEAMLINE-INSTRUMENT.c` where you replace the upper case with the appropriate values. The template file is compiled during the build process to ensure that it is always valid. Then you just need to follow the instruction found in the template. If you need some precision about the process, do not hesitate to contact the main author. do not forgot also to add this new file into :file:`hkl/Makefile.am` with other diffractometers in the hkl_c_sources variable (please keep the alphabetic order). hkl-5.1.7/Documentation/sphinx/Makefile.am0000664000175000017500000000172414677222567017470 0ustar00piccapiccaTESTS_ENVIRONMENT=env GI_TYPELIB_PATH=$(top_builddir)/hkl $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la TESTS =\ source/bindings/python.py \ source/pyplots/trajectory_full.py \ source/pyplots/trajectory_simple.py EXTRA_DIST = \ source/conf.py.in \ source/bindings/bindings.rst \ source/development.rst \ source/diffractometers/e4cv.rst \ source/diffractometers/e6c.rst \ source/diffractometers/k4cv.rst \ source/diffractometers/k6c.rst \ source/diffractometers/mars.rst \ source/diffractometers/med1_2.rst \ source/diffractometers/med2_2.rst \ source/diffractometers/med2_3.rst \ source/diffractometers/petra3.rst \ source/diffractometers/soleil_sirius_kappa.rst \ source/diffractometers/soleil_sirius_turret.rst \ source/diffractometers/zaxis.rst \ source/index.rst \ source/introduction.rst \ source/pseudo.rst \ $(TESTS) -include $(top_srcdir)/sphinx.make publish: html rsync -avz build/html/ picca@people.debian.org:public_html/hkl hkl-5.1.7/INSTALL0000644000175000017500000004116715144640450012327 0ustar00piccapiccaInstallation Instructions ************************* Basic Installation ================== The following shell commands: test -f configure || ./bootstrap ./configure make make install should configure, build, and install this package. The first line, which bootstraps, is intended for developers; when building from distribution tarballs it does nothing and can be skipped. A package might name the bootstrapping script differently; if the name is ‘autogen.sh’, for example, the first line should say ‘./autogen.sh’ instead of ‘./bootstrap’. The following more-detailed instructions are generic; see the ‘README’ file for instructions specific to this package. Some packages provide this ‘INSTALL’ file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in the GNU Coding Standards. Many packages have scripts meant for developers instead of ordinary builders, as they may use developer tools that are less commonly installed, or they may access the network, which has privacy implications. These scripts attempt to bootstrap by building the ‘configure’ script and related files, possibly using developer tools or the network. Because the output of bootstrapping is system-independent, it is normally run by a package developer so that its output can be put into the distribution tarball and ordinary builders and users need not bootstrap. Some packages have commands like ‘./autopull.sh’ and ‘./autogen.sh’ that you can run instead of ‘./bootstrap’, for more fine-grained control over bootstrapping. The ‘configure’ script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a ‘Makefile’ in each directory of the package. It may also create one or more ‘.h’ files containing system-dependent definitions. Finally, it creates a script ‘config.status’ that you can run in the future to recreate the current configuration, and a file ‘config.log’ containing output useful for debugging ‘configure’. It can also use an optional file (typically called ‘config.cache’ and enabled with ‘--cache-file=config.cache’ or simply ‘-C’) that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how ‘configure’ could check whether to do them, and mail diffs or instructions to the address given in the ‘README’ so they can be considered for the next release. If you are using the cache, and at some point ‘config.cache’ contains results you don’t want to keep, you may remove or edit it. The ‘autoconf’ program generates ‘configure’ from the file ‘configure.ac’. Normally you should edit ‘configure.ac’ instead of editing ‘configure’ directly. The simplest way to compile this package is: 1. ‘cd’ to the directory containing the package’s source code. 2. If this is a developer checkout and file ‘configure’ does not yet exist, run the bootstrapping script (typically ‘./bootstrap’ or ‘./autogen.sh’) to bootstrap and create the file. You may need special developer tools and network access to bootstrap, and the network access may have privacy implications. 3. Type ‘./configure’ to configure the package for your system. This might take a while. While running, ‘configure’ prints messages telling which features it is checking for. 4. Type ‘make’ to compile the package. 5. Optionally, type ‘make check’ to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 6. Type ‘make install’ to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the ‘make install’ phase executed with root privileges. 7. Optionally, type ‘make installcheck’ to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior ‘make install’ required root privileges, verifies that the installation completed correctly. 8. You can remove the program binaries and object files from the source code directory by typing ‘make clean’. To also remove the files that ‘configure’ created (so you can compile the package for a different kind of computer), type ‘make distclean’. There is also a ‘make maintainer-clean’ target, but that is intended mainly for the package’s developers. If you use it, you may have to bootstrap again. 9. If the package follows the GNU Coding Standards, you can type ‘make uninstall’ to remove the installed files. Installation Prerequisites ========================== Installation requires a POSIX-like environment with a shell and at least the following standard utilities: awk cat cp diff echo expr false ls mkdir mv printf pwd rm rmdir sed sort test tr This package’s installation may need other standard utilities such as ‘grep’, ‘make’, ‘sleep’ and ‘touch’, along with compilers like ‘gcc’. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the ‘configure’ script does not know about. Run ‘./configure --help’ for details on some of the pertinent environment variables. You can give ‘configure’ initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=gcc CFLAGS=-g LIBS=-lposix See “Defining Variables” for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each system in their own directory. To do this, you can use GNU ‘make’. ‘cd’ to the directory where you want the object files and executables to go and run the ‘configure’ script. ‘configure’ automatically checks for the source code in the directory that ‘configure’ is in and in ‘..’. This is known as a “VPATH” build. With a non-GNU ‘make’, it is safer to compile the package for one system at a time in the source code directory. After you have installed the package for one system, use ‘make distclean’ before reconfiguring for another system. Some platforms, notably macOS, support “fat” or “universal” binaries, where a single binary can execute on different architectures. On these platforms you can configure and compile just once, with options specific to that platform. Installation Names ================== By default, ‘make install’ installs the package’s commands under ‘/usr/local/bin’, include files under ‘/usr/local/include’, etc. You can specify an installation prefix other than ‘/usr/local’ by giving ‘configure’ the option ‘--prefix=PREFIX’, where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option ‘--exec-prefix=PREFIX’ to ‘configure’, the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like ‘--bindir=DIR’ to specify different values for particular kinds of files. Run ‘configure --help’ for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of ‘${prefix}’, so that specifying just ‘--prefix’ will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to ‘configure’; however, many packages provide one or both of the following shortcuts of passing variable assignments to the ‘make install’ command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, ‘make install prefix=/alternate/directory’ will choose an alternate location for all directory configuration variables that were expressed in terms of ‘${prefix}’. Any directories that were specified during ‘configure’, but not in terms of ‘${prefix}’, must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the ‘DESTDIR’ variable. For example, ‘make install DESTDIR=/alternate/directory’ will prepend ‘/alternate/directory’ before all installation names. The approach of ‘DESTDIR’ overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of ‘${prefix}’ at ‘configure’ time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving ‘configure’ the option ‘--program-prefix=PREFIX’ or ‘--program-suffix=SUFFIX’. Some packages pay attention to ‘--enable-FEATURE’ and ‘--disable-FEATURE’ options to ‘configure’, where FEATURE indicates an optional part of the package. They may also pay attention to ‘--with-PACKAGE’ and ‘--without-PACKAGE’ options, where PACKAGE is something like ‘gnu-ld’. ‘./configure --help’ should mention the ‘--enable-...’ and ‘--with-...’ options that the package recognizes. Some packages offer the ability to configure how verbose the execution of ‘make’ will be. For these packages, running ‘./configure --enable-silent-rules’ sets the default to minimal output, which can be overridden with ‘make V=1’; while running ‘./configure --disable-silent-rules’ sets the default to verbose, which can be overridden with ‘make V=0’. Specifying a System Type ======================== By default ‘configure’ builds for the current system. To create binaries that can run on a different system type, specify a ‘--host=TYPE’ option along with compiler variables that specify how to generate object code for TYPE. For example, to create binaries intended to run on a 64-bit ARM processor: ./configure --host=aarch64-linux-gnu \ CC=aarch64-linux-gnu-gcc \ CXX=aarch64-linux-gnu-g++ If done on a machine that can execute these binaries (e.g., via ‘qemu-aarch64’, ‘$QEMU_LD_PREFIX’, and Linux’s ‘binfmt_misc’ capability), the build behaves like a native build. Otherwise it is a cross-build: ‘configure’ will make cross-compilation guesses instead of running test programs, and ‘make check’ will not work. A system type can either be a short name like ‘mingw64’, or a canonical name like ‘x86_64-pc-linux-gnu’. Canonical names have the form CPU-COMPANY-SYSTEM where SYSTEM is either OS or KERNEL-OS. To canonicalize and validate a system type, you can run the command ‘config.sub’, which is often squirreled away in a subdirectory like ‘build-aux’. For example: $ build-aux/config.sub arm64-linux aarch64-unknown-linux-gnu $ build-aux/config.sub riscv-lnx Invalid configuration 'riscv-lnx': OS 'lnx' not recognized You can look at the ‘config.sub’ file to see which types are recognized. If the file is absent, this package does not need the system type. If ‘configure’ fails with the diagnostic “cannot guess build type”. ‘config.sub’ did not recognize your system’s type. In this case, first fetch the newest versions of these files from the GNU config package (https://savannah.gnu.org/projects/config). If that fixes things, please report it to the maintainers of the package containing ‘configure’. Otherwise, you can try the configure option ‘--build=TYPE’ where TYPE comes close to your system type; also, please report the problem to . For more details about configuring system types, see the Autoconf documentation. Sharing Defaults ================ If you want to set default values for ‘configure’ scripts to share, you can create a site shell script called ‘config.site’ that gives default values for variables like ‘CC’, ‘cache_file’, and ‘prefix’. ‘configure’ looks for ‘PREFIX/share/config.site’ if it exists, then ‘PREFIX/etc/config.site’ if it exists. Or, you can set the ‘CONFIG_SITE’ environment variable to the location of the site script. A warning: not all ‘configure’ scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to ‘configure’. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the ‘configure’ command line, using ‘VAR=value’. For example: ./configure CC=/usr/local2/bin/gcc causes the specified ‘gcc’ to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for ‘CONFIG_SHELL’ due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash ‘configure’ Invocation ====================== ‘configure’ recognizes the following options to control how it operates. ‘--help’ ‘-h’ Print a summary of all of the options to ‘configure’, and exit. ‘--help=short’ ‘--help=recursive’ Print a summary of the options unique to this package’s ‘configure’, and exit. The ‘short’ variant lists options used only in the top level, while the ‘recursive’ variant lists options also present in any nested packages. ‘--version’ ‘-V’ Print the version of Autoconf used to generate the ‘configure’ script, and exit. ‘--cache-file=FILE’ Enable the cache: use and save the results of the tests in FILE, traditionally ‘config.cache’. FILE defaults to ‘/dev/null’ to disable caching. ‘--config-cache’ ‘-C’ Alias for ‘--cache-file=config.cache’. ‘--srcdir=DIR’ Look for the package’s source code in directory DIR. Usually ‘configure’ can determine that directory automatically. ‘--prefix=DIR’ Use DIR as the installation prefix. See “Installation Names” for more details, including other options available for fine-tuning the installation locations. ‘--host=TYPE’ Build binaries for system TYPE. See “Specifying a System Type”. ‘--enable-FEATURE’ ‘--disable-FEATURE’ Enable or disable the optional FEATURE. See “Optional Features”. ‘--with-PACKAGE’ ‘--without-PACKAGE’ Use or omit PACKAGE when building. See “Optional Features”. ‘--quiet’ ‘--silent’ ‘-q’ Do not print messages saying which checks are being made. To suppress all normal output, redirect it to ‘/dev/null’ (any error messages will still be shown). ‘--no-create’ ‘-n’ Run the configure checks, but stop before creating any output files. ‘configure’ also recognizes several environment variables, and accepts some other, less widely useful, options. Run ‘configure --help’ for more details. Copyright notice ================ Copyright © 1994–1996, 1999–2002, 2004–2017, 2020–2025 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. hkl-5.1.7/hkl/0000775000175000017500000000000015144640565012054 5ustar00piccapiccahkl-5.1.7/hkl/hkl-sample-private.h0000664000175000017500000000530114677222567015741 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_SAMPLE_PRIVATE_H__ #define __HKL_SAMPLE_PRIVATE_H__ #include // for FILE #include "ccan/list/list.h" // for list_head, list_node #include "hkl-matrix-private.h" // for _HklMatrix #include "hkl-vector-private.h" // for HklVector #include "hkl.h" // for HklParameter, etc G_BEGIN_DECLS /*************/ /* HklSample */ /*************/ struct _HklSample { char *name; HklLattice *lattice; HklMatrix U; HklMatrix UB; HklParameter *ux; HklParameter *uy; HklParameter *uz; struct list_head reflections; size_t n_reflections; }; #define HKL_SAMPLE_ERROR hkl_sample_error_quark () static inline GQuark hkl_sample_error_quark (void) { return g_quark_from_static_string ("hkl-sample-error-quark"); } typedef enum { HKL_SAMPLE_ERROR_MINIMIZED, /* can not minimize the sample */ HKL_SAMPLE_ERROR_COMPUTE_UB_BUSING_LEVY, /* can not compute UB */ } HklSampleError; extern void hkl_sample_fprintf(FILE *f, const HklSample *self); /***********************/ /* hklSampleReflection */ /***********************/ struct _HklSampleReflection { HklGeometry *geometry; HklDetector *detector; HklSample *sample; HklVector hkl; HklVector _hkl; int flag; struct list_node list; }; #define HKL_SAMPLE_REFLECTION_ERROR hkl_sample_reflection_error_quark () static inline GQuark hkl_sample_reflection_error_quark (void) { return g_quark_from_static_string ("hkl-sample-reflection-error-quark"); } typedef enum { HKL_SAMPLE_REFLECTION_ERROR_HKL_SET, /* can not set the hkl part of the reflection */ } HklSampleReflectionError; extern HklSampleReflection *hkl_sample_reflection_new_copy(const HklSampleReflection *self); extern void hkl_sample_reflection_free(HklSampleReflection *self); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-quaternion-private.h0000664000175000017500000000434214677222567016651 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_QUATERNION_PRIVATE_H__ #define __HKL_QUATERNION_PRIVATE_H__ #include // for FILE #include "hkl.h" // for G_BEGIN_DECLS, etc G_BEGIN_DECLS extern HklQuaternion *hkl_quaternion_dup(const HklQuaternion* self); extern void hkl_quaternion_free(HklQuaternion *self); extern void hkl_quaternion_init(HklQuaternion *self, double a, double b, double c, double d); extern void hkl_quaternion_init_from_vector(HklQuaternion *self, const HklVector *v); extern void hkl_quaternion_init_from_angle_and_axe(HklQuaternion *self, double angle, const HklVector *v); extern void hkl_quaternion_fprintf(FILE *file, const HklQuaternion *self); extern int hkl_quaternion_cmp(const HklQuaternion *self, const HklQuaternion *q); extern void hkl_quaternion_minus_quaternion(HklQuaternion *self, const HklQuaternion *q); extern void hkl_quaternion_times_quaternion(HklQuaternion *self, const HklQuaternion *q); extern double hkl_quaternion_norm2(const HklQuaternion *self); extern void hkl_quaternion_conjugate(HklQuaternion *self); extern void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m); extern void hkl_quaternion_to_angle_and_axe(const HklQuaternion *self, double *angle, HklVector *v); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-engine-petra3-p23-4c.c0000664000175000017500000001422014677222567016352 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2018 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" // for hkl_engine_tth2_new, etc #define OMEGA_T "omega_t" #define MU "mu" #define GAMMA "gamma" #define DELTA "delta" /************/ /* mode hkl */ /************/ static HklMode *bissector_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA_T, MU, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_omega_t(void) { static const char* axes_r[] = {OMEGA_T, MU, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA_T, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_mu(void) { static const char* axes_r[] = {OMEGA_T, MU, GAMMA, DELTA}; static const char* axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *bissector_horizontal(void) { static const char* axes_r[] = {OMEGA_T, MU, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA_T, MU, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant(void) { static const char* axes_r[] = {OMEGA_T, MU, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA_T, MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklParameter parameters[] = { PSI_CONSTANT_PARAMETERS(1, 0, 0, 0) }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklEngine *hkl_engine_petra3_p23_4c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, lifting_detector_omega_t()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, bissector_horizontal()); hkl_engine_add_mode(self, psi_constant()); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_petra3_p23_4c_incidence_new, P99_PROTECT({OMEGA_T, MU}), surface_parameters_z); REGISTER_READONLY_EMERGENCE(hkl_engine_petra3_p23_4c_emergence_new, P99_PROTECT({OMEGA_T, MU, GAMMA, DELTA}), surface_parameters_z); /*******/ /* E6C */ /*******/ #define HKL_GEOMETRY_PETRA3_P23_4C_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 2 axes for the sample\n" \ "\n" \ " + **" OMEGA_T "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotating around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" GAMMA "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_petra3_p23_4c_axes[] = {OMEGA_T, MU, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_petra3_p23_4c(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA_T, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, -1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_petra3_p23_4c(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_petra3_p23_4c_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_petra3_p23_4c_incidence_new(self); hkl_engine_petra3_p23_4c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(petra3_p23_4c, "PETRA3 P23 4C", HKL_GEOMETRY_PETRA3_P23_4C_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-auto.c0000664000175000017500000003242715133711150016121 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for alloca #include // for ::GSL_CONTINUE #include // for GSL_SQRT_DBL_EPSILON #include // for gsl_matrix_alloc, etc #include // for gsl_multiroot_function, etc #include // for gsl_vector, etc #include // for fabs, M_PI #include // for size_t #include // for rand, RAND_MAX #include // for NULL, memset, memcpy #include // for uint #include "hkl-geometry-private.h" // for hkl_geometry_update #include "hkl-macros-private.h" // for HKL_MALLOC, hkl_assert, etc #include "hkl-parameter-private.h" // for _HklParameter #include "hkl-pseudoaxis-auto-private.h" // for HklModeAutoInfo, etc #include "hkl-pseudoaxis-private.h" // for _HklEngine, HklModeInfo, etc #include "hkl.h" // for HklEngine, HklMode, etc #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_foreach /* #define DEBUG */ #define HKL_MODE_AUTO_ERROR hkl_mode_auto_error_quark () static GQuark hkl_mode_auto_error_quark (void) { return g_quark_from_static_string ("hkl-mode-auto-error-quark"); } typedef enum { HKL_MODE_AUTO_ERROR_SET, /* can not set the engine */ } HklModeAutoError; /*********************************************/ /* methods use to solve numerical pseudoAxes */ /*********************************************/ /** * @brief This private method find the degenerated axes. * * @param func the gsl_multiroopt_function to test * @param x the starting point * @param f the result of the function evaluation. * * with this method we can see if an axis is degenerated or not. * A degenerated axis is an axis with no effect on the function evaluation. * In the Jacobian matrix all elements of a columnn is null. * Once we know this the axis is mark as degenerated and we do not need to * change is sector. */ static void find_degenerated_axes(HklEngine *self, gsl_multiroot_function *func, gsl_vector const *x, gsl_vector const *f, int degenerated[]) { gsl_matrix *J; size_t i, j; memset(degenerated, 0, x->size * sizeof(int)); J = gsl_matrix_alloc(x->size, f->size); gsl_multiroot_fdjacobian(func, x, f, GSL_SQRT_DBL_EPSILON, J); for(j=0; jsize && !degenerated[j]; ++j) { for(i=0; isize; ++i) if (fabs(gsl_matrix_get(J, i, j)) > HKL_EPSILON) break; if (i == f->size) degenerated[j] = 1; } #ifdef DEBUG fprintf(stdout, "\nLooks for degenerated axes\n"); for(i=0; isize; ++i) fprintf(stdout, " %d", degenerated[i]); for(i=0;isize;++i) { fprintf(stdout, "\n "); for(j=0;jsize;++j) fprintf(stdout, " %f", gsl_matrix_get(J, i, j)); } fprintf(stdout, "\n"); #endif gsl_matrix_free(J); } /** * @brief this private method try to find the first solution * * @param self the current HklPseudoAxeEngine. * @param f The function to use for the computation. * * If a solution was found it also check for degenerated axes. * A degenerated axes is an Axes with no effect on the function. * @see find_degenerated * @return TRUE or FALSE. */ static int find_first_geometry(HklEngine *self, gsl_multiroot_function *f, int degenerated[]) { gsl_multiroot_fsolver_type const *T; gsl_multiroot_fsolver *s; gsl_vector *x; size_t len = darray_size(self->mode->info->axes_w); double *x_data; double *x_data0 = alloca(len * sizeof(*x_data0)); size_t iter = 0; int status; int res = FALSE; size_t i; HklParameter **axis; /* get the starting point from the geometry */ /* must be put in the auto_set method */ x = gsl_vector_alloc(len); x_data = (double *)x->data; i = 0; darray_foreach(axis, self->axes){ x_data[i++] = (*axis)->_value; } /* keep a copy of the first axes positions to deal with degenerated axes */ memcpy(x_data0, x_data, len * sizeof(double)); /* Initialize method */ T = gsl_multiroot_fsolver_hybrid; s = gsl_multiroot_fsolver_alloc (T, len); gsl_multiroot_fsolver_set (s, f, x); #ifdef DEBUG fprintf(stdout, "Initial starting point: \n"); fprintf(stdout, "x: "); for(i=0; ix->data[i]); fprintf(stdout, "\nf: "); for(i=0; if->data[i]); #endif /* iterate to find the solution */ do { ++iter; status = gsl_multiroot_fsolver_iterate(s); #ifdef DEBUG fprintf(stdout, "\nstatus : %d iter : %d\n", status, iter); #endif if (status || (iter % 300) == 0) { /* Restart from another point. */ for(i=0; ix->data[i]); fprintf(stdout, "\nf: "); for(i=0; if->data[i]); #endif } status = gsl_multiroot_test_residual (s->f, HKL_EPSILON / 10.); #ifdef DEBUG fprintf(stdout, "\nstatus : %d iter : %d", status, iter); for(i=0; if->data[i]); fprintf(stdout, "\n"); #endif } while (status == GSL_CONTINUE && iter < 2000); #ifdef DEBUG fprintf(stdout, "\nstatus : %d iter : %d", status, iter); for(i=0; if->data[i]); fprintf(stdout, "\n"); #endif if (status != GSL_CONTINUE) { find_degenerated_axes(self, f, s->x, s->f, degenerated); #ifdef DEBUG /* print the test header */ fprintf(stdout, "\n"); darray_foreach(axis, self->axes){ fprintf(stdout, "\t \"%s\"", (*axis)->name); } for(i=0; ix->data; i = 0; darray_foreach(axis, self->axes){ hkl_parameter_value_set(*axis, degenerated[i] ? x_data0[i] : x_data[i], HKL_UNIT_DEFAULT, NULL); ++i; } hkl_geometry_update(self->geometry); res = TRUE; } /* release memory */ gsl_vector_free(x); gsl_multiroot_fsolver_free(s); return res; } /** * @brief This private method change the sector of angles. * * @param x The vector of changed angles. * @param x0 The vector of angles to change. * @param sector the sector vector operation. * @param n the size of all vectors. * * 0 -> no change * 1 -> pi - angle * 2 -> pi + angle * 3 -> -angle */ static void change_sector(double x[], double const x0[], int const sector[], size_t n) { size_t i; for(i=0; idata; #ifdef DEBUG fprintf(stdout, "\n"); for(i=0; isize; ++i) fprintf(stdout, "\t%f", x->data[i]); /* fprintf(stdout, "\t%f", gsl_sf_angle_restrict_symm(x->data[i]) * HKL_RADTODEG); */ fflush(stdout); #endif function->f(x, function->params, f); for(i=0; isize; ++i) if (fabs(f_data[i]) > HKL_EPSILON){ res = FALSE; break; } #ifdef DEBUG for(i=0; isize; ++i) if(fabs(f_data[i]) < HKL_EPSILON) fprintf(stdout, "\t%f *", f_data[i]); else fprintf(stdout, "\t%f", f_data[i]); if(res == FALSE) fprintf(stdout, "\t FAIL"); else fprintf(stdout, "\t SUCCESS"); #endif return res; } /** * @brief compute the permutation and test its validity. * * @param axes_len number of axes * @param op_len number of operation per axes. (4 for now) * @param p The vector containing the current permutation. * @param axes_idx The index of the axes we are permution. * @param op the current operation to set. * @param f The function for the validity test. * @param x0 The starting point of all geometry permutations. * @param _x a gsl_vector use to compute the sectors (optimization) * @param _f a gsl_vector use during the sector test (optimization) */ static void perm_r(size_t axes_len, size_t op_len[], int p[], size_t axes_idx, int op, gsl_multiroot_function *f, double x0[], gsl_vector *_x, gsl_vector *_f) { size_t i; p[axes_idx++] = op; if (axes_idx == axes_len) { double *x_data = _x->data; change_sector(x_data, x0, p, axes_len); if (test_sector(_x, f, _f)) hkl_engine_add_geometry(f->params, x_data); } else for (i=0; igeometries. */ static int solve_function(HklEngine *self, const HklFunction *function) { size_t i; int p[function->size]; double x0[function->size]; int degenerated[function->size] = {}; size_t op_len[function->size]; int res; gsl_vector *_x; /* use to compute sectors in perm_r (avoid copy) */ gsl_vector *_f; /* use to test sectors in perm_r (avoid copy) */ gsl_multiroot_function f; _x = gsl_vector_alloc(function->size); _f = gsl_vector_alloc(function->size); f.f = function->function; f.n = function->size; f.params = self; res = find_first_geometry(self, &f, degenerated); if (res) { memset(p, 0, sizeof(p)); /* use first solution as starting point for permutations */ for(i=0; isize; ++i){ x0[i] = darray_item(self->axes, i)->_value; op_len[i] = degenerated[i] ? 1 : 4; } for (i=0; isize, op_len, p, 0, i, &f, x0, _x, _f); } gsl_vector_free(_f); gsl_vector_free(_x); return res; } /* check that the number of axis of the mode is the right number of variables expected by mode functions */ static inline void check_validity(const HklModeAutoInfo *auto_info) { const HklFunction **function; darray_foreach(function, auto_info->functions) hkl_assert((*function)->size == darray_size(auto_info->info.axes_w)); } HklMode *hkl_mode_auto_new(const HklModeAutoInfo *auto_info, const HklModeOperations *ops, int initialized) { check_validity(auto_info); return hkl_mode_new(&auto_info->info, ops, initialized); } void hkl_mode_auto_init(HklMode *self, const HklModeAutoInfo *auto_info, const HklModeOperations *ops, int initialized) { check_validity(auto_info); hkl_mode_init(self, &auto_info->info, ops, initialized); } int hkl_mode_auto_set_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { int ok = FALSE; HklModeAutoInfo *auto_info = container_of(self->info, HklModeAutoInfo, info); const HklFunction **function; hkl_error (error == NULL || *error == NULL); if(!self || !engine || !geometry || !detector || !sample){ g_set_error(error, HKL_MODE_AUTO_ERROR, HKL_MODE_AUTO_ERROR_SET, "Internal error"); goto failed; } darray_foreach(function, auto_info->functions){ ok |= solve_function(engine, *function); } if(!ok){ g_set_error(error, HKL_MODE_AUTO_ERROR, HKL_MODE_AUTO_ERROR_SET, "none of the functions were solved !!!"); goto failed; } #ifdef DEBUG hkl_engine_fprintf(stdout, engine); #endif return TRUE; failed: return FALSE; } HklMode *hkl_mode_auto_with_init_new(const HklModeAutoInfo *auto_info, const HklModeOperations *ops, int initialized) { HklModeAutoWithInit *self = g_new(HklModeAutoWithInit, 1); hkl_mode_auto_init(&self->mode, auto_info, ops, initialized); self->geometry = NULL; self->detector = NULL; self->sample = NULL; return &self->mode; } hkl-5.1.7/hkl/hkl-factory.c0000664000175000017500000000321414677222567014453 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl-factory-private.h" // for autodata_factories_, etc HklFactory **hkl_factory_get_all(size_t *n) { return autodata_get(factories, n); } HklFactory *hkl_factory_get_by_name(const char *name, GError **error) { size_t i, n; HklFactory **factories; factories = autodata_get(factories, &n); for(i=0;iname)) return factories[i]; return NULL; } const char *hkl_factory_name_get(const HklFactory *self) { return self->name; } HklGeometry *hkl_factory_create_new_geometry(const HklFactory *self) { return self->create_new_geometry(self); } HklEngineList *hkl_factory_create_new_engine_list(const HklFactory *self) { return self->create_new_engine_list(self); } hkl-5.1.7/hkl/hkl-trajectory-private.h0000664000175000017500000000372315143645056016643 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl.h" /* HklTrajectoryResult */ typedef darray(HklGeometry *) darray_geometry; typedef struct _HklTrajectoryResult HklTrajectoryResult; struct _HklTrajectoryResult { darray_geometry geometries; }; extern HklTrajectoryResult * hkl_trajectory_result_new(void); extern void hkl_trajectory_result_free(HklTrajectoryResult *self); extern void hkl_trajectory_add_geometry(HklTrajectoryResult *self, const HklGeometry *geometry); /* HklTrajectoryStats */ typedef darray(double) darray_double; typedef darray(size_t) darray_sizet; typedef struct _HklTrajectoryStats HklTrajectoryStats; struct _HklTrajectoryStats { size_t n; darray_sizet nb_solutions; darray_double axes_min; darray_double axes_max; darray_double axes_range; }; extern HklTrajectoryStats *hkl_trajectory_stats_new(int n); extern void hkl_trajectory_stats_free(HklTrajectoryStats *self); extern void hkl_trajectory_stats_add(HklTrajectoryStats *self, const HklGeometryList *geometries); extern void hkl_trajectory_stats_fprintf(FILE *f, const HklTrajectoryStats *self); hkl-5.1.7/hkl/hkl-unit.c0000664000175000017500000000567314677222567013776 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for GSL_NAN #include // for gsl_isnan #include // for free, NULL #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-unit-private.h" // for HklUnit, etc #include "hkl.h" // for FALSE, HKL_DEGTORAD, etc const HklUnit hkl_unit_angle_deg = {HklDPlaneAngle, M_PI/180., "Degree", "°"}; const HklUnit hkl_unit_angle_rad = {HklDPlaneAngle, 1., "Radian", "rad"}; const HklUnit hkl_unit_length_nm = {HklDLength, 1e-9, "Nano Meter", "nm"}; const HklUnit hkl_unit_angle_mrad = {HklDPlaneAngle, 1e-3, "Milli Radian", "mrad"}; const HklUnit hkl_unit_length_mm = {HklDLength, 1e-3, "Milli Meter", "mm"}; const HklUnit hkl_unit_length_meter = {HklDLength, 1., "Meter", "m"}; /** * hkl_unit_dup: (skip) * @self: * * copy an #Hklunit * * Returns: the copied #HklUnit (memory must be release with * hkl_unit_free) **/ HklUnit* hkl_unit_dup(const HklUnit *self) { if (!self) return NULL; HklUnit *dup = g_new(HklUnit, 1); *dup = *self; return dup; } /** * hkl_unit_free: (skip) * @self: * * release the memory of an #HklUnit **/ void hkl_unit_free(HklUnit *self) { if (self) free(self); } /** * hkl_unit_compatible: (skip) * @self: the first @HklUnit * @unit: the second @HklUnit to check * * check if two units are compatible. * * Returns: TRUE or FALSE **/ int hkl_unit_compatible(const HklUnit *unit1, const HklUnit *unit2) { int res = FALSE; if (unit1 == NULL) { if (unit2 == NULL) { res = TRUE; }else{ res = FALSE; } }else{ if (unit2 == NULL){ res = FALSE; }else{ res = ( (unit1->dimension.l == unit2->dimension.l) && (unit1->dimension.m == unit2->dimension.m) && (unit1->dimension.t == unit2->dimension.t) && (unit1->dimension.i == unit2->dimension.i) && (unit1->dimension.th == unit2->dimension.th) && (unit1->dimension.n == unit2->dimension.n) && (unit1->dimension.j == unit2->dimension.j)); } } return res; } hkl-5.1.7/hkl/hkl-type-builtins.c.template0000664000175000017500000000160714677222567017432 0ustar00piccapicca/*** BEGIN file-header ***/ #undef HKL_DISABLE_DEPRECATED #define HKL_ENABLE_BROKEN #include #include "hkl.h" #include "hkl-type-builtins.h" /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); } return etype; } /*** END value-tail ***/ /*** BEGIN file-tail ***/ #define __HKL_TYPE_BUILTINS_C__ /*** END file-tail ***/ hkl-5.1.7/hkl/hkl-binding-private.h0000664000175000017500000001104314677222567016072 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2012-2019, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_BINDING_PRIVATE_H__ #define __HKL_BINDING_PRIVATE_H__ #include // for GError, GHashTable, etc #include // for uint #include "hkl.h" // for HKLAPI, HklGeometry, etc G_BEGIN_DECLS /*****************/ /* HklQuaternion */ /*****************/ HKLAPI HklMatrix *hkl_quaternion_to_matrix_binding(const HklQuaternion *self) HKL_ARG_NONNULL(1); /**************/ /* HklFactory */ /**************/ HKLAPI GHashTable *hkl_factories(void); /***************/ /* HklGeometry */ /***************/ HKLAPI const char **hkl_geometry_axis_names_get_binding(const HklGeometry *self, size_t *length) HKL_ARG_NONNULL(1, 2); HKLAPI double* hkl_geometry_axis_values_get_binding(const HklGeometry *self, unsigned int *len, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI HklQuaternion *hkl_geometry_sample_rotation_get_binding(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); HKLAPI HklQuaternion *hkl_geometry_detector_rotation_get_binding(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector *hkl_geometry_ki_get_binding(const HklGeometry *self); HKLAPI HklVector *hkl_geometry_ki_abc_get_binding(const HklGeometry *self, const HklSample *sample); HKLAPI HklVector *hkl_geometry_kf_get_binding(const HklGeometry *self, const HklDetector *detector); HKLAPI HklVector *hkl_geometry_kf_abc_get_binding(const HklGeometry *self, const HklDetector *detector, const HklSample *sample); /*******************/ /* HklGeometryList */ /*******************/ HKLAPI GSList* hkl_geometry_list_items(HklGeometryList *self) HKL_ARG_NONNULL(1); /*************/ /* HklEngine */ /*************/ HKLAPI const char **hkl_engine_modes_names_get_binding(const HklEngine *self, size_t *length) HKL_ARG_NONNULL(1, 2); HKLAPI const char **hkl_engine_pseudo_axis_names_get_binding(HklEngine *self, size_t *length) HKL_ARG_NONNULL(1, 2); HKLAPI const char **hkl_engine_parameters_names_get_binding(const HklEngine *self, size_t *length) HKL_ARG_NONNULL(1, 2); HKLAPI double *hkl_engine_parameters_values_get_binding(const HklEngine *self, guint *len, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI const char **hkl_engine_axis_names_get_binding(const HklEngine *self, HklEngineAxisNamesGet mode, size_t *length) HKL_ARG_NONNULL(1, 3); HKLAPI double *hkl_engine_pseudo_axis_values_get_binding(const HklEngine *self, guint *len, HklUnitEnum unit_type); /***************************/ /* HklPSeudoAxisEngineList */ /***************************/ HKLAPI GSList* hkl_engine_list_engines_get_as_gslist(HklEngineList *self); HKLAPI const char **hkl_engine_list_parameters_names_get_binding(const HklEngineList *self, size_t *length) HKL_ARG_NONNULL(1, 2); HKLAPI double *hkl_engine_list_parameters_values_get_binding(const HklEngineList *self, guint *len, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); /*************/ /* HklSample */ /*************/ HKLAPI GSList *hkl_sample_reflections_get(const HklSample *self); HKLAPI HklSampleReflection *hkl_sample_add_reflection_binding(HklSample *self, const HklGeometry *geometry, const HklDetector *detector, double h, double k, double l, GError **error); G_END_DECLS #endif /* __HKL_BINDING_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-pseudoaxis-common-q-private.h0000664000175000017500000000244714677222567020400 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_Q_PRIVATE_H__ #define __HKL_PSEUDOAXIS_COMMON_Q_PRIVATE_H__ #include "hkl.h" G_BEGIN_DECLS extern double qmax(double wavelength); extern HklEngine *hkl_engine_q_new(HklEngineList *engines); extern HklEngine *hkl_engine_q2_new(HklEngineList *engines); extern HklEngine *hkl_engine_qper_qpar_new(HklEngineList *engines); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-pseudoaxis-common-psi-private.h0000664000175000017500000000445315062214312020704 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_PSI_PRIVATE_H__ #define __HKL_PSEUDOAXIS_COMMON_PSI_PRIVATE_H__ #include // for gsl_vector #include "hkl-pseudoaxis-auto-private.h" // for HklFunction, etc #include "hkl-pseudoaxis-private.h" // for _HklEngine, _HklMode #include "hkl-vector-private.h" // for HklVector #include "hkl.h" // for HklEngine, HklMode, etc G_BEGIN_DECLS typedef struct _HklModePsi HklModePsi; typedef struct _HklEnginePsi HklEnginePsi; struct _HklModePsi { HklMode parent; HklVector Q0; HklVector hkl0; }; struct _HklEnginePsi { HklEngine engine; HklParameter *psi; }; extern HklMode *hkl_mode_psi_new( const HklModeAutoInfo *info); extern HklEngine *hkl_engine_psi_new(HklEngineList *engines); extern int _psi_func(const gsl_vector *x, void *params, gsl_vector *f); static const HklFunction psi_func = { .function = _psi_func, .size = 4, }; static const HklParameter psi_parameters[] = { { HKL_PARAMETER_DEFAULTS, .name = "h2", ._value = 1, .description = "h coordinate of the reference plan", }, { HKL_PARAMETER_DEFAULTS, .name = "k2", ._value = 1, .description = "k coordinate of the reference plan", }, { HKL_PARAMETER_DEFAULTS, .name = "l2", ._value = 1, .description = "l coordinate of the reference plan", }, }; G_END_DECLS #endif /* __HKL_PSEUDOAXIS_COMMON_PSI_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-detector-factory.c0000664000175000017500000000260614677222567016266 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for NULL #include "hkl-detector-private.h" // for hkl_detector_new #include "hkl.h" // for HklDetector, etc /** * hkl_detector_factory_new: * @type: * * Detector factory * * Returns: **/ HklDetector *hkl_detector_factory_new(HklDetectorType type) { HklDetector *detector = NULL; switch(type) { case HKL_DETECTOR_TYPE_0D: detector = hkl_detector_new(); break; } return detector; } hkl-5.1.7/hkl/hkl-binding.c0000664000175000017500000003472014677222567014424 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2012-2019, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for malloc #include // for NULL, strdup #include // for uint #include "hkl.h" // for HklGeometry, HklEngine, etc #include "hkl-binding-private.h" #include "hkl-factory-private.h" // for __start_xautodata_factories, etc #include "hkl-geometry-private.h" // for _HklGeometry, etc #include "hkl-parameter-private.h" #include "hkl-pseudoaxis-private.h" // for _HklEngine, HklEngineInfo #include "hkl-sample-private.h" // for _HklSampleReflection, etc #include "hkl/ccan/autodata/autodata.h" // for autodata_get #include "hkl/ccan/darray/darray.h" // for darray_foreach, darray_size #include "hkl/ccan/list/list.h" // for list_for_each, list_head /*****************/ /* HklQuaternion */ /*****************/ /** * hkl_quaternion_to_matrix_binding: (rename-to hkl_quaternion_to_matrix) * @self: the #HklQuaternion use to compute the #HklMatrix * * Returns: (transfer full): the @HklQuaternion@ as a @HklMatrix@. */ HklMatrix *hkl_quaternion_to_matrix_binding(const HklQuaternion *self) { HklMatrix *m = hkl_matrix_new(); hkl_quaternion_to_matrix(self, m); return m; } /**************/ /* HklFactory */ /**************/ /** * hkl_factories: * * return all the Hkl factories objects as a dictionnary * * Returns: (element-type utf8 Hkl.Factory) (transfer container): **/ GHashTable *hkl_factories(void) { GHashTable *table = NULL; size_t i, n; HklFactory **factories; table = g_hash_table_new(g_str_hash, g_str_equal); factories = autodata_get(factories, &n); for(i=0; iaxes) == 0) return NULL; *len = darray_size(self->axes); values = g_new(double, darray_size(self->axes)); darray_foreach(axis, self->axes){ values[i++] = hkl_parameter_value_get(*axis, unit_type); } return values; } /** * hkl_geometry_sample_rotation_get_binding: (rename-to hkl_geometry_sample_rotation_get) * @self: the self @HklGeometry@ * @sample: the rotated sample. * * return the rotation part of the given sample in the laboratory basis. * * Returns: (transfer full): the rotation express as a quaternion. **/ HklQuaternion *hkl_geometry_sample_rotation_get_binding(const HklGeometry *self, const HklSample *sample) { HklQuaternion q = hkl_geometry_sample_rotation_get(self, sample); return hkl_quaternion_dup(&q); } /** * hkl_geometry_detector_rotation_get_binding: (rename-to hkl_geometry_detector_rotation_get) * @self: the self #HklGeometry * * return the rotation part of the given detector in the laboratory * basis. * * Returns: (transfer full): the rotation express as a quaternion. **/ HklQuaternion *hkl_geometry_detector_rotation_get_binding(const HklGeometry *self, const HklDetector *detector) { HklQuaternion q = hkl_geometry_detector_rotation_get(self, detector); return hkl_quaternion_dup(&q); } /** * hkl_geometry_ki_get_binding: (rename-to hkl_geometry_ki_get) * @self: the self #HklGeometry * * return the ki vector in the laboratory * basis. * * Returns: (transfer full): the ki vector. **/ HklVector *hkl_geometry_ki_get_binding(const HklGeometry *self) { HklVector v = hkl_geometry_ki_get(self); return hkl_vector_dup(&v); } /** * hkl_geometry_ki_abc_get_binding: (rename-to hkl_geometry_ki_abc_get) * @self: the self #HklGeometry * @sample: the sample to project into #HklSample. * * return the ki vector in the sample lattice recipocal. * basis. * * Returns: (transfer full): the ki vector. **/ HklVector *hkl_geometry_ki_abc_get_binding(const HklGeometry *self, const HklSample *sample) { HklVector v = hkl_geometry_ki_abc_get(self, sample); return hkl_vector_dup(&v); } /** * hkl_geometry_kf_get_binding: (rename-to hkl_geometry_kf_get) * @self: the self #HklGeometry * @detector: the self #HklDetector * * return the kf vector in the laboratory * basis. * * Returns: (transfer full): the kf vector. **/ HklVector *hkl_geometry_kf_get_binding(const HklGeometry *self, const HklDetector *detector) { HklVector v = hkl_geometry_kf_get(self, detector); return hkl_vector_dup(&v); } /** * hkl_geometry_kf_abc_get_binding: (rename-to hkl_geometry_kf_abc_get) * @self: the self #HklGeometry * @detector: the self #HklDetector * @sample: the sample to project into #HklSample. * * return the kf vector in the laboratory * basis. * * Returns: (transfer full): the kf vector. **/ HklVector *hkl_geometry_kf_abc_get_binding(const HklGeometry *self, const HklDetector *detector, const HklSample *sample) { HklVector v = hkl_geometry_kf_abc_get(self, detector, sample); return hkl_vector_dup(&v); } /*******************/ /* HklGeometryList */ /*******************/ /** * hkl_geometry_list_items: * @self: the #HklGeometryList * * Return value: (element-type HklGeometryListItem) (transfer container): list of items, * free the list with g_slist_free when done. **/ GSList* hkl_geometry_list_items(HklGeometryList *self) { GSList *list = NULL; HklGeometryListItem *item; list_for_each(&self->items, item, list) list = g_slist_append(list, item); return list; } /*************/ /* HklEngine */ /*************/ /** * hkl_engine_modes_names_get_binding: (rename-to hkl_engine_modes_names_get) * @self: the this ptr * @length: (out caller-allocates): return the length of the returned array. * * Return value: (array length=length) (transfer none): All the modes supported by the #HklEngine **/ const char **hkl_engine_modes_names_get_binding(const HklEngine *self, size_t *length) { *length = darray_size(self->mode_names); return &darray_item(self->mode_names, 0); } /** * hkl_engine_pseudo_axis_names_get_binding: (rename-to hkl_engine_pseudo_axis_names_get) * @self: the this ptr * @length: (out caller-allocates): return the length of the returned array. * * Return value: (array length=length) (transfer none): All the pseudo_axes names of the #HklEngine * **/ const char **hkl_engine_pseudo_axis_names_get_binding(HklEngine *self, size_t *length) { *length = darray_size(self->pseudo_axis_names); return &darray_item(self->pseudo_axis_names, 0); } /** * hkl_engine_parameters_names_get_binding: (rename-to hkl_engine_parameters_names_get) * @self: the this ptr * @length: (out caller-allocates): return the length of the returned array. * * Return value: (array length=length) (transfer none): All the parameters of #HklEngine. **/ const char **hkl_engine_parameters_names_get_binding(const HklEngine *self, size_t *length) { *length = darray_size(self->mode->parameters_names); return &darray_item(self->mode->parameters_names, 0); } /** * hkl_engine_axis_names_get_binding: (rename-to hkl_engine_axis_names_get) * @self: the this ptr * @mode: the #HklEngineAxesNamesGet * @length: (out caller-allocates): return the length of the returned array. * * Return value: (array length=length) (transfer none): axes of the #HklEngine for the given mode. **/ const char **hkl_engine_axis_names_get_binding(const HklEngine *self, HklEngineAxisNamesGet mode, size_t *length) { const darray_string *axes = hkl_engine_axis_names_get(self, mode); *length = darray_size(*axes); return &darray_item(*axes, 0); } /** * hkl_engine_parameters_values_get_binding: (rename-to hkl_engine_parameters_values_get) * @self: the this ptr * @len: (out caller-allocates): the length of the returned array * @unit_type: the unit type (default or user) of the returned value * * Return value: (array length=len) (transfer container): list of parameters values, * free the list with free when done. **/ double *hkl_engine_parameters_values_get_binding(const HklEngine *self, guint *len, HklUnitEnum unit_type) { double *values; uint i = 0; HklParameter **parameter; if(!self->mode || darray_size(self->mode->parameters) == 0) return NULL; *len = darray_size(self->mode->parameters); values = g_new(double, *len); darray_foreach(parameter, self->mode->parameters){ values[i++] = hkl_parameter_value_get(*parameter, unit_type); } return values; } /** * hkl_engine_pseudo_axis_values_get_binding: (rename-to hkl_engine_pseudo_axis_values_get) * @self: the this ptr * @len: (out caller-allocates): the length of the returned array * @unit_type: the unit type (default or user) of the returned value * * Return value: (array length=len) (transfer container): list of pseudo axes values, * free the list with free when done. **/ double *hkl_engine_pseudo_axis_values_get_binding(const HklEngine *self, guint *len, HklUnitEnum unit_type) { double *values; uint i = 0; HklParameter **axis; if(!self || !len || darray_size(self->pseudo_axes) == 0) return NULL; *len = darray_size(self->pseudo_axes); values = g_new(double, *len); darray_foreach(axis, self->pseudo_axes){ values[i++] = hkl_parameter_value_get(*axis, unit_type); } return values; } /** * hkl_engine_list_engines_get_as_gslist: (rename-to hkl_engine_list_engines_get) * @self: the this ptr * * Return value: (element-type HklEngine) (transfer container): list of engines, * free the list with g_slist_free when done. **/ GSList* hkl_engine_list_engines_get_as_gslist(HklEngineList *self) { GSList *list = NULL; HklEngine **engine; darray_foreach(engine, *self){ list = g_slist_append(list, *engine); } return list; } /*****************/ /* HklEngineList */ /*****************/ /** * hkl_engine_list_parameters_names_get_binding: (rename-to hkl_engine_list_parameters_names_get) * @self: the this ptr * @length: (out caller-allocates): return the length of the returned array. * * Return value: (array length=length) (transfer none): All the modes supported by the #HklEngineList **/ const char **hkl_engine_list_parameters_names_get_binding(const HklEngineList *self, size_t *length) { *length = darray_size(self->parameters_names); return &darray_item(self->parameters_names, 0); } /** * hkl_engine_list_parameters_values_get_binding: (rename-to hkl_engine_list_parameters_values_get) * @self: the this ptr * @len: (out caller-allocates): the length of the returned array * @unit_type: the unit type (default or user) of the returned value * * Return value: (array length=len) (transfer container): list of parameters values, * free the list with free when done. **/ double *hkl_engine_list_parameters_values_get_binding(const HklEngineList *self, guint *len, HklUnitEnum unit_type) { double *values; uint i = 0; HklParameter **parameter; if(darray_size(self->parameters) == 0) return NULL; *len = darray_size(self->parameters); values = g_new(double, *len); darray_foreach(parameter, self->parameters){ values[i++] = hkl_parameter_value_get(*parameter, unit_type); } return values; } /*************/ /* HklSample */ /*************/ /** * hkl_sample_reflections_get: * @self: the this ptr * * Return value: (element-type HklSampleReflection) (transfer container): list of reflections, * free the list with g_slist_free when done. */ GSList *hkl_sample_reflections_get(const HklSample *self) { GSList *list = NULL; HklSampleReflection *reflection; list_for_each(&self->reflections, reflection, list){ list = g_slist_append(list, reflection); } return list; } /** * hkl_sample_add_reflection_binding: (rename-to hkl_sample_add_reflection) * @self: the this ptr * @geometry: the geometry of the HklSampleReflection * @detector: the detector of the HklSampleReflection * @h: the h coordinate * @k: the k coordinate * @l: the l coordinate * @error: return location for a GError, or NULL * * Return value: (transfer none): the newly created HklSampleReflection **/ HklSampleReflection *hkl_sample_add_reflection_binding(HklSample *self, const HklGeometry *geometry, const HklDetector *detector, double h, double k, double l, GError **error) { HklSampleReflection *reflection; hkl_error (error == NULL || *error == NULL); reflection = hkl_sample_reflection_new(geometry, detector, h, k, l, error); if(!reflection){ hkl_assert (error == NULL || *error != NULL); return NULL; } hkl_assert (error == NULL || *error == NULL); hkl_sample_add_reflection(self, reflection); return reflection; } hkl-5.1.7/hkl/hkl-engine-aps-04id-polar.c0000664000175000017500000002742015133711270016666 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2024, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * Copyright (C) 2023-2024 UChicago Argonne, LLC * * Authors: Picca Frédéric-Emmanuel * Pete R. Jemian */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc /**************/ /* Axes names */ /**************/ #define TAU "tau" #define MU "mu" #define CHI "chi" #define PHI "phi" #define GAMMA "gamma" #define DELTA "delta" /************/ /* Geometry */ /************/ #define HKL_GEOMETRY_TYPE_APS_POLAR_DESCRIPTION \ "+ Incoming X-rays source along the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" TAU "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" TAU "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char *hkl_geometry_aps_polar_axes[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_aps_polar(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TAU, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 0, 1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TAU, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } /**********************/ /* Modes (hkl engine) */ /**********************/ static HklMode *zaxis_alpha_fixed() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + alpha-fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *zaxis_beta_fixed() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {TAU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + beta-fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /* zaxis + alpha=beta */ static int _reflectivity(const gsl_vector *x, void *params, gsl_vector *f) { const double tau = x->data[0]; const double delta = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = tau - delta; return GSL_SUCCESS; } static const HklFunction reflectivity = { .function = _reflectivity, .size = 4, }; static HklMode *zaxis_alpha_eq_beta() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {TAU, MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&reflectivity}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + alpha=beta", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /* 4-circles bissecting horizontal */ static int _bissector_horizontal(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double gamma = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } static const HklFunction bissector_horizontal = { .function = _bissector_horizontal, .size = 4, }; static HklMode *fourc_bissector_horizontal() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&bissector_horizontal}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles bissecting horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_mu_horizontal() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant mu horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_chi_horizontal() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, PHI, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant chi horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_phi_horizontal() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, CHI, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant phi horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_tau() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {TAU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector tau", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_mu() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector mu", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_chi() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {CHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector chi", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_phi() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {PHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector phi", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *psi_constant_horizontal(void) { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklParameter parameters[] = {PSI_CONSTANT_PARAMETERS(1, 0, 0, 0)}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS( "psi constant horizontal", axes_r, axes_w, functions, parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *psi_constant_vertical(void) { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {TAU, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklParameter parameters[] = {PSI_CONSTANT_PARAMETERS(1, 0, 0, 0)}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS( "psi constant vertical", axes_r, axes_w, functions, parameters), }; return hkl_mode_auto_new( &info, &psi_constant_vertical_mode_operations, TRUE); } /**********************/ /* Modes (psi engine) */ /**********************/ static HklMode* psi_vertical() { static const char *axes_r[] = {TAU, MU, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {MU, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } /*****************/ /* mode readonly */ /*****************/ // none /***********/ /* Engines */ /***********/ static HklEngine *hkl_engine_aps_polar_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = fourc_constant_phi_horizontal(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, zaxis_alpha_fixed()); hkl_engine_add_mode(self, zaxis_beta_fixed()); hkl_engine_add_mode(self, zaxis_alpha_eq_beta()); hkl_engine_add_mode(self, fourc_bissector_horizontal()); hkl_engine_add_mode(self, fourc_constant_mu_horizontal()); hkl_engine_add_mode(self, fourc_constant_chi_horizontal()); hkl_engine_add_mode(self, lifting_detector_tau()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, lifting_detector_chi()); hkl_engine_add_mode(self, lifting_detector_phi()); hkl_engine_add_mode(self, psi_constant_horizontal()); hkl_engine_add_mode(self, psi_constant_vertical()); return self; } static HklEngine *hkl_engine_aps_polar_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /***************/ /* Engine list */ /***************/ static HklEngineList *hkl_engine_list_new_aps_polar(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_aps_polar_hkl_new(self); hkl_engine_aps_polar_psi_new(self); return self; } REGISTER_DIFFRACTOMETER(aps_polar, "APS POLAR", HKL_GEOMETRY_TYPE_APS_POLAR_DESCRIPTION); hkl-5.1.7/hkl/hkl-vector-private.h0000664000175000017500000000712514677222567015770 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_VECTOR_PRIVATE_H__ #define __HKL_VECTOR_PRIVATE_H__ #include // for FILE #include "hkl.h" // for G_BEGIN_DECLS, etc G_BEGIN_DECLS HklVector* hkl_vector_dup(const HklVector* self); void hkl_vector_free(HklVector* self); extern void hkl_vector_fprintf(FILE *file, const HklVector *self); extern int hkl_vector_cmp(const HklVector *self, const HklVector *vector); extern int hkl_vector_is_opposite(const HklVector *self, const HklVector *vector); extern void hkl_vector_add_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_minus_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_div_double(HklVector *self, const double d); extern void hkl_vector_times_double(HklVector *self, const double d); extern void hkl_vector_times_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_times_matrix(HklVector *self, const HklMatrix *m); extern double hkl_vector_sum(const HklVector *self); extern double hkl_vector_scalar_product(const HklVector *self, const HklVector *vector); extern void hkl_vector_vectorial_product(HklVector *self, const HklVector *vector); extern double hkl_vector_angle(const HklVector *self, const HklVector *vector); extern double hkl_vector_oriented_angle(const HklVector *self, const HklVector *vector, const HklVector *ref); extern double hkl_vector_oriented_angle_points(const HklVector *self, const HklVector *p2, const HklVector *p3, const HklVector *ref); extern double hkl_vector_norm2(const HklVector *self); extern int hkl_vector_normalize(HklVector *self); extern int hkl_vector_is_colinear(const HklVector *self, const HklVector *vector); extern void hkl_vector_randomize(HklVector *self); extern void hkl_vector_randomize_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_randomize_vector_vector(HklVector *self, const HklVector *vector1, const HklVector *vector2); extern void hkl_vector_rotated_around_vector(HklVector *self, const HklVector *axe, double angle); extern void hkl_vector_rotated_quaternion(HklVector *self, const HklQuaternion *qr); extern void hkl_vector_rotated_around_line(HklVector *self, double angle, const HklVector *c1, const HklVector *c2); extern int hkl_vector_is_null(const HklVector *self); extern void hkl_vector_project_on_plan(HklVector *self, const HklVector *normal); extern void hkl_vector_project_on_plan_with_point(HklVector *self, const HklVector *normal, const HklVector *point); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-pseudoaxis-common-tth-private.h0000664000175000017500000000226314677222567020733 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_TTH_PRIVATE_H__ #define __HKL_PSEUDOAXIS_COMMON_TTH_PRIVATE_H__ #include "hkl.h" G_BEGIN_DECLS typedef struct _HklEngineTth2 HklEngineTth2; extern HklEngine *hkl_engine_tth2_new(HklEngineList *engines); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-engine-e6c.c0000664000175000017500000002773214677222567014737 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" // for hkl_engine_tth2_new, etc #define MU "mu" #define OMEGA "omega" #define CHI "chi" #define PHI "phi" #define GAMMA "gamma" #define DELTA "delta" /***********************/ /* numerical functions */ /***********************/ static int _bissector_horizontal_func(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double omega = x->data[1]; const double gamma = x->data[4]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } static const HklFunction bissector_horizontal_func = { .function = _bissector_horizontal_func, .size = 5, }; static int _bissector_vertical_func(const gsl_vector *x, void *params, gsl_vector *f) { const double omega = x->data[0]; const double tth = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = tth - 2 * fmod(omega,M_PI); return GSL_SUCCESS; } static const HklFunction bissector_vertical_func = { .function = _bissector_vertical_func, .size = 4, }; /************/ /* mode hkl */ /************/ static HklMode *bissector_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&bissector_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_omega_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {CHI, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_chi_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_phi(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {PHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_omega(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_mu(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *bissector_horizontal(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, OMEGA, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&bissector_horizontal_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_horizontal(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklParameter parameters[] = { PSI_CONSTANT_PARAMETERS(1, 0, 0, 0) }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *psi_constant_horizontal(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *constant_mu_horizontal(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklEngine *hkl_engine_e6c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega_vertical()); hkl_engine_add_mode(self, constant_chi_vertical()); hkl_engine_add_mode(self, constant_phi_vertical()); hkl_engine_add_mode(self, lifting_detector_phi()); hkl_engine_add_mode(self, lifting_detector_omega()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, double_diffraction_vertical()); hkl_engine_add_mode(self, bissector_horizontal()); hkl_engine_add_mode(self, double_diffraction_horizontal()); hkl_engine_add_mode(self, psi_constant_vertical()); hkl_engine_add_mode(self, psi_constant_horizontal()); hkl_engine_add_mode(self, constant_mu_horizontal()); return self; } /************/ /* mode psi */ /************/ static HklMode* psi_vertical() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_e6c_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_e6c_incidence_new, P99_PROTECT({MU, OMEGA, CHI, PHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_e6c_emergence_new, P99_PROTECT({MU, OMEGA, CHI, PHI, GAMMA, DELTA}), surface_parameters_y); /*******/ /* E6C */ /*******/ #define HKL_GEOMETRY_EULERIAN6C_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" MU "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_eulerian6C_axes[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_eulerian6C(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_eulerian6C(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_e6c_hkl_new(self); hkl_engine_e6c_psi_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_e6c_incidence_new(self); hkl_engine_e6c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(eulerian6C, "E6C", HKL_GEOMETRY_EULERIAN6C_DESCRIPTION); hkl-5.1.7/hkl/hkl-type-builtins.h.template0000664000175000017500000000122714677222567017435 0ustar00piccapicca/*** BEGIN file-header ***/ #ifndef __HKL_TYPE_BUILTINS_H__ #define __HKL_TYPE_BUILTINS_H__ #include // for G_BEGIN_DECLS, G_END_DECLS, etc #include // GType #include "hkl.h" // for HKLAPI G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ HKLAPI GType @enum_name@_get_type (void) G_GNUC_CONST; #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) /*** END value-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /* __HKL_TYPE_BUILTINS_H__ */ /*** END file-tail ***/ hkl-5.1.7/hkl/hkl-macros.c0000664000175000017500000000302214677222567014265 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for backtrace, etc #include "hkl-macros-private.h" #ifndef _MSC_VER void hkl_printbt(void) { void *array[20]; int size; char **strings; int i; size = backtrace(array, 20); strings = backtrace_symbols(array, size); printf("Got a backtrace:\n"); for(i=0; i. * * Copyright (C) 2003-2019, 2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-eulerians-private.h" #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for RUBh_minus_Q, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #define KOMEGA "komega" #define KAPPA "kappa" #define KPHI "kphi" #define TTH "tth" static void hkl_geometry_list_multiply_k4c_real(HklGeometryList *self, HklGeometryListItem *item) { HklGeometry *geometry; HklGeometry *copy; double komega, komegap; double kappa, kappap; double kphi, kphip; geometry = item->geometry; komega = hkl_parameter_value_get(darray_item(geometry->axes, 0), HKL_UNIT_DEFAULT); kappa = hkl_parameter_value_get(darray_item(geometry->axes, 1), HKL_UNIT_DEFAULT); kphi = hkl_parameter_value_get(darray_item(geometry->axes, 2), HKL_UNIT_DEFAULT); kappa_2_kappap(komega, kappa, kphi, 50 * HKL_DEGTORAD, &komegap, &kappap, &kphip); copy = hkl_geometry_new_copy(geometry); /* TODO parameter list for the geometry */ hkl_parameter_value_set(darray_item(copy->axes, 0), komegap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, 1), kappap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, 2), kphip, HKL_UNIT_DEFAULT, NULL); hkl_geometry_update(copy); hkl_geometry_list_add(self, copy); hkl_geometry_free(copy); } /************/ /* hkl mode */ /************/ /* bissector */ static int _bissector_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[0]; const double kappa = x->data[1]; const double tth = x->data[3]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_f1 = { .function = _bissector_f1, .size = 4, }; static int _bissector_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[0]; const double kappa = x->data[1]; const double tth = x->data[3]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_f2 = { .function = _bissector_f2, .size = 4, }; static HklMode *bissector(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&bissector_f1, &bissector_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes, axes, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant omega */ static int _constant_omega_f1(const gsl_vector *x, void *params, gsl_vector *f) { double const komega = x->data[0]; double const kappa = x->data[1]; double omega; HklEngine *engine = params; double omega0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = omega0 - omega; return GSL_SUCCESS; } static const HklFunction constant_omega_f1 = { .function = _constant_omega_f1, .size = 4, }; static int _constant_omega_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[0]; const double kappa = x->data[1]; double omega; HklEngine *engine = params; double omega0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = omega0 - omega; return GSL_SUCCESS; } static const HklFunction constant_omega_f2 = { .function = _constant_omega_f2, .size = 4, }; static HklMode *constant_omega(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_omega_f1, &constant_omega_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, constant_omega_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant chi */ static int _constant_chi_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; double chi; HklEngine *engine = params; double chi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); chi = 2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); RUBh_minus_Q(x->data, params, f->data); f->data[3] = chi0 - chi; return GSL_SUCCESS; } static const HklFunction constant_chi_f1 = { .function = _constant_chi_f1, .size = 4, }; static int _constant_chi_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; double chi; HklEngine *engine = params; double chi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); chi = -2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); RUBh_minus_Q(x->data, params, f->data); f->data[3] = chi0 - chi; return GSL_SUCCESS; } static const HklFunction constant_chi_f2 = { .function = _constant_chi_f2, .size = 4, }; static HklMode *constant_chi(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_chi_f1, &constant_chi_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, constant_chi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant phi */ static int _constant_phi_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; const double kphi = x->data[2]; double phi; HklEngine *engine = params; double phi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = phi0 - phi; return GSL_SUCCESS; } static const HklFunction constant_phi_f1 = { .function = _constant_phi_f1, .size = 4, }; static int _constant_phi_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; const double kphi = x->data[2]; double phi; HklEngine *engine = params; double phi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = phi0 - phi; return GSL_SUCCESS; } static const HklFunction constant_phi_f2 = { .function = _constant_phi_f2, .size = 4, }; static HklMode *constant_phi(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_phi_f1, &constant_phi_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant(void) { static const char* axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklEngine *hkl_engine_k4cv_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega()); hkl_engine_add_mode(self, constant_chi()); hkl_engine_add_mode(self, constant_phi()); hkl_engine_add_mode(self, double_diffraction()); hkl_engine_add_mode(self, psi_constant()); return self; } /************/ /* psi mode */ /************/ /* psi */ static HklMode *psi() { static const char *axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_k4cv_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_kappa4C_vertical_incidence_new, P99_PROTECT({KOMEGA, KAPPA, KPHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_kappa4C_vertical_emergence_new, P99_PROTECT({KOMEGA, KAPPA, KPHI, TTH}), surface_parameters_y); /********/ /* K4CV */ /********/ #define HKL_GEOMETRY_KAPPA4C_VERTICAL_DESCRIPTION \ "For this geometry there is a special parameters called :math:`\\alpha` which is the\n" \ "angle between the kappa rotation axis and the :math:`\\vec{y}` direction.\n" \ "\n" \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" KOMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" KAPPA "** : rotating around the :math:`\\vec{x}` direction (0, :math:`-\\cos\\alpha`, :math:`-\\sin\\alpha`)\n" \ " + **" KPHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 1 axis for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`-\\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_kappa4C_vertical_axes[] = {KOMEGA, KAPPA, KPHI, TTH}; static HklGeometry *hkl_geometry_new_kappa4C_vertical(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); double alpha = 50 * HKL_DEGTORAD; HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, KOMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KAPPA, 0, -cos(alpha), -sin(alpha), &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KPHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_kappa4C_vertical(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); self->geometries->multiply = hkl_geometry_list_multiply_k4c_real; hkl_engine_k4cv_hkl_new(self); hkl_engine_eulerians_new(self); hkl_engine_k4cv_psi_new(self); hkl_engine_q_new(self); hkl_engine_kappa4C_vertical_incidence_new(self); hkl_engine_kappa4C_vertical_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(kappa4C_vertical, "K4CV", HKL_GEOMETRY_KAPPA4C_VERTICAL_DESCRIPTION); /********/ /* K4CH */ /********/ /* #define HKL_GEOMETRY_KAPPA4C_HORIZONTAL_DESCRIPTION \ */ /* "For this geometry there is a special parameter called :math:`\\alpha` which is the\n" \ */ /* "angle between the kappa rotation axis and the :math:`\\vec{y}` direction.\n" \ */ /* "\n" \ */ /* "+ The X-ray source is fixed along the :math:`\\vec{x}` direction (1, 0, 0)\n" \ */ /* "+ 3 axes for the sample\n" \ */ /* "\n" \ */ /* " + **" KOMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, 0, 1)\n" \ */ /* " + **" KAPPA "** : rotating around the :math:`\\vec{x}` direction (0, :math:`\\sin\\alpha`, :math:`\\cos\\alpha`)\n" \ */ /* " + **" KPHI "** : rotating around the :math:`-\\vec{y}` direction (0, 0, 1)\n" \ */ /* "\n" \ */ /* "+ 1 axis for the detector\n" \ */ /* "\n" \ */ /* " + **" TTH "** : rotation around the :math:`-\\\vec{y}` direction (0, 0, 1)\n" */ /* static const char* hkl_geometry_kappa4C_horizontal_axes[] = {KOMEGA, KAPPA, KPHI, TTH}; */ /* static HklGeometry *hkl_geometry_new_kappa4C_horizontal(const HklFactory *factory) */ /* { */ /* HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); */ /* double alpha = 50 * HKL_DEGTORAD; // TODO: check the sign here */ /* HklHolder *h; */ /* h = hkl_geometry_add_holder(self); */ /* hkl_holder_add_rotation(h, KOMEGA, 0, 0, 1, &hkl_unit_angle_deg); */ /* hkl_holder_add_rotation(h, KAPPA, 0, sin(alpha), cos(alpha), &hkl_unit_angle_deg); */ /* hkl_holder_add_rotation(h, KPHI, 0, 0, 1, &hkl_unit_angle_deg); */ /* h = hkl_geometry_add_holder(self); */ /* hkl_holder_add_rotation(h, TTH, 0, 0, 1, &hkl_unit_angle_deg); */ /* return self; */ /* } */ /* static HklEngine *hkl_engine_k4ch_hkl_new(HklEngineList *engines) */ /* { */ /* HklEngine *self; */ /* HklMode *default_mode; */ /* self = hkl_engine_hkl_new(engines); */ /* default_mode = bissector(); */ /* hkl_engine_add_mode(self, default_mode); */ /* hkl_engine_mode_set(self, default_mode); */ /* hkl_engine_add_mode(self, constant_omega()); */ /* hkl_engine_add_mode(self, constant_chi()); */ /* hkl_engine_add_mode(self, constant_phi()); */ /* hkl_engine_add_mode(self, double_diffraction()); */ /* hkl_engine_add_mode(self, psi_constant()); // FIXME: this has: psi_constant_vertical_{func,mode_operations} */ /* return self; */ /* } */ /* static HklEngine *hkl_engine_k4ch_psi_new(HklEngineList *engines) */ /* { */ /* HklEngine *self; */ /* HklMode *default_mode; */ /* self = hkl_engine_psi_new(engines); */ /* default_mode = psi(); */ /* hkl_engine_add_mode(self, default_mode); */ /* hkl_engine_mode_set(self, default_mode); */ /* return self; */ /* } */ /* REGISTER_READONLY_INCIDENCE(hkl_engine_kappa4C_horizontal_incidence_new, */ /* P99_PROTECT({KOMEGA, KAPPA, KPHI}), */ /* surface_parameters_y); */ /* REGISTER_READONLY_EMERGENCE(hkl_engine_kappa4C_horizontal_emergence_new, */ /* P99_PROTECT({KOMEGA, KAPPA, KPHI, TTH}), */ /* surface_parameters_y); */ /* static HklEngineList *hkl_engine_list_new_kappa4C_horizontal(const HklFactory *factory) */ /* { */ /* HklEngineList *self = hkl_engine_list_new(); */ /* self->geometries->multiply = hkl_geometry_list_multiply_k4c_real; */ /* hkl_engine_k4ch_hkl_new(self); */ /* hkl_engine_eulerians_new(self); */ /* hkl_engine_k4ch_psi_new(self); */ /* hkl_engine_q_new(self); */ /* hkl_engine_kappa4C_horizontal_incidence_new(self); */ /* hkl_engine_kappa4C_horizontal_emergence_new(self); */ /* return self; */ /* } */ hkl-5.1.7/hkl/hkl-axis.c0000664000175000017500000003572715143615224013747 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for GSL_NAN #include // for gsl_sf_angle_restrict_symm #include // for gsl_isnan #include // for M_PI, ceil, fabs, floor #include // for FILE #include // for NULL, free #include "hkl-axis-private.h" // for HklAxis #include "hkl-interval-private.h" // for HklInterval, etc #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-quaternion-private.h" // for hkl_quaternion_fprintf, etc #include "hkl-vector-private.h" // for hkl_vector_fprintf, etc #include "hkl.h" // for HklParameter, TRUE, etc #include "hkl/ccan/container_of/container_of.h" // for container_of /***********/ /* HklAxis */ /***********/ static inline HklParameter *hkl_axis_copy_real(const HklParameter *base) { HklAxis *self = container_of(base, HklAxis, parameter); HklAxis *dup; dup = g_new(HklAxis, 1); *dup = *self; return &dup->parameter; } static inline void hkl_axis_free_real(HklParameter *self) { free(container_of(self, HklAxis, parameter)); } static inline void hkl_axis_update(HklAxis *self) { hkl_quaternion_init_from_angle_and_axe(&self->q, self->parameter._value, &self->axis_v); } static inline int hkl_axis_init_copy_real(HklParameter *self, const HklParameter *src, GError **error) { HklAxis *axis_self = container_of(self, HklAxis, parameter); HklAxis *axis_src = container_of(src, HklAxis, parameter); hkl_error (error == NULL || *error == NULL); *axis_self = *axis_src; self->changed = TRUE; return TRUE; } static inline int hkl_axis_set_value_real(HklParameter *self, double value, HklUnitEnum unit_type, GError **error) { HklAxis *axis = container_of(self, HklAxis, parameter); hkl_error (error == NULL || *error == NULL); if(!hkl_parameter_value_set_real(self, value, unit_type, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } hkl_assert (error == NULL || *error == NULL); hkl_axis_update(axis); return TRUE; } static inline void hkl_axis_set_value_smallest_in_range_real(HklParameter *self) { double value, min; value = self->_value; min = self->range.min; if(value < min) hkl_axis_set_value_real(self, value + 2*M_PI*ceil((min - value)/(2*M_PI)), HKL_UNIT_DEFAULT, NULL); else hkl_axis_set_value_real(self, value - 2*M_PI*floor((value - min)/(2*M_PI)), HKL_UNIT_DEFAULT, NULL); } static inline void hkl_axis_randomize_real(HklParameter *self) { hkl_parameter_randomize_real(self); hkl_axis_update(container_of(self, HklAxis, parameter)); } static inline int hkl_axis_is_permutable_real(UNUSED const HklParameter *self) { return TRUE; } /* * given a current position of angle a min and max interval find the closest * equivalent angle + n delta_angle in a given direction. * CAUSION angle MUST be in [min, max] otherwise... */ static void find_angle(double current, double *angle, double *distance, double min, double max, double delta_angle) { double new_angle = *angle; double new_distance; while(new_angle >= min && new_angle <= max) { new_distance = fabs(new_angle - current); if (new_distance <= *distance) { *angle = new_angle; *distance = new_distance; } new_angle += delta_angle; } } static inline double hkl_axis_get_value_closest_real(const HklParameter *self, const HklParameter *ref) { double angle = self->_value; if(hkl_parameter_is_valid(self)){ if(hkl_interval_length(&self->range) >= 2*M_PI){ int k; double current = ref->_value; double distance = fabs(current - angle); double delta = 2. * M_PI; double min = self->range.min; double max = self->range.max; /* three cases */ if (angle > max) { k = (int)(floor((max - angle) / delta)); angle += k * delta; find_angle(current, &angle, &distance, min, max, -delta); } else if (angle < min) { k = (int) (ceil((min - angle) / delta)); angle += k * delta; find_angle(current, &angle, &distance, min, max, delta); } else { find_angle(current, &angle, &distance, min, max, -delta); find_angle(current, &angle, &distance, min, max, delta); } } }else angle = GSL_NAN; return angle; } /* * check if the angle or its equivalent is in between [min, max] */ static inline int hkl_axis_is_valid_real(const HklParameter *self) { double value = self->_value; int res = FALSE; HklInterval range = self->range; if(hkl_interval_length(&range) > 2*M_PI) res = TRUE; else{ hkl_interval_angle_restrict_symm(&range); value = gsl_sf_angle_restrict_symm(value); if(range.min <= range.max){ if(range.min <= value && range.max >= value) res = TRUE; }else{ if(value <= range.max || value >= range.min) res = TRUE; } } return res; } static inline void hkl_axis_fprintf_real(FILE *f, const HklParameter *self) { HklAxis *axis = container_of(self, HklAxis, parameter); hkl_parameter_fprintf_real(f, self); hkl_vector_fprintf(f, &axis->axis_v); hkl_quaternion_fprintf(f, &axis->q); } static inline const HklVector *hkl_axis_axis_v_get_real(const HklParameter *self) { return &container_of(self, HklAxis, parameter)->axis_v; } static inline const HklQuaternion *hkl_axis_quaternion_get_real(const HklParameter *self) { return &container_of(self, HklAxis, parameter)->q; } static inline int hkl_axis_transformation_cmp_real(const HklParameter *base, const HklParameter *p2) { const HklAxis *self = container_of(base, HklAxis, parameter); const HklAxis *axis2 = container_of(p2, HklAxis, parameter); return hkl_parameter_transformation_cmp_real(base, p2) || hkl_vector_cmp(&self->axis_v, &axis2->axis_v); } static inline HklVector hkl_axis_transformation_apply_real(const HklParameter *base, const HklVector *v) { const HklAxis *self = container_of(base, HklAxis, parameter); HklVector res = *v; hkl_vector_rotated_quaternion(&res, &self->q); return res; } static inline double hkl_axis_orthodromic_distance_get(const HklParameter *self, double value) { double ref = self->_value; double d = 0; d = fabs(gsl_sf_angle_restrict_symm(value) - gsl_sf_angle_restrict_symm(ref)); /* as M_PI and -M_PI are included in the GSL restriction */ if (d > M_PI) d = 2*M_PI - d; return d; } #define HKL_PARAMETER_OPERATIONS_AXIS_DEFAULTS \ HKL_PARAMETER_OPERATIONS_DEFAULTS, \ .copy = hkl_axis_copy_real, \ .free = hkl_axis_free_real, \ .init_copy = hkl_axis_init_copy_real, \ .get_value_closest = hkl_axis_get_value_closest_real, \ .set_value = hkl_axis_set_value_real, \ .set_value_smallest_in_range = hkl_axis_set_value_smallest_in_range_real, \ .randomize = hkl_axis_randomize_real, \ .is_permutable = hkl_axis_is_permutable_real, \ .is_valid = hkl_axis_is_valid_real, \ .fprintf = hkl_axis_fprintf_real, \ .axis_v_get = hkl_axis_axis_v_get_real, \ .quaternion_get = hkl_axis_quaternion_get_real, \ .transformation_cmp = hkl_axis_transformation_cmp_real, \ .transformation_apply = hkl_axis_transformation_apply_real, \ .orthodromic_distance_get = hkl_axis_orthodromic_distance_get static HklParameterOperations hkl_parameter_operations_axis = { HKL_PARAMETER_OPERATIONS_AXIS_DEFAULTS, }; HklParameter *hkl_parameter_new_rotation(const char *name, HklVector const *axis_v, const HklUnit *punit) { HklAxis axis0 = { .parameter = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = name, .punit = punit, .ops = &hkl_parameter_operations_axis, .type = Rotation(*axis_v), }, .axis_v = *axis_v, .q = {{1., 0., 0., 0.}}, }; HklAxis *self = g_new(HklAxis, 1); *self = axis0; return &self->parameter; } /*************************/ /* HklRotationWithOrigin */ /*************************/ static inline HklParameter *hkl_rotation_with_origin_copy_real(const HklParameter *base) { HklRotationWithOrigin *self = container_of(container_of(base, HklAxis, parameter), HklRotationWithOrigin, axis); HklRotationWithOrigin *dup; dup = g_new(HklRotationWithOrigin, 1); *dup = *self; return &dup->axis.parameter; } static inline void hkl_rotation_with_origin_free_real(HklParameter *base) { free(container_of(container_of(base, HklAxis, parameter), HklRotationWithOrigin, axis)); } static inline int hkl_rotation_with_origin_init_copy_real(HklParameter *base, const HklParameter *base_src, GError **error) { HklRotationWithOrigin *self = container_of(container_of(base, HklAxis, parameter), HklRotationWithOrigin, axis); HklRotationWithOrigin *src = container_of(container_of(base_src, HklAxis, parameter), HklRotationWithOrigin, axis); hkl_error (error == NULL || *error == NULL); *self = *src; base->changed = TRUE; return TRUE; } static inline int hkl_rotation_with_origin_transformation_cmp_real(const HklParameter *base, const HklParameter *base_p2) { HklRotationWithOrigin *self = container_of(container_of(base, HklAxis, parameter), HklRotationWithOrigin, axis); HklRotationWithOrigin *p2 = container_of(container_of(base_p2, HklAxis, parameter), HklRotationWithOrigin, axis); return hkl_axis_transformation_cmp_real(base, base_p2) || hkl_vector_cmp(&self->origin, &p2->origin); } static inline HklVector hkl_rotation_with_origin_transformation_apply_real(const HklParameter *base, const HklVector *v) { const HklAxis *axis = container_of(base, HklAxis, parameter); const HklRotationWithOrigin *self = container_of(axis, HklRotationWithOrigin, axis); HklVector res = *v; hkl_vector_minus_vector(&res, &self->origin); hkl_vector_rotated_quaternion(&res, &axis->q); hkl_vector_add_vector(&res, &self->origin); return res; } #define HKL_PARAMETER_OPERATIONS_ROTATION_WITH_ORIGIN_DEFAULTS \ HKL_PARAMETER_OPERATIONS_AXIS_DEFAULTS, \ .copy = hkl_rotation_with_origin_copy_real, \ .free = hkl_rotation_with_origin_free_real, \ .init_copy = hkl_rotation_with_origin_init_copy_real, \ .transformation_cmp = hkl_rotation_with_origin_transformation_cmp_real, \ .transformation_apply = hkl_rotation_with_origin_transformation_apply_real static HklParameterOperations hkl_parameter_operations_rotation_with_origin = { HKL_PARAMETER_OPERATIONS_ROTATION_WITH_ORIGIN_DEFAULTS, }; HklParameter *hkl_parameter_new_rotation_with_origin(const char *name, HklVector const *axis_v, HklVector const *origin, const HklUnit *punit) { HklRotationWithOrigin rotation0 = { .axis = { .parameter = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = name, .punit = punit, .ops = &hkl_parameter_operations_rotation_with_origin, .type = RotationWithOrigin(*axis_v, *origin), }, .axis_v = *axis_v, .q = {{1., 0., 0., 0.}}, }, .origin = *origin, }; HklRotationWithOrigin *self = g_new(HklRotationWithOrigin, 1); *self = rotation0; return &self->axis.parameter; } /**********************/ /* HklTranslation */ /**********************/ static inline HklParameter *hkl_translation_copy_real(const HklParameter *base) { HklTranslation *self = container_of(base, HklTranslation, parameter); HklTranslation *dup; dup = g_new(HklTranslation, 1); *dup = *self; return &dup->parameter; } static inline void hkl_translation_free_real(HklParameter *base) { free(container_of(base, HklTranslation, parameter)); } static inline int hkl_translation_init_copy_real(HklParameter *base, const HklParameter *base_src, GError **error) { HklTranslation *self = container_of(base, HklTranslation, parameter); HklTranslation *src = container_of(base_src, HklTranslation, parameter); /* need to check that parameters are compatibles */ hkl_error (error == NULL || *error == NULL); *self = *src; base->changed = TRUE; return TRUE; } static inline void hkl_translation_fprintf_real(FILE *f, const HklParameter *base) { HklTranslation *self = container_of(base, HklTranslation, parameter); hkl_parameter_fprintf_real(f, base); hkl_vector_fprintf(f, &self->axis_v); } static inline const HklVector *hkl_translation_axis_v_get_real(const HklParameter *base) { return &container_of(base, HklTranslation, parameter)->axis_v; } static inline int hkl_translation_transformation_cmp_real(const HklParameter *base, const HklParameter *p2) { const HklTranslation *self = container_of(base, HklTranslation, parameter); const HklTranslation *translation2 = container_of(p2, HklTranslation, parameter); return hkl_parameter_transformation_cmp_real(base, p2) || hkl_vector_cmp(&self->axis_v, &translation2->axis_v); } static inline HklVector hkl_translation_transformation_apply_real(const HklParameter *base, const HklVector *v) { const HklTranslation *self = container_of(base, HklTranslation, parameter); HklVector res = self->axis_v; hkl_vector_times_double(&res, base->_value); hkl_vector_add_vector(&res, v); return res; } #define HKL_PARAMETER_OPERATIONS_TRANSLATION_DEFAULTS \ HKL_PARAMETER_OPERATIONS_DEFAULTS, \ .copy = hkl_translation_copy_real, \ .free = hkl_translation_free_real, \ .init_copy = hkl_translation_init_copy_real, \ .fprintf = hkl_translation_fprintf_real , \ .axis_v_get = hkl_translation_axis_v_get_real, \ .transformation_cmp = hkl_translation_transformation_cmp_real, \ .transformation_apply = hkl_translation_transformation_apply_real static HklParameterOperations hkl_parameter_operations_translation = { HKL_PARAMETER_OPERATIONS_TRANSLATION_DEFAULTS, }; HklParameter *hkl_parameter_new_translation(const char *name, HklVector const *axis_v, const HklUnit *punit) { HklTranslation translation0 = { .parameter = { HKL_PARAMETER_DEFAULTS_LENGTH, .name = name, .punit = punit, .ops = &hkl_parameter_operations_translation, .type = Translation(*axis_v), }, .axis_v = *axis_v, }; HklTranslation *self = g_new(HklTranslation, 1); *self = translation0; return &self->parameter; } hkl-5.1.7/hkl/hkl-axis-private.h0000664000175000017500000000416314677222567015431 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_AXIS_PRIVATE_H__ #define __HKL_AXIS_PRIVATE_H__ #include "hkl-parameter-private.h" // for _HklParameter #include "hkl-quaternion-private.h" // for _HklQuaternion #include "hkl-vector-private.h" // for HklVector, HklQuaternion #include "hkl.h" // for HklParameter, etc G_BEGIN_DECLS typedef struct _HklAxis HklAxis; typedef struct _HklRotationWithOrigin HklRotationWithOrigin; typedef struct _HklTranslation HklTranslation; struct _HklAxis { HklParameter parameter; HklVector axis_v; HklQuaternion q; /* internal */ }; struct _HklRotationWithOrigin { HklAxis axis; HklVector origin; }; struct _HklTranslation { HklParameter parameter; HklVector axis_v; }; extern HklParameter *hkl_parameter_new_rotation(const char* name, HklVector const *axis_v, const HklUnit *punit); extern HklParameter *hkl_parameter_new_rotation_with_origin(const char* name, const HklVector *axis_v, const HklVector *origin, const HklUnit *punit); extern HklParameter *hkl_parameter_new_translation(const char *name, const HklVector *axis_v, const HklUnit *punit); G_END_DECLS #endif /* __HKL_AXIS_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-detector.c0000664000175000017500000000637514677222567014630 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fprintf, NULL, FILE #include // for free #include "hkl-detector-private.h" // for _HklDetector #include "hkl-geometry-private.h" // for HklHolder, _HklGeometry, etc #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-source-private.h" // for HklSource #include "hkl-vector-private.h" // for hkl_vector_init, etc #include "hkl.h" // for HklDetector, HklGeometry, etc #include "hkl/ccan/darray/darray.h" // for darray_item /** * hkl_detector_new: (skip) * * Create a new default #HklDetector * * Returns: **/ HklDetector *hkl_detector_new(void) { HklDetector *self = g_new(HklDetector, 1); self->idx = HKL_HOLDER_DETECTOR_IDX; self->holder = NULL; return self; } /** * hkl_detector_new_copy: (skip) * @src: the detector to copy * * the copy constructor * * Returns: **/ HklDetector *hkl_detector_new_copy(const HklDetector *src) { HklDetector *self = g_new(HklDetector, 1); *self = *src; return self; } /** * hkl_detector_free: (skip) * @self: * * destructor **/ void hkl_detector_free(HklDetector *self) { free(self); } /** * hkl_detector_attach_to_holder: (skip) * @self: * @holder: * * attach the #HklDetector to an #HklHolder **/ void hkl_detector_attach_to_holder(HklDetector *self, HklHolder const *holder) { self->holder = holder; } /** * hkl_detector_compute_kf: (skip) * @self: * @g: (in): the diffractometer #HklGeometry use to compute kf. * @kf: (out caller-allocates): the #HklVector fill with the kf coordinates. * * Compute the kf vector of the #HklDetector * * Returns: HKL_SUCCESS if everythongs goes fine. HKL_FAIL otherwise. **/ int hkl_detector_compute_kf(HklDetector const *self, HklGeometry *g, HklVector *kf) { HklHolder *holder; hkl_geometry_update(g); holder = hkl_geometry_detector_holder_get(g, self); if (holder) { hkl_vector_init(kf, HKL_TAU / g->source.wave_length, 0, 0); hkl_vector_rotated_quaternion(kf, &holder->q); return TRUE; } else return FALSE; } /** * hkl_detector_fprintf: (skip) * @f: * @self: * * print to a FILE the detector members **/ void hkl_detector_fprintf(FILE *f, const HklDetector *self) { fprintf(f, "detector->idx: %zd\n", self->idx); fprintf(f, "detector->holder: %p\n", self->holder); } hkl-5.1.7/hkl/hkl-parameter-private.h0000664000175000017500000002435314677222567016450 0ustar00piccapicca /* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PARAMETER_PRIVATE_H__ #define __HKL_PARAMETER_PRIVATE_H__ #include "datatype99.h" #include // for M_PI #include // for FILE, fprintf, NULL #include // for free, rand, RAND_MAX #include "ccan/compiler/compiler.h" #include "hkl-interval-private.h" // for HklInterval #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-unit-private.h" // for HklUnit, hkl_unit_factor #include "hkl.h" // for HklParameter, TRUE, etc G_BEGIN_DECLS datatype( HklParameterType, (Parameter), (Rotation, HklVector), (RotationWithOrigin, HklVector, HklVector), (Translation, HklVector) ); typedef struct _HklParameterOperations HklParameterOperations; struct _HklParameter { const char *name; const char *description; HklInterval range; double _value; const HklUnit *unit; const HklUnit *punit; int fit; int changed; const HklParameterOperations *ops; HklParameterType type; }; #define HKL_PARAMETER_DEFAULTS .name="dummy", .description="no description", .range={.min=-DBL_MAX, .max=DBL_MAX}, ._value=0, .unit=NULL, .punit=NULL, .fit=TRUE, .changed=TRUE, .ops = &hkl_parameter_operations_defaults #define HKL_PARAMETER_DEFAULTS_LENGTH HKL_PARAMETER_DEFAULTS, .unit = &hkl_unit_length_meter, .punit = &hkl_unit_length_meter #define HKL_PARAMETER_DEFAULTS_ANGLE HKL_PARAMETER_DEFAULTS, .range={.min=-M_PI, .max=M_PI}, .unit = &hkl_unit_angle_rad, .punit = &hkl_unit_angle_deg #define HKL_PARAMETER_ERROR hkl_parameter_error_quark () static inline GQuark hkl_parameter_error_quark (void) { return g_quark_from_static_string ("hkl-parameter-error-quark"); } typedef enum { HKL_PARAMETER_ERROR_MIN_MAX_SET, /* can not set the min max */ HKL_PARAMETER_ERROR_VALUE_SET, /* can not set the value */ HKL_PARAMETER_ERROR_INIT, /* error when initializing parameter */ } HklParameterError; /****************/ /* HklParameter */ /****************/ struct _HklParameterOperations { HklParameter * (*copy)(const HklParameter *self); void (*free)(HklParameter *self); int (*init_copy)(HklParameter *self, const HklParameter *src, GError **error); double (*get_value_closest)(const HklParameter *self, const HklParameter *other); int (*set_value)(HklParameter *self, double value, HklUnitEnum unit_type, GError **error); void (*set_value_smallest_in_range)(HklParameter *self); void (*randomize)(HklParameter *self); int (*is_permutable)(const HklParameter *self); int (*is_valid)(const HklParameter *self); int (*is_valid_range)(const HklParameter *self); void (*fprintf)(FILE *f, const HklParameter *self); const HklVector * (*axis_v_get)(const HklParameter *self); const HklQuaternion * (*quaternion_get)(const HklParameter *self); int (*transformation_cmp)(const HklParameter *self, const HklParameter *p2); HklVector (*transformation_apply)(const HklParameter *self, const HklVector *v); double (*orthodromic_distance_get)(const HklParameter *self, double v); HklParameterType (*type_get) (const HklParameter *self); }; #define HKL_PARAMETER_OPERATIONS_DEFAULTS \ .copy = hkl_parameter_copy_real, \ .free = hkl_parameter_free_real, \ .init_copy = hkl_parameter_init_copy_real, \ .get_value_closest = hkl_parameter_value_get_closest_real, \ .set_value = hkl_parameter_value_set_real, \ .set_value_smallest_in_range = hkl_parameter_value_set_smallest_in_range_real, \ .randomize = hkl_parameter_randomize_real, \ .is_permutable = hkl_parameter_is_permutable_real, \ .is_valid = hkl_parameter_is_valid_real, \ .is_valid_range = hkl_parameter_is_valid_real, \ .fprintf = hkl_parameter_fprintf_real, \ .axis_v_get = hkl_parameter_axis_v_get_real, \ .quaternion_get = hkl_parameter_quaternion_get_real, \ .transformation_cmp = hkl_parameter_transformation_cmp_real, \ .transformation_apply = hkl_parameter_transformation_apply_real, \ .orthodromic_distance_get = hkl_parameter_orthodromic_distance_get_real, \ .type_get = hkl_parameter_type_get_real static inline HklParameter *hkl_parameter_copy_real(const HklParameter *self) { HklParameter *dup = g_new(HklParameter, 1); *dup = *self; return dup; } static inline void hkl_parameter_free_real(HklParameter *self) { free(self); } static inline int hkl_parameter_init_copy_real(HklParameter *self, const HklParameter *src, GError **error) { hkl_error (error == NULL || *error == NULL); hkl_error (self->name == src->name || strcmp(self->name, src->name) == 0); *self = *src; self->changed = TRUE; return TRUE; } static inline double hkl_parameter_value_get_closest_real(const HklParameter *self, UNUSED const HklParameter *ref) { return self->_value; } static inline int hkl_parameter_value_set_real(HklParameter *self, double value, HklUnitEnum unit_type, GError **error) { hkl_error (error == NULL || *error == NULL); if (!isfinite(value)){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_VALUE_SET, "It is forbiden to set the (%s) parameter value with the non-finite %f value\n", self->name, value); return FALSE; } switch (unit_type) { case HKL_UNIT_DEFAULT: self->_value = value; break; case HKL_UNIT_USER: self->_value = value / hkl_unit_factor(self->unit, self->punit); break; } self->changed = TRUE; return TRUE; } static inline void hkl_parameter_value_set_smallest_in_range_real(UNUSED HklParameter *self) { /* DOES NOTHING for a standard parameter */ } static inline void hkl_parameter_randomize_real(HklParameter *self) { if (self->fit) { double alea = (double)rand() / (RAND_MAX + 1.); self->_value = self->range.min + (self->range.max - self->range.min) * alea; self->changed = TRUE; } } static inline int hkl_parameter_is_permutable_real(UNUSED const HklParameter *self) { return FALSE; } static inline int hkl_parameter_is_valid_real(const HklParameter *self) { if(self->_value < (self->range.min - HKL_EPSILON) || self->_value > (self->range.max + HKL_EPSILON)) return FALSE; else return TRUE; } static inline void hkl_parameter_fprintf_real(FILE *f, const HklParameter *self) { double factor = hkl_unit_factor(self->unit, self->punit); if (self->punit) fprintf(f, "\"%s\" : %.7f %s [%.7f : %.7f] (%d)", self->name, self->_value * factor, self->punit->repr, self->range.min * factor, self->range.max * factor, self->fit); else fprintf(f, "\"%s\" : %.7f [%.7f : %.7f] (%d)", self->name, self->_value * factor, self->range.min * factor, self->range.max * factor, self->fit); } static inline const HklVector *hkl_parameter_axis_v_get_real(UNUSED const HklParameter *self) { return NULL; } static inline const HklQuaternion *hkl_parameter_quaternion_get_real(UNUSED const HklParameter *self) { return NULL; } static inline int hkl_parameter_transformation_cmp_real(const HklParameter *self, const HklParameter *p2) { return self->ops != p2->ops; } static inline HklVector hkl_parameter_transformation_apply_real(UNUSED const HklParameter *self, const HklVector *v) { return *v; } static inline double hkl_parameter_orthodromic_distance_get_real(const HklParameter *self, UNUSED double value) { return self->_value; } static inline HklParameterType hkl_parameter_type_get_real(const HklParameter *self) { return self->type; } static NEEDED HklParameterOperations hkl_parameter_operations_defaults = { HKL_PARAMETER_OPERATIONS_DEFAULTS, }; extern HklParameter *hkl_parameter_new(const char *name, const char *description, double min, double value, double max, int fit, int changed, const HklUnit *unit, const HklUnit *punit, GError **error); extern int hkl_parameter_init_copy(HklParameter *self, const HklParameter *src, GError **error); extern int hkl_parameter_is_permutable(const HklParameter *self); extern double hkl_parameter_value_get_closest(const HklParameter *self, const HklParameter *ref); extern void hkl_parameter_value_set_smallest_in_range(HklParameter *self); extern int hkl_parameter_is_valid(const HklParameter *self); extern int hkl_parameter_is_valid_range(const HklParameter *self); extern void hkl_parameter_fprintf(FILE *f, const HklParameter *self); extern int hkl_parameter_transformation_cmp(const HklParameter *self, const HklParameter *p2); extern HklVector hkl_parameter_transformation_apply(const HklParameter *self, const HklVector *v); extern double hkl_parameter_orthodromic_distance_get(const HklParameter *self, double value); extern HklParameterType hkl_parameter_type_get(const HklParameter *self); /********************/ /* HklParameterList */ /********************/ typedef darray(HklParameter *) darray_parameter; typedef darray(const HklParameter) darray_const_parameter; G_END_DECLS #endif /* __HKL_PARAMETER_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-engine-2c.c0000664000175000017500000000434114677222567014555 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl-macros-private.h" #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-private.h" // for hkl_engine_list_add, etc #include "hkl/ccan/array_size/array_size.h" #define OMEGA "omega" #define TTH "tth" #define HKL_GEOMETRY_TWOC_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 1 axes for the sample\n" \ "\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 1 axis for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_twoC_axes[] = {OMEGA, TTH}; static HklGeometry *hkl_geometry_new_twoC(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_twoC(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); return self; } REGISTER_DIFFRACTOMETER(twoC, "TwoC", HKL_GEOMETRY_TWOC_DESCRIPTION); hkl-5.1.7/hkl/hkl-unit-private.h0000664000175000017500000000343214677222567015442 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_UNIT_PRIVATE_H__ #define __HKL_UNIT_PRIVATE_H__ #include "hkl.h" // for G_BEGIN_DECLS, etc G_BEGIN_DECLS extern HklUnit *hkl_unit_dup(const HklUnit *self); extern void hkl_unit_free(HklUnit *self); extern int hkl_unit_compatible(const HklUnit *unit1, const HklUnit *unit2); /** * hkl_unit_factor: * @self: * @unit: * * compute the factor to convert from one @Hklunit to another one. * @self * factor = @unit * * Returns: the factor of the conversion. **/ static inline double hkl_unit_factor(const HklUnit *from, const HklUnit *to) { double res = 1.0; if (from == NULL) { if (to == NULL) { res = 1.0; }else{ res = 1.0 / to->factor; } }else{ if (to == NULL){ res = from->factor; }else{ res = from->factor / to->factor; } } return res; } G_END_DECLS #endif /* __HKL_UNIT_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-geometry.c0000664000175000017500000010362614677222567014647 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for alloca #include // for gsl_sf_angle_restrict_symm #include // for gsl_isnan #include // for fabs, M_PI #include // for va_arg, va_end, va_list, etc #include // for size_t #include // for fprintf, FILE, stderr #include // for free, exit, realloc #include // for NULL, strcmp, memcpy #include // for uint #include "hkl-factory-private.h" #include "hkl-axis-private.h" // for HklAxis, etc #include "hkl-detector-private.h" #include "hkl-geometry-private.h" // for _HklGeometry, etc #include "hkl-interval-private.h" // for HklInterval #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-matrix-private.h" #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-quaternion-private.h" // for _HklQuaternion, etc #include "hkl-source-private.h" // for HklSource, hkl_source_init #include "hkl-unit-private.h" // for HklUnit, hkl_unit_factor #include "hkl-vector-private.h" // for HklVector, HklQuaternion, etc #include "hkl.h" // for HklGeometry, etc #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_foreach, darray_item, etc /* * Try to add a axis to the axes list, * if a identical axis is present in the list return it * else create a new on and add it to the list. * die if try to add an axis with the same name but a different axis_v */ static size_t hkl_geometry_add_axis(HklGeometry *self, const HklParameter *axis) { uint i = 0; HklParameter **parameter; /* check if an axis with the same name is on the axis list */ darray_foreach(parameter, self->axes){ if(!strcmp((*parameter)->name, axis->name)){ if (hkl_parameter_transformation_cmp(*parameter, axis)){ fprintf(stderr, "can not add two axis with the same name \"%s\" but not compatible transformation", axis->name); hkl_parameter_fprintf(stderr, *parameter); hkl_parameter_fprintf(stderr, axis); exit(128); }else{ return i; } } ++i; } /* no so create and add it to the list */ darray_append(self->axes, hkl_parameter_new_copy(axis)); return darray_size(self->axes) - 1; } static void hkl_vector_project_into_reciprocal_space(HklVector *self, const HklGeometry *geometry, const HklSample *sample) { HklQuaternion qs = hkl_geometry_sample_rotation_get(geometry, sample); HklMatrix RUB; HklMatrix RUB_1; hkl_quaternion_to_matrix(&qs, &RUB); hkl_matrix_times_matrix(&RUB, hkl_sample_UB_get(sample)); hkl_matrix_inv(&RUB, &RUB_1); hkl_matrix_times_vector(&RUB_1, self); } /*******************/ /* HklHolderConfig */ /*******************/ static struct HklHolderConfig *hkl_holder_config_new(void) { struct HklHolderConfig *self; self = g_new(struct HklHolderConfig, 1); self->gc = 1; self->idx = NULL; self->len = 0; return self; } static struct HklHolderConfig *hkl_holder_config_ref(struct HklHolderConfig *self) { if(!self) return NULL; self->gc++; return self; } static void hkl_holder_config_unref(struct HklHolderConfig *self) { if(!self) return; if(--self->gc) return; free(self->idx); free(self); } /*************/ /* HklHolder */ /*************/ static HklHolder *hkl_holder_new(HklGeometry *geometry) { static HklQuaternion q0 = {{1, 0, 0, 0}}; HklHolder *self = g_new(HklHolder, 1); self->config = hkl_holder_config_new(); self->geometry = geometry; self->q = q0; return self; } static HklHolder *hkl_holder_new_copy(HklHolder *src, HklGeometry *geometry) { HklHolder *self = g_new(HklHolder, 1); self->config = hkl_holder_config_ref(src->config); self->geometry = geometry; self->q = src->q; return self; } static void hkl_holder_free(HklHolder *self) { hkl_holder_config_unref(self->config); free(self); } static void hkl_holder_update(HklHolder *self) { static HklQuaternion q0 = {{1, 0, 0, 0}}; size_t i; self->q = q0; /* * The initial meaning of hkl_holder_update was to compute the * global rotation of the holder. The first holder contained * only centered rotations. Now that we have added also * translation, we stop this computation at the first non * rotation axis * * The right think to do should be to add an * HklVector hkl_holder_apply_transformation(const Hklholder, const HklVector *vector) * for every kind of transformation (translation, rotation, etc...) */ for(i=0; iconfig->len; ++i){ const HklParameter *p; const HklQuaternion *q; p = darray_item(self->geometry->axes, self->config->idx[i]); q = hkl_parameter_quaternion_get(p); if(NULL == q) continue; else hkl_quaternion_times_quaternion(&self->q, q); } } static HklParameter * hkl_holder_add_axis_if_not_present(const HklHolder *self, int idx) { size_t i; HklParameter *res = NULL; /* check if the axis was already in the geometry */ for(i=0; iconfig->len; i++) if (idx == self->config->idx[i]) return NULL; res = darray_item(self->geometry->axes, idx); self->config->idx = realloc(self->config->idx, sizeof(*self->config->idx) * (self->config->len + 1)); self->config->idx[self->config->len++] = idx; return res; } HklParameter *hkl_holder_add_parameter(HklHolder *self, const char *name, const HklUnit *punit) { HklParameter parameter = { HKL_PARAMETER_DEFAULTS_LENGTH, .name = name, .punit = punit }; int idx = hkl_geometry_add_axis(self->geometry, ¶meter); return hkl_holder_add_axis_if_not_present(self, idx); } HklParameter *hkl_holder_add_rotation(HklHolder *self, const char *name, double x, double y, double z, const HklUnit *punit) { HklVector axis_v = {{x, y, z}}; HklParameter *axis = hkl_parameter_new_rotation(name, &axis_v, punit); int idx = hkl_geometry_add_axis(self->geometry, axis); hkl_parameter_free(axis); return hkl_holder_add_axis_if_not_present(self, idx); } HklParameter *hkl_holder_add_rotation_with_origin(HklHolder *self, const char *name, double x, double y, double z, double ox, double oy, double oz, const HklUnit *punit) { HklVector axis_v = {{x, y, z}}; HklVector origin = {{ox, oy, oz}}; HklParameter *axis = hkl_parameter_new_rotation_with_origin(name, &axis_v, &origin, punit); int idx = hkl_geometry_add_axis(self->geometry, axis); hkl_parameter_free(axis); return hkl_holder_add_axis_if_not_present(self, idx); } HklParameter *hkl_holder_add_translation(HklHolder *self, const char *name, double x, double y, double z, const HklUnit *punit) { HklVector axis_v = {{x, y, z}}; HklParameter *axis = hkl_parameter_new_translation(name, &axis_v, punit); int idx = hkl_geometry_add_axis(self->geometry, axis); hkl_parameter_free(axis); return hkl_holder_add_axis_if_not_present(self, idx); } HklVector hkl_holder_transformation_apply(const HklHolder *self, const HklVector *v) { size_t i; HklVector res = *v; /* for each axis from the end apply the transformation to the vector */ for(i=0;iconfig->len;i++){ HklParameter *p = darray_item(self->geometry->axes, self->config->idx[self->config->len - 1 - i]); res = hkl_parameter_transformation_apply(p, &res); } return res; } /***************/ /* HklGeometry */ /***************/ const HklGeometryOperations hkl_geometry_operations_defaults = { HKL_GEOMETRY_OPERATIONS_DEFAULTS }; /** * hkl_geometry_new: (skip) * * constructor * * Returns: **/ HklGeometry *hkl_geometry_new(const HklFactory *factory, const HklGeometryOperations *ops) { HklGeometry *g = g_new(HklGeometry, 1); if(NULL == factory){ static const HklFactory readonly = { .name = "readonly", .description = "Readonly geometry which can be customise by the user", }; g->factory = &readonly; g->ops = &hkl_geometry_operations_defaults; } else { g->factory = factory; g->ops = ops; } hkl_source_init(&g->source, 1.54, 1, 0, 0); darray_init(g->axes); darray_init(g->holders); return g; } /** * hkl_geometry_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklGeometry *hkl_geometry_new_copy(const HklGeometry *src) { HklGeometry *self = g_new(HklGeometry, 1); HklParameter **axis; HklHolder **holder; *self = *src; /* copy the axes */ darray_init(self->axes); darray_foreach(axis, src->axes){ darray_append(self->axes, hkl_parameter_new_copy(*axis)); } /* copy the holders */ darray_init(self->holders); darray_foreach(holder, src->holders){ darray_append(self->holders, hkl_holder_new_copy(*holder, self)); } return self; } /** * hkl_geometry_free: (skip) * @self: * * destructor **/ void hkl_geometry_free(HklGeometry *self) { HklParameter **axis; HklHolder **holder; darray_foreach(axis, self->axes){ hkl_parameter_free(*axis); } darray_free(self->axes); darray_foreach(holder, self->holders){ hkl_holder_free(*holder); } darray_free(self->holders); free(self); } /** * hkl_geometry_set: (skip) * @self: the this ptr * @src: the other #HklGeometry to set from * * Set an #HklGeometry from another one. * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_geometry_set(HklGeometry *self, const HklGeometry *src) { size_t i; hkl_error(self->factory == src->factory); hkl_error(self->ops == src->ops); self->source = src->source; /* copy the axes configuration and mark it as dirty */ for(i=0; iaxes); ++i) hkl_parameter_init_copy(darray_item(self->axes, i), darray_item(src->axes, i), NULL); for(i=0; iholders); ++i) darray_item(self->holders, i)->q = darray_item(src->holders, i)->q; return TRUE; } /** * hkl_geometry_axis_names_get: * @self: the this ptr * * get all the axes of the given #HklGeometry * * Returns: (type gpointer): array of the axes names. **/ const darray_string *hkl_geometry_axis_names_get(const HklGeometry *self) { return &self->factory->axes; } /** * hkl_geometry_axis_get: * @self: the this ptr * @name: the name of the axis your are requesting * @error: return location for a GError, or NULL * * Return value: (allow-none): the parameter corresponding to the axis name. **/ const HklParameter *hkl_geometry_axis_get(const HklGeometry *self, const char *name, GError **error) { HklParameter **axis; hkl_error (error == NULL || *error == NULL); darray_foreach(axis, self->axes){ if (!strcmp((*axis)->name, name)) return *axis; } g_set_error(error, HKL_GEOMETRY_ERROR, HKL_GEOMETRY_ERROR_AXIS_GET, "this geometry does not contain this axis \"%s\"", name); return NULL; } /** * hkl_geometry_axis_set: * @self: the this ptr * @name: the name of the axis to set * @axis: The #HklParameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_geometry_axis_set(HklGeometry *self, const char *name, const HklParameter *axis, GError **error) { HklParameter **_axis; hkl_error (error == NULL || *error == NULL); if(name != axis->name && strcmp(name, axis->name)){ g_set_error(error, HKL_GEOMETRY_ERROR, HKL_GEOMETRY_ERROR_AXIS_SET, "The axis to set \"%s\" is different from the parameter name \"%s\"\n", name, axis->name); return FALSE; } darray_foreach(_axis, self->axes){ if (*_axis == axis) break; if (!strcmp(axis->name, (*_axis)->name)){ hkl_parameter_init_copy(*_axis, axis, NULL); break; } } hkl_geometry_update(self); return TRUE; } /** * hkl_geometry_wavelength_get: * @self: the this ptr * @unit_type: the unit type (default or user) of the returned value * * Get the wavelength of the HklGeometry * * Returns: the wavelength **/ double hkl_geometry_wavelength_get(const HklGeometry *self, HklUnitEnum unit_type) { /* for now there is no unit convertion but the unit_type is * there */ return self->source.wave_length; } /** * hkl_geometry_wavelength_set: * @self: * @wavelength: * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * Set the wavelength of the geometry * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_geometry_wavelength_set(HklGeometry *self, double wavelength, HklUnitEnum unit_type, GError **error) { hkl_error (error == NULL || *error == NULL); /* for now there is no unit convertion but the unit_type is * there */ self->source.wave_length = wavelength; return TRUE; } /** * hkl_geometry_init_geometry: (skip) * @self: the this ptr * @src: the #HklGeometry to set from * * initilize an HklGeometry * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_geometry_init_geometry(HklGeometry *self, const HklGeometry *src) { return hkl_geometry_set(self, src); } /** * hkl_geometry_add_holder: (skip) * @self: * * add an Holder to the #HklGeometry * * Returns: **/ HklHolder *hkl_geometry_add_holder(HklGeometry *self) { HklHolder *holder = hkl_holder_new(self); darray_append(self->holders, holder); return holder; } /** * hkl_geometry_update: (skip) * @self: * * update the geometry internal once an Axis values changed **/ void hkl_geometry_update(HklGeometry *self) { HklParameter **axis; int ko = 0; darray_foreach(axis, self->axes){ if ((*axis)->changed) { ko = 1; break; } } if (ko) { HklHolder **holder; darray_foreach(holder, self->holders){ hkl_holder_update(*holder); } darray_foreach(axis, self->axes){ (*axis)->changed = FALSE; } } } const char *hkl_geometry_name_get(const HklGeometry *self) { return hkl_factory_name_get(self->factory); } /** * hkl_geometry_get_axis_idx_by_name: (skip) * @self: * @name: * * get the index of the axes named @name in the geometry * * Returns: -1 if the axis was not found **/ int hkl_geometry_get_axis_idx_by_name(const HklGeometry *self, const char *name) { uint i = 0; HklParameter **axis; darray_foreach(axis, self->axes){ if (!strcmp((*axis)->name, name)) return i; ++i; } return -1; } /** * hkl_geometry_get_axis_by_name: * @self: * @name: * * get an #HklAxis using its name * * Returns: (transfer none): **/ HklParameter *hkl_geometry_get_axis_by_name(HklGeometry *self, const char *name) { HklParameter **axis; darray_foreach(axis, self->axes){ if (!strcmp((*axis)->name, name)) return (*axis); } return NULL; } /** * hkl_geometry_axis_values_get: * @self: the this ptr * @values: (array length=n_values): the values to get * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * * fill the values array with the #HklGeometry axes. **/ void hkl_geometry_axis_values_get(const HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type) { size_t i = 0; HklParameter **axis; g_return_if_fail (n_values == darray_size(self->axes)); darray_foreach(axis, self->axes){ values[i++] = hkl_parameter_value_get(*axis, unit_type); } } /** * hkl_geometry_axis_values_set: * @self: the this ptr * @values: (array length=n_values): the values to set. * @n_values: the length of the values array. * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * Set the #HklGeometry axes values * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_geometry_axis_values_set(HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) { uint i = 0; HklParameter **axis; hkl_error (error == NULL || *error == NULL); hkl_assert(n_values == darray_size(self->axes)); darray_foreach(axis, self->axes){ if(!hkl_parameter_value_set(*axis, values[i++], unit_type, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } } hkl_assert (error == NULL || *error == NULL); hkl_geometry_update(self); return TRUE; } /** * hkl_geometry_randomize: (skip) * @self: * * randomize the #HklGeometry **/ void hkl_geometry_randomize(HklGeometry *self) { HklParameter **axis; darray_foreach(axis, self->axes){ hkl_parameter_randomize(*axis); } hkl_geometry_update(self); } /** * hkl_geometry_set_values_v: (skip) * @self: * @unit_type: the unit type (default or user) of the returned value * @error: * "...: * * set the axes values * * Returns: **/ int hkl_geometry_set_values_v(HklGeometry *self, HklUnitEnum unit_type, GError **error, ...) { va_list ap; HklParameter **axis; hkl_error (error == NULL || *error == NULL); va_start(ap, error); darray_foreach(axis, self->axes){ if(!hkl_parameter_value_set(*axis, va_arg(ap, double), unit_type, error)){ hkl_assert (error == NULL || *error != NULL); va_end(ap); hkl_geometry_update(self); return FALSE; } } hkl_assert (error == NULL || *error == NULL); va_end(ap); hkl_geometry_update(self); return TRUE; } /** * hkl_geometry_distance: * @self: the this ptr * @ref: the #HklGeometry to compare with * * compute the distance between two #HklGeometries * * Returns: the distance between the two geometries **/ double hkl_geometry_distance(const HklGeometry *self, const HklGeometry *ref) { size_t i; double value1, value2; double distance = 0.; for(i=0; iaxes); ++i){ value1 = darray_item(self->axes, i)->_value; value2 = darray_item(ref->axes, i)->_value; distance += fabs(value2 - value1); } return distance; } /** * hkl_geometry_distance_orthodromic: (skip) * @self: the this ptr * @ref: the reference #HklGeometry to compare with. * * Returns: the orthodromique distance **/ double hkl_geometry_distance_orthodromic(const HklGeometry *self, const HklGeometry *ref) { size_t i; double distance = 0.; for(i=0; iaxes); ++i){ distance += hkl_parameter_orthodromic_distance_get( darray_item(self->axes, i), darray_item(ref->axes, i)->_value); } return distance; } /** * hkl_geometry_is_valid: (skip) * @self: * * check if all axes of the #HklGeometry are valid. * * Returns: **/ int hkl_geometry_is_valid(const HklGeometry *self) { HklParameter **axis; darray_foreach(axis, self->axes){ if(!hkl_parameter_is_valid(*axis)) return FALSE; } return TRUE; } /** * hkl_geometry_is_valid_range: (skip) * @self: * * check if all axes of the #HklGeometry are valid. * (there is a difference for axis) * * Returns: **/ int hkl_geometry_is_valid_range(const HklGeometry *self) { HklParameter **axis; darray_foreach(axis, self->axes){ if(!hkl_parameter_is_valid_range(*axis)) return FALSE; } return TRUE; } /** * hkl_geometry_closest_from_geometry_with_range: (skip) * @self: * @ref: * * get the closest axes values in the HklInterval compatible with the * current axes values * * Returns: **/ int hkl_geometry_closest_from_geometry_with_range(HklGeometry *self, const HklGeometry *ref) { size_t i; uint len = darray_size(self->axes); double *values = alloca(len * sizeof(*values)); int ko = FALSE; for(i=0;iaxes, i), darray_item(ref->axes, i)); if(gsl_isnan(values[i])){ ko = TRUE; break; } } if(!ko){ for(i=0;iaxes, i), values[i], HKL_UNIT_DEFAULT, NULL)); hkl_geometry_update(self); } return ko; } /** * hkl_geometry_sample_rotation_get: * @self: the self @HklGeometry@ * @sample: the rotated sample. * * return the rotation part of the given sample in the laboratory basis. * * Returns: the rotation express as a quaternion. **/ HklQuaternion hkl_geometry_sample_rotation_get(const HklGeometry *self, const HklSample *sample) { return hkl_geometry_sample_holder_get(self, sample)->q; } /** * hkl_geometry_detector_rotation_get: * @self: the self #HklGeometry * @detector: the #HklDetector * * return the rotation part of the given detector in the laboratory * basis. * * Returns: the rotation express as a #HklQuaternion. **/ HklQuaternion hkl_geometry_detector_rotation_get(const HklGeometry *self, const HklDetector *detector) { return hkl_geometry_detector_holder_get(self, detector)->q; } /** * hkl_geometry_fprintf: (skip) * @file: * @self: * * print into a file the #HklGeometry **/ void hkl_geometry_fprintf(FILE *file, const HklGeometry *self) { fprintf(file, " HklGeometry type: \"%s\" wavelength: %f", self->factory->name, self->source.wave_length); for(unsigned int i=0; iaxes); ++i){ fprintf(file, " "); hkl_parameter_fprintf(file, darray_item(self->axes, i)); } } HklHolder *hkl_geometry_sample_holder_get(const HklGeometry *self, const HklSample *sample) { return self->ops->sample_holder_get(self, sample); } HklHolder *hkl_geometry_detector_holder_get(const HklGeometry *self, const HklDetector *detector) { return self->ops->detector_holder_get(self, detector); } /** * hkl_geometry_ki_get: * @self: the self #HklGeometry * * return the ki vector in the laboratory * basis. * * Returns: the ki vector as #HklVector. **/ HklVector hkl_geometry_ki_get(const HklGeometry *self) { return self->ops->ki_get(self); } /** * hkl_geometry_ki_abc_get: * @self: the self #HklGeometry * @sample: the sample #HklSample * * return the ki vector in the sample lattice reciprocal coordinates * basis. * * Returns: the ki vector as an #HklVector. **/ HklVector hkl_geometry_ki_abc_get(const HklGeometry *self, const HklSample *sample) { HklVector ki_abc = hkl_geometry_ki_get(self); hkl_vector_project_into_reciprocal_space(&ki_abc, self, sample); return ki_abc; } /** * hkl_geometry_kf_get: * @self: the self #HklGeometry * @detector: the #HklDetector * * return the kf vector in the laboratory * basis. * * Returns: the kf vector. **/ HklVector hkl_geometry_kf_get(const HklGeometry *self, const HklDetector *detector) { return self->ops->kf_get(self, detector); } /** * hkl_geometry_kf_abc_get: * @self: the self #HklGeometry * @detector: the #HklDetector * @sample: the sample #HklSample * * return the kf vector in the sample reciprocal lattice coordinates * basis. * * Returns: the kf vector. **/ HklVector hkl_geometry_kf_abc_get(const HklGeometry *self, const HklDetector *detector, const HklSample* sample) { HklVector kf_abc = hkl_geometry_kf_get(self, detector); hkl_vector_project_into_reciprocal_space(&kf_abc, self, sample); return kf_abc; } /*******************/ /* HklGeometryList */ /*******************/ /** * hkl_geometry_list_new: (skip) * * constructor * * Returns: **/ HklGeometryList *hkl_geometry_list_new(void) { HklGeometryList *self = g_new(HklGeometryList, 1); list_head_init(&self->items); self->n_items = 0; self->multiply = NULL; return self; } /** * hkl_geometry_list_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklGeometryList *hkl_geometry_list_new_copy(const HklGeometryList *self) { HklGeometryList *dup; HklGeometryListItem *item; dup = g_new(HklGeometryList, 1); list_head_init(&dup->items); /* now copy the item arrays */ list_for_each(&self->items, item, list){ list_add_tail(&dup->items, &hkl_geometry_list_item_new_copy(item)->list); } dup->n_items = self->n_items; dup->multiply = self->multiply; return dup; } /** * hkl_geometry_list_free: (skip) * @self: * * destructor **/ void hkl_geometry_list_free(HklGeometryList *self) { hkl_geometry_list_reset(self); free(self); } /** * hkl_geometry_list_add: (skip) * @self: The current #HklGeometryList * @geometry: the #HklGeometry to add * * this method Add a geometry to the geometries * * This method try to be clever by allocating memory only if the * current length of the geometries is not large enought. Then it just * set the geometry axes and copy it to the right geometries. We do * not gives the x len as it is equal to the self->axes_len. **/ void hkl_geometry_list_add(HklGeometryList *self, const HklGeometry *geometry) { HklGeometryListItem *item; /* now check if the geometry is already in the geometry list */ list_for_each(&self->items, item, list){ if (hkl_geometry_distance_orthodromic(geometry, item->geometry) < HKL_EPSILON) return; } item = hkl_geometry_list_item_new(geometry); if (NULL != item){ list_add_tail(&self->items, &item->list); self->n_items += 1; } } /** * hkl_geometry_list_n_items_get: (skip) * @self: the this ptr * * get the number of items in the #HklGeometryList * * Returns: the number of items in the list **/ size_t hkl_geometry_list_n_items_get(const HklGeometryList *self) { return self->n_items; } /** * hkl_geometry_list_items_first_get: (skip) * @self: the this ptr * * get the first solution of the #HklGeometryList * * Returns: the first solution of the list **/ const HklGeometryListItem *hkl_geometry_list_items_first_get(const HklGeometryList *self) { return list_top(&self->items, HklGeometryListItem, list); } /** * hkl_geometry_list_items_next_get: (skip) * @self: the this ptr * @item: the current #HklGeometryListItem solution of the #HklGeometryList * * get the next solution of the #HklGeometryList from the current item location. * * Returns: the next solution of the list **/ const HklGeometryListItem *hkl_geometry_list_items_next_get(const HklGeometryList *self, const HklGeometryListItem *item) { return list_next(&self->items, item, list); } /** * hkl_geometry_list_reset: (skip) * @self: the this ptr * * reset the HklGeometry, in fact it is a sort of clean method remove * all the items of the list. **/ void hkl_geometry_list_reset(HklGeometryList *self) { HklGeometryListItem *item; HklGeometryListItem *next; list_for_each_safe(&self->items, item, next, list) hkl_geometry_list_item_free(item); list_head_init(&self->items); self->n_items = 0; } /** * hkl_geometry_list_sort: (skip) * @self: * @ref: * * sort the #HklGeometryList compare to the distance of the given * #HklGeometry **/ void hkl_geometry_list_sort(HklGeometryList *self, HklGeometry *ref) { double *distances = alloca(self->n_items * sizeof(*distances)); size_t *idx = alloca(self->n_items * sizeof(*idx)); HklGeometryListItem **items = alloca(self->n_items * sizeof(*items)); HklGeometryListItem *item; int i = 0; size_t x; int j, p; /* compute the distances once for all */ list_for_each(&self->items, item, list){ distances[i] = hkl_geometry_distance(ref, item->geometry); idx[i] = i; items[i] = item; i++; } /* insertion sorting */ for(i=1; in_items; ++i){ x = idx[i]; /* find the smallest idx p lower than i with distance[idx[p]] >= distance[x] */ for(p = 0; distances[idx[p]] < distances[x] && fabs(distances[idx[p]] - distances[x]) > HKL_EPSILON; p++); /* move everythings in between p and i */ for(j=i-1; j>=p; j--) idx[j+1] = idx[j]; idx[p] = x; /* insert the saved idx */ } list_head_init(&self->items); for(i=0; in_items; ++i) list_add_tail(&self->items, &items[idx[i]]->list); } /** * hkl_geometry_list_fprintf: (skip) * @f: * @self: * * print to a file the #HklGeometryList **/ void hkl_geometry_list_fprintf(FILE *f, const HklGeometryList *self) { uint i = 0; double value; fprintf(f, "multiply method: %p \n", self->multiply); if(self->n_items){ HklGeometryListItem *item; HklParameter **axis; item = list_top(&self->items, HklGeometryListItem, list); if(!item) return; fprintf(f, " "); darray_foreach(axis, list_top(&self->items, HklGeometryListItem, list)->geometry->axes){ fprintf(f, "%19s", (*axis)->name); } /* geometries */ list_for_each(&self->items, item, list){ fprintf(f, "\n%d :", i++); darray_foreach(axis, item->geometry->axes){ value = hkl_parameter_value_get(*axis, HKL_UNIT_DEFAULT); fprintf(f, " % 18.15f %s", value, (*axis)->unit->repr); } fprintf(f, "\n "); darray_foreach(axis, item->geometry->axes){ value = hkl_parameter_value_get(*axis, HKL_UNIT_USER); fprintf(f, " % 18.15f %s", value, (*axis)->punit->repr); } fprintf(f, "\n"); } } } /** * hkl_geometry_list_multiply: (skip) * @self: * * apply the multiply lenthod to the #HklGeometry **/ void hkl_geometry_list_multiply(HklGeometryList *self) { uint i = 0; uint len = self->n_items; HklGeometryListItem *item; if(!self->multiply) return; /* * warning this method change the self->len so we need to save it * before using the recursive perm_r calls */ for(i=0, item=list_top(&self->items, HklGeometryListItem, list); iitems, item, list)) self->multiply(self, item); } static void perm_r(HklGeometryList *self, const HklGeometry *ref, const HklGeometry *geometry, const unsigned int axis_idx) { if (axis_idx == darray_size(geometry->axes)){ if(hkl_geometry_distance(geometry, ref) > HKL_EPSILON){ list_add_tail(&self->items, &hkl_geometry_list_item_new(geometry)->list); self->n_items++; } }else{ HklParameter *axis = darray_item(geometry->axes, axis_idx); if(hkl_parameter_is_permutable(axis)){ const double max = axis->range.max;; const double value0 = axis->_value; double value; value = value0; do{ /* fprintf(stdout, "\n%d %s, %f", axis_idx, hkl_axis_get_name(axis), value * HKL_RADTODEG); */ perm_r(self, ref, geometry, axis_idx + 1); value += 2*M_PI; if(value <= (max + HKL_EPSILON)){ /* optimisation here: */ /* instead of using set_value * we directly write the * HklParameter value, BEWARE * that it require that * HklParameter is a rotation * (for now it is always * true */ axis->_value = value; } }while(value <= (max + HKL_EPSILON)); /* restore the initial value */ axis->_value = value0; } else perm_r(self, ref, geometry, axis_idx + 1); } } void hkl_geometry_list_multiply_from_range(HklGeometryList *self) { size_t i; size_t len; const HklGeometryListItem *item; /* * warning this method change the self->len so we need to save it * before using the recursive perm_r calls */ len = self->n_items; for(i=0, item=list_top(&self->items, HklGeometryListItem, list); iitems, item, list)){ HklParameter **axis; HklGeometry *geometry = hkl_geometry_new_copy(item->geometry); /* find axes to permute and the first solution of thoses axes */ darray_foreach(axis, geometry->axes){ if (hkl_parameter_is_permutable(*axis)) hkl_parameter_value_set_smallest_in_range(*axis); } /* * fprintf(stdout, "FIRST SOLUTION\n"); * hkl_geometry_fprintf(stdout, geometry); */ perm_r(self, item->geometry, geometry, 0); hkl_geometry_free(geometry); } } /** * hkl_geometry_list_remove_invalid: (skip) * @self: * * remove all invalid #HklGeometry from the #HklGeometryList **/ void hkl_geometry_list_remove_invalid(HklGeometryList *self) { HklGeometryListItem *item, *next; list_for_each_safe(&self->items, item, next, list) if(!hkl_geometry_is_valid_range(item->geometry)){ list_del(&item->list); self->n_items--; hkl_geometry_list_item_free(item); } } /***********************/ /* HklGeometryListItem */ /***********************/ /** * hkl_geometry_list_item_new: (skip) * @geometry: * * constructor * * Returns: **/ HklGeometryListItem *hkl_geometry_list_item_new(const HklGeometry *geometry) { HklGeometryListItem *self = g_new(HklGeometryListItem, 1); self->geometry = hkl_geometry_new_copy(geometry); return self; } /** * hkl_geometry_list_item_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklGeometryListItem *hkl_geometry_list_item_new_copy(const HklGeometryListItem *self) { HklGeometryListItem *dup = g_new(HklGeometryListItem, 1); dup->geometry = hkl_geometry_new_copy(self->geometry); return dup; } /** * hkl_geometry_list_item_free: (skip) * @self: * * destructor **/ void hkl_geometry_list_item_free(HklGeometryListItem *self) { hkl_geometry_free(self->geometry); free(self); } /** * hkl_geometry_list_item_geometry_get: * @self: the this ptr * * Return value: The geometry contain inside the HklGeometryListItem **/ const HklGeometry *hkl_geometry_list_item_geometry_get(const HklGeometryListItem *self) { return self->geometry; } hkl-5.1.7/hkl/hkl-pseudoaxis-private.h0000664000175000017500000004673215133711150016634 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2022, 2023, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_PRIVATE_H__ #define __HKL_PSEUDOAXIS_PRIVATE_H__ #include // for gsl_sf_angle_restrict_symm #include // for size_t #include // for free #include // for NULL #include // for uint #include "hkl-detector-private.h" #include "hkl-geometry-private.h" // for hkl_geometry_update, etc #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for hkl_parameter_list_free, etc #include "hkl.h" // for HklEngine, HklMode, etc #include "hkl/ccan/array_size/array_size.h" #include "hkl/ccan/darray/darray.h" // for darray_foreach, etc G_BEGIN_DECLS typedef struct _HklModeOperations HklModeOperations; typedef struct _HklModeInfo HklModeInfo; typedef struct _HklMode HklMode; typedef struct _HklEngineInfo HklEngineInfo; typedef struct _HklEngineOperations HklEngineOperations; typedef struct _HklEngineListInfo HklEngineListInfo; typedef struct _HklEngineListOperations HklEngineListOperations; typedef darray(HklMode *) darray_mode; /***********/ /* HklMode */ /***********/ struct _HklModeInfo { const char *name; const darray_string axes_r; const darray_string axes_w; const darray(const HklParameter) parameters; }; #define HKL_MODE_INFO_RO(_name, _axes) .name=_name, .axes_r=DARRAY(_axes) #define HKL_MODE_INFO(_name, _axes_r, _axes_w) HKL_MODE_INFO_RO((_name), (_axes_r)), .axes_w=DARRAY((_axes_w)) #define HKL_MODE_INFO_RO_WITH_PARAMS(_name, _axes, _parameters) HKL_MODE_INFO_RO((_name), (_axes)), .parameters=DARRAY(_parameters) #define HKL_MODE_INFO_WITH_PARAMS(_name, _axes_r, _axes_w, _parameters) \ HKL_MODE_INFO(_name, _axes_r, _axes_w), .parameters=DARRAY(_parameters) struct _HklModeOperations { unsigned long capabilities; void (* free)(HklMode *self); int (* initialized_get)(const HklMode *self); int (* initialized_set)(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error); int (* get)(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error); int (* set)(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error); }; #define HKL_MODE_OPERATIONS_DEFAULTS .capabilities=HKL_ENGINE_CAPABILITIES_READABLE | HKL_ENGINE_CAPABILITIES_WRITABLE, \ .free=hkl_mode_free_real, \ .initialized_get=hkl_mode_initialized_get_real, \ .initialized_set=hkl_mode_initialized_set_real, \ .get=hkl_mode_get_real, \ .set=hkl_mode_set_real struct _HklMode { const HklModeInfo *info; const HklModeOperations *ops; darray_parameter parameters; darray_string parameters_names; int initialized; }; static inline void hkl_mode_free_real(HklMode *self) { HklParameter **parameter; darray_foreach(parameter, self->parameters){ hkl_parameter_free(*parameter); } darray_free(self->parameters); darray_free(self->parameters_names); free(self); } static inline int hkl_mode_initialized_get_real(const HklMode *self) { return self->initialized; } static inline int hkl_mode_initialized_get(const HklMode *self) { return self->ops->initialized_get(self); } static inline int hkl_mode_initialized_set_real(UNUSED HklMode *self, UNUSED HklEngine *engine, UNUSED HklGeometry *geometry, UNUSED HklDetector *detector, UNUSED HklSample *sample, UNUSED int initialized, UNUSED GError **error) { /* by default do nothing and no error */ return TRUE; } static inline int hkl_mode_initialized_set(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error) { return self->ops->initialized_set(self, engine, geometry, detector, sample, initialized, error); } static inline int hkl_mode_get_real(UNUSED HklMode *self, UNUSED HklEngine *engine, UNUSED HklGeometry *geometry, UNUSED HklDetector *detector, UNUSED HklSample *sample, UNUSED GError **error) { /* by default do nothing and no error */ return FALSE; } static inline int hkl_mode_set_real(UNUSED HklMode *self, UNUSED HklEngine *engine, UNUSED HklGeometry *geometry, UNUSED HklDetector *detector, UNUSED HklSample *sample, UNUSED GError **error) { /* by default do nothing and no error */ return FALSE; } static inline int hkl_mode_init(HklMode *self, const HklModeInfo *info, const HklModeOperations *ops, int initialized) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; static inline int hkl_mode_init(HklMode *self, const HklModeInfo *info, const HklModeOperations *ops, int initialized) { const HklParameter *parameter; HklParameter *p; self->info = info; self->ops = ops; /* parameters */ darray_init(self->parameters) ; darray_init(self->parameters_names); darray_foreach(parameter, self->info->parameters){ if(NULL == (p = hkl_parameter_new_copy(parameter))) break; darray_append(self->parameters, p); darray_append(self->parameters_names, parameter->name); } self->initialized = initialized; return TRUE; } static inline HklMode *hkl_mode_new(const HklModeInfo *info, const HklModeOperations *op, int initialized) { HklMode *self = g_new(HklMode, 1); hkl_mode_init(self, info, op, initialized); return self; } /** * hkl_mode_free: (skip) * @self: * * delete an HklMode **/ static inline void hkl_mode_free(HklMode *self) { self->ops->free(self); } /*************/ /* HklEngine */ /*************/ struct _HklEngineInfo { const char *name; const darray(const HklParameter *) pseudo_axes; unsigned int dependencies; }; #define HKL_ENGINE_INFO(_name, _pseudo_axes, _dependencies) .name = (_name), \ .pseudo_axes = DARRAY(_pseudo_axes), \ .dependencies = (_dependencies) struct _HklEngine { const HklEngineInfo *info; const HklEngineOperations *ops; HklGeometry *geometry; HklDetector *detector; HklSample *sample; HklMode *mode; /* not owned */ HklEngineList *engines; /* not owned */ darray_parameter axes; darray_parameter pseudo_axes; darray_string pseudo_axis_names; darray_mode modes; darray_string mode_names; }; struct _HklEngineListInfo { const darray(const HklParameter *) parameters; }; #define HKL_ENGINE_LIST_INFO_DEFAULTS .parameters = darray_new() #define HKL_ENGINE_LIST_INFO(_parameters) .parameters = DARRAY(_parameters) struct _HklEngineListOperations { void (* free)(HklEngineList *self); int (* post_engine_set)(HklEngineList *self); }; #define HKL_ENGINE_LIST_OPERATIONS_DEFAULTS .free=hkl_engine_list_free_real, \ .post_engine_set=hkl_engine_list_post_engine_set_real struct _HklEngineList { _darray(HklEngine *); /* must be the first memeber */ const HklEngineListInfo *info; const HklEngineListOperations *ops; HklGeometryList *geometries; HklGeometry *geometry; HklDetector *detector; HklSample *sample; darray_parameter pseudo_axes; darray_parameter parameters; darray_string parameters_names; }; #define HKL_ENGINE_ERROR hkl_engine_error_quark () static GQuark hkl_engine_error_quark (void) { return g_quark_from_static_string ("hkl-engine-error-quark"); } typedef enum { HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_GET, /* can not get the engine pseudo axes values */ HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_SET, /* can not set the engine pseudo axes values */ HKL_ENGINE_ERROR_PSEUDO_AXIS_SET, /* can not set the pseudo axis */ HKL_ENGINE_ERROR_INITIALIZE, /* can not initialize the engine */ HKL_ENGINE_ERROR_SET, /* can not set the engine */ HKL_ENGINE_ERROR_GET, /* can not get the engine */ HKL_ENGINE_ERROR_PARAMETER_GET, /* can not get the parameter */ HKL_ENGINE_ERROR_PARAMETER_SET, /* can not set the parameter */ HKL_ENGINE_ERROR_CURRENT_MODE_SET, /* can not select the mode */ } HklEngineError; static inline void set_geometry_axes(HklEngine *engine, const double values[]) { HklParameter **axis; uint i = 0; darray_foreach(axis, engine->axes){ hkl_parameter_value_set(*axis, values[i++], HKL_UNIT_DEFAULT, NULL); } hkl_geometry_update(engine->geometry); } static inline void hkl_engine_release(HklEngine *self) { HklMode **mode; if(self->geometry) hkl_geometry_free(self->geometry); if(self->detector) hkl_detector_free(self->detector); if(self->sample) hkl_sample_free(self->sample); /* release the mode added */ darray_foreach(mode, self->modes){ hkl_mode_free(*mode); } darray_free(self->modes); darray_free(self->axes); darray_free(self->pseudo_axes); darray_free(self->pseudo_axis_names); darray_free(self->mode_names); } struct _HklEngineOperations { void (*free)(HklEngine *self); }; #define HKL_ENGINE_OPERATIONS_DEFAULTS .free=hkl_engine_free_real static inline void hkl_engine_free_real(UNUSED HklEngine *self) { } static inline void hkl_engine_free(HklEngine *self) { self->ops->free(self); } static inline void hkl_engine_init(HklEngine *self, const HklEngineInfo *info, const HklEngineOperations *ops, HklEngineList *engines) { self->info = info; self->ops = ops; self->geometry = NULL; self->detector = NULL; self->sample = NULL; self->engines = engines; darray_init(self->axes); darray_init(self->pseudo_axes); darray_init(self->pseudo_axis_names); darray_init(self->modes); darray_init(self->mode_names); darray_append(*engines, self); } static inline HklParameter *register_mode_parameter(HklMode *mode, unsigned int index) { if(index < darray_size(mode->parameters)) return darray_item(mode->parameters, index); else abort(); } static inline HklParameter *register_pseudo_axis(HklEngine *self, HklEngineList *engines, const HklParameter *pseudo_axis) { HklParameter **param; HklParameter *parameter; /* try to find an already existing pseudo axis in the list. */ darray_foreach(param, engines->pseudo_axes){ if(!strcmp(pseudo_axis->name, (*param)->name)){ parameter = *param; goto out; } } parameter = hkl_parameter_new_copy(pseudo_axis); darray_append(engines->pseudo_axes, parameter); out: darray_append(self->pseudo_axes, parameter); darray_append(self->pseudo_axis_names, parameter->name); return parameter; } /** * hkl_engine_add_mode: (skip) * @self: * @mode: the mode to add * * add an HklMode to the self HklEngine **/ static inline void hkl_engine_add_mode(HklEngine *self, HklMode *mode) HKL_ARG_NONNULL(1, 2); static inline void hkl_engine_add_mode(HklEngine *self, HklMode *mode) { darray_append(self->modes, mode); darray_append(self->mode_names, mode->info->name); } /** * hkl_engine_add_geometry: (skip) * @self: the current PseudoAxeEngine * @x: x A vector of double with the axes values to put in the geometry. * * This method try to be clever by allocating memory only if the * current length of the geometries is not large enought. Then it just * set the geometry axes and copy it to the right geometries. We do * not gives the x len as it is equal to the self->axes_len. * **/ static inline void hkl_engine_add_geometry(HklEngine *self, double const x[]) { HklParameter **axis; uint i = 0; /* copy the axes configuration into the engine->geometry */ darray_foreach(axis, self->axes){ hkl_parameter_value_set(*axis, gsl_sf_angle_restrict_symm(x[i++]), HKL_UNIT_DEFAULT, NULL); } hkl_geometry_list_add(self->engines->geometries, self->geometry); } static inline void hkl_engine_prepare_internal(HklEngine *self) { if(!self || !self->engines) return; /* set */ if(self->geometry) hkl_geometry_free(self->geometry); self->geometry = hkl_geometry_new_copy(self->engines->geometry); if(self->detector) hkl_detector_free(self->detector); self->detector = hkl_detector_new_copy(self->engines->detector); if(self->sample) hkl_sample_free(self->sample); self->sample = hkl_sample_new_copy(self->engines->sample); /* fill the axes member from the function */ if(self->mode){ const char **axis_name; darray_free(self->axes); darray_init(self->axes); darray_foreach(axis_name, self->mode->info->axes_w){ HklParameter *axis = hkl_geometry_get_axis_by_name(self->geometry, *axis_name); darray_append(self->axes, axis); } } /* reset the geometries len */ hkl_geometry_list_reset(self->engines->geometries); } /** * hkl_engine_mode_set: (skip) * @self: the HklEngine * @name: the mode to select * * This method also populate the self->axes from the mode->axis_names. * this is to speed the computation of the numerical axes. **/ static inline void hkl_engine_mode_set(HklEngine *self, HklMode *mode) { self->mode = mode; } static inline int hkl_engine_get(HklEngine *self, GError **error) HKL_ARG_NONNULL(1); /** * hkl_engine_get: (skip) * @self: The HklEngine * @error: return location for a GError, or NULL * * get the values of the pseudo-axes from the real-axes values * * return value: TRUE if succeded or FALSE otherwise. **/ static inline int hkl_engine_get(HklEngine *self, GError **error) { hkl_error (error == NULL || *error == NULL); if(!self->engines || !self->engines->geometry || !self->engines->detector || !self->engines->sample || !self->mode || !self->mode->ops->get){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_GET, "Internal error"); return FALSE; } if (!self->mode->ops->get(self->mode, self, self->engines->geometry, self->engines->detector, self->engines->sample, error)){ hkl_assert(error == NULL || *error != NULL); return FALSE; } hkl_assert(error == NULL || *error == NULL); return TRUE; } /** * hkl_engine_list_post_process_free: (skip) * @self: the #HklEngineList to modify * * apply a post set method. **/ static int hkl_engine_list_post_engine_set(HklEngineList *self) { return self->ops->post_engine_set(self); } /** * hkl_engine_set: (skip) * @self: the HklEngine * @error: return location for a GError, or NULL * * use the HklPseudoaxisEngine values to compute the real axes values. * * return value: TRUE if succeded or FALSE otherwise. **/ static inline int hkl_engine_set(HklEngine *self, GError **error) { hkl_error (error == NULL || *error == NULL); if(!self->geometry || !self->detector || !self->sample || !self->mode || !self->mode->ops->set){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_SET, "Internal error"); return FALSE; } hkl_engine_prepare_internal(self); if (!self->mode->ops->set(self->mode, self, self->geometry, self->detector, self->sample, error)){ hkl_assert(error == NULL || *error != NULL); return FALSE; } hkl_assert(error == NULL || *error == NULL); hkl_geometry_list_multiply(self->engines->geometries); hkl_engine_list_post_engine_set(self->engines); hkl_geometry_list_multiply_from_range(self->engines->geometries); hkl_geometry_list_remove_invalid(self->engines->geometries); hkl_geometry_list_sort(self->engines->geometries, self->engines->geometry); if(self->engines->geometries->n_items == 0){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_SET, "no remaining solutions"); return FALSE; } return TRUE; } /* HklEngineList */ #define HKL_ENGINE_LIST_ERROR hkl_engine_list_error_quark () static inline GQuark hkl_engine_list_error_quark (void) { return g_quark_from_static_string ("hkl-engine-list-error-quark"); } typedef enum { HKL_ENGINE_LIST_ERROR_ENGINE_GET_BY_NAME, /* can not set this geometry */ HKL_ENGINE_LIST_ERROR_PSEUDO_AXIS_GET_BY_NAME, /* can not set this geometry */ HKL_ENGINE_LIST_ERROR_PARAMETER_GET, /* can not get the parameter */ HKL_ENGINE_LIST_ERROR_PARAMETER_SET, /* can not set the parameter */ } HklEngineListError; /** * hkl_engine_list_clear: (skip) * @self: the engine list to clear * * remove all engine from the engine list **/ static inline void hkl_engine_list_clear(HklEngineList *self) { HklEngine **engine; HklParameter **parameter; darray_foreach(engine, *self){ hkl_engine_free(*engine); } darray_free(*self); darray_foreach(parameter, self->pseudo_axes){ hkl_parameter_free(*parameter); } darray_free(self->pseudo_axes); darray_foreach(parameter, self->parameters){ hkl_parameter_free(*parameter); } darray_free(self->parameters); darray_free(self->parameters_names); } /** * hkl_engine_list_free_real: (skip) * @self: the #HklEngineList to destroy * * destructor **/ static inline void hkl_engine_list_free_real(HklEngineList *self) { hkl_engine_list_clear(self); hkl_geometry_list_free(self->geometries); free(self); } /** * hkl_engine_list_post_process_real: (skip) * @self: the #HklEngineList to destroy * * destructor **/ static inline int hkl_engine_list_post_engine_set_real(UNUSED HklEngineList *self) { return FALSE; } /** * hkl_engine_list_new_with_info: (skip) * @info: the info part of the HklEngineList * * default constructor with info part * * Returns: **/ static inline HklEngineList *hkl_engine_list_new_with_info(const HklEngineListInfo *info, const HklEngineListOperations *ops) { HklEngineList *self = g_new(HklEngineList, 1); /* This code needs _darray to be at start of HklEngineList */ BUILD_ASSERT(offsetof(HklEngineList, item) == 0); darray_init(*self); self->info = info; self->ops = ops; self->geometries = hkl_geometry_list_new(); self->geometry = NULL; self->detector = NULL; self->sample = NULL; darray_init(self->pseudo_axes); darray_init(self->parameters); darray_init(self->parameters_names); for(size_t i=0; iinfo->parameters); ++i){ HklParameter *p = hkl_parameter_new_copy(darray_item(self->info->parameters, i)); if (NULL != p){ darray_append(self->parameters, p); darray_append(self->parameters_names, p->name); } }; return self; } /** * hkl_engine_list_new: (skip) * * default constructor * * Returns: **/ static inline HklEngineList *hkl_engine_list_new(void) { static const HklEngineListInfo info = {HKL_ENGINE_LIST_INFO_DEFAULTS}; static const HklEngineListOperations ops = {HKL_ENGINE_LIST_OPERATIONS_DEFAULTS}; return hkl_engine_list_new_with_info(&info, &ops); } /** * hkl_engine_list_new_copy: (skip) * @self: * * dummy copy constructor for the binding * * Returns: (transfer none): NULL all the time the structure is non-copyable **/ static inline HklEngineList *hkl_engine_list_new_copy(UNUSED const HklEngineList *self) { return NULL; } G_END_DECLS #endif /* __HKL_PSEUDOAXIS_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-engine-soleil-sirius-turret.c0000664000175000017500000001154414677222567020402 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_engine_hkl_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #define BASEPITCH "basepitch" #define THETAH "thetah" #define ALPHAY "alphay" #define ALPHAX "alphax" #define DELTA "delta" #define GAMMA "gamma" /************/ /* mode hkl */ /************/ static HklMode* lifting_detector_thetah() { static const char *axes_r[] = {BASEPITCH, THETAH, ALPHAY, ALPHAX, DELTA, GAMMA}; static const char* axes_w[] = {THETAH, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklEngine *hkl_engine_soleil_sirius_turret_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = lifting_detector_thetah(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_soleil_sirius_turret_incidence_new, P99_PROTECT({BASEPITCH, THETAH, ALPHAY, ALPHAX}), surface_parameters_z); REGISTER_READONLY_EMERGENCE(hkl_engine_soleil_sirius_turret_emergence_new, P99_PROTECT({BASEPITCH, THETAH, ALPHAY, ALPHAX, DELTA, GAMMA}), surface_parameters_z); /************************/ /* SOLEIL SIRIUS TURRET */ /************************/ #define HKL_GEOMETRY_TYPE_SOLEIL_SIRIUS_TURRET_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" BASEPITCH "** : rotation around the :math:`\\vec{y}` direction (0, 1, 0)\n" \ " + **" THETAH "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" ALPHAY "** : rotation around the :math:`\\vec{y}` direction (0, 1, 0)\n" \ " + **" ALPHAX "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" BASEPITCH "** : rotation around the :math:`\\vec{y}` direction (0, 1, 0)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, 0, -1)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, -1, 0)\n" static const char* hkl_geometry_soleil_sirius_turret_axes[] = {BASEPITCH, THETAH, ALPHAY, ALPHAX, DELTA, GAMMA}; static HklGeometry *hkl_geometry_new_soleil_sirius_turret(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BASEPITCH, 0, 1, 0, &hkl_unit_angle_mrad); hkl_holder_add_rotation(h, THETAH, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ALPHAY, 0, 1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ALPHAX, 1, 0, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BASEPITCH, 0, 1, 0, &hkl_unit_angle_mrad); hkl_holder_add_rotation(h, DELTA, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_sirius_turret(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_soleil_sirius_turret_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_soleil_sirius_turret_incidence_new(self); hkl_engine_soleil_sirius_turret_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sirius_turret, "SOLEIL SIRIUS TURRET", HKL_GEOMETRY_TYPE_SOLEIL_SIRIUS_TURRET_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-common.c0000664000175000017500000001346215133715013016441 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #include "hkl-detector-private.h" // for hkl_detector_compute_kf #include "hkl-geometry-private.h" // for HklHolder, _HklGeometry, etc #include "hkl-matrix-private.h" // for hkl_matrix_times_vector, etc #include "hkl-pseudoaxis-common-readonly-private.h" // for HklEngineHkl #include "hkl-sample-private.h" // for _HklSample #include "hkl-vector-private.h" // for HklVector, etc /*******/ /* hkl */ /*******/ struct HklHklRead { HklVector ki; HklVector kf; HklVector Q; HklVector hkl; }; struct HklHklRead hkl_hkl_read(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample) { struct HklHklRead result; HklMatrix RUB; HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); result.ki = hkl_geometry_ki_get(geometry); result.kf = hkl_geometry_kf_get(geometry, detector); result.Q = result.kf; hkl_vector_minus_vector(&result.Q, &result.ki); /* R * UB */ hkl_quaternion_to_matrix(&sample_holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &sample->UB); hkl_matrix_solve(&RUB, &result.hkl, &result.Q); return result; } struct HklHklWrite { HklVector ki; HklVector kf; HklVector Q; HklVector hkl; HklVector dQ; }; struct HklHklWrite hkl_hkl_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl) { struct HklHklWrite result; HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); result.ki = hkl_geometry_ki_get(geometry); result.kf = hkl_geometry_kf_get(geometry, detector); result.Q = result.kf; hkl_vector_minus_vector(&result.Q, &result.ki); result.hkl = *hkl; hkl_matrix_times_vector(&sample->UB, &result.hkl); /* Hkl = hkl_holder_transformation_apply(sample_holder, &Hkl); */ hkl_vector_rotated_quaternion(&result.hkl, &sample_holder->q); result.dQ = result.Q; hkl_vector_minus_vector(&result.dQ, &result.hkl); return result; } /**************************/ /* hkl double_diffraction */ /**************************/ struct HklDoubleDiffractionWrite { struct HklHklWrite hkl1W; struct HklHklWrite hkl2W; HklVector kf2; }; struct HklDoubleDiffractionWrite hkl_double_diffraction_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl1, const HklVector *hkl2) { struct HklDoubleDiffractionWrite result; result.hkl1W = hkl_hkl_write(geometry, detector, sample, hkl1); result.hkl2W = hkl_hkl_write(geometry, detector, sample, hkl2); result.kf2 = result.hkl2W.hkl; hkl_vector_add_vector(&result.kf2, &result.hkl2W.ki); return result; } /******************************************/ /* the psi_constant_vertical get set part */ /******************************************/ struct HklPsiWrite { struct HklHklWrite hklW; struct HklHklWrite hkl2W; HklVector Qn; /* Q normalized */ HklVector hkl2; /* projection of hkl2 on plan Q */ HklVector n; /* compute n the intersection of the plan P(kf, ki) and PQn (normal Qn) */ double psi; /* computed psi */ int status; }; struct HklPsiWrite hkl_psi_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl, const HklVector *hkl2) { struct HklPsiWrite result; result.hklW = hkl_hkl_write(geometry, detector, sample, hkl); result.Qn = result.hklW.Q; result.status = hkl_vector_normalize(&result.Qn); /* if |Q| > epsilon ok */ if (result.status){ result.hkl2W = hkl_hkl_write(geometry, detector, sample, hkl2); /* project hkl on the plan of normal Q */ result.hkl2 = result.hkl2W.hkl; hkl_vector_project_on_plan(&result.hkl2, &result.Qn); /* compute n the intersection of the plan P(kf, ki) and PQ (normal Q) */ result.n = result.hklW.kf; hkl_vector_vectorial_product(&result.n, &result.hklW.ki); hkl_vector_vectorial_product(&result.n, &result.Qn); /* compute psi */ result.psi = hkl_vector_oriented_angle(&result.n, &result.hkl2, &result.Qn); } return result; } /***********************/ /* hkl emergence fixed */ /***********************/ struct HklEmergenceFixedWrite { struct HklHklWrite hklW; HklVector n; /* the surface orientation */ double emergence; /* the computed emergence */ }; struct HklEmergenceFixedWrite hkl_emergence_fixed_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl, const HklVector *n) { struct HklEmergenceFixedWrite result; const HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); result.hklW = hkl_hkl_write(geometry, detector, sample, hkl); /* compute the orientation of the surface */ result.n = *n; hkl_vector_rotated_quaternion(&result.n, &sample_holder->q); result.emergence = _emergence(&result.n, &result.hklW.kf); return result; } hkl-5.1.7/hkl/hkl-lattice.c0000664000175000017500000006255714677222567014450 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2023, 2024 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for cos, sin, M_PI, atan2, sqrt #include // for fprintf, FILE #include // for NULL, free #include "hkl-lattice-private.h" // for _HklLattice #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-matrix-private.h" // for _HklMatrix #include "hkl-parameter-private.h" // for hkl_parameter_init_copy, etc #include "hkl-unit-private.h" // for hkl_unit_length_nm, etc #include "hkl-vector-private.h" // for hkl_vector_angle, etc #include "hkl.h" // for HklLattice, etc /* private */ static double convert_to_default(const HklParameter *p, double value, HklUnitEnum unit_type) { switch(unit_type){ case HKL_UNIT_DEFAULT: return value; case HKL_UNIT_USER: return value / hkl_unit_factor(p->unit, p->punit); default: return NAN; } } static int check_lattice_param(double a, double b, double c, double alpha, double beta, double gamma, double *volume, GError **error) { hkl_error (error == NULL || *error == NULL); double D = 1. - cos(alpha)*cos(alpha) - cos(beta)*cos(beta) - cos(gamma)*cos(gamma) + 2. * cos(alpha)*cos(beta)*cos(gamma); if (D < 0.){ g_set_error(error, HKL_LATTICE_ERROR, HKL_LATTICE_CHECK_LATTICE, "these lattice parameters are not valid, check alpha, beta and gamma"); return FALSE; }else{ *volume = a * b * c * sqrt(D); return TRUE; } } /* public */ /** * hkl_lattice_new: * @a: the length of the a parameter * @b: the length of the b parameter * @c: the length of the c parameter * @alpha: the angle between b and c (radian) * @beta: the angle between a and c (radian) * @gamma: the angle between a and b (radian) * @error: return location for a GError, or NULL * * constructor * * Returns: a new HklLattice **/ HklLattice *hkl_lattice_new(double a, double b, double c, double alpha, double beta, double gamma, GError **err) { HklLattice *self = NULL; HklParameter *parameter = NULL; double volume; g_return_val_if_fail (err == NULL || *err == NULL, NULL); if(!check_lattice_param(a, b, c, alpha, beta, gamma, &volume, err)) { hkl_assert (err == NULL || *err != NULL); return FALSE; } hkl_assert (err == NULL || *err == NULL); self = g_new(HklLattice, 1); /* a */ parameter = hkl_parameter_new("a", "The length of the first lattice vector", 0, a, a+10, TRUE, TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto failed; }else{ self->a = parameter; } /* b */ parameter = hkl_parameter_new("b", "The length of the second lattice vector", 0, b, b+10, TRUE, TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_a; }else{ self->b = parameter; } /* c */ parameter = hkl_parameter_new("c", "The length of the third lattice vector", 0, c, c+10, TRUE, TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_b; }else{ self->c = parameter; } /* alpha */ parameter = hkl_parameter_new("alpha", "The angle between the second and third lattice vector", -M_PI, alpha, M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_c; }else{ self->alpha = parameter; } /* beta */ parameter = hkl_parameter_new("beta", "The angle between the first and third lattice vector", -M_PI, beta, M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_alpha; }else{ self->beta = parameter; } /* gamma */ parameter = hkl_parameter_new("gamma", "The angle between the first and second lattice vector", -M_PI, gamma, M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_beta; }else{ self->gamma = parameter; } /* volume */ parameter = hkl_parameter_new("volume", "The volume of the lattice", 0, volume, a*b*c, FALSE, FALSE, &hkl_unit_length_nm, &hkl_unit_length_nm, err); if (!parameter) { hkl_assert (err == NULL || *err != NULL); goto free_gamma; }else{ self->volume = parameter; } return self; free_gamma: hkl_parameter_free(self->gamma); free_beta: hkl_parameter_free(self->beta); free_alpha: hkl_parameter_free(self->alpha); free_c: hkl_parameter_free(self->c); free_b: hkl_parameter_free(self->b); free_a: hkl_parameter_free(self->a); failed: return FALSE; } /** * hkl_lattice_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklLattice *hkl_lattice_new_copy(const HklLattice *self) { HklLattice *copy = g_new(HklLattice, 1); copy->a = hkl_parameter_new_copy(self->a); copy->b = hkl_parameter_new_copy(self->b); copy->c = hkl_parameter_new_copy(self->c); copy->alpha = hkl_parameter_new_copy(self->alpha); copy->beta = hkl_parameter_new_copy(self->beta); copy->gamma = hkl_parameter_new_copy(self->gamma); copy->volume = hkl_parameter_new_copy(self->volume); return copy; } /** * hkl_lattice_new_default: (skip) * * default constructor * * Returns: **/ HklLattice* hkl_lattice_new_default(void) { return hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, NULL); } /** * hkl_lattice_free: (skip) * @self: * * destructor **/ void hkl_lattice_free(HklLattice *self) { hkl_parameter_free(self->a); hkl_parameter_free(self->b); hkl_parameter_free(self->c); hkl_parameter_free(self->alpha); hkl_parameter_free(self->beta); hkl_parameter_free(self->gamma); hkl_parameter_free(self->volume); free(self); } #define HKL_LATTICE_X_SET(_p, _parameter, _error) do{ \ hkl_error ((_error) == NULL || *(_error) == NULL); \ double a, b, c, alpha, beta, gamma; \ /* check if the combinaison of parameters is ok */ \ hkl_lattice_get(self, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_DEFAULT); \ _p = hkl_parameter_value_get((_parameter), HKL_UNIT_DEFAULT); \ \ if(!hkl_lattice_set(self, a, b, c, alpha, beta, gamma, HKL_UNIT_DEFAULT, (_error))){ \ hkl_assert ((_error) == NULL || *(_error) != NULL); \ return FALSE; \ } \ hkl_assert ((_error) == NULL || *(_error) == NULL); \ return hkl_parameter_init_copy(self->_p, (_parameter), (_error)); \ }while(0) /** * hkl_lattice_a_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_a_get(const HklLattice *self) { return self->a; } /** * hkl_lattice_a_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_a_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(a, parameter, error); } /** * hkl_lattice_b_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_b_get(const HklLattice *self) { return self->b; } /** * hkl_lattice_b_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_b_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(b, parameter, error); } /** * hkl_lattice_c_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_c_get(const HklLattice *self) { return self->c; } /** * hkl_lattice_c_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_c_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(c, parameter, error); } /** * hkl_lattice_alpha_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_alpha_get(const HklLattice *self) { return self->alpha; } /** * hkl_lattice_alpha_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_alpha_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(alpha, parameter, error); } /** * hkl_lattice_beta_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_beta_get(const HklLattice *self) { return self->beta; } /** * hkl_lattice_beta_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_beta_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(beta, parameter, error); } /** * hkl_lattice_gamma_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_gamma_get(const HklLattice *self) { return self->gamma; } /** * hkl_lattice_gamma_set: * @self: the this ptr * @parameter: the parameter to set * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_lattice_gamma_set(HklLattice *self, const HklParameter *parameter, GError **error) { HKL_LATTICE_X_SET(gamma, parameter, error); } /** * hkl_lattice_volume_get: * @self: the this ptr **/ const HklParameter *hkl_lattice_volume_get(const HklLattice *self) { return self->volume; } /** * hkl_lattice_lattice_set: (skip) * @self: the this ptr * @lattice: the lattice to set from. **/ void hkl_lattice_lattice_set(HklLattice *self, const HklLattice *lattice) { if (self == lattice) return; hkl_parameter_init_copy(self->a, lattice->a, NULL); hkl_parameter_init_copy(self->b, lattice->b, NULL); hkl_parameter_init_copy(self->c, lattice->c, NULL); hkl_parameter_init_copy(self->alpha, lattice->alpha, NULL); hkl_parameter_init_copy(self->beta, lattice->beta, NULL); hkl_parameter_init_copy(self->gamma, lattice->gamma, NULL); hkl_parameter_init_copy(self->volume, lattice->volume, NULL); } /** * hkl_lattice_set: * @self: * @a: * @b: * @c: * @alpha: * @beta: * @gamma: * * set the lattice parameters * * Returns: **/ int hkl_lattice_set(HklLattice *self, double a, double b, double c, double alpha, double beta, double gamma, HklUnitEnum unit_type, GError **error) { hkl_error (error == NULL || *error == NULL); double previous_a = hkl_parameter_value_get(self->a, HKL_UNIT_DEFAULT); double previous_b = hkl_parameter_value_get(self->b, HKL_UNIT_DEFAULT); double previous_c = hkl_parameter_value_get(self->c, HKL_UNIT_DEFAULT); double previous_alpha = hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT); double previous_beta = hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT); double previous_gamma = hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT); double new_a = convert_to_default(self->a, a, unit_type); double new_b = convert_to_default(self->b, b, unit_type); double new_c = convert_to_default(self->c, c, unit_type); double new_alpha = convert_to_default(self->alpha, alpha, unit_type); double new_beta = convert_to_default(self->beta, beta, unit_type); double new_gamma = convert_to_default(self->gamma, gamma, unit_type); double new_volume; /* need to do the conversion before the check */ if(!check_lattice_param(new_a, new_b, new_c, new_alpha, new_beta, new_gamma, &new_volume, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } hkl_assert (error == NULL || *error == NULL); /* check a */ if(!hkl_parameter_value_set(self->a, new_a, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto failed; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->b, new_b, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_a; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->c, new_c, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_b; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->alpha, new_alpha, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_c; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->beta, new_beta, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_alpha; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->gamma, new_gamma, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_beta; } hkl_assert (error == NULL || *error == NULL); if(!hkl_parameter_value_set(self->volume, new_volume, HKL_UNIT_DEFAULT, NULL)){ hkl_assert (error == NULL || *error != NULL); goto restore_gamma; } hkl_assert (error == NULL || *error == NULL); return TRUE; restore_gamma: IGNORE(hkl_parameter_value_set(self->gamma, previous_gamma, HKL_UNIT_DEFAULT, NULL)); restore_beta: IGNORE(hkl_parameter_value_set(self->beta, previous_beta, HKL_UNIT_DEFAULT, NULL)); restore_alpha: IGNORE(hkl_parameter_value_set(self->alpha, previous_alpha, HKL_UNIT_DEFAULT, NULL)); restore_c: IGNORE(hkl_parameter_value_set(self->c, previous_c, HKL_UNIT_DEFAULT, NULL)); restore_b: IGNORE(hkl_parameter_value_set(self->b, previous_b, HKL_UNIT_DEFAULT, NULL)); restore_a: IGNORE(hkl_parameter_value_set(self->a, previous_a, HKL_UNIT_DEFAULT, NULL)); failed: return FALSE; } /** * hkl_lattice_get: * @self: * @a: (out caller-allocates): * @b: (out caller-allocates): * @c: (out caller-allocates): * @alpha: (out caller-allocates): * @beta: (out caller-allocates): * @gamma: (out caller-allocates): * * get the lattice parameters **/ void hkl_lattice_get(const HklLattice *self, double *a, double *b, double *c, double *alpha, double *beta, double *gamma, HklUnitEnum unit_type) { *a = hkl_parameter_value_get(self->a, unit_type); *b = hkl_parameter_value_get(self->b, unit_type); *c = hkl_parameter_value_get(self->c, unit_type); *alpha = hkl_parameter_value_get(self->alpha, unit_type); *beta = hkl_parameter_value_get(self->beta, unit_type); *gamma = hkl_parameter_value_get(self->gamma, unit_type); } /** * hkl_lattice_get_B: (skip) * @self: * @B: (out): where to store the B matrix * * Get the B matrix from the lattice parameters * * Returns: **/ int hkl_lattice_get_B(const HklLattice *self, HklMatrix *B) { double D; double c_alpha, s_alpha; double c_beta, s_beta; double c_gamma, s_gamma; double b11, b22, tmp; c_alpha = cos(hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); c_beta = cos(hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); c_gamma = cos(hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); D = 1 - c_alpha*c_alpha - c_beta*c_beta - c_gamma*c_gamma + 2*c_alpha*c_beta*c_gamma; if (D > 0.) D = sqrt(D); else return FALSE; s_alpha = sin(hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); s_beta = sin(hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); s_gamma = sin(hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); b11 = HKL_TAU / (hkl_parameter_value_get(self->b, HKL_UNIT_DEFAULT) * s_alpha); b22 = HKL_TAU / hkl_parameter_value_get(self->c, HKL_UNIT_DEFAULT); tmp = b22 / s_alpha; B->data[0][0] = HKL_TAU * s_alpha / (hkl_parameter_value_get(self->a, HKL_UNIT_DEFAULT) * D); B->data[0][1] = b11 / D * (c_alpha*c_beta - c_gamma); B->data[0][2] = tmp / D * (c_gamma*c_alpha - c_beta); B->data[1][0] = 0; B->data[1][1] = b11; B->data[1][2] = tmp / (s_beta*s_gamma) * (c_beta*c_gamma - c_alpha); B->data[2][0] = 0; B->data[2][1] = 0; B->data[2][2] = b22; return TRUE; } /** * hkl_lattice_get_1_B: (skip) * @self: the @HklLattice * @B: (out): where to store the 1/B matrix * * Compute the invert of B (needed by the hkl_sample_UB_set method) * should be optimized * * Returns: TRUE or FALSE depending of the success of the * computation. **/ int hkl_lattice_get_1_B(const HklLattice *self, HklMatrix *B) { HklMatrix tmp; double a; double b; double c; double d; double e; double f; /* * first compute the B matrix * | a b c | * | 0 d e | * | 0 0 f | */ hkl_lattice_get_B(self, &tmp); /* * now invert this triangular matrix */ a = tmp.data[0][0]; b = tmp.data[0][1]; c = tmp.data[0][2]; d = tmp.data[1][1]; e = tmp.data[1][2]; f = tmp.data[2][2]; B->data[0][0] = 1 / a; B->data[0][1] = -b / a / d; B->data[0][2] = (b * e - d * c) / a / d / f; B->data[1][0] = 0; B->data[1][1] = 1 / d; B->data[1][2] = -e / d / f; B->data[2][0] = 0; B->data[2][1] = 0; B->data[2][2] = 1 / f; return TRUE; } /** * hkl_lattice_reciprocal: * @self: the this ptr * @reciprocal: the lattice where the result will be computed * * compute the reciprocal #HklLattice and put the result id the * provided @reciprocal parameter * * Returns: 0 or 1 if it succeed. **/ int hkl_lattice_reciprocal(const HklLattice *self, HklLattice *reciprocal) { double c_alpha, c_beta, c_gamma; double s_alpha, s_beta, s_gamma; double c_beta1, c_beta2, c_beta3; double s_beta1, s_beta2, s_beta3; double s_beta_s_gamma, s_gamma_s_alpha, s_alpha_s_beta; double D; c_alpha = cos(hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); c_beta = cos(hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); c_gamma = cos(hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); D = 1 - c_alpha*c_alpha - c_beta*c_beta - c_gamma*c_gamma + 2*c_alpha*c_beta*c_gamma; if (D > 0.) D = sqrt(D); else return FALSE; s_alpha = sin(hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); s_beta = sin(hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); s_gamma = sin(hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); s_beta_s_gamma = s_beta * s_gamma; s_gamma_s_alpha = s_gamma * s_alpha; s_alpha_s_beta = s_alpha * s_beta; c_beta1 = (c_beta * c_gamma - c_alpha) / s_beta_s_gamma; c_beta2 = (c_gamma * c_alpha - c_beta) / s_gamma_s_alpha; c_beta3 = (c_alpha * c_beta - c_gamma) / s_alpha_s_beta; s_beta1 = D / s_beta_s_gamma; s_beta2 = D / s_gamma_s_alpha; s_beta3 = D / s_alpha_s_beta; IGNORE(hkl_lattice_set(reciprocal, HKL_TAU * s_alpha / (hkl_parameter_value_get(self->a, HKL_UNIT_DEFAULT) * D), HKL_TAU * s_beta / (hkl_parameter_value_get(self->b, HKL_UNIT_DEFAULT) * D), HKL_TAU * s_gamma / (hkl_parameter_value_get(self->c, HKL_UNIT_DEFAULT) * D), atan2(s_beta1, c_beta1), atan2(s_beta2, c_beta2), atan2(s_beta3, c_beta3), HKL_UNIT_DEFAULT, NULL)); return TRUE; } /** * hkl_lattice_randomize: (skip) * @self: * * randomize the lattice **/ void hkl_lattice_randomize(HklLattice *self) { static HklVector vector_x = {{1, 0, 0}}; HklVector a, b, c; HklVector axe; unsigned int angles_to_randomize; /* La valeur des angles alpha, beta et gamma ne sont pas indépendant. */ /* Il faut donc gérer les différents cas. */ hkl_parameter_randomize(self->a); hkl_parameter_randomize(self->b); hkl_parameter_randomize(self->c); angles_to_randomize = self->alpha->fit + self->beta->fit + self->gamma->fit; switch (angles_to_randomize) { case 0: break; case 1: if (self->alpha->fit) { /* alpha */ a = b = c = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); /* compute the alpha angle. */ IGNORE(hkl_parameter_value_set(self->alpha, hkl_vector_angle(&b, &c), HKL_UNIT_DEFAULT, NULL)); } else if (self->beta->fit) { /* beta */ a = b = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); /* randomize c */ c = b; hkl_vector_randomize_vector(&axe, &b); hkl_vector_rotated_around_vector(&c, &axe, hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); /* compute beta */ IGNORE(hkl_parameter_value_set(self->beta, hkl_vector_angle(&a, &c), HKL_UNIT_DEFAULT, NULL)); } else { /* gamma */ a = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); /* randomize b */ b = c; hkl_vector_randomize_vector(&axe, &c); hkl_vector_rotated_around_vector(&b, &axe, hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); /* compute gamma */ IGNORE(hkl_parameter_value_set(self->gamma, hkl_vector_angle(&a, &b), HKL_UNIT_DEFAULT, NULL)); } break; case 2: if (self->alpha->fit) { if (self->beta->fit) { /* alpha + beta */ a = b = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, hkl_parameter_value_get(self->gamma, HKL_UNIT_DEFAULT)); /* randomize c */ hkl_vector_randomize_vector_vector(&c, &a, &b); IGNORE(hkl_parameter_value_set(self->alpha, hkl_vector_angle(&b, &c), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->beta, hkl_vector_angle(&a, &c), HKL_UNIT_DEFAULT, NULL)); } else { /* alpha + gamma */ a = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, hkl_parameter_value_get(self->beta, HKL_UNIT_DEFAULT)); /* randomize c */ hkl_vector_randomize_vector_vector(&b, &a, &c); IGNORE(hkl_parameter_value_set(self->alpha, hkl_vector_angle(&b, &c), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->gamma, hkl_vector_angle(&a, &b), HKL_UNIT_DEFAULT, NULL)); } } else { /* beta + gamma */ b = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &b); hkl_vector_rotated_around_vector(&c, &axe, hkl_parameter_value_get(self->alpha, HKL_UNIT_DEFAULT)); /* randomize c */ hkl_vector_randomize_vector_vector(&a, &b, &c); IGNORE(hkl_parameter_value_set(self->beta, hkl_vector_angle(&a, &c), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->gamma, hkl_vector_angle(&a, &b), HKL_UNIT_DEFAULT, NULL)); } break; case 3: hkl_vector_randomize(&a); hkl_vector_randomize_vector(&b, &a); hkl_vector_randomize_vector_vector(&c, &b, &a); IGNORE(hkl_parameter_value_set(self->alpha, hkl_vector_angle(&b, &c), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->beta, hkl_vector_angle(&a, &c), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->gamma, hkl_vector_angle(&a, &b), HKL_UNIT_DEFAULT, NULL)); break; } } /** * hkl_lattice_fprintf: (skip) * @f: * @self: * * print into a file the lattice. **/ void hkl_lattice_fprintf(FILE *f, HklLattice const *self) { fprintf(f, "\n"); hkl_parameter_fprintf(f, self->a); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->b); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->c); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->alpha); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->beta); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->gamma); } hkl-5.1.7/hkl/hkl-engine-e4c.c0000664000175000017500000002452714677222567014734 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #define OMEGA "omega" #define CHI "chi" #define PHI "phi" #define TTH "tth" /************/ /* mode hkl */ /************/ static int _bissector_func(const gsl_vector *x, void *params, gsl_vector *f) { const double omega = x->data[0]; const double tth = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = tth - 2 * fmod(omega,M_PI); return GSL_SUCCESS; } static const HklFunction bissector_func = { .function = _bissector_func, .size = 4, }; static HklMode *bissector(void) { static const char* axes[] = {OMEGA, CHI, PHI, TTH}; static const HklFunction *functions[] = {&bissector_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes, axes, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *constant_omega(void) { static const char* axes_r[] = {OMEGA, CHI, PHI, TTH}; static const char* axes_w[] = {CHI, PHI, TTH}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *constant_chi(void) { static const char* axes_r[] = {OMEGA, CHI, PHI, TTH}; static const char* axes_w[] = {OMEGA, PHI, TTH}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *constant_phi(void) { static const char* axes_r[] = {OMEGA, CHI, PHI, TTH}; static const char* axes_w[] = {OMEGA, CHI, TTH}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *double_diffraction(void) { static const char* axes[] = {OMEGA, CHI, PHI, TTH}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *psi_constant(void) { static const char* axes[] = {OMEGA, CHI, PHI, TTH}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklEngine *hkl_engine_e4c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega()); hkl_engine_add_mode(self, constant_chi()); hkl_engine_add_mode(self, constant_phi()); hkl_engine_add_mode(self, double_diffraction()); hkl_engine_add_mode(self, psi_constant()); return self; } /************/ /* mode psi */ /************/ static HklMode *psi(void) { static const char *axes[] = {OMEGA, CHI, PHI, TTH}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes, axes, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_e4c_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_e4c_incidence_new, P99_PROTECT({OMEGA, CHI, PHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_e4c_emergence_new, P99_PROTECT({OMEGA, CHI, PHI, TTH}), surface_parameters_y); /********/ /* E4CV */ /********/ #define HKL_GEOMETRY_EULERIAN4C_VERTICAL_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 1 axis for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_eulerian4C_vertical_axes[] = {OMEGA, CHI, PHI, TTH}; static HklGeometry *hkl_geometry_new_eulerian4C_vertical(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_eulerian4C_vertical(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_e4c_hkl_new(self); hkl_engine_e4c_psi_new(self); hkl_engine_q_new(self); hkl_engine_e4c_incidence_new(self); hkl_engine_e4c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(eulerian4C_vertical, "E4CV", HKL_GEOMETRY_EULERIAN4C_VERTICAL_DESCRIPTION); /***************/ /* SOLEIL MARS */ /***************/ #define HKL_GEOMETRY_TYPE_SOLEIL_MARS_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" OMEGA "** : rotating around the :math:`\\vec{z}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (-1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 1 axis for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`\\vec{z}` direction (0, -1, 0)\n" static const char* hkl_geometry_soleil_mars_axes[] = {OMEGA, CHI, PHI, TTH}; static HklGeometry *hkl_geometry_new_soleil_mars(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, -1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 0, 1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_mars(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_e4c_hkl_new(self); hkl_engine_e4c_psi_new(self); hkl_engine_q_new(self); hkl_engine_e4c_incidence_new(self); hkl_engine_e4c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_mars, "SOLEIL MARS", HKL_GEOMETRY_TYPE_SOLEIL_MARS_DESCRIPTION); /********/ /* E4CH */ /********/ #define HKL_GEOMETRY_TYPE_EULERIAN4C_HORIZONTAL_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" OMEGA "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 1 axis for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" static const char* hkl_geometry_eulerian4C_horizontal_axes[] = {OMEGA, CHI, PHI, TTH}; static HklGeometry *hkl_geometry_new_eulerian4C_horizontal(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 0, 1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, 0, 1, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_eulerian4C_horizontal(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_e4c_hkl_new(self); hkl_engine_e4c_psi_new(self); hkl_engine_q_new(self); hkl_engine_e4c_incidence_new(self); hkl_engine_e4c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(eulerian4C_horizontal, "E4CH", HKL_GEOMETRY_TYPE_EULERIAN4C_HORIZONTAL_DESCRIPTION); hkl-5.1.7/hkl/hkl-vector.c0000664000175000017500000003740414677222567014316 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fabs, acos, cos, sin, sqrt, etc #include // for fprintf, FILE #include // for rand, RAND_MAX, free #include // for memcpy #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-matrix-private.h" // for _HklMatrix #include "hkl-quaternion-private.h" // for _HklQuaternion #include "hkl-vector-private.h" // for HklVector, HklQuaternion #include "hkl.h" // for HklMatrix, HKL_EPSILON, etc /** * hkl_vector_dup: (skip) * @self: the HklVector to copy * * Copy an HklVector * * Returns: A copy of self which need to be free using hkl_vector_free **/ HklVector* hkl_vector_dup (const HklVector* self) { HklVector* dup = g_new(HklVector, 1); *dup = *self; return dup; } /** * hkl_vector_free: (skip) * @self: * * delete an HklVector struct **/ void hkl_vector_free (HklVector* self) { free(self); } /** * hkl_vector_init: * @self: the #HklVector to initialize. * @x: the first coordinate value * @y: the second coordinate value * @z: the third coordinate value * * initialize an #HklVector **/ void hkl_vector_init(HklVector *self, double x, double y, double z) { self->data[0] = x; self->data[1] = y; self->data[2] = z; } /** * hkl_vector_fprintf: (skip) * @file: the stream to print into * @self: the #HklVector to print. * * print an #HklVector into a stream **/ void hkl_vector_fprintf(FILE *file, const HklVector *self) { fprintf(file, "|%f, %f, %f|", self->data[0], self->data[1], self->data[2]); } /** * hkl_vector_cmp: (skip) * @self: the first vector * @vector: th vector to compare with * * compare two #HklVector. this comparison use HKL_EPSILON * to do the comparison. * * Returns: FALSE if both are equals, TRUE otherwise. **/ int hkl_vector_cmp(const HklVector *self, const HklVector *vector) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i] - vector->data[i]) > HKL_EPSILON ) return TRUE; return FALSE; } /** * hkl_vector_is_opposite: (skip) * @self: * @vector: * * Check if two vectors are oposite. * * Returns: TRUE is vector are oposite vectors. **/ int hkl_vector_is_opposite(const HklVector *self, const HklVector *vector) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i] + vector->data[i]) > HKL_EPSILON ) return FALSE; return TRUE; } /** * hkl_vector_add_vector: (skip) * @self: the modified #HklVector * @vector: the #hklvector to add * * add an #HklVector to another one. **/ void hkl_vector_add_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] += vector->data[i]; } /** * hkl_vector_minus_vector: (skip) * @self: the modified #HklVector * @vector: the #hklvector to substract * * substract an #HklVector to another one. **/ void hkl_vector_minus_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] -= vector->data[i]; } /** * hkl_vector_div_double: (skip) * @self: the #HklVector to divide. * @d: constant use to divide the #HklVector * * divide an #HklVector by constant. **/ void hkl_vector_div_double(HklVector *self, const double d) { unsigned int i; for (i=0;i<3;i++) self->data[i] /= d; } /** * hkl_vector_times_double: (skip) * @self: the #HklVector to modify * @d: the multiply factor * * multiply an #HklVector by a constant value. **/ void hkl_vector_times_double(HklVector *self, const double d) { unsigned int i; for (i=0;i<3;i++) self->data[i] *= d; } /** * hkl_vector_times_vector: (skip) * @self: the #HklVector to modify * @vector: the #HklVector use to modify the first one * * multiply an #HklVector by another one. This method multiply * coordinate by coordinate. **/ void hkl_vector_times_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] *= vector->data[i]; } /** * hkl_vector_times_matrix: (skip) * @self: the #HklVector to multiply * @m: the #HklMatrix use to multiply the #HklVector * * multiply an #HklVector by an #HklMatrix. * compute v'= M . v **/ void hkl_vector_times_matrix(HklVector *self, const HklMatrix *m) { HklVector tmp; tmp = *self; self->data[0] = tmp.data[0] *m->data[0][0] + tmp.data[1] *m->data[1][0] + tmp.data[2] *m->data[2][0]; self->data[1] = tmp.data[0] *m->data[0][1] + tmp.data[1] *m->data[1][1] + tmp.data[2] *m->data[2][1]; self->data[2] = tmp.data[0] *m->data[0][2] + tmp.data[1] *m->data[1][2] + tmp.data[2] *m->data[2][2]; } /** * hkl_vector_sum: (skip) * @self: the #HklVector to sum. * * compute the #HklVector sum of all its elements. * * Returns: the sum of all elements. **/ double hkl_vector_sum(const HklVector *self) { return self->data[0] + self->data[1] + self->data[2]; } /** * hkl_vector_scalar_product: (skip) * @self: the first #HklVector * @vector: the second #HklVector * * compute the scalar product of two #HklVector * * Returns: the scalar product. **/ double hkl_vector_scalar_product(const HklVector *self, const HklVector *vector) { unsigned int i; double scalar = 0; for (i=0;i<3;i++) scalar += self->data[i] *vector->data[i]; return scalar; } /** * hkl_vector_vectorial_product: (skip) * @self: the first #HklVector (modify) * @vector: the second #HklVector * * compute the vectorial product of two vectors **/ void hkl_vector_vectorial_product(HklVector *self, const HklVector *vector) { HklVector tmp; tmp = *self; self->data[0] = tmp.data[1] * vector->data[2] - tmp.data[2] * vector->data[1]; self->data[1] = tmp.data[2] * vector->data[0] - tmp.data[0] * vector->data[2]; self->data[2] = tmp.data[0] * vector->data[1] - tmp.data[1] * vector->data[0]; } /** * hkl_vector_angle: (skip) * @self: the fist #HklVector * @vector: the second #HklVector * * compute the angles beetween two #HklVector * * Returns: the return value is in beetween [0, pi] **/ double hkl_vector_angle(const HklVector *self, const HklVector *vector) { double angle; double cos_angle; double norm; double norm_self; double norm_vector; norm_self = hkl_vector_norm2(self); norm_vector = hkl_vector_norm2(vector); if (norm_self < HKL_EPSILON || norm_vector < HKL_EPSILON) return 0.0; norm = norm_self * norm_vector; cos_angle = hkl_vector_scalar_product(self, vector) / norm; /* problem with round */ if (cos_angle >= 1 ) angle = 0; else if (cos_angle <= -1 ) angle = M_PI; else angle = acos(cos_angle); return angle; } /** * hkl_vector_oriented_angle: (skip) * @self: the first #HklVector * @vector: the second #HklVector * @ref: the reference #HklVector * * compute the angles beetween two #HklVector and use * a reference #HklVector to orientate the space. That's * way the return value can be in beetween [-pi, pi]. * the (self, vector, ref) is a right oriented base. * * Returns: the angles [-pi, pi] **/ double hkl_vector_oriented_angle(const HklVector *self, const HklVector *vector, const HklVector *ref) { double angle; HklVector tmp; HklVector ref_u; angle = hkl_vector_angle(self, vector); tmp = *self; hkl_vector_vectorial_product(&tmp, vector); hkl_vector_normalize(&tmp); ref_u = *ref; hkl_vector_normalize(&ref_u); if (hkl_vector_is_opposite(&tmp, &ref_u)) angle = -angle; return angle; } /** * hkl_vector_oriented_angle_points: (skip) * @self: the first point * @p2: the second point * @p3: the third point * @ref: the reference #HklVector * * compute the angles beetween three points (p1, p2, p3) and use * a reference #HklVector to orientate the space. That's * way the return value can be in beetween [-pi, pi]. * the (self, vector, ref) is a right oriented base. * * Returns: the angles [-pi, pi] **/ double hkl_vector_oriented_angle_points(const HklVector *self, const HklVector *p2, const HklVector *p3, const HklVector *ref) { HklVector v1; HklVector v2; v1 = *self; v2 = *p3; hkl_vector_minus_vector(&v1, p2); hkl_vector_minus_vector(&v2, p2); return hkl_vector_oriented_angle(&v1, &v2, ref); } /** * hkl_vector_normalize: (skip) * @self: the #HklVector to normalize * * normalize a hkl_vector * * Returns: TRUE if the #HklVector can be normalized, FALSE otherwise **/ int hkl_vector_normalize(HklVector *self) { double norm = hkl_vector_norm2(self); if ( norm <= HKL_EPSILON ) return FALSE; hkl_vector_div_double(self, norm); return TRUE; } /** * hkl_vector_is_colinear: (skip) * @self: the first #HklVector * @vector: the second #HklVector * * check if two #HklVector are colinears * * Returns: TRUE if both are colinear. **/ int hkl_vector_is_colinear(const HklVector *self, const HklVector *vector) { int is_colinear = 0; HklVector tmp = *self; hkl_vector_vectorial_product(&tmp, vector); if (hkl_vector_norm2(&tmp) < HKL_EPSILON) is_colinear = 1; return is_colinear; } /** * hkl_vector_randomize: (skip) * @self: the #HklVector to randomize * * initialize a vector with random values. * coordinates range [-1, 1] */ void hkl_vector_randomize(HklVector *self) { self->data[0] = -1 + 2 *rand()/(RAND_MAX+1.0); self->data[1] = -1 + 2 *rand()/(RAND_MAX+1.0); self->data[2] = -1 + 2 *rand()/(RAND_MAX+1.0); } /** * hkl_vector_randomize_vector: (skip) * @self: the #HklVector to randomize * @vector: the #HklVector result to avoid * * randomize an #HklVector an be sure that it is not equal * to the #HklVector vector. **/ void hkl_vector_randomize_vector(HklVector *self, const HklVector *vector) { do hkl_vector_randomize(self); while (!hkl_vector_cmp(self, vector)); } /** * hkl_vector_randomize_vector_vector: (skip) * @self: the #HklVector to randomize * @vector1: the first #HklVector solution to avoid * @vector2: the second #HklVector solution to avoid * * randomize an #HklVector an be sure that it is not equal * to the #HklVector vector1 and vector2. * **/ void hkl_vector_randomize_vector_vector(HklVector *self, const HklVector *vector1, const HklVector *vector2) { do hkl_vector_randomize(self); while (!hkl_vector_cmp(self, vector1) || !hkl_vector_cmp(self, vector2)); } /** * hkl_vector_rotated_around_vector: (skip) * @self: the #HklVector to rotate * @axe: the axe of rotation * @angle: the angle of the rotation * * rotate a vector around another one with a given angle. **/ void hkl_vector_rotated_around_vector(HklVector *self, const HklVector *axe, double angle) { double c = cos(angle); double s = sin(angle); HklVector axe_n; HklVector tmp; axe_n = *axe; hkl_vector_normalize(&axe_n); tmp = *self; self->data[0] = (c + (1 - c) * axe_n.data[0] * axe_n.data[0]) * tmp.data[0]; self->data[0] += ((1 - c) * axe_n.data[0] * axe_n.data[1] - axe_n.data[2] * s) * tmp.data[1]; self->data[0] += ((1 - c) * axe_n.data[0] * axe_n.data[2] + axe_n.data[1] * s) * tmp.data[2]; self->data[1] = ((1 - c) * axe_n.data[0] * axe_n.data[1] + axe_n.data[2] * s) * tmp.data[0]; self->data[1] += (c + (1 - c) * axe_n.data[1] * axe_n.data[1]) * tmp.data[1]; self->data[1] += ((1 - c) * axe_n.data[1] * axe_n.data[2] - axe_n.data[0] * s) * tmp.data[2]; self->data[2] = ((1 - c) * axe_n.data[0] * axe_n.data[2] - axe_n.data[1] * s) * tmp.data[0]; self->data[2] += ((1 - c) * axe_n.data[1] * axe_n.data[2] + axe_n.data[0] * s) * tmp.data[1]; self->data[2] += (c + (1 - c) * axe_n.data[2] * axe_n.data[2]) * tmp.data[2]; } /** * hkl_vector_norm2: (skip) * @self: the #hklvector use to compute the norm2 * * compute the norm2 of an #HklVector * * Returns: the sqrt(|v|) **/ double hkl_vector_norm2(const HklVector *self) { return sqrt(self->data[0] * self->data[0] + self->data[1] * self->data[1] + self->data[2] * self->data[2]); } /** * hkl_vector_rotated_quaternion: (skip) * @self: the #HklVector to rotate * @qr: the #HklQuaternion use to rotate the vector * * rotate an #HklVector using an #HklQuaternion. **/ void hkl_vector_rotated_quaternion(HklVector *self, const HklQuaternion *qr) { double v1 = self->data[0]; double v2 = self->data[1]; double v3 = self->data[2]; double a = qr->data[0]; double b = qr->data[1]; double c = qr->data[2]; double d = qr->data[3]; double t2 = a*b; double t3 = a*c; double t4 = a*d; double t5 = -b*b; double t6 = b*c; double t7 = b*d; double t8 = -c*c; double t9 = c*d; double t10 = -d*d; self->data[0] = 2*( (t8 + t10)*v1 + (t6 - t4)*v2 + (t3 + t7)*v3 ) + v1; self->data[1] = 2*( (t4 + t6)*v1 + (t5 + t10)*v2 + (t9 - t2)*v3 ) + v2; self->data[2] = 2*( (t7 - t3)*v1 + (t2 + t9)*v2 + (t5 + t8)*v3 ) + v3; } /** * hkl_vector_rotated_around_line: (skip) * @self: the point to rotate around a line * @angle: the angle of the rotation * @c1: the fist point of the line * @c2: the second point of the line * * This method rotate a point around a line defined by two points * of a certain amount of angle. The rotation is right handed. * this mean that c2 - c1 gives the direction of the rotation. **/ void hkl_vector_rotated_around_line(HklVector *self, double angle, const HklVector *c1, const HklVector *c2) { HklVector axis; if (!self || !c1 || !c2 || fabs(angle) < HKL_EPSILON) return; axis = *c2; hkl_vector_minus_vector(&axis, c1); /* the c2 - c1 vector must be non null */ hkl_vector_minus_vector(self, c1); hkl_vector_rotated_around_vector(self, &axis, angle); hkl_vector_add_vector(self, c1); } /** * hkl_vector_is_null: (skip) * @self: the #hklvector to check * * check if all the coordinates of an #HklVector are null. * * Returns: HKl_TRUE if all |elements| are below HKL_EPSILON, HKl_FALSE otherwise * * Todo: test */ int hkl_vector_is_null(const HklVector *self) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i]) > HKL_EPSILON ) return FALSE; return TRUE; } /** * hkl_vector_project_on_plan: (skip) * @self: the vector to project * @normal: the normal of the plane. * * project an #HklVector on a plan of normal which contain * the origin [0, 0, 0] * **/ void hkl_vector_project_on_plan(HklVector *self, const HklVector *normal) { HklVector tmp; if(!self || !normal) return; tmp = *normal; hkl_vector_normalize(&tmp); hkl_vector_times_double(&tmp, hkl_vector_scalar_product(self, &tmp)); hkl_vector_minus_vector(self, &tmp); } /** * hkl_vector_project_on_plan_with_point: (skip) * @self: the vector to project (modify) * @normal: the normal of the plane. * @point: a point of the plan. * * project an #HklVector on a plan of normal #normal which contain #point. **/ void hkl_vector_project_on_plan_with_point(HklVector *self, const HklVector *normal, const HklVector *point) { HklVector tmp; double d1, d2; if(!self || !normal || !point) return; tmp = *normal; hkl_vector_normalize(&tmp); d1 = hkl_vector_scalar_product(self, &tmp); d2 = hkl_vector_scalar_product(point, &tmp); hkl_vector_times_double(&tmp, d1 - d2); hkl_vector_minus_vector(self, &tmp); } hkl-5.1.7/hkl/hkl-engine-soleil-sixs-med.c0000664000175000017500000005526515133711150017255 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-axis-private.h" // for HklAxis #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_engine_hkl_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #define PITCH "pitch" #define BETA "beta" #define MU "mu" #define OMEGA "omega" #define GAMMA "gamma" #define DELTA "delta" #define ETA_A "eta_a" /* #define DEBUG */ /*********************/ /* MED 2+2 HklEngine */ /*********************/ static int _reflectivity_func(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double gamma = x->data[2]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = gamma - 2 * mu; return GSL_SUCCESS; } static const HklFunction reflectivity_func = { .function = _reflectivity_func, .size = 4, }; static HklMode* mu_fixed_2_2() { static const char* axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("mu_fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode* reflectivity_2_2() { static const char* axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA}; static const char* axes_w[] = {MU, OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&reflectivity_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("reflectivity", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *emergence_fixed_2_2() { static const char* axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA}; static const char* axes_w[] = {MU, OMEGA, GAMMA, DELTA}; static const HklFunction* functions[] = {&emergence_fixed_func}; static const HklParameter parameters[] = { HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS(0, 1, 0, 0), }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("emergence_fixed", axes_r, axes_w, functions, parameters), }; return hkl_mode_hkl_emergence_fixed_new(&info); } static HklEngine *hkl_engine_soleil_sixs_med_2_2_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = mu_fixed_2_2(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, reflectivity_2_2()); hkl_engine_add_mode(self, emergence_fixed_2_2()); return self; } /* mode incidence */ REGISTER_READONLY_INCIDENCE(hkl_engine_soleil_sixs_med_2_2_incidence_new, P99_PROTECT({BETA, MU, OMEGA}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_soleil_sixs_med_2_2_emergence_new, P99_PROTECT({BETA, MU, OMEGA, GAMMA, DELTA}), surface_parameters_y); /*********************/ /* MED 1+2 HklEngine */ /*********************/ static HklMode* pitch_fixed() { static const char *axes_r[] = {PITCH, MU, GAMMA, DELTA}; static const char* axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *delta_fixed() { static const char *axes_r[] = {PITCH, MU, GAMMA, DELTA}; static const char* axes_w[] = {PITCH, MU, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklEngine *hkl_engine_soleil_sixs_med_1_2_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = pitch_fixed(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, delta_fixed()); return self; } /* mode incidence */ REGISTER_READONLY_INCIDENCE(hkl_engine_soleil_sixs_med_1_2_incidence_new, P99_PROTECT({PITCH, MU}), surface_parameters_z); REGISTER_READONLY_EMERGENCE(hkl_engine_soleil_sixs_med_1_2_emergence_new, P99_PROTECT({PITCH, MU, GAMMA, DELTA}), surface_parameters_z); /*********************/ /* MED 2+3 HklEngine */ /*********************/ typedef struct _HklSlitsFit HklSlitsFit; struct _HklSlitsFit { HklGeometry *geometry; HklVector surface; unsigned int slits_id; unsigned int len; HklParameter *axis; }; static int slits_func(const gsl_vector *x, void *params, gsl_vector *f) { double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); HklVector n_slits = {{0, 0, 1}}; HklSlitsFit *parameters = params; hkl_parameter_value_set(parameters->axis, x_data[0], HKL_UNIT_DEFAULT, NULL); hkl_geometry_update(parameters->geometry); /* compute the orientation of the slits */ hkl_vector_rotated_quaternion(&n_slits, &darray_item(parameters->geometry->holders, 1)->q); /* both directions must be perpendicular */ f_data[0] = hkl_vector_scalar_product(¶meters->surface, &n_slits); return GSL_SUCCESS; } static int fit_slits_orientation(HklSlitsFit *params) { size_t i; gsl_multiroot_fsolver_type const *T; gsl_multiroot_fsolver *s; gsl_multiroot_function f; gsl_vector *x; double *x_data; int status; int res = FALSE; int iter; /* now solve the system */ /* Initialize method */ T = gsl_multiroot_fsolver_hybrid; s = gsl_multiroot_fsolver_alloc (T, params->len); x = gsl_vector_alloc(params->len); x_data = gsl_vector_ptr(x, 0); /* initialize x with the right values */ x_data[0] = params->axis->_value; f.f = slits_func; f.n = params->len; f.params = params; gsl_multiroot_fsolver_set (s, &f, x); /* iterate to find the solution */ iter = 0; do { ++iter; status = gsl_multiroot_fsolver_iterate(s); if (status || iter % 100 == 0) { /* Restart from another point. */ for(i=0; ilen; ++i) x_data[i] = (double)rand() / RAND_MAX * 180. / M_PI; gsl_multiroot_fsolver_set(s, &f, x); gsl_multiroot_fsolver_iterate(s); } status = gsl_multiroot_test_residual (s->f, HKL_EPSILON); } while (status == GSL_CONTINUE && iter < 1000); #ifdef DEBUG fprintf(stdout, "\n fitting the detector position using thoses axes :"); for(i=0; ilen; ++i) fprintf(stdout, " \"%s\"", params->axis->name); fprintf(stdout, " status : %d iter : %d", status, iter); fprintf(stdout, " x: ["); for(i=0; ilen; ++i) fprintf(stdout, " %.7f", s->x->data[i]); fprintf(stdout, "] f: ["); for(i=0; ilen; ++i) fprintf(stdout, " %.7f", s->f->data[i]); fprintf(stdout, "]\n"); hkl_geometry_fprintf(stdout, params->geometry); #endif if(status != GSL_CONTINUE){ res = TRUE; /* put the axes in the -pi, pi range. */ gsl_sf_angle_restrict_pos_e(¶ms->axis->_value); } /* release memory */ gsl_vector_free(x); gsl_multiroot_fsolver_free(s); return res; } static void hkl_geometry_list_multiply_soleil_sixs_med_2_3(HklGeometryList *self, HklGeometryListItem *item) HKL_ARG_NONNULL(1, 2); static void hkl_geometry_list_multiply_soleil_sixs_med_2_3(HklGeometryList *self, HklGeometryListItem *item) { HklSlitsFit params; HklGeometry *geometry; double slits_position; HklHolder *sample_holder; HklHolder *detector_holder; /* For each solution already found we will generate another one */ /* we will set the right slit orientation for a given detector arm position */ geometry = item->geometry; sample_holder = darray_item(geometry->holders, 0); detector_holder = darray_item(geometry->holders, 1); /* get the index of the axis corresponding to the slits */ /* for now the last holder is the detector one */ params.slits_id = detector_holder->config->idx[detector_holder->config->len-1]; params.len = 1; /* only one axis to fit */ params.geometry = geometry; params.axis = darray_item(params.geometry->axes, params.slits_id); /* compute the surface orientation fixed during the fit */ /* use the last sample axis as sample surface normal */ params.surface = container_of(darray_item(geometry->axes, sample_holder->config->idx[sample_holder->config->len - 1]), HklAxis, parameter)->axis_v; hkl_vector_rotated_quaternion(¶ms.surface, &sample_holder->q); /* we just need to fit the slits orientation */ /* save it's value before */ slits_position = hkl_parameter_value_get(params.axis, HKL_UNIT_DEFAULT); if (fit_slits_orientation(¶ms) != TRUE) hkl_parameter_value_set(params.axis, slits_position, HKL_UNIT_DEFAULT, NULL); } static HklMode* mu_fixed_2_3() { static const char *axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("mu_fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode* gamma_fixed_2_3() { static const char *axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {MU, OMEGA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("gamma_fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *emergence_fixed_2_3() { static const char* axes_r[] = {BETA, MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {MU, OMEGA, GAMMA, DELTA}; static const HklFunction* functions[] = {&emergence_fixed_func}; static const HklParameter parameters[] = { HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS(0, 1, 0, 0), }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("emergence_fixed", axes_r, axes_w, functions, parameters), }; return hkl_mode_hkl_emergence_fixed_new(&info); } static HklEngine *hkl_engine_soleil_sixs_med_2_3_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = mu_fixed_2_3(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, gamma_fixed_2_3()); hkl_engine_add_mode(self, emergence_fixed_2_3()); return self; } /***********************/ /* SOLEIL SIXS MED 2+2 */ /***********************/ #define HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_2_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" BETA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" BETA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_soleil_sixs_med_2_2_axes[] = {BETA, MU, OMEGA, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_soleil_sixs_med_2_2(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_sixs_med_2_2(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_soleil_sixs_med_2_2_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_soleil_sixs_med_2_2_incidence_new(self); hkl_engine_soleil_sixs_med_2_2_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sixs_med_2_2,"SOLEIL SIXS MED2+2", HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_2_DESCRIPTION); /***********************/ /* SOLEIL SIXS MED 1+2 */ /***********************/ #define HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_1_2_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 2 axes for the sample\n" \ "\n" \ " + **" PITCH "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" PITCH "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_soleil_sixs_med_1_2_axes[] = {PITCH, MU, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_soleil_sixs_med_1_2(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, PITCH, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, PITCH, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_sixs_med_1_2(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_soleil_sixs_med_1_2_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_soleil_sixs_med_1_2_incidence_new(self); hkl_engine_soleil_sixs_med_1_2_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sixs_med_1_2, "SOLEIL SIXS MED1+2", HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_1_2_DESCRIPTION); /******************************/ /* SOLEIL SIXS MED 2+3 (MedV) */ /******************************/ #define HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_3_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" BETA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 4 axis for the detector\n" \ "\n" \ " + **" BETA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" ETA_A "** : rotation around the :math:`-\\vec{x}` direction (-1, 0, 0)\n" static const char* hkl_geometry_soleil_sixs_med_2_3_axes[] = {BETA, MU, OMEGA, GAMMA, DELTA, ETA_A}; static HklGeometry *hkl_geometry_new_soleil_sixs_med_2_3(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, BETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ETA_A, -1, 0, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_sixs_med_2_3(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); self->geometries->multiply = hkl_geometry_list_multiply_soleil_sixs_med_2_3; hkl_engine_soleil_sixs_med_2_3_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_soleil_sixs_med_2_2_incidence_new(self); hkl_engine_soleil_sixs_med_2_2_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sixs_med_2_3, "SOLEIL SIXS MED2+3", HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_3_DESCRIPTION); /**************************/ /* SOLEIL SIXS MED 2+3 v2 */ /**************************/ static HklMode* mu_fixed_2_3_v2() { static const char *axes_r[] = {MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("mu_fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode* gamma_fixed_2_3_v2() { static const char *axes_r[] = {MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {MU, OMEGA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("gamma_fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *emergence_fixed_2_3_v2() { static const char* axes_r[] = {MU, OMEGA, GAMMA, DELTA, ETA_A}; static const char* axes_w[] = {MU, OMEGA, GAMMA, DELTA}; static const HklFunction* functions[] = {&emergence_fixed_func}; static const HklParameter parameters[] = { HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS(0, 1, 0, 0), }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("emergence_fixed", axes_r, axes_w, functions, parameters), }; return hkl_mode_hkl_emergence_fixed_new(&info); } static HklEngine *hkl_engine_soleil_sixs_med_2_3_v2_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = mu_fixed_2_3_v2(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, gamma_fixed_2_3_v2()); hkl_engine_add_mode(self, emergence_fixed_2_3_v2()); return self; } #define HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_3_V2_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 2 axes for the sample\n" \ "\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" ETA_A "** : rotation around the :math:`-\\vec{x}` direction (-1, 0, 0)\n" static const char* hkl_geometry_soleil_sixs_med_2_3_v2_axes[] = {MU, OMEGA, GAMMA, DELTA, ETA_A}; static HklGeometry *hkl_geometry_new_soleil_sixs_med_2_3_v2(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ETA_A, -1, 0, 0, &hkl_unit_angle_deg); return self; } static inline int hkl_engine_list_post_engine_set_med_2_3_v2_real(HklEngineList *self) { int res = TRUE; int eta_a_rotation = darray_item(self->parameters, 0)->_value; if(!self || !self->geometries) goto out; if(eta_a_rotation == 1){ uint i = 0; uint len = self->geometries->n_items; HklGeometryListItem *item; /* * warning this method change the self->len so we need to save it * before using the recursive perm_r calls */ for(i=0, item=list_top(&self->geometries->items, HklGeometryListItem, list); igeometries->items, item, list)) hkl_geometry_list_multiply_soleil_sixs_med_2_3(self->geometries, item); } out: return res; } static HklEngineList *hkl_engine_list_new_soleil_sixs_med_2_3_v2(const HklFactory *factory) { static const HklParameter eta_a_rotation = { HKL_PARAMETER_DEFAULTS, .name = "eta_a_rotation", ._value = 0, .description = "rotation of the detector (zaxis-like)", .range = { .min=0, .max=1 }, }; static const HklParameter *parameters[] = { &eta_a_rotation }; static const HklEngineListInfo info = { HKL_ENGINE_LIST_INFO(parameters) }; static const HklEngineListOperations ops = { HKL_ENGINE_LIST_OPERATIONS_DEFAULTS, .post_engine_set=hkl_engine_list_post_engine_set_med_2_3_v2_real, }; HklEngineList *self = hkl_engine_list_new_with_info(&info, &ops); hkl_engine_soleil_sixs_med_2_3_v2_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_soleil_sixs_med_2_2_incidence_new(self); hkl_engine_soleil_sixs_med_2_2_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sixs_med_2_3_v2, "SOLEIL SIXS MED2+3 v2", HKL_GEOMETRY_TYPE_SOLEIL_SIXS_MED_2_3_V2_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-common-q.c0000664000175000017500000003163315062214312016674 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include // for ::GSL_SUCCESS #include // for gsl_sf_angle_restrict_symm #include // for gsl_isnan #include // for gsl_vector #include // for sin, atan2, signbit #include // for free #include "hkl-detector-private.h" // for hkl_detector_compute_kf #include "hkl-geometry-private.h" // for _HklGeometry, HklHolder #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-pseudoaxis-auto-private.h" // for HklFunction, etc #include "hkl-pseudoaxis-common-q-private.h" // for HklEngineQ2, etc #include "hkl-pseudoaxis-common-readonly-private.h" #include "hkl-pseudoaxis-private.h" // for _HklEngine, etc #include "hkl-source-private.h" // for hkl_source_compute_ki, etc #include "hkl-vector-private.h" // for HklVector, hkl_vector_angle, etc #include "hkl.h" // for HklEngine, HklParameter, etc #include "hkl/ccan/array_size/array_size.h" // for ARRAY_SIZE #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_item #define GAMMA "gamma" #define DELTA "delta" typedef struct _HklEngineQ HklEngineQ; typedef struct _HklEngineQ2 HklEngineQ2; typedef struct _HklEngineQperQpar HklEngineQperQpar; double qmax(double wavelength) { return 2 * HKL_TAU / wavelength; } /*****/ /* q */ /*****/ struct _HklEngineQ { HklEngine engine; HklParameter *q; }; static int _q_func(const gsl_vector *x, void *params, gsl_vector *f) { double q; HklEngine *engine = params; const HklEngineQ *engine_q = container_of(engine, HklEngineQ, engine); double tth; CHECK_NAN(x->data, x->size); /* update the workspace from x */ set_geometry_axes(engine, x->data); tth = gsl_sf_angle_restrict_symm(x->data[0]); q = qmax(hkl_source_get_wavelength(&engine->geometry->source)) * sin(tth/2.); f->data[0] = engine_q->q->_value - q; return GSL_SUCCESS; } static const HklFunction q_func = { .function = _q_func, .size = 1, }; static int get_q_real(HklMode *self, HklEngine *base, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { double wavelength; double theta; HklVector ki, kf; HklEngineQ *engine = container_of(base, HklEngineQ, engine); wavelength = hkl_source_get_wavelength(&geometry->source); ki = hkl_geometry_ki_get(geometry); kf = hkl_geometry_kf_get(geometry, detector); theta = hkl_vector_angle(&ki, &kf) / 2.; /* we decide of the sign of theta depending on the orientation * of kf in the direct-space */ if(kf.data[1] < 0 || kf.data[2] < 0) theta = -theta; /* update q */ engine->q->_value = qmax(wavelength) * sin(theta); return TRUE; } /* not declared in the constructor as it is used also in the q2 pseudo * axis engine */ static const HklParameter q = { HKL_PARAMETER_DEFAULTS, .name="q", .description = "the norm of $\\vec{q}$", }; static HklMode *mode_q(void) { static const char *axes[] = {"tth"}; static const HklFunction *functions[] = {&q_func}; static HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("q", axes, axes, functions), }; static const HklModeOperations operations = { HKL_MODE_OPERATIONS_AUTO_DEFAULTS, .get = get_q_real, }; return hkl_mode_auto_new(&info, &operations, TRUE); } static void hkl_engine_q_free_real(HklEngine *base) { HklEngineQ *self=container_of(base, HklEngineQ, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_q_new(HklEngineList *engines) { HklEngineQ *self = g_new(HklEngineQ, 1); HklMode *mode; static const HklParameter *pseudo_axes[] = {&q}; static const HklEngineInfo info = { HKL_ENGINE_INFO("q", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_ENERGY), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_q_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->q = register_pseudo_axis(&self->engine, engines, &q); /* q [default] */ mode = mode_q(); hkl_engine_add_mode(&self->engine, mode); hkl_engine_mode_set(&self->engine, mode); return &self->engine; } /******/ /* q2 */ /******/ struct _HklEngineQ2 { HklEngine engine; HklParameter *q; HklParameter *alpha; }; static void _q2(HklGeometry *geometry, HklDetector *detector, double *q, double *alpha) { double wavelength, theta; HklVector kf, ki; static HklVector x = { .data = {1, 0, 0}, }; wavelength = hkl_source_get_wavelength(&geometry->source); ki = hkl_geometry_ki_get(geometry); kf = hkl_geometry_kf_get(geometry, detector); theta = hkl_vector_angle(&ki, &kf) / 2.; *q = qmax(wavelength) * sin(theta); /* project kf on the x plan to compute alpha */ hkl_vector_project_on_plan(&kf, &x); *alpha = atan2(kf.data[2], kf.data[1]); } static int _q2_func(const gsl_vector *x, void *params, gsl_vector *f) { HklEngine *engine = params; const HklEngineQ2 *engine_q2 = container_of(engine, HklEngineQ2, engine); double q; double alpha; CHECK_NAN(x->data, x->size); /* update the workspace from x */ set_geometry_axes(engine, x->data); _q2(engine->geometry, engine->detector, &q, &alpha); f->data[0] = engine_q2->q->_value - q; f->data[1] = engine_q2->alpha->_value - alpha; return GSL_SUCCESS; } static const HklFunction q2_func = { .function = _q2_func, .size = 2, }; static int get_q2_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklEngineQ2 *engine_q2 = container_of(engine, HklEngineQ2, engine); _q2(geometry, detector, &engine_q2->q->_value, &engine_q2->alpha->_value); return TRUE; } static HklMode *mode_q2(void) { static const char* axes[] = {GAMMA, DELTA}; static const HklFunction *functions[] = {&q2_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("q2", axes, axes, functions), }; static const HklModeOperations operations = { HKL_MODE_OPERATIONS_AUTO_DEFAULTS, .get = get_q2_real, }; return hkl_mode_auto_new(&info, &operations, TRUE); } static const HklParameter alpha = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "alpha", .description = "angle of the projection of $\\vec{q}$ on the $yOz$ plan and $\\vec{y}$", }; static void hkl_engine_q2_free_real(HklEngine *base) { HklEngineQ2 *self = container_of(base, HklEngineQ2, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_q2_new(HklEngineList *engines) { HklEngineQ2 *self = g_new(HklEngineQ2, 1); HklMode *mode; static const HklParameter *pseudo_axes[] = {&q, &alpha}; static const HklEngineInfo info = { HKL_ENGINE_INFO("q2", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_ENERGY), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_q2_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->q = register_pseudo_axis(&self->engine, engines, &q); self->alpha = register_pseudo_axis(&self->engine, engines, &alpha); /* q2 [default] */ mode = mode_q2(); hkl_engine_add_mode(&self->engine, mode); hkl_engine_mode_set(&self->engine, mode); return &self->engine; } /************/ /* QperQpar */ /************/ typedef struct _HklModeIncidence HklModeQperQpar; struct _HklEngineQperQpar { HklEngine engine; HklParameter *qper; HklParameter *qpar; }; static void _qper_qpar(HklEngine *engine, const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, double *qper, double *qpar) { HklModeQperQpar *mode = container_of(engine->mode, HklModeQperQpar, parent); HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); HklVector ki; HklVector q; HklVector n = { .data = { mode->n_x->_value, mode->n_y->_value, mode->n_z->_value, }, }; HklVector npar; HklVector qper_v; HklVector qpar_v; double norm; /* compute q = kf - ki */ ki = hkl_geometry_ki_get(geometry); q = hkl_geometry_kf_get(geometry, detector); hkl_vector_minus_vector(&q, &ki); /* compute the real orientation of the surface n */ hkl_vector_rotated_quaternion(&n, &sample_holder->q); hkl_vector_normalize(&n); /* compute the npar used to define the sign of qpar */ npar = ki; hkl_vector_vectorial_product(&npar, &n); /* qper */ qper_v = n; norm = hkl_vector_scalar_product(&q, &n); hkl_vector_times_double(&qper_v, norm); *qper = hkl_vector_norm2(&qper_v); if (signbit(norm)) *qper *= -1; /* qpar */ qpar_v = q; norm = hkl_vector_scalar_product(&q, &npar); hkl_vector_minus_vector(&qpar_v, &qper_v); *qpar = hkl_vector_norm2(&qpar_v); if (signbit(norm)) *qpar *= -1; } static int _qper_qpar_func(const gsl_vector *x, void *params, gsl_vector *f) { HklEngine *engine = params; const HklEngineQperQpar *engine_qper_qpar = container_of(engine, HklEngineQperQpar, engine); double qper; double qpar; CHECK_NAN(x->data, x->size); /* update the workspace from x */ set_geometry_axes(engine, x->data); _qper_qpar(engine, engine->geometry, engine->detector, engine->sample, &qper, &qpar); f->data[0] = engine_qper_qpar->qper->_value - qper; f->data[1] = engine_qper_qpar->qpar->_value - qpar; return GSL_SUCCESS; } static const HklFunction qper_qpar_func = { .function = _qper_qpar_func, .size = 2, }; static int get_qper_qpar_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklEngineQperQpar *engine_qper_qpar = container_of(engine, HklEngineQperQpar, engine); _qper_qpar(engine, geometry, detector, sample, &engine_qper_qpar->qper->_value, &engine_qper_qpar->qpar->_value); return TRUE; } static HklMode *mode_qper_qpar(void) { static const char* axes[] = {GAMMA, DELTA}; static const HklFunction *functions[] = {&qper_qpar_func}; static const HklParameter parameters[] = { SURFACE_PARAMETERS(0, 1, 0), }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("qper_qpar", axes, axes, functions, parameters), }; static const HklModeOperations operations = { HKL_MODE_OPERATIONS_AUTO_DEFAULTS, .get = get_qper_qpar_real, }; HklModeQperQpar *self = g_new(HklModeQperQpar, 1); /* the base constructor; */ hkl_mode_auto_init(&self->parent, &info, &operations, TRUE); self->n_x = register_mode_parameter(&self->parent, 0); self->n_y = register_mode_parameter(&self->parent, 1); self->n_z = register_mode_parameter(&self->parent, 2); return &self->parent; } static void hkl_engine_qper_qpar_free_real(HklEngine *base) { HklEngineQperQpar *self = container_of(base, HklEngineQperQpar, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_qper_qpar_new(HklEngineList *engines) { HklEngineQperQpar *self = g_new(HklEngineQperQpar, 1); HklMode *mode; static const HklParameter qper = { HKL_PARAMETER_DEFAULTS, .name = "qper", .description = "perpendicular component of $\\vec{q}$ along the normal of the sample surface", }; static const HklParameter qpar = { HKL_PARAMETER_DEFAULTS, .name = "qpar", .description = "parallel component of $\\vec{q}$", }; static const HklParameter *pseudo_axes[] = {&qper, &qpar}; static const HklEngineInfo info = { HKL_ENGINE_INFO("qper_qpar", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_ENERGY), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free = hkl_engine_qper_qpar_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->qper = register_pseudo_axis(&self->engine, engines, &qper); self->qpar = register_pseudo_axis(&self->engine, engines, &qpar); /* qper_qpar [default] */ mode = mode_qper_qpar(); hkl_engine_add_mode(&self->engine, mode); hkl_engine_mode_set(&self->engine, mode); return &self->engine; } hkl-5.1.7/hkl/hkl-pseudoaxis-common-eulerians-private.h0000664000175000017500000000255514677222567022127 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ #define __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ #include "hkl.h" // for HklParameter, etc G_BEGIN_DECLS extern HklEngine *hkl_engine_eulerians_new(HklEngineList *engines); extern void kappa_2_kappap(double komega, double kappa, double kphi, double alpha, double *komegap, double *kappap, double *kphip); G_END_DECLS #endif /* __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ */ hkl-5.1.7/hkl/hkl-type-builtins.h0000664000175000017500000000231615144553454015613 0ustar00piccapicca /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #ifndef __HKL_TYPE_BUILTINS_H__ #define __HKL_TYPE_BUILTINS_H__ #include // for G_BEGIN_DECLS, G_END_DECLS, etc #include // GType #include "hkl.h" // for HKLAPI G_BEGIN_DECLS /* enumerations from "../hkl.h" */ HKLAPI GType hkl_unit_enum_get_type (void) G_GNUC_CONST; #define HKL_TYPE_UNIT_ENUM (hkl_unit_enum_get_type ()) HKLAPI GType hkl_detector_type_get_type (void) G_GNUC_CONST; #define HKL_TYPE_DETECTOR_TYPE (hkl_detector_type_get_type ()) HKLAPI GType hkl_engine_capabilities_get_type (void) G_GNUC_CONST; #define HKL_TYPE_ENGINE_CAPABILITIES (hkl_engine_capabilities_get_type ()) HKLAPI GType hkl_engine_axis_names_get_get_type (void) G_GNUC_CONST; #define HKL_TYPE_ENGINE_AXIS_NAMES_GET (hkl_engine_axis_names_get_get_type ()) HKLAPI GType hkl_engine_dependencies_get_type (void) G_GNUC_CONST; #define HKL_TYPE_ENGINE_DEPENDENCIES (hkl_engine_dependencies_get_type ()) G_END_DECLS #endif /* __HKL_TYPE_BUILTINS_H__ */ /* Generated data ends here */ hkl-5.1.7/hkl/hkl-engine-esrf-bm28-psic.c0000664000175000017500000001344515133715013016674 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2017, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * Copyright (C) 2023 ESRF - The European Synchrotron * 71 Avenue des Martyrs * Grenoble * * Authors: Picca Frédéric-Emmanuel * Steven leake * Sebastien Petitdemange */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" /**************/ /* Axes names */ /**************/ #define MU "mu" #define ETA "eta" #define CHI "chi" #define PHI "phi" #define NU "nu" #define DELTA "delta" /************/ /* Geometry */ /************/ #define HKL_GEOMETRY_ESRF_BM28_PSIC_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" MU "** : rotating around the :math:`+\\vec{z}` direction (0, 0, 1)\n" \ " + **" ETA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`+\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" NU "** : rotation around the :math:`+\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_ESRF_BM28_PSIC_axes[] = {MU, ETA, CHI, PHI, NU, DELTA}; static HklGeometry *hkl_geometry_new_ESRF_BM28_PSIC(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, NU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } /*********/ /* Modes */ /*********/ static HklMode *constant_nu_coplanar(void) { static const char* axes_r[] = {MU, ETA, CHI, PHI, NU, DELTA}; static const char* axes_w[] = {ETA, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_delta_coplanar(void) { static const char* axes_r[] = {MU, ETA, CHI, PHI, NU, DELTA}; static const char* axes_w[] = {ETA, PHI, NU}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_eta_noncoplanar(void) { static const char* axes_r[] = {MU, ETA, CHI, PHI, NU, DELTA}; static const char* axes_w[] = {PHI, NU, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_incidence_esrf_bm28_psic_new, P99_PROTECT({MU, ETA, CHI, PHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_emergence_esrf_bm28_psic_new, P99_PROTECT({MU, ETA, CHI, PHI, NU, DELTA}), surface_parameters_y); /***********/ /* Engines */ /***********/ static HklEngine *hkl_engine_hkl_esrf_bm28_psic_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = constant_nu_coplanar(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_delta_coplanar()); hkl_engine_add_mode(self, constant_eta_noncoplanar()); return self; } /***************/ /* Engine list */ /***************/ static HklEngineList *hkl_engine_list_new_ESRF_BM28_PSIC(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_hkl_esrf_bm28_psic_new(self); hkl_engine_incidence_esrf_bm28_psic_new(self); hkl_engine_emergence_esrf_bm28_psic_new(self); return self; } /* Register the diffractometer into the factory */ REGISTER_DIFFRACTOMETER(ESRF_BM28_PSIC, "ESRF BM28 PSIC", HKL_GEOMETRY_ESRF_BM28_PSIC_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis.c0000664000175000017500000005762215133711150015157 0ustar00piccapicca/* * This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fprintf, FILE #include // for free #include // for NULL, strcmp #include // for uint #include "hkl-detector-private.h" // for hkl_detector_new_copy #include "hkl-geometry-private.h" // for _HklGeometryList, etc #include "hkl-macros-private.h" // for hkl_assert, HKL_MALLOC, etc #include "hkl-parameter-private.h" // for hkl_parameter_list_fprintf, etc #include "hkl-pseudoaxis-private.h" // for _HklEngine, _HklEngineList, etc #include "hkl-sample-private.h" #include "hkl.h" // for HklEngine, HklEngineList, etc #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_foreach, darray_init, etc /***********/ /* HklMode */ /***********/ /** * hkl_mode_fprintf: (skip) * @f: * @self: * * print to a FILE the HklPSeudoAxisEngineMode members **/ void hkl_mode_fprintf(FILE *f, const HklMode *self) { HklParameter **parameter; const char **axis; fprintf(f, "mode: \"%s\"\n", self->info->name); fprintf(f, "initialized_get: %p\n", self->ops->initialized_get); fprintf(f, "initialized_set: %p\n", self->ops->initialized_set); fprintf(f, "get: %p\n", self->ops->get); fprintf(f, "set: %p\n", self->ops->set); darray_foreach(parameter, self->parameters){ fprintf(f, "\n "); hkl_parameter_fprintf(f, *parameter); } fprintf(f, "axes (read) names:"); darray_foreach(axis, self->info->axes_r) fprintf(f, " %s", *axis); fprintf(f, "\n"); fprintf(f, "axes (write) names:"); darray_foreach(axis, self->info->axes_w) fprintf(f, " %s", *axis); fprintf(f, "\n"); } /*************/ /* HklEngine */ /*************/ /** * hkl_engine_name_get: * @self: the this ptr * * Return value: the name of the HklEngine **/ const char *hkl_engine_name_get(const HklEngine *self) { return self->info->name; } /** * hkl_engine_len: (skip) * @self: the this ptr * * Return value: the len of the pseudo axes of the HklEngine **/ unsigned int hkl_engine_len(const HklEngine *self) { return darray_size(self->info->pseudo_axes); } /** * hkl_engine_pseudo_axis_names_get: * @self: the this ptr * * Return value: (type gpointer): the pseudo_axes managed by this #HklEngine **/ const darray_string *hkl_engine_pseudo_axis_names_get(HklEngine *self) { return &self->pseudo_axis_names; } /** * hkl_engine_pseudo_axis_values_get: * @self: the this ptr * @values: (array length=n_values): the values to get * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * * Get the engine pseudo axes values * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_pseudo_axis_values_get(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) { hkl_error(error == NULL ||*error == NULL); if(n_values != darray_size(self->info->pseudo_axes)){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_GET, "cannot get engine pseudo axes, wrong number of parameter (%zd) given, (%zd) expected\n", n_values, darray_size(self->info->pseudo_axes)); return FALSE; } if(!hkl_engine_get(self, error)){ hkl_assert(error == NULL || *error != NULL); return FALSE; } hkl_assert(error == NULL || *error == NULL); for(size_t i=0; ipseudo_axes, i), unit_type); } return TRUE; } /** * hkl_engine_pseudo_axis_values_set: * @self: the this ptr * @values: (array length=n_values): the values to set * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * Set the engine pseudo axes values * * Return value: #HklGeometryList or NULL if no solution was found, * use hkl_geometry_list_free to release the memory once done. **/ HklGeometryList *hkl_engine_pseudo_axis_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) { #if LOGGING char *msg; size_t msg_size; FILE *stream; #endif HklGeometryList *solutions = NULL; hkl_error(error == NULL ||*error == NULL); if(NULL == values) goto skipped_values_extraction; if(n_values != darray_size(self->info->pseudo_axes)){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PSEUDO_AXIS_VALUES_SET, "cannot set engine pseudo axes, wrong number of parameter (%zd) given, (%zd) expected\n", n_values, darray_size(self->info->pseudo_axes)); goto out; } #if LOGGING stream = open_memstream(&msg, &msg_size); fprintf(stream, "%s(", __func__); fprintf(stream, "self: %s, values: [", hkl_engine_name_get(self)); for(size_t i=0; iengines->geometry); hkl_sample_fprintf(stream, self->engines->sample); hkl_engine_fprintf(stream, self); #endif for(size_t i=0; ipseudo_axes, i), values[i], unit_type, error)){ goto clean_stream_out; } } skipped_values_extraction: if(!hkl_engine_set(self, error)){ #if LOGGING fflush(stream); g_message(msg); if(error && *error != NULL) g_warning("%s", (*error)->message); #endif goto clean_stream_out; } solutions = hkl_geometry_list_new_copy(self->engines->geometries); #if LOGGING hkl_geometry_list_fprintf(stream, solutions); fflush(stream); g_message(msg); #endif clean_stream_out: #if LOGGING fclose(stream); free(msg); #endif out: return solutions; } /** * hkl_engine_pseudo_axis_get: * @self: the this ptr * @name: the name of the expected pseudo_axis * @error: return location for a GError, or NULL * * get the #HklParameter with the given @name. * * Returns: (allow-none): retun the parameter or NULL if the engine * does not contain this pseudo_axis. * TODO: unit test **/ const HklParameter *hkl_engine_pseudo_axis_get(const HklEngine *self, const char *name, GError **error) { HklParameter **parameter; hkl_error (error == NULL || *error == NULL); darray_foreach(parameter, self->pseudo_axes) if(!strcmp((*parameter)->name, name)) return *parameter; g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PSEUDO_AXIS_SET, "This pseudo axis doesn not contain this pseudo axis \"%s\"\n", name); return NULL; } /** * hkl_engine_pseudo_axis_set: (skip) * @self: the this ptr * @name: the name of the pseudo_axis to set * @parameter: the parameter to set. * @error: return location for a GError, or NULL * * set a parameter of the #HklEngine * * Return value: #HklGeometryList or NULL if no solution was found, * use hkl_geometry_list_free to release the memory once done. **/ HklGeometryList *hkl_engine_pseudo_axis_set(HklEngine *self, const char *name, const HklParameter *parameter, GError **error) { HklParameter **p; hkl_error (error == NULL || *error == NULL); hkl_error (strcmp(name, parameter->name) == 0); darray_foreach(p, self->pseudo_axes) if(!strcmp((*p)->name, parameter->name)){ /* todo save the previous value to restore this value */ hkl_parameter_init_copy(*p, parameter, NULL); if(!hkl_engine_set(self, error)){ hkl_assert(error == NULL || *error != NULL); return NULL; } hkl_assert(error == NULL || *error == NULL); return hkl_geometry_list_new_copy(self->engines->geometries); } g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PSEUDO_AXIS_SET, "Can not find the pseudo axis \"%s\" in the \"%s\" engine\n", parameter->name, self->info->name); return NULL; } /** * hkl_engine_capabilities_get: * @self: the this ptr * * return the capabilities of the engine. Theses capabilities can * change, from on mode to the other. for now there is three kind of * capabilities. * * HKL_ENGINE_CAP_READABLE: pseudo axes values can be read from the HklEngine * * HKL_ENGINE_CAP_WRITABLE: pseudo axes values can be set for this #HklEngine * * HKL_ENGINE_CAP_INITIALISABLE: this pseudo axes must be initialized * with hkl_engine_initialize before * reading or writing on it. * * Returns: **/ unsigned int hkl_engine_capabilities_get(const HklEngine *self) { return self->mode->ops->capabilities; } /** * hkl_engine_modes_names_get: * @self: the this ptr * * Return value: (type gpointer): All the modes supported by the #HklEngine **/ const darray_string *hkl_engine_modes_names_get(const HklEngine *self) { return &self->mode_names; } /** * hkl_engine_parameters_names_get: * @self: the this ptr * * Return value: (type gpointer): All the parameters of #HklEngine. **/ const darray_string *hkl_engine_parameters_names_get(const HklEngine *self) { return &self->mode->parameters_names; } /** * hkl_engine_parameters_values_get: (skip) * @self: the this ptr * @values: (array length=n_values): the values to get * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * * Get the engine parameters values **/ void hkl_engine_parameters_values_get(const HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type) { g_return_if_fail (n_values == darray_size(self->mode->parameters)); for(size_t i=0; imode->parameters, i), unit_type); } /** * hkl_engine_parameters_values_set: * @self: the this ptr * @values: (array length=n_values): the values to set * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * Set the engine parameters values * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_parameters_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) { hkl_error (error == NULL || *error == NULL || n_values == darray_size(self->mode->parameters)); for(size_t i=0; imode->parameters, i), values[i], unit_type, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } } hkl_assert (error == NULL || *error == NULL); return TRUE; } /** * hkl_engine_parameter_get: * @self: the this ptr * @name: the name of the expected parameter * @error: return location for a GError, or NULL * * get the #HklParameter with the given @name. * * Returns: (allow-none): return the parameter or NULL if the engine * does not contain this parameter. **/ const HklParameter *hkl_engine_parameter_get(const HklEngine *self, const char *name, GError **error) { HklParameter **parameter; hkl_error (error == NULL || *error == NULL); darray_foreach(parameter, self->mode->parameters) if(!strcmp((*parameter)->name, name)) return *parameter; g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PARAMETER_GET, "this engine does not contain this parameter \"%s\"\n", name); return NULL; } /** * hkl_engine_parameter_set: * @self: the this ptr * @name: the name of the parameter to set. * @parameter: the parameter to set. * @error: return location for a GError, or NULL * * set a parameter of the #HklEngine * TODO add an error * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_parameter_set(HklEngine *self, const char *name, const HklParameter *parameter, GError **error) { HklParameter **p; hkl_error (error == NULL || *error == NULL); darray_foreach(p, self->mode->parameters) if(!strcmp(name, (*p)->name)){ const char *old_name = (*p)->name; hkl_parameter_init_copy(*p, parameter, NULL); /* we do not check if the name is identical so force the right name */ /* TODO rethink this HklParameter assignement */ (*p)->name = old_name; return TRUE; } g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_PARAMETER_SET, "this engine does not contain this parameter \"%s\"\n", parameter->name); return FALSE; } /** * hkl_engine_current_mode_get: * @self: the this ptr * * Returns: the current HklEngine mode **/ const char *hkl_engine_current_mode_get(const HklEngine *self) { return self->mode->info->name; } /** * hkl_engine_current_mode_set: * @self: the HklEngine * @name: the mode to select * @error: return location for a GError, or NULL * * This method also populate the self->axes from the mode->axis_names. * this is to speed the computation of the numerical axes. * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_current_mode_set(HklEngine *self, const char *name, GError **error) { HklMode **mode; hkl_error (error == NULL || *error == NULL); darray_foreach(mode, self->modes) if(!strcmp((*mode)->info->name, name)){ hkl_engine_mode_set(self, *mode); return TRUE; } g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_CURRENT_MODE_SET, "this engine does not contain this mode \"%s\"\n", name); return FALSE; } /** * hkl_engine_axis_names_get: * @self: the this ptr * @mode: * * return a list of axes relevant when reading or writing on the * #HklEngine. * * exemple, for a K6C diffractometer in "lifting detector" mode, your * Engine control only 3 motors when writing, but the hkl values * depends on the 6 motors when reading. * * Returns: (type gpointer): **/ const darray_string *hkl_engine_axis_names_get(const HklEngine *self, HklEngineAxisNamesGet mode) { switch(mode){ case HKL_ENGINE_AXIS_NAMES_GET_READ: return &self->mode->info->axes_r; case HKL_ENGINE_AXIS_NAMES_GET_WRITE: return &self->mode->info->axes_w; default: return NULL; } } int hkl_engine_initialized_get(const HklEngine *self) { return hkl_mode_initialized_get(self->mode); } /** * hkl_engine_initialized_set: * @self: the HklEngine * @initialized: TRUE or FALSE to activated or deactivate the HklEngine * @error: return location for a GError, or NULL * * initialize the HklEngine * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_initialized_set(HklEngine *self, int initialized, GError **error) { hkl_error (error == NULL || *error == NULL); if(!self->geometry || !self->detector || !self->sample || !self->mode) { g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_INITIALIZE, "Internal error"); return FALSE; } return hkl_mode_initialized_set(self->mode, self, self->engines->geometry, self->engines->detector, self->engines->sample, initialized, error); } /** * hkl_engine_dependencies_get: * @self: the this ptr * * return all dependencies of the engine which are not mode parameters * or axes. The possible combination of values are defined in * #HklEngineDependencies enum. * * return value: **/ unsigned int hkl_engine_dependencies_get(const HklEngine *self) { return self->info->dependencies; } /** * hkl_engine_fprintf: (skip) * @f: the FILE * @self: the HklEngine * * print to a FILE the HklEngine **/ void hkl_engine_fprintf(FILE *f, const HklEngine *self) { HklParameter **pseudo_axis; fprintf(f, "\nPseudoAxesEngine : \"%s\"", self->info->name); /* mode */ if (self->mode) { fprintf(f, " %s", self->mode->info->name); for(uint i=0; imode->parameters); ++i){ fprintf(f, "\n "); hkl_parameter_fprintf( f, darray_item(self->mode->parameters, i)); } fprintf(f, "\n"); } /* the pseudoAxes part */ darray_foreach(pseudo_axis, self->pseudo_axes){ fprintf(f, "\n "); hkl_parameter_fprintf(f, *pseudo_axis); } if(self->engines->geometries->n_items != 0){ fprintf(f, "\n "); hkl_geometry_list_fprintf(f, self->engines->geometries); } fprintf(f, "\n"); } /*****************/ /* HklEngineList */ /*****************/ /** * hkl_engine_list_free: (skip) * @self: the #HklEngineList to destroy * * destructor **/ void hkl_engine_list_free(HklEngineList *self) { self->ops->free(self); } /** * hkl_engine_list_engines_get: (skip) * @self: the this ptr * * Return: a pointer on the engine array **/ darray_engine *hkl_engine_list_engines_get(HklEngineList *self) { return (darray_engine *)self; } /** * hkl_engine_list_geometry_get: (skip) * @self: the this ptr * * Return: a pointer on the geometry member **/ HklGeometry *hkl_engine_list_geometry_get(HklEngineList *self) { return self->geometry; } int hkl_engine_list_geometry_set(HklEngineList *self, const HklGeometry *geometry) { if(!hkl_geometry_set(self->geometry, geometry)) return FALSE; hkl_engine_list_get(self); return TRUE; } /** * hkl_engine_list_select_solution: * @self: the this ptr * @item: the #HklGeoemtryListItem selected. * * this method set the geometry member with the selected solution. * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_list_select_solution(HklEngineList *self, const HklGeometryListItem *item) { return hkl_geometry_init_geometry(self->geometry, item->geometry); } /** * hkl_engine_list_engine_get_by_name: * @self: the this ptr * @name: the name of the requested #HklPseudoAxisEngin * @error: return location for a GError, or NULL * * get the #HklEngine by its name from the list. * * Returns: (transfer none) (allow-none): the requested engine **/ HklEngine *hkl_engine_list_engine_get_by_name(HklEngineList *self, const char *name, GError **error) { HklEngine **engine; hkl_error (error == NULL || *error == NULL); darray_foreach(engine, *self){ if (!strcmp((*engine)->info->name, name)) return *engine; } g_set_error(error, HKL_ENGINE_LIST_ERROR, HKL_ENGINE_LIST_ERROR_ENGINE_GET_BY_NAME, "this engine list does not contain this engine \"%s\"", name); return NULL; } /** * hkl_engine_list_init: * @self: the engine list * @geometry: the associated #HklGeometry * @detector: the associated #HklDetector * @sample: the associated #HklSample * * before using an engine list you must associate all engines to a * Geometry, a detector and a sample. **/ void hkl_engine_list_init(HklEngineList *self, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { HklEngine **engine; self->geometry = geometry; self->detector = detector; self->sample = sample; darray_foreach(engine, *self){ hkl_engine_prepare_internal(*engine); } } /** * hkl_engine_list_get: * @self: the list of #HklEngine * * apply the get method to all the #HklEngine of the list * after this it is possible to retrive all the #HklPseudoAxis values. * * Returns: HKL_SUCCESS or HKL_FAIL if one of the #HklEngine * get method failed. **/ int hkl_engine_list_get(HklEngineList *self) { HklEngine **engine; int res = TRUE; darray_foreach(engine, *self){ res &= hkl_engine_get(*engine, NULL); } return res; } /** * hkl_engine_list_parameters_names_get: * @self: the this ptr * * Return value: (type gpointer): All the parameters of #HklEngineList. **/ const darray_string *hkl_engine_list_parameters_names_get(const HklEngineList *self) { return &self->parameters_names; } /** * hkl_engine_list_parameters_values_get: (skip) * @self: the this ptr * @values: (array length=n_values): the values to get * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * * Get the engine parameters values **/ void hkl_engine_list_parameters_values_get(const HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type) { g_return_if_fail (n_values == darray_size(self->parameters)); for(size_t i=0; iparameters, i), unit_type); } /** * hkl_engine_list_parameters_values_set: * @self: the this ptr * @values: (array length=n_values): the values to set * @n_values: the size of the values array. * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * Set the engine parameters values * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_list_parameters_values_set(HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) { hkl_error (error == NULL || *error == NULL || n_values == darray_size(self->parameters)); for(size_t i=0; iparameters, i), values[i], unit_type, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } } hkl_assert (error == NULL || *error == NULL); return TRUE; } /** * hkl_engine_list_parameter_get: * @self: the this ptr * @name: the name of the expected parameter * @error: return location for a GError, or NULL * * get the #HklParameter with the given @name. * * Returns: (allow-none): return the parameter or NULL if the engine * does not contain this parameter. **/ const HklParameter *hkl_engine_list_parameter_get(const HklEngineList *self, const char *name, GError **error) { HklParameter **parameter; hkl_error (error == NULL || *error == NULL); darray_foreach(parameter, self->parameters) if(!strcmp((*parameter)->name, name)) return *parameter; g_set_error(error, HKL_ENGINE_LIST_ERROR, HKL_ENGINE_LIST_ERROR_PARAMETER_GET, "this engine list does not contain this parameter \"%s\"\n", name); return NULL; } /** * hkl_engine_list_parameter_set: * @self: the this ptr * @name: the name of the parameter to set. * @parameter: the parameter to set. * @error: return location for a GError, or NULL * * set a parameter of the #HklEngine * TODO add an error * * return value: TRUE if succeded or FALSE otherwise. **/ int hkl_engine_list_parameter_set(HklEngineList *self, const char *name, const HklParameter *parameter, GError **error) { HklParameter **p; hkl_error (error == NULL || *error == NULL); darray_foreach(p, self->parameters) if(!strcmp(name, (*p)->name)){ const char *old_name = (*p)->name; hkl_parameter_init_copy(*p, parameter, NULL); /* we do not check if the name is identical so force the right name */ /* TODO rethink this HklParameter assignement */ (*p)->name = old_name; return TRUE; } g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_LIST_ERROR_PARAMETER_SET, "this engine list does not contain this parameter \"%s\"\n", parameter->name); return FALSE; } /** * hkl_engine_list_fprintf: (skip) * @f: the File * @self: the list * * print to a FILE the #HklEngineList **/ void hkl_engine_list_fprintf(FILE *f, const HklEngineList *self) { HklEngine **engine; darray_foreach(engine, *self){ hkl_engine_fprintf(f, *engine); } } hkl-5.1.7/hkl/hkl-pseudoaxis-common-eulerians.c0000664000175000017500000002053315062214312020420 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include // for gsl_sf_angle_restrict_symm #include // for sin, asin, M_PI_2, tan, etc #include // for free #include // for uint #include "hkl-geometry-private.h" #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-pseudoaxis-common-eulerians-private.h" #include "hkl-pseudoaxis-private.h" // for _HklPseudoAxis, etc #include "hkl.h" // for HklParameter, HklPseudoAxis, etc #include "hkl/ccan/array_size/array_size.h" // for ARRAY_SIZE #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_item typedef struct _HklModeEulerians HklModeEulerians; typedef struct _HklEngineEulerians HklEngineEulerians; struct _HklModeEulerians { HklMode parent; HklParameter *solutions; }; struct _HklEngineEulerians { HklEngine engine; HklParameter *omega; HklParameter *chi; HklParameter *phi; }; #define HKL_MODE_EULERIANS_ERROR hkl_mode_eulerians_error_quark () static GQuark hkl_mode_eulerians_error_quark (void) { return g_quark_from_static_string ("hkl-mode-eulerians-error-quark"); } typedef enum { HKL_MODE_EULERIANS_ERROR_SET, /* can not set the engine */ } HklModeEuleriansError; static int kappa_to_eulerian(const double angles[], double *omega, double *chi, double *phi, double alpha, int solution) { const double komega = angles[0]; const double kappa = gsl_sf_angle_restrict_symm(angles[1]); const double kphi = angles[2]; const double p = atan(tan(kappa/2.) * cos(alpha)); if (solution){ *omega = komega + p - M_PI_2; *chi = 2 * asin(sin(kappa/2.) * sin(alpha)); *phi = kphi + p + M_PI_2; }else{ *omega = komega + p + M_PI_2; *chi = -2 * asin(sin(kappa/2.) * sin(alpha)); *phi = kphi + p - M_PI_2; } return TRUE; } static int eulerian_to_kappa(const double omega, const double chi, const double phi, double angles[], double alpha, double solution) { int status = TRUE; double *komega = &angles[0]; double *kappa = &angles[1]; double *kphi = &angles[2]; if (fabs(chi) <= alpha * 2){ const double p = asin(tan(chi/2.)/tan(alpha)); if (solution){ *komega = omega - p + M_PI_2; *kappa = 2 * asin(sin(chi/2.)/sin(alpha)); *kphi = phi - p - M_PI_2; }else{ *komega = omega + p - M_PI_2; *kappa = -2 * asin(sin(chi/2.)/sin(alpha)); *kphi = phi + p + M_PI_2; } }else status = FALSE; return status; } void kappa_2_kappap(double komega, double kappa, double kphi, double alpha, double *komegap, double *kappap, double *kphip) { double p = atan(tan(kappa/2.) * cos(alpha)); double omega = komega + p - M_PI_2; double phi = kphi + p + M_PI_2; *komegap = gsl_sf_angle_restrict_symm(2*omega - komega); *kappap = -kappa; *kphip = gsl_sf_angle_restrict_symm(2*phi - kphi); } /***********/ /* HklMode */ /***********/ static int hkl_mode_get_eulerians_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklModeEulerians *self = container_of(base, HklModeEulerians, parent); HklEngineEulerians *eulerians = container_of(engine, HklEngineEulerians, engine);; const double angles[] = { hkl_parameter_value_get( hkl_geometry_get_axis_by_name(geometry, "komega"), HKL_UNIT_DEFAULT), hkl_parameter_value_get( hkl_geometry_get_axis_by_name(geometry, "kappa"), HKL_UNIT_DEFAULT), hkl_parameter_value_get( hkl_geometry_get_axis_by_name(geometry, "kphi"), HKL_UNIT_DEFAULT), }; hkl_geometry_update(geometry); kappa_to_eulerian(angles, &eulerians->omega->_value, &eulerians->chi->_value, &eulerians->phi->_value, 50 * HKL_DEGTORAD, self->solutions->_value); return TRUE; } static int hkl_mode_set_eulerians_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklModeEulerians *self = container_of(base, HklModeEulerians, parent); HklEngineEulerians *eulerians = container_of(engine, HklEngineEulerians, engine);; double angles[3]; if(!eulerian_to_kappa(eulerians->omega->_value, eulerians->chi->_value, eulerians->phi->_value, angles, 50 * HKL_DEGTORAD, self->solutions->_value)){ g_set_error(error, HKL_MODE_EULERIANS_ERROR, HKL_MODE_EULERIANS_ERROR_SET, "unreachable solution : 0° < chi < 50°"); return FALSE; }else hkl_engine_add_geometry(engine, angles); return TRUE; } static HklMode *mode_eulerians() { static const char *axes[] = {"komega", "kappa", "kphi"}; static const HklParameter parameters[] = { { HKL_PARAMETER_DEFAULTS,.name = "solutions", ._value = 1, .description = "(0/1) to select the first or second solution", .range = { .min = 0, .max = 1 }, }, }; static const HklModeInfo info = { HKL_MODE_INFO_WITH_PARAMS("eulerians", axes, axes, parameters), }; static const HklModeOperations operations = { HKL_MODE_OPERATIONS_DEFAULTS, .get = hkl_mode_get_eulerians_real, .set = hkl_mode_set_eulerians_real, }; HklMode *mode = NULL; HklModeEulerians *self = g_new(HklModeEulerians, 1); if(NULL == self) goto error; /* the base constructor; */ mode = &self->parent; hkl_mode_init(mode, &info, &operations, TRUE); self->solutions = register_mode_parameter(mode, 0); error: return mode; }; /*************/ /* HklEngine */ /*************/ static void hkl_engine_eulerians_free_real(HklEngine *base) { HklEngineEulerians *self; self = container_of(base, HklEngineEulerians, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_eulerians_new(HklEngineList *engines) { HklEngineEulerians *self; HklEngine *engine = NULL; HklMode *mode; static const HklParameter omega = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "omega", .description = "omega equivalent for a four circle eulerian geometry", }; static const HklParameter chi = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "chi", .description = "chi equivalent for a four circle eulerian geometry", }; static const HklParameter phi = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "phi", .description = "phi equivalent for a four circle eulerian geometry", }; static const HklParameter *pseudo_axes[] = {&omega, &chi, &phi}; static HklEngineInfo info = { HKL_ENGINE_INFO("eulerians", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES), }; static HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_eulerians_free_real, }; self = g_new(HklEngineEulerians, 1); hkl_engine_init(&self->engine, &info, &operations, engines); /* add the pseudo axes with the new API */ self->omega = register_pseudo_axis(&self->engine, engines, &omega); self->chi = register_pseudo_axis(&self->engine, engines, &chi); self->phi = register_pseudo_axis(&self->engine, engines, &phi); /* eulerians [default] */ mode = mode_eulerians(); if(NULL == mode) goto error; hkl_engine_add_mode(&self->engine, mode); hkl_engine_mode_set(&self->engine, mode); engine = &self->engine; return engine; error: free(self); return engine; } hkl-5.1.7/hkl/hkl-engine-petra3-p08-lisa.c0000664000175000017500000005526615133711150016771 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * Copyright (C) 2017 DESY * * Authors: Picca Frédéric-Emmanuel * Teresa Núñez */ #include "hkl.h" #include // for gsl_isnan #include "hkl-axis-private.h" #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-matrix-private.h" #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #include "hkl-sample-private.h" /*********************** Description There are 5 real motors: mchi (monochromator rotation) -> rotation y axis +1 sphi (sample rotation) -> rotation z axis +1 dtth (detector table rotation) -> rotation z axis -1 dh (detector height) -> translation z axis +1 drot (detector rotation) -> rotation x axis +1 There are 4 pseudo motors related to them: alpha (incident angle - kin with xy plane) beta (outgoing angle - kout with xy plane) sth (angle between the kin projection and the vector defined via sphi) stth (angle between kin and kout projections in the xy plane) sth and stth has to be independently as pseudomotors. For a given energy, E, one can compute mchi, sphi, dtth, dh and drot from alpha, beta, th and tth and viceversa. The solutions are not unique, for fixing them one has to set: FRED: reading this and looking at the schema, it seems that you need a pseudo motor engine with the four pseudo motors. something which takes alpha, beta, sth and stth in order to compute the 5 real motors positions. So maybe the right things to do is to create a pm with all the pseudo motors and not only stth and sth. Teresa: I agree. The users told me only about stth and sth, as the manual also says, but it is better to have the four ones. Maybe the right things to do is to create for now, only pseudo motors with the read part. So once we have this setup it will be easier for us to understand what is going on. - Detector rotation tracking -> the detector table rotation, dtth, follows the monochromator rotation, mchi, so that the position of stth stays constant. For stth = 0 the detector is in diffraction plane. - mchi rotation direction -> if set to '+' the mchi angle goes from 0 to pi, set to '-' it goes from 0 to -pi. - allow rotation sample -> if 'yes' the sample will be rotated with the monochromator, so that sth will stay constant. If 'no' the sample will not be rotated. The following geometry constants have to be set: - distance sample center to detector = 500 - distance first crystal (mono1) to sample center = 650 - distance first crystal (mono1) to second one (mono2) = 25 - first crystal diffraction parameter - second crystal diffraction parameter lambda = hc_over_e/Energy bragg1 = g_tau1 * lambda * 1/(4*pi) bragg2 = g_tau2 * lambda * 1/(4*pi) where the crystals used are Si111 and Si220. g_tau1 = 2*PI/d111 g_tau2 = 2*PI/d220 where d111 and d220 are the lattice plane distances (in Amstrong) of the crystals. d111 = 3.136 A d220 = 1.920 A FRED: Do you want to set these parameters in the code or do you want to add these parameters to the geometry dynamiquely ? So the user can change this during the experimenta ? I would prefer a static declaration for now in the code. For a alpha, beta, th and tth set there are different possibilities of choosing the position of the real motors for getting a given h,k,l. Four possible geometry modes have to be implemented, each mode gives an unique solution for the real computers computed from the angles. These modes are: - mode 0 -> K axis from reciprocal space parallel to incident beam. - mode 1 -> alpha = beta - mode 2 -> th = tth/2 - mode 3 -> K axis from reciprocal space parallel to outgoing beam. There are some corrections (motor movements) that have to be done if the energy is changed, in order to correct the shifts in the position of the beam on the sample. *******************/ /**************/ /* Axes names */ /**************/ #define SPHI "sphi" #define DTTH "dtth" #define DH "dh" #define DROT "drot" #define MCHI "mchi" #define D_SD 0.5 /* meter */ #define D_Si111 3.136 /* Si111 of mono1 Angstöm */ #define D_Si220 1.920 /* Si220 ok mono2 Angstöm */ #define PETRA3_P08_LISA_SOURCE_HOLDER_IDX 0 #define PETRA3_P08_LISA_SAMPLE_HOLDER_IDX 1 #define PETRA3_P08_LISA_DETECTOR_HOLDER_IDX 2 #define HKL_GEOMETRY_PETRA3_P08_LISA_DESCRIPTION \ "+ xrays source fix along the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 1 axes for the monochromator\n" \ "\n" \ " + **" MCHI "** : rotation around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "\n" \ "+ 1 axis for the sample\n" \ "\n" \ " + **" SPHI "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" DTTH "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" DH "** : translation along the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DROT "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static double _alpha_max(double wavelength, double d1, double d2) { double theta1 = asin(wavelength / (2 * d1)); double theta2 = asin(wavelength / (2 * d2)); return 2 * (theta2 - theta1); } static int hkl_mode_hkl_petra3_p08_lisa_get_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklHolder *holder; HklMatrix RUB; HklVector hkl; HklVector ki; HklVector Q; HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); /* update the geometry internals */ hkl_geometry_update(geometry); /* R * UB */ /* for the lisa geometry the holder 1 is the sample holder. */ holder = hkl_geometry_sample_holder_get(geometry, sample); hkl_quaternion_to_matrix(&holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &sample->UB); /* kf - ki = Q */ ki = hkl_geometry_ki_get(geometry); Q = hkl_geometry_kf_get(geometry, detector); hkl_vector_minus_vector(&Q, &ki); /* compute hkl */ hkl_matrix_solve(&RUB, &hkl, &Q); engine_hkl->h->_value = hkl.data[0]; engine_hkl->k->_value = hkl.data[1]; engine_hkl->l->_value = hkl.data[2]; return TRUE; } int hkl_mode_hkl_petra3_p08_lisa_set_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { /* FRED: to implement */ /* int last_axis; */ /* hkl_error (error == NULL || *error == NULL); */ /* /\* check the input parameters *\/ */ /* if(!hkl_is_reachable(engine, geometry->source.wave_length, */ /* error)){ */ /* hkl_assert(error == NULL || *error != NULL); */ /* return FALSE; */ /* } */ /* hkl_assert(error == NULL || *error == NULL); */ /* /\* compute the mode *\/ */ /* if(!hkl_mode_auto_set_real(self, engine, */ /* geometry, detector, sample, */ /* error)){ */ /* hkl_assert(error == NULL || *error != NULL); */ /* //fprintf(stdout, "message :%s\n", (*error)->message); */ /* return FALSE; */ /* } */ /* hkl_assert(error == NULL || *error == NULL); */ /* /\* check that the mode allow to move a sample axis *\/ */ /* /\* FIXME for now the sample holder is the first one *\/ */ /* last_axis = get_last_axis_idx(geometry, 0, &self->info->axes_w); */ /* if(last_axis >= 0){ */ /* uint i; */ /* const HklGeometryListItem *item; */ /* uint len = engine->engines->geometries->n_items; */ /* /\* For each solution already found we will generate another one *\/ */ /* /\* using the Ewalds construction by rotating Q around the last sample *\/ */ /* /\* axis of the mode until it intersect again the Ewald sphere. *\/ */ /* /\* FIXME do not work if ki is colinear with the axis. *\/ */ /* /\* for this we needs : *\/ */ /* /\* - the coordinates of the end of the Q vector (q) *\/ */ /* /\* - the last sample axis orientation of the mode (axis_v) *\/ */ /* /\* - the coordinates of the center of the ewalds sphere (c) *\/ */ /* /\* - the coordinates of the center of rotation of the sample (o = 0, 0, 0) *\/ */ /* /\* then we can : *\/ */ /* /\* - project the origin in plane of normal axis_v containing q (o') *\/ */ /* /\* - project the center of the ewalds sphere into the same plan (c') *\/ */ /* /\* - rotate q around this (o', c') line of 180° to find the (q2) solution *\/ */ /* /\* - compute the (kf2) corresponding to this q2 solution *\/ */ /* /\* at the end we just need to solve numerically the position of the detector *\/ */ /* /\* we will add solution to the geometries so save its length before *\/ */ /* for(i=0, item=list_top(&engine->engines->geometries->items, HklGeometryListItem, list); */ /* iengines->geometries->items, item, list)){ */ /* int j; */ /* HklVector ki; */ /* HklVector kf2; */ /* HklVector q; */ /* HklVector axis_v; */ /* HklQuaternion qr; */ /* HklAxis *axis; */ /* HklVector cp = {{0}}; */ /* HklVector op = {{0}}; */ /* double angle; */ /* HklGeometry *geom; */ /* geom = hkl_geometry_new_copy(item->geometry); */ /* /\* get the Q vector kf - ki *\/ */ /* hkl_detector_compute_kf(detector, geom, &q); */ /* hkl_source_compute_ki(&geom->source, &ki); */ /* hkl_vector_minus_vector(&q, &ki); */ /* /\* compute the current orientation of the last axis *\/ */ /* axis = container_of(darray_item(geom->axes, */ /* darray_item(geom->holders, 0)->config->idx[last_axis]), */ /* HklAxis, parameter); */ /* axis_v = axis->axis_v; */ /* hkl_quaternion_init(&qr, 1, 0, 0, 0); */ /* for(j=0; jaxes, */ /* darray_item(geom->holders, 0)->config->idx[j]), */ /* HklAxis, parameter)->q); */ /* hkl_vector_rotated_quaternion(&axis_v, &qr); */ /* /\* - project the center of the ewalds sphere into the same plan (c') *\/ */ /* hkl_vector_minus_vector(&cp, &ki); */ /* hkl_vector_project_on_plan_with_point(&cp, &axis_v, &q); */ /* hkl_vector_project_on_plan_with_point(&op, &axis_v, &q); */ /* /\* - rotate q around this (o', c') line of 180° to find the (q2) solution *\/ */ /* kf2 = q; */ /* hkl_vector_rotated_around_line(&kf2, M_PI, &cp, &op); */ /* angle = hkl_vector_oriented_angle_points(&q, &op, &kf2, &axis_v); */ /* /\* TODO parameter list for geometry *\/ */ /* if(!hkl_parameter_value_set(&axis->parameter, */ /* hkl_parameter_value_get(&axis->parameter, HKL_UNIT_DEFAULT) + angle, */ /* HKL_UNIT_DEFAULT, error)) */ /* return FALSE; */ /* hkl_geometry_update(geom); */ /* #ifdef DEBUG */ /* fprintf(stdout, "\n- try to add a solution by rotating Q <%f, %f, %f> around the \"%s\" axis <%f, %f, %f> of %f radian", */ /* q.data[0], q.data[1], q.data[2], */ /* ((HklParameter *)axis)->name, */ /* axis_v.data[0], axis_v.data[1], axis_v.data[2], */ /* angle); */ /* fprintf(stdout, "\n op: <%f, %f, %f>", op.data[0], op.data[1], op.data[2]); */ /* fprintf(stdout, "\n q2: <%f, %f, %f>", kf2.data[0], kf2.data[1], kf2.data[2]); */ /* #endif */ /* hkl_vector_add_vector(&kf2, &ki); */ /* /\* at the end we just need to solve numerically the position of the detector *\/ */ /* if(fit_detector_position(self, geom, detector, &kf2)) */ /* hkl_geometry_list_add(engine->engines->geometries, */ /* geom); */ /* hkl_geometry_free(geom); */ /* } */ /* } */ return TRUE; } #define HKL_MODE_HKL_PETRA3_P08_LISA_OPERATIONS_DEFAULTS \ HKL_MODE_OPERATIONS_AUTO_DEFAULTS, \ .get = hkl_mode_hkl_petra3_p08_lisa_get_real, \ .set = hkl_mode_hkl_petra3_p08_lisa_set_real static const HklModeOperations hkl_mode_hkl_petra3_p08_lisa_operations = { HKL_MODE_HKL_PETRA3_P08_LISA_OPERATIONS_DEFAULTS, }; UNUSED static const char* hkl_geometry_petra3_p08_lisa_axes[] = {MCHI, SPHI, DTTH, DH, DROT}; static HklHolder *hkl_geometry_petra3_p08_lisa_sample_holder_get_real(const HklGeometry *geometry, const HklSample *sample) { return darray_item(geometry->holders, PETRA3_P08_LISA_SAMPLE_HOLDER_IDX); } static HklHolder *hkl_geometry_petra3_p08_lisa_detector_holder_get_real(const HklGeometry *geometry, const HklDetector *detector) { return darray_item(geometry->holders, PETRA3_P08_LISA_DETECTOR_HOLDER_IDX); } static HklVector hkl_geometry_petra3_p08_lisa_ki_get_real(const HklGeometry *geometry) { double alpha_max = _alpha_max(geometry->source.wave_length, D_Si111, D_Si220); HklHolder *holder; HklVector ki = {{cos(alpha_max), 0, -sin(alpha_max)}}; holder = darray_item(geometry->holders, PETRA3_P08_LISA_SOURCE_HOLDER_IDX); ki = hkl_holder_transformation_apply(holder, &ki); hkl_vector_times_double(&ki, HKL_TAU / geometry->source.wave_length); return ki; } static HklVector hkl_geometry_petra3_p08_lisa_kf_get_real(const HklGeometry *geometry, const HklDetector *detector) { HklHolder *holder; HklVector kf = {{D_SD, 0, 0}}; holder = hkl_geometry_detector_holder_get(geometry, detector); kf = hkl_holder_transformation_apply(holder, &kf); hkl_vector_normalize(&kf); hkl_vector_times_double(&kf, HKL_TAU / geometry->source.wave_length); return kf; } #define HKL_GEOMETRY_PETRA3_P08_LISA_OPERATIONS_DEFAULTS \ HKL_GEOMETRY_OPERATIONS_DEFAULTS, \ .sample_holder_get = hkl_geometry_petra3_p08_lisa_sample_holder_get_real, \ .detector_holder_get = hkl_geometry_petra3_p08_lisa_detector_holder_get_real, \ .ki_get = hkl_geometry_petra3_p08_lisa_ki_get_real, \ .kf_get = hkl_geometry_petra3_p08_lisa_kf_get_real UNUSED static HklGeometry *hkl_geometry_new_petra3_p08_lisa(const HklFactory *factory) { static HklGeometryOperations ops = {HKL_GEOMETRY_PETRA3_P08_LISA_OPERATIONS_DEFAULTS}; HklGeometry *self = hkl_geometry_new(factory, &ops); HklHolder *h; /* source */ h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MCHI, 1, 0, 0, &hkl_unit_angle_deg); /* sample */ h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, SPHI, 0, 0, 1, &hkl_unit_angle_deg); /* detector */ h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, DTTH, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_translation(h, DH, 0, 0, 1, &hkl_unit_length_mm); hkl_holder_add_rotation_with_origin(h, DROT, 0, -1, 0, D_SD, 0, 0, &hkl_unit_angle_deg); return self; } /*********/ /* Modes */ /********/ /* hkl modes */ static HklMode *k_parallel_incident(void) { /* TODO: check if the axes are correct, add the functions and implement them */ static const char* axes_r[] = {MCHI, SPHI, DTTH, DROT}; static const char* axes_w[] = {MCHI, SPHI, DTTH, DROT}; static const HklFunction *functions[] = {}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_hkl_petra3_p08_lisa_operations, TRUE); } static HklMode *alpha_eq_beta(void) { /* TODO: check if the axes are correct, add the functions and implement them */ static const char* axes_r[] = {MCHI, SPHI, DTTH, DROT}; static const char* axes_w[] = {MCHI, SPHI, DTTH, DROT}; static const HklFunction *functions[] = {}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_hkl_petra3_p08_lisa_operations, TRUE); } static HklMode *th_eq_tth2(void) { /* TODO: check if the axes are correct, add the functions and implement them */ static const char* axes_r[] = {MCHI, SPHI, DTTH, DROT}; static const char* axes_w[] = {MCHI, SPHI, DTTH, DROT}; static const HklFunction *functions[] = {}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_hkl_petra3_p08_lisa_operations, TRUE); } static HklMode *k_parallel_outgoing(void) { /* TODO: check if the axes are correct, add the functions and implement them */ static const char* axes_r[] = {MCHI, SPHI, DTTH, DROT}; static const char* axes_w[] = {MCHI, SPHI, DTTH, DROT}; static const HklFunction *functions[] = {}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_hkl_petra3_p08_lisa_operations, TRUE); } /* lisapm modes */ static const HklParameter mode_lisa_pm_parameters[] = { { HKL_PARAMETER_DEFAULTS, .name = "det_rot_tracking", ._value = 0, .description = "if 1, the detector table will be rotated with the monochromator, so that stth stays constant", .range = { .min=0, .max=1 }, }, { HKL_PARAMETER_DEFAULTS, .name = "mchi_rot_dir", ._value = 1, .description = "if 1 mchi angle goes from 0 to pi, if -1 from 0 to -pi", .range = { .min=-1, .max=1 }, }, { HKL_PARAMETER_DEFAULTS, .name = "sample_rot", ._value = 0, .description = "if 1, the sample will be rotated with the monochromator, so that sth stays constant.", .range = { .min=0, .max=1 }, }, }; static int _mode_lisa_pm_m_to_pm_func(const gsl_vector *x, void *params, gsl_vector *f) { /* TODO: implement it */ return GSL_SUCCESS; } static const HklFunction mode_lisa_pm_m_to_pm_func = { .function = _mode_lisa_pm_m_to_pm_func, .size = 3, }; static int _mode_lisa_pm_pm_to_m_func(const gsl_vector *x, void *params, gsl_vector *f) { /* TODO: implement it */ return GSL_SUCCESS; } static const HklFunction mode_lisa_pm_pm_to_m_func = { .function = _mode_lisa_pm_pm_to_m_func, .size = 3, }; static HklMode *mode_lisa_pm(void) { static const char* axes_r[] = {MCHI, SPHI, DTTH}; /* QUESTION: these are the two motors I need for computing sth and stth positions, is this right ??? */ static const char* axes_w[] = {MCHI, SPHI, DTTH}; /* QUESTION: these are the motors I move if I write to the pseudomotor sth or stth, is this right ??? */ /* here a list of functions use to solve the mode */ /* QUESTION: which functions should be here ???, I need one for computing motor positions from pseudomotor and one for computing pseudonmotor from motor positions. Why in the other diffractometers there is only one function here ??? */ /* FRED this are not the functions in order to do get and set but only to do the set. the get/set is done in the hkl_mode_operations. */ static const HklFunction *functions[] = {&mode_lisa_pm_m_to_pm_func, &mode_lisa_pm_pm_to_m_func}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, mode_lisa_pm_parameters), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_operations, /* FRED these operation must be specifique to the pseudo motors look at the read_only emergence pseudo in hkl-pseudoaxis-common-readonly code. */ TRUE); } /******************/ /* LisaPM Engine */ /*****************/ struct _HklEngineLisaPM { HklEngine engine; HklParameter *sth; HklParameter *stth; }; typedef struct _HklEngineLisaPM HklEngineLisaPM; static void hkl_engine_lisapm_free_real(HklEngine *base) { HklEngineLisaPM *self = container_of(base, HklEngineLisaPM, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_lisa_pm_new(HklEngineList *engines) { HklEngineLisaPM *self; static const HklParameter sth = { HKL_PARAMETER_DEFAULTS_ANGLE, .name="sth", .description = "angle of the projection of $\\vec{ki}$ in the $xy$ and the sample table rotation", }; static const HklParameter stth = { HKL_PARAMETER_DEFAULTS_ANGLE, .name="stth", .description = "angle of the projection of $\\vec{ki}$ in the $xy$ and the detector arm", }; static const HklParameter *pseudo_axes[] = {&sth, &stth}; static const HklEngineInfo info = { HKL_ENGINE_INFO("LisaPM", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_lisapm_free_real, }; self = g_new(HklEngineLisaPM, 1); hkl_engine_init(&self->engine, &info, &operations, engines); self->sth = register_pseudo_axis(&self->engine, engines, &sth); self->stth = register_pseudo_axis(&self->engine, engines, &stth); return &self->engine; } /***********/ /* Engines */ /***********/ static HklEngine *hkl_engine_petra3_p08_lisa_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = k_parallel_incident(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, alpha_eq_beta()); hkl_engine_add_mode(self, th_eq_tth2()); hkl_engine_add_mode(self, k_parallel_outgoing()); return self; } UNUSED static HklEngine *hkl_engine_petra3_p08_lisa_pm_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_lisa_pm_new(engines); default_mode = mode_lisa_pm(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /***************/ /* Engine list */ /***************/ UNUSED static HklEngineList *hkl_engine_list_new_petra3_p08_lisa(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_petra3_p08_lisa_hkl_new(self); /* hkl_engine_petra3_p08_lisa_pm_new(self); */ return self; } /* Register the diffractometer into the factory */ /* REGISTER_DIFFRACTOMETER(petra3_p08_lisa, "PETRA3 P08 LISA", HKL_GEOMETRY_PETRA3_P08_LISA_DESCRIPTION); */ hkl-5.1.7/hkl/hkl-pseudoaxis-common-private.h0000664000175000017500000000656214677222567020144 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #ifndef __HKL_PSEUDOAXIS_COMMON_PRIVATE__ #define __HKL_PSEUDOAXIS_COMMON_PRIVATE__ #include // for gsl_vector #include "hkl-pseudoaxis-auto-private.h" #include "hkl-pseudoaxis-private.h" // for HklModeOperations, etc #include "hkl.h" // for HklEngine, HklDetector, etc #include "hkl-pseudoaxis-common-readonly-private.h" struct HklHklRead { HklVector ki; HklVector kf; HklVector Q; HklVector hkl; }; extern struct HklHklRead hkl_hkl_read(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample); struct HklHklWrite { HklVector ki; HklVector kf; HklVector Q; HklVector hkl; HklVector dQ; }; extern struct HklHklWrite hkl_hkl_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl); /**************************/ /* hkl double_diffraction */ /**************************/ struct HklDoubleDiffractionWrite { struct HklHklWrite hkl1W; struct HklHklWrite hkl2W; HklVector kf2; }; extern struct HklDoubleDiffractionWrite hkl_double_diffraction_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl1, const HklVector *hkl2); /******************************************/ /* the psi_constant_vertical get set part */ /******************************************/ struct HklPsiWrite { struct HklHklWrite hklW; struct HklHklWrite hkl2W; HklVector Qn; /* Q normalized */ HklVector hkl2; /* projection of hkl2 on plan Q */ HklVector n; /* compute n the intersection of the plan P(kf, ki) and PQn (normal Qn) */ double psi; /* computed psi */ int status; }; extern struct HklPsiWrite hkl_psi_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl, const HklVector *hkl2); /***********************/ /* hkl emergence fixed */ /***********************/ struct HklEmergenceFixedWrite { struct HklHklWrite hklW; HklVector n; /* the surface orientation */ double emergence; /* the computed emergence */ }; extern struct HklEmergenceFixedWrite hkl_emergence_fixed_write(const HklGeometry *geometry, const HklDetector *detector, const HklSample *sample, const HklVector *hkl, const HklVector *n); #endif hkl-5.1.7/hkl/hkl-trajectory.c0000664000175000017500000000754714677222567015207 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl-macros-private.h" #include "hkl-geometry-private.h" #include "hkl-trajectory-private.h" HklTrajectoryResult * hkl_trajectory_result_new(void) { HklTrajectoryResult *self = g_new(HklTrajectoryResult, 1); darray_init(self->geometries); return self; } void hkl_trajectory_result_free(HklTrajectoryResult *self) { HklGeometry **geometry; darray_foreach(geometry, self->geometries){ hkl_geometry_free(*geometry); } darray_free(self->geometries); } void hkl_trajectory_add_geometry(HklTrajectoryResult *self, const HklGeometry *geometry) { darray_append(self->geometries, hkl_geometry_new_copy(geometry)); } /* HklTrajectoryStats */ HklTrajectoryStats *hkl_trajectory_stats_new(int n) { HklTrajectoryStats *self = g_new(HklTrajectoryStats, 1); self->n = 0; darray_init(self->nb_solutions); darray_init(self->axes_min); darray_init(self->axes_max); darray_init(self->axes_range); return self; } void hkl_trajectory_stats_free(HklTrajectoryStats *self) { darray_free(self->axes_range); darray_free(self->axes_max); darray_free(self->axes_min); darray_free(self->nb_solutions); free(self); } void hkl_trajectory_stats_add(HklTrajectoryStats *self, const HklGeometryList *geometries) { size_t i; const HklGeometryListItem *item = hkl_geometry_list_items_first_get(geometries); const HklGeometry *geometry = hkl_geometry_list_item_geometry_get(item); size_t n = darray_size(*hkl_geometry_axis_names_get(geometry)); darray_append(self->nb_solutions, hkl_geometry_list_n_items_get(geometries)); if(self->n == 0){ darray_resize(self->axes_min, n); darray_resize(self->axes_max, n); darray_resize(self->axes_range, n); hkl_geometry_axis_values_get(geometry, &darray_item(self->axes_min, 0), n, HKL_UNIT_USER); hkl_geometry_axis_values_get(geometry, &darray_item(self->axes_max, 0), n, HKL_UNIT_USER); }else{ double values[n]; hkl_geometry_axis_values_get(geometry, values, n, HKL_UNIT_USER); for(i=0; iaxes_min, i)) darray_item(self->axes_min, i) = values[i]; else if (values[i] > darray_item(self->axes_max, i)) darray_item(self->axes_max, i) = values[i]; } } for(i=0;iaxes_range, i) = darray_item(self->axes_max, i) - darray_item(self->axes_min, i); self->n += 1; } void hkl_trajectory_stats_fprintf(FILE *f, const HklTrajectoryStats *self) { size_t *p; double *v; fprintf(f, "Number of points of the trajectory: %zd\n", self->n); fprintf(f, "Solutions per points:"); darray_foreach(p, self->nb_solutions){ fprintf(f, " %zd", *p); } fprintf(f, "\n"); fprintf(f, "Axes minium:"); darray_foreach(v, self->axes_min){ fprintf(f, " %f", *v); } fprintf(f, "\n"); fprintf(f, "Axes max:"); darray_foreach(v, self->axes_max){ fprintf(f, " %f", *v); } fprintf(f, "\n"); fprintf(f, "Axes range:"); darray_foreach(v, self->axes_range){ fprintf(f, " %f", *v); } fprintf(f, "\n"); } hkl-5.1.7/hkl/hkl-factory-private.h0000664000175000017500000000357214677222567016137 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_FACTORY_PRIVATE_H__ #define __HKL_FACTORY_PRIVATE_H__ #include "hkl.h" #include "hkl/ccan/autodata/autodata.h" G_BEGIN_DECLS typedef HklGeometry* (* HklFactoryGeometryFunction) (const HklFactory *factory); typedef HklEngineList* (* HklFactoryEngineListFunction) (const HklFactory *factory); struct _HklFactory { const char *name; const char *description; const darray_string axes; HklFactoryGeometryFunction create_new_geometry; HklFactoryEngineListFunction create_new_engine_list; }; #define REGISTER_DIFFRACTOMETER(name_, real_name_, description_) \ static HklFactory name_ = { \ .name = real_name_, \ .description = description_, \ .axes = DARRAY(hkl_geometry_ ## name_ ## _axes), \ .create_new_geometry = &hkl_geometry_new_ ## name_, \ .create_new_engine_list = &hkl_engine_list_new_ ## name_ \ }; \ AUTODATA(factories, &name_) AUTODATA_TYPE(factories, HklFactory); G_END_DECLS #endif /* __HKL_FACTORY_H__ */ hkl-5.1.7/hkl/hkl-lattice-private.h0000664000175000017500000000335114677222567016110 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_LATTICE_PRIVATE_H__ #define __HKL_LATTICE_PRIVATE_H__ #include #include "hkl.h" G_BEGIN_DECLS struct _HklLattice { HklParameter *a; HklParameter *b; HklParameter *c; HklParameter *alpha; HklParameter *beta; HklParameter *gamma; HklParameter *volume; }; #define HKL_LATTICE_ERROR hkl_lattice_error_quark () static inline GQuark hkl_lattice_error_quark (void) { return g_quark_from_static_string ("hkl-lattice-error-quark"); } typedef enum { HKL_LATTICE_CHECK_LATTICE, /* the lattice parameters are not valid */ } HklLatticeError; extern void hkl_lattice_lattice_set(HklLattice *self, const HklLattice *lattice); extern void hkl_lattice_randomize(HklLattice *self); extern void hkl_lattice_fprintf(FILE *f, const HklLattice *self); G_END_DECLS #endif /* __HKL_LATTICE_PRIVATE_H__ */ hkl-5.1.7/hkl/api2/0000775000175000017500000000000015144640565012707 5ustar00piccapiccahkl-5.1.7/hkl/api2/hkl2.h0000664000175000017500000000742414771455664013740 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2021 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_HKL2_H__ #define __HKL_HKL2_H__ #include "hkl.h" #include "hkl/ccan/generator/generator.h" #include "datatype99.h" G_BEGIN_DECLS /* Geometry */ typedef struct { double data[4]; } double4; typedef struct { double data[5]; } double5; typedef struct { double data[6]; } double6; #define VALUES(...) \ ((ML99_CAT(double, ML99_VARIADICS_COUNT(__VA_ARGS__))){.data = {__VA_ARGS__}}) datatype( Geometry, (E4ch, double, double4), (E4cv, double, double4), (E6c, double, double6), (K4ch, double, double4), (K4cv, double, double4), (K6c, double, double6), (SoleilNanoscopiumRobot, double, double6), (SoleilSiriusKappa, double, double6), (SoleilSixsMed2_3, double, double6), (SoleilSixsMed2_3_v2, double, double5), (Zaxis, double, double4) ); extern HklGeometry *newGeometry(struct Geometry geometry); /* Engines */ extern HklEngineList *newEngines(struct Geometry geometry); /* Lattice */ datatype( Lattice, (Cubic, double), (Hexagonal, double, double), (Tetragonal, double, double) ); extern HklLattice *newLattice(const Lattice lattice); /* Sample */ struct Sample { const char *name; Lattice lattice; double ux; double uy; double uz; }; #define CU (struct Sample) { \ .name = "default", \ .lattice = Cubic(1.54), \ .ux = 0.0 * HKL_DEGTORAD, \ .uy = 0.0 * HKL_DEGTORAD, \ .uz = 0.0 * HKL_DEGTORAD \ } extern HklSample *newSample(struct Sample sample); /* Mode */ datatype ( Mode, (ModeHklBissectorVertical), (ModeHklE4CHConstantPhi) ); extern const char *getModeName(struct Mode mode); /* Engine */ datatype( Engine, (EngineHkl, double, double, double, Mode) ); extern void Engine_fprintf(FILE *f, const Engine engine); extern void Engine_header(FILE *f, const Engine engine); extern void Engine_save_as_dat(FILE *f, const Engine engine); extern HklGeometryList *Engine_solve(HklEngineList *engines, const Engine econfig); /* HklTrajectory */ datatype( Trajectory, (TrajectoryHklFromTo, double, double, double, double, double, double, uint, Mode) ); extern generator_declare(trajectory_gen, Engine, Trajectory, tconfig); extern uint Trajectory_len(const Trajectory tconfig); extern HklGeometryList *Trajectory_solve(const Trajectory tconfig, struct Geometry gconfig, struct Sample sconfig, uint move); G_END_DECLS #endif /* __HKL_TAP_H__ */ hkl-5.1.7/hkl/api2/hkl2.c0000664000175000017500000002376014771455664013734 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2012, 2020, 2021, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl/hkl-matrix-private.h" #include "hkl/hkl-macros-private.h" #include "hkl/hkl-pseudoaxis-private.h" #include "hkl/hkl-trajectory-private.h" #include "hkl/api2/hkl2.h" static const HklFactory *getFactory(struct Geometry geometry) { HklFactory *res; match(geometry){ of(E4ch) res = hkl_factory_get_by_name("E4CH", NULL); of(E4cv) res = hkl_factory_get_by_name("E4CV", NULL); of(E6c) res = hkl_factory_get_by_name("E6C", NULL); of(K4ch) res = hkl_factory_get_by_name("K4CH", NULL); of(K4cv) res = hkl_factory_get_by_name("K4CV", NULL); of(K6c) res = hkl_factory_get_by_name("K6C", NULL); of(SoleilNanoscopiumRobot) res = hkl_factory_get_by_name("SOLEIL NANOSCOPIUM ROBOT", NULL); of(SoleilSiriusKappa) res = hkl_factory_get_by_name("SOLEIL SIRIUS KAPPA", NULL); of(SoleilSixsMed2_3) res = hkl_factory_get_by_name("SOLEIL SIXS MED2+3", NULL); of(SoleilSixsMed2_3_v2) res = hkl_factory_get_by_name("SOLEIL SIXS MED2+3 v2", NULL); of(Zaxis) res = hkl_factory_get_by_name("ZAXIS", NULL); otherwise res = hkl_factory_get_by_name("E4CH", NULL); } return res; } HklEngineList *newEngines(struct Geometry geometry) { return hkl_factory_create_new_engine_list(getFactory(geometry)); } HklGeometry *newGeometry(struct Geometry geometry) { HklGeometry *self = hkl_factory_create_new_geometry(getFactory(geometry)); #define NEW_GEOMETRY(_w, _values) do{ \ if(!hkl_geometry_axis_values_set(self, \ _values->data, \ ARRAY_SIZE(_values->data), \ HKL_UNIT_USER, NULL)){ \ goto failed; \ } \ if(!hkl_geometry_wavelength_set(self, _w, \ HKL_UNIT_DEFAULT, NULL)){ \ goto failed; \ } \ }while(0) match(geometry){ of(E4ch, w, values){ NEW_GEOMETRY(*w, values); } of(E4cv, w, values){ NEW_GEOMETRY(*w, values); } of(E6c, w, values){ NEW_GEOMETRY(*w, values); } of(K4ch, w, values){ NEW_GEOMETRY(*w, values); } of(K4cv, w, values){ NEW_GEOMETRY(*w, values); } of(K6c, w, values){ NEW_GEOMETRY(*w, values); } of(SoleilNanoscopiumRobot, w, values){ NEW_GEOMETRY(*w, values); } of(SoleilSiriusKappa, w, values){ NEW_GEOMETRY(*w, values); } of(SoleilSixsMed2_3, w, values){ NEW_GEOMETRY(*w, values); } of(SoleilSixsMed2_3_v2, w, values){ NEW_GEOMETRY(*w, values); } of(Zaxis, w, values){ NEW_GEOMETRY(*w, values); } } return self; failed: hkl_geometry_free(self); return NULL; #undef NEW_GEOMETRY } /* Lattice */ HklLattice *newLattice(const Lattice lattice) { HklLattice *self; match(lattice){ of(Cubic, a){ self = hkl_lattice_new(*a, *a, *a, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, NULL); } of(Hexagonal, a, c){ self = hkl_lattice_new(*a, *a, *c, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 120*HKL_DEGTORAD, NULL); } of(Tetragonal, a, c){ self = hkl_lattice_new(*a, *a, *c, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, NULL); } otherwise { self = hkl_lattice_new_default(); } }; return self; } /* Sample */ HklSample *newSample(struct Sample sample) { HklSample *self; HklLattice *lattice; HklMatrix *U; self = hkl_sample_new(sample.name); lattice = newLattice(sample.lattice); hkl_sample_lattice_set(self, lattice); hkl_lattice_free(lattice); U = hkl_matrix_new_euler(sample.ux, sample.uy, sample.uz); hkl_sample_U_set(self, U, NULL); hkl_matrix_free(U); return self; } /* Mode */ const char *getModeName(struct Mode mode) { const char *res; match(mode){ of(ModeHklBissectorVertical){ res = "bissector_vertical"; } of(ModeHklE4CHConstantPhi){ res = "constant_phi"; } otherwise{ res = "bissector_vertical"; } }; return res; } /* Engine */ void Engine_fprintf(FILE *f, struct Engine engine) { match(engine){ of(EngineHkl, h, k, l, _){ fprintf(f, "hkl: %f %f %f\n", *h, *k, *l); } } } void Engine_header(FILE *f, const struct Engine engine) { match(engine){ of(EngineHkl){ fprintf(f, "h k l"); } } } void Engine_save_as_dat(FILE *f, const struct Engine engine) { match(engine){ of(EngineHkl, h, k, l, _){ fprintf(f, "%f %f %f", *h, *k, *l); } } } HklGeometryList *Engine_solve(HklEngineList *engines, struct Engine econfig) { HklGeometryList *geometries = NULL; match(econfig){ of(EngineHkl, h, k, l, mode){ double values[3] = {*h, *k, *l}; HklEngine *engine = hkl_engine_list_engine_get_by_name(engines, "hkl", NULL); const char *mode_name = getModeName(*mode); if(hkl_engine_current_mode_set(engine, mode_name, NULL)){ geometries = hkl_engine_pseudo_axis_values_set(engine, values, ARRAY_SIZE(values), HKL_UNIT_DEFAULT, NULL); } } } return geometries; } /* HklTrajectory */ generator_def(trajectory_gen, struct Engine, struct Trajectory, tconfig) { match(tconfig){ of(TrajectoryHklFromTo, h0, k0, l0, h1, k1, l1, n, mode){ uint i; double dh = (*h1 - *h0) / *n; double dk = (*k1 - *k0) / *n; double dl = (*l1 - *l0) / *n; for(i=0; i<*n + 1; ++i){ double h = i * dh + *h0; double k = i * dk + *k0; double l = i * dl + *l0; struct Engine econfig = EngineHkl(h, k, l, *mode); generator_yield(econfig); } } } } uint Trajectory_len(Trajectory tconfig) { uint res = 0; match(tconfig){ of(TrajectoryHklFromTo, _, _, _, _, _, _, n, _){ res = *n + 1; } } return res; } HklGeometryList *Trajectory_solve(struct Trajectory tconfig, struct Geometry gconfig, struct Sample sconfig, uint move) { const struct Engine *econfig; HklGeometryList *solutions = hkl_geometry_list_new(); generator_t(struct Engine) gen = trajectory_gen(tconfig); HklGeometry *geometry = newGeometry(gconfig); HklEngineList *engines = newEngines(gconfig); HklSample *sample = newSample(sconfig); HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); HklTrajectoryStats *stats = hkl_trajectory_stats_new(Trajectory_len(tconfig)); hkl_engine_list_init(engines, geometry, detector, sample); while((econfig = generator_next(gen)) != NULL){ /* Engine_fprintf(stdout, *econfig); */ HklGeometryList *geometries = Engine_solve(engines, *econfig); if(NULL != geometries){ const HklGeometryListItem *solution; hkl_trajectory_stats_add(stats, geometries); solution = hkl_geometry_list_items_first_get(geometries); if(move) hkl_engine_list_select_solution(engines, solution); hkl_geometry_list_add(solutions, hkl_geometry_list_item_geometry_get(solution)); /* hkl_geometry_list_fprintf(stdout, geometries); */ hkl_geometry_list_free(geometries); } } /* hkl_trajectory_stats_fprintf(stdout, stats); */ hkl_trajectory_stats_free(stats); hkl_detector_free(detector); hkl_sample_free(sample); hkl_engine_list_free(engines); hkl_geometry_free(geometry); generator_free(gen); return solutions; } hkl-5.1.7/hkl/api2/Makefile.in0000664000175000017500000004766215144640451014765 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = hkl/api2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libhkl2_la_LIBADD = am_libhkl2_la_OBJECTS = hkl2.lo libhkl2_la_OBJECTS = $(am_libhkl2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl2.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libhkl2_la_SOURCES) DIST_SOURCES = $(libhkl2_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) # need access to the private part AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = \ $(GLIB_LIBS) \ $(GSL_LIBS) noinst_LTLIBRARIES = libhkl2.la libhkl2_la_SOURCES = \ hkl2.c \ hkl2.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hkl/api2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu hkl/api2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libhkl2.la: $(libhkl2_la_OBJECTS) $(libhkl2_la_DEPENDENCIES) $(EXTRA_libhkl2_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libhkl2_la_OBJECTS) $(libhkl2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl2.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/hkl2.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/hkl2.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/hkl/api2/Makefile.am0000664000175000017500000000056714677222567014763 0ustar00piccapiccaAM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) # need access to the private part AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = \ $(GLIB_LIBS) \ $(GSL_LIBS) noinst_LTLIBRARIES=libhkl2.la libhkl2_la_SOURCES = \ hkl2.c \ hkl2.h hkl-5.1.7/hkl/hkl-interval.c0000664000175000017500000002421014677222567014627 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #define _GNU_SOURCE #include #include // for floor, M_PI_2, acos, asin, etc #include // for free, NULL #include "hkl-interval-private.h" // for HklInterval #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl.h" // for FALSE, TRUE /** * hkl_interval_dup: (skip) * @self: * * copy an #HklInterval * * Returns: **/ HklInterval *hkl_interval_dup(const HklInterval *self) { HklInterval *dup = g_new(HklInterval, 1); *dup = *self; return dup; } /** * hkl_interval_free: (skip) * @self: * * delete an #HklInterval **/ void hkl_interval_free(HklInterval *self) { free(self); } /** * hkl_interval_cmp: (skip) * @self: * @interval: * * compare two intervals * * Returns: **/ int hkl_interval_cmp(const HklInterval *self, const HklInterval *interval) { return (fabs(self->min - interval->min) > HKL_EPSILON) || (fabs(self->max - interval->max) > HKL_EPSILON); } /** * hkl_interval_plus_interval: (skip) * @self: * @interval: * * add two ontervals **/ void hkl_interval_plus_interval(HklInterval *self, const HklInterval *interval) { self->min += interval->min; self->max += interval->max; } /** * hkl_interval_plus_double: (skip) * @self: * @d: * * add to an interval a double **/ void hkl_interval_plus_double(HklInterval *self, double const d) { self->min += d; self->max += d; } /** * hkl_interval_minus_interval: (skip) * @self: * @interval: * * substract two #HklInterval **/ void hkl_interval_minus_interval(HklInterval *self, const HklInterval *interval) { self->min -= interval->max; self->max -= interval->min; } /** * hkl_interval_minus_double: (skip) * @self: * @d: * * subst a double to an #HklInterval **/ void hkl_interval_minus_double(HklInterval *self, double const d) { self->min -= d; self->max -= d; } /** * hkl_interval_times_interval: (skip) * @self: * @interval: * * multiply two #HklInterval **/ void hkl_interval_times_interval(HklInterval *self, const HklInterval *interval) { double min; double max; double m1 = self->min * interval->min; double m2 = self->min * interval->max; double m3 = self->max * interval->min; double m4 = self->max * interval->max; min = m1; if (m2 < min) min = m2; if (m3 < min) min = m3; if (m4 < min) min = m4; max = m1; if (m2 > max) max = m2; if (m3 > max) max = m3; if (m4 > max) max = m4; self->min = min; self->max = max; } /** * hkl_interval_times_double: (skip) * @self: * @d: * * multiply an #HklInterval by a double **/ void hkl_interval_times_double(HklInterval *self, double const d) { double min; double max; if (d < 0) { min = self->max * d; max = self->min * d; } else { min = self->min * d; max = self->max * d; } self->min = min; self->max = max; } /** * hkl_interval_divides_double: (skip) * @self: * @d: * * divide an #HklInterval by a double **/ void hkl_interval_divides_double(HklInterval *self, double const d) { double min = self->min / d; double max = self->max / d; if (min > max){ double tmp = min; min = max; max = tmp; } self->min = min; self->max = max; } /** * hkl_interval_contain_zero: (skip) * @self: * * check if an #HklInterval contain zero * * Returns: **/ int hkl_interval_contain_zero(HklInterval const *self) { if (self->min <= 0 && self->max >= 0) return TRUE; else return FALSE; } /** * hkl_interval_cos: (skip) * @self: * * compute the cosinus of an #HklInterval **/ void hkl_interval_cos(HklInterval *self) { double min = 0; double max = 0; double cmin; double cmax; cmin = cos(self->min); cmax = cos(self->max); if (self->max - self->min >= 2 * M_PI) { min = -1; max = 1; } else { int quad_min; int quad_max; quad_min = (int)floor(self->min / M_PI_2) % 4; if (quad_min < 0) quad_min += 4; quad_max = (int)floor(self->max / M_PI_2) % 4; if (quad_max < 0) quad_max += 4; switch (quad_max) { case 0: switch (quad_min) { case 0: min = cmax; max = cmin; break; case 1: min = -1; max = 1; break; case 2: min = cmin; max = 1; break; case 3: if (cmin < cmax) { min = cmin; max = 1; } else { min = cmax; max = 1; } break; } break; case 1: switch (quad_min) { case 0: min = cmax; max = cmin; break; case 1: min = -1; max = 1; break; case 2: if (cmin < cmax) { min = cmin; max = 1; } else { min = cmax; max = 1; } break; case 3: min = cmax; max = 1; break; } break; case 2: switch (quad_min) { case 0: min = -1; max = cmin; break; case 1: if (cmin < cmax) { min = -1; max = cmax; } else { min = -1; max = cmin; } break; case 2: if (cmin < cmax) { min = cmin; max = cmax; } else { min = -1; max = 1; } break; case 3: min = -1; max = 1; break; } break; case 3: switch (quad_min) { case 0: if (cmin < cmax) { min = -1; max = cmax; } else { min = -1; max = cmin; } break; case 1: min = -1; max = cmax; break; case 2: min = cmin; max = cmax; break; case 3: if (cmin < cmax) { min = cmin; max = cmax; } else { min = -1; max = 1; } break; } break; } } self->min = min; self->max = max; } /** * hkl_interval_acos: (skip) * @self: * * compute the arc cosinus of an #HklInterval **/ void hkl_interval_acos(HklInterval *self) { double tmp; tmp = self->min; self->min = acos(self->max); self->max = acos(tmp); } /** * hkl_interval_sin: (skip) * @self: * * compute the sin of an #HklInterval **/ void hkl_interval_sin(HklInterval *self) { double min = 0; double max = 0; double smin; double smax; smin = sin(self->min); smax = sin(self->max); /* if there is at least one period in b, then a = [-1, 1] */ if ( self->max - self->min >= 2 * M_PI) { min = -1; max = 1; } else { int quad_min; int quad_max; quad_min = (int)floor(self->min / M_PI_2) % 4; if (quad_min < 0) quad_min += 4; quad_max = (int)floor(self->max / M_PI_2) % 4; if (quad_max < 0) quad_max += 4; switch (quad_max) { case 0: switch (quad_min) { case 0: if (smin < smax) { min = smin; max = smax; } else { min = -1; max = 1; } break; case 3: min = smin; max = smax; break; case 1: if (smin > smax) { min = -1; max = smin; } else { min = -1; max = smax; } break; case 2: min = -1; max = smax; break; } break; case 1: switch (quad_min) { case 0: if (smin < smax) { min = smin; max = 1; } else { min = smax; max = 1; } break; case 1: if (smin < smax) { min = -1; max = 1; } else { min = smax; max = smin; } break; case 2: min = -1; max = 1; break; case 3: min = smin; max = 1; break; } break; case 2: switch (quad_min) { case 0: min = smax; max = 1; break; case 1: case 2: if (smin < smax) { min = -1; max = 1; } else { min = smax; max = smin; } break; case 3: if (smin < smax) { min = smin; max = 1; } else { min = smax; max = 1; } break; } break; case 3: switch (quad_min) { case 0: min = -1; max = 1; break; case 1: min = -1; max = smin; break; case 2: if (smin < smax) { min = -1; max = smax; } else { min = -1; max = smin; } break; case 3: if (smin < smax) { min = smin; max = smax; } else { min = -1; max = 1; } break; } break; } } self->min = min; self->max = max; } /** * hkl_interval_asin: (skip) * @self: * * compute the arc sinus of an #HklInterval **/ void hkl_interval_asin(HklInterval *self) { self->min = asin(self->min); self->max = asin(self->max); } /** * hkl_interval_tan: (skip) * @self: * * compute the tangente of an #HklInterval **/ void hkl_interval_tan(HklInterval *self) { int quadrant_down = (int)floor(self->min / M_PI_2); int quadrant_up = (int)floor(self->max / M_PI_2); /* if there is at least one period in b or if b contains a Pi/2 + k*Pi, */ /* then a = ]-oo, +oo[ */ if ( ((quadrant_up - quadrant_down) >= 2) || (!(quadrant_down % 2) && (quadrant_up % 2)) ) { self->min = -INFINITY; self->max = INFINITY; } else { self->min = tan(self->min); self->max = tan(self->max); } } /** * hkl_interval_atan: (skip) * @self: * * compute the arc tangente of an #HklInterval **/ void hkl_interval_atan(HklInterval *self) { self->min = atan(self->min); self->max = atan(self->max); } /** * hkl_interval_length: (skip) * @self: * * compute the length of an #HklInterval * * Returns: **/ double hkl_interval_length(const HklInterval *self) { return self->max - self->min; } /** * hkl_interval_angle_restrict_symm: (skip) * @self: * * restrict an #HklInterval into -pi, pi **/ void hkl_interval_angle_restrict_symm(HklInterval *self) { gsl_sf_angle_restrict_symm_e(&self->min); gsl_sf_angle_restrict_symm_e(&self->max); } hkl-5.1.7/hkl/hkl-engine-soleil-cristal-k4c.c0000664000175000017500000003041115136636326017644 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2021, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-eulerians-private.h" #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for RUBh_minus_Q, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #define KOMEGA "komega" #define KOMEGA_IDX 0 #define KAPPA "kappa" #define KAPPA_IDX 1 #define KPHI "kphi" #define KPHI_IDX 2 #define TTH "tth" #define TTH_IDX 3 #define DTX "dtx" #define DTX_IDX 4 #define ALPHA 50 * HKL_DEGTORAD static void hkl_geometry_list_multiply_k4c_real(HklGeometryList *self, HklGeometryListItem *item) { HklGeometry *geometry; HklGeometry *copy; double komega, komegap; double kappa, kappap; double kphi, kphip; geometry = item->geometry; komega = hkl_parameter_value_get(darray_item(geometry->axes, KOMEGA_IDX), HKL_UNIT_DEFAULT); kappa = hkl_parameter_value_get(darray_item(geometry->axes, KAPPA_IDX), HKL_UNIT_DEFAULT); kphi = hkl_parameter_value_get(darray_item(geometry->axes, KPHI_IDX), HKL_UNIT_DEFAULT); kappa_2_kappap(komega, kappa, kphi, ALPHA, &komegap, &kappap, &kphip); copy = hkl_geometry_new_copy(geometry); /* TODO parameter list for the geometry */ hkl_parameter_value_set(darray_item(copy->axes, KOMEGA_IDX), komegap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, KAPPA_IDX), kappap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, KPHI_IDX), kphip, HKL_UNIT_DEFAULT, NULL); hkl_geometry_update(copy); hkl_geometry_list_add(self, copy); hkl_geometry_free(copy); } /************/ /* hkl mode */ /************/ /* bissector */ static int _bissector_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[KOMEGA_IDX]; const double kappa = x->data[KAPPA_IDX]; const double tth = x->data[TTH_IDX]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_f1 = { .function = _bissector_f1, .size = 4, }; static int _bissector_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[KOMEGA_IDX]; const double kappa = x->data[KAPPA_IDX]; const double tth = x->data[TTH_IDX]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_f2 = { .function = _bissector_f2, .size = 4, }; static HklMode *bissector(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&bissector_f1, &bissector_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant omega */ static int _constant_omega_f1(const gsl_vector *x, void *params, gsl_vector *f) { double const komega = x->data[KOMEGA_IDX]; double const kappa = x->data[KAPPA_IDX]; double omega; HklEngine *engine = params; double omega0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = omega0 - omega; return GSL_SUCCESS; } static const HklFunction constant_omega_f1 = { .function = _constant_omega_f1, .size = 4, }; static int _constant_omega_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[KOMEGA_IDX]; const double kappa = x->data[KAPPA_IDX]; double omega; HklEngine *engine = params; double omega0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = omega0 - omega; return GSL_SUCCESS; } static const HklFunction constant_omega_f2 = { .function = _constant_omega_f2, .size = 4, }; static HklMode *constant_omega(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_omega_f1, &constant_omega_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_omega_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant chi */ static int _constant_chi_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[KAPPA_IDX]; double chi; HklEngine *engine = params; double chi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); chi = 2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); RUBh_minus_Q(x->data, params, f->data); f->data[3] = chi0 - chi; return GSL_SUCCESS; } static const HklFunction constant_chi_f1 = { .function = _constant_chi_f1, .size = 4, }; static int _constant_chi_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[KAPPA_IDX]; double chi; HklEngine *engine = params; double chi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); chi = -2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); RUBh_minus_Q(x->data, params, f->data); f->data[3] = chi0 - chi; return GSL_SUCCESS; } static const HklFunction constant_chi_f2 = { .function = _constant_chi_f2, .size = 4, }; static HklMode *constant_chi(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_chi_f1, &constant_chi_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_chi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* constant phi */ static int _constant_phi_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[KAPPA_IDX]; const double kphi = x->data[KPHI_IDX]; double phi; HklEngine *engine = params; double phi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = phi0 - phi; return GSL_SUCCESS; } static const HklFunction constant_phi_f1 = { .function = _constant_phi_f1, .size = 4, }; static int _constant_phi_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[KAPPA_IDX]; const double kphi = x->data[KPHI_IDX]; double phi; HklEngine *engine = params; double phi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = phi0 - phi; return GSL_SUCCESS; } static const HklFunction constant_phi_f2 = { .function = _constant_phi_f2, .size = 4, }; static HklMode *constant_phi(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&constant_phi_f1, &constant_phi_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant(void) { static const char* axes_r[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, TTH}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklEngine *hkl_engine_soleil_cristal_k4c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega()); hkl_engine_add_mode(self, constant_chi()); hkl_engine_add_mode(self, constant_phi()); hkl_engine_add_mode(self, double_diffraction()); hkl_engine_add_mode(self, psi_constant()); return self; } /*********************/ /* SOLEIL CRITAL K4C */ /*********************/ #define HKL_GEOMETRY_SOLEIL_CRISTAL_K4C_DESCRIPTION \ "For this geometry there is a special parameters called :math:`\\alpha` which is the\n" \ "angle between the kappa rotation axis and the :math:`\\vec{y}` direction.\n" \ "\n" \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" KOMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" KAPPA "** : rotating around the :math:`\\vec{x}` direction (0, :math:`-\\cos\\alpha`, :math:`-\\sin\\alpha`)\n" \ " + **" KPHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" TTH "** : rotation around the :math:`-\\\vec{y}` direction (0, -1, 0)\n" \ " + **" DTX "** : translation along the :math:`\\\vec{x}` direction (1, 0, 0)\n" static const char* hkl_geometry_soleil_cristal_k4c_axes[] = {KOMEGA, KAPPA, KPHI, TTH, DTX}; static HklGeometry *hkl_geometry_new_soleil_cristal_k4c(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, KOMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KAPPA, 0, -cos(ALPHA), -sin(ALPHA), &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KPHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, TTH, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_translation(h, DTX, 1, 0, 0, &hkl_unit_length_mm); return self; } static HklEngineList *hkl_engine_list_new_soleil_cristal_k4c(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); self->geometries->multiply = hkl_geometry_list_multiply_k4c_real; hkl_engine_soleil_cristal_k4c_hkl_new(self); hkl_engine_eulerians_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_cristal_k4c, "SOLEIL CRISTAL K4C", HKL_GEOMETRY_SOLEIL_CRISTAL_K4C_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-common-psi.c0000664000175000017500000002327514677222567017260 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for ::GSL_SUCCESS #include // for gsl_vector #include // for gsl_isnan #include // for fprintf, stderr #include // for NULL, exit, free #include // for uint #include "hkl-detector-private.h" // for hkl_detector_compute_kf #include "hkl-geometry-private.h" // for HklHolder, _HklGeometry, etc #include "hkl-macros-private.h" // for HKL_MALLOC, hkl_assert, etc #include "hkl-matrix-private.h" // for hkl_matrix_solve, etc #include "hkl-parameter-private.h" #include "hkl-pseudoaxis-auto-private.h" // for HklModeAutoInfo, etc #include "hkl-pseudoaxis-common-psi-private.h" // for HklEnginePsi, etc #include "hkl-pseudoaxis-private.h" // for _HklEngine, HklEngineInfo, etc #include "hkl-quaternion-private.h" // for hkl_quaternion_to_matrix #include "hkl-sample-private.h" // for _HklSample #include "hkl-source-private.h" // for hkl_source_compute_ki #include "hkl-vector-private.h" // for HklVector, etc #include "hkl.h" // for HklEngine, HklGeometry, etc #include "hkl/ccan/array_size/array_size.h" // for ARRAY_SIZE #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_item #define HKL_MODE_PSI_ERROR hkl_mode_psi_error_quark () static GQuark hkl_mode_psi_error_quark (void) { return g_quark_from_static_string ("hkl-mode-psi-error-quark"); } typedef enum { HKL_MODE_PSI_ERROR_INIT, /* can not init the engine */ HKL_MODE_PSI_ERROR_GET, /* can not get the engine */ } HklModePsiError; /***********************/ /* numerical functions */ /***********************/ int _psi_func(const gsl_vector *x, void *params, gsl_vector *f) { HklVector dhkl0, hkl1; HklVector ki, kf, Q, n; HklMatrix RUB; HklEngine *engine = params; HklEnginePsi *psi_engine = container_of(engine, HklEnginePsi, engine); HklModePsi *modepsi = container_of(engine->mode, HklModePsi, parent); HklHolder *sample_holder; CHECK_NAN(x->data, x->size); /* update the workspace from x; */ set_geometry_axes(engine, x->data); /* kf - ki = Q */ ki = hkl_geometry_ki_get(engine->geometry); kf = hkl_geometry_kf_get(engine->geometry, engine->detector); Q = kf; hkl_vector_minus_vector(&Q, &ki); if (hkl_vector_is_null(&Q)){ f->data[0] = 1; f->data[1] = 1; f->data[2] = 1; f->data[3] = 1; }else{ /* R * UB */ /* for now the 0 holder is the sample holder. */ sample_holder = hkl_geometry_sample_holder_get(engine->geometry, engine->sample); hkl_quaternion_to_matrix(&sample_holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &engine->sample->UB); /* compute dhkl0 */ hkl_matrix_solve(&RUB, &dhkl0, &Q); hkl_vector_minus_vector(&dhkl0, &modepsi->hkl0); /* compute the intersection of the plan P(kf, ki) and PQ (normal Q) */ /* * now that dhkl0 have been computed we can use a * normalized Q to compute n and psi */ hkl_vector_normalize(&Q); n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); /* compute hkl1 in the laboratory referentiel */ /* for now the 0 holder is the sample holder. */ for(unsigned int i=0; i<3; ++i) hkl1.data[i] = darray_item(engine->mode->parameters, i)->_value; hkl_matrix_times_vector(&engine->sample->UB, &hkl1); hkl_vector_rotated_quaternion(&hkl1, &sample_holder->q); /* project hkl1 on the plan of normal Q */ hkl_vector_project_on_plan(&hkl1, &Q); if (hkl_vector_is_null(&hkl1)){ /* hkl1 colinear with Q */ f->data[0] = dhkl0.data[0]; f->data[1] = dhkl0.data[1]; f->data[2] = dhkl0.data[2]; f->data[3] = 1; }else{ f->data[0] = dhkl0.data[0]; f->data[1] = dhkl0.data[1]; f->data[2] = dhkl0.data[2]; f->data[3] = psi_engine->psi->_value - hkl_vector_oriented_angle(&n, &hkl1, &Q); } } return GSL_SUCCESS; } static int hkl_mode_initialized_set_psi_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error) { HklVector ki; HklMatrix RUB; HklModePsi *psi_mode = container_of(self, HklModePsi, parent); HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); hkl_error (error == NULL || *error == NULL); if(initialized){ /* update the geometry internals */ hkl_geometry_update(geometry); /* R * UB */ /* for now the 0 holder is the sample holder. */ hkl_quaternion_to_matrix(&sample_holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &sample->UB); /* kf - ki = Q0 */ ki = hkl_geometry_ki_get(geometry); psi_mode->Q0 = hkl_geometry_kf_get(geometry, detector); hkl_vector_minus_vector(&psi_mode->Q0, &ki); if (hkl_vector_is_null(&psi_mode->Q0)){ g_set_error(error, HKL_MODE_PSI_ERROR, HKL_MODE_PSI_ERROR_INIT, "can not initialize the \"%s\" engine when hkl is null", engine->info->name); return FALSE; }else /* compute hkl0 */ hkl_matrix_solve(&RUB, &psi_mode->hkl0, &psi_mode->Q0); } self->initialized = initialized; return TRUE; } static int hkl_mode_get_psi_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklVector ki; HklVector kf; HklVector Q; HklVector hkl1; HklVector n; if (!base || !engine || !engine->mode || !geometry || !detector || !sample){ g_set_error(error, HKL_MODE_PSI_ERROR, HKL_MODE_PSI_ERROR_GET, "internal error"); return FALSE; } /* get kf, ki and Q */ ki = hkl_geometry_ki_get(geometry); kf = hkl_geometry_kf_get(geometry, detector); Q = kf; hkl_vector_minus_vector(&Q, &ki); if (hkl_vector_is_null(&Q)){ g_set_error(error, HKL_MODE_PSI_ERROR, HKL_MODE_PSI_ERROR_GET, "can not compute psi when hkl is null (kf == ki)"); return FALSE; }else{ HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); /* needed for a problem of precision */ hkl_vector_normalize(&Q); /* compute the intersection of the plan P(kf, ki) and PQ (normal Q) */ n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); /* compute hkl1 in the laboratory referentiel */ /* the geometry was already updated in the detector compute kf */ /* for now the 0 holder is the sample holder. */ for(unsigned int i=0; i<3; ++i) hkl1.data[i] = darray_item(base->parameters, i)->_value; hkl_matrix_times_vector(&sample->UB, &hkl1); hkl_vector_rotated_quaternion(&hkl1, &sample_holder->q); /* project hkl1 on the plan of normal Q */ hkl_vector_project_on_plan(&hkl1, &Q); if (hkl_vector_is_null(&hkl1)){ g_set_error(error, HKL_MODE_PSI_ERROR, HKL_MODE_PSI_ERROR_GET, "can not compute psi when Q and the ref vector are colinear"); return FALSE; }else{ HklEnginePsi *psi_engine = container_of(engine, HklEnginePsi, engine); /* compute the angle beetween hkl1 and n */ psi_engine->psi->_value = hkl_vector_oriented_angle(&n, &hkl1, &Q); } } return TRUE; } HklMode *hkl_mode_psi_new(const HklModeAutoInfo *auto_info) { static const HklModeOperations operations = { HKL_MODE_OPERATIONS_AUTO_DEFAULTS, .capabilities = HKL_ENGINE_CAPABILITIES_READABLE | HKL_ENGINE_CAPABILITIES_WRITABLE | HKL_ENGINE_CAPABILITIES_INITIALIZABLE, .initialized_set = hkl_mode_initialized_set_psi_real, .get = hkl_mode_get_psi_real, }; HklModePsi *self; if (darray_size(auto_info->info.axes_w) != 4){ fprintf(stderr, "This generic HklModePsi need exactly 4 axes"); exit(128); } self = g_new(HklModePsi, 1); /* the base constructor; */ hkl_mode_auto_init(&self->parent, auto_info, &operations, FALSE); return &self->parent; } /*************/ /* HklEngine */ /*************/ static void hkl_engine_psi_free_real(HklEngine *base) { HklEnginePsi *self=container_of(base, HklEnginePsi, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_psi_new(HklEngineList *engines) { HklEnginePsi *self = g_new(HklEnginePsi, 1); static const HklParameter psi = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "psi", .description = "angle between the reference vector and the diffraction plan", }; static const HklParameter *pseudo_axes[] = {&psi}; static const HklEngineInfo info = { HKL_ENGINE_INFO("psi", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_ENERGY | HKL_ENGINE_DEPENDENCIES_SAMPLE), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_psi_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->psi = register_pseudo_axis(&self->engine, engines, &psi); return &self->engine; } hkl-5.1.7/hkl/ccan/0000775000175000017500000000000015144640565012760 5ustar00piccapiccahkl-5.1.7/hkl/ccan/check_type/0000775000175000017500000000000015144640565015076 5ustar00piccapiccahkl-5.1.7/hkl/ccan/check_type/check_type.h0000664000175000017500000000452215133706174017365 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_CHECK_TYPE_H #define CCAN_CHECK_TYPE_H #include /** * check_type - issue a warning or build failure if type is not correct. * @expr: the expression whose type we should check (not evaluated). * @type: the exact type we expect the expression to be. * * This macro is usually used within other macros to try to ensure that a macro * argument is of the expected type. No type promotion of the expression is * done: an unsigned int is not the same as an int! * * check_type() always evaluates to 0. * * If your compiler does not support typeof, then the best we can do is fail * to compile if the sizes of the types are unequal (a less complete check). * * Example: * // They should always pass a 64-bit value to _set_some_value! * #define set_some_value(expr) \ * _set_some_value((check_type((expr), uint64_t), (expr))) */ /** * check_types_match - issue a warning or build failure if types are not same. * @expr1: the first expression (not evaluated). * @expr2: the second expression (not evaluated). * * This macro is usually used within other macros to try to ensure that * arguments are of identical types. No type promotion of the expressions is * done: an unsigned int is not the same as an int! * * check_types_match() always evaluates to 0. * * If your compiler does not support typeof, then the best we can do is fail * to compile if the sizes of the types are unequal (a less complete check). * * Example: * // Do subtraction to get to enclosing type, but make sure that * // pointer is of correct type for that member. * #define container_of(mbr_ptr, encl_type, mbr) \ * (check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \ * ((encl_type *) \ * ((char *)(mbr_ptr) - offsetof(encl_type, mbr)))) */ #if HAVE_TYPEOF #define check_type(expr, type) \ ((typeof(expr) *)0 != (type *)0) #define check_types_match(expr1, expr2) \ ((typeof(expr1) *)0 != (typeof(expr2) *)0) #else #include /* Without typeof, we can only test the sizes. */ #define check_type(expr, type) \ BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type)) #define check_types_match(expr1, expr2) \ BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2)) #endif /* HAVE_TYPEOF */ #endif /* CCAN_CHECK_TYPE_H */ hkl-5.1.7/hkl/ccan/array_size/0000775000175000017500000000000015144640565015130 5ustar00piccapiccahkl-5.1.7/hkl/ccan/array_size/array_size.h0000664000175000017500000000161315133706174017447 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_ARRAY_SIZE_H #define CCAN_ARRAY_SIZE_H #include #include /** * ARRAY_SIZE - get the number of elements in a visible array * @arr: the array whose size you want. * * This does not work on pointers, or arrays declared as [], or * function parameters. With correct compiler support, such usage * will cause a build error (see build_assert). */ #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr)) #if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF /* Two gcc extensions. * &a[0] degrades to a pointer: a different type from an array */ #define _array_size_chk(arr) \ BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(arr), \ typeof(&(arr)[0]))) #else #define _array_size_chk(arr) 0 #endif #endif /* CCAN_ALIGNOF_H */ hkl-5.1.7/hkl/ccan/ccan_config.h0000664000175000017500000000460115144553452015361 0ustar00piccapicca/* Generated by CCAN configurator */ #ifndef CCAN_CONFIG_H #define CCAN_CONFIG_H #ifndef _GNU_SOURCE #define _GNU_SOURCE /* Always use GNU extensions. */ #endif #define CCAN_COMPILER "gcc" #define CCAN_CFLAGS "" #define CCAN_OUTPUT_EXE_CFLAG "-o" #define HAVE_CCAN 1 #define HAVE_32BIT_OFF_T 0 #define HAVE_ALIGNOF 1 #define HAVE_ASPRINTF 1 #define HAVE_ATTRIBUTE_COLD 1 #define HAVE_ATTRIBUTE_CONST 1 #define HAVE_ATTRIBUTE_DEPRECATED 1 #define HAVE_ATTRIBUTE_NONNULL 1 #define HAVE_ATTRIBUTE_RETURNS_NONNULL 1 #define HAVE_ATTRIBUTE_SENTINEL 1 #define HAVE_ATTRIBUTE_PURE 1 #define HAVE_ATTRIBUTE_MAY_ALIAS 1 #define HAVE_ATTRIBUTE_NORETURN 1 #define HAVE_ATTRIBUTE_PRINTF 1 #define HAVE_ATTRIBUTE_UNUSED 1 #define HAVE_ATTRIBUTE_USED 1 #define HAVE_BACKTRACE 1 #define HAVE_BIG_ENDIAN 0 #define HAVE_BSWAP_64 1 #define HAVE_BUILTIN_CHOOSE_EXPR 1 #define HAVE_BUILTIN_CLZ 1 #define HAVE_BUILTIN_CLZL 1 #define HAVE_BUILTIN_CLZLL 1 #define HAVE_BUILTIN_CTZ 1 #define HAVE_BUILTIN_CTZL 1 #define HAVE_BUILTIN_CTZLL 1 #define HAVE_BUILTIN_CONSTANT_P 1 #define HAVE_BUILTIN_EXPECT 1 #define HAVE_BUILTIN_FFS 1 #define HAVE_BUILTIN_FFSL 1 #define HAVE_BUILTIN_FFSLL 1 #define HAVE_BUILTIN_POPCOUNT 1 #define HAVE_BUILTIN_POPCOUNTL 1 #define HAVE_BUILTIN_POPCOUNTLL 1 #define HAVE_BUILTIN_TYPES_COMPATIBLE_P 1 #define HAVE_ICCARM_INTRINSICS 0 #define HAVE_BYTESWAP_H 1 #define HAVE_CLOCK_GETTIME 1 #define HAVE_CLOCK_GETTIME_IN_LIBRT 0 #define HAVE_COMPOUND_LITERALS 1 #define HAVE_FCHDIR 1 #define HAVE_ERR_H 1 #define HAVE_FILE_OFFSET_BITS 0 #define HAVE_FOR_LOOP_DECLARATION 1 #define HAVE_FLEXIBLE_ARRAY_MEMBER 1 #define HAVE_GETPAGESIZE 1 #define HAVE_ISBLANK 1 #define HAVE_LITTLE_ENDIAN 1 #define HAVE_MEMMEM 1 #define HAVE_MEMRCHR 1 #define HAVE_MMAP 1 #define HAVE_PROC_SELF_MAPS 1 #define HAVE_QSORT_R_PRIVATE_LAST 1 #define HAVE_STRUCT_TIMESPEC 1 #define HAVE_SECTION_START_STOP 1 #define HAVE_STACK_GROWS_UPWARDS 0 #define HAVE_STATEMENT_EXPR 1 #define HAVE_SYS_FILIO_H 0 #define HAVE_SYS_TERMIOS_H 1 #define HAVE_SYS_UNISTD_H 1 #define HAVE_TYPEOF 1 #define HAVE_UNALIGNED_ACCESS 1 #define HAVE_UTIME 1 #define HAVE_WARN_UNUSED_RESULT 1 #define HAVE_OPENMP 1 #define HAVE_VALGRIND_MEMCHECK_H 1 #define HAVE_UCONTEXT 1 #define HAVE_POINTER_SAFE_MAKECONTEXT 1 #define HAVE_BUILTIN_CPU_SUPPORTS 1 #define HAVE_CLOSEFROM 1 #define HAVE_F_CLOSEM 0 #define HAVE_NR_CLOSE_RANGE 1 #define HAVE_F_MAXFD 0 #endif /* CCAN_CONFIG_H */ hkl-5.1.7/hkl/ccan/list/0000775000175000017500000000000015144640565013733 5ustar00piccapiccahkl-5.1.7/hkl/ccan/list/list.h0000664000175000017500000005737715133706174015077 0ustar00piccapicca/* Licensed under BSD-MIT - see LICENSE file for details */ #ifndef CCAN_LIST_H #define CCAN_LIST_H //#define CCAN_LIST_DEBUG 1 #include #include #include #include #include /** * struct list_node - an entry in a doubly-linked list * @next: next entry (self if empty) * @prev: previous entry (self if empty) * * This is used as an entry in a linked list. * Example: * struct child { * const char *name; * // Linked list of all us children. * struct list_node list; * }; */ struct list_node { struct list_node *next, *prev; }; /** * struct list_head - the head of a doubly-linked list * @h: the list_head (containing next and prev pointers) * * This is used as the head of a linked list. * Example: * struct parent { * const char *name; * struct list_head children; * unsigned int num_children; * }; */ struct list_head { struct list_node n; }; /** * list_check - check head of a list for consistency * @h: the list_head * @abortstr: the location to print on aborting, or NULL. * * Because list_nodes have redundant information, consistency checking between * the back and forward links can be done. This is useful as a debugging check. * If @abortstr is non-NULL, that will be printed in a diagnostic if the list * is inconsistent, and the function will abort. * * Returns the list head if the list is consistent, NULL if not (it * can never return NULL if @abortstr is set). * * See also: list_check_node() * * Example: * static void dump_parent(struct parent *p) * { * struct child *c; * * printf("%s (%u children):\n", p->name, p->num_children); * list_check(&p->children, "bad child list"); * list_for_each(&p->children, c, list) * printf(" -> %s\n", c->name); * } */ struct list_head *list_check(const struct list_head *h, const char *abortstr); /** * list_check_node - check node of a list for consistency * @n: the list_node * @abortstr: the location to print on aborting, or NULL. * * Check consistency of the list node is in (it must be in one). * * See also: list_check() * * Example: * static void dump_child(const struct child *c) * { * list_check_node(&c->list, "bad child list"); * printf("%s\n", c->name); * } */ struct list_node *list_check_node(const struct list_node *n, const char *abortstr); #define LIST_LOC __FILE__ ":" stringify(__LINE__) #ifdef CCAN_LIST_DEBUG #define list_debug(h, loc) list_check((h), loc) #define list_debug_node(n, loc) list_check_node((n), loc) #else #define list_debug(h, loc) ((void)loc, h) #define list_debug_node(n, loc) ((void)loc, n) #endif /** * LIST_HEAD_INIT - initializer for an empty list_head * @name: the name of the list. * * Explicit initializer for an empty list. * * See also: * LIST_HEAD, list_head_init() * * Example: * static struct list_head my_list = LIST_HEAD_INIT(my_list); */ #define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } } /** * LIST_HEAD - define and initialize an empty list_head * @name: the name of the list. * * The LIST_HEAD macro defines a list_head and initializes it to an empty * list. It can be prepended by "static" to define a static list_head. * * See also: * LIST_HEAD_INIT, list_head_init() * * Example: * static LIST_HEAD(my_global_list); */ #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name) /** * list_head_init - initialize a list_head * @h: the list_head to set to the empty list * * Example: * ... * struct parent *parent = malloc(sizeof(*parent)); * * list_head_init(&parent->children); * parent->num_children = 0; */ static inline void list_head_init(struct list_head *h) { h->n.next = h->n.prev = &h->n; } /** * list_node_init - initialize a list_node * @n: the list_node to link to itself. * * You don't need to use this normally! But it lets you list_del(@n) * safely. */ static inline void list_node_init(struct list_node *n) { n->next = n->prev = n; } /** * list_add_after - add an entry after an existing node in a linked list * @h: the list_head to add the node to (for debugging) * @p: the existing list_node to add the node after * @n: the new list_node to add to the list. * * The existing list_node must already be a member of the list. * The new list_node does not need to be initialized; it will be overwritten. * * Example: * struct child c1, c2, c3; * LIST_HEAD(h); * * list_add_tail(&h, &c1.list); * list_add_tail(&h, &c3.list); * list_add_after(&h, &c1.list, &c2.list); */ #define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC) static inline void list_add_after_(struct list_head *h, struct list_node *p, struct list_node *n, const char *abortstr) { n->next = p->next; n->prev = p; p->next->prev = n; p->next = n; (void)list_debug(h, abortstr); } /** * list_add - add an entry at the start of a linked list. * @h: the list_head to add the node to * @n: the list_node to add to the list. * * The list_node does not need to be initialized; it will be overwritten. * Example: * struct child *child = malloc(sizeof(*child)); * * child->name = "marvin"; * list_add(&parent->children, &child->list); * parent->num_children++; */ #define list_add(h, n) list_add_(h, n, LIST_LOC) static inline void list_add_(struct list_head *h, struct list_node *n, const char *abortstr) { list_add_after_(h, &h->n, n, abortstr); } /** * list_add_before - add an entry before an existing node in a linked list * @h: the list_head to add the node to (for debugging) * @p: the existing list_node to add the node before * @n: the new list_node to add to the list. * * The existing list_node must already be a member of the list. * The new list_node does not need to be initialized; it will be overwritten. * * Example: * list_head_init(&h); * list_add_tail(&h, &c1.list); * list_add_tail(&h, &c3.list); * list_add_before(&h, &c3.list, &c2.list); */ #define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC) static inline void list_add_before_(struct list_head *h, struct list_node *p, struct list_node *n, const char *abortstr) { n->next = p; n->prev = p->prev; p->prev->next = n; p->prev = n; (void)list_debug(h, abortstr); } /** * list_add_tail - add an entry at the end of a linked list. * @h: the list_head to add the node to * @n: the list_node to add to the list. * * The list_node does not need to be initialized; it will be overwritten. * Example: * list_add_tail(&parent->children, &child->list); * parent->num_children++; */ #define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC) static inline void list_add_tail_(struct list_head *h, struct list_node *n, const char *abortstr) { list_add_before_(h, &h->n, n, abortstr); } /** * list_empty - is a list empty? * @h: the list_head * * If the list is empty, returns true. * * Example: * assert(list_empty(&parent->children) == (parent->num_children == 0)); */ #define list_empty(h) list_empty_(h, LIST_LOC) static inline bool list_empty_(const struct list_head *h, const char* abortstr) { (void)list_debug(h, abortstr); return h->n.next == &h->n; } /** * list_empty_nodebug - is a list empty (and don't perform debug checks)? * @h: the list_head * * If the list is empty, returns true. * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it * will NOT perform debug checks. Only use this function if you REALLY * know what you're doing. * * Example: * assert(list_empty_nodebug(&parent->children) == (parent->num_children == 0)); */ #ifndef CCAN_LIST_DEBUG #define list_empty_nodebug(h) list_empty(h) #else static inline bool list_empty_nodebug(const struct list_head *h) { return h->n.next == &h->n; } #endif /** * list_empty_nocheck - is a list empty? * @h: the list_head * * If the list is empty, returns true. This doesn't perform any * debug check for list consistency, so it can be called without * locks, racing with the list being modified. This is ok for * checks where an incorrect result is not an issue (optimized * bail out path for example). */ static inline bool list_empty_nocheck(const struct list_head *h) { return h->n.next == &h->n; } /** * list_del - delete an entry from an (unknown) linked list. * @n: the list_node to delete from the list. * * Note that this leaves @n in an undefined state; it can be added to * another list, but not deleted again. * * See also: * list_del_from(), list_del_init() * * Example: * list_del(&child->list); * parent->num_children--; */ #define list_del(n) list_del_(n, LIST_LOC) static inline void list_del_(struct list_node *n, const char* abortstr) { (void)list_debug_node(n, abortstr); n->next->prev = n->prev; n->prev->next = n->next; #ifdef CCAN_LIST_DEBUG /* Catch use-after-del. */ n->next = n->prev = NULL; #endif } /** * list_del_init - delete a node, and reset it so it can be deleted again. * @n: the list_node to be deleted. * * list_del(@n) or list_del_init() again after this will be safe, * which can be useful in some cases. * * See also: * list_del_from(), list_del() * * Example: * list_del_init(&child->list); * parent->num_children--; */ #define list_del_init(n) list_del_init_(n, LIST_LOC) static inline void list_del_init_(struct list_node *n, const char *abortstr) { list_del_(n, abortstr); list_node_init(n); } /** * list_del_from - delete an entry from a known linked list. * @h: the list_head the node is in. * @n: the list_node to delete from the list. * * This explicitly indicates which list a node is expected to be in, * which is better documentation and can catch more bugs. * * See also: list_del() * * Example: * list_del_from(&parent->children, &child->list); * parent->num_children--; */ static inline void list_del_from(struct list_head *h, struct list_node *n) { #ifdef CCAN_LIST_DEBUG { /* Thorough check: make sure it was in list! */ struct list_node *i; for (i = h->n.next; i != n; i = i->next) assert(i != &h->n); } #endif /* CCAN_LIST_DEBUG */ /* Quick test that catches a surprising number of bugs. */ assert(!list_empty(h)); list_del(n); } /** * list_swap - swap out an entry from an (unknown) linked list for a new one. * @o: the list_node to replace from the list. * @n: the list_node to insert in place of the old one. * * Note that this leaves @o in an undefined state; it can be added to * another list, but not deleted/swapped again. * * See also: * list_del() * * Example: * struct child x1, x2; * LIST_HEAD(xh); * * list_add(&xh, &x1.list); * list_swap(&x1.list, &x2.list); */ #define list_swap(o, n) list_swap_(o, n, LIST_LOC) static inline void list_swap_(struct list_node *o, struct list_node *n, const char* abortstr) { (void)list_debug_node(o, abortstr); *n = *o; n->next->prev = n; n->prev->next = n; #ifdef CCAN_LIST_DEBUG /* Catch use-after-del. */ o->next = o->prev = NULL; #endif } /** * list_entry - convert a list_node back into the structure containing it. * @n: the list_node * @type: the type of the entry * @member: the list_node member of the type * * Example: * // First list entry is children.next; convert back to child. * child = list_entry(parent->children.n.next, struct child, list); * * See Also: * list_top(), list_for_each() */ #define list_entry(n, type, member) container_of(n, type, member) /** * list_top - get the first entry in a list * @h: the list_head * @type: the type of the entry * @member: the list_node member of the type * * If the list is empty, returns NULL. * * Example: * struct child *first; * first = list_top(&parent->children, struct child, list); * if (!first) * printf("Empty list!\n"); */ #define list_top(h, type, member) \ ((type *)list_top_((h), list_off_(type, member))) static inline const void *list_top_(const struct list_head *h, size_t off) { if (list_empty(h)) return NULL; return (const char *)h->n.next - off; } /** * list_pop - remove the first entry in a list * @h: the list_head * @type: the type of the entry * @member: the list_node member of the type * * If the list is empty, returns NULL. * * Example: * struct child *one; * one = list_pop(&parent->children, struct child, list); * if (!one) * printf("Empty list!\n"); */ #define list_pop(h, type, member) \ ((type *)list_pop_((h), list_off_(type, member))) static inline const void *list_pop_(const struct list_head *h, size_t off) { struct list_node *n; if (list_empty(h)) return NULL; n = h->n.next; list_del(n); return (const char *)n - off; } /** * list_tail - get the last entry in a list * @h: the list_head * @type: the type of the entry * @member: the list_node member of the type * * If the list is empty, returns NULL. * * Example: * struct child *last; * last = list_tail(&parent->children, struct child, list); * if (!last) * printf("Empty list!\n"); */ #define list_tail(h, type, member) \ ((type *)list_tail_((h), list_off_(type, member))) static inline const void *list_tail_(const struct list_head *h, size_t off) { if (list_empty(h)) return NULL; return (const char *)h->n.prev - off; } /** * list_for_each - iterate through a list. * @h: the list_head (warning: evaluated multiple times!) * @i: the structure containing the list_node * @member: the list_node member of the structure * * This is a convenient wrapper to iterate @i over the entire list. It's * a for loop, so you can break and continue as normal. * * Example: * list_for_each(&parent->children, child, list) * printf("Name: %s\n", child->name); */ #define list_for_each(h, i, member) \ list_for_each_off(h, i, list_off_var_(i, member)) /** * list_for_each_rev - iterate through a list backwards. * @h: the list_head * @i: the structure containing the list_node * @member: the list_node member of the structure * * This is a convenient wrapper to iterate @i over the entire list. It's * a for loop, so you can break and continue as normal. * * Example: * list_for_each_rev(&parent->children, child, list) * printf("Name: %s\n", child->name); */ #define list_for_each_rev(h, i, member) \ list_for_each_rev_off(h, i, list_off_var_(i, member)) /** * list_for_each_rev_safe - iterate through a list backwards, * maybe during deletion * @h: the list_head * @i: the structure containing the list_node * @nxt: the structure containing the list_node * @member: the list_node member of the structure * * This is a convenient wrapper to iterate @i over the entire list backwards. * It's a for loop, so you can break and continue as normal. The extra * variable * @nxt is used to hold the next element, so you can delete @i * from the list. * * Example: * struct child *next; * list_for_each_rev_safe(&parent->children, child, next, list) { * printf("Name: %s\n", child->name); * } */ #define list_for_each_rev_safe(h, i, nxt, member) \ list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member)) /** * list_for_each_safe - iterate through a list, maybe during deletion * @h: the list_head * @i: the structure containing the list_node * @nxt: the structure containing the list_node * @member: the list_node member of the structure * * This is a convenient wrapper to iterate @i over the entire list. It's * a for loop, so you can break and continue as normal. The extra variable * @nxt is used to hold the next element, so you can delete @i from the list. * * Example: * list_for_each_safe(&parent->children, child, next, list) { * list_del(&child->list); * parent->num_children--; * } */ #define list_for_each_safe(h, i, nxt, member) \ list_for_each_safe_off(h, i, nxt, list_off_var_(i, member)) /** * list_next - get the next entry in a list * @h: the list_head * @i: a pointer to an entry in the list. * @member: the list_node member of the structure * * If @i was the last entry in the list, returns NULL. * * Example: * struct child *second; * second = list_next(&parent->children, first, list); * if (!second) * printf("No second child!\n"); */ #define list_next(h, i, member) \ ((list_typeof(i))list_entry_or_null(list_debug(h, \ __FILE__ ":" stringify(__LINE__)), \ (i)->member.next, \ list_off_var_((i), member))) /** * list_prev - get the previous entry in a list * @h: the list_head * @i: a pointer to an entry in the list. * @member: the list_node member of the structure * * If @i was the first entry in the list, returns NULL. * * Example: * first = list_prev(&parent->children, second, list); * if (!first) * printf("Can't go back to first child?!\n"); */ #define list_prev(h, i, member) \ ((list_typeof(i))list_entry_or_null(list_debug(h, \ __FILE__ ":" stringify(__LINE__)), \ (i)->member.prev, \ list_off_var_((i), member))) /** * list_append_list - empty one list onto the end of another. * @to: the list to append into * @from: the list to empty. * * This takes the entire contents of @from and moves it to the end of * @to. After this @from will be empty. * * Example: * struct list_head adopter; * * list_append_list(&adopter, &parent->children); * assert(list_empty(&parent->children)); * parent->num_children = 0; */ #define list_append_list(t, f) list_append_list_(t, f, \ __FILE__ ":" stringify(__LINE__)) static inline void list_append_list_(struct list_head *to, struct list_head *from, const char *abortstr) { struct list_node *from_tail = list_debug(from, abortstr)->n.prev; struct list_node *to_tail = list_debug(to, abortstr)->n.prev; /* Sew in head and entire list. */ to->n.prev = from_tail; from_tail->next = &to->n; to_tail->next = &from->n; from->n.prev = to_tail; /* Now remove head. */ list_del(&from->n); list_head_init(from); } /** * list_prepend_list - empty one list into the start of another. * @to: the list to prepend into * @from: the list to empty. * * This takes the entire contents of @from and moves it to the start * of @to. After this @from will be empty. * * Example: * list_prepend_list(&adopter, &parent->children); * assert(list_empty(&parent->children)); * parent->num_children = 0; */ #define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC) static inline void list_prepend_list_(struct list_head *to, struct list_head *from, const char *abortstr) { struct list_node *from_tail = list_debug(from, abortstr)->n.prev; struct list_node *to_head = list_debug(to, abortstr)->n.next; /* Sew in head and entire list. */ to->n.next = &from->n; from->n.prev = &to->n; to_head->prev = from_tail; from_tail->next = to_head; /* Now remove head. */ list_del(&from->n); list_head_init(from); } /* internal macros, do not use directly */ #define list_for_each_off_dir_(h, i, off, dir) \ for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ (off)); \ list_node_from_off_((void *)i, (off)) != &(h)->n; \ i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, \ (off))) #define list_for_each_safe_off_dir_(h, i, nxt, off, dir) \ for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ (off)), \ nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ (off)); \ list_node_from_off_(i, (off)) != &(h)->n; \ i = nxt, \ nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ (off))) /** * list_for_each_off - iterate through a list of memory regions. * @h: the list_head * @i: the pointer to a memory region which contains list node data. * @off: offset(relative to @i) at which list node data resides. * * This is a low-level wrapper to iterate @i over the entire list, used to * implement all oher, more high-level, for-each constructs. It's a for loop, * so you can break and continue as normal. * * WARNING! Being the low-level macro that it is, this wrapper doesn't know * nor care about the type of @i. The only assumption made is that @i points * to a chunk of memory that at some @offset, relative to @i, contains a * properly filled `struct list_node' which in turn contains pointers to * memory chunks and it's turtles all the way down. With all that in mind * remember that given the wrong pointer/offset couple this macro will * happily churn all you memory until SEGFAULT stops it, in other words * caveat emptor. * * It is worth mentioning that one of legitimate use-cases for that wrapper * is operation on opaque types with known offset for `struct list_node' * member(preferably 0), because it allows you not to disclose the type of * @i. * * Example: * list_for_each_off(&parent->children, child, * offsetof(struct child, list)) * printf("Name: %s\n", child->name); */ #define list_for_each_off(h, i, off) \ list_for_each_off_dir_((h),(i),(off),next) /** * list_for_each_rev_off - iterate through a list of memory regions backwards * @h: the list_head * @i: the pointer to a memory region which contains list node data. * @off: offset(relative to @i) at which list node data resides. * * See list_for_each_off for details */ #define list_for_each_rev_off(h, i, off) \ list_for_each_off_dir_((h),(i),(off),prev) /** * list_for_each_safe_off - iterate through a list of memory regions, maybe * during deletion * @h: the list_head * @i: the pointer to a memory region which contains list node data. * @nxt: the structure containing the list_node * @off: offset(relative to @i) at which list node data resides. * * For details see `list_for_each_off' and `list_for_each_safe' * descriptions. * * Example: * list_for_each_safe_off(&parent->children, child, * next, offsetof(struct child, list)) * printf("Name: %s\n", child->name); */ #define list_for_each_safe_off(h, i, nxt, off) \ list_for_each_safe_off_dir_((h),(i),(nxt),(off),next) /** * list_for_each_rev_safe_off - iterate backwards through a list of * memory regions, maybe during deletion * @h: the list_head * @i: the pointer to a memory region which contains list node data. * @nxt: the structure containing the list_node * @off: offset(relative to @i) at which list node data resides. * * For details see `list_for_each_rev_off' and `list_for_each_rev_safe' * descriptions. * * Example: * list_for_each_rev_safe_off(&parent->children, child, * next, offsetof(struct child, list)) * printf("Name: %s\n", child->name); */ #define list_for_each_rev_safe_off(h, i, nxt, off) \ list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev) /* Other -off variants. */ #define list_entry_off(n, type, off) \ ((type *)list_node_from_off_((n), (off))) #define list_head_off(h, type, off) \ ((type *)list_head_off((h), (off))) #define list_tail_off(h, type, off) \ ((type *)list_tail_((h), (off))) #define list_add_off(h, n, off) \ list_add((h), list_node_from_off_((n), (off))) #define list_del_off(n, off) \ list_del(list_node_from_off_((n), (off))) #define list_del_from_off(h, n, off) \ list_del_from(h, list_node_from_off_((n), (off))) /* Offset helper functions so we only single-evaluate. */ static inline void *list_node_to_off_(struct list_node *node, size_t off) { return (void *)((char *)node - off); } static inline struct list_node *list_node_from_off_(void *ptr, size_t off) { return (struct list_node *)((char *)ptr + off); } /* Get the offset of the member, but make sure it's a list_node. */ #define list_off_(type, member) \ (container_off(type, member) + \ check_type(((type *)0)->member, struct list_node)) #define list_off_var_(var, member) \ (container_off_var(var, member) + \ check_type(var->member, struct list_node)) #if HAVE_TYPEOF #define list_typeof(var) typeof(var) #else #define list_typeof(var) void * #endif /* Returns member, or NULL if at end of list. */ static inline void *list_entry_or_null(const struct list_head *h, const struct list_node *n, size_t off) { if (n == &h->n) return NULL; return (char *)n - off; } #endif /* CCAN_LIST_H */ hkl-5.1.7/hkl/ccan/list/list.c0000664000175000017500000000175015133706174015052 0ustar00piccapicca/* Licensed under BSD-MIT - see LICENSE file for details */ #include #include #include "list.h" static void *corrupt(const char *abortstr, const struct list_node *head, const struct list_node *node, unsigned int count) { if (abortstr) { fprintf(stderr, "%s: prev corrupt in node %p (%u) of %p\n", abortstr, node, count, head); abort(); } return NULL; } struct list_node *list_check_node(const struct list_node *node, const char *abortstr) { const struct list_node *p, *n; int count = 0; for (p = node, n = node->next; n != node; p = n, n = n->next) { count++; if (n->prev != p) return corrupt(abortstr, node, n, count); } /* Check prev on head node. */ if (node->prev != p) return corrupt(abortstr, node, node, 0); return (struct list_node *)node; } struct list_head *list_check(const struct list_head *h, const char *abortstr) { if (!list_check_node(&h->n, abortstr)) return NULL; return (struct list_head *)h; } hkl-5.1.7/hkl/ccan/coroutine/0000775000175000017500000000000015144640565014767 5ustar00piccapiccahkl-5.1.7/hkl/ccan/coroutine/coroutine.c0000664000175000017500000001262515133706174017145 0ustar00piccapicca/* GNU LGPL version 2 (or later) - see LICENSE file for details */ #include #include #include #include #include #include #include #include #include #include #include /* * Stack management */ /* Returns lowest stack address, regardless of growth direction */ static UNNEEDED void *coroutine_stack_base(struct coroutine_stack *stack) { #if HAVE_STACK_GROWS_UPWARDS return (char *)(stack + 1); #else return (char *)stack - stack->size; #endif } #if HAVE_VALGRIND_MEMCHECK_H #include static void vg_register_stack(struct coroutine_stack *stack) { char *base = coroutine_stack_base(stack); VALGRIND_MAKE_MEM_UNDEFINED(base, stack->size); stack->valgrind_id = VALGRIND_STACK_REGISTER(base, base + stack->size - 1); } static void vg_deregister_stack(struct coroutine_stack *stack) { VALGRIND_MAKE_MEM_UNDEFINED(coroutine_stack_base(stack), stack->size); VALGRIND_STACK_DEREGISTER(stack->valgrind_id); } static bool vg_addressable(void *p, size_t len) { return !VALGRIND_CHECK_MEM_IS_ADDRESSABLE(p, len); } #else #define vg_register_stack(stack) do { } while (0) #define vg_deregister_stack(stack) do { } while (0) #define vg_addressable(p, len) (true) #endif struct coroutine_stack *coroutine_stack_init(void *buf, size_t bufsize, size_t metasize) { struct coroutine_stack *stack; size_t size = bufsize - sizeof(*stack) - metasize; #ifdef MINSIGSTKSZ BUILD_ASSERT(COROUTINE_MIN_STKSZ >= MINSIGSTKSZ); #endif if (bufsize < (COROUTINE_MIN_STKSZ + sizeof(*stack) + metasize)) return NULL; #if HAVE_STACK_GROWS_UPWARDS stack = (char *)buf + metasize; #else stack = (struct coroutine_stack *) ((char *)buf + bufsize - metasize) - 1; #endif stack->magic = COROUTINE_STACK_MAGIC_BUF; stack->size = size; vg_register_stack(stack); return stack; } struct coroutine_stack *coroutine_stack_alloc(size_t totalsize, size_t metasize) { struct coroutine_stack *stack; size_t pgsz = getpagesize(); size_t mapsize; char *map, *guard; int rc; mapsize = ((totalsize + (pgsz - 1)) & ~(pgsz - 1)) + pgsz; map = mmap(NULL, mapsize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (map == MAP_FAILED) return NULL; #if HAVE_STACK_GROWS_UPWARDS guard = map + mapsize - pgsz; stack = (struct coroutine_stack *)(guard - totalsize + metasize); #else guard = map; stack = (struct coroutine_stack *)(map + pgsz + totalsize - metasize) - 1; #endif rc = mprotect(guard, pgsz, PROT_NONE); if (rc != 0) { munmap(map, mapsize); return NULL; } stack->magic = COROUTINE_STACK_MAGIC_ALLOC; stack->size = totalsize - sizeof(*stack) - metasize; vg_register_stack(stack); return stack; } static void coroutine_stack_free(struct coroutine_stack *stack, size_t metasize) { void *map; size_t pgsz = getpagesize(); size_t totalsize = stack->size + sizeof(*stack) + metasize; size_t mapsize = ((totalsize + (pgsz - 1)) & ~(pgsz - 1)) + pgsz; #if HAVE_STACK_GROWS_UPWARDS map = (char *)(stack + 1) + stack->size + pgsz - mapsize; #else map = (char *)stack - stack->size - pgsz; #endif munmap(map, mapsize); } void coroutine_stack_release(struct coroutine_stack *stack, size_t metasize) { vg_deregister_stack(stack); switch (stack->magic) { case COROUTINE_STACK_MAGIC_BUF: memset(stack, 0, sizeof(*stack)); break; case COROUTINE_STACK_MAGIC_ALLOC: coroutine_stack_free(stack, metasize); break; default: abort(); } } struct coroutine_stack *coroutine_stack_check(struct coroutine_stack *stack, const char *abortstr) { if (stack && vg_addressable(stack, sizeof(*stack)) && ((stack->magic == COROUTINE_STACK_MAGIC_BUF) || (stack->magic == COROUTINE_STACK_MAGIC_ALLOC)) && (stack->size >= COROUTINE_MIN_STKSZ)) return stack; if (abortstr) { if (!stack) fprintf(stderr, "%s: NULL coroutine stack\n", abortstr); else fprintf(stderr, "%s: Bad coroutine stack at %p (magic=0x%"PRIx64" size=%zd)\n", abortstr, stack, stack->magic, stack->size); abort(); } return NULL; } size_t coroutine_stack_size(const struct coroutine_stack *stack) { return stack->size; } #if HAVE_UCONTEXT static void coroutine_uc_stack(stack_t *uc_stack, const struct coroutine_stack *stack) { uc_stack->ss_size = coroutine_stack_size(stack); uc_stack->ss_sp = coroutine_stack_base((struct coroutine_stack *)stack); } #endif /* HAVE_UCONTEXT */ /* * Coroutine switching */ #if HAVE_UCONTEXT void coroutine_init_(struct coroutine_state *cs, void (*fn)(void *), void *arg, struct coroutine_stack *stack) { getcontext (&cs->uc); coroutine_uc_stack(&cs->uc.uc_stack, stack); if (HAVE_POINTER_SAFE_MAKECONTEXT) { makecontext(&cs->uc, (void *)fn, 1, arg); } else { ptrdiff_t si = ptr2int(arg); ptrdiff_t mask = (1UL << (sizeof(int) * 8)) - 1; int lo = si & mask; int hi = si >> (sizeof(int) * 8); makecontext(&cs->uc, (void *)fn, 2, lo, hi); } } void coroutine_jump(const struct coroutine_state *to) { setcontext(&to->uc); assert(0); } void coroutine_switch(struct coroutine_state *from, const struct coroutine_state *to) { int rc; rc = swapcontext(&from->uc, &to->uc); assert(rc == 0); } #endif /* HAVE_UCONTEXT */ hkl-5.1.7/hkl/ccan/coroutine/coroutine.h0000664000175000017500000001674115133706364017156 0ustar00piccapicca/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #ifndef CCAN_COROUTINE_H #define CCAN_COROUTINE_H /*#define CCAN_COROUTINE_DEBUG 1*/ #include #include #include #include #include #include #include /** * struct coroutine_stack * * Describes a stack suitable for executing a coroutine. This * structure is always contained within the stack it describes. */ struct coroutine_stack { uint64_t magic; size_t size; int valgrind_id; }; /** * struct coroutine_state * * Describes the state of an in-progress coroutine. */ struct coroutine_state; /* * Stack management */ /** * COROUTINE_STK_OVERHEAD - internal stack overhead * * Number of bytes of a stack which coroutine needs for its own * tracking information. */ #define COROUTINE_STK_OVERHEAD sizeof(struct coroutine_stack) /** * COROUTINE_MIN_STKSZ - Minimum coroutine stack size * * Contains the minimum size for a coroutine stack (not including * overhead). On systems with MINSTKSZ, guaranteed to be at least as * large as MINSTKSZ. */ #define COROUTINE_MIN_STKSZ 2048 /** * COROUTINE_STACK_MAGIC_BUF - Magic number for coroutine stacks in a user * supplied buffer */ #define COROUTINE_STACK_MAGIC_BUF 0xc040c040574cb00f /** * COROUTINE_STACK_MAGIC_ALLOC - Magic number for coroutine stacks * allocated by this module */ #define COROUTINE_STACK_MAGIC_ALLOC 0xc040c040574ca110 /** * coroutine_stack_init - Prepare a coroutine stack in an existing buffer * @buf: buffer to use for the coroutine stack * @bufsize: size of @buf * @metasize: size of metadata to add to the stack (not including * coroutine internal overhead) * * Prepares @buf for use as a coroutine stack, returning a * coroutine_stack *, allocated from within the buffer. Returns NULL * on failure. * * This will fail if the bufsize < (COROUTINE_MIN_STKSZ + * COROUTINE_STK_OVERHEAD + metasize). */ struct coroutine_stack *coroutine_stack_init(void *buf, size_t bufsize, size_t metasize); /** * coroutine_stack_alloc - Allocate a coroutine stack * @totalsize: total size to allocate * @metasize: size of metadata to add to the stack (not including * coroutine internal overhead) * * Allocates a coroutine stack of size @totalsize, including both * internal overhead (COROUTINE_STK_OVERHEAD) and metadata of size * @metasize. Where available this will also create a guard page, so * that overruning the stack will result in an immediate crash, rather * than data corruption. * * This will fail if the totalsize < (COROUTINE_MIN_STKSZ + * COROUTINE_STK_OVERHEAD + metasize). */ struct coroutine_stack *coroutine_stack_alloc(size_t bufsize, size_t metasize); /** * coroutine_stack_release - Stop using a coroutine stack * @stack: coroutine stack to release * @metasize: size of metadata * * This releases @stack, making it no longer suitable for use as a * coroutine stack. @metasize must be equal to the metasize passed to * coroutine_stack_init. */ void coroutine_stack_release(struct coroutine_stack *stack, size_t metasize); /** * coroutine_stack_check - Validate and return a coroutine stack * @stack: stack to check * @abortstr: the location to print on aborting, or NULL. * * Debugging check if @stack doesn't appear to be a valid coroutine * stack, and @abortstr is non-NULL it will be printed and the * function will abort. * * Returns @stack if it appears valid, NULL if not (it can never * return NULL if @abortstr is set). */ struct coroutine_stack *coroutine_stack_check(struct coroutine_stack *stack, const char *abortstr); /** * coroutine_stack_to_metadata - Returns pointer to user's metadata * allocated within the stack * @stack: coroutine stack * @metasize: size of metadata * * Returns a pointer to the metadata area within @stack. This is of * size given at initialization time, and won't be overwritten by * coroutines executing on the stack. It's up to the caller what to * put in here. @metasize must be equal to the value passed to * coroutine_stack_init(). */ static inline void *coroutine_stack_to_metadata(struct coroutine_stack *stack, UNUSED size_t metasize) { #if HAVE_STACK_GROWS_UPWARDS return (char *)stack - metasize; #else return (char *)stack + COROUTINE_STK_OVERHEAD; #endif } /** * coroutine_stack_from_metadata - Returns pointer to coroutine stack * pointer given pointer to user metadata * @metadat: user metadata within a stack * @metasize: size of metadata * * Returns a pointer to the coroutine_stack handle within a stack. * The argument must be a pointer returned by * coroutine_stack_to_metadata() at an earlier time. @metasize must be * equal to the value passed to coroutine_stack_init(). */ static inline struct coroutine_stack * coroutine_stack_from_metadata(void *metadata, UNUSED size_t metasize) { #if HAVE_STACK_GROWS_UPWARDS return (struct coroutine_stack *)((char *)metadata + metasize); #else return (struct coroutine_stack *)((char *)metadata - COROUTINE_STK_OVERHEAD); #endif } /** * coroutine_stack_size - Return size of a coroutine stack * @stack: coroutine stack * * Returns the size of the coroutine stack @stack. This does not * include the overhead of struct coroutine_stack or metdata. */ size_t coroutine_stack_size(const struct coroutine_stack *stack); /* * Coroutine switching */ #if HAVE_UCONTEXT #include #define COROUTINE_AVAILABLE 1 #else #define COROUTINE_AVAILABLE 0 #endif struct coroutine_state { #if HAVE_UCONTEXT ucontext_t uc; #endif /* HAVE_UCONTEXT */ }; #if COROUTINE_AVAILABLE /** * coroutine_init - Prepare a coroutine for execution * @cs: coroutine_state structure to initialize * @fn: function to start executing in the coroutine * @arg: argument for @fn * @stack: stack to use for the coroutine * * Prepares @cs as a new coroutine which will execute starting with * function @fn, using stack @stack. */ void coroutine_init_(struct coroutine_state *cs, void (*fn)(void *), void *arg, struct coroutine_stack *stack); #define coroutine_init(cs, fn, arg, stack) \ coroutine_init_((cs), \ typesafe_cb(void, void *, (fn), (arg)), \ (arg), (stack)) /** * coroutine_jump - Irreversibly switch to executing a coroutine * @to: coroutine to switch to * * Immediately jump to executing coroutine @to (at whatever point in * execution it was up to). Never returns. */ void NORETURN coroutine_jump(const struct coroutine_state *to); /** * coroutine_switch - Switch coroutines * @from: coroutine in which to store current execution state * @to: coroutine to switch to * * Stop executing the current routine, saving its state in @from, and * switch to executing the coroutine @to. Returns only when something * switches or jumps back to @from. */ void coroutine_switch(struct coroutine_state *from, const struct coroutine_state *to); #else static inline void coroutine_init(struct coroutine_state *cs, void (*fn)(void *), void *arg, struct coroutine_stack *stack) { assert(0); } static inline void NORETURN coroutine_jump(const struct coroutine_state *to) { assert(0); } static inline void coroutine_switch(struct coroutine_state *from, const struct coroutine_state *to) { assert(0); } #endif /* !COROUTINE_AVAILABLE */ #endif /* CCAN_COROUTINE_H */ hkl-5.1.7/hkl/ccan/alignof/0000775000175000017500000000000015144640565014377 5ustar00piccapiccahkl-5.1.7/hkl/ccan/alignof/alignof.h0000664000175000017500000000077715133706174016177 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_ALIGNOF_H #define CCAN_ALIGNOF_H #include /** * ALIGNOF - get the alignment of a type * @t: the type to test * * This returns a safe alignment for the given type. */ #if HAVE_ALIGNOF /* A GCC extension. */ #define ALIGNOF(t) __alignof__(t) #else /* Alignment by measuring structure padding. */ #define ALIGNOF(t) ((char *)(&((struct { char c; t _h; } *)0)->_h) - (char *)0) #endif #endif /* CCAN_ALIGNOF_H */ hkl-5.1.7/hkl/ccan/ptrint/0000775000175000017500000000000015144640565014300 5ustar00piccapiccahkl-5.1.7/hkl/ccan/ptrint/ptrint.h0000664000175000017500000000161015133706174015764 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_PTRINT_H #define CCAN_PTRINT_H #include #include #include #include /* * This is a deliberately incomplete type, because it should never be * dereferenced - instead it marks pointer values which are actually * encoding integers */ typedef struct ptrint ptrint_t; CONST_FUNCTION static inline ptrdiff_t ptr2int(const ptrint_t *p) { /* * ptrdiff_t is the right size by definition, but to avoid * surprises we want a warning if the user can't fit at least * a regular int in there */ BUILD_ASSERT(sizeof(int) <= sizeof(ptrdiff_t)); return (const char *)p - (const char *)NULL; } CONST_FUNCTION static inline ptrint_t *int2ptr(ptrdiff_t i) { return (ptrint_t *)((char *)NULL + i); } #endif /* CCAN_PTRINT_H */ hkl-5.1.7/hkl/ccan/noerr/0000775000175000017500000000000015144640565014105 5ustar00piccapiccahkl-5.1.7/hkl/ccan/noerr/noerr.c0000664000175000017500000000127315133706174015376 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #include "noerr.h" #include #include #include int close_noerr(int fd) { int saved_errno = errno, ret; if (close(fd) != 0) ret = errno; else ret = 0; errno = saved_errno; return ret; } int fclose_noerr(FILE *fp) { int saved_errno = errno, ret; if (fclose(fp) != 0) ret = errno; else ret = 0; errno = saved_errno; return ret; } int unlink_noerr(const char *pathname) { int saved_errno = errno, ret; if (unlink(pathname) != 0) ret = errno; else ret = 0; errno = saved_errno; return ret; } void free_noerr(void *p) { int saved_errno = errno; free(p); errno = saved_errno; } hkl-5.1.7/hkl/ccan/noerr/noerr.h0000664000175000017500000000210615133706174015377 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef NOERR_H #define NOERR_H #include /** * close_noerr - close without stomping errno. * @fd: the file descriptor to close. * * errno is saved and restored across the call to close: if an error occurs, * the resulting (non-zero) errno is returned. */ int close_noerr(int fd); /** * fclose_noerr - close without stomping errno. * @fp: the FILE pointer. * * errno is saved and restored across the call to fclose: if an error occurs, * the resulting (non-zero) errno is returned. */ int fclose_noerr(FILE *fp); /** * unlink_noerr - unlink a file without stomping errno. * @pathname: the path to unlink. * * errno is saved and restored across the call to unlink: if an error occurs, * the resulting (non-zero) errno is returned. */ int unlink_noerr(const char *pathname); /** * free_noerr - free memory without stomping errno. * @p: the pointer to free. * * errno is saved and restored across the call to free: the standard leaves * that undefined. */ void free_noerr(void *p); #endif /* NOERR_H */ hkl-5.1.7/hkl/ccan/autodata/0000775000175000017500000000000015144640565014562 5ustar00piccapiccahkl-5.1.7/hkl/ccan/autodata/autodata.h0000664000175000017500000000624115133706174016535 0ustar00piccapicca// Licensed under BSD-MIT: See LICENSE. #ifndef CCAN_AUTODATA_H #define CCAN_AUTODATA_H #include #include #include #if HAVE_SECTION_START_STOP /** * AUTODATA_TYPE - declare the type for a given autodata name. * @name: the name for this set of autodata * @type: the type this autodata points to * * This macro is usually placed in a header: it must precede any * autodata functions in the file. * * Example: * #include * * // My set of char pointers. * AUTODATA_TYPE(names, char); */ #define AUTODATA_TYPE(name, type) \ typedef type autodata_##name##_; \ extern type *__start_xautodata_##name[], *__stop_xautodata_##name[] /** * AUTODATA - add a pointer to this autodata set * @name: the name of the set of autodata * @ptr: the compile-time-known pointer * * This embeds @ptr into the binary, with the tag corresponding to * @name (which must look like a valid identifier, no punctuation!). * The type of @ptr must match that given by AUTODATA_TYPE. It is * usually a file-level declaration. * * Example: * // Put two char pointers into the names AUTODATA set. * AUTODATA(names, "Arabella"); * AUTODATA(names, "Alex"); */ #define AUTODATA(name, ptr) \ static const autodata_##name##_ *NEEDED \ __attribute__((section("xautodata_" #name))) \ AUTODATA_VAR_(name, __LINE__) = (ptr); /** * autodata_get - get an autodata set * @name: the name of the set of autodata * @nump: the number of items in the set. * * This extract the embedded pointers matching @name. It may fail * if malloc() fails, or if there is no AUTODATA at all. * * The return will be a pointer to an array of @type pointers (from * AUTODATA_TYPE). * * Example: * static void print_embedded_names(void) * { * unsigned int i; * size_t num; * char **n = autodata_get(names, &num); * * for (i = 0; i < num; i++) * printf("%s\n", n[i]); * } */ #define autodata_get(name, nump) \ ((autodata_##name##_ **) \ autodata_get_section(__start_xautodata_##name, \ __stop_xautodata_##name, (nump))) #endif /* HAVE_SECTION_START_STOP */ /** * autodata_free - free the table returned by autodata_get() * @p: the table. */ void autodata_free(void *p); /* Internal functions. */ #define AUTODATA_VAR__(name, line) autodata_##name##_##line #define AUTODATA_VAR_(name, line) AUTODATA_VAR__(name, line) #if HAVE_SECTION_START_STOP void *autodata_get_section(void *start, void *stop, size_t *nump); #else #define AUTODATA_TYPE(name, type) \ typedef type autodata_##name##_; \ static const void *autodata_##name##_ex = &autodata_##name##_ex #define AUTODATA_MAGIC ((long)0xFEEDA10DA7AF00D5ULL) #define AUTODATA(name, ptr) \ static const autodata_##name##_ *NEEDED \ AUTODATA_VAR_(name, __LINE__)[4] = \ { (void *)AUTODATA_MAGIC, \ (void *)&AUTODATA_VAR_(name, __LINE__), \ (ptr), \ (void *)#name } #define autodata_get(name, nump) \ ((autodata_##name##_ **) \ autodata_make_table(&autodata_##name##_ex, #name, (nump))) void *autodata_make_table(const void *example, const char *name, size_t *nump); #endif #endif /* CCAN_AUTODATA_H */ hkl-5.1.7/hkl/ccan/autodata/autodata.c0000664000175000017500000000350315133706174016526 0ustar00piccapicca// Licensed under BSD-MIT: See LICENSE. #include "autodata.h" #include #include #include #if HAVE_SECTION_START_STOP void *autodata_get_section(void *start, void *stop, size_t *nump) { *nump = (void **)(stop) - (void **)(start); return start; } void autodata_free(void *table UNNEEDED) { } #else #include void *autodata_make_table(const void *example, const char *name, size_t *nump) { const char *start, *end, *tag; struct ptr_valid_batch batch; const void *const magic = (void *)AUTODATA_MAGIC; void **table = NULL; char first_magic; if (!ptr_valid_batch_start(&batch)) return NULL; /* Get range to search. */ for (start = (char *)((intptr_t)example & ~(getpagesize() - 1)); ptr_valid_batch(&batch, start-getpagesize(), 1, sizeof(void *), false); start -= getpagesize()); for (end = (char *)((intptr_t)example & ~(getpagesize() - 1)); ptr_valid_batch(&batch, end, 1, sizeof(void *), false); end += getpagesize()); *nump = 0; first_magic = *(char *)&magic; for (tag = memchr(start, first_magic, end - start); tag; tag = memchr(tag+1, first_magic, end - (tag + 1))) { void *adata[4]; /* We can read 4 void *'s here? */ if (tag + sizeof(adata) > end) continue; memcpy(adata, tag, sizeof(adata)); /* False match? */ if (adata[0] != (void *)AUTODATA_MAGIC || adata[1] != tag) continue; /* OK, check name. */ if (!ptr_valid_batch_string(&batch, adata[3]) || strcmp(name, adata[3]) != 0) continue; if (!ptr_valid_batch_read(&batch, (char *)adata[2])) continue; table = realloc(table, sizeof(void *) * (*nump + 1)); if (!table) break; table[*nump] = adata[2]; (*nump)++; } ptr_valid_batch_end(&batch); return table; } void autodata_free(void *table) { free(table); } #endif hkl-5.1.7/hkl/ccan/container_of/0000775000175000017500000000000015144640565015426 5ustar00piccapiccahkl-5.1.7/hkl/ccan/container_of/container_of.h0000664000175000017500000001031015133706174020235 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_CONTAINER_OF_H #define CCAN_CONTAINER_OF_H #include #include #include /** * container_of - get pointer to enclosing structure * @member_ptr: pointer to the structure member * @containing_type: the type this member is within * @member: the name of this member within the structure. * * Given a pointer to a member of a structure, this macro does pointer * subtraction to return the pointer to the enclosing type. * * Example: * struct foo { * int fielda, fieldb; * // ... * }; * struct info { * int some_other_field; * struct foo my_foo; * }; * * static struct info *foo_to_info(struct foo *foo) * { * return container_of(foo, struct info, my_foo); * } */ #define container_of(member_ptr, containing_type, member) \ ((containing_type *) \ ((char *)(member_ptr) \ - container_off(containing_type, member)) \ + check_types_match(*(member_ptr), ((containing_type *)0)->member)) /** * container_of_or_null - get pointer to enclosing structure, or NULL * @member_ptr: pointer to the structure member * @containing_type: the type this member is within * @member: the name of this member within the structure. * * Given a pointer to a member of a structure, this macro does pointer * subtraction to return the pointer to the enclosing type, unless it * is given NULL, in which case it also returns NULL. * * Example: * struct foo { * int fielda, fieldb; * // ... * }; * struct info { * int some_other_field; * struct foo my_foo; * }; * * static struct info *foo_to_info_allowing_null(struct foo *foo) * { * return container_of_or_null(foo, struct info, my_foo); * } */ static inline char *container_of_or_null_(void *member_ptr, size_t offset) { return member_ptr ? (char *)member_ptr - offset : NULL; } #define container_of_or_null(member_ptr, containing_type, member) \ ((containing_type *) \ container_of_or_null_(member_ptr, \ container_off(containing_type, member)) \ + check_types_match(*(member_ptr), ((containing_type *)0)->member)) /** * container_off - get offset to enclosing structure * @containing_type: the type this member is within * @member: the name of this member within the structure. * * Given a pointer to a member of a structure, this macro does * typechecking and figures out the offset to the enclosing type. * * Example: * struct foo { * int fielda, fieldb; * // ... * }; * struct info { * int some_other_field; * struct foo my_foo; * }; * * static struct info *foo_to_info(struct foo *foo) * { * size_t off = container_off(struct info, my_foo); * return (void *)((char *)foo - off); * } */ #define container_off(containing_type, member) \ offsetof(containing_type, member) /** * container_of_var - get pointer to enclosing structure using a variable * @member_ptr: pointer to the structure member * @container_var: a pointer of same type as this member's container * @member: the name of this member within the structure. * * Given a pointer to a member of a structure, this macro does pointer * subtraction to return the pointer to the enclosing type. * * Example: * static struct info *foo_to_i(struct foo *foo) * { * struct info *i = container_of_var(foo, i, my_foo); * return i; * } */ #if HAVE_TYPEOF #define container_of_var(member_ptr, container_var, member) \ container_of(member_ptr, typeof(*container_var), member) #else #define container_of_var(member_ptr, container_var, member) \ ((void *)((char *)(member_ptr) - \ container_off_var(container_var, member))) #endif /** * container_off_var - get offset of a field in enclosing structure * @container_var: a pointer to a container structure * @member: the name of a member within the structure. * * Given (any) pointer to a structure and a its member name, this * macro does pointer subtraction to return offset of member in a * structure memory layout. * */ #if HAVE_TYPEOF #define container_off_var(var, member) \ container_off(typeof(*var), member) #else #define container_off_var(var, member) \ ((const char *)&(var)->member - (const char *)(var)) #endif #endif /* CCAN_CONTAINER_OF_H */ hkl-5.1.7/hkl/ccan/darray/0000775000175000017500000000000015144640564014241 5ustar00piccapiccahkl-5.1.7/hkl/ccan/darray/darray.h0000664000175000017500000003153115133711150015663 0ustar00piccapicca/* * Copyright (C) 2011, 2025 Joseph Adams * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #ifndef CCAN_DARRAY_H #define CCAN_DARRAY_H #include #include #include /* * SYNOPSIS * * Life cycle of a darray (dynamically-allocated array): * * darray(int) a = darray_new(); * darray_free(a); * * struct {darray(int) a;} foo; * darray_init(foo.a); * darray_free(foo.a); * * Typedefs for darrays of common types: * * darray_char, darray_schar, darray_uchar * darray_short, darray_int, darray_long * darray_ushort, darray_uint, darray_ulong * * Access: * * T darray_item(darray(T) arr, size_t index); * size_t darray_size(darray(T) arr); * size_t darray_alloc(darray(T) arr); * bool darray_empty(darray(T) arr); * * Insertion (single item): * * void darray_append(darray(T) arr, T item); * void darray_prepend(darray(T) arr, T item); * void darray_insert(darray(T) arr, size_t index, T item); * void darray_push(darray(T) arr, T item); // same as darray_append * * Insertion (multiple items): * * void darray_append_items(darray(T) arr, T *items, size_t count); * void darray_prepend_items(darray(T) arr, T *items, size_t count); * * void darray_appends(darray(T) arr, [T item, [...]]); * void darray_prepends(darray(T) arr, [T item, [...]]); * * // Same functionality as above, but does not require typeof. * void darray_appends_t(darray(T) arr, #T, [T item, [...]]); * void darray_prepends_t(darray(T) arr, #T, [T item, [...]]); * * Removal: * * T darray_pop(darray(T) arr | darray_size(arr) != 0); * T* darray_pop_check(darray(T*) arr); * void darray_remove(darray(T) arr, size_t index); * * Replacement: * * void darray_from_items(darray(T) arr, T *items, size_t count); * void darray_from_c(darray(T) arr, T c_array[N]); * * String buffer: * * void darray_append_string(darray(char) arr, const char *str); * void darray_append_lit(darray(char) arr, char stringLiteral[N+1]); * * void darray_prepend_string(darray(char) arr, const char *str); * void darray_prepend_lit(darray(char) arr, char stringLiteral[N+1]); * * void darray_from_string(darray(T) arr, const char *str); * void darray_from_lit(darray(char) arr, char stringLiteral[N+1]); * * Size management: * * void darray_resize(darray(T) arr, size_t newSize); * void darray_resize0(darray(T) arr, size_t newSize); * * void darray_realloc(darray(T) arr, size_t newAlloc); * void darray_growalloc(darray(T) arr, size_t newAlloc); * * void darray_make_room(darray(T) arr, size_t room); * * Traversal: * * darray_foreach(T *&i, darray(T) arr) {...} * darray_foreach_reverse(T *&i, darray(T) arr) {...} * * Except for darray_foreach, darray_foreach_reverse, and darray_remove, * all macros evaluate their non-darray arguments only once. */ /*** Life cycle ***/ #define darray(type) struct {type *item; size_t size; size_t alloc;} #define darray_new() {0,0,0} #define darray_init(arr) do {(arr).item=0; (arr).size=0; (arr).alloc=0;} while(0) #define darray_free(arr) do {free((arr).item);} while(0) /* * Typedefs for darrays of common types. These are useful * when you want to pass a pointer to an darray(T) around. * * The following will produce an incompatible pointer warning: * * void foo(darray(int) *arr); * darray(int) arr = darray_new(); * foo(&arr); * * The workaround: * * void foo(darray_int *arr); * darray_int arr = darray_new(); * foo(&arr); */ typedef darray(char) darray_char; typedef darray(signed char) darray_schar; typedef darray(unsigned char) darray_uchar; typedef darray(short) darray_short; typedef darray(int) darray_int; typedef darray(long) darray_long; typedef darray(unsigned short) darray_ushort; typedef darray(unsigned int) darray_uint; typedef darray(unsigned long) darray_ulong; /*** Access ***/ #define darray_item(arr, i) ((arr).item[i]) #define darray_size(arr) ((arr).size) #define darray_alloc(arr) ((arr).alloc) #define darray_empty(arr) ((arr).size == 0) /*** Insertion (single item) ***/ #define darray_append(arr, ...) do { \ darray_resize(arr, (arr).size+1); \ (arr).item[(arr).size-1] = (__VA_ARGS__); \ } while(0) #define darray_prepend(arr, ...) do { \ darray_resize(arr, (arr).size+1); \ memmove((arr).item+1, (arr).item, ((arr).size-1)*sizeof(*(arr).item)); \ (arr).item[0] = (__VA_ARGS__); \ } while(0) #define darray_insert(arr, i, ...) do { \ size_t index_ = (i); \ darray_resize(arr, (arr).size+1); \ memmove((arr).item+index_+1, (arr).item+index_, ((arr).size-index_-1)*sizeof(*(arr).item)); \ (arr).item[index_] = (__VA_ARGS__); \ } while(0) #define darray_push(arr, ...) darray_append(arr, __VA_ARGS__) /*** Insertion (multiple items) ***/ #define darray_append_items(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ /* Don't memcpy NULL! */ \ if (count_) { \ darray_resize(arr, oldSize_ + count_); \ memcpy((arr).item + oldSize_, items, count_ * sizeof(*(arr).item)); \ } \ } while(0) #define darray_prepend_items(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ darray_resize(arr, count_ + oldSize_); \ /* Don't memcpy NULL! */ \ if (count_) { \ memmove((arr).item + count_, (arr).item, oldSize_ * sizeof(*(arr).item)); \ memcpy((arr).item, items, count_ * sizeof(*(arr).item)); \ } \ } while(0) #define darray_append_items_nullterminate(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ darray_resize(arr, oldSize_ + count_ + 1); \ memcpy((arr).item + oldSize_, items, count_ * sizeof(*(arr).item)); \ (arr).item[--(arr).size] = 0; \ } while(0) #define darray_prepend_items_nullterminate(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ darray_resize(arr, count_ + oldSize_ + 1); \ memmove((arr).item + count_, (arr).item, oldSize_ * sizeof(*(arr).item)); \ memcpy((arr).item, items, count_ * sizeof(*(arr).item)); \ (arr).item[--(arr).size] = 0; \ } while(0) #if HAVE_TYPEOF #define darray_appends(arr, ...) darray_appends_t(arr, typeof((*(arr).item)), __VA_ARGS__) #define darray_prepends(arr, ...) darray_prepends_t(arr, typeof((*(arr).item)), __VA_ARGS__) #endif #define darray_appends_t(arr, type, ...) do { \ type src_[] = {__VA_ARGS__}; \ darray_append_items(arr, src_, sizeof(src_)/sizeof(*src_)); \ } while(0) #define darray_prepends_t(arr, type, ...) do { \ type src_[] = {__VA_ARGS__}; \ darray_prepend_items(arr, src_, sizeof(src_)/sizeof(*src_)); \ } while(0) /*** Removal ***/ /* Warning: Do not call darray_pop on an empty darray. */ #define darray_pop(arr) ((arr).item[--(arr).size]) #define darray_pop_check(arr) ((arr).size ? darray_pop(arr) : NULL) /* Warning, slow: Requires copying all elements after removed item. */ #define darray_remove(arr, i) do { \ size_t index_ = (i); \ if (index_ < arr.size-1) \ memmove(&(arr).item[index_], &(arr).item[index_+1], ((arr).size-1-index_)*sizeof(*(arr).item)); \ (arr).size--; \ } while(0) /*** Replacement ***/ #define darray_from_items(arr, items, count) do {size_t count_ = (count); darray_resize(arr, count_); memcpy((arr).item, items, count_*sizeof(*(arr).item));} while(0) #define darray_from_c(arr, c_array) darray_from_items(arr, c_array, sizeof(c_array)/sizeof(*(c_array))) /*** String buffer ***/ #define darray_append_string(arr, str) do {const char *str_ = (str); darray_append_items(arr, str_, strlen(str_)+1); (arr).size--;} while(0) #define darray_append_lit(arr, stringLiteral) do {darray_append_items(arr, stringLiteral, sizeof(stringLiteral)); (arr).size--;} while(0) #define darray_prepend_string(arr, str) do { \ const char *str_ = (str); \ darray_prepend_items_nullterminate(arr, str_, strlen(str_)); \ } while(0) #define darray_prepend_lit(arr, stringLiteral) \ darray_prepend_items_nullterminate(arr, stringLiteral, sizeof(stringLiteral) - 1) #define darray_from_string(arr, str) do {const char *str_ = (str); darray_from_items(arr, str_, strlen(str_)+1); (arr).size--;} while(0) #define darray_from_lit(arr, stringLiteral) do {darray_from_items(arr, stringLiteral, sizeof(stringLiteral)); (arr).size--;} while(0) /*** Size management ***/ #define darray_resize(arr, newSize) darray_growalloc(arr, (arr).size = (newSize)) #define darray_resize0(arr, newSize) do { \ size_t oldSize_ = (arr).size, newSize_ = (newSize); \ (arr).size = newSize_; \ if (newSize_ > oldSize_) { \ darray_growalloc(arr, newSize_); \ memset(&(arr).item[oldSize_], 0, (newSize_ - oldSize_) * sizeof(*(arr).item)); \ } \ } while(0) #define darray_realloc(arr, newAlloc) do { \ void *tmp = realloc((arr).item, (newAlloc) * sizeof(*(arr).item)); \ if (NULL == tmp && 0 != (newAlloc) ) { \ abort(); \ }else{ \ (arr).item = (typeof((arr).item)) tmp; \ (arr).alloc = (newAlloc); \ } \ } while(0) #define darray_growalloc(arr, need) do { \ size_t need_ = (need); \ if (need_ > (arr).alloc) \ darray_realloc(arr, darray_next_alloc((arr).alloc, need_)); \ } while(0) #if HAVE_STATEMENT_EXPR==1 #define darray_make_room(arr, room) ({size_t newAlloc = (arr).size+(room); if ((arr).alloc &(arr).item[0]; ) #endif /* CCAN_DARRAY_H */ /* darray_growalloc(arr, newAlloc) sees if the darray can currently hold newAlloc items; if not, it increases the alloc to satisfy this requirement, allocating slack space to avoid having to reallocate for every size increment. darray_from_string(arr, str) copies a string to an darray_char. darray_push(arr, item) pushes an item to the end of the darray. darray_pop(arr) pops it back out. Be sure there is at least one item in the darray before calling. darray_pop_check(arr) does the same as darray_pop, but returns NULL if there are no more items left in the darray. darray_make_room(arr, room) ensures there's 'room' elements of space after the end of the darray, and it returns a pointer to this space. Currently requires HAVE_STATEMENT_EXPR, but I plan to remove this dependency by creating an inline function. The following require HAVE_TYPEOF==1 : darray_appends(arr, item0, item1...) appends a collection of comma-delimited items to the darray. darray_prepends(arr, item0, item1...) prepends a collection of comma-delimited items to the darray.\ Examples: darray(int) arr; int *i; darray_appends(arr, 0,1,2,3,4); darray_appends(arr, -5,-4,-3,-2,-1); darray_foreach(i, arr) printf("%d ", *i); printf("\n"); darray_free(arr); typedef struct {int n,d;} Fraction; darray(Fraction) fractions; Fraction *i; darray_appends(fractions, {3,4}, {3,5}, {2,1}); darray_foreach(i, fractions) printf("%d/%d\n", i->n, i->d); darray_free(fractions); */ hkl-5.1.7/hkl/ccan/generator/0000775000175000017500000000000015144640565014746 5ustar00piccapiccahkl-5.1.7/hkl/ccan/generator/generator.h0000664000175000017500000001443515133706174017111 0ustar00piccapicca/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #ifndef CCAN_GENERATOR_H #define CCAN_GENERATOR_H #include #if !HAVE_TYPEOF #error Generators require typeof #endif #if !HAVE_STATEMENT_EXPR #error Generators require statement expressions #endif #include #include #include #include #include #include #if !COROUTINE_AVAILABLE #error Generators require coroutines #endif /* * Internals - included just for the use of inlines and macros */ struct generator_ { struct coroutine_state gen; struct coroutine_state caller; bool complete; void *base; }; static inline struct generator_ *generator_state_(const void *ret) { return (struct generator_ *)ret - 1; } static inline void *generator_argp_(const void *ret) { return generator_state_(ret)->base; } struct generator_incomplete_; #define generator_rtype_(gen_) \ typeof((*(gen_))((struct generator_incomplete_ *)NULL)) void *generator_new_(void (*fn)(void *), size_t retsize); void generator_free_(void *ret, size_t retsize); /* * API */ /** * generator_t - type for an in-progress generator * @rtype: type of values the generator yield */ #define generator_t(rtype_) \ typeof(rtype_ (*)(struct generator_incomplete_ *)) /** * generator_declare - declare (but don't define) a generator function * @name: name for the generator * @rtype: return type for the generator * * Declares (as an extern) a generator function named @name, which * will yield return values of type @rtype. * * Example: * generator_declare(count_to_3, int); */ #define generator_declare(name_, rtype_, ...) \ generator_t(rtype_) name_(generator_parms_outer_(__VA_ARGS__)) /** * generator_def - define a generator function * @name: name for the generator * @rtype: return type for the generator * * Define a generator function named @name yielding return values of * type @rtype. The generator_def() line is followed immediately by a * block containing the generator's code. * * Example: * generator_def(count_to_3, int) * { * generator_yield(1); * generator_yield(2); * generator_yield(3); * } */ #define generator_parm_(t_, n_) t_ n_ #define generator_parms_(...) \ CPPMAGIC_2MAP(generator_parm_, __VA_ARGS__) #define generator_parms_inner_(...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (, generator_parms_(__VA_ARGS__))() #define generator_parms_outer_(...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (generator_parms_(__VA_ARGS__))(void) #define generator_argfield_(t_, n_) t_ n_; #define generator_argstruct_(...) \ struct { \ CPPMAGIC_JOIN(, CPPMAGIC_2MAP(generator_argfield_, \ __VA_ARGS__)) \ } #define generator_arg_unpack_(t_, n_) args->n_ #define generator_args_unpack_(...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (, CPPMAGIC_2MAP(generator_arg_unpack_, __VA_ARGS__))() #define generator_arg_pack_(t_, n_) args->n_ = n_ #define generator_args_pack_(...) \ CPPMAGIC_JOIN(;, CPPMAGIC_2MAP(generator_arg_pack_, __VA_ARGS__)) #define generator_def_(name_, rtype_, storage_, ...) \ static void name_##_generator_(rtype_ *ret_ \ generator_parms_inner_(__VA_ARGS__)); \ static void name_##_generator__(void *ret) \ { \ struct generator_ *gen; \ UNNEEDED generator_argstruct_(__VA_ARGS__) *args; \ gen = generator_state_(ret); \ args = generator_argp_(ret); \ name_##_generator_(ret generator_args_unpack_(__VA_ARGS__)); \ gen->complete = true; \ coroutine_jump(&gen->caller); \ assert(0); \ } \ storage_ generator_t(rtype_) \ name_(generator_parms_outer_(__VA_ARGS__)) \ { \ generator_t(rtype_) gen = generator_new_(name_##_generator__, \ sizeof(rtype_)); \ UNNEEDED generator_argstruct_(__VA_ARGS__) *args = \ generator_argp_(gen); \ generator_args_pack_(__VA_ARGS__); \ return gen; \ } \ static void name_##_generator_(rtype_ *ret_ \ generator_parms_inner_(__VA_ARGS__)) #define generator_def(name_, rtype_, ...) \ generator_def_(name_, rtype_, , __VA_ARGS__) /** * generator_def_static - define a private / local generator function * @name: name for the generator * @rtype: return type for the generator * * As generator_def, but the resulting generator function will be * local to this module. */ #define generator_def_static(name_, rtype_, ...) \ generator_def_(name_, rtype_, static, __VA_ARGS__) /** * generator_yield - yield (return) a value from a generator * @val: value to yield * * Invoke only from within a generator. Yield the given value to the * caller. This will stop execution of the generator code until the * caller next invokes generator_next(), at which point it will * continue from the generator_yield statement. */ #define generator_yield(val_) \ do { \ struct generator_ *gen_ = generator_state_(ret_); \ *(ret_) = (val_); \ coroutine_switch(&gen_->gen, &gen_->caller); \ } while (0) /** * generator_next - get next value from a generator * @gen: a generator state variable * * Returns a pointer to a (correctly typed) buffer containing the next * value yielded by @gen, or NULL if @gen is finished. The buffer * contents is only valid until the next time @gen is called or * manipulated. */ static inline void *generator_next_(void *ret_) { struct generator_ *gen = generator_state_(ret_); if (gen->complete) return NULL; coroutine_switch(&gen->caller, &gen->gen); return gen->complete ? NULL : ret_; } #define generator_next(gen_) \ ((generator_rtype_(gen_) *)generator_next_(gen_)) /** * generator_next_val - store next value from a generator * @val: a variable of type suitable to store the generator's return * type (lvalue) * @gen: a generator state variable * * Returns 'true' if @gen yielded a new value, false if @gen is * complete. If a new value was yielded, it is stored in @val. */ #define generator_next_val(val_, gen_) \ ({ \ generator_rtype_(gen_) *ret; \ ret = generator_next(gen_); \ if (ret) \ (val_) = *ret; \ !!ret; \ }) #define generator_free(gen_) \ generator_free_((generator_rtype_(gen_) *)(gen_), \ sizeof(generator_rtype_(gen_))) #endif /* CCAN_GENERATOR_H */ hkl-5.1.7/hkl/ccan/generator/generator.c0000664000175000017500000000241515133706364017100 0ustar00piccapicca/* Licensed LGPLv2.1+ - see LICENSE file for details */ #include #include #include #include #include #define DEFAULT_STATE_SIZE 16384 #define STATE_ALIGN ALIGNOF(struct generator_) static size_t generator_metasize(size_t retsize) { retsize = (retsize + STATE_ALIGN) & ~(STATE_ALIGN - 1); return sizeof(struct generator_) + retsize; } void *generator_new_(void (*fn)(void *), size_t retsize) { char *base; size_t size = DEFAULT_STATE_SIZE; size_t metasize = generator_metasize(retsize); struct coroutine_stack *stack; void *ret; struct generator_ *gen; base = malloc(size); if (!base) abort(); retsize = (retsize + STATE_ALIGN) & ~(STATE_ALIGN - 1); stack = coroutine_stack_init(base, size, metasize); gen = coroutine_stack_to_metadata(stack, metasize); ret = gen + 1; gen->base = base; gen->complete = false; coroutine_init(&gen->gen, fn, ret, stack); return ret; } void generator_free_(void *ret, size_t retsize) { struct generator_ *gen = generator_state_(ret); size_t metasize = generator_metasize(retsize); struct coroutine_stack *stack; stack = coroutine_stack_from_metadata(gen, metasize); coroutine_stack_release(stack, metasize); free(gen->base); } hkl-5.1.7/hkl/ccan/ptr_valid/0000775000175000017500000000000015144640565014744 5ustar00piccapiccahkl-5.1.7/hkl/ccan/ptr_valid/ptr_valid.h0000664000175000017500000001350015133706174017075 0ustar00piccapicca// Licensed under BSD-MIT: See LICENSE. #ifndef CCAN_PTR_VALID_H #define CCAN_PTR_VALID_H #include #include #include /** * ptr_valid_read - can I safely read from a pointer? * @p: the proposed pointer. * * This function verifies that the pointer @p is safe to dereference for * reading. It is very slow, particularly if the answer is "no". * * Sets errno to EFAULT on failure. * * See Also: * ptr_valid_batch_read() */ #define ptr_valid_read(p) \ ptr_valid_r((p), PTR_VALID_ALIGNOF(*(p)), sizeof(*(p))) /** * ptr_valid_write - can I safely write to a pointer? * @p: the proposed pointer. * * This function verifies that the pointer @p is safe to dereference * for writing (and reading). It is very slow, particularly if the * answer is "no". * * Sets errno to EFAULT on failure. * * See Also: * ptr_valid_batch_write() */ #define ptr_valid_write(p) \ ptr_valid_w((p), PTR_VALID_ALIGNOF(*(p)), sizeof(*(p))) /** * ptr_valid_string - can I safely read a string? * @p: the proposed string. * * This function verifies that the pointer @p is safe to dereference * up to a nul character. It is very slow, particularly if the answer * is "no". * * Sets errno to EFAULT on failure. * * See Also: * ptr_valid_batch_string() */ bool ptr_valid_string(const char *p); /** * ptr_valid - generic pointer check function * @p: the proposed pointer. * @align: the alignment requirements of the pointer. * @size: the size of the region @p should point to * @write: true if @p should be writable as well as readable. * * This function verifies that the pointer @p is safe to dereference. * It is very slow, particularly if the answer is "no". * * Sets errno to EFAULT on failure. * * See Also: * ptr_valid_batch() */ bool ptr_valid(const void *p, size_t align, size_t size, bool write); /** * struct ptr_valid_batch - pointer to store state for batch ptr ops * * Treat as private. */ struct ptr_valid_batch { unsigned int num_maps; struct ptr_valid_map *maps; int child_pid; int to_child, from_child; void *last; bool last_ok; }; /** * ptr_valid_batch_start - prepare for a batch of ptr_valid checks. * @batch: an uninitialized ptr_valid_batch structure. * * This initializes @batch; this same @batch pointer can be reused * until the memory map changes (eg. via mmap(), munmap() or even * malloc() and free()). * * This is useful to check many pointers, because otherwise it can be * extremely slow. * * Example: * struct linked { * struct linked *next; * const char *str; * }; * * static bool check_linked_carefully(struct linked *head) * { * struct ptr_valid_batch batch; * struct linked *old = head; * bool half = true; * * // If this fails, we can't check. Assume OK. * if (!ptr_valid_batch_start(&batch)) * return true; * * while (head) { * if (!ptr_valid_batch_read(&batch, head)) * goto fail; * if (!ptr_valid_batch_string(&batch, head->str)) * goto fail; * // Loop detection; move old at half speed of head. * if (half) * old = old->next; * half = !half; * if (head == old) { * errno = ELOOP; * goto fail; * } * } * ptr_valid_batch_end(&batch); * return true; * * fail: * ptr_valid_batch_end(&batch); * return false; * } * * See Also: * ptr_valid_batch_stop() */ bool ptr_valid_batch_start(struct ptr_valid_batch *batch); /** * ptr_valid_batch_read - can I safely read from a pointer? * @batch: the batch initialized by ptr_valid_batch_start(). * @p: the proposed pointer. * * Batched version of ptr_valid_read(). */ #define ptr_valid_batch_read(batch, p) \ ptr_valid_batch_r((batch), \ (p), PTR_VALID_ALIGNOF(*(p)), sizeof(*(p))) /** * ptr_valid_batch_write - can I safely write to a pointer? * @batch: the batch initialized by ptr_valid_batch_start(). * @p: the proposed pointer. * * Batched version of ptr_valid_write(). */ #define ptr_valid_batch_write(batch, p) \ ptr_valid_batch_w((batch), \ (p), PTR_VALID_ALIGNOF(*(p)), sizeof(*(p))) /** * ptr_valid_batch_string - can I safely read a string? * @batch: the batch initialized by ptr_valid_batch_start(). * @p: the proposed string. * * Batched version of ptr_valid_string(). */ bool ptr_valid_batch_string(struct ptr_valid_batch *batch, const char *p); /** * ptr_valid_batch - generic batched pointer check function * @batch: the batch initialized by ptr_valid_batch_start(). * @p: the proposed pointer. * @align: the alignment requirements of the pointer. * @size: the size of the region @p should point to * @write: true if @p should be writable as well as readable. * * Batched version of ptr_valid(). */ bool ptr_valid_batch(struct ptr_valid_batch *batch, const void *p, size_t alignment, size_t size, bool write); /** * ptr_valid_batch_end - end a batch of ptr_valid checks. * @batch: a ptr_valid_batch structure. * * This is used after all checks are complete. * * See Also: * ptr_valid_batch_start() */ void ptr_valid_batch_end(struct ptr_valid_batch *batch); /* These wrappers get constness correct. */ static inline bool ptr_valid_r(const void *p, size_t align, size_t size) { return ptr_valid(p, align, size, false); } static inline bool ptr_valid_w(void *p, size_t align, size_t size) { return ptr_valid(p, align, size, true); } static inline bool ptr_valid_batch_r(struct ptr_valid_batch *batch, const void *p, size_t align, size_t size) { return ptr_valid_batch(batch, p, align, size, false); } static inline bool ptr_valid_batch_w(struct ptr_valid_batch *batch, void *p, size_t align, size_t size) { return ptr_valid_batch(batch, p, align, size, true); } struct ptr_valid_map { const char *start, *end; bool is_write; }; #if HAVE_ALIGNOF #define PTR_VALID_ALIGNOF(var) __alignof__(var) #else /* Can't check this... */ #define PTR_VALID_ALIGNOF(var) 1 #endif #endif /* CCAN_PTR_VALID_H */ hkl-5.1.7/hkl/ccan/ptr_valid/ptr_valid.c0000664000175000017500000001537015133706174017077 0ustar00piccapicca// Licensed under BSD-MIT: See LICENSE. #include "ptr_valid.h" #include #include #include #include #include #include #include #include #include #if HAVE_PROC_SELF_MAPS static char *grab(const char *filename) { int ret, fd; size_t max = 16384, s = 0; char *buffer; fd = open(filename, O_RDONLY); if (fd < 0) return NULL; buffer = malloc(max+1); if (!buffer) goto close; while ((ret = read(fd, buffer + s, max - s)) > 0) { s += ret; if (s == max) { buffer = realloc(buffer, max*2+1); if (!buffer) goto close; max *= 2; } } if (ret < 0) goto free; close(fd); buffer[s] = '\0'; return buffer; free: free(buffer); close: close_noerr(fd); return NULL; } static char *skip_line(char *p) { char *nl = strchr(p, '\n'); if (!nl) return NULL; return nl + 1; } static struct ptr_valid_map *add_map(struct ptr_valid_map *map, unsigned int *num, unsigned int *max, unsigned long start, unsigned long end, bool is_write) { if (*num == *max) { *max *= 2; map = realloc(map, sizeof(*map) * *max); if (!map) return NULL; } map[*num].start = (void *)start; map[*num].end = (void *)end; map[*num].is_write = is_write; (*num)++; return map; } static struct ptr_valid_map *get_proc_maps(unsigned int *num) { char *buf, *p; struct ptr_valid_map *map; unsigned int max = 16; buf = grab("/proc/self/maps"); if (!buf) { *num = 0; return NULL; } map = malloc(sizeof(*map) * max); if (!map) goto free_buf; *num = 0; for (p = buf; p && *p; p = skip_line(p)) { unsigned long start, end; char *endp; /* Expect '- rw... */ start = strtoul(p, &endp, 16); if (*endp != '-') goto malformed; end = strtoul(endp+1, &endp, 16); if (*endp != ' ') goto malformed; endp++; if (endp[0] != 'r' && endp[0] != '-') goto malformed; if (endp[1] != 'w' && endp[1] != '-') goto malformed; /* We only add readable mappings. */ if (endp[0] == 'r') { map = add_map(map, num, &max, start, end, endp[1] == 'w'); if (!map) goto free_buf; } } free(buf); return map; malformed: free(map); free_buf: free(buf); *num = 0; return NULL; } #else static struct ptr_valid_map *get_proc_maps(unsigned int *num) { *num = 0; return NULL; } #endif static bool check_with_maps(struct ptr_valid_batch *batch, const char *p, size_t size, bool is_write) { unsigned int i; for (i = 0; i < batch->num_maps; i++) { if (p >= batch->maps[i].start && p < batch->maps[i].end) { /* Overlap into other maps? Recurse with remainder. */ if (p + size > batch->maps[i].end) { size_t len = p + size - batch->maps[i].end; if (!check_with_maps(batch, batch->maps[i].end, len, is_write)) return false; } return !is_write || batch->maps[i].is_write; } } return false; } static void finish_child(struct ptr_valid_batch *batch) { close(batch->to_child); close(batch->from_child); while (waitpid(batch->child_pid, NULL, 0) < 0 && errno == EINTR); batch->child_pid = 0; } static bool child_alive(struct ptr_valid_batch *batch) { return batch->child_pid != 0; } static void run_child(int infd, int outfd) { volatile char *p; /* This is how we expect to exit. */ while (read(infd, &p, sizeof(p)) == sizeof(p)) { size_t i, size; bool is_write; char ret = 0; /* This is weird. */ if (read(infd, &size, sizeof(size)) != sizeof(size)) exit(1); if (read(infd, &is_write, sizeof(is_write)) != sizeof(is_write)) exit(2); for (i = 0; i < size; i++) { ret = p[i]; if (is_write) p[i] = ret; } /* If we're still here, the answer is "yes". */ if (write(outfd, &ret, 1) != 1) exit(3); } exit(0); } static bool create_child(struct ptr_valid_batch *batch) { int outpipe[2], inpipe[2]; if (pipe(outpipe) != 0) return false; if (pipe(inpipe) != 0) goto close_outpipe; fflush(stdout); batch->child_pid = fork(); if (batch->child_pid == 0) { close(outpipe[1]); close(inpipe[0]); run_child(outpipe[0], inpipe[1]); } if (batch->child_pid == -1) goto cleanup_pid; close(outpipe[0]); close(inpipe[1]); batch->to_child = outpipe[1]; batch->from_child = inpipe[0]; return true; cleanup_pid: batch->child_pid = 0; close_noerr(inpipe[0]); close_noerr(inpipe[1]); close_outpipe: close_noerr(outpipe[0]); close_noerr(outpipe[1]); return false; } static bool check_with_child(struct ptr_valid_batch *batch, const void *p, size_t size, bool is_write) { char ret; if (!child_alive(batch)) { if (!create_child(batch)) return false; } if (write(batch->to_child, &p, sizeof(p)) + write(batch->to_child, &size, sizeof(size)) + write(batch->to_child, &is_write, sizeof(is_write)) != sizeof(p) + sizeof(size) + sizeof(is_write)) { finish_child(batch); errno = EFAULT; return false; } if (read(batch->from_child, &ret, sizeof(ret)) != sizeof(ret)) { finish_child(batch); errno = EFAULT; return false; } return true; } /* msync seems most well-defined test, but page could be mapped with * no permissions, and can't distiguish readonly from writable. */ bool ptr_valid_batch(struct ptr_valid_batch *batch, const void *p, size_t alignment, size_t size, bool write) { char *start, *end; bool ret; if ((intptr_t)p & (alignment - 1)) return false; start = (void *)((intptr_t)p & ~(getpagesize() - 1)); end = (void *)(((intptr_t)p + size - 1) & ~(getpagesize() - 1)); /* We cache single page hits. */ if (start == end) { if (batch->last && batch->last == start) return batch->last_ok; } if (batch->num_maps) ret = check_with_maps(batch, p, size, write); else ret = check_with_child(batch, p, size, write); if (start == end) { batch->last = start; batch->last_ok = ret; } return ret; } bool ptr_valid_batch_string(struct ptr_valid_batch *batch, const char *p) { while (ptr_valid_batch(batch, p, 1, 1, false)) { if (*p == '\0') return true; p++; } return false; } bool ptr_valid(const void *p, size_t alignment, size_t size, bool write) { bool ret; struct ptr_valid_batch batch; if (!ptr_valid_batch_start(&batch)) return false; ret = ptr_valid_batch(&batch, p, alignment, size, write); ptr_valid_batch_end(&batch); return ret; } bool ptr_valid_string(const char *p) { bool ret; struct ptr_valid_batch batch; if (!ptr_valid_batch_start(&batch)) return false; ret = ptr_valid_batch_string(&batch, p); ptr_valid_batch_end(&batch); return ret; } bool ptr_valid_batch_start(struct ptr_valid_batch *batch) { batch->child_pid = 0; batch->maps = get_proc_maps(&batch->num_maps); batch->last = NULL; return true; } void ptr_valid_batch_end(struct ptr_valid_batch *batch) { if (child_alive(batch)) finish_child(batch); free(batch->maps); } hkl-5.1.7/hkl/ccan/cppmagic/0000775000175000017500000000000015144640565014543 5ustar00piccapiccahkl-5.1.7/hkl/ccan/cppmagic/cppmagic.h0000664000175000017500000001274715133706174016507 0ustar00piccapicca/* MIT (BSD) license - see LICENSE file for details */ #ifndef CCAN_CPPMAGIC_H #define CCAN_CPPMAGIC_H /** * CPPMAGIC_NOTHING - expands to nothing */ #define CPPMAGIC_NOTHING() /** * CPPMAGIC_STRINGIFY - convert arguments to a string literal */ #define _CPPMAGIC_STRINGIFY(...) #__VA_ARGS__ #define CPPMAGIC_STRINGIFY(...) _CPPMAGIC_STRINGIFY(__VA_ARGS__) /** * CPPMAGIC_GLUE2 - glue arguments together * * CPPMAGIC_GLUE2(@a_, @b_) * expands to the expansion of @a_ followed immediately * (combining tokens) by the expansion of @b_ */ #define _CPPMAGIC_GLUE2(a_, b_) a_##b_ #define CPPMAGIC_GLUE2(a_, b_) _CPPMAGIC_GLUE2(a_, b_) /** * CPPMAGIC_1ST - return 1st argument * * CPPMAGIC_1ST(@a_, ...) * expands to the expansion of @a_ */ #define CPPMAGIC_1ST(a_, ...) a_ /** * CPPMAGIC_2ND - return 2nd argument * * CPPMAGIC_2ST(@a_, @b_, ...) * expands to the expansion of @b_ */ #define CPPMAGIC_2ND(a_, b_, ...) b_ /** * CPPMAGIC_ISZERO - is argument '0' * * CPPMAGIC_ISZERO(@a) * expands to '1' if @a is '0', otherwise expands to '0'. */ #define _CPPMAGIC_ISPROBE(...) CPPMAGIC_2ND(__VA_ARGS__, 0) #define _CPPMAGIC_PROBE() $, 1 #define _CPPMAGIC_ISZERO_0 _CPPMAGIC_PROBE() #define CPPMAGIC_ISZERO(a_) \ _CPPMAGIC_ISPROBE(CPPMAGIC_GLUE2(_CPPMAGIC_ISZERO_, a_)) /** * CPPMAGIC_NONZERO - is argument not '0' * * CPPMAGIC_NONZERO(@a) * expands to '0' if @a is '0', otherwise expands to '1'. */ #define CPPMAGIC_NONZERO(a_) CPPMAGIC_ISZERO(CPPMAGIC_ISZERO(a_)) /** * CPPMAGIC_NONEMPTY - does the macro have any arguments? * * CPPMAGIC_NONEMPTY() * expands to '0' * CPPMAGIC_NONEMPTY(@a) * CPPMAGIC_NONEMPTY(@a, ...) * expand to '1' */ #define _CPPMAGIC_EOA() 0 #define CPPMAGIC_NONEMPTY(...) \ CPPMAGIC_NONZERO(CPPMAGIC_1ST(_CPPMAGIC_EOA __VA_ARGS__)()) /** * CPPMAGIC_ISEMPTY - does the macro have no arguments? * * CPPMAGIC_ISEMPTY() * expands to '1' * CPPMAGIC_ISEMPTY(@a) * CPPMAGIC_ISEMPTY(@a, ...) * expand to '0' */ #define CPPMAGIC_ISEMPTY(...) \ CPPMAGIC_ISZERO(CPPMAGIC_NONEMPTY(__VA_ARGS__)) /* * CPPMAGIC_IFELSE - preprocessor conditional * * CPPMAGIC_IFELSE(@cond)(@if)(@else) * expands to @else if @cond is '0', otherwise expands to @if */ #define _CPPMAGIC_IF_0(...) _CPPMAGIC_IF_0_ELSE #define _CPPMAGIC_IF_1(...) __VA_ARGS__ _CPPMAGIC_IF_1_ELSE #define _CPPMAGIC_IF_0_ELSE(...) __VA_ARGS__ #define _CPPMAGIC_IF_1_ELSE(...) #define _CPPMAGIC_IFELSE(cond_) CPPMAGIC_GLUE2(_CPPMAGIC_IF_, cond_) #define CPPMAGIC_IFELSE(cond_) \ _CPPMAGIC_IFELSE(CPPMAGIC_NONZERO(cond_)) /** * CPPMAGIC_EVAL - force multiple expansion passes * * Forces macros in the arguments to be expanded repeatedly (up to * 1024 times) even when CPP would usually stop expanding. */ #define CPPMAGIC_EVAL1(...) __VA_ARGS__ #define CPPMAGIC_EVAL2(...) \ CPPMAGIC_EVAL1(CPPMAGIC_EVAL1(__VA_ARGS__)) #define CPPMAGIC_EVAL4(...) \ CPPMAGIC_EVAL2(CPPMAGIC_EVAL2(__VA_ARGS__)) #define CPPMAGIC_EVAL8(...) \ CPPMAGIC_EVAL4(CPPMAGIC_EVAL4(__VA_ARGS__)) #define CPPMAGIC_EVAL16(...) \ CPPMAGIC_EVAL8(CPPMAGIC_EVAL8(__VA_ARGS__)) #define CPPMAGIC_EVAL32(...) \ CPPMAGIC_EVAL16(CPPMAGIC_EVAL16(__VA_ARGS__)) #define CPPMAGIC_EVAL64(...) \ CPPMAGIC_EVAL32(CPPMAGIC_EVAL32(__VA_ARGS__)) #define CPPMAGIC_EVAL128(...) \ CPPMAGIC_EVAL64(CPPMAGIC_EVAL64(__VA_ARGS__)) #define CPPMAGIC_EVAL256(...) \ CPPMAGIC_EVAL128(CPPMAGIC_EVAL128(__VA_ARGS__)) #define CPPMAGIC_EVAL512(...) \ CPPMAGIC_EVAL256(CPPMAGIC_EVAL256(__VA_ARGS__)) #define CPPMAGIC_EVAL1024(...) \ CPPMAGIC_EVAL512(CPPMAGIC_EVAL512(__VA_ARGS__)) #define CPPMAGIC_EVAL(...) CPPMAGIC_EVAL1024(__VA_ARGS__) /** * CPPMAGIC_DEFER1, CPPMAGIC_DEFER2 - defer expansion */ #define CPPMAGIC_DEFER1(a_) a_ CPPMAGIC_NOTHING() #define CPPMAGIC_DEFER2(a_) a_ CPPMAGIC_NOTHING CPPMAGIC_NOTHING()() /** * CPPMAGIC_MAP - iterate another macro across arguments * @m: name of a one argument macro * * CPPMAGIC_MAP(@m, @a1, @a2, ... @an) * expands to the expansion of @m(@a1) , @m(@a2) , ... , @m(@an) */ #define _CPPMAGIC_MAP_() _CPPMAGIC_MAP #define _CPPMAGIC_MAP(m_, a_, ...) \ m_(a_) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (, CPPMAGIC_DEFER2(_CPPMAGIC_MAP_)()(m_, __VA_ARGS__)) \ () #define CPPMAGIC_MAP(m_, ...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (CPPMAGIC_EVAL(_CPPMAGIC_MAP(m_, __VA_ARGS__))) \ () /** * CPPMAGIC_2MAP - iterate another macro across pairs of arguments * @m: name of a two argument macro * * CPPMAGIC_2MAP(@m, @a1, @b1, @a2, @b2, ..., @an, @bn) * expands to the expansion of * @m(@a1, @b1) , @m(@a2, @b2) , ... , @m(@an, @bn) */ #define _CPPMAGIC_2MAP_() _CPPMAGIC_2MAP #define _CPPMAGIC_2MAP(m_, a_, b_, ...) \ m_(a_, b_) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (, CPPMAGIC_DEFER2(_CPPMAGIC_2MAP_)()(m_, __VA_ARGS__)) \ () #define CPPMAGIC_2MAP(m_, ...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (CPPMAGIC_EVAL(_CPPMAGIC_2MAP(m_, __VA_ARGS__))) \ () /** * CPPMAGIC_JOIN - separate arguments with given delimiter * @d: delimiter * * CPPMAGIC_JOIN(@d, @a1, @a2, ..., @an) * expands to the expansion of @a1 @d @a2 @d ... @d @an */ #define _CPPMAGIC_JOIN_() _CPPMAGIC_JOIN #define _CPPMAGIC_JOIN(d_, a_, ...) \ a_ \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (d_ CPPMAGIC_DEFER2(_CPPMAGIC_JOIN_)()(d_, __VA_ARGS__)) \ () #define CPPMAGIC_JOIN(d_, ...) \ CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ (CPPMAGIC_EVAL(_CPPMAGIC_JOIN(d_, __VA_ARGS__))) \ () #endif /* CCAN_CPPMAGIC_H */ hkl-5.1.7/hkl/ccan/Makefile.in0000664000175000017500000007366215144640451015035 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = configurator$(EXEEXT) subdir = hkl/ccan ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(nobase_ccaninclude_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) LTLIBRARIES = $(noinst_LTLIBRARIES) libccan_la_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp am_libccan_la_OBJECTS = autodata/autodata.lo coroutine/coroutine.lo \ generator/generator.lo list/list.lo noerr/noerr.lo \ ptr_valid/ptr_valid.lo str/debug.lo str/str.lo libccan_la_OBJECTS = $(am_libccan_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = configurator_SOURCES = configurator.c configurator_OBJECTS = configurator.$(OBJEXT) configurator_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/configurator.Po \ autodata/$(DEPDIR)/autodata.Plo \ coroutine/$(DEPDIR)/coroutine.Plo \ generator/$(DEPDIR)/generator.Plo list/$(DEPDIR)/list.Plo \ noerr/$(DEPDIR)/noerr.Plo ptr_valid/$(DEPDIR)/ptr_valid.Plo \ str/$(DEPDIR)/debug.Plo str/$(DEPDIR)/str.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libccan_la_SOURCES) configurator.c DIST_SOURCES = $(libccan_la_SOURCES) configurator.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(ccanincludedir)" \ "$(DESTDIR)$(ccanincludedir)" HEADERS = $(nobase_ccaninclude_HEADERS) $(nodist_ccaninclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = -I$(top_srcdir) BUILT_SOURCES = ccan_config.h noinst_LTLIBRARIES = libccan.la libccan_la_SOURCES = \ ccan_config.h \ alignof/alignof.h \ array_size/array_size.h \ autodata/autodata.c \ autodata/autodata.h \ build_assert/build_assert.h \ check_type/check_type.h \ compiler/compiler.h \ container_of/container_of.h \ coroutine/coroutine.c \ coroutine/coroutine.h \ cppmagic/cppmagic.h \ darray/darray.h \ generator/generator.c \ generator/generator.h \ list/list.c \ list/list.h \ noerr/noerr.c \ noerr/noerr.h \ ptrint/ptrint.h \ ptr_valid/ptr_valid.c \ ptr_valid/ptr_valid.h \ str/debug.c \ str/str.c \ str/str_debug.h \ str/str.h \ typesafe_cb/typesafe_cb.h ccanincludedir = $(includedir)/hkl-@VMAJ@/hkl/ccan nobase_ccaninclude_HEADERS = \ darray/darray.h nodist_ccaninclude_HEADERS = ccan_config.h EXTRA_DIST = configurator.c CLEANFILES = configurator ccan_config.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hkl/ccan/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu hkl/ccan/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: $(am__rm_f) $(noinst_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} autodata/$(am__dirstamp): @$(MKDIR_P) autodata @: >>autodata/$(am__dirstamp) autodata/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) autodata/$(DEPDIR) @: >>autodata/$(DEPDIR)/$(am__dirstamp) autodata/autodata.lo: autodata/$(am__dirstamp) \ autodata/$(DEPDIR)/$(am__dirstamp) coroutine/$(am__dirstamp): @$(MKDIR_P) coroutine @: >>coroutine/$(am__dirstamp) coroutine/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) coroutine/$(DEPDIR) @: >>coroutine/$(DEPDIR)/$(am__dirstamp) coroutine/coroutine.lo: coroutine/$(am__dirstamp) \ coroutine/$(DEPDIR)/$(am__dirstamp) generator/$(am__dirstamp): @$(MKDIR_P) generator @: >>generator/$(am__dirstamp) generator/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) generator/$(DEPDIR) @: >>generator/$(DEPDIR)/$(am__dirstamp) generator/generator.lo: generator/$(am__dirstamp) \ generator/$(DEPDIR)/$(am__dirstamp) list/$(am__dirstamp): @$(MKDIR_P) list @: >>list/$(am__dirstamp) list/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) list/$(DEPDIR) @: >>list/$(DEPDIR)/$(am__dirstamp) list/list.lo: list/$(am__dirstamp) list/$(DEPDIR)/$(am__dirstamp) noerr/$(am__dirstamp): @$(MKDIR_P) noerr @: >>noerr/$(am__dirstamp) noerr/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) noerr/$(DEPDIR) @: >>noerr/$(DEPDIR)/$(am__dirstamp) noerr/noerr.lo: noerr/$(am__dirstamp) noerr/$(DEPDIR)/$(am__dirstamp) ptr_valid/$(am__dirstamp): @$(MKDIR_P) ptr_valid @: >>ptr_valid/$(am__dirstamp) ptr_valid/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ptr_valid/$(DEPDIR) @: >>ptr_valid/$(DEPDIR)/$(am__dirstamp) ptr_valid/ptr_valid.lo: ptr_valid/$(am__dirstamp) \ ptr_valid/$(DEPDIR)/$(am__dirstamp) str/$(am__dirstamp): @$(MKDIR_P) str @: >>str/$(am__dirstamp) str/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) str/$(DEPDIR) @: >>str/$(DEPDIR)/$(am__dirstamp) str/debug.lo: str/$(am__dirstamp) str/$(DEPDIR)/$(am__dirstamp) str/str.lo: str/$(am__dirstamp) str/$(DEPDIR)/$(am__dirstamp) libccan.la: $(libccan_la_OBJECTS) $(libccan_la_DEPENDENCIES) $(EXTRA_libccan_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libccan_la_OBJECTS) $(libccan_la_LIBADD) $(LIBS) configurator$(EXEEXT): $(configurator_OBJECTS) $(configurator_DEPENDENCIES) $(EXTRA_configurator_DEPENDENCIES) @rm -f configurator$(EXEEXT) $(AM_V_CCLD)$(LINK) $(configurator_OBJECTS) $(configurator_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f autodata/*.$(OBJEXT) -rm -f autodata/*.lo -rm -f coroutine/*.$(OBJEXT) -rm -f coroutine/*.lo -rm -f generator/*.$(OBJEXT) -rm -f generator/*.lo -rm -f list/*.$(OBJEXT) -rm -f list/*.lo -rm -f noerr/*.$(OBJEXT) -rm -f noerr/*.lo -rm -f ptr_valid/*.$(OBJEXT) -rm -f ptr_valid/*.lo -rm -f str/*.$(OBJEXT) -rm -f str/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configurator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@autodata/$(DEPDIR)/autodata.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@coroutine/$(DEPDIR)/coroutine.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@generator/$(DEPDIR)/generator.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@list/$(DEPDIR)/list.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@noerr/$(DEPDIR)/noerr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@ptr_valid/$(DEPDIR)/ptr_valid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/debug.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/str.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf autodata/.libs autodata/_libs -rm -rf coroutine/.libs coroutine/_libs -rm -rf generator/.libs generator/_libs -rm -rf list/.libs list/_libs -rm -rf noerr/.libs noerr/_libs -rm -rf ptr_valid/.libs ptr_valid/_libs -rm -rf str/.libs str/_libs install-nobase_ccanincludeHEADERS: $(nobase_ccaninclude_HEADERS) @$(NORMAL_INSTALL) @list='$(nobase_ccaninclude_HEADERS)'; test -n "$(ccanincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ccanincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ccanincludedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(ccanincludedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(ccanincludedir)/$$dir"; }; \ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(ccanincludedir)/$$dir'"; \ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(ccanincludedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_ccanincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nobase_ccaninclude_HEADERS)'; test -n "$(ccanincludedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(ccanincludedir)'; $(am__uninstall_files_from_dir) install-nodist_ccanincludeHEADERS: $(nodist_ccaninclude_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_ccaninclude_HEADERS)'; test -n "$(ccanincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ccanincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ccanincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(ccanincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(ccanincludedir)" || exit $$?; \ done uninstall-nodist_ccanincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_ccaninclude_HEADERS)'; test -n "$(ccanincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(ccanincludedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(ccanincludedir)" "$(DESTDIR)$(ccanincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) -$(am__rm_f) autodata/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) autodata/$(am__dirstamp) -$(am__rm_f) coroutine/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) coroutine/$(am__dirstamp) -$(am__rm_f) generator/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) generator/$(am__dirstamp) -$(am__rm_f) list/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) list/$(am__dirstamp) -$(am__rm_f) noerr/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) noerr/$(am__dirstamp) -$(am__rm_f) ptr_valid/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) ptr_valid/$(am__dirstamp) -$(am__rm_f) str/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) str/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -$(am__rm_f) $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/configurator.Po -rm -f autodata/$(DEPDIR)/autodata.Plo -rm -f coroutine/$(DEPDIR)/coroutine.Plo -rm -f generator/$(DEPDIR)/generator.Plo -rm -f list/$(DEPDIR)/list.Plo -rm -f noerr/$(DEPDIR)/noerr.Plo -rm -f ptr_valid/$(DEPDIR)/ptr_valid.Plo -rm -f str/$(DEPDIR)/debug.Plo -rm -f str/$(DEPDIR)/str.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-nobase_ccanincludeHEADERS \ install-nodist_ccanincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/configurator.Po -rm -f autodata/$(DEPDIR)/autodata.Plo -rm -f coroutine/$(DEPDIR)/coroutine.Plo -rm -f generator/$(DEPDIR)/generator.Plo -rm -f list/$(DEPDIR)/list.Plo -rm -f noerr/$(DEPDIR)/noerr.Plo -rm -f ptr_valid/$(DEPDIR)/ptr_valid.Plo -rm -f str/$(DEPDIR)/debug.Plo -rm -f str/$(DEPDIR)/str.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-nobase_ccanincludeHEADERS \ uninstall-nodist_ccanincludeHEADERS .MAKE: all check install install-am install-exec install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-nobase_ccanincludeHEADERS \ install-nodist_ccanincludeHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-nobase_ccanincludeHEADERS \ uninstall-nodist_ccanincludeHEADERS .PRECIOUS: Makefile ccan_config.h: configurator $(builddir)/configurator $(CC) $(CCAN_CFLAGS) > $@.tmp && mv $@.tmp $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/hkl/ccan/typesafe_cb/0000775000175000017500000000000015144640565015244 5ustar00piccapiccahkl-5.1.7/hkl/ccan/typesafe_cb/typesafe_cb.h0000664000175000017500000001165115133706174017702 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_TYPESAFE_CB_H #define CCAN_TYPESAFE_CB_H #include #if HAVE_TYPEOF && HAVE_BUILTIN_CHOOSE_EXPR && HAVE_BUILTIN_TYPES_COMPATIBLE_P /** * typesafe_cb_cast - only cast an expression if it matches a given type * @desttype: the type to cast to * @oktype: the type we allow * @expr: the expression to cast * * This macro is used to create functions which allow multiple types. * The result of this macro is used somewhere that a @desttype type is * expected: if @expr is exactly of type @oktype, then it will be * cast to @desttype type, otherwise left alone. * * This macro can be used in static initializers. * * This is merely useful for warnings: if the compiler does not * support the primitives required for typesafe_cb_cast(), it becomes an * unconditional cast, and the @oktype argument is not used. In * particular, this means that @oktype can be a type which uses the * "typeof": it will not be evaluated if typeof is not supported. * * Example: * // We can take either an unsigned long or a void *. * void _set_some_value(void *val); * #define set_some_value(e) \ * _set_some_value(typesafe_cb_cast(void *, unsigned long, (e))) */ #define typesafe_cb_cast(desttype, oktype, expr) \ __builtin_choose_expr( \ __builtin_types_compatible_p(__typeof__(0?(expr):(expr)), \ oktype), \ (desttype)(expr), (expr)) #else #define typesafe_cb_cast(desttype, oktype, expr) ((desttype)(expr)) #endif /** * typesafe_cb_cast3 - only cast an expression if it matches given types * @desttype: the type to cast to * @ok1: the first type we allow * @ok2: the second type we allow * @ok3: the third type we allow * @expr: the expression to cast * * This is a convenient wrapper for multiple typesafe_cb_cast() calls. * You can chain them inside each other (ie. use typesafe_cb_cast() * for expr) if you need more than 3 arguments. * * Example: * // We can take either a long, unsigned long, void * or a const void *. * void _set_some_value(void *val); * #define set_some_value(expr) \ * _set_some_value(typesafe_cb_cast3(void *,, \ * long, unsigned long, const void *,\ * (expr))) */ #define typesafe_cb_cast3(desttype, ok1, ok2, ok3, expr) \ typesafe_cb_cast(desttype, ok1, \ typesafe_cb_cast(desttype, ok2, \ typesafe_cb_cast(desttype, ok3, \ (expr)))) /** * typesafe_cb - cast a callback function if it matches the arg * @rtype: the return type of the callback function * @atype: the (pointer) type which the callback function expects. * @fn: the callback function to cast * @arg: the (pointer) argument to hand to the callback function. * * If a callback function takes a single argument, this macro does * appropriate casts to a function which takes a single atype argument if the * callback provided matches the @arg. * * It is assumed that @arg is of pointer type: usually @arg is passed * or assigned to a void * elsewhere anyway. * * Example: * void _register_callback(void (*fn)(void *arg), void *arg); * #define register_callback(fn, arg) \ * _register_callback(typesafe_cb(void, (fn), void*, (arg)), (arg)) */ #define typesafe_cb(rtype, atype, fn, arg) \ typesafe_cb_cast(rtype (*)(atype), \ rtype (*)(__typeof__(arg)), \ (fn)) /** * typesafe_cb_preargs - cast a callback function if it matches the arg * @rtype: the return type of the callback function * @atype: the (pointer) type which the callback function expects. * @fn: the callback function to cast * @arg: the (pointer) argument to hand to the callback function. * * This is a version of typesafe_cb() for callbacks that take other arguments * before the @arg. * * Example: * void _register_callback(void (*fn)(int, void *arg), void *arg); * #define register_callback(fn, arg) \ * _register_callback(typesafe_cb_preargs(void, void *, \ * (fn), (arg), int), \ * (arg)) */ #define typesafe_cb_preargs(rtype, atype, fn, arg, ...) \ typesafe_cb_cast(rtype (*)(__VA_ARGS__, atype), \ rtype (*)(__VA_ARGS__, __typeof__(arg)), \ (fn)) /** * typesafe_cb_postargs - cast a callback function if it matches the arg * @rtype: the return type of the callback function * @atype: the (pointer) type which the callback function expects. * @fn: the callback function to cast * @arg: the (pointer) argument to hand to the callback function. * * This is a version of typesafe_cb() for callbacks that take other arguments * after the @arg. * * Example: * void _register_callback(void (*fn)(void *arg, int), void *arg); * #define register_callback(fn, arg) \ * _register_callback(typesafe_cb_postargs(void, (fn), void *, \ * (arg), int), \ * (arg)) */ #define typesafe_cb_postargs(rtype, atype, fn, arg, ...) \ typesafe_cb_cast(rtype (*)(atype, __VA_ARGS__), \ rtype (*)(__typeof__(arg), __VA_ARGS__), \ (fn)) #endif /* CCAN_CAST_IF_TYPE_H */ hkl-5.1.7/hkl/ccan/Makefile.am0000664000175000017500000000200015133706232014774 0ustar00piccapiccaAM_CFLAGS=-I$(top_srcdir) noinst_PROGRAMS=configurator BUILT_SOURCES=ccan_config.h ccan_config.h: configurator $(builddir)/configurator $(CC) $(CCAN_CFLAGS) > $@.tmp && mv $@.tmp $@ noinst_LTLIBRARIES=libccan.la libccan_la_SOURCES = \ ccan_config.h \ alignof/alignof.h \ array_size/array_size.h \ autodata/autodata.c \ autodata/autodata.h \ build_assert/build_assert.h \ check_type/check_type.h \ compiler/compiler.h \ container_of/container_of.h \ coroutine/coroutine.c \ coroutine/coroutine.h \ cppmagic/cppmagic.h \ darray/darray.h \ generator/generator.c \ generator/generator.h \ list/list.c \ list/list.h \ noerr/noerr.c \ noerr/noerr.h \ ptrint/ptrint.h \ ptr_valid/ptr_valid.c \ ptr_valid/ptr_valid.h \ str/debug.c \ str/str.c \ str/str_debug.h \ str/str.h \ typesafe_cb/typesafe_cb.h ccanincludedir=$(includedir)/hkl-@VMAJ@/hkl/ccan nobase_ccaninclude_HEADERS= \ darray/darray.h nodist_ccaninclude_HEADERS=ccan_config.h EXTRA_DIST=configurator.c CLEANFILES=configurator ccan_config.h hkl-5.1.7/hkl/ccan/str/0000775000175000017500000000000015144640565013570 5ustar00piccapiccahkl-5.1.7/hkl/ccan/str/str_debug.h0000664000175000017500000000140615133706174015715 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_STR_DEBUG_H #define CCAN_STR_DEBUG_H /* #define CCAN_STR_DEBUG 1 */ #ifdef CCAN_STR_DEBUG /* Because we mug the real ones with macros, we need our own wrappers. */ int str_isalnum(int i); int str_isalpha(int i); int str_isascii(int i); #if HAVE_ISBLANK int str_isblank(int i); #endif int str_iscntrl(int i); int str_isdigit(int i); int str_isgraph(int i); int str_islower(int i); int str_isprint(int i); int str_ispunct(int i); int str_isspace(int i); int str_isupper(int i); int str_isxdigit(int i); char *str_strstr(const char *haystack, const char *needle); char *str_strchr(const char *s, int c); char *str_strrchr(const char *s, int c); #endif /* CCAN_STR_DEBUG */ #endif /* CCAN_STR_DEBUG_H */ hkl-5.1.7/hkl/ccan/str/debug.c0000664000175000017500000000312415133706174015017 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #include #include #include #include #include #ifdef CCAN_STR_DEBUG /* Because we mug the real ones with macros, we need our own wrappers. */ int str_isalnum(int i) { assert(i >= -1 && i < 256); return isalnum(i); } int str_isalpha(int i) { assert(i >= -1 && i < 256); return isalpha(i); } int str_isascii(int i) { assert(i >= -1 && i < 256); return isascii(i); } #if HAVE_ISBLANK int str_isblank(int i) { assert(i >= -1 && i < 256); return isblank(i); } #endif int str_iscntrl(int i) { assert(i >= -1 && i < 256); return iscntrl(i); } int str_isdigit(int i) { assert(i >= -1 && i < 256); return isdigit(i); } int str_isgraph(int i) { assert(i >= -1 && i < 256); return isgraph(i); } int str_islower(int i) { assert(i >= -1 && i < 256); return islower(i); } int str_isprint(int i) { assert(i >= -1 && i < 256); return isprint(i); } int str_ispunct(int i) { assert(i >= -1 && i < 256); return ispunct(i); } int str_isspace(int i) { assert(i >= -1 && i < 256); return isspace(i); } int str_isupper(int i) { assert(i >= -1 && i < 256); return isupper(i); } int str_isxdigit(int i) { assert(i >= -1 && i < 256); return isxdigit(i); } #undef strstr #undef strchr #undef strrchr char *str_strstr(const char *haystack, const char *needle) { return strstr(haystack, needle); } char *str_strchr(const char *haystack, int c) { return strchr(haystack, c); } char *str_strrchr(const char *haystack, int c) { return strrchr(haystack, c); } #endif hkl-5.1.7/hkl/ccan/str/str.h0000664000175000017500000001353415133706174014554 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_STR_H #define CCAN_STR_H #include #include #include #include #include /** * streq - Are two strings equal? * @a: first string * @b: first string * * This macro is arguably more readable than "!strcmp(a, b)". * * Example: * if (streq(somestring, "")) * printf("String is empty!\n"); */ #define streq(a,b) (strcmp((a),(b)) == 0) /** * strstarts - Does this string start with this prefix? * @str: string to test * @prefix: prefix to look for at start of str * * Example: * if (strstarts(somestring, "foo")) * printf("String %s begins with 'foo'!\n", somestring); */ #define strstarts(str,prefix) (strncmp((str),(prefix),strlen(prefix)) == 0) /** * strends - Does this string end with this postfix? * @str: string to test * @postfix: postfix to look for at end of str * * Example: * if (strends(somestring, "foo")) * printf("String %s end with 'foo'!\n", somestring); */ static inline bool strends(const char *str, const char *postfix) { if (strlen(str) < strlen(postfix)) return false; return streq(str + strlen(str) - strlen(postfix), postfix); } /** * stringify - Turn expression into a string literal * @expr: any C expression * * Example: * #define PRINT_COND_IF_FALSE(cond) \ * ((cond) || printf("%s is false!", stringify(cond))) */ #define stringify(expr) stringify_1(expr) /* Double-indirection required to stringify expansions */ #define stringify_1(expr) #expr /** * strcount - Count number of (non-overlapping) occurrences of a substring. * @haystack: a C string * @needle: a substring * * Example: * assert(strcount("aaa aaa", "a") == 6); * assert(strcount("aaa aaa", "ab") == 0); * assert(strcount("aaa aaa", "aa") == 2); */ size_t strcount(const char *haystack, const char *needle); /** * STR_MAX_CHARS - Maximum possible size of numeric string for this type. * @type_or_expr: a pointer or integer type or expression. * * This provides enough space for a nul-terminated string which represents the * largest possible value for the type or expression. * * Note: The implementation adds extra space so hex values or negative * values will fit (eg. sprintf(... "%p"). ) * * Example: * char str[STR_MAX_CHARS(int)]; * * sprintf(str, "%i", 7); */ #define STR_MAX_CHARS(type_or_expr) \ ((sizeof(type_or_expr) * CHAR_BIT + 8) / 9 * 3 + 2 \ + STR_MAX_CHARS_TCHECK_(type_or_expr)) #if HAVE_TYPEOF /* Only a simple type can have 0 assigned, so test that. */ #define STR_MAX_CHARS_TCHECK_(type_or_expr) \ (sizeof(({ typeof(type_or_expr) x = 0; x; }))*0) #else #define STR_MAX_CHARS_TCHECK_(type_or_expr) 0 #endif /** * cisalnum - isalnum() which takes a char (and doesn't accept EOF) * @c: a character * * Surprisingly, the standard ctype.h isalnum() takes an int, which * must have the value of EOF (-1) or an unsigned char. This variant * takes a real char, and doesn't accept EOF. */ static inline bool cisalnum(char c) { return isalnum((unsigned char)c); } static inline bool cisalpha(char c) { return isalpha((unsigned char)c); } static inline bool cisascii(char c) { return isascii((unsigned char)c); } #if HAVE_ISBLANK static inline bool cisblank(char c) { return isblank((unsigned char)c); } #endif static inline bool ciscntrl(char c) { return iscntrl((unsigned char)c); } static inline bool cisdigit(char c) { return isdigit((unsigned char)c); } static inline bool cisgraph(char c) { return isgraph((unsigned char)c); } static inline bool cislower(char c) { return islower((unsigned char)c); } static inline bool cisprint(char c) { return isprint((unsigned char)c); } static inline bool cispunct(char c) { return ispunct((unsigned char)c); } static inline bool cisspace(char c) { return isspace((unsigned char)c); } static inline bool cisupper(char c) { return isupper((unsigned char)c); } static inline bool cisxdigit(char c) { return isxdigit((unsigned char)c); } #include /* These checks force things out of line, hence they are under DEBUG. */ #ifdef CCAN_STR_DEBUG #include /* These are commonly misused: they take -1 or an *unsigned* char value. */ #undef isalnum #undef isalpha #undef isascii #undef isblank #undef iscntrl #undef isdigit #undef isgraph #undef islower #undef isprint #undef ispunct #undef isspace #undef isupper #undef isxdigit /* You can use a char if char is unsigned. */ #if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF #define str_check_arg_(i) \ ((i) + BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(i), \ char) \ || (char)255 > 0)) #else #define str_check_arg_(i) (i) #endif #define isalnum(i) str_isalnum(str_check_arg_(i)) #define isalpha(i) str_isalpha(str_check_arg_(i)) #define isascii(i) str_isascii(str_check_arg_(i)) #if HAVE_ISBLANK #define isblank(i) str_isblank(str_check_arg_(i)) #endif #define iscntrl(i) str_iscntrl(str_check_arg_(i)) #define isdigit(i) str_isdigit(str_check_arg_(i)) #define isgraph(i) str_isgraph(str_check_arg_(i)) #define islower(i) str_islower(str_check_arg_(i)) #define isprint(i) str_isprint(str_check_arg_(i)) #define ispunct(i) str_ispunct(str_check_arg_(i)) #define isspace(i) str_isspace(str_check_arg_(i)) #define isupper(i) str_isupper(str_check_arg_(i)) #define isxdigit(i) str_isxdigit(str_check_arg_(i)) #if HAVE_TYPEOF /* With GNU magic, we can make const-respecting standard string functions. */ #undef strstr #undef strchr #undef strrchr /* + 0 is needed to decay array into pointer. */ #define strstr(haystack, needle) \ ((typeof((haystack) + 0))str_strstr((haystack), (needle))) #define strchr(haystack, c) \ ((typeof((haystack) + 0))str_strchr((haystack), (c))) #define strrchr(haystack, c) \ ((typeof((haystack) + 0))str_strrchr((haystack), (c))) #endif #endif /* CCAN_STR_DEBUG */ #endif /* CCAN_STR_H */ hkl-5.1.7/hkl/ccan/str/str.c0000664000175000017500000000043715133706174014545 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #include size_t strcount(const char *haystack, const char *needle) { size_t i = 0, nlen = strlen(needle); while ((haystack = strstr(haystack, needle)) != NULL) { i++; haystack += nlen; } return i; } hkl-5.1.7/hkl/ccan/compiler/0000775000175000017500000000000015144640565014572 5ustar00piccapiccahkl-5.1.7/hkl/ccan/compiler/compiler.h0000664000175000017500000001763615133706174016567 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_COMPILER_H #define CCAN_COMPILER_H #include #ifndef COLD #if HAVE_ATTRIBUTE_COLD /** * COLD - a function is unlikely to be called. * * Used to mark an unlikely code path and optimize appropriately. * It is usually used on logging or error routines. * * Example: * static void COLD moan(const char *reason) * { * fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno)); * } */ #define COLD __attribute__((__cold__)) #else #define COLD #endif #endif #ifndef NORETURN #if HAVE_ATTRIBUTE_NORETURN /** * NORETURN - a function does not return * * Used to mark a function which exits; useful for suppressing warnings. * * Example: * static void NORETURN fail(const char *reason) * { * fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno)); * exit(1); * } */ #define NORETURN __attribute__((__noreturn__)) #else #define NORETURN #endif #endif #ifndef PRINTF_FMT #if HAVE_ATTRIBUTE_PRINTF /** * PRINTF_FMT - a function takes printf-style arguments * @nfmt: the 1-based number of the function's format argument. * @narg: the 1-based number of the function's first variable argument. * * This allows the compiler to check your parameters as it does for printf(). * * Example: * void PRINTF_FMT(2,3) my_printf(const char *prefix, const char *fmt, ...); */ #define PRINTF_FMT(nfmt, narg) \ __attribute__((format(__printf__, nfmt, narg))) #else #define PRINTF_FMT(nfmt, narg) #endif #endif #ifndef CONST_FUNCTION #if HAVE_ATTRIBUTE_CONST /** * CONST_FUNCTION - a function's return depends only on its argument * * This allows the compiler to assume that the function will return the exact * same value for the exact same arguments. This implies that the function * must not use global variables, or dereference pointer arguments. */ #define CONST_FUNCTION __attribute__((__const__)) #else #define CONST_FUNCTION #endif #ifndef PURE_FUNCTION #if HAVE_ATTRIBUTE_PURE /** * PURE_FUNCTION - a function is pure * * A pure function is one that has no side effects other than it's return value * and uses no inputs other than it's arguments and global variables. */ #define PURE_FUNCTION __attribute__((__pure__)) #else #define PURE_FUNCTION #endif #endif #endif #if HAVE_ATTRIBUTE_UNUSED #ifndef UNNEEDED /** * UNNEEDED - a variable/function may not be needed * * This suppresses warnings about unused variables or functions, but tells * the compiler that if it is unused it need not emit it into the source code. * * Example: * // With some preprocessor options, this is unnecessary. * static UNNEEDED int counter; * * // With some preprocessor options, this is unnecessary. * static UNNEEDED void add_to_counter(int add) * { * counter += add; * } */ #define UNNEEDED __attribute__((__unused__)) #endif #ifndef NEEDED #if HAVE_ATTRIBUTE_USED /** * NEEDED - a variable/function is needed * * This suppresses warnings about unused variables or functions, but tells * the compiler that it must exist even if it (seems) unused. * * Example: * // Even if this is unused, these are vital for debugging. * static NEEDED int counter; * static NEEDED void dump_counter(void) * { * printf("Counter is %i\n", counter); * } */ #define NEEDED __attribute__((__used__)) #else /* Before used, unused functions and vars were always emitted. */ #define NEEDED __attribute__((__unused__)) #endif #endif #ifndef UNUSED /** * UNUSED - a parameter is unused * * Some compilers (eg. gcc with -W or -Wunused) warn about unused * function parameters. This suppresses such warnings and indicates * to the reader that it's deliberate. * * Example: * // This is used as a callback, so needs to have this prototype. * static int some_callback(void *unused UNUSED) * { * return 0; * } */ #define UNUSED __attribute__((__unused__)) #endif #else #ifndef UNNEEDED #define UNNEEDED #endif #ifndef NEEDED #define NEEDED #endif #ifndef UNUSED #define UNUSED #endif #endif #ifndef IS_COMPILE_CONSTANT #if HAVE_BUILTIN_CONSTANT_P /** * IS_COMPILE_CONSTANT - does the compiler know the value of this expression? * @expr: the expression to evaluate * * When an expression manipulation is complicated, it is usually better to * implement it in a function. However, if the expression being manipulated is * known at compile time, it is better to have the compiler see the entire * expression so it can simply substitute the result. * * This can be done using the IS_COMPILE_CONSTANT() macro. * * Example: * enum greek { ALPHA, BETA, GAMMA, DELTA, EPSILON }; * * // Out-of-line version. * const char *greek_name(enum greek greek); * * // Inline version. * static inline const char *_greek_name(enum greek greek) * { * switch (greek) { * case ALPHA: return "alpha"; * case BETA: return "beta"; * case GAMMA: return "gamma"; * case DELTA: return "delta"; * case EPSILON: return "epsilon"; * default: return "**INVALID**"; * } * } * * // Use inline if compiler knows answer. Otherwise call function * // to avoid copies of the same code everywhere. * #define greek_name(g) \ * (IS_COMPILE_CONSTANT(greek) ? _greek_name(g) : greek_name(g)) */ #define IS_COMPILE_CONSTANT(expr) __builtin_constant_p(expr) #else /* If we don't know, assume it's not. */ #define IS_COMPILE_CONSTANT(expr) 0 #endif #endif #ifndef WARN_UNUSED_RESULT #if HAVE_WARN_UNUSED_RESULT /** * WARN_UNUSED_RESULT - warn if a function return value is unused. * * Used to mark a function where it is extremely unlikely that the caller * can ignore the result, eg realloc(). * * Example: * // buf param may be freed by this; need return value! * static char *WARN_UNUSED_RESULT enlarge(char *buf, unsigned *size) * { * return realloc(buf, (*size) *= 2); * } */ #define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) #else #define WARN_UNUSED_RESULT #endif #endif #if HAVE_ATTRIBUTE_DEPRECATED /** * WARN_DEPRECATED - warn that a function/type/variable is deprecated when used. * * Used to mark a function, type or variable should not be used. * * Example: * WARN_DEPRECATED char *oldfunc(char *buf); */ #define WARN_DEPRECATED __attribute__((__deprecated__)) #else #define WARN_DEPRECATED #endif #if HAVE_ATTRIBUTE_NONNULL /** * NO_NULL_ARGS - specify that no arguments to this function can be NULL. * * The compiler will warn if any pointer args are NULL. * * Example: * NO_NULL_ARGS char *my_copy(char *buf); */ #define NO_NULL_ARGS __attribute__((__nonnull__)) /** * NON_NULL_ARGS - specify that some arguments to this function can't be NULL. * @...: 1-based argument numbers for which args can't be NULL. * * The compiler will warn if any of the specified pointer args are NULL. * * Example: * char *my_copy2(char *buf, char *maybenull) NON_NULL_ARGS(1); */ #define NON_NULL_ARGS(...) __attribute__((__nonnull__(__VA_ARGS__))) #else #define NO_NULL_ARGS #define NON_NULL_ARGS(...) #endif #if HAVE_ATTRIBUTE_RETURNS_NONNULL /** * RETURNS_NONNULL - specify that this function cannot return NULL. * * Mainly an optimization opportunity, but can also suppress warnings. * * Example: * RETURNS_NONNULL char *my_copy(char *buf); */ #define RETURNS_NONNULL __attribute__((__returns_nonnull__)) #else #define RETURNS_NONNULL #endif #if HAVE_ATTRIBUTE_SENTINEL /** * LAST_ARG_NULL - specify the last argument of a variadic function must be NULL. * * The compiler will warn if the last argument isn't NULL. * * Example: * char *join_string(char *buf, ...) LAST_ARG_NULL; */ #define LAST_ARG_NULL __attribute__((__sentinel__)) #else #define LAST_ARG_NULL #endif #if HAVE_BUILTIN_CPU_SUPPORTS /** * cpu_supports - test if current CPU supports the named feature. * * This takes a literal string, and currently only works on glibc platforms. * * Example: * if (cpu_supports("mmx")) * printf("MMX support engaged!\n"); */ #define cpu_supports(x) __builtin_cpu_supports(x) #else #define cpu_supports(x) 0 #endif /* HAVE_BUILTIN_CPU_SUPPORTS */ #endif /* CCAN_COMPILER_H */ hkl-5.1.7/hkl/ccan/build_assert/0000775000175000017500000000000015144640565015440 5ustar00piccapiccahkl-5.1.7/hkl/ccan/build_assert/build_assert.h0000664000175000017500000000231415133706174020266 0ustar00piccapicca/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_BUILD_ASSERT_H #define CCAN_BUILD_ASSERT_H /** * BUILD_ASSERT - assert a build-time dependency. * @cond: the compile-time condition which must be true. * * Your compile will fail if the condition isn't true, or can't be evaluated * by the compiler. This can only be used within a function. * * Example: * #include * ... * static char *foo_to_char(struct foo *foo) * { * // This code needs string to be at start of foo. * BUILD_ASSERT(offsetof(struct foo, string) == 0); * return (char *)foo; * } */ #define BUILD_ASSERT(cond) \ do { (void) sizeof(char [1 - 2*!(cond)]); } while(0) /** * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression. * @cond: the compile-time condition which must be true. * * Your compile will fail if the condition isn't true, or can't be evaluated * by the compiler. This can be used in an expression: its value is "0". * * Example: * #define foo_to_char(foo) \ * ((char *)(foo) \ * + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0)) */ #define BUILD_ASSERT_OR_ZERO(cond) \ (sizeof(char [1 - 2*!(cond)]) - 1) #endif /* CCAN_BUILD_ASSERT_H */ hkl-5.1.7/hkl/ccan/configurator.c0000664000175000017500000010164215133711150015615 0ustar00piccapicca/* Simple tool to create config.h. * Would be much easier with ccan modules, but deliberately standalone. * * Copyright 2011 Rusty Russell . MIT license. * * c12r_err, c12r_errx functions copied from ccan/err/err.c * Copyright Rusty Russell . CC0 (Public domain) License. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #define _POSIX_C_SOURCE 200809L /* For pclose, popen, strdup */ #define EXIT_BAD_USAGE 1 #define EXIT_TROUBLE_RUNNING 2 #define EXIT_BAD_TEST 3 #define EXIT_BAD_INPUT 4 #include #include #include #include #include #include #include #ifdef _MSC_VER #define popen _popen #define pclose _pclose #endif #ifdef _MSC_VER #define DEFAULT_COMPILER "cl" /* Note: Dash options avoid POSIX path conversion when used under msys bash * and are therefore preferred to slash (e.g. -nologo over /nologo) * Note: Disable Warning 4200 "nonstandard extension used : zero-sized array * in struct/union" for flexible array members. */ #define DEFAULT_FLAGS "-nologo -Zi -W4 -wd4200 " \ "-D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS" #define DEFAULT_OUTPUT_EXE_FLAG "-Fe:" #else #define DEFAULT_COMPILER "cc" #define DEFAULT_FLAGS "-g3 -ggdb -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition" #define DEFAULT_OUTPUT_EXE_FLAG "-o" #endif #define OUTPUT_FILE "configurator.out" #define INPUT_FILE "configuratortest.c" #ifdef _WIN32 #define DIR_SEP "\\" #else #define DIR_SEP "/" #endif static const char *progname = ""; static int verbose; static bool like_a_libtool = false; struct test { const char *name; const char *desc; /* * Template style flags (pick one): * OUTSIDE_MAIN: * - put a simple boilerplate main below it. * DEFINES_FUNC: * - defines a static function called func; adds ref to avoid warnings * INSIDE_MAIN: * - put this inside main(). * DEFINES_EVERYTHING: * - don't add any boilerplate at all. * * Execution flags: * EXECUTE: * - a runtime test; must compile, exit 0 means flag is set. * MAY_NOT_COMPILE: * - Only useful with EXECUTE: don't get upset if it doesn't compile. * : * - a compile test, if it compiles must run and exit 0. */ const char *style; const char *depends; const char *link; const char *fragment; const char *flags; const char *overrides; /* On success, force this to '1' */ bool done; bool answer; }; /* Terminated by a NULL name */ static struct test *tests; static const struct test base_tests[] = { { "HAVE_32BIT_OFF_T", "off_t is 32 bits", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", NULL, NULL, "#include \n" "int main(void) {\n" " return sizeof(off_t) == 4 ? 0 : 1;\n" "}\n" }, { "HAVE_ALIGNOF", "__alignof__ support", "INSIDE_MAIN", NULL, NULL, "return __alignof__(double) > 0 ? 0 : 1;" }, { "HAVE_ASPRINTF", "asprintf() declaration", "DEFINES_FUNC", NULL, NULL, "#ifndef _GNU_SOURCE\n" "#define _GNU_SOURCE\n" "#endif\n" "#include \n" "static char *func(int x) {" " char *p;\n" " if (asprintf(&p, \"%u\", x) == -1) \n" " p = NULL;\n" " return p;\n" "}" }, { "HAVE_ATTRIBUTE_COLD", "__attribute__((cold)) support", "DEFINES_FUNC", NULL, NULL, "static int __attribute__((cold)) func(int x) { return x; }" }, { "HAVE_ATTRIBUTE_CONST", "__attribute__((const)) support", "DEFINES_FUNC", NULL, NULL, "static int __attribute__((const)) func(int x) { return x; }" }, { "HAVE_ATTRIBUTE_DEPRECATED", "__attribute__((deprecated)) support", "OUTSIDE_MAIN", NULL, NULL, "int __attribute__((deprecated)) depr(int x);" }, { "HAVE_ATTRIBUTE_NONNULL", "__attribute__((nonnull)) support", "DEFINES_FUNC", NULL, NULL, "static char *__attribute__((nonnull)) func(char *p) { return p; }" }, { "HAVE_ATTRIBUTE_RETURNS_NONNULL", "__attribute__((returns_nonnull)) support", "DEFINES_FUNC", NULL, NULL, "static const char *__attribute__((returns_nonnull)) func(void) { return \"hi\"; }" }, { "HAVE_ATTRIBUTE_SENTINEL", "__attribute__((sentinel)) support", "DEFINES_FUNC", NULL, NULL, "static int __attribute__((sentinel)) func(int i, ...) { return i; }" }, { "HAVE_ATTRIBUTE_PURE", "__attribute__((pure)) support", "DEFINES_FUNC", NULL, NULL, "static int __attribute__((pure)) func(int x) { return x; }" }, { "HAVE_ATTRIBUTE_MAY_ALIAS", "__attribute__((may_alias)) support", "OUTSIDE_MAIN", NULL, NULL, "typedef short __attribute__((__may_alias__)) short_a;" }, { "HAVE_ATTRIBUTE_NORETURN", "__attribute__((noreturn)) support", "DEFINES_FUNC", NULL, NULL, "#include \n" "static void __attribute__((noreturn)) func(int x) { exit(x); }" }, { "HAVE_ATTRIBUTE_PRINTF", "__attribute__ format printf support", "DEFINES_FUNC", NULL, NULL, "static void __attribute__((format(__printf__, 1, 2))) func(const char *fmt, ...) { (void)fmt; }" }, { "HAVE_ATTRIBUTE_UNUSED", "__attribute__((unused)) support", "OUTSIDE_MAIN", NULL, NULL, "static int __attribute__((unused)) func(int x) { return x; }" }, { "HAVE_ATTRIBUTE_USED", "__attribute__((used)) support", "OUTSIDE_MAIN", NULL, NULL, "static int __attribute__((used)) func(int x) { return x; }" }, { "HAVE_BACKTRACE", "backtrace() in ", "DEFINES_FUNC", NULL, NULL, "#include \n" "static int func(int x) {" " void *bt[10];\n" " return backtrace(bt, 10) < x;\n" "}" }, { "HAVE_BIG_ENDIAN", "big endian", "INSIDE_MAIN|EXECUTE", NULL, NULL, "union { int i; char c[sizeof(int)]; } u;\n" "u.i = 0x01020304;\n" "return u.c[0] == 0x01 && u.c[1] == 0x02 && u.c[2] == 0x03 && u.c[3] == 0x04 ? 0 : 1;" }, { "HAVE_BSWAP_64", "bswap64 in byteswap.h", "DEFINES_FUNC", "HAVE_BYTESWAP_H", NULL, "#include \n" "static int func(int x) { return bswap_64(x); }" }, { "HAVE_BUILTIN_CHOOSE_EXPR", "__builtin_choose_expr support", "INSIDE_MAIN", NULL, NULL, "return __builtin_choose_expr(1, 0, \"garbage\");" }, { "HAVE_BUILTIN_CLZ", "__builtin_clz support", "INSIDE_MAIN", NULL, NULL, "return __builtin_clz(1) == (sizeof(int)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CLZL", "__builtin_clzl support", "INSIDE_MAIN", NULL, NULL, "return __builtin_clzl(1) == (sizeof(long)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CLZLL", "__builtin_clzll support", "INSIDE_MAIN", NULL, NULL, "return __builtin_clzll(1) == (sizeof(long long)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CTZ", "__builtin_ctz support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ctz(1U << (sizeof(int)*8 - 1)) == (sizeof(int)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CTZL", "__builtin_ctzl support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ctzl(1UL << (sizeof(long)*8 - 1)) == (sizeof(long)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CTZLL", "__builtin_ctzll support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ctzll(1ULL << (sizeof(long long)*8 - 1)) == (sizeof(long long)*8 - 1) ? 0 : 1;" }, { "HAVE_BUILTIN_CONSTANT_P", "__builtin_constant_p support", "INSIDE_MAIN", NULL, NULL, "return __builtin_constant_p(1) ? 0 : 1;" }, { "HAVE_BUILTIN_EXPECT", "__builtin_expect support", "INSIDE_MAIN", NULL, NULL, "return __builtin_expect(argc == 1, 1) ? 0 : 1;" }, { "HAVE_BUILTIN_FFS", "__builtin_ffs support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ffs(0) == 0 ? 0 : 1;" }, { "HAVE_BUILTIN_FFSL", "__builtin_ffsl support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ffsl(0L) == 0 ? 0 : 1;" }, { "HAVE_BUILTIN_FFSLL", "__builtin_ffsll support", "INSIDE_MAIN", NULL, NULL, "return __builtin_ffsll(0LL) == 0 ? 0 : 1;" }, { "HAVE_BUILTIN_POPCOUNT", "__builtin_popcount support", "INSIDE_MAIN", NULL, NULL, "return __builtin_popcount(255) == 8 ? 0 : 1;" }, { "HAVE_BUILTIN_POPCOUNTL", "__builtin_popcountl support", "INSIDE_MAIN", NULL, NULL, "return __builtin_popcountl(255L) == 8 ? 0 : 1;" }, { "HAVE_BUILTIN_POPCOUNTLL", "__builtin_popcountll support", "INSIDE_MAIN", NULL, NULL, "return __builtin_popcountll(255LL) == 8 ? 0 : 1;" }, { "HAVE_BUILTIN_TYPES_COMPATIBLE_P", "__builtin_types_compatible_p support", "INSIDE_MAIN", NULL, NULL, "return __builtin_types_compatible_p(char *, int) ? 1 : 0;" }, { "HAVE_ICCARM_INTRINSICS", "", "DEFINES_FUNC", NULL, NULL, "#include \n" "int func(int v) {\n" " return __CLZ(__RBIT(v));\n" "}" }, { "HAVE_BYTESWAP_H", "", "OUTSIDE_MAIN", NULL, NULL, "#include \n" }, { "HAVE_CLOCK_GETTIME", "clock_gettime() declaration", "DEFINES_FUNC", "HAVE_STRUCT_TIMESPEC", NULL, "#include \n" "static struct timespec func(void) {\n" " struct timespec ts;\n" " clock_gettime(CLOCK_REALTIME, &ts);\n" " return ts;\n" "}\n" }, { "HAVE_CLOCK_GETTIME_IN_LIBRT", "clock_gettime() in librt", "DEFINES_FUNC", "HAVE_STRUCT_TIMESPEC !HAVE_CLOCK_GETTIME", "-lrt", "#include \n" "static struct timespec func(void) {\n" " struct timespec ts;\n" " clock_gettime(CLOCK_REALTIME, &ts);\n" " return ts;\n" "}\n", /* This means HAVE_CLOCK_GETTIME, too */ "HAVE_CLOCK_GETTIME" }, { "HAVE_COMPOUND_LITERALS", "compound literal support", "INSIDE_MAIN", NULL, NULL, "int *foo = (int[]) { 1, 2, 3, 4 };\n" "return foo[0] ? 0 : 1;" }, { "HAVE_FCHDIR", "fchdir support", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", NULL, NULL, "#include \n" "#include \n" "#include \n" "#include \n" "int main(void) {\n" " int fd = open(\"..\", O_RDONLY);\n" " return fchdir(fd) == 0 ? 0 : 1;\n" "}\n" }, { "HAVE_ERR_H", "", "DEFINES_FUNC", NULL, NULL, "#include \n" "static void func(int arg) {\n" " if (arg == 0)\n" " err(1, \"err %u\", arg);\n" " if (arg == 1)\n" " errx(1, \"err %u\", arg);\n" " if (arg == 3)\n" " warn(\"warn %u\", arg);\n" " if (arg == 4)\n" " warnx(\"warn %u\", arg);\n" "}\n" }, { "HAVE_FILE_OFFSET_BITS", "_FILE_OFFSET_BITS to get 64-bit offsets", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", "HAVE_32BIT_OFF_T", NULL, "#define _FILE_OFFSET_BITS 64\n" "#include \n" "int main(void) {\n" " return sizeof(off_t) == 8 ? 0 : 1;\n" "}\n" }, { "HAVE_FOR_LOOP_DECLARATION", "for loop declaration support", "INSIDE_MAIN", NULL, NULL, "int ret = 1;\n" "for (int i = 0; i < argc; i++) { ret = 0; };\n" "return ret;" }, { "HAVE_FLEXIBLE_ARRAY_MEMBER", "flexible array member support", "OUTSIDE_MAIN", NULL, NULL, "struct foo { unsigned int x; int arr[]; };" }, { "HAVE_GETPAGESIZE", "getpagesize() in ", "DEFINES_FUNC", NULL, NULL, "#include \n" "static int func(void) { return getpagesize(); }" }, { "HAVE_ISBLANK", "isblank() in ", "DEFINES_FUNC", NULL, NULL, "#ifndef _GNU_SOURCE\n" "#define _GNU_SOURCE\n" "#endif\n" "#include \n" "static int func(void) { return isblank(' '); }" }, { "HAVE_LITTLE_ENDIAN", "little endian", "INSIDE_MAIN|EXECUTE", NULL, NULL, "union { int i; char c[sizeof(int)]; } u;\n" "u.i = 0x01020304;\n" "return u.c[0] == 0x04 && u.c[1] == 0x03 && u.c[2] == 0x02 && u.c[3] == 0x01 ? 0 : 1;" }, { "HAVE_MEMMEM", "memmem in ", "DEFINES_FUNC", NULL, NULL, "#ifndef _GNU_SOURCE\n" "#define _GNU_SOURCE\n" "#endif\n" "#include \n" "static void *func(void *h, size_t hl, void *n, size_t nl) {\n" "return memmem(h, hl, n, nl);" "}\n", }, { "HAVE_MEMRCHR", "memrchr in ", "DEFINES_FUNC", NULL, NULL, "#ifndef _GNU_SOURCE\n" "#define _GNU_SOURCE\n" "#endif\n" "#include \n" "static void *func(void *s, int c, size_t n) {\n" "return memrchr(s, c, n);" "}\n", }, { "HAVE_MMAP", "mmap() declaration", "DEFINES_FUNC", NULL, NULL, "#include \n" "static void *func(int fd) {\n" " return mmap(0, 65536, PROT_READ, MAP_SHARED, fd, 0);\n" "}" }, { "HAVE_PROC_SELF_MAPS", "/proc/self/maps exists", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", NULL, NULL, "#include \n" "#include \n" "#include \n" "int main(void) {\n" " return open(\"/proc/self/maps\", O_RDONLY) != -1 ? 0 : 1;\n" "}\n" }, { "HAVE_QSORT_R_PRIVATE_LAST", "qsort_r cmp takes trailing arg", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", NULL, NULL, "#ifndef _GNU_SOURCE\n" "#define _GNU_SOURCE\n" "#endif\n" "#include \n" "static int cmp(const void *lp, const void *rp, void *priv) {\n" " *(unsigned int *)priv = 1;\n" " return *(const int *)lp - *(const int *)rp; }\n" "int main(void) {\n" " int array[] = { 9, 2, 5 };\n" " unsigned int called = 0;\n" " qsort_r(array, 3, sizeof(int), cmp, &called);\n" " return called && array[0] == 2 && array[1] == 5 && array[2] == 9 ? 0 : 1;\n" "}\n" }, { "HAVE_STRUCT_TIMESPEC", "struct timespec declaration", "DEFINES_FUNC", NULL, NULL, "#include \n" "static void func(void) {\n" " struct timespec ts;\n" " ts.tv_sec = ts.tv_nsec = 1;\n" "}\n" }, { "HAVE_SECTION_START_STOP", "__attribute__((section)) and __start/__stop", "DEFINES_FUNC", NULL, NULL, "static void *__attribute__((__section__(\"mysec\"))) p = &p;\n" "static int func(void) {\n" " extern void *__start_mysec[], *__stop_mysec[];\n" " return __stop_mysec - __start_mysec;\n" "}\n" }, { "HAVE_STACK_GROWS_UPWARDS", "stack grows upwards", "DEFINES_EVERYTHING|EXECUTE", NULL, NULL, "#include \n" "static ptrdiff_t nest(const void *base, unsigned int i)\n" "{\n" " if (i == 0)\n" " return (const char *)&i - (const char *)base;\n" " return nest(base, i-1);\n" "}\n" "int main(int argc, char *argv[]) {\n" " (void)argv;\n" " return (nest(&argc, argc) > 0) ? 0 : 1;\n" "}\n" }, { "HAVE_STATEMENT_EXPR", "statement expression support", "INSIDE_MAIN", NULL, NULL, "return ({ int x = argc; x == argc ? 0 : 1; });" }, { "HAVE_SYS_FILIO_H", "", "OUTSIDE_MAIN", NULL, NULL, /* Solaris needs this for FIONREAD */ "#include \n" }, { "HAVE_SYS_TERMIOS_H", "", "OUTSIDE_MAIN", NULL, NULL, "#include \n" }, { "HAVE_SYS_UNISTD_H", "", "OUTSIDE_MAIN", NULL, NULL, "#include \n" }, { "HAVE_TYPEOF", "__typeof__ support", "INSIDE_MAIN", NULL, NULL, "__typeof__(argc) i; i = argc; return i == argc ? 0 : 1;" }, { "HAVE_UNALIGNED_ACCESS", "unaligned access to int", "DEFINES_EVERYTHING|EXECUTE", NULL, NULL, "#include \n" "int main(int argc, char *argv[]) {\n" " (void)argc;\n" " char pad[sizeof(int) + 1];\n" " memcpy(pad, argv[0], sizeof(pad));\n" " int *x = (int *)pad, *y = (int *)(pad + 1);\n" " return *x == *y;\n" "}\n" }, { "HAVE_UTIME", "utime() declaration", "DEFINES_FUNC", NULL, NULL, "#include \n" "#include \n" "static int func(const char *filename) {\n" " struct utimbuf times = { 0 };\n" " return utime(filename, ×);\n" "}" }, { "HAVE_WARN_UNUSED_RESULT", "__attribute__((warn_unused_result))", "DEFINES_FUNC", NULL, NULL, "#include \n" "#include \n" "static __attribute__((warn_unused_result)) int func(int i) {\n" " return i + 1;\n" "}" }, { "HAVE_OPENMP", "#pragma omp and -fopenmp support", "INSIDE_MAIN|EXECUTE|MAY_NOT_COMPILE", NULL, NULL, "int i;\n" "#pragma omp parallel for\n" "for(i = 0; i < 0; i++) {};\n" "return 0;\n", "-Werror -fopenmp" }, { "HAVE_VALGRIND_MEMCHECK_H", "", "OUTSIDE_MAIN", NULL, NULL, "#include \n" }, { "HAVE_UCONTEXT", "working \n" "static int x = 0;\n" "static char stack[16384];\n" "static ucontext_t a, b;\n" "static void fn(void) {\n" " x |= 2;\n" " setcontext(&b);\n" " x |= 4;\n" "}\n" "int main(void) {\n" " x |= 1;\n" " getcontext(&a);\n" " a.uc_stack.ss_sp = stack;\n" " a.uc_stack.ss_size = sizeof(stack);\n" " makecontext(&a, fn, 0);\n" " swapcontext(&b, &a);\n" " return (x == 3) ? 0 : 1;\n" "}\n" }, { "HAVE_POINTER_SAFE_MAKECONTEXT", "passing pointers via makecontext()", "DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE", "HAVE_UCONTEXT", NULL, "#include \n" "#include \n" "static int worked = 0;\n" "static char stack[16384];\n" "static ucontext_t a, b;\n" "static void fn(void *p, void *q) {\n" " void *cp = &worked;\n" " void *cq = (void *)(~((ptrdiff_t)cp));\n" " if ((p == cp) && (q == cq))\n" " worked = 1;\n" " setcontext(&b);\n" "}\n" "int main(void) {\n" " void *ap = &worked;\n" " void *aq = (void *)(~((ptrdiff_t)ap));\n" " getcontext(&a);\n" " a.uc_stack.ss_sp = stack;\n" " a.uc_stack.ss_size = sizeof(stack);\n" " makecontext(&a, (void (*)(void))fn, 2, ap, aq);\n" " swapcontext(&b, &a);\n" " return worked ? 0 : 1;\n" "}\n" }, { "HAVE_BUILTIN_CPU_SUPPORTS", "__builtin_cpu_supports()", "DEFINES_FUNC", NULL, NULL, "#include \n" "static bool func(void) {\n" " return __builtin_cpu_supports(\"mmx\");\n" "}" }, { "HAVE_CLOSEFROM", "closefrom() offered by system", "DEFINES_EVERYTHING", NULL, NULL, "#include \n" "#include \n" "int main(void) {\n" " closefrom(STDERR_FILENO + 1);\n" " return 0;\n" "}\n" }, { "HAVE_F_CLOSEM", "F_CLOSEM defined for fctnl.", "DEFINES_EVERYTHING", NULL, NULL, "#include \n" "#include \n" "int main(void) {\n" " int res = fcntl(STDERR_FILENO + 1, F_CLOSEM, 0);\n" " return res < 0;\n" "}\n" }, { "HAVE_NR_CLOSE_RANGE", "close_range syscall available as __NR_close_range.", "DEFINES_EVERYTHING", NULL, NULL, "#include \n" "#include \n" "#include \n" "int main(void) {\n" " int res = syscall(__NR_close_range, STDERR_FILENO + 1, INT_MAX, 0);\n" " return res < 0;\n" "}\n" }, { "HAVE_F_MAXFD", "F_MAXFD defined for fcntl.", "DEFINES_EVERYTHING", NULL, NULL, "#include \n" "#include \n" "int main(void) {\n" " int res = fcntl(0, F_MAXFD);\n" " return res < 0;\n" "}\n" }, }; static void c12r_err(int eval, const char *fmt, ...) { int err_errno = errno; va_list ap; fprintf(stderr, "%s: ", progname); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, ": %s\n", strerror(err_errno)); exit(eval); } static void c12r_errx(int eval, const char *fmt, ...) { va_list ap; fprintf(stderr, "%s: ", progname); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); exit(eval); } static void start_test(const char *what, const char *why) { if (like_a_libtool) { printf("%s%s... ", what, why); fflush(stdout); } } static void end_test(bool result) { if (like_a_libtool) printf("%s\n", result ? "yes" : "no"); } static size_t fcopy(FILE *fsrc, FILE *fdst) { char buffer[BUFSIZ]; size_t rsize, wsize; size_t copied = 0; while ((rsize = fread(buffer, 1, BUFSIZ, fsrc)) > 0) { wsize = fwrite(buffer, 1, rsize, fdst); copied += wsize; if (wsize != rsize) break; } return copied; } static char *grab_stream(FILE *file) { size_t max, ret, size = 0; char *buffer; max = BUFSIZ; buffer = malloc(max); while ((ret = fread(buffer+size, 1, max - size, file)) == max - size) { size += ret; buffer = realloc(buffer, max *= 2); } size += ret; if (ferror(file)) c12r_err(EXIT_TROUBLE_RUNNING, "reading from command"); buffer[size] = '\0'; return buffer; } static char *run(const char *cmd, int *exitstatus) { static const char redir[] = " 2>&1"; size_t cmdlen; char *cmdredir; FILE *cmdout; char *ret; cmdlen = strlen(cmd); cmdredir = malloc(cmdlen + sizeof(redir)); memcpy(cmdredir, cmd, cmdlen); memcpy(cmdredir + cmdlen, redir, sizeof(redir)); cmdout = popen(cmdredir, "r"); if (!cmdout) c12r_err(EXIT_TROUBLE_RUNNING, "popen \"%s\"", cmdredir); free(cmdredir); ret = grab_stream(cmdout); *exitstatus = pclose(cmdout); return ret; } static char *connect_args(const char *argv[], const char *outflag, const char *files) { unsigned int i; char *ret; size_t len = strlen(outflag) + strlen(files) + 1; for (i = 1; argv[i]; i++) len += 1 + strlen(argv[i]); ret = malloc(len); len = 0; for (i = 1; argv[i]; i++) { strcpy(ret + len, argv[i]); len += strlen(argv[i]); if (argv[i+1] || *outflag) ret[len++] = ' '; } strcpy(ret + len, outflag); len += strlen(outflag); strcpy(ret + len, files); return ret; } static struct test *find_test(const char *name) { unsigned int i; for (i = 0; tests[i].name; i++) { if (strcmp(tests[i].name, name) == 0) return &tests[i]; } c12r_errx(EXIT_BAD_TEST, "Unknown test %s", name); abort(); } #define PRE_BOILERPLATE "/* Test program generated by configurator. */\n" #define MAIN_START_BOILERPLATE \ "int main(int argc, char *argv[]) {\n" \ " (void)argc;\n" \ " (void)argv;\n" #define USE_FUNC_BOILERPLATE "(void)func;\n" #define MAIN_BODY_BOILERPLATE "return 0;\n" #define MAIN_END_BOILERPLATE "}\n" static bool run_test(const char *cmd, const char *wrapper, struct test *test) { char *output, *newcmd; FILE *outf; int status; if (test->done) return test->answer; if (test->depends) { size_t len; const char *deps = test->depends; char *dep; /* Space-separated dependencies, could be ! for inverse. */ while ((len = strcspn(deps, " ")) != 0) { bool positive = true; if (deps[len]) { dep = strdup(deps); dep[len] = '\0'; } else { dep = (char *)deps; } if (dep[0] == '!') { dep++; positive = false; } if (run_test(cmd, wrapper, find_test(dep)) != positive) { test->answer = false; test->done = true; return test->answer; } if (deps[len]) free(dep); deps += len; deps += strspn(deps, " "); } } outf = fopen(INPUT_FILE, verbose > 1 ? "w+" : "w"); if (!outf) c12r_err(EXIT_TROUBLE_RUNNING, "creating %s", INPUT_FILE); fprintf(outf, "%s", PRE_BOILERPLATE); if (strstr(test->style, "INSIDE_MAIN")) { fprintf(outf, "%s", MAIN_START_BOILERPLATE); fprintf(outf, "%s", test->fragment); fprintf(outf, "%s", MAIN_END_BOILERPLATE); } else if (strstr(test->style, "OUTSIDE_MAIN")) { fprintf(outf, "%s", test->fragment); fprintf(outf, "%s", MAIN_START_BOILERPLATE); fprintf(outf, "%s", MAIN_BODY_BOILERPLATE); fprintf(outf, "%s", MAIN_END_BOILERPLATE); } else if (strstr(test->style, "DEFINES_FUNC")) { fprintf(outf, "%s", test->fragment); fprintf(outf, "%s", MAIN_START_BOILERPLATE); fprintf(outf, "%s", USE_FUNC_BOILERPLATE); fprintf(outf, "%s", MAIN_BODY_BOILERPLATE); fprintf(outf, "%s", MAIN_END_BOILERPLATE); } else if (strstr(test->style, "DEFINES_EVERYTHING")) { fprintf(outf, "%s", test->fragment); } else c12r_errx(EXIT_BAD_TEST, "Unknown style for test %s: %s", test->name, test->style); if (verbose > 1) { fseek(outf, 0, SEEK_SET); fcopy(outf, stdout); } fclose(outf); newcmd = strdup(cmd); if (test->flags) { newcmd = realloc(newcmd, strlen(newcmd) + strlen(" ") + strlen(test->flags) + 1); strcat(newcmd, " "); strcat(newcmd, test->flags); if (verbose > 1) printf("Extra flags line: %s", newcmd); } if (test->link) { newcmd = realloc(newcmd, strlen(newcmd) + strlen(" ") + strlen(test->link) + 1); strcat(newcmd, " "); strcat(newcmd, test->link); if (verbose > 1) printf("Extra link line: %s", newcmd); } start_test("checking for ", test->desc); output = run(newcmd, &status); free(newcmd); if (status != 0 || strstr(output, "warning")) { if (verbose) printf("Compile %s for %s, status %i: %s\n", status ? "fail" : "warning", test->name, status, output); if (strstr(test->style, "EXECUTE") && !strstr(test->style, "MAY_NOT_COMPILE")) c12r_errx(EXIT_BAD_TEST, "Test for %s did not compile:\n%s", test->name, output); test->answer = false; free(output); } else { /* Compile succeeded. */ free(output); /* We run INSIDE_MAIN tests for sanity checking. */ if (strstr(test->style, "EXECUTE") || strstr(test->style, "INSIDE_MAIN")) { char *runcmd = malloc(strlen(wrapper) + strlen(" ." DIR_SEP OUTPUT_FILE) + 1); strcpy(runcmd, wrapper); strcat(runcmd, " ." DIR_SEP OUTPUT_FILE); output = run(runcmd, &status); free(runcmd); if (!strstr(test->style, "EXECUTE") && status != 0) c12r_errx(EXIT_BAD_TEST, "Test for %s failed with %i:\n%s", test->name, status, output); if (verbose && status) printf("%s exited %i\n", test->name, status); free(output); } test->answer = (status == 0); } test->done = true; end_test(test->answer); if (test->answer && test->overrides) { struct test *override = find_test(test->overrides); override->done = true; override->answer = true; } return test->answer; } static char *any_field(char **fieldname) { char buf[1000]; for (;;) { char *p, *eq; if (!fgets(buf, sizeof(buf), stdin)) return NULL; p = buf; /* Ignore whitespace, lines starting with # */ while (*p == ' ' || *p == '\t') p++; if (*p == '#' || *p == '\n') continue; eq = strchr(p, '='); if (!eq) c12r_errx(EXIT_BAD_INPUT, "no = in line: %s", p); *eq = '\0'; *fieldname = strdup(p); p = eq + 1; if (strlen(p) && p[strlen(p)-1] == '\n') p[strlen(p)-1] = '\0'; return strdup(p); } } static char *read_field(const char *name, bool compulsory) { char *fieldname, *value; value = any_field(&fieldname); if (!value) { if (!compulsory) return NULL; c12r_errx(EXIT_BAD_INPUT, "Could not read field %s", name); } if (strcmp(fieldname, name) != 0) c12r_errx(EXIT_BAD_INPUT, "Expected field %s not %s", name, fieldname); return value; } /* Test descriptions from stdin: * Lines starting with # or whitespace-only are ignored. * * First three non-ignored lines must be: * var= * desc= * style=OUTSIDE_MAIN DEFINES_FUNC INSIDE_MAIN DEFINES_EVERYTHING EXECUTE MAY_NOT_COMPILE * * Followed by optional lines: * depends= * link= * flags= * overrides= * * Finally a code line, either: * code= OR * code= * * * * And looks like this next comment: */ /*END*/ static bool read_test(struct test *test) { char *field, *value; char buf[1000]; memset(test, 0, sizeof(*test)); test->name = read_field("var", false); if (!test->name) return false; test->desc = read_field("desc", true); test->style = read_field("style", true); /* Read any optional fields. */ while ((value = any_field(&field)) != NULL) { if (strcmp(field, "depends") == 0) test->depends = value; else if (strcmp(field, "link") == 0) test->link = value; else if (strcmp(field, "flags") == 0) test->flags = value; else if (strcmp(field, "overrides") == 0) test->overrides = value; else if (strcmp(field, "code") == 0) break; else c12r_errx(EXIT_BAD_INPUT, "Unknown field %s in %s", field, test->name); } if (!value) c12r_errx(EXIT_BAD_INPUT, "Missing code in %s", test->name); if (strlen(value) == 0) { /* Multiline program, read to END comment */ while (fgets(buf, sizeof(buf), stdin) != 0) { size_t n; if (strncmp(buf, "/*END*/", 7) == 0) break; n = strlen(value); value = realloc(value, n + strlen(buf) + 1); strcpy(value + n, buf); n += strlen(buf); } } test->fragment = value; return true; } static void read_tests(size_t num_tests) { while (read_test(tests + num_tests)) { num_tests++; tests = realloc(tests, (num_tests + 1) * sizeof(tests[0])); tests[num_tests].name = NULL; } } int main(int argc, const char *argv[]) { char *cmd; unsigned int i; const char *default_args[] = { "", DEFAULT_COMPILER, DEFAULT_FLAGS, NULL }; const char *outflag = DEFAULT_OUTPUT_EXE_FLAG; const char *configurator_cc = NULL; const char *wrapper = ""; const char *orig_cc; const char *varfile = NULL; const char *headerfile = NULL; bool extra_tests = false; FILE *outf; if (argc > 0) progname = argv[0]; while (argc > 1) { if (strcmp(argv[1], "--help") == 0) { printf("Usage: configurator [-v] [--var-file=] [-O] [--configurator-cc=] [--wrapper=] [--autotools-style] [--extra-tests] [ ...]\n" " will have \" \" appended\n" "Default: %s %s %s\n", DEFAULT_COMPILER, DEFAULT_FLAGS, DEFAULT_OUTPUT_EXE_FLAG); exit(0); } if (strncmp(argv[1], "-O", 2) == 0) { argc--; argv++; outflag = argv[1] + 2; if (!*outflag) { fprintf(stderr, "%s: option requires an argument -- O\n", argv[0]); exit(EXIT_BAD_USAGE); } } else if (strcmp(argv[1], "-v") == 0) { argc--; argv++; verbose++; } else if (strcmp(argv[1], "-vv") == 0) { argc--; argv++; verbose += 2; } else if (strncmp(argv[1], "--configurator-cc=", 18) == 0) { configurator_cc = argv[1] + 18; argc--; argv++; } else if (strncmp(argv[1], "--wrapper=", 10) == 0) { wrapper = argv[1] + 10; argc--; argv++; } else if (strncmp(argv[1], "--var-file=", 11) == 0) { varfile = argv[1] + 11; argc--; argv++; } else if (strcmp(argv[1], "--autotools-style") == 0) { like_a_libtool = true; argc--; argv++; } else if (strncmp(argv[1], "--header-file=", 14) == 0) { headerfile = argv[1] + 14; argc--; argv++; } else if (strcmp(argv[1], "--extra-tests") == 0) { extra_tests = true; argc--; argv++; } else if (strcmp(argv[1], "--") == 0) { break; } else if (argv[1][0] == '-') { c12r_errx(EXIT_BAD_USAGE, "Unknown option %s", argv[1]); } else { break; } } if (argc == 1) argv = default_args; /* Copy with NULL entry at end */ tests = calloc(sizeof(base_tests)/sizeof(base_tests[0]) + 1, sizeof(base_tests[0])); memcpy(tests, base_tests, sizeof(base_tests)); if (extra_tests) read_tests(sizeof(base_tests)/sizeof(base_tests[0])); orig_cc = argv[1]; if (configurator_cc) argv[1] = configurator_cc; cmd = connect_args(argv, outflag, OUTPUT_FILE " " INPUT_FILE); if (like_a_libtool) { start_test("Making autoconf users comfortable", ""); sleep(1); end_test(1); } for (i = 0; tests[i].name; i++) run_test(cmd, wrapper, &tests[i]); free(cmd); remove(OUTPUT_FILE); remove(INPUT_FILE); if (varfile) { FILE *vars; if (strcmp(varfile, "-") == 0) vars = stdout; else { start_test("Writing variables to ", varfile); vars = fopen(varfile, "a"); if (!vars) c12r_err(EXIT_TROUBLE_RUNNING, "Could not open %s", varfile); } for (i = 0; tests[i].name; i++) fprintf(vars, "%s=%u\n", tests[i].name, tests[i].answer); if (vars != stdout) { if (fclose(vars) != 0) c12r_err(EXIT_TROUBLE_RUNNING, "Closing %s", varfile); end_test(1); } } if (headerfile) { start_test("Writing header to ", headerfile); outf = fopen(headerfile, "w"); if (!outf) c12r_err(EXIT_TROUBLE_RUNNING, "Could not open %s", headerfile); } else outf = stdout; fprintf(outf, "/* Generated by CCAN configurator */\n" "#ifndef CCAN_CONFIG_H\n" "#define CCAN_CONFIG_H\n"); fprintf(outf, "#ifndef _GNU_SOURCE\n"); fprintf(outf, "#define _GNU_SOURCE /* Always use GNU extensions. */\n"); fprintf(outf, "#endif\n"); fprintf(outf, "#define CCAN_COMPILER \"%s\"\n", orig_cc); cmd = connect_args(argv + 1, "", ""); fprintf(outf, "#define CCAN_CFLAGS \"%s\"\n", cmd); free(cmd); fprintf(outf, "#define CCAN_OUTPUT_EXE_CFLAG \"%s\"\n\n", outflag); /* This one implies "#include . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fabs, sin, M_PI, acos, cos, etc #include // for fprintf, FILE #include // for free #include // for memcpy, memset #include "hkl-macros-private.h" // for hkl_assert, HKL_MALLOC #include "hkl-matrix-private.h" // for _HklMatrix #include "hkl-quaternion-private.h" // for _HklQuaternion #include "hkl-vector-private.h" // for HklQuaternion, HklVector, etc #include "hkl.h" // for HklMatrix, HKL_EPSILON, etc /* public */ /** * hkl_quaternion_dup: (skip) * @self: * * * * Returns: **/ HklQuaternion *hkl_quaternion_dup(const HklQuaternion* self) { HklQuaternion *dup = g_new(HklQuaternion, 1); *dup = *self; return dup; } /** * hkl_quaternion_free: (skip) * @self: * * **/ void hkl_quaternion_free(HklQuaternion *self) { if(!self) return; free(self); } /** * hkl_quaternion_init: * @self: the #HklQuaternion to initialize * @a: the 1st element value * @b: the 2nd element value * @c: the 3rd element value * @d: the 4th element value * * initialize the four elements of an #HklQuaternion **/ void hkl_quaternion_init(HklQuaternion *self, double a, double b, double c, double d) { self->data[0] = a; self->data[1] = b; self->data[2] = c; self->data[3] = d; } /** * hkl_quaternion_fprintf: * @file: the file to send the #HklQuaternion into * @self: the #HklQuaternion to write into the file stream. * * print an #HklQuaternion into a FILE stream **/ void hkl_quaternion_fprintf(FILE *file, HklQuaternion const *self) { double const *Q; Q = self->data; fprintf(file, "<%f, %f, %f, %f>", Q[0], Q[1], Q[2], Q[3]); } /** * hkl_quaternion_init_from_vector: * @self: the #HklQuaternion to set * @v: the #HklVector used to set the self #HklQuaternion * * initialize an #HklQuaternion from an #HklVector **/ void hkl_quaternion_init_from_vector(HklQuaternion *self, HklVector const *v) { self->data[0] = 0; memcpy(&self->data[1], &v->data[0], sizeof(v->data)); } /** * hkl_quaternion_init_from_angle_and_axe: * @self: the #HklQuaternion to set * @angle: the angles of the rotation * @v: the axe of rotation * * initialize an #HklQuaternion from a vector and a angle. **/ void hkl_quaternion_init_from_angle_and_axe(HklQuaternion *self, double angle, HklVector const *v) { double norm; double c; double s; /* check that parameters are ok. */ norm = hkl_vector_norm2(v); c = cos(angle / 2.); s = sin(angle / 2.) / norm; self->data[0] = c; self->data[1] = s * v->data[0]; self->data[2] = s * v->data[1]; self->data[3] = s * v->data[2]; } /** * hkl_quaternion_cmp: * @self: the first #HklQuaternion * @q: the second #HklQuaternion * * compare two #HklQuaternion. * * Returns: #TRUE if both are equal, #FALSE otherwise. **/ int hkl_quaternion_cmp(HklQuaternion const *self, HklQuaternion const *q) { unsigned int i; for (i=0;i<4;i++) if ( fabs(self->data[i] - q->data[i]) > HKL_EPSILON ) return FALSE; return TRUE; } /** * hkl_quaternion_minus_quaternion: * @self: the #HklQuaternion to modify. * @q: the #HklQuaternion to substract * * substract two #HklQuaternions * Todo: test **/ void hkl_quaternion_minus_quaternion(HklQuaternion *self, const HklQuaternion *q) { unsigned int i; for (i=0;i<4;i++) self->data[i] -= q->data[i]; } /** * hkl_quaternion_times_quaternion: * @self: the #HklQuaternion to modify * @q: the #HklQuaternion to multiply by * * multiply two quaternions **/ void hkl_quaternion_times_quaternion(HklQuaternion *self, const HklQuaternion *q) { HklQuaternion Tmp; double *Q; Tmp = *self; Q = Tmp.data; if (self == q){ self->data[0] = Q[0]*Q[0] - Q[1]*Q[1] - Q[2]*Q[2] - Q[3]*Q[3]; self->data[1] = Q[0]*Q[1] + Q[1]*Q[0] + Q[2]*Q[3] - Q[3]*Q[2]; self->data[2] = Q[0]*Q[2] - Q[1]*Q[3] + Q[2]*Q[0] + Q[3]*Q[1]; self->data[3] = Q[0]*Q[3] + Q[1]*Q[2] - Q[2]*Q[1] + Q[3]*Q[0]; }else{ double const *Q1 = q->data; self->data[0] = Q[0]*Q1[0] - Q[1]*Q1[1] - Q[2]*Q1[2] - Q[3]*Q1[3]; self->data[1] = Q[0]*Q1[1] + Q[1]*Q1[0] + Q[2]*Q1[3] - Q[3]*Q1[2]; self->data[2] = Q[0]*Q1[2] - Q[1]*Q1[3] + Q[2]*Q1[0] + Q[3]*Q1[1]; self->data[3] = Q[0]*Q1[3] + Q[1]*Q1[2] - Q[2]*Q1[1] + Q[3]*Q1[0]; } } /** * hkl_quaternion_norm2: * @self: the quaternion use to compute the norm * * compute the norm2 of an #HklQuaternion * * Returns: the self #hklquaternion norm **/ double hkl_quaternion_norm2(const HklQuaternion *self) { double sum2 = 0; unsigned int i; for (i=0;i<4;i++) sum2 += self->data[i] *self->data[i]; return sqrt(sum2); } /** * hkl_quaternion_conjugate: * @self: the #HklQuaternion to conjugate * * compute the conjugate of a quaternion **/ void hkl_quaternion_conjugate(HklQuaternion *self) { unsigned int i; for (i=1;i<4;i++) self->data[i] = -self->data[i]; } /** * hkl_quaternion_to_matrix: * @self: the #HklQuaternion use to compute the #HklMatrix * @m: (out caller-allocates): the #HklMatrix return. * * Compute the rotation matrix of a Quaternion. * * compute the rotation matrix corresponding to the unitary quaternion. * \f$ q = a + b \cdot i + c \cdot j + d \cdot k \f$ * * \f$ * \left( * \begin{array}{ccc} * a^2+b^2-c^2-d^2 & 2bc-2ad & 2ac+2bd\\ * 2ad+2bc & a^2-b^2+c^2-d^2 & 2cd-2ab\\ * 2bd-2ac & 2ab+2cd & a^2-b^2-c^2+d^2 * \end{array} * \right) * \f$ * Todo: optimize */ void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m) { double const *Q; /* check that parameters are ok. */ hkl_assert(fabs(hkl_quaternion_norm2(self) - 1) < HKL_EPSILON); Q = self->data; m->data[0][0] = Q[0]*Q[0] + Q[1]*Q[1] - Q[2]*Q[2] - Q[3]*Q[3]; m->data[0][1] = 2 * (Q[1]*Q[2] - Q[0]*Q[3]); m->data[0][2] = 2 * (Q[0]*Q[2] + Q[1]*Q[3]); m->data[1][0] = 2 * (Q[0]*Q[3] + Q[1]*Q[2]); m->data[1][1] = Q[0]*Q[0] - Q[1]*Q[1] + Q[2]*Q[2] - Q[3]*Q[3]; m->data[1][2] = 2 * (Q[2]*Q[3] - Q[0]*Q[1]); m->data[2][0] = 2 * (Q[1]*Q[3] - Q[0]*Q[2]); m->data[2][1] = 2 * (Q[0]*Q[1] + Q[2]*Q[3]); m->data[2][2] = Q[0]*Q[0] - Q[1]*Q[1] - Q[2]*Q[2] + Q[3]*Q[3]; } /** * hkl_quaternion_to_angle_and_axe: * @self: The #HklQuaternion use to compute the angle and the roation axis. * @angle: the returned angle of the rotation. * @v: the returned axis of the rotation. * * compute the axe and angle of the unitary quaternion angle [-pi, pi] * if q is the (1, 0, 0, 0) quaternion return the (0,0,0) axe and a 0 angle */ void hkl_quaternion_to_angle_and_axe(HklQuaternion const *self, double *angle, HklVector *v) { double angle_2; double cos_angle_2; double sin_angle_2; /* check that parameters are ok. (norm must be equal to 1) */ hkl_assert(fabs(hkl_quaternion_norm2(self) - 1) < HKL_EPSILON); /* compute the angle */ cos_angle_2 = self->data[0]; angle_2 = acos(cos_angle_2); *angle = 2 *angle_2; /* we want an angle between -pi, pi */ if (*angle > M_PI) *angle -= 2 *M_PI; /* compute the axe */ sin_angle_2 = sin(angle_2); if (fabs(sin_angle_2) > HKL_EPSILON) { /* compute the axe using the vector part of the unitary quaterninon */ memcpy(v->data, &self->data[1], sizeof(v->data)); hkl_vector_div_double(v, sin_angle_2); } else { *angle = 0; memset(v->data, 0, sizeof(v->data)); } } hkl-5.1.7/hkl/hkl-engine-petra3-p09-eh2.c0000664000175000017500000002302214677222567016526 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" #define MU "mu" #define OMEGA "omega" #define CHI "chi" #define PHI "phi" #define DELTA "delta" #define GAMMA "gamma" /********/ /* mode */ /********/ static HklMode *zaxis_alpha_fixed() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + alpha-fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *zaxis_beta_fixed() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {MU, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + beta-fixed", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /* zaxis + alpha=beta */ static int _reflectivity(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double gamma = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = mu - gamma; return GSL_SUCCESS; } static const HklFunction reflectivity = { .function = _reflectivity, .size = 4, }; static HklMode *zaxis_alpha_eq_beta() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {MU, OMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&reflectivity}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis + alpha=beta", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /* 4-circles bissecting horizontal */ static int _bissector_horizontal(const gsl_vector *x, void *params, gsl_vector *f) { const double omega = x->data[0]; const double delta = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = delta - 2 * fmod(omega, M_PI); return GSL_SUCCESS; } static const HklFunction bissector_horizontal = { .function = _bissector_horizontal, .size = 4, }; static HklMode *fourc_bissector_horizontal() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&bissector_horizontal}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles bissecting horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_omega_horizontal() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {CHI, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant omega horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_chi_horizontal() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant chi horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *fourc_constant_phi_horizontal() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, CHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("4-circles constant phi horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_mu() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {MU, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector mu", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_omega() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector omega", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_chi() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {CHI, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector chi", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_phi() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static const char *axes_w[] = {PHI, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector phi", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /**********************/ /* pseudo axis engine */ /**********************/ static HklEngine *hkl_engine_petra3_p09_eh2_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = zaxis_alpha_fixed(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, zaxis_beta_fixed()); hkl_engine_add_mode(self, zaxis_alpha_eq_beta()); hkl_engine_add_mode(self, fourc_bissector_horizontal()); hkl_engine_add_mode(self, fourc_constant_omega_horizontal()); hkl_engine_add_mode(self, fourc_constant_chi_horizontal()); hkl_engine_add_mode(self, fourc_constant_phi_horizontal()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, lifting_detector_omega()); hkl_engine_add_mode(self, lifting_detector_chi()); hkl_engine_add_mode(self, lifting_detector_phi()); return self; } /******************/ /* PETRA3 P09 EH2 */ /******************/ #define HKL_GEOMETRY_TYPE_PETRA3_P09_EH2_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" MU "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" OMEGA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" MU "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" DELTA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" GAMMA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_petra3_p09_eh2_axes[] = {MU, OMEGA, CHI, PHI, DELTA, GAMMA}; static HklGeometry *hkl_geometry_new_petra3_p09_eh2(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 0, 1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_petra3_p09_eh2(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_petra3_p09_eh2_hkl_new(self); return self; } REGISTER_DIFFRACTOMETER(petra3_p09_eh2, "PETRA3 P09 EH2", HKL_GEOMETRY_TYPE_PETRA3_P09_EH2_DESCRIPTION); hkl-5.1.7/hkl/hkl-detector-private.h0000664000175000017500000000320314677222567016270 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_DETECTOR_PRIVATE_H__ #define __HKL_DETECTOR_PRIVATE_H__ #include // for size_t #include "hkl-geometry-private.h" // for HklHolder #include "hkl-vector-private.h" // for HklVector #include "hkl.h" // for HklDetector, etc G_BEGIN_DECLS struct _HklDetector { size_t idx; HklHolder const *holder; }; extern HklDetector *hkl_detector_new(void); extern void hkl_detector_attach_to_holder(HklDetector *self, HklHolder const *holder) HKL_ARG_NONNULL(1, 2); extern int hkl_detector_compute_kf(HklDetector const *self, HklGeometry *g, HklVector *kf) HKL_ARG_NONNULL(1, 2, 3); G_END_DECLS #endif /* __HKL_DETECTOR_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-engine-petra3-p23-6c.c0000664000175000017500000003064114677222567016361 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2018 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" // for hkl_engine_tth2_new, etc #define OMEGA_T "omega_t" #define MU "mu" #define OMEGA "omega" #define CHI "chi" #define PHI "phi" #define GAMMA "gamma" #define DELTA "delta" /***********************/ /* numerical functions */ /***********************/ static int _bissector_horizontal_func(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double omega = x->data[1]; const double gamma = x->data[4]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } static const HklFunction bissector_horizontal_func = { .function = _bissector_horizontal_func, .size = 5, }; static int _bissector_vertical_func(const gsl_vector *x, void *params, gsl_vector *f) { const double omega = x->data[0]; const double delta = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = delta - 2 * fmod(omega, M_PI); return GSL_SUCCESS; } static const HklFunction bissector_vertical_func = { .function = _bissector_vertical_func, .size = 4, }; /************/ /* mode hkl */ /************/ static HklMode *bissector_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&bissector_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_omega_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {CHI, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_chi_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_phi(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {PHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_omega(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_mu(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *bissector_horizontal(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, OMEGA, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&bissector_horizontal_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_horizontal(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant_vertical(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklParameter parameters[] = { PSI_CONSTANT_PARAMETERS(1, 0, 0, 0) }; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *psi_constant_horizontal(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {OMEGA, CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *constant_mu_horizontal(void) { static const char* axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {CHI, PHI, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklEngine *hkl_engine_petra3_p23_6c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega_vertical()); hkl_engine_add_mode(self, constant_chi_vertical()); hkl_engine_add_mode(self, constant_phi_vertical()); hkl_engine_add_mode(self, lifting_detector_phi()); hkl_engine_add_mode(self, lifting_detector_omega()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, double_diffraction_vertical()); hkl_engine_add_mode(self, bissector_horizontal()); hkl_engine_add_mode(self, double_diffraction_horizontal()); hkl_engine_add_mode(self, psi_constant_vertical()); hkl_engine_add_mode(self, psi_constant_horizontal()); hkl_engine_add_mode(self, constant_mu_horizontal()); return self; } /************/ /* mode psi */ /************/ static HklMode* psi_vertical() { static const char *axes_r[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_petra3_p23_6c_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_petra3_p23_6c_incidence_new, P99_PROTECT({OMEGA_T, MU, OMEGA, CHI, PHI}), surface_parameters_z); REGISTER_READONLY_EMERGENCE(hkl_engine_petra3_p23_6c_emergence_new, P99_PROTECT({OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}), surface_parameters_z); /*******/ /* E6C */ /*******/ #define HKL_GEOMETRY_PETRA3_P23_6C_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 6 axes for the sample\n" \ "\n" \ " + **" OMEGA_T "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" MU "** : rotating around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`-\\vec{x}` direction (-1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`\\vec{y}` direction (0, 1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" GAMMA "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_petra3_p23_6c_axes[] = {OMEGA_T, MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_petra3_p23_6c(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, OMEGA_T, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, MU, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, -1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_petra3_p23_6c(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_petra3_p23_6c_hkl_new(self); hkl_engine_petra3_p23_6c_psi_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_petra3_p23_6c_incidence_new(self); hkl_engine_petra3_p23_6c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(petra3_p23_6c, "PETRA3 P23 6C", HKL_GEOMETRY_PETRA3_P23_6C_DESCRIPTION); hkl-5.1.7/hkl/hkl-engine-template.c0000664000175000017500000001727214677222567016073 0ustar00piccapicca/* COPY THIS FILE INTO hkl-engine-xxx.c and fill the XXX */ /* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * Copyright (C) 2014 XXX copyright owner XXX * * Authors: Picca Frédéric-Emmanuel * XXXX */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" /**************/ /* Axes names */ /**************/ #define MU "mu" #define OMEGA "omega" #define CHI "chi" #define PHI "phi" #define GAMMA "gamma" #define DELTA "delta" /************/ /* Geometry */ /************/ #define HKL_GEOMETRY_EULERIAN6C_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" MU "** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" CHI "** : rotating around the :math:`\\vec{x}` direction (1, 0, 0)\n" \ " + **" PHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_eulerian6C_axes[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_eulerian6C(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, CHI, 1, 0, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } /*********/ /* Modes */ /*********/ /* exemple of a lowlevel gsl function use to compute an hkl bissector * vertical mode for an E6C diffractometer */ static int _bissector_vertical_func(const gsl_vector *x, void *params, gsl_vector *f) { const double omega = x->data[0]; const double tth = x->data[3]; /* this method check that all the x values are valid. Sometime * the computation produce NAN values. In that case * computation is skipped */ CHECK_NAN(x->data, x->size); /* do the hkl computation which fill the f[0..2] values */ RUBh_minus_Q(x->data, params, f->data); /* here a mode specific equation requiered due to the number * of axes to fit (4 in this case) */ f->data[3] = tth - 2 * fmod(omega,M_PI); return GSL_SUCCESS; } /* Declare the number of axes expected by the gsl low level * function. So during the HklMode configuration there is a runtime * check which ensure that the right number of axes are given to the * HklMode. */ static const HklFunction bissector_vertical_func = { .function = _bissector_vertical_func, .size = 4, }; /* exemple of a mode with 4 axes. In that case you need the previously * defined function */ static HklMode *bissector_vertical(void) { /* axes_r is the axes list requiered to compute the pseudo axes values */ static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; /* axes_w is the axes list use when you write the pseudo axes * values. You move only thoses axes when you use this * mode. */ static const char* axes_w[] = {OMEGA, CHI, PHI, DELTA}; /* here a list of functions use to solve the mode */ static const HklFunction *functions[] = {&bissector_vertical_func}; /* here just the description of the mode: name, axes_r, axes_w, functions */ static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; /* instantiate a new mode */ return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /* here an exemple of a three axes hkl mode, a convenience function is * provided to do the computation (RUBh_minus_Q_func). This funtion * takes only three axes. So writing a generic hkl mode with only * three axes is really simple */ static HklMode *constant_omega_vertical(void) { static const char* axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char* axes_w[] = {CHI, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode* psi_vertical() { static const char *axes_r[] = {MU, OMEGA, CHI, PHI, GAMMA, DELTA}; static const char *axes_w[] = {OMEGA, CHI, PHI, DELTA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_template_incidence_new, P99_PROTECT({MU, OMEGA, CHI, PHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_template_emergence_new, P99_PROTECT({MU, OMEGA, CHI, PHI, GAMMA, DELTA}), surface_parameters_y); /***********/ /* Engines */ /***********/ static HklEngine *hkl_engine_e6c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega_vertical()); return self; } static HklEngine *hkl_engine_e6c_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /***************/ /* Engine list */ /***************/ static HklEngineList *hkl_engine_list_new_eulerian6C(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_e6c_hkl_new(self); hkl_engine_e6c_psi_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_template_incidence_new(self); hkl_engine_template_emergence_new(self); return self; } /* Register the diffractometer into the factory */ REGISTER_DIFFRACTOMETER(eulerian6C, "E6C", HKL_GEOMETRY_EULERIAN6C_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-common-tth.c0000664000175000017500000001242514677222567017257 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include // for ::GSL_SUCCESS #include // for gsl_sf_angle_restrict_symm #include // for gsl_isnan #include // for gsl_vector #include // for sin, atan2, signbit #include // for free #include "hkl-detector-private.h" // for hkl_detector_compute_kf #include "hkl-geometry-private.h" // for _HklGeometry, HklHolder #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-pseudoaxis-auto-private.h" // for HklFunction, etc #include "hkl-pseudoaxis-common-tth-private.h" // for HklEngineQ2, etc #include "hkl-pseudoaxis-private.h" // for _HklEngine, etc #include "hkl-source-private.h" // for hkl_source_compute_ki, etc #include "hkl-vector-private.h" // for HklVector, hkl_vector_angle, etc #include "hkl.h" // for HklEngine, HklParameter, etc #include "hkl/ccan/array_size/array_size.h" // for ARRAY_SIZE #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_item /********/ /* tth2 */ /********/ struct _HklEngineTth2 { HklEngine engine; HklParameter *tth; HklParameter *alpha; }; static void _tth2(HklGeometry *geometry, HklDetector *detector, double *tth, double *alpha) { HklVector kf, ki; static HklVector x = { .data = {1, 0, 0}, }; ki = hkl_geometry_ki_get(geometry); kf = hkl_geometry_kf_get(geometry, detector); *tth = hkl_vector_angle(&ki, &kf); /* project kf on the x plan to compute alpha */ hkl_vector_project_on_plan(&kf, &x); *alpha = atan2(kf.data[2], kf.data[1]); } static int _tth2_func(const gsl_vector *x, void *params, gsl_vector *f) { HklEngine *engine = params; const HklEngineTth2 *engine_tth2 = container_of(engine, HklEngineTth2, engine); double tth; double alpha; CHECK_NAN(x->data, x->size); /* update the workspace from x */ set_geometry_axes(engine, x->data); _tth2(engine->geometry, engine->detector, &tth, &alpha); f->data[0] = engine_tth2->tth->_value - tth; f->data[1] = engine_tth2->alpha->_value - alpha; return GSL_SUCCESS; } static const HklFunction tth2_func = { .function = _tth2_func, .size = 2, }; static int get_tth2_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklEngineTth2 *engine_tth2 = container_of(engine, HklEngineTth2, engine); _tth2(geometry, detector, &engine_tth2->tth->_value, &engine_tth2->alpha->_value); return TRUE; } static HklMode *mode_tth2(void) { static const char* axes[] = {"gamma", "delta"}; static const HklFunction *functions[] = {&tth2_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("tth2", axes, axes, functions), }; static const HklModeOperations operations = { HKL_MODE_OPERATIONS_AUTO_DEFAULTS, .get = get_tth2_real, }; return hkl_mode_auto_new(&info, &operations, TRUE); } static void hkl_engine_tth2_free_real(HklEngine *base) { HklEngineTth2 *self = container_of(base, HklEngineTth2, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_tth2_new(HklEngineList *engines) { HklEngineTth2 *self = g_new(HklEngineTth2, 1); HklMode *mode; static const HklParameter tth = { HKL_PARAMETER_DEFAULTS_ANGLE, .name="tth", .description = "the $2 \\theta$ angle", }; static const HklParameter alpha = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "alpha", .description = "angle of the projection of $\\vec{q}$ on the $yOz$ plan and $\\vec{y}$", }; static const HklParameter *pseudo_axes[] = {&tth, &alpha}; static const HklEngineInfo info = { HKL_ENGINE_INFO("tth2", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES), }; static const HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_tth2_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->tth = register_pseudo_axis(&self->engine, engines, &tth); self->alpha = register_pseudo_axis(&self->engine, engines, &alpha); /* tth2 [default] */ mode = mode_tth2(); hkl_engine_add_mode(&self->engine, mode); hkl_engine_mode_set(&self->engine, mode); return &self->engine; } hkl-5.1.7/hkl/hkl-type-builtins.c0000664000175000017500000000563315144640476015614 0ustar00piccapicca /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #undef HKL_DISABLE_DEPRECATED #define HKL_ENABLE_BROKEN #include #include "hkl.h" #include "hkl-type-builtins.h" /* enumerations from "../hkl.h" */ GType hkl_unit_enum_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { HKL_UNIT_DEFAULT, "HKL_UNIT_DEFAULT", "default" }, { HKL_UNIT_USER, "HKL_UNIT_USER", "user" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("HklUnitEnum"), values); } return etype; } GType hkl_detector_type_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { HKL_DETECTOR_TYPE_0D, "HKL_DETECTOR_TYPE_0D", "0d" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("HklDetectorType"), values); } return etype; } GType hkl_engine_capabilities_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { HKL_ENGINE_CAPABILITIES_READABLE, "HKL_ENGINE_CAPABILITIES_READABLE", "readable" }, { HKL_ENGINE_CAPABILITIES_WRITABLE, "HKL_ENGINE_CAPABILITIES_WRITABLE", "writable" }, { HKL_ENGINE_CAPABILITIES_INITIALIZABLE, "HKL_ENGINE_CAPABILITIES_INITIALIZABLE", "initializable" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("HklEngineCapabilities"), values); } return etype; } GType hkl_engine_axis_names_get_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { HKL_ENGINE_AXIS_NAMES_GET_READ, "HKL_ENGINE_AXIS_NAMES_GET_READ", "read" }, { HKL_ENGINE_AXIS_NAMES_GET_WRITE, "HKL_ENGINE_AXIS_NAMES_GET_WRITE", "write" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("HklEngineAxisNamesGet"), values); } return etype; } GType hkl_engine_dependencies_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { HKL_ENGINE_DEPENDENCIES_AXES, "HKL_ENGINE_DEPENDENCIES_AXES", "axes" }, { HKL_ENGINE_DEPENDENCIES_ENERGY, "HKL_ENGINE_DEPENDENCIES_ENERGY", "energy" }, { HKL_ENGINE_DEPENDENCIES_SAMPLE, "HKL_ENGINE_DEPENDENCIES_SAMPLE", "sample" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("HklEngineDependencies"), values); } return etype; } #define __HKL_TYPE_BUILTINS_C__ /* Generated data ends here */ hkl-5.1.7/hkl/Makefile.in0000664000175000017500000034732715144640451014133 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_INTROSPECTION_TRUE@am__append_1 = \ @HAVE_INTROSPECTION_TRUE@ hkl-types.c \ @HAVE_INTROSPECTION_TRUE@ hkl-types.h \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.c \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.h \ @HAVE_INTROSPECTION_TRUE@ hkl-binding.c \ @HAVE_INTROSPECTION_TRUE@ hkl-binding-private.h @HAVE_INTROSPECTION_TRUE@am__append_2 = $(GOBJECT_LIBS) @HAVE_INTROSPECTION_TRUE@am__append_3 = $(GOBJECT_CFLAGS) @HAVE_INTROSPECTION_TRUE@am__append_4 = Hkl-@VMAJ@.0.gir subdir = hkl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" \ "$(DESTDIR)$(typelibsdir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) libdummy_la_LIBADD = am_libdummy_la_OBJECTS = hkl-engine-template.lo libdummy_la_OBJECTS = $(am_libdummy_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libhkl_private_la_LIBADD = am__libhkl_private_la_SOURCES_DIST = hkl-axis.c hkl-detector.c \ hkl-detector-factory.c hkl-factory.c hkl-geometry.c \ hkl-interval.c hkl-lattice.c hkl-macros.c hkl-matrix.c \ hkl-parameter.c hkl-pseudoaxis.c hkl-pseudoaxis-auto.c \ hkl-pseudoaxis-common.c hkl-pseudoaxis-common-eulerians.c \ hkl-pseudoaxis-common-hkl.c hkl-pseudoaxis-common-psi.c \ hkl-pseudoaxis-common-q.c hkl-pseudoaxis-common-readonly.c \ hkl-pseudoaxis-common-tth.c hkl-engine-2c.c \ hkl-engine-aps-04id-polar.c hkl-engine-e4c.c hkl-engine-k4c.c \ hkl-engine-e6c.c hkl-engine-esrf-bm28-psic.c \ hkl-engine-esrf-id01-psic.c hkl-engine-k6c.c \ hkl-engine-petra3-p08-lisa.c hkl-engine-petra3-p09-eh2.c \ hkl-engine-petra3-p23-4c.c hkl-engine-petra3-p23-6c.c \ hkl-engine-soleil-cristal-k4c.c \ hkl-engine-soleil-nanoscopium-robot.c \ hkl-engine-soleil-sirius-turret.c hkl-engine-soleil-sixs-med.c \ hkl-engine-zaxis.c hkl-quaternion.c hkl-sample.c hkl-source.c \ hkl-trajectory.c hkl-unit.c hkl-vector.c hkl-axis-private.h \ hkl-detector-private.h hkl-factory-private.h \ hkl-geometry-private.h hkl-interval-private.h \ hkl-lattice-private.h hkl-macros-private.h \ hkl-matrix-private.h hkl-parameter-private.h \ hkl-pseudoaxis-private.h hkl-pseudoaxis-auto-private.h \ hkl-pseudoaxis-common-private.h \ hkl-pseudoaxis-common-eulerians-private.h \ hkl-pseudoaxis-common-hkl-private.h \ hkl-pseudoaxis-common-psi-private.h \ hkl-pseudoaxis-common-q-private.h \ hkl-pseudoaxis-common-readonly-private.h \ hkl-pseudoaxis-common-tth-private.h hkl-quaternion-private.h \ hkl-sample-private.h hkl-source-private.h \ hkl-trajectory-private.h hkl-unit-private.h \ hkl-vector-private.h hkl-types.c hkl-types.h \ hkl-type-builtins.c hkl-type-builtins.h hkl-binding.c \ hkl-binding-private.h am__objects_1 = hkl-axis.lo hkl-detector.lo hkl-detector-factory.lo \ hkl-factory.lo hkl-geometry.lo hkl-interval.lo hkl-lattice.lo \ hkl-macros.lo hkl-matrix.lo hkl-parameter.lo hkl-pseudoaxis.lo \ hkl-pseudoaxis-auto.lo hkl-pseudoaxis-common.lo \ hkl-pseudoaxis-common-eulerians.lo \ hkl-pseudoaxis-common-hkl.lo hkl-pseudoaxis-common-psi.lo \ hkl-pseudoaxis-common-q.lo hkl-pseudoaxis-common-readonly.lo \ hkl-pseudoaxis-common-tth.lo hkl-engine-2c.lo \ hkl-engine-aps-04id-polar.lo hkl-engine-e4c.lo \ hkl-engine-k4c.lo hkl-engine-e6c.lo \ hkl-engine-esrf-bm28-psic.lo hkl-engine-esrf-id01-psic.lo \ hkl-engine-k6c.lo hkl-engine-petra3-p08-lisa.lo \ hkl-engine-petra3-p09-eh2.lo hkl-engine-petra3-p23-4c.lo \ hkl-engine-petra3-p23-6c.lo hkl-engine-soleil-cristal-k4c.lo \ hkl-engine-soleil-nanoscopium-robot.lo \ hkl-engine-soleil-sirius-turret.lo \ hkl-engine-soleil-sixs-med.lo hkl-engine-zaxis.lo \ hkl-quaternion.lo hkl-sample.lo hkl-source.lo \ hkl-trajectory.lo hkl-unit.lo hkl-vector.lo am__objects_2 = @HAVE_INTROSPECTION_TRUE@am__objects_3 = hkl-types.lo \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.lo hkl-binding.lo am_libhkl_private_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) libhkl_private_la_OBJECTS = $(am_libhkl_private_la_OBJECTS) libhkl_la_LIBADD = am__libhkl_la_SOURCES_DIST = hkl-axis.c hkl-detector.c \ hkl-detector-factory.c hkl-factory.c hkl-geometry.c \ hkl-interval.c hkl-lattice.c hkl-macros.c hkl-matrix.c \ hkl-parameter.c hkl-pseudoaxis.c hkl-pseudoaxis-auto.c \ hkl-pseudoaxis-common.c hkl-pseudoaxis-common-eulerians.c \ hkl-pseudoaxis-common-hkl.c hkl-pseudoaxis-common-psi.c \ hkl-pseudoaxis-common-q.c hkl-pseudoaxis-common-readonly.c \ hkl-pseudoaxis-common-tth.c hkl-engine-2c.c \ hkl-engine-aps-04id-polar.c hkl-engine-e4c.c hkl-engine-k4c.c \ hkl-engine-e6c.c hkl-engine-esrf-bm28-psic.c \ hkl-engine-esrf-id01-psic.c hkl-engine-k6c.c \ hkl-engine-petra3-p08-lisa.c hkl-engine-petra3-p09-eh2.c \ hkl-engine-petra3-p23-4c.c hkl-engine-petra3-p23-6c.c \ hkl-engine-soleil-cristal-k4c.c \ hkl-engine-soleil-nanoscopium-robot.c \ hkl-engine-soleil-sirius-turret.c hkl-engine-soleil-sixs-med.c \ hkl-engine-zaxis.c hkl-quaternion.c hkl-sample.c hkl-source.c \ hkl-trajectory.c hkl-unit.c hkl-vector.c hkl-axis-private.h \ hkl-detector-private.h hkl-factory-private.h \ hkl-geometry-private.h hkl-interval-private.h \ hkl-lattice-private.h hkl-macros-private.h \ hkl-matrix-private.h hkl-parameter-private.h \ hkl-pseudoaxis-private.h hkl-pseudoaxis-auto-private.h \ hkl-pseudoaxis-common-private.h \ hkl-pseudoaxis-common-eulerians-private.h \ hkl-pseudoaxis-common-hkl-private.h \ hkl-pseudoaxis-common-psi-private.h \ hkl-pseudoaxis-common-q-private.h \ hkl-pseudoaxis-common-readonly-private.h \ hkl-pseudoaxis-common-tth-private.h hkl-quaternion-private.h \ hkl-sample-private.h hkl-source-private.h \ hkl-trajectory-private.h hkl-unit-private.h \ hkl-vector-private.h hkl-types.c hkl-types.h \ hkl-type-builtins.c hkl-type-builtins.h hkl-binding.c \ hkl-binding-private.h am__objects_4 = libhkl_la-hkl-axis.lo libhkl_la-hkl-detector.lo \ libhkl_la-hkl-detector-factory.lo libhkl_la-hkl-factory.lo \ libhkl_la-hkl-geometry.lo libhkl_la-hkl-interval.lo \ libhkl_la-hkl-lattice.lo libhkl_la-hkl-macros.lo \ libhkl_la-hkl-matrix.lo libhkl_la-hkl-parameter.lo \ libhkl_la-hkl-pseudoaxis.lo libhkl_la-hkl-pseudoaxis-auto.lo \ libhkl_la-hkl-pseudoaxis-common.lo \ libhkl_la-hkl-pseudoaxis-common-eulerians.lo \ libhkl_la-hkl-pseudoaxis-common-hkl.lo \ libhkl_la-hkl-pseudoaxis-common-psi.lo \ libhkl_la-hkl-pseudoaxis-common-q.lo \ libhkl_la-hkl-pseudoaxis-common-readonly.lo \ libhkl_la-hkl-pseudoaxis-common-tth.lo \ libhkl_la-hkl-engine-2c.lo \ libhkl_la-hkl-engine-aps-04id-polar.lo \ libhkl_la-hkl-engine-e4c.lo libhkl_la-hkl-engine-k4c.lo \ libhkl_la-hkl-engine-e6c.lo \ libhkl_la-hkl-engine-esrf-bm28-psic.lo \ libhkl_la-hkl-engine-esrf-id01-psic.lo \ libhkl_la-hkl-engine-k6c.lo \ libhkl_la-hkl-engine-petra3-p08-lisa.lo \ libhkl_la-hkl-engine-petra3-p09-eh2.lo \ libhkl_la-hkl-engine-petra3-p23-4c.lo \ libhkl_la-hkl-engine-petra3-p23-6c.lo \ libhkl_la-hkl-engine-soleil-cristal-k4c.lo \ libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo \ libhkl_la-hkl-engine-soleil-sirius-turret.lo \ libhkl_la-hkl-engine-soleil-sixs-med.lo \ libhkl_la-hkl-engine-zaxis.lo libhkl_la-hkl-quaternion.lo \ libhkl_la-hkl-sample.lo libhkl_la-hkl-source.lo \ libhkl_la-hkl-trajectory.lo libhkl_la-hkl-unit.lo \ libhkl_la-hkl-vector.lo @HAVE_INTROSPECTION_TRUE@am__objects_5 = libhkl_la-hkl-types.lo \ @HAVE_INTROSPECTION_TRUE@ libhkl_la-hkl-type-builtins.lo \ @HAVE_INTROSPECTION_TRUE@ libhkl_la-hkl-binding.lo am__objects_6 = $(am__objects_4) $(am__objects_2) $(am__objects_5) am_libhkl_la_OBJECTS = $(am__objects_6) libhkl_la_OBJECTS = $(am_libhkl_la_OBJECTS) libhkl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhkl_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl-axis.Plo \ ./$(DEPDIR)/hkl-binding.Plo \ ./$(DEPDIR)/hkl-detector-factory.Plo \ ./$(DEPDIR)/hkl-detector.Plo ./$(DEPDIR)/hkl-engine-2c.Plo \ ./$(DEPDIR)/hkl-engine-aps-04id-polar.Plo \ ./$(DEPDIR)/hkl-engine-e4c.Plo ./$(DEPDIR)/hkl-engine-e6c.Plo \ ./$(DEPDIR)/hkl-engine-esrf-bm28-psic.Plo \ ./$(DEPDIR)/hkl-engine-esrf-id01-psic.Plo \ ./$(DEPDIR)/hkl-engine-k4c.Plo ./$(DEPDIR)/hkl-engine-k6c.Plo \ ./$(DEPDIR)/hkl-engine-petra3-p08-lisa.Plo \ ./$(DEPDIR)/hkl-engine-petra3-p09-eh2.Plo \ ./$(DEPDIR)/hkl-engine-petra3-p23-4c.Plo \ ./$(DEPDIR)/hkl-engine-petra3-p23-6c.Plo \ ./$(DEPDIR)/hkl-engine-soleil-cristal-k4c.Plo \ ./$(DEPDIR)/hkl-engine-soleil-nanoscopium-robot.Plo \ ./$(DEPDIR)/hkl-engine-soleil-sirius-turret.Plo \ ./$(DEPDIR)/hkl-engine-soleil-sixs-med.Plo \ ./$(DEPDIR)/hkl-engine-template.Plo \ ./$(DEPDIR)/hkl-engine-zaxis.Plo ./$(DEPDIR)/hkl-factory.Plo \ ./$(DEPDIR)/hkl-geometry.Plo ./$(DEPDIR)/hkl-interval.Plo \ ./$(DEPDIR)/hkl-lattice.Plo ./$(DEPDIR)/hkl-macros.Plo \ ./$(DEPDIR)/hkl-matrix.Plo ./$(DEPDIR)/hkl-parameter.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-auto.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-eulerians.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-hkl.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-psi.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-q.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-readonly.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common-tth.Plo \ ./$(DEPDIR)/hkl-pseudoaxis-common.Plo \ ./$(DEPDIR)/hkl-pseudoaxis.Plo ./$(DEPDIR)/hkl-quaternion.Plo \ ./$(DEPDIR)/hkl-sample.Plo ./$(DEPDIR)/hkl-source.Plo \ ./$(DEPDIR)/hkl-trajectory.Plo \ ./$(DEPDIR)/hkl-type-builtins.Plo ./$(DEPDIR)/hkl-types.Plo \ ./$(DEPDIR)/hkl-unit.Plo ./$(DEPDIR)/hkl-vector.Plo \ ./$(DEPDIR)/libhkl_la-hkl-axis.Plo \ ./$(DEPDIR)/libhkl_la-hkl-binding.Plo \ ./$(DEPDIR)/libhkl_la-hkl-detector-factory.Plo \ ./$(DEPDIR)/libhkl_la-hkl-detector.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-2c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-e4c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-e6c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-k4c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-k6c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Plo \ ./$(DEPDIR)/libhkl_la-hkl-engine-zaxis.Plo \ ./$(DEPDIR)/libhkl_la-hkl-factory.Plo \ ./$(DEPDIR)/libhkl_la-hkl-geometry.Plo \ ./$(DEPDIR)/libhkl_la-hkl-interval.Plo \ ./$(DEPDIR)/libhkl_la-hkl-lattice.Plo \ ./$(DEPDIR)/libhkl_la-hkl-macros.Plo \ ./$(DEPDIR)/libhkl_la-hkl-matrix.Plo \ ./$(DEPDIR)/libhkl_la-hkl-parameter.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Plo \ ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis.Plo \ ./$(DEPDIR)/libhkl_la-hkl-quaternion.Plo \ ./$(DEPDIR)/libhkl_la-hkl-sample.Plo \ ./$(DEPDIR)/libhkl_la-hkl-source.Plo \ ./$(DEPDIR)/libhkl_la-hkl-trajectory.Plo \ ./$(DEPDIR)/libhkl_la-hkl-type-builtins.Plo \ ./$(DEPDIR)/libhkl_la-hkl-types.Plo \ ./$(DEPDIR)/libhkl_la-hkl-unit.Plo \ ./$(DEPDIR)/libhkl_la-hkl-vector.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libdummy_la_SOURCES) $(libhkl_private_la_SOURCES) \ $(libhkl_la_SOURCES) DIST_SOURCES = $(libdummy_la_SOURCES) \ $(am__libhkl_private_la_SOURCES_DIST) \ $(am__libhkl_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(gir_DATA) $(typelibs_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = ccan . api2 AM_CFLAGS = -Wno-initializer-overrides -Wno-unused-result \ -DG_LOG_DOMAIN=\"Hkl\" -I$(top_builddir) -I$(top_srcdir) \ $(DATATYPE99_CFLAGS) $(GLIB_CFLAGS) $(GSL_CFLAGS) \ $(am__append_3) AM_LDFLAGS = -no-undefined -version-info 5:0:0 ccan/libccan.la \ $(GLIB_LIBS) $(GSL_LIBS) $(am__append_2) hkl_c_sources = \ hkl-axis.c \ hkl-detector.c \ hkl-detector-factory.c \ hkl-factory.c \ hkl-geometry.c \ hkl-interval.c \ hkl-lattice.c \ hkl-macros.c \ hkl-matrix.c \ hkl-parameter.c \ hkl-pseudoaxis.c \ hkl-pseudoaxis-auto.c \ hkl-pseudoaxis-common.c \ hkl-pseudoaxis-common-eulerians.c \ hkl-pseudoaxis-common-hkl.c \ hkl-pseudoaxis-common-psi.c \ hkl-pseudoaxis-common-q.c \ hkl-pseudoaxis-common-readonly.c \ hkl-pseudoaxis-common-tth.c \ hkl-engine-2c.c \ hkl-engine-aps-04id-polar.c \ hkl-engine-e4c.c \ hkl-engine-k4c.c \ hkl-engine-e6c.c \ hkl-engine-esrf-bm28-psic.c \ hkl-engine-esrf-id01-psic.c \ hkl-engine-k6c.c \ hkl-engine-petra3-p08-lisa.c \ hkl-engine-petra3-p09-eh2.c \ hkl-engine-petra3-p23-4c.c \ hkl-engine-petra3-p23-6c.c \ hkl-engine-soleil-cristal-k4c.c \ hkl-engine-soleil-nanoscopium-robot.c \ hkl-engine-soleil-sirius-turret.c \ hkl-engine-soleil-sixs-med.c \ hkl-engine-zaxis.c \ hkl-quaternion.c \ hkl-sample.c \ hkl-source.c \ hkl-trajectory.c \ hkl-unit.c \ hkl-vector.c hkl_public_h_sources = ../hkl.h hkl_private_h_sources = \ hkl-axis-private.h \ hkl-detector-private.h \ hkl-factory-private.h \ hkl-geometry-private.h \ hkl-interval-private.h \ hkl-lattice-private.h \ hkl-macros-private.h \ hkl-matrix-private.h \ hkl-parameter-private.h \ hkl-pseudoaxis-private.h \ hkl-pseudoaxis-auto-private.h \ hkl-pseudoaxis-common-private.h \ hkl-pseudoaxis-common-eulerians-private.h \ hkl-pseudoaxis-common-hkl-private.h \ hkl-pseudoaxis-common-psi-private.h \ hkl-pseudoaxis-common-q-private.h \ hkl-pseudoaxis-common-readonly-private.h \ hkl-pseudoaxis-common-tth-private.h \ hkl-quaternion-private.h \ hkl-sample-private.h \ hkl-source-private.h \ hkl-trajectory-private.h \ hkl-unit-private.h \ hkl-vector-private.h # just compile the template diffractometer to be sure that it is valid # just a private hkl library with all symbols visiles for hkl"d and binoculars noinst_LTLIBRARIES = libdummy.la libhkl-private.la libdummy_la_SOURCES = hkl-engine-template.c libhkl_private_la_SOURCES = $(hkl_c_sources) $(hkl_private_h_sources) \ $(am__append_1) # the hkl library lib_LTLIBRARIES = libhkl.la libhkl_la_SOURCES = $(libhkl_private_la_SOURCES) libhkl_la_CFLAGS = $(AM_CFLAGS) -fvisibility=hidden INTROSPECTION_GIRS = $(am__append_4) INTROSPECTION_SCANNER_ARGS = \ --add-include-path=$(srcdir) \ --add-include-path=. \ --warn-all INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. @HAVE_INTROSPECTION_TRUE@introspection_files = \ @HAVE_INTROSPECTION_TRUE@ ../hkl.h \ @HAVE_INTROSPECTION_TRUE@ hkl-binding-private.h \ @HAVE_INTROSPECTION_TRUE@ hkl-types.h \ @HAVE_INTROSPECTION_TRUE@ hkl-vector.c \ @HAVE_INTROSPECTION_TRUE@ hkl-matrix.c \ @HAVE_INTROSPECTION_TRUE@ hkl-quaternion.c \ @HAVE_INTROSPECTION_TRUE@ hkl-parameter.c \ @HAVE_INTROSPECTION_TRUE@ hkl-axis.c \ @HAVE_INTROSPECTION_TRUE@ hkl-geometry.c \ @HAVE_INTROSPECTION_TRUE@ hkl-detector.c \ @HAVE_INTROSPECTION_TRUE@ hkl-detector-factory.c \ @HAVE_INTROSPECTION_TRUE@ hkl-lattice.c \ @HAVE_INTROSPECTION_TRUE@ hkl-sample.c \ @HAVE_INTROSPECTION_TRUE@ hkl-pseudoaxis.c \ @HAVE_INTROSPECTION_TRUE@ hkl-factory.c \ @HAVE_INTROSPECTION_TRUE@ hkl-binding.c \ @HAVE_INTROSPECTION_TRUE@ hkl-types.c \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.c \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.h @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_NAMESPACE = Hkl @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_VERSION = @VMAJ@.0 @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_LIBS = libhkl.la @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_FILES = $(introspection_files) @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_PACKAGES = gobject-2.0 @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_CFLAGS = $(INCLUDES) $(AM_CPPFLAGS) $(AM_CFLAGS) @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_EXPORT_PACKAGES = hkl-@VMAJ@.0 @HAVE_INTROSPECTION_TRUE@Hkl_@VMAJ@_0_gir_SCANNERFLAGS = --warn-all --c-include='hkl.h' @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0 @HAVE_INTROSPECTION_TRUE@gir_DATA = $(INTROSPECTION_GIRS) @HAVE_INTROSPECTION_TRUE@typelibsdir = $(libdir)/girepository-1.0 @HAVE_INTROSPECTION_TRUE@typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) @HAVE_INTROSPECTION_TRUE@EXTRA_DIST = \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.h.template \ @HAVE_INTROSPECTION_TRUE@ hkl-type-builtins.c.template @HAVE_INTROSPECTION_TRUE@CLEANFILES = $(gir_DATA) $(typelibs_DATA) stamp-hkl-type-builtins.h hkl-type-builtins.h hkl-type-builtins.c all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hkl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu hkl/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -$(am__rm_f) $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libdummy.la: $(libdummy_la_OBJECTS) $(libdummy_la_DEPENDENCIES) $(EXTRA_libdummy_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libdummy_la_OBJECTS) $(libdummy_la_LIBADD) $(LIBS) libhkl-private.la: $(libhkl_private_la_OBJECTS) $(libhkl_private_la_DEPENDENCIES) $(EXTRA_libhkl_private_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libhkl_private_la_OBJECTS) $(libhkl_private_la_LIBADD) $(LIBS) libhkl.la: $(libhkl_la_OBJECTS) $(libhkl_la_DEPENDENCIES) $(EXTRA_libhkl_la_DEPENDENCIES) $(AM_V_CCLD)$(libhkl_la_LINK) -rpath $(libdir) $(libhkl_la_OBJECTS) $(libhkl_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-axis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-detector-factory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-detector.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-2c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-aps-04id-polar.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-e4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-e6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-esrf-bm28-psic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-esrf-id01-psic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-k4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-k6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-petra3-p08-lisa.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-petra3-p09-eh2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-petra3-p23-4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-petra3-p23-6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-soleil-cristal-k4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-soleil-nanoscopium-robot.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-soleil-sirius-turret.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-soleil-sixs-med.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-template.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-engine-zaxis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-factory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-geometry.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-interval.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-lattice.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-macros.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-matrix.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-parameter.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-auto.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-eulerians.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-hkl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-psi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-q.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-readonly.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common-tth.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis-common.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-pseudoaxis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-quaternion.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-sample.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-source.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-trajectory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-type-builtins.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-types.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-unit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-vector.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-axis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-binding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-detector-factory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-detector.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-2c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-e4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-e6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-k4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-k6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-engine-zaxis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-factory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-geometry.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-interval.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-lattice.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-macros.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-matrix.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-parameter.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-pseudoaxis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-quaternion.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-sample.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-source.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-trajectory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-type-builtins.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-types.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-unit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhkl_la-hkl-vector.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libhkl_la-hkl-axis.lo: hkl-axis.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-axis.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-axis.Tpo -c -o libhkl_la-hkl-axis.lo `test -f 'hkl-axis.c' || echo '$(srcdir)/'`hkl-axis.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-axis.Tpo $(DEPDIR)/libhkl_la-hkl-axis.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-axis.c' object='libhkl_la-hkl-axis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-axis.lo `test -f 'hkl-axis.c' || echo '$(srcdir)/'`hkl-axis.c libhkl_la-hkl-detector.lo: hkl-detector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-detector.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-detector.Tpo -c -o libhkl_la-hkl-detector.lo `test -f 'hkl-detector.c' || echo '$(srcdir)/'`hkl-detector.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-detector.Tpo $(DEPDIR)/libhkl_la-hkl-detector.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-detector.c' object='libhkl_la-hkl-detector.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-detector.lo `test -f 'hkl-detector.c' || echo '$(srcdir)/'`hkl-detector.c libhkl_la-hkl-detector-factory.lo: hkl-detector-factory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-detector-factory.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-detector-factory.Tpo -c -o libhkl_la-hkl-detector-factory.lo `test -f 'hkl-detector-factory.c' || echo '$(srcdir)/'`hkl-detector-factory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-detector-factory.Tpo $(DEPDIR)/libhkl_la-hkl-detector-factory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-detector-factory.c' object='libhkl_la-hkl-detector-factory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-detector-factory.lo `test -f 'hkl-detector-factory.c' || echo '$(srcdir)/'`hkl-detector-factory.c libhkl_la-hkl-factory.lo: hkl-factory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-factory.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-factory.Tpo -c -o libhkl_la-hkl-factory.lo `test -f 'hkl-factory.c' || echo '$(srcdir)/'`hkl-factory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-factory.Tpo $(DEPDIR)/libhkl_la-hkl-factory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-factory.c' object='libhkl_la-hkl-factory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-factory.lo `test -f 'hkl-factory.c' || echo '$(srcdir)/'`hkl-factory.c libhkl_la-hkl-geometry.lo: hkl-geometry.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-geometry.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-geometry.Tpo -c -o libhkl_la-hkl-geometry.lo `test -f 'hkl-geometry.c' || echo '$(srcdir)/'`hkl-geometry.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-geometry.Tpo $(DEPDIR)/libhkl_la-hkl-geometry.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-geometry.c' object='libhkl_la-hkl-geometry.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-geometry.lo `test -f 'hkl-geometry.c' || echo '$(srcdir)/'`hkl-geometry.c libhkl_la-hkl-interval.lo: hkl-interval.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-interval.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-interval.Tpo -c -o libhkl_la-hkl-interval.lo `test -f 'hkl-interval.c' || echo '$(srcdir)/'`hkl-interval.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-interval.Tpo $(DEPDIR)/libhkl_la-hkl-interval.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-interval.c' object='libhkl_la-hkl-interval.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-interval.lo `test -f 'hkl-interval.c' || echo '$(srcdir)/'`hkl-interval.c libhkl_la-hkl-lattice.lo: hkl-lattice.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-lattice.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-lattice.Tpo -c -o libhkl_la-hkl-lattice.lo `test -f 'hkl-lattice.c' || echo '$(srcdir)/'`hkl-lattice.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-lattice.Tpo $(DEPDIR)/libhkl_la-hkl-lattice.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-lattice.c' object='libhkl_la-hkl-lattice.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-lattice.lo `test -f 'hkl-lattice.c' || echo '$(srcdir)/'`hkl-lattice.c libhkl_la-hkl-macros.lo: hkl-macros.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-macros.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-macros.Tpo -c -o libhkl_la-hkl-macros.lo `test -f 'hkl-macros.c' || echo '$(srcdir)/'`hkl-macros.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-macros.Tpo $(DEPDIR)/libhkl_la-hkl-macros.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-macros.c' object='libhkl_la-hkl-macros.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-macros.lo `test -f 'hkl-macros.c' || echo '$(srcdir)/'`hkl-macros.c libhkl_la-hkl-matrix.lo: hkl-matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-matrix.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-matrix.Tpo -c -o libhkl_la-hkl-matrix.lo `test -f 'hkl-matrix.c' || echo '$(srcdir)/'`hkl-matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-matrix.Tpo $(DEPDIR)/libhkl_la-hkl-matrix.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-matrix.c' object='libhkl_la-hkl-matrix.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-matrix.lo `test -f 'hkl-matrix.c' || echo '$(srcdir)/'`hkl-matrix.c libhkl_la-hkl-parameter.lo: hkl-parameter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-parameter.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-parameter.Tpo -c -o libhkl_la-hkl-parameter.lo `test -f 'hkl-parameter.c' || echo '$(srcdir)/'`hkl-parameter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-parameter.Tpo $(DEPDIR)/libhkl_la-hkl-parameter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-parameter.c' object='libhkl_la-hkl-parameter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-parameter.lo `test -f 'hkl-parameter.c' || echo '$(srcdir)/'`hkl-parameter.c libhkl_la-hkl-pseudoaxis.lo: hkl-pseudoaxis.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis.Tpo -c -o libhkl_la-hkl-pseudoaxis.lo `test -f 'hkl-pseudoaxis.c' || echo '$(srcdir)/'`hkl-pseudoaxis.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis.c' object='libhkl_la-hkl-pseudoaxis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis.lo `test -f 'hkl-pseudoaxis.c' || echo '$(srcdir)/'`hkl-pseudoaxis.c libhkl_la-hkl-pseudoaxis-auto.lo: hkl-pseudoaxis-auto.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-auto.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Tpo -c -o libhkl_la-hkl-pseudoaxis-auto.lo `test -f 'hkl-pseudoaxis-auto.c' || echo '$(srcdir)/'`hkl-pseudoaxis-auto.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-auto.c' object='libhkl_la-hkl-pseudoaxis-auto.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-auto.lo `test -f 'hkl-pseudoaxis-auto.c' || echo '$(srcdir)/'`hkl-pseudoaxis-auto.c libhkl_la-hkl-pseudoaxis-common.lo: hkl-pseudoaxis-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Tpo -c -o libhkl_la-hkl-pseudoaxis-common.lo `test -f 'hkl-pseudoaxis-common.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common.c' object='libhkl_la-hkl-pseudoaxis-common.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common.lo `test -f 'hkl-pseudoaxis-common.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common.c libhkl_la-hkl-pseudoaxis-common-eulerians.lo: hkl-pseudoaxis-common-eulerians.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-eulerians.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-eulerians.lo `test -f 'hkl-pseudoaxis-common-eulerians.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-eulerians.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-eulerians.c' object='libhkl_la-hkl-pseudoaxis-common-eulerians.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-eulerians.lo `test -f 'hkl-pseudoaxis-common-eulerians.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-eulerians.c libhkl_la-hkl-pseudoaxis-common-hkl.lo: hkl-pseudoaxis-common-hkl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-hkl.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-hkl.lo `test -f 'hkl-pseudoaxis-common-hkl.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-hkl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-hkl.c' object='libhkl_la-hkl-pseudoaxis-common-hkl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-hkl.lo `test -f 'hkl-pseudoaxis-common-hkl.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-hkl.c libhkl_la-hkl-pseudoaxis-common-psi.lo: hkl-pseudoaxis-common-psi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-psi.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-psi.lo `test -f 'hkl-pseudoaxis-common-psi.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-psi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-psi.c' object='libhkl_la-hkl-pseudoaxis-common-psi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-psi.lo `test -f 'hkl-pseudoaxis-common-psi.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-psi.c libhkl_la-hkl-pseudoaxis-common-q.lo: hkl-pseudoaxis-common-q.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-q.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-q.lo `test -f 'hkl-pseudoaxis-common-q.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-q.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-q.c' object='libhkl_la-hkl-pseudoaxis-common-q.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-q.lo `test -f 'hkl-pseudoaxis-common-q.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-q.c libhkl_la-hkl-pseudoaxis-common-readonly.lo: hkl-pseudoaxis-common-readonly.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-readonly.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-readonly.lo `test -f 'hkl-pseudoaxis-common-readonly.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-readonly.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-readonly.c' object='libhkl_la-hkl-pseudoaxis-common-readonly.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-readonly.lo `test -f 'hkl-pseudoaxis-common-readonly.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-readonly.c libhkl_la-hkl-pseudoaxis-common-tth.lo: hkl-pseudoaxis-common-tth.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-pseudoaxis-common-tth.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Tpo -c -o libhkl_la-hkl-pseudoaxis-common-tth.lo `test -f 'hkl-pseudoaxis-common-tth.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-tth.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Tpo $(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-pseudoaxis-common-tth.c' object='libhkl_la-hkl-pseudoaxis-common-tth.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-pseudoaxis-common-tth.lo `test -f 'hkl-pseudoaxis-common-tth.c' || echo '$(srcdir)/'`hkl-pseudoaxis-common-tth.c libhkl_la-hkl-engine-2c.lo: hkl-engine-2c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-2c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-2c.Tpo -c -o libhkl_la-hkl-engine-2c.lo `test -f 'hkl-engine-2c.c' || echo '$(srcdir)/'`hkl-engine-2c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-2c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-2c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-2c.c' object='libhkl_la-hkl-engine-2c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-2c.lo `test -f 'hkl-engine-2c.c' || echo '$(srcdir)/'`hkl-engine-2c.c libhkl_la-hkl-engine-aps-04id-polar.lo: hkl-engine-aps-04id-polar.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-aps-04id-polar.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Tpo -c -o libhkl_la-hkl-engine-aps-04id-polar.lo `test -f 'hkl-engine-aps-04id-polar.c' || echo '$(srcdir)/'`hkl-engine-aps-04id-polar.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Tpo $(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-aps-04id-polar.c' object='libhkl_la-hkl-engine-aps-04id-polar.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-aps-04id-polar.lo `test -f 'hkl-engine-aps-04id-polar.c' || echo '$(srcdir)/'`hkl-engine-aps-04id-polar.c libhkl_la-hkl-engine-e4c.lo: hkl-engine-e4c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-e4c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-e4c.Tpo -c -o libhkl_la-hkl-engine-e4c.lo `test -f 'hkl-engine-e4c.c' || echo '$(srcdir)/'`hkl-engine-e4c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-e4c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-e4c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-e4c.c' object='libhkl_la-hkl-engine-e4c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-e4c.lo `test -f 'hkl-engine-e4c.c' || echo '$(srcdir)/'`hkl-engine-e4c.c libhkl_la-hkl-engine-k4c.lo: hkl-engine-k4c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-k4c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-k4c.Tpo -c -o libhkl_la-hkl-engine-k4c.lo `test -f 'hkl-engine-k4c.c' || echo '$(srcdir)/'`hkl-engine-k4c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-k4c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-k4c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-k4c.c' object='libhkl_la-hkl-engine-k4c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-k4c.lo `test -f 'hkl-engine-k4c.c' || echo '$(srcdir)/'`hkl-engine-k4c.c libhkl_la-hkl-engine-e6c.lo: hkl-engine-e6c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-e6c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-e6c.Tpo -c -o libhkl_la-hkl-engine-e6c.lo `test -f 'hkl-engine-e6c.c' || echo '$(srcdir)/'`hkl-engine-e6c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-e6c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-e6c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-e6c.c' object='libhkl_la-hkl-engine-e6c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-e6c.lo `test -f 'hkl-engine-e6c.c' || echo '$(srcdir)/'`hkl-engine-e6c.c libhkl_la-hkl-engine-esrf-bm28-psic.lo: hkl-engine-esrf-bm28-psic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-esrf-bm28-psic.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Tpo -c -o libhkl_la-hkl-engine-esrf-bm28-psic.lo `test -f 'hkl-engine-esrf-bm28-psic.c' || echo '$(srcdir)/'`hkl-engine-esrf-bm28-psic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Tpo $(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-esrf-bm28-psic.c' object='libhkl_la-hkl-engine-esrf-bm28-psic.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-esrf-bm28-psic.lo `test -f 'hkl-engine-esrf-bm28-psic.c' || echo '$(srcdir)/'`hkl-engine-esrf-bm28-psic.c libhkl_la-hkl-engine-esrf-id01-psic.lo: hkl-engine-esrf-id01-psic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-esrf-id01-psic.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Tpo -c -o libhkl_la-hkl-engine-esrf-id01-psic.lo `test -f 'hkl-engine-esrf-id01-psic.c' || echo '$(srcdir)/'`hkl-engine-esrf-id01-psic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Tpo $(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-esrf-id01-psic.c' object='libhkl_la-hkl-engine-esrf-id01-psic.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-esrf-id01-psic.lo `test -f 'hkl-engine-esrf-id01-psic.c' || echo '$(srcdir)/'`hkl-engine-esrf-id01-psic.c libhkl_la-hkl-engine-k6c.lo: hkl-engine-k6c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-k6c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-k6c.Tpo -c -o libhkl_la-hkl-engine-k6c.lo `test -f 'hkl-engine-k6c.c' || echo '$(srcdir)/'`hkl-engine-k6c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-k6c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-k6c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-k6c.c' object='libhkl_la-hkl-engine-k6c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-k6c.lo `test -f 'hkl-engine-k6c.c' || echo '$(srcdir)/'`hkl-engine-k6c.c libhkl_la-hkl-engine-petra3-p08-lisa.lo: hkl-engine-petra3-p08-lisa.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-petra3-p08-lisa.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Tpo -c -o libhkl_la-hkl-engine-petra3-p08-lisa.lo `test -f 'hkl-engine-petra3-p08-lisa.c' || echo '$(srcdir)/'`hkl-engine-petra3-p08-lisa.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Tpo $(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-petra3-p08-lisa.c' object='libhkl_la-hkl-engine-petra3-p08-lisa.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-petra3-p08-lisa.lo `test -f 'hkl-engine-petra3-p08-lisa.c' || echo '$(srcdir)/'`hkl-engine-petra3-p08-lisa.c libhkl_la-hkl-engine-petra3-p09-eh2.lo: hkl-engine-petra3-p09-eh2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-petra3-p09-eh2.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Tpo -c -o libhkl_la-hkl-engine-petra3-p09-eh2.lo `test -f 'hkl-engine-petra3-p09-eh2.c' || echo '$(srcdir)/'`hkl-engine-petra3-p09-eh2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Tpo $(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-petra3-p09-eh2.c' object='libhkl_la-hkl-engine-petra3-p09-eh2.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-petra3-p09-eh2.lo `test -f 'hkl-engine-petra3-p09-eh2.c' || echo '$(srcdir)/'`hkl-engine-petra3-p09-eh2.c libhkl_la-hkl-engine-petra3-p23-4c.lo: hkl-engine-petra3-p23-4c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-petra3-p23-4c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Tpo -c -o libhkl_la-hkl-engine-petra3-p23-4c.lo `test -f 'hkl-engine-petra3-p23-4c.c' || echo '$(srcdir)/'`hkl-engine-petra3-p23-4c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-petra3-p23-4c.c' object='libhkl_la-hkl-engine-petra3-p23-4c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-petra3-p23-4c.lo `test -f 'hkl-engine-petra3-p23-4c.c' || echo '$(srcdir)/'`hkl-engine-petra3-p23-4c.c libhkl_la-hkl-engine-petra3-p23-6c.lo: hkl-engine-petra3-p23-6c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-petra3-p23-6c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Tpo -c -o libhkl_la-hkl-engine-petra3-p23-6c.lo `test -f 'hkl-engine-petra3-p23-6c.c' || echo '$(srcdir)/'`hkl-engine-petra3-p23-6c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-petra3-p23-6c.c' object='libhkl_la-hkl-engine-petra3-p23-6c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-petra3-p23-6c.lo `test -f 'hkl-engine-petra3-p23-6c.c' || echo '$(srcdir)/'`hkl-engine-petra3-p23-6c.c libhkl_la-hkl-engine-soleil-cristal-k4c.lo: hkl-engine-soleil-cristal-k4c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-soleil-cristal-k4c.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Tpo -c -o libhkl_la-hkl-engine-soleil-cristal-k4c.lo `test -f 'hkl-engine-soleil-cristal-k4c.c' || echo '$(srcdir)/'`hkl-engine-soleil-cristal-k4c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Tpo $(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-soleil-cristal-k4c.c' object='libhkl_la-hkl-engine-soleil-cristal-k4c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-soleil-cristal-k4c.lo `test -f 'hkl-engine-soleil-cristal-k4c.c' || echo '$(srcdir)/'`hkl-engine-soleil-cristal-k4c.c libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo: hkl-engine-soleil-nanoscopium-robot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Tpo -c -o libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo `test -f 'hkl-engine-soleil-nanoscopium-robot.c' || echo '$(srcdir)/'`hkl-engine-soleil-nanoscopium-robot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Tpo $(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-soleil-nanoscopium-robot.c' object='libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-soleil-nanoscopium-robot.lo `test -f 'hkl-engine-soleil-nanoscopium-robot.c' || echo '$(srcdir)/'`hkl-engine-soleil-nanoscopium-robot.c libhkl_la-hkl-engine-soleil-sirius-turret.lo: hkl-engine-soleil-sirius-turret.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-soleil-sirius-turret.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Tpo -c -o libhkl_la-hkl-engine-soleil-sirius-turret.lo `test -f 'hkl-engine-soleil-sirius-turret.c' || echo '$(srcdir)/'`hkl-engine-soleil-sirius-turret.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Tpo $(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-soleil-sirius-turret.c' object='libhkl_la-hkl-engine-soleil-sirius-turret.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-soleil-sirius-turret.lo `test -f 'hkl-engine-soleil-sirius-turret.c' || echo '$(srcdir)/'`hkl-engine-soleil-sirius-turret.c libhkl_la-hkl-engine-soleil-sixs-med.lo: hkl-engine-soleil-sixs-med.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-soleil-sixs-med.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Tpo -c -o libhkl_la-hkl-engine-soleil-sixs-med.lo `test -f 'hkl-engine-soleil-sixs-med.c' || echo '$(srcdir)/'`hkl-engine-soleil-sixs-med.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Tpo $(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-soleil-sixs-med.c' object='libhkl_la-hkl-engine-soleil-sixs-med.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-soleil-sixs-med.lo `test -f 'hkl-engine-soleil-sixs-med.c' || echo '$(srcdir)/'`hkl-engine-soleil-sixs-med.c libhkl_la-hkl-engine-zaxis.lo: hkl-engine-zaxis.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-engine-zaxis.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-engine-zaxis.Tpo -c -o libhkl_la-hkl-engine-zaxis.lo `test -f 'hkl-engine-zaxis.c' || echo '$(srcdir)/'`hkl-engine-zaxis.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-engine-zaxis.Tpo $(DEPDIR)/libhkl_la-hkl-engine-zaxis.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-engine-zaxis.c' object='libhkl_la-hkl-engine-zaxis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-engine-zaxis.lo `test -f 'hkl-engine-zaxis.c' || echo '$(srcdir)/'`hkl-engine-zaxis.c libhkl_la-hkl-quaternion.lo: hkl-quaternion.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-quaternion.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-quaternion.Tpo -c -o libhkl_la-hkl-quaternion.lo `test -f 'hkl-quaternion.c' || echo '$(srcdir)/'`hkl-quaternion.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-quaternion.Tpo $(DEPDIR)/libhkl_la-hkl-quaternion.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-quaternion.c' object='libhkl_la-hkl-quaternion.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-quaternion.lo `test -f 'hkl-quaternion.c' || echo '$(srcdir)/'`hkl-quaternion.c libhkl_la-hkl-sample.lo: hkl-sample.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-sample.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-sample.Tpo -c -o libhkl_la-hkl-sample.lo `test -f 'hkl-sample.c' || echo '$(srcdir)/'`hkl-sample.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-sample.Tpo $(DEPDIR)/libhkl_la-hkl-sample.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-sample.c' object='libhkl_la-hkl-sample.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-sample.lo `test -f 'hkl-sample.c' || echo '$(srcdir)/'`hkl-sample.c libhkl_la-hkl-source.lo: hkl-source.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-source.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-source.Tpo -c -o libhkl_la-hkl-source.lo `test -f 'hkl-source.c' || echo '$(srcdir)/'`hkl-source.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-source.Tpo $(DEPDIR)/libhkl_la-hkl-source.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-source.c' object='libhkl_la-hkl-source.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-source.lo `test -f 'hkl-source.c' || echo '$(srcdir)/'`hkl-source.c libhkl_la-hkl-trajectory.lo: hkl-trajectory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-trajectory.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-trajectory.Tpo -c -o libhkl_la-hkl-trajectory.lo `test -f 'hkl-trajectory.c' || echo '$(srcdir)/'`hkl-trajectory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-trajectory.Tpo $(DEPDIR)/libhkl_la-hkl-trajectory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-trajectory.c' object='libhkl_la-hkl-trajectory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-trajectory.lo `test -f 'hkl-trajectory.c' || echo '$(srcdir)/'`hkl-trajectory.c libhkl_la-hkl-unit.lo: hkl-unit.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-unit.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-unit.Tpo -c -o libhkl_la-hkl-unit.lo `test -f 'hkl-unit.c' || echo '$(srcdir)/'`hkl-unit.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-unit.Tpo $(DEPDIR)/libhkl_la-hkl-unit.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-unit.c' object='libhkl_la-hkl-unit.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-unit.lo `test -f 'hkl-unit.c' || echo '$(srcdir)/'`hkl-unit.c libhkl_la-hkl-vector.lo: hkl-vector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-vector.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-vector.Tpo -c -o libhkl_la-hkl-vector.lo `test -f 'hkl-vector.c' || echo '$(srcdir)/'`hkl-vector.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-vector.Tpo $(DEPDIR)/libhkl_la-hkl-vector.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-vector.c' object='libhkl_la-hkl-vector.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-vector.lo `test -f 'hkl-vector.c' || echo '$(srcdir)/'`hkl-vector.c libhkl_la-hkl-types.lo: hkl-types.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-types.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-types.Tpo -c -o libhkl_la-hkl-types.lo `test -f 'hkl-types.c' || echo '$(srcdir)/'`hkl-types.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-types.Tpo $(DEPDIR)/libhkl_la-hkl-types.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-types.c' object='libhkl_la-hkl-types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-types.lo `test -f 'hkl-types.c' || echo '$(srcdir)/'`hkl-types.c libhkl_la-hkl-type-builtins.lo: hkl-type-builtins.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-type-builtins.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-type-builtins.Tpo -c -o libhkl_la-hkl-type-builtins.lo `test -f 'hkl-type-builtins.c' || echo '$(srcdir)/'`hkl-type-builtins.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-type-builtins.Tpo $(DEPDIR)/libhkl_la-hkl-type-builtins.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-type-builtins.c' object='libhkl_la-hkl-type-builtins.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-type-builtins.lo `test -f 'hkl-type-builtins.c' || echo '$(srcdir)/'`hkl-type-builtins.c libhkl_la-hkl-binding.lo: hkl-binding.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -MT libhkl_la-hkl-binding.lo -MD -MP -MF $(DEPDIR)/libhkl_la-hkl-binding.Tpo -c -o libhkl_la-hkl-binding.lo `test -f 'hkl-binding.c' || echo '$(srcdir)/'`hkl-binding.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhkl_la-hkl-binding.Tpo $(DEPDIR)/libhkl_la-hkl-binding.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hkl-binding.c' object='libhkl_la-hkl-binding.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhkl_la_CFLAGS) $(CFLAGS) -c -o libhkl_la-hkl-binding.lo `test -f 'hkl-binding.c' || echo '$(srcdir)/'`hkl-binding.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-girDATA: $(gir_DATA) @$(NORMAL_INSTALL) @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(girdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(girdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(girdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \ done uninstall-girDATA: @$(NORMAL_UNINSTALL) @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) install-typelibsDATA: $(typelibs_DATA) @$(NORMAL_INSTALL) @list='$(typelibs_DATA)'; test -n "$(typelibsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(typelibsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(typelibsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(typelibsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibsdir)" || exit $$?; \ done uninstall-typelibsDATA: @$(NORMAL_UNINSTALL) @list='$(typelibs_DATA)'; test -n "$(typelibsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(typelibsdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/hkl-axis.Plo -rm -f ./$(DEPDIR)/hkl-binding.Plo -rm -f ./$(DEPDIR)/hkl-detector-factory.Plo -rm -f ./$(DEPDIR)/hkl-detector.Plo -rm -f ./$(DEPDIR)/hkl-engine-2c.Plo -rm -f ./$(DEPDIR)/hkl-engine-aps-04id-polar.Plo -rm -f ./$(DEPDIR)/hkl-engine-e4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-e6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-esrf-bm28-psic.Plo -rm -f ./$(DEPDIR)/hkl-engine-esrf-id01-psic.Plo -rm -f ./$(DEPDIR)/hkl-engine-k4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-k6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p08-lisa.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p09-eh2.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p23-4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p23-6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-cristal-k4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-nanoscopium-robot.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-sirius-turret.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-sixs-med.Plo -rm -f ./$(DEPDIR)/hkl-engine-template.Plo -rm -f ./$(DEPDIR)/hkl-engine-zaxis.Plo -rm -f ./$(DEPDIR)/hkl-factory.Plo -rm -f ./$(DEPDIR)/hkl-geometry.Plo -rm -f ./$(DEPDIR)/hkl-interval.Plo -rm -f ./$(DEPDIR)/hkl-lattice.Plo -rm -f ./$(DEPDIR)/hkl-macros.Plo -rm -f ./$(DEPDIR)/hkl-matrix.Plo -rm -f ./$(DEPDIR)/hkl-parameter.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-auto.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-eulerians.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-hkl.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-psi.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-q.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-readonly.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-tth.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis.Plo -rm -f ./$(DEPDIR)/hkl-quaternion.Plo -rm -f ./$(DEPDIR)/hkl-sample.Plo -rm -f ./$(DEPDIR)/hkl-source.Plo -rm -f ./$(DEPDIR)/hkl-trajectory.Plo -rm -f ./$(DEPDIR)/hkl-type-builtins.Plo -rm -f ./$(DEPDIR)/hkl-types.Plo -rm -f ./$(DEPDIR)/hkl-unit.Plo -rm -f ./$(DEPDIR)/hkl-vector.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-axis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-binding.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-detector-factory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-detector.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-2c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-e4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-e6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-k4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-k6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-zaxis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-factory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-geometry.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-interval.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-lattice.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-macros.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-matrix.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-parameter.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-quaternion.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-sample.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-source.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-trajectory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-type-builtins.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-types.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-unit.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-vector.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-girDATA install-typelibsDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/hkl-axis.Plo -rm -f ./$(DEPDIR)/hkl-binding.Plo -rm -f ./$(DEPDIR)/hkl-detector-factory.Plo -rm -f ./$(DEPDIR)/hkl-detector.Plo -rm -f ./$(DEPDIR)/hkl-engine-2c.Plo -rm -f ./$(DEPDIR)/hkl-engine-aps-04id-polar.Plo -rm -f ./$(DEPDIR)/hkl-engine-e4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-e6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-esrf-bm28-psic.Plo -rm -f ./$(DEPDIR)/hkl-engine-esrf-id01-psic.Plo -rm -f ./$(DEPDIR)/hkl-engine-k4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-k6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p08-lisa.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p09-eh2.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p23-4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-petra3-p23-6c.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-cristal-k4c.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-nanoscopium-robot.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-sirius-turret.Plo -rm -f ./$(DEPDIR)/hkl-engine-soleil-sixs-med.Plo -rm -f ./$(DEPDIR)/hkl-engine-template.Plo -rm -f ./$(DEPDIR)/hkl-engine-zaxis.Plo -rm -f ./$(DEPDIR)/hkl-factory.Plo -rm -f ./$(DEPDIR)/hkl-geometry.Plo -rm -f ./$(DEPDIR)/hkl-interval.Plo -rm -f ./$(DEPDIR)/hkl-lattice.Plo -rm -f ./$(DEPDIR)/hkl-macros.Plo -rm -f ./$(DEPDIR)/hkl-matrix.Plo -rm -f ./$(DEPDIR)/hkl-parameter.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-auto.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-eulerians.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-hkl.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-psi.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-q.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-readonly.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common-tth.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis-common.Plo -rm -f ./$(DEPDIR)/hkl-pseudoaxis.Plo -rm -f ./$(DEPDIR)/hkl-quaternion.Plo -rm -f ./$(DEPDIR)/hkl-sample.Plo -rm -f ./$(DEPDIR)/hkl-source.Plo -rm -f ./$(DEPDIR)/hkl-trajectory.Plo -rm -f ./$(DEPDIR)/hkl-type-builtins.Plo -rm -f ./$(DEPDIR)/hkl-types.Plo -rm -f ./$(DEPDIR)/hkl-unit.Plo -rm -f ./$(DEPDIR)/hkl-vector.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-axis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-binding.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-detector-factory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-detector.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-2c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-aps-04id-polar.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-e4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-e6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-bm28-psic.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-esrf-id01-psic.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-k4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-k6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p08-lisa.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p09-eh2.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-petra3-p23-6c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-cristal-k4c.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-nanoscopium-robot.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sirius-turret.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-soleil-sixs-med.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-engine-zaxis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-factory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-geometry.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-interval.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-lattice.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-macros.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-matrix.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-parameter.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-auto.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-eulerians.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-hkl.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-psi.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-q.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-readonly.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common-tth.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis-common.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-pseudoaxis.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-quaternion.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-sample.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-source.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-trajectory.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-type-builtins.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-types.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-unit.Plo -rm -f ./$(DEPDIR)/libhkl_la-hkl-vector.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \ uninstall-typelibsDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-girDATA install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-typelibsDATA \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-girDATA uninstall-libLTLIBRARIES \ uninstall-typelibsDATA .PRECIOUS: Makefile # introspection -include $(INTROSPECTION_MAKEFILE) @HAVE_INTROSPECTION_TRUE@hkl-type-builtins.h: stamp-hkl-type-builtins.h @HAVE_INTROSPECTION_TRUE@ @true @HAVE_INTROSPECTION_TRUE@stamp-hkl-type-builtins.h: $(hkl_public_h_sources) $(srcdir)/hkl-type-builtins.h.template @HAVE_INTROSPECTION_TRUE@ ( cd $(srcdir) && $(GLIB_MKENUMS) --template hkl-type-builtins.h.template \ @HAVE_INTROSPECTION_TRUE@ $(hkl_public_h_sources) ) >> xgen-gtbh \ @HAVE_INTROSPECTION_TRUE@ && (cmp -s xgen-gtbh hkl-type-builtins.h || cp xgen-gtbh hkl-type-builtins.h ) \ @HAVE_INTROSPECTION_TRUE@ && rm -f xgen-gtbh \ @HAVE_INTROSPECTION_TRUE@ && echo timestamp > $(@F) @HAVE_INTROSPECTION_TRUE@hkl-type-builtins.c: $(hkl_public_h_sources) $(srcdir)/hkl-type-builtins.c.template hkl-type-builtins.h @HAVE_INTROSPECTION_TRUE@ ( cd $(srcdir) && $(GLIB_MKENUMS) --template hkl-type-builtins.c.template \ @HAVE_INTROSPECTION_TRUE@ $(hkl_public_h_sources) ) > xgen-gtbc \ @HAVE_INTROSPECTION_TRUE@ && cp xgen-gtbc hkl-type-builtins.c \ @HAVE_INTROSPECTION_TRUE@ && rm -f xgen-gtbc @HAVE_INTROSPECTION_TRUE@Hkl-@VMAJ@.0.gir: $(INTROSPECTION_SCANNER) libhkl.la Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) # check for includes with iwyu iwyu: @list='$(libhkl_la_SOURCES)';\ for p in $$list; do\ iwyu $(AM_CFLAGS) $$p; \ done; .PHONY: check-syntax iwyu # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/hkl/hkl-source-private.h0000664000175000017500000000353614677222567015770 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_SOURCE_PRIVATE_H__ #define __HKL_SOURCE_PRIVATE_H__ #include // for FILE #include "hkl-vector-private.h" // for HklVector #include "hkl.h" // for G_BEGIN_DECLS, etc G_BEGIN_DECLS #define HKL_SOURCE_DEFAULT_WAVE_LENGTH (1.54) typedef struct _HklSource HklSource; struct _HklSource { double wave_length; HklVector direction; }; extern HklSource *hkl_source_dup(const HklSource *self); extern void hkl_source_free(HklSource *self); extern int hkl_source_init(HklSource *self, double wave_length, double x, double y, double z); extern int hkl_source_cmp(HklSource const *self, HklSource const *s); extern void hkl_source_compute_ki(HklSource const *self, HklVector *ki); extern double hkl_source_get_wavelength(HklSource const *self); extern void hkl_source_fprintf(FILE *f, HklSource const *self); G_END_DECLS #endif /* __HKL_SOURCE_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-interval-private.h0000664000175000017500000000464314677222567016314 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef _HKL_INTERVAL_PRIVATE_H #define _HKL_INTERVAL_PRIVATE_H #include "hkl.h" // for G_BEGIN_DECLS, etc G_BEGIN_DECLS typedef struct _HklInterval HklInterval; struct _HklInterval { double min; double max; }; extern HklInterval* hkl_interval_dup(const HklInterval *self); extern void hkl_interval_free(HklInterval *self); extern int hkl_interval_cmp(const HklInterval *self, const HklInterval *interval); extern void hkl_interval_plus_interval(HklInterval *self, const HklInterval *interval); extern void hkl_interval_plus_double(HklInterval *self, double const d); extern void hkl_interval_minus_interval(HklInterval *self, const HklInterval *interval); extern void hkl_interval_minus_double(HklInterval *self, double const d); extern void hkl_interval_times_interval(HklInterval *self, const HklInterval *interval); extern void hkl_interval_times_double(HklInterval *self, double const d); extern void hkl_interval_divides_double(HklInterval *self, double const d); extern int hkl_interval_contain_zero(const HklInterval *self); extern void hkl_interval_cos(HklInterval *self); extern void hkl_interval_acos(HklInterval *self); extern void hkl_interval_sin(HklInterval *self); extern void hkl_interval_asin(HklInterval *self); extern void hkl_interval_tan(HklInterval *self); extern void hkl_interval_atan(HklInterval *self); extern double hkl_interval_length(const HklInterval *self); extern void hkl_interval_angle_restrict_symm(HklInterval *self); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-parameter.c0000664000175000017500000003274414677222567014776 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fprintf, FILE #include // for free, malloc, NULL #include // for strcmp #include "hkl-interval-private.h" // for HklInterval #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-unit-private.h" // for hkl_unit_factor, HklUnit, etc #include "hkl.h" // for HklParameter, etc #include "hkl/ccan/darray/darray.h" // for darray_size, darray_item, etc /****************/ /* HklParameter */ /****************/ static int hkl_parameter_init(HklParameter *self, const char *name, const char *description, double min, double value, double max, int fit, int changed, const HklUnit *unit, const HklUnit *punit, GError **error) { g_return_val_if_fail (error == NULL || *error == NULL, FALSE); if (value < min) { g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_INIT, "Cannot set parameter value (%g) which is strictly bellow the minimum (%g) allowed\n", value, min); return FALSE; } if (value > max) { g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_INIT, "Cannot set parameter value (%g) which is higher than the maximum (%g) allowed\n", value, max); return FALSE; } if (!strcmp(name, "")){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_INIT, "Cannot set an empty parameter name\n"); return FALSE; } if (!strcmp(description, "")){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_INIT, "Cannot set an empty parameter description\n"); return FALSE; } if(!hkl_unit_compatible(unit, punit)){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_INIT, "Cannot set uncompatible parameter unit (%s) and punit (%s)\n", unit->name ? unit->name : "NULL", punit->name ? punit->name : "NULL"); return FALSE; } self->name = name; self->description = description; self->range.min = min; self->range.max = max; self->_value = value; self->unit = unit; self->punit = punit; self->fit = fit; self->changed = changed; self->ops = &hkl_parameter_operations_defaults; self->type = Parameter(); return TRUE; } /** * hkl_parameter_new: (skip) * @name: * @min: * @value: * @max: * @fit: * @changed: * @unit: * @punit: * * create a new #HklParameter * * Returns: **/ HklParameter *hkl_parameter_new(const char *name, const char *description, double min, double value, double max, int fit, int changed, const HklUnit *unit, const HklUnit *punit, GError **err) { g_return_val_if_fail (err == NULL || *err == NULL, NULL); HklParameter *self = g_new(HklParameter, 1); if (!hkl_parameter_init(self, name, description, min, value, max, fit, changed, unit, punit, err)) { // assert that error was set by the sub-function hkl_assert (err == NULL || *err != NULL); free(self); return NULL; } // otherwise continue, no error occurred hkl_assert (err == NULL || *err == NULL); return self; } /** * hkl_parameter_new_copy: (skip) * @self: * * copy an #HklParameter * * Returns: **/ HklParameter *hkl_parameter_new_copy(const HklParameter *self) { return self->ops->copy(self); } /** * hkl_parameter_free: (skip) * @self: * * delete an #HklParameter **/ void hkl_parameter_free(HklParameter *self) { self->ops->free(self); } /** * hkl_parameter_init_copy: (skip) * @self: the this ptr * @src: the parameter to copy from * @error: return location for a GError, or NULL * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_parameter_init_copy(HklParameter *self, const HklParameter *src, GError **error) { return self->ops->init_copy(self, src, error); } /** * hkl_parameter_name_get: * @self: the this ptr * * Returns: the name of the #HklParameter **/ const char *hkl_parameter_name_get(const HklParameter *self) { return self->name; } /** * hkl_parameter_default_unit_get: * @self: the this ptr * * Returns: the default unit of the #HklParameter **/ const char *hkl_parameter_default_unit_get(const HklParameter *self) { return self->unit->name; } /** * hkl_parameter_user_unit_get: * @self: the this ptr * * Returns: the user unit of the #HklParameter **/ const char *hkl_parameter_user_unit_get(const HklParameter *self) { return self->punit->name; } /** * hkl_parameter_value_get: * @self: the this ptr * @unit_type: the unit type (default or user) of the returned value * * Returns: the value of the #HklParameter **/ inline double hkl_parameter_value_get(const HklParameter *self, HklUnitEnum unit_type) { switch(unit_type){ case HKL_UNIT_DEFAULT: return self->_value; break; case HKL_UNIT_USER: return self->_value * hkl_unit_factor(self->unit, self->punit); break; default: return NAN; } } /** * hkl_parameter_value_get_closest: * @self: the this ptr * @ref: the reference #HklParameter * * * * Returns: the closest value of the ref #HklParameter from the * current self #HklParameter **/ inline double hkl_parameter_value_get_closest(const HklParameter *self, const HklParameter *ref) { return self->ops->get_value_closest(self, ref); } /** * hkl_parameter_value_set: * @self: this ptr * @value: the value to set * @unit_type: the unit type (default or user) of the returned value * @error: return location for a GError, or NULL * * set the value of an #HklParameter * * Returns: TRUE on success, FALSE if an error occurred **/ inline int hkl_parameter_value_set(HklParameter *self, double value, HklUnitEnum unit_type, GError **error) { return self->ops->set_value(self, value, unit_type, error); } /** * hkl_parameter_value_set_smallest_in_range: (skip) * @self: the this ptr **/ inline void hkl_parameter_value_set_smallest_in_range(HklParameter *self) { self->ops->set_value_smallest_in_range(self); } /** * hkl_parameter_min_max_get: * @self: the this ptr * @min: (out caller-allocates): the returned minimum value * @max: (out caller-allocates): the returned maximum value * @unit_type: the unit type (default or user) of the returned values * * get the min and max value of the #HklParameter * **/ void hkl_parameter_min_max_get(const HklParameter *self, double *min, double *max, HklUnitEnum unit_type) { double factor; switch (unit_type){ case HKL_UNIT_DEFAULT: *min = self->range.min; *max = self->range.max; break; case HKL_UNIT_USER: factor = hkl_unit_factor(self->unit, self->punit); *min = factor * self->range.min; *max = factor * self->range.max; break; } } /** * hkl_parameter_min_max_set: * @self: the this ptr * @min: the minimum value to set * @max: the maximum value to set * @unit_type: the unit type (default or user) of the min, max * @error: return location for a GError, or NULL * * set the #HklParameter range. * @todo test and set the GError * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_parameter_min_max_set(HklParameter *self, double min, double max, HklUnitEnum unit_type, GError **error) { double factor; hkl_error (error == NULL || *error == NULL); if(!isfinite(min)){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_MIN_MAX_SET, "It is not possible to set the min range of %s parameter with the non-finite %f value\n", self->name, min); return FALSE; } if(!isfinite(max)){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_MIN_MAX_SET, "It is not possible to set the max range of %s parameter with the non-finite %f value\n", self->name, max); return FALSE; } if (min > max){ g_set_error(error, HKL_PARAMETER_ERROR, HKL_PARAMETER_ERROR_MIN_MAX_SET, "can not set this range min > max\n"); return FALSE; } switch (unit_type){ case HKL_UNIT_DEFAULT: self->range.min = min; self->range.max = max; break; case HKL_UNIT_USER: factor = hkl_unit_factor(self->unit, self->punit); self->range.min = min / factor; self->range.max = max / factor; break; } return TRUE; } /** * hkl_parameter_fit_get: * @self: the this ptr * * Retuen value: the #HklParameter fit value, True is the parameter can be fitted, not otherwise * @todo test **/ int hkl_parameter_fit_get(const HklParameter *self) { return self->fit; } /** * hkl_parameter_fit_set: * @self: the this ptr * @fit: the fit value to set * * set the #HklParameter fit value, True is the parameter can be fitted, not otherwise * @todo test **/ void hkl_parameter_fit_set(HklParameter *self, int fit) { self->fit = fit; } /** * hkl_parameter_randomize: (skip) * @self: * * randomize the #HklParameter value into the min,max range **/ void hkl_parameter_randomize(HklParameter *self) { self->ops->randomize(self); } /** * hkl_parameter_is_permutable: (skip) * @self: * * check if the #HklParameter can be use to perform permutation * exemple axis rotation can avec equivalent position at different * values **/ int hkl_parameter_is_permutable(const HklParameter *self) { return self->ops->is_permutable(self); } /** * hkl_parameter_is_valid: (skip) * @self: * * check if the value of the #HklParameter is in the min,max range * * Returns: **/ int hkl_parameter_is_valid(const HklParameter *self) { return self->ops->is_valid(self); } /** * hkl_parameter_is_valid_range: (skip) * @self: * * check if the value of the #HklParameter is in the min,max range * strictly (min < value < max). * * Returns: **/ int hkl_parameter_is_valid_range(const HklParameter *self) { return self->ops->is_valid_range(self); } /** * hkl_parameter_fprintf: (skip) * @f: * @self: * * print into the #FILE f an #HklParameter **/ void hkl_parameter_fprintf(FILE *f, const HklParameter *self) { double factor = hkl_unit_factor(self->unit, self->punit); if (self->punit) fprintf(f, "\"%s\" : %.7f %s [%.7f : %.7f] (%d)", self->name, self->_value * factor, self->punit->repr, self->range.min * factor, self->range.max * factor, self->fit); else fprintf(f, "\"%s\" : %.7f [%.7f : %.7f] (%d)", self->name, self->_value * factor, self->range.min * factor, self->range.max * factor, self->fit); } /** * hkl_parameter_axis_v_get: * @self: the this ptr * * Returns: (allow-none): **/ const HklVector *hkl_parameter_axis_v_get(const HklParameter *self) { return self->ops->axis_v_get(self); } /** * hkl_parameter_quaternion_get: * @self: the this ptr * * Returns: (allow-none): **/ const HklQuaternion *hkl_parameter_quaternion_get(const HklParameter *self) { return self->ops->quaternion_get(self); } /** * hkl_parameter_description_get: * @self: the this ptr * * Returns: the #HklParameter description **/ const char *hkl_parameter_description_get(const HklParameter *self) { return self->description; } /** * hkl_parameter_transformation_cmp: (skip) * @self: the this ptr * @p2: the second parameter to test with * * Returns: if two parameter transformations are compatibles. * (0) compatible, (!= 0) not-compatible **/ int hkl_parameter_transformation_cmp(const HklParameter *self, const HklParameter *p2) { return self->ops->transformation_cmp(self, p2); } /** * hkl_parameter_transformation_apply: (skip) * @self: the this ptr * @v: the #HklVector to transform * * Returns: the transformed #HklVector **/ HklVector hkl_parameter_transformation_apply(const HklParameter *self, const HklVector *v) { return self->ops->transformation_apply(self, v); } /** * hkl_parameter_orthodromic_distance_get: (skip) * @self: the this ptr * @value: the second #double value of the axis. * * Returns: the orthodromic distance of an axis between its _value and the value **/ double hkl_parameter_orthodromic_distance_get(const HklParameter *self, double value) { return self->ops->orthodromic_distance_get(self, value); } /** * hkl_parameter_type_get: (skip) * @self: the this ptr * * Returns: the #HklParameterType of the parameter. **/ HklParameterType hkl_parameter_type_get(const HklParameter *self) { return self->ops->type_get(self); } hkl-5.1.7/hkl/hkl-engine-zaxis.c0000664000175000017500000001210514677222567015404 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for RUBh_minus_Q, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" // for hkl_engine_tth2_new, etc #define MU "mu" #define OMEGA "omega" #define DELTA "delta" #define GAMMA "gamma" /* #define DEBUG */ static HklMode* _zaxis() { static const char *axes_r[] = {MU, OMEGA, DELTA, GAMMA}; static const char *axes_w[] = {OMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("zaxis", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /* reflectivity */ static int _reflectivity_func(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double gamma = x->data[3]; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); f->data[3] = mu - gamma; return GSL_SUCCESS; } static const HklFunction reflectivity_func = { .function = _reflectivity_func, .size = 4, }; static HklMode* reflectivity() { static const char* axes[] = {MU, OMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&reflectivity_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes, axes, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /**********************/ /* pseudo axis engine */ /**********************/ static HklEngine *hkl_engine_zaxis_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = _zaxis(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, reflectivity()); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_zaxis_incidence_new, P99_PROTECT({MU, OMEGA}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_zaxis_emergence_new, P99_PROTECT({MU, OMEGA, DELTA, GAMMA}), surface_parameters_y); /*********/ /* ZAXIS */ /*********/ #define HKL_GEOMETRY_TYPE_ZAXIS_DESCRIPTION \ "For this geometry the **mu** axis is common to the sample and the detector.\n" \ "\n" \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 2 axes for the sample\n" \ "\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" OMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" MU "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" static const char* hkl_geometry_zaxis_axes[] = {MU, OMEGA, DELTA, GAMMA}; static HklGeometry *hkl_geometry_new_zaxis(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, OMEGA, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_zaxis(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_zaxis_hkl_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_zaxis_incidence_new(self); hkl_engine_zaxis_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(zaxis, "ZAXIS", HKL_GEOMETRY_TYPE_ZAXIS_DESCRIPTION); hkl-5.1.7/hkl/hkl-engine-k6c.c0000664000175000017500000007714714677222567014752 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-eulerians-private.h" #include "hkl-pseudoaxis-common-hkl-private.h" // for RUBh_minus_Q, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #define MU "mu" #define KOMEGA "komega" #define KAPPA "kappa" #define KPHI "kphi" #define GAMMA "gamma" #define DELTA "delta" static void hkl_geometry_list_multiply_k6c_real(HklGeometryList *self, HklGeometryListItem *item) { HklGeometry *geometry; HklGeometry *copy; double komega, komegap; double kappa, kappap; double kphi, kphip; geometry = item->geometry; komega = hkl_parameter_value_get(darray_item(geometry->axes, 1), HKL_UNIT_DEFAULT); kappa = hkl_parameter_value_get(darray_item(geometry->axes, 2), HKL_UNIT_DEFAULT); kphi = hkl_parameter_value_get(darray_item(geometry->axes, 3), HKL_UNIT_DEFAULT); kappa_2_kappap(komega, kappa, kphi, 50 * HKL_DEGTORAD, &komegap, &kappap, &kphip); copy = hkl_geometry_new_copy(geometry); /* TODO parameter list for the geometry */ hkl_parameter_value_set(darray_item(copy->axes, 1), komegap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, 2), kappap, HKL_UNIT_DEFAULT, NULL); hkl_parameter_value_set(darray_item(copy->axes, 3), kphip, HKL_UNIT_DEFAULT, NULL); hkl_geometry_update(copy); hkl_geometry_list_add(self, copy); hkl_geometry_free(copy); } /***********************/ /* numerical functions */ /***********************/ static int _bissector_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double komega = x->data[1]; const double kappa = x->data[2]; const double gamma = x->data[4]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = fmod(gamma - 2 * fmod(mu, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_h_f1 = { .function = _bissector_h_f1, .size = 5, }; static int _bissector_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double mu = x->data[0]; const double komega = x->data[1]; const double kappa = x->data[2]; const double gamma = x->data[4]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = fmod(gamma - 2 * fmod(mu, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_h_f2 = { .function = _bissector_h_f2, .size = 5, }; static int _constant_kphi_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[1]; const double kappa = x->data[2]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); return GSL_SUCCESS; } static const HklFunction constant_kphi_h_f1 = { .function = _constant_kphi_h_f1, .size = 4, }; static int _constant_kphi_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[1]; const double kappa = x->data[2]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); return GSL_SUCCESS; } static const HklFunction constant_kphi_h_f2 = { .function = _constant_kphi_h_f2, .size = 4, }; static int _constant_phi_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[1]; const double kappa = x->data[2]; const double kphi = x->data[3]; double omega, phi, p; CHECK_NAN(x->data, x->size); p = atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)); omega = komega + p - M_PI_2; phi = kphi + p + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = phi; return GSL_SUCCESS; } static const HklFunction constant_phi_h_f1 = { .function = _constant_phi_h_f1, .size = 5, }; static int _constant_phi_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[1]; const double kappa = x->data[2]; const double kphi = x->data[3]; double omega, phi, p; CHECK_NAN(x->data, x->size); p = atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)); omega = komega + p + M_PI_2; phi = kphi + p - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(omega, M_PI); f->data[4] = phi; return GSL_SUCCESS; } static const HklFunction constant_phi_h_f2 = { .function = _constant_phi_h_f2, .size = 5, }; static int _bissector_v(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[0]; const double kappa = x->data[1]; const double delta = x->data[3]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = fmod(delta - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static const HklFunction bissector_v = { .function = _bissector_v, .size = 4, }; static int _constant_omega_v(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[0]; const double kappa = x->data[1]; double omega; HklEngine *engine = params; double omega0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = omega0 - omega; return GSL_SUCCESS; } static const HklFunction constant_omega_v = { .function = _constant_omega_v, .size = 4, }; static int _constant_chi_v(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; double chi; HklEngine *engine = params; double chi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); chi = 2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); RUBh_minus_Q(x->data, params, f->data); f->data[3] = chi0 - chi; return GSL_SUCCESS; } static const HklFunction constant_chi_v = { .function = _constant_chi_v, .size = 4, }; static int _constant_phi_v(const gsl_vector *x, void *params, gsl_vector *f) { const double kappa = x->data[1]; const double kphi = x->data[2]; double phi; HklEngine *engine = params; double phi0 = darray_item(engine->mode->parameters, 0)->_value; CHECK_NAN(x->data, x->size); phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; RUBh_minus_Q(x->data, params, f->data); f->data[3] = phi0 - phi; return GSL_SUCCESS; } static const HklFunction constant_phi_v = { .function = _constant_phi_v, .size = 4, }; static int _double_diffraction_h(const gsl_vector *x, void *params, gsl_vector *f) { const double komega = x->data[1]; const double kappa = x->data[2]; double omega; CHECK_NAN(x->data, x->size); omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; _double_diffraction(x->data, params, f->data); f->data[4] = fmod(omega, M_PI); return GSL_SUCCESS; } static const HklFunction double_diffraction_h = { .function = _double_diffraction_h, .size = 5, }; static int _constant_incidence_func(const gsl_vector *x, void *params, gsl_vector *f) { static const HklVector Y = { .data = {0, 1, 0}, }; double incidence; double azimuth; HklEngine *engine = params; HklModeAutoWithInit *mode = container_of(engine->mode, HklModeAutoWithInit, mode); HklVector n; double incidence0; double azimuth0; HklVector ki; CHECK_NAN(x->data, x->size); RUBh_minus_Q(x->data, params, f->data); /* get the mode parameters */ n.data[0] = darray_item(engine->mode->parameters, 0)->_value; n.data[1] = darray_item(engine->mode->parameters, 1)->_value; n.data[2] = darray_item(engine->mode->parameters, 2)->_value; incidence0 = darray_item(engine->mode->parameters, 3)->_value; azimuth0 = darray_item(engine->mode->parameters, 4)->_value; /* compute the two angles */ /* first check that the mode was already initialized if not * the surface is oriented along the nx, ny, nz axis for all * diffractometer angles equal to zero */ if(mode->geometry){ HklQuaternion q0 = hkl_geometry_sample_holder_get(mode->geometry, mode->sample)->q; hkl_quaternion_conjugate(&q0); hkl_vector_rotated_quaternion(&n, &q0); } hkl_vector_rotated_quaternion(&n, &hkl_geometry_sample_holder_get(engine->geometry, mode->sample)->q); ki = hkl_geometry_ki_get(engine->geometry); incidence = _incidence(&n, &ki); hkl_vector_project_on_plan(&n, &ki); azimuth = hkl_vector_angle(&n, &Y); f->data[3] = incidence0 - incidence; f->data[4] = azimuth0 - azimuth; return GSL_SUCCESS; } static const HklFunction constant_incidence_func = { .function = _constant_incidence_func, .size = 5, }; /*******/ /* K6C */ /*******/ /************/ /* hkl mode */ /************/ static HklMode *bissector_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&bissector_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_omega_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&constant_omega_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_omega_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_chi_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&constant_chi_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_chi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&constant_phi_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_kphi(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KPHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_komega(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_mu(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, GAMMA, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *bissector_horizontal(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&bissector_h_f1, &bissector_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_horizontal(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&constant_phi_h_f1, &constant_phi_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_kphi_horizontal(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, GAMMA}; static const HklFunction *functions[] = {&constant_kphi_h_f1, &constant_kphi_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_horizontal(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&double_diffraction_h}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant_vertical(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *constant_incidence(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const HklFunction *functions[] = {&constant_incidence_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, constant_incidence_parameters), }; return hkl_mode_auto_with_init_new(&info, &constant_incidence_mode_operations, TRUE); } static HklEngine *hkl_engine_k6c_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega_vertical()); hkl_engine_add_mode(self, constant_chi_vertical()); hkl_engine_add_mode(self, constant_phi_vertical()); hkl_engine_add_mode(self, lifting_detector_kphi()); hkl_engine_add_mode(self, lifting_detector_komega()); hkl_engine_add_mode(self, lifting_detector_mu()); hkl_engine_add_mode(self, double_diffraction_vertical()); hkl_engine_add_mode(self, bissector_horizontal()); hkl_engine_add_mode(self, constant_phi_horizontal()); hkl_engine_add_mode(self, constant_kphi_horizontal()); hkl_engine_add_mode(self, double_diffraction_horizontal()); hkl_engine_add_mode(self, psi_constant_vertical()); hkl_engine_add_mode(self, constant_incidence()); return self; } /************/ /* psi mode */ /************/ static HklMode *psi_vertical(void) { static const char *axes_r[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static const char *axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_k6c_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /*****************/ /* mode readonly */ /*****************/ REGISTER_READONLY_INCIDENCE(hkl_engine_k6c_incidence_new, P99_PROTECT({MU, KOMEGA, KAPPA, KPHI}), surface_parameters_y); REGISTER_READONLY_EMERGENCE(hkl_engine_k6c_emergence_new, P99_PROTECT({MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}), surface_parameters_y); #define HKL_GEOMETRY_KAPPA6C_DESCRIPTION \ "For this geometry there is a special parameters called :math:`\\alpha` which is the\n" \ "angle between the kappa rotation axis and the :math:`\\vec{y}` direction.\n" \ "\n" \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **mu** : rotating around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **komega** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **kappa** : rotating around the :math:`\\vec{x}` direction (0, :math:`-\\cos\\alpha`, :math:`-\\sin\\alpha`)\n" \ " + **kphi** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **gamma** : rotation around the :math:`\\vec{z}` direction (0, 0, 1)\n" \ " + **delta** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_kappa6C_axes[] = {MU, KOMEGA, KAPPA, KPHI, GAMMA, DELTA}; static HklGeometry *hkl_geometry_new_kappa6C(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); double alpha = 50 * HKL_DEGTORAD; HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KOMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KAPPA, 0, -cos(alpha), -sin(alpha), &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KPHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, GAMMA, 0, 0, 1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_kappa6C(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); self->geometries->multiply = hkl_geometry_list_multiply_k6c_real; hkl_engine_k6c_hkl_new(self); hkl_engine_eulerians_new(self); hkl_engine_k6c_psi_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_k6c_incidence_new(self); hkl_engine_tth2_new(self); hkl_engine_k6c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(kappa6C, "K6C", HKL_GEOMETRY_KAPPA6C_DESCRIPTION); /***********************/ /* SOLEIL sirius kappa */ /***********************/ /* hkl mode */ static HklMode *bissector_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&bissector_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("bissector_vertical", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_omega_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&constant_omega_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("constant_omega_vertical", axes_r, axes_w, functions, constant_omega_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_chi_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&constant_chi_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("constant_chi_vertical", axes_r, axes_w, functions, constant_chi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&constant_phi_v}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("constant_phi_vertical", axes_r, axes_w, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_kphi_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KPHI, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting_detector_kphi", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_komega_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting_detector_komega", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *lifting_detector_mu_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {MU, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting_detector_mu", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&double_diffraction_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("double_diffraction_vertical", axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *bissector_horizontal_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&bissector_h_f1, &bissector_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("bissector_horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_phi_horizontal_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&constant_phi_h_f1, &constant_phi_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("constant_phi_horizontal", axes_r, axes_w, functions, constant_phi_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_kphi_horizontal_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, DELTA}; static const HklFunction *functions[] = {&constant_kphi_h_f1, &constant_kphi_h_f2}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("constant_kphi_horizontal", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *double_diffraction_horizontal_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {MU, KOMEGA, KAPPA, KPHI, DELTA}; static const HklFunction *functions[] = {&double_diffraction_h}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("double_diffraction_horizontal", axes_r, axes_w, functions, double_diffraction_parameters), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *psi_constant_vertical_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&psi_constant_vertical_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("psi_constant_vertical", axes_r, axes_w, functions, psi_constant_parameters), }; return hkl_mode_auto_new(&info, &psi_constant_vertical_mode_operations, TRUE); } static HklMode *constant_incidence_soleil_sirius_kappa(void) { static const char* axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char* axes_w[] = {KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const HklFunction *functions[] = {&constant_incidence_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS("constant_incidence", axes_r, axes_w, functions, constant_incidence_parameters), }; return hkl_mode_auto_with_init_new(&info, &constant_incidence_mode_operations, TRUE); } static HklEngine *hkl_engine_soleil_sirius_kappa_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = bissector_vertical_soleil_sirius_kappa(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_omega_vertical_soleil_sirius_kappa()); hkl_engine_add_mode(self, constant_chi_vertical_soleil_sirius_kappa()); hkl_engine_add_mode(self, constant_phi_vertical_soleil_sirius_kappa()); hkl_engine_add_mode(self, lifting_detector_kphi_soleil_sirius_kappa()); hkl_engine_add_mode(self, lifting_detector_komega_soleil_sirius_kappa()); hkl_engine_add_mode(self, lifting_detector_mu_soleil_sirius_kappa()); hkl_engine_add_mode(self, double_diffraction_vertical_soleil_sirius_kappa()); hkl_engine_add_mode(self, bissector_horizontal_soleil_sirius_kappa()); hkl_engine_add_mode(self, constant_phi_horizontal_soleil_sirius_kappa()); hkl_engine_add_mode(self, constant_kphi_horizontal_soleil_sirius_kappa()); hkl_engine_add_mode(self, double_diffraction_horizontal_soleil_sirius_kappa()); hkl_engine_add_mode(self, psi_constant_vertical_soleil_sirius_kappa()); hkl_engine_add_mode(self, constant_incidence_soleil_sirius_kappa()); return self; } /* psi mode */ static HklMode *psi_vertical_soleil_sirius_kappa() { static const char *axes_r[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static const char *axes_w[] = {KOMEGA, KAPPA, KPHI, GAMMA}; static const HklFunction *functions[] = {&psi_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO_WITH_PARAMS(__func__, axes_r, axes_w, functions, psi_parameters), }; return hkl_mode_psi_new(&info); } static HklEngine *hkl_engine_soleil_sirius_kappa_psi_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_psi_new(engines); default_mode = psi_vertical_soleil_sirius_kappa(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); return self; } /* SOLEIL SIRIUS KAPPA */ #define HKL_GEOMETRY_TYPE_SOLEIL_SIRIUS_KAPPA_DESCRIPTION \ "+ xrays source fix along the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 4 axes for the sample\n" \ "\n" \ " + **" MU "** : rotating around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" KOMEGA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" KAPPA "** : rotating around the :math:`\\vec{x}` direction (0, :math:`-\\cos\\alpha`, :math:`-\\sin\\alpha`)\n" \ " + **" KPHI "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" GAMMA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_soleil_sirius_kappa_axes[] = {MU, KOMEGA, KAPPA, KPHI, DELTA, GAMMA}; static HklGeometry *hkl_geometry_new_soleil_sirius_kappa(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); double alpha = 50 * HKL_DEGTORAD; HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KOMEGA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KAPPA, 0, -cos(alpha), -sin(alpha), &hkl_unit_angle_deg); hkl_holder_add_rotation(h, KPHI, 0, -1, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, DELTA, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, -1, 0, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_sirius_kappa(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); self->geometries->multiply = hkl_geometry_list_multiply_k6c_real; hkl_engine_soleil_sirius_kappa_hkl_new(self); hkl_engine_eulerians_new(self); hkl_engine_soleil_sirius_kappa_psi_new(self); hkl_engine_q2_new(self); hkl_engine_qper_qpar_new(self); hkl_engine_tth2_new(self); hkl_engine_k6c_incidence_new(self); hkl_engine_k6c_emergence_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_sirius_kappa, "SOLEIL SIRIUS KAPPA", HKL_GEOMETRY_TYPE_SOLEIL_SIRIUS_KAPPA_DESCRIPTION); hkl-5.1.7/hkl/hkl-types.h0000664000175000017500000000541614677222567014163 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GLIB_H__ #define __HKL_GLIB_H__ #include // for GType #include "hkl.h" // for HKLAPI G_BEGIN_DECLS #define TYPE_HKL_DETECTOR (hkl_detector_get_type ()) HKLAPI GType hkl_detector_get_type (void) G_GNUC_CONST; #define TYPE_HKL_ENGINE (hkl_engine_get_type ()) HKLAPI GType hkl_engine_get_type (void) G_GNUC_CONST; #define TYPE_HKL_ENGINE_LIST (hkl_engine_list_get_type ()) HKLAPI GType hkl_engine_list_get_type (void) G_GNUC_CONST; #define TYPE_HKL_FACTORY (hkl_factory_get_type ()) HKLAPI GType hkl_factory_get_type (void) G_GNUC_CONST; #define TYPE_HKL_GEOMETRY (hkl_geometry_get_type ()) HKLAPI GType hkl_geometry_get_type (void) G_GNUC_CONST; #define TYPE_HKL_GEOMETRY_LIST (hkl_geometry_list_get_type ()) HKLAPI GType hkl_geometry_list_get_type (void) G_GNUC_CONST; #define TYPE_HKL_GEOMETRY_LIST_ITEM (hkl_geometry_list_item_get_type ()) HKLAPI GType hkl_geometry_list_item_get_type (void) G_GNUC_CONST; #define TYPE_HKL_LATTICE (hkl_lattice_get_type ()) HKLAPI GType hkl_lattice_get_type (void) G_GNUC_CONST; #define TYPE_HKL_MATRIX (hkl_matrix_get_type ()) HKLAPI GType hkl_matrix_get_type (void) G_GNUC_CONST; #define TYPE_HKL_PARAMETER (hkl_parameter_get_type ()) HKLAPI GType hkl_parameter_get_type (void) G_GNUC_CONST; #define TYPE_HKL_SAMPLE_REFLECTION (hkl_sample_reflection_get_type ()) HKLAPI GType hkl_sample_reflection_get_type (void) G_GNUC_CONST; #define TYPE_HKL_SAMPLE (hkl_sample_get_type ()) HKLAPI GType hkl_sample_get_type (void) G_GNUC_CONST; #define TYPE_HKL_UNIT (hkl_unit_get_type ()) HKLAPI GType hkl_unit_get_type (void) G_GNUC_CONST; #define TYPE_HKL_VECTOR (hkl_vector_get_type ()) HKLAPI GType hkl_vector_get_type (void) G_GNUC_CONST; #define TYPE_HKL_QUATERNION (hkl_quaternion_get_type ()) HKLAPI GType hkl_quaternion_get_type (void) G_GNUC_CONST; G_END_DECLS #endif hkl-5.1.7/hkl/hkl-pseudoaxis-common-hkl.c0000664000175000017500000006416715133715013017225 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #include // for ::GSL_SUCCESS, etc #include #include // for gsl_sf_angle_restrict_pos #include // for gsl_vector, etc #include // for fabs, M_PI #include // for size_t #include // for free, malloc, rand, etc #include // for NULL #include // for uint #include "hkl-axis-private.h" // for HklAxis #include "hkl-detector-private.h" // for hkl_detector_compute_kf #include "hkl-geometry-private.h" // for HklHolder, _HklGeometry, etc #include "hkl-macros-private.h" // for hkl_assert, HKL_MALLOC, etc #include "hkl-matrix-private.h" // for hkl_matrix_times_vector, etc #include "hkl-parameter-private.h" // for _HklParameter, etc #include "hkl-pseudoaxis-auto-private.h" // for CHECK_NAN, etc #include "hkl-pseudoaxis-common-private.h" #include "hkl-pseudoaxis-common-hkl-private.h" // for HklEngineHkl #include "hkl-pseudoaxis-common-q-private.h" // for HklEngineHkl #include "hkl-pseudoaxis-private.h" // for _HklEngine, _HklMode, etc #include "hkl-quaternion-private.h" // for hkl_quaternion_init, etc #include "hkl-sample-private.h" // for _HklSample #include "hkl-vector-private.h" // for HklVector, etc #include "hkl.h" // for HklEngine, HklGeometry, etc #include "hkl/ccan/array_size/array_size.h" // for ARRAY_SIZE #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/darray/darray.h" // for darray_item, darray_size /* #define DEBUG */ /*******************************************/ /* common methode use by hkl getter/setter */ /*******************************************/ typedef struct _HklDetectorFit HklDetectorFit; struct _HklDetectorFit { HklGeometry *geometry; HklDetector *detector; HklVector *kf0; HklParameter **axes; size_t len; }; /* this method is used to fit only the detector position */ /* usable with only 1 or 2 axes */ static int fit_detector_function(const gsl_vector *x, void *params, gsl_vector *f) { size_t i; HklDetectorFit *fitp = params; HklVector kf; /* update the workspace from x; */ for(i=0; ilen; ++i) hkl_parameter_value_set(fitp->axes[i], x->data[i], HKL_UNIT_DEFAULT, NULL); hkl_geometry_update(fitp->geometry); kf = hkl_geometry_kf_get(fitp->geometry, fitp->detector); f->data[0] = fabs(fitp->kf0->data[0] - kf.data[0]) + fabs(fitp->kf0->data[1] - kf.data[1]) + fabs(fitp->kf0->data[2] - kf.data[2]); if (fitp->len > 1) f->data[1] = fabs(fitp->kf0->data[1] - kf.data[1]); #if 0 fprintf(stdout, "\nkf0 [%f, %f, %f], kf [%f, %f, %f]", fitp->kf0->data[0], fitp->kf0->data[1], fitp->kf0->data[2], kf.data[0], kf.data[1], kf.data[2]); fprintf(stdout, " x : ["); for(i=0; ilen; ++i) fprintf(stdout, " %.7f", x_data[i]); fprintf(stdout, "] | f : ["); for(i=0; ilen; ++i) fprintf(stdout, " %.7f", f_data[i]); fprintf(stdout, "]\n"); #endif return GSL_SUCCESS; } static int fit_detector_position(HklMode *mode, HklGeometry *geometry, HklDetector *detector, const HklSample *sample, HklVector *kf) { const char **axis_name; HklDetectorFit params; gsl_multiroot_fsolver_type const *T; gsl_multiroot_fsolver *s; gsl_multiroot_function f; gsl_vector *x; int status; int res = FALSE; int iter; const HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); const HklHolder *detector_holder = hkl_geometry_detector_holder_get(geometry, detector); /* fit the detector part to find the position of the detector for a given kf */ /* FIXME for now the sample and detector holder are respectively the first and the second one */ /* we need to find the right axes to use for the fit */ /* BECARFULL the sample part must not move during this fit. So exclude an axis */ /* if it is also part of the sample holder. */ /* For now compare the holder axes with the axes of the mode to generate the right gsl multiroot solver */ params.geometry = geometry; params.detector = detector; params.kf0 = kf; params.axes = g_new (HklParameter *, detector_holder->config->len); params.len = 0; /* for each axis of the mode */ darray_foreach(axis_name, mode->info->axes_w){ size_t k; size_t tmp; tmp = hkl_geometry_get_axis_idx_by_name(params.geometry, *axis_name); /* check that this axis is in the detector's holder */ for(k=0; kconfig->len; ++k) if(tmp == detector_holder->config->idx[k]){ size_t j; int ko = 0; /* and not in the sample's holder */ for(j=0; jconfig->len; ++j){ if (tmp == sample_holder->config->idx[j]){ ko = 1; break; } } if(!ko) params.axes[params.len++] = darray_item(params.geometry->axes, tmp); } } /* if no detector axis found ???? abort */ /* maybe put this at the begining of the method */ if (params.len > 0){ size_t i; /* now solve the system */ /* Initialize method */ T = gsl_multiroot_fsolver_hybrid; s = gsl_multiroot_fsolver_alloc (T, params.len); x = gsl_vector_alloc(params.len); /* initialize x with the right values */ for(i=0; idata[i] = hkl_parameter_value_get(params.axes[i], HKL_UNIT_DEFAULT); f.f = fit_detector_function; f.n = params.len; f.params = ¶ms; gsl_multiroot_fsolver_set (s, &f, x); /* iterate to find the solution */ iter = 0; do { ++iter; status = gsl_multiroot_fsolver_iterate(s); if (status || iter % 100 == 0) { /* Restart from another point. */ for(i=0; idata[i] = (double)rand() / RAND_MAX * 180. / M_PI; gsl_multiroot_fsolver_set(s, &f, x); gsl_multiroot_fsolver_iterate(s); } status = gsl_multiroot_test_residual (s->f, HKL_EPSILON); } while (status == GSL_CONTINUE && iter < 1000); #ifdef DEBUG fprintf(stdout, "\n fitting the detector position using thoses axes :"); for(i=0; iname); fprintf(stdout, " status : %d iter : %d", status, iter); fprintf(stdout, " x: ["); for(i=0; ix->data[i]); fprintf(stdout, "] f: ["); for(i=0; if->data[i]); fprintf(stdout, "]\n"); hkl_geometry_fprintf(stdout, params.geometry); #endif if(status != GSL_CONTINUE){ res = TRUE; /* put the axes in the -pi, pi range. */ for(i=0; iaxes */ /* which is part of the axis_names of the mode */ /* return -1 if there is no axes of the mode in the sample part of the geometry */ static int get_last_sample_axis_idx(HklGeometry *geometry, const HklSample *sample, const darray_string *axes) { int last = -1; const char **axis_name; HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); darray_foreach(axis_name, *axes){ size_t i; size_t idx; /* FIXME for now the sample holder is the first one */ idx = hkl_geometry_get_axis_idx_by_name(geometry, *axis_name); for(i=0; iconfig->len; ++i) if(idx == sample_holder->config->idx[i]){ last = last > (int)i ? last : (int)i; break; } } return last; } static const HklVector reciprocal_plan(const HklEngineHkl *engine_hkl) { const HklVector hkl = { .data = { engine_hkl->h->_value, engine_hkl->k->_value, engine_hkl->l->_value, }, }; return hkl; } int hkl_is_reachable(HklEngine *engine, double wavelength, GError **error) { const HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); HklVector Hkl = reciprocal_plan(engine_hkl); hkl_matrix_times_vector(&engine->sample->UB, &Hkl); if (hkl_vector_norm2(&Hkl) > qmax(wavelength)){ g_set_error(error, HKL_ENGINE_ERROR, HKL_ENGINE_ERROR_SET, "unreachable hkl, try to change the wavelength"); return FALSE; } return TRUE; } /** * _RUBh_minus_Q_func: (skip) * @x: * @params: * @f: * * Only usefull if you need to create a new hkl mode. * * Returns: **/ int _RUBh_minus_Q_func(const gsl_vector *x, void *params, gsl_vector *f) { CHECK_NAN(x->data, x->size); return RUBh_minus_Q(x->data, params, f->data); } /** * RUBh_minus_Q: (skip) * @x: * @params: * @f: * * * * Returns: **/ int RUBh_minus_Q(double const x[], void *params, double f[]) { HklEngine *engine = params; HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklVector Hkl = reciprocal_plan(engine_hkl); /* update the workspace from x; */ set_geometry_axes(engine, x); const struct HklHklWrite w = hkl_hkl_write(engine->geometry, engine->detector, engine->sample, &Hkl); f[0] = w.dQ.data[0]; f[1] = w.dQ.data[1]; f[2] = w.dQ.data[2]; return GSL_SUCCESS; } int hkl_mode_get_hkl_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); /* update the geometry internals */ hkl_geometry_update(geometry); const struct HklHklRead r = hkl_hkl_read(geometry, detector, sample); engine_hkl->h->_value = r.hkl.data[0]; engine_hkl->k->_value = r.hkl.data[1]; engine_hkl->l->_value = r.hkl.data[2]; return TRUE; } int hkl_mode_set_hkl_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { int last_axis; hkl_error (error == NULL || *error == NULL); /* check the input parameters */ if(!hkl_is_reachable(engine, geometry->source.wave_length, error)){ hkl_assert(error == NULL || *error != NULL); return FALSE; } hkl_assert(error == NULL || *error == NULL); /* compute the mode */ if(!hkl_mode_auto_set_real(self, engine, geometry, detector, sample, error)){ hkl_assert(error == NULL || *error != NULL); //fprintf(stdout, "message :%s\n", (*error)->message); return FALSE; } hkl_assert(error == NULL || *error == NULL); /* check that the mode allow to move a sample axis */ /* FIXME for now the sample holder is the first one */ last_axis = get_last_sample_axis_idx(geometry, sample, &self->info->axes_w); if(last_axis >= 0){ uint i; const HklGeometryListItem *item; uint len = engine->engines->geometries->n_items; /* For each solution already found we will generate another one */ /* using the Ewalds construction by rotating Q around the last sample */ /* axis of the mode until it intersect again the Ewald sphere. */ /* FIXME do not work if ki is colinear with the axis. */ /* for this we needs : */ /* - the coordinates of the end of the Q vector (q) */ /* - the last sample axis orientation of the mode (axis_v) */ /* - the coordinates of the center of the ewalds sphere (c) */ /* - the coordinates of the center of rotation of the sample (o = 0, 0, 0) */ /* then we can : */ /* - project the origin in plane of normal axis_v containing q (o') */ /* - project the center of the ewalds sphere into the same plan (c') */ /* - rotate q around this (o', c') line of 180° to find the (q2) solution */ /* - compute the (kf2) corresponding to this q2 solution */ /* at the end we just need to solve numerically the position of the detector */ /* we will add solution to the geometries so save its length before */ for(i=0, item=list_top(&engine->engines->geometries->items, HklGeometryListItem, list); iengines->geometries->items, item, list)){ int j; HklVector ki; HklVector kf2; HklVector q; HklVector axis_v; HklQuaternion qr; HklAxis *axis; HklVector cp = {{0}}; HklVector op = {{0}}; double angle; HklGeometry *geom = hkl_geometry_new_copy(item->geometry); HklHolder *sample_holder = hkl_geometry_sample_holder_get(geom, sample); /* get the Q vector kf - ki */ ki = hkl_geometry_ki_get(geom); q = hkl_geometry_kf_get(geom, detector); hkl_vector_minus_vector(&q, &ki); /* compute the current orientation of the last axis */ axis = container_of(darray_item(geom->axes, sample_holder->config->idx[last_axis]), HklAxis, parameter); axis_v = axis->axis_v; hkl_quaternion_init(&qr, 1, 0, 0, 0); for(j=0; jaxes, sample_holder->config->idx[j]), HklAxis, parameter)->q); hkl_vector_rotated_quaternion(&axis_v, &qr); /* - project the center of the ewalds sphere into the same plan (c') */ hkl_vector_minus_vector(&cp, &ki); hkl_vector_project_on_plan_with_point(&cp, &axis_v, &q); hkl_vector_project_on_plan_with_point(&op, &axis_v, &q); /* - rotate q around this (o', c') line of 180° to find the (q2) solution */ kf2 = q; hkl_vector_rotated_around_line(&kf2, M_PI, &cp, &op); angle = hkl_vector_oriented_angle_points(&q, &op, &kf2, &axis_v); /* TODO parameter list for geometry */ if(!hkl_parameter_value_set(&axis->parameter, hkl_parameter_value_get(&axis->parameter, HKL_UNIT_DEFAULT) + angle, HKL_UNIT_DEFAULT, error)){ hkl_geometry_free(geom); return FALSE; } hkl_geometry_update(geom); #ifdef DEBUG fprintf(stdout, "\n- try to add a solution by rotating Q <%f, %f, %f> around the \"%s\" axis <%f, %f, %f> of %f radian", q.data[0], q.data[1], q.data[2], ((HklParameter *)axis)->name, axis_v.data[0], axis_v.data[1], axis_v.data[2], angle); fprintf(stdout, "\n op: <%f, %f, %f>", op.data[0], op.data[1], op.data[2]); fprintf(stdout, "\n q2: <%f, %f, %f>", kf2.data[0], kf2.data[1], kf2.data[2]); #endif hkl_vector_add_vector(&kf2, &ki); /* at the end we just need to solve numerically the position of the detector */ if(fit_detector_position(self, geom, detector, sample, &kf2)) hkl_geometry_list_add(engine->engines->geometries, geom); hkl_geometry_free(geom); } } return TRUE; } /***************************************/ /* the double diffraction get set part */ /***************************************/ static HklVector reciprocal_plan2(const HklMode *mode) { const HklVector hkl2 = { .data = { darray_item(mode->parameters, 0)->_value, darray_item(mode->parameters, 1)->_value, darray_item(mode->parameters, 2)->_value, }, }; return hkl2; } /** * double_diffraction: (skip) * @x: * @params: * @f: * * * * Returns: **/ int _double_diffraction(double const x[], void *params, double f[]) { HklEngine *engine = params; HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklVector hkl1 = reciprocal_plan(engine_hkl); const HklVector hkl2 = reciprocal_plan2(engine->mode); /* update the workspace from x; */ set_geometry_axes(engine, x); const struct HklDoubleDiffractionWrite w = hkl_double_diffraction_write(engine->geometry, engine->detector, engine->sample, &hkl1, &hkl2); f[0] = w.hkl1W.dQ.data[0]; f[1] = w.hkl1W.dQ.data[1]; f[2] = w.hkl1W.dQ.data[2]; f[3] = hkl_vector_norm2(&w.kf2) - hkl_vector_norm2(&w.hkl2W.ki); /* 2nd diffraction condition */ return GSL_SUCCESS; } /** * double_diffraction_func: (skip) * @x: * @params: * @f: * * * * Returns: **/ int _double_diffraction_func(gsl_vector const *x, void *params, gsl_vector *f) { CHECK_NAN(x->data, x->size); _double_diffraction(x->data, params, f->data); return GSL_SUCCESS; } /******************************************/ /* the psi_constant_vertical get set part */ /******************************************/ /** * psi_constant_vertical_func: (skip) * @x: * @params: * @f: * * * * Returns: **/ int _psi_constant_vertical_func(gsl_vector const *x, void *params, gsl_vector *f) { CHECK_NAN(x->data, x->size); HklEngine *engine = params; HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklVector hkl = reciprocal_plan(engine_hkl); const HklVector hkl2 = reciprocal_plan2(engine->mode); /* update the workspace from x; */ set_geometry_axes(engine, x->data); const struct HklPsiWrite w = hkl_psi_write(engine->geometry, engine->detector, engine->sample, &hkl, &hkl2); if(w.status){ #ifdef DEBUG fprintf(stdout, "\n"); hkl_geometry_fprintf(stdout, engine->geometry); fprintf(stdout, "\n"); fprintf(stdout, "%s n : <%f, %f, %f> hkl : <%f, %f, %f> Q : <%f, %f, %f> angle : %f\n", __func__, w.n.data[0], w.n.data[1], w.n.data[2], w.hkl.data[0], w.hkl.data[1], w.hkl.data[2], w.Qn.data[0], w.Qn.data[1], w.Qn.data[2], w.psi * HKL_RADTODEG); #endif f->data[0] = w.hklW.dQ.data[0]; f->data[1] = w.hklW.dQ.data[1]; f->data[2] = w.hklW.dQ.data[2]; if(hkl_vector_norm2(&w.hkl2) > HKL_EPSILON) f->data[3] = darray_item(engine->mode->parameters, 3)->_value - w.psi; else f->data[3] = 1; }else{ f->data[0] = 1; f->data[1] = 1; f->data[2] = 1; f->data[3] = 1; } return GSL_SUCCESS; } #define HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR hkl_mode_psi_constant_vertical_error_quark () static GQuark hkl_mode_psi_constant_vertical_error_quark (void) { return g_quark_from_static_string ("hkl-mode-psi-constant-vertical-error-quark"); } typedef enum { HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR_INITIALIZED_SET, /* can not init the engine */ } HklModePsiConstantVerticalError; int hkl_mode_initialized_set_psi_constant_vertical_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error) { if(initialized){ HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklVector hkl = reciprocal_plan(engine_hkl); const HklVector hkl2 = reciprocal_plan2(engine->mode); const struct HklPsiWrite w = hkl_psi_write(geometry, detector, sample, &hkl, &hkl2); /* kf - ki = Q */ if (hkl_vector_is_null(&w.hklW.Q)){ g_set_error(error, HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR, HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR_INITIALIZED_SET, "can not initialize the \"%s\" mode with a null hkl (kf == ki)" "\nplease select a non-null hkl", self->info->name); return FALSE; }else{ if (hkl_vector_is_null(&w.hkl2)){ g_set_error(error, HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR, HKL_MODE_PSI_CONSTANT_VERTICAL_ERROR_INITIALIZED_SET, "can not initialize the \"%s\" mode" "\nwhen Q and the ref vector are colinear." "\nplease change one or both of them", engine->mode->info->name); return FALSE; }else{ /* compute the angle beetween hkl and n and * store in in the fourth parameter */ if (!hkl_parameter_value_set(darray_item(self->parameters, 3), w.psi, HKL_UNIT_DEFAULT, error)) return FALSE; } } } self->initialized = initialized; return TRUE; } /*******************/ /* emergence fixed */ /*******************/ typedef struct _HklModeAutoHklEmergenceFixed HklModeAutoHklEmergenceFixed; struct _HklModeAutoHklEmergenceFixed { HklMode parent; HklParameter *n_x; /* not owned */ HklParameter *n_y; /* not owned */ HklParameter *n_z; /* not owned */ HklParameter *emergence; /* not owned */ }; #define HKL_MODE_HKL_EMERGENCE_FIXED_ERROR hkl_mode_hkl_emergence_fixed_error_quark () static GQuark hkl_mode_hkl_emergence_fixed_error_quark (void) { return g_quark_from_static_string ("hkl-mode-hkl-emergence-fixed-error-quark"); } typedef enum { HKL_MODE_HKL_EMERGENCE_FIXED_ERROR_INITIALIZED_SET, /* can not init the engine */ HKL_MODE_HKL_EMERGENCE_FIXED_ERROR_SET, /* can not set the engine */ } HklModeAutoHklEmergenceFixedError; static HklVector surface(const HklModeAutoHklEmergenceFixed *mode){ HklVector n = { .data = { mode->n_x->_value, mode->n_y->_value, mode->n_z->_value, } }; return n; } static double expected_emergence(const HklModeAutoHklEmergenceFixed *mode){ return mode->emergence->_value; } static int hkl_mode_hkl_emergence_fixed_initialized_set_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error) { const HklModeAutoHklEmergenceFixed *mode = container_of(self, HklModeAutoHklEmergenceFixed, parent); const HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklVector hkl = reciprocal_plan(engine_hkl); const HklVector n = surface(mode); /* first check the parameters */ if (hkl_vector_is_null(&n)){ g_set_error(error, HKL_MODE_HKL_EMERGENCE_FIXED_ERROR, HKL_MODE_HKL_EMERGENCE_FIXED_ERROR_INITIALIZED_SET, "Can not compute emergence fixed when the surface vector is null."); return FALSE; } /* compute emergence and keep it */ const struct HklEmergenceFixedWrite w = hkl_emergence_fixed_write(geometry, detector, sample, &hkl, &n); mode->emergence->_value = w.emergence; self->initialized = initialized; return TRUE; } int _emergence_fixed_func(const gsl_vector *x, void *params, gsl_vector *f) { CHECK_NAN(x->data, x->size); HklEngine *engine = params; const HklEngineHkl *engine_hkl = container_of(engine, HklEngineHkl, engine); const HklModeAutoHklEmergenceFixed *mode = container_of(engine->mode, HklModeAutoHklEmergenceFixed, parent); const HklVector hkl = reciprocal_plan(engine_hkl); const HklVector n = surface(mode); /* update the workspace from x; */ set_geometry_axes(engine, x->data); const struct HklEmergenceFixedWrite w = hkl_emergence_fixed_write(engine->geometry, engine->detector, engine->sample, &hkl, &n); f->data[0] = w.hklW.dQ.data[0]; f->data[1] = w.hklW.dQ.data[1]; f->data[2] = w.hklW.dQ.data[2]; f->data[3] = expected_emergence(mode) - w.emergence; return GSL_SUCCESS; } int hkl_mode_hkl_emergence_fixed_set_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { const HklModeAutoHklEmergenceFixed *mode = container_of(self, HklModeAutoHklEmergenceFixed, parent); HklVector n = surface(mode); /* first check the parameters */ if (hkl_vector_is_null(&n)){ g_set_error(error, HKL_MODE_HKL_EMERGENCE_FIXED_ERROR, HKL_MODE_HKL_EMERGENCE_FIXED_ERROR_SET, "Can not compute hkl with emergence fixed when the surface vector is null."); return FALSE; } return hkl_mode_set_hkl_real(self, engine, geometry, detector, sample, error); } HklMode *hkl_mode_hkl_emergence_fixed_new(const HklModeAutoInfo *auto_info) { static const HklModeOperations operations = { HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS, .capabilities = HKL_ENGINE_CAPABILITIES_READABLE | HKL_ENGINE_CAPABILITIES_WRITABLE | HKL_ENGINE_CAPABILITIES_INITIALIZABLE, .initialized_set = hkl_mode_hkl_emergence_fixed_initialized_set_real, .set = hkl_mode_hkl_emergence_fixed_set_real, }; HklModeAutoHklEmergenceFixed *self; if (darray_size(auto_info->info.axes_w) != 4){ fprintf(stderr, "This generic HklModeAutoHklEmergenceFixed need exactly 4 axes"); exit(128); } self = g_new(HklModeAutoHklEmergenceFixed, 1); /* the base constructor; */ hkl_mode_auto_init(&self->parent, auto_info, &operations, FALSE); self->n_x = register_mode_parameter(&self->parent, 0); self->n_y = register_mode_parameter(&self->parent, 1); self->n_z = register_mode_parameter(&self->parent, 2); self->emergence = register_mode_parameter(&self->parent, 3); return &self->parent; } /*************/ /* HklEngine */ /*************/ static void hkl_engine_hkl_free_real(HklEngine *base) { HklEngineHkl *self = container_of(base, HklEngineHkl, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_hkl_new(HklEngineList *engines) { HklEngineHkl *self = g_new(HklEngineHkl, 1); static const HklParameter h = { HKL_PARAMETER_DEFAULTS, .name = "h", .description = "h coordinate of the diffracting plan", }; static const HklParameter k = { HKL_PARAMETER_DEFAULTS, .name = "k", .description = "k coordinate of the diffracting plan", }; static const HklParameter l = { HKL_PARAMETER_DEFAULTS, .name = "l", .description = "l coordinate of the diffracting plan", }; static const HklParameter *pseudo_axes[] = {&h, &k, &l}; static HklEngineInfo info = { HKL_ENGINE_INFO("hkl", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_ENERGY | HKL_ENGINE_DEPENDENCIES_SAMPLE), }; static HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_hkl_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->h = register_pseudo_axis(&self->engine, engines, &h); self->k = register_pseudo_axis(&self->engine, engines, &k); self->l = register_pseudo_axis(&self->engine, engines, &l); return &self->engine; } hkl-5.1.7/hkl/hkl-geometry-private.h0000664000175000017500000001772314677222567016326 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GEOMETRY_PRIVATE_H__ #define __HKL_GEOMETRY_PRIVATE_H__ #include // for size_t #include // for FILE #include "hkl-parameter-private.h" // for darray_parameter #include "hkl-quaternion-private.h" // for _HklQuaternion #include "hkl-source-private.h" // for HklSource #include "hkl-vector-private.h" // for HklQuaternion #include "hkl.h" // for HklGeometry, etc #include "hkl/ccan/darray/darray.h" // for darray #include "hkl/ccan/list/list.h" G_BEGIN_DECLS #define HKL_HOLDER_SAMPLE_IDX 0 #define HKL_HOLDER_DETECTOR_IDX 1 typedef struct _HklHolder HklHolder; typedef void (* HklGeometryListMultiplyFunction) (HklGeometryList *self, HklGeometryListItem *item); typedef darray(HklHolder *) darray_holder; struct HklHolderConfig { int gc; size_t *idx; size_t len; }; struct _HklHolder { struct HklHolderConfig *config; HklGeometry *geometry; HklQuaternion q; }; typedef struct _HklGeometryOperations HklGeometryOperations; struct _HklGeometryOperations { HklHolder* (*sample_holder_get) (const HklGeometry *self, const HklSample *sample); HklHolder* (*detector_holder_get) (const HklGeometry *self, const HklDetector *detector); HklVector (*ki_get) (const HklGeometry *geometry); HklVector (*kf_get) (const HklGeometry *self, const HklDetector *detector); }; struct _HklGeometry { const HklFactory *factory; HklSource source; darray_parameter axes; darray_holder holders; const HklGeometryOperations *ops; }; static inline HklHolder *hkl_geometry_sample_holder_get_real(const HklGeometry *self, UNUSED const HklSample *sample) { return darray_item(self->holders, HKL_HOLDER_SAMPLE_IDX); } static inline HklHolder *hkl_geometry_detector_holder_get_real(const HklGeometry *self, UNUSED const HklDetector *detector) { return darray_item(self->holders, HKL_HOLDER_DETECTOR_IDX); } static inline HklVector hkl_geometry_ki_get_real(const HklGeometry *self) { HklVector ki; hkl_source_compute_ki(&self->source, &ki); return ki; } static inline HklVector hkl_geometry_kf_get_real(const HklGeometry *self, UNUSED const HklDetector *detector) { HklVector kf = {{HKL_TAU / self->source.wave_length, 0, 0}}; HklHolder *detector_holder = darray_item(self->holders, HKL_HOLDER_DETECTOR_IDX); hkl_vector_rotated_quaternion(&kf, &detector_holder->q); return kf; } #define HKL_GEOMETRY_OPERATIONS_DEFAULTS \ .sample_holder_get = hkl_geometry_sample_holder_get_real, \ .detector_holder_get = hkl_geometry_detector_holder_get_real, \ .ki_get = hkl_geometry_ki_get_real, \ .kf_get = hkl_geometry_kf_get_real extern const HklGeometryOperations hkl_geometry_operations_defaults; #define HKL_GEOMETRY_ERROR hkl_geometry_error_quark () static inline GQuark hkl_geometry_error_quark (void) { return g_quark_from_static_string ("hkl-geometry-error-quark"); } typedef enum { HKL_GEOMETRY_ERROR_AXIS_GET, /* can not get the axis */ HKL_GEOMETRY_ERROR_AXIS_SET, /* can not set the axis */ } HklGeometryError; struct _HklGeometryList { HklGeometryListMultiplyFunction multiply; struct list_head items; size_t n_items; }; struct _HklGeometryListItem { struct list_node list; HklGeometry *geometry; }; /*************/ /* HklHolder */ /*************/ extern HklParameter *hkl_holder_add_parameter(HklHolder *self, char const *name, const HklUnit *punit) HKL_ARG_NONNULL(1, 2, 3); extern HklParameter *hkl_holder_add_rotation(HklHolder *self, char const *name, double x, double y, double z, const HklUnit *punit) HKL_ARG_NONNULL(1, 2, 6); extern HklParameter *hkl_holder_add_rotation_with_origin(HklHolder *self, const char *name, double x, double y, double z, double ox, double oy, double oz, const HklUnit *punit) HKL_ARG_NONNULL(1, 2, 9); extern HklParameter *hkl_holder_add_translation(HklHolder *self, char const *name, double x, double y, double z, const HklUnit *punit) HKL_ARG_NONNULL(1, 2, 6); extern HklVector hkl_holder_transformation_apply(const HklHolder *self, const HklVector *v) HKL_ARG_NONNULL(1, 2); /***************/ /* HklGeometry */ /***************/ extern HklGeometry *hkl_geometry_new(const HklFactory *factory, const HklGeometryOperations *ops); extern int hkl_geometry_init_geometry(HklGeometry *self, const HklGeometry *src) HKL_ARG_NONNULL(1, 2); extern HklHolder *hkl_geometry_add_holder(HklGeometry *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_update(HklGeometry *self) HKL_ARG_NONNULL(1); extern int hkl_geometry_get_axis_idx_by_name(const HklGeometry *self, const char *name) HKL_ARG_NONNULL(1, 2); /* internally require do not use the hkl_geometry_axis_get */ extern HklParameter *hkl_geometry_get_axis_by_name(HklGeometry *self, const char *name) HKL_ARG_NONNULL(1, 2); extern double hkl_geometry_distance(const HklGeometry *self, const HklGeometry *ref) HKL_ARG_NONNULL(1, 2); extern double hkl_geometry_distance_orthodromic(const HklGeometry *self, const HklGeometry *ref) HKL_ARG_NONNULL(1, 2); extern int hkl_geometry_closest_from_geometry_with_range(HklGeometry *self, const HklGeometry *ref) HKL_ARG_NONNULL(1, 2); extern int hkl_geometry_is_valid(const HklGeometry *self) HKL_ARG_NONNULL(1); extern int hkl_geometry_is_valid_range(const HklGeometry *self) HKL_ARG_NONNULL(1); extern HklHolder *hkl_geometry_sample_holder_get(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); extern HklHolder *hkl_geometry_detector_holder_get(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); /*******************/ /* HklGeometryList */ /*******************/ extern HklGeometryList *hkl_geometry_list_new(void); extern HklGeometryList *hkl_geometry_list_new_copy(const HklGeometryList *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_list_add(HklGeometryList *self, const HklGeometry *geometry) HKL_ARG_NONNULL(1, 2); extern void hkl_geometry_list_reset(HklGeometryList *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_list_sort(HklGeometryList *self, HklGeometry *ref) HKL_ARG_NONNULL(1, 2); extern void hkl_geometry_list_fprintf(FILE *f, const HklGeometryList *self) HKL_ARG_NONNULL(1, 2); extern void hkl_geometry_list_multiply(HklGeometryList *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_list_multiply_from_range(HklGeometryList *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_list_remove_invalid(HklGeometryList *self) HKL_ARG_NONNULL(1); /***********************/ /* HklGeometryListItem */ /***********************/ extern HklGeometryListItem *hkl_geometry_list_item_new(const HklGeometry *geometry) HKL_ARG_NONNULL(1); extern HklGeometryListItem *hkl_geometry_list_item_new_copy(const HklGeometryListItem *self) HKL_ARG_NONNULL(1); extern void hkl_geometry_list_item_free(HklGeometryListItem *self) HKL_ARG_NONNULL(1); G_END_DECLS #endif /* __HKL_GEOMETRY_PRIVATE_H__ */ hkl-5.1.7/hkl/hkl-engine-esrf-id01-psic.c0000664000175000017500000001222215133711150016647 0ustar00piccapicca/* COPY THIS FILE INTO hkl-engine-xxx.c and fill the XXX */ /* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2017, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * Copyright (C) 2023 ESRF - The European Synchrotron * 71 Avenue des Martyrs * Grenoble * * Authors: Picca Frédéric-Emmanuel * Steven leake * Sebastien Petitdemange */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" // for hkl_mode_operations, etc #include "hkl-pseudoaxis-common-psi-private.h" // for hkl_engine_psi_new, etc #include "hkl-pseudoaxis-common-q-private.h" // for hkl_engine_q2_new, etc #include "hkl-pseudoaxis-common-tth-private.h" // for hkl_engine_tth2_new, etc #include "hkl-pseudoaxis-common-readonly-private.h" /**************/ /* Axes names */ /**************/ #define MU "mu" #define ETA "eta" #define PHI "phi" #define NU "nu" #define DELTA "delta" /************/ /* Geometry */ /************/ #define HKL_GEOMETRY_PSIC_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" MU "** : rotating around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" ETA "** : rotating around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" PHI "** : rotating around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ "\n" \ "+ 2 axes for the detector\n" \ "\n" \ " + **" NU "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" static const char* hkl_geometry_PSIC_axes[] = {MU, ETA, PHI, NU, DELTA}; static HklGeometry *hkl_geometry_new_PSIC(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, MU, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, ETA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, PHI, 0, 0, -1, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, NU, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); return self; } /*********/ /* Modes */ /*********/ static HklMode *constant_nu_coplanar(void) { static const char* axes_r[] = {MU, ETA, PHI, NU, DELTA}; static const char* axes_w[] = {ETA, PHI, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_delta_coplanar(void) { static const char* axes_r[] = {MU, ETA, PHI, NU, DELTA}; static const char* axes_w[] = {ETA, PHI, NU}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } static HklMode *constant_eta_noncoplanar(void) { static const char* axes_r[] = {MU, ETA, PHI, NU, DELTA}; static const char* axes_w[] = {PHI, NU, DELTA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO(__func__, axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_mode_operations, TRUE); } /***********/ /* Engines */ /***********/ static HklEngine *hkl_engine_PSIC_hkl(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = constant_nu_coplanar(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, constant_delta_coplanar()); hkl_engine_add_mode(self, constant_eta_noncoplanar()); return self; } /***************/ /* Engine list */ /***************/ static HklEngineList *hkl_engine_list_new_PSIC(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_PSIC_hkl(self); return self; } /* Register the diffractometer into the factory */ REGISTER_DIFFRACTOMETER(PSIC, "ESRF ID01 PSIC", HKL_GEOMETRY_PSIC_DESCRIPTION); hkl-5.1.7/hkl/hkl-sample.c0000664000175000017500000006643614677222567014304 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* for strdup */ #define _XOPEN_SOURCE 500 #include // for gsl_set_error_handler, etc #include // for gsl_multimin_function, etc #include // for GSL_NAN #include // for gsl_vector_get, etc #include // for M_PI, fabs #include // for size_t #include // for fprintf, FILE #include // for free #include // for NULL, strdup #include "hkl-detector-private.h" // for hkl_detector_new_copy, etc #include "hkl-geometry-private.h" // for _HklGeometry, etc #include "hkl-lattice-private.h" // for _HklLattice, etc #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-matrix-private.h" // for hkl_matrix_init_from_euler, etc #include "hkl-parameter-private.h" // for hkl_parameter_fprintf, etc #include "hkl-quaternion-private.h" // for hkl_quaternion_conjugate, etc #include "hkl-sample-private.h" // for _HklSample, etc #include "hkl-source-private.h" // for hkl_source_compute_ki #include "hkl-unit-private.h" // for hkl_unit_angle_deg, etc #include "hkl-vector-private.h" // for HklVector, hkl_vector_angle, etc #include "hkl.h" // for HklSample, etc #include "hkl/ccan/darray/darray.h" // for darray_foreach, darray_item #include "hkl/ccan/list/list.h" // for list_head, list_add_tail, etc /* #define DEBUG */ #define ITER_MAX 10000 /* private */ static void hkl_sample_clear_all_reflections(HklSample *self) { HklSampleReflection *reflection; HklSampleReflection *next; list_for_each_safe(&self->reflections, reflection, next, list){ list_del(&reflection->list); hkl_sample_reflection_free(reflection); } } static void hkl_sample_copy_all_reflections(HklSample *self, const HklSample *src) { HklSampleReflection *reflection; list_head_init(&self->reflections); list_for_each(&src->reflections, reflection, list){ list_add_tail(&self->reflections, &hkl_sample_reflection_new_copy(reflection)->list); } self->n_reflections = src->n_reflections; } static void hkl_sample_sample_set(HklSample *self, const HklSample *src) { if(self->name) free(self->name); self->name = strdup(src->name); hkl_lattice_lattice_set(self->lattice, src->lattice); self->U = src->U; self->UB = src->UB; hkl_parameter_init_copy(self->ux, src->ux, NULL); hkl_parameter_init_copy(self->uy, src->uy, NULL); hkl_parameter_init_copy(self->uz, src->uz, NULL); /* copy all the reflections */ hkl_sample_clear_all_reflections(self); hkl_sample_copy_all_reflections(self, src); } static void hkl_sample_reflection_update(HklSampleReflection *self) { HklVector ki; HklQuaternion q; const HklHolder *sample_holder = hkl_geometry_sample_holder_get(self->geometry, self->sample); const HklHolder *detector_holder = hkl_geometry_detector_holder_get(self->geometry, self->detector); if(!self) return; /* compute the _hkl using only the axes of the geometry */ /* first Q from angles */ hkl_source_compute_ki(&self->geometry->source, &ki); self->_hkl = ki; hkl_vector_rotated_quaternion(&self->_hkl, &detector_holder->q); hkl_vector_minus_vector(&self->_hkl, &ki); q = sample_holder->q; hkl_quaternion_conjugate(&q); hkl_vector_rotated_quaternion(&self->_hkl, &q); } static void hkl_sample_compute_UxUyUz(HklSample *self) { double ux; double uy; double uz; hkl_matrix_to_euler(&self->U, &ux, &uy, &uz); IGNORE(hkl_parameter_value_set(self->ux, ux, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uy, uy, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uz, uz, HKL_UNIT_DEFAULT, NULL)); } static int hkl_sample_compute_UB(HklSample *self) { HklMatrix B; if (!hkl_lattice_get_B(self->lattice, &B)) return FALSE; self->UB = self->U; hkl_matrix_times_matrix(&self->UB, &B); return TRUE; } /* * this structure is used by the minimization gsl algorithm. * in the set_UB method */ struct set_UB_t { HklSample *sample; const HklMatrix UB; }; static int hkl_sample_init_from_gsl_vector(HklSample *self, const gsl_vector *x) { double euler_x, euler_y, euler_z; euler_x = gsl_vector_get(x, 0); euler_y = gsl_vector_get(x, 1); euler_z = gsl_vector_get(x, 2); IGNORE(hkl_parameter_value_set(self->ux, euler_x, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uy, euler_y, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uz, euler_z, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->a, gsl_vector_get(x, 3), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->b, gsl_vector_get(x, 4), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->c, gsl_vector_get(x, 5), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->alpha, gsl_vector_get(x, 6), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->beta, gsl_vector_get(x, 7), HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->lattice->gamma, gsl_vector_get(x, 8), HKL_UNIT_DEFAULT, NULL)); hkl_matrix_init_from_euler(&self->U, euler_x, euler_y, euler_z); if (!hkl_sample_compute_UB(self)) return FALSE; return TRUE; } static void hkl_sample_to_gsl_vector(HklSample *self, gsl_vector *x) { gsl_vector_set (x, 0, hkl_parameter_value_get(self->ux, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 1, hkl_parameter_value_get(self->uy, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 2, hkl_parameter_value_get(self->uz, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 3, hkl_parameter_value_get(self->lattice->a, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 4, hkl_parameter_value_get(self->lattice->b, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 5, hkl_parameter_value_get(self->lattice->c, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 6, hkl_parameter_value_get(self->lattice->alpha, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 7, hkl_parameter_value_get(self->lattice->beta, HKL_UNIT_DEFAULT)); gsl_vector_set (x, 8, hkl_parameter_value_get(self->lattice->gamma, HKL_UNIT_DEFAULT)); } static double set_UB_fitness(const gsl_vector *x, void *params) { size_t i, j; double fitness = 0.; struct set_UB_t *parameters = params; HklSample *sample = parameters->sample; if (!hkl_sample_init_from_gsl_vector(sample, x)) return GSL_NAN; for(i=0; i<3; ++i) for(j=0; j<3; ++j){ double tmp = parameters->UB.data[i][j] - sample->UB.data[i][j]; fitness += tmp * tmp; } #ifdef DEBUG fprintf(stderr, "fitness: %f\n", fitness); #endif return fitness; } static double mono_crystal_fitness(const gsl_vector *x, void *params) { size_t i; double fitness; HklSample *sample = params; HklSampleReflection *reflection; if (!hkl_sample_init_from_gsl_vector(sample, x)) return GSL_NAN; fitness = 0.; list_for_each(&sample->reflections, reflection, list){ if(reflection->flag){ HklVector UBh; UBh = reflection->hkl; hkl_matrix_times_vector(&sample->UB, &UBh); for(i=0; i<3; ++i) { double tmp = UBh.data[i] - reflection->_hkl.data[i]; fitness += tmp * tmp; } } } return fitness; } static int minimize(HklSample *sample, double (* f) (const gsl_vector * x, void * params), void *params, GError **error) { HklSample *saved; gsl_multimin_fminimizer_type const *T = gsl_multimin_fminimizer_nmsimplex; gsl_multimin_fminimizer *s = NULL; gsl_vector *ss, *x; gsl_multimin_function minex_func; size_t iter = 0; int status; double size = 0; int res = TRUE; hkl_error (error == NULL || *error == NULL); /* save the sample state */ saved = hkl_sample_new_copy(sample); /* Starting point */ x = gsl_vector_alloc (9); hkl_sample_to_gsl_vector(sample, x); /* Set initial step sizes to 1 */ ss = gsl_vector_alloc (9); gsl_vector_set (ss, 0, sample->ux->fit); gsl_vector_set (ss, 1, sample->uy->fit); gsl_vector_set (ss, 2, sample->uz->fit); gsl_vector_set (ss, 3, sample->lattice->a->fit); gsl_vector_set (ss, 4, sample->lattice->b->fit); gsl_vector_set (ss, 5, sample->lattice->c->fit); gsl_vector_set (ss, 6, sample->lattice->alpha->fit); gsl_vector_set (ss, 7, sample->lattice->beta->fit); gsl_vector_set (ss, 8, sample->lattice->gamma->fit); /* Initialize method and iterate */ minex_func.n = 9; minex_func.f = f; minex_func.params = params; s = gsl_multimin_fminimizer_alloc (T, 9); gsl_set_error_handler_off(); gsl_multimin_fminimizer_set (s, &minex_func, x, ss); do { ++iter; status = gsl_multimin_fminimizer_iterate(s); #ifdef DEBUG fprintf(stderr, "status iterate: %d (%d): %s\n", status, iter, gsl_strerror(status)); #endif if (status) break; size = gsl_multimin_fminimizer_size (s); status = gsl_multimin_test_size (size, HKL_EPSILON / 2.); #ifdef DEBUG fprintf(stderr, "status test: %d size: %f :%s\n", status, size, gsl_strerror(status)); fprintf(stderr, " x:"); for(int i=0; i<9; ++i) fprintf(stderr, " %f", gsl_vector_get(s->x, i)); fprintf(stderr, "\n"); #endif } while (status == GSL_CONTINUE && iter < ITER_MAX); gsl_vector_free(x); gsl_vector_free(ss); gsl_multimin_fminimizer_free(s); gsl_set_error_handler (NULL); if (status == GSL_CONTINUE){ hkl_sample_sample_set(sample, saved); /* restore the saved sample */ g_set_error(error, HKL_SAMPLE_ERROR, HKL_SAMPLE_ERROR_MINIMIZED, "Minimization failed after %d iterations.", ITER_MAX); res = FALSE; } hkl_sample_free(saved); return res; } /*************/ /* HklSample */ /*************/ /** * hkl_sample_new: * @name: * * constructor * * Returns: **/ HklSample* hkl_sample_new(const char *name) { HklSample *self = g_new(HklSample, 1); self->name = strdup(name); self->lattice = hkl_lattice_new_default(); hkl_matrix_init(&self->U,1, 0, 0, 0, 1, 0, 0, 0, 1); hkl_matrix_init(&self->UB,1, 0, 0, 0, 1, 0, 0, 0, 1); self->ux = hkl_parameter_new("ux", "the sample rotation around $\vec{x}$", -M_PI, 0., M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); self->uy = hkl_parameter_new("uy", "the sample rotation around $\vec{y}$", -M_PI, 0., M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); self->uz = hkl_parameter_new("uz", "the sample rotation around $\vec{z}$", -M_PI, 0., M_PI, TRUE, TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg, NULL); hkl_sample_compute_UB(self); list_head_init(&self->reflections); self->n_reflections = 0; return self; } /** * hkl_sample_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklSample *hkl_sample_new_copy(const HklSample *self) { HklSample *dup = g_new(HklSample, 1); dup->name = strdup(self->name); dup->lattice = hkl_lattice_new_copy(self->lattice); dup->U = self->U; dup->UB = self->UB; dup->ux = hkl_parameter_new_copy(self->ux); dup->uy = hkl_parameter_new_copy(self->uy); dup->uz = hkl_parameter_new_copy(self->uz); hkl_sample_copy_all_reflections(dup, self); return dup; } /** * hkl_sample_free: (skip) * @self: * * destructor **/ void hkl_sample_free(HklSample *self) { free(self->name); hkl_lattice_free(self->lattice); hkl_parameter_free(self->ux); hkl_parameter_free(self->uy); hkl_parameter_free(self->uz); hkl_sample_clear_all_reflections(self); free(self); } /** * hkl_sample_name_get: * @self: the this ptr * * Return value: the name of the sample **/ const char *hkl_sample_name_get(const HklSample *self) { return self->name; } /** * hkl_sample_name_set: * @self: the this ptr * @name: the new name to set * * set the name of the sample **/ void hkl_sample_name_set(HklSample *self, const char *name) { if(self->name) free(self->name); self->name = strdup(name); } /** * hkl_sample_lattice_get: * @self: the this ptr * * Return value: the lattice parameters of the sample. **/ const HklLattice *hkl_sample_lattice_get(HklSample *self) { return self->lattice; } /** * hkl_sample_lattice_set: * @self: the this ptr * @lattice: the lattice to set **/ void hkl_sample_lattice_set(HklSample *self, const HklLattice *lattice) { hkl_lattice_lattice_set(self->lattice, lattice); hkl_sample_compute_UB(self); } /** * hkl_sample_ux_get: * @self: the this ptr * * Return value: the ux part of the U matrix. **/ const HklParameter *hkl_sample_ux_get(const HklSample *self) { return self->ux; } /** * hkl_sample_uy_get: * @self: the this ptr * * Return value: the uy part of the U matrix. **/ const HklParameter *hkl_sample_uy_get(const HklSample *self) { return self->uy; } /** * hkl_sample_uz_get: * @self: the this ptr * * Return value: the uz part of the U matrix. **/ const HklParameter *hkl_sample_uz_get(const HklSample *self) { return self->uz; } /** * hkl_sample_ux_set: * @self: the this ptr * @ux: the ux parameter to set * @error: return location for a GError, or NULL * * set the ux part of the U matrix. * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_sample_ux_set(HklSample *self, const HklParameter *ux, GError **error) { hkl_error (error == NULL || *error == NULL); if(!hkl_parameter_init_copy(self->ux, ux, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } hkl_assert (error == NULL || *error == NULL); hkl_matrix_init_from_euler(&self->U, hkl_parameter_value_get(self->ux, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uy, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uz, HKL_UNIT_DEFAULT)); hkl_sample_compute_UB(self); return TRUE; } /** * hkl_sample_uy_set: * @self: the this ptr * @uy: the uy parameter to set * @error: return location for a GError, or NULL * * set the uy part of the U matrix. * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_sample_uy_set(HklSample *self, const HklParameter *uy, GError **error) { hkl_error (error == NULL || *error == NULL); if(!hkl_parameter_init_copy(self->uy, uy, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } hkl_assert (error == NULL || *error == NULL); hkl_matrix_init_from_euler(&self->U, hkl_parameter_value_get(self->ux, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uy, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uz, HKL_UNIT_DEFAULT)); hkl_sample_compute_UB(self); return TRUE; } /** * hkl_sample_uz_set: * @self: the this ptr * @uz: the uz parameter to set * @error: return location for a GError, or NULL * * set the uz part of the U matrix. * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_sample_uz_set(HklSample *self, const HklParameter *uz, GError **error) { hkl_error (error == NULL || *error == NULL); if(!hkl_parameter_init_copy(self->uz, uz, error)){ hkl_assert (error == NULL || *error != NULL); return FALSE; } hkl_assert (error == NULL || *error == NULL); hkl_matrix_init_from_euler(&self->U, hkl_parameter_value_get(self->ux, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uy, HKL_UNIT_DEFAULT), hkl_parameter_value_get(self->uz, HKL_UNIT_DEFAULT)); hkl_sample_compute_UB(self); return TRUE; } /** * hkl_sample_U_get: * @self: the this ptr * * Return value: the U matrix of the sample **/ const HklMatrix *hkl_sample_U_get(const HklSample *self) { return &self->U; } /* * TODO implemente the error */ void hkl_sample_U_set(HklSample *self, const HklMatrix *U, GError **error) { double x, y, z; hkl_matrix_matrix_set(&self->U, U); hkl_sample_compute_UB(self); hkl_matrix_to_euler(&self->U, &x, &y, &z); IGNORE(hkl_parameter_value_set(self->ux, x, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uy, y, HKL_UNIT_DEFAULT, NULL)); IGNORE(hkl_parameter_value_set(self->uz, z, HKL_UNIT_DEFAULT, NULL)); } /** * hkl_sample_UB_get: * @self: the this ptr. * * Return value: get the UB matrix of the sample **/ const HklMatrix *hkl_sample_UB_get(const HklSample *self) { return &self->UB; } /** * hkl_sample_UB_set: * @self: the sample to modify * @UB: the UB matrix to set * @error: error set in case of impossibility * * Set the UB matrix using an external UB matrix. In fact you give * the UB matrix but only the U matrix of the sample is affected by * this operation. We keep the B matrix constant. * U * B = UB -> U = UB * B^-1 * TODO implemente the error **/ int hkl_sample_UB_set(HklSample *self, const HklMatrix *UB, GError **error) { struct set_UB_t params = { .sample = self, .UB = *UB }; return minimize(self, set_UB_fitness, ¶ms, error); } /** * hkl_sample_n_reflections_get: (skip) * @self: the this ptr * * return the number of reflections of the sample * * Returns: **/ size_t hkl_sample_n_reflections_get(const HklSample *self) { return self->n_reflections; } /** * hkl_sample_reflections_first_get: (skip) * @self: the this ptr * * Return value: the first HklSampleReflection of the sample. **/ HklSampleReflection *hkl_sample_reflections_first_get(HklSample *self) { return list_top(&self->reflections, HklSampleReflection, list); } /** * hkl_sample_reflections_next_get: (skip) * @self: the this ptr * @reflection: the current reflection * * Return value: (allow-none): the next reflection or NULL if no more reflection **/ HklSampleReflection *hkl_sample_reflections_next_get(HklSample *self, HklSampleReflection *reflection) { return list_next(&self->reflections, reflection, list); } /** * hkl_sample_add_reflection: * @self: the this ptr * @reflection: The reflection to add * * add a reflection to the sample, if the reflection is already part * of the sample reflection list, this method does nothing. **/ void hkl_sample_add_reflection(HklSample *self, HklSampleReflection *reflection) { HklSampleReflection *ref; list_for_each(&self->reflections, ref, list){ if (ref == reflection) return; } reflection->sample = self; hkl_sample_reflection_update(reflection); list_add_tail(&self->reflections, &reflection->list); self->n_reflections++; } /** * hkl_sample_del_reflection: * @self: the this ptr * @reflection: the reflection to remove. * * remove an HklSampleRefelction from the reflections list. **/ void hkl_sample_del_reflection(HklSample *self, HklSampleReflection *reflection) { list_del(&reflection->list); hkl_sample_reflection_free(reflection); self->n_reflections--; } /** * hkl_sample_compute_UB_busing_levy: * @self: the this ptr * @r1: the first #HklsampleReflection * @r2: the second #HklSampleReflection * * compute the UB matrix using the Busing and Levy method * #todo: add ref * * Returns: 0 or 1 if it succeed **/ int hkl_sample_compute_UB_busing_levy(HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2, GError **error) { hkl_error (error == NULL || *error == NULL); if (!hkl_vector_is_colinear(&r1->hkl, &r2->hkl)) { HklVector h1c; HklVector h2c; HklMatrix B; HklMatrix Tc; /* Compute matrix Tc from r1 and r2. */ h1c = r1->hkl; h2c = r2->hkl; hkl_lattice_get_B(self->lattice, &B); hkl_matrix_times_vector(&B, &h1c); hkl_matrix_times_vector(&B, &h2c); hkl_matrix_init_from_two_vector(&Tc, &h1c, &h2c); hkl_matrix_transpose(&Tc); /* compute U */ hkl_matrix_init_from_two_vector(&self->U, &r1->_hkl, &r2->_hkl); hkl_matrix_times_matrix(&self->U, &Tc); hkl_sample_compute_UxUyUz(self); hkl_sample_compute_UB(self); }else{ g_set_error(error, HKL_SAMPLE_ERROR, HKL_SAMPLE_ERROR_COMPUTE_UB_BUSING_LEVY, "It is not possible to compute the UB matrix when the given reflections are colinear"); return FALSE; } hkl_assert (error == NULL || *error == NULL); return TRUE; } /** * hkl_sample_affine: * @self: the this ptr * * affine the sample * * Returns: the fitness of the affined #HklSample **/ int hkl_sample_affine(HklSample *self, GError **error) { return minimize(self, mono_crystal_fitness, self, error); } /** * hkl_sample_get_reflection_measured_angle: * @self: the this ptr * @r1: the first #HklSampleReflection * @r2: the second #HklSampleReflection * * get the measured angles between two #HklSampleReflection * * Returns: the measured angle beetween them **/ double hkl_sample_get_reflection_measured_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) { return hkl_vector_angle(&r1->_hkl, &r2->_hkl); } /** * hkl_sample_get_reflection_theoretical_angle: * @self: the this ptr * @r1: the first #HklSampleReflection * @r2: the second #HklSampleReflection * * get the theoretical angles between two #HklSampleReflection * * Returns: the theoretical angle beetween them **/ double hkl_sample_get_reflection_theoretical_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) { HklVector hkl1; HklVector hkl2; hkl1 = r1->hkl; hkl2 = r2->hkl; hkl_matrix_times_vector(&self->UB, &hkl1); hkl_matrix_times_vector(&self->UB, &hkl2); return hkl_vector_angle(&hkl1, &hkl2); } /** * hkl_sample_fprintf: (skip) * @f: * @self: * * print to a file a sample **/ void hkl_sample_fprintf(FILE *f, const HklSample *self) { if(!self) return; fprintf(f, "\nSample name: \"%s\"", self->name); fprintf(f, "\nLattice parameters:"); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->a); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->b); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->c); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->alpha); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->beta); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->gamma); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->ux); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->uy); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->uz); fprintf(f, "\nUB:\n"); hkl_matrix_fprintf(f, &self->UB); if (!list_empty(&self->reflections)){ HklSampleReflection *reflection; HklParameter **axis; reflection = list_top(&self->reflections, HklSampleReflection, list); fprintf(f, "Reflections:"); fprintf(f, "\n"); fprintf(f, "%-10.6s %-10.6s %-10.6s", "h", "k", "l"); darray_foreach(axis, reflection->geometry->axes){ fprintf(f, " %-10.6s", (*axis)->name); } list_for_each(&self->reflections, reflection, list){ fprintf(f, "\n%-10.6f %-10.6f %-10.6f", reflection->hkl.data[0], reflection->hkl.data[1], reflection->hkl.data[2]); darray_foreach(axis, reflection->geometry->axes){ fprintf(f, " %-10.6f", hkl_parameter_value_get(*axis, HKL_UNIT_USER)); } } } } /***********************/ /* HklSampleReflection */ /***********************/ /** * hkl_sample_reflection_new: * @geometry: * @detector: * @h: * @k: * @l: * * constructeur * * Returns: **/ HklSampleReflection *hkl_sample_reflection_new(const HklGeometry *geometry, const HklDetector *detector, double h, double k, double l, GError **error) { HklSampleReflection *self = g_new(HklSampleReflection, 1); self->geometry = hkl_geometry_new_copy(geometry); self->detector = hkl_detector_new_copy(detector); self->sample = NULL; self->hkl.data[0] = h; self->hkl.data[1] = k; self->hkl.data[2] = l; self->flag = TRUE; return self; } /** * hkl_sample_reflection_new_copy: (skip) * @self: * * copy constructor * * Returns: **/ HklSampleReflection *hkl_sample_reflection_new_copy(const HklSampleReflection *self) { HklSampleReflection *dup = g_new(HklSampleReflection, 1); dup->geometry = hkl_geometry_new_copy(self->geometry); dup->detector = hkl_detector_new_copy(self->detector); dup->hkl = self->hkl; dup->_hkl = self->_hkl; dup->flag = self->flag; return dup; } /** * hkl_sample_reflection_free: (skip) * @self: * * destructor **/ void hkl_sample_reflection_free(HklSampleReflection *self) { hkl_geometry_free(self->geometry); hkl_detector_free(self->detector); free(self); } /** * hkl_sample_reflection_hkl_get: * @self: the this ptr * @h: (out caller-allocates): the h-coordinate of the #HklSampleReflection * @k: (out caller-allocates): the k-coordinate of the #HklSampleReflection * @l: (out caller-allocates): the l-coordinate of the #HklSampleReflection * * get the hkl coordinates of the #HklSampleReflection **/ void hkl_sample_reflection_hkl_get(const HklSampleReflection *self, double *h, double *k, double *l) { *h = self->hkl.data[0]; *k = self->hkl.data[1]; *l = self->hkl.data[2]; } /** * hkl_sample_reflection_hkl_set: * @self: the this ptr * @h: the h-coordinate of the #HklSampleReflection * @k: the k-coordinate of the #HklSampleReflection * @l: the l-coordinate of the #HklSampleReflection * @error: return location for a GError, or NULL * * set the hkl coordinates of the #HklSampleReflection * * Returns: TRUE on success, FALSE if an error occurred **/ int hkl_sample_reflection_hkl_set(HklSampleReflection *self, double h, double k, double l, GError **error) { hkl_error (error == NULL || *error == NULL); if((fabs(h) + fabs(k) + fabs(l) < HKL_EPSILON)){ g_set_error(error, HKL_SAMPLE_REFLECTION_ERROR, HKL_SAMPLE_REFLECTION_ERROR_HKL_SET, "it is not allow to set a null hkl reflection\n"); return FALSE; } self->hkl.data[0] = h; self->hkl.data[1] = k; self->hkl.data[2] = l; return TRUE; } /** * hkl_sample_reflection_flag_get: * @self: the this ptr * * get the flag of the reflection * * Returns: the flag value **/ int hkl_sample_reflection_flag_get(const HklSampleReflection *self) { return self->flag; } /** * hkl_sample_reflection_flag_set: * @self: the this ptr * @flag: the value of the flag to set * * set the flag of the reflection. **/ void hkl_sample_reflection_flag_set(HklSampleReflection *self, int flag) { self->flag = flag; } /** * hkl_sample_reflection_geometry_get: * @self: the this ptr * * get the #HklGeometry stored in the #HklSampleReflection * * Returns: the geometry saved into the reflection. **/ const HklGeometry *hkl_sample_reflection_geometry_get(HklSampleReflection *self) { return self->geometry; } /** * hkl_sample_reflection_geometry_set: * @self: the this ptr * @geometry: the geometry to set in the #HklSampleReflection * * set the geometry of the reflection **/ void hkl_sample_reflection_geometry_set(HklSampleReflection *self, const HklGeometry *geometry) { if(self->geometry){ if(self->geometry != geometry){ hkl_geometry_free(self->geometry); self->geometry = hkl_geometry_new_copy(geometry); } }else self->geometry = hkl_geometry_new_copy(geometry); hkl_sample_reflection_update(self); } hkl-5.1.7/hkl/Makefile.am0000664000175000017500000001233315136176242014107 0ustar00piccapicca## Process this file with automake to produce Makefile.in SUBDIRS = ccan . api2 AM_CFLAGS = \ -Wno-initializer-overrides \ -Wno-unused-result \ -DG_LOG_DOMAIN=\"Hkl\" \ -I$(top_builddir) \ -I$(top_srcdir) \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) AM_LDFLAGS = \ -no-undefined -version-info 5:0:0 \ ccan/libccan.la \ $(GLIB_LIBS) \ $(GSL_LIBS) hkl_c_sources = \ hkl-axis.c \ hkl-detector.c \ hkl-detector-factory.c \ hkl-factory.c \ hkl-geometry.c \ hkl-interval.c \ hkl-lattice.c \ hkl-macros.c \ hkl-matrix.c \ hkl-parameter.c \ hkl-pseudoaxis.c \ hkl-pseudoaxis-auto.c \ hkl-pseudoaxis-common.c \ hkl-pseudoaxis-common-eulerians.c \ hkl-pseudoaxis-common-hkl.c \ hkl-pseudoaxis-common-psi.c \ hkl-pseudoaxis-common-q.c \ hkl-pseudoaxis-common-readonly.c \ hkl-pseudoaxis-common-tth.c \ hkl-engine-2c.c \ hkl-engine-aps-04id-polar.c \ hkl-engine-e4c.c \ hkl-engine-k4c.c \ hkl-engine-e6c.c \ hkl-engine-esrf-bm28-psic.c \ hkl-engine-esrf-id01-psic.c \ hkl-engine-k6c.c \ hkl-engine-petra3-p08-lisa.c \ hkl-engine-petra3-p09-eh2.c \ hkl-engine-petra3-p23-4c.c \ hkl-engine-petra3-p23-6c.c \ hkl-engine-soleil-cristal-k4c.c \ hkl-engine-soleil-nanoscopium-robot.c \ hkl-engine-soleil-sirius-turret.c \ hkl-engine-soleil-sixs-med.c \ hkl-engine-zaxis.c \ hkl-quaternion.c \ hkl-sample.c \ hkl-source.c \ hkl-trajectory.c \ hkl-unit.c \ hkl-vector.c hkl_public_h_sources = ../hkl.h hkl_private_h_sources = \ hkl-axis-private.h \ hkl-detector-private.h \ hkl-factory-private.h \ hkl-geometry-private.h \ hkl-interval-private.h \ hkl-lattice-private.h \ hkl-macros-private.h \ hkl-matrix-private.h \ hkl-parameter-private.h \ hkl-pseudoaxis-private.h \ hkl-pseudoaxis-auto-private.h \ hkl-pseudoaxis-common-private.h \ hkl-pseudoaxis-common-eulerians-private.h \ hkl-pseudoaxis-common-hkl-private.h \ hkl-pseudoaxis-common-psi-private.h \ hkl-pseudoaxis-common-q-private.h \ hkl-pseudoaxis-common-readonly-private.h \ hkl-pseudoaxis-common-tth-private.h \ hkl-quaternion-private.h \ hkl-sample-private.h \ hkl-source-private.h \ hkl-trajectory-private.h \ hkl-unit-private.h \ hkl-vector-private.h # just compile the template diffractometer to be sure that it is valid noinst_LTLIBRARIES = libdummy.la libdummy_la_SOURCES = hkl-engine-template.c # just a private hkl library with all symbols visiles for hkl"d and binoculars noinst_LTLIBRARIES += libhkl-private.la libhkl_private_la_SOURCES = $(hkl_c_sources) $(hkl_private_h_sources) # the hkl library lib_LTLIBRARIES = libhkl.la libhkl_la_SOURCES = $(libhkl_private_la_SOURCES) libhkl_la_CFLAGS = $(AM_CFLAGS) -fvisibility=hidden # introspection -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = \ --add-include-path=$(srcdir) \ --add-include-path=. \ --warn-all INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. if HAVE_INTROSPECTION libhkl_private_la_SOURCES += \ hkl-types.c \ hkl-types.h \ hkl-type-builtins.c \ hkl-type-builtins.h \ hkl-binding.c \ hkl-binding-private.h introspection_files = \ ../hkl.h \ hkl-binding-private.h \ hkl-types.h \ hkl-vector.c \ hkl-matrix.c \ hkl-quaternion.c \ hkl-parameter.c \ hkl-axis.c \ hkl-geometry.c \ hkl-detector.c \ hkl-detector-factory.c \ hkl-lattice.c \ hkl-sample.c \ hkl-pseudoaxis.c \ hkl-factory.c \ hkl-binding.c \ hkl-types.c \ hkl-type-builtins.c \ hkl-type-builtins.h AM_LDFLAGS += $(GOBJECT_LIBS) AM_CFLAGS += $(GOBJECT_CFLAGS) hkl-type-builtins.h: stamp-hkl-type-builtins.h @true stamp-hkl-type-builtins.h: $(hkl_public_h_sources) $(srcdir)/hkl-type-builtins.h.template ( cd $(srcdir) && $(GLIB_MKENUMS) --template hkl-type-builtins.h.template \ $(hkl_public_h_sources) ) >> xgen-gtbh \ && (cmp -s xgen-gtbh hkl-type-builtins.h || cp xgen-gtbh hkl-type-builtins.h ) \ && rm -f xgen-gtbh \ && echo timestamp > $(@F) hkl-type-builtins.c: $(hkl_public_h_sources) $(srcdir)/hkl-type-builtins.c.template hkl-type-builtins.h ( cd $(srcdir) && $(GLIB_MKENUMS) --template hkl-type-builtins.c.template \ $(hkl_public_h_sources) ) > xgen-gtbc \ && cp xgen-gtbc hkl-type-builtins.c \ && rm -f xgen-gtbc Hkl-@VMAJ@.0.gir: $(INTROSPECTION_SCANNER) libhkl.la Makefile Hkl_@VMAJ@_0_gir_NAMESPACE = Hkl Hkl_@VMAJ@_0_gir_VERSION = @VMAJ@.0 Hkl_@VMAJ@_0_gir_LIBS = libhkl.la Hkl_@VMAJ@_0_gir_FILES = $(introspection_files) Hkl_@VMAJ@_0_gir_PACKAGES = gobject-2.0 Hkl_@VMAJ@_0_gir_CFLAGS = $(INCLUDES) $(AM_CPPFLAGS) $(AM_CFLAGS) Hkl_@VMAJ@_0_gir_EXPORT_PACKAGES = hkl-@VMAJ@.0 Hkl_@VMAJ@_0_gir_SCANNERFLAGS = --warn-all --c-include='hkl.h' INTROSPECTION_GIRS += Hkl-@VMAJ@.0.gir girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) typelibsdir = $(libdir)/girepository-1.0 typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) EXTRA_DIST = \ hkl-type-builtins.h.template \ hkl-type-builtins.c.template CLEANFILES = $(gir_DATA) $(typelibs_DATA) stamp-hkl-type-builtins.h hkl-type-builtins.h hkl-type-builtins.c endif # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) # check for includes with iwyu iwyu: @list='$(libhkl_la_SOURCES)';\ for p in $$list; do\ iwyu $(AM_CFLAGS) $$p; \ done; .PHONY: check-syntax iwyu hkl-5.1.7/hkl/hkl-matrix.c0000664000175000017500000003110714677222567014312 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for cos, fabs, atan2, sin, asin #include // for fprintf, FILE #include // for free #include // for memcpy #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-matrix-private.h" // for _HklMatrix #include "hkl-vector-private.h" // for HklVector, etc #include "hkl.h" // for HklMatrix, HKL_EPSILON, etc /** * hkl_matrix_new: (skip) * * Returns: a new uninitialized HklMatrix */ HklMatrix *hkl_matrix_new() { return g_new(HklMatrix, 1); } /** * hkl_matrix_new_full: (skip) * @m11: the matrix 11 value * @m12: the matrix 12 value * @m13: the matrix 13 value * @m21: the matrix 21 value * @m22: the matrix 22 value * @m23: the matrix 23 value * @m31: the matrix 31 value * @m32: the matrix 32 value * @m33: the matrix 33 value * * @todo test * Returns: a new HklMAtrix **/ HklMatrix *hkl_matrix_new_full(double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) { HklMatrix *self = hkl_matrix_new(); hkl_matrix_init(self, m11, m12, m13, m21, m22, m23, m31, m32, m33); return self; } /** * hkl_matrix_new_euler: * @euler_x: the eulerian value along X * @euler_y: the eulerian value along Y * @euler_z: the eulerian value along Z * * Returns: Create a rotation #HklMatrix from three eulerians angles. **/ HklMatrix *hkl_matrix_new_euler(double euler_x, double euler_y, double euler_z) { HklMatrix *self = hkl_matrix_new(); hkl_matrix_init_from_euler(self, euler_x, euler_y, euler_z); return self; } /** * hkl_matrix_dup: (skip) * @self: * * * * Returns: **/ HklMatrix *hkl_matrix_dup(const HklMatrix* self) { HklMatrix *dup = g_new(HklMatrix, 1); *dup = *self; return dup; } /** * hkl_matrix_free: (skip) * @self: * * **/ void hkl_matrix_free(HklMatrix *self) { free(self); } /** * hkl_matrix_init: * @self: the #HklMatrix to initialize * @m11: the matrix 11 value * @m12: the matrix 12 value * @m13: the matrix 13 value * @m21: the matrix 21 value * @m22: the matrix 22 value * @m23: the matrix 23 value * @m31: the matrix 31 value * @m32: the matrix 32 value * @m33: the matrix 33 value * * **/ void hkl_matrix_init(HklMatrix *self, double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) { double (*M)[3] = self->data; M[0][0] = m11, M[0][1] = m12, M[0][2] = m13; M[1][0] = m21, M[1][1] = m22, M[1][2] = m23; M[2][0] = m31, M[2][1] = m32, M[2][2] = m33; } /** * hkl_matrix_matrix_set: (skip) * @self: the this ptr * @m: the matrix to set * * @todo test **/ void hkl_matrix_matrix_set(HklMatrix *self, const HklMatrix *m) { if (self == m) return; memcpy(self->data, m->data, sizeof(double) * 9); } /** * hkl_matrix_get: * @self: the this ptr * @i: the i coordinate * @j: the j coordinate * * @todo test * Return value: the Mij value **/ double hkl_matrix_get(const HklMatrix *self, unsigned int i, unsigned int j) { return self->data[i][j]; } /** * hkl_matrix_fprintf: * @file: the FILE stream * @self: the #HklMatrix to print into the file stream * * printf an #HklMatrix into a FILE stream. **/ void hkl_matrix_fprintf(FILE *file, const HklMatrix *self) { double const (*M)[3] = self->data; fprintf(file, "|%f, %f, %f|\n", M[0][0], M[0][1], M[0][2]); fprintf(file, "|%f, %f, %f|\n", M[1][0], M[1][1], M[1][2]); fprintf(file, "|%f, %f, %f|\n", M[2][0], M[2][1], M[2][2]); } /** * hkl_matrix_init_from_two_vector: * @self: The #HklMatrix to initialize * @v1: the first #HklVector * @v2: the second #HklVector * * Create an #HklMatrix which represent a direct oriented base of the space * the first row correspond to the |v1|, the second row |v2| and the last one * is |v1 ^ v2| **/ void hkl_matrix_init_from_two_vector(HklMatrix *self, const HklVector *v1, const HklVector *v2) { HklVector x, y, z; double (*M)[3] = self->data; x = *v1; hkl_vector_normalize(&x); z = *v1; hkl_vector_vectorial_product(&z, v2); hkl_vector_normalize(&z); y = z; hkl_vector_vectorial_product(&y, &x); M[0][0] = x.data[0], M[0][1] = y.data[0], M[0][2] = z.data[0]; M[1][0] = x.data[1], M[1][1] = y.data[1], M[1][2] = z.data[1]; M[2][0] = x.data[2], M[2][1] = y.data[2], M[2][2] = z.data[2]; } /** * hkl_matrix_init_from_euler: * @self: the #HklMatrix to initialize * @euler_x: the eulerian value along X * @euler_y: the eulerian value along Y * @euler_z: the eulerian value along Z * * Create a rotation #HklMatrix from three eulerians angles. **/ void hkl_matrix_init_from_euler(HklMatrix *self, double euler_x, double euler_y, double euler_z) { double (*M)[3] = self->data; double A = cos(euler_x); double B = sin(euler_x); double C = cos(euler_y); double D = sin(euler_y); double E = cos(euler_z); double F = sin(euler_z); double AD = A *D; double BD = B *D; M[0][0] = C*E; M[0][1] =-C*F; M[0][2] = D; M[1][0] = BD *E + A *F; M[1][1] =-BD *F + A *E; M[1][2] =-B *C; M[2][0] =-AD *E + B *F; M[2][1] = AD *F + B *E; M[2][2] = A *C; } /** * hkl_matrix_to_euler: * @self: the rotation #HklMatrix use to compute the eulerians angles * @euler_x: the eulerian value along X * @euler_y: the eulerian value along Y * @euler_z: the eulerian value along Z * * compute the three eulerians values for a given rotation #HklMatrix **/ void hkl_matrix_to_euler(const HklMatrix *self, double *euler_x, double *euler_y, double *euler_z) { double tx, ty; double C; double const (*M)[3] = self->data; *euler_y = asin( self->data[0][2] ); /*Calculate Y-axis angle */ C = cos( *euler_y ); if (fabs(C) > HKL_EPSILON) { /*Gimball lock? */ tx = M[2][2] / C; /*No, so get X-axis angle */ ty = -M[1][2] / C; *euler_x = atan2( ty, tx ); tx = M[0][0] / C; /*Get Z-axis angle */ ty = -M[0][1] / C; *euler_z = atan2( ty, tx ); } else { /*Gimball lock has occurred */ *euler_x = 0.; /*Set X-axis angle to zero */ tx = M[1][1]; /*And calculate Z-axis angle */ ty = M[1][0]; *euler_z = atan2( ty, tx ); } } /** * hkl_matrix_cmp: * @self: the first #HklMatrix * @m: the #HklMatrix to compare with * * compare two #HklMatrix. * * Returns: return TRUE if | self - m | > HKL_EPSILON **/ int hkl_matrix_cmp(const HklMatrix *self, const HklMatrix *m) { unsigned int i; unsigned int j; for(i=0;i<3;i++) for(j=0;j<3;j++) if( fabs(self->data[i][j] - m->data[i][j]) > HKL_EPSILON ) return FALSE; return TRUE; } /** * hkl_matrix_times_matrix: * @self: the #HklMatrix to modify * @m: the #HklMatrix to multiply by * * compute the matrix multiplication self = self * m **/ void hkl_matrix_times_matrix(HklMatrix *self, const HklMatrix *m) { HklMatrix const tmp = *self; double (*M)[3] = self->data; double const (*Tmp)[3] = tmp.data; double const (*M1)[3]; if (self == m) M1 = tmp.data; else M1 = m->data; M[0][0] = Tmp[0][0]*M1[0][0] + Tmp[0][1]*M1[1][0] + Tmp[0][2]*M1[2][0]; M[0][1] = Tmp[0][0]*M1[0][1] + Tmp[0][1]*M1[1][1] + Tmp[0][2]*M1[2][1]; M[0][2] = Tmp[0][0]*M1[0][2] + Tmp[0][1]*M1[1][2] + Tmp[0][2]*M1[2][2]; M[1][0] = Tmp[1][0]*M1[0][0] + Tmp[1][1]*M1[1][0] + Tmp[1][2]*M1[2][0]; M[1][1] = Tmp[1][0]*M1[0][1] + Tmp[1][1]*M1[1][1] + Tmp[1][2]*M1[2][1]; M[1][2] = Tmp[1][0]*M1[0][2] + Tmp[1][1]*M1[1][2] + Tmp[1][2]*M1[2][2]; M[2][0] = Tmp[2][0]*M1[0][0] + Tmp[2][1]*M1[1][0] + Tmp[2][2]*M1[2][0]; M[2][1] = Tmp[2][0]*M1[0][1] + Tmp[2][1]*M1[1][1] + Tmp[2][2]*M1[2][1]; M[2][2] = Tmp[2][0]*M1[0][2] + Tmp[2][1]*M1[1][2] + Tmp[2][2]*M1[2][2]; } /** * hkl_matrix_times_vector: * @self: the #HklMatrix use to multiply the #HklVector * @v: the #HklVector multiply by the #HklMatrix * * multiply an #HklVector by an #HklMatrix **/ void hkl_matrix_times_vector(const HklMatrix *self, HklVector *v) { HklVector tmp; double *Tmp; double *V = v->data; double const (*M)[3] = self->data; tmp = *v; Tmp = tmp.data; V[0] = Tmp[0]*M[0][0] + Tmp[1]*M[0][1] + Tmp[2]*M[0][2]; V[1] = Tmp[0]*M[1][0] + Tmp[1]*M[1][1] + Tmp[2]*M[1][2]; V[2] = Tmp[0]*M[2][0] + Tmp[1]*M[2][1] + Tmp[2]*M[2][2]; } /** * hkl_matrix_transpose: * @self: the #HklMatrix to transpose * * transpose an #HklMatrix **/ void hkl_matrix_transpose(HklMatrix *self) { #define SWAP(a, b) {double tmp=a; a=b; b=tmp;} SWAP(self->data[1][0], self->data[0][1]); SWAP(self->data[2][0], self->data[0][2]); SWAP(self->data[2][1], self->data[1][2]); } /** * hkl_matrix_det: * @self: the #HklMatrix use to compute the determinant * * compute the determinant of an #HklMatrix * * Returns: the determinant of the self #HklMatrix * Todo: test **/ double hkl_matrix_det(const HklMatrix *self) { double det; double const (*M)[3] = self->data; det = M[0][0] * (M[1][1] * M[2][2] - M[2][1] * M[1][2]); det += -M[0][1] * (M[1][0] * M[2][2] - M[2][0] * M[1][2]); det += M[0][2] * (M[1][0] * M[2][1] - M[2][0] * M[1][1]); return det; } /** * hkl_matrix_solve: * @self: The #HklMatrix of the system * @x: the #HklVector to compute. * @b: the #hklVector of the system to solve. * * solve the system self . X = b * * Returns: -1 if the système has no solution, 0 otherwise. * Todo: test **/ int hkl_matrix_solve(const HklMatrix *self, HklVector *x, const HklVector *b) { double det; double const (*M)[3] = self->data; double *X = x->data; double const *B = b->data; det = hkl_matrix_det(self); if (fabs(det) < HKL_EPSILON) return -1; else { X[0] = B[0] * (M[1][1]*M[2][2] - M[1][2]*M[2][1]); X[0] += -B[1] * (M[0][1]*M[2][2] - M[0][2]*M[2][1]); X[0] += B[2] * (M[0][1]*M[1][2] - M[0][2]*M[1][1]); X[1] = -B[0] * (M[1][0]*M[2][2] - M[1][2]*M[2][0]); X[1] += B[1] * (M[0][0]*M[2][2] - M[0][2]*M[2][0]); X[1] += -B[2] * (M[0][0]*M[1][2] - M[0][2]*M[1][0]); X[2] = B[0] * (M[1][0]*M[2][1] - M[1][1]*M[2][0]); X[2] += -B[1] * (M[0][0]*M[2][1] - M[0][1]*M[2][0]); X[2] += B[2] * (M[0][0]*M[1][1] - M[0][1]*M[1][0]); hkl_vector_div_double(x, det); } return 0; } /** * hkl_matrix_is_null: * @self: the #HklMatrix to test * * is all #hklMatrix elementes bellow #HKL_EPSILON * * Returns: TRUE if the self #HklMatrix is null * Todo: test **/ int hkl_matrix_is_null(const HklMatrix *self) { unsigned int i; unsigned int j; for (i=0;i<3;i++) for (j=0;j<3;j++) if ( fabs(self->data[i][j]) > HKL_EPSILON ) return FALSE; return TRUE; } /** * hkl_matrix_div_double: (skip) * @self: the #HklMatrix to divide. * @d: constant use to divide the #HklMatrix * * divide an #HklMatrix by a constant. **/ void hkl_matrix_div_double(HklMatrix *self, double d) { unsigned int i; unsigned int j; for (i=0;i<3;i++) for(j=0; j<3; ++j) self->data[i][j] /= d; } /** * hkl_matrix_inv: * @self: The #HklMatrix of the system * * Returns: -1 if the HklMatrix can not be inverted, 0 otherwise. * Todo: test **/ int hkl_matrix_inv(const HklMatrix *self, HklMatrix *inv) { double det; double const (*M)[3] = self->data; double (*Inv)[3] = inv->data; det = hkl_matrix_det(self); if (fabs(det) < HKL_EPSILON) return -1; else { Inv[0][0] = M[1][1]*M[2][2] - M[1][2]*M[2][1]; Inv[0][1] = - (M[0][1]*M[2][2] - M[0][2]*M[2][1]); Inv[0][2] = M[0][1]*M[1][2] - M[0][2]*M[1][1]; Inv[1][0] = - (M[1][0]*M[2][2] - M[1][2]*M[2][0]); Inv[1][1] = M[0][0]*M[2][2] - M[0][2]*M[2][0]; Inv[1][2] = - (M[0][0]*M[1][2] - M[0][2]*M[1][0]); Inv[2][0] = M[1][0]*M[2][1] - M[1][1]*M[2][0]; Inv[2][1] = - (M[0][0]*M[2][1] - M[0][1]*M[2][0]); Inv[2][2] = M[0][0]*M[1][1] - M[0][1]*M[1][0]; hkl_matrix_div_double(inv, det); } return 0; } hkl-5.1.7/hkl/hkl-macros-private.h0000664000175000017500000000552514677222567015754 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_MACROS_PRIVATE_H__ #define __HKL_MACROS_PRIVATE_H__ #include // for assert #include // for fprintf, printf, stderr #include // for calloc, exit, free #include "hkl.h" // for G_BEGIN_DECLS, etc /* specific part for the eulerian -> kappa conversion */ #define HKL_EULERIAN_KAPPA_SOLUTION 1 /* the assert method */ #if !defined(NDEBUG) && !_MSC_VER # include # include # define hkl_assert(x) do{ if (!(x)) {hkl_printbt(); assert(x); } } while(0) #else # define hkl_assert(x) #endif #define hkl_error(expr) do{ \ if(!(expr)){ \ g_error(__STRING(expr)); \ } \ } while(0) /* use for the printf format methods took from glib */ #if !defined(G_GNUC_PRINTF) # define G_GNUC_PRINTF( format_idx, arg_idx ) \ __attribute__((__format__ (__printf__, format_idx, arg_idx))) #endif /* use for the hkl_list */ #define alloc_nr(x) (((x)+16)*3/2) /* * Realloc the buffer pointed at by variable 'x' so that it can hold * at least 'nr' entries; the number of entries currently allocated * is 'alloc', using the standard growing factor alloc_nr() macro. * * DO NOT USE any expression with side-effect for 'x' or 'alloc'. */ #define ALLOC_GROW(x, nr, alloc) \ do { \ if ((nr) > alloc) { \ if (alloc_nr(alloc) < (nr)) \ alloc = (nr); \ else \ alloc = alloc_nr(alloc); \ x = realloc((x), alloc * sizeof(*(x))); \ } \ } while(0) #ifndef NORETURN # ifdef __GNUC__ # define NORETURN __attribute__((__noreturn__)) # else # define NORETURN # ifndef __attribute__ # define __attribute__(x) # endif # endif #endif #define DARRAY(_items) {.item=_items, .size=ARRAY_SIZE(_items), .alloc=ARRAY_SIZE(_items)} #define IGNORE(x) {__typeof__(x) __attribute__((unused)) d=(x);} G_BEGIN_DECLS extern void hkl_printbt(void); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-source.c0000664000175000017500000000672314677222567014314 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for fabs, sqrt #include // for fprintf, FILE #include // for free #include "hkl-macros-private.h" // for HKL_MALLOC #include "hkl-source-private.h" // for HklSource #include "hkl-vector-private.h" // for hkl_vector_div_double, etc #include "hkl.h" // for HKL_EPSILON, FALSE, etc /** * hkl_source_dup: * @self: the #Hklsource to copy * * copy constructor * TODO test * * Returns: **/ HklSource *hkl_source_dup(const HklSource *self) { HklSource *dup = g_new(HklSource, 1); *dup = *self; return dup; } /** * hkl_source_free: * @self: the #Hklsource to delete * * destructor * TODO: test **/ void hkl_source_free(HklSource *self) { if (self) free(self); } /** * hkl_source_init: * @self: the #Hklsource to initialize * @wave_length: the wave length to set * @x: x coordinates of the ki vector * @y: y coordinates of the ki vector * @z: z coordinates of the ki vector * * initialize the #HklSource * * Returns: HKL_SUCCESS if everythongs goes fine, HKL_FAIL otherwise **/ int hkl_source_init(HklSource *self, double wave_length, double x, double y, double z) { if (wave_length > HKL_EPSILON && ( x > HKL_EPSILON || y > HKL_EPSILON || z > HKL_EPSILON)) { double norm; norm = sqrt(x*x + y*y + z*z); self->wave_length = wave_length; hkl_vector_init(&self->direction, x, y, z); hkl_vector_div_double(&self->direction, norm); return TRUE; } else return FALSE; } /** * hkl_source_cmp: (skip) * @self: 1st #Hklsource * @s: 2nd #Hklsource * * compare two sources * * Returns: **/ int hkl_source_cmp(HklSource const *self, HklSource const *s) { return ( (fabs(self->wave_length - s->wave_length) < HKL_EPSILON) && hkl_vector_is_colinear(&self->direction, &s->direction)); } /** * hkl_source_compute_ki: (skip) * @self: * @ki: (out caller-allocates): * * compute the ki hkl_vector **/ void hkl_source_compute_ki(HklSource const *self, HklVector *ki) { *ki = self->direction; hkl_vector_times_double(ki, HKL_TAU / self->wave_length); } /** * hkl_source_get_wavelength: (skip) * @self: * * get the wave_length * * Returns: the wave_length **/ double hkl_source_get_wavelength(HklSource const *self) { return self->wave_length; } /** * hkl_source_fprintf: (skip) * @f: * @self: * * printf the source **/ void hkl_source_fprintf(FILE *f, HklSource const *self) { fprintf(f, "%f", self->wave_length); hkl_vector_fprintf(f, &self->direction); } hkl-5.1.7/hkl/hkl-pseudoaxis-auto-private.h0000664000175000017500000001244214677222567017616 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_AUTO_H__ #define __HKL_PSEUDOAXIS_AUTO_H__ #include // for gsl_vector #include // for NULL #include // for uint #include "hkl-detector-private.h" // for hkl_detector_new_copy #include "hkl-geometry-private.h" // for hkl_geometry_new_copy #include "hkl-macros-private.h" // for hkl_assert, etc #include "hkl-pseudoaxis-private.h" // for HklModeOperations, etc #include "hkl.h" // for HklMode, hkl_detector_free, etc #include "hkl/ccan/container_of/container_of.h" // for container_of #include "hkl/ccan/array_size/array_size.h" // ARRAY_SIZE G_BEGIN_DECLS typedef struct _HklFunction HklFunction; typedef struct _HklModeAutoInfo HklModeAutoInfo; typedef struct _HklModeAutoWithInit HklModeAutoWithInit; /***************/ /* HklModeAuto */ /***************/ struct _HklFunction { const uint size; int (* function) (const gsl_vector *x, void *params, gsl_vector *f); }; typedef darray(const HklFunction*) darray_function; struct _HklModeAutoInfo { const HklModeInfo info; darray_function functions; }; #define HKL_MODE_OPERATIONS_AUTO_DEFAULTS \ HKL_MODE_OPERATIONS_DEFAULTS, \ .set = hkl_mode_auto_set_real #define CHECK_NAN(x, len) do{ \ for(uint i=0; igeometry) hkl_geometry_free(self->geometry); if(self->detector) hkl_detector_free(self->detector); if(self->sample) hkl_sample_free(self->sample); hkl_mode_free_real(mode); } static NEEDED int hkl_mode_auto_with_init_initialized_set_real(HklMode *mode, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error) { HklModeAutoWithInit *self = container_of(mode, HklModeAutoWithInit, mode); hkl_error(error == NULL || *error == NULL); if(initialized){ if(geometry){ if(self->geometry) hkl_geometry_free(self->geometry); self->geometry = hkl_geometry_new_copy(geometry); } if(detector){ if(self->detector) hkl_detector_free(self->detector); self->detector = hkl_detector_new_copy(detector); } if(sample){ if(self->sample) hkl_sample_free(self->sample); self->sample = hkl_sample_new_copy(sample); } } mode->initialized = initialized; return TRUE; } extern HklMode *hkl_mode_auto_with_init_new(const HklModeAutoInfo *info, const HklModeOperations *ops, int initialized); G_END_DECLS #endif /* __HKL_PSEUDOAXIS_AUTO_H__ */ hkl-5.1.7/hkl/hkl-engine-soleil-nanoscopium-robot.c0000664000175000017500000001145614677222567021221 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include // for gsl_isnan #include "hkl-factory-private.h" // for autodata_factories_, etc #include "hkl-pseudoaxis-common-hkl-private.h" #define RZ "rz" #define RS "rs" #define RX "rx" #define R "r" #define DELTA "delta" #define GAMMA "gamma" /********/ /* mode */ /********/ static HklMode *lifting_detector_rz() { static const char *axes_r[] = {RZ, RS, RX, R, DELTA, GAMMA}; static const char *axes_w[] = {RZ, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector rz", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_rs() { static const char *axes_r[] = {RZ, RS, RX, R, DELTA, GAMMA}; static const char *axes_w[] = {RS, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector rs", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } static HklMode *lifting_detector_rx() { static const char *axes_r[] = {RZ, RS, RX, R, DELTA, GAMMA}; static const char *axes_w[] = {RX, DELTA, GAMMA}; static const HklFunction *functions[] = {&RUBh_minus_Q_func}; static const HklModeAutoInfo info = { HKL_MODE_AUTO_INFO("lifting detector rx", axes_r, axes_w, functions), }; return hkl_mode_auto_new(&info, &hkl_full_mode_operations, TRUE); } /**********************/ /* pseudo axis engine */ /**********************/ static HklEngine *hkl_engine_soleil_nanoscopium_robot_hkl_new(HklEngineList *engines) { HklEngine *self; HklMode *default_mode; self = hkl_engine_hkl_new(engines); default_mode = lifting_detector_rz(); hkl_engine_add_mode(self, default_mode); hkl_engine_mode_set(self, default_mode); hkl_engine_add_mode(self, lifting_detector_rs()); hkl_engine_add_mode(self, lifting_detector_rx()); return self; } /****************************/ /* SOLEIL NANOSCOPIUM ROBOT */ /****************************/ #define HKL_GEOMETRY_TYPE_SOLEIL_NANOSCOPIUM_ROBOT_DESCRIPTION \ "+ xrays source fix allong the :math:`\\vec{x}` direction (1, 0, 0)\n" \ "+ 3 axes for the sample\n" \ "\n" \ " + **" RZ "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" \ " + **" RS "** : rotation around the :math:`\\vec{y}` direction (0, 1, 0)\n" \ " + **" RX "** : rotating around the :math:`-\\vec{x}` direction (-1, 0, 0)\n" \ "\n" \ "+ 3 axis for the detector\n" \ "\n" \ " + **" R "** : radius of the sphere\n" \ " + **" DELTA "** : rotation around the :math:`-\\vec{y}` direction (0, -1, 0)\n" \ " + **" GAMMA "** : rotation around the :math:`-\\vec{z}` direction (0, 0, -1)\n" static const char* hkl_geometry_soleil_nanoscopium_robot_axes[] = {RZ, RS, RX, R, DELTA, GAMMA}; static HklGeometry *hkl_geometry_new_soleil_nanoscopium_robot(const HklFactory *factory) { HklGeometry *self = hkl_geometry_new(factory, &hkl_geometry_operations_defaults); HklHolder *h; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation(h, RZ, 0, 0, -1, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, RS, 0, 1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, RX, -1, 0, 0, &hkl_unit_angle_deg); h = hkl_geometry_add_holder(self); hkl_holder_add_parameter(h, R, &hkl_unit_length_meter); hkl_holder_add_rotation(h, DELTA, 0, -1, 0, &hkl_unit_angle_deg); hkl_holder_add_rotation(h, GAMMA, 0, 0, -1, &hkl_unit_angle_deg); return self; } static HklEngineList *hkl_engine_list_new_soleil_nanoscopium_robot(const HklFactory *factory) { HklEngineList *self = hkl_engine_list_new(); hkl_engine_soleil_nanoscopium_robot_hkl_new(self); return self; } REGISTER_DIFFRACTOMETER(soleil_nanoscopium_robot, "SOLEIL NANOSCOPIUM ROBOT", HKL_GEOMETRY_TYPE_SOLEIL_NANOSCOPIUM_ROBOT_DESCRIPTION); hkl-5.1.7/hkl/hkl-pseudoaxis-common-readonly.c0000664000175000017500000002202114677222567020266 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "hkl-pseudoaxis-common-readonly-private.h" #include "hkl-pseudoaxis-private.h" /* incidence */ typedef struct _HklEngineIncidence HklEngineIncidence; struct _HklEngineIncidence { HklEngine engine; HklParameter *incidence; HklParameter *azimuth; }; #define HKL_MODE_INCIDENCE_ERROR hkl_mode_incidence_error_quark () static GQuark hkl_mode_incidence_error_quark (void) { return g_quark_from_static_string ("hkl-mode-incidence-error-quark"); } typedef enum { HKL_MODE_INCIDENCE_ERROR_GET, /* can not get the engine */ HKL_MODE_INCIDENCE_ERROR_SET, /* can not set the engine */ } HklModeIncidenceError; static int hkl_mode_incidence_get_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklVector ki; double incidence; double azimuth; static const HklVector Y = { .data = {0, 1, 0}, }; if (!base || !engine || !engine->mode || !geometry || !detector || !sample){ g_set_error(error, HKL_MODE_INCIDENCE_ERROR, HKL_MODE_INCIDENCE_ERROR_GET, "internal error"); return FALSE; } HklEngineIncidence *engine_incidence = container_of(engine, HklEngineIncidence, engine); const HklModeIncidence *mode = container_of(base, HklModeIncidence, parent); HklVector n = { .data = { mode->n_x->_value, mode->n_y->_value, mode->n_z->_value, } }; /* first check the parameters */ if (hkl_vector_is_null(&n)){ g_set_error(error, HKL_MODE_INCIDENCE_ERROR, HKL_MODE_INCIDENCE_ERROR_GET, "can not compute the incidence when the surface vector is null."); return FALSE; } /* compute the orientation of the surface */ const HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); hkl_vector_rotated_quaternion(&n, &sample_holder->q); ki = hkl_geometry_ki_get(geometry); incidence = _incidence(&n, &ki); hkl_vector_project_on_plan(&n, &ki); azimuth = hkl_vector_angle(&n, &Y); engine_incidence->incidence->_value = incidence; engine_incidence->azimuth->_value = azimuth; return TRUE; } static int hkl_mode_readonly_set_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { g_set_error(error, HKL_MODE_INCIDENCE_ERROR, HKL_MODE_INCIDENCE_ERROR_SET, "The \"%s\" engine is readonly", base->info->name); return FALSE; } HklMode *hkl_mode_incidence_new(const HklModeInfo *info) { static const HklModeOperations operations = { HKL_MODE_OPERATIONS_DEFAULTS, .capabilities = HKL_ENGINE_CAPABILITIES_READABLE, .get = hkl_mode_incidence_get_real, .set = hkl_mode_readonly_set_real, }; HklModeIncidence *self = g_new(HklModeIncidence, 1); /* the base constructor; */ hkl_mode_init(&self->parent, info, &operations, TRUE); self->n_x = register_mode_parameter(&self->parent, 0); self->n_y = register_mode_parameter(&self->parent, 1); self->n_z = register_mode_parameter(&self->parent, 2); return &self->parent; } static void hkl_engine_incidence_free_real(HklEngine *base) { HklEngineIncidence *self=container_of(base, HklEngineIncidence, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_incidence_new(HklEngineList *engines) { HklEngineIncidence *self; static const HklParameter incidence = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "incidence", .description = "incidence of the incomming beam.", }; static const HklParameter azimuth = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "azimuth", .description = "azimuth of the sample surface (projection of $\\vec{n}$ on the $yOz$ plan", }; static const HklParameter *pseudo_axes[] = {&incidence, &azimuth}; static HklEngineInfo info = { HKL_ENGINE_INFO("incidence", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_SAMPLE), }; static HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_incidence_free_real, }; self = g_new(HklEngineIncidence, 1); hkl_engine_init(&self->engine, &info, &operations, engines); self->incidence = register_pseudo_axis(&self->engine, engines, &incidence); self->azimuth = register_pseudo_axis(&self->engine, engines, &azimuth); return &self->engine; } /* emergence */ typedef struct _HklEngineEmergence HklEngineEmergence; struct _HklEngineEmergence { HklEngine engine; HklParameter *emergence; HklParameter *azimuth; }; #define HKL_MODE_EMERGENCE_ERROR hkl_mode_emergence_error_quark () static GQuark hkl_mode_emergence_error_quark (void) { return g_quark_from_static_string ("hkl-mode-emergence-error-quark"); } typedef enum { HKL_MODE_EMERGENCE_ERROR_GET, /* can not get the engine */ HKL_MODE_EMERGENCE_ERROR_SET, /* can not set the engine */ } HklModeEmergenceError; static int hkl_mode_emergence_get_real(HklMode *base, HklEngine *engine_base, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error) { HklVector kf; double emergence; double azimuth; static const HklVector X = { .data = {1, 0, 0}, }; static const HklVector Y = { .data = {0, 1, 0}, }; if (!base || !engine_base || !engine_base->mode || !geometry || !detector || !sample){ g_set_error(error, HKL_MODE_EMERGENCE_ERROR, HKL_MODE_EMERGENCE_ERROR_GET, "internal error"); return FALSE; } HklEngineEmergence *engine = container_of(engine_base, HklEngineEmergence, engine); const HklModeIncidence *mode = container_of(base, HklModeIncidence, parent); HklVector n = { .data = { mode->n_x->_value, mode->n_y->_value, mode->n_z->_value, } }; /* first check the parameters */ if (hkl_vector_is_null(&n)){ g_set_error(error, HKL_MODE_EMERGENCE_ERROR, HKL_MODE_EMERGENCE_ERROR_GET, "Can not compute the emergence when the surface vector is null."); return FALSE; } /* compute the orientation of the surface */ const HklHolder *sample_holder = hkl_geometry_sample_holder_get(geometry, sample); hkl_vector_rotated_quaternion(&n, &sample_holder->q); kf = hkl_geometry_kf_get(geometry, detector); emergence = _emergence(&n, &kf); hkl_vector_project_on_plan(&n, &X); azimuth = hkl_vector_angle(&n, &Y); engine->emergence->_value = emergence; engine->azimuth->_value = azimuth; return TRUE; } HklMode *hkl_mode_emergence_new(const HklModeInfo *info) { static const HklModeOperations operations = { HKL_MODE_OPERATIONS_DEFAULTS, .capabilities = HKL_ENGINE_CAPABILITIES_READABLE, .get = hkl_mode_emergence_get_real, .set = hkl_mode_readonly_set_real, }; HklModeIncidence *self = g_new(HklModeIncidence, 1); /* the base constructor; */ hkl_mode_init(&self->parent, info, &operations, TRUE); self->n_x = register_mode_parameter(&self->parent, 0); self->n_y = register_mode_parameter(&self->parent, 1); self->n_z = register_mode_parameter(&self->parent, 2); return &self->parent; } static void hkl_engine_emergence_free_real(HklEngine *base) { HklEngineEmergence *self=container_of(base, HklEngineEmergence, engine); hkl_engine_release(&self->engine); free(self); } HklEngine *hkl_engine_emergence_new(HklEngineList *engines) { HklEngineEmergence *self = g_new(HklEngineEmergence, 1); static const HklParameter emergence = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "emergence", .description = "incidence of the outgoing beam.", }; static const HklParameter azimuth = { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "azimuth", .description = "azimuth of the sample surface (projection of $\\vec{n}$ on the $yOz$ plan", }; static const HklParameter *pseudo_axes[] = {&emergence, &azimuth}; static HklEngineInfo info = { HKL_ENGINE_INFO("emergence", pseudo_axes, HKL_ENGINE_DEPENDENCIES_AXES | HKL_ENGINE_DEPENDENCIES_SAMPLE), }; static HklEngineOperations operations = { HKL_ENGINE_OPERATIONS_DEFAULTS, .free=hkl_engine_emergence_free_real, }; hkl_engine_init(&self->engine, &info, &operations, engines); self->emergence = register_pseudo_axis(&self->engine, engines, &emergence); self->azimuth = register_pseudo_axis(&self->engine, engines, &azimuth); return &self->engine; } hkl-5.1.7/hkl/hkl-pseudoaxis-common-readonly-private.h0000664000175000017500000000704215133715013021726 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #ifndef __HKL_PSEUDOAXIS_COMMON_READONLY_PRIVATE__ #define __HKL_PSEUDOAXIS_COMMON_READONLY_PRIVATE__ #include "hkl-pseudoaxis-private.h" typedef struct _HklModeIncidence HklModeIncidence; struct _HklModeIncidence { HklMode parent; HklParameter *n_x; HklParameter *n_y; HklParameter *n_z; }; extern HklMode *hkl_mode_incidence_new(const HklModeInfo *info); extern HklEngine *hkl_engine_incidence_new(HklEngineList *engines); static inline double _incidence(const HklVector *v1, const HklVector *v2) { return hkl_vector_angle(v1, v2) - M_PI_2; } static inline double _emergence(const HklVector *v1, const HklVector *v2) { return M_PI_2 - hkl_vector_angle(v1, v2); } extern HklMode *hkl_mode_emergence_new(const HklModeInfo *info); extern HklEngine *hkl_engine_emergence_new(HklEngineList *engines); /* mode parameters */ #define SURFACE_PARAMETERS(_x, _y, _z) \ { \ HKL_PARAMETER_DEFAULTS, .name = "x", ._value = (_x), \ .description = "the x coordinate of the surface $\\vec{n}$", \ }, \ { \ HKL_PARAMETER_DEFAULTS, .name = "y", ._value = (_y), \ .description = "the y coordinate of the surface $\\vec{n}$", \ }, \ { \ HKL_PARAMETER_DEFAULTS, .name = "z", ._value = (_z), \ .description = "the z coordinate of the surface $\\vec{n}$", \ } static const HklParameter surface_parameters_y[] = { SURFACE_PARAMETERS(0, 1, 0), }; static const HklParameter surface_parameters_z[] = { SURFACE_PARAMETERS(0, 0, 1), }; #define P99_PROTECT(...) __VA_ARGS__ #define HKL_MODE_INFO_incidence_DEFAULTS(_axes, _parameters) \ HKL_MODE_INFO_RO_WITH_PARAMS("incidence", (_axes), (_parameters)) #define HKL_MODE_INFO_emergence_DEFAULTS(_axes, _parameters) \ HKL_MODE_INFO_RO_WITH_PARAMS("emergence", (_axes), (_parameters)) #define REGISTER_READONLY(_engine, _func, _axes, _parameters) \ static HklEngine* _func(HklEngineList *engines) \ { \ HklEngine *self = hkl_engine_ ## _engine ## _new(engines); \ static const char *axes[] = _axes; \ static const HklModeInfo info = { \ HKL_MODE_INFO_ ## _engine ## _DEFAULTS(axes, _parameters), \ }; \ HklMode *default_mode = hkl_mode_ ## _engine ## _new(&info); \ hkl_engine_add_mode(self, default_mode); \ hkl_engine_mode_set(self, default_mode); \ return self; \ } #define REGISTER_READONLY_INCIDENCE(_func, _axes, _parameters) REGISTER_READONLY(incidence, _func, P99_PROTECT(_axes), _parameters) #define REGISTER_READONLY_EMERGENCE(_func, _axes, _parameters) REGISTER_READONLY(emergence, _func, P99_PROTECT(_axes), _parameters) #endif hkl-5.1.7/hkl/hkl-pseudoaxis-common-hkl-private.h0000664000175000017500000001557315133715013020677 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #ifndef __HKL_PSEUDOAXIS_COMMON_HKL_PRIVATE__ #define __HKL_PSEUDOAXIS_COMMON_HKL_PRIVATE__ #include // for gsl_vector #include "hkl-pseudoaxis-auto-private.h" #include "hkl-pseudoaxis-private.h" // for HklModeOperations, etc #include "hkl.h" // for HklEngine, HklDetector, etc #include "hkl-pseudoaxis-common-readonly-private.h" typedef struct _HklEngineHkl HklEngineHkl; struct _HklEngineHkl { HklEngine engine; HklParameter *h; HklParameter *k; HklParameter *l; }; extern int _RUBh_minus_Q_func(const gsl_vector *x, void *params, gsl_vector *f); extern int _double_diffraction_func(const gsl_vector *x, void *params, gsl_vector *f); extern int _psi_constant_vertical_func(const gsl_vector *x, void *params, gsl_vector *f); extern int _emergence_fixed_func(const gsl_vector *x, void *params, gsl_vector *f); extern int RUBh_minus_Q(double const x[], void *params, double f[]); extern int _double_diffraction(double const x[], void *params, double f[]); extern int hkl_is_reachable(HklEngine *engine, double wavelength, GError **error); extern int hkl_mode_get_hkl_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error); extern int hkl_mode_set_hkl_real(HklMode *self, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, GError **error); extern int hkl_mode_initialized_set_psi_constant_vertical_real(HklMode *base, HklEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, int initialized, GError **error); extern HklEngine *hkl_engine_hkl_new(HklEngineList *engines); #define HKL_MODE_OPERATIONS_HKL_DEFAULTS \ HKL_MODE_OPERATIONS_AUTO_DEFAULTS, \ .get = hkl_mode_get_hkl_real #define HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS \ HKL_MODE_OPERATIONS_HKL_DEFAULTS, \ .set = hkl_mode_set_hkl_real static const HklModeOperations hkl_mode_operations = { HKL_MODE_OPERATIONS_HKL_DEFAULTS, }; static const HklModeOperations hkl_full_mode_operations = { HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS, }; static const HklModeOperations psi_constant_vertical_mode_operations = { HKL_MODE_OPERATIONS_HKL_FULL_DEFAULTS, .capabilities = HKL_ENGINE_CAPABILITIES_READABLE | HKL_ENGINE_CAPABILITIES_WRITABLE | HKL_ENGINE_CAPABILITIES_INITIALIZABLE, .initialized_set = hkl_mode_initialized_set_psi_constant_vertical_real, }; static const HklModeOperations constant_incidence_mode_operations = { HKL_MODE_OPERATIONS_AUTO_WITH_INIT_DEFAULTS, .get = hkl_mode_get_hkl_real, .set = hkl_mode_set_hkl_real }; static const HklFunction RUBh_minus_Q_func = { .function = _RUBh_minus_Q_func, .size = 3, }; static const HklFunction double_diffraction_func = { .function = _double_diffraction_func, .size = 4, }; static const HklFunction psi_constant_vertical_func = { .function = _psi_constant_vertical_func, .size = 4, }; /* mode parameters */ #define CONSTANT_PARAMETER(_name) \ { \ HKL_PARAMETER_DEFAULTS_ANGLE, .name = #_name, \ .description = "the freezed value", \ } #define PSI_CONSTANT_PARAMETERS(_h2, _k2, _l2, _psi) \ { \ HKL_PARAMETER_DEFAULTS, .name = "h2", ._value = _h2, \ .description = "h coordinate of the reference plan", \ }, \ { \ HKL_PARAMETER_DEFAULTS, .name = "k2", ._value = _k2, \ .description = "k coordinate of the reference plan", \ }, \ { \ HKL_PARAMETER_DEFAULTS, .name = "l2", ._value = _l2, \ .description = "l coordinate of the reference plan", \ }, \ { \ HKL_PARAMETER_DEFAULTS_ANGLE, .name = "psi", ._value = _psi, \ .description = "expected angle between the reference and the diffraction plans", \ } static const HklParameter constant_omega_parameters[] = { CONSTANT_PARAMETER(omega) }; static const HklParameter constant_chi_parameters[] = { CONSTANT_PARAMETER(chi) }; static const HklParameter constant_phi_parameters[] = { CONSTANT_PARAMETER(phi) }; /* outside the mode because used in more than one mode */ static const HklParameter double_diffraction_parameters[] = { { HKL_PARAMETER_DEFAULTS, .name = "h2", ._value = 1, .description = "h coordinate of the second diffracting plan", }, { HKL_PARAMETER_DEFAULTS, .name = "k2", ._value = 1, .description = "k coordinate of the second diffracting plan", }, { HKL_PARAMETER_DEFAULTS, .name = "l2", ._value = 1, .description = "l coordinate of the second diffracting plan", }, }; static const HklParameter psi_constant_parameters[] = { PSI_CONSTANT_PARAMETERS(1, 1, 1, 0) }; static const HklParameter constant_incidence_parameters[] = { SURFACE_PARAMETERS(1, 1, 1), { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "incidence", .description = "expected incidence of the incoming beam $\\vec{k_i}$ on the surface." }, { HKL_PARAMETER_DEFAULTS_ANGLE, .name = "azimuth", ._value = M_PI_2, .description = "expected azimuth", }, }; #define HKL_PARAMETER_EMERGENCE_DEFAULTS \ HKL_PARAMETER_DEFAULTS_ANGLE, \ .name="emergence", \ .description = "expected emergence of the outgoing beam $\\vec{k_f}$ from the surface $\\vec{n}$." #define HKL_PARAMETER_EMERGENCE_AZIMUTH_DEFAULTS \ HKL_PARAMETER_DEFAULTS_ANGLE, \ .name="emergence_azimuth", \ ._value = M_PI_2, \ .description = "expected azimuth of the outgoing beam $\\vec{k_f}$ from the surface $\\vec{n}$ projected into the yOz plan." /*******************/ /* Emergence fixed */ /*******************/ static const HklFunction emergence_fixed_func = { .function = _emergence_fixed_func, .size = 4, }; #define HKL_MODE_HKL_EMERGENCE_FIXED_PARAMETERS_DEFAULTS(_x, _y, _z, _emergence) \ SURFACE_PARAMETERS(_x, _y, _z), \ { \ HKL_PARAMETER_EMERGENCE_DEFAULTS, \ ._value = _emergence, \ } extern HklMode *hkl_mode_hkl_emergence_fixed_new(const HklModeAutoInfo *info); #endif hkl-5.1.7/hkl/hkl-matrix-private.h0000664000175000017500000000417214677222567015771 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2020 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_MATRIX_PRIVATE_H__ #define __HKL_MATRIX_PRIVATE_H__ #include #include "hkl.h" G_BEGIN_DECLS struct _HklMatrix { double data[3][3]; }; extern HklMatrix *hkl_matrix_dup(const HklMatrix* self); extern void hkl_matrix_init_from_euler(HklMatrix *self, double euler_x, double euler_y, double euler_z) HKL_ARG_NONNULL(1); extern void hkl_matrix_matrix_set(HklMatrix *self, const HklMatrix *m) HKL_ARG_NONNULL(1, 2); extern void hkl_matrix_init_from_two_vector(HklMatrix *self, const HklVector *v1, const HklVector *v2); extern void hkl_matrix_fprintf(FILE *file, const HklMatrix *self); extern void hkl_matrix_to_euler(const HklMatrix *self, double *euler_x, double *euler_y, double *euler_z); extern void hkl_matrix_times_vector(const HklMatrix *self, HklVector *v); extern void hkl_matrix_transpose(HklMatrix *self); extern double hkl_matrix_det(const HklMatrix *self); extern int hkl_matrix_solve(const HklMatrix *self, HklVector *x, const HklVector *b); extern int hkl_matrix_is_null(const HklMatrix *self); extern void hkl_matrix_div_double(HklMatrix *self, double d); extern int hkl_matrix_inv(const HklMatrix *self, HklMatrix *inv); G_END_DECLS #endif hkl-5.1.7/hkl/hkl-types.c0000664000175000017500000000601014677222567014145 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2011-2019, 2022 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-types.h" #include "glib/gthread.h" // for g_once_init_enter, etc #include "glibconfig.h" // for gsize #include "hkl-detector-private.h" // for hkl_detector_new_copy #include "hkl-geometry-private.h" // for hkl_geometry_list_free, etc #include "hkl-matrix-private.h" // for hkl_matrix_dup #include "hkl-pseudoaxis-private.h" // for hkl_engine_list_new_copy #include "hkl-sample-private.h" // for hkl_sample_reflection_free, etc #include "hkl-unit-private.h" // for hkl_unit_dup, hkl_unit_free #include "hkl-vector-private.h" // for hkl_vector_dup, etc static void *hkl_fake_ref(void *src) { return src; } static void hkl_fake_unref(void *src) { return; } G_DEFINE_BOXED_TYPE (HklDetector, hkl_detector, hkl_detector_new_copy, hkl_detector_free); G_DEFINE_BOXED_TYPE (HklEngine, hkl_engine, hkl_fake_ref, hkl_fake_unref); G_DEFINE_BOXED_TYPE (HklEngineList, hkl_engine_list, hkl_engine_list_new_copy, hkl_engine_list_free); G_DEFINE_BOXED_TYPE (HklFactory, hkl_factory, hkl_fake_ref, hkl_fake_unref); G_DEFINE_BOXED_TYPE (HklGeometry, hkl_geometry, hkl_geometry_new_copy, hkl_geometry_free); G_DEFINE_BOXED_TYPE (HklGeometryList, hkl_geometry_list, hkl_geometry_list_new_copy, hkl_geometry_list_free); G_DEFINE_BOXED_TYPE (HklGeometryListItem, hkl_geometry_list_item, hkl_geometry_list_item_new_copy, hkl_geometry_list_item_free); G_DEFINE_BOXED_TYPE (HklLattice, hkl_lattice, hkl_lattice_new_copy, hkl_lattice_free); G_DEFINE_BOXED_TYPE (HklMatrix, hkl_matrix, hkl_matrix_dup, hkl_matrix_free); G_DEFINE_BOXED_TYPE (HklParameter, hkl_parameter, hkl_parameter_new_copy, hkl_parameter_free); G_DEFINE_BOXED_TYPE (HklQuaternion, hkl_quaternion, hkl_quaternion_dup, hkl_quaternion_free); G_DEFINE_BOXED_TYPE (HklSample, hkl_sample, hkl_sample_new_copy, hkl_sample_free); G_DEFINE_BOXED_TYPE (HklSampleReflection, hkl_sample_reflection, hkl_fake_ref, hkl_fake_unref); G_DEFINE_BOXED_TYPE (HklUnit, hkl_unit, hkl_unit_dup, hkl_unit_free); G_DEFINE_BOXED_TYPE (HklVector, hkl_vector, hkl_vector_dup, hkl_vector_free); hkl-5.1.7/configure.ac0000664000175000017500000002334515144640434013566 0ustar00piccapicca##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_maj], [5]) m4_define([v_min], [1]) m4_define([v_mic], [7]) m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl ##-- When released, remove the dnl on the below line m4_undefine([v_rev]) ##-- When doing snapshots - change soname. remove dnl on below line dnl m4_define([relname], [ver-pre-svn-07]) dnl m4_define([v_rel], [-release relname]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])]) m4_define([lt_cur], m4_eval(v_maj + v_min)) m4_define([lt_rev], v_mic) m4_define([lt_age], v_min) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## AC_PREREQ([2.72]) AC_INIT([hkl],[v_ver],[picca@synchrotron-soleil.fr]) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE([silent-rules tar-ustar -Wno-portability subdir-objects]) # Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CXX AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_RANLIB LT_INIT AM_SILENT_RULES ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_ifdef([v_rev], , [m4_define([v_rev], [0])]) m4_ifdef([v_rel], , [m4_define([v_rel], [])]) AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version]) AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version]) AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version]) AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison]) version_info="lt_cur:lt_rev:lt_age" release_info="v_rel" AC_SUBST(version_info) AC_SUBST(release_info) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## VMAJ=v_maj AC_SUBST(VMAJ) # activate all the warnings AX_CFLAGS_WARN_ALL AX_CXXFLAGS_WARN_ALL # Checks for libraries. AX_PATH_GSL AM_PATH_GLIB_2_0 # Checks for header files. AC_FUNC_ALLOCA AC_CHECK_HEADERS_ONCE([fcntl.h float.h limits.h malloc.h memory.h stddef.h stdint.h stdlib.h string.h sys/param.h sys/time.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_INT8_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_UINT8_T # Checks for library functions. AC_FUNC_ERROR_AT_LINE AC_FUNC_MALLOC AC_FUNC_REALLOC AC_FUNC_VPRINTF AC_FUNC_FORK AC_CHECK_FUNCS([atexit dup2 fchdir floor getcwd getpagesize gettimeofday isascii memchr memmove memset mkdir pow putenv rmdir select sqrt strchr strcasecmp strdup strerror strncasecmp strrchr strstr strtol strtoul]) dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING) dnl Create a new --enable option that defaults to being disabled. dnl NAME is the base name of the option. The shell variable enable_NAME dnl will be set to either the user's value (if the option is dnl specified; 'yes' for a plain --enable-NAME) or to 'no' (if the dnl option is not specified). Note that the shell variable name is dnl constructed as autoconf does, by replacing non-alphanumeric dnl characters with "_". dnl HELP-STRING is the help text for the option. AC_DEFUN([OPTION_DEFAULT_OFF], [dnl AC_ARG_ENABLE([$1],[AS_HELP_STRING([--enable-$1],[$2])],[],[dnl m4_bpatsubst([enable_$1], [[^0-9a-z]], [_])=no])dnl ])dnl dnl OPTION_DEFAULT_ON(NAME, HELP-STRING) dnl Create a new --enable option that defaults to being enabled. dnl NAME is the base name of the option. The shell variable enable_NAME dnl will be set to either the user's value (if the option is dnl specified; 'no' for a plain --enable-NAME) or to 'yes' (if the dnl option is not specified). Note that the shell variable name is dnl constructed as autoconf does, by replacing non-alphanumeric dnl characters with "_". dnl HELP-STRING is the help text for the option. AC_DEFUN([OPTION_DEFAULT_ON], [dnl AC_ARG_ENABLE([$1],[AS_HELP_STRING([--disable-$1],[$2])],[],[dnl m4_bpatsubst([enable_$1], [[^0-9a-z]], [_])=yes])dnl ])dnl dnl **************** dnl *** analyzer *** dnl **************** OPTION_DEFAULT_OFF([analyzer], [enable gcc-10 -fanalyzer]) AM_CONDITIONAL([ANALYZER], [test x$enable_analyzer != xno]) AM_COND_IF([ANALYZER], AX_CHECK_COMPILE_FLAG([-fanalyzer], [CFLAGS="$CFLAGS -fanalyzer"], [], []) ) dnl *************** dnl *** logging *** dnl *************** OPTION_DEFAULT_OFF([logging], [enable the glib logging]) AM_CONDITIONAL([LOGGING], [test x$enable_logging != xno]) AM_COND_IF([LOGGING], AC_DEFINE([LOGGING], [1], [activate the logging or not]) ) dnl *********** dnl *** doc *** dnl *********** OPTION_DEFAULT_ON([hkl-doc], [build documentation]) AM_CONDITIONAL([HKL_DOC], [test x$enable_hkl_doc = xyes]) AM_COND_IF([HKL_DOC], [dnl *** asymptote *** AC_PATH_PROG([ASY], [asy], [echo]) dnl *** emacs *** AC_PATH_PROG([EMACS], [emacs], [no]) dnl *** gnuplot *** AC_PATH_PROG([GNUPLOT], [gnuplot], [echo]) dnl *** xvfb-run *** AC_PATH_PROG([XVFB_RUN], [xvfb-run], [echo]) ]) dnl *** mathkjax *** AC_ARG_WITH([mathjax], [AS_HELP_STRING([--with-mathjax],[use mathjax (default is "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML")])], [use_mathjax=$withval], [use_mathjax="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"]) MATHJAX_PATH=$use_mathjax AC_SUBST(MATHJAX_PATH) dnl *** gtk-doc *** GTK_DOC_CHECK([1.9],[--flavour no-tmpl]) dnl ********************************************** dnl *** add an option for the binoculars build *** dnl ********************************************** OPTION_DEFAULT_ON([binoculars], [do not compile binoculars-ng]) AM_CONDITIONAL([BINOCULARS], [test x$enable_binoculars = xyes]) AM_COND_IF([BINOCULARS], [PKG_CHECK_MODULES([HDF5], [hdf5-serial >= 1.8.13]) PKG_CHECK_MODULES([CGLM], [cglm >= 0.7]) AC_PATH_PROG([CABAL], [cabal]) if test -z "$CABAL" ; then AC_MSG_ERROR([cabal was not found]) fi ]) AC_SUBST(CABALFLAGS) dnl ******************************* dnl *** add an option for hkl3d *** dnl ******************************* OPTION_DEFAULT_OFF([hkl3d], [compile the hkl3d library]) AM_CONDITIONAL([HKL3D], [test x$enable_hkl3d != xno]) AM_COND_IF([HKL3D], [PKG_CHECK_MODULES([ASSIMP], [assimp >= 0]) PKG_CHECK_MODULES([BULLET], [bullet >= 2.82]) dnl *** blender *** AC_PATH_PROG([BLENDER], [blender], [no]) AC_PATH_PROG([BLENDER_THUMBNAILER], [blender-thumbnailer], [no]) dnl check for yaml AC_SEARCH_LIBS([yaml_get_version], [yaml], [AC_CHECK_HEADERS([yaml.h], [], [AC_MSG_ERROR([Could not find the yaml headers, please install yaml developement files])] )], [AC_MSG_ERROR([Could not find the libyaml runtime, please install yaml])]) YAML_CFLAGS="" AC_SUBST(YAML_CFLAGS) YAML_LIBS="-lyaml" AC_SUBST(YAML_LIBS)]) dnl **************************************** dnl *** add an option for the ghkl build *** dnl **************************************** OPTION_DEFAULT_ON([gui], [do not compile the gui interface]) AM_CONDITIONAL([GUI], [test x$enable_gui = xyes]) AM_COND_IF([GUI], [PKG_CHECK_MODULES([GTK], [gtk4 >= 4.12]) AM_COND_IF([HKL3D], [PKG_CHECK_MODULES([EPOXY], [epoxy >= 1.5.10]) ]) ]) dnl ********************* dnl *** introspection *** dnl ********************* GOBJECT_INTROSPECTION_CHECK([0.6.7]) AM_COND_IF([HAVE_INTROSPECTION], [PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])]) dnl *************** dnl *** contrib *** dnl *************** OPTION_DEFAULT_OFF([contrib], [compile the contrib part]) AM_CONDITIONAL([CONTRIB], [test x$enable_contrib != xno]) dnl ****************** dnl *** datatype99 *** dnl ****************** OPTION_DEFAULT_OFF([datatype99], [use the system datatype99]) AC_CHECK_HEADERS([datatype99.h], [], [enable_datatype99=no]) DATATYPE99_CFLAGS="-ftrack-macro-expansion=0" AM_CONDITIONAL([DATATYPE99], [test x$enable_datatype99 != xno]) AM_COND_IF([DATATYPE99], [], [DATATYPE99_CFLAGS=$DATATYPE99_CFLAGS' -I$(top_srcdir)/third-party/'] ) AC_SUBST(DATATYPE99_CFLAGS) dnl *************** dnl *** openssl *** dnl *************** PKG_CHECK_MODULES([OPENSSL], [openssl >= 3]) AC_CONFIG_FILES([Makefile binoculars-ng/binoculars/Makefile binoculars-ng/hkl.cabal binoculars-ng/Makefile hkl/Makefile hkl/api2/Makefile hkl/ccan/Makefile hkl.h hkl.pc hkl3d/Makefile hkl3d.pc tests/Makefile tests/bindings/Makefile tests/tap/Makefile third-party/Makefile Documentation/Makefile Documentation/hkl.org Documentation/api/Makefile Documentation/figures/Makefile Documentation/sphinx/Makefile Documentation/sphinx/source/conf.py gui/Makefile data/Makefile contrib/Makefile contrib/cristal/Makefile contrib/cristal/xrays/Makefile contrib/sixs/Makefile contrib/petra3/Makefile ]) AC_OUTPUT hkl-5.1.7/configure0000775000175000017500000300605615144640447013216 0ustar00piccapicca#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for hkl 5.1.7. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: picca@synchrotron-soleil.fr about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='hkl' PACKAGE_TARNAME='hkl' PACKAGE_VERSION='5.1.7' PACKAGE_STRING='hkl 5.1.7' PACKAGE_BUGREPORT='picca@synchrotron-soleil.fr' PACKAGE_URL='' ac_unique_file="config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_func_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS OPENSSL_LIBS OPENSSL_CFLAGS DATATYPE99_CFLAGS DATATYPE99_FALSE DATATYPE99_TRUE CONTRIB_FALSE CONTRIB_TRUE GOBJECT_LIBS GOBJECT_CFLAGS HAVE_INTROSPECTION_FALSE HAVE_INTROSPECTION_TRUE INTROSPECTION_MAKEFILE INTROSPECTION_LIBS INTROSPECTION_CFLAGS INTROSPECTION_TYPELIBDIR INTROSPECTION_GIRDIR INTROSPECTION_GENERATE INTROSPECTION_COMPILER INTROSPECTION_SCANNER _GI_EXP_LIBDIR _GI_EXP_DATADIR EPOXY_LIBS EPOXY_CFLAGS GTK_LIBS GTK_CFLAGS GUI_FALSE GUI_TRUE YAML_LIBS YAML_CFLAGS BLENDER_THUMBNAILER BLENDER BULLET_LIBS BULLET_CFLAGS ASSIMP_LIBS ASSIMP_CFLAGS HKL3D_FALSE HKL3D_TRUE CABALFLAGS CABAL CGLM_LIBS CGLM_CFLAGS HDF5_LIBS HDF5_CFLAGS BINOCULARS_FALSE BINOCULARS_TRUE GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HAVE_GTK_DOC_FALSE HAVE_GTK_DOC_TRUE GTKDOC_DEPS_LIBS GTKDOC_DEPS_CFLAGS HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK_PATH GTKDOC_CHECK MATHJAX_PATH XVFB_RUN GNUPLOT EMACS ASY HKL_DOC_FALSE HKL_DOC_TRUE LOGGING_FALSE LOGGING_TRUE ANALYZER_FALSE ANALYZER_TRUE LIBOBJS ALLOCA GLIB_COMPILE_RESOURCES GLIB_MKENUMS GOBJECT_QUERY GLIB_GENMARSHAL GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG GSL_LIBS GSL_CFLAGS GSL_CONFIG VMAJ release_info version_info CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL ac_ct_AR AR DLLTOOL OBJDUMP FILECMD NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL RANLIB LN_S CPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__xargs_n am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static enable_pic with_pic enable_fast_install enable_aix_soname with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock with_gsl_prefix with_gsl_exec_prefix enable_gsltest enable_glibtest enable_analyzer enable_logging enable_hkl_doc with_mathjax with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_binoculars enable_hkl3d enable_gui enable_introspection enable_contrib enable_datatype99 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP LT_SYS_LIBRARY_PATH CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS GLIB_GENMARSHAL GOBJECT_QUERY GLIB_MKENUMS GLIB_COMPILE_RESOURCES GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS HDF5_CFLAGS HDF5_LIBS CGLM_CFLAGS CGLM_LIBS ASSIMP_CFLAGS ASSIMP_LIBS BULLET_CFLAGS BULLET_LIBS GTK_CFLAGS GTK_LIBS EPOXY_CFLAGS EPOXY_LIBS GOBJECT_CFLAGS GOBJECT_LIBS OPENSSL_CFLAGS OPENSSL_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures hkl 5.1.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/hkl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of hkl 5.1.7:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --disable-libtool-lock avoid locking (might break parallel builds) --disable-gsltest Do not try to compile and run a test GSL program --disable-glibtest do not try to compile and run a test GLIB program --enable-analyzer enable gcc-10 -fanalyzer --enable-logging enable the glib logging --disable-hkl-doc build documentation --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --disable-binoculars do not compile binoculars-ng --enable-hkl3d compile the hkl3d library --disable-gui do not compile the gui interface --enable-introspection=[no/auto/yes] Enable introspection for this build --enable-contrib compile the contrib part --enable-datatype99 use the system datatype99 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gsl-prefix=PFX Prefix where GSL is installed (optional) --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional) --with-mathjax use mathjax (default is "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML") --with-html-dir=PATH path to installed docs Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config GLIB_GENMARSHAL value of glib_genmarshal for glib-2.0, overriding pkg-config GOBJECT_QUERY value of gobject_query for glib-2.0, overriding pkg-config GLIB_MKENUMS value of glib_mkenums for glib-2.0, overriding pkg-config GLIB_COMPILE_RESOURCES value of glib_compile_resources for gio-2.0, overriding pkg-config GTKDOC_DEPS_CFLAGS C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config HDF5_CFLAGS C compiler flags for HDF5, overriding pkg-config HDF5_LIBS linker flags for HDF5, overriding pkg-config CGLM_CFLAGS C compiler flags for CGLM, overriding pkg-config CGLM_LIBS linker flags for CGLM, overriding pkg-config ASSIMP_CFLAGS C compiler flags for ASSIMP, overriding pkg-config ASSIMP_LIBS linker flags for ASSIMP, overriding pkg-config BULLET_CFLAGS C compiler flags for BULLET, overriding pkg-config BULLET_LIBS linker flags for BULLET, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config EPOXY_CFLAGS C compiler flags for EPOXY, overriding pkg-config EPOXY_LIBS linker flags for EPOXY, overriding pkg-config GOBJECT_CFLAGS C compiler flags for GOBJECT, overriding pkg-config GOBJECT_LIBS linker flags for GOBJECT, overriding pkg-config OPENSSL_CFLAGS C compiler flags for OPENSSL, overriding pkg-config OPENSSL_LIBS linker flags for OPENSSL, overriding pkg-config Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF hkl configure 5.1.7 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (void); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status ;; esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) eval "$3=yes" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 printf %s "checking for int$2_t... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in int$2_t 'int' 'long int' \ 'long long int' 'short int' 'signed char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main (void) { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main (void) { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if eval test \"x\$"$3"\" = x"no" then : else case e in #( e) break ;; esac fi done ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_intX_t # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 printf %s "checking for uint$2_t... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if eval test \"x\$"$3"\" = x"no" then : else case e in #( e) break ;; esac fi done ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by hkl $as_me 5.1.7, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (char **p, int i) { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " fcntl.h fcntl_h HAVE_FCNTL_H" as_fn_append ac_header_c_list " float.h float_h HAVE_FLOAT_H" as_fn_append ac_header_c_list " limits.h limits_h HAVE_LIMITS_H" as_fn_append ac_header_c_list " malloc.h malloc_h HAVE_MALLOC_H" as_fn_append ac_header_c_list " memory.h memory_h HAVE_MEMORY_H" as_fn_append ac_header_c_list " stddef.h stddef_h HAVE_STDDEF_H" as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF" as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" as_fn_append ac_func_c_list " fork HAVE_FORK" as_fn_append ac_func_c_list " vfork HAVE_VFORK" # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub ltmain.sh compile missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/config" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" am__api_version='1.18' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 printf %s "checking whether sleep supports fractional seconds... " >&6; } if test ${am_cv_sleep_fractional_seconds+y} then : printf %s "(cached) " >&6 else case e in #( e) if sleep 0.001 2>/dev/null then : am_cv_sleep_fractional_seconds=yes else case e in #( e) am_cv_sleep_fractional_seconds=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 printf %s "checking filesystem timestamp resolution... " >&6; } if test ${am_cv_filesystem_timestamp_resolution+y} then : printf %s "(cached) " >&6 else case e in #( e) # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `ls -t conftest.ts[12]` && { test "$*" != "X conftest.ts1 conftest.ts2" || test "$*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment. See 'config.log' for more details" "$LINENO" 5; } fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$2" = conftest.ts3 && test "$3" = conftest.ts2 && test "$4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } # This check should not be cached, as it may vary across builds of # different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 printf "%s\n" "$am_build_env_is_sane" >&6; } if test "$am_build_env_is_sane" = no; then as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 then : else case e in #( e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ;; esac fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ *'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS ;; esac fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use plain mkdir -p, # in the hope it doesn't have the bugs of ancient mkdir. MKDIR_P='mkdir -p' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } AM_BACKSLASH='\' am__rm_f_notfound= if (rm -f && rm -fr && rm -rf) 2>/dev/null then : else case e in #( e) am__rm_f_notfound='""' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 printf %s "checking xargs -n works... " >&6; } if test ${am_cv_xargs_n_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3" then : am_cv_xargs_n_works=yes else case e in #( e) am_cv_xargs_n_works=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 printf "%s\n" "$am_cv_xargs_n_works" >&6; } if test "$am_cv_xargs_n_works" = yes then : am__xargs_n='xargs -n' else case e in #( e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' ;; esac fi if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='hkl' VERSION='5.1.7' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar plaintar pax cpio none' # The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } if test x$am_uid = xunknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} elif test $am_uid -le $am_max_uid; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } _am_tools=none fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } if test x$gm_gid = xunknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} elif test $am_gid -le $am_max_gid; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } _am_tools=none fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 printf %s "checking how to create a ustar tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_ustar-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x ustar -w "$$tardir"' am__tar_='pax -L -x ustar -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H ustar -L' am__tar_='find "$tardir" -print | cpio -o -H ustar -L' am__untar='cpio -i -H ustar -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_ustar}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if test ${am_cv_prog_tar_ustar+y} then : printf %s "(cached) " >&6 else case e in #( e) am_cv_prog_tar_ustar=$_am_tool ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # Checks for programs. for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done # aligned with autoconf, so not including core; see bug#72225. rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else case e in #( e) CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else case e in #( e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 ;; esac fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CXX_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else case e in #( e) # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP ;; esac fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.5.4' macro_revision='2.5.4' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else case e in #( e) i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_reload_flag='-r' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" fi ;; esac fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else case e in #( e) # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BCDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ;; esac fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else case e in #( e) with_sysroot=no ;; esac fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else case e in #( e) lt_cv_cc_needs_belf=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_manifest_tool+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -no_fixup_chains linker flag" >&5 printf %s "checking for -no_fixup_chains linker flag... " >&6; } if test ${lt_cv_support_no_fixup_chains+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_support_no_fixup_chains=yes else case e in #( e) lt_cv_support_no_fixup_chains=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else case e in #( e) lt_cv_ld_exported_symbols_list=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then as_fn_append _lt_dar_allow_undefined ' $wl-no_fixup_chains' fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[567].*|10.[0-3],*-darwin[5-9].*|10.[0-3],*-darwin1[0-7].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_shared=yes ;; esac fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_static=yes ;; esac fi # Check whether --enable-pic was given. if test ${enable_pic+y} then : enableval=$enable_pic; lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) pic_mode=default ;; esac fi ;; esac fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_fast_install=yes ;; esac fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --enable-aix-soname was given. if test ${enable_aix_soname+y} then : enableval=$enable_aix_soname; case $enableval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --enable-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$enable_aix_soname else case e in #( e) # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else case e in #( e) if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_with_aix_soname=aix ;; esac fi ;; esac fi enable_aix_soname=$lt_cv_with_aix_soname ;; esac fi with_aix_soname=$enable_aix_soname { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else case e in #( e) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' file_list_spec='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; *-mlibc) archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else case e in #( e) lt_cv_irix_exported_symbol=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; serenity*) ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int test_pointer_size[sizeof (void *) - 5]; _ACEOF if ac_fn_c_try_compile "$LINENO" then : shlibpath_var=LD_LIBRARY_PATH else case e in #( e) shlibpath_var=LD_32_LIBRARY_PATH ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi ='-fPIC' archive_cmds='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' archive_cmds_need_lc=no no_undefined_flag= ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; esac fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char shl_load (void); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else case e in #( e) ac_cv_lib_dld_shl_load=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else case e in #( e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else case e in #( e) ac_cv_lib_svld_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dld_link (void); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else case e in #( e) ac_cv_lib_dld_dld_link=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else case e in #( e) # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP ;; esac fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [-]L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes file_list_spec_CXX='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes file_list_spec_CXX='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=no ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; *-mlibc) ld_shlibs_CXX=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [-]L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; serenity*) ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [-]L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [-]L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. if test x-L = x"$p" || test x-R = x"$p" || test x-l = x"$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; serenity*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | windows* | cegcc*) case $cc_basename in cl* | icl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int test_pointer_size[sizeof (void *) - 5]; _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : shlibpath_var=LD_LIBRARY_PATH else case e in #( e) shlibpath_var=LD_32_LIBRARY_PATH ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; serenity*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi ='-fPIC' archive_cmds_CXX='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' archive_expsym_cmds_CXX='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' archive_cmds_need_lc_CXX=no no_undefined_flag_CXX= ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 printf "%s\n" "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: AM_DEFAULT_VERBOSITY=1 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## printf "%s\n" "#define VMAJ 5" >>confdefs.h printf "%s\n" "#define VMIN 1" >>confdefs.h printf "%s\n" "#define VMIC 7" >>confdefs.h printf "%s\n" "#define VREV 0" >>confdefs.h version_info="6:7:1" release_info="" ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## VMAJ=5 # activate all the warnings { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 printf %s "checking for C compiler vendor... " >&6; } if test ${ax_cv_c_compiler_vendor+y} then : printf %s "(cached) " >&6 else case e in #( e) vendors=" intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ cray: _CRAYC fujitsu: __FUJITSU sdcc: SDCC,__SDCC sx: _SX nvhpc: __NVCOMPILER portland: __PGI gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ comeau: __COMO__ kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ tcc: __TINYC__ unknown: UNKNOWN " for ventest in $vendors; do case $ventest in *:) vendor=$ventest continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #if !($vencpp) thisisanerror; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 printf "%s\n" "$ax_cv_c_compiler_vendor" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGS for most reasonable warnings" >&5 printf %s "checking CFLAGS for most reasonable warnings... " >&6; } if test ${ac_cv_cflags_warn_all+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_cflags_warn_all="" ac_save_cflags_warn_all_found="yes" case "$ax_cv_c_compiler_vendor" in #( intel) : ac_cv_cflags_warn_all="-w2" ;; #( ibm) : ac_cv_cflags_warn_all="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" ;; #( pathscale) : ;; #( clang) : ac_cv_cflags_warn_all="-Wall" ;; #( cray) : ac_cv_cflags_warn_all="-h msglevel 2" ;; #( fujitsu) : ;; #( sdcc) : ;; #( sx) : ac_cv_cflags_warn_all="-pvctl,fullmsg" ;; #( portland) : ;; #( gnu) : ac_cv_cflags_warn_all="-Wall" ;; #( sun) : ac_cv_cflags_warn_all="-v" ;; #( hp) : ac_cv_cflags_warn_all="+w1" ;; #( dec) : ac_cv_cflags_warn_all="-verbose -w0 -warnprotos" ;; #( borland) : ;; #( comeau) : ;; #( kai) : ;; #( lcc) : ;; #( sgi) : ac_cv_cflags_warn_all="-fullwarn" ;; #( microsoft) : ;; #( metrowerks) : ;; #( watcom) : ;; #( tcc) : ;; #( unknown) : ac_cv_cflags_warn_all="" ac_save_cflags_warn_all_found="no" ;; #( *) : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&5 printf "%s\n" "$as_me: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&2;} ac_cv_cflags_warn_all="" ac_save_cflags_warn_all_found="no" ;; esac if test "x$ac_save_cflags_warn_all_found" = "xyes" then : if test "x$ac_cv_cflags_warn_all" != "x" then : if test ${CFLAGS+y} then : case " $CFLAGS " in #( *" $ac_cv_cflags_warn_all "*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : CFLAGS="$ac_cv_cflags_warn_all $CFLAGS" { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 (: CFLAGS="$CFLAGS") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac else case e in #( e) CFLAGS=$ac_cv_cflags_warn_all { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 (: CFLAGS="$CFLAGS") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac fi fi else case e in #( e) true ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 printf "%s\n" "$ac_cv_cflags_warn_all" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CXXFLAGS for most reasonable warnings" >&5 printf %s "checking CXXFLAGS for most reasonable warnings... " >&6; } if test ${ac_cv_cxxflags_warn_all+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_cxxflags_warn_all="" ac_save_cxxflags_warn_all_found="yes" case "$ax_cv_cxx_compiler_vendor" in #( intel) : ac_cv_cxxflags_warn_all="-w2" ;; #( ibm) : ac_cv_cxxflags_warn_all="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" ;; #( pathscale) : ;; #( clang) : ac_cv_cxxflags_warn_all="-Wall" ;; #( cray) : ac_cv_cxxflags_warn_all="-h msglevel 2" ;; #( fujitsu) : ;; #( sdcc) : ;; #( sx) : ac_cv_cxxflags_warn_all="-pvctl,fullmsg" ;; #( portland) : ;; #( gnu) : ac_cv_cxxflags_warn_all="-Wall" ;; #( sun) : ac_cv_cxxflags_warn_all="-v" ;; #( hp) : ac_cv_cxxflags_warn_all="+w1" ;; #( dec) : ac_cv_cxxflags_warn_all="-verbose -w0 -warnprotos" ;; #( borland) : ;; #( comeau) : ;; #( kai) : ;; #( lcc) : ;; #( sgi) : ac_cv_cxxflags_warn_all="-fullwarn" ;; #( microsoft) : ;; #( metrowerks) : ;; #( watcom) : ;; #( tcc) : ;; #( unknown) : ac_cv_cxxflags_warn_all="" ac_save_cxxflags_warn_all_found="no" ;; #( *) : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&5 printf "%s\n" "$as_me: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&2;} ac_cv_cxxflags_warn_all="" ac_save_cxxflags_warn_all_found="no" ;; esac if test "x$ac_save_cxxflags_warn_all_found" = "xyes" then : if test "x$ac_cv_cxxflags_warn_all" != "x" then : if test ${CXXFLAGS+y} then : case " $CXXFLAGS " in #( *" $ac_cv_cxxflags_warn_all "*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains \$ac_cv_cxxflags_warn_all"; } >&5 (: CXXFLAGS already contains $ac_cv_cxxflags_warn_all) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : CXXFLAGS="$ac_cv_cxxflags_warn_all $CXXFLAGS" { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 (: CXXFLAGS="$CXXFLAGS") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac else case e in #( e) CXXFLAGS=$ac_cv_cxxflags_warn_all { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 (: CXXFLAGS="$CXXFLAGS") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac fi fi else case e in #( e) true ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxxflags_warn_all" >&5 printf "%s\n" "$ac_cv_cxxflags_warn_all" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Checks for libraries. # Check whether --with-gsl-prefix was given. if test ${with_gsl_prefix+y} then : withval=$with_gsl_prefix; gsl_prefix="$withval" else case e in #( e) gsl_prefix="" ;; esac fi # Check whether --with-gsl-exec-prefix was given. if test ${with_gsl_exec_prefix+y} then : withval=$with_gsl_exec_prefix; gsl_exec_prefix="$withval" else case e in #( e) gsl_exec_prefix="" ;; esac fi # Check whether --enable-gsltest was given. if test ${enable_gsltest+y} then : enableval=$enable_gsltest; else case e in #( e) enable_gsltest=yes ;; esac fi if test "x${GSL_CONFIG+set}" != xset ; then if test "x$gsl_prefix" != x ; then GSL_CONFIG="$gsl_prefix/bin/gsl-config" fi if test "x$gsl_exec_prefix" != x ; then GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" fi fi # Extract the first word of "gsl-config", so it can be a program name with args. set dummy gsl-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GSL_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GSL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GSL_CONFIG="$GSL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GSL_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GSL_CONFIG" && ac_cv_path_GSL_CONFIG="no" ;; esac ;; esac fi GSL_CONFIG=$ac_cv_path_GSL_CONFIG if test -n "$GSL_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GSL_CONFIG" >&5 printf "%s\n" "$GSL_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi min_gsl_version=0.2.5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GSL - version >= $min_gsl_version" >&5 printf %s "checking for GSL - version >= $min_gsl_version... " >&6; } no_gsl="" if test "$GSL_CONFIG" = "no" ; then no_gsl=yes else GSL_CFLAGS=`$GSL_CONFIG --cflags` GSL_LIBS=`$GSL_CONFIG --libs` gsl_major_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\).*/\1/'` if test "x${gsl_major_version}" = "x" ; then gsl_major_version=0 fi gsl_minor_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\2/'` if test "x${gsl_minor_version}" = "x" ; then gsl_minor_version=0 fi gsl_micro_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\3/'` if test "x${gsl_micro_version}" = "x" ; then gsl_micro_version=0 fi if test "x$enable_gsltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" rm -f conf.gsltest if test "$cross_compiling" = yes then : echo $ac_n "cross compiling; assumed OK... $ac_c" else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include char* my_strdup (const char *str); char* my_strdup (const char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (void) { int major = 0, minor = 0, micro = 0; int n; char *tmp_version; system ("touch conf.gsltest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_gsl_version"); n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; if (n != 2 && n != 3) { printf("%s, bad version string\n", "$min_gsl_version"); exit(1); } if (($gsl_major_version > major) || (($gsl_major_version == major) && ($gsl_minor_version > minor)) || (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) { exit(0); } else { exit(1); } } _ACEOF if ac_fn_c_try_run "$LINENO" then : else case e in #( e) no_gsl=yes ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gsl" = x ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } : else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if test "$GSL_CONFIG" = "no" ; then echo "*** The gsl-config script installed by GSL could not be found" echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GSL_CONFIG environment variable to the" echo "*** full path to gsl-config." else if test -f conf.gsltest ; then : else echo "*** Could not run GSL test program, checking why..." CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GSL or finding the wrong" echo "*** version of GSL. If it is not finding GSL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else case e in #( e) echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GSL was incorrectly installed" echo "*** or that you have moved GSL since it was installed. In the latter case, you" echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi # GSL_CFLAGS="" # GSL_LIBS="" : fi rm -f conf.gsltest # Check whether --enable-glibtest was given. if test ${enable_glibtest+y} then : enableval=$enable_glibtest; else case e in #( e) enable_glibtest=yes ;; esac fi min_glib_version=2.0.0 pkg_config_args="glib-2.0 >= $min_glib_version" for module in . do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not found" "$LINENO" 5 fi no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $pkg_config_args" >&5 printf %s "checking for $pkg_config_args... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$pkg_config_args" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$pkg_config_args" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_config_args" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_config_args" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } : else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } : fi if test -n "$GLIB_GENMARSHAL"; then pkg_cv_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_GENMARSHAL=`$PKG_CONFIG --variable="glib_genmarshal" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_GENMARSHAL=$pkg_cv_GLIB_GENMARSHAL if test "x$GLIB_GENMARSHAL" = x"" then : fi if test -n "$GOBJECT_QUERY"; then pkg_cv_GOBJECT_QUERY="$GOBJECT_QUERY" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT_QUERY=`$PKG_CONFIG --variable="gobject_query" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GOBJECT_QUERY=$pkg_cv_GOBJECT_QUERY if test "x$GOBJECT_QUERY" = x"" then : fi if test -n "$GLIB_MKENUMS"; then pkg_cv_GLIB_MKENUMS="$GLIB_MKENUMS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_MKENUMS=`$PKG_CONFIG --variable="glib_mkenums" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_MKENUMS=$pkg_cv_GLIB_MKENUMS if test "x$GLIB_MKENUMS" = x"" then : fi if test -n "$GLIB_COMPILE_RESOURCES"; then pkg_cv_GLIB_COMPILE_RESOURCES="$GLIB_COMPILE_RESOURCES" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable="glib_compile_resources" "gio-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_COMPILE_RESOURCES=$pkg_cv_GLIB_COMPILE_RESOURCES if test "x$GLIB_COMPILE_RESOURCES" = x"" then : fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 printf %s "checking for GLIB - version >= $min_glib_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" rm -f conf.glibtest if test "$cross_compiling" = yes then : echo $ac_n "cross compiling; assumed OK... $ac_c" else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main (void) { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLib header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO" then : else case e in #( e) no_glib=yes ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 printf "%s\n" "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } : else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLib test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLib or finding the wrong" echo "*** version of GLib. If it is not finding GLib, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else case e in #( e) echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occurred. This usually means GLib is incorrectly installed." ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" : fi rm -f conf.glibtest # Checks for header files. ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else case e in #( e) printf "%s\n" "#define size_t unsigned int" >>confdefs.h ;; esac fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 printf %s "checking for working alloca.h... " >&6; } if test ${ac_cv_working_alloca_h+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_working_alloca_h=yes else case e in #( e) ac_cv_working_alloca_h=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 printf "%s\n" "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 printf %s "checking for alloca... " >&6; } if test ${ac_cv_func_alloca_works+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h if test "$ac_cv_func_alloca_works" != yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef alloca # ifdef __GNUC__ # define alloca __builtin_alloca # elif defined _MSC_VER # include # define alloca _alloca # else # ifdef __cplusplus extern "C" # endif void *alloca (size_t); # endif #endif int main (void) { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_func_alloca_works=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 printf "%s\n" "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 printf %s "checking stack direction for C alloca... " >&6; } if test ${ac_cv_c_stack_direction+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : ac_cv_c_stack_direction=0 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_stack_direction=1 else case e in #( e) ac_cv_c_stack_direction=-1 ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 printf "%s\n" "$ac_cv_c_stack_direction" >&6; } printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h fi # Checks for typedefs, structures, and compiler characteristics. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else case e in #( e) ac_cv_c_const=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 printf %s "checking for inline... " >&6; } if test ${ac_cv_c_inline+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo (void) {return 0; } $ac_kw foo_t foo (void) {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" case $ac_cv_c_int16_t in #( no|yes) ;; #( *) printf "%s\n" "#define int16_t $ac_cv_c_int16_t" >>confdefs.h ;; esac ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" case $ac_cv_c_int32_t in #( no|yes) ;; #( *) printf "%s\n" "#define int32_t $ac_cv_c_int32_t" >>confdefs.h ;; esac ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" case $ac_cv_c_int64_t in #( no|yes) ;; #( *) printf "%s\n" "#define int64_t $ac_cv_c_int64_t" >>confdefs.h ;; esac ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" case $ac_cv_c_int8_t in #( no|yes) ;; #( *) printf "%s\n" "#define int8_t $ac_cv_c_int8_t" >>confdefs.h ;; esac ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default " if test "x$ac_cv_type_pid_t" = xyes then : else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _WIN64 && !defined __CYGWIN__ LLP64 #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_pid_type='int' else case e in #( e) ac_pid_type='__int64' ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h ;; esac fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else case e in #( e) printf "%s\n" "#define size_t unsigned int" >>confdefs.h ;; esac fi ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) printf "%s\n" "#define uint16_t $ac_cv_c_uint16_t" >>confdefs.h ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) printf "%s\n" "#define _UINT32_T 1" >>confdefs.h printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) printf "%s\n" "#define _UINT64_T 1" >>confdefs.h printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h ;; esac ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) printf "%s\n" "#define _UINT8_T 1" >>confdefs.h printf "%s\n" "#define uint8_t $ac_cv_c_uint8_t" >>confdefs.h ;; esac # Checks for library functions. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 printf %s "checking for error_at_line... " >&6; } if test ${ac_cv_lib_error_at_line+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { error_at_line (0, 0, "", 0, "an error occurred"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_error_at_line=yes else case e in #( e) ac_cv_lib_error_at_line=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 printf "%s\n" "$ac_cv_lib_error_at_line" >&6; } if test $ac_cv_lib_error_at_line = no; then case " $LIBOBJS " in *" error.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS error.$ac_objext" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 printf %s "checking for GNU libc compatible malloc... " >&6; } if test ${ac_cv_func_malloc_0_nonnull+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | hpux* | solaris* | cygwin* | mingw* | windows* | msys* ) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = malloc (0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_malloc_0_nonnull=yes else case e in #( e) ac_cv_func_malloc_0_nonnull=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes then : printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h else case e in #( e) printf "%s\n" "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac printf "%s\n" "#define malloc rpl_malloc" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 printf %s "checking for GNU libc compatible realloc... " >&6; } if test ${ac_cv_func_realloc_0_nonnull+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | hpux* | solaris* | cygwin* | mingw* | windows* | msys* ) ac_cv_func_realloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_realloc_0_nonnull=no ;; esac else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = realloc (0, 0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_realloc_0_nonnull=yes else case e in #( e) ac_cv_func_realloc_0_nonnull=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes then : printf "%s\n" "#define HAVE_REALLOC 1" >>confdefs.h else case e in #( e) printf "%s\n" "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac printf "%s\n" "#define realloc rpl_realloc" >>confdefs.h ;; esac fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done if test "x$ac_cv_func_vprintf" = xno then : ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes then : printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h fi fi if test "x$ac_cv_func_fork" = xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 printf %s "checking for working fork... " >&6; } if test ${ac_cv_func_fork_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : ac_cv_func_fork_works=cross else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { /* By R. Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_fork_works=yes else case e in #( e) ac_cv_func_fork_works=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 printf "%s\n" "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 printf "%s\n" "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 printf %s "checking for working vfork... " >&6; } if test ${ac_cv_func_vfork_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : ac_cv_func_vfork_works=cross else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #include #ifdef HAVE_VFORK_H # include #endif static void do_nothing (int sig) { (void) sig; } /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void sparc_address_test (int arg) { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main (void) { pid_t parent = getpid (); pid_t child; sparc_address_test (0); /* On Solaris 2.4, changes by the child to the signal handler also munge signal handlers in the parent. To detect this, start by putting the parent's handler in a known state. */ signal (SIGTERM, SIG_DFL); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* Alter the child's signal handler. */ if (signal (SIGTERM, do_nothing) != SIG_DFL) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child munge the parent's signal handler? */ || signal (SIGTERM, SIG_DFL) != SIG_DFL /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_vfork_works=yes else case e in #( e) ac_cv_func_vfork_works=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 printf "%s\n" "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 printf "%s\n" "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h else printf "%s\n" "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" if test "x$ac_cv_func_atexit" = xyes then : printf "%s\n" "#define HAVE_ATEXIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" if test "x$ac_cv_func_dup2" = xyes then : printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fchdir" "ac_cv_func_fchdir" if test "x$ac_cv_func_fchdir" = xyes then : printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "floor" "ac_cv_func_floor" if test "x$ac_cv_func_floor" = xyes then : printf "%s\n" "#define HAVE_FLOOR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" if test "x$ac_cv_func_getcwd" = xyes then : printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" if test "x$ac_cv_func_getpagesize" = xyes then : printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes then : printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" if test "x$ac_cv_func_isascii" = xyes then : printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memchr" "ac_cv_func_memchr" if test "x$ac_cv_func_memchr" = xyes then : printf "%s\n" "#define HAVE_MEMCHR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" if test "x$ac_cv_func_memmove" = xyes then : printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" if test "x$ac_cv_func_memset" = xyes then : printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mkdir" "ac_cv_func_mkdir" if test "x$ac_cv_func_mkdir" = xyes then : printf "%s\n" "#define HAVE_MKDIR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow" if test "x$ac_cv_func_pow" = xyes then : printf "%s\n" "#define HAVE_POW 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv" if test "x$ac_cv_func_putenv" = xyes then : printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "rmdir" "ac_cv_func_rmdir" if test "x$ac_cv_func_rmdir" = xyes then : printf "%s\n" "#define HAVE_RMDIR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" if test "x$ac_cv_func_select" = xyes then : printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sqrt" "ac_cv_func_sqrt" if test "x$ac_cv_func_sqrt" = xyes then : printf "%s\n" "#define HAVE_SQRT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" if test "x$ac_cv_func_strchr" = xyes then : printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" if test "x$ac_cv_func_strerror" = xyes then : printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" if test "x$ac_cv_func_strncasecmp" = xyes then : printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strrchr" "ac_cv_func_strrchr" if test "x$ac_cv_func_strrchr" = xyes then : printf "%s\n" "#define HAVE_STRRCHR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" if test "x$ac_cv_func_strstr" = xyes then : printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" if test "x$ac_cv_func_strtol" = xyes then : printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" if test "x$ac_cv_func_strtoul" = xyes then : printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h fi # Check whether --enable-analyzer was given. if test ${enable_analyzer+y} then : enableval=$enable_analyzer; else case e in #( e) enable_analyzer=no ;; esac fi if test x$enable_analyzer != xno; then ANALYZER_TRUE= ANALYZER_FALSE='#' else ANALYZER_TRUE='#' ANALYZER_FALSE= fi if test -z "$ANALYZER_TRUE"; then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fanalyzer" >&5 printf %s "checking whether the C compiler accepts -fanalyzer... " >&6; } if test ${ax_cv_check_cflags___fanalyzer+y} then : printf %s "(cached) " >&6 else case e in #( e) ax_check_save_flags=$CFLAGS if test x"$GCC" = xyes ; then add_gnu_werror="-Werror" fi CFLAGS="$CFLAGS -fanalyzer $add_gnu_werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ax_cv_check_cflags___fanalyzer=yes else case e in #( e) ax_cv_check_cflags___fanalyzer=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fanalyzer" >&5 printf "%s\n" "$ax_cv_check_cflags___fanalyzer" >&6; } if test "x$ax_cv_check_cflags___fanalyzer" = xyes then : CFLAGS="$CFLAGS -fanalyzer" else case e in #( e) : ;; esac fi fi # Check whether --enable-logging was given. if test ${enable_logging+y} then : enableval=$enable_logging; else case e in #( e) enable_logging=no ;; esac fi if test x$enable_logging != xno; then LOGGING_TRUE= LOGGING_FALSE='#' else LOGGING_TRUE='#' LOGGING_FALSE= fi if test -z "$LOGGING_TRUE"; then : printf "%s\n" "#define LOGGING 1" >>confdefs.h fi # Check whether --enable-hkl-doc was given. if test ${enable_hkl_doc+y} then : enableval=$enable_hkl_doc; else case e in #( e) enable_hkl_doc=yes ;; esac fi if test x$enable_hkl_doc = xyes; then HKL_DOC_TRUE= HKL_DOC_FALSE='#' else HKL_DOC_TRUE='#' HKL_DOC_FALSE= fi if test -z "$HKL_DOC_TRUE"; then : # Extract the first word of "asy", so it can be a program name with args. set dummy asy; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ASY+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ASY in [\\/]* | ?:[\\/]*) ac_cv_path_ASY="$ASY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ASY="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_ASY" && ac_cv_path_ASY="echo" ;; esac ;; esac fi ASY=$ac_cv_path_ASY if test -n "$ASY"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ASY" >&5 printf "%s\n" "$ASY" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "emacs", so it can be a program name with args. set dummy emacs; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_EMACS+y} then : printf %s "(cached) " >&6 else case e in #( e) case $EMACS in [\\/]* | ?:[\\/]*) ac_cv_path_EMACS="$EMACS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_EMACS="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_EMACS" && ac_cv_path_EMACS="no" ;; esac ;; esac fi EMACS=$ac_cv_path_EMACS if test -n "$EMACS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5 printf "%s\n" "$EMACS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gnuplot", so it can be a program name with args. set dummy gnuplot; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GNUPLOT+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GNUPLOT in [\\/]* | ?:[\\/]*) ac_cv_path_GNUPLOT="$GNUPLOT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GNUPLOT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GNUPLOT" && ac_cv_path_GNUPLOT="echo" ;; esac ;; esac fi GNUPLOT=$ac_cv_path_GNUPLOT if test -n "$GNUPLOT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNUPLOT" >&5 printf "%s\n" "$GNUPLOT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "xvfb-run", so it can be a program name with args. set dummy xvfb-run; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XVFB_RUN+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XVFB_RUN in [\\/]* | ?:[\\/]*) ac_cv_path_XVFB_RUN="$XVFB_RUN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XVFB_RUN="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_XVFB_RUN" && ac_cv_path_XVFB_RUN="echo" ;; esac ;; esac fi XVFB_RUN=$ac_cv_path_XVFB_RUN if test -n "$XVFB_RUN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XVFB_RUN" >&5 printf "%s\n" "$XVFB_RUN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # Check whether --with-mathjax was given. if test ${with_mathjax+y} then : withval=$with_mathjax; use_mathjax=$withval else case e in #( e) use_mathjax="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML" ;; esac fi MATHJAX_PATH=$use_mathjax gtk_doc_requires="gtk-doc >= 1.9" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 printf %s "checking for gtk-doc... " >&6; } if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_gtk_doc=yes else have_gtk_doc=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 printf "%s\n" "$have_gtk_doc" >&6; } if test "$have_gtk_doc" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&5 printf "%s\n" "$as_me: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&2;} fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_GTKDOC_CHECK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$GTKDOC_CHECK"; then ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 printf "%s\n" "$GTKDOC_CHECK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GTKDOC_CHECK_PATH+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GTKDOC_CHECK_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_CHECK_PATH="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH if test -n "$GTKDOC_CHECK_PATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 printf "%s\n" "$GTKDOC_CHECK_PATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi for ac_prog in gtkdoc-rebase do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GTKDOC_REBASE+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_REBASE="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 printf "%s\n" "$GTKDOC_REBASE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GTKDOC_MKPDF+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_MKPDF="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 printf "%s\n" "$GTKDOC_MKPDF" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Check whether --with-html-dir was given. if test ${with_html_dir+y} then : withval=$with_html_dir; else case e in #( e) with_html_dir='${datadir}/gtk-doc/html' ;; esac fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test ${enable_gtk_doc+y} then : enableval=$enable_gtk_doc; else case e in #( e) enable_gtk_doc=no ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 printf %s "checking whether to build gtk-doc documentation... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 printf "%s\n" "$enable_gtk_doc" >&6; } if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then as_fn_error $? " You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '$0'." "$LINENO" 5 fi if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" >&5 printf %s "checking for glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKDOC_DEPS_LIBS"; then pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` else GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } : else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi fi # Check whether --enable-gtk-doc-html was given. if test ${enable_gtk_doc_html+y} then : enableval=$enable_gtk_doc_html; else case e in #( e) enable_gtk_doc_html=yes ;; esac fi # Check whether --enable-gtk-doc-pdf was given. if test ${enable_gtk_doc_pdf+y} then : enableval=$enable_gtk_doc_pdf; else case e in #( e) enable_gtk_doc_pdf=no ;; esac fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi if test x$have_gtk_doc = xyes; then HAVE_GTK_DOC_TRUE= HAVE_GTK_DOC_FALSE='#' else HAVE_GTK_DOC_TRUE='#' HAVE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # Check whether --enable-binoculars was given. if test ${enable_binoculars+y} then : enableval=$enable_binoculars; else case e in #( e) enable_binoculars=yes ;; esac fi if test x$enable_binoculars = xyes; then BINOCULARS_TRUE= BINOCULARS_FALSE='#' else BINOCULARS_TRUE='#' BINOCULARS_FALSE= fi if test -z "$BINOCULARS_TRUE"; then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hdf5-serial >= 1.8.13" >&5 printf %s "checking for hdf5-serial >= 1.8.13... " >&6; } if test -n "$HDF5_CFLAGS"; then pkg_cv_HDF5_CFLAGS="$HDF5_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hdf5-serial >= 1.8.13\""; } >&5 ($PKG_CONFIG --exists --print-errors "hdf5-serial >= 1.8.13") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HDF5_CFLAGS=`$PKG_CONFIG --cflags "hdf5-serial >= 1.8.13" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$HDF5_LIBS"; then pkg_cv_HDF5_LIBS="$HDF5_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hdf5-serial >= 1.8.13\""; } >&5 ($PKG_CONFIG --exists --print-errors "hdf5-serial >= 1.8.13") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HDF5_LIBS=`$PKG_CONFIG --libs "hdf5-serial >= 1.8.13" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then HDF5_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "hdf5-serial >= 1.8.13" 2>&1` else HDF5_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "hdf5-serial >= 1.8.13" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$HDF5_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (hdf5-serial >= 1.8.13) were not met: $HDF5_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables HDF5_CFLAGS and HDF5_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables HDF5_CFLAGS and HDF5_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else HDF5_CFLAGS=$pkg_cv_HDF5_CFLAGS HDF5_LIBS=$pkg_cv_HDF5_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cglm >= 0.7" >&5 printf %s "checking for cglm >= 0.7... " >&6; } if test -n "$CGLM_CFLAGS"; then pkg_cv_CGLM_CFLAGS="$CGLM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cglm >= 0.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "cglm >= 0.7") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CGLM_CFLAGS=`$PKG_CONFIG --cflags "cglm >= 0.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$CGLM_LIBS"; then pkg_cv_CGLM_LIBS="$CGLM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cglm >= 0.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "cglm >= 0.7") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CGLM_LIBS=`$PKG_CONFIG --libs "cglm >= 0.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then CGLM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cglm >= 0.7" 2>&1` else CGLM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cglm >= 0.7" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CGLM_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (cglm >= 0.7) were not met: $CGLM_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables CGLM_CFLAGS and CGLM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables CGLM_CFLAGS and CGLM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else CGLM_CFLAGS=$pkg_cv_CGLM_CFLAGS CGLM_LIBS=$pkg_cv_CGLM_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi # Extract the first word of "cabal", so it can be a program name with args. set dummy cabal; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CABAL+y} then : printf %s "(cached) " >&6 else case e in #( e) case $CABAL in [\\/]* | ?:[\\/]*) ac_cv_path_CABAL="$CABAL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CABAL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi CABAL=$ac_cv_path_CABAL if test -n "$CABAL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CABAL" >&5 printf "%s\n" "$CABAL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$CABAL" ; then as_fn_error $? "cabal was not found" "$LINENO" 5 fi fi # Check whether --enable-hkl3d was given. if test ${enable_hkl3d+y} then : enableval=$enable_hkl3d; else case e in #( e) enable_hkl3d=no ;; esac fi if test x$enable_hkl3d != xno; then HKL3D_TRUE= HKL3D_FALSE='#' else HKL3D_TRUE='#' HKL3D_FALSE= fi if test -z "$HKL3D_TRUE"; then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for assimp >= 0" >&5 printf %s "checking for assimp >= 0... " >&6; } if test -n "$ASSIMP_CFLAGS"; then pkg_cv_ASSIMP_CFLAGS="$ASSIMP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"assimp >= 0\""; } >&5 ($PKG_CONFIG --exists --print-errors "assimp >= 0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ASSIMP_CFLAGS=`$PKG_CONFIG --cflags "assimp >= 0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ASSIMP_LIBS"; then pkg_cv_ASSIMP_LIBS="$ASSIMP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"assimp >= 0\""; } >&5 ($PKG_CONFIG --exists --print-errors "assimp >= 0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ASSIMP_LIBS=`$PKG_CONFIG --libs "assimp >= 0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ASSIMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "assimp >= 0" 2>&1` else ASSIMP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "assimp >= 0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ASSIMP_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (assimp >= 0) were not met: $ASSIMP_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ASSIMP_CFLAGS and ASSIMP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables ASSIMP_CFLAGS and ASSIMP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else ASSIMP_CFLAGS=$pkg_cv_ASSIMP_CFLAGS ASSIMP_LIBS=$pkg_cv_ASSIMP_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bullet >= 2.82" >&5 printf %s "checking for bullet >= 2.82... " >&6; } if test -n "$BULLET_CFLAGS"; then pkg_cv_BULLET_CFLAGS="$BULLET_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bullet >= 2.82\""; } >&5 ($PKG_CONFIG --exists --print-errors "bullet >= 2.82") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_BULLET_CFLAGS=`$PKG_CONFIG --cflags "bullet >= 2.82" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$BULLET_LIBS"; then pkg_cv_BULLET_LIBS="$BULLET_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bullet >= 2.82\""; } >&5 ($PKG_CONFIG --exists --print-errors "bullet >= 2.82") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_BULLET_LIBS=`$PKG_CONFIG --libs "bullet >= 2.82" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then BULLET_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "bullet >= 2.82" 2>&1` else BULLET_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "bullet >= 2.82" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$BULLET_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (bullet >= 2.82) were not met: $BULLET_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables BULLET_CFLAGS and BULLET_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables BULLET_CFLAGS and BULLET_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else BULLET_CFLAGS=$pkg_cv_BULLET_CFLAGS BULLET_LIBS=$pkg_cv_BULLET_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi # Extract the first word of "blender", so it can be a program name with args. set dummy blender; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_BLENDER+y} then : printf %s "(cached) " >&6 else case e in #( e) case $BLENDER in [\\/]* | ?:[\\/]*) ac_cv_path_BLENDER="$BLENDER" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_BLENDER="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BLENDER" && ac_cv_path_BLENDER="no" ;; esac ;; esac fi BLENDER=$ac_cv_path_BLENDER if test -n "$BLENDER"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BLENDER" >&5 printf "%s\n" "$BLENDER" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "blender-thumbnailer", so it can be a program name with args. set dummy blender-thumbnailer; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_BLENDER_THUMBNAILER+y} then : printf %s "(cached) " >&6 else case e in #( e) case $BLENDER_THUMBNAILER in [\\/]* | ?:[\\/]*) ac_cv_path_BLENDER_THUMBNAILER="$BLENDER_THUMBNAILER" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_BLENDER_THUMBNAILER="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BLENDER_THUMBNAILER" && ac_cv_path_BLENDER_THUMBNAILER="no" ;; esac ;; esac fi BLENDER_THUMBNAILER=$ac_cv_path_BLENDER_THUMBNAILER if test -n "$BLENDER_THUMBNAILER"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BLENDER_THUMBNAILER" >&5 printf "%s\n" "$BLENDER_THUMBNAILER" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yaml_get_version" >&5 printf %s "checking for library containing yaml_get_version... " >&6; } if test ${ac_cv_search_yaml_get_version+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char yaml_get_version (void); int main (void) { return yaml_get_version (); ; return 0; } _ACEOF for ac_lib in '' yaml do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_yaml_get_version=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_yaml_get_version+y} then : break fi done if test ${ac_cv_search_yaml_get_version+y} then : else case e in #( e) ac_cv_search_yaml_get_version=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yaml_get_version" >&5 printf "%s\n" "$ac_cv_search_yaml_get_version" >&6; } ac_res=$ac_cv_search_yaml_get_version if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" for ac_header in yaml.h do : ac_fn_c_check_header_compile "$LINENO" "yaml.h" "ac_cv_header_yaml_h" "$ac_includes_default" if test "x$ac_cv_header_yaml_h" = xyes then : printf "%s\n" "#define HAVE_YAML_H 1" >>confdefs.h else case e in #( e) as_fn_error $? "Could not find the yaml headers, please install yaml developement files" "$LINENO" 5 ;; esac fi done else case e in #( e) as_fn_error $? "Could not find the libyaml runtime, please install yaml" "$LINENO" 5 ;; esac fi YAML_CFLAGS="" YAML_LIBS="-lyaml" fi # Check whether --enable-gui was given. if test ${enable_gui+y} then : enableval=$enable_gui; else case e in #( e) enable_gui=yes ;; esac fi if test x$enable_gui = xyes; then GUI_TRUE= GUI_FALSE='#' else GUI_TRUE='#' GUI_FALSE= fi if test -z "$GUI_TRUE"; then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtk4 >= 4.12" >&5 printf %s "checking for gtk4 >= 4.12... " >&6; } if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk4 >= 4.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk4 >= 4.12") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk4 >= 4.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk4 >= 4.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk4 >= 4.12") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk4 >= 4.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk4 >= 4.12" 2>&1` else GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk4 >= 4.12" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtk4 >= 4.12) were not met: $GTK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi if test -z "$HKL3D_TRUE"; then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoxy >= 1.5.10" >&5 printf %s "checking for epoxy >= 1.5.10... " >&6; } if test -n "$EPOXY_CFLAGS"; then pkg_cv_EPOXY_CFLAGS="$EPOXY_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"epoxy >= 1.5.10\""; } >&5 ($PKG_CONFIG --exists --print-errors "epoxy >= 1.5.10") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EPOXY_CFLAGS=`$PKG_CONFIG --cflags "epoxy >= 1.5.10" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EPOXY_LIBS"; then pkg_cv_EPOXY_LIBS="$EPOXY_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"epoxy >= 1.5.10\""; } >&5 ($PKG_CONFIG --exists --print-errors "epoxy >= 1.5.10") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EPOXY_LIBS=`$PKG_CONFIG --libs "epoxy >= 1.5.10" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EPOXY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "epoxy >= 1.5.10" 2>&1` else EPOXY_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "epoxy >= 1.5.10" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EPOXY_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (epoxy >= 1.5.10) were not met: $EPOXY_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables EPOXY_CFLAGS and EPOXY_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables EPOXY_CFLAGS and EPOXY_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else EPOXY_CFLAGS=$pkg_cv_EPOXY_CFLAGS EPOXY_LIBS=$pkg_cv_EPOXY_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi fi fi # Check whether --enable-introspection was given. if test ${enable_introspection+y} then : enableval=$enable_introspection; else case e in #( e) enable_introspection=auto ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 printf %s "checking for gobject-introspection... " >&6; } case $enable_introspection in #( no) : found_introspection="no (disabled, use --enable-introspection to enable)" ;; #( yes) : if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5 fi if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.7") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else as_fn_error $? "You need to have gobject-introspection >= 0.6.7 installed to build hkl" "$LINENO" 5 fi ;; #( auto) : if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.7") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else found_introspection=no fi enable_introspection=$found_introspection ;; #( *) : as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 printf "%s\n" "$found_introspection" >&6; } EXP_VAR=_GI_EXP_DATADIR FROM_VAR="$datadir" prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var _GI_EXP_DATADIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save EXP_VAR=_GI_EXP_LIBDIR FROM_VAR="$libdir" prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var _GI_EXP_LIBDIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --define-variable=datadir="${_GI_EXP_DATADIR}" --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --define-variable=libdir="${_GI_EXP_LIBDIR}" --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi if test "x$found_introspection" = "xyes"; then HAVE_INTROSPECTION_TRUE= HAVE_INTROSPECTION_FALSE='#' else HAVE_INTROSPECTION_TRUE='#' HAVE_INTROSPECTION_FALSE= fi if test -z "$HAVE_INTROSPECTION_TRUE"; then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gobject-2.0" >&5 printf %s "checking for gobject-2.0... " >&6; } if test -n "$GOBJECT_CFLAGS"; then pkg_cv_GOBJECT_CFLAGS="$GOBJECT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT_CFLAGS=`$PKG_CONFIG --cflags "gobject-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GOBJECT_LIBS"; then pkg_cv_GOBJECT_LIBS="$GOBJECT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT_LIBS=`$PKG_CONFIG --libs "gobject-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GOBJECT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gobject-2.0" 2>&1` else GOBJECT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gobject-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GOBJECT_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gobject-2.0) were not met: $GOBJECT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GOBJECT_CFLAGS and GOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GOBJECT_CFLAGS and GOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else GOBJECT_CFLAGS=$pkg_cv_GOBJECT_CFLAGS GOBJECT_LIBS=$pkg_cv_GOBJECT_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi fi # Check whether --enable-contrib was given. if test ${enable_contrib+y} then : enableval=$enable_contrib; else case e in #( e) enable_contrib=no ;; esac fi if test x$enable_contrib != xno; then CONTRIB_TRUE= CONTRIB_FALSE='#' else CONTRIB_TRUE='#' CONTRIB_FALSE= fi # Check whether --enable-datatype99 was given. if test ${enable_datatype99+y} then : enableval=$enable_datatype99; else case e in #( e) enable_datatype99=no ;; esac fi for ac_header in datatype99.h do : ac_fn_c_check_header_compile "$LINENO" "datatype99.h" "ac_cv_header_datatype99_h" "$ac_includes_default" if test "x$ac_cv_header_datatype99_h" = xyes then : printf "%s\n" "#define HAVE_DATATYPE99_H 1" >>confdefs.h else case e in #( e) enable_datatype99=no ;; esac fi done DATATYPE99_CFLAGS="-ftrack-macro-expansion=0" if test x$enable_datatype99 != xno; then DATATYPE99_TRUE= DATATYPE99_FALSE='#' else DATATYPE99_TRUE='#' DATATYPE99_FALSE= fi if test -z "$DATATYPE99_TRUE"; then : else DATATYPE99_CFLAGS=$DATATYPE99_CFLAGS' -I$(top_srcdir)/third-party/' fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 3" >&5 printf %s "checking for openssl >= 3... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 3\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENSSL_LIBS"; then pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 3\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl >= 3" 2>&1` else OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl >= 3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENSSL_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (openssl >= 3) were not met: $OPENSSL_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables OPENSSL_CFLAGS and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables OPENSSL_CFLAGS and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi ac_config_files="$ac_config_files Makefile binoculars-ng/binoculars/Makefile binoculars-ng/hkl.cabal binoculars-ng/Makefile hkl/Makefile hkl/api2/Makefile hkl/ccan/Makefile hkl.h hkl.pc hkl3d/Makefile hkl3d.pc tests/Makefile tests/bindings/Makefile tests/tap/Makefile third-party/Makefile Documentation/Makefile Documentation/hkl.org Documentation/api/Makefile Documentation/figures/Makefile Documentation/sphinx/Makefile Documentation/sphinx/source/conf.py gui/Makefile data/Makefile contrib/Makefile contrib/cristal/Makefile contrib/cristal/xrays/Makefile contrib/sixs/Makefile contrib/petra3/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ANALYZER_TRUE}" && test -z "${ANALYZER_FALSE}"; then as_fn_error $? "conditional \"ANALYZER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOGGING_TRUE}" && test -z "${LOGGING_FALSE}"; then as_fn_error $? "conditional \"LOGGING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HKL_DOC_TRUE}" && test -z "${HKL_DOC_FALSE}"; then as_fn_error $? "conditional \"HKL_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BINOCULARS_TRUE}" && test -z "${BINOCULARS_FALSE}"; then as_fn_error $? "conditional \"BINOCULARS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HKL3D_TRUE}" && test -z "${HKL3D_FALSE}"; then as_fn_error $? "conditional \"HKL3D\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GUI_TRUE}" && test -z "${GUI_FALSE}"; then as_fn_error $? "conditional \"GUI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CONTRIB_TRUE}" && test -z "${CONTRIB_FALSE}"; then as_fn_error $? "conditional \"CONTRIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DATATYPE99_TRUE}" && test -z "${DATATYPE99_FALSE}"; then as_fn_error $? "conditional \"DATATYPE99\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by hkl $as_me 5.1.7, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ hkl config.status 5.1.7 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "binoculars-ng/binoculars/Makefile") CONFIG_FILES="$CONFIG_FILES binoculars-ng/binoculars/Makefile" ;; "binoculars-ng/hkl.cabal") CONFIG_FILES="$CONFIG_FILES binoculars-ng/hkl.cabal" ;; "binoculars-ng/Makefile") CONFIG_FILES="$CONFIG_FILES binoculars-ng/Makefile" ;; "hkl/Makefile") CONFIG_FILES="$CONFIG_FILES hkl/Makefile" ;; "hkl/api2/Makefile") CONFIG_FILES="$CONFIG_FILES hkl/api2/Makefile" ;; "hkl/ccan/Makefile") CONFIG_FILES="$CONFIG_FILES hkl/ccan/Makefile" ;; "hkl.h") CONFIG_FILES="$CONFIG_FILES hkl.h" ;; "hkl.pc") CONFIG_FILES="$CONFIG_FILES hkl.pc" ;; "hkl3d/Makefile") CONFIG_FILES="$CONFIG_FILES hkl3d/Makefile" ;; "hkl3d.pc") CONFIG_FILES="$CONFIG_FILES hkl3d.pc" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/bindings/Makefile") CONFIG_FILES="$CONFIG_FILES tests/bindings/Makefile" ;; "tests/tap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tap/Makefile" ;; "third-party/Makefile") CONFIG_FILES="$CONFIG_FILES third-party/Makefile" ;; "Documentation/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/Makefile" ;; "Documentation/hkl.org") CONFIG_FILES="$CONFIG_FILES Documentation/hkl.org" ;; "Documentation/api/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/api/Makefile" ;; "Documentation/figures/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/figures/Makefile" ;; "Documentation/sphinx/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/sphinx/Makefile" ;; "Documentation/sphinx/source/conf.py") CONFIG_FILES="$CONFIG_FILES Documentation/sphinx/source/conf.py" ;; "gui/Makefile") CONFIG_FILES="$CONFIG_FILES gui/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "contrib/cristal/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/cristal/Makefile" ;; "contrib/cristal/xrays/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/cristal/xrays/Makefile" ;; "contrib/sixs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/sixs/Makefile" ;; "contrib/petra3/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/petra3/Makefile" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See 'config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e. impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e. impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi hkl-5.1.7/binoculars-ng/0000775000175000017500000000000015144640565014041 5ustar00piccapiccahkl-5.1.7/binoculars-ng/app/0000775000175000017500000000000015144640565014621 5ustar00piccapiccahkl-5.1.7/binoculars-ng/app/Main.hs0000664000175000017500000001103614677222567016052 0ustar00piccapicca{-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {- Copyright : Copyright (C) 2014-2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Main where import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO) import Control.Monad.Logger (LogLevel (LevelDebug), LoggingT, MonadLogger, filterLogger, runStdoutLoggingT) import Control.Monad.Reader (MonadReader, ReaderT, ask, runReaderT) import Data.Attoparsec.Text (parseOnly) import Data.Text (pack) import Options.Applicative (CommandFields, Mod, argument, command, eitherReader, execParser, fullDesc, header, help, helper, hsubparser, info, long, many, metavar, optional, progDesc, short, str, strOption, switch, value, (<**>)) import Options.Applicative.Types (Parser) import Hkl.Binoculars data FullOptions = FullOptions Bool Options deriving Show data Options = Process (Maybe FilePath) (Maybe ConfigRange) | CfgNew ProjectionType (Maybe FilePath) | CfgUpdate FilePath (Maybe ConfigRange) | Merge FilePath [FilePath] deriving Show debug :: Parser Bool debug = switch ( long "debug" <> short 'd' <> help "Print debug informations" ) config :: Parser FilePath config = argument str (metavar "CONFIG") processOptions :: Parser Options processOptions = Process <$> optional config <*> optional (argument (eitherReader (parseOnly fieldParser . pack)) (metavar "RANGE")) processCommand :: Mod CommandFields Options processCommand = command "process" (info processOptions (progDesc "process data's")) cfgNewOption :: Parser Options cfgNewOption = CfgNew <$> argument (eitherReader (parseOnly fieldParser . pack)) (metavar "PROJECTION") <*> optional config cfgNewCommand :: Mod CommandFields Options cfgNewCommand = command "cfg-new" (info cfgNewOption (progDesc "new config files")) cfgUpdateOption :: Parser Options cfgUpdateOption = CfgUpdate <$> config <*> optional (argument (eitherReader (parseOnly fieldParser. pack)) (metavar "RANGE")) cfgUpdateCommand :: Mod CommandFields Options cfgUpdateCommand = command "cfg-update" (info cfgUpdateOption (progDesc "update config files")) mergeOption :: Parser Options mergeOption = Merge <$> strOption ( long "output" <> short 'o' <> metavar "FILE" <> value "merged.h5" <> help "Write output to FILE" ) <*> (many $ (argument str (metavar "INPUTFILES..."))) mergeCommand :: Mod CommandFields Options mergeCommand = command "merge" (info mergeOption (progDesc "merges binoculars files")) options :: Parser FullOptions options = FullOptions <$> debug <*> hsubparser (processCommand <> cfgNewCommand <> cfgUpdateCommand <> mergeCommand) newtype App a = App { unApp :: ReaderT FullOptions (LoggingT IO) a } deriving newtype ( Applicative , Functor , Monad , MonadIO , MonadReader FullOptions , MonadLogger , MonadThrow ) runApp :: FullOptions -> (LoggingT IO a -> IO a) -> App a -> IO a runApp env runLogging action = runLogging $ runReaderT (unApp action) env app :: App () app = do (FullOptions _ o) <- ask case o of (Process mf mr) -> process mf mr (CfgNew p mf) -> new p mf (CfgUpdate f mr) -> update f mr (Merge f fs) -> merge f fs main :: IO () main = do let opts = info (options <**> helper) ( fullDesc <> progDesc "binoculars subcommand" <> header "binoculars - bin your data's" ) fopts@(FullOptions d _) <- execParser opts let debugLogging = if d then id else filterLogger (\_ l -> l /=LevelDebug) let runLogging = runStdoutLoggingT . debugLogging runApp fopts runLogging app hkl-5.1.7/binoculars-ng/data/0000775000175000017500000000000015144640565014752 5ustar00piccapiccahkl-5.1.7/binoculars-ng/data/test/0000775000175000017500000000000015144640565015731 5ustar00piccapiccahkl-5.1.7/binoculars-ng/data/test/config_geometry_custom.ini0000664000175000017500000000711414770555621023211 0ustar00piccapicca## the DISPATCHER is responsible for job management [dispatcher] type = local # run local #type = singlecore # run local ncores = 4 # optionally, specify number of cores (autodetect by default) # specificy destination file using scan numbers destination = name_{projection}_{first}-{last}_{limits}.hdf5 overwrite = false ### choose an appropriate INPUT class and specify custom options [input] #: the list of the available values are: #type = sixs:flymedh #type = sixs:flymedhgisaxs #type = sixs:flymedv #type = sixs:flymedvgisaxs #type = sixs:flyuhv #type = sixs:flyuhvgisaxs #type = sixs:sbsmedh #type = sixs:sbsmedhgisaxs #type = sixs:sbsmedv #type = sixs:sbsmedvgisaxs #type = sixs:sbsuhv #type = sixs:sbsuhvgisaxs type = custom nexusdir = /nfs/ruche-sixs/sixs-soleil/com-sixs/2023/Run4/Feng_20230524 #inputrange = 1087-1121 # the list of known detectors is: #detector = ImXpadS70 detector = ImXpadS140 #detector = Eiger1M #detector = Ufxc #detector = Merlin #detector = MerlinMedipix3RXQuad centralpixel = 277, 111 # x,y sdd = 1.161 # sample to detector distance (m) detrot = 90 # ImXpadS140 (0° => Horizontal detector ; 90° => Vertical detector) # Eiger1M (0° => Horizontal bar ; -90° => Vertical bar) #attenuation_coefficient = 5 #attenuation_max = 4 #image_sum_max = 1000000 #maskmatrix = default maskmatrix = /nfs/ruche-sixs/sixs-soleil/com-sixs/2023/Run4/Feng_20230524/align/mask_nxs00021_20230913_14h25.npy # ImXpadS140 #maskmatrix = /nfs/ruche-sixs/sixs-soleil/com-sixs/binoculars/mask_eiger_20230630.npy # Eiger1M (ATTENTION au format > uint8) #wavelength = 1.54 # (if not in nxsfile !) #a = 1.54 ## Used only for HKL projection #b = 1.54 ## Used only for HKL projection #c= 1.54 ## Used only for HKL projection #alpha = 90. ## Used only for HKL projection #beta = 90. ## Used only for HKL projection #gamma = 90. ## Used only for HKL projection #ux = -90. ## Used only for HKL projection #uy = 0. ## Used only for HKL projection #uz = 0. ## Used only for HKL projection surface_orientation = vertical ## Used only for Q projection (ATTENTION '_') #surface_orientation = horizontal ## Used only for Q projection [projection] #type = hkl # refers to HklProjection #type = qxqyqz # refers to QxQyQz #type = qparqper # refers to Qpar Qper #type = qindex # refers to q time #type = realspace #type = pixels type = qcustom # #subprojection = qx_qy_qz #subprojection = q_qpar_qper subprojection = q_tth_timestamp #subprojection = qpar_qper_sampleaxis #subprojection = q_sampleaxis_tth #subprojection = gammalab_deltalab_sampleaxis # med geometry with beta=0 et mu=0 #simpleaxis = omega #subprojection = q_timestamp #subprojection = q_index # ne fonctionne pas !!! #subprojection = qpar_qper_timestamp #subprojection = qpars_qper_timestamp #subprojection = gammalab_deltalab_sampleaxis #subprojection = qpar_qper #subprojection = q_phi_qx #subprojection = q_phi_qy #subprojection = q_phi_qz #subprojection = q_stereo #subprojection = x_y_z #subprojection = y_z_timestamp #uqx = 0. ## Used only for Q projection #uqy = 0. ## Used only for Q projection #uqz = 0. ## Used only for Q projection #resolution = 0.005, 0.005, 200 resolution = 0.002, 0.002, 0.004 # or just give 1 number for all dimensions #limits = [0.7:1,-1.6:-1.3,:] #source /usr/local/applications/diffractions/binoculars/v0.0.1/env.sh [geometry] geometry_sample = pitch mu geometry_detector = pitch gamma delta axis_pitch = rotation 0 -1 0 degree axis_mu = rotation 0 0 1 degree axis_gamma = rotation 0 0 1 degree axis_delta = rotation 0 -1 0 degree #[geometry.values] #beta = 0.0 #mu #omega #delta #gamma #eix #eiz hkl-5.1.7/binoculars-ng/data/test/config_sixs_ruche_parsing.ini0000664000175000017500000000656114677222567023676 0ustar00piccapicca## the DISPATCHER is responsible for job management [dispatcher] type = local # run local #type = singlecore # run local ncores = 4 # optionally, specify number of cores (autodetect by default) # specificy destination file using scan numbers destination = name_{projection}_{first}-{last}_{limits}.hdf5 overwrite = false ### choose an appropriate INPUT class and specify custom options [input] #: the list of the available values are: #type = sixs:flymedh #type = sixs:flymedhgisaxs #type = sixs:flymedv #type = sixs:flymedvgisaxs type = sixs:flyuhv #type = sixs:flyuhvgisaxs #type = sixs:sbsmedh #type = sixs:sbsmedhgisaxs #type = sixs:sbsmedv #type = sixs:sbsmedvgisaxs #type = sixs:sbsuhv #type = sixs:sbsuhvgisaxs nexusdir = /nfs/ruche-sixs/sixs-soleil/com-sixs/2023/Run4/Feng_20230524 #inputrange = 1087-1121 # the list of known detectors is: #detector = ImXpadS70 detector = ImXpadS140 #detector = Eiger1M #detector = Ufxc #detector = Merlin #detector = MerlinMedipix3RXQuad centralpixel = 277, 111 # x,y sdd = 1.161 # sample to detector distance (m) detrot = 90 # ImXpadS140 (0° => Horizontal detector ; 90° => Vertical detector) # Eiger1M (0° => Horizontal bar ; -90° => Vertical bar) #attenuation_coefficient = 5 #attenuation_max = 4 #image_sum_max = 1000000 #maskmatrix = default maskmatrix = /nfs/ruche-sixs/sixs-soleil/com-sixs/2023/Run4/Feng_20230524/align/mask_nxs00021_20230913_14h25.npy # ImXpadS140 #maskmatrix = /nfs/ruche-sixs/sixs-soleil/com-sixs/binoculars/mask_eiger_20230630.npy # Eiger1M (ATTENTION au format > uint8) #wavelength = 1.54 # (if not in nxsfile !) #a = 1.54 ## Used only for HKL projection #b = 1.54 ## Used only for HKL projection #c= 1.54 ## Used only for HKL projection #alpha = 90. ## Used only for HKL projection #beta = 90. ## Used only for HKL projection #gamma = 90. ## Used only for HKL projection #ux = -90. ## Used only for HKL projection #uy = 0. ## Used only for HKL projection #uz = 0. ## Used only for HKL projection surface_orientation = vertical ## Used only for Q projection (ATTENTION '_') #surface_orientation = horizontal ## Used only for Q projection [projection] #type = hkl # refers to HklProjection #type = qxqyqz # refers to QxQyQz #type = qparqper # refers to Qpar Qper #type = qindex # refers to q time #type = realspace #type = pixels type = qcustom # #subprojection = qx_qy_qz #subprojection = q_qpar_qper subprojection = q_tth_timestamp #subprojection = qpar_qper_sampleaxis #subprojection = q_sampleaxis_tth #subprojection = gammalab_deltalab_sampleaxis # med geometry with beta=0 et mu=0 #simpleaxis = omega #subprojection = q_timestamp #subprojection = q_index # ne fonctionne pas !!! #subprojection = qpar_qper_timestamp #subprojection = qpars_qper_timestamp #subprojection = gammalab_deltalab_sampleaxis #subprojection = qpar_qper #subprojection = q_phi_qx #subprojection = q_phi_qy #subprojection = q_phi_qz #subprojection = q_stereo #subprojection = x_y_z #subprojection = y_z_timestamp #uqx = 0. ## Used only for Q projection #uqy = 0. ## Used only for Q projection #uqz = 0. ## Used only for Q projection #resolution = 0.005, 0.005, 200 resolution = 0.002, 0.002, 0.004 # or just give 1 number for all dimensions #limits = [0.7:1,-1.6:-1.3,:] #source /usr/local/applications/diffractions/binoculars/v0.0.1/env.sh #[geometry.values] #beta = 0.0 #mu #omega #delta #gamma #eix #eiz hkl-5.1.7/binoculars-ng/data/test/config_ech6eiger.txt0000664000175000017500000000321014677222567021664 0ustar00piccapicca### the DISPATCHER is responsible for job management [dispatcher] type = local # run local #type = singlecore # run local ncores = 16 # optionally, specify number of cores (autodetect by default) # specificy destination file using scan numbers destination = ech6eiger_{first}-{last}.hdf5 overwrite = false ### choose an appropriate INPUT class and specify custom options [input]## type = sixs:gisaxuhveiger # refers to class Sixs in BINoculars/backends/sixs.py nexusdir = /home/picca/test-data/translation ## approximate number of images per job, only useful when running on the oar cluster target_weight = 100 # technical data for this particular input class centralpixel = 966, 618 # x,y sdd = 1.148 # sample to detector distance (m) detrot = 90.0 # attenuation_coefficient = 1.742 maskmatrix = /home/picca/test-data/translation/mask1.npy skip_first_points = 10 skip_last_points = 20 ## choose PROJECTION plus resolution ## projections: realspace, pixels, hklprojection, hkprojection, qxqyqzprojection, qparqperprojection [projection] type = sixs:realspace #type = sixs:qparqperprojection # refers to HKProjection in BINoculars/backends/sixs.py #type = sixs:hklprojection # refers to HKProjection in BINoculars/backends/sixs.py #type = sixs:qxqyqzprojection # refers to HKProjection in BINoculars/backends/sixs.py #type = sixs:qparqperprojection # refers to HKProjection in BINoculars/backends/sixs.py resolution = 0.01,0.000075,0.000075 #resolution = 0.008, 0.008, 0.01 # or just give 1 number for all dimensions #limits = [-3.53:-1.68,-0.59:0.68,0.98:1.06] #omega_offset = 0 #source /usr/local/applications/diffractions/binoculars/v0.0.1/env.sh hkl-5.1.7/binoculars-ng/test/0000775000175000017500000000000015144640565015020 5ustar00piccapiccahkl-5.1.7/binoculars-ng/test/Spec.hs0000664000175000017500000000005414677222567016255 0ustar00piccapicca{-# OPTIONS_GHC -F -pgmF hspec-discover #-} hkl-5.1.7/binoculars-ng/test/BinocularsSpec.hs0000664000175000017500000002375115060017337020270 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} module BinocularsSpec (spec) where import Control.Monad (forM_) import Control.Monad.IO.Class (liftIO) import Control.Monad.Logger (LoggingT) import Data.Attoparsec.Text (Parser, parseOnly) import Data.Either (isRight) import Data.Ini.Config (IniParser, parseIniFile) import Data.Ini.Config.Bidir (FieldValue (..)) import Data.List.NonEmpty (NonEmpty (..)) import Data.Text (unpack) import Data.Tree (Tree (..)) import Numeric.Interval (singleton, (...)) import Test.Hspec import Test.Hspec.Attoparsec (shouldFailOn, shouldParse) import Test.Hspec.Attoparsec.Source import Test.Hspec.QuickCheck (prop) import Test.Inspection import Hkl.Binoculars import Hkl.Binoculars.Projections.QCustom import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.Lattice import Hkl.Repa import Paths_hkl import Prelude hiding (readFile) pro :: LoggingT IO () pro = process (Just "toto") (Just (ConfigRange (InputRange (singleton 120) :| [InputRange (123...453)]))) spec :: Spec spec = do ------------- -- RLimits -- ------------- describe "Limits" $ do prop "quickcheck Limits2" $ \x -> (parseOnly fieldParser . fieldEmitter $ x) `shouldBe` Right (x :: RLimits DIM2) prop "quickcheck Limits3" $ \x -> (parseOnly fieldParser . fieldEmitter $ x) `shouldBe` Right (x :: RLimits DIM3) ----------------- -- ConfigRange -- ----------------- describe "ConfigRange" $ do let it'range t e = it ("parse a range: " <> unpack t) $ do t ~> fieldParser `shouldParse` e it'range "120 123-453" (ConfigRange (InputRange (singleton 120) :| [InputRange (123...453)])) it'range "120,123-453" (ConfigRange (InputRange (singleton 120) :| [InputRange (123...453)])) it'range "120,,,123-453" (ConfigRange (InputRange (singleton 120) :| [InputRange (123...453)])) it'range "120-135 137-453" (ConfigRange (InputRange (120...135) :| [InputRange (137...453)])) it'range "120-135, 137-453" (ConfigRange (InputRange (120...135) :| [InputRange (137...453)])) it'range "0 1--1 0-0" (ConfigRange (InputRange (singleton 0) :| [InputRange (1...(-1)), InputRange (singleton 0)])) it'range "210-286" (ConfigRange (InputRange (210...286) :| [])) prop "quickcheck" $ \x -> (parseOnly fieldParser . fieldEmitter $ x) `shouldBe` Right (x :: ConfigRange) -------------------- -- DataSourcePath -- -------------------- describe "DataSourcePath Image" $ do let it'datasource'path'image (t, v) = do it ("emit a DataSourcePath Image: " <> unpack t) $ do (fvEmit fieldvalue $ v) `shouldBe` t it ("parse a DataSourcePath Image: " <> show v) $ do (fvParse fieldvalue $ t) `shouldBe` Right (v :: DSWrap_ DSImage DSPath) let tests = [ ( "[{\"contents\":[{\"detector\":\"ImXpadS140\"},1],\"tag\":\"DataSourcePath'Image'Dummy\"}]" , [DataSourcePath'Image'Dummy defaultDetector 1.0]) , ( "[{\"contents\":[{\"detector\":\"ImXpadS140\"},100],\"tag\":\"DataSourcePath'Image'Dummy\"}]" , [DataSourcePath'Image'Dummy defaultDetector 100]) ] mapM_ it'datasource'path'image tests -- data instance DataSourcePath Image -- = DataSourcePath'Image'Dummy (Detector Hkl DIM2) (DataSourcePath Attenuation) Double -- | DataSourcePath'Image'Hdf5 (Detector Hkl DIM2) (Hdf5Path DIM3 Int32) -- TODO Int32 is wrong -- | DataSourcePath'Image'Img (Detector Hkl DIM2) (DataSourcePath Attenuation) Text Scannumber -- deriving (Eq, Generic, Show, FromJSON, ToJSON) ------------------ -- MaskLocation -- ------------------ describe "MaskLocation" $ do let it'maskLocation t e = it ("parse a MaskLocation: " <> unpack t) $ do t ~> fieldParser `shouldParse` e it'maskLocation "mask.npy" (MaskLocation "mask.npy") it'maskLocation "mask_{scannumber:03d}.npy" (MaskLocation'Tmpl "mask_{scannumber:03d}.npy") it'maskLocation "mask_{scannumber:03d}.npy | mask.npy" (MaskLocation'Or (MaskLocation'Tmpl "mask_{scannumber:03d}.npy") (MaskLocation "mask.npy")) it'maskLocation "mask_{scannumber:03d}.npy | mask.npy|default " (MaskLocation'Or (MaskLocation'Tmpl "mask_{scannumber:03d}.npy") (MaskLocation'Or (MaskLocation "mask.npy") (MaskLocation "default"))) -------------- -- Geometry -- -------------- describe "Geometry" $ do let title t = "Parse a geometry from ini string: " <> unpack t let checkParse t r = parseIniFile t (iniParser :: IniParser (Maybe Geometry)) `shouldBe` r let it'geometry'right t me = it (title t) (case me of Nothing -> checkParse t (Right me) Just e -> liftIO $ withGeometry e (const $ checkParse t (Right me)) ) let it'geometry'left t err = it (title t) (const $ checkParse t (Left err)) it'geometry'right "" Nothing it'geometry'right "[geometry]\ngeometry_sample=omega chi phi\ngeometry_detector=tth\naxis_omega=rotation 0 -1 0 degree\naxis_chi=rotation 1 0 0 degree\naxis_phi=rotation 0 -1 0 degree\naxis_tth=rotation 0 -1 0 degree\n" (Just (Geometry'Custom ( Node (Axis "" NoTransformation Unit'NoUnit) [ Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [Node (Axis "chi" (Rotation 1 0 0) Unit'Angle'Degree) [Node (Axis "phi" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ] ] , Node (Axis "tth" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ] ) Nothing ) ) it'geometry'right "[geometry]\ngeometry_sample=omega chi phi\naxis_omega=rotation 0 -1 0 degree\naxis_chi=rotation 1 0 0 degree\naxis_phi=rotation 0 -1 0 degree\n" (Just (Geometry'Custom ( Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [Node (Axis "chi" (Rotation 1 0 0) Unit'Angle'Degree) [Node (Axis "phi" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ] ] ) Nothing ) ) -- error handling it'geometry'left "[geometry]\ngeometry_sample=omega chi phi\ngeometry_detector=tth\n\naxis_chi=rotation 1 0 0 degree\naxis_phi=rotation 0 -1 0 degree\naxis_tth=rotation 0 -1 0 degree\n" "Missing field \"axis_omega\" in section \"geometry\"" it'geometry'left "[geometry]\ngeometry_sample=omega chi phi\ngeometry_detector=tth\naxis_omega=rotation 0 -1 0 degree\naxis_chi=rotation 1 0 degree\naxis_phi=rotation 0 -1 0 degree\naxis_tth=rotation 0 -1 0 degree\n" "Line 5, in section \"geometry\": rotation maformed expect: 'rotation ': Failed reading: takeWhile1" it'geometry'left "[geometry]\ngeometry_sample=omega chi phi\ngeometry_detector=tth\naxis_omega=rotation 0 -1 0 degree\naxis_chi=rotation 1 0 0 toto\naxis_phi=rotation 0 -1 0 degree\naxis_tth=rotation 0 -1 0 degree\n" "Line 5, in section \"geometry\": Failed reading: unknown unit 'toto' only supported are 'ua' 'degree' 'millimeter'" -------------------- -- Transformation -- -------------------- describe "Transformation" $ do let it'transformation'good t e = it ("parse a transformation: " <> unpack t) (t ~> fieldParser `shouldParse` e) let it'transformation'error t = it ("parse a malformed transformation: " <> unpack t) ((fieldParser :: Parser Transformation) `shouldFailOn` t) it'transformation'good "no-transformation" NoTransformation it'transformation'good "rotation 1 0 0" (Rotation 1 0 0) it'transformation'good "rotation 1.0 0.0 0.0" (Rotation 1 0 0) it'transformation'good "translation -1.0 1.0 1.0" (Translation (-1) 1 1) it'transformation'error "rotation 1 0" -- (Left "Line 5, in section \"geometry\": rotation maformed expect: rotation : Failed reading: takeWhile1") ---------- -- Unit -- ---------- describe "Unit" $ do let it'unit t e = it ("parse an unit: " <> unpack t) $ do t ~> fieldParser `shouldParse` e it'unit "ua" Unit'NoUnit it'unit "degree" Unit'Angle'Degree it'unit "millimeter" Unit'Length'MilliMeter ------------------------ -- Parse full configs -- ------------------------ describe "read and parse binoculars configuration" $ do it "deprecated inputype" $ do forM_ [ "data/test/config_ech6eiger.txt" , "data/test/config_sixs_ruche_parsing.ini" , "data/test/config_geometry_custom.ini" ] $ \f -> do content <- readConfig . Just =<< getDataFileName f capabilities <- getCapabilities let args = Args'QCustomProjection (Just $ ConfigRange (InputRange (120...135) :| [InputRange (137...453)])) let cfg = getConfig content args capabilities isRight cfg `shouldBe` True describe "inspection tests" $ do it "display inspection information of binoculars-ng" $ do let results = [ $(inspectTest $ hasNoTypeClasses 'pro) , $(inspectTest $ hasNoGenerics 'pro) ] if map (\r -> case r of Success _ -> True Failure _ -> False) results == [True, True] then True `shouldBe` True else do mapM_ (\r -> case r of Success m -> putStrLn m Failure m -> putStrLn m) results False `shouldBe` True hkl-5.1.7/binoculars-ng/src/0000775000175000017500000000000015144640565014630 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl.hs0000664000175000017500000000134714677222567015717 0ustar00piccapicca{- Copyright : Copyright (C) 2014-2021 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl (module X) where import Hkl.Binoculars as X import Hkl.C as X import Hkl.Detector as X import Hkl.Engine as X import Hkl.H5 as X import Hkl.Lattice as X import Hkl.MyMatrix as X import Hkl.Pipes as X import Hkl.Types as X hkl-5.1.7/binoculars-ng/src/Hkl/0000775000175000017500000000000015144640565015346 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/0000775000175000017500000000000015144640565017447 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Config.hs0000664000175000017500000014047615143645056021223 0ustar00piccapicca{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {- Copyright : Copyright (C) 2014-2026 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Config ( Angstrom(..) , Attenuation(..) , BinocularsPreConfig(..) , Capabilities(..) , ConfigRange(..) , Degree(..) , DestinationTmpl(..) , FieldEmitter(..) , FieldParsable(..) , HasFieldComment(..) , HasFieldValue(..) , HasIniConfig(..) , HasIniParser(..) , InputRange(..) , InputTmpl(..) , InputType(..) , InputTypeDeprecated(..) , Limits(..) , MaskLocation(..) , Meter(..) , NCores(..) , ProjectionType(..) , Resolutions(..) , RLimits(..) , SampleAxis(..) , auto , auto' , autoJSON , destination' , elemFDef , elemFDef' , elemFMbDef , elemFMbDef' , eitherF , files , getCapabilities , getInitialScannumber , getMask , getPreConfig , mergeIni , parse' , parseFDef , parseMb , parseMbDef , readConfig ) where import Control.Applicative (many, optional, (<|>)) import Control.Lens (makeLenses) import Control.Monad.Catch (MonadCatch, MonadThrow, throwM, try) import Control.Monad.Catch.Pure (runCatch) import Control.Monad.IO.Class (MonadIO) import Data.Aeson (FromJSON (..), ToJSON (..), eitherDecodeStrict, encode) import Data.Attoparsec.Text (Parser, char, decimal, double, parseOnly, peekChar, satisfy, sepBy, signed, skipSpace, takeText, takeTill, ()) import Data.ByteString.Lazy (toStrict) import Data.Char (isSpace) import Data.Either.Combinators (maybeToRight) import Data.Either.Extra (mapLeft, mapRight) #if !MIN_VERSION_base(4, 20, 0) import Data.Foldable (foldl') #endif import Data.Hashable (Hashable) import Data.HashMap.Strict (HashMap, unionWith) import Data.Ini (Ini (..), printIni) import Data.Ini.Config (IniParser, fieldMbOf, fieldOf, parseIniFile, section, sectionMb) import Data.Ini.Config.Bidir (FieldValue (..), IniSpec, bool, field, getIniValue, ini, listWithSeparator, number, parseIni, section, text, (.=)) import Data.List (elemIndex, find, isInfixOf) import Data.List.NonEmpty (NonEmpty (..), head, map) import Data.Maybe (catMaybes, fromMaybe) import Data.Text (Text, breakOn, cons, drop, empty, findIndex, intercalate, isInfixOf, length, lines, pack, replace, singleton, strip, take, takeWhile, toLower, unlines, unpack, unwords, words) import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Data.Text.IO (readFile) import Data.Typeable (Proxy (..), Typeable, typeRep) import GHC.Conc (getNumCapabilities, getNumProcessors) import GHC.Exts (IsList (..)) import GHC.Generics (Generic) import Numeric.Interval (Interval, empty, hull, inf, singleton, singular, sup, (...)) import Numeric.Units.Dimensional.NonSI (angstrom) import Numeric.Units.Dimensional.Prelude (Length, degree, meter, (*~), (/~)) import Path (Abs, Dir, File, Path, fileExtension, fromAbsDir, parseAbsDir, toFilePath) import Path.IO (getCurrentDir, walkDirAccum) import System.Directory (doesPathExist) import System.FilePath (splitExtensions) import Test.QuickCheck (Arbitrary (..), elements, oneof) import Text.Printf (printf) import Prelude hiding (drop, length, lines, putStr, readFile, take, takeWhile, unlines, unwords) import Hkl.C.Binoculars import Hkl.Detector import Hkl.Exception import Hkl.Geometry import Hkl.Lattice import Hkl.Repa import Hkl.Types import Paths_hkl -- TODO -- rendre le parametre surface_orientation obligatoire pour les q -- revoir le message d'erreur lorsque un des moteur est manquant, c'est incomprehensible... exemple: -- "CanNotOpenDataSource'Double'Or (CanNotOpenDataSource'Double'Ini \"geometry.values\" \"beta\") (CanNotOpenDataSource'Double'Or (CanNotOpenDataSource'Double'Ini \"geometry.values\" \"mu\") (CanNotOpenDataSource'Double'Or (CanNotOpenDataSource'Double'Ini \"geometry.values\" \"eix\") (HklDataSourceException'HklH5Exception (CanNotOpenH5Or (CanNotOpenDataset \"scan_data/eix\") (CanNotOpenDataset \"SIXS/i14-c-cx1-dt-det_tx.1/position_pre\")))))" -- ici le probleme c'est eix... -- $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2023/Run2/Mozhzhukhina_20220548/binoculars/config_sbs_eiger.txt 640 -- gerer les mask en int64 uint64 etc... -- /nfs/ruche-sixs/sixs-soleil/com-sixs/2020/Run3/Lacaze/mask_eiger.npy -- comment documenter la section geometry.values -- migrer le code de config-ini vers ini afin de resoudre ce probleme. -- gerer les data sources qui n'ont pas la meme dimensionnalite genre un scalar et un array. -- implementer les q/tth_scantime et q/tth_scanindex -- implementer les corrections de polarisation -- gui merge de cube. -- ajouter un XpadFlat -> ajouter 3.2 dans le nom -- adapter angles -> cglm 0 -> subprojection -- - delta_lab, gamma_lab, -- - gamma_lab, delta_lab, word :: Parser Text word = takeTill isSpace "word" -- Class FieldEmitter class FieldEmitter a where fieldEmitter :: a -> Text -- Class FieldParsable class FieldEmitter a => FieldParsable a where fieldParser :: Parser a -- class HasFieldComment class HasFieldValue a => HasFieldComment a where fieldComment :: a -> [Text] -- Class HasFieldValue class HasFieldValue a where fieldvalue :: FieldValue a auto :: HasFieldValue a => FieldValue a auto = fieldvalue auto' :: HasFieldValue a => Text -> Either String a auto' = fvParse fieldvalue autoJSON :: (FromJSON a, ToJSON a) => FieldValue a autoJSON = FieldValue { fvParse = eitherDecodeStrict . encodeUtf8 , fvEmit = decodeUtf8 . toStrict . encode } instance HasFieldValue Bool where fieldvalue = bool instance HasFieldValue Degree where fieldvalue = FieldValue { fvParse = mapRight (Degree . (*~ degree)) . fvParse auto , fvEmit = \(Degree m) -> pack . show . (/~ degree) $ m } number' :: (Show a, Read a, Num a, Typeable a) => FieldValue a number' = Data.Ini.Config.Bidir.number { fvParse = \t -> case fvParse Data.Ini.Config.Bidir.number . uncomment $ t of Left _ -> fvParse Data.Ini.Config.Bidir.number . uncomment $ nt where nt :: Text nt = cons '0' t Right v -> Right v } instance HasFieldValue Double where fieldvalue = number' instance HasFieldValue (Detector Hkl DIM2) where fieldvalue = FieldValue { fvParse = parseDetector2D . strip . uncomment , fvEmit = \(Detector2D _ name _) -> pack name } instance HasFieldValue Float where fieldvalue = number' instance HasFieldValue Int where fieldvalue = number' instance HasFieldValue (Path Abs Dir) where fieldvalue = FieldValue { fvParse = \t -> mapLeft show (runCatch . parseAbsDir . unpack $ t) , fvEmit = pack . fromAbsDir } instance HasFieldValue Text where fieldvalue = text instance HasFieldValue [Double] where fieldvalue = listWithSeparator "," auto pairWithSeparator' :: FieldValue l -> Text -> FieldValue r -> FieldValue (l, r) pairWithSeparator' left sep right = FieldValue { fvParse = \ t -> let (leftChunk, rightChunk) = breakOn sep t in do x <- fvParse left leftChunk y <- fvParse right (drop (Data.Text.length sep) rightChunk) return (x, y) , fvEmit = \ (x, y) -> fvEmit left x <> sep <> fvEmit right y } instance HasFieldValue (Int, Int) where fieldvalue = pairWithSeparator' number' "," number' -- Class HasIniParser class HasIniParser a where iniParser :: IniParser a -- Class HasIniConfig readConfig :: Maybe FilePath -> IO ConfigContent readConfig mf = do cfg <- readFile =<< case mf of Nothing -> getDataFileName "data/test/config_manip1.cfg" (Just f) -> pure f return $ ConfigContent $ unlines $ [fixHeader l | l <- lines cfg] where fixHeader :: Text -> Text fixHeader l = case findIndex (== '#' ) l of Nothing -> l (Just n) -> take n l class HasIniConfig (a :: k) where data Config a data Args a defaultConfig :: Config a getConfig :: ConfigContent -> Args a -> Capabilities -> Either String (Config a) toIni :: Config a -> Ini serializeConfig :: Config a -> Text serializeConfig = printIni . toIni mergeHash :: (Eq k, Hashable k, Semigroup v) => HashMap k v -> HashMap k v -> HashMap k v mergeHash = unionWith f where f :: Semigroup v => v -> v -> v f v1 v2 = v1 <> v2 mergeIni :: Ini -> Ini -> Ini mergeIni x y = Ini {iniGlobals = mempty, iniSections = iniSections x `mergeHash` iniSections y} -- Angstrom newtype Angstrom = Angstrom { unAngstrom :: Length Double } deriving (Eq, Show) instance FromJSON Angstrom where parseJSON = fmap (Angstrom . (*~ angstrom)) . parseJSON instance ToJSON Angstrom where toJSON = toJSON . (/~ angstrom) . unAngstrom instance Arbitrary Angstrom where arbitrary = Angstrom . (*~ angstrom) <$> arbitrary instance HasFieldValue Angstrom where fieldvalue = FieldValue { fvParse = mapRight (Angstrom . (*~ angstrom)) . fvParse auto , fvEmit = \(Angstrom m) -> pack . show . (/~ angstrom) $ m } -- Attenuation newtype Attenuation = Attenuation { unAttenuation :: Double } deriving (Eq, Show) -- Axis instance FieldEmitter Axis where fieldEmitter (Axis n t u) = fieldEmitter n <> fieldEmitter t <> fieldEmitter u instance FieldParsable Axis where fieldParser = Axis <$> fieldParser <*> fieldParser <*> fieldParser instance HasFieldValue Axis where fieldvalue = parsable -- Capabilities data Capabilities = Capabilities Int Int deriving (Eq, Show) getCapabilities :: IO Capabilities getCapabilities = Capabilities <$> getNumCapabilities <*> getNumProcessors -- ConfigRange newtype ConfigRange = ConfigRange (NonEmpty InputRange) deriving (Eq, Show) deriving newtype (IsList) instance Arbitrary ConfigRange where arbitrary = ConfigRange <$> ((:|) <$> arbitrary <*> arbitrary) instance FieldEmitter ConfigRange where fieldEmitter (ConfigRange is) = unwords . GHC.Exts.toList $ Data.List.NonEmpty.map fieldEmitter is instance FieldParsable ConfigRange where fieldParser = ConfigRange <$> ((:|) <$> fieldParser <* many (satisfy isSep) <*> fieldParser `sepBy` many (satisfy isSep)) where isSep :: Char -> Bool isSep c = c == ' ' || c == ',' instance HasFieldValue ConfigRange where fieldvalue = parsable getInitialScannumber :: ConfigRange -> Scannumber getInitialScannumber (ConfigRange ne) = let (InputRange int) = Data.List.NonEmpty.head ne sn0 = inf int in Scannumber sn0 -- DestinationTmpl newtype DestinationTmpl = DestinationTmpl { unDestinationTmpl :: Text } deriving (Eq, Show) instance Arbitrary DestinationTmpl where arbitrary = pure $ DestinationTmpl "{first}_{last}.h5" instance HasFieldValue DestinationTmpl where fieldvalue = FieldValue { fvParse = Right . DestinationTmpl . uncomment , fvEmit = \(DestinationTmpl t) -> t } instance FieldEmitter Double where fieldEmitter d = pack $ printf "%f" d -- Geometry instance HasIniParser (Maybe Geometry) where iniParser = do res <- sectionMb "geometry" $ (,) <$> fieldOf "geometry_sample" (parseOnly words') <*> fieldMbOf "geometry_detector" (parseOnly words') case res of Nothing -> pure Nothing Just (sample, mdetector) -> do sample_axes <- mapM iniParser'Axis sample detector_axes <- case mdetector of Nothing -> pure [] Just detector -> mapM iniParser'Axis detector pure $ mk'Geometry sample_axes detector_axes where words' :: Parser [Text] words' = Data.Text.words <$> takeText iniParser'Axis :: Text -> IniParser Axis iniParser'Axis n = do (t, u) <- Data.Ini.Config.section "geometry" $ fieldOf ("axis_" <> n) (parseOnly ((,) <$> fieldParser <*> fieldParser)) pure $ Axis (unpack n) t u -- HklBinocularsQCustomSubProjectionEnum instance FieldEmitter HklBinocularsQCustomSubProjectionEnum where fieldEmitter HklBinocularsQCustomSubProjectionEnum'QxQyQz = "qx_qy_qz" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QTthTimestamp = "q_tth_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QTimestamp = "q_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp = "qpar_qper_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QparQper = "qpar_qper" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QPhiQx = "q_phi_qx" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QPhiQy = "q_phi_qy" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QPhiQz = "q_phi_qz" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QStereo = "q_stereo" fieldEmitter HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis = "deltalab_gammalab_sampleaxis" fieldEmitter HklBinocularsQCustomSubProjectionEnum'XYZ = "x_y_z" fieldEmitter HklBinocularsQCustomSubProjectionEnum'YZTimestamp = "y_z_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QQparQper = "q_qpar_qper" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp = "qpars_qper_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis = "qpar_qper_sampleaxis" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth = "q_sampleaxis_tth" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp = "q_sampleaxis_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp = "qx_qy_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp = "qx_qz_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp = "qy_qz_timestamp" fieldEmitter HklBinocularsQCustomSubProjectionEnum'TthAzimuth = "tth_azimuth" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QTimescan0 = "q_timescan0" fieldEmitter HklBinocularsQCustomSubProjectionEnum'QScannumber = "q_scannumber" fieldEmitter HklBinocularsQCustomSubProjectionEnum'TthScannumber = "tth_scannumber" fieldEmitter HklBinocularsQCustomSubProjectionEnum'PhixQThetax = "phix_q_thetax" fieldEmitter HklBinocularsQCustomSubProjectionEnum'PhiyQThetay = "phiy_q_thetay" fieldEmitter HklBinocularsQCustomSubProjectionEnum'PhizQThetaz = "phiz_q_thetaz" instance FieldParsable HklBinocularsQCustomSubProjectionEnum where fieldParser = go . strip . uncomment . toLower =<< takeText where err t = "Unsupported " ++ show (typeRep (Proxy :: Proxy HklBinocularsQCustomSubProjectionEnum)) ++ " :" ++ unpack t ++ " Supported ones are: " ++ unpack (unwords $ Prelude.map fieldEmitter [minBound..maxBound :: HklBinocularsQCustomSubProjectionEnum]) go :: Text -> Parser HklBinocularsQCustomSubProjectionEnum go "q_index" = pure HklBinocularsQCustomSubProjectionEnum'QTimestamp go "angle_zaxis_omega" = pure HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis go "angle_zaxis_mu" = pure HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis go t = case parseEnum (err t) t of Right p -> pure p Left err' -> fail err' instance HasFieldValue HklBinocularsQCustomSubProjectionEnum where fieldvalue = parsable instance HasFieldComment HklBinocularsQCustomSubProjectionEnum where fieldComment _ = [ "The sub-projection that can be computed with binoculars-ng" , "" , "the list of the available sub-projections are:" , "" ] <> [" - " <> fvEmit fieldvalue v | v <- [minBound..maxBound :: HklBinocularsQCustomSubProjectionEnum]] -- HklBinocularsSurfaceOrientationEnum instance HasFieldValue HklBinocularsSurfaceOrientationEnum where fieldvalue = FieldValue { fvParse = parse . strip . uncomment, fvEmit = emit } where err t = "Unsupported " ++ show (typeRep (Proxy :: Proxy HklBinocularsSurfaceOrientationEnum)) ++ " :" ++ unpack t ++ " Supported ones are: " ++ unpack (unwords $ Prelude.map emit [minBound..maxBound]) parse :: Text -> Either String HklBinocularsSurfaceOrientationEnum parse t = parseEnum (err t) t emit :: HklBinocularsSurfaceOrientationEnum -> Text emit HklBinocularsSurfaceOrientationEnum'Vertical = "vertical" emit HklBinocularsSurfaceOrientationEnum'Horizontal = "horizontal" instance HasFieldComment HklBinocularsSurfaceOrientationEnum where fieldComment _ = [ "The orientation of the surface." , "" , "the list of the available orientation are:" , "" ] <> [" - " <> fvEmit fieldvalue v | v <- [minBound..maxBound :: HklBinocularsSurfaceOrientationEnum]] <> [ "" , "this orientation if for all the Geometry axes set to zero and correspond to" , "the orientation of a vector collinear to the surface." ] -- InputRange newtype InputRange = InputRange {unInputRange :: Interval Int } deriving (Eq, Show) instance Arbitrary InputRange where arbitrary = InputRange <$> oneof [ Numeric.Interval.singleton <$> arbitrary , do f <- arbitrary t <- arbitrary pure $ if f < t then f...t else t...f ] instance FieldEmitter InputRange where fieldEmitter (InputRange i) = pack $ if singular i then printf "%d" (sup i) else printf "%d-%d" (inf i) (sup i) instance FieldParsable InputRange where fieldParser = inputRangeFromToP <|> inputRangeP' where inputRangeFromToP :: Parser InputRange inputRangeFromToP = InputRange <$> ((...) <$> signed decimal <* char '-' <*> signed decimal) inputRangeP' :: Parser InputRange inputRangeP' = InputRange <$> (Numeric.Interval.singleton <$> signed decimal) -- InputTmpl newtype InputTmpl = InputTmpl { unInputTmpl :: Text } deriving (Eq, Show) instance Arbitrary InputTmpl where arbitrary = pure $ InputTmpl "inputfiles%04.nxs" instance HasFieldValue InputTmpl where fieldvalue = FieldValue { fvParse = Right . InputTmpl . uncomment , fvEmit = \(InputTmpl t) -> t } -- InputType data InputTypeDeprecated = SixsFlyMedVEiger | SixsFlyMedVS70 | SixsFlyScanUhvGisaxsEiger | SixsFlyScanUhvUfxc deriving (Eq, Show, Enum, Bounded) instance FieldEmitter InputTypeDeprecated where fieldEmitter SixsFlyMedVEiger = "sixs:flymedveiger" fieldEmitter SixsFlyMedVS70 = "sixs:flymedvs70" fieldEmitter SixsFlyScanUhvGisaxsEiger = "sixs:gisaxuhveiger" fieldEmitter SixsFlyScanUhvUfxc = "sixs:flyscanuhvufxc" instance FieldParsable InputTypeDeprecated where fieldParser = go . strip . uncomment . toLower =<< takeText where err t = "Unsupported " ++ show (typeRep (Proxy :: Proxy InputTypeDeprecated)) ++ " :" ++ unpack t ++ " Supported ones are: " ++ unpack (unwords $ Prelude.map fieldEmitter [minBound..maxBound :: InputTypeDeprecated]) go :: Text -> Parser InputTypeDeprecated go t = case parseEnum (err t) t of Right p -> pure p Left err' -> fail err' instance HasFieldValue InputTypeDeprecated where fieldvalue = parsable data InputType = CristalK6C | Custom | DiffabsCirpad | MarsFlyscan | MarsSbs | SixsFlyMedH | SixsFlyMedHGisaxs | SixsFlyMedV | SixsFlyMedVGisaxs | SixsFlyUhv | SixsFlyUhvGisaxs | SixsSbsMedH | SixsSbsMedHGisaxs | SixsSbsMedV | SixsSbsMedVGisaxs | SixsSbsUhv | SixsSbsUhvGisaxs deriving (Eq, Show, Enum, Bounded) instance Arbitrary InputType where arbitrary = elements ([minBound .. maxBound] :: [InputType]) instance FieldEmitter InputType where fieldEmitter CristalK6C = "cristal:k6c" fieldEmitter Custom = "custom" fieldEmitter DiffabsCirpad = "diffabs:cirpad" fieldEmitter MarsFlyscan = "mars:flyscan" fieldEmitter MarsSbs = "mars:sbs" fieldEmitter SixsFlyMedH = "sixs:flymedh" fieldEmitter SixsFlyMedHGisaxs = "sixs:flymedhgisaxs" fieldEmitter SixsFlyMedV = "sixs:flymedv" fieldEmitter SixsFlyMedVGisaxs = "sixs:flymedvgisaxs" fieldEmitter SixsFlyUhv = "sixs:flyuhv" fieldEmitter SixsFlyUhvGisaxs = "sixs:flyuhvgisaxs" fieldEmitter SixsSbsMedH = "sixs:sbsmedh" fieldEmitter SixsSbsMedHGisaxs = "sixs:sbsmedhgisaxs" fieldEmitter SixsSbsMedV = "sixs:sbsmedv" fieldEmitter SixsSbsMedVGisaxs = "sixs:sbsmedvgisaxs" fieldEmitter SixsSbsUhv = "sixs:sbsuhv" fieldEmitter SixsSbsUhvGisaxs = "sixs:sbsuhvgisaxs" instance FieldParsable InputType where fieldParser = go . strip . uncomment . toLower =<< takeText where err t = "Unsupported " ++ show (typeRep (Proxy :: Proxy InputType)) ++ " :" ++ unpack t ++ " Supported ones are: " ++ unpack (unwords $ Prelude.map fieldEmitter [minBound..maxBound :: InputType]) go :: Text -> Parser InputType go "sixs:flyscanuhv" = pure SixsFlyUhv go "sixs:flyscanuhv2" = pure SixsFlyUhv go "sixs:flyscanuhvtest" = pure SixsFlyUhv go "sixs:sbsmedhfixdetector" = pure SixsSbsMedHGisaxs go "sixs:sbsmedvfixdetector" = pure SixsSbsMedVGisaxs go t = case parseEnum (err t) t of Right p -> pure p Left err' -> fail err' instance HasFieldValue InputType where fieldvalue = parsable -- Limits data Limits = Limits (Maybe Double) (Maybe Double) deriving (Eq, Show) instance Arbitrary Limits where arbitrary = Limits <$> arbitrary <*> arbitrary -- MaskLocation data MaskLocation = MaskLocation Text | MaskLocation'Tmpl Text | MaskLocation'Or MaskLocation MaskLocation deriving (Eq, Generic, Show) deriving anyclass (FromJSON, ToJSON) instance FieldEmitter MaskLocation where fieldEmitter (MaskLocation t) = t fieldEmitter (MaskLocation'Tmpl t) = t fieldEmitter (MaskLocation'Or l r) = fieldEmitter l <> " | " <> fieldEmitter r instance FieldParsable MaskLocation where fieldParser = do let loc :: Text -> MaskLocation loc t = if "{scannumber:" `Data.Text.isInfixOf` t then MaskLocation'Tmpl (strip t) else MaskLocation (strip t) t <- takeTill (== '|') if t == "" then fail "MaskLocation is Empty" else do mc <- peekChar case mc of Nothing -> pure $ loc t Just '|' -> do _ <- char '|' -- extract the '|' char MaskLocation'Or (loc t) <$> fieldParser Just c -> fail ("MaskLocation " <> [c]) instance HasFieldValue MaskLocation where fieldvalue = parsable -- Meter newtype Meter = Meter { unMeter :: Length Double } deriving (Eq, Show) instance Arbitrary Meter where arbitrary = Meter . (*~ meter) <$> arbitrary instance HasFieldValue Meter where fieldvalue = FieldValue { fvParse = mapRight (Meter . (*~ meter)) . fvParse auto , fvEmit = \(Meter m) -> pack . show . (/~ meter) $ m } -- NCores newtype NCores = NCores { unNCores :: Int } deriving (Eq, Show) instance Arbitrary NCores where arbitrary = NCores <$> arbitrary instance HasFieldValue NCores where fieldvalue = FieldValue { fvParse = mapRight NCores . fvParse auto , fvEmit = \(NCores m) -> pack . show $ m } -- ProjectionType data ProjectionType = AnglesProjection | Angles2Projection | HklProjection | QCustomProjection | QIndexProjection | QparQperProjection | QxQyQzProjection | RealSpaceProjection | PixelsProjection | TestProjection deriving (Eq, Show, Enum, Bounded) instance Arbitrary ProjectionType where arbitrary = elements ([minBound .. maxBound] :: [ProjectionType]) instance FieldEmitter ProjectionType where fieldEmitter AnglesProjection = "angles" fieldEmitter Angles2Projection = "angles2" fieldEmitter HklProjection = "hkl" fieldEmitter QCustomProjection = "qcustom" fieldEmitter QIndexProjection = "qindex" fieldEmitter QparQperProjection = "qparqper" fieldEmitter QxQyQzProjection = "qxqyqz" fieldEmitter RealSpaceProjection = "realspace" fieldEmitter PixelsProjection = "pixels" fieldEmitter TestProjection = "test" instance FieldParsable ProjectionType where fieldParser = go . strip . uncomment . toLower =<< takeText where err t = "Unsupported " ++ show (typeRep (Proxy :: Proxy ProjectionType)) ++ " :" ++ unpack t ++ " Supported ones are: " ++ unpack (unwords $ Prelude.map fieldEmitter [minBound..maxBound :: ProjectionType]) go :: Text -> Parser ProjectionType go "sixs:anglesprojection" = pure AnglesProjection go "sixs:angles2projection" = pure Angles2Projection go "sixs:qindex" = pure QIndexProjection go "sixs:qxqyqzprojection" = pure QxQyQzProjection go "sixs:qparqperprojection" = pure QparQperProjection go "sixs:hklprojection" = pure HklProjection go "sixs:realspace" = pure RealSpaceProjection go "sixs:pixels" = pure PixelsProjection go "qcustom2" = pure QCustomProjection go t = case parseEnum (err t) t of Right p -> pure p Left err' -> fail err' instance HasFieldValue ProjectionType where fieldvalue = parsable instance HasFieldComment ProjectionType where fieldComment _ = [ "The type of projection that can be computed with binoculars-ng" , "" , "the list of the available projections are:" , "" ] <> [" - " <> fvEmit fieldvalue v | v <- [minBound..maxBound :: ProjectionType]] <> [ "" , "Some projections can be customize using the `subprojection` parameter." ] ms :: String ms = "#;" uncomment :: Text -> Text uncomment = takeWhile (`notElem` ms) parsable :: FieldParsable a => FieldValue a parsable = FieldValue { fvParse = parse . strip . uncomment, fvEmit = emit } where parse :: FieldParsable a => Text -> Either String a parse = parseOnly fieldParser emit :: FieldParsable a => a -> Text emit = fieldEmitter parseEnum :: (Bounded a, Enum a, HasFieldValue a, Typeable a) => String -> Text -> Either String a parseEnum err t = maybeToRight err (find match [minBound..maxBound]) where match :: HasFieldValue a => a -> Bool match i = toLower t == fvEmit fieldvalue i -- Resolutions data Resolutions sh where Resolutions2 :: Double -> Double -> Resolutions DIM2 Resolutions3 :: Double -> Double -> Double -> Resolutions DIM3 deriving instance Eq (Resolutions sh) deriving instance Show (Resolutions sh) instance Arbitrary (Resolutions DIM2) where arbitrary = Resolutions2 <$> arbitrary <*> arbitrary instance Arbitrary (Resolutions DIM3) where arbitrary = Resolutions3 <$> arbitrary <*> arbitrary <*> arbitrary instance IsList (Resolutions sh) where type Item (Resolutions sh) = Double toList (Resolutions2 r1 r2) = [r1, r2] toList (Resolutions3 r1 r2 r3) = [r1, r2, r3] fromList = undefined instance HasFieldValue (Resolutions DIM2) where fieldvalue = FieldValue { fvParse = parse, fvEmit = emit } where parse :: Text -> Either String (Resolutions DIM2) parse t = do rs <- (fvParse $ listWithSeparator "," auto) t case rs of [r] -> Right (Resolutions2 r r) [r1, r2] -> Right (Resolutions2 r1 r2) _ -> Left "Need one or two resolutions values for this projection" emit :: Resolutions DIM2 -> Text emit (Resolutions2 r1 r2) = intercalate "," (Prelude.map (pack . show) [r1, r2]) instance HasFieldComment (Resolutions DIM2) where fieldComment _ = [ "The resolution of the bins expected for the projection's axes" , "" , "The expected value are:" , " - one double - same resolution for all axes." , " - one double per axis - each axis has it's own resolution." , "" , "the latter form use a comma to separate the values and no space is allowed." ] instance HasFieldValue (Resolutions DIM3) where fieldvalue = FieldValue { fvParse = parse, fvEmit = emit } where parse :: Text -> Either String (Resolutions DIM3) parse t = do rs <- (fvParse $ listWithSeparator "," auto) t case rs of [r] -> Right (Resolutions3 r r r) [r1, r2, r3] -> Right (Resolutions3 r1 r2 r3) _ -> Left "Need one or three resolutions values for this projection" emit :: Resolutions DIM3 -> Text emit (Resolutions3 r1 r2 r3) = intercalate "," (Prelude.map (pack . show) [r1, r2, r3]) instance HasFieldComment (Resolutions DIM3) where fieldComment _ = [ "The resolution of the bins expected for the projection's axes" , "" , "The expected value are:" , " - one double - same resolution for all axes." , " - one double per axis - each axis has it's own resolution." , "" , "the latter form use a comma to separate the values and no space is allowed." ] -- RLimits data RLimits sh where Limits2 :: Limits -> Limits -> RLimits DIM2 Limits3 :: Limits -> Limits -> Limits -> RLimits DIM3 deriving instance Eq (RLimits sh) deriving instance Show (RLimits sh) instance Arbitrary (RLimits DIM2) where arbitrary = Limits2 <$> arbitrary <*> arbitrary instance Arbitrary (RLimits DIM3) where arbitrary = Limits3 <$> arbitrary <*> arbitrary <*> arbitrary limitsP' :: Parser Limits limitsP' = Limits <$> lim <* char ':' <*> lim where lim :: Parser (Maybe Double) lim = optional double showLimit :: Maybe Double -> Text showLimit (Just l) = pack $ printf "%f" l showLimit Nothing = Data.Text.empty showLimits :: Limits -> Text showLimits (Limits f t) = showLimit f <> Data.Text.singleton ':' <> showLimit t instance (FieldEmitter (RLimits sh)) where fieldEmitter ls = Data.Text.singleton '[' <> intercalate "," (Prelude.map showLimits (GHC.Exts.toList ls)) <> Data.Text.singleton ']' instance (FieldParsable (RLimits DIM2)) where fieldParser = Limits2 <$> (char '[' *> limitsP') <*> (char ',' *> limitsP' <* char ']') instance (FieldParsable (RLimits DIM3)) where fieldParser = Limits3 <$> (char '[' *> limitsP') <*> (char ',' *> limitsP') <*> (char ',' *> limitsP' <* char ']') instance HasFieldValue (RLimits DIM2) where fieldvalue = parsable instance HasFieldComment (RLimits DIM2) where fieldComment _ = [ "The limits of the bins expected for the projection's axes" , "" , "Sometime it is interesting to focus on a specific region of a map." , "this allows to increase the resolution and keep a memory footprint acceptable." , "" , "The expected value is a list of . One per axis." , "" , " `[,]`" , "" , " has this form `:`" , "nothing means realy nothing and in this case their is no limits." , "" , "example:" , " - [:1,2:3]" , " - [:,2:3]" ] instance HasFieldValue (RLimits DIM3) where fieldvalue = parsable instance HasFieldComment (RLimits DIM3) where fieldComment _ = [ "The limits of the bins expected for the projection's axes" , "" , "Sometime it is interesting to focus on a specific region of a map." , "this allows to increase the resolution and keep a memory footprint acceptable." , "" , "The expected value is a list of . One per axis." , "" , " `[,,]`" , "" , " has this form `:`." , "nothing means realy nothing and in this case their is no limits." , "" , "example:" , " - [:1,2:3,4:5]" , " - [:,2:3,4:]" ] instance IsList (RLimits sh) where type Item (RLimits sh) = Limits toList (Limits2 l1 l2) = [l1, l2] toList (Limits3 l1 l2 l3) = [l1, l2, l3] fromList = undefined -- SampleAxis newtype SampleAxis = SampleAxis { unSampleAxis :: Text } deriving (Eq, Show) instance HasFieldValue SampleAxis where fieldvalue = FieldValue { fvParse = Right . SampleAxis . uncomment , fvEmit = \(SampleAxis t) -> t } instance Arbitrary SampleAxis where arbitrary = pure $ SampleAxis "omega" -- String instance FieldEmitter String where fieldEmitter = pack instance FieldParsable String where fieldParser = unpack <$> takeText -- Transformation instance FieldEmitter Transformation where fieldEmitter NoTransformation = "no-transformation" fieldEmitter (Rotation x y z) = "rotation " <> fieldEmitter x <> " " <> fieldEmitter y <> " " <> fieldEmitter z fieldEmitter (Translation x y z) = "translation " <> fieldEmitter x <> " " <> fieldEmitter y <> " " <> fieldEmitter z instance FieldParsable Transformation where fieldParser = do t <- skipSpace *> word case t of "no-transformation" -> pure NoTransformation "rotation" -> Rotation <$> (skipSpace *> double) <*> (skipSpace *> double) <*> (skipSpace *> double) "rotation maformed expect: 'rotation '" "translation" -> Translation <$> (skipSpace *> double) <*> (skipSpace *> double) <*> (skipSpace *> double) "translation maformed expect: 'translation '" _ -> fail ("unknown transformation: " <> unpack t <> " only 'no-transformation', 'rotation', 'translation'") -- Unit instance FieldEmitter Unit where fieldEmitter Unit'NoUnit = "ua" fieldEmitter Unit'Angle'Degree = "degree" fieldEmitter Unit'Length'MilliMeter = "millimeter" instance FieldParsable Unit where fieldParser = do t <- skipSpace *> word let units = [minBound..maxBound] :: [Unit] let supported = [ fieldEmitter u | u <- units ] let mi = elemIndex t supported case mi of Just i -> pure $ units !! i Nothing -> fail $ unpack ("unknown unit '" <> t <> "' only supported are " <> unwords [ "\'" <> t' <> "\'" | t' <- supported ]) -- BinocularsPreConfig newtype BinocularsPreConfig = BinocularsPreConfig { _binocularsPreConfigProjectionType :: ProjectionType } deriving (Eq, Show) makeLenses ''BinocularsPreConfig binocularsPreConfigDefault :: BinocularsPreConfig binocularsPreConfigDefault = BinocularsPreConfig { _binocularsPreConfigProjectionType = QxQyQzProjection } binocularsPreConfigSpec :: IniSpec BinocularsPreConfig () binocularsPreConfigSpec = do Data.Ini.Config.Bidir.section "projection" $ do binocularsPreConfigProjectionType .= field "type" parsable --------------- -- functions -- --------------- destination' :: ProjectionType -> Maybe HklBinocularsQCustomSubProjectionEnum -> ConfigRange -> Maybe (RLimits a) -> DestinationTmpl -> Bool -> IO FilePath destination' proj msub (ConfigRange rs) ml dtmpl overwrite = if overwrite then pure $ replace' proj msub interval limits dtmpl Nothing else do let guess = replace' proj msub interval limits dtmpl Nothing : Prelude.map (replace' proj msub interval limits dtmpl . Just) [2..] findFirst guess where findFirst :: [FilePath] -> IO FilePath findFirst [] = undefined -- can not append non empty list findFirst (x : xs) = do exists <- doesPathExist x if exists then findFirst xs else return x interval = foldl' hull Numeric.Interval.empty intervals limits = case ml of Nothing -> "nolimits" (Just ls) -> fieldEmitter ls intervals = Data.List.NonEmpty.map unInputRange rs isHdf5 :: Path Abs File -> Bool isHdf5 p = case (fileExtension p :: Maybe [Char]) of Nothing -> False Just ext -> ext == ".nxs" -- isInConfigRange :: Maybe InputTmpl -> Maybe ConfigRange -> FilePath -> Bool -- isInConfigRange mtmpl mr f -- = case mr of -- (Just (ConfigRange rs)) -> do -- let tmpl = maybe "%05d" (unpack . unInputTmpl) mtmpl -- any (isInInputRange (filename f) tmpl) rs -- Nothing -> True -- where -- matchIndex :: Path Rel File -> String -> Int -> Bool -- matchIndex p tmpl n = printf tmpl n `isInfixOf` toFilePath p -- isInInputRange :: Path Rel File -> String -> InputRange -> Bool -- isInInputRange p tmpl (InputRange i) = any (matchIndex p tmpl) [inf i .. sup i] -- return $ filter (\f -> all ($ f) filters) sfs) matchInputRange' :: String -> Path Abs File -> [Int] -> [Maybe ScanFilePath] matchInputRange' tmpl f is = case find (\i -> printf tmpl i `Data.List.isInfixOf` toFilePath f) is of Nothing -> [] Just i -> [Just (ScanFilePath f (Scannumber i))] matchInputRange :: String -> Path Abs File -> InputRange -> [Maybe ScanFilePath] matchInputRange tmpl f (InputRange ir) = matchInputRange' tmpl f [inf ir .. sup ir] matchConfigRange' :: String -> ConfigRange -> Path Abs File -> [Maybe ScanFilePath] matchConfigRange' tmpl (ConfigRange is) f = concatMap (matchInputRange tmpl f) is matchConfigRange :: Maybe InputTmpl -> ConfigRange -> [Path Abs File] -> [Maybe ScanFilePath] matchConfigRange mt r fs = let tmpl = maybe "%05d" (unpack . unInputTmpl) mt in concatMap (matchConfigRange' tmpl r) fs files :: (MonadThrow m, MonadIO m) => Maybe (Path Abs Dir) -> ConfigRange -> Maybe InputTmpl -> m [ScanFilePath] files md mr mt = do dir <- maybe getCurrentDir pure md fs <- walkDirAccum Nothing (\_root _dirs fs -> do let fss = filter isHdf5 fs return $ matchConfigRange mt mr fss) dir if null fs then throwM (NoDataFilesUnderTheGivenDirectory dir) else return $ catMaybes fs getMask :: (MonadCatch m, MonadIO m) => MaskLocation -> Detector Hkl DIM2 -> Scannumber -> m Mask getMask loc d sn@(Scannumber i) = case loc of MaskLocation "default" -> getDetectorDefaultMask d MaskLocation fname -> getDetectorMask d fname MaskLocation'Tmpl tmpl -> do let tmpl1 = replace "{scannumber:" "%" tmpl let tmpl2 = replace "}" "" tmpl1 let fname = pack $ printf (unpack tmpl2) i getDetectorMask d fname MaskLocation'Or l r -> do el :: Either HklDetectorException Mask <- try $ getMask l d sn case el of Left _ -> getMask r d sn Right ml -> do er :: Either HklDetectorException Mask <- try $ getMask r d sn case er of Left _ -> pure ml Right mr -> maskOr d ml mr getPreConfig' :: ConfigContent -> Either String BinocularsPreConfig getPreConfig' (ConfigContent cfg) = do let r = parseIni cfg (ini binocularsPreConfigDefault binocularsPreConfigSpec) mapRight getIniValue r getPreConfig :: Maybe FilePath -> IO (Either String BinocularsPreConfig) getPreConfig mf = getPreConfig' <$> readConfig mf addOverwrite :: Maybe Int -> DestinationTmpl -> DestinationTmpl addOverwrite midx tmpl = case midx of Nothing -> tmpl Just idx -> let (f, ext) = splitExtensions . unpack . unDestinationTmpl $ tmpl in DestinationTmpl (pack $ f <> printf "_%02d" idx <> ext) replace' :: ProjectionType -> Maybe HklBinocularsQCustomSubProjectionEnum -> Interval Int -> Text -> DestinationTmpl -> Maybe Int -> FilePath replace' proj msub i l dtmpl midx = unpack . replace "{last}" (pack . show . sup $ i) . replace "{first}" (pack . show . inf $ i) . replace "{limits}" l . replace "{projection}" (case msub of Just sub -> fieldEmitter sub Nothing -> fieldEmitter proj) . unDestinationTmpl . addOverwrite midx $ dtmpl -- geometry_sample = pitch, mu -- geometry_detector = pitch, gamma, delta -- axis_pitch = rotation 0 -1 0 deg -- axis_mu = rotation 0 0 1 deg -- axis_gamma = rotation 0 0 1 deg -- axis_delta = rotation 0 -1 0 deg -- parse'Axis :: Text -> IniParser Axis -- parse'Axis n -- = Data.Ini.Config.section "geometry" $ do -- fieldOf ("axis_" <> n) auto' -- parse'Geometry :: IniParser (Maybe Geometry) -- parse'Geometry -- = do -- msamples <- Data.Ini.Config.section "geometry" $ fieldOf "geometry_sample" auto' -- mdetectors <- Data.Ini.Config.section "geometry" $ fieldOf "geometry_detector" auto' -- axes_samples <- mapM (\a -> parse'Axis a) msamples -- axes_detectors <- mapM (\a -> parse'Axis a) mdetectors -- let mg = mk'Geometry axes_samples axes_detectors -- pure $ mk'Geometry axes_samples axes_detectors ------------------ -- Parser utils -- ------------------ parseError :: Text -> Text -> String -> Either String r parseError s f err = Left ("Can not parse " <> unpack s <> "." <> unpack f <> ": " <> err) parse' :: HasFieldValue b => Text -> Text -> Text -> Either String (Maybe b) parse' c s f = parseIniFile c $ Data.Ini.Config.section s (fieldMbOf f auto') eitherF :: (t1 -> p) -> Either t1 t2 -> (t2 -> p) -> p eitherF fa (Left a) _ = fa a eitherF _ (Right b) fb = fb b parseF :: HasFieldValue b => Text -> Text -> Text -> (Maybe b -> Either String r) -> Either String r parseF c s f = eitherF (parseError s f) (parse' c s f) parseFDef :: HasFieldValue p => Text -> Text -> Text -> p -> Either String p parseFDef c s f def = parseF c s f $ \case Nothing -> Right def Just b -> Right b parseMb :: HasFieldValue r => Text -> Text -> Text -> Either String (Maybe r) parseMb c s f = eitherF (parseError s f) (parse' c s f) pure parseMbDef :: HasFieldValue r => Text -> Text -> Text -> Maybe r -> Maybe r parseMbDef c s f def = eitherF error (parse' c s f) (<|> def) ----------------- -- Ini Emitter -- ----------------- elemFDef' :: HasFieldComment w => Text -> (v -> w) -> v -> v -> [(Text, Text)] elemFDef' k f v d = elemFDef k f v d (fieldComment (f v)) elemContent :: Text -> Text -> [Text] -> [Text] elemContent k def cs = [ "" , k <> ":" , "" ] <> cs <> [ "" , "default value: `" <> def <> "`" , "" , "uncomment and edit the next line if you want to modify the value" ] elemFDef :: HasFieldValue w => Text -> (v -> w) -> v -> v -> [Text] -> [(Text, Text)] elemFDef k f v d cs = [ ("#", l) | l <- ls ] <> [(k, fvEmit fieldvalue (f v))] where ls :: [Text] ls = elemContent k defv cs defv :: Text defv = fvEmit fieldvalue (f d) elemFMbDef' :: HasFieldComment w => Text -> (v -> Maybe w) -> v -> v -> [(Text, Text)] elemFMbDef' k f v d = elemFMbDef k f v d (fieldComment (fromMaybe undefined (f v))) elemFMbDef :: HasFieldValue w => Text -> (v -> Maybe w) -> v -> v -> [Text] -> [(Text, Text)] elemFMbDef k f v d cs = [ ("#", l) | l <- ls ] <> maybe [("# " <> k, "")] (\w -> [(k, fvEmit fieldvalue w)]) (f v) where ls :: [Text] ls = elemContent k defv cs defv :: Text defv = case f d of Nothing -> "" Just w -> fvEmit fieldvalue w hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Common.hs0000664000175000017500000001024014770555621021232 0ustar00piccapicca{-# LANGUAGE GADTs #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE StandaloneDeriving #-} {- Copyright : Copyright (C) 2014-2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Common ( Chunk(..) , DataFrameSpace(..) , InputFn(..) , addSpace , chunk , cclip , clength , mkCube' , toList , withCubeAccumulator ) where import Control.Exception (bracket) import Data.IORef (IORef, newIORef, readIORef) import Foreign.ForeignPtr (withForeignPtr) import Foreign.Marshal.Array (withArrayLen) import Hkl.Binoculars.Config import Hkl.Binoculars.Projections import Hkl.C.Binoculars import Hkl.Image import Hkl.Orphan () import Hkl.Repa import Hkl.Types data Chunk n a = Chunk !a !n !n deriving instance (Show n, Show a) => Show (Chunk n a) cclip :: (Num n, Ord n) => n -> n -> Chunk n a -> Chunk n a cclip skipL skipH (Chunk a l h) = let nl = if l + skipL > h then l else l + skipL nh = if h - skipH < l then h else h - skipH in Chunk a nl nh {-# SPECIALIZE cclip :: Int -> Int -> Chunk Int FilePath -> Chunk Int FilePath #-} clength :: Num n => Chunk n a -> n clength (Chunk _ l h) = h - l + 1 {-# SPECIALIZE clength :: Chunk Int FilePath -> Int #-} cweight :: Num n => Chunk n a -> n cweight (Chunk _ l h) = h - l csplit :: Num n => Chunk n a -> n -> (Chunk n a, Chunk n a) csplit (Chunk a l h) n = (Chunk a l (l + n), Chunk a (l+n) h) chunk :: (Num n, Ord n) => n -> [Chunk n a] -> [[Chunk n a]] chunk target = go target target where go :: (Num n, Ord n) => n -> n -> [Chunk n a] -> [[Chunk n a]] go _ _ [] = [] go tgt gap [x] = golast tgt gap x go tgt gap ~(x:xs) = let gap' = gap - cweight x in if | gap' > 0 -> cons1 x $ go tgt gap' xs | gap' == 0 -> [x] : go tgt tgt xs | (x1, x2) <- csplit x gap -> [x1] : go tgt tgt (x2 : xs) cons1 x cs = (x : Prelude.head cs) : tail cs golast tgt gap x = if | 0 == gap -> [[x]] | cweight x <= gap -> [[x]] | (x1, x2) <- csplit x gap -> [x1] : golast tgt tgt x2 {-# SPECIALIZE chunk :: Int -> [Chunk Int FilePath] -> [[Chunk Int FilePath]] #-} -- DataFrameSpace data DataFrameSpace sh = DataFrameSpace Image (Space sh) Attenuation deriving Show -- Create the Cube {-# INLINE mkCube' #-} mkCube' :: Shape sh => [DataFrameSpace sh] -> IO (Cube sh) mkCube' dfs = do let spaces = [fp | (DataFrameSpace _ (Space fp) _) <- dfs] withForeignPtrs spaces $ \pspaces -> withArrayLen pspaces $ \nSpaces' spaces' -> newCube =<< {-# SCC "hkl_binoculars_cube_new'" #-} c'hkl_binoculars_cube_new (toEnum nSpaces') spaces' {-# INLINE addSpace #-} addSpace :: Shape sh => DataFrameSpace sh -> Cube sh -> IO (Cube sh) addSpace df EmptyCube = mkCube' [df] addSpace (DataFrameSpace _ (Space fs) _) (Cube fp) = withForeignPtr fs $ \spacePtr -> withForeignPtr fp $ \cPtr -> do {-# SCC "hkl_binoculars_cube_add_space" #-} c'hkl_binoculars_cube_add_space cPtr spacePtr return $ Cube fp newtype InputFn = InputFn'List [ScanFilePath] toList :: InputFn -> [ScanFilePath] toList (InputFn'List fs) = fs instance Show InputFn where show (InputFn'List sn) = unlines $ map show sn withCubeAccumulator :: Shape sh => Cube sh -> (IORef (Cube sh) -> IO ()) -> IO (Cube sh) withCubeAccumulator c f = bracket (newIORef =<< newCube =<< (case c of EmptyCube -> c'hkl_binoculars_cube_new_empty (Cube fp) -> withForeignPtr fp $ \p -> c'hkl_binoculars_cube_new_empty_from_cube p ) ) pure (\r -> f r >> readIORef r) -- Projections hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Pipes.hs0000664000175000017500000001026114770555621021065 0ustar00piccapicca{-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {- Copyright : Copyright (C) 2014-2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Pipes ( Chunk(..) , ChunkP(..) , FramesP(..) , accumulateP , progress , project , skipMalformed , tryYield , withProgressBar , withSpace , withScanFileP ) where import Control.Monad (forever) import Control.Monad.Catch (tryJust) import Control.Monad.IO.Class (MonadIO (liftIO)) import Data.IORef (IORef, readIORef) import Path (toFilePath) import Pipes (Consumer, Pipe, Proxy, await, yield) import Pipes.Prelude (mapM) import Pipes.Safe (MonadSafe, SomeException, bracket, catchP, displayException) import System.ProgressBar (Progress (..), ProgressBar, Style (..), defStyle, elapsedTime, incProgress, newProgressBar, renderDuration, updateProgress) import Prelude hiding (filter) import Hkl.Binoculars.Common import Hkl.Binoculars.Projections import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.H5 import Hkl.Pipes import Hkl.Repa import Hkl.Types -- class ChunkP class ChunkP a where chunkP :: MonadSafe m => Maybe Int -> Maybe Int -> a -> Pipe ScanFilePath (Chunk Int ScanFilePath) m () -- class FramesP class ChunkP a => FramesP a b where framesP :: MonadSafe m => a -> Pipe (ScanFilePath, [Int]) b m () -- Project withSpace :: (MonadSafe m, Shape sh) => Detector a DIM2 -> Int -> (Space sh -> m r) -> m r withSpace d n = bracket (liftIO $ newSpace d n) pure project :: (MonadSafe m, Shape sh) => Detector a DIM2 -> Int -> (Space sh -> b -> IO (DataFrameSpace sh)) -> Pipe b (DataFrameSpace sh) m () project d n f = withSpace d n $ \s -> Pipes.Prelude.mapM (liftIO . f s) skipMalformed :: MonadSafe m => Proxy a' a b' b m r -> Proxy a' a b' b m r skipMalformed p = loop where loop = catchP p $ \e -> do liftIO $ Prelude.print $ displayException (e :: SomeException) loop -- ProgressBar withProgressBar :: Int -> (ProgressBar () -> IO ()) -> IO () withProgressBar ntot f = do pb <- newProgressBar defStyle{ stylePostfix=elapsedTime renderDuration } 10 (Progress 0 ntot ()) f pb updateProgress pb $ \p@(Progress _ t _) -> p{progressDone=t} -- Create the Cube accumulateP :: (MonadIO m, Shape sh) => IORef (Cube sh) -> Consumer (DataFrameSpace sh) m () accumulateP ref = forever $ do s <- await liftIO $ addSpace s =<< readIORef ref progress :: MonadIO m => ProgressBar s -> Consumer a m () progress p = forever $ do _ <- await liftIO $ p `incProgress` 1 tryYield :: MonadSafe m => IO r -> Proxy x' x () r m () tryYield io = do edf <- liftIO $ tryJust selectHklBinocularsException io case edf of Left _ -> return () Right df -> yield df where selectHklBinocularsException :: HklBinocularsException -> Maybe HklBinocularsException selectHklBinocularsException = Just withScanFileP :: (MonadSafe m) => ScanFilePath -> (ScanFile File -> Proxy a' a b' b m r) -> Proxy a' a b' b m r withScanFileP (ScanFilePath fp sn) g = withFileP (openFile' (toFilePath fp)) $ \f -> g (ScanFile f sn) hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Command.hs0000664000175000017500000001022014677222567021364 0ustar00piccapicca{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {- Copyright : Copyright (C) 2014-2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Command ( merge , new , process , update ) where import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Logger (LoggingT, MonadLogger, logDebugN) import Path.IO (getCurrentDir) import Path.Posix (parseAbsDir) import Hkl.Binoculars.Config import Hkl.Binoculars.Projections.Angles import Hkl.Binoculars.Projections.Hkl import Hkl.Binoculars.Projections.QCustom import Hkl.Binoculars.Projections.Test import Hkl.C.Binoculars import Hkl.Utils merge :: (MonadLogger m, MonadThrow m, MonadIO m) => FilePath -> [FilePath] -> m () merge f fs = do logDebugNSH f logDebugNSH fs liftIO $ cube'MergeAndSave f "merge" fs {-# SPECIALIZE process :: Maybe FilePath -> Maybe ConfigRange ->LoggingT IO () #-} process :: (MonadLogger m, MonadThrow m, MonadIO m) => Maybe FilePath -> Maybe ConfigRange -> m () process mf mr = do epreconf <- liftIO $ getPreConfig mf logDebugN "pre-config red from the config file" logDebugNSH epreconf case epreconf of Left e -> logErrorNSH e Right preconf -> case _binocularsPreConfigProjectionType preconf of AnglesProjection -> processAngles mf mr Angles2Projection -> processAngles mf mr HklProjection -> processHkl mf mr QCustomProjection -> processQCustom mf mr TestProjection -> processTest mf mr QIndexProjection -> processQCustom mf mr QparQperProjection -> processQCustom mf mr QxQyQzProjection -> processQCustom mf mr RealSpaceProjection -> processQCustom mf mr PixelsProjection -> processQCustom mf mr new :: (MonadIO m, MonadLogger m, MonadThrow m) => ProjectionType -> Maybe FilePath -> m () new p mf = do cwd <- case mf of (Just f) -> parseAbsDir f Nothing -> getCurrentDir case p of AnglesProjection -> newAngles cwd Angles2Projection -> newAngles cwd HklProjection -> newHkl cwd QCustomProjection -> newQCustom cwd TestProjection -> newTest cwd QIndexProjection -> newQCustom cwd QparQperProjection -> newQCustom cwd QxQyQzProjection -> newQCustom cwd RealSpaceProjection -> newQCustom cwd PixelsProjection -> newQCustom cwd update :: (MonadIO m, MonadLogger m, MonadThrow m) => FilePath -> Maybe ConfigRange -> m () update f mr = do epreconf <- liftIO $ getPreConfig (Just f) logDebugN "pre-config red from the config file" logDebugNSH epreconf case epreconf of Left e -> logErrorNSH e Right preconf -> case _binocularsPreConfigProjectionType preconf of AnglesProjection -> updateAngles (Just f) mr Angles2Projection -> updateAngles (Just f) mr HklProjection -> updateHkl (Just f) mr QCustomProjection -> updateQCustom (Just f) mr TestProjection -> updateTest (Just f) mr QIndexProjection -> updateQCustom (Just f) mr QparQperProjection -> updateQCustom (Just f) mr QxQyQzProjection -> updateQCustom (Just f) mr RealSpaceProjection -> updateQCustom (Just f) mr PixelsProjection -> updateQCustom (Just f) mr hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections.hs0000664000175000017500000001261614677222567022320 0ustar00piccapicca{-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PolyKinds #-} {- Copyright : Copyright (C) 2014-2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections ( Space(..) , cmd , newSpace , saveCube , withMaybeLimits , withMaybeMask , withMaybeSampleAxis , withNPixels , withPixelsDims , withResolutions , withSampleAxis ) where import Control.Monad (zipWithM) import Control.Monad.Catch (MonadThrow, throwM) import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Logger (MonadLogger, logDebugN) import Control.Monad.Trans.Reader (ReaderT, runReaderT) import Data.ByteString (useAsCString) import Data.Text.Encoding (encodeUtf8) import Foreign.C.String (CString, withCString) import Foreign.C.Types (CBool, CSize (..)) import Foreign.ForeignPtr (ForeignPtr, newForeignPtr, withForeignPtr) import Foreign.Marshal.Alloc (alloca) import Foreign.Marshal.Array (withArrayLen) import Foreign.Ptr (Ptr, nullPtr) import Foreign.Storable (poke) import GHC.Exts (IsList (..)) import Prelude hiding (drop) import Hkl.Binoculars.Config import Hkl.C import Hkl.Detector import Hkl.Exception import Hkl.Orphan () import Hkl.Repa import Hkl.Utils hiding (withCString) cmd :: (HasIniConfig a, MonadLogger m, MonadThrow m, MonadIO m) => ReaderT (Config a) m () -> Maybe FilePath -> Args a -> m () cmd action mf args = do content <- liftIO $ readConfig mf capabilities <- liftIO getCapabilities let econf = getConfig content args capabilities case econf of Right conf -> do logDebugN "config red from the config file" logDebugN $ serializeConfig conf runReaderT action conf Left e -> logErrorNSH e -- Common withNPixels :: Detector a DIM2 -> (CSize -> IO r) -> IO r withNPixels d f = f (toEnum . size . shape $ d) withPixelsDims :: Array F DIM3 Double -> (Int -> Ptr CSize -> IO r) -> IO r withPixelsDims p = withArrayLen (map toEnum $ listOfShape . extent $ p) saveCube :: (MonadIO m, MonadThrow m, Shape sh) => FilePath -> String -> [Cube sh] -> m () saveCube o conf rs = do let c = mconcat rs case c of (Cube fp) -> liftIO $ withCString o $ \fn -> withCString conf $ \config -> withForeignPtr fp $ \p -> do status <- c'hkl_binoculars_cube_save_hdf5 fn config p if status < 0 then throwM SaveCube'Failed else pure () EmptyCube -> throwM SaveCube'IsEmpty newLimits :: Limits -> Double -> IO (ForeignPtr C'HklBinocularsAxisLimits) newLimits (Limits mmin mmax) res = alloca $ \imin' -> alloca $ \imax' -> do imin'' <- case mmin of Nothing -> pure nullPtr (Just d) -> do poke imin' (round (d / res)) pure imin' imax'' <- case mmax of Nothing -> pure nullPtr (Just d) -> do poke imax' (round (d / res)) pure imax' newForeignPtr p'hkl_binoculars_axis_limits_free =<< c'hkl_binoculars_axis_limits_new imin'' imax'' withMaybeLimits :: Shape sh => Maybe (RLimits sh) -> Resolutions sh -> (Int -> Ptr (Ptr C'HklBinocularsAxisLimits) -> IO r) -> IO r withMaybeLimits mls rs f = do case mls of Nothing -> f 0 nullPtr (Just ls) -> do ptrs <- zipWithM newLimits (toList ls) (toList rs) withForeignPtrs ptrs $ \pts -> withArrayLen pts f withMaybeMask :: Maybe Mask -> (Ptr CBool -> IO r) -> IO r withMaybeMask mm f = case mm of Nothing -> f nullPtr (Just m) -> withForeignPtr (toForeignPtr m) $ \ptr -> f ptr withMaybeSampleAxis :: Maybe SampleAxis -> (CString -> IO r) -> IO r withMaybeSampleAxis Nothing f = f nullPtr withMaybeSampleAxis (Just a) f = withSampleAxis a f withResolutions :: Shape sh => Resolutions sh -> (Int -> Ptr Double -> IO r) -> IO r withResolutions = withArrayLen . toList withSampleAxis :: SampleAxis -> (CString -> IO r) -> IO r withSampleAxis (SampleAxis t) = useAsCString (encodeUtf8 t) ----------- -- Space -- ----------- newtype Space sh = Space (ForeignPtr C'HklBinocularsSpace) deriving Show newSpace' :: Ptr C'HklBinocularsSpace -> IO (Space sh) newSpace' p = Space <$> newForeignPtr p'hkl_binoculars_space_free p newSpace :: (Shape sh1, Shape sh) => Detector a sh1 -> Int -> IO (Space sh) newSpace d n = do let nPixels = toEnum . size . shape $ d let nDims = toEnum n newSpace' =<< c'hkl_binoculars_space_new nPixels nDims hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/0000775000175000017500000000000015144640565021746 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Config.hs0000664000175000017500000000112414770555621023507 0ustar00piccapicca{- Copyright : Copyright (C) 2014-2020, 2022, 2022, 2023, 2024 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Config ( module X ) where import Hkl.Binoculars.Projections.Config.Common as X import Hkl.Binoculars.Projections.Config.Sample as X hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Hkl.hs0000664000175000017500000003645115133711150023014 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Hkl ( Config(..) , DataFrameHkl(..) , newHkl , processHkl , updateHkl ) where import Control.Concurrent.Async (mapConcurrently) import Control.Monad (forM_, forever) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Logger (MonadLogger, logDebugN, logInfoN) import Control.Monad.Reader (MonadReader, ask) import Data.Aeson (FromJSON, ToJSON) import Data.HashMap.Strict (fromList) import Data.Ini (Ini (..)) import Data.Maybe (fromMaybe) import Data.Text (pack, unpack) import Data.Text.IO (putStr) import Data.Vector.Storable.Mutable (unsafeWith) import Foreign.C.Types (CDouble (..)) import Foreign.ForeignPtr (withForeignPtr) import GHC.Generics (Generic) import Path (Abs, Dir, Path) import Pipes (await, each, runEffect, yield, (>->)) import Pipes.Prelude (filter, map, tee, toListM) import Pipes.Safe (runSafeP, runSafeT) import Text.Printf (printf) import Hkl.Binoculars.Common import Hkl.Binoculars.Config import Hkl.Binoculars.Pipes import Hkl.Binoculars.Projections import Hkl.Binoculars.Projections.Config import Hkl.Binoculars.Projections.QCustom import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.Image import Hkl.Orphan () import Hkl.Repa import Hkl.Sample import Hkl.Types import Hkl.Utils ---------------- -- DataPath's -- ---------------- data DataFrameHkl = DataFrameHkl DataFrameQCustom Sample data DSDataFrameHkl (k :: DSKind) = DSDataFrameHkl (DSWrap_ DSDataFrameQCustom k) (DSWrap_ DSSample k) deriving (Generic) deriving instance Show (DSDataFrameHkl DSPath) instance FromJSON (DSDataFrameHkl DSPath) instance ToJSON (DSDataFrameHkl DSPath) instance DataSource DSDataFrameHkl instance Is1DStreamable (DSDataFrameHkl DSAcq) DataFrameHkl where extract1DStreamValue (DSDataFrameHkl q s) i = DataFrameHkl <$> extract1DStreamValue q i <*> extract0DStreamValue s defaultDataSource'DataFrameHkl :: DSWrap_ DSDataFrameHkl DSPath defaultDataSource'DataFrameHkl = [ DSDataFrameHkl default'DataSource'DataFrameQCustom default'DataSource'Sample ] instance HasFieldComment [DSDataFrameHkl DSPath] where fieldComment _ = [ "`datapath` internal value used to find the data in the data file." , "" , "This value is for expert only." , "" , "default value: " ] instance HasFieldValue [DSDataFrameHkl DSPath] where fieldvalue = autoJSON ------------ -- Config -- ------------ overload'DataSourcePath'DataFrameHkl :: Config Common -> Config Sample -> DSWrap_ DSDataFrameHkl DSPath -> DSWrap_ DSDataFrameHkl DSPath overload'DataSourcePath'DataFrameHkl common sample = Prelude.map (\(DSDataFrameHkl qCustomPath samplePath) -> let newQCustomPath = overload'DataSource'DataFrameQCustom common Nothing qCustomPath newSamplePath = overload'DataSource'Sample sample samplePath in DSDataFrameHkl newQCustomPath newSamplePath ) instance HasIniConfig 'HklProjection where data Config 'HklProjection = BinocularsConfig'Hkl { binocularsConfig'Hkl'Common :: Config Common , binocularsConfig'Hkl'Sample :: Config Sample , binocularsConfig'Hkl'ProjectionType :: ProjectionType , binocularsConfig'Hkl'ProjectionResolution :: Resolutions DIM3 , binocularsConfig'Hkl'ProjectionLimits :: Maybe (RLimits DIM3) , binocularsConfig'Hkl'DataPath :: DSWrap_ DSDataFrameHkl DSPath } deriving (Generic) newtype Args 'HklProjection = Args'HklProjection (Maybe ConfigRange) defaultConfig = BinocularsConfig'Hkl { binocularsConfig'Hkl'Common = defaultConfig , binocularsConfig'Hkl'Sample = defaultConfig , binocularsConfig'Hkl'ProjectionType = HklProjection , binocularsConfig'Hkl'ProjectionResolution = Resolutions3 0.01 0.01 0.01 , binocularsConfig'Hkl'ProjectionLimits = Nothing , binocularsConfig'Hkl'DataPath = defaultDataSource'DataFrameHkl } getConfig content@(ConfigContent cfg) (Args'HklProjection mr) capabilities = do binocularsConfig'Hkl'Common <- getConfig content (Args'Common mr) capabilities binocularsConfig'Hkl'Sample <- getConfig content Args'Sample capabilities binocularsConfig'Hkl'ProjectionType <- parseFDef cfg "projection" "type" (binocularsConfig'Hkl'ProjectionType defaultConfig) binocularsConfig'Hkl'ProjectionResolution <- parseFDef cfg "projection" "resolution" (binocularsConfig'Hkl'ProjectionResolution defaultConfig) binocularsConfig'Hkl'ProjectionLimits <- parseMb cfg "projection" "limits" let binocularsConfig'Hkl'DataPath = eitherF (const $ guess'DataSourcePath'DataFrameHkl binocularsConfig'Hkl'Common binocularsConfig'Hkl'Sample content) (parse' cfg "input" "datapath") (\case Nothing -> guess'DataSourcePath'DataFrameHkl binocularsConfig'Hkl'Common binocularsConfig'Hkl'Sample content Just d -> overload'DataSourcePath'DataFrameHkl binocularsConfig'Hkl'Common binocularsConfig'Hkl'Sample d) pure BinocularsConfig'Hkl{..} toIni c = toIni (binocularsConfig'Hkl'Common c) `mergeIni` toIni (binocularsConfig'Hkl'Sample c) `mergeIni` Ini { iniSections = fromList [ ("input", elemFDef' "datapath" binocularsConfig'Hkl'DataPath c defaultConfig) , ("projection", elemFDef' "type" binocularsConfig'Hkl'ProjectionType c defaultConfig <> elemFDef' "resolution" binocularsConfig'Hkl'ProjectionResolution c defaultConfig <> elemFMbDef' "limits" binocularsConfig'Hkl'ProjectionLimits c defaultConfig ) ] , iniGlobals = [] } ---------------- -- Projection -- ---------------- {-# INLINE spaceHkl #-} spaceHkl :: Detector b DIM2 -> Array F DIM3 Double -> Resolutions DIM3 -> Maybe (RLimits DIM3) -> Bool -> Space DIM3 -> DataFrameHkl -> IO (DataFrameSpace DIM3) spaceHkl det pixels rs mlimits doPolarizationCorrection space@(Space fSpace) (DataFrameHkl (DataFrameQCustom att g img mmask _ _ _) samplePath) = do withNPixels det $ \nPixels -> withGeometry g $ \geometry -> withSample samplePath $ \sample -> withForeignPtr (toForeignPtr pixels) $ \pix -> withResolutions rs $ \nr r -> withMaybeMask mmask $ \ mask'' -> withPixelsDims pixels $ \ndim dims -> withMaybeLimits mlimits rs $ \nlimits limits -> withForeignPtr fSpace $ \pSpace -> do case img of (ImageDouble arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_hkl_double" #-} c'hkl_binoculars_space_hkl_double pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageInt32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_hkl_int32_t" #-} c'hkl_binoculars_space_hkl_int32_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord16 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_hkl_uint16_t" #-} c'hkl_binoculars_space_hkl_uint16_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_hkl_uint32_t" #-} c'hkl_binoculars_space_hkl_uint32_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) return (DataFrameSpace img space att) ---------- -- Pipe -- ---------- processHklP :: (MonadIO m, MonadLogger m, MonadReader (Config 'HklProjection) m, MonadThrow m) => m () processHklP = do conf :: Config 'HklProjection <- ask -- directly from the common config let common = binocularsConfig'Hkl'Common conf let overwrite = binocularsConfig'Common'Overwrite common let det = binocularsConfig'Common'Detector common let (NCores cap) = binocularsConfig'Common'NCores common let destination = binocularsConfig'Common'Destination common let centralPixel' = binocularsConfig'Common'Centralpixel common let (Meter sampleDetectorDistance) = binocularsConfig'Common'Sdd common let (Degree detrot) = binocularsConfig'Common'Detrot common let mImageSumMax = binocularsConfig'Common'ImageSumMax common let inputRange = binocularsConfig'Common'InputRange common let nexusDir = binocularsConfig'Common'Nexusdir common let tmpl = binocularsConfig'Common'Tmpl common let mSkipFirstPoints = binocularsConfig'Common'SkipFirstPoints common let mSkipLastPoints = binocularsConfig'Common'SkipLastPoints common let doPolarizationCorrection = binocularsConfig'Common'PolarizationCorrection common -- directly from the specific config let mlimits = binocularsConfig'Hkl'ProjectionLimits conf let res = binocularsConfig'Hkl'ProjectionResolution conf let datapaths = binocularsConfig'Hkl'DataPath conf let projectionType = binocularsConfig'Hkl'ProjectionType conf -- built from the config output' <- liftIO $ destination' projectionType Nothing inputRange mlimits destination overwrite filenames <- InputFn'List <$> files nexusDir inputRange tmpl pixels <- liftIO $ getPixelsCoordinates det centralPixel' sampleDetectorDistance detrot NoNormalisation let fns = concatMap (replicate 1) (toList filenames) chunks <- liftIO $ runSafeT $ toListM $ each fns >-> chunkP mSkipFirstPoints mSkipLastPoints datapaths let ntot = sum (Prelude.map clength chunks) let jobs = chunk (quot ntot cap) chunks -- log parameters logDebugNSH filenames logDebugNSH datapaths logDebugNSH chunks logDebugN "start gessing final cube size" -- guess the final cube dimensions (To optimize, do not create the cube, just extract the shape) guessed <- liftIO $ withCubeAccumulator EmptyCube $ \c -> runSafeT $ runEffect $ each chunks >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f, quot (f + t) 4, quot (f + t) 4 * 2, quot (f + t) 4 * 3, t])) >-> framesP datapaths >-> project det 3 (spaceHkl det pixels res mlimits doPolarizationCorrection) >-> accumulateP c logDebugN "stop gessing final cube size" logInfoN (pack $ printf "let's do an Hkl projection of %d %s image(s) on %d core(s)" ntot (show det) cap) liftIO $ withProgressBar ntot $ \pb -> do r' <- mapConcurrently (\job -> withCubeAccumulator guessed $ \c -> runEffect $ runSafeP $ each job >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f..t])) -- >-> tee Pipes.Prelude.print >-> framesP datapaths >-> Pipes.Prelude.filter (\(DataFrameHkl (DataFrameQCustom _ _ img _ _ _ _) _) -> filterSumImage mImageSumMax img) >-> project det 3 (spaceHkl det pixels res mlimits doPolarizationCorrection) >-> tee (accumulateP c) >-> progress pb ) jobs saveCube output' (unpack . serializeConfig $ conf) r' -- FramesHklP instance ChunkP [DSDataFrameHkl DSPath] where chunkP mSkipFirst mSkipLast ps = skipMalformed $ forever $ do sfp <- await withScanFileP sfp $ \f' -> withDataSourcesP f' ps $ \_p p' -> do (DataSourceShape'Range (Z :. f) (Z :. t)) <- ds'Shape p' yield $ cclip (fromMaybe 0 mSkipFirst) (fromMaybe 0 mSkipLast) (Chunk sfp f (t - 1)) instance FramesP [DSDataFrameHkl DSPath] DataFrameHkl where framesP ps = skipMalformed $ forever $ do (fp, js) <- await withScanFileP fp $ \f -> withDataSourcesP f ps $ \_p p' -> forM_ js (tryYield . extract1DStreamValue p') ------------ -- Inputs -- ------------ guess'DataSourcePath'DataFrameHkl :: Config Common -> Config Sample -> ConfigContent -> DSWrap_ DSDataFrameHkl DSPath guess'DataSourcePath'DataFrameHkl common sample content = [ DSDataFrameHkl (guess'DataSource'DataFrameQCustom common Nothing content) (guess'DataSource'Sample common sample) ] --------- -- Cmd -- --------- processHkl :: (MonadLogger m, MonadThrow m, MonadIO m) => Maybe FilePath -> Maybe ConfigRange -> m () processHkl mf mr = cmd processHklP mf (Args'HklProjection mr) newHkl :: (MonadIO m, MonadLogger m, MonadThrow m) => Path Abs Dir -> m () newHkl cwd = do let conf = defaultConfig { binocularsConfig'Hkl'Common = defaultConfig { binocularsConfig'Common'Nexusdir = Just cwd } } liftIO $ Data.Text.IO.putStr $ serializeConfig conf updateHkl :: (MonadIO m, MonadLogger m, MonadThrow m) => Maybe FilePath -> Maybe ConfigRange -> m () updateHkl mf mr = cmd (pure ()) mf (Args'HklProjection mr) hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs0000664000175000017500000021642415133711150023671 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -ddump-simpl -ddump-to-file -ddump-splices #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.QCustom ( Args(..) , Config(..) , DataFrameQCustom(..) , DataSource(..) , DSDataFrameQCustom(..) , FramesP(..) , default'DataSource'DataFrameQCustom , guess'DataSource'DataFrameQCustom , newQCustom , overload'DataSource'DataFrameQCustom , processQCustom , updateQCustom ) where import Control.Applicative ((<|>)) import Control.Concurrent.Async (mapConcurrently) import Control.Monad (forM_, forever) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Logger (MonadLogger, logDebugN, logInfoN) import Control.Monad.Reader (MonadReader, ask) import Data.Aeson (FromJSON, ToJSON) import Data.HashMap.Lazy (fromList) import Data.Ini (Ini (..)) import Data.Maybe (fromJust, fromMaybe) import Data.Text (pack, unpack) import Data.Text.IO (putStr) import Data.Vector.Storable.Mutable (unsafeWith) import Foreign.C.Types (CDouble (..)) import Foreign.ForeignPtr (withForeignPtr) import GHC.Generics (Generic) import Numeric.Units.Dimensional.Prelude (Angle, degree, radian, (*~), (/~)) import Path (Abs, Dir, Path) import Pipes (await, each, runEffect, yield, (>->)) import Pipes.Prelude (filter, map, tee, toListM) import Pipes.Safe (runSafeT) import Text.Printf (printf) import Hkl.Binoculars.Common import Hkl.Binoculars.Config import Hkl.Binoculars.Pipes import Hkl.Binoculars.Projections import Hkl.Binoculars.Projections.Config import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.H5 import Hkl.Image import Hkl.Orphan () import Hkl.Repa import Hkl.Types import Hkl.Utils ----------------------- -- QCustom Projection -- ----------------------- -- Cursor data DataFrameQCustom = DataFrameQCustom Attenuation -- attenuation Geometry -- geometry Image -- image (Maybe Mask) -- mask Timestamp -- timestamp in double Timescan0 -- timescan0 in double Scannumber -- scannumber in int deriving Show data DSDataFrameQCustom (k :: DSKind) = DataSource'DataFrameQCustom (DSWrap_ DSAttenuation k) (DSWrap_ DSGeometry k) (DSWrap_ DSImage k) (DSWrap_ DSMask k) (DSWrap_ DSTimestamp k) (DSWrap_ DSTimescan0 k) (DSWrap_ DSScannumber k) deriving Generic instance DataSource DSDataFrameQCustom deriving instance Show (DSDataFrameQCustom DSPath) instance FromJSON (DSDataFrameQCustom DSPath) instance ToJSON (DSDataFrameQCustom DSPath) instance Is1DStreamable (DSDataFrameQCustom DSAcq) DataFrameQCustom where extract1DStreamValue (DataSource'DataFrameQCustom att geom img msk idx t0 s) i = DataFrameQCustom <$> extract1DStreamValue att i <*> extract1DStreamValue geom i <*> extract1DStreamValue img i <*> extract1DStreamValue msk i <*> extract1DStreamValue idx i <*> extract0DStreamValue t0 <*> extract0DStreamValue s default'DataSource'DataFrameQCustom :: DSWrap_ DSDataFrameQCustom DSPath default'DataSource'DataFrameQCustom = [ DataSource'DataFrameQCustom [ DataSourcePath'Attenuation [ DataSourcePath'Float'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/attenuation") ] ] 2 0 Nothing ] [ DataSourcePath'Geometry (Geometry'Factory Uhv Nothing) [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset(hdf5p $ grouppat 0 $ datasetp "SIXS/Monochromator/wavelength") ] ] [DataSourcePath'List [ [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/UHV_MU") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/UHV_OMEGA") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/UHV_DELTA") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/UHV_GAMMA") ] ] ] ] ] [ DataSourcePath'Image'Hdf5 defaultDetector [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/xpad_image") ] ] [ DataSourcePath'Mask (MaskLocation "") defaultDetector ] [ DataSourcePath'Timestamp'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/epoch") ] ] [ DataSourcePath'Timescan0'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/epoch") ] ] [ DataSourcePath'Scannumber ] ] instance HasFieldComment [DSDataFrameQCustom DSPath] where fieldComment _ = [ "`datapath` internal value used to find the data in the data file." , "" , "This value is for expert only." , "" , "default value: " ] instance HasFieldValue [DSDataFrameQCustom DSPath] where fieldvalue = autoJSON ------------ -- Config -- ------------ instance HasIniConfig 'QCustomProjection where data Config 'QCustomProjection = BinocularsConfig'QCustom { binocularsConfig'QCustom'Common :: Config Common , binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum :: HklBinocularsSurfaceOrientationEnum , binocularsConfig'QCustom'ProjectionType :: ProjectionType , binocularsConfig'QCustom'ProjectionResolution :: Resolutions DIM3 , binocularsConfig'QCustom'ProjectionLimits :: Maybe (RLimits DIM3) , binocularsConfig'QCustom'DataPath :: DSWrap_ DSDataFrameQCustom DSPath , binocularsConfig'QCustom'SubProjection :: Maybe HklBinocularsQCustomSubProjectionEnum , binocularsConfig'QCustom'Uqx :: Degree , binocularsConfig'QCustom'Uqy :: Degree , binocularsConfig'QCustom'Uqz :: Degree , binocularsConfig'QCustom'SampleAxis :: Maybe SampleAxis } deriving (Show, Generic) newtype Args 'QCustomProjection = Args'QCustomProjection (Maybe ConfigRange) defaultConfig = BinocularsConfig'QCustom { binocularsConfig'QCustom'Common = defaultConfig , binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum = HklBinocularsSurfaceOrientationEnum'Vertical , binocularsConfig'QCustom'ProjectionType = QCustomProjection , binocularsConfig'QCustom'ProjectionResolution = Resolutions3 0.01 0.01 0.01 , binocularsConfig'QCustom'ProjectionLimits = Nothing , binocularsConfig'QCustom'DataPath = default'DataSource'DataFrameQCustom , binocularsConfig'QCustom'SubProjection = Just HklBinocularsQCustomSubProjectionEnum'QxQyQz , binocularsConfig'QCustom'Uqx = Degree (0.0 *~ degree) , binocularsConfig'QCustom'Uqy = Degree (0.0 *~ degree) , binocularsConfig'QCustom'Uqz = Degree (0.0 *~ degree) , binocularsConfig'QCustom'SampleAxis = Nothing } getConfig content@(ConfigContent cfg) (Args'QCustomProjection mr) capabilities = do binocularsConfig'QCustom'Common <- getConfig content (Args'Common mr) capabilities binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum <- parseFDef cfg "input" "surface_orientation" (binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum defaultConfig) binocularsConfig'QCustom'ProjectionType <- parseFDef cfg "projection" "type" (binocularsConfig'QCustom'ProjectionType defaultConfig) let msubprojection' = parseMbDef cfg "projection" "subprojection" (binocularsConfig'QCustom'SubProjection defaultConfig) let binocularsConfig'QCustom'SubProjection = case binocularsConfig'QCustom'ProjectionType of QIndexProjection -> Just HklBinocularsQCustomSubProjectionEnum'QTimestamp QparQperProjection -> Just HklBinocularsQCustomSubProjectionEnum'QparQper QxQyQzProjection -> Just HklBinocularsQCustomSubProjectionEnum'QxQyQz AnglesProjection -> msubprojection' Angles2Projection -> msubprojection' HklProjection -> msubprojection' QCustomProjection -> msubprojection' RealSpaceProjection -> Just HklBinocularsQCustomSubProjectionEnum'XYZ PixelsProjection -> Just HklBinocularsQCustomSubProjectionEnum'YZTimestamp TestProjection -> msubprojection' binocularsConfig'QCustom'ProjectionResolution <- parseFDef cfg "projection" "resolution" (binocularsConfig'QCustom'ProjectionResolution defaultConfig) binocularsConfig'QCustom'ProjectionLimits <- parseMb cfg "projection" "limits" let binocularsConfig'QCustom'DataPath = eitherF (const $ guess'DataSource'DataFrameQCustom binocularsConfig'QCustom'Common binocularsConfig'QCustom'SubProjection content) (parse' cfg "input" "datapath") (\case Nothing -> guess'DataSource'DataFrameQCustom binocularsConfig'QCustom'Common binocularsConfig'QCustom'SubProjection content Just d -> overload'DataSource'DataFrameQCustom binocularsConfig'QCustom'Common binocularsConfig'QCustom'SubProjection d) binocularsConfig'QCustom'Uqx <- parseFDef cfg "projection" "uqx" (binocularsConfig'QCustom'Uqx defaultConfig) binocularsConfig'QCustom'Uqy <- parseFDef cfg "projection" "uqy" (binocularsConfig'QCustom'Uqy defaultConfig) binocularsConfig'QCustom'Uqz <- parseFDef cfg "projection" "uqz" (binocularsConfig'QCustom'Uqz defaultConfig) let errorMissingSampleAxis = case binocularsConfig'QCustom'SubProjection of Nothing -> Nothing Just sub -> case sub of HklBinocularsQCustomSubProjectionEnum'QxQyQz -> Nothing HklBinocularsQCustomSubProjectionEnum'QTthTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QparQper -> Nothing HklBinocularsQCustomSubProjectionEnum'QPhiQx -> Nothing HklBinocularsQCustomSubProjectionEnum'QPhiQy -> Nothing HklBinocularsQCustomSubProjectionEnum'QPhiQz -> Nothing HklBinocularsQCustomSubProjectionEnum'QStereo -> Nothing HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis -> error "expect a valid [projection] 'sampleaxis' key" HklBinocularsQCustomSubProjectionEnum'XYZ -> Nothing HklBinocularsQCustomSubProjectionEnum'YZTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QQparQper -> Nothing HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis -> error "expect a valid [projection] 'sampleaxis' key" HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth -> error "expect a valid [projection] 'sampleaxis' key" HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp -> error "expect a valid [projection] 'sampleaxis' key" HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp -> Nothing HklBinocularsQCustomSubProjectionEnum'TthAzimuth -> Nothing HklBinocularsQCustomSubProjectionEnum'QTimescan0 -> Nothing HklBinocularsQCustomSubProjectionEnum'QScannumber -> Nothing HklBinocularsQCustomSubProjectionEnum'TthScannumber -> Nothing HklBinocularsQCustomSubProjectionEnum'PhixQThetax -> Nothing HklBinocularsQCustomSubProjectionEnum'PhiyQThetay -> Nothing HklBinocularsQCustomSubProjectionEnum'PhizQThetaz -> Nothing let binocularsConfig'QCustom'SampleAxis = eitherF (const errorMissingSampleAxis) (parse' cfg "projection" "sampleaxis") (\case Nothing -> errorMissingSampleAxis Just d -> Just d ) pure BinocularsConfig'QCustom{..} toIni c = toIni (binocularsConfig'QCustom'Common c) `mergeIni` Ini { iniSections = fromList [ ("input", elemFDef' "surface_orientation" binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum c defaultConfig <> elemFDef' "datapath" binocularsConfig'QCustom'DataPath c defaultConfig ) , ("projection", elemFDef' "type" binocularsConfig'QCustom'ProjectionType c defaultConfig <> elemFDef' "resolution" binocularsConfig'QCustom'ProjectionResolution c defaultConfig <> elemFMbDef' "limits" binocularsConfig'QCustom'ProjectionLimits c defaultConfig <> elemFMbDef' "subprojection" binocularsConfig'QCustom'SubProjection c defaultConfig <> elemFDef "uqx" binocularsConfig'QCustom'Uqx c defaultConfig [ "rotation around the x-axis of the sample in the surface basis system -- degree" , "" , "in this basis, the x-axis is colinear to the surface of the sample along the x-rays." , "" , " `` - use the default value `0.0`" , " `a value` - use this value" ] <> elemFDef "uqy" binocularsConfig'QCustom'Uqy c defaultConfig [ "rotation around the y-axis of the sample in the surface basis system -- degree" , "" , "in this basis, the y-axis is colinear to the surface of the sample and" , "forme a directe basis with x-axis and z-axis." , "" , "examples:" , " - all motors set to zero and a vertical surface - y-axis along -z (labo basis)" , " - all motors set to zero and an horizontal surcafe - y-axis along y (labo basis)" , "" , " `` - use the default value `0.0`" , " `a value` - use this value" ] <> elemFDef "uqz" binocularsConfig'QCustom'Uqz c defaultConfig [ "rotation around the z-axis of the sample in the surface basis system -- degree" , "" , "in this basis, the z-axis is perpendicular to the surface of the sample." , "" , "examples:" , " - all motors set to zero and a vertical surface - z-axis along y (labo basis)" , " - all motors set to zero and an horizontal surcafe - z-axis along z (labo basis)" , "" , "" , " `` - use the default value `0.0`" , " `a value` - use this value" ] <> elemFMbDef "sampleaxis" binocularsConfig'QCustom'SampleAxis c defaultConfig [ "the name of the sample axis expected by some subprojections." , "" , " `` - for all subprojections which does not expect a value." , " `a value` - use this value for the subprojection expecting this axis." ] )] , iniGlobals = [] } ------------------ -- Input Path's -- ------------------ mkAttenuation :: Maybe Double -> DSWrap_ DSAttenuation DSPath -> DSWrap_ DSAttenuation DSPath mkAttenuation ma = Prelude.map ( \att -> case ma of Nothing -> case att of DataSourcePath'NoAttenuation -> DataSourcePath'NoAttenuation DataSourcePath'Attenuation{} -> DataSourcePath'NoAttenuation -- logWarnN "The current configuration extract the attenuation from the data files." -- logWarnN "You forgot to provide the attenuation coefficient in the config file." -- logWarnN "I continue without attenuation correction" -- logWarnN "Add attenuation_coefficient= under the [input] section, to fix this" -- return DataSourcePath'NoAttenuation applyed@DataSourcePath'ApplyedAttenuationFactor{} -> applyed (Just coef) -> case att of DataSourcePath'NoAttenuation -> DataSourcePath'NoAttenuation (DataSourcePath'Attenuation p o _ m) -> DataSourcePath'Attenuation p o coef m (DataSourcePath'ApplyedAttenuationFactor _) -> undefined ) mk'DataSourcePath'Mask :: Config Common -> DSMask DSPath mk'DataSourcePath'Mask c = case binocularsConfig'Common'Maskmatrix c of Nothing -> DataSourcePath'Mask'NoMask (Just m) -> DataSourcePath'Mask m (binocularsConfig'Common'Detector c) mkDetector'Sixs'Fly :: Detector Hkl DIM2 -> Scannumber -> DSWrap_ DSImage DSPath mkDetector'Sixs'Fly det@(Detector2D d _ _) sn = [case d of HklBinocularsDetectorEnum'ImxpadS140 -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ grouppat 0 (datasetp "scan_data/xpad_image")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 (datasetp "scan_data/xpad_s140_image")) ] HklBinocularsDetectorEnum'XpadFlatCorrected -> undefined HklBinocularsDetectorEnum'ImxpadS70 -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/xpad_s70_image") ] HklBinocularsDetectorEnum'DectrisEiger1M -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/eiger_image") ] HklBinocularsDetectorEnum'Ufxc -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/ufxc_sixs_image") ] HklBinocularsDetectorEnum'Merlin -> undefined HklBinocularsDetectorEnum'MerlinMedipix3rxQuad -> undefined HklBinocularsDetectorEnum'MerlinMedipix3rxQuad512 -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/merlin_image") ] HklBinocularsDetectorEnum'Cirpad -> undefined HklBinocularsDetectorEnum'RigakuXspa1M -> DataSourcePath'Image'Img det "/nfs/ruche/sixs-soleil/com-sixs/2025/Run1/Rigaku_99240224/Scan%d/Beam18keV4_scan%d_%06d.img" sn ] mkDetector'Sixs'Sbs :: Detector Hkl DIM2 -> Scannumber -> DSWrap_ DSImage DSPath mkDetector'Sixs'Sbs det@(Detector2D d _ _) sn = [case d of HklBinocularsDetectorEnum'ImxpadS140 -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p (datasetpattr ("long_name", "i14-c-c00/dt/xpad.s140/image"))) , DataSourcePath'Dataset (hdf5p (datasetpattr ("long_name", "i14-c-c00/dt/xpad.1/image"))) ] HklBinocularsDetectorEnum'XpadFlatCorrected -> undefined HklBinocularsDetectorEnum'ImxpadS70 -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/dt/xpad.s70/image")) ] HklBinocularsDetectorEnum'DectrisEiger1M -> DataSourcePath'Image'Hdf5 det [ DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/dt/eiger.1/image")) ] HklBinocularsDetectorEnum'Ufxc -> undefined HklBinocularsDetectorEnum'Merlin -> undefined HklBinocularsDetectorEnum'MerlinMedipix3rxQuad -> undefined HklBinocularsDetectorEnum'MerlinMedipix3rxQuad512 -> undefined HklBinocularsDetectorEnum'Cirpad -> undefined HklBinocularsDetectorEnum'RigakuXspa1M -> DataSourcePath'Image'Img det "/nfs/ruche/sixs-soleil/com-sixs/2025/Run1/Rigaku_99240224/Scan%d/Beam18keV4_scan%d_%06d.img" sn ] overload'DataSourcePath'Attenuation :: Maybe Double -> Maybe Float -> DSWrap_ DSAttenuation DSPath -> DSWrap_ DSAttenuation DSPath overload'DataSourcePath'Attenuation ma m' = Prelude.map ( \case DataSourcePath'Attenuation p o a m -> DataSourcePath'Attenuation p o (fromMaybe a ma) (m' <|> m) ap@DataSourcePath'ApplyedAttenuationFactor{} -> ap ap@DataSourcePath'NoAttenuation -> ap ) overload'DataSourcePath'Timestamp :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimestamp DSPath -> DSWrap_ DSTimestamp DSPath overload'DataSourcePath'Timestamp msub = Prelude.map ( \idx -> case msub of Nothing -> DataSourcePath'Timestamp'NoTimestamp (Just sub) -> case sub of HklBinocularsQCustomSubProjectionEnum'QxQyQz -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QTthTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QparQper -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QPhiQx -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QPhiQy -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QPhiQz -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QStereo -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'XYZ -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'YZTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QQparQper -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp -> idx HklBinocularsQCustomSubProjectionEnum'TthAzimuth -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QTimescan0 -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'QScannumber -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'TthScannumber -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'PhixQThetax -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'PhiyQThetay -> DataSourcePath'Timestamp'NoTimestamp HklBinocularsQCustomSubProjectionEnum'PhizQThetaz -> DataSourcePath'Timestamp'NoTimestamp ) overload'DataSourcePath'Timescan0 :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimescan0 DSPath -> DSWrap_ DSTimescan0 DSPath overload'DataSourcePath'Timescan0 msub = Prelude.map (\idx -> case msub of Nothing -> DataSourcePath'Timescan0'NoTimescan0 (Just sub) -> case sub of HklBinocularsQCustomSubProjectionEnum'QxQyQz -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QTthTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QparQper -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QPhiQx -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QPhiQy -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QPhiQz -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QStereo -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'XYZ -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'YZTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QQparQper -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'TthAzimuth -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'QTimescan0 -> idx HklBinocularsQCustomSubProjectionEnum'QScannumber -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'TthScannumber -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'PhixQThetax -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'PhiyQThetay -> DataSourcePath'Timescan0'NoTimescan0 HklBinocularsQCustomSubProjectionEnum'PhizQThetaz -> DataSourcePath'Timescan0'NoTimescan0 ) overload'DataSourcePath'Double :: Maybe Double -> DSWrap_ DSDouble DSPath -> DSWrap_ DSDouble DSPath overload'DataSourcePath'Double ma = Prelude.map (\wp -> maybe wp DataSourcePath'Double'Const ma) overload'DataSourcePath'Geometry :: Maybe Double -> DSWrap_ DSGeometry DSPath -> DSWrap_ DSGeometry DSPath overload'DataSourcePath'Geometry mw = Prelude.map (\case DataSourcePath'Geometry g' wp as -> DataSourcePath'Geometry g' (overload'DataSourcePath'Double mw wp) as (DataSourcePath'Geometry'Fix wp) -> DataSourcePath'Geometry'Fix (overload'DataSourcePath'Double mw wp) ) overload'DataSourcePath'Image :: Detector Hkl DIM2 -> Maybe (DSWrap_ DSImage DSPath) -> DSWrap_ DSImage DSPath -> DSWrap_ DSImage DSPath overload'DataSourcePath'Image _ (Just i) _ = i overload'DataSourcePath'Image det Nothing imgs = Prelude.map (\case DataSourcePath'Image'Dummy _ v -> DataSourcePath'Image'Dummy det v DataSourcePath'Image'Hdf5 _ p -> DataSourcePath'Image'Hdf5 det p DataSourcePath'Image'Img _ tmpl sn ->DataSourcePath'Image'Img det tmpl sn ) imgs overload'DataSourcePath'Mask :: Config Common -> DSWrap_ DSMask DSPath -> DSWrap_ DSMask DSPath overload'DataSourcePath'Mask c = Prelude.map (\case DataSourcePath'Mask'NoMask -> mk'DataSourcePath'Mask c DataSourcePath'Mask path _ -> let new_path = fromMaybe path (binocularsConfig'Common'Maskmatrix c) in DataSourcePath'Mask new_path (binocularsConfig'Common'Detector c) ) overload'DataSource'DataFrameQCustom :: Config Common -> Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSDataFrameQCustom DSPath -> DSWrap_ DSDataFrameQCustom DSPath overload'DataSource'DataFrameQCustom common msub = Prelude.map (\(DataSource'DataFrameQCustom attenuationPath' geometryPath imagePath maskPath indexP timescan0P scannumberPath) -> let mAttCoef = binocularsConfig'Common'AttenuationCoefficient common mMaxAtt = binocularsConfig'Common'AttenuationMax common mWavelength = binocularsConfig'Common'Wavelength common detector = binocularsConfig'Common'Detector common mImage = binocularsConfig'Common'Image common newAttenuationPath = overload'DataSourcePath'Attenuation mAttCoef mMaxAtt attenuationPath' newGeometryPath = overload'DataSourcePath'Geometry mWavelength geometryPath newImagePath = overload'DataSourcePath'Image detector mImage imagePath newMaskPath = overload'DataSourcePath'Mask common maskPath newTimestampPath = overload'DataSourcePath'Timestamp msub indexP newTimescan0Path = overload'DataSourcePath'Timescan0 msub timescan0P newScannumberPath = scannumberPath -- this is not overloadable in DataSource'DataFrameQCustom newAttenuationPath newGeometryPath newImagePath newMaskPath newTimestampPath newTimescan0Path newScannumberPath ) guess'DataSource'DataFrameQCustom :: Config Common -> Maybe HklBinocularsQCustomSubProjectionEnum -> ConfigContent -> DSWrap_ DSDataFrameQCustom DSPath guess'DataSource'DataFrameQCustom common msub cfg = do let inputtype = binocularsConfig'Common'InputType common let mAttenuationCoefficient = binocularsConfig'Common'AttenuationCoefficient common let detector = binocularsConfig'Common'Detector common let mImage = binocularsConfig'Common'Image common let mAttenuationMax = binocularsConfig'Common'AttenuationMax common let mAttenuationShift = binocularsConfig'Common'AttenuationShift common let mWavelength = binocularsConfig'Common'Wavelength common -- scan number 0 let sn0 = getInitialScannumber $ binocularsConfig'Common'InputRange common -- attenuation let dataSourcePath'Attenuation'Sixs :: DSWrap_ DSAttenuation DSPath dataSourcePath'Attenuation'Sixs = [ DataSourcePath'Attenuation [ DataSourcePath'Float'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "attenuation") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "attenuation_old") ] ] (fromMaybe 2 mAttenuationShift) 0 mAttenuationMax ] let dataSourcePath'Attenuation'SixsSBS :: DSWrap_ DSAttenuation DSPath dataSourcePath'Attenuation'SixsSBS = [ DataSourcePath'Attenuation [ DataSourcePath'Float'Hdf5 [ DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/ex/roic/att")) , DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/ex/roic-s140/att")) , DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/ex/roic-s140/att_old")) , DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/ex/roic-s70/att")) , DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "i14-c-c00/ex/roic-s70/att_old")) ] ] (fromMaybe 0 mAttenuationShift) 0 mAttenuationMax ] -- timestamp let mkTimeStamp'Sbs :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimestamp DSPath mkTimeStamp'Sbs msub' = overload'DataSourcePath'Timestamp msub' [ DataSourcePath'Timestamp'Hdf5 [ DataSourcePath'Dataset(hdf5p $ grouppat 0 $ datasetp "scan_data/sensors_timestamps") ] ] let mkTimeStamp'Fly :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimestamp DSPath mkTimeStamp'Fly msub' = overload'DataSourcePath'Timestamp msub' [ DataSourcePath'Timestamp'Hdf5 [ DataSourcePath'Dataset(hdf5p $ grouppat 0 $ datasetp "scan_data/epoch") ] ] -- timescan0 let mkTimescan0'Sbs :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimescan0 DSPath mkTimescan0'Sbs msub' = overload'DataSourcePath'Timescan0 msub' [ DataSourcePath'Timescan0'Hdf5 [ DataSourcePath'Dataset(hdf5p $ grouppat 0 $ datasetp "scan_data/sensors_timestamps") ] ] let mkTimescan0'Fly :: Maybe HklBinocularsQCustomSubProjectionEnum -> DSWrap_ DSTimescan0 DSPath mkTimescan0'Fly msub' = overload'DataSourcePath'Timescan0 msub' [ DataSourcePath'Timescan0'Hdf5 [ DataSourcePath'Dataset(hdf5p $ grouppat 0 $ datasetp "scan_data/epoch") ] ] -- wavelength let dataSourcePath'WaveLength'Diffabs :: DSWrap_ DSDouble DSPath dataSourcePath'WaveLength'Diffabs = [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "DIFFABS/d13-1-c03__op__mono/wavelength" ) ] ] let dataSourcePath'WaveLength'Mars :: DSWrap_ DSDouble DSPath dataSourcePath'WaveLength'Mars = [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "MARS/d03-1-c03__op__mono1-config_#2/lambda" ) ] , DataSourcePath'Double'Const 1.537591 ] let dataSourcePath'WaveLength'Sixs :: DSWrap_ DSDouble DSPath dataSourcePath'WaveLength'Sixs = [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/Monochromator/wavelength") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/i14-c-c02-op-mono/lambda") ] ] -- geometry let sixs'eix = [ DataSourcePath'Double'Ini cfg "geometry.values" "eix" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/eix") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/dt/tab-mt_tx.1/position")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/dt/tab-mt_tx.1/position")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/i14-c-cx1-dt-det_tx.1/position_pre") ] ] let sixs'eiz = [ DataSourcePath'Double'Ini cfg "geometry.values" "eiz" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/eiz") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/dt/tab-mt_tz.1/position")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/dt/tab-mt_tz.1/position")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/i14-c-cx1-dt-det_tz.1/position_pre") ] ] let sixs'Uhv'Mu = [ DataSourcePath'Double'Ini cfg "geometry.values" "mu" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "mu") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/ex/uhv-dif-group/mu")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "UHV_MU") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "mu_xps") ] ] let sixs'Uhv'Omega = [ DataSourcePath'Double'Ini cfg "geometry.values" "omega" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "omega") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "UHV_OMEGA") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/ex/uhv-dif-group/omega")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "omega_xps") ] ] let sixs'Uhv'Delta = [ DataSourcePath'Double'Ini cfg "geometry.values" "delta" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "delta") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "UHV_DELTA") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/ex/uhv-dif-group/delta")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "delta_xps") ] ] let sixs'Uhv'Gamma = [ DataSourcePath'Double'Ini cfg "geometry.values" "gamma" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "gamma") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "UHV_GAMMA") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx2/ex/uhv-dif-group/gamma")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "gamma_xps") ] ] let dataSourcePath'Geometry'Sixs'Uhv :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'Uhv = [ DataSourcePath'Geometry (Geometry'Factory Uhv Nothing) (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [sixs'Uhv'Mu, sixs'Uhv'Omega, sixs'Uhv'Delta, sixs'Uhv'Gamma] ] ] let dataSourcePath'Geometry'Sixs'UhvGisaxs :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'UhvGisaxs = [ DataSourcePath'Geometry sixsUhvGisaxs (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [ sixs'Uhv'Mu, sixs'Uhv'Omega, sixs'eix, sixs'eiz ] ] ] let sixs'Med'Beta = [ DataSourcePath'Double'Ini cfg "geometry.values" "beta" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "beta") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/diff-med-tpp/pitch")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/i14-c-cx1-ex-diff-med-tpp/TPP/Orientation/pitch") ] ] let sixs'MedH'Mu = [ DataSourcePath'Double'Ini cfg "geometry.values" "mu" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "mu") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-h-dif-group.1/mu")) ] ] let sixs'MedV'Mu = [ DataSourcePath'Double'Ini cfg "geometry.values" "mu" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "mu") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-dif-group.1/mu")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-grp_no_etaa/mu")) ] ] let sixs'MedV'Omega = [ DataSourcePath'Double'Ini cfg "geometry.values" "omega" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "omega") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-dif-group.1/omega")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-grp_no_etaa/omega")) ] ] let sixs'MedH'Gamma = [ DataSourcePath'Double'Ini cfg "geometry.values" "gamma" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "gamma") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-h-dif-group.1/gamma")) ] ] let sixs'MedV'Gamma = [ DataSourcePath'Double'Ini cfg "geometry.values" "gamma" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "gamma") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-dif-group.1/gamma")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-grp_no_etaa/gamma")) ] ] let sixs'MedH'Delta = [ DataSourcePath'Double'Ini cfg "geometry.values" "delta" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "delta") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-h-dif-group.1/delta")) ] ] let sixs'MedV'Delta = [ DataSourcePath'Double'Ini cfg "geometry.values" "delta" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "delta") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-dif-group.1/delta")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-grp_no_etaa/delta")) ] ] let sixs'MedV'Etaa = [ DataSourcePath'Double'Ini cfg "geometry.values" "etaa" , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetp "etaa") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/med-v-dif-group.1/etaa")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "i14-c-cx1/ex/eta-a-med-grp/etaa")) ] ] let dataSourcePath'Geometry'Sixs'MedH :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'MedH = [ DataSourcePath'Geometry (Geometry'Factory MedH Nothing) (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [ sixs'Med'Beta, sixs'MedH'Mu, sixs'MedH'Gamma, sixs'MedH'Delta ] ] ] let dataSourcePath'Geometry'Sixs'MedHGisaxs :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'MedHGisaxs = [ DataSourcePath'Geometry sixsMedHGisaxs (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [ sixs'Med'Beta, sixs'MedH'Mu, sixs'eix, sixs'eiz ] ] ] let dataSourcePath'Geometry'Sixs'MedV :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'MedV = [ DataSourcePath'Geometry (Geometry'Factory MedV Nothing) (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [ sixs'Med'Beta, sixs'MedV'Mu, sixs'MedV'Omega, sixs'MedV'Gamma, sixs'MedV'Delta, sixs'MedV'Etaa ] ] ] let dataSourcePath'Geometry'Sixs'MedVGisaxs :: DSWrap_ DSGeometry DSPath dataSourcePath'Geometry'Sixs'MedVGisaxs = [ DataSourcePath'Geometry sixsMedVGisaxs (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Sixs) [ DataSourcePath'List [ sixs'Med'Beta, sixs'MedV'Mu, sixs'MedV'Omega, sixs'eix, sixs'eiz ] ] ] let dataSourcePath'DataFrameQCustom'Sixs'Fly :: DSWrap_ DSGeometry DSPath -> Scannumber -> DSWrap_ DSDataFrameQCustom DSPath dataSourcePath'DataFrameQCustom'Sixs'Fly g sn = [ let att = mkAttenuation mAttenuationCoefficient dataSourcePath'Attenuation'Sixs in DataSource'DataFrameQCustom att g (overload'DataSourcePath'Image detector mImage (mkDetector'Sixs'Fly detector sn)) [ mk'DataSourcePath'Mask common ] (mkTimeStamp'Fly msub) (mkTimescan0'Fly msub) [ DataSourcePath'Scannumber ] ] let dataSourcePath'DataFrameQCustom'Sixs'Sbs :: DSWrap_ DSGeometry DSPath -> Scannumber -> DSWrap_ DSDataFrameQCustom DSPath dataSourcePath'DataFrameQCustom'Sixs'Sbs g sn = [ let att = mkAttenuation mAttenuationCoefficient dataSourcePath'Attenuation'SixsSBS in DataSource'DataFrameQCustom att g ( overload'DataSourcePath'Image detector mImage (mkDetector'Sixs'Sbs detector sn) ) [ mk'DataSourcePath'Mask common ] ( mkTimeStamp'Sbs msub ) ( mkTimescan0'Sbs msub ) [ DataSourcePath'Scannumber ] ] case inputtype of CristalK6C -> [ DataSource'DataFrameQCustom (mkAttenuation mAttenuationCoefficient [ DataSourcePath'NoAttenuation]) [ DataSourcePath'Geometry (Geometry'Factory K6c Nothing) (overload'DataSourcePath'Double mWavelength [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Monochromator/lambda")]]) [ DataSourcePath'List [ [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Diffractometer/i06-c-c07-ex-dif-mu/position") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Diffractometer/i06-c-c07-ex-dif-komega/position") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Diffractometer/i06-c-c07-ex-dif-kappa/position") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/actuator_1_1") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Diffractometer/i06-c-c07-ex-dif-gamma/position") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "CRISTAL/Diffractometer/i06-c-c07-ex-dif-delta/position") ] ] ] ] ] [ DataSourcePath'Image'Hdf5 detector [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/data_05") ] ] [ mk'DataSourcePath'Mask common ] (mkTimeStamp'Sbs msub) (mkTimescan0'Sbs msub) [ DataSourcePath'Scannumber ] ] Custom -> undefined DiffabsCirpad -> [ DataSource'DataFrameQCustom (mkAttenuation mAttenuationCoefficient [ DataSourcePath'NoAttenuation]) [ DataSourcePath'Geometry cirpad (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Diffabs) [ DataSourcePath'List [ [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "d13-1-cx1/ex/cirpad_delta/position")) ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "d13-1-cx1/ex/dif.1-cirpad-gam/position")) ] ] ] ] ] (overload'DataSourcePath'Image detector mImage [ DataSourcePath'Image'Hdf5 detector [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp "scan_data" $ datasetpattr ("long_name", "d13-1-cx1/dt/cirpad.1/image")) ] ] ) [ mk'DataSourcePath'Mask common ] (mkTimeStamp'Sbs msub) (mkTimescan0'Sbs msub) [ DataSourcePath'Scannumber ] ] MarsFlyscan -> [ DataSource'DataFrameQCustom (mkAttenuation mAttenuationCoefficient [ DataSourcePath'NoAttenuation ]) -- (mkAttenuation mAttenuationCoefficient (DataSourcePath'ApplyedAttenuationFactor -- (DataSourcePath'Float'Hdf5 ([ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/applied_att")))) [ DataSourcePath'Geometry (Geometry'Factory Mars Nothing) (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Mars) [ DataSourcePath'List [ [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/omega") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/chi") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/phi") ] ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/tth") ] ] ] ] ] (overload'DataSourcePath'Image detector mImage [ DataSourcePath'Image'Hdf5 detector [ DataSourcePath'Dataset (hdf5p $ grouppat 0 (datasetp "scan_data/merlin_image")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 (datasetp "scan_data/merlin_quad_image")) ] ] ) [ mk'DataSourcePath'Mask common ] (mkTimeStamp'Fly msub) (mkTimescan0'Sbs msub) [ DataSourcePath'Scannumber ] ] MarsSbs -> [ DataSource'DataFrameQCustom (mkAttenuation mAttenuationCoefficient [ DataSourcePath'NoAttenuation ]) [ DataSourcePath'Geometry (Geometry'Factory Mars Nothing) (overload'DataSourcePath'Double mWavelength dataSourcePath'WaveLength'Mars) [ DataSourcePath'List [ [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/omega") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "MARS/d03-1-cx2__ex__dif-mt_rx.1_#2/raw_value") ] , DataSourcePath'Double'Const 0 ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/chi") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "MARS/d03-1-cx2__ex__gonio-mt_rs_#2/raw_value") ] , DataSourcePath'Double'Const 0 ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/phi") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetpattr ("long_name", "d03-1-cx2/ex/gonio-mt_rz/position")) , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "MARS/d03-1-cx2__ex__gonio-mt_rz_#2/raw_value") ] , DataSourcePath'Double'Const 0 ] , [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "scan_data/tth") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "MARS/d03-1-cx2__ex__dif-mt_rx.2_#2/raw_value") ] , DataSourcePath'Double'Const 0 ] ] ] ] (overload'DataSourcePath'Image detector mImage [ DataSourcePath'Image'Hdf5 detector [ DataSourcePath'Dataset (hdf5p $ datasetpattr ("long_name", "d03-1-c00/dt/merlin-quad/image")) , DataSourcePath'Dataset (hdf5p $ datasetpattr ("interpretation", "image")) ] ] ) [ mk'DataSourcePath'Mask common ] (mkTimeStamp'Sbs msub) (mkTimescan0'Sbs msub) [ DataSourcePath'Scannumber ] ] SixsFlyMedH -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'MedH sn0 SixsFlyMedHGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'MedHGisaxs sn0 SixsFlyMedV -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'MedV sn0 SixsFlyMedVGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'MedVGisaxs sn0 SixsFlyUhv -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'Uhv sn0 SixsFlyUhvGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Fly dataSourcePath'Geometry'Sixs'UhvGisaxs sn0 SixsSbsMedH -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'MedH sn0 SixsSbsMedHGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'MedHGisaxs sn0 SixsSbsMedV -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'MedV sn0 SixsSbsMedVGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'MedVGisaxs sn0 SixsSbsUhv -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'Uhv sn0 SixsSbsUhvGisaxs -> dataSourcePath'DataFrameQCustom'Sixs'Sbs dataSourcePath'Geometry'Sixs'UhvGisaxs sn0 {-# INLINE spaceQCustom #-} spaceQCustom :: Detector a DIM2 -> Array F DIM3 Double -> Resolutions DIM3 -> HklBinocularsSurfaceOrientationEnum -> Maybe (RLimits DIM3) -> HklBinocularsQCustomSubProjectionEnum -> Angle Double -> Angle Double -> Angle Double -> Maybe SampleAxis -> Bool -> Space DIM3 -> DataFrameQCustom -> IO (DataFrameSpace DIM3) spaceQCustom det pixels rs surf mlimits subprojection uqx uqy uqz mSampleAxis doPolarizationCorrection space@(Space fSpace) (DataFrameQCustom att g img mmask index timescan0 scannumber) = withNPixels det $ \nPixels -> withGeometry g $ \geometry -> withForeignPtr (toForeignPtr pixels) $ \pix -> withResolutions rs $ \nr r -> withPixelsDims pixels $ \ndim dims -> withMaybeMask mmask $ \ c'mask -> withMaybeLimits mlimits rs $ \nlimits limits -> withMaybeSampleAxis mSampleAxis $ \sampleAxis -> withForeignPtr fSpace $ \pSpace -> do case img of (ImageDouble arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_qcustom_double" #-} c'hkl_binoculars_space_qcustom_double pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) c'mask (toEnum $ fromEnum surf) limits (toEnum nlimits) (CDouble . unTimestamp $ index) (CDouble . unTimescan0 $ timescan0) (toEnum . fromEnum . unScannumber $ scannumber) (toEnum . fromEnum $ subprojection) (CDouble (uqx /~ radian)) (CDouble (uqy /~ radian)) (CDouble (uqz /~ radian)) sampleAxis (toEnum . fromEnum $ doPolarizationCorrection) (ImageInt32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_qcustom_int32_t" #-} c'hkl_binoculars_space_qcustom_int32_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) c'mask (toEnum $ fromEnum surf) limits (toEnum nlimits) (CDouble . unTimestamp $ index) (CDouble . unTimescan0 $ timescan0) (toEnum . fromEnum . unScannumber $ scannumber) (toEnum . fromEnum $ subprojection) (CDouble (uqx /~ radian)) (CDouble (uqy /~ radian)) (CDouble (uqz /~ radian)) sampleAxis (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord16 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_qcustom_uint16_t" #-} c'hkl_binoculars_space_qcustom_uint16_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) c'mask (toEnum $ fromEnum surf) limits (toEnum nlimits) (CDouble . unTimestamp $ index) (CDouble . unTimescan0 $ timescan0) (toEnum . fromEnum . unScannumber $ scannumber) (toEnum . fromEnum $ subprojection) (CDouble (uqx /~ radian)) (CDouble (uqy /~ radian)) (CDouble (uqz /~ radian)) sampleAxis (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_qcustom_uint32_t" #-} c'hkl_binoculars_space_qcustom_uint32_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) c'mask (toEnum $ fromEnum surf) limits (toEnum nlimits) (CDouble . unTimestamp $ index) (CDouble . unTimescan0 $ timescan0)(toEnum . fromEnum . unScannumber $ scannumber) (toEnum . fromEnum $ subprojection) (CDouble (uqx /~ radian)) (CDouble (uqy /~ radian)) (CDouble (uqz /~ radian)) sampleAxis (toEnum . fromEnum $ doPolarizationCorrection) return (DataFrameSpace img space att) ---------- -- Pipe -- ---------- processQCustomP :: (MonadIO m, MonadLogger m, MonadReader (Config 'QCustomProjection) m, MonadThrow m) => m () processQCustomP = do (conf :: Config 'QCustomProjection) <- ask -- directly from the common config let common = binocularsConfig'QCustom'Common conf let overwrite = binocularsConfig'Common'Overwrite common let det = binocularsConfig'Common'Detector common let (NCores cap) = binocularsConfig'Common'NCores common let destination = binocularsConfig'Common'Destination common let centralPixel' = binocularsConfig'Common'Centralpixel common let (Meter sampleDetectorDistance) = binocularsConfig'Common'Sdd common let (Degree detrot) = binocularsConfig'Common'Detrot common let mImageSumMax = binocularsConfig'Common'ImageSumMax common let inputRange = binocularsConfig'Common'InputRange common let nexusDir = binocularsConfig'Common'Nexusdir common let tmpl = binocularsConfig'Common'Tmpl common let mSkipFirstPoints = binocularsConfig'Common'SkipFirstPoints common let mSkipLastPoints = binocularsConfig'Common'SkipLastPoints common let doPolarizationCorrection = binocularsConfig'Common'PolarizationCorrection common -- directly from the specific config let mlimits = binocularsConfig'QCustom'ProjectionLimits conf let res = binocularsConfig'QCustom'ProjectionResolution conf let surfaceOrientation = binocularsConfig'QCustom'HklBinocularsSurfaceOrientationEnum conf let datapaths = binocularsConfig'QCustom'DataPath conf let subprojection = fromJust (binocularsConfig'QCustom'SubProjection conf) -- should not be Maybe let projectionType = binocularsConfig'QCustom'ProjectionType conf let (Degree uqx) = binocularsConfig'QCustom'Uqx conf let (Degree uqy) = binocularsConfig'QCustom'Uqy conf let (Degree uqz) = binocularsConfig'QCustom'Uqz conf let mSampleAxis = binocularsConfig'QCustom'SampleAxis conf -- built from the config output' <- liftIO $ destination' projectionType (Just subprojection) inputRange mlimits destination overwrite filenames <- InputFn'List <$> files nexusDir inputRange tmpl pixels <- liftIO $ getPixelsCoordinates det centralPixel' sampleDetectorDistance detrot NoNormalisation logDebugNSH filenames -- compute the jobs let fns = concatMap (replicate 1) (toList filenames) chunks <- liftIO $ runSafeT $ toListM $ each fns >-> chunkP mSkipFirstPoints mSkipLastPoints datapaths let ntot = sum (Prelude.map clength chunks) let jobs = chunk (quot ntot cap) chunks -- log parameters logDebugNSH datapaths logDebugNSH chunks logDebugNSH ntot logDebugNSH jobs logDebugN "start gessing final cube size" -- guess the final cube dimensions (To optimize, do not create the cube, just extract the shape) guessed <- liftIO $ withCubeAccumulator EmptyCube $ \c -> runSafeT $ runEffect $ each chunks >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f, quot (f + t) 4, quot (f + t) 4 * 2, quot (f + t) 4 * 3, t])) >-> framesP datapaths >-> project det 3 (spaceQCustom det pixels res surfaceOrientation mlimits subprojection uqx uqy uqz mSampleAxis doPolarizationCorrection) >-> accumulateP c logDebugN "stop gessing final cube size" -- do the final projection logInfoN $ pack $ printf "let's do a QCustom projection of %d %s image(s) on %d core(s)" ntot (show det) cap liftIO $ withProgressBar ntot $ \pb -> do r' <- mapConcurrently (\job -> withCubeAccumulator guessed $ \c -> runSafeT $ runEffect $ each job >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f..t])) >-> framesP datapaths >-> Pipes.Prelude.filter (\(DataFrameQCustom _ _ img _ _ _ _) -> filterSumImage mImageSumMax img) >-> project det 3 (spaceQCustom det pixels res surfaceOrientation mlimits subprojection uqx uqy uqz mSampleAxis doPolarizationCorrection) >-> tee (accumulateP c) >-> progress pb ) jobs saveCube output' (unpack . serializeConfig $ conf) r' instance ChunkP [DSDataFrameQCustom DSPath] where chunkP mSkipFirst mSkipLast ps = skipMalformed $ forever $ do sfp <- await withScanFileP sfp $ \f' -> withDataSourcesP f' ps $ \p p' -> do liftIO $ print p (DataSourceShape'Range (Z :. f) (Z :. t)) <- ds'Shape p' yield $ cclip (fromMaybe 0 mSkipFirst) (fromMaybe 0 mSkipLast) (Chunk sfp f (t - 1)) instance FramesP [DSDataFrameQCustom DSPath] DataFrameQCustom where framesP ps = skipMalformed $ forever $ do (fp, js) <- await withScanFileP fp $ \f -> withDataSourcesP f ps $ \_p p' -> forM_ js (tryYield . extract1DStreamValue p') --------- -- Cmd -- --------- processQCustom :: (MonadLogger m, MonadThrow m, MonadIO m) => Maybe FilePath -> Maybe ConfigRange -> m () processQCustom mf mr = cmd processQCustomP mf (Args'QCustomProjection mr) newQCustom :: (MonadIO m, MonadLogger m, MonadThrow m) => Path Abs Dir -> m () newQCustom cwd = do let conf = defaultConfig { binocularsConfig'QCustom'Common = defaultConfig { binocularsConfig'Common'Nexusdir = Just cwd } } liftIO $ Data.Text.IO.putStr $ serializeConfig conf updateQCustom :: (MonadIO m, MonadLogger m, MonadThrow m) => Maybe FilePath -> Maybe ConfigRange -> m () updateQCustom mf mr = cmd (pure ()) mf (Args'QCustomProjection mr) hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Angles.hs0000664000175000017500000003243515133711150023505 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Angles ( newAngles , processAngles , updateAngles ) where import Control.Concurrent.Async (mapConcurrently) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO (liftIO), liftIO) import Control.Monad.Logger (MonadLogger, logDebugN, logInfoN) import Control.Monad.Reader (MonadReader, ask) import Data.HashMap.Lazy (fromList) import Data.Ini (Ini (..)) import Data.Text (pack, unpack) import Data.Text.IO (putStr) import Data.Vector.Storable.Mutable (unsafeWith) import Foreign.C.Types (CDouble (..)) import Foreign.ForeignPtr (withForeignPtr) import Path (Abs, Dir, Path) import Pipes (each, runEffect, (>->)) import Pipes.Prelude (filter, map, tee, toListM) import Pipes.Safe (runSafeT) import Text.Printf (printf) import Hkl.Binoculars.Common import Hkl.Binoculars.Config import Hkl.Binoculars.Pipes import Hkl.Binoculars.Projections import Hkl.Binoculars.Projections.Config import Hkl.Binoculars.Projections.QCustom import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.Image import Hkl.Repa import Hkl.Types import Hkl.Utils ------------ -- Config -- ------------ instance HasIniConfig 'AnglesProjection where data instance Config 'AnglesProjection = BinocularsConfig'Angles { binocularsConfig'Angles'Common :: Config Common , binocularsConfig'Angles'ProjectionType :: ProjectionType , binocularsConfig'Angles'ProjectionResolution :: Resolutions DIM3 , binocularsConfig'Angles'ProjectionLimits :: Maybe (RLimits DIM3) , binocularsConfig'Angles'SampleAxis :: SampleAxis , binocularsConfig'Angles'DataPath :: DSWrap_ DSDataFrameQCustom DSPath } deriving (Show) newtype Args 'AnglesProjection = Args'AnglesProjection (Maybe ConfigRange) defaultConfig = BinocularsConfig'Angles { binocularsConfig'Angles'Common = defaultConfig , binocularsConfig'Angles'ProjectionType = AnglesProjection , binocularsConfig'Angles'ProjectionResolution = Resolutions3 1 1 1 , binocularsConfig'Angles'ProjectionLimits = Nothing , binocularsConfig'Angles'DataPath = default'DataSource'DataFrameQCustom , binocularsConfig'Angles'SampleAxis = SampleAxis "omega" } getConfig content@(ConfigContent cfg) (Args'AnglesProjection mr) capabilities = do binocularsConfig'Angles'Common <- getConfig content (Args'Common mr) capabilities binocularsConfig'Angles'ProjectionType <- parseFDef cfg "projection" "type" (binocularsConfig'Angles'ProjectionType defaultConfig) binocularsConfig'Angles'ProjectionResolution <- parseFDef cfg "projection" "resolution" (binocularsConfig'Angles'ProjectionResolution defaultConfig) binocularsConfig'Angles'ProjectionLimits <- parseMb cfg "projection" "limits" binocularsConfig'Angles'SampleAxis <- parseFDef cfg "input" "sample_axis" $ case binocularsConfig'Angles'ProjectionType of AnglesProjection -> SampleAxis "omega" Angles2Projection -> SampleAxis "mu" HklProjection -> undefined QCustomProjection -> undefined QIndexProjection -> undefined QparQperProjection -> undefined QxQyQzProjection -> undefined RealSpaceProjection -> undefined PixelsProjection -> undefined TestProjection -> undefined let binocularsConfig'Angles'DataPath = eitherF (const $ guess'DataSource'DataFrameQCustom binocularsConfig'Angles'Common Nothing content) (parse' cfg "input" "datapath") (\case Nothing -> guess'DataSource'DataFrameQCustom binocularsConfig'Angles'Common Nothing content Just d -> overload'DataSource'DataFrameQCustom binocularsConfig'Angles'Common Nothing d) pure BinocularsConfig'Angles{..} toIni c = toIni (binocularsConfig'Angles'Common c) `mergeIni` Ini { iniSections = fromList [ ("input", elemFDef' "datapath" binocularsConfig'Angles'DataPath c defaultConfig <> elemFDef "sample_axis" binocularsConfig'Angles'SampleAxis c defaultConfig [ "the name of the sample axis" , "" , "default value: `omega`" ] ) , ("projection", elemFDef' "type" binocularsConfig'Angles'ProjectionType c defaultConfig <> elemFDef' "resolution" binocularsConfig'Angles'ProjectionResolution c defaultConfig <> elemFMbDef' "limits" binocularsConfig'Angles'ProjectionLimits c defaultConfig )] , iniGlobals = [] } ------------------------- -- Angles Projection -- ------------------------- {-# INLINE spaceAngles #-} spaceAngles :: Detector a DIM2 -> Array F DIM3 Double -> Resolutions DIM3 -> Maybe (RLimits DIM3) -> SampleAxis -> Space DIM2 -> DataFrameQCustom -> IO (DataFrameSpace DIM2) spaceAngles det pixels rs mlimits sAxis space@(Space fSpace) (DataFrameQCustom att g img mmask _ _ _) = withNPixels det $ \nPixels -> withGeometry g $ \geometry -> withForeignPtr (toForeignPtr pixels) $ \pix -> withResolutions rs $ \nr r -> withPixelsDims pixels $ \ndim dims -> withMaybeMask mmask $ \ mask'' -> withMaybeLimits mlimits rs $ \nlimits limits -> withSampleAxis sAxis $ \sampleAxis -> withForeignPtr fSpace $ \pSpace -> do case img of (ImageDouble arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_angles_double" #-} c'hkl_binoculars_space_angles_double pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) sampleAxis (ImageInt32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_angles_int32_t" #-} c'hkl_binoculars_space_angles_int32_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) sampleAxis (ImageWord16 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_angles_uint16_t" #-} c'hkl_binoculars_space_angles_uint16_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) sampleAxis (ImageWord32 arr) -> unsafeWith arr $ \i -> do {-# SCC "hkl_binoculars_space_angles_uint32_t" #-} c'hkl_binoculars_space_angles_uint32_t pSpace geometry i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) sampleAxis return (DataFrameSpace img space att) ---------- -- Pipe -- ---------- processAnglesP :: (MonadIO m, MonadLogger m, MonadReader (Config 'AnglesProjection) m, MonadThrow m) => m () processAnglesP = do conf :: Config 'AnglesProjection <- ask -- directly from the common config let common = binocularsConfig'Angles'Common conf let overwrite = binocularsConfig'Common'Overwrite common let det = binocularsConfig'Common'Detector common let (NCores cap) = binocularsConfig'Common'NCores common let destination = binocularsConfig'Common'Destination common let centralPixel' = binocularsConfig'Common'Centralpixel common let (Meter sampleDetectorDistance) = binocularsConfig'Common'Sdd common let (Degree detrot) = binocularsConfig'Common'Detrot common let mImageSumMax = binocularsConfig'Common'ImageSumMax common let inputRange = binocularsConfig'Common'InputRange common let nexusDir = binocularsConfig'Common'Nexusdir common let tmpl = binocularsConfig'Common'Tmpl common let mSkipFirstPoints = binocularsConfig'Common'SkipFirstPoints common let mSkipLastPoints = binocularsConfig'Common'SkipLastPoints common -- directly from the specific config let mlimits = binocularsConfig'Angles'ProjectionLimits conf let res = binocularsConfig'Angles'ProjectionResolution conf let datapaths = binocularsConfig'Angles'DataPath conf let projectionType = binocularsConfig'Angles'ProjectionType conf let sampleAxis = binocularsConfig'Angles'SampleAxis conf -- built from the config output' <- liftIO $ destination' projectionType Nothing inputRange mlimits destination overwrite filenames <- InputFn'List <$> files nexusDir inputRange tmpl pixels <- liftIO $ getPixelsCoordinates det centralPixel' sampleDetectorDistance detrot Normalisation let fns = concatMap (replicate 1) (toList filenames) chunks <- liftIO $ runSafeT $ toListM $ each fns >-> chunkP mSkipFirstPoints mSkipLastPoints datapaths let ntot = sum (Prelude.map clength chunks) let jobs = chunk (quot ntot cap) chunks -- log parameters logDebugNSH filenames logDebugNSH datapaths logDebugNSH chunks logDebugN "start gessing final cube size" -- guess the final cube dimensions (To optimize, do not create the cube, just extract the shape) guessed <- liftIO $ withCubeAccumulator EmptyCube $ \c -> runSafeT $ runEffect $ each chunks >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f, quot (f + t) 4, quot (f + t) 4 * 2, quot (f + t) 4 * 3, t])) >-> framesP datapaths >-> project det 3 (spaceAngles det pixels res mlimits sampleAxis) >-> accumulateP c logDebugN "stop gessing final cube size" -- do the final projection logInfoN (pack $ printf "let's do a Angles projection of %d %s image(s) on %d core(s)" ntot (show det) cap) liftIO $ withProgressBar ntot $ \pb -> do r' <- mapConcurrently (\job -> withCubeAccumulator guessed $ \c -> runSafeT $ runEffect $ each job >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f..t])) >-> framesP datapaths >-> Pipes.Prelude.filter (\(DataFrameQCustom _ _ img _ _ _ _) -> filterSumImage mImageSumMax img) >-> project det 3 (spaceAngles det pixels res mlimits sampleAxis) >-> tee (accumulateP c) >-> progress pb ) jobs saveCube output' (unpack . serializeConfig $ conf) r' --------- -- Cmd -- --------- processAngles :: (MonadLogger m, MonadThrow m, MonadIO m) => Maybe FilePath -> Maybe ConfigRange -> m () processAngles mf mr = cmd processAnglesP mf (Args'AnglesProjection mr) newAngles :: (MonadIO m, MonadLogger m, MonadThrow m) => Path Abs Dir -> m () newAngles cwd = do let conf = defaultConfig { binocularsConfig'Angles'Common = defaultConfig { binocularsConfig'Common'Nexusdir = Just cwd } } liftIO $ Data.Text.IO.putStr $ serializeConfig conf updateAngles :: (MonadIO m, MonadLogger m, MonadThrow m) => Maybe FilePath -> Maybe ConfigRange -> m () updateAngles mf mr = cmd (pure ()) mf (Args'AnglesProjection mr) hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Config/0000775000175000017500000000000015144640565023153 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Config/Common.hs0000664000175000017500000010155115060017337024732 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Config.Common ( Args(..) , Common , Config(..) ) where import Control.Applicative ((<|>)) import Data.HashMap.Lazy (fromList) import Data.Ini (Ini (..)) import Data.Ini.Config (parseIniFile) import Data.Ini.Config.Bidir (FieldValue (..)) import Data.List.NonEmpty (NonEmpty (..)) import Data.Text (pack) import GHC.Generics (Generic) import Numeric.Interval (singleton) import Numeric.Units.Dimensional.Prelude (degree, meter, (*~)) import Path (Abs, Dir, Path) import Hkl.Binoculars.Config import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.Orphan () import Hkl.Repa import Hkl.Types data Common instance HasIniConfig Common where data Config Common = BinocularsConfig'Common { binocularsConfig'Common'NCores :: NCores , binocularsConfig'Common'Destination :: DestinationTmpl , binocularsConfig'Common'Overwrite :: Bool , binocularsConfig'Common'InputType :: InputType , binocularsConfig'Common'Nexusdir :: Maybe (Path Abs Dir) , binocularsConfig'Common'Tmpl :: Maybe InputTmpl , binocularsConfig'Common'InputRange :: ConfigRange , binocularsConfig'Common'Detector :: Detector Hkl DIM2 , binocularsConfig'Common'Image :: Maybe (DSWrap_ DSImage DSPath) , binocularsConfig'Common'Centralpixel :: (Int, Int) , binocularsConfig'Common'Sdd :: Meter , binocularsConfig'Common'Detrot :: Degree , binocularsConfig'Common'AttenuationCoefficient :: Maybe Double , binocularsConfig'Common'AttenuationMax :: Maybe Float , binocularsConfig'Common'AttenuationShift :: Maybe Int , binocularsConfig'Common'Maskmatrix :: Maybe MaskLocation , binocularsConfig'Common'Wavelength :: Maybe Double , binocularsConfig'Common'ImageSumMax :: Maybe Double , binocularsConfig'Common'SkipFirstPoints :: Maybe Int , binocularsConfig'Common'SkipLastPoints :: Maybe Int , binocularsConfig'Common'PolarizationCorrection :: Bool , binocularsConfig'Common'Geometry :: Maybe Geometry } deriving (Eq, Show, Generic) data Args Common = Args'Common (Maybe ConfigRange) defaultConfig = BinocularsConfig'Common { binocularsConfig'Common'NCores = NCores 4 , binocularsConfig'Common'Destination = DestinationTmpl "{projection}_{first}-{last}_{limits}.h5" , binocularsConfig'Common'Overwrite = False , binocularsConfig'Common'InputType = SixsFlyUhv , binocularsConfig'Common'Nexusdir = Nothing , binocularsConfig'Common'Tmpl = Nothing , binocularsConfig'Common'InputRange = ConfigRange (InputRange (Numeric.Interval.singleton 1) :| []) , binocularsConfig'Common'Detector = defaultDetector , binocularsConfig'Common'Image = Nothing , binocularsConfig'Common'Centralpixel = (0, 0) , binocularsConfig'Common'Sdd = Meter (1 *~ meter) , binocularsConfig'Common'Detrot = Degree (0 *~ degree) , binocularsConfig'Common'AttenuationCoefficient = Nothing , binocularsConfig'Common'AttenuationMax = Nothing , binocularsConfig'Common'AttenuationShift = Nothing , binocularsConfig'Common'Maskmatrix = Nothing , binocularsConfig'Common'Wavelength = Nothing , binocularsConfig'Common'ImageSumMax = Nothing , binocularsConfig'Common'SkipFirstPoints = Nothing , binocularsConfig'Common'SkipLastPoints = Nothing , binocularsConfig'Common'PolarizationCorrection = False , binocularsConfig'Common'Geometry = Nothing } toIni c = Ini { iniSections = fromList [ ("dispatcher", elemFDef "ncores" binocularsConfig'Common'NCores c defaultConfig [ "the number of cores use for computation." , "the effective number of core used depends on the real number of core available on your computer." , "at maximum this value could be one less that the physical number of core." , "" , "if `zero` use the maximum of capabilities." ] <> elemFDef "destination" binocularsConfig'Common'Destination c defaultConfig [ "the template used to produce the destination file" , "" , "You can write what you want in the field but it need to end with .h5" , "The generated file is an hdf5 file. You can add in the text some specific" , "string which will be replace with values extracted from the configuration" , "when saving the file." , "" , "These parameters are:" , " `{first}` - replaced by the first scan numer of the serie" , " `{last}` - replaced by the last scan numer of the serie" , " `{limits}` - replaced by the limits of the final cube or nolimits" , " `{projection}` - the projection name" ] <> elemFDef "overwrite" binocularsConfig'Common'Overwrite c defaultConfig [ " `true` - the output file name is always the same, so it is overwriten when" , "recomputed with the same parameter." , " `false` - the output is modifier and `_` is added to the filename in order" , " to avoid overwriting them." ] ) , ("input", elemFDef "type" binocularsConfig'Common'InputType c defaultConfig ([ "Define the experimental setup and the type of scan used to acquire the data" , "" , "the list of the available values are:" , "" ] <> [" - " <> fvEmit fieldvalue v | v <- [minBound..maxBound :: InputType]] <> [ "" , "`sbs` means step by step scan." , "" , "`fly` or `flyscan` means flyscan." , "" , "`medh` or `medv` or `uhv` refers to the diffractometer." , "" , "Some configurations specify the detector like eiger/s70..." , "look at the `detector` parameter if you need to select another one." , "" , "This parameter defines how to find the datas in the hdf5 file." ] ) <> elemFMbDef "nexusdir" binocularsConfig'Common'Nexusdir c defaultConfig [ "Directory path where binoculars-ng looks for the data." , "" , "All sub directories are explored." , "It can be relative to the current directory or absolute" ] <> elemFMbDef "inputtmpl" binocularsConfig'Common'Tmpl c defaultConfig [ "data files are matched with this template in order to decide if it must be used for computation." , "" , "the template is pre-processed with the printf logic and an integer value comming from the the `inputrange`" , "for example with the default value `%05d` and this `inputrange=1-10`, all supported files which contains" , "00001, 00002, ... 00010 are used during the computation." ] <> elemFDef "inputrange" binocularsConfig'Common'InputRange c defaultConfig [ "Indexes of the scans you want to process" , "" , "There are two ways to enter these values." , " `n` - a single scan with index n" , " `n-m` - a range of scans from n to m (included)" , "" , " `n-m,p,...` - combination of scans indexes separated by a coma (no space allowed)." ] <> elemFDef "detector" binocularsConfig'Common'Detector c defaultConfig ([ "The detector name" , "" , "In order to process the data, we need the 3D position of each pixel" , "in the laboratory basis. Since every detector has it's own geometry," , "it is necessary to provide this information unambiguously." , "" , "Some data files contain more than one detectors, so this parameter allows" , "to select the right one." , "" , "the list of known detectors is:"] <> [" - " <> pack n | (Detector2D _ n _) <- detectors] ) <> elemFMbDef "images" binocularsConfig'Common'Image c defaultConfig [ "where to find the image in the files JSON encoded" ] <> elemFDef "centralpixel" binocularsConfig'Common'Centralpixel c defaultConfig [ "x,y coordinates in pixels of the direct beam on the detector." , "" , "with `sdd` and `detrot` this parameter allow to set the" , "detector position on the detector's arm when all motors" , "are set equal to `0`." ] <> elemFDef "sdd" binocularsConfig'Common'Sdd c defaultConfig [ "sample-detector-distance expressed in meter." , "" , "with `centralpixel` and `detrot` this parameter allow to set the" , "detector position on the detector's arm when all motors" , "are set equal to `0`." ] <> elemFDef "detrot" binocularsConfig'Common'Detrot c defaultConfig [ "rotation of the detector along the x axis expressed in Degrees." , "" , "with `centralpixel` and `sdd` this parameter allow to set the" , "detector position on the detector's arm when all motors" , "are set equal to `0`." ] <> elemFMbDef "attenuation_coefficient" binocularsConfig'Common'AttenuationCoefficient c defaultConfig ["the attenuation coefficient used to correct the detector's data." , "" , " `` - no correction is applyed" , " `value` - a correction is applyed" , "" , "The `value` depends on the energy of the experiment." , "" , "On Sixs there is two different kind of attenuation system." , " `new attenuation` - based on piezo actuators (fast)" , " `old attenuation` - based on pneumatic` actuators (slower)" , "" , "both system save the same kind of data's in the data files." , "An attenuation value `v` at each step of the scan which allows" , "to compute the image correction with this formula:" , "" , " `attenuation_coef ** v`" , "" , "The only difference is a shift of the index for the the new attenuation." , "The applyed correction for the n-th point is computed with the `value`" , "at n + 2" ] <> elemFMbDef "attenuation_max" binocularsConfig'Common'AttenuationMax c defaultConfig [ "maximum attenuation allow for the attenuation correction." , "" , " `` - always apply the attenuation correction." , " `max` - apply the attenuation if `v` is lower or equal to `max`" , "" , "`v` is the value stored by the attenuation system in the data file." , "" , "This parameter has an effect only if the `attenuation_coefficient`" , "was previously set." ] <> elemFMbDef "attenuation_shift" binocularsConfig'Common'AttenuationShift c defaultConfig [ "shift the index of the attenuation." , "" , " `` - use the default offset. (0 or 2 depending of the kind of scan)" , " `shift` - force the shift to the given value." , "" , "This `shift` correspond to a decalage between the attenuator values and the images." , "the attenuation corresponding to the image at the position `n` in a scan" , "is in fact `n + shift`" , "" , "This parameter has an effect only if the `attenuation_coefficient`" , "was previously set." ] <> elemFMbDef "maskmatrix" binocularsConfig'Common'Maskmatrix c defaultConfig [ "name of the file which contain the detector mask or `default`" , "" , "The supported type of file is for now only .npy (double | bool)" , "" , "the `default` value can be set in order to use the default" , "mask of the detector. Some of them have by default some area" , "which required to be masked (pixels with non standard surface, " , "area with holes)." , "" , "sometime you need to assign a specific mask to a scan number." , "In that case, just add `{scannumber:}` in the filename where" , " is equivalent to the Python f-string logic." , "This small template will be used to compute the real mask filename." , "for exemple for the scannumber 8" , " - mask_{scannumber:02d}.npy -> mask_08.npy" , " - mask_{scannumber:03d}.npy -> mask_008.npy" , "" , "You can combine multiple masks with an or logic using the `|` operator" , "like this:" , " `mask_{scannumber:02d}.npy | mask.npy | default`" , "" , "Most of the time a mask file was generated during the experiment." ] <> elemFMbDef "wavelength" binocularsConfig'Common'Wavelength c defaultConfig [ "overwrite the wavelength from the data file with the one provided." , "" , " `` - use the data file wavelength" , " `wavelength` - overwrite the data file value with this one." ] <> elemFMbDef "image_sum_max" binocularsConfig'Common'ImageSumMax c defaultConfig [ "maximum intensity value allow for the sum of all pixels in an image in order to process it." , "" , " `` - process all images." , " `max` - process images only if the sum of all the pixels is lower than `max`" ] <> elemFMbDef "skip_first_points" binocularsConfig'Common'SkipFirstPoints c defaultConfig [ "skip the first `n` points of each scan." , "" , " `` - process all images." , " `n` - skip the first `n` points (`n` included)" ] <> elemFMbDef "skip_last_points" binocularsConfig'Common'SkipLastPoints c defaultConfig [ "skip the last `n` points of each scan." , "" , " `` - process all images." , " `n` - skip the last `n` points (`n` included)" ] <> elemFDef "polarization_correction" binocularsConfig'Common'PolarizationCorrection c defaultConfig [ " `true` - apply the polarization correctionthe to the intensities." , " `false` - do not apply the polarization correction." , " to avoid overwriting them." ] ) ] , iniGlobals = [] } getConfig (ConfigContent cfg) (Args'Common mr) (Capabilities ncapmax ncoresmax) = do let minputtypedeprecated = eitherF (const Nothing) (parse' cfg "input" "type") id binocularsConfig'Common'NCores <- eitherF error (parse' cfg "dispatcher" "ncores") (\mb -> do let ns = [ncapmax, ncoresmax - 1] <> case mb of Nothing -> let (NCores b) = binocularsConfig'Common'NCores defaultConfig in [b] Just b -> case b of 0 -> [] _ -> [b] pure $ NCores (minimum ns)) binocularsConfig'Common'Destination <- parseFDef cfg "dispatcher" "destination" (binocularsConfig'Common'Destination defaultConfig) binocularsConfig'Common'Overwrite <- parseFDef cfg "dispatcher" "overwrite" (binocularsConfig'Common'Overwrite defaultConfig) binocularsConfig'Common'InputType <- case minputtypedeprecated of Nothing -> parseFDef cfg "input" "type" (binocularsConfig'Common'InputType defaultConfig) Just deprecated -> Right $ case deprecated of SixsFlyMedVEiger -> SixsFlyMedV SixsFlyMedVS70 -> SixsFlyMedV SixsFlyScanUhvGisaxsEiger -> SixsFlyUhvGisaxs SixsFlyScanUhvUfxc -> SixsFlyUhv binocularsConfig'Common'Nexusdir <- parseMb cfg "input" "nexusdir" binocularsConfig'Common'Tmpl <- parseMb cfg "input" "inputtmpl" binocularsConfig'Common'InputRange <- eitherF error (parse' cfg "input" "inputrange") (\mb -> do case mr <|> mb of Nothing -> error "please provide an input range either in the config file with the \"inputrange\" key under the \"input\" section, or on the command line" Just r -> pure r) binocularsConfig'Common'Detector <- parseFDef cfg "input" "detector" (case minputtypedeprecated of Nothing -> case binocularsConfig'Common'InputType of CristalK6C -> mkDetector HklBinocularsDetectorEnum'XpadFlatCorrected Custom -> binocularsConfig'Common'Detector defaultConfig DiffabsCirpad -> undefined -- mkDetector HklBinocularsDetectorEnum'Cirpad MarsFlyscan -> mkDetector HklBinocularsDetectorEnum'MerlinMedipix3rxQuad MarsSbs -> mkDetector HklBinocularsDetectorEnum'MerlinMedipix3rxQuad SixsFlyMedH -> binocularsConfig'Common'Detector defaultConfig SixsFlyMedHGisaxs -> binocularsConfig'Common'Detector defaultConfig SixsFlyMedV -> binocularsConfig'Common'Detector defaultConfig SixsFlyMedVGisaxs -> binocularsConfig'Common'Detector defaultConfig SixsFlyUhv -> binocularsConfig'Common'Detector defaultConfig SixsFlyUhvGisaxs -> binocularsConfig'Common'Detector defaultConfig SixsSbsMedH -> binocularsConfig'Common'Detector defaultConfig SixsSbsMedHGisaxs -> binocularsConfig'Common'Detector defaultConfig SixsSbsMedV -> binocularsConfig'Common'Detector defaultConfig SixsSbsMedVGisaxs -> binocularsConfig'Common'Detector defaultConfig SixsSbsUhv -> binocularsConfig'Common'Detector defaultConfig SixsSbsUhvGisaxs -> binocularsConfig'Common'Detector defaultConfig Just deprecated -> case deprecated of SixsFlyMedVEiger -> mkDetector HklBinocularsDetectorEnum'DectrisEiger1M SixsFlyMedVS70 -> mkDetector HklBinocularsDetectorEnum'ImxpadS70 SixsFlyScanUhvGisaxsEiger -> mkDetector HklBinocularsDetectorEnum'DectrisEiger1M SixsFlyScanUhvUfxc -> mkDetector HklBinocularsDetectorEnum'Ufxc ) binocularsConfig'Common'Image <- parseMb cfg "input" "images" binocularsConfig'Common'Centralpixel <- eitherF error (parse' cfg "input" "centralpixel") (\mc -> do case mc of Nothing -> pure (binocularsConfig'Common'Centralpixel defaultConfig) Just c -> if c `inDetector` binocularsConfig'Common'Detector then pure c else error $ "The central pixel " <> show c <> " is not compatible with the detector") binocularsConfig'Common'Sdd <- parseFDef cfg "input" "sdd" (binocularsConfig'Common'Sdd defaultConfig) binocularsConfig'Common'Detrot <- parseFDef cfg "input" "detrot" (binocularsConfig'Common'Detrot defaultConfig) binocularsConfig'Common'AttenuationCoefficient <- parseMb cfg "input" "attenuation_coefficient" binocularsConfig'Common'AttenuationMax <- parseMb cfg "input" "attenuation_max" binocularsConfig'Common'AttenuationShift <- parseMb cfg "input" "attenuation_shift" binocularsConfig'Common'Maskmatrix <- parseMb cfg "input" "maskmatrix" binocularsConfig'Common'Wavelength <- parseMb cfg "input" "wavelength" binocularsConfig'Common'ImageSumMax <- parseMb cfg "input" "image_sum_max" binocularsConfig'Common'SkipFirstPoints <- parseMb cfg "input" "skip_first_points" binocularsConfig'Common'SkipLastPoints <- parseMb cfg "input" "skip_last_points" binocularsConfig'Common'PolarizationCorrection <- parseFDef cfg "input" "polarization_correction" (binocularsConfig'Common'PolarizationCorrection defaultConfig) binocularsConfig'Common'Geometry <- eitherF error (parseIniFile cfg iniParser) (\mg -> pure $ case mg of Nothing -> binocularsConfig'Common'Geometry defaultConfig Just g -> Just g ) pure BinocularsConfig'Common{..} hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Config/Sample.hs0000664000175000017500000004723615133711150024727 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Config.Sample ( Args(..) , Config(..) , DSSample(..) , default'DataSource'Sample , guess'DataSource'Sample , overload'DataSource'Sample ) where import Data.Aeson (FromJSON, ToJSON) import Data.HashMap.Lazy (fromList) import Data.Ini (Ini (..)) import GHC.Generics (Generic) import Hkl.Binoculars.Config import Hkl.Binoculars.Projections.Config.Common import Hkl.DataSource import Hkl.H5 import Hkl.Lattice import Hkl.Parameter import Hkl.Sample import Hkl.Types ---------------- -- DataSource -- ---------------- data DSSample (k :: DSKind) = DataSource'Sample (DSWrap_ DSDouble k) -- a (DSWrap_ DSDouble k) -- b (DSWrap_ DSDouble k) -- c (DSWrap_ DSDegree k) -- alpha (DSWrap_ DSDegree k) -- beta (DSWrap_ DSDegree k) -- gamma (DSWrap_ DSDegree k) -- ux (DSWrap_ DSDegree k) -- uz (DSWrap_ DSDegree k) -- uy deriving (Generic) instance DataSource DSSample instance FromJSON (DSSample DSPath) deriving instance Show (DSSample DSPath) instance ToJSON (DSSample DSPath) instance Is0DStreamable (DSSample DSAcq) Sample where extract0DStreamValue (DataSource'Sample a b c alpha beta gamma ux uy uz) = Sample "test" <$> (Triclinic <$> extract0DStreamValue a <*> extract0DStreamValue b <*> extract0DStreamValue c <*> extract0DStreamValue alpha <*> extract0DStreamValue beta <*> extract0DStreamValue gamma) <*> (Parameter "ux" <$> extract0DStreamValue ux <*> pure (Range 0 0)) <*> (Parameter "uy" <$> extract0DStreamValue uy <*> pure (Range 0 0)) <*> (Parameter "uz" <$> extract0DStreamValue uz <*> pure (Range 0 0)) default'DataSource'Sample :: DSWrap_ DSSample DSPath default'DataSource'Sample = [ DataSource'Sample [DataSourcePath'Double'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/A")]] [DataSourcePath'Double'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/B")]] [DataSourcePath'Double'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/C")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Alpha")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Beta")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Gamma")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Ux")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Uy")]] [DataSourcePath'Degree'Hdf5 [DataSourcePath'Dataset (hdf5p $ grouppat 0 $ datasetp "SIXS/I14-C-CX2__EX__DIFF-UHV__#1/Uz")]] ] overload'DataSource'Sample :: Config Sample -> DSWrap_ DSSample DSPath -> DSWrap_ DSSample DSPath overload'DataSource'Sample (BinocularsConfig'Sample ma mb mc malpha mbeta mgamma mux muy muz) = map (\(DataSource'Sample pa pb pc palpha pbeta pgamma pux puy puz) -> DataSource'Sample (maybe pa (\x -> [DataSourcePath'Double'Const x]) ma) (maybe pb (\x -> [DataSourcePath'Double'Const x]) mb) (maybe pc (\x -> [DataSourcePath'Double'Const x]) mc) (maybe palpha (\x -> [DataSourcePath'Degree'Const x]) malpha) (maybe pbeta (\x -> [DataSourcePath'Degree'Const x]) mbeta) (maybe pgamma (\x -> [DataSourcePath'Degree'Const x]) mgamma) (maybe pux (\x -> [DataSourcePath'Degree'Const x]) mux) (maybe puy (\x -> [DataSourcePath'Degree'Const x]) muy) (maybe puz (\x -> [DataSourcePath'Degree'Const x]) muz) ) guess'DataSource'Sample :: Config Common -> Config Sample -> DSWrap_ DSSample DSPath guess'DataSource'Sample common sample = do let inputType = binocularsConfig'Common'InputType common let samplePath' beamline device = DataSource'Sample [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "A") ] , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "a") ] ] [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "B") ] , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "b") ] ] [ DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "C") ] , DataSourcePath'Double'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "c") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "alpha") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "beta") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "gamma") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "Ux") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "u_x") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "Uy") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "u_y") ] ] [ DataSourcePath'Degree'Hdf5 [ DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "Uz") , DataSourcePath'Dataset (hdf5p $ grouppat 0 $ groupp beamline $ groupp device $ datasetp "u_z") ] ] let cristalSamplePath = [samplePath' "NOBEAMLINE" "NOBEAMLINE"] let diffabsSamplePath = [samplePath' "DIFFABS" undefined] let marsSamplePath = [ samplePath' "MARS" "d03-1-cx2__ex__dif-cm_#1"] let medHSamplePath = [ samplePath' "SIXS" "i14-c-cx1-ex-cm-med.h"] let medVSamplePath = [ samplePath' "SIXS" "i14-c-cx1-ex-cm-med.v" , samplePath' "SIXS" "i14-c-cx1-ex-cm-med.v_no_etaa" ] let uhvSamplePath = [ samplePath' "SIXS" "I14-C-CX2__EX__DIFF-UHV__#1" , samplePath' "SIXS" "i14-c-cx2-ex-cm-uhv" ] let samplePath = case inputType of CristalK6C -> cristalSamplePath Custom -> undefined DiffabsCirpad -> diffabsSamplePath MarsFlyscan -> marsSamplePath MarsSbs -> marsSamplePath SixsFlyMedH -> medHSamplePath SixsFlyMedHGisaxs -> medHSamplePath SixsFlyMedV -> medVSamplePath SixsFlyMedVGisaxs -> medVSamplePath SixsFlyUhv -> uhvSamplePath SixsFlyUhvGisaxs -> uhvSamplePath SixsSbsMedH -> medHSamplePath SixsSbsMedHGisaxs -> medHSamplePath SixsSbsMedV -> medVSamplePath SixsSbsMedVGisaxs -> medVSamplePath SixsSbsUhv -> uhvSamplePath SixsSbsUhvGisaxs -> uhvSamplePath overload'DataSource'Sample sample samplePath ------------ -- Config -- ------------ instance HasIniConfig Sample where data Config Sample = BinocularsConfig'Sample { binocularsConfig'Sample'A :: Maybe Double , binocularsConfig'Sample'B :: Maybe Double , binocularsConfig'Sample'C :: Maybe Double , binocularsConfig'Sample'Alpha :: Maybe Degree , binocularsConfig'Sample'Beta :: Maybe Degree , binocularsConfig'Sample'Gamma :: Maybe Degree , binocularsConfig'Sample'Ux :: Maybe Degree , binocularsConfig'Sample'Uy :: Maybe Degree , binocularsConfig'Sample'Uz :: Maybe Degree } deriving (Eq, Show, Generic) data Args Sample = Args'Sample defaultConfig = BinocularsConfig'Sample { binocularsConfig'Sample'A = Nothing , binocularsConfig'Sample'B = Nothing , binocularsConfig'Sample'C = Nothing , binocularsConfig'Sample'Alpha = Nothing , binocularsConfig'Sample'Beta = Nothing , binocularsConfig'Sample'Gamma = Nothing , binocularsConfig'Sample'Ux = Nothing , binocularsConfig'Sample'Uy = Nothing , binocularsConfig'Sample'Uz = Nothing } toIni c = Ini { iniSections = fromList [ ("input", elemFMbDef "a" binocularsConfig'Sample'A c defaultConfig [ "`a` parameter of the sample lattice (same unit than the wavelength)." , "" , "This parameter with the 5 others, `b`, `c`, `alpha`, `beta` and `gamma`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `a` from the data file." , " `a` - override `a` with this value." ] <> elemFMbDef "b" binocularsConfig'Sample'B c defaultConfig [ "`b` parameter of the sample lattice (same unit than the wavelength)." , "" , "This parameter with the 5 others, `a`, `c`, `alpha`, `beta` and `gamma`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `b` from the data file." , " `b` - override `b` with this value." ] <> elemFMbDef "c" binocularsConfig'Sample'C c defaultConfig [ "`c` parameter of the sample lattice (same unit than the wavelength)." , "" , "This parameter with the 5 others, `a`, `b`, `alpha`, `beta` and `gamma`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `c` from the data file." , " `c` - override `c` with this value." ] <> elemFMbDef "alpha" binocularsConfig'Sample'Alpha c defaultConfig [ "`alpha` parameter of the sample lattice (Degree)." , "" , "This parameter with the 5 others, `a`, `b`, `c`, `beta` and `gamma`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `alpha` from the data file." , " `alpha` - override `alpha` with this value." ] <> elemFMbDef "beta" binocularsConfig'Sample'Beta c defaultConfig [ "`beta` parameter of the sample lattice (Degree)." , "" , "This parameter with the 5 others, `a`, `b`, `c`, `alpha`, and `gamma`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `beta` from the data file." , " `beta` - override `beta` with this value." ] <> elemFMbDef "gamma" binocularsConfig'Sample'Gamma c defaultConfig [ "`gamma` parameter of the sample lattice (Degree)." , "" , "This parameter with the 5 others, `a`, `b`, `c`, `alpha` and `beta`" , "can be set in order to overwrite the values from the data file." , "" , " `` - read `gamma` from the data file." , " `gamma` - override `gamma` with this value." ] <> elemFMbDef "ux" binocularsConfig'Sample'Ux c defaultConfig [ "`ux` rotation of the sample around the x axis" , "" , "`ux`, `uy`, `uz` are the eulerian angles, which define" , "the orientation of the sample lattice, relatively to" , "the sample holder." , "" , "the rotation is computed like this:" , "" , "Ux * Uy * Uz" , "" , " `` - read `ux` from the data file." , " `ux` - override `ux` with this value." ] <> elemFMbDef "uy" binocularsConfig'Sample'Uy c defaultConfig [ "`uy` rotation of the sample around the y axis" , "" , "`ux`, `uy`, `uz` are the eulerian angles, which define" , "the orientation of the sample lattice, relatively to" , "the sample holder." , "" , "the rotation is computed like this:" , "" , "Ux * Uy * Uz" , "" , " `` - read `uy` from the data file." , " `uy` - override `uy` with this value." ] <> elemFMbDef "uz" binocularsConfig'Sample'Uz c defaultConfig [ "`uz` rotation of the sample around the z axis" , "" , "`ux`, `uy`, `uz` are the eulerian angles, which define" , "the orientation of the sample lattice, relatively to" , "the sample holder." , "" , "the rotation is computed like this:" , "" , "Ux * Uy * Uz" , "" , " `` - read `uz` from the data file." , " `uz` - override `uz` with this value." ] ) ] , iniGlobals = [] } getConfig (ConfigContent cfg) _ _ = do binocularsConfig'Sample'A <- parseMb cfg "input" "a" binocularsConfig'Sample'B <- parseMb cfg "input" "b" binocularsConfig'Sample'C <- parseMb cfg "input" "c" binocularsConfig'Sample'Alpha <- parseMb cfg "input" "alpha" binocularsConfig'Sample'Beta <- parseMb cfg "input" "beta" binocularsConfig'Sample'Gamma <- parseMb cfg "input" "gamma" binocularsConfig'Sample'Ux <- parseMb cfg "input" "ux" binocularsConfig'Sample'Uy <- parseMb cfg "input" "uy" binocularsConfig'Sample'Uz <- parseMb cfg "input" "uz" pure BinocularsConfig'Sample{..} hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars/Projections/Test.hs0000664000175000017500000003667515133711150023225 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars.Projections.Test ( newTest , processTest , updateTest ) where import Control.Concurrent.Async (mapConcurrently) import Control.Monad (forM_, forever) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Logger (MonadLogger, logDebugN, logInfoN) import Control.Monad.Reader (MonadReader, ask) import Data.Aeson (FromJSON, ToJSON) import Data.HashMap.Strict (fromList) import Data.Ini (Ini (..)) import Data.Maybe (fromMaybe) import Data.Text (pack, unpack) import Data.Text.IO (putStr) import Data.Vector.Storable.Mutable (unsafeWith) import Foreign.C.Types (CDouble (..)) import Foreign.ForeignPtr (withForeignPtr) import GHC.Generics (Generic) import Path (Abs, Dir, Path) import Pipes (await, each, runEffect, yield, (>->)) import Pipes.Prelude (filter, map, tee, toListM) import Pipes.Safe (runSafeP, runSafeT) import Text.Printf (printf) import Hkl.Binoculars.Common import Hkl.Binoculars.Config import Hkl.Binoculars.Pipes import Hkl.Binoculars.Projections import Hkl.Binoculars.Projections.Config import Hkl.Binoculars.Projections.QCustom import Hkl.C.Binoculars import Hkl.DataSource import Hkl.Detector import Hkl.Geometry import Hkl.Image import Hkl.Orphan () import Hkl.Repa import Hkl.Sample import Hkl.Types import Hkl.Utils ---------------- -- DataPath's -- ---------------- data DataFrameTest = DataFrameTest DataFrameQCustom Sample data DSDataFrameTest (k :: DSKind) = DSDataFrameTest { dataFrameTest'DataFrameQCustom :: DSWrap_ DSDataFrameQCustom k , dataFrameTest'Sample :: DSWrap_ DSSample k } deriving (Generic) deriving instance Show (DSDataFrameTest DSPath) instance FromJSON (DSDataFrameTest DSPath) instance ToJSON (DSDataFrameTest DSPath) instance DataSource DSDataFrameTest instance Is1DStreamable (DSDataFrameTest DSAcq) DataFrameTest where extract1DStreamValue (DSDataFrameTest q s) i = DataFrameTest <$> extract1DStreamValue q i <*> extract0DStreamValue s defaultDataSource'DataFrameTest :: DSWrap_ DSDataFrameTest DSPath defaultDataSource'DataFrameTest = [ DSDataFrameTest default'DataSource'DataFrameQCustom default'DataSource'Sample ] instance HasFieldComment [DSDataFrameTest DSPath] where fieldComment _ = [ "`datapath` internal value used to find the data in the data file." , "" , "This value is for expert only." , "" , "default value: " ] instance HasFieldValue [DSDataFrameTest DSPath] where fieldvalue = autoJSON ------------ -- Config -- ------------ overload'DataSourcePath'DataFrameTest :: Config Common -> Config Sample -> DSWrap_ DSDataFrameTest DSPath -> DSWrap_ DSDataFrameTest DSPath overload'DataSourcePath'DataFrameTest common sample = Prelude.map ( \(DSDataFrameTest qCustomPath samplePath) -> let newQCustomPath = overload'DataSource'DataFrameQCustom common Nothing qCustomPath newSamplePath = overload'DataSource'Sample sample samplePath in DSDataFrameTest newQCustomPath newSamplePath ) instance HasIniConfig 'TestProjection where data Config 'TestProjection = BinocularsConfig'Test { binocularsConfig'Test'Common :: Config Common , binocularsConfig'Test'Sample :: Config Sample , binocularsConfig'Test'ProjectionType :: ProjectionType , binocularsConfig'Test'ProjectionResolution :: Resolutions DIM3 , binocularsConfig'Test'ProjectionLimits :: Maybe (RLimits DIM3) , binocularsConfig'Test'DataPath :: DSWrap_ DSDataFrameTest DSPath } deriving (Generic) newtype Args 'TestProjection = Args'TestProjection (Maybe ConfigRange) defaultConfig = BinocularsConfig'Test { binocularsConfig'Test'Common = defaultConfig , binocularsConfig'Test'Sample = defaultConfig , binocularsConfig'Test'ProjectionType = TestProjection , binocularsConfig'Test'ProjectionResolution = Resolutions3 0.01 0.01 0.01 , binocularsConfig'Test'ProjectionLimits = Nothing , binocularsConfig'Test'DataPath = defaultDataSource'DataFrameTest } getConfig content@(ConfigContent cfg) (Args'TestProjection mr) capabilities = do binocularsConfig'Test'Common <- getConfig content (Args'Common mr) capabilities binocularsConfig'Test'Sample <- getConfig content Args'Sample capabilities binocularsConfig'Test'ProjectionType <- parseFDef cfg "projection" "type" (binocularsConfig'Test'ProjectionType defaultConfig) binocularsConfig'Test'ProjectionResolution <- parseFDef cfg "projection" "resolution" (binocularsConfig'Test'ProjectionResolution defaultConfig) binocularsConfig'Test'ProjectionLimits <- parseMb cfg "projection" "limits" let binocularsConfig'Test'DataPath = eitherF (const $ guess'DataSourcePath'DataFrameTest binocularsConfig'Test'Common binocularsConfig'Test'Sample content) (parse' cfg "input" "datapath") (\case Nothing -> guess'DataSourcePath'DataFrameTest binocularsConfig'Test'Common binocularsConfig'Test'Sample content Just d -> overload'DataSourcePath'DataFrameTest binocularsConfig'Test'Common binocularsConfig'Test'Sample d) pure BinocularsConfig'Test{..} toIni c = toIni (binocularsConfig'Test'Common c) `mergeIni` toIni (binocularsConfig'Test'Sample c) `mergeIni` Ini { iniSections = fromList [ ("input", elemFDef' "datapath" binocularsConfig'Test'DataPath c defaultConfig) , ("projection", elemFDef' "type" binocularsConfig'Test'ProjectionType c defaultConfig <> elemFDef' "resolution" binocularsConfig'Test'ProjectionResolution c defaultConfig <> elemFMbDef' "limits" binocularsConfig'Test'ProjectionLimits c defaultConfig ) ] , iniGlobals = [] } ---------------- -- Projection -- ---------------- {-# INLINE spaceTest #-} spaceTest :: Detector b DIM2 -> Array F DIM3 Double -> Resolutions DIM3 -> Maybe (RLimits DIM3) -> Bool -> Space DIM3 -> DataFrameTest -> IO (DataFrameSpace DIM3) spaceTest det pixels rs mlimits doPolarizationCorrection space@(Space fSpace) (DataFrameTest (DataFrameQCustom att g img mmask _ _ _) samplePath) = do withNPixels det $ \nPixels -> withGeometry g $ \geometry -> withSample samplePath $ \sample -> withForeignPtr (toForeignPtr pixels) $ \pix -> withResolutions rs $ \nr r -> withMaybeMask mmask $ \ mask'' -> withPixelsDims pixels $ \ndim dims -> withMaybeLimits mlimits rs $ \nlimits limits -> withForeignPtr fSpace $ \pSpace -> do case img of (ImageDouble arr) -> unsafeWith arr $ \i -> do {-# SCC "test_binoculars_space_test_double" #-} c'hkl_binoculars_space_test_double pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageInt32 arr) -> unsafeWith arr $ \i -> do {-# SCC "test_binoculars_space_test_int32_t" #-} c'hkl_binoculars_space_test_int32_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord16 arr) -> unsafeWith arr $ \i -> do {-# SCC "test_binoculars_space_test_uint16_t" #-} c'hkl_binoculars_space_test_uint16_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) (ImageWord32 arr) -> unsafeWith arr $ \i -> do {-# SCC "test_binoculars_space_test_uint32_t" #-} c'hkl_binoculars_space_test_uint32_t pSpace geometry sample i nPixels (CDouble . unAttenuation $ att) pix (toEnum ndim) dims r (toEnum nr) mask'' limits (toEnum nlimits) (toEnum . fromEnum $ doPolarizationCorrection) return (DataFrameSpace img space att) ---------- -- Pipe -- ---------- processTestP :: (MonadIO m, MonadLogger m, MonadReader (Config 'TestProjection) m, MonadThrow m) => m () processTestP = do conf :: Config 'TestProjection <- ask -- directly from the common config let common = binocularsConfig'Test'Common conf let overwrite = binocularsConfig'Common'Overwrite common let det = binocularsConfig'Common'Detector common let (NCores cap) = binocularsConfig'Common'NCores common let destination = binocularsConfig'Common'Destination common let centralPixel' = binocularsConfig'Common'Centralpixel common let (Meter sampleDetectorDistance) = binocularsConfig'Common'Sdd common let (Degree detrot) = binocularsConfig'Common'Detrot common let mImageSumMax = binocularsConfig'Common'ImageSumMax common let inputRange = binocularsConfig'Common'InputRange common let nexusDir = binocularsConfig'Common'Nexusdir common let tmpl = binocularsConfig'Common'Tmpl common let mSkipFirstPoints = binocularsConfig'Common'SkipFirstPoints common let mSkipLastPoints = binocularsConfig'Common'SkipLastPoints common let doPolarizationCorrection = binocularsConfig'Common'PolarizationCorrection common -- directly from the specific config let mlimits = binocularsConfig'Test'ProjectionLimits conf let res = binocularsConfig'Test'ProjectionResolution conf let datapaths = binocularsConfig'Test'DataPath conf let projectionType = binocularsConfig'Test'ProjectionType conf -- built from the config output' <- liftIO $ destination' projectionType Nothing inputRange mlimits destination overwrite filenames <- InputFn'List <$> files nexusDir inputRange tmpl pixels <- liftIO $ getPixelsCoordinates det centralPixel' sampleDetectorDistance detrot NoNormalisation let fns = concatMap (replicate 1) (toList filenames) chunks <- liftIO $ runSafeT $ toListM $ each fns >-> chunkP mSkipFirstPoints mSkipLastPoints datapaths let ntot = sum (Prelude.map clength chunks) let jobs = chunk (quot ntot cap) chunks -- log parameters logDebugNSH filenames logDebugNSH datapaths logDebugNSH chunks logDebugN "start gessing final cube size" -- guess the final cube dimensions (To optimize, do not create the cube, just extract the shape) guessed <- liftIO $ withCubeAccumulator EmptyCube $ \c -> runSafeT $ runEffect $ each chunks >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f, quot (f + t) 4, quot (f + t) 4 * 2, quot (f + t) 4 * 3, t])) >-> framesP datapaths >-> project det 3 (spaceTest det pixels res mlimits doPolarizationCorrection) >-> accumulateP c logDebugN "stop gessing final cube size" logInfoN (pack $ printf "let's do a Test projection of %d %s image(s) on %d core(s)" ntot (show det) cap) liftIO $ withProgressBar ntot $ \pb -> do r' <- mapConcurrently (\job -> withCubeAccumulator guessed $ \c -> runEffect $ runSafeP $ each job >-> Pipes.Prelude.map (\(Chunk fn f t) -> (fn, [f..t])) -- >-> tee Pipes.Prelude.print >-> framesP datapaths >-> Pipes.Prelude.filter (\(DataFrameTest (DataFrameQCustom _ _ img _ _ _ _) _) -> filterSumImage mImageSumMax img) >-> project det 3 (spaceTest det pixels res mlimits doPolarizationCorrection) >-> tee (accumulateP c) >-> progress pb ) jobs saveCube output' (unpack . serializeConfig $ conf) r' -- FramesTestP instance ChunkP [DSDataFrameTest DSPath] where chunkP mSkipFirst mSkipLast ps = skipMalformed $ forever $ do sfp <- await withScanFileP sfp $ \f' -> withDataSourcesP f' ps $ \_p p' -> do (DataSourceShape'Range (Z :. f) (Z :. t)) <- ds'Shape p' yield $ cclip (fromMaybe 0 mSkipFirst) (fromMaybe 0 mSkipLast) (Chunk sfp f (t - 1)) instance FramesP [DSDataFrameTest DSPath] DataFrameTest where framesP ps = skipMalformed $ forever $ do (fp, js) <- await withScanFileP fp $ \f -> withDataSourcesP f ps $ \_p p' -> forM_ js (tryYield . extract1DStreamValue p') ------------ -- Inputs -- ------------ guess'DataSourcePath'DataFrameTest :: Config Common -> Config Sample -> ConfigContent -> DSWrap_ DSDataFrameTest DSPath guess'DataSourcePath'DataFrameTest common sample content = [ DSDataFrameTest (guess'DataSource'DataFrameQCustom common Nothing content) (guess'DataSource'Sample common sample) ] --------- -- Cmd -- --------- processTest :: (MonadLogger m, MonadThrow m, MonadIO m) => Maybe FilePath -> Maybe ConfigRange -> m () processTest mf mr = cmd processTestP mf (Args'TestProjection mr) newTest :: (MonadIO m, MonadLogger m, MonadThrow m) => Path Abs Dir -> m () newTest cwd = do let conf = defaultConfig { binocularsConfig'Test'Common = defaultConfig { binocularsConfig'Common'Nexusdir = Just cwd } } liftIO $ Data.Text.IO.putStr $ serializeConfig conf updateTest :: (MonadIO m, MonadLogger m, MonadThrow m) => Maybe FilePath -> Maybe ConfigRange -> m () updateTest mf mr = cmd (pure ()) mf (Args'TestProjection mr) hkl-5.1.7/binoculars-ng/src/Hkl/DataSource.hs0000664000175000017500000006742415143645056017750 0ustar00piccapicca{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {- Copyright : Copyright (C) 2014-2026 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.DataSource ( DataSource(..) , DataSourceShape(..) , DSKind(..) , DSWrap_ , DSAttenuation(..) , DSDataset(..) , DSDegree(..) , DSDouble(..) , DSDoubles(..) , DSFloat(..) , DSGeometry(..) , DSImage(..) , DSMask(..) , DSTimestamp(..) , DSTimescan0(..) , DSScannumber(..) , HklBinocularsException(..) , Is0DStreamable(..) , Is1DStreamable(..) , combine'Shape , length'DataSourceShape , withDataSourcesP ) where import Bindings.HDF5.Core (Location) import Bindings.HDF5.Dataset (getDatasetType) import Bindings.HDF5.Datatype (getTypeSize, nativeTypeOf, typeIDsEqual) import Control.Exception (throwIO) import Control.Monad.Extra (ifM) import Control.Monad.IO.Class (MonadIO (liftIO)) import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Int (Int32) import Data.Kind (Type) import Data.Text (Text, unpack) import Data.Typeable (Typeable, typeOf) import Data.Vector.Storable (Vector, fromList) import Data.Vector.Storable.Mutable (IOVector, replicate, unsafeNew) import Data.Word (Word16, Word32) import Foreign.C.Types (CDouble (..)) #if !MIN_VERSION_base(4, 18, 0) import GHC.Base (liftA2) #endif import GHC.Float (float2Double) import GHC.Generics (Generic (..), K1 (..), M1 (..), Rep, U1 (..), (:*:) (..), (:+:) (..)) import Numeric.Units.Dimensional.Prelude (degree, (*~), (/~)) import Pipes.Safe (MonadSafe, catch, throwM) import Text.Printf (printf) import Prelude hiding (filter, replicate) import Hkl.Binoculars.Config import Hkl.Detector import Hkl.Exception import Hkl.Geometry import Hkl.H5 import Hkl.Image import Hkl.Pipes import Hkl.Repa import Hkl.Types -------------------- -- Is0DStreamable -- -------------------- class Is0DStreamable a e where extract0DStreamValue :: a -> IO e -- Is0DStreamable (instances) instance Is0DStreamable Degree Double where extract0DStreamValue (Degree d) = pure (d /~ degree) instance Is0DStreamable Degree CDouble where extract0DStreamValue (Degree d) = pure $ CDouble (d /~ degree) instance Is0DStreamable Double CDouble where extract0DStreamValue d = pure $ CDouble d instance Is0DStreamable (DSDataset sh Double DSAcq) Degree where extract0DStreamValue (DataSourceAcq'Dataset d) = Degree <$> do v <- getPosition d 0 return $ v *~ degree instance Is0DStreamable (DSDataset sh Double DSAcq) Double where extract0DStreamValue (DataSourceAcq'Dataset d) = getPosition d 0 instance Is0DStreamable (DSDataset sh Double DSAcq) CDouble where extract0DStreamValue (DataSourceAcq'Dataset d) = getPosition d 0 instance Is0DStreamable (DSDegree DSAcq) Degree where extract0DStreamValue (DataSourceAcq'Degree'Hdf5 d) = extract0DStreamValue d extract0DStreamValue (DataSourceAcq'Degree'Const d) = pure d instance Is0DStreamable (DSDegree DSAcq) Double where extract0DStreamValue (DataSourceAcq'Degree'Hdf5 d) = extract0DStreamValue d extract0DStreamValue (DataSourceAcq'Degree'Const d) = extract0DStreamValue d instance Is0DStreamable (DSDegree DSAcq) CDouble where extract0DStreamValue (DataSourceAcq'Degree'Hdf5 d) = extract0DStreamValue d extract0DStreamValue (DataSourceAcq'Degree'Const d) = extract0DStreamValue d instance Is0DStreamable (DSDouble DSAcq) Double where extract0DStreamValue (DataSourceAcq'Double'Hdf5 d) = extract0DStreamValue d extract0DStreamValue (DataSourceAcq'Double'Const a) = pure a instance Is0DStreamable (DSScannumber DSAcq) Scannumber where extract0DStreamValue (DataSourceAcq'Scannumber'Const sn) = pure sn instance Is0DStreamable (DSTimescan0 DSAcq) Timescan0 where extract0DStreamValue (DataSourceAcq'Timescan0'Hdf5 ds) = Timescan0 <$> extract0DStreamValue ds extract0DStreamValue DataSourceAcq'Timescan0'NoTimescan0 = pure $ Timescan0 0 -------------------- -- Is1DStreamable -- -------------------- class Is1DStreamable a e where extract1DStreamValue :: a -> Int -> IO e -- Is1DStreamable (instances) badAttenuation :: Float badAttenuation = -100 instance Is1DStreamable (DSDataset DIM1 Double DSAcq) CDouble where extract1DStreamValue (DataSourceAcq'Dataset ds) = getPosition ds instance Is1DStreamable (DSDataset DIM1 Double DSAcq) Double where extract1DStreamValue (DataSourceAcq'Dataset ds) = getPosition ds instance Is1DStreamable (DSDataset DIM1 Float DSAcq) Float where extract1DStreamValue (DataSourceAcq'Dataset ds) = getPosition ds instance Is1DStreamable (DSAttenuation DSAcq) Attenuation where extract1DStreamValue (DataSourceAcq'Attenuation ds offset coef mmax) i = Attenuation <$> do v <- extract1DStreamValue ds (i + offset) if v == badAttenuation then throwIO (WrongAttenuation "attenuation is wrong" (i + offset) (float2Double v)) else case mmax of Just m -> if v > m then throwIO (WrongAttenuation "max inserted filters exceeded" (i + offset) (float2Double v)) else return (coef ** float2Double v) Nothing -> return (coef ** float2Double v) extract1DStreamValue (DataSourceAcq'ApplyedAttenuationFactor ds) i = Attenuation . float2Double <$> extract1DStreamValue ds i extract1DStreamValue DataSourceAcq'NoAttenuation _ = pure $ Attenuation 1 instance Is1DStreamable (DSDouble DSAcq) CDouble where extract1DStreamValue (DataSourceAcq'Double'Hdf5 d) i = extract1DStreamValue d i extract1DStreamValue (DataSourceAcq'Double'Const d) _ = extract0DStreamValue d instance Is1DStreamable (DSDoubles DSAcq) (Data.Vector.Storable.Vector CDouble) where extract1DStreamValue (DataSourceAcq'List ds) i = fromList <$> Prelude.mapM (`extract1DStreamValue` i) ds instance Is1DStreamable (DSFloat DSAcq) Float where extract1DStreamValue (DataSourceAcq'Float'Hdf5 ds) = extract1DStreamValue ds instance Is1DStreamable (DSGeometry DSAcq) Geometry where extract1DStreamValue (DataSourceAcq'Geometry g w' as') i = do w <- extract0DStreamValue w' as <- extract1DStreamValue as' i let state = GeometryState w as pure $ case g of (Geometry'Custom axes _) -> Geometry'Custom axes (Just state) (Geometry'Factory factory _) -> Geometry'Factory factory (Just state) instance Is1DStreamable (DSImage DSAcq) Image where extract1DStreamValue (DataSourceAcq'Image'Dummy buf) _ = pure $ ImageDouble buf extract1DStreamValue (DataSourceAcq'Image'Hdf5'Double det ds buf) i = ImageDouble <$> getArrayInBuffer buf det ds i extract1DStreamValue (DataSourceAcq'Image'Hdf5'Int32 det ds buf) i = ImageInt32 <$> getArrayInBuffer buf det ds i extract1DStreamValue (DataSourceAcq'Image'Hdf5'Word16 det ds buf) i = ImageWord16 <$> getArrayInBuffer buf det ds i extract1DStreamValue (DataSourceAcq'Image'Hdf5'Word32 det ds buf) i = ImageWord32 <$> getArrayInBuffer buf det ds i extract1DStreamValue (DataSourceAcq'Image'Img'Int32 det buf tmpl sn fn) i = ImageInt32 <$> readImgInBuffer buf det (fn tmpl sn i) instance Is1DStreamable (DSMask DSAcq) (Maybe Mask) where extract1DStreamValue DataSourceAcq'Mask'NoMask _ = pure Nothing extract1DStreamValue (DataSourceAcq'Mask m) _ = pure $ Just m instance Is1DStreamable (DSTimestamp DSAcq) Timestamp where extract1DStreamValue (DataSourceAcq'Timestamp'Hdf5 ds) i = Timestamp <$> extract1DStreamValue ds i extract1DStreamValue DataSourceAcq'Timestamp'NoTimestamp _ = pure $ Timestamp 0 ---------------- -- DataSource -- ---------------- data DSKind = DSPath | DSAcq type family DSWrap (k :: DSKind) (t :: Type) :: Type where DSWrap DSAcq t = t DSWrap DSPath t = [t] type DSWrap_ f k = DSWrap k (f k) data DataSourceShape = DataSourceShape'Range !DIM1 !DIM1 deriving Eq combine'Shape :: DataSourceShape -> DataSourceShape -> DataSourceShape combine'Shape (DataSourceShape'Range _ (Z :. 1)) s = s combine'Shape s (DataSourceShape'Range _ (Z :. 1)) = s combine'Shape (DataSourceShape'Range (Z :. f1) (Z :. t1)) (DataSourceShape'Range (Z :. f2) (Z :. t2)) = DataSourceShape'Range (ix1 (max f1 f2)) (ix1 (min t1 t2)) shape1 :: DataSourceShape shape1 = DataSourceShape'Range (Z :. 0) (Z :. 1) ds'Shape'Dataset :: Dataset -> IO DataSourceShape ds'Shape'Dataset ds = do (t:_, mt:_) <- datasetShape ds case mt of Just t' -> pure $ DataSourceShape'Range (ix1 0) (ix1 (fromIntegral t')) Nothing -> pure $ DataSourceShape'Range (ix1 0) (ix1 (fromIntegral t)) length'DataSourceShape :: DataSourceShape -> Int length'DataSourceShape (DataSourceShape'Range (Z :. f) (Z :. t)) = t - f -- | Generic 'ds'Shape' generic'ds'Shape :: ( MonadSafe m , Generic (d DSAcq) , GDataSourceAcq (Rep (d DSAcq)) ) => d DSAcq -> m DataSourceShape generic'ds'Shape = g'ds'Shape . from class GDSAK1 a where g'ds'Shape'K1 :: MonadSafe m => a -> m DataSourceShape g'ds'Shape'K1 _ = pure shape1 instance DataSource a => GDSAK1 (a DSAcq) where g'ds'Shape'K1 = ds'Shape instance GDSAK1 Dataset where g'ds'Shape'K1 = liftIO . ds'Shape'Dataset instance GDSAK1 Degree instance GDSAK1 (Detector a sh) instance GDSAK1 Double instance GDSAK1 Geometry instance GDSAK1 Int instance GDSAK1 (IOVector a) instance GDSAK1 Mask instance GDSAK1 Scannumber instance GDSAK1 Text instance GDSAK1 (Text -> Scannumber -> Int -> FilePath) class GDataSourceAcq dataAcq where g'ds'Shape :: MonadSafe m => dataAcq x -> m DataSourceShape instance GDataSourceAcq f => GDataSourceAcq (M1 i c f) where g'ds'Shape (M1 f) = g'ds'Shape f instance (GDataSourceAcq f, GDataSourceAcq f') => GDataSourceAcq (f :*: f') where g'ds'Shape (f :*: f') = liftA2 combine'Shape (g'ds'Shape f) (g'ds'Shape f') instance (GDataSourceAcq f, GDataSourceAcq f') => GDataSourceAcq (f :+: f') where g'ds'Shape (L1 f) = g'ds'Shape f g'ds'Shape (R1 f') = g'ds'Shape f' instance GDSAK1 a => GDataSourceAcq (K1 i a) where g'ds'Shape (K1 a) = g'ds'Shape'K1 a instance GDataSourceAcq U1 where g'ds'Shape _ = pure shape1 -- | Generic 'withDataSourceP' generic'withDataSourceP :: ( Generic (d DSPath) , Generic (d DSAcq) , GDataSourcePath (Rep (d DSPath)) (Rep (d DSAcq)) , Location l , MonadSafe m ) => ScanFile l -> d DSPath -> (d DSPath -> d DSAcq -> m r) -> m r generic'withDataSourceP file src gg = g'withDataSourceP file (from src) (\path acq -> gg (to path) (to acq)) class GDataSourcePath dataPath dataAcq where g'withDataSourceP :: (Location l, MonadSafe m) => ScanFile l -> dataPath x -> (dataPath x -> dataAcq x -> m r) -> m r instance GDataSourcePath f g => GDataSourcePath (M1 i c f) (M1 i c' g) where g'withDataSourceP f (M1 d) gg = g'withDataSourceP f d (\path acq -> gg (M1 path) (M1 acq)) instance (GDataSourcePath f g, GDataSourcePath f' g') => GDataSourcePath (f :*: f') (g :*: g') where g'withDataSourceP file (f :*: f') gg = g'withDataSourceP file f $ \path g -> g'withDataSourceP file f' $ \path' g' -> gg (path :*: path') (g :*: g') instance (Show (a DSPath), Typeable (a DSPath), DataSource a) => GDataSourcePath (K1 i [a DSPath]) (K1 i (a DSAcq)) where g'withDataSourceP file (K1 acqs) gg = withDataSourcesP file acqs $ \acq dat -> gg (K1 [acq]) (K1 dat) -- DataSource class DataSource d where ds'Shape :: MonadSafe m => d DSAcq -> m DataSourceShape withDataSourceP :: (Location l, MonadSafe m) => ScanFile l -> d DSPath -> (d DSPath -> d DSAcq -> m r) -> m r default ds'Shape :: ( MonadSafe m , Generic (d DSAcq) , GDataSourceAcq (Rep (d DSAcq))) => d DSAcq -> m DataSourceShape ds'Shape = generic'ds'Shape default withDataSourceP :: ( Generic (d DSPath) , Generic (d DSAcq) , GDataSourcePath (Rep (d DSPath)) (Rep (d DSAcq)) , Location l , MonadSafe m ) => ScanFile l -> d DSPath -> (d DSPath -> d DSAcq -> m r) -> m r withDataSourceP = generic'withDataSourceP withDataSourcesP :: (DataSource d, Location l, MonadSafe m, Show (d DSPath), Typeable (d DSPath)) => ScanFile l -> [d DSPath] -> (d DSPath -> d DSAcq -> m r) -> m r withDataSourcesP f paths g = go paths [] where msg = (show . typeOf $ paths) go [] acc = throwM $ HklDataSourceException'NoRemainingDataPath (msg <> show paths : acc) go (s : ss) acc = withDataSourceP f s g `catch` \(exl :: HklDataSourceException) -> case exl of HklDataSourceException'NoRemainingDataPath prev -> do if null ss then throwM $ HklDataSourceException'NoRemainingDataPath (msg : prev) else go ss prev _ -> go ss acc -- DataSource (instances) -- Attenuation data family DSAttenuation (k :: DSKind) data instance DSAttenuation DSPath = DataSourcePath'Attenuation { attenuationPath :: DSWrap_ DSFloat DSPath , attenuationPathOffset :: Int , attenuationPathCoefficient :: Double , attenuationPathMax :: Maybe Float } | DataSourcePath'ApplyedAttenuationFactor { attenuationPath :: DSWrap_ DSFloat DSPath } | DataSourcePath'NoAttenuation deriving (Eq, Generic, Show) deriving anyclass (FromJSON, ToJSON) data instance DSAttenuation DSAcq = DataSourceAcq'Attenuation { attenuationAcqPath :: DSWrap_ DSFloat DSAcq , attenuationAcqOffset :: Int , attenuationAcqCoefficient :: Double , attenuationAcqMax :: Maybe Float } | DataSourceAcq'ApplyedAttenuationFactor { attenuationAcqPath :: DSWrap_ DSFloat DSAcq } | DataSourceAcq'NoAttenuation deriving (Generic) instance DataSource DSAttenuation where ds'Shape (DataSourceAcq'Attenuation fp off _ _) = do (DataSourceShape'Range f (Z :. t)) <- ds'Shape fp pure $ DataSourceShape'Range f (Z :. (t - off)) ds'Shape (DataSourceAcq'ApplyedAttenuationFactor fp) = ds'Shape fp ds'Shape DataSourceAcq'NoAttenuation = pure shape1 withDataSourceP f (DataSourcePath'Attenuation ps o c m) g = withDataSourcesP f ps $ \p ds -> g (DataSourcePath'Attenuation [p] o c m) (DataSourceAcq'Attenuation ds o c m) withDataSourceP f (DataSourcePath'ApplyedAttenuationFactor ps) g = withDataSourcesP f ps $ \p ds -> g (DataSourcePath'ApplyedAttenuationFactor [p]) (DataSourceAcq'ApplyedAttenuationFactor ds) withDataSourceP _ DataSourcePath'NoAttenuation g = g DataSourcePath'NoAttenuation DataSourceAcq'NoAttenuation -- Dataset data family DSDataset (sh :: Type) (a :: Type) (k :: DSKind) newtype instance DSDataset sh a DSPath = DataSourcePath'Dataset (Hdf5Path sh a) deriving (Eq, Generic) deriving anyclass (FromJSON, ToJSON) instance Show (DSDataset sh a DSPath) where show (DataSourcePath'Dataset p) = show p newtype instance DSDataset sh a DSAcq = DataSourceAcq'Dataset Dataset deriving Generic instance DataSource (DSDataset sh a) where withDataSourceP (ScanFile f _) path@(DataSourcePath'Dataset p) g = withHdf5PathP f p $ \ds -> g path (DataSourceAcq'Dataset ds) -- Degree data family DSDegree (k :: DSKind) data instance DSDegree DSPath = DataSourcePath'Degree'Hdf5 (DSWrap_ (DSDataset Z Double) DSPath) | DataSourcePath'Degree'Const Degree deriving (Generic, Show, FromJSON, ToJSON) data instance DSDegree DSAcq = DataSourceAcq'Degree'Hdf5 (DSWrap_ (DSDataset Z Double) DSAcq) | DataSourceAcq'Degree'Const Degree deriving Generic instance DataSource DSDegree where withDataSourceP f (DataSourcePath'Degree'Hdf5 ps) g = withDataSourcesP f ps $ \p p' -> g (DataSourcePath'Degree'Hdf5 [p]) (DataSourceAcq'Degree'Hdf5 p') withDataSourceP _ path@(DataSourcePath'Degree'Const d) g = g path (DataSourceAcq'Degree'Const d) -- Double data family DSDouble (k :: DSKind) data instance DSDouble DSPath = DataSourcePath'Double'Hdf5 (DSWrap_ (DSDataset DIM1 Double) DSPath) | DataSourcePath'Double'Ini ConfigContent Section Key | DataSourcePath'Double'Const Double deriving (Generic, Show, FromJSON, ToJSON) data instance DSDouble DSAcq = DataSourceAcq'Double'Hdf5 (DSWrap_ (DSDataset DIM1 Double) DSAcq) | DataSourceAcq'Double'Const Double deriving Generic instance DataSource DSDouble where withDataSourceP f (DataSourcePath'Double'Hdf5 ps) g = withDataSourcesP f ps $ \p ds -> do sh <- ds'Shape ds if sh == shape1 then do v <- liftIO $ extract0DStreamValue ds g (DataSourcePath'Double'Const v) (DataSourceAcq'Double'Const v) else g (DataSourcePath'Double'Hdf5 [p]) (DataSourceAcq'Double'Hdf5 ds) withDataSourceP _ path@(DataSourcePath'Double'Const a) g = g path (DataSourceAcq'Double'Const a) withDataSourceP _ path@(DataSourcePath'Double'Ini (ConfigContent cfg) s k) g = eitherF (const $ throwM $ CanNotOpenDataSource'Double'Ini s k) (parse' cfg s k) (\case Nothing -> throwM $ CanNotOpenDataSource'Double'Ini s k Just v -> g path (DataSourceAcq'Double'Const v)) -- [Double] data family DSDoubles (k :: DSKind) newtype instance DSDoubles DSPath = DataSourcePath'List [DSWrap_ DSDouble DSPath] deriving (Generic, FromJSON, Show, ToJSON) newtype instance DSDoubles DSAcq = DataSourceAcq'List [DSWrap_ DSDouble DSAcq] deriving Generic instance DataSource DSDoubles where ds'Shape (DataSourceAcq'List ds) = do ss <- mapM ds'Shape ds pure $ foldl1 combine'Shape ss withDataSourceP f (DataSourcePath'List pathss) g = go pathss [] [] where go [] ps as = g (DataSourcePath'List ps) (DataSourceAcq'List as) go (ps : pss) accPath accAcq = withDataSourcesP f ps $ \p s -> go pss (accPath ++ [[p]]) (accAcq ++ [s]) -- Float data family DSFloat (k :: DSKind) newtype instance DSFloat DSPath = DataSourcePath'Float'Hdf5 (DSWrap_ (DSDataset DIM1 Float) DSPath) deriving (Eq, Generic, Show) deriving anyclass (FromJSON, ToJSON) newtype instance DSFloat DSAcq = DataSourceAcq'Float'Hdf5 (DSWrap_ (DSDataset DIM1 Float) DSAcq) deriving Generic instance DataSource DSFloat where withDataSourceP f (DataSourcePath'Float'Hdf5 ps) g = withDataSourcesP f ps $ \p ds -> g (DataSourcePath'Float'Hdf5 [p]) (DataSourceAcq'Float'Hdf5 ds) -- Geometry data family DSGeometry (k :: DSKind) data instance DSGeometry DSPath = DataSourcePath'Geometry { geometryGeometry :: Geometry , geometryPathWavelength :: DSWrap_ DSDouble DSPath , geometryPathAxes :: DSWrap_ DSDoubles DSPath } | DataSourcePath'Geometry'Fix { geometryPathWavelength :: DSWrap_ DSDouble DSPath } deriving (Generic, Show, FromJSON, ToJSON) data instance DSGeometry DSAcq = DataSourceAcq'Geometry Geometry (DSWrap_ DSDouble DSAcq) (DSWrap_ DSDoubles DSAcq) deriving Generic instance DataSource DSGeometry where withDataSourceP f (DataSourcePath'Geometry g wPaths asPaths) gg = withDataSourcesP f wPaths $ \wPath w' -> withDataSourcesP f asPaths $ \asPath as' -> do gg (DataSourcePath'Geometry g [wPath] [asPath]) (DataSourceAcq'Geometry g w' as') withDataSourceP f (DataSourcePath'Geometry'Fix wPaths) gg = withDataSourcesP f wPaths $ \wPath w' -> do gg (DataSourcePath'Geometry'Fix [wPath]) (DataSourceAcq'Geometry fixed w' (DataSourceAcq'List [])) -- Image condM :: (Monad m) => [(m Bool, m a)] -> m a condM [] = undefined condM ((p, v):ls) = ifM p v (condM ls) data family DSImage (k :: DSKind) data instance DSImage DSPath = DataSourcePath'Image'Dummy (Detector Hkl DIM2) Double | DataSourcePath'Image'Hdf5 (Detector Hkl DIM2) (DSWrap_ (DSDataset DIM3 Int32) DSPath) -- TODO Int32 is wrong | DataSourcePath'Image'Img (Detector Hkl DIM2) Text Scannumber deriving (Eq, Generic, Show, FromJSON, ToJSON) data instance DSImage DSAcq = DataSourceAcq'Image'Dummy (IOVector Double) | DataSourceAcq'Image'Hdf5'Double (Detector Hkl DIM2) Dataset (IOVector Double) | DataSourceAcq'Image'Hdf5'Int32 (Detector Hkl DIM2) Dataset (IOVector Int32) | DataSourceAcq'Image'Hdf5'Word16 (Detector Hkl DIM2) Dataset (IOVector Word16) | DataSourceAcq'Image'Hdf5'Word32 (Detector Hkl DIM2) Dataset (IOVector Word32) | DataSourceAcq'Image'Img'Int32 (Detector Hkl DIM2) (IOVector Int32) Text Scannumber (Text -> Scannumber -> Int -> FilePath) deriving Generic instance DataSource DSImage where withDataSourceP _ path@(DataSourcePath'Image'Dummy det v) g = do let n = size . shape $ det arr <- liftIO $ replicate n v g path (DataSourceAcq'Image'Dummy arr) withDataSourceP f (DataSourcePath'Image'Hdf5 det ps) g = withDataSourcesP f ps $ \p (DataSourceAcq'Dataset ds) -> do let path = DataSourcePath'Image'Hdf5 det [p] t <- liftIO $ getDatasetType ds s <- liftIO $ getTypeSize t let n = (size . shape $ det) * fromEnum s condM [ (liftIO $ typeIDsEqual t (nativeTypeOf (undefined :: Double)), do arr <- liftIO $ unsafeNew n g path (DataSourceAcq'Image'Hdf5'Double det ds arr)) , (liftIO $ typeIDsEqual t (nativeTypeOf (undefined :: Int32)), do arr <- liftIO $ unsafeNew n g path (DataSourceAcq'Image'Hdf5'Int32 det ds arr)) , (liftIO $ typeIDsEqual t (nativeTypeOf (undefined :: Word16)), do arr <- liftIO $ unsafeNew n g path (DataSourceAcq'Image'Hdf5'Word16 det ds arr)) , (liftIO $ typeIDsEqual t (nativeTypeOf (undefined :: Word32)), do arr <- liftIO $ unsafeNew n g path (DataSourceAcq'Image'Hdf5'Word32 det ds arr)) ] withDataSourceP (ScanFile _ sn) path@(DataSourcePath'Image'Img det tmpl (Scannumber sn0)) g = do let n = size . shape $ det arr <- liftIO $ unsafeNew n g path (DataSourceAcq'Image'Img'Int32 det arr tmpl sn f) where f :: Text -> Scannumber -> Int -> FilePath f tmpl' (Scannumber sn') i = printf (unpack tmpl') sn0 sn0 ((sn' - sn0) * 1029 + i) instance HasFieldValue [DSImage DSPath] where fieldvalue = autoJSON -- Int data family DSInt (k :: DSKind) newtype instance DSInt DSPath = DataSourcePath'Int Int deriving (Generic, Show) deriving anyclass (FromJSON, ToJSON) newtype instance DSInt DSAcq = DataSourceAcq'Int Int deriving Generic instance DataSource DSInt where withDataSourceP _ path@(DataSourcePath'Int p) g = g path (DataSourceAcq'Int p) -- Mask data family DSMask (k :: DSKind) data instance DSMask DSPath = DataSourcePath'Mask'NoMask | DataSourcePath'Mask MaskLocation (Detector Hkl DIM2) deriving (Generic, Show) deriving anyclass (FromJSON, ToJSON) data instance DSMask DSAcq = DataSourceAcq'Mask Mask | DataSourceAcq'Mask'NoMask deriving Generic instance DataSource DSMask where withDataSourceP _ path@DataSourcePath'Mask'NoMask g = g path DataSourceAcq'Mask'NoMask withDataSourceP (ScanFile _ sn) path@(DataSourcePath'Mask l d) g = do m <- getMask l d sn g path (DataSourceAcq'Mask m) -- Scannumber data family DSScannumber (k :: DSKind) data instance DSScannumber DSPath = DataSourcePath'Scannumber deriving (Eq, Generic, Show, FromJSON, ToJSON) newtype instance DSScannumber DSAcq = DataSourceAcq'Scannumber'Const Scannumber deriving Generic instance DataSource DSScannumber where withDataSourceP (ScanFile _ s) path@DataSourcePath'Scannumber g = g path (DataSourceAcq'Scannumber'Const s) -- Timestamp data family DSTimestamp (k :: DSKind) data instance DSTimestamp DSPath = DataSourcePath'Timestamp'Hdf5 (DSWrap_ (DSDataset DIM1 Double) DSPath) | DataSourcePath'Timestamp'NoTimestamp deriving (Eq, Generic, Show, FromJSON, ToJSON) data instance DSTimestamp DSAcq = DataSourceAcq'Timestamp'Hdf5 (DSWrap_ (DSDataset DIM1 Double) DSAcq) | DataSourceAcq'Timestamp'NoTimestamp deriving Generic instance DataSource DSTimestamp where withDataSourceP f (DataSourcePath'Timestamp'Hdf5 ps) g = withDataSourcesP f ps $ \p ds -> g (DataSourcePath'Timestamp'Hdf5 [p]) (DataSourceAcq'Timestamp'Hdf5 ds) withDataSourceP _ path@DataSourcePath'Timestamp'NoTimestamp g = g path DataSourceAcq'Timestamp'NoTimestamp -- Timescan0 data family DSTimescan0 (k :: DSKind) data instance DSTimescan0 DSPath = DataSourcePath'Timescan0'Hdf5 (DSWrap_ (DSDataset Z Double) DSPath) | DataSourcePath'Timescan0'NoTimescan0 deriving (Eq, Generic, Show, FromJSON, ToJSON) data instance DSTimescan0 DSAcq = DataSourceAcq'Timescan0'Hdf5 (DSWrap_ (DSDataset Z Double) DSAcq) | DataSourceAcq'Timescan0'NoTimescan0 deriving Generic instance DataSource DSTimescan0 where withDataSourceP f (DataSourcePath'Timescan0'Hdf5 ps) g = withDataSourcesP f ps $ \p ds -> g (DataSourcePath'Timescan0'Hdf5 [p]) (DataSourceAcq'Timescan0'Hdf5 ds) withDataSourceP _ path@DataSourcePath'Timescan0'NoTimescan0 g = g path DataSourceAcq'Timescan0'NoTimescan0 hkl-5.1.7/binoculars-ng/src/Hkl/Lattice.hs0000664000175000017500000001075214770555621017276 0ustar00piccapicca{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} module Hkl.Lattice ( Degree(..) , Lattice(..) , Unit(..) , unitToHklUnit , withLattice ) where import Data.Aeson (FromJSON (..), ToJSON (..)) import Foreign (ForeignPtr, Ptr, newForeignPtr, nullPtr, withForeignPtr) import Foreign.C.Types (CDouble (..)) import GHC.Generics (Generic) import Numeric.Units.Dimensional.Prelude (Angle, degree, radian, (*~), (/~)) import Test.QuickCheck (Arbitrary (..)) import Hkl.C.Hkl newtype Degree = Degree { unDegree :: Angle Double } deriving (Eq, Show) instance Arbitrary Degree where arbitrary = Degree . (*~ degree) <$> arbitrary instance FromJSON Degree where parseJSON = fmap (Degree . (*~ degree)) . parseJSON instance ToJSON Degree where toJSON = toJSON . (/~ degree) . unDegree -- Lattice data Lattice = Cubic -- a = b = c, alpha = beta = gamma = 90 Double | Tetragonal -- a = b != c, alpha = beta = gamma = 90 Double -- a, b Double -- c | Orthorhombic -- a != b != c, alpha = beta = gamma = 90 Double -- a Double -- b Double -- c | Rhombohedral -- a = b = c, alpha = beta = gamma != 90 Double -- a, b, c Degree -- alpha, beta, gamma | Hexagonal -- a = b != c, alpha = beta = 90, gamma = 120 Double -- a, b Double -- c | Monoclinic -- a != b != c, alpha = gamma = 90, beta != 90 Double -- a Double -- b Double -- c Degree -- beta | Triclinic -- a != b != c, alpha != beta != gamma != 90 Double -- a Double -- b Double -- c Degree -- alpha Degree -- beta Degree -- gamma deriving (Eq, Generic, FromJSON, Show, ToJSON) withLattice :: Lattice -> (Ptr C'HklLattice -> IO r) -> IO r withLattice l func = do fptr <- newLattice l withForeignPtr fptr func newLattice' :: CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO (ForeignPtr C'HklLattice) newLattice' a b c alpha beta gamma = do lattice <- c'hkl_lattice_new a b c alpha beta gamma nullPtr newForeignPtr p'hkl_lattice_free lattice newLattice :: Lattice -> IO (ForeignPtr C'HklLattice) newLattice (Cubic la) = do let a = CDouble la let alpha = CDouble ((90 *~ degree) /~ radian) newLattice' a a a alpha alpha alpha newLattice (Tetragonal la lc) = do let a = CDouble la let c = CDouble lc let alpha = CDouble ((90 *~ degree) /~ radian) newLattice' a a c alpha alpha alpha newLattice (Orthorhombic la lb lc) = do let a = CDouble la let b = CDouble lb let c = CDouble lc let alpha = CDouble ((90 *~ degree) /~ radian) newLattice' a b c alpha alpha alpha newLattice (Rhombohedral la (Degree aalpha)) = do let a = CDouble la let alpha = CDouble (aalpha /~ radian) newLattice' a a a alpha alpha alpha newLattice (Hexagonal la lc) = do let a = CDouble la let c = CDouble lc let alpha = CDouble ((90 *~ degree) /~ radian) let gamma = CDouble ((120 *~ degree) /~ radian) newLattice' a a c alpha alpha gamma newLattice (Monoclinic la lb lc (Degree abeta)) = do let a = CDouble la let b = CDouble lb let c = CDouble lc let alpha = CDouble ((90 *~ degree) /~ radian) let beta = CDouble (abeta /~ radian) newLattice' a b c alpha beta alpha newLattice (Triclinic la lb lc (Degree aalpha) (Degree abeta) (Degree agamma)) = do let a = CDouble la let b = CDouble lb let c = CDouble lc let alpha = CDouble (aalpha /~ radian) let beta = CDouble (abeta /~ radian) let gamma = CDouble (agamma /~ radian) newLattice' a b c alpha beta gamma -- Unit data Unit = Unit'NoUnit | Unit'Angle'Degree | Unit'Length'MilliMeter deriving (Bounded, Eq, Enum, Generic, FromJSON, Show, ToJSON) unitToHklUnit :: Unit -> Ptr C'HklUnit unitToHklUnit Unit'NoUnit = p'hkl_unit_angle_rad unitToHklUnit Unit'Angle'Degree = p'hkl_unit_angle_deg unitToHklUnit Unit'Length'MilliMeter = p'hkl_unit_length_mm hkl-5.1.7/binoculars-ng/src/Hkl/Detector.hs0000664000175000017500000001630215133711150017440 0ustar00piccapicca{-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StandaloneDeriving #-} module Hkl.Detector ( Detector(..) , Hkl , Mask , Normalisation(..) , PyFAI , SomeDetector(..) , ZeroD , defaultDetector , detectors , getDetectorMask , getDetectorDefaultMask , getPixelsCoordinates , inDetector , maskOr , mkDetector , newDetector , parseDetector2D , shape , withDetector ) where import Control.Monad ((<=<)) import Control.Monad.Catch (MonadThrow, throwM) import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Aeson (FromJSON (..), ToJSON (..), object, pairs, withObject, (.:), (.=)) import Data.List (find, sort) import Data.Text (Text, pack, unpack, unwords) import Foreign.C.String (peekCString, withCString) import Foreign.C.Types (CBool, CDouble (..)) import Foreign.ForeignPtr (ForeignPtr, castForeignPtr, newForeignPtr, withForeignPtr) import Foreign.Marshal.Alloc (alloca, finalizerFree) import Foreign.Ptr (Ptr, nullPtr) import Foreign.Storable (peek) import GHC.IO.Unsafe (unsafePerformIO) import Numeric.Units.Dimensional.Prelude (Angle, Length, meter, radian, (/~)) import Test.QuickCheck (Arbitrary (..), elements) import Hkl.C.Binoculars import Hkl.C.Hkl import Hkl.Exception import Hkl.Repa data PyFAI deriving (Eq, Show) data Hkl deriving (Eq, Show) data ZeroD deriving (Eq, Show) data Detector a sh where ImXpadS140 :: Detector PyFAI DIM2 Xpad32 :: Detector PyFAI DIM2 XpadFlatCorrected :: Detector PyFAI DIM2 ZeroD :: Detector ZeroD DIM0 Detector2D :: HklBinocularsDetectorEnum -> String -> DIM2 -> Detector Hkl DIM2 deriving instance Show (Detector a sh) deriving instance Eq (Detector a sh) instance FromJSON (Detector Hkl DIM2) where parseJSON = withObject "Detector2D" $ \v -> do n <- v .: "detector" case parseDetector2D n of Left e -> fail e Right d -> pure d instance ToJSON (Detector Hkl DIM2) where -- this generates a Value toJSON (Detector2D _ name _) = object ["detector" .= name] -- this encodes directly to a bytestring Builder toEncoding (Detector2D _ name _) = pairs ("detector" .= name) instance Arbitrary (Detector Hkl DIM2) where arbitrary = elements detectors type Mask = Array F DIM2 CBool -- Detector withDetector :: Detector a sh -> (Ptr C'HklDetector -> IO b) -> IO b withDetector d func = do fptr <- newDetector d withForeignPtr fptr func newDetector :: Detector a sh -> IO (ForeignPtr C'HklDetector) newDetector ZeroD = c'hkl_detector_factory_new 0 >>= newForeignPtr p'hkl_detector_free newDetector _ = error "Can not use 2D detector with the hkl library" {-# NOINLINE mkDetector #-} mkDetector :: HklBinocularsDetectorEnum -> Detector Hkl DIM2 mkDetector d = let n = toEnum . fromEnum $ d in unsafePerformIO $ Detector2D d <$> (peekCString =<< c'hkl_binoculars_detector_2d_name_get n) <*> alloca (\width -> alloca $ \height -> do c'hkl_binoculars_detector_2d_shape_get n width height w <- peek width h <- peek height return $ ix2 (fromEnum h) (fromEnum w)) {-# NOINLINE detectors #-} detectors :: [Detector Hkl DIM2] detectors = unsafePerformIO $ return $ map mkDetector [minBound..maxBound] -- TODO s140 should be the default defaultDetector :: Detector Hkl DIM2 defaultDetector = mkDetector HklBinocularsDetectorEnum'ImxpadS140 parseDetector2D :: Text -> Either String (Detector Hkl DIM2) parseDetector2D t = case find (\(Detector2D _ n _) -> n == unpack t) detectors of (Just d) -> Right d Nothing -> Left ("Unsupported '" ++ unpack t ++ "' detector, select one of -> " ++ Prelude.unwords (sort [n | (Detector2D _ n _) <- detectors])) -- SomeDetector data SomeDetector = forall a sh. SomeDetector (Detector a sh) instance Show SomeDetector where show (SomeDetector v) = show v instance Eq SomeDetector where (==) a b = show a == show b shape :: Detector a sh -> sh shape ImXpadS140 = ix2 240 560 -- y x shape Xpad32 = ix2 960 560 shape XpadFlatCorrected = ix2 1154 576 shape ZeroD = Z shape (Detector2D _ _ s) = s -- Xpad Family data Normalisation = NoNormalisation | Normalisation deriving (Enum) getPixelsCoordinates :: Detector Hkl DIM2 -> (Int, Int) -> Length Double -> Angle Double -> Normalisation -> IO (Array F DIM3 Double) getPixelsCoordinates (Detector2D d _ sh) (ix0, iy0) sdd detrot norm = do let n = toEnum . fromEnum $ d parr <- c'hkl_binoculars_detector_2d_coordinates_get n let Z :. height :. width = sh c'hkl_binoculars_detector_2d_sixs_calibration n parr (toEnum width) (toEnum height) (toEnum ix0) (toEnum iy0) (CDouble (sdd /~ meter)) (CDouble (detrot /~ radian)) (toEnum . fromEnum $ norm) arr <- newForeignPtr finalizerFree parr return $ fromForeignPtr (ix3 3 height width) (castForeignPtr arr) fromPtr :: (MonadThrow m, MonadIO m, Shape sh) => sh -> HklDetectorException -> Ptr a -> m (Array F sh a) fromPtr sh err ptr = if ptr == nullPtr then throwM err else do arr <- liftIO $ newForeignPtr finalizerFree ptr return $ fromForeignPtr sh (castForeignPtr arr) getDetectorDefaultMask :: (MonadThrow m, MonadIO m) => Detector Hkl DIM2 -> m Mask getDetectorDefaultMask (Detector2D d _ sh) = do let n = toEnum . fromEnum $ d fromPtr sh NoDefaultMask =<< liftIO (c'hkl_binoculars_detector_2d_mask_get n) getDetectorMask :: (MonadThrow m, MonadIO m) => Detector Hkl DIM2 -> Text -> m Mask getDetectorMask (Detector2D d name sh) mask = do let err = MaskShapeNotcompatible (Data.Text.unwords [pack name, ": ", mask]) let n = toEnum . fromEnum $ d liftIO $ withCString (unpack mask) $ fromPtr sh err <=< c'hkl_binoculars_detector_2d_mask_load n maskOr :: (MonadThrow m, MonadIO m) => Detector Hkl DIM2 -> Mask -> Mask -> m Mask maskOr (Detector2D d _ sh) l r = do let n = toEnum . fromEnum $ d liftIO $ withForeignPtr (toForeignPtr l) $ \c'l -> withForeignPtr (toForeignPtr r) (fromPtr sh MaskInternalError <=< c'hkl_binoculars_detector_2d_mask_or n c'l) inDetector :: (Int, Int) -> Detector Hkl DIM2 -> Bool inDetector (x, y) det = inShape (shape det) (ix2 y x) hkl-5.1.7/binoculars-ng/src/Hkl/Geometry.hs0000664000175000017500000001663514770555621017512 0ustar00piccapicca{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} module Hkl.Geometry ( Axis(..) , Factory(..) , Geometry(..) , GeometryState(..) , Transformation(..) , cirpad , fixed , mk'Geometry , sixsMedHGisaxs , sixsMedVGisaxs , sixsUhvGisaxs , zaxis , withGeometry ) where import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Tree (Tree (..), foldTree) import qualified Data.Vector.Storable as V import Foreign (ForeignPtr, Ptr, newForeignPtr, nullPtr, withForeignPtr) import Foreign.C (CDouble (..), newCString, withCString) import GHC.Generics (Generic) import Numeric.LinearAlgebra (Vector) import Prelude hiding (max, min) import Hkl.C.Hkl import Hkl.Lattice import Hkl.Orphan () ------------- -- Factory -- ------------- data Factory = K6c | Fixe | Uhv | Mars | MedH | MedV | SoleilSiriusKappa deriving (Eq, Generic, FromJSON, ToJSON) instance Show Factory where show K6c = "K6C" show Fixe = undefined show Uhv = "ZAXIS" show Mars = "SOLEIL MARS" show MedH = "SOLEIL SIXS MED1+2" show MedV = "SOLEIL SIXS MED2+3" show SoleilSiriusKappa = "SOLEIL SIRIUS KAPPA" -- factoryFromString :: String -> Factory -- factoryFromString s -- | s == "K6C" = K6c -- | s == undefined = Fixe -- | s == "ZAXIS" = Uhv -- | s == "SOLEIL MARS" = Mars -- | s == undefined = MedH -- | s == "SOLEIL SIXS MED2+3" = MedV -- | s == "SOLEIL SIRIUS KAPPA" = SoleilSiriusKappa -- | otherwise = error $ "unknown diffractometer type:" ++ s newFactory :: Factory -> IO (Ptr C'HklFactory) newFactory f = Foreign.C.withCString (show f) $ \cname -> c'hkl_factory_get_by_name cname nullPtr -------------- -- Geometry -- -------------- data Transformation = NoTransformation | Rotation Double Double Double | Translation Double Double Double deriving (Eq, Generic, FromJSON, Show, ToJSON) data Axis = Axis String Transformation Unit deriving (Eq, Generic, FromJSON, Show, ToJSON) data GeometryState = GeometryState Double (Vector CDouble) deriving (Eq, Generic, FromJSON, Show, ToJSON) data Geometry = Geometry'Custom (Tree Axis) (Maybe GeometryState) | Geometry'Factory Factory (Maybe GeometryState) deriving (Eq, Generic, FromJSON, Show, ToJSON) noAxis :: Axis noAxis = Axis "" NoTransformation Unit'NoUnit mk'Geometry :: [Axis] -> [Axis] -> Maybe Geometry mk'Geometry sa ds = Just geometry where geometry = Geometry'Custom (buildTree sa ds) Nothing buildTree' :: [Axis] -> Tree Axis buildTree' [x] = Node x [] buildTree' (x : xs) = Node x [buildTree' xs] buildTree' _ = undefined -- should never happend buildTree :: [Axis] -> [Axis] -> Tree Axis buildTree [] [] = undefined buildTree [x] [] = Node x [] buildTree (x : xs) [] = Node x [buildTree' xs] buildTree [] [y] = Node y [] buildTree [] (y : ys) = Node y [buildTree' ys] buildTree (x : xs) (y : ys) = if x == y then Node x [buildTree xs ys] else let left = Node x [buildTree' xs | not (null xs)] right = Node y [buildTree' ys| not (null ys)] in Node noAxis [left, right] cirpad :: Geometry cirpad = Geometry'Custom ( Node (Axis "" NoTransformation Unit'NoUnit) [ Node (Axis "" NoTransformation Unit'NoUnit) [] , Node (Axis "delta" (Translation 0 (-1) 0) Unit'Angle'Degree) [Node (Axis "gamma" (Translation 0 0 1) Unit'Angle'Degree) []] ] ) Nothing fixed :: Geometry fixed = Geometry'Custom (Node (Axis "mu" (Rotation 0 0 1) Unit'Angle'Degree) [ Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ]) Nothing sixsMedHGisaxs :: Geometry sixsMedHGisaxs = Geometry'Custom ( Node (Axis "" NoTransformation Unit'NoUnit) [ Node (Axis "beta" (Rotation 0 (-1) 0) Unit'Angle'Degree) [Node (Axis "mu" (Rotation 0 0 1) Unit'Angle'Degree) [] ] , Node (Axis "eix" (Translation 0 (-1) 0) Unit'Length'MilliMeter) [Node (Axis "eiz" (Translation 0 0 1) Unit'Length'MilliMeter) []] ] ) Nothing sixsMedVGisaxs :: Geometry sixsMedVGisaxs = Geometry'Custom ( Node (Axis "" NoTransformation Unit'NoUnit) [ Node (Axis "beta" (Rotation 0 (-1) 0) Unit'Angle'Degree) [Node (Axis "mu" (Rotation 0 0 1) Unit'Angle'Degree) [Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ] ] , Node (Axis "eix" (Translation 0 (-1) 0) Unit'Length'MilliMeter) [Node (Axis "eiz" (Translation 0 0 1) Unit'Length'MilliMeter) []] ] ) Nothing sixsUhvGisaxs :: Geometry sixsUhvGisaxs = Geometry'Custom ( Node (Axis "" NoTransformation Unit'NoUnit) [ Node (Axis "mu" (Rotation 0 0 1) Unit'Angle'Degree) [ Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] ] , Node (Axis "eix" (Translation 0 (-1) 0) Unit'Length'MilliMeter) [Node (Axis "eiz" (Translation 0 0 1) Unit'Length'MilliMeter) []] ] ) Nothing zaxis :: Geometry zaxis = Geometry'Custom ( Node (Axis "mu" (Rotation 0 0 1) Unit'Angle'Degree) [ Node (Axis "omega" (Rotation 0 (-1) 0) Unit'Angle'Degree) [] , Node (Axis "delta" (Rotation 0 (-1) 0) Unit'Angle'Degree) [ Node (Axis "gamma" (Rotation 0 0 1) Unit'Angle'Degree) [] ] ] ) Nothing pokeGeometry :: ForeignPtr C'HklGeometry -> GeometryState -> IO () pokeGeometry fptr (GeometryState lw vs) = withForeignPtr fptr $ \ptr -> do -- set the source let wavelength = CDouble lw c'hkl_geometry_wavelength_set ptr wavelength c'HKL_UNIT_USER nullPtr -- set the axes let n = toEnum . V.length $ vs V.unsafeWith vs $ \values -> c'hkl_geometry_axis_values_set ptr values n c'HKL_UNIT_USER nullPtr newGeometry :: Geometry -> IO (ForeignPtr C'HklGeometry) newGeometry (Geometry'Custom g ms) = do gPtr <- c'hkl_geometry_new nullPtr nullPtr mapM_ (addHolder gPtr) (axes g) fptr <- newForeignPtr p'hkl_geometry_free gPtr case ms of Nothing -> return () (Just s) -> pokeGeometry fptr s return fptr where addHolder :: Ptr C'HklGeometry -> [Axis] -> IO () addHolder gPtr axs = do hPtr <- c'hkl_geometry_add_holder gPtr mapM_ (addAxis hPtr) axs addAxis :: Ptr C'HklHolder -> Axis -> IO () addAxis h (Axis n t u) = case t of NoTransformation -> return () Rotation x y z -> do c'n <- newCString n c'hkl_holder_add_rotation h c'n (CDouble x) (CDouble y) (CDouble z) (unitToHklUnit u) Translation x y z -> do c'n <- newCString n c'hkl_holder_add_translation h c'n (CDouble x) (CDouble y) (CDouble z) (unitToHklUnit u) axes :: Tree Axis -> [[Axis]] axes = foldTree (\x xsss -> if null xsss then [[x]] else concatMap (map (x:)) xsss) newGeometry (Geometry'Factory f ms) = do fptr <- newForeignPtr p'hkl_geometry_free =<< c'hkl_factory_create_new_geometry =<< newFactory f case ms of Nothing -> return () (Just s) -> pokeGeometry fptr s return fptr withGeometry :: Geometry -> (Ptr C'HklGeometry -> IO r) -> IO r withGeometry g f = do fptr <- newGeometry g withForeignPtr fptr f hkl-5.1.7/binoculars-ng/src/Hkl/MyMatrix.hs0000664000175000017500000000325114677222567017465 0ustar00piccapiccamodule Hkl.MyMatrix ( Basis(..) , MyMatrix(..) , changeBase , toEulerians ) where import Prelude hiding ((<>)) import Numeric.LinearAlgebra (Matrix, atIndex, fromLists, inv, (<>)) import Numeric.Units.Dimensional.Prelude (Angle, (*~), radian) data Basis = PyFAIB -- the pyFAI (1, 2, 3) detector coordinates | HklB -- the hkl coordinates deriving (Show) data MyMatrix a = MyMatrix Basis (Matrix a) deriving (Show) changeBase :: MyMatrix Double -> Basis -> MyMatrix Double changeBase (MyMatrix PyFAIB m) HklB = MyMatrix HklB (passage m p2) changeBase (MyMatrix HklB m) PyFAIB = MyMatrix PyFAIB (passage m p1) changeBase m@(MyMatrix PyFAIB _) PyFAIB = m changeBase m@(MyMatrix HklB _) HklB = m passage :: Matrix Double -> Matrix Double -> Matrix Double passage r p = inv p <> r <> p p1 :: Matrix Double -- hkl -> pyFAI p1 = fromLists [ [0, 0, 1] , [0, -1, 0] , [1, 0, 0]] p2 :: Matrix Double -- pyFAI -> hkl: p2 = fromLists [ [ 0, 0, 1] , [ 0, -1, 0] , [ 1, 0, 0]] toEulerians :: Matrix Double -> (Angle Double, Angle Double, Angle Double) toEulerians m | abs c > epsilon = ( atan2 ((m `atIndex` (2, 1)) / c) ((m `atIndex` (2, 2)) / c) *~ radian , rot2 *~ radian , atan2 ((m `atIndex` (1, 0)) / c) ((m `atIndex` (0, 0)) / c) *~ radian ) | otherwise = ( 0 *~ radian , rot2 *~ radian , atan2 (-(m `atIndex` (0, 1))) (m `atIndex` (1, 1)) *~ radian ) where epsilon = 1e-10 rot2 = asin (-(m `atIndex` (2, 0))) c = cos rot2 hkl-5.1.7/binoculars-ng/src/Hkl/Utils.hs0000664000175000017500000000304614677222567017015 0ustar00piccapicca{-# LANGUAGE CPP #-} {-# LANGUAGE UnicodeSyntax #-} module Hkl.Utils ( hasContent , logDebugNSH , logErrorNSH , withCString ) where import Control.Monad.Logger (LoggingT, MonadLogger, logDebugN, logErrorN) import Data.Text (Text, length, pack) import Data.Text.Foreign (unsafeCopyToPtr) import Data.Text.IO (writeFile) import Data.Word (Word8) import Foreign.C.String (CString) import Foreign.Marshal.Alloc (allocaBytes) import Foreign.Storable (pokeByteOff) import GHC.Ptr (castPtr) import System.Directory (createDirectoryIfMissing) import System.FilePath (takeDirectory) hasContent ∷ FilePath → Text → IO () hasContent f c = do createDirectoryIfMissing True (takeDirectory f) Data.Text.IO.writeFile f c print $ "--> created : " ++ f {-# SPECIALIZE logDebugNSH :: Text -> LoggingT IO () #-} logDebugNSH :: (Show a, MonadLogger m) => a -> m () logDebugNSH = logDebugN . pack . show {-# SPECIALIZE logErrorNSH :: Text -> LoggingT IO () #-} logErrorNSH :: (Show a, MonadLogger m) => a -> m () logErrorNSH = logErrorN . pack . show -- from Text-2.0.1 TO remove later withCString :: Text -> (CString -> IO a) -> IO a withCString t action = do let len = Data.Text.length t allocaBytes (len + 1) $ \buf -> do unsafeCopyToPtr t buf pokeByteOff buf len (0 :: Word8) action (castPtr buf) hkl-5.1.7/binoculars-ng/src/Hkl/Orphan.hs0000664000175000017500000000340414677222567017142 0ustar00piccapicca{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Hkl.Orphan where import Data.Aeson (FromJSON (..), ToJSON (..), Value (..)) import Data.ByteString.Char8 (ByteString) import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Foreign.C (CDouble (..)) import Foreign.Storable (Storable) import GHC.Base (Alternative (..)) import Path (Abs, Dir, Path, mkAbsDir) import Test.QuickCheck (Arbitrary (..), elements) import Prelude hiding (unwords) import Hkl.C.Binoculars import Hkl.Repa --------------- -- Arbitrary -- --------------- instance Arbitrary (Path Abs Dir) where arbitrary = pure $(mkAbsDir "/toto") instance Arbitrary HklBinocularsSurfaceOrientationEnum where arbitrary = elements ([minBound .. maxBound] :: [HklBinocularsSurfaceOrientationEnum]) instance Arbitrary HklBinocularsQCustomSubProjectionEnum where arbitrary = elements ([minBound .. maxBound] :: [HklBinocularsQCustomSubProjectionEnum]) ----------------- -- From/ToJSON -- ----------------- instance ToJSON ByteString where toJSON = String . decodeUtf8 {-# INLINE toJSON #-} instance FromJSON ByteString where parseJSON (String t) = pure . encodeUtf8 $ t parseJSON _ = GHC.Base.empty {-# INLINE parseJSON #-} instance ToJSON CDouble where toJSON (CDouble d) = toJSON d instance FromJSON CDouble where parseJSON = parseJSON {-# INLINE parseJSON #-} ---------- -- Show -- ---------- instance (Shape sh, Storable e) => Show (Array F sh e) where show = showShape . extent hkl-5.1.7/binoculars-ng/src/Hkl/Pipes.hs0000664000175000017500000000407615133711150016754 0ustar00piccapicca{-# LANGUAGE GADTs #-} {-# LANGUAGE ScopedTypeVariables #-} module Hkl.Pipes ( withBytes , withFileP , withDatasetP , withDataspaceP , withHdf5PathP ) where import Bindings.HDF5.Core (Location) import Bindings.HDF5.Dataspace (Dataspace, closeDataspace) import Bindings.HDF5.Group (Group, closeGroup) import Control.Monad.IO.Class (MonadIO (liftIO)) import Foreign.ForeignPtr (ForeignPtr, mallocForeignPtrBytes, touchForeignPtr) import Pipes.Safe (MonadSafe, bracket) import Hkl.H5 -- Deal with hdf5 object in a safe way bracket' :: MonadSafe m => (a -> IO ()) -> IO a -> (a -> m r) -> m r bracket' r a = bracket (liftIO a) (liftIO . r) withBytes :: MonadSafe m => Int -> (ForeignPtr a -> m r) -> m r withBytes n = bracket' touchForeignPtr (mallocForeignPtrBytes n) withFileP :: MonadSafe m => IO File -> (File -> m r) -> m r withFileP = bracket' closeFile withGroupP :: MonadSafe m => IO Group -> (Group -> m r) -> m r withGroupP = bracket' closeGroup withGroupAtP :: (Location l, MonadSafe m) => l -> Int -> (Group -> m r) -> m r withGroupAtP l i f = do es <- liftIO $ nxEntries' l withGroupP (openGroup' l (es !! i) Nothing) f withDatasetP :: MonadSafe m => IO Dataset -> (Dataset -> m r) -> m r withDatasetP = bracket' closeDataset withDataspaceP :: MonadSafe m => IO Dataspace -> (Dataspace -> m r) -> m r withDataspaceP = bracket' closeDataspace withHdf5PathP :: (MonadSafe m, Location l) => l -> Hdf5Path sh e -> (Dataset -> m r) -> m r withHdf5PathP loc (H5RootPath subpath) f = withHdf5PathP loc subpath f withHdf5PathP loc (H5GroupPath n subpath) f = withGroupP (openGroup' loc n Nothing) $ \g -> withHdf5PathP g subpath f withHdf5PathP loc (H5GroupAtPath i subpath) f = withGroupAtP loc i $ \g -> withHdf5PathP g subpath f withHdf5PathP loc (H5DatasetPath n) f = withDatasetP (openDataset' loc n Nothing) f withHdf5PathP loc (H5DatasetPathAttr (a, c)) f = withDatasetP (openDatasetWithAttr loc a c) f hkl-5.1.7/binoculars-ng/src/Hkl/H5.hs0000664000175000017500000004064015133711150016145 0ustar00piccapicca{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE UnicodeSyntax #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.H5 ( Dataset , File , H5 , H5Path , HklH5Exception , checkNdims , closeDataset , closeFile , getArrayInBuffer , getPosition , getPositionNew , getUB , lenH5Dataspace , datasetShape , nxEntries , nxEntries' , openDataset' , openDatasetWithAttr , openFile' , openGroup' , setImage , withH5File -- new API , Hdf5 , ToHdf5(..) , Hkl.H5.empty , hdf5 , group , dataset , saveHdf5 , Hdf5Path(..) , hdf5p , groupp , grouppat , datasetp , datasetpattr , withHdf5Path' , withHdf5Path ) where import Bindings.HDF5.Attribute (Attribute, closeAttribute, doesAttributeExist, openAttribute, readAttributeStringASCII) import Bindings.HDF5.Core (HSize (HSize), IndexType (ByName), IterOrder (Native), Location, hSize, hid, indexTypeCode, iterOrderCode) import Bindings.HDF5.Dataset (Dataset, closeDataset, createDataset, getDatasetSpace, openDataset, readDataset, readDatasetInto, writeDataset) import Bindings.HDF5.Dataspace (Dataspace, SelectionOperator (Set), closeDataspace, createSimpleDataspace, getSimpleDataspaceExtent, getSimpleDataspaceExtentNDims, getSimpleDataspaceExtentNPoints, selectHyperslab, selectNone) import Bindings.HDF5.Datatype.Internal (NativeType, nativeTypeOf) import Bindings.HDF5.Error (HDF5Exception) import Bindings.HDF5.File (AccFlags (ReadOnly, Truncate), File, closeFile, createFile, openFile) import Bindings.HDF5.Group (Group, closeGroup, createGroup, openGroup) import Bindings.HDF5.Link (visitLinks) import Bindings.HDF5.Object (ObjectId, ObjectType (..), closeObject, getObjectType, openObject) import Bindings.HDF5.PropertyList.DAPL (DAPL) import Bindings.HDF5.PropertyList.GAPL (GAPL) import Bindings.HDF5.Raw (H5L_info_t, HErr_t (HErr_t), HId_t (HId_t), h5l_iterate) import Control.Exception (bracket, throwIO, try) import Control.Monad.Extra (fromMaybeM) import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.ByteString.Char8 (ByteString, pack, packCString, unpack) import Data.IORef (modifyIORef', newIORef, readIORef) import Data.Vector.Storable (Storable, Vector, freeze, head, unsafeFromForeignPtr0) import Data.Vector.Storable.Mutable (IOVector, new) import Data.Word (Word16) import Foreign.C.String (CString) import Foreign.C.Types (CInt (CInt)) import Foreign.Ptr (FunPtr, freeHaskellFunPtr) import Foreign.Ptr.Conventions (In (In), InOut (InOut), castWrappedPtr, withInOut_) import Foreign.StablePtr (StablePtr, castPtrToStablePtr, castStablePtrToPtr, deRefStablePtr, freeStablePtr, newStablePtr) import GHC.Generics (Generic) import Numeric.LinearAlgebra (Matrix, reshape) import Test.QuickCheck (Arbitrary (..), oneof) import Text.Printf (printf) import Hkl.Detector import Hkl.Exception import Hkl.Orphan () import Hkl.Repa import Prelude hiding (head) -- {-# ANN module "HLint: ignore Use camelCase" #-} data H5 type H5Path = String checkNdims :: Dataset -> Int -> IO Bool checkNdims d expected = do space_id <- getDatasetSpace d (CInt ndims) <- getSimpleDataspaceExtentNDims space_id return $ expected == fromEnum ndims shapeAsCoordinateToHyperslab :: Shape sh => sh -> [(HSize, Maybe HSize, HSize, Maybe HSize)] shapeAsCoordinateToHyperslab s = [(HSize (fromIntegral n), Nothing, HSize 1, Nothing) | n <- reverse . listOfShape $ s] shapeAsRangeToHyperslab :: Shape sh => sh -> [(HSize, Maybe HSize, HSize, Maybe HSize)] shapeAsRangeToHyperslab s = [(0, Nothing, HSize (fromIntegral s'), Nothing) | s' <- reverse . listOfShape $ s] createDataspaceFromShape :: Shape sh => sh -> IO Dataspace createDataspaceFromShape sh = createSimpleDataspace [HSize (fromIntegral s) | s <- reverse . listOfShape $ sh] castToVector :: (Shape sh, Storable e) => Array F sh e -> Vector e castToVector arr = unsafeFromForeignPtr0 (toForeignPtr arr) (size . extent $ arr) getArrayInBuffer :: (NativeType t, Shape sh) => IOVector t -> Detector a sh -> Dataset -> Int -> IO (IOVector t) getArrayInBuffer arr det d n = withDataspace (getDatasetSpace d) $ \dataspace -> do let s = shape det h = (HSize (fromIntegral n), Nothing, HSize 1, Nothing) : shapeAsRangeToHyperslab s selectHyperslab dataspace Set h withDataspace (createDataspaceFromShape s) $ \memspace -> do readDatasetInto d (Just memspace) (Just dataspace) Nothing arr return arr setImage :: Shape sh => Detector a sh -> Dataset -> Dataspace -> Int -> Array F sh Word16 -> IO () setImage det d dataspace n arr = do selectNone dataspace selectHyperslab dataspace Set h withDataspace (createDataspaceFromShape s) $ \memspace -> writeDataset d (Just memspace) (Just dataspace) Nothing (castToVector arr) where s = shape det h = (HSize (fromIntegral n), Nothing, HSize 1, Nothing) : shapeAsRangeToHyperslab s saveRepa :: (Location t, NativeType e, Shape sh, Storable e) => t -> ByteString -> Array F sh e -> IO () saveRepa f path arr = withDataspace (createDataspaceFromShape (extent arr)) $ \dataspace -> withDataset (createDataset f path (nativeTypeOf (linearIndex arr 0)) dataspace Nothing Nothing Nothing) $ \dataset' -> writeDataset dataset' Nothing Nothing Nothing (castToVector arr) getPosition' :: NativeType t => Dataset -> [(HSize, Maybe HSize, HSize, Maybe HSize)] -> IO (Vector t) getPosition' dataset' h = withDataspace (getDatasetSpace dataset') $ \dataspace -> do selectHyperslab dataspace Set h withDataspace (createSimpleDataspace [HSize 1]) $ \memspace -> do data_out <- Data.Vector.Storable.Mutable.new 1 readDatasetInto dataset' (Just memspace) (Just dataspace) Nothing data_out freeze data_out getPositionNew :: Shape sh => Dataset -> sh -> IO (Vector Double) getPositionNew dataset' s = getPosition' dataset' (shapeAsCoordinateToHyperslab s) getPosition :: (NativeType t, RealFloat t) => Dataset -> Int -> IO t getPosition dataset' n = do v <- getPosition' dataset' [(HSize (fromIntegral n), Nothing, HSize 1, Nothing)] let v' = head v if isNaN v' then throwIO ContainNanValue else return v' getUB :: Dataset -> IO (Matrix Double) getUB dataset' = do v <- readDataset dataset' Nothing Nothing return $ reshape 3 v -- File withH5File' :: IO File -> (File -> IO r) -> IO r withH5File' a = bracket a closeFile withH5File :: FilePath -> (File -> IO r) -> IO r withH5File fp = withH5File' (openFile' fp) openFile' ∷ FilePath → IO File openFile' f = do ef :: Either HDF5Exception File <- try $ openFile (pack f) [ReadOnly] Nothing case ef of Left _ -> throwIO $ CanNotOpenFile (pack f) Right f' -> pure f' -- Group openGroup' :: Location l =>l -> ByteString -> Maybe GAPL -> IO Group openGroup' l n mgapl = do eg :: Either HDF5Exception Group <- try $ openGroup l n mgapl case eg of Left _ -> throwIO $ CanNotOpenGroup n Right g -> pure g withGroup :: IO Group -> (Group -> IO r) -> IO r withGroup a = bracket a closeGroup withGroupAt :: Location l => l -> Int -> (Group -> IO r) -> IO r withGroupAt l i f = do es <- nxEntries' l let n = es !! i eg :: Either HDF5Exception Group <- try $ openGroup l n Nothing case eg of Left _ -> throwIO $ CanNotOpenGroupAt n i Right g -> withGroup (pure g) f -- Dataspace -- check how to merge both methods withDataspace :: IO Dataspace -> (Dataspace -> IO r) -> IO r withDataspace a = bracket a closeDataspace lenH5Dataspace :: Dataset -> IO (Maybe Int) lenH5Dataspace d = withDataspace (getDatasetSpace d) len where len space_id = do (HSize n) <- getSimpleDataspaceExtentNPoints space_id return $ if n < 0 then Nothing else Just (fromIntegral n) datasetShape :: Dataset -> IO ([HSize], [Maybe HSize]) datasetShape d = withDataspace (getDatasetSpace d) getSimpleDataspaceExtent -- DataSet openDataset' :: Location l => l -> ByteString -> Maybe DAPL -> IO Dataset openDataset' l n mdapl = do ed :: Either HDF5Exception Dataset <- try $ openDataset l n mdapl case ed of Left _ -> throwIO $ CanNotOpenDataset n Right d -> pure d withDataset :: IO Dataset -> (Dataset -> IO r) -> IO r withDataset a = bracket a closeDataset -- WIP until I have decided what is the right way to go type H5Iterate a = HId_t -> CString -> In H5L_info_t -> InOut a -> IO HErr_t foreign import ccall "wrapper" mkOp :: H5Iterate a -> IO (FunPtr (H5Iterate a)) withStablePtr :: a -> (StablePtr a -> IO b) -> IO b withStablePtr value = bracket (newStablePtr value) freeStablePtr withFunPtr :: H5Iterate a -> (FunPtr (H5Iterate a) -> IO b) -> IO b withFunPtr f = bracket (mkOp f) freeHaskellFunPtr nxEntries ∷ FilePath → IO [String] nxEntries f = withH5File f $ \l → do es <- nxEntries' l return $ map unpack es nxEntries' :: Location l => l -> IO [ByteString] nxEntries' l = do state <- newIORef [] _ <- withStablePtr state $ \statePtr -> do let opData = InOut $ castStablePtrToPtr statePtr let startIndex = Nothing let indexType = ByName let order = Native withFunPtr callback $ \iop -> withInOut_ (maybe 0 hSize startIndex) $ \ioStartIndex -> h5l_iterate (hid l) (indexTypeCode indexType) (iterOrderCode order) ioStartIndex iop opData -- retrieve the final state readIORef state where callback :: H5Iterate a callback _ n _ (InOut dataptr) = do name <- packCString n stRef <- deRefStablePtr. castPtrToStablePtr . castWrappedPtr $ dataptr modifyIORef' stRef $ \st -> name : st return $ HErr_t 0 -- Attribute withObject :: IO ObjectId -> (ObjectId -> IO r) -> IO r withObject a = bracket a closeObject withAttribute :: IO Attribute -> (Attribute -> IO r) -> IO r withAttribute a = bracket a closeAttribute openDatasetWithAttr :: Location l => l -> ByteString -> ByteString -> IO Dataset openDatasetWithAttr loc attr value = do state <- newIORef (Nothing :: Maybe Dataset) visitLinks loc ByName Native $ \g n _ -> do withObject (openObject g n Nothing) $ \obj -> do t <- getObjectType obj case t of DatasetObj -> do exist <- doesAttributeExist obj attr if exist then withAttribute (openAttribute obj attr) $ \a -> do c <- readAttributeStringASCII a if c == value then do ds <- openDataset' g n Nothing modifyIORef' state $ const (Just ds) return $ HErr_t 1 else return $ HErr_t 0 else return $ HErr_t 0 _ -> return $ HErr_t 0 fromMaybeM (throwIO $ CanNotFindDatasetWithAttributContent attr value) (readIORef state) -- Better API data Hdf5M a = H5Empty | H5Root (Hdf5M a) | H5Group ByteString [Hdf5M a] | forall sh b. (NativeType b, Shape sh) => H5Dataset ByteString (Array F sh b) type Hdf5 = Hdf5M () class ToHdf5 a where toHdf5 :: a -> Hdf5 hdf5 :: Hdf5 -> Hdf5 hdf5 = H5Root empty :: Hdf5 empty = H5Empty group :: ByteString -> [Hdf5] -> Hdf5 group = H5Group dataset :: (NativeType b, Shape sh) => ByteString -> Array F sh b -> Hdf5 dataset = H5Dataset saveHdf5 :: ToHdf5 a => FilePath -> a -> IO () saveHdf5 f a = withH5File' (createFile (pack f) [Truncate] Nothing Nothing) $ \f' -> go f' (toHdf5 a) where go :: Location l => l -> Hdf5 -> IO () go _ H5Empty = return () go l (H5Root c) = go l c go l (H5Group n cs) = withGroup (createGroup l n Nothing Nothing Nothing ) $ \g -> mapM_ (go g) cs go l (H5Dataset n arr) = saveRepa l n arr data Hdf5Path sh e = H5RootPath (Hdf5Path sh e) | H5GroupPath ByteString (Hdf5Path sh e) | H5GroupAtPath Int (Hdf5Path sh e) | H5DatasetPath ByteString | H5DatasetPathAttr (ByteString, ByteString) deriving (Eq, Generic, FromJSON, ToJSON) instance Show (Hdf5Path sh e) where show (H5RootPath p) = "hdf5://" <> show p show (H5GroupPath name p) = unpack name <> "/" <> show p show (H5GroupAtPath pos p) = printf "@%d" pos <> "/" <> show p show (H5DatasetPath name) = unpack name show (H5DatasetPathAttr (key, value)) = printf "%s=%s" (unpack key) (unpack value) instance Arbitrary (Hdf5Path sh e) where {- HLINT ignore "Redundant <$>" -} arbitrary = oneof [ H5RootPath <$> arbitrary , H5GroupPath <$> pure "group" <*> arbitrary , H5GroupAtPath <$> arbitrary <*> arbitrary , H5DatasetPath <$> pure "dataset" , H5DatasetPathAttr <$> pure ("attibute", "value") ] hdf5p :: Hdf5Path sh e -> Hdf5Path sh e hdf5p = H5RootPath groupp :: ByteString -> Hdf5Path sh e -> Hdf5Path sh e groupp = H5GroupPath grouppat :: Int -> Hdf5Path sh e -> Hdf5Path sh e grouppat = H5GroupAtPath datasetp :: ByteString -> Hdf5Path sh e datasetp = H5DatasetPath datasetpattr :: (ByteString, ByteString) -> Hdf5Path sh e datasetpattr = H5DatasetPathAttr withHdf5Path' :: Location l => l -> Hdf5Path sh e -> (Dataset -> IO r) -> IO r withHdf5Path' loc (H5RootPath subpath) f = withHdf5Path' loc subpath f withHdf5Path' loc (H5GroupPath n subpath) f = withGroup (openGroup' loc n Nothing) $ \g -> withHdf5Path' g subpath f withHdf5Path' loc (H5GroupAtPath i subpath) f = withGroupAt loc i $ \g -> withHdf5Path' g subpath f withHdf5Path' loc (H5DatasetPath n) f = withDataset (openDataset' loc n Nothing) f withHdf5Path' loc (H5DatasetPathAttr (a, c)) f = withDataset (openDatasetWithAttr loc a c) f withHdf5Path :: FilePath -> Hdf5Path sh e -> (Dataset -> IO r) -> IO r withHdf5Path fn path f = withH5File fn $ \fn' -> withHdf5Path' fn' path f -- TODO -- http://book.realworldhaskell.org/read/io-case-study-a-library-for-searching-the-filesystem.html hkl-5.1.7/binoculars-ng/src/Hkl/Types.hs0000664000175000017500000000361715060017337017005 0ustar00piccapicca{-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE UnicodeSyntax #-} module Hkl.Types ( AbsDirPath , Beamline(..) , ConfigContent(..) , Key , SampleName , ScanFile(..) , ScanFilePath(..) , Scannumber(..) , Section , Timestamp(..) , Timescan0(..) , Trajectory , beamlineUpper , module X ) where import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Char (toUpper) import Data.String (IsString) import Data.Text (Text) import Path (Abs, File, Path) import Hkl.Lattice as X -- Common type AbsDirPath = FilePath type SampleName = String -- Beamline data Beamline = Diffabs | Sixs instance Show Beamline where show Diffabs = "diffabs" show Sixs = "sixs" beamlineUpper ∷ Beamline → String beamlineUpper b = [toUpper x | x ← show b] -- ConfigContent newtype ConfigContent = ConfigContent Text deriving (IsString, Show, FromJSON, ToJSON) -- Key -- newtype Key = Key Text -- deriving (IsString, Show, FromJSON, ToJSON) type Key = Text -- ScanFile data ScanFile l = ScanFile l Scannumber -- ScanFilePath data ScanFilePath = ScanFilePath (Path Abs File) Scannumber deriving Show -- Scannumber newtype Scannumber = Scannumber { unScannumber :: Int } deriving (Eq, Show, FromJSON, ToJSON) -- Section -- newtype Section = Section Text -- deriving (IsString, Show, FromJSON, ToJSON) type Section = Text -- Timestamp newtype Timestamp = Timestamp { unTimestamp :: Double } deriving Show -- Timescan0 newtype Timescan0 = Timescan0 { unTimescan0 :: Double } deriving Show -- Trajectory type Trajectory = [[Double]] hkl-5.1.7/binoculars-ng/src/Hkl/DArray.hs0000664000175000017500000000211114677222567017067 0ustar00piccapicca{- Copyright : Copyright (C) 2014-2019, 2022, 2023 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.DArray ( DArray(..) , peekDarrayEngine , peekDarrayString ) where import Foreign (Ptr, peekArray) import Foreign.C (CSize, CString) import Foreign.Storable (Storable (..)) import Hkl.C.Hkl data DArray a = DArray CSize [a] deriving Show peekDarrayEngine :: Ptr C'darray_engine -> IO (DArray (Ptr C'HklEngine)) peekDarrayEngine ptr = do (C'darray_engine items n _) <- peek ptr DArray n <$> peekArray (fromEnum n) items peekDarrayString :: Ptr C'darray_string -> IO (DArray CString) peekDarrayString ptr = do (C'darray_string items n _) <- peek ptr DArray n <$> peekArray (fromEnum n) items hkl-5.1.7/binoculars-ng/src/Hkl/Repa.hs0000664000175000017500000002301615133711150016556 0ustar00piccapicca{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Repa ( Array , DIM0 , DIM1 , DIM2 , DIM3 , F , Z(..) , Shape , extent , fromForeignPtr , inShape , ix1 , ix2 , ix3 , linearIndex , listOfShape , showShape , size , toForeignPtr , (:.)(..) ) where -- import Data.Array.Repa (Array, Shape, inShape) -- import Data.Array.Repa.Index (DIM0, DIM2, DIM3, Z (..), -- ix2, ix3, (:.) (..)) -- import Data.Array.Repa.Repr.ForeignPtr (F, fromForeignPtr) import Foreign.ForeignPtr import Foreign.Storable import GHC.Base (quotInt, remInt) import System.IO.Unsafe -- Source ----------------------------------------------------------------------- -- | Class of array representations that we can read elements from. class Source r e where -- Arrays with a representation tag, shape, and element type. -- Use one of the type tags like `D`, `U` and so on for @r@, -- one of `DIM1`, `DIM2` ... for @sh@. data Array r sh e -- | O(1). Take the extent (size) of an array. extent :: Shape sh => Array r sh e -> sh -- | O(1). Shape polymorphic indexing. index, unsafeIndex :: Shape sh => Array r sh e -> sh -> e {-# INLINE index #-} index arr ix = arr `linearIndex` toIndex (extent arr) ix {-# INLINE unsafeIndex #-} unsafeIndex arr ix = arr `unsafeLinearIndex` toIndex (extent arr) ix -- | O(1). Linear indexing into underlying, row-major, array representation. linearIndex, unsafeLinearIndex :: Shape sh => Array r sh e -> Int -> e {-# INLINE unsafeLinearIndex #-} unsafeLinearIndex = linearIndex -- | Ensure an array's data structure is fully evaluated. deepSeqArray :: Shape sh => Array r sh e -> b -> b -- | Read elements from a foreign buffer. instance Storable a => Source F a where data Array F sh a = AForeignPtr !sh !Int !(ForeignPtr a) linearIndex (AForeignPtr _ len fptr) ix | ix < len = unsafePerformIO $ withForeignPtr fptr $ \ptr -> peekElemOff ptr ix | otherwise = error "Repa: foreign array index out of bounds" {-# INLINE linearIndex #-} unsafeLinearIndex (AForeignPtr _ _ fptr) ix = unsafePerformIO $ withForeignPtr fptr $ \ptr -> peekElemOff ptr ix {-# INLINE unsafeLinearIndex #-} extent (AForeignPtr sh _ _) = sh {-# INLINE extent #-} deepSeqArray (AForeignPtr sh len fptr) x = sh `deepSeq` len `seq` fptr `seq` x {-# INLINE deepSeqArray #-} stage = "Data.Array.Repa.Index" data F -- | An index of dimension zero data Z = Z deriving (Show, Read, Eq, Ord) -- Conversions ---------------------------------------------------------------- -- | O(1). Wrap a `ForeignPtr` as an array. fromForeignPtr :: Shape sh => sh -> ForeignPtr e -> Array F sh e fromForeignPtr !sh !fptr = AForeignPtr sh (size sh) fptr {-# INLINE fromForeignPtr #-} -- | O(1). Unpack a `ForeignPtr` from an array. toForeignPtr :: Array F sh e -> ForeignPtr e toForeignPtr (AForeignPtr _ _ fptr) = fptr {-# INLINE toForeignPtr #-} class Eq sh => Shape sh where -- | Get the number of dimensions in a shape. rank :: sh -> Int -- | The shape of an array of size zero, with a particular dimensionality. zeroDim :: sh -- | The shape of an array with size one, with a particular dimensionality. unitDim :: sh -- | Compute the intersection of two shapes. intersectDim :: sh -> sh -> sh -- | Add the coordinates of two shapes componentwise addDim :: sh -> sh -> sh -- | Get the total number of elements in an array with this shape. size :: sh -> Int -- | Check whether this shape is small enough so that its flat -- indices an be represented as `Int`. If this returns `False` then your -- array is too big. Mostly used for writing QuickCheck tests. sizeIsValid :: sh -> Bool -- | Convert an index into its equivalent flat, linear, row-major version. toIndex :: sh -- ^ Shape of the array. -> sh -- ^ Index into the array. -> Int -- | Inverse of `toIndex`. fromIndex :: sh -- ^ Shape of the array. -> Int -- ^ Index into linear representation. -> sh -- | Check whether an index is within a given shape. inShapeRange :: sh -- ^ Start index for range. -> sh -- ^ Final index for range. -> sh -- ^ Index to check for. -> Bool -- | Convert a shape into its list of dimensions. listOfShape :: sh -> [Int] -- | Convert a list of dimensions to a shape shapeOfList :: [Int] -> sh -- | Ensure that a shape is completely evaluated. infixr 0 `deepSeq` deepSeq :: sh -> a -> a -- | Check whether an index is a part of a given shape. inShape :: forall sh . Shape sh => sh -- ^ Shape of the array. -> sh -- ^ Index. -> Bool {-# INLINE inShape #-} inShape = inShapeRange zeroDim -- | Nicely format a shape as a string showShape :: Shape sh => sh -> String showShape = foldr (\sh str -> str ++ " :. " ++ show sh) "Z" . listOfShape ix1 :: Int -> DIM1 ix1 x = Z :. x ix2 :: Int -> Int -> DIM2 ix2 y x = Z :. y :. x {-# INLINE ix2 #-} ix3 :: Int -> Int -> Int -> DIM3 ix3 z y x = Z :. z :. y :. x {-# INLINE ix3 #-} -- | Our index type, used for both shapes and indices. infixl 3 :. data tail :. head = !tail :. !head deriving (Show, Read, Eq, Ord) type DIM0 = Z type DIM1 = DIM0 :. Int type DIM2 = DIM1 :. Int type DIM3 = DIM2 :. Int -- Shape ---------------------------------------------------------------------- instance Shape Z where {-# INLINE [1] rank #-} rank _ = 0 {-# INLINE [1] zeroDim #-} zeroDim = Z {-# INLINE [1] unitDim #-} unitDim = Z {-# INLINE [1] intersectDim #-} intersectDim _ _ = Z {-# INLINE [1] addDim #-} addDim _ _ = Z {-# INLINE [1] size #-} size _ = 1 {-# INLINE [1] sizeIsValid #-} sizeIsValid _ = True {-# INLINE [1] toIndex #-} toIndex _ _ = 0 {-# INLINE [1] fromIndex #-} fromIndex _ _ = Z {-# INLINE [1] inShapeRange #-} inShapeRange Z Z Z = True {-# NOINLINE listOfShape #-} listOfShape _ = [] {-# NOINLINE shapeOfList #-} shapeOfList [] = Z shapeOfList _ = error $ stage ++ ".fromList: non-empty list when converting to Z." {-# INLINE deepSeq #-} deepSeq Z x = x instance Shape sh => Shape (sh :. Int) where {-# INLINE [1] rank #-} rank (sh :. _) = rank sh + 1 {-# INLINE [1] zeroDim #-} zeroDim = zeroDim :. 0 {-# INLINE [1] unitDim #-} unitDim = unitDim :. 1 {-# INLINE [1] intersectDim #-} intersectDim (sh1 :. n1) (sh2 :. n2) = intersectDim sh1 sh2 :. min n1 n2 {-# INLINE [1] addDim #-} addDim (sh1 :. n1) (sh2 :. n2) = addDim sh1 sh2 :. (n1 + n2) {-# INLINE [1] size #-} size (sh1 :. n) = size sh1 * n {-# INLINE [1] sizeIsValid #-} sizeIsValid (sh1 :. n) | size sh1 > 0 = n <= maxBound `div` size sh1 | otherwise = False {-# INLINE [1] toIndex #-} toIndex (sh1 :. sh2) (sh1' :. sh2') = toIndex sh1 sh1' * sh2 + sh2' {-# INLINE [1] fromIndex #-} fromIndex (ds :. d) n = fromIndex ds (n `quotInt` d) :. r where -- If we assume that the index is in range, there is no point -- in computing the remainder for the highest dimension since -- n < d must hold. This saves one remInt per element access which -- is quite a big deal. r | rank ds == 0 = n | otherwise = n `remInt` d {-# INLINE [1] inShapeRange #-} inShapeRange (zs :. z) (sh1 :. n1) (sh2 :. n2) = (n2 >= z) && (n2 < n1) && inShapeRange zs sh1 sh2 {-# NOINLINE listOfShape #-} listOfShape (sh :. n) = n : listOfShape sh {-# NOINLINE shapeOfList #-} shapeOfList xx = case xx of [] -> error $ stage ++ ".toList: empty list when converting to (_ :. Int)" x:xs -> shapeOfList xs :. x {-# INLINE deepSeq #-} deepSeq (sh :. n) x = deepSeq sh (n `seq` x) hkl-5.1.7/binoculars-ng/src/Hkl/C.hs0000664000175000017500000000100514677222567016070 0ustar00piccapicca{- Copyright : Copyright (C) 2014-2019, 2022, 2022 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.C ( module X ) where import Hkl.C.Binoculars as X import Hkl.C.Hkl as X hkl-5.1.7/binoculars-ng/src/Hkl/C/0000775000175000017500000000000015144640565015530 5ustar00piccapiccahkl-5.1.7/binoculars-ng/src/Hkl/C/Hkl.hsc0000664000175000017500000001463514677222567016766 0ustar00piccapicca#include "hkl.h" #include {-# LANGUAGE CPP #-} {-# LANGUAGE ForeignFunctionInterface #-} module Hkl.C.Hkl where import Foreign (FunPtr, Ptr, Storable(..), plusPtr) import Foreign.C (CInt(..), CUInt(..), CDouble(..), CSize(..), CString) -- darray_engine #starttype darray_engine #field item , Ptr (Ptr ) #field size , CSize #field alloc , CSize #stoptype -- darray_string #starttype darray_string #field item , Ptr CString #field size , CSize #field alloc , CSize #stoptype -- HklDetector #opaque_t HklDetector #integral_t HklDetectorType #num HKL_DETECTOR_TYPE_0D #ccall hkl_detector_factory_new, -> IO (Ptr ) #ccall hkl_detector_free, Ptr -> IO () -- HklEngine #opaque_t HklEngine #ccall hkl_engine_current_mode_get, Ptr -> IO CString #ccall hkl_engine_name_get, Ptr -> IO CString #ccall hkl_engine_parameter_get, Ptr -> CString -> Ptr () -> IO (Ptr ) #ccall hkl_engine_parameters_names_get, Ptr -> IO (Ptr ) #ccall hkl_engine_pseudo_axis_get, Ptr -> CString -> Ptr () -> IO (Ptr ) #ccall hkl_engine_pseudo_axis_names_get, Ptr -> IO (Ptr ) #ccall hkl_engine_pseudo_axis_values_set, Ptr -> Ptr CDouble -> CSize -> -> Ptr ()-> IO (Ptr ) -- HklEngineList #opaque_t HklEngineList #ccall hkl_engine_list_engine_get_by_name, Ptr -> CString -> Ptr () -> IO (Ptr ) #ccall hkl_engine_list_engines_get, Ptr -> IO (Ptr ) #ccall hkl_engine_list_free, Ptr -> IO () #ccall hkl_engine_list_get, Ptr -> IO () #ccall hkl_engine_list_init, Ptr -> Ptr -> Ptr -> Ptr -> IO () -- HklFactory #opaque_t HklFactory #ccall hkl_factory_create_new_engine_list, Ptr -> IO (Ptr ) #ccall hkl_factory_create_new_geometry, Ptr -> IO (Ptr ) #ccall hkl_factory_get_by_name, CString -> Ptr () -> IO (Ptr ) -- HklGeometry #opaque_t HklGeometry #globalvar hkl_geometry_operations_defaults, Ptr () #ccall hkl_geometry_add_holder, Ptr -> IO (Ptr ) #ccall hkl_geometry_axis_values_get, Ptr -> Ptr CDouble -> CSize -> -> IO () #ccall hkl_geometry_axis_values_set, Ptr -> Ptr CDouble -> CSize -> -> Ptr () -> IO () #ccall hkl_geometry_axis_names_get, Ptr -> IO (Ptr ) #ccall hkl_geometry_axis_get, Ptr -> CString -> Ptr () -> IO (Ptr ) #ccall hkl_geometry_detector_rotation_get_binding, Ptr -> Ptr -> IO (Ptr ) #ccall hkl_geometry_free, Ptr -> IO () #ccall hkl_geometry_name_get, Ptr -> IO CString #ccall hkl_geometry_new, Ptr -> Ptr (Ptr ()) -> IO (Ptr ) #ccall hkl_geometry_wavelength_get, Ptr -> -> IO CDouble #ccall hkl_geometry_wavelength_set, Ptr -> CDouble -> -> Ptr () -> IO () -- HklGeometryList #opaque_t HklGeometryList #opaque_t HklGeometryListItem #ccall hkl_geometry_list_free, Ptr -> IO () #ccall hkl_geometry_list_items_first_get, Ptr -> IO (Ptr ) #ccall hkl_geometry_list_item_geometry_get, Ptr -> IO (Ptr ) #ccall hkl_geometry_list_items_next_get, Ptr -> Ptr -> IO (Ptr ) -- HklHolder #opaque_t HklHolder #ccall hkl_holder_add_rotation, Ptr -> CString -> CDouble -> CDouble -> CDouble -> Ptr -> IO () #ccall hkl_holder_add_translation, Ptr -> CString -> CDouble -> CDouble -> CDouble -> Ptr -> IO () -- HklLattice #opaque_t HklLattice #ccall hkl_lattice_free, Ptr -> IO () #ccall hkl_lattice_new, CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> Ptr () -> IO (Ptr ) -- HklMatrix #opaque_t HklMatrix #ccall hkl_matrix_free, Ptr -> IO () #ccall hkl_matrix_get, Ptr -> CInt -> CInt -> IO CDouble -- HklParameter #opaque_t HklParameter #ccall hkl_parameter_free, Ptr -> IO () #ccall hkl_parameter_min_max_get , Ptr -> Ptr CDouble -> Ptr CDouble -> CInt -> IO () #ccall hkl_parameter_min_max_set , Ptr -> CDouble -> CDouble -> CInt -> Ptr () -> IO CInt #ccall hkl_parameter_name_get, Ptr -> IO CString #ccall hkl_parameter_new_copy, Ptr -> IO (Ptr ) #ccall hkl_parameter_value_get, Ptr -> CInt -> IO Double #ccall hkl_parameter_value_set, Ptr -> CDouble -> CInt -> Ptr () -> IO (CInt) -- HklQuaternion #opaque_t HklQuaternion #ccall hkl_quaternion_free, Ptr -> IO () #ccall hkl_quaternion_to_matrix_binding, Ptr -> IO (Ptr ) -- HklSample #opaque_t HklSample #ccall hkl_sample_new, CString -> IO (Ptr ) #ccall hkl_sample_lattice_set, Ptr -> Ptr -> IO () #ccall hkl_sample_free, Ptr -> IO () #ccall hkl_sample_ux_get, Ptr -> IO (Ptr ) #ccall hkl_sample_uy_get, Ptr -> IO (Ptr ) #ccall hkl_sample_uz_get, Ptr -> IO (Ptr ) #ccall hkl_sample_ux_set, Ptr -> Ptr -> Ptr () -> IO CInt #ccall hkl_sample_uy_set, Ptr -> Ptr -> Ptr () -> IO CInt #ccall hkl_sample_uz_set, Ptr -> Ptr -> Ptr () -> IO CInt -- HklUnit #opaque_t HklUnit #globalvar hkl_unit_angle_deg, #globalvar hkl_unit_angle_rad, #globalvar hkl_unit_length_nm, #globalvar hkl_unit_angle_mrad, #globalvar hkl_unit_length_mm, #globalvar hkl_unit_length_meter, -- HklUnitEnum #integral_t HklUnitEnum #num HKL_UNIT_DEFAULT #num HKL_UNIT_USER data HklUnitEnum = HklUnitEnum'Defaut | HklUnitEnum'User instance Enum HklUnitEnum where toEnum n | n == c'HKL_UNIT_DEFAULT = HklUnitEnum'Defaut | n == c'HKL_UNIT_USER = HklUnitEnum'User | otherwise = error "Non supported Unit type" fromEnum HklUnitEnum'Defaut = c'HKL_UNIT_DEFAULT fromEnum HklUnitEnum'User = c'HKL_UNIT_USER hkl-5.1.7/binoculars-ng/src/Hkl/C/Binoculars.hsc0000664000175000017500000005562515060017337020335 0ustar00piccapicca#include "hkl-binoculars.h" #include {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {- Copyright : Copyright (C) 2014-2025 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.C.Binoculars where import Data.Int (Int32) import Data.Word (Word16, Word32) import Foreign.C.Types (CBool, CDouble(..), CInt(..), CSize(..), CUInt(..), CPtrdiff) import Foreign.C.String (CString, withCString) import Foreign.ForeignPtr (ForeignPtr, newForeignPtr, withForeignPtr) import Foreign.Marshal.Array (withArrayLen) import Foreign.Ptr (FunPtr, Ptr) import System.IO.Unsafe (unsafePerformIO) import Hkl.C.Hkl import Hkl.Repa withForeignPtrs :: [ForeignPtr a] -> ([Ptr a] -> IO r) -> IO r withForeignPtrs [] f = f [] withForeignPtrs (fp:fps) f = withForeignPtr fp $ \p -> withForeignPtrs fps $ \ps -> f (p:ps) withCStrings :: [String] -> ([CString] -> IO a) -> IO a withCStrings = foldr (\v kk -> \k -> (withCString v) (\a -> kk (\as -> k (a:as)))) ($ []) ---------------- -- AxisLimits -- ---------------- #opaque_t HklBinocularsAxisLimits #ccall hkl_binoculars_axis_limits_free, \ Ptr -> IO () #ccall hkl_binoculars_axis_limits_new, \ Ptr CPtrdiff -> Ptr CPtrdiff -> IO (Ptr ) ---------- -- Cube -- ---------- #opaque_t HklBinocularsCube data Cube sh = Cube (ForeignPtr C'HklBinocularsCube) | EmptyCube deriving Show newCube :: Ptr C'HklBinocularsCube -> IO (Cube sh) newCube p = Cube <$> (newForeignPtr p'hkl_binoculars_cube_free p) instance Shape sh => Semigroup (Cube sh) where {-# INLINE (<>) #-} EmptyCube <> a = a a <> EmptyCube = a (Cube fpa) <> (Cube fpb) = unsafePerformIO $ do withForeignPtr fpa $ \pa -> withForeignPtr fpb $ \pb -> newCube =<< {-# SCC "c'hkl_binoculars_cube_new_merge'" #-} c'hkl_binoculars_cube_new_merge pa pb #ccall hkl_binoculars_cube_new_merge, \ Ptr -> Ptr -> IO (Ptr ) instance Shape sh => Monoid (Cube sh) where {-# INLINE mempty #-} mempty = EmptyCube cube'MergeAndSave :: String -> String -> [String] -> IO () cube'MergeAndSave output config fns = withCString output $ \c'output -> withCString config $ \ c'config -> withCStrings fns $ \cfns -> withArrayLen cfns $ \c'nfns c'cfns -> do c'hkl_binoculars_cube_merge_and_save_hdf5 c'output c'config c'cfns (toEnum c'nfns) #ccall hkl_binoculars_cube_add_space, Ptr -> Ptr -> IO () #ccall hkl_binoculars_cube_free, Ptr -> IO () #ccall hkl_binoculars_cube_merge_and_save_hdf5, CString -> CString -> Ptr CString -> CSize -> IO () #ccall hkl_binoculars_cube_new, CSize -> Ptr (Ptr ) -> IO (Ptr ) #ccall hkl_binoculars_cube_new_empty, IO (Ptr ) #ccall hkl_binoculars_cube_new_empty_from_cube, Ptr -> IO (Ptr ) #ccall hkl_binoculars_cube_new_from_file, CString -> IO (Ptr ) #ccall hkl_binoculars_cube_save_hdf5, CString -> CString -> Ptr -> IO CInt -------------- -- Detector -- -------------- #integral_t HklBinocularsDetectorEnum #num HKL_BINOCULARS_DETECTOR_IMXPAD_S140 #num HKL_BINOCULARS_DETECTOR_XPAD_FLAT_CORRECTED #num HKL_BINOCULARS_DETECTOR_IMXPAD_S70 #num HKL_BINOCULARS_DETECTOR_DECTRIS_EIGER1M #num HKL_BINOCULARS_DETECTOR_UFXC #num HKL_BINOCULARS_DETECTOR_MERLIN #num HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD #num HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD_512 #num HKL_BINOCULARS_DETECTOR_CIRPAD #num HKL_BINOCULARS_DETECTOR_RIGAKU_XSPA_1M data HklBinocularsDetectorEnum = HklBinocularsDetectorEnum'ImxpadS140 | HklBinocularsDetectorEnum'XpadFlatCorrected | HklBinocularsDetectorEnum'ImxpadS70 | HklBinocularsDetectorEnum'DectrisEiger1M | HklBinocularsDetectorEnum'Ufxc | HklBinocularsDetectorEnum'Merlin | HklBinocularsDetectorEnum'MerlinMedipix3rxQuad | HklBinocularsDetectorEnum'MerlinMedipix3rxQuad512 | HklBinocularsDetectorEnum'Cirpad | HklBinocularsDetectorEnum'RigakuXspa1M deriving (Bounded, Eq, Show) instance Enum HklBinocularsDetectorEnum where toEnum n | n == c'HKL_BINOCULARS_DETECTOR_IMXPAD_S140 = HklBinocularsDetectorEnum'ImxpadS140 | n == c'HKL_BINOCULARS_DETECTOR_XPAD_FLAT_CORRECTED = HklBinocularsDetectorEnum'XpadFlatCorrected | n == c'HKL_BINOCULARS_DETECTOR_IMXPAD_S70 = HklBinocularsDetectorEnum'ImxpadS70 | n == c'HKL_BINOCULARS_DETECTOR_DECTRIS_EIGER1M = HklBinocularsDetectorEnum'DectrisEiger1M | n == c'HKL_BINOCULARS_DETECTOR_UFXC = HklBinocularsDetectorEnum'Ufxc | n == c'HKL_BINOCULARS_DETECTOR_MERLIN = HklBinocularsDetectorEnum'Merlin | n == c'HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD = HklBinocularsDetectorEnum'MerlinMedipix3rxQuad | n == c'HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD_512 = HklBinocularsDetectorEnum'MerlinMedipix3rxQuad512 | n == c'HKL_BINOCULARS_DETECTOR_CIRPAD = HklBinocularsDetectorEnum'Cirpad | n == c'HKL_BINOCULARS_DETECTOR_RIGAKU_XSPA_1M = HklBinocularsDetectorEnum'RigakuXspa1M | otherwise = error ("Non supported Detector type" ++ show n) fromEnum HklBinocularsDetectorEnum'ImxpadS140 = c'HKL_BINOCULARS_DETECTOR_IMXPAD_S140 fromEnum HklBinocularsDetectorEnum'XpadFlatCorrected = c'HKL_BINOCULARS_DETECTOR_XPAD_FLAT_CORRECTED fromEnum HklBinocularsDetectorEnum'ImxpadS70 = c'HKL_BINOCULARS_DETECTOR_IMXPAD_S70 fromEnum HklBinocularsDetectorEnum'DectrisEiger1M = c'HKL_BINOCULARS_DETECTOR_DECTRIS_EIGER1M fromEnum HklBinocularsDetectorEnum'Ufxc = c'HKL_BINOCULARS_DETECTOR_UFXC fromEnum HklBinocularsDetectorEnum'Merlin = c'HKL_BINOCULARS_DETECTOR_MERLIN fromEnum HklBinocularsDetectorEnum'MerlinMedipix3rxQuad = c'HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD fromEnum HklBinocularsDetectorEnum'MerlinMedipix3rxQuad512 = c'HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD_512 fromEnum HklBinocularsDetectorEnum'Cirpad = c'HKL_BINOCULARS_DETECTOR_CIRPAD fromEnum HklBinocularsDetectorEnum'RigakuXspa1M = c'HKL_BINOCULARS_DETECTOR_RIGAKU_XSPA_1M #ccall hkl_binoculars_detector_2d_coordinates_get, -> IO (Ptr CDouble) #ccall hkl_binoculars_detector_2d_mask_get, -> IO (Ptr CBool) #ccall hkl_binoculars_detector_2d_mask_load, -> CString -> IO (Ptr CBool) #ccall hkl_binoculars_detector_2d_mask_or, -> Ptr CBool -> Ptr CBool -> IO (Ptr CBool) #ccall hkl_binoculars_detector_2d_name_get, -> IO CString #ccall hkl_binoculars_detector_2d_number_of_detectors, IO CInt #ccall hkl_binoculars_detector_2d_shape_get, -> Ptr CInt -> Ptr CInt -> IO () #ccall hkl_binoculars_detector_2d_sixs_calibration, -> Ptr CDouble -> CInt -> CInt -> CInt -> CInt -> CDouble -> CDouble -> CInt -> IO () #ccall hkl_binoculars_detector_2d_img_load_into, -> CString -> Ptr Int32 -> CInt -> IO () ----------- -- Space -- ----------- #integral_t HklBinocularsSurfaceOrientationEnum #num HKL_BINOCULARS_SURFACE_ORIENTATION_VERTICAL #num HKL_BINOCULARS_SURFACE_ORIENTATION_HORIZONTAL data HklBinocularsSurfaceOrientationEnum = HklBinocularsSurfaceOrientationEnum'Vertical | HklBinocularsSurfaceOrientationEnum'Horizontal deriving (Bounded, Eq, Show) instance Enum HklBinocularsSurfaceOrientationEnum where toEnum n | n == c'HKL_BINOCULARS_SURFACE_ORIENTATION_VERTICAL = HklBinocularsSurfaceOrientationEnum'Vertical | n == c'HKL_BINOCULARS_SURFACE_ORIENTATION_HORIZONTAL = HklBinocularsSurfaceOrientationEnum'Horizontal | otherwise = error "Non supported HklBinocularsSurfaceOrientationEnum value" fromEnum HklBinocularsSurfaceOrientationEnum'Vertical = c'HKL_BINOCULARS_SURFACE_ORIENTATION_VERTICAL fromEnum HklBinocularsSurfaceOrientationEnum'Horizontal = c'HKL_BINOCULARS_SURFACE_ORIENTATION_HORIZONTAL #integral_t HklBinocularsQCustomSubProjectionEnum #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_QZ #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TTH_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIX_QX #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIY_QY #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIZ_QZ #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_STEREO #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_DELTALAB_GAMMALAB_SAMPLEAXIS #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_X_Y_Z #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Y_Z_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_QPAR_QPER #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPARS_QPER_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_SAMPLEAXIS #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TTH #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QZ_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QY_QZ_TIMESTAMP #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_AZIMUTH #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESCAN0 #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SCANNUMBER #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_SCANNUMBER #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIX_Q_THETAX #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIY_Q_THETAY #num HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIZ_Q_THETAZ data HklBinocularsQCustomSubProjectionEnum = HklBinocularsQCustomSubProjectionEnum'QxQyQz | HklBinocularsQCustomSubProjectionEnum'QTthTimestamp | HklBinocularsQCustomSubProjectionEnum'QTimestamp | HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp | HklBinocularsQCustomSubProjectionEnum'QparQper | HklBinocularsQCustomSubProjectionEnum'QPhiQx | HklBinocularsQCustomSubProjectionEnum'QPhiQy | HklBinocularsQCustomSubProjectionEnum'QPhiQz | HklBinocularsQCustomSubProjectionEnum'QStereo | HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis | HklBinocularsQCustomSubProjectionEnum'XYZ | HklBinocularsQCustomSubProjectionEnum'YZTimestamp | HklBinocularsQCustomSubProjectionEnum'QQparQper | HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp | HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis | HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth | HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp | HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp | HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp | HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp | HklBinocularsQCustomSubProjectionEnum'TthAzimuth | HklBinocularsQCustomSubProjectionEnum'QTimescan0 | HklBinocularsQCustomSubProjectionEnum'QScannumber | HklBinocularsQCustomSubProjectionEnum'TthScannumber | HklBinocularsQCustomSubProjectionEnum'PhixQThetax | HklBinocularsQCustomSubProjectionEnum'PhiyQThetay | HklBinocularsQCustomSubProjectionEnum'PhizQThetaz deriving (Bounded, Eq, Show) instance Enum HklBinocularsQCustomSubProjectionEnum where toEnum n | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_QZ = HklBinocularsQCustomSubProjectionEnum'QxQyQz | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TTH_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QTthTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER = HklBinocularsQCustomSubProjectionEnum'QparQper | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIX_QX = HklBinocularsQCustomSubProjectionEnum'QPhiQx | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIY_QY = HklBinocularsQCustomSubProjectionEnum'QPhiQy | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIZ_QZ = HklBinocularsQCustomSubProjectionEnum'QPhiQz | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_STEREO = HklBinocularsQCustomSubProjectionEnum'QStereo | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_DELTALAB_GAMMALAB_SAMPLEAXIS = HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_X_Y_Z = HklBinocularsQCustomSubProjectionEnum'XYZ | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Y_Z_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'YZTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_QPAR_QPER = HklBinocularsQCustomSubProjectionEnum'QQparQper | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPARS_QPER_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_SAMPLEAXIS = HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TTH = HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QZ_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QY_QZ_TIMESTAMP = HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_AZIMUTH = HklBinocularsQCustomSubProjectionEnum'TthAzimuth | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESCAN0 = HklBinocularsQCustomSubProjectionEnum'QTimescan0 | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SCANNUMBER = HklBinocularsQCustomSubProjectionEnum'QScannumber | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_SCANNUMBER = HklBinocularsQCustomSubProjectionEnum'TthScannumber | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIX_Q_THETAX = HklBinocularsQCustomSubProjectionEnum'PhixQThetax | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIY_Q_THETAY = HklBinocularsQCustomSubProjectionEnum'PhiyQThetay | n == c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIZ_Q_THETAZ = HklBinocularsQCustomSubProjectionEnum'PhizQThetaz | otherwise = error "Non supported HklBinocularsQCustomSubProjectionEnum value" fromEnum HklBinocularsQCustomSubProjectionEnum'QxQyQz = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_QZ fromEnum HklBinocularsQCustomSubProjectionEnum'QTthTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TTH_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QparQperTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QparQper = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER fromEnum HklBinocularsQCustomSubProjectionEnum'QPhiQx = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIX_QX fromEnum HklBinocularsQCustomSubProjectionEnum'QPhiQy = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIY_QY fromEnum HklBinocularsQCustomSubProjectionEnum'QPhiQz = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIZ_QZ fromEnum HklBinocularsQCustomSubProjectionEnum'QStereo = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_STEREO fromEnum HklBinocularsQCustomSubProjectionEnum'DeltalabGammalabSampleaxis = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_DELTALAB_GAMMALAB_SAMPLEAXIS fromEnum HklBinocularsQCustomSubProjectionEnum'XYZ = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_X_Y_Z fromEnum HklBinocularsQCustomSubProjectionEnum'YZTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Y_Z_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QQparQper = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_QPAR_QPER fromEnum HklBinocularsQCustomSubProjectionEnum'QparsQperTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPARS_QPER_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QparQperSampleaxis = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_SAMPLEAXIS fromEnum HklBinocularsQCustomSubProjectionEnum'QSampleaxisTth = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TTH fromEnum HklBinocularsQCustomSubProjectionEnum'QSampleaxisTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QxQyTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QxQzTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QZ_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'QyQzTimestamp = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QY_QZ_TIMESTAMP fromEnum HklBinocularsQCustomSubProjectionEnum'TthAzimuth = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_AZIMUTH fromEnum HklBinocularsQCustomSubProjectionEnum'QTimescan0 = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESCAN0 fromEnum HklBinocularsQCustomSubProjectionEnum'QScannumber = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SCANNUMBER fromEnum HklBinocularsQCustomSubProjectionEnum'TthScannumber = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_SCANNUMBER fromEnum HklBinocularsQCustomSubProjectionEnum'PhixQThetax = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIX_Q_THETAX fromEnum HklBinocularsQCustomSubProjectionEnum'PhiyQThetay = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIY_Q_THETAY fromEnum HklBinocularsQCustomSubProjectionEnum'PhizQThetaz = c'HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIZ_Q_THETAZ #opaque_t HklBinocularsSpace #ccall hkl_binoculars_space_new, \ CSize -> CSize -> IO (Ptr ) #ccall hkl_binoculars_space_free, \ Ptr -> IO () type C'ProjectionTypeAngles t = Ptr C'HklBinocularsSpace -- HklBinocularsSpace *self -> Ptr C'HklGeometry -- const HklGeometry *geometry -> Ptr t -- const uint16_t *image -> CSize -- size_t n_pixels -> CDouble -- double weight -> Ptr Double -- const double *pixels_coordinates -> CSize -- int32_t pixels_coordinates_ndim -> Ptr CSize -- const int32_t *pixels_coordinates_dims -> Ptr Double -- const double *resolutions -> CSize -- size_t n_resolutions -> Ptr CBool -- const uint8_t *mask -> Ptr (Ptr C'HklBinocularsAxisLimits) -- const HklBinocularsAxisLimits -> CSize -- size_t n_limits -> CString -- const char *sample_axis -> IO () foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_angles_double" \ c'hkl_binoculars_space_angles_double :: C'ProjectionTypeAngles Double foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_angles_int32_t" \ c'hkl_binoculars_space_angles_int32_t :: C'ProjectionTypeAngles Int32 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_angles_uint16_t" \ c'hkl_binoculars_space_angles_uint16_t :: C'ProjectionTypeAngles Word16 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_angles_uint32_t" \ c'hkl_binoculars_space_angles_uint32_t :: C'ProjectionTypeAngles Word32 type C'ProjectionTypeQCustom t = Ptr C'HklBinocularsSpace -- HklBinocularsSpace *self -> Ptr C'HklGeometry -- const HklGeometry *geometry -> Ptr t -- const uint16_t *image -> CSize -- size_t n_pixels -> CDouble -- double weight -> Ptr Double -- const double *pixels_coordinates -> CSize -- int32_t pixels_coordinates_ndim -> Ptr CSize -- const int32_t *pixels_coordinates_dims -> Ptr Double -- const double *resolutions -> CSize -- size_t n_resolutions -> Ptr CBool -- const uint8_t *mask -> C'HklBinocularsSurfaceOrientationEnum -- surface orientation -> Ptr (Ptr C'HklBinocularsAxisLimits) -- const HklBinocularsAxisLimits -> CSize -- size_t n_limits -> CDouble -- double timestamp -> CDouble -- double timescan0 -> CInt -- int scannumber -> C'HklBinocularsQCustomSubProjectionEnum -- int subprojection -> CDouble -- uqx -> CDouble -- uqy -> CDouble -- uqz -> CString -- const char *sample_axis -> CInt -- int do_polarization_correction -> IO () foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_qcustom_double" \ c'hkl_binoculars_space_qcustom_double :: C'ProjectionTypeQCustom Double foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_qcustom_int32_t" \ c'hkl_binoculars_space_qcustom_int32_t :: C'ProjectionTypeQCustom Int32 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_qcustom_uint16_t" \ c'hkl_binoculars_space_qcustom_uint16_t :: C'ProjectionTypeQCustom Word16 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_qcustom_uint32_t" \ c'hkl_binoculars_space_qcustom_uint32_t :: C'ProjectionTypeQCustom Word32 type C'ProjectionTypeHkl t = Ptr C'HklBinocularsSpace -- HklBinocularsSpace *self -> Ptr C'HklGeometry -- const HklGeometry *geometry -> Ptr C'HklSample -- const HklSample *sample -> Ptr t -- const *image -> CSize -- size_t n_pixels -> CDouble -- double weight -> Ptr Double -- const double *pixels_coordinates -> CSize -- size_t pixels_coordinates_ndim -> Ptr CSize -- const int32_t *pixels_coordinates_dims -> Ptr Double -- const double *resolutions -> CSize -- size_t n_resolutions -> Ptr CBool -- const uint8_t *mask -> Ptr (Ptr C'HklBinocularsAxisLimits) -- const HklBinocularsAxisLimits -> CSize -- size_t n_limits -> CInt -- int do_polarization_correction -> IO () foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_hkl_double" \ c'hkl_binoculars_space_hkl_double :: C'ProjectionTypeHkl Double foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_hkl_int32_t" \ c'hkl_binoculars_space_hkl_int32_t :: C'ProjectionTypeHkl Int32 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_hkl_uint16_t" \ c'hkl_binoculars_space_hkl_uint16_t :: C'ProjectionTypeHkl Word16 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_hkl_uint32_t" \ c'hkl_binoculars_space_hkl_uint32_t :: C'ProjectionTypeHkl Word32 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_test_double" \ c'hkl_binoculars_space_test_double :: C'ProjectionTypeHkl Double foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_test_int32_t" \ c'hkl_binoculars_space_test_int32_t :: C'ProjectionTypeHkl Int32 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_test_uint16_t" \ c'hkl_binoculars_space_test_uint16_t :: C'ProjectionTypeHkl Word16 foreign import ccall unsafe "hkl-binoculars.h hkl_binoculars_space_test_uint32_t" \ c'hkl_binoculars_space_test_uint32_t :: C'ProjectionTypeHkl Word32 hkl-5.1.7/binoculars-ng/src/Hkl/Engine.hs0000664000175000017500000001670614677222567017131 0ustar00piccapiccamodule Hkl.Engine ( Engine(..) , Mode(..) , enginesTrajectoryPipe , fromToPipe , engineName , peekEngine ) where import Control.Monad (forM_, forever) import Foreign (Ptr, nullPtr) import Foreign.C (CString, peekCString) import Numeric.LinearAlgebra (Vector, toList) import Pipes (Pipe, Producer, await, yield) import Hkl.C.Hkl import Hkl.DArray import Hkl.Parameter ------------ -- Engine -- ------------ data Mode = Mode String -- name [Parameter] -- parameters of the @Mode@ deriving (Show) data Engine = Engine String -- name [Parameter] -- pseudo axes values of the @Engine@ Mode -- current Mode deriving (Show) engineName :: Engine -> String engineName (Engine name _ _) = name peekMode :: Ptr C'HklEngine -> IO Mode peekMode e = do name <- c'hkl_engine_current_mode_get e >>= peekCString (DArray _ ns) <- peekDarrayString =<< c'hkl_engine_parameters_names_get e parameters <- mapM f ns return (Mode name parameters) where f n = c'hkl_engine_parameter_get e n nullPtr >>= peekParameter peekEngine :: Ptr C'HklEngine -> IO Engine peekEngine e = do name <- peekCString =<< c'hkl_engine_name_get e ps <- enginePseudoAxesGet e mode <- peekMode e return (Engine name ps mode) -- engineNameGet :: Ptr HklEngine -> IO String -- engineNameGet engine = c'hkl_engine_name_get engine >>= peekCString -- enginePseudoAxisNamesGet :: Ptr HklEngine -> IO [String] -- enginePseudoAxisNamesGet e = enginePseudoAxisNamesGet' e >>= mapM peekCString enginePseudoAxisGet :: Ptr C'HklEngine -> CString -> IO Parameter enginePseudoAxisGet e n = c'hkl_engine_pseudo_axis_get e n nullPtr >>= peekParameter enginePseudoAxesGet :: Ptr C'HklEngine -> IO [Parameter] enginePseudoAxesGet ptr = do (DArray _ ns) <- peekDarrayString =<< c'hkl_engine_pseudo_axis_names_get ptr mapM (enginePseudoAxisGet ptr) ns engineSetValues :: Engine -> Vector Double -> Engine engineSetValues (Engine name ps mode) vs = Engine name nps mode where nps = zipWith set ps (toList vs) set (Parameter n _ range) newValue = Parameter n newValue range fromToPipe :: Int -> Vector Double -> Vector Double -> Producer (Vector Double) IO () fromToPipe n from to = forM_ [0..n-1] $ \i -> yield $ vs i where vs i = from + step * fromIntegral i step = (to - from) / (fromIntegral n - 1) enginesTrajectoryPipe :: Engine -> Pipe (Vector Double) Engine IO () enginesTrajectoryPipe e = forever $ await >>= yield . engineSetValues e ---------------- -- EngineList -- ---------------- -- withEngineList :: Factory -> (Ptr C'HklEngineList -> IO b) -> IO b -- withEngineList f func = do -- fptr <- newEngineList f -- withForeignPtr fptr func -- newEngineList :: Factory -> IO (ForeignPtr C'HklEngineList) -- newEngineList f = newFactory f -- >>= c'hkl_factory_create_new_engine_list -- >>= newForeignPtr p'hkl_engine_list_free -- engineListEnginesGet :: Ptr C'HklEngineList -> IO [Engine] -- engineListEnginesGet e = do -- (DArray n items) <- peek'darray_engine =<< c'hkl_engine_list_engines_get e -- mapM peekEngine items -- Engine -- solve' :: Ptr C'HklEngine -> Engine -> IO (ForeignPtr C'HklGeometryList) -- solve' engine (Engine _ ps _) = do -- let positions = [v | (Parameter _ v _) <- ps] -- let n = toEnum (length positions) -- withArray positions $ \values -> -- c'hkl_engine_pseudo_axis_values_set engine values n unit nullPtr -- >>= newForeignPtr p'hkl_geometry_list_free -- solve :: Geometry -> Detector a sh -> Sample -> Engine -> IO [Ptr C'HklGeometry] -- solve g@(Geometry f _ _ _) d s e@(Engine name _ _) = -- withSample s $ \sample -> -- withDetector d $ \detector -> -- withGeometry g $ \geometry -> -- withEngineList f $ \engines -> -- withCString name $ \cname -> do -- c'hkl_engine_list_init engines geometry detector sample -- engine <- c'hkl_engine_list_engine_get_by_name engines cname nullPtr -- solve' engine e >>= peekHklGeometryList -- solveTraj :: Geometry -> Detector a sh -> Sample -> [Engine] -> IO [Geometry] -- solveTraj g@(Geometry f _ _ _) d s es = do -- let name = engineName (head es) -- withSample s $ \sample -> -- withDetector d $ \detector -> -- withGeometry g $ \geometry -> -- withEngineList f $ \engines -> -- withCString name $ \cname -> do -- c'hkl_engine_list_init engines geometry detector sample -- engine <- c'hkl_engine_list_engine_get_by_name engines cname nullPtr -- mapM (solve' engine >=> getSolution0) es -- Pipe -- data Diffractometer = Diffractometer { difEngineList :: ForeignPtr C'HklEngineList -- , difGeometry :: ForeignPtr C'HklGeometry -- , difDetector :: ForeignPtr C'HklDetector -- , difSample :: ForeignPtr C'HklSample -- } -- deriving (Show) -- withDiffractometer :: Diffractometer -> (Ptr C'HklEngineList -> IO b) -> IO b -- withDiffractometer d fun = do -- let f_engines = difEngineList d -- withForeignPtr f_engines fun -- newDiffractometer :: Geometry -> Detector a sh -> Sample -> IO Diffractometer -- newDiffractometer g@(Geometry f _ _ _) d s = do -- f_engines <- newEngineList f -- f_geometry <- newGeometry g -- f_detector <- newDetector d -- f_sample <- newSample s -- withForeignPtr f_sample $ \sample -> -- withForeignPtr f_detector $ \detector -> -- withForeignPtr f_geometry $ \geometry -> -- withForeignPtr f_engines $ \engines -> do -- c'hkl_engine_list_init engines geometry detector sample -- return $ Diffractometer { difEngineList = f_engines -- , difGeometry = f_geometry -- , difDetector = f_detector -- , difSample = f_sample -- } -- computePipe :: Detector a sh -> Sample -> Pipe Geometry [Engine] IO () -- computePipe d s = forever $ do -- g <- await -- e <- lift $ compute g d s -- yield e -- solveTrajPipe :: Geometry -> Detector a sh -> Sample -> Pipe Engine Geometry IO () -- solveTrajPipe g d s = do -- dif <- lift $ newDiffractometer g d s -- solveTrajPipe' dif -- solveTrajPipe' :: Diffractometer -> Pipe Engine Geometry IO () -- solveTrajPipe' dif = flip evalStateT dif $ forever $ do -- -- Inside here we are using `StateT Diffractometer (Pipe Engine Geometry IO ()) r` -- e <- lift await -- dif_ <- get -- let name = engineName e -- solutions <- lift . lift $ withDiffractometer dif_ $ \engines -> -- withCString name $ \cname -> do -- engine <- c_hkl_engine_list_engine_get_by_name engines cname nullPtr -- solve' engine e >>= getSolution0 -- put dif_ -- lift $ yield solutions -- compute :: Geometry -> Detector a sh -> Sample -> IO [Engine] -- compute g@(Geometry f _ _ _) d s = -- withSample s $ \sample -> -- withDetector d $ \detector -> -- withGeometry g $ \geometry -> -- withEngineList f $ \engines -> do -- c_hkl_engine_list_init engines geometry detector sample -- c_hkl_engine_list_get engines -- engineListEnginesGet engines hkl-5.1.7/binoculars-ng/src/Hkl/Exception.hs0000664000175000017500000000461415133711150017630 0ustar00piccapicca{-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} module Hkl.Exception where import Control.Exception (Exception (..)) import Data.ByteString.Char8 (ByteString) import Data.Text (Text) import Data.Typeable (Typeable) import Path (Abs, Dir, Path) import Hkl.Types data HklDetectorException = MaskShapeNotcompatible Text | NoDefaultMask | MaskInternalError deriving (Show, Typeable) instance Exception HklDetectorException data HklBinocularsException = WrongAttenuation Text Int Double deriving (Show, Typeable) instance Exception HklBinocularsException data HklBinocularsProjectionsException = SaveCube'Failed | SaveCube'IsEmpty deriving (Show, Typeable) instance Exception HklBinocularsProjectionsException data HklBinocularsProjectionsQCustomException = MissingAttenuationCoefficient | MissingInputRange deriving (Show, Typeable) instance Exception HklBinocularsProjectionsQCustomException data HklBinocularsConfigException = NoDataFilesUnderTheGivenDirectory (Path Abs Dir) | ResolutionNotCompatibleWithProjectionNbOfCoordinates [Double] Int deriving (Show, Typeable) instance Exception HklBinocularsConfigException data HklDataSourceException = CanNotOpenDataSource'Double'Ini Section Key | CanNotOpenDataSource'Or HklDataSourceException HklDataSourceException | HklDataSourceException'HklH5Exception HklH5Exception | HklDataSourceException'NoRemainingDataPath [String] deriving (Show, Typeable) instance Exception HklDataSourceException data HklH5Exception = CanNotFindDatasetWithAttributContent ByteString ByteString | CanNotOpenDataset ByteString | CanNotOpenGroup ByteString | CanNotOpenGroupAt ByteString Int | CanNotOpenFile ByteString | CanNotOpenH5Or HklH5Exception HklH5Exception | ContainNanValue deriving (Show, Typeable) instance Exception HklH5Exception where toException = toException . HklDataSourceException'HklH5Exception -- cast up through the Parent type fromException se = case fromException se of Just (HklDataSourceException'HklH5Exception c) -> Just c _ -> Nothing hkl-5.1.7/binoculars-ng/src/Hkl/Sample.hs0000664000175000017500000000334114677222567017134 0ustar00piccapicca{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GADTs #-} module Hkl.Sample ( Sample(..) , newSample , withSample ) where import Control.Monad (void) import Data.Aeson (FromJSON, ToJSON) import Foreign (ForeignPtr, Ptr, newForeignPtr, nullPtr, withForeignPtr) import Foreign.C (withCString) import GHC.Generics (Generic) import Hkl.C.Hkl import Hkl.Lattice import Hkl.Parameter import Hkl.Types -- Sample data Sample = Sample { sampleName :: SampleName , sampleLattice :: Lattice , sampleUx :: Parameter , sampleUy :: Parameter , sampleUz :: Parameter } deriving (Eq, FromJSON, Generic, Show, ToJSON) withSample :: Sample -> (Ptr C'HklSample -> IO r) -> IO r withSample s fun = do fptr <- newSample s withForeignPtr fptr fun newSample :: Sample -> IO (ForeignPtr C'HklSample) newSample (Sample name l ux uy uz) = withCString name $ \cname -> do sample <- c'hkl_sample_new cname withLattice l $ \lattice -> do c'hkl_sample_lattice_set sample lattice go sample ux c'hkl_sample_ux_get c'hkl_sample_ux_set go sample uy c'hkl_sample_uy_get c'hkl_sample_uy_set go sample uz c'hkl_sample_uz_get c'hkl_sample_uz_set newForeignPtr p'hkl_sample_free sample where go s p getter setter = do fptr <- copyParameter =<< getter s withForeignPtr fptr $ \ptr -> do pokeParameter ptr p void $ setter s ptr nullPtr hkl-5.1.7/binoculars-ng/src/Hkl/HKD.hs0000664000175000017500000000150215133711150016271 0ustar00piccapicca{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- Copyright : Copyright (C) 2014-2023 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.HKD ( HKD ) where import Data.Functor.Identity (Identity) -- "Higher-Kinded Data" type family HKD f a where HKD Identity a = a HKD f a = f a hkl-5.1.7/binoculars-ng/src/Hkl/Binoculars.hs0000664000175000017500000000126214677222567020014 0ustar00piccapicca{- Copyright : Copyright (C) 2014-2020, 2022, 2022, 2023 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Binoculars ( module X ) where import Hkl.Binoculars.Command as X import Hkl.Binoculars.Common as X import Hkl.Binoculars.Config as X import Hkl.Binoculars.Pipes as X import Hkl.Binoculars.Projections as X hkl-5.1.7/binoculars-ng/src/Hkl/Image.hs0000664000175000017500000000767615143645056016743 0ustar00piccapicca{-# LANGUAGE BangPatterns #-} {-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE UnicodeSyntax #-} module Hkl.Image ( Image(..) , filterSumImage , readImgInBuffer ) where import Data.Int (Int32) import Data.Vector.Storable.Mutable (IOVector, Storable, length, unsafeRead, unsafeWith) import Data.Word (Word16, Word32) import Foreign.C.String (withCString) import System.IO.Unsafe (unsafePerformIO) import Hkl.C.Binoculars import Hkl.Detector import Hkl.Repa #if MIN_VERSION_base(4, 20, 0) import Prelude hiding (foldl') #endif data Image = ImageDouble (IOVector Double) | ImageInt32 (IOVector Int32) | ImageWord16 (IOVector Word16) | ImageWord32 (IOVector Word32) instance Show Image where show (ImageDouble _) = "ImageDouble" show (ImageInt32 _) = "ImageInt32" show (ImageWord16 _) = "ImageWord16" show (ImageWord32 _) = "ImageWord32" -- -- | /O(n)/ Monadic fold with strict accumulator (action applied to each element and its index). -- -- -- -- @since 0.12.3.0 -- ifoldM' :: (PrimMonad m, Data.Vector.Generic.Mutable.MVector v a) => (b -> Int -> a -> m b) -> b -> v (PrimState m) a -> m b -- {-# INLINE ifoldM' #-} -- ifoldM' f b0 v = loop 0 b0 -- where -- loop i !b | i >= n = return b -- | otherwise = do a <- unsafeRead v i -- loop (i + 1) =<< f b i a -- n = length v -- -- | /O(n)/ Pure left fold with strict accumulator (function applied to each element and its index). -- -- -- -- @since 0.12.3.0 -- ifoldl' :: (PrimMonad m, Data.Vector.Generic.Mutable.MVector v a) => (b -> Int -> a -> b) -> b -> v (PrimState m) a -> m b -- {-# INLINE ifoldl' #-} -- ifoldl' f b0 v = stToPrim $ ifoldM' (\b i a -> return $ f b i a) b0 v -- -- | /O(n)/ Pure left fold with strict accumulator. -- -- -- -- @since 0.12.3.0 -- foldl' :: (PrimMonad m, Data.Vector.Generic.Mutable.MVector v a) => (b -> a -> b) -> b -> v (PrimState m) a -> m b -- {-# INLINE foldl' #-} -- foldl' f = ifoldl' (\b _ -> f b) -- | /O(n)/ Monadic fold with strict accumulator (action applied to each element and its index). -- -- @since 0.12.3.0 ifoldM' :: Storable a => (b -> Int -> a -> IO b) -> b -> IOVector a -> IO b {-# INLINE ifoldM' #-} ifoldM' f b0 v = loop 0 b0 where loop i !b | i >= n = return b | otherwise = do a <- unsafeRead v i loop (i + 1) =<< f b i a n = Data.Vector.Storable.Mutable.length v -- | /O(n)/ Pure left fold with strict accumulator (function applied to each element and its index). -- -- @since 0.12.3.0 ifoldl' :: Storable a => (b -> Int -> a -> b) -> b -> IOVector a -> IO b {-# INLINE ifoldl' #-} ifoldl' f = ifoldM' (\b i a -> return $ f b i a) -- | /O(n)/ Pure left fold with strict accumulator. -- -- @since 0.12.3.0 foldl' :: Storable a => (b -> a -> b) -> b -> IOVector a -> IO b {-# INLINE foldl' #-} foldl' f = ifoldl' (\b _ -> f b) sum' :: (Integral a, Storable a) => IOVector a -> Double sum' v = unsafePerformIO $ foldl' (\b a -> b + fromIntegral a) 0.0 v sumImage :: Image -> Double sumImage (ImageDouble v) = unsafePerformIO $ foldl' (+) 0.0 v sumImage (ImageInt32 v) = sum' v sumImage (ImageWord16 v) = sum' v sumImage (ImageWord32 v) = sum' v filterSumImage :: Maybe Double -> Image -> Bool filterSumImage mMax img = case mMax of Nothing -> True (Just m) -> sumImage img < m readImgInBuffer :: IOVector Int32 -> Detector Hkl DIM2 -> FilePath -> IO (IOVector Int32) readImgInBuffer vec (Detector2D n _ _) fp = unsafeWith vec $ \buf -> withCString fp $ \c'fp -> do c'hkl_binoculars_detector_2d_img_load_into (toEnum . fromEnum $ n) c'fp buf (toEnum (Data.Vector.Storable.Mutable.length vec) * 4) -- TODO avoid this hardcode return vec hkl-5.1.7/binoculars-ng/src/Hkl/Parameter.hs0000664000175000017500000000632414677222567017637 0ustar00piccapicca{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {- Copyright : Copyright (C) 2014-2020, 2022, 2023 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX License : GPL3+ Maintainer : Picca Frédéric-Emmanuel Stability : Experimental Portability: GHC only (not tested) -} module Hkl.Parameter ( Parameter(..) , Range(..) , copyParameter , peekParameter , pokeParameter ) where import Control.Monad (void) import Data.Aeson (FromJSON (..), ToJSON (..)) import Foreign (ForeignPtr, Ptr, newForeignPtr, nullPtr) import Foreign.C (CDouble (CDouble)) import Foreign.C.String (peekCString) import Foreign.Marshal.Alloc (alloca) import Foreign.Storable (peek) import GHC.Generics (Generic) import Hkl.C.Hkl -- Range data Range = Range Double -- minimum value Double -- maximum value deriving (Eq, FromJSON, Generic, Show, ToJSON) -- Parameter data Parameter = Parameter { parameterName :: String , parameterValue :: Double , parameterRange :: Range } deriving (Eq, FromJSON, Generic, Show, ToJSON) -- instance Storable Parameter where -- alignment _ = alignment C'HklParameter -- sizeOf _ = sizeOf C'HklParameter -- peek ptr = alloca $ \pmin -> -- alloca $ \pmax -> do -- cname <- c'hkl_parameter_name_get ptr -- name <- peekCString cname -- value <- c'hkl_parameter_value_get ptr unit -- c'hkl_parameter_min_max_get ptr pmin pmax unit -- min_ <- peek pmin -- max_ <- peek pmax -- return (Parameter name value (Range min_ max_)) -- poke ptr (Parameter _name value (Range min_ max_)) = do -- void $ c'hkl_parameter_value_set ptr (CDouble value) unit nullPtr -- void $ c'hkl_parameter_min_max_set ptr (CDouble min_) (CDouble max_) unit nullPtr peekParameter :: Ptr C'HklParameter -> IO Parameter peekParameter ptr = alloca $ \pmin -> alloca $ \pmax -> do cname <- c'hkl_parameter_name_get ptr name <- peekCString cname value <- c'hkl_parameter_value_get ptr c'HKL_UNIT_USER c'hkl_parameter_min_max_get ptr pmin pmax c'HKL_UNIT_USER (CDouble min_) <- peek pmin (CDouble max_) <- peek pmax return (Parameter name value (Range min_ max_)) pokeParameter :: Ptr C'HklParameter -> Parameter -> IO () pokeParameter ptr (Parameter _name value (Range min_ max_)) = do void $ c'hkl_parameter_value_set ptr (CDouble value) c'HKL_UNIT_USER nullPtr void $ c'hkl_parameter_min_max_set ptr (CDouble min_) (CDouble max_) c'HKL_UNIT_USER nullPtr copyParameter :: Ptr C'HklParameter -> IO (ForeignPtr C'HklParameter) copyParameter p = newForeignPtr p'hkl_parameter_free =<< c'hkl_parameter_new_copy p hkl-5.1.7/binoculars-ng/Makefile.in0000664000175000017500000016255615144640450016116 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = binoculars-ng$(EXEEXT) subdir = binoculars-ng ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = hkl.cabal CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am_binoculars_ng_OBJECTS = binoculars/hkl-binoculars.$(OBJEXT) \ binoculars/hkl-binoculars-detectors-2d.$(OBJEXT) \ binoculars/hkl-binoculars-geometry.$(OBJEXT) \ binoculars/hkl-binoculars-io-cnpy.$(OBJEXT) \ binoculars/hkl-binoculars-io-hdf5.$(OBJEXT) \ binoculars/hkl-binoculars-io-img.$(OBJEXT) \ $(top_builddir)/hkl/hkl-axis.$(OBJEXT) \ $(top_builddir)/hkl/hkl-geometry.$(OBJEXT) \ $(top_builddir)/hkl/hkl-interval.$(OBJEXT) \ $(top_builddir)/hkl/hkl-lattice.$(OBJEXT) \ $(top_builddir)/hkl/hkl-macros.$(OBJEXT) \ $(top_builddir)/hkl/hkl-matrix.$(OBJEXT) \ $(top_builddir)/hkl/hkl-parameter.$(OBJEXT) \ $(top_builddir)/hkl/hkl-quaternion.$(OBJEXT) \ $(top_builddir)/hkl/hkl-sample.$(OBJEXT) \ $(top_builddir)/hkl/hkl-source.$(OBJEXT) \ $(top_builddir)/hkl/hkl-unit.$(OBJEXT) \ $(top_builddir)/hkl/hkl-vector.$(OBJEXT) binoculars_ng_OBJECTS = $(am_binoculars_ng_OBJECTS) binoculars_ng_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = $(top_builddir)/hkl/$(DEPDIR)/hkl-axis.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-geometry.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-interval.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-lattice.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-macros.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-matrix.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-parameter.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-quaternion.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-sample.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-source.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-unit.Po \ $(top_builddir)/hkl/$(DEPDIR)/hkl-vector.Po \ binoculars/$(DEPDIR)/hkl-binoculars-detectors-2d.Po \ binoculars/$(DEPDIR)/hkl-binoculars-geometry.Po \ binoculars/$(DEPDIR)/hkl-binoculars-io-cnpy.Po \ binoculars/$(DEPDIR)/hkl-binoculars-io-hdf5.Po \ binoculars/$(DEPDIR)/hkl-binoculars-io-img.Po \ binoculars/$(DEPDIR)/hkl-binoculars.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(binoculars_ng_SOURCES) DIST_SOURCES = $(binoculars_ng_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ check recheck distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer-defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/hkl.cabal.in \ $(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = binoculars AM_CABALFLAGS = \ -fuseHklDev \ --extra-include-dirs=$(abs_top_srcdir) \ --extra-include-dirs=$(abs_top_srcdir)/binoculars-ng \ --extra-include-dirs=$(abs_top_srcdir)/binoculars-ng/binoculars \ --extra-include-dirs=$(abs_top_srcdir)/hkl \ --extra-include-dirs=$(abs_top_srcdir)/third-party \ --extra-lib-dirs=$(abs_top_builddir)/hkl/.libs \ --extra-lib-dirs=$(abs_top_builddir)/binoculars-ng/binoculars/.libs \ --offline binoculars_ng_SOURCES = \ app/Main.hs \ hkl.cabal \ src/Hkl.hs \ src/Hkl/Binoculars.hs \ src/Hkl/Binoculars/Command.hs \ src/Hkl/Binoculars/Common.hs \ src/Hkl/Binoculars/Config.hs \ src/Hkl/Binoculars/Pipes.hs \ src/Hkl/Binoculars/Projections.hs \ src/Hkl/Binoculars/Projections/Config.hs \ src/Hkl/Binoculars/Projections/Config/Common.hs \ src/Hkl/Binoculars/Projections/Config/Sample.hs \ src/Hkl/Binoculars/Projections/Angles.hs \ src/Hkl/Binoculars/Projections/Hkl.hs \ src/Hkl/Binoculars/Projections/QCustom.hs \ src/Hkl/Binoculars/Projections/Test.hs \ src/Hkl/C.hs \ src/Hkl/C/Binoculars.hsc \ src/Hkl/C/Hkl.hsc \ src/Hkl/DArray.hs \ src/Hkl/DataSource.hs \ src/Hkl/Detector.hs \ src/Hkl/Engine.hs \ src/Hkl/Exception.hs \ src/Hkl/Geometry.hs \ src/Hkl/H5.hs \ src/Hkl/HKD.hs \ src/Hkl/Image.hs \ src/Hkl/Lattice.hs \ src/Hkl/MyMatrix.hs \ src/Hkl/Orphan.hs \ src/Hkl/Parameter.hs \ src/Hkl/Pipes.hs \ src/Hkl/Repa.hs \ src/Hkl/Sample.hs \ src/Hkl/Types.hs \ src/Hkl/Utils.hs \ binoculars/hkl-binoculars.c \ binoculars/hkl-binoculars-detectors-2d.c \ binoculars/hkl-binoculars-geometry.c \ binoculars/hkl-binoculars-io-cnpy.c \ binoculars/hkl-binoculars-io-hdf5.c \ binoculars/hkl-binoculars-io-img.c \ $(top_srcdir)/hkl/hkl-axis.c \ $(top_srcdir)/hkl/hkl-geometry.c \ $(top_srcdir)/hkl/hkl-interval.c \ $(top_srcdir)/hkl/hkl-lattice.c \ $(top_srcdir)/hkl/hkl-macros.c \ $(top_srcdir)/hkl/hkl-matrix.c \ $(top_srcdir)/hkl/hkl-parameter.c \ $(top_srcdir)/hkl/hkl-quaternion.c \ $(top_srcdir)/hkl/hkl-sample.c \ $(top_srcdir)/hkl/hkl-source.c \ $(top_srcdir)/hkl/hkl-unit.c \ $(top_srcdir)/hkl/hkl-vector.c EXTRA_binoculars_ng_DEPENDENCIES = binoculars/lbhkl-binoculars.la CLEANFILES = \ cabal.project.local \ empty-config-file TESTS = hkl-test AM_TESTS_ENVIRONMENT = \ env GI_TYPELIB_PATH=$(top_builddir)/hkl DATADIR=$(srcdir) hkl_datadir=$(srcdir) \ $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la test_sources = \ data/test/config_ech6eiger.txt \ data/test/config_geometry_custom.ini \ data/test/config_sixs_ruche_parsing.ini \ test/BinocularsSpec.hs \ test/Spec.hs EXTRA_DIST = $(binoculars_ng_SOURCES) $(test_sources) ############### # local tests # ############### # RTS = +RTS -N4 -RTS RTS = RUN_LIBTOOL = $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la RUN = $(RUN_LIBTOOL) /usr/bin/time -v ./binoculars-ng $(RTS) RUN_DBG = $(RUN_LIBTOOL) gdb --args PROCESS = $(RUN) --debug process PROCESS_DBG = $(RUN_DBG) .libs/binoculars-ng process MERGE = $(RUN) --debug merge MERGE_DBG = $(RUN_DBG) ./binoculars-ng merge all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu binoculars-ng/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu binoculars-ng/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): hkl.cabal: $(top_builddir)/config.status $(srcdir)/hkl.cabal.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files clean-binPROGRAMS: $(am__rm_f) $(bin_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=) binoculars/$(am__dirstamp): @$(MKDIR_P) binoculars @: >>binoculars/$(am__dirstamp) binoculars/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) binoculars/$(DEPDIR) @: >>binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars.$(OBJEXT): binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars-detectors-2d.$(OBJEXT): \ binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars-geometry.$(OBJEXT): \ binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars-io-cnpy.$(OBJEXT): \ binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars-io-hdf5.$(OBJEXT): \ binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) binoculars/hkl-binoculars-io-img.$(OBJEXT): \ binoculars/$(am__dirstamp) \ binoculars/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/$(am__dirstamp): @$(MKDIR_P) $(top_builddir)/hkl @: >>$(top_builddir)/hkl/$(am__dirstamp) $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) $(top_builddir)/hkl/$(DEPDIR) @: >>$(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-axis.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-geometry.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-interval.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-lattice.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-macros.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-matrix.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-parameter.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-quaternion.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-sample.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-source.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-unit.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) $(top_builddir)/hkl/hkl-vector.$(OBJEXT): \ $(top_builddir)/hkl/$(am__dirstamp) \ $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f $(top_builddir)/hkl/*.$(OBJEXT) -rm -f binoculars/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-axis.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-geometry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-interval.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-lattice.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-macros.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-parameter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-quaternion.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-sample.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-source.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-unit.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@$(top_builddir)/hkl/$(DEPDIR)/hkl-vector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars-detectors-2d.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars-geometry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars-io-cnpy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars-io-hdf5.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars-io-img.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@binoculars/$(DEPDIR)/hkl-binoculars.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? hkl-test.log: hkl-test @p='hkl-test'; \ b='hkl-test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) -$(am__rm_f) $(top_builddir)/hkl/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) $(top_builddir)/hkl/$(am__dirstamp) -$(am__rm_f) binoculars/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) binoculars/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-recursive -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-axis.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-geometry.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-interval.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-lattice.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-macros.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-matrix.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-parameter.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-quaternion.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-sample.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-source.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-unit.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-vector.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-detectors-2d.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-geometry.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-cnpy.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-hdf5.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-img.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-axis.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-geometry.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-interval.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-lattice.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-macros.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-matrix.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-parameter.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-quaternion.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-sample.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-source.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-unit.Po -rm -f $(top_builddir)/hkl/$(DEPDIR)/hkl-vector.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-detectors-2d.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-geometry.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-cnpy.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-hdf5.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars-io-img.Po -rm -f binoculars/$(DEPDIR)/hkl-binoculars.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-TESTS check-am clean \ clean-binPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile binoculars-ng$(EXEEXT): $(binoculars_ng_SOURCES) @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file build $(AM_CABALFLAGS) $(CABALFLAGS) $@ $(LN_S) -f $$($(CABAL) \ --config-file=empty-config-file \ list-bin $@) $@ hkl-test$(EXEEXT): $(test_sources) $(binoculars_ng_SOURCES) @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file build --enable-tests $(AM_CABALFLAGS) $(CABALFLAGS) $@ $(LN_S) -f $$($(CABAL) \ --config-file=empty-config-file \ list-bin $@) $@ configure-cabal: @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file configure --enable-test $(AM_CABALFLAGS) $(CABALFALGS) clean-local: -cabal clean cristal: binoculars-ng $(PROCESS) /nfs/ruche/cristal-soleil/com-cristal/2019/Run5/99190273_Bouyanfif/PourFred/conf_mask.ini 64 diffabs: binoculars-ng # /nfs/ruche-diffabs/diffabs-soleil/com-diffabs/2024/Run5/2024-11-19 13, 14, 16, 17, 18, 19, 20 $(PROCESS) data/test/config_diffabs_ruche_cirpad.ini 26-30 $(PROCESS) data/test/config_diffabs_ruche_cirpad.ini 31-37 grades: binoculars-ng #sixs # $(PROCESS) data/test/config_grades_local_20231857.ini 356-390 # mars # $(PROCESS) data/test/config_grades_ruche_20232102.ini 73-82 $(PROCESS) data/test/config_grades_ruche_20232102.ini 100-111 $(PROCESS) data/test/config_grades_ruche_20232102.ini 129-138 $(PROCESS) data/test/config_grades_ruche_20232102.ini 158-167 $(PROCESS) data/test/config_grades_ruche_20232102.ini 186-195 $(PROCESS) data/test/config_grades_ruche_20232102.ini 207-216 $(PROCESS) data/test/config_grades_ruche_20232102.ini 228-237 $(PROCESS) data/test/config_grades_ruche_20232102.ini 246-255 $(PROCESS) data/test/config_grades_ruche_20232102.ini 261-271 $(PROCESS) data/test/config_grades_ruche_20232102.ini 285-294 $(PROCESS) data/test/config_grades_ruche_20232102.ini 306-315 $(PROCESS) data/test/config_grades_ruche_20232102.ini 329-338 $(PROCESS) data/test/config_grades_ruche_20232102.ini 272 mars: binoculars-ng # $(PROCESS) data/test/config_mars_ruche_rel_flyscan.ini # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 173 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 153 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 132 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 105 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 78 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 75 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2022_Run1/20211749/binoculars/config_qxqyqz.ini 75 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2022_Run1/20211749/binoculars/config_qxqyqz.ini 145 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2024_Run1/HR_XRD_CX2/binoculars/config_qxqyqz.ini 473 # TODO, de simages ont un drole de pattern, il faut donc pouvoir supprimer des images dans un scan donné. # TODO, une idée pourrait être d'associer un masque spécifique à un point de scan. # $(MERGE) -o merge.hdf5 scan*.hdf5 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 73-82 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 100-111 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 129-138 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 158-167 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 186-195 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 207-216 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 228-237 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 246-255 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 261-271 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 285-294 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 306-315 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 329-338 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 272 $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2025/2025_Run3/commissioning_CX2/binoculars/config_q_sampleaxis_tth.ini 30-51 merge: binoculars-ng $(MERGE) -o merge.hdf5 *.hdf5 sixs: binoculars-ng # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2020/Run4/20200116_Jeridi/binoculars/config.cfg 496,546 # $(PROCESS) data/test/config_sixs_ruche_20231857.ini 356-390 # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2024/Run4/Leroy_20240307/binoculars/config_qindex.cfg 228-230 # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2024/Run4/Leroy_20240307/binoculars/config_qindex.cfg 228-237 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 53 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 55-72 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 73-84 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 97-112 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 113-128 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 161-172 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 161-172 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 457 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 458 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 459 # $(PROCESS) data/test/config_sixs_polarisation.ini 600-631 # $(PROCESS) data/test/config_sixs_polarisation.ini 631 # $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run4/Cheng-Long_20250900/binoculars/config_stereo.cfg 339 # $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run4/Cheng-Long_20250900/binoculars/config_stereo.cfg 340 # $(PROCESS) data/test/config_sixs_ruche_20241687.ini 46 # $(PROCESS) data/test/config_sixs_ruche_20241687_gisaxs.ini 94 # $(PROCESS) data/test/config_sixs_ruche_20241687.ini 95-99 $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run3/Coati_AgNi322/binoculars/config.cfg 377-390 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/binoculars-ng/hkl.cabal0000664000175000017500000001473215144640472015607 0ustar00piccapiccaname: hkl -- The package version. See the Haskell package versioning policy (PVP) -- for standards guiding when and how versions should be incremented. -- http://www.haskell.org/haskellwiki/Package_versioning_policy -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change version: 0.1.0.2 license: GPL-3 license-file: LICENSE author: Picca Frédéric-Emmanuel maintainer: picca@debian.org copyright: Synchrotron SOLEIL build-type: Simple cabal-version: >= 1.10 Data-Files: data/ghkl3.ui , data/gprof2dot.py , data/pseudo3.ui , data/3d3.ui Flag useHklDev Description: Use the current devel hkl library in the source tree Default: True Flag useThreaded Description: Use threading (some arch does not support this) Default: True library build-depends: aeson build-depends: async build-depends: attoparsec build-depends: base >= 4.6 build-depends: bindings-DSL build-depends: bytestring >= 0.10.0.2 build-depends: config-ini build-depends: containers build-depends: dimensional >= 0.10 build-depends: directory >= 1.3.0 build-depends: either build-depends: errors build-depends: exceptions build-depends: extra build-depends: filepath >= 1.3.0 build-depends: intervals build-depends: generic-random build-depends: hashable build-depends: hdf5 build-depends: hmatrix >= 0.17 build-depends: hmatrix-gsl >= 0.17 build-depends: ini build-depends: lens build-depends: monad-logger build-depends: monad-loops >= 0.4.2 build-depends: mtl build-depends: path build-depends: path-io build-depends: pipes >= 4.1.2 build-depends: pipes-safe >= 2.2.0 build-depends: QuickCheck build-depends: quickcheck-text build-depends: terminal-progress-bar build-depends: text build-depends: transformers >= 0.3 build-depends: unordered-containers build-depends: vector >= 0.10.0.1 c-sources: ./binoculars/hkl-binoculars.c c-sources: ./binoculars/hkl-binoculars-detectors-2d.c c-sources: ./binoculars/hkl-binoculars-geometry.c c-sources: ./binoculars/hkl-binoculars-io-cnpy.c c-sources: ./binoculars/hkl-binoculars-io-hdf5.c c-sources: ./binoculars/hkl-binoculars-io-img.c c-sources: ./../hkl/hkl-axis.c c-sources: ./../hkl/hkl-geometry.c c-sources: ./../hkl/hkl-interval.c c-sources: ./../hkl/hkl-lattice.c c-sources: ./../hkl/hkl-macros.c c-sources: ./../hkl/hkl-matrix.c c-sources: ./../hkl/hkl-parameter.c c-sources: ./../hkl/hkl-quaternion.c c-sources: ./../hkl/hkl-sample.c c-sources: ./../hkl/hkl-source.c c-sources: ./../hkl/hkl-unit.c c-sources: ./../hkl/hkl-vector.c default-language: Haskell2010 exposed-modules: Hkl exposed-modules: Hkl.Binoculars exposed-modules: Hkl.Binoculars.Command exposed-modules: Hkl.Binoculars.Common exposed-modules: Hkl.Binoculars.Config exposed-modules: Hkl.Binoculars.Pipes exposed-modules: Hkl.Binoculars.Projections exposed-modules: Hkl.Binoculars.Projections.Angles exposed-modules: Hkl.Binoculars.Projections.Config exposed-modules: Hkl.Binoculars.Projections.Config.Common exposed-modules: Hkl.Binoculars.Projections.Config.Sample exposed-modules: Hkl.Binoculars.Projections.Hkl exposed-modules: Hkl.Binoculars.Projections.QCustom exposed-modules: Hkl.Binoculars.Projections.Test exposed-modules: Hkl.C exposed-modules: Hkl.C.Binoculars exposed-modules: Hkl.C.Hkl exposed-modules: Hkl.DArray exposed-modules: Hkl.DataSource exposed-modules: Hkl.Detector exposed-modules: Hkl.Engine exposed-modules: Hkl.Exception exposed-modules: Hkl.Geometry exposed-modules: Hkl.H5 exposed-modules: Hkl.HKD exposed-modules: Hkl.Image exposed-modules: Hkl.Lattice exposed-modules: Hkl.MyMatrix exposed-modules: Hkl.Orphan exposed-modules: Hkl.Parameter exposed-modules: Hkl.Pipes exposed-modules: Hkl.Repa exposed-modules: Hkl.Sample exposed-modules: Hkl.Types exposed-modules: Hkl.Utils ghc-options: -g ghc-options: -Wall ghc-options: -Wincomplete-uni-patterns ghc-options: -Wincomplete-record-updates hs-source-dirs: ./src -- includes: binoculars/hkl-binoculars-config-private.h -- includes: binoculars/hkl-binoculars-cnpy-private.h -- includes: binoculars/hkl-binoculars.h -- includes: binoculars/hkl-binoculars-private.h other-modules: Paths_hkl if flag(useHklDev) extra-libraries: hkl -- extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl -- extra-libraries: hkl-binoculars executable binoculars-ng build-depends: base >= 4.6 build-depends: attoparsec build-depends: containers build-depends: dimensional >= 0.10 build-depends: exceptions build-depends: filepath >= 1.3.0 build-depends: hkl build-depends: monad-logger build-depends: monad-loops >= 0.4.2 build-depends: mtl build-depends: optparse-applicative build-depends: pipes >= 4.1.2 build-depends: text build-depends: transformers >= 0.3 build-depends: vector >= 0.10.0.1 default-language: Haskell2010 ghc-options: -g ghc-options: -rtsopts if flag(useThreaded) ghc-options: -threaded ghc-options: "-with-rtsopts=-N" ghc-options: -Wall if flag(useHklDev) extra-libraries: hkl extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl extra-libraries: hkl-binoculars main-is: ./app/Main.hs test-suite hkl-test build-depends: aeson build-depends: attoparsec build-depends: base >= 4.6 build-depends: config-ini build-depends: containers build-depends: unordered-containers build-depends: dimensional build-depends: hkl build-depends: hspec build-depends: hspec-attoparsec build-depends: ini build-depends: inspection-testing build-depends: intervals build-depends: monad-logger build-depends: path build-depends: temporary build-depends: text default-language: Haskell2010 ghc-options: -g ghc-options: -Wall ghc-options: -rtsopts if flag(useThreaded) ghc-options: -threaded ghc-options: "-with-rtsopts=-N" hs-source-dirs: ./test main-is: Spec.hs other-modules: BinocularsSpec other-modules: Paths_hkl type: exitcode-stdio-1.0 if flag(useHklDev) extra-libraries: hkl extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl extra-libraries: hkl-binoculars hkl-5.1.7/binoculars-ng/Makefile.am0000664000175000017500000002151115134116233016062 0ustar00piccapiccaSUBDIRS = binoculars AM_CABALFLAGS=\ -fuseHklDev \ --extra-include-dirs=$(abs_top_srcdir) \ --extra-include-dirs=$(abs_top_srcdir)/binoculars-ng \ --extra-include-dirs=$(abs_top_srcdir)/binoculars-ng/binoculars \ --extra-include-dirs=$(abs_top_srcdir)/hkl \ --extra-include-dirs=$(abs_top_srcdir)/third-party \ --extra-lib-dirs=$(abs_top_builddir)/hkl/.libs \ --extra-lib-dirs=$(abs_top_builddir)/binoculars-ng/binoculars/.libs \ --offline bin_PROGRAMS = binoculars-ng binoculars_ng_SOURCES=\ app/Main.hs \ hkl.cabal \ src/Hkl.hs \ src/Hkl/Binoculars.hs \ src/Hkl/Binoculars/Command.hs \ src/Hkl/Binoculars/Common.hs \ src/Hkl/Binoculars/Config.hs \ src/Hkl/Binoculars/Pipes.hs \ src/Hkl/Binoculars/Projections.hs \ src/Hkl/Binoculars/Projections/Config.hs \ src/Hkl/Binoculars/Projections/Config/Common.hs \ src/Hkl/Binoculars/Projections/Config/Sample.hs \ src/Hkl/Binoculars/Projections/Angles.hs \ src/Hkl/Binoculars/Projections/Hkl.hs \ src/Hkl/Binoculars/Projections/QCustom.hs \ src/Hkl/Binoculars/Projections/Test.hs \ src/Hkl/C.hs \ src/Hkl/C/Binoculars.hsc \ src/Hkl/C/Hkl.hsc \ src/Hkl/DArray.hs \ src/Hkl/DataSource.hs \ src/Hkl/Detector.hs \ src/Hkl/Engine.hs \ src/Hkl/Exception.hs \ src/Hkl/Geometry.hs \ src/Hkl/H5.hs \ src/Hkl/HKD.hs \ src/Hkl/Image.hs \ src/Hkl/Lattice.hs \ src/Hkl/MyMatrix.hs \ src/Hkl/Orphan.hs \ src/Hkl/Parameter.hs \ src/Hkl/Pipes.hs \ src/Hkl/Repa.hs \ src/Hkl/Sample.hs \ src/Hkl/Types.hs \ src/Hkl/Utils.hs \ binoculars/hkl-binoculars.c \ binoculars/hkl-binoculars-detectors-2d.c \ binoculars/hkl-binoculars-geometry.c \ binoculars/hkl-binoculars-io-cnpy.c \ binoculars/hkl-binoculars-io-hdf5.c \ binoculars/hkl-binoculars-io-img.c \ $(top_srcdir)/hkl/hkl-axis.c \ $(top_srcdir)/hkl/hkl-geometry.c \ $(top_srcdir)/hkl/hkl-interval.c \ $(top_srcdir)/hkl/hkl-lattice.c \ $(top_srcdir)/hkl/hkl-macros.c \ $(top_srcdir)/hkl/hkl-matrix.c \ $(top_srcdir)/hkl/hkl-parameter.c \ $(top_srcdir)/hkl/hkl-quaternion.c \ $(top_srcdir)/hkl/hkl-sample.c \ $(top_srcdir)/hkl/hkl-source.c \ $(top_srcdir)/hkl/hkl-unit.c \ $(top_srcdir)/hkl/hkl-vector.c binoculars-ng$(EXEEXT): $(binoculars_ng_SOURCES) @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file build $(AM_CABALFLAGS) $(CABALFLAGS) $@ $(LN_S) -f $$($(CABAL) \ --config-file=empty-config-file \ list-bin $@) $@ EXTRA_binoculars_ng_DEPENDENCIES=binoculars/lbhkl-binoculars.la CLEANFILES=\ cabal.project.local \ empty-config-file TESTS=hkl-test AM_TESTS_ENVIRONMENT = \ env GI_TYPELIB_PATH=$(top_builddir)/hkl DATADIR=$(srcdir) hkl_datadir=$(srcdir) \ $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la test_sources=\ data/test/config_ech6eiger.txt \ data/test/config_geometry_custom.ini \ data/test/config_sixs_ruche_parsing.ini \ test/BinocularsSpec.hs \ test/Spec.hs hkl-test$(EXEEXT): $(test_sources) $(binoculars_ng_SOURCES) @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file build --enable-tests $(AM_CABALFLAGS) $(CABALFLAGS) $@ $(LN_S) -f $$($(CABAL) \ --config-file=empty-config-file \ list-bin $@) $@ configure-cabal: @rm -f cabal.project.local touch empty-config-file $(CABAL) --config-file=empty-config-file configure --enable-test $(AM_CABALFLAGS) $(CABALFALGS) clean-local: -cabal clean EXTRA_DIST = $(binoculars_ng_SOURCES) $(test_sources) ############### # local tests # ############### # RTS = +RTS -N4 -RTS RTS = RUN_LIBTOOL = $(LIBTOOL) --mode=execute -dlopen $(top_builddir)/hkl/libhkl.la RUN = $(RUN_LIBTOOL) /usr/bin/time -v ./binoculars-ng $(RTS) RUN_DBG = $(RUN_LIBTOOL) gdb --args PROCESS = $(RUN) --debug process PROCESS_DBG=$(RUN_DBG) .libs/binoculars-ng process MERGE = $(RUN) --debug merge MERGE_DBG = $(RUN_DBG) ./binoculars-ng merge cristal: binoculars-ng $(PROCESS) /nfs/ruche/cristal-soleil/com-cristal/2019/Run5/99190273_Bouyanfif/PourFred/conf_mask.ini 64 diffabs: binoculars-ng # /nfs/ruche-diffabs/diffabs-soleil/com-diffabs/2024/Run5/2024-11-19 13, 14, 16, 17, 18, 19, 20 $(PROCESS) data/test/config_diffabs_ruche_cirpad.ini 26-30 $(PROCESS) data/test/config_diffabs_ruche_cirpad.ini 31-37 grades: binoculars-ng #sixs # $(PROCESS) data/test/config_grades_local_20231857.ini 356-390 # mars # $(PROCESS) data/test/config_grades_ruche_20232102.ini 73-82 $(PROCESS) data/test/config_grades_ruche_20232102.ini 100-111 $(PROCESS) data/test/config_grades_ruche_20232102.ini 129-138 $(PROCESS) data/test/config_grades_ruche_20232102.ini 158-167 $(PROCESS) data/test/config_grades_ruche_20232102.ini 186-195 $(PROCESS) data/test/config_grades_ruche_20232102.ini 207-216 $(PROCESS) data/test/config_grades_ruche_20232102.ini 228-237 $(PROCESS) data/test/config_grades_ruche_20232102.ini 246-255 $(PROCESS) data/test/config_grades_ruche_20232102.ini 261-271 $(PROCESS) data/test/config_grades_ruche_20232102.ini 285-294 $(PROCESS) data/test/config_grades_ruche_20232102.ini 306-315 $(PROCESS) data/test/config_grades_ruche_20232102.ini 329-338 $(PROCESS) data/test/config_grades_ruche_20232102.ini 272 mars: binoculars-ng # $(PROCESS) data/test/config_mars_ruche_rel_flyscan.ini # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 173 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 153 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 132 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 105 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 78 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2021_Run5/20191020/binoculars/config_qxqyqz.ini 75 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2022_Run1/20211749/binoculars/config_qxqyqz.ini 75 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2022_Run1/20211749/binoculars/config_qxqyqz.ini 145 # $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2024_Run1/HR_XRD_CX2/binoculars/config_qxqyqz.ini 473 # TODO, de simages ont un drole de pattern, il faut donc pouvoir supprimer des images dans un scan donné. # TODO, une idée pourrait être d'associer un masque spécifique à un point de scan. # $(MERGE) -o merge.hdf5 scan*.hdf5 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 73-82 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 100-111 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 129-138 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 158-167 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 186-195 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 207-216 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 228-237 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 246-255 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 261-271 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 285-294 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 306-315 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 329-338 # $(PROCESS) data/test/config_mars_ruche_20232102.ini 272 $(PROCESS) /nfs/ruche/mars-soleil/com-mars/2025/2025_Run3/commissioning_CX2/binoculars/config_q_sampleaxis_tth.ini 30-51 merge: binoculars-ng $(MERGE) -o merge.hdf5 *.hdf5 sixs: binoculars-ng # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2020/Run4/20200116_Jeridi/binoculars/config.cfg 496,546 # $(PROCESS) data/test/config_sixs_ruche_20231857.ini 356-390 # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2024/Run4/Leroy_20240307/binoculars/config_qindex.cfg 228-230 # $(PROCESS) /nfs/ruche-sixs/sixs-soleil/com-sixs/2024/Run4/Leroy_20240307/binoculars/config_qindex.cfg 228-237 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 53 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 55-72 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 73-84 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 97-112 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 113-128 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 161-172 # $(PROCESS) data/test/config_sixs_ruche_rigaku.ini 161-172 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 457 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 458 # $(PROCESS) data/test/config_sixs_ruche_medv_noetaa.ini 459 # $(PROCESS) data/test/config_sixs_polarisation.ini 600-631 # $(PROCESS) data/test/config_sixs_polarisation.ini 631 # $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run4/Cheng-Long_20250900/binoculars/config_stereo.cfg 339 # $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run4/Cheng-Long_20250900/binoculars/config_stereo.cfg 340 # $(PROCESS) data/test/config_sixs_ruche_20241687.ini 46 # $(PROCESS) data/test/config_sixs_ruche_20241687_gisaxs.ini 94 # $(PROCESS) data/test/config_sixs_ruche_20241687.ini 95-99 $(PROCESS) /nfs/ruche/sixs-soleil/com-sixs/2025/Run3/Coati_AgNi322/binoculars/config.cfg 377-390 hkl-5.1.7/binoculars-ng/hkl.cabal.in0000664000175000017500000001515515143645056016216 0ustar00piccapiccaname: hkl -- The package version. See the Haskell package versioning policy (PVP) -- for standards guiding when and how versions should be incremented. -- http://www.haskell.org/haskellwiki/Package_versioning_policy -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change version: 0.1.0.2 license: GPL-3 license-file: LICENSE author: Picca Frédéric-Emmanuel maintainer: picca@debian.org copyright: Synchrotron SOLEIL build-type: Simple cabal-version: >= 1.10 Data-Files: data/ghkl3.ui , data/gprof2dot.py , data/pseudo3.ui , data/3d3.ui Flag useHklDev Description: Use the current devel hkl library in the source tree Default: True Flag useThreaded Description: Use threading (some arch does not support this) Default: True library build-depends: aeson build-depends: async build-depends: attoparsec build-depends: base >= 4.6 build-depends: bindings-DSL build-depends: bytestring >= 0.10.0.2 build-depends: config-ini build-depends: containers build-depends: dimensional >= 0.10 build-depends: directory >= 1.3.0 build-depends: either build-depends: errors build-depends: exceptions build-depends: extra build-depends: filepath >= 1.3.0 build-depends: intervals build-depends: generic-random build-depends: hashable build-depends: hdf5 build-depends: hmatrix >= 0.17 build-depends: hmatrix-gsl >= 0.17 build-depends: ini build-depends: lens build-depends: monad-logger build-depends: monad-loops >= 0.4.2 build-depends: mtl build-depends: path build-depends: path-io build-depends: pipes >= 4.1.2 build-depends: pipes-safe >= 2.2.0 build-depends: QuickCheck build-depends: quickcheck-text build-depends: terminal-progress-bar build-depends: text build-depends: transformers >= 0.3 build-depends: unordered-containers build-depends: vector >= 0.10.0.1 c-sources: @srcdir@/binoculars/hkl-binoculars.c c-sources: @srcdir@/binoculars/hkl-binoculars-detectors-2d.c c-sources: @srcdir@/binoculars/hkl-binoculars-geometry.c c-sources: @srcdir@/binoculars/hkl-binoculars-io-cnpy.c c-sources: @srcdir@/binoculars/hkl-binoculars-io-hdf5.c c-sources: @srcdir@/binoculars/hkl-binoculars-io-img.c c-sources: @srcdir@/../hkl/hkl-axis.c c-sources: @srcdir@/../hkl/hkl-geometry.c c-sources: @srcdir@/../hkl/hkl-interval.c c-sources: @srcdir@/../hkl/hkl-lattice.c c-sources: @srcdir@/../hkl/hkl-macros.c c-sources: @srcdir@/../hkl/hkl-matrix.c c-sources: @srcdir@/../hkl/hkl-parameter.c c-sources: @srcdir@/../hkl/hkl-quaternion.c c-sources: @srcdir@/../hkl/hkl-sample.c c-sources: @srcdir@/../hkl/hkl-source.c c-sources: @srcdir@/../hkl/hkl-unit.c c-sources: @srcdir@/../hkl/hkl-vector.c default-language: Haskell2010 exposed-modules: Hkl exposed-modules: Hkl.Binoculars exposed-modules: Hkl.Binoculars.Command exposed-modules: Hkl.Binoculars.Common exposed-modules: Hkl.Binoculars.Config exposed-modules: Hkl.Binoculars.Pipes exposed-modules: Hkl.Binoculars.Projections exposed-modules: Hkl.Binoculars.Projections.Angles exposed-modules: Hkl.Binoculars.Projections.Config exposed-modules: Hkl.Binoculars.Projections.Config.Common exposed-modules: Hkl.Binoculars.Projections.Config.Sample exposed-modules: Hkl.Binoculars.Projections.Hkl exposed-modules: Hkl.Binoculars.Projections.QCustom exposed-modules: Hkl.Binoculars.Projections.Test exposed-modules: Hkl.C exposed-modules: Hkl.C.Binoculars exposed-modules: Hkl.C.Hkl exposed-modules: Hkl.DArray exposed-modules: Hkl.DataSource exposed-modules: Hkl.Detector exposed-modules: Hkl.Engine exposed-modules: Hkl.Exception exposed-modules: Hkl.Geometry exposed-modules: Hkl.H5 exposed-modules: Hkl.HKD exposed-modules: Hkl.Image exposed-modules: Hkl.Lattice exposed-modules: Hkl.MyMatrix exposed-modules: Hkl.Orphan exposed-modules: Hkl.Parameter exposed-modules: Hkl.Pipes exposed-modules: Hkl.Repa exposed-modules: Hkl.Sample exposed-modules: Hkl.Types exposed-modules: Hkl.Utils ghc-options: -g ghc-options: -Wall ghc-options: -Wincomplete-uni-patterns ghc-options: -Wincomplete-record-updates hs-source-dirs: @srcdir@/src -- includes: binoculars/hkl-binoculars-config-private.h -- includes: binoculars/hkl-binoculars-cnpy-private.h -- includes: binoculars/hkl-binoculars.h -- includes: binoculars/hkl-binoculars-private.h other-modules: Paths_hkl if flag(useHklDev) extra-libraries: hkl -- extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl -- extra-libraries: hkl-binoculars executable binoculars-ng build-depends: base >= 4.6 build-depends: attoparsec build-depends: containers build-depends: dimensional >= 0.10 build-depends: exceptions build-depends: filepath >= 1.3.0 build-depends: hkl build-depends: monad-logger build-depends: monad-loops >= 0.4.2 build-depends: mtl build-depends: optparse-applicative build-depends: pipes >= 4.1.2 build-depends: text build-depends: transformers >= 0.3 build-depends: vector >= 0.10.0.1 default-language: Haskell2010 ghc-options: -g ghc-options: -rtsopts if flag(useThreaded) ghc-options: -threaded ghc-options: "-with-rtsopts=-N" ghc-options: -Wall if flag(useHklDev) extra-libraries: hkl extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl extra-libraries: hkl-binoculars main-is: @srcdir@/app/Main.hs test-suite hkl-test build-depends: aeson build-depends: attoparsec build-depends: base >= 4.6 build-depends: config-ini build-depends: containers build-depends: unordered-containers build-depends: dimensional build-depends: hkl build-depends: hspec build-depends: hspec-attoparsec build-depends: ini build-depends: inspection-testing build-depends: intervals build-depends: monad-logger build-depends: path build-depends: temporary build-depends: text default-language: Haskell2010 ghc-options: -g ghc-options: -Wall ghc-options: -rtsopts if flag(useThreaded) ghc-options: -threaded ghc-options: "-with-rtsopts=-N" hs-source-dirs: @srcdir@/test main-is: Spec.hs other-modules: BinocularsSpec other-modules: Paths_hkl type: exitcode-stdio-1.0 if flag(useHklDev) extra-libraries: hkl extra-libraries: hkl-binoculars pkgconfig-depends: glib-2.0 else pkgconfig-depends: hkl extra-libraries: hkl-binoculars hkl-5.1.7/binoculars-ng/binoculars/0000775000175000017500000000000015144640565016202 5ustar00piccapiccahkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-private.h0000664000175000017500000000553015075242600022732 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_BINOCULARS_PRIVATE_H__ #define __HKL_BINOCULARS_PRIVATE_H__ #include #include "datatype99.h" #include "hkl-binoculars.h" #include "hkl-geometry-private.h" #define SUCCEED 0 /********/ /* Axis */ /********/ struct _HklBinocularsAxis { GQuark name; /* the name of the axis */ size_t index; /* the index of the axis of the projection used */ double resolution; /* the resolution of the bins */ ptrdiff_t imin; /* the minimum index of the axis min = imin * resolution */ ptrdiff_t imax; /* the maximum index of the axis max = imax * resolution */ }; typedef darray(HklBinocularsAxis) darray_axis; extern void hkl_binoculars_axis_init_from_array(HklBinocularsAxis *self, const char *name, double *arr, size_t n_arr); /*********/ /* Space */ /*********/ /* TODO how to avoid hardcoding the size of indexes_0 */ typedef struct _HklBinocularsSpaceItem HklBinocularsSpaceItem; struct _HklBinocularsSpaceItem { ptrdiff_t indexes_0[3]; /* for now hardcode the max number of axes */ float intensity; }; typedef darray(HklBinocularsSpaceItem) darray_HklBinocularsSpaceItem; struct _HklBinocularsSpace { darray_axis axes; size_t max_items; darray_HklBinocularsSpaceItem items; }; /********/ /* Cube */ /********/ struct _HklBinocularsCube { darray_axis axes; ptrdiff_t offset0; float *photons; unsigned int *contributions; }; static inline size_t axis_size(const HklBinocularsAxis *self) { return self->imax - self->imin + 1; } extern HklBinocularsCube *empty_cube_from_axes(const darray_axis *axes); /************/ /* Geometry */ /************/ extern mat4s hkl_binoculars_parameter_transformation_get(const HklParameter *self); extern mat4s hkl_binoculars_holder_transformation_get(const HklHolder *self); #endif hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars.c0000664000175000017500000032554715143645056021302 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* #define DEBUG */ #ifdef DEBUG # define CGLM_DEFINE_PRINTS # define CGLM_PRINT_PRECISION 7 #else # define NDEBUG #endif #include #include #include "ccan/array_size/array_size.h" #include "hkl-binoculars-private.h" #include "hkl-matrix-private.h" #include "hkl-quaternion-private.h" #include "hkl-sample-private.h" #include "hkl-vector-private.h" /* TODO rename phi -> phix phiy phiz */ /* mark the masked pixels with this value */ #define MASKED PTRDIFF_MAX #define REMOVED 0 /* Math */ static inline ptrdiff_t min(ptrdiff_t x, ptrdiff_t y) { return y ^ ((x ^ y) & -(x < y)); } static inline ptrdiff_t max(ptrdiff_t x, ptrdiff_t y) { return x ^ ((x ^ y) & -(x < y)); } /* Axis Limits */ datatype( AxisLimitType, (NoLimit), (Limit, ptrdiff_t) ); struct _HklBinocularsAxisLimits { AxisLimitType imin; AxisLimitType imax; }; void hkl_binoculars_axis_limits_free(HklBinocularsAxisLimits *self) { free(self); } HklBinocularsAxisLimits *hkl_binoculars_axis_limits_new(const ptrdiff_t *imin, const ptrdiff_t *imax) { HklBinocularsAxisLimits *self = g_new(HklBinocularsAxisLimits, 1); if (NULL == imin){ self->imin = NoLimit(); } else { self->imin = Limit(*imin); } if (NULL == imax){ self->imax = NoLimit(); } else { self->imax = Limit(*imax); } return self; } /* Axis */ static inline double axis_min(const HklBinocularsAxis *self) { return self->imin * self->resolution; } static inline double axis_max(const HklBinocularsAxis *self) { return self->imax * self->resolution; } static inline void hkl_binoculars_axis_init(HklBinocularsAxis *self, const char *name, size_t index, ptrdiff_t imin, ptrdiff_t imax, double resolution) { self->name = g_quark_from_string(name); self->index = index; self->resolution = resolution; self->imin = imin; self->imax = imax; } void hkl_binoculars_axis_init_from_array(HklBinocularsAxis *self, const char *name, double *arr, size_t n_arr) { hkl_binoculars_axis_init(self, name, arr[0], arr[4], arr[5], arr[3]); } static inline int hkl_binoculars_axis_cmp(const HklBinocularsAxis *self, const HklBinocularsAxis *other) { int res = 0; res |= self->name != other->name; res |= self->index != other->index; res |= self->resolution != other->resolution; res |= self->imin != other->imin; res |= self->imax != other->imax; return res; } double *hkl_binoculars_axis_array(const HklBinocularsAxis *self) { double *arr = g_new0(double, 6); arr[0] = self->index; arr[1] = axis_min(self); arr[2] = axis_max(self); arr[3] = self->resolution; arr[4] = self->imin; arr[5] = self->imax; return arr; } /* check if *self contains *other */ static inline int hkl_binoculars_axis_contains_axis(const HklBinocularsAxis *self, const HklBinocularsAxis *other) { return self->imin <= other->imin && self->imax >= other->imax; } static inline void hkl_binoculars_axis_merge(HklBinocularsAxis *self, const HklBinocularsAxis *other) { self->imin = min(self->imin, other->imin); self->imax = max(self->imax, other->imax); } void hkl_binoculars_axis_fprintf(FILE *f, const HklBinocularsAxis *self) { fprintf(f, "%s : %ld min: %f(%ld) max: %f(%ld) res: %f size: %ld", g_quark_to_string(self->name), self->index, axis_min(self), self->imin, axis_max(self), self->imax, self->resolution, axis_size(self)); } /* darray_axis */ static inline void merge_axes(darray_axis *axes, const darray_axis *others) { size_t i; for(i=0; iindexes(%p) v: %ld %ld %ld, intensity: %g", &self->indexes_0[0], self->indexes_0[0], self->indexes_0[1], self->indexes_0[2], self->intensity); } static inline int space_is_empty(const HklBinocularsSpace *space) { return 0 == darray_size(space->items); } static inline void space_update_axes(HklBinocularsSpace *space, const char *names[], size_t n_pixels, const double resolutions[]) { size_t i; HklBinocularsSpaceItem *item; HklBinocularsSpaceItem minimum; HklBinocularsSpaceItem maximum; if (space_is_empty(space)) return; minimum = maximum = darray_item(space->items, 0); for(i=0; iaxes); ++i){ darray_foreach(item, space->items){ minimum.indexes_0[i] = min(minimum.indexes_0[i], item->indexes_0[i]); maximum.indexes_0[i] = max(maximum.indexes_0[i], item->indexes_0[i]); } } for(i=0; iaxes); ++i){ HklBinocularsAxis *axis = &darray_item(space->axes, i); hkl_binoculars_axis_init(axis, names[i], i, minimum.indexes_0[i], maximum.indexes_0[i], resolutions[i]); } } static inline int item_in_the_limits(const HklBinocularsSpaceItem *item, const HklBinocularsAxisLimits **limits, size_t n_limits) { int res = TRUE; if (NULL != limits){ for(size_t i=0; iindexes_0[i]; match(limits[i]->imin){ of(NoLimit){ } of(Limit, imin){ if (v < *imin) res = FALSE; break; } } match(limits[i]->imax){ of(NoLimit){ } of(Limit, imax){ if(v > *imax) res = FALSE; break; } } } } return res; } HklBinocularsSpace *hkl_binoculars_space_new(size_t max_items, size_t n_axes) { HklBinocularsSpace *self = g_new(HklBinocularsSpace, 1); self->max_items = max_items; darray_init(self->items); darray_resize(self->items, max_items); darray_init(self->axes); darray_resize(self->axes, n_axes); return self; } void hkl_binoculars_space_free(HklBinocularsSpace *self) { darray_free(self->axes); darray_free(self->items); free(self); } void hkl_binoculars_space_fprintf(FILE *f, const HklBinocularsSpace *self) { size_t masked; HklBinocularsAxis *axis; fprintf(f, "\nHklBinocularsSpace: %p", self); fprintf(f, "\nn_indexes_0: %ld", darray_size(self->items)); if(space_is_empty(self)){ fprintf(f, "\nempty"); } else { fprintf(f, "\nn_axes: %ld", darray_size(self->axes)); darray_foreach(axis, self->axes){ fprintf(f, "\n"); hkl_binoculars_axis_fprintf(f, axis); } masked = self->max_items - darray_size(self->items); fprintf(f, "\nmasked pixels: %ld (%f%%)", masked, (double)masked / self->max_items * 100); } } /* angles */ #define HKL_BINOCULARS_SPACE_ANGLES_IMPL(image_t) \ HKL_BINOCULARS_SPACE_ANGLES_DECL(image_t) \ { \ size_t i, j; \ const char * names[] = {"delta_lab", "gamma_lab", "tth"}; \ double delta0, gamma0, tth; \ \ assert(ARRAY_SIZE(names) == darray_size(space->axes)); \ assert(ARRAY_SIZE(names) == n_resolutions); \ assert(n_pixels == space->max_items); \ \ darray_size(space->items) = 0; \ \ const double *p_x = &pixels_coordinates[0 * n_pixels]; \ const double *p_y = &pixels_coordinates[1 * n_pixels]; \ const double *p_z = &pixels_coordinates[2 * n_pixels]; \ \ HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); \ const HklQuaternion q = hkl_geometry_detector_rotation_get(geometry, detector); \ \ for(i=0;iitems, item); \ } \ } \ \ space_update_axes(space, names, n_pixels, resolutions); \ \ hkl_detector_free(detector); \ } HKL_BINOCULARS_SPACE_ANGLES_IMPL(double); HKL_BINOCULARS_SPACE_ANGLES_IMPL(int32_t); HKL_BINOCULARS_SPACE_ANGLES_IMPL(uint16_t); HKL_BINOCULARS_SPACE_ANGLES_IMPL(uint32_t); /* qcustom */ struct _HklBinocularsProjectionAxis { const char *name; const char *description; }; typedef struct _HklBinocularsProjectionAxis HklBinocularsProjectionAxis; static const HklBinocularsProjectionAxis azimuth = { .name = "azimuth", .description = "The azimuthal angle in the yz plan of the kf vector", }; static const HklBinocularsProjectionAxis thetax = { .name = "thetax", .description = "The angle beetween q and the qx axis", }; static const HklBinocularsProjectionAxis thetay = { .name = "thetay", .description = "The angle beetween q and the qy axis", }; static const HklBinocularsProjectionAxis thetaz = { .name = "thetaz", .description = "The angle beetween q and the qz axis", }; static const HklBinocularsProjectionAxis deltalab = { .name = "deltalab", .description = "The delta horizontal deviation in the lab basis", }; static const HklBinocularsProjectionAxis gammalab = { .name = "gammalab", .description = "The gamma elevation in the lab basis", }; static const HklBinocularsProjectionAxis q = { .name = "q", .description = "The norm of the q vector", }; static const HklBinocularsProjectionAxis qpar = { .name = "qpar", .description = "The norm of the q vector projected onto the plan parallel to the surface." }; static const HklBinocularsProjectionAxis qpars = { .name = "qpars", .description = "The signed norm of the q vector projected onto the plan parallel to the surface." }; static const HklBinocularsProjectionAxis qper = { .name = "qper", .description = "The norm of the q vector projected onto the surface vector (perpendicular to the surface)." }; static const HklBinocularsProjectionAxis qx = { .name = "qx", .description = "The x coordinate of the Q vector in the sample basis." }; static const HklBinocularsProjectionAxis qy = { .name = "qy", .description = "The y coordinate of the Q vector in the sample basis." }; static const HklBinocularsProjectionAxis qz = { .name = "qz", .description = "The z coordinate of the Q vector in the sample basis." }; static const HklBinocularsProjectionAxis phix = { .name = "phix", .description = "The azimuthal angle in the yz plan of the q vector", }; static const HklBinocularsProjectionAxis phiy = { .name = "phiy", .description = "The azimuthal angle in the xz plan of the q vector", }; static const HklBinocularsProjectionAxis phiz = { .name = "phiz", .description = "The azimuthal angle in the xy plan of the q vector", }; static const HklBinocularsProjectionAxis sampleaxis = { .name = "sampleaxis", .description = "The name of a sample axis", }; static const HklBinocularsProjectionAxis scannumber = { .name = "scannumber", .description = "The scan number of the scan", }; static const HklBinocularsProjectionAxis timestamp = { .name = "timestamp", .description = "The timestamp of each image", }; static const HklBinocularsProjectionAxis timescan0 = { .name = "timescan0", .description = "The timestamp of the first image of a scan", }; static const HklBinocularsProjectionAxis tth = { .name = "tth", .description = "The 2 * theta angle.", }; static const HklBinocularsProjectionAxis xp = { .name = "xp", .description = "The x coordinate of pixels projected in the yz plan", }; static const HklBinocularsProjectionAxis yp = { .name="yp", .description = "The y coordinate of pixels projected in the yz plan", }; static const HklBinocularsProjectionAxis x = { .name="x", .description = "The x coordinate of pixels", }; static const HklBinocularsProjectionAxis y = { .name="y", .description = "The y coordinate of pixels", }; static const HklBinocularsProjectionAxis z = { .name="z", .description = "The z coordinate of pixels", }; #define PROJECTION(...) do { \ int i; \ int n; \ static const HklBinocularsProjectionAxis axes[] = {__VA_ARGS__}; \ static const char *axes_names[ARRAY_SIZE(axes)]; \ \ n = ARRAY_SIZE(axes); \ assert(n <= darray_size(space->axes)); \ assert(n <= n_resolutions); \ \ for(i=0; imax_items); \ \ const double *q_x = &pixels_coordinates[0 * n_pixels]; \ const double *q_y = &pixels_coordinates[1 * n_pixels]; \ const double *q_z = &pixels_coordinates[2 * n_pixels]; \ \ HklSample *sample = hkl_sample_new("test"); \ HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); \ HklHolder *holder_d = hkl_geometry_detector_holder_get(geometry, detector); \ CGLM_ALIGN_MAT mat4s m_holder_d = hkl_binoculars_holder_transformation_get(holder_d); \ const HklVector ki_v = hkl_geometry_ki_get(geometry); \ CGLM_ALIGN_MAT vec3s ki = {{ki_v.data[0], ki_v.data[1], ki_v.data[2]}}; \ float k = glms_vec3_norm(ki); \ HklHolder *holder_s = hkl_geometry_sample_holder_get(geometry,sample); \ CGLM_ALIGN_MAT mat4s m_holder_s = hkl_binoculars_holder_transformation_get(holder_s); \ \ switch(surf){ \ case HKL_BINOCULARS_SURFACE_ORIENTATION_VERTICAL: \ { \ CGLM_ALIGN_MAT vec3s axis = GLMS_XUP; \ CGLM_ALIGN_MAT mat4s m_q_ub = glms_rotate_make(-M_PI_2, axis); \ \ m_holder_s = glms_mat4_mul(m_holder_s, m_q_ub); \ break; \ } \ case HKL_BINOCULARS_SURFACE_ORIENTATION_HORIZONTAL: \ case HKL_BINOCULARS_SURFACE_ORIENTATION_NUM_ORIENTATION: \ break; \ } \ \ CGLM_ALIGN_MAT vec3s euler_xyz = {{uqx, uqy, uqz}}; \ m_holder_s = glms_mat4_mul(m_holder_s, glms_euler_xyz(euler_xyz)); \ \ m_holder_s = glms_mat4_inv(m_holder_s); \ \ darray_size(space->items) = 0; \ \ glms_mat4_print(m_holder_s, stdout); \ glms_mat4_print(m_holder_d, stdout); \ \ switch(subprojection){ \ case HKL_BINOCULARS_QCUSTOM_NUM_SUBPROJECTIONS: \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_QZ: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TTH_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIX_QX: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIY_QY: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIZ_QZ: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_STEREO: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_DELTALAB_GAMMALAB_SAMPLEAXIS: \ { \ const HklParameter *p = hkl_geometry_axis_get(geometry, sample_axis, NULL); \ if (NULL != p){ \ int axis = rint(hkl_parameter_value_get(p, HKL_UNIT_USER) / resolutions[2]); \ \ for(i=0;iitems, item); \ } \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_X_Y_Z: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Y_Z_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_QPAR_QPER: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPARS_QPER_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_SAMPLEAXIS: \ { \ const HklParameter *p = hkl_geometry_axis_get(geometry, sample_axis, NULL); \ if (NULL != p){ \ int axis = rint(hkl_parameter_value_get(p, HKL_UNIT_USER) / resolutions[2]); \ \ for(i=0;iitems, item); \ } \ } \ break; \ } \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TTH: \ { \ const HklParameter *p = hkl_geometry_axis_get(geometry, sample_axis, NULL); \ if (NULL != p){ \ int axis = rint(hkl_parameter_value_get(p, HKL_UNIT_USER) / resolutions[1]); \ \ for(i=0;iitems, item); \ } \ } \ break; \ } \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TIMESTAMP: \ { \ const HklParameter *p = hkl_geometry_axis_get(geometry, sample_axis, NULL); \ if (NULL != p){ \ int axis = rint(hkl_parameter_value_get(p, HKL_UNIT_USER) / resolutions[1]); \ \ for(i=0;iitems, item); \ } \ } \ break; \ } \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QZ_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QY_QZ_TIMESTAMP: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_AZIMUTH: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESCAN0: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SCANNUMBER: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_SCANNUMBER: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIX_Q_THETAX: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIY_Q_THETAY: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ case HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIZ_Q_THETAZ: \ { \ for(i=0;iitems, item); \ } \ } \ break; \ } \ } \ space_update_axes(space, names, n_pixels, resolutions); \ hkl_detector_free(detector); \ hkl_sample_free(sample); \ } HKL_BINOCULARS_SPACE_QCUSTOM_IMPL(double); HKL_BINOCULARS_SPACE_QCUSTOM_IMPL(int32_t); HKL_BINOCULARS_SPACE_QCUSTOM_IMPL(uint16_t); HKL_BINOCULARS_SPACE_QCUSTOM_IMPL(uint32_t); /* hkl */ #define HKL_BINOCULARS_SPACE_HKL_IMPL(image_t) \ HKL_BINOCULARS_SPACE_HKL_DECL(image_t) \ { \ size_t i; \ double correction; \ const char * names[] = {"H", "K", "L"}; \ HklBinocularsSpaceItem item; \ \ assert(ARRAY_SIZE(names) == darray_size(space->axes)); \ assert(ARRAY_SIZE(names) == n_resolutions); \ assert(n_pixels == space->max_items); \ \ const double *h = &pixels_coordinates[0 * n_pixels]; \ const double *k = &pixels_coordinates[1 * n_pixels]; \ const double *l = &pixels_coordinates[2 * n_pixels]; \ \ HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); \ HklHolder *holder_d = hkl_geometry_detector_holder_get(geometry, detector); \ CGLM_ALIGN_MAT mat4s m_holder_d = hkl_binoculars_holder_transformation_get(holder_d); \ const HklVector ki_v = hkl_geometry_ki_get(geometry); \ CGLM_ALIGN_MAT vec3s ki = {{ki_v.data[0], ki_v.data[1], ki_v.data[2]}}; \ float K = glms_vec3_norm(ki); \ HklHolder *holder_s = hkl_geometry_sample_holder_get(geometry,sample); \ CGLM_ALIGN_MAT mat4s m_holder_s = hkl_binoculars_holder_transformation_get(holder_s); \ \ const HklMatrix *UB = hkl_sample_UB_get(sample); \ CGLM_ALIGN_MAT mat4s ub = {{{UB->data[0][0], UB->data[1][0], UB->data[2][0], 0}, \ {UB->data[0][1], UB->data[1][1], UB->data[2][1], 0}, \ {UB->data[0][2], UB->data[1][2], UB->data[2][2], 0}, \ {0, 0, 0, 1}}}; \ glms_mat4_print(ub, stdout); \ m_holder_s = glms_mat4_mul(m_holder_s, ub); \ glms_mat4_print(m_holder_s, stdout); \ m_holder_s = glms_mat4_inv(m_holder_s); \ \ darray_size(space->items) = 0; \ \ glms_mat4_print(m_holder_s, stdout); \ glms_mat4_print(m_holder_d, stdout); \ \ for(i=0;iitems, item); \ } \ } \ \ space_update_axes(space, names, n_pixels, resolutions); \ \ hkl_detector_free(detector); \ } HKL_BINOCULARS_SPACE_HKL_IMPL(double); HKL_BINOCULARS_SPACE_HKL_IMPL(int32_t); HKL_BINOCULARS_SPACE_HKL_IMPL(uint16_t); HKL_BINOCULARS_SPACE_HKL_IMPL(uint32_t); /* test */ #define HKL_BINOCULARS_SPACE_TEST_IMPL(image_t) \ HKL_BINOCULARS_SPACE_TEST_DECL(image_t) \ { \ size_t i; \ const char * names[] = {"H", "K", "L"}; \ double correction; \ HklBinocularsSpaceItem item; \ \ assert(ARRAY_SIZE(names) == darray_size(space->axes)); \ assert(ARRAY_SIZE(names) == n_resolutions); \ assert(n_pixels == space->max_items); \ \ const double *h = &pixels_coordinates[0 * n_pixels]; \ const double *k = &pixels_coordinates[1 * n_pixels]; \ const double *l = &pixels_coordinates[2 * n_pixels]; \ \ HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); \ HklHolder *holder_d = hkl_geometry_detector_holder_get(geometry, detector); \ CGLM_ALIGN_MAT mat4s m_holder_d = hkl_binoculars_holder_transformation_get(holder_d); \ const HklVector ki_v = hkl_geometry_ki_get(geometry); \ CGLM_ALIGN_MAT vec3s ki = {{ki_v.data[0], ki_v.data[1], ki_v.data[2]}}; \ float K = glms_vec3_norm(ki); \ HklHolder *holder_s = hkl_geometry_sample_holder_get(geometry,sample); \ CGLM_ALIGN_MAT mat4s m_holder_s = hkl_binoculars_holder_transformation_get(holder_s); \ \ const HklMatrix *UB = hkl_sample_UB_get(sample); \ CGLM_ALIGN_MAT mat4s ub = {{{UB->data[0][0], UB->data[1][0], UB->data[2][0], 0}, \ {UB->data[0][1], UB->data[1][1], UB->data[2][1], 0}, \ {UB->data[0][2], UB->data[1][2], UB->data[2][2], 0}, \ {0, 0, 0, 1}}}; \ glms_mat4_print(ub, stdout); \ m_holder_s = glms_mat4_mul(m_holder_s, ub); \ glms_mat4_print(m_holder_s, stdout); \ m_holder_s = glms_mat4_inv(m_holder_s); \ \ darray_size(space->items) = 0; \ \ glms_mat4_print(m_holder_s, stdout); \ glms_mat4_print(m_holder_d, stdout); \ \ for(i=0;iitems, item); \ } \ } \ \ space_update_axes(space, names, n_pixels, resolutions); \ \ hkl_detector_free(detector); \ } HKL_BINOCULARS_SPACE_TEST_IMPL(double); HKL_BINOCULARS_SPACE_TEST_IMPL(int32_t); HKL_BINOCULARS_SPACE_TEST_IMPL(uint16_t); HKL_BINOCULARS_SPACE_TEST_IMPL(uint32_t); /* Cube */ /* this method compute the linear coordinates of the first element in * the absolute coordinates of the bin */ static inline ptrdiff_t compute_offset0(const darray_axis *axes) { size_t i; ptrdiff_t len = 1; ptrdiff_t offset = 0; size_t n_axes = darray_size(*axes); for(i=0; iimin; len *= axis_size(axis); } return offset; } HklBinocularsCube *empty_cube_from_axes(const darray_axis *axes) { HklBinocularsCube *self = NULL; if (0 != darray_size(*axes)){ HklBinocularsAxis *axis; self = g_new0(HklBinocularsCube, 1); darray_foreach(axis, *axes){ darray_append(self->axes, *axis); } self->offset0 = compute_offset0(&self->axes); self->photons = NULL; self->contributions = NULL; } return self; } static inline size_t cube_size(const HklBinocularsCube *self) { size_t n = 1; HklBinocularsAxis *axis; darray_foreach(axis, self->axes){ n *= axis_size(axis); } return n; } static inline size_t malloc_cube(HklBinocularsCube *self) { size_t n = cube_size(self); self->photons = malloc(n * sizeof(*self->photons)); self->contributions = malloc(n * sizeof(*self->contributions)); return n; } static inline size_t calloc_cube(HklBinocularsCube *self) { size_t n = cube_size(self); self->photons = calloc(n, sizeof(*self->photons)); self->contributions = calloc(n, sizeof(*self->contributions)); return n; } /* Using this method the Cube has already the right dimensions, we * just add the Space data into it. */ static inline void add_non_empty_space(HklBinocularsCube *cube, const HklBinocularsSpace *space) { size_t i; size_t n_axes = darray_size(cube->axes); ptrdiff_t lens[n_axes]; HklBinocularsSpaceItem *item; assert(n_axes == darray_size(space->axes)); /* compute the lens */ lens[0] = 1; for(i=1; iaxes, n_axes - i)); } darray_foreach(item, space->items){ ptrdiff_t w = -cube->offset0; for(i=0; iindexes_0[n_axes - 1 - i]; /* fprintf(stdout, " %ld %ld", lens[i], item->indexes_0[n_axes - 1 - i]); */ } /* fprintf(stdout, " w: %ld %ld\n", w, cube_size(cube)); */ cube->photons[w] += item->intensity; cube->contributions[w] += 1; } } static inline int cube_is_empty(const HklBinocularsCube *self) { return 0 == darray_size(self->axes); } HklBinocularsCube *hkl_binoculars_cube_new_empty(void) { HklBinocularsCube *self = g_new(HklBinocularsCube, 1); darray_init(self->axes); self->offset0 = 0; self->photons = NULL; self->contributions = NULL; return self; } void hkl_binoculars_cube_free(HklBinocularsCube *self) { free(self->contributions); free(self->photons); darray_free(self->axes); free(self); } unsigned int hkl_binoculars_cube_cmp(const HklBinocularsCube *self, const HklBinocularsCube *other) { int i; unsigned int res = 0; res |= darray_size(self->axes) != darray_size(other->axes); res |= self->offset0 != other->offset0; for(i=0; iaxes); ++i){ res |= hkl_binoculars_axis_cmp(&darray_item(self->axes, i), &darray_item(other->axes, i)); } /* for(i=0; iphotons[i] != other->photons[i]; */ /* res |= self->contributions[i] != other->contributions[i]; */ /* if(res){ */ /* fprintf(stdout, "\nphotons: %d %u %u ", i, self->photons[i], other->photons[i]); */ /* fprintf(stdout, "\ncontributions: %d %u %u", i, self->contributions[i], other->contributions[i]); */ /* break; */ /* } */ /* } */ if(res){ fprintf(stdout, "cube: self\n"); hkl_binoculars_cube_fprintf(stdout, self); fprintf(stdout, "cube: other\n"); hkl_binoculars_cube_fprintf(stdout, other); } return res; } void hkl_binoculars_cube_fprintf(FILE *f, const HklBinocularsCube *self) { HklBinocularsAxis *axis; fprintf(f, "HklBinocularsCube: %p", self); fprintf(f, "\nn_axes: %ld", darray_size(self->axes)); darray_foreach(axis, self->axes){ fprintf(f, "\n"); hkl_binoculars_axis_fprintf(f, axis); } fprintf(f, "\nphotons: %p", self->photons); fprintf(f, "\ncontributions: %p", self->contributions); } void hkl_binoculars_cube_dims(const HklBinocularsCube *self, size_t ndims, size_t *dims) { HklBinocularsAxis *axis; assert(ndims == darray_size(self->axes)); darray_foreach(axis, self->axes){ *(dims++) = axis_size(axis); } } static inline size_t find_first_non_empty_space_index(size_t n_spaces, const HklBinocularsSpace *const *spaces) { size_t i; for(i=0; iaxes); if(NULL != self){ /* compute the final cube dimensions and the index offset */ for(i=i0; iaxes, &space->axes); } self->offset0 = compute_offset0(&self->axes); /* allocated the final cube photons and contributions */ calloc_cube(self); /* add all the spaces */ for(i=i0; iaxes); if(NULL != self) calloc_cube(self); else{ self = hkl_binoculars_cube_new_empty(); } return self; } HklBinocularsCube *hkl_binoculars_cube_new_from_space(const HklBinocularsSpace *space) { HklBinocularsCube *self = NULL; if(space_is_empty(space)){ self = hkl_binoculars_cube_new_empty(); } else { self = empty_cube_from_axes(&space->axes); if(NULL != self){ calloc_cube(self); add_non_empty_space(self, space); } } return self; } HklBinocularsCube *hkl_binoculars_cube_new_copy(const HklBinocularsCube *src) { size_t n; HklBinocularsCube *self = empty_cube_from_axes(&src->axes); if(NULL != self){ /* allocate the final cube */ n = malloc_cube(self); /* copy the data */ if(self->photons) memcpy(self->photons, src->photons, n * sizeof(*self->photons)); if(self->contributions) memcpy(self->contributions, src->contributions, n * sizeof(*self->contributions)); } return self; } static inline void cube_add_cube_2(HklBinocularsCube *self, const HklBinocularsCube *other) { size_t i, j; size_t i_offset, j_offset; size_t stride_i = 1; size_t stride_j = stride_i * axis_size(&darray_item(self->axes, 1)); /* fill the values of other */ size_t stride_i_other = 1; size_t stride_j_other = stride_i_other * axis_size(&darray_item(other->axes, 1)); i_offset = darray_item(other->axes, 1).imin - darray_item(self->axes, 1).imin; j_offset = darray_item(other->axes, 0).imin - darray_item(self->axes, 0).imin; for(j=0; jaxes, 0)); ++j){ for(i=0; iaxes, 1)); ++i){ size_t w = (i + i_offset) * stride_i + (j + j_offset) * stride_j; size_t w1 = i * stride_i_other + j * stride_j_other; self->photons[w] += other->photons[w1]; self->contributions[w] += other->contributions[w1]; } } } static inline void cube_add_cube_3(HklBinocularsCube *self, const HklBinocularsCube *other) { size_t i, j, k; size_t i_offset, j_offset, k_offset; size_t stride_i = 1; size_t stride_j = stride_i * axis_size(&darray_item(self->axes, 2)); size_t stride_k = stride_j * axis_size(&darray_item(self->axes, 1)); /* fill the values of other */ size_t stride_i_other = 1; size_t stride_j_other = stride_i_other * axis_size(&darray_item(other->axes, 2)); size_t stride_k_other = stride_j_other * axis_size(&darray_item(other->axes, 1)); i_offset = darray_item(other->axes, 2).imin - darray_item(self->axes, 2).imin; j_offset = darray_item(other->axes, 1).imin - darray_item(self->axes, 1).imin; k_offset = darray_item(other->axes, 0).imin - darray_item(self->axes, 0).imin; for(k=0; kaxes, 0)); ++k){ for(j=0; jaxes, 1)); ++j){ for(i=0; iaxes, 2)); ++i){ size_t w = (i + i_offset) * stride_i + (j + j_offset) * stride_j + (k + k_offset) * stride_k; size_t w1 = i * stride_i_other + j * stride_j_other + k * stride_k_other; self->photons[w] += other->photons[w1]; self->contributions[w] += other->contributions[w1]; } } } } static inline void cube_add_cube(HklBinocularsCube *self, const HklBinocularsCube *other) { assert(darray_size(self->axes) == darray_size(other->axes)); switch(darray_size(self->axes)){ case 2: cube_add_cube_2(self, other); break; case 3: cube_add_cube_3(self, other); break; default: assert(0); } } static inline void compute_strides(const darray_axis *axes, size_t strides[], size_t n_strides) { size_t i; strides[0] = 1; for(i=1; iaxes); if(NULL != self){ merge_axes(&self->axes, &cube2->axes); calloc_cube(self); cube_add_cube(self, cube1); cube_add_cube(self, cube2); } return self; } static inline void switch_content(HklBinocularsCube *self, HklBinocularsCube *other) { void *ptr; darray_axis tmp; ptrdiff_t offset0; tmp = self->axes; self->axes = other->axes; other->axes = tmp; offset0 = self->offset0; self->offset0 = other->offset0; other->offset0 = offset0; ptr = self->photons; self->photons = other->photons; other->photons = ptr; ptr = self->contributions; self->contributions = other->contributions; other->contributions = ptr; } void hkl_binoculars_cube_add_cube(HklBinocularsCube *self, const HklBinocularsCube *other) { #ifdef DEBUG fprintf(stdout, "\nENTERING hkl_binoculars_cube_add_cube:\n"); hkl_binoculars_cube_fprintf(stdout, self); hkl_binoculars_cube_fprintf(stdout, other); #endif /* check the compatibility of the cube(self) and the cube(other). */ if (1 != cube_is_empty(other)){ if (does_not_include(&self->axes, &other->axes)){ #ifdef DEBUG fprintf(stdout, "\nthe first Cube does not contain the second one, so create a new cube."); #endif if(0 != darray_size(self->axes)){ /* self cube is not empty */ HklBinocularsCube *cube = empty_cube_from_axes(&self->axes); if(NULL != cube){ merge_axes(&cube->axes, &other->axes); /* circonscript */ cube->offset0 = compute_offset0(&cube->axes); calloc_cube(cube); cube_add_cube(cube, self); switch_content(self, cube); hkl_binoculars_cube_free(cube); } } else { /* self cube is empty */ HklBinocularsCube *cube = empty_cube_from_axes(&other->axes); if(NULL != cube){ cube->offset0 = compute_offset0(&cube->axes); calloc_cube(cube); switch_content(self, cube); hkl_binoculars_cube_free(cube); } } } cube_add_cube(self, other); } #ifdef DEBUG fprintf(stdout, "\n"); hkl_binoculars_cube_fprintf(stdout, self); fprintf(stdout, "\nLEAVING hkl_binoculars_cube_add_cube:\n"); #endif } void hkl_binoculars_cube_add_space(HklBinocularsCube *self, const HklBinocularsSpace *space) { #ifdef DEBUG fprintf(stdout, "\nENTERING hkl_binoculars_cube_add_space:\n"); hkl_binoculars_cube_fprintf(stdout, self); hkl_binoculars_space_fprintf(stdout, space); #endif /* check the compatibility of the cube and the space. */ if (1 != space_is_empty(space)){ if (does_not_include(&self->axes, &space->axes)){ #ifdef DEBUG fprintf(stdout, "\nthe Cube does not contain the space, so create a new cube."); #endif if(0 != darray_size(self->axes)){ /* self cube is not empty */ HklBinocularsCube *cube = empty_cube_from_axes(&self->axes); if(NULL != cube){ merge_axes(&cube->axes, &space->axes); /* circonscript */ cube->offset0 = compute_offset0(&cube->axes); calloc_cube(cube); cube_add_cube(cube, self); switch_content(self, cube); hkl_binoculars_cube_free(cube); } } else { /* self cube is empty */ HklBinocularsCube *cube = empty_cube_from_axes(&space->axes); if(NULL != cube){ cube->offset0 = compute_offset0(&cube->axes); calloc_cube(cube); switch_content(self, cube); hkl_binoculars_cube_free(cube); } } } add_non_empty_space(self, space); } #ifdef DEBUG fprintf(stdout, "\n"); hkl_binoculars_cube_fprintf(stdout, self); fprintf(stdout, "\nLEAVING hkl_binoculars_cube_add_space:\n"); #endif } hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-io-hdf5.c0000664000175000017500000004234315060017337022512 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* #define DEBUG */ #include #include "hkl/ccan/array_size/array_size.h" #include "hkl/hkl-macros-private.h" #include "hkl-binoculars-private.h" #define CONTRIBUTIONS "contributions" #define COUNTS "counts" static hid_t dataspace_new_from_axes(const darray_axis *axes) { HklBinocularsAxis *axis; hid_t hid; darray(hsize_t) dims; darray_init(dims); darray_foreach(axis, *axes){ if(axis_size(axis) > 1) darray_append(dims, axis_size(axis)); } hid = H5Screate_simple(darray_size(dims), &darray_item(dims, 0), NULL); darray_free(dims); return hid; } static herr_t save_string(hid_t group_id, const char *name, const char* config) { hid_t dataset_id; hid_t dataspace_id; hid_t filetype; hid_t memtype; herr_t status = SUCCEED; hsize_t dims[] = {1}; if ((filetype = H5Tcopy (H5T_C_S1)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_filetype; } if ((status = H5Tset_size (filetype, strlen(config))) < 0){ goto fail_memtype; } if ((memtype = H5Tcopy (H5T_C_S1)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_memtype; } if ((status = H5Tset_size (memtype, strlen(config))) < 0){ goto fail_dataspace_id; } if ((dataspace_id = H5Screate_simple(1, dims, NULL)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_dataspace_id; } if ((dataset_id = H5Dcreate (group_id, "config", filetype, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_dataset_id; } status = H5Dwrite (dataset_id, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, config); H5Dclose(dataset_id); fail_dataset_id: H5Sclose(dataspace_id); fail_dataspace_id: H5Tclose(memtype); fail_memtype: H5Tclose(filetype); fail_filetype: return status; } static herr_t add_dataset(hid_t id, const char *name, hid_t type, hid_t space_id, void *arr) { herr_t status = SUCCEED; hid_t dataset_id; if ((dataset_id = H5Dcreate(id, name, type, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_dataset_id; } status = H5Dwrite(dataset_id, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, arr); H5Dclose(dataset_id); fail_dataset_id: return status; } static herr_t add_dataset_from_axes(hid_t id, const char *name, hid_t type, const darray_axis *axes, void *arr) { herr_t status = SUCCEED; hid_t space_id; if ((space_id = dataspace_new_from_axes(axes)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_space_id; } status = add_dataset(id, name, type, space_id, arr); H5Sclose(space_id); fail_space_id: return status; } static herr_t add_dataset_from_dims(hid_t id, const char *name, hid_t type, hsize_t ndims, hsize_t *dims, void *arr) { herr_t status = SUCCEED; hid_t space_id; if ((space_id = H5Screate_simple(ndims, dims, NULL)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_space_id; } status = add_dataset(id, name, type, space_id, arr); H5Sclose(space_id); fail_space_id: return status; } static void *read_dataset(hid_t loc_id, const char *name, hid_t type, size_t n) { hid_t dataset_id; hid_t dataspace_id; size_t elem_size; void *arr = NULL; hssize_t n_arr; /* now read the data contributions */ if ((dataset_id = H5Dopen(loc_id, name, H5P_DEFAULT)) == H5I_INVALID_HID){ goto fail_dataset_id; } if((dataspace_id = H5Dget_space(dataset_id)) == H5I_INVALID_HID){ goto fail_dataspace_id; } if((n_arr = H5Sget_simple_extent_npoints(dataspace_id)) < 0){ goto fail_arr; } if (n != n_arr){ fprintf(stdout, "the dataset \"%s\" contains, %ld points," " but the expectation was %ld points\n", name, n_arr, n); goto fail_arr; } if((elem_size = H5Tget_size(type)) == 0){ goto fail_arr; } if ((arr = malloc(n_arr * elem_size)) == NULL){ goto fail_arr; } if (H5Dread(dataset_id, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, arr) < 0){ free(arr); arr = NULL; } fail_arr: H5Sclose(dataspace_id); fail_dataspace_id: H5Dclose(dataset_id); fail_dataset_id: return arr; } int hkl_binoculars_cube_save_hdf5(const char *fn, const char *config, const HklBinocularsCube *self) { double axis_idx = 0; hid_t file_id; hid_t groupe_id; hid_t groupe_axes_id; herr_t status = SUCCEED; HklBinocularsAxis *axis; if ((file_id = H5Fcreate(fn, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_file_id; } if ((groupe_id = H5Gcreate(file_id, "binoculars", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) == H5I_INVALID_HID){ status = H5I_INVALID_HID; goto fail_group_id; } // config if ((status = save_string(groupe_id, "config", config)) < 0){ goto fail_groupe_axes_id; } // axes if ((groupe_axes_id = H5Gcreate(groupe_id, "axes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) == H5I_INVALID_HID) { status = H5I_INVALID_HID; goto fail_groupe_axes_id; }; darray_foreach(axis, self->axes){ double *arr; int do_break = 0; hsize_t dims[] = {6}; if(axis_size(axis) > 1){ if ((arr = hkl_binoculars_axis_array(axis)) == NULL){ status = H5E_NOSPACE; do_break = 1; goto fail_arr; } /* the arr[0] contains the axis index expected by the binoculars gui. This value must start from zero, so compute this index using an external counter instead of using the original index stored in the axis array. We need this trick because we remove all axes with a dimension of 1*/ arr[0] = axis_idx++; if ((status = add_dataset_from_dims(groupe_axes_id, g_quark_to_string(axis->name), H5T_NATIVE_DOUBLE, ARRAY_SIZE(dims), dims, arr)) < 0){ do_break = 1; } free(arr); fail_arr: } if (do_break) break; } if(status < 0){ goto fail; } // photons if ((status = add_dataset_from_axes(groupe_id, COUNTS, H5T_NATIVE_FLOAT, &self->axes, self->photons)) < 0){ goto fail; } // contributions status = add_dataset_from_axes(groupe_id, CONTRIBUTIONS, H5T_NATIVE_UINT32, &self->axes, self->contributions); fail: H5Gclose(groupe_axes_id); fail_groupe_axes_id: H5Gclose(groupe_id); fail_group_id: H5Fclose(file_id); fail_file_id: return status; } static char *name_new_by_idx(hid_t group_id, ssize_t idx) { ssize_t s; char *name = NULL; /* find the dataset name */ /* get the size of the axis name without the final \0 */ if((s = H5Lget_name_by_idx(group_id, ".", H5_INDEX_NAME, H5_ITER_INC, idx, NULL, 0, H5P_DEFAULT)) < 0){ goto fail; } if ((name = malloc(s + 1)) == NULL){ goto fail; } if (H5Lget_name_by_idx(group_id, ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, s+1, /* when reading we need the size * with \0 which is added by the * method */ H5P_DEFAULT) < 0){ free(name); name = NULL; }; fail: return name; } static herr_t axis_from_hdf5(darray_axis *axes, hid_t group_id, const char *fname) { darray_axis new_axes; double *arr_axis; herr_t status = SUCCEED; hid_t dataset_id_arr; hid_t dataspace_id_arr; H5G_info_t info; size_t i; ssize_t n; darray_init(new_axes); if((status = H5Gget_info(group_id, &info)) < 0){ fprintf(stdout, "number of link in the axes group: %ld\n", info.nlinks); goto failed; } darray_resize(new_axes, info.nlinks); { double arr_axes[info.nlinks][6]; int arr_valid[info.nlinks]; for(i=0; i= info.nlinks){ fprintf(stdout, "the index of the axis %d is out of range [0-%ld]\n", idx, info.nlinks = 1); do_break = 1; status = H5E_BADRANGE; goto fail_read; } /* ok set all the parameters */ hkl_binoculars_axis_init_from_array(&darray_item(new_axes, idx), name, arr_axis, n); #if DEBUG fprintf(stdout, "axis (%ld): %s", s, &name[0]); for(j=0; jcontributions = contributions; cube->photons = counts; #if DEBUG hkl_binoculars_cube_fprintf(stdout, cube); #endif fail: H5Gclose(group_axes_id); failed_group_axes_id: H5Gclose(group_binoculars_id); failed_group_binoculars_id: H5Fclose(file_id); failed_file_id: return cube; } static HklBinocularsCube *hkl_binoculars_cube_new_from_files(const char *fnames[], size_t n_fnames) { size_t i; HklBinocularsCube *self = hkl_binoculars_cube_new_empty(); for (i=0; i. * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_BINOCULARS_H__ #define __HKL_BINOCULARS_H__ #include "hkl.h" #include "stdint.h" G_BEGIN_DECLS /****************/ /* 2D detectors */ /****************/ typedef enum _HklBinocularsDetectorEnum { HKL_BINOCULARS_DETECTOR_IMXPAD_S140 = 0, HKL_BINOCULARS_DETECTOR_XPAD_FLAT_CORRECTED, HKL_BINOCULARS_DETECTOR_IMXPAD_S70, HKL_BINOCULARS_DETECTOR_DECTRIS_EIGER1M, HKL_BINOCULARS_DETECTOR_UFXC, HKL_BINOCULARS_DETECTOR_MERLIN, HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD, HKL_BINOCULARS_DETECTOR_MERLIN_MEDIPIX_3RX_QUAD_512, HKL_BINOCULARS_DETECTOR_CIRPAD, HKL_BINOCULARS_DETECTOR_RIGAKU_XSPA_1M, /* Add new your detectors here */ HKL_BINOCULARS_DETECTOR_NUM_DETECTORS, /* wip */ } HklBinocularsDetectorEnum; HKLAPI extern int hkl_binoculars_detector_2d_number_of_detectors(void); HKLAPI extern const char *hkl_binoculars_detector_2d_name_get(HklBinocularsDetectorEnum n); HKLAPI extern void hkl_binoculars_detector_2d_shape_get(HklBinocularsDetectorEnum n, int *width, int *height); HKLAPI extern double *hkl_binoculars_detector_2d_coordinates_get(HklBinocularsDetectorEnum n); HKLAPI extern void hkl_binoculars_detector_2d_coordinates_save(HklBinocularsDetectorEnum n, const char *fname); HKLAPI extern uint8_t *hkl_binoculars_detector_2d_mask_get(HklBinocularsDetectorEnum n); HKLAPI extern uint8_t *hkl_binoculars_detector_2d_mask_load(HklBinocularsDetectorEnum n, const char *filename); HKLAPI extern void hkl_binoculars_detector_2d_mask_save(HklBinocularsDetectorEnum n, const char *fname); HKLAPI extern void hkl_binoculars_detector_2d_sixs_calibration(HklBinocularsDetectorEnum n, double *arr, int width, int height, int ix0, int iy0, double sdd, double detrot, int normalize_flag); HKLAPI extern uint32_t *hkl_binoculars_detector_2d_fake_image_uint32(HklBinocularsDetectorEnum n, size_t *n_pixels); HKLAPI extern int hkl_binoculars_detector_2d_img_load_into(HklBinocularsDetectorEnum n, const char *filename, void *buffer, int n_buffer); /***********/ /* Limits */ /***********/ typedef struct _HklBinocularsAxisLimits HklBinocularsAxisLimits; HKLAPI extern void hkl_binoculars_axis_limits_free(HklBinocularsAxisLimits *self); HKLAPI extern HklBinocularsAxisLimits *hkl_binoculars_axis_limits_new(const ptrdiff_t *min, const ptrdiff_t *max); /********/ /* Axis */ /********/ typedef struct _HklBinocularsAxis HklBinocularsAxis; HKLAPI extern double *hkl_binoculars_axis_array(const HklBinocularsAxis *self); /*********/ /* Space */ /*********/ typedef struct _HklBinocularsSpace HklBinocularsSpace; typedef enum _HklBinocularsSurfaceOrientationEnum { HKL_BINOCULARS_SURFACE_ORIENTATION_VERTICAL = 0, HKL_BINOCULARS_SURFACE_ORIENTATION_HORIZONTAL, /* Add new your detectors here */ HKL_BINOCULARS_SURFACE_ORIENTATION_NUM_ORIENTATION, } HklBinocularsSurfaceOrientationEnum; HKLAPI extern HklBinocularsSpace *hkl_binoculars_space_new(size_t n_indexes_0, size_t n_axes); HKLAPI extern void hkl_binoculars_space_free(HklBinocularsSpace *self); HKLAPI extern void hkl_binoculars_space_fprintf(FILE *f, const HklBinocularsSpace *space); /********/ /* Cube */ /********/ typedef struct _HklBinocularsCube HklBinocularsCube; HKLAPI extern void hkl_binoculars_cube_free(HklBinocularsCube *self); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new(size_t n_spaces, const HklBinocularsSpace *const *spaces); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_empty(void); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_empty_from_cube(const HklBinocularsCube *src); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_copy(const HklBinocularsCube *src); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_from_file(const char *fname); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_from_space(const HklBinocularsSpace *space); HKLAPI extern HklBinocularsCube *hkl_binoculars_cube_new_merge(const HklBinocularsCube *cube1, const HklBinocularsCube *cube2); HKLAPI extern unsigned int hkl_binoculars_cube_cmp(const HklBinocularsCube *self, const HklBinocularsCube *other); HKLAPI extern void hkl_binoculars_cube_add_cube(HklBinocularsCube *self, const HklBinocularsCube *cube); HKLAPI extern void hkl_binoculars_cube_add_space(HklBinocularsCube *self, const HklBinocularsSpace *space); HKLAPI extern int hkl_binoculars_cube_save_hdf5(const char *fn, const char *config, const HklBinocularsCube *self); HKLAPI extern void hkl_binoculars_cube_merge_and_save_hdf5(const char *fn, const char *config, const char *fnames[], size_t n_fnames); HKLAPI extern void hkl_binoculars_cube_fprintf(FILE *f, const HklBinocularsCube *self); /***************/ /* Projections */ /***************/ /* subprojection for QCustom */ /* q_scannumber / tth_scannumber ( scannumber = numero du scan) (optional) */ /* q_timescan0 / tth_timescan0 (timescan0 = timestamp du 1er point du scan (constant pour 1 scan)) */ /* q_chi_phi (q, chi = arccos(qz/q), phi = arctan2(qy,qx)) */ /* Adding the polarization correction from fit2D */ /* dans un premier temps faire (1 - (epsilon (0, 1, 0) . kf) ^ 2) */ /* pola = "0.5 * (1.0 + cos(tth)**2 - factor * cos(2.0 * (chi + axis_offset)) * (1.0 - cos(tth)**2))" */ /* angles */ #define HKL_BINOCULARS_SPACE_ANGLES_DECL(image_t) \ void hkl_binoculars_space_angles_ ## image_t (HklBinocularsSpace *space, \ const HklGeometry *geometry, \ const image_t *image, \ size_t n_pixels, \ double weight, \ const double *pixels_coordinates, \ size_t pixels_coordinates_ndim, \ const size_t *pixels_coordinates_dims, \ const double *resolutions, \ size_t n_resolutions, \ const uint8_t *masked, \ const HklBinocularsAxisLimits **limits, \ size_t n_limits, \ const char *sample_axis) HKLAPI extern HKL_BINOCULARS_SPACE_ANGLES_DECL(double); HKLAPI extern HKL_BINOCULARS_SPACE_ANGLES_DECL(int32_t); HKLAPI extern HKL_BINOCULARS_SPACE_ANGLES_DECL(uint16_t); HKLAPI extern HKL_BINOCULARS_SPACE_ANGLES_DECL(uint32_t); /* qcustom */ typedef enum _HklBinocularsQCustomSubProjectionEnum { HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_QZ = 0, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TTH_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIX_QX, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIY_QY, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_PHIZ_QZ, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_STEREO, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_DELTALAB_GAMMALAB_SAMPLEAXIS, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_X_Y_Z, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Y_Z_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_QPAR_QPER, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPARS_QPER_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QPAR_QPER_SAMPLEAXIS, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TTH, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SAMPLEAXIS_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QY_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QX_QZ_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_QY_QZ_TIMESTAMP, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_AZIMUTH, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_TIMESCAN0, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_Q_SCANNUMBER, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_TTH_SCANNUMBER, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIX_Q_THETAX, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIY_Q_THETAY, HKL_BINOCULARS_QCUSTOM_SUB_PROJECTION_PHIZ_Q_THETAZ, /* Add new your subprojection in the same order than the haskell order here */ HKL_BINOCULARS_QCUSTOM_NUM_SUBPROJECTIONS, } HklBinocularsQCustomSubProjectionEnum; #define HKL_BINOCULARS_SPACE_QCUSTOM_DECL(image_t) \ void hkl_binoculars_space_qcustom_ ## image_t (HklBinocularsSpace *space, \ const HklGeometry *geometry, \ const image_t *image, \ size_t n_pixels, \ double weight, \ const double *pixels_coordinates, \ size_t pixels_coordinates_ndim, \ const size_t *pixels_coordinates_dims, \ const double *resolutions, \ size_t n_resolutions, \ const uint8_t *masked, \ HklBinocularsSurfaceOrientationEnum surf, \ const HklBinocularsAxisLimits **limits, \ size_t n_limits, \ double timestamp, \ double timescan0, \ int scannumber, \ const HklBinocularsQCustomSubProjectionEnum subprojection, \ double uqx, \ double uqy, \ double uqz, \ const char *sample_axis, \ int do_polarisation_correction \ ) HKLAPI extern HKL_BINOCULARS_SPACE_QCUSTOM_DECL(double); HKLAPI extern HKL_BINOCULARS_SPACE_QCUSTOM_DECL(int32_t); HKLAPI extern HKL_BINOCULARS_SPACE_QCUSTOM_DECL(uint16_t); HKLAPI extern HKL_BINOCULARS_SPACE_QCUSTOM_DECL(uint32_t); /* hkl */ #define HKL_BINOCULARS_SPACE_HKL_DECL(image_t) \ void hkl_binoculars_space_hkl_ ## image_t (HklBinocularsSpace *space, \ const HklGeometry *geometry, \ const HklSample *sample, \ const image_t *image, \ size_t n_pixels, \ double weight, \ const double *pixels_coordinates, \ size_t pixels_coordinates_ndim, \ const size_t *pixels_coordinates_dims, \ const double *resolutions, \ size_t n_resolutions, \ const uint8_t *masked, \ const HklBinocularsAxisLimits **limits, \ size_t n_limits, \ int do_polarisation_correction \ ) HKLAPI extern HKL_BINOCULARS_SPACE_HKL_DECL(double); HKLAPI extern HKL_BINOCULARS_SPACE_HKL_DECL(int32_t); HKLAPI extern HKL_BINOCULARS_SPACE_HKL_DECL(uint16_t); HKLAPI extern HKL_BINOCULARS_SPACE_HKL_DECL(uint32_t); /* test */ #define HKL_BINOCULARS_SPACE_TEST_DECL(image_t) \ void hkl_binoculars_space_test_ ## image_t (HklBinocularsSpace *space, \ const HklGeometry *geometry, \ const HklSample *sample, \ const image_t *image, \ size_t n_pixels, \ double weight, \ const double *pixels_coordinates, \ size_t pixels_coordinates_ndim, \ const size_t *pixels_coordinates_dims, \ const double *resolutions, \ size_t n_resolutions, \ const uint8_t *masked, \ const HklBinocularsAxisLimits **limits, \ size_t n_limits, \ int do_polarisation_correction \ ) HKLAPI extern HKL_BINOCULARS_SPACE_TEST_DECL(double); HKLAPI extern HKL_BINOCULARS_SPACE_TEST_DECL(int32_t); HKLAPI extern HKL_BINOCULARS_SPACE_TEST_DECL(uint16_t); HKLAPI extern HKL_BINOCULARS_SPACE_TEST_DECL(uint32_t); G_END_DECLS #endif hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-detectors-2d-private.h0000664000175000017500000002143215143645056025236 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_BINOCULARS_DETECTORS_2D_PRIVATE_H__ #define __HKL_BINOCULARS_DETECTORS_2D_PRIVATE_H__ #include #include #include #include #include "datatype99.h" #include "hkl/ccan/array_size/array_size.h" #include "hkl-binoculars.h" /**********/ /* macros */ /**********/ #define wrong_detector(n) fprintf(stderr, "You requested a non existing detector %d the maximum number available is %d", n, HKL_BINOCULARS_DETECTOR_NUM_DETECTORS) #define shape_size(shape) (shape).width * (shape).height #define flat_index(shape, i, j) i + j * (shape).width #define get_row(arr, shape, i) &arr[(i) * (shape).width] #define get_col(arr, i) &arr[i] #define replicate_row(row, shape, n) \ do{ \ for(int i_=1; i_<(n); ++i_){ \ memcpy(&(row)[i_ * (shape).width], (row), (shape).width * sizeof(*(row))); \ } \ } while(0) #define fill_row(row, shape, val) \ do{ \ for(int i_=0; i_<(shape).width; ++i_){ \ (row)[i_] = (val); \ } \ } while(0) #define replicate_column(col, shape, n) \ do{ \ for(int i_=0; i_ ARRAY_SIZE(detectors)) n = 0; /* use the first detector as default */ return detectors[n]; } #endif hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-geometry.c0000664000175000017500000000604415075700105023106 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2024 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* #define DEBUG */ #include #include "hkl-binoculars-private.h" mat4s hkl_binoculars_parameter_transformation_get(const HklParameter *self) { CGLM_ALIGN_MAT mat4s r = GLMS_MAT4_IDENTITY_INIT; HklParameterType type = hkl_parameter_type_get(self); match(type){ of(Parameter) { }; of(Rotation, axis_v) { CGLM_ALIGN_MAT vec3s axis = {{axis_v->data[0], axis_v->data[1], axis_v->data[2]}}; r = glms_rotate_make(self->_value, axis); }; of(RotationWithOrigin, axis_v, pivot_v) { CGLM_ALIGN_MAT vec3s pivot = {{pivot_v->data[0], pivot_v->data[1], pivot_v->data[2]}}; float angle = self->_value; CGLM_ALIGN_MAT vec3s axis = {{axis_v->data[0], axis_v->data[1], axis_v->data[2]}}; #if ((CGLM_VERSION_MAJOR * 10000 + CGLM_VERSION_MINOR * 100 + CGLM_VERSION_PATCH) < 902) CGLM_ALIGN_MAT mat4s m = glms_mat4_identity(); r = glms_rotate_atm(m, pivot, angle, axis); #else r = glms_rotate_atm(pivot, angle, axis); #endif }; of(Translation, v_v) { CGLM_ALIGN_MAT vec3s v = {{v_v->data[0], v_v->data[1], v_v->data[2]}}; v = glms_vec3_scale(v, self->_value); #ifdef DEBUG glms_vec3_print(v, stdout); hkl_vector_fprintf(stdout, v_v); fprintf(stdout, "\nvalue: %g", self->_value); #endif r = glms_translate_make(v); }; } return r; } mat4s hkl_binoculars_holder_transformation_get(const HklHolder *self) { CGLM_ALIGN_MAT mat4s r = GLMS_MAT4_IDENTITY_INIT; size_t i; /* for each axis from the end apply the transformation to the vector */ for(i=0;iconfig->len;i++){ HklParameter *p = darray_item(self->geometry->axes, self->config->idx[i]); r = glms_mat4_mul(r, hkl_binoculars_parameter_transformation_get(p)); } return r; } hkl-5.1.7/binoculars-ng/binoculars/Makefile.in0000664000175000017500000005401415144640450020244 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to produce Makefile.in VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = binoculars-ng/binoculars ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libhkl_binoculars_la_LIBADD = am_libhkl_binoculars_la_OBJECTS = hkl-binoculars.lo \ hkl-binoculars-detectors-2d.lo hkl-binoculars-geometry.lo \ hkl-binoculars-io-cnpy.lo hkl-binoculars-io-hdf5.lo \ hkl-binoculars-io-img.lo libhkl_binoculars_la_OBJECTS = $(am_libhkl_binoculars_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl-binoculars-detectors-2d.Plo \ ./$(DEPDIR)/hkl-binoculars-geometry.Plo \ ./$(DEPDIR)/hkl-binoculars-io-cnpy.Plo \ ./$(DEPDIR)/hkl-binoculars-io-hdf5.Plo \ ./$(DEPDIR)/hkl-binoculars-io-img.Plo \ ./$(DEPDIR)/hkl-binoculars.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libhkl_binoculars_la_SOURCES) DIST_SOURCES = $(libhkl_binoculars_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -DPKGDATA=\""$(pkgdatadir)"\" \ $(CGLM_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = -version-info 0:0:0 \ $(top_builddir)/hkl/libhkl-private.la \ $(CGLM_LIBS) \ $(GLIB_LIBS) \ $(GSL_LIBS) \ $(HDF5_LIBS) noinst_LTLIBRARIES = libhkl-binoculars.la libhkl_binoculars_la_SOURCES = \ hkl-binoculars.c \ hkl-binoculars.h \ hkl-binoculars-detectors-2d.c \ hkl-binoculars-detectors-2d-private.h \ hkl-binoculars-geometry.c \ hkl-binoculars-io-cnpy.c \ hkl-binoculars-io-hdf5.c \ hkl-binoculars-io-img.c \ hkl-binoculars-io-private.h \ hkl-binoculars-private.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu binoculars-ng/binoculars/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu binoculars-ng/binoculars/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libhkl-binoculars.la: $(libhkl_binoculars_la_OBJECTS) $(libhkl_binoculars_la_DEPENDENCIES) $(EXTRA_libhkl_binoculars_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libhkl_binoculars_la_OBJECTS) $(libhkl_binoculars_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-detectors-2d.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-geometry.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-io-cnpy.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-io-hdf5.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars-io-img.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-binoculars.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/hkl-binoculars-detectors-2d.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-geometry.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-cnpy.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-hdf5.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-img.Plo -rm -f ./$(DEPDIR)/hkl-binoculars.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/hkl-binoculars-detectors-2d.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-geometry.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-cnpy.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-hdf5.Plo -rm -f ./$(DEPDIR)/hkl-binoculars-io-img.Plo -rm -f ./$(DEPDIR)/hkl-binoculars.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-io-cnpy.c0000664000175000017500000003676115133711150022637 0ustar00piccapicca#include #include #include #include #include #include #include #include "hkl-binoculars-detectors-2d-private.h" #include "hkl-binoculars-io-private.h" #include "hkl/ccan/array_size/array_size.h" #include "hkl/ccan/build_assert/build_assert.h" #include "hkl/ccan/darray/darray.h" #define MAX_HEADER_SIZE 10000 #define REGEX_DESCR "'descr':\\s+'(.+)'" #define REGEX_FORTRAN "'fortran_order':\\s+(.+)" #define REGEX_SHAPE "'shape':\\s+\\((.+)\\)" #define REGEX_HEADER "^\\{" REGEX_DESCR ",\\s+" REGEX_FORTRAN ",\\s+" REGEX_SHAPE ",\\s+" "\\}\\s+" datatype( Endianess, (LittleEndian), (BigEndian) ); static const char magic[] = {(char)0x93, 'N', 'U', 'M', 'P', 'Y'}; #define VERSION_1 0x01 #define VERSION_2 0x02 #define VERSION_3 0x03 struct pre_header_t { char magic[6]; uint8_t major; uint8_t minor; }; struct descr_t { Endianess endianess; HklBinocularsNpyDataType elem_type; size_t elem_size; }; struct npy_t { struct pre_header_t pre; uint32_t header_len; char *header; struct descr_t descr; int fortran_order; darray_int shape; void *arr; }; void npy_free_but_array(struct npy_t *npy) { free(npy->header); free(npy); } static char *extract_as_string(const char *header, regmatch_t match) { int size = match.rm_eo - match.rm_so; char *buffer = g_new(char, size + 1); strncpy(buffer, &header[match.rm_so], size); buffer[size] = 0x0; return buffer; } static struct descr_t parse_descr(const char *header, regmatch_t match) { char *description = extract_as_string(header, match); struct descr_t descr; /* endianness */ switch(description[0]){ case '|': case '<': descr.endianess = LittleEndian(); break; }; /* elem_type */ switch(description[1]){ case 'b': descr.elem_type = HklBinocularsNpyBool(); break; case 'f': descr.elem_type = HklBinocularsNpyDouble(); break; default: abort(); }; /* elem_size */ descr.elem_size = atoi(&description[2]); free(description); return descr; } static int parse_fortran_order(const char *header, regmatch_t match) { int fortran_order = 0; if(!strncmp(&header[match.rm_so], "True", 4)) fortran_order = 1; return fortran_order; } static void parse_shape(const char *header, regmatch_t match, darray_int *shape) { char *repr = extract_as_string(header, match); char *token; char *saveptr; darray_free(*shape); darray_init(*shape); for(;;repr=NULL){ int val; token=strtok_r(repr, ",", &saveptr); if(NULL == token) break; val = atoi(token); /* TODO deal with atoi errors */ darray_append(*shape, val); }; free(repr); } static int shape_cmp(const darray_int *sh1, const darray_int *sh2) { int i; if (darray_size(*sh1) != darray_size(*sh2)) return -1; /* not idential */ for(i=0; ipre) == 8); /* read the pre_header */ res = fread(&npy->pre, 1, sizeof(npy->pre), fp); assert(res == 8); if(strncmp(magic, npy->pre.magic, ARRAY_SIZE(magic))) goto fail_no_header; /* read the header size */ switch (npy->pre.major) { case VERSION_1: { uint16_t len; res = fread(&len, 1, sizeof(len), fp); assert(res == 2); npy->header_len = (uint32_t)len < MAX_HEADER_SIZE ? (uint32_t)len : MAX_HEADER_SIZE; break; } case VERSION_2: { res = fread(&npy->header_len, 1, sizeof(npy->header_len), fp); assert(res == 4); break; } case VERSION_3: { res = fread(&npy->header_len, 1, sizeof(npy->header_len), fp); assert(res == 4); break; } }; /* read the header */ npy->header = g_new (char, npy->header_len); res = fread(npy->header, 1, npy->header_len, fp); assert(res == npy->header_len); /* parse the header */ /* {descr: '|b1', fortran_order: False, shape: (240, 560), } */ errcode = regcomp(&preg, REGEX_HEADER, REG_EXTENDED); if(errcode){ regerror(errcode, &preg, errbuf, 256); fprintf(stdout, "errcode: %s\n", errbuf); goto fail; } errcode = regexec(&preg, npy->header, ARRAY_SIZE(matches), matches, 0); if(errcode){ regerror(errcode, &preg, errbuf, 256); fprintf(stdout, "errcode: %s\n", errbuf); regfree(&preg); goto fail; } regfree(&preg); npy->descr = parse_descr(npy->header, matches[1]); npy->fortran_order = parse_fortran_order(npy->header, matches[2]); parse_shape(npy->header, matches[3], &npy->shape); if(0 != shape_cmp(shape, &npy->shape)) goto fail; /* read the array */ int nbytes = shape_size_(&npy->shape) * npy->descr.elem_size; npy->arr = malloc( nbytes ); if(NULL == npy->arr) goto fail; res = fread(npy->arr, 1, nbytes, fp); assert(res == nbytes); return npy; fail: free(npy->header); fail_no_header: free(npy); return NULL; } #define convert(npy_, from_, dest_, to_) \ do { \ size_t i; \ (dest_) = malloc(n * sizeof(to_ *)); \ if (NULL != (dest_)){ \ for(i=0; iarr))[i]; \ } \ } \ free((npy_)->arr); \ npy_free_but_array((npy_)); \ } while (0) void *npy_load(const char *fname, HklBinocularsNpyDataType expected_type, const darray_int *shape) { void *arr = NULL; FILE* fp = fopen(fname, "rb"); if (NULL != fp){ struct npy_t *npy = parse_npy(fp, shape); if (NULL != npy) { HklBinocularsNpyDataType read_type = npy->descr.elem_type; size_t n = shape_size_(&npy->shape); match(expected_type){ of(HklBinocularsNpyBool) { match(read_type){ of(HklBinocularsNpyBool) { arr = npy->arr; npy_free_but_array(npy); } of(HklBinocularsNpyDouble) { convert(npy, double, arr, uint8_t); } of(HklBinocularsNpyInt32) { convert(npy, int32_t, arr, uint8_t); } of(HklBinocularsNpyUInt16) { convert(npy, uint16_t, arr, uint8_t); } } } of(HklBinocularsNpyDouble) { match(read_type){ of(HklBinocularsNpyBool) { convert(npy, uint8_t, arr, double); } of(HklBinocularsNpyUInt16) { convert(npy, uint16_t, arr, double); } of(HklBinocularsNpyInt32) { convert(npy, int32_t, arr, double); } of(HklBinocularsNpyDouble) { arr = npy->arr; npy_free_but_array(npy); } } } of(HklBinocularsNpyInt32) { match(read_type){ of(HklBinocularsNpyBool) { convert(npy, uint8_t, arr, int32_t); } of(HklBinocularsNpyUInt16) { convert(npy, uint16_t, arr, int32_t); } of(HklBinocularsNpyInt32) { arr = npy->arr; npy_free_but_array(npy); } of(HklBinocularsNpyDouble) { convert(npy, double, arr, int32_t); } } } of(HklBinocularsNpyUInt16) { match(read_type){ of(HklBinocularsNpyBool) { convert(npy, uint8_t, arr, uint16_t); } of(HklBinocularsNpyUInt16) { arr = npy->arr; npy_free_but_array(npy); } of(HklBinocularsNpyInt32) { convert(npy, int32_t, arr, uint16_t); } of(HklBinocularsNpyDouble) { convert(npy, double, arr, uint16_t); } } } } } fclose(fp); } return arr; } static inline char bigendian(void) { int x = 1; return (((char *)&x)[0]) ? '<' : '>'; } static inline char map_type(HklBinocularsNpyDataType type) { char res = '?'; match(type){ of(HklBinocularsNpyBool) res = 'b'; of(HklBinocularsNpyDouble) res = 'f'; of(HklBinocularsNpyInt32) res = 'i'; of(HklBinocularsNpyUInt16) res = 'u'; } /* if(t == typeid(float) ) return 'f'; */ /* if(t == typeid(double) ) return 'f'; */ /* if(t == typeid(long double) ) return 'f'; */ /* if(t == typeid(int) ) return 'i'; */ /* if(t == typeid(char) ) return 'i'; */ /* if(t == typeid(short) ) return 'i'; */ /* if(t == typeid(long) ) return 'i'; */ /* if(t == typeid(long long) ) return 'i'; */ /* if(t == typeid(unsigned char) ) return 'u'; */ /* if(t == typeid(unsigned short) ) return 'u'; */ /* if(t == typeid(unsigned long) ) return 'u'; */ /* if(t == typeid(unsigned long long) ) return 'u'; */ /* if(t == typeid(unsigned int) ) return 'u'; */ /* if(t == typeid(bool) ) return 'b'; */ /* if(t == typeid(std::complex) ) return 'c'; */ /* if(t == typeid(std::complex) ) return 'c'; */ /* if(t == typeid(std::complex) ) return 'c'; */ /* else return '?'; */ return res; } int npy_data_type_element_size(HklBinocularsNpyDataType type) { int res = 8; match(type){ of(HklBinocularsNpyBool) res = 1; of(HklBinocularsNpyDouble) res = 8; of(HklBinocularsNpyInt32) res = 4; of(HklBinocularsNpyUInt16) res = 2; } return res; } int npy_data_type_cmp(HklBinocularsNpyDataType t1, const HklBinocularsNpyDataType t2) { /* fprintf(stdout, "type: %d %d\n", t1.tag, t2.tag); */ return t1.tag - t2.tag; } static inline char *create_npy_header(HklBinocularsNpyDataType type, const darray_int *shape, size_t *header_size) { int i; char *header; char *dict; size_t dict_size; FILE *stream; /* first compute the dict and its size */ stream = open_memstream(&dict, &dict_size); if (NULL == stream) goto fail; fprintf(stream,"{"); fprintf(stream, "'descr': '%c%c%d'", bigendian(), map_type(type), npy_data_type_element_size(type)); fprintf(stream, ", "); fprintf(stream, "'fortran_order' : False"); fprintf(stream, ", "); fprintf(stream, "'shape': ("); fprintf(stream, "%d", darray_item(*shape, 0)); for(i=1; i. * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl.h" #include "hkl-binoculars-detectors-2d-private.h" G_BEGIN_DECLS datatype( HklBinocularsNpyDataType, (HklBinocularsNpyBool), (HklBinocularsNpyDouble), (HklBinocularsNpyInt32), (HklBinocularsNpyUInt16) ); extern int npy_data_type_cmp(const HklBinocularsNpyDataType t1, const HklBinocularsNpyDataType t2); extern int npy_data_type_element_size(const HklBinocularsNpyDataType t); extern void *npy_load(const char *filename, HklBinocularsNpyDataType type, const darray_int *shape); extern void npy_save(const char *fname, const void *arr, HklBinocularsNpyDataType type, const darray_int *shape); G_END_DECLS #endif hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-io-img.c0000664000175000017500000001333714770555621022453 0ustar00piccapicca#include #include #include #include #include #include #include #include "hkl-binoculars-detectors-2d-private.h" #include "hkl-binoculars-io-private.h" #include "hkl/ccan/array_size/array_size.h" #include "hkl/ccan/build_assert/build_assert.h" #include "hkl/ccan/darray/darray.h" #define HEADER_SIZE 1024 #define REGEX_HEADER_BYTES "HEADER_BYTES=\\s+(.+);" #define REGEX_Data_type "Data_type=\\s+(.+);" #define REGEX_DETECTOR_NAMES "DETECTOR_NAMES=\\s+(.+);" #define REGEX_SIZE1 "SIZE1=\\s+(.+);" #define REGEX_SIZE2 "SIZE2=\\s+(.+);" #define REGEX_HEADER "^\\{.*" REGEX_Data_type ".*" REGEX_DETECTOR_NAMES ".*" REGEX_SIZE1 ".*" REGEX_SIZE2 ".*\\}" static char *extract_as_string(const char *header, regmatch_t match) { int size = match.rm_eo - match.rm_so; char *buffer = g_new(char, size + 1); strncpy(buffer, &header[match.rm_so], size); buffer[size] = 0x0; return buffer; } static HklBinocularsNpyDataType parse_data_type(const char *header, regmatch_t match) { HklBinocularsNpyDataType data_type = HklBinocularsNpyBool(); char *string = extract_as_string(header, match); /* fprintf(stdout, "string = '%s'\n", string); */ if (0 == strcmp(string, "unsigned short int")) data_type = HklBinocularsNpyUInt16(); if (0 == strcmp(string, "long int")) data_type = HklBinocularsNpyInt32(); free(string); return data_type; } static size_t parse_size_t(const char *header, regmatch_t match) { size_t size = 0; char *string = extract_as_string(header, match); /* fprintf(stdout, "string = '%s'\n", string); */ size = atoi(string); free(string); return size; } static int parse_rigaku_img_header_into(FILE* fp, const HklBinocularsNpyDataType expected_data_type, const struct shape_t *shape, void *buffer, int n_buffer) { char header[HEADER_SIZE+1]; int res = FALSE; size_t n_read; regex_t preg; regmatch_t matches[5]; int errcode; char errbuf[256]; HklBinocularsNpyDataType data_type; size_t size1; size_t size2; /* read the header which is at least 1024 long */ n_read = fread(header, 1, HEADER_SIZE, fp); if(n_read != HEADER_SIZE) goto fail; /* assert(n_read == HEADER_SIZE); */ header[HEADER_SIZE] = 0x0; /* fprintf(stdout, "%s\n", header); */ /* parse the header size */ /* { */ /* HEADER_BYTES= 1024; */ /* COMMENT= Rigaku XSPA Image Header Format; */ /* Data_type= unsigned short int; */ /* DETECTOR_NAMES= XSPA_; */ /* SIZE1= 1034; */ /* SIZE2= 1104; */ /* XSPA_DETECTOR_DESCRIPTION= XSPA-1M; */ /* XSPA_DETECTOR_IDENTIFICATION= 2862D4C80E000023 28D945C80E0000A6; */ /* XSPA_DETECTOR_ACQUISITION_DATAMODE= 1S 14bit counter mode; */ /* XSPA_DETECTOR_ACQUISITION_EXPMODE= Fixed Time; */ /* XSPA_DETECTOR_ACQUISITION_EXPFRAME= 1 1; */ /* XSPA_DETECTOR_ACQUISITION_EXPTIME= 60000.000000; */ /* XSPA_DETECTOR_IMAGE_CORRECTION_NAMES= BadPix CntLoss FlatField MRedistr Pileup; */ /* XSPA_DETECTOR_IMAGE_CORRECTION_FLAGS=0 0 1 1 0; */ /* XSPA_DETECTOR_SETUP_ENERGY= 4.5-12.0keV 5.000000keV 15.000000keV; */ /* XSPA_DETECTOR_SETUP_THRESHOLD= 185 452 22; */ /* } */ errcode = regcomp(&preg, REGEX_HEADER, REG_EXTENDED); if(errcode){ regerror(errcode, &preg, errbuf, 256); fprintf(stdout, "errcode: %s\n", errbuf); goto fail; } errcode = regexec(&preg, header, ARRAY_SIZE(matches), matches, 0); if(errcode){ regerror(errcode, &preg, errbuf, 256); fprintf(stdout, "errcode: %s\n", errbuf); regfree(&preg); goto fail; } regfree(&preg); data_type = parse_data_type(header, matches[1]); if(0 != npy_data_type_cmp(data_type, expected_data_type)) goto fail; size1 = parse_size_t(header, matches[3]); if (0 == size1) goto fail; size2 = parse_size_t(header, matches[4]); if(0 == size2) goto fail; /* fprintf(stdout, "size: %ld %ld\n", size1, size2); */ /* read the array */ int nbytes = size1 * size2 * npy_data_type_element_size(data_type); assert(nbytes == n_buffer); if(NULL != buffer) { n_read = fread(buffer, 1, n_buffer, fp); assert(n_read == n_buffer); res = TRUE; } fail: return res; } static int hkl_binoculars_io_img_load_into(const char *fname, const struct shape_t *expected_shape, void *buffer, int n_buffer) { int res = FALSE; FILE* fp = fopen(fname, "rb"); HklBinocularsNpyDataType expected_type = HklBinocularsNpyInt32(); if (NULL != fp){ res = parse_rigaku_img_header_into(fp, expected_type, expected_shape, buffer, n_buffer); fclose(fp); } return res; } int hkl_binoculars_detector_2d_img_load_into(HklBinocularsDetectorEnum n, const char *filename, void *buffer, int n_buffer) { const struct detector_t detector = get_detector(n); /* fprintf(stdout, "try to read: %s\n", filename); */ return hkl_binoculars_io_img_load_into(filename, &detector.shape, buffer, n_buffer); } hkl-5.1.7/binoculars-ng/binoculars/hkl-binoculars-detectors-2d.c0000664000175000017500000005146314770555621023573 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include "datatype99.h" #include "hkl/ccan/array_size/array_size.h" #include "hkl-binoculars.h" #include "hkl-binoculars-detectors-2d-private.h" #include "hkl-binoculars-io-private.h" #include "hkl-quaternion-private.h" #include "hkl-vector-private.h" /***********************/ /* specific operations */ /***********************/ /* coordinates */ static double *coordinates_new(const struct shape_t *shape) { return g_new0(double, 3 * shape_size(*shape)); } static double tilling_coordinates_pattern(int i, double pixel_size, int module_size, int gap_size) { div_t q = div(i, module_size); return (i + q.quot * gap_size + 0.5) * pixel_size; } static double imxpad_coordinates_pattern(int i, int chip, double s) { div_t q = div(i, chip); if (i == 0){ return s / 2; } if (i == 1){ return s * 3.0 / 2.0; } if (q.rem == 0){ return s * (i + 3 * q.quot - 0.25); } if (q.rem <= (chip - 2)) { return s * (i + 3 * q.quot + 0.5); } if (q.rem <= (chip - 1)) { return s * (i + 3 * q.quot + 2.5); } return NAN; } static double *coordinates_rectangle(const struct shape_t *shape, double p_w, double p_h) { int i; double *arr = coordinates_new(shape); double *y, *z; /* y */ y = y_coordinates(arr, *shape); for(i=0; iwidth; ++i) y[i] = - (0.5 + i) * p_w; replicate_row(y, *shape, shape->height); /* z */ z = z_coordinates(arr, *shape); for(i=0; iheight; ++i){ double *row = get_row(z, *shape, i); fill_row(row, *shape, (0.5 + i) * p_h); } return arr; } static double* coordinates_get_tilling(const struct shape_t *shape, const struct tilling_t *tilling) { int i; double *arr; if (tilling->gap_in_data){ arr = coordinates_rectangle(shape, tilling->square.pixel_size, tilling->square.pixel_size); }else{ double *z, *y; arr = coordinates_new(shape); /* y */ y = y_coordinates(arr, *shape); for(i=0; iwidth; ++i){ y[i] = - tilling_coordinates_pattern(i, tilling->square.pixel_size, tilling->module_width, tilling->gap_width); } replicate_row(y, *shape, shape->height); /* z */ z = z_coordinates(arr, *shape); for(i=0; iheight; ++i){ double *row = get_row(z, *shape, i); fill_row(row, *shape, tilling_coordinates_pattern(i, tilling->square.pixel_size, tilling->module_height, tilling->gap_height)); } } return arr; } static void coordinates_set_imxpad_xyz(double *y, double *z, const struct shape_t *shape, const struct imxpad_t *imxpad) { int i; double *row; /* x = 0 (nothing to do) */ /* y */ row = y; for(i=0; iwidth; ++i){ row[i] = - imxpad_coordinates_pattern(i, imxpad->chip_w, imxpad->square.pixel_size); } replicate_row(row, *shape, shape->height); /* z */ for(i=0; iheight; ++i){ row = get_row(z, *shape, i); fill_row(row, *shape, imxpad_coordinates_pattern(i, imxpad->chip_h, imxpad->square.pixel_size)); } } static double *coordinates_get_imxpad(const struct shape_t *shape, const struct imxpad_t *imxpad) { double *arr = coordinates_new(shape); double *y = y_coordinates(arr, *shape); double *z = z_coordinates(arr, *shape); coordinates_set_imxpad_xyz(y, z, shape, imxpad); return arr; } static double *coordinates_get_cirpad(const struct shape_t *shape, const struct cirpad_t *cirpad) { int i; double *arr = coordinates_new(shape); double *x = x_coordinates(arr, *shape); double *y = y_coordinates(arr, *shape); double *z = z_coordinates(arr, *shape); for(i=0; in_imxpad_s70; ++i){ size_t j; CGLM_ALIGN_MAT mat4s t_m = GLMS_MAT4_IDENTITY_INIT; CGLM_ALIGN_MAT mat4s r_m = GLMS_MAT4_IDENTITY_INIT; double *x_imxpad = x + i * shape_size(cirpad->imxpad_s70_shape); double *y_imxpad = y + i * shape_size(cirpad->imxpad_s70_shape); double *z_imxpad = z + i * shape_size(cirpad->imxpad_s70_shape); /* set the default module coordinates */ coordinates_set_imxpad_xyz(y_imxpad, z_imxpad, &cirpad->imxpad_s70_shape, &cirpad->imxpad_s70); /* apply the transformations for each module */ t_m = glms_translate_make(cirpad->transformations[i].translation); /* glms_mat4_mul(t_m, glms_translate_make(v_t)); */ r_m = glms_euler_zyx(cirpad->transformations[i].eulers); for(j=0; jimxpad_s70_shape); ++j){ CGLM_ALIGN_MAT vec3s v = {{x_imxpad[j], y_imxpad[j], z_imxpad[j]}}; v = glms_mat4_mulv3(t_m, v, 1); v = glms_mat4_mulv3(r_m, v, 0); x_imxpad[j] = v.raw[0], y_imxpad[j] = v.raw[1], z_imxpad[j] = v.raw[2]; } } return arr; } static void flip_z(const struct shape_t *shape, double *arr) { int i; double *z = z_coordinates(arr, *shape); for(i=0; ipixel_size, square->pixel_size); } /* masks */ static uint8_t *no_mask(const struct shape_t *shape) { return g_new0(uint8_t, shape_size(*shape)); } static void mask_add_vertical_strip(uint8_t *arr, const struct shape_t *shape, size_t origin, size_t thickness) { if(origin < shape->width && origin + thickness <= shape->width){ uint8_t *col = get_col(arr, origin); fill_column(col, *shape, 1); replicate_column(col, *shape, thickness); } } static void mask_add_horizontal_strip(uint8_t *arr, const struct shape_t *shape, size_t origin, size_t thickness) { if(origin < shape->height && origin + thickness <= shape->height){ uint8_t *row = get_row(arr, *shape, origin); fill_row(row, *shape, 1); replicate_row(row, *shape, thickness); } } static void mask_add_ring(uint8_t *arr, const struct shape_t *shape, size_t thickness) { mask_add_vertical_strip(arr, shape, 0, thickness); mask_add_vertical_strip(arr, shape, shape->width - thickness, thickness); mask_add_horizontal_strip(arr, shape, 0, thickness); mask_add_horizontal_strip(arr, shape, shape->height - thickness, thickness); } static uint8_t *mask_get_imxpad(const struct shape_t *shape, const struct imxpad_t *imxpad) { uint8_t *arr = no_mask(shape); div_t q = div(shape->width, imxpad->chip_w); int n_chips = q.quot; for(int chip=0; chipchip_w, 1); if (chip != (n_chips - 1)) mask_add_vertical_strip(arr, shape, (chip + 1) * imxpad->chip_w - 1, 1); } q = div(shape->height, imxpad->chip_h); int n_modules = q.quot; for(int module=0; modulechip_h, 1); if (module != (n_modules - 1)) mask_add_horizontal_strip(arr, shape, (module + 1) * imxpad->chip_h - 1, 1); } return arr; } static uint8_t *mask_get_xpad_flat_corrected(const struct shape_t *shape) { uint8_t *arr = no_mask(shape); /* now mask all the strange row */ for(int i=118; i<=1006; i=i+148) mask_add_horizontal_strip(arr, shape, i, 30); return arr; } static uint8_t *mask_get_tilling(const struct shape_t *shape, const struct tilling_t *tilling) { int i; uint8_t *arr = no_mask(shape); /* take care of the gap */ if(tilling->gap_in_data && tilling->gap_masked){ /* columns */ for(i=tilling->module_width; iwidth; i=i+tilling->module_width + tilling->gap_width){ mask_add_vertical_strip(arr, shape, i, tilling->gap_width); } /* rows */ for(i=tilling->module_height; iheight; i=i+tilling->module_height + tilling->gap_height){ mask_add_horizontal_strip(arr, shape, i, tilling->gap_height); } } /* border */ /* TODO deal with the gap */ if (tilling->border_masked > 0){ /* columns */ for(i=0; iwidth; i = i + tilling->module_width){ mask_add_vertical_strip(arr, shape, i, tilling->border_masked); mask_add_vertical_strip(arr, shape, i + tilling->module_width - tilling->border_masked, tilling->border_masked); } /* rows */ for(i=0; iheight; i = i + tilling->module_height){ mask_add_horizontal_strip(arr, shape, i, tilling->border_masked); mask_add_horizontal_strip(arr, shape, i + tilling->module_height - tilling->border_masked, tilling->border_masked); } } return arr; } static uint8_t *mask_get_rigaku_xspa_1m(const struct shape_t *shape) { uint8_t *arr = no_mask(shape); mask_add_ring(arr, shape, 5); mask_add_horizontal_strip(arr, shape, 512 + 5, 70); return arr; } /***************/ /* Calibration */ /***************/ static void translate_coordinates_xyz(double *x, double *y, double *z, const struct shape_t *shape, double dx, double dy, double dz) { size_t i; for(i=0; isquare); flip_z(&detector.shape, arr); } of(Ufxc, square){ arr = coordinates_get_square(&detector.shape, square); } of(Merlin, square){ arr = coordinates_get_square(&detector.shape, square); } of(MerlinMedipix3RXQuad, tilling){ arr = coordinates_get_square(&detector.shape, &tilling->square); } of(MerlinMedipix3RXQuad512, tilling){ arr = coordinates_get_tilling(&detector.shape, tilling); } of(Cirpad, cirpad){ arr = coordinates_get_cirpad(&detector.shape, cirpad); } of(RigakuXspa1M, square){ arr = coordinates_get_square(&detector.shape, square); flip_z(&detector.shape, arr); } } return arr; } void hkl_binoculars_detector_2d_coordinates_save(HklBinocularsDetectorEnum n, const char *fname) { double *arr = NULL; const struct detector_t detector = get_detector(n); darray_int shape = darray_new(); darray_append(shape, 3); darray_append(shape, detector.shape.height); darray_append(shape, detector.shape.width); arr = hkl_binoculars_detector_2d_coordinates_get(n); npy_save(fname, arr, HklBinocularsNpyDouble(), &shape); free(arr); darray_free(shape); } uint32_t *hkl_binoculars_detector_2d_fake_image_uint32(HklBinocularsDetectorEnum n, size_t *n_pixels) { size_t i; uint32_t *arr; const struct detector_t detector = get_detector(n); *n_pixels = detector.shape.width * detector.shape.height; arr = g_new(uint32_t, *n_pixels); for(i=0; i<*n_pixels; ++i){ arr[i] = rand(); } return arr; } uint8_t *hkl_binoculars_detector_2d_mask_get(HklBinocularsDetectorEnum n) { const struct detector_t detector = get_detector(n); uint8_t *arr; match(detector.type){ of(ImXpadS70, imxpad){ arr = mask_get_imxpad(&detector.shape, imxpad); } of(ImXpadS140, imxpad){ arr = mask_get_imxpad(&detector.shape, imxpad); } of(XpadFlatCorrected){ arr = mask_get_xpad_flat_corrected(&detector.shape); } of(Eiger1M, tilling){ arr = mask_get_tilling(&detector.shape, tilling); } of(Ufxc){ arr = no_mask(&detector.shape); } of(Merlin){ arr = no_mask(&detector.shape); } of(MerlinMedipix3RXQuad, tilling){ arr = mask_get_tilling(&detector.shape, tilling); } of(MerlinMedipix3RXQuad512, tilling){ arr = mask_get_tilling(&detector.shape, tilling); } of(Cirpad, _){ arr = no_mask(&detector.shape); } of(RigakuXspa1M, _){ arr = mask_get_rigaku_xspa_1m(&detector.shape); } otherwise { arr = no_mask(&detector.shape); } } return arr; } uint8_t *hkl_binoculars_detector_2d_mask_load(HklBinocularsDetectorEnum n, const char *fname) { uint8_t *arr = NULL; const struct detector_t detector = get_detector(n); darray_int shape = darray_new(); darray_append(shape, detector.shape.height); darray_append(shape, detector.shape.width); arr = npy_load(fname, HklBinocularsNpyBool(), &shape); darray_free(shape); return arr; }; uint8_t *hkl_binoculars_detector_2d_mask_or(HklBinocularsDetectorEnum n, uint8_t *arr_l, uint8_t *arr_r) { size_t i; const struct detector_t detector = get_detector(n); uint8_t *arr = no_mask(&detector.shape); if (arr != NULL) for(i=0; i?C***000*)))((''&&%%%$#%#!"AC- "_013.//:::=>>,--+++)))(''&&%&%$%#"&#!"ww)L/,M2_ <!O**+???IJJOPP223-..,,,***((('&&&%$&$#&#!'$!"!0E4Z^eZ]e@BFVNwff NOOUUUQQQMMN??@/00,--+++)))(''&%%&$#%#!&#!>?B\_g[^eaN !# C8qjwO###SSSTTTSSTMNNGHHFGH;;<../+,,***((('&&&%$%#":;=HJP`""$O ^ 4 .!C%,E2 0 "! >$$%OOOSSSMMNFGGABB>??@@ABCD788---***)(('&&&%$"""T!"#Cp +a+,/~dhp`dkJQQ?"\(###AABIJJABB>>?=>>>?@@ABCDF?@B334+,,)))''' ^!"$w;AGG-B2!"%XSV]ehpbfn[^e9;@,!!!99:;<=>?@@ABABDACD?AC<=?567../***`6D;NRVgjrlpw"#%[WILQTW^?)112<>?@AC?@C<>@9:<568223-./##$B359eipfjq\`fV \ $-./78:79:567234./0013OPR3234461=HKPFHM "$$#"#!  p"))*013,-.9:=?CCD/01"$$#&&%%$#$#"#!  ~!DEG^_a[\_VWZ@@A989~ h""!/00***)(('''&%%%$#$"!#! $ ' PjaaNOQabebcgXY\VXZAAB989v444AAB233+,,***(((&&&%%$%#"$" $!# 3IZQ-H3)*+abf[\`YZ\bcfabfabfXY\VXZCCD99:FGGQQR>??../,--+++)))'''&%%%$#$"!$! %" 667_bi[^eW^WXZ\]`bcgabfabfUVZMNPVXZDDF:9: RRSRRSPQQFGG789...+,,***(((&&&%%$%#"#! 668Y[c/14 VWZbcgabf`bfEFH (>?AVXZFEG:9:"!"%%&QQRRRRQQRLLMFFGBBC789-..+++)))'''&%%%$#002$%( 1 "'8:;=Y[]2D6!;<>WXZGGH:9:&%&???MMNLLMCDD??@=>?AABABC789--.***(((&&& = "p /u! F /GYNHZP\89:WXZHHJ:9:*)* 555>>?=>>>?@@ABABDABD<=?334,,-)))+ 4$&(RY[imuimu459567WXZOOQEEF.-.^%%%789?@B@AC=?A:<>679234--.yJMRgjr`dj!#%i456WXZRSTWXZDDF>/0178:578345./0$%(k2./0WXZRSUWXZIJL "$%&))+ S))*WXZQQSTUWMMO&&'}WXZPQSGGISTV567""#kWXZUVXTVXWY[\]`OPS789 '++,WXZUVXXY\abe`be_`dXY]`023UWYWXZ\^abcg`be^`cEFI: I oVVWYXZ\acfbdg`beZ[^()+  Xh++ z*/&'*&wCDF]_acdhbcg`aeFGI9 220[\]RST=>;l,2)+-+'(,^_bcdhbcg[\`()+  ~&''#"! B ;;9>>?<<= -2323?&&+ ;<>EEH8c111/00('&)()%$#'223>>?100 ABNGGH@AA//0Y / , A]555344***778443"##wEEG655 '''TTTNNNuww^__111?DE.23 .2 5899788/00'&&"##& L!BDCTUU@??VVWqss?>?JMNQWYPUWNSU3 5R:;;;<<667%%%5 Q/00##"'& 995354HPPhijEEEKKKjkl?>>DEEDFGCGHDGI,,=4T $<==?@@>??(() OA111789&::QQ[\ VWOOSUUQRRXYZjkl@?=:::QRSDEFCDC?@@<==ABB::;445 f778*))NOO@??=>>5efprefbddsttprrghhQPO20/MNO(()666JKK222:::JKL678 JBTUUeggZ[[oppONN;;;,66 --45RSSikklnnQSS==>777 o,,,FGG C?@@567 011bccdeftuvwyylmnIIJ NOO^__Z\\000,---..'''899 NC233ijk|}~yz{prsVXX9F:IJJ"##|677111DDEVVW))* ?;<<788g566stumnplmnjkmS_UBXD354f#$%`:;;DEEOPPHIJ;<<,,-BCC A ]56GSTf[\^L_NVwXD]G$'%]000BCD89:566>??CDDMNNE$011 WR(:O;>TE4F7%%%_ /!""HII@AAD .//566677 * M $ZQ&'w%&LUVV q5668888999:: EGom-.W)*-X9:::;;;<<566$N A? !*+,, 6}:;;:;;+,,% T =GLOBPP 34"2  6$unknownWM L0WMWinMan ~))))_2]2(}0000H00Hdv3x03?L?L?L??????L=L=L=???= #<zDDATAx)00 ViewLayervue ``E0E &A[20(000 {J-DATA ` { DATA {DATA DATA  DATA `DATA ` DATA `DATA  DATA `DATA ` DATA(EPEDATA(PEEE DATA(EEPE `DATA(E@EE`DATA(@EEEDATA(EE@E DATA(E0EE `DATA(0EE`DATA `)K3P{EE  DATA P{DATA   DADA6PEAPEA?? 7767ZO36~0DATA   CACAXBABA?? YY7Y$YZO3MMH006x0DATA  A@D@VE?VE??? YO3006DATA(E4DATA `&K3{аEаE  DATA {DATA CADAVEAVEA?? XO3|<|<0h0h6DATA(аE5WSH{WSAnimationonpEpE@DATAX {DefaultDATA(pE`DATAbuiltin.select_boxuiltin.select_box"DATA" WM_toolsystem_ref_properties_ensure_idprops`#`#DATA`# builtin.select_boxd_group $ $DATA $ VIEW3D_OT_select_boxgroupWSH {WSCompositing.001  EEDATAX  {DefaultDATA(E` DATAbuiltin.select_boxuiltin.select$DATA$ WM_toolsystem_ref_properties_ensure_idprops%%DATA% builtin.select_boxd_group`&`&DATA`& NODE_OT_select_boxd_groupWSH{WSGeometry NodesEE`  DATAX {DefaultDATA(E`DATA`@builtin.select_boxuiltin.select_box 'DATA@ `builtin.select_boxuiltin.select_box`)DATA @builtin.select_boxuiltin.selectDATA ' WM_toolsystem_ref_properties_ensure_idprops''DATA' builtin.select_boxd_group((DATA( VIEW3D_OT_select_boxgroupDATA`) WM_toolsystem_ref_properties_ensure_idprops * *DATA * builtin.select_boxd_group**DATA* VIEW3D_OT_select_boxgroupWSH {WSLayoutg.001  `E`EDATAX  DefaultDATA(`E` DATAbuiltin.brushDATAbuiltin.select_boxouiltin.select_boxo+9 DATAbuiltin.select_boxuiltin.select_box࠼0DATA+ WM_toolsystem_ref_properties_ensure_idprops`,`/DATA`, -builtin.select_boxd_group - -DATA - VIEW3D_OT_select_boxgroupDATA- `/`,builtin.select_circleroup..DATA. VIEW3D_OT_select_circleupDATA`/ -builtin.select_lassogroup  DATA  VIEW3D_OT_select_lassooupDATA࠼ WM_toolsystem_ref_properties_ensure_idprops`DATA  builtin.select_boxd_group``DATA` VIEW3D_OT_select_boxgroupDATA  `builtin.movee_named_groupࣼDATAࣼ VIEW3D_GGT_xform_gizmooupDATA ࣼVIEW3D_OT_select_boxgroupDATA`  builtin.measureamed_group  DATA  VIEW3D_GGT_rulermed_groupWSH{WSModelingEEDATAX MDefaultDATA(E`DATAbuiltin.moveeboxbuiltin.select_box়DATAbuiltin.select_boxuiltin.select_box DATA় WM_toolsystem_ref_properties_ensure_idpropsDATA  builtin.select_boxd_group``DATA` VIEW3D_OT_select_boxgroupDATA  builtin.movee_named_group੼੼DATA੼ VIEW3D_GGT_xform_gizmooupDATA  builtin.rotatenamed_group``DATA` VIEW3D_GGT_xform_gizmooupDATA  WM_toolsystem_ref_properties_ensure_idprops଼଼DATA଼ builtin.select_boxd_groupDATA VIEW3D_OT_select_boxgroupWSH {WSRenderingg.001  EEDATAX  $DefaultDATA(E` WSH{WSScripting01PEPE`` DATAX #$DefaultDATA(PE`DATA`builtin.select_boxuiltin.select_box`DATA` WM_toolsystem_ref_properties_ensure_idprops  DATA  builtin.select_boxd_group௼௼DATA௼ VIEW3D_OT_select_boxgroupWSH {WSSculpting01  EE@ DATAX '$DefaultDATA(E` DATA@ builtin.brush DATA @builtin.select_boxuiltin.select_boxDATA WM_toolsystem_ref_properties_ensure_idprops``DATA` builtin.select_boxd_group  DATA  VIEW3D_OT_select_boxgroupWSH{WSShading.001EE঻DATAX*$DefaultDATA(E`DATA঻builtin.select_boxuiltin.select_box಼DATA঻builtin.select_boxuiltin.selectDATA಼ WM_toolsystem_ref_properties_ensure_idpropsDATA builtin.select_boxd_group``DATA` VIEW3D_OT_select_boxgroupWSH {WSTexture Paint  @E@EDATAX -$DefaultDATA(@E` DATAbuiltin.select_boxuiltin.select_box DATAbuiltin.brushDATA  WM_toolsystem_ref_properties_ensure_idpropsർർDATAർ builtin.select_boxd_groupDATA VIEW3D_OT_select_boxgroupWSH{WSUV Editing1EE`DATAX0$DefaultDATA(E`DATA`builtin.select_boxuiltin.select_box`DATA`builtin.select_boxuiltin.selectDATA` WM_toolsystem_ref_properties_ensure_idprops  DATA  builtin.select_boxd_group฼฼DATA฼ VIEW3D_OT_select_boxgroupDATA WM_toolsystem_ref_properties_ensure_idprops``DATA` builtin.select_boxd_group  DATA  UV_OT_select_boxmed_groupSNP {SRAnimation4ҼE E@DATA  DATA `DATA ` DATA `DATA  мlDATA м`мlDATA `мм мlDATA мм`мDATA м Ѽм(DATA Ѽ`Ѽмl(DATA `ѼѼ Ѽ0DATA ѼѼ`Ѽl0DATA Ѽ ҼѼ#DATA Ҽ`ҼѼDATA `ҼҼ Ҽ(DATA Ҽ`ҼDATA(E0E DATA(0EEE мDATA(EеE0E`мDATA(еE EE м`мDATA( EpEеEмDATA(pEE E мDATA(EEpE`ммDATA(E`EE`мDATA(`EEE м ѼDATA(EE`Eм ѼDATA(EPEE`ѼDATA(PEEEм`ѼDATA(EEPE ѼѼDATA(E@EEѼDATA(@EEE`ѼѼDATA(EE@Eм`ҼDATA(E0EE Ѽ`ҼDATA(0EEE`ҼDATA(EкE0E мҼDATA(кE EE`ҼҼDATA( EкEDATA@`мм m#`J`J  DATA  mCACA"CACA??  ##m##DATA   AA:?@m   DATA PROPERTIES_PT_navigation_bar88X+DATA  C@C:?@DATA୻PROPERTIES_PT_context$$-DATA୻OBJECT_PT_context_object$$.DATA୻OBJECT_PT_transform0DATAOBJECT_PT_delta_transformX2DATA`OBJECT_PT_relationsn4DATA`@OBJECT_PT_collectionsS5DATA@ `OBJECT_PT_instancing87DATA @OBJECT_PT_motion_pathsX9DATA഻ OBJECT_PT_visibility;DATA഻OBJECT_PT_display<DATA഻OBJECT_PT_animation >DATAOBJECT_PT_custom_props X@DATA`JiDATA`@`м ммm#{{  DATA  CACA"7CA7CA??  ##m##DATA  CC#""?? ##m##DATA8{Ҽse Sculpt`GRDATAҼҼDATA !Ҽ( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA`@м`Ҽ`Ҽ) > >  DATA  .DA7CA`DA`DA??  DATA   gCACA{DA{DA??  DATA   ))DATA   2DATA   `B`B*187?@88)DATA   4C`#C`ã?@ )DATA  ) dDATA dlM@@AHM:?j ?/?ї>)04i?>J;_>[b?:?/?/4jї>i? ?)>@~??T@o,  @.6?%@*?)?: 5= @CѾоØ;:?nFV@[b@g>[>T3*2=D>P3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????G?nM!oAy:jA\>7?8˔DATAx >? AL> y-?? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=?? @?=@???@????>??L>??????????DATA@ ``Ѽм ѼѼk1' l { {  DATA  @/DADAkDADA?? llk'llDATA   HC7HC] ??1 DATA   CC]?@Tk1 DATA  CC]  I #<HBJS1 DATAX {" PDATA @`ѼѼk/ l{{  DATA  JDADAkDADA?? llk/llDATA   HCA\ 6??77DATA   kkDATA  CCal k kI #<HBJlkllDATAX{" PDATA `ҼҼ м Ѽk) D D  DATA  _DA_DA~`DA`DA??  kDATA   gCA_DA~@DA@DA?? k DATA   k))DATA   DATA   `B`B*187?@88)DATA   4C`#C`ã?@ kk)DATA  k) hDATA hDZ?j?vף>оQ?,j?On8>$,D(e?#=>!o?>,j?оNn8>(e?Q?","=>=_DA2xj@??=5E͟QQ?F5>->$,>9jt?O>#=poA!oA> (?%42.~]/A=9>2iքC kG”5D=WNѦCrGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA????????D^6?ᾟ !oA:DATAx D? AL> y-?? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SNP {SRCompositing Ӽ`ּpEp ໻ѻDATA Ӽ`ӼDATA `ӼӼ ӼDATA ӼӼ`ӼDATA Ӽ ԼӼDATA Լ`ԼӼlDATA `ԼԼ ԼlDATA ԼԼ`ԼlDATA Լ ռԼDATA ռ`ռԼDATA `ռռ ռDATA ռռ`ռ0DATA ռ ּռl0DATA ּ`ּռ.DATA `ּ ּl.DATA(pEE`Ӽ ԼDATA(EEpEӼ`ԼDATA(E`EE ԼԼDATA(`EEE`ԼԼDATA(EE`EӼԼDATA(EPEE`ӼԼDATA(PEEEԼԼDATA(EEPE ӼռDATA(E@EE ԼռDATA(@EEEռռDATA(EE@E Ӽ ԼDATA(E0EEӼ`ԼDATA(0EEEռ ּDATA(EпE0EӼ ּDATA(пE E`Լ`ּDATA( p пEռ`ּDATA(p   ּ`ּDATA໻@λ ԼԼԼ`Ӽm#KK " &DATA " $mCACA"CACA??  ##m##DATA $ & "AA:?@m DATAPROPERTIES_PT_navigation_bar88CDATA & $C@ C:?@`ͻDATAPROPERTIES_PT_context$$EDATA`RENDER_PT_context$$XGDATA`ûRENDER_PT_eevee_next_sampling@»IDATA@ RENDER_PT_eevee_next_sampling_viewport4PPJDATA »@RENDER_PT_eevee_next_sampling_render$$LDATA»» RENDER_PT_eevee_next_sampling_shadowsXNDATA»»RENDER_PT_eevee_next_sampling_advancedp"DATAûĻ`RENDER_PT_eevee_next_clampingq"DATAĻŻûRENDER_PT_eevee_next_raytracings"DATAŻ`ƻĻRENDER_PT_eevee_next_volumestXu"DATA`ƻ@ǻŻRENDER_PT_eevee_hairYw"DATA@ǻ Ȼ`ƻRENDER_PT_simplify>x"DATA Ȼɻ@ǻRENDER_PT_eevee_next_depth_of_field#z"DATAɻɻ ȻRENDER_PT_eevee_next_motion_blur X|"DATAɻʻɻRENDER_PT_eevee_next_film ~"DATAʻ˻ɻRENDER_PT_eevee_performance "DATA˻̻ʻRENDER_PT_gpencil "DATA̻`ͻ˻RENDER_PT_freestyle X"DATA`ͻ̻RENDER_PT_color_management"DATAKiDATA@λ ϻ໻Լ`ԼӼԼm#{{ ( *DATA ( *CACA"7CA7CA??  ##m##DATA * (CC#""?? ##m##DATA8{ּse Sculpt`GRDATAּּDATA !ּ( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA ϻл@λ Ӽռռ Լk/ l { { , DATA , .JDADAkDADA?? llk/llDATA .  ,HCA\ 6??77DATA   .kkDATA  CCal k kI #<HBJlkllDATAX {" PDATAлѻ ϻ ּӼ`Լ`ּk/l B B  DATA  -DADAkDADA?? llkllDATA   |CCqq?@rrTk/rrллDATAлNODE_PT_active_toolBB؆"DATAPToolDATA   `B`B.187?@88/DATA   ACBCV hV~D)nnJ$DMTqSSq??FFL= @ TrTrS/TrTrDATAh B/  ?CompositorNodeTreeDATAѻлռ ּ`ּռk1- l{{  DATA  @/DADAkDADA?? llk-llDATA   HC7HCc ??1DATA   CCc?@Tk1DATA  CCc  I #<HBJS1DATAX{" PSNP {SRGeometry Nodesּ ڼ 'һDATA ּ ׼DATA ׼`׼ּDATA `׼׼ ׼DATA ׼׼`׼DATA ׼ ؼ׼lDATA ؼ`ؼ׼lDATA `ؼؼ ؼ DATA ؼؼ`ؼl DATA ؼ ټؼ? DATA ټ`ټؼ?DATA `ټټ ټlDATA ټټ`ټDATA ټ ڼټ^DATA ڼټl^DATA( !ּ׼DATA(!`!  ׼׼DATA(`!!!׼ ؼDATA(!"`!`׼`ؼDATA("P"! ؼؼDATA(P"""`ؼؼDATA(""P"`ؼؼDATA("@#"ؼؼDATA(@##"`׼ ټDATA(##@# ؼ ټDATA(#0$#ؼ ټDATA(0$$#׼`ټDATA($$0$ ؼ`ټDATA($ %$׼ټDATA( %p%$ ׼ټDATA(p%% %`ټټDATA(%&p%ּټDATA(&`&%`ؼټDATA(`&&&ؼ ڼDATA(&'`&׼ ڼDATA('&ټ ڼDATAһ׼`ټټ ׼m#LL  DATA  mCACA"CACA??  ##m##DATA   AA ?@m ӻӻDATAӻPROPERTIES_PT_navigation_bart"DATA  C!C?@`Ի߻{ {DATA`Ի@ջPROPERTIES_PT_context$$؍"DATA@ջ ֻ`ԻOBJECT_PT_context_object$$"DATA ֻ׻@ջOBJECT_PT_transform׻׻X"DATA׻OBJECT_PT_delta_transform"DATA׻ػ ֻOBJECT_PT_relationsnؔ"DATAػٻ׻OBJECT_PT_collectionsS"DATAٻڻػOBJECT_PT_instancing8X"DATAڻ`ۻٻOBJECT_PT_motion_paths"DATA`ۻ@ܻڻOBJECT_PT_shading؛"DATA@ܻ ݻ`ۻOBJECT_PT_visibility"DATA ݻ޻@ܻOBJECT_PT_display X"DATA޻޻ ݻOBJECT_PT_lineart "DATA޻߻޻OBJECT_PT_animation آ"DATA߻޻OBJECT_PT_custom_props{ "DATAH{ {MESH_UL_vgroups_DATAH {{MESH_UL_shape_keys_DATALmDATAһټ`ؼؼ ڼk_ l""  HDATA  @+DADAkDADA?? llk llDATA   \C\C?@kk_DATA  H `B`B187?@88_DATA H C^R^RDu÷uCelkk??FFL= @ llk_llDATAh"/ ?GeometryNodeTreeeDATA@ؼ ټ ؼؼ@k, J J H HDATA H HDAKDA+[DA[DA?? ,,@k,,DATA H H HCAKDA+gDAgDA?? ,,@k, ,DATA H H H@kDATA H H H,DATA H H H`B@`B18x7x?@8y8y@w8y8y``DATA`VIEW3D_PT_tools_active88X"DATA H H HkkDATA H H@k,, lDATA lDZ??(@vף>оQ?,j?On8>$,D(e?#=> ?>,j?оNn8>(e?Q?","=>AUmA>4A??6͟QQ?k>->$,>9њ@O>#=ÐA A>(?MCP=W>i9ĴɣCG69DAxCGB??>оQ?,j?On8>$,D(e?#=> ??6͟QQ?k>->$,>9њ@O>#=ÐA AD^6?ᾟ Aeq:{Ͱ>BH9辢HLDATAx JL> y- HB? #<zD ?L=>1?L?L?L?????L=L=L=??@?@???@?????>??L>?fff???????DATA@`ؼ`׼ ټؼ>?@@ H HDATA H HCADA>@0DA@0DA?? ??>??DATA H H H0DADA>@0DA@0DA?? ??>'? ?DATA H H HCCxx?@yy(yy  DATA SPREADSHEET_PT_data_setg`ڼڼ"DATA `ڼڼ{DATA ڼ`ڼڼDATA{instance treeDATAڼgeometry_domain_tree_viewDATA H H H>>(DATA H H_C Cc+x??yy>(yyDATAx@9P'P'''DATA(P'7{@|DATA{6|DATA |positionDATA @|positionrmDATA(' ˸DATA@`ټ ؼ׼ټm# {{ H HDATA H HCACA"CACA?? ##m##DATA H H{CCp#""?? ##m##DATA8{ۼ`GRDATAۼۼDATAۼ( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATAּټ ڼ׼k] lH `" H $HDATA H HJDADAk DA DA?? llkD]llDATA H "H HHCpA\6??77CDATA "H $H HCA\66?@77kkCDATA $H "HCC8el -k k-I #<HBJl.kCl.l.DATAX "`" PDATA &H (H@DA@DA1DADA?? 221Kd22DATA (H *H &H\C\C?@11JDATA *H ,H (H\B_B7Z?@8[8[JDATA ,H *HClpXlpXDG/G/A+26116??FFL= @ 27271J2727DATAh`"/  &H ,H ?GeometryNodeTreeeSNP SRLayout.002`ۼݼ',`# HPyUDATA `ۼۼDATA ۼۼ`ۼDATA ۼ ܼۼDATA ܼ`ܼۼDATA `ܼܼ ܼlDATA ܼܼ`ܼlDATA ܼ ݼܼlDATA ݼ`ݼܼDATA `ݼݼ ݼ1DATA ݼ`ݼl1DATA('@(`ۼ`ܼDATA(@(('ۼ`ܼDATA(((@(ۼܼDATA((0)( ܼܼDATA(0))(`ܼܼDATA())0)ܼܼDATA() *) ܼ ݼDATA( *p*)ۼ ݼDATA(p** *ܼ ݼDATA(*+p*`ۼ`ݼDATA(+`+*ۼ`ݼDATA(`+++ܼݼDATA(+,`+`ܼݼDATA(,+`ݼݼDATA#`ܼܼ ݼۼm#jK3 N N .H RH[00DATA .H PHmCACA"CACA??  ##mf##L3<<00ȉ68DATA PH RH .HAAOO?@PPmeP PL300h6ؐDATAPROPERTIES_PT_navigation_barȍ6t ة"DATA RH PHC! C OO?@PPePPL3<<# ; G00h6DATA`:L3PROPERTIES_PT_context6$$ "DATA`@OBJECT_PT_context_object$$ WX"DATA@`OBJECT_PT_transform(6 X  "DATA OBJECT_PT_delta_transform  ذ"DATA@OBJECT_PT_relations6 Y"DATAOBJECT_PT_collectionsH6e ZX"DATAOBJECT_PT_instancingȄ6$ ["DATA`OBJECT_PT_motion_paths66 \ط"DATAOBJECT_PT_motion_paths_displayJ"DATA`OBJECT_PT_shading(2 ]@ X"DATA@ OBJECT_PT_light_linking"DATA @OBJECT_PT_shadow_linkingؾ"DATA`#OBJECT_PT_visibilityȆ6 ^"DATAOBJECT_PT_display  _X"DATA'OBJECT_PT_lineart6 `"DATA*OBJECT_PT_animation6 a"DATA`.OBJECT_PT_custom_props L/ b"DATA`@DATA_PT_context_mesh$$BX"DATA@ `DATA_PT_vertex_groups=`C"DATA @DATA_PT_shape_keys yD"DATA DATA_PT_uv_textureLE"DATADATA_PT_vertex_colors`FX"DATADATA_PT_mesh_attributes`G"DATADATA_PT_texture_spaceH"DATA`DATA_PT_remeshMI"DATA`@DATA_PT_customdataPJX"DATA@ @#`DATA_PT_mesh_animationK"DATA @#A#@DATA_PT_custom_props_meshL"DATAA#A# @#RENDER_PT_format."DATAA#C#A#RENDER_PT_frame_rangeeL/B#B#X"DATAB#RENDER_PT_time_stretching$DATAC#D#A#RENDER_PT_stereoscopyg0؁$DATAD#@F#C#RENDER_PT_outputV1`E#`E#$DATA`E#RENDER_PT_output_color_managementVX$DATA@F# G#D#RENDER_PT_stamp;2$DATA G#H#@F#RENDER_PT_post_processing 3؈$DATAH#H# G#RENDER_PT_context$$4$DATAH#@M#H#RENDER_PT_eevee_next_sampling5I#`L#X$DATAI#J#RENDER_PT_eevee_next_sampling_viewport4PP$DATAJ#K#I#RENDER_PT_eevee_next_sampling_render$$؏$DATAK#`L#J#RENDER_PT_eevee_next_sampling_shadows$DATA`L#K#RENDER_PT_eevee_next_sampling_advancedX$DATA@M# N#H#RENDER_PT_eevee_next_clamping6$DATA N#O#@M#RENDER_PT_eevee_next_raytracing7ؖ$DATAO#O# N#RENDER_PT_eevee_next_volumest8$DATAO#P#O#RENDER_PT_eevee_hairY9X$DATAP#Q#O#RENDER_PT_simplify>:$DATAQ#R#P#RENDER_PT_eevee_next_depth_of_field#;؝$DATAR#`S#Q#RENDER_PT_eevee_next_motion_blur<$DATA`S#@T#R#RENDER_PT_eevee_next_film=X$DATA@T# U#`S#RENDER_PT_eevee_performance>$DATA U#V#@T#RENDER_PT_gpencil?ؤ$DATAV#V# U#RENDER_PT_freestyle@$DATAV#W#V#RENDER_PT_color_managementAX$DATAW#X#V#SCENE_PT_scenekVVM$DATAX#Y#W#SCENE_PT_unitPNث$DATAY#`Z#X#SCENE_PT_physics5O$DATA`Z#@[#Y#SCENE_PT_simulationPX$DATA@[# \#`Z#SCENE_PT_keying_setsQ$DATA \#]#@[#SCENE_PT_audioRز$DATA]#]# \#SCENE_PT_rigid_body_worldS$DATA]#^#]#SCENE_PT_eevee_next_light_probesTX$DATA^#_#]#SCENE_PT_animationU$DATA_#`#^#SCENE_PT_custom_propsxVع$DATA`#`a#_#DATA_PT_empty==$DATA`a#@b#`#OBJECT_PT_constraints$$X$DATA@b# c#`a#PHYSICS_PT_add$DATA c#d#@b#PARTICLE_PT_context_particles|``$DATAd#d# c#DATA_PT_modifiers$$$DATAd#e#d#EEVEE_MATERIAL_PT_context_materialcyy X$DATAe#f#d#MATERIAL_PT_previewH $DATAf#g#e#EEVEE_MATERIAL_PT_surfacee $DATAg#`h#f#EEVEE_MATERIAL_PT_volume&$ $DATA`h#@i#g#EEVEE_MATERIAL_PT_displacement/ X$DATA@i# j#`h#EEVEE_MATERIAL_PT_thickness$$DATA j#l#@i#EEVEE_NEXT_MATERIAL_PT_settingsnk#k#$DATAk#k#EEVEE_NEXT_MATERIAL_PT_settings_surface:$DATAk#k#EEVEE_NEXT_MATERIAL_PT_settings_volume$$X$DATAl#m# j#MATERIAL_PT_lineart$DATAm#n#l#MATERIAL_PT_viewportsPP$DATAn#`o#m#MATERIAL_PT_animationX$DATA`o#@p#n#MATERIAL_PT_custom_props=X$DATA@p# q#`o#DATA_PT_context_camera$$$DATA q#r#@p#DATA_PT_lens$DATAr#s# q#DATA_PT_camera_dofr#r#$DATAr#DATA_PT_camera_dof_apertureffX$DATAs#t#r#DATA_PT_camera-:$DATAt#`v#s#DATA_PT_camera_safe_areas{u#u#$DATAu#DATA_PT_camera_safe_areas_center_cut$DATA`v#@w#t#DATA_PT_camera_background_image $X$DATA@w#y#`v#DATA_PT_camera_displaye x# x#$DATA x#DATA_PT_camera_display_composition_guidese$DATAy#y#@w#DATA_PT_camera_animation$$DATAy#z#y#DATA_PT_custom_props_cameraHX$DATAz#{#y#COLLECTION_PT_collection_flags\ e e$DATA{#|#z#COLLECTION_PT_instancing L L$DATA|#`}#{#COLLECTION_PT_exportersa y y$DATA`}#@~#|#COLLECTION_PT_lineart_collection   X$DATA@~# #`}#COLLECTION_PT_collection_custom_props  !$DATA ##@~#WORLD_PT_context_world0$0$"$DATA## #EEVEE_WORLD_PT_surface  #$DATA###EEVEE_WORLD_PT_volume  $X$DATA###EEVEE_WORLD_PT_mist  %$DATA###EEVEE_WORLD_PT_settings  &$DATA#`##WORLD_PT_viewport_display  '%DATA`#@##WORLD_PT_animation  (X%DATA@# #`#WORLD_PT_custom_propsv  )%DATA ##@#VIEWLAYER_PT_layer : :*%DATA#`# #VIEWLAYER_PT_layer_passes  +##%DATA##VIEWLAYER_PT_eevee_next_layer_passes_data  X %DATA###VIEWLAYER_PT_eevee_next_layer_passes_light   %DATA###VIEWLAYER_PT_layer_passes_cryptomatte& i i %DATA##VIEWLAYER_PT_layer_passes_aov ` `%DATA`#@##VIEWLAYER_PT_filter  ,X%DATA@# #`#VIEWLAYER_PT_layer_custom_propsw  -%DATA ##@#VIEW3D_PT_active_tool_duplicateXX%DATA## #VIEW3D_PT_tools_object_options(e##%DATA#VIEW3D_PT_tools_object_options_transform(LLX%DATA##WORKSPACE_PT_main %DATAH ;<MESH_UL_vgroups_DATAH< > ;MESH_UL_shape_keys_DATAH >?<VIEWLAYER_UL_aov_aovsDATAH? A >COLLECTION_UL_exporter_list_DATAH AB?MATERIAL_UL_matslots_DATAHB D AMESH_UL_uvmaps_uvmapsDATAH DEBMESH_UL_color_attributes_color_attributesDATAHE G DMESH_UL_attributes_attributesDATAH GEPARTICLE_UL_particle_systems_particle_systemsDATA Nm 0DATA##ܼܼ ܼ ݼm#:K3H TH VHh0XEDATA TH VHCACA"7CA7CA??  ##m## K3i.i.0H0(6(DATA VH THCC#""?? # # m# #  K3000ȖDATA8H`Oh h ޼ode_4.002`GR"0DATA޼޼DATA޼(   - -  y-    o-    \  Z<  ߍ  c `_<    q `t<  ,  x ~<  H,   R   f,   g   ,    m   ,   `r   ,      ,  / `   ,  /    ,  /    %,  / 0   /,  / E   9,  / ?  C,  / `t  t-    / d<    / `   +  /     ,  / J   M,  /  E  k,  / y  -    / <    / <  +  1 #   -  1    1  <  1  .   1 `3   1  X   1 b   1 w   1 `   1    1 5   1  0  1 `J  *,  1 `_  6 i  6 ~    6 y<    %6 |   +  ,6  &   -    :6 `5    A6 O  +  H6  Z -    O6      V6    +  ]6    ,  d6 `+   W,  r6  ;   u,  y6  o  -    : (   -    : 8     :  C   +  :    ,  :  -  Ƹ  : `     :    +  : :  -  ˸  : `@   -  Ѝ  ;  o<    ;    +  ; `<  ,  ;    \,  `= T  z,  n= d ,  u= `  ~-  Ս  |= i<    = =   +  = `H   ,  = M   a,  = `]   ,  =   -  ڍ  =  <    = `<      +  ,  R,  p,  ,  ,  ,  ,  ,  `-  4,  >,   `C<' ) & ((  +   j- j-  -  C T< e-  -DATA XH ZHtCACALCACA?? MM3MMDATA ZH \H XHA@A))?@**3O* *DATA \H ZHCC)0)/)?@0*0*P0*0*DATA`O໼H XH \H`DATA ^H `H,DACALCACA?? MM3MMDATA `H bH ^HpCpC))?@**3"**DATA bH dH `HBB\?@]]]DATA dH fH bHBB\?@]] ]DATA fH hH dHDATA hH fHBBV])\\)??]*]*#]*]*DATA໼'`O ^H hH DATAP %home/picca/src/repo.or.cz/hkl/data/E`A!DATA jH lHCACALCACA?? MM3MMDATA lH nH jHCACALCACA?? MM3M MDATA nH pH lHCC?@3DATA pH rH nHDATA rH pHA.C??DATAx9໼ jH rHDATA#`##`ۼ`ݼݼ`ܼk0 lK3 J J tH zHE80DATA tH vHJDADAkDADA?? llk0llN300(DATA vH xH tHHCHC4 ,??--N3DATA xH zH vHkkN3DATA zH xHCCel k kI #<HBJlkllN38%000DATAX J" RDATA`##`ݼۼܼݼk2lK3 P P |H HY8_0DATA |H ~H_DADAk`DA`DA??  llkllL3CCh00HDATA ~H H |HCCADAk1EA1EA?? llkl lL3jLjL0hؤDATA H H ~HDlDlel:k:?@l;l;dBl;L3ݼDATAݼ   DATA  VIEW3D_AST_brush_sculpt0DATAxx0DATA  VIEW3D_AST_brush_texture_paint0DATAxx0DATA H H HDA8DAk`DA`DA?? ll lL3DATA H H H\B\B@U07T6T?@7U7U627U7UL3v?v?@#@#(0HxDATA@#!VIEW3D_PT_tools_active؈7Z7Z %DATA H H H|CC@UTT?@UUTk2UUK3N9:? ##௺KK00hUHU0DATA ##VIEW3D_PT_transform%DATA## #VIEW3D_PT_active_toolBBX%DATA###VIEW3D_PT_tools_meshedit_options!%DATA#`##WORKSPACE_PT_main:3##"%DATA##WORKSPACE_PT_addons$%DATA##WORKSPACE_PT_custom_propsX&%DATA`# ##VIEW3D_PT_tools_object_options e@#@#(%DATA@#VIEW3D_PT_tools_object_options_transform LL)%DATA ##`#VIEW3D_PT_view3d_properties ##+%DATA#VIEW3D_PT_view3d_lockQQ X-%DATA## #VIEW3D_PT_view3d_cursor /%DATA###VIEW3D_PT_collectionsQH 0%DATA##VIEW3D_PT_grease_pencilZ$ 2%DATAPpViewDATAPp௺ItemDATAP௺pToolDATAHKWORKSPACE_UL_addons_items_DATA H H HCCRR??SSSSL3## r (؇:TDATA#_6OPERATOR_PT_redo$ :: X4%DATA H Hk2llK3$000 6TUDATA ?O @o?gb=(4[ \?ydx?Vw>ͫ=A0?db4|= [dx?( \?]w>t==<?z&{>ʮk:)`]i9$@%= bB`e?AgQ=KȽW>`Ct==<???'0>"O;T$ ?)gz? T>ͫ=Ax1?jLL~>:sb=> @;ڹ'= b?????????y@>Ea?C?λx?g:c@rĿ{ !B'= b5?5DATAx P? AL> y-?? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??D #<@???@????>??Q8>??????????SNP MSRModeling`޼ HP,p/`# %DATA `޼޼DATA ޼޼`޼DATA ޼ ߼޼DATA ߼`߼޼DATA `߼߼ ߼lDATA ߼߼`߼lDATA ߼ H߼lDATA H߼DATA(P,,`޼`߼DATA(,,P,޼`߼DATA(,@-,޼߼DATA(@--, ߼߼DATA(--@-`߼߼DATA(-0.-߼߼DATA(0..- ߼ HDATA(..0.޼ HDATA(. /.߼ HDATA( /p/.`޼޼DATA(p/ /`߼߼DATA`#@#`߼߼ H޼m#PP H HDATA H HmCACA"CACA??  ##m##DATA H H HAA9?@m @#@#DATA@#PROPERTIES_PT_navigation_bart6%DATA H HC!C9?@ #`#DATA ##PROPERTIES_PT_context$$7%DATA## #OBJECT_PT_context_object$$9%DATA###OBJECT_PT_transform##X;%DATA#OBJECT_PT_delta_transform=%DATA###OBJECT_PT_relationsn>%DATA#`##OBJECT_PT_collectionsS@%DATA`#@##OBJECT_PT_instancing8XB%DATA@# #`#OBJECT_PT_motion_pathsD%DATA ##@#OBJECT_PT_shadingE%DATA## #OBJECT_PT_visibilityG%DATA###OBJECT_PT_display XI%DATA###OBJECT_PT_lineart K%DATA###OBJECT_PT_animation L%DATA#`##OBJECT_PT_custom_props{ N%DATA`##DATA_PT_modifiers$$ XP%DATAPmDATA@# %`#߼߼ ߼ Hm#NN H HDATA H HCACA"7CA7CA??  ##m##DATA H HCC #""?? ##m##DATA8NHHse Sculpt`GRDATAHHPHDATAPH( &( y-  -- t-  /d<  /`  + /   , /J  M, / E k, /y -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< e- -DATA %@#`޼޼߼`߼kl \ \ H HDATA H HDADAk`DA`DA??  llkllDATA H H HCADAkDADA?? llkl lDATA H H HkDATA H H HlDATA H H H`B@`B@\18p7p?@8q8q78q8q%%DATA%VIEW3D_PT_tools_active88R%DATA H H HCYCnpp?@qqTkqq%%PPDATA%VIEW3D_PT_transform $ $S%DATAPPItemDATA H H H C C??88%%DATA%OPERATOR_PT_redoU%DATA H Hkll DATA DZ?<@vףY?<.>˨??C E3d5?b4?E2?I?Y?ɨ?3<.?c5?>B b4?6@* H/@?Ö?Eoj4_̴)9>>]ԯ>p({ FC^ ËGLBߪCHB??Y?<.>˨??C E3d5?b4?E2?I?Ö?Eoj >U2=??FD?FDrW2= ?k? xp;?/.K,>pc>?]?ϧC?C8qV2= ????HD?HDr> >U2=?kmmA Gp;zA/A @w^@?xX???IK9 ?gf6.<????5?5'љ?h:r>W2 >uqZ?2Ӿ#'NDATAx \? AL> y-?? b HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????DATAx b? AL> y-?? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????&USNP $SRRendering9H`H/2%%DATA HHDATA H HHDATA H`HHDATA `HH HDATA HH`HlDATA H HHlDATA H`HHZDATA `H HlZDATA(/0HHDATA(0`0/`HHDATA(`000HHDATA(01`0H`HDATA(1P10 HHDATA(P111HHDATA(11P1H HDATA(1@21 H HDATA(@221H`HDATA(22@2H`HDATA(22 H`HDATA%%HH`HHm#QQ H HDATA H HmCACA"CACA??  ##m##DATA H H HAAb?@m %%DATA%PROPERTIES_PT_navigation_bartXW%DATA H HC@ Cb?@`% %DATA`%@%PROPERTIES_PT_context$$Y%DATA@% %`%RENDER_PT_context$$Z%DATA %%@%RENDER_PT_eevee_next_sampling%%\%DATA%%RENDER_PT_eevee_next_sampling_viewport4PPX^%DATA%%%RENDER_PT_eevee_next_sampling_render$$&DATA%%%RENDER_PT_eevee_next_sampling_shadows&DATA%%RENDER_PT_eevee_next_sampling_advanced&DATA%`% %RENDER_PT_eevee_next_clampingX&DATA`%@%%RENDER_PT_eevee_next_raytracing&DATA@% %`%RENDER_PT_eevee_next_volumest&DATA %%@%RENDER_PT_eevee_hairY&DATA%% %RENDER_PT_simplify>X&DATA%%%RENDER_PT_eevee_next_depth_of_field#&DATA%%%RENDER_PT_eevee_next_motion_blur &DATA%%%RENDER_PT_eevee_next_film !&DATA%`%%RENDER_PT_eevee_performance X#&DATA`%@%%RENDER_PT_gpencil %&DATA@% %`%RENDER_PT_freestyle &&DATA %@%RENDER_PT_color_management(&DATAQmDATA%%%H H`HHkY lD!$!$ H HDATA H HJDADAkDADA?? llk@YllDATA H H HHCHC4 ,??--?DATA H H Hkk?DATA H HCC(el )k k)I #<HBJl*k?l*l*DATAX!$" PDATA%% H HH`Hk[l`   H HDATA H H"DADAkDADA?? llkllDATA H H Hk DATA H H Hk[[HDATAHDATA H H HlDATA H H H|CCQEE?@FFTk[FF%%DATA%IMAGE_PT_active_toolX*&DATAPToolDATA H H H\B_Bh187?@88[DATA H HDDDDd?""=o?lFk[lFlFDATA) ) Cd3addA>Hz?>>6?????@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8??d#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????d??fff? SNP #$SRScripting1HH03`:%`%DATA H HDATA H`HHDATA `HH HDATA HH`HDATA H HHlDATA H`HHlDATA `HH HlDATA HH`HDATA H HHl;DATA H`HH;DATA `HH HDATA HH`HDATA H HHDATA H`HHDATA `HH HVDATA H`HVDATA(033 HHDATA(3303H HDATA(3 43 H`HDATA( 4p43HHDATA(p44 4`HHDATA(45p4H HDATA(5`54HHDATA(`555`HHDATA(56`5H HDATA(6P65 H HDATA(P666H HDATA(66P6H`HDATA(6@76H`HDATA(@776`HHDATA(77@7 HHDATA(7087`HHDATA(0887HHDATA(8808`H HDATA(8 98H HDATA( 9p98H`HDATA(p99 9`H`HDATA(9:p9HHDATA(:`:9 HHDATA(`::`HHDATA%%HH H Hm:#% S S H HDATA H HmCACA"CACA??  ##m!:##DATA H H HAA  ?@  m    %%DATA%PROPERTIES_PT_navigation_bart-&DATA H HC@ C  ?@     `% %DATA`%@%PROPERTIES_PT_context$$/&DATA@% %`%RENDER_PT_context$$X1&DATA %%@%RENDER_PT_eevee_next_sampling%%3&DATA%%RENDER_PT_eevee_next_sampling_viewport4PP4&DATA%%%RENDER_PT_eevee_next_sampling_render$$6&DATA%%%RENDER_PT_eevee_next_sampling_shadowsX8&DATA%%RENDER_PT_eevee_next_sampling_advanced:&DATA%`% %RENDER_PT_eevee_next_clamping;&DATA`%@%%RENDER_PT_eevee_next_raytracing=&DATA@% %`%RENDER_PT_eevee_next_volumestX?&DATA %%@%RENDER_PT_eevee_hairYA&DATA%% %RENDER_PT_simplify>B&DATA%%%RENDER_PT_eevee_next_depth_of_field#D&DATA%%%RENDER_PT_eevee_next_motion_blur XF&DATA%%%RENDER_PT_eevee_next_film H&DATA%`%%RENDER_PT_eevee_performance I&DATA`%@%%RENDER_PT_gpencil K&DATA@% %`%RENDER_PT_freestyle XM&DATA %@%RENDER_PT_color_managementO&DATA SmDATA%%%`H HHHm#$$$$ H HDATA H HCACA"7CA7CA??  ##m##DATA H HC@UC#""?? ##m##DATA8$$ȦHse Sculpt`GRDATAȦHЦHDATA ЦH( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /yDATA%%%HH H`H:: H HDATA H H BADAsDADA?? ttDATA H HCFCC?? DATA0:DATA%%%H`HH Hm<# &$ &$ I IDATA I ICACA"CACA?? ##m##DATA I ISCCW*#""?? ##m<##DATA8 &$H`GRDATAHHDATANH$$  C$ T< Z<`_<d<i< o<`t<y<~< <`<<< <`<# (  . `3 8 =  C `H M R  X `] b g  m `r w |  `    `    `     `    & `+ 0 5  ; `@ E J  0`5:? E`JOT Z`_di o`ty~ `$ ;J$`C<$ \ c q x      / / / / / / / / / / / / / / / 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 6 6 %6 ,6 :6 A6 H6 O6 V6 ]6 d6 r6 y6 : : : : : : : : : ; ; ; ; `= n= u= |= = = = = = = = C$-$ $  Z< d< <   y< `5   (  8  Ƹ`  ˸`@  Ѝ o< Սi< ڍ < ߍ`_< `  <  < |  O    C      =  `< `t< +   +#  + .  + &  + Z +  +  +: +`< +`H  ,~< ,J  ,`3  ,`+  , ,  ,M  %,0  *,`_ /,E  4,i 9,? >,~ C,`t H,R  M, E R, X  W, ;  \,T a,`]  f,g  k,y p,b  u, o z,d , , m  ,w  ,` ,`r  ,`  ,  ,  ,`  ,5  ,  , 0 ,  `-`J j- o- t- y- -T< - ~- - - - - - - - - - -$ ( -$!`Y$$   '  y- - / / 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 6 :6 A6 H6 O6 V6 ]6 d6 r6 y6 : : : : : : : : : ; ; ; ; `= n= u= |= = = = = = = = 6 %6 ,6 \ c q x      / / / / / / / C / / / / / /)  - < < +#  -    < + .  ,`3  R, X  p,b  ,w  ,`  ,  ,5  , 0 `-`J *,`_ 4,i >,~ - `5 O + Z -     +  ,`+  W, ;  u, o - (  - 8   C  +  , - Ƹ`    +: - ˸`@  - Ѝ o<   +`< ,  \,T z,d ,` ~- Սi< =  +`H  ,M  a,`]  , - ڍ < `< j- y< |  + &  o-  Z< ߍ`_< `t< ,~< H,R  f,g  , m  ,`r  ,  ,`  ,  ,  %,0  /,E  9,? C,`t -T< t- d< `  +   ,J  M, E k,y -$% { { {  M $ #$'$*$-$0$$&{ {{ {{ {{ {{ {{$' L0DATA%%%`HH HHk 22 I IDATA I ICA`DADADA?? kDATA I I IAA`DA@DA@DA?? k/ DATA I I Ikk0DATA I ID@{DCʹDp6ALnuDp #<zD qqk0qqDATAX2* PDATA%`%%`H`HHHWd h h I &DATA I I_DACA`DA`DA??  DATA I & IgCACA{DA{DA??  DATA & & IWWDATA & & &1DATA & & &`B`B18V7V?@8W8WWDATA & & &4C`#C`ã?@ WDATA & &Wdd HDATA HDZ?1?vף>оQ?,j?On8>$,D(e?#=>,缑{?>,j?оNn8>(e?Q?","=>g_A\ϏA??G͟QQ?C>->$,>9{?O>#=M tiBA{A>l(?Q/0.YF=?C>R.gCDGT.Df:CKHB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????D^6?ᾟ |A4@;C?Ѽ/ڿDATAx h? AL> y-?? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????DATA`%%H`HH HU ,& ,& & &DATA & &CACA@{DA@{DA?? <UDATA & &C CCC?? ;DATA(;0|DATA|DATAx ,&1;;>>> pythonSNP'$SRSculpting2`H HP;p>@%%DATA `HHDATA HH`HDATA H HHDATA H`HHDATA `HH HlDATA HH`HlDATA H HHlDATA HHDATA(P;;H`HDATA(;;P; HHDATA(;@<;`HHDATA(@<<;HHDATA(<<@< H HDATA(<0=<H HDATA(0==<H HDATA(==0=`HHDATA(= >=`HHDATA( >p>=HHDATA(p> >`H`HDATA@%%`HH HHm#`T`T & &DATA & &mCACA"CACA??  ##m##DATA & & &AA9?@m  % %DATA %PROPERTIES_PT_navigation_bartP&DATA & &CC9?@% %DATA%%VIEW3D_PT_active_tool_duplicate,,R&DATA%%%VIEW3D_PT_tools_brush_select1XT&DATA%%%VIEW3D_PT_sculpt_dyntopoV&DATA%%%VIEW3D_PT_sculpt_voxel_remeshW&DATA%`%%VIEW3D_PT_sculpt_symmetryY&DATA`%@%%VIEW3D_PT_sculpt_optionsX[&DATA@% %`%WORKSPACE_PT_main]&DATA %@%VIEW3D_PT_tools_object_options>e%%^&DATA%VIEW3D_PT_tools_object_options_transform>LL`&DATA`TmDATA%%@%HH H Hm# )$ )$ & &DATA & &CACA"7CA7CA??  ##m##DATA & &{CC #""?? ##m##DATA8 )$Hse Sculpt`GRDATAHHDATAH( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA%%`HHH`Hkl n n & 'DATA & &@zDADAk`DA`DA??  llkllDATA & & &CADAkDADA?? llkl lDATA & & &`DDlel:k:?@ l;l;dBkPl;l;`HDATA`H   DATA VIEW3D_AST_brush_sculpt0DATAxx0DATA & ' &CADAk`DA`DA?? llkQhllDATA ' ' &`B0`BG187?@887i88%%DATA%VIEW3D_PT_tools_active>88Xb&DATA ' ' '?? ?@kkiDATA ' ' '8C???88iDATA ' 'kll HDATA HDZ?<@vףس]?F>>e>%V?WFw?냄>l?س]?>e>Fw?F>%V샄>_@w???爾/HF1?C>'V?%V?zv?냄 @l@?T>ZE,=JZ>M".ØhCBb"H!Z.CKô޺B)HB??س]?F>>e>%V?WFw?냄>0 23l??SF1? >0V?%V?z`y@냄>23Q@l@?????-D?`*W!QCRl@:DATAx n? AL> y-??  HB? #<zD ?L=>1DefaultDefaultbasic_1wn.exr8663c049cdde90b2ced7ef559_1_500x500.jpg?????????L=L=L=??B@?=@???@????>??L>??????????SNP*$SRShading003H H>`D%%DATA H HDATA H`HHDATA `HH HDATA HH`HDATA H HHlDATA H`HHlDATA `HH HlDATA HH`HDATA H HHDATA H`HHDATA `HH HDATA HH`HDATA H HHDATA HHlDATA(>? HHDATA(?`?>H HDATA(`???H`HDATA(?@`? H`HDATA(@P@?HHDATA(P@@@ HHDATA(@@P@`HHDATA(@@A@H`HDATA(@AA@H`HDATA(AA@A`HHDATA(A0BA HHDATA(0BBAHHDATA(BB0B`HHDATA(B CBHHDATA( CpCB`HHDATA(pCC CHHDATA(CDpC H HDATA(D`DCH HDATA(`DDH HDATA% %H`HH Hm#UU ' 'DATA ' 'mCACA"CACA??  ##m##DATA ' ' 'AA9?@m `%`%DATA`%PROPERTIES_PT_navigation_bar88e&DATA ' 'CC9?@@%@%DATA@% %PROPERTIES_PT_context$$g&DATA %%@%WORLD_PT_context_world$$Xi&DATA%% %EEVEE_WORLD_PT_surfacek&DATA%%%EEVEE_WORLD_PT_volumel&DATA%%%EEVEE_WORLD_PT_mistn&DATA%%%EEVEE_WORLD_PT_settingsXp&DATA%`%%WORLD_PT_viewport_displayr&DATA`%@%%WORLD_PT_animations&DATA@%`%WORLD_PT_custom_propsvu&DATAUiDATA %%%`H HHHm# ,$ ,$ ' 'DATA ' 'CACA"7CA7CA??  ##m##DATA ' 'CC #""?? ##m##DATA8 ,$Hse Sculpt`GRDATAHHDATA !H( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA%% %HHH`H 0 0 ' 'DATA ' 'CACACACA?? DATA ' ' 'AACACACA?? t DATA ' ' '`HDATA`HDATA ' ' '$DATA ' ' 'sDATA ' ' '`B`B187?@88sDATA ' 'CC;?@?xxxDATA) 0)d3ddA>>dd?@?fff? DATA%%%`HH HHkl d& d& ' 'DATA ' 'BDADAkDADA?? llkllDATA ' ' '@C\C?@kkDATA ' ' '`B`B187?@88DATA ' ' ACC.D[PCelwkkw??FFL= @ lxlxklxlxDATAh d&/ ~- ?ShaderNodeTreeDATA%%%H`HHH ' 'DATA ' '5CACADADA?? DATA ' ' '???@DATA ' ' 'C~CEECDBCDB?@FF[FF%%DATA%FILEBROWSER_PT_directory_pathFFXw&DATA ' ' '???@ DATA ' ' 'pCpC?@DATA ' 'sCC ??ZDATA' DATA( $Save As Blender File/home/picca/zquez/ig/lender/.80/onfig/s/orkspaces.blend@DATA%%HH H Hkl t t ' (DATA ' '_DADAk`DA`DA??  llkllDATA ' ' 'gCADAk`DA`DA?? llkl lDATA ' ' 'kDATA ' ' ' DATA ' ' '`B`B187?@88DATA ' ( '4C`#C`ã?@ kkDATA ( 'kll HDATA HDZ?n=@vף?׫wK?)]?ZH>55(k? >pƒ2Xe??)]??5׫ZH>'k?vK?>bA_A?3?~KwKꕙ??>>e{5.@ƾ ƾ˾Dp=AeAK>N;?6t46罥= >GU1 vC<|G>#1D;ÐCHB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA????? 8?z* Ծ{A:;><)ѾiDATAx t? AL> y-??  HB? #<zD ?L=>1Defaulte.jpgforest.exrpg0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L???????L=L=L=??H@?=@???@????>??L>??????????SNP-$SRTexture PaintH (DH`%@%DATA H HDATA H`HHDATA `HH HDATA HH`HDATA H HHlDATA H`HHlDATA `HH HlDATA HH`HDATA H (HDATA (HDATA(DE HHDATA(EPEDH HDATA(PEEEH`HDATA(EEPE H`HDATA(E@FEHHDATA(@FFE HHDATA(FF@F`HHDATA(F0GFH`HDATA(0GGFH HDATA(GG0GHHDATA(G HGHHDATA( HpHG (`HDATA(pHH H ( HDATA(HpH (HDATA`%%H`HH Hm#VV ( (DATA ( (mCACA"CACA??  ##m##DATA ( ( (AA9?@m @%@%DATA@%PROPERTIES_PT_navigation_bar88y&DATA ( (C_C9?@ %%DATA %%VIEW3D_PT_active_tool_duplicateBBz&DATA%% %VIEW3D_PT_tools_object_options>e%%|&DATA%VIEW3D_PT_tools_object_options_transform>LLX~&DATA%%WORKSPACE_PT_main#(DATAViDATA%%`%`H HHHm# /$ /$ ( (DATA ( (CACA"7CA7CA??  ##m##DATA ( (CC #""?? ##m##DATA8 /$(se Sculpt`GRDATA((DATA !(( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA%@%%H`H (H ( ( ( (DATA ( (DA)DADADA?? DATA ( ( (DA)DA@DA@DA??  DATA ( ( ((D)Dl::?@ ;;dBP;;`(DATA`(   DATA IMAGE_AST_brush_paint0DATAxx0DATA ( ( (CA)DAADAADA?? QhDATA ( ( (???@iDATA ( ( (`B`BG187?@887i88`%`%DATA`%IMAGE_PT_tools_active8 8 (DATA ( (CC?@ @DATA) ()d3ddA>>dd?@?fff? DATA@%%H ( HHk z z ( H)DATA ( (_DA1DA`DA`DA??  kDATA ( ( (CCA1DAJDAJDA?? k DATA ( @) (kDATA @) B) (,DATA B) D) @)`B`B@\18p7p?@8q8q8q8q % %DATA %VIEW3D_PT_tools_active8Z8Z(DATA D) F) B)???@kkDATA F) H) D)8C C?@DATA H) F)k HDATA HUI?DZ?vף>оQ?,j?On8>$,D(e?#=>G?>,j?оNn8>(e?Q?","=>#A֎-@?t->$,> r"?O>#=GAGA+c>|?PcM-T>g$?Y[ÇaC2èGFCa÷CGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????D^6?ᾟ GA1L:DATAx z? AL> y-?? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SNP0$SRUV Editing( (I M% %DATA ( (DATA (`((DATA `(( (DATA ((`(DATA ( ((lDATA (`((lDATA `(( (lDATA ((`(DATA ( ((DATA ((DATA(I`I ((DATA(`III( (DATA(IJ`I(`(DATA(JPJI (`(DATA(PJJJ((DATA(JJPJ ((DATA(J@KJ`((DATA(@KKJ(`(DATA(KK@K( (DATA(K0LK((DATA(0LLK((DATA(LL0L`( (DATA(L ML ( (DATA( ML( (DATA%%(`(( (m# X X J) N)DATA J) L)mCACA"CACA??  ##m##DATA L) N) J)AA9?@m %%DATA%PROPERTIES_PT_navigation_bar88X(DATA N) L)CC9?@%% 2$3$DATA%%PROPERTIES_PT_context$$(DATA%%DATA_PT_empty==(DATAH 2$3$MESH_UL_vgroups_DATAH3$ 2$MESH_UL_shape_keys_DATA XiDATA%`%%`( (((m# 5$ 5$ P) R)DATA P) R)CACA"7CA7CA??  ##m##DATA R) P)CC #""?? ##m##DATA8 5$(se Sculpt`GRDATA((DATA !(( &( y-  -- -  /<  /< + 1#  -  1   1 < + 1 .  , 1`3  R, 1 X  p, 1b  , 1w  , 1`  , 1  , 15  , 1 0 `- 1`J *, 1`_ 4, 6i >, 6~ -  :6`5  A6O + H6 Z -  O6   V6  + ]6  , d6`+  W, r6 ;  u, y6 o -  :(  -  :8   : C  + :  , : - Ƹ :`   :  + :: - ˸ :`@  - Ѝ ; o<  ;  + ;`< , ;  \, `=T z, n=d , u=` ~- Ս |=i<  ==  + =`H  , =M  a, =`]  , = - ڍ = <  =`< j-  6y<  %6|  + ,6 &  o-  \ Z< ߍ c`_<  q`t< , x~< H, R  f, g  ,  m  , `r  ,   , /`  , /  , /  %, /0  /, /E  9, /? C, /`t - CT< t-  /d<  /`  + /   , /J  M, / E k, /y e- -DATA`% %%(`( (( ) ) T) )DATA T) V)CA/DANDANDA?? DATA V) X) T)BA/DAHDAHDA??  DATA X) Z) V)`(DATA`(DATA Z) \) X)"DATA \) ^) Z)\C\C{?@DATA ^) ) \)`B`B@\18p7p?@8q8q78q8q@%@%DATA@%IMAGE_PT_tools_active[88(DATA ) ^)CC_?`@DATA) ))d3ddA>>dd?@?fff? DATA %`%( ( ((k P$ P$ ) )DATA ) )_DA@+DA`DA`DA??  kDATA ) ) )CCA@+DACDACDA?? k DATA ) ) )kDATA ) ) )DATA ) ) )`B`B@\18p7p?@8q8q8q8q%%DATA%VIEW3D_PT_tools_active8Z8ZX(DATA ) ) )4C`#C`ã?@ kkDATA ) )k HDATA H!$?DZ?vף>оQ?,j?On8>$,D(e?#=>!o?>,j?оNn8>(e?Q?","=>=_DA2xj@?*C?͟QQ_?>->$,> |"?O>#=poA!oAHZ>>-R>$?qi C ýG5DtWÒѦCGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o?W;?˟QQʷ?dz>->#,>K¼z?V>*=poA!oA?????D^6?ᾟ !oA1L:DATAx P$? AL> y-?? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SCX SCScenetageain` y-`C<?? b =L=)\=)\=333>L=>L= ZNoneStandard?sRGB? dd?d@@ZQ???????o:/tmp/ L?L?L??>????BLENDER_EEVEE_NEXT ZNoneStandard?sRGB//`?????C?5555M??????D?fC??0? YR@Nonec - Base ContrastAgXicd? E A *sRGBsRGB6$6$ (:?:?:?=L>??L?L?L????b @=B@L?L>?L=>>I?@B? A ?B? Aw+2>L>?@@ #<?%DATA` DATA0  ྼ  )2? `?o:o: ?uv_importance!!= * * *P2 ?2 ?2 ?2 ?2 ?2 ?2 ?>  u,? #<#y??2>?????A[D DX9ңL>HB?[D D[D D?a?I?=¸=I??I@0 (?¸=5<¸=5>?> ) )DATA )o????C?5555( *??????DATA(m??DATA )o????C?5555 (.*??????DATA (m??DATA )o????C?5555`(??????DATA`(m??DATA )o????C?5555(T??????DATA(m??DATA  (`(`Y )DATA )o????C?5555(??????DATA(m??DATA (IDATA8brushes/essentials_brushes-gp_draw.blend/Brush/PencilDATA`(I@DATA<@brushes/essentials_brushes-gp_draw.blend/Brush/Eraser SoftDATA(`Y )DATA )o????C?5555(??????DATA(m??DATA(IDATA8brushes/essentials_brushes-gp_vertex.blend/Brush/PaintDATA`( *DATA *o????C?5555 (??????DATA (m??DATA`(I DATA8 brushes/essentials_brushes-gp_sculpt.blend/Brush/SmoothDATA`( *DATA *o????C?5555(??????DATA(m??DATA(IDATA8brushes/essentials_brushes-gp_weight.blend/Brush/PaintDATA *o????C?5555 ??????DATAT m< #>q= >u>Q>??333?Q>= W?q= >?<DATA *o????C?5555pM??????DATA$pMm<???<DATAH0????DATAP??Ǿ ?>0?> ?Ǿ?0DATA (DATA *o????C?5555`(??????DATA`(m??DATA b8bXbt//../../../../Desktop/ A DATAX Channel 0DATAX Channel 1DATAX  Channel 2DATAX Channel 3DATAX  Channel 4DATAX Channel 5DATAX  Channel 6DATAX Channel 7DATAX  Channel 8DATAX Channel 9 DATAX  Channel 10 DATAX Channel 11 DATAX  Channel 12 DATAX Channel 13 DATAX  Channel 14DATAX Channel 15DATAX  Channel 16DATAX Channel 17DATAX  Channel 18DATAX Channel 19DATAX  Channel 20DATAX Channel 21DATAX I Channel 22DATAX IIChannel 23DATAXI I IChannel 24DATAX IIIChannel 25DATAXI I IChannel 26DATAX IIIChannel 27DATAXI I IChannel 28DATAX IIIChannel 29DATAXI I IChannel 30DATAX IIIChannel 31DATAXI I IChannel 32 DATAX IIIChannel 33!DATAXI I IChannel 34"DATAX IIIChannel 35#DATAXI I IChannel 36$DATAX IIIChannel 37%DATAXI I IChannel 38&DATAX IIIChannel 39'DATAXI I IChannel 40(DATAX IIIChannel 41)DATAXI I IChannel 42*DATAX IIIChannel 43+DATAXI I IChannel 44,DATAX IIIChannel 45-DATAXI I IChannel 46.DATAX IIIChannel 47/DATAXI I IChannel 480DATAX IIIChannel 491DATAXI I IChannel 502DATAX IIIChannel 513DATAXI I IChannel 524DATAX IIIChannel 535DATAXI I IChannel 546DATAX I IIChannel 557DATAX I !I IChannel 568DATAX !I!I IChannel 579DATAX!I "I !IChannel 58:DATAX "I"I!IChannel 59;DATAX"I #I "IChannel 60<DATAX #I#I"IChannel 61=DATAX#I $I #IChannel 62>DATAX $I$I#IChannel 63?DATAX$I %I $IChannel 64@DATAX %I%I$IChannel 65ADATAX%I &I %IChannel 66BDATAX &I&I%IChannel 67CDATAX&I 'I &IChannel 68DDATAX 'I'I&IChannel 69EDATAX'I (I 'IChannel 70FDATAX (I(I'IChannel 71GDATAX(I )I (IChannel 72HDATAX )I)I(IChannel 73IDATAX)I *I )IChannel 74JDATAX *I*I)IChannel 75KDATAX*I +I *IChannel 76LDATAX +I+I*IChannel 77MDATAX+I ,I +IChannel 78NDATAX ,I,I+IChannel 79ODATAX,I -I ,IChannel 80PDATAX -I-I,IChannel 81QDATAX-I .I -IChannel 82RDATAX .I.I-IChannel 83SDATAX.I /I .IChannel 84TDATAX /I/I.IChannel 85UDATAX/I ` /IChannel 86VDATAX ``/IChannel 87WDATAX` a `Channel 88XDATAX aa`Channel 89YDATAXa b aChannel 90ZDATAX bbaChannel 91[DATAXb c bChannel 92\DATAX ccbChannel 93]DATAXc d cChannel 94^DATAX ddcChannel 95_DATAXd e dChannel 96`DATAX eedChannel 97aDATAXe f eChannel 98bDATAX ffeChannel 99cDATAXf g fChannel 100dDATAX ggfChannel 101eDATAXg h gChannel 102fDATAX hhgChannel 103gDATAXh i hChannel 104hDATAX iihChannel 105iDATAXi j iChannel 106jDATAX jjiChannel 107kDATAXj k jChannel 108lDATAX kkjChannel 109mDATAXk l kChannel 110nDATAX llkChannel 111oDATAXl m lChannel 112pDATAX mmlChannel 113qDATAXm n mChannel 114rDATAX nnmChannel 115sDATAXn o nChannel 116tDATAX oonChannel 117uDATAXo p oChannel 118vDATAX ppoChannel 119wDATAXp q pChannel 120xDATAX qqpChannel 121yDATAXq r qChannel 122zDATAX rrqChannel 123{DATAXr s rChannel 124|DATAX ssrChannel 125}DATAXs t sChannel 126~DATAX ttsChannel 127DATAXt tChannel 128DATA`left_LDATA`right_RDATA *o????(( (C?5555`(??????DATA(m??DATA(m??DATA (m??DATA`(m??DATA$Mm?????DATAP6$ViewLayerNpkX? =(@a0DATA0N`N y-DATA0`NNN -DATA0NO`N -DATA0OPON DATA0POOO DATA0OOPO +DATA0O@PO -DATA0@PPO DATA0PP@P DATA0P0QP +DATA00QQP ,DATA0QQ0Q R,DATA0Q RQ p,DATA0 RpRQ ,DATA0pRR R ,DATA0RSpR ,DATA0S`SR ,DATA0`SSS ,DATA0ST`S `-DATA0TPTS *,DATA0PTTT 4,DATA0TTPT >,DATA0T@UT -DATA0@UUT DATA0UU@U DATA0U0VU +DATA00VVU -DATA0VV0V DATA0V WV DATA0 WpWV +DATA0pWW W ,DATA0WXpW W,DATA0X`XW u,DATA0`XXX -DATA0XY`X DATA0YPYX -DATA0PYYY DATA0YYPY DATA0Y@ZY +DATA0@ZZY ,DATA0ZZ@Z -DATA0Z0[Z ƸDATA00[[Z DATA0[[0[ +DATA0[ \[ -DATA0 \p\[ ˸DATA0p\\ \ -DATA0\]p\ ЍDATA0]`]\ DATA0`]]] +DATA0]^`] ,DATA0^P^] \,DATA0P^^^ z,DATA0^^P^ ,DATA0^@_^ ~-DATA0@__^ ՍDATA0__@_ DATA0_0`_ +DATA00``_ ,DATA0``0` a,DATA0` a` ,DATA0 apa` -DATA0paa a ڍDATA0abpa DATA0b`ba j-DATA0`bbb DATA0bc`b DATA0cPcb +DATA0Pccc o-DATA0ccPc DATA0c@dc ߍDATA0@ddc DATA0dd@d ,DATA0d0ed H,DATA00eed f,DATA0ee0e ,DATA0e fe ,DATA0 fpfe ,DATA0pff f ,DATA0fgpf ,DATA0g`gf ,DATA0`ggg %,DATA0gh`g /,DATA0hPhg 9,DATA0Phhh C,DATA0hhPh -DATA0h@ih t-DATA0@iih DATA0ii@i DATA0i0ji +DATA00jji ,DATA0jj0j M,DATA0j kj k,DATA0 kpkj e-DATA0pk k -DATA  ViewLayer ID propertiesDATA cycles¼¼DATA¼ use_denoisingDATALineSet d;JDATA@ (@@DATA@@(DATAx (lGRScene Collection ( DATA (h( -DATA (h (( DATA (h`(( DATA `(h( ( +DATA (h(`( -DATA (h (( DATA (h`(( DATA `(h( ( +DATA (h(`( ,DATA (h (( R,DATA (h`(( p,DATA `(h( ( ,DATA (h(`( ,DATA (h (( ,DATA (h`(( ,DATA `(h( ( ,DATA (h(`( `-DATA (h (( *,DATA (h`(( 4,DATA `(h( ( >,DATA (h(`( -DATA (h (( DATA (h`(( DATA `(h( ( +DATA (h(`( -DATA (h ( DATA h`( DATA `h  +DATA h` ,DATA h  W,DATA h` u,DATA `h  -DATA h` DATA h  -DATA h` DATA `h  DATA h` +DATA h  ,DATA h` -DATA `h  ƸDATA h` DATA h  +DATA h` -DATA `h  ˸DATA h` -DATA h  ЍDATA h` DATA `h  +DATA h` ,DATA h  \,DATA h` z,DATA `h  ,DATA h` ~-DATA h  ՍDATA h` DATA `h  +DATA h` ,DATA h  a,DATA h` ,DATA `h  -DATA h` ڍDATA h  DATA h` j-DATA `h  DATA h` DATA h  +DATA h` o-DATA `h  DATA h` ߍDATA h  DATA h` ,DATA `h  H,DATA h` f,DATA h  ,DATA h` ,DATA `h  ,DATA h` ,DATA h  ,DATA h` ,DATA `h  %,DATA h` /,DATA h  9,DATA h` C,DATA `h  -DATA h` t-DATA h  DATA h` DATA `h  +DATA h` ,DATA h  M,DATA h` k,DATA `h  e-DATA h` -DATA i(PL`YZPLPalette ஊDATA Y`???DATA `Y r?r?r?DATA Y`f?f?f?DATA Y Y?Y?Y?DATA Y`L?L?L?DATA `Y ??????DATA Y`2?2?2?DATA Y &?&?&?DATA Y`???DATA `Y  ? ? ?DATA Y`???DATA Y >>>DATA Y`>>>DATA `Y >>>DATA Y`>>>DATA Y >>>DATA Y`L>L>L>DATA `Y >>>DATA Y`===DATA Y DATA Y`r?|?>DATA `Y ?j?DATA Y`~?'?=DATA Y ~? ?>DATA Y`{?l><DATA `Y ~?T>>DATA Y`P?DATA Y (?=t>DATA Y`><>DATA `Y ,>DATA Y`q?b?E?DATA Y ~?d?3?DATA Y`~?Z?;?DATA `Y ~?B??DATA Y`X??>DATA Y =?>>DATA Y`"?>,>DATA `Y >T>4>DATA Y`> >L>DATA Y P>=@=DATA Y`g?K??DATA `Y Q?3? ?DATA Y`A?1?>DATA Y W??0=DATA Y`?1?DATA `Y ~? ?DATA Y`?>DATA Y 7?>DATA Y`>x>=DATA `Y l> >DATA Y`~?J?Z?DATA Y ~?>K?DATA Y`~?=?DATA `Y ]?@>>DATA Y`@?>>DATA Y  ?=?DATA Y`>> ?DATA `Y >=>DATA Y`0>=d>DATA Y >=>DATA Y`??>DATA `Y ??DATA Yࠊ`?>DATA ࠊY ?>>DATA Y`ࠊ?>?DATA `Y ?~?DATA Yࡊ`?>DATA ࡊY ?DATA Y`ࡊ>DATA `Y  = =DATA Yࢊ`v?}??DATA ࢊY i?w??DATA Y`ࢊO?f?~?DATA `Y *?G?~?DATA Y࣊`>3?~?DATA ࣊Y =>}?DATA Y`࣊>*?DATA `Y <>>>DATA Yऊ`@>>DATA ऊY `=`=>DATA Y`ऊn?u?p?DATA `Y V?e?^?DATA Yॊ`,?X?9?DATA ॊY >-?F?DATA Y`ॊ>)?/?DATA `Y >>DATA Yঊ`>>>DATA ঊY 8>>>DATA Y`ঊ=H>d>DATA `Y p==>DATA Y৊`X??t?DATA ৊Y 8?t?u?DATA Y`৊.?L?5?DATA `Y >E?>DATA Yਊ`T>?>DATA ਊY >?>DATA Y`ਊ>?>DATA `Y =>,>DATA Y੊`(>p>\>DATA ੊Y =8>=DATA Y`੊o??I?DATA `Y f?s??DATA Yઊ`DATA `Y >>DATA Y૊`>?,>DATA ૊Y $>>DATA Y`૊>>DATA `Y =L>>DATA Yଊ`?>DATA ଊY ?DATA Y`ଊ>?>DATA `Y >??DATA Y୊`??DATA ୊Y >>?DATA Y`୊>?DATA `Y ?DATA Yஊ`|>>DATA ஊY>GRx(lGRCollection2 `DATA h` y-DATA `h  -OB OB0 o- \ |p|?????????????????? ??????a@DATA|DATAp|OB OB0.001 t- / }0}????????????????????????a@DATA}DATA0}OB OB0.002 - / `}}????????????????????????a@DATA`}DATA}OB OB0.003 - 1 }}?????????????????? ??????a@DATA}DATA}OB OB0.004 j- 6 ~P~????????????????????????a@DATA ~DATAP~OB OB0.005 - :6 ~~????????????????????????a@DATA~DATA~OB OB0.006 - O6 ~????????Z$?D?????????? ??????a@DATA~DATAOB OB0.008 - : @p????????????????????????a@DATA@DATApOB OB0.009 - : ????????????????????????a@DATADATAOB ƸOB0.010 - : 0????????Z$?D????????????????a@DATADATA0OB ˸OB0.012 - : `????????????????????????a@DATA`DATAOB ЍOB0.015 - ; ????????????????????????a@DATADATAOB ՍOB0.016 ~- |= P????????????????????????a@DATA DATAPOB ڍOB0.017 - = ????????????????????????a@DATADATAOB ߍOB0_node o- c ?????????????????? ??????a@DATADATAOB OB0_node.001 t- / @p????????????????????????a@DATA@DATApOB OB0_node.002 - / Ђ????????????????????????a@DATADATAЂOB OB0_node.003 - 1 0?????????????????? ??????a@DATADATA0OB OB0_node.004 j- %6 `????????????????????????a@DATA`DATAOB OB0_node.005 - A6 ????????????????????????a@DATADATAOB OB0_node.006 - V6 P????????Z$?D?????????? ??????a@DATA DATAPOB OB0_node.007 - : ????????????????????????a@DATADATAOB OB0_node.008 - : ????????????????????????a@DATADATAOB OB0_node.011 - ; @p????????????????????????a@DATA@DATApOB OB0_node.012 ~- = Ѕ????????????????????????a@DATADATAЅOB OB0_node.013 - = 0????????????????????????a@DATADATA0OB OB0_node_0 o- q `?????????????????? ??????a@DATA`DATAOB +OB0_node_0.001 t- / ????????????????????????a@DATADATAOB +OB0_node_0.002 - 1 P????????????????????????a@DATA DATAPOB +OB0_node_0.003 - 1 ?????????????????? ??????a@DATADATAOB +OB0_node_0.004 j- ,6 ????????????????????????a@DATADATAOB +OB0_node_0.005 - H6 @p????????????????????????a@DATA@DATApOB +OB0_node_0.006 - ]6 Ј????????Z$?D?????????? ??????a@DATADATAЈOB +OB0_node_0.007 - : 0????????????????????????a@DATADATA0OB +OB0_node_0.008 - : `????????????????????????a@DATA`DATAOB +OB0_node_0.009 - ; ????????????????????????a@DATADATAOB +OB0_node_0.010 ~- = P????????????????????????a@DATA DATAPOB ,OB0_node_1 o- x ?????????????????? ??????a@DATADATAOB ,OB0_node_1.001 t- / ????????????????????????a@DATADATAOB ,OB0_node_1.002 - 1 @p?????????????????? ??????a@DATA@DATApOB ,OB0_node_1.003 - d6 Ћ?????????????????? ??????a@DATADATAЋOB ,OB0_node_1.004 - : 0????????????????????????a@DATADATA0OB ,OB0_node_1.005 - ; `????????????????????????a@DATA`DATAOB ,OB0_node_1.006 ~- = ????????????????????????a@DATADATAOB %,OB0_node_10 o- / P?????????????????? ??????a@DATA DATAPOB *,OB0_node_10.001 - 1 ?????????????????? ??????a@DATADATAOB /,OB0_node_11 o- / ?????????????????? ??????a@DATADATAOB 4,OB0_node_11.001 - 6 @p?????????????????? ??????a@DATA@DATApOB 9,OB0_node_12 o- / Ў?????????????????? ??????a@DATADATAЎOB >,OB0_node_12.001 - 6 0?????????????????? ??????a@DATADATA0OB C,OB0_node_13 o- / `?????????????????? ??????a@DATA`DATAOB H,OB0_node_2 o-  ?????????????????? ??????a@DATADATAOB M,OB0_node_2.001 t- / 0-P0-????????????????????????a@DATA 0-DATAP0-OB R,OB0_node_2.002 - 1 0-0-?????????????????? ??????a@DATA0-DATA0-OB W,OB0_node_2.003 - r6 0-1-?????????????????? ??????a@DATA0-DATA1-OB \,OB0_node_2.004 - `= @1-p1-????????????????????????a@DATA@1-DATAp1-OB a,OB0_node_2.005 ~- = 1-1-????????????????????????a@DATA1-DATA1-OB f,OB0_node_3 o-  2-02-?????????????????? ??????a@DATA2-DATA02-OB k,OB0_node_3.001 t- / `2-2-????????????????????????a@DATA`2-DATA2-OB p,OB0_node_3.002 - 1 2-2-?????????????????? ??????a@DATA2-DATA2-OB u,OB0_node_3.003 - y6 3-P3-?????????????????? ??????a@DATA 3-DATAP3-OB z,OB0_node_3.004 - n= 3-3-????????????????????????a@DATA3-DATA3-OB ,OB0_node_3.005 ~- = 3-4-????????????????????????a@DATA3-DATA4-OB ,OB0_node_4 o-  @4-p4-?????????????????? ??????a@DATA@4-DATAp4-OB ,OB0_node_4.001 - 1 4-4-?????????????????? ??????a@DATA4-DATA4-OB ,OB0_node_4.002 - u= 5-05-????????????????????????a@DATA5-DATA05-OB ,OB0_node_5 o-  `5-5-?????????????????? ??????a@DATA`5-DATA5-OB ,OB0_node_5.001 - 1 5-5-?????????????????? ??????a@DATA5-DATA5-OB ,OB0_node_6 o-  6-P6-?????????????????? ??????a@DATA 6-DATAP6-OB ,OB0_node_6.001 - 1 6-6-?????????????????? ??????a@DATA6-DATA6-OB ,OB0_node_7 o- / 6-7-?????????????????? ??????a@DATA6-DATA7-OB ,OB0_node_7.001 - 1 @7-p7-?????????????????? ??????a@DATA@7-DATAp7-OB ,OB0_node_8 o- / 7-7-?????????????????? ??????a@DATA7-DATA7-OB ,OB0_node_8.001 - 1 8-08-?????????????????? ??????a@DATA8-DATA08-OB ,OB0_node_9 o- / `8-8-?????????????????? ??????a@DATA`8-DATA8-OB `-OB0_node_9.001 - 1 8-8-?????????????????? ??????a@DATA8-DATA8-OB e-OBAll objects ????????????????????????a@OB j-OBbaseoot>.004 - ??????????????????o:?????a@OB o-OBbase 2t> - ??????????????????o:?????a@OB t-OBbeam stop001 - ??????????????????o:?????a@OB y-OBCameraamera.001  |@xt@??????? m?????????33?3?5)? ??ZDATAZ???=L> ף<@OB ~-OBdelta motor7 - ??????????????????o:?????a@OB -OBdetecteur205 - ??????????????????o:?????a@OB -OBdtx2ot>.016 - ??????????????????o:?????a@OB -OBfixe vide e- ????????????????????????a@OB -OBkappaot>.006 - ?????????????????? o:?????a@OB -OBkomegat>.011 e- ??????????????????o:?????a@OB -OBkomega motor - ??????????????????o:?????a@OB -OBkphioot>.006 - C 9-P9-????????????????????????a@DATA 9-DATAP9-OB -OBLight - p@?p@??????{&?W+b=??????????22?3?'4'? ??[DATA[???=L> ף<@OB -OBlightot>.002 - ??????????????????o:?????a@OB -OBmicroscope08 - ??????????????????o:?????a@OB -OBrail amont18 - ??????????????????o:?????a@OB -OBrail amont support - ??????????????????o:?????a@OB -OBtthaot>.003 e- ??????????????????o:?????a@CA dCACameraamera.001?=BHB@?BAI@(Aɿ?II@Dk`%O6߲II@??CHBB? A333@?=? ?6?DATA ((((DATA(( cycles( DATA( ( panorama_typeDATA(  ((fisheye_fovI@DATA( Ȭ(( fisheye_lens(ADATAȬ(  (latitude_minɿDATA   Ȭ(latitude_max?DATA  ( longitude_minIDATA( h longitude_maxI@DATAh  (fisheye_polynomial_k0DDATA  hfisheye_polynomial_k1kDATA ( fisheye_polynomial_k2`DATA( fisheye_polynomial_k3%O6DATA (fisheye_polynomial_k4߲LAp-LALight ???zD=6?>==?I@L>L=AzDL?=???? B?o: AkzDDATA0kME \HME09-000 - ] `^ ` - 3p=Q' ?)?`b=A=薩DATA9- Z<DATA ]0position د2 .select_vertnp.DATA@& w0usL>S?>L>?>L>?>L?>L?>sLS?>5E>#?>G>?>L>?>G>?>I>fy?>L>?>I>fy?>mK>?>L>?>L>?>mK>?>usL>S?>sLS?>mK?>L?>mK?>Ify?>L?>L?>Ify?>G?>G?>5E#?>L?>5E#?>cBX9?>L?>L?>cBX9?>L>?>cBX9?>YB>X9?>L>?>L>?>YB>X9?>5E>#?>sLS?ZL?ZL?ZsLS?ZL?ZmK?ZL>?ZI>fy?ZG>?ZL>?ZusL>S?ZL>?ZusL>S?ZmK>?ZL>?ZL>?ZmK>?ZI>fy?Z5E#?ZG?ZL?ZG?ZIfy?ZL?ZL?ZIfy?ZmK?ZG>?Z5E>#?ZL>?Z5E>#?ZYB>X9?ZL>?ZL>?ZYB>X9?ZL?ZYB>X9?ZcBX9?ZL?ZL?ZcBX9?Z5E#?Z9 > O > O >b > a > >P>n> O >n>sO> O >sO>> O > O >>9 > >b >b >b >rl>b >b >rl>r>r>P>b >P>gf+>b >b >gf+> O >gf+>hfU> O > O >hfU>P> Z a Zb Z Zb Zb Z O ZsOZnZ O Z9 Z O Z9 ZZ O Z O ZZsOZPZrZb ZrZrlZb Zb ZrlZb ZnZPZ O ZPZhfUZ O Z O ZhfUZb ZhfUZgf+Zb Zb Zgf+ZPZ? > ?_ > ?^ > ?O > ?O >?/ >P?>?r> ?^ >?r>t?j> ?^ >t?j>?b > ?^ > ?^ >?b >? >?/ >?> ?O >?>s?O> ?O > ?O >s?O>?n>?n>P?> ?O >P?>hf?K> ?O > ?O >hf?K> ?^ >hf?K>if?+> ?^ > ?^ >if?+>P?>?/ Z ?O Z ?O Z?/ Z ?O Z?Z ?^ Zt?jZ?rZ ?_ Z? Z ?^ Z? Z?b Z ?^ Z ?^ Z?b Zt?jZP?Z?nZ ?O Z?nZs?OZ ?O Z ?O Zs?OZ?Z?rZP?Z ?^ ZP?Zif?+Z ?^ Z ?^ Zif?+Z ?O Zif?+Zhf?KZ ?O Z ?O Zhf?KZP?Zκ(=(x)x)=(x)Hx)b) )N7)֘v)b)db)x)z4x)m4z4z4m44"m4B454"4"B454:3(կκ(m(κ(x)m(m(x))Fx) ))F)F )H)m4m4H 5R'\(h)*(>I)x)H*(>I*(>Ix)H=(R'x)H=(=(R')N7)֘x)HN7)֘b)dx)Hx)Hb)dm4Hb)dz4dm4Hm4Hz4d4]56ͯB45x5쯿B45m4x5쯿x5쯿m4 5m4 5R' 5x5>I 5R']5h 5R'm4H]5h]5hm4HB45m4H4B45B4544֘ ?J7)֘ ?) ?x)H ? ) ?^) ?x) ?>45 ?]56ͯ ?x5쯿 ?>45 ?x5쯿 ?i4 ?x5쯿 ?5 ?i4 ?i4 ?5 ?i4H ?]5h ?>45 ?x5>I ?>45 ?i4H ?x5>I ?x5>I ?i4H ?5R' ?i4H ?5 ?5R' ?x) ?^) ?i4 ?x) ?9( ?ʺ( ?4: ?>45 ?4" ?>45 ?i4 ?4" ?4" ?i4 ?z4 ?i4 ?^) ?z4 ?9( ?x) ?9(R' ?x) ?x)H ?9(R' ?9(R' ?x)H ?&(>I ?x)H ?) ?&(>I ?&(>I ?) ?X(h ?H) ? ) ?)F ? ) ?x) ?)F ?)F ?x) ?i( ?x) ?ʺ( ?i( ?i( ?ʺ( ?/(կ ?v) ?J7)֘ ?^)d ?J7)֘ ?x)H ?^)d ?^)d ?x)H ?z4d ?x)H ?i4H ?z4d ?z4d ?i4H ?4 ?i4H ?>45 ?4 ?4 ?>45 ?4֘ 5 5R' ?5 5R' ?5R' ?5 ?z4 ?^)z4 ?^)b)z4=(R'=( ?9(R'=( ?9( ?9(R'z4db)d ?z4db)d ?^)d ?z4dm4Hm4 ?i4Hm4 ?i4 ?i4Hm4x) ?i4x) ?x) ?i4x)x)H ?x)x)H ?x)H ?x)x)Hm4H ?x)Hm4H ?i4H ?x)H 5 ?5 ?x5쯿 5 ?x5쯿x5쯿 ?x5쯿 ?]56ͯx5쯿x5쯿 ?]56ͯ]56ͯ ?]56ͯ ?>45]56ͯ]56ͯ ?>45B45 ?>45 ?4:B45B45 ?4:4: ?4: ?4"4:4: ?4"4" ?4" ?z44"4" ?z4z4z4d ?z4d ?4z4d ?44 ?4 ?4֘44 ?4֘4֘ ?4֘ ?>454֘4֘ ?>45B45 ?>45 ?]5hB45B45 ?]5h]5h ?]5h ?x5>I]5h]5h ?x5>Ix5>I ?x5>I ?5R'x5>Ix5>I ?5R' 5R'=(R' ?9(R' ?&(>I=(R' ?&(>I*(>I ?&(>I ?X(h*(>I*(>I ?X(h\(h ?X(h ?)\(h\(h ?)) ?) ?J7)֘)) ?J7)֘N7)֘ ?J7)֘ ?v)N7)֘N7)֘ ?v)v) ?v) ?^)dv)v) ?^)db)db) ?^) ? )b) ? ) ) ? ) ?H) ) ) ?H)H) ?H) ?)FH)H) ?)F)F ?)F ?i()F)F ?i(m( ?i( ?/(կm(m( ?/(կ3(կ ?/(կ ?ʺ(3(կ3(կ ?ʺ(κ( ?ʺ( ?9(κ(κ( ?9(=(CDZ*X>DCdZ*X>DZ*X>dCdCdZ*X>dCdZ*X>dZ>[>dCdCdZ>[>dC2wZ>[>dZ>[>2wC2wC2wZ>[>2w C2wZ>[>2w ZY?2w C2w C2w ZY?2w Cd ZY?2w ZY?d Cd Cd ZY?d Cd ZY?d Z?d Cd Cd Z?d CD Z?d Z?D CD CD Z?DCD Z?DZ*X>DCD Z?d ZY?d Z?D ZY?d ZY?2w Z?D Z?D ZY?2wZ*X>D ZY?2wZ>[>2wZ*X>DZ*X>DZ>[>2wZ*X>dZ>[>2wZ>[>dZ*X>dCdCdCDCdC2wCDCDC2w CDC2w C2w CD CD C2w Cd C2w Cd CdZ>.X>D>mCDZ>.X>d>mCD>mCdZ>.X>dZ>.X>d>mCdZ>B[>d>mCd>qCdZ>B[>dZ>B[>d>qCdZ>B[>2w>qCd>qC2wZ>B[>2wZ>B[>2w>qC2wZ>[?2w>qC2w ?wC2wZ>[?2wZ>[?2w ?wC2wZ>[?d ?wC2w ?wCdZ>[?dZ>[?d ?wCdZ>?d ?wCd ?{CdZ>?dZ>?d ?{CdZ>?D ?{Cd ?{CDZ>?DZ>?D ?{CDZ>.X>D ?{CD>mCDZ>.X>D ?{Cd ?wCd ?{CD ?wCd ?wC2w ?{CD ?{CD ?wC2w>mCD ?wC2w>qC2w>mCD>mCD>qC2w>mCd>qC2w>qCd>mCdZ>.X>dZ>B[>dZ>.X>DZ>B[>dZ>B[>2wZ>.X>DZ>.X>DZ>B[>2wZ>?DZ>B[>2wZ>[?2wZ>?DZ>?DZ>[?2wZ>?dZ>[?2wZ>[?dZ>?dDATA0nDATA`^..edge_verts *Xp.2.select_edge rp.DATA *u0    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../DATA0 rDATAh` - .corner_vert <*p. .corner_edge J*q.) X*Xq.DATA <*L0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./DATA J*L0   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-DATA X*s0BQƋ'#@.?;Q!ԟ$Y'V$*y'*X΍7ӟ''Z@7tEQ[BQߍ7a.?7.*..**mܟ$$p!.!.pc.0.p'p$' '$!xBQƋq @LQ[q^@7rʮ.+*lܞ$ BQ.?LQߗ7e.?.7.*!ԡ$VqX$*{qq{*XΌ7ӟ$r!.!+o^.2.pqp$qq$!zBQƋ'#@.? BQ!Ԡ$Y'V$*z'*X΍7ҟ''U@7uBQ[BQߌ7a.?7/*..**lܠ$$p!.!.pc.0.p'p$' '$!xBQƋq @BQ[qR@7uʮ.**lܟ$ BQ.?BQߍ7a.?.7/*!ԟ$YqR$*zqq|*XΌ7ҟ$p!.!.pc.0.pqp$qq$!xBQƋ'#@.? BQ!Ԡ$Y'V$*z'*WΌ7ҟ''U@7uBQ[BQߍ7a.?7/*..**lܟ$$o!.!.pc.0.p'p$' '$!xBQƋq @BQ[qR@7uʮ.**lܠ$ BQ.?BQߌ7a.?.7/*!ԟ$YqR$*zqq|*X΍7ҟ$p!.!.pc.0.pqp$qq$!xөaиgAE_߼="<ѸRn 6Լnga}RI,ָ1ܬBܩн=DRJ,ָ}^?#۬0ԽM+IQg!I֩RX Тa}иgRJ,ָ}н=KGQIM+Dս}߸ga}ТѽXSn tԸnS߽="<ѸRXDCD!DͮXDq8u=8k=Z=D=(˅ڴDm>չ=>gˊ=a.,..a.,3Q >  3Q >a.,..a.-3Q >  3Q > _ 1 }_;=L}__>=r_LW_?;LW_q_?=_L}_>@& ~_& _ 0& _ 0& ~_@>L}__=?q_LW_;?L__>>}_}_<; _L _ 3 _} 1 }_@@L}__;;_L_<9_~_B?L}__<?& _L& _ 1_ Ef_1 / Mf__9 9 _Ml_. 1 l_l_5 4 Ml__2 1 _Mf_6 8 g_Ԩ_ Gfn3hB3}hBq =x.[a f]adyBƘft lqE? q5m(ռ?H@bRyd>Ri(՟A|^AbԄ}y3>f[ 6b i31>(ALD7L?jD|ocibw[ww8[:&[Њy::fy`k%׊yqScke p$pRp$áBd!BּBBٍڣBѼBo'!ˍTߠo'DATAx2.select_poly_q.DATA_DATAD - !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0ME cHME0.0019-H 8$ b `c  - 3? ?!?@<A=薩DATA9-`_<DATA b0position r.2 .select_vert Xr.DATA wd;>>`Tc;>?`Td;>>c;>?`Tc;>?d;>>L>>`Td;>>`TL>>d;>>`Td;>>L>>c;>?`TL>?`Tc;>?L>?`TL>?c;>?L>?`TL>>`TL>?L>>`TL>>L>?L>?`Tc;>?`TL>>`Tc;>?`Td;>>`TL>>`Tc;>?L>?d;>>L>?L>>d;>>L?`Ti;?`TL?i;?`Ti;?L?h; >`TL >`Th; >L >`TL >h; >i;?`Th; >`Ti;?h; >`Th; >i;?L >`TL?`TL >L?`TL?L >L >`Th; >`TL?`Th; >`Ti;?`TL?`TL?i;?L >i;?h; >L >+\Ͼ$&`T ?$&`T.\>$& ?$&`T ?$&.\>$&.\>_ `T.\>$&`T.\>_ .\>$&`T.\>$&.\>_  ?$&`T ?^ `T ?$& ?^ `T ?^  ?$& ?^ `T.\>_ `T ?^ .\>_ `T.\>_  ?^  ?^ `T ?$&`T.\>_ `T ?$&`T.\>$&`T.\>_ `T ?$& ?^ .\>$& ?^ .\>_ .\>$& ?O `T ?.ݼ`T ?O  ?.ݼ`T ?.ݼ ?O +\>.ݼ`T,\>O `T+\>.ݼ,\>O `T,\>O +\>.ݼ ?.ݼ`T+\>.ݼ`T ?.ݼ+\>.ݼ`T+\>.ݼ ?.ݼ,\>O `T ?O `T,\>O  ?O `T ?O ,\>O ,\>O `T+\>.ݼ`T ?O `T+\>.ݼ`T ?.ݼ`T ?O `T ?O  ?.ݼ,\>O  ?.ݼ+\>.ݼ,\>O DATA DATA`c..edge_verts jr.2.select_edge r.DATA ju    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA DATAh - .corner_vertus. .corner_edge|Xs.) s.DATA`uL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA`|L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA` sNdmˤb4֤bp34x dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp341( PPP1( P޻c޻cſx dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp34Ndmˤb4֤bp341( PPP1( P޻c޻cNdmˤb4֤bp34x dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp341( PPP1( P޻c޻cſx dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp34Ndmˤb4֤bp341( PPP1( P޻c޻cNdmˤb4֤bp34x dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp341( PPP1( P޻c޻cſx dǩiL` ddiLÿx dǩiL` ddiLNdmˤb4֤bp34Ndmˤb4֤bp341( PPP1( P޻c޻cDATAx 2.select_poly`s.DATAH`DATA$ 8$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME qHME0.0029-ZZZ@e g - >*$yO>?p=A=薩DATA9-`t<DATAe0position -t.2 .select_vert vt.DATA8 -wZ#i>nh>n#>nh>npn#>n#>npn #>>npn>nn #>>n #>>n>nn #>k>n>nn>l>n #>k>nt>K7)@>0 ?K7)@>0t>K7)/ ?K7)@>0 ?K7)/t>K7)/t>r@>0t>K7)@>0t>r/t>K7)@>0t>K7)/t>r/ ?r@>0t>r@>0 ?r/t>r@>0t>r/ ?r/ ?K7)@>0 ?r@>0 ?K7)/ ?r@>0 ?r/ ?K7)/t>r@>0 ?r@>0t>K7)@>0 ?r@>0 ?K7)@>0t>K7)@>0 ?r/t>r/ ?K7)/t>r/t>K7)/ ?K7)/t>K7)h ?K7)ht>K7),h ?K7)h ?K7),ht>K7),ht>rht>K7)ht>r,ht>K7)ht>K7),ht>r,h ?rht>rh ?r,ht>rht>r,h ?r,h ?K7)h ?rh ?K7),h ?rh ?r,h ?K7),ht>rh ?rht>K7)h ?rh ?K7)ht>K7)h ?r,ht>r,h ?K7),ht>r,ht>K7),h ?K7),hDATA\ vDATA g..edge_verts u.2.select_edgevXu.DATA uZ    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYDATA\vDATAh- .corner_vert-u. .corner_edge -u.)`-v.DATAh-LZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYDATAh -LZ   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYWDATAh`-sZz{ѵm8mL>D_L>L>ί=wɶ`Ŷg=U'ɯ=_M߶'|_4~|Ů'չ~E tt= tttt= ~E ~~'չ~E 4/80 t80ctt= baOǡ`OQ9baʡ`Ρ`baʡ'չ~E ~~~E tt= tttt= 'չ~E |Ź~'|_4tt= 80ct4/80 baʡ`Ρ`baʡQ9Oڡ`baODATAx2.select_poly`t.Xv.DATA `t.DATA|@ !$'*-0369<?BEHKNQTWZME xHME0.003:-H9$i j - 3/ ?!?;A=薩DATA:-~<DATAi0position v.2 .select_vert w.DATA wg; >ji;?jg; >i;?ji;?g; >L >jg; >jL >g; >jg; >L >L?jL >jL?L >jL >L?i;?jL?ji;?L?jL?i;?L >jL?jg; >jL?ji;?jg; >jL?L >i;?L >g; >i;?L>>jL>?jL>>L>?jL>?L>>d;>>jL>>jd;>>L>>jL>>d;>>b;>?jd;>>jb;>?d;>>jd;>>b;>?L>?jb;>?jL>?b;>?jb;>?L>?d;>>jb;>?jL>>jb;>?jL>?jL>>jb;>?d;>>L>?d;>>L>>L>?(\Ͼ$&j$&j(\Ͼ$&$&j$&(\Ͼ$&(\Ͼa j(\Ͼ$&j(\Ͼa (\Ͼ$&j(\Ͼ$&(\Ͼa b j(\Ͼa jb (\Ͼa j(\Ͼa b $&jb j$&b jb $&(\Ͼa jb j(\Ͼ$&jb j$&j(\Ͼ$&jb (\Ͼa $&(\Ͼa (\Ͼ$&$&*\ϾO j O j*\ϾO  O j O *\ϾO +\Ͼ.ݼj ?.ݼj+\>.ݼ ?.ݼj ?.ݼ+\>.ݼ,\>O j+\>.ݼj,\>O +\>.ݼj+\>.ݼ,\>O  ?O j,\>O j ?O ,\>O j,\>O  ?O  ?.ݼj ?O j ?.ݼ ?O j ?O  ?.ݼ,\>O j ?O j+\>.ݼj ?O j ?.ݼj+\>.ݼj ?O ,\>O  ?.ݼ,\>O +\>.ݼ ?.ݼ.\>_ j ?^ j.\>_  ?^ j ?^ .\>_ .\>$&j.\>_ j.\>$&.\>_ j.\>_ .\>$& ?$&j.\>$&j ?$&.\>$&j.\>$& ?$& ?^ j ?$&j ?^  ?$&j ?$& ?^ .\>$&j ?$&j.\>_ j ?$&j ?^ j.\>_ j ?$&.\>$& ?^ .\>$&.\>_  ?^ DATA DATAj..edge_verts Xw.2.select_edge w.DATA u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA DATAh- .corner_vert yw. .corner_edge .x.).Xx.DATA` yL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA` .L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA`.sZ+343WTdJ֥TJiLd>(3(431aCAdJCAJiLdeH$$Ndmonܗ3on43%rN ddJ d.iLd0RΫ[ܗ3ի[43pso}dJsoۻiLd-j11(j1N1($$Z+343WTdJ֥TJiLd>(3(431aCAdJCAJiLdeH$$Ndmonܗ3on43%rN ddJ d.iLd0RΫ[ܗ3ի[43pso}dJsoۻiLd-j11(j1N1($$Z+343WTdJ֥TJiLd>(3(431aCAdJCAJiLdeH$$Ndmonܗ3on43%rN ddJ d.iLd0RΫ[ܗ3ի[43pso}dJsoۻiLd-j11(j1N1($$DATAx2.select_polypx.DATAHpDATA$9$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME HME0.004@:-  `  -`m o @- p>z?Eo楋>>(A>A=薩DATA@:-R DATA`m0position f*y.2 .select_vertnXy.DATA f*w +\?K7)@>0Q>K7)@>0+\?K7),hQ>K7)@>0Q>K7),h+\?K7),h+\?'@>0+\?K7)@>0+\?',h+\?K7)@>0+\?K7),h+\?',h_d>'@>0+\?'@>0_d>',h+\?'@>0+\?',h_d>',h_d>~j@>0_d>'@>0_d>~j,h_d>'@>0_d>',h_d>~j,hQ>~j@>0_d>~j@>0Q>~j,h_d>~j@>0_d>~j,hQ>~j,hQ>K7)@>0Q>~j@>0Q>K7),hQ>~j@>0Q>~j,hQ>K7),h_d>~j@>0Q>~j@>0_d>'@>0Q>~j@>0Q>K7)@>0_d>'@>0_d>'@>0Q>K7)@>0+\?'@>0Q>K7)@>0+\?K7)@>0+\?'@>0+\?',h+\?K7),h_d>',h+\?K7),hQ>K7),h_d>',h_d>',hQ>K7),h_d>~j,hQ>K7),hQ>~j,h_d>~j,hUm8=m</>8A=U>8=m</>8A=/>8A=U>8Umx™Um8A=U>x™Um8A=U>8A=U>x™Sm<)>Umx™A=)>Umx™A=U>x™A=)>Sm<)>A=)>A=>XSm<)>A=>XSm<>XA=>XA=Ӹ>Sm<>XSm<>XA=Ӹ>Rm<Ӹ>𘾈A=Ӹ>𘾈A=2>Rm<Ӹ>𘾈A=2>t虾Rm<2>t虾Rm<0+>t虾A=0+>t虾A=>YRm<0+>t虾Rm<0+>t虾A=>YRm<>YSm<>ݜRm<>YA=>ݜRm<>YA=>YA=>ݜSm<>|Sm<>ݜA=>|Sm<>ݜA=>ݜA=>|Qm<j>|Sm<>|A=j>|Sm<>|A=>|A=j>|Pm<^">jQm<j>|A=_">jQm<j>|A=j>|A=_">jGm<]>jPm<^">jA=]>jPm<^">jA=_">jA=]>jFm<d>|Gm<]>jA=d>|Gm<]>jA=]>jA=d>|Bm<{>|Fm<d>|A={>|Fm<d>|A=d>|A={>|Bm<{>lΘBm<{>|A={>lΘBm<{>|A={>|A={>lΘ?mlΘBm<{>lΘA=e>lΘBm<{>lΘA={>lΘA=e>lΘ?m|?mlΘA=e>|?mlΘA=e>lΘA=e>|=m</>|?m|A=/>|?m|A=e>|A=/>|=m</>8=m</>|A=/>8=m</>|A=/>|A=/>8Fm<d>|Bm<{>|=m</>8Sm<)>Rm<>YUmx™Rm<>YSm<>ݜUmx™Umx™Sm<>ݜUm8Sm<>ݜSm<>|Um8Um8Sm<>|Qm<j>|=m</>|=m</>8?m|=m</>8Bm<{>|?m|?m|Bm<{>|?mlΘBm<{>|Bm<{>lΘ?mlΘRm<2>t虾Rm<Ӹ>Rm<0+>t虾Rm<>YRm<Ӹ>Rm<Ӹ>Rm<>YSm<>XRm<>YSm<)>Sm<>XPm<^">jGm<]>jQm<j>|Gm<]>jFm<d>|Qm<j>|Qm<j>|Fm<d>|Um8Fm<d>|=m</>8Um8A=Ӹ>𘾈A=>XA=)>A=/>8A=/>|A=U>8A=/>|A=e>|A=U>8A=e>lΘA={>lΘA=e>|A={>lΘA={>|A=e>|A=e>|A={>|A=U>8A={>|A=d>|A=U>8A=>YA=0+>t虾A=2>𘾈A=>YA=Ӹ>𘾈A=)>A=>YA=>YA=)>A=>ݜA=)>A=U>x™A=>ݜA=>ݜA=U>x™A=>|A=U>x™A=U>8A=>|A=>|A=U>8A=j>|A=U>8A=d>|A=j>|A=j>|A=d>|A=_">jA=d>|A=]>jA=_">jDATA nDATAo..edge_verts y.2.select_edge qy.DATA u     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA  qDATAh- .corner_vert -z. .corner_edge -Xz.) -z.DATA -L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA -L    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA -s yG3l 4l B%ج~lЗzNЗ#z" hÀ ?`Q]xQ]v*a{^NjlNNjNtzvlu~O=ZOKO=Zn}}^|"} ލ}@|P|R}ؾ}ߍ}N&~ڒ}a}YC}܂}'C}}^}ς}}B}}d}}l{L 8{׾ ` ]<8gv,8gڍy556i5]6Q\GO Л _OЪ Ѵ ] \嫳 Ԫ *^ Ҟ 1_Ъ5 ԝ _ ԝ _5ЪRϟ 1_ R\۴-ܮŠϺ4iJ=~+J=95O^v#O£Fv#+ <⫟32۟382ΛƺаЛƺB2;3ӯ2 <;32M*nA*=,e?bϬK91K9f1PNVPNVhM1#e1bϬ#BZ74>Oʪ7f4>Y2}%tI%IaBt5Vo0 ?K7),h ?r@>0 ?K7),h ?r,h ?r@>0+\?K7)@>0 ?K7)@>0*\?r@>0 ?K7)@>0 ?r@>0*\?r@>0+\?K7),h+\?K7)@>0*\?r,h+\?K7)@>0*\?r@>0*\?r,h ?K7),h+\?K7),h ?r,h+\?K7),h*\?r,h ?r,h+\?K7)@>0+\?K7),h ?K7)@>0+\?K7),h ?K7),h ?K7)@>0*\?r,h*\?r@>0 ?r,h*\?r@>0 ?r@>0 ?r,hDATA$lDATAt..edge_verts v{.2.select_edge`l|.DATA  vu$    !#!""#DATA$`lDATAh - .corner_vertͼX|. .corner_edgeμ|.)`ϼ|.DATAͼL$  !"#DATAμL$   "#!DATA`ϼs$4/80z80f80f4/80z&~^}ޫ}9hbԓ8 8jC}YC}q^yG"|Fh| &/| |F/|h|DATAx2.select_poly:-}.DATA :-DATA4 !$ME HME0.006:-H ;$x y @ - 3! ?C#?`h=A=薩DATA:- m DATAx0position .}.2 .select_vert }.DATA .w ?$&d ?$&ޓ ?9(d ?$&ޓ ?9(ޓ ?9(d.\>$&d ?$&d.\>:(d ?$&d ?9(d.\>:(d.\>$&ޓ.\>$&d.\>:(ޓ.\>$&d.\>:(d.\>:(ޓ ?$&ޓ.\>$&ޓ ?9(ޓ.\>$&ޓ.\>:(ޓ ?9(ޓ.\>$&d.\>$&ޓ ?$&d.\>$&ޓ ?$&ޓ ?$&d.\>:(ޓ.\>:(d ?9(ޓ.\>:(d ?9(d ?9(ޓ(\Ͼ$&d(\Ͼ$&ޓ(\Ͼ<(d(\Ͼ$&ޓ(\Ͼ<(ޓ(\Ͼ<(d$&d(\Ͼ$&d=(d(\Ͼ$&d(\Ͼ<(d=(d$&ޓ$&d=(ޓ$&d=(d=(ޓ(\Ͼ$&ޓ$&ޓ(\Ͼ<(ޓ$&ޓ=(ޓ(\Ͼ<(ޓ$&d$&ޓ(\Ͼ$&d$&ޓ(\Ͼ$&ޓ(\Ͼ$&d=(ޓ=(d(\Ͼ<(ޓ=(d(\Ͼ<(d(\Ͼ<(ޓ N/ݼd N/ݼޓ Cd N/ݼޓ Cޓ Cd+\Ͼdh; >ޓZ >dh; >ޓZ >ޓZ >di;?dh; >d Z?dh; >dZ >d Z?di;?ޓi;?d Z?ޓi;?d Z?d Z?ޓh; >ޓi;?ޓZ >ޓi;?ޓ Z?ޓZ >ޓi;?di;?ޓh; >di;?ޓh; >ޓh; >d Z?ޓ Z?dZ >ޓ Z?dZ >dZ >ޓ+\>.ݼd+\>.ݼޓ+\>uCd+\>.ݼޓ+\>uCޓ+\>uCd ?.ݼd+\>.ݼd ?cCd+\>.ݼd+\>uCd ?cCd ?.ݼޓ ?.ݼd ?cCޓ ?.ݼd ?cCd ?cCޓ+\>.ݼޓ ?.ݼޓ+\>uCޓ ?.ݼޓ ?cCޓ+\>uCޓ ?.ݼd ?.ݼޓ+\>.ݼd ?.ݼޓ+\>.ݼޓ+\>.ݼd ?cCޓ ?cCd+\>uCޓ ?cCd+\>uCd+\>uCޓc;>?dc;>?ޓZ>?dc;>?ޓZ>?ޓZ>?dd;>>dc;>?dZ>>dc;>?dZ>?dZ>>dd;>>ޓd;>>dZ>>ޓd;>>dZ>>dZ>>ޓc;>?ޓd;>>ޓZ>?ޓd;>>ޓZ>>ޓZ>?ޓd;>>dd;>>ޓc;>?dd;>>ޓc;>?ޓc;>?dZ>>ޓZ>>dZ>?ޓZ>>dZ>?dZ>?ޓDATA DATAy..edge_verts ~.2.select_edge X~.DATA u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA DATAh- .corner_vert~. .corner_edge.~.) ..DATA`L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA`.L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA` .s*~/ixҰ/i*~ѯxtҚttttҚt`uxxҰxҰ*~ѯx"2t뵥tҚt =e̋ ڛearf ˈ = ˋ ڋ ڈ = *~юxѽxҰx*~ѯxtҚttttҚtnܹxxҰxҰ*~ѯx+i0$ti0صtҚt =Sɋ ڏSq0 ˈ = ˋ ڋ ڈ = *~/ixҰ/i*~ѯxtҚttttҚt`uxxҰxҰ*~ѯx"2t뵥tҚt =e̋ ڛearf ˈ = ˋ ڋ ڈ = *~юxѽxҰx*~ѯxtҚttttҚtnܹxxҰxҰ*~ѯx+i0$ti0صtҚt =Sɋ ڏSq0 ˈ = ˋ ڋ ڈ = *~юxѽxҰx*~ѯxtҚttttҚtnܹxxҰxҰ*~ѯx+i0$ti0صtҚt =Sɋ ڏSq0 ˈ = ˋ ڋ ڈ = *~/ixҰ/i*~ѯxtҚttttҚt`uxxҰxҰ*~ѯx"2t뵥tҚt =e̋ ڛearf ˈ = ˋ ڋ ڈ = DATAx@ 2.select_polyкX.DATAHкDATA$ ;$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME HME0.007;- `| } - 3%u? ?:A=薩DATA;-`r DATA`|0position P.2 .select_vert 50DATA PwR?`TR>`TR?ꕶR>`TR>ꕶR?ꕶl;_ ?`TR?`Tl;_ ?ꕶR?`TR?ꕶl;_ ?ꕶ. ?`Tl;_ ?`T. ?ꕶl;_ ?`Tl;_ ?ꕶ. ?ꕶ ?`T. ?`T ?ꕶ. ?`T. ?ꕶ ?ꕶ >`T ?`T >ꕶ ?`T ?ꕶ >ꕶ->`T >`T->ꕶ >`T >ꕶ->ꕶj;_>`T->`Tj;_>ꕶ->`T->ꕶj;_>ꕶR>`Tj;_>`TR>ꕶj;_>`Tj;_>ꕶR>ꕶ->`Tj;_>`T >`Tj;_>`TR>`T >`T >`TR>`T ?`TR>`TR?`T ?`T ?`TR?`T. ?`TR?`Tl;_ ?`T. ?`T. ?ꕶl;_ ?ꕶ ?ꕶl;_ ?ꕶR?ꕶ ?ꕶ ?ꕶR?ꕶ >ꕶR?ꕶR>ꕶ >ꕶ >ꕶR>ꕶ->ꕶR>ꕶj;_>ꕶ->ꕶ(>?`T(>>`T(>?ꕶ(>>`T(>>ꕶ(>?ꕶ> ?`T(>?`T> ?ꕶ(>?`T(>?ꕶ> ?ꕶ:5^> ?`T> ?`T:5^> ?ꕶ> ?`T> ?ꕶ:5^> ?ꕶQ>?`T:5^> ?`TQ>?ꕶ:5^> ?`T:5^> ?ꕶQ>?ꕶQ>>`TQ>?`TQ>>ꕶQ>?`TQ>?ꕶQ>>ꕶ<5^>>`TQ>>`T<5^>>ꕶQ>>`TQ>>ꕶ<5^>>ꕶ>>`T<5^>>`T>>ꕶ<5^>>`T<5^>>ꕶ>>ꕶ(>>`T>>`T(>>ꕶ>>`T>>ꕶ(>>ꕶ<5^>>`T>>`TQ>>`T>>`T(>>`TQ>>`TQ>>`T(>>`TQ>?`T(>>`T(>?`TQ>?`TQ>?`T(>?`T:5^> ?`T(>?`T> ?`T:5^> ?`T:5^> ?ꕶ> ?ꕶQ>?ꕶ> ?ꕶ(>?ꕶQ>?ꕶQ>?ꕶ(>?ꕶQ>>ꕶ(>?ꕶ(>>ꕶQ>>ꕶQ>>ꕶ(>>ꕶ<5^>>ꕶ(>>ꕶ>>ꕶ<5^>>ꕶC `TQؾC `TC ꕶQؾC `TQؾC ꕶC ꕶV`TC `TVꕶC `TC ꕶVꕶ!`TV`T!ꕶV`TVꕶ!ꕶ3$`T!`T3$ꕶ!`T!ꕶ3$ꕶQؾ2$`T3$`TQؾ2$ꕶ3$`T3$ꕶQؾ2$ꕶ -Ҿ!`TQؾ2$`T -Ҿ!ꕶQؾ2$`TQؾ2$ꕶ -Ҿ!ꕶ -ҾV`T -Ҿ!`T -ҾVꕶ -Ҿ!`T -Ҿ!ꕶ -ҾVꕶQؾC `T -ҾV`TQؾC ꕶ -ҾV`T -ҾVꕶQؾC ꕶ -Ҿ!`T -ҾV`TQؾ2$`T -ҾV`TQؾC `TQؾ2$`TQؾ2$`TQؾC `T3$`TQؾC `TC `T3$`T3$`TC `T!`TC `TV`T!`T!ꕶVꕶ3$ꕶVꕶC ꕶ3$ꕶ3$ꕶC ꕶQؾ2$ꕶC ꕶQؾC ꕶQؾ2$ꕶQؾ2$ꕶQؾC ꕶ -Ҿ!ꕶQؾC ꕶ -ҾVꕶ -Ҿ!ꕶ+`TQؾ+`T+ꕶQؾ+`TQؾ+ꕶ+ꕶR8`T+`TR8ꕶ+`T+ꕶR8ꕶ`TR8`TꕶR8`TR8ꕶꕶ-1`T`T-1ꕶ`Tꕶ-1ꕶQؾ+1`T-1`TQؾ+1ꕶ-1`T-1ꕶQؾ+1ꕶ-Ҿ`TQؾ+1`T-ҾꕶQؾ+1`TQؾ+1ꕶ-Ҿꕶ-ҾQ8`T-Ҿ`T-ҾQ8ꕶ-Ҿ`T-Ҿꕶ-ҾQ8ꕶQؾ+`T-ҾQ8`TQؾ+ꕶ-ҾQ8`T-ҾQ8ꕶQؾ+ꕶ-Ҿ`T-ҾQ8`TQؾ+1`T-ҾQ8`TQؾ+`TQؾ+1`TQؾ+1`TQؾ+`T-1`TQؾ+`T+`T-1`T-1`T+`T`T+`TR8`T`TꕶR8ꕶ-1ꕶR8ꕶ+ꕶ-1ꕶ-1ꕶ+ꕶQؾ+1ꕶ+ꕶQؾ+ꕶQؾ+1ꕶQؾ+1ꕶQؾ+ꕶ-ҾꕶQؾ+ꕶ-ҾQ8ꕶ-Ҿꕶ?*`TQ>*`T?*ꕶQ>*`TQ>*ꕶ?*ꕶ?`T?*`T?ꕶ?*`T?*ꕶ?ꕶ?A94`T?`T?A94ꕶ?`T?ꕶ?A94ꕶ?V`T?A94`T?Vꕶ?A94`T?A94ꕶ?VꕶQ>^`T?V`TQ>^ꕶ?V`T?VꕶQ>^ꕶ->I94`TQ>^`T->I94ꕶQ>^`TQ>^ꕶ->I94ꕶ->`T->I94`T->ꕶ->I94`T->I94ꕶ->ꕶQ>*`T->`TQ>*ꕶ->`T->ꕶQ>*ꕶ->I94`T->`TQ>^`T->`TQ>*`TQ>^`TQ>^`TQ>*`T?V`TQ>*`T?*`T?V`T?V`T?*`T?A94`T?*`T?`T?A94`T?A94ꕶ?ꕶ?Vꕶ?ꕶ?*ꕶ?Vꕶ?Vꕶ?*ꕶQ>^ꕶ?*ꕶQ>*ꕶQ>^ꕶQ>^ꕶQ>*ꕶ->I94ꕶQ>*ꕶ->ꕶ->I94ꕶ?$`TQ>$`T?$ꕶQ>$`TQ>$ꕶ?$ꕶ?7!`T?$`T?7!ꕶ?$`T?$ꕶ?7!ꕶ?y`T?7!`T?yꕶ?7!`T?7!ꕶ?yꕶ?  `T?y`T?  ꕶ?y`T?yꕶ?  ꕶQ>  `T?  `TQ>  ꕶ?  `T?  ꕶQ>  ꕶ->z`TQ>  `T->zꕶQ>  `TQ>  ꕶ->zꕶ->8!`T->z`T->8!ꕶ->z`T->zꕶ->8!ꕶQ>$`T->8!`TQ>$ꕶ->8!`T->8!ꕶQ>$ꕶ->z`T->8!`TQ>  `T->8!`TQ>$`TQ>  `TQ>  `TQ>$`T?  `TQ>$`T?$`T?  `T?  `T?$`T?y`T?$`T?7!`T?y`T?yꕶ?7!ꕶ?  ꕶ?7!ꕶ?$ꕶ?  ꕶ?  ꕶ?$ꕶQ>  ꕶ?$ꕶQ>$ꕶQ>  ꕶQ>  ꕶQ>$ꕶ->zꕶQ>$ꕶ->8!ꕶ->zꕶDATA 5DATA}..edge_verts 0HX02.select_edge70DATA 0Hu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~DATA7DATAh- .corner_vert 0 .corner_edge 0) X0DATA L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}DATA sY~F^~; ^~^~Y~F^~; j ϳ~Ay~~DyOxccګcګOxc~Ay~Cyj ϰ~Y~F^~; ^~^~Y~F^~; j ϰ~Cy~~AyOxccګcګOxc~Dy~Ayj ϳ~3l 0"ê­{̡ܡܪ­{̡"0 3l3l 0"ê­{̡ܡܪ­{̡"0 3lY~F^~; ^~^~Y~F^~; j ϳ~Ay~~DyOxccګcګOxc~Ay~Cyj ϰ~Y~F^~; ^~^~Y~F^~; j ϰ~Cy~~AyOxccګcګOxc~Dy~Ayj ϳ~3l 0"ê­{̡ܡܪ­{̡"0 3l3l 0"ê­{̡ܡܪ­{̡"0 3lY~F^~; ^~^~Y~F^~; j ϱ~Cy~~@yOxccګcګOxc~Cy~Ayj ϴ~Y~F^~; ^~^~Y~F^~; j ϱ~Cy~~@yOxccګcګOxc~Cy~Ayj ϴ~3l 0"ê­{̡ܡܪ­{̡"0 3l3l 0"ê­{̡ܡܪ­{̡/ 3lY~F^~; ^~^~Y~F^~; j ϴ~Ay~~CyOxccګcګOxc~Cy~Cyj ϱ~Y~F^~; ^~^~Y~F^~; j ϱ~Cy~~CyOxccګcګOxc~@y~Cyj ϱ~3l 0"ê­{̡ܡܪ­{̡003l3l 0"ê­{̡ܡܪ­{̡003lY~F^~; ^~^~Y~F^~; j ϱ~Cy~~CyOxccګcګOxc~@y~Cyj ϱ~Y~F^~; ^~^~Y~F^~; j ϴ~Ay~~CyOxccګcګOxc~Cy~Cyj ϱ~4l00ê­{̡ܡܪ­{̡"02l3l 0"ê­{̡ܡܪ­{̡"0 3lY~F^~; ^~^~Y~F^~; j ϴ~Ay~~CyOxccګcګOxc~@y~Cyj ϱ~Y~F^~; ^~^~Y~F^~; j ϴ~Ay~~CyOxccګcګOxc~@y~Cyj ϱ~3l 0"ê­{̡ܡܪ­{̡"0 3l3l 0"ê­{̡ܡܪ­{̡"0 3lDATAx 2.select_poly%0DATA%DATA  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME HME0.0080;-HHH  ` @` - =A@>*~=fC=`C=A=薩DATA0;- DATA 0position .X02 .select_vertེ0DATA` .wHY,#Aq>U_Y,#Aq>`識#Aq>U_Y,#Aq>`識#Aq>`識#Aq>U_J,A>U_Y,#Aq>U_識A>U_Y,#Aq>U_識#Aq>U_識A>U_J,A>`J,A>U_識A>`J,A>U_識A>U_識A>`Y,#Aq>`J,A>`識#Aq>`J,A>`識A>`識#Aq>`J,A>U_J,A>`Y,#Aq>U_J,A>`Y,#Aq>`Y,#Aq>U_識A>`識A>U_識#Aq>`識A>U_識#Aq>U_識#Aq>`>A>U_>A>`>A>U_>A>`>A>`>A>U_>$Aq>U_>A>U_>%Aq>U_>A>U_>A>U_>%Aq>U_>$Aq>`>$Aq>U_>%Aq>`>$Aq>U_>%Aq>U_>%Aq>`>A>`>$Aq>`>A>`>$Aq>`>%Aq>`>A>`>$Aq>U_>$Aq>`>A>U_>$Aq>`>A>`>A>U_>%Aq>`>%Aq>U_>A>`>%Aq>U_>A>U_>A>`DATAHེDATA`..edge_verts :02.select_edgeP0DATA@ :uH    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGDATAHPDATAh` - .corner_vertX0 .corner_edge0) 0DATA LH  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGDATA LH   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEDATA  sH{LoLoGLoG{Lowχww歇w歲wχw{LoLoGLoG{Lowχww歇w歲wχwy Yy y гy Yy Yy y гy Y{LoLoGLoG{Lowχww歇w歲wχw{LoLoGLoG{Lowχww歇w歲wχwy Yy y гy Yy Yy y гy YDATAx@2.select_poly 00DATA 0DATAd !$'*-0369<?BEHME /HME0.009`;-ZZZ  ` "- 3x @M<>'7lg>A=薩DATA`;-` DATA0position -02 .select_vert {0DATA8 -wZx Xd>kx @׍x Z 3x sx Z>x Zx Z>x Zz=x >x Xd>z=x Q=x W>x ZQ=x Wn=x k>x Z>x Zn=x kk=x @z=x k=x @׍<>x Xd>k=x @׍x Xd>>x Xd>n=x =>x Ft>n=x =Q=x @ L=>x Ft>>x Ft>Q=x @ L=z=x <{=z=x <{=x Ft>x Ft>>x Ft> 3x =둾x Ft> 3x =x s=둾x Ft>x s=zx <{=둾x Ft>zx <{=mQx @ L=둾x Ft>둾x Ft>mQx @ L=x Xd>mQx @ L=Xx =x Xd>x Xd>Xx =kx @׍<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYDATA\{LDATAh "- .corner_vert#-0 .corner_edge`-0)%-X0DATAh#-LZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYDATAh`-LZ   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYWDATAh%-sZ\N5ƞ:5E/Ӟ/aR)R)(&&7'IОl7'**2N28Ct͞DH2ɯH1HY2*"R)-<HH(<9/&*7'H=7'`&HH&}R)<(u/&(fmP/&/&mt.mo.& t.Ut.-&՜((F.t..z˟t.t.z_Jz6.`J.Qܜ(_JӜ(i_J_Ji\i&ȥ\#\&(5bDATAx`2.select_poly00DATA 0DATA| !$'*-0369<?BEHKNQTWZME /HME0.010;-^^^ .`    )- 3z>`=jn᝿>n]>*᝿>n]>gf]>*᝿>x Xd>>*Xd>>x Z>*Xd>>*᝿>x Z>x Z>*᝿>gfZ>*᝿>gf]>gfZp᝿>n᝿*᝿>n᝿>*᝿*᝿*Xd>x Xd>*᝿x Xd>x Z*᝿p]p᝿if]p᝿*᝿if]if]*᝿ifZ*᝿x ZifZ둾*Ft>>*Ft>둾x Ft>>*Ft>>x Ft>둾x Ft>]>*=>*>*Xd>>*Xd>>*>*᝿*p>*>둾*Ft>***᝿*9ٽ*P1ܽ*᝿>*]>*$>*᝿]>*$>*>*᝿>*᝿>*49=*P1ܽ둾*Ft>*>>*Ft>*>:H3*>>*Ft>>*Ft>:H3*>=*>9ٽ*P1ܽz**᝿z*]*$*᝿*᝿]*$*Xd>]*$**Xd>*]*=*Xd>]*=z*=*Xd>*Xd>z*=둾*Ft>z*=9ٽ*A=둾*Ft>둾*Ft>9ٽ*A=*p>49=*P1ܽ=*>*᝿=*=*>*᝿>*᝿=**᝿=*:H3**᝿*᝿:H3**=*>=*p>>*Ft>=*p>49=*A=>*Ft>>*Ft>49=*A=>*Xd>49=*A=>*=>*Xd>>*Xd>>*=]>*=p]>n]p᝿>n]>n᝿p᝿>gf]>n]if]>n]p]if]VO@# k{O@#iQO@#W{O@#9ٽO@#P1ܽiQO@#WiQO@#W9ٽO@#P1ܽzO@#9ٽO@#P1ܽO@#zO@#zO@#O@#O@#cO@#O@#O@#cO@#cO@#3O@#sO@#3O@#3O@#s3O@#s3O@#O@#p=O@# kp=O@# k>O@#k=O@#@>O@#]>O@#$k=O@#@k=O@#@]>O@#$z=O@#]>O@#$>O@#z=O@#z=O@#>O@#k=O@#@׍<>O@#]>O@#=k=O@#@׍O@#=p=O@#=]>O@#=>O@#=p=O@#=p=O@#=>O@#=Q=O@#@ L=>O@#=39=O@#A=Q=O@#@ L=Q=O@#@ L=39=O@#A=z=O@#<{=39=O@#A==O@#p>z=O@#<{=z=O@#<{==O@#p>=O@#>3O@#==O@#>3O@#>3O@#=3O@#=3O@#>O@#s=3O@#>O@#>O@#s=O@#s=O@#>zO@#<{=O@#>O@#p>zO@#<{=zO@#<{=O@#p>iQO@#@ L=O@#p>9ٽO@#A=iQO@#@ L=iQO@#@ L=9ٽO@#A=VO@#=9ٽO@#A={O@#=VO@#=VO@#={O@#=kO@#@׍<{O@#=]O@#=kO@#@׍O@#$>*>O@#>*]>*=>O@#>O@#]>*=]>O@#=]>*=>*=]>O@#=]>O@#=>*=>O@#=>*=49=*A=>O@#=>O@#=49=*A=39=O@#A=49=*A==*p>39=O@#A=39=O@#A==*p>=O@#p>=*p>=*>=O@#p>=O@#p>=*>=O@#>=*>:H3*>=O@#>=O@#>:H3*>3O@#>:H3*>*>3O@#>3O@#>*>O@#>*>*p>O@#>O@#>*p>O@#p>*p>9ٽ*A=O@#p>O@#p>9ٽ*A=9ٽO@#A=9ٽ*A=z*=9ٽO@#A=9ٽO@#A=z*={O@#=z*=]*={O@#={O@#=]*=]O@#=]*=*]O@#=]O@#=*O@#*]*$O@#O@#]*$]O@#$]*$z*]O@#$]O@#$z*{O@#z*9ٽ*P1ܽ{O@#{O@#9ٽ*P1ܽ9ٽO@#P1ܽ9ٽ*P1ܽ*9ٽO@#P1ܽ9ٽO@#P1ܽ*O@#**O@#O@#*O@#*:H3*O@#O@#:H3*3O@#:H3*=*3O@#3O@#=*=O@#=*=*=O@#=O@#=*=O@#=*49=*P1ܽ=O@#=O@#49=*P1ܽ39=O@#P1ܽ49=*P1ܽ>*39=O@#P1ܽ39=O@#P1ܽ>*>O@#>*]>*$>O@#>O@#]>*$]>O@#$]>*$>*]>O@#$if]ifZ>gf]ifZ>gfZ>gf]ifZx Z>gfZx Z>x Z>gfZ*Xd>둾*Ft>x Xd>둾*Ft>둾x Ft>x Xd>>*Ft>>*Xd>>x Ft>>*Xd>>x Xd>>x Ft>DATA`< +DATA ..edge_verts 02.select_edge ?0DATA u^    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]DATA` ?DATAh )- .corner_vert 0 .corner_edge X0) x0DATAx L^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]DATAx L^   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][DATAx xs^BhP׼BQu{BOB{B{ZBOBZ"BُZ׮fRBOB᦮fwBf֎WѧBOBᦎWBXNQBOBNQ߼BQb؊{BOBᦊ{Bٗ{NQBOBNQ߼BQb؎WѧBOBᦎWBXYBOBY!BqZתfRBOBᦪfwBfDWΧBOBDW BW{BOB{B{VʧBOBV B\W_YBOB^YBYXާBOBXBmYgUBOBgUBU\MkBOB\MBNzBOBzBz\MkBOB\MBNgUBOBgUBUXާBOBXBmY^YBOB^YBYVʧBOBV B\WhPBOil̪t)ctmc6%Y ?8.ߓ?c8M8c$]c$mŲ]'Jyюf;sOf y;sJ#b#fb<~Դt!(ct,bF(( bY|mbZf&|m%ѼBԃ(5(*Qwԣ5 ,p@p@,N'Dڜc]]=H4O[r[idE,'X 'A'\ ]=cW3c %WW %seTo5>5> 5 sۓ Ǩ5|5侓 .^= ԥ]=l^=6՜t['Q[Ea;''aaOsRO4ɦsݜ|W}לۏ CWW p@sÏ bp@p@e;c ( c ڄ m( Fz~/xv~ ~BxK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>yK>"K>""K>y2]~ഞ]y~g@n52]z2]@nr]yunb#pA2]z2]#p]ySpE|sW2]z2]|s]yssn72]z1]sns]yn_֠i2]y1]iQ]yi[2]z1][䳞]y[ס{2]y2]{˴]y{sn72]z1]sns]yn_pA2]y2]p~]y@pFxsW2]z2]xs]ys@n52]z2]@nr]yunbh2]z2]hL]yi~2]z2]~ᴞ]y~f{2]z2]{ȴ]y${-|2]z2]-|ϴ]y8|է|2]y1]|Ҵ]y||2]z2]|Ӵ]y|ճ|2]z1]|Ҵ]y|՟2]y2]洞]y[է|1]z2]|Ҵ]y|-|2]y1]-|ϴ]y8|{2]z2]{ȴ]y${=xu2]z2]=x]yTx~2]zfFKFK(&K\zڰzWlz>~l={[ȩTjFҩT NdjF‚HXTZq^XT!˜dJq^DATAx2.select_poly 0DATA DATA, . !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^ME /HME0.011;-@@@.  ` *- 3b ?!?u<A=薩DATA;- DATA 0position dX 02 .select_vertA 0DATA dw@c;>?jd;>>jL>?jd;>>jL>>jL>?jYB>X9?>cBX9?>YB>X9?ZcBX9?>cBX9?ZYB>X9?Zi;?ޓh; >ޓL?ޓh; >ޓL >ޓL?ޓcBX9?ZcBX9?>5E#?>cBX9?Z5E#?>5E#?Z5E#?>G?>5E#?Z5E#?ZG?>G?ZG?>Ify?>G?ZG?ZIfy?>Ify?ZIfy?>mK?>Ify?ZIfy?ZmK?>mK?ZmK?>sLS?>mK?ZmK?ZsLS?>sLS?ZsLS?>L?>sLS?ZsLS?ZL?>L?ZYB>X9?>YB>X9?Z5E>#?ZYB>X9?>5E>#?Z5E>#?>5E>#?ZG>?Z5E>#?>5E>#?>G>?ZG>?>G>?ZI>fy?ZG>?>G>?>I>fy?ZI>fy?>I>fy?ZmK>?ZI>fy?>I>fy?>mK>?ZmK>?>mK>?ZusL>S?ZmK>?>mK>?>usL>S?ZusL>S?>usL>S?ZL>?ZusL>S?>usL>S?>L>?ZL>?>d;>>jc;>?jd;>>ޓc;>?jc;>?ޓd;>>ޓL >jh; >jL?jh; >ji;?jL?jh; >ޓi;?ޓh; >ji;?ޓi;?jh; >jL>>ޓd;>>ޓL>?ޓd;>>ޓc;>?ޓL>?ޓL?ZL?ji;?jc;>?jL>?jc;>?ޓL>?jL>?Zc;>?ޓi;?ޓL?ޓL?>L>?ޓc;>?ޓL>?>c;>?ޓL>?ZL>?>L>?>L>?ZL?>L>?ZL?ZL?>L?>L?Zi;?ޓL?Zi;?ji;?ޓL>?ޓL>?>L>?>L>?ZL>?jL>?ZL>?jL>>jL>?ZL>?ZL>>jL>?>L>>jL>>ޓL>?>L>?>L>>ޓL>?ޓL>>ޓL>>jd;>>ޓL>>jd;>>jd;>>ޓL?jL?ZL?ZL?>L?ޓL?>L?ޓL >ޓL?>L?>L >ޓL?ZL >ޓL >jL?ZL?ZL >jL?jL >jL >ޓh; >jL >ޓh; >ޓh; >j N/ݼj+\Ͼgf+>hfUZgf+>gf+ZhfUZ$&ޓ(\Ͼ$&ޓb ޓ(\Ͼ$&ޓ(\Ͼa ޓb ޓgf+Zgf+>P>gf+ZP>PZP>r>PZPZr>rZr>rl>rZrZrl>rlZrl>b >rlZrlZb >b Zb > >b Zb Z > Z > a > Z Z a > a ZhfU>hfUZPZhfU>PZP>PZnZP>P>nZn>nZsOZn>n>sOZsO>sOZZsO>sO>Z>Z9 Z>>9 Z9 >9 Z O Z9 >9 > O Z O >+\Ͼ O ޓ N/ݼޓ O > N/ݼޓ O Z O > O > O Zb > O Zb Zb >b >b Z$&ޓb Z$&j$&ޓ O ޓ O > O > O Z O j O Z O j*\ϾO j O Z O Z*\ϾO j O >*\ϾO j*\ϾO ޓ O > O >*\ϾO ޓ O ޓ*\ϾO ޓ*\ϾO j+\Ͼb ޓ a >b ޓ(\Ͼa ޓ a > a >(\Ͼa ޓ a Z(\Ͼa ޓ(\Ͼa j a Z a Z(\Ͼa jb j(\Ͼa j(\Ͼa ޓ(\Ͼ$&j(\Ͼa ޓ(\Ͼ$&ޓ(\Ͼ$&j ?$&j.\>$&j ?^ j.\>$&j.\>_ j ?^ jif?+>hf?K>if?+Zhf?K>hf?KZif?+Z ?.ݼޓ+\>.ݼޓ ?O ޓ+\>.ݼޓ,\>O ޓ ?O ޓhf?KZhf?K>P?>hf?KZP?>P?ZP?>?n>P?ZP?Z?n>?nZ?n>s?O>?nZ?nZs?O>s?OZs?O>?>s?OZs?OZ?>?Z?>?/ >?Z?Z?/ >?/ Z?/ > ?O >?/ Z?/ Z ?O > ?O Zif?+>if?+ZP?Zif?+>P?ZP?>P?Z?rZP?>P?>?rZ?r>?rZt?jZ?r>?r>t?jZt?j>t?jZ?b Zt?j>t?j>?b Z?b >?b Z? Z?b >?b >? Z? >? Z ?_ Z? >? > ?_ Z ?_ >.\>$&j ?$&j.\>$&ޓ ?$&j ?$&ޓ.\>$&ޓ,\>O j+\>.ݼj ?O j+\>.ݼj ?.ݼj ?O j+\>.ݼޓ ?.ݼޓ+\>.ݼj ?.ݼޓ ?.ݼj+\>.ݼj.\>_ ޓ.\>$&ޓ ?^ ޓ.\>$&ޓ ?$&ޓ ?^ ޓ ?O Z ?O j ?.ݼj ?$&j ?^ j ?$&ޓ ?^ j ?^ Z ?$&ޓ ?.ݼޓ ?O ޓ ?O > ?^ ޓ ?$&ޓ ?^ > ?$&ޓ ?^ Z ?^ > ?^ > ?^ Z ?O > ?^ Z ?O Z ?O > ?O > ?O Z ?.ݼޓ ?O Z ?.ݼj ?.ݼޓ ?^ ޓ ?^ > ?_ > ?^ Z ?^ j ?_ Z ?^ j.\>_ j ?_ Z ?_ Z.\>_ j ?_ >.\>_ j.\>_ ޓ ?_ > ?_ >.\>_ ޓ ?^ ޓ.\>_ ޓ.\>_ j.\>$&ޓ.\>_ j.\>$&j.\>$&ޓ ?O j ?O Z ?O Z ?O > ?O ޓ ?O > ?O ޓ,\>O ޓ ?O > ?O >,\>O ޓ ?O Z,\>O ޓ,\>O j ?O Z ?O Z,\>O j ?O j,\>O j,\>O ޓ+\>.ݼj,\>O ޓ+\>.ݼޓ+\>.ݼjDATA@ADATA`..edge_verts < 02.select_edge D 0DATA <u@    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?DATA@ DDATAh*- .corner_vert nX 0 .corner_edge d 0) Z 0DATA nL@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?DATA dL@   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=DATA Zs@3='Ϊ_='F_IhYՎidiihYՎidi0x JcJ iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[>U[5[>UUUشH>U>UHtI$tI$7/NHH7/O0zܡ0z> G7/P7/N> ` iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[>U[5[>UUUشH>U>UHtI$tI$7/NHH7/O0zܡ0z> G7/P7/N> ` [60R͈0RT͈ ~}юZ+юZ+jJJ֗Ԡ"(JōmCA1a@sop/i˦pִQQ /indkêQQ >/iop/iQQ)pfpQQQQQQߍmQQQQmлnmm1a`ջnF߹ȪxZqon)on\NdXSNdtxNdtxכxw5t=] up dO`u d}%r`u6پ>`'xZq9)_6k%S6k x6k(xכxw5(@>@WVkʥT2k؎x륥Th3='Ϊ_='F_IhYՎidiihYՎidi0x JcJ iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[>U[5[>UUUشH>U>UHtI$uI$7/OHH7/P0zܡ0z> G7/P7/O> ` iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[>U[5[>UUUشH>U>UHtI$tI$7/OHH7/P0zܠ0z> G7/P7/O> ` [60R͈0RT͈ ~}юZ+юZ+jJJ֗Ԡ"(JōmCA1a@sop/i˦pִQQ /indkêQQ >/iop/iQQ)pfpQQQQQQߍmQQQQmлnmm1a`ջnF߹ȪxZqon)on\OdXSNdtxNdtxכwg5t=] up dO`u d}%r`u6پ>`'xZq9)_6k%S6k x6k(xכxw5(@>@WVkʥT2k؎x륥Th3='Ϊ_='F_IhYՎidiihYՎidi0x JcJ iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[>U[5[>UUUشH>U>UHtI$tI$7/OHH7/P0zܠ0z> G7/P7/O> ` iLiUQ^ڨ iߨQ^I^i׺^iׅ[Q^IQ^ڨ[5[[?U[5[>UUUشH>U>UHuI$uI$7/OHH7/P0zܠ0z> G7/P7/O> ` [60R͈0RT͈ ~}юZ+юZ+jJJ֗Ԡ"(JōmCA1a@sop/i˦pִQQ /indkêQQ >/iop/iQQ)pfpQQQQQQߍmQQQQmлnmm1a`ջnF߹ȪxZqon)on\NdXSNdtxNdtxכxw5t=] up dO`u d}%r`u6پ>`'xZq9)_5k%S6k x6k(xכwg5(@>@WVkʥT2k؎x륥ThDATAx2.select_poly% 0DATA%DATA. !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@ME /HME0.012;-444 .  ,- =IqC>L̇Q8?6= >A=薩DATA;-0 DATA0position * 02 .select_vertF 0DATAp *w4Q?¡>Q?#>Q?ǡ >dQ?#>Q?'>$jQ?ǡ >dQ?>6ܘQ?ǡ >dQ?չ=Q?ǡ >dQ?'>$jQ?չ=Q?չ=Q?'>$jQ?=Q?'>$jQ?.O%>&ʔQ?=Q?X >vTQ?e"=kQ?S >:Q?e"=kQ?=Q?S >:Q?S >:Q?=Q?j>Q?=Q?.O%>&ʔQ?j>Q>á >dQ>O >:Q>f>Q>á >dQ>>6ܘQ>˹=Q>T >vTQ>O >:Q>["=kQ>O >:Q>á >dQ>["=kQ>["=kQ>á >dQ>=Q>á >dQ>˹=Q>=Q>#>Q>>Q>'>$jQ>>Q>á >dQ>'>$jQ>'>$jQ>á >dQ>*O%>&ʔQ>á >dQ>f>Q>*O%>&ʔQ>'>$jQ?#>Q>#>Q?#>Q?¡>Q>#>Q>#>Q?¡>Q>>Q?¡>Q?ǡ >dQ>>Q>>Q?ǡ >dQ>á >dQ?ǡ >dQ?>6ܘQ>á >dQ>á >dQ?>6ܘQ>>6ܘQ?>6ܘQ?չ=Q>>6ܘQ>>6ܘQ?չ=Q>˹=Q?չ=Q?=Q>˹=Q>˹=Q?=Q>=Q?=Q?e"=kQ>=Q>=Q?e"=kQ>["=kQ?e"=kQ?X >vTQ>["=kQ>["=kQ?X >vTQ>T >vTQ?X >vTQ?S >:Q>T >vTQ>T >vTQ?S >:Q>O >:Q?S >:Q?j>Q>O >:Q>O >:Q?j>Q>f>Q?j>Q?.O%>&ʔQ>f>Q>f>Q?.O%>&ʔQ>*O%>&ʔQ?.O%>&ʔQ?'>$jQ>*O%>&ʔQ>*O%>&ʔQ?'>$jQ>'>$jQ?'>$jQ?#>Q>'>$jQ?ki>rQ?5s>BQ?:ge>fށQ?5s>BQ?>넿Q?:ge>fށQ?=h>.@Q?:ge>fށQ?+q> ~Q?:ge>fށQ?>넿Q?+q> ~Q?+q> ~Q?>넿Q?}> }Q?>넿Q?d>jQ?}> }Q?eD>Q?_>d}Q?GF>Q?_>d}Q?}> }Q?GF>Q?GF>Q?}> }Q?ۊ>F1Q?}> }Q?d>jQ?ۊ>F1Q>6ge>fށQ>EF>Q>ۊ>F1Q>6ge>fށQ>=h>.@Q>+q> ~Q>cD>Q>EF>Q>_>d}Q>EF>Q>6ge>fށQ>_>d}Q>_>d}Q>6ge>fށQ>}> }Q>6ge>fށQ>+q> ~Q>}> }Q>5s>BQ>ji>rQ>>넿Q>ji>rQ>6ge>fށQ>>넿Q>>넿Q>6ge>fށQ>d>jQ>6ge>fށQ>ۊ>F1Q>d>jQ>>넿Q?5s>BQ>5s>BQ?5s>BQ?ki>rQ>5s>BQ>5s>BQ?ki>rQ>ji>rQ?ki>rQ?:ge>fށQ>ji>rQ>ji>rQ?:ge>fށQ>6ge>fށQ?:ge>fށQ?=h>.@Q>6ge>fށQ>6ge>fށQ?=h>.@Q>=h>.@Q?=h>.@Q?+q> ~Q>=h>.@Q>=h>.@Q?+q> ~Q>+q> ~Q?+q> ~Q?}> }Q>+q> ~Q>+q> ~Q?}> }Q>}> }Q?}> }Q?_>d}Q>}> }Q>}> }Q?_>d}Q>_>d}Q?_>d}Q?eD>Q>_>d}Q>_>d}Q?eD>Q>cD>Q?eD>Q?GF>Q>cD>Q>cD>Q?GF>Q>EF>Q?GF>Q?ۊ>F1Q>EF>Q>EF>Q?ۊ>F1Q>ۊ>F1Q?ۊ>F1Q?d>jQ>ۊ>F1Q>ۊ>F1Q?d>jQ>d>jQ?d>jQ?>넿Q>d>jQ>d>jQ?>넿Q>>넿Q?>넿Q?5s>BQ>>넿#>#ߚ#> # >d#ߚ#>#'>$j # >d #>6ܘ # >d #= # >d#'>$j #= #=#'>$j #=#'>$j#$O%>&ʔ #= #N >vT #Q"=k #I >: #Q"=k #= #I >: #I >: #=#`> #=#$O%>&ʔ#`>R >dRE >:R\>R >dR>6ܘR=RJ >vTRE >:RG"=kRE >:R >dRG"=kRG"=kR >dRݕ=R >dR=Rݕ=Rۚ#>R>R'>$jR>R >dR'>$jR'>$jR >dR O%>&ʔR >dR\>R O%>&ʔR'>$j#ߚ#>Rۚ#>#ߚ#>#>Rۚ#>Rۚ#>#>R>#> # >dR>R> # >dR >d # >d #>6ܘR >dR >d #>6ܘR>6ܘ #>6ܘ #=R>6ܘR>6ܘ #=R= #= #=R=R= #=Rݕ= #= #Q"=kRݕ=Rݕ= #Q"=kRG"=k #Q"=k #N >vTRG"=kRG"=k #N >vTRJ >vT #N >vT #I >:RJ >vTRJ >vT #I >:RE >: #I >:#`>RE >:RE >:#`>R\>#`>#$O%>&ʔR\>R\>#$O%>&ʔR O%>&ʔ#$O%>&ʔ#'>$jR O%>&ʔR O%>&ʔ#'>$jR'>$j#'>$j#ߚ#>R'>$j#ji>r#5s>B#0ge>fށ#5s>B#>넿#0ge>fށ#=h>.@#0ge>fށ#+q> ~#0ge>fށ#>넿#+q> ~#+q> ~#>넿#{}> }#>넿#d>j#{}> }#`D>#_>d}#BF>#_>d}#{}> }#BF>#BF>#{}> }#ۊ>F1#{}> }#d>j#ۊ>F1S,ge>fށS@F>Sۊ>F1S,ge>fށS=h>.@S+q> ~S^D>S@F>S_>d}S@F>S,ge>fށS_>d}S_>d}S,ge>fށSw}> }S,ge>fށS+q> ~Sw}> }S5s>BSji>rS>넿Sji>rS,ge>fށS>넿S>넿S,ge>fށSd>jS,ge>fށSۊ>F1Sd>jS>넿#5s>BS5s>B#5s>B#ji>rS5s>BS5s>B#ji>rSji>r#ji>r#0ge>fށSji>rSji>r#0ge>fށS,ge>fށ#0ge>fށ#=h>.@S,ge>fށS,ge>fށ#=h>.@S=h>.@#=h>.@#+q> ~S=h>.@S=h>.@#+q> ~S+q> ~#+q> ~#{}> }S+q> ~S+q> ~#{}> }Sw}> }#{}> }#_>d}Sw}> }Sw}> }#_>d}S_>d}#_>d}#`D>S_>d}S_>d}#`D>S^D>#`D>#BF>S^D>S^D>#BF>S@F>#BF>#ۊ>F1S@F>S@F>#ۊ>F1Sۊ>F1#ۊ>F1#d>jSۊ>F1Sۊ>F1#d>jSd>j#d>j#>넿Sd>jSd>j#>넿S>넿#>넿#5s>BS>넿 0>>nD>n 0>>4glD>nD>4gl 0>>4gl 0> =n 0>>n 0> =4gl 0>>n 0>>4gl 0> =4glD =n 0> =nD =4gl 0> =n 0> =4glD =4glD>nD =nD>4glD =nD =4glD>4gl 0> =nD =n 0>>nD =nD>n 0>>nD =4gl 0> =4glD>4gl 0> =4gl 0>>4glD>4glDATA4FDATA ..edge_verts I 02.select_edge IX 0DATA Iu4    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223DATA4 IDATAh,- .corner_vert P 0 .corner_edge F 0) < 0DATA PL4  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123DATA FL4   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231DATA <s4Ç~ڨ!zڇ~,u!z_՚!zڨx!z;uYxPѫx3ut#u#Ӆz3tÇ~ڨ|ڇ~,Ǵt|_ի|t{i״tza՘{E`ow#Ӆz3`oښÇ~ڨÚwڨxښwa`oǫxɫx`o}`o_Շ~,}Ç~ڨ|ڇ~,`o|_ժ|`o{i`oza՘{Eu%ݗ HHߠ <&&< b)JԷͷ#Hߗ  Hՠzk&&Ѽ$&__=&zHߘ  uHuۿ㭽]]3ƽ77½ٽB㭅д&uۚÇ~ڨ!zڇ~,u!z_՚!zڨx!z;uYxPѫx3ut#u#Ӆz3tÇ~ڨ|ڇ~,Ǵt|_ի|t{i״tza՘{E`ow#Ӆz3`oښÇ~ڨÚwڨxښwa`oǫxɫx`o}`o_Շ~,}Ç~ڨ|ڇ~,`o|_ի|`o{i`oza՘{Eu&ݗ HHߠ <&&< b)JԶͶ"Hߗ  Hՠzk&&ѻ$&__=&zHߘ  uHuۿ㭽]]3ƽ77½ٽA㭅д&uۚÇ~ڨ!zڇ~,u!z_՚!zڨx!z;uYxPѫx3ut#u#Ӆz3tÇ~ڨ|ڇ~,Ǵt|_ի|t{i״tza՘{E`ow#Ӆz3`oښÇ~ڨÚwڨxښwa`oǫxɫx`o}`o_Շ~,}Ç~ڨ|ڇ~,`o|_ի|`o{i`oza՘{Eu%ݗ HHߠ <&&< b)JԷͷ#Hߗ  Hՠzk&&Ѽ$&__=&zHߘ  uHuۿ㭽]]3ƽ77½ٽB㭅д%uۚÇ~ڨ!zڇ~,u!z_՚!zڨx!z;uYxPѫx3ut#u#Ӆz3tÇ~ڨ|ڇ~,Ǵt|_ի|t{i״tza՘{E`ow#Ӆz3`oښÇ~ڨÚwڨxښwa`oǫxɫx`o}`o_Շ~,}Ç~ڨ|ڇ~,`o|_ի|`o{i`oza՘{Eu&ݗ HHߠ <&&< b)JԶͶ#Hߗ  Hՠzk&&ѻ$&__=&zHߘ  uHuۿ㭽]]3ƽ77½ٽA㭅д&uu}u+uuu}u+T|M|M|M|T|M|u}u+uuu}u+T|M|M|M|T|M| }|}} }| }|}} }|DATAx2.select_poly%X 0DATA%DATA . !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.14ME /HME0.013 <-  ` `'-  `.- η>+S?>#>A=薩DATA <-E DATA0position t* 02 .select_vert0DATA t*w T9(? qT9(?n}:(? qT9(?n}:(?n}:(? qRq= qT9(? q{q= qT9(? q}:(? q{q= qRq=nRq= q{q=nRq= q{q= q{q=nT9(?nRq=n}:(?nRq=n{q=n}:(?nRq= qRq=nT9(? qRq=nT9(?nT9(? q{q=n{q= q}:(?n{q= q}:(? q}:(?n}:(? q}:(?nK:(? q}:(?nK:(?nK:(? q{q= q}:(? qHq= q}:(? qK:(? qHq= q{q=n{q= qHq=n{q= qHq= qHq=n}:(?n{q=nK:(?n{q=nHq=nK:(?n{q= q{q=n}:(? q{q=n}:(?n}:(? qHq=nHq= qK:(?nHq= qK:(? qK:(?nK:(? qK:(?nپ:(? qK:(?nپ:(?nپ:(? qHq= qK:(? qپq= qK:(? qپ:(? qپq= qHq=nHq= qپq=nHq= qپq= qپq=nK:(?nHq=nپ:(?nHq=nپq=nپ:(?nHq= qHq=nK:(? qHq=nK:(?nK:(? qپq=nپq= qپ:(?nپq= qپ:(? qپ:(?nپ:(? qپ:(?nQ:(? qپ:(?nQ:(?nQ:(? qپq= qپ:(? qQq= qپ:(? qQ:(? qQq= qپq=nپq= qQq=nپq= qQq= qQq=nپ:(?nپq=nQ:(?nپq=nQq=nQ:(?nپq= qپq=nپ:(? qپq=nپ:(?nپ:(? qQq=nQq= qQ:(?nQq= qQ:(? qQ:(?nQ><(? qQ><(?n><(? qQ><(?n><(?n><(? qQ> q= qQ><(? q>q= qQ><(? q><(? q>q= qQ> q=nQ> q= q>q=nQ> q= q>q= q>q=nQ><(?nQ> q=n><(?nQ> q=n>q=n><(?nQ> q= qQ> q=nQ><(? qQ> q=nQ><(?nQ><(? q>q=n>q= q><(?n>q= q><(? q><(?n><(? q><(?nE><(? q><(?nE><(?nE><(? q>q= q><(? qH>q= q><(? qE><(? qH>q= q>q=n>q= qH>q=n>q= qH>q= qH>q=n><(?n>q=nE><(?n>q=nH>q=nE><(?n>q= q>q=n><(? q>q=n><(?n><(? qH>q=nH>q= qE><(?nH>q= qE><(? qE><(?ny?<(? qy?<(?nP?=(? qy?<(?nP?=(?nP?=(? q{?q= qy?<(? qR?q= qy?<(? qP?=(? qR?q= q{?q=n{?q= qR?q=n{?q= qR?q= qR?q=ny?<(?n{?q=nP?=(?n{?q=nR?q=nP?=(?n{?q= q{?q=ny?<(? q{?q=ny?<(?ny?<(? qR?q=nR?q= qP?=(?nR?q= qP?=(? qP?=(?nE><(? qE><(?ny?<(? qE><(?ny?<(?ny?<(? qH>q= qE><(? q{?q= qE><(? qy?<(? q{?q= qH>q=nH>q= q{?q=nH>q= q{?q= q{?q=nE><(?nH>q=ny?<(?nH>q=n{?q=ny?<(?nH>q= qH>q=nE><(? qH>q=nE><(?nE><(? q{?q=n{?q= qy?<(?n{?q= qy?<(? qy?<(?nDATA DATA ..edge_verts 2X02.select_edge`0DATA 2u     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA `DATAh`.- .corner_vert -0 .corner_edge -0) -X0DATA -L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA -L    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA -s {nGin_ixipϱo2U촱o2U2U{nGin_ixipϱo2U촱o2U2UׅA@1?@1x@1xA@1?ixiiiixi2U2U2U2U2U2Uixiiiixi2U2U2U2U2U2UA@1?@1x@1xA@1?A@1?@1x@1xA@1?ixiiiixi2U2U2U2U2U2Uixiiiixi2U2U2U2U2U2UA@1?@1x@1xA@1?A@1?@1x@1xA@1?ixin_i{nG2U2Uo2Upϱoixin_i{nG2U2Uo2UpϱoA@1?@1x@1xA@1?ׅƮ{nGin_ixipϱo2U촱o2U2U{nGin_ixipϱo2U촱o2U2UׅA@1?@1x@1xA@1?ixiiiixi2U2U2U2U2U2Uixiiiixi2U2U2U2U2U2UA@1?@1x@1xA@1?A@1?@1x@1xA@1?ixin_i{nG2U2Uo2Upϱoixin_i{nG2U2Uo2UpϱoA@1?@1x@1xA@1?ׅixiiiixi2U2U2U2U2U2Uixiiiixi2U2U2U2U2U2UA@1?@1x@1xA@1?A@1?@1x@1xA@1?DATAx2.select_poly ~0DATA` ~DATA`'- !$'*-0369<?BEHKNQTWZ]`cfilorux{~  ME /HME0.014P<-  `  (  A0 2&;i<>&>x?A=薩DATAP<-?DATA0position0J2 .select_vert XJDATAU0w #>n #>>n#> q #>>n #>> q#> q>n q>l> q>nn>l> q>l>n>nnp q>n qpn>n q>nnpnh> qp qh>np qpnh>n #>k> q>l> q #>> q>l> q>n q #>> q #>> q>n q#> q>n qp q#> q#> qp q#i> qp qh> q#i> q #>>n #>k>n #>> q #>k>n #>k> q #>> q #>k>n>l>n #>k> q>l>n>l> q #>k> qh>n#i>nh> q#i>n#i> qh> q#i>n#>n#i> q#>n#> q#i> qpnvn.>nnvn->vn.>nnp.pn.>n.pn.>nn.>n.6.p.->6.p..>n.->6.v)b6.->v)b6.->6.->v)bvnv)b->vnv)b->v)b->vnvnpnv)bpnp.v)bv)bp.6.->6..>n.->v)b.>n..>nn->v)b->v)b.>nn->vn<W!>8gl<W!>8K<$>8<W!>8glK<$>8K<$>8glK<$>8؀8K<$>8glK<$>8gl؀8gl؀82\8gl؀8gl2\82\8gl2\8gl2\8K982\8glK98K98glK98/\<52S>8K98glK98gl/\<52S>8/\<62S>8glǞ=v>8gl}=]d>8gl}=]d>8}=]d>8}=]d>8glթZ=v>8}=]d>8Ǟ=v>8Ǟ=v>8glǞ=v>8ݯ=$>8Ǟ=v>8glǞ=v>8glݯ=$>8ݯ=$>8glݯ=$>8=/3>8ݯ=$>8glݯ=$>8gl=/3>8=/3>8gl=/3>8*=D>8=/3>8gl=/3>8gl*=D>8*=D>8gl*=D>8&=y2U>8*=D>8gl*=D>8gl&=y2U>8&=y2U>8gl&=y2U>84==`>8&=y2U>8gl&=y2U>8gl4==`>84==`>8gl4==`>8}=e>84==`>8gl4==`>8gl}=e>8}=e>8gl}=e>8l9=`>8}=e>8gl}=e>8gll9=`>8l9=`>8gll9=`>8=x2U>8l9=`>8gll9=`>8gl=x2U>8=x2U>8gl=x2U>8[$<D>8=x2U>8gl=x2U>8gl[$<D>8[$<D>8gl[$<D>8(</3>8[$<D>8gl[$<D>8gl(</3>8(</3>8gl(</3>8+=$>8(</3>8gl(</3>8gl+=$>8+=$>8gl+=$>8թZ=v>8+=$>8gl+=$>8glթZ=v>8թZ=v>8glթZ=v>8}=]d>8glթZ=v>8gl/ۤ=%>8gl/ۤ=%>8}=K>8/ۤ=%>8gl}=K>8}=K>8gl}=K>812=$>8}=K>8gl}=K>8gl12=$>812=$>8gl12=$>8gl12=$>89!=>812=$>8gl9!=>88!=>8gl9!=>8=n>88!=>8gl8!=>8gl=n>8=n>8gl=n>8I=n>8=n>8gl=n>8glI=n>8I=n>8gl_<]>8glI=n>8gl_<]>8I=n>8glI=n>8_<]>8_<]>8gl_<]>8x<>8_<]>8glx<>8x<>8glx<>8:<>8x<>8glx<>8gl:<>8:<>8glC<>8gl:<>8glC<>8:<>8gl:<>8C<>8C<>8glC<>8<>8C<>8gl<>8<>8gl<>8(s8<>8gl<>8gl(s8(s8gl(s8Sm<->8(s8gl(s8glSm<->8Sm<->8glRm<>8glSm<->8glRm<>8Sm<->8glSm<->8Rm<>8Rm<>8glRm<>8~p<>8Rm<>8gl~p<>8~p<>8gl~p<>8y8~p<>8gl~p<>8gly8y8gl<W!>8gly8gl<W!>8y8gly8<W!>8[F=]>8glμ=o>8glݯ=$>8glx<>8gl:<>8gl_<]>8gl:<>8gl+=$>8gl_<]>8gl_<]>8gl+=$>8glI=n>8gl+=$>8gl=n>8glI=n>8gl =]nc>8gl=d>8gl&=y2U>8glμ=o>8gl=n>8glݯ=$>8gl=n>8gl =>8glݯ=$>8glݯ=$>8gl =>8glǞ=v>8gl =>8gl/ۤ=%>8glǞ=v>8glǞ=v>8gl/ۤ=%>8gl}=]d>8gl/ۤ=%>8gl}=K>8gl}=]d>8gl}=]d>8gl}=K>8glթZ=v>8gl}=K>8gl12=$>8glթZ=v>8glթZ=v>8gl12=$>8gl+=$>8gl12=$>8gl8!=>8gl+=$>8gl+=$>8gl8!=>8gl=n>8gl&=y2U>8gl=72S>8gl*=D>8gl=72S>8gl^=A@>8gl*=D>8gl*=D>8gl^=A@>8gl=/3>8gl^=A@>8gl=P->8gl=/3>8gl=/3>8gl=P->8glݯ=$>8gl=P->8gl|S=l.)>8glݯ=$>8glݯ=$>8gl|S=l.)>8glɠ=$>8gl[$<D>8gl/\<62S>8gl=x2U>8gl/\<62S>8glԀ8gl=x2U>8gl=x2U>8glԀ8gll9=`>8glԀ8glK<[>8gll9=`>8glݯ=$>8glA=>8glA=->8glA=5j>8gl=ii>8gl=h>8gly8gl<W!>8gl+=$>8gl<W!>8glK<$>8gl+=$>8glK<$>8gl؀8gl+=$>8gl+=$>8gl؀8gl(</3>8gl؀8gl2\8gl(</3>8gl(</3>8gl2\8gl[$<D>8gl2\8glK98gl[$<D>8gl[$<D>8glK98gl/\<62S>8gl=>8glA=>8gl=J>8glA=>8glݯ=$>8gl=J>8gl=J>8glݯ=$>8glJ=W!>8glݯ=$>8glɠ=$>8glJ=W!>8gl=>8gl[F=]>8gl,=>8gl[F=]>8glݯ=$>8gl,=>8gl,=>8glݯ=$>8gl"=>8glݯ=$>8glA=->8gl"=>8gl"=>8glA=->8gl,=>8glA=->8gl=c>8gl,=>8gl:8glp

8glW8gl =]nc>8gl&=y2U>8gl-ۤ=d>8gl&=y2U>8gl4==`>8gl-ۤ=d>8gl-ۤ=d>8gl4==`>8gl}=O7i>8gl4==`>8gl}=e>8gl}=O7i>8gl}=O7i>8gl}=e>8gl12=d>8gl}=e>8gll9=`>8gl12=d>8gl12=d>8gll9=`>8gl5!=\nc>8gll9=`>8glK<[>8gl5!=\nc>8gl5!=\nc>8glK<[>8gl=d>8glYF=o%p>8gl=h>8glμ=if>8gl=h>8glJ=,_>8glμ=if>8glμ=if>8glJ=,_>8gl=d>8glJ=,_>8glȠ=[>8gl=d>8gl=d>8glȠ=[>8gl&=y2U>8glȠ=[>8gl{S=TW>8gl&=y2U>8gl&=y2U>8gl{S=TW>8gl=72S>8gl~p<>8gly8glRm<>8gly8gl+=$>8glRm<>8glRm<>8gl+=$>8glSm<->8gl+=$>8gl:<>8glSm<->8glSm<->8gl:<>8gl(s8gl:<>8glC<>8gl(s8gl(s8glC<>8gl<>8gl=d>8glK<[>8glI=if>8glK<[>8gl<,_>8glI=if>8glI=if>8gl<,_>8glW8gl<,_>8glwy8glW8glW8glwy8gl:8glwy8glqp8gl:8glqp8glEm<4j>8gl:8gl:8glEm<4j>8glC8glEm<4j>8glDm<Vn>8glC8glC8glDm<Vn>8gl

8glDm<Vn>8gls8gl

8glYF=o%p>8gl=p>8gl=h>8gl=p>8gl+=cp>8gl=h>8gl=h>8gl+=cp>8glA=5j>8gl+=cp>8gl"=cp>8glA=5j>8glA=5j>8gl"=cp>8glA=Vn>8gl"=cp>8gl*=p>8glA=Vn>8glA=Vn>8gl*=p>8gl=o>8gl[F=]>8=>8,=>8=x2U>8l9=`>8K<[>8*=D>8=62S>8&=y2U>8=62S>8|S=TW>8&=y2U>8&=y2U>8|S=TW>84==`>8|S=TW>8Ƞ=[>84==`>8Em<4j>8qp8wy8J=W!>8ɠ=$>8ݯ=$>8ɠ=$>8}S=l.)>8ݯ=$>8ݯ=$>8}S=l.)>8=/3>8}S=l.)>8=P->8=/3>8=/3>8=P->8*=D>8=P->8^=A@>8*=D>8*=D>8^=A@>8=62S>8K<[>8Ԁ8=x2U>8Ԁ8/\<52S>8=x2U>8=x2U>8/\<52S>8[$<D>8/\<52S>8K98[$<D>8[$<D>8K98(</3>8K982\8(</3>8(</3>82\8+=$>82\8+=$>8+=$>8؀8K<$>8Ƞ=[>8J=,_>8μ=if>8μ=if>8=d>8Ƞ=[>8=d>8 =]nc>8Ƞ=[>8Ƞ=[>8 =]nc>84==`>8 =]nc>8-ۤ=d>84==`>84==`>8-ۤ=d>8}=e>8-ۤ=d>8}=O7i>8}=e>8}=e>8}=O7i>8l9=`>8}=O7i>812=d>8l9=`>8l9=`>812=d>8K<[>8=n>8μ=o>8ݯ=$>8μ=o>8[F=]>8ݯ=$>8+=$>8Rm<>8Sm<->812=d>86!=\nc>8K<[>86!=\nc>8=d>8K<[>8K<[>8=d>8<,_>8=d>8I=if>8<,_>8<,_>8I=if>8wy8I=if>8W8wy8=h>8=ii>8A=5j>8+=cp>8=p>8YF=n%p>8[F=]>8,=>8ݯ=$>8,=>8=J>8ݯ=$>8ݯ=$>8=J>8J=W!>8_<]>8I=n>8+=$>8~p<>8Rm<>8y8Rm<>8+=$>8y8y8+=$>8<W!>8+=$>8K<$>8<W!>8=h>8+=cp>8J=,_>8+=cp>8YF=n%p>8J=,_>8J=,_>8YF=n%p>8μ=if>8=>8=J>8A=>8=J>8,=>8A=>8A=>8,=>8A=->8,=>8"=>8A=->8A=->8"=>8=c>8"=>8,=>8=c>8=h>8A=5j>8+=cp>8A=5j>8A=Vn>8+=cp>8+=cp>8A=Vn>8"=cp>8A=Vn>8=o>8"=cp>8"=cp>8=o>8*=p>8x<>8_<]>8:<>8_<]>8+=$>8:<>8:<>8+=$>8C<>8+=$>8Sm<->8C<>8C<>8Sm<->8<>8Sm<->8(s8<>8W8p<p>8wy8p<p>8:8wy8wy8:8Em<4j>8:8C8Em<4j>8Em<4j>8C8Dm<Vn>8C8

8Dm<Vn>8Dm<Vn>8

8s8I=n>8=n>8+=$>8=n>89!=>8+=$>8+=$>89!=>8թZ=v>89!=>812=$>8թZ=v>8թZ=v>812=$>8}=]d>812=$>8}=K>8}=]d>8}=]d>8}=K>8Ǟ=v>8}=K>8/ۤ=%>8Ǟ=v>8Ǟ=v>8/ۤ=%>8ݯ=$>8/ۤ=%>8 =>8ݯ=$>8ݯ=$>8 =>8=n>8=P->8gl=P->8}S=l.)>8=P->8gl}S=l.)>8|S=l.)>8gl}S=l.)>8ɠ=$>8|S=l.)>8gl|S=l.)>8glɠ=$>8ɠ=$>8glɠ=$>8J=W!>8ɠ=$>8glɠ=$>8glJ=W!>8J=W!>8gl=J>8glJ=W!>8gl=J>8J=W!>8glJ=W!>8=J>8=J>8gl=J>8=>8=J>8gl=>8=>8gl=>8A=>8=>8gl=>8glA=>8A=>8glA=->8glA=>8glA=->8A=>8glA=>8A=->8A=->8glA=->8=c>8A=->8gl=c>8=c>8gl=c>8,=>8=c>8gl=c>8gl,=>8,=>8gl,=>8"=>8,=>8gl,=>8gl"=>8"=>8gl,=>8gl"=>8gl,=>8"=>8gl"=>8,=>8,=>8gl,=>8=>8,=>8gl=>8=>8gl=>8[F=]>8=>8gl=>8gl[F=]>8[F=]>8glμ=o>8gl[F=]>8glμ=o>8[F=]>8gl[F=]>8μ=o>8μ=o>8glμ=o>8=n>8μ=o>8gl=n>8=n>8gl=n>8 =>8=n>8gl=n>8gl =>8 =>8gl =>8/ۤ=%>8 =>8gl =>8gl/ۤ=%>8/ۤ=%>8gl=72S>8gl=62S>8^=A@>8=72S>8gl^=A@>8^=A@>8gl^=A@>8=P->8^=A@>8gl^=A@>8gl=P->8=P->8glJ=,_>8glJ=,_>8Ƞ=[>8J=,_>8glȠ=[>8Ƞ=[>8glȠ=[>8|S=TW>8Ƞ=[>8glȠ=[>8gl|S=TW>8{S=TW>8gl|S=TW>8=62S>8{S=TW>8gl{S=TW>8gl=62S>8=72S>8gl12=d>8gl12=d>8}=O7i>812=d>8gl}=O7i>8}=O7i>8gl}=O7i>8-ۤ=d>8}=O7i>8gl}=O7i>8gl-ۤ=d>8-ۤ=d>8gl-ۤ=d>8gl-ۤ=d>8 =]nc>8-ۤ=d>8gl =]nc>8 =]nc>8gl =]nc>8=d>8 =]nc>8gl =]nc>8gl=d>8=d>8gl=d>8μ=if>8=d>8gl=d>8glμ=if>8μ=if>8glYF=o%p>8glμ=if>8glYF=n%p>8μ=if>8glμ=if>8YF=n%p>8YF=o%p>8glYF=n%p>8=p>8YF=o%p>8gl=p>8=p>8gl=p>8+=cp>8=p>8gl=p>8gl+=cp>8+=cp>8gl"=cp>8gl+=cp>8gl"=cp>8+=cp>8gl+=cp>8"=cp>8"=cp>8gl"=cp>8*=p>8"=cp>8gl*=p>8*=p>8gl*=p>8=o>8*=p>8gl*=p>8gl=o>8=o>8gl=o>8A=Vn>8=o>8gl=o>8glA=Vn>8A=Vn>8glA=5j>8glA=Vn>8glA=5j>8A=Vn>8glA=Vn>8A=5j>8A=5j>8glA=5j>8=ii>8A=5j>8gl=ii>8=ii>8gl=ii>8=h>8=ii>8gl=ii>8gl=h>8=h>8glJ=,_>8gl=h>8glJ=,_>8=h>8gl=h>8J=,_>8/\<62S>8gl/\<52S>8Ԁ8/\<62S>8glԀ8glԀ8K<[>8Ԁ8glԀ8glK<[>8K<[>8glK<[>8<,_>8K<[>8glK<[>8gl<,_>8<,_>8glwy8gl<,_>8glwy8<,_>8gl<,_>8wy8wy8glwy8qp8wy8glqp8qp8glqp8Em<4j>8qp8glqp8glEm<4j>8Em<4j>8glDm<Vn>8glEm<4j>8glDm<Vn>8Em<4j>8glEm<4j>8Dm<Vn>8Dm<Vn>8glDm<Vn>8s8Dm<Vn>8gls8s8gls8

8s8gls8gl

8

8gl

8C8

8gl

8glC8C8gl:8glC8gl:8C8glC8:8:8gl:8p<p>8:8glp<p>8p

8glp<p>8W8p

8glp

8glW8W8glI=if>8glW8glI=if>8W8glW8I=if>8I=if>8glI=if>8=d>8I=if>8gl=d>8=d>8gl=d>86!=\nc>8=d>8gl=d>8gl6!=\nc>85!=\nc>8gl6!=\nc>812=d>85!=\nc>8gl5!=\nc>8gl12=d>812=d>8gl>|>>>dPZ5> 7PZ5> 7>>d>R> PZ5> 7>R> K,5y> K,5y> >R> Xe+R>>R> >6y>JXe+R>>6y>Jn>>(Xe+R>n>>(yS,MJ>@l>@H>:l,z8>:l>@H>:l>5>@l,z8>:l>5>@l>kS,>Rq,z8>:l,z8>:l>kS,>RqN,jS,>Rq>kS,>Rq>fe$> 1xN,jS,>RqN,jS,>Rq>fe$> 1xM,ee$> 1x>fe$> 1x>/>hM,ee$> 1xM,ee$> 1x>/>hL,.>h>/>h>k>L,.>hL,.>h>k>L,j>>k>>k>ʊL,j>L,j>>k>ʊL,j>ʊ>k>ʊ>/>ҏL,j>ʊL,j>ʊ>/>ҏL,.>ҏ>/>ҏ>fe$>ҏL,.>ҏ>fe$><>fe$><>kS,>M,ee$><>kS,>N,jS,>>kS,>>z8>$8N,jS,>N,jS,>>z8>$8P,5>ڙP,5>ڙ>z8>$8,?H>$8>z8>$8>MJ>ڙ,?H>$8>MJ>ڙ>/T>,?H>$8,?H>$8>/T>U,/T>>/T>>\>U,/T>>\><>\><>a>ҏV,\><>a>ҏW,a>ҏ>a>ҏ>d>ʊW,a>ҏW,a>ҏ>d>ʊW,d>ʊ>d>ʊ>d>W,d>ʊW,d>ʊ>d>W,d>>d>>a>hW,d>W,d>>a>hW,a>h>a>h>\> 1xW,a>hW,a>h>\> 1xV,\> 1x>\> 1x>/T>RqV,\> 1xV,\> 1x>/T>RqU,/T>Rq>/T>Rq>@H>:lU,/T>RqU,/T>Rq>@H>:lS,MJ>@lZZ5tZZ>_>V>>hG>]ZZ5tZZ>_>hG>]S,J>S,J>>hG>]]e+9>]>hG>]>u6>]e+9>]>u6>6n>(&>_]e+9>]]e+9>]6n>(&>_3%>a{+>lt3%>a> >(p3%>a6n>(&>_> >(p.'>:{+>ltz>z">Q{+>lt> >(pz>z">QL+^>Ԝ.'>:'>ݭ>ۜ.'>:z>z">Q'>ݭ>ۜPZ5> 7L+^>Ԝ>|>L+^>Ԝ'>ݭ>ۜ>|>PZ5> 7K,5y> K,K>*Q,A@>tQ,A@>,,?H>$8P,t6>ЌhQ,A@>h_gQZ5(&>PmQ,A@>h_gt-}>04sQZ5(&>PmL+^>ԜPZ5> 73%>aQ,A@>t,?H>$83nb>LWQZ5(&>Pmt-}>04s\+>_t-}>04s{+ܭ>f\+>_S,J>Q,A@>tZZ5tZZ>_Q,A@>t3nb>LWZZ5tZZ>_\+>_{+ܭ>f.'y">H`W,a>ҏW,d>ʊee+§h> ee+§h> W,d>ʊX,N7i>*[Z5jb>8m+p>g3Z>mZ{+;i>x_+p>gX, h>JX,N7i>*[Z5jb>8*3Z>m[Z5jb>8a{+>ltL+^>Ԝvy+:p>ۜշ+ i>(p3nb>LW3nb>LWշ+ i>(pZZ5tZZ>_U,/T>RqS,MJ>@l`e+hG>g`e+hG>gS,MJ>@lQ,A@>h_g,?H>$8U,/T>3nb>LWU,/T>V,\><3nb>LWV,\>ҏ3nb>LWW,a>ҏee+§h> 3nb>LWL+^>Ԝ{+>lt.'>:vy+:p>ۜ.'`p>Qշ+ i>(pQ,A@>,Q,A@>tP,5>ڙQ,A@>t]e+9>]P,5>ڙP,5>ڙ]e+9>]N,jS,>]e+9>]3%>aN,jS,>W,d>ʊW,d>X,N7i>*W,d>W,a>hX,N7i>*X,N7i>*W,a>h3Z>mW,a>hV,\> 1x3Z>mV,\> 1xU,/T>Rq3Z>mU,/T>Rq`e+hG>g3Z>mPZ5> 7K,K>*3%>aK,K>*L,.>ҏ3%>aL,.>ҏM,ee$><3%>a3%>aM,ee$>Z{+;i>x_.'ip>6`+p>gS,MJ>@lQ,A@>wkQ,A@>h_gQ,A@>wk,z8>:lQ,A@>h_gQ,A@>h_g,z8>:lt-}>04s,z8>:lN,jS,>Rqt-}>04st-}>04sN,jS,>RqY->yN,jS,>RqM,ee$> 1xY->yM,ee$> 1xL,.>hY->yY->yL,.>hXe+R>L,.>hL,j>Xe+R>Xe+R>L,j>K,K>*L,j>L,j>ʊK,K>*K,K>*L,j>ʊL,.>ҏ7n>kb> 7> h> >O7i>*>/>h>fe$> 1xTW>j%>mTW>j%>m>fe$> 1x>kS,>Rq>A@>h_g>9>g>5>@l>p>Ԝ7n>kb> 7>kb]>n>a>h=V>ob>u>\> 1x>5>@l>9>g>kS,>Rq>9>gTW>j%>m>kS,>Rq>u6>>A@>t6n>(&>_>A@>t>|>6n>(&>_>5>@l>A@>wk>A@>h_g>A@>wk>@H>:l>A@>h_g>A@>h_g>@H>:l=V>ob>u>@H>:l>/T>Rq=V>ob>u=V>ob>u>/T>Rq>\> 1x>J>Ќh>A@>h_g7n>uZZ>Pm>A@>h_g=V>ob>u7n>uZZ>Pm>O7i>*>d>ʊ>a>ҏ'>ݭ>ۜ> >(p>|>>|>> >(p6n>(&>_'>:p>Xf>i>_=V>ob>u=V>ob>u>i>_7n>uZZ>PmF>>x_z>>6` >^>g>k>>/>hn>>(/>hTW>j%>mn>>(>(j%>m >^>gTW>j%>mF>>x_ >^>g7n>kb> 7>O7i>*>kb]>n>O7i>*>a>ҏ>kb]>n>kb]>n>a>ҏ>V>>a>ҏ>\><>V>>V>>\><>/T>>kb]>nN>3i>lt>p>Ԝ'>ݭ>ۜz>z">Q> >(p'>:p>Xfy>`p>H`>i>_>A@>t>hG>]>MJ>ڙ>d>ʊ>O7i>*>d>>O7i>*>§h>>d>>d>>§h>>a>h>§h>=V>ob>u>a>h>p>ԜN>3i>lty>jp>:>MJ>ڙ>hG>]>/T>>hG>]>V>>/T>>MJ>ڙ>A@>,>A@>t>A@>,>z8>$8>A@>t>A@>t>z8>$8>|>>z8>$8>kS,>>|>>|>>kS,>>>d>kS,>>fe$><>>d>fe$><>/>ҏ>>d>>d>/>ҏ>R> >/>ҏ>k>ʊ>R> >R> >k>ʊ>K>*>k>ʊ>k>>K>*>K>*>k>>6y>J>k>n>>(6y>Jvy+:p>ۜ3nb>LW>p>Ԝ3nb>LW7n>kb> 7>p>Ԝ.'`p>Qvy+:p>ۜy>jp>:vy+:p>ۜ>p>Ԝy>jp>:շ+ i>(p.'`p>QN>3i>lt.'`p>Qy>jp>:N>3i>ltZZ5tZZ>_շ+ i>(p>kb]>nշ+ i>(pN>3i>lt>kb]>n>kb]>n>V>ZZ5tZZ>_[Z5jb>8ob>u>§h>[Z5jb>8§h>X, h>JX, h>J>§h>ee+§h> >§h>> h> ee+§h> > h> 7n>kb> 7ee+§h> ee+§h> 7n>kb> 73nb>LWQZ5(&>PmTW>j%>m>9>gQZ5(&>Pm>9>gP,t6>ЌhP,t6>Ќh>9>g`e+hG>g>9>g>J>Ќh`e+hG>g>J>Ќh7n>uZZ>Pm`e+hG>g`e+hG>g7n>uZZ>Pm3Z>mZ{+;i>x_3Z>m>i>_3Z>m7n>uZZ>Pm>i>_.'ip>6`Z{+;i>x_y>`p>H`Z{+;i>x_>i>_y>`p>H`+p>g.'ip>6`'>:p>Xf.'ip>6`y>`p>H`'>:p>Xf[Z5jb>8g=V>ob>u+p>g'>:p>Xf=V>ob>uY->yn>>(04s{+ܭ>ft-}>04s >^>gt-}>04sn>>(^>g.'y">H`{+ܭ>fz>>6`{+ܭ>f >^>gz>>6`\+>_.'y">H`F>>x_.'y">H`z>>6`F>>x_QZ5(&>Pm\+>_TW>j%>m\+>_F>>x_TW>j%>mDATA  DATA ..edge_vertsJJ2.select_edge KؠJDATA9Ju     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA  KDATAhA0 .corner_vert PIJ .corner_edge PKXJ) pKJDATA PIL   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA PKL    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA pKs j$Sj-SjvSjvj$Sj-+iseFfsl(ØF:m]_rH]_5:mH'(ØFslFfhsez{ѵm8m՚(D_(ۚ(rʯ=wɶ`Ŷj=U(ɯ=_M߶~spzLsput]zmd#h+Ě #h{yɰ +{yɰ +#hԚ md#h+ut]zspzL~spjY<2ۭ<4^$H5ǠHѡEc5ZUc.Bc}xBl]ƼWfqЫ 忘Mݫ #"uMѠ|hjhijSji;}=Q{rsNɰq.stpqҰqpsmz !l C /l !l 3l !l Cl !LJ ># RV6װ% Ӎ\ ::/ܵ : ӓcW( X6( X6ޱUN m+ C H + ʢur 1 0  @`__   A Ġ`_a4   B Yd_{ ˁ = 7 `jb , r + s`i`i  s , bc { ˁ _{aB B Y  a4`_ A Ġ  _`_0  @ 0 tu / / v H mߔUNg gK 5::gJ 5 htV.î ؃ "6f ig /!g f !LL f !f i ٱRRu 3_r4 C =Ԛ _dd Ϛ _ CՖ U[y3 c*QpJ*czR _HS _Ǫ=_=_ 6__v .Y\XUOUxM ҿ yZ3k Cճ ͚ _ddӚ _ CX^sƫ*bդPb؆Hߡw}g‘|s]ۑ|}ss}};hϼr~F}]~ٟgh`}Qha~΢}֯}a~Ц=a~ اU)ZޚZZ (¡@K( }(EV}}WYh~yne{ޅ(bgee|?ee}ɨ}}! <10}ʀH~# ~|$B}\~ν{~Of‰~_a%}1& } (-~D}S}.~J̏+~.|ӏV<ޝC<99{3\g~~]~}~~}Sf|} f*f²}Oܲ}}M֚}q}}}{}}֧{,{eۨ~Og™~~~ ~EpbpypBoxyo~o?#~}/#Ō~Z#|~G~|Ӻ~X~ʤ~݆~8ܙ~y~ˤ~y~%F}Uݙ~5~F}yF}O4~~5~˧~~;Lyg_$}O_}ַ$}%$}w}@{}k|'{2{|ڑMˑ|]Ʈڨe|y˙~|Uݤ~y~%™~y~˙~8ܤ~ݔ~X~ʙ~~¢~;ʔ~@D~D_ ~"~2_xD\Zݸ϶yT~֧,eڨ~%߲~۾%+=³~鼆~Q=~=Eӱ~/~F4~Ks\g¬zI[C|<11~ʀH~# ~|"B~Of†~& } (-~D}S}-~J̏+~.|ӋV9ޜC=<9{1\C|˧ILyI;Iynezރ(dgee|?cf}ɨ}}! |Uݐ~y~%™~|yӌ~||~G#Ռ~Z}/##}p?~yooyBy,W,$C|hϼr};Ŀs}}\ ~λ{,i_*C|J_*ߔ~oC|C|~y˙~ڔ~Uݤ~y~%™~y~ˆ~8ܤ~ݹ~X~~\f`{Og*sz}z@~}ƺ}1?~a$Hߡw}g~~]~}~~}Sf|} g*~&{m~{5~Ԑ~58ܙ~yf@~O@~Qz2zyDЬzZݻζxTx֧,ǿeڨ~`{{aGӱ{/{E4~Eg²}Oܲ}}M֚}q}}}{}}֧{,{eۨ~%߲~۾%+=³~鼆~Q=~=Eӱ~/~D4~Hßgh`}Qia~΢}֯}a~Ч=a~ اU)ZޙYZ )¡@K( }(EV}}VYiV6װ RLJ >#l Cl !l 3l ! /l !l C !Pb؆bդϲX^ CӚ _dd[ Қ _ C[ 1^3k ӿR\OR .Yy 6_Ǫ=_=_ǪS _S _H*czGc*Q z U[ CՖ Ϛ _dd =Ԛ _ C 3_q4uRٱR f i f !LLg f !f ig /!6 " ؃tV.îcW ӓܵ ::/:]  Ӎ%° "` H w%4J 1# A #zd d V7# ӏ, ;9;9,  ӏ0ZU6z sFz " Em Ps ,"s m !( $ g "cbṊR $^u CҚ _iëdk 4ɣ \^ k V$ ܬH^]XHX ^ =X _Ȫ__ǪX _=X ^HYH^ ܬa ]૚ Ca SҚ _ddҚ _ C 1^ER; (^ V7#d d z # }&4JK w% H "xRb(ǭR: ]E C Қ _gd` Sҡ ^ p` ] zH^YHS _ =S __=_ǪǪX _X ^yR]XR\ ܬg P]$ g ѣ \^eiëҚ _ C$^#Rcb "y a y " Ng m !m Pg ! E@z "z sV6(Rs@ ؕ"  0я!J V` e J< 0ۭۭ B< 0 y!z V 0Ѩ"  = Q = *M=NX =<vmz z EL UL3kS88,kh QQh8,bw83U) Ez z m<u=NX =M* = ކ = Q*؉,X Sσ  \ᡰ  Ф h%BwzbzbhQQhzbwzb%)Ф  \ m,XX =*"I ѐ!J :` e J> S3 JY k` e o Aq;!Kz2 l~j8o wR)"޳&d7G%7mH%Ӯ$Z"xR'ѩ5l % 3>  Dn6zqMNJu{qcns3NoNzz=v֥Y{5KxB}@tu}w'߁{zzqDn6FHxpVz"yya}߯~3 ~$~~:͇~zBv ֩zvz3z{q~mvx;vzyzy|vuLzz}}ӡ}!J[_<_ŵv߾%xy5w9  *' g,;j ϸۄ K` e JV 233୊ JV 2` e Kj Aq;?q;n ϓ ` e JX l32 JY k` eۄ n f,; J{ ˆ ~j8 wR)"޲&d7 % 35l xR'"ޮ$Z7mG%7H%ӱ&d"xR)҃8n V1 jJ{DATAx 2.select_polyKءJDATA`KDATA ( !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  ME /HME0.015 <- .  ! #C0 3Ye>u=9?A=薩DATA<-`tDATA 0position .1XJ2 .select_vert JDATA_ .1w3>( '(d*>A>&`L*>Q>&h1*> >&1(X>?>&1(8Y/>rݜ>+'DX>?>&1(8Y/>.>+'pu/>rݜ>+'DX>>&`]>K>$&Z>>  `]>K>$&Z>K> Z>>  `]>>> ]>ܙ>b N]>ط>Ҝ ]>?>x @Y/> >x X>.>~ xu/> >x X>rݜ>~ DX>.>~ xu/>Қ>'[>K>$&Z> >k'84\>K>$&Z>>%k']> >k'84\> >k'84\>>%k']>;>'@\>f>k'+>ί>'A+>N>$&x,>ί>'A+>>%k'0*>N>$&x,>N>$&x,>>%k'0*>>F'8*>ܙ>F'N]>>%k']>ط>( ']>>%k']>K>$&Z>ط>( ']>ط>( ']>K>$&Z>>&`]>K>$&Z>>&`]>>&`]>Қ>'[>'>'@$[>K>$&Z>'>'@$[>e>(PKZ>K>$&Z>K>$&Z>e>(PKZ>rݜ>+'DX>e>(PKZ>>(Y>rݜ>+'DX>rݜ>+'DX>>(Y> >&1(X>> >,>> p#->.>~ xu/>?>x @Y/>.>~ xu/>> x6.>.>~ xu/>> p#->> x6.>> x6.>> p#->(C> x->>'>,>f>k'+>tĶ>'x,>f>k'+>N>$&x,>tĶ>'x,>tĶ>'x,>N>$&x,>(C>(x->N>$&x,>.>+'pu/>(C>(x->(C>(x->.>+'pu/> >(.>.>+'pu/>?>&1(8Y/> >(.>>F'8*>3>( '(d*>N>$&x,>3>( '(d*>Q>&h1*>N>$&x,>N>$&x,>Q>&h1*>N> ,>Q>&h1*>Q>  p1*>N> ,>N> ,>Q>  p1*>A> `L*>> `]>>  `]>ط>Ҝ ]>>  `]>K> Z>ط>Ҝ ]>ط>Ҝ ]>K> Z>>> ]>K> Z> > @4\>>> ]>>> ]> > @4\>;> P\>A> `L*><>̪ 0U*>N> ,><>̪ 0U*>>b 8*>N> ,>N> ,>>b 8*>>X *>Қ> [> > @4\>'>v H$[> > @4\>K> Z>'>v H$[>'>v H$[>K> Z>e> XKZ>K> Z>rݜ>~ DX>e> XKZ>e> XKZ>rݜ>~ DX>> Y>rݜ>~ DX> >x X>> Y>>X *>ί> A+>N> ,>ί> A+>> S+>N> ,>N> ,>> S+>.>~ xu/>> S+>(> h%,>.>~ xu/>.>~ xu/>(> h%,>> >,>?>x ?>x @Y/>> x6.>9>> ᝿<>̪ 0U*>Q>  ᝿<>̪ 0U*>A> `L*>Q>  ᝿Q>  ᝿A> `L*>Q>  p1*>> S+>ί> A+>>oW ᝿ί> A+>>X *>>oW ᝿>oW ᝿>X *>9>> ᝿>X *>>b 8*>9>> ᝿9>> ᝿>b 8*><>̪ 0U*>>oW ᝿]> ᝿> S+>]> ᝿)> ᝿> S+>> S+>)> ᝿(> h%,>>ş ᝿> p#->)> ᝿> p#->> >,>)> ᝿)> ᝿> >,>(> h%,>?>x ᝿?>x > ᝿?>x > x6.>> ᝿> ᝿> x6.>>ş ᝿> x6.>(C> x->>ş ᝿>ş ᝿(C> x->> p#->?>x ᝿ >x ᝿?>x  >x ᝿ >x X>?>x ?>x  >x X>?>x @Y/> >x ᝿>< ᝿ >x X>>< ᝿> Y> >x X>> Y>>< ᝿e> XKZ>>< ᝿"> ᝿e> XKZ>e> XKZ>"> ᝿'>v H$[>'>v H$[>"> ᝿Қ> [>"> ᝿> ᝿Қ> [>Қ> [>> ᝿ > @4\> > @4\>> ᝿;> P\>> ᝿>p= ᝿;> P\>;> P\>>p= ᝿>> ]>>> ]>>p= ᝿ܙ>b N]>>p= ᝿j>F ᝿ܙ>b N]>ܙ>b N]>j>F ᝿ط>Ҝ ]>ط>Ҝ ]>j>F ᝿> `]>j>F ᝿>  ᝿> `]>> `]>>  ᝿>  `]>>&`]>>&᝿>&`]>>&᝿j> '᝿>&`]>>&`]>j> '᝿ط>( ']>ط>( ']>j> '᝿ܙ>F'N]>j> '᝿>l'᝿ܙ>F'N]>ܙ>F'N]>>l'᝿>%k']>>%k']>>l'᝿;>'@\>>l'᝿>'᝿;>'@\>;>'@\>>'᝿ >k'84\> >k'84\>>'᝿Қ>'[>>'᝿">x'᝿Қ>'[>Қ>'[>">x'᝿'>'@$[>'>'@$[>">x'᝿e>(PKZ>">x'᝿>#(᝿e>(PKZ>e>(PKZ>>#(᝿>(Y>>#(᝿ >&1(᝿>(Y>>(Y> >&1(᝿ >&1(X> >&1(᝿?>&1(᝿ >&1(X>?>&1(᝿?>&1(8Y/> >&1(X>?>&1(᝿ >#(᝿?>&1(8Y/> >#(᝿ >(.>?>&1(8Y/>ȶ>x'᝿tĶ>'x,> >#(᝿tĶ>'x,>(C>(x-> >#(᝿ >#(᝿(C>(x-> >(.>k>'᝿>l'᝿>%k'0*>>%k'0*>ί>'A+>k>'᝿ί>'A+>f>k'+>k>'᝿k>'᝿f>k'+>ȶ>x'᝿f>k'+>>'>,>ȶ>x'᝿ȶ>x'᝿>'>,>tĶ>'x,>#7> '᝿Q>&᝿Q>&h1*>Q>&h1*>A>&`L*>#7> '᝿A>&`L*>3>( '(d*>#7> '᝿#7> '᝿3>( '(d*>>l'᝿3>( '(d*>>F'8*>>l'᝿>l'᝿>F'8*>>%k'0*>Q>&᝿Q>  ᝿Q>&h1*>Q>  ᝿Q>  p1*>Q>&h1*>I> ᝿7س>[ ᝿I> 1>7س>[ ᝿׳> 1>I> 1>> ᝿> X1>7س>[ ᝿> X1>>ˈ 1>7س>[ ᝿7س>[ ᝿>ˈ 1>׳> 1>>P ᝿'> ᝿'> /1>'> /1>X>͞ >1>>P ᝿X>͞ >1>> S1>>P ᝿>P ᝿> S1>> ᝿> S1>.>Q h1>> ᝿> ᝿.>Q h1>> X1>4> ᝿]9> ᝿]9> (1>]9> (1>6>z 1>4> ᝿6>z 1>Q4>ȵ 1>4> ᝿4> ᝿Q4>ȵ 1>'> ᝿Q4>ȵ 1>(.>% #1>'> ᝿'> ᝿(.>% #1>'> /1>C5> V>C5> ᝿I> 1>C5> ᝿I> ᝿I> 1>2> V>2> ᝿ߴ>z V>2> ᝿> ᝿ߴ>z V>ߴ>z V>> ᝿<>ȵ (V><>ȵ (V>> ᝿e>% V>> ᝿Ý> ᝿e>% V>e>% V>Ý> ᝿ĝ> V>ĝ> V>Ý> ᝿7͝>͞ HV>Ý> ᝿؝>P ᝿7͝>͞ HV>7͝>͞ HV>؝>P ᝿nٝ> V>nٝ> V>؝>P ᝿a>Q V>؝>P ᝿> ᝿a>Q V>a>Q V>> ᝿p> ppV>p> ppV>> ᝿ >ˈ HLV>> ᝿V>[ ᝿ >ˈ HLV> >ˈ HLV>V>[ ᝿> 0V>[ ᝿C5> ᝿> 0> 0C5> ᝿C5> V>2>S%V>2>S%᝿2> V>2>S%᝿2> ᝿2> V>C5>$&᝿V>"&᝿C5>$&V>V>"&᝿>"&0C5>$&V>>"&0V>"&᝿ >1!&@LV>V>"&᝿>&᝿ >1!&@LV> >1!&@LV>>&᝿p>l&hpV>p>l&hpV>>&᝿a>&V>>&᝿؝>&᝿a>&V>a>&V>؝>&᝿nٝ>?&V>nٝ>?&V>؝>&᝿7͝>/ &@V>؝>&᝿Ý>&᝿7͝>/ &@V>7͝>/ &@V>Ý>&᝿ĝ>&V>ĝ>&V>Ý>&᝿e>%V>Ý>&᝿>I%᝿e>%V>e>%V>>I%᝿<>4% V><>4% V>>I%᝿ߴ>%V>>I%᝿2>S%᝿ߴ>%V>ߴ>%V>2>S%᝿2>S%V>I>$& 1>I>$&᝿C5>$&V>I>$&᝿C5>$&᝿C5>$&V>4>I%᝿Q4>4%1>]9>S%᝿Q4>4%1>6>%1>]9>S%᝿]9>S%᝿6>%1>]9>S%(1>'>&᝿>&᝿>?&S1>>?&S1>X>/ &>1>'>&᝿X>/ &>1>'>&/1>'>&᝿'>&᝿'>&/1>4>I%᝿'>&/1>(.>%#1>4>I%᝿4>I%᝿(.>%#1>Q4>4%1>׳>"&1>>1!&x1>>&᝿>1!&x1>>l&P1>>&᝿>&᝿>l&P1>>&᝿>l&P1>.>&h1>>&᝿>&᝿.>&h1>>?&S1>>&᝿7س>"&᝿׳>"&1>7س>"&᝿I>$&᝿׳>"&1>׳>"&1>I>$&᝿I>$& 1>]9> (1>]9> ᝿]9>S%(1>]9> ᝿]9>S%᝿]9>S%(1> >&1(᝿>#(᝿>&᝿>#(᝿">x'᝿>&᝿>&᝿">x'᝿؝>&᝿ >x ᝿V>[ ᝿>< ᝿V>[ ᝿> ᝿>< ᝿>< ᝿> ᝿"> ᝿> ᝿؝>P ᝿"> ᝿>  ᝿j>F ᝿Ý> ᝿j>F ᝿>p= ᝿Ý> ᝿Ý> ᝿>p= ᝿؝>P ᝿>p= ᝿> ᝿؝>P ᝿؝>P ᝿> ᝿"> ᝿Ý> ᝿> ᝿>  ᝿> ᝿2> ᝿>  ᝿>  ᝿2> ᝿>&᝿Q>&᝿#7> '᝿'>&᝿#7> '᝿>l'᝿'>&᝿'>&᝿>l'᝿>&᝿>P ᝿> ᝿>ş ᝿>ş ᝿> ᝿> ᝿> ᝿7س>[ ᝿> ᝿> ᝿7س>[ ᝿?>x ᝿7س>[ ᝿I> ᝿?>x ᝿?>x ᝿I> ᝿ >x ᝿I> ᝿C5> ᝿ >x ᝿ >x ᝿C5> ᝿V>[ ᝿">x'᝿>'᝿؝>&᝿>'᝿>l'᝿؝>&᝿؝>&᝿>l'᝿Ý>&᝿>l'᝿j> '᝿Ý>&᝿Ý>&᝿j> '᝿>I%᝿j> '᝿>&᝿>I%᝿>I%᝿>&᝿2>S%᝿>&᝿2> ᝿2>S%᝿>&᝿V>"&᝿ >&1(᝿V>"&᝿C5>$&᝿ >&1(᝿ >&1(᝿C5>$&᝿?>&1(᝿>l'᝿k>'᝿>&᝿k>'᝿ȶ>x'᝿>&᝿>&᝿ȶ>x'᝿>&᝿ȶ>x'᝿ >#(᝿>&᝿>&᝿ >#(᝿7س>"&᝿ >#(᝿?>&1(᝿7س>"&᝿7س>"&᝿?>&1(᝿I>$&᝿?>&1(᝿C5>$&᝿I>$&᝿'>&᝿4>I%᝿Q>&᝿4>I%᝿]9>S%᝿Q>&᝿Q>&᝿]9>S%᝿Q>  ᝿>ş ᝿)> ᝿>P ᝿)> ᝿]> ᝿>P ᝿>P ᝿]> ᝿'> ᝿]> ᝿>oW ᝿'> ᝿>oW ᝿9>> ᝿'> ᝿'> ᝿9>> ᝿4> ᝿9>> ᝿Q>  ᝿4> ᝿4> ᝿Q>  ᝿]9> ᝿Q>  ᝿]9>S%᝿]9> ᝿>&`]>>  `]>>&᝿>  `]>>  ᝿>&᝿>+'0\>Ӷ>+'a3>>$&^>Ӷ>+'a3>e>$&0>>$&^>>$&^>e>$&0>> ^>e>$&0>e> 0>> ^>> ^>e> 0>>~ 0\>e> 0>Ӷ>~ a3>>~ 0\>e>$&0>Ӷ>+'a3>N>$&x,>Ӷ>+'a3>.>+'pu/>N>$&x,>Ӷ>+'a3>>+'0\>.>+'pu/>>+'0\>rݜ>+'DX>.>+'pu/>>+'0\>>$&^>rݜ>+'DX>>$&^>K>$&Z>rݜ>+'DX>>$&^>> ^>K>$&Z>> ^>K> Z>K>$&Z>> ^>>~ 0\>K> Z>>~ 0\>rݜ>~ DX>K> Z>>~ 0\>Ӷ>~ a3>rݜ>~ DX>Ӷ>~ a3>.>~ xu/>rݜ>~ DX>Ӷ>~ a3>e> 0>.>~ xu/>e> 0>N> ,>.>~ xu/>e> 0>e>$&0>N> ,>e>$&0>N>$&x,>N> ,>7͝>/ &@V>ĝ>&V>nٝ>?&V>ĝ>&V>]9> (1>nٝ>?&V><>ȵ (V>e>% V>ĝ> V>ĝ>&V>e>%V><>4% V>>"&0 >1!&@LV>p>l&hpV>> X1>.>Q h1>> S1>]9> (1>׳>"&1>I>$& 1>'> /1>2>S%V>2> V>X>͞ >1>'> /1>> S1>'> /1>ĝ> V>> S1>'>&/1>X>/ &>1>>?&S1>a>&V>nٝ>?&V>p>l&hpV>nٝ>?&V>]9> (1>p>l&hpV>p>l&hpV>]9> (1>>"&0]9> (1>I>$& 1>>"&0>"&0I>$& 1>C5>$&V>ĝ> V>'> /1><>ȵ (V>'> /1>2> V><>ȵ (V><>ȵ (V>2> V>ߴ>z V>ĝ> V>7͝>͞ HV>nٝ> V>>1!&x1>׳>"&1>>l&P1>׳>"&1>]9> (1>>l&P1>>l&P1>]9> (1>.>&h1>]9> (1>]9>S%(1>.>&h1>.>&h1>]9>S%(1>>?&S1>]9>S%(1>6>%1>Q4>4%1>>ˈ 1>> X1>׳> 1>> X1>> S1>׳> 1>׳> 1>> S1>I> 1>> S1>ĝ> V>I> 1>I> 1>ĝ> V>C5> V>ĝ> V>> 0C5> V>>?&S1>]9>S%(1>'>&/1>]9>S%(1>Q4>4%1>'>&/1>'>&/1>Q4>4%1>(.>%#1> >ˈ HLV>> 0p> ppV>> 0ĝ> V>p> ppV>p> ppV>ĝ> V>a>Q V>ĝ> V>nٝ> V>a>Q V>ĝ>&V><>4% V>]9> (1><>4% V>ߴ>%V>]9> (1>]9> (1>ߴ>%V>6>z 1>ߴ>%V>2>S%V>6>z 1>6>z 1>2>S%V>Q4>ȵ 1>2>S%V>'> /1>Q4>ȵ 1>Q4>ȵ 1>'> /1>(.>% #1>3Ԝ (d*>A `L*>Q p1*>x X>z?x @Y/>lݜ~ DX>z?x @Y/>.~ xu/>lݜ~ DX> `]>K Z>&`]>K Z>K$&Z>&`]>'k']>ܙF'N]>ҷ* ']>z?(1(8Y/>(1(X>.+'pu/>(1(X>lݜ+'DX>.+'pu/>Қ [>K Z> @4\>K Z>> ]> @4\> @4\>> ]>; P\>~f +>ȯ A+>H ,>ȯ A+>㷾> 0*>H ,>H ,>㷾> 0*>c 8*>ܙc N]>> ]>ҷԜ ]>> ]>K Z>ҷԜ ]>ҷԜ ]>K Z> `]>K Z> `]> `]>Қ [>'x H$[>K Z>'x H$[>_ XKZ>K Z>K Z>_ XKZ>lݜ~ DX>_ XKZ>᛾ Y>lݜ~ DX>lݜ~ DX>᛾ Y>x X>'>,>b(p#->.+'pu/>z?(1(8Y/>.+'pu/>쵾q"(p6.>.+'pu/>b(p#->쵾q"(p6.>쵾q"(p6.>b(p#->"C(x-> >,>~f +>nĶx x,>~f +>H ,>nĶx x,>nĶx x,>H ,>"C x->H ,>.~ xu/>"C x->"C x->.~ xu/>  .>.~ xu/>z?x @Y/>  .>c 8*>3Ԝ (d*>H ,>3Ԝ (d*>Q p1*>H ,>H ,>Q p1*>H$&x,>Q p1*>Q&h1*>H$&x,>H$&x,>Q&h1*>A&`L*>&`]>&`]>ҷ* ']>&`]>K$&Z>ҷ* ']>ҷ* ']>K$&Z>'k']>K$&Z>m'84\>'k']>'k']>m'84\>;'@\>A&`L*><2&(U*>H$&x,><2&(U*>F'8*>H$&x,>H$&x,>F'8*>Q'*>Қ'[>m'84\>''@$[>m'84\>K$&Z>''@$[>''@$[>K$&Z>_(PKZ>K$&Z>lݜ+'DX>_(PKZ>_(PKZ>lݜ+'DX>᛾(Y>lݜ+'DX>(1(X>᛾(Y>Q'*>ȯ'A+>H$&x,>ȯ'A+>n'S+>H$&x,>H$&x,>n'S+>.+'pu/>n'S+>'o'h%,>.+'pu/>.+'pu/>'o'h%,>'>,>z?(1(z?(1(8Y/>쵾q"(p6.>3>q&᝿<2&(U*>Q&᝿<2&(U*>A&`L*>Q&᝿Q&᝿A&`L*>Q&h1*>n'S+>ȯ'A+> R'᝿ȯ'A+>Q'*> R'᝿ R'᝿Q'*>3>q&᝿Q'*>F'8*>3>q&᝿3>q&᝿F'8*><2&(U*> R'᝿W'᝿n'S+>W'᝿)`'᝿n'S+>n'S+>)`'᝿'o'h%,>9 (᝿b(p#->)`'᝿b(p#->'>,>)`'᝿)`'᝿'>,>'o'h%,>z?(1(᝿z?(1(yL'(᝿z?(1(쵾q"(p6.>yL'(᝿yL'(᝿쵾q"(p6.>9 (᝿쵾q"(p6.>"C(x->9 (᝿9 (᝿"C(x->b(p#->z?(1(᝿(1(᝿z?(1((1(᝿(1(X>z?(1(z?(1((1(X>z?(1(8Y/>(1(᝿z#(᝿(1(X>z#(᝿᛾(Y>(1(X>᛾(Y>z#(᝿_(PKZ>z#(᝿"z'᝿_(PKZ>_(PKZ>"z'᝿''@$[>''@$[>"z'᝿Қ'[>"z'᝿'᝿Қ'[>Қ'[>'᝿m'84\>m'84\>'᝿;'@\>'᝿l'᝿;'@\>;'@\>l'᝿'k']>'k']>l'᝿ܙF'N]>l'᝿d '᝿ܙF'N]>ܙF'N]>d '᝿ҷ* ']>ҷ* ']>d '᝿&`]>d '᝿&᝿&`]>&`]>&᝿&`]> `]> ᝿ `]> ᝿dH ᝿ `]> `]>dH ᝿ҷԜ ]>ҷԜ ]>dH ᝿ܙc N]>dH ᝿r= ᝿ܙc N]>ܙc N]>r= ᝿> ]>> ]>r= ᝿; P\>r= ᝿ ᝿; P\>; P\> ᝿ @4\> @4\> ᝿Қ [> ᝿" ᝿Қ [>Қ [>" ᝿'x H$[>'x H$[>" ᝿_ XKZ>" ᝿z> ᝿_ XKZ>_ XKZ>z> ᝿᛾ Y>z> ᝿x ᝿᛾ Y>᛾ Y>x ᝿x X>x ᝿z?x ᝿x X>z?x ᝿z?x @Y/>x X>z?x ᝿ > ᝿z?x @Y/> > ᝿  .>z?x @Y/>ȶ ᝿nĶx x,> > ᝿nĶx x,>"C x-> > ᝿ > ᝿"C x->  .>k ᝿跾r= ᝿㷾> 0*>㷾> 0*>ȯ A+>k ᝿ȯ A+>~f +>k ᝿k ᝿~f +>ȶ ᝿~f +> >,>ȶ ᝿ȶ ᝿ >,>nĶx x,>7H ᝿Q ᝿Q p1*>Q p1*>A `L*>7H ᝿A `L*>3Ԝ (d*>7H ᝿7H ᝿3Ԝ (d*>跾r= ᝿3Ԝ (d*>c 8*>跾r= ᝿跾r= ᝿c 8*>㷾> 0*>Q ᝿Q&᝿Q p1*>Q&᝿Q&h1*>Q p1*>C$&᝿1س"&᝿C$& 1>1س"&᝿׳"&1>C$& 1>&᝿n&P1>1س"&᝿n&P1>᳾3!&x1>1س"&᝿1س"&᝿᳾3!&x1>׳"&1>&᝿'&᝿&&/1>&&/1>R1 &>1>&᝿R1 &>1>A&S1>&᝿&᝿A&S1>&᝿A&S1>(&h1>&᝿&᝿(&h1>n&P1>4K%᝿W9U%᝿W9U%(1>W9U%(1>6%1>4K%᝿6%1>K46%1>4K%᝿4K%᝿K46%1>'&᝿K46%1>".%#1>'&᝿'&᝿".%#1>&&/1>=5$&V>=5$&᝿C$& 1>=5$&᝿C$&᝿C$& 1>,U%V>,U%᝿ٴ%V>,U%᝿K%᝿ٴ%V>ٴ%V>K%᝿66% V>66% V>K%᝿_%V>K%᝿Ý&᝿_%V>_%V>Ý&᝿ĝ&V>ĝ&V>Ý&᝿1͝1 &@V>Ý&᝿؝&᝿1͝1 &@V>1͝1 &@V>؝&᝿hٝA&V>hٝA&V>؝&᝿[松&V>؝&᝿&᝿[松&V>[松&V>&᝿jn&hpV>jn&hpV>&᝿ 3!&@LV>&᝿P"&᝿ 3!&@LV> 3!&@LV>P"&᝿"&0P"&᝿=5$&᝿"&0"&0=5$&᝿=5$&V>, V>, ᝿,U%V>, ᝿,U%᝿,U%V>=5 ᝿P] ᝿=5 V>P] ᝿ 0=5 V> 0P] ᝿ ͈ HLV>P] ᝿ ᝿ ͈ HLV> ͈ HLV> ᝿j ppV>j ppV> ᝿[松S V> ᝿؝R ᝿[松S V>[松S V>؝R ᝿hٝ V>hٝ V>؝R ᝿1͝Ϟ HV>؝R ᝿Ý ᝿1͝Ϟ HV>1͝Ϟ HV>Ý ᝿ĝ V>ĝ V>Ý ᝿_' V>Ý ᝿ ᝿_' V>_' V> ᝿6ʵ (V>6ʵ (V> ᝿ٴ| V> ᝿, ᝿ٴ| V>ٴ| V>, ᝿, V>C 1>C ᝿=5 V>C ᝿=5 ᝿=5 V>4 ᝿K4ʵ 1>W9 ᝿K4ʵ 1>6| 1>W9 ᝿W9 ᝿6| 1>W9 (1>' ᝿R ᝿ S1> S1>RϞ >1>' ᝿RϞ >1>& /1>' ᝿' ᝿& /1>4 ᝿& /1>".' #1>4 ᝿4 ᝿".' #1>K4ʵ 1>׳ 1>᳾͈ 1> ᝿᳾͈ 1> X1> ᝿ ᝿ X1>R ᝿ X1>(S h1>R ᝿R ᝿(S h1> S1> ᝿1س] ᝿׳ 1>1س] ᝿C ᝿׳ 1>׳ 1>C ᝿C 1>W9U%(1>W9U%᝿W9 (1>W9U%᝿W9 ᝿W9 (1>x ᝿z> ᝿ ᝿z> ᝿" ᝿ ᝿ ᝿" ᝿؝R ᝿(1(᝿P"&᝿z#(᝿P"&᝿&᝿z#(᝿z#(᝿&᝿"z'᝿&᝿؝&᝿"z'᝿&᝿d '᝿Ý&᝿d '᝿l'᝿Ý&᝿Ý&᝿l'᝿؝&᝿l'᝿'᝿؝&᝿؝&᝿'᝿"z'᝿Ý&᝿K%᝿&᝿K%᝿,U%᝿&᝿&᝿,U%᝿ ᝿Q ᝿7H ᝿' ᝿7H ᝿跾r= ᝿' ᝿' ᝿跾r= ᝿R ᝿&᝿&᝿9 (᝿9 (᝿&᝿yL'(᝿&᝿1س"&᝿yL'(᝿yL'(᝿1س"&᝿z?(1(᝿1س"&᝿C$&᝿z?(1(᝿z?(1(᝿C$&᝿(1(᝿C$&᝿=5$&᝿(1(᝿(1(᝿=5$&᝿P"&᝿" ᝿ ᝿؝R ᝿ ᝿r= ᝿؝R ᝿؝R ᝿r= ᝿Ý ᝿r= ᝿dH ᝿Ý ᝿Ý ᝿dH ᝿ ᝿dH ᝿ ᝿ ᝿ ᝿ ᝿, ᝿ ᝿,U%᝿, ᝿ ᝿P] ᝿x ᝿P] ᝿=5 ᝿x ᝿x ᝿=5 ᝿z?x ᝿跾r= ᝿k ᝿R ᝿k ᝿ȶ ᝿R ᝿R ᝿ȶ ᝿ ᝿ȶ ᝿ > ᝿ ᝿ ᝿ > ᝿1س] ᝿ > ᝿z?x ᝿1س] ᝿1س] ᝿z?x ᝿C ᝿z?x ᝿=5 ᝿C ᝿' ᝿4 ᝿Q ᝿4 ᝿W9 ᝿Q ᝿Q ᝿W9 ᝿Q&᝿9 (᝿)`'᝿&᝿)`'᝿W'᝿&᝿&᝿W'᝿'&᝿W'᝿ R'᝿'&᝿ R'᝿3>q&᝿'&᝿'&᝿3>q&᝿4K%᝿3>q&᝿Q&᝿4K%᝿4K%᝿Q&᝿W9U%᝿Q&᝿W9 ᝿W9U%᝿ `]>&`]> ᝿&`]>&᝿ ᝿~ 0\>Ӷ~ a3> ^>Ӷ~ a3>e 0> ^> ^>e 0>$&^>e 0>e$&0>$&^>$&^>e$&0>+'0\>e$&0>Ӷ+'a3>+'0\>e 0>Ӷ~ a3>H ,>Ӷ~ a3>.~ xu/>H ,>Ӷ~ a3>~ 0\>.~ xu/>~ 0\>lݜ~ DX>.~ xu/>~ 0\> ^>lݜ~ DX> ^>K Z>lݜ~ DX> ^>$&^>K Z>$&^>K$&Z>K Z>$&^>+'0\>K$&Z>+'0\>lݜ+'DX>K$&Z>+'0\>Ӷ+'a3>lݜ+'DX>Ӷ+'a3>.+'pu/>lݜ+'DX>Ӷ+'a3>e$&0>.+'pu/>e$&0>H$&x,>.+'pu/>e$&0>e 0>H$&x,>e 0>H ,>H$&x,>1͝Ϟ HV>ĝ V>hٝ V>ĝ V>W9U%(1>hٝ V>66% V>_%V>ĝ&V>ĝ V>_' V>6ʵ (V> 0 ͈ HLV>j ppV>n&P1>(&h1>A&S1>W9U%(1>׳ 1>C 1>&&/1>, V>,U%V>R1 &>1>&&/1>A&S1>&&/1>ĝ&V>A&S1>& /1>RϞ >1> S1>[松S V>hٝ V>j ppV>hٝ V>W9U%(1>j ppV>j ppV>W9U%(1> 0W9U%(1>C 1> 0 0C 1>=5 V>ĝ&V>&&/1>66% V>&&/1>,U%V>66% V>66% V>,U%V>ٴ%V>ĝ&V>1͝1 &@V>hٝA&V>᳾͈ 1>׳ 1> X1>׳ 1>W9U%(1> X1> X1>W9U%(1>(S h1>W9U%(1>W9 (1>(S h1>(S h1>W9 (1> S1>W9 (1>6| 1>K4ʵ 1>᳾3!&x1>n&P1>׳"&1>n&P1>A&S1>׳"&1>׳"&1>A&S1>C$& 1>A&S1>ĝ&V>C$& 1>C$& 1>ĝ&V>=5$&V>ĝ&V>"&0=5$&V> S1>W9 (1>& /1>W9 (1>K4ʵ 1>& /1>& /1>K4ʵ 1>".' #1> 3!&@LV>"&0jn&hpV>"&0ĝ&V>jn&hpV>jn&hpV>ĝ&V>[松&V>ĝ&V>hٝA&V>[松&V>ĝ V>6ʵ (V>W9U%(1>6ʵ (V>ٴ| V>W9U%(1>W9U%(1>ٴ| V>6%1>ٴ| V>, V>6%1>6%1>, V>K46%1>, V>&&/1>K46%1>K46%1>&&/1>".%#1>DATA DATA!..edge_verts KآJ2.select_edge <0JDATA`? Ku    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~DATA <0DATAhC0 .corner_vert KXJ .corner_edge LJ) LأJDATA KL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA LL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}DATA LsKݼGF\~z`/~](`/Bd߼BßB6ش3B(n-ت]y-̊ɩB"晌ҼB9뵏ϙ𩚌L߂ \bTEcT.7RrE5E4R&L<ˠőmߵgBǑ!Ƒ槺B򵒭̾B@钤ηˊ^9ҧBf8 ҖrBBٖ`/1՗]/_/2sd?e -ǎ(@-Bjt@׿-;e֕t8t-en_,\nh\EOhUhSEC j׽E] jj]vd]~vX-LKE}KFIJEfEFw؝FϟFF㦟F|cFFLkGtBԷBߍBֵoZ߅cGuHF*sH~μJQF5FkJOXMJP0L߇KBL))BUB]헆|r]iՂ]Ղަ=M;ϭPF PVrFsF*V¿-,VfY-q-7ZYdh _ W L  P&h*a "&!&w&%fK 7! EX ^m2Y "Ī<68( ? ( k ^^͚ m_O\ {*;!^ h n_Nv} :% 8_! % W u. ͩi ^ YEΝKNߝ,eNNUe۹ru '-i l_^Jrq JN^%륨 P YԎD)̳[Dڡ[ } sV_ h5Kٲ iK O ` UX_ S Uء34U? N W^_&l]בYl] yo (Ե_^4)z#!"\ Ϋ xԺ" L"^_5"& c^F ? *ѣ++ a xWX i4Ђ'h4 {d' ڱE$t^r˥C$*i UԎ<;*ڮQ!rƴ Ԝh^r| M_ GBvj+qvJ2+ȁ ɫ ԏ _~U_LΚ ԏ;! uzH U ~W_L*X ԰ D q r ب] k \ ٱt ^ Y~ؓ竆 Ԍ \  ' >_ /!\q$ D*^ P ~w6wm3}6J y  "HC UhX` Pv=^"' %)L=vHWfn #5`]P EyH*(A,ftzRB ^'$ $7 dX!- ]",H&V# PRmF#ztE\) 8H>5>@ݨsS;z?]! ɀ` v]CnE]' 6 ͅ^ `6 r2EeuE ? X` hAhA V-` ? Rh aR$ p OaZ_' Z S ۠ X :':A:gAt  E!` X 'H! k N`[2 My $k2 W b_h7>  hf> w V e6' , R76 ؃^'~nU)WuUD<)  &C; '>> Ҩx` %C dnR9_;]:cyC `mAN `_M]j e%.o`B en_UICbn'X^rB JD6*mTb R>nx]L,b `Ua=_q b >f  1t@ X u ];Q;VЌΪ}‘Ц}}ᦦ}.n,S~uíS~ڹ~ ]ŭ ~nԹ~ ٚ}Ӧj*Цt}¦^ѝ}[}N齃}@ٝBҧ}}?Ӧ+}ٳ |TnА߇"Щ$}éϝת}A}yh}w}~T~~源&I,!z~Tn(nSvƵU~)ѧ}ҙ}1}‹~؝ԟ~~TĹ~h١Ԓ5~¥~oڐ-}Uٵƹ!~S'Α ߕџ嫆}£ѝ~}2~} V~ٝӹ~~e ~ٳԓ1 ~6 ~ըƭڑW(}ڶv T pЌߛ*Ѳ }ûi}}i}iӦ}æӡ}}~ڡԌ~~穌ڌ .50t0NĂtLa/f/pZ??Zi/aa/{_[:N_[LDNhPH6" 6@P"C{@[{#RV[*z20zGI=u1zk=J=S{`[;MP^[LDNPihPH6C""6@RC"C{@\8{#P\+z21zGf9g2z::g9I?yA D!Ly>k΋uALB؃-4i`@aZDoJr#x(kU?dNlZޜ%ﺊ} YKNT8@%W]@; D܃zv߃DWdD"x~1x H=(7qЏʉeq<ϏgN]/x<ݝ}@"k=o^oYD^`^}DR]DG1R(RMFwVFEF[G䯊ˊlAB㈋ˉs(DΏ̑F2}DD:6őOBǑ!<6JBWB1$H  )H$Gr*L@JݴGF\~z_/~](_/Bd߼BßB6ض6;'n-ت]y-ˊɩB"旌ҼB9뵏ϙ𩣌J߄\eTEeT.9RrE5E9R/LB ϠϑoߵhBǑ!ő秴B򴒭̾B@钤ηˊ^9ҧBf8 ҖqBBٗ`/1՗]/_/1sd@e -Ȏ&?-)jt@׿-=e֕t9t8en_, \nh\EOhUhSEC j׼E] j j]vc]~vX%LKE}KFIJEfEFw؝FϟFF㦟F|cFFLhGܒtBԶBލBֵoW߂^GqHF({H}JPF5FjJS=MNߊS2M߈KBL))BUB]햆|s]iԂ]Ղަ=M;ϭPF P.VoFrF*V¿-+VfY-q-/fYdg _ X L  P,h*a #%! 'w*%hK 7! DX ^n+Y "Ū>58) @ ( k ^`͙ m_P\ {*;!^ h n_P4} ;% 9_! % W u. ͨi ^ YFΝJNߝ+eNNUeܹqs '-g l_^Kq JLP^*륨 P YԎD*̴[Dڡ[ } sW_ h1Kٲ h|K P b UW_ RѿTء>%U> N W^_&l]אp] yo (Ե_^4)z#!"\ Ϋ xԺ" J"`_]"& c^F > *ѣ#+ a xXW i4Ђ'h4 zn' ڱF$t^r˥D$)j UԎW;%ڪR!v Ԝh^p~ M_ GAvk+qvK2+Ȃ ɫ ԑ _V_M͚ ԏ;! uzH U zW_J0Z ԰ C q r ة] k [ ٰt ^ Y~ؔ竅 ԋ \  % >_ .!\p" A)^ P~w6wn3z6G y  "GC UiX` Pu=^"('܇&)L=vHQfe ._]H Ny?+)A,fu{M( ^&$ $7 dZW- ], G5O# ONmE"ەztE\) 8H>5>@ݨrVKzB] ɀ` vn]JmE]( 1 ЅY `5 r,EeuE ? V` hA%hA W,` B R h aR$ p N[Z[' Z S ۠ X ;':A:gAt  E!` X'H! k O`[2 My $k2 U c_hm> % h.> v W e7( , U75 ׃\#~nH)Uc[D)  FC8 '== Ҩw` #B nR9_:]8WyC `tBR f_M]m e%.o`B em_UCbn%X^qB JD6)mUe U>sy]S,c %UX7_r a ?f 2u@ X t ^;Q;VБΪ}‘Ц}}ᦦ}.p,W~uçS~ڹ~ ]ŭ ~nԹ~ ٚ}Ӧj*Цt}¦^ѝ}[}N齃}@ٕBң}}@Ӧ+}ٳ|TnА߇"Щ$}éϝת}A}yh}w}~T~~源&I,!z~Tn(nSvƵU~)ѧ}ҙ}2}‹~؝ԟ~~TĹ~h١Ԓ5~¥~nڐ-}Uٵƹ!~S'Α ߝѣ~}£ѝ~}1~} V~ٝӹ~~쨹d ~ٹԑ1 ~6 ~ըƭڑW(}ڶv T pЌߛ*Ѳ }ûi}}i}iӦ}æӡ}}~ڡԌ~~穌ڌ .50t0NĂtLa/f/nZ??Zi/_a/{_[;N_[KD NhPH6" 6@P"C{@[{#RW[*z20zGI=u1zk=J=S{`[;MP_[LDMPjgPH6B""6@RC"C{@\8{#P\+z21zGf9g2z::g9I?"# D Lw>kmA35B׃(i!:`3@)ZDoJr#x(T?[YȜ﹊} YKNPU-@W׊q@- Dރyv߃DtdD"x~ xH=(>qЏʉkq>Ϗx&L\|EADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME /HME0.016 <-$$ $uJ`$ % %`E0 Q94=A@>`M+\=#=;A=薩DATA<-d<DATA`$0position /J2 .select_vertlؤJDATA /w$tStSt*GtSt*Gt*Gʡ=N7i>StSʡ=N7i>*GtSt*Gʡ=N7i>*Gʡ=K>Sʡ=N7i>Sʡ=K>*Gʡ=N7i>Sʡ=N7i>*Gʡ=K>*GtSʡ=K>St*Gʡ=K>Sʡ=K>*Gt*Gʡ=N7i>Sʡ=K>StSʡ=K>StStSʡ=K>*Gʡ=N7i>*Gt*Gʡ=N7i>*Gt*Gt*GDATA$lDATA%..edge_verts&J2.select_edgemXJDATA &u$    !#!""#DATA$mDATAh`E0 .corner_vert LJ .corner_edgeLإJ)LJDATA LL$  !"#DATALL$   "#!DATALs$x Zd ZdvZdvx Zd tks̢kskstks̢x Zd ZdvZdvx Zd tks̢kskstks̢I"ʁT΁I"ʁTI"ʁT΁I"ʁTDATAx%2.select_poly<-XJDATA <-DATA4uJ !$ME /HME0.017 =-L<$`) + ( G0 P94= P>`#=z=O<A=薩DATA=-` DATA`)0position /ئJ2 .select_vert*JDATA /w/=U>S,=/>SE;T>S,=/>S;/>SE;T>S/=U>Hk/=U>SE;T>Hk/=U>SE;T>SE;T>Hk/=)>(m/=U>HkA;)>(m/=U>HkE;T>HkA;)>(m/=)>(mA;)>(m@;>m/=)>(m@;>m/=>m@;>m@;Ӹ>Lm/=>m/=>m@;Ӹ>Lm/=Ӹ>Lm@;Ӹ>Lm@;2>cl/=Ӹ>Lm/=Ӹ>Lm@;2>cl/=2>cl@;2>cl@;/+>P]k/=2>cl/=2>cl@;/+>P]k/=/+>P]k@;/+>P]k@;>{j/=/+>P]k/=/+>P]k@;>{j/=>{j/=>re/=>{jB;>re/=>{j@;>{jB;>re/=>85^/=>reB;>85^/=>reB;>reB;>85^/=j>85^/=>85^=;j>85^/=>85^B;>85^=;j>85^/=^">Zd/=j>85^<;]">Zd/=j>85^=;j>85^<;]">Zd.=]>Zd/=^">Zd);]>Zd/=^">Zd<;]">Zd);]>Zd-=d>85^.=]>Zd';d>85^.=]>Zd);]>Zd';d>85^-={>85^-=d>85^;{>85^-=d>85^';d>85^;{>85^-={>`m-={>85^;{>`m-={>85^;{>85^;{>`m-=c>`m-={>`m;c>`m-={>`m;{>`m;c>`m-=c>85^-=c>`m;c>85^-=c>`m;c>`m;c>85^,=/>85^-=c>85^;/>85^-=c>85^;c>85^;/>85^,=/>S,=/>85^;/>S,=/>85^;/>85^;/>S-=d>85^-={>85^,=/>S/=)>(m/=>{j/=U>Hk/=>{j/=>re/=U>Hk/=U>Hk/=>re/=U>S/=>re/=>85^/=U>S/=U>S/=>85^/=j>85^,=/>85^,=/>S-=c>85^,=/>S-={>85^-=c>85^-=c>85^-={>85^-=c>`m-={>85^-={>`m-=c>`m/=2>cl/=/+>P]k/=Ӹ>Lm/=/+>P]k/=>{j/=Ӹ>Lm/=Ӹ>Lm/=>{j/=>m/=>{j/=)>(m/=>m/=^">Zd.=]>Zd/=j>85^.=]>Zd-=d>85^/=j>85^/=j>85^-=d>85^/=U>S-=d>85^,=/>S/=U>S@;Ӹ>Lm@;>mA;)>(m;/>S;/>85^E;T>S;/>85^;c>85^E;T>S;c>`m;{>`m;c>85^;{>`m;{>85^;c>85^;c>85^;{>85^E;T>S;{>85^';d>85^E;T>S@;>{j@;/+>P]k@;2>cl@;2>cl@;Ӹ>Lm@;>{j@;Ӹ>LmA;)>(m@;>{j@;>{jA;)>(mB;>reA;)>(mE;T>HkB;>reB;>reE;T>HkB;>85^E;T>HkE;T>SB;>85^B;>85^E;T>S=;j>85^E;T>S';d>85^=;j>85^=;j>85^';d>85^<;]">Zd';d>85^);]>Zd<;]">ZdDATA*DATA+..edge_verts KXJ2.select_edge -JDATA  Ku    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA -DATAh G0 .corner_vert HاJ .corner_edge HJ) HXJDATA HL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA HL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA Hs*zL[ dzV[ =:`g,`gّy1,6i55H&]V0\sT 0ϛ _ת Vп ] > i\ Ӱ ] 8Ҡ _תN ԝ _ ԝ _NתqΟ _ q^[*.k9קD 9ۋif+>++>l=9(kG9(<!923!9A;d23Z͛FAAΛF3F23Z67\23<67]M0.0f1Pb5:Wk2׾:̧fk27QR7QRNBk2%ήk2b5%GZ]8FC8WgBC.3}&t&ctOo>e-yڏ|wsĵvw~ڂmv<ɵvmo8m}x oo }x֟Lbs{yX>hiy>e>h.>h{>e&Ioi>exIo\~\w ~Ռ~ۺw ~wz| ~y}4 uL ueOL؟LPOoOyMo}{udExuE$dόxu\xIo$d'Ioip$d$dpxu\pUܰxu~Q||\\Ɩ}RQ|Ֆ},{Q|Q|C{ vX{z4x v v@4xJj4xxuJj[JjrxuҮZxuCڎUخZ5ZU ueUv}4 uDATAx(2.select_polyʺJDATALʺDATA4<$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME /HME0.018 @=-TTT +/ 0 *H0 6=A@>T d9*Ge=.}>PF8`e=c}>*Ge=.}>PF8`e=/}>PF8`e=c}>*Ge=>*Ge=c}>*G=`e=>*Ge=c}>*G8`e=c}>*G=`e=>*Ge=>PFe=>*G=`e=>PFe=>*G=`e=>*G=`e=>PFe=>0e=>PF=`e=>0e=>PF=`e=>PF=`e=>0e=>`e=>0=`e=>`e=>0=`e=>0=`e=>`e=c}>`e=>`8`e=c}>`e=>`=`e=>`8`e=c}>`e=.}>0e=c}>`8`e=/}>0e=c}>`8`e=c}>`8`e=/}>0e=.}>PFe=.}>08`e=/}>PFe=.}>08`e=/}>08`e=/}>PFe=c}>*Ge=>*Ge=.}>PFe=>*Ge=>PFe=.}>PFe=.}>PFe=>PFe=.}>0e=>PFe=>0e=.}>0e=.}>0e=>0e=c}>`e=>0e=>`e=c}>`=`e=>*G8`e=c}>*G8`e=/}>PF=`e=>*G8`e=/}>PF=`e=>PF8`e=/}>PF8`e=/}>0=`e=>PF=`e=>PF8`e=/}>0=`e=>08`e=/}>08`e=c}>`=`e=>0=`e=>08`e=c}>`=`e=>`DATAT LDATA0..edge_verts ةJ2.select_edgeLJDATA uT    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSDATATLDATAhH0 .corner_vert >$XJ .corner_edge?$J) A$تJDATAP >$LT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSDATAP?$LT   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQDATAP A$sT?5u?4umkEΜ?~0?Ќiٲ%w>uѢ?ӆz,?$?.zNpOpbpIxR՟b?4u?4umkEΜ?~0?Ќiٲ%w>uѢ?ӆz,?$?.zNpOpbpIxR՟bu}' ;J}j;Զ;'@;Ϊ;;b;b;Ϊ;;Զ;'@}j;Ju}' ~_~^^ζ~^?C^Mն^MնC~^?^ζ~_~^DATAx*2.select_poly JJDATA JDATAt + !$'*-0369<?BEHKNQTME /HME0.019 p=-<5`3 4 -J0 <`1@8D;ZI:H:A=薩DATAp=-J DATA`30position HJ2 .select_vert`%ثJDATAp HwP<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA@%DATAhJ0 .corner_vert J .corner_edge جJ) JDATA L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA s DYZ[g w ^w  {XvȮXJgƜ  ߧ,e3 _ۡJJ; _*e3k[x ߜ xq u>np!u>/|Xq ӿ ܿ К `3_3D ߙ DYs[hJ> > nJ/ UdSA;~~ A; WH8k)H_3-'U ߛ 'U%eHyg$yrǵr ‡>u> > nˇ>5f3Xz ӝ ߝ Ӝ sf3D ܤgSiӡuͱ{q;ܖfzqs<ܖg9ug{qбiT{q2zqi鸤izqky3zq>|»kyЮkyק>|i~>|<ܕgi~u[՘sg2s9u$gg59u>|9u i~>|>|h~:ܕf—gK1q;)%K1Γf:)x:)\ƓfTfӓfg6TƔfUf4g6Msg&YxN!&YߓfקNNgԓfЮzٓfK1z븖f8䉽rxL*xL,xL*xL*xL,xL*<7v=m*xL4<7v=m*xL,xL4<7v=m*!M<*< =9,!M<*< =94< =9,!M<*!M<*!M<*!M<*!M<,!M<*!M<*xL*!M<*xL*!M<*!M<*xL*xL*< =9*!M<*xL*xL*!M<*xL*!M<*!M<*xL6xL*!M<,xL*!M<,!M<,xL,xL,!M<4<7v=m,!M<4< =94<7v=m4<7v=m4< =95<=q4< =95<=95<=q*P*!M<=iM>P*!M<=iM>!M<=iM>P,<2>P*P=2>P*P=iM>P=2>P,<2>!M<,<2>P=2>!M<,<2>P=2>P=2>!M<*!M<,<2>!M<=iM>!M<,<2>!M<=2>!M<=iM>!M<,<2>P,<2>!M<*P,<2>!M<*!M<*P=2>!M<=2>P=iM>!M<=2>P=iM>P=iM>!M<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA LDATAh`L0 .corner_vert NخJ .corner_edgePJ) SXJDATA@ NL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA@PL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA@ SsZhgƤfg5jf,t֐ZVZ8fVR0?,n!?,$Vjn!Ut)SeQSeѼxQѧ;~8^~8<&~hxf޷\xVfj+h j+ԟfԌVXAZFV*NAZ5jfgfS}ZgƤ]txULxUӷxUӷ]txULY5I5S5I$rw*7Srw"eSe$r)SSr)Zn%r)On%n%OǵjO0ȵ7]u_Cu_)CA0ȵ7CpڵjѾ%CVC%))޾%tMU))!MUCzMUzQCԓsSISS鬓sSI|Z{ݤ{{|Z{ݤsSISS鬓sSI|Z{ݤ{{|Z{ݤ-! n õ õ-! n-! n õ õ-! nDATAx L2.select_polyPmJDATA0PmDATA  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME /HME0.021=-<<< - < `= L N0 <==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;DATA<.DATAh N0 .corner_vert *M .corner_edge .XM) .MDATA *L<  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;DATA .L<   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9DATA .s<{y|{uy|,y|" {{z|{uy|,y|${{y|{uy|+y| {{y|{vy|-y|%{{y|{ty|+y| {{y|{uy|-y|%{{y|{uy|+z|{{y|{ty|-y|${{y|{vy|+u{E{{v{{tu{_wE {{w{uw]x{{x{uxֶw{{w{u۶w|{{|o{v|y|#{{y|{uz|,y|"{{y|{vy|,y|"{{y|{ty|,y|#{{y|{uy|,y|"{{y|{ty|,y|"{{y|{vy|,y|!{{y|{uy|,y|#{{z|{uy|,y|!{{y|{uy|,y|"{{y|{ty|,y|"{ŰR֦~sr rwnoI sZo3ĩs s $د+<[[Y.&ԏj jjRjDj8 [1[Y<3&p#<ppN<Pp<<pI}:)suI}u{uۆu|{{|]K1g|y|$K1K1=z|{uy|+y| {{y|{vy|-y|%{{y|Niy|+y| NN=y|{uy|-y|%{{y|{uy|+y|{{z|&Yny|-y|$&Y&Y=y|{vy|+y|!{{y|{ty|,y|#{{y|g6hy|,y|"g6g6=y|{uy|,y|"{{y|{uy|,y|#{{y|_zy|,z|#__>y|{uy|,y|"{{y|{vy|,y|"{{y|Niy|,y|#NN=y|{uy|,y|"{{y|{ty|,y|"{{y|[ CyC]+X^>'T>hÁ]Zk C]D||\Ղ};W wVgտ  2V W D\9|նhݪPv9aRh0 ɇ \  Te~F䨛Vr]@ԫ 륶 tHp_֩LLI_H_֩LLH_H_֨LLJ_H`֬KKH`J_֨LLH_H_֩LLH_I_֩LLL_Hb֭JKGaJ^֧MLI^H_֪LLI`I`֪LLG_H^֧MNN]FcֱIHAdOZ֟PQQY@eִGGAfQZ֟PPQZAfִGG@eQY֞QPOZAdֲHI& ^cN& m ޴a ]@. . UT]+]>CR|5oI o3ĩC $ذC} Cl S֦~קzdޖ艩6/w<3!_1!IT9772m2m_]>227ŧ7]w913< 9y7779C8Ȧ9CCsN.<  >2m2m^]>22>  Ť<d}09977z~~ez~ܝ~CS@sxIm#Qx\"!}Qxsx.5?ux܆Vن|#xux.?"Rx!Rx\!!}~B@La>wN?mx*}C@BAv?LaAƠ:iƜ#?sxIm"!Px\!!}Pxsx.5?uxV׆|xux.b@Rx$Rx\!"}~ ;TE;x 3>$@ Ia\A?vFAG@*xQ?p>zLaDATAxL2.select_poly>؁MDATA>DATAT - !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<ME /HME0.022>-PPpP J A `B LO0 _8ȽUh==\<A=薩DATA>-<DATA A0position @HXM2 .select_vertB$MDATA @HwPg}=)׽%5=@bսW=-Խ%5=@bս%4=PӽW=-ԽW=-Խ%4=Pӽ߄5=pԽ%4=Pӽ%f=Խ߄5=pԽ߄5=pԽ%f=Խ䄾SR=ֽ%f=ԽK!=p?ؽ䄾SR=ֽ䄾SR=ֽK!=p?ؽ&B$=۽K!=p?ؽ%ɞ=0ݽ&B$=۽&B$=۽%ɞ=0ݽq=p߽%ɞ=0ݽ%ך=0|q=p߽q=p߽%ך=0|E>=0%ך=0|K! =PE>=0E>=0K! =P|V=hK! =PK^\=>|V=h|V=hK^\=>aք=zaք=zK^\=>㽌7\=8K^\=>%V=޽7\=8ཌ7\=8%V=޽JɄ(=Ѐܽ%V=޽K[=@ٽJɄ(=ЀܽJɄ(=ЀܽK[=@ٽg}=)׽K[=@ٽ%5=@bսg}=)׽;ug=N;Hq=\B=pսB=pս;Hq=\'Hw{={ҽ'Hw{={ҽ;Hq=\W=-Խ;Hq=\A:L=@ԮW=-ԽW=-ԽA:L=@Ԯg}=)׽g}=)׽A:L=@Ԯf~Ҭ=p_׽A:L=@Ԯ9n<=*f~Ҭ=p_׽f~Ҭ=p_׽9n<=*#x= }ٽ9n<=*8{=K#x= }ٽ#x= }ٽ8{=K+x=ݽ8{=K8ޔy=p+x=ݽ+x=ݽ8ޔy=pxe=߽8ޔy=p9Ym=ϼxe=߽xe=߽9Ym=ϼE>=0⽁9Ym=ϼ$&;zd=E>=0E>=0$&;zd=q=p߽q=p߽$&;zd=E{U=@׽$&;zd=;ug=NE{U=@׽E{U=@׽;ug=NB=pսf~Ҭ=p_׽#x= }ٽ7\=8#x= }ٽ+x=ݽ7\=8ཌ7\=8+x=ݽUp=+x=ݽxe=߽Up=xe=߽E>=0Up=q=p߽E{U=@׽&B$=۽&B$=۽E{U=@׽B=pսB=pս'Hw{={ҽ䄾SR=ֽ䄾SR=ֽ'Hw{={ҽ߄5=pԽ'Hw{={ҽW=-Խ߄5=pԽg}=)׽f~Ҭ=p_׽JɄ(=Ѐܽf~Ҭ=p_׽7\=8JɄ(=Ѐܽ7\=8Up=aք=zaք=zUp=|V=hUp=E>=0|V=h&B$=۽B=pս䄾SR=ֽÑmoNNG`1^7NNG`1NJP޽^7^7NJP޽;"ܽNJP޽Nޞ Lڽ;"ܽ;"ܽNޞ Lڽ@~̟׽Nޞ Lڽtf`ս@~̟׽@~̟׽tf`սO>Խtf`սN/ӽO>ԽO>ԽN/ӽBT#ԽN/ӽNʪԽBT#ԽBT#ԽNʪԽ'򇬽-ֽNʪԽt~~@ؽ'򇬽-ֽ'򇬽-ֽt~~@ؽԽO>Խ5쟽нԽԽ<Jٽ@~̟׽@~̟׽<Jٽ;"ܽ<Jٽ^7;"ܽÑmoǎy s%Dp&ǎy ⽵^8s%Dp&併^8"ߏ ЭBݽ2ޮ[޽2ޮ[޽"ߏ ЭBݽԽԽ@~̟׽DATAPB$DATA`B..edge_verts /؂M2.select_edge D$MDATA /uP    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNODATAP D$DATAhO0 .corner_vert \$XM .corner_edge b$M) h$؃MDATA@ \$LP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNODATA@ b$LP   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMDATA@ h$sP ˞9yȢh9( j۹- '0<éYGsN L GuV4\ΞN|RkWԘ( @#ȳ܁ i!n`ܓ ZT42",!a?aݜXI8 b 6"J#۠ |".fx5ؖ((U"WJҳ 1PGX6{"եޒ ۾ ăù"Ȣӳ ϫf cܪm 5GtSp$"&s"[lm~P<BfM0ȥl9#V+ ˸%e}}S]3O n+fڰ l A5R2(.ƛ'd)JMT: ), ?!)}' !~-/Ȏ< l ȯ\ įI93 $N}&:DATAx L2.select_polyLMDATApLDATA J !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPME /HME0.0230>-8`GD F @LQ0 PJ7*ܽh>X=C;A=薩DATA0>-<DATAD0position KM2 .select_vert %؄MDATA Kw =PvJ۠=ὖ$=@{vJ۠=vܞ=ݽ$=@{ὖ$=@{vܞ=ݽ|=vܽvܞ=ݽv=ٽ|=vܽ|=vܽv=ٽe#=Pq׽v=ٽvSM=ֽe#=Pq׽e#=Pq׽vSM=ֽxg=ԽvSM=ֽv2=Pӽxg=Խxg=Խv2=Pӽ2=pӽv2=PӽvO=,ս2=pӽ2=pӽvO=,ս=bսvO=,սv=-ٽ=bս=bսv=-ٽ=ٽv=-ٽv =`߽=ٽ=ٽv =`߽ݬ=޽ݬ=޽v =`߽ [=?v =`߽vVê=u㽎 [=?vVê=uv=k低 [=?㽎 [=?v=k低 =Pv=kvJ۠=὎ =P低 [=?㽎 =P佧xg=Խ|=vܽxg=Խ$=@{ὖ$=@{ὧxg=Խ =P但e#=Pq׽xg=Խ|=vܽ=ٽxg=Խ=bսxg=Խ2=pӽ=bս [=?㽧xg=Խݬ=޽xg=Խ=ٽݬ=޽]}ؽ,5~ս]ɪPԽ,5~ս,5~ӽ]ɪPԽ]ɪPԽ,5~ӽ]sӽ,5~ӽ,5~ޢԽ]sӽ]sӽ,5~ޢԽ]j࠽ֽ,5~ޢԽ,5~0П׽]j࠽ֽ]j࠽ֽ,5~0П׽]ޞ Mڽ,5~0П׽5~pݽ]ޞ Mڽ]ޞ Mڽ5~pݽ]P޽5~pݽ,5~@ὔ]P޽]P޽,5~@ὢ]/H2,5~@5~)m佢]/H2⽢]/H25~)m佐]0~5~)m5~aܫ⽐]0~佐]0~5~aܫ⽫]I)㽫]I)5~aܫ⽘]Ʈ߽5~aܫ,5~ܮc޽]Ʈ߽,5~ܮc޽5~ ٽ]Ʈ߽]Ʈ߽5~ ٽ]}ؽ5~ ٽ,5~ս]}ؽ]Ʈ߽]}ؽ]ޞ Mڽ]sӽ]ޞ Mڽ]ɪPԽ]ɪPԽ]ޞ Mڽ]}ؽ]j࠽ֽ]ޞ Mڽ]sӽ]0~佳]ޞ Mڽ]/H2⽳]ޞ Mڽ]P޽]/H2⽘]Ʈ߽]ޞ Mڽ]I)㽳]ޞ Mڽ]0~佫]I)DATA %DATA F..edge_verts n$M2.select_edge%XMDATA@ n$u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA%DATAhQ0 .corner_vert M .corner_edge ؅M) ĹMDATA L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA ĹsӞ fa# Qq ]iӦrgUsE\'^QOUB~Vv>*JKnϪ0_> e!- ^8Zd&qx$_|MbnVw!$!g}9!l^B%TR$&"]f~~ zz*~$ש~zV~ӏ~z> ~Nz{JzyG!g~}zu}:̔z~4]}ӟ fa# Rq ]iӦsgTsF\)]QNUB~Vv>)JKnЪ/_> e!- ^8Zd&qx$`|MbnUw!$!g}8!m^B%TS$&!]e~~ zz*~$ר~zV~Ӓsz>~NzuUz؄G g~}zs};̔z~4]}DATAx@L2.select_polyJXMDATA8JDATA`G !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME 1HME0.024`>-  `  t$I K L`S0 *7Dƽ:>bK= J<A=薩DATA`>-# DATAI0position #؆M2 .select_vert /MDATA1 #w ,v=G=ս,vW=ڽv=-ٽv=-ٽ,vW=ڽv =`߽,vW=ڽ,v= v =`߽,v= ,vP=$v =`߽,vP=$,v]=v =`߽v =`߽,v]=vVê=u,v]=,v[=$vVê=u,v[=$,v=ІvVê=uvVê=u,v=Іv=k,v=І,vBU=0v=k,vBU=0,v,= Cv=k,v,= C,vc=`v=kv=k,vc=`vJ۠=,vc=`,vYx=vJ۠=,vYx=,v= vJ۠=vJ۠=,v= vܞ=ݽ,v= ,v=vܞ=ݽ,v=,v({=Дݽvܞ=ݽvܞ=ݽ,v({=Дݽv=ٽ,v({=Дݽ,v3ϒ=>ؽv=ٽ,v3ϒ=>ؽ,v=,ӽv=ٽv=ٽ,v=,ӽvSM=ֽ,v=,ӽ,vu=νvSM=ֽ,vu=ν,v)w=P-˽vSM=ֽvSM=ֽ,v)w=P-˽v2=Pӽ,v)w=P-˽,v>@=Ƚv2=Pӽ,v>@=Ƚ,v}=ǽv2=Pӽ,v}=ǽ,vӪ=Ƚv2=Pӽv2=Pӽ,vӪ=ȽvO=,ս,vӪ=Ƚ,vf=ɽvO=,ս,vf=ɽ,vqZ=P̽vO=,սvO=,ս,vqZ=P̽v=-ٽ,vqZ=P̽,v=нv=-ٽ,v=н,v=G=սv=-ٽW=ڽJG=սK[=@ٽJG=ս=нK[=@ٽK[=@ٽ=н%5=@bս=н~Z=P̽%5=@bս~Z=P̽s=ɽ%5=@bս%5=@bսs=ɽ%4=Pӽs=ɽӪ=Ƚ%4=PӽӪ=Ƚ}=ǽ%4=Pӽ%4=Pӽ}=ǽ%f=Խ}=ǽK@=Ƚ%f=ԽK@=Ƚ6w=P-˽%f=Խ%f=Խ6w=P-˽K!=p?ؽ6w=P-˽u=νK!=p?ؽu=ν=,ӽK!=p?ؽ=,ӽ@ϒ=>ؽK!=p?ؽK!=p?ؽ@ϒ=>ؽ%ɞ=0ݽ@ϒ=>ؽ5{=Дݽ%ɞ=0ݽ5{=Дݽ=%ɞ=0ݽ%ɞ=0ݽ=%ך=0|== %ך=0|= fx=%ך=0|%ך=0|fx=K! =Pfx=p=`K! =Pp=`9= CK! =P9= COU=0K! =PK! =POU=0K^\=>OU=0=ІK^\=>=І[=$K^\=>[=$]=K^\=>K^\=>]=%V=޽]=P=$%V=޽P=$= %V=޽%V=޽= K[=@ٽ= W=ڽK[=@ٽ=н,vqZ=P̽~Z=P̽,vqZ=P̽,vf=ɽ~Z=P̽~Z=P̽,vf=ɽs=ɽ,vf=ɽ,vӪ=Ƚs=ɽs=ɽ,vӪ=ȽӪ=Ƚ,vӪ=Ƚ,v}=ǽӪ=ȽӪ=Ƚ,v}=ǽ}=ǽ,v}=ǽ,v>@=Ƚ}=ǽ}=ǽ,v>@=ȽK@=Ƚ,v>@=Ƚ,v)w=P-˽K@=ȽK@=Ƚ,v)w=P-˽6w=P-˽,v)w=P-˽,vu=ν6w=P-˽6w=P-˽,vu=νu=ν,vu=ν,v=,ӽu=νu=ν,v=,ӽ=,ӽ,v=,ӽ,v3ϒ=>ؽ=,ӽ=,ӽ,v3ϒ=>ؽ@ϒ=>ؽ,v3ϒ=>ؽ,v({=Дݽ@ϒ=>ؽ@ϒ=>ؽ,v({=Дݽ5{=Дݽ,v({=Дݽ,v=5{=Дݽ5{=Дݽ,v==,v=,v= ==,v= = ,v= ,vYx== = ,vYx=fx=,vYx=,vc=`fx=fx=,vc=`p=`,vc=`,v,= Cp=`p=`,v,= C9= C,v,= C,vBU=09= C9= C,vBU=0OU=0,vBU=0,v=ІOU=0OU=0,v=І=І,v=І,v[=$=І=І,v[=$[=$,v[=$,v]=[=$[=$,v]=]=,v]=,vP=$]=]=,vP=$P=$,vP=$,v= P=$P=$,v= = ,v= ,vW=ڽ= = ,vW=ڽW=ڽ,vW=ڽ,v=G=սW=ڽW=ڽ,v=G=սJG=ս,v=G=ս,v=нJG=սJG=ս,v=н=н,v=н,vqZ=P̽=нf(q=>۪6= о(=۪6= о&7j=(=(=&7j=9)=ŭ&7j=z8Ӌ=P=9)=ŭ9)=ŭz8Ӌ=P=*=z8Ӌ=P=9%=*=*=9%=,/w=9%=\;7=,/w=,/w=\;7=-"j= \;7=V<,ns=`-"j= -"j= V<,ns=`.w\=0*V<,ns=`+y=[Ef=n.w\=0*.w\=0*+y=[Ef=n /K=+y=[Ef=n+=W=ɫ /K= /K=+=W=ɫUn/åC=a+=W=ɫ = $Q=Un/åC=aUn/åC=a = $Q=.M?=pb = $Q=;S=.M?=pb.M?=pb;S=-@=P-@=P;S=ms,sG=';S= 9Y_=ЍĽms,sG='ms,sG=' 9Y_=ЍĽ+R=潽 9Y_=ЍĽS8{p=`Dǽ+R=潽+R=潽S8{p=`Dǽ)׏_=S8{p=`Dǽ63X=p*Ž)׏_=)׏_=63X=p*Žf(q=>63X=p*Ž۪6= оf(q=>ms,sG='+R=潽)׏_=f(q=>(=-@=Pf(q=>-@=P)׏_=)׏_=-@=Pms,sG='*=.w\=0* /K=*=-@=P9)=ŭ9)=ŭ-@=P(=-@=P*=.M?=pb.M?=pb*=Un/åC=a*= /K=Un/åC=a.w\=0**=-"j= 򛽕*=,/w=-"j= $&;zd= = $Q=;ug=N = $Q=+=W=ɫ;ug=N;ug=N+=W=ɫ;Hq=\+=W=ɫ+y=[Ef=n;Hq=\+y=[Ef=nV<,ns=`;Hq=\V<,ns=`\;7=;Hq=\;Hq=\\;7=A:L=@Ԯ\;7=9%=A:L=@ԮA:L=@Ԯ9%=9n<=*9%=z8Ӌ=P=9n<=*z8Ӌ=P=&7j=9n<=*9n<=*&7j=8{=K&7j=۪6= о8{=K8{=K۪6= о8ޔy=p۪6= о63X=p*Ž8ޔy=p63X=p*ŽS8{p=`Dǽ8ޔy=p8ޔy=pS8{p=`Dǽ9Ym=ϼS8{p=`Dǽ 9Y_=ЍĽ9Ym=ϼ9Ym=ϼ 9Y_=ЍĽ$&;zd= 9Y_=ЍĽ;S=$&;zd=;S= = $Q=$&;zd=@5~xP~@5~^ѩn5~)m5~)m@5~^ѩn5~aܫ@5~^ѩn@5~AP5~aܫ@5~AP@5~pC5~aܫ@5~pC@5~JMp5~aܫ5~aܫ@5~JMp,5~ܮc޽@5~JMp@5~칽,5~ܮc޽@5~칽@5~?޽,5~ܮc޽,5~ܮc޽@5~?޽5~ ٽ@5~?޽@5~g/Aٽ5~ ٽ@5~g/Aٽ@5~ Խ5~ ٽ@5~ Խ@5~/Ͻ5~ ٽ5~ ٽ@5~/Ͻ,5~ս@5~/Ͻ@5~_1 ˽,5~ս@5~_1 ˽@5~Q`&ɽ,5~ս,5~ս@5~Q`&ɽ,5~ӽ@5~Q`&ɽ@5~QZPǽ,5~ӽ@5~QZPǽ@5~ǽ,5~ӽ,5~ӽ@5~ǽ,5~ޢԽ@5~ǽ@5~۞`Tɽ,5~ޢԽ@5~۞`Tɽ@5~wB0̽,5~ޢԽ,5~ޢԽ@5~wB0̽,5~0П׽@5~wB0̽@5~хϽ,5~0П׽@5~хϽ@5~瓽 Խ,5~0П׽,5~0П׽@5~瓽 Խ5~pݽ@5~瓽 Խ@5~ٽ5~pݽ@5~ٽ@5~߽5~pݽ@5~߽@5~65~pݽ5~pݽ@5~6,5~@@5~6@5~Ζ,5~@@5~Ζ@5~,5~@,5~@@5~5~)m@5~@5~J@+5~)m@5~J@+@5~xP~5~)m%Rѩn%xP~tE/~%xP~%J@+tE/~tE/~%J@+NNG`1%J@+%NNG`1%%ΖNNG`1NNG`1%ΖNJP޽%Ζ%6NJP޽%6%߽NJP޽NJP޽%߽Nޞ Lڽ%߽%ٽNޞ Lڽ%ٽ%瓽 ԽNޞ LڽNޞ Lڽ%瓽 Խtf`ս%瓽 Խ%ŅϽtf`ս%ŅϽ%kB0̽tf`ս%kB0̽%۞`Tɽtf`սtf`ս%۞`TɽN/ӽ%۞`Tɽ%ǽN/ӽ%ǽ%EZPǽN/ӽN/ӽ%EZPǽNʪԽ%EZPǽ%E`&ɽNʪԽ%E`&ɽ%S1 ˽NʪԽNʪԽ%S1 ˽t~~@ؽ%S1 ˽%#Ͻt~~@ؽ%#Ͻ% Խt~~@ؽ% Խ%[/Aٽt~~@ؽt~~@ؽ%[/AٽtZƮ߽%[/Aٽ%?޽tZƮ߽%?޽%빽tZƮ߽%빽%>MptZƮ߽tZƮ߽%>MpNH)%>Mp%pCNH)%pC%5PNH)NH)%5PtE/~%5P%RѩntE/~%J@+@5~%@5~@5~Ζ%%@5~Ζ%Ζ@5~Ζ@5~6%Ζ%Ζ@5~6%6@5~6@5~߽%6%6@5~߽%߽@5~߽@5~ٽ%߽%߽@5~ٽ%ٽ@5~ٽ@5~瓽 Խ%ٽ%ٽ@5~瓽 Խ%瓽 Խ@5~瓽 Խ@5~хϽ%瓽 Խ%瓽 Խ@5~хϽ%ŅϽ@5~хϽ@5~wB0̽%ŅϽ%ŅϽ@5~wB0̽%kB0̽@5~wB0̽@5~۞`Tɽ%kB0̽%kB0̽@5~۞`Tɽ%۞`Tɽ@5~۞`Tɽ@5~ǽ%۞`Tɽ%۞`Tɽ@5~ǽ%ǽ@5~ǽ@5~QZPǽ%ǽ%ǽ@5~QZPǽ%EZPǽ@5~QZPǽ@5~Q`&ɽ%EZPǽ%EZPǽ@5~Q`&ɽ%E`&ɽ@5~Q`&ɽ@5~_1 ˽%E`&ɽ%E`&ɽ@5~_1 ˽%S1 ˽@5~_1 ˽@5~/Ͻ%S1 ˽%S1 ˽@5~/Ͻ%#Ͻ@5~/Ͻ@5~ Խ%#Ͻ%#Ͻ@5~ Խ% Խ@5~ Խ@5~g/Aٽ% Խ% Խ@5~g/Aٽ%[/Aٽ@5~g/Aٽ@5~?޽%[/Aٽ%[/Aٽ@5~?޽%?޽@5~?޽@5~칽%?޽%?޽@5~칽%빽@5~칽@5~JMp%빽%빽@5~JMp%>Mp@5~JMp@5~pC%>Mp%>Mp@5~pC%pC@5~pC@5~AP%pC%pC@5~AP%5P@5~AP@5~^ѩn%5P%5P@5~^ѩn%Rѩn@5~^ѩn@5~xP~%Rѩn%Rѩn@5~xP~%xP~@5~xP~@5~J@+%xP~%xP~@5~J@+%J@+@5~J@+@5~%J@+カpG^~+cU,փĽh8GW@t彽+cU,փĽfUm{Ƚh8GW@t彽h8GW@t彽fUm{ȽGSd½fUm{ȽʸVAnPʽGSd½GSd½ʸVAnPʽjIQ;ýʸVAnPʽbjXC\ȽjIQ;ýjIQ;ýbjXC\Ƚ@KrHBھbjXC\Ƚ>ZD*P½@KrHBھ@KrHBھ>ZD*P½kLt;E>ZD*P½l[*L޻kLt;EkLt;El[*L޻,M8Gl[*L޻{1\ M ,M8G,M8G{1\ M [GNO>'{1\ M {t\pV[GNO>'[GNO>'{t\pV&NG룽{t\pV[nfp&NG룽&NG룽[nfpMfT@S[nfpIRZϻxMfT@SMfT@SIRZϻxjLajLaIRZϻx𦽾+Ko`IRZϻxpX8+Ko`+Ko`pX8`Ix`pX8VƬ첽`Ix``Ix`VƬ첽H6~FVƬ첽-UDH6~FH6~F-UDpG^~-UD+cU,փĽpG^~+Ko``Ix`H6~FpG^~h8GW@t彽jLapG^~jLaH6~FH6~FjLa+Ko`jIQ;ý,M8G[GNO>'jIQ;ýjLaGSd½GSd½jLah8GW@t彽jLajIQ;ýMfT@SMfT@SjIQ;ý&NG룽jIQ;ý[GNO>'&NG룽,M8GjIQ;ýkLt;EjIQ;ý@KrHBھkLt;EtYYp\[nfp"}Z;dP![nfp{t\pV"}Z;dP!"}Z;dP!{t\pV@Z^ø{t\pV{1\ M @Z^ø{1\ M l[*L޻@Z^øl[*L޻>ZD*P½@Z^ø@Z^ø>ZD*P½XӢd`3>ZD*P½bjXC\ȽXӢd`3XӢd`3bjXC\ȽW&4pbjXC\ȽʸVAnPʽW&4pʸVAnPʽfUm{ȽW&4pW&4pfUm{Ƚ\Wy/fUm{Ƚ+cU,փĽ\Wy/\Wy/+cU,փĽW~ +cU,փĽ-UDW~ -UDVƬ첽W~ W~ VƬ첽uX?|PVƬ첽pX8uX?|PuX?|PpX8tYYp\pX8IRZϻxtYYp\IRZϻx[nfptYYp\DATA  /DATA K..edge_verts OXM2.select_edge %/MDATA! Ou     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA  %/DATAh`S0 .corner_vert I؇M .corner_edge IM) IXMDATA IL   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA IL    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA Is +_9|8|+},+ր}Ղ}x^:_}}7\e{7+}Ԯ`{|8.a{1b{8[|s<`|Ճa|FL9_`|#[|7\|6+|ծ||E.|V|wGN|E+|ծ||E.|!|@FN|=F+}ծ||E.|m5|FN·|lE+|ծ|~8.|C|O7{;{Ղ{%k9_{q{8\|6+|ծ|d}8.| |82|%;9|)Ճ9|?`ՂvVq:`vvI7^xc5+|ծx }E/x)xEPwE+|ծwP|F/w9wEPµwiE+|ծw|8/wCwL8ýv|;րvWՂvp:`vv,8]xu5+|ծx/|E/x*xFP_xdE+|ծ_x|8/`xBbxG9sv<zv]Ղ{vrp+`{vzv+{^=|^C2@#0#]#8#]?B6Dz^;^??;^Dz^CQ?#8%]%#]@C2=z^;{^>>#0^D#]C6C6D#]#0^??;{^=z^B2?%#]#8%]?CQDz^;^??;^Dz^B6?#8#]%ͱpN7@#(e3|3'_=;͓5bJ::'KPf']QP"?le-)~o1ϭmHG"ľl M!`dHu2cE%:" "$p'30- ^!÷++iPYw5#L11;hfL#m t %9Ƞj."[Ĩ՛ =ZƑ##¹ BM# ,; 2v% $xM~j\jM)\CiDhv/e]/+xF/yF-!M)l/LOOX/LUκ/\"2UBe, 03ՙs1/,{1rإiws?fA/x4f%|exl x'|eĐveԺnv n{nCvkGnsd3vvladyd[dKgy?Qygvgnv`n*jv,v/j%y#jՖiVysyis]i#ns@nMfssNfxLfldxPxXodiwRvd8pww8pCfXvw +`9|8|+},+ր}Ձ}x^9_}}8\e{5+|ծ`{|8.`{1c{9Z|s<ր`|Ղa|FL:_`|#Z|8\|5+|Ԯ|}E.|X|wEN|E+|ծ||E.|!|@EN|=E+|Ԯ||F.|l5|DNµ|lE+{ծ||8.|C|O8{;{Ղ{#k:_{q{9\|6+|Ԯ|d|7.| |91|%;9|)Ղ9|?`ՂvVq:`vvI7]xc5+|֮x |F.x)xEPwE+|ծwP|E/w9wEP¶wiF+|ծw|7/wCwL8þv|;vWՂvp9`vv,8^xu6,|ծx0|E/x*xEP_xdE+|֮_x|8/`xBaxG9tv;zv]Ղ{vqp+`{vzv+;x+{^A?#0!]!l#]?C6D|^=^A?;!]!mz^??"8|^=#]B2B2>"]"8|^?@!mz^;!]?B=^D{^B6>!m#]#0!]?B=|^={^B?!m!]!m!]@B=|^>{^B2?#0"]"8#]?B6Dz^;^??;^Dz^CQ?#8$]%"]?B2>z^;|^??#0^D#]B6B6D#]#0^??;{^=z^B2>&"]"8%]AEQDz^;^>>;^Dz^B6>#9#]%ͱpN7?#)e3|3'_=;͔4bJ::'KPf&]QP"?le-)~o2ϭmHG"ľl M!`dHv2cE%;! "$p'30- ^!÷++hPYw5#L11:hfL#m t %9Ƞj."[Ĩ՛ =ZƑ##¹ BL# ,; 2v% %xM~j\jM)\CiDhv/e]/+xF/yF-!M)l/LOOX/LUκ/\"2UCe, 03ՙs1/,{1rإiws?fA/x4f%|exl x'|eĐveԺnv n{nCvkGntd3vvladyd[dJgy?Qygvgnv`n*jv,v/j%y#jՖiVysyis]i#nsAnMfssNfxLfldxPxYodiwRvd8pww8pCfXvw DATAxL2.select_polyE$MDATA`E$DATA t$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  ME 1HME0.025>-  `  @0M pI @L U0 qx[d۾>a#===A=薩DATA>- DATAM0position .M2 .select_vertNXMDATA .w 1ݾ a>Pݾ\>1 a>Pݾ\>T\>1 a>ݾ>1ݾ a>>1ݾ a>1 a>>ݾ>>>ݾ>>ݾ>>0>ݾ>ݾ>0>0ݾ>0>m>0ݾ>0ݾ>m>ݾm>iŽݾ>ݾm>kŽ>ݾm>m>kŽ>iŽݾ>kŽ>qŽpy>iŽݾ>qŽpy>}qŽݾpy>qŽpy>>}qŽݾpy>}qŽݾpy>>ݾ>>r>ݾ>ݾ>r>ݾr>&_.ݾ>ݾr>*_.>ݾr>r>*_.>|71ݾH>&_.ݾ>71H>&_.ݾ>*_.>71H>sݾHw>|71ݾH>sHw>|71ݾH>71H>sHw>sݾHw>sHw>{Ľ>sݾHw>{Ľ>yĽݾ>{Ľ>1ʽH\>yĽݾ>yĽݾ>1ʽH\>/ʽݾH\>1ʽH\>ͽ(>/ʽݾH\>/ʽݾH\>ͽ(>ͽݾ(>ͽ(>ν؈>ͽݾ(>ͽݾ(>ν؈>νݾ؈>򦽷ݾ>νݾ؈>>νݾ؈>ν؈>>򦽷ݾ>> X5>򦽷ݾ> X5> ݾX5> X5>Æ> ݾX5> ݾX5>Æ>ݾÆ>Æ>5>ݾÆ>ݾÆ>5>5ݾ>5>{8>5ݾ>5ݾ>{8>y8ݾ>Pݾ\>y8ݾ>T\>y8ݾ>{8>T\>&_.ݾ>|71ݾH>ݾr>|71ݾH>sݾHw>ݾr>ݾr>sݾHw>ݾ>Pݾ\>1ݾ a>y8ݾ>1ݾ a>ݾ>y8ݾ>y8ݾ>ݾ>5ݾ>ݾ>ݾ>5ݾ>5ݾ>ݾ>ݾÆ>ݾ>0ݾ>ݾÆ>sݾHw>yĽݾ>ݾ>yĽݾ>/ʽݾH\>ݾ>ݾ>/ʽݾH\>}qŽݾpy>/ʽݾH\>ͽݾ(>}qŽݾpy>}qŽݾpy>ͽݾ(>iŽݾ>ͽݾ(>νݾ؈>iŽݾ>iŽݾ>νݾ؈>ݾm>νݾ؈>򦽷ݾ>ݾm>ݾm>򦽷ݾ>0ݾ>򦽷ݾ> ݾX5>0ݾ>0ݾ> ݾX5>ݾÆ>qŽpy>1ʽH\>>1ʽH\>{Ľ>>>{Ľ>r>{Ľ>sHw>r>r>sHw>*_.>sHw>71H>*_.>1 a>T\>>T\>{8>>>{8>>{8>5>>5>Æ>>>Æ>0>Æ> X5>0>0> X5>m> X5>>m>m>>kŽ>>ν؈>kŽ>kŽ>ν؈>qŽpy>ν؈>ͽ(>qŽpy>qŽpy>ͽ(>1ʽH\>r>,_.>{幽xl>,_.>*x>{幽xl>ar>r>x幽axl>r>{幽xl>x幽axl>&_.a>ar>*ax>ar>x幽axl>*ax>,_.>&_.a>*x>&_.a>*ax>*x>ar>&_.a>r>&_.a>,_.>r>*ax>x幽axl>*x>x幽axl>{幽xl>*x>DATA NDATA pI..edge_verts RM2.select_edge`qI؉MDATA Ru     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA `qIDATAh U0 .corner_vert */M .corner_edge //XM) 4/MDATA */L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA //L    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA 4/s |sss޿|sI6K6Ȉ coڣgmo؅gACwhiljBBkhmwhA@ggm cfK0f|ssss<sӐ56Ȉ iC ,iC ؐ-B 3 B ع~~ B B 3 ڷ-zNB C +yI;/lWW/lzI<B +zNB ؏-B 2 B ظ~~ @ B 3 ڷ-kB C ,i 56{{{{{c{{ߥ{Ʊy{{{p{{{{{2|{i{2|2|i{c5|i{ܱyӞ5|{?A}y4A}O5|yZyӞ5|i{5|2|i{ci{2|{+2|{{{K{{{{{{{Ʊy{A}y4αyZA}O5|yӞ5|i{5|2|i{ci{2|{2|{{h{{ K4{p{ KX{{{{{c{{ߥ{Ʊy{?A}y4A}O5|yZyӞ5|i{5|2|i{bi{2|{+2|{{{K{{{{{{{Ʊy{A}y4αyZA}O5|{ KRɋy Ka~ҊyLv+-s-P G$sI `vI LX0 P>rȾ|>E6= >A=薩DATA>- <DATAsI0position MXM2 .select_vert uIMDATA@ MwW>z>>{>W>վz>>{>>վ{>W>վz>׶>C>W>z>׶>վC>W>z>W>վz>׶>վC>0Ԯ> HG>׶>C>0Ԯ>վ HG>׶>C>׶>վC>0Ԯ>վ HG>1A>IK>0Ԯ> HG>1A>վIK>0Ԯ> HG>0Ԯ>վ HG>1A>վIK>C>лH>1A>IK>C>վлH>1A>IK>1A>վIK>C>վлH>>{>C>лH>>վ{>C>лH>C>վлH>>վ{>>{>W>z>C>лH>W>z>׶>C>C>лH>C>лH>׶>C>1A>IK>׶>C>0Ԯ> HG>1A>IK>1A>վIK>0Ԯ>վ HG>C>վлH>0Ԯ>վ HG>׶>վC>C>վлH>C>վлH>׶>վC>>վ{>׶>վC>W>վz>>վ{>8C;?վp+>C8C;?p+>CC8C;?p+>U8?վ =8C;?վp+>U8? =8C;?վp+>8C;?p+>U8? =yW9?վ`=C9?վ`=9?`=CC8C;?վp+>9?վ`=8C;?վp+>U8?վ =9?վ`=9?վ`=U8?վ =U8? =8C;?p+>C$>d;߾/ھ >d;߾/ھ$>Zd/ھ >d;߾/ھ >Zd/ھ$>Zd/ھ$>d;߾$>d;߾/ھ$>Zd$>d;߾/ھ$>Zd/ھ$>Zd^E>d;߾$>d;߾^E>Zd$>d;߾$>Zd^E>Zd^E>d;߾^E>d;߾^E>Zd^E>d;߾^E>Zd^E>Zd >d;߾^E>d;߾ >Zd^E>d;߾^E>Zd >Zd >d;߾/ھ >d;߾ >Zd/ھ >d;߾ >Zd >Zd/ھ >d;߾/ھ$>d;߾/ھ >d;߾$>d;߾/ھ$>d;߾ >d;߾ >d;߾$>d;߾^E>d;߾$>d;߾^E>d;߾^E>d;߾^E>Zd^E>Zd >Zd^E>Zd$>Zd >Zd >Zd$>Zd >Zd/ھ$>Zd$>Zd/ھ >Zd/ھ>Yd/ھ۩>Yd/ھ>c;߾/ھ۩>Yd/ھ۩>c;߾/ھ>c;߾/ھ>Yd>Yd/ھ>c;߾>Yd/ھ>c;߾/ھ>c;߾>Yd>Yd>c;߾>Yd>c;߾>c;߾>Yd>Yd>c;߾>Yd>c;߾>c;߾۩>Yd>Yd۩>c;߾>Yd>c;߾۩>c;߾۩>Yd/ھ۩>Yd۩>c;߾/ھ۩>Yd۩>c;߾۩>c;߾/ھ۩>Yd/ھ>Yd/ھ۩>Yd>Yd/ھ>Yd۩>Yd۩>Yd>Yd>Yd>Yd>Yd>Yd>c;߾>c;߾۩>c;߾>c;߾>c;߾۩>c;߾۩>c;߾>c;߾۩>c;߾/ھ>c;߾>c;߾/ھ۩>c;߾/ھDATA uIDATA`vI..edge_verts K؋M2.select_edgewIMDATA Ku    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATAwIDATAhX0 .corner_vert MXM .corner_edge MM) M،MDATA ML  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA ML   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA Ms }*Vs@tVs|HAtS+^G ^š ִ %­1U8 0U@tc ǒrzCZ%PDZu$Pzv5xdF\/x%0F\Rz ( E c$h{宅{Ҩz{yذz Ϩz҃yCz4y{Cz!|{}y{z}y}yޤz,{zf{,{ }*UsAtVs|HAtS+^G ^š ִ %­0U8 0UAtc ǑrzEZ$PDZu%Pzv5xdF\/x%0F\Rz ( E c$h{宅{Ҩz{yذz Ϩz҃yCz4y{Cz!|{}y{z}y}yޤz+{zf{,{ }*Ws?tWs|H?tS+^G ^š ִ %­0U8 0UAtc ǒrzDZ%PDZu%Pzv5xdF\/x% 0F\Rz ( E c$h{宅{Ҩz{yذz Ϩz҃yCz4y{Cz!|{}y{z}y}yޤz,{zf{,{ }*Ws?tWs|H?tS+^G ^š ִ %­0U8 0UAtc ǒrzDZ%PDZu%Pzv5xdF\/x% 0F\Rz ( E c$h{宅{Ҩz{yذz Ϩz҃yCz4y{Cz!|{}y{z}y}yޤz,{zf{,{DATAxL2.select_polyֺMDATAPֺDATAD G$ !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME 1HME0.027>-TTTM zI `{I @M`Z0 g0?U9#;;;A=薩DATA>- . DATA zI0position 9/؍M2 .select_vert LMDATA 9/wTF/?4A 1?3AF/?ջ 1?3A 1?LF/?ջF/?ջ 1?LF/?ȗQ 1?LF/?MF/?ȗQF/?ԋF/?g"F/?0F/?g"F/?ԻF/?0F/?0F/?ԻF/?ƗpqF/?ԻF/?ջF/?ƗpqF/?ƗpqF/?ջF/?ȗQ 1?Dҕ 1?%ŗ< 1?󎖾"û 1?%ŗ< 1?X 1?󎖾"û 1?󎖾"û 1?X 1?( 1?X 1?L 1?( 1?( 1?L 1?3AF/?w1; 1?v1;F/?꒾; 1?v1; 1?]b8F/?꒾;F/?꒾; 1?]b8F/?ԩQ: 1?]b8F/?^b8F/?ԩQ:F/?꒾;F/?ԩQ:F/?ے;F/?ԩQ:F/?Ϋ`q:F/?ے;F/?ے;F/?Ϋ`q:F/? ;F/?Ϋ`q:F/? ꐾ/;F/? ;F/? ;F/? ꐾ/;F/?bҋ; 1?]b8 1?v1; 1?jP: 1?v1; 1?’&; 1?jP: 1?jP: 1?’&; 1?<; 1?’&; 1?㑾"; 1?<; 1?<; 1?㑾"; 1?.Ε;DATAT LDATA`{I..edge_verts ǹXM2.select_edgeLMDATA ǹuT    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSDATATLDATAh`Z0 .corner_vertH$؎M .corner_edge J$M)K$XMDATAPH$LT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSDATAP J$LT   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQDATAPK$sT/ ' L o Ą D Q.wC9i}uSguèHggHQgݛH,gWgI-A"Sr:}(uRDf,uFEfDfFa`FŒy`Ո`+y~zq- ЪB /,   + @- `T.vB3I \aT}_p_T^(aTT_g_u8g gRui}|Ϙ2vAAu2vcEACAqcBfcw(u9Df DfR(u:}DATAx@M2.select_polyMMDATAMDATAtM !$'*-0369<?BEHKNQTME 1HME0.028 ?-+ >/}I I `I \0 &>? \r=>6<0=A=薩DATA ?-`3 DATA}I0position NN2 .select_vert MXNDATA * Nw\I?e@`\I?S^Ž\I?\I?S^Ž\I?˽\I?\I?˽\I?`\I?\I??\I?\I??ѽ\I?\I?`\I??ѽ}|>e˽}|>`}|>S !}|>Ҟ}|>S !}|>}|>S !}|>`}|>}|>?}|>}|>?ѽ}|>}|>`}|>?ѽ}|>e˽}|>`}|>^ќ}|>^ќ}|>`}|>}|>?}|>}|>?ѽ}|>}|>`}|>?ѽ\I?e@`\I?^ͽ\I?\I?^ͽ\I?`\I?\I??\I?\I??ѽ\I?\I?`\I??ѽ}?3?s[j~:?s nx9?sz\I?sU}?3?s[x9?szB?s`6!A?s`\I?s`)˽6!A?s`x9?szj~:?s n\I?s`)˽j~:?s n}?3?s[\I?s`)˽6!A?s`j~:?s n\I?sUB?s`\I?s`)˽6!A?s`B?s`\I?sU\I?sUx9?sz6!A?s` 2?s }?3?s[\I?sU+?t` 2?s \I?sU}?3?s[ 2?s +?t`򳽕#?t`*?t`\I?sU+?t`*?t`#?t`*?t`+?t`\I?sU.5?t`h"?t`\I?sU#?t`h"?t`.5?t`h"?t`#?t`\I?sU۰?tQ?tռ.5?t`۰?t.5?t`\I?sU.5?t`Q?tռ۰?t\I?sUw?t` ۰?t۰?tw?t` \I?sU?t @z^ ?t@n ?t\I?sUn ?tz^ ?t@?t @n ?t\I?sU\I?sUz^ ?t@۰?t۰?tz^ ?t@?t @h>u?t@$\I?sU?t @?t@$h>u?t@$?t @\I?sU" >u?>u h>u\I?sUh>u>u \I?sU" >u?h>u\I?sU>u " >u? >u? >u`w>u >u?w>u\I?sU\I?sUw>uh>uh>uw>u >u?w>u >u` >u?\I?sUs>u ջ>u\I?sUջ>us>u \I?sUջ>u >u?\I?sUq>u w: >u : >u q>u w\I?sU\I?sU: >u ջ>u}|>v`)˽_>uQ\I?sU\I?sU_>uQ: >u : >u _>uQ}|>v`)˽\I?sU>v?}|>v`)˽}|>vU>v?\I?sU}|>vU}|>v`)˽>v?}|>v`)˽\I?s`)˽: >u : >u \I?s`)˽ջ>uջ>u\I?s`)˽ >u? >u?\I?s`)˽h>uh>u\I?s`)˽?t @?t @\I?s`)˽۰?t۰?t\I?s`)˽.5?t`.5?t`\I?s`)˽#?t`򳽕#?t`\I?s`)˽+?t`򳽪+?t`\I?s`)˽}?3?s[\I?sU}?3?s[\I?s`)˽ 2?s }?3?s[\I?sU+?t` 2?s \I?sU}?3?s[ 2?s +?t`\I?s`)˽*?t`\I?sU+?t`*?t`\I?s`)˽*?t`+?t`\I?sU.5?t`h"?t`\I?sU\I?s`)˽h"?t`.5?t`h"?t`\I?s`)˽\I?sU\I?s`)˽.5?t`\I?sU\I?sUw?t` \I?s`)˽\I?s`)˽w?t` \I?sU?t @z^ ?t@n ?t\I?sUn ?tz^ ?t@?t @n ?t\I?sU\I?sUz^ ?t@\I?s`)˽\I?s`)˽z^ ?t@?t @\I?s`)˽?t @\I?sU" >u?>u \I?s`)˽\I?sU\I?s`)˽>u \I?sU" >u?\I?s`)˽\I?sU>u " >u?}|>v`)˽w>u\I?sU\I?sUw>u\I?s`)˽\I?s`)˽w>u}|>v`)˽\I?sUs>u }|>v`)˽\I?sU}|>v`)˽s>u }|>vU}|>v`)˽\I?sU+?t`\I?s`)˽}?3?s[ 2?s }|>v`)˽\I?sU}|>v`)˽ 2?s \I?sU}|>v`)˽h"?t`\I?sUh"?t`}|>v`)˽\I?sU?t @}|>v`)˽n ?t\I?sUn ?t}|>v`)˽?t @n ?t\I?sU}|>v`)˽?t @\I?sU" >u?>u }|>v`)˽\I?sU}|>v`)˽>u \I?sU" >u?}|>v`)˽\I?sU>u " >u?}|>vU}|>v`)˽\I?sUQ>S">S@\I?S !Q>S"\I?S !>S@\I?S !Q>S">SεQ>S" ?S`\I?S !\I?S ! ?S`?SQ>S"?S ?S`Q>S"EA?S\I?S !\I?S !EA?SQ>S"Q>S"\I?S !?SQ>S"\I?S !>Sε\I?2Ľ\I?̽}|>2Ľ\I?̽}|>̽}|>2Ľ\I?@\I?@L}|>@\I?@L}|>@L}|>@\I?$'@L\I?Ҟ}|>''@L\I?Ҟ}|>Ҟ}|>''@L\I?˽\I?$'2Ľ}|>˽\I?$'2Ľ}|>''2Ľ}|>˽\I?S^Ž\I?˽}|>S^Ž\I?˽}|>˽}|>S^Ž\I?Ҟ\I?S !}|>Ҟ\I?S !}|>S !}|>Ҟ\I?̽\I?U̽}|>̽\I?U̽}|>U̽}|>̽\I?U@\I?@}|>U@\I?@}|>@}|>U@\I?$'2Ľ\I?2Ľ}|>''2Ľ\I?2Ľ}|>2Ľ}|>''2Ľ\I?@L\I?$'@L}|>@L\I?$'@L}|>''@L}|>@L\I?U̽\I?s`)˽}|>U̽\I?s`)˽}|>v`)˽}|>U̽\I?sU\I?U@}|>vU\I?U@}|>U@}|>vU\I?Ҟ\I?S !\I?$'@L\I?S !\I?S^Ž\I?$'@L\I?S^Ž\I?˽\I?$'@L\I?˽\I?$'2Ľ\I?$'@L\I?$'@L\I?$'2Ľ\I?@L\I?$'2Ľ\I?2Ľ\I?@L\I?sU\I?U@\I?s`)˽\I?U@\I?@\I?s`)˽\I?s`)˽\I?@\I?U̽\I?@\I?@L\I?U̽\I?U̽\I?@L\I?̽\I?@L\I?2Ľ\I?̽}|>S^Ž}|>˽}|>S !}|>˽}|>''2Ľ}|>S !}|>Ҟ}|>S !}|>''@L}|>S !}|>''2Ľ}|>''@L}|>''@L}|>''2Ľ}|>@L}|>''2Ľ}|>2Ľ}|>@L}|>vU}|>U@}|>v`)˽}|>U@}|>@}|>v`)˽}|>v`)˽}|>@}|>U̽}|>@}|>@L}|>U̽}|>U̽}|>@L}|>̽}|>@L}|>2Ľ}|>̽Q>S]=X>S =׍>S ]=׍>S ]=K^>S!=Q>S]=Q>S]=K^>S!=\I?S=Q>S]=\I?S=>S`A=׍>S ]=X>S =K^>S!=\I?S=K^>S!=>S`A=K^>S!=X>S =>S`A=m=>SQ=\I?S=Q>S]=s>S`=q >S ʹ=m=>SQ=\I?S=m=>SQ=q >S ʹ=\I?S=q >S ʹ=s>S=s>S=s>S`==1>S ]==1>S ]=s>S`=m=>SQ=~ ?Sd= ?S=?S@=o?SȽ=?S@= ?S==1>S ]=p ?S =~ ?Sd==1>S ]=~ ?Sd=\I?S=?S=o?SȽ==1>S ]=\I?S=?S@=?S==1>S ]= ?S=p ?S =\I?S=~ ?Sd=?S@==1>S ]=o?SȽ= ?S=@?S`d=C?S౵=\I?S=\I?S]=C?S౵=3A?S =3A?S =@?S`d==1>S ]==1>S ]=@?S`d=\I?S=\I?S]=3A?S ==1>S ]=\I?S]=\I?S=C?S౵==1>S ]=\I?S=?S==1>S ]=\I?S=s>S=Q>S`\=>Sf=\I?S]=Q>S`\=\I?S]=>Sf=\I?S]=Q>S`\=>S`=Q>S`\= ?Sε=\I?S]=\I?S]= ?Sε=?S =Q>S`\=?S = ?Sε=Q>S`\=EA?S`ε=\I?S]=\I?S]=EA?S`ε=Q>S`\=Q>S`\=\I?S]=?S =Q>S`\=\I?S]=>S`=\I?s`)=}?3?s@#=\I?sU= 2?s࿵=}?3?s@#=\I?s`)=+?t= 2?s࿵=\I?s`)=}?3?s@#= 2?s࿵=+?t=\I?sU=*?tѰ=\I?s`)=+?t=*?tѰ=\I?sU=*?tѰ=+?t=\I?s`)=.5?t=h"?tѰ=\I?s`)=\I?sU=h"?tѰ=.5?t=h"?tѰ=\I?sU=\I?s`)=\I?sU=.5?t=\I?s`)=\I?s`)=w?tr=\I?sU=\I?sU=w?tr=\I?s`)=?t>=z^ ?tz=n ?t n=\I?s`)=n ?t n=z^ ?tz=?t>=n ?t n=\I?s`)=\I?s`)=z^ ?tz=\I?sU=\I?sU=z^ ?tz=?t>=\I?sU=?t>=\I?s`)=" >u`?=>uռ=\I?sU=\I?s`)=\I?sU=>uռ=\I?s`)=" >u`?=\I?sU=\I?s`)=>uռ=" >u`?=}|>vU=w>u `=\I?s`)=\I?s`)=w>u `=\I?sU=\I?sU=w>u `=}|>vU=\I?s`)=s>uռ=}|>vU=\I?s`)=}|>vU=s>uռ=}|>v`)=}|>vU=\I?s`)=+?t=\I?sU=}?3?s@#=\I? L=\I? =}|> L=\I? =}|> =}|> L=\I?=\I?2=}|>=\I?2=}|>2=}|>=\I?$'2=\I?`=}|>''2=\I?`=}|>`=}|>''2=\I?Ҟ=\I?$' L=}|>Ҟ=\I?$' L=}|>'' L=}|>Ҟ=\I?S =\I?Ҟ=}|>S =\I?Ҟ=}|>Ҟ=}|>S =\I?`=\I?S]=}|>`=\I?S]=}|>S]=}|>`=\I? =\I?U =}|> =\I?U =}|>U =}|> =\I?U=\I?=}|>U=\I?=}|>=}|>U=\I?$' L=\I? L=}|>'' L=\I? L=}|> L=}|>'' L=\I?2=\I?$'2=}|>2=\I?$'2=}|>''2=}|>2=\I?U =\I?sU=}|>U =\I?sU=}|>vU=}|>U =\I?s`)=\I?U=}|>v`)=\I?U=}|>U=}|>v`)=\I?`=\I?S]=\I?$'2=\I?S]=\I?S =\I?$'2=\I?S =\I?Ҟ=\I?$'2=\I?Ҟ=\I?$' L=\I?$'2=\I?$'2=\I?$' L=\I?2=\I?$' L=\I? L=\I?2=\I?s`)=\I?U=\I?sU=\I?U=\I?=\I?sU=\I?sU=\I?=\I?U =\I?=\I?2=\I?U =\I?U =\I?2=\I? =\I?2=\I? L=\I? =}|>S =}|>Ҟ=}|>S]=}|>Ҟ=}|>'' L=}|>S]=}|>`=}|>S]=}|>''2=}|>S]=}|>'' L=}|>''2=}|>''2=}|>'' L=}|>2=}|>'' L=}|> L=}|>2=}|>v`)=}|>U=}|>vU=}|>U=}|>=}|>vU=}|>vU=}|>=}|>U =}|>=}|>2=}|>U =}|>U =}|>2=}|> =}|>2=}|> L=}|> =DATA MDATA I..edge_verts @LN2.select_edge NؠNDATA @Lu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA Nb%DATAh \0 .corner_vert ON .corner_edge OXN) ONDATA OL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA OL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA Osq q1|2|ql4lmlf^SݢSSx-S{A`&y^ިਪD8߫Ø4#H` ՜߫ 竪;H`,`F qq`<J`aW LF@``ҟ'``M૪@`I`+AЫ|w```K᫪ g`~[`<`H `Y`+E+'I+QGQ++S؜S*SO b7@SjJC@bMS۝?SSTnSLSy^ިਪ\`zSO#H` ՜ߐ ⫪ۻSdԐT`sSdثj`8<J`bSz⫪(`Ab`SM૪HT@` SS+=Z+Y`HQ5+<SAH`c++߫KAH`;C+X `+X<J`Hp'`ɟ#D+`HV`+XM૪Q5+<੪7dELd૪}dd#`?C૪d{EEhEWt-{ ko "{ bXo n a [ T "n "m7"!4`.N7=N/u-^/l"-2r)@s)aWXUTX}.K)_ VK)f&Nt^'kN!gZg}bp&Vΰ-Zhz$#hn(+$(2r#2-}9<Մ+\<1`>ת++ ?-+$ױ=_-+bab9=FձA}J{}q{xq1|{q1|7~{{ 7~`O|57~x~7O|3}}3}M}x[s۫f~MϫTkuI૪dO2髪0#888178L૪~஗#`?C{88h8WLy^ިਪq\ zO#H ՜q ⫪ۻdqT sqd 8<J`bqz⫪(q Aqb qN૪T@ U=ZUY 䩩5U<t-{ ko "{ bXo n a [ T "n "m7"!4`-NΪ70N/u-^/l"-MS)k@S)`VXUTX J)_ c VJ)f&Nt^'kN!gZg}bp&Vΰ-Zhz$#hn(+$(2r#2-}9f9Մ+\f9h`=++ >-+$Y:_-+bab9Y:=ձA}{}Wóy{xҴy0~{q0~7~{{ 7~`O|57~x~7O|3}~(3}M}~~N}8{M}aO|l{7{O|~O|Rx~Uؘ~z?~iv~?~|TvȩJv}2v|}E}s|;@{n|~3@{x4~HB4~Һ}մHHǺ}FŵyVͺ}R@{Kyy̬@{T~h@{]~T~aDATA`I2.select_poly M$ءN2sharp_faceN$NDATA, M$DATA,N$DATA >/ !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME 1HME0.029P?-88h8 |MI I @M]0 >rȾ>!=(>A=薩DATAP?- X DATAI0position ON2 .select_vert pNآNDATA Ow8鯭>Ǿ@r>>wǾq>_>wǾpi>_>wǾpi>>wǾq>>ǾPVh>_>wǾpi>7>Ǿj>鯭>Ǿ@r>7>Ǿj>i>žl>鯭>Ǿ@r>鯭>Ǿ@r>i>žl>*>ž t>i>žl>߄>cľm>*>ž t>*>ž t>߄>cľm>.>cľPu>߄>cľm>>¾m>.>cľPu>.>cľPu>>¾m>>¾Pu>>¾m>Nl>nl>>¾Pu>>¾Pu>Nl>nl>>n0t>Nl>nl>d;> :Pj>>n0t>>n0t>d;> :Pj>> :r>d;> :Pj>D>?bh>> :r>> :r>D>?bh>p>?bPcp>D>?bh>6>Pe>p>?bPcp>p>?bPcp>6>Pe>">m>6>Pe>Y>b>">m>">m>Y>b>Ѭ>0j>Y>b>i>6_>Ѭ>0j>Ѭ>0j>i>6_>>6Pg>i>6_>pӾ>4p]>>6Pg>>6Pg>pӾ>4p]>K>4e>pӾ>4p]>D> ¾N\>K>4e>K>4e>D> ¾N\>$> ¾p/d>D> ¾N\>$>þ[>$> ¾p/d>$> ¾p/d>$>þ[>t>þc>$>þ[>>ž?\>t>þc>t>þc>>ž?\>">žd>>ž?\>Eо>;`ƾ]>">žd>">žd>Eо>;`ƾ]>H>;`ƾ@e>Eо>;`ƾ]> >:jǾ _>H>;`ƾ@e>H>;`ƾ@e> >:jǾ _>h>:jǾg> >:jǾ _>T> Ⱦb>h>:jǾg>h>:jǾg>T> Ⱦb>̬> Ⱦ0`j>T> Ⱦb>>.Ⱦse>̬> Ⱦ0`j>̬> Ⱦ0`j>>.Ⱦse>c>.ȾTm>>.Ⱦse>>ǾPVh>c>.ȾTm>c>.ȾTm>>ǾPVh>k>Ǿ6p>>ǾPVh>>wǾq>k>Ǿ6p>^?7?ҾY>^?7?U9Y>& 9?ҾP>^?7?U9Y>& 9?U9P>& 9?ҾP>|d9?Ҿ->^?7?ҾY>BE;?Ҿ,>^?7?ҾY>& 9?ҾP>BE;?Ҿ,>|d9?U9->|d9?Ҿ->BE;?U9,>|d9?Ҿ->BE;?Ҿ,>BE;?U9,>^?7?U9Y>|d9?U9->& 9?U9P>|d9?U9->BE;?U9,>& 9?U9P>|d9?Ҿ->|d9?U9->^?7?ҾY>|d9?U9->^?7?U9Y>^?7?ҾY>BE;?U9,>BE;?Ҿ,>& 9?U9P>BE;?Ҿ,>& 9?ҾP>& 9?U9P> >Ⱦξ >3ɾ(.ξ.>3ɾ(.ξ.>3ɾ(.ξ >3ɾ(.ξ.>ogɾ;.>3ɾ(.ξ.>Ⱦξ >Ⱦξ.>Ⱦξ.>wȾHkо >Ⱦξ >Ⱦξ.>wȾHkо >wȾHkо.>wȾHkо.>h!ɾѾ >wȾHkо >wȾHkо.>h!ɾѾ >h!ɾѾ.>h!ɾѾ.>Zɾh"Ӿ >h!ɾѾ >h!ɾѾ.>Zɾh"Ӿ >Zɾh"Ӿ.>Zɾh"Ӿ.>3˾ Ծ >Zɾh"Ӿ >Zɾh"Ӿ.>3˾ Ծ >3˾ Ծ.>3˾ Ծ.>V̾HԾ >3˾ Ծ >3˾ Ծ.>V̾HԾ >V̾HԾ.>V̾HԾ.>)ξhyԾ >V̾HԾ >V̾HԾ.>)ξhyԾ >)ξhyԾ.>)ξhyԾ.><ϾӾ >)ξhyԾ >)ξhyԾ.><ϾӾ ><ϾӾ.><ϾӾ.>о@Ҿ ><ϾӾ ><ϾӾ.>о@Ҿ >о@Ҿ.>о@Ҿ.>ѾѾ >о@Ҿ >о@Ҿ.>ѾѾ >ѾѾ.>ѾѾ.>9Ѿ;о >ѾѾ >ѾѾ.>9Ѿ;о >9Ѿ;о.>9Ѿ;о.>QѾXξ >9Ѿ;о >9Ѿ;о.>QѾXξ >QѾXξ.>QѾXξ.>'ѾX; >QѾXξ >QѾXξ.>'ѾX; >'ѾX;.>'ѾX;.>hо@̾ >'ѾX; >'ѾX;.>hо@̾ >hо@̾.>hо@̾.>5ξȎ˾ >hо@̾ >hо@̾.>5ξȎ˾ >5ξȎ˾.>5ξȎ˾.>7;V˾ >5ξȎ˾ >5ξȎ˾.>7;V˾ >7;V˾.>7;V˾.>M˾P˾ >7;V˾ >7;V˾.>M˾P˾ >M˾P˾.>M˾P˾.>hʾ^̾ >M˾P˾ >M˾P˾.>hʾ^̾ >hʾ^̾.>hʾ^̾.>ogɾ; >hʾ^̾ >hʾ^̾.>ogɾ; >ogɾ;.>ogɾ; >3ɾ(.ξ >ogɾ;>ž>ܾž>ž>ܾž>ܾž>ž>(Cھ>ž>(Cھ>ž>ž>(Cھ>ܾ(Cھ>(Cھ>ܾ(Cھ>(Cھ>(Cھ>ܾ(Cھ>ܾž>ܾ(Cھ>ܾž>ܾ(Cھ>ܾ(Cھ>ܾž>(Cھ>ܾ(Cھ>ž>ܾ(Cھ>ܾž>ž>ܾ(Cھ>(Cھ>ܾž>(Cھ>ž>ܾžDATA8 pNDATA I..edge_verts \N2.select_edgeqNXNDATA \u8    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/001242334575667DATA8qNDATAh]0 .corner_vert C/N .corner_edge H/أN) M/NDATA C/L8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01234567DATA H/L8   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/342675DATA M/s8  '"*6g 5m[5[ԭ!#0 . ֭FB' / / ' Qح.h0 0 ܭ^ / / ^ [ ߭6ޮ1 0 [㭊ĺiG1 1 ia 譵@9"2 2 9"R p%j.2 3 j. 034 4 «/e4 4 {/#27 7 n! «7 7 ]\$ú] 9 z9 K] [# 5ޮ; l: 8$+« < \< $ͽ&6;> L> ;uz{X&T  3X& '湹 ;΀x*c<)c'+c'x)c<vuuMuMvu뢀x+c<)c'+c'~x)c<vuuMuMvu|̘ C ʘ |̘ C|̘ C ʘ |̘ C  '!+6g 5m[6[խ!$/ / ֭HA& 0 0 & P٭+j. .  ۭ] 1 1 ] Z߭4ޮ0 0 \㭊ĺhF1 1 h`譵@9"2 2 9"S!p%j.3 3 j. 044 3 !/e5 5 |/!26 6 m" 7 7 ]\"ĺ^ 9 z9 K] [% 6ޮ; l; 9$+ < \< $ͽ&6:? L> :uy|Y&T  2Y&¡'幹 <x*c<*c'*c'x*c<vuuMuMvux*c<*c'*c'x*c<vuuMuMvu|̘ C ʘ |̘ C|̘ C ʘ |̘ CDATAx@M2.select_polyMXNDATAhMDATA |M !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258ME 1HME0.030?- MI I ` M_0 KM즾D=VQ`V=Q`V=/PtPQ>Q`|=/PtPQ> Pf >Q`|=Q`|= Pf >Qۥk= Pf >PF@ >Qۥk=Qۥk=PF@ >QgB`=PF@ >P6H0t>QgB`=P6H0t>P8=QgB`=QgB`=P8=Q7=P8=PY'=Q7=PY'=HP玾9=Q7=Q7=HP玾9=KQ=HP玾9=Pۍ=KQ=Pۍ=eP`=KQ=KQ=eP`=Q =eP`=P'K=Q =Q =P'K=Q3L =P'K=PRsa=Q3L =PRsa=0P2=Q3L =Q3L =0P2=Qw`ʙ=0P2=P@\=Qw`ʙ=Qw`ʙ=P@\= Q=P@\=WP@= Q= Q=WP@=ϥQJ=WP@=P@ +=ϥQJ=ϥQJ=P@ +=Q@Κ=P)ŶBE=QJ =Q@Κ=P@ +=P)ŶBE=Q@Κ=fPU=FQ`5=QJ =P)ŶBE=QPL#b=QJ =QPL#b=fPU=QJ =fPU=P߂=FQ`5=FQ`5=P߂=]Qԭ#=P'K=eP`=PL=fPU=QPL#b=hPUl=/PtPQ>_P =`L=zPPb>P@ +=WP@=Pk=HP玾9=ˬP@=Pۍ=Pۍ=ˬP@=eP`=HP玾9=PY'=yPv}=PY'=$P@=yPv}=Pʢ >P >PF@ >PF@ >φPj L >Pʢ >Pݴ0>PE >/PtPQ>/PtPQ>P5 >Pݴ0>хPe=P{Ͼ7=P =P =Pp׾=хPe=Pp =P_z=P߂=P߂=fPU=Pp =fPU=̈PE=Pp =P4"=Pu/=P@ +=P@ +=Pk=P4"=ȆPӊ=rPP=WP@=WP@=P@\=ȆPӊ=P@\=P$❾@b =ȆPӊ=P׏`J=Pޑh=PRsa=PRsa=P'K=P׏`J=P'K=PN`E=P׏`J=ˬP@=HP玾9=ЅPX [=ЅPX [=HP玾9=uPOĎ=HP玾9=yPv}=uPOĎ={PB =$P@=P8=$P@=PY'=P8=P6H0t>P=`G>P8=P8=P=`G>{PB =P6H0t>yP>P=`G>PF@ >P >P6H0t>P6H0t>P >yP>Pf >φPj L > Pf >φPj L >PF@ > Pf >/PtPQ>PE > Pf > Pf >PE >Pf >zPPb>P5 >/PtPQ>_P =`L=/Pƺ=zPPb>Pb=qP =_P =`L=_P =`L=qP =/Pƺ=P =P{Ͼ7=Pb=Pb=P{Ͼ7=qP =Px=Pp׾=P߂=Pp׾=P =P߂=P߂=P_z=Px=hPUl=̈PE=fPU=QPL#b=>P蹾U=hPUl=P)ŶBE=NP@=QPL#b=QPL#b=NP@=>P蹾U=P@ +=Pu/=P)ŶBE=P)ŶBE=Pu/=NP@=WP@=rPP=Pk=Pk=rPP=΅P"A=ŅPk@,=P$❾@b =0P2=P$❾@b =P@\=0P2=0P2=cP0==ŅPk@,=PRsa=*PXQ=0P2=0P2=*PXQ=cP0==PRsa=Pޑh=*PXQ=PL=PN`E=P'K=ˬP@=PՌ =eP`=eP`=PՌ =PL=ʺKՌ =PՌ =BK=PՌ =ˬP@=BK=BK=ˬP@=޺Kꑍ`Q=ˬP@=ЅPX [=޺Kꑍ`Q=޺Kꑍ`Q=ЅPX [=K!`=ЅPX [=uPOĎ=K!`=K!`=uPOĎ=LK&tq=uPOĎ=yPv}=LK&tq=LK&tq=yPv}=K0=yPv}=$P@=K0=K0=$P@=LK' g=$P@={PB =LK' g=LK' g={PB =K:D>{PB =P=`G>K:D>K:D>P=`G>fK臛>P=`G>yP>fK臛>fK臛>yP> K >yP>P > K > K >P >KȢp >P >Pʢ >KȢp >KȢp >Pʢ >$KDpM >Pʢ >φPj L >$KDpM >$KDpM >φPj L >޺Klc >φPj L >Pf >޺Klc >Pf >PE >޺Klc >޺Klc >PE >։Kp: >։Kp: >PE >>K,>PE >Pݴ0>>K,>>K,>Pݴ0>K >Pݴ0>P5 >K >K >P5 >Kk>P5 >zPPb>Kk>Kk>zPPb>vK]ĺ`=zPPb>/Pƺ=vK]ĺ`=vK]ĺ`=/Pƺ=Kt =/Pƺ=qP =Kt =Kt =qP =ZKAо@7=qP =P{Ͼ7=ZKAо@7=P{Ͼ7=хPe=ZKAо@7=ZKAо@7=хPe=ڸK=ڸK=хPe=5K =хPe=Pp׾=5K =5K =Pp׾=K= =Pp׾=Px=K= =K= =Px=ʺK2=Px=P_z=ʺK2=ʺK2=P_z=/K=P_z=Pp =/K=/K=Pp =KH=Pp =̈PE=KH=̈PE=hPUl=KH=KH=hPUl=KU@l=KU@l=hPUl=KU=hPUl=>P蹾U=KU=KU=>P蹾U=K9!@@=>P蹾U=NP@=K9!@@=K9!@@=NP@=ZK+0=NP@=Pu/=ZK+0=ZK+0=Pu/=KI8"=Pu/=P4"=KI8"=KI8"=P4"=SK {=P4"=Pk=SK {=SK {=Pk=K$%<=Pk=΅P"A=K$%<=K$%<=΅P"A=KiV@=΅P"A=rPP=KiV@=KiV@=rPP=!K=rPP=ȆPӊ=!K=!K=ȆPӊ=ϺK䝾T =ȆPӊ=P$❾@b =ϺK䝾T =ϺK䝾T =P$❾@b =Km,=P$❾@b =ŅPk@,=Km,=Km,=ŅPk@,=ZK8@j==ŅPk@,=cP0==ZK8@j==ZK8@j==cP0==KX@|Q=cP0==*PXQ=KX@|Q=*PXQ=Pޑh=KX@|Q=KX@|Q=Pޑh=`KYg=`KYg=Pޑh=Kd؏ ?=Pޑh=P׏`J=Kd؏ ?=Kd؏ ?=P׏`J=UKQO3=P׏`J=PN`E=UKQO3=UKQO3=PN`E= KL =PN`E=PL= KL = KL =PL=ʺKՌ =PL=PՌ =ʺKՌ =ʺKՌ =BK= KL =BK=Kl= KL = KL =Kl=UKQO3=UKQO3=Kl=Kd؏ ?=Kd؏ ?=Kl=`KYg=KX@|Q=`KYg=ZK8@j==`KYg=K蚾@+-=ZK8@j==ZK8@j==K蚾@+-=Km,=Km,=K蚾@+-=ϺK䝾T =ϺK䝾T =K蚾@+-=!K=K蚾@+-=Kå=!K=!K=Kå=KiV@=KiV@=Kå=K$%<=K$%<=Kå=SK {=KI8"=SK {=ZK+0=K9!@@=ZK+0=KU=KU@l=KU=KH=KU=K盿 =KH=KH=K盿 =/K=/K=K盿 =ʺK2=ʺK2=K盿 =K= =5K =K= =ڸK=K= =ށKg T=ڸK=ڸK=ށKg T=ZKAо@7=ZKAо@7=ށKg T=Kt =Kt =ށKg T=vK]ĺ`=ށKg T=ށK>vK]ĺ`=vK]ĺ`=ށK>Kk>Kk>ށK>K >K >ށK>>K,>ށK>։Kp: >>K,>։Kp: >݁K, >޺Klc >޺Klc >݁K, >$KDpM >$KDpM >݁K, >KȢp >KȢp >݁K, > K >݁K, >݁KEA> K > K >݁KEA>fK臛>fK臛>݁KEA>K:D>K:D>݁KEA>LK' g=K0=LK' g=LK&tq=LK' g=ہK֎=LK&tq=LK&tq=ہK֎=K!`=K!`=ہK֎=޺Kꑍ`Q=޺Kꑍ`Q=ہK֎=BK=QKE@1=K蚾@+-=QKD=QKD=K蚾@+-=QK@^=QK\P=K= =QKA=QKA=K= =QKn`=QK8߹`/=ށKg T=QK=QK=ށKg T=QK\P=QK\P=ށKg T=K= =QK챾>ށK>QKA=QKA=ށK>QK8߹`/=QK8߹`/=ށK>ށKg T=QK=ہK֎=QK0=QK0=ہK֎=QKiI x=K蚾@+-=`KYg=QK@^=QK@^=`KYg=QKwl=`KYg=Kl=QKwl=QKwl=Kl=QK;x=QKŝЄ>݁KEA>QK\¢ i>݁KEA>݁K, >QK\¢ i>QK\¢ i>݁K, >QK\ >QK;x=Kl=QK`=Kl=BK=QK`=QK`=BK=QK}=QK}=BK=QK=BK=ہK֎=QK=QKz{$=Kå=QKJ@\&=QKJ@\&=Kå=QKE@1=Kå=K蚾@+-=QKE@1=QKg;=SK {=QKL@+=QKL@+=SK {=QKz{$=SK {=Kå=QKz{$=QK\ >݁K, >QK0>݁K, >։Kp: >QK0>QK0>։Kp: >QK챾>QK챾>։Kp: >ށK>ہK֎=LK' g=QKiI x=QKiI x=LK' g=QK95>LK' g=݁KEA>QK95>QK95>݁KEA>QKŝЄ>QK2@q=KU=QKOHS=KU=ZK+0=QKOHS=QKOHS=ZK+0=QKg;=QKg;=ZK+0=SK {=K= =K盿 =QKn`=QKn`=K盿 =QKӼϊ=QKӼϊ=K盿 =QK2@q=K盿 =KU=QK2@q=QK=tL}=QK}=tL}=tL`=QK}=QK}=tL`=QK`=tL`=tL;x=QK`=QK`=tL;x=QK;x=tL;x=tLwl=QK;x=QK;x=tLwl=QKwl=tLwl=tL@^=QKwl=QKwl=tL@^=QK@^=tL@^=tLD=QK@^=QK@^=tLD=QKD=tLD=tLE@1=QKD=QKD=tLE@1=QKE@1=tLE@1=tLJ@\&=QKE@1=QKE@1=tLJ@\&=QKJ@\&=tLJ@\&=tLz{$=QKJ@\&=QKJ@\&=tLz{$=QKz{$=tLz{$=tLL@+=QKz{$=QKz{$=tLL@+=QKL@+=tLL@+=tLg;=QKL@+=QKL@+=tLg;=QKg;=tLg;=tLOHS=QKg;=QKg;=tLOHS=QKOHS=tLOHS=tL2@q=QKOHS=QKOHS=tL2@q=QK2@q=tL2@q=tLӼϊ=QK2@q=QK2@q=tLӼϊ=QKӼϊ=tLӼϊ=tLn`=QKӼϊ=QKӼϊ=tLn`=QKn`=tLn`=tLA=QKn`=QKn`=tLA=QKA=tLA=tL\P=QKA=QKA=tL\P=QK\P=tL\P=tL=QK\P=QK\P=tL=QK=tL=tL8߹`/=QK=QK=tL8߹`/=QK8߹`/=tL8߹`/=tLA=QK8߹`/=QK8߹`/=tLA=QKA=tLA=tL챾>QKA=QKA=tL챾>QK챾>tL챾>tL0>QK챾>QK챾>tL0>QK0>tL0>tL\ >QK0>QK0>tL\ >QK\ >tL\ >tL\¢ i>QK\ >QK\ >tL\¢ i>QK\¢ i>tL\¢ i>tLŝЄ>QK\¢ i>QK\¢ i>tLŝЄ>QKŝЄ>tLŝЄ>tL95>QKŝЄ>QKŝЄ>tL95>QK95>tL95>tLiI x=QK95>QK95>tLiI x=QKiI x=tLiI x=tL0=QKiI x=QKiI x=tL0=QK0=tL0=tL=QK0=QK0=tL=QK=tL=tL}=QK=tL֢ "=tL@^=tL  ǟ=tL@^=tLwl=tL  ǟ=tL  ǟ=tLwl=tL@=tLͭ`=tL\P=tLݴ=tL\P=tLA=tLݴ=tLݴ=tLA=tLI`=tLwl=tL;x=tL@=tL;x=tL`=tL@=tL@=tL`=tLD`'=tL,w`=tLE@1=tL֢ "=tLE@1=tLD=tL֢ "=tL֢ "=tLD=tL@^=tLI=tLz{$=tL,w`=tLz{$=tLJ@\&=tL,w`=tL,w`=tLJ@\&=tLE@1=tL=tL8߹`/=tLͭ`=tL8߹`/=tL=tLͭ`=tLͭ`=tL=tL\P=tL`=tLOHS=tL쪾@=tLOHS=tLg;=tL쪾@=tL쪾@=tLg;=tLI=tLg;=tLL@+=tLI=tLI=tLL@+=tLz{$=tL@=tL0>tLM=tL0>tL챾>tLM=tLM=tL챾>tL=tL챾>tLA=tL=tL=tLA=tL8߹`/=tL`=tL}=tLD`'=tL}=tL=tLD`'=tLD`'=tL=tL `=tL=tL0=tL `=tL `=tL0=tLá=tL+=tL\¢ i>tL@=tL\¢ i>tL\ >tL@=tL@=tL\ >tL0>tLA=tLn`=tLI`=tLn`=tLӼϊ=tLI`=tLI`=tLӼϊ=tL`=tLӼϊ=tL2@q=tL`=tL`=tL2@q=tLOHS=tL0=tLiI x=tLá=tLiI x=tL95>tLá=tLá=tL95>tL+=tL95>tLŝЄ>tL+=tL+=tLŝЄ>tL\¢ i>H@=tLD`'=HD`'=tLD`'=tL `=HD`'=HD`'=tL `=H `=tL `=tLá=H `=H `=tLá=Há=tLá=tL+=Há=Há=tL+=H+=tL+=tL@=H+=H+=tL@=H@=tL@=tLM=H@=H@=tLM=HM=tLM=tL=HM=HM=tL=H=tL=tLͭ`=H=H=tLͭ`=Hͭ`=tLͭ`=tLݴ=Hͭ`=Hͭ`=tLݴ=Hݴ=tLݴ=tLI`=Hݴ=Hݴ=tLI`=HI`=tLI`=tL`=HI`=HI`=tL`=H`=tL`=tL쪾@=H`=H`=tL쪾@=H쪾@=tL쪾@=tLI=H쪾@=H쪾@=tLI=HI=tLI=tL,w`=HI=HI=tL,w`=H,w`=tL,w`=tL֢ "=H,w`=H,w`=tL֢ "=H֢ "=tL֢ "=tL  ǟ=H֢ "=H֢ "=tL  ǟ=H  ǟ=tL  ǟ=tL@=H  ǟ=H  ǟ=tL@=H@=tL@=tLD`'=H@=H أ`=H+=Hl2=H+=H@=Hl2=Hl2=H@=H=H@=HM=H=H=HM=Hwժ X=HM=H=Hwժ X=Hwժ X=H=H3=H=Hͭ`=H3=H3=Hͭ`=H~=H!`͜=H֢ "=H=H֢ "=H  ǟ=H=H=H  ǟ=H j=H  ǟ=H@=H j=H j=H@=H|N \=H@=HD`'=H|N \=H|N \=HD`'=H< ߽=HD`'=H `=H< ߽=H< ߽=H `=H أ`=H `=Há=H أ`=H أ`=Há=H+=Hͭ`=Hݴ=H~=Hݴ=HI`=H~=H~=HI`=Hz=HI`=H`=Hz=Hz=H`=HH=H`=H쪾@=HH=HH=H쪾@=Hԛ=H쪾@=HI=Hԛ=Hԛ=HI=H!`͜=HI=H,w`=H!`͜=H!`͜=H,w`=H֢ "=HAhR=H< ߽=H< ߽=H< ߽=H أ`=H< ߽=H< ߽=H أ`=H أ`=H أ`=Hl2=H أ`=H أ`=Hl2=Hl2=Hl2=H=Hl2=Hl2=H=H=H=Hwժ X=H=H=Hwժ X=Hwժ X=Hwժ X=H3=Hwժ X=Hwժ X=H3=H3=H3=H3=H㺫@=H3=Hz=H㺫@=Hz=HH=H㺫@=H㺫@=HH=HH=HH=Hԛ=HH=HH=Hԛ=Hԛ=Hԛ=H!`͜=Hԛ=Hԛ=H!`͜=H!`͜=H!`͜=H=H!`͜=H!`͜=H=H=H=H j=H=H=H j=H j=H j=HAhR=H j=H@- =H=H =H=Hwժ X=H =H =Hwժ X=He౶=Hwժ X=H3=He౶=He౶=H3=H@=H3=H~=H@=H@=H~=H'"ҫ=H~=H㺫@=H'"ҫ=H'"ҫ=H㺫@=H @;=H㺫@=HH=H @;=HH=Hԛ=H @;=H @;=Hԛ=HM=Hԛ=H!`͜=HM=HM=H!`͜=HR`J=H!`͜=H=HR`J=HR`J=H=Hm =H=H j=Hm =Hm =H j=H1 <=H j=HAhR=H1 <=H1 <=HAhR=HӰ@=HAhR=H< ߽=HӰ@=HӰ@=H< ߽=HKȥ=H< ߽=H أ`=HKȥ=HKȥ=H أ`=H@- =H أ`=Hl2=H@- =H@- =Hl2=H=I`8=H'"ҫ=I`ڨ=H'"ҫ=H @;=I`ڨ=I`ڨ=H @;=I=H @;=HM=I=I=HM=IVlة=HM=HR`J=IVlة=IVlة=HR`J=Iה=HR`J=Hm =Iה=Iה=Hm =I8] +=Hm =H1 <=I8] +=I8] +=H1 <=I^Ԥ!=H1 <=HӰ@=I^Ԥ!=I^Ԥ!=HӰ@=I^ڥ=HӰ@=HKȥ=I^ڥ=I^ڥ=HKȥ=I) ^=HKȥ=H@- =I) ^=I) ^=H@- =If=H@- =H =If=If=H =I#>i=H =He౶=I#>i=I#>i=He౶=Iu.=He౶=H@=Iu.=Iu.=H@=I`8=H@=H'"ҫ=I`8=I^Ԥ!=|N8] +=I8] +=|N8] +=|Nה=I8] +=I8] +=|Nה=Iה=|Nה=|NVlة=Iה=Iה=|NVlة=IVlة=|NVlة=|N=IVlة=IVlة=|N=I=|N=|N`ڨ=I=I=|N`ڨ=I`ڨ=|N`ڨ=|N`8=I`ڨ=I`ڨ=|N`8=I`8=|N`8=|Nu.=I`8=I`8=|Nu.=Iu.=|Nu.=|N#>i=Iu.=Iu.=|N#>i=I#>i=|N#>i=|Nf=I#>i=I#>i=|Nf=If=|Nf=|N) ^=If=If=|N) ^=I) ^=|N) ^=|N^ڥ=I) ^=I) ^=|N^ڥ=I^ڥ=|N^ڥ=|N^Ԥ!=I^ڥ=I^ڥ=|N^Ԥ!=I^Ԥ!=|N^Ԥ!=|N8] +=I^Ԥ!=|Nה=Nm =|NVlة=Nm =NR`J=|NVlة=|NVlة=NR`J=|N=NR`J=NM=|N=|N=NM=|N`ڨ=NM=N @;=|N`ڨ=|N`ڨ=N @;=|N`8=N @;=N'"ҫ=|N`8=|N`8=N'"ҫ=|Nu.=N'"ҫ=N@=|Nu.=|Nu.=N@=|N#>i=N@=Ne౶=|N#>i=|N#>i=Ne౶=|Nf=Ne౶=N =|Nf=|Nf=N =|N) ^=N =N@- =|N) ^=|N) ^=N@- =|N^ڥ=N@- =NKȥ=|N^ڥ=|N^ڥ=NKȥ=|N^Ԥ!=NKȥ=NӰ@=|N^Ԥ!=|N^Ԥ!=NӰ@=|N8] +=NӰ@=N1 <=|N8] +=|N8] +=N1 <=|Nה=N1 <=Nm =|Nה=NR`J=NUK=NM=NUK=Nꏧܝ=NM=NM=Nꏧܝ=N @;=Nꏧܝ=N`=N @;=N @;=N`=N'"ҫ=N`=NI=N'"ҫ=N'"ҫ=NI=N@=NI=N 0=N@=N@=N 0=Ne౶=N 0=N ;=Ne౶=Ne౶=N ;=N =N ;=N2z=N =N2z=N@=N =N =N@=N@- =N@=NC`}=N@- =N@- =NC`}=NKȥ=NC`}=NsY=NKȥ=NKȥ=NsY=NӰ@=NsY=NBϼ=NӰ@=NӰ@=NBϼ=N1 <=NBϼ=NС )=N1 <=N1 <=NС )=Nm =NС )=N=Nm =Nm =N=NR`J=N=NX z=NR`J=NR`J=NX z=NUK=NBϼ="OС )=NС )="OС )="O=NС )=NС )="O=N="O="OX z=N=N="OX z=NX z="OX z="OUK=NX z=NX z="OUK=NUK="OUK="Oꏧܝ=NUK=NUK="Oꏧܝ=Nꏧܝ="Oꏧܝ="O`=Nꏧܝ=Nꏧܝ="O`=N`="O`="OI=N`=N`="OI=NI="OI="O 0=NI=NI="O 0=N 0="O 0="O ;=N 0=N 0="O ;=N ;="O ;="O2z=N ;=N ;="O2z=N2z="O2z="O@=N2z=N2z="O@=N@="O@="OC`}=N@=N@="OC`}=NC`}="OC`}="OsY=NC`}=NC`}="OsY=NsY="OsY="OBϼ=NsY=NsY="OBϼ=NBϼ="OBϼ="OС )=NBϼ="O`="Oꏧܝ="OsY="Oꏧܝ="OUK="OsY="OI="O`="O 0="O`="OsY="O 0="O 0="OsY="O ;="OsY="OC`}="O ;="O ;="OC`}="O2z="OC`}="O@="O2z="OС )="OBϼ="O="OBϼ="OsY="O="O="OsY="OX z="OsY="OUK="OX z=DATA fDATAI..edge_verts2XN2.select_edge NDATA?2u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~DATA l>DATAh_0 .corner_vert pإN .corner_edge PPN) xPXNDATA pL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA PPL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}DATA xPsl9N9Asl:cmr SlAp+|-% I9  M>FBJ tG? 7 P 5 SSPA'Y`BjT.(]}pგ y3S'*rw7P/<ڻm3U8td{]"|#ltNnu޼rx6O%.muR9X ١G/;$vme00+78,hݠ졂lԖk8v 7:Kvա"Ρꅑ8miv+%c5܆D89)%ynX_ڽu+X"FC[/ţݱe%HQ,ul&QC,ɋEɀʶ~YcsaoմnSz&rÂ~в_ɲ!}YZ Ͷ.WK̯g$j^nj$ ̩U|[YBWnE̜B`pQwYL]kR Pvtn .JJx~ʯH5HRܺSyp yeľ~g\ʳPΖ˴CIɌ1->y111p=271@>O.o-TC?G8Y0Pҕ?P/5g;57:fȟ:ɨ540٬,dBt319>h0m~-ByI6)s)e1%*ϸ?qܖDл-H-<ޑ-@?A/ڞ+181e.-wBD:,j/"P8׶X< <745)ޛ5:};"4ۗ4e: ܬ?n3\."޲.?-iAa1,63f=R3>9D4D2/=? 1Z-GBk=263x1G=1|4:;>VB' 01,n/r?@/S޺2mٟ; H?ĸ1i-?/BK5+M+d.OAM._2[:d2$C7V6KJ931,"?9Cl)+޿(5HyS*z1+~=>۸R3_XB0ٝ- 9W7188~!14>6A1Jt?1ޚ8:.87HB1/s֩'@XIH6L1ɣ,A?(`/.WHɼ)(*-~<-*ڐ>+AGAe1tڷ'9Ri/&FGu%PڵI%lzONV'?ɧk/x&Hɦ%;725p d؟3`.02M<.Y I86̤cQ̿C)ڣh@˧.%H%_E= 0z݂0I &r ?xݩ29KΏ"}@I9-`t%Hc$RڊL,;DOHL'>ag/Ɂ&F%-Pi~3L "'LڔK{,@P-?.%GO%pO[50Ihd!PSu&@ɧx.%%I%u<07ؠKm+Ec5;Oܾ (?i/Ƀ&H%y;ռ1[ %H3X1?$Y#Þ=L=j3!f |Z*V#\C`xN'ox~z/MMz:_z!bx7^T^pbxGqx~z/jG~jGğze^z!z/&^+&^Pz` z!`x7_U_q`xEpx~z/~D`~Dz[6z!ax7[&[LaxDpx~z/+D\+Dz] z!ex7i]"i]IexM/tx~z/MMz`z!z/Z`YZ`uz`z!`x7j`Wk`s`x_ox~z/_Q_nzCz!cx7CQCbx] rx~z/A]!A]HzM.z!z/-M-Mz^ z!`x7^S^p`xHpx~z/{G{Gşz[9z!ax7[)[Nax Hqx~z/GGşz_z!z/[_5[_Xz!_z!ax7^R^oaxFpx~z/FpFz[7z!`x7['[L`xeFpx~z/EnEz ^z!dx7]$]Jcxi`sx~z/`Q `nzt@Dz!z/?+?z]z!`x7\Gc/2{8L90d: Je~\G]Ʌ@"W!s}paAeC_Dπ6~sTׄH0B@၃1#6C]*4Yw.G,fZP\Ђ0A#҉YQ5Pv~](=,=j,^n ~zd=n҃/uxHp| pHiFܯi= ;j偛p$$p|S]pHp"" p|P pHp^^p|` pHiFppi= j偝pÞ쯝p| pHpϯp|!MpHiFDDi=xj停pSSp|S pHpaap|j pHiE||i= j做pò寚p| )pHpǯp|5:pHp'p|P pHiF^^i=X j停pggp|w pHprf rf%^foG^f4֔_f-f*a.fCȗ.fhe:we ˒e~eki#e^;rfrfhf@hf(ifBfYzAfCBfBee)ʘeٝee`eRm0Rmrf"|emRmwofnfÕofnRf@ Rf=ݕRffӮkf;feeeـmB(mrfʪ{{}|y}6=}}}7}|Q}HJ|}||VI|{i|`@|}{{^?||a|a+||||V0||N|b+yߥ|~V5{ y'uzv{f|zzZz|zxGz9|{[|a%||{{_%||F|c:}||W:}|S}HH|}||VM||i|`N|z||VM|}s|h{f|(odP}dd7}6}dÁd9\ȁצ9Ȉ5:kˈYTdΕwYoiYFmFdm׾md|d-d||dP}db3}6}bÁb'Q\ȁצ'}ѩt5’уź"˾(·hvfhN鱠!ѠߪNoN,9oo9.dVB}=Gԋ>W=V?>ZVB}?/Ԍ>W?B$>>ZbB=Fԗ>V>U1>>[rB=EԤ>V=U >>[]B~=Gԑ>V=Uߐ?]>ZcB#@ԗ>V%@>Χ>ZHB{=|>X==~>YVB}=Hԋ>W=W,?>[cB?0ԗ>V?B1>>[eB=EԘ>V=U>>[_B~=Gԓ>V=U>>ZcB~=Fԗ>V=V >>Yi ii  i i ii  i  i i i i i  ii  i i i i i  i i i i XB| =Zԍ>V>YKB{u>>ԁ>WR>NH=^>ZpB=Xԣ>U0=df=_>[VB|+=Yԋ>V=dB=^>Z[B} =Yԏ>V=d?=\>[YB~=ZԎ>W =e1=Y>YdB~<[ԙ>U>ZXB}f>>Ԍ>V^>NW=_>[cB=Xԗ>V0=de=_>[VB}+=Yԋ>V=d@=]>Y[B} =Yԏ>V=dB=\>[YB~=ZԎ>W =e1=Y>YG(IZ&(߇(ZZL(nY\ (m(\\j(Lja(k(bbk(}lk(Ջ5(7lFl5({.5('c{i{''j1V1(IG(IZ&(߇(ZZL(nY\ (m(\\j(Lja(k(bbk(}lk(Ջ5(6lFl5({.4('c{h{''j1V1(IXS4Y$s!w@bEX# EXPblY>scvjsX XMjPZopk}yo;N NoxUYrZp{r#WA WVrUYrr{vW@ WVvgYs)w@}W< WU4Ys!w@uX2 XSu&Y$ssozFiX XMFPZoeHCkN N4UYr!w@bWA WVblUYrcv{W@ WV{gYs{~FiW< WUFYsdHCkX2 A x1S+ sbh%1LhC@ 7 QA 19 a9 $1$Z1j7bj:IjPMhC:NhC:jP:I1jj71b1bz|/DATAx` M2.select_poly ʹNDATA ʹDATA M !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME 1HME0.031?- ͹`I I M`a0 /e>tȾʮ=R<Ψ>A=薩DATA?-w DATA`I0position 4+N2 .select_vertUXNDATAP 4+wk>Ǿ6p>>P Ǿp>;>Ǿ ln>k>Ǿ6p>>wǾq>>P Ǿp>>wǾq>鯭>Ǿ@r>>P Ǿp>>P Ǿp>鯭>Ǿ@r>ʸ>ƾ s>鯭>Ǿ@r>*>ž t>ʸ>ƾ s>ʸ>ƾ s>*>ž t>ۭ>ľ0St>*>ž t>.>cľPu>ۭ>ľ0St>ۭ>ľ0St>.>cľPu>>fþpt>.>cľPu>>¾Pu>>fþpt>>fþpt>>¾Pu> խ>H¾t>>¾Pu>>n0t> խ>H¾t> խ>H¾t>>n0t>K>W0r>>n0t>> :r>K>W0r>K>W0r>> :r>.p>򿾐_p>> :r>p>?bPcp>.p>򿾐_p>.p>򿾐_p>p>?bPcp>'>…m>p>?bPcp>">m>'>…m>'>…m>">m>Oܬ>0j>">m>Ѭ>0j>Oܬ>0j>Oܬ>0j>Ѭ>0j>c>!P^h>Ѭ>0j>>6Pg>c>!P^h>c>!P^h>>6Pg>^>Qf>>6Pg>K>4e>^>Qf>^>Qf>K>4e>;>*[¾0 e>K>4e>$> ¾p/d>;>*[¾0 e>;>*[¾0 e>$> ¾p/d>1>Bþd>$> ¾p/d>t>þc>1>Bþd>1>Bþd>t>þc>^B>'žGe>t>þc>">žd>^B>'žGe>^B>'žGe>">žd>k>Zƾ f>">žd>H>;`ƾ@e>k>Zƾ f>k>Zƾ f>H>;`ƾ@e>:>8Ǿh>H>;`ƾ@e>h>:jǾg>:>8Ǿh>:>8Ǿh>h>:jǾg>u>=Ǿpk>h>:jǾg>̬> Ⱦ0`j>u>=Ǿpk>u>=Ǿpk>̬> Ⱦ0`j>;>Ǿ ln>̬> Ⱦ0`j>c>.ȾTm>;>Ǿ ln>;>Ǿ ln>c>.ȾTm>k>Ǿ6p>֟>Pyp>c>!P^h>>!pm>c>!P^h>^>Qf>>!pm>>!pm>^>Qf>5Y>k>^>Qf>;>*[¾0 e>5Y>k>5Y>k>;>*[¾0 e>P6>*[¾Pj>;>*[¾0 e>1>Bþd>P6>*[¾Pj>P6>*[¾Pj>1>Bþd>,>Bþ5j>1>Bþd>^B>'žGe>,>Bþ5j>,>Bþ5j>^B>'žGe><>'žj>^B>'žGe>k>Zƾ f><>'žj><>'žj>k>Zƾ f>e>Zƾ0Pl>k>Zƾ f>:>8Ǿh>e>Zƾ0Pl>e>Zƾ0Pl>:>8Ǿh>ҡ>8ǾЅn>:>8Ǿh>u>=Ǿpk>ҡ>8ǾЅn>ҡ>8ǾЅn>u>=Ǿpk>>=Ǿp-q>u>=Ǿpk>;>Ǿ ln>>=Ǿp-q>>=Ǿp-q>;>Ǿ ln>5>Ǿ0s>;>Ǿ ln>>P Ǿp>5>Ǿ0s>5>Ǿ0s>>P Ǿp>{>P Ǿv>>P Ǿp>ʸ>ƾ s>{>P Ǿv>{>P Ǿv>ʸ>ƾ s>d>ƾx>ʸ>ƾ s>ۭ>ľ0St>d>ƾx>d>ƾx>ۭ>ľ0St>I֠>ľ0y>ۭ>ľ0St>>fþpt>I֠>ľ0y>I֠>ľ0y>>fþpt>>fþ8z>>fþpt> խ>H¾t>>fþ8z>>fþ8z> խ>H¾t>Ϡ>H¾y> խ>H¾t>K>W0r>Ϡ>H¾y>Ϡ>H¾y>K>W0r>䦠>WPx>K>W0r>.p>򿾐_p>䦠>WPx>䦠>WPx>.p>򿾐_p>j>򿾰u>.p>򿾐_p>'>…m>j>򿾰u>j>򿾰u>'>…m>">…As>'>…m>Oܬ>0j>">…As>">…As>Oܬ>0j>֟>Pyp>Oܬ>0j>c>!P^h>֟>Pyp>Ϡ>H¾y>䦠>WPx>j>򿾰u>I֠>ľ0y>>fþ8z>d>ƾx>>fþ8z>,>Bþ5j>d>ƾx>d>ƾx>,>Bþ5j>{>P Ǿv>,>Bþ5j><>'žj>{>P Ǿv>>fþ8z>Ϡ>H¾y>,>Bþ5j>Ϡ>H¾y>j>򿾰u>,>Bþ5j>,>Bþ5j>j>򿾰u>P6>*[¾Pj>j>򿾰u>">…As>P6>*[¾Pj>P6>*[¾Pj>">…As>5Y>k>">…As>֟>Pyp>5Y>k>5Y>k>֟>Pyp>>!pm>>=Ǿp-q>5>Ǿ0s>ҡ>8ǾЅn>5>Ǿ0s>{>P Ǿv>ҡ>8ǾЅn>ҡ>8ǾЅn>{>P Ǿv>e>Zƾ0Pl>{>P Ǿv><>'žj>e>Zƾ0Pl> >ogɾ; >Eɾh`ξ >KʾX-; >ogɾ; >3ɾ(.ξ >Eɾh`ξ >3ɾ(.ξ >Ⱦξ >Eɾh`ξ >Eɾh`ξ >Ⱦξ >O8ɾϾ >Ⱦξ >wȾHkо >O8ɾϾ >O8ɾϾ >wȾHkо >gɾ,Ѿ >wȾHkо >h!ɾѾ >gɾ,Ѿ >gɾ,Ѿ >h!ɾѾ >ʾpҾ >h!ɾѾ >Zɾh"Ӿ >ʾpҾ >ʾpҾ >Zɾh"Ӿ >˾(fӾ >Zɾh"Ӿ >3˾ Ծ >˾(fӾ >˾(fӾ >3˾ Ծ >l̾Ӿ >3˾ Ծ >V̾HԾ >l̾Ӿ >l̾Ӿ >V̾HԾ >T;Ծ >V̾HԾ >)ξhyԾ >T;Ծ >T;Ծ >)ξhyԾ >3ϾXӾ >)ξhyԾ ><ϾӾ >3ϾXӾ >3ϾXӾ ><ϾӾ >TоҾ ><ϾӾ >о@Ҿ >TоҾ >TоҾ >о@Ҿ >xѾѾ >о@Ҿ >ѾѾ >xѾѾ >xѾѾ >ѾѾ >ngѾ0 о >ѾѾ >9Ѿ;о >ngѾ0 о >ngѾ0 о >9Ѿ;о > 8Ѿ ξ >9Ѿ;о >QѾXξ > 8Ѿ ξ > 8Ѿ ξ >QѾXξ >оt; >QѾXξ >'ѾX; >оt; >оt; >'ѾX; >Ͼ}̾ >'ѾX; >hо@̾ >Ͼ}̾ >Ͼ}̾ >hо@̾ >;3ξh˾ >hо@̾ >5ξȎ˾ >;3ξh˾ >;3ξh˾ >5ξȎ˾ >j̾h˾ >5ξȎ˾ >7;V˾ >j̾h˾ >j̾h˾ >7;V˾ >l˾O̾ >7;V˾ >M˾P˾ >l˾O̾ >l˾O̾ >M˾P˾ >KʾX-; >M˾P˾ >hʾ^̾ >KʾX-; >KʾX-; >hʾ^̾ >ogɾ;=TоҾ >xѾѾ=xѾѾ >xѾѾ >ngѾ0 о=xѾѾ=xѾѾ >ngѾ0 о=ngѾ0 о >ngѾ0 о > 8Ѿ ξ=ngѾ0 о=ngѾ0 о > 8Ѿ ξ= 8Ѿ ξ > 8Ѿ ξ >оt;= 8Ѿ ξ= 8Ѿ ξ >оt;=оt; >оt; >Ͼ}̾=оt;=оt; >Ͼ}̾=Ͼ}̾ >Ͼ}̾ >;3ξh˾=Ͼ}̾=Ͼ}̾ >;3ξh˾=;3ξh˾ >;3ξh˾ >j̾h˾=;3ξh˾=;3ξh˾ >j̾h˾=j̾h˾ >j̾h˾ >l˾O̾=j̾h˾=j̾h˾ >l˾O̾=l˾O̾ >l˾O̾ >KʾX-;=l˾O̾=l˾O̾ >KʾX-;=KʾX-; >KʾX-; >Eɾh`ξ=KʾX-;=KʾX-; >Eɾh`ξ=Eɾh`ξ >Eɾh`ξ >O8ɾϾ=Eɾh`ξ=Eɾh`ξ >O8ɾϾ=O8ɾϾ >O8ɾϾ >gɾ,Ѿ=O8ɾϾ=O8ɾϾ >gɾ,Ѿ=gɾ,Ѿ >gɾ,Ѿ >ʾpҾ=gɾ,Ѿ=gɾ,Ѿ >ʾpҾ=ʾpҾ >ʾpҾ >˾(fӾ=ʾpҾ=ʾpҾ >˾(fӾ=˾(fӾ >˾(fӾ >l̾Ӿ=˾(fӾ=˾(fӾ >l̾Ӿ=l̾Ӿ >l̾Ӿ >T;Ծ=l̾Ӿ=l̾Ӿ >T;Ծ=T;Ծ >T;Ծ >3ϾXӾ=T;Ծ=T;Ծ >3ϾXӾ=3ϾXӾ >3ϾXӾ >TоҾ=3ϾXӾ=3ϾXӾ >TоҾ=TоҾ >TоҾ >xѾѾ=TоҾ=˾(fӾ=l̾Ӿ=T;Ծ=gɾ,Ѿ=ʾpҾ=O8ɾϾ=ʾpҾ=оt;=O8ɾϾ=O8ɾϾ=оt;=Eɾh`ξ=оt;=Ͼ}̾=Eɾh`ξ=ʾpҾ=˾(fӾ=оt;=˾(fӾ=T;Ծ=оt;=оt;=T;Ծ= 8Ѿ ξ=T;Ծ=3ϾXӾ= 8Ѿ ξ= 8Ѿ ξ=3ϾXӾ=ngѾ0 о=3ϾXӾ=TоҾ=ngѾ0 о=ngѾ0 о=TоҾ=xѾѾ=l˾O̾=KʾX-;=j̾h˾=KʾX-;=Eɾh`ξ=j̾h˾=j̾h˾=Eɾh`ξ=;3ξh˾=Eɾh`ξ=Ͼ}̾=;3ξh˾DATAUDATAI..edge_verts PN2.select_edge XاNDATA Pu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          DATA XDATAh`a0 .corner_vert N .corner_edge XN) ȥNDATAp L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATAp L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}     DATAp ȥsi||s{k|؉~g|x~ 3~9||4~¢|4~p};|5@|}Kå|~}}|2D|}wĨ|T};}"|H|=}Ū|}`}|kM|D}Ǯ|}}z|.S|}hȳ|Y}}_|"Z|}ɷ|}}o|b|}s|g}}|hm|}|ߜ}}|z|X}|N}}w||}|}}||@}I|}}W||}e|s}ۿ}||W}R|ʞ}۹}յ|4|!}}}۲}}F}%}}l}ۧ}ɷ} }(}3ե{}h~{{8g~Ek|5  KE %~ ?{ :!.C = ?? *B( \F NA5 hMhM >D ^/^ Tֻ=U ۓQ˓ /;f y= @= 9yc } ?} c pd8|~ 5 N5  *Q ܜ'Û' -Jޥ ** K ~ ?|  /`J - -î -J v** {H j} >} r/`I \--î f \G K_ Zd8F 95 NU~(SΥ~(SΥUS 2VrV2`pY2l!pYoSV2gVSз22SζgwSYيogǰgoXձvLjo|vvvϥ|(~(|Υv|pY릱vٲv$pYWrpYǰlYVrj||s{j|؇~h|x~!4~9||4~£|5~p};|5@|}Jä|}} }|1D|}wħ|T}:}!|H|=}Ū|}a}|lM|D}Ǯ|}}z|+S|}hȳ|Y}}^| Z|}ɸ|}}n|b|}r˿|g}}|hm|}|ߜ}}|z|W}|N}}w||}|}}||A}J|}}X||}f|s}۾}|Ì|Y}S|ʞ}۷}ֵ|4|!}}}۰}}F}%}}l}ۨ}ɷ} }(}3ե{}h~{{8h~Ei|4  KE $} ?} ;/D = @= )B' [H NA5 hMhM >D ^0^ Uջ>U ۓR˓ 09f y< ?< ;yc ~ ?~ c pd8|~ 5 N5  *Q ܛ'Û' -Kߥ ** K } ?}  /`J --î -I v** {H i} ?} q/`J [--Į f \H L` Zc9E 95 NV~(Sϥ~(SΥVS 2VrV2`pY2l!pYoSV2gVSз22SζgwSYيogưgoYձvNJo|vvvΥ|~(~(|Υv|pY릱vٱv#pYWrpYưlYWrDATAx M2.select_poly%بNDATA%DATA ͹ !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  ME 1HME0.032?-8I I `I `M c0 $>,LR&=6Ȍ=>A=薩DATA?-` DATA I0position KXN2 .select_vert%NDATA KwD> ¾N\>pӾ>4p]>i>6_>7>Ǿj>i>6_>Y>b>7>Ǿj>Y>b>i>žl>Y>b>6>Pe>i>žl>i>žl>6>Pe>߄>cľm>6>Pe>D>?bh>߄>cľm>߄>cľm>D>?bh>>¾m>D>?bh>d;> :Pj>>¾m>>¾m>d;> :Pj>Nl>nl>7>Ǿj>_>wǾpi>i>6_>_>wǾpi>>ǾPVh>i>6_>i>6_>>ǾPVh>D> ¾N\>>ǾPVh>>.Ⱦse>D> ¾N\>D> ¾N\>>.Ⱦse>T> Ⱦb>$>þ[>D> ¾N\>>ž?\>D> ¾N\>T> Ⱦb>>ž?\>>ž?\>T> Ⱦb>Eо>;`ƾ]>T> Ⱦb> >:jǾ _>Eо>;`ƾ]>>CC<>Cq>CC>C>?5C<>C<>?5C>C<>C>?5C]>?5C<>?5C<]>?5C>?5C<>?5C]>?5C]>MC<]>?5C<]>MC]>?5C<]>?5C]>MCr>MC<]>MCMC]>MC<]>MCr>MCq>CMCCr>MCMCq>C]>?5C<]>MC<>?5C<]>MCMC<>?5C<>?5CMC<>CMCC<>C<>Cq>C>?5Cq>Cr>MC>?5C>?5Cr>MC]>?5Cr>MC]>MC]>?5C.>QѾXξ.>9Ѿ;о.>ѾѾ.>Ⱦξ.>ѾѾ.>о@Ҿ.>Ⱦξ.>о@Ҿ.>wȾHkо.>о@Ҿ.><ϾӾ.>wȾHkо.>wȾHkо.><ϾӾ.>h!ɾѾ.><ϾӾ.>)ξhyԾ.>h!ɾѾ.>h!ɾѾ.>)ξhyԾ.>Zɾh"Ӿ.>)ξhyԾ.>V̾HԾ.>Zɾh"Ӿ.>Zɾh"Ӿ.>V̾HԾ.>3˾ Ծ.>Ⱦξ.>3ɾ(.ξ.>ѾѾ.>3ɾ(.ξ.>ogɾ;.>ѾѾ.>ѾѾ.>ogɾ;.>QѾXξ.>ogɾ;.>hʾ^̾.>QѾXξ.>QѾXξ.>hʾ^̾.>M˾P˾.>'ѾX;.>QѾXξ.>hо@̾.>QѾXξ.>M˾P˾.>hо@̾.>hо@̾.>M˾P˾.>5ξȎ˾.>M˾P˾.>7;V˾.>5ξȎ˾DATA%DATA`I..edge_verts z$ةN2.select_edge%NDATA@ z$u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA%DATAh c0 .corner_vert @MXN .corner_edge CMN) FMتNDATA @ML  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA CML   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA FMsPH ZR~Jк[R^JK^b^Y)hYbʶb *hn*ht̹nޯntSypt6} PyUy~9}K ¤Jrfg\Rrf 3Z)\RL\R3ZP3ZmYPʶPTm#l|F P~tPJ#ltvt!la8}#lF 6}~qyj{fmjmەz{f-G pa  p8pb@ʊr@b@jrs>J]TJupٱT]di˰]?*ǐQt2^?-mࡼľ_?#ًb_?3(>2^?-mࡼ9^?һ_?3(>ľ_?#ًb]?#'99^?һľ_?#ًbsa?yQ<[a?ȧp0;a?Qa?Q[a?ȧp0;a?:M[a?ȧp0; a?)a?:Ma?:M a?)a?Sa?Q9a?ˋd0sa?yQ_?3(>9^?һ9a?ˋd09^?һ2\?卾2X?ۋ;X?CQX?ۋ;2\?卾2X?CQ]?*ǐQtX?;G]?*ǐQt_?3(>a?:Ma?:M_?3(>a?Q2\?卾2]?*ǐQtX?CQmX?CQW?+/W?+/W? ᝾@X?ōλ/X?;>W? ᝾@>W? ᝾@/X?;W?~JW?+/W?+/W?+/W?+/W? ᝾@W?~JW? ᝾@W?Ǟ4IhW?I>W? ᝾@)S?"яsяsяs<G?lяsяsяsA?(ۓ[;(A?#8:A?앾຿mG?@䔾4n;A?앾YnG?|-A?앾(A?#8:YnG?|-YnG?|-(A?#8:DpG?*I(A?#8:>A?(ۓ[;DpG?*IDpG?*I>A?(ۓ[;mG?@䔾4n;>A?(ۓ[;A?앾຿mG?@䔾4n;DATA NDATA`I..edge_verts @QN2.select_edge NXNDATAp @Qu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA N;DATAhd0 .corner_vert ON .corner_edge QجN) QNDATA OL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA QL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA QsS?E.4Z0:=ȝnNswmp@6Y}AIFGIBKC[ÝpKbj,CuX>Msz3C˙5yə55¼5¼5yə5U΂?# (CfM#8$]2ٜ" N $]&\Wf=4Eͪ4)b!|h S&AY%!)~  WO8ջzҪ!>΁+ơ%ECxă&  &U5e lׁ3ץ>3Q}xA1Z_5vU "քz%bڍwwQ?# JY@#BȼMVe66q F6Z g֗~{%9 ڍxN?Abdއ?xաA@[db8~]̰j%~]jİj;(P>@((P@(i:(Pb8~]̰j%~]jİj;(P>@((P@(i:(Pl/KXxpҒXV I)p*lJ%FvttEWqE!_F/ZqSOtsHYVuEz NEq6Wu}Pl:PN m/gYn:@s?j:ˡ5!鿞^цӿR2/6M.;5!e{$g lA5߉?2$3#FfGj2o޵=2Z`#_'fb*,1>&x0LÂ8%D$Ϻ?,e-L?-f11VjXM/(x#b>QXc7SHa7d6)/w5M/HEm^11¬**m>FH')Ho /p+EQ~7@k4uOȪ! 4ce:*7D@)hdDd"7YJ3.w!n^\D% LǼs\O4@]@<[[\T\~s0F!FIo?3/FʋsϚg0!1rAѻZ5a*ůR \Og-]nyѕK2йB}Y&~C_"$%cby;X-Wk+yExJ%^I1Th)븳XZf%:RtQl("X7ɐsLJqѴt1҆ۼig\m+ƀJ|3[l= dCepc:][pew;p drH|vښy\j GfrՀV撉1聬K1dʯ5)m S,Id!t%κd~P(6<@1(d&Ѿ :(*3O;'ߕ RJ A f<" Q I!\1v zWv%|ڝ hM L# AF rB 90(B2O Opxf%+pO HA4ؚx85&W 'CGp(' !&#Eش2xU g5 ɾ]̡ڭ ͞P i x W Sia۶ }reѴ2Ӧ+.} 9y' \. G" 9 ֝2۫jM'<]`@r[z]pSǭ UmdO{8 jaī)6\q9Jw?%~\F4{ xCU_ov)n j=%=睕|dxT~/)} Kv A.aW!2Kumod%lF|lYwJ{*'F|*r͚pvJՈEtE>ڂiRиI_o7W1#'#x)lj)ͪt~m[N ǻ| F1PCFgR]OrxZs@:֜׵JȅѣżxDŽIˊhOYZ#J;6wublز+ٱoz3fE^~ЀbIhj։3D=̺!֜5Kӥ,Y]c-lpVPEU9g[]#H!f,ԝMQ4iU1a5a33c3ֻSWM= CMȰL,2:۬Y\EBLA<Ϡ-ޞV[~0ɓ?M~Q!*ǽ~ H1(d%.ܱ.r6*`2Q# շ9l&ʵ[` FD&ʞ1V 'X/šͷ $/#c4ȴ3J=Loe::I;0#d:هf+ ̷,j'q{ wE705VvS1k[F2:ܨ #g!l+#Z'd DIP2KYlt;\y+r$^`YruR^d 6rCfXf`p o(r ;y>+ ##2. c/OkvAuksz;pj@=,\8^lC]}c`mlG!YpsxȌ/o~5aYDATAxM2.select_poly sNXNDATA< sNDATA M !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME 1HME0.034@@- PI I `Mf0 ?T9^>8<@<A=薩DATA@@-5 DATAI0position 3حN2 .select_vert QNDATA 3wF/?ԩQ:F/?^b8F/?mF/?^b8F/?j~F/?mF/?mF/?j~F/?N鐾/F/?j~F/?;F/?N鐾/F/?N鐾/F/?;F/?`rF/?;F/?,hF/?`rF/?`rF/?,hF/? ֵF/?,hF/?⑾»F/? ֵF/? ֵF/?⑾»F/?VْӻF/?⑾»F/?2F/?VْӻF/?VْӻF/?2F/?bF/?2F/?F/?bF/?bF/?F/?$rF/?F/?F/?$rF/?$rF/?F/?ջF/?F/?4AF/?ջF/?ȗQF/?MF/?Ǘm:F/?MF/?~:F/?Ǘm:F/?Ǘm:F/?~:F/?]/;F/?~:F/?ŗ;;F/?]/;F/?]/;F/?ŗ;;F/?r;F/?ŗ;;F/?Ef;F/?r;F/?r;F/?Ef;F/?hԵ;F/?Ef;F/?;F/?hԵ;F/?hԵ;F/?;F/?V;F/?;F/?y;F/?V;F/?V;F/?y;F/? b;F/?y;F/?;F/? b;F/? b;F/?;F/?“r;F/?;F/? ;F/?“r;F/?“r;F/? ;F/?꒾;F/? ;F/?w1;F/?꒾; 1?v1;F/?w1;F/? ; 1?3AF/?4AF/? 1?( 1?3A컢R2?R2?X 1?%ŗ쓾6;>2XJ;>Ғ$j;>ꟕ,j>0:>{>H:>0:>e3;>0:>ꟕ,j>e3;>e3;>ꟕ,j>Ғ$j;>񆔾,;> 0>4:>{>/(Ẕ>ꟕ,j>/(Ẕ>eL3>ꟕ,j>ꟕ,j>eL3>ђi>񆔾,;>쓾6;> 0>쓾6;>Ғ$j;> 0> 0>Ғ$j;> ZH⺔>Ғ$j;>ꟕ,j> ZH⺔> ZH⺔>ꟕ,j> 3>堕i;>*;> H3;>*;>񆔾,;> H3;> H3;>񆔾,;>Z(:>񆔾,;>4:>Z(:>8>}L>듾.>}L>ꟕ,j>듾.>듾.>ꟕ,j>W.>ꟕ,j>ђi>W.ʊ>A4G;> H3;ʊ>(:> H3;>Z(:ʊ>(:ʊ>(:>Z(:ʊ>0Ö):>Z(:>4:ʊ>0Ö):ʊ>0Ö):>4:ʊ>Öp,>4:> 0ʊ>Öp,ʊ>Öp,> 0ʊ>p> 0> ZHʊ>pʊ>p> ZHʊ>@G> ZH⺔> 3ʊ>@Gʊ>@G> 3ʊ>Ǖ> 3>ꟕ,jʊ>Ǖʊ>Ǖ>ꟕ,jʊ>3p>ꟕ,j>}Lʊ>3pʊ>3p>}Lʊ>5v>}L>8ʊ>5vʊ>5v>8ʊ>㓾l>8>듾.ʊ>㓾lʊ>㓾l>듾.ʊ>=N>듾.>W.ʊ>=Nʊ>=N>W.ʊ>ة⁻>W.>ђiʊ>ة⁻ʊ>ة⁻>ђiʊ>08G>ђi>eL3ʊ>08Gʊ>08G>eL3ʊ>ۑ(>eL3>/(ʊ>ۑ(ʊ>ۑ(>/(ʊ>)>/(Ẕ>{ʊ>)ʊ>)>{ʊ>p,:>{>0:ʊ>p,:ʊ>p,:>0:ʊ>!ܑh:>0:>H:ʊ>!ܑh:ʊ>!ܑh:>H:ʊ>1G;>H:>e3;ʊ>1G;ʊ>1G;>e3;ʊ>;>e3;>Ғ$j;ʊ>;ʊ>;>Ғ$j;ʊ>.?n;>Ғ$j;>2XJ;ʊ>.?n;ʊ>.?n;>2XJ;ʊ>z䓾v;>2XJ;>쓾6;ʊ>z䓾v;ʊ>z䓾v;>쓾6;ʊ>j;>쓾6;>񆔾,;ʊ>j;ʊ>j;>񆔾,;ʊ>4N;>񆔾,;>*;ʊ>4N;ʊ>4N;>*;ʊ>ȕ;>*;>堕i;ʊ>ȕ;ʊ>ȕ;>堕i;ʊ>A4G;>堕i;> H3;ʊ>A4G;>=Nʊ>ة⁻>ة⁻ʊ>ة⁻ʊ>08G>ة⁻>ة⁻ʊ>08G>08Gʊ>08Gʊ>ۑ(>08G>08Gʊ>ۑ(>ۑ(ʊ>ۑ(ʊ>)>ۑ(>ۑ(ʊ>)>)ʊ>)ʊ>p,:>)>)ʊ>p,:>p,:ʊ>p,:ʊ>!ܑh:>p,:>p,:ʊ>!ܑh:>!ܑh:ʊ>!ܑh:ʊ>1G;>!ܑh:>!ܑh:ʊ>1G;>1G;ʊ>1G;ʊ>;>1G;>1G;ʊ>;>;ʊ>;ʊ>.?n;>;>;ʊ>.?n;>.?n;ʊ>.?n;ʊ>z䓾v;>.?n;>.?n;ʊ>z䓾v;>z䓾v;ʊ>z䓾v;ʊ>j;>z䓾v;>z䓾v;ʊ>j;>j;ʊ>j;ʊ>4N;>j;>j;ʊ>4N;>4N;ʊ>4N;ʊ>ȕ;>4N;>4N;ʊ>ȕ;>ȕ;ʊ>ȕ;ʊ>A4G;>ȕ;>ȕ;ʊ>A4G;>A4G;ʊ>A4G;ʊ>(:>A4G;>A4G;ʊ>(:>(:ʊ>(:ʊ>0Ö):>(:>(:ʊ>0Ö):>0Ö):ʊ>0Ö):ʊ>Öp,>0Ö):>0Ö):ʊ>Öp,>Öp,ʊ>Öp,ʊ>p>Öp,>Öp,ʊ>p>pʊ>pʊ>@G>p>pʊ>@G>@Gʊ>@Gʊ>Ǖ>@G>@Gʊ>Ǖ>Ǖʊ>Ǖʊ>3p>Ǖ>Ǖʊ>3p>3pʊ>3pʊ>5v>3p>3pʊ>5v>5vʊ>5vʊ>㓾l>5v>5vʊ>㓾l>㓾lʊ>㓾lʊ>=N>㓾l>㓾lʊ>=N>=Nʊ>=Nʊ>ة⁻>=N>ݸ\y;>ȕ;>,ȕ;>A4G;>,,A4G;>~(:>A4G;>(:>~(:>~(:>(:>1":>(:>0Ö):>1":>1":>0Ö):>%>0Ö):>Öp,>%>%>Öp,>Y~h>Öp,>p>Y~h>Y~h>p>,?>p>@G>,?>,?>@G>ѷy>@G>Ǖ>ѷy>ѷy>Ǖ>)b>Ǖ>3p>)b>)b>3p>ϊ>3p>5v>ϊ>ϊ>5v>擾>5v>㓾l>擾>擾>㓾l>GB>㓾l>=N>GB>GB>=N>ҹ`y>=N>ة⁻>ҹ`y>ҹ`y>ة⁻>E@?>ة⁻>08G>E@?>E@?>08G>(>08G>ۑ(>(>(>ۑ(>~ɑ">ۑ(>)>~ɑ">~ɑ">)>ɑ%:>)>p,:>ɑ%:>ɑ%:>p,:>VX:>p,:>!ܑh:>VX:>VX:>!ܑh:>F?;>!ܑh:>1G;>F?;>F?;>1G;>޺y;>1G;>;>޺y;>޺y;>;>0I^;>;>.?n;>0I^;>0I^;>.?n;>瓾;>.?n;>z䓾v;>瓾;>瓾;>z䓾v;>;>z䓾v;>j;>;>;>j;>*>;>j;>4N;>*>;>*>;>4N;>ݸ\y;>4N;>ȕ;>ݸ\y;>GB>ҹ`y>ҹ`y>ҹ`y>E@?>ҹ`y>ҹ`y>E@?>E@?>E@?>(𺖳>E@?>E@?>(𺖳>(>(>~ɑ">(𺖳>(>~ɑ">~ɑ">~ɑ">ɑ%:>~ɑ">~ɑ">ɑ%:>ɑ%:>ɑ%:>VX:>ɑ%:>ɑ%:>VX:>VX:>VX:>F?;>VX:>VX:>F?;>F?;>F?;>޺y;>F?;>F?;>޺y;>޺y;>޺y;>0I^;>޺y;>޺y;>0I^;>0I^;>0I^;>瓾;>0I^;>0I^;>瓾;>瓾;>瓾;>;>瓾;>瓾;>;>;>;>*>;>;>;>*>;>*>;>*>;>ݸ\y;>*>;>*>;>ݸ\y;>ݸ\y;>ݸ\y;>,ݸ\y;>ݸ\y;>,,,~(:>,,~(:>~(:>~(:>1":>~(:>~(:>1":>1":>1":>%>1":>1":>%>%>%>Y~h񺖳>%>%>Y~h񺖳>Y~h>Y~h>,?>Y~h񺖳>Y~h>,?>,?>,?>ѷy>,?>,?>ѷy>ѷy>ѷy>)b>ѷy>ѷy>)b>)b>)b>ϊ>)b>)b>ϊ>ϊ>ϊ>擾>ϊ>ϊ>擾>擾>擾>GB>擾>擾>GB>GB>GB>ҹ`y>GB>%>Öp,>1":>Öp,>0Ö):>1":>1":>0Ö):>~(:>0Ö):>(:>~(:>~(:>(:>,(:>A4G;>,,A4G;>ݸ\y;>A4G;>ȕ;>ݸ\y;>ݸ\y;>ȕ;>*>;>ȕ;>4N;>*>;>*>;>4N;>;>4N;>j;>;>;>j;>瓾;>j;>z䓾v;>瓾;>瓾;>z䓾v;>0I^;>z䓾v;>.?n;>0I^;>0I^;>.?n;>޺y;>.?n;>;>޺y;>޺y;>;>F?;>;>1G;>F?;>F?;>1G;>VX:>1G;>!ܑh:>VX:>VX:>!ܑh:>ɑ%:>!ܑh:>p,:>ɑ%:>ɑ%:>p,:>~ɑ">p,:>)>~ɑ">~ɑ">)>(𺖳>)>ۑ(>(𺖳>(𺖳>ۑ(>E@?>ۑ(>08G>E@?>E@?>08G>ҹ`y>08G>ة⁻>ҹ`y>ҹ`y>ة⁻>GB>ة⁻>=N>GB>GB>=N>擾>=N>㓾l>擾>擾>㓾l>ϊ>㓾l>5v>ϊ>ϊ>5v>)b>5v>3p>)b>)b>3p>ѷy>3p>Ǖ>ѷy>ѷy>Ǖ>,?>Ǖ>@G>,?>,?>@G>Y~h񺖳>@G>p>Y~h񺖳>Y~h񺖳>p>%>p>Öp,>%)̕>=N>ة⁻)̕>ة⁻>ة⁻>08G)̕>ة⁻)̕>ة⁻>08G)̕>08G>08G>ۑ()̕>08G)̕>08G>ۑ()̕>ۑ(>ۑ(>))̕>ۑ()̕>ۑ(>))̕>)>)>p,:)̕>))̕>)>p,:)̕>p,:>p,:>!ܑh:)̕>p,:)̕>p,:>!ܑh:)̕>!ܑh:>!ܑh:>1G;)̕>!ܑh:)̕>!ܑh:>1G;)̕>1G;>1G;>;)̕>1G;)̕>1G;>;)̕>;>;>.?n;)̕>;)̕>;>.?n;)̕>.?n;>.?n;>z䓾v;)̕>.?n;)̕>.?n;>z䓾v;)̕>z䓾v;>z䓾v;>j;)̕>z䓾v;)̕>z䓾v;>j;)̕>j;>j;>4N;)̕>j;)̕>j;>4N;)̕>4N;>4N;>ȕ;)̕>4N;)̕>4N;>ȕ;)̕>ȕ;>ȕ;>A4G;)̕>ȕ;)̕>ȕ;>A4G;)̕>A4G;>A4G;>(:)̕>A4G;)̕>A4G;>(:)̕>(:>(:>0Ö):)̕>(:)̕>(:>0Ö):)̕>0Ö):>0Ö):>Öp,)̕>0Ö):)̕>0Ö):>Öp,)̕>Öp,>Öp,>p)̕>Öp,)̕>Öp,>p)̕>p>p>@G)̕>p)̕>p>@G)̕>@G>@G>Ǖ)̕>@G)̕>@G>Ǖ)̕>Ǖ>Ǖ>3p)̕>Ǖ)̕>Ǖ>3p)̕>3p>3p>5v)̕>3p)̕>3p>5v)̕>5v>5v>㓾l)̕>5v)̕>5v>㓾l)̕>㓾l>㓾l>=N)̕>㓾l)̕>㓾l>=N)̕>=N>=N>ة⁻)̕>=N)̕>p*̕>$I)̕>Öp,*̕>$I*̕>H)̕>Öp,)̕>Öp,*̕>H)̕>0Ö):*̕>H*̕>Iȇ:)̕>0Ö):)̕>0Ö):*̕>Iȇ:)̕>(:*̕>Iȇ:*̕>H;)̕>(:)̕>(:*̕>H;)̕>A4G;*̕>H;)̕>y\;)̕>A4G;)̕>A4G;)̕>y\;)̕>ȕ;)̕>y\;)̕>;)̕>ȕ;)̕>ȕ;)̕>;)̕>4N;)̕>;)̕>˕;)̕>4N;)̕>4N;)̕>˕;)̕>j;)̕>˕;)̕>KÔ<)̕>j;)̕>j;)̕>KÔ<)̕>z䓾v;)̕>KÔ<)̕><)̕>z䓾v;)̕>z䓾v;)̕><)̕>.?n;)̕><)̕>J;)̕>.?n;)̕>.?n;)̕>J;)̕>;)̕>J;)̕>ố";)̕>;)̕>;)̕>ố";)̕>1G;)̕>ố";)̕>̟;)̕>1G;)̕>1G;)̕>̟;)̕>!ܑh:)̕>̟;)̕>q$I;)̕>!ܑh:)̕>!ܑh:)̕>q$I;)̕>p,:)̕>q$I;)̕>):)̕>p,:)̕>p,:)̕>):)̕>))̕>):)̕>)ȇ)̕>))̕>))̕>)ȇ)̕>ۑ()̕>)ȇ)̕>*p$H)̕>ۑ()̕>ۑ()̕>*p$H)̕>08G)̕>*p$H)̕>^)̕>08G)̕>08G)̕>^)̕>ة⁻)̕>^)̕>$ϻ)̕>ة⁻)̕>ة⁻)̕>$ϻ)̕>=N)̕>$ϻ)̕>)̕>=N)̕>=N)̕>)̕>㓾l)̕>)̕>d)̕>㓾l)̕>㓾l)̕>d)̕>5v)̕>d)̕>)̕>5v)̕>5v)̕>)̕>3p)̕>)̕>ɕN)̕>3p)̕>3p)̕>ɕN)̕>Ǖ)̕>ɕN)̕>ζ&л)̕>Ǖ)̕>Ǖ)̕>ζ&л)̕>@G)̕>ζ&л)̕>xΟ)̕>@G)̕>@G)̕>xΟ)̕>p)̕>xΟ*̕>$I)̕>p{.? )̕>$ϻ{.?"ϻ)̕>$ϻ)̕>^{.?"ϻ{.?"ϻ)̕>^{.?^)̕>^)̕>*p$H{.?^{.?^)̕>*p$H{.?(p$H)̕>*p$H)̕>)ȇ{.?(p$H{.?(p$H)̕>)ȇ{.?)ȇ)̕>)ȇ)̕>):{.?)ȇ{.?)ȇ)̕>):{.?):)̕>):)̕>q$I;{.?):{.?):)̕>q$I;{.?p$I;)̕>q$I;)̕>̟;{.?p$I;{.?p$I;)̕>̟;{.?̟;)̕>̟;)̕>ố";{.?̟;{.?̟;)̕>ố";{.?߻";)̕>ố";)̕>J;{.?߻";{.?߻";)̕>J;{.?J;)̕>J;)̕><{.?J;{.?J;)̕><{.?<)̕><)̕>KÔ<{.?<{.?<)̕>KÔ<{.?IÔ<)̕>KÔ<)̕>˕;{.?IÔ<{.?IÔ<)̕>˕;{.?˕;)̕>˕;)̕>;{.?˕;{.?˕;)̕>;{.?;)̕>;)̕>y\;{.?;{.?;)̕>y\;{.?y\;)̕>y\;*̕>H;{.?y\;{.?y\;*̕>H;{.?H;*̕>H;*̕>Iȇ:{.?H;{.?H;*̕>Iȇ:{.?Iȇ:*̕>Iȇ:*̕>H{.?Iȇ:{.?Iȇ:*̕>H{.?H*̕>H*̕>$I{.?H{.?H*̕>$I{.?$I*̕>$I)̕>xΟ{.?$I{.?$I)̕>xΟ{.?xΟ)̕>xΟ)̕>ζ&л{.?xΟ{.?xΟ)̕>ζ&л{.?̶&л)̕>ζ&л)̕>ɕN{.?̶&л{.?̶&л)̕>ɕN{.?ɕN)̕>ɕN)̕>{.?ɕN{.?ɕN)̕>{.?)̕>)̕>d{.?{.?)̕>d{.?b)̕>d)̕>{.?b{.?b)̕>{.? )̕>)̕>$ϻ{.? {.?ے;{.?J;{.?“r;{.?J;{.?<{.?“r;{.?“r;{.?<{.? b;{.?<{.?IÔ<{.? b;{.? b;{.?IÔ<{.?V;{.?IÔ<{.?˕;{.?V;{.?V;{.?˕;{.?hԵ;{.?˕;{.?;{.?hԵ;{.?hԵ;{.?;{.?r;{.?;{.?y\;{.?r;{.?r;{.?y\;{.?]/;{.?y\;{.?H;{.?]/;{.?]/;{.?H;{.?Ǘm:{.?H;{.?Iȇ:{.?Ǘm:{.?Ǘm:{.?Iȇ:{.?Ɨpq{.?Iȇ:{.?H{.?Ɨpq{.?Ɨpq{.?H{.?0{.?H{.?$I{.?0{.?0{.?$I{.?ԋ{.?$I{.?xΟ{.?ԋ{.?ԋ{.?xΟ{.?g"{.?xΟ{.?̶&л{.?g"{.?g"{.?̶&л{.?Ի{.?̶&л{.?ɕN{.?Ի{.?Ի{.?ɕN{.?$r㻗{.?ɕN{.?{.?$r㻗{.?$r㻗{.?{.?b㻗{.?{.?b{.?b㻗{.?b㻗{.?b{.?Vْӻ{.?b{.? {.?Vْӻ{.?Vْӻ{.? {.? ֵ{.? {.?"ϻ{.? ֵ{.? ֵ{.?"ϻ{.?`r{.?"ϻ{.?^{.?`r{.?`r{.?^{.?N鐾/{.?^{.?(p$H{.?N鐾/{.?N鐾/{.?(p$H{.?m{.?(p$H{.?)ȇ{.?m{.?m{.?)ȇ{.?Ϋ`q:{.?)ȇ{.?):{.?Ϋ`q:{.?Ϋ`q:{.?):{.? ꐾ/;{.?):{.?p$I;{.? ꐾ/;{.? ꐾ/;{.?p$I;{.?bҋ;{.?p$I;{.?̟;{.?bҋ;{.?bҋ;{.?̟;{.? ;{.?̟;{.?߻";{.? ;{.? ;{.?߻";{.?ے;{.?߻";{.?J;{.?ے;{.?ے;F/? ;{.? ;F/? ;F/?bҋ;{.? ;{.? ;F/?bҋ;{.?bҋ;F/?bҋ;F/? ꐾ/;{.?bҋ;{.?bҋ;F/? ꐾ/;{.? ꐾ/;F/? ꐾ/;F/?Ϋ`q:{.? ꐾ/;{.? ꐾ/;F/?Ϋ`q:{.?Ϋ`q:F/?Ϋ`q:F/?ԩQ:{.?Ϋ`q:{.?Ϋ`q:F/?ԩQ:{.?m{.?Ǘm:F/?]/;{.?]/;F/?]/;F/?r;{.?]/;{.?]/;F/?r;{.?r;F/?r;F/?hԵ;{.?r;{.?r;F/?hԵ;{.?hԵ;F/?hԵ;F/?V;{.?hԵ;{.?hԵ;F/?V;{.?V;F/?V;F/? b;{.?V;{.?V;F/? b;{.? b;F/? b;F/?“r;{.? b;{.? b;F/?“r;{.?“r;F/?“r;F/?꒾;{.?“r;{.?“r;F/?꒾;{.?ے;F/?꒾;F/?ے;{.?ے;{.?ے;F/?ے;F/? ;{.?ԻF/?g"{.?g"F/?g"F/?ԋ{.?g"{.?g"F/?ԋ{.?ԋF/?ԋF/?0{.?ԋ{.?ԋF/?0{.?0F/?0F/?Ɨpq{.?0{.?0F/?Ɨpq{.?ƗpqF/?ƗpqF/?ȗQ{.?Ɨpq{.?ƗpqF/?ȗQ{.?Ǘm:F/?ȗQF/?Ǘm:{.?Ǘm:{.?Ǘm:F/?Ǘm:F/?]/;F/?ԩQ:F/?m{.?mF/?mF/?N鐾/{.?m{.?mF/?N鐾/{.?N鐾/F/?N鐾/F/?`r{.?N鐾/{.?N鐾/F/?`r{.?`rF/?`rF/? ֵ{.?`r{.?`rF/? ֵ{.? ֵF/? ֵF/?Vْӻ{.? ֵ{.? ֵF/?Vْӻ{.?VْӻF/?VْӻF/?b㻗{.?Vْӻ{.?VْӻF/?b㻗{.?bF/?bF/?$r㻗{.?b㻗{.?bF/?$r㻗{.?$rF/?$rF/?ջ{.?$r㻗{.?$rF/?ջ{.?ԻF/?ջF/?Ի{.?Ի{.?ԻF/?ԻF/?g"R2?ӓ;R2? ;R2?ˠ;R2? ;R2?;R2?ˠ;R2?ˠ;R2?;R2? g;R2?;R2?x;R2? g;R2? g;R2?x;R2?ڛ;R2?x;R2?;R2?ڛ;R2?ڛ;R2?;R2? o;R2?;R2?Ef;R2? o;R2? o;R2?Ef;R2?7;R2?Ef;R2?ŗ;;R2?7;R2?7;R2?ŗ;;R2?$EK:R2?ŗ;;R2?~:R2?$EK:R2?$EK:R2?~:R2?DNR2?~:R2?XR2?DNR2?DNR2?XR2?R2?XR2?%ŗ;,:?=T;,:?=T;0:?>;,:?ڂ;0:?>;0:?QH;,:?ڂ;,:?ڂ;0:?QH;,:?.H;0:?QH;0:? 1 H;,:?.H;,:?.H;0:? 1 H;,:?ؑ:0:? 1 H;0:?6ۑ:,:?ؑ:,:?ؑ:0:?6ۑ:,:?Ϋp-:0:?6ۑ:0:?,:,:?Ϋp-:,:?Ϋp-:0:?,:,:?*0:?,:0:?*,:?*,:?*0:?*,:?ב0:?*0:?ڑ,:?ב,:?ב0:?ڑ,:?-dH0:?ڑ0:?30G,:?-dH,:?-dH0:?30G,:?t0:?30G0:?;,:?t,:?t0:?;,:?i<40:?;0:?=,:?i<40:?=$5:?=N0:?⓾$5:?=N$5:?㓾l0:?⓾0:?⓾$5:?㓾l0:?R$5:?㓾l$5:?2v0:?R0:?R$5:?2v0:?3$5:?2v$5:?3p0:?30:?3$5:?3p0:?XȕJ$5:?3p$5:?Ǖ0:?XȕJ0:?XȕJ$5:?Ǖ0:?A H$5:?Ǖ$5:?@G0:?A H0:?A H$5:?@G0:?s$5:?@G%5:?p0:?s0:?s%5:?p0:?Ö,%5:?p%5:?–p,0:?Ö,0:?Ö,%5:?–p,0:?&Ė):%5:?–p,%5:?-Ö):0:?&Ė):0:?&Ė):%5:?-Ö):0:?:%5:?-Ö):%5:?(:0:?:0:?:%5:?(:0:?vB|G;%5:?(:%5:?A4G;0:?vB|G;0:?vB|G;%5:?A4G;0:?nɕ;%5:?A4G;%5:?ȕ;0:?nɕ;0:?nɕ;%5:?ȕ;0:?#5;%5:?ȕ;%5:?4N;0:?#5;0:?#5;%5:?4N;0:?;%5:?4N;%5:?j;0:?;0:?;%5:?j;0:?W䓾;%5:?j;%5:?w䓾v;0:?W䓾;0:?W䓾;%5:?w䓾v;0:?>;%5:?w䓾v;%5:?+?n;0:?>;0:?>;%5:?+?n;0:?QH;%5:?+?n;%5:?ꪒ;0:?QH;0:?QH;%5:?ꪒ;0:? 1 H;%5:?ꪒ;%5:?1G;0:? 1 H;0:? 1 H;%5:?1G;0:?6ۑ:%5:?1G;%5:?ܑh:0:?6ۑ:0:?6ۑ:%5:?ܑh:0:?,:%5:?ܑh:$5:?p,:0:?,:0:?,:$5:?p,:0:?*$5:?p,:$5:?|)0:?*0:?*$5:?|)0:?ڑ$5:?|)$5:?ۑ(0:?ڑ0:?ڑ$5:?ۑ(0:?30G$5:?ۑ($5:?08G0:?30G0:?30G$5:?08G0:?;$5:?08G$5:?թ⁻0:?;0:?;$5:?թ⁻0:?=$5:?թ⁻$5:?=N0:?=BKD?BKD?xG?BKD?xG?xG?BKD?<=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y                ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | }              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y   !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|} !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~         ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~                 % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~          ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~   %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~  "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{             " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~            " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z {              " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~       "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{ ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx                 ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x                    ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |    ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwxDATA QDATAhf0 .corner_vert '5خN .corner_edge z5N)`5XNDATA: '5L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA: z5L  W VX  Z Y[  ] \^  ` _a    c bd  f eg  i hj  l km  o np  r qs  u! tv"!# #" x$ wy%$& &% {' z|(') )( ~* }+*, ,+ - .-/ /. 0 102 21 3 435 54 6 768 87 9 :9; ;: < =<> >= ? @?A A@ B CBD DC E FEG GF H IHJ JI K LKM ML N ONP PO Q RQS SR T UTV VU W XWY YX Z [Z\ \[ ] ^]_ _^ `   a `b ba c   dce ed f gfh hg i jik kj l mln nm o poq qp r srt ts u v uw wv x "!y#xz zy { %$|&{} }| ~ (')~   +*,  .-/  102  435  768  :9;  =<>  @?A  CBD  FEG  IHJ  LKM  ONP  RQS  UTV  XWY  [Z\  ^ ]_  a `b  dce  gfh  jik  mln  poq  srt  v!uw # "y$xz & %|'{} ) (*~ , +- / .0 2 13 5 46 8 79 ; :< > =? A @B D CE G FH J IK M LN P OQ S RT  V UW  Y XZ  \ []   _ ^`    b ac  e df  h gi  k jl  n mo  q pr  t su! " "! w# vx$#% %$ z& y{'&( (' }) |~*)+ +* , -,. .- / 0/1 10 2 324 43 5 657 76 8 98: :9 ; <;= =< > ?>@ @? A BAC CB D EDF FE G HGI IH J KJL LK M NMO ON P QPR RQ S TSU UT V WVX XW Y ZY[ [Z \ ]\^ ^] _  ` _a a` b   c bd dc e feg gf h ihj ji k lkm ml n onp po q rqs sr t utv vu w ! x"wy yx z $#{%z| |{ } '&~(} ~  *)+   -,.   0/1   324   657   98:   <;=   ?>@   BAC   EDF   HGI   KJL   NMO   QPR   TSU   W VX    Z Y[    ] \^  ` _a  c bd    f eg    i hj    l km    o np    r qs    u tv  " ! x# wy  % $ {& z|  ( ' ~) }  + * ,   . - /   1 0 2   4 3 5   7 6 8   : 9 ;   = < >   @ ? A   C B D   F E G   I H J   L K M   O N P   R Q S   U  T V   X  W Y   [  Z \   ^ ] _     a ` b    d  c e   g  f h   j  i k   m  l n   p  o q   s  r t  ! ! v " u w #"$ $# y % x z &%' '& | ( { } )(* *)  + ~  ,+- -, .  /.0 0/ 1  213 32 4  546 65 7  879 98 :  ;:< <; =  >=? ?> @  A@B BA C  DCE ED F  GFH HG I  JIK KJ L  MLN NM O  POQ QP R  SRT TS U  VUW WV X  YXZ ZY [  \[] ]\ ^  _ ^` `_ a  b ac cb d  edf fe g  hgi ih j  kjl lk m  nmo on p  qpr rq s  tsu ut v  w!vx xw y # "z$y{ {z | & %}'|~ ~}  ) (*  , +-  / .0  2 13  5 46  8 79  ; :<  > =?  A @B  D CE  G FH  J IK  M LN  P OQ  S RT  V UW    Y XZ    \ []   _ ^`  b ac    e df    h gi    k jl    n mo    q pr    t su  ! w" vx  $ # z% y{  ' & }( |~  * ) +   - , .   0 / 1   3 2 4   6 5 7   9 8 :   < ; =   ? > @   B A C   E D F   H G I   K J L   N M O   Q P R   T S U W V X Z Y [ ] \ ^      ` _ a    c b d f e g i h j l k m o n p r q s   u !t v "!##"x $w y %$&&%{ 'z | ('))(~ *}  +*,,+ -  .-//. 0  10221 3  43554 6  76887 9  :9;;: <  =<>>= ?  @?AA@ B  CBDDC E  FEGGF H  IHJJI K  LKMML N  ONPPO Q  RQSSR T  UTVVU W  XWYYX Z  [Z\\[ ]  ^]__^ `  a `bba c  dceed f  gfhhg i  jikkj l  mlnnm o  poqqp r  srtts u  v uwwv x " !y#xzzy { % $|&{}}| ~ ( ')~  + *,  . -/  1 02  4 35  7 68  : 9;  = <>  @ ?A  C BD  F EG  I HJ  L KM  O NP  R QS  U TDATA:`5sypuy9|Iu8u |ѱwŝ ||!w|w|ϱwŝ||"w|w|ϲwŝ||"w|w|ϱwƝ||"w|w|ϱwŝ||"w|w|ϲw|az髰w{wbz̀ebzyzタ=youy8 |Iu8u |Ѳwŝ||#w!|w |ϳwƝ||#w%|w|ϲwƝ||"w|w|ϱwŝ||"w|w|ϲwŝ||"w|w|ϳw|cz髲w{wcz&fczzz&L+\ @Ô*\ =u"P IP pL;L{M M:Ƃ믧M}M KӧL+ȩ /ӕ E ] & `& :&!X X ~!:(!Y Y ";) Y Y 9&!X X ~ :'GX Y F4ć İ 1*Ĩ -Ӕ E `!& _& !:)!Y Y !:( Y Y  :' Y Y  9'"X Y !:(FY Y G6ć į 0~=ӟן߀>ӟן}<ӟמ߀>ӟמ=ӟן~<Ӟן|:Ӟם߁?Ӡנ|:Ӟם߁?Ӡנ|;Ӟמ߁?Ӡנ|;Ӟן~<Ӟנ~<Ӟן~=ӟן~<Ӟמ~<ӟן>ӟן=ӟן~=ӟן|:ӝם߁@Ӡנ};Ӟ&>[%r0=LN%3ˬ?=0>3q9=M3b 2=&>!1=M7o7='>61=L66x-=0>68=Mړ6:7=$>:/=L:] ==%>%0=My;7='>o;1=Lj;9!5=.>97=M9j>2='>e>2=L`>6=1>C8=N` ==">/.=L%4=->S%p7=MT%E,7=$>+/=L+;h1 2=%>11M/=M'1ܞ4:=&>{4|0=Lt4ܷ6w6=->66=Mږ68R5=&>8/=M7995=2>8;=M8ܚ9),=.>v97=M|99 2=)>93=M9c>4=">d>/=LX>:=(>C0=Mg .=(>1=M%)=ʓѓ<8;~_ x[xM Ȳ J{ 4;(z7~zAe 8B)r)).''ʹৡ { ;֡ 4 qz 8=eL Ų J 4 V =>8=)n().((ɹᧂ>#ق̷I8=yAe 8<n䱿qТR=>fK ² J 3 S <>IINȏ";'ԏ8Ϣdlۼ8:8<)n()/((ʹᧂ=$ق̷8=)n().((ʹᧂڿ>$ق̷=P%q<=>#<=E')F?H=*)F>E@'(F?F@'(G?G?((G?G>))G>G>()E>G<*,K=EC" "ECL=++H<E?%'KAIC""GBK?)(G=G>))G=H<**H=G=)(G>G?((E?G=*+G=D@%'J@HC#"EBJ>,*F;D= * *C=F;--E;C=*+G=q}qi}b~$qn|q}qj~b~#qc|q}qj}b}"q_|q~qi}b}"q`|q}qi~b}!qQ|q}qh}a}"q\|q}qj}b}#q]|q}qi}a}"qe|q}qi}b}"qZ|q}qi}a}!qY|q}qi}b}#qc|q}qi}b}$qo|q}qi}b}!qV|q}qi}b}"qc|q}qj~b~"q]|q~qi}a}"q]|q}qi}b}"qb|q}qj}b}#qa|q}qj}a}!q[|q}qj}b}!qZ|q}qi}a}$ql|q}qi}b}$qi|q}qi}b} qL|q}qi}b}!qW|#^b%`~_A##_b% b~]?##]a%^~`A##_a%b~]>##_b%`~_@##_a%`~^?##]`%^_A##_b% b}^>##]`%^_@##_a% b~^>##^`%_`?##`a% c^>##]`%^_@##^a%`~_@##_b%a~^?##_a%a~^?##_b%`~^?##^a%_~_@##_b%b~_>##_`%a_@##^a%a~]?##]a%]~`B##`c% c}]@##]a%^~_@#]s)ő]Ҏror"][w]s)Ő]Ҏror"]Ww]s)Œ]Ҏsos"]]w]r*ő]Ҏsps"]\w]r)ő]Ҏsos#]Xw]r)Œ]Ҏsos"]Xw]s)ő]Ҏsos"]\w]s)ő]Ҏsos"]Zw]s)ő]Ҏsos"]\w]s)ő]Ҏsos"]Yw]s)ő]Ҏsos"]^w]s)ő]Ҏsos#]Zw]s)Ő]Ҏror"]Xw]s)ő]Ҏror"]Zw]s)Ő]Ҏror"]Ww]s)ő]юsos"]Xw]r)ő]Ҏsos"]]w]r)ő]Ҏsos"]Yw]s)ő]Ҏsos"]Yw]s)ő]Ҏsor"]]w]s)Ő]юsos"]Xw]s)Ő]Ҏsos"]Yw]s)ő]Ҏsos"]Zw]s)ő]Ҏsos"]Zwxl^<?#l_xl^=?$l_xl^>@$l_xl^=?#l_xl^=?$l_xl^>@$l_xl^=?#l_xl^<>$l_xl^>@#l_xl^<?$l_xl^=@#l_xl^<>$l_xl^?A$l_yl^<?#l_xl^<?$l_xl^>?$l_xl^<?$l_xl^=?#l_xl^=?$l_xl^>@$l_xl^>@$l_xl^>@#l_xl^<>$l_xl^=@#l_onI"n{n1o/"0or{1o,o."0os{/o/o.#.oq{/o/o."0om{/o/o.!/ol{/o's #'s'sh$"hh/o.#/ox{/o/o."/oq{/o/o."/or{.o̞o4"o{onH"n{n.o-".oq{.o/o."0op{/o/o."/on{/o/o."/os{/o/o.#/ow{0o)s "&s(sh#"h h-o."/om{.o.o.".op{.o/o."/oq{/o̟o5#o{7ԒBnj:91ՒxY ::0Y WԒp( ::1( u'!!k[t%rr- Ւv: T990 Ւv; V::0 Ԓu9 V9:1 Ԓu8 S990 ֒v; S99/ :S>˒?~š> )7ƺ>ˡ?ů>/>>ˑ?Ţ> *5Ǻ>ˢ?~Ű>3G>ˢ?Ů>.=>˕?Ť>.?>˝?ū> 3F>ˠ?ŭ> 2E>˝?~ū>1B>ˡ?ů> 5E>ˣ?~Ű> 1C>˚?} Ũ> 0C>ˡ?ů>8I>˒?š> '2ƺ>˓?Ţ>-A>˓?ţ>)8>˚?~ Ū> 0A>˞?~ŭ> /A>˜?~ū> 1B>˟?Ŭ> 0B>˜? Ũ>.?>˞?}Ů> 0B>ˣ?Ů>4Bº>IG 3It 3 3I.IE 3It 3 3I-IB 3It 3 3IFLM 3N 3 3G Cr3AD 33MRID 3It33DIB 3It33«W@IM 3It33N%IM 3Gt33JO3K?33?dD: 3Dt33«AnG3FN3 3EEK 3Dt 33D.DE3Dt3 3D.DC 3Ds 3 3CDF 3Dt 33FGD7 3Dt 33IS=3<X 3 3«E7DV 3Dt 3 3D)D7 3Ft33ON3QR33DKIA 3It33GBIM 3Is33GII9 3It 3 3I+' 2 q }5, Єԟ( { }+> ӄƟ: k >8 Ą۟*  Z? {. v 9 .  q  $ Ȅ՟ u ' ̄؟ |6D ۄǟ  M * ڟ x?KA ބ t UD ? ՟ t YH3 7 k k>* Є ڟ8 z */ ӄԟ(   6#  ;6 &  3= " | + ӟ    Є֟7 r! " $# ; t &E „̟# s c9; Ąϟ5 y "+2 * { o# 0 p " | 4 l 橻 L ݊ ? v +  g ' W NJ : ӊ È _  } ͩ | o  O  _   m ኻ  z a B v 4 8   \ &  B C \ ʩ ׈ ;  w ɩ ܈ I% p X ⊉ / o } % ъ} x 5  l ꩹ % o  1 ͈   [ ˩ % E  " fh  R   [  V |k k + c d y > x U  l _ 9 ڍ  ~   鏱  G v ݏ ҧ y я t ƍ 동 ѧ T } 덼 o n   Χ |    { # U P ؍4  A [ < ˍ ҏ ʧ ( 3 r  { ҏ ʧ   ȍ r  Ѝ +0 M ܧ t ) - u < Г Ū) 8 w  @ >  ;_  @ ݪ '  ; ! Q / , - .   H & c  O  b  * ;  _ $ i ~ N  : M  p + Ғ ?. i D } L x   3 o t h )A Г Ҫ 4  s  Y z G ݓ ɪ j ~ " n N . Α. " Ҫ { ܑ 5 m  ~ l ȑ $ >  ~ y  + * ]   9   A m ڪ ] 1 @ * d JO L 孨 @ , 4 @ Ac  E * / Օ :* s Ls / @ ֕ J; N W  P  H D !   _ ð H  f Y { { ɰ 2 / cf  vl z J3  X B 鰠 9 4$ ”f }i  L 1 p Ӱ D [   6   G s 尷  A u f Ȱ & _ ߰  c ᰮ - Y k 3J ДP f : R #  ? n ; E C R } 4 , \y  t x ) jr  r s /  qj 0 i  ' * ~  * qx > qZ ^ _l ' w } 0 3 kt x r @ I} ( ܕ XF n  b :e G L V ҕ y   s = u.Q  Lz -  ? \ ^ R S? —[  z } o ' yn -  鮳 ! oi  y 0 7 nq x { 8 ( kl ꕶ n 3 0 U{ ᕴ 9 \s O| g 1 ®;^ u E  ]  s M < zIG' 68 ɬ  ذx  ԖZE2 Y.௫ 0 9  Ñ ^ cj E ӑR . ,"S ӑ/~  m \k  i Lv  Ė cM 8w^LP# 5  |  7&# &,m  Ӗ } / WVi ( eNl  z*'OA0 K*  ٖ Up  ؖ } i` r cm  Ֆf ԑ N  } n  >b ?  Ζ=] = g Wbs̅RR"R"bs̅R(jrf3rf3rf3(jrf3bs̅RR"R"bs̅R(jrf3rf3rf3(jrf33ȯYЯТ3ȯY3ȯYЯТ3ȯYDATAx`M2.select_poly MNDATA MDATA P !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|ME 1HME0.035p@-  ` V0I I M`h0 7 -=o==p= >A=薩DATAp@- 0DATAI0position *.R2 .select_vertIXRDATA *.w 1;@@1;C@@f@@1;C@@fC@@f@@1;Mb>1;@@fMb>1;@@f@@fMb>1;CMb>1;Mb>fCMb>1;Mb>fMb>fCMb>1;C@@1;CMb>fC@@1;CMb>fCMb>fC@@1;Mb>1;CMb>1;@@1;CMb>1;C@@1;@@fCMb>fMb>fC@@fMb>f@@fC@@{{Dv {Dv Dv v Sc>v z߾Sc>{Sc>v z߾Sc>{y߾Sc>{Sc>v 2>v Sc>{2>v Sc>{Sc>{2>v z߾Dv D{y߾Dv D{D{y߾Dv z߾Sc>v z߾D{y߾Sc>v z߾D{y߾D{y߾Sc>v v Dv ʾv Dv z߾Dv ʾv ʾv z߾Dv ʾ2>v z߾Dv z߾Sc>v ʾ2>v ʾ2>v z߾Sc>v 2>v z߾Sc>v Sc>v 2>{2>{Sc>{ʾ2>{Sc>{y߾Sc>{ʾ2>{ʾ2>{y߾Sc>{ʾ{y߾Sc>{y߾D{ʾ{ʾ{y߾D{{y߾D{D{v v ʾ{v ʾ{ʾ{v ʾv ʾ2>{ʾv ʾ2>{ʾ2>{ʾv ʾ2>v 2>{ʾ2>v 2>{2>{ʾ2>v v Dv DDSc>z߾Sc>v Sc>z߾Sc>v z߾Sc>v Sc>2>Sc>v 2>Sc>v Sc>v 2>z߾DDv z߾DDv Dv z߾Dz߾Sc>z߾Dv z߾Sc>z߾Dv z߾Dv z߾Sc>DʾDz߾Dʾʾz߾Dʾ2>z߾Dz߾Sc>ʾ2>ʾ2>z߾Sc>2>z߾Sc>Sc>2>v 2>v Sc>v ʾ2>v Sc>v z߾Sc>v ʾ2>v ʾ2>v z߾Sc>v ʾv z߾Sc>v z߾Dv ʾv ʾv z߾Dv v z߾Dv Dv ʾv ʾv ʾv ʾʾ2>v ʾʾ2>v ʾ2>v ʾʾ2>2>v ʾ2>2>v 2>v ʾ2>D½-D½-D½-½-Sc>½-z߾Sc>Sc>½-z߾Sc>z߾Sc>Sc>½-2>½-Sc>2>½-Sc>Sc>2>½-z߾D½-Dz߾D½-DDz߾D½-z߾Sc>½-z߾Dz߾Sc>½-z߾Dz߾Dz߾Sc>½-½-D½-ʾ½-D½-z߾D½-ʾ½-ʾ½-z߾D½-ʾ2>½-z߾D½-z߾Sc>½-ʾ2>½-ʾ2>½-z߾Sc>½-2>½-z߾Sc>½-Sc>½-2>2>Sc>ʾ2>Sc>z߾Sc>ʾ2>ʾ2>z߾Sc>ʾz߾Sc>z߾Dʾʾz߾Dz߾DD½-½-ʾ½-ʾʾ½-ʾ½-ʾ2>ʾ½-ʾ2>ʾ2>ʾ½-ʾ2>½-2>ʾ2>½-2>2>ʾ2>DATA IDATA I..edge_verts ҥR2.select_edge`IRDATA ҥu     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA `IDATAh`h0 .corner_vert R/R .corner_edge W/XR) \/RDATA R/L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATA W/L    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATA \/s ,v6[6[w6[w,v6[,7j+++,7j+,v6[6[w6[w,v6[,7j+++,7j+YUͲU۲UYUYUͲU۲UYU͹U9$-_9#TM+-&35l,-8Ŕlކw,--1TMvͬ#TMިfX$l&3Kc&3hRnKcNt؞tIL-ݳt+@L-r-y&y wz&&w wӏm wm̏mdHh^HhNqX[*A&[ЯSD*A*A絛SKրFSܟIFʀFII|AK˟I;_|A"OZΡtgASsɼt{AS7S9Bܿ9tOZo'OZckԯo-1TMv͐-_TMTM+-&35l&3hؔlޔl&3Ɛ-1TMv͐-_TMTM+-ؔl&3Ɣl&3h&35lt؞tIttt؞tI-y&y wz&&w wӏm wm̏mdHh^HhN-y&y wz&&w wӏm wm̏mdHh^HhNOZΡtgOZּttOZƵSStOZƼtOZOZΡtg-1TMvͬ#TMިfX$RnKcN&3hKcʔl&3ƹU9$-_9#TM+-؆w,-l,-8&35l+@L-rtL-ݳt؞tIqX[*A&[ЯSD*A*A絛SKրFSܟIFʀFII|AK˟I;_|A"-y&y wz&&w wӏm wm̏mdHh^HhNckԯoOZo'tOZBܿ99S{AS7tASsOZΡtgDATAxM2.select_poly LRDATA` LDATAV0 !$'*-0369<?BEHKNQTWZ]`cfilorux{~  ME 1HME0.036@-\ j0I `I `Mk0 0=I>G`=>A=薩DATA@-`JDATAI0position 8.XR2 .select_vert IRDATA 8.w gE}= gEE6= g]dE6= g]d> gE> gE `= g楛 `= g楛}= gE `= g楛}= gE}= gE `= gE `= gE}= g]d> gE}= g]dE6= g]d>EE6=]dE6= gEE6=]dE6= g]dE6= gEE6=]dE6=EE6=]d>EE6=E}=]d>E>]d>E `=]d>E}=E `=E `=E}=楛 `=E}=楛}=楛 `= gE> g]d>E> g]d>]d>E>]dE6=]d> g]dE6=]d> g]d> g]dE6= g楛}= g楛 `=楛}= g楛 `=楛 `=楛}=E>E `= gE>E `= gE `= gE>E `=楛 `= gE `=楛 `= g楛 `= gE `=楛}=E}= g楛}=E}= gE}= g楛}=E}=EE6= gE}=EE6= gEE6= gE}=9d>E:d>EH9d>ɡž:d>EH:d>ɡžH9d>ɡž=E9d>E=ˡž9d>E9d>ɡž=ˡž&H=E(=E&H=ˡž(=E=ˡž&H=ˡž(rT>EH&H=E(rT>ʡžH&H=E(&H=ˡž(rT>ʡžH:d>EHrT>EH:d>ɡžHrT>EHrT>ʡžH:d>ɡžH:d>EH9d>ErT>EH9d>E=ErT>EHrT>EH=E&H=E(&H=ˡž(=ˡžrT>ʡžH=ˡž9d>ɡžrT>ʡžHrT>ʡžH9d>ɡž:d>ɡžH?O%Pb>?O%I >]>O%Pb>?O%I >]>O%I >]>O%Pb>? Pb>?O%Pb>^> Pb>?O%Pb>]>O%Pb>^> Pb>? Pb>^> Pb>^>P>? Pb>^>P>?O>^>P>^>签 >?O>?O>^>签 >?签 >^>签 >^>ʮS >?签 >?签 >^>ʮS >?ʮS >^>ʮS >^> 1>?ʮS >?ʮS >^> 1>? 1>?=? 1>^>=? 1>^> 1>^>=?T=?=^>U=?=^>=^>U=?T$>?T=^>U$>?T=^>U=^>U$>?T$>^>U$>^>@7 >?T$>^>@7 >?@7 >^>@7 >^>v >?@7 >?@7 >^>v >?v >^>v >^>I >?v >?v >^>I >?I >?O%I >?I >]>O%I >?I >^>I >]>O%I >?=?T=? 1>?T=?T$>? 1>? 1>?T$>?ʮS >?T$>?@7 >?ʮS >?ʮS >?@7 >?签 >?@7 >?v >?签 >?O%I >?O%Pb>?I >?O%Pb>? Pb>?I >?I >? Pb>?v >? Pb>?O>?v >?v >?O>?签 >^>U=^>=^>U$>^>=^> 1>^>U$>^>U$>^> 1>^>@7 >^> 1>^>ʮS >^>@7 >^>ʮS >^>签 >^>@7 >^>@7 >^>签 >^>v >^>签 >^>P>^>v >^>v >^>P>^>I >^>P>^> Pb>^>I >^>I >^> Pb>]>O%I >^> Pb>]>O%Pb>]>O%I >DATA IDATA`I..edge_verts ܥR2.select_edgeIRDATA ܥu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATAIDATAhk0 .corner_vert a/XR .corner_edge f/R) k/RDATAP a/L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATAP f/L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATAP k/s%oLqnUXʸ6t͔+INOȂ3ヤ+m߂3)%+M͔+%.UX5%LqUXncm[<$m$J{[<ȟhpFh-pFٔ+}h@ohn-hٔ+-#-+M͂3)є+mINOȂ3マico[<$cok{[<ge(se+=sj}Ũ=a=+¨=+j}Ũ=aFRgʚ|Rgy|UZ=R Up=RCe`̼Ue`̼U=RCUp`=R y&=Vak&=Fak|msxHmv]xvrӼoriotw҈i\ttfӶt;sfsSUStLSUittrAs BeAsPu=Be^}Ľ ٽ0בA 䪑NȎ,"z ؞k Դz wz k c0 ,|7|,|  7| (j ò( (v\ o͓ Hל   ̯  ̯ ֯   `̓ Hד p ٲ  |Szqjhqj}zhӸAcٶAbKcDES|e}U4J=o=oI4Y|V|ye4Ͱ(84r|ܱ{ |{{ | |{W{d{{V{W{q{{3{K܀y){~{{{{{{N{){6ys{|1yǀye|{|[|{|{{n{v{սys{|2y|{ydy){~{K{2W{p{{W{{W{d{ײ{{ {{{{{DATAx`M2.select_poly LRDATA\ LDATAt j0 !$'*-0369<?BEHKNQTWZ]`cfilorux{~ ME 1HME0.037@-J  I `I M`o0 we>M¾Y%?~==s>A=薩DATA@-`_DATA I0position6R2 .select_vert 1RDATAhR6w;nnj>3;0nj>!=0x<>;nnj>!=0x<>!=nx<>!=0x<>K=/侐o>!=nx<>!=nx<>K=/侐o>K=no>K=/侐o>0*>/侰Ga>K=no>K=no>0*>/侰Ga>/*>nGa>>0fj>JK3>Z>J *I>[ K3>ZK3>Z *I>[ ,H> G,H> G *I>[ o> G *I>[ 8iN>o> Go> G8iN>$ ?}|>n \>}|> \>}|>n@K}|> \>}|>=}|>n@K}|>n@K}|>=}|> @K}|>=}|>v=}|> @K}|> @K}|>v=}|> ̽}|>v=}|>v̽}|> ̽=n`!>C}=n0=>K=no>5:n GC}=n0=>nJC}=n0==np!>nJ>nJ=np! *I>n[ =np!'#>n *I>n[ *I>n[ '#>nx`i>n rٽ'#>n꽜?>nvx`i>n rٽx`i>n rٽ?>nv}|>n@K?>nvJI>n}|>n@K}|>n@KJI>n}|>n \>JI>n?>n@v=}|>n \>}|>n \>?>n@v=1>nX>?>n@v='#>n=1>nX>1>nX>'#>n=Xc>nGa>'#>n==n`!>Xc>nGa>Xc>nGa>=n`!>/*>nGa>=n`!>K=no>/*>nGa>_pn0=5:n G-;nŌG=n0-;nŌk>n1s-;nŌ5:n Gk>n1sk>n1s5:n G>n0fj5:n G>nJ>n0fjKn=n=tTVn04>罙n`!>tTVn04>!np罙n`!>罙n`!>!np_pn0=>!npAƽn>_pn0=>_pn0=>Aƽn>5:nG>Aƽn>;nnj>5:nG>5:nG>;nnj>C}=n0=>;nnj>!=nx<>C}=n0=>C}=n0=>!=nx<>K=no>-;nŌ~n_pn0=~nnx_pn0=_pn0=nx罙np!nxھ`T>óYھ>ھ`T>aھA>óYھ>óYھ>aھA>hϽھ`=aھA>@ھ>hϽھ`=hϽھ`=@ھ>RG ھף=@ھ>}8ھ =RG ھף=RG ھף=}8ھ =iھ<}8ھ = Pھ@g?=iھھP*>ھ ףp)>ھP@I>ھ` *>ھ ף*>ھ ף@I>ھ` A">ھ@I>ھ` X>ھA">ھA">ھ㼼 X>ھA">ھ< X>ھqBS>ھ@g?=A">ھھ@g?=*>ھף=qBS>ھ@g?=U;>ھ =*>ھף=*>ھף=U;>ھ ==ھ`=U;>ھ =>ھ>=ھ`==ھ`=>ھ>'f=ھ>>ھ>ӽ=ھA>'f=ھ>'f=ھ>ӽ=ھA>Y6:ھ#>ӽ=ھA>=ھPT>Y6:ھ#>Y6:ھ#>=ھPT>ھ`T>TھhFھ@ RG ھ ףhFھ@ &ھPRG ھ ףRG ھ ף&ھPhϽھ&ھP ョھ1hϽھhϽھ ョھ1óYھ ョھ1wھ|MóYھóYھwھ|MY6:ھ#wھ|MY6:ھP WY6:ھ#Y6:ھ#Y6:ھP W'f=ھY6:ھP W=ھ|M'f=ھ'f=ھ=ھ|M=ھ=ھ|M~=ھ1=ھ=ھ~=ھ1p)>ھP/*>nGa>0*>/侰Ga>Xc>nGa>0*>/侰Ga>Xc>/侰Ga>Xc>nGa>K3>Z,H> G,H>ʡž Gש^ʾJ*>֩^1J*>sTV104>T|ʾD=ש^ʾJ*>tTVn04>tTVn04>T|nD=T|ʾD=T|nD=nS=T|ʾD=T|ʾD=nS=ʾS=ʾS=nS= ƋʾC|nS=䰋n֓ ƋʾC| ƋʾC|䰋n֓ Ƌ1C|44=ˡž(-;nŌH=ˡž0-;nŌG=n0H=ˡž0H=ˡž0G=n0k>n1s>0fjK3>Z>n0fjK3>Z,H>ʡž G>n0fj>n0fj,H>ʡž Gk>n1s,H>ʡž Gk>ʡž1sk>n1sk>n1sk>ʡž1sH=ˡž0 Ƌ1C|䰋n֓䰋1侀֓䰋n֓]ڄn 䰋1侀֓䰋1侀֓]ڄn ]ڄ1 ]ڄn jn]ڄ1 ]ڄ1 jnj1侀jnsTV104>tTVn04>sTV104>!1ptTVn04>tTVn04>!1p!np!1p?ƽ0侨>!np!np?ƽ0侨>Aƽn>\I?v=\I?v̽\I?=\I?v̽\I? ̽\I?=\I?=\I? ̽\I?s=\I? ̽\I?s̽\I?s=1>X>\I?=}|> \>\I?=}|>=}|> \>]2 =3B2; Ƌ1C|C͵=0(T}>/ي64=0(T}>/ي)T>/ G64=0(64=0()T>/ Gq)>/P)T>/ GAI>/` q)>/Pq)>/P~=/侰164=0(~=/侰1=0侐|M64=0(64=0(=0侐|MM;0侘Ō=0侐|Mt6:0P WM;0侘ŌM;0侘Ōt6:0P W~0t6:0P Ww0侐|M~0~0w0侐|M1侀xw0侐|M 1侰11侀x1侀x 1侰1<1侠wO 1侰1&1P<1侠wO9!2p>]2 = P1@g?=]2 = Ƌ1C| P1@g?= P1@g?= Ƌ1C|T1侀 Ƌ1C|䰋1侀֓T1侀T1侀䰋1侀֓gF1@ 䰋1侀֓]ڄ1 gF1@ gF1@ ]ڄ1 &1P]ڄ1 j1侀&1P&1Pj1侀<1侠wOa0侐A>!1p?1侰>!1psTV104>?1侰>?1侰>sTV104>|81 =sTV104>֩^1J*>|81 =|81 =֩^1J*> P1@g?=֩^1J*>ѐ1`>> P1@g?= P1@g?=ѐ1`>>9!2p>AI>/` )T>/ G X>/侀)T>/ G>/ G X>/侀 X>/侀>/ GrBS>/@g?=>/ G>/侠Y>rBS>/@g?=rBS>/@g?=>/侠Y>V;>/ =>/侠Y>Xc>/侰Ga>V;>/ =V;>/ =Xc>/侰Ga>>/侰>Xc>/侰Ga>0*>/侰Ga>>/侰>>/侰>0*>/侰Ga>ӽ=0侐A>0*>/侰Ga>K=/侐o>ӽ=0侐A>ӽ=0侐A>K=/侐o>=0PT>K=/侐o>!=0x<>=0PT>=0PT>!=0x<>0`T>!=0x<>3;0nj>0`T>0`T>3;0nj>a0侐A>3;0nj>?ƽ0侨>a0侐A>a0侐A>?ƽ0侨>!1p}|> ̽}|>v̽\I? ̽}|>v̽\I?s̽\I? ̽\I?s=}|>v=\I?=}|>v=}|>=\I?=}|>v=\I?s=}|>v̽\I?s=\I?s̽}|>v̽o> Go> G G$ ?X>\I?v=1>X>1>nX>\I?v=\I?v=1>nX>nX>>/侠Y>1>nX>Xc>nGa>>/侠Y>>/侠Y>Xc>nGa>Xc>/侰Ga>\I?v= G/侠Y>o> Go> G>/侠Y>>/ G>n0fj>nJ>0fj>nJ>J>0fj>nJ *I>n[ >J *I>n[ *I>[ >J *I>[ *I>n[ 8iN> *I>n[ x`i>n rٽ8iN>8iN>x`i>n rٽ8iN> 8iN> x`i>n rٽw`i>  rٽx`i>n rٽ}|>n@Kw`i>  rٽw`i>  rٽ}|>n@K}|> @Kwھ|Mt6:0P WY6:ھP Wt6:0P W=0侐|MY6:ھP WY6:ھP W=0侐|M=ھ|M=0侐|M~=/侰1=ھ|M=ھ|M~=/侰1~=ھ1~=/侰1q)>/P~=ھ1~=ھ1q)>/Pp)>ھPq)>/PAI>/` p)>ھPp)>ھPAI>/` @I>ھ` AI>/` X>/侀@I>ھ` @I>ھ` X>/侀 X>ھ X>/侀rBS>/@g?= X>ھ X>ھrBS>/@g?=qBS>ھ@g?=rBS>/@g?=V;>/ =qBS>ھ@g?=qBS>ھ@g?=V;>/ =U;>ھ =V;>/ =>/侰>U;>ھ =U;>ھ =>/侰>>ھ>>/侰>ӽ=0侐A>>ھ>>ھ>ӽ=0侐A>ӽ=ھA>ӽ=0侐A>=0PT>ӽ=ھA>ӽ=ھA>=0PT>=ھPT>=0PT>0`T>=ھPT>=ھPT>0`T>ھ`T>0`T>a0侐A>ھ`T>ھ`T>a0侐A>aھA>a0侐A>?1侰>aھA>aھA>?1侰>@ھ>?1侰>|81 =@ھ>@ھ>|81 =}8ھ =|81 = P1@g?=}8ھ =}8ھ = P1@g?= Pھ@g?= P1@g?=T1侀 Pھ@g?= Pھ@g?=T1侀TھT1侀gF1@ TھTھgF1@ hFھ@ gF1@ &1PhFھ@ hFھ@ &1P&ھP&1P 1侰1&ھP&ھP 1侰1 ョھ1 1侰1w0侐|M ョھ1 ョھ1w0侐|Mwھ|Mw0侐|Mt6:0P Wwھ|M}|>n \>1>nX>}|> \>1>nX>1>X>}|> \>óYshѾY6:ھ#B6:shѾ#Y6:ھ#'f=ھB6:shѾ#B6:shѾ#'f=ھ'f=shѾ'f=ھ=ھ'f=shѾ'f=shѾ=ھ=rhѾ=ھ*>ھ ף=rhѾ=rhѾ*>ھ ף*>rhѾ ף*>ھ ףA">ھ*>rhѾ ף*>rhѾ ףA">ھA">rhѾA">ھA">ھrhѾA">rhѾA">ھrhѾھ<*>ھף=A">rhѾrhѾ<*>ھף=*>rhѾף=*>ھף==ھ`=*>rhѾף=*>rhѾף==ھ`==rhѾ`==ھ`='f=ھ>=rhѾ`==rhѾ`='f=ھ>'f=shѾ>'f=ھ>Y6:ھ#>'f=shѾ>'f=shѾ>Y6:ھ#>B6:shѾ#>Y6:ھ#>óYھ>B6:shѾ#>B6:shѾ#>óYھ>óYshѾ>óYھ>hϽھ`=óYshѾ>óYshѾ>hϽھ`=hϽthѾ`=hϽھ`=RG ھף=hϽthѾ`=hϽthѾ`=RG ھף=RG thѾף=RG ھף=iھhϽthѾ`=hϽthѾ`=thѾ`!>óYshѾ>thѾ`!>_pshѾ0=>óYshѾ>óYshѾ>_pshѾ0=>B6:shѾ#>_pshѾ0=>B6:shѾG>B6:shѾ#>B6:shѾ#>B6:shѾG>'f=shѾ>B6:shѾG>C}=shѾ0=>'f=shѾ>'f=shѾ>C}=shѾ0=>=rhѾ`=C}=shѾ0=>=rhѾ`!>=rhѾ`==rhѾ`==rhѾ`!>*>rhѾף==rhѾ`!>'#>rhѾ=*>rhѾף=*>rhѾף='#>rhѾ=A">rhѾ<'#>rhѾ=?>rhѾ@v=A">rhѾrhѾ@v=JI>rhѾA">rhѾrhѾrhѾA">rhѾ㼁JI>rhѾ?>rhѾvA">rhѾA">rhѾ㼜?>rhѾv*>rhѾ ף?>rhѾv'#>rhѾ*>rhѾ ף*>rhѾ ף'#>rhѾ=rhѾ'#>rhѾ=rhѾp!=rhѾ=rhѾ=rhѾp!'f=shѾ=rhѾp!C}=shѾ0='f=shѾ'f=shѾC}=shѾ0=B6:shѾ#C}=shѾ0=B6:shѾ GB6:shѾ#B6:shѾ#B6:shѾ GóYshѾB6:shѾ G_pshѾ0=óYshѾóYshѾ_pshѾ0=hϽthѾ_pshѾ0=thѾp!hϽthѾhϽthѾthѾp!RG thѾ ףthѾp!thѾRG thѾ ףRG thѾ ףthѾithѾthѾKrhѾ=$p!=$p!'#>rhѾ'#>$'#>rhѾ꽜?>rhѾv'#>$'#>$꽜?>rhѾv?>$v?>rhѾvJI>rhѾ?>$v?>$vJI>rhѾJI>$JI>rhѾ?>rhѾ@v=JI>$JI>$?>rhѾ@v=?>$@v=?>rhѾ@v='#>rhѾ=?>$@v=?>$@v='#>rhѾ='#>$='#>rhѾ==rhѾ`!>'#>$='#>$==rhѾ`!>=$`!>=rhѾ`!>C}=shѾ0=>=$`!>=$`!>C}=shѾ0=>C}=%0=>C}=shѾ0=>B6:shѾG>C}=%0=>C}=%0=>B6:shѾG>6:%G>B6:shѾG>_pshѾ0=>6:%G>6:%G>_pshѾ0=>_p%0=>_pshѾ0=>thѾ`!>_p%0=>_p%0=>thѾ`!>&`!>thѾ`!>thѾ=&`!>&`!>thѾ=&=thѾ=K>&YyK<&vK<&vd>>&YyF&d>>&YyH&F&F&H&K<&@v=H&d>>&@Yy=K<&@v=K<&@v=d>>&@Yy=&=d>>&@Yy=#!& %=&=&=#!& %=&`!>#!& %=h&3#>&`!>&`!>h&3#>_p%0=>h&3#>r%?>_p%0=>_p%0=>r%?>6:%G>r%?>6:%PI>6:%G>6:%G>6:%PI>C}=%0=>6:%PI>+=%?>C}=%0=>C}=%0=>+=%?>=$`!>+=%?>^=$3#>=$`!>=$`!>^=$3#>'#>$=^=$3#>$>$ %='#>$='#>$=$>$ %=?>$@v=$>$ %=$@Yy=?>$@v=?>$@v=$@Yy=JI>$$@Yy=VK>$JI>$JI>$VK>$?>$vVK>$$Yy?>$v?>$v$Yy'#>$$Yy$>$`%'#>$'#>$$>$`%=$p!$>$`%^=$3#=$p!=$p!^=$3#C}=%0=^=$3#+=%?C}=%0=C}=%0=+=%?6:% G+=%?6:%pI6:% G6:% G6:%pI_p%0=6:%pIr%?_p%0=_p%0=r%?&p!r%?h&3#&p!&p!h&3#&h&3##!&`%&r ?6:%pI6: pI6:%pI+=%?6: pI6: pI+=%?+= ?+=%?^=$3#+= ?+= ?^=$3#^=3#^=$3#$>$`%^=3#^=3#$>$`%$>`%$>$`%$Yy$>`%$>`%$YyYy$YyVK>$YyYyVK>$VK>VK>$$@Yy=VK>VK>$@Yy=@Yy=$@Yy=$>$ %=@Yy=@Yy=$>$ %=$> %=$>$ %=^=$3#>$> %=$> %=^=$3#>^=3#>^=$3#>+=%?>^=3#>^=3#>+=%?>+= ?>+=%?>6:%PI>+= ?>+= ?>6:%PI>6: PI>6:%PI>r%?>6: PI>6: PI>r%?>r ?>r%?>h&3#>r ?>r ?>h&3#>i 3#>h&3#>#!& %=i 3#>i 3#>#!& %=#! %=#!& %=d>>&@Yy=#! %=#! %=d>>&@Yy=d>> @Yy=d>>&@Yy=H&d>> @Yy=d>> @Yy=H&H H&d>>&YyH H d>>&Yyd>> Yyd>>&Yy#!&`%d>> Yyd>> Yy#!&`%#! `%#!&`%h&3##! `%#! `%h&3#i 3#h&3#r%?i 3#i 3#r%?r ?r%?6:%pIr ?=p!^=3#'#>^=3#$>`%'#>'#>$>`%?>v$>`%Yy?>v?>vYyJI>YyVK>JI>JI>VK>?>@v=VK>@Yy=?>@v=?>@v=@Yy='#>=@Yy=$> %='#>='#>=$> %==`!>$> %=^=3#>=`!>=`!>^=3#>C}= 0=>^=3#>+= ?>C}= 0=>C}= 0=>+= ?>6: G>+= ?>6: PI>6: G>6: G>6: PI>_p 0=>6: PI>r ?>_p 0=>_p 0=>r ?> `!>r ?>i 3#> `!> `!>i 3#> =i 3#>#! %= = =#! %=K< @v=#! %=d>> @Yy=K< @v=K< @v=d>> @Yy=F d>> @Yy=H F F H K< vH d>> YyK< vK< vd>> Yy d>> Yy#! `%  #! `% p!#! `%i 3# p! p!i 3#_p 0=i 3#r ?_p 0=_p 0=r ?6: Gr ?6: pI6: G6: G6: pIC}= 0=6: pI+= ?C}= 0=C}= 0=+= ?=p!+= ?^=3#=p!_pn0=6: G5:n G6: GC}= 0=5:n G5:n GC}= 0=C}=n0=C}= 0==p!C}=n0=C}=n0==p!=np!=p!'#>=np!=np!'#>'#>n'#>꽜?>v'#>n'#>n꽜?>v?>nv?>vJI>?>nv?>nvJI>JI>nJI>?>@v=JI>nJI>n?>@v=?>n@v=?>@v='#>=?>n@v=?>n@v='#>='#>n='#>==`!>'#>n='#>n==`!>=n`!>=`!>C}= 0=>=n`!>=n`!>C}= 0=>C}=n0=>C}= 0=>6: G>C}=n0=>C}=n0=>6: G>5:nG>6: G>_p 0=>5:nG>5:nG>_p 0=>_pn0=>_p 0=> `!>_pn0=>_pn0=> `!>罙n`!> `!> =罙n`!>罙n`!> =n= =K< @v=n=n=K< @v=K]ʾ =]ʾ =9!2p>9!ʾp>9!2p>ѐ1`>>9!ʾp>9!ʾp>ѐ1`>>ѐʾ`>>֩^1J*>ש^ʾJ*>ѐ1`>>ש^ʾJ*>ѐʾ`>>ѐ1`>> ƋʾC|3Bʾ;ʾS=3Bʾ;]ʾ =ʾS=ʾS=]ʾ =T|ʾD=]ʾ =9!ʾp>T|ʾD=T|ʾD=9!ʾp>ש^ʾJ*>9!ʾp>ѐʾ`>>ש^ʾJ*>>/ G)T>/ G)T>ʡž Go> G>/ Go> G>/ G)T>ʡž Go> Go> G)T>ʡž G,H> G)T>ʡž G,H>ʡž G,H> GT}>/يS}>ʡžي)T>/ GS}>ʡžي)T>ʡž G)T>/ G,H>ʡž G)T>ʡž Gk>ʡž1s)T>ʡž GS}>ʡžيk>ʡž1sk>ʡž1sS}>ʡžيH=ˡž0S}>ʡžيB͵=ˡž(H=ˡž0H=ˡž0B͵=ˡž(44=ˡž(C͵=0(B͵=ˡž(T}>/يB͵=ˡž(S}>ʡžيT}>/ي64=0(44=ˡž(C͵=0(44=ˡž(B͵=ˡž(C͵=0(8iN> $ ? 8iN>$ ? $ ?8iN>w`i>  rٽ}|> @K}|> ̽\I? ̽$ ? }|> ̽$ ? 8iN> }|> ̽}|> ̽8iN> w`i>  rٽ?ƽ0侨>3;0nj>Aƽn>3;0nj>;nnj>Aƽn>DATA 1DATA`I..edge_verts @7R2.select_edge 1XRDATA6 @7u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA 1DATAh`o0 .corner_vert 2R .corner_edge 2R) 3RDATAx 2L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATAx 2L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATAx 3sf9ܽA-ʱ1Ѩf9x1\+*Ί2U1ר))wU1a902I-W88hI-7~`%ψ H=ֈ =A=檝HH"ij|E0]ijSijE^>w|%fʞ|ߊkE%f%f0}kK9 kx9 9 0xםvxdY~vgD(\GoW A3E3sO/nss s  Ml %A DAMA:͆$".߅8. ..͍pn]ppněGn*gG|GgݹKg9\G׻Kr W զ=f#m=8,z=W ϱ,ױ,sW lW jݕl} D֫JbJܫJZI֭(IJIiO!ƧiOxDiOْGxexǥG4DiݒG\@WDD@W=\G=.RW RW0J [ 0J80J+JK+J+JJӬJsJI+iI.I .A..7. n.v׿Eگ : EPs!Mܺ!!!\<ݨ!!C<<!ouNބ!O!uuO!*O! ! !4o !ᒵ E44j ڇu!?ۺ!!s!Mܺ!!!\<ݨ!!C<<!ouNބ!O!uuO!*O! ! !4o !ᒵ F44j ڇߵ s,G!,! s,H!ӓ,!s!Mܺ!!!\<ݨ!!C<<!ouNބ!O!uuO!*O! ! !o !G-EdG-Ȉ!r989-8֡-R8^nBظH \M^Ps|CQ\=Qn4T6Q`l@VQ`:0@40@}:[[P: 4L}:)@QL4N/zQɿtnE4;mXDwbsbwǁSRnB=f6F ăj.uA:9beܭr`SʁS`qb]t Q\.;QӅ6Q-"-ե6x0fΡ7R6T9/9/ۨQ6|$n756V"D":56}/ER706W. .06~/FM74)n..4)0K*-CC..CCɺ:xCƋ=\::!=T)y\Ml|C5Cԉ.꨷55`.7/E=&Nw6yw6R=&838jWj27h27=\缐h7h=\"|=\|\| %Ԧ:A&Ӧ:7A0!nڷG-=@L1⧖ L1qТ }̖ Ea}+bfb}7 7論  VϖESĥE!ƖE[SQS 1PQQ*1Qz1I! Q5Q!BQ!H.Q*!ڬ!+ɪڹԲԟ$nתLRm$/$˦MR;˶9MR9QDͶx9QN.9Q]".!.`]Q#xQҿ Qn =^   =" =Ꮗ"ˇ"9ܵyւ.D՟̂.ȓ*+زe[neCeK U`ƺK K Zepӡ--3-Zס-ٲWѥw1W6˻eܲWNƻNJNٗNЯJYJMNEޗNiځV EEVx߁VzH[Rx\xH[)Q۩kw Afw`wƫ AyWh/LRWh$vMnLr4>= E>  ߥGr[) ̒K):!qKגK!&I!c&I&Ic>8MGHZ}HZy}5}!yiܹirxmx%!9 5(RT{t^{q,ft^{3v_S3v{[_|.v*k%-bz| !l_oŲoGlq0l+}fP;/);/f ^%gab_y*h#b^i^$#b/_ybiWH _^_!WHSvUIٲoORQRo^xooATwq^xq^'AT^xTضi$q^xq^'ir _xjuy^v^&uկ._xu֑nG^p^%nb_ynKj(^i^$Kjw_yjdf _^ _!dfU_'yfet_Rt_ePgT3v=f"dS2SdG^xHe5כoNq^xq^'o _xopg^v^&gc._x\h֥]Ƞ^p^%]b_y1^jx^i^$jx믥_yx!\ _^ _!!\_'y\ggt_Rt_gg^gT3vgmBS2Sm^x.ngq^xq^'gc _x[hg^v^&gb._xKhg^pwj|a-|V\mfƮ{]@>g\dfȠ\Z\qcfî]8fc3m]^]t3m]3ؗmgϠ:]`:]vgʮ ^0آgSgΠ_]b_]wgʮ2^.ؘgTf͠q]cq]xfȮe|vgW׵fˠ>e>efƮ!\a>g\dfȠS[JS[ccfî\TfceŠ[Q[ie]I؅fl*mV\VV\m*m{]?؏mgΠ\Z\qgʮ]8ؗgTf͠]^]tfȮ]3vgW׵fˠ:]`:]vfƮ ^0>g\cfȠ_]b_]wcfî2^.fceŠq]cq]xee|ׅfl*m>e>e*m!\a؏mgΠS[JS[cgʮ\TؗgTf͠[Q[ifȮ]IvgW׵fˠV\V)>JE"2)> >Q""Ơ >M" >>"">bW#x>=##ڢ=?c<#==T=#<#2=r#aߙ=VI=#1͉#I=A#I=<%##gc)>JE"2)> >Q""Ơ >M" >>"">bW#x>=##ڢ=?c<#==T=#<#2=r#aߙ=VI=#1͉#I=A#I=<%##gc "Cm `DQpB( ? B D3pB+ > B CphB. > hB C pMB/ > MB CoDB0 > DB Co5 > 5K76jpD > pD EpC ? C3 )EpC ? CR Dup"C$ > "Cm `DQpB( > B D3pB+ ? B CphB. ? hB C pMB/ > MB CoDB0 > DB Co5 > 5K76jpD > pD EpC > C3 )EpC > CR Dup"C$ ?z?@mbz@m_@mz0z?@mbz@m`@mz/z?@mbz@m`@mz/z?@mbzAm`@mz/z?@mbzAm`@mz/z?@mbz@m_@mz/z?AmbzAm`Amz/z?AmbzAm`@mz/z?@mbz@m_@mz/z?@mbz@m_Amz/z?AmazAm`@mz/z?@mbz@m`@mz/z?@mbz@m_@mz/z?@mazAm`@mz/z?@mbzAm`Amz/z?Ambz@m`@mz/z?@mbz@m`@mz/z?@mbz@m_Amz/z?@mbzAm`Amz/z?@mazAm_@mz/֌[%DDDD[%[%DDDD[%[%DDDD[%[%DDDDZ%[%DDDD[%[%DDDD[%[%DDDD[%[%DDDD[%[%DDDD[%[%DDDD[%[%CDCD[%[%DDDDZ%Z%DDDD[%[%DDDD[%[%DDDD[%[%DDDD[%[%DDDD[%Z%DDDD[%[%DDDD[%[%DDDD[%w?@maw@m`@mw/w?@mbw@m`@mw0w?@mbw@m`@mw/w?@mbw@m`@mw/w?@mbw@m`@mw/w?@mbw@m`@mw/w?@mbw@m_@mw/w?AmbwAm`Amw/w?AmbwAm`Amw/w?@mbw@m_@mw/w?@mbw@m`@mw/w?AmawAm`@mw/w?@mbw@m`@mw/w?@mbw@m_@mw/w?@maw@m`@mw/w?@mbw@m`Amw/w?Ambw@m_@mw/w?Ambw@m`@mw/w?@mbwAm_Amw/w?@mbw@m`@mw/ rQ s2 pss] `M~ pcLcL 0dd qcc d\ qdd dY p8d8d o pMo~Mo= m pmom0 qY pqqN qX pqqN qh pppH o~ poo? Mm plil+ m p1mk1m- m pQmlQm. VrP prrQ =m qlil+ xm q&mk&m- m pKmlKm. m p[mm[m. [rP p rJJƻ^aJ͏Q^ayMSņM^xyM1^KO^ӃU]Ks]K뤃U.0IU`]HH]ѾMigDkCH0\kCJ0\WG3%G43%u3%'4]@"4?U7I]@օ]@U7GŧU7nڷGGfN %$"[sff$Z$E7ڦ$B1x7m*udVodzo{1^a@ <^a,<)G@ w@ &<)!Â<)>HBp>Ho#P:b>Pu&uU &oM¾UP(v9c-g9cz>%g{ Q#w/MȻ> Ϯ"n^ t Q h')0/)9X0DATAxM2.select_polyZXRDATALZDATA,  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME 6HME0.038 A-Xm0I `I `M q0 ';?#=-D?x9D?&9D?&9<'>D?x9/0?x9'>D?x9D?x9<'>D?&9/0?&9'>D?x9/0?&9/0?x9'>D?x9'>D?9D?9/0?9D?9eE?sļeE?steE?<ļeE?steE?&teE?<ļeE?9eE?<9eE?ReE?<9eE?<ļeE?ReE?ReE?<ļeE?&ReE?<ļeE?&teE?&ReE?st=eE?&t=)6?st=eE?&t=)6?&t=)6?st=eE?&t=eE?&Q<)6?&t=eE?&Q<'>D?&Q<)6?&t='>D?&Q<'>D?&9<)6?&t='>D?&9D?&ReE?&t)6?&t'>D?&R'>D?&R)6?&t'>D?&9)6?&t/0?&9'>D?&9eE?&teE?st)6?&teE?st)6?st)6?&teE?steE?sļ)6?steE?sļv1?sļ)6?steE?sļeE?<ļv1?sļeE?<ļv1?<ļv1?sļeE?<ļeE?<9v1?<ļeE?<9/0?<9v1?<ļv1?<ļ/0?<9/0?D?9/0?<9eE?<9'>D?9'>D?9eE?<9eE?9eE?9<eE?<9<'>D?9<eE?<9D?9<'>D?9D?ReE?9'>D?R'>D?9eE?9eE?Q<'>D?Q<eE?&Q<'>D?Q<'>D?&Q<eE?&Q<'>D?ReE?R'>D?&ReE?ReE?&R'>D?&R'>D?Q<eE?Q<'>D?9<eE?Q<eE?9<'>D?9<'>D?Q<'>D?9<'>D?&Q<'>D?9<'>D?&9<'>D?&Q<'>D?R'>D?&R'>D?9'>D?&R'>D?&9'>D?9'>D?x9'>D?x9<'>D?&9'>D?x9<'>D?&9<'>D?&9'>D?&9'>D?&9<'>D?9'>D?&9<'>D?9<'>D?9/0?<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATAIDATAh q0 .corner_vert NR .corner_edge %NR) *NXRDATA  NL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA  %NL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA  *NsrO)>NO1 `˟>N@R2PPR2`=O1=rO)bۣ3bwﻍw_bpx4|q2ϋ}qR|qİX4֍}_b(XǪ?; G̮3ʹGm<&^PK<&ʽM,^PֽMUi ^PUUiίaA_P7^PaR{_K~ctI\˺I\_!,_W(a^_c`a/š"յ4;",ok^L۝.^LB:|<|X|;|onP_PDDIԥ__}DI~ ~7ҙ}զ7 ޱd}U}d5pl0İdQ5{dT6,5{@*5{6~ބ-(Ia\(IOa\a\Oū +{xpt}ɖ2t}XhɖBi͚ B Zq@Ohq@Obuhq$hqobLbP-4L}Ur=pf-N=pK--K`L!K NLkL3NP_V{*NJE&V{Jt/c.Yn/ceq`Yn$S`YnDXnr`XFg`[Yq`]ųYAׄ}J} 5Jߢ7iapUkƕ4fUk 7Rj6fiRjn>z{*p*ݑez{pc2qpc#8qv|}ŸcԞ}V-cr=pfV-=p#8V-V-j#8-cղ#8pc ׸c`O ҩ ֫An. # n.BhQo.<=A=薩DATA0A-~DATA I0position O R2 .select_vert .X RDATA( Ow`vH=ѪI b`"=3~I =vH=3~I =H>=ѪI b`"=vH=N=MC =M7m =)HЫ=)HЫ=CH}̩`=MC =MC =CH}̩`=M=CH}̩`=H&=M=M=H&=M~@=H(a@=M~@=H&=H(a@=M=M~@=H(a@=H:h=M=H:h=M+=M=H:h=H>=|Md .=H:h=|Md .=M+=3~I =Nj `=H>=H>=Nj `=|Md .=)HЫ=M7m =vH=M7m =N=vH=|Md .=Nj `=N5q`=N5q`=M˧Ъ=N װ=N װ=|Md .=N5q`=NL=M˧Ъ=M7m =M˧Ъ=N=M7m =|Md .=N װ=M+=M+=N װ=M=N װ=N ŵ=M=M=N ŵ=M~@=M~@=N ŵ=M=M=N ŵ=MC =N ŵ=NL=MC =MC =NL=M7m =^ͭX= d0d=z:`=^ͭX=z:`=íZ`=íZ`=z:`=;ȭ`=íZ`=}=m/<`= d0d=ɭ|Ϧ=z:`=}=íZ`=cҭZU=cҭZU=íZ`=;ȭ`=z:`=ɭ|Ϧ=׭1F`-=;ȭ`=z:`=iέr=iέr=z:`=׭1F`-=ɭ|Ϧ= d0d=eέh =eέh = d0d=^ͭX=íZ`=m/<`=ȭ$`=ȭ$`=m/<`=ɭ`v=m/<`=}=ɭ`v=7ߺs@=eέh =xߺ=eέh =^ͭX=xߺ=^ͭX=íZ`=xߺ=xߺ=íZ`=%ߺ1=íZ`=ȭ$`=%ߺ1=%ߺ1=ȭ$`=ߺN`f=ȭ$`=ɭ`v=ߺN`f=ߺN`f=ɭ`v=8ۺ%=ɭ`v=}=8ۺ%=}=cҭZU=8ۺ%=8ۺ%=cҭZU=Ếhܣ =cҭZU=;ȭ`=Ếhܣ =Ếhܣ =;ȭ`=%ߺH e=;ȭ`=iέr=%ߺH e=%ߺH e=iέr=ߺ@=iέr=׭1F`-=ߺ@=׭1F`-=ɭ|Ϧ=ߺ@=ߺ@=ɭ|Ϧ=7ߺs@=ɭ|Ϧ=eέh =7ߺs@=޺Cા=⺾᧾=7ߺs@=7ߺs@=⺾᧾=ߺ@=⺾᧾=غC=ߺ@=ߺ@=غC=%ߺH e=غC=غsd=%ߺH e=غsd=غ=%ߺH e=%ߺH e=غ=Ếhܣ =غ=غ#٢ĸ=Ếhܣ =Ếhܣ =غ#٢ĸ=8ۺ%=غ#٢ĸ=غw7 =8ۺ%=غw7 =غN=8ۺ%=8ۺ%=غN=ߺN`f=غN=غb`n=ߺN`f=ߺN`f=غb`n=%ߺ1=غb`n=غ _ =%ߺ1=غ _ =غfA =%ߺ1=%ߺ1=غfA =xߺ=غfA =޺Cા=xߺ=xߺ=޺Cા=7ߺs@=(9 Ѧ=޺Cા=9Ԃ`=޺Cા=غfA =9Ԃ`=9Ԃ`=غfA =:4`6=غfA =غ _ =:4`6=:4`6=غ _ =:P=غ _ =غb`n=:P=:P=غb`n=:=غb`n=غN=:=:=غN=dک У=(9 Ѧ=>@=(9 Ѧ=9Ԃ`=>@=>@=9Ԃ`=>}`-=9Ԃ`=:4`6=>}`-=>}`-=:4`6=> =:4`6=:P=> => =:P=m>=:P=:=m>=m>=:=ײ>Y@=:=dY@=ײ>Y@=dΥ`=>Υ`=d룾`P=d룾`P=>룾`P=d@`=´>=d@`=-Z:U =´>=´>=-Z:U =>T7=-Z:U =K=>T7=K=ch!4 =>T7=>T7=ch!4 =>GRj=ch!4 =9?r`=>GRj=>GRj=9?r`=>EϠ=9?r`=:I@ȟ=>EϠ=>EϠ=:I@ȟ=>۟=:I@ȟ=9=>۟=>۟=9=>ک У=9=(9 Ѧ=>ک У=m>=ײ>Y@=>Υ`=?qǧ=>@=?CE==>@=>}`-=?CE==?CE==>}`-=?7=>}`-=> =?7=?7=> =? N=> =m>=? N=? N=m>=?}e =m>=>Υ`=?}e =?}e =>Υ`=?& >=>Υ`=>룾`P=?& >=?& >=>룾`P=?5a =>룾`P=´>=?5a =?5a =´>=?=´>=>T7=?=?=>T7=?4墾#=>T7=>GRj=?4墾#=?4墾#=>GRj=?8P =>GRj=>EϠ=?8P =?8P =>EϠ=?}mའ=>EϠ=>۟=?}mའ=?}mའ=>۟=?=>۟=>ک У=?=?=>ک У=?qǧ=>ک У=>@=?qǧ=S?̣`=?4墾#=?[=?4墾#=?8P =?[=?[=?8P =S?Ц=?8P =?}mའ=S?Ц=?}mའ=?=S?Ц=S?Ц=?=?V `ب=?=?qǧ=?V `ب=?V `ب=?qǧ=S?ɱ=?qǧ=?CE==S?ɱ=?CE==?7=S?ɱ=S?ɱ=?7=?>`=?7=? N=?>`=?>`=? N=S?V=? N=?}e =S?V=?}e =?& >=S?V=S?V=?& >=?Ǥ=?& >=?5a =?Ǥ=?Ǥ=?5a =S?̣`=?5a =?=S?̣`=?=?4墾#=S?̣`=KH;ದ=?V `ب=CH}̩`=?V `ب=S?ɱ=CH}̩`=CH}̩`=S?ɱ=.Hǩu=S?ɱ=?>`=.Hǩu=.Hǩu=?>`=H&=?>`=S?V=H&=H&=S?V==HAঽ=S?V=?Ǥ==HAঽ==HAঽ=?Ǥ={H`O=?Ǥ=S?̣`={H`O=S?̣`=?[={H`O={H`O=?[=H>=H>=?[=vH=?[=S?Ц=vH=vH=S?Ц=KH;ದ=S?Ц=?V `ب=KH;ದ=vH=KH;ದ=)HЫ=KH;ದ=CH}̩`=)HЫ=CH}̩`=.Hǩu=H&=H&==HAঽ=H(a@=H(a@==HAঽ=H:h==HAঽ={H`O=H:h=H:h={H`O=H>=M˧Ъ=N5q`=I(Ȧ=N5q`=kxIs ԭ=I(Ȧ=3~I =kxIs ԭ=Nj `=kxIs ԭ=N5q`=Nj `=M˧Ъ=I(Ȧ=N=I(Ȧ=ѪI b`"=N=Kv=N װ=Kצ}=N װ=M˧Ъ=Kצ}=M˧Ъ=NL=Kצ}=Kצ}=NL=KSէ`=NL=N ŵ=KSէ`=KSէ`=N ŵ=:K3妾=N ŵ=N װ=:K3妾=:K3妾=N װ=Kv=Kצ}=:K3妾=Kv=KSէ`=:K3妾=Kצ}=kxIs ԭ=ѪI b`"=I(Ȧ=ѪI b`"=kxIs ԭ=3~I =ʾ;\d;ۉ\d@nC=ʾ;ۉ\d@nC=ۉʾ@nC=ۉ\d@nC=5݃\d=ۉʾ@nC=ۉʾ@nC=5݃\d=5݃ʾ=5݃\d=wXt\d >5݃ʾ=5݃ʾ=wXt\d >wXtʾ >wXt\d >BZ\d 0>wXtʾ >wXtʾ >BZ\d 0>BZʾ 0>Iʾ 0>BZʾ 0>I_d 0>BZʾ 0>BZ\d 0>I_d 0>Iʾ;Iʾ 0>I_d;Iʾ 0>I_d 0>I_d;ʾ;Iʾ;\d;Iʾ;I_d;\d;Iʾ;ʾ;Iʾ 0>ʾ;ۉʾ@nC=Iʾ 0>ۉʾ@nC=5݃ʾ=Iʾ 0>5݃ʾ=wXtʾ >Iʾ 0>Iʾ 0>wXtʾ >BZʾ 0>I_d 0>BZ\d 0>wXt\d >\d;I_d;ۉ\d@nC=I_d;I_d 0>ۉ\d@nC=ۉ\d@nC=I_d 0>5݃\d=I_d 0>wXt\d >5݃\d=]>zt=]>r=,?zt=]>r=,?r=,?zt=]>zt@ >]>zt=,?zt@ >]>zt=,?zt=,?zt@ >]>mI >]>zt@ >,?mI >]>zt@ >,?zt@ >,?mI >]>I >]>mI >,?I >]>mI >,?mI >,?I >]>&@ >]>I >,?&@ >]>I >,?I >,?&@ >]>&=]>&@ >,?&=]>&@ >,?&@ >,?&=]>=]>&=,?=]>&=,?&=,?=]>>]>=,?>]>=,?=,?>]>p >]>>,?p >]>>,?>,?p >]>lp >]>p >,?lp >]>p >,?p >,?lp >]>r>]>lp >,?r>]>lp >,?lp >,?r>]>r=]>r>,?r=]>r>,?r>,?r=]>r=]>zt=]>r>]>zt=]>zt@ >]>r>]>r>]>zt@ >]>lp >]>zt@ >]>mI >]>lp >]>lp >]>mI >]>p >]>mI >]>I >]>p >]>p >]>I >]>>]>I >]>&@ >]>>]>>]>&@ >]>=]>&@ >]>&=]>=,?=,?&=,?>,?&=,?&@ >,?>,?>,?&@ >,?p >,?&@ >,?I >,?p >,?p >,?I >,?lp >,?I >,?mI >,?lp >,?lp >,?mI >,?r>,?mI >,?zt@ >,?r>,?r>,?zt@ >,?r=,?zt@ >,?zt=,?r=DATA` .DATA`I..edge_verts 43 R2.select_edge. RDATA 43u`    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_DATA`.DATAht0 .corner_vert T. R .corner_edge b.X R) 9 RDATA T.L`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_DATA b.L`   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]DATA 9s`+̻k~P`\+"Sq-ɻm[gS3)9!e=C:Q3X/%A| 1m3n %Nы &\׭.!Y}-ϱ Ŕ#` ')"ӎxG#X.8ْhF\daʳݙ ,IӮ%ltIR~lWUBfXkt+lYkYۄ~+|!mVfIŝ^-^ޯnh%aBժiL=a_峣W:^aTb$fθhYG"^͋E1s^o\uok_l ⣮aqTXE rkbkncҗ qԩzcu$bʳ\GoklYik='Q؟SJ$lf-ADm7ڪO"[ Ƿd‡ 1&Όdꫤ'$^Mtʑ,X4ӴQ]&)9 !cA=1,DS!!'›!4&+I Kԅ Zl"ݧ"\#N&d 0%ۣ}&yC#*4 e fݚ޹A\*e_km) Q  > qO ''"q*$U~פOઝtKtO"vݚPԊNxVxNMu.NֈcIOucsQu#uojQcvM:RTwOvFS!Vw-6Ri"^u 1^JP8uXv~P׾fxVQf1Qy`PyPuDP\[]Vu]>Qҩ=vuoPοxPqV=kxHw{VwuZr,T-&в3(-( s z7(k Th-/m9('jA ZN-ٿJ.(Rz^˿`&k 1B+Z!P'' tb,/ =%*O_ г!ݿ\,2 zɂ. (0+\(.­h)!Θ~!{r`g^ë`V0!ZڪeԪI+!N0"]ڪf٪J-!K0!W۪Uڪ-3K;AՕ% تjF_:  _Īj _(>_b ,{ /!@ԋ!Xտ]!Xվ]!Ԋ!@/! ,{ b(>_k _ê9  _jF_ت5=Օ&-3HXڪQz!R0?#Sڪ%[5!`e^é`數'm }YLJ!8귕 U'̄2^,+'в r)ͧx.`+4 [! ݿ˹ o)%˼ ?tȩ+P^' '["0N+ӿ&زj IV^" ɿ;'̮J ZL,'@(.mT-ҿ'm Z!7뷗 uT'̌],*'в p(̏-ҿs8QQ{?UP.{Ojz&It{4Ptw垩Qe׫]yņ]ҟR>zwWQU"{Ϙ7P2|OjyQzPėw垩Qeת]yņ]ҠR>6zxWQUz8P2։MzNÙwZO/) (f R( ]!۟w%(dє +(}ps%֭%J JѢ Ӈ!2"&^Zbfyڪv9q՚ԫe6{lz zlՠm֬iKW+v8xt!~P13|K"v]{}0SS݌%YZBv#4c<4b>tD_6>l!_tL.{?3\^ EKzh!@r Gg'@(K/6苘 Zx BE̖&S2Ai.YzFcPYV]52\\T:+;TplkXbsC^$~zP maW_$k|P:wh}6|Q}#yՊ}my%yy%yyyգx#yy%xⳬxլx=xⳣx#‚hMx.Ynz.M҂n{n{碝xQn{2l}ϝx̣tdd4IddIt4Њ u ~b¦L_ݤg_QG٭3i_%KDd zZd ޻rzzӧi׭_yڪ-g?h_-g_yܪ?h;"#I9K GV? 22V?ԓ0̷o۷oۓ022V? V?8K GI;"#Ҝyܪ?h-g_?h_yڪ-gՔ!j,. jB.K@wy@IZS`SSZS`y@I@wKB.j. !j,wuitpjiqWcqn\d7cnlnfll~ff f+lf*gkomwnwuiurhgsWbqn\d7cnlnflk~ge f+lf*fmnmwnDATAx M2.select_polyI RDATA IDATA /N !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`ME 6HME0.040"`A-ZZZ$M I `I `#M`v0 3xn=;ߟH?<7?=A=薩DATA`A-y<DATA I0position 4N R2 .select_vert R RDATA8 4NwZТF?MbТ >Mbcg >iТF?Mbcg >iegF?icg >i棾 >egF?iegF?i棾 >棾F?棾 >1< >棾F?棾F?1< >3Z >Đ3Đ!ZF?Đ!ZF?)\!ZF?ĐZ >)\!ZF?ĐZ >ĐZ >)\H)1(Mb'\Ͼ(1(Mb'\Ͼf|(iH)1(Mb'\Ͼf|(iHg|(i'\Ͼf|(i'\Ͼ/(Hg|(iHg|(i'\Ͼ/(H0('\Ͼ/('\Ͼ(H0(H0('\Ͼ(H('\Ͼ('\Ͼ(ĐH(H('\Ͼ(ĐH(ĐH()\H(Đ'\Ͼ()\H(Đ'\Ͼ(Đ'\Ͼ()\H?֣Mb*\>֣Mb*\>;oiH?֣Mb*\>;oiH?oi*\>;oi*\>4vH?oiH?oi*\>4vH?v*\>4v*\>]"H?vH?v*\>]"H?>"*\>]"*\>tCĐH?>"H?>"*\>tCĐH?UCĐH?UC)\H?UCĐ*\>tC)\H?UCĐ*\>tCĐ*\>tC)\DATA\ RDATA`I..edge_verts IM R2.select_edgeRX RDATA IMuZ    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYDATA\R0DATAh`v0 .corner_vert x0 R .corner_edger0 R)y0 RDATAh x0LZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYDATAhr0LZ   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYWDATAhy0sZ>Q *>  ^"mjkj ) _" ) ^"mjlj ) _" ) _"ljmj} ^" )!#n>Q *>  ^"ljlj ) ^" ) ^"njpj * ^" ) ^"ljlj} _" *!#n>Q )>  _"ljmj ) ^" ) ^"njmj ) ^" ) _"ljmj} ^" )!#nDATAx`#M2.select_poly` RX RDATA ` RDATA|$M !$'*-0369<?BEHKNQTWZME %6HME0.041#A-eewe MI I &M`}0 3n=I?b8?p=A=薩DATAA-| DATAI0position x7 R2 .select_vert 9NRDATA4 x7we!ZF?)\kfF?)\!ZF?ĐkfF?)\kfF?Đ!ZF?Đ!ZF?ĐkfF?Đ3>)\w>>)\.ݤ>>Đw>>)\w>>Đ.ݤ>>Đ.ݤ>>Đw>>Đ?>>w>>Đ>>l?>>?>>>>lj>>>>lܥ>>j"j>>j>>ܥ>>j"q>>iܥ>>j">>q>>iq>>i>>S>>Mb>>S>>;ߏS>>MbS>>MbS>>;ߏM>>MbS>>;ߏM>>;ߏM>>Mbu>F?)\u>F?Đw>>)\u>F?Đw>>Đw>>)\,ݤ>F?)\u>F?)\.ݤ>>)\u>F?)\w>>)\.ݤ>>)\,ݤ>F?Đ,ݤ>F?)\.ݤ>>Đ,ݤ>F?)\.ݤ>>)\.ݤ>>Đ,ݤ>F?Đ.ݤ>>Đ?>>,ݤ>F?Đ?>>=>F??>>j>>=>F?=>F?j>>j>F?j>>q>>ij>F?j>F?q>>io>F?iq>>iS>>Mbo>F?io>F?iS>>MbS>F?MbsL>?MbS>F?MbM>Y9?MbS>F?MbS>>MbM>Y9?MbM>Y9?MbS>>MbM>>MbzFЖ?MbI?MbТF?MbI?MbGL#4?MbТF?MbТF?MbGL#4?MbТ >MbGL#4?MbLW9?MbТ >MbТ >MbLW9?MbL >MbsL>?Mb5H>p?MbS>F?Mb5H>p?Mb}C>?MbS>F?MbS>F?Mb}C>?MbТF?Mb}C>?MbbB?MbТF?MbТF?MbbB?MbzFЖ?MbkfF?)\!ZF?)\if >)\!ZF?)\Z >)\if >)\kfF?ĐkfF?)\if >ĐkfF?)\if >)\if >ĐkfF?Đif >Đ >lkfF?Đ >l F?l >lY >j" F?l F?lY >j"YF?j"Y >j"0 >YF?j"YF?j"0 >0F?0 >Т >;ߏ0F?0F?Т >;ߏТF?;ߏТ >;ߏL >;ߏLW9?;ߏТ >;ߏLW9?;ߏТF?;ߏLW9?;ߏGL#4?;ߏТF?;ߏGL#4?;ߏI?;ߏТF?;ߏТF?;ߏI?;ߏТG?;ߏS>F?;ߏsL>?;ߏS>>;ߏsL>?;ߏM>Y9?;ߏS>>;ߏS>>;ߏM>Y9?;ߏM>>;ߏI?;ߏzFЖ?;ߏТG?;ߏzFЖ?;ߏbB?;ߏТG?;ߏТG?;ߏbB?;ߏS>G?;ߏbB?;ߏ}C>?;ߏS>G?;ߏS>G?;ߏ}C>?;ߏS>F?;ߏ}C>?;ߏ5H>p?;ߏS>F?;ߏS>F?;ߏ5H>p?;ߏsL>?;ߏS>F?;ߏS>>;ߏ>>S>F?;ߏ>>>F?>>ܥ>>j">F?>F?ܥ>>j"ܥ>F?j"ܥ>>j">>lܥ>F?j"ܥ>F?j">>l>F?l>>lw>>Đ>F?l>F?lw>>Đu>F?ĐS>F?MbS>F?;ߏo>F?iS>F?;ߏ>F?o>F?io>F?i>F?j>F?>F?ܥ>F?j"j>F?j>F?ܥ>F?j"=>F?ܥ>F?j">F?l=>F?=>F?>F?l,ݤ>F?Đ>F?lu>F?Đ,ݤ>F?Đ,ݤ>F?Đu>F?Đ,ݤ>F?)\u>F?Đu>F?)\,ݤ>F?)\L >MbL >;ߏТ >MbL >;ߏТ >;ߏТ >MbТ >MbТ >;ߏcg >iТ >;ߏ0 >cg >icg >i0 >棾 >0 >Y >j"棾 >棾 >Y >j"1< >Y >j" >l1< >1< > >lZ >Đ >lif >ĐZ >ĐZ >Đif >ĐZ >)\if >Đif >)\Z >)\M>Y9?MbM>>MbM>Y9?;ߏM>>MbM>>;ߏM>Y9?;ߏLW9?;ߏL >;ߏLW9? L >;ߏL >MbLW9? LW9? L >MbLW9?Mb}C>?;ߏbB?;ߏ}C>?MbbB?;ߏbB?Mb}C>?MbТF?̬S>F?̬ТF?MbS>F?̬S>F?MbТF?MbТF?;ߏТG?;ߏТF?MbТG?;ߏТG?̬ТF?MbТF?MbТG?̬ТF?̬S>F?̬S>G?̬S>F?MbS>G?̬S>G?;ߏS>F?MbS>F?MbS>G?;ߏS>F?;ߏТG?̬S>G?̬ТF?̬S>G?̬S>F?̬ТF?̬S>G?;ߏS>G?̬ТG?;ߏS>G?̬ТG?̬ТG?;ߏH()\H))\H(ĐH))\H)ĐH(ĐH(ĐH)ĐH(H)ĐH)lH(H(H)lH0(H)lHu)j"H0(H0(Hu)j"Hg|(iHu)j"H(Hg|(iHg|(iH(H)1(MbH(H)1(;ߏH)1(Mb*\ϾC)\*\Ͼ7T)\*\ϾCĐ*\Ͼ7T)\*\Ͼ7TĐ*\ϾCĐ*\ϾCĐ*\Ͼ7TĐ*\Ͼ"*\Ͼ7TĐ*\Ͼ9]l*\Ͼ"*\Ͼ"*\Ͼ9]l*\Ͼxv*\Ͼ9]l*\Ͼvj"*\Ͼxv*\Ͼxv*\Ͼvj"*\Ͼoi*\Ͼvj"*\ϾR卼*\Ͼoi*\Ͼoi*\ϾR卼*\Ͼ-ףMb*\ϾR卼*\Ͼ-ף;ߏ*\Ͼ-ףMb*\Ͼ-ףMb*\Ͼ-ף;ߏ)\ϾO Mb*\Ͼ-ף;ߏ)\ϾO ;ߏ)\ϾO MbHvT)\HvTĐ*\Ͼ7T)\HvTĐ*\Ͼ7TĐ*\Ͼ7T)\HC)\HvT)\*\ϾC)\HvT)\*\Ͼ7T)\*\ϾC)\HCĐHC)\*\ϾCĐHC)\*\ϾC)\*\ϾCĐHCĐ*\ϾCĐ*\Ͼ"HCĐ*\Ͼ"H"*\Ͼ"*\ϾxvH"H"*\ϾxvHv*\Ͼxv*\ϾoiHvHv*\ϾoiHoi*\Ͼoi*\Ͼ-ףMbHoiHoi*\Ͼ-ףMbHLףMbMbHLףMbgfO MbHLףMb*\Ͼ-ףMbgfO MbgfO Mb*\Ͼ-ףMb)\ϾO MbXgMb5; MbH)1(Mb5; Mb2a MbH)1(MbH)1(Mb2a Mb'\Ͼ(1(Mb2a Mbff Mb'\Ͼ(1(Mb'\Ͼ(1(Mbff Mb'\Ͼ MbMbnMbHLףMbnMbVMbHLףMbHLףMbVMbH)1(MbVMblMbH)1(MbH)1(MblMbXgMbH))\H()\'\Ͼ))\H()\'\Ͼ()\'\Ͼ))\H)ĐH))\'\Ͼ)ĐH))\'\Ͼ))\'\Ͼ)ĐH)Đ'\Ͼ)Đ'\Ͼ)lH)Đ'\Ͼ)lH)l'\Ͼ)l'\Ͼu)j"H)lH)l'\Ͼu)j"Hu)j"'\Ͼu)j"'\Ͼ(Hu)j"Hu)j"'\Ͼ(H('\Ͼ('\Ͼ(1(;ߏH(H('\Ͼ(1(;ߏH)1(;ߏ'\Ͼ(1(;ߏ'\Ͼ ;ߏff ;ߏ'\Ͼ(1(;ߏff ;ߏH)1(;ߏff ;ߏ2a ;ߏH)1(;ߏ2a ;ߏ5; ;ߏH)1(;ߏH)1(;ߏ5; ;ߏI)1(;ߏHLף;ߏ;ߏ*\Ͼ-ף;ߏ;ߏgfO ;ߏ*\Ͼ-ף;ߏ*\Ͼ-ף;ߏgfO ;ߏ)\ϾO ;ߏ5; ;ߏXg;ߏI)1(;ߏXg;ߏl;ߏI)1(;ߏI)1(;ߏl;ߏIMף;ߏl;ߏV;ߏIMף;ߏIMף;ߏV;ߏHLף;ߏV;ߏn;ߏHLף;ߏHLף;ߏn;ߏ;ߏHLף;ߏ*\Ͼ-ף;ߏ*\ϾR卼HLף;ߏ*\ϾR卼Hq卼*\ϾR卼*\Ͼvj"Hq卼Hq卼*\Ͼvj"H•vj"*\Ͼvj"*\Ͼ9]lH•vj"H•vj"*\Ͼ9]lHx]l*\Ͼ9]l*\Ͼ7TĐHx]lHx]l*\Ͼ7TĐHvTĐHLףMbHLף;ߏHoiHLף;ߏHq卼HoiHoiHq卼HvHq卼H•vj"HvHvH•vj"H"H•vj"Hx]lH"H"Hx]lHCĐHx]lHvTĐHCĐHCĐHvTĐHC)\HvTĐHvT)\HC)\'\Ͼ Mb'\Ͼ ;ߏ'\Ͼ(1(Mb'\Ͼ ;ߏ'\Ͼ(1(;ߏ'\Ͼ(1(Mb'\Ͼ(1(Mb'\Ͼ(1(;ߏ'\Ͼf|(i'\Ͼ(1(;ߏ'\Ͼ('\Ͼf|(i'\Ͼf|(i'\Ͼ('\Ͼ/('\Ͼ('\Ͼu)j"'\Ͼ/('\Ͼ/('\Ͼu)j"'\Ͼ('\Ͼu)j"'\Ͼ)l'\Ͼ('\Ͼ('\Ͼ)l'\Ͼ(Đ'\Ͼ)l'\Ͼ)Đ'\Ͼ(Đ'\Ͼ(Đ'\Ͼ)Đ'\Ͼ()\'\Ͼ)Đ'\Ͼ))\'\Ͼ()\gfO Mb)\ϾO MbgfO ;ߏ)\ϾO Mb)\ϾO ;ߏgfO ;ߏff ;ߏ'\Ͼ ;ߏff '\Ͼ ;ߏ'\Ͼ Mbff ff '\Ͼ Mbff MbV;ߏl;ߏVMbl;ߏlMbVMbH)1(̬HLף̬H)1(MbHLף̬HLףMbH)1(MbH)1(;ߏI)1(;ߏH)1(MbI)1(;ߏI)1(̬H)1(MbH)1(MbI)1(̬H)1(̬HLף̬IMף̬HLףMbIMף̬IMף;ߏHLףMbHLףMbIMף;ߏHLף;ߏI)1(̬IMף̬H)1(̬IMף̬HLף̬H)1(̬IMף;ߏIMף̬I)1(;ߏIMף̬I)1(̬I)1(;ߏH?UC)\H?rT)\H?UCĐH?rT)\H?rTĐH?UCĐH?UCĐH?rTĐH?>"H?rTĐH?t]lH?>"H?>"H?t]lH?vH?t]lH?vj"H?vH?vH?vj"H?oiH?vj"H?䍼H?oiH?oiH?䍼H?֣MbH?䍼H?֣;ߏH?֣Mb-\>()\-\>))\-\>(Đ-\>))\-\>)Đ-\>(Đ-\>(Đ-\>)Đ-\>(-\>)Đ-\>)l-\>(-\>(-\>)l-\>-(-\>)l-\>u)j"-\>-(-\>-(-\>u)j"-\>d|(i-\>u)j"-\>(-\>d|(i-\>d|(i-\>(-\>&1(Mb-\>(-\>&1(;ߏ-\>&1(Mb-\>&1(Mb-\>&1(;ߏ-\> Mb-\>&1(;ߏ-\> ;ߏ-\> MbH?))\H?)Đ-\>))\H?)Đ-\>)Đ-\>))\H?()\H?))\-\>()\H?))\-\>))\-\>()\H?(ĐH?()\-\>(ĐH?()\-\>()\-\>(ĐH?(Đ-\>(Đ-\>(H?(Đ-\>(H?(-\>(-\>-(H?(H?(-\>-(H?+(-\>-(-\>d|(iH?+(H?+(-\>d|(iH?c|(i-\>d|(i-\>&1(MbH?c|(iH?c|(i-\>&1(MbH?%1(Mb? MbH?%1(Mbhf? MbH?%1(Mb-\>&1(Mbhf? Mbhf? Mb-\>&1(Mb-\> Mb?Mb5?OMbH?֣Mb5?OMb3a?fMbH?֣MbH?֣Mb3a?fMb*\>֣Mb3a?fMbgf?O Mb*\>֣Mb*\>֣Mbgf?O Mb+\>O Mb? Mb?9MbH?%1(Mb?9Mb?lMbH?%1(MbH?%1(Mb?lMbH?֣Mb?lMb?JMbH?֣MbH?֣Mb?JMb?MbH?rT)\H?UC)\*\>T)\H?UC)\*\>tC)\*\>T)\H?rTĐH?rT)\*\>TĐH?rT)\*\>T)\*\>TĐH?rTĐ*\>TĐ*\>]lH?rTĐ*\>]lH?t]l*\>]l*\>vj"H?t]lH?t]l*\>vj"H?vj"*\>vj"*\>卼H?vj"H?vj"*\>卼H?䍼*\>卼*\>֣;ߏH?䍼H?䍼*\>֣;ߏH?֣;ߏ*\>֣;ߏ+\>O ;ߏgf?O ;ߏ*\>֣;ߏgf?O ;ߏH?֣;ߏgf?O ;ߏ3a?f;ߏH?֣;ߏ3a?f;ߏ5?O;ߏH?֣;ߏH?֣;ߏ5?O;ߏI?֣;ߏH?%1(;ߏ? ;ߏ-\>&1(;ߏ? ;ߏhf? ;ߏ-\>&1(;ߏ-\>&1(;ߏhf? ;ߏ-\> ;ߏ5?O;ߏ?;ߏI?֣;ߏ?;ߏ?J;ߏI?֣;ߏI?֣;ߏ?J;ߏI?%1(;ߏ?J;ߏ?l;ߏI?%1(;ߏI?%1(;ߏ?l;ߏH?%1(;ߏ?l;ߏ?9;ߏH?%1(;ߏH?%1(;ߏ?9;ߏ? ;ߏH?%1(;ߏ-\>&1(;ߏ-\>(H?%1(;ߏ-\>(H?(-\>(-\>u)j"H?(H?(-\>u)j"H?u)j"-\>u)j"-\>)lH?u)j"H?u)j"-\>)lH?)l-\>)l-\>)ĐH?)lH?)l-\>)ĐH?)ĐH?%1(MbH?%1(;ߏH?c|(iH?%1(;ߏH?(H?c|(iH?c|(iH?(H?+(H?(H?u)j"H?+(H?+(H?u)j"H?(H?u)j"H?)lH?(H?(H?)lH?(ĐH?)lH?)ĐH?(ĐH?(ĐH?)ĐH?()\H?)ĐH?))\H?()\+\>O Mb+\>O ;ߏ*\>֣Mb+\>O ;ߏ*\>֣;ߏ*\>֣Mb*\>֣Mb*\>֣;ߏ*\>;oi*\>֣;ߏ*\>卼*\>;oi*\>;oi*\>卼*\>4v*\>卼*\>vj"*\>4v*\>4v*\>vj"*\>]"*\>vj"*\>]l*\>]"*\>]"*\>]l*\>tCĐ*\>]l*\>TĐ*\>tCĐ*\>tCĐ*\>TĐ*\>tC)\*\>TĐ*\>T)\*\>tC)\hf? Mb-\> Mbhf? ;ߏ-\> Mb-\> ;ߏhf? ;ߏgf?O ;ߏ+\>O ;ߏgf?O +\>O ;ߏ+\>O Mbgf?O gf?O +\>O Mbgf?O Mb?l;ߏ?J;ߏ?lMb?J;ߏ?JMb?lMbH?֣̬H?%1(̬H?֣MbH?%1(̬H?%1(MbH?֣MbH?֣;ߏI?֣;ߏH?֣MbI?֣;ߏI?֣̬H?֣MbH?֣MbI?֣̬H?֣̬H?%1(̬I?%1(̬H?%1(MbI?%1(̬I?%1(;ߏH?%1(MbH?%1(MbI?%1(;ߏH?%1(;ߏI?֣̬I?%1(̬H?֣̬I?%1(̬H?%1(̬H?֣̬I?%1(;ߏI?%1(̬I?֣;ߏI?%1(̬I?֣̬I?֣;ߏDATAh 9NDATA I..edge_verts 9XR2.select_edge >NRDATA(# 9ue    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdDATAh >NDATAh`}0 .corner_vert PR .corner_edge PR) PXRDATA PLe  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdDATA PLe   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbDATA Pse$$$$%ʪ$ $%~\%dNϯ~~N;~\NNϯ~~Q;~\NMϯ~~N;`"N`$$$$%ʪ$ $%~\%dMϯ~~N;~\NNϯ~~N;~\NNϯ~~N;UNչ~UlU~Ԗzq޹~I}znQF}F}_F}_QF}#n! )} ^"ljkj ) _" ) _"mjmj ) ^" ) _"kjmj' ^" * 3Ih 0w0еĵ [;~=| {=4 =!K/b{J.Kdn 0g0t0=QP=ފ= QQF}F}_F}_QF}n^$ nӪӠ ^gg nӠ ^ nӠ ^gh nӡ ^ nӡ ^hgxԠ ^ ny#_5^V`W_W_RV}_(V_L}EUA2NwNNwƿ}!ڼU7VU6UT)QzJ'T)T)JIJ#ǩ#S_ᬟ nR)ՠ ^gh nӡ ^ nӡ ^hg nӠ ^ nӠ ^ggӠ ^ nӪ^$5~\}Nϯ~~M;~\NNϯ~~N;~\LNϯ~~N;"N$"q"$$$$$I} z[Ӷ~ߕzY٪~Զ~Y~\YrNϯ~~N;~\NNϯ~~N;~\ONϯ~~N;"N$"q"$$$$$JWzzBz=}nԉz*V{rt{Ŭ{"Ԁ?{<ߜ~~V 6 ܪ ܪ~V6 B׸dO:BLWRY~u옭T~y|[Ծ}q}߾VpqAR~Ԏ~A }~C@}A VĪI* އQI*o$$$$%ʪ$ $%~\%dNϯ~~N;~\NNϯ~~L;~\NNϯ~~L;`"N`$$$$%ʪ$ $%~\%dNϯ~~N;~\NNϯ~~O;~\NNϯ~~N;UNչ~UlU~Ԗzq޹~I}znQF}F}_F}_QF}#n! )} ^"mjlj ) _" ) ^"mjnj ) ^" ) ^"mjlj' _" ) 3Lh 0w0еĵ [;x=| {=4 =!KTd{K.Kdn 0g0t0=QP=ފ= QQF}F}_F}_QF}n^$ nӪӠ ^gf oӟ ^ nӠ ^gg nӠ ^ nӠ ^ggxԠ ^ nx#_5^V`V_V_RV}_(V_L}EUA2NwNNwƿ}ڻU7VU6UT)QzJ'T)T)JIKé+R_⬠ nR)ՠ ^gg nӠ ^ nӠ ^gg nӠ ^ nӠ ^ggӠ ^ nӪ^$5~\}Nϯ~~N;~\NNϯ~~N;~\NOϯ~~N;"N$"q"$$$$$I} z[Ӷ~ߕzY٪~Զ~Y~\XsNϯ~~N;~\NOϯ~~L;~\NNϯ~~N;"N$"q"$$$$$JWzzBz=}nԉz*V{rt{Ŭ{"Ԁ?{<ߜ~~V 6 ܪ ܪ~V6 B׸dO:BLWRY~u옭T~y|[Ծ}q}߾VqqAR~Ԏ~A }~C@}A VĪI* އQI*o$$$$%ʪ$ $%~\%dNϯ~~N;~\NNϯ~~L;~\NNϯ~~L;`"N`$$$$%ʪ$ $%~\%dNϯ~~N;~\NNϯ~~O;~\NNϯ~~N;UNչ~UlU~Ԗzq޹~I}znQF}F}_F}_QF}#n! *} _"ijjj ) _" * ^"pjpj * ^" * ^"njlj' ^" ) 3Lh 0w0еĵ [;~=| Y=4 =!KSd{K.Kdn 0d0t0=QP=ފ= PQF}F}_F}_QF}n^$ nӪӠ ^gg nӠ ^ nӠ ^gg nӠ ^ nӠ ^ggxԠ ^ nx#_5^V`V_V_RV}_(V_L}EUA2NwNNwƿ}ڻU7VU6UT)QzK'T)T)JIJ#-R_⬠ nR)ՠ ^gg nӠ ^ nӠ ^hg oӠ ^ oӟ ^fgӠ ^ nӫ^$5~\}Nϯ~~N;~\NNϯ~~N;~\NOϯ~~N;"N$"q"$$$$$I} z[Ӷ~ߕzY٪~Զ~Y~\XrNϯ~~N;~\NOϯ~~L;~\NNϯ~~N;"N$"q"$$$$$JWzzBz=}nԉz*V{rt{Ŭ{"Ԁ?{<ߜ~~V 6 ܪ ܪ~V6 B׸dO:BLWRY~u옭T~y|[Ծ}q}߾VqqAR~Ԏ~A }~C@}A VĪI* އQI*oDATAx&M2.select_poly{0RDATAx{0DATA M !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_beME ,6HME0.042$A--%I I )M0 3̻ ?Ob?;A=薩DATAA- & DATAI0position 36@R2 .select_vertLX@RDATAT 36w}C>?;ߏ}C>?Mb5H>p?Mb}C>?;ߏ5H>p?Mb5H>p?;ߏ5H>p?MbsL>?Mb5H>p?;ߏ5H>p?;ߏsL>?MbsL>?;ߏsL>?MbM>Y9?MbsL>?;ߏsL>?;ߏM>Y9?MbM>Y9?;ߏLW9? LW9?MbGL#4?MbGL#4?;ߏLW9?;ߏLW9? LW9? GL#4?MbGL#4?;ߏGL#4?MbI?MbGL#4?;ߏGL#4?;ߏI?MbI?;ߏI?MbzFЖ?MbI?;ߏI?;ߏzFЖ?MbzFЖ?;ߏzFЖ?MbbB?MbzFЖ?;ߏzFЖ?;ߏbB?MbbB?;ߏV;ߏVMbnMbV;ߏnMbn;ߏnMbMbn;ߏn;ߏMb;ߏMbgfO Mb;ߏ;ߏgfO MbgfO ;ߏff ff Mb2a Mb2a ;ߏff ;ߏff ff 2a Mb2a ;ߏ2a Mb5; Mb2a ;ߏ2a ;ߏ5; Mb5; ;ߏ5; MbXgMb5; ;ߏ5; ;ߏXgMbXg;ߏXgMblMbXg;ߏXg;ߏlMbl;ߏ?l;ߏ?lMb?9Mb?l;ߏ?9Mb?9;ߏ?9Mb? Mb?9;ߏ?9;ߏ? Mb? ;ߏ? Mbhf? Mb? ;ߏ? ;ߏhf? Mbhf? ;ߏgf?O gf?O Mb3a?fMb3a?f;ߏgf?O ;ߏgf?O gf?O 3a?fMb3a?f;ߏ3a?fMb5?OMb3a?f;ߏ3a?f;ߏ5?OMb5?O;ߏ5?OMb?Mb5?O;ߏ5?O;ߏ?Mb?;ߏ?Mb?JMb?;ߏ?;ߏ?JMb?J;ߏDATALeDATAI..edge_verts CN@R2.select_edgeL@RDATA8 CNu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATALeDATAh0 .corner_vert ]AR .corner_edge_XAR) bARDATA ]L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA_L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA bs~kD~~D~ Y~Y~}D~ D~}Y~OPz~~lR}ݪO?wS}W)~K}K})~~w5~B~~~B~S~|N~|յ~H~H~~f~kD~~D~ Y~Y~}D~ D~}Y~POz~lS}ݪO~?wR}W)~K}J})~~w6~B~~~B~T~|N~|յ~H~H~~f~kD~~D~ Y~Y~}D~ E~}Y~OOz~lS}ݪO?wR}W)~K}J})~~w6~A~~~B~T~|N~|յ~H~H~~fDATAx)M2.select_polymARDATA0mDATA% !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME :6HME0.043%A-$$ $@Q`O O +M0 >Dtgn==O=A=薩DATAA-`5DATA`O0position *RXBR2 .select_vertmBRDATA *Rw$Y>,͍^>,.fY>͍^>,.f^>.fY>͍; >,XiY>,͍; >XiY>,͍Y>͍; >Xi@6>,Л3; >,Xi@6>Л3; >,Xi; >Xi@6>Л3^>,.f@6>,Л3^>.f@6>,Л3@6>Л3^>.f; >,Xi@6>,Л3Y>,͍@6>,Л3^>,.fY>,͍@6>Л3; >Xi^>.f; >XiY>͍^>.fDATA$mDATAO..edge_vertsOBR2.select_edge@nCRDATA Ou$    !#!""#DATA$@nDATAh0 .corner_vert`LXCR .corner_edge LCR)LCRDATA`LL$  !"#DATA LL$   "#!DATALs$?mBB̦B?mBN9̫99N9̫?mBB̦B?mBN9̫99N9̫mYw¹JtŹJ~ֹJ~mYw¹JtmYw¹JtŹJ~ֹJ~mYw¹JtDATAx+M2.select_poly B-DRDATA B-DATA4@Q !$ME A6HME0.044&PB-:O`O O .M`0 B>ӽ0`|/=;4=A=薩DATAPB-ODATA`O0position DR2 .select_vert`%DRDATA( w7>WXi>8F:ܢ>Ž )ܢ>Ž )i>8F:>׻Ľd0i>8F:Ť>=㽐-p>׻Ľd0>׻Ľd0Ť>=㽐-p@>+4Ž8ziŤ>=㽐-ps>>pLU@>+4Ž8zi@>+4Ž8zis>>pLUV>Ľ(,Hs>>pLU>⽈8Ľ(,HV>Ľ(,H>⽈8<>Ľ,>⽈8*p(>Ľ,q`>*p(IȾ>@xh>Ľ,>Ľ,IȾ>@xhѾ>ĽdIȾ>@xh=>GpѾ>ĽdѾ>Ľd=>GpF>Ľ=>Gp>S0%&F>ĽF>Ľ>S0%&>Ľ0%&>S0%&->02>Ľ0%&>Ľ0%&->02>yĽt2->02О>,㽘hI>yĽt2>yĽt2О>,㽘hI>Ľ8tIО>,㽘hI>(pd>Ľ8tI>Ľ8tI>(pd>Ľd>(pd>5㽨~>Ľd>Ľd>5㽨~> Ž~>5㽨~ٽ>.7㽴> Ž~> Ž~ٽ>.7㽴">Ľٽ>.7㽴>S㽜">Ľ">Ľ>S㽜>Ľ>S㽜H>A㽼L>Ľ>ĽH>A㽼Lz>XĽ<H>A㽼L7>WXz>XĽXĽ<7>WXܢ>Ž )> Ž~">Ľ>Ľd">Ľ>Ľ>Ľd>Ľd>Ľ>Ľ8tI>Ľz>XĽ<>Ľ8tI>Ľ8tIz>XĽ<>yĽt2z>XĽ<ܢ>Ž )>yĽt2>yĽt2ܢ>Ž )>Ľ0%&ܢ>Ž )>Ľ,Ѿ>Ľdܢ>Ž )>׻Ľd0>Ľ,>׻Ľd0@>+4Ž8zi>Ľ,>Ľ0%&ܢ>Ž )F>ĽF>Ľܢ>Ž )Ѿ>Ľd@>+4Ž8ziV>Ľ(,H>Ľ,>S0%&=>Gp7>WX7>WX=>Gpi>8F:=>GpIȾ>@xhi>8F:i>8F:IȾ>@xhŤ>=㽐-pIȾ>@xhq`>*p(Ť>=㽐-pŤ>=㽐-pq`>*p(s>>pLUq`>*p(>⽈8>pLUٽ>.7㽴>5㽨~>S0%&>S0%&7>WXH>A㽼L>5㽨~>(pd>S0%&ٽ>.7㽴>S0%&>S㽜>S㽜>S0%&H>A㽼L->02>S0%&О>,㽘hI>S0%&>(pdО>,㽘hIDATA`%DATAO..edge_verts MER2.select_edge@%XERDATAp Mu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA@%DATAh`0 .corner_vert LMER .corner_edge OMER) RMFRDATA LML  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA OML   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA RMsDqױo`):y u\dmgu6Uiˣc]/KojL wbz35XGO8C43_@ch)=dƴ_ucnczvҢmg|mgpzqӂpv5ppwrfw@{ͣrr;9{ruS{qWrY%s )"!wT2%wtqv02r 5Rq5qoS}]Tc\[UdCKEoeҼjomݿ ujAkj3m=2@kw>ka"?m#ש#_٪ɔ 9T(  B 6  ˋTcftـ.ܼ š Ѣ \q|0a_ =b A y b v 3 = и; 50z9$Yu־F<>lwE],mײ ٭,i+!<{mqKDX+L,MDATAx.M2.select_polyQXFRDATA<QTDATAO !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME H6HME0.045'B-^ 0`O O 0M 0 r>o=0 ==A=薩DATAB- ZDATA`O0position 9FR2 .select_vertOGRDATA8 9w>TlL>EYO>ElO>Elɩ>Ed4>TlL>TlLɩ>Ed4覧>|㽸p~ɩ>Ed4T>EX8覧>|㽸p~T>EX8;>9Hj覧>|㽸p~覧>|㽸p~;>9HjvȤ>mثk;>9HjȊ>I vȤ>mثkvȤ>mثkȊ>I h>_HWȊ>I 5͍>Ah~h>_HWh>_HW5͍>Ah~(p>yZD5͍>Ah~h>2>Ȅj(p>yZD(p>yZDh>2>ȄjNЬ>c㽸3h>2>ȄjE>AYNЬ>c㽸3NЬ>c㽸3E>AY@>T&E>AY>E)M@>T&@>T&>E)M:>K0>E)M>EF:>K0>EF똴>E_E:>K0:>K0똴>E_E>s㽰+똴>E_Eݺ>B@D>s㽰+>s㽰+ݺ>B@D^Z>mg㽀eݺ>B@DA>HH^Z>mg㽀e^Z>mg㽀eA>HH$>_(A>HH>YLR$>_($>_(>YLR˴>#U5>YLRq>]Q8b˴>#U5˴>#U5q>]Q8b<>0PFq>]Q8b6>lAXt<>0PF6>lAXtm0>p@| <>0PF<>0PFm0>p@| >S`!T>S`!Tm0>p@| :>1`Zm0>p@| >Bxv:>1`Z:>1`Z>BxvE>J㽘n>Bxv;0>B$ܛE>J㽘nE>J㽘n;0>B$ܛ>T@;0>B$ܛa>"Fl>T@>T@a>"Flw>q]㽐a>"FlMy>Ew>q]㽐>TlL>[u>EY>EY>[uuȣ>EZuȣ>EZ>[uN>[B >[u>Ok㽸DN>[B N>[B >Ok㽸D׶>~>">Ok㽸D,>e㽬׶>~>"׶>~>",>e㽬q>;@Y,>e㽬l>X㽘؍q>;@Yq>;@Yl>X㽘؍k>D`Ķl>X㽘؍w>q]㽐k>D`Ķk>D`Ķw>q]㽐My>E@>T&E>J㽘n>T@>T@w>q]㽐@>T&w>q]㽐l>X㽘؍@>T&@>T&l>X㽘؍NЬ>c㽸3NЬ>c㽸3l>X㽘؍,>e㽬,>e㽬>Ok㽸DNЬ>c㽸3NЬ>c㽸3>Ok㽸D>[uE>J㽘n@>T&:>1`Z@>T&>S`!T:>1`Z>[u>TlLvȤ>mثkh>_HW(p>yZD>[u>[uvȤ>mثkh>_HWvȤ>mثk>TlL覧>|㽸p~NЬ>c㽸3>[u(p>yZD^Z>mg㽀e@>T&>s㽰+@>T&:>K0>s㽰+^Z>mg㽀e$>_(@>T&>S`!T@>T&<>0PF<>0PF@>T&˴>#U5@>T&$>_(˴>#U5>Bxvm0>p@| ;>9Hjm0>p@| 6>lAXt;>9Hj;>9Hj6>lAXtq>]Q8bq>]Q8b>YLR;>9Hj;>9Hj>YLRA>HHO>El>EYɩ>Ed4>EY>Bxvɩ>Ed4A>HHݺ>B@D;>9Hjɩ>Ed4>BxvT>EX8>Bxv;>9HjT>EX8My>E>EYuȣ>EZ>Bxv>EY;0>B$ܛ;0>B$ܛ>EYa>"Fl>EYMy>Ea>"Flݺ>B@D똴>E_E;>9Hj똴>E_E>EF;>9Hj>EF>E)M;>9Hj>E)ME>AY;>9Hjuȣ>EZN>[B My>EN>[B k>D`ĶMy>Eq>;@Yk>D`Ķ׶>~>"׶>~>"k>D`ĶN>[B E>AYȊ>I ;>9Hj5͍>Ah~Ȋ>I h>2>ȄjȊ>I E>AYh>2>ȄjDATAODATAO..edge_verts &XGR2.select_edge OGRDATA &u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~          DATA ODATAh 0 .corner_vert HNGR .corner_edge MNHR) RNXHRDATAh HNL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     DATAh MNL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     DATAh RNs PXו ӟ-\կ(+@¤*8̡4 ei ކ[jX^eK :4 J* ݿX WԻW kB E ͽW { ʰˀ!-| 0n3 0fD#Ը VʼFI U; =oC>!?O Aѫ6ƞ װX-WV<ϓ B),͊[ Wϊ  iqI`д"Jz$ҷ 5"й-\ }s01" $4&[$mg'ED{>gGu/h*IС2'+${'7nݴ55 u3 ySP-P﫬Ǔ~Է ú0k 6 "μq WG N$ Ƣį6P = w$1D/!N>"Pg1_۩_+^>^E K>ο> KUOO KԄRRPOq͋=hδpJ6OG5b޻gWZjAglcNѶNRg6jæf|`Lf/ON΅lۣ0=\<~Ȃz* =՘i>~eɯ~$ >=:= 68ݲq>xDATAx0M2.select_polyRHRDATA`RDATA| 0 !$'*-0369<?BEHKNQTWZ]`cfilorux{~ ME O6HME0.046(B-Lig ak X67qtt܋g=Q8=Z=A=薩DATAB- DATAX6JDATAg0position{.r2 .select_vert#,rDATA{wL';!,<. ,(=l',`> >?>@@?@@JJJAJIIAIBIGGBGDGCCDCECF8:7:7<F<FHHCGHI>J>,KKK6)DATAhk .corner_vertXp .corner_edgekg)DATAL;0 A A0;;33==44==  +ABBDDDEEE  0//.. . + ? ?,,(( $55,,,5$%%'5&22221"11""--!!K 6!-**-!)!!)) ")"))$$$%&%%&'6 )(6)()*)*))5 ,+ 5(,, 6K  - --  ...//1/01102023223&3&&'4''4545+5(66(F77 78 8899;9:;;::<<=<H==H H> >?>@??@@JJAJIAAIBIGBBGDGCDDCECFEEF98:87::7<7F<<FHHFCCGHGIHHI>IJ>>J@K6K6DATAkgL   ! "#$%#%'&()')+*,-+-./0 12024356467!98:;9;< ?@>A@B=CDBEGHFIJHJl?GMLNOLQRPSTRUVTVXWYZXZ\[]^\^`_ab`decfgegjkiduqono>patusqtsfrj]Y}}mUKmKwFSxwxyMQzyzNkr~||=p{{nlI8DA*.c7b5_1[/WPO &~3 :<"$(,ihhCEDATAs1) XWSc1) Sc):{ScV )JzV R|)bz) {R|$r"K4NA1)4NwAZU" 1)1)ZU" XWJ:){*&-7XQ+ CTe_~*eXXXeCà;%;b%B_teDO<\LYOQo<ES0b=na+1ÍohKYe1)1Xr"K1)e~$~$) S'r%.m%Y +y$ V;WU TU T  N_U >TU TNDgaNh#D`D=ah Yh#0 \Y Y \0/ K\ \ H_/YL ^ _YLZYLYnf LYLYnf Dnf DDB`` B_B`` e Ter"KTe(z)) 7$VW)zVmW ) {/Z03%B}B}0%0K%>/(>/(>/(0j0lj0j/%/%/ &/6p/o4NA/6p{-\*4N_A4NA{-,*ZU" {-t*ZU" ZU" XWXWXWScSYcScV *!bVV *aR|*a/}R|R|/x}e/}/'[M/Zr}>/(0%0$j0j0%/%0K%/'[/%/ &/Z/p/o/[/}/}*a/o^/Np{-*U T658`VWU TVW ~$~$t%p{$-DATAx2sharp_faceXy-rDATAXyDATALi !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME V6HME0.047)B-%S.%6M `7M8M`0 Փ=`-\gf=9?@;@ACDBEDFGEAGHIJKIKMLN8MLO 7<OFP2 QPR-+,.RDATA(isaUW`Hs)W`H00W`HaUW`H8W`Hs)8b88s)bbs)0A ^6a ^6aT}AŠAT}#' ˧.jlvlv.j~ ::wB#' wB#'wBA4*Ap_F::4*A:: 4*A lvHq:~Ļ.j:~Ļ~.jFs ^6abEhfR R Ehf.j.jEhfHqb/D]ӌ/d1"D]ӌ/b?}? ˌ/'{4?}?'{4ƌ/'{4w w.j(b|b0|0.j|.jw|T}Z#'Zaw#'#'awd1"awD]d1".j0R 0aUR b ^6aFsbR ^6aDATAx8M2sharp_facenLRDATA0nDATA% !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME ]6HME0.048*C-8~F`P P :M ;M 0 @C-@.Ϥ0$]=<^=A=薩DATAC- DATA@C-JDATA P0position [MLR2 .select_vert@QLRDATA [Mw8/]#E7b:V#E7g<ԴTsh<'E7==[=f<46ɽw>=(z۽[=%;߽G$[؅м"[%м[wV:zZ=9;@=<@"=k=H< -;=k<ES=;?_=qW R=B=@A?BAD:E>FEFG HGHJI KJKMLQRPUV4)XWXZY&[Z] @ccd{{z|,.-+|+h)*(h(i&'%i%y#$"y"r !rqqppoommllkkn n } }OfWfP,\g]g[#TjRjUSNa8aMCeDeB1x0x2/`sbsutvu_zw_^1DATAH.sV0_vӀvgQ`#0+Q_#05,(0,Qw_Q_(0 ,>QQ`"0+Q_"0m,)0,Qo_gQz`0<}#0 ,(0^,0i}>Q0@}%0+>Q>Q%0~+R_%0+&0X,R}_R_&0+T&0/,{0TT {0c^P_"Y_GPV0``dd^kQQ!0(,gQ_!0,+0,gQf_Q`08}"0m,NB4?S8AERD>\>P>^J'\zS[FvJVx+uN=d{lMVN^fN}A` \`ddMA^kNTCgNAaca4kMBZ;NfCeNA\4\`=M:B^jNxCdNAaadajMrB)_jNCdNA/akea[kMB[4M@Dm[QNDQ@M\QO")N_aAs%cDcOpKIPcO_b-v*bn}Ne\A>(Y_W_>Q>RW_TBsXW`c^%*/-@a^\_RLPb[O^brbmNNc\=;ǻS`S9`=ǻT `Qbt}[Gκ[Gbt?Qqa,!\8\8 &@f1<@.@@x<7EDATAx ;M2sharp_face NRDATAH DATA`P !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME d6HME0.049+pC- aNP =M@>M0 C-2(6V=C=>P=A=薩DATApC-`+ DATAC-J.DATAP0position k6NR2 .select_vertLNRDATA  k6w'22L_.'΋.='΋uY"˴{Y="˴ƚ=z3A=3Aƚ=h#.qO=:\\=86ik=ڽ|p=׽;}q&=ǽIj9<僾g2pB;Rnm&ǽIj&s22tЭh\86i½"4 ]šǽh#.qO᾽3C/4˽3AЭQmr(&^ki02_i&s lD#qo 2bQx1xD#=qo k=iЭ=Qmr(MR#iO\#22U 㴇p׽;}p\sO:RL0i:)2潀ER<nq&=R42=t= 4 ]=>#iO=9@j=Jg}\=C\4\=NR'62=_p=jr62=OvS7p=r.u&=s LR<,,xPFR>yy>>;;;;::e:e: eef f 99ff 9 9 g g gg 77 i7i7iikkkkllllmm33mm33````00a0a0aa----++++((((qq%%qq%%$$t$t$EEtt E EDD !D!DAA!!xAxA@@xx"@"@?#V#$$V%VV&%&&&''('')))**+**,+,-,,P-PPP..0../0///RRRR11112232243444TTTT555566766F7F FF8 8 88H H9HHJ9J JJK K:KKM:M;MM<;<<<==>==N>N?NNW?W@WWB@BBCACDCCUDUEUU#E#68V'T^5^'O)O*O6^8^^G8GHGG~H~J~~IJIKIILKLMLLcMc<ccO<O=O='N',OPOOP.|.|/||Q/QRQQ{R{1{{S1S2SS^2^4^#CVCVB'B'WXbbXbYYXXwYwYZZww[Z\\[[v\v\oovvuouoppuu]p]prr]]srs^mm___`zzz_|QQ`Qz|bbccccLLddedfdd}f} }  g h ikjkllmmn^naYYZZ\\oopprqss]t]tu u v!v![x[xw"w"XyXy_SzSz{bG}}^OdId~GdbODATAh0 .corner_vert *9XOR .corner_edge 89OR) F9ORDATA *9Ljhjhhnn}"?y?>yy>>;;;::e: ee f 9ff9 9 g gg 7 7i7iikkklllm3mm33```00a0aa---+++(((q%qq%%$$t$EttE ED D!DA!!AxA@xx@"@?"#$V$%VV%&%&&'(''()())*+**+,+-,,-P-PP.0..0/0//RRR111232234344TTT55567667F7 FF 8 88 H 9HH9J9 JJ K :KK:M:;MM;<;<<=>==>N>?NN?W?@WW@B@ABBACADCCDUDEUUE#E$#6F8V&'T5^')O)*O56^68^^8G8HGGH~HJ~~JIJKIIKLKMLLMcM<cc<O<=OO='=N'*,O,POOPP..|./||/Q/RQQR{R1{{1S12SS2^24^^4TU#C#VCCVBV'BB'W'NWbXbYXXYwYZwwZ[Z\[[\v\ovvouopuup]pr]]rs^m_m__`zz_|QQ``Qz|babccccLLdedefddf}f }}   gghg hh iijikjjkklllmmnm^nbaYaYYZZZ\\\oooppprqrrqsqss]t]]tut uu v !vv![!x[[xwx"ww"X"yXXyy_S^_zSSz{zQ{b|G}^}n^cOLdIId~}GdG~dbObODATA 89L   ! #"$%#%'&()')+*,-+-/.01/1324535768979;:<=;=?>@A?ACBDECEGFHIGIKJLMKMONPQOQRSTTVUWXVXYZ[[]\^_]_a`bcacedfgegihjkikmlnomoqprsqsutvwuwyxz{y{}|~}zvrnjfb^ZWSPLHD@<840,($!~         !!#"$%#%&'((*)+,*,.-/0.02134246578N98R:9;<U<=: ?>?@Y@A;>CB\CEFD"GF&HGHIIKJ*LK.MLMON2POPQQR6SRS:TTU >VUV BW WXFYXYZJ[Z[\7]\^ `_^_`$da`ab'hcbcd+ledef/pgfgh3t h i6xjijk5|lklm1nmno-popq)rqrs&tstu"vuvwEwx=yxyzAz{ B|}]}D~J|N{~DATA F9s?B\D[B\<D[D[<7"[0EF 0EF0EF <1% <1%<1% 1% 1% 1%0%0%0%1T1T1T]1Q]1Q]1Q/R/R/R 0.V 0.V 0.Vq1Tq1Tq1T1S1S1S1%1%1%3%3%3%)3%)3%)3%u4 Tu4 Tu4 T-2#-2#-2#s4_s4_s4_p.t^p.t^p.t^06060631Q31Q31Q^/rQ^/rQ^/rQ/V/V/V/|/|/|u4 T-2#s4_3%)3%;_0EF<1%;M<1% 1%;M)3%u4 T;_u4 Ts4_;_;_s4_8]s4_p.t^8] 35a066r*0631Q6r*6r*31Q*<$T31Q^/rQ*<$T*<$T^/rQ;\b^/rQ/V;\b;\b/V;M/V/|;M;M/|0EF 1%0%;M0%1T;M;M1T<: [1T]1Q<: [<: []1Q<;_]1Q/R<;_<;_/RX;`/R 0.VX;`X;` 0.V51 0.Vq1T5151q1T47(aq1T1S47(a47(a1S;_1S1%;_;_1%3%/X9J VtLpTtLpTJ VnH:J V> nH:;_ ,) ,))xx)<;_X;`X;`X;`x<;_/X9c/X9|2${;\b{I~;\bI~q;\b;\bq*<$T*<$Tq*q7z*7zq**q7"[q۔΅7"[7"[΅D[D[΅?΅?? ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~B\ ,B\B\ ,< ,;_</X9cJ VcJ VJ V> > >  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~nH:nH:nH:tLpT.tLpTtLpT.|2$.{|2$)47(a;_)x47(a47(ax51xX;`51/X9<: [<;_8]7"[;_7"[<;_|2$;\b;M*<$T*6r*6r**5a7"[8]*8]5a*<: [/X9;M/X9|2$;MDATAx@>M2sharp_face PRDATA PDATA  aN !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|ME r6HME0.050,C-JtN P P P0 X7 ;ȁB4=H:=t=A=薩DATAC- ; DATA P0position MR2 .select_vert ؐRDATAh Mwtg ftEЏ*ItEaE#c7Џ*IЏ*IaE#c7$uzaE#c76.Q$uz$uz6.Q]\*sq6.QcD6:.]\*sq]\*sqcD6:._|m6Ɗg+vOm+Bb]yFt+Bb]_|m6ƊgyFt_|m6ƊgcD6:.yFth==Omc|=m6Ɗg!+=Bb]h==OmhD=6:.c|=m6Ɗgc|=m6ƊghD=6:.]=\*sqhD=6:.=6.Q]=\*sq]=\*sq=6.Q(=uz=6.Qa=E#c7(=uz(=uza=E#c7Џ=*It=g fЏ=*I2u=tF2u=tFЏ=*Ia=E#c7!+=Bb]+Bb]h==Om+=бih==Omn+`in+`ih==Om+vOmh==Om+Bb]+vOm_|m6Ɗg+Bb]!+=Bb]_|m6ƊgЏ*I]\*sqЏ*I$uz]\*sq_|m6Ɗg!+=Bb]Џ*I!+=Bb]c|=m6ƊgЏ*IЏ*Ic|=m6Ɗg]=\*sqt=g ftg fЏ=*Itg fЏ*IЏ=*IЏ=*IЏ*I(=uzЏ*I]=\*sq(=uz갴jFPm<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA DATAh0 .corner_vert NR .corner_edge NؑR) NRDATAx NL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATAx NL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATAx NssBjrc ,(V \%*. & mԬئ Ք!7 ذB(݂P{j^j:HբFܴOv EӞ^*qFq e6րΔ & yͬ).2 K̰>* Zj -2l esJ ^W 1Xg1$U/W'R.?"M'z'J5"t(." ͕!`-ՕkIN.-nKNܢp}wV"b`q7|w +sB8 Ȭڣ4C |s߲ 4whŮ K m&l`H| orIб:nΩ}FP-]'φmֆd~՚}& $fCB̩$d1@yAшD† Ш{.R.@Q;D"H=2Tasi'}U@3rYPE;[U@% ? NDATA P2.select_poly0XR2sharp_faceRDATAL0rfDATALrfDATA,tN !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME y6HME0.051-D-B PP P b:`0 hl=`< 7<A=薩DATAD- oDATAP0position 6R2 .select_vert XRDATAH 6w '4j 4k 4=yk5Gz$o 4k '4j،" }]Ec cEpb+@dT Ϭ]1"4 _]-'˽u~5Gz$oV̼½:75Gz$o '4jV̼½:7V̼½:7 '4j Pp-5Gz$o֋E齕qb.Jؽfy]-'˽u~5Gz$ob.Jؽfy=`T1=4 _= t]،" }]1"4 _Zxi1"4 _ Ϭ]،" }]֋E齕q،" }]Zxi،" }]Epb֋E齕q Pp- '4j <\p- <\p- '4jm<}½?7p~l֋E齕qEpbb=Jؽiy2=hvk-'=˽`~m<}½?7 '4j 4=yk=p ]= t]=T`c= t]1=4 _=T`c1=4 _r=xi=T`c-'=˽`~ 4=ykm<}½?72=hvk 4=yk-'=˽`~2=hvkb=Jؽiy֋=E齔qh&a=a򽺃n=gOj֋=E齔qp~loIrk֋E齕q5Gz$ooIrk֋E齕q2=hvkh&a=a򽺃n֋=E齔q=gOj=T`c=nsb֋=E齔q=T`c=gOj֋=E齔q=T`cr=xi,qykoIrk5Gz$o2=hvkh&a=a򽺃n$L=Oyk1=4 _= t]=`T֋=E齔q=T`cr=xi= t]=T`c=p ]=T`c֋=E齔qb=Jؽiy1=4 _=T`c= t]r=xi=T`c1=4 _b.Jؽfy]-'˽u~5Gz$oZxiEc c֋E齕qEpbEc cp~l1"4 _Ec cZxih&a=a򽺃n$L=Oyk2=hvk=nsb=gOj=T`c2=hvk 4=yk-'=˽`~-'=˽`~ 4=ykm<}½?7 4=yk 4km<}½?7m<}½?7 4k <\p- <\p- 4k Pp- Pp- 4kV̼½:7V̼½:7 4k]-'˽u~]-'˽u~ 4k5Gz$op~lEc cb.Jؽfy֋E齕qEc cb.Jؽfy Ϭ]1"4 _+@dToIrkp~l5Gz$op~lb.Jؽfy5Gz$o،" }] Ϭ]Ec c1"4 _ Ϭ]Ec c=gOjh&a=a򽺃nb=Jؽiy-'=˽`~b=Jؽiy2=hvkb=Jؽiyh&a=a򽺃n2=hvk,qykoIrk5Gz$ob=Jؽiy=T`c=gOjDATA DATAP..edge_verts :R2.select_edge ؓRDATA0 :u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA DATAh`0 .corner_vert.R .corner_edge.XR) .RDATA.L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA.L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA .sU]qd|z{Q|Ӿ3cևEp P欨\a1]"̤H3Dhtd:ʖF{)<),UrR5p. *@V2cϫ%Ev΂ѥ!/Q8sWv('6}.9GTQ[/#j=Xo>)Ě#%1f6)n7 yɱGCh CO`ymnAV +2dakD)<&V +2dGU)UQ[S#z/{:ʖFBI}+h~W'DGO>)Ě#=XoB@x  ۞Wu H 2Ւk"LamH& > 6lŘcև2}23 Ӛ@ϊnBzzi4ϗ[fp)' :H4ɗakDqS߫V@DATAxb:2.select_poly`ؔRDATAD`DATA  P !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME :HME0.053.0D-.P P e: 0 &i>C =n+>A=薩DATA0D-( DATAP0position `QXR2 .select_vert ^MRDATA `QwEգ:Fق@<6):Fق@<60"M;4):F):F0"M;4V)bF0"M;4ci3V)bFV)bFci3,)Fci30 Nǻ4,)F,)F0 Nǻ4أF0 Nǻ4M@6أFأFM@6Gﲾ0BGM@6 8:Gﲾ0BGGﲾ0BG 8:β G 8:p0Z>β Gβ Gp0Z>@BBHp0Z>iC@BBH@BBHiC}#HiC}/H}#H}#H}/HTBjI}/H@DNTBjITBjI@DNU- @I@DN0SSU- @IU- @I0SS .纐jJ0SSQ W .纐jJ .纐jJQ WأPJQ WaJ@X[أPJأPJaJ@X[xⱾ&)`JaJ@X[ʬNǻ]xⱾ&)`JxⱾ&)`JʬNǻ]ܱ#JaKʬNǻ]\Z]ܱ#JaKܱ#JaK\Z]xⱾ):`J\Z]ʬ*M;]xⱾ):`JxⱾ):`Jʬ*M;]Hգ:PJʬ*M;]a܂@β ;Gβ ;GpH<0Z>Gﲾ:BGpH<0Z>I <8:Gﲾ:BGGﲾ:BGI <8:Eգ:FI <8:ق@<6Eգ:FNǻZr-@c0\'WM[r-@c_grTd0\'WM[0\'WM[_grTd+M;Z_grTd-<@c+M;Z+M;Z-<@c&݂@<}X-<@cި{C<8`&݂@<}X&݂@<}Xި{C<8`K dɱ<`@dɱ<`@ x=y>5I<; x=y>?6<(75I<;5I<;?6<(7qnI <7?6<(7K<@0qnI <7qnI <7K<@0u^ڂ@dɱ`@dɱ`@ xׄy>B/TF xׄy>BC TFB/TFB/TFBC TF󹼘KBC TF ׄx.N󹼘K󹼘K ׄx.NXOxP ׄx.Nw6UXOxPXOxPw6U p(Uw6Ua9ļ[ p(U p(Ua9ļ[&I@}Xa9ļ[ިC8`&I@}X&I@}XިC8`NǻZިC8`r-@cNǻZ xׄy> UC @BC TF UC @FjT.BC TFBC TFFjT. ׄx.NFjT.bS6 ׄx.N ׄx.NbS6w6UbS6R7ļ2w6Uw6UR7ļ2a9ļ[R7ļ2QCpda9ļ[a9ļ[QCpdިC8`QCpdeQ-rިC8`ިC8`eQ-rr-@ceQ-r}@Qlr-@cr-@c}@Ql_grTd}@QleQ,ԟV=SUW6<ت x=y> x=y>UW6<ت?6<(7UW6<ت辜XԟVS UC @ xׄy>cY-4ᾝY cY,<4ᾸeQ-rcY,<4=7YQC<6cY,<4ᾸeQ-rcY-4ᾸeQ-rX9ļrcY-4cY-4ᾜX9ļr=7YC6=7YQC<6㾜X5I<;qnI <7pH<0Z>pH<0Z>qnI <7I <8:qnI <7u^ڂ@5;dɱ`@p0Z>p0Z>dɱ`@iCdɱ`@B/TFiCiCB/TF}/HB/TF󹼘K}/H}/H󹼘K@DN󹼘KXOxP@DN@DNXOxP0SSXOxP p(U0SS0SS p(UQ W p(U&I@}XQ WQ W&I@}XaJ@X[&I@}XNǻZaJ@X[aJ@X[NǻZʬNǻ]NǻZ0\'WM[ʬNǻ]ʬNǻ]0\'WM[\Z]0\'WM[+M;Z\Z]\Z]+M;Zʬ*M;]+M;Z&݂@<}Xʬ*M;]ʬ*M;]&݂@<}Xa܂@<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~DATA aMDATAh 0 .corner_vert MXR .corner_edge SR) SؖRDATA ML  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA SL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|DATA Ssu穩gu ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" ~n jܢ~>آ~" 8,MGGG8 9GEMGUͭ9 8)MGqJL8 8MG۰48 84"MGa<"9 8<MG 8 9 UMGEӴ9 8MG=8 9MG*P9 8MG=,8 9,MGG8 8MG=\8 8\bMG_l m8 8π XMG/ 8 8 @MGI\ 8 9[ \MG{ 8 9ϓ MGH 8 8 MG29 8MG= 8 8 MGӽ8 9MG=8 8MG?_8 8MG>8 8MG=,8 tNvRdOv0ԏyjOvJdtjϠdHrttRryWyŰdռypgz4ddbgzyv~zRzszRdv{Xr{gٸ|rr6|Mڐ}~R ~~z~~ܺz}v)zszvv,szX͠dR~ݏr~~rĩ[~r}})\~ܺoef`e3{w`J`oeBoef`e2{v`J`oeBoef`e2{w`J`oeAoef`e2{v`J`oeAoef`e2{w`J`oeBoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e2{v`J`oeBoef`e2{w`J`oeAoef`e2{v`J`oeBoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e3{w`J`oeBoef`e2{v`J`oeAoef`e2{w`J`oeAoef`e2{v`J`oeBoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e2{v`J`oeAoef`e2{w`J`oeBoef`e2{w`J`oeAoef`e3{v`J`oeBDATAx e:2.select_poly *RDATA *DATA\. !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|ME :HME0.054/`D-333p`P P g:0 CdʪA=<`Ά=A=薩DATA`D-8 DATA`P0position dMؗR2 .select_vertQRDATAd dMw3A]5¯MzMuJ~VCFW ~MuJ~VC7J~0CFW ~MViG3<'3뷯=+iGV3<'3뷯='3bT=+iGV3MzMpGy._ld;A]5¯MzMpspGy.1U>MzMDATA4QDATAP..edge_verts0XR2.select_edge@QRDATA0u3    !#!""#$&$%%&')'(()*,*++,-/-../020112DATA4@QDATAh0 .corner_vert *ؘR .corner_edge *R) *XRDATA *L3  !"#$%&'()*+,-./012DATA *L3   "#!%&$()'+,*./-120DATA *s3^c27FHo2gaHAwl2D!X2k a+XvTT|KY#|KL۟Y#?T#͋<e(Ɓ#< *[~*!dC=^ U;A$  8ԃ .=!߿:' V.8E-1=D*^iA{^X*DATAxg:2.select_polyRRDATAR%DATAHp !$'*-03ME :HME0.0550D-//e/0 P `P P`0 ɽ<>Į= >A=薩DATAD- C DATA P0position QR2 .select_vert vNXRDATA4 Qw/̈́shnwxGC$;IkwxGC$sk!;IkNbkk&Nbp9pk&p9p&Nbp9p_7p8Kkl ̈́ףnl }Du$̈́ףnl `Oq}Du$}Du$ `Oqj)Hu% `OqbKj)Hu%j)Hu%bKwxGC$bKsk!wxGC$Ox%j)Hu%roj)Hu% g6P'roro g6P'rNboONbx%rNbo&O%&O%rNbo g6P' `Oql _7p8Kksk!bK;Ik;IkbK_7p8KkbK `Oq_7p8Kk_7p8Kk̈́ףnjPkjPk̈́ףnro}Du$Ox%̈́ףnOx%rö́ףnrNboㇽ_p"nroㇽ_p"n&p9prö́shn;Ikㇽ_p"nㇽ_p"nrNbö́shnOx%}Du$j)Hu%ONbx%wxGC$rNbowxGC$̈́shnrNbo&O%j)Hu%wxGC$ g6P'j)Hu%&O%ONbx%&O%wxGC$ZZbT r=ZZأ r={bT@9dZZأ r={أ@9d{bT@9d{th@9dZZth r={뷯@9dZZth r=ZZ뷯 r={뷯@9d{bT@9d{أ@9d)bTi{أ@9dtأ)bTi)bTitأ܈`Otأsth܈`O܈`Osth{뷯@9dsth{th@9d{뷯@9dZZth r=&3th=ZZ뷯 r=&3th='3뷯=ZZ뷯 r=(WPأ@56أ@~'WPth@56أ@~6th@~'WPth@5}أ`۽(WPأ@5}th`۽(WPأ@5'WPth@5}th`۽tأ}أ`۽sth}أ`۽}th`۽sth'3bT='3أ=ZZbT r='3أ=ZZأ r=ZZbT r=&3th=thv<'3뷯=thv<أv<'3뷯='3뷯=أv<'3bT=أv<'3أ='3bT=nأJѻأvMzMZZbT r=1U>MzM]M@ <==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--.DATA0wNDATAh`0 .corner_vert fNR .corner_edge kNXR) p9RDATA fNL/  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.DATA kNL/   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,DATA p9s/tufu{MϡW$Py;RWO4OaN%I‚bབྷ}1y ]ޮS, 1Ԉʦ3 qjnƮ !/`ƈْsm q)ݤ +54msqϨkip@d>0=\v M@Kt *t\HAty!VyO߰6j-;(ekku̞in) &ǀ7٠Tf#ݔ)~Wx~MAWxz@MҤ{ WxagWx2\ѮY{g{ޢjngzg큰j:HFpC͎4e,?@}eȊ1hŦ[fK|}H5>y|A^ ||@^hxUN|lMN(Δq|lY4e/Y/Yg$ճcYTŷMYTbsίM{gӌ0΅{?yF03&}&H6&HAv6f6:A3^;$A{p^; S8?H˳C)0HN2C)tHɾ յ8 ȡ8ʪf B$'Bǀ'ګ'ĀӵڦEwRfARJ'#2pmY'|wu a-)/n)taB)ds l.A*c.]"zڷ]ͅ})y;3 vy<y|ݡ}!=,\4S]y2Si{ %NVO9C#YXCVO>Uf]DATAP2.select_poly j:؛R2sharp_facej:RDATAh j:DATAhj:DATA0 !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/ME :HME0.0561D-}}} : "P `#P @m:0 I@3g,!>.=:>A=薩DATAD- DATA "P0position 7R2 .select_vert u9؜RDATA5 7w}9g ur F e{E;E;F e{O9h ]Pb;0ޛ09yԫ b;0ޛ򽌻09yԫ 09yԫ ü\W@w2 " ="0ї@A˽PŽu~` " 2Pƽ;4,罯e_]I^G:wY09yԫ 09yԫ ^G:wYh ]P^G:wY?\@h ]P}T޼O,)s=,+T޼O,)d&s=,+T޼O,)C 09yԫ C ʹ>I09yԫ ?\@s=,+h ]Ph ]Ps=,+d&p!)pO)6" ~pO)6O ~6" ~w%"ӻ㚾F e{㚾DF e{Cu&@L$K/]T6O ~6O ~K/]T6" ~K/]T$6" ~6" ~$w%"ӻw%"ӻ$㚾DCu&@L$F e{F e{Cu&@L$6O ~w%"ӻF e{9g ur ]I^G:wY^G:wYb;0ޛ&Blnpٽʹ>IPƽ;4SgE~e˫`KC &Blnpٽʹ>Ie˫`KoCm !Pƽ;4oCm !,Pƽ;4sx. " ,="0ї@A˽H :i`\s=,+H :i`\X Łs=,+X Ł`Hys=,+s=,+`Hy}`Hyc-P d}}c-P dC c-P dʉ$xC ʉ$xe˫`KC e˫`KSgE~C C SgE~&Blnpٽ6" ~w%"ӻ;3@|w%"ӻ9g ur ;3@|d&p!);3@|p!)6" ~;3@|p!)d&pO)d&T޼O,)pO)Gp ս63:PƽV=!q=I(==Th=a!@ =I(=='=`D=Th=a!@ =Th=a!@ ='=`D=0=&!`='=`D=<V=0=&!`=0=&!`=<V=t< @=<V=a`툳=t< @=t< @=a`툳=% m=a`툳=V y=% m=% m=V y=< * =V y=l6z=< * =< * =l6z=ZJl0=l6z=Ǡ=ZJl0=ZJl0=Ǡ=E8=Ǡ=FUýY#=E8=E8=FUýY#=ý]=FUýY#=۽ '=ý]=ý]=۽ '=5ܽ0~%=۽ '=!,Ā<5ܽ0~%=5ܽ0~%=!,Ā곾 =\ 7 =\ 7>곾 [==ݢ>곾 R >곾v?[==ݢ[==ݢR >곾v?=L;R >곾v?^>곾_<=L;=L;^>곾_<= =^>곾_곾L3== == =X>곾L3=X= rd=X>곾L3=p=곾ʍ=X= rd=X= rd=p=곾ʍ=L=FrpԢ=p=곾ʍ==Ir0=L=FrpԢ=L=FrpԢ==Ir0= ʋ=Հ==Ir0==ـ`= ʋ=Հ= ʋ=Հ==ـ`=6=Fr@==ـ`=R=Ir=6=Fr@=6=Fr@=R=Ir=<V=R=Ir=<곾><V=<V=<곾>a`툳=<곾>g곾H >a`툳=a`툳=g곾H >V y=g곾H >곾`>V y=V y=곾`>l6z=곾`>h곾f=l6z=l6z=h곾f=Ǡ=h곾f=곾=Ǡ=곾=Ͻ곾`=Ǡ=Ǡ=Ͻ곾`=FUýY#=Ͻ곾`=곾`=FUýY#=FUýY#=곾`=۽ '=곾`=곾@ =۽ '=۽ '=곾@ =!,Ā<곾@ =J 곾w?<!,Ā<!,Ā\hoRPO~oRPO~>\hѼ곾p=곾ʍ== ==Ir0==Ir0== =x=== =턡=p=x==x==턡=p=R=Ir=턡=p=]=>R=Ir=R=Ir=]=><곾>Z\=Ox>]=>턡=Op=]=>= =턡=Op=턡=Op== ==O == =p=곾ʍ==O ==O =p=곾ʍ=`=O=p=곾ʍ=X>곾L3=`=O=`=O=X>곾L3= !>O@\7=X>곾L3=^>곾_< !>O@\7= !>O@\7=^>곾_<$ >OF<^>곾_곾v?$ >OF<$ >OF곾v?C >OWDR >곾v?>곾 C >OWDC >OWD>곾 ӥ>O$>곾 =곾`ӥ>O$ӥ>O$=곾`K=O=곾`=곾@K=OK=O=곾@=O=곾@=곾۽=O=O=곾۽x=O@=곾۽h=곾fx=O@ཡx=O@཭h=곾fn=OP7h=곾f<곾Pn=OP7n=OP7<곾Pb\hEּO6 EּO6 >\h>\Oh>\h]pu{ܽ>\Oh>\Oh]pu{ܽ߄OP]pu{ܽͽ ߄OP߄OPͽ ͽO ͽ b곾ɍͽO ͽO b곾ɍ`Ob곾ɍP곾L3`O`OP곾L3!O\7P곾L3V곾^!O\7!O\7V곾^ OFV곾^J 곾w?< OF OFJ 곾w?nOp7=nOp7=곾`>jbO1 >곾`>g곾H >jbO1 >jbO1 >g곾H >COP >g곾H ><곾>COP >COP ><곾>{<곾>]=>{{]=>Z\=Ox>\ƽO@3=ԽO =֢O=ԽO =xO`=֢O=֢O=xO`=mmO=xO`=nOp7=mmO=mmO=nOp7=F O=nOp7=jbO1 >F O=F O=jbO1 >$;e@=jbO1 >COP >$;e@=COP >{$;e@=$;e@={$Uh=~0={Z\=Ox>$Uh=~0=Z\=Ox>턡=Op=$Uh=~0=$Uh=~0=턡=Op=R`=p=턡=Op==O =R`=p==O =`=O=R`=p=R`=p=`=O=}=͎<`=O= !>O@\7=}=͎< !>O@\7=$ >OF<}=͎<}=͎<$ >OF<",=f$ >OFOWD",=fC >OWDӥ>O$",=f",=fӥ>O$j=O 3ӥ>O$K=Oj=O 3K=O=Oj=O 3j=O 3=O֢=O`򳽿=Ox=O@֢=O`֢=O`򳽡x=O@mm=Oӽx=O@n=OP7mm=Oӽmm=Oӽn=OP71F =On=OP7b\Oht:Qt:Q>\Oh53OPƽ>\Oh߄OP53OPƽ53OPƽ߄OP`O֢߄OPͽO `O֢`O֢ͽO ӽOmmͽO `OӽOmmӽOmm`O}ώ`O!O\7}ώ!O\7 OF}ώ}ώ OF,g= OFC OXD<,g=C OXD<ͥO$=,g=,g=ͥO$=\ƽO@3=ͥO$=JOЅ=\ƽO@3=\ƽO@3=JOЅ=ԽO =0=&!`=$Uh=~0=Th=a!@ =$Uh=~0=R`=p=Th=a!@ =Th=a!@ =R`=p=V=!q=V=!q=R`=p=6.=!xa=R`=p=}=͎<6.=!xa=6.=!xa=}=͎<X=!<X=!<}=͎<=!;}=͎<",=f=!;=!;",=f=!@=!@",=f2[=!X<",=fj=O 32[=!X<2[=!X<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|DATA z9DATAh0 .corner_vert QR .corner_edge Q؝R) ,QRDATA QL}  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|DATA QL}   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|zDATA ,Qs}tCE.CúHE}E6CuΨ:^5 JmHDicILH٪jHonƶG#r%{h{Cp(rRݷ;d[HUKg3BD׮bHiT;sr߇_uKD_|\FGIGO|(bWdBuީVp?,/R9@ոUc7K׺{ٵ/&r1̸}yߟY5y>barC7C0Ly*T8Tw*_1iE9޸h{ QE&׭,ZwxF)^]BBk~T~uٯG ϺG Ok s2GIDUzkG\+C6vȑuI`#qݶC\Jbw2~w,Jѻ ˀImFt=v37,9p\(e҂ Ǥ}[g؝4~F5NP#Q~XtЯ=π:Iıs4!ʰBO ɣa\ #a ,5 d-y.t";pQضDبLܺ_#2b.ɂADf3pAˆÚ]~d&4j H9 c4`Պwco$J(H;='y*OIdI7:GW(0Etr7N} M}Hu6~ @\}_5sNtRۙ bǃ>3p`#;4gTZ;_BL.2K^Hd*œX/+hAƳI&·#N7I(>Wq^^O/N>#E+  \iN|6YY7j+oYJ!3 +!Ve",5?}˵e9;XYw+<E$i9"MSW @2ȝH{} !uqym+Dڝ܋-: ]4gwIȫǡ"\|4e=&Y%09mW]~o,ldڬ,n؛,Bcddn,dm۬,ؚ,Sddk,dۨ,lٔ,MLd2d*f,WÉdܟ,ى,LdiÆdܣ_,ċdܑ,(x,UdňdU,^a},sY30ayc00\~,=c?9B=s~7v9x7c{yҿUliȸ'`goel7*Cd)ݢ+?0ed+ eߗ+n+3negeث+,e;`+6+e!e+\n!+q7]7آ,ʨ]=\]n,d&ܢ,u٣,Ytd~dSo,ýdܜ,ٚ,ddm,%dݐ,/ڌ,ddѤi,d~,zy,d ea,Sei,`,o e"eX,:e*N,,ZEeHe,d :bg׋T}9SN#!6މV˩_ qxY ވq)Ԭrff;*=e5E*,51el&eR',Z=ew,B+5He*&el ,Be+d۰+2fe)e+"]ް+'8Hm]=)]l8ד,٧*$8bx$ D^N FVlVTҟiZѦ)/ dKUlpadFzbИjo3kvk'% I̬*UF1iz?UvFԤb9% Pv9K >kkӗ<,ՏCagk_k*CJfLC|CaKWKۣCJkCkC`^kVk,sCIMC]C_iMK`MУeCHdCQC^cײciYCGJѻCEC^xIqpINCFZұC҂7֣sZkZ7ϳZ8mCeyZpZCNZQDҺCeZzZCOc<D҆CfAc9c6COHICEEơHqHMEubԁEghybOub%Hв#b0o&Hʹq*RQr MrhH-!yGga(VGZCXcAӫBUCgcc5]CQfLѸCQCfKWKۣYCPkӵCOCe^kVk,XCNMҵCQCciMK`MУYCMdӷCUCbcײci]CKJѼCZC`xIqpIbCIZC88ͣsZkZA8ųZ8сDdyZpZDMZD\DdZzZeDMc<ӹD8DcAc9c6@DMHIіDEHqHEmi.FT7iVaOIV8]8]8,]B]c8ô] 88]J]H8lv]Y8 0v]V]Og0Gw] 2ۮLpR_wL״+_l,(_b+k_v+9_w^9<|_8l_;nŵ_{;$[I_Io*+ `)G_)'`O)SI_ ID*aZ` W`[)`?) ܶG_M'Hڢ1G`f_w1yY/IrVI8V9V<8]8]8,]D]8 ^s88 ^,L ^8l^8 0^tX}^g0G] 2ۮLp_L2_*^s1 l<0h9ڮj{ji9 sY9[8Oܶ[8Jɠh[8N.9Bhh.9/J^F.9/sJ^^b /΋]L1+SI_YID*a;`lX`)`ל) ܶG_'Hڢ1;` d_Ew1yX/IrVPVv8I8̣P^%" ܙۘ\"񥝔Aqfw\ %*"gNkM܊!2x>ٔo%F[m%t!9^ 75 xZ؇#bq&iL]"Ǟ*o&^}z3Ϟqrrͩ۞њYTu\l" `ow19n":F{n/,cfu=?ʘ  sRjhZ:3,ٜ-;M&X?%P $ʒ} =@F#9yAM@\ iS$%ņd$"9&4`יȤyێ剼o"u1 ~pT'5 wm揄W$Nͣ1d>JJ근$4":&;#qcDATAx@m:2.select_poly 0XRDATA 0=DATA : !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME :HME0.0572D-B`(P%P 'P o:`0 & ==h_=A=薩DATAD-DATA%P0position 6؞R2 .select_vert *RDATAH 6wxߑȖi+vlkZ}Ľ۽:ɔv:5}S۽+vlk:ɔZ}Ľ۽Z}Ľ۽:ɔ}S۽+vlkv:5:ɔ}S۽v:5=vBlk=vBlkv:5+vlk=vBlkB `i}S۽}S۽B `i7D|Ga ؽR` ?7D|Ga ؽFat-7D|Ga ؽB `iFat-Fat-\8RP+R` ?R` ?\8RP+PB58P@J8PB58g 'f\8RP+ s<йPB58mȑ+g 'f\8RP+ s<й\8RP+g 'fP@J8g 'fmȑ+PB58 s<йg 'fmȑ+̫V-P@J8P@J8̫V-)R`?Z}Ľ۽)R`?xߑȖi)R`?̫V-xߑȖiPB58Q{`1=R` ?R` ?Q{`1=7D|Ga ؽQ{`1=|ٽ7D|Ga ؽ7D|Ga ؽ|ٽ}S۽}S۽|ٽZ}Ľ۽|ٽ|r#ٽZ}Ľ۽Z}Ľ۽|r#ٽ)R`?|r#ٽ\R^o@)R`?)R`?\R^o@P@J8\R^o@EQ@-=P@J8P@J8EQ@-=PB58EQ@-=Q{`1=PB58\8RP+v=󼞙,mȑ+v=󼞙,I,mȑ+mȑ+I,̫V-I,6|(ox-̫V-̫V-6|(ox-xߑȖi6|(ox-8s,jxߑȖixߑȖi8s,j+vlk+vlk8s,j=vBlk8s,j`-j=vBlk=vBlk`-jB `iB `i`-jFat-`-jv=󼞙,Fat-Fat-v=󼞙,\8RP+|r#ٽ|9%Ї8s,j`-j6l9|ٽ|9%Ї6l98s,j8s,j6l9`-j6l9|9%Ї|ٽ|ٽ|9%Ї|r#ٽ|ٽQ{`1=`-jQ{`1=v=󼞙,`-jHO;@lpEv=󼞙,v=󼞙,lpEI,I,lpEEQ@-=EQ@-=lpEQ{`1=lpEHO;@Q{`1=Q{`1=HO;@v=󼞙,6|(ox-I,\R^o@\R^o@I,EQ@-=\R^o@|r#ٽ6|(ox-|r#ٽ8s,j6|(ox-DATA *DATA 'P..edge_verts :XR2.select_edge *RDATA0 :u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA *DATAh`0 .corner_vert .؟R .corner_edge.S) .XSDATA .L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA.L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA .sU<ߪ?վ^6c G8y]^P\ W94 P:L=7_<8__<쪔KJ0I&ԒLi<7>9_=m9_:M DR3ܢr6x (B)?L߸x M A9{=2_7r8_\<⪹ Qz7C2dӍV%Ň{ձg|=ʹ}L}i*),P}mЂ{\mZ{q|1u}ȫouzԿ7u@uߞ:ek}NR~Bl}^}io|r|ω}'g|9R}s}!ګ~ }~~ݿ~,~w ~}`{RP{})}i|!9|O{ޱd,|7͏}V4}Kr}\8|N&=|͢o'@>Ba;{K̜ZaBGBّa @KrKtom4S@EB 8=.={|T>SJDc* *V cbVB=C<>t,;8 @99N :iY+8)ʛ+=(2>A=薩DATA E-` DATA(a2J DATA.0positionszk2 .select_vertc*rDATA@szw0uyX᤽(:r(uy=V᤽(:r=(佺>(佰G=YX >=4Zн=M)7ͽk0]=>+彾=| ==彭GnO~=2V2V"=+@y=ֿ=R =(=:N=Q<+=8%N~=NpG=/ڽS=g=4M=F>^(k=>+@y=>彺>)M@y=ܲϽM+:Ͻ4Zн+M@y=+彷+@y=jA0[ =P*B(:Ͻ4L==ֽ&ǴA=,NM[rM=Pr!5BHQNս&G[X >P>*BG=nODATA0cDATA..edge_vertsQXn2.select_edgeX]2XkDATAPQu+ -.++&&+&+&&","$$,$,,+&--**''*            ## ././/   (()()    -%%!$!%!!!  $"##$ $ !//&&))'(**)(+, ,. "DATAX]2DATAh .corner_vertfo .corner_edge.).rDATAPfL+&+&&++"$,$,,+&-&*'*        # ./ /  (()    .- -%$!%!!    !$"#$# $$  !!%/&/&&))'(*)*')*((++, ,-../, " #"DATAP.L      "#!$#%$&'"')(+*,-+/0.01342564/878:96;:=><.?>AB@DECHF<EFGIJ@JKHLMKMON)PPQ5&RQRS;ST9!UTUV7WV(X YZX\][^]`a_\Ya3bc_bDd=e2fgeg`cfh^dhi%jkimlnokoqprsp1Ws?tmuqvwAxwxyutrylzznj[ Z{|G}|}~N~,O-*L IC{BvDATAPsY;#'mWY#Lm#DmYZ]BZYY[! )zP[!*)]BzOzP]BY#TmZ}OTUZiOZsOTU(P#EmZWZK-WK-GUqW GUq=&GUqK-=&K-% =& U GUqGUqU ]+;5 u4r3}a+5251a+$Vn,? 6r3V} 6Smr3_}a+r3d}WRr3_} #r3_}Sl #r3}1"r3Y}521" 1"W!4OuzaZf-f1" #"Zf-kZ#"uk1"1" k#"k:V#"#":RP 6]+U 6U SlU  SmSl # # R =&RR=&a+=&% a+GUq]+W]+PhWPc-qb-RbTUE-S-bb]+-lbPm]+ 6,?]+,?E7S]+}ua(Pr3},-qb,?,~?-bbE2S-lbTUd(PTUK-Z%Z9)% ]B[!/){b9)b% % b"2C"2C$Kn% $[na+% 1" 52$0nb[! )"2}CYW!*O[!%)W!/O1" [!/)[!/)1" "2}C1" $[n"2C]B}bZZb9)P@WZOf-f#Jmf-k#"#6m#Jm#"#"PP u:V5P4 uP5:S;:Vk;;kYYkzPkuzP(PkaZOaf-kZsOzPuYuW!/OYDATAȖ2.select_polyi2sharp_face;kDATA\DATA\;DATAt !$'*-0369<?BEHKNQTWZ]`cfilorux{~ ME :HME0.0594E-P yN`-P /P `u:0 3'!< ף=;`=A=薩DATAE- DATA`-P0position SS2 .select_vert.PXSDATA@ Sw1\=&=!\&=1\=:(=!\&=!\:(=1\=:(=ף=:(G=ף=:(u=ף=&G=ף=:(u=ף=&u=ף=&G=ף&G=ף&u=ף:(G=ף&u=ף:(u=ף:(G=Â&htף&u=ף=&u=ף=&G=ף=&u=1\=&=ף=&u=ף&u=1\=&=1\=&=ף&u=!\&=ף&u=ף&G=!\&=:{?=&z=&0]<&0&0x&0Â&htף=&u=ӂ=&htÂ&htӂ=&ht'=&@ƥÂ&htÂ&ht'=&@ƥk=& [& '&@ƥq q&eK'&@ƥÂ&htq q&eKq q&eKÂ&ht{?&zÂ&htx&0{?&zot3& &0]<&0&0Â&ht]<&0]<&0Â&ht:{?=&zÂ&htk=& :{?=&z:{?=&zk=&  q=&eKף=:(u=ף=:(G=1\=:(=]<:(0=:(0Â:(ht=:(0:{?=:(zÂ:(ht q=:(eKk=:( :{?=:(zk=:( '=:(@ƥ:{?=:(z:{?=:(z'=:(@ƥÂ:(ht'=:(@ƥӂ=:(htÂ:(htÂ:(htӂ=:(htף:(u=ӂ=:(htף=:(u=ף:(u=ף:(u=ף=:(u=ף:(G=ף=:(u=1\=:(=ף:(G=ף:(G=1\=:(=!\:(=':(@ƥ[:( Â:(ht[:( q q:(eKÂ:(htpw3:( ]<:(0:(0]<:(0Â:(ht:(0:(0Â:(htx:(0Â:(htq q:(eKx:(0x:(0q q:(eK{?:(zӂ=&htӂ=:(ht'=:(@ƥӂ=&ht'=:(@ƥ'=&@ƥ'=:(@ƥk=:( '=&@ƥ'=&@ƥk=:( k=& k=:(  q=:(eKk=& k=&  q=:(eK q=&eK q=:(eK:{?=:(z q=&eK q=&eK:{?=:(z:{?=&z:{?=:(z=:(0:{?=&z:{?=&z=:(0=&0=:(0]<:(0=&0=&0]<:(0]<&0]<:(0pw3:( ]<&0]<&0pw3:( ot3& pw3:( :(0ot3& ot3& :(0&0:(0x:(0&0&0x:(0x&0x:(0{?:(zx&0x&0{?:(z{?&z{?:(zq q:(eK{?&z{?&zq q:(eKq q&eKq q:(eK[:( q q&eKq q&eK[:( [& [:( ':(@ƥ[& [& ':(@ƥ'&@ƥ':(@ƥÂ:(ht'&@ƥ'&@ƥÂ:(htÂ&htӂ=&htף=&u=ӂ=:(htף=&u=ף=:(u=ӂ=:(htף&u=Â&htף:(u=Â&htÂ:(htף:(u=1\=:(=ף=:(G=1\=&=ף=:(G=ף=&G=1\=&=ף:(G=!\:(=ף&G=!\:(=!\&=ף&G=DATA.PDATA/P..edge_verts SS2.select_edge 1PأSDATA Su    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA 1PDATAh0 .corner_vert NS .corner_edge NXS) TSDATA NL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA NL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA Ts_z7k{o7kC?or_=*|ڠ**|y)|JՌ*&_=H|ڠ |H|x{I |절׷ Vyì뵬äHҷ1FF{sds [义$\շ7sd#T0#TZÈ.0ۺ0i!܈S ܷ!sd s :s-s;>ֈշsd1FF{0 ],0 Eδi]sd#T#TZx7۴x]x+ӫ]]$+!+!! ޫK{(K{ !N| " =N|#{#V|(v{%{vBv x ! = x;zxԍ =z-z ! v ! = vF!v!vpmҢ vF vpmy$i1Ԗmlԍ =hhꢍ !^ec ^^ײ^^&ecOҡc7,kOFkO7, F-΍ = " = !F-}7, 7,}z}AzE(|{(|*|L{I|Lw}{w}⬣}N{ssDH{DSDU{ϣ}RHDRpDHDATAx`u:2.select_polyؤSDATAPDATAD yN !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME :HME0.0605E-o$" gM3P x: y:`0 E-3۾vw5>>zv>]=A=薩DATAE-:DATAE-JBDATA3P0position MXS2 .select_vertw:SDATA4 Mwo$X=E&L>v=E&=n>v=+=n>RW=+>VWWW<+!S>WE&%S>W+%S>{RWE&>vE&=n>X+L>+rm>+=:(3=E&3=>:(3=>E&rm>>+rm>v+=n>$X=+L>>+=zRW+>E&rm>XE&L>RW=E&>>E&3=>:(=:(= 1=e=l =eõ=?=eJH>N=e> }UWѾ2eZ%>|Ue=VѼe#>1e=Ne>f eõ=9eJH>beC*=ĽezN>{eC={=eC=#=ezN>b=eC*=!=mA=G=I>C!=umt=nA2>=,qAcp=oA=!봽0CC=YoArG*>mmtnA2>y=(3M=o=3CsR=QN=C==Dc==YPAp==u=?U<A3*=T"=e="=zljb9<>w=o4<>e=뽟͊=e=zljj9<>oA>V)ZpP>B-ڀP><P>=Ɖ:G>n=]o:oK>no<>M7oaQ> nA 8>o2nA:9><%p ET>Y=mArG*>KሽeB>Ľ͊zN>9͊JH>VѼ͊#>2͊Z%>iu=e >?=͊JH>#=͊zN>"=͊=:PM M>N͊>W<͊#>N=͊>Q=ӊRM>뽟͊J9>'=͊r:>uR=ljzO>޽p#="=e=DATApw:DATAxx:..edge_verts 6إSDATA 6u$ !"&'()*+,.,--.4589;<ABCDEFHIJKMNRSTUXYbc                 --!! " #"#"$$##%$%$&&%%'&(('')(**))+*NN+I,I-./H/00H099HH[9[9<<[[1<1<22113232>>33Y>Y>@@YG5G44PP55DPDP66DDB6B677BB@7@7XX@088::9:;;9;2;==2=>=??>?@?AA@ACCBCEEDE5F5FGFmmGnIn//IJkkKKHkHkIIdkdPL4LMjjNjOONLNNPOPPVOVOQQVVWQWQRRWWZRZSZJTKTKUTlUllSUSUZK[V6V7W7WXWYZYZ3U3U1[UM\N\M]\]]^\^^f\ff_\_\""__`"`"aa``gagghahhbabacaIIccdj]je]e^efeeRfR_R`R`SgSSigihibiikbkckkTOeTiilQeGLLmn88/DATAh`0 .corner_vert 6S .corner_edge 6XS) 6SDATA 6L"                  -! !" "#"$##$%$&%%&'&(''()(*))*+*N+I-,,-.-./0H09HH9[9<[[<1<211232>33>Y>@YG454P55PDP6DD6B67BB7@7X@@XY0898:9:;99;<<;2;=22=>=?>>?@?A@@ABACBBCDCEDDE5EF55FGFmGn/I/HIJkKKkHHkIIkdP4LMjNjONLNPNOPPOVOQVVQWQRWWRZRSZJKTKUTTUllUSUZSKH[PV66V7VW77WXXWYWZYYZ3ZU33U1K[U[1UMN\M\]]\^^\ff\_\"__"`"a``aggahhabbacaIccIdjM]j]e]^e^feefRf_R_`RR`S`gSSgighihbiibkbckkcdkJTOjekTiSiliTlRQeeQO4GLLGmn8//80DATA 6L" !" "$#%&$&'())+*,-+-/.01/1324535768979;:=><?@>@BA;CBADEFGHFIHIKJLMK26NLOPO#QPQ'R?S:TUSUVNRWVW*.CXE8YXY4ZG[\][]!%^(\_^_`,Z0`JaDb<aMcbT=cdeegfhgjiklmlmonpqoqsrtusuvwxxyz{{|}~  j              !"##DATA 6s" XCO).' X).'y&`).'/hy&`y&`/h'`/hj/>''`'`j/>')`j/>'/h)`)`/hG/`/h-;'G/`G/`-;'/!-;'l*4'/!/!l*4'2`l*4'+8'2`2`+8'/!+8'e,;'/!/!e,;'3`e,;'1#3`3`1#"MY%pK2dL_2d"ML_L_"ME,{A"M1#E,{AL_E,{Ae:E,{A1?e:1?COe:CO Xe:e: X(.i X1@(.i2`/!3`1@ Xy&`y&`'`1@'`)`1@1@)`G/`"M2d3`2d1@3`3`1@2`1@G/`2`2`G/`/!E,{A1#1?1#e,;'1?1?e,;'+8'CO1?).'1?j/>').').'j/>'/h/hj/>'-;'j/>'1?-;'-;'1?l*4'1?+8'l*4'e:(.iL_(.iY%pKL_(.i1@Y%pK1@2dY%pK0eA0eA0eA7yuzY3@K gK /L>gg/L>u/L> H}uu H}x  H}_|kx x _|k_{_|k7g_{_{7g S7g w SW$(VOsf$(VO`sfsf`v` Xvv X5 X<55< wo/L>s/L>/L>s H} H}s_|ks_|k_|k7g7g7g w w w 5 55v}vv}sf}{sfsf{W{6W#$Y3@LY3@gLK#}J eYY egg eLL e5$1`$(VO+,g#"q#"q@t+`@t``@t \@t 'l \ \ 'lOla 'l/OlaOla/5,d/Jq5,dK#}JY YA  AHHAJqA5,dJqYgu` \ X X \< \Ola<_>_:V%\V%\:8%:S>8%8%S> `S>: ` `:qPaqPa:7_7_:*^*^:j^:Lj^j^L5$1#"q,g%`#"q%`WY%`>_WY>_V%\WYWYV%\/V%\8%/8% `// `Jq `qPaJqJqqPaN? qPa7_N? 7_*^N? N? *^ e*^j^ e ej^5$1 eK#}J @t#"qWY e N? JqN? HN?  H/ 'lWYWY 'l@t$(VOW++W6#$oY3@Y3@oK DATAx y:2sharp_face%ئSDATA%DATA gM !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "ME :HME0.0636F-T 6 6P `7P {: 0 X9ң43>>l>A=薩DATAF-`@ DATA 6P0position`<XS2 .select_vert SSDATAS`<w+ X+ fI  X+ fI  fI  X+rTW+ XI rTW+ XI  XI rTW+l=TW+rTWK l=TW+rTWI rTWK l=TW+ =X+l=TWK  =X+l=TWK l=TWK  =X+ =f+ =XK  =f+ =XK  =XK  =f+l=h+ =fK l=h+ =fK  =fK l=h+rh+l=hI rh+l=hK l=hI rh+ f+rhI  f+rhI rhI  f+l=h+rh+ =f+rh+ f+ =f+ =f+ f+ =X+ f+ X+ =X+ =X+ X+l=TW+ X+rTW+l=TWI rhK l=hK  =fI rhK  =fI  fK  =fK  =XI  fI  fK  =XI  XK  =XK l=TWI  XI  XK l=TWI rTWoT=DT=o{u=DT=Du=o{u=oT=@d;oT=o{u=@d;oT=o{u=o{u=@d;/ݾT=@d;oT=@d;/ݾ~u=@d;oT=@d;o{u=@d;/ݾ~u=@d;DT=`l/ݾT=@d;Du=`l/ݾT=@d;/ݾ~u=@d;Du=`lDT=DT=`lDu=DT=`lDu=`lDu=DT=`lDT=/ݾT=@d;DT=oT=/ݾT=@d;/ݾT=@d;oT=oT=@d;o{u=@d;o{u=/ݾ~u=@d;o{u=Du=/ݾ~u=@d;/ݾ~u=@d;Du=Du=`lZ$T@d;Z$TZ$D=8Z$TZ$xi=Z$D=8Z$D=8Z$xi=Z$S=Z$D8Z$xi@d;Z$ 0(Z$xi@d;Z$T@d;Z$ 0(Z$ 0(Z$T@d;Z$ 0=(Z$T@d;Z$D=8Z$ 0=(Z$D=׾Z$S=־Z$xi=EVZ$S=־Z$nY=tӾZ$xi=EVZ$xi=EVZ$nY=tӾZ$xi=Z$nY=tӾZ$nY=视Z$xi=Z$xi=Z$nY=视Z$S=Z$D8Z$ϙSZ$xi@d;Z$ϙSZ$Y视Z$xi@d;Z$xi@d;Z$Y视Z$xiEVZ$Y视Z$YtӾZ$xiEVZ$xiEVZ$YtӾZ$ϙS־Z$ϙS־Z$D׾Z$xiEVZ$D׾Z$ 0hؾZ$xiEVZ$xiEVZ$ 0hؾZ$xi=EVZ$ 0hؾZ$ 0=hؾZ$xi=EVZ$xi=EVZ$ 0=hؾZ$D=׾oDx+oʙSKoxiEVoʙSKoY`oxiEVoxiEVoY`oxi@d;oY`oYZoxi@d;oxi@d;oYZo T@d;oYZoʙSTo T@d;oʙSToDP>Qo T@d;o T@d;oDP>Qo ToDP>Qo 00Oo To To 00Ooxi=o 00Oo 0=0Ooxi=oxi=o 0=0OoD=P>QoD=P>QoS=Toxi=oS=TosY=Zoxi=oxi=osY=Zoxi=EVosY=ZosY=`oxi=EVoxi=EVosY=`oS=KoS=KoD=x+oxi=EVoD=x+o 0=۹oxi=EVoxi=EVo 0=۹oxiEVo 0=۹o 0۹oxiEVoxiEVo 0۹oDx+o#xiEVZ$xiEVo#xi=EVZ$xiEVZ$xi=EVo#xi=EVo#xi=EVZ$xi=EV"o=EVZ$xi=EV$ y=EV"o=EV"o=EV$ y=EV!"t=EV$ y=EVS#=EV!"t=EV!"t=EVS#=EVM"vu=EVS#=EVM"=EVM"vu=EVM"vu=EVM"=EV{u=EVM"=EV=EV{u=EV{u=EV=EVkt=EV=EV=EVkt=EVkt=EV=EVtto=EV=EVXy=EVtto=EVtto=EVXy=EVZxi=EVXy=EVoxi=EVZxi=EVZxi=EVoxi=EVZxiEVoxi=EVoxiEVZxiEVZxiEVoxiEVttȝoEVoxiEVX9yEVttȝoEVttȝoEVX9yEVk2tEVX9yEV삽EVk2tEVk2tEV삽EVuEV삽EVEVuEVuEVEVM"uEVEVM"EVM"uEVM"uEVM"EV!"7tEVM"EVS#삽EV!"7tEV!"7tEVS#삽EV"͝oEVS#삽EV$>yEV"͝oEV"͝oEV$>yEVo#xiEV$>yEVZ$xiEVo#xiEV"͝oo#xi$>yZ$T&QTZ$xi&QT&QuZ$xiZ$xi&QuZ$uouDuoxiDuDToxioxiDTo T"͝o$>y!"7t$>yS#삽!"7t!"7tS#삽M"uS#삽M"M"uM"uM"uM"uuk2t삽k2tk2t삽ttȝo삽X9yttȝottȝoX9yZxiZ$xi$>yZ$T$>yo#xiZ$TZ$To#xiZ$xi=o#xio#xi=Z$xi=Z$xi=o#xi=$ y=o#xi="o=$ y=$ y="o=S#="o=!"t=S#=S#=!"t=M"=!"t=M"vu=M"=M"=M"vu==M"vu={u==={u=={u=kt===kt=Xy=kt=tto=Xy=Xy=tto=oxi=tto=Zxi=oxi=oxi=Zxi=o TZxi=Zxio To TZxioxiZxiX9yoxiM"EVM"S#삽$>yZ$xiZ$xi@d;M"EVS#삽S#삽EVS#삽$>yS#삽EVS#삽EV$>y$>yEV$>yZ$xi@d;$>yEV$>yEVZ$xi@d;Z$xiEVZ$xi=EVZ$xi=$ y=Z$xi=EV$ y=$ y=EV$ y=S#=$ y=EV$ y=EVS#=S#=EVS#=M"=S#=EVS#=EVM"=M"=EV=EVM"=EV=M"=EVM"===EV===EV==EV=Xy==EV=EVXy=Xy=EVXy=oxi=Xy=EVXy=EVoxi=oxi=EVoxi@d;oxiX9yX9yEVoxiEVoxi@d;oxi@d;X9yX9yEVX9y삽X9yEVX9yEV삽삽EV삽삽EV삽EVEVM"EVEVM"EVM"o#xiEVo#xi"͝oo#xiEV"͝o"͝oEV"͝o!"7t"͝oEV"͝oEV!"7t!"7tEV!"7tM"u!"7tEV!"7tEVM"uM"uEVo#ϙSo#D8o#xio#D8o# 0(o#xio#xio# 0(o#xi=o# 0(o# 0=(o#xi=o#xi=o# 0=(o#D=8o#D׾o#ϙS־o#xiEVo#ϙS־o#YtӾo#xiEVo#xiEVo#YtӾo#xio#YtӾo#Y视o#xio#xio#Y视o#ϙSo#D=8o#S=o#xi=o#S=o#nY=视o#xi=o#xi=o#nY=视o#xi=EVo#nY=视o#nY=tӾo#xi=EVo#xi=EVo#nY=tӾo#S=־o#S=־o#D=׾o#xi=EVo#D=׾o# 0=hؾo#xi=EVo#xi=EVo# 0=hؾo#xiEVo# 0=hؾo# 0hؾo#xiEVo#xiEVo# 0hؾo#D׾M"vu=EVM"vu=!"t=M"vu=EV!"t=!"t=EV!"t="o=!"t=EV!"t=EV"o="o=EV"o=o#xi="o=EV"o=EVo#xi=o#xi=EVM"vu=EV{u=EVM"vu={u=EV{u=M"vu=Zxi=EVZxi=tto=Zxi=EVtto=tto=EVtto=kt=tto=EVtto=EVkt=kt=EVkt={u=kt=EVkt=EV{u={u=EVZD=x+ZS=KZxi=EVZS=KZsY=`Zxi=EVZxi=EVZsY=`Zxi=ZsY=`ZsY=ZZxi=Zxi=ZsY=ZZS=TZS=TZD=P>QZxi=ZD=P>QZ 0=0OZxi=Zxi=Z 0=0OZxiZ 0=0OZ 00OZxiZxiZ 00OZDP>QZDP>QZʙSTZxiZʙSTZYZZxiZxiZYZZxiEVZYZZY`ZxiEVZxiEVZY`ZʙSKZʙSKZDx+ZxiEVZDx+Z 0۹ZxiEVZxiEVZ 0۹Zxi=EVZ 0۹Z 0=۹Zxi=EVZxi=EVZ 0=۹ZD=x+uEVuk2tuEVk2tk2tEVk2tttȝok2tEVk2tEVttȝottȝoEVttȝoZxittȝoEVttȝoEVZxiZxiEVuEVM"uEVuM"uEVM"uuDT&1DTDu&1DTDuDu&1T@d;DT&1u@d;DT&1Du&1u@d;o T@d;T@d;oxi@d;T@d;u@d;oxi@d;oxi@d;u@d;ou@d;ou@d;ouoxi@d;ouoxioxi@d;o T@d;o TT@d;o TDTT@d;T@d;DTDT&1Du&1Duu@d;Duouu@d;u@d;ouou@d;Z$xiZ$uZ$xi@d;Z$uZ$u@d;Z$xi@d;&QT`l8T@d;&Qu`l8T@d;8u@d;&Qu`l&QT&QT`l&Qu&QT`l&Qu`l&QuZ$u@d;8u@d;Z$xi@d;8u@d;8T@d;Z$xi@d;Z$xi@d;8T@d;Z$T@d;&QT`l&QT8T@d;&QTZ$T8T@d;8T@d;Z$TZ$T@d;Z$u@d;Z$u8u@d;Z$u&Qu8u@d;8u@d;&Qu&Qu`lo# 0=(o# 0(Z$ 0=(o# 0(Z$ 0(Z$ 0=(o#Y视o#YtӾZ$Y视o#YtӾZ$YtӾZ$Y视Z$ 0=hؾZ$ 0hؾo# 0=hؾZ$ 0hؾo# 0hؾo# 0=hؾZ$nY=视Z$nY=tӾo#nY=视Z$nY=tӾo#nY=tӾo#nY=视o 0=0Oo 00OZ 0=0Oo 00OZ 00OZ 0=0OZsY=ZZsY=`osY=ZZsY=`osY=`osY=Zo 0۹o 0=۹Z 0۹o 0=۹Z 0=۹Z 0۹oYZoY`ZYZoY`ZY`ZYZZ$nY=视o#nY=视o#S=Z$nY=视o#S=Z$S=o#S=o#D=8Z$S=Z$S=o#D=8Z$D=8o#D=8o# 0=(Z$D=8Z$D=8o# 0=(Z$ 0=(o 0=0OZ 0=0OZD=P>Qo 0=0OZD=P>QoD=P>QZD=P>QZS=ToD=P>QoD=P>QZS=ToS=TZS=TZsY=ZoS=ToS=TZsY=ZosY=ZoYZZYZZʙSToYZZʙSToʙSTZʙSTZDP>QoʙSToʙSTZDP>QoDP>QZDP>QZ 00OoDP>QoDP>QZ 00Oo 00OZ$ 0(o# 0(o#D8Z$ 0(o#D8Z$D8o#D8o#ϙSZ$D8Z$D8o#ϙSZ$ϙSo#ϙSo#Y视Z$ϙSZ$ϙSo#Y视Z$Y视o 0۹Z 0۹ZDx+o 0۹ZDx+oDx+ZDx+ZʙSKoDx+oDx+ZʙSKoʙSKZʙSKZY`oʙSKoʙSKZY`oY`osY=`ZsY=`ZS=KosY=`ZS=KoS=KZS=KZD=x+oS=KoS=KZD=x+oD=x+ZD=x+Z 0=۹oD=x+oD=x+Z 0=۹o 0=۹Z$ 0=hؾo# 0=hؾo#D=׾Z$ 0=hؾo#D=׾Z$D=׾o#D=׾o#S=־Z$D=׾Z$D=׾o#S=־Z$S=־o#S=־o#nY=tӾZ$S=־Z$S=־o#nY=tӾZ$nY=tӾZ$YtӾo#YtӾo#ϙS־Z$YtӾo#ϙS־Z$ϙS־o#ϙS־o#D׾Z$ϙS־Z$ϙS־o#D׾Z$D׾o#D׾o# 0hؾZ$D׾Z$D׾o# 0hؾZ$ 0hؾll=ll=l=lnR\="\=nR\="\="\=nR\=FSFS=FSFS=FS=FS0\nR:\0\nR:\nR:\0\ll=0\l="\=0\FSnR:\FS=nR:\0\FS=FS=0\nR\=0\"\=nR\=l=l"\=l0\"\="\=0\nR\=0\nR:\nR\=nR\=nR:\FS=nR:\FSFS=0\l0\ll0\FSnR:\FSnR:\nR:\FSnR\=FS=nR\=FS=FS=nR\=l="\=l="\="\=l=&QT=`l&QT=&Qou=`l&QT=&Qou=&Qou=`l8T=@d;&QT=`l8su=@d;&QT=`l&Qou=`l8su=@d;Z$T=@d;8T=@d;Z$vu=@d;8T=@d;8su=@d;Z$vu=@d;Z$T=Z$T=@d;Z$vu=Z$T=@d;Z$vu=@d;Z$vu=&QT=Z$T=&Qou=Z$T=Z$vu=&Qou=Z$T=@d;Z$T=8T=@d;Z$T=&QT=8T=@d;8T=@d;&QT=&QT=`l&Qou=`l&Qou=8su=@d;&Qou=Z$vu=8su=@d;8su=@d;Z$vu=Z$vu=@d;K l=xiZ$b=xiZ$=lEiK l=xiZ$=lEiK =lEiZ$=lEiZ$k=hK =lEiK =lEiZ$k=hK k=hZ$k=hZ$}=gK k=hK k=hZ$}=gK =gZ$}=gZ$=fK =gK =gZ$=fK =fK =XK =fZ$=XK =fZ$=fZ$=XK =XZ$=XZ$}=PWK =XZ$}=PWK =PWZ$}=PWZ$k=P WK =PWK =PWZ$k=P WK k=P WZ$k=P WZ$=yVK k=P WK k=P WZ$=yVK =yVZ$=yVZ$b=EVK =yVK =yVZ$b=EVK l=EVI rEVK l=EVZ$|EVK l=EVZ$b=EVZ$|EVI rEVZ$|EVZ$ yVI rEVZ$ yVI yVZ$ yVZ$kP WI yVI yVZ$kP WI kP WZ$kP WZ$PWI kP WI kP WZ$PWI PWZ$PWZ$XI PWI PWZ$XI XI fI XZ$fI XZ$XZ$fI fZ$fZ$gI fZ$gI gZ$gZ$khI gI gZ$khI khZ$khZ$ lEiI khI khZ$ lEiI lEiZ$ lEiZ$|xiI lEiI lEiZ$|xiI rxiK l=xiI rxiZ$b=xiI rxiZ$|xiZ$b=xiI rTWI rEVI :WI rEVI yVI :WI :WI yVI ɎWI yVI kP WI ɎWI ɎWI kP WI 𑽐6XI kP WI PWI 𑽐6XI 𑽐6XI PWI  XI PWI XI  XI  XI XI  fI XI fI  fI  fI fI ܇gI fI gI ܇gI ܇gI gI ɎhI gI khI ɎhI ɎhI khI hI khI lEiI hI hI lEiI rhI lEiI rxiI rhI rhI rxiK l=hI rxiK l=xiK l=hK l=hK l=xiK =hK l=xiK =lEiK =hK =hK =lEiK Ɏ=hK =lEiK k=hK Ɏ=hK Ɏ=hK k=hK =܇gK k=hK =gK =܇gK =܇gK =gK  =fK =gK =fK  =fK  =fK =fK  =XK =fK =XK  =XK  =XK =XK =6XK =XK =PWK =6XK =6XK =PWK Ɏ=WK =PWK k=P WK Ɏ=WK Ɏ=WK k=P WK =:WK k=P WK =yVK =:WK =:WK =yVK l=TWK =yVK l=EVK l=TWK l=TWK l=EVI rTWK l=EVI rEVI rTWZ$|TWZ$|EVZ$b=TWZ$|EVZ$b=EVZ$b=TWZ$b=TWZ$b=EVZ$=:WZ$b=EVZ$=yVZ$=:WZ$=:WZ$=yVZ$Ɏ=WZ$=yVZ$k=P WZ$Ɏ=WZ$Ɏ=WZ$k=P WZ$z=6XZ$k=P WZ$}=PWZ$z=6XZ$z=6XZ$}=PWZ$ =XZ$}=PWZ$=XZ$ =XZ$ =XZ$=XZ$ =fZ$=XZ$=fZ$ =fZ$ =fZ$=fZ$z=܇gZ$=fZ$}=gZ$z=܇gZ$z=܇gZ$}=gZ$Ɏ=hZ$}=gZ$k=hZ$Ɏ=hZ$Ɏ=hZ$k=hZ$=hZ$k=hZ$=lEiZ$=hZ$=hZ$=lEiZ$b=hZ$=lEiZ$b=xiZ$b=hZ$b=hZ$b=xiZ$|hZ$b=xiZ$|xiZ$|hZ$|hZ$|xiZ$hZ$|xiZ$ lEiZ$hZ$hZ$ lEiZ$ɎhZ$ lEiZ$khZ$ɎhZ$ɎhZ$khZ$܇gZ$khZ$gZ$܇gZ$܇gZ$gZ$ fZ$gZ$fZ$ fZ$ fZ$fZ$ XZ$fZ$XZ$ XZ$ XZ$XZ$𑽐6XZ$XZ$PWZ$𑽐6XZ$𑽐6XZ$PWZ$ɎWZ$PWZ$kP WZ$ɎWZ$ɎWZ$kP WZ$:WZ$kP WZ$ yVZ$:WZ$:WZ$ yVZ$|TWZ$ yVZ$|EVZ$|TWI rhZ$|hZ$hI rhZ$hI hZ$hZ$ɎhI hI hZ$ɎhI ɎhZ$ɎhZ$܇gI ɎhI ɎhZ$܇gI ܇gZ$܇gZ$ fI ܇gI ܇gZ$ fI  fI rhK l=hZ$|hK l=hZ$b=hZ$|hK  =fZ$ =fZ$z=܇gK  =fZ$z=܇gK =܇gZ$z=܇gZ$Ɏ=hK =܇gK =܇gZ$Ɏ=hK Ɏ=hZ$Ɏ=hZ$=hK Ɏ=hK Ɏ=hZ$=hK =hZ$=hZ$b=hK =hK =hZ$b=hK l=hK  =fK  =XZ$ =fK  =XZ$ =XZ$ =fK l=TWZ$b=TWZ$=:WK l=TWZ$=:WK =:WZ$=:WZ$Ɏ=WK =:WK =:WZ$Ɏ=WK Ɏ=WZ$Ɏ=WZ$z=6XK Ɏ=WK Ɏ=WZ$z=6XK =6XZ$z=6XZ$ =XK =6XK =6XZ$ =XK  =XK l=TWI rTWZ$b=TWI rTWZ$|TWZ$b=TWI  XZ$ XZ$𑽐6XI  XZ$𑽐6XI 𑽐6XZ$𑽐6XZ$ɎWI 𑽐6XI 𑽐6XZ$ɎWI ɎWZ$ɎWZ$:WI ɎWI ɎWZ$:WI :WZ$:WZ$|TWI :WI :WZ$|TWI rTWI  XI  fZ$ XI  fZ$ fZ$ X|=n|n|=xi|n|xi|=xiK =n|=nK =xi|=n|=xiK =xiI nK =nI xiK =nK =xiI xi|nI n|xiI nI xi|xiK =nI n|=nI n|n|=nI xiK =xi|xiK =xi|=xi|xio#|ho# fZ$|ho# fZ$ fZ$|ho#b=ho#|hZ$b=ho#|hZ$|hZ$b=ho# =fo#b=hZ$ =fo#b=hZ$b=hZ$ =fo# =Xo# =fZ$ =Xo# =fZ$ =fZ$ =Xo#b=TWo# =XZ$b=TWo# =XZ$ =XZ$b=TWo#|TWo#b=TWZ$|TWo#b=TWZ$b=TWZ$|TWo# Xo#|TWZ$ Xo#|TWZ$|TWZ$ Xo# fo# XZ$ fo# XZ$ XZ$ fo#|ho#b=ho# =fo#|ho# =fo# fo# =fo# =Xo# fo# fo# =Xo# Xo# =Xo#b=TWo# Xo# Xo#b=TWo#|TWZ$b=hZ$|hZ$ fZ$b=hZ$ fZ$ =fZ$ fZ$ XZ$ =fZ$ =fZ$ XZ$ =XZ$ XZ$|TWZ$ =XZ$ =XZ$|TWZ$b=TWDATA SDATA`7P..edge_verts 7اS2.select_edge SSDATA7 7u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA SDATAh 0 .corner_vert 0TXS .corner_edge PTS) pTبSDATA 0TL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA PTL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA pTs"}#*}*}ZϢeK}`䋎}Dzn`jcWM1M1gPسś}ԽiRTiR̈"}#*}*}ZϢeK}`䋎}Dzn`jcWM1M1gPسƛ}ԽiRTiR̈N K^ ao66o a^νN K)} ~*fh)}Sfihf~ihihihihf~ih)}Sffh)} ~*{t{wUtΫgzwwzo9zu}]oyC"s&z"sy&z_yMyS˥E7 5(0$$Sy ܦ$^4y yv'Zvy'vi'Z SLZ`=S[LS'L=y7 iǜj}"(p" K"`N0"JJL0`߯JJSv 7v=v' ٯy҃w...⿮E@ E@uߨ|E@Y+|Y+_ߋ||9`>```#ړ#~#ڗޟF # r#'#!reLr`,CL>L,by+Ly۾LԺ ·V-[.yx~Y~8U~Y~} U~U~Υ}>)}Ӓt)0))ݒtՒt)0'nߒtu rr|umuux%uuxB)uӗt'03/ݓtՕt&0)ĈߒtՎ~خ"Ɉ~8ԇ~ߎ~߈ڪ~ԇ~ɥ)݈qӪf)0))ݪӒt)0'nߒtu rr|umuux%uuxB)uӗt'03/ݓtՐ>&0)xߍAY~خxɣY|;O|BvdAvQxcA{A&BQxoR~O~ԃw2=w v22vBދ{Ov)RՓt&0+vߒtu rr|umuux%uuxB)yӐt*0))ݒtg(0)e=W~AO|LN[|3||Y|z|%Y|~Ez|z|^~Ȓt~%Ēt)0ǒt&$Ēt)0x)uxBx%uuur|umu rɒtv+ēt&0Ǖt))ēt'0ǟ~r)[{~Þ~[{ԋ{[{W~{{W~f2W~e2s_ai_d|2 Ǵa_Oa_iP_`1 a_e2 ltfz_$ia_ia_ia_a_is_aI_#˨#ˇI_s_aia_ia_ia_{a_i|`^`Tq|2TsT*p fiԖ_a_a_is_aI_#˨#ˇI_ " 07!7!007! 1ME>3f!?Űن ذц<yPZgPVPZ :[`=:[:=yӥ ѥˉPoЉ}:`L0"::L0`߯{:S:gS 7P ٯ 1M7!007!7!00*7!(5! u 7!007!7!007! 1My҃wPd_PPPdxd?'9? R 2ߗi{QړQlQѓڗޟF Q rQPQr:r`,::,by:y۾W:o ©V-өPy 1M7!007!7!00N7!! AЯy+y|Ҵ+K3|(ԠMHz|MmGU{|{sz4hzGe{ԃh`h e{ߎ}*~ԏ~yqn~qDO G1)O ˸11 ?|T   ؤB_~=ԭA~m||_1x͠M1xvB{ԥM P_d~_dٵ_~e}QK{ttK{૫x)t,tx;~5" _j D7 De[XÌBҌpv1Wܼ2y}\}Lt}5zcՆtGCգc$]7c:O]"~X&M&&~X&MCգc$ua9c:Oua#m|^|L}|m|^}L<@ՙe'bCeEUSՌb&XAMAAXAM?c&bCcCUSՌb&:Esb ty":EPtyMyy |CtyMty" |n\<|Ջ}Js}vtMֆ|d*}~z/|9~zZzzw~zZ~z/w-twatwa֖Bw-wBc Bcw Bw-Wtwa~z/\UF\U~zZzzՆ|9z[z0|d}\z>} |C]z |nYwe<|ty"v,vtyMyry:EPqq:EsW^yGfՌ~cf~~՝~Ն}V~~c}}դ}T}}VT5dT5f׆}VT}}դ}Ռ~c}}V~~՝~f~~cGf~-hW~`~dW~j~j~-}QW~W~`-}}O}O}TQ-}}-}QTQٲdTQٲd-}QTQ-}}O}O}W~`-}|-}QW~k~j~~dW~W~`~-hբ>Tӧ>TӧUzL~t0z ~t/zL0z#0|j|>Tӧ}Qt0z t/zL0zfl0̖AɔA9 \ `m ء}0& 2իfl0̖AɖA96rii6rA9fl0̖A{Q}Q@}V@{nB{+wnB{Q{$Q}{@{Q{+wQ_~٢_dٵ~ _dVzԥMyOO۫Pسƛ_|DlWRTlWR̈R~8*{*{eϢe][ɑ~̢`䋑~n`iJ>OO۫Pسś_|DlWRTlWR̈R~8*{*{eϢe10@6k16ӷƬƬӷ1610@6k)} ~*fh)}Sfihf~ihihihihf~ih)}Sffh)} ~*DATAx{:2.select_polynSDATATnDATAT 6 !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME ;HME0.0677@F-$$ $}S9P ;P ~:0 Q?v醾4=L<`>A=薩DATA@F- o<DATA9P0position SS2 .select_vert0oةSDATA Sw$? '?Oh>? '?OX? '?h>? '?OX? '?X? '?h>53>Oh>? '?Oh>53>h>? '?Oh>? '?h>53>h>53>OX53>Oh>53>X53>Oh>53>h>53>X? '?OX53>OX? '?X53>OX53>X? '?X53>Oh>53>OX? '?Oh>53>OX? '?OX? '?Oh>53>X53>h>? '?X53>h>? '?h>? '?XDATA$0oDATA ;P..edge_verts`P : `:0 ?o:,>‹A=薩DATAF- DATA>P0positionثS2 .select_vert=SDATAw-c4>﬛g=4>j=4>V=4>V=4>j=4>VP=4>j=4>dj=4>VP=4>VP=4>dj=4> 0=&?=&?j=&?VP=&?VP=&?j=&?V=&?j=&?cjp=&?V=&?V=&?cjp=&? =x?1 P=?䐾=?؏P=?؏P=?䐾= ?䐾@O=?䐾=?؏Q= ?䐾@O= ?䐾@O=?؏Q= ?1 =x?1 `=?䐾/=?؏`-=?؏`-=?䐾/= ?䐾@=?䐾/=?؏= ?䐾@= ?䐾@=?؏= ?1 =?)N=?Q=0A=?Ba"=?Ba"=?Q=0A= ?Opw=?Q=0A=?n<= ?Opw= ?Opw=?n<= ?)P=?)=?O=?nk=>A=l>d=>A=> Ɍ=l>d=l>d=> Ɍ= >2͍=> Ɍ= >G= >2͍=n>G=̟>2 =n> `=̟>2 =]>dw=n> `=n> `=]>dw=n>AP=]>dw=>P=n>AP=>.F=>p3=n>/e=n>/e=>p3=l>oB`=l>oB`=>p3=o>,0=>p3=>e,=o>,0=o>e,`b=>,k=i>p3ߌ=>,k=>oBp=i>p3ߌ=>oBp=>/=i>p3ߌ=i>p3ߌ=>/=n>.9=>)`0=>R===t>Ca\=t>Ca\=>R===n>O=>R===>oO=n>O=>o)=>)P=>Opw=As>o<=As>o<=>Opw=n>R=0A=>Opw=>Ca"=n>R=0A=n>R=0A=>Ca"=n>)N=>2 =>䐾@='w> ؏='w> ؏=>䐾@=n>䐾/=>䐾@=ů> ؏`-=n>䐾/=n>䐾/=ů> ؏`-=n>2 `=>2 =>䐾@O='w> ؏Q='w> ؏Q=>䐾@O=n>䐾=>䐾@O=ů> ؏P=n>䐾=n>䐾=ů> ؏P=n>2 P=> =lN>Y=շ>Z' =lN>Y=)O>) 2=շ>Z' =)O>) 2=O>u=շ>Z' =շ>Z' =O>u=}>=}S> `=$O>Z'u=ݷ> =ݷ> =$O>Z'u=з>)M=з>)M=$O>Z'u=>YP=$O>Z'u=O>r=>YP=O>( 8=+O>Wa@5=}>%`=}>%`=+O>Wa@5=>S0=+O>Wa@5=S>♾=>S0=>S0=S>♾=>$[=T>$$=N>S=^>♾=^>♾=N>S=з>WaI=N>S=O>%j=з>WaI=з>WaI=O>%j=l>(G=I>B== O>gאj=>>L =>>L = O>gאj=>ː= O>gאj=GO>B "=>ː=>ː=GO>B "=> ==PO>/:=>L> '=>1Q=>1Q=>L> '= >|d=>L> '=8O>.P= >|d= >|d=8O>.P=Ϸ>-=,O>-0=P>|0=÷>.=÷>.=P>|0=> PW=P>|0=O>1p-=> PW=> PW=O>1p-=>/D=mO> 0A= O>ːn=>B p\=>B p\= O>ːn=ٷ>gא = O>ːn=S>>Lq=ٷ>gא =ٷ>gא =S>>Lq=G>B==?/D=f? PW=? 1p-=? 1p-=f? PW=?{0=f? PW=?.=?{0=?{0=?.=?-0=?-= ?{d=?.P=?.P= ?{d='? '= ?{d=? 1Q='? '='? '=? 1Q=?/:=|?# [= ?S0=?♾=?♾= ?S0=?Va@5= ?S0=?$`=?Va@5=?Va@5=?$`=?( 8=?(G=?VaI=?$j=?$j=?VaI=?S=?VaI=?♾=?S=?S=?♾=?##=?A==?fא =?=Lq=?=Lq=?fא =?ːn=?fא =?A p\=?ːn=?ːn=?A p\=? 0A=? ==?ː=?A "=?A "=?ː=?fאj=?ː=?=L =?fאj=?fאj=?=L =?A==?=?Y' =?u=?u=?Y' =?) 2=?) 2=?Y' =??X=?Y' =? =??X=?r=N?XP=?Y'u=N?XP=?)M=?Y'u=?)M=? =?Y'u=?Y'u=? =? `=O?dw-= ?Mδ= ?C[= ?Mδ=?W+`= ?C[= ?C[=?W+`=?Ǔ6=?W+`=y ?C?=?Ǔ6=?C?=g ?Ǔ`H=*?W+=g ?Ǔ`H=?C[p=*?W+=*?W+=?C[p=?M=?C[p=) ?BwP=?M=u>[`^J=v>+=u>=u>=u>dڒ=u>=u>=u>dڒ=v>0=v>+=u>dڒ=u>=>=>uw+=>=>=>uw+=>d=>9-=>uw+=>aC=>aC=>uw+=>=>ѕ0[=E><#u=v>}jP=v>}jP=E><#u=>|jP=E><#u=>ѕ0[=>Cϕ#[=>|jP=E><#u=>Cϕ#[=>|j=9>Cᘾ=v>}j=>p=9>Cᘾ=>|j=>p=u>=9>Cᘾ=v>}j=9>Cᘾ=u>=u>Oڊ=!M>OWw=u>OA`=>Oڊ=!M>OWw=u>Oڊ=>Oڊ=>OG`=!M>OWw=u>OA`=!M>OWw=>OG`=>OP=3>OP=>O@^=u>OP=>O [=3>OP=u>OP=3>OP=>OP=>O@^=3>OP=>O [==>`=>09= >~@i= >~@i=>09=>=>09=>=>=>=>=ED>㨍=e;>Я==>=_>%x==>=]`> zt=_>%x=_>%x=]`> zt=F> f=]`> zt=?>Z@g=F> f=I>ʨp=ߘ> u=fm>Ht=ߘ> u= > m=fm>Ht=fm>Ht= > m= H>g= > m=E>%h= H>g=E>@l= H>`= >= H>`=fm>*= >= >=fm>*=>0=fm>*=I>f=>0=D>=?>p=C>=?>p=1{>;=C>=1{>;=Ģ>=C>=C>=Ģ>= E>= E> g=C>Z`w=Ģ>ᮍ t=Ģ>ᮍ t=C>Z`w=1{>@x=1{>@x=C>Z`w=?>`=C>Z`w=D> ҁ=?>`=:> g=8>Z`w=>ᮍ t=>ᮍ t=8>Z`w=p>@x=p>@x=8>Z`w=h5>`=8>Z`w=l:> ҁ=h5>`=%:>@=#2>=,H>*0=#2>=u>:=,H>*0=u>:=>z=,H>*0=,H>*0=>z=:>=>d =5>d=.> =.> =5>d=5>pٳ=5>d=.>gcpu=5>pٳ=5>pٳ=.>gcpu=>Ψw=>,=;>d0=>Ќ=;>d0=>nQP=>Ќ=>Ќ=>nQP=;>=>nQP=>dS=;>=}>d=>dR=b>p=b>p=>dR=>0,=>dR=b>`=>0,=>0,=b>`=}>j=y>r=>dк=t;>e0=>dк=t;>eཱུ=t;>e0=t;>e0=t;>eཱུ=>PĽ=t;>eཱུ=y>e=>PĽ=u>O=ӹ> =w>އ=ӹ> =]>򭎾P=w>އ=]>򭎾P=$w>5=w>އ=w>އ=$w>5=>W70F=>4ʦ=>6=>ciB=>ciB=>6=*>:OЯ=*>:OЯ=>6=>`=>6=O>4=>`=H>=&>.=>@=>@=&>.=bG>KMp =&>.=W>򏍾@=bG>KMp =bG>KMp =W>򏍾@=>P =J>z=>[=h>WRP=h>WRP=>[=9I>O0=>[=g>w!=9I>O0=9I>O0=g>w!=/> =K;>Rb=>EP={>^錾 =>EP=>={>^錾 =>=>P={>^錾 ={>^錾 =>P=D>= >Č= >[=K,>lE0= >[=:>=K,>lE0=K,>lE0=:>=W>'+=:>=04>P=W>'+=?>PTg=>@wf=;0>Oq=>@wf= >=_r=;0>Oq=;0>Oq= >=_r=<>6À= >=_r=hG>mK=<>6À=w->Q`te=T>MU s=>Kl=>Kl=T>MU s=%>Q`^w=T>MU s=j>\}@3=%>Q`^w=%>Q`^w=j>\}@3=9S>=> I=W>w y=l>tK=W>w y=>`o=> Ռj=>`o=E>g=> Ռj=:>˸f=)>$`Gz=>o }=>o }=)>$`Gz=U>Om=)>$`Gz=> m=U>Om=U>Om=> m=i>dLd=X>-=؃>7=b>I=b>I=؃>7=>ʌ=؃>7=v>=>ʌ=>ʌ=v>=8h><@i=>#Pū=>k@=>H=>H=>k@=&>An=>k@=5>m=&>An=&>An=5>m=>\P=>{p=B>*=>1 =>1 =B>*=S>G`=B>*=j>0=S>G`=S>G`=j>0=>>={>/pϹ=4>=>|F}=4>=">P=>|F}=>|F}=">P=n>O=">P='*>s@=n>O=>r=5u>G`{f=>}`@_=>F=5u>G`{f=>r=T>!o0=>F=>r=>F=T>!o0=J>u.p=@>^K^=X>a@v=W~>)[g=W~>)[g=X>a@v=3>⇚`=X>a@v=D?>>=3>⇚`=X>a@v=;>n>=D?>>=;E>D`=X>=D>i嗾@=D>i嗾@=X>=a!>0=X>=@>nЎ=a!>0=gC>=a!>0=@>nЎ=%;>n=>̀p= >&x0O=G>6㚾0= >&x0O=>̀p=>̀p=:>nPA=G>6㚾0=G>6㚾0=:>nPA=g;>!0Z=k/>2@=zD> l=]>`s=]>`s=zD> l=4E>n?=]>`s=Y>C,ne=k/>2@=`E>cO _=Y>C,ne=]>`s=.%>2@=<:> l=>`s=>`s=<:> l=:>n?=>`s=>B,ne=.%>2@=";>cO _=>B,ne=>`s=Q>2h=<> p=@>=T=@>=T=<> p=;>nP?=@>=T=>3=Q>2h==>3)1=>3=@>=T=[>2h=F> p=~>=T=~>=T=F> p=F>nP?=~>=T=$>3=[>2h=(H>3)1=$>3=~>=T=n>O=>O=G>O=>O F=n>O=G>O=>O F=G>O=m>O F=M>O`;=m>O F=G>O=#?#|৵=c?#=?DZ=c?#= ?˧u=?DZ=?DZ= ?˧u= ?Iō=x>&ʍ &=#?7= ?̀=}?ę`D=\:?ݭZ=\:?ݭZ==?9ߴ=]?~8=%>6Q=| >Iō=#?7=x>&ʍ &=w?ɷ=#?7=w?ɷ=}?ę`D=#?7=#?7=}?ę`D= ?̀=\:?ݭZ=]?~8= ?̀=??~=_>?፾0"=2?=_>?፾0"=? ㍾h=2?=2?=? ㍾h=}?=? ㍾h=)0?獾=}?=}?=)0?獾=2?p=2?p=$>Սe=>q΍=$>Սe=>nߍ/=>q΍=>q΍=>nߍ/=>8 ٶ=?YB=??~=f?x@T=f?x@T=??~=,'?=,'?=??~=2?=>q΍=>8 ٶ=_?>lp7=,'?=2?=N?3~=N?3~=2?=?}=2?=}?=?}=?}=}?=dJ?~-=}?=2?p=dJ?~-=2?p=>q΍=dJ?~-=dJ?~-=>q΍=_?>lp7=> |0='+?x0.=>S='+?x0.=)X?fk$=?,K =?Mw9=b?n=t/?Eۮ=> |0=>S=W>f=>S='+?x0.=$?xd@='+?x0.=?,K =$?xd@=?,K =)X?fk$= ?lP= ?lP=)X?fk$=|?t\@5=|?t\@5=)X?fk$=?Mw9=t/?Eۮ=b?n=v}?T,P9=$?xd@=?,K = ?lP=|?t\@5=?Mw9=A0?sp=?Mw9=t/?Eۮ=A0?sp=A0?sp=t/?Eۮ=v}?T,P9=$?xd@= ?lP=|?t\@5=A0?sp=v}?T,P9=?r`b=$>d&k=W>f=>S=|?t\@5=A0?sp=? &p=? &p=A0?sp=Vp?%@=Vp?%@=A0?sp=?r`b=$>d&k=>S=$?xd@=$?xd@=|?t\@5=?_0=?_0=|?t\@5=? &p=Q>c<=> |0=W>f=Vp?%@=?r`b=?mw=Q>c<=W>f=>ip=W>f=$>d&k=>ip=>ip=$>d&k=f>@f=$>d&k=$?xd@=f>@f=f>@f=$?xd@=?_0=?_0=? &p=?@=? &p=Vp?%@=?@=?@=Vp?%@=?mw=?vP=@O?=b?OP@=@O?=?d?)}=b?OP@=?d?)}=%>r=b?OP@=QZ?v?=-?y=c?Q%9=c?Q%9=-?y=o!?{#N=-?y=@O?=o!?{#N=o!?{#N=@O?=?vP=?vP=b?OP@=.?N&-=b?OP@=%>r=A>00=%>r=f>f{T=A>00=A>00=f>f{T=P>Ɏ Y=c?Q%9=o!?{#N=?"`=.?N&-=b?OP@=+t? 0(=+t? 0(=b?OP@=>঻=b?OP@=A>00=>঻=Q?|6=o!?{#N=?vP=?"`=o!?{#N=Q?s@=o!?{#N=Q?|6=Q?s@=Q?|6=?vP=u?0=u?0=?vP=+t? 0(=?vP=.?N&-=+t? 0(=+t? 0(=>঻=n>b$~=A>00=P>Ɏ Y=>঻=?^iv=c?Q%9=?"`=Q?s@=Q?|6=u?0=u?0=+t? 0(=̨?g=>(s=+t? 0(=n>b$~=n>b$~=>঻=>(s=?^iv=?"`=^?lb`=?"`=Q?s@=^?lb`=Q?s@=u?0=^?lb`=̨?g=+t? 0(=>(s=>(s=>঻=P>Ɏ Y=? ױ=> =V&? => =? ױ=\!? =\!? =4? q=> => =4? q=,u> =>j=$>j=&?j=&?j=&?j=7?j޷=$>j=7?j޷=&?j=&?j=7?j޷=>j= ?Ҟ= ?V= ?W= ?S!= ?+\l= ?Q0= ?׶= ?+\l= ?S^= ?S^= ?+\l= ?S!= ?Q0= ?V= ?S!= ?g= ?= ?|j= ?|j= ?= ?(= ?S^= ?= ?g= ?V= ?Ҟ= ?S!= ?|jk= ?V= ?g= ?W= ?V= ?|jk= ?VP= ?S^= ?g= ?Q0= ?׶= ?VP= ?׶= ?S^= ?VP= ?V= ?Q0= ?VP=>^=>1=>/Ў`=>(=>|j=>i0=>e=>(=>i0=>e=>i0=>1=>e=>1=>^=>^=>i=>W=>W=>i=>|jk=>/Ў`=>j@=>j=>j@=>/Ў`=>i0=>/Ў`=>1=>i0=>ő@=>i=>/Ў`=>/Ў`=>i=>^=?S^=?= =?8Q =?V =?e@`=?8Q =?8Q =?e@`=?S^=?V =?'V=?e@`=?\@=?e@`=?'V=?m0d=?e@`=?\@=?m0d=?X=?e@`=?S^=?= =?8Q =?V =?e@`=?8Q =?8Q =?e@`=?S^=?V =?'V=?e@`=?\@=?e@`=?'V=?m0d=?e@`=?\@=?m0d=?X=?e@`=O>X=O>m0d=O>_k=O>_k=O>m0d=O>!`=O>!`=O>V=O>_k=O>_k=O>V=O>_k0=O>_k0=O>V=O>V@=O>m=O>V@=O>!`0=O>V@=O>m=O>_k0=O>m=O> '=O>_k0=o>X=o>m0d=o>_k=o>_k=o>m0d=o>!`=o>!`=o>V=o>_k=o>_k=o>V=o>_k0=o>_k0=o>V=o>V@=o> '=o>_k0=o>!`0=o>V@=o>!`0=o>_k0=o>!`0=o>m=o> '= ? '= ?m= ?^k0= ?^k0= ?m= ? `0= ? `0= ?V = ?^k= ? `0= ?^k= ?^k0= ?V৆= ?^k= ?V = ?m0d= ?V৆= ? `= ?V৆= ?m0d= ?^k= ?m0d= ?X= ?^k= o>=y,>|?=@&>:=e> ͳ= o>=@&>:=|>:፾= o>=e> ͳ=|>:፾=>{8= o>=>_Ӎ`Ǵ=i>vض=<> =+>|?=i>vض=>_Ӎ`Ǵ=<> =>{0J=>D=>{0J=<> =i>vض=Y>⍾`s=>80=>'=>=>G=l">썾@=l">썾@=>G=>'=>G=Y>⍾`s=>'=>80=v>=>'=v>=>㍾=P>gP"=l">썾@=>'= Y>y=B>縍 =>=}>𓍾`x=}>𓍾`x=>=E>杍3=>=l">썾@=E>杍3=E>杍3=l">썾@= Y>y=>'=v>=P>gP"=}>𓍾`x=E>杍3=I>}+=E>杍3= Y>y=I>}+= Y>y=>'=>=>=>'=P>gP"=&:>⍾=>p@=">ҍ *=`n>썾=>&ō=>=>&ō=>rō=>=>=>rō=l;>c =>rō=&:>⍾=l;>c =&:>⍾=">ҍ *=l;>c =">ҍ *=>p@=>ˍ0=>p@=>%೼=>ˍ0=>ˍ0=>%೼=>ε =>%೼=KB>[Ǎ=>ε =_>}C=`n>썾=>~@=>~@=`n>썾=>=>=l;>c =?>}Z=l;>c =">ҍ *=`>}p=">ҍ *=>ˍ0=`>}p=>~@=>=?>}Z=?>}Z=l;>c =`>}p=`>}p=>ˍ0=>D!=>ˍ0=>ε =>D!=>_&?=B>}-=>%{@ =4>=|pd=>=e>, ̩=e>, ̩=>=v>\n =v>\n =>=Ҝ>75E=>=E>}zܱ=Ҝ>75E=Ҝ>75E=E>}zܱ=>3hPݴ=>%{@ =4>=|pd=@>n20=@>n20=4>=|pd=e>, ̩=Ҝ>75E=>3hPݴ=nU>p=>_&?=>%{@ =V>2=>%{@ =@>n20=V>2=V>2=@>n20=[>/=@>n20=e>, ̩=[>/= w>O=e>, ̩=> =e>, ̩=v>\n => =v>\n =Ҝ>75E=> => =Ҝ>75E=nU>p=[>/=e>, ̩= w>O=&>c$ ?=>_&?=V>2=> =nU>p=>w"-= w>O=> =>F`T=>w"-=nU>p=K>(=nU>p=>3hPݴ=K>(=&>c$ ?=V>2=>hr=>hr=V>2=f>U``=f>U``=V>2=[>/=[>/= w>O=f>U``=>F`T=> =>w"-=>w"-=K>(=q>$v@=f>U``= w>O=b<>e=b<>e= w>O=>F`T=>F`T=>w"-=q>$v@=q>$v@=K>(=>3hPݴ=U>vL=>s_=+>y\@׹=X>+Э=>| ŵ=_>T&=>| ŵ= >BjP.=_>T&=_>T&= >BjP.=}>b# =}>b# = >BjP.=!>+== >BjP.=U>vL=!>+==!>+==U>vL=LC>R ==U>vL=+>y\@׹=LC>R ==LC>R ==+>y\@׹=>|n޺=>|n޺=+>y\@׹=V>Z]=+>y\@׹=>s_=V>Z]=>| ŵ=X>+Э=>r0?=!>+==LC>R ==>Cি=>r0?=X>+Э= > P,=X>+Э=_>T&= > P,= > P,=_>T&=}>b# =}>b# =!>+==>=>=!>+==>Cি=>Cি=LC>R ==>|n޺=>Z@=>r0?= > P,= > P,=}>b# =>@m=>@m=}>b# =>=>Z@= > P,=>@m=>=>Cি=1>*@p=>Cি=>|n޺= >p=7>l=>@m=>=7>l=>=1>*@p=1>*@p=>Cি=>3f8=>3f8=>Cি= >p=>|n޺=V>Z]=>q=>r0?=>Z@=p>}=>Z@=>@m=7>l=7>l=1>*@p=>3f8= >p=>|n޺=>q=#> p= > 0=> p=> p=^4> `=#> p=P>> => 0 =#> p=#> p=> 0 = > 0=4>j=u>j=>j=4>j=>j=4>j=>j=>j=4>j=4>j=>j=u>j=o>S^=o>J.2=o>X=o>S!=o>J.2=o>S^=o>S!=o>Ҟ=o>g=o>Ҟ=o>W=o>g=o>S^=o>g=o>=o>(=o>g=o>}j=o>X=o>p쏾1=o>U =o>U =o>p쏾1=o>g=o>J.2=o>S!=o>X=o>X=o>S!=o>p쏾1=o>S!=o>g=o>p쏾1=o>g=o>S^=o>VP=o>S^=o>X=o>VP=o>X=o>U =o>VP=o>W=o>}jk=o>g=o>=o>g=o>(=u>ɑ}=u>ю=u>j=u>d5=u>ɑ}=u>j=v>i=v>W=v>}jk=u>d5=u>j=u>]k`=v>(=u>m=v>}j=u>m=v>%j=v>}j=u>ю=u>j=u>j=u>j=u>ю=v>i=u>d5=v>i=u>ю=v>W=v>i=u>Ҟ=v>i=u>d5=u>Ҟ=u>]k`=u>j=v>(=u>j=u>m=v>(=u>j=v>=4>j=v>=4>=4>j=v>=u>j=4>=u>j=4>j=4>=4>VP=o>VP=4>V=o>VP=o>V=4>V=o>S^=o>S!=u>S^=o>S!=u>S!=u>S^=4>V=o>V=4>͉=o>V=o>͉=4>͉=4>͉P=o>͉P=4>VP=o>͉P=o>VP=4>VP=4>}j=4>}j+=o>}j=4>}j+=v>}j+=o>}j=o>}j=v>}j+=o>}jk=v>}j+=v>}jk=o>}jk=o>}j=v>}j=o>}jn=v>}j=v>}jT=o>}jn=o>}jn=v>}jT=4>}jn=v>}jT=4>}jT=4>}jn=o>}j=o>2=v>}j=o>2=v>2=v>}j=o>@L=o>}jk=v>@L=o>}jk=v>}jk=v>@L=o>Ҟ=o>&'@L=u>Ҟ=o>&'@L=v>&'@L=u>Ҟ=o>&'2=o>=v>&'2=o>=u>=v>&'2=o>S!=o>Ҟ=u>S!=o>Ҟ=u>Ҟ=u>S!=o>=o>S^=u>=o>S^=u>S^=u>=o>2=o>&'2=v>2=o>&'2=v>&'2=v>2=o>&'@L=o>@L=v>&'@L=o>@L=v>@L=v>&'@L=v>=v>}j+=4>=v>}j+=4>}j+=4>=v>}jT=v>=4>}jT=v>=4>=4>}jT=?S!=?S^= ?S!=?S^= ?S^= ?S!=?m=?m= ?m=?m= ?m= ?m=?mP=?m0d= ?mP=?m0d= ?m0d= ?mP=?m0d=?@L= ?m0d=?@L= ?@L= ?m0d=?2=?m= ?2=?m= ?m= ?2=?%'@L=?Ҟ= ?%'@L=?Ҟ= ?Ҟ= ?%'@L=?=?%'2= ?=?%'2= ?%'2= ?=?S^=?= ?S^=?= ?= ?S^=?Ҟ=?S!= ?Ҟ=?S!= ?S!= ?Ҟ=?%'2=?2= ?%'2=?2= ?2= ?%'2=?@L=?%'@L= ?@L=?%'@L= ?%'@L= ?@L=?2=?mP= ?2=?mP= ?mP= ?2=?m=?2 = ?m=?2 = ?2 = ?m=>S^=>S!=o>S^=>S!=o>S!=o>S^=>m=>m=o>m=>m=o>m=o>m=>m0d=>mP=o>m0d=>mP=o>mP=o>m0d=>@L=>m0d=o>@L=>m0d=o>m0d=o>@L=>m=>2=o>m=>2=o>2=o>m=>Ҟ=>&'@L=o>Ҟ=>&'@L=o>&'@L=o>Ҟ=>&'2=>=o>&'2=>=o>=o>&'2=>S!=>Ҟ=o>S!=>Ҟ=o>Ҟ=o>S!=>=>S^=o>=>S^=o>S^=o>=>2=>&'2=o>2=>&'2=o>&'2=o>2=>&'@L=>@L=o>&'@L=>@L=o>@L=o>&'@L=>2 =>m=o>2 =>m=o>m=o>2 =>mP=>2=o>mP=>2=o>2=o>mP=O>S^=O>S!=>S^=O>S!=>S!=>S^=O>m=O>m=>m=O>m=>m=>m=O>m0d=O>mP=>m0d=O>mP=>mP=>m0d=O>@L=O>m0d=>@L=O>m0d=>m0d=>@L=O>m=O>2=>m=O>2=>2=>m=O>Ҟ=O>&'@L=>Ҟ=O>&'@L=>&'@L=>Ҟ=O>&'2=O>=>&'2=O>=>=>&'2=O>S!=O>Ҟ=>S!=O>Ҟ=>Ҟ=>S!=O>=O>S^=>=O>S^=>S^=>=O>2=O>&'2=>2=O>&'2=>&'2=>2=O>&'@L=O>@L=>&'@L=O>@L=>@L=>&'@L=O>2 =O>m=>2 =O>m=>m=>2 =O>mP=O>2=>mP=O>2=>2=>mP=?S!=?S^=?S!=?S^=?S^=?S!=?mP=?m0d=?mP=?m0d=?m0d=?mP=?m=?m=?m=?m=?m=?m=?2=?m=?2=?m=?m=?2=?m0d=?@L=?m0d=?@L=?@L=?m0d=?=?%'2=?=?%'2=?%'2=?=?%'@L=?Ҟ=?%'@L=?Ҟ=?Ҟ=?%'@L=?S^=?=?S^=?=?=?S^=?Ҟ=?S!=?Ҟ=?S!=?S!=?Ҟ=?%'2=?2=?%'2=?2=?2=?%'2=?@L=?%'@L=?@L=?%'@L=?%'@L=?@L=?2=?mP=?2=?mP=?mP=?2=?m=?2 =?m=?2 =?2 =?m=>=>j=&?=>j=&?j=&?=>j=>=&?j=>=&?=&?j=&?V= ?V=&?VP= ?V= ?VP=&?VP= ?S!= ?S^=>S!= ?S^=>S^=>S!=&?̉= ?̉=&?V= ?̉= ?V=&?V=&?VP= ?VP=&?̉P= ?VP= ?̉P=&?̉P= ?|jk=>|jk= ?|j=>|jk=>|j+= ?|j= ?|j=>|j+=&?|j=>|j+=&?|j+=&?|j=&?|jn=&?|jT= ?|jn=&?|jT=>|jT= ?|jn= ?|jn=>|jT= ?|j=>|jT=>|j= ?|j= ?2= ?|j=>2= ?|j=>|j=>2= ?|jk= ?@L=>|jk= ?@L=>@L=>|jk= ?%'@L= ?Ҟ=>%'@L= ?Ҟ=>Ҟ=>%'@L= ?= ?%'2=>= ?%'2=>%'2=>= ?S^= ?=>S^= ?=>=>S^= ?Ҟ= ?S!=>Ҟ= ?S!=>S!=>Ҟ= ?@L= ?%'@L=>@L= ?%'@L=>%'@L=>@L= ?%'2= ?2=>%'2= ?2=>2=>%'2=>=>|jT=&?=>|jT=&?|jT=&?=>|j+=>=&?|j+=>=&?=&?|j+=&?̉P= ?̉P=&?|jn= ?̉P= ?|jn=&?|jn= ?|j= ?̉=&?|j= ?̉=&?̉=&?|j=g?9ߏJ=g?9ߏP4=g?&V=g?9ߏP4=g?&)=g?&V=g?&V=g?&)=g?nJ=g?&)=g?nP4=g?nJ=>,?&)=g?&)=>,?nP4=g?&)=g?nP4=>,?nP4=>,?&V=g?&V=>,?9ߏJ=g?&V=g?9ߏJ=>,?9ߏJ=>,?nJ=g?nJ=>,?&V=g?nJ=g?&V=>,?&V=>,?9ߏP4=g?9ߏP4=>,?&)=g?9ߏP4=g?&)=>,?&)=>,?nP4=g?nP4=>,?nJ=g?nP4=g?nJ=>,?nJ=>,?9ߏJ=g?9ߏJ=>,?9ߏP4=g?9ߏJ=g?9ߏP4=>,?9ߏP4=u>Dϕ#[=u>#[=>Cϕ#[=u>#[=>#[=>Cϕ#[=u>g=u>gP=>f=u>gP=>fP=>f=u>gڊ=u>gF=>fڊ=u>gF=>fF=>fڊ=v>}j=v>}j=>|j=v>}j=>|j=>|j=v>}jk=v>}jP=>|jk=v>}jP=>|jP=>|jk=u>&=u>=>&=u>=>=>&=u>=u>=>=u>=>=>=u>=u>Ҟ=>=u>Ҟ=>Ҟ=>=u>󍾠=u>&=>󍾠=u>&=>&=>󍾠=v>}j=v>2=>|j=v>2=>2=>|j=v>@L=v>}jk=>@L=v>}jk=>|jk=>@L=v>&'2=u>=>%'2=u>=>=>%'2=u>Ҟ=v>&'@L=>Ҟ=v>&'@L=>%'@L=>Ҟ=v>2=v>&'2=>2=v>&'2=>%'2=>2=v>&'@L=v>@L=>%'@L=v>@L=>@L=>%'@L=u>#[=u>OA`=>#[=u>OA`=>OA`=>#[=u>O@^=u>󍾠=>O@^=u>󍾠=>󍾠=>O@^=u>gF=u>OF=>fF=u>OF=>OF=>fF=u>O=u>g=>O=u>g=>f=>O=} ?g=} ?j=} ?V=} ?V=} ?j=} ?VP=} ?j=} ?cj=} ?VP=} ?VP=} ?cj=} ? 0=m )?=m )?j=m )?VP=m )?VP=m )?j=m )?V=m )?j=m )?cjp=m )?V=m )?V=m )?cjp=m )? =?ɑ}=?ˎ =?j=?\X@h=?ɑ}=?j=?ˎ =?\X@h=?S!=?i=?W=?NP=?W=?|jk=?NP=?S!=?\X@h=?S^=?S^=?\X@h=?=?\X@h=?=?=?(=?j=?|j=?j=?$j=?|j=?jŎ=?j=?ˎ =?ˎ =?j=?j=? =?jdP$=?i=?ˎ =?jdP$=?j=?j=?jdP$=? =?lE=?xЄ=?j=?=?i=?S!=?S!=?i=?ˎ =?i=?jdP$=?ˎ =?\X@h=?j=?=?=?j=?lE=?j=?xЄ=?lE=?|jk=?i=?NP=?i=?=?W=?W=?=?Ҟ=?=?S!=?Ҟ=?=?=?(=?=?j=?(=?=?lE=?j=՚?A=՚?p%=՚?0j=՚?S^=՚?θ=՚?A=՚?θ=՚?p%=՚?A=՚?őɮ=՚?θ=՚?S!=՚?S!=՚?θ=՚?S^=՚?S!=՚?yŐF=՚?@ =՚?g=՚?"P=՚?VP=՚?VP=՚?"P=՚? =՚? =՚?"P=՚?=՚?S!=՚?Ҟ=՚?=՚?Ҟ=՚?d, =՚?=՚?S=՚?=՚?d, =՚?=՚?S=՚?g=՚?S=՚?d, =՚?g=՚?S^=՚? =՚?=՚?(=՚?S=՚?|j=՚?S=՚?"P=՚?g=՚? Vϊ=՚?g=՚?V=՚?A=՚?0j=՚? Vϊ=՚?0j=՚?@ =՚? Vϊ=՚? Vϊ=՚?yŐF=՚?g=՚?őɮ=՚?S!=՚?0j=՚?0j=՚?S!=՚?@ =՚?S!=՚?=՚?yŐF=՚?yŐF=՚?=՚?g=՚? =՚?S^=՚?VP=՚?S^=՚?A=՚?VP=՚?A=՚? Vϊ=՚?VP=՚?d, =՚?|jk=՚?g=՚?|jk=՚?d, =՚?W=՚?d, =՚?Ҟ=՚?W=՚?S=՚?g=՚?|j=՚?=՚?"P=՚?(=՚?"P=՚?S=՚?(=} ?j=?j=Ǹ?j=} ?j= ?j }=} ?j=N?jۼ=?jP=Ǹ?j=Ǹ?j= ?j }=} ?j=} ?j=9?ja=?j= ?j }=9?ja=} ?j=Ϫ? ?=qP? = ? =Ϫ? ?=C? 0=qP? =S? :=}? =Ϫ? ?=B? @ƻ=Ϫ? ?==? = ? =? =Ϫ? ?=}? =? 0 =Ϫ? ?=? ==? =Ϫ? ?=Ϫ? ?=? 0 =C? 0=Ϫ? ?=B? @ƻ=S? :=4?zo=p?}0=?^| =?^| =3?}@=a?G|P>=a?G|P>=,?}@S=F?D Ҿ=,?}@S=A?}=F?D Ҿ=F?D Ҿ=A?}=J?YP=A?}=|?} o=J?YP=J?YP=|?} o=Y?x\@׹=|?} o=M?} ^=Y?x\@׹=Y?x\@׹=M?} ^=D?|p@=?{@=?~|="&?1 A="&?1 A=?~|=?+Э=?~|=?|=?+Э=?+Э=?|=K?S&=?|=4?zo=K?S&=4?zo=?^| =K?S&=K?S&=?^| =!?a# =!?a# =?^| =t?+==?^| =a?G|P>=t?+==t?+==a?G|P>=F?D Ҿ=F?D Ҿ=J?YP=mw?+u=J?YP=Y?x\@׹=mw?+u=mw?+u=Y?x\@׹=9?"и=9?"и=Y?x\@׹=)?% B=Y?x\@׹=D?|p@=)?% B="&?1 A=?+Э=XT?q0?=t?+==F?D Ҿ=?Bি=F?D Ҿ=mw?+u=?Bি=XT?q0?=?+Э=[? P,=?+Э=K?S&=[? P,=[? P,=K?S&=!?a# =!?a# =t?+==?=?=t?+==?Bি=?Bি=mw?+u= ?͹=mw?+u=9?"и= ?͹=P?#ڸ=XT?q0?=[? P,=[? P,=!?a# =U?`=U?`=!?a# =?= ?͹=9?"и=A ?9 @=9?"и=)?% B=A ?9 @=P?#ڸ=[? P,='?/I='?/I=[? P,= ?1ؿ= ?1ؿ=[? P,=U?`=?=?Bি=+?*@p=?Bি= ?͹=SB?+:= ?1ؿ=U?`=??f=??f=U?`=?=?df=?=+?*@p=+?*@p=?Bি=?2=?2=?Bি=SB?+:=?2=SB?+:=T?g= ?͹=A ?9 @= ?f`= ?f`=A ?9 @= ?1g?=>u?i?=XT?q0?=7o?h=XT?q0?=P?#ڸ=7o?h=7o?h=P?#ڸ=6?hh=6?hh=P?#ڸ='?/I='?/I= ?1ؿ=6?hh=6?hh= ?1ؿ=?iK=?i0?= ?1ؿ=??f=??f=?=?Si@x=?Si@x=?=?df=?df=+?*@p=-2?Si=-2?Si=+?*@p=#?Hkp=+?*@p=?2=#?Hkp=#?Hkp=?2=T?g=T?g=SB?+:=J?kP=SB?+:= ?͹=J?kP=J?kP= ?͹= ?f`=?iK= ?1ؿ=?i0?=-?^&?=>?}-=D??'=>?}-=C\?v}Ͱ=D??'=D??'=C\?v}Ͱ=S?{>=?<|pd=Ǯ?l}=?@П=?@П=Ǯ?l}=1?qY=Ǯ?l}=!?}=1?qY=1?qY=!?}=TN?Y=!?}=#v?}=TN?Y=TN?Y=#v?}=ԝ?0? =#v?}=w?}=ԝ?0? =ԝ?0? =w?}=?Q?Pͮ=w?}= ?%r=?Q?Pͮ=?Q?Pͮ= ?%r=`?Y=`?Y= ?%r=?A==?A== ?%r=2?|>=D??'=S?{>=?m20=S?{>=?<|pd=?m20=?m20=?<|pd=#!?=#!?=?<|pd=?@П=?@П=1?qY=8?09=1?qY=TN?Y=8?09=8?09=TN?Y=ԝ?0? =?Q?Pͮ=`?Y= ?T'@$=`?Y=?A== ?T'@$=-?^&?=D??'=7?2=D??'=?m20=7?2=7?2=?m20=?=?m20=#!?=?=#!?=?@П=}?!0M=}?!0M=?@П=`? =?@П=8?09=`? =8?09=ԝ?0? =`? =`? =ԝ?0? = ?=ԝ?0? =?Q?Pͮ= ?=?Q?Pͮ= ?T'@$= ?= ?T'@$=?A==)H?==?=#!?=}?!0M= ?= ?T'@$=)H?== ?b$ ?=-?^&?=7?2=w?$=?=}?!0M=`? = ?=?v"-=7?2=?=?)`g=?)`g=?=w?$=}?!0M=`? =J?19=?v"-= ?=Z?(= ?=)H?==Z?(= ?b$ ?=7?2=S ?di=S ?di=7?2=1?L?v=1?L?v=7?2=?)`g=?)`g=w?$=?eG=w?$=}?!0M=J?19=J?19=`? =?v"-=?v"-=Z?(=K?g=Z?(=)H?==Aw?h?=` ?i?= ?b$ ?=S ?di=S ?di=1?L?v=?hͭ=1?L?v=?)`g=~?i\=~?i\=?)`g=?eG=?eG=w?$=Q?i`=Q?i`=w?$=?2i=?2i=w?$=J?19=B?i=J?19=d?Ei;=J?19=?v"-=d?Ei;=d?Ei;=?v"-=?)kPī=?)kPī=?v"-=K?g=K?g=Z?(=Ol?i0L=?hͭ=1?L?v=~?i\=?2i=J?19=B?i=Ol?i0L=Z?(=Aw?h?=k'?ύ?=iD? ?=<?䍾`·=?捾B=? ` =?獾=?獾=_?(ݍP=h?⍾=h?⍾=?ލ =t?ҍ *=?ލ = ?㍾=t?ҍ *=F?j鍾`X=:?ݍ=D?JٍPU=D?JٍPU=:?ݍ=q?卾=k'?ύ?=<?䍾`·=m?ÍPU=m?ÍPU=<?䍾`·=?=<?䍾`·=?捾B=?=?捾B=?獾=?=?=?獾= ?b =?獾=h?⍾= ?b =h?⍾=t?ҍ *= ?b =t?ҍ *= ?㍾=H?wÍk=H?wÍk= ?㍾=3?P= ?㍾=F?j鍾`X=3?P=3?P=F?j鍾`X=L?' =F?j鍾`X=D?JٍPU=L?' =L?' =D?JٍPU=H??_R=D?JٍPU=q?卾=H??_R=q?卾=?䍾0@=H??_R=k'?ύ?=m?ÍPU=P?}C=P?}C=m?ÍPU=?~@=?~@=m?ÍPU=?=?= ?b ='?}ѿ='?}ѿ= ?b =*?}= ?b =t?ҍ *=dh?~I=dh?~I=t?ҍ *=-?~P=t?ҍ *=H?wÍk=-?~P=-?~P=H?wÍk=3?P=?~@=?=?}`/=?='?}ѿ=?}`/=*?}= ?b =dh?~I=-?~P=3?P=w?}`ļ=w?}`ļ=3?P=^?}۹=3?P=L?' =^?}۹=^?}۹=L?' =>?n~ T=L?' =H??_R=>?n~ T=?፾==2?捾 "=V?S⍾@=ߢ?Lߍg=?ݍ=3?XٍpD=?⍾`s=L?׍=0?'Ǫ=0?'Ǫ=L?׍=?捾P=L?׍=w? )=?捾P=?፾==V?S⍾@=^?~ˍg=V?S⍾@=ߢ?Lߍg=^?~ˍg=^?~ˍg=ߢ?Lߍg=?ˍ=?ˍ=ߢ?Lߍg=3?XٍpD=3?XٍpD=?ݍ=?]ʍM=?ݍ=?⍾`s=?]ʍM=?]ʍM=?⍾`s=0?'Ǫ=?捾P=?ߍR=?|=?|=?ߍR=-?F獾=-?F獾=H?㍾= ?>=?ˍ=3?XٍpD=$l?`@*=3?XٍpD=?]ʍM=$l?`@*=AI?>`@=?፾==rR?7(=?፾==^?~ˍg=rR?7(=rR?7(=^?~ˍg=(?坍3=^?~ˍg=?ˍ=(?坍3=(?坍3=?ˍ=$l?`@*=$l?`@*=?]ʍM=o?~?=o?~?=?]ʍM=0?'Ǫ=0?'Ǫ=?捾P=?|=?|=-?F獾=?=-?F獾= ?>=?=rR?7(=(?坍3=d?~=d?~=(?坍3=8?}+=(?坍3=$l?`@*=8?}+=o?~?=0?'Ǫ=p?} ϫ=0?'Ǫ=?|=p?} ϫ=p?} ϫ=?|=0?}=0?}=?|=?=;?n=??uض=? =y?|?=??uض=;?n=;?n=7y? ?=y?|?=? =?{0J=6?D=?{0J=? =??uض=ښ?=y?|?=uv?:=%? ͳ=ښ?=uv?:=? =ښ?=%? ͳ=? =1?{8=ښ?=? =g? `?=1?{8=Y'? '=Y'?m=Y'?=Y'?=Y'?m=Y'? `0=Y'? `0=Y'?0=Y'?x`=Y'?V =Y'?0=Y'? `0=Y'?BՏl=Y'?x`=Y'?0=Y'?=Y'? `0=Y'?S^=Y'? `0=Y'?x`=Y'?S^=Y'?S^=Y'?x`=Y'?S!=Y'?BՏl=Y'?0=Y'?V =Y'?S!=Y'?x`=Y'?V =Y'?x`=Y'?BՏl=Y'?V =Y'?S!=Y'?@{=Y'?Ҟ=Y'?V৆=Y'?@{=Y'?V =Y'?Ҟ=Y'?@{=Y'?V৆=Y'?V =Y'?@{=Y'?S!=Y'?m0d=Y'?V৆=Y'? `=Y'?V৆=Y'?m0d=Y'?Ҟ=Y'?m0d=Y'?X=Y'?Ҟ=(?1 P=(?䐾=F'?؏P=F'?؏P=(?䐾=['?䐾@O=(?䐾=(?؏Q=['?䐾@O=['?䐾@O=(?؏Q=p'?1 =(?1 `=(?䐾/=F'?؏`-=F'?؏`-=(?䐾/=['?䐾@=(?䐾/=(?؏=['?䐾@=['?䐾@=(?؏=p'?1 =(?)N=(?Q=0A=b'?Ba"=b'?Ba"=(?Q=0A=\'?Opw=(?Q=0A=(?n<=\'?Opw=\'?Opw=(?n<=S'?)P=(?)=(?O=9'?n(?.=(?{0=(?{0=>(?.=(?-0=C(?-=a(?{d=(?.P=(?.P=a(?{d={(? '=a(?{d=Q(? 1Q={(? '={(? '=Q(? 1Q=(?/:=(?# [=_(?S0=*(?♾=*(?♾=_(?S0=(?Va@5=_(?S0=(?$`=(?Va@5=(?Va@5=(?$`=#(?( 8=(?(G=D(?VaI=(?$j=(?$j=D(?VaI=(?S=D(?VaI= (?♾=(?S=(?S= (?♾=e(?##=(?A==I(?fא =(?=Lq=(?=Lq=I(?fא =(?ːn=I(?fא =6(?A p\=(?ːn=(?ːn=6(?A p\=(? 0A="(? ==S(?ː=(?A "=(?A "=S(?ː=(?fאj=S(?ː=Q(?=L =(?fאj=(?fאj=Q(?=L =6(?A==(?=F(?Y' =(?u=(?u=F(?Y' =(?) 2=(?) 2=F(?Y' =(?X=F(?Y' =(? =(?X=[(?r=(?XP=(?Y'u=(?XP=E(?)M=(?Y'u=E(?)M=K(? =(?Y'u=(?Y'u=K(? =(? `=%?jŎ=%?s 0j=%?ʎ`=%?S!=%?s 0j=%?jŎ=%?@9=%?s 0j=%?S!=%?(=%?|j=%?d,=%?|j=%?i0=%?d,=%?(=%?d,=%?i0=%?e=%?(=%?=%?(=%?i0=%?=%?e=%?=%?@9=%?e=%?@9=%?S!=%?S!=%? =%?Ҟ=%?d, =%?W=%? =%?d, =%? =%?i=%?Ҟ=%? =%?W=%?|jk=%?d, =%?i=%?W=%?d, =%?|jk=%?ʎ`=%?j=%?j=%?ʎ`=%?ُ=%?j=%?i=%?b=%?j=%?j=%?b=%?jŎ=%?ُ=%?ʎ`=%?i0=%?ʎ`=%?@9=%?i0=%?i0=%?@9=%?=%?b=%?i=%?jŎ=%?jŎ=%?i=%?S!=%?S!=%?i=%? =Y'?'=Y'?@ M=Y'?S^=Y'?Ҟ=Y'?d, =Y'?W=Y'?S!=Y'?+\l=Y'?Q0=Y'?׶=Y'?+\l=Y'?S^=Y'?S^=Y'?+\l=Y'?S!=Y'?Q0=Y'?=Y'?S!=Y'?V=Y'?=Y'?VA=Y'?S^=Y'?@ M=Y'?VA=Y'?V=Y'?g=Y'?ҕp:=Y'?ҕp:=Y'?l^=Y'?V=Y'?l^=Y'?ҕp:=Y'?Ҟ=Y'?k;=Y'?=Y'?|j=Y'?|j=Y'?=Y'?(=Y'?S^=Y'?=Y'?Е`7=Y'?=Y'?k;=Y'?Е`7=Y'?'=Y'?Е`7=Y'?k;=Y'?Е`7=Y'?'=Y'?S^=Y'?'=Y'?k;=Y'?g=Y'?g=Y'?k;=Y'?|j=Y'?l^=Y'?Ҟ=Y'?S!=Y'?ҕp:=Y'?d, =Y'?Ҟ=Y'?|jk=Y'?d, =Y'?g=Y'?W=Y'?d, =Y'?|jk=Y'?ҕp:=Y'?g=Y'?d, =Y'?VP=Y'?VA=Y'?g=Y'?VA=Y'?@ M=Y'?g=Y'?@ M=Y'?'=Y'?g=Y'?Q0=Y'?׶=Y'?VA=Y'?׶=Y'?S^=Y'?VA=Y'?=Y'?Q0=Y'?VA=Y'?=Y'?V=Y'?S!=Y'?S!=Y'?V=Y'?l^==$?jּ=g%?j=)9$?j`=%?j=g%?j=m )?j=m )?j=m )?j=I(?j=m )?j=I(?j=%?j=g%?j=I(?j=m )?j=m )?j=%?j=%?j=aD(? и=_&? ?=CI'? Ũ=_&? ?=~(? `D=(? =_&? ?=aD(? и=~(? `D=&? P=CI'? Ũ=_&? ?=6%? =%? =_&? ?=(? =&? q=_&? ?=%? =&? P=_&? ?=_&? ?=%? =6%? =_&? ?=&? q=%? =D'?;@=/'?\}pX=r'?[@ =/'?\}pX=Ӄ'?}@=r'?[@ =r'?[@ =Ӄ'?}@= '?[@=Ӄ'?}@=&?}~= '?[@= '?[@=&?}~=~&?qYJ=&?}~=G&?)}=~&?qYJ=~&?qYJ=G&?)}= &?B`;=G&?)}=:%?){pܼ= &?B`;=xA(?{@=!5(? |i=W(?1 A=W(?1 A=!5(? |i=K(?,,=K(?,,=!5(? |i=(?"K=!5(? |i=/'?\}pX=(?"K=(?"K=/'?\}pX=D'?;@=D'?;@=r'?[@ ='?+='?+=r'?[@ =p%'?"`&=r'?[@ = '?[@=p%'?"`&=p%'?"`&= '?[@=&?N&-= '?[@=~&?qYJ=&?N&-=&?N&-=~&?qYJ= &?B`;= &?B`;=:%?){pܼ=%?*$p=:%?){pܼ=H%?D|p#=%?*$p=%?*$p=H%?D|p#= m%?p̹=H%?D|p#=p%?f{T= m%?p̹= m%?p̹=p%?f{T=Z%?"@A=qy(?O?=W(?1 A=K(?,,=K(?,,=(?"K=(?"`=(?"K=D'?;@='?+=&?N&-= &?B`;=&?Z c=&?Z c= &?B`;=Jm%?׻= &?B`;=%?*$p=Jm%?׻=qy(?O?=K(?,,=(?"`=(?"K='?+='?|6='?|6='?+=p%'?"`&=Jm%?׻=%?*$p=&.%? A=&.%? A=%?*$p= m%?p̹=(?"`=(?"K=S(?")=(?"K='?|6=S(?")='?|6=p%'?"`&=1\'?%@e=1\'?%@e=p%'?"`&=W&?$=p%'?"`&=&?N&-=W&?$=&?N&-=&?Z c=W&?$=W&?$=&?Z c=%?b$~=&?Z c=Jm%?׻=%?b$~= m%?p̹=Z%?"@A=&.%? A=&.%? A=Z%?"@A=*%?G$?=c(?cP?=qy(?O?=(?"`=S(?")='?|6=(?~2=(?~2='?|6=1\'?%@e=1\'?%@e=W&?$=&?@e=%?e0P=W&?$=%?b$~=%?b$~=Jm%?׻=B%?c =B%?c =Jm%?׻=&.%? A=c(?cP?=(?"`=(? iC=(? iC=(?"`=z(?i=(?"`=S(?")=z(?i=z(?i=S(?")=G(?iP=S(?")=(?~2=G(?iP=G(?iP=(?~2='?h`=(?~2=1\'?%@e='?h`='?h`=1\'?%@e=S'?Sj@'=S'?Sj@'=1\'?%@e=&?@e=&?@e=W&?$=C&? i=C&? i=W&?$=%?e0P=%?e0P=%?b$~=%?=i=%?=i=%?b$~=B%?c =B%?c =&.%? A=(%?i=(%?i=&.%? A= %??m0I=&.%? A=*%?G$?= %??m0I=h%?:?=s%?}?=}%?|=}%?|=;%?{}o=%?>E=%?>E=;%?{}o=%?|=%?|=[&?z}=C&?D =C&?D =[&?z}=&?Z0=[&?z}='?l}=&?Z0=&?Z0='?l}=:'?qY5='?l}='?}+=:'?qY5=:'?qY5='?}+='?H@='?}+=Q'?}a='?H@='?H@=Q'?}a=(?Eۮ=Q'?}a=|5(?R| *=(?Eۮ=h%?:?=}%?|=g%?! ~=}%?|=%?>E=g%?! ~=%?>E=%?|=_&?1o=%?|=C&?D =_&?1o=C&?D =&?Z0=7&?lP=&?Z0=:'?qY5=7&?lP=7&?lP=:'?qY5=j'?8)=j'?8)=:'?qY5='?H@=(?Eۮ=|5(?R| *=`(?T,P9=|5(?R| *=B(?|>=`(?T,P9=a<%?@>=h%?:?=g%?! ~=g%?! ~=%?>E='%?$p=%?>E=_&?1o='%?$p='%?$p=_&?1o='&?!08=_&?1o=C&?D ='&?!08='&?!08=C&?D =7&?lP=j'?8)='?H@=(?sp='?H@=(?Eۮ=(?sp=(?sp=(?Eۮ=`(?T,P9='%?$p='&?!08=&?4Pv='&?!08=7&?lP=&?4Pv=&?4Pv=7&?lP=9'?6p=7&?lP=j'?8)=9'?6p=9'?6p=j'?8)=(?sp=(?sp=`(?T,P9=h(?0?=a<%?@>=g%?! ~=A%?%=A%?%=g%?! ~=u%?d&k=u%?d&k=g%?! ~='%?$p=9'?6p=(?sp=*'? &p=*'? &p=(?sp=S(?%@=S(?%@=(?sp=h(?0?=u%?d&k='%?$p=%?-p=%?-p='%?$p=I&?p&Z='%?$p=&?4Pv=I&?p&Z=&?4Pv=9'?6p=L '?>/ `=L '?>/ `=9'?6p=*'? &p= %?c<=a<%?@>=A%?%=I&?p&Z=&?4Pv=L '?>/ `=S(?%@=h(?0?=(?3= %?c<=A%?%=$%?4j װ=$%?4j װ=A%?%=^%?8i==A%?%=u%?d&k=^%?8i==^%?8i==u%?d&k=f%?Ei=u%?d&k=%?-p=f%?Ei=f%?Ei=%?-p=&?Yj=%?-p=I&?p&Z=&?Yj=&?Yj=I&?p&Z=&?i0=I&?p&Z=L '?>/ `=&?i0=&?i0=L '?>/ `=@'?sh=L '?>/ `=*'? &p=D'?jP¨=D'?jP¨=*'? &p=6(?i=*'? &p=S(?%@=6(?i=6(?i=S(?%@=x(?i֮=x(?i֮=S(?%@=Z(?Ii.=S(?%@=(?3=Z(?Ii.=Z(?Ii.=(?3=7(?Oip?=(?3=h(?0?=7(?Oip?=@'?sh=L '?>/ `=D'?jP¨=|'?獾=&?@ލ=#&?ύ =#&?ύ =&?@ލ=g@&?卾p=b%?nߍ/=I%?OݍPŷ=PC%?㍾@=U(?čB=Wu(?䍾P@=7(?wÍʹ=Wu(?䍾P@=j(?ލ=7(?wÍʹ=7(?wÍʹ=j(?ލ='?<0!=j(?ލ=!(?፾0"='?<0!='?<0!=!(?፾0"=;'?^C=!(?፾0"='? ㍾h=;'?^C=;'?^C='? ㍾h=R&?*Í`='? ㍾h=|'?獾=R&?*Í`=R&?*Í`=|'?獾=#&?ύ =#&?ύ =g@&?卾p=b%?D@=g@&?卾p=%?ލ}=b%?D@=%?ލ}=%?ߍ(=b%?D@=b%?D@=%?ߍ(=%?Ff=%?ߍ(=b%?nߍ/=%?Ff=%?Ff=b%?nߍ/=b%?G=b%?nߍ/=PC%?㍾@=b%?G=U(?čB=7(?wÍʹ=.J(?x@T=.J(?x@T=7(?wÍʹ=(?v~P.=(?v~P.=7(?wÍʹ='?<0!='?<0!=;'?^C='?@=;'?^C=R&?*Í`=&?̝`=R&?*Í`=#&?ύ =&?̝`=&?̝`=#&?ύ =6j&? =%?~0=b%?D@=%?Ff=%?Ff=b%?G=Ym%?Fr=(?v~P.='?<0!='?}1='?<0!='?@='?}1='?}1='?@=r'?3~='?@=;'?^C=r'?3~=r'?3~=;'?^C=&?}=;'?^C=&?̝`=&?}=&?̝`=6j&? =&?}=&?}=6j&? =-&?~-=6j&? =#&?ύ =-&?~-=#&?ύ =b%?D@=-&?~-=-&?~-=b%?D@=%?~0=%?~0=%?Ff=Ym%?Fr=sa'?l䍾!=,'? )=v'?㍾У=J0(?.䍾=L_(?ٍ=%I(?ҍ;=%I(?ҍ;=L_(?ٍ=#x(?卾04=v'?㍾У=J0(?.䍾=%I(?ҍ;=c%?č<=C%?ݍ`&=i%?=C%?ݍ`&=Q%?ݍܱ=i%?=Q%?ݍܱ=K{%?ߍɮ=i%?=i%?=K{%?ߍɮ=%?&ʍ &=K{%?ߍɮ=%?:ߍ%=%?&ʍ &=%?:ߍ%=&?s獾=%?&ʍ &=%?&ʍ &=&?s獾=ʅ&?ɷ=&?s獾=Hq&?䍾=ʅ&?ɷ=ʅ&?ɷ=Hq&?䍾= '?oÍ=Hq&?䍾=q&?鍾0e= '?oÍ=q&?鍾0e=sa'?l䍾!= '?oÍ= '?oÍ=sa'?l䍾!='?0Í`=sa'?l䍾!=v'?㍾У='?0Í`='?0Í`=v'?㍾У=(?ݭZ=v'?㍾У=%I(?ҍ;=(?ݭZ=%I(?ҍ;=#x(?卾04=l@(?~8=u%?P~>=c%?č<=ч%?O=c%?č<=i%?=ч%?O=i%?=%?&ʍ &=%?~=ʅ&?ɷ= '?oÍ=H'?1= '?oÍ='?0Í`=H'?1=H'?1='?0Í`='?W~P='?W~P='?0Í`=(?ݭZ=(?ݭZ=%I(?ҍ;=l@(?~8=ч%?O=i%?=%?~=%?~=%?&ʍ &=&?}=&?}=%?&ʍ &=(e&?}@=%?&ʍ &=ʅ&?ɷ=(e&?}@=(e&?}@=ʅ&?ɷ=t&?}P=ʅ&?ɷ=H'?1=t&?}P=t&?}P=H'?1='?}(='?}(=H'?1=#y'?}=H'?1='?W~P=#y'?}='?W~P=(?ݭZ=1(?|e=(?ݭZ=l@(?~8=1(?|e=&?=T&?c=?&? ='?|P?=T&?c=&?=&?= '? `?='?|P?=?&? =c&?){4=&? :=?&? =T&?c=c&?){4=3'?0D= '?|?=>'?K=>'?K= &?ڶ=3'?0D= &?ڶ=&?=3'?0D=&?PN=&?= &?ڶ=&?|?=&?=&?PN=(?dw-=E)?Mδ= )?C[=E)?Mδ=)?W+`= )?C[= )?C[=)?W+`=d(?Ǔ6=)?W+`=)?C?=d(?Ǔ6=Q(?C?=)?Ǔ`H=&)?W+=)?Ǔ`H=)?C[p=&)?W+=&)?W+=)?C[p=(?M=)?C[p=})?BwP=(?M=*?Kbp=*??=*?5=*?Kbp=*?5=*?=*?5=*??=*?_A=*??=*?]$=*?_A=*?=*?h޼=*?Kbp=*??=*?h޼=*?]$= *?D@=)?S=)?e`=w)?=)?==p*??=)?jH=#)?+= *?<=#)?+=)?S= *?D@=)?e`=w)?=*?p=p*??=)?==)?aP= *?0Q=)?aP=*)?9U=*)?9U=)?%= *?#`U=)?%Ϊ=)?jH= *?<= *?<=#)?+= *?D@= *?D@=)?e`= *?p= *?p=)?e`=*?p=*?p=w)?=p*??=p*??=)?aP= *?0Q= *?0Q=*)?9U= *?#`U=*?&=)?%Ϊ= *?<=*?й= *?D@= *?p= *?p=*?p=*?Վi=*?Վi=*?p=p*??=*?&= *?<=*?p0=*?p0= *?<=*?`$= *?<= *?D@=*?`$=*?`$= *?D@=*?ԅ@=*?ԅ@= *?D@=*?й=*?й= *?p=*?-㎾r=*?-㎾r= *?p=*?Վi=*?Վi=p*??=*?U=*?U=p*??=*?hjV=p*??= *?0Q=*?hjV=*?hjV= *?0Q=*?׿P=*?׿P= *?0Q=*?h!p= *?0Q= *?#`U=*?h!p=*?h!p= *?#`U=(*?ZM=(*?ZM= *?#`U=*?&v=Z *?=r)?"=A)?қ@=r)?"=)?˧u=A)?қ@=A)?қ@=)?˧u=_)?=m?ᇚ`=u?n=,?n>=?>="?n@f="?G`{f=+!?nw^="?G`{f=R!?0^=+!?nw^=x"?n@y="?G`{f="?n@f=H"?E="?G`{f=x"?n@y=V !? o0=H"?E=x"?n@y=H"?E=V !? o0=!?t.p=<?`=]?09=:?}@i=:?}@i=]?09=`?=]?09=cL?=`?=`?=cL?=w?⨍=?Я=<?=G?$x=<?=? zt=G?$x=G?$x=? zt=? f=? zt=;?Y@g=? f=R!?ɨp=į ? u=!?Gt=į ? u=e!? m=!?Gt=!?Gt=e!? m=[!?g=e!? m=&!?%h=[!?g=&!?@l=[!?`=e!?=[!?`=!?)=e!?=e!?=!?)=į ?0=!?)=R!?f=į ?0=!?='!?p=!?='!?p= ?;=!?= ?;=4!?=!?=!?=4!?=!?=!? g=!?Y`w=4!?஍ t=4!?஍ t=!?Y`w= ?@x= ?@x=!?Y`w='!?`=!?Y`w=!? ҁ='!?`=? g=?Y`w=?஍ t=?஍ t=?Y`w=Λ?@x=Λ?@x=?Y`w= ~?`=?Y`w=? ҁ= ~?`=g?@=f|?=j?)0=f|?=?:=j?)0=?:=?z=j?)0=j?)0=?z=?=,)?d =?d=k? =k? =?d=?pٳ=?d=k?fcpu=?pٳ=?pٳ=k?fcpu=,)?ͨw=b ?,=e ?d0=m ?Ќ=e ?d0=m ?mQP=m ?Ќ=m ?Ќ=m ?mQP=e ?=m ?mQP=b ?dS=e ?="?d=M;?dR=?p=?p=M;?dR=M;?0,=M;?dR=?`=M;?0,=M;?0,=?`="?j=[ ?q=P ?dк=?d0=P ?dк=?eཱུ=?d0=?d0=?eཱུ=P ?PĽ=?eཱུ=[ ?e=P ?PĽ=?O=>? =?݇=>? ='?񭎾P=?݇='?񭎾P=?4=?݇=?݇=?4=A?V70F=%?4ʦ=-=$?6=K$?ciB=K$?ciB=-=$?6=#?9OЯ=#?9OЯ=-=$?6=%?`=-=$?6={%?4=%?`=?=I?-=O?@=O?@=I?-=?JMp =I?-=0?񏍾@=?JMp =?JMp =0?񏍾@=F?P =z ?y=!?[= !?VRP= !?VRP=!?[="?O0=!?[=P!?v!="?O0="?O0=P!?v!=lY!? = ?Rb=M ?DP=?! ?]錾 =M ?DP=c0 ?=?! ?]錾 =c0 ?=Q ?즍P=?! ?]錾 =?! ?]錾 =Q ?즍P=a!?=i?Č=J?[=zy?kE0=J?[=?=zy?kE0=zy?kE0=?=-?'+=?=l}?P=-?'+=: ? PTg= ?@wf=r?Oq= ?@wf=Z/ ?<_r=r?Oq=r?Oq=Z/ ?<_r=sX ?6À=Z/ ?<_r= ? mK=sX ?6À=z?Q`te=?LU s=?Kl=?Kl=?LU s==6!!?/pϹ= ?=e!?{F}= ?=e9!?즍P=e!?{F}=e!?{F}=e9!?즍P= ?O=e9!?즍P=hx ?s@= ?O=?j=?=} ?j=?=} ?=} ?j=?=?j=} ?=?j=} ?j=} ?=} ?VP=՚?VP=} ?V=՚?VP=՚?V=} ?V=՚?S^=՚?S!=?S^=՚?S!=?S!=?S^=} ?V=՚?V=} ?̉=՚?V=՚?̉=} ?̉=} ?̉P=՚?̉P=} ?VP=՚?̉P=՚?VP=} ?VP=} ?|j=} ?|j+=՚?|j=} ?|j+=?|j+=՚?|j=՚?|j=?|j+=՚?|jk=?|j+=?|jk=՚?|jk=՚?|j=?|j=՚?|jn=?|j=?|jT=՚?|jn=՚?|jn=?|jT=} ?|jn=?|jT=} ?|jT=} ?|jn=՚?|j=՚?2=?|j=՚?2=?2=?|j=՚?@L=՚?|jk=?@L=՚?|jk=?|jk=?@L=՚?Ҟ=՚?%'@L=?Ҟ=՚?%'@L=?%'@L=?Ҟ=՚?%'2=՚?=?%'2=՚?=?=?%'2=՚?S!=՚?Ҟ=?S!=՚?Ҟ=?Ҟ=?S!=՚?=՚?S^=?=՚?S^=?S^=?=՚?2=՚?%'2=?2=՚?%'2=?%'2=?2=՚?%'@L=՚?@L=?%'@L=՚?@L=?@L=?%'@L=?=?|j+=} ?=?|j+=} ?|j+=} ?=?|jT=?=} ?|jT=?=} ?=} ?|jT=(?S!=(?S^=Y'?S!=(?S^=Y'?S^=Y'?S!=(?m=(?m=Y'?m=(?m=Y'?m=Y'?m=(?mP=(?m0d=Y'?mP=(?m0d=Y'?m0d=Y'?mP=(?m0d=(?@L=Y'?m0d=(?@L=Y'?@L=Y'?m0d=(?2=(?m=Y'?2=(?m=Y'?m=Y'?2=(?%'@L=(?Ҟ=Y'?%'@L=(?Ҟ=Y'?Ҟ=Y'?%'@L=(?=(?%'2=Y'?=(?%'2=Y'?%'2=Y'?=(?S^=(?=Y'?S^=(?=Y'?=Y'?S^=(?Ҟ=(?S!=Y'?Ҟ=(?S!=Y'?S!=Y'?Ҟ=(?%'2=(?2=Y'?%'2=(?2=Y'?2=Y'?%'2=(?@L=(?%'@L=Y'?@L=(?%'@L=Y'?%'@L=Y'?@L=(?2=(?mP=Y'?2=(?mP=Y'?mP=Y'?2=(?m=(?2 =Y'?m=(?2 =Y'?2 =Y'?m=J ?S^=J ?S!=՚?S^=J ?S!=՚?S!=՚?S^=J ?m=J ?m=՚?m=J ?m=՚?m=՚?m=J ?m0d=J ?mP=՚?m0d=J ?mP=՚?mP=՚?m0d=J ?@L=J ?m0d=՚?@L=J ?m0d=՚?m0d=՚?@L=J ?m=J ?2=՚?m=J ?2=՚?2=՚?m=J ?Ҟ=J ?%'@L=՚?Ҟ=J ?%'@L=՚?%'@L=՚?Ҟ=J ?%'2=J ?=՚?%'2=J ?=՚?=՚?%'2=J ?S!=J ?Ҟ=՚?S!=J ?Ҟ=՚?Ҟ=՚?S!=J ?=J ?S^=՚?=J ?S^=՚?S^=՚?=J ?2=J ?%'2=՚?2=J ?%'2=՚?%'2=՚?2=J ?%'@L=J ?@L=՚?%'@L=J ?@L=՚?@L=՚?%'@L=J ?2 =J ?m=՚?2 =J ?m=՚?m=՚?2 =J ?mP=J ?2=՚?mP=J ?2=՚?2=՚?mP=܊ ?S^=܊ ?S!=J ?S^=܊ ?S!=J ?S!=J ?S^=܊ ?m=܊ ?m=J ?m=܊ ?m=J ?m=J ?m=܊ ?m0d=܊ ?mP=J ?m0d=܊ ?mP=J ?mP=J ?m0d=܊ ?@L=܊ ?m0d=J ?@L=܊ ?m0d=J ?m0d=J ?@L=܊ ?m=܊ ?2=J ?m=܊ ?2=J ?2=J ?m=܊ ?Ҟ=܊ ?%'@L=J ?Ҟ=܊ ?%'@L=J ?%'@L=J ?Ҟ=܊ ?%'2=܊ ?=J ?%'2=܊ ?=J ?=J ?%'2=܊ ?S!=܊ ?Ҟ=J ?S!=܊ ?Ҟ=J ?Ҟ=J ?S!=܊ ?=܊ ?S^=J ?=܊ ?S^=J ?S^=J ?=܊ ?2=܊ ?%'2=J ?2=܊ ?%'2=J ?%'2=J ?2=܊ ?%'@L=܊ ?@L=J ?%'@L=܊ ?@L=J ?@L=J ?%'@L=܊ ?2 =܊ ?m=J ?2 =܊ ?m=J ?m=J ?2 =܊ ?mP=܊ ?2=J ?mP=܊ ?2=J ?2=J ?mP=Q(?S!=Q(?S^=(?S!=Q(?S^=(?S^=(?S!=Q(?mP=Q(?m0d=(?mP=Q(?m0d=(?m0d=(?mP=Q(?m=Q(?m=(?m=Q(?m=(?m=(?m=Q(?2=Q(?m=(?2=Q(?m=(?m=(?2=Q(?m0d=Q(?@L=(?m0d=Q(?@L=(?@L=(?m0d=Q(?=Q(?%'2=(?=Q(?%'2=(?%'2=(?=Q(?%'@L=Q(?Ҟ=(?%'@L=Q(?Ҟ=(?Ҟ=(?%'@L=Q(?S^=Q(?=(?S^=Q(?=(?=(?S^=Q(?Ҟ=Q(?S!=(?Ҟ=Q(?S!=(?S!=(?Ҟ=Q(?%'2=Q(?2=(?%'2=Q(?2=(?2=(?%'2=Q(?@L=Q(?%'@L=(?@L=Q(?%'@L=(?%'@L=(?@L=Q(?2=Q(?mP=(?2=Q(?mP=(?mP=(?2=Q(?m=Q(?2 =(?m=Q(?2 =(?2 =(?m=%?=%?j=m )?=%?j=m )?j=m )?=%?j=%?=m )?j=%?=m )?=m )?j=m )?V=Y'?V=m )?VP=Y'?V=Y'?VP=m )?VP=Y'?S!=Y'?S^=%?S!=Y'?S^=%?S^=%?S!=m )?̉=Y'?̉=m )?V=Y'?̉=Y'?V=m )?V=m )?VP=Y'?VP=m )?̉P=Y'?VP=Y'?̉P=m )?̉P=Y'?|jk=%?|jk=Y'?|j=%?|jk=%?|j+=Y'?|j=Y'?|j=%?|j+=m )?|j=%?|j+=m )?|j+=m )?|j=m )?|jn=m )?|jT=Y'?|jn=m )?|jT=%?|jT=Y'?|jn=Y'?|jn=%?|jT=Y'?|j=%?|jT=%?|j=Y'?|j=Y'?2=Y'?|j=%?2=Y'?|j=%?|j=%?2=Y'?|jk=Y'?@L=%?|jk=Y'?@L=%?@L=%?|jk=Y'?%'@L=Y'?Ҟ=%?%'@L=Y'?Ҟ=%?Ҟ=%?%'@L=Y'?=Y'?%'2=%?=Y'?%'2=%?%'2=%?=Y'?S^=Y'?=%?S^=Y'?=%?=%?S^=Y'?Ҟ=Y'?S!=%?Ҟ=Y'?S!=%?S!=%?Ҟ=Y'?@L=Y'?%'@L=%?@L=Y'?%'@L=%?%'@L=%?@L=Y'?%'2=Y'?2=%?%'2=Y'?2=%?2=%?%'2=%?=%?|jT=m )?=%?|jT=m )?|jT=m )?=%?|j+=%?=m )?|j+=%?=m )?=m )?|j+=m )?̉P=Y'?̉P=m )?|jn=Y'?̉P=Y'?|jn=m )?|jn=Y'?|j=Y'?̉=m )?|j=Y'?̉=m )?̉=m )?|j=J)?9ߏJ=J)?9ߏP4=J)?&V=J)?9ߏP4=J)?&)=J)?&V=J)?&V=J)?&)=J)?nJ=J)?&)=J)?nP4=J)?nJ=*?&)=J)?&)=*?nP4=J)?&)=J)?nP4=*?nP4=*?&V=J)?&V=*?9ߏJ=J)?&V=J)?9ߏJ=*?9ߏJ=*?nJ=J)?nJ=*?&V=J)?nJ=J)?&V=*?&V=*?9ߏP4=J)?9ߏP4=*?&)=J)?9ߏP4=J)?&)=*?&)=*?nP4=J)?nP4=*?nJ=J)?nP4=J)?nJ=*?nJ=*?9ߏJ=J)?9ߏJ=*?9ߏP4=J)?9ߏJ=J)?9ߏP4=*?9ߏP4=?Cϕ#[=?#[=%?Cϕ#[=?#[=%?#[=%?Cϕ#[=?f=?fP=%?f=?fP=%?fP=%?f=?fڊ=?fF=%?fڊ=?fF=%?fF=%?fڊ=?|j=?|j=%?|j=?|j=%?|j=%?|j=?|jk=?|jP=%?|jk=?|jP=%?|jP=%?|jk=?&=?=%?&=?=%?=%?&=?=?=%?=?=%?=%?=?=?Ҟ=%?=?Ҟ=%?Ҟ=%?=?󍾠=?&=%?󍾠=?&=%?&=%?󍾠=?|j=?2=%?|j=?2=%?2=%?|j=?@L=?|jk=%?@L=?|jk=%?|jk=%?@L=?%'2=?=%?%'2=?=%?=%?%'2=?Ҟ=?%'@L=%?Ҟ=?%'@L=%?%'@L=%?Ҟ=?2=?%'2=%?2=?%'2=%?%'2=%?2=?%'@L=?@L=%?%'@L=?@L=%?@L=%?%'@L=?#[=?OA`=%?#[=?OA`=%?OA`=%?#[=?O@^=?󍾠=%?O@^=?󍾠=%?󍾠=%?O@^=?fF=?OF=%?fF=?OF=%?OF=%?fF=?O=?f=%?O=?f=%?f=%?O=4>﬛p4>j4>V@4>V@4>j4>V4>j4>djP4>V4>V4>djP4> &?pg&?j`&?V&?V&?j`&?V@&?j`&?cj&?V@&?V@&?cj&? u>ɑ`u>ˎЀu>jp馽u>]Xu>ɑ`u>jp馽u>ˎЀu>]Xu>S]Žv>iv>'½v>Nlܽv>'½v>}jp˽v>Nlܽu>S]Žu>]Xu>S u>S u>]Xu>Ҟu>]Xu>ތu>Ҟv>Vu>j`v>}j`ku>j`v>%jv>}j`ku>kŎp馽u>jp馽u>ˎЀu>ˎЀu>ju>jpýu>`u>kdZݽv>iu>ˎЀu>kdZݽu>ju>ju>kdZݽu>`u>l@9u>y0u>jp馽u>ݽv>iu>S]Žu>S]Žv>iu>ˎЀv>iu>kdZݽu>ˎЀu>]Xu>jp馽u>ތu>ތu>jp馽u>l@9u>jp馽u>y0u>l@9v>}jp˽v>iv>Nlܽv>iu>ݽv>'½v>'½u>ݽu>`˽u>ݽu>S]Žu>`˽u>Ҟu>ތv>Vu>ތu>j`v>Vu>ތu>l@9u>j`o>A o>Yo>o>S o>ఱo>A o>ఱo>Yo>A o>ő o>ఱo>S]Žo>S]Žo>ఱo>S o>S]Žo>zŐ8o>A @ؽo>g`o>"o>Vo>Vo>"o> `Ώo> `Ώo>"o>Ҟo>S]Žo>`˽o>Pؽo>`˽o>e,ݽo>Pؽo>Sjo>Pؽo>e,ݽo>Pؽo>Sjo>gpo>Sjo>e,ݽo>gpo>S o> `Ώo>Ҟo>Vo>S o>}j`ko>S o>"o>g`o> V߽o>gpo>V@o>A o>o> V߽o>o>A @ؽo> V߽o> V߽o>zŐ8o>gpo>ő o>S]Žo>o>o>S]Žo>A @ؽo>S]Žo>Pؽo>zŐ8o>zŐ8o>Pؽo>gpo> `Ώo>S o>Vo>S o>A o>Vo>A o> V߽o>Vo>e,ݽo>}jp˽o>gpo>}jp˽o>e,ݽo>'½o>e,ݽo>`˽o>'½o>S o>g`o>}j`ko>Ҟo>"o>Vo>"o>S o>V4>j`u>j`>jP4>j`>j4>j_>j@9>jּ>jP>jP>j4>j`4>jɗ>jŽu>j>jɗ>jŽ4>j> p?9> > 쫽> p? > 9> I> 0DP>> P> p?> > p?,> Ũ> 쫽G> 0> p?P>> P> q½> p?G> 0,> Ũ> p?> p?> q½ > > p?> I> 0Dw>z>}Ϋp>_|p>_|>}d>H|@d>H|@I>}+> DଫI>}+ڭ>}`Ԭ> Dଫ> Dଫڭ>}`Ԭg>YЭڭ>}`Ԭ2>}g>YЭg>YЭ2>}+>y\2>}*>} +>y\+>y\*>} g>|>)Y>{>NE>|`y>1=>1=NE>|`yX>+0ѰNE>|`y} >|@X>+0ѰX>+0Ѱ} >|@_>T&} >|@w>z_>T&w>zp>_|_>T&_>T&p>_|}>b#ഩ}>b#ഩp>_|!>+Ap>_|d>H|@!>+A!>+Ad>H|@> Dଫ> Dଫg>YЭ2(>+ g>YЭ+>y\2(>+ 2(>+ +>y\>">"+>y\d>%<+>y\g>|>d>%<>1=X>+0Ѱ>r?!>+A> Dଫ>C ت> Dଫ2(>+ >C ت>r?X>+0Ѱ > RX>+0Ѱ_>T& > R > R_>T&}>b#ഩ}>b#ഩ!>+A>@ۧ>@ۧ!>+A>C ت>C ت2(>+ qc>2(>+ >"qc>)>#`>r? > R > R}>b#ഩb>b>}>b#ഩ>@ۧqc>>"1>: >>"d>%<1>: >)>#` > R>/p5>/p5 > Ro>10o>10 > Rb>>@ۧ>C ت1>*>C تqc>>+Do>10b>>f>fb>>@ۧR>efЦ>@ۧ1>*1>*>C تE>2PE>2P>C ت>+DE>2P>+D>g`qc>1>: >>fw>fw1>: >>2g`?#>i?>r?>h0>r?)>#`>h0>h0)>#`>ih`ۭ>ih`ۭ)>#`>/p5>/p5o>10>ih`ۭ>ih`ۭo>10>i 3φ>i?o>10>f>f>@ۧ>Ti>Ti>@ۧR>efЦR>efЦ1>*>Tij>Tij1>*>Ik˨1>*E>2P>Ik˨>Ik˨E>2P>g`>g`>+DY>kˮ>+Dqc>Y>kˮY>kˮqc>>fw>i 3o>10φ>i?>_&@?B>}0Qq>?@WB>}0Q>w}@q>?@Wq>?@W>w}@[>{@4>=|>m}0T>@0T>@0>m}0>rY@>m}0B}>}濽>rY@>rY@B}>}濽>YhB}>}濽%>}@>Yh>Yh%>}@u>1?%>}@D>}𜼽u>1?u>1?D>}𜼽[>R?D>}𜼽m?>&` [>R?[>R?m?>&` B>YѸB>YѸm?>&` su>AAsu>AAm?>&` [>|p@q>?@W[>{@@>n2Ҽ[>{@4>=|@>n2Ҽ@>n2Ҽ4>=|{>{>4>=|T>@0T>@0>rY@>00E>rY@>Yh>00E>00E>Yhu>1?[>R?B>YѸz>U'ZB>YѸsu>AAz>U'Z>_&@?q>?@WV>Lq>?@W@>n2ҼV>LV>L@>n2Ҽ> ´@>n2Ҽ{>> ´{>T>@0Qt>"1½Qt>"1½T>@0>T>@0>00E>>00Eu>1?>>u>1?jU>𝻽u>1?[>R?jU>𝻽[>R?z>U'ZjU>𝻽z>U'Zsu>AA>0A> ´{>Qt>"1½jU>𝻽z>U'Z>0A&>c$?>_&@?V>L)>$ ½> ´Qt>"1½>jU>𝻽>w"QV>L> ´wu>)wu>)> ´)>$ ½Qt>"1½>C>1 E½>w"QjU>𝻽K>(p᷽jU>𝻽>0AK>(p᷽&>c$?V>L>d@>d@V>L>M?p>M?pV>Lwu>)wu>))>$ ½>e`7½)>$ ½Qt>"1½C>1 E½C>1 E½>>w"Q>w"QK>(p᷽>gpyK>(p᷽>0A'>h`?>i`?&>c$?>d@>d@>M?pv>hP>M?pwu>))7>i ")7>i "wu>)>e`7½>e`7½)>$ ½q>iiýq>iiý)>$ ½0>3i0ý0>3i0ý)>$ ½C>1 E½q>i@½C>1 E½>FiCC>1 E½>w"Q>FiC>FiC>w"QA>*kA>*k>w"Q>gpy>gpyK>(p᷽>i2v>hP>M?p)7>i "0>3i0ýC>1 E½q>i@½>i2K>(p᷽'>h`?->ύp?(> p?'>䍾d>捾P<> t>獾 諽>獾 諽?>)ݍ&:>⍾`&:>⍾`5Y>ލq">ҍT5Y>ލqcR>㍾P`">ҍTI>k鍾&k>ݍ@>Kٍ)>Kٍ)k>ݍ@8j>卾`ɲ->ύp?'>䍾1f>Í)1f>Í)'>䍾>'>䍾d>捾P<>d>捾P<>獾 諽>>>獾 諽l;>cީ>獾 諽&:>⍾`l;>cީ&:>⍾`">ҍTl;>cީ">ҍTcR>㍾P`>xÍ@>xÍ@cR>㍾P`e>cR>㍾P`I>k鍾&e>e>I>k鍾&>(`rI>k鍾&>Kٍ)>(`r>(`r>Kٍ)>`,>Kٍ)8j>卾`ɲ>`,8j>卾`ɲ\>䍾>>`,->ύp?1f>Í)_>}P;_>}P;1f>Í)>~>~1f>Í)>>l;>cީ1>} 1>} l;>cީ>}l;>cީ">ҍT >~5 >~5">ҍT->~c">ҍT>xÍ@->~c->~c>xÍ@e>>~>uP>~O>1>} uP>~O>}l;>cީ >~5->~ce>Et>}Et>}e>->}`e>>(`r->}`->}`>(`rA>o~*>(`r>`,A>o~*[\>፾PAq>捾\>T⍾p>Mߍ7?>ݍp5>Yٍ:Y>⍾ ½s> ׍`ۚ>(𷿽ۚ>(𷿽s> ׍`>捾ξs> ׍`(> 0U>捾ξ[\>፾PA>T⍾p>ˍ>T⍾p>Mߍ>ˍ>ˍ>Mߍr>ˍ r>ˍ >Mߍ5>Yٍ:5>Yٍ:7?>ݍp~>^ʍ17?>ݍpY>⍾ ½~>^ʍ1~>^ʍ1Y>⍾ ½ۚ>(𷿽>捾ξC>ߍ,^>} ^>} C>ߍ,Q>G獾lQ>G獾l>㍾`gT> @@r>ˍ 5>Yٍ:>aT5>Yٍ:~>^ʍ1>aT>?>[\>፾PA;>8PV[\>፾PA>ˍ;>8PV;>8PV>ˍE>杍PK>ˍr>ˍ E>杍PKE>杍PKr>ˍ >aT>aT~>^ʍ154>~P?54>~P?~>^ʍ1ۚ>(𷿽ۚ>(𷿽>捾ξ^>} ^>} Q>G獾l@>Q>G獾lT> @@@>;>8PVE>杍PKv>~@Ӽv>~@ӼE>杍PKI>}PSE>杍PK>aTI>}PS54>~P?ۚ>(𷿽>}௾ۚ>(𷿽^>} >}௾>}௾^>} >} a>} a^>} @>G>i>vP<> p+>|0?i>vPG>G>+> @?+>|0?<> p>{4> :>{4<> pi>vP o>y,>|p?@&>`De> ౶ o>@&>`D> t o>e> ౶> t>{ F o>> t$> ?>{ F ?W ?md ?Ҟ ?Ҟ ?md ? `Ъ ? `Ъ ?п ?xl ?V৆ ?п ? `Ъ ?BՏ@ ?xl ?п ?Ҟ ? `Ъ ?S  ? `Ъ ?xl ?S  ?S  ?xl ?S]Ž ?BՏ@ ?п ?V৆ ?S]Ž ?xl ?V৆ ?xl ?BՏ@ ?V৆ ?S]Ž ?ݽ ?`˽ ?V  ?ݽ ?V৆ ?`˽ ?ݽ ?V  ?V৆ ?ݽ ?S]Ž ?m˽ ?V  ? ` ?V  ?m˽ ?`˽ ?m˽ ?'½ ?`˽x?1 ᐽ?䐾 ?؏?؏?䐾  ?䐾/?䐾 ?؏@- ?䐾/ ?䐾/?؏@- ?1 @숽x?1 ὎?䐾 O޽?؏Q޽?؏Q޽?䐾 O޽ ?䐾ܽ?䐾 O޽?؏0ܽ ?䐾ܽ ?䐾ܽ?؏0ܽ ?1 0ٽ?)@0?Q==?Ba\?Ba\?Q== ?O?Q==?n'½o>m˽o>`˽o>`˽o>m˽o>!`o>Vo>ݽo>!`o>`˽o>!`o>S]Žo>!`o>ݽo>S]Žo>ݽo>CՏlo>S]Žo>S]Žo>x@o>S o>CՏlo>ݽo>Vo>CՏlo>x@o>S]Žo>S o>x@o>Vo>x@o>CՏlo>Vo>Ҟo>S o> {o>Vo> {o>S o>Ҟo> {o>Vo>Vo> {o>Vo>Wo>Ҟo>!`Ъo>Vo>!`Ъo>Ҟo>!`Ъo>mdo>Wo>0>A@὏l>dpw>A@> @ݽl>dpwཏl>dpw> @ݽ >2ܽ> @ݽ >G`ٽ >2ܽn>Gp̟>2̍n> Ɍ̟>2̍]>dpn> Ɍn> Ɍ]>dpn>A]>dp>kn>A>.8>p3pߌn>/pn>/p>p3pߌl>oBPl>oBP>p3pߌo>,k>p3pߌ>e,@bo>,ko>e,ڽ>,ڽi>p3pݽ>,ڽ>oB`ݽi>p3pݽ>oB`ݽ>/pei>p3pݽi>p3pݽ>/pen>.E>)N>R= A޽t>Ca`"޽t>Ca`"޽>R= A޽n>OPwܽ>R= A޽>oOPwܽn>OPwܽ>o)@ٽ>)>OAs>ooOn>R==>O>Ca\n>R==n>R==>Ca\n>)@0>2 0ٽ>䐾ܽ'w> ؏0ܽ'w> ؏0ܽ>䐾ܽn>䐾 O޽>䐾ܽů> ؏Q޽n>䐾 O޽n>䐾 O޽ů> ؏Q޽n>2 >2 @숽>䐾/'w> ؏@-'w> ؏@->䐾/n>䐾 >䐾/ů> ؏n>䐾 n>䐾 ů> ؏n>2 ᐽO>'½O>m˽O>`˽O>`˽O>m˽O>!`O>VO>ݽO>!`O>`˽O>!`O>S]ŽO>!`O>ݽO>S]ŽO>ݽO>CՏlO>S]ŽO>S]ŽO>x@O>S O>CՏlO>ݽO>VO>CՏlO>x@O>S]ŽO>S O>x@O>VO>x@O>CՏlO>VO>ҞO>S O> {O>VO> {O>S O>ҞO> {O>VO>VO> {O>VO>mdO>VO>!`ЪO>VO>mdO>ҞO>mdO>WO>Ҟ>qlN>Y@շ>Z'`u޽lN>Y@)O>)L޽շ>Z'`u޽)O>)L޽O>` ۽շ>Z'`u޽շ>Z'`u޽O>` ۽}>`۽}S>$O>Z' ݷ>uݷ>u$O>Z' з>)2з>)2$O>Z' >Y󏾠툽$O>Z' O> >Y󏾠툽O>(F+O>WaI߽}>%j}>%j+O>WaI߽>Sо޽+O>WaI߽S>♾ٽ>Sо޽>Sо޽S>♾ٽ>$#ڽT>$ZN>S^>♾`^>♾`N>Sз>Wa 5N>SO>%@з>Wa 5з>Wa 5O>%@l>(8I>B=ٽ O>gא߽>>Lqڽ>>Lqڽ O>gא߽>ːm߽ O>gא߽GO>B P\>ːm߽>ːm߽GO>B P\Ὄ> APO>/`D>L> 0W>1P->1P->L> 0W >|>L> 0W8O>. >| >|8O>.Ϸ>-,O>-ٽP>|d޽÷>.0ٽ÷>.0ٽP>|d޽> '߽P>|d޽O>1Qώ> '߽> '߽O>1QὫ>/:mO> = O>ː>B ">B " O>ːٷ>gאi O>ːS>>L` ٷ>gאiٷ>gאiS>>L` G>B=`琽?̙`?md?8Qಆ?S ?̙`?8Qಆ?8Qಆ?п?a?V৆?п?8Qಆ?8Qಆ?a?S ?S ?a?e˽?п?wp?a?wp?п?V৆?e˽?a?V৆?a?wp?V৆?V৆?'V㽐?e˽?'V㽐?,ݽ?e˽?\㽐?,ݽ?'V㽐?m˽?,ݽ?\㽐?,ݽ?m˽?e˽?m˽?'½?e˽?̙`?md?8Qಆ?S ?̙`?8Qಆ?8Qಆ?п?a?V৆?п?8Qಆ?8Qಆ?a?S ?S ?a?e˽?п?wp?a?wp?п?V৆?e˽?a?V৆?a?wp?V৆?V৆?'V?e˽?'V?,ݽ?e˽?\?,ݽ?'V?m˽?,ݽ?\?,ݽ?m˽?e˽?m˽?'½?e˽?/:f? '߽? 1Qὐ? 1Qf? '߽?{d޽f? '߽?.0ٽ?{d޽?{d޽?.0ٽ?-ٽ?- ?{?.?. ?{'? 0W ?{? 1P-'? 0W'? 0W? 1P-?/`D|?##ڽ ?Sо޽?♾ٽ?♾ٽ ?Sо޽?VaI߽ ?Sо޽?$jὝ?VaI߽?VaI߽?$j?(F὾?(8?Va 5?$@?$@?Va 5?S?Va 5?♾`?S?S?♾`?#[?A=`琽?fאi?=L` ?=L` ?fאi?ː?fאi?A "?ː?ː?A "? =? A?ːm߽?A P\Ὤ?A P\?ːm߽?fא߽?ːm߽?=Lqڽ?fא߽?fא߽?=Lqڽ?A=ٽ?`۽?Y'`u޽?` ۽?` ۽?Y'`u޽?)L޽?)L޽?Y'`u޽??X@?Y'`u޽?q??X@? N?X󏾠툽?Y' N?X󏾠툽?)2?Y' ?)2?u?Y' ?Y' ?u?>jŎpý>s >ʎ>S]Ž>s >jŎpý>@9@>s >S]Ž>V>|j`k>d,猽>|j`k>iЁ>d,猽>V>d,猽>iЁ>e `>V>猽>V>iЁ>猽>e `>猽>@9@>e `>@9@>S]Ž>S]Ž>ݽ>`˽>d,ݽ>'½>ݽ>d,ݽ>ݽ>iP当>`˽>ݽ>'½>|jp˽>d,ݽ>iP彔>'½>d,ݽ>|jp˽>ʎ>j`>jp馽>ʎ>ُp>j`>iP当>Pؽ>j当>jpý>Pؽ>jŎpý>ُp>ʎ>iЁ>ʎ>@9@>iЁ>iЁ>@9@>猽>Pؽ>iP当>jŎpý>jŎpý>iP当>S]Ž>S]Ž>iP当>ݽ ?'@ ?@ @1 ?S  ?`˽ ?d,ݽ ?'½ ?S]Ž ?+\p ?Qa ?׶0 ?+\p ?S  ?S  ?+\p ?S]Ž ?Qa ?pݽ ?S]Ž ?V@ ?pݽ ?V= ?S  ?@ @1 ?V= ?V@ ?gp ?ҕD ?ҕD ?l ۽ ?V@ ?l ۽ ?ҕD ?`˽ ?k@C ?Ҟ ?|j`k ?|j`k ?Ҟ ?V ?S  ?Ҟ ?ЕG ?Ҟ ?k@C ?ЕG ?'@ ?ЕG ?k@C ?ЕG ?'@ ?S  ?'@ ?k@C ?g` ?g` ?k@C ?|j`k ?l ۽ ?`˽ ?S]Ž ?ҕD ?d,ݽ ?`˽ ?|jp˽ ?d,ݽ ?gp ?'½ ?d,ݽ ?|jp˽ ?ҕD ?gp ?d,ݽ ?V ?V= ?g` ?V= ?@ @1 ?g` ?@ @1 ?'@ ?g` ?Qa ?׶0 ?V= ?׶0 ?S  ?V= ?pݽ ?Qa ?V= ?pݽ ?V@ ?S]Ž ?S]Ž ?V@ ?l ۽>j0$>jĽ>jۼ>j$>jĽ&?j&?j`&?j?j}&?j`?j}?>j`$>jĽ?j}&?j&?j`?>j`>j` a? ƻ ? p?e? ? p?? :\!? 쫽 ? p? a? ƻ? :? e? ? p?Ц> 浽q> ` ? p?\!? 쫽4?  ? p?q> `? ? p? ? p?,u> Ц> 浽 ? p?4?  ,u> ?;@?\}&?[^?\}&?} >?[^?[^?} >9)?[?} >?} 9)?[9)?[?} ?qY4?} ?d?)}P?qY4?qY4?d?)}P)?B?d?)}P>){)?B%^?{>Q? |^t?1=^t?1=Q? |Ch?,,@Ch?,,@Q? |!?"`3Q? |?\}&!?"`3!?"`3?\}&?;@?;@?[^?+0?+0?[^B?"X?[^9)?[B?"XB?"X9)?[.?N&Q9)?[?qY4.?N&Q.?N&Q?qY4)?B)?B>){_>*$>){m>D|[_>*$_>*$m>D|[m>m>D|[f>f{*m>m>f>f{*@>"=?OP?^t?1=Ch?,,@Ch?,,@!?"`3?"!?"`3?;@?+0.?N&Q)?B:?Z:?Z)?B>P)?B_>*$>P?OP?Ch?,,@?"!?"`3?+0Q?|HQ?|H?+0B?"X>P_>*$> `=> `=_>*$m>?"!?"`3p?"U!?"`3Q?|Hp?"UQ?|HB?"Xx?%x?%B?"Xt?PZB?"X.?N&Qt?PZ.?N&Q:?Zt?PZt?PZ:?Zn>b$0:?Z>Pn>b$0m>@>"=> `=> `=@>"=S>G$@?c??OP??"p?"UQ?|Hf3?~2kf3?~2kQ?|Hx?%x?%t?PZ?@ePϦ>e.t?PZn>b$0n>b$0>Pr>cpsr>cps>P> `=?c??"d? i ;d? i ;?"?i?"p?"U?i?ip?"Urd?ixp?"Uf3?~2krd?ixrd?ixf3?~2k?hf3?~2kx?%?h?hx?%ep?SjWep?SjWx?%?@ePϦ?@ePϦt?PZ`? i`? it?PZ>e.>e.n>b$0<>=ip˫<>=ip˫n>b$0r>cpsr>cps> `=>i>i> `=jY>?m5> `=S>G$@jY>?m5 >:`?/!>}p?Y4>|`Y4>|`́>{}[s>>9[s>>9́>{}x?|Px?|P;x?z}Pο?D`q?D`q;x?z}Pο?Z;x?z}Pοx,?l}0?Z?Zx,?l}0XW?qYIx,?l}0?} SXW?qYIXW?qYI?} S?H?} S?}`?H?H?}`t/?E?}`(R?R|Tt/?E >:`?Y4>|`8 >!Y4>|`[s>>98 >![s>>9x?|P ?1 x?|P?D`q ?1 ?D`q?Z ?l?ZXW?qYI ?l ?lXW?qYI?8)@b?8)@bXW?qYI?Ht/?E(R?R|Tv}?T,E(R?R|Tm_?|p@v}?T,E>@ >:`?8 >!8 >![s>>9>$[s>>9 ?1 >$>$ ?1 ,D?!F ?1 ?D`q,D?!F,D?!F?D`q ?l?8)@b?HA0?sc?Ht/?EA0?scA0?sct/?Ev}?T,E>$,D?!FN?4½,D?!F ?lN?4½N?4½ ?lJV?6 ?l?8)@bJV?6JV?6?8)@bA0?scA0?scv}?T,E??>@8 >!>%@칽>%@칽8 >!$>d&$>d&8 >!>$JV?6A0?sc? &? &A0?scVp?%dVp?%dA0?sc??$>d&>$z>-dz>-d>$f?p&p$½>$N?4½f?p&p$½N?4½JV?6%?>/ý%?>/ýJV?6? &Q>cpB>@>%@칽f?p&p$½N?4½%?>/ýVp?%d??<?3PѷQ>cpB>%@칽>4j৹>4j৹>%@칽`>8iA>%@칽$>d&`>8iA`>8iA$>d&#>Ei@$>d&z>-d#>Ei@#>Ei@z>-d"?Yj`z>-df?p&p$½"?Yj`"?Yj`f?p&p$½]?iOýf?p&p$½%?>/ý]?iOý]?iOý%?>/ý;?shý%?>/ý? &?j?j? &\S?i? &Vp?%d\S?i\S?iVp?%d[?ip[?ipVp?%d?IipPVp?%d<?3Pѷ?IipP?IipP<?3Pѷ?Oi?<?3Pѷ???Oi?;?shý%?>/ý?j)0?獾`?@ލpϮ?ύtϮ?ύt?@ލp]?卾n>nߍ@ON>Oݍ>㍾`>\r?č`<?䍾>T?wÍ ?䍾>=?ލp񱽄T?wÍ T?wÍ =?ލp񱽻?<]=?ލp_>?፾\?<]?<]_>?፾\}X?^P;_>?፾\? ㍾}X?^P;}X?^P;? ㍾?*Í? ㍾)0?獾`?*Í?*Í)0?獾`Ϯ?ύtϮ?ύt]?卾n>D߬]?卾nO?ލ>D߬O?ލHo>ߍV>D߬>D߬Ho>ߍV6]>F`Ho>ߍV>nߍ@O6]>F`6]>F`>nߍ@O> 7>nߍ@O>㍾`>> 7\r?č`~Й>D߬6]>F`6]>F`> 7 >F@ ;?v~P?<]2?}M?<]j?٫2?}M2?}Mj?٫N?3~j?٫}X?^P;N?3~N?3~}X?^P;?}P}X?^P;?̝驽?}P?̝驽?u?}P?}P?udJ?~PQ?uϮ?ύtdJ?~PQϮ?ύt>D߬dJ?~PQdJ?~PQ>D߬>~Й>~Й6]>F` >F@ ~?l䍾]? 0U#?㍾ ۾L?.䍾`p{?ٍe?ҍDe?ҍD{?ٍϔ?卾J#?㍾ ۾L?.䍾`pe?ҍDr>čB >ݍX(<>Թ >ݍX3>ݍ (<>Թ3>ݍ />ߍ (<>Թ(<>Թ/>ߍ x>&ʍX/>ߍ >:ߍ@Yx>&ʍX>:ߍ@Yn6?s獾x>&ʍXx>&ʍXn6?s獾w?ɷ`{n6?s獾?䍾w?ɷ`{w?ɷ`{?䍾p)?oÍ?䍾?鍾½p)?oÍ?鍾½~?l䍾]p)?oÍp)?oÍ~?l䍾]I?0Ík~?l䍾]#?㍾ ۾I?0ÍkI?0Ík#?㍾ ۾\:?ݭ$#?㍾ ۾e?ҍD\:?ݭ$e?ҍDϔ?卾J]?~ F$>P~P@r>čBH>O`r>čB(<>ԹH>O`(<>Թx>&ʍX>~żw?ɷ`{p)?oÍze?0Mp)?oÍI?0Íkze?0Mze?0MI?0Ík]?W~꽽]?W~꽽I?0Ík\:?ݭ$\:?ݭ$e?ҍD]?~ FH>O`(<>Թ>~ż>~żx>&ʍX-?}-?}x>&ʍXԁ?}濽x>&ʍXw?ɷ`{ԁ?}濽ԁ?}濽w?ɷ`{!?}w?ɷ`{ze?0M!?}!?}ze?0MB<?}0VB<?}0Vze?0Mϕ?}Pjze?0M]?W~꽽ϕ?}Pj]?W~꽽\:?ݭ$.?|\:?ݭ$]?~ F.?|?m ?c׶? P*?|? ?c׶?m?m*? ?*?|?? P?){PJ?D? P ?c׶?){PJ ?:I*?|p?1?@31?@3?0 ?:?0m?P³ ?:m?0m?P³?0[?|0?m?P³m?0O?dwQ ?M𰵽 ?C[P﷽ ?M𰵽?W+춽 ?C[P﷽ ?C[P﷽?W+춽?Ǔ@H?W+춽y ?Cp??Ǔ@H?Cp?g ?Ǔ6*?W+@g ?Ǔ6?C[*?W+@*?W+@?C[?Mδ?C[) ?Bw0.?Mδ>,?Kb>,?p?>,? I>,?Kb>,? I>,?ڶ>,? I>,?p?>,?_=>,?p?>,?]Z>,?_=>,?ڶ>,?h >,?Kb>,?p?>,?h >,?]ZD'?D{ ?S C ?e鷽# ?PDzw ?= x%?@? ?j6 ?Tj'? B ?T{ ?S D'?DC ?e鷽# ?PDz#?%?@?w ?= x ?a.D'?- ?a. ?9U@n ?9U@n_ ?%PN&?#) ?%@ ?j6j'? Bj'? B ?TD'?DD'?DC ?e鷽(?޶(?޶C ?e鷽#?#?# ?PDz%?@?%?@? ?a.D'?-D'?- ?9U@nN&?#){/?&z ?%@j'? B1?0ŹD'?D(?޶(?޶#?Z1?Վ Z1?Վ #?%?@?{/?&zj'? Bg,?Ng,?Nj'? B,?Zj'? BD'?D,?Z,?ZD'?D>,?ԅû>,?ԅûD'?D1?0Ź1?0Ź(?޶5,?-㎾P 5,?-㎾P (?޶Z1?Վ Z1?Վ %?@?5,?`)5,?`)%?@?,?hj@(%?@?D'?-,?hj@(,?hj@(D'?->,?׿ﭽ>,?׿ﭽD'?-,?h!D'?-N&?#),?h!,?h!N&?#)+?Z@1+?Z@1N&?#)>,?& (?Բ ?"pϱ?қo ?"pϱ ?˧p ?қo?қo ?˧p ?,?& )?Y(0Y-?[ʑpT)?Y(0Y9'?[v>+pԽu>{au>{au>dڒu>/]u>/]u>dڒv>ov>+pԽu>dڒu>{a>{a>uw S>/]>/]>uw S>`>9Qݽ>uw S>aN>aN>uw S>{a>ѕE><#v>}jv>}j⽥E><#t>|j⽥E><#>ѕ>Cϕ>|j⽥E><#s>Cϕ>|j09>Cᘾsv>}j0> =]9>Cᘾs>|j0> =]u>/]9>Cᘾsv>}j09>Cᘾsu>/]G>Oz?>Opi>Opz?>Opi3>OS>OpzG>Oz}>O?>OpiG>OzM>OC}>On>Od>Opz3>OS>O8Žn>Od3>OS>O8Ž3>OS}>O?>Opi}>O3>OS>O8Ž}>Om>O8ŽM>OCm>O8Ž}>Ou>O0߽!M>O0u>O ^>O0߽!M>O0u>O0߽>O0߽>O[!M>O0u>O ^!M>O0>O[>Oڊ3>O@Ww>O`A`u>Oڊ>OG`3>O@Wwu>Oڊ3>O@Ww>Oڊ>O`A`3>O@Ww>OG`[>2 F> l>Ro0>Ro0F> lF>n?>Ro0$>`h[>2 :>nrd$>`h>Ro0E>n`_(H>3)^:>nrd(H>3)^$>`h:>nrdQ>2 <> l>Ro0>Ro0<> l;>n?>Ro0>`hQ>2 0>nrd>`h>Ro0;>n`_=>3)^0>nrd=>3)^>`h0>nrd.%>2h<:> PA>RoA>Ro<:> P:>n0?A>Ro>B,.%>2heX>n>B,A>Ro";>cO>B,eX>neX>n";>n";>cOk/>2hzD> P>Ro>RozD> P4E>n0?>RoY>C,k/>2h罣b>nY>C,>Ro`E>cOY>C,b>nb>n`E>n`E>cO%;>n_~>n(jH:>7^~>n(jO>dH:>7^G>6㚾lO>d~>n(j~>n(j:>nWG>6㚾l:>nW:>n=G>6㚾lG>6㚾l:>n=g;>!$bE>n_>me;E>D A_;E>D A_>meD>i嗾`;k>me >n`~D>i嗾`;kD>i嗾`;k >n`~a!> >n`~@>n0a!>gC>`{a!>@>n0#>Jo v@>^Y>>n8@>^Y#>Jo vW~>)[0W~>)[0#>Jo v3>⇚#>Jo vA>n03>⇚A>n0D?>>P3>⇚A>n0轰;>n @D?>>Po>n5u>GPAI>npC5u>GPAG>0*I>npC*>nP5u>GPAo>n>F 5u>GPA*>nPT>!o>F 齥*>nP>F T>!oJ>u.=>@g>p >~`+v >~`+v>p>`Jw>p>x>`Jw>`Jw>xED>㨍0e;>0=>_>%08=>]`> A_>%08_>%08]`> AF>p<]`> A?>ZнF>pʨfߘ> fm>Hߘ>  >fm>Hfm>H > H>@ >E> l H>@E>%h H>@g >m H>@gfm>*@t >m >mfm>*@t>ufm>*@tI>P>uD>ҁ?>@C> w?>@1{>xC> w1{>xĢ>tC> wC> wĢ>t E>g E>pC>ZПĢ>ᮍpĢ>ᮍpC>ZП1{>;1{>;C>ZП?>pC>ZПD>车?>p:>p8>ZП>ᮍp𽆘>ᮍp8>ZПp>;p>;8>ZПh5>p8>ZПl:>h5>p%:>ځ#2>,H>*x#2>u>@v,H>*xu>@v>@v,H>*x,H>*x>@v:>g>dv5>dPٳ.>Pu.>Pu5>dPٳ5>5>dPٳ.>gc 5>5>.>gc >Ψ>R;>d>0;>d>nQ>0򳽙>0򳽙>nQ;>>nQ>d+;>}>dpj>d,b>b>>d,>R>d,b>`P>R>Rb>`P𬽆}>py>rp񼽓>d0Ľt;>e>d0Ľt;>et;>et;>et;>e>t;>ey>ep>u>Op馽ӹ>0qw>އ㹽ӹ>0q]>򭎾ưw>އ㹽]>򭎾ư$w>5w>އ㹽w>އ㹽$w>5>W78>4 ý>6f>ci`<½>ci`<½>6f*>:O0ϲ*>:O0ϲ>6f>` }>6fO>4 >` }H>rg&>.Zo>9k>9k&>.ZobG>KM x&>.ZoW>򏍾`}bG>KM xbG>KM xW>򏍾`}>sJ>z f>@Frh>WR`mh>WR`m>@Fr9I>Oy>@Frg>w ]9I>Oy9I>Oyg>w ]/>큽K;>R`>E{>^錾v>E>y{>^錾v>y>`m{>^錾v{>^錾v>`mD>j >Č >[}K,>lEx >[}:> mK,>lExK,>lEx:> mW>'h:> m04>`gW>'h?>P>PC;0>O>PC >=O;0>O;0>O >=O<>6` >=OhG>m <>6`w->QT>MU𽨊>K r>K rT>MU%>QT>MUj>\}K%>Q%>Qj>\}K9S> 齿> 5W>wpl>tK`W>wp>> Ռr>E>0> Ռr:>˸p)>$@[>op>op)>$@[U>O)>$@[> U>OU>O󽴁> i>dL/X>-P؃>7pʸb>I@ʻb>I@ʻ؃>7pʸ>ʌ؃>7pʸv> 걽>ʌ>ʌv> 걽8h><>#>k>H >H >k&>A>k5>m l&>A&>A5>m l>\P >{կB>0T>1Ѝ>1ЍB>0TS>GȹB>0Tj>纽S>GȹS>Gȹj>纽>>𛽽{>/4>i>|FP4>i">>|FP>|FP">n>Ol">'*>s漽n>Olu>jv>4>jv>4>4>jv>`u>j`4>`u>j`4>j`4>`4>Vo>V4>V@o>Vo>V@4>V@o>S o>S]Žu>S o>S]Žu>S]Žu>S 4>V@o>V@4>͉@o>V@o>͉@4>͉@4>͉o>͉4>Vo>͉o>V4>V4>}jn4>}jSo>}jn4>}jSv>}jSo>}jno>}jnv>}jSo>}jp˽v>}jSv>}jp˽o>}jp˽o>}j`kv>}j`ko>}j`v>}j`kv>}j*o>}j`o>}j`v>}j*4>}j`v>}j*4>}j*4>}j`o>}j`ko> Lv>}j`ko> Lv> Lv>}j`ko>2Ľo>}jp˽v>2Ľo>}jp˽v>}jp˽v>2Ľo>`˽o>&'2Ľu>`˽o>&'2Ľv>&'2Ľu>`˽o>&' Lo>Ҟv>&' Lo>Ҟu>Ҟv>&' Lo>S]Žo>`˽u>S]Žo>`˽u>`˽u>S]Žo>Ҟo>S u>Ҟo>S u>S u>Ҟo> Lo>&' Lv> Lo>&' Lv>&' Lv> Lo>&'2Ľo>2Ľv>&'2Ľo>2Ľv>2Ľv>&'2Ľv>v>}jS4>v>}jS4>}jS4>v>}j*v>`4>}j*v>`4>`4>}j*?S]Ž?S  ?S]Ž?S  ?S  ?S]Ž?md?m0 ?md?m0 ?m0 ?md?m޽?m˽ ?m޽?m˽ ?m˽ ?m޽?m˽?2Ľ ?m˽?2Ľ ?2Ľ ?m˽? L?md ? L?md ?md ? L?%'2Ľ?`˽ ?%'2Ľ?`˽ ?`˽ ?%'2Ľ?Ҟ?%' L ?Ҟ?%' L ?%' L ?Ҟ?S ?Ҟ ?S ?Ҟ ?Ҟ ?S ?`˽?S]Ž ?`˽?S]Ž ?S]Ž ?`˽?%' L? L ?%' L? L ? L ?%' L?2Ľ?%'2Ľ ?2Ľ?%'2Ľ ?%'2Ľ ?2Ľ?2㽐?m޽ ?2㽐?m޽ ?m޽ ?2㽐?m0?2৆ ?m0?2৆ ?2৆ ?m0>S >S]Žo>S >S]Žo>S]Žo>S >m0>mdo>m0>mdo>mdo>m0>m˽>m޽o>m˽>m޽o>m޽o>m˽>2Ľ>m˽o>2Ľ>m˽o>m˽o>2Ľ>md> Lo>md> Lo> Lo>md>`˽>&'2Ľo>`˽>&'2Ľo>&'2Ľo>`˽>&' L>Ҟo>&' L>Ҟo>Ҟo>&' L>S]Ž>`˽o>S]Ž>`˽o>`˽o>S]Ž>Ҟ>S o>Ҟ>S o>S o>Ҟ> L>&' Lo> L>&' Lo>&' Lo> L>&'2Ľ>2Ľo>&'2Ľ>2Ľo>2Ľo>&'2Ľ>2৆>m0o>2৆>m0o>m0o>2৆>m޽>2o>m޽>2o>2o>m޽O>S O>S]Ž>S O>S]Ž>S]Ž>S O>m0O>md>m0O>md>md>m0O>m˽O>m޽>m˽O>m޽>m޽>m˽O>2ĽO>m˽>2ĽO>m˽>m˽>2ĽO>mdO> L>mdO> L> L>mdO>`˽O>&'2Ľ>`˽O>&'2Ľ>&'2Ľ>`˽O>&' LO>Ҟ>&' LO>Ҟ>Ҟ>&' LO>S]ŽO>`˽>S]ŽO>`˽>`˽>S]ŽO>ҞO>S >ҞO>S >S >ҞO> LO>&' L> LO>&' L>&' L> LO>&'2ĽO>2Ľ>&'2ĽO>2Ľ>2Ľ>&'2ĽO>2৆O>m0>2৆O>m0>m0>2৆O>m޽O>2>m޽O>2>2>m޽?S]Ž?S ?S]Ž?S ?S ?S]Ž?m޽?m˽?m޽?m˽?m˽?m޽?md?m0?md?m0?m0?md? L?md? L?md?md? L?m˽?2Ľ?m˽?2Ľ?2Ľ?m˽?Ҟ?%' L?Ҟ?%' L?%' L?Ҟ?%'2Ľ?`˽?%'2Ľ?`˽?`˽?%'2Ľ?S ?Ҟ?S ?Ҟ?Ҟ?S ?`˽?S]Ž?`˽?S]Ž?S]Ž?`˽?%' L? L?%' L? L? L?%' L?2Ľ?%'2Ľ?2Ľ?%'2Ľ?%'2Ľ?2Ľ?2?m޽?2?m޽?m޽?2?m0?2৆?m0?2৆?2৆?m0>当>j&?当>j&?j&?当>j`>`&?j`>`&?`&?j`&?V@ ?V@&?V ?V@ ?V&?V ?S]Ž ?S >S]Ž ?S >S >S]Ž&?̉@ ?̉@&?V@ ?̉@ ?V@&?V@&?V ?V&?̉ ?V ?̉&?̉ ?|jp˽>|jp˽ ?|jnཔ>|jp˽>|jS ?|jn ?|jnཔ>|jS&?|jnཔ>|jS&?|jS&?|jn&?|j`&?|j* ?|j`&?|j*>|j* ?|j` ?|j`>|j* ?|j`k>|j*>|j`k ?|j`k ? L ?|j`k> L ?|j`k>|j`k> L ?|jp˽ ?2Ľ>|jp˽ ?2Ľ>2Ľ>|jp˽ ?%'2Ľ ?`˽>%'2Ľ ?`˽>`˽>%'2Ľ ?Ҟ ?%' L>Ҟ ?%' L>%' L>Ҟ ?S  ?Ҟ>S  ?Ҟ>Ҟ>S  ?`˽ ?S]Ž>`˽ ?S]Ž>S]Ž>`˽ ?2Ľ ?%'2Ľ>2Ľ ?%'2Ľ>%'2Ľ>2Ľ ?%' L ? L>%' L ? L> L>%' L>`>|j*&?`>|j*&?|j*&?`>|jS㽔>&?|jS㽔>&?&?|jS&?̉ ?̉&?|j` ?̉ ?|j`&?|j` ?|jn ?̉@&?|jn ?̉@&?̉@&?|jnརg?9ߏ04g?9ߏJg?&(g?9ߏJg?&Ug?&(g?&(g?&Ug?n04g?&Ug?nJg?n04>,?&Ug?&U>,?nJg?&Ug?nJ>,?nJ>,?&(g?&(>,?9ߏ04g?&(g?9ߏ04>,?9ߏ04>,?n04g?n04>,?&(g?n04g?&(>,?&(>,?9ߏJg?9ߏJ>,?&Ug?9ߏJg?&U>,?&U>,?nJg?nJ>,?n04g?nJg?n04>,?n04>,?9ߏ04g?9ߏ04>,?9ߏJg?9ߏ04g?9ߏJ>,?9ߏJu>Dϕu>󍾀>Cϕu>󍾀>󍾀>Cϕu>gpzu>gڊ>fpzu>gڊ>fڊ>fpzu>g0߽u>g8Ž>f0߽u>g8Ž>f8Ž>f0߽v>}j0v>}j`k>|j0v>}j`k>|j`k>|j0v>}jp˽v>}j⽔>|jp˽v>}j⽔>|j⽔>|jp˽u>&/]u>/]>&/]u>/]>/]>&/]u>Ҟu>`쩽>Ҟu>`쩽>`쩽>Ҟu>u>`˽>u>`˽>`˽>u>"[u>&"[>"[u>&"[>&"[>"[v>}j`kv> L>|j`kv> L> L>|j`kv>2Ľv>}jp˽>2Ľv>}jp˽>|jp˽>2Ľv>&' Lu>Ҟ>%' Lu>Ҟ>Ҟ>%' Lu>`˽v>&'2Ľ>`˽v>&'2Ľ>%'2Ľ>`˽v> Lv>&' L> Lv>&' L>%' L> Lv>&'2Ľv>2Ľ>%'2Ľv>2Ľ>2Ľ>%'2Ľu>󍾀u>O ^>󍾀u>O ^>O ^>󍾀u>O`A`u>"[>O`A`u>"[>"[>O`A`u>g8Žu>O8Ž>f8Žu>O8Ž>O8Ž>f8Žu>Opzu>gpz>Opzu>gpz>fpz>Opz?͗0?Ǐ?jŎpý?Ǐ? =?jŎpý?jŎpý? =?b&?Ǐz?-粽?jp馽?-粽?]?jp馽?jp馽?]?jŎpý?]??jŎpý?jŎpý??͗0?ʮ?VbW?jp馽?VbW?( PA?jp馽?jp馽?( PA?Ǐz?JÐ`?&`绽?jŎpý?ʮ?jp馽?&?&?jp馽?Ʈ?벽? z?>Β0?@=? ?S]Ž? z?@A?>Β0?@A?둾X?>Β0?>Β0?둾X?jp馽?jp馽?둾X?Ʈ?&`绽?഻?jŎpý?഻?w둾`'?jŎpý?jŎpý?w둾`'?S]Ž?S]Ž?w둾`'?@=? ?0?S]Ž?0?0͒!?S]Ž?S]Ž?0͒!?>Β0?|jp˽?|jS??%'2Ľ?2Ľ???2Ľ?Gڽ?2Ľ?|jp˽?Gڽ?^@`?] ߽??ʕ`m޽?7Ε1ݽ?S]Ž?M`Oڽ?NIC۽?S]Ž? qz?2֔P?J?J?2֔P??2֔P?^@`??] ߽?ʕ`m޽??7Ε1ݽ?3۽?S]Ž?S]Ž?3۽?p ڽ?HP/ݽ?x)07߽?J?J?x)07߽? qz?NIC۽?HP/ݽ?S]Ž?p ڽ?y ڽ?S]Ž?y ڽ?M`Oڽ?S]Ž?S]Ž?>Β0?S ?S ?>Β0?Ҟ?^@/?] ;?Ҟ?Ҟ?] ;?ʕp? qɏ?2֔Pc?>Β0?>Β0?2֔Pc?Ҟ?2֔Pc?^@/?Ҟ?7Ε?3G?j`?j`?3G?p@?p@?y j?j`?j`?y j?HP~?HP~?y j?M?HP~?x)0?>Β0?>Β0?x)0? qɏ?M?NI?HP~?%' L?j`? L? L?j`?|j`k?j`?Ӛ ;?|j`k?`?|j*?|j`k?jŎp馽?jp馽?jŎpý?jŎpý?j?jpý?V`? ߽?J?㐾1ݽ?͐۽?jŎpý?jŎpý?͐۽?V ڽ?V ڽ?/!ڽ?jŎpý?jŎpý?b&?JÐ`? ߽?`m޽?J?N?돾P?^?^?돾P?J?돾P?V`?J?/!ڽ?`Oڽ?jŎpý?`Oڽ?sڽ?jŎpý?jŎpý?sڽ?j?j?,v޽?^?sڽ?,0ܽ?j?j?,0ܽ?,v޽?p?㐾?j?㐾?͐G?j?j?͐G?V@?V@?/!j?j?V/? ;?jp馽?jp馽? ;?p?Ə?돾Pc?jp馽?돾Pc?V/?jp馽?/!j?0?j?jp馽?, ō?Ə?,@?, ō?j?j?, ō?jp馽?HP/ݽ?J?S]Ž?S]Ž?J?jŎpý?J?`m޽?jŎpý?jŎpý?`m޽?㐾1ݽ?>Β0?jp馽?HP~?HP~?jp馽?j?jp馽?p?j?Ӛ ߽??{`?Ӛ ߽? ޽??|jp˽??Gڽ?? ޽?Gڽ?ܙ`Oڽ?݄C۽??z?P???P???P?{`? ޽?󚾠۽?Gڽ?Gڽ?󚾠۽?/ ڽ?JP/ݽ?e07߽???e07߽?z?Gڽ?ܙ`Oڽ??݄C۽?JP/ݽ???ʕ`m޽?%'2Ľ?%'2Ľ?ʕ`m޽?`˽?ʕ`m޽?S]Ž?`˽?e0?ɏ?j`?ܙ?݄?j`?ɏ?Pc?j`?j`?Pc?Ӛ ;?Ӛ ;?Pc?{/? O?󚾰G?Ӛ ;?Ӛ ;?󚾰G?/@?݄?GR?j`?j`?GR?O0M?ʕp?7Ε?Ҟ?Ҟ?7Ε?%' L?7Ε?j`?%' L?j`?O0M?e0?/@?Gj?Ӛ ;?Ӛ ;?Gj?j`?Gj?ܙ?j`?|j`k?Ӛ ;?`?Ӛ ;?j`?`?HP~?j?j`՚?&`绽՚?@՚?S]Ž՚?~՚?&՚?W>|՚?&՚?#Ǯ՚?W>|՚?W>|՚?#Ǯ՚?VbW՚? ՚?؏`՚?mtJ՚?؏`՚?~w՚?mtJ՚?&`绽՚?S]Ž՚?4ϐ û՚?򬏾-՚?7 ՚?W>|՚?7 ՚?}՚?W>|՚?W>|՚?}՚?mtJ՚?}՚?c~՚?mtJ՚?mtJ՚?c~՚? ՚?VbW՚? 0՚?W>|՚? 0՚?a܏0 ՚?W>|՚?W>|՚?a܏0 ՚?򬏾-՚?u՚?u՚?S ՚?u՚?N/ ՚?S ՚?S ՚?N/ ՚?W>|՚?N/ ՚?~՚?W>|՚?۠Q՚?Ò涽՚?S]Ž՚?Ò涽՚?В b՚?S]Ž՚?S]Ž՚?В b՚?S ՚?В b՚?jɒ@՚?S ՚?S ՚?jɒ@՚?u՚?w둾`'՚?3i՚?S]Ž՚?3i՚?mqr՚?S]Ž՚?S]Ž՚?mqr՚?۠Q՚?p՚?㐾՚?/!j՚?㐾՚?͐G՚?/!j՚?/!j՚?͐G՚?V@՚?V/՚? ;՚?S ՚?S ՚? ;՚?p՚?NϏ՚?돾Pc՚?W>|՚?W>|՚?돾Pc՚?S ՚?돾Pc՚?V/՚?S ՚?/!j՚?՚?V՚?՚?sJ՚?V՚?sJ՚?,@՚?V՚?,@՚?))0M՚?V՚?))0M՚?W>|՚?V՚?͐۽՚?V ڽ՚?S]Ž՚?`m޽՚?㐾1ݽ՚?S]Ž՚?S]Ž՚?㐾1ݽ՚?͐۽՚?돾P՚?V`՚?`m޽՚?V`՚? ߽՚?`m޽՚?/!ڽ՚?`Oڽ՚?sڽ՚?,0ܽ՚?)) ݽ՚?V՚?V՚?)) ݽ՚?W>-߽՚?̉՚?t2՚?V՚?t2՚?՚?V՚?V՚?՚?՚?՚?t2՚?՚?՚?B6 ՚?S ՚?S ՚?B6 ՚?m՚?e՚?앾ي՚?՚?՚?앾ي՚?՚?d50՚?m̐՚?S ՚?m̐՚?7`/՚?S ՚?m՚?ܓً՚?S ՚?S ՚?ܓً՚?ؓ@h՚?Ҟ՚?ڕp`՚?՚?ؓ@h՚? ՚?S ՚?S ՚? ՚?d50՚? N՚?5,՚?Ҟ՚?5,՚?r0ϐ՚?Ҟ՚?r0ϐ՚?i3՚?Ҟ՚?Ҟ՚?i3՚?ڕp`՚?nٽ՚?S]Ž՚?𔾰0ٽ՚?S]Ž՚?`˽՚?𔾰0ٽ՚?𔾰0ٽ՚?`˽՚?t2Oٽ՚?`˽՚?Gڽ՚?t2Oٽ՚?t2Oٽ՚?Gڽ՚?Mڽ՚?U ՚?i՚?GRpܽ՚?GRpܽ՚?i՚?ڕ`՚?ݽ՚?Gڽ՚?Х޽՚?Gڽ՚?GRpܽ՚?Х޽՚?GRpܽ՚?ڕ`՚?Х޽՚?ݽ՚?앾۽՚?Gڽ՚?Gڽ՚?앾۽՚?Mڽ՚?5@՚?7P՚?ؓ0޽՚?ؓ0޽՚?7P՚?̉@՚?̉@՚?7P՚? ՚?nٽ՚?B6Kڽ՚?S]Ž՚?S]Ž՚?B6Kڽ՚?`۽՚?ؓ0޽՚?S]Ž՚?ܓܽ՚?S]Ž՚?`۽՚?ܓܽ՚?ؓ0޽՚?߽՚?5@՚? ՚?U ՚?̉@՚?U ՚?GRpܽ՚?̉@՚?%'2Ľ՚?2Ľ՚? 1ݽ՚?S ՚?7`/՚?Ҟ՚?Ҟ՚?7`/՚? N՚?%' L՚?O0M՚? L՚? L՚?O0M՚?|j`k՚?󚾰G՚?՚?̉՚?՚?t2՚?̉՚?W>-߽՚?N՚?V՚?V՚?N՚?V@՚?N՚?̉@՚?V@՚?W>|՚?mtJ՚?V՚?mtJ՚?/!ڽ՚?V՚?/!ڽ՚?sڽ՚?V՚?돾P՚?`m޽՚?N՚?N՚?`m޽՚?̉@՚?4ϐ û՚?S]Ž՚?mtJ՚?mtJ՚?S]Ž՚?/!ڽ՚?S]Ž՚?V ڽ՚?/!ڽ՚?@՚?w둾`'՚?S]Ž՚?S]Ž՚?ؓ0޽՚?`m޽՚?`m޽՚?ؓ0޽՚?̉@՚?S ՚?p՚?/!j՚?՚?S ՚?V՚?S ՚?/!j՚?V՚?/!j՚?V՚?V՚?{`՚?Ӛ ߽՚?̉@՚?̉@՚?Ӛ ߽՚?`m޽՚?`m޽՚? 1ݽ՚?̉@՚? 1ݽ՚?|jp˽՚?̉@՚?̉@՚?|jp˽՚?|jn՚?ܙ`Oڽ՚?݄C۽՚?Gڽ՚?z՚?P՚?GRpܽ՚?GRpܽ՚?P՚?̉@՚?P՚?{`՚?̉@՚? 1ݽ՚?󚾠۽՚?/ ڽ՚?e07߽՚?z՚?GRpܽ՚?݄C۽՚?GRpܽ՚?Gڽ՚?GRpܽ՚?O ݽ՚?e07߽՚?/ ڽ՚?Gڽ՚? 1ݽ՚?|jp˽՚? 1ݽ՚?2Ľ՚? 1ݽ՚?Gڽ՚?%'2Ľ՚?Gڽ՚?`˽՚?%'2Ľ՚?p՚? ՚?󚾰G՚?{/՚?Ӛ ;՚?O0M՚?e0՚?ɏ՚?O0M՚?0՚?t՚?՚?ɏ՚?Pc՚?O0M՚?O0M՚?Pc՚?{/՚?Ӛ ;՚?p՚?O0M՚?p՚?󚾰G՚?O0M՚?O0M՚?󚾰G՚?|j`k՚?󚾰G՚?̉՚?|j`k՚?̉՚?|j`՚?|j`k՚?t՚?GR՚?՚?՚?GR՚?O0M՚?՚?e՚?Ҟ՚?Ҟ՚?e՚?%' L՚?e՚?՚?%' L՚?%' L՚?՚?O0M՚?/@՚?Gj՚?󚾰G՚?󚾰G՚?Gj՚? ?jڱ ?ji} ?j`} ?j`?j`?jPƦ} ?j` ?ji} ?j} ?j`?jѦ?j?jYX?j`Q?j࣯Q?j࣯X?j`t?j t?j X?j`nj?j3?jY?jPƦq?jt?j nj?j3i?jФnj?j36g?j0úi?jФ ?ji?jۺ} ?j?jYQ?j࣯?jPƦQ?j࣯?jޫ?jPƦ?j~?j`} ?j`} ?j`~?j`#?j#?j ?jڱ} ?j`?jޫq?jr?jPƦ?jPƦq?jr} ?j`} ?j`q?jr?jѦ1?jPʼ?j|?j?j|*?j9ý?j?j*?j9ý[?jЀ½*?j9ý?jpý[?jЀ½?jpý?j[?jЀ½[?jЀ½?j彚?j@ý6g?j0ú?jॾi?jФi?jФ?jॾ1?jPʼ?jॾ?j|1?jPʼ} ?j彚?j@ý?j彲?jۺN?jР} ?j} ?jN?jР,?j ½} ?j,?j ½?j@ý} ?p} ?j} ?V@} ?V@} ?j} ?V} ?j} ?cjP} ?V} ?V} ?cjP} ? +? Ұ? ? ?? pQD? 𪵽? `$D? 𪵽? ? `$O? ? `$ө? H? po? #? ? +? Ұ#? D? 𪵽;@? O? ? ;@? O+? Ұ? `$1? p#?? pQO? ? `n? `$? `$? `n1? p#u? ? 0 ½? Ͷc? /)? 𫹽y? Pny? Pn)? 𫹽? q)? 𫹽zD? r? q? qzD? re? pOq? P? Z˫? 65-? ? ? ? ? `? v? 5-? ? ? po? 0? ? 0 v? ? ө? H? `$d? P? `$? Ͷd? P? Ͷ? qu? u? ? qj(? @f}? `j(? @f? qe? p? 꾽? q? 꾽}? `? q? ? u ? ` ? 0 ½? ? Ͷ? E+? f? Ͷ? ͶE+? fd? Pc? /y? Pn? Ӵy? Pn? Z? Ӵ? Ӵ? Z? p-˫? 6? Z? ҩ? Z ? `? ҩ? Z $? `[? p-Oq? PC? p? Z? ZC? p $? `[? u S? ? ` S? Z*?  ? ` ? `Z*? ? ҩ?Xp?B?}p??ZP³B?}p?b ?}`?ZP³?ZP³b ?}` ?Z`M ?Z`Mb ?}`z?Z`尽b ?}`F?}`*z?Z`尽z?Z`尽F?}`*n?Z`n?Z`F?}`*?ZPTF?}`*2?}?ZPT?ZPT2?}?Z6?Z62?}?Z;2?}p?}Ϋ?Z;?Z;p?}ΫV`?ZhV`?Zhp?}Ϋ5?Zp?}Ϋ?}P5?Z5?Z?}P?ZF?ZF?}P ?Z?}P3?} ?Z ?Z3?}?Z0䩽?Z0䩽3?}+{?Z@3?}-a?}2+{?Z@+{?Z@-a?}2L?ZGL?ZG-a?}2?Zª-a?}2,?}+?Zª?Zª,?}+?Zpj?Zpj,?}+j?Z=,?}+A?}`Ԭj?Z=j?Z=A?}`Ԭ?Z8?Z8A?}`Ԭ_?ZVA?}`Ԭ|?}_?ZV_?ZV|?}o?Z0o?Z0|?}Z?Z`谽|?}S?}PZ?Z`谽Z?Z`谽S?}PK?ZPK?ZPS?}PzB?ZųS?}PrE?}dzzB?ZųzB?ZųrE?}dz??.\p?rE?}dz]B?}p???.\p?$?j1p??Xp? ?2?Xp??ZP³ ?2 ?2?ZP³?2+?ZP³ ?Z`M?2+?2+ ?Z`M?2 ?Z`Mz?Z`尽?2?2z?Z`尽 ?2`Tz?Z`尽n?Z` ?2`T ?2`Tn?Z`?2 n?Z`?ZPT?2 ?2 ?ZPT?2`䬽?ZPT?Z6?2`䬽?2`䬽?Z6Џ?2૽?Z6?Z;Џ?2૽Џ?2૽?Z;f?2?Z;V`?Zhf?2f?2V`?Zhh:?2@XV`?Zh5?Zh:?2@Xh:?2@X5?Z ?20ک5?Z?ZF ?20ک ?20ک?ZF6?2?ZF ?Z6?26?2 ?Z?2 u ?Z?Z0䩽?2 u?2 u?Z0䩽x?2Џ?Z0䩽+{?Z@x?2Џx?2Џ+{?Z@UH?2ݩ+{?Z@L?ZGUH?2ݩUH?2ݩL?ZG?2p]L?ZG?Zª?2p]?2p]?Zªm?2 ?Zª?Zpjm?2 m?2 ?Zpjt?2諽?Zpjj?Z=t?2諽t?2諽j?Z=k?2j?Z=?Z8k?2k?2?Z8~?2p?Z8_?ZV~?2p~?2p_?ZVc?20`_?ZVo?Z0c?20`c?20`o?Z0M?2°o?Z0Z?Z`谽M?2°M?2°Z?Z`谽'>?28Z?Z`谽K?ZP'>?28'>?28K?ZP4?2@K?ZPzB?Zų4?2@4?2@zB?Zų]2?E4p?zB?Zų??.\p?]2?E4p?:?p?$?j1p?\-?b!$?j1p? ?2\-?b! ?2?2+\-?b!\-?b!?2+ ?b!`⯽?2+?2 ?b!`⯽?2 ?2`T ?b!`⯽ ?b!`⯽ ?2`T?b!3 ?2`T?2 ?b!3?2 ?2`䬽?b!3?b!3?2`䬽?b!?2`䬽Џ?2૽?b!Џ?2૽f?2?b!?b!f?2,?`ef?2h:?2@X,?`e,?`eh:?2@XC?b!3h:?2@X ?20کC?b!3 ?20ک6?2C?b!3C?b!36?2ȓ?b! 6?2?2 uȓ?b! ?2 ux?2Џȓ?b! ȓ?b! x?2Џ.?b!x?2ЏUH?2ݩ.?b!UH?2ݩ?2p].?b!.?b!?2p]?f%?2p]m?2 ?f%?f%m?2 Z?b!m?2 t?2諽Z?b!t?2諽k?2Z?b!Z?b!k?2e?b!Xk?2~?2pe?b!X~?2pc?20`e?b!Xe?b!Xc?20`6?b!6c?20`M?2°6?b!6M?2°'>?286?b!66?b!6'>?28!?벽'>?284?2@!?벽!?벽4?2@(?p?4?2@]2?E4p?(?p?:?p?\-?b!o5?&\-?b! ?b!`⯽o5?&o5?& ?b!`⯽?`ȭ ?b!`⯽?b!3?`ȭ?`ȭ?b!3ʳ?0a?b!3?b!ʳ?0aʳ?0a?b!,?`e,?`eC?b!3ϼ?dC?b!3ȓ?b! ϼ?dϼ?dȓ?b! jN? ȓ?b! .?b!jN? jN? .?b!?f%?f%Z?b!M?lZ?b!e?b!XM?le?b!X6?b!6M?lM?l6?b!6!?벽R?p?:?p?'M?8_:?p?o5?&'M?8_'M?8_o5?&4?p谽4?p谽o5?&?`ȭʳ?0a,?`eD?lD?l,?`eϼ?djN? ?f%?p?p?f%?p?p?f%M?lM?l!?벽?p3?p3!?벽?d>!?벽(?p??d>'M?8_4?p谽 @?"pڰ @?"pڰ4?p谽!?g'l4?p谽?`ȭ!?g'l!?g'l?`ȭ`?"W?`ȭʳ?0a`?"W`?"Wʳ?0a?g'u?g'uʳ?0ae?"/ʳ?0aD?le?"/e?"/D?l{?g'#{?g'#D?l?"ݧD?lϼ?d?"ݧ?"ݧϼ?dp?g' Чϼ?djN? p?g' Чp?g' ЧjN? /?"jN? ?p/?"/?"?p?"@'?p?p?"@'?"@'?pv?g'v?g'?pD?"`୽?pM?lD?"`୽D?"`୽M?l?"M?l?p3?"?"?p3v ?g'?p3?d>v ?g'v ?g'?d> ?w&p?2g?^7p?R?p?b?5@jR?p?'M?8_b?5@jb?5@j'M?8_W?5'M?8_ @?"pڰW?5W?5 @?"pڰZD?5믽ZD?5믽 @?"pڰ!?g'l!?g'l`?"WH ?5PʬH ?5Pʬ`?"W?5m?5m`?"W?g'u?g'ue?"/?5;?5;e?"/S?5nS?5ne?"/{?g'#{?g'#?"ݧ?50?50?"ݧ?5b?5b?"ݧp?g' Чp?g' Ч/?"D7?5 ݧD7?5 ݧ/?"[?5s[?5s/?"[?5A/?"?"@'[?5A[?5A?"@')?5C)?5C?"@'v?g'v?g'D?"`୽kJ?5ӬkJ?5ӬD?"`୽C*?5@VC*?5@VD?"`୽?5D?"`୽?"?5?5?"! ?5Ю! ?5Ю?"v ?g'ZD?5믽!?g'lx1?hH/x1?hH/!?g'lH ?5Pʬ?5m?g'u@?hH @?hH ?g'u?5;S?5n{?g'#@?hH @?hH {?g'#?50?5bp?g' Чo?hH0Do?hH0Dp?g' ЧD7?5 ݧ)?5Cv?g'ik?hHHik?hHHv?g'kJ?5Ӭ! ?5Юv ?g'M ?hH0kM ?hH0kv ?g' ?Fp?v ?g' ?w&p? ?Fp?>u?i?2g?^7p?l?LSpe2g?^7p?b?5@jl?LSpel?LSpeb?5@jGa?LSb?5@jW?5Ga?LSGa?LSW?51N?LSѯW?5ZD?5믽1N?LSѯ1N?LSѯZD?5믽x1?hH/x1?hH/H ?5Pʬ?ri`?ri`H ?5Pʬ?LS7H ?5Pʬ?5m?LS7?LS7?5m@?hH @?hH ?5;Ǎ?LSǍ?LS?5;X?LS`$?5;S?5nX?LS`$X?LS`$S?5n@?hH @?hH ?50?LS/?LS/?50Ϫ?LS?50?5bϪ?LSϪ?LS?5bo?hH0Do?hH0DD7?5 ݧR5?LSR5?LSD7?5 ݧ?LS`$D7?5 ݧ[?5s?LS`$?LS`$[?5s?riϨ[?5s[?5A?riϨ?riϨ[?5A̔?ri٩[?5A)?5C̔?ri٩̔?ri٩)?5Cik?hHHik?hHHkJ?5Ӭ??ri0|??ri0|kJ?5Ӭ!?LS'kJ?5ӬC*?5@V!?LS'!?LS'C*?5@V?ri C*?5@V?5?ri ?ri ?5- ?ri~?5! ?5Ю- ?ri~- ?ri~! ?5ЮM ?hH0k>u?i?l?LSpep?jpap?jpal?LSped?jl?LSpeGa?LSd?jd?jGa?LSQ?jƯGa?LS1N?LSѯQ?jƯQ?jƯ1N?LSѯ=7?j`1N?LSѯx1?hH/=7?j`=7?j`x1?hH/?ri`?ri`?LS7~?j!~?j!?LS7y?j橽?LS7@?hH y?j橽y?j橽@?hH ?jܨ@?hH Ǎ?LS?jܨ?jܨǍ?LSY?j Ǎ?LSX?LS`$Y?j Y?j X?LS`$I!?j nX?LS`$@?hH I!?j nI!?j n@?hH ?j@?hH ?LS/?j?j?LS/Ϫ?j`?LS/Ϫ?LSϪ?j`Ϫ?j`Ϫ?LSo?jϪ?LSo?hH0Do?jo?jo?hH0DU4?j no?hH0DR5?LSU4?j nU4?j nR5?LS?j R5?LS?LS`$?j ?j ?LS`$?riϨ̔?ri٩ik?hHH g?j! g?j!ik?hHH??ri0|??ri0|!?LS'a?j`a?j`!?LS'?ri - ?ri~M ?hH0k ?jpa ?jpaM ?hH0k ?jp?M ?hH0k ?Fp? ?jp?>?Xp?]B?}p?B?Z]B?}p?rE?}зB?ZB?ZrE?}зK?Z1rE?}зU?}K?Z1K?Z1U?}#[?Z#[?ZU?}0p?ZU?}r?}@ẽ0p?Z0p?Zr?}@ẽ?Z*r?}@ẽl?}ü?Z*?Z*l?}ü?ZPH?ZPHl?}ü?ZBl?}ü?}?ZB?ZB?}G?ZG?Z?}?Z?}9?}?Z?Z9?}L?Z8L?Z89?}{?Z9?}{?}`j{?Z{?Z{?}`j?Z{?}`j?}?Z?Z?}r?Zr?Z?} ?Z@7?}!?}濽 ?Z@7 ?Z@7!?}濽6?Zм6?Zм!?}濽`?Zp!?}濽#v?}@`?Zp`?Zp#v?}@4?Z@4?Z@#v?}@?ZF#v?}@w?}𜼽?ZF?ZFw?}𜼽??Z(??Z(w?}𜼽?Z뺽w?}𜼽$?}&?Z뺽?Z뺽$?}&?Z?Z$?}& ?Z@.$?}& ?}Y ?Z@. ?Z@. ?}Y#?ZP#?ZP ?}Y?-\p? ?}YB?}p??-\p?0?k1p?>?Xp?4?2 ж>?Xp?B?Z4?2 ж4?2 жB?Z>?20SB?ZK?Z1>?20S>?20SK?Z1N?2ȹK?Z1#[?ZN?2ȹN?2ȹ#[?Z~d?2*#[?Z0p?Z~d?2*~d?2*0p?Z?2Pr0p?Z?Z*?2Pr?2Pr?Z*?2?Z*?ZPH?2?2?ZPH?2 ?ZPH?ZB?2 ?2 ?ZB?2x?ZBG?Z?2x?2xG?Z7?2&G?Z?Z7?2&7?2&?ZI?2?ZL?Z8I?2I?2L?Z8hz?2L?Z8{?Zhz?2hz?2{?Z?2 {?Z?Z?2 ?2 ?Z?2?Zr?Z?2?2r?ZH ?20r?Z ?Z@7H ?20H ?20 ?Z@7;?2p! ?Z@76?Zм;?2p!;?2p!6?Zм1h?2r6?Zм`?Zp1h?2r1h?2r`?Zp)?2`?Zp4?Z@)?2)?24?Z@3?24?Z@?ZF3?23?2?ZF?2pg?ZF??Z(?2pg?2pg??Z(?2??Z(?Z뺽?2?2?Z뺽?20?Z뺽?Z?20?20?Zv?2F?Z ?Z@.v?2Fv?2F ?Z@. ?2¶ ?Z@.#?ZP ?2¶ ?2¶#?ZPB#?E4p?#?ZP?-\p?B#?E4p??o?0?k1p?$?YЂ0?k1p?4?2 ж$?YЂ$?YЂ4?2 ж>5?b!4?2 ж>?20S>5?b!>?20SN?2ȹ>5?b!>5?b!N?2ȹg?fpͼN?2ȹ~d?2*g?fpͼg?fpͼ~d?2*?b!K~d?2*?2Pr?b!K?2Pr?2?b!K?b!K?2?b!Pm?2?2 ?b!Pm?2 ?2x?b!Pm?b!Pm?2x)?b!?2x7?2&)?b!7?2&I?2)?b!)?b!I?2Ī?YpI?2hz?2Ī?YpĪ?Yphz?2?b!hz?2?2 ?b!?2 ?2?b!?b!?2*??2H ?20*?*?H ?20qV?b!PH ?20;?2p!qV?b!P;?2p!1h?2rqV?b!PqV?b!P1h?2r!?1h?2r)?2!?!?)?2?b!k)?23?2?b!k3?2?2pg?b!k?b!k?2pg ?b!ú?2pg?2 ?b!ú?2?20 ?b!ú ?b!ú?20K,?b!?20v?2FK,?b!v?2F ?2¶K,?b!K,?b! ?2¶v8?p? ?2¶B#?E4p?v8?p?$?YЂ>5?b!g?fpͼg?fpͼ?b!Kz?p'?b!K?b!Pmz?p'?b!Pm)?b!z?p'z?p')?b!Fc?)?b!Ī?YpFc?Ī?Yp?b!*?*?qV?b!P!?!??b!k?%?b!k ?b!ú?%?% ?b!úl4? ?b!úK,?b!l4?l4?K,?b!v8?p??p??o?v?8v?8?o?!?pЕ?o?$?YЂ!?pЕ!?pЕ$?YЂb?l0c$?YЂg?fpͼb?l0cb?l0cg?fpͼz?p' ?8z?p'Fc?Fc?Ī?Yp?p A½?p A½Ī?Yp5?pĪ?Yp*?5?p5?p*?ǖ?pP*?!?ǖ?pPǖ?pP!?N?l !??%N?l N?l ?%l4?l4?v8?p?M?d?v?8!?pЕ?"p?"p!?pЕG?" ż!?pЕb?l0cG?" żG?" żb?l0c8y?g'߾8y?g'߾b?l0c?"pqb?l0cz?p'?"pq?"pqz?p' ?8 ?8Fc?Y?"pi½Y?"pi½Fc??"½Fc??p A½?"½?"½?p A½?g'pT½?p A½5?p?g'pT½?g'pT½5?pk?":5?pǖ?pPk?":k?":ǖ?pP?"Dǖ?pPN?l ?"D?"DN?l ?"?"N?l C<?g'@cN?l l4?C<?g'@cC<?g'@cl4?P?"Ʒl4?M?d?P?"ƷP?"ƷM?d?[?w&p?l ?^7p??p? ?5?p?v?8 ?5 ?5v?8 ?5۸v?8?"p ?5۸ ?5۸?"pD?5D?5?"p+?53?"pG?" ż+?53+?53G?" żVK?5VK?5G?" ż8y?g'߾8y?g'߾?"pq]?5B]?5B?"pq?5C?5C?"pq?5`½?"pq ?8?5`½?5`½ ?88?5½ ?8Y?"pi½8?5½8?5½Y?"pi½q?5½q?5½Y?"pi½?5@ýY?"pi½?"½?5@ý?5@ý?"½u?5½u?5½?"½?g'pT½?g'pT½k?":DU?5 ½DU?5 ½k?":C?5=C?5=k?":t?50;k?":?"Dt?50;t?50;?"D?5?5?"D3 ?5?"D?"3 ?53 ?5?"[+?5([+?5(?"C<?g'@cC<?g'@cP?"Ʒ|W?5и|W?5иP?"Ʒb?5b?5P?"Ʒ[?w&p?VK?58y?g'߾k?hH:k?hH:8y?g'߾]?5Bu?5½?g'pT½?hH ½?hH ½?g'pT½DU?5 ½[+?5(C<?g'@cK?iHPK?iHPC<?g'@c|W?5иb?5[?w&p?m?Fp?` ?i`?l ?^7p? ?ri`l ?^7p? ?5 ?ri` ?ri` ?5e ?rip鸽 ?5 ?5۸e ?rip鸽e ?rip鸽 ?5۸~?ri` ?5۸D?5~?ri`~?ri`D?5!?LS0WD?5+?53!?LS0W!?LS0W+?53>?riス+?53VK?5>?riス>?riスVK?5k?hH:k?hH:]?5Bg?rig?ri]?5B,?ri]?5B?5C,?ri,?ri?5C?LSZ½?5C?5`½?LSZ½?LSZ½?5`½R5?LS0½?5`½8?5½R5?LS0½R5?LS0½8?5½o?LSOý8?5½q?5½o?LSOýo?LSOýq?5½L?riýq?5½?5@ýL?riýL?riý?5@ý?LSOý?5@ýu?5½?LSOý?LSOýu?5½?hH ½?hH ½DU?5 ½X?LSZ½X?LSZ½DU?5 ½Ǎ?LS`DU?5 ½C?5=Ǎ?LS`Ǎ?LS`C?5=?riC?5=t?50;?ri?rit?50;?LSPGt?50;?5?LSPG?LSPG?5?LS ⽽?53 ?5?LS ⽽?LS ⽽3 ?5A7?rit3 ?5[+?5(A7?ritA7?rit[+?5(K?iHPK?iHP|W?5иGa?LSP븽Ga?LSP븽|W?5иl?LSp|W?5иb?5l?LSpl?LSpb?5m?Fp?~?ri`!?LS0Wa?jfa?jf!?LS0W>?riス>?riスk?hH:g?j\g?j\k?hH:g?ri,?ri?LSZ½?jv½?jv½?LSZ½T4?jý?LSZ½R5?LS0½T4?jýT4?jýR5?LS0½o?j nýR5?LS0½o?LSOýo?j nýo?j nýo?LSOýL?riýL?riý?LSOý?j ný?j ný?LSOýI!?jý?LSOý?hH ½I!?jýI!?jý?hH ½Y?jv½?hH ½X?LSZ½Y?jv½Y?jv½X?LSZ½?jX?LSZ½Ǎ?LS`?j?jǍ?LS`?ri?ri?LSPG~?j\~?j\?LSPG?j?LSPG?LS ⽽?j?j?LS ⽽A7?ritA7?ritK?iHPQ?jиQ?jиK?iHPd?j@K?iHPGa?LSP븽d?j@d?j@Ga?LSP븽p?jpGa?LSP븽l?LSpp?jpp?jpl?LSpt?jp?l?LSpm?Fp?t?jp?33?hڍp?iD? p?*-?ۍ@ѲiD? p?@? *-?ۍ@Ѳ@? s6? Pﱽ*-?ۍ@Ѳ*-?ۍ@Ѳs6? PﱽT?/ۍs6? Pﱽ;%? YT?/ۍT?/ۍ;%? Y?ۍa;%? Y ? ٮ?ۍa ? ٮ? t?ۍa?ۍa? t?ۍ0? tp? `2?ۍ0p? `2(? ?ۍ0?ۍ0(? 4X?ݍ(? w? )4X?ݍw? )G? l4X?ݍ4X?ݍG? l?ۍ)G? l? P⨽?ۍ)? P⨽E? ?ۍ)?ۍ)E? ?ۍE? Ϫ? r ?ۍϪ? rXu? ?ۍ ?ۍXu? G?/ۍYXu? @? P⨽G?/ۍYG?/ۍY@? P⨽?ۍ6@? P⨽? l?ۍ6? l? )?ۍ6?ۍ6? )?/ۍq? )u? ?/ۍq?/ۍqu? ?ۍ&u? -? `2?ۍ&-? `2e? t?ۍ&?ۍ&e? tJ?gۍ0e? tH? ٮJ?gۍ0H? ٮc0? YJ?gۍ0J?gۍ0c0? Y&&?ۍ c0? Y*? Pﱽ&&?ۍ *? Pﱽ? &&?ۍ &&?ۍ ? ?ۍp?? 6? p? ?ۍp??ۍ04X?ݍ U?֍`R U?֍`R4X?ݍ?ۍ)J?gۍ0&&?ۍ 9?֍0f ?Gp?33?hڍp?]?Í`33?hڍp?*-?ۍ@Ѳ]?Í`]?Í`*-?ۍ@Ѳ?Í;?Í;*-?ۍ@Ѳ/?Í@Ȱ*-?ۍ@ѲT?/ۍ/?Í@Ȱ/?Í@ȰT?/ۍ?ÍPhT?/ۍ?ۍa?ÍPh?ÍPh?ۍae?Í"e?Í"?ۍa!?Í?ۍa?ۍ0!?Í!?Í?ۍ0S?ÍS?Í?ۍ0f?Í?ۍ0 U?֍`Rf?Íf?Í U?֍`R:?Ío:?Ío U?֍`RK ?Í0 U?֍`R?ۍ)K ?Í0K ?Í0?ۍ)=?Í =?Í ?ۍ)V?Í?ۍ) ?ۍV?ÍV?Í ?ۍmz?Ímz?Í ?ۍWJ?Í ?ۍG?/ۍYWJ?ÍWJ?ÍG?/ۍY?ÍlG?/ۍY?ۍ6?Íl?Íl?ۍ6?Íp?Íp?ۍ6!?Í򫽰?ۍ6?/ۍq!?Í!?Í򫽃?/ۍq<?Í?/ۍq?ۍ&<?Í<?Í?ۍ&ށ?Í@ށ?Í@?ۍ&f?Ía?ۍ&J?gۍ0f?Íaf?ÍaJ?gۍ0P?ÍpJ?gۍ09?֍0fP?ÍpP?Íp9?֍0fA?Í3A?Í39?֍0fd7?Í9?֍0f&&?ۍ d7?Íd7?Í&&?ۍ k3?ōp?&&?ۍ ?ۍp?k3?ōp?p?p? ?Gp??yų ?Gp?]?Í`?yų?yų]?Í`i ?yQ]?Í`?Í;i ?yQi ?yQ?Í;*?x`鰽?Í;/?Í@Ȱ*?x`鰽*?x`鰽/?Í@Ȱ0?y/?Í@Ȱ?ÍPh0?y0?y?ÍPh?zX?ÍPhe?Í"?zX?zXe?Í"?y ;e?Í"!?Í?y ;?y ;!?Í܇?y@!?ÍS?Í܇?y@܇?y@S?Íf`?ymS?Íf?Íf`?ymf`?ymf?Í5?ypŪf?Í:?Ío5?ypŪ5?ypŪ:?Ío?y0K:?ÍoK ?Í0?y0K?y0KK ?Í0R?yK ?Í0=?Í R?yR?y=?Í ?y詽=?Í V?Í?y詽?y詽V?Í{?yV?Ímz?Í{?y{?ymz?ÍM?yJmz?ÍWJ?ÍM?yJM?yJWJ?Í ?yĪWJ?Í?Íl ?yĪ ?yĪ?Ílw?ypl?Íl?Ípw?yplw?ypl?Íp?xP??Íp!?Í?xP??xP?!?ÍG?z9!?Í<?ÍG?z9G?z9<?Í?yW<?Íށ?Í@?yW?yWށ?Í@p?yށ?Í@f?Íap?yp?yf?Ía[?yP簽f?ÍaP?Íp[?yP簽[?yP簽P?ÍpGL?yNP?ÍpA?Í3GL?yNGL?yNA?Í3C?yPóA?Í3d7?ÍC?yPóC?yPód7?Í??Mp?d7?Ík3?ōp???Mp?B?}p?p?p?,?}dzp?p??yų,?}dz,?}dz?yų?}?yųi ?yQ?}i ?yQ*?x`鰽?}?}*?x`鰽?}@*?x`鰽0?y?}@0?y?zX?}@?}@?zX?}pH?zX?y ;?}pH?}pH?y ;2v?}뫽?y ;܇?y@2v?}뫽܇?y@f`?ym2v?}뫽2v?}뫽f`?ym"?} f`?ym5?ypŪ"?} 5?ypŪ?y0K"?} "?} ?y0K?}0?y0KR?y?}0R?y?y詽?}0?}0?y詽g?}(?y詽{?yg?}({?yM?yJg?}(g?}(M?yJ ?}`תM?yJ ?yĪ ?}`ת ?}`ת ?yĪ?}Ϋ ?yĪw?ypl?}Ϋw?ypl?xP??}Ϋ?}Ϋ?xP?w?}?xP?G?z9w?}G?z9?yWw?}w?}?yWr?}?yWp?yr?}r?}p?yU?}p?y[?yP簽U?}[?yP簽GL?yNU?}U?}GL?yNrE?}dzGL?yNC?yPórE?}dzrE?}dzC?yPó]B?}p?C?yPó??Mp?]B?}p?i?⍾?? 붽*?Xٍ@? 붽*? *?Xٍ@*?Xٍ@*? G?܍׺*? c0? `%G?܍׺c0? `%H? ХG?܍׺G?܍׺H? ХC?܍ЅH? Хe? @ C?܍Ѕe? @ ?JC?܍Ѕ?Ju? g3?Xٍ:u? g? 0U3?Xٍ:? 0U ?3?Xٍ: ?@? \?܍@? Xu? 0\?܍Xu? 0? ½\?܍? ½E? 0:)?XٍE? 0? :)?Xٍ? G? :)?Xٍ:)?XٍG? ?܍G? w? 0U?܍w? 0U(? g?܍?܍(? g ?܍[(? gp? L ?܍[p? L?P ?܍[?P ? Х?Xٍ) ? Х;%? `%?Xٍ);%? `%s6? ?Xٍ)?Xٍ)s6? >D?፾?s6? @? 붽>D?፾?;0?ʍp?i?⍾?*?Xٍ@*?Xٍ@G?܍׺K?̍ K?̍ G?܍׺6k?ҍG?܍׺C?܍Ѕ6k?ҍ6k?ҍC?܍Ѕ?̍ C?܍Ѕ?J?̍ ?̍ ?J3?Xٍ:3?Xٍ: ?ka?ҍ0 ?\?܍ka?ҍ0ka?ҍ0\?܍%?͍\?܍? ½%?͍%?͍? ½:)?Xٍ:)?Xٍ?܍g?̍g?̍?܍|?ҍE?܍ ?܍[|?ҍE|?ҍE ?܍[~?ҍ份 ?܍[?P ~?ҍ份~?ҍ份?P ?Xٍ)?Xٍ)>D?፾?"?̍ն"?̍ն>D?፾?@'?͍?;0?ʍp?*?Xٍ@:?:?*?Xٍ@K?̍ K?̍ 6k?ҍ=s?p˻=s?p˻6k?ҍ?̍ ?̍ 3?Xٍ:!?!?3?Xٍ:(3?^3?Xٍ:ka?ҍ0(3?^(3?^ka?ҍ0X?0ka?ҍ0%?͍X?0%?͍:)?Xٍ$?X$?X:)?Xٍg?̍g?̍|?ҍE0? 0? |?ҍE?༻|?ҍE~?ҍ份?༻?༻~?ҍ份?~?ҍ份?Xٍ)???Xٍ)"?̍նd??p?;0?ʍp?B?ǣ0;0?ʍp?:?B?ǣ0B?ǣ0:?MK?ǣ.MK?ǣ.:?Z?ǣP:?K?̍ Z?ǣPZ?ǣPK?̍ o?ǣ캽K?̍ =s?p˻o?ǣ캽o?ǣ캽=s?p˻?ǣ)?ǣ)=s?p˻X?ƣH=s?p˻?̍ X?ƣHX?ƣH?̍ ?ǣ@C?̍ !??ǣ@C?ǣ@C!??ƣ?ƣ!?R?ǣ!?(3?^R?ǣR?ǣ(3?^aL?ǣ`:aL?ǣ`:(3?^ {?ǣ(3?^X?0 {?ǣ {?ǣX?0?ǣ?ǣX?0?ǣpX?0%?͍?ǣp?ǣp%?͍?ǣp;%?͍$?X?ǣp;?ǣp;$?X5?ǣ`5?ǣ`$?X}`?ǣ@$?Xg?̍}`?ǣ@}`?ǣ@g?̍?ǣEg?̍0? ?ǣE?ǣE0? ?ǣ K?ǣ K0? J?ǣ-0? ?༻J?ǣ-J?ǣ-?༻?ǣ?ǣ𺽘?༻?ȣP?༻??ȣP?ȣP?, ?ǣ2, ?ǣ2?~?ǣ?"?̍ն~?ǣ~?ǣ"?̍ն!?ܥp?"?̍ն@'?͍?!?ܥp?]B?}p?d??p?rE?}зd??p?B?ǣ0rE?}зrE?}зB?ǣ0S?}ǸB?ǣ0MK?ǣ.S?}ǸMK?ǣ.Z?ǣPS?}ǸS?}ǸZ?ǣP|?}`oZ?ǣPo?ǣ캽|?}`oo?ǣ캽?ǣ)|?}`o|?}`o?ǣ)K?}Ъ?ǣ)X?ƣHK?}ЪX?ƣH?ǣ@CK?}ЪK?}Ъ?ǣ@C8?}PS?ǣ@C?ƣ8?}PS?ƣR?ǣ8?}PS8?}PSR?ǣ:a?} LR?ǣaL?ǣ`::a?} LaL?ǣ`: {?ǣ:a?} L:a?} L {?ǣ??} {?ǣ?ǣ??}?ǣ?ǣp??}??}?ǣp?}p?ǣp?ǣp;?}p?ǣp;5?ǣ`?}p?}p5?ǣ`p?}௾5?ǣ`}`?ǣ@p?}௾}`?ǣ@?ǣEp?}௾p?}௾?ǣE?}`6?ǣE?ǣ K?}`6?}`6?ǣ KQ?}Й?ǣ KJ?ǣ-Q?}ЙJ?ǣ-?ǣQ?}ЙQ?}Й?ǣ?}?ǣ?ȣP?}?}?ȣPd ?} ?ȣP, ?ǣ2d ?} , ?ǣ2~?ǣd ?} d ?} ~?ǣB?}p?~?ǣ!?ܥp?B?}p?R? l?tl??džӳl?tK? K? l?tR? K? ? ճ?džӳe? TD?^~? ~? D?^?΃ ~? ?΃ ? ճ? ճ?΃ ?džӳy? }X|?~}? }? X|?~e? Te? TX|?~D?^}? y? y? }y? y? p?y? }y? }y? p?y?|p?? p?? ?|`?? H?!~? H?!~?|`?? ? 9? TH?!~H?!~9? T?߀0V?@?߀0V? ? ?߀0V9? T? ? ճ?@?@? ճh?aسl?h?aسR? R? h?aس? ճy? p?y? jy?|p?}? PϵE|?~õy? jE|?~õy?|p?y? j}? Pϵe? `*E|?~õE|?~õe? `*8?+v?8?+~? t~? t8?+e? `*~? t? Щv?v?? Щ&?K? 0Ŷ&?? ЩK? 0Ŷ?d0ɶ&??dž𪶽{?- ĶR? 0ŶR? 0Ŷ{?- ĶK? 0Ŷ{?- Ķ?d0ɶK? 0ŶR? 0Ŷ? Щ?dž𪶽9? `*Z? ? t? tZ? ?΃r? t?΃r? Щ? Щ?΃r?dž𪶽? }0kF?~ õ? Pϵ? PϵF?~ õ9? `*9? `*F?~ õZ? ? Pϵ? j? }0k? j? p?? }0k? }0k? p??|p?Y'?%' LY'? LY'?ҞY'? LY'?mdY'?ҞY'?ҞY'?mdY'?m0Y'? P~Y'?0Y'?m0Y'?ҞY'?m0Y'?/ɏY'?/ɏY'?m0Y'?0Y'?JOY'?eGY'?2৆Y'?2৆Y'?eGY'?@Y'?@Y'?jY'?2৆Y'?/ɏY'?GPcY'?ҞY'?ҞY'?GPcY'?ᏽY'?jY'?쉽Y'?2৆Y'?2৆Y'?쉽Y'?m0Y'?쉽Y'? P~Y'?m0Y'?cPY'?ҒڵY'?2৆Y'?{PY'?VɏY'?/!PcY'?$OY'?.?GY'?V৆Y'?V৆Y'?.?GY'?@Y'?B쉽Y'?萾P~Y'?2৆Y'?萾P~Y'?͐0Y'?2৆Y'?2৆Y'?͐0Y'?cPY'?͐0Y'?VɏY'?cPY'?{PY'?vY'?VɏY'?vY'?؏Y'?VɏY'?VɏY'?؏Y'?DY'?ӄᏽY'?$OY'?V˽Y'?V˽Y'?$OY'?V৆Y'?@Y'?돾jY'?V৆Y'?V৆Y'?돾jY'?2৆Y'?돾jY'?B쉽Y'?2৆Y'?Y'?UY'?VɏY'?VɏY'?UY'?cPY'?ᏽY'?JOY'?ҞY'?JOY'?2৆Y'?ҞY'?ҞY'?2৆Y'?S Y'?2৆Y'?ҒڵY'?S Y'?S Y'?ҒڵY'?S]ŽY'?ҒڵY'?ǩY'?S]ŽY'?ǩY'?u``Y'?S]ŽY'?S]ŽY'?u``Y'? `ﺽY'?jY'?{PY'?V˽Y'?DY'?`Y'?VɏY'?VɏY'?`Y'?Y'?/!PcY'?ӄᏽY'?{PY'?{PY'?ӄᏽY'?V˽Y'? `ﺽY'?Q컽Y'?S]ŽY'?S]ŽY'?Q컽Y'?V˽Y'?V˽Y'?Q컽Y'?Y'?Y'?$`Y'?V˽Y'?V˽Y'?$`Y'?jY'?͐07߽Y'?VzY'?VY'?.?۽Y'? ڽY'?V˽Y'?V˽Y'? ڽY'?돾ڽY'?VY'?ӄY'?$޽Y'?S]ŽY'?BڽY'?`˽Y'?`˽Y'?BڽY'?萾P/ݽY'?VzY'?/!PY'?VY'?VY'?/!PY'?ӄY'?VY'?$޽Y'?V˽Y'?$޽Y'?.?۽Y'?V˽Y'?`˽Y'?萾P/ݽY'?VY'?萾P/ݽY'?͐07߽Y'?VY'?돾ڽY'?BڽY'?V˽Y'?V˽Y'?BڽY'?S]ŽY'?e۽Y'? ڽY'?`˽Y'?`˽Y'? ڽY'?ڽY'?VY'?Y'?J޽Y'? P/ݽY'?07߽Y'?m޽Y'?m޽Y'?07߽Y'?2Y'?2Y'?07߽Y'?/zY'?VY'?J޽Y'?`˽Y'?J޽Y'?e۽Y'?`˽Y'?/zY'?GPY'?2Y'?2Y'?GPY'?VY'?GPY'?Y'?VY'?m˽Y'?ڽY'?m޽Y'?ڽY'? P/ݽY'?m޽Y'?ڽY'?ڽY'?m˽Y'?ڽY'?m˽Y'?`˽Y'?m˽Y'?2ĽY'?`˽Y'?`˽Y'?2ĽY'?%'2ĽY'?@b(?@b(?G?Y'?@b(?G?Y'?gP(?G?(?:Y'?gPY'?gP(?:Y'?͐(?:(?\ѐbY'?͐(?\ѐb(?k搾Y'?͐Y'?͐(?k搾Y'?k搾 ֌(?k搾(?͐ 8Y'?k搾 ֌Y'?k搾 ֌(?͐ 8Y'?\ѐ`kY'?\ѐ`k(?͐ 8Y'?:@B(?͐ 8(?gY'?:@BY'?:@B(?gY'?G(?g(?kY'?GY'?G(?kY'?kY'?0(?0(?GY'?0(?GY'?gP(?G(?:Β%?S]Ž%?S]Ž%?>Β%?0%?GPc%? L%?/ɏ%? L%?|j`k%?/ɏ%?JO%?eG%?`%?`%?eG%?@%?`%?Ӛ%? P~%? P~%?0%?|j`k%?|j`k%?0%?/ɏ%?@%?j%?`%?`%?j%?{%?|j`k%?|j*%? P~%?|j*%?`%? P~%?GPc%?ܙ/%? L%? L%?ܙ/%?݄ ;%?݄ ;%?JO%? L%? L%?JO%?`%?{%?Ӛ%?`%?bҕP~%?30%?Ҟ%?Ҟ%?30%?pɏ%?M/%?NI ;%? z%? z%?NI ;%?HO%?HO%?x)G%?J`%?J`%?x)G%? q@%?^@%?]%?`%?`%?]%?bҕP~%?Ҟ%?%' L%?bҕP~%?%' L%?`%?bҕP~%?pɏ%?y Pc%?Ҟ%?Ҟ%?y Pc%?S %?S %?y Pc%? z%?y Pc%?M/%? z%? q@%?2֔j%?J`%?J`%?2֔j%?`%?2֔j%?^@%?`%?H޽%?x)۽%?S]Ž%?S %? z%?S]Ž%?S]Ž%?x)۽%?`˽%?`˽%?x)۽%? q ڽ%? q ڽ%?2֔ڽ%?`˽%?bҕP/ݽ%?307߽%?݄ ߽%?݄ ߽%?307߽%?pz%?݄ ߽%?2Ľ%?bҕP/ݽ%?bҕP/ݽ%?2Ľ%?]C۽%?pz%?y P%?݄ ߽%?݄ ߽%?y P%?%?%?y P%?M`%?NI ߽%?H޽%?%?%'2Ľ%?`˽%?2Ľ%?M`%?NI ߽%?%?2֔ڽ%?^@`Oڽ%?`˽%?`˽%?^@`Oڽ%?2Ľ%?^@`Oڽ%?]C۽%?2Ľ%?e۽%? ڽ%?2Ľ%?2Ľ%? ڽ%?ڽ%?ӚC۽%? P/ݽ%?|jp˽%?݄ ߽%?J޽%?2Ľ%?J޽%?e۽%?2Ľ%?|jp˽%? P/ݽ%?|jS%? P/ݽ%?07߽%?|jS%?|jS%?07߽%?%?%?07߽%?/z%?/z%?GP%?%?%?GP%?݄ ߽%?GP%?ܙ`%?݄ ߽%?ڽ%?{`Oڽ%?2Ľ%?2Ľ%?{`Oڽ%?|jp˽%?|jp˽%?{`Oڽ%?ӚC۽%?jŎp馽%?j`%?jp馽%?V%?%?J`%?J`%?%?萾P~%?萾P~%?͐0%?jŎp馽%?jŎp馽%?͐0%?Vɏ%?Vɏ%?/!Pc%?jŎp馽%?jŎp馽%?bX%?JÐƮ%?N%?돾j%?^`%?^`%?돾j%?J`%?돾j%?V%?J`%?/!Pc%?/%?jŎp馽%?/%?s%?jŎp馽%?jŎp馽%?s%?j`%?j`%?,%?^`%?s%?,ˍ%?j`%?j`%?,ˍ%?,%?pܽ%?㐾 ݽ%?%?0@gܽ%?NЯڽ%?jŎpý%?V`Oڽ%?C۽%?jŎpý%?㐾 ݽ%?͐07߽%?%?%?͐07߽%?Vz%?Vz%?/!P%?%?%?/!P%?j%?NЯڽ%?돾ڽ%?jŎpý%?돾ڽ%?V`Oڽ%?jŎpý%?/!P%?%?j%?%?jֽ%?j%?jpý%?0@gܽ%?jŎpý%?,|޽%?0@gܽ%?jֽ%?jֽ%?0@gܽ%?jpý%?萾P~%?jŎp馽%?J`%?jŎp馽%? z%?J`%?J`%? z%?HO%?C۽%?pܽ%?jŎpý%?pܽ%?%?jŎpý%?jŎpý%?%?S]Ž%?S]Ž%?%?H޽Y'?ܓY'?Y'?S Y'?`˽Y'?e۽Y'?%'2ĽY'?&Y'?ǮY'?S Y'?~ ûY'?&`绽Y'?7涽Y'?&`绽Y'?#@Y'?7涽Y'?7涽Y'?#@Y'?Vb`'Y'?uY'?؏Y'?VvY'?؏Y'?~ Y'?VvY'?VvY'?~ Y'?mt04Y'?&Y'?S Y'?4ϐY'?7涽Y'?} bY'?VvY'?} bY'?c@Y'?VvY'?VvY'?c@Y'?uY'?Vb`'Y'? iY'?7涽Y'? iY'?a܏rY'?7涽Y'?7涽Y'?a܏rY'?򬏾QY'? Y'?u`Y'?S]ŽY'?u`Y'?N/wY'?S]ŽY'?S]ŽY'?N/wY'?7涽Y'?N/wY'?~ ûY'?7涽Y'?۠-Y'?Ò Y'?S Y'?Ò Y'?ВY'?S Y'?S Y'?ВY'?S]ŽY'?ВY'?jɒ~Y'?S]ŽY'?S]ŽY'?jɒ~Y'? Y'?w둾WY'?30Y'?S Y'?30Y'?mq0 Y'?S Y'?S Y'?mq0 Y'?۠-Y'?pܽY'?㐾 ݽY'?V@Y'?W>ܽY'?NЯڽY'?7涽Y'?V`OڽY'?C۽Y'?S]ŽY'?㐾 ݽY'?͐07߽Y'?V@Y'?V@Y'?͐07߽Y'?VzY'?VzY'?/!PY'?V@Y'?NЯڽY'?돾ڽY'?7涽Y'?7涽Y'?돾ڽY'?S]ŽY'?돾ڽY'?V`OڽY'?S]ŽY'?/!PY'?`Y'?V@Y'?`Y'?s3Y'?V@Y'?s3Y'??`7߽Y'?V@Y'??`7߽Y'?@&PݽY'?V@Y'?V@Y'?@&PݽY'?VvY'?@&PݽY'?W>ܽY'?VvY'?͐0Y'?VɏY'?S Y'?VY'?Y'?Y'?Y'?㐾0MY'?S Y'?S Y'?㐾0MY'?͐0Y'?VɏY'?/!PcY'?S Y'?S Y'?/!PcY'?VvY'?VvY'?/!PcY'?/Y'?Y'?돾jY'?Y'?돾jY'?VY'?Y'?/Y'?sY'?VvY'?Y'?Y'?,Y'?Y'?VvY'?,Y'?,ˍY'?,Y'?VvY'?V@Y'?̉@Y'?a`Y'?a`Y'?̉@Y'?05Y'?ʫY'?U6Y'?V@Y'?0޽Y'?앾߽Y'?݄ ߽Y'?݄ ߽Y'?앾߽Y'?05Y'?d5NڽY'?mٽY'?S]ŽY'?mٽY'?'ϔP/ٽY'?S]ŽY'?U6Y'?`Y'?V@Y'?`Y'?ܓХ޽Y'?V@Y'?iUpٽY'?iKڽY'?`˽Y'?iKڽY'?ڕ`۽Y'?`˽Y'?`˽Y'?ڕ`۽Y'?ܽY'?ؓݽY'?۽Y'?S]ŽY'?S]ŽY'?۽Y'?d5NڽY'?'ϔP/ٽY'?iUpٽY'?`˽Y'?GRpY'?ҞY'?|j`kY'?|j`kY'?ҞY'?%' LY'?ʫ,Y'?S Y'?apOY'?S Y'?ҞY'?apOY'?apOY'?ҞY'?PY'?ҞY'?GRpY'?PY'?5Y'?WY'?GRpY'?GRpY'?WY'?ڕmY'?@hY'?GRpY'?ًY'?GRpY'?ڕmY'?ًY'?@hY'?앾 Y'?GRpY'?GRpY'?앾 Y'?PY'?LIY'?IҔ~Y'?̉Y'?ʫ,Y'?U64Y'?S Y'?U64Y'?p`Y'?S Y'?p`Y'?ܓY'?S Y'?ؓeY'?يY'?ܓY'?ܓY'?يY'?LIY'?IҔ~Y'?5Y'?̉Y'?5Y'?GRpY'?̉Y'?GRpY'?|j`Y'?̉Y'?Y'? 0MY'?|j`Y'?0Y'?/ɏY'?|j`kY'?|j`kY'?/ɏY'?GPcY'?|j`Y'? 0MY'?|j`kY'? 0MY'?0Y'?|j`kY'?eGY'?@Y'?GRpY'?GRpY'?GPcY'?ܙ/Y'?GRpY'?OY'?eGY'?ܙ/Y'?݄ ;Y'?GRpY'?@Y'?jY'?GRpY'?GRpY'?jY'?|j`Y'?jY'?{Y'?|j`Y'?{Y'?ӚY'?|j`Y'?ӚY'?Y'?|j`Y'?GPcY'?GRpY'?|j`kY'?|j`kY'?%' LY'? LY'?'ϔP/ٽY'?`˽Y'?S]ŽY'?e۽Y'? ڽY'?ڽY'?%'2ĽY'?e۽Y'?2ĽY'?e۽Y'?ڽY'?2ĽY'?ӚC۽Y'?pܽY'?|jp˽Y'?݄ ߽Y'?GR`m޽Y'?O1ݽY'?ܽY'?0޽Y'?`˽Y'?0޽Y'?݄ ߽Y'?`˽Y'?`˽Y'?݄ ߽Y'?e۽Y'?݄ ߽Y'?O1ݽY'?e۽Y'?pܽY'? ݽY'?|jp˽Y'?|jp˽Y'? ݽY'?|jnY'? ݽY'?07߽Y'?|jnY'?|jnY'?07߽Y'?̉@Y'?̉@Y'?07߽Y'?/zY'?/zY'?GPY'?̉@Y'?̉@Y'?GPY'?݄ ߽Y'?GPY'?ܙ`Y'?݄ ߽Y'?ڽY'?{`OڽY'?2ĽY'?2ĽY'?{`OڽY'?|jp˽Y'?|jp˽Y'?{`OڽY'?ӚC۽Y'?05Y'?̉@Y'?݄ ߽Y'?VY'?VvY'?̉Y'?VvY'?Y'?̉Y'?Y'?ܓY'?̉Y'?̉Y'?ܓY'?LIY'?ǮY'?w둾WY'?S Y'?mt04Y'?4ϐY'?VvY'?4ϐY'?S Y'?VvY'?W>ܽY'?7涽Y'?VvY'?C۽Y'?pܽY'?S]ŽY'?pܽY'?V@Y'?S]ŽY'?S]ŽY'?V@Y'?ؓݽY'?V@Y'?ܓХ޽Y'?ؓݽY'?V@Y'?a`Y'?ʫὖ.$?jp軽g#?j Kj%?jiA5%?jۺo%?jР%?jýj%?jiA5%?jۺ.$?jp軽.$?jp軽A5%?jۺT$?j %A5%?jۺ%?jýT$?j %T$?j %%?jý^%?j½j%?jig#?j K%?jڱg#?j K$?j%?jڱo%?jР&?j ½%?jý%?jý&?j ½%?j彼&?j ½*&?j@ý%?j%?j*&?j@ým )?jm )?j*&?j@ý'?jЀ½m )?j`m )?jS(?j0S(?j0m )?j彭(?jФS(?j0|(?j࣯m )?j`m )?j`|(?j࣯N8(?jޫU%?j4$?j+%?j`4$?j5\%?j0E+%?j`+%?j`5\%?j0E,&?j5\%?j0E%?jp馽,&?j$?jil$?jث%?jڱ%?jڱil$?jثU%?jil$?jث4$?jU%?j'?jЀ½(?jm )?jm )?j归(?j9c(?jPʼ9c(?jPʼ(?jФm )?jN8(?jޫ'?jrm )?j`'?jr&?jѦm )?j`m )?j`&?jѦ%?j`%?j`&?jѦ%?jp馽%?jp馽&?jѦ,&?jm )?pgm )?j`m )?Vm )?Vm )?j`m )?V@m )?j`m )?cjm )?V@m )?V@m )?cjm )? X](? Ұ&? '? p(? pQ^v(? t'? `$^v(? '? t'? `$(? t'? `$c'? Hs!(? po&? B(? &? X](? ҰB(? ^v(? q(? O '?  '? q(? OX](? Ұt'? `$!c(? p#p(? pQ(? C(? Pnt'? `$t'? `$C(? Pn!c(? p#8&? &? 0 ½#&? ͶF%? /f[%? 𫹽'&? Pn'&? Pnf[%? 𫹽&? qf[%? 𫹽 v%? r&? q&? q v%? rJ%? pߢ%? `I&? Z[%? 6^'? '? &? '? &? `&? '? ^'? &? s!(? po'? 0&? '? 0'? &? c'? Ht'? `$('? Pt'? `$#&? Ͷ('? P#&? Ͷ&? q8&? 8&? &? qY&? @f&? `Y&? @f&? qJ%? p4%? 꾽&? q4%? 꾽&? `&? q'? #&? u&? `&? 0 ½!4'? #&? Ͷ!4'? \'? f#&? Ͷ#&? Ͷ\'? f('? PF%? /'&? Pn`B%? Ӵ'&? PnI&? Z`B%? Ӵ`B%? ӴI&? Z)H%? p-[%? 6I&? Z"&? ҩI&? Z&? `"&? ҩI&? ZU%? `[)H%? p-ߢ%? `'u%? pI&? ZI&? Z'u%? pU%? `[#&? u&? &? `&? [&? &? `&? `[&? "&? ҩ6H(?Xp?D(?}p?D(?ZP³D(?}p?=(?}`򲽥D(?ZP³D(?ZP³=(?}`Y;(?Z`MY;(?Z`M=(?}` ,(?ZP尽=(?}`b)(?}ﰽ ,(?ZP尽 ,(?ZP尽b)(?}ﰽ(?Z`b)(?}ﰽ(?}䮽(?Z`(?Z`(?}䮽'?ZPT'?ZPT(?}䮽2'?Z6(?}䮽?'?}pH2'?Z62'?Z6?'?}pHp'?Z;?'?}pHQ'?}Ϋp'?Z;p'?Z;Q'?}Ϋ'?Zh'?ZhQ'?}ΫAg'?ZQ'?}ΫNf'?}`תAg'?ZAg'?ZNf'?}`ת;:'?ZFNf'?}`ת'?}(;:'?ZF;:'?ZF'?}( '?Z '?Z'?}(*&?Z0䩽'?}(_&?}*&?Z0䩽*&?Z0䩽_&?}&?Z@_&?}&?}2&?Z@&?Z@&?}2~&?ZG~&?ZG&?}2Q&?Zª&?}29&?}+Q&?ZªQ&?Zª9&?}+|&&?Zpj|&&?Zpj9&?}+%?Z=9&?}+%?}`Ԭ%?Z=%?Z=%?}`ԬA%?Z8A%?Z8%?}`Ԭ%?ZV%?}`Ԭh%?}d%?ZV%?ZVh%?}d%?Z0h%?}d %?}X%?Z0%?Z0 %?}X%?Z`谽%?Z`谽 %?}XJ}%?ZP %?}Xy%?}0%J}%?ZPJ}%?ZPy%?}0% t%?Zų t%?Zųy%?}0%Qq%?.\p?y%?}0%s%?}p?Qq%?.\p?yV(?j1p?6H(?Xp?RR(?26H(?Xp?D(?ZP³RR(?2RR(?2D(?ZP³H(?2+D(?ZP³Y;(?Z`MH(?2+H(?2+Y;(?Z`M8(?2Y;(?Z`M ,(?ZP尽8(?28(?2 ,(?ZP尽"(?2`T ,(?ZP尽(?Z`"(?2`T"(?2`T(?Z`-(?2 (?Z`'?ZPT-(?2 -(?2 '?ZPT'?2`䬽'?ZPT2'?Z6'?2`䬽'?2`䬽2'?Z6`'?2૽2'?Z6p'?Z;`'?2૽`'?2૽p'?Z;G'?2p'?Z;'?ZhG'?2G'?2'?Zhk'?2@X'?ZhAg'?Zk'?2@Xk'?2@XAg'?Z3='?20کAg'?Z;:'?ZF3='?20ک3='?20ک;:'?ZF '?2;:'?ZF '?Z '?2 '?2 '?Z&?2 u '?Z*&?Z0䩽&?2 u&?2 u*&?Z0䩽G&?2Џ*&?Z0䩽&?Z@G&?2ЏG&?2Џ&?Z@y&?2ݩ&?Z@~&?ZGy&?2ݩy&?2ݩ~&?ZG3K&?2p]~&?ZGQ&?Zª3K&?2p]3K&?2p]Q&?Zª&?2 Q&?Zª|&&?Zpj&?2 &?2 |&&?Zpj%?2諽|&&?Zpj%?Z=%?2諽%?2諽%?Z=%?2%?Z=A%?Z8%?2%?2A%?Z8%?2pA%?Z8%?ZV%?2p%?2p%?ZV4%?20`%?ZV%?Z04%?20`4%?20`%?Z0y%?2°%?Z0%?Z`谽y%?2°y%?2°%?Z`谽o%?28%?Z`谽J}%?ZPo%?28o%?28J}%?ZP2f%?2@J}%?ZP t%?Zų2f%?2@2f%?2@ t%?Zųc%?E4p? t%?ZųQq%?.\p?c%?E4p?&l(?p?yV(?j1p?^(?b!yV(?j1p?RR(?2^(?b!RR(?2H(?2+^(?b!^(?b!H(?2+B(?$PH(?2+8(?2B(?$P8(?2"(?2`TB(?$PB(?$P"(?2`T (? "(?2`T-(?2 (?  (? -(?2 '?b!-(?2 '?2`䬽'?b!'?2`䬽`'?2૽'?b!'?b!`'?2૽'?b!0A`'?2૽G'?2'?b!0AG'?2k'?2@X'?b!0A'?b!0Ak'?2@X#*'?$ k'?2@X3='?20ک#*'?$ 3='?20ک '?2#*'?$ #*'?$ '?2f&? '?2&?2 uf&? f&? &?2 uA&?b!+&?2 uG&?2ЏA&?b!+G&?2Џy&?2ݩA&?b!+A&?b!+y&?2ݩ0&?b!-y&?2ݩ3K&?2p]0&?b!-3K&?2p]&?2 0&?b!-0&?b!-&?2 %?b!&?2 %?2諽%?b!%?2諽%?2%?b!%?b!%?2%?b!X%?2%?2p%?b!X%?2p4%?20`%?b!X%?b!X4%?20`a%?.4%?20`y%?2°a%?.a%?.y%?2°Z%?b!òy%?2°o%?28Z%?b!òo%?282f%?2@Z%?b!òZ%?b!ò2f%?2@L%?>2f%?2@c%?E4p?L%?>&l(?p?^(?b!Rn(?vRn(?v^(?b!B(?$P (? '?b!۪'?0*'?b!'?b!0A۪'?0*۪'?0*'?b!0A#*'?$ f&? A&?b!+.&?A&?b!+0&?b!-.&?0&?b!-%?b!.&?.&?%?b!x%?Q%?b!񫽢%?b!Xx%?Qx%?Q%?b!XG%?rpϱG%?rpϱ%?b!Xa%?.a%?.Z%?b!òL%?>(?p?&l(?p?Rn(?vRn(?vB(?$PC(?lB(?$P (? C(?lC(?l (? '?pW (? ۪'?0*'?pW۪'?0*#*'?$ B'?lB'?l#*'?$ 2&?p=#*'?$ f&? 2&?p=2&?p=f&? 5&?l0=f&? .&?5&?l0=5&?l0=.&?y%?p.&?x%?Qy%?pa%?.L%?>G%?rpϱG%?rpϱL%?>6%?p?(?p?Rn(?v|(?"0|(?"0Rn(?v[(?"'?20 '?Z:'?Z@7>'?20>'?20:'?Z@7m'?2p!:'?Z@7g'?Zмm'?2p!m'?2p!g'?Zм'?2rg'?ZмA'?Zp'?2r'?2rA'?Zp'?2A'?Zpù'?Z@'?2'?2ù'?Z@'?2ù'?Z@|'?ZF'?2'?2|'?ZF7(?2pg|'?ZF'?Z(7(?2pg7(?2pg'?Z(#(?2'?Z(2(?Z뺽#(?2#(?22(?Z뺽D9(?202(?Z뺽3,(?ZD9(?20D9(?203,(?ZI(?2F3,(?Zs;(?Z@.I(?2FI(?2Fs;(?Z@.R(?2¶s;(?Z@.D(?ZPR(?2¶R(?2¶D(?ZPT(?E4p?D(?ZPlG(?.\p?T(?E4p?L%?p?Db%?j1p?R%?`Db%?j1p?kf%?2 жR%?`R%?`kf%?2 жf%?b!kf%?2 ж'p%?20Sf%?b!'p%?20S %?2ȹf%?b!f%?b! %?2ȹ%??!0c %?2ȹ%?2*%??!0c%??!0c%?2*%?b!K%?2*%?2Pr%?b!K%?2Pr1%?2%?b!K%?b!K1%?2r%?b!Pm1%?2^%?2 r%?b!Pm^%?2 v &?2xr%?b!Pmr%?b!Pmv &?2xH[&?b!v &?2xL&?2&H[&?b!L&?2&{&?2H[&?b!H[&?b!{&?2&?b!{&?2&?2&?b!&?29&?2 &?b!&?b!9&?2 |&'?b!S9&?2 v'?2|&'?b!Sv'?2>'?20|&'?b!S|&'?b!S>'?20'?b!P>'?20m'?2p!'?b!Pm'?2p!'?2r'?b!P'?b!P'?2r'?b!'?2r'?2'?b!'?2'?2'?b!'?b!'?2p7(?f'?27(?2pgp7(?fp7(?f7(?2pg(<(?b!ú7(?2pg#(?2(<(?b!ú#(?2D9(?20(<(?b!ú(<(?b!úD9(?20](?b!D9(?20I(?2F](?b!I(?2FR(?2¶](?b!](?b!R(?2¶j(?p?R(?2¶T(?E4p?j(?p?R%?`f%?b!x%?0nf%?b!%??!0cx%?0n%??!0c%?b!Kx%?0nx%?0n%?b!K%?@%?b!Kr%?b!Pm%?@%?@r%?b!PmW.&?Pr%?b!PmH[&?b!W.&?PW.&?PH[&?b!ה&?H[&?b!&?b!ה&?ה&?&?b!6'?½&?b!|&'?b!S6'?½6'?½|&'?b!S$i'?V|&'?b!S'?b!P$i'?V$i'?V'?b!P'?t'?b!P'?b!'?t'?t'?b!p7(?fp7(?f(<(?b!úq(?{(<(?b!ú](?b!q(?{q(?{](?b!j(?p?4%?p?L%?p?:%?8L%?p?R%?`:%?8:%?8R%?`R%?pЕR%?`x%?0nR%?pЕR%?pЕx%?0n%?p0%?p0x%?0n%?@$i'?V'?t'?l'?l'?t.(?8@*'?tp7(?f.(?8@*.(?8@*p7(?fT(?p`ẽT(?p`ẽp7(?fq(?{q(?{j(?p?(?p?:%?8R%?pЕ%G%?"p%G%?"pR%?pЕZy%?" żR%?pЕ%?p0Zy%?" żZy%?" ż%?p0%?"b%?p0%?@%?"b%?"b%?@E!&?"@O%?@W.&?PE!&?"@OE!&?"@OW.&?P&?"pi½W.&?Pה&?&?"pi½&?"pi½ה&?R&?"½ה&?6'?½R&?"½R&?"½6'?½EN'?g'pT½6'?½$i'?VEN'?g'pT½EN'?g'pT½$i'?V'?":$i'?V'?l'?":'?":'?l]'?"D]'?"D'?l.(?8@*.(?8@*T(?p`ẽY^(?"@Y^(?"@T(?p`ẽ(?"ƷT(?p`ẽq(?{(?"Ʒ(?"Ʒq(?{(?p?%?^7p?4%?p?$%?54%?p?:%?8$%?5$%?5:%?80%?5۸:%?8%G%?"p0%?5۸0%?5۸%G%?"pB%?5B%?5%G%?"p\%?53%G%?"pZy%?" ż\%?53\%?53Zy%?" ż|%?5|%?5Zy%?" ż<%?5 Zy%?" ż%?"b<%?5 <%?5 %?"b%?5B%?5B%?"b:%?5C%?"bE!&?"@O:%?5C:%?5CE!&?"@OO3&?5`½O3&?5`½E!&?"@OIj&?5½E!&?"@O&?"pi½Ij&?5½Ij&?5½&?"pi½8&?5½8&?5½&?"pi½ &?5@ý&?"pi½R&?"½ &?5@ý &?5@ýR&?"½'?5½'?5½R&?"½EN'?g'pT½EN'?g'pT½'?":ӆ'?5 ½ӆ'?5 ½'?":Һ'?5=Һ'?5='?":'?50;'?":]'?"D'?50;'?50;]'?"D(?5(?5]'?"D<(?5]'?"D.(?8@*<(?5<(?5.(?8@*\(?5(.(?8@*Y^(?"@\(?5(\(?5(Y^(?"@}v(?5}v(?5Y^(?"@ (?5иY^(?"@(?"Ʒ (?5и (?5и(?"ƷE(?5E(?5(?"Ʒ/(?a4p?(?"Ʒ(?p?/(?a4p?'?5½EN'?g'pT½Q'?hH ½Q'?hH ½EN'?g'pT½ӆ'?5 ½%?i`?%?^7p?r%?ri`%?^7p?$%?5r%?ri`r%?ri`$%?5 %?rip鸽$%?50%?5۸ %?rip鸽 %?rip鸽0%?5۸8%?LS 0%?5۸B%?58%?LS 8%?LS B%?5iN%?ri_B%?5\%?53iN%?ri_iN%?ri_\%?53=t%?LS ⽽\%?53|%?5=t%?LS ⽽=t%?LS ⽽|%?5d%?LSPG|%?5<%?5 d%?LSPGd%?LSPG<%?5 %?ri<%?5 %?5B%?ri%?ri%?5Bg%?LS`%?5B:%?5Cg%?LS`g%?LS`:%?5C.&?LSZ½:%?5CO3&?5`½.&?LSZ½.&?LSZ½O3&?5`½f&?LS0½O3&?5`½Ij&?5½f&?LS0½f&?LS0½Ij&?5½&?LSOýIj&?5½8&?5½&?LSOý&?LSOý8&?5½_&?LSný8&?5½ &?5@ý_&?LSný_&?LSný &?5@ý'?LSOý &?5@ý'?5½'?LSOý'?LSOý'?5½Q'?hH ½Q'?hH ½ӆ'?5 ½'?LSZ½'?LSZ½ӆ'?5 ½W'?LS`ӆ'?5 ½Һ'?5=W'?LS`W'?LS`Һ'?5=a'?riҺ'?5='?50;a'?ria'?ri'?50;(?rij'?50;(?5(?rij(?rij(?5RG(?ri(?5<(?5RG(?riRG(?ri<(?5}e(?LS0W<(?5\(?5(}e(?LS0W}e(?LS0W\(?5((?riƺ\(?5(}v(?5(?riƺ(?riƺ}v(?5(?ri}v(?5 (?5и(?ri(?ri (?5и(?ri`* (?5иE(?5(?ri`*(?ri`*E(?57(?Oi?E(?5/(?a4p?7(?Oi? %?rip鸽8%?LS t5%?jиt5%?jи8%?LS iN%?ri_iN%?ri_=t%?LS ⽽5q%?j5q%?j=t%?LS ⽽%?j\=t%?LS ⽽d%?LSPG%?j\%?j\d%?LSPG%?ri%?rig%?LS`}%?j}%?jg%?LS`2-&?jv½g%?LS`.&?LSZ½2-&?jv½2-&?jv½.&?LSZ½e&?jý.&?LSZ½f&?LS0½e&?jýe&?jýf&?LS0½&?j nýf&?LS0½&?LSOý&?j ný&?j ný&?LSOý_&?jý&?LSOý_&?LSný_&?jý_&?jý_&?LSný'?j ný_&?LSný'?LSOý'?j ný'?j ný'?LSOýR'?jý'?LSOýQ'?hH ½R'?jýR'?jýQ'?hH ½'?jv½Q'?hH ½'?LSZ½'?jv½'?jv½'?LSZ½@'?j'?LSZ½W'?LS`@'?j@'?jW'?LS`a'?riRG(?ri}e(?LS0Wh(?jfh(?jf}e(?LS0W(?riƺd(?hڍp?u(? p?b(?/ۍu(? p?wr(? b(?/ۍb(?/ۍwr(? EQ(?ۍCwr(? h(? PﱽEQ(?ۍCh(? PﱽV(? YEQ(?ۍCEQ(?ۍCV(? Yu2(?/ۍ-V(? Y?(? ٮu2(?/ۍ-u2(?/ۍ-?(? ٮ(?ۍ ?(? ٮS!(? t(?ۍ S!(? t'? `2(?ۍ (?ۍ '? `2'?/ۍ'? `2'? '?/ۍ'?/ۍ'? މ'?ۍ0'? ,'? )މ'?ۍ0,'? )y'? lމ'?ۍ0މ'?ۍ0y'? lD'?/ۍ ey'? lbF'? P⨽D'?/ۍ eD'?/ۍ ebF'? P⨽>&?ۍbF'? P⨽'? >&?ۍ'? _&? r>&?ۍ>&?ۍ_&? r&?ݍ_&? r&? &?ݍ&? \r&? P⨽&?ݍ&?ݍ\r&? P⨽?-&?ۍ6\r&? P⨽?&? l?-&?ۍ6?&? l&? )?-&?ۍ6?-&?ۍ6&? )%?ۍ&? )%? %?ۍ%? %? `2%?ۍ%?ۍ%? `2.%?ۍm%? `2j%? t.%?ۍmj%? ty%? ٮ.%?ۍm.%?ۍmy%? ٮf%?ۍPy%? ٮa%? Yf%?ۍPa%? YP%? Pﱽf%?ۍPf%?ۍPP%? PﱽV%?/ۍP%? PﱽFF%? V%?/ۍV%?/ۍFF%? R%?ۍp?FF%? B%? p?R%?ۍp?>&?ۍ&?ݍ&?֍PW&?֍PW&?ݍ?-&?ۍ6ZR(?Gp?d(?hڍp?O(?Í`d(?hڍp?b(?/ۍO(?Í`O(?Í`b(?/ۍnF(?Í;b(?/ۍEQ(?ۍCnF(?Í;nF(?Í;EQ(?ۍC6(?Í0Ȱ6(?Í0ȰEQ(?ۍC !(?ÍPhEQ(?ۍCu2(?/ۍ- !(?ÍPh !(?ÍPhu2(?/ۍ-(?Í"u2(?/ۍ-(?ۍ (?Í"(?Í"(?ۍ '?Í'?Í(?ۍ '?Í(?ۍ '?/ۍ'?Í'?Í'?/ۍ-'?Í'?/ۍމ'?ۍ0-'?Í-'?Íމ'?ۍ0?l'?Ío?l'?Íoމ'?ۍ0='?Í0މ'?ۍ0D'?/ۍ e='?Í0='?Í0D'?/ۍ e '?Í D'?/ۍ e>&?ۍ '?Í '?Í >&?ۍ&?Í&?Í>&?ۍ&?Í>&?ۍ&?֍PW&?Í&?Í&?֍PW{&?Í{&?Í&?֍PWxM&?Íl&?֍PW?-&?ۍ6xM&?ÍlxM&?Íl?-&?ۍ6{!&?Íp{!&?Íp?-&?ۍ6%?Í?-&?ۍ6%?ۍ%?Í򫽱%?Í%?ۍ%?Í%?Í%?ۍn%?ÍP%?ۍ.%?ۍmn%?ÍPn%?ÍP.%?ۍm$%?Ía$%?Ía.%?ۍmg%?Íp.%?ۍmf%?ۍPg%?Ípg%?Ípf%?ۍPr%?Í3r%?Í3f%?ۍPh%?Íf%?ۍPV%?/ۍh%?Íh%?ÍV%?/ۍd%?ōp?V%?/ۍR%?ۍp?d%?ōp?G(?p?ZR(?Gp?7D(?yųZR(?Gp?O(?Í`7D(?yų7D(?yųO(?Í`:(?yQO(?Í`nF(?Í;:(?yQ:(?yQnF(?Í;+(?y`鰽nF(?Í;6(?Í0Ȱ+(?y`鰽+(?y`鰽6(?Í0Ȱ(?y6(?Í0Ȱ !(?ÍPh(?y(?y !(?ÍPhd'?yX !(?ÍPh(?Í"d'?yXd'?yX(?Í"'?y ;(?Í"'?Í'?y ;'?y ;'?Íl'?y@'?Í'?Íl'?y@l'?y@'?Í'?ym'?Í-'?Í'?ym'?ym-'?Ícg'?ypŪ-'?Í?l'?Íocg'?ypŪcg'?ypŪ?l'?Íop:'?y0K?l'?Ío='?Í0p:'?y0Kp:'?y0K='?Í0 '?y='?Í0 '?Í '?y '?y '?Í &?y詽 '?Í &?Í&?y詽&?y詽&?Í#&?y&?Í&?Í#&?y#&?y&?Í~&?yJ&?Í{&?Í~&?yJ~&?yJ{&?ÍQ&?yĪ{&?ÍxM&?ÍlQ&?yĪQ&?yĪxM&?Íl'&?yplxM&?Íl{!&?Íp'&?ypl'&?ypl{!&?Íp%?yP?{!&?Íp%?Í򫽋%?yP?%?yP?%?Í%?y9%?Í%?Í%?y9%?y9%?Í%?yW%?Ín%?ÍP%?yW%?yWn%?ÍP"%?yn%?ÍP$%?Ía"%?y"%?y$%?Ía%?yP簽$%?Íag%?Íp%?yP簽%?yP簽g%?Íp}%?yNg%?Ípr%?Í3}%?yN}%?yNr%?Í3t%?yPór%?Í3h%?Ít%?yPót%?yPóh%?Íq%?Mp?h%?Íd%?ōp?q%?Mp?D(?}p?G(?p?8?(?}%G(?p?7D(?yų8?(?}%7D(?yų:(?yQ8?(?}%8?(?}%:(?yQ!(?}PY:(?yQ+(?y`鰽!(?}PY+(?y`鰽(?y!(?}PY!(?}PY(?yU'?}d(?yd'?yXU'?}dU'?}dd'?yX'?}Ԭd'?yX'?y ;'?}Ԭ'?y ;l'?y@'?}Ԭ'?}Ԭl'?y@'?}+l'?y@'?ym'?}+'?ymcg'?ypŪ'?}+'?}+cg'?ypŪ&'?}2cg'?ypŪp:'?y0K&'?}2p:'?y0K '?y&'?}2&'?}2 '?y_&?} '?y&?y詽_&?}_&?}&?y詽'&?}(&?y詽#&?y'&?}(#&?y~&?yJ'&?}('&?}(~&?yJ?&?}~&?yJQ&?yĪ?&?}Q&?yĪ'&?ypl?&?}?&?}'&?ypl%?}౬'&?ypl%?yP?%?}౬%?yP?%?y9%?}౬%?}౬%?y9h%?}d%?y9%?yWh%?}dh%?}d%?yW%?})%?yW"%?y%?})"%?y%?yP簽%?})%?})%?yP簽z%?}%?yP簽}%?yNz%?}}%?yNt%?yPóz%?}z%?}񲽐t%?yPós%?}p?t%?yPóq%?Mp?s%?}p?S%?hڍp?B%? p?U%?/ۍ@ĶB%? p?FF%? 붽U%?/ۍ@ĶU%?/ۍ@ĶFF%? 붽xg%?ۍ;FF%? 붽P%? xg%?ۍ;P%? a%? `%xg%?ۍ;xg%?ۍ;a%? `%0%?ۍ a%? `%y%? Х0%?ۍ y%? Хj%? @ 0%?ۍ 0%?ۍ j%? @ 3%?ۍj%? @ %? L3%?ۍ%? L%? g3%?ۍ3%?ۍ%? g.&?ۍPN%? g&? 0U.&?ۍPN&? 0U?&? .&?ۍPN.&?ۍPN?&? &?ݍP?&? \r&? &?ݍP\r&? &? 0&?ݍP&?ݍP&? 0 &?ۍ &? 0_&? @ ½ &?ۍ _&? @ ½'? 0 &?ۍ &?ۍ '? 0?'?/ۍ0%'? 0bF'? ?'?/ۍ0%?'?/ۍ0%bF'? ~'?ۍGbF'? y'? ~'?ۍGy'? ,'? 0U~'?ۍG~'?ۍG,'? 0U>'?gۍp,'? 0U'? g>'?gۍp'? g'? L>'?gۍp>'?gۍp'? Lh*(?ݍP'? LS!(? @ h*(?ݍPS!(? @ ?(? Хh*(?ݍPh*(?ݍP?(? ХT(?ۍ0?(? ХV(? `%T(?ۍ0V(? `%h(? T(?ۍ0T(?ۍ0h(? b(?/ۍ0h(? wr(? 붽 b(?/ۍ0 b(?/ۍ0wr(? 붽f(?ۍp?wr(? 붽u(? p?f(?ۍp?.&?ۍPN&?ݍPl&?֍-l&?֍-&?ݍP &?ۍ >'?gۍph*(?ݍP(?֍6(?֍6h*(?ݍP9(?֍`h*(?ݍPT(?ۍ09(?֍`df%?Gp?S%?hڍp?h%?ͶS%?hڍp?U%?/ۍ@Ķh%?Ͷh%?ͶU%?/ۍ@ĶOr%?Í CU%?/ۍ@Ķxg%?ۍ;Or%?Í COr%?Í Cxg%?ۍ;%?Í%?Íxg%?ۍ;%?Íxg%?ۍ;0%?ۍ %?Í%?Í0%?ۍ ɲ%?Í\ɲ%?Í\0%?ۍ  %?Í0%?ۍ 3%?ۍ %?Í %?Í3%?ۍ%?Í%?Í3%?ۍ &?ÍPa3%?ۍ.&?ۍPN &?ÍPa &?ÍPa.&?ۍPN~L&?Í0~L&?Í0.&?ۍPNz&?Í.&?ۍPNl&?֍-z&?Íz&?Íl&?֍-&?Í&?Íl&?֍-&?Íl&?֍- &?ۍ &?Í&?Í &?ۍ '?Í '?Í &?ۍ <'?Í &?ۍ ?'?/ۍ0%<'?Í<'?Í?'?/ۍ0%Ek'?Í`?'?/ۍ0%~'?ۍGEk'?Í`Ek'?Í`~'?ۍGB'?ÍpeB'?Ípe~'?ۍG '?Í ~'?ۍG>'?gۍp '?Í '?Í >'?gۍp'?Í>'?gۍp(?֍6'?Í'?Í(?֍6O(?ÍcO(?Íc(?֍6 (?Í(?֍69(?֍` (?Í (?Í9(?֍`W6(?Í`W6(?Í`9(?֍`(F(?ÍPK9(?֍`T(?ۍ0(F(?ÍPK(F(?ÍPKT(?ۍ0O(?ÍʶT(?ۍ0 b(?/ۍ0O(?ÍʶO(?Íʶ b(?/ۍ0S(?ōp? b(?/ۍ0𶽣f(?ۍp?S(?ōp?q%?p?df%?Gp?t%?yPdf%?Gp?h%?Ͷt%?yPt%?yPh%?Ͷ}%?y-h%?ͶOr%?Í C}%?y-}%?y-Or%?Í C%?yOr%?Í C%?Í%?y%?y%?Í%?y0꺽%?Í%?Í%?y0꺽%?y0꺽%?ÍZ%?y&%?Íɲ%?Í\Z%?y&Z%?y&ɲ%?Í\%?yCɲ%?Í\ %?Í%?yC%?yC %?ÍQ%?y0> %?Í%?ÍQ%?y0>Q%?y0>%?Í&&?y`%?Í &?ÍPa&&?y`&&?y` &?ÍPa[Q&?yp &?ÍPa~L&?Í0[Q&?yp[Q&?yp~L&?Í0M~&?y3~L&?Í0z&?ÍM~&?y3M~&?y3z&?Íܬ&?y}z&?Í&?Íܬ&?y}ܬ&?y}&?Í;&?y&?Í&?Í;&?y;&?y&?Í '?y0~&?Í '?Í '?y0~ '?y0~ '?Í*:'?y@4 '?Í<'?Í*:'?y@4*:'?y@4<'?Í!g'?yP<'?ÍEk'?Í`!g'?yP!g'?yPEk'?Í`'?ypEk'?Í`B'?Ípe'?yp'?ypB'?Ípe3'?y?B'?Ípe '?Í 3'?y?3'?y? '?Í '?y@E '?Í '?Í'?y@E'?y@E'?Í8'?y''?ÍO(?Íc8'?y'8'?y'O(?Íc(?y 캽O(?Íc (?Í(?y 캽(?y 캽 (?Í+(?y (?ÍW6(?Í`+(?y+(?yW6(?Í`:(?y0W6(?Í`(F(?ÍPK:(?y0:(?y0(F(?ÍPK.D(?y(F(?ÍPKO(?Íʶ.D(?y.D(?yO(?ÍʶG(?Mp?O(?ÍʶS(?ōp?G(?Mp?s%?}p?q%?p?y%?}0Yq%?p?t%?yPy%?}0Yt%?yP}%?y-y%?}0Yy%?}0Y}%?y-%?}%}%?y-%?y%?}%%?y%?y0꺽%?}%%?}%%?y0꺽%?}%?y0꺽Z%?y&%?}Z%?y&%?yC%?}%?}%?yC&?}%?yCQ%?y0>&?}Q%?y0>&&?y`&?}&?}&&?y`(e&?}濽&&?y`[Q&?yp(e&?}濽[Q&?ypM~&?y3(e&?}濽(e&?}濽M~&?y3t&?}M~&?y3ܬ&?y}t&?}ܬ&?y};&?yt&?}t&?};&?y'?}0V;&?y '?y0~'?}0V '?y0~*:'?y@4'?}0V'?}0V*:'?y@4#y'?}Pj*:'?y@4!g'?yP#y'?}Pj!g'?yP'?yp#y'?}Pj#y'?}Pj'?yp'?}ͽ'?yp3'?y?'?}ͽ3'?y?'?y@E'?}ͽ'?}ͽ'?y@E(?}'?y@E8'?y'(?}8'?y'(?y 캽(?}(?}(?y 캽I1(?}0(?y 캽+(?yI1(?}0+(?y:(?y0I1(?}0I1(?}0:(?y0A(?}з:(?y0.D(?yA(?}зA(?}з.D(?yD(?}p?.D(?yG(?Mp?D(?}p?&? 0Ŷ&?tƶ&?1&?dž𪶽&?tƶ&? 0Ŷ&? 0Ŷ&?tƶ&? 0Ŷ&? 0Ŷt&? Щ1&?dž𪶽'? `*'? &? t&? t'? }&?̓r&? t}&?̓rt&? Щt&? Щ}&?̓r1&?dž𪶽/ '? }0k '?~ õ '? Pϵ '? Pϵ '?~ õ'? `*'? `* '?~ õ'?  '? Pϵ; '? j/ '? }0k; '? j '? p?/ '? }0k/ '? }0k '? p? '?|p?8&? p?&? j&?|?&? Pϵ&?!~0Ƶ&? j&?!~0Ƶ&?|?&? j&? Pϵ&? `*&?!~0Ƶ&?!~0Ƶ&? `*&?߀(<&?0x&?߀(&? t&? t&?߀(&? `*&? tI&? Щ<&?0x&?&?&? 0Ŷ&? 0Ŷ&?I&? ЩI&? Щ&?<&?0x '? '?~0 '?`? '?~0 '?|p? '?`? '? '? T '?~0 '?~0'? T'?\&?#P'?\&? &? '?\'? T&?#P&? &?鳽&? t&? ճ&?鳽&? &?t&? ճt&? ճ&?&?鳽Z&?a൳&?&? &?džӳ&?-&? &? &?-&? &?-Z&?a൳&? &? I&? ճ&?džӳ&? TԳ&?^&? &? Գ&?^@&?̓ &? @&?̓ I&? ճI&? ճ@&?̓ &?džӳ&? }&?~&? &? &?~&? T&? T&?~Գ&?^&? &? &? }&? 8&? p?&? }&? }8&? p?8&?|p?Q(? Q(?p?)?p?)?p?)?Q(? )?)?q`NQ(? Q(? )?q`NQ(?Ge)?q`N)?`kQ(?Ge)?`k)?,/@žQ(?GeQ(?Ge)?,/@žQ(?dC侽)?,/@ž)?Q(?dC侽Q(?dC侽)?Q(?ls`)?)?:@@Q(?ls`Q(?ls`)?:@@Q(?g彽)?:@@)?J-Q(?g彽Q(?g彽)?J-Q(?]:`N)?J-)?@9Q(?]:`NQ(?]:`N)?@9Q(?巽)?@9)?Cp?Q(?巽Q(?巽)?Cp?Q(?Cp?Q(?Cp?)?Cp?)?Q(?Cp?)?Q(?E)?)?]:p0Q(?EQ(?E)?]:p0Q(?J-0뮽)?]:p0)?g@Q(?J-0뮽Q(?J-0뮽)?g@Q(?:@૽)?g@)?lsQ(?:@૽Q(?:@૽)?lsQ(?@)?ls)?dCPQ(?@Q(?@)?dCPQ(?,/)?dCP)?GQ(?,/Q(?,/)?GQ(?pQ(?p)?GQ(?qp0)?G)?^Q(?qp0Q(?qp0)?^Q(?)?^)?p?Q(?Q(?)?p?Q(?p?*?ɱ0P*?(@*?&(*?ɱ0P*?&(*?]t*?&(*?n04*?]t*?p'*?6P8*?6κ*?6P8*?$葾*?6κ*?6κ*?$葾*?Gݸ*? **?9ߏ04*?&(*? **?&(*?ne*?&(*?(@*?ne*?(@*?[ŏ`*?ne*?#`*?T/*?nJ*?$葾*?]t*?Gݸ*?]t*?n04*?Gݸ*?n04*?nJ*?Gݸ*?nJ*?T/*?Gݸ*?Gݸ*?T/*?nШ*?T/*? t_*?nШ*?.pM*?$ꬽ*?&U*? **?㷽*?9ߏ04*?fꎾP*? G*?9ߏ04*? G*?9ߏJ*?9ߏ04*?nJ*?&U*?#`*?#`*?&U*?!ߒ*?&U*?$ꬽ*?!ߒ*?$ꬽ*?r`ۭ*?!ߒ*?.pM*?&U*? (p*?&U*?}b*? (p*?fꎾP*?9ߏ04*?(׎:*?9ߏ04*?㷽*?(׎:*?}b*?&U*?%L*?&U*?9ߏJ*?%L*?9ߏJ*?D^*?%L*?D^*?9ߏJ*?M@*?M@*?9ߏJ*? G)?̐i)?Nᄑq)?~q)?~)?Nᄑq)?).Pq)?).P)?Nᄑ)?ڏ)?ڏ)?q缽q)?Qq)?Q)?q缽q)?Zpqq)?Zpq)?q缽)?%p)?%p)?X ^q)?i󎾀Vq)?i󎾀V)?X ^q)?͎ %)?X ^)?^ wq)?͎ %q)?͎ %)?^ wq)?Lⷽq)?Lⷽ)?^ wq)?)?^ w)?%q)?q)?)?%)?#-)?#-)?%P鳽q)?q)?)?%P鳽q)?)?%P鳽)?޺ޱq)?q)?)?޺ޱq)?m͎\q)?m͎\)?޺ޱq)? *)?޺ޱ)?X q)? *q)? *)?X )? )? )? zPzq)?fZq)?fZ)? zPzq)?a.q)?a.)? zPz)?_⏾pS)?_⏾pS)?XPq)?z-ګq)?z-ګ)?XPq)?~mq)?~m)?XP)?Ր}*?&D)?&Ѓ*?Ӑ2)?&Ѓ)?̐i*?Ӑ2*?Ӑ2)?̐iq)?~q)?).P)?ڏ*?t揾*?t揾)?ڏq)?Qq)?Zpq)?%p*?)]*?)])?%pq)?i󎾀Vq)?)?#-*?B*?B)?#-q)?q)? *)? *?(&*?(&)? q)?fZq)?a.)?_⏾pS*?叾0*?叾0)?_⏾pSq)?z-ګq)?~m)?Ր*?JҐL*?JҐL)?ՐB*?&2)?Ր)?&B*?&2*?Ӑ2q)?~ *?rpþ *?rpþq)?~ *?V7PZq)?~q)?).P *?V7PZ *?V7PZq)?).P*?t揾*?t揾q)?Q *? *?q)?Q *?j0:q)?Qq)?Zpq *?j0: *?j0:q)?Zpq*?)]*?)]q)?i󎾀V *?P1 *?P1q)?i󎾀V *?tᎾ q)?i󎾀Vq)?͎ % *?tᎾ  *?tᎾ q)?͎ % *?Ǝ ҷq)?͎ %q)?Lⷽ *?Ǝ ҷ *?Ǝ ҷq)?Lⷽ *?wq)?Lⷽq)? *?w *?wq)?*?B*?Bq)? *? *?q)? *?Ŏq)?q)? *?Ŏ *?Ŏq)? *?.0q)?q)?m͎\ *?.0 *?.0q)?m͎\ *?oYq)?m͎\q)? * *?oY *?oYq)? **?(&*?(&q)?fZ *?7h N *?7h Nq)?fZ *? tq)?fZq)?a. *? t *? tq)?a.*?叾0*?叾0q)?z-ګ *?A4) *?A4)q)?z-ګ *?9ྫq)?z-ګq)?~m *?9ྫ *?9ྫq)?~m*?JҐL *?&P־}*?&DT *?ڐȾ}*?&D*?Ӑ2T *?ڐȾT *?ڐȾ*?Ӑ2 *?rpþ *?V7PZ*?t揾 *?*0 *?*0*?t揾 *? *?j0:*?)] *?gֻ *?gֻ*?)] *?P1 *?w*?B *?Ž 7 *?Ž 7*?B *? *?oY*?(& *?1 *?1*?(& *?7h N *? t*?叾0 *?JPs *?JPs*?叾0 *?A4) *?9ྫ*?JҐL *?䫽 *?䫽*?JҐL *?&*?JҐLB*?&2 *?&T *?ڐȾ *?rpþ *?*0 *?rpþ *?V7PZ *?*0 *?*0 *? *?gֻ *? *?j0: *?gֻ *?gֻ *?P1|*?Xp *?P1 *?tᎾ |*?Xp|*?Xp *?tᎾ *?Ž 7 *?tᎾ  *?Ǝ ҷ *?Ž 7 *?Ǝ ҷ *?w *?Ž 7 *?Ž 7 *?|*?ю{ *? *?Ŏ|*?ю{|*?ю{ *?Ŏ *?1 *?Ŏ *?.0 *?1 *?.0 *?oY *?1 *?1 *?7h N *?JPs *?7h N *? t *?JPs *?JPs *?A4) *?䫽 *?A4) *?9ྫ *?䫽*?&v *?&P־*?ِb *?&P־T *?ڐȾ*?ِb*?ِbT *?ڐȾ*?>P&T *?ڐȾ *?*0*?>P&*?>P& *?*0*?0E ý*?0E ý *?*0*?:*?: *?*0*?׿0 *?*0 *?gֻ*?׿0*?׿0 *?gֻ*?ԅû*?ԅû *?gֻ*?Rۺ*?Rۺ *?gֻ*?(۹ *?gֻ|*?Xp*?(۹*?(۹|*?Xp*?@Ƹ*?@Ƹ|*?Xp*?-펾|*?Xp *?Ž 7*?-펾*?-펾 *?Ž 7*?ގ`s*?ގ`s *?Ž 7*?َp?*?َp? *?Ž 7*?ގp *?Ž 7|*?ю{*?ގp *?ގp |*?ю{*?-펾ܲ*?-펾ܲ|*?ю{*?|*?ю{ *?1*?*? *?1*?(У*?(У *?1*?R0*?R0 *?1*?ԅ *?1 *?JPs*?ԅ *?ԅ *?JPs*?׿ﭽ*?׿ﭽ *?JPs*?@D*?@D *?JPs*?0E *?JPs *?䫽*?0E*?0E *?䫽*?>X*?>X *?䫽*?ِP*?ِP *?䫽*?&  *?䫽 *?&*?& )? 0)?Pq)?ϑ@lq)?ϑ@l)?Pq)?٫q)?٫)?P)?"s@e)?"s@e)?ےq)?ֲ-q)?ֲ-)?ےq)?p q)?p )?ے)?2@)?2@)?:vPɰq)?eZ`(q)?eZ`()?:vPɰq)?Yq)?Y)?:vPɰ)?p)?p)?P鳽q)?) 곽q)?) 곽)?P鳽q)?DZ=)?P鳽)?Ƶq)?DZ=q)?DZ=)?Ƶq)?BБq)?BБ)?Ƶq)?߷)?Ƶ)?巽q)?߷q)?߷)?巽q)?``")?巽)?iqܹq)?``"q)?``")?iqܹq)?ZSq)?ZS)?iqܹq)?+0o)?iqܹ)?q)?+0oq)?+0o)?q)?g`oq)?g`o)?q)?lP)?)?ܵ0_q)?lPq)?lP)?ܵ0_q)?l` )?ܵ0_)?pD|q)?l` q)?l` )?pD|q)?R 0q)?R 0)?pD|q)?ϑ)?pD|)?Б#q)?ϑq)?ϑ)?Б#)?8xPn}*?&P:)?&*?yL)?&)? 0*?yL*?yL)? 0q)?ϑ@lq)?٫)?"s@e*?Yg*?Yg)?"s@eq)?ֲ-q)?p )?2@*?#!*?#!)?2@q)?eZ`(q)?Y)?p*?p*?p)?pq)?) 곽q)?ϑ)?8xPn*?{2*?{2)?8xPnB*?& L)?8xPn)?&0B*?& L*?yLq)?ϑ@l *?\ȑ` *?\ȑ`q)?ϑ@l *?w$q)?ϑ@lq)?٫ *?w$ *?w$q)?٫*?Yg*?Ygq)?ֲ- *?l *?lq)?ֲ- *?;㒾Dq)?ֲ-q)?p  *?;㒾D *?;㒾Dq)?p *?#!*?#!q)?eZ`( *?GM *?GMq)?eZ`( *?Yltq)?eZ`(q)?Y *?Ylt *?Yltq)?Y*?p*?pq)?) 곽 *?Wﳽ *?Wﳽq)?) 곽 *?򜓾8q)?) 곽q)?DZ= *?򜓾8 *?򜓾8q)?DZ= *?ŗq)?DZ=q)?BБ *?ŗ *?ŗq)?BБ *?臓@ŷq)?BБq)?߷ *?臓@ŷ *?臓@ŷq)?߷ *?mq)?߷q)?``" *?m *?mq)?``" *?5pq)?``"q)?ZS *?5pq)?ZSq)?+0o *?5p *?5pq)?+0o *?咾0q)?+0oq)?g`o *?咾0 *?咾0q)?g`o *?ŧ q)?g`oq)?lP *?ŧ  *?ŧ q)?lP *?^c½q)?lPq)?l`  *?^c½ *?^c½q)?l`  *?0Uq)?l` q)?R 0 *?0U *?0Uq)?R 0 *?ˑq)?R 0q)?ϑ *?ˑ *?ˑq)?ϑ*?{2}*?&P:*?yL *?' *?'*?yL *?\ȑ` *?w$*?Yg *?D#{ *?D#{*?Yg *?l *?;㒾D*?#! *?撾 *?撾*?#! *?GM *?Ylt*?p *?fֱ *?fֱ*?p *?Wﳽ *?ˑ*?{2 *?+ *?+*?{2 *?&᾽*?{2B*?& L *?&᾽ *?' *?\ȑ` *?D#{ *?\ȑ` *?w$ *?D#{ *?D#{ *?l *?撾 *?l *?;㒾D *?撾 *?撾 *?GM *?fֱ *?GM *?Ylt *?fֱ *?fֱ *?Wﳽ|*?` *?Wﳽ *?򜓾8|*?`|*?` *?򜓾8|*?$| *?򜓾8 *?ŗ|*?$| *?ŗ *?臓@ŷ|*?$||*?$| *?臓@ŷ|*?J^ *?臓@ŷ *?m|*?J^ *?m *?5p|*?J^|*?J^ *?5p|*?q *?5p *?咾0|*?q|*?q *?咾0|*?`} *?咾0 *?ŧ |*?`} *?ŧ  *?^c½|*?`}|*?`} *?^c½ *?+ *?^c½ *?0U *?+ *?0U *?ˑ *?+*?&  *?'*?sP*?sP *?'*?X *?' *?D#{*?X*?X *?D#{*?*? *?D#{*?M@D*?M@D *?D#{*?ﭽ *?D#{ *?撾*?ﭽ*?ﭽ *?撾*?ǒ *?ǒ *?撾*?0*?0 *?撾*?%У *?撾 *?fֱ*?%У*?%У *?fֱ*?G*?G *?fֱ*?`ܲ*?`ܲ *?fֱ*?op *?fֱ|*?`*?op *?op |*?`*?tp?*?tp?|*?`*?o`s|*?`|*?$|*?o`s*?o`s|*?$|*?`*?`|*?$|*?G@Ƹ|*?$||*?J^*?G@Ƹ*?G@Ƹ|*?J^*?%۹*?%۹|*?J^*?ۺ|*?J^|*?q*?ۺ*?ۺ|*?q*?ǒû*?ǒû|*?q*?0|*?q|*?`}*?0*?0|*?`}*?M:*?M:|*?`}*? ý|*?`} *?+*? ý*? ý *?+*?P&*?P& *?+*?sb*?sb *?+*?&v *?+ *?&᾽*?&v?b@ý?P@?Cϕ?Cϕ?|j?b@ý?|j?4p??b@ý?4p??Ҟ?/]?|j`k?|j0?V?|j0?/]?V?/]?Ҟ?V?4p??/]?cP?cP?/]?O3]? PĽ?`˽?|j?|j?`˽?4p??`˽??4p???`쩽?4p??4p??`쩽?Ҟ%?Cϕ%?|j%?|jp˽%?4p?%?Ҟ%?/]%?|j0%?/]%? %?/]%?Ҟ%? %?4p?%?/]%?cP%?cP%?/]%?O3]%?P@%?Cϕ%?b@ý%?Cϕ%?4p?%?b@ý%?|jp˽%?'½%?Cϕ%?'½%?`˽%?Cϕ%?Cϕ%?`˽%?4p?%?`˽%?%?4p?%?%?`쩽%?4p?%?4p?%?`쩽%?Ҟ?g:@L ?iЛ?|j?v`R>?S%?Cϕ%?Cϕ>?S?CϕL ?iЛ ?x򛾰`?|j ?x򛾰`g?Q! ?S  ?g:@k ?iЛ ?x򛾰`@!? P{!?v`R%?Cϕ ?x򛾰`! ?SE ?W ?x򛾰`k ?iЛ?|jk ?iЛ+I!?x򛾰`?|j?|j+I!?x򛾰`%?|j>?S&?W?Cϕ?Cϕ&?W<?/ߗЭ{!?v`R! ?S%?Cϕ2?< :?g:@?|jg?Q4?Fgp! ?S}?\ 0!u? P! ?S! ?S!u? P%?Cϕ%?Cϕ!u? P?v`R4?Fgp꽷?5S! ?S! ?S?5S}?\ 0?< :  ?g:@ ?x򛾰`+I!?x򛾰`!?Q%?|j%?|j!?QRJ"?Fgp꽝T"?] @!? P%?CϕE ?W?0ߗЭ ?x򛾰`<?/ߗЭY??Cϕ?CϕY??|j?|jY?q2?< :?0ߗЭw? ?x򛾰` ?x򛾰`w?ー?< :RJ"?Fgpp"?5S%?|j%?|jp"?5S%?Cϕ%?Cϕp"?5S}T"?]  ?yv`\`?/]? e?SF_g?`Nd~ ? ? eЏ ?yv`\`?/]!?9;||!?ϛ@%?|j0?SF_~ ?L ?Q@^?ϛ@`>?%?|j0%?|j0`>??|j0Џ ?yv`\`H!?SF_?/]?/]H!?SF_%?/]`>?-?Q@?|j0?|j0-?Q@<?sg@g?`Nd'?ߗk~ ?||!?ϛ@~ ?%?|j0l2? m? e?/]'?ߗk?2 *u~ ?~ ??2 *u?b;~?b;~u?9;~ ?~ ?u?9;%?|j0%?|j0u?9;^?ϛ@ ? e?/]?SF_?/] ?yv`\`?SF_H!?SF_!?`Nd%?/]%?/]!?`NdFJ"?ߗk?SF_? m ? eT"?b;~!?9;%?|j0L ?Q@?sg@?SF_?sg@z?C6Zv?SF_?SF_z?C6Zv? m<?sg@[?D6Zv?|j0?|j0[?D6Zv?/]?/][?D6Zvl2? mFJ"?ߗkp"?2 *u%?/]%?/]p"?2 *u%?|j0%?|j0p"?2 *uT"?b;~%?Opz;?O@O?O󭽫\!?O@O& ?O%?Opzo)?O ?O?Opz%?Opz?O?Opz?Oo)?O ?Opz?O_?Oï?Opz?Opz_?Oï $?OLb?Ob ?O@g?O/& ?O0$ ?O%?Opz%?Opz0$ ?O;?O@O0$ ?Oq?O`K;?O@O?O8Žg?O/x?O] ?Ou ?O %?O8Ž ?O |'!?O@%?O8Ž%?O8Ž|'!?O@c!?OP2$?O`e1$?O`\!?O@Oe1$?O`s#?O\!?O@O\!?O@Os#?Oc!?OP2*?O/?O?O8Ž]%?OҦ$?O@%?Opz%?Opz$?O@\!?O@O\!?O@O$?O@$?O` $?OLWu?Oְ?O $?OLB?O`u?Opz?OpzB?O`u?Op馽?O ?OD $?OL $?OL ?ODB?O`ur?ObU?O*?O/U?O?Oi*?O/*?O/?Oi $?OL $?OL?OiWu?Oְ?Ob?Ob?O8Ž?O8Žb?Obg?O/;?O@Oq?O`K%?O@2q?O`Kg?O/%?O@2g?O/ ?O@%?O@2s#?O$?Oc!?OP2c!?OP2$?Og$?Oc!?OP2YD%?O ý%?O8Ž%?O8ŽYD%?O ý%?Opý=?Oý ?O?O8Ž?O8Ž ?O*?O/*?O/ ?Or?Ob?O8Žx?O%?O8Žx?O] ?Ou%?O8Žg$?O!$?O0:c!?OP2c!?OP2!$?O0:YD%?O ý?OhG#?O?O0߽f ?O@ ?O!d{?O`%?O0߽d{?O`?ORG#?Oڻ?O!?O0߽ڻ?O!I?O?O0߽?O0߽I?O?O ^I?O?OЍ?O ^ ?OЍO ?O@?O ^c!?OPWS!?O%?O ^S!?O"?O%?O ^%?O ^"?O%?O0߽?OPW5F?O ?OЍ򽫆?OЍ1?O@?O ^"?O"?Op%?O0߽"?Op!?OR%?O0߽@ ?O!h ?Od{?O`d{?O`h ?OƁ?Oh ?O ?OЍƁ?O ?OЍ5F?OƁ?O%?O0߽?OR?O0߽?OR轘?Oh?O0߽1?O@v|?O@?O ^O ?O@!?O@?O ^?O ^!?O@%?O ^%?O ^!?O@c!?OPW!?OR轷 !?Oh%?O0߽%?O0߽ !?Ohd{?O`콷 !?Ohf ?Od{?O`?O ^v|?O@ ?OЍv|?O@?OPW ?OЍf ?O Of@ ?Ojd{?Oo?O5F?O] ?O{!?Oc!?O%?Oڊ?O{1?O,?Oڊ?Oڊ ?O{O ?O,c!?OS!?O]%?OڊS!?O]"?O@y%?Oڊ%?Oڊ"?O@y%?O`A`"?O@y"?Oo%?O`A`d{?Oo?O@+g%?O`A`G#?O Ofڻ?Oj?O`A`ڻ?OjI?Oq?O`A`?O`A`I?Oq?OڊI?Oq?O{?Oڊ"?Oo!?O@+g%?O`A`1?O,v|?O?Oڊ?Oڊv|?O ?O{v|?O?O ?O{@ ?Ojh ?Oqd{?Ood{?Ooh ?OqƁ?O@yh ?Oq ?O{Ɓ?O@y ?O{5F?O]Ɓ?O@y?OڊO ?O,%?OڊO ?O,!?O%?Oڊ!?O@+g !?O We%?O`A`?O@+g?O We%?O`A`%?O`A`?O We?O`A`?O`A`?O WeG#?O Of%?O`A` !?O Wed{?Oo !?O Wef ?O Ofd{?OoG:!?뛾 &!? $&!?n$&!?n$u&!?n@G:!?뛾 3}!?n!?nG !?: !?:H{!?̛3}!?n3}!?nH{!?̛u&!?n@u&!?n@H{!?̛G:!?뛾 !?:!?nG>!?p@ V>!?p@ V!?nG"?P2!?nG4"?nz"?P2lf"?X™@zJI"?fC"?n7C"?n7JI"?f4"?nz4"?nzJI"?f"?P2C"?n7c"?nC{lf"?X™@zo"?]tn"?nua"?Rdon"?nuc"?n@Apa"?Rdon"?nuo"?]tc"?nC{c"?nC{o"?]tlf"?X™@z"?8pfE"?՗ZkC"?nkC"?nkE"?՗Zkc"?n@Apc"?n@ApE"?՗Zka"?Rdo4"?nf!?n@b!?YQb!?YQb"?8pf4"?nf4"?nf"?8pfC"?nk&!?VR@;_b!?Wg`_D!?n`_D!?n`_b!?Wg`_3}!?n~`3}!?n~`b!?Wg`_!?n@bb!?Wg`_!?YQb!?n@b(?뛾 ? $?n$?n$V?n@(?뛾 ?nG?nG:?::?:)?̛?n?n)?̛V?n@V?n@)?̛(?뛾 :?:G?nGo?p@ Vo?p@ VG?nGx?P2G?nG?nzx?P2M?Y™@z,?fp?n7p?n7,?f?nz?nz,?fx?P2p?n7?nC{M?Y™@z?^tz?nu?Sdoz?nu?n@Ap?Sdoz?nu?^t?nC{?nC{?^tM?Y™@zЊ?8pf?՗Zkp?nkp?nk?՗Zk?n@Ap?n@Ap?՗Zk?Sdo?nfG?n@b9?YQb9?YQbЊ?8pf?nf?nfЊ?8pfp?nk?VR@;_?Wg`_%?n`_%?n`_?Wg`_?n~`?n~`?Wg`_G?n@b?Wg`_9?YQbG?n@bL?뛾u? Z?nZ?nZ佸`?neL?뛾u ?nu?n7 ?: ?: ?̛ ?n ?n ?̛佸`?ne佸`?ne ?̛L?뛾u ?:u?n7?p@(?p@(u?n7潖m?Lu?n7v?n0轖m?L ?W™!=?f`꽟C?n0G꽟C?n0G=?f`v?n0v?n0=?f`꽖m?L轟C?n0G꽁#?n ?W™!{?])?nF%?RdИ?na#?n0^F%?RdИ?n{?])#?n콁#?n{?]) ?W™!?w?8FEA?՗C?n C?n EA?՗#?n0^#?n0^EA?՗F%?RdИv?n 7u?n@?YPV?YPV?w?8Fv?n 7v?n 7?w?8FC?n ?bOV? op ?np? ?np?V? opu?n@V? op?YPVu?n@ ?np??n?bO ?뛾u&!? Z&!?nZ&!?nZ ?ne ?뛾u ?n佔? ?n7+M ?:+M ?: ?̛ ?n ?n ?̛ ?ne ?ne ?̛ ?뛾u+M ?:彔? ?n7 ?p@( ?p@(罔? ?n7潵?L轔? ?n7?n0轵?L?X™!?f`꽾?n0G꽾?n0G?f`?n0?n0?f`꽵?L轾?n0G꽠?n?X™!?])𽴝?ne?SdИ򽴝?n⦆?n0^e?SdИ򽴝?nz?])𽠨?n콠?n콚?])?X™!^?8Fd?՗?n ?n d?՗?n0^򽠨?n0^d?՗e?SdИ?n 7? ?n@9M ?YPV9M ?YPV^?8F?n 7?n 7^?8F?n !?bOu ? op ?np? ?np?u ? op? ?n@u ? op9M ?YPV? ?n@ ?np?!?n!?bO?VR@;_?n_G?WZ`_?n_ ?n~`G?WZ`_u?n@b?紖@Jb ?n~` ?n~`?紖@JbG?WZ`_u?n@bv?nf?紖@Jb?紖@Jbv?nf}?I,fB?ȗj}?I,fC?nkC?nk}?I,fv?nf&?_oB?ȗj#?n@Ap#?n@ApB?ȗjC?nk&?_o#?n@Ap?'䘾s#?n@Ap?nu?'䘾sq,?K)}s?~x#?nC{#?nC{s?~x?nus?~x?'䘾s?nu#?nC{C?n7q,?K)}?=&p킽LO?ȡ؀v?nzv?nzLO?ȡ؀C?n7C?n7LO?ȡ؀q,?K)}v?nzu?nG?=&p킽?=&p킽u?nGv?Ф ?ӛТv?Ф ?n ?nv?Фu?nG ?n`?n@ ?ӛТ ?ӛТ`?n@L?뛾 `?n@?n$L?뛾 L?뛾 ?n$? $!?n_ ?n~`!?XO_!?XO_ ?n~` ?]h`_? ?n@bH ?|`yb ?n~`H ?|`yb ?]h`_ ?n~`? ?n@b?nfH ?|`ybH ?|`yb?nf ?H,f?ȗj ?H,f?nk?nk ?H,f?nf<?_ o?ȗj?n@Ap?n@Ap?ȗj?nk<?_ o?n@Ap?+䘾s?n@Ap?nu?+䘾s?nC{?8x?nu?8x?+䘾s?nu?8x?nC{Դ?W }?nC{?n7Դ?W } ?=&p킽k?ȡ؀?nz?nzk?ȡ؀?n7?n7k?ȡ؀Դ?W }?nz? ?nG ?=&p킽 ?=&p킽? ?nGP ?Ф' ?ӛТP ?Ф ?n ?nP ?Ф? ?nG ?n ?n@' ?ӛТ' ?ӛТ ?n@ ?뛾 ?n@&!?n$ ?뛾 ?뛾 &!?n$&!? $ݸ?꛾zV?ne? ZV?ne?nZ? Z'?n?np?+?XO+?XO?np??]h G?n@F%?N`?np?F%?N`?]h ?np?F%?N`G?n@f?pGG?n@?n 7f?pG'?c?kVp?n p?n c?kV?n 7?n 7c?kVf?pG?n0^'?p?n '??n0^?+䘾?n0^z?nd?+䘾?n?6z?n?6?+䘾z?n?6?n콋?Wc꽍?np?n0G꽋?Wc4?fꚾ轋?Wc?n0?n0轋?Wcp?n0G4?fꚾ?n0f?xN?n0轙G?n7f?xN?ӛ佂%?餛P?n?n佂%?餛P彙G?n7潙G?n7潂%?餛Pf?xN?nV?ne?ӛ?ӛV?neݸ?꛾z=!?꛾zu&!?ne&!? Zu&!?ne&!?nZ&!? ZG!?n3}!?np?J!?XOJ!?XO3}!?np?_!?]h !?n@p!?|0B3}!?np?p!?|0B_!?]h 3}!?np?!?n@4"?n 7p!?|0Bp!?|0B4"?n 7 "?H,z$7"?ՠ "?H,zC"?n C"?n "?H,z4"?n 7am"?ۘPW"?'c"?n0^c"?n0^W"?'C"?n W"?'$7"?ՠC"?n c"?n0^n"?nam"?ۘPZ"?J 뽻k"?~/c"?n콫c"?n콻k"?~/n"?nサk"?~/am"?ۘPn"?nォc"?n콏C"?n0G꽽Z"?J @"?=&p7"?ȡ4"?n04"?n07"?ȡ齏C"?n0G꽏C"?n0G7"?ȡ齽Z"?J 4"?n0轸!?n7@"?=&p@"?=&p罸!?n7潸!?%q!?ӛ佸!?3}!?n3}!?n佸!?彸!?n73}!?nu&!?ne%q!?ӛ%q!?ӛu&!?ne=!?꛾z?%h?%h3?h?%h3?h?h3?h?k?h?h?k1?@sm?kFN?p1?@sm1?@smFN?p"[?@tFN?p"[?w"[?@t"[?@t"[?wFN?@z"[?w1?~FN?@zFN?@z1?~?1?~ ?U?? ?U?] ?U??]?]???0?03?p?03?p齄?33?p?꽄?3齄?3?1?v?FN?91?v1?vFN?9"[?FN?9"[?>"[?"[?"[?>FN?"[?>1?@FN?FN?1?@0?p1?@?0?p?? l0?p0?p? l? l&!?0s!?轢R!?3s!?v!?齢R!?3齢R!?3v!?!?vv!?齩!?pp!?v!?v뽩!?ppA!?!?ppA!?>A!?A!?A!?>e!?A!?>!?@e!?e!?!?@!?P!?@R!?!?P!?PR!?QJ!?R!?&!? lQJ!?QJ!?&!? l&!? l&!?%h&!?%hQJ!?h&!?%hQJ!?hR!?hQJ!?h!? kR!?hR!?h!? k!?@sm!? ke!?p!?@sm!?@sme!?pA!?@te!?pA!?wA!?@tA!?@tA!?w!?|A!?w!?~!?|!?|!?~v!?`!?~R!?0Kv!?`v!?`R!?0Ks!?ŁR!?0K&!?s!?Ł!?Ł_ ?`!?ҁ!?ҁ_ ?` ?_ ?`[ ?@?~ ? ?[ ?@?~[ ?@?~[ ?@?~8 ?@z[ ?@?~[ ?@?~8 ?@z"- ?`sx8 ?@z"- ?s"- ?`sx"- ?`sx"- ?sA ? ho"- ?s0h ?FlA ? hoA ? ho0h ?Fl` ? j0h ?Fl ?h` ? j` ? j ?h!?g ?h&!?%h!?g&!? l!?p ?!?p` ?{ ? ?` ?{0h ?p[` ?{A ?0h ?p[0h ?p[A ?"- ?A ?"- ?0E"- ?"- ?"- ?0E8 ?9"- ?0E[ ?@_8 ?98 ?9[ ?@_[ ?@_[ ?@_ ?[ ?@_[ ?@_ ?_ ? ?齩!?_ ?_ ?齩!?!?? l?p4??pA?{4?4?A?{?p[A?{??p[?p[??𽅼??0E???0Eɳ?9?0E?@_ɳ?9ɳ?9?@_뽽?@_뽽?@_?齽?@_뽽?@_?A??齋?A?A?齋?轺??^;?]g?ځg?ځ^;?]?^;?]L???L??@?~L?ɳ?@z?@?~?@?~ɳ?@z?`sxɳ?@z?s?`sx?`sx?sɳ?p?s?Flɳ?pɳ?p?Fl?Em?Em?FlA? j?Fl4?hA? jA? j4?h?g4?h?%h?g$?p$?dpd?d@$?pd?d@?Pd?d@A?dp?P?PA?dp?0A?dp?d`Y?0?d`Y?d?0?0?d?@`?d?d?@`?@`?d?%?%?dA?pj?d?dyA?pjA?pj?dyd?ʻ?dy$?d d?ʻd?ʻ$?d $? b ?dP^. ?dBb ?Rb ?R. ?dBH ?c. ?dB!?dࣱH ?cH ?c!?dࣱ-!?-!?!?dࣱ+!?P!?dࣱ&=!?d+!?P+!?P&=!?d&=!?@`&=!?d+!?d鷽&=!?@`&=!?@`+!?d鷽!?۸+!?d鷽-!?d`͹!?۸-!?d`͹H ?d0!?۸!?۸H ?d0. ?SDATAh`u-c  $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y                ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | }              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y   !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy               ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | } !!!!!! !! ! !!!!!!!!!$!&!$!%!(!)!0!2!0!1!4!5!!$<$=$@$A$H$J$H$I$L$M$T$V$T$U$X$Y$`$b$`$a$d$e$l$n$l$m$p$q$x$z$x$y$|$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %% % % %%%%%%% %"% %!%$%%%,%.%,%-%0%1%8%:%8%9%<%=%D%F%D%E%H%I%P%R%P%Q%T%U%\%^%\%]%`%a%h%j%h%i%l%m%t%v%t%u%x%y%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&& &&&&&&&&&&& &!&(&*&(&)&,&-&4&6&4&5&8&9&@&B&@&A&D&E&L&N&L&M&P&Q&X&Z&X&Y&\&]&d&f&d&e&h&i&p&r&p&q&t&u&|&~&|&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''' '' ' '''''''''$'&'$'%'(')'0'2'0'1'4'5'<'>'<'='@'A'H'J'H'I'L'M'T'V'T'U'X'Y'`'b'`'a'd'e'l'n'l'm'p'q'x'z'x'y'|'}'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((( (( ( ( ((((((( ("( (!($(%(,(.(,(-(0(1(8(:(8(9(<(=(D(F(D(E(H(I(P(R(P(Q(T(U(\(^(\(](`(a(h(j(h(i(l(m(t(v(t(u(x(y((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))) ))))))))))) )!)()*)())),)-)4)6)4)5)8)9)@)B)@)A)D)E)L)N)L)M)P)Q)X)Z)X)Y)\)])d)f)d)e)h)i)p)r)p)q)t)u)|)~)|)})))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****** ** * *********$*&*$*%*(*)*0*2*0*1*4*5*<*>*<*=*@*A*H*J*H*I*L*M*T*V*T*U*X*Y*`*b*`*a*d*e*l*n*l*m*p*q*x*z*x*y*|*}*****************************************************************+++ ++ + + +++++++ +"+ +!+$+%+,+.+,+-+0+1+8+:+8+9+<+=+D+F+D+E+H+I+P+R+P+Q+T+U+\+^+\+]+`+a+h+j+h+i+l+m+t+v+t+u+x+y+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,, ,,,,,,,,,,, ,!,(,*,(,),,,-,4,6,4,5,8,9,@,B,@,A,D,E,L,N,L,M,P,Q,X,Z,X,Y,\,],d,f,d,e,h,i,p,r,p,q,t,u,|,~,|,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------ -- - ---------$-&-$-%-(-)-0-2-0-1-4-5-<->-<-=-@-A-H-J-H-I-L-M-T-V-T-U-X-Y-`-b-`-a-d-e-l-n-l-m-p-q-x-z-x-y-|-}-----------------------------------------------------------------... .. . . ....... .". .!.$.%.,...,.-.0.1.8.:.8.9.<.=.D.F.D.E.H.I.P.R.P.Q.T.U.\.^.\.].`.a.h.j.h.i.l.m.t.v.t.u.x.y...................................................................///// /////////// /!/(/*/(/)/,/-/4/6/4/5/8/9/@/B/@/A/D/E/L/N/L/M/P/Q/X/Z/X/Y/\/]/d/f/d/e/h/i/p/r/p/q/t/u/|/~/|/}///////////////////////////////////////////////////////////////000000 00 0 000000000$0&0$0%0(0)0002000104050<0>0<0=0@0A0H0J0H0I0L0M0T0V0T0U0X0Y0`0b0`0a0d0e0l0n0l0m0p0q0x0z0x0y0|0}00000000000000000000000000000000000000000000000000000000000000000111 11 1 1 1111111 1"1 1!1$1%1,1.1,1-1011181:18191<1=1D1F1D1E1H1I1P1R1P1Q1T1U1\1^1\1]1`1a1h1j1h1i1l1m1t1v1t1u1x1y111111111111111111111111111111111111111111111111111111111111111111122222 22222222222 2!2(2*2(2)2,2-2426242528292@2B2@2A2D2E2L2N2L2M2P2Q2X2Z2X2Y2\2]2d2f2d2e2h2i2p2r2p2q2t2u2|2~2|2}222222222222222222222222222222222222222222222222222222222222222333333 33 3 333333333$3&3$3%3(3)3032303134353<3>3<3=3@3A3H3J3H3I3L3M3T3V3T3U3X3Y3`3b3`3a3d3e3l3n3l3m3p3q3x3z3x3y3|3}33333333333333333333333333333333333333333333333333333333333333333444 44 4 4 4444444 4"4 4!4$4%4,4.4,4-4041484:48494<4=4D4F4D4E4H4I4P4R4P4Q4T4U4\4^4\4]4`4a4h4j4h4i4l4m4t4v4t4u4x4y444444444444444444444444444444444444444444444444444444444444444444455555 55555555555 5!5(5*5(5)5,5-5456545558595@5B5@5A5D5E5L5N5L5M5P5Q5X5Z5X5Y5\5]5d5f5d5e5h5i5p5r5p5q5t5u5|5~5|5}555555555555555555555555555555555555555555555555555555555555555666666 66 6 666666666$6&6$6%6(6)6062606164656<6>6<6=6@6A6H6J6H6I6L6M6T6V6T6U6X6Y6`6b6`6a6d6e6l6n6l6m6p6q6x6z6x6y6|6}66666666666666666666666666666666666666666666666666666666666666666777 77 7 7 7777777 7"7 7!7$7%7,7.7,7-7071787:78797<7=7D7F7D7E7H7I7P7R7P7Q7T7U7\7^7\7]7`7a7h7j7h7i7l7m7t7v7t7u7x7y777777777777777777777777777777777777777777777777777777777777777777788888 88888888888 8!8(8*8(8)8,8-8486848588898@8B8@8A8D8E8L8N8L8M8P8Q8X8Z8X8Y8\8]8d8f8d8e8h8i8p8r8p8q8t8u8|8~8|8}888888888888888888888888888888888888888888888888888888888888888999999 99 9 999999999$9&9$9%9(9)9092909194959<9>9<9=9@9A9H9J9H9I9L9M9T9V9T9U9X9Y9`9b9`9a9d9e9l9n9l9m9p9q9x9z9x9y9|9}99999999999999999999999999999999999999999999999999999999999999999::: :: : : ::::::: :": :!:$:%:,:.:,:-:0:1:8:::8:9:<:=:D:F:D:E:H:I:P:R:P:Q:T:U:\:^:\:]:`:a:h:j:h:i:l:m:t:v:t:u:x:y:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;; ;;;;;;;;;;; ;!;(;*;(;);,;-;4;6;4;5;8;9;@;B;@;A;D;E;L;N;L;M;P;Q;X;Z;X;Y;\;];d;f;d;e;h;i;p;r;p;q;t;u;|;~;|;};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<< << < <<<<<<<<<$<&<$<%<(<)<0<2<0<1<4<5<<<><<<=<@<A<H<J<H<I<L<M<T<V<T<U<X<Y<`<b<`<a<d<e<l<n<l<m<p<q<x<z<x<y<|<}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== == = = ======= ="= =!=$=%=,=.=,=-=0=1=8=:=8=9=<===D=F=D=E=H=I=P=R=P=Q=T=U=\=^=\=]=`=a=h=j=h=i=l=m=t=v=t=u=x=y===================================================================>>>>> >>>>>>>>>>> >!>(>*>(>)>,>->4>6>4>5>8>9>@>B>@>A>D>E>L>N>L>M>P>Q>X>Z>X>Y>\>]>d>f>d>e>h>i>p>r>p>q>t>u>|>~>|>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????? ?? ? ?????????$?&?$?%?(?)?0?2?0?1?4?5??BEHKNQTWZ]<]=]@]A]H]J]H]I]L]M]T]V]T]U]X]Y]`]b]`]a]d]e]l]n]l]m]p]q]x]z]x]y]|]}]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^ ^ ^ ^^^^^^^ ^"^ ^!^$^%^,^.^,^-^0^1^8^:^8^9^<^=^D^F^D^E^H^I^P^R^P^Q^T^U^\^^^\^]^`^a^h^j^h^i^l^m^t^v^t^u^x^y^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_____ ___________ _!_(_*_(_)_,_-_4_6_4_5_8_9_@_B_@_A_D_E_L_N_L_M_P_Q_X_Z_X_Y_\_]_d_f_d_e_h_i_p_r_p_q_t_u_|_~_|_}_______________________________________________________________`````` `` ` `````````$`&`$`%`(`)`0`2`0`1`4`5`<`>`<`=`@`A`H`J`H`I`L`M`T`V`T`U`X`Y```b```a`d`e`l`n`l`m`p`q`x`z`x`y`|`}`````````````````````````````````````````````````````````````````aaa aa a a aaaaaaa a"a a!a$a%a,a.a,a-a0a1a8a:a8a9aEGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~         ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~                 % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~          ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~   %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~                % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~ !! ! ! ! ! !!!!!!!!!!#!!!"!%!&!-!/!-!.!1!2!9!;!9!:!=!>!E!G!E!F!I!J!Q!S!Q!R!U!V!]!_!]!^!a!b!i!k!i!j!m!n!u!w!u!v!y!z!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""" " """""""""""!""")"+")"*"-"."5"7"5"6"9":"A"C"A"B"E"F"M"O"M"N"Q"R"Y"["Y"Z"]"^"e"g"e"f"i"j"q"s"q"r"u"v"}""}"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""###### ## ##########%#'#%#&#)#*#1#3#1#2#5#6#=#?#=#>#A#B#I#K#I#J#M#N#U#W#U#V#Y#Z#a#c#a#b#e#f#m#o#m#n#q#r#y#{#y#z#}#~#################################################################$$ $ $ $ $ $$$$$$$$!$#$!$"$%$&$-$/$-$.$1$2$9$;$9$:$=$>$E$G$E$F$I$J$Q$S$Q$R$U$V$]$_$]$^$a$b$i$k$i$j$m$n$u$w$u$v$y$z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%% % %%%%%%%%%%%!%"%)%+%)%*%-%.%5%7%5%6%9%:%A%C%A%B%E%F%M%O%M%N%Q%R%Y%[%Y%Z%]%^%e%g%e%f%i%j%q%s%q%r%u%v%}%%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&& && &&&&&&&&&&%&'&%&&&)&*&1&3&1&2&5&6&=&?&=&>&A&B&I&K&I&J&M&N&U&W&U&V&Y&Z&a&c&a&b&e&f&m&o&m&n&q&r&y&{&y&z&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' ' ' ' ''''''''!'#'!'"'%'&'-'/'-'.'1'2'9';'9':'='>'E'G'E'F'I'J'Q'S'Q'R'U'V']'_']'^'a'b'i'k'i'j'm'n'u'w'u'v'y'z'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((( ( (((((((((((!("()(+()(*(-(.(5(7(5(6(9(:(A(C(A(B(E(F(M(O(M(N(Q(R(Y([(Y(Z(](^(e(g(e(f(i(j(q(s(q(r(u(v(}((}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))) )) ))))))))))%)')%)&)))*)1)3)1)2)5)6)=)?)=)>)A)B)I)K)I)J)M)N)U)W)U)V)Y)Z)a)c)a)b)e)f)m)o)m)n)q)r)y){)y)z)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))** * * * * ********!*#*!*"*%*&*-*/*-*.*1*2*9*;*9*:*=*>*E*G*E*F*I*J*Q*S*Q*R*U*V*]*_*]*^*a*b*i*k*i*j*m*n*u*w*u*v*y*z*******************************************************************++++ + +++++++++++!+"+)+++)+*+-+.+5+7+5+6+9+:+A+C+A+B+E+F+M+O+M+N+Q+R+Y+[+Y+Z+]+^+e+g+e+f+i+j+q+s+q+r+u+v+}++}+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,, ,, ,,,,,,,,,,%,',%,&,),*,1,3,1,2,5,6,=,?,=,>,A,B,I,K,I,J,M,N,U,W,U,V,Y,Z,a,c,a,b,e,f,m,o,m,n,q,r,y,{,y,z,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- - - - - --------!-#-!-"-%-&---/---.-1-2-9-;-9-:-=->-E-G-E-F-I-J-Q-S-Q-R-U-V-]-_-]-^-a-b-i-k-i-j-m-n-u-w-u-v-y-z-------------------------------------------------------------------.... . ...........!.".).+.).*.-...5.7.5.6.9.:.A.C.A.B.E.F.M.O.M.N.Q.R.Y.[.Y.Z.].^.e.g.e.f.i.j.q.s.q.r.u.v.}..}.~...............................................................////// // //////////%/'/%/&/)/*/1/3/1/2/5/6/=/?/=/>/A/B/I/K/I/J/M/N/U/W/U/V/Y/Z/a/c/a/b/e/f/m/o/m/n/q/r/y/{/y/z/}/~/////////////////////////////////////////////////////////////////00 0 0 0 0 00000000!0#0!0"0%0&0-0/0-0.0102090;090:0=0>0E0G0E0F0I0J0Q0S0Q0R0U0V0]0_0]0^0a0b0i0k0i0j0m0n0u0w0u0v0y0z00000000000000000000000000000000000000000000000000000000000000000001111 1 11111111111!1"1)1+1)1*1-1.15171516191:1A1C1A1B1E1F1M1O1M1N1Q1R1Y1[1Y1Z1]1^1e1g1e1f1i1j1q1s1q1r1u1v1}11}1~111111111111111111111111111111111111111111111111111111111111111222222 22 2222222222%2'2%2&2)2*2123212225262=2?2=2>2A2B2I2K2I2J2M2N2U2W2U2V2Y2Z2a2c2a2b2e2f2m2o2m2n2q2r2y2{2y2z2}2~2222222222222222222222222222222222222222222222222222222222222222233 3 3 3 3 33333333!3#3!3"3%3&3-3/3-3.3132393;393:3=3>3E3G3E3F3I3J3Q3S3Q3R3U3V3]3_3]3^3a3b3i3k3i3j3m3n3u3w3u3v3y3z33333333333333333333333333333333333333333333333333333333333333333334444 4 44444444444!4"4)4+4)4*4-4.45474546494:4A4C4A4B4E4F4M4O4M4N4Q4R4Y4[4Y4Z4]4^4e4g4e4f4i4j4q4s4q4r4u4v4}44}4~444444444444444444444444444444444444444444444444444444444444444555555 55 5555555555%5'5%5&5)5*5153515255565=5?5=5>5A5B5I5K5I5J5M5N5U5W5U5V5Y5Z5a5c5a5b5e5f5m5o5m5n5q5r5y5{5y5z5}5~5555555555555555555555555555555555555555555555555555555555555555566 6 6 6 6 66666666!6#6!6"6%6&6-6/6-6.6162696;696:6=6>6E6G6E6F6I6J6Q6S6Q6R6U6V6]6_6]6^6a6b6i6k6i6j6m6n6u6w6u6v6y6z66666666666666666666666666666666666666666666666666666666666666666667777 7 77777777777!7"7)7+7)7*7-7.75777576797:7A7C7A7B7E7F7M7O7M7N7Q7R7Y7[7Y7Z7]7^7e7g7e7f7i7j7q7s7q7r7u7v7}77}7~777777777777777777777777777777777777777777777777777777777777777888888 88 8888888888%8'8%8&8)8*8183818285868=8?8=8>8A8B8I8K8I8J8M8N8U8W8U8V8Y8Z8a8c8a8b8e8f8m8o8m8n8q8r8y8{8y8z8}8~8888888888888888888888888888888888888888888888888888888888888888899 9 9 9 9 99999999!9#9!9"9%9&9-9/9-9.9192999;999:9=9>9E9G9E9F9I9J9Q9S9Q9R9U9V9]9_9]9^9a9b9i9k9i9j9m9n9u9w9u9v9y9z9999999999999999999999999999999999999999999999999999999999999999999:::: : :::::::::::!:":):+:):*:-:.:5:7:5:6:9:::A:C:A:B:E:F:M:O:M:N:Q:R:Y:[:Y:Z:]:^:e:g:e:f:i:j:q:s:q:r:u:v:}::}:~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;; ;; ;;;;;;;;;;%;';%;&;);*;1;3;1;2;5;6;=;?;=;>;A;B;I;K;I;J;M;N;U;W;U;V;Y;Z;a;c;a;b;e;f;m;o;m;n;q;r;y;{;y;z;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< < < < < <<<<<<<<!<#<!<"<%<&<-</<-<.<1<2<9<;<9<:<=<><E<G<E<F<I<J<Q<S<Q<R<U<V<]<_<]<^<a<b<i<k<i<j<m<n<u<w<u<v<y<z<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==== = ===========!="=)=+=)=*=-=.=5=7=5=6=9=:=A=C=A=B=E=F=M=O=M=N=Q=R=Y=[=Y=Z=]=^=e=g=e=f=i=j=q=s=q=r=u=v=}==}=~===============================================================>>>>>> >> >>>>>>>>>>%>'>%>&>)>*>1>3>1>2>5>6>=>?>=>>>A>B>I>K>I>J>M>N>U>W>U>V>Y>Z>a>c>a>b>e>f>m>o>m>n>q>r>y>{>y>z>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ? ? ? ? ????????!?#?!?"?%?&?-?/?-?.?1?2?9?;?9?:?=?>?E?G?E?F?I?J?Q?S?Q?R?U?V?]?_?]?^?a?b?i?k?i?j?m?n?u?w?u?v?y?z???????????????????????????????????????????????????????????????????@@@@ @ @@@@@@@@@@@!@"@)@+@)@*@-@.@5@7@5@6@9@:@A@C@A@B@E@F@M@O@M@N@Q@R@Y@[@Y@Z@]@^@e@g@e@f@i@j@q@s@q@r@u@v@}@@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAA AA AAAAAAAAAA%A'A%A&A)A*A1A3A1A2A5A6A=A?A=A>AAABAIAKAIAJAMANAUAWAUAVAYAZAaAcAaAbAeAfAmAoAmAnAqArAyA{AyAzA}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB B B B B BBBBBBBB!B#B!B"B%B&B-B/B-B.B1B2B9B;B9B:B=B>BEBGBEBFBIBJBQBSBQBRBUBVB]B_B]B^BaBbBiBkBiBjBmBnBuBwBuBvByBzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC C CCCCCCCCCCC!C"C)C+C)C*C-C.C5C7C5C6C9C:CACCCACBCECFCMCOCMCNCQCRCYC[CYCZC]C^CeCgCeCfCiCjCqCsCqCrCuCvC}CC}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDD DD DDDDDDDDDD%D'D%D&D)D*D1D3D1D2D5D6D=D?D=D>DADBDIDKDIDJDMDNDUDWDUDVDYDZDaDcDaDbDeDfDmDoDmDnDqDrDyD{DyDzD}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEE E E E E EEEEEEEE!E#E!E"E%E&E-E/E-E.E1E2E9E;E9E:E=E>EEEGEEEFEIEJEQESEQEREUEVE]E_E]E^EaEbEiEkEiEjEmEnEuEwEuEvEyEzEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFF F FFFFFFFFFFF!F"F)F+F)F*F-F.F5F7F5F6F9F:FAFCFAFBFEFFFMFOFMFNFQFRFYF[FYFZF]F^FeFgFeFfFiFjFqFsFqFrFuFvF}FF}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGG GG GGGGGGGGGG%G'G%G&G)G*G1G3G1G2G5G6G=G?G=G>GAGBGIGKGIGJGMGNGUGWGUGVGYGZGaGcGaGbGeGfGmGoGmGnGqGrGyG{GyGzG}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHH H H H H HHHHHHHH!H#H!H"H%H&H-H/H-H.H1H2H9H;H9H:H=H>HEHGHEHFHIHJHQHSHQHRHUHVH]H_H]H^HaHbHiHkHiHjHmHnHuHwHuHvHyHzHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIII I IIIIIIIIIII!I"I)I+I)I*I-I.I5I7I5I6I9I:IAICIAIBIEIFIMIOIMINIQIRIYI[IYIZI]I^IeIgIeIfIiIjIqIsIqIrIuIvI}II}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJ JJ JJJJJJJJJJ%J'J%J&J)J*J1J3J1J2J5J6J=J?J=J>JAJBJIJKJIJJJMJNJUJWJUJVJYJZJaJcJaJbJeJfJmJoJmJnJqJrJyJ{JyJzJ}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKK K K K K KKKKKKKK!K#K!K"K%K&K-K/K-K.K1K2K9K;K9K:K=K>KEKGKEKFKIKJKQKSKQKRKUKVK]K_K]K^KaKbKiKkKiKjKmKnKuKwKuKvKyKzKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLL L LLLLLLLLLLL!L"L)L+L)L*L-L.L5L7L5L6L9L:LALCLALBLELFLMLOLMLNLQLRLYL[LYLZL]L^LeLgLeLfLiLjLqLsLqLrLuLvL}LL}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMM MM MMMMMMMMMM%M'M%M&M)M*M1M3M1M2M5M6M=M?M=M>MAMBMIMKMIMJMMMNMUMWMUMVMYMZMaMcMaMbMeMfMmMoMmMnMqMrMyM{MyMzM}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN N N N N NNNNNNNN!N#N!N"N%N&N-N/N-N.N1N2N9N;N9N:N=N>NENGNENFNINJNQNSNQNRNUNVN]N_N]N^NaNbNiNkNiNjNmNnNuNwNuNvNyNzNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO O OOOOOOOOOOO!O"O)O+O)O*O-O.O5O7O5O6O9O:OAOCOAOBOEOFOMOOOMONOQOROYO[OYOZO]O^OeOgOeOfOiOjOqOsOqOrOuOvO}OO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPP PP PPPPPPPPPP%P'P%P&P)P*P1P3P1P2P5P6P=P?P=P>PAPBPIPKPIPJPMPNPUPWPUPVPYPZPaPcPaPbPePfPmPoPmPnPqPrPyP{PyPzP}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQ Q Q Q Q QQQQQQQQ!Q#Q!Q"Q%Q&Q-Q/Q-Q.Q1Q2Q9Q;Q9Q:Q=Q>QEQGQEQFQIQJQQQSQQQRQUQVQ]Q_Q]Q^QaQbQiQkQiQjQmQnQuQwQuQvQyQzQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRR R RRRRRRRRRRR!R"R)R+R)R*R-R.R5R7R5R6R9R:RARCRARBRERFRMRORMRNRQRRRYR[RYRZR]R^ReRgReRfRiRjRqRsRqRrRuRvR}RR}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSS SS SSSSSSSSSS%S'S%S&S)S*S1S3S1S2S5S6S=S?S=S>SASBSISKSISJSMSNSUSWSUSVSYSZSaScSaSbSeSfSmSoSmSnSqSrSyS{SySzS}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTT T T T T TTTTTTTT!T#T!T"T%T&T-T/T-T.T1T2T9T;T9T:T=T>TETGTETFTITJTQTSTQTRTUTVT]T_T]T^TaTbTiTkTiTjTmTnTuTwTuTvTyTzTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUU U UUUUUUUUUUU!U"U)U+U)U*U-U.U5U7U5U6U9U:UAUCUAUBUEUFUMUOUMUNUQURUYU[UYUZU]U^UeUgUeUfUiUjUqUsUqUrUuUvU}UU}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVV VV VVVVVVVVVV%V'V%V&V)V*V1V3V1V2V5V6V=V?V=V>VAVBVIVKVIVJVMVNVUVWVUVVVYVZVaVcVaVbVeVfVmVoVmVnVqVrVyV{VyVzV}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWW W W W W WWWWWWWW!W#W!W"W%W&W-W/W-W.W1W2W9W;W9W:W=W>WEWGWEWFWIWJWQWSWQWRWUWVW]W_W]W^WaWbWiWkWiWjWmWnWuWwWuWvWyWzWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXX X XXXXXXXXXXX!X"X)X+X)X*X-X.X5X7X5X6X9X:XAXCXAXBXEXFXMXOXMXNXQXRXYX[XYXZX]X^XeXgXeXfXiXjXqXsXqXrXuXvX}XX}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYY YY YYYYYYYYYY%Y'Y%Y&Y)Y*Y1Y3Y1Y2Y5Y6Y=Y?Y=Y>YAYBYIYKYIYJYMYNYUYWYUYVYYYZYaYcYaYbYeYfYmYoYmYnYqYrYyY{YyYzY}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZ Z Z Z Z ZZZZZZZZ!Z#Z!Z"Z%Z&Z-Z/Z-Z.Z1Z2Z9Z;Z9Z:Z=Z>ZEZGZEZFZIZJZQZSZQZRZUZVZ]Z_Z]Z^ZaZbZiZkZiZjZmZnZuZwZuZvZyZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[ [ [[[[[[[[[[[!["[)[+[)[*[-[.[5[7[5[6[9[:[A[C[A[B[E[F[M[O[M[N[Q[R[Y[[[Y[Z[][^[e[g[e[f[i[j[q[s[q[r[u[v[}[[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\ \\ \\\\\\\\\\%\'\%\&\)\*\1\3\1\2\5\6\=\?\=\>\A\B\I\K\I\J\M\N\U\W\U\V\Y\Z\a\c\a\b\e\f\m\o\m\n\q\r\y\{\y\z\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]] ] ] ] ] ]]]]]]]]!]#]!]"]%]&]-]/]-].]1]2]9];]9]:]=]>]E]G]E]F]I]J]Q]S]Q]R]U]V]]]_]]]^]a]b]i]k]i]j]m]n]u]w]u]v]y]z]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^ ^ ^^^^^^^^^^^!^"^)^+^)^*^-^.^5^7^5^6^9^:^A^C^A^B^E^F^M^O^M^N^Q^R^Y^[^Y^Z^]^^^e^g^e^f^i^j^q^s^q^r^u^v^}^^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______ __ __________%_'_%_&_)_*_1_3_1_2_5_6_=_?_=_>_A_B_I_K_I_J_M_N_U_W_U_V_Y_Z_a_c_a_b_e_f_m_o_m_n_q_r_y_{_y_z_}_~_________________________________________________________________`` ` ` ` ` ````````!`#`!`"`%`&`-`/`-`.`1`2`9`;`9`:`=`>`E`G`E`F`I`J`Q`S`Q`R`U`V`]`_`]`^`a`b`i`k`i`j`m`n`u`w`u`v`y`z```````````````````````````````````````````````````````````````````aaaa a aaaaaaaaaaa!a"a)a+a)a*a-a.a5a7a5a6a9a:aAaCaAaBaEaFaMaOaMaNaQaRaYa[aYaZa]a^aeagaeafaiajaqasaqarauava}aa}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbb bb bbbbbbbbbb%b'b%b&b)b*b1b3b1b2b5b6b=b?b=b>bAbBbIbKbIbJbMbNbUbWbUbVbYbZbabcbabbbebfbmbobmbnbqbrbyb{bybzb}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcc c c c c cccccccc!c#c!c"c%c&c  "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{             " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~            " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z {              " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~       "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~           " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z { !!!! ! !!!!!!!! !!!"!#!*!,!*!+!.!/!6!8!6!7!:!;!B!D!B!C!F!G!N!P!N!O!R!S!Z!\!Z![!^!_!f!h!f!g!j!k!r!t!r!s!v!w!~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""&"("&"'"*"+"2"4"2"3"6"7">"@">"?"B"C"J"L"J"K"N"O"V"X"V"W"Z"["b"d"b"c"f"g"n"p"n"o"r"s"z"|"z"{"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#""## # # # #########"#$#"###&#'#.#0#.#/#2#3#:#<#:#;#>#?#F#H#F#G#J#K#R#T#R#S#V#W#^#`#^#_#b#c#j#l#j#k#n#o#v#x#v#w#z#{###################################################################$$$$ $ $$$$$$$$ $$$"$#$*$,$*$+$.$/$6$8$6$7$:$;$B$D$B$C$F$G$N$P$N$O$R$S$Z$\$Z$[$^$_$f$h$f$g$j$k$r$t$r$s$v$w$~$$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%&%(%&%'%*%+%2%4%2%3%6%7%>%@%>%?%B%C%J%L%J%K%N%O%V%X%V%W%Z%[%b%d%b%c%f%g%n%p%n%o%r%s%z%|%z%{%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%&& & & & &&&&&&&&&"&$&"&#&&&'&.&0&.&/&2&3&:&<&:&;&>&?&F&H&F&G&J&K&R&T&R&S&V&W&^&`&^&_&b&c&j&l&j&k&n&o&v&x&v&w&z&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''' ' '''''''' '''"'#'*','*'+'.'/'6'8'6'7':';'B'D'B'C'F'G'N'P'N'O'R'S'Z'\'Z'['^'_'f'h'f'g'j'k'r't'r's'v'w'~''~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((((((((((((&(((&('(*(+(2(4(2(3(6(7(>(@(>(?(B(C(J(L(J(K(N(O(V(X(V(W(Z([(b(d(b(c(f(g(n(p(n(o(r(s(z(|(z({(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()(()) ) ) ) )))))))))")$)")#)&)').)0).)/)2)3):)<):);)>)?)F)H)F)G)J)K)R)T)R)S)V)W)^)`)^)_)b)c)j)l)j)k)n)o)v)x)v)w)z){)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**** * ******** ***"*#***,***+*.*/*6*8*6*7*:*;*B*D*B*C*F*G*N*P*N*O*R*S*Z*\*Z*[*^*_*f*h*f*g*j*k*r*t*r*s*v*w*~**~****************************************************************++++++++++++++++++&+(+&+'+*+++2+4+2+3+6+7+>+@+>+?+B+C+J+L+J+K+N+O+V+X+V+W+Z+[+b+d+b+c+f+g+n+p+n+o+r+s+z+|+z+{+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,++,, , , , ,,,,,,,,,",$,",#,&,',.,0,.,/,2,3,:,<,:,;,>,?,F,H,F,G,J,K,R,T,R,S,V,W,^,`,^,_,b,c,j,l,j,k,n,o,v,x,v,w,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---- - -------- ---"-#-*-,-*-+-.-/-6-8-6-7-:-;-B-D-B-C-F-G-N-P-N-O-R-S-Z-\-Z-[-^-_-f-h-f-g-j-k-r-t-r-s-v-w-~--~----------------------------------------------------------------..................&.(.&.'.*.+.2.4.2.3.6.7.>.@.>.?.B.C.J.L.J.K.N.O.V.X.V.W.Z.[.b.d.b.c.f.g.n.p.n.o.r.s.z.|.z.{.~.............................................................../..// / / / /////////"/$/"/#/&/'/./0/.///2/3/://?/F/H/F/G/J/K/R/T/R/S/V/W/^/`/^/_/b/c/j/l/j/k/n/o/v/x/v/w/z/{///////////////////////////////////////////////////////////////////0000 0 00000000 000"0#0*0,0*0+0.0/060806070:0;0B0D0B0C0F0G0N0P0N0O0R0S0Z0\0Z0[0^0_0f0h0f0g0j0k0r0t0r0s0v0w0~00~0000000000000000000000000000000000000000000000000000000000000000111111111111111111&1(1&1'1*1+1214121316171>1@1>1?1B1C1J1L1J1K1N1O1V1X1V1W1Z1[1b1d1b1c1f1g1n1p1n1o1r1s1z1|1z1{1~11111111111111111111111111111111111111111111111111111111111111121122 2 2 2 222222222"2$2"2#2&2'2.202.2/22232:2<2:2;2>2?2F2H2F2G2J2K2R2T2R2S2V2W2^2`2^2_2b2c2j2l2j2k2n2o2v2x2v2w2z2{22222222222222222222222222222222222222222222222222222222222222222223333 3 33333333 333"3#3*3,3*3+3.3/363836373:3;3B3D3B3C3F3G3N3P3N3O3R3S3Z3\3Z3[3^3_3f3h3f3g3j3k3r3t3r3s3v3w3~33~3333333333333333333333333333333333333333333333333333333333333333444444444444444444&4(4&4'4*4+4244424346474>4@4>4?4B4C4J4L4J4K4N4O4V4X4V4W4Z4[4b4d4b4c4f4g4n4p4n4o4r4s4z4|4z4{4~44444444444444444444444444444444444444444444444444444444444444454455 5 5 5 555555555"5$5"5#5&5'5.505.5/52535:5<5:5;5>5?5F5H5F5G5J5K5R5T5R5S5V5W5^5`5^5_5b5c5j5l5j5k5n5o5v5x5v5w5z5{55555555555555555555555555555555555555555555555555555555555555555556666 6 66666666 666"6#6*6,6*6+6.6/666866676:6;6B6D6B6C6F6G6N6P6N6O6R6S6Z6\6Z6[6^6_6f6h6f6g6j6k6r6t6r6s6v6w6~66~6666666666666666666666666666666666666666666666666666666666666666777777777777777777&7(7&7'7*7+7274727376777>7@7>7?7B7C7J7L7J7K7N7O7V7X7V7W7Z7[7b7d7b7c7f7g7n7p7n7o7r7s7z7|7z7{7~77777777777777777777777777777777777777777777777777777777777777787788 8 8 8 888888888"8$8"8#8&8'8.808.8/82838:8<8:8;8>8?8F8H8F8G8J8K8R8T8R8S8V8W8^8`8^8_8b8c8j8l8j8k8n8o8v8x8v8w8z8{88888888888888888888888888888888888888888888888888888888888888888889999 9 99999999 999"9#9*9,9*9+9.9/969896979:9;9B9D9B9C9F9G9N9P9N9O9R9S9Z9\9Z9[9^9_9f9h9f9g9j9k9r9t9r9s9v9w9~99~9999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::&:(:&:':*:+:2:4:2:3:6:7:>:@:>:?:B:C:J:L:J:K:N:O:V:X:V:W:Z:[:b:d:b:c:f:g:n:p:n:o:r:s:z:|:z:{:~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;; ; ; ; ;;;;;;;;;";$;";#;&;';.;0;.;/;2;3;:;<;:;;;>;?;F;H;F;G;J;K;R;T;R;S;V;W;^;`;^;_;b;c;j;l;j;k;n;o;v;x;v;w;z;{;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<< < <<<<<<<< <<<"<#<*<,<*<+<.</<6<8<6<7<:<;<B<D<B<C<F<G<N<P<N<O<R<S<Z<\<Z<[<^<_<f<h<f<g<j<k<r<t<r<s<v<w<~<<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==================&=(=&='=*=+=2=4=2=3=6=7=>=@=>=?=B=C=J=L=J=K=N=O=V=X=V=W=Z=[=b=d=b=c=f=g=n=p=n=o=r=s=z=|=z={=~===============================================================>==>> > > > >>>>>>>>>">$>">#>&>'>.>0>.>/>2>3>:><>:>;>>>?>F>H>F>G>J>K>R>T>R>S>V>W>^>`>^>_>b>c>j>l>j>k>n>o>v>x>v>w>z>{>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???? ? ???????? ???"?#?*?,?*?+?.?/?6?8?6?7?:?;?B?D?B?C?F?G?N?P?N?O?R?S?Z?\?Z?[?^?_?f?h?f?g?j?k?r?t?r?s?v?w?~??~????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@&@(@&@'@*@+@2@4@2@3@6@7@>@@@>@?@B@C@J@L@J@K@N@O@V@X@V@W@Z@[@b@d@b@c@f@g@n@p@n@o@r@s@z@|@z@{@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@AA A A A AAAAAAAAA"A$A"A#A&A'A.A0A.A/A2A3A:AA?AFAHAFAGAJAKARATARASAVAWA^A`A^A_AbAcAjAlAjAkAnAoAvAxAvAwAzA{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB B BBBBBBBB BBB"B#B*B,B*B+B.B/B6B8B6B7B:B;BBBDBBBCBFBGBNBPBNBOBRBSBZB\BZB[B^B_BfBhBfBgBjBkBrBtBrBsBvBwB~BB~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCC&C(C&C'C*C+C2C4C2C3C6C7C>C@C>C?CBCCCJCLCJCKCNCOCVCXCVCWCZC[CbCdCbCcCfCgCnCpCnCoCrCsCzC|CzC{C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDD D D D DDDDDDDDD"D$D"D#D&D'D.D0D.D/D2D3D:DD?DFDHDFDGDJDKDRDTDRDSDVDWD^D`D^D_DbDcDjDlDjDkDnDoDvDxDvDwDzD{DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEE E EEEEEEEE EEE"E#E*E,E*E+E.E/E6E8E6E7E:E;EBEDEBECEFEGENEPENEOERESEZE\EZE[E^E_EfEhEfEgEjEkErEtErEsEvEwE~EE~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFF&F(F&F'F*F+F2F4F2F3F6F7F>F@F>F?FBFCFJFLFJFKFNFOFVFXFVFWFZF[FbFdFbFcFfFgFnFpFnFoFrFsFzF|FzF{F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGFFGG G G G GGGGGGGGG"G$G"G#G&G'G.G0G.G/G2G3G:GG?GFGHGFGGGJGKGRGTGRGSGVGWG^G`G^G_GbGcGjGlGjGkGnGoGvGxGvGwGzG{GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHH H HHHHHHHH HHH"H#H*H,H*H+H.H/H6H8H6H7H:H;HBHDHBHCHFHGHNHPHNHOHRHSHZH\HZH[H^H_HfHhHfHgHjHkHrHtHrHsHvHwH~HH~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIII&I(I&I'I*I+I2I4I2I3I6I7I>I@I>I?IBICIJILIJIKINIOIVIXIVIWIZI[IbIdIbIcIfIgInIpInIoIrIsIzI|IzI{I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJIIJJ J J J JJJJJJJJJ"J$J"J#J&J'J.J0J.J/J2J3J:JJ?JFJHJFJGJJJKJRJTJRJSJVJWJ^J`J^J_JbJcJjJlJjJkJnJoJvJxJvJwJzJ{JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKK K KKKKKKKK KKK"K#K*K,K*K+K.K/K6K8K6K7K:K;KBKDKBKCKFKGKNKPKNKOKRKSKZK\KZK[K^K_KfKhKfKgKjKkKrKtKrKsKvKwK~KK~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLL&L(L&L'L*L+L2L4L2L3L6L7L>L@L>L?LBLCLJLLLJLKLNLOLVLXLVLWLZL[LbLdLbLcLfLgLnLpLnLoLrLsLzL|LzL{L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMM M M M MMMMMMMMM"M$M"M#M&M'M.M0M.M/M2M3M:MM?MFMHMFMGMJMKMRMTMRMSMVMWM^M`M^M_MbMcMjMlMjMkMnMoMvMxMvMwMzM{MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNN N NNNNNNNN NNN"N#N*N,N*N+N.N/N6N8N6N7N:N;NBNDNBNCNFNGNNNPNNNONRNSNZN\NZN[N^N_NfNhNfNgNjNkNrNtNrNsNvNwN~NN~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOO&O(O&O'O*O+O2O4O2O3O6O7O>O@O>O?OBOCOJOLOJOKONOOOVOXOVOWOZO[ObOdObOcOfOgOnOpOnOoOrOsOzO|OzO{O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPOOPP P P P PPPPPPPPP"P$P"P#P&P'P.P0P.P/P2P3P:PP?PFPHPFPGPJPKPRPTPRPSPVPWP^P`P^P_PbPcPjPlPjPkPnPoPvPxPvPwPzP{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQ Q QQQQQQQQ QQQ"Q#Q*Q,Q*Q+Q.Q/Q6Q8Q6Q7Q:Q;QBQDQBQCQFQGQNQPQNQOQRQSQZQ\QZQ[Q^Q_QfQhQfQgQjQkQrQtQrQsQvQwQ~QQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRR&R(R&R'R*R+R2R4R2R3R6R7R>R@R>R?RBRCRJRLRJRKRNRORVRXRVRWRZR[RbRdRbRcRfRgRnRpRnRoRrRsRzR|RzR{R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSRRSS S S S SSSSSSSSS"S$S"S#S&S'S.S0S.S/S2S3S:SS?SFSHSFSGSJSKSRSTSRSSSVSWS^S`S^S_SbScSjSlSjSkSnSoSvSxSvSwSzS{SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTT T TTTTTTTT TTT"T#T*T,T*T+T.T/T6T8T6T7T:T;TBTDTBTCTFTGTNTPTNTOTRTSTZT\TZT[T^T_TfThTfTgTjTkTrTtTrTsTvTwT~TT~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUU&U(U&U'U*U+U2U4U2U3U6U7U>U@U>U?UBUCUJULUJUKUNUOUVUXUVUWUZU[UbUdUbUcUfUgUnUpUnUoUrUsUzU|UzU{U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVUUVV V V V VVVVVVVVV"V$V"V#V&V'V.V0V.V/V2V3V:VV?VFVHVFVGVJVKVRVTVRVSVVVWV^V`V^V_VbVcVjVlVjVkVnVoVvVxVvVwVzV{VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWW W WWWWWWWW WWW"W#W*W,W*W+W.W/W6W8W6W7W:W;WBWDWBWCWFWGWNWPWNWOWRWSWZW\WZW[W^W_WfWhWfWgWjWkWrWtWrWsWvWwW~WW~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXX&X(X&X'X*X+X2X4X2X3X6X7X>X@X>X?XBXCXJXLXJXKXNXOXVXXXVXWXZX[XbXdXbXcXfXgXnXpXnXoXrXsXzX|XzX{X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYXXYY Y Y Y YYYYYYYYY"Y$Y"Y#Y&Y'Y.Y0Y.Y/Y2Y3Y:YY?YFYHYFYGYJYKYRYTYRYSYVYWY^Y`Y^Y_YbYcYjYlYjYkYnYoYvYxYvYwYzY{YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZ Z ZZZZZZZZ ZZZ"Z#Z*Z,Z*Z+Z.Z/Z6Z8Z6Z7Z:Z;ZBZDZBZCZFZGZNZPZNZOZRZSZZZ\ZZZ[Z^Z_ZfZhZfZgZjZkZrZtZrZsZvZwZ~ZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[&[([&['[*[+[2[4[2[3[6[7[>[@[>[?[B[C[J[L[J[K[N[O[V[X[V[W[Z[[[b[d[b[c[f[g[n[p[n[o[r[s[z[|[z[{[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\[[\\ \ \ \ \\\\\\\\\"\$\"\#\&\'\.\0\.\/\2\3\:\<\:\;\>\?\F\H\F\G\J\K\R\T\R\S\V\W\^\`\^\_\b\c\j\l\j\k\n\o\v\x\v\w\z\{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]] ] ]]]]]]]] ]]]"]#]*],]*]+].]/]6]8]6]7]:];]B]D]B]C]F]G]N]P]N]O]R]S]Z]\]Z][]^]_]f]h]f]g]j]k]r]t]r]s]v]w]~]]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^&^(^&^'^*^+^2^4^2^3^6^7^>^@^>^?^B^C^J^L^J^K^N^O^V^X^V^W^Z^[^b^d^b^c^f^g^n^p^n^o^r^s^z^|^z^{^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^^__ _ _ _ _________"_$_"_#_&_'_._0_._/_2_3_:_<_:_;_>_?_F_H_F_G_J_K_R_T_R_S_V_W_^_`_^___b_c_j_l_j_k_n_o_v_x_v_w_z_{___________________________________________________________________```` ` ```````` ```"`#`*`,`*`+`.`/`6`8`6`7`:`;`B`D`B`C`F`G`N`P`N`O`R`S`Z`\`Z`[`^`_`f`h`f`g`j`k`r`t`r`s`v`w`~``~````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaa&a(a&a'a*a+a2a4a2a3a6a7a>a@a>a?aBaCaJaLaJaKaNaOaVaXaVaWaZa[abadabacafaganapanaoarasaza|aza{a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabb b b b bbbbbbbbb"b$b"b#b&b'b.b0b.b/b2b3b:bb?bFbHbFbGbJbKbRbTbRbSbVbWb^b`b^b_bbbcbjblbjbkbnbobvbxbvbwbzb{bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccc c cccccccc ccc"c#c*c,c*c+c ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx                 ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x                    ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |    ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x   !!!!!!!!!!!!!!!!! !'!)!'!(!+!,!3!5!3!4!7!8!?!A!?!@!C!D!K!M!K!L!O!P!W!Y!W!X![!\!c!e!c!d!g!h!o!q!o!p!s!t!{!}!{!|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!""" " " " """""""""#"%"#"$"'"("/"1"/"0"3"4";"=";"<"?"@"G"I"G"H"K"L"S"U"S"T"W"X"_"a"_"`"c"d"k"m"k"l"o"p"w"y"w"x"{"|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""## ### # ########!## ###$#+#-#+#,#/#0#7#9#7#8#;#<#C#E#C#D#G#H#O#Q#O#P#S#T#[#]#[#\#_#`#g#i#g#h#k#l#s#u#s#t#w#x###################################################################$$$$$$$$$$$$$$$$$ $'$)$'$($+$,$3$5$3$4$7$8$?$A$?$@$C$D$K$M$K$L$O$P$W$Y$W$X$[$\$c$e$c$d$g$h$o$q$o$p$s$t${$}${$|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$%%% % % % %%%%%%%%%#%%%#%$%'%(%/%1%/%0%3%4%;%=%;%<%?%@%G%I%G%H%K%L%S%U%S%T%W%X%_%a%_%`%c%d%k%m%k%l%o%p%w%y%w%x%{%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& &&& & &&&&&&&&!&& &#&$&+&-&+&,&/&0&7&9&7&8&;&<&C&E&C&D&G&H&O&Q&O&P&S&T&[&]&[&\&_&`&g&i&g&h&k&l&s&u&s&t&w&x&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''' ''')'''('+','3'5'3'4'7'8'?'A'?'@'C'D'K'M'K'L'O'P'W'Y'W'X'['\'c'e'c'd'g'h'o'q'o'p's't'{'}'{'|''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''('((( ( ( ( (((((((((#(%(#($('(((/(1(/(0(3(4(;(=(;(<(?(@(G(I(G(H(K(L(S(U(S(T(W(X(_(a(_(`(c(d(k(m(k(l(o(p(w(y(w(x({(|(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()) ))) ) ))))))))!)) )#)$)+)-)+),)/)0)7)9)7)8);)<)C)E)C)D)G)H)O)Q)O)P)S)T)[)])[)\)_)`)g)i)g)h)k)l)s)u)s)t)w)x)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))***************** *'*)*'*(*+*,*3*5*3*4*7*8*?*A*?*@*C*D*K*M*K*L*O*P*W*Y*W*X*[*\*c*e*c*d*g*h*o*q*o*p*s*t*{*}*{*|****************************************************************+*+++ + + + +++++++++#+%+#+$+'+(+/+1+/+0+3+4+;+=+;+<+?+@+G+I+G+H+K+L+S+U+S+T+W+X+_+a+_+`+c+d+k+m+k+l+o+p+w+y+w+x+{+|++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,, ,,, , ,,,,,,,,!,, ,#,$,+,-,+,,,/,0,7,9,7,8,;,<,C,E,C,D,G,H,O,Q,O,P,S,T,[,],[,\,_,`,g,i,g,h,k,l,s,u,s,t,w,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------- -'-)-'-(-+-,-3-5-3-4-7-8-?-A-?-@-C-D-K-M-K-L-O-P-W-Y-W-X-[-\-c-e-c-d-g-h-o-q-o-p-s-t-{-}-{-|----------------------------------------------------------------.-... . . . .........#.%.#.$.'.(./.1./.0.3.4.;.=.;.<.?.@.G.I.G.H.K.L.S.U.S.T.W.X._.a._.`.c.d.k.m.k.l.o.p.w.y.w.x.{.|..................................................................// /// / ////////!// /#/$/+/-/+/,///0/7/9/7/8/;/> >>> > >>>>>>>>!>> >#>$>+>->+>,>/>0>7>9>7>8>;><>C>E>C>D>G>H>O>Q>O>P>S>T>[>]>[>\>_>`>g>i>g>h>k>l>s>u>s>t>w>x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????? ?'?)?'?(?+?,?3?5?3?4?7?8???A???@?C?D?K?M?K?L?O?P?W?Y?W?X?[?\?c?e?c?d?g?h?o?q?o?p?s?t?{?}?{?|????????????????????????????????????????????????????????????????@?@@@ @ @ @ @@@@@@@@@#@%@#@$@'@(@/@1@/@0@3@4@;@=@;@<@?@@@G@I@G@H@K@L@S@U@S@T@W@X@_@a@_@`@c@d@k@m@k@l@o@p@w@y@w@x@{@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AAA A AAAAAAAA!AA A#A$A+A-A+A,A/A0A7A9A7A8A;ADATAh0 .corner_vert`iجS .corner_edge`?S) XSDATA`iL-c  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< <!<"<#<$<%<&<'<(<)<*<+<,<-<.</<0<1<2<3<4<5<6<7<8<9<:<;<<<=<><?<@<A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z<[<\<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|<}<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========= = = = = =================== =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJ J J J J JJJJJJJJJJJJJJJJJJJ J!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLL L L L L LLLLLLLLLLLLLLLLLLL L!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMM M M M M MMMMMMMMMMMMMMMMMMM M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNN N N N N NNNNNNNNNNNNNNNNNNN N!N"N#N$N%N&N'N(N)N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOO O!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPP P P P P PPPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQQQQ Q!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;TT?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWW W W W W WWWWWWWWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyWzW{W|W}W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5X6X7X8X9X:X;XX?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;YY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[ [ [ [ [ [[[[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z[{[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^v^w^x^y^z^{^|^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~__________________________________________________________________________________________________________________________________````````` ` ` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`^`_```a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaa a a a a aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb b b b b bbbbbbbbbbbbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc c c c c ccccccccccccccccccc c!c"c#c$c%c&c'c(c)c*c+c,cDATA`?L-cbJaJ1cJ11eJdJ1fJ11hJgJ1iJ11  kJ jJ1lJ11  nJmJ1oJ11qJpJ1rJ11tJsJ1uJ11wJvJ1xJ11zJyJ1{J11}J|J1~J11J J1J11"!J#J1J11%$J&J1J11('J)J1J11+*J,J1J11.-J/J1J1110J2J1J1143J5J1J1176J8J1J11:9J;J1J11=<J>J1J1 1 @ ?JAJ1J1 1 CBJDJ1J11FEJGJ1J11IHJJJ1J11LKJMJ1J11ONJPJ1J11RQJSJ1J11U TJVJ1J1"1!X#WJYJ1J1%1$[&ZJ\J1J1(1'^)]J_J1J1+1*a,`JbJ1J1.1-d/cJeJ1J1110g2fJhJ1J1413j5iJkJ2J1726m8lJnJ2J2:29p;oJqJ2J2=2<s>rJtJ 2J2@ 2?vAuJwJ 2J 2C 2ByDxJzJ2J2F2E|G{J}J2J2I2HJ~JJ2J2L2KMJJ2J2O2NPJJ2J2R2QSJJ2J2U2TVJJ!2J 2X"2WYJJ$2J#2[%2Z\JJ'2J&2^(2]_JJ*2J)2a+2`bJJ-2J,2d.2ceJJ02J/2g12fhJJ32J22j42ikKK62K52m72lnKK92K82p:2oqKK<2K;2s=2rt K K?2 K>2v@2uw K KB2KA2yC2xzKKE2KD2|F2{}KKH2KG2I2~KKK2KJ2L2KKN2KM2O2KKQ2KP2R2KKT2 KS2U2"K!KW2#KV2X2%K$KZ2&KY2[2(K'K]2)K\2^2+K*K`2,K_2a2.K-Kc2/Kb2d21K0Kf22Ke2g24K3Ki25Kh2j27K6Kl28Kk2m2:K9Ko2;Kn2p2=KKq2s2@K?Ku2AKt2v2CKBKx2DKw2y2FKEK{2GKz2|2IKHK~2JK}22LKKK2MK22OKNK2PK22RKQK2SK22UKTK2VK22XKWK2YK22[KZK2\K22^K]K2_K22aK`K2bK22dKcK2eK22gKfK2hK22 jK iK2kK22  mK lK2nK22pKoK2qK22sKrK2tK22vKuK2wK22yKxK2zK22|K{K2}K22K~K2K22! K"K2K22$#K%K2K22'&K(K2K22*)K+K2K22-,K.K2K220/K1K2K2232K4K2K2265K7K2K2298K:K2K22<;K=K2K2 2? >K@K2K2 2 B AKCK2K22EDKFK2K22HGKIK2K22KJKLK2K22NMKOK2K22QPKRK2K22TSKUK2K2!2 W"VKXK2K2$2#Z%YK[K2K2'2&](\K^K2K2*2)`+_KaK2K2-2,c.bKdK2K202/f1eKgK2K2322i4hKjK2K2635l7kKmK3K3938o:nKpK3K3<3;r=qKsK3K3? 3>u@tKvK 3K 3B 3AxCwKyK3K 3E3D{FzK|K3K3H3G~I}KK3K3K3JLKK3K3N3MOKK3K3Q3PRKK3K3T3SUKK 3K3W!3VXKK#3K"3Z$3Y[KK&3K%3]'3\^KK)3K(3`*3_aKK,3K+3c-3bdKK/3K.3f03egKK23K13i33hjLK53L43l63kmLL83L73o93npLL;3L:3r<3qs LL>3 L=3u?3tv L LA3 L@3xB3wyLLD3LC3{E3z|LLG3LF3~H3}LLJ3LI3K3LLM3LL3N3LLP3LO3Q3LLS3LR3T3!L LV3"LU3W3$L#LY3%LX3Z3'L&L\3(L[3]3*L)L_3+L^3`3-L,Lb3.La3c30L/Le31Ld3f33L2Lh34Lg3i36L5Lk37Lj3l39L8Ln3:Lm3o3Lt3@Ls3u3BLALw3CLv3x3ELDLz3FLy3{3HLGL}3IL|3~3KLJL3LL33NLML3OL33QLPL3RL33TLSL3UL33WLVL3XL33ZLYL3[L33]L\L3^L33`L_L3aL33cLbL3dL33fLeL3gL33iL hL3jL33  lL kL3mL33 oLnL3pL33rLqL3sL33uLtL3vL33xLwL3yL33{LzL3|L33~L}L3L33 L!L3L33#"L$L3L33&%L'L3L33)(L*L3L33,+L-L3L33/.L0L3L3321L3L3L3354L6L3L3387L9L3L33;:L<L3L33> =L?L3L3 3 A @LBL3L33 DCLEL3L33GFLHL3L33JILKL3L33MLLNL3L33POLQL3L33SRLTL3L3 3V!ULWL3L3#3"Y$XLZL3L3&3%\'[L]L3L3)3(_*^L`L3L3,3+b-aLcL3L3/3.e0dLfL3L3231h3gLiL3L3534k6jLlL4L4847n9mLoL4L4;4:q<pLrL4L4>4=t?sLuL 4L 4A 4@wBvLxL 4L 4D4CzEyL{L4L4G4F}H|L~L4L4J4IKLL4L4M4LNLL4L4P4OQLL4L4S4RTLL4L4V 4UWLL"4L!4Y#4XZLL%4L$4\&4[]LL(4L'4_)4^`LL+4L*4b,4acLL.4L-4e/4dfLL14L04h24giLL44M34k54jlMM74M64n84moMM:4M94q;4prMM=4 M<4t>4su M M@4 M?4wA4vxM MC4MB4zD4y{MMF4ME4}G4|~MMI4MH4J4MML4MK4M4MMO4MN4P4MMR4MQ4S4 MMU4!MT4V4#M"MX4$MW4Y4&M%M[4'MZ4\4)M(M^4*M]4_4,M+Ma4-M`4b4/M.Md40Mc4e42M1Mg43Mf4h45M4Mj46Mi4k48M7Mm49Ml4n4;M:Mp4M=Ms4?Mr4t4AM@Mv4BMu4w4DMCMy4EMx4z4GMFM|4HM{4}4JMIM4KM~44MMLM4NM44PMOM4QM44SMRM4TM44VMUM4WM44YMXM4ZM44\M[M4]M44_M^M4`M44bMaM4cM44eMdM4fM44hMgM4iM44  kM jM4lM44  nMmM4oM44qMpM4rM44tMsM4uM44wMvM4xM44zMyM4{M44}M|M4~M44M M4M44"!M#M4M44%$M&M4M44('M)M4M44+*M,M4M44.-M/M4M4410M2M4M4443M5M4M4476M8M4M44:9M;M4M44=<M>M4M4 4 @ ?MAM4M4 4 CBMDM4M44FEMGM4M44IHMJM4M44LKMMM4M44ONMPM4M44RQMSM4M44U TMVM4M4"4!X#WMYM4M4%4$[&ZM\M4M4(4'^)]M_M4M4+4*a,`MbM4M4.4-d/cMeM4M4140g2fMhM4M4443j5iMkM5M4756m8lMnM5M5:59p;oMqM5M5=5<s>rMtM 5M5@ 5?vAuMwM 5M 5C 5ByDxMzM5M5F5E|G{M}M5M5I5HJ~MM5M5L5KMMM5M5O5NPMM5M5R5QSMM5M5U5TVMM!5M 5X"5WYMM$5M#5[%5Z\MM'5M&5^(5]_MM*5M)5a+5`bMM-5M,5d.5ceMM05M/5g15fhMM35M25j45ikNN65N55m75lnNN95N85p:5oqNN<5N;5s=5rt N N?5 N>5v@5uw N NB5NA5yC5xzNNE5ND5|F5{}NNH5NG5I5~NNK5NJ5L5NNN5NM5O5NNQ5NP5R5NNT5 NS5U5"N!NW5#NV5X5%N$NZ5&NY5[5(N'N]5)N\5^5+N*N`5,N_5a5.N-Nc5/Nb5d51N0Nf52Ne5g54N3Ni55Nh5j57N6Nl58Nk5m5:N9No5;Nn5p5=NNq5s5@N?Nu5ANt5v5CNBNx5DNw5y5FNEN{5GNz5|5INHN~5JN}55LNKN5MN55ONNN5PN55RNQN5SN55UNTN5VN55XNWN5YN55[NZN5\N55^N]N5_N55aN`N5bN55dNcN5eN55gNfN5hN55 jN iN5kN55  mN lN5nN55pNoN5qN55sNrN5tN55vNuN5wN55yNxN5zN55|N{N5}N55N~N5N55! N"N5N55$#N%N5N55'&N(N5N55*)N+N5N55-,N.N5N550/N1N5N5532N4N5N5565N7N5N5598N:N5N55<;N=N5N5 5? >N@N5N5 5 B ANCN5N55EDNFN5N55HGNIN5N55KJNLN5N55NMNON5N55QPNRN5N55TSNUN5N5!5 W"VNXN5N5$5#Z%YN[N5N5'5&](\N^N5N5*5)`+_NaN5N5-5,c.bNdN5N505/f1eNgN5N5352i4hNjN5N5665l7kNmN6N6968o:nNpN6N6<6;r=qNsN6N6? 6>u@tNvN 6N 6B 6AxCwNyN6N 6E6D{FzN|N6N6H6G~I}NN6N6K6JLNN6N6N6MONN6N6Q6PRNN6N6T6SUNN 6N6W!6VXNN#6N"6Z$6Y[NN&6N%6]'6\^NN)6N(6`*6_aNN,6N+6c-6bdNN/6N.6f06egNN26N16i36hjON56O46l66kmOO86O76o96npOO;6O:6r<6qs OO>6 O=6u?6tv O OA6 O@6xB6wyOOD6OC6{E6z|OOG6OF6~H6}OOJ6OI6K6OOM6OL6N6OOP6OO6Q6OOS6OR6T6!O OV6"OU6W6$O#OY6%OX6Z6'O&O\6(O[6]6*O)O_6+O^6`6-O,Ob6.Oa6c60O/Oe61Od6f63O2Oh64Og6i66O5Ok67Oj6l69O8On6:Om6o6Ot6@Os6u6BOAOw6COv6x6EODOz6FOy6{6HOGO}6IO|6~6KOJO6LO66NOMO6OO66QOPO6RO66TOSO6UO66WOVO6XO66ZOYO6[O66]O\O6^O66`O_O6aO66cObO6dO66fOeO6gO66iO hO6jO66  lO kO6mO66 oOnO6pO66rOqO6sO66uOtO6vO66xOwO6yO66{OzO6|O66~O}O6O66 O!O6O66#"O$O6O66&%O'O6O66)(O*O6O66,+O-O6O66/.O0O6O6621O3O6O6654O6O6O6687O9O6O66;:O<O6O66> =O?O6O6 6 A @OBO6O66 DCOEO6O66GFOHO6O66JIOKO6O66MLONO6O66POOQO6O66SROTO6O6 6V!UOWO6O6#6"Y$XOZO6O6&6%\'[O]O6O6)6(_*^O`O6O6,6+b-aOcO6O6/6.e0dOfO6O6261h3gOiO6O6564k6jOlO7O7877n9mOoO7O7;7:q<pOrO7O7>7=t?sOuO 7O 7A 7@wBvOxO 7O 7D7CzEyO{O7O7G7F}H|O~O7O7J7IKOO7O7M7LNOO7O7P7OQOO7O7S7RTOO7O7V 7UWOO"7O!7Y#7XZOO%7O$7\&7[]OO(7O'7_)7^`OO+7O*7b,7acOO.7O-7e/7dfOO17O07h27giOO47P37k57jlPP77P67n87moPP:7P97q;7prPP=7 P<7t>7su P P@7 P?7wA7vxP PC7PB7zD7y{PPF7PE7}G7|~PPI7PH7J7PPL7PK7M7PPO7PN7P7PPR7PQ7S7 PPU7!PT7V7#P"PX7$PW7Y7&P%P[7'PZ7\7)P(P^7*P]7_7,P+Pa7-P`7b7/P.Pd70Pc7e72P1Pg73Pf7h75P4Pj76Pi7k78P7Pm79Pl7n7;P:Pp7P=Ps7?Pr7t7AP@Pv7BPu7w7DPCPy7EPx7z7GPFP|7HP{7}7JPIP7KP~77MPLP7NP77PPOP7QP77SPRP7TP77VPUP7WP77YPXP7ZP77\P[P7]P77_P^P7`P77bPaP7cP77ePdP7fP77hPgP7iP77  kP jP7lP77  nPmP7oP77qPpP7rP77tPsP7uP77wPvP7xP77zPyP7{P77}P|P7~P77P P7P77"!P#P7P77%$P&P7P77('P)P7P77+*P,P7P77.-P/P7P7710P2P7P7743P5P7P7776P8P7P77:9P;P7P77=<P>P7P7 7 @ ?PAP7P7 7 CBPDP7P77FEPGP7P77IHPJP7P77LKPMP7P77ONPPP7P77RQPSP7P77U TPVP7P7"7!X#WPYP7P7%7$[&ZP\P7P7(7'^)]P_P7P7+7*a,`PbP7P7.7-d/cPeP7P7170g2fPhP7P7473j5iPkP8P7786m8lPnP8P8:89p;oPqP8P8=8<s>rPtP 8P8@ 8?vAuPwP 8P 8C 8ByDxPzP8P8F8E|G{P}P8P8I8HJ~PP8P8L8KMPP8P8O8NPPP8P8R8QSPP8P8U8TVPP!8P 8X"8WYPP$8P#8[%8Z\PP'8P&8^(8]_PP*8P)8a+8`bPP-8P,8d.8cePP08P/8g18fhPP38P28j48ikQQ68Q58m78lnQQ98Q88p:8oqQQ<8Q;8s=8rt Q Q?8 Q>8v@8uw Q QB8QA8yC8xzQQE8QD8|F8{}QQH8QG8I8~QQK8QJ8L8QQN8QM8O8QQQ8QP8R8QQT8 QS8U8"Q!QW8#QV8X8%Q$QZ8&QY8[8(Q'Q]8)Q\8^8+Q*Q`8,Q_8a8.Q-Qc8/Qb8d81Q0Qf82Qe8g84Q3Qi85Qh8j87Q6Ql88Qk8m8:Q9Qo8;Qn8p8=QQq8s8@Q?Qu8AQt8v8CQBQx8DQw8y8FQEQ{8GQz8|8IQHQ~8JQ}88LQKQ8MQ88OQNQ8PQ88RQQQ8SQ88UQTQ8VQ88XQWQ8YQ88[QZQ8\Q88^Q]Q8_Q88aQ`Q8bQ88dQcQ8eQ88gQfQ8hQ88 jQ iQ8kQ88  mQ lQ8nQ88pQoQ8qQ88sQrQ8tQ88vQuQ8wQ88yQxQ8zQ88|Q{Q8}Q88Q~Q8Q88! Q"Q8Q88$#Q%Q8Q88'&Q(Q8Q88*)Q+Q8Q88-,Q.Q8Q880/Q1Q8Q8832Q4Q8Q8 86 5Q7Q8Q8 8 9 8Q:Q8Q8 8 < ;Q=Q8Q8 8 ? >Q@Q8Q8 8 B AQCQ8Q8 8 E DQFQ8Q8 8 H GQIQ8Q8 8 K JQLQ8Q8 8 N MQOQ8Q8 8 Q PQRQ8Q8 8 T SQUQ8Q8! 8 W" VQXQ8Q8$ 8# Z% YQ[Q8Q8' 8& ]( \Q^Q8Q8* 8) `+ _QaQ8Q8- 8, c. bQdQ8Q80 8/ f1 eQgQ8Q83 82 i4 hQjQ8Q86 95 l7 kQmQ9Q99 98 o: nQpQ9Q9< 9; r= qQsQ9Q9? 9> u@ tQvQ 9Q 9B 9A xC wQyQ9Q 9E 9D {F zQ|Q9Q9H 9G ~I }QQ9Q9K 9J L QQ9Q9N 9M O QQ9Q9Q 9P R QQ9Q9T 9S U QQ 9Q9W !9V X QQ#9Q"9Z $9Y [ QQ&9Q%9] '9\ ^ QQ)9Q(9` *9_ a QQ,9Q+9c -9b d QQ/9Q.9f 09e g QQ29Q19i 39h j RQ59R49l 69k m RR89R79o 99n p RR;9R:9r <9q s  RR>9 R=9u ?9t v  R RA9 R@9x B9w y RRD9RC9{ E9z | RRG9RF9~ H9}  RRJ9RI9 K9  RRM9RL9 N9  RRP9RO9 Q9  RRS9RR9 T9  !R RV9"RU9 W9  $R#RY9%RX9 Z9  'R&R\9(R[9 ]9  *R)R_9+R^9 `9  -R,Rb9.Ra9 c9  0R/Re91Rd9 f9  3R2Rh94Rg9 i9  6R5Rk97Rj9 l9  9R8Rn9:Rm9 o9  Rt9@Rs9 u9  BRARw9CRv9 x9  ERDRz9FRy9 {9  HRGR}9IR|9 ~9  KRJR9LR9 9  NRMR9OR9 9  QRPR9RR9 9  TRSR9UR9 9  WRVR9XR9 9  ZRYR9[R9 9  ]R\R9^R9 9  `R_R9aR9 9  cRbR9dR9 9  fReR9gR9 9  iR hR9jR9 9  lR kR9mR9 9  oRnR9pR9 9  rRqR9sR9 9  uRtR9vR9 9  xRwR9yR9 9  {RzR9|R9 9  ~R}R9R9 9  R!R9R9 9 # "R$R9R9 9 & %R'R9R9 9 ) (R*R9R9 9 , +R-R9R9 9 / .R0R9R9 9 2 1R3R9R9 9 5!4R6R9R9!9!8!7R9R9R9!9!;!:R<R9R9!9!> !=R?R9R9 !9 !A !@RBR9R9!9 !D!CRER9R9!9!G!FRHR9R9!9!J!IRKR9R9!9!M!LRNR9R9!9!P!ORQR9R9!9!S!RRTR9R9 !9!V!!URWR9R9#!9"!Y$!XRZR9R9&!9%!\'![R]R9R9)!9(!_*!^R`R9R9,!9+!b-!aRcR9R9/!9.!e0!dRfR9R92!91!h3!gRiR9R95!94!k6!jRlR:R:8!:7!n9!mRoR:R:;!::!q!:=!t?!sRuR :R :A! :@!wB!vRxR :R :D!:C!zE!yR{R:R:G!:F!}H!|R~R:R:J!:I!K!RR:R:M!:L!N!RR:R:P!:O!Q!RR:R:S!:R!T!RR:R:V! :U!W!RR":R!:Y!#:X!Z!RR%:R$:\!&:[!]!RR(:R':_!):^!`!RR+:R*:b!,:a!c!RR.:R-:e!/:d!f!RR1:R0:h!2:g!i!RR4:S3:k!5:j!l!SS7:S6:n!8:m!o!SS::S9:q!;:p!r!SS=: S<:t!>:s!u! S S@: S?:w!A:v!x!S SC:SB:z!D:y!{!SSF:SE:}!G:|!~!SSI:SH:!J:!!SSL:SK:!M:!!SSO:SN:!P:!!SSR:SQ:!S:!! SSU:!ST:!V:!!#S"SX:$SW:!Y:!!&S%S[:'SZ:!\:!!)S(S^:*S]:!_:!!,S+Sa:-S`:!b:!!/S.Sd:0Sc:!e:!!2S1Sg:3Sf:!h:!!5S4Sj:6Si:!k:!!8S7Sm:9Sl:!n:!!;S:Sp:S=Ss:?Sr:!t:!!AS@Sv:BSu:!w:!!DSCSy:ESx:!z:!!GSFS|:HS{:!}:!!JSIS:KS~:!:!!MSLS:NS:!:!!PSOS:QS:!:!!SSRS:TS:!:!!VSUS:WS:!:!!YSXS:ZS:!:!!\S[S:]S:!:!!_S^S:`S:!:! ! bS aS:cS:!:! ! eS dS:fS:!:! ! hS gS:iS:!:! ! kS jS:lS:!:! ! nS mS:oS:!:! ! qS pS:rS:!:! ! tS sS:uS:!:! ! wS vS:xS:!:! ! zS yS:{S:!:! ! }S |S:~S:!:! ! S S:S:!:!" !! S# S:S:!:!% !$ S& S:S:!:!( !' S) S:S:!:!+ !* S, S:S:!:!. !- S/ S:S:!:!1 !0 S2 S:S:!:!4 !3 S5 S:S:":"7 "6 S8 S:S:":": "9 S; S:S:":"= "< S> S:S: ": "@ "? SA S:S: ": "C "B SD S:S:":"F "E SG S:S:":"I "H SJ S:S:":"L "K SM S:S:":"O "N SP S:S:":"R "Q SS S:S:":"U "T SV S:S:"":!"X #"W SY S:S:%":$"[ &"Z S\ S:S:(":'"^ )"] S_ S:S:+":*"a ,"` Sb S:S:.":-"d /"c Se S:S:1":0"g 2"f Sh S:S:4":3"j 5"i Sk S;S:7";6"m 8"l Sn S;S;:";9"p ;"o Sq S;S;=";<"s >"r St S ;S;@" ;?"v A"u Sw S ;S ;C" ;B"y D"x Sz S;S;F";E"| G"{ S} S;S;I";H" J"~ S S;S;L";K" M" S S;S;O";N" P" S S;S;R";Q" S" S S;S;U";T" V" S S!;S ;X"";W" Y" S S$;S#;["%;Z" \" S S';S&;^"(;]" _" S S*;S);a"+;`" b" S S-;S,;d".;c" e" S S0;S/;g"1;f" h" S S3;S2;j"4;i" k" T T6;T5;m"7;l" n" T T9;T8;p":;o" q" T T<;T;;s"=;r" t" T T?; T>;v"@;u" w" T TB;TA;y"C;x" z" T TE;TD;|"F;{" }" T TH;TG;"I;~" " T TK;TJ;"L;" " T TN;TM;"O;" " T TQ;TP;"R;" " T TT; TS;"U;" " "T !TW;#TV;"X;" " %T $TZ;&TY;"[;" " (T 'T];)T\;"^;" " +T *T`;,T_;"a;" " .T -Tc;/Tb;"d;" " 1T 0Tf;2Te;"g;" " 4T 3Ti;5Th;"j;" " 7T 6Tl;8Tk;"m;" " :T 9To;;Tn;"p;" " =T Tq;"s;" " @T ?Tu;ATt;"v;" " CT BTx;DTw;"y;" " FT ET{;GTz;"|;" " IT HT~;JT};";" " LT KT;MT;";" " OT NT;PT;";" " RT QT;ST;";" " UT TT;VT;";" " XT WT;YT;";" " [T ZT;\T;";" " ^T ]T;_T;";" " aT `T;bT;";" " dT cT;eT;";" " gT fT;hT;";" " jT iT;kT;";" " mT lT;nT;";" " pT oT;qT;";" " sT rT;tT;";" " vT uT;wT;";" " yT xT;zT;";" " |T {T;}T;";" " T ~T;T;";"! " T" T;T;";"$ "# T% T;T;";"' "& T( T;T;";"* ") T+ T;T;";"- ", T. T;T;";"0 "/ T1 T;T;";"3 "2 T4 T;T;#;"6 #5 T7 T;T;#;#9 #8 T: T;T;#;#< #; T= T;T; #;#? #> T@ T;T; #; #B #A TC T;T;#;#E #D TF T;T;#;#H #G TI T;T;#;#K #J TL T;T;#;#N #M TO T;T;#;#Q #P TR T;T;#;#T #S TU T;T;!#; #W "#V TX T;T;$#;##Z %#Y T[ T;T;'#;&#] (#\ T^ T;T;*#;)#` +#_ Ta T;T;-#;,#c .#b Td T;T;0#;/#f 1#e Tg T;T;3#;2#i 4#h Tj T;T;6#<5#l 7#k Tm T<T<9#<8#o :#n Tp T<T<<#<;#r =#q Ts T<T<?# <>#u @#t Tv T <T <B# <A#x C#w Ty T<T <E#<D#{ F#z T| T<T<H#<G#~ I#} T T<T<K#<J# L# T T<T<N#<M# O# T T<T<Q#<P# R# T T<T<T#<S# U# T T <T<W#!<V# X# T T#<T"<Z#$<Y# [# T T&<T%<]#'<\# ^# T T)<T(<`#*<_# a# T T,<T+<c#-<b# d# T T/<T.<f#0<e# g# T T2<T1<i#3<h# j# U T5<U4<l#6<k# m# U U8<U7<o#9<n# p# U U;<U:<r#<<q# s# U U>< U=<u#?<t# v# U UA< U@<x#B<w# y# U UD<UC<{#E<z# |# U UG<UF<~#H<}# # U UJ<UI<#K<# # U UM<UL<#N<# # U UP<UO<#Q<# # U US<UR<#T<# # !U UV<"UU<#W<# # $U #UY<%UX<#Z<# # 'U &U\<(U[<#]<# # *U )U_<+U^<#`<# # -U ,Ub<.Ua<#c<# # 0U /Ue<1Ud<#f<# # 3U 2Uh<4Ug<#i<# # 6U 5Uk<7Uj<#l<# # 9U 8Un<:Um<#o<# # Ut<@Us<#u<# # BU AUw<CUv<#x<# # EU DUz<FUy<#{<# # HU GU}<IU|<#~<# # KU JU<LU<#<# # NU MU<OU<#<# # QU PU<RU<#<# # TU SU<UU<#<# # WU VU<XU<#<# # ZU YU<[U<#<# # ]U \U<^U<#<# # `U _U<aU<#<# # cU bU<dU<#<# # fU eU<gU<#<# # iU hU<jU<#<# # lU kU<mU<#<# # oU nU<pU<#<# # rU qU<sU<#<# # uU tU<vU<#<# # xU wU<yU<#<# # {U zU<|U<#<# # ~U }U<U<#<# # U! U<U<#<## #" U$ U<U<#<#& #% U' U<U<#<#) #( U* U<U<#<#, #+ U- U<U<#<#/ #. U0 U<U<#<#2 #1 U3 U<U<#<#5 $4 U6 U<U<$<$8 $7 U9 U<U<$<$; $: U< U<U<$<$> $= U? U<U< $< $A $@ UB U<U<$< $D $C UE U<U<$<$G $F UH U<U<$<$J $I UK U<U<$<$M $L UN U<U<$<$P $O UQ U<U<$<$S $R UT U<U< $<$V !$U UW U<U<#$<"$Y $$X UZ U<U<&$<%$\ '$[ U] U<U<)$<($_ *$^ U` U<U<,$<+$b -$a Uc U<U</$<.$e 0$d Uf U<U<2$<1$h 3$g Ui U<U<5$<4$k 6$j Ul U=U=8$=7$n 9$m Uo U=U=;$=:$q <$p Ur U=U=>$==$t ?$s Uu U =U =A$ =@$w B$v Ux U =U =D$=C$z E$y U{ U=U=G$=F$} H$| U~ U=U=J$=I$ K$ U U=U=M$=L$ N$ U U=U=P$=O$ Q$ U U=U=S$=R$ T$ U U=U=V$ =U$ W$ U U"=U!=Y$#=X$ Z$ U U%=U$=\$&=[$ ]$ U U(=U'=_$)=^$ `$ U U+=U*=b$,=a$ c$ U U.=U-=e$/=d$ f$ U U1=U0=h$2=g$ i$ U U4=V3=k$5=j$ l$ V V7=V6=n$8=m$ o$ V V:=V9=q$;=p$ r$ V V== V<=t$>=s$ u$ V V@= V?=w$A=v$ x$ V VC=VB=z$D=y$ {$ V VF=VE=}$G=|$ ~$ V VI=VH=$J=$ $ V VL=VK=$M=$ $ V VO=VN=$P=$ $ V VR=VQ=$S=$ $ V VU=!VT=$V=$ $ #V "VX=$VW=$Y=$ $ &V %V[='VZ=$\=$ $ )V (V^=*V]=$_=$ $ ,V +Va=-V`=$b=$ $ /V .Vd=0Vc=$e=$ $ 2V 1Vg=3Vf=$h=$ $ 5V 4Vj=6Vi=$k=$ $ 8V 7Vm=9Vl=$n=$ $ ;V :Vp=V =Vs=?Vr=$t=$ $ AV @Vv=BVu=$w=$ $ DV CVy=EVx=$z=$ $ GV FV|=HV{=$}=$ $ JV IV=KV~=$=$ $ MV LV=NV=$=$ $ PV OV=QV=$=$ $ SV RV=TV=$=$ $ VV UV=WV=$=$ $ YV XV=ZV=$=$ $ \V [V=]V=$=$ $ _V ^V=`V=$=$ $ bV aV=cV=$=$ $ eV dV=fV=$=$ $ hV gV=iV=$=$ $ kV jV=lV=$=$ $ nV mV=oV=$=$ $ qV pV=rV=$=$ $ tV sV=uV=$=$ $ wV vV=xV=$=$ $ zV yV={V=$=$ $ }V |V=~V=$=$ $ V V=V=$=$" $! V# V=V=$=$% $$ V& V=V=$=$( $' V) V=V=$=$+ $* V, V=V=$=$. $- V/ V=V=$=$1 $0 V2 V=V=$=$4 $3 V5 V=V=%=%7 %6 V8 V=V=%=%: %9 V; V=V=%=%= %< V> V=V= %= %@ %? VA V=V= %= %C %B VD V=V=%=%F %E VG V=V=%=%I %H VJ V=V=%=%L %K VM V=V=%=%O %N VP V=V=%=%R %Q VS V=V=%=%U %T VV V=V="%=!%X #%W VY V=V=%%=$%[ &%Z V\ V=V=(%='%^ )%] V_ V=V=+%=*%a ,%` Vb V=V=.%=-%d /%c Ve V=V=1%=0%g 2%f Vh V=V=4%=3%j 5%i Vk V>V=7%>6%m 8%l Vn V>V>:%>9%p ;%o Vq V>V>=%><%s >%r Vt V >V>@% >?%v A%u Vw V >V >C% >B%y D%x Vz V>V>F%>E%| G%{ V} V>V>I%>H% J%~ V V>V>L%>K% M% V V>V>O%>N% P% V V>V>R%>Q% S% V V>V>U%>T% V% V V!>V >X%">W% Y% V V$>V#>[%%>Z% \% V V'>V&>^%(>]% _% V V*>V)>a%+>`% b% V V->V,>d%.>c% e% V V0>V/>g%1>f% h% V V3>V2>j%4>i% k% W W6>W5>m%7>l% n% W W9>W8>p%:>o% q% W W<>W;>s%=>r% t% W W?> W>>v%@>u% w% W WB>WA>y%C>x% z% W WE>WD>|%F>{% }% W WH>WG>%I>~% % W WK>WJ>%L>% % W WN>WM>%O>% % W WQ>WP>%R>% % W WT> WS>%U>% % "W !WW>#WV>%X>% % %W $WZ>&WY>%[>% % (W 'W]>)W\>%^>% % +W *W`>,W_>%a>% % .W -Wc>/Wb>%d>% % 1W 0Wf>2We>%g>% % 4W 3Wi>5Wh>%j>% % 7W 6Wl>8Wk>%m>% % :W 9Wo>;Wn>%p>% % =W >Wq>%s>% % @W ?Wu>AWt>%v>% % CW BWx>DWw>%y>% % FW EW{>GWz>%|>% % IW HW~>JW}>%>% % LW KW>MW>%>% % OW NW>PW>%>% % RW QW>SW>%>% % UW TW>VW>%>% % XW WW>YW>%>% % [W ZW>\W>%>% % ^W ]W>_W>%>% % aW `W>bW>%>% % dW cW>eW>%>% % gW fW>hW>%>% % jW iW>kW>%>% % mW lW>nW>%>% % pW oW>qW>%>% % sW rW>tW>%>% % vW uW>wW>%>% % yW xW>zW>%>% % |W {W>}W>%>% % W ~W>W>%>%! % W" W>W>%>%$ %# W% W>W>%>%' %& W( W>W>%>%* %) W+ W>W>%>%- %, W. W>W>%>%0 %/ W1 W>W>%>%3 %2 W4 W>W>&>%6 &5 W7 W>W>&>&9 &8 W: W>W>&>&< &; W= W>W> &>&? &> W@ W>W> &> &B &A WC W>W>&>&E &D WF W>W>&>&H &G WI W>W>&>&K &J WL W>W>&>&N &M WO W>W>&>&Q &P WR W>W>&>&T &S WU W>W>!&> &W "&V WX W>W>$&>#&Z %&Y W[ W>W>'&>&&] (&\ W^ W>W>*&>)&` +&_ Wa W>W>-&>,&c .&b Wd W>W>0&>/&f 1&e Wg W>W>3&>2&i 4&h Wj W>W>6&?5&l 7&k Wm W?W?9&?8&o :&n Wp W?W?<&?;&r =&q Ws W?W??& ?>&u @&t Wv W ?W ?B& ?A&x C&w Wy W?W ?E&?D&{ F&z W| W?W?H&?G&~ I&} W W?W?K&?J& L& W W?W?N&?M& O& W W?W?Q&?P& R& W W?W?T&?S& U& W W ?W?W&!?V& X& W W#?W"?Z&$?Y& [& W W&?W%?]&'?\& ^& W W)?W(?`&*?_& a& W W,?W+?c&-?b& d& W W/?W.?f&0?e& g& W W2?W1?i&3?h& j& X W5?X4?l&6?k& m& X X8?X7?o&9?n& p& X X;?X:?r&? X=?u&??t& v& X XA? X@?x&B?w& y& X XD?XC?{&E?z& |& X XG?XF?~&H?}& & X XJ?XI?&K?& & X XM?XL?&N?& & X XP?XO?&Q?& & X XS?XR?&T?& & !X XV?"XU?&W?& & $X #XY?%XX?&Z?& & 'X &X\?(X[?&]?& & *X )X_?+X^?&`?& & -X ,Xb?.Xa?&c?& & 0X /Xe?1Xd?&f?& & 3X 2Xh?4Xg?&i?& & 6X 5Xk?7Xj?&l?& & 9X 8Xn?:Xm?&o?& & Xt?@Xs?&u?& & BX AXw?CXv?&x?& & EX DXz?FXy?&{?& & HX GX}?IX|?&~?& & KX JX?LX?&?& & NX MX?OX?&?& & QX PX?RX?&?& & TX SX?UX?&?& & WX VX?XX?&?& & ZX YX?[X?&?& & ]X \X?^X?&?& & `X_X?aX?&?&&cXbX?dX?&?&&fXeX?gX?&?&&iX hX?jX?&?& & lX kX?mX?&?&& oXnX?pX?&?&&rXqX?sX?&?&&uXtX?vX?&?&&xXwX?yX?&?&&{XzX?|X?&?&&~X}X?X?&?& &X!X?X?&?&#&"X$X?X?&?&&&%X'X?X?&?&)&(X*X?X?&?&,&+X-X?X?&?&/&.X0X?X?&?&2&1X3X?X?&?&5'4X6X?X?'?'8'7X9X?X?'?';':X<X?X?'?'> '=X?X?X? '? 'A '@XBX?X?'? 'D'CXEX?X?'?'G'FXHX?X?'?'J'IXKX?X?'?'M'LXNX?X?'?'P'OXQX?X?'?'S'RXTX?X? '?'V!'UXWX?X?#'?"'Y$'XXZX?X?&'?%'\''[X]X?X?)'?('_*'^X`X?X?,'?+'b-'aXcX?X?/'?.'e0'dXfX?X?2'?1'h3'gXiX?X?5'?4'k6'jXlX@X@8'@7'n9'mXoX@X@;'@:'q<'pXrX@X@>'@='t?'sXuX @X @A' @@'wB'vXxX @X @D'@C'zE'yX{X@X@G'@F'}H'|X~X@X@J'@I'K'XX@X@M'@L'N'XX@X@P'@O'Q'XX@X@S'@R'T'XX@X@V' @U'W'XX"@X!@Y'#@X'Z'XX%@X$@\'&@[']'XX(@X'@_')@^'`'XX+@X*@b',@a'c'XX.@X-@e'/@d'f'XX1@X0@h'2@g'i'XX4@Y3@k'5@j'l'YY7@Y6@n'8@m'o'YY:@Y9@q';@p'r'YY=@ Y<@t'>@s'u' Y Y@@ Y?@w'A@v'x'Y YC@YB@z'D@y'{'YYF@YE@}'G@|'~'YYI@YH@'J@''YYL@YK@'M@''YYO@YN@'P@''YYR@YQ@'S@'' YYU@!YT@'V@''#Y"YX@$YW@'Y@''&Y%Y[@'YZ@'\@'')Y(Y^@*Y]@'_@'',Y+Ya@-Y`@'b@''/Y.Yd@0Yc@'e@''2Y1Yg@3Yf@'h@''5Y4Yj@6Yi@'k@''8Y7Ym@9Yl@'n@'';Y:Yp@Y=Ys@?Yr@'t@''AY@Yv@BYu@'w@''DYCYy@EYx@'z@''GYFY|@HY{@'}@''JYIY@KY~@'@''MYLY@NY@'@''PYOY@QY@'@''SYRY@TY@'@''VYUY@WY@'@''YYXY@ZY@'@''\Y[Y@]Y@'@''_Y^Y@`Y@'@''bYaY@cY@'@''eYdY@fY@'@''hYgY@iY@'@' ' kY jY@lY@'@' ' nYmY@oY@'@''qYpY@rY@'@''tYsY@uY@'@''wYvY@xY@'@''zYyY@{Y@'@''}Y|Y@~Y@'@''Y Y@Y@'@'"'!Y#Y@Y@'@'%'$Y&Y@Y@'@'(''Y)Y@Y@'@'+'*Y,Y@Y@'@'.'-Y/Y@Y@'@'1'0Y2Y@Y@'@'4'3Y5Y@Y@(@(7(6Y8Y@Y@(@(:(9Y;Y@Y@(@(=(<Y>Y@Y@ (@ (@ (?YAY@Y@ (@ (C(BYDY@Y@(@(F(EYGY@Y@(@(I(HYJY@Y@(@(L(KYMY@Y@(@(O(NYPY@Y@(@(R(QYSY@Y@(@(U (TYVY@Y@"(@!(X#(WYYY@Y@%(@$([&(ZY\Y@Y@((@'(^)(]Y_Y@Y@+(@*(a,(`YbY@Y@.(@-(d/(cYeY@Y@1(@0(g2(fYhY@Y@4(@3(j5(iYkYAY@7(A6(m8(lYnYAYA:(A9(p;(oYqYAYA=(A<(s>(rYtY AYA@( A?(vA(uYwY AY AC( AB(yD(xYzYAYAF(AE(|G({Y}YAYAI(AH(J(~YYAYAL(AK(M(YYAYAO(AN(P(YYAYAR(AQ(S(YYAYAU(AT(V(YY!AY AX("AW(Y(YY$AY#A[(%AZ(\(YY'AY&A^((A](_(YY*AY)Aa(+A`(b(YY-AY,Ad(.Ac(e(YY0AY/Ag(1Af(h(YY3AY2Aj(4Ai(k(ZZ6AZ5Am(7Al(n(ZZ9AZ8Ap(:Ao(q(ZZAv(@Au(w( Z ZBAZAAy(CAx(z(ZZEAZDA|(FA{(}(ZZHAZGA(IA~((ZZKAZJA(LA((ZZNAZMA(OA((ZZQAZPA(RA((ZZTA ZSA(UA(("Z!ZWA#ZVA(XA((%Z$ZZA&ZYA([A(((Z'Z]A)Z\A(^A((+Z*Z`A,Z_A(aA((.Z-ZcA/ZbA(dA((1Z0ZfA2ZeA(gA((4Z3ZiA5ZhA(jA((7Z6ZlA8ZkA(mA((:Z9ZoA;ZnA(pA((=ZZqA(sA((@Z?ZuAAZtA(vA((CZBZxADZwA(yA((FZEZ{AGZzA(|A((IZHZ~AJZ}A(A((LZKZAMZA(A((OZNZAPZA(A((RZQZASZA(A((UZTZAVZA(A((XZWZAYZA(A(([ZZZA\ZA(A((^Z]ZA_ZA(A((aZ`ZAbZA(A((dZcZAeZA(A((gZfZAhZA(A( (jZ iZAkZA(A( ( mZ lZAnZA(A((pZoZAqZA(A((sZrZAtZA(A((vZuZAwZA(A((yZxZAzZA(A((|Z{ZA}ZA(A((Z~ZAZA(A(!( Z"ZAZA(A($(#Z%ZAZA(A('(&Z(ZAZA(A(*()Z+ZAZA(A(-(,Z.ZAZA(A(0(/Z1ZAZA(A(3(2Z4ZAZA)A(6)5Z7ZAZA)A)9)8Z:ZAZA)A)<);Z=ZAZA )A)? )>Z@ZAZA )A )B )AZCZAZA)A)E)DZFZAZA)A)H)GZIZAZA)A)K)JZLZAZA)A)N)MZOZAZA)A)Q)PZRZAZA)A)T)SZUZAZA!)A )W")VZXZAZA$)A#)Z%)YZ[ZAZA')A&)]()\Z^ZAZA*)A))`+)_ZaZAZA-)A,)c.)bZdZAZA0)A/)f1)eZgZAZA3)A2)i4)hZjZAZA6)B5)l7)kZmZBZB9)B8)o:)nZpZBZB<)B;)r=)qZsZBZB?) B>)u@)tZvZ BZ BB) BA)xC)wZyZBZ BE)BD){F)zZ|ZBZBH)BG)~I)}ZZBZBK)BJ)L)ZZBZBN)BM)O)ZZBZBQ)BP)R)ZZBZBT)BS)U)ZZ BZBW)!BV)X)ZZ#BZ"BZ)$BY)[)ZZ&BZ%B])'B\)^)ZZ)BZ(B`)*B_)a)ZZ,BZ+Bc)-Bb)d)ZZ/BZ.Bf)0Be)g)ZZ2BZ1Bi)3Bh)j)[Z5B[4Bl)6Bk)m)[[8B[7Bo)9Bn)p)[[;B[:Br)B [=Bu)?Bt)v) [ [AB [@Bx)BBw)y)[[DB[CB{)EBz)|)[[GB[FB~)HB}))[[JB[IB)KB))[[MB[LB)NB))[[PB[OB)QB))[[SB[RB)TB))![ [VB"[UB)WB))$[#[YB%[XB)ZB))'[&[\B([[B)]B))*[)[_B+[^B)`B))-[,[bB.[aB)cB))0[/[eB1[dB)fB))3[2[hB4[gB)iB))6[5[kB7[jB)lB))9[8[nB:[mB)oB))<[;[qB=[pB)rB))?[>[tB@[sB)uB))B[A[wBC[vB)xB))E[D[zBF[yB){B))H[G[}BI[|B)~B))K[J[BL[B)B))N[M[BO[B)B))Q[P[BR[B)B))T[S[BU[B)B))W[V[BX[B)B))Z[Y[B[[B)B))][\[B^[B)B))`[_[Ba[B)B))c[b[Bd[B)B))f[e[Bg[B)B))i[ h[Bj[B)B) ) l[ k[Bm[B)B)) o[n[Bp[B)B))r[q[Bs[B)B))u[t[Bv[B)B))x[w[By[B)B)){[z[B|[B)B))~[}[B[B)B) )[![B[B)B)#)"[$[B[B)B)&)%['[B[B)B)))([*[B[B)B),)+[-[B[B)B)/).[0[B[B)B)2)1[3[B[B)B)5*4[6[B[B*B*8*7[9[B[B*B*;*:[<[B[B*B*> *=[?[B[B *B *A *@[B[B[B*B *D*C[E[B[B*B*G*F[H[B[B*B*J*I[K[B[B*B*M*L[N[B[B*B*P*O[Q[B[B*B*S*R[T[B[B *B*V!*U[W[B[B#*B"*Y$*X[Z[B[B&*B%*\'*[[][B[B)*B(*_**^[`[B[B,*B+*b-*a[c[B[B/*B.*e0*d[f[B[B2*B1*h3*g[i[B[B5*B4*k6*j[l[C[C8*C7*n9*m[o[C[C;*C:*q<*p[r[C[C>*C=*t?*s[u[ C[ CA* C@*wB*v[x[ C[ CD*CC*zE*y[{[C[CG*CF*}H*|[~[C[CJ*CI*K*[[C[CM*CL*N*[[C[CP*CO*Q*[[C[CS*CR*T*[[C[CV* CU*W*[["C[!CY*#CX*Z*[[%C[$C\*&C[*]*[[(C['C_*)C^*`*[[+C[*Cb*,Ca*c*[[.C[-Ce*/Cd*f*[[1C[0Ch*2Cg*i*[[4C\3Ck*5Cj*l*\\7C\6Cn*8Cm*o*\\:C\9Cq*;Cp*r*\\=C \Cs*u* \ \@C \?Cw*ACv*x*\ \CC\BCz*DCy*{*\\FC\EC}*GC|*~*\\IC\HC*JC**\\LC\KC*MC**\\OC\NC*PC**\\RC\QC*SC** \\UC!\TC*VC**#\"\XC$\WC*YC**&\%\[C'\ZC*\C**)\(\^C*\]C*_C**,\+\aC-\`C*bC**/\.\dC0\cC*eC**2\1\gC3\fC*hC**5\4\jC6\iC*kC**8\7\mC9\lC*nC**;\:\pC<\oC*qC**>\=\sC?\rC*tC**A\@\vCB\uC*wC**D\C\yCE\xC*zC**G\F\|CH\{C*}C**J\I\CK\~C*C**M\L\CN\C*C**P\O\CQ\C*C**S\R\CT\C*C**V\U\CW\C*C**Y\X\CZ\C*C**\\[\C]\C*C**_\^\C`\C*C**b\a\Cc\C*C**e\d\Cf\C*C**h\g\Ci\C*C* * k\ j\Cl\C*C* * n\m\Co\C*C**q\p\Cr\C*C**t\s\Cu\C*C**w\v\Cx\C*C**z\y\C{\C*C**}\|\C~\C*C**\ \C\C*C*"*!\#\C\C*C*%*$\&\C\C*C*(*'\)\C\C*C*+**\,\C\C*C*.*-\/\C\C*C*1*0\2\C\C*C*4*3\5\C\C+C+7+6\8\C\C+C+:+9\;\C\C+C+=+<\>\C\C +C +@ +?\A\C\C +C +C+B\D\C\C+C+F+E\G\C\C+C+I+H\J\C\C+C+L+K\M\C\C+C+O+N\P\C\C+C+R+Q\S\C\C+C+U +T\V\C\C"+C!+X#+W\Y\C\C%+C$+[&+Z\\\C\C(+C'+^)+]\_\C\C++C*+a,+`\b\C\C.+C-+d/+c\e\C\C1+C0+g2+f\h\C\C4+C3+j5+i\k\D\C7+D6+m8+l\n\D\D:+D9+p;+o\q\D\D=+D<+s>+r\t\ D\D@+ D?+vA+u\w\ D\ DC+ DB+yD+x\z\D\DF+DE+|G+{\}\D\DI+DH+J+~\\D\DL+DK+M+\\D\DO+DN+P+\\D\DR+DQ+S+\\D\DU+DT+V+\\!D\ DX+"DW+Y+\\$D\#D[+%DZ+\+\\'D\&D^+(D]+_+\\*D\)Da++D`+b+\\-D\,Dd+.Dc+e+\\0D\/Dg+1Df+h+\\3D\2Dj+4Di+k+]]6D]5Dm+7Dl+n+]]9D]8Dp+:Do+q+]]Dv+@Du+w+ ] ]BD]ADy+CDx+z+]]ED]DD|+FD{+}+]]HD]GD+ID~++]]KD]JD+LD++]]ND]MD+OD++]]QD]PD+RD++]]TD ]SD+UD++"]!]WD#]VD+XD++%]$]ZD&]YD+[D++(]']]D)]\D+^D+++]*]`D,]_D+aD++.]-]cD/]bD+dD++1]0]fD2]eD+gD++4]3]iD5]hD+jD++7]6]lD8]kD+mD++:]9]oD;]nD+pD++=]<]rD>]qD+sD++@]?]uDA]tD+vD++C]B]xDD]wD+yD++F]E]{DG]zD+|D++I]H]~DJ]}D+D++L]K]DM]D+D++O]N]DP]D+D++R]Q]DS]D+D++U]T]DV]D+D++X]W]DY]D+D++[]Z]D\]D+D++^]]]D_]D+D++a]`]Db]D+D++d]c]De]D+D++g]f]Dh]D+D+ +j] i]Dk]D+D+ + m] l]Dn]D+D++p]o]Dq]D+D++s]r]Dt]D+D++v]u]Dw]D+D++y]x]Dz]D+D++|]{]D}]D+D++]~]D]D+D+!+ ]"]D]D+D+$+#]%]D]D+D+'+&](]D]D+D+*+)]+]D]D+D+-+,].]D]D+D+0+/]1]D]D+D+3+2]4]D]D,D+6,5]7]D]D,D,9,8]:]D]D,D,<,;]=]D]D ,D,? ,>]@]D]D ,D ,B ,A]C]D]D,D,E,D]F]D]D,D,H,G]I]D]D,D,K,J]L]D]D,D,N,M]O]D]D,D,Q,P]R]D]D,D,T,S]U]D]D!,D ,W",V]X]D]D$,D#,Z%,Y][]D]D',D&,](,\]^]D]D*,D),`+,_]a]D]D-,D,,c.,b]d]D]D0,D/,f1,e]g]D]D3,D2,i4,h]j]D]D6,E5,l7,k]m]E]E9,E8,o:,n]p]E]E<,E;,r=,q]s]E]E?, E>,u@,t]v] E] EB, EA,xC,w]y]E] EE,ED,{F,z]|]E]EH,EG,~I,}]]E]EK,EJ,L,]]E]EN,EM,O,]]E]EQ,EP,R,]]E]ET,ES,U,]] E]EW,!EV,X,]]#E]"EZ,$EY,[,]]&E]%E],'E\,^,]])E](E`,*E_,a,]],E]+Ec,-Eb,d,]]/E].Ef,0Ee,g,]]2E]1Ei,3Eh,j,^]5E^4El,6Ek,m,^^8E^7Eo,9En,p,^^;E^:Er,E ^=Eu,?Et,v, ^ ^AE ^@Ex,BEw,y,^^DE^CE{,EEz,|,^^GE^FE~,HE},,^^JE^IE,KE,,^^ME^LE,NE,,^^PE^OE,QE,,^^SE^RE,TE,,!^ ^VE"^UE,WE,,$^#^YE%^XE,ZE,,'^&^\E(^[E,]E,,*^)^_E+^^E,`E,,-^,^bE.^aE,cE,,0^/^eE1^dE,fE,,3^2^hE4^gE,iE,,6^5^kE7^jE,lE,,9^8^nE:^mE,oE,,<^;^qE=^pE,rE,,?^>^tE@^sE,uE,,B^A^wEC^vE,xE,,E^D^zEF^yE,{E,,H^G^}EI^|E,~E,,K^J^EL^E,E,,N^M^EO^E,E,,Q^P^ER^E,E,,T^S^EU^E,E,,W^V^EX^E,E,,Z^Y^E[^E,E,,]^\^E^^E,E,,`^_^Ea^E,E,,c^b^Ed^E,E,,f^e^Eg^E,E,,i^ h^Ej^E,E, , l^ k^Em^E,E,, o^n^Ep^E,E,,r^q^Es^E,E,,u^t^Ev^E,E,,x^w^Ey^E,E,,{^z^E|^E,E,,~^}^E^E,E, ,^!^E^E,E,#,"^$^E^E,E,&,%^'^E^E,E,),(^*^E^E,E,,,+^-^E^E,E,/,.^0^E^E,E,2,1^3^E^E,E,5-4^6^E^E-E-8-7^9^E^E-E-;-:^<^E^E-E-> -=^?^E^E -E -A -@^B^E^E-E -D-C^E^E^E-E-G-F^H^E^E-E-J-I^K^E^E-E-M-L^N^E^E-E-P-O^Q^E^E-E-S-R^T^E^E -E-V!-U^W^E^E#-E"-Y$-X^Z^E^E&-E%-\'-[^]^E^E)-E(-_*-^^`^E^E,-E+-b--a^c^E^E/-E.-e0-d^f^E^E2-E1-h3-g^i^E^E5-E4-k6-j^l^F^F8-F7-n9-m^o^F^F;-F:-q<-p^r^F^F>-F=-t?-s^u^ F^ FA- F@-wB-v^x^ F^ FD-FC-zE-y^{^F^FG-FF-}H-|^~^F^FJ-FI-K-^^F^FM-FL-N-^^F^FP-FO-Q-^^F^FS-FR-T-^^F^FV- FU-W-^^"F^!FY-#FX-Z-^^%F^$F\-&F[-]-^^(F^'F_-)F^-`-^^+F^*Fb-,Fa-c-^^.F^-Fe-/Fd-f-^^1F^0Fh-2Fg-i-^^4F_3Fk-5Fj-l-__7F_6Fn-8Fm-o-__:F_9Fq-;Fp-r-__=F _Fs-u- _ _@F _?Fw-AFv-x-_ _CF_BFz-DFy-{-__FF_EF}-GF|-~-__IF_HF-JF--__LF_KF-MF--__OF_NF-PF--__RF_QF-SF-- __UF!_TF-VF--#_"_XF$_WF-YF--&_%_[F'_ZF-\F--)_(_^F*_]F-_F--,_+_aF-_`F-bF--/_._dF0_cF-eF--2_1_gF3_fF-hF--5_4_jF6_iF-kF--8_7_mF9_lF-nF--;_:_pF<_oF-qF-->_=_sF?_rF-tF--A_@_vFB_uF-wF--D_C_yFE_xF-zF--G_F_|FH_{F-}F--J_I_FK_~F-F--M_L_FN_F-F--P_O_FQ_F-F--S_R_FT_F-F--V_U_FW_F-F--Y_X_FZ_F-F--\_[_F]_F-F--__^_F`_F-F--b_a_Fc_F-F--e_d_Ff_F-F--h_g_Fi_F-F- - k_ j_Fl_F-F- - n_m_Fo_F-F--q_p_Fr_F-F--t_s_Fu_F-F--w_v_Fx_F-F--z_y_F{_F-F--}_|_F~_F-F--_ _F_F-F-"-!_#_F_F-F-%-$_&_F_F-F-(-'_)_F_F-F-+-*_,_F_F-F-.--_/_F_F-F-1-0_2_F_F-F-4-3_5_F_F.F.7.6_8_F_F.F.:.9_;_F_F.F.=.<_>_F_F .F .@ .?_A_F_F .F .C.B_D_F_F.F.F.E_G_F_F.F.I.H_J_F_F.F.L.K_M_F_F.F.O.N_P_F_F.F.R.Q_S_F_F.F.U .T_V_F_F".F!.X#.W_Y_F_F%.F$.[&.Z_\_F_F(.F'.^).]___F_F+.F*.a,.`_b_F_F..F-.d/.c_e_F_F1.F0.g2.f_h_F_F4.F3.j5.i_k_G_F7.G6.m8.l_n_G_G:.G9.p;.o_q_G_G=.G<.s>.r_t_ G_G@. G?.vA.u_w_ G_ GC. GB.yD.x_z_G_GF.GE.|G.{_}_G_GI.GH.J.~__G_GL.GK.M.__G_GO.GN.P.__G_GR.GQ.S.__G_GU.GT.V.__!G_ GX."GW.Y.__$G_#G[.%GZ.\.__'G_&G^.(G]._.__*G_)Ga.+G`.b.__-G_,Gd..Gc.e.__0G_/Gg.1Gf.h.__3G_2Gj.4Gi.k.``6G`5Gm.7Gl.n.``9G`8Gp.:Go.q.``Gv.@Gu.w. ` `BG`AGy.CGx.z.``EG`DG|.FG{.}.``HG`GG.IG~..``KG`JG.LG..``NG`MG.OG..``QG`PG.RG..``TG `SG.UG.."`!`WG#`VG.XG..%`$`ZG&`YG.[G..(`'`]G)`\G.^G..+`*``G,`_G.aG...`-`cG/`bG.dG..1`0`fG2`eG.gG..4`3`iG5`hG.jG..7`6`lG8`kG.mG..:`9`oG;`nG.pG..=`<`rG>`qG.sG..@`?`uGA`tG.vG..C`B`xGD`wG.yG..F`E`{GG`zG.|G..I`H`~GJ`}G.G..L`K`GM`G.G..O`N`GP`G.G..R`Q`GS`G.G..U`T`GV`G.G..X`W`GY`G.G..[`Z`G\`G.G..^`]`G_`G.G..a```Gb`G.G..d`c`Ge`G.G..g`f`Gh`G.G. .j` i`Gk`G.G. . m` l`Gn`G.G..p`o`Gq`G.G..s`r`Gt`G.G..v`u`Gw`G.G..y`x`Gz`G.G..|`{`G}`G.G..`~`G`G.G.!. `"`G`G.G.$.#`%`G`G.G.'.&`(`G`G.G.*.)`+`G`G.G.-.,`.`G`G.G.0./`1`G`G.G.3.2`4`G`G/G.6/5`7`G`G/G/9/8`:`G`G/G/</;`=`G`G /G/? />`@`G`G /G /B /A`C`G`G/G/E/D`F`G`G/G/H/G`I`G`G/G/K/J`L`G`G/G/N/M`O`G`G/G/Q/P`R`G`G/G/T/S`U`G`G!/G /W"/V`X`G`G$/G#/Z%/Y`[`G`G'/G&/](/\`^`G`G*/G)/`+/_`a`G`G-/G,/c./b`d`G`G0/G//f1/e`g`G`G3/G2/i4/h`j`G`G6/H5/l7/k`m`H`H9/H8/o:/n`p`H`H/u@/t`v` H` HB/ HA/xC/w`y`H` HE/HD/{F/z`|`H`HH/HG/~I/}``H`HK/HJ/L/``H`HN/HM/O/``H`HQ/HP/R/``H`HT/HS/U/`` H`HW/!HV/X/``#H`"HZ/$HY/[/``&H`%H]/'H\/^/``)H`(H`/*H_/a/``,H`+Hc/-Hb/d/``/H`.Hf/0He/g/``2H`1Hi/3Hh/j/a`5Ha4Hl/6Hk/m/aa8Ha7Ho/9Hn/p/aa;Ha:Hr/H a=Hu/?Ht/v/ a aAH a@Hx/BHw/y/aaDHaCH{/EHz/|/aaGHaFH~/HH}//aaJHaIH/KH//aaMHaLH/NH//aaPHaOH/QH//aaSHaRH/TH//!a aVH"aUH/WH//$a#aYH%aXH/ZH//'a&a\H(a[H/]H//*a)a_H+a^H/`H//-a,abH.aaH/cH//0a/aeH1adH/fH//3a2ahH4agH/iH//6a5akH7ajH/lH//9a8anH:amH/oH//atH@asH/uH//BaAawHCavH/xH//EaDazHFayH/{H//HaGa}HIa|H/~H//KaJaHLaH/H//NaMaHOaH/H//QaPaHRaH/H//TaSaHUaH/H//WaVaHXaH/H//ZaYaH[aH/H//]a\aH^aH/H//`a_aHaaH/H//cabaHdaH/H//faeaHgaH/H//ia haHjaH/H/ / la kaHmaH/H// oanaHpaH/H//raqaHsaH/H//uataHvaH/H//xawaHyaH/H//{azaH|aH/H//~a}aHaH/H/ /a!aHaH/H/#/"a$aHaH/H/&/%a'aHaH/H/)/(a*aHaH/H/,/+a-aHaH/H///.a0aHaH/H/2/1a3aHaH/H/504a6aHaH0H0807a9aHaH0H0;0:a<aHaH0H0> 0=a?aHaH 0H 0A 0@aBaHaH0H 0D0CaEaHaH0H0G0FaHaHaH0H0J0IaKaHaH0H0M0LaNaHaH0H0P0OaQaHaH0H0S0RaTaHaH 0H0V!0UaWaHaH#0H"0Y$0XaZaHaH&0H%0\'0[a]aHaH)0H(0_*0^a`aHaH,0H+0b-0aacaHaH/0H.0e00dafaHaH20H10h30gaiaHaH50H40k60jalaIaI80I70n90maoaIaI;0I:0q<0paraIaI>0I=0t?0saua Ia IA0 I@0wB0vaxa Ia ID0IC0zE0ya{aIaIG0IF0}H0|a~aIaIJ0II0K0aaIaIM0IL0N0aaIaIP0IO0Q0aaIaIS0IR0T0aaIaIV0 IU0W0aa"Ia!IY0#IX0Z0aa%Ia$I\0&I[0]0aa(Ia'I_0)I^0`0aa+Ia*Ib0,Ia0c0aa.Ia-Ie0/Id0f0aa1Ia0Ih02Ig0i0aa4Ib3Ik05Ij0l0bb7Ib6In08Im0o0bb:Ib9Iq0;Ip0r0bb=I bIs0u0 b b@I b?Iw0AIv0x0b bCIbBIz0DIy0{0bbFIbEI}0GI|0~0bbIIbHI0JI00bbLIbKI0MI00bbOIbNI0PI00bbRIbQI0SI00 bbUI!bTI0VI00#b"bXI$bWI0YI00&b%b[I'bZI0\I00)b(b^I*b]I0_I00,b+baI-b`I0bI00/b.bdI0bcI0eI002b1bgI3bfI0hI005b4bjI6biI0kI008b7bmI9blI0nI00;b:bpIb=bsI?brI0tI00Ab@bvIBbuI0wI00DbCbyIEbxI0zI00GbFb|IHb{I0}I00JbIbIKb~I0I00MbLbINbI0I00PbObIQbI0I00SbRbITbI0I00VbUbIWbI0I00YbXbIZbI0I00\b[bI]bI0I00_b^bI`bI0I00bbabIcbI0I00ebdbIfbI0I00hbgbIibI0I0 0 kb jbIlbI0I0 0 nbmbIobI0I00qbpbIrbI0I00tbsbIubI0I00wbvbIxbI0I00zbybI{bI0I00}b|bI~bI0I00b bIbI0I0"0!b#bIbI0I0%0$b&bIbI0I0(0'b)bIbI0I0+0*b,bIbI0I0.0-b/bIbI0I0100b2bIbI0I0403b5bIbI1I1716b8bIbI1I1:19b;bIbI1I1=1<b>bIbI 1I 1@ 1?bAbIbI 1I 1C1BbDbIbI1I1F1EbGbIbI1I1I1HbJbIbI1I1L1KbMbIbI1I1O1NbPbIbI1I1R1QbSbIbI1I1U 1TbVbIbI"1I!1X#1WbYbIbI%1I$1[&1Zb\bIbI(1I'1^)1]b_bIbI+1I*1a,1`bbbIbI.1I-1d/1cbebIbI11I01g21fbhbIbI41I31j51ibkbJbI71J61m81lbnbJbJ:1J91p;1obqbJbJ=1J<1s>1rbtb JbJ@1 J?1vA1ubwb Jb JC1 JB1yD1xbzbJbJF1JE1|G1{b}bJbJI1JH1J1~bbJbJL1JK1M1bbJbJO1JN1P1bbJbJR1JQ1S1bbJbJU1JT1V1bb!Jb JX1"JW1Y1bb$Jb#J[1%JZ1\1bb'Jb&J^1(J]1_1bb*Jb)Ja1+J`1b1bb-Jb,Jd1.Jc1e1bb0Jb/Jg11Jf1h1bb3Jb2Jj14Ji1k1cc6Jc5Jm17Jl1n1cc9Jc8Jp1:Jo1q1ccJv1@Ju1w1 c cBJcAJy1CJx1z1ccEJcDJ|1FJ{1}1ccHJcGJ1IJ~11ccKJcJJ1LJ11ccNJcMJ1OJ11ccQJcPJ1RJ11ccTJ cSJ1UJ11"c!cWJ#cVJ1XJ11%c$cZJ&cYJ1[J11(c'c]J)c\J1^J11+c*c`J,c_JDATA s-c7p"jjB7pb0Qİ7poώuް0Q/0QhuN7p"jjC7pb0Qİ7poύu߰0Q/0QhuO'A":ąą:'A"&A":ąą:&B" 3Za4Ũ7e2ު&[&[26eŨZa4 2.#ʵwQ 9&Y2Y)xƧP< ".!l՞peIo~%|~%|Iope՞l.! " ޒP.X6I|kaυkj{kb7I/Xݾ0>#=GEr0Flݚ,wVVSBOb4Ҷv$f$=GDݿ0>0X5I|faφjk|fa4I.Xݿ0>#=FE"'qQje =HO ݐ,ѫ0 0  ݔ,NO=f 'pMkv$gLa4RBwVVlݛ,r0Fp0Elݛ,wVVTBSc3ҵv%oAN^=2վ;L1F1.顴5T%%ص5TN1H1-;=3պAN[7ڇP +6}6~e "gh !f5~,7R 6&^&^UR\#22 ? ? --< Ӡl 3l3xxxx' PA@ΦhX|2.#ePBΧ8XJK>1A"&Rx91i+ jƭL-L- jƭ+䨽1iRx9&">1A- i?uSYM<_^#4`)iʠ1;ʠ2;$4`*i_^uSYM@2vd4A2L1WP=mPmPWP=2L1 ޱG'(--'&F .p # JԫJԫ .p "O(>եOHԺ"OHԺ">եO(w8pK!Gj!4EEۆ<YW?*wNU-e'^&*g% K.! /\ 8 \M]sN!vJ>C'Ɔ9$Q:lܖ0p'KLe+&CT:f4G!oJИ>'Q@.m=[?{fhn[aD)??GG^TnAUa&Ţz&7. |=\ n)ʇ#*% b Ql1I.Vle@ym$XGތ<e,X ##e66?t ۛ'0P=ƥZӪ 36; FsO{Q4ܘ.5y%`V$3۬9%\*Q _%J"ƽ aB 5+6CD1w#l- 2%ݰwāo/Ƈ`)<X[4ۭ+z(ԭ' ?%}Jѡ> A1E'ԡNn2XH&ѣFY6 D0A:<<^?U=#*' en J')8!.9iS.N&uXndD-r[-j|N ]?TR/Dp'uNGN*А.B CN>`wp'uNGN*А.BT CN>`w# HO0,*ِ-eyS[AC۰Q# HO0,*ِ-eS[AC۰Q&jC%! BxUּJۼP#E&8[ʪ9 p l$DNEB>U?6Ny 7t Lʩm^#ՙ4YCw3 c%ŭG@Y|L!=-{y1~ ?&іމ &_k$I:R.eV$Cr]LQ*9Yw/7c;O0? U0#E.`@ Ͳ15,ߓE5LDV74 $ uDo/=+h#L :!hv| VB ݙXgF˓Ru^$F%s88a8L RL& m!b4 ArUˣi*zMCC` )ד*d =!FNC2( !t\=Aјc{>T [)"I(Qá5M^[.Ei{3*+*#QF( [4zwD6hA_=ʞnDBȈ|eoB(Kþ5]J=&N%'2 *ޗ6?2/֦ j"7/&2ZC8!9J׬_Vg'8,KY."4 #dS|57%028Wg)R 3zaG3kOi'* +1f$>K t(TRrEV]M3 R4'ZiE&460$̯!%6]F27g]^()6O/Ԗ(ݦN32})=F-ei#BN##3ьBHSH~4F*0F*О4lb!N~4hV-/ݖH̖HV-F*V-b!4RG4=b!zb!O>gF*gE*pgb!g|F< }頻bE7䙫˜3%T/Ԋ䙫˜_0  HI<iFFI5F9FI- - )- QŮQ-۲nJ3L  &' 9M @@kz3.+ ?q6~ 'WىWا$~qGVPs--ihB[̐ b4[rۓ/L4% ,jF _"{'_8A m1# L2\..'iOKR0;O 17"͒u/*HIj幘ݮkuH+(+doFO)HjS|hHHA ua5W Ze  =N $ _P>2(@ JpV'_%ٜwg/   Y܈ !+ $?/U k16v_p ![;6 2p< 6AC.3=K2h̴Ҁ/ꐌ-' ,EtBJF+J:"#F"C&(["V CM)&|A Gڠ4'A9?N\ ȑXcDS  w¡5n-ZH5"7NɵB̢ ʺ3B 0+$2I.@c_XAU8,4^;;os4CE!u~BG03:Z:GQ"0Ş,׫wӕnb~L8.vMp0J! c dU F̞ GX! X)?+mlpM$ٓ).[/71OnHlΕ4] ydf4 ^ |s4!%;ڃ4%W{)@U%slfCMEkmVz4-^-54%:%.=ۻI Ӆ (b(K,p+e58+L#[B[:X bbqM3-_B#. ~3cvt.\>4 JمگaǾXu^f3==;(;49@߸4@ߊ 9f69)@9@(>)B! M!/V M[%b _=z _>Gʌ==={3`:^&ZDܤ&Z3`bc]+]^O+Th5 VdD Vg;<dD". L%. L%Ρ(,ݶ8,(>49@߷4@ߊ 9g69)@9@'>)a=V{6Ң |6:V Ң<:@"/:/:A"!gOBƲ.OBG.ٷ. .ٷ. OBG."gPBƲ(:VշT„,Tc>,r):VշT„+Tb>+r):VOB+OB]M+r*:VOB+OB]M+r*:VՄ$+$P+r):VՃ$+$P+r00V AM#)]H)&Ƨ]Һ&Ƨ-!Hd"-(Ը(9MdDO{OAr5dDccӻ@iy 'y ߌ'֍'z '_>@z 33&Z'6Z'33L%8,8,88L%<-ԩ4߈-4R)ԇ-R)ߞ8-k~y yyy n~nױjjBn0QİnO͚qQ0Q//QhqNnױjjCn0QİnO͙qQ/Q00QhqNū^+kbJǫgL9zj+knu.X~SyL[lƮL[l f]d\d\dQf+kX¡"9z!{+k*{դ yR?UL( II( YI{DD Icҙc')9( @0pVIٮII' DշΫDX|Xc@I 3m= 3J 3J7XJ[j~B8V&g,N=5 Bg2͝6h lP mZ"cD,1%ʙrMQ*u7@ZY M&`(N,SY'ͧ`8 ͑ K2 E"X`# dBNDV&' % K$tiv +3ƢUwSG0a$MM%Z>?q $:4 -e+=F)tf%Tٗ<8 r( )e, B6*W"Wq*@ A -ъa^$9{\ߧ't@ 7?i$ }# ^"cYV<) f;IC֨.#ģAT8'n׌ +Q!ps)7 e̱e-þFPĚ  ] mf '|#3Ő.@r ? JG4  ,_/&>"ڴ$аѠ"H>ĩȢ'a5ȥj =_ * I$'OB {LΤ} <*ǖ9̨vU : *'$ϵZ9#6t!Ư=ۦ&w{؊"i+ F7׳$5 7 _r < _ߞ-59^:i4p>$Y,ߧ9 b"8!:3cTEn/dʣ3 r+٧u :x10nb6'4%rAF-ܦ ,  {c  i'hj: D%X Y! 9"v 0S߂Ƞ ݘ˄ݰgJGl$// &;!"6I5A:]:1<e,ȚBx C,`Q( m  gA0'E%-d)לC.5I;KD&›23$Ц 5 "J \~2WH*uS1Oݑ3F2`0b  *Bч tp!z T-Q '}V֐%àH'fim ;c*B vn9:K #ܣ W@Ĭ!, ")0=Z k+)*>e K)5G E a1;Kk*&I HTI N(BD睯eu8%`s &c#Q&K"SzՄqJ%G0D1 c]?ՖN* x.|H%ܚ0j G"7p%,Mӳ".":# ' պ5ëC2Աn%-X>h O(Dg, G/Kw*wr@cѩx0*q@ٞuQE< tTBqh ) &'A":ąą:'A!&A":ąą:&A" 3Za4Ũ7e2ީ&[&[26eŨZa4 2-#ʵwQ 9&Y2Y)xƧP< " .!l՞peIo~%|~%|Iope՞l.! " ޒP,X5I|h`φkj{ja6I.Xݽ0>%=GDs0Fmݚ,vVVTBTc4ҵv$lJlK8ѫҒl)K8]1N櫪rӫOOOHq/ cЏ!( 竪Ϋ [Tl&=GCݽ0>.X7I{mbυjk|oa7I-Xݽ0>$=GE!'qPjd޿ =IO ݑ,Ѫ0 0  ݔ,MO=f 'pNkv$gLb4SBvVVmݚ,r0Fp0Emݚ,wVVUBVd3ҵv%lAN^=3տ;J1E1.롳5T"#س5TM1G1-;=3չAM^NNyny$Q۩9NNN2{{~k{Ŧk{ս_}_]j ~`]Ns뫪r@> r@0q@Оm©Gs@GuG.jFjFr@h*Ar@ jFq<کq<#oVD۞q@ZEȒ0u΢Gi 3J 3J 3J2Y:&" * *Fc.ef(?9) oNS*l2Ka'!=6&-!U>8/v `܀W|vJ''_0 .{^,)Rf!? Zt+$禐O,:>k)5\%q,S.: @\q* PGwL  o $ c8$ů''e[,Ֆ0#' 9!Ws~"W;Qe@kt&),'{c37!ǤOy+ޖ.xs]TqWfp)¢"! *[S), sφ"ؚ7!حY.<*TK ̠&]!!bƠ%8O#d%ƕ$H %F$ ,\zM s!; ( 4¯ ( KQ bӐ Gg/`C\v,V3l 4ݣ+%]*1) $* #.(yK c >!UĩA _ȿM A,ݸ ҹ" [M )I& ֪#R"@ƧXu ̙ lݶ3'x&ߪ ^/"#I(yk#8ץQ[%'rL8ߘН j g~Uۓ?*+:;<"EZ e*Eg0s:A[ 2 I4d)y]5`Kl/#-FC.Wo8(Q +n)#qU;+h.4ɠ5hQt/3iF^%Eo޺@+ -`e:-=K.Ո-ñ#50u$Q#  vL%: ڦk %aѫ#^`$!0$ I9Y(©Ww&p E !g  M -!:\*(y7 Aբ+%  ' 8멚 Ҿ 'e7  ا%H:${5,NNZ Pտ,3 j% >Ή #{~Tz:ӹABأxO MĄW%{e#==@16֞M3f.!zؖR.X#hp* Qߊ;) , 4 cs"[h_*C ސHԆ\7 ZM V1h$=V#\+nprݸvJI"?E0 ˏ6ѠE^F ] Ȥuy%  ;xD(g:̓')e[?0 '_lm [ԒĘ" ٩>Mv7v14* 0էz(8NB@Cd<@AdڐHNQ/9u {f0E‰W86v1BR6 ֈ +GXC!Vt977KPCѨI9 .<)J%vֽ%Ԧ&͚ȫ#+9eUz"> ٖtG Ӝ #V ^T[#[4׏Jôk;b>L&^a +/(3XQzL 1e'[@ r L ,.E:l)352o*sAK H  Oy ,E! +( )V < , ,/REK)kPh9/˙N- O`ѯ;M_ S&n_ 8 1S_ @l8ħEM'@J`}~_N8Ę 5He3Kt(X*E Fn]* {1j N6 9Nբ"1(Z# OM5ū )״5q-_")߁K(2f  m{=ܪ p PC+-V7ڇP +6}6~e "gg !f5~,7R 6еV ,ɝm &)Q(db 3"Vɱ~u!Ὕi \ v>#t֑/@hq,XƟPͿRƅ6S!ؼg "L >d !FO /c_"ҽjvŠg Ŀ 3ovI)?,5>-*Ӻܣ"pҹ&!C}[#Ly%t 9ع+$(|Pީ'r(c*9!5 %{*_G]$oط*wJ ~y<Eh+"#&U~Q^> y4Ӫ,'XbڷQ߻:'$ٲ O%쬡7:2!"=Ҫ5 Tτ;?ĮQz"ky$|P ȤƍCζV)Bކw߿<n3O ɴ(@S!DːG#./ 㿞'ɒ[t44 &Y Zb/ '4&ŪE.\Ga&>mr9~ϩ3/\û}Ū~?Oʗx ՇDH)2jl' H,z}B-7~"Ά>4x˷$&^&^UkV&22 ? ? --> Ӡl 3l3xxxx;5ݩ2oav(ev"ۀ)q՞ 99ñ$3ݿ-hG${;5ݩ2oa&ev(ev"ۀ)q՟ :9ñ'r3ݿ-iG${@884a Ϊ)2!!n+ 8β|YQP+T,fݰ@884`)2!!n+ 8β|YQP+T,gݦ|@ I<6 D#Ͽ i&*NK5Oq66*&l5E 0T+ )Щy'2. ̿i:789ە+$E!$,'W:;6k}g:"F"fI$!R/002Z.͖ ?:P#ۨ ;إqؼ+xB"g ա( PA@ΦhX|2/#cQBͧ8XJD>1A"&Rw91i+jƭL-L-jƭ+䨾1iRw9&"=1A- h?uSZM<_^#4`)iˠ1;ˠ2;$4`*i_^uSZM@2vd4A2L1WP=mPmPWP=2L2 ޱH'+--'&H .q # JԫJԫ .p #O(>եOHԺ"OHԺ">ӥO(w8pK!Gj!4EEۆ<YW?*wNU-e'^&*g% K.! /\ 8 \M]tN!vJ>C'ƅ9$Q:lܗ0p'KMd+&CT:f4G!oJИ>'Q?.m=Z?{ghn[aD)?@GG^TnAUa&Ţz&7. |<[ m)ʆ#*% a Rn/I.OleAy m$XGތ<e,X ##e66?s ۚ'/N=ƥZӪ 26; EsO{Q4ܛ.3w%`X%3ڬ8%\*R ^$I$ƿ `B 5*5CD1w#k- 2%ްxÁq/Ƈ`)=X1mľ8/87Kؕ7ҺOޤO>˞>[EFΞG`mxc?C c> tC jOjܞ<<HMoHttQH H |.סH &#|.C3,ĺ,̙ g n m.M=˼@=y @U?܍܏?(®1nm3Zܤ3ZYqܘqa|3̼ildl/ dl2//vxregD-e;49@߸4@ߋ 9f69)@9@(>)B>HeB>H `@,es~?8b 2cJb '2c{es'ؤewAk wX =wMA2MAMjyŎI'I'fn،'ƩDg'ƼphpҞVW2P23oP-P0sį0iڮsS*ȡ(AA۶(#,Ȉ"A,A. "F*E*c 74%c%BJ `J ucֱ`&C'C'؉R(Z%b 2cJb '2c{((ٮjy8 OǺ =OԩDg'1n'h1nI'I'fq4،'92i2dlڼi6-P0v0evΟ#,Ȉ"A,A. "S*ȡ(AA۶(F*E*c 74%c%| ,|B^,|J B3} 3}CzZ%b Z%;zxևz0(i}1 i80 8i}"}D׃hD!I}H}I'(}h}|$9|29~i}@} -P@}0-P&[#CC,#[§-[S*C׊CS*[%s%UF* 74U4sªEr!B^Erk>H'BmzmzeҹDoT~?b ~?;:YnYnVMA!ƫi{M0 iAk߲0 AkL-ND׃gD!!!׃H'uvI)VI)2VTX+-P+0-P-[S*C׊CS*[–&[#CC,#[%s%UD*74U4s((ţOޤ4ľ8/8O;0˞;؇F͞Gey`@412`@1V5HAn ”HOjH &D>zJ܎J8(P_>s>=y s>Ɍn3n6G39̼pup&ZDܤ&ZPQ3o+3o7+O+s%oiDli2JLD". L%. L%Ρ(,ݶ8,(>49@߷4@ߊ 9g69)@9@'>)b=V{6Ң {6:V Ң<:@"/:/:@"#gPBƲ.OBG.ٷ. .ٷ. PBF.!gOBƲ(:VշT„,Tc>,r):VշT„+Tb>+r):VOB+OB]M+r*:VOB+OB]M+r*:VՄ$+$P+r):VՃ$+$P+r00V AM#,]H,&4]&yҋ)Hd"Y(Ը(9MDX O{OsDccӼ@gz (y ߌ(Z؍(z (s>xz |3s|3&Z'3Z'G3G3LwL%8,8,88L%<-ԩ4߈-4R)ԇ-R)ߞ8-k~y yyy n~nױjjBn0QİnO͛qQ0Q/0QhqNnױjjBn0QİnO͚qQ0Q/0QhqN^+kbDgL9zj,knu.XӝSyL[lƭL[l fw\d\d\dQf,kX*3Y:z!{+k*{ԤyR?UL( II( YH{DD Icҙc')9( @0pVIٮII( DշΫmDX|Xc@I 3m= 3J 3J7XJ[jB8V&g/N=6 <f2͝6] bS d_"iD,0%ʙfMQ*w7@ZZ´M&;J Pa+1 #!2sypYߗ [hU.Jy-Qv ,7CFچ&[' >MǞ%ߐK.ka.i yf?M&yQ م F})&Ǚ!_/' &߬!*L]\LYBX.7D:*ݡ5}C19 6D;*Xu'aSj # &!1V؂*&4,!؝I LQi)L |e.=+3:i f"m;')w|k#8ѿA 1!+J<UC ժ8 %0,<*25I=)&,+ фf YN3  "+.3 KI)"p Gs>d(R,SS'ͧ^8 ͔ L- G"Q`# hBNDW&'  I$tkw +2ĢTvTG0`$ML%Z>?s "74 -e+<G(te%Tٗ<8 q)!)k, G<*W"Xq*B @ -Ka $9;\ߡ's> 7>i$ }# _"cYV<) f;IC֧.#ģDR3's׌ *Q!pq)9 dбf-¾ENĚ   ] nf (|#3ő.Ct ~> JF4  -_/&>"۴"Ͱѝ"I=ĩȣ'a6ǥj <` , J&'N@ |OΦ~ >*Ǖ>̭qQ ; $$$е[:#6z!ů8ۜ&px؉"j, I>׶$7#7 ^q <_ߞt0^:i4p>)Y,ߤC h"8!9"cTDk-cʣ3 t+ڧu 9x/nb6'4%sBG,ܨ ,  |c! i' lj9 D$ Z X! ;""v 0S߂Ƞ ޘݳdGFi$.- %:5"7I5=:b:0<e,ȗCx G,dQ( o  f>/&D%,d)לB.5I;KD&16$Ѧ 5 "J 2VN*vX1Mݎ3F-a0b  *Aч tr!z S2R '}V֐%àF'dhm ;c*F un=:M #ܢ VAĮ!. "p+-<Z g+))@e M)6G C W1 ;Kd*&I ISJ N(BD睱 eu9%ap $c$P&K"SzքrJ%G0E1c]?֖J* x.{L%ܚ1j F#7o%,Mӳ". ;# & ռ5ëC2Աn$-W>h O(Cg, G/Kw*wq@0*q@ٞuQE< tTBqh ) &&B":ąą:&A"'A":ąą:'A" 2Za4Ũ7e2ޫ&[&[26eŨZa4 3-#ʵwQ 9&Y3Y)yƧP< ".!l՞peIo~%|~%|Iope՞l.! " ޑP.X7I{mbφjj|ma7I.Xݾ0>#=GEr0Flݛ,wVVSBOb3Ҷv%fJlK8Ϗl)K8]1N櫪 [TOOOHp/ c!( _6A [Tl$=GDݿ0>/X4I|c`φkj{ea4I/Xݾ0>#=FE"'qQje =HO ݐ,Ѭ0 0  ݔ,NO=f 'qNlv%gNb3SBxVVlݜ,s0Fo0Ckݛ,vVUSBQc4ҵw$oAM^=2վ;L1F1.顴5T%&ص5SM1G1.;=2պAN[NNyny$K&vNNN2{{~l{Ŧl{ս_}_]j ~`]Ns뫪4mq@> q@0r@ОlªGq@GuG-jFjFq@h)Aq@ jFp<کp<#oVD۞q@Zlɒ0u΢Gi 3J 3J 3J2Y:#! + GFi2^i(@9) mNR*j1K`'86&0!V>90u 0 |uK&(0 #|Z,)Rg,B ct+*릌T,<?l)5\%q™,T,: @\r* 'PExM  l  $ d8$į')f\,Ֆ0#' :!Vt"W;Qe@ks&),'zc45!ǤO~+ޕ.xwXTtWfo)"! *\X), sχ"؛8!حX.<*TK ͠&[! bơ%8O#d%Ɣ$H %F$ ,\{M r!; ' 4ï( KR aӐ Ge /`E_v,V2i 3ݠ+% ^ *~0) $. $.(xL b =!TƩ@ \ȾN @,޸ Ҹ" [N )H& ֪ O"?ϧdw ̜ nݵ3'u&ު ]2"!H'yi#8եO[%'uL8ߘ͝ g fwSٓ?++:A<"?\ ^*E^0u;[#2 I4a+vZ5`Mk/#-6C.Wp:(P +n)#rS;+i.4ɠ7aQt'3lF^% Cn޻A+ -_ d;-=K.Շ-ñ#50u$Q# uL%: ڦk %aѬ#``"!0$ I7[(¦Tu&r E !f X ;!Z*(yA <ՠ+% | ' 6쩝 Ӿ 'f8  ث%E6${4,MLY T,2 f* 2΅ #{{?~9ӺACآ|N KɄW%{e#===86֞3f.!zؖR.W#nv* Qߊ7* - 3 ct"[d_*C ސI܆^ 5 \M V\g$<V#\%ouoݸwJJ"?C0 ˏ4Р>^D _ Ȩu|%  =xG(l;͓')e[?2 )]mm ]sԕƘ# ة?Mz7u17* 0էz(9PB@Cn<@D\eِHMS/9u zn0D ljZ86{1BS17 'ֈ +GXC!Ws986YPEѪH9 q%<~5J%wֽ%Ԧ%͚ȫ#+9`U{"> ۖsE Ӝ  #V lO[#[3ݏK´ld #FP -bb#սqzěw ľ 4qwL)=,5>.*Ӻߣ"pҹ&!D}j#Ļ%v 8ر+#({I.u(ݳ *8!5 &*]CL"iص*wI |;Fh+""&T|Sb> v4 Ӧ,'XbڵQ߻>'$ײ P%쬢6:1!">Ҫ3 Sσ:AĮTz"hx#~O ȤƌBζ V)Bބw޿:v3Oɾ ɴ(AT F˖D&. - ⿞' ɓBr43 Z bb/!'6&ŪD.ZAa&?zy9~3*aû|Ū?KBʞs| ~N5'3hl H,xyB-7 "͆<4x˶$&^&^US\#22 ? ? --> Ӡm 3l3xxxx;5ݩ2oav(ev"ۀ)q՟ :9ñ$3ݾ-iG$z;5ݩ2oa&ev(ev"ۀ)q՟ :9ñ'r3ݿ-iG$z@984a Ϊ)2!!n+ 8βYQP+T,gݱ@984`)2!!n+ 8βZQP+T,gݦ|@ I<6 D#Ͽ i&*NK5Or66*&m5E 0T+ )Щy'2. ̿i:789ە+$E!$,'W:;6k|f:"G"fI$!R/002Z~.͖ ?:P#ۨ ;إqؼ+xB"g ա' OA?ϦhY|2.#eQBΧ8XJK>1A"&Rx91i+ jƭL-L- jƭ+䨽1iRx9&">1A- i?uSZM<_^$4`*iʠ2;ˠ2;$4`*i_^tSYM@2vd5A2L1WP=mPmPWP=2L1 ޱG'(--'&F .p # JԫJԫ .p #O(>եOHԺ"OHԺ">եO(w8pK!Gj!4EEۆ<YW?*wNU-e'^&*g% K.! /\ 8 ]M]tN!uJ?C'Ƅ9$Q:lܖ0p'KLe+&CU:f4G"oJИ>'Q@.m=[?{fhn[aD)??GG^TnAUa&Ţz&7. |>\ n)ʇ#)% a Rl1H.VleAym$YGގ<e,X ##e66?t ۛ'0P=ƥZӪ 36; FsO{Q4ܗ.6y%`V$3۬9%\*Q _%J"Ƽ aB 5*5CD1x#l- 2%ݰwāo/Ƈ`);X1mľ8/87Kؕ7ҺOޤO>˞>[EFΞG`mxc?C c> tC jOjܞ<<HMoHttQH H |.סH &#|.C3,ĺ,̙ g n m.M=˻@=z @U?܌ܐ?(®1nm3Zܤ3ZYqܘq`|3̼ildl/ dl2//vxrehD-e;49@߸4@ߊ 9g69)@9@'>)B>HeB>H `@,es}?8b 1cJb '1c{es'ؤewAk wX =wMA2MAMjyŎI'I'fn،'ƩDg'ƼpgpҞVW2P23oP-P0sį0iڮsS*ȡ(AA۶(#,Ȉ"A,A. "E*E*c 74%c%BJ `J ucֲ`&C'C'؉R(Z%b 1cJb '1c{((ٮjy8 OǺ =OԩDg'1n'g1nI'H'fq4،'92i2dlڼi6-P0v0evΟ#,Ȉ"A,A. "S*ȡ(AA۶(F*E*c 74%c%| ,|B^,|J B3} 3}CzZ%b Z%:zxևz0(i}0 i80 8i}"}D׃hD!H}H}I'(}h}|$9|29~i}@} -P@}0-P&[#CC,#[§-[S*C׊CS*[%s%UF* 74U4sªEr!B^Erk>H'BmzmzeҹDoT}?b }?;9ZnXnVLA!ƭi{M/ iBk߲1 @kL,ND׃hD!!"׃I'uvI)VK)2VSX+-P+0.P-[S*C׊CS*[–&[#CC,#[%s%UE* 74U4s((ţOޤ4ľ8/8O;0˞;؇F͞Gey`@412`@1V5HAn ”HOjH &D>zJ܎J8(P_=s>=y s>Ɍn3n6G39̼pup&ZDܤ&ZPQ3o+3o7+O+s%oiDli2JLD". L%. L%Ρ(,ݶ8,'>49@߸4@ߊ 9g69)@9@'>)a=V{6Ң |6:V Ң<:@"/:/:A"!gOBƲ.OBG.ٷ. .ٷ. OBG."gPBƲ):VշT„+Tb>+r(:VշT„,Tc>,r*:VOB+OB]M+r):VOB+OB]M+r):VՃ$+$P+r*:VՄ$+$P+r00W AM#,]H,&4]&xҋ)Hd"Y(Ը(9MDX O{OsDccӻ@gz (z ߍ(Z،(y (s>xy |3s|3&Z'3Z'G3G3LwL%8,8,88L%<-ԩ4߇-4Q)Ԉ-R)ߝ8-k~y yyy n~X : S~%EOΫ.wp~%%~%H  x%%{zv`utt t-{,{!~%~%^|%SD~%t~%~%/~%WwӂIXJgX"=nDa)SvJ\mTSk}r_}rɲS2\uS]uZ w]uѯwXj+@m٥C @Xj1XjXj@Wj^[ZF*JT~%~% ګO=fvxv{>уv*5pvۂvO+ѓu u~%胂_SSSzU)"욫!SUSqCԞ]m׭xUS5S%X]uZOSءZS"دGGH('1"f}NW-̒d׫%2##ؓ#Jx"ޥ"ä"# 8#$ݐ#4":"="nD+ +##߯I#+#JS @ "P"ҿ"7Qy'٬jclJī]@;JОО#p#njΞTӞY ;#=&#S} ۖǖ /"9O"{u%ߤ<i&!"ݿ"~s$@"%)5m5yHS@ܵ#?Jrx!f5M5Mx<<jcܭjcs5sؙk\;j5=""j" "?"5ҞPA(|#rJѺОaϫz,Jj55S WG m5=e55=es4%$ɪ5ի盫J (~Q=e_S@zH z\ GՎ $ (: a>Hr= ~] KՏ ' &< a=Js? |_ FՐ % &= `:t> :oU Ix %>e;Ց w; "< d GL ~]AՍ uC &< d FJ |b<Փ sA '= b JI $O@!s> e KՎ & &8 \<Iv> {Y LՊ # (= e<Kv= {d MՕ % &? f8,LsB dє K $ߣ.c` 2  4U:^ۅ _ ¼˥72ð@lh3ܿ Z˔K1 0ğ^M tCǺߗ{u   2°<9'2ð[䟈 SDR6ðP 0~e D f'ே y H\b 2MĂ )2_ kk{% 35. q72Jż&+i6 ʓ ݅)V i eU7VJ9ퟹ ]$70(doY ޤȞO=C ":->ͩUޗYh. 4>ߍgD"t aւu hߟsv~x? ³]+O% 3B7$*Yy  d؉  ut d P>Щju b6-Q ډ $5hf] "T `iz 2@D ӭޱ-}ڐPDD$Wԉ y %Xoֺ> q) )il!E< 7q 7غډ ʘ ű?ʌ{H޷R 0þ c&2l^/{Wg֋u B ~WT̐ " o ˙ ݳ; $ - տ l]lؼ 3X|ȶEʨ؈t4Ir  0 Xl?s+ Õf7B2 Xx 5ׅH u\]TY0 Zm Fդ빉O`]X6 \p/ִnFv ^]S8QPЛ+nh8ٽ^t 8~!x ×gw6R њ+I ׬ʪhۼVu 1‰+z]B Itm1 3K;so/ AF´fn2 `GNx/E MvǮ5Ϟ11˂ (h f Лw-6g@ ٷ;g& t zg K Q s Eڵ YΒCگOm|* ջ' $ m\kÑkr Ws'r Aط  WkÑtp ^w$r F$ؼ ^gÓSt  _s'q yT"ç Eu &QYV~gY@4ٶİ_&ƚTs b:Nu< {c OՓ $ '9 cAv X^h_ , d  Ґo+15ܕ!ޅ [k 6ð 0sD aʫQۭM G\b )"LĊ"17Ű\ ii)\2İsߡi -ǝ r#ߦS%" A 1 -ğq Coߍ9 ѫ܏. ,29o)5TIO(-7J1 37E (1d ˟80°J˰k=ư  % eUaX 6H, ߠoxVV߂ )Eӷl+? :< e ;(> ϭ )7JRu#m1 3uvQ ݏw} h&ڸMײcG6 7ڙ`R K Vߍў KGiڣ <` ).?` H ٰI6;ܽ>Ѷh ڨ% Ѱҵ B ךƤ7 4 \ ݬ' @ zܗ˺ 6 Oڞ uםj  mԦr.+Ό ڍg t [ J 3 өK:˞s#P8 LYT<ۑdÈ ]}Ö^_ 棨BJ ϻ٥ lٷpۂtE% cRX̝rse< B`s ӡU vzGd/P . G2oaʑͮɥ l Mx Qx;. W4ټ4 [o# }|6 Ů`]WqO%9~cZa'֐EΛٟ_a;} G Yv1  VZO 7*_ ׹ OxY L•n-  8RqFQϞw^O] ͫ. OF_ӿR>`Tك9W  0# _b, r 4 &ڽð%[<Xv?n0ĕK ִ22   %ȣ RW3 |p M Q r yX-ë Fy  Yjk/0Cع- * n[gÑir au $p yU*æ Bu  Tbl/Ŀ~*A %ȡ \ u iWê K7 ڴư+{CVY6t _v"g q } 8at;իD c@˸ AI ols_vkcıեj= ynt?x iگv0ڦ O gO ~ؾ±v՘aL rn~ptŨq՚ <1]y5د `M aV `կ] ͬQ8׾>V$^O ݰ"۔D!w10T:Ȧ[f[O\Eޯ2V )&_\O ޮ-Dh'OJAi2J,6]%~FFB]O"nݱZ`<%c[O"ݳ)DO1 Q8Ħ;  ]Oݱڔ;r)m1- P7æ7K^OE'ޮ#Vz,"$;.5Rg;q*Qѝ"QnLyoĵ,sކE+>W ˤ" }M6r7"X>I ΐ" *cA6 -2(X _Ҷ_y ؼ,' )3.  k/.ۤ% ʖJ ʸ#iQ E = YК柏 3+of X&-  p1-b@ !\Ҵ]" F10Y #`ҹbJ ,++m xDU!GϿG4)áUeEH<ҟV#Xam t0 ٬iݦ^ڟ^z[ i  L "f+ӭ  ux 8ma9Ӯ j@ mx `Mw 9Y <$ө S qy 9mb\6"ԩ cY mz jpa K3ԩ a sw {@h`B8ӭ V px {?a \lDƢӭ Xu qր 6r]:Ӭ iC hւ u]Tw 2c Ȣӭ գ m{ b`  j |~d4 & o2 ށ FSI ڬ 4J @ w7 6ߞ O W ˺Z16Dg' ݬ ,F @ S .0 !G9  U  ܬ21 wRHl`4/I8a5,LldZ=ʫd( L<Q -ZG*=<& 0^32jUd  7 W6 ]]>]D$D${'{~Nh{<Ӻ( p&y6*,*ƨ{{*l2S***^v,**((ɢ*`?H«{-`?ҞQ!R!R!Q!5R!R!R!ovvHx0qx٤BhR!M>v4uSiSֳ;':'vWLu¶=';'{cS%SccZv}c>vv#>>ԗJ Ǡ ֪V `ޢ%2& RԔ4b|B ɢ% #ݛѮ ޓѮ % # ɢ}BcRԓ7&q  l+z- k ޤ高q'RԔ6cB ɢ% #ݛѭ ޓѮ % # ɢ~BaRԔ4(q kǠ: 3ztw .ޱ ߪ84 ݄ kp g ۪ K%u-nt~䪳:ޗ TW}>  X,qEVf"9 'R8㣱6D֖!!D68㣓'R !9FWep+ X=  TW~޳;ntu- L% ۪ kp g85 ݴ ߪ /ޭV  JD =q8䣓'pΫkFwԦfjџ]E 0KBJz),Ϋ9-kFw<ЙqH " kIy-!D7 8䣓'k\x L ա .H9n}q Ҧ ^-ªJ J ހª/ M Ūm hxt 'Ū M -ªI I ށª^. Ҧ ޗqn| ,J:޷  O ԡx\'j 8䣲6D֖!ݞ/< E@%Cw=*k:ͫ'z (JKBE 0ݘџ]jfEwԦkΫ'pq8䣱6D .֖!yHS@쩸>S@D$D${'{̝DP."|{Ǹ|N{<5Ҹ-OA(n(ɢ"","3"F"b]l~"P"ծ##5""Ҟ##""#ԓ##o#Gy J !$!Ж1$S%SSiSֳ;'<'XŶ;';'{$!\$5M!ݝ.9 F?%Fw<-k9Ϋ*z)JKBE 0ݘџ]jfEwԦkΫ'pq8䣱6D .֖! ID =q8㣓'pΫkFwԦfjџ]E 0KBJz ((Ϋ:)kBw>ЙqK # lHz-zt  &Ū M .ªJ J ހª^- Ҧ ޗqn}.H9޴  L աx\'k 8䣲7D֖!!D6 8䣓'j\x P ԡ -J:n|q Ҧ ^.ªI I ހª- M Ūj ixts /޳ ߪ85 ݅ jp g ۪ L%u-nt㪳;ޗ TW~=  X+qEVh"9 'R8㣱6D֖!!D68㣓'R !9FWdp, X=  TW}޳:~ntu- L% ۪ kp g84 ݲ ߪ .ޫY Ǡ ֪T aޥ%1(RԔ2a~B ɢ% #ݚѮ ޔѮ % # ɢBcRԔ8'q  k,y- l ޢ髙q&Rԓ5b}B ɢ% #ݛѭ ޓѮ % # ɢ}BcRԓ6&q l Ǡ: 396~6ŕQ~k~2 ! ̝UPU3U ~( :9~|~UUUA~D:(~UU@ H b $3#@Znz_k J RU߻j{f 6_'13`ܢmZj I׎ QPBGJHI=TL$K 'm Ȼ& B7 ̉ # YN< = O N< < BN  a7p; =ˋd 5ˁ7ذA7`  ڲ EM< < M N< < # YN ̊ ڻ7B& l ȼ(&J QP?HJJI@TNz K֋ hjYX3$ܡmZ-j K֐  ɯBb{;mX#- =Љ@ϫD*6Uh c+ N֒ ۩߯qr& -ԘzW ?n ˕!֜xQ T܎ ~ r_ F Qt UQxn ˕!ֽzW ?' ,Ԇqo߯N֒ ۩+ cב6UhD*>Ј; -oYb};@ ǯ| K֍ ijYXG ؼ3 )4+S9ZѮ@| K֍ jkWKo 8[2 ̛j ,.% XTOV͊ ytCkה ̽ `P s ˃ocRhʙZڰ{uydq  w ̿,kC{u$ Z̋ $ [̋ zuCn jז W ?w ʙ\ڡʝ_ ښwzX @o ˔!֛yQ U܎  r` F Ru UPxo ˔ּ{X ?v ʛ^ڤʙ\ ږw W >o jBzu# X̋ " Y̌ |uDm kז X @w ʙ[TdfT~Pbo˂ t ֑P ̾ `lDyuV͊ $ YTNٲ. ,1 ̜jܿ[q 7jXMݚk} K֎ BH%Ϯ5p 1Xm:ͫҠ:1Q1?~1%1@᫪ٔpFpbb١sлW,¨1}1 $_  q L"]l~W4bCֿ{H«{,W$bMI Xx0qxB !w<kPkP8oG2ڷ{x'jPVkPwy'y'ֹy'HB w ʛ\ڣʝ_ ښw{X ?n ˕ ֜xQ U܍  r_ F Ru UPxo ˔ ֻzX ?w ʛ^ڤʚ\ ڔv V >n jC{u$ Z̋ $ Z̋ zuCk kז V ?w ʜ\Xr_ F Qu UPxo ˕!ּzW ?؀( +Ԇqp߯N֓ ۩, dב6VhD*=Љ? -kX*b{;C ɯ~ K֐ kmZVܧjY3iڿ} K֎  ǯ@c}<nY!- >Ј:ϫD*6Uh d, N֒ ۩߯rx% -ԘzX ?n ˖!֜xQ U܎ ~ G ؾ6 (5,Z6VήB~ K֏ kmXJn 8[1 ̜j ,.$ YTNV͊ yuElה ̾ `P v ˄obPfʜ\ڴ{chQ~Pco˂ s ֏P ̼ _kCytV͊ % XTOٲ/ ,/ ̞j[o 8jWLݛj{ L֋ @I'Ӯ4m 4X =})سH6b  گ BN< : L M; = # YN ̊ ڻ7C% l Ƚ(#K UM=IHGJBQP} J֎ jmZV0$ܧjXh E׌ SN?IJHK?RP&K )l Ƚ& B7 ̊ " YO= = O N= < EM  `8l= 5ˇc-o'zf#+C @ - PZPZPZ)PZpeI @w@% d 7[ZLZzz{Czzfw<{A{yfIӓf{lssÔfܹج5zz&z7įzf\-ƣ\fN۔f\-o-o"f\â\hTATff۩PZT5QZAQZ"[![Y"[p pECCk%>U:"[%pT"["[ppppp|ǫp8phhhCC"CC&'pcpppEx-HjoT;B HjHjԧ0j@JjqCZCCfCCN8uS7u8uP.dCiCPZWU'`?v{J^c?eSy!Q`?e⎪Č2"Y?]ܪ_(c\4ITT!T!R!GP `?ޥ F @h?ä`?Q!R!%N!4`?:`?=^?nR!]x/!qX=R!R!JIYIY IYӴIYIY4`?P;`?b?8`? b?!ŵ/ fFkIYēllIY~R!pR! IYJYv|vwOژR!=&R!Sv!),G ,G]Egc?`?0ҕ`? `?`?~5{>&\>'IgǍ>6Hg,G-G3Hg,G,G4 R~%٬$>1HgBHgHgϼ,G6,G]Ӹ]/v,Q!%_ϫ㝬J)>>L8o?8kDvu nLLqqŎqlŒlll &'>>LL(lrV>7>>[ҕ%`??`?pkR!߯]ʐR!)JYIY'JY%Da_aۿa>99Tչ99TรTϷ+9˜99STTpT5gKgK+o+Jm-jjBJm0QİImpE/Q00Qhp< T !v1;}LDp|, "'|i'BwI PI}LC|{, 1&{vi%F1~- zQGLCv}( 2%yi)CuB" %UJLC}* /)z М#Ee zm 5~QJ xQCw~K&  -a HDo{29  Չ 2aj @Ck  ٜz)=i qo ;xTI QD{1G  -qY @8T{T " xI 曀Ҙ% rS  dJ Ԛ LR8= k> LHH &j P1}z6? >d IՍ "n (8 bFO}\yԍ 3; &; ` KOP &jm@LHSҾy9B 1 Kw %o;gՑ T (; azI<D ~` KՒ # (< c<Ks= }a LՑ ( $8 _=Hv< {Z NՊ } (b %< `L=l#Zty2; @e MՕ # (A g6dus %] + eGI\I]ۀ*_yH5;VcڈW ٞZߔWjP 5ɰA 䟳\3+q D߿X 970*QوW ˙,؝ lw 0A OQM ^8n3°i ߾mع|q . r㟌P ˌ3.Ÿ ͼ1֞Ffم ߪܗ 7ð@p߮5FtOu9{lSި М4["tVB J+g )Ռ dB(" &8b0@Avx E  M@ ٣_'$f*Y1_V*>6 6ÔT gX$6 u dn ! ʝ '͞ ܈LPuf r) Q & $  F _sG/ú}zG .D $&˸4'P* & 7),;Lj)foZ!{4IN2ƨ*ރ),۸ޤ\/ʊڐ" GK\pܒ ۃ S ]L+֑$ 'w ;߂ ]d-Qam(KΈqs pVv8 !; A Ze+֕ Wϝ g@ DV{9 =_v S)֖b`-߮'h'֓j a]ڿ^ ,T)֖a^^_* W)֙:g_ږ}- 5 XrΌIi7 v;7x7 ]:lį WE*Q$ Ϙ+tg% ׿\ע!@FpM*282)pt5 [ 0 ήi) q]<YU )K hÅ 9gm 2ʽ́0B %ȡ W ~ ]P!ç D#IY &t hÁ 8bm129H  ȗ d " rp u N % , tt R  0 } l K )* yr O  * zu r L )* tt P  - ~ l M (u O kgÔwa = (A *J٬Y "~Z jÄ 6fk 2EZw.Dl . o w "JTN~<k8{ P( B| N^˴@H mcDeuϽpֽɱաˀC@F mp`i}^qnc_oe`Emaz`kaaek`Ψbj`٨b[h_٨obrס^Ց*ʱ Lkӯw٤1}VS>IzK8իEɃFB|QYn >r3; qQC|1E Ή 1ci @Coy сci$Cu9 6|RJ vQCtyF*  1l ~HA2:  Ӊ ._g ADoy Ёi&H{6 4}RJ vQC{*M& -[ HEm}16 %&  /j xHBz.:  2ah @Cm Ёji#I$~1 ryQK\L/Wyy #cԁ t uΔ cv,ZrԚ EG (7 \ E_ &Ҥ.:$t= %p DՍ &j &9 ^JQ|`|ԍ 5? )B j HS &y]>Տ qC ): _ IJ "}^>Ր r= (= d JL (jy^Տ Q ': azG8? }[ HՍ $ )9 ]>Gs< ~a PՔ ) #A i5HsC K H "c8Ք w@ $9 a GH &gze՘ R #: bz7 T`cf * f @# [ T# ?7°' 0 ˛1 2K8 t "T [,; "8ŰT埂 QB$/[ܽ䟈 OB#1İV K@/[㟄 RA/ Xݻ% Y 6 ".йq bI gʝ + Hn 0Q㟈n6a;İ  G? Q_WQ9Imzu^4W:Þ]_ ]Dm ńn`+ ło_- Ŝn_J- h}pFq X xS P=ןc 8 aN+ߩbɫ# 3- R7n *|Bcik M # ռ( 7ڷ v GMԩT  1\Iܷ 1bec WN CD|,7I [ " ݛx 0 * o{ a\  8kR 1֩ D l0P b֩ D l/+ b ˥ a-ކ6A#  l ۾ci+r*֟þ  ΢ aX 1ЙDKϷٽ 2*kʃWڊۂµyپX' d› QIAuڰSG+֘p͠ Gg=| FQ d^ Q +v+֑h S_[ڬ + w(֚` Me]ګ $ +1 YpHo֩/ ib^Zn N љ), lg Aq8 !icygR&̌RRlɵK + bu2 " `̕)oЖ isؾbמ Do0 {Չ?Lifn/ X < έ- NDeӻPVُŮ2,^aw p# k Yhkp0Ľ̂<I Ȕ h  t `Z6é D  x-  &ț X'* st S 4 z o N '- zu O  , yy p P 'v Hڸ  [gÒlp by$$p yV,é @t &OYR}y?U.P )!D gÄ :סA ޴0D\wU-( r N&L<R '~p i=w 6M!@=8y ֨2 A WcE[իDaC muRhշ˱r՗Z= nri}_ymdp^lc_kbèb=maᨽx`׫bե4 Mhԯv/ڤ P _J {عızՙzI9լJɅGj1PaWTSяo  ^Oݰ ٔ>p%0U7Ħ;  [Oݱ+=t'E1 T<Ǧ  \Oݵ!9 p'1Tڋ:Ŧ ڒ\O޳ HuI㠣J>gYJ(7H,FF'\P!pݲ\_;\%t\Pݯ ZS?%s\Oݮ'WV<Q%]O!ݮ ˔ -H.1 )'AEВɦ Gާx N|  ̤ =KV @I1qbѶ/! D1) ^ "aҸ\ D0# V]Ҵb L.%!V)dҼ_l 90,l ۠4# ͖M ʶ$léP G A ZЗ矑 ./ie Jc%  /0c  Gd)  3*n _*'  n0,-<[,DԈ J ,U  Ms O S s]rDAwӲ Vu r{ 8^  ZmC#ʢ}ӭ Sv qy {:k_ 1ӥ g= r{ {o]Rw顚:5Ӳ  mv cn? QUv!͢8ӯ ] pw y!iadZ : jկ K my n`e;:ӭ @ oz `R 6^>ˢ|ӭ R nt <kd ;<zӰ V p| 7s  5NisSC|  9 Qs֬Y 5 %@ ܊ v= ݬt4ݞ O Y ˵a16`g' ݬ .J @ U ݬ2{5 6G8  uA ݬ2ܞ O R D5xu& ج 2J @ S ڬ4}1 7G:  w7 w; O X D0sz #ӂ  '> @  tF l?Ҟ O V hKfZi1PaS׋Tэ%d^O^FޱZ '%u\[Oݯ+XU;%&wf\Oݭ0WW;%m\O!޴I)RnL1dBJ&4 1F+[Pܳ_6B1 Q9ĦMK^OC'ޱZt+D$K6RD4pC֚ Y\hJJ } =unLt9mgf:r*Ljй GަӉwNN{ X Τ! ~?d #3 }/!Ue>aLKT EM+kfѲ0"s ̼2& )E`-  ,'k  F`,  -'i  3,  i-߿%ۘ! ȖP ʸ&kS D NП \И 0+_!cҺ^J# 00-j !vDq"HDT:ã4L;ӟٙS kV 2 "έ[ĸ P t̄ NHT~ХrӇ Jݏ +T  Oi R ݺ\ 읺lbdA;~ӫ Pu p} 4s`@7Ӫ O lց /w`?:|Ӭ P n| 6qa ;9{ӭ K m{ 5q^ `: Ԭ b[ oy mnb K6ԩ d ny ;mb ;ӳ nD ky n`Uw=9Ӯ  v~ s_!ڣ=Ҳ a n ou] 3Ԩ ([ j} n_ G j[d xYcܑD| G| 0 )}ݬV / @ "S  22 &G6  Q .}: G9  T 03 G;  !U x /6 +G9  P 31 *G:  S 12 /G9  T ެ23 0G8 R 2: .G;  Q ެ1x7 .G8  uE w*۞w O rc `A3e? eT}=n HeT6sgFXաI `vS`i`43H9b3,Lqe\8ȫe{&=6O .YE);?$ 0\42kZf!  ; ժ / ձp eO=pa c ߽ uߔΩ^KԼ| 4ҏ ] 6    fs d{2Ք yLN w Ωt ^ӈ ,zrR D   _묏 m\ 9 sQ(l A)x >hPՓ Jr .-_=wRHj_3/K8^5,LldZ=ʫe~) M9Q -ZE+?;" /b51iYe!  8 U4  V- V!= ye ϰH В9m 1j ǽj̾ P` n~ =3 +Cۯ-л 1 o}p_ }p_ 1 oл - *C=3>9_ nS .$W( } } ($W <.` n~P̾ Ǿk 2jn Eђ9e ςի. S ݤ ! #S G)?̯G G݁rPJuGGG XNRrP& qPWN$XN >J?J>QπJXNu>>>>}>]JNJ6>΋>8Q'QQQH#o zp ` >H!q tn ٌ u*Cƴ;ل в 5[ ^k!ƹ :;,àոAM e3 ''BƯ<ى в .\ fk!ȹ <9*áպBM D!p yj a CC&m zm~?A|Nk9H&ͫ %ޱ]> qɭ "Y tu[ \˪ )߱|Z = \ɧ 'y6 -vŲ ζ yЮ|fa#)÷79WXѤ6}a_#3Ʒ56xCLN;B@­ <Xأ M^_X  v#*uFMѻQ@?Cƭ 7^إ XVa^  {($$\Qѥ9vg׽g%$0D"WQѦ;~me :<Lj OW=gBɑO`Lb[ԮקXXԭ֧'ϧW YԪ٧LX\Ԯڧ56VUԩԧad;T0`i,kQҲ9>* O7,B?Ēsܨ _GWLűՑBޮi ݦ5_Dù8{:ʼn +n+X "O"+Wh'qcvm 41_Pû|ŏ w+t69 T>ٷDnşmW X,ݠم2OUmq Ճ t;MloNT_?՝|ˇ U؉E[ D"n {o a =J"p u߼i d E E'm xk ل {&=Ʊ<م ϲ 4] `m!ù J<+\ʷ<*?Ik' +>=8t'ղAX$ α Ҟ@ x!Ĺw ˯X UʫD8Ii ϭ /` hf!ƹ 77 MN] xIzNlH&ͪ &{Y? qɬ &}Z> lɩ %۱] :x  |0*Հg`"ķ5:UWѡ7}`׿]!75<\YѪ;|f`#*4<p@TM:C5fG K9Xأ OV ɝ $a  y99hFQ Q}Ѳ Ǝ 5jH4V% ppXOɿdك ث Ta˾^  I =U Ȧ >?ƭ 8\أ SV`X  ~ :Rt1']ԧڧ|fWTԧ֧e8Y-Z^԰٧ͧ\ڷYDnnM ` B_MsЅ%W(_ջ+ ~f:Nhv-?`1! 2ӄRBW P $:|Ͼ 4I.76= ÿu%;-8/й-~aEEӾЁ־ )ÿIb9 x% ֽѲr-#4'N0:2Kȡ d  jg5d}C[rܨo , V!ݜ^\څJ'Tpv  pDQ{ݮه ȧc=ަ0r ֶ Pڋ z\~ŵ V۞ !tޞ    wy " FD1de) . 8ݵٷIUŻԍ ׉D9R9RȎ^^g&N$cGjGj&N&Ng&N&Nzxa^M֏^{xyx#s$sEyyg}Zv|p\Ѩ5y5Z5ʵ\e5V5Z}Z~ZpZ~Z"[}Z}Ze"[j"[yyE$s$s¢\;bL>fR>?;R>`; ;-;O, ?˳?P>g;=R>R>~,],oQ>)?ij?;;t,[,R>R>d>C>C޲L1Ÿ$=P1M1='0y=C2?C2Rw&0'0O1>CǷ@z`Q1{K1ӝ* @LO?CDRRL1&0b&0>C>CRRcL1,L1 $Xܫ ]߫4-A# o @uo ? Ktl o ţp U.`o q ˧o _ ߫DA#X W +++y@  ,+\!W +,+y@  +-\!E۫F Db Zi %*;]f ح] @դ1Y1-G6ׁ MZ&ӯs Ӭ%_ 5=0*K]R ^/?ǬDh "٬6dxP6`۸ D EՀ,:fսOij z\8%  G#pte kc$ٗ<%<DԒ,ݷ H{P /  n8 d؝ aE۫F Db Zi %*;]f ح] @դ1Y1-H6ׁ MZ&ӯr }Ӭ%_ 5<0+K^R _/>ǬDh !٬8dyP5`۸ D EՁ+8fջOij z\9&  G%puc lc#٘<~&;D6{P /  n8 d؝ aC۫K|b Zj %+8]h د] @դ1[/+F6׀ L(ӯu Ԭ%_ 5<0*K]R _.?ƬEg !٬8dyP6a۹ E EՁ+9fռNji y[9'  H$ove kt3ϳ٘=~':s ʰM\$ pNqV lrvlLΠC۫K|b Zj %+9^g خ] @դ1[.+E6׀ Lp'ӯs Ӭ%_ 5<0*K^R _.?ƬDh ڬ8dyP6`۹ D DՁ+9fռOij z[9'  H$ovc lt3гٗ=~':s ʰM\$ pNqV lrvlLΠ {{  Ԛ ջw ֫l. JlE dKfi.kN}= 0Ӎ>"͗t ձV Ac% ]. @x6 ?  Kgk +Ry e z Ī8}Ԉ޺ Q jo ê ժ9wgtz =ԤDB+ت^ ޞ  JQ &fғ[ ߪ-" C e[fiѢ jN|= 0Ӎ>"͖Q}    O K= 9 OY V k o+ SyGj 䪇D  Ī7}ԉ޺ Q jn ê Ԫ9whtz =ԤDBH52] Tl`Zl Aq $@]7 ҷ&a ~SԦ n! PmPA݈̅C i( $ ՗ + /̅ݳ} 33 ^ կ cˡ J6 Q T9 ̦ ouj rˠMu hˬ y,# _ Ȫ-= 9+ ԊT[ zJ Ի Key ܪ]_Ԧ ߫H51] Tl`Zl ޝ  JQ &fҒ[ ߪ-" B fW J\Ʉ &:Ѧ 0g. :ɢ # 0k : U ᤅc& EqE @ _̾=  Iej + Sz f z Ī7}ԉ޹ Q{ ho ª Ԫ]_gD߫r  "H +߷   yݤ[^x?~.³~.;?ԪY >݊ @EYi҂ K Ӭ "g +߸   yݥ[~_x?~.³~.RA9pՕf=IV>J=vё.  K0zvVpCo4s1ԇԇb䫤sGq{ӫ ?^uZ y  f +ߑ "ir  "H +߸   yݣ[^u ?ӫzGqsbԇԆ1soCn5vUz/K [aH87vY5&Ө ߻DΪc3ݏ 7 cv%KԷd\YQ|RQ «/rʪ4Ԏ&yF] K`KG]y5ԏ&0sǪëRQQ|Y\%KԷdլvc 7 c3Cͪ&Ө vY5I87 [aKG]z5ԏ%/sȪëRQ!Q|Y\$KԷeիvc 7 d3Dͪ&ӧ vX4H86 [aRة]L .m֚y>!>Fν*I`Pf|Տ SiݡZɪӯk OH' ެ ժ ڡ%#!/~ŢՎ&zF] K c?ޤɫwl~/`{ ~% V#3ޚpѮ ޔpѮ % V#3 ~{`l~/wɫ? 4O~ K04HL YuNb0 6B o ։+yM Pӓe  M Pӓeܭy ։*C o. 6ިbߋsM5HJ Y޺ L0 E0GׇbM ֦\C n޵c, HT H ĪĪH T ހHc+ C o ֦^MbG׈ D0MM L45J7^za  >fw;  վXXīAڤGWGWAڤīX վY9 @dx  a_z4K7K K2 ˶ a' ۧk\ـz70٦ee %71٥\? *[? *ڡ %71٦dd{70٦\ٟl)& ۏ c 'ʷv9 e & $ ٳ ʗ pD Ⱦ Q܍#ض f 締M 1 2Lf 緶 {$؛Ⱦ RD ʖ o' $ e : w &ʷ= D8:o& 8C l3 u6 96ӄ RS֢'Z $ӝ|rM, Nk+ Lj~+ Qk{ } D= E8:oW˴8C6 [ WWaFb ͖mq kŕ K Dˈ| C Ѧ E 4@f V Ӭ ؁\ٵSBШ[Vy ,/ ? p'Ԉ 1 J4G x $ D# ͦ C TPZ NR=اĵ) m Q1s5 A8 { Z ɪj q 6 6آ)Y %ӟ DsJ =` )"i`S;Bxxl E. U ԣ 9 밨  n8 "-~Z < q 2 B1Ϯܩ=5rcĘ  W@sC B` )"^_T;CH 8Ɓ8^8\)}A 4, QzkAS0sh) nc β1r5 B8 { Z ɪj p V 5{ XιTּٺu Щ* W'm N> <;?8괓;\(z@  4 | p9 [ջTт WSz aηFִ k  Tlj AF'tK> LF  ~ լA Na థ91Z̻ aE؄ۢssvK, Ol- Rl~+ Ok  e8 Xܻ7Ӆ TT֢#A , nӥ#m# й:w|CS ?ȳ_'c Л ݪk5 Kuӎ UGY Z lӞަ rJ~+ PjAa ,Yi SΦ iӠ y S8PMC aݢs37ֈĥ ø - )^ЂP aӉ 30A ƼH ҭz @5 '6 ֟” ] Ѐ2_y # ǭ ) մ j \JC bۢ37ֈ]صIӨ\e  XI *kr ձة{ Kיγ2 Z/p$=4r ™ \ Qr5j:b9 CͰ &  ӠGGX77Cֱ=\..φmL ׅ#   `H -! i ѱ%|&949@4 ݋ 97muB)@uB'>)ey)#_˫)lAّ_NLNI\βNe<ґ\3OYz-ǴYgf-Kb߈>Gf˶>wBxFf6Mf(NM3ef(خ#!x[';!x]pT';,Dlol'_oDg82Q82*n@ڰQϖ{xiuidۥunL'I4ɇ+I4SEA$'GkA$=G:a=Xƶ=D˿X6Y׊ {f {}VեfMBJ a]J u]a]ꞹC-ǴC'؉`-Z%b Ñ\βb 'e<ґ\룫(ŞB(e̞B8 Ž^ ٽ4uν^MDg'Ɩlh::͖lI'1`!I'fj1`Q92e2jJۮe%-P0~qڮ02cs~q#,<,A`ߨD׃|G*hDQW~sU~I'Z|||$9|29(j~{Z-P{0-PpO#C׺O9,#[‘PTrS*CTrS*[zllF*x~4Uת~4sJ{~ibeOib*)ekOw3CwjY3CtAotNLotNNL=K8ss2Mtʔy4oKb4o=>Kb,N|D׃|lөDQV~s# V~!x#h?jykJ)DJ)2D)j~{Z{K{ix{|JnJ9npOޔEO9A$E"zlal=a:vp~7Y~ {V5YN= , WЋIܣa:zݣ 0`z~ 0OP,ƞP,rExϞG_xlAw&߭lAGU1w&dV˔HlȔHOj6<A6)b=V Q QF>U ҢS>~=f@"/~=b:@"!gOBƲ.PBF.ٷ. .ٷ. OBG."gPBƲRT„7ѷTb>7TMۼT„:ѷTc>:{`HOB=OB]M=%H!OBlEOB]MlEI"$5Ѓ$P56sK$j5aЄ$Pj5 00T'0W T'{AMBf&f& $AW $MƨN?33KĚL`}G}x̩S-kx S-/ U8؆x8ͣ{K$/xccc ?YQ'YI'"'׸'H?s 7ʌ7Ϩ]&nRZ3=Щ="E'נ͹t..,%-%*b(S2sharp_face >حSDATA! >DATA! >DATA@`"? !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}         " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |  !!! ! !!!!!!!!!$!'!*!-!0!3!6!9!"A"D"G"J"M"P"S"V"Y"\"_"b"e"h"k"n"q"t"w"z"}""""""""""""""""""""""""""""""""""""""""""""### # #######"#%#(#+#.#1#4#7#:#=#@#C#F#I#L#O#R#U#X#[#^#a#d#g#j#m#p#s#v#y#|############################################$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%%%% %#%&%)%,%/%2%5%8%;%>%A%D%G%J%M%P%S%V%Y%\%_%b%e%h%k%n%q%t%w%z%}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& & &&&&&&&"&%&(&+&.&1&4&7&:&=&@&C&F&I&L&O&R&U&X&[&^&a&d&g&j&m&p&s&v&y&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''!'$'''*'-'0'3'6'9'<'?'B'E'H'K'N'Q'T'W'Z']'`'c'f'i'l'o'r'u'x'{'~''''''''''''''''''''''''''''''''''''''''''''((( ((((((( (#(&()(,(/(2(5(8(;(>(A(D(G(J(M(P(S(V(Y(\(_(b(e(h(k(n(q(t(w(z(}(((((((((((((((((((((((((((((((((((((((((((())) ) )))))))")%)()+).)1)4)7):)=)@)C)F)I)L)O)R)U)X)[)^)a)d)g)j)m)p)s)v)y)|))))))))))))))))))))))))))))))))))))))))))))*** * *******!*$*'***-*0*3*6*9*<*?*B*E*H*K*N*Q*T*W*Z*]*`*c*f*i*l*o*r*u*x*{*~********************************************+++ +++++++ +#+&+)+,+/+2+5+8+;+>+A+D+G+J+M+P+S+V+Y+\+_+b+e+h+k+n+q+t+w+z+}++++++++++++++++++++++++++++++++++++++++++++,,, , ,,,,,,,",%,(,+,.,1,4,7,:,=,@,C,F,I,L,O,R,U,X,[,^,a,d,g,j,m,p,s,v,y,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- - -------!-$-'-*---0-3-6-9-<-?-B-E-H-K-N-Q-T-W-Z-]-`-c-f-i-l-o-r-u-x-{-~--------------------------------------------... ....... .#.&.).,./.2.5.8.;.>.A.D.G.J.M.P.S.V.Y.\._.b.e.h.k.n.q.t.w.z.}............................................/// / ///////"/%/(/+/./1/4/7/:/=/@/C/F/I/L/O/R/U/X/[/^/a/d/g/j/m/p/s/v/y/|////////////////////////////////////////////000 0 0000000!0$0'0*0-000306090<0?0B0E0H0K0N0Q0T0W0Z0]0`0c0f0i0l0o0r0u0x0{0~00000000000000000000000000000000000000000000111 1111111 1#1&1)1,1/1215181;1>1A1D1G1J1M1P1S1V1Y1\1_1b1e1h1k1n1q1t1w1z1}11111111111111111111111111111111111111111111222 2 2222222"2%2(2+2.2124272:2=2@2C2F2I2L2O2R2U2X2[2^2a2d2g2j2m2p2s2v2y2|22222222222222222222222222222222222222222222333 3 3333333!3$3'3*3-303336393<3?3B3E3H3K3N3Q3T3W3Z3]3`3c3f3i3l3o3r3u3x3{3~33333333333333333333333333333333333333333333444 4444444 4#4&4)4,4/4245484;4>4A4D4G4J4M4P4S4V4Y4\4_4b4e4h4k4n4q4t4w4z4}44444444444444444444444444444444444444444444555 5 5555555"5%5(5+5.5154575:5=5@5C5F5I5L5O5R5U5X5[5^5a5d5g5j5m5p5s5v5y5|55555555555555555555555555555555555555555555666 6 6666666!6$6'6*6-606366696<6?6B6E6H6K6N6Q6T6W6Z6]6`6c6f6i6l6o6r6u6x6{6~66666666666666666666666666666666666666666666777 7777777 7#7&7)7,7/7275787;7>7A7D7G7J7M7P7S7V7Y7\7_7b7e7h7k7n7q7t7w7z7}77777777777777777777777777777777777777777777888 8 8888888"8%8(8+8.8184878:8=8@8C8F8I8L8O8R8U8X8[8^8a8d8g8j8m8p8s8v8y8|88888888888888888888888888888888888888888888999 9 9999999!9$9'9*9-909396999<9?9B9E9H9K9N9Q9T9W9Z9]9`9c9f9i9l9o9r9u9x9{9~99999999999999999999999999999999999999999999::: ::::::: :#:&:):,:/:2:5:8:;:>:A:D:G:J:M:P:S:V:Y:\:_:b:e:h:k:n:q:t:w:z:}::::::::::::::::::::::::::::::::::::::::::::;;; ; ;;;;;;;";%;(;+;.;1;4;7;:;=;@;C;F;I;L;O;R;U;X;[;^;a;d;g;j;m;p;s;v;y;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<< < <<<<<<<!<$<'<*<-<0<3<6<9<<<?<B<E<H<K<N<Q<T<W<Z<]<`<c<f<i<l<o<r<u<x<{<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== ======= =#=&=)=,=/=2=5=8=;=>=A=D=G=J=M=P=S=V=Y=\=_=b=e=h=k=n=q=t=w=z=}============================================>>> > >>>>>>>">%>(>+>.>1>4>7>:>=>@>C>F>I>L>O>R>U>X>[>^>a>d>g>j>m>p>s>v>y>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??? ? ???????!?$?'?*?-?0?3?6?9?@A@D@G@J@M@P@S@V@Y@\@_@b@e@h@k@n@q@t@w@z@}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAA A AAAAAAA"A%A(A+A.A1A4A7A:A=A@ACAFAIALAOARAUAXA[A^AaAdAgAjAmApAsAvAyA|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBB B BBBBBBB!B$B'B*B-B0B3B6B9BCACDCGCJCMCPCSCVCYC\C_CbCeChCkCnCqCtCwCzC}CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDD D DDDDDDD"D%D(D+D.D1D4D7D:D=D@DCDFDIDLDODRDUDXD[D^DaDdDgDjDmDpDsDvDyD|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEE E EEEEEEE!E$E'E*E-E0E3E6E9EFAFDFGFJFMFPFSFVFYF\F_FbFeFhFkFnFqFtFwFzF}FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGG G GGGGGGG"G%G(G+G.G1G4G7G:G=G@GCGFGIGLGOGRGUGXG[G^GaGdGgGjGmGpGsGvGyG|GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHH H HHHHHHH!H$H'H*H-H0H3H6H9HIAIDIGIJIMIPISIVIYI\I_IbIeIhIkInIqItIwIzI}IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJ J JJJJJJJ"J%J(J+J.J1J4J7J:J=J@JCJFJIJLJOJRJUJXJ[J^JaJdJgJjJmJpJsJvJyJ|JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKK K KKKKKKK!K$K'K*K-K0K3K6K9KLALDLGLJLMLPLSLVLYL\L_LbLeLhLkLnLqLtLwLzL}LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMM M MMMMMMM"M%M(M+M.M1M4M7M:M=M@MCMFMIMLMOMRMUMXM[M^MaMdMgMjMmMpMsMvMyM|MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNN N NNNNNNN!N$N'N*N-N0N3N6N9NOAODOGOJOMOPOSOVOYO\O_ObOeOhOkOnOqOtOwOzO}OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPP P PPPPPPP"P%P(P+P.P1P4P7P:P=P@PCPFPIPLPOPRPUPXP[P^PaPdPgPjPmPpPsPvPyP|PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQ Q QQQQQQQ!Q$Q'Q*Q-Q0Q3Q6Q9QRARDRGRJRMRPRSRVRYR\R_RbReRhRkRnRqRtRwRzR}RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSS S SSSSSSS"S%S(S+S.S1S4S7S:S=S@SCSFSISLSOSRSUSXS[S^SaSdSgSjSmSpSsSvSyS|SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTT T TTTTTTT!T$T'T*T-T0T3T6T9TUAUDUGUJUMUPUSUVUYU\U_UbUeUhUkUnUqUtUwUzU}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVV V VVVVVVV"V%V(V+V.V1V4V7V:V=V@VCVFVIVLVOVRVUVXV[V^VaVdVgVjVmVpVsVvVyV|VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWW W WWWWWWW!W$W'W*W-W0W3W6W9WXAXDXGXJXMXPXSXVXYX\X_XbXeXhXkXnXqXtXwXzX}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYY Y YYYYYYY"Y%Y(Y+Y.Y1Y4Y7Y:Y=Y@YCYFYIYLYOYRYUYXY[Y^YaYdYgYjYmYpYsYvYyY|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ Z ZZZZZZZ!Z$Z'Z*Z-Z0Z3Z6Z9Z[A[D[G[J[M[P[S[V[Y[\[_[b[e[h[k[n[q[t[w[z[}[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\ \ \\\\\\\"\%\(\+\.\1\4\7\:\=\@\C\F\I\L\O\R\U\X\[\^\a\d\g\j\m\p\s\v\y\|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]] ] ]]]]]]]!]$]']*]-]0]3]6]9]<]?]B]E]H]K]N]Q]T]W]Z]]]`]c]f]i]l]o]r]u]x]{]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^^^^^^ ^#^&^)^,^/^2^5^8^;^>^A^D^G^J^M^P^S^V^Y^\^_^b^e^h^k^n^q^t^w^z^}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ _ _______"_%_(_+_._1_4_7_:_=_@_C_F_I_L_O_R_U_X_[_^_a_d_g_j_m_p_s_v_y_|____________________________________________``` ` ```````!`$`'`*`-`0`3`6`9`<`?`B`E`H`K`N`Q`T`W`Z`]```c`f`i`l`o`r`u`x`{`~````````````````````````````````````````````aaa aaaaaaa a#a&a)a,a/a2a5a8a;a>aAaDaGaJaMaPaSaVaYa\a_abaeahakanaqatawaza}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb b bbbbbbb"b%b(b+b.b1b4b7b:b=b@bCbFbIbLbObRbUbXb[b^babdbgbjbmbpbsbvbyb|bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccc c ccccccc!c$c'c*c-cME ;HME0.0699F-nnzn q: : :1< y?ܝB#F=>A=$|DATAF-`<DATA:0position ;XS2 .select_vert0SDATA( ;wnx>p=x>$1h=x>p >x>$1h=x>$1h >x>p >X[(?*@l*? i 3?zl*? i K7?h73?z3?zK7?h7.d;? /!XK7?h7M;?֏hl.d;? /!XM;?֏hlT:??h@l5=.d;? /!X.d;? /!XT:??h@l5=WN:?O6=T:??h@l5=3?߉hn=WN:?O6=WN:?O6=3?߉hn= 3?=3?߉hn=Y(?^Yht= 3?= 3?=Y(?^Yht=T(?;2@H=)?$ >+?g >/86?=+?g >;?Og=/86?=/86?=;?Og=Z@?Zu=;?Og=vC?gS=Z@?Zu=Z@?Zu=vC?gS=E?6p0~)? />#1h0~)? 뽴)?_g/>#1h0/>p0/>#1h0/>pТ/>#1h0/>#1hТ/>pТ/>#1hТl*? i />pТl*? i X[(?*@/>pТl*? i 086?1gŽK7?h7086?1gŽZ@?bg iK7?h7K7?h7Z@?bg iM;?֏hlZ@?bg iE?gႻM;?֏hlM;?֏hlE?gႻT:??h@l5=E?gႻvC?gS=T:??h@l5=T:??h@l5=vC?gS=3?߉hn=/>#1hТ/>#1h0l*? i />#1h0콴)?_gl*? i )?_g086?1gŽl*? i x>$1h >x>$1h=+?g >x>$1h=Y(?^Yht=+?g >Y(?^Yht=3?߉hn=+?g >+?g >3?߉hn=;?Og=3?߉hn=vC?gS=;?Og=.d;? /!XB?Z73?zB?Z7-6?[`Ž3?z3?z-6?[`ŽX[(?*@-6?[`Ž~)? X[(?*@X[(?*@~)? />pТ~)? />p0/>pТ/86?=Z@?Zu= 3?= 3?=Z@?Zu=WN:?O6=Z@?Zu=E?6p=x>p >T(?;2@H=x>p >)?$ >T(?;2@H=T(?;2@H=)?$ > 3?=)?$ >/86?= 3?=x>p >x>$1h >)?$ >x>$1h >+?g >)?$ >x>$1h=x>p=Y(?^Yht=x>p=T(?;2@H=Y(?^Yht=?`С>?%С>(?B`\>?%С>+?]&8>(?B`\>?%0=?`0=!(?z$q=?`0=Ʉ(?`$=!(?z$q=(?>`Ὧ4?Sz+?/Z&E߽+?/Z&E߽4?Sz:?P%H4?Sz8??@`^:?P%H:?P%H8??@`^@B?u%:8??@`^wg??8Tϼ@B?u%:wg??8TϼQC?i `<@B?u%:@B?u%:QC?i `<C?!%i?1%[=FQ>?1%[=@??2 `=:?P%@=@??2 `=5?A`=:?P%@=:?P%@=5?A`=+?]&8>5?A`=(?B`\>+?]&8>Ʉ(?`$=3? a=!(?z$q=!(?z$q=3? a=o3?1$Y=3? a=t;?6a==o3?1$Y=o3?1$Y=t;?6a==FQ>?1%[=t;?6a==;=?aFQ>?1%[=FQ>?1%[=;=?as?%0=+?]&8>?%0=!(?z$q=+?]&8>!(?z$q=o3?1$Y=+?]&8>+?]&8>o3?1$Y=:?P%@=?h2 ǽ+?/Z&E߽u(?$ȫu(?$ȫ+?/Z&E߽m3?$+?/Z&E߽:?P%Hm3?$m3?$:?P%Hs?1%[=FQ>?1%[=:?P%@=o3?1$Y=(?>`+?/Z&E߽?9Sǽ+?/Z&E߽?h2 ǽ?9Sǽ?9SǽJ(?(`p4(?>`(?>`J(?(`p44?Sz4?Szwg??8Tϼ8??@`^5?A`=@??2 `=3? a=3? a=@??2 `=t;?6a==@??2 `=QC?i `Ʉ(?`$=?`С>(?B`\>Ʉ(?`$=Ʉ(?`$=(?B`\>3? a=(?B`\>5?A`=3? a=u(?$ȫJ(?(`p4?h2 ǽJ(?(`p4?9Sǽ?h2 ǽ?`С>?`0=?%С>?`0=?%0=?%С>DATAp0DATA :..edge_verts $SخS2.select_edge 0<SDATAp $Sun    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmDATAp 0<DATAh1< .corner_vert MXS .corner_edge MS) MدSDATA MLn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmDATA MLn   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkDATA Msn{yxmm^xmzhΦm6)090#pŎ2!f2t.=;#x7#1.D((92079W--7Ng:?|7墘|i7m-3s22MkP36k$tq"3{'*:)6w-X{`3&$1dI0H5% e"|8+PoV1.(|ZY*"=M" 'Yv?-1[Kx:26=Dq;>160].Ո6㌋1m#d;aMՖ@j*s909_GGj %JWlq3I S-xIf6=4^k|BZt>H$T}%lw SC,owNH#sIrXIIeXg*]Ո`\HEc5q`HaZ^aa7Y`rM `:YLd VhhgSfiu[KWgL.rmF$h(K -#8o -"v!M1@>^Af~[oYetln"C2|ƇFfRrc"Tp|Scu6c=c'X"d#8csXM!mH>BADGJMPSVY\_behknME ;HME0.070:G-III@: : :3< @[>T_<L8o>DE=hJ=A=$|DATAG- DATA:0position T2 .select_vert`@ذTDATAt wIQ>q>[>˨IQQ>^t:>˨IQ%>̟]@<Q>^t:>Rqa@8 >NgR`H>Zt:>q>[>Zt: >NgR`H>q>[ >NgR`HB>9:Y^>q>[B>9:Y^>HDB>9:Y^#>{9@_>HDQ>PD#>{9@_Q>q>[#>{9@_>˨IQQ>q>[#>{9@_Q>PD>HDQ>PDQ>%폽>HD>HDQ>%폽>%폽Q>%폽Q>׌%<폽>%폽>%폽Q>׌%<폽>%<폽Q>׌%<폽Q>p%<폽>%<폽Q>pxpq>=[>xxq>=[>q>=[Q>q>=[Q>kt=:>q>=[>q>=[Q>kt=:>ot=:Q>kt=:Q>=@ݣ>ot=:>ot=:Q>=@ݣ>=@ݣQ>=@ݣQ>wh=4>=@ݣ>=@ݣQ>wh=4>yh=4Q>wh=4Q>=ݣ<>yh=4>yh=4Q>=ݣ<>=ݣ<Q>=ݣ<Q>kt=@:=>=ݣ<>=ݣ<Q>kt=@:=>ot=@:=Q>kt=@:=Q>q>=[=>ot=@:=>ot=@:=Q>q>=[=>q>=[=Q>q>=[=Q>pq>=[=>q>=[=Q>pxp׌%<=>xx׌%<=>%<=Q>׌%<=Q>%=>%<=>%<=Q>%=>%=Q>%=Q>PD=>%=>%=Q>PD=>HD=Q>PD=Q>q>[=>HD=>HD=Q>q>[=>q>[=Q>q>[=Q>^t@:=>q>[=>q>[=Q>^t@:=>Zt@:=Q>^t@:=Q>ݣ<>Zt@:=>Zt@:=Q>ݣ<>ݣ<Q>ݣ<Q>oh4>ݣ<>ݣ<Q>oh4>mh4Q>oh4Q>@ݣ>mh4>mh4Q>@ݣ>@ݣQ>@ݣQ>^t:>@ݣ>@ݣQ>^t:>Zt:Q>^t:%>̟]@<>Zt:>Zt:%>̟]@<>Rqa@8> V=>HD=>H=HD=>q>[=>H=H=q>[=>Kr=>q>[=>Zt@:=>Kr=>Kr=>Zt@:=> @<>Zt@:=>ݣ<> @<> @<>ݣ<>Hb4>ݣ<>mh4>Hb4>Hb4>mh4> >mh4>@ݣ> > >@ݣ>Kr>@ݣ>Zt:>Kr>Kr>Zt:>H=`Zt:>q>[>H=`H=`q>[>V>q>[>HD>V>V>HD>b$ꎽ>HD>%폽>b$ꎽ>b$ꎽ>%폽>xb$<ꎽ>%폽>%<폽>xb$<ꎽ>xb$<ꎽ>%<폽><V>%<폽>x<V><V>x_==`xq>=[>_==`_==`q>=[>er=>q>=[>ot=:>er=>er=>ot=:>=>ot=:>=@ݣ>=>=>=@ݣ>Tb=4>=@ݣ>yh=4>Tb=4>Tb=4>yh=4>=@<>yh=4>=ݣ<>=@<>=@<>=ݣ<>er==>=ݣ<>ot=@:=>er==>er==>ot=@:=>_==ot=@:=>q>=[=>_==_==q>=[=>< V=>q>=[=>x< V=>< V=>xxb$<0=>x%<=>xb$<0=>xb$<0=>%<=>b$0=>%<=>%=>b$0=>b$0=>%=> V=>%=>HD=> V=Q>oh4Q>ݣ<O>P(<Q>^t@:=>N>mx=Q>ݣ<>N>mx=O>g<Q>ݣ<Q>ݣ<O>g<O>P(<Q>q>[=N>9 -W=Q>^t@:=N>9 -W=>N>mx=Q>^t@:=Q>PD=9O>Sa=Q>q>[=9O>Sa=N>9 -W=Q>q>[=Q>%=O>ؒࢌ=Q>PD=O>ؒࢌ=9O>Sa=Q>PD=Q>׌%<=N>҂;@=Q>%=N>҂;@=O>ؒࢌ=Q>%=Q>p ׌%<=xO> ҂;@=Q>׌%<=Q>q>=[=oO>S9=W=Q>pS9=W=xO> pkt=@:=O> tj=`=Q>q>=[=O> tj=`=oO>S9=W=Q>q>=[=Q>=ݣٝ=<Q>kt=@:=!O>ٝ=<O>@{o==Q>kt=@:=Q>kt=@:=O>@{o==O> tj=`=Q>kt=:O>=Q>=@ݣQ>=@ݣO>=Q>wh=4O>=O> V=4Q>wh=4Q>wh=4O> V=4Q>=ݣ<O> V=4!O>ٝ=<Q>=ݣ<Q>q>=[N>?m=6Q>kt=:Q>kt=:N>?m=6O>=Q>p9=@WQ>q>=[Q>q>=[#O>9=@WN>?m=6Q>׌%<폽(O>PppP9=@WQ>%폽 $O><Q>׌%<폽Q>׌%<폽 $O><(O>PPDO>Q݌Q>%폽Q>%폽O>Q݌ $O><Q>q>[O>cQ>PDQ>PDO>cO>Q݌Q>^t:*O>ҏ;KVQ>q>[Q>q>[*O>ҏ;KVO>cQ>@ݣN>o`&Q>^t:Q>^t:N>o`&*O>ҏ;KVO>P(kQ>oh4Q>oh4lTO>kQ>@ݣlTO>k,M>;Q>@ݣQ>@ݣ,M>;N>o`&=N>C[2>Rqa@8>6$W:>Rqa@8%>̟]@<>6$W:>6$W:%>̟]@<ō>qQL@Bړ>XU:>Rqa@8=N>C[2 >NgR`H>Rqa@8ړ>XU:ݔ>A`L >NgR`Hړ>XU:B>9:Y^ >NgR`Hݔ>A`LM>I4ZB>9:Y^ݔ>A`LM>I4Z#>{9@_B>9:Y^q>89gU#>{9@_M>I4Z#>{9@_q>89gU>˨IQō>qQL@B>˨IQq>89gU%>̟]@<>˨IQō>qQL@B> V=>b$0=>b$0=>b$0=>yb$<0=>b$0=>b$0=>yb$<0=>xb$<0=>yb$<0=>< V=>xb$<0=>xb$<0=>< V=>< V=>< V=>_==< V=>< V=>_==_==_==ar==>_==_==ar==>er==>er==>ar==>=@<>Kr=>H=H=H=H= V=>H= V=> V=> V=> V=>b$0=>H=`Kr>Kr>Kr> >Kr>Kr> > > >Hb4> > >Hb4>Hb4>Hb4> @<>Hb4>Hb4> @<> @<> @<> @<>Kr=> @<>Kr=>Kr=>Kr=>Kr=>H=ar==>=@<>=@<>=@<>Tb=4>=@<>=@<>Tb=4>Tb=4>Tb=4>=>Tb=4>Tb=4>=>=>=>er=>=>=>er=>er=>er=>_==`er=>er=>_==`_==`_==`<V>_==`_==`<V><V><V>yb$<ꎽ><V><V>yb$<ꎽ>xb$<ꎽ>yb$<ꎽ>b$ꎽ>xb$<ꎽ>xb$<ꎽ>b$ꎽ>b$ꎽ>b$ꎽ>V>b$ꎽ>b$ꎽ>V>V>V>H=`V>V>H=`H=`H=`H=`KrAJ><0NBJ>Nޮ< ]A>C< A>C< NBJ>Nޮ< ]A>a}<`ĊA>0;A>a}<`ĊNBJ>Nޮ< ] $O>Nޮ< ](O>PPNޮ< ]AJ><0(O>P<0#O>9=@WA>C< A> V=`vAJ><0A> V=`vA>}1=^AJ><0A>1(KA>):K>0RHA>)lTO>k:K>0RH:K>0RHlTO>kOL>1*K;lTO>kO>P(1*K;OL>1*K;O>P(1*K;O>P()1*K;J><=6L>3<=xO> 3<=N>҂;@=A>a}<Ċ=A>0;0=e'H><=A>0;0=6L>3<=e'H><=A>a}<Ċ=e'H><=A>C<@=e'H><=J><=A>C<@=A>C<@=J><=A> V=v=A> V=v=J><=A>}1=^=oO>S9=W=J><=xO> =@3=cٝ=ٝ=3=c<O>@{o==FK>3=c_=&5k=\ =O>@{o==FK>3=c<O> tj=`=A>5k=\ =OH>_=&==_=&<\+J>=@====<\+J>=@1=ѧ<=oO>S9=W=A>}1=^=A>}1=^=oO>S9=W=A>P=`A=A>P=`A=oO>S9=W=A>5k=\ =oO>S9=W=O> tj=`=A>5k=\ =A>5k=\ =O> tj=`=FK>3=c< K>`8=L>μ=O>ؒࢌ=O>ؒࢌ=L>μ=9O>Sa=L>μ=H>GȼJ=A>Uv=A>'м@=A>Uv=H>GȼJ=A>'м@=H>GȼJ=A>a}Ċ=H>GȼJ= K>`8=A>a}Ċ= K>`8=O>ؒࢌ=A>a}Ċ=A>a}Ċ=O>ؒࢌ=A>00=A>00=O>ؒࢌ=A>0;0=O>ؒࢌ=N>҂;@=A>0;0=A>0;0=N>҂;@=6L>3<=i>J>能@c<{L>XN<>N>mx=O>P(<O>g<{L>XN<{L>XN<O>g<>N>mx=O>P(<{L>XN<0sI>_@\)<O>P(<0sI>_@\)<0sI>_@\)ѧ)ѧ<0sI>_@\=<0sI>_@\J>能@c=J>能@c<>N>mx=A>==<>N>mx=A>4k\ =A>4k\ =>N>mx=A>P`A=>N>mx=N>9 -W=A>P`A=A>P`A=N>9 -W=A>n}1^=A>n}1^=N>9 -W=A>Uv=N>9 -W=9O>Sa=A>Uv=A>Uv=9O>Sa=L>μ=N>o`&,M>;5J>σּA>)ѧA>=@H>N@H>N@A>=@5J>σּA>)ѧH>N@A>)A>)H>N@lTO>klTO>kH>N@,M>;O>Q݌O>cJ>M{J>M{O>c1J>6/ּఃA>a}`ĊJ>M{A>'м J>M{1J>6/ּఃA>'м A>'м 1J>6/ּఃA>U`v1J>6/ּఃO>cA>U`vA>U`vO>cA>n}1^O>c*O>ҏ;KVA>n}1^A>n}1^*O>ҏ;KVA>P AA>P A*O>ҏ;KVA>4k`\ *O>ҏ;KVN>o`&A>4k`\ A>4k`\ N>o`&A>=@A>=@N>o`&5J>σּNBJ>Nޮ< ] $O>0;A>0; $O>0 $O><O>Q݌A>0A>0O>Q݌A>a}`ĊA>a}`ĊO>Q݌J>M{HJ>=eԼL>ȅ=@N>?m=6O>=N>?m=6L>ȅ=@L>ȅ=@HH>*=@KO>=A>1=ѧHH>*=@KA>==@A>==@HH>*=@KHJ>=eԼA>5k=`\ A>==@HJ>=eԼHJ>=eԼN>?m=6A>5k=`\ A>5k=`\ N>?m=6A>P= AN>?m=6#O>9=@WA>P= AA>P= A#O>9=@WA>}1=^A>}1=^#O>9=@WAJ><0\+J>=@ٝ=1=ѧ1=ѧٝ= =) =)ٝ= V=4!O>ٝ=<O> V=4A> V=4A> V=4O> V=4A> =)O> V=4O>=A> =)A> =)O>=A>1=ѧA>1=ѧO>=HH>*=@K>6$W:ō>qQL@B>O>>O>ō>qQL@BO> GGO> GGō>qQL@B~>>Oō>qQL@Bq>89gU~>>O~>>Oq>89gUЏ>d8UЏ>d8Uq>89gUP>i%6Xq>89gUM>I4ZP>i%6XP>i%6XM>I4Zϒ>ro8Uϒ>ro8UM>I4Z>>OM>I4Zݔ>A`L>>O>>Oݔ>A`LL>G GL>G Gݔ>A`L֓>O>ݔ>A`Lړ>XU:֓>O>֓>O>ړ>XU:˒>Ud8˒>Ud8ړ>XU:cL>X`%6ړ>XU:=N>C[2cL>X`%6cL>X`%6=N>C[2>6$W:>a}<>Qm<> @<>Hb4<>1>7>7>Trx>GaA>GaA>Trx>1]0>Trx>n+>1]0>1]0>n+>p.V>n+ >*Ry>p.V>p.V >*Ry>~R>~R >*Ry>\ >*Ry>R >\>\>R > > >R >Hb4>R <>1>Hb4>GaA>7>h;>7>h;>a}<>7>7>a}<>Hb4>a}<> @<>Hb4>Tb=4>=@<>Hʅ=;>Hʅ=;>=@<>u\=Z<>=@<>=]<>u\=Z<>=]<>~=S<>u\=Z<>u\=Z<>~=S<>>r=<>~=S<>ɚp=/V<>>r=<>ɚp=/V<>J]=0<>>r=<>>r=<>J]=0<>sn=;>J]=0<>Ga=B8>sn=;>sn=;>Ga=B8>&|=4';>Ga=B8>Vrv=h>&|=4';>Vrv=h>=f>&|=4';>&|=4';>=f>m}=>yb$<ꎽ><VH>)!<6}><V>\<H>)!<6}>\<>R<~H>)!<6}>R<~>/V)!<6}H>)!<6}>/V],;n>/VH0< ]>],;n>],;n>H0< ]>JK;`t>H0< ]>~6B8Ga>JK;`tH>)!<6}>;K>yb$<ꎽ>yb$<ꎽ>;K>b$ꎽ>Hʅ=;>&|=4';>Tb=4>&|=4';>m}=>Tb=4>Tb=4>m}=>=>m}=>^=m>=>=>^=m>er=>~6B8Ga>k rv>JK;`t>k rv>f𹃽>JK;`t>JK;`t>f𹃽p>Vo;F>f𹃽>b$ꎽp>Vo;F>b$ꎽ>;Kp>Vo;F>^=m>:{=>er=>:{=>NlX=0>er=>er=>NlX=0>_==`NlX=0>")=^>_==`_==`")=^><V>")=^><@><V><V><@>\<>f𹃽>P}>b$ꎽ>P}>.m@>b$ꎽ>b$ꎽ>.m@>V>.m@>#{>V>V>#{>H=`#{>0 lX>H=`H=`0 lX>Kr>0 lX>є^")>Kr>Kr>є^")> >є^")>N> > >N>\>`\=>L=>b$0=>b$0=>L=>yb$<0=>L=>\oG=>yb$<0=>b$0=> V=>`\=> V=>\=>`\=>\=>R~=>`\=>`\=>R~=>@r=>R~=>.Vp=>@r=>.Vp=>0`]=>@r=>@r=>0`]=>n=>0`]=>AGa=>n=>n=>AGa=>AV:x=>AGa=>n:`rv=>AV:x=>AV:x=>n:`rv=>\oG=>n:`rv=>g;=>\oG=>\oG=>g;=>yb$<0=>g;=>#yb$<0=>#m<`=>yb$<0=>yb$<0=>m<`=>< V=>m<`=>_<@{=>< V=>< V=>_<@{=>_==_<@{=>0=`lX=>_==_==0=`lX=>ar==>0=`lX=>^=")=>ar==>^=")=>c=<>ar==>ar==>c=<>=@<>=@<>c=<>=]<>Qm<>!{<> @<>!{<>4lX0=> @<> @<>4lX0=>Kr=>Kr=>4lX0=>H=4lX0=>")^=>H=H=")^=> V=>")^=>ἀ=> V=> V=>ἀ=>\=i>J>能@c<0sI>_@\搽'搽'<0sI>_@\<}H>J>能@c搽'<{L>XN搽'1<{L>XN<}H><0sI>_@\11<0sI>_@\<{L>XN<*>H>o<="2J>B<5=e'H><=e'H><="2J>B<5=J><="2J>B<5=L><=J><=J><=L><=6L>3<=*>H>o<=e'H><=L><=e'H><=6L>3<=L><=I>Qüa=H>GȼJ=H>=H>GȼJ=I>Qüa= K>`8=I>Qüa=L>ۼV= K>`8= K>`8=L>ۼV=L>μ=H>GȼJ=L>μ=H>=H>=L>μ=L>ۼV=GH>_=C=<\+J>=@<\+J>=@=3=c<\+J>=@_=&_=C_=C_=&<]hI>_=_=&3=c<]hI>_=<]hI>_=3=c=1*K;OL>Jb*K;:K>0RHOL>Jb*K;OL>Jb(K:K>0RHOL>1*K;A>1*K;OL>Jb*K;A>1*K;A>Jb*K;OL>Jb*K;A>Jb(KA>Jb*K;A>O4A>Jb*K;A>1*K;A>O4A>1*K;A>)O4A>O4A>)))ѧ)ѧ~@)ѧ=~@~@=ʃi`5=A>=4k\ =A>ʃi`5=A>ʃi`5=A>4k\ =A>-O;@=A>4k\ =A>P`A=A>-O;@=A>-O;@=A>P`A=A>60\=A>P`A=A>n}1^=A>60\=A>60\=A>n}1^=A>O t=A>n}1^=A>Uv=A>O t=A>O t=A>Uv=A>μ0=A>Uv=A>'м@=A>μ0=A>μ0=A>'м@=A>{ĉ=A>'м@=A>a}Ċ=A>{ĉ=A>{ĉ=A>a}Ċ=A>=A>a}Ċ=A>00=A>=A>=A>00=A>;=A>00=A>0;0=A>;=A>;=A>0;0=A>D{<ĉ=A>0;0=A>a}<Ċ=A>D{<ĉ=A>D{<ĉ=A>a}<Ċ=A>0<0=A>a}<Ċ=A>C<@=A>0<0=A>0<0=A>C<@=A>O =t=A>C<@=A> V=v=A>O =t=A>O =t=A> V=v=A>60=\=A> V=v=A>}1=^=A>60=\=A>60=\=A>}1=^=A>-O=;@=A>}1=^=A>P=`A=A>-O=;@=A>-O=;@=A>P=`A=A>؃i=`5=A>P=`A=A>5k=\ =A>؃i=`5=A>؃i=`5=A>5k=\ =A>~=@5k=\ =A>==~=@~=@=====1=ѧ==1=ѧ׻=~(1=ѧ =)׻=~(׻=~( =)O=4A> =) V=4A>O=4A>O=4A> V=4A>׻=}(A> V=4A> =)A>׻=}(A>׻=}(A> =)A>=A> =)A>1=ѧA>=A>=A>1=ѧA>~=@@A>1=ѧA>==@A>~=@@A>~=@@A>==@A>؃i= 5A>==@A>5k=`\ A>؃i= 5A>؃i= 5A>5k=`\ A>-O=;@A>5k=`\ A>P= AA>-O=;@A>-O=;@A>P= AA>60=\A>P= AA>}1=^A>60=\A>60=\A>}1=^A>O =`tA>}1=^A> V=`vA>O =`tA>O =`tA> V=`vA>0< A> V=`vA>C< A>0< A>0< A>C< A>D{<ĉA>C< A>a}<`ĊA>D{<ĉA>D{<ĉA>a}<`ĊA>;ꌽA>a}<`ĊA>0;A>;ꌽA>;ꌽA>0;A>ꌽA>0;A>0A>ꌽA>ꌽA>0A>{ĉA>0A>a}`ĊA>{ĉA>{ĉA>a}`ĊA>μ A>a}`ĊA>'м A>μ A>μ A>'м A>O `tA>'м A>U`vA>O `tA>O `tA>U`vA>60\A>U`vA>n}1^A>60\A>60\A>n}1^A>-O;@A>n}1^A>P AA>-O;@A>-O;@A>P AA>ʃi 5A>P AA>4k`\ A>ʃi 5A>ʃi 5A>4k`\ A>~@@A>4k`\ A>=@A>~@@A>~@@A>=@A>A>=@A>)ѧA>A>A>)ѧA>ͻ}(A>)ѧA>)A>ͻ}(A>ͻ}(A>)A>O4A>)A>1(KA>O4A>O4A>1(KA>Jb(KA>1(K:K>0RHA>Jb(K:K>0RHOL>Jb(KA>Jb(KH>N@5J>σּG>XڼG>Xڼ5J>σּRM>eѼ5J>σּ,M>;RM>eѼ,M>;H>N@RM>eѼRM>eѼH>N@G>Xڼ.?H>~ϼJ>M{1J>6/ּః.?H>~ϼJ>M{L>ͼ0J>M{1J>6/ּఃL>ͼ0L>ͼ01J>6/ּః6J>3.?H>~ϼ1J>6/ּః6J>3yI>Nޮ< ]I>*<@cyI><0NBJ>Nޮ< ]yI><0L><0NBJ>Nޮ< ]L>Nޮ< ]I>*<@cEI>'5=HH>*=@KqI>2=[ƼqI>2=[ƼHH>*=@KL>ot=ϼHH>*=@KL>ȅ=@L>ot=ϼL>ot=ϼL>ȅ=@EI>'5=缒L>ȅ=@HJ>=eԼEI>'5=缢EI>'5=HJ>=eԼHH>*=@KcL>X`%6>6$W:>B0S<8>B0S<8>6$W:>O>>.m@x->-m@x->*{x->M>N>є^")x->M>є^")x->Д^")>є^")>0 lXx->Д^")x->Д^")>0 lXx->0 lX>0 lX>#{x->0 lXx->0 lX>#{x->*{x->*{>#{>.m@x->I\O2>1]0>p.Vx->I\O2>p.Vx->p.V>p.V>~Rx->p.Vx->p.V>~Rx->~R>~R>\x->~Rx->~R>\x->\>\>Nx->\x->\>Nx->Mx->I\O2(>a5>1]0>1]0(>a5>GaAx->Qm<>Qm<>a}Qm<>a}a}<>a}<>h;x->a}a}<>h;x->h;>h;>h;x->h;>;rvp:>GaAx->;rvp:x->;rvp:>GaA(>a5>QmQm {<>4lX0=x->3lX0=x->")^=x->ἀ=>ἀ=>")^=x->ἀ=>")^=x->")^=x->")^=>")^=>4lX0=x->3lX0=>4lX0=x-> {<>4lX0=>!{ { {<>!{<>QmZO2\=>0`]=>.Vp=x->ZO2\=>.Vp=x->.Vp=>.Vp=>R~=x->.Vp=x->.Vp=>R~=x->R~=>R~=>\=x->R~=x->R~=>\=x->\=>\=>ἀ=x->\=x->\=>ἀ=x->ἀ=x->ZO2\=(>5a=>0`]=>0`]=(>5a=>AGa=x->m<`=>m<`=>#m<`=>#$#g;=x->$$g;=x->g;=>g;=>n:`rv=x->g;=x->g;=>n:`rv=x->n:`rv=>n:`rv=>AGa=x->n:`rv=x->n:`rv=>AGa=(>5a=>0=`lX=x->0=`lX=x->^=")=x->d=<>c=^=")=>c=<>^=")=x->^=")=x->^=")=>^=")=>0=`lX=>0=`lX=>_<@{=x->0=`lX=x->0=`lX=>_<@{=x->`<@{=>_<@{=>m<`=x->`<@{=x->`<@{=>m<`=x->m<`=x->b\=P2<>J]=0<>ɚp=/Vb\=P2<>ɚp=/Vʚp=/V<>ɚp=/V<>~=Sʚp=/Vʚp=/V<>~=S~=S<>~=S<>=]~=S~=S<>=]=]<>=]<>c==]=]<>c=d=b\=P2<(>a=59>J]=0<>J]=0<(>a=59>Ga=B8x->^=m>^=m>m}=x->^=m>m}=x->m}=>m}=>=fx->m}=x->m}=>=fx->=f>=f>Vrv=hx->=fx->=f>Vrv=hx->Wrv=h>Vrv=h>Ga=B8x->Wrv=hx->Wrv=h>Ga=B8(>a=59x-><@><@x->")=^><@>")=^x->")=^>")=^>NlX=0x->")=^x->")=^>NlX=0x->OlX=0>NlX=0>:{=x->OlX=0x->OlX=0>:{=x->;{=>:{=>^=mx->;{=x->;{=>^=mx->^=mx->O2<@\>H0< ]>/VO2<@\>/V/V/VR<~x->/V/VR<~x->R<~>R<~>\<x->R<~x->R<~>\<x->\<>\<><@x->\<x->\<><@x-><@>~6B8Ga>H0< ](>Y59a(>Y59a>H0< ]x->O2<@\x->-m@>.m@>P}x->-m@>P}x->P}>P}>f𹃽x->P}x->P}>f𹃽x->f𹃽>f𹃽>k rvx->f𹃽x->f𹃽>k rvx->k rv>k rv>~6B8Gax->k rvx->k rv>~6B8Ga(>Y59a`.>*)!<6}K/>O)!<6}>],;nK/>OO],;nE3>;m>],;n>JK;`tE3>;mE3>;m>JK;`t3>ʼn';7}>JK;`tp>Vo;F3>ʼn';7}3>ʼn';7}p>Vo;F.>; Lp>Vo;F>;K.>; L.>; L>;K`.>*;KH>)!<6}`.>*=w;>Hʅ=;l1>˪=<>Hʅ=;>u\=Z˪=˪=<>u\=Z<3>t=<>u\=Z<>>r=<3>t=<>>r=<>sn=;3>t=<3>t=<>sn=;/>n=;>sn=;>&|=4';/>n=;/>n=;>&|=4';/>Qy=@7;/>Qy=@7;>&|=4';.>=w;>&|=4';>Hʅ=;.>=w;>AV:x=>\oG=2>_A'`7}=2>_A'`7}=>\oG=.>d鯻@L=>\oG=>L=.>d鯻@L=.>d鯻@L=>L=0>.ׁ=>L=>`\=0>.ׁ=>`\=>@r=0>.ׁ=0>.ׁ=>@r=_/> `Sr=>@r=>n=_/> `Sr=_/> `Sr=>n=/>lj n=>n=>AV:x=/>lj n=/>lj n=>AV:x=2>_A'`7}=3>zt>n+/>n>n+뻔>Trx/>n/>n>Trx/>Qy<7>Trx>7/>Qy<7/>Qy<7>7.>􅃽w>7<>1.>􅃽w.>􅃽w<>1l1><>1>R l1>>R >*Ryl1>l1> >*Ry3>zt >*Ry>n+뻁3>ztA>4;PF=A>hR<='O>1<=A>E%P=8A>uZ ™'O>A1A>\=A> <'O>= $A>=ȭ:A>=I'O>/C=4'O>/C=4A>=I'O>=qI>2=[ƼL>ot=ϼ'O>='O>t=('O>=L>ot=ϼ'O>t=(L>ot=ϼEI>'5=编A>a=J/EI>'5=A>=@RA>=IA>=@REI>'5=缢EI>'5=qI>2=[ƼA>=IA>=IqI>2=[Ƽ'O>=EI>'5=编A>a=J/'O>t=('O>t=(A>a=J/'O> L=0lA>a=J/+A>>fl=L'O> L=0l'O> L=0l+A>>fl=L6A>uX=`Sa6A>uX=`SaA>_@=v'O> L=0l'O> L=0lA>_@=v'O>= $A>_@=vA>\='O>= $yI>= $'O>1<'O>= $L>1<L>*<@cA>Co*<@cEA>sR<晽yI><I>*<@cA>Co <yI>Co <yI><'O>= $I>*<@cEA>sR<晽'O>1<EA>sR<晽A>A; 'O>1<'O>1<A>A; 'O>A1A>A; A>E%P='O>A1'O> $'O>A1L>ͼ0L>ͼ06J>3'O> $A>+ P`.?H>~ϼ6J>3A>`ߔ.?H>~ϼA>+ P`A>`ߔ.?H>~ϼ8A>uZ ™8A>uZ ™.?H>~ϼ'O>A1.?H>~ϼL>ͼ0'O>A1'O> $6J>3A>+ P`A>+ P`A>d.'O> $'O> $A>d.'O>L0lA>d.TA>Nj'O>L0l'O>L0lTA>NjA>dU'O>t('O>L0lA>À 2A>À 2'O>L0lA>dUG>XڼRM>eѼ'O>t('O>t(RM>eѼ'O>A>?@[G>XڼRM>eѼG>XڼA>?@[A>ۢj A>À 2G>XڼA>ۢj A>À 2G>Xڼ'O>t('O>A>?@[RM>eѼ'O>A>ǚj-A>?@['O>*C4A>ǚj-'O>'O>*C4A>*rA>ǚj-'O>*C4A>v6A>*r'O>*C4A>v6'O><'O>*C4'O>t(='O>11搽'<'O>t(=|A>1`6.=kJ>搽'@S@S<}H>@S搽'<}H><}H><'O><}H>1<'O><'O>t(=kJ>搽'<|A>1`6.=|A>1`6.=A>hFb+W='O>t(='O>t(=A>hFb+W='O>L0l=A>hFb+W=;A>Bt='O>L0l=H>=L>ۼV='O>@$='O>A1='O>@$=L>ۼV='O>A1=L>ۼV=I>Qüa=A>j=I>Qüa=AA>U@ݘ=AA>U@ݘ=I>Qüa=A>/ 0=I>Qüa=H>=A>/ 0=A>/ 0=H>=A>$/ >=H>='O>@$=A>$/ >='O>@$='O>L0l=A>$/ >=A>$/ >='O>L0l=A>p$Є='O>L0l=;A>Bt=A>p$Є=I>Qüa=A>j='O>A1='O>A1=A>j='O>1<=A>j=A>4;PF='O>1<='O>=@$='O>1<=L><=L><="2J>B<5='O>=@$="2J>B<5=*>H>o<=A> #< =A> #< =*>H>o<=A>j<=A>j<=*>H>o<=A>hR<=A>hR<=*>H>o<='O>1<=*>H>o<=L><='O>1<=A>!\=='O>=@$=A> #< ='O>=@$="2J>B<5=A> #< =A>!\==A>}@=v='O>=@$='O>=@$=A>}@=v='O> L=0l='O> L=0l=A>}@=v=CA>_=Z=]hI>_==<'O>t=(='O>t=(=!)M>=<'O>=<'O>==_=C<:A>u=A =A>D=@c_=C_=C<]hI>_=<:A>u=A =A>!k=f%=:A>u=A =]hI>_=<]hI>_=<'O>t=(=A>!k=f%=A>!k=f%='O>t=(= A>u=`@='O>t=(='O> L=0l= A>u=`@='O> L=0l=CA>_=Z= A>u=`@=GH>_=C<A>D=@c<'O>=<A>D=@c<(A>ʚ=,<'O>=<'O>=<(A>ʚ=,<'O>/C=4(A>ʚ=,=ȭ:'O>/C=4A>Jb(KOL>Jb(KA>Jb*K;OL>Jb(KOL>Jb*K;A>Jb*K;;>O4A><;>~@<;><;>~@<;>˃i`5=A>~@ʃi`5=;>˃i`5=A>ʃi`5=A>-O;@=;>˃i`5=;>˃i`5=A>-O;@=;>60\=A>-O;@=A>60\=;>60\=A>60\=A>O t=;>60\=;>60\=A>O t=;>μ0=A>O t=A>μ0=;>μ0=A>μ0=A>{ĉ=;>μ0=;>μ0=A>{ĉ=;>=A>{ĉ=A>=;>=A>=A>;=;>=;>=A>;=;>C{<ĉ=A>;=A>D{<ĉ=;>C{<ĉ=A>D{<ĉ=A>0<0=;>C{<ĉ=;>C{<ĉ=A>0<0=;>O =t=A>0<0=A>O =t=;>O =t=A>O =t=A>60=\=;>O =t=;>O =t=A>60=\=;>-O=;@=A>60=\=A>-O=;@=;>-O=;@=A>-O=;@=A>؃i=`5=;>-O=;@=;>-O=;@=A>؃i=`5=;>~=@؃i=`5=A>~=@<;>~=@~=@=<;>~=@<;>~=@=<;>׻=~(=׻=~(<;>׻=~(׻=~(O=4;>׻=~(<;>׻=~(O=4;>׻=}(A>O=4A>׻=}(;>׻=}(A>׻=}(A>=;>׻=}(;>׻=}(A>=;>~=@@A>=A>~=@@;>~=@@A>~=@@A>؃i= 5;>~=@@;>~=@@A>؃i= 5;>-O=;@A>؃i= 5A>-O=;@;>-O=;@A>-O=;@A>60=\;>-O=;@;>-O=;@A>60=\;>O =`tA>60=\A>O =`t;>O =`tA>O =`tA>0< ;>O =`t;>O =`tA>0< ;>C{<ĉA>0< A>D{<ĉ;>C{<ĉA>D{<ĉA>;ꌽ;>C{<ĉ;>C{<ĉA>;ꌽ;>ꌽA>;ꌽA>ꌽ;>ꌽA>ꌽA>{ĉ;>ꌽ;>ꌽA>{ĉ;>μ A>{ĉA>μ ;>μ A>μ A>O `t;>μ ;>μ A>O `t;>60\A>O `tA>60\;>60\A>60\A>-O;@;>60\;>60\A>-O;@;>˃i 5A>-O;@A>ʃi 5;>˃i 5A>ʃi 5A>~@@;>˃i 5;>˃i 5A>~@@;>A>~@@A>;>A>A>ͻ}(;>;>A>ͻ}(;>O4A>ͻ}(A>O4;>O4;>O4A>O4A><2>E [P>i%6XP>o A`P>i%6Xϒ>ro8UP>o A`ϒ>ro8U>>OP>o A`P>o A`>>Oq >KU>>OL>G Gq >KUL>G G֓>O>q >KU֓>O>˒>Ud8=*>\N`gA˒>Ud8cL>X`%6=*>\N`gAcL>X`%6>B0S<8=*>\N`gA>B0S<8>O>s>oVBK>O>O> GGs>oVBKO> GG~>>Os>oVBKs>oVBK~>>O2>E [~>>OЏ>d8U2>E [Џ>d8UP>i%6X2>E [.>=w;l1>˪=Tb=4.>􅃽wl1>x->Hb4x->a}</>Qy<7.>􅃽wx->Hb4l1>x-> (>a5/>Qy<7x->;rvp:x->;rvp:/>Qy<7x->h;/>Qy<7x->a}h;x->f𹃽x->k rvE3>;mx->k rv(>Y59aE3>;m.>􅃽wx->Hb4x->a}a}Hb4x->QmHb4x-> @QmQm @ { { @3lX0=x-> l1>x->~Rl1>3>ztx->~Rx->~R3>ztx->p.Vx->p.V3>ztx->I\O2x->I\O23>zt(>a53>zt/>n(>a5(>a5/>n/>Qy<7x->zb$<ꎽ`.>*<VE3>;m3>ʼn';7}x->f𹃽x->f𹃽3>ʼn';7}x->P}x->P}3>ʼn';7}x->b$ꎽ3>ʼn';7}.>; Lx->b$ꎽx->b$ꎽ.>; Lx->zb$<ꎽx->zb$<ꎽ.>; L`.>*~Rx->\x-> x->\x->Mx-> x-> x->Mx->Jrx->Mx->Д^")x->Jrx->Jrx->Д^")x->G=`Д^")x->0 lXx->G=`G=`0 lXx->Vx->0 lXx->*{x->Vx->Vx->*{x->b$ꎽx->*{x->-m@x->b$ꎽx->b$ꎽx->-m@x->P}x->b$0=x->zb$<0=.>d鯻@L=(>5a=2>_A'`7}=x->n:`rv=.>d鯻@L=x->zb$<0=2>_A'`7}=x->zb$<0=x->$_A'`7}=x->$g;=2>_A'`7}=2>_A'`7}=x->g;=x->n:`rv=x-> V=x->b$0=0>.ׁ=0>.ׁ=x->b$0=.>d鯻@L=x-> @Jr=x->3lX0=x->3lX0=x->Jr=x->")^=x->Jr=x->G=")^=x->")^=x->G=ἀ=x->G= V=x->ἀ=x->ἀ=x-> V=x->\=x-> V=0>.ׁ=x->\=x->\=0>.ׁ=x->R~=x->R~=0>.ׁ=x->.Vp=0>.ׁ=_/> `Sr=x->.Vp=x->.Vp=_/> `Sr=x->ZO2\=x->ZO2\=_/> `Sr=(>5a=_/> `Sr=/>lj n=(>5a=(>5a=/>lj n=2>_A'`7}=x->Tb=4l1>˪==@m}=/>Qy=@7;.>=w;x->=@˪=~=S˪=<3>t=~=S~=S<3>t=ʚp=/Vʚp=/V<3>t=b\=P2b\=P2<3>t=<(>a=593>t=n=;(>a=59x->~=S=]=@=]d==@=@d=br==x->d=^=")=x->br==x->br==x->^=")=x->`==^=")=x->0=`lX=x->`==`==0=`lX=x->< V=x->0=`lX=x->`<@{=x->< V=x->< V=x->`<@{=x->zb$<0=x->`<@{=x->m<`=x->zb$<0=x->zb$<0=x->m<`=x->$n=;/>Qy=@7;(>a=59(>a=59/>Qy=@7;x->Wrv=hx->Wrv=h/>Qy=@7;x->=f/>Qy=@7;x->m}=x->=f.>=w;x->Tb=4x->m}=x->m}=x->Tb=4x->^=mx->Tb=4x->=x->^=mx->^=mx->=x->;{=x->=x->fr=x->;{=x->;{=x->fr=x->OlX=0x->OlX=0x->fr=x->")=^x->fr=x->`==`")=^x->`==`<Vx->")=^x->")=^x-><Vx-><@x-><@x-><Vx->\<x-><V`.>*\<x->\<`.>*R<~`.>*OR<~x->R<~K/>O/V/VOO2<@\K/>O;mx->O2<@\x->O2<@\E3>;m(>Y59aA>=ȭ:A>=q*A>=I|A>1`6.=A>@SE"=A>a=J/A>=@RA>L=`"A>8ۨ@Sv6A>8ۨ<A>D=@c<:A>u=A =A>y=YpXA>ۢj A>?@['O>'4'O>*C4'O>6n<'O>*C4'O><'O>6n<'O>6n<'O><'O>C}"='O><'O>t(='O>C}"='O>C}"='O>t(='O>O&Ec='O>t(='O>L0l='O>O&Ec='O>O&Ec='O>L0l='O>K ='O>L0l='O>@$='O>K ='O>K ='O>@$='O>`+='O>@$='O>A1='O>`+='O>`+='O>A1='O> a+<='O>A1='O>1<='O> a+<='O> a+<='O>1<='O>g <='O>1<='O>=@$='O>g <='O>g <='O>=@$='O>_&E=c='O>=@$='O> L=0l='O>_&E=c='O>_&E=c='O> L=0l='O>C}="='O> L=0l='O>t=(='O>C}="='O>C}="='O>t=(='O>>n=<'O>t=(='O>=<'O>>n=<'O>>n=<'O>=<'O>/=4'O>=<'O>/C=4'O>/=4'O>/=4'O>/C=4'O>>n=@'O>/C=4'O>='O>>n=@'O>>n=@'O>='O>C}=@"'O>='O>t=('O>C}=@"'O>C}=@"'O>t=('O>_&E=c'O>t=('O> L=0l'O>_&E=c'O>_&E=c'O> L=0l'O>g <숽'O> L=0l'O>= $'O>g <숽'O>g <숽'O>= $'O> a+<'O>= $'O>1<'O> a+<'O> a+<'O>1<'O>`+'O>1<'O>A1'O>`+'O>`+'O>A1'O>K 숽'O>A1'O> $'O>K 숽'O>K 숽'O> $'O>O&Ec'O> $'O>L0l'O>O&Ec'O>O&Ec'O>L0l'O>C}@"'O>L0l'O>t('O>C}@"'O>C}@"'O>t('O>6n@'O>t('O>'O>6n@'O>6n@'O>'O>'4'O>'O>*C4'O>'4;>7= :F;>-O=;@;>0-O=;@;>O =`t;>00O =`t;>6!<`;>O =`t;>C{<ĉ;>6!<`;>6!<`;>C{<ĉ;>P6!`;>C{<ĉ;>ꌽ;>P6!`;>P6!`;>ꌽ;>꼀s;>ꌽ;>μ ;>꼀s;>꼀s;>μ ;>7 :F;>μ ;>60\;>7 :F;>7 :F;>60\;>/j4;>60\;>˃i 5;>/j4;>/j4;>˃i 5;>2уp;>˃i 5;>;>2уp;>2уp;>;>;Ԇ;;>;>O4;>;Ԇ;;>;Ԇ;;>O4;>{<;>O4;><;>{<;>{<;><;>kS(=;><;>˃i`5=;>kS(=;>kS(=;>˃i`5=;>hT`m_=;>˃i`5=;>60\=;>hT`m_=;>hT`m_=;>60\=;>niP3=;>60\=;>μ0=;>niP3=;>niP3=;>μ0=;>,2 5=;>μ0=;>=;>,2 5=;>,2 5=;>=;>i=;>C{<ĉ=;>iiC{<ĉ=;>tT=`m_=;>C{<ĉ=;>O =t=;>tT=`m_=;>tT=`m_=;>O =t=;>"kS=(=;>O =t=;>-O=;@=;>"kS=(=;>"kS=(=;>-O=;@=;>{=<;>-O=;@=;>~=@<;>{=<;>{=<;>~=@<;>BԆ=;;>~=@<;>׻=~(<;>BԆ=;;>BԆ=;;>׻=~(<;>:у=p;>׻=~(<;>׻=}(;>:у=p;>:у=p;>׻=}(;>/j=4;>׻=}(;>~=@@;>/j=4;>/j=4;>~=@@;>7= :F;>~=@@;>-O=;@;>7= :F9>< V=x->zb$<0=9>{b$<0=x->zb$<0=x->b$0=9>{b$<0=9>{b$<0=x->b$0=9>b$0=x->b$0=x-> V=9>b$0=9>b$0=x-> V=9> V=x-> V=x->G= V=9> V=x->G=G=G=Jr=9>G=G=Jr=9>Jr=x->Jr=x-> @<9>Jr=9>Jr=x-> @<9> @<9>fr==x->`==`==`==< V=9>`==`==< V=9>< V=9>< V=x->< V=x->zb$<0=9>`==`fr=9>fr=x->fr=x->=9>fr=9>fr=x->=9>=x->=x->Tb=49>=9>=x->Tb=49>Tb=4x->Tb=4x->=@<9>Tb=49>Tb=4x->=@<9>=@=@br==9>=@<9>=@br==9>fr==9>fr==x->br==x->`== @Hb49> @<9> @Hb49>Hb4x->Hb4x-> 9>Hb49>Hb4x-> 9> x-> x->Jr9> 9> x->Jr9>Jrx->Jrx->G=`Jr9>Jrx->G=`G=`G=`V9>G=`G=`V9>Vx->Vx->b$ꎽ9>V9>Vx->b$ꎽ9>b$ꎽx->b$ꎽx->zb$<ꎽ9>b$ꎽ9>b$ꎽx->zb$<ꎽ9>{b$<ꎽx->zb$<ꎽx-><V9>{b$<ꎽ9>{b$<ꎽx-><V9><V9><Vx-><V9>`==`<Vx->`==``==``==``==`fr=A>ǚj-p>>8@ۨA>?@[A>ǚj-p>>w4p>>8@ۨp>>8@ۨA>pXA>?@[p>>8@ۨA>ۢj A>pXp>>E`"A>ۢj p>>8@ۨp>>E`"A>À 2A>ۢj p>>E`"A>dUA>À 2p>>!UdA>dUp>>E`"A>dUTA>Njp>>!UdTA>NjA>d.p>>!Udp>>!UdA>d.o>>V슽A>d.A>+ P`o>>V슽o>>T~1A>+ P`o>>V슽o>>T~1A>`ߔA>+ P`A>`ߔ8A>uZ ™o>>T~1o>>T~18A>uZ ™o>>ت;08A>uZ ™A>E%P=o>>ت;0A>E%P=A>A; o>>ت;0o>>ت;0A>A; EA>sR<晽o>>ت;0A>CosR<晽o>>GCo>ت;0o>>G <A>Co>v4=`A> <o>>G <A>\=o>>v4=`A>\=A>_@=vo>>v4=`n>>4r= }Eo>>v4=`+A>>fl=L+A>>fl=Lo>>v4=`6A>uX=`Sao>>v4=`A>_@=v6A>uX=`Sa+A>>fl=LA>a=J/n>>4r= }EA>a=J/A>L=`"n>>4r= }En>>y=XA>L=`"n>>4r= }EA>=In>>=q*A>=q*A>=In>>y=Xn>>=q*A>=In>>y=XA>=@RA>=@RA>L=`"n>>y=XA>=q*A>=ȭ:n>>=q*n>>=r*=ȭ:n>>=q*A>=ȭ:(A>ʚ=,>=r*<(A>ʚ=,<A>D=@c>=r*>=r*<A>D=@c>y=Y<A>D=@cy=Y>y=Y>y=Yy=Y<:A>u=A =:A>u=A =A>!k=f%=n>>y=Y!k=f%= A>u=`@=n>>y=Y>4r=@}E= A>u=`@=n>>y=Y_=Z= A>u=`@=n>>4r=@}E=n>>4r=@}E=A>}@=v=CA>_=Z=n>>4r=@}E=A>}@=v=o>>v4==o>>v4==A>}@=v=A>!\==A>!\==A> #< =o>>v4==o>>v4==A> #< =o>>G #< =A>j<=o>>G>Gj<=o>>ت;P=A>j<=A>hR<=o>>ت;P=A>hR<=A>4;PF=o>>ت;P=o>>ت;P=A>4;PF=o>>T~1=A>4;PF=A>j=o>>T~1=A>j=AA>U@ݘ=o>>T~1=o>>T~1=AA>U@ݘ=A>/ 0=A>/ 0=A>$/ >=o>>T~1=o>>T~1=A>$/ >=o>>V=A>$/ >=A>p$Є=o>>V=o>>V=A>p$Є=p>>!U@d=A>p$Є=;A>Bt=p>>!U@d=;A>Bt=A>hFb+W=p>>!U@d=A>hFb+W=|A>1`6.=p>>!U@d=p>>!U@d=|A>1`6.=p>>E"=|A>1`6.=A>E"=p>>E"=A>E"=A>@S

>E"=p>>8ۨ@S

>E"=p>>8ۨ@S

>8ۨ*rA>8ۨ

>w4A>*rp>>8ۨ<A>ǚj-A>*rp>>w4P@S>>n=<'O>/=4P@S>/=4'O>/=4'O>>n=@P@S>/=4P@S>/=4'O>>n=@P@S>>n=@'O>>n=@'O>C}=@"P@S>>n=@P@S>>n=@'O>C}=@"P@S>C}=@"'O>C}=@"'O>_&E=cP@S>C}=@"P@S>C}=@"'O>_&E=cQ@S>_&E=c'O>_&E=c'O>g <숽Q@S>_&E=cQ@S>_&E=c'O>g <숽Q@S>h <숽'O>g <숽'O> a+h <숽Q@S>h <숽'O> a+ a+<'O> a+<'O>`+Q@S> a+ a+<'O>`+Q@S>`+'O>`+'O>K 숽Q@S>`+Q@S>`+'O>K 숽Q@S>J 숽'O>K 숽'O>O&EcQ@S>J 숽Q@S>J 숽'O>O&EcQ@S>O&Ec'O>O&Ec'O>C}@"Q@S>O&EcQ@S>O&Ec'O>C}@"R@S>C}@"'O>C}@"'O>6n@R@S>C}@"R@S>C}@"'O>6n@R@S>6n@'O>6n@'O>'4R@S>6n@R@S>6n@'O>'4R@S>'4'O>'4'O>6n'4R@S>'4'O>6n6n<'O>6n<'O>C}"=R@S>6n6n<'O>C}"=R@S>C}"='O>C}"='O>O&Ec=R@S>C}"=R@S>C}"='O>O&Ec=Q@S>O&Ec='O>O&Ec='O>K =Q@S>O&Ec=Q@S>O&Ec='O>K =Q@S>J ='O>K ='O>`+=Q@S>J =Q@S>J ='O>`+=Q@S>`+='O>`+='O> a+<=Q@S>`+=Q@S>`+='O> a+<=Q@S> a+<='O> a+<='O>g <=Q@S> a+<=Q@S> a+<='O>g <=Q@S>h <='O>g <='O>_&E=c=Q@S>h <=Q@S>h <='O>_&E=c=Q@S>_&E=c='O>_&E=c='O>C}="=Q@S>_&E=c=Q@S>_&E=c='O>C}="=P@S>C}="='O>C}="='O>>n=C}="=P@S>C}="='O>>n=>n=<'O>>n=<'O>/=4P@S>>n=<;>niP3=8>w󜼀i~=;>hT`m_=8>w󜼀i~=8>m[=;>hT`m_=;>hT`m_=8>m[=;>kS(=8>m[=8>'P%=;>kS(=;>kS(=8>'P%=;>{<8>'P%=8>w<;>{<;>{<8>w<;>;Ԇ;8>w<8>j,;;>;Ԇ;;>;Ԇ;8>j,;;>2уp8>j,;8>Hȁl;>2уp;>2уp8>Hȁl;>/j48>Hȁl8> f;>/j4;>/j48> f;>7 :F8> f8>5*C;>7 :F;>7 :F8>5*C;>꼀s8>5*C8>缠o;>꼀s;>꼀s8>缠o;>P6!`8>缠o8>;;>P6!`;>P6!`8>;;>6!<`8>;8>w<;>6!<`;>6!<`8>w<;>0w<8>007= :F8>5=*C;>7= :F;>7= :F8>5=*C;>/j=48>5=*C8>f=;>/j=4;>/j=48>f=;>:у=p8>f=8>Pȁ=l;>:у=p;>:у=p8>Pȁ=l;>BԆ=;8>Pȁ=l8>s=,;;>BԆ=;;>BԆ=;8>s=,;;>{=<8>s=,;8>w=<;>{=<;>{=<8>w=<;>"kS=(=8>w=<8>'P=%=;>"kS=(=;>"kS=(=8>'P=%=;>tT=`m_=8>'P=%=8>|=[=;>tT=`m_=;>tT=`m_=8>|=[=;>i|=[=8>ii,2 5=8>uR2=;>,2 5=;>,2 5=8>uR2=;>niP3=8>uR2=8>w󜼀i~=;>niP3=G>劽s>oVBKC>Vs>oVBK2>E [C>VC>V2>E [Ƥ>0X@Ƥ>0X@2>E [B>(F~Pލ2>E [P>o A`B>(F~PލB>(F~PލP>o A`t?>q{0t?>q{0P>o A`ƒ>j}P>o A`q >KUƒ>j}ƒ>j}q >KU>>q >KUX>Vq >KU֓>O>X>VX>V֓>O>>B X֓>O>=*>\N`gA>B X>B X=*>\N`gA8>_ލF~8>_ލF~=*>\N`gA]>:`{=*>\N`gA>B0S<8]>:`{]>:`{>B0S<8wΏ>~>B0S<8s>oVBKwΏ>~wΏ>~s>oVBKG>劽9>L,<{9><V9>q=x9><V9>`==`q=x9>q=x9>`==`=^=@ A9>`==`fr=9>=^=@ A9>=^=@ A9>fr=9>}!=9>fr=9>=9>}!=9>}!=9>=9>='9>=9>Tb=49>='9>='9>Tb=49>='<9>Tb=49>=@<9>='<9>='<9>=@<9>}!=<9>=@<9>fr==9>}!=<9>}!=<9>fr==9>=^= A=9>fr==9>`===^= A=9>=^= A=9>`==q=x=9>`==< V=9>q=x=9>q=x=9>< V=9>L,<{=9>< V=9>{b$<0=9>L,<{=9>L,<{=9>{b$<0=9>ZQ3t=9>{b$<0=9>b$0=9>ZQ3t=9>ZQ3t=9>b$0=9>,{=9>b$0=9> V=9>,{=9>,{=9> V=9>px=9> V=9>G=px=9>px=9>G=#^ A=9>G=Jr=9>#^ A=9>#^ A=9>Jr=9>o!<9>Jr=9> @<9>o!<9>o!<9> @<9>}'<9> @<9>Hb49>}'<9>}'<9>Hb49>}'9>Hb49> 9>}'9>}'9> 9>o!9> 9>Jr9>o!9>o!9>Jr9>#^@ A9>Jr9>G=`#^@ A9>#^@ A9>G=`px9>G=`V9>px9>px9>V9>,{9>V9>b$ꎽ9>,{9>,{9>b$ꎽ9>ZQ3t9>b$ꎽ9>{b$<ꎽ9>ZQ3t9>ZQ3t9>{b$<ꎽ9>L,<{9>{b$<ꎽ9><V9>L,<{n>>wk=n>>y=Xn>>4r= }En>>wk=n>>=q*n>>y=Xn>>@N=4n>>=q*n>>wk=n>>@N=4n>>=r*>=q*n>>wk=>=r*>@N=4n>>wk=>y=Y>=r*>Wzt==n>>y=Y>wk=>Wzt==n>>4r=@}E=n>>y=Y>]O>=@[=n>>4r=@}E=n>>Wzt==o>>]O>=@[=o>>v4==n>>4r=@}E=o>>]O>=@[=o>>v4==o>>r<,=o>>v4==o>>G>r<,=o>>r<,=o>>G>o%<ӏ=o>>G>ت;P=o>>o%<ӏ=o>>o%<ӏ=o>>ت;P=o>>n%ӏ=o>>ت;P=o>>T~1=o>>n%ӏ=o>>n%ӏ=o>>T~1=o>>r,=o>>T~1=o>>V=o>>r,=o>>r,=o>>V=o>>LO>@[=o>>V=p>>!U@d=o>>LO>@[=o>>LO>@[=p>>!U@d=p>>Dzt=p>>!U@d=p>>E"=p>>Dzt=p>>nk

>E"=p>>Dzt=p>>nk

>8ۨ

>E"=p>>8N4p>>8ۨ

>nk

>8N4p>>w4p>>8ۨ

>nkp>>w4p>>8N4p>>nkp>>8@ۨp>>w4p>>Dztp>>8@ۨp>>nkp>>Dztp>>E`"p>>8@ۨo>>LO>[p>>E`"p>>Dzto>>LO>[p>>!Udp>>E`"o>>LO>[p>>!Udo>>r,p>>!Udo>>V슽o>>r,o>>n%ӏo>>V슽o>>r,o>>n%ӏo>>T~1o>>V슽o>>o%<ӏo>>T~1o>>n%ӏo>>T~1o>>ت;0o>>o%<ӏo>>o%<ӏo>>ت;0o>>r<,o>>ت;0o>>G>r<,o>>r<,o>>G>]O>=[o>>]O>=[o>>v4=`o>>G>Wzt=o>>v4=`o>>]O>=[n>>Wzt=n>>4r= }Eo>>v4=`n>>wk=n>>4r= }En>>Wzt=Q@S>J =Q@S>@$=Q@S>O&Ec=Q@S>@$=R@S>L0l=Q@S>O&Ec=Q@S>O&Ec=R@S>L0l=R@S>C}"=R@S>L0l=R@S>t(=R@S>C}"=R@S>C}"=R@S>t(=R@S>6nt(=R@S>6n6n'4R@S>*C4R@S>'4R@S>'4R@S>*C4R@S>6n@R@S>*C4R@S>R@S>6n@R@S>6n@R@S>R@S>C}@"R@S>R@S>t(R@S>C}@"R@S>C}@"R@S>t(Q@S>O&EcR@S>t(R@S>L0lQ@S>O&EcQ@S>O&EcR@S>L0lQ@S>J 숽R@S>L0lQ@S> $Q@S>J 숽Q@S>J 숽Q@S> $Q@S>`+Q@S> $Q@S>A1Q@S>`+Q@S>`+Q@S>A1Q@S> a+A1Q@S>1<Q@S> a+ a+1<Q@S>h <숽Q@S>1<Q@S>= $Q@S>h <숽Q@S>h <숽Q@S>= $Q@S>_&E=cQ@S>= $P@S> L=0lQ@S>_&E=cQ@S>_&E=cP@S> L=0lP@S>C}=@"P@S> L=0lP@S>t=(P@S>C}=@"P@S>C}=@"P@S>t=(P@S>>n=@P@S>t=(P@S>=P@S>>n=@P@S>>n=@P@S>=P@S>/=4P@S>=P@S>/C=4P@S>/=4P@S>/=4P@S>/C=4P@S>>n=/C=4P@S>=>n=>n==C}="=P@S>=t=(=P@S>C}="=P@S>C}="=P@S>t=(=Q@S>_&E=c=P@S>t=(=P@S> L=0l=Q@S>_&E=c=Q@S>_&E=c=P@S> L=0l=Q@S>h <=P@S> L=0l=Q@S>=@$=Q@S>h <=Q@S>h <=Q@S>=@$=Q@S> a+<=Q@S>=@$=Q@S>1<=Q@S> a+<=Q@S> a+<=Q@S>1<=Q@S>`+=Q@S>1<=Q@S>A1=Q@S>`+=Q@S>`+=Q@S>A1=Q@S>J =Q@S>A1=Q@S>@$=Q@S>J =8>'P%=8>m[=8>w<8>m[=8>w󜼀i~=8>w<8>w<8>w󜼀i~=8>j,;8>w󜼀i~=8> f8>j,;8>j,;8> f8>Hȁl8>5*C8> f8>缠o8> f8>f=8>缠o8>w󜼀i~=8>uR2=8> f8>uR2=8> f8> f8>|=[=8>;8>缠o8>w<8>缠o8>f=8>w<8>w<8>f=8>f=8>5=*C8>Pȁ=l8>f=8>s=,;8>f=8> f8>s=,;8>s=,;8> f8>w=<8> f8>|=[=8>w=<8>w=<8>|=[=8>'P=%=9>L,<{=3w>q=x=9>q=x=3w>q=x=3w>>^= A=9>q=x=9>q=x=3w>>^= A=9>=^= A=3w>>^= A=3w>~!=<9>=^= A=9>=^= A=3w>~!=<9>}!=<3w>~!=<3w>='<9>}!=<9>}!=<3w>='<9>='<3w>='<3w>='9>='<9>='<3w>='9>='3w>='3w>~!=9>='9>='3w>~!=9>}!=3w>~!=3w>>^=@ A9>}!=9>}!=3w>>^=@ A9>=^=@ A3w>>^=@ A3w>q=x9>=^=@ A9>=^=@ A3w>q=x9>q=x3w>q=x3w>I,<{9>q=x9>q=x3w>I,<{9>L,<{9>L,<{3w>I,<{9>ZQ3t3w>I,<{3w>tR^3t9>ZQ3t3w>tR^3t3w>,{9>ZQ3t9>ZQ3t3w>,{9>,{3w>,{3w>px9>,{9>,{3w>px9>px3w>px3w>"^@ A9>px9>px3w>"^@ A9>#^@ A3w>"^@ A3w>n!9>#^@ A9>#^@ A3w>n!9>o!3w>n!3w>|'9>o!9>o!3w>|'9>}'3w>|'3w>|'<9>}'9>}'3w>|'<9>}'<3w>|'<3w>o!<9>}'<9>}'<3w>o!<9>o!<3w>o!<3w>"^ A=9>o!<9>o!<3w>"^ A=9>#^ A=3w>"^ A=3w>px=9>#^ A=9>#^ A=3w>px=9>px=3w>px=3w>,{=9>px=9>px=3w>,{=9>,{=3w>,{=3w>tR^3t=9>,{=9>,{=3w>tR^3t=9>ZQ3t=3w>tR^3t=3w>I,<{=9>ZQ3t=9>ZQ3t=3w>I,<{=9>L,<{=9>L,<{=3w>I,<{=3w>q=x=n>>@N=4Q8>@N=4n>>wk=>@N=4Q8>wk=Q8>@N=4n>>wk=Q8>wk=n>>@N=4n>>wk=Q8>Vzt=Q8>wk=n>>Wzt=Q8>Vzt=n>>wk=n>>Wzt=Q8>\O>=[Q8>Vzt=o>>]O>=[Q8>\O>=[n>>Wzt=Q8>\O>=[Q8>r<,o>>]O>=[o>>]O>=[Q8>r<,o>>r<,Q8>r<,Q8>o%<ӏo>>r<,o>>r<,Q8>o%<ӏo>>o%<ӏo>>o%<ӏQ8>n%ӏQ8>o%<ӏo>>n%ӏQ8>n%ӏo>>o%<ӏo>>n%ӏQ8>r,Q8>n%ӏo>>r,Q8>r,o>>n%ӏo>>r,Q8>MO>[Q8>r,o>>r,Q8>MO>[o>>LO>[o>>LO>[Q8>EztQ8>MO>[p>>DztQ8>Ezto>>LO>[p>>DztQ8>nkQ8>Eztp>>nkQ8>nkp>>Dztp>>nkQ8>8N4Q8>nkp>>8N4Q8>8N4p>>nkp>>8N4Q8>nk8N4p>>nknk

>8N4p>>nkEzt=Q8>nk

>Dzt=Q8>Ezt=p>>nk

>Dzt=Q8>MO>@[=Q8>Ezt=p>>Dzt=Q8>MO>@[=o>>LO>@[=Q8>MO>@[=Q8>r,=o>>LO>@[=o>>LO>@[=Q8>r,=o>>r,=Q8>r,=Q8>n%ӏ=o>>r,=o>>r,=Q8>n%ӏ=o>>n%ӏ=Q8>n%ӏ=Q8>o%<ӏ=o>>n%ӏ=o>>n%ӏ=Q8>o%<ӏ=o>>o%<ӏ=Q8>o%<ӏ=Q8>r<,=o>>o%<ӏ=o>>o%<ӏ=Q8>r<,=o>>r<,=Q8>r<,=Q8>\O>=@[=o>>r<,=o>>]O>=@[=Q8>\O>=@[=o>>r<,=o>>]O>=@[=Q8>Vzt==Q8>\O>=@[=n>>Wzt==Q8>Vzt==o>>]O>=@[=n>>Wzt==Q8>wk=Vzt==n>>wk=wk=>Wzt==n>>wk=@N=4Q8>wk=<9W>=*P@S>=P@S>t=(P@S> L=0lsW>{o=`IP@S>t=(sW>{o=`IW>=+&P@S>t=(P@S>t=(W>=+&9W>=*Q@S>= $W>(=tP@S> L=0lW>(=tW> L=0lP@S> L=0lP@S> L=0lW> L=0lsW>{o=`IQ@S>1<W><Q@S>= $W><W>= $Q@S>= $Q@S>= $W>= $W>(=tQ@S>A1W>O 3 CQ@S>1<W>O 3 CW>1<Q@S>1<Q@S>1<W>1<W><Q@S> $W>Q@S>A1W>W>@1Q@S>A1Q@S>A1W>@1W>O 3 CR@S>L0lW>(tQ@S> $W>(tW> $Q@S> $Q@S> $W> $W>R@S>t(}W>toIR@S>L0l}W>toIW>L0lR@S>L0lR@S>L0lW>L0lW>(tR@S>W>c䎽R@S>t(W>c䎽W> '&R@S>t(R@S>t(W> '&}W>toIR@S>*C4W>񚽀.R@S>W>񚽀.W>dެR@S>R@S>W>dެW>c䎽R@S>񚽀.*C4W>񚽀.y4R@S>*C4R@S>*C4W>y4W>񚽀.R@S>t(=W>c䎽@c䎽@񚽀.L0l=|W>toI=R@S>t(=|W>toI=W>`'&=R@S>t(=R@S>t(=W>`'&=W>c䎽@@$=W>(t=R@S>L0l=W>(t=W>L0l=R@S>L0l=R@S>L0l=W>L0l=|W>toI=Q@S>A1=W>=Q@S>@$=W>=W>@$=Q@S>@$=Q@S>@$=W>@$=W>(t=Q@S>1<=W>O 3@C=Q@S>A1=W>O 3@C=W>@1=Q@S>A1=Q@S>A1=W>@1=W>=Q@S>=@$=W><=Q@S>1<=W><=W>1<=Q@S>1<=Q@S>1<=W>1<=W>O 3@C=P@S> L=0l=W>(=t=Q@S>=@$=W>(=t=W>=@$=Q@S>=@$=Q@S>=@$=W>=@$=W><=9W>=*W>=P@S>=W>=W>/C=4P@S>=P@S>=W>/C=4P@S>/C=4W>/C=4W>=/C=4P@S>/C=4W>===t=(=P@S>==t=(=P@S>t=(=W>t=(=sW>{o=I=P@S>t=(=P@S>t=(=sW>{o=I=P@S> L=0l=sW>{o=I=W> L=0l=P@S> L=0l=P@S> L=0l=W> L=0l=W>(=t=3w>jfe3w>k?3w>n!3w>V0sN3w>o!<3w>{2@*̼3w>n!3w>k?3w>|'3w>k?3w>jf33w>|'3w>|'3w>jf33w>|'<3w>jf33w>X@*̼3w>|'<3w>|'<3w>X@*̼3w>o!<3w>X@*̼3w>E3w>o!<3w>o!<3w>E3w>{2@*̼3w>{2@*̼3w>w$33w>V0sN3w>w$33w>U?3w>V0sN3w>V0sN3w>U?3w>y`w\3w>U?3w>w$e3w>y`w\3w>y`w\3w>w$e3w>{2j(3w>o!<3w>C3w>1b43w>0o3w>px3w>ya3w>px3w>,{3w>ya3w>jfe3w>n!3w>Xj(3w>n!3w>"^@ A3w>Xj(3w>Xj(3w>"^@ A3w>E-3w>"^@ A3w>px3w>E-3w>E-3w>px3w>{2j(3w>px3w>0o3w>{2j(3w>{2j(3w>0o3w>y`w\3w>C3w>o!<3w>⻀C3w>o!<3w>V0sN3w>⻀C3w>⻀C3w>V0sN3w>tR^3b3w>V0sN3w>tR^3`QI3w>tR^3b3w>tR^3b3w>tR^3`QI3w>;C3w>tR^3`QI3w>41;sN3w>;C3w>;C3w>41;sN3w><`w\3w>0I,<{3w>41; d3w>I,<{3w>I,<{3w>41; d3w>tR^3t3w>41; d3w>tR^33w>tR^3t3w>tR^3t3w>tR^33w>,{3w>tR^33w>V0 d3w>,{3w>,{3w>V0 d3w>ya3w>1b43w>C;3w>o!<3w>C;3w>⻀C<3w>o!<3w>o!<3w>⻀C<3w>U= @=3w>⻀C<3w>tR^3b<3w>U= @=3w>tR^3b<3w>;C<3w>U= @=3w>;C<3w>C<;3w>U= @=3w>U= @=3w>C<;3w>='<3w>C<;Ow>db<3w>='<3w>='db<3w>='3w><`w\3w>0;C3w>0I,<{3w>;C3w>I,<{3w>q=x3w>;C3w>q=x3w>>^=@ A3w>;C3w>;C3w>>^=@ AOw>db<3w>>^=@ A3w>~!=Ow>db<Ow>db<3w>~!=3w>='v>!:=%w>)Q)=3w>o!<3w>o!<%w>)Q)=3w>"^ A=3w>"^ A=%w>)Q)=3w>px=3w>px=%w>)Q)=3w>,{=3w>,{=%w>)Q)=3w>tR^3t=3w>tR^3t=%w>)Q)=3w>I,<{=%w>)Q)=v>!:=3w>I,<{=3w>I,<{=v>!:=3w>U= @=3w>U= @=v>!:=3w>o!<3w>f=4<3w>='<3w> k= @=3w>='<3w>~!=<3w> k= @=3w>U= @=3w>-w$= f=3w>I,<{=3w>-w$= f=3w>{2=j(=3w>I,<{=3w>I,<{=3w>{2=j(=3w>q=x=3w>{2=j(=3w>١E=@-=3w>q=x=3w>q=x=3w>١E=@-=3w>>^= A=3w>١E=@-=3w>X=j(=3w>>^= A=3w>>^= A=3w>X=j(=3w>~!=<3w>X=j(=3w>f= f=3w>~!=<3w>~!=<3w>f= f=3w> k= @=3w>f=4<3w>X=*<3w>='<3w>X=*<3w>١E=<3w>='<3w>='<3w>١E=<3w>U= @=3w>١E=<3w>{2=*<3w>U= @=3w>U= @=3w>{2=*<3w>-w$=4nk78>܅j!<78>܅i!Q8>nkQ8>8N478>܅j!<78>sQ8>nk78>܅i!78>sQ8>EztQ8>nk78>LyF (8Q8>Ezt78>s꼸78>LyF (8Q8>MO>[Q8>Ezt78>_yjQ8>MO>[78>LyF (878>_yjQ8>r,Q8>MO>[78>lpQ8>r,78>_yj78>lpQ8>n%ӏQ8>r,78>ݡ;Q8>n%ӏ78>lp78>ݡ;Q8>o%<ӏQ8>n%ӏ78>"<|Q8>o%<ӏ78>ݡ;Q8>o%<ӏQ8>r<,78>"<|78>"<|Q8>r<,78>`(=@SQ8>r<,Q8>\O>=[78>`(=@S78>`(=@SQ8>\O>=[78>Q_=78>Q_=Q8>Vzt=Q8>\O>=[Q8>)=]Q8>Vzt=78>Q_=Q8>)=]Q8>wk=Q8>Vzt=8>͔=4Q8>wk=Q8>)=]8>͔=4Q8>@N=4Q8>wk=Q8>)=^@N=48>͔=4Q8>)=^wk=@N=478>Q_==Q8>wk=)=^<78>Q_==Q8>Vzt==Q8>wk=<78>`(=S=Q8>Vzt==78>Q_==78>`(=S=Q8>\O>=@[=Q8>Vzt==78>"<|=Q8>\O>=@[=78>`(=S=78>"<|=Q8>r<,=Q8>\O>=@[=78>ݡ;0=Q8>r<,=78>"<|=78>ݡ;0=Q8>o%<ӏ=Q8>r<,=78>lp0=Q8>o%<ӏ=78>ݡ;0=78>lp0=Q8>n%ӏ=Q8>o%<ӏ=78>_ zj=Q8>n%ӏ=78>lp0=78>_ zj=Q8>r,=Q8>n%ӏ=78>LyF`(8=Q8>r,=78>_ zj=78>LyF`(8=Q8>MO>@[=Q8>r,=78>sMO>@[=78>LyF`(8=78>sEzt=Q8>MO>@[=78>܅j!Ezt=78>s<78>܅j!nkEzt=Q8>8N4Q8>nk<78>܅j!{o=I=W>t=(=W>݅= "=W>݅= "=W>t=(=W>ܖ=@t=(=W>=ܖ=@ܖ=@=C=06sW>{o=I=W>U=e=W> L=0l=W>U=e=W>4=@=W> L=0l=W> L=0l=W>4=@=W>(=t=W>4=@=W>(=`=W>(=t=W>(=t=W>(=`=W>=@$=W>(=`=W>=@$=W>=@$=W><=W><0e=W><=W><=W><0e=W>1<=W><0e=W>l;N=W>1<=W>1<=W>l;N=W>O 3@C=W>l;N=W>N=W>O 3@C=W>O 3@C=W>N=W>@1=W>N=W>0e=W>@1=W>@1=W>0e=W>=W>0e=W>bѼP=W>=W>=W>bѼP=W>@$=W>bѼP=W>(`=W>@$=W>@$=W>(`=W>(t=W>(`=W>4@=W>(t=W>(t=W>4@=W>L0l=W>4@=W>Ue=W>L0l=W>L0l=W>Ue=|W>toI=}W>toIW>UeW>L0lW>UeW>4W>L0lW>L0lW>4W>(tW>4W>(@W>(tW>(tW>(@W> $W>(@W>bѼ0W> $W> $W>bѼ0W>W>bѼ0W>eW>W>W>eW>@1W>eW>NW>@1W>@1W>NW>O 3 CW>NW>l;NW>O 3 CW>O 3 CW>l;NW>1<W>l;NW><eW>1<W>1<W><eW><W><eW><0W><W><W><0W>= $W><0W>(=@W>= $W>= $W>(=@W>(=tW>(=@W>4=W>(=tW>(=tW>4=W> L=0lW>4=W>U=eW> L=0lW> L=0lW>U=esW>{o=`I9W>=*W>ܖ=W>=W>ܖ=pW>C=06W>=O>C<Ow>db<O>b<4Ow>db<3w>C<;O>b<4O>b<43w>C<;O>C<;O>C<;3w>C<;O>;C<3w>C<;3w>;C<O>;C<3w>;C<3w>tR^3b<O>;C<O>;C<3w>tR^3b<O>!`3b<3w>tR^3b<3w>⻀C<O>!`3b<O>!`3b<3w>⻀C<O>⻀C<3w>⻀C<3w>C;O>⻀C<O>⻀C<3w>C;O>C;3w>C;3w>1b4O>C;O>C;3w>1b4O>0b43w>1b43w>CO>0b4O>0b43w>CO>C3w>C3w>⻀CO>CO>C3w>⻀CO>⻀C3w>⻀C3w>tR^3bO>⻀CO>⻀C3w>tR^3bO>!`3b3w>tR^3b3w>;CO>!`3bO>!`3b3w>;CO>;CO>;C3w>;CO>C<3w>;COw>db<O>C<K>#=v>!:=u>:I$=u>:I$=%w>)Q)=v>!:=u>:I$=%w>)Q)=K>#=%w>)Q)=v>!:=K>#=3w>V0sN|>`3`QI3w>tR^3`QI|>`3`QI|>51;sN3w>tR^3`QI3w>tR^3`QI|>51;sN3w>41;sN|>51;sN|><`w\3w>41;sN3w>41;sN|><`w\3w><`w\|><`w\|>0<`w\3w><`w\|>0000051; d3w>51; d3w>41; d|>51; d|>`33w>41; d3w>41; d|>`33w>tR^3|>`3|>U0 d3w>tR^33w>tR^3|>U0 d3w>V0 d|>U0 d|>xa3w>V0 d3w>V0 d|>xa3w>ya|>xa|>0o3w>ya3w>ya|>0o3w>0o|>0o|>x`w\3w>0o3w>0o|>x`w\3w>y`w\|>x`w\|>U0sN3w>y`w\3w>y`w\|>U0sN3w>V0sN|>U0sN|>`3`QI3w>V0sN3w>X@*̼|>E3w>E|>E|>{2@*̼3w>E3w>E|>{2@*̼3w>{2@*̼|>{2@*̼|>w$33w>{2@*̼3w>{2@*̼|>w$33w>w$3|>w$3|>U?3w>w$33w>w$3|>U?3w>U?|>U?|>w$e3w>U?3w>U?|>w$e3w>w$e|>w$e|>{2j(3w>w$e3w>w$e|>{2j(3w>{2j(|>{2j(|>E-3w>{2j(3w>{2j(|>E-3w>E-|>E-|>Xj(3w>E-3w>E-|>Xj(3w>Xj(|>Xj(|>jfe3w>Xj(3w>Xj(|>jfe3w>jfe|>jfe|>k?3w>jfe3w>jfe|>k?3w>k?|>k?|>jf33w>k?3w>k?|>jf33w>jf3|>jf3|>X@*̼3w>jf33w>jf3|>X@*̼3w>X@*̼|>X@*̼|>E3w>X@*̼3w>{2=j(=|>١E=@-=3w>١E=@-=|>١E=@-=|>X=j(=3w>١E=@-=3w>١E=@-=|>X=j(=3w>X=j(=|>X=j(=|>f= f=3w>X=j(=3w>X=j(=|>f= f=3w>f= f=|>f= f=|> k= @=3w>f= f=3w>f= f=|> k= @=3w> k= @=|> k= @=|>f=4<3w> k= @=3w> k= @=|>f=4<3w>f=4<|>f=4<|>X=*<3w>f=4<3w>f=4<|>X=*<3w>X=*<|>X=*<|>١E=<3w>X=*<3w>X=*<|>١E=<3w>١E=<|>١E=<|>{2=*<3w>١E=<3w>١E=<|>{2=*<3w>{2=*<|>{2=*<|>-w$=4<3w>{2=*<3w>{2=*<|>-w$=4<3w>-w$=4<|>-w$=4<|>U= @=3w>-w$=4<3w>-w$=4<|>U= @=3w>U= @=|>U= @=|>-w$= f=3w>U= @=3w>U= @=|>-w$= f=3w>-w$= f=|>-w$= f=|>{2=j(=3w>-w$= f=3w>-w$= f=|>{2=j(=3w>{2=j(=|>{2=j(=|>١E=@-=3w>{2=j(=Q8>)=]8>)=]8>͔=4Q8>)=]78>Q_=8>)=]Q8>)=^<8>)=^<78>Q_==Q8>)=^<8>͔=48>)=^<\B>>U=e=\B>>݅= "=sW>{o=I=]B>>(=`=W>4=@=\B>>U=e=W>4=@=W>U=e=\B>>U=e=\B>>U=e=W>U=e=sW>{o=I=]B>><0e=W>>(=`=W>(=`=]B>>(=`=]B>>(=`=W>(=`=W>4=@=]B>>N=W>l;N=]B>><0e=W>l;N=W><0e=]B>><0e=]B>><0e=W><0e=W>>dѼP=W>0e=]B>>N=W>0e=W>N=]B>>N=]B>>N=W>N=W>l;N=]B>>4@=W>(`=]B>>dѼP=W>(`=W>bѼP=]B>>dѼP=]B>>dѼP=W>bѼP=W>0e=^B>>zsE=W>Ue=]B>>4@=W>Ue=W>4@=]B>>4@=]B>>4@=W>4@=W>(`=^B>>`'&=^B>>zsE=W>`'&=|W>toI=^B>>zsE=^B>>zsE=|W>toI=W>Ue=^B>>s6*dެ<^B>>c䎽@<^B>><^B>>c䎽@`'&=^B>>s6*W>y4^B>>s6*y4W>񚽀.<^B>>s6*<^B>>s6*񚽀.dެ<^B>>W>dެ^B>>s6*W>dެW>񚽀.^B>>s6*^B>>s6*W>񚽀.W>y4^B>>zs@EW> '&^B>>W> '&W>c䎽^B>>^B>>W>c䎽W>dެ]B>>4W>Ue^B>>zs@EW>Ue}W>toI^B>>zs@E^B>>zs@E}W>toIW> '&]B>>dѼ0W>(@]B>>4W>(@W>4]B>>4]B>>4W>4W>Ue]B>>NW>e]B>>dѼ0W>eW>bѼ0]B>>dѼ0]B>>dѼ0W>bѼ0W>(@]B>><eW>l;N]B>>NW>l;NW>N]B>>N]B>>NW>NW>e]B>>(=@W><0]B>><eW><0W><e]B>><e]B>><eW><eW>l;N\B>>U=eW>4=]B>>(=@W>4=W>(=@]B>>(=@]B>>(=@W>(=@W><0\B>>U=esW>{o=`I\B>>݅="sW>{o=`IW>U=e\B>>U=e\B>>U=eW>U=eW>4=sW>{o=I=W>݅= "=\B>>݅= "=W>݅= "=W>ܖ=@<\B>>݅= "=\B>>݅= "=W>ܖ=@<\B>>ܖ=@ܖ=@C=06\B>>ܖ=@<\B>>ܖ=@C=06\B>> =4pW>C=06W>ܖ=\B>> =4\B>> =4W>ܖ=\B>>ܖ=W>ܖ=9W>=*\B>>ܖ=\B>>ܖ=9W>=*\B>>݅="9W>=*W>=+&\B>>݅="\B>>݅="W>=+&sW>{o=`I>X>VBV>_s@BV>_s@X>VΔ>} }X>V>B XΔ>} }Δ>} }>B XW>as>B X8>_ލF~W>asW>as8>_ލF~y>\sl8>_ލF~]>:`{y>\sly>\sl]>:`{dP>ֳ i]>:`{wΏ>~dP>ֳ idP>ֳ iwΏ>~>cglwΏ>~G>劽>cgl>cglG>劽F>ăsG>劽C>VF>ăsF>ăsC>V~͍>}}C>VƤ>0X@~͍>}}~͍>}}Ƥ>0X@D>s`Ƥ>0X@B>(F~PލD>s`D>s`B>(F~Pލ>sl\B>(F~Pލt?>q{0>sl\>sl\t?>q{0L>*it?>q{0ƒ>j}L>*iL>*iƒ>j} >-elaƒ>j}> >-ela >-ela>BV>_s@O>< ;O>C<;O> ;<O>C<;O>;C<O> ;<O> ;<O>;C<O>!`3 5<O>;C<O>!`3b<O>!`3 5<O>!`3 5<O>!`3b<O> <O>!`3b<O>⻀C<O> <O> <O>⻀C<O> ;O>⻀C<O>C;O> ;O> ;O>C;O> 54O>C;O>0b4O> 54O> 54O>0b4O> O>0b4O>CO> O> O>CO> O>CO>⻀CO> O> O>⻀CO>!`3 5O>⻀CO>!`3bO>!`3 5O>!`3 5O>!`3bO> ;O>!`3bO>;CO> ;O> ;O>;CO>< O>;CO>C<O>< O>< O>C<O>L 5<4O>C<O>b<4O>L 5<4O>L 5<4O>b<4O>< ;O>b<4O>C<;O>< ;|>E-|>U0sN|>x`w\|>X=*<|>f=4<|> = 0<|><`w\|>ܶi=J|>0ܶi=J|>:1'=|>00:1'=|>:1'=|>=@y`/=;|> = 0<|>g)=@|> = 0<|> = 0|>g)=@|>g)=@|> = 0|> =HԼ|> = 0|>wp< |> =HԼ|>Cp |>s -|>U0sN|>xa|>U0 d|>@P\|>@P\|>U0 d|>`3|>U0 d|>`3|>`3|>`3|>`3|>=@`3|>51; d|>=@=@51; d|>U0sN|>s -|>`3`QI|> = 0<|>f=4<|>=w=|>f=4<|> k= @=|>=w=|>=w=|> k= @=|>ܶi=J=|>s -|>bt< -|>`3`QI|>bt< -|>wp< |>`3`QI|>`3`QI|>wp< |>51;sN|>wp< |> = 0|>51;sN|>51;sN|> = 0|><`w\|> = 0|>=@w|><`w\|><`w\|>=@w|>ܶi=J|>X=*<|> = 0<|>١E=<|> = 0<|>y`/=;|>١E=<|>١E=<|>y`/=;|>{2=*<|>y`/=;|>ݩ=<|>{2=*<|>{2=*<|>ݩ=<|>-w$=4<|>ݩ=<|>VP< )=|>-w$=4<|>-w$=4<|>VP< )=|>U= @=|> 1'|>iJ|>Xj(|>w=|>E|> 0<|>E|>X@*̼|> 0<|> 0<|>X@*̼|> 0|>X@*̼|>jf3|> 0|> 0|>jf3|>@w|>jf3|>k?|>@w|>@w|>k?|>iJ|>k?|>jfe|>iJ|>iJ|>jfe|>Xj(|>xa|>@P\|>0o|>@P\|> 1'|>0o|>0o|> 1'|>x`w\|> 1'|>Xj(|>x`w\|>x`w\|>Xj(|>E-|> 1'=|><|>``/;|>VP< )=|>~< <$=|>U= @=|>~< <$=|>@p\=|>U= @=|>U= @=|>@p\=|>-w$= f=|>@p\=|>`3П=|>-w$= f=|>-w$= f=|>`3П=|>{2=j(=|>`3П=|>=@{2=j(=|>{2=j(=|>=@١E=@-=|>=@:1'==|>١E=@-=|>١E=@-=|>:1'==|>X=j(=|>:1'==|>ܶi=J=|>X=j(=|>X=j(=|>ܶi=J=|>f= f=|>ܶi=J=|> k= @=|>f= f=|>~< <$=|>`3 0=|>@p\=|>`3 0=|>~ <$=|>@p\=|>@p\=|>~ <$=|> 1'=|>~ <$=|>P )=|> 1'=|> 1'=|>P )=|><|>E-|>{2j(|>U0sN|>{2j(|>w$e|>U0sN|>U0sN|>w$e|>Cp |>w$e|>U?|>Cp |>Cp |>U?|> HԼ|>U?|>w$3|> HԼ|> HԼ|>w$3|>{g)@|>w$3|>{2@*̼|>{g)@|>{g)@|>{2@*̼|>``/;|>{2@*̼|>E|>``/;|>``/;|>E|> 1'=|>E|>w=|> 1'=|> 1'=|>w=|>iJ=8>㶋<78>܅i!78>܅j!<8>㶋<8>ݜ478>܅i!78>s<8>㶋<78>܅j!<78>s<8>ts=8>㶋<78>LyF`(8=8>ts=78>s<78>LyF`(8=8>M>\=8>ts=78>_ zj=8>M>\=78>LyF`(8=78>_ zj=8>qPt=8>M>\=78>lp0=8>qPt=78>_ zj=78>lp0=8>M%!=8>qPt=78>ݡ;0=8>M%!=78>lp0=78>ݡ;0=8>%M%!=78>"<|=8>%ݡ;0=78>"<|=8>%`(=S=8>"<|=78>`(=S=8>Z>=\=8>Q_==8>Z>=\=78>`(=S=78>Q_==8>t=s=8>Z>=\=8>)=^<8>t=s=78>Q_==8>)=^<8>궋=<8>t=s=8>+=48>궋=<8>)=^<8>+=48>䜑=48>궋=<8>)=]8>䜑=48>+=48>)=]8>궋=8>䜑=478>Q_=8>궋=8>)=]8>궋=8>t=r78>Q_=78>Q_=8>t=r78>`(=@S8>t=r8>Z>=\78>`(=@S78>`(=@S8>Z>=\78>"<|78>"<|8><0t8>Z>=\78>ݡ;8><0t78>"<|78>ݡ;8>%<0t78>lp8>%ݡ;78>lp8>M%p!8>%_yj8>M%p!78>lp78>_yj8>q0t8>M%p!78>LyF (88>q0t78>_yj78>LyF (88>M>\8>q0t78>s꼀8>M>\78>LyF (878>s꼁8>tr8>M>\78>܅i!8>tr78>s꼥78>܅i!8>㶋8>tr8>ݜ48>㶋78>܅i!^B>>^B>>s6*^B>>ݜ4^B>>s6*^B>>s6*<^B>>ݜ4^B>>ݜ4^B>>s6*<^B>>㶋<^B>>s6*<^B>><^B>>㶋<^B>>ts=^B>><^B>>㶋<^B>>ts=^B>>zsE=^B>><]B>>L>\=^B>>zsE=^B>>ts=]B>>L>\=]B>>4@=^B>>zsE=]B>>qPt=]B>>4@=]B>>L>\=]B>>qPt=]B>>dѼP=]B>>4@=]B>>L%!=]B>>dѼP=]B>>qPt=]B>>dѼP=]B>>N=]B>>L%!=]B>>L%!=]B>>N=]B>>%>N=]B>><0e=]B>>%>%><0e=]B>>><0e=]B>>(=`=]B>>>>(=`=]B>>[>=\=]B>>[>=\=\B>>U=e=]B>>(=`=\B>>t=s=\B>>U=e=]B>>[>=\=\B>>t=s=\B>>݅= "=\B>>U=e=\B>>궋=<\B>>݅= "=\B>>t=s=\B>>궋=<\B>>ܖ=@<\B>>݅= "=\B>>䜑=4\B>>ܖ=@<\B>>궋=<\B>>䜑=4\B>> =4\B>>ܖ=@<\B>>궋=\B>> =4\B>>䜑=4\B>> =4\B>>ܖ=\B>>궋=\B>>궋=\B>>ܖ=\B>>t=r\B>>ܖ=\B>>݅="\B>>t=r\B>>t=r\B>>݅="]B>>[>=\]B>>[>=\\B>>U=e\B>>݅="]B>><0t\B>>U=e]B>>[>=\]B>><0t]B>>(=@\B>>U=e]B>>%>(=@]B>><0t]B>>(=@]B>><e]B>>%>L%p!]B>><e]B>>%><e]B>>N]B>>L%p!]B>>q0t]B>>N]B>>L%p!]B>>N]B>>dѼ0]B>>q0t]B>>L>\]B>>dѼ0]B>>q0t]B>>dѼ0]B>>4]B>>L>\]B>>L>\]B>>4^B>>tr]B>>4^B>>zs@E^B>>tr^B>>tr^B>>zs@E^B>>㶋^B>>zs@E^B>>^B>>㶋^B>>㶋^B>>^B>>ݜ4Ə> O>!`3 5Ə>c3 5O>!`3 5O> ;Ə>c3 5Ə>c3 5O> ;Ə> ;O> ;O>< Ə> ;Ə> ;O>< Ə>< O>< O>L 5<4Ə>< Ə>< O>L 5<4Ə>L 5<4O>L 5<4O>< ;Ə>L 5<4Ə>L 5<4O>< ;Ə>< ;O>< ;O> ;<Ə>< ;Ə>< ;O> ;<Ə> ;<O> ;<O>!`3 5<Ə> ;<Ə> ;<O>!`3 5<Ə>c3 5<O>!`3 5<O> <Ə>c3 5<Ə>c3 5<O> <Ə> <O> <O> ;Ə> <Ə> <O> ;Ə> ;O> ;O> 54Ə> ;Ə> ;O> 54Ə> 54O> 54O> Ə> 54Ə> 54O> Ə> O> O> Ə> Ə> O> Ə> O> O>!`3 5Ə> ۨ><@`3П=ۨ>B|X3П=|>`3П=|>@p\=ۨ>B|X3П=ۨ>B|X3П=|>@p\=ۨ>@p\=|>@p\=|> 1'=ۨ>@p\=ۨ>@p\=|> 1'=ۨ>!1'=|> 1'=|>iJ=ۨ>!1'=ۨ>!1'=|>iJ=ۨ>iJ=|>iJ=|>w=ۨ>iJ=ۨ>iJ=|>w=ۨ>w=|>w=|> 0<ۨ>w=ۨ>w=|> 0<ۨ> 0<|> 0<|> 0ۨ> 0<ۨ> 0<|> 0ۨ> 0|> 0|>@wۨ> 0ۨ> 0|>@wۨ>@w|>@w|>iJۨ>@wۨ>@w|>iJۨ>iJ|>iJ|> 1'ۨ>iJۨ>iJ|> 1'ۨ>!1'|> 1'|>@P\ۨ>!1'ۨ>!1'|>@P\ۨ>@P\|>@P\|>`3ۨ>@P\ۨ>@P\|>`3ۨ>B|X3|>`3|>=@B|X3ۨ>B|X3|>=@<@=@:1'=ۨ><@<@:1'=ۨ>91'=|>:1'=|>ܶi=Jۨ>91'=ۨ>91'=|>ܶi=Jۨ>۶i=J|>ܶi=J|>=@wۨ>۶i=Jۨ>۶i=J|>=@wۨ>=@w|>=@w|> = 0ۨ>=@wۨ>=@w|> = 0ۨ> = 0|> = 0|> = 0<ۨ> = 0ۨ> = 0|> = 0<ۨ> = 0<|> = 0<|>=w=ۨ> = 0<ۨ> = 0<|>=w=ۨ>=w=|>=w=|>ܶi=J=ۨ>=w=ۨ>=w=|>ܶi=J=ۨ>۶i=J=|>ܶi=J=|>:1'==ۨ>۶i=J=ۨ>۶i=J=|>:1'==ۨ>91'==|>:1'==|>=@91'==ۨ>91'==|>=@<@=@`3П=ۨ><@ݩ=<|>ݩ=<|>y`/=;Ə> P )=|><|>P )=Ə> P )=Ə><|><Ə><Ə>``/;|><|><Ə>``/;|>``/;|>``/;Ə>``/;|>{g)@Ə>``/;Ə>{g)@|>{g)@|>{g)@Ə>{g)@|> HԼƏ>Cp |>Cp Ə> HԼ|>Cp |> HԼƏ> HԼ|> HԼƏ>{g)@Ə> HԼƏ>Cp Ə>s -|>Cp |>Cp Ə>s -|>s -Ə>bt< -|>wp< |>bt< -Ə>s -Ə>bt< -|>s -|>s -Ə>bt< -|>bt< -Ə>bt< -Ə>wp< |>wp< Ə>wp< Ə> =HԼ|>wp< |>wp< Ə> =HԼ|> =HԼ|> =HԼƏ> =HԼ|>g)=@Ə> =HԼƏ>g)=@|>g)=@Ə>g)=@Ə>}`/=;|>g)=@|>g)=@Ə>}`/=;|>y`/=;|>y`/=;Ə>}`/=;Ə>ݩ=<|>ݩ=<Ə>ݩ=<|>VP< )=Ə>ݩ=<Ə>VP< )=|>VP< )=|>VP< )=Ə>VP< )=|>~< <$=Ə>VP< )=Ə>~< <$=|>~< <$=Ə>~< <$=Ə>c3 0=|>~< <$=|>~< <$=Ə>c3 0=|>`3 0=Ə>c3 0=Ə>~ <$=|>`3 0=|>`3 0=Ə>~ <$=|>~ <$=|>~ <$=Ə>~ <$=|>P )=Ə>~ <$=Ə> P )=|>P )=\B>>䜑=48>䜑=4\B>>궋=\B>>䜑=48>궋=<8>䜑=4\B>>궋=<8>궋=<\B>>䜑=4\B>>궋=<8>t=s=8>궋=<\B>>t=s=8>t=s=\B>>궋=<\B>>t=s=8>Z>=\=8>t=s=]B>>[>=\=8>Z>=\=\B>>t=s=]B>>[>=\=8>Z>=\=]B>>>[>=\=]B>>%>%%>>%M%!=8>%>L%!=8>M%!=]B>>%>L%!=8>qPt=8>M%!=]B>>qPt=8>qPt=]B>>L%!=]B>>qPt=8>M>\=8>qPt=]B>>L>\=8>M>\=]B>>qPt=]B>>L>\=8>ts=8>M>\=^B>>ts=8>ts=]B>>L>\=^B>>ts=8>㶋<8>ts=^B>>㶋<8>㶋<^B>>ts=^B>>㶋<8>ݜ48>㶋<^B>>ݜ48>ݜ4^B>>㶋<^B>>ݜ48>㶋8>ݜ4^B>>㶋8>㶋^B>>ݜ4^B>>㶋8>tr8>㶋^B>>tr8>tr^B>>㶋^B>>tr8>M>\8>tr]B>>L>\8>M>\^B>>tr]B>>L>\8>q0t8>M>\]B>>q0t8>q0t]B>>L>\]B>>q0t8>M%p!8>q0t]B>>L%p!8>M%p!]B>>q0t]B>>L%p!8>%M%p!]B>>%%>L%p!]B>>%<0t8>%><0t8><0t]B>>%><0t8>Z>=\8><0t]B>>[>=\8>Z>=\]B>><0t8>Z>=\8>t=r]B>>[>=\]B>>[>=\8>t=r\B>>t=r8>t=r8>궋=\B>>t=r\B>>t=r8>궋=\B>>궋=\B>>궋=8>䜑=48>궋=Ə> ;Ə><@ˆƏ>c3 5Ə><@ˆƏ>c3Ə>c3 5Ə>c3 5Ə>c3Ə> Ə>c3Ə>@ˆƏ> Ə> Ə>@ˆƏ> Ə>@ˆƏ>rˆƏ> Ə> Ə>rˆƏ> 54Ə>rˆƏ>ȥ4Ə> 54Ə> 54Ə>ȥ4Ə> ;Ə>ȥ4Ə>rˆ<Ə> ;Ə> ;Ə>rˆ<Ə> <Ə>rˆ<Ə>ˆ<Ə> <Ə> <Ə>ˆ<Ə>c3 5<Ə>ˆ<Ə>c3@<Ə>c3 5<Ə>c3 5<Ə>c3@<Ə> ;<Ə>c3@<Ə><ˆ<Ə> ;<Ə> ;<Ə><ˆ<Ə>< ;Ə><ˆ<Ə>ˆ<<Ə>< ;Ə>< ;Ə>ˆ<<Ə>L 5<4Ə>ˆ<<Ə><4Ə>L 5<4Ə>L 5<4Ə><4Ə>< Ə><4Ə>ˆ<Ə>< Ə>< Ə>ˆ<Ə> ;Ə>ˆ<Ə><@ˆƏ> ;ۨ>v= ף=ۨ>n= ף=ۨ>=@\=lݨ>~T=ܨ>ڲS=ۨ>5`e=ۨ>iJۨ>!1'ۨ>5`eZdۨ>@w>*`iݨ>T׼ܨ>ڲS=lݨ>~T=>䟽ς=ۨ>n=ףۨ>v=ףۨ>= \ۨ>v=ףۨ>۶i=Jۨ>= \ۨ> = 0<ۨ>=@\=ۨ> = 0ۨ>=@\=ۨ>= \ۨ> = 0ۨ> = 0ۨ>= \ۨ>=@wۨ>= \ۨ>۶i=Jۨ>=@wiݨ>T׼>b ۨ>@w>b ۨ>[<ۨ>@wۨ>@wۨ>[<ۨ> 0ۨ>[<ۨ>ڛۨ> 0ۨ> 0ۨ>ڛۨ> 0<ۨ>ڛۨ>ڛ;ۨ> 0<ۨ> 0<ۨ>ڛ;ۨ>w=ۨ>B|X3П=ۨ>5`e=ۨ>v==ܨ>um3ݨ>˞PB>oۨ>!1'ۨ>5`eۨ>5`e@ڨ>r OCۨ>Onv A)>~N@acۨ>ڛ;ۨ>[<<ۨ>w=ۨ>[<<ۨ>w=ۨ>w=Oݨ><ި>꛽ =Oݨ><>b<ި>꛽ =ި>꛽ =ۨ>s=ۨ>w=ۨ>s=ۨ>a(=ۨ>w=ۨ>w=ۨ>a(=ۨ>iJ=ۨ>a(=ۨ>Onv`A=ۨ>iJ=ۨ>iJ=ۨ>Onv`A=ۨ>!1'=ۨ>B|X3П=ۨ>@p\=ۨ>5`e=ۨ>@p\=ۨ>!1'=ۨ>5`e=ۨ>5`e=ۨ>!1'=ۨ>5`eP=ۨ> = 0<ۨ>=w=ۨ>=@\=ۨ>=w=ۨ>۶i=J=ۨ>=@\=ۨ>=@\=ۨ>۶i=J=ۨ>v= ף=ۨ>۶i=J=ۨ>91'==ۨ>v= ף=ۨ>v= ף=ۨ>91'==ۨ>v==ۨ>91'==ۨ><@v==ۨ>v==ۨ><@B|X3П=ۨ>5`eZdۨ>!1'ۨ>5`eۨ>!1'ۨ>5`e@ۨ>5`eۨ>5`eۨ>5`e@ܨ>umۨ>5`e@3ݨ>˞PBܨ>umۨ>!1'ۨ>@P\ۨ>5`eۨ>@P\ۨ>B|X3ۨ>5`eۨ>5`eۨ>B|X3ۨ>v=ۨ>B|X3ۨ><@v=ۨ>v=ۨ><@v=ףۨ><@91'=ۨ>v=ףۨ>v=ףۨ>91'=ۨ>۶i=Jyߨ>>*`ۨ>s>*`ۨ>@wۨ>sۨ>sۨ>@wۨ>a񃽀(ۨ>@wۨ>iJۨ>a񃽀(ۨ>a񃽀(ۨ>iJۨ>Onv Aۨ>iJۨ>5`eZdۨ>Onv Aۨ>Onv Aۨ>5`eZd)>~N@acި>iYS=>_c=ب>C=ب>C=>_c=ۨ>Onv`A=>_c=ۨ>5`e@Zd=ۨ>Onv`A=ۨ>Onv`A=ۨ>5`e@Zd=ۨ>!1'=ۨ>5`e@Zd=ۨ>5`e=ۨ>!1'=ۨ>!1'=ۨ>5`e=ۨ>5`eP=ۨ>5`e=ܨ>ڲS=ۨ>5`eP=>zMڨ>r OC)>~N@acި>꛽ =>b<>y8=Ə>SּT<Ə> P )=Ə>g@ =Ə> P )=Ə>~ <$=Ə>g@ =Ə>g@ =Ə>~ <$=Ə>c3`=Ə>~ <$=Ə>c3 0=Ə>c3`=Ə>c3`=Ə>c3 0=Ə>g<@ =Ə>c3 0=Ə>~< <$=Ə>g<@ =Ə>SּT<>@<Ə> P )=>@<>O<Ə> P )=Ə>SּT<Ə> g<>@<>@<Ə> g<>O<Ə>B4>O<Ə> g<Ə>``/;Ə><Ə> P )=>O<Ə>B4Ə> P )=Ə> P )=Ə>B4Ə>``/;Ə>``/;Ə>B4Ə>{g)@Ə>B4>HU@Ə>{g)@Ə>{g)@>HU@>q jƏ> g>HU@Ə>B4Ə>{g)@>q jƏ> HԼ>HU@Ə> g>q jƏ> gƏ>SּSּ>q j>q jƏ>SּSּƏ> HԼƏ>SּSּƏ>g Ə> HԼƏ> HԼƏ>g Ə>Cp Ə>Cp Ə>g Ə>s -X>F@Ə>wp< '>Q9:)Ə>wp< Ə>bt< -'>Q9:)Ə>wp< X>F@Ə>g '>Q9:)Ə>s -X>F@Ə>s -Ə>g X>F@Ə>s -'>Q9:)Ə>bt< -Ə>S =HԼƏ>g< Ə> =HԼƏ>wp< Ə>g< Ə> =HԼ>> =ۨƏ>\=4Ə> =g;>m=Ə>S\=4>> =ۨƏ> =g>> =ۨ;>m=Ə> =gƏ>Sm=>> =ۨƏ>S> =ۨƏ> =HԼƏ>ݩ=<Ə>}`/=;Ə>\=4Ə>}`/=;Ə>g)=@Ə>\=4Ə>\=4Ə>g)=@Ə> =HԼƏ> =g<>dU=<Ə>\=4Ə>\=4>dU=<Ə>ݩ=<>dU=<䕱>q =j<Ə>ݩ=<Ə>~< <$=Ə>VP< )=Ə>g<@ =Ə>g<@ =Ə>VP< )=Ə>S<T<Ə>VP< )=Ə>ݩ=<Ə>S<T<Ə>ݩ=<䕱>q =j<Ə>S<T<Ə>S<T<䕱>q =j<Ə> =g<䕱>q =j<>dU=<Ə> =g<Ə>g Ə>c3@Ə>wp< Ə>c3@Ə>g< Ə>wp< >cglJǏ>thdP>ֳ iJǏ>thN>ԜfdP>ֳ idP>ֳ iN>Ԝfy>\slN>ԜfՒ>s hy>\sly>\slՒ>s hW>asՒ>s hF>HJoW>asW>asF>HJoΔ>} }F>HJo\>wwΔ>} }Δ>} }\>wwBV>_s@\>ww>Sn@jBV>_s@BV>_s@>Sn@j >-ela>Sn@jN> iF >-ela >-elaN> iFL>*iN> iFM>ɢfМL>*iL>*iM>ɢfМ>sl\M>ɢfМƏ>8hs>sl\>sl\Ə>8hsD>s`Ə>8hs5>JoHD>s`D>s`5>JoH~͍>}}5>JoH?>ww~͍>}}~͍>}}?>wwF>ăs?>ww>K@FoF>ăsF>ăs>K@Fo>cgl>K@FoJǏ>th>cgl|><ˆ<Ə>c3@<|>`3@<Ə>c3@<Ə>ˆ<|>`3@<|>`3@<Ə>ˆ<|>ˆ<Ə>ˆ<Ə>rˆ<|>ˆ<|>ˆ<Ə>rˆ<|>rˆ<Ə>rˆ<Ə>ȥ4|>rˆ<|>rˆ<Ə>ȥ4|>ȥ4Ə>ȥ4Ə>rˆ|>ȥ4|>ȥ4Ə>rˆ|>rˆƏ>rˆƏ>@ˆ|>rˆ|>rˆƏ>@ˆ|>@ˆƏ>@ˆƏ>c3|>@ˆ|>@ˆƏ>c3|>`3Ə>c3Ə><@ˆ|>`3|>`3Ə><@ˆ|><@ˆƏ><@ˆƏ>ˆ<|><@ˆ|><@ˆƏ>ˆ<|>ˆ<Ə>ˆ<Ə><4|>ˆ<|>ˆ<Ə><4|><4Ə><4Ə>ˆ<<|><4|><4Ə>ˆ<<|>ˆ<<Ə>ˆ<<Ə><ˆ<|>ˆ<<|>ˆ<<Ə><ˆ<|><ˆ<Ə><ˆ<Ə>c3@<|><ˆ4`e*X}>4`eZdۨ>5`eZd >/`ep馽>/`ep馽 >Ff0Kۨ>5`e@ۨ>5`ej>4`e@ۨ>5`e >/`ej>4`e@j>4`ej>4`e@͖>4`e0qۨ>5`eZdۨ>5`eX}>4`e*ۨ>5`ej>4`eX}>4`e*X}>4`e*j>4`e >4`e#j>4`e͖>4`e0q >4`e# >Ff0Kb> ]e`գ >/`ep馽 >/`ep馽b> ]e`գ >/`eb> ]e`գZ>4`eף >/`e >/`eZ>4`eףj>4`e@Z>4`eף>4`e@j>4`e@j>4`e@>4`e@͖>4`e0q >/`eۨ>5`e >x=ۨ>5`eۨ>v= >x= >x=p馽 >x=ۨ>v=ۨ>v=ۨ>v=ף >x=p馽ۨ>v=ף>0= >x=p馽 >x=p馽>0=>x=p馽>0=ۨ>v=ף>n=ףۨ>v=ףۨ>n=ף>n=ףۨ>= \(>=[ۨ>n=ף(>=[>n=ףۨ>n=ף>r==ۨ>=@\=>=*=>=*=ۨ>=@\=þ>z= = F>=@+>pߦ=V>b=@%þ>z= =ۨ>=@\=b{>=Y=(>=[V>b=@%5>Ϧ=$ F>=@+U>=U>pߦ=U>=U>=@2ռ>pߦ=>pߦ=>=@2ռ.e>=9G>=@<>=@U>=9v.e>=9<>r==>=@<>r==>pߦ=>=@<>=@<>pߦ=U>=:v<>pߦ=.e>=9U>=:v=:v<.e>=9 F>=d<.e>=9>=@ F>=d< F>=d<>=@|6>=:v<>=@G>=@<|6>=:v< F>=d|6>=9vk>F=ͪb=@%(>=[ F>=@+ F>=@+(>=[|6>=U(>=[ۨ>= \|6>=U|6>=Uۨ>= \G>=@2ռۨ>=@\=|6>=V=2<.e>=9<>=2<>r==>=2=V<>r==>r==U>=V<ۨ>=@\=U>=V< F>=+<ۨ>=@\=ۨ>=@\= F>=+<|6>=V<>=J=ۛ<ۨ>=@\=ۨ>=@\=w>=ۛ<ۨ>= \5>X=ͪ>=ۨ>= \ۨ>= \>=G>=@2ռG>=@>g=D<|6>=9v|6>=9v>g=DF=ͪ=9v F>=dG>=@< F>=dk>F=ͪ=@=@F=ͪ<&>=9<&>=9F=ͪ=2F=ͪ<>=J=2=2<>=J<ۨ>=@\=d>/=@ F>y=C>g=D<>g=D<F>y=Cw>=ۛ=@2ռ>=&>=9>=d>/=@ &>=9&>=9d>/=@ G>=@d>/=@ >g=D=@w>=ۛ<F>y=Cۨ>= \F>y=C5>X=ͪۨ>= \ۨ>n= ף=>n= ף=ۨ>=@\=>n= ף=b{>=Y=ۨ>=@\=ۨ>v= ף=$>==ۨ>n= ף=$>==>n= ף=ۨ>n= ף=$>==ۨ>v= ף= >x==ۨ>v= ף=ۨ>v== >x== >x==ۨ>v== >x== >x==>x==$>== >x==ۨ>v== >/`e=ۨ>v==ۨ>5`e= >/`e=ۨ>5`e@Zd=X}>4`e@Zd=X}>4`e+=ۨ>5`e=ۨ>5`eP= >/`e=ۨ>5`eP=j>4`eP= >/`e= >/`e=j>4`eP= >/`e=͖>4`e@q=j>4`eP= >4`e#=j>4`eP=j>4`e= >4`e#= >4`e#=j>4`e=X}>4`e+=j>4`e=ۨ>5`e=X}>4`e+=X}>4`e+=ۨ>5`e=ۨ>5`e@Zd=͖>4`e@q=>4`e`=j>4`eP=>4`e`=Z>4`e ף=j>4`eP=j>4`eP=Z>4`e ף= >/`e=Z>4`e ף=>/`e ף= >/`e= >/`e=>/`e ף=>/`e=>/`e ף=о>Se=>/`e=8i>˞@B=j>4`eP=ܨ>ڲS=j>4`eP=ۨ>5`eP=ܨ>ڲS=ܨ>ڲS=>䟽ς=8i>˞@B=8i>˞@B=>䟽ς=a>n=>䟽ς=lݨ>~T=a>n=a>n=lݨ>~T=i>wm=lݨ>~T=ۨ>5`e=i>wm=ۨ>5`e=j>4`e=i>wm=>_c=(>%`&d=ۨ>5`e@Zd=(>%`&d=X}>4`e@Zd=ۨ>5`e@Zd=(>%`&d=>_c=~>BNZ=>_c=ި>iYS=~>BNZ=~>BNZ=ި>iYS=~>uJ=ި>iYS=ب>C=~>uJ=~>uJ=ب>C=]> x`E@=ۨ>s=X}>s=ۨ>a(=X}>s=X}>a(=ۨ>a(=ۨ>a(=X}>a(=ۨ>Onv`A=X}>a(=]> x`E@=ۨ>Onv`A=X}>s=ۨ>s=X}>"\=ۨ>s=ި>꛽ =X}>"\=X}>"\=ި>꛽ =&>n=ި>꛽ =a> =&>n=ި>꛽ =>y8=a> =a> =>y8=`>颽<>y8=>b<`>颽<`>颽<>b<ᓱ><>b<ᓱ><ᓱ>[<<ۨ>[<[<[<<ۨ>[<<=>EW<ۨ>[<<ۨ>ڛ;=>EW<=>EW<>;!>D>;G>thϺ!>D!>DG>thϺ b>Xۨ>ڛ b>Xۨ>ڛ; b>X>;ۨ>ڛ;ۨ>ڛ;>;=>EW< b>Xۨ>ڛ!>Dۨ>ڛۨ>[D!>Dۨ>[<>ܡD>b >ܡDۨ>[<>b >ʗ1ż>ܡD>b iݨ>T׼>ʗ1ż>ʗ1żiݨ>T׼V>櫢׼>*`S>rRiݨ>T׼S>rRV>櫢׼iݨ>T׼>*`*m>bnd>9ET>*`d>9ETS>rRyߨ>*m>bn>*`F,>3 *m>bnX}>"\*m>bnyߨ>X}>"\X}>"\yߨ>X}>syߨ>ۨ>sX}>sۨ>Onv At> w /Aۨ>a񃽀(t> w /AX}>a񃽀(ۨ>a񃽀(ۨ>a񃽀(X}>a񃽀(ۨ>sX}>a񃽀(X}>sۨ>st> w /Aڨ>r OCX}>䁽 Cڨ>r OC>zMX}>䁽 CX}>䁽 C>zM> ׆S>zM)>~N@ac> ׆S> ׆S)>~N@ac>&c>&c)>~N@acX}>4`eZd)>~N@acۨ>5`eZdX}>4`eZdۨ>5`eܨ>umj>4`eܨ>umW>4}j>4`eܨ>um>oW>4}W>4}>oBg>ΟP>o3ݨ>˞PBBg>ΟPj>4`e@Bg>ΟPۨ>5`e@Bg>ΟP3ݨ>˞PBۨ>5`e@Ə>SּT<|>SּT<|> g<Ə>S<T<|>S<T<|>g<@ =Ə>S<T<Ə> =g<|>S<T<|>S<T<Ə> =g<|> =g<Ə> =g<Ə>\=4|> =g<|> =g<Ə>\=4|>^=4|>^=4Ə>\=4|> =gƏ>g< |>g< |>S\=4Ə> =g|> =gƏ> =gƏ>S =g|> =gƏ>SSSSg< Ə>g< Ə>c3@|>g< |>g< Ə>c3@|>`3@Ə>c3@Ə>g |>`3@|>`3@Ə>g |>"g |>"g Ə>g |>SּSּƏ>g Ə>SּSּ|>SּSּƏ>SּSּƏ> g|>SּSּ|>SּSּƏ> g|> gƏ> gƏ>B4|> g|> gƏ>B4|>B4|>B4Ə>B4|> g<Ə>B4Ə> g<|> g<|> g<Ə> g<Ə>SּT<Ə>SּT<Ə>g@ =|>SּT<|>SּT<Ə>g@ =|>"g@ =Ə>g@ =Ə>c3`=|>"g@ =|>"g@ =Ə>c3`=|>`3`=Ə>c3`=Ə>g<@ =|>`3`=|>`3`=Ə>g<@ =|>g<@ =|>g<@ =Ə>g<@ =Ə>S<T#X>F@C>:@I$C>:@I$'>Q9:)X>F@C>:@I$'>Q9:)r>#'>Q9:)X>F@r>#Jq>L=ʢ;>m=C>k=C>k=>> =ۨ;>m=C>k=>> =ۨJq>L=ʢ>> =ۨ;>m=Jq>L=ʢJq>e=<䕱>q =jj =0<䕱>q =j<>dU=e=j =0<>dU=e=j =0<䕱>q =j<>dU=@<>@,,<>O<>@,<>O@<>O<>@@>HU@C>,C>,>q j>HU@C>,>q jo>>q j>HU@o>|><ˆ<|>S<T<|>ˆ<<|>S<T<|> =g<|>ˆ<<|>ˆ<<|> =g<|><4|> =g<|>^=4|><4|><4|>^=4|>ˆ<|>rˆ<|>SּT<|>ˆ<|>SּT<|>"g@ =|>ˆ<|>ˆ<|>"g@ =|>`3@<|>"g@ =|>`3`=|>`3@<|>`3@<|>`3`=|><ˆ<|>`3`=|>g<@ =|><ˆ<|><ˆ<|>g<@ =|>S<T<|>@ˆ|>SּSּ|>rˆ|>SּSּ|> g|>rˆ|>rˆ|> g|>ȥ4|> g|>B4|>ȥ4|>ȥ4|>B4|>rˆ<|>B4|> g<|>rˆ<|>rˆ<|> g<|>SּT<|>^=4|> =g|>ˆ<|> =g|>Sˆ<|>ˆ<|>S<@ˆ|>Sg< |><@ˆ|><@ˆ|>g< |>`3|>g< |>`3@|>`3|>`3|>`3@|>@ˆ|>`3@|>"g |>@ˆ|>@ˆ|>"g |>SּSּ>\*P>\#g>Se`g>Se`P>\#>/`e`hP>\#&#>/`e>/`e`hP>\#>\0q&#>/`e&#>/`e>\0q >Ff0K>\0q;>Q[@ >Ff0K >Ff0K;>Q[@b> ]e`գ;>Q[@> \ףb> ]e`գZ>4`eףb> ]e`գZ>"\ףb> ]e`գ> \ףZ>"\ףX}>"\*#w>Z̅ >"\# >"\##w>Z̅8>t툽X}>4`e* >4`e#8>t툽Z>4`eףZ>"\ף>"\@Z>4`eף>"\@>4`e@>"\@͖>"\0q>4`e@>4`e@͖>"\0q͖>4`e0q͖>"\0q >"\#͖>4`e0q͖>4`e0q >"\# >4`e# >"\#8>t툽 >4`e#> ׆S>&cX}>"\*X}>"\X}>sX}>a񃽀(t> w /AX}>䁽 CX}>a񃽀(X}>a񃽀(X}>䁽 CX}>"\X}>䁽 C> ׆SX}>"\X}>"\> ׆SX}>"\*X}>4`e*8>t툽X}>4`eZd8>t툽>yXX}>4`eZdX}>4`eZd>yX>&c>&c>yXX}>"\*>yX#w>Z̅X}>"\*j>4`e@j>4`eBg>ΟPj>4`eW>4}Bg>ΟP >x=p馽>x=p馽 >/`ep馽>x=p馽>/`ep馽 >/`ep馽>/`ep馽>x=p馽 >Ff0K>x=p馽>0= >Ff0K >Ff0K>0=>/`e>0=>x=>/`e >x=p馽 >/`ep馽 >x= >/`ep馽 >/`e >x=>n=ףp>n=@>0=A>o=0a$>y=0qQ>n=#Q>n=#$>y=0q$>n=0q$>y=0q>0=$>n=0q$>n=0q>0=p>n=@$>P=CA>o=0a>n=*>n=*A>o=0aQ>n=#>n=ף(>=[p>n=@p>n=@(>=[$>n=0q(>=[5>Ϧ=$$>n=0q$>n=0q5>Ϧ=$Q>n=#Q>n=#5>Ϧ=$>n=*>x=@.e>=9.e>x=9.e>=9>=@2ռ.e>x=9.e>x=9>=@2ռ>x=@2ռ>=@2ռU>=U>x=@2ռ>x=@2ռU>=UU>x=UU>=U F>=@+U>x=UU>x=U F>=@+ F>x=@+ F>=@+|6>=U F>x=@+ F>x=@+|6>=U|6>x=U|6>=UG>=@2ռ|6>x=U|6>x=UG>=@2ռG>x=@2ռG>=@2ռ&>=9G>x=@2ռG>x=@2ռ&>=9&>x=9&>=9G>=@&>x=9&>x=9G>=@G>x=@G>=@|6>=9vG>x=@G>x=@|6>=9v|6>x=9v|6>=9v F>=d|6>x=9v|6>x=9v F>=d F>x=d F>=dU>=9v F>x=d F>x=dU>=9vU>x=9vU>=9v>=@U>x=9vU>x=9v>=@>x=@>=@.e>=9>x=@ե>䏭="F>y=C>ܭ=@ԍF>y=Cd>/=@ >ܭ=@ԍ>ܭ=@ԍd>/=@ z>=@d>/=@ >=z>=@z>=@>=>ܭ=>=5>X=ͪ>ܭ=>ܭ=5>X=ͪե>䏭="5>X=ͪF>y=Cե>䏭="5>Ϧ=$V>b=@%>n=*V>b=@%>n=>n=*>n= ף= o>i==b{>=Y=>+t==þ>z= =$>n=@q=þ>z= =b{>=Y=$>n=@q=b{>=Y= o>i==$>n=@q=>+t==>n==þ>z= =>n==>=*=þ>z= =E>n=<>r==>n=@<>n=@<>r==|>n=`=>r==>=*=|>n=`=|>n=`=>=*=>n==E>n=n=̼>r==E>n=̼>pߦ=>r==>n=@>n=V>b=@%V>b=@%>pߦ=>n=@>n=@>pߦ=>n=@>n=@>pߦ=E>n=̼>ܭ=`<>=J<>ܭ=ٹ<>=JF=ͪ<>ܭ=ٹ<>ܭ=ٹF=ͪ=F=ͪ<>g=D==<>g=DX=/<>g=DX=/X=/=ۛ<>ܭ=`=ۛ<>=J<>ܭ=`<>x=2<.e>=9<.e>x=9<.e>=9<>=@<.e>x=9<.e>x=9<>=@<>x=@<>=@=:v<>x=@<>x=@=:vx=:v=:v< F>=dx=:vx=:v< F>=d< F>x=d< F>=d<|6>=:v< F>x=d< F>x=d<|6>=:v<|6>x=:v<|6>=:v=@<|6>x=:v<|6>x=:v=@x=@=@<&>=9x=@x=@<&>=9<&>x=9<&>=9=2<&>x=9<&>x=9=2x=2=2<|6>=Vx=2x=2<|6>=V<|6>x=V<|6>=V< F>=+<|6>x=V<|6>x=V< F>=+< F>x=+< F>=+=V< F>x=+< F>x=+=Vx=V=V<>=2x=Vx=V<>=2<>x=2<>=2<.e>=9<>x=23=0w=>+t==> =0Z=>y==> =0Z=>+t==>+t==$>n=@q=>y==>y==$>n=@q=H>y==$>n=@q= o>i==H>y==H>y== o>i==$>== o>i==>n= ף=$>== >/`e=>/`e= >x==>/`e=>x== >x==>x==>ȎY==$>==>ȎY==>U`e=П=$>==$>==>U`e=П=>x=П=>/`eП=>t<П=о>Se=>t<П=s>Ӻ<=о>Se=о>Se=s>Ӻ<=>/`e=>/`e=s>Ӻ<=>x==s>Ӻ<=>ȎY==>x== >/`e= >x== >/`e= >x== >x== >/`e=j>4`e=j>4`eP=i>wm=j>4`eP=8i>˞@B=i>wm=i>wm=8i>˞@B=a>n=X}>a(=X}>s=X}>"\=X}>4`e@Zd=~>v@=X}>4`e+=~>v@=> u=X}>4`e+=X}>a(=X}>"\=]> x`E@=]> x`E@=X}>"\=~>uJ=X}>4`e@Zd=(>%`&d=~>v@=~>v@=(>%`&d=u>~e=u>~e=(>%`&d=~>BNZ=u>~e=~>BNZ=X}>"\+=X}>"\+=~>BNZ=X}>"\=~>BNZ=~>uJ=X}>"\=Z>"\ ף=Z>4`e ף=>4`e`=X}>4`e+=> u= >4`e#=> u=u>~e=p>YPs=X}>"\+=p>YPs=u>~e=> u=p>YPs= >4`e#= >4`e#=p>YPs=͖>4`e@q=p>YPs=>"\=͖>4`e@q=͖>4`e@q=>"\=>4`e`=>4`e`=>"\=Z>"\ ף=>/`e ף=Z>4`e ף=> \ ף=Z>4`e ף=Z>"\ ף=> \ ף=>/`e ף=> \ ף=6> \`=O>\#=>/`e@q=>\@q=>/`e@q=о>Se=>\@q=>\@q=о>Se=6> \`=6> \`=о>Se=>/`e ף=">rYe=>oed=>\+=>\+=>oed=O>\#=O>\#=>oed=>/`e@q=ۨ>Onv`A=]> x`E@=ب>C=`>颽<ᓱ>櫢׼X}>"\+=X}>"\={>ң4=X}>"\=&>n={>ң4={>ң4=&>n=a> =a> =`>颽<{>ң4={>ң4=`>颽<>ѣֈ>ʗ1żV>櫢׼ᓱ><`>颽櫢׼>ѣֈd>9ET>Ѩ`>ѣֈᓱ>[<<=>EW櫢׼S>rR>ѣֈd>9ET>ѣֈS>rRX}>"\*>Ѩ`X}>"\X}>"\>Ѩ`F,>3 >ܡD>ʗ1ż!>D!>D>ʗ1ż=>EW<>ʗ1żᓱ><=>EW<>ѣֈ>Ѩ`X}>"\*8f>t;G>thϺ;>K:8f>t; b>XG>thϺ^_>B: b>X8f>t;^_>B:>; b>X;>K:>;^_>B:G>thϺ>;;>K:d>9ET*m>bnUH><@N UH><@N *m>bn>xE/e>?d>9ETUH><@N d>9ET/e>?>Ѩ`/e>?>xE>Ѩ`>Ѩ`>xEF,>3 >xE*m>bnF,>3 ۨ>Onv Aڨ>r OCt> w /AUu>v@v ה>Dnj0>Sn@j>Sn@j ה>Dnj0N> iF ה>Dnj0a>lbzN> iFN> iFa>lbzM>ɢfМa>lbzL>XN_$M>ɢfМM>ɢfМL>XN_$Ə>8hsL>XN_$9>wb@Ə>8hsƏ>8hs9>wb@5>JoH9>wb@ﴍ>uk`B5>JoH5>JoHﴍ>uk`B?>wwﴍ>uk`B%'>Nvv?>ww?>ww%'>Nvv>K@Fo%'>Nvv5>Hk>K@Fo>K@Fo5>HkJǏ>th5>Hk;>䓅`pbJǏ>thJǏ>th;>䓅`pbN>Ԝf;>䓅`pbO>$@N_N>ԜfN>ԜfO>$@N_Ւ>s hO>$@N_b>KwbՒ>s hՒ>s hb>KwbF>HJob>Kwb>bB`kF>HJoF>HJo>bB`k\>ww>bB`kUu>v@v\>ww\>wwUu>v@v>Sn@j> \ף;>Q[@]>֣\]>֣\;>Q[@>ʣPT>\*>ʣPTP>\#P>\#>ʣPT>\0q>ʣPT;>Q[@>\0qg>Se`>/`e`Z>\*>/`e`Z>\`Z>\*g>Se`>/`e`h>/`e`h>/`e<>_:e׈#>/`eXe@`>AeCE>/`e̼>=eA/`e̼>/`e/`e̼>AeC>/`e<>/`e<>AeC>_:e׈y>Mel>Xe@`>/`e@м>/`e@м#>/`e@мy>Me#>/`e@м#>/`eMey>Me#>/`e<>_:e׈>=eA5e݈/`e̼E>/`e/`e̼f>ZMeZMe/`e̼o>5e݈/`e̼~>/`e@=l>Xe@`~>/`e@=8t>/`el>Xe@`l>Xe@`8t>/`e>/`e@м8t>/`e>/`e`Z>/`e@м>/`e@м>/`e`Z>/`e`h>/`e`Zg>Se`>/`e`hf>ZMe<>Ve^/`e/`e<>Ve^<~>/`e=<~>/`e=<>Ve^<8t>/`e=>Ve^<>=eA<8t>/`e=8t>/`e=>=eA<>/`e<>oed=">rYe=>/`eh=>/`eh=">rYe=>/`e<">rYe=>/`eZ=>/`e<>/`e<>/`eZ=8t>/`e=>/`e>/`e >Ff0K>/`e >/`e`h>/`e >/`e`h>/`e`h>/`e >/`e >/`e`h>/`e>/`e`h&#>/`e>/`e>/`e&#>/`e >Ff0K> \ף]>֣\Z>"\ף]>֣\>ף \Z>"\ףZ>"\ף>ף \ش>գ [Ũ> v`8>t툽>>@ꆽ8>t툽#w>Z̅>>@ꆽ˨>gq8>t툽Ũ> v`>>@ꆽ#w>Z̅è>,}#w>Z̅>yXè>,}è>,}>yX˨>gq>yX8>t툽˨>gq>"\@Z>"\ףش>գ [X}>"\* >"\#>ѣֈ>ѣֈ >"\#ش>գ [ >"\#͖>"\0qش>գ [͖>"\0q>"\@ش>գ [>x=`h>x= A>o=0a>x= >y= A>o=0a>y= >y=A>o=0aA>o=0a>y=$>y=0q>x=>0=>y=>y=>0=$>y=0q>y=>/`e>x=>/`e>/`e>x=$>P=C>n=*>y=@м>n=*>n=>y=@м>y=@м>n=>y=<>n=>n==>y=<>y=<>n==j>3=0w=>n==>+t==j>3=0w=>y=@м>y=@м$>P=C>y=@мA>o=0a$>P=C!>l=˼!>[=y>[=@˼!>[=y>l=u>[=@˼>[=@˼ F>x=@+!>l=˼ F>x=@+|6>x=U!>l=˼|6>x=UG>x=@2ռ!>l=˼!>l=˼G>x=@2ռ!>[=yG>x=@2ռ&>x=9!>[=y!>[=y&>x=9G>x=@>x=@2ռU>x=U>[=@˼>[=@˼U>x=U F>x=@+G>x=@|6>x=9v!>[=y|6>x=9v F>x=d!>[=y!>[=y F>x=d>l=u F>x=dU>x=9v>l=uU>x=9v>x=@>l=u>l=u>x=@>[=@˼>x=@.e>x=9>[=@˼>[=@˼.e>x=9>x=@2ռz>=@v>=@ߙ>ܭ=@ԍ>ܭ=@ԍv>=@ߙե>䏭=">ܭ=ե>䏭="z>=@|>n=`=>n==>n=>n=@E>n=̼E>n=<>n=>n=@|>n=`=>n=@>n=@|>n=`=|>n=`=>n=@>n=@<>n=@E>n=<>n=@X=/<>ܭ=`<~>=r<>ܭ=`<>ܭ=ٹ<~>=r<~>=r<>ܭ=ٹ=x=V<>^=< F>x=+<>^=[=< F>x=+<>^=<>g=u[=<>g=ul=z[=x=2<|6>x=V[=[=<|6>x=V< F>x=+x=V<>x=2<>^=<>x=2<.e>x=9<>^=<.e>x=9<>x=@<>^=<>^=<>x=@<>g=u<>x=@x=:v<>g=ux=:v< F>x=d<>g=u<>g=u< F>x=dl=z< F>x=d<|6>x=:vl=z<|6>x=:vx=@l=zl=zx=@[=x=@<&>x=9[=[=<&>x=9x=2<> =0Z=>y=3=0w=j>3=0w=>y=<>y=<$>==>x=П=H>y==>x=П=>y=П=H>y==>x=@=>x=h=>y=@=>x=h=> =0Z=>y=@=>y=@=> =0Z=>y=П=> =0Z=>y==>y=П=>y=П=>y==H>y==*> ʋ<=><`k=b>C<=><`k=>$< =b>C<=b>C<=>$< =>t<П=>t<П=>$< =>t<П=>t<П=>$< =s>Ӻ<=s>Ӻ<=>$< =>ȎY==>$< =`>,]=`Ȟ=>ȎY==C>Ye==>U`e=П=>ȎY==`>,]=`Ȟ=>g=P=C>Ye==C>Ye==>g=P=>25i=`=C>Ye==>ȎY==`>,]=`Ȟ=>U`e=П=C>Ye==>x=П=C>Ye==>y=П=>x=П=>/`eП=>/`eП=о>Se=>/`eh=>/`e@=>oed=>/`e@=>/`e@=>oed=>/`e@=>/`eП=>oed=>oed=>/`eП=>/`e@q=>/`eП=о>Se=>/`e@q=>t<П=>t<П=>/`eП=>t<П=>/`eП=>/`eП=˨>,=è>z =u>~e=u>~e=è>z =~>v@=è>z =Ѩ>JsЁ=~>v@=~>v@=Ѩ>JsЁ=> u=l>+YPT=> u=Ѩ>JsЁ=> u=l>+YPT=u>~e=˨>,=u>~e=l>+YPT=Z>"\ ף=>"\=Z>ף@\=Z>ף@\=>"\={>ң4=X}>"\+={>ң4=p>YPs={>ң4=>"\=p>YPs=Z>ף@\=>ף@\=Z>"\ ף=Z>"\ ף=>ף@\=> \ ף=>ף@\=7>ף@\=> \ ף=> \ ף=7>ף@\=hh> ˣW=>/`eZ=">rYe=>\Z=">rYe=>\+=>\Z=> \ ף=hh> ˣW=6> \`=6> \`=hh> ˣW=>\@q=hh> ˣW=>ƣ0=>\@q=>\@q=>ƣ0=O>\#=O>\#=>ƣ0=>\+=43>ԣ(Ҩ>Zԣ;7>ף@\=7>ף@\=Ҩ>Zԣ;<>֣ Ҩ>Zԣ;g >ѣ@<>֣ g >ѣ@43>ԣ(<>֣ >ʣPT<>֣ ]>֣\<>֣ 43>ԣ(]>֣\Z>ף@\=ش>գ [z>uգ:z>uգ:ش>գ [>wգ(z>uգ:1>2ңP:Z>ף@\=Z>ף@\=1>2ңP:>ף@\=>ף@\=1>2ңP:ش>գ [1>2ңP:>wգ(ش>գ [>ѣֈش>գ [{>ң4=ش>գ [Z>ף@\={>ң4=hh> ˣW=7>ף@\=>ƣ0=>ƣ0=7>ף@\=>ﴣ=<>֣ >ﴣ=7>ף@\=h>ԣ@ST>ӣF;7>ף@\=h>ԣ@]>֣\7>ף@\=7>ף@\=]>֣\43>ԣ(h>ԣ@츃>գ,]>֣\]>֣\ST>ӣF;>գ,7>ף@\=ST>ӣF;]>֣\>ף@\=e>ԣ;7>ף@\=e>ԣ;N>ԣ@츶7>ף@\=7>ף@\=N>ԣ@]>֣\N>ԣ@v>ԣ(]>֣\]>֣\v>ԣ(>ף@\=v>ԣ(e>ԣ;>ף@\=z>ԣ*}>ԣ;>ף@\=}>ԣ;!R>ԣ@츰>ף@\=>ף@\=!R>ԣ@]>֣\!R>ԣ@z>ԣ*]>֣\]>֣\z>ԣ*>ף \>ף@\=>ӣF;P>ԣ@P>ԣ@>ף \>ף@\=>ף@\=>ף \z>ԣ*P>ԣ@1>գ,>ף \>ף \1>գ,ش>գ [1>գ,>ӣF;ش>գ [ش>գ [>ӣF;>ף@\=UH><@N >xEۨ>7p[E>P9}z=E>P9}zr>P9 \)R>98r>P9 \->s9V r>P9 \ۨ>7p[->s9V /e>?UH><@N ۨ>7p[>xE/e>?ۨ>7p[E>P9}z=e>(;젺r>P9 \e>(;젺>IKE>P9}z=E>P9}z=>IK>;(;E>P9}z=>;(;r>P9 \>;(;e>(;젺r>P9 \E>P9}z=qk>9;r>P9@\=>:@߇>:J r>P9 \r>P9 \߇>:J E>P9}z=߇>:J qk>9;E>P9}z=qk>9;>:@r>P9@\=r>P9@\=>:@r>P9 \r>P9@\='>:*;w6>G9H:)R>98^>Er>P9 \^>EN>=8r>P9 \r>P9 \N>=8r>P9@\=r>P9@\=N>=8'>:*;w6>G9H:'>:*;)R>98'>:*;^>E)R>98->s9V o>6E)R>98w6>G9H:)R>98>>:*;w6>G9H:>>:*;->s9V >>:*;o>6E->s9V >:@>:J ->s9V w6>G9H:>:J ->s9V >:J > 9;w6>G9H:> 9;>:@w6>G9H:w6>G9H:>:@->s9V A>r>9->s9V ۨ>7p[ۨ>7p[w6>G9H:A>r>9ۨ>7p[;>K:^_>B:^_>B:8f>t;ۨ>7p[ۨ>7p[^_>B:ݨ>3Y=8f>t;;>K:ۨ>7p[^_>B:ݨ>3Y=ۨ>7p[ۨ>7p[ݨ>3Y=w6>G9H:ݨ>3Y=r>P9@\=w6>G9H:>\*>\`Z>ʣPT>\`Z<>֣ >ʣPT@r>\`x>\`Z8t>/`e>\`Z>/`e`Z8t>/`e8t>/`e~>/`e@=@r>\`x@r>\`x~>/`e@=_>\~>/`e@=E>/`e̼_>\_>\E>/`e̼E> \̼~>/`e=<8t>/`e=q>[@y=8t>/`e=>/`eZ=q>[@y=q>[@y=>/`eZ=>\Z=q>[@y=9>|<~>/`e=<~>/`e=<9>|/`e/`e<9>|<>󸏽/`e̼E>/`e \̼E>/`e<>󸏽 \̼>iE> \̼<>֣ <>֣ E> \̼>ﴣ=>󸏽<>ﴣ=E> \̼>/`e`h>/`e`hA>o=0aA>o=0a>/`e`h>x=`h>/`e`h>/`e`h>x=`h> Ļ@м>i>̼"!>i> Ļ@м>\"!> Ļ@м>/`e@м>\"!>\"!>/`e@м>%Z 0>i@m>/`e`h>̼h>/`e`hA>o=0a>̼h>̼hA>o=0a>Ю`Y>A;@м> y=@м> Y#< 7 >y=@м>y=@м>Y#< 7 A>o=0a>Y#< 7 > <A>o=0a> <>ף; ,A>o=0aA>o=0a>ף; ,>Ю`Y>i@m>\h>/`e`h>\h>%Z`Y>/`e`h>/`e`h>%Z`Y>/`e@м>%Z`Y>#D>/`e@м>/`e@м>#D>%Z 0>ף; ,>3,2>Ю`Y>3,2>p֣ ,>Ю`Y>Ю`Y>p֣ ,>֣D>p֣ ,>q >֣D>֣D>q >Ю 0>q ># 7 >Ю 0>Ю 0># 7 >̼"!># 7 >q x>̼"!>̼"!>q x> Ļ@м#>/`e<#>#<#>.yi<#>#<#>/`e<#>.k;#>Buĺ#>w 0,U>ڶ&;#>P<аU>ڶ&;U>ڶ&;#>P<а>;@#>.xi#>##>/`e@м#>##>.j#>/`e@м#><9#>=O)#>y=< >/ɻϼ#>3#>-Nxi#>-Nxi#>3> f;ϼ#>-Nxi#>w 08 >/ɻϼ#>w 08#>Bu >/ɻϼ >/ɻϼ#>Bu#>/`e@м#>Bu#>8#>/`e@м#>/`e@м#>8#>.xiZ>O_;L!;#>w 0@9<#>-Nyiڶ&;#>w 0,#>w 0,#>-Nj#>-Nj#>XԻ##>/`e<#>/`e@м#>.k;#>/`e@м#>.j#>.k;#>.k;#>.j#>,;#>.j#>,#>,;#>,;#>,#>Bu:#>,#>Buĺ#>Bu:#>Bu:#>Buĺ#>w 0,;#>BuĺU>ڶ&;#>w 0,;#>w 0,;U>ڶ&;#>-Nk;U>ڶ&;Z>O_;L!;#>-Nk;#>-Nk;Z>O_;L!;#>XԻ#<#>XԻ#O_;L!;#>-Nyi<#>P<а#><@>;@#><@#>P<f>;@>;@#>P<fZ>O_;L!;#>P<f#><9Z>O_;L!;Z>O_;L!;#><9#>w 0@9<#><9#>y=<#>w 0@9<#>w 0@9<#>y=<#>Bu<#>y=<#>/`e<#>Bu<#>Bu<#>/`e<#>@9<#>/`e<#>.yi<#>@9<#>=O)#>E=9#>y=<#>E=9#>]=f#>y=<#>y=<#>]=f#>y=@м#>]=f#>p{#=@#>y=@м#>y=@м#>p{#=@#>]=а#>XԻ##>-Nxi#>-Nxi> f;ϼ#> f;ϼ#>=ϼ> f;ϼ#>y=@м#>=ϼ#>=ϼ#>y=@м#>E=MǼ#>y=@м#>]=а#>E=MǼ>/`eh={>K<=9> /`eh=>/`e<{>K<={>K<=>/`e<><=r> ?=9=> F=p=> =0Z=> =0Z=> F=p=>y=<> F=p=]>b@=F=>y=<>y=<]>b@=F=>h+==>_=@܀=>h+==#p>=,=>/`e<>y=<><=><=>y=<>_=@܀=>y=<>h+==>_=@܀=>L!=@=>0 =3=#p>=,=>0 =3=B>j==#p>=,=#p>=,=B>j==>_=@܀=9> }2/`eh=->}2<`k=>/`eh=>/`eh=><`k=>oed=><`k=>Coed=>oed=>C/`eh=}>%z<>=eAz<>=eA<>Ve^z<>Ve^ZMezzZMeayayZMe%zьZMe5e݈%zь%zь5e݈<}>%z5e݈<>=eA<}>%z%z@y>Mel1>z@y>Me>_:e׈l1>z@l1>z@>_:e׈b>\ym>_:e׈>AeCb>\ymb>\ym>AeC>%z>AeCl>Xe@`>%z>%zl>Xe@`T>%z@l>Xe@`y>MeT>%z@>y= >/`e >y=>/`e >/`e>y=>x= >/`e >y= >/`e >/`e >y= >/`e >x= >/`e`h>x= >x=`h>/`e`h#>y=@м>y=@м#>y=<>y=@м>y=<#>y=l=˼>Hb=˼>[=@˼>Hb=˼!>Hb=@˼!>l=˼!>l=˼!>Hb=@˼>[=@˼!>Hb=@˼>Hb=˼>[=@˼>l=u!>[=y>Hb=y>Hb=y!>Hb=u!>[=y!>Hb=u>l=u!>[=y!>Hb=u>Hb=y>l=uv>=@ߙz>=@#>=@4z>=@ե>䏭="#>=@4#>=@4ե>䏭="o>H=ե>䏭="v>=@ߙo>H=~>=r=<>M==X=/<>M=<>M=X=/<~>=r<>g=u<>Hb=zl=zl=zHb=u<>Hb=z<>g=uHb=ul=z<>g=u<>Hb=zHb=u<>Hb=[=<>^=[=Hb=<>Hb=[=<>^=Hb=<>^=<>Hb=Hb=<+>xi=h=Z>UVA=f=r> ?=9=>x=h=>xi=h=> =0Z=>xi=h=+>xi=h=> =0Z=+>xi=h=r> ?=9=> =0Z=>xi=h=>x=h=>25i=`=>x=h=>x=@=>25i=`=C>Ye==>25i=`=>y=@=>25i=`=>x=@=>y=@=>y=@=>y=П=C>Ye==*> ʋ<=b>C<=>/`e@=b>C<=>/`e@=>/`e@=>/`e@=b>C<=>/`eП=>/`eП=b>C<=>t<П=Z>UVA=f=+>xi=h=>g=P= >"= k=`>,]=`Ȟ=>8> =i=>8> =i=`>,]=`Ȟ=+><=`>,]=`Ȟ=>$< =+><=+><=>$< =->}2}2$< =><`k= >"= k=+>֏1==`>,]=`Ȟ=+>֏1==Z>UVA=f=`>,]=`Ȟ=`>,]=`Ȟ=Z>UVA=f=>g=P=>C<`k=*> ʋ<=>25i=`=>g=P=>xi=h=>g=P=+>xi=h=>xi=h=>/`eh=>C/`e@=>C ʋ<=>/`e@=è>z =Iب>Zp̃=Ѩ>JsЁ=>\Z=>\+=>ﴣ=>\+=>ƣ0=>ﴣ=o>6E>>:*;z>ԣ*z>ԣ*>>:*;}>ԣ;>>:*;)R>98}>ԣ;}>ԣ;)R>98!R>ԣ@)R>98o>6E!R>ԣ@!R>ԣ@o>6Ez>ԣ*e>(;젺>;(;43>ԣ(43>ԣ(>;(;Ҩ>Zԣ;>;(;>IKҨ>Zԣ;Ҩ>Zԣ;>IKg >ѣ@g >ѣ@츯>IK43>ԣ(>IKe>(;젺43>ԣ(>wգ(A>r>9z>uգ:A>r>9w6>G9H:z>uգ:z>uգ:w6>G9H:1>2ңP:w6>G9H:->s9V 1>2ңP:1>2ңP:->s9V >wգ(->s9V A>r>9>wգ(^>E'>:*;v>ԣ(v>ԣ('>:*;e>ԣ;'>:*;N>=8e>ԣ;e>ԣ;N>=8N>ԣ@N>=8^>EN>ԣ@N>ԣ@^>Ev>ԣ(1>գ,>:@>ӣF;>:@> 9;>ӣF;>ӣF;> 9;P>ԣ@> 9;>:J P>ԣ@P>ԣ@츍>:J 1>գ,>:J >:@1>գ,ST>ӣF;>:@򸃃>գ,>:@qk>9;ST>ӣF;h>ԣ@qk>9;ST>ӣF;qk>9;߇>:J h>ԣ@h>ԣ@߇>:J >գ,߇>:J >:@򸃃>գ,>F r>P9 \G%>Fr>P9 \E>P9}zG%>FG%>F>ŖG%>F=><4>F= >什̼&>4ϺG%>FE>P9}z=/>)&E>P9}zG%>F&>4Ϻ>Ŗ4>< >什F=G%>F= >什P9}z= >什<7n>iP9}z=E>P9}z=7n>i'F=>Ŗ><><>Ŗ&>ߌ<&>ߌ<>Ŗ7>5⃼q>'P9}z=/>)&o>!büE>P9}zE>P9}zo>!büG%>Fo>!bü >什̼G%>F>Li >ȇ< >什ui >ȇ< >什u< >什u >什u >什u<7>5⃼ >什u<&>ߌ<7>5⃼i >ȇ<>LE>P9}z=E>P9}z=>L/>)&r>P9@\=>F@=E>P9}z=>F@=G%>F=E>P9}z=>F@=r>P9@\=pۨ>獗=pۨ>獗=r>P9@\=ݨ>3Y=ۨ>7p[Zܨ>֒=ۨ>0@֒ۨ>7p[ݨ>3Y=Zܨ>֒=ۨ>7p[Ө>Ě>F ۨ>7p[r>P9 \>F @r>\`x<>֣ >\`ZE> \̼>i_>\_>\>i@r>\`x>i<>֣ @r>\`xq>[@y=>ﴣ=9>|<>ﴣ=>󸏽<9>|<>\Z=>ﴣ=q>[@y=> Ļ@м >/ɻϼ>/`e@м >/ɻϼ#>/`e@м>/`e@м >/ɻϼ> Ļ@м>q xl+>p xl+>n֣|˼ >/ɻϼ >/ɻϼl+>n֣|˼#>3l+>n֣|˼l+>43#>3l+>43l+>ף;|˼#>3#>3l+>ף;|˼> f;ϼl+>ף;|˼l+> f;ϼ> f;ϼl+> A;@м>A;@мl+>  Y#< 7 l+> Z#< 7 >Y#< 7 l+>Z#< 7 l+> <>Y#< 7 >Y#< 7 l+> <> <l+> <l+>ף; ,> <> <l+>ף; ,>ף; ,l+>ף; ,l+>43,2>ף; ,>ף; ,l+>43,2>3,2l+>43,2l+>n֣ ,>3,2>3,2l+>n֣ ,>p֣ , >/ɻϼ>q xl+>p x>q x># 7 l+>p xl+>p x># 7 l+># 7 ># 7 >q l+># 7 l+># 7 >q l+>p >q >p֣ ,l+>p l+>p >p֣ ,l+>n֣ ,#>y=@м> f;ϼ>y=@м> f;ϼ>A;@м>y=@м>y=@м>A;@м>y=@м>il+>̼"!>̼"!l+>̼"!l+>Ю 0>̼"!>̼"!l+>Ю 0>Ю 0l+>Ю 0l+>֣D>Ю 0>Ю 0l+>֣D>֣D>֣Dl+>֣D>Ю`Yl+>֣Dl+>Ю`Y>Ю`Yl+>Ю`Yl+>̼h>Ю`Y>Ю`Yl+>̼h>̼hl+>̼hl+>i@m>̼h>̼hl+>i@m>i@ml+>i@ml+>\h>i@m>i@ml+>\h>\hl+>\hl+>%Z`Y>\h>\hl+>%Z`Y>%Z`Y>%Z`Yl+>%Z`Y>#Dl+>%Z`Yl+>#D>#Dl+>#Dl+>%Z 0>#D>#Dl+>%Z 0>%Z 0l+>%Z 0l+>\"!>%Z 0>%Z 0l+>\"!>\"!l+>\"!l+>g>\"!>\"!l+>g>i>il+>gl+>̼"!#>@9Au<#>BuAuv 0@9<#>Bu<#>Buv 0@9<#>w 0@9v 0@9,Nyi<#>w 0@9<#>w 0@9,Nyi<#>-Nyi,NyiWԻ#<#>-Nyi<#>XԻ#WԻ#<#>-Nyi<#>XԻ#,Nk;l+>WԻ#<#>-Nk;l+>,Nk;#>XԻ#<#>-Nk;l+>v 0,;l+>,Nk;#>w 0,;l+>v 0,;#>-Nk;#>w 0,;l+>Au:l+>v 0,;#>Bu:l+>Au:#>w 0,;#>Bu:l+>,;l+>Au:#>,;l+>,;#>Bu:#>,;l+>.k;l+>,;#>.k;l+>.k;#>,;#>.k;l+>#.k;#>##<#>.k;#>#.yi#<#>#.yi<#>.yi<#>.yi@9.yi<#>.yi@9<#>@9@9Au<#>@9<#>XԻ#l+>,Nxi#>-Nxil+>,Nxil+>v 08#>-Nxi#>-Nxil+>v 08#>w 08l+>v 08l+>Au#>w 08#>w 08l+>Au#>Bul+>Aul+>8#>Bu#>Bul+>8#>8l+>8l+>.xi#>8#>8l+>.xi#>.xil+>.xil+>##>.xi#>.xil+>##>#l+>#l+>.j#>##>#l+>.j#>.jl+>.jl+>,#>.j#>.jl+>,#>,l+>,l+>Auĺ#>,#>,l+>Auĺ#>Buĺl+>Auĺl+>v 0,#>Buĺ#>w 0,l+>v 0,#>Buĺ#>w 0,l+>=Njl+>v 0,#>w 0,l+>=Nj#>-Nj#>-Njl+>=Nj#>XԻ##>XԻ#l+>WԻ#l+>=Nj#>XԻ#l+>WԻ#l+>,Nxi>y=<>/`e<>y=<>/`e<#>/`e<>y=<>y=<#>/`e<#>y=<#>]=аl+>E=MǼ#>E=MǼl+>E=MǼl+>=ϼ#>E=MǼ#>E=MǼl+>=ϼ#>=ϼl+>=ϼl+>=ϼ#>=ϼl+>P<а#>P<а#>P<а#>P<аl+>P<а#><@l+>P<аl+><@#><@l+><@l+>P<f#><@#><@l+>P<f#>P<fl+>P<fl+><9#>P<f#>P<fl+><9#><9l+><9l+>=O)#><9#><9l+>=O)#>=O)l+>=O)l+>E=9#>=O)#>=O)l+>E=9#>E=9l+>E=9l+>]=f#>E=9#>E=9l+>]=f#>]=fl+>]=fl+>p{#=@#>]=f#>]=fl+>p{#=@#>p{#=@l+>p{#=@l+>]=а#>p{#=@#>p{#=@l+>]=а#>]=а#>]=аl+>]=аl+>E=MǼZ>O_;L!;c>P:~ U>ڶ&;Z>O_;L!;>kp;7;c>P:~ Z>O_;L!;>kp;7;>;@>;@4><;W>kp;7;U>ڶ&;4><;W>;@U>ڶ&;c>P:~ 4><;W->}2 >]<=M>>]<=9> g K<=E#>ggK<=#>Ԉ<M={>K<=><=#>Ԉ<M=#>Ԉ<M=><=%>,= N=><=>_=@܀=%>,= N=>_=@܀=B>j==%>,= N=%>,= N=B>j==h>G]==B>j==>0 =3=h>G]==>0 =3=#>_==h>G]==->}2>]<=+><=M>>]<=#>_==+><=+><=#>_==>8> =i=#>_==>0 =3=>8> =i=>8> =i=>0 =3= >"= k=>0 =3=>L!=@= >"= k=]$>-=0=>L!=@= >"= k=>L!=@=#p>=,=2>a=Z=#p>=,=>h+==2>a=Z=>,=~=>h+==2>a=Z=>h+==]>b@=F=>,=~=#>j@=W=]>b@=F=>,=~=#>j@=W=> F=p=]>b@=F=f">E=Pq=> F=p=#>j@=W=f">E=Pq=r> ?=9=> F=p= >"= k=]$>-=0=+>֏1==]$>-=0=r> ?=9=+>֏1==+>֏1==r> ?=9=Z>UVA=f=k>z<>!z<}>%z<>!z<>z[<}>%z<>z[<>Py(u<}>%z<}>%z<>Py(u%zь<>Py(u| z%zь%zь| zay| zzy ayayzy zzy 0y@z0y@<>!zz<>!z@󅼊>zRl1>z@l1>z@>zRT>%z@>zR>PyͼT>%z@T>%z@>Pyͼ>%z>Pyͼs4>| z>%zs4>| zX}>y֣>%z>%zX}>y֣b>\ymX}>y֣+8>y@cb>\ymb>\ym+8>y@cl1>z@+8>y@c >yul1>z@ >yu>!z@l1>z@ݰ>_>>@ꆽ>@ぽ>>@ꆽè>,}>@ぽ>@ぽè>,}>̓x+è>,}˨>gq>̓x+>̓x+˨>gq>ob˨>gqŨ> v`>ob>obŨ> v`ݰ>_Ũ> v`>>@ꆽݰ>_˨>,=l>+YPT=ݰ>@=ݰ>@=l>+YPT=>t=>t=l>+YPT=> }s=l>+YPT=Ѩ>JsЁ=> }s=Ѩ>JsЁ=Iب>Zp̃=> }s=> }s=Iب>Zp̃=>q`=Iب>Zp̃=è>z =>q`=>q`=è>z =ݰ>@=è>z =˨>,=ݰ>@=G%>F>* G%>*G%>F>F >* >!z0y@<4><4>0y@< >什< >什0y@<7n>i0y@zy <7n>i<7n>izy ''zy zy | z| z<>Py(uȇ<>Py(u< >什u<>z[<&>ߌ<>Py(u<>Py(u<&>ߌ< >什u<4><><>!z<>!z<><>z[<><&>ߌ<>z[<>!z@󅼴 >yu7>5⃼7>5⃼ >yu >什u >yu+8>y@c >什u >什u+8>y@c>L+8>y@cX}>y֣>L>LX}>y֣/>)&X}>y֣s4>| z/>)&/>)&s4>| zo>!büs4>| z>Pyͼo>!büo>!bü>Pyͼ >什̼>zR&>4Ϻ>Pyͼ>Pyͼ&>4Ϻ >什̼7>5⃼>Ŗ>!z@>!z@>Ŗ>zR>Ŗ&>4Ϻ>zRG%>F=G%>*=G%>FG%>FG%>*G%>*=>*@=G%>*=>F@=G%>*=G%>F=>F@=ۨ>֒ =ۨ>*@=ۨ>* =ۨ>֒ =pۨ>獗=ۨ>*@=pۨ>獗=ۨ>*@=>F@=ۨ>*@=>*@=>F@=?Ȧ> `B=ۨ>0@֒Zܨ>֒=?Ȧ> `B=r> =ۨ>0@֒ͨ> `,N=r> =?Ȧ> `B=r> =w> .<>t&&<5> t>t&&<>* ^Dۨ>0@֒>t&&<5> tۨ>0@֒r> =>t&&<>t&&<> *;> 4ۂ> 耼> 4ߛ> Ŭz> uۂ> 耼)> @ּz> u> 4ۂ> 耼>* ^D> 4z> u>* ^D>t&&<> 4$J>8c6>=ϚS^>.{$J>ZZ_>z06>=ϚSۨ>0@֒>z0$J>ZZ_ۨ>0@֒ :>l n6>z05> t :>l n6ۨ>0@֒>* ^D :>l n65> t>* ^D>w C! :>l n6z> u>w C!>* ^Dz> uL>@>w C!)> @ּL>@z> u$J>8c)> @ּۂ> 耼$J>8cL>@)> @ּ$J>8c^>.{L>@$J>8c@<> *;>t&&<$J>u4> *;$J>8c@<$J>u4> 4> *;$J>8c> 4$J>u4$J>8cߛ> Ŭ> 4ۂ> 耼ߛ> Ŭ$J>8c$J>8c@ F=.>U=>t&& F=$J>8c@ . F=>t&&<->Ǭ=w> . =z'> F=w> .<->Ǭ=R>/2=->Ǭ=r> =ͨ> `,N=R>/2=r> =R>/2=ͨ> `,N=?Ȧ> `B=R>/2=Zܨ>֒=3ڝ>ѝ u5=?Ȧ> `B=Zܨ>֒=R>/2=$J>ZZ _=/>q h,=3ڝ>ѝ u5=$J>ZZ _=.>U=/>q h,=!>i^~ w=fE>F7q {=$J>ZZ _=$J>ZZ _=9>Ђ@=!>i^~ w=$J>ZZ _=Zܨ>֒=9>Ђ@=3ڝ>ѝ u5=Zܨ>֒=$J>ZZ _=Zܨ>֒=֟>A*K=9>Ђ@=ݨ>3Y=֟>A*K=Zܨ>֒=pۨ>獗=֟>A*K=ݨ>3Y=ۨ>֒ =֟>A*K=pۨ>獗=@9>t%=֟>A*K=ۨ>֒ =@9>t%=sr>s=֟>A*K=$J>O@=sr>s=@9>t%=]>i)=sr>s=$J>O@=$J>O@=fE>F7q {=]>i)=>s|ּ=XH>q0&=$J>! ן=9ߛ>╪ =XH>q0&=>s|ּ=$J>! ן=z>Gp#=>s|ּ=$J>O@=z>Gp#=$J>! ן=$J>O@=>^D =z>Gp#=@9>t%=>^D =$J>O@=XH>q0&=ʛ>G3 =$J>; ɭ=XH>q0&=9ߛ>╪ =ʛ>G3 =$J><`Ħ= #> 2< =*>< =$J>; ɭ= #> 2< =$J><`Ħ=$J>; ɭ=ʛ>G3 = #> 2< =>A3= =$J><`Ħ=*>< =>A3= =$J>.=–=$J><`Ħ= L>==7= =$J>.=–=>A3= =$J> n=@>}=f>q= =ި>9=d=$J>.=–=f>q= =$J> n=@>}=$J>.=–= L>==7= =f>q= =$J> n=@>}={> =m=$J>q=@Q?=>jZ=@B=$J> n=@>}=ި>9=d=>jZ=@B={> =m=$J> n=@>}=$J>q=@Q?=x>D=.=p> =+={> =m=x>D=.=$J>q=@Q?=Λ>=;$J>=(< > =@8<$J>=(<,> == > =@8<$J>q=@Q?=,> ==$J>=(<$J>q=@Q?=p> =+=,> ==Λ>=;L> =$J>-=!L> =$J>-=!ǜ> =X$J>-=!$J>='ǜ> =Xǜ> =X$J>='?|>2#=ɠ>-=.p> =+$J>q=Q?p> =+?|>2#=$J>q=Q?$J>q=Q??|>2#=$J>='ߨ>G`==[V> = h$J> n=>}$J> n=>}[V> = h$J>q=Q?$J>q=Q?[V> = hɠ>-=.8>t=$5֨>g=P$J> n=>}ߨ>G`==$J> n=>}5֨>g=P>췀<0)>< $J><@Ħ$J><@Ħ)>< $J>.=)>< z>u= $J>.=z>u= >D=0$J>.=$J>.= >D=0$J> n=>} >D=08>t=$$J> n=>}$J><@ĦI>+06`>췀<0>췀<0I>+06`ʛ>G3 $J>!q`o*>R #>2 $J>!q`o #>2 I>+06` #>2 ʛ>G3 I>+06`$J>!q`o$J>! ן*>R *>R $J>! ן>3 >qP- L>,=7 $J>O $J>O L>,=7 $J>! ן L>,=7 >3 $J>! ן$J>O #8>n`}<>&0i@u$J>O <>&0i@u>Lpq$J>O >Lpq>qP->qP->Lpq>|>qP->|ۨ>֒ Ө>Ě>|ۨ>֒ Ө>Ě>gچ>|ۨ>7p[>gچӨ>Ěۨ>0@֒>gچۨ>7p[ۨ>0@֒ >rl x>gچ$J>ZZ_ >rl xۨ>0@֒$J>ZZ_#8>n`} >rl xӨ>Ě>* >F >* ۨ>* Ө>ĚӨ>Ěۨ>* ۨ>* ۨ>* ۨ>֒ Ө>Ě1>}p2L>XN_$=N>wy@̔L>XN_$a>lbz=N>wy@̔=N>wy@̔a>lbzj>}p2a>lbz ה>Dnj0j>}p2j>}p2 ה>Dnj0>|Ҏ ה>Dnj0Uu>v@v>|Ҏ>|ҎUu>v@v>ووUu>v@v>bB`k>وو>وو>bB`k>Ҏp>bB`kb>Kwb>Ҏp>Ҏpb>Kwbj>z2}b>KwbO>$@N_j>z2}j>z2}O>$@N_=N>=̔`yO>$@N_;>䓅`pb=N>=̔`y=N>=̔`y;>䓅`pb1>z2};>䓅`pb5>Hk1>z2}1>z2}5>Hkĥ>Ҏp5>Hk%'>Nvvĥ>Ҏpĥ>Ҏp%'>Nvv>وو%'>Nvvﴍ>uk`B>وو>ووﴍ>uk`Bĥ>|Ҏﴍ>uk`B9>wb@ĥ>|Ҏĥ>|Ҏ9>wb@1>}p29>wb@L>XN_$1>}p2l+>*l+>%Z`Yk+>`el+>t=f+>xi=`t=+>[=@Ka=l+>t==f+>xi=`t=l+>t=l+>xi==f+>xi=`t=l+>t==+>$<@Ja=l+>t=+>[=@Ka=l+>CS<X8+>$<@Ja=+>9;u;0>S<X8l+>CCC<=+>9;u;l+>p{#=@l+>]=fl+>t=l+>t=l+>]=fl+>E=9l+>,Nxil+><9l+>=O)l+><9l+>P<fl+>,Nxil+>,Nxil+>P<fl+>P<аl+>t=l+>]=аl+>p{#=@l+>P<fl+><@l+>P<аl+>P<аl+>t=l+>=ϼl+>t=l+>=ϼl+>E=MǼl+>t=l+>t=l+>E=MǼl+>]=аl+>ף;|˼l+>43l+>,Nxil+>P<аl+>t=l+>  t=l+>Z#< 7 l+>t=l+> <l+>Z#< 7 l+>t=Хl+>43,2l+>t=l+>43,2l+>ף; ,l+>t=l+>t=l+>ף; ,l+> <l+># 7 l+>p l+>t=Хl+>p l+>n֣ ,l+>t=Хl+>t=Хl+>n֣ ,l+>43,2l+>n֣|˼l+>p xl+>t=Хl+>t=Хl+>p xl+># 7 l+>̼"!l+>gl+>*l+>Ю`Yl+>֣Dl+>t=Хl+>֣Dl+>Ю 0l+>t=Хl+>%Z`Yl+>\hk+>`el+>\hl+>i@mk+>`ek+>`el+>i@ml+>t=Хl+>i@ml+>̼hl+>t=Хl+>t=Хl+>̼hl+>Ю`Yl+>gl+>\"!l+>*l+>\"!l+>%Z 0l+>*l+>%Z 0l+>#Dl+>*l+>*l+>#Dl+>%Z`Yl+>=Nj+>:f4l+>,Nk;l+>8l+>Aul+>t=Хl+>Aul+>,Nxil+>t=Хl+>t=Хl+>,Nxil+>n֣|˼l+>,Nxil+>43l+>n֣|˼l+>Aul+>v 08l+>,Nxi+>:f4l+>WԻ#l+>,Nxil+>=Njl+>WԻ#+>:f4l+>.xil+>*l+>#l+>*l+>.jl+>#l+>,Nk;l+>v 0,l+>=Njl+>Au:l+>v 0,l+>,Nk;l+>v 0,l+>Auĺl+>Au:l+>Au:l+>Auĺl+>* =l+>Auĺl+>,l+>* =l+>* =l+>,l+>.jl+>,Nk;l+>C<=l+>WԻ#<-> 9;l+>C<=l+>,Nk;-> 9;+>9;u;l+>C<=l+>* =l+>C<=l+>/`e=l+>* =l+>.yiC<=l+>#.yi* =l+>C<=l+>,NyiWԻ#,Nyiv 0@9C<=l+>v 0@9AuC<=l+>C<=l+>@9Au.yi@9C<=l+>* =l+>.k;l+>#* =l+>,;l+>.k;l+>Au:l+>,;l+>* =l+>,Nk;l+>v 0,;l+>Au:+>:f4-> 9;l+>,Nk;l+>,Nxi0>S<X8h->p;r+>$<@Ja=0>S<X8l+>,Nxil+>E=9l+>=O)l+>t=l+>t=l+>,Nxil+>=O)l+>t=廪+>$<@Ja=l+>,Nxil+> ף;|˼l+>P<аl+>ף;|˼l+>,Nxil+>P<аh->p;r+>:f4l+>,Nxil+>Ю 0l+>̼"!l+>t=Хl+>̼"!l+>*l+>t=Хl+>t=Хl+>*l+>8l+>*l+>.xil+>8l+>.jl+>*l+>* =4><;W>ct;>kp;7;>kp;7;k>9:c>P:~ >kp;7;k>@2H;r;k>9:#>xi= ף=f">E=Pq=>">^i=o=r> ?=9=f">E=Pq=#>xi= ף=&">Z=@`a=>,=~= !>>j@=W=>,=~=&">Z=@`a=>,=~=%>,= N= !>>,=~=%>,= N=h>G]==>">^i=o=#>j@=W=&">Z=@`a=f">E=Pq=#>j@=W=>">^i=o=#>_==>L!=@=]$>-=0=h>G]==>L!=@=#>_==#>xi= ף=]$>-=0=r> ?=9=#>xi= ף=#>_==]$>-=0=#>C< ף=#>_==#>xi= ף=#>C< ף=M>>]<=#>_==h>G]==2>a=Z=>L!=@=>,=~=2>a=Z=h>G]==#>C< ף=E#>g>]<=G#>< o=E#>gC< ף=#>Ԉ<M=E#>g< o= !>>Ԉ<M=G#>< o=%>,= N=#>Ԉ<M= !>>Ьićzä>3n`|>ob>obzä>3n`|>̓x+zä>3n`|ཤ>hw>̓x+>̓x+ཤ>hw>@ぽཤ>hw>P>@ぽ>@ぽ>Pݰ>_>P9>;ݰ>_9>;>IwFݰ>_ݰ>_>IwF>ob>IwFX>Ьić>ob\>=o>H=򝼠>/=o>H=v>=@ߙ>/=v>=@ߙ#>=@4>/=>/=#>=@4\>=#>=@4o>H=\>=>/=$<>M=<~>=r<+i>=<>M=<>/=$<+i>=<>M=<>/=$<>M=<~>=r<>/=$<&>vw=¤>k =>q`=¤>k =Qܤ>*iL=>q`=>q`=Qܤ>*iL=> }s=Qܤ>*iL=>v=> }s=> }s=>v=>t=>t=J>T.=>v=ݰ>@=J>T.=>t=ݰ>@=>pʂ=J>T.=ݰ>@=¤>V Gz=>pʂ=ݰ>@=&>vw=¤>V Gz=ݰ>@=&>vw=>q`=ۨ>* ۨ>*  >* ۨ>* >*  >* >* >* l+>*>* G%>*l+>*G%>*G%>*=l+>*>*@=ۨ>* =ۨ>*@=>*@= >* =ۨ>* =>*@= >* =G%>*= >* =l+>* =G%>*=l+>* =l+>*G%>*=@9>t%=ۨ>֒ =ۨ>* =ۨ>5`e =ۨ>* = >/`e =ۨ>5`e =@9>t%=ۨ>* =ۨ>v= =@9>t%=ۨ>5`e =>^D =@9>t%=ۨ>v= =ۨ>v= =z>Gp#=>^D =>s|ּ=z>Gp#=ۨ>v= =ۨ>v= =9ߛ>╪ =>s|ּ=ۨ>v= =ʛ>G3 =9ߛ>╪ = #> 2< =ʛ>G3 =ۨ>v= =ۨ>v= =*>< = #> 2< =>A3= =*>< =ۨ>v= =ۨ>v= = L>==7= =>A3= =f>q= = L>==7= =ۨ>v= =ۨ>v= =ި>9=d=f>q= =ۨ>v= = >t= =ި>9=d= >x= = >t= =ۨ>v= = >x= = >Uae!= >t= = >/`e = >Uae!= >x= = >/`e = >* = >Uae!=ۨ>* = >* = >/`e =#8>n`}zä>3n`|<>&0i@uzä>3n`|X>Ьić<>&0i@u<>&0i@uX>Ьić>Lpq>|>Lpq>IwF>IwF>LpqX>Ьić>gچ>|9>;9>;>|>IwF9>;>P>gچཤ>hw >rl x>P>gچ >rl x>P#8>n`} >rl xzä>3n`|zä>3n`| >rl xཤ>hw.>U=$J>`,=$J>+<$J>`,=fE>F7q {=$J>1Js`Js=$J>`,=$J>ZZ _=fE>F7q {=.>U=$J>ZZ _=$J>`,=XH>q0&=$J>&,=$J>! ן=$J>&,$J>! ן$J>+$J>! ן$J>!q`o$J>+$J>+$J>!q`oI>+06`I>+06`$J><@Ħ$J><+$J><+$J><@Ħ$J>>,=$J><@Ħ$J>.=$J>>,=$J>>,=$J>.=$J>JJs= Js$J>.=$J> n=>}$J>JJs= Js$J>JJs= Js$J> n=>}$J>= ,$J> n=>}$J>q=Q?$J>= ,$J>= ,$J>q=Q?$J>+=#8>n`}$J> ,$J>1Js Js#8>n`}$J>ZZ_$J> ,$J>&,=$J>O@=$J>! ן=$J>&,=fE>F7q {=$J>O@=$J>1Js`Js=fE>F7q {=$J>&,=$J>q=Q?$J>='$J>+=$J>='$J>-=!$J>+=$J>+=$J>-=!$J>8=4$J>-=!Λ>=;$J>8=4$J>+=<Λ>=;$J>8=4$J>+=<$J>=(<Λ>=;$J>=`,=$J>=(<$J>+=<$J>=`,=$J>q=@Q?=$J>=(<$J>JJs=`Js=$J>q=@Q?=$J>=`,=$J>JJs=`Js=$J> n=@>}=$J>q=@Q?=$J>>,==$J> n=@>}=$J>JJs=`Js=$J>>,==$J>.=–=$J> n=@>}=$J><+=$J>.=–=$J>>,==$J><+=$J><`Ħ=$J>.=–=$J>LG3@=$J><`Ħ=$J><+=$J>LG3@=$J>; ɭ=$J><`Ħ=XH>q0&=$J>; ɭ=$J>LG3@=$J>+<$J>8c@<.>U=$J>,4$J>8c@<$J>+<$J>,4$J>u4$J>8c@<$J>+$J>u4$J>,4$J>+$J>8c$J>u4$J>+6>=ϚS$J>8c$J> ,6>=ϚS$J>+$J>ZZ_6>=ϚS$J> ,$J>1Js Js#8>n`}$J>&,#8>n`}$J>O $J>&,$J>&,$J>O $J>! ן>z0>`6>=ϚS>z0,>;u1>`¤>ףE6 :>l n6ַ>k1,>;u1 :>l n6¤>ףE6,>;u1>z0 :>l n6ַ>k1 :>l n6>w C!ַ>k1>w C!觤>,z$觤>,z$>w C!>}>}L>@ľ>z>w C!L>@>}ľ>zL>@^>.{>`^>.{6>=ϚSľ>z^>.{>`.>U=V>Yj@=¤>ۛ=z'> F=V>Yj@=.>U=z'> F=¤>r=V>Yj@=¤>r=->Ǭ=y>5 7=¤>r=z'> F=->Ǭ=R>/2=>q&1=y>5 7=y>5 7=->Ǭ=R>/2=>H 6=R>/2=3ڝ>ѝ u5=>q&1=R>/2=>H 6=>H 6=/>q h,=M>a(=>H 6=3ڝ>ѝ u5=/>q h,=M>a(=.>U=¤>ۛ=M>a(=/>q h,=.>U=fE>F7q {=&>vw=¤>k =!>i^~ w=&>vw=fE>F7q {=!>i^~ w=¤>V Gz=&>vw=9>Ђ@=¤>V Gz=!>i^~ w=¤>V Gz=9>Ђ@=>pʂ=>pʂ=֟>A*K=J>T.=9>Ђ@=֟>A*K=>pʂ=֟>A*K=>v=J>T.=sr>s=>v=֟>A*K=sr>s=Qܤ>*iL=>v=sr>s=]>i)=Qܤ>*iL=¤>k =]>i)=fE>F7q {=¤>k =]>i)=Qܤ>*iL=>qP-ۨ>֒ ۨ>* >* >p^e >x= >x= >p^e >t= >x= >/`e >* >/`e ۨ>5`e >* >* ۨ>5`e ۨ>* ۨ>* ۨ>5`e >qP->qP-ۨ>5`e L>,=7 ۨ>5`e ۨ>v= L>,=7 L>,=7 ۨ>v= >3 >t= 5֨>g=P >x= 5֨>g=P8>t=$ >x= >x= 8>t=$ۨ>v= ۨ>v= 8>t=$ >D=0ۨ>v= *>R >3 >췀<0ۨ>v= )>< #>2 *>R ʛ>G3 *>R ۨ>v= ʛ>G3 ۨ>v= >췀<0ʛ>G3 )>< ۨ>v= z>u= z>u= ۨ>v= >D=01>}p2j>z2}=N>=̔`yj>z2}1>}p2>Ҏp1>}p2=N>wy@̔>Ҏp>Ҏp=N>wy@̔>وو=N>wy@̔j>}p2>وو>ووj>}p2>|Ҏ>ووĥ>|Ҏĥ>Ҏpĥ>|Ҏ1>}p2ĥ>Ҏpĥ>Ҏp1>}p21>z2}1>}p2=N>=̔`y1>z2}k>9:-> 9;c>P:~ k>@2H;r;-> 9;k>9:k>@2H;r;+>9;u;-> 9;>kp;7;+>9;u;k>@2H;r;>kp;7;0>S<X8+>9;u;>ct;0>S<X8>kp;7;>ct;h->p;r0>S<X84><;Wh->p;r>ct;4><;W+>:f4h->p;rc>P:~ +>:f44><;Wc>P:~ -> 9;+>:f4k+>`e >p^el+>* >p^e >* l+>* >* =l+>/`e= >Uae!= >* =l+>* =l+>/`e= >Uae!=l+>/`e=l+>C<=#>C< ף= >Uae!=l+>C<=#>xi= ף= >Uae!=#>C< ף=#>xi= ף= >t= = >Uae!=l+>xi== >t= =#>xi= ף=l+>xi==l+>t== >t= =l+>CC< ף=l+>C<=l+>C< o=#>C< ף=+>$<@Ja=G#>< o=l+>C$<@Ja= !>>< o=+>[=@Ka= !>>$<@Ja=+>[=@Ka=&">Z=@`a= !>>[=@Ka=>">^i=o=&">Z=@`a=f+>xi=`t=>">^i=o=+>[=@Ka=>">^i=o=l+>xi==#>xi= ף=>">^i=o=f+>xi=`t=l+>xi==j> =}l+>t=Хl+>t=l+>t=j> =@}=l+>t==j> =@}=j> =}l+>t=廴 >t= >p^el+>t=Хk+>`el+>t=Х >p^e >x== >/`e = >x= = >x== >/`e= >/`e =ۨ>5`e= >/`e = >/`e=ۨ>5`e=ۨ>5`e = >/`e =ۨ>\m=ۨ>5`e=ۨ>5`e`=ۨ>5`e`=ۨ>v=`=ۨ>v= =ۨ>5`e=ۨ>v= =ۨ>5`e =ۨ>5`e=ۨ>5`e`=ۨ>v= =ۨ>\m=ۨ>5`e`=ۨ>5`e=ۨ>\m=ۨ>\m=ۨ>5`e`= >x==E>x=`=E>x== >x==ۨ>v=`=E>x=`= >x= =ۨ>v=`= >x== >x= =ۨ>v= =ۨ>v=`=>jZ=@B= >t= => =t=ި>9=d= >t= =>jZ=@B=¤>+=$J>8=4¤>9=4¤>9=4$J>+=<$J>8=4¤>+=<$J>+=<¤>9=4¤>+=<$J>=`,=$J>+=<¤>=`,=$J>=`,=¤>+=<¤>=`,=$J>JJs=`Js=$J>=`,=¤>KJs=`Js=$J>JJs=`Js=¤>=`,=¤>KJs=`Js=$J>>,==$J>JJs=`Js=¤>?,==$J>>,==¤>KJs=`Js=¤>?,==$J><+=$J>>,==¤><+=$J><+=¤>?,==¤><+=$J>LG3@=$J><+=¤>LS3@=$J>LG3@=¤><+=¤>LS3@=XH>q0&=$J>LG3@=¤>+=XH>q0&=¤>LS3@=¤>+=$J>&,=XH>q0&=¤>%,=$J>&,=¤>+=¤>%,=$J>1Js`Js=$J>&,=¤>0Js`Js=$J>1Js`Js=¤>%,=¤>0Js`Js=$J>`,=$J>1Js`Js=¤>`,=$J>`,=¤>0Js`Js=¤>`,=$J>+<$J>`,=¤>+<$J>+<¤>`,=¤>+<$J>,4$J>+<¤>+4$J>,4¤>+<¤>+4$J>+$J>,4¤>+$J>+¤>+4¤>+$J> ,$J>+¤> ,$J> ,¤>+¤> ,$J>1Js Js$J> ,¤>0Js Js$J>1Js Js¤> ,$J>1Js Js$J>&,¤>0Js Js¤>0Js Js$J>&,¤>%,$J>&,$J>+¤>%,¤>%,$J>+¤>+$J>+I>+06`¤>+¤>+I>+06`¤>LS3 I>+06`$J><+¤>LS3 ¤>LS3 $J><+¤><+$J><+$J>>,=¤><+¤><+$J>>,=¤>?,=$J>>,=$J>JJs= Js¤>?,=¤>?,=$J>JJs= Js¤>KJs= Js$J>JJs= Js$J>= ,¤>KJs= Js¤>KJs= Js$J>= ,¤>= ,$J>= ,$J>+=¤>= ,¤>= ,$J>+=¤>+=$J>+=$J>8=4¤>+=ݰ>1s,>;u1>`.ݰ>1s>`,>;u1ݰ>1sľ>z>`>r訽 `ľ>zݰ>1s>r訽 `>}ľ>z>r訽 `觤>,z$>}>`.ַ>k1觤>,z$>`.¤>ףE6ַ>k1>`.,>;u1¤>ףE6>Ş``=M>a(=¤>ۛ=>-=M>a(=>Ş``=>-=>H 6=M>a(=>%ͧA,=>H 6=>-=>%ͧA,=>q&1=>H 6=ݰ>| t=>q&1=>%ͧA,=ݰ>| t=y>5 7=>q&1=ݰ>| t=¤>r=y>5 7=ݰ>| t=V>Yj@=¤>r=>Ş``=V>Yj@=ݰ>| t=>Ş``=¤>ۛ=V>Yj@= >t= > =t5֨>g=P5֨>g=P> =tߨ>G`== >/`e >/`epۨ>5`e >/`epۨ>5`epۨ>5`e >/`e >x= >/`ep >x= >x=p >/`epE>x=@E>x=p >x=pۨ>v=@E>x=@ۨ>v= E>x=@ >x=pۨ>v= ۨ>v= >x=p >x= ۨ>v= ۨ>5`e ۨ>v=@ۨ>5`e ۨ>5`epۨ>v=@ۨ>v=@ۨ>5`epۨ>5`e@ۨ>5`epۨ>\mpۨ>5`e@ۨ>5`e@ۨ>\mpۨ>5`eۨ>5`eۨ>\mۨ>\mpl+>t==> =t= >t= =l+>t==j> =@}=> =t=Z> =,2Z> =kj> =}>> =`.ɠ>-=.>> =oɠ>-=.[V> = h>> =oj> =}Z> =k> =tZ> =k> =o> =t> =t> =o>> =o[V> = hߨ>G`==>> =o>> =oߨ>G`==> =tZ> =,2j> =}{>=w/{>=w/j> =}Z> =O > =C =Z> =P =f> =C =Z> =P =p> =P =f> =C =f> =C =p> =P =f> =#

=P =p> = =# =#

=<> =#

= =<> =# =P =j> =}d>;=.=j> =}j> =@}=d>;=.=Z> = -2=j> =@}=d>;=.=j> =@}=> =o=> =t=j> =@}=Z> =@k=> =o=Z> = -2=Z> =@k=j> =@}=> =C => =# =P => =# = =P =Z> =P =Z> = =}Z> = =j> =}j> =}Z> =Z> =O Z> => =C Z> =O Z> =O > =C p> =O > =C f> =C p> =O p> =O f> =C p> =f> =C f> =#p> =p> =f> =#Z> =f> =#> =#Z> =Z> => =#> =C {> =m=>> =.=x>D=.={> =m=>> =o=>> =.=>jZ=@B=>> =o={> =m=>jZ=@B=> =o=>> =o=>jZ=@B=> =t=> =o=> =t >t= j> =} >t= l+>t=Хj> =}>Of= >x==E>x==>Of= >/`e= >x== >/`e=ۨ>\m=ۨ>5`e= >/`e=C>Vm=ۨ>\m=>Of=C>Vm= >/`e=>Of=>2Qh=C>Vm=H>/`e=Q>m=X>*+fp6=Q>m=ۨ>\m=X>*+fp6=X>*+fp6=ۨ>\m= >/`e=ۨ>\m=ۨ>5`e= >/`e= >/`e=ۨ>5`e`=ۨ>5`e= >/`e=3w>/`e`=ۨ>5`e`=X>*+fp6=3w>/`e`= >/`e=3w>/`e`=ۨ>v=`=ۨ>5`e`=3w>/`e`=E>x=`=ۨ>v=`=>Of=E>x=`=3w>/`e`=C>Vm=ۨ>\m=ۨ>\m=ۨ>\m=Q>m=C>Vm=p> =+p> =+=?|>2#=?|>2#=,> ==p> =+=Λ>=; > =@8<,> ==?|>2#=Λ>=;,> ==?|>2#=L> =Λ>=;?|>2#=L> =ǜ> =X¤>vq`q¤> ,¤>+¤>vq`q¤>0Js Js¤> ,¤>vq`q¤>0Js Js¤>+¤>0Js Js¤>%,¤>+¤>+¤>%,¤>E @.¤>%,¤>+¤>E @.¤>E @.¤>+¤>LS3¤>+¤>LS3 ¤>LS3¤>LS3¤>LS3 ¤>y <@.¤>LS3 ¤><+¤>y <@.¤>y <@.¤><+¤>+=¤><+¤>?,=¤>+=¤>+=¤>?,=¤>q=`q¤>?,=¤>KJs= Js¤>q=`q¤>q=`q¤>KJs= Js¤>=+¤>KJs= Js¤>= ,¤>=+¤>=+¤>= ,¤>`.=@ ¤>= ,¤>+=¤>`.=@ ¤>`.=@ ¤>+=¤>=4¤>+=¤>9=4¤>=4¤>`.= <¤>9=4¤>=4¤>`.= <¤>+=<¤>9=4¤>= +=¤>+=<¤>`.= <¤>= +=¤>=`,=¤>+=<¤>q=q=¤>=`,=¤>= +=¤>q=q=¤>KJs=`Js=¤>=`,=¤>+==¤>KJs=`Js=¤>q=q=¤>+==¤>?,==¤>KJs=`Js=¤>y <`.=¤>?,==¤>+==¤>y <`.=¤><+=¤>?,==¤>LS3 =¤><+=¤>y <`.=¤>LS3 =¤>LS3@=¤><+=¤>E `.=¤>LS3@=¤>LS3 =¤>E `.=¤>+=¤>LS3@=¤>+=¤>+=¤>E `.=¤>+=¤>%,=¤>+=¤>vqq=¤>%,=¤>+=¤>vqq=¤>0Js`Js=¤>%,=¤> +=¤>0Js`Js=¤>vqq=¤> +=¤>`,=¤>0Js`Js=¤>S. <¤>`,=¤> +=¤>S. <¤>+<¤>`,=¤>4¤>+<¤>S. <¤>4¤>+4¤>+<¤>S.@ ¤>+4¤>4¤>S.@ ¤>+¤>+4¤>+¤>+¤>S.@ ¤>+¤> ,¤>+>r訽 `̨>v@ 觤>,z$>r訽 `Ǩ>!̨>v@ ݰ>1sǨ>!>r訽 `ݰ>1sXʨ>I Ǩ>!ݰ>1sXʨ> *Xʨ>I >`.Xʨ> *ݰ>1s>`.GŨ>Z"-Xʨ> *觤>,z$GŨ>Z"->`.觤>,z$̨>v@ GŨ>Z"-ݰ>| t=Wʨ> *=Wʨ> =>%ͧA,=Wʨ> *=ݰ>| t=>%ͧA,=GŨ>9S"-=Wʨ> *=>-=GŨ>9S"-=>%ͧA,=>-=̨>  =GŨ>9S"-=>Ş``=̨>  =>-=>Ş``=Ǩ>=̨>  =ݰ>| t=Ǩ>=>Ş``=ݰ>| t=Wʨ> =Ǩ>=ۨ>5`ep >/`epۨ>\mpۨ>\mp>m-mp⭽ >/`ep >/`epE>x=p >x=p >/`ep,>0f0ME>x=p>m-mp⭽,>0f0M >/`epE>Ga@E>x=@l>]e0 E>x=@ۨ>v=@l>]e0 l>]e0 ۨ>v=@ۨ>5`e@l>]e0 ۨ>5`e@ >/`e >/`eۨ>5`e@ۨ>5`e\>m4G>b˧H>/`e >/`eۨ>\mۨ>5`e >/`e\>mۨ>\ml>]e0 \>m >/`el>]e0 4G>b˧\>mC>Vmۨ>\m\>mC>Vmۨ>\mpۨ>\m>m-mp⭽ۨ>\mpC>Vm>f=C => =C =f>f=C => =C =f> =C =f>f=C =f>f=C =f> =C =f>f=# =C =f> =#f=#f=# =#<>f=# =#<> =#<>f=#<>f=#<> =#<>f=C => =#<> =C =>f=C =L\>\=o0>=oŧ>,=oa>];=oL\>\=o>=oL\>\=oŧ>,=o>=o>=oŧ>,=o> =oŧ>,=o>> =o> =oHx>n=kZ> =kHx>n=,2Z> =kZ> =,2Hx>n=,2Z> =O Z>j=O {>=w/Z>j=O Z>j=`.{>=w/p> =O p>j=O Z> =O p>j=O Z>j=O Z> =O p> =p>j=p> =O p>j=p>j=O p> =O Z> =Z>j=p> =Z>j=p>j=p> =Z> =j= =Z>j=j=Z> =p> =

j= =

j=j= =

=P =p>j=P =p> =

j=P =p>j=

= =P =Z>j=P =p> =P =Z>j=P =p>j=P =p> =P =d>;=.=Z>j=.=Z> =P =Z>j=.=Z>j=P =Z> =P =Hx>n=@k=Z> = -2=Hx>n= -2=Hx>n=@k=Z> =@k=Z> = -2=>=o=a>];=o=:[>f=o=ŧ>,=o=:[>f=o=0>=o=ŧ>,=o=>=o=:[>f=o=>> =o=>=o=ŧ>,=o=>> =o=> =o=>=o=ŧ>,=o=>> =.=>> =o=ŧ>,=o=ŧ>,=.=>> =.=x>D=.=ŧ>,=.=p>*=.=>> =.=ŧ>,=.=x>D=.=>> =`.ŧ>,=`.ɠ>-=.ŧ>,=`.p>*=`.ɠ>-=.>> =`.>> =oŧ>,=`.>> =oŧ>,=oŧ>,=`.>f=#> =#f>f=#> =#f> =#f>f=#f>f=#f> =#f>f=C f> =#f> =C f>f=C f>f=C f> =C >f=C f> =C > =C >f=C >f=C > =C >f=#> =C > =#>f=#>Of=E>x==E>x=`=H>/`e=X>*+fp6=>2Qh=>2Qh=>Of=X>*+fp6=H>/`e=>2Qh=Q>m=>2Qh=C>Vm=Q>m=X>*+fp6=>Of=3w>/`e`=p> =+ɠ>-=.p>*=`.p> =+=x>D=.=p>*=.=p>*=.=p> =+p> =+=p> =+p>*=`.p>*=.=p>*=.=p>*=`.p>j=.=p>*=`.p>j=`.p>j=.=ǚ>F3 =¤>LS3 =ǚ>x <`.=ǚ>F3 =¤>E `.=¤>LS3 =ǚ>F `.=¤>E `.=ǚ>F3 =ǚ>F `.=¤>+=¤>E `.=ǚ>+=¤>+=ǚ>F `.=ǚ>+=¤>vqq=¤>+=ǚ>wqq=¤>vqq=ǚ>+=ǚ>wqq=¤> +=¤>vqq=ǚ> +=¤> +=ǚ>wqq=ǚ> +=¤>S. <¤> +=ǚ>T. <¤>S. <ǚ> +=ǚ>T. <¤>4¤>S. <ǚ>4¤>4ǚ>T. <ǚ>4¤>S.@ ¤>4ǚ>T.@ ¤>S.@ ǚ>4ǚ>T.@ ¤>+¤>S.@ ǚ>+¤>+ǚ>T.@ ǚ>+¤>vq`q¤>+ǚ>+¤>vq`qǚ>wq`q¤>vq`q¤>+ǚ>wq`qǚ>wq`q¤>+ǚ>+¤>+¤>E @.ǚ>+ǚ>+¤>E @.ǚ>F @.¤>E @.¤>LS3ǚ>F @.ǚ>F @.¤>LS3ǚ>F3¤>LS3¤>y <@.ǚ>F3ǚ>F3¤>y <@.ǚ>x <@.¤>y <@.¤>+=ǚ>x <@.ǚ>x <@.¤>+=ǚ>+=¤>+=¤>q=`qǚ>+=ǚ>+=¤>q=`qǚ>q=`q¤>q=`q¤>=+ǚ>q=`qǚ>q=`q¤>=+ǚ>=+¤>=+¤>`.=@ ǚ>=+ǚ>=+¤>`.=@ ǚ>_.=@ ¤>`.=@ ¤>=4ǚ>_.=@ ǚ>_.=@ ¤>=4ǚ>=4ǚ>=4¤>`.= <¤>=4ǚ>_.= <¤>`.= <ǚ>=4ǚ>_.= <¤>= +=¤>`.= <ǚ>= +=¤>= +=ǚ>_.= <ǚ>= +=¤>q=q=¤>= +=ǚ>q=q=¤>q=q=ǚ>= +=ǚ>q=q=¤>+==¤>q=q=ǚ>+==¤>+==ǚ>q=q=ǚ>+==¤>y <`.=¤>+==ǚ>x <`.=¤>y <`.=ǚ>+==ǚ>x <`.=¤>LS3 =¤>y <`.=C>Vm,>0f0M>m-mp⭽\>m,>0f0MC>Vm\>mH>/`e,>0f0M4G>b˧,>0f0MH>/`eE>Ga@,>0f0M4G>b˧E>Ga@,>0f0ME>x=@,>0f0ME>x=pE>x=@l>]e0 E>Ga@4G>b˧'>f=O/f=#<>f=#f=#<'>f=O/f=C ='>f=O/<'>f=e=f>f=C =f>f=C ='>f=e=>f=C ='>f=e=>f=e=>f=C =>f=C =>f=e=>f=#<>f=e=>f=O/<>f=#<>f=#<>f=O/<'>f=O/6%=eJ0>= 20>=o!>6%=eJ0>=o#>Ž= a#>Ž= a0>=o:>ȧ=ʊ0>=oL\>\=o:>ȧ=ʊ:>ȧ=ʊL\>\=ofA>ӆ=0>=`.p>*=`.0>= 2p>*=`.ŧ>,=`.0>= 20>= 2ŧ>,=`.0>=oŧ>,=`.ŧ>,=o0>=o> =oZ> =k>=oZ> =kHx>n=k>=oa>];=o>=oa>];=h>=o>=`.a>];=ha>];=h>=`.a>];=`.Hx>n=kHx>n=,2>=oHx>n=,2>=`.>=o>=`.Hx>n=,2>j=`.Hx>n=,2Z> =,2>j=`.>j=`.Z> =,2{>=w/{>=w/Z>j=`.>j=`.>j=.=p>j=P =p>j=.=>j=.=Z>j=P =p>j=P =Z>j=.=Z>j=P =>j=.=>l=@p>j=.=l>m=p>j=.=p>j=`.l>m=p>j=`.f7>y=#l>m=>j= !=>5k==p>j=p>j=>5k==p>j=O Z>j=Z>j=

j=Z>j=

j=

j=p>j=p>j=<>j= !=p>j=

j=P =>j= !=>j= !=p>j=.=p>j=P =>~==p>j=.=>j= !=Z>j=`.Z>j=O >j=`.Z>j=O p>j=O >j=`.눧>(l=ڊ>k=zp>j=O p>j=O ڊ>k=z>j=`.ڊ>k=zf7>y=#>j=`.>j=`.f7>y=#p>j=`.>5k==>j==p>j=O p>j=O >j==눧>(l=>j==n>m=4<눧>(l=눧>(l=n>m=4<>l=@n>m=4<>m= =>l=@>l=@>m= =p>j=.=p>j=.=>m= =>~==d>;=.=Z>j=.=>j=.=>=.=Hx>n=@k=Hx>n= -2=>=.=>=o=Hx>n=@k=>=o=Z> =@k=Hx>n=@k=>=o=> =o=Z> =@k=>j=.=Z> = -2=d>;=.=>j=.=Hx>n= -2=Z> = -2=>=.=Hx>n= -2=>j=.=a>];=qe=>=.=a>];=.=a>];=qe=>=o=>=.=a>];=o=>=o=a>];=qe=:[>f=o=t@>=ฉ=G>Z=P=2!>y=G=+>е=`D.=0>=o=G>Z=P=0>=o=:[>f=o=G>Z=P=2!>y=G=0>=o=_>d=_=2!>y=G=G>Z=P=ŧ>,=o=0>=o=+>е=`D.=p>*=.=ŧ>,=o=+>е=`D.=ŧ>,=.=ŧ>,=o=p>*=.='>f=ef>f=C >f=C f>f=C '>f=ef>f=#'>f=e'>f=N/f>f=#f>f=#'>f=N/>f=#'>f=N/>f=N/>f=#>f=#>f=N/>f=C >f=N/>f=e>f=C >f=C >f=e'>f=e>=.=>j=.=p>j=.=+>е=`D.=p>j=.=p>*=.=a>];=.=p>j=.=+>е=`D.=a>];=.=>=.=p>j=.=>=`.>j=`.a>];=`.>j=`.p>j=`.a>];=`.a>];=`.p>j=`.<2>=`.p>j=`.p>*=`.<2>=`.<2>=`.p>*=`.0>=`.Sҗ>j\@=ǚ>T. <ǚ> +=ǚ>wqq=Sҗ>j\@=ǚ> +=ǚ>wqq=Sҗ>TT=Sҗ>j\@=ǚ>+=Sҗ>TT=ǚ>wqq=ǚ>+=Sҗ>%\=Sҗ>TT=ǚ>F `.=Sҗ>%\=ǚ>+=ǚ>F `.=Sҗ>p֛ f=Sҗ>%\=ǚ>F3 =Sҗ>p֛ f=ǚ>F `.=ǚ>F3 =Sҗ>"B3@=Sҗ>p֛ f=ǚ>F3 =Sҗ>֛< f=Sҗ>"B3@=ǚ>x <`.=Sҗ>֛< f=ǚ>F3 =ǚ>x <`.=Sҗ><=\=Sҗ>֛< f=ǚ>+==Sҗ><=\=ǚ>x <`.=ǚ>+==Sҗ>T= T=Sҗ><=\=ǚ>q=q=Sҗ>T= T=ǚ>+==ǚ>q=q=Sҗ>y\=@=Sҗ>T= T=ǚ>= +=Sҗ>y\=@=ǚ>q=q=ǚ>= +=Sҗ>%f=֛y\=@=ǚ>_.= %f=֛<ǚ>= +=ǚ>=4Sҗ>%f=֛<ǚ>_.= <ǚ>=4Sҗ>1=4Sҗ>%f=֛<ǚ>=4Sҗ>1=4ǚ>_.=@ Sҗ>1=4Sҗ>%f=@֛ǚ>_.=@ ǚ>_.=@ Sҗ>%f=@֛ǚ>=+Sҗ>%f=@֛Sҗ>y\=ǚ>=+ǚ>=+Sҗ>y\=ǚ>q=`qSҗ>y\=Sҗ>T=Tǚ>q=`qǚ>q=`qSҗ>T=Tǚ>+=Sҗ>T=TSҗ><=`\ǚ>+=ǚ>+=Sҗ><=`\ǚ>x <@.Sҗ><=`\Sҗ>֛<fǚ>x <@.ǚ>x <@.Sҗ>֛<fǚ>F3Sҗ>֛<fSҗ>#"3 ǚ>F3ǚ>F3Sҗ>#"3 ǚ>F @.Sҗ>#"3 Sҗ>t֛fǚ>F @.Sҗ>t֛fSҗ>&`\ǚ>F @.ǚ>F @.Sҗ>&`\ǚ>+Sҗ>&`\fҗ>+T@Tǚ>+ǚ>+fҗ>+T@Tǚ>wq`qfҗ>+T@Tuԗ>2^1ǚ>wq`qǚ>wq`quԗ>2^1ǚ>+uԗ>2^1Sҗ>f@֛ǚ>+ǚ>T.@ Sҗ>f@֛ǚ>+ǚ>4Sҗ>f@֛ǚ>T.@ ǚ>4Sҗ>%4Sҗ>f@֛ǚ>T. %4ǚ>4ǚ>T. f֛%4Sҗ>j\@=Sҗ>f֛<ǚ>T. <> Xʨ>I >N@*%> Ǩ>!Xʨ>I >@Ǩ>!> >@̨>v@ Ǩ>!>`"̨>v@ >@>`"GŨ>Z"-̨>v@ >m`'GŨ>Z"->`">p%(GŨ>Z"->m`'>p%(Xʨ> *GŨ>Z"->N@*%Xʨ> *>p%(>N@*%Xʨ>I Xʨ> *>N"=GŨ>9S"-=̨>  =>'=GŨ>9S"-=>N"=>(=GŨ>9S"-=>'=>(=Wʨ> *=GŨ>9S"-=>`*%=Wʨ> *=>(=>`*%=Wʨ> =Wʨ> *=>m =Wʨ> =>`*%=>m =Ǩ>=Wʨ> =>p%=Ǩ>=>m =>p%=̨>  =Ǩ>=>N"=̨>  =>p%='>=e=>=e='>f=e=>=e=>f=e='>f=e=>=e=>=O/<>f=e=>=O/<>f=O/<>f=e=>=O/<'>=O/<>f=O/<'>=O/<'>f=O/<>f=O/<'>=O/<'>=e='>f=O/<'>=e='>f=e='>f=O/<@>켲=>#>Ž= a>%=A#>Ž= a@>켲=>!>6%=eJ0>= 2!>6%=eJ@>켲=>0>= 2@>켲=><2>=`.<2>=`.@>켲=>A>@= ; @>켲=>>%=A>tվ= ; >tվ= ; >%=A>>ߨ= a>>ߨ= a>%=A#>Ž= a@>켲=>>tվ= ; A>@= ; >tվ= ; *>=BA>@= ; A>@= ; *>=BZ>=B*>=B*>=:=BZ>=:<*>=:=BZ>=:=) =*>=:{=) =h>=) =Z>=:<+>е=`D.=<>=*7=NA>{=) =@>2= D=+>е=`D.=2!>y=G=@>2= D=<>=*7=+>е=`D.=@>2= D=2!>y=G=_>d=_=y>"=_=@>2= D=_>d=_=<>=*7=y>"=_=h>=) =<>=*7=@>2= D=y>"=_=NA>{=) =<>=*7=h>=) =>>ߨ= a#>Ž= aT>3=ʊ#>Ž= a:>ȧ=ʊT>3=ʊT>3=ʊ:>ȧ=ʊ>=:>ȧ=ʊfA>ӆ=>=>;=ฉ=t@>=ฉ=:[>f=o=a>];=hx><=@H>n=@x><=@>=żH>n=@H>n=@>=ż k> =ż>=żb>{=d k> =ż|v>>=db>{=d k> =ż|v>>=d>=@9{=dj>I=@9<>=@9<|v>>=dj>I=@9<x>}7=>=>=@9<3H>Y=>=x>}7=>=j>I=@9<3H>Y=>=a>];=qe=x>}7=>=>;=ฉ=a>];=qe=3H>Y=>=>;=ฉ=:[>f=o=a>];=qe=fA>ӆ=L\>\=o>=>=L\>\=oH>n=@H>n=@L\>\=oa>];=h<2>=`.0>=`.0>= 2x><=@a>];=h>=ża>];=ha>];=`.>=ża>];=.=+>е=`D.=NA>{=) =Z>=:];=.=NA>{=) =a>];=.=x>}7=>=a>];=qe=a>];=.=>=@9<x>}7=>=Z>=:<>=@9];=.=Z>=:{=d>=@9=Bb>{=dZ>=:{=d>=żZ>=BZ>=B>=żA>@= ; >=ża>];=`.A>@= ; A>@= ; a>];=`.<2>=`.ڊ>k=z눧>(l=W>=W>=눧>(l=>W=>W=눧>(l=G>W=눧>(l=>l=@G>W=G>W=>l=@>LX= >l=@l>m=>LX= >LX= l>m=>$=l>m=f7>y=#>$=>$=f7>y=#>W=`!>W=`!f7>y=#W>=f7>y=#ڊ>k=zW>=$>W=F=>5k==΃>W=t=>5k==>j= !=΃>W=t=΃>W=t=>j= !=ۦ>@=!=ۦ>@=!=>~==>j= !=R>W=r=>~==ۦ>@=!=>~==>m= =R>W=r=R>W=r=>m= =/>@=@Z =>m= =n>m=4@=@Z =/>@=@Z =n>m=4<>W=^m=4<>j==>W=^<>W=^<>j==$>W=F=>j==>5k==$>W=F=:[>f=o=a>];=o=a>];=qe=b>|=P=t@>=ฉ=>;=ฉ=b>|=P=G>Z=P=t@>=ฉ=y>"=_=G>Z=P=b>|=P=y>"=_=_>d=_=G>Z=P='>=N/>=N/'>f=N/>=N/>f=N/'>f=N/>=N/>=e>f=N/>=e>f=e>f=N/>=e'>=e>f=e'>=e'>f=e>f=e'>=e'>=N/'>f=e'>=N/'>f=N/'>f=eo>0=4o>?n=@Sҗ>%f=@֛o>C}=@"Sҗ>y\=o>?n=@Sҗ>y\=Sҗ>%f=@֛o>?n=@o>a&E=cSҗ>T=To>C}=@"Sҗ>T=TSҗ>y\=o>C}=@"o>k <숽Sҗ><=`\o>a&E=cSҗ><=`\Sҗ>T=To>a&E=co>(a+֛<fo>k <숽Sҗ>֛<fSҗ><=`\o>k <숽o>`+Sҗ>#"3 o>(a+#"3 Sҗ>֛<fo>(a+&`\Sҗ>t֛fo>G 숽o>G 숽Sҗ>t֛fo>`+Sҗ>t֛fSҗ>#"3 o>`+o>5n@uԗ>2^1o>C}@"o>C}@"uԗ>2^1>&Wr 2uԗ>2^1fҗ>+T@T>&Wr 2>&Wr 2fҗ>+T@T>K&Ec>K&Ecfҗ>+T@T5>. qfҗ>+T@TSҗ>&`\5>. q5>. qSҗ>&`\r>$2WrSҗ>&`\o>G 숽r>$2Wrr>$2Wro>G 숽r>L&Eco>G 숽o>M&Ecr>L&Ecr>L&Eco>M&Ecr>'Wr 2o>M&Eco>C}@"r>'Wr 2r>'Wr 2o>C}@">&Wr 2o>&4Sҗ>f@֛o>5n@o>5n@Sҗ>f@֛uԗ>2^1o>&4Sҗ>f֛<o>5n<o>&4Sҗ>%4Sҗ>f֛f@֛Sҗ>%4o>&4o>5nj\@=o>C}"=Sҗ>f֛j\@=o>5n<o>C}"=Sҗ>TT=o>M&Ec=o>C}"=Sҗ>j\@=Sҗ>TT=o>M&Ec=Sҗ>%\=o>G =o>M&Ec=Sҗ>TT=Sҗ>%\=o>G =Sҗ>p֛ f=o>`+=o>G =Sҗ>%\=Sҗ>p֛ f=o>`+=Sҗ>"B3@=o>(a+<=o>`+=Sҗ>p֛ f=Sҗ>"B3@=o>(a+<=Sҗ>֛< f=o>k <=Sҗ>"B3@=Sҗ>֛< f=o>(a+<=o>k <=Sҗ><=\=o>a&E=c=Sҗ>֛< f=Sҗ><=\=o>k <=o>a&E=c=Sҗ>T= T=o>C}="=Sҗ><=\=Sҗ>T= T=o>a&E=c=o>C}="=Sҗ>y\=@=o>?n=T= T=Sҗ>y\=@=o>C}="=Sҗ>%f=@֛Sҗ>1=4o>0=4o>0=4Sҗ>%f=֛1=4o>?n=%f=֛<o>0=4Sҗ>y\=@=Sҗ>%f=֛<o>?n=<>ף#>p%(>m`'>ף#>m`'>`">ף#>`">@>ף#>@> >ף#> >N@*%>ף#>N@*%>p%(>ף #=>p%=>m =>ף #=>m =>`*%=>ף #=>`*%=>(=>ף #=>(=>'=>ף #=>'=>N"=>ף #=>N"=>p%='>=e='>=O/<>=e='>=O/<>=O/<>=e=H>n=@ k> =ż*>=B k> =ż|v>>=d*>=B*>=:<|v>>=d*>=B*>=:I=@9<|v>>=dh>=) =j>I=@9<*>=:=) =3H>Y=>=j>I=@9"=_=3H>Y=>=h>=) =y>"=_=>;=ฉ=3H>Y=>=b>|=P=>;=ฉ=y>"=_=T>3=ʊ>=>>ߨ= a>=H>n=@>>ߨ= a>>ߨ= aH>n=@>tվ= ; H>n=@*>=B>tվ= ; >=B=@>2= D=׋>BC=WN=>=B=<>=*7=@>2= D=>=B=<>=*7=(7>û=MA=(7>û=MA=<>=*7=@>2= D=@>2= D=׋>BC=WN=(7>û=MA=c݋>=7CӋ>p=1V>%=Ac݋>=7C@>켲=>>%=Ac݋>=7C@>켲=>Ӌ>p=1V>%=AӋ>p=1V@>켲=>a>];=oa>];=hL\>\=o>$=6g> ̱=P>LX= >LX= 6g> ̱=PG>W=6g> ̱=P7>^= 6G>W=G>W=7>^= 6>W=>W=7>^= 6W>=7>^= 6K>=W>=W>=K>=>W=`!K>=>$=>W=`!/>@=@Z =Ƥ>=@ =R>W=r=R>W=r=J>==Ƥ>=@ =ۦ>@=!=J>==R>W=r=ۦ>@=!=J>==΃>W=t=J>==K>==΃>W=t=΃>W=t=K>==$>W=F=$>W=F=K>==>W=^==Ƥ>=@ =>W=^<>W=^<Ƥ>=@ =/>@=@Z ='>=N/'>=e>=N/'>=e>=e>=N/o>?n=@h>Y\=?o>C}=@"h>Y\=?h>=1'o>C}=@"o>C}=@"h>=1'o>a&E=ch>=1'h>J=io>a&E=co>a&E=ch>J=io>k <숽h>J=ih>iw=o>k <숽o>k <숽h>iw=o>(a+iw=h> 0< o>(a+<o>(a+ 0< o>`+h> 0< h> 0 o>`+o>`+h> 0 o>G 숽h> 0 h>Two>G 숽o>G 숽h>Two>M&Ech>Twh>Jio>M&Eco>M&Ech>Jio>C}@"h>Jih>1'o>C}@"o>C}@"h>1'o>5n@h>1'h>N\?o>5n@o>5n@h>N\?o>&4h>N\?h>4o>&4o>5n4o>&4o>5nN\@@4o>C}"=h>N\@@<o>5n<o>C}"=h>@1'=h>N\@@<o>M&Ec=h>@1'=o>C}"=o>M&Ec=h>Ji=h>@1'=o>G =h>Ji=o>M&Ec=o>G =h>Tw=h>Ji=o>`+=h>Tw=o>G =o>`+=h> 0 =h>Tw=o>(a+<=h> 0 =o>`+=o>(a+<=h> 0< =h> 0 =o>k <=h> 0< =o>(a+<=o>k <=h>iw==h> 0< =o>a&E=c=h>iw==o>k <=o>a&E=c=h>J=i=h>iw==o>C}="=h>J=i=o>a&E=c=o>C}="=h>=@1'=h>J=i=o>?n==@1'=o>C}="=o>?n=Y\=@@=@1'=o>0=4h>Y\=@@<o>?n=Y\=@@ğ=4o>0=4o>0=4h>ğ=4o>?n=@h>ğ=4h>Y\=?o>?n=@r>'Wr 2r>xq`2r>L&Ecr>xq`2r>u2`qr>L&Ecr>L&Ecr>u2`qr>$2Wrr>$2Wrr>u2`q5>. q5>. q>wq`2>K&Ec>K&Ec>wq`2>&Wr 2r>'Wr 2>&Wr 2r>xq`2>&Wr 2>wq`2r>xq`2>=B=(7>û=MA=>=A=K>=7>^= 6>v=`<>v=`<7>^= 66g> ̱=P6g> ̱=P>$=z>I=` z>I=` >$=K>bB=>$=K>=K>bB=K>bB=K>=>v=`<K>==J>==>Ӱ=@ =>Ӱ=@ =J>==ץ>^==ץ>^==Ƥ>=@ =J>==Ƥ>=@ =K>==>Ӱ=@ =f>=ަh>Y\=?h>ğ=4f>=ަf>= h>Y\=?h>Y\=?f>= h>=1'f>= f>S=bh>=1'h>=1'f>S=bh>J=if>S=bjf>nF=Ih>J=ih>J=ijf>nF=Ih>iw=jf>nF=If>ۤ{<`h>iw=h>iw=f>ۤ{<`h> 0< f>ۤ{<`f>XŨ@h> 0< h> 0< f>XŨ@h> 0 f>XŨ@f>ϼ0h> 0 h> 0 f>ϼ0h>Twf>ϼ0f>W2|h>Twh>Twf>W2|h>Jif>W2|f>8ozCh>Jih>Jif>8ozCh>1'f>8ozCf>̍eh>1'h>1'f>̍eh>N\?f>̍ef> )m(h>N\?h>N\?f> )m(h>4f> )m(f> /p(4h>N\@@ /p(4h>N\@@zڍ_ /p(@1'=f>zڍ_N\@@@1'=f>o)C=f>zڍ_Ji=f>o)C=h>@1'=h>Ji=f>V2|=f>o)C=h>Tw=f>V2|=h>Ji=h>Tw=f>ϼP=f>V2|=h> 0 =f>ϼP=h>Tw=h> 0 =Cf>ӨpB=f>ϼP=h> 0< =Cf>ӨpB=h> 0 =h> 0< =qf>{< g=Cf>ӨpB=h>iw==qf>{< g=h> 0< =h>iw==lf>AF=@I=qf>{< g=h>J=i=lf>AF=@I=h>iw==h>J=i=f>S= b=lf>AF=@I=h>=@1'=f>S= b=h>J=i=h>=@1'=f>=` =f>S= b=h>Y\=@@=` =h>=@1'=h>Y\=@@=` =h>ğ=4f>=ަY\=@@ğ=4f>ğ=4f>=ަğ=4f>ğ=4f>=ަ>$jBa>7 lr>u2`q>7 l=N>2 qr>u2`qr>u2`q=N>2 q5>. q=N>2 q>7 l5>. q}>Ȍa jB>wq`2Cϖ>uQ`Q>wq`25>. qCϖ>uQ`QCϖ>uQ`Q5>. q}>#jBa5>. q>7 l}>#jBa>$jBar>u2`q7͋>vQ`Qr>u2`qr>xq`27͋>vQ`Q7͋>vQ`Qr>xq`2>Ɍa jB}>Ȍa jB>wq`2>q2>wq`2>wq`2=N>q2r>xq`2=N>q2>=l7r>xq`2r>xq`2>=l7>Ɍa jB׋>BC=WN=>u=`\=(7>û=MA=>u=`\=>=B=(7>û=MA=>=A=>=B=(7>û=MA=>=B=׋>BC=WN=>u=`\=X>m-=@]Ӌ>p=1Vc݋>=7CӋ>p=1VX>m-=@]x>l?=\؁>t=`]F>=VX>m-=@]]>*=qAn>)=NF>=V6g> ̱=PK>bB=>v=`<K>bB=6g> ̱=Pz>I=` Ƥ>=@ =>Ӱ=@ =ץ>^==f>8ozCe> ~`Gf>̍e)c>@ `e> ~`G!c>>*Tq!f>FLJ qKc>U}!c>>*T!c>>*TKc>U}c>A/q!f>FLJ q!c>>*Te>$o@We>$o@Wf>W2|q!f>FLJ qe>$o@Wf>8ozCf>W2|rc>SX&~=c>=DS=e>o@}Q=c>=DS=rc>SX&~=#c>wPT= e>g{1I=f>o)C=e>o@}Q=e>o@}Q=c> \u=rc>SX&~=f>o)C=c> \u=e>o@}Q=bf>Fo=c> \u=f>o)C=f>V2|=bf>Fo=f>o)C=Dc> @= e>g{1I=c>=DS= e>g{1I=f>zڍ_o)C=Cf>ӨpB=c>t ף=f>ϼP=Cf>ӨpB= d> =c>t ף=qf>{< g= d> =Cf>ӨpB=qf>{< g=9d>ߕ; ף= d> =Dc> @=f>zڍ_< e>g{1I=c>ףuzڍ_ @=imd>Lꣽ2;f>zڍ_<c>ףuLꣽ2;f> /p(zڍ_Lꣽ2;f> )m(f> /p( )m(jc>g᣽Ximd>Lꣽ2;e> ~`G)c>@ `f>̍e)c>@ `c>ףtf>̍ef>̍ec>ףtf> )m(c>ףtjc>g᣽Xf> )m(fd>̣= f>ğ=43c>ף=Y<3c>ף=Yğ=4$c>ǣ=@=ަ<3c>ף=Y<׍e>hm=@5U=nc>=U=c>*@e=wu=f>S= b=׍e>hm=@5U=c>*@e=wu=f>S= b=e>x=ED=׍e>hm=@5U=f>=` =e>x=ED=f>S= b=uc>u=.=f>=ަ<$c>ǣ=@u=.=f>=` =f>=ަu=.=e>x=ED=f>=` =nc>=U=e>x=ED=uc>u=.=c>*@e=wu=qe>fiP= o=f>S= b=c>*@e=wu=c>=V==qe>fiP= o=c>j==d>I=@|=c>=V==c>j==lf>AF=@I=d>I=@|=c>t< ף=lf>AF=@I=c>j==c>t< ף=qf>{< g=lf>AF=@I=c>t< ף=9d>ߕ; ף=qf>{< g=lf>AF=@I=qe>fiP= o=d>I=@|=f>S= b=qe>fiP= o=lf>AF=@I=f>V2|=#c>wPT=bf>Fo=f>V2|=c>ΰA2=#c>wPT=f>V2|=%c>\ἰJ=c>ΰA2=f>ϼP=%c>\ἰJ=f>V2|=c>t ף=%c>\ἰJ=f>ϼP=Kc>U}q!f>FLJ qc>A/q!f>FLJ qf>W2|c>A/c>A/f>W2|$c> YHf>W2|f>ϼ0$c> YH$c> YHf>ϼ0c>tףf>ϼ0f>XŨ@c>tףc>tףf>XŨ@:d>敻ףf>S=bUc>`=`nF=If>S=bf>F=}jf>nF=Iue>F=}E c>=qjf>nF=IE c>=qPc>u<أjf>nF=Ijf>nF=IPc>u<أf>ۤ{<`Pc>u<أ6d>u<ףf>ۤ{<`f>ۤ{<`6d>u<ףf>XŨ@6d>u<ף:d>敻ףf>XŨ@ue>F=}nc>yU=KE c>=qe>|=`\I͎e>3p= xRf>= f>= ͎e>3p= xRf>S=b͎e>3p= xRUc>`=`S=bUc>`=`3p= xRc>5=Tc>5=Te>|=`\Ic>4x=-e>|=`\If>= c>4x=-c>4x=-f>= [ c>=0f>= f>=ަ[ c>=0f>=ަf>ğ=4[ c>=0[ c>=0f>ğ=4fd>̣= >'A@w=N>2 q=N>< A{=N>2 q>7 l=N>< A{=N>< A{>7 l>'A@w>7 l>$jBa>'A@w>'A@w>$jBa>;Lk>$jBa7͋>vQ`Q>;Lk>;Lk7͋>vQ`Q7͋>\\7͋>vQ`Q>Ɍa jB7͋>\\7͋>\\>Ɍa jB>k@L>Ɍa jB>=l7>k@L>k@L>=l7>Vw'A>=l7=N>q2>Vw'A>Vw'A=N>q2=N>1A{<=N>q2>1A{<=N>1A{<>Uw'A>Ȍa jB>Uw'A>Uw'A}>Ȍa jB}>߯k@L}>Ȍa jBCϖ>uQ`Q}>߯k@L}>߯k@LCϖ>uQ`QCϖ>\\Cϖ>uQ`Q}>#jBaCϖ>\\Cϖ>\\}>#jBa}>:Lk}>#jBa>7 l}>:Lk}>:Lk>7 l>'A@w>7 l=N>2 q>'A@wӋ>p=1Vx>l?=\ >"=`BWx>l?=\X>m-=@]$>=]X>m-=@]؁>t=`]$>=]$>=]؁>t=`]#>=K[/&>D=U؁>t=`]#>=K[/&>D=UF>=V؁>t=`]zp> =MF>=V/&>D=Uzp> =Mn>)=NF>=V >IU=@Pn>)=Nzp> =M >IU=@Pzp> =Mo >=RCӋ>p=1Vd>I=I]*>F=`_ >IU=@PH>H=cZn>)=NN>=`]H>H=cZ >IU=@PN>=`]*>F=`_H>H=cZg>ʽ= _*>F=`_N>=`]g>ʽ= _Ӌ>p=1V*>F=`_ >"=`BWӋ>p=1Vg>ʽ= _n>)=NF>=V]>*=qAX>m-=@]F>=Vd>I=I]c݋>=7Cd>I=I]Ӌ>p=1VX>m-=@]d>I=I]c݋>=7Cc>ףt\>ףtjc>g᣽Xjc>g᣽X\>ףtimd>Lꣽ2;imd>Lꣽ2;\>ףu<\>ףtimd>Lꣽ2;c>ףu<\>ףu<c>=DS=#c>wPT=]>+QpX=Dc> @=\>ףu<c>ףu @=\>k =\>ףu<c>=DS=\>k =Dc> @=c>=DS=Y]>U=\>k =Y]>U=]>+QpX=c>=DS=c>ΰA2=]>+QpX=#c>wPT=c>ΰA2= ]>Z=]>+QpX=%c>\ἰJ= ]>Z=c>ΰA2=%c>\ἰJ=\>t ף= ]>Z=c>t ף=\>t ף=%c>\ἰJ=c>t< ף=\>t ף=9d>ߕ; ף=c>t< ף=\>t< ף=\>t ף= d> =\>t ף=c>t ף= d> =9d>ߕ; ף=\>t ף=\>I[==\>t< ף=c>t< ף=1M]>bU==c>=V==\>I[==\>I[==c>j==c>=V==c>t< ף=c>j==\>I[==uc>u=.=b\>(sd= t=c>*@e=wu=uc>u=.=\>\=@@Q=b\>(sd= t=c>=V==b\>(sd= t=1M]>bU==c>*@e=wu=b\>(sd= t=c>=V==uc>u=.=]>R==\>\=@@Q=$c>ǣ=@<]>R==uc>u=.=$c>ǣ=@<\>ף=u<]>R==3c>ף=Y<\>ף=u<$c>ǣ=@<3c>ף=Y<\>ף=t\>ף=u<3c>ף=Y<\>ף=tfd>̣= fd>̣= \>ף=t[ c>=0 `>Vyr=X=׍e>hm=@5U=qC`>^%q=`GI=e>x=ED=qC`>^%q=`GI=׍e>hm=@5U=qC`>^%q=`GI=e>x=ED=>H`>1Q}=F=nc>=U=4b`>l=YQ=>H`>1Q}=F=>H`>1Q}=F=e>x=ED=nc>=U=4b`>l=YQ=nc>=U= `>Vyr=X=׍e>hm=@5U= `>Vyr=X=nc>=U=v`>Tn=c> \u=bf>Fo=bf>Fo=D`>Fcu=v`>Tn==G`>.tJ@=bf>Fo=#c>wPT=D`>Fcu=bf>Fo==G`>.tJ@=c`>U~=#c>wPT=rc>SX&~==G`>.tJ@=#c>wPT=c`>U~=c`>U~=c> \u=v`>Tn=c`>U~=rc>SX&~=c> \u=1M]>bU==c>=V==d>I=@|=1M]>bU==d>I=@|=7\> K=@^q=7\> K=@^q=d>I=@|=qe>fiP= o=1M]>bU==qe>fiP= o=c>=V==7\> K=@^q=qe>fiP= o=1M]>bU==Y]>U=e>o@}Q=c>=DS=\>:hoO=e>o@}Q=Y]>U=c>=DS= e>g{1I=Y]>U= e>g{1I=\>mx@H=Y]>U=e>o@}Q=\>mx@H= e>g{1I=e>o@}Q=\>:hoO=\>mx@H=>Cu>'A@w،>LMj>'A@w>;Lk،>LMj،>LMj>;Lk(>P\@O\>;Lk7͋>\\(>P\@O\(>P\@O\7͋>\\،>j M7͋>\\>k@L،>j M،>j M>k@LG>u C>k@L>Vw'AG>u CG>u C>Vw'AZN>Xpy/?>Vw'A=N>1A{Xpy/?ZN>Xpy/?=N>1A{uC=N>1A{<>Uw'Ae>uCe>uC>Uw'AÕ>j@M>Uw'A}>߯k@LÕ>j@MÕ>j@M}>߯k@L\t>QO\P\}>߯k@LCϖ>\\\t>QO\P\\t>QO\P\Cϖ>\\Õ>2MjCϖ>\\}>:LkÕ>2MjÕ>2Mj}>:Lk4>2Cu}>:Lk>'A@w4>2Cu4>2Cu>'A@w N>/?@py>'A@w=N>< A{ N>/?@py N>/?@py=N>< A{>Cu=N>< A{>'A@w>Cub]>]=R\>h~r= Je>|=`\Ie>|=`\I\>h~r= J͎e>3p= xR\>`u=kW͎e>3p= xR\>h~r= Jc>5=T͎e>3p= xR\>`u=kWb]>]=Rc>5=T\>`u=kWe>|=`\Ic>5=Tb]>]=R;G`>?tJ= ue>F=}D`>F=`cunc>yU=Kue>F=};G`>?tJ= c`>U=~nc>yU=K;G`>?tJ= c`>U=~t`>T=nnc>yU=Knc>yU=Kt`>T=nUc>`=``=`T=nt`>T=nD`>F=`cuf>F=}f>F=`cu\>lGx\>S`qq!f>FLJ qKc>U}\>S`qq!f>FLJ q\>S`qKc>U}&]>V@&]>V@\>lGxKc>U}\>lGxq!f>FLJ qKc>U}!c>>*T`>~ We>$o@W`>~ WV`>_n5Ue>$o@WQ`>,)pJf>8ozCV`>_n5UV`>_n5Uf>8ozCe>$o@WP`>#|@PGf>8ozCQ`>,)pJe> ~`Gf>8ozCP`>#|@PG`>~ W!c>>*TP`>#|@PG!c>>*Te> ~`GP`>#|@PG\>t<ףPc>u<أE c>=q\>ף=t\>p= +[ c>=0[ c>=0\>p= +c>4x=-\>p= +\>L|=D;c>4x=-c>4x=-\>L|=D;c>5=T\>L|=D;b]>]=Rc>5=Tc>5=Tb]>]=R]>5T=ic>5=T]>5T=iUc>`=``=`5T=inc>yU=K]>5T=i\>SH=^nc>yU=Knc>yU=K\>SH=^E c>=q\>SH=^\>M+=pE c>=qE c>=q\>M+=p\>t<ף\>t<ף\>tףPc>u<أPc>u<أ\>tף6d>u<ף\>tף:d>敻ף6d>u<ף:d>敻ף\>tףc>tף&]>V@c>A/\>n@Ԉc>A/$c> YH\>n@Ԉ\>n@Ԉ$c> YH\><+p\><+p$c> YH\>tף$c> YHc>tף\>tף&]>V@\>\@Q!c>>*Tc>A/&]>V@!c>>*T\>\@Q\>k`!c>>*T!c>>*T\>k`)c>@ `\>k`\>ףt)c>@ `)c>@ `\>ףtc>ףtd>I=I]H>H=cZ*>F=`_F>=VH>H=cZd>I=I]n>)=NH>H=cZF>=VY]>U=\>:hoO=]>+QpX=\>+}<\>mx@H=\>:hoO=\>mx@H=\>k =Y]>U=b]>]=R\>`u=kW]>5T=iv\>-=f$\>h~r= J\>L|=D;\>L|=D;\>h~r= Jb]>]=Rv\>-=f$%w\>W=`Dg\>h~r= J\>h~r= J%w\>W=`Dg\>`u=kW]>R==\>Z=<\>M=@W#=\>ף=u<\>Z=<]>R==]>R==\>M=@W#=\>\=@@Q=\>M=@W#=|\>{=U=\>\=@@Q=\>M=@W#=|\>{=U=;\>Ʈs=I=;\>Ʈs=I=v\>UW=@Ag=\>\=@@Q=\>M=@W#=;\>Ʈs=I=v\>UW=@Ag=\>\=@@Q=|\>{=U=;\>Ʈs=I=b\>(sd= t=v\>UW=@Ag=1M]>bU==\>A==1M]>bU==7\> K=@^q=v\>UW=@Ag=7\> K=@^q=\>A==1M]>bU==7\> K=@^q=v\>UW=@Ag=\>A==1M]>bU==\>I[==\>?<=\>I[==\>A==\>?<=\>t< ף=\>I[==\>ڟPќ=\>t< ף=\>?<=\>ڟPќ=\>t ף=\>t< ף=\>Ҽ=\>t ף=\>ڟPќ=\>Ҽ= ]>Z=\>t ף=\>.J50j= ]>Z=\>Ҽ=\>.J50j=]>+QpX= ]>Z=]>+QpX=A{\>Q\}=\> vN`p=A{\>Q\}=\> vN`p=\>.J50j=A{\>Q\}=]>+QpX=\>.J50j=\>.J50j=\> vN`p=]>+QpX=\>+}<\>k =\>mx@H=\>M:+<\>k =\>+}<\>M:+<\>ףu<\>k =\>M:+<\>ףt\>ףu<\>M9+\>ףt\>M:+<\>M9+\>ףtG\>l-\>ףt\>k`G\>l-\>k`\>\@QG\>l-G\>l-\>\@Q\>-J5j\>lGx\>n@Ԉ\>-J5j\>-J5j\>n@Ԉ\>Ҽ\>?<`噽ew\>ج؝\>tףew\>ج؝\>Ҽ\>tף\>tף\>Ҽ\><+p\>Ҽ\>n@Ԉ\><+p]>5T=i\>kP=p%w\>W=`Dg]>5T=i\>kP=p\>SH=^\>tף\>t<ף\>?<`噽\>t<ף\>M+=p\>?<`噽\>?<`噽\>M+=p\>A=\>M+=p\>SH=^\>A=\>SH=^\>kP=p\>A=%w\>W=`Dg\>kP=p\>A=\>ף=t\>Z=<\>ף=u<\>Z=<\>/=4\>ף=t\>/=4\>Z=@\>ף=t\>ף=t\>Z=@\>p= +\>p= +\>Z=@\>L|=D;\>Z=@v\>-=f$\>L|=D;%w\>W=`Dg]>5T=i\>`u=kW\>n@Ԉ\>lGx&]>V@\>-J5j\>S`q&]>V@\>-J5j[\>5q S&]>V@\>N9~K[\>5q S\>-J5j\>N9~K\>\@Q\>-J5j&]>V@[\>5q S\>\@Q\>\@Q\>N9~K[\>5q S\>\=@@Q=v\>UW=@Ag=b\>(sd= t=\>lGx\>-J5j\>S`q\>.J50j=\>:hoO=]>+QpX=qC`>^%q=`GI=>H`>1Q}=F=4b`>l=YQ=D`>Fcu==G`>.tJ@=c`>U~=c`>U=~;G`>?tJ= D`>F=`cu$>=]o >=RC >=H >=Ho >=RC}>= C/&>D=Uo >=RCzp> =M#>=K[o >=RC/&>D=Uo >=RC$>=]#>=K[x>l?=\$>=] >"=`BW >"=`BW$>=] >=H{>5= Pg>ʽ= _N>=`]{>5= PN>=`] >IU=@P{>5= P >IU=@Po >=RC{>5= Po >=RC}>= C{>5= P}>= C >=H{>5= P >=H >"=`BW{>5= P >"=`BWg>ʽ= _c`>U=~\>kP=pt`>T=nt`>T=n\>kP=pD`>F=`cu\>kP=p]>5T=iD`>F=`cuD`>F=`cu]>5T=ic`>U=~]>5T=i\>kP=pc`>U=~[>Z=@v\>-=f$\>Z=@[>?<`噽\>A=[>?=%w\>W=`Dg\>A=[>?=ew\>ج؝\>?<`噽[>?<`噽[>?<`噽\>?<`噽\>A=[>+J5j\>-J5j[>Ҽ\>-J5j\>Ҽ[>Ҽ[>Ҽ\>Ҽew\>ج؝[>sdF\>-J5j[>+J5j[>M9+G\>l-[>+}[>+}G\>l-[>sdF[>sdFG\>l-\>-J5j[>M:+<\>M:+<[>+}<[>M9+\>M:+<[>M:+<[>M9+\>M9+\>M:+<[>M9+\>M9+G\>l-[>+}<\>+}<[>seF=\>M:+<\>+}<[>+}<[>seF=\>.J50j=[>+J50j=[>seF=\>:hoO=\>.J50j=\>+}<\>:hoO=[>seF=[>Ҽ=\>Ҽ=[>럫Pќ=[>Ҽ=\>.J50j=\>Ҽ=[>+J50j=\>.J50j=[>Ҽ=[>럫Pќ=\>ڟPќ=[>?<=\>Ҽ=\>ڟPќ=[>럫Pќ=[>?==\>A==[>?<=[>?<=\>?<=\>A==\>ڟPќ=\>?<=[>?<=v\>UW=@Ag=\>A==[>?==v\>UW=@Ag=[>M=@W#=\>M=@W#=\>Z=@\>/=4[>Z=@[>Z=@\>/=4[>/=4\>/=4\>Z=<[>/=4[>Z=<\>Z=<[>/=4[>Z=<\>M=@W#=\>Z=<[>M=@W#=\>M=@W#=[>Z=<[\>5q S\>N9~KQ`>,)pJQ`>,)pJ\>N9~KP`>#|@PGP`>#|@PG\>N9~K`>~ W\>N9~K[\>5q S`>~ W`>~ W[\>5q SV`>_n5UV`>_n5U[\>5q SQ`>,)pJc`>U~=A{\>Q\}=D`>Fcu=v`>Tn=A{\>Q\}=c`>U~=v`>Tn=\> vN`p=A{\>Q\}=D`>Fcu=\> vN`p=v`>Tn=D`>Fcu=A{\>Q\}=\> vN`p= `>Vyr=X=|\>{=U=4b`>l=YQ= `>Vyr=X=;\>Ʈs=I=|\>{=U=qC`>^%q=`GI=;\>Ʈs=I= `>Vyr=X=4b`>l=YQ=;\>Ʈs=I=qC`>^%q=`GI=4b`>l=YQ=|\>{=U=;\>Ʈs=I=>CuN>D>>w N>/?@pyN>D>>w֓>B`s N>/?@py N>/?@py֓>B`s4>2Cu֓>B`s >L@0i4>2Cu4>2Cu >L@0iÕ>2Mj >L@0iQ^>ZZÕ>2MjÕ>2MjQ^>ZZ\t>QO\P\Q^>ZZQ>f7iL\t>QO\P\\t>QO\P\Q>f7iLÕ>j@MQ>f7iLՓ>sBÕ>j@MÕ>j@MՓ>sBe>uCՓ>sBM>w@>>e>uCe>uCM>w@>>ZN>Xpy/?M>w@>>Ŏ>rsBZN>Xpy/?ZN>Xpy/?Ŏ>rsBG>u CŎ>rsBp>Z0iLG>u CG>u Cp>Z0iL،>j Mp>Z0iL(>>ZZ،>j M،>j M(>>ZZ(>P\@O\(>>ZZ(>L@7i(>P\@O\(>P\@O\(>L@7i،>LMj(>L@7iƎ>B`s،>LMj،>LMjƎ>B`s>CuƎ>B`sN>D>>w>Cu[>/=4[>}=4[>Z=@[>}=4[>= [>Z=@[>Z=@[>= v\>-=f$[>= [>蜎=s-v\>-=f$v\>-=f$[>蜎=s-%w\>W=`Dg[>蜎=s-[>Oc=`s%w\>W=`Dg%w\>W=`Dg[>Oc=`s[>?=[>Oc=`s[>=2[>?=[>?=[>=2[>?<`噽[>=2[>Wև?<`噽[>?<`噽[>Wևج؝[>Wև?Ѕew\>ج؝ew\>ج؝[>?Ѕ[>Ҽ[>?Ѕ[>ٔ߼@F[>Ҽ[>Ҽ[>ٔ߼@F[>+J5j[>ٔ߼@F[>v@\[>+J5j[>+J5j[>v@\[>sdF[>v@\[>yR[>sdF[>sdF[>yR[>+}[>yR[>[>+}[>+}[>[>M9+[>[>y[5[>M9+[>M:+<[>y[5[>M9+[>M:+<[>y[5<[>y[5[>+}<[>y[5<[>M:+<[>+}<[> =[>y[5<[>seF=[> =[>+}<[>seF=[>y@R=[> =[>+J50j=[>y@R=[>seF=[>+J50j=[>v@\=[>y@R=[>Ҽ=[>v@\=[>+J50j=[>Ҽ=[>ٔ߼`F=[>v@\=[>럫Pќ=[>ٔ߼`F=[>Ҽ=[>럫Pќ=[>?=[>ٔ߼`F=[>?<=[>?=[>럫Pќ=[>?<=[>Wև?=[>?<=[>Wև?==[>Wև=2=[>?==[>?==[>=2=v\>UW=@Ag=[>=2=[>Oc=s=v\>UW=@Ag=v\>UW=@Ag=[>Oc=s=[>M=@W#=[>M=@W#=[>蜎=@s-=[>Oc=s=[>Z=<[>蜎=@s-=[>M=@W#=[>Z=<[>=@!<[>蜎=@s-=[>/=4[>=@!<[>Z=<[>=@!<[>}=4[>/=4[>= vq[>c=;[>蜎=s-vq[>c=;vq[>|=`.[>蜎=s-[>蜎=s-vq[>|=`.[>Oc=`svq[>|=`.vq[>*@e=wu[>Oc=`s[>Oc=`svq[>*@e=wu[>=2vq[>*@e=wuwq[>=[>=2[>=2wq[>=[>Wև=wq[><`l[>Wև<`l[>?Ѕwq[><`lwq[>\]P[>?Ѕ[>?Ѕwq[>\]P[>ٔ߼@Fwq[>\]Pwq[>@=[>ٔ߼@F[>ٔ߼@Fwq[>@=[>v@\wq[>@=wq[>ΰA2[>v@\[>v@\wq[>ΰA2[>yRwq[>ΰA2xq[>ES[>yR[>yRxq[>ES[>xq[>ESxq[>b[>[>xq[>b[>y[5xq[>bxq[>-_6[>y[5[>y[5-_6[>y[5[>y[5-_6-_6[> =xq[>-_6<[>y[5<[> =xq[>b=xq[>-_6<[>y@R=xq[>b=[> =[>y@R=xq[>E S=xq[>b=[>v@\=xq[>E S=[>y@R=[>v@\=wq[>ΰA2=xq[>E S=[>ٔ߼`F=wq[>ΰA2=[>v@\=[>ٔ߼`F=wq[>`==wq[>ΰA2=[>?=wq[>`==[>ٔ߼`F=[>?=wq[>\]p=wq[>`==[>Wև\]p=[>?=[>Wև\]p=[>Wև=2=wq[>==[>=2=[>=2=wq[>==[>Oc=s=wq[>==vq[>*@e=wu=[>Oc=s=[>蜎=@s-=vq[>*@e=wu=[>Oc=s=[>蜎=@s-=vq[>|=.=vq[>*@e=wu=[>=@!|=.=[>蜎=@s-=[>=@!c=@<|=.=[>=@!c=@<<[>}=4vq[>c=@<=4[>}=4[>}=4vq[>=4[>= vq[>=4vq[>c=;[>= Ǝ>B`sM>l6 nN>D>>wM>l6 nu̓>2:`'kN>D>>wN>D>>wu̓>2:`'k֓>B`su̓>2:`'kՠ>DD`֓>B`s֓>B`sՠ>DD` >L@0iՠ>DD`L>jRR >L@0i >L@0iL>jRRQ^>ZZL>jRR>W`DQ^>ZZQ^>ZZ>W`DQ>f7iL>W`D{Γ> k 9:Q>f7iLQ>f7iL{Γ> k 9:Փ>sB{Γ> k 9:hO>nl6Փ>sBՓ>sBhO>nl6M>w@>>hO>nl6Ў>'k2:M>w@>>M>w@>>Ў>'k2:Ŏ>rsBЎ>'k2:>` DŎ>rsBŎ>rsB>` Dp>Z0iL>` DO>R`Rp>Z0iLp>Z0iLO>R`R(>>ZZO>R`Ry>D@`(>>ZZ(>>ZZy>D@`(>L@7iy>D@`͎>/9: k(>L@7i(>L@7i͎>/9: kƎ>B`s͎>/9: kM>l6 nƎ>B`sU>4_=6vq[>c=;vq[>=4U>4_=6U>k=vq[>c=;vq[>c=;U>k=vq[>|=`.U>k=U>E=Svq[>|=`.vq[>|=`.U>E=Svq[>*@e=wuU>E=SU>A=2vq[>*@e=wuvq[>*@e=wuU>A=2wq[>=U>A=2U>"<@=wq[>=wq[>=U>"<@=wq[><`lU>"<@=U>];Pwq[><`lwq[><`lU>];Pwq[>\]PU>];PU>`lwq[>\]Pwq[>\]PU>`lwq[>@=U>`lU>څwq[>@=wq[>@=U>څwq[>ΰA2U>څU>@ewuwq[>ΰA2wq[>ΰA2U>@ewuxq[>ESU>@ewuU>|`.xq[>ESxq[>ESU>|`.xq[>bU>|`.U>\;xq[>bxq[>bU>\;xq[>-_6xq[>-_6U>什4U>\;xq[>-_6什4xq[>-_6xq[>-_6\@<什4xq[>b=U>\@<-_6b=U>|.=U>\@<E S=U>|.=xq[>b=xq[>E S=U>@ewu=U>|.=wq[>ΰA2=U>@ewu=xq[>E S=wq[>ΰA2=U>څ=U>@ewu=wq[>`==U>څ=wq[>ΰA2=wq[>`==U>l=U>څ=wq[>\]p=U>l=wq[>`==wq[>\]p=U>];p=U>l=wq[>];p=wq[>\]p=wq[>"<`==U>];p=wq[>"<`==wq[>==U>"<`==U>A=2=wq[>==wq[>==U>A=2=vq[>*@e=wu=U>A=2=U>E= S=vq[>*@e=wu=vq[>|=.=U>E= S=vq[>*@e=wu=vq[>|=.=U>k==U>E= S=vq[>c=@<k==vq[>|=.=U>k==rU>e=6c=@<c=@<e=6=4vq[>=4rU>e=64_=6U>什4R@S>̟/U>\;U>什4R@S>Т4R@S>̟/U>\@<Т4U>什4U>\@<</S>)Т4U>\@<@=/S>)|.=R@S>@=U>\@<|.=R@S>1)=R@S>@=U>@ewu=R@S>1)=U>|.=U>@ewu=R@S>]>zK=R@S>1)=U>@ewu=R@S>B^m=R@S>]>zK=U>@ewu=Q@S>R :ƃ=R@S>B^m=U>څ=Q@S>R :ƃ=U>@ewu=U>څ=Q@S>=Q@S>R :ƃ=U>l=Q@S>=U>څ=U>l=Q@S>=ؼ=Q@S>=U>l=Q@S>݀ i=Q@S>=ؼ=U>l=Q@S>T=Q@S>݀ i=U>];p=Q@S>T=U>l=U>];p=Q@S>Ʊ;o=Q@S>T=U>"<`==Q@S>Ʊ;o=U>];p=U>"<`==Q@S>E<=Q@S>Ʊ;o=Q@S>E<=Q@S>d<`j=U>"<`==U>"<`==Q@S>d<`j=U>A=2=Q@S>d<`j=Q@S>j=@7=U>A=2=Q@S>j=@7=Q@S>#;= =U>A=2=Q@S>#;= =P@S>0\=k=U>A=2=U>A=2=P@S>0\=k=U>E= S=P@S>0\=k=P@S>|=M=U>E= S=U>k==P@S>|=M=U>E= S=U>k==P@S>Hщ=@'=P@S>|=M=P@S>Hщ=@'=P@S>4V==U>k==P@S>4V==P@S>uQ=k==U>k==P@S>uQ=e=6uQ=L=\1e=6e=6L=\1=4P@S>L=\1L=4U>=4U>=4P@S>L=4U>4_=6P@S>L=4P@S>L=[1U>4_=6P@S>L=[1P@S>uQ=@U>4_=6U>4_=6P@S>uQ=@U>k=P@S>uQ=@P@S>4V=@U>k=U>k=P@S>4V=@U>E=SP@S>4V=@P@S>Hщ='U>E=SP@S>Hщ='P@S>|=MU>E=SP@S>|=MP@S>0\=@kU>E=SU>E=SP@S>0\=@kU>A=2P@S>0\=@kQ@S>#;=U>A=2Q@S>#;=Q@S>j= 7U>A=2U>A=2Q@S>j= 7U>"<@=Q@S>j= 7Q@S>d<@jU>"<@=U>"<@=Q@S>d<@jU>];PQ@S>d<@jQ@S>E<읽U>];PQ@S>E<읽Q@S>Ʊ;oU>];PQ@S>Ʊ;oQ@S>T`젽U>];PU>];PQ@S>T`젽U>`lQ@S>T`젽Q@S>݀iU>`lQ@S>݀iQ@S>=ؼpU>`lU>`lQ@S>=ؼpU>څQ@S>=ؼpQ@S>ЏU>څU>څQ@S>ЏU>@ewuQ@S>ЏQ@S>R :ƃU>@ewuQ@S>R :ƃR@S>B^mU>@ewuR@S>B^mR@S>]>zKU>@ewuU>@ewuR@S>]>zKU>|`.R@S>]>zKR@S>@1)U>|`.R@S>@1)R@S>U>|`.U>|`.R@S>U>\;R@S>R@S>>ǜ@U>\;U>\;R@S>̟/R@S>>ǜ@Լ> =lM>l6 n=N>]9dpM>l6 n͎>/9: k=N>]9dp=N>]9dp͎>/9: kߎ> =l͎>/9: ky>D@`ߎ> =lߎ> =ly>D@`>Gby>D@`O>R`R>Gb>GbO>R`Rq>TTO>R`R>` Dq>TTq>TT>` D>ԢbG>` DЎ>'k2:>ԢbG>ԢbGЎ>'k2:ߎ> l =Ў>'k2:hO>nl6ߎ> l =ߎ> l =hO>nl6=N>dp ]9hO>nl6{Γ> k 9:=N>dp ]9=N>dp ]9{Γ> k 9:Լ> l ={Γ> k 9:>W`DԼ> l =Լ> l =>W`D>ӢbG>W`DL>jRR>ӢbG>ӢbGL>jRRl+>TTL>jRRՠ>DD`l+>TTl+>TTՠ>DD`>Gbՠ>DD`u̓>2:`'k>Gb>Gbu̓>2:`'kԼ> =lu̓>2:`'kM>l6 nԼ> =lP@S>L=\1R=[L=4S0:>R=[<):>Т=4P@S>L=4P@S>L=4):>Т=4P@S>L=[1):>Т=4):>o=ƱP@S>L=[1P@S>L=[1):>o=ƱP@S>uQ=@):>o=Ʊ^0:> R=ڼP@S>uQ=@P@S>uQ=@^0:> R=ڼP@S>4V=@P@S>4V=@^0:> R=ڼP@S>Hщ='^0:> R=ڼ^0:>J=;P@S>Hщ='P@S>Hщ='^0:>J=;P@S>|=MP@S>|=M^0:>J=;P@S>0\=@k^0:>J=;^0:>YM={|P@S>0\=@kP@S>0\=@k^0:>YM={|Q@S>#;=Q@S>#;=^0:>YM={|Q@S>j= 7^0:>YM={|_0:>=BQ@S>j= 7Q@S>j= 7_0:>=BQ@S>d<@jQ@S>d<@j_0:>=BQ@S>E<읽_0:>=B_0:>1<6Q@S>E<읽Q@S>E<읽_0:>1<6Q@S>Ʊ;oQ@S>Ʊ;o_0:>1<6Q@S>T`젽_0:>1<6_0:>0r1p4Q@S>T`젽Q@S>T`젽_0:>0r1p4Q@S>݀iQ@S>݀i_0:>0r1p4Q@S>=ؼp_0:>0r1p4_0:>>Q@S>=ؼpQ@S>=ؼp_0:>>Q@S>ЏQ@S>Џ_0:>>Q@S>R :ƃ_0:>>`0:>lM`l|Q@S>R :ƃQ@S>R :ƃ`0:>lM`l|R@S>B^mR@S>B^m`0:>lM`l|R@S>]>zK`0:>lM`l|`0:>4;R@S>]>zKR@S>]>zK`0:>4;R@S>@1)R@S>@1)`0:>4;R@S>`0:>4;`0:> VټR@S>R@S>`0:> VټR@S>>ǜ@R@S>̟/`0:> VټR@S>>ǜ@R@S>̟/`0:>XL`0:> VټR@S>Т4`0:>XLR@S>̟//S>)<`0:>XLR@S>Т4/S>)a<`0:>XLR@S>@=L+:>a</S>)@=`0:>x=L+:>a1)=`0:>x=R@S>@=R@S>]>zK=`0:>x=R@S>1)=R@S>]>zK=`0:>m+^=`0:>x=R@S>B^m=`0:>m+^=R@S>]>zK=Q@S>R :ƃ=`0:>m+^=R@S>B^m=Q@S>R :ƃ=_0:>) =`0:>m+^=Q@S>=_0:>) =Q@S>R :ƃ=Q@S>=ؼ=_0:>) =Q@S>=Q@S>=ؼ=_0:>ׄ0=_0:>) =Q@S>݀ i=_0:>ׄ0=Q@S>=ؼ=Q@S>T=_0:>ׄ0=Q@S>݀ i=Q@S>T=_0:>6@7P=_0:>ׄ0=Q@S>Ʊ;o=_0:>6@7P=Q@S>T=Q@S>E<=_0:>6@7P=Q@S>Ʊ;o=Q@S>E<=_0:>;<=_0:>6@7P=Q@S>E<=_0:>;<=Q@S>d<`j=Q@S>d<`j=_0:>;<=Q@S>j=@7=_0:>;<=_0:>3#)==Q@S>j=@7=Q@S>j=@7=_0:>3#)==Q@S>#;= =Q@S>#;= =_0:>3#)==P@S>0\=k=_0:>3#)==^0:>m=^=P@S>0\=k=P@S>0\=k=^0:>m=^=P@S>|=M=P@S>|=M=^0:>m=^=P@S>Hщ=@'=^0:>m=^=3:>au=@=P@S>Hщ=@'=P@S>Hщ=@'=3:>au=@=P@S>4V==P@S>4V==3:>au=@=P@S>uQ=<3:>au=@=S0:>R=[uQ=uQ=R=[L=\1<֌>]D`$e>@Y:ho=N>]9dpZ>ϜJ%_>w$e`D>ӢbG>ho@Y: >%_J>ԢbG>ӢbGl+>TTZ>ϜJ%_l+>TT>GbZ>ϜJ%_Z>ϜJ%_>Gb>@Y:ho>GbԼ> =l>@Y:ho>@Y:hoԼ> =l=N>]9dp>ԢbGߎ> l =>ho@Y:ߎ> l ==N>dp ]9>ho@Y:>ho@Y:=N>dp ]9>w$e`D=N>dp ]9Լ> l =>w$e`D>w$e`DԼ> l =>ӢbG=N>]9dpߎ> =l֌>]D`$eߎ> =l>Gb֌>]D`$e֌>]D`$e>Gb >%_J>Gbq>TT >%_J >%_Jq>TT>ԢbG_0:>;<= 5><0= 5>2= 5>,= w=_0:>3#)== 5><0=_0:>3#)==_0:>;<= 5><0= 5>&T= F=^0:>m=^= 5>,= w=^0:>m=^=_0:>3#)== 5>,= w= 5>uЀ=@~=3:>au=@= 5>&T= F=3:>au=@=^0:>m=^= 5>&T= F= 5> =$lR=[< 5>uЀ=@~=S0:>R=[<3:>au=@= 5>uЀ=@~= 5>۽=g):>Т=4 5> =$l<):>Т=4S0:>R=[< 5> =$l< 5>=V¼^0:> R=ڼ 5>۽=g^0:> R=ڼ):>o=Ʊ 5>۽=g 5>۽=g):>o=Ʊ):>Т=4 5>? m=@T'^0:>J=; 5>=V¼^0:>J=;^0:> R=ڼ 5>=V¼ 5>7=`a^0:>YM={| 5>? m=@T'^0:>YM={|^0:>J=; 5>? m=@T' 5>63<_0:>=B 5>7=`a_0:>=B^0:>YM={| 5>7=`a 5>l 1<6 5>63<_0:>1<6_0:>=B 5>63< 5>0 p_0:>0r1p4 5>l 0r1p4_0:>1<6 5>l 3缐_0:>> 5>0 p_0:>>_0:>0r1p4 5>0 p 5>7`a`0:>lM`l| 5>3缐`0:>lM`l|_0:>> 5>3缐 5>3 m@T'`0:>4; 5>7`a`0:>4;`0:>lM`l| 5>7`a 5>3 m@T'`0:> Vټ 5>V¼`0:> Vټ`0:>4; 5>3 m@T' 5>V¼`0:>XL 5>սg 5>V¼`0:> Vټ`0:>XL 5>սgL+:>a< 5> $l< 5>սg`0:>XLL+:>a< 5> $l<`0:>x= 5>mЀ@~= 5> $la<`0:>x= 5>mЀ@~=`0:>m+^= 5>T F= 5>mЀ@~=`0:>x=`0:>m+^= 5>T F=_0:>) = 5> w= 5>T F=`0:>m+^=_0:>) = 5> w=_0:>ׄ0= 5>k0= 5> w=_0:>) =_0:>ׄ0= 5>2=_0:>6@7P=_0:>;<= 5>k0=_0:>6@7P= 5>2= 5>k0=_0:>ׄ0=_0:>6@7P=>w$e`DZ>ϜJ%_>7Oo`O>)6U`i3>;Ja^Z>ϜJ%_3>;Ja^.>ixTZ>ϜJ%_Z>ϜJ%_.>ixT>7Oo`Or>z^E y>^K |t>@Y:hoZ>ϜJ%_>@Y:ho>)6U`i>)6U`i>@Y:hoڔ>=BQ`l>@Y:ho>^K |tڔ>=BQ`l降>\O OoX>4 Ju֌>]D`$e֌>]D`$eX>4 Ju>@Y:hoX>4 JuJ>F@w>@Y:ho>@Y:hoJ>F@wr>z^E y֌>]D`$e >%_J降>\O Oo>iBUG> ^ Ja >%_JG> ^ Jam>xTi >%_J >%_Jm>xTi降>\O Oo>Jy`^E&>xt`eK>ho@Y:>ho@Y:&>xt`eK >%_J&>xt`eK>l BQ >%_J >%_J>l BQ>iBU>7Oo`OC>u J>w$e`D>w$e`DC>u J>ho@Y:C>u J1>@wF>ho@Y:>ho@Y:1>@wF>Jy`^E 5>k0= 5>y %<`= 5>= %`= 5>k0= 5>2= 5>y %<`= 5>rZy= 5>k0= 5>= %`= 5>rZy= 5> w= 5>k0= 5>d<` K= 5> w= 5>rZy= 5>d<` K= 5>T F= 5> w= 5>o`} = 5>T F= 5>d<` K= 5>o`} = 5>mЀ@~= 5>T F= 5>mv< 5>mЀ@~= 5>o`} = 5>mv< 5> $l< 5>mЀ@~= 5>. 5> $l< 5>mv< 5>. 5>սg 5> $l< 5>ꀽbʼ 5>սg 5>. 5>ꀽbʼ 5>V¼ 5>սg 5>X`, 5>V¼ 5>ꀽbʼ 5>X`, 5>3 m@T' 5>V¼ 5>d 5>3 m@T' 5>X`, 5>3 m@T' 5>7`a 5>d 5>d 5>7`a 5>(H0V 5>7`a 5>3缐 5>(H0V 5>(H0V 5>3缐 5>2@} 5>3缐 5>0 p 5>2@} 5>0 p 5>l 2@} 5>2@} 5>l DH<0V 5>l 63< 5>DH<0V 5>DH<0V 5>63< 5>,=d 5>63< 5>7=`a 5>,=d 5>,=d 5>7=`a 5>X=`, 5>7=`a 5>? m=@T' 5>X=`, 5>X=`, 5>? m=@T' 5>=bʼ 5>? m=@T' 5>=V¼ 5>=bʼ 5>=bʼ 5>=V¼ 5>6= 5>=V¼ 5>۽=g 5>6= 5>6= 5>۽=g 5>u=v< 5>۽=g 5> =$l< 5>u=v< 5>u=v< 5> =$l< 5>o=`} = 5> =$l< 5>uЀ=@~= 5>o=`} = 5>o=`} = 5>uЀ=@~= 5>d<=` K= 5>uЀ=@~= 5>&T= F= 5>d<=` K= 5>d<=` K= 5>&T= F= 5>Z&T= F= 5>,= w= 5>ZZ,= w= 5>y %<`= 5>,= w= 5><0= 5>y %<`= 5>2= 5><0= 5>y %<`=3>;Ja^>7Oo`O.>ixT=N>uJtJ>F@ws>L`3qJ>F@wX>4 Jus>L`3qs>L`3qX>4 JuG>;Ti3>:Tiڔ>=BQ`l`)>L`3qڔ>=BQ`l>^K |t`)>L`3q`)>L`3q>^K |t=N>uJt>^K |tJ>F@w=N>uJt3>ȃi T.>ixT>__.>ixT3>;Ja^>__>__3>;Ja^3>:Ti3>;Ja^ڔ>=BQ`l3>:Ti=N>t`J1>@wF`)>^3qL1>@wFC>u J`)>^3qL`)>^3qLC>u J3>ȃi TC>u J.>ixT3>ȃi TG>Ƀi T>l BQs>_3qL>l BQ&>xt`eKs>_3qLs>_3qL&>xt`eK=N>t`J&>xt`eK1>@wF=N>t`JX>4 Jum>xTiG>;TiG>;Tim>xTi>__m>xTiG> ^ Ja>__>__G> ^ JaG>Ƀi TG> ^ Ja>l BQG>Ƀi T>^K |t>)6U`iڔ>=BQ`lX>4 Jur>z^E yJ>F@wG> ^ Ja降>\O Oom>xTi&>xt`eK>iBU>l BQC>u J>Jy`^E1>@wFK7><@i~ 5>2@} 5>DH<0VK7><@i~ 5>DH<0VK7>|=@[ 5>DH<0V 5>,=dK7>|=@[K7>|=@[ 5>,=dK7>'P=`% 5>,=d 5>X=`,K7>'P=`% 5>X=`, 5>=bʼK7>'P=`%K7>'P=`% 5>=bʼK7>w=@¼ 5>=bʼ 5>6=K7>w=@¼K7>w=@¼ 5>6=K7>s=* 5>o=`} =K7>f== 5>u=vf==K7>Pȁ=l< 5>u=v< 5>u=vPȁ=l< 5>6=K7>Pȁ=l=4 5>6= 5>6=K7>=4K7>s=* 5>d<=` K=K7>5=+C= 5>o=`} =K7>5=+C=K7>f== 5>o=`} = 5>Zd<=` K=K7>5=+C= 5>d<=` K= 5>y %<`=K7>Zy %<`=K7>;0= 5>= %`= 5>y %<`=K7>w<0=K7>;0= 5>y %<`=K7>w<0=K7>= %`=K7>;0= 5>rZy= 5>rZy=K7>o= 5>d<` K=K7>;0=K7>o= 5>rZy= 5>d<` K=K7>5+C= 5>o`} =K7>o=K7>5+C= 5>d<` K= 5>o`} =K7>Hȁl< 5>mv< 5>o`} =K7> f=K7>Hȁl5+C=K7> f= 5>o`} = 5>mvHȁl< 5>. 5>.K7>w@¼ 5>ꀽbʼ 5>.K7>j*K7>w@¼K7>Hȁlj* 5>. 5>ꀽbʼK7>w@¼ 5>X`, 5>X`,K7>'P`% 5>dK7>w@¼K7>'P`% 5>X`, 5>(H0VK7>m@[ 5>dK7>'P`%K7>m@[ 5>dK7><@i~K7>c`2 5>2@} 5>2@}K7>c`2 5>(H0VK7>c`2K7>w@i~ 5>(H0V 5>(H0VK7>w@i~K7>m@[N>tLyL>|O@xv>^K |tL>|O@xvڔ>=BQ`l>^K |t>XW;nڔ>=BQ`lL>|O@xv>XW;n3>;Ja^ڔ>=BQ`lgI>bb3>;Ja^>XW;ngI>bb.>ixT3>;Ja^>>nW.>ixTgI>bb>>nWC>u J.>ixTJ>}vvOC>u J>>nWJ>}vvO1>@wFC>u JM>ytL1>@wFJ>}vvOM>ytL&>xt`eK1>@wFM>wx P&>xt`eKM>ytLM>wx P>l BQ&>xt`eK^̍>GmX>l BQM>wx P^̍>GmXG> ^ Ja>l BQS>bbG> ^ Ja^̍>GmXS>bbm>xTiG> ^ Jaۍ>W>nm>xTiS>bbۍ>W>nX>4 Jum>xTi~Q>vO}vX>4 Juۍ>W>n~Q>vO}vJ>F@wX>4 JuN>tLyJ>F@w~Q>vO}v>^K |tJ>F@wN>tLyr>z^E yX>4 Ju=N>@_yv=N>@_yvX>4 Ju 1>}wX>4 Ju降>\O Oo 1>}w 1>}w降>\O Oo[>]!降>\O OoG> ^ Ja[>]![>]!G> ^ Ja>G> ^ Ja>iBU>>>iBU[>`!>iBU&>xt`eK[>`![>`!&>xt`eK>@|&>xt`eK>Jy`^E>@|>@|>Jy`^E=N>v _y>Jy`^EC>u J=N>v _y=N>v _yC>u J>@|C>u J>7Oo`O>@|>@|>7Oo`O~@>`!>7Oo`O3>;Ja^~@>`!~@>`!3>;Ja^ܕ>3>;Ja^>)6U`iܕ>ܕ>>)6U`i~@>]!>)6U`i>^K |t~@>]!~@>]!>^K |t>W|>^K |tr>z^E y>W|>W|r>z^E y=N>@_yvL>|O@xv=N>uJtN>tLy=N>uJts>L`3qN>tLy~Q>vO}vs>L`3qN>tLys>L`3qG>;Ti~Q>vO}vۍ>W>nG>;Ti~Q>vO}vG>;Ti>__ۍ>W>nS>bb>__ۍ>W>n>__G>Ƀi TS>bb^̍>GmXG>Ƀi TS>bbG>Ƀi Ts>_3qL^̍>GmXs>u,Qs>_3qL^̍>GmXs>_3qL=N>t`Js>u,Qs>u,Q=N>t`JM>ytL=N>t`J`)>^3qLM>ytLJ>}vvO`)>^3qLM>ytL`)>^3qL3>ȃi TJ>}vvO>>nW3>ȃi TJ>}vvO3>ȃi T>__>>nWgI>bb>__>>nW>__3>:TigI>bb>XW;n3>:TigI>bb3>:Ti`)>L`3q>XW;nL>|O@xv`)>L`3q>XW;n`)>L`3q=N>uJtL>|O@xvK7>Pȁ=lli~==4K7>Pȁ=lf==Q8>li~=li~=f==Q8>V[==K7>f==K7>5=+C=Q8>V[==Q8>V[==K7>5=+C=Q8>%='P=K7>5=+C=K7>%='P=Q8>%='P=K7>|< w=K7>w<0=Q8>|< w=Q8>+;=K7>w<0=Q8>|< w=Q8>+;=K7>;0=K7>w<0=Q8>l`ȁ=K7>;0=Q8>+;=Q8>l`ȁ=K7>o=K7>;0=Q8> f=K7>o=Q8>l`ȁ=Q8> f=K7>5+C=K7>o=Q8>*C5=K7>5+C=Q8> f=Q8>*C5=K7> f=K7>5+C=Q8>o f=Q8>*C5=Q8>o Hȁl f=Q8>Hȁlo j*K7>HȁlK7>j*Q8>K7>w@¼K7>j*Q8>oK7>w@¼Q8>Q8>oK7>'P`%K7>w@¼Q8>*C5K7>'P`%Q8>oQ8>*C5K7>m@[K7>'P`%Q8>fK7>m@[Q8>*C5K7>m@[K7>w@i~Q8>fQ8>fK7>w@i~Q8>l@ȁK7>w@i~K7>c`2Q8>l@ȁQ8>l@ȁK7>c`2Q8>+;`K7>c`2K7><@i~Q8>+;`Q8>+;`K7><@i~Q8>|<@i~K7>|=@[Q8>|||=@[Q8>%='PK7>|=@[K7>'P=`%Q8>%='PQ8>%='PK7>'P=`%Q8>V[=`K7>'P=`%K7>w=@¼Q8>V[=`Q8>V[=`K7>w=@¼Q8>li~=@K7>w=@¼K7>s=*Q8>li~=@Q8>li~=@K7>s=*Q8>=4K7>s=*K7>=4Q8>=4Q8>=4K7>=4K7>Pȁ=l< 1>}w[>]!>h7a>h7a[>]!<>vLpL[>]!><>vLpL<>vLpL>>a`7>[>`!>a`7>a`7[>`!'>]Ք[>`!>@|'>]Ք'>]Ք>@|=N>vD|>@|=N>v _y=N>vD|=N>vD|=N>v _yt>]Ք=N>v _y>@|t>]Քt>]Ք>@|>a`7>@|~@>`!>a`7>a`7~@>`!>>vLpL~@>`!ܕ>>>vLpL>>vLpLܕ>>h7aܕ>~@>]!>h7a>h7a~@>]!t>!PՔ~@>]!>W|t>!PՔt>!PՔ>W|=N>D|v>W|=N>@_yv=N>D|v=N>D|v=N>@_yv 1>}w^̍>GmXM>wx Ps>u,Qs>u,QM>wx PM>ytLQ8>V[=`Q8>li~=@Q8>=4Q8>l`ȁ=Q8>oQ8> f=Q8>l`ȁ=Q8>*C5Q8>oQ8>l`ȁ=Q8>|%='PQ8>oQ8>Q8> f=Q8>oQ8>o  f=Q8>o *C5=Q8> f=Q8>+;`Q8>|l@ȁQ8>|l`ȁ=Q8>l@ȁQ8>l@ȁQ8>l`ȁ=Q8>fQ8>fQ8>*C5Q8>l`ȁ=Q8>%='PQ8>V[=`Q8>l`ȁ=Q8>V[=`Q8>=4Q8>l`ȁ=Q8>l`ȁ=Q8>=4Q8>+;=Q8>=4Q8>li~=+;=Q8>+;=Q8>li~=|< w=Q8>li~=V[==Q8>|< w=Q8>|< w=Q8>V[==Q8>%='P=<>vLpL>a`7'>]Ք>>vLpL>h7at>!PՔ'>]Ք=N>vD|t>]Ք 1>}w>h7a=N>D|v>h7a<>vLpL=N>D|v=N>D|v<>vLpLt>!PՔ<>vLpL'>]Քt>!PՔt>!PՔ'>]Ք>>vLpL'>]Քt>]Ք>>vLpL>>vLpLt>]Ք>a`7DATAI`@DATA:..edge_vertskT2.select_edge`g@XTDATAMkuI  $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y                ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | }              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y   !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy               ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | } !!!!!! !! ! !!!!!!!!!$!&!$!%!(!)!0!2!0!1!4!5!!$<$=$@$A$H$J$H$I$L$M$T$V$T$U$X$Y$`$b$`$a$d$e$l$n$l$m$p$q$x$z$x$y$|$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %% % % %%%%%%% %"% %!%$%%%,%.%,%-%0%1%8%:%8%9%<%=%D%F%D%E%H%I%P%R%P%Q%T%U%\%^%\%]%`%a%h%j%h%i%l%m%t%v%t%u%x%y%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&& &&&&&&&&&&& &!&(&*&(&)&,&-&4&6&4&5&8&9&@&B&@&A&D&E&L&N&L&M&P&Q&X&Z&X&Y&\&]&d&f&d&e&h&i&p&r&p&q&t&u&|&~&|&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''' '' ' '''''''''$'&'$'%'(')'0'2'0'1'4'5'<'>'<'='@'A'H'J'H'I'L'M'T'V'T'U'X'Y'`'b'`'a'd'e'l'n'l'm'p'q'x'z'x'y'|'}'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((( (( ( ( ((((((( ("( (!($(%(,(.(,(-(0(1(8(:(8(9(<(=(D(F(D(E(H(I(P(R(P(Q(T(U(\(^(\(](`(a(h(j(h(i(l(m(t(v(t(u(x(y((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))) ))))))))))) )!)()*)())),)-)4)6)4)5)8)9)@)B)@)A)D)E)L)N)L)M)P)Q)X)Z)X)Y)\)])d)f)d)e)h)i)p)r)p)q)t)u)|)~)|)})))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****** ** * *********$*&*$*%*(*)*0*2*0*1*4*5*<*>*<*=*@*A*H*J*H*I*L*M*T*V*T*U*X*Y*`*b*`*a*d*e*l*n*l*m*p*q*x*z*x*y*|*}*****************************************************************+++ ++ + + +++++++ +"+ +!+$+%+,+.+,+-+0+1+8+:+8+9+<+=+D+F+D+E+H+I+P+R+P+Q+T+U+\+^+\+]+`+a+h+j+h+i+l+m+t+v+t+u+x+y+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,, ,,,,,,,,,,, ,!,(,*,(,),,,-,4,6,4,5,8,9,@,B,@,A,D,E,L,N,L,M,P,Q,X,Z,X,Y,\,],d,f,d,e,h,i,p,r,p,q,t,u,|,~,|,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------ -- - ---------$-&-$-%-(-)-0-2-0-1-4-5-<->-<-=-@-A-H-J-H-I-L-M-T-V-T-U-X-Y-`-b-`-a-d-e-l-n-l-m-p-q-x-z-x-y-|-}-----------------------------------------------------------------... .. . . ....... .". .!.$.%.,...,.-.0.1.8.:.8.9.<.=.D.F.D.E.H.I.P.R.P.Q.T.U.\.^.\.].`.a.h.j.h.i.l.m.t.v.t.u.x.y...................................................................///// /////////// /!/(/*/(/)/,/-/4/6/4/5/8/9/@/B/@/A/D/E/L/N/L/M/P/Q/X/Z/X/Y/\/]/d/f/d/e/h/i/p/r/p/q/t/u/|/~/|/}///////////////////////////////////////////////////////////////000000 00 0 000000000$0&0$0%0(0)0002000104050<0>0<0=0@0A0H0J0H0I0L0M0T0V0T0U0X0Y0`0b0`0a0d0e0l0n0l0m0p0q0x0z0x0y0|0}00000000000000000000000000000000000000000000000000000000000000000111 11 1 1 1111111 1"1 1!1$1%1,1.1,1-1011181:18191<1=1D1F1D1E1H1I1P1R1P1Q1T1U1\1^1\1]1`1a1h1j1h1i1l1m1t1v1t1u1x1y111111111111111111111111111111111111111111111111111111111111111111122222 22222222222 2!2(2*2(2)2,2-2426242528292@2B2@2A2D2E2L2N2L2M2P2Q2X2Z2X2Y2\2]2d2f2d2e2h2i2p2r2p2q2t2u2|2~2|2}222222222222222222222222222222222222222222222222222222222222222333333 33 3 333333333$3&3$3%3(3)3032303134353<3>3<3=3@3A3H3J3H3I3L3M3T3V3T3U3X3Y3`3b3`3a3d3e3l3n3l3m3p3q3x3z3x3y3|3}33333333333333333333333333333333333333333333333333333333333333333444 44 4 4 4444444 4"4 4!4$4%4,4.4,4-4041484:48494<4=4D4F4D4E4H4I4P4R4P4Q4T4U4\4^4\4]4`4a4h4j4h4i4l4m4t4v4t4u4x4y444444444444444444444444444444444444444444444444444444444444444444455555 55555555555 5!5(5*5(5)5,5-5456545558595@5B5@5A5D5E5L5N5L5M5P5Q5X5Z5X5Y5\5]5d5f5d5e5h5i5p5r5p5q5t5u5|5~5|5}555555555555555555555555555555555555555555555555555555555555555666666 66 6 666666666$6&6$6%6(6)6062606164656<6>6<6=6@6A6H6J6H6I6L6M6T6V6T6U6X6Y6`6b6`6a6d6e6l6n6l6m6p6q6x6z6x6y6|6}66666666666666666666666666666666666666666666666666666666666666666777 77 7 7 7777777 7"7 7!7$7%7,7.7,7-7071787:78797<7=7D7F7D7E7H7I7P7R7P7Q7T7U7\7^7\7]7`7a7h7j7h7i7l7m7t7v7t7u7x7y777777777777777777777777777777777777777777777777777777777777777777788888 88888888888 8!8(8*8(8)8,8-8486848588898@8B8@8A8D8E8L8N8L8M8P8Q8X8Z8X8Y8\8]8d8f8d8e8h8i8p8r8p8q8t8u8|8~8|8}888888888888888888888888888888888888888888888888888888888888888999999 99 9 999999999$9&9$9%9(9)9092909194959<9>9<9=9@9A9H9J9H9I9L9M9T9V9T9U9X9Y9`9b9`9a9d9e9l9n9l9m9p9q9x9z9x9y9|9}99999999999999999999999999999999999999999999999999999999999999999::: :: : : ::::::: :": :!:$:%:,:.:,:-:0:1:8:::8:9:<:=:D:F:D:E:H:I:P:R:P:Q:T:U:\:^:\:]:`:a:h:j:h:i:l:m:t:v:t:u:x:y:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;; ;;;;;;;;;;; ;!;(;*;(;);,;-;4;6;4;5;8;9;@;B;@;A;D;E;L;N;L;M;P;Q;X;Z;X;Y;\;];d;f;d;e;h;i;p;r;p;q;t;u;|;~;|;};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<< << < <<<<<<<<<$<&<$<%<(<)<0<2<0<1<4<5<<<><<<=<@<A<H<J<H<I<L<M<T<V<T<U<X<Y<`<b<`<a<d<e<l<n<l<m<p<q<x<z<x<y<|<}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== == = = ======= ="= =!=$=%=,=.=,=-=0=1=8=:=8=9=<===D=F=D=E=H=I=P=R=P=Q=T=U=\=^=\=]=`=a=h=j=h=i=l=m=t=v=t=u=x=y===================================================================>>>>> >>>>>>>>>>> >!>(>*>(>)>,>->4>6>4>5>8>9>@>B>@>A>D>E>L>N>L>M>P>Q>X>Z>X>Y>\>]>d>f>d>e>h>i>p>r>p>q>t>u>|>~>|>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????? ?? ? ?????????$?&?$?%?(?)?0?2?0?1?4?5??BEHEGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~         ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~                 % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~          ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~   %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~                % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~ !! ! ! ! ! !!!!!!!!!!#!!!"!%!&!-!/!-!.!1!2!9!;!9!:!=!>!E!G!E!F!I!J!Q!S!Q!R!U!V!]!_!]!^!a!b!i!k!i!j!m!n!u!w!u!v!y!z!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""" " """""""""""!""")"+")"*"-"."5"7"5"6"9":"A"C"A"B"E"F"M"O"M"N"Q"R"Y"["Y"Z"]"^"e"g"e"f"i"j"q"s"q"r"u"v"}""}"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""###### ## ##########%#'#%#&#)#*#1#3#1#2#5#6#=#?#=#>#A#B#I#K#I#J#M#N#U#W#U#V#Y#Z#a#c#a#b#e#f#m#o#m#n#q#r#y#{#y#z#}#~#################################################################$$ $ $ $ $ $$$$$$$$!$#$!$"$%$&$-$/$-$.$1$2$9$;$9$:$=$>$E$G$E$F$I$J$Q$S$Q$R$U$V$]$_$]$^$a$b$i$k$i$j$m$n$u$w$u$v$y$z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%% % %%%%%%%%%%%!%"%)%+%)%*%-%.%5%7%5%6%9%:%A%C%A%B%E%F%M%O%M%N%Q%R%Y%[%Y%Z%]%^%e%g%e%f%i%j%q%s%q%r%u%v%}%%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&& && &&&&&&&&&&%&'&%&&&)&*&1&3&1&2&5&6&=&?&=&>&A&B&I&K&I&J&M&N&U&W&U&V&Y&Z&a&c&a&b&e&f&m&o&m&n&q&r&y&{&y&z&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' ' ' ' ''''''''!'#'!'"'%'&'-'/'-'.'1'2'9';'9':'='>'E'G'E'F'I'J'Q'S'Q'R'U'V']'_']'^'a'b'i'k'i'j'm'n'u'w'u'v'y'z'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((( ( (((((((((((!("()(+()(*(-(.(5(7(5(6(9(:(A(C(A(B(E(F(M(O(M(N(Q(R(Y([(Y(Z(](^(e(g(e(f(i(j(q(s(q(r(u(v(}((}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))) )) ))))))))))%)')%)&)))*)1)3)1)2)5)6)=)?)=)>)A)B)I)K)I)J)M)N)U)W)U)V)Y)Z)a)c)a)b)e)f)m)o)m)n)q)r)y){)y)z)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))** * * * * ********!*#*!*"*%*&*-*/*-*.*1*2*9*;*9*:*=*>*E*G*E*F*I*J*Q*S*Q*R*U*V*]*_*]*^*a*b*i*k*i*j*m*n*u*w*u*v*y*z*******************************************************************++++ + +++++++++++!+"+)+++)+*+-+.+5+7+5+6+9+:+A+C+A+B+E+F+M+O+M+N+Q+R+Y+[+Y+Z+]+^+e+g+e+f+i+j+q+s+q+r+u+v+}++}+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,, ,, ,,,,,,,,,,%,',%,&,),*,1,3,1,2,5,6,=,?,=,>,A,B,I,K,I,J,M,N,U,W,U,V,Y,Z,a,c,a,b,e,f,m,o,m,n,q,r,y,{,y,z,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- - - - - --------!-#-!-"-%-&---/---.-1-2-9-;-9-:-=->-E-G-E-F-I-J-Q-S-Q-R-U-V-]-_-]-^-a-b-i-k-i-j-m-n-u-w-u-v-y-z-------------------------------------------------------------------.... . ...........!.".).+.).*.-...5.7.5.6.9.:.A.C.A.B.E.F.M.O.M.N.Q.R.Y.[.Y.Z.].^.e.g.e.f.i.j.q.s.q.r.u.v.}..}.~...............................................................////// // //////////%/'/%/&/)/*/1/3/1/2/5/6/=/?/=/>/A/B/I/K/I/J/M/N/U/W/U/V/Y/Z/a/c/a/b/e/f/m/o/m/n/q/r/y/{/y/z/}/~/////////////////////////////////////////////////////////////////00 0 0 0 0 00000000!0#0!0"0%0&0-0/0-0.0102090;090:0=0>0E0G0E0F0I0J0Q0S0Q0R0U0V0]0_0]0^0a0b0i0k0i0j0m0n0u0w0u0v0y0z00000000000000000000000000000000000000000000000000000000000000000001111 1 11111111111!1"1)1+1)1*1-1.15171516191:1A1C1A1B1E1F1M1O1M1N1Q1R1Y1[1Y1Z1]1^1e1g1e1f1i1j1q1s1q1r1u1v1}11}1~111111111111111111111111111111111111111111111111111111111111111222222 22 2222222222%2'2%2&2)2*2123212225262=2?2=2>2A2B2I2K2I2J2M2N2U2W2U2V2Y2Z2a2c2a2b2e2f2m2o2m2n2q2r2y2{2y2z2}2~2222222222222222222222222222222222222222222222222222222222222222233 3 3 3 3 33333333!3#3!3"3%3&3-3/3-3.3132393;393:3=3>3E3G3E3F3I3J3Q3S3Q3R3U3V3]3_3]3^3a3b3i3k3i3j3m3n3u3w3u3v3y3z33333333333333333333333333333333333333333333333333333333333333333334444 4 44444444444!4"4)4+4)4*4-4.45474546494:4A4C4A4B4E4F4M4O4M4N4Q4R4Y4[4Y4Z4]4^4e4g4e4f4i4j4q4s4q4r4u4v4}44}4~444444444444444444444444444444444444444444444444444444444444444555555 55 5555555555%5'5%5&5)5*5153515255565=5?5=5>5A5B5I5K5I5J5M5N5U5W5U5V5Y5Z5a5c5a5b5e5f5m5o5m5n5q5r5y5{5y5z5}5~5555555555555555555555555555555555555555555555555555555555555555566 6 6 6 6 66666666!6#6!6"6%6&6-6/6-6.6162696;696:6=6>6E6G6E6F6I6J6Q6S6Q6R6U6V6]6_6]6^6a6b6i6k6i6j6m6n6u6w6u6v6y6z66666666666666666666666666666666666666666666666666666666666666666667777 7 77777777777!7"7)7+7)7*7-7.75777576797:7A7C7A7B7E7F7M7O7M7N7Q7R7Y7[7Y7Z7]7^7e7g7e7f7i7j7q7s7q7r7u7v7}77}7~777777777777777777777777777777777777777777777777777777777777777888888 88 8888888888%8'8%8&8)8*8183818285868=8?8=8>8A8B8I8K8I8J8M8N8U8W8U8V8Y8Z8a8c8a8b8e8f8m8o8m8n8q8r8y8{8y8z8}8~8888888888888888888888888888888888888888888888888888888888888888899 9 9 9 9 99999999!9#9!9"9%9&9-9/9-9.9192999;999:9=9>9E9G9E9F9I9J9Q9S9Q9R9U9V9]9_9]9^9a9b9i9k9i9j9m9n9u9w9u9v9y9z9999999999999999999999999999999999999999999999999999999999999999999:::: : :::::::::::!:":):+:):*:-:.:5:7:5:6:9:::A:C:A:B:E:F:M:O:M:N:Q:R:Y:[:Y:Z:]:^:e:g:e:f:i:j:q:s:q:r:u:v:}::}:~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;; ;; ;;;;;;;;;;%;';%;&;);*;1;3;1;2;5;6;=;?;=;>;A;B;I;K;I;J;M;N;U;W;U;V;Y;Z;a;c;a;b;e;f;m;o;m;n;q;r;y;{;y;z;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< < < < < <<<<<<<<!<#<!<"<%<&<-</<-<.<1<2<9<;<9<:<=<><E<G<E<F<I<J<Q<S<Q<R<U<V<]<_<]<^<a<b<i<k<i<j<m<n<u<w<u<v<y<z<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==== = ===========!="=)=+=)=*=-=.=5=7=5=6=9=:=A=C=A=B=E=F=M=O=M=N=Q=R=Y=[=Y=Z=]=^=e=g=e=f=i=j=q=s=q=r=u=v=}==}=~===============================================================>>>>>> >> >>>>>>>>>>%>'>%>&>)>*>1>3>1>2>5>6>=>?>=>>>A>B>I>K>I>J>M>N>U>W>U>V>Y>Z>a>c>a>b>e>f>m>o>m>n>q>r>y>{>y>z>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ? ? ? ? ????????!?#?!?"?%?&?-?/?-?.?1?2?9?;?9?:?=?>?E?G?E?F?I?J?Q?S?Q?R?U?V?]?_?]?^?a?b?i?k?i?j?m?n?u?w?u?v?y?z???????????????????????????????????????????????????????????????????@@@@ @ @@@@@@@@@@@!@"@)@+@)@*@-@.@5@7@5@6@9@:@A@C@A@B@E@F@M@O@M@N@Q@R@Y@[@Y@Z@]@^@e@g@e@f@i@j@q@s@q@r@u@v@}@@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAA AA AAAAAAAAAA%A'A%A&A)A*A1A3A1A2A5A6A=A?A=A>AAABAIAKAIAJAMANAUAWAUAVAYAZAaAcAaAbAeAfAmAoAmAnAqArAyA{AyAzA}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB B B B B BBBBBBBB!B#B!B"B%B&B-B/B-B.B1B2B9B;B9B:B=B>BEBGBEBFBIBJBQBSBQBRBUBVB]B_B]B^BaBbBiBkBiBjBmBnBuBwBuBvByBzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC C CCCCCCCCCCC!C"C)C+C)C*C-C.C5C7C5C6C9C:CACCCACBCECFCMCOCMCNCQCRCYC[CYCZC]C^CeCgCeCfCiCjCqCsCqCrCuCvC}CC}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDD DD DDDDDDDDDD%D'D%D&D)D*D1D3D1D2D5D6D=D?D=D>DADBDIDKDIDJDMDNDUDWDUDVDYDZDaDcDaDbDeDfDmDoDmDnDqDrDyD{DyDzD}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEE E E E E EEEEEEEE!E#E!E"E%E&E-E/E-E.E1E2E9E;E9E:E=E>EEEGEEEFEIEJEQESEQEREUEVE]E_E]E^EaEbEiEkEiEjEmEnEuEwEuEvEyEzEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFF F FFFFFFFFFFF!F"F)F+F)F*F-F.F5F7F5F6F9F:FAFCFAFBFEFFFMFOFMFNFQFRFYF[FYFZF]F^FeFgFeFfFiFjFqFsFqFrFuFvF}FF}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGG GG GGGGGGGGGG%G'G%G&G)G*G1G3G1G2G5G6G=G?G=G>GAGBGIGKGIGJGMGNGUGWGUGVGYGZGaGcGaGbGeGfGmGoGmGnGqGrGyG{GyGzG}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHH H H H H HHHHHHHH!H#H!H"H%H&H-H/H-H.H1H2H9H;H9H:H=H>HEHGHEHFHIHJHQHSHQHRHUHVH]H_H]H^HaHbHiHkHiHjHmHnHuHwHuHvHyHzHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIII I IIIIIIIIIII!I"I)I+I)I*I-I.I5I7I5I6I9I:IAICIAIBIEIFIMIOIMINIQIRIYI[IYIZI]I^IeIgIeIfIiIjIqIsIqIrIuIvI}II}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{             " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~            " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z {              " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~       "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~           " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z { !!!! ! !!!!!!!! !!!"!#!*!,!*!+!.!/!6!8!6!7!:!;!B!D!B!C!F!G!N!P!N!O!R!S!Z!\!Z![!^!_!f!h!f!g!j!k!r!t!r!s!v!w!~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""&"("&"'"*"+"2"4"2"3"6"7">"@">"?"B"C"J"L"J"K"N"O"V"X"V"W"Z"["b"d"b"c"f"g"n"p"n"o"r"s"z"|"z"{"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#""## # # # #########"#$#"###&#'#.#0#.#/#2#3#:#<#:#;#>#?#F#H#F#G#J#K#R#T#R#S#V#W#^#`#^#_#b#c#j#l#j#k#n#o#v#x#v#w#z#{###################################################################$$$$ $ $$$$$$$$ $$$"$#$*$,$*$+$.$/$6$8$6$7$:$;$B$D$B$C$F$G$N$P$N$O$R$S$Z$\$Z$[$^$_$f$h$f$g$j$k$r$t$r$s$v$w$~$$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%&%(%&%'%*%+%2%4%2%3%6%7%>%@%>%?%B%C%J%L%J%K%N%O%V%X%V%W%Z%[%b%d%b%c%f%g%n%p%n%o%r%s%z%|%z%{%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%&& & & & &&&&&&&&&"&$&"&#&&&'&.&0&.&/&2&3&:&<&:&;&>&?&F&H&F&G&J&K&R&T&R&S&V&W&^&`&^&_&b&c&j&l&j&k&n&o&v&x&v&w&z&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''' ' '''''''' '''"'#'*','*'+'.'/'6'8'6'7':';'B'D'B'C'F'G'N'P'N'O'R'S'Z'\'Z'['^'_'f'h'f'g'j'k'r't'r's'v'w'~''~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((((((((((((&(((&('(*(+(2(4(2(3(6(7(>(@(>(?(B(C(J(L(J(K(N(O(V(X(V(W(Z([(b(d(b(c(f(g(n(p(n(o(r(s(z(|(z({(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()(()) ) ) ) )))))))))")$)")#)&)').)0).)/)2)3):)<):);)>)?)F)H)F)G)J)K)R)T)R)S)V)W)^)`)^)_)b)c)j)l)j)k)n)o)v)x)v)w)z){)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**** * ******** ***"*#***,***+*.*/*6*8*6*7*:*;*B*D*B*C*F*G*N*P*N*O*R*S*Z*\*Z*[*^*_*f*h*f*g*j*k*r*t*r*s*v*w*~**~****************************************************************++++++++++++++++++&+(+&+'+*+++2+4+2+3+6+7+>+@+>+?+B+C+J+L+J+K+N+O+V+X+V+W+Z+[+b+d+b+c+f+g+n+p+n+o+r+s+z+|+z+{+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,++,, , , , ,,,,,,,,,",$,",#,&,',.,0,.,/,2,3,:,<,:,;,>,?,F,H,F,G,J,K,R,T,R,S,V,W,^,`,^,_,b,c,j,l,j,k,n,o,v,x,v,w,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---- - -------- ---"-#-*-,-*-+-.-/-6-8-6-7-:-;-B-D-B-C-F-G-N-P-N-O-R-S-Z-\-Z-[-^-_-f-h-f-g-j-k-r-t-r-s-v-w-~--~----------------------------------------------------------------..................&.(.&.'.*.+.2.4.2.3.6.7.>.@.>.?.B.C.J.L.J.K.N.O.V.X.V.W.Z.[.b.d.b.c.f.g.n.p.n.o.r.s.z.|.z.{.~.............................................................../..// / / / /////////"/$/"/#/&/'/./0/.///2/3/://?/F/H/F/G/J/K/R/T/R/S/V/W/^/`/^/_/b/c/j/l/j/k/n/o/v/x/v/w/z/{///////////////////////////////////////////////////////////////////0000 0 00000000 000"0#0*0,0*0+0.0/060806070:0;0B0D0B0C0F0G0N0P0N0O0R0S0Z0\0Z0[0^0_0f0h0f0g0j0k0r0t0r0s0v0w0~00~0000000000000000000000000000000000000000000000000000000000000000111111111111111111&1(1&1'1*1+1214121316171>1@1>1?1B1C1J1L1J1K1N1O1V1X1V1W1Z1[1b1d1b1c1f1g1n1p1n1o1r1s1z1|1z1{1~11111111111111111111111111111111111111111111111111111111111111121122 2 2 2 222222222"2$2"2#2&2'2.202.2/22232:2<2:2;2>2?2F2H2F2G2J2K2R2T2R2S2V2W2^2`2^2_2b2c2j2l2j2k2n2o2v2x2v2w2z2{22222222222222222222222222222222222222222222222222222222222222222223333 3 33333333 333"3#3*3,3*3+3.3/363836373:3;3B3D3B3C3F3G3N3P3N3O3R3S3Z3\3Z3[3^3_3f3h3f3g3j3k3r3t3r3s3v3w3~33~3333333333333333333333333333333333333333333333333333333333333333444444444444444444&4(4&4'4*4+4244424346474>4@4>4?4B4C4J4L4J4K4N4O4V4X4V4W4Z4[4b4d4b4c4f4g4n4p4n4o4r4s4z4|4z4{4~44444444444444444444444444444444444444444444444444444444444444454455 5 5 5 555555555"5$5"5#5&5'5.505.5/52535:5<5:5;5>5?5F5H5F5G5J5K5R5T5R5S5V5W5^5`5^5_5b5c5j5l5j5k5n5o5v5x5v5w5z5{55555555555555555555555555555555555555555555555555555555555555555556666 6 66666666 666"6#6*6,6*6+6.6/666866676:6;6B6D6B6C6F6G6N6P6N6O6R6S6Z6\6Z6[6^6_6f6h6f6g6j6k6r6t6r6s6v6w6~66~6666666666666666666666666666666666666666666666666666666666666666777777777777777777&7(7&7'7*7+7274727376777>7@7>7?7B7C7J7L7J7K7N7O7V7X7V7W7Z7[7b7d7b7c7f7g7n7p7n7o7r7s7z7|7z7{7~77777777777777777777777777777777777777777777777777777777777777787788 8 8 8 888888888"8$8"8#8&8'8.808.8/82838:8<8:8;8>8?8F8H8F8G8J8K8R8T8R8S8V8W8^8`8^8_8b8c8j8l8j8k8n8o8v8x8v8w8z8{88888888888888888888888888888888888888888888888888888888888888888889999 9 99999999 999"9#9*9,9*9+9.9/969896979:9;9B9D9B9C9F9G9N9P9N9O9R9S9Z9\9Z9[9^9_9f9h9f9g9j9k9r9t9r9s9v9w9~99~9999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::&:(:&:':*:+:2:4:2:3:6:7:>:@:>:?:B:C:J:L:J:K:N:O:V:X:V:W:Z:[:b:d:b:c:f:g:n:p:n:o:r:s:z:|:z:{:~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;; ; ; ; ;;;;;;;;;";$;";#;&;';.;0;.;/;2;3;:;<;:;;;>;?;F;H;F;G;J;K;R;T;R;S;V;W;^;`;^;_;b;c;j;l;j;k;n;o;v;x;v;w;z;{;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<< < <<<<<<<< <<<"<#<*<,<*<+<.</<6<8<6<7<:<;<B<D<B<C<F<G<N<P<N<O<R<S<Z<\<Z<[<^<_<f<h<f<g<j<k<r<t<r<s<v<w<~<<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==================&=(=&='=*=+=2=4=2=3=6=7=>=@=>=?=B=C=J=L=J=K=N=O=V=X=V=W=Z=[=b=d=b=c=f=g=n=p=n=o=r=s=z=|=z={=~===============================================================>==>> > > > >>>>>>>>>">$>">#>&>'>.>0>.>/>2>3>:><>:>;>>>?>F>H>F>G>J>K>R>T>R>S>V>W>^>`>^>_>b>c>j>l>j>k>n>o>v>x>v>w>z>{>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???? ? ???????? ???"?#?*?,?*?+?.?/?6?8?6?7?:?;?B?D?B?C?F?G?N?P?N?O?R?S?Z?\?Z?[?^?_?f?h?f?g?j?k?r?t?r?s?v?w?~??~????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@&@(@&@'@*@+@2@4@2@3@6@7@>@@@>@?@B@C@J@L@J@K@N@O@V@X@V@W@Z@[@b@d@b@c@f@g@n@p@n@o@r@s@z@|@z@{@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@AA A A A AAAAAAAAA"A$A"A#A&A'A.A0A.A/A2A3A:AA?AFAHAFAGAJAKARATARASAVAWA^A`A^A_AbAcAjAlAjAkAnAoAvAxAvAwAzA{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB B BBBBBBBB BBB"B#B*B,B*B+B.B/B6B8B6B7B:B;BBBDBBBCBFBGBNBPBNBOBRBSBZB\BZB[B^B_BfBhBfBgBjBkBrBtBrBsBvBwB~BB~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCC&C(C&C'C*C+C2C4C2C3C6C7C>C@C>C?CBCCCJCLCJCKCNCOCVCXCVCWCZC[CbCdCbCcCfCgCnCpCnCoCrCsCzC|CzC{C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDD D D D DDDDDDDDD"D$D"D#D&D'D.D0D.D/D2D3D:DD?DFDHDFDGDJDKDRDTDRDSDVDWD^D`D^D_DbDcDjDlDjDkDnDoDvDxDvDwDzD{DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEE E EEEEEEEE EEE"E#E*E,E*E+E.E/E6E8E6E7E:E;EBEDEBECEFEGENEPENEOERESEZE\EZE[E^E_EfEhEfEgEjEkErEtErEsEvEwE~EE~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFF&F(F&F'F*F+F2F4F2F3F6F7F>F@F>F?FBFCFJFLFJFKFNFOFVFXFVFWFZF[FbFdFbFcFfFgFnFpFnFoFrFsFzF|FzF{F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGFFGG G G G GGGGGGGGG"G$G"G#G&G'G.G0G.G/G2G3G:GG?GFGHGFGGGJGKGRGTGRGSGVGWG^G`G^G_GbGcGjGlGjGkGnGoGvGxGvGwGzG{GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHH H HHHHHHHH HHH"H#H*H,H*H+H.H/H6H8H6H7H:H;HBHDHBHCHFHGHNHPHNHOHRHSHZH\HZH[H^H_HfHhHfHgHjHkHrHtHrHsHvHwH~HH~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIII&I(I&I'I*I+I2I4I2I3I6I7I>I@I>I?IBICIJILIJIKINIOIVIXIVIWIZI[IbIdIbIcIfIgInIpInIoIrIsIzI|IzI{I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx                 ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x                    ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |    ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x   !!!!!!!!!!!!!!!!! !'!)!'!(!+!,!3!5!3!4!7!8!?!A!?!@!C!D!K!M!K!L!O!P!W!Y!W!X![!\!c!e!c!d!g!h!o!q!o!p!s!t!{!}!{!|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!""" " " " """""""""#"%"#"$"'"("/"1"/"0"3"4";"=";"<"?"@"G"I"G"H"K"L"S"U"S"T"W"X"_"a"_"`"c"d"k"m"k"l"o"p"w"y"w"x"{"|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""## ### # ########!## ###$#+#-#+#,#/#0#7#9#7#8#;#<#C#E#C#D#G#H#O#Q#O#P#S#T#[#]#[#\#_#`#g#i#g#h#k#l#s#u#s#t#w#x###################################################################$$$$$$$$$$$$$$$$$ $'$)$'$($+$,$3$5$3$4$7$8$?$A$?$@$C$D$K$M$K$L$O$P$W$Y$W$X$[$\$c$e$c$d$g$h$o$q$o$p$s$t${$}${$|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$%%% % % % %%%%%%%%%#%%%#%$%'%(%/%1%/%0%3%4%;%=%;%<%?%@%G%I%G%H%K%L%S%U%S%T%W%X%_%a%_%`%c%d%k%m%k%l%o%p%w%y%w%x%{%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& &&& & &&&&&&&&!&& &#&$&+&-&+&,&/&0&7&9&7&8&;&<&C&E&C&D&G&H&O&Q&O&P&S&T&[&]&[&\&_&`&g&i&g&h&k&l&s&u&s&t&w&x&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''' ''')'''('+','3'5'3'4'7'8'?'A'?'@'C'D'K'M'K'L'O'P'W'Y'W'X'['\'c'e'c'd'g'h'o'q'o'p's't'{'}'{'|''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''('((( ( ( ( (((((((((#(%(#($('(((/(1(/(0(3(4(;(=(;(<(?(@(G(I(G(H(K(L(S(U(S(T(W(X(_(a(_(`(c(d(k(m(k(l(o(p(w(y(w(x({(|(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()) ))) ) ))))))))!)) )#)$)+)-)+),)/)0)7)9)7)8);)<)C)E)C)D)G)H)O)Q)O)P)S)T)[)])[)\)_)`)g)i)g)h)k)l)s)u)s)t)w)x)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))***************** *'*)*'*(*+*,*3*5*3*4*7*8*?*A*?*@*C*D*K*M*K*L*O*P*W*Y*W*X*[*\*c*e*c*d*g*h*o*q*o*p*s*t*{*}*{*|****************************************************************+*+++ + + + +++++++++#+%+#+$+'+(+/+1+/+0+3+4+;+=+;+<+?+@+G+I+G+H+K+L+S+U+S+T+W+X+_+a+_+`+c+d+k+m+k+l+o+p+w+y+w+x+{+|++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,, ,,, , ,,,,,,,,!,, ,#,$,+,-,+,,,/,0,7,9,7,8,;,<,C,E,C,D,G,H,O,Q,O,P,S,T,[,],[,\,_,`,g,i,g,h,k,l,s,u,s,t,w,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------- -'-)-'-(-+-,-3-5-3-4-7-8-?-A-?-@-C-D-K-M-K-L-O-P-W-Y-W-X-[-\-c-e-c-d-g-h-o-q-o-p-s-t-{-}-{-|----------------------------------------------------------------.-... . . . .........#.%.#.$.'.(./.1./.0.3.4.;.=.;.<.?.@.G.I.G.H.K.L.S.U.S.T.W.X._.a._.`.c.d.k.m.k.l.o.p.w.y.w.x.{.|..................................................................// /// / ////////!// /#/$/+/-/+/,///0/7/9/7/8/;/> >>> > >>>>>>>>!>> >#>$>+>->+>,>/>0>7>9>7>8>;><>C>E>C>D>G>H>O>Q>O>P>S>T>[>]>[>\>_>`>g>i>g>h>k>l>s>u>s>t>w>x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????? ?'?)?'?(?+?,?3?5?3?4?7?8???A???@?C?D?K?M?K?L?O?P?W?Y?W?X?[?\?c?e?c?d?g?h?o?q?o?p?s?t?{?}?{?|????????????????????????????????????????????????????????????????@?@@@ @ @ @ @@@@@@@@@#@%@#@$@'@(@/@1@/@0@3@4@;@=@;@<@?@@@G@I@G@H@K@L@S@U@S@T@W@X@_@a@_@`@c@d@k@m@k@l@o@p@w@y@w@x@{@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AAA A AAAAAAAA!AA A#A$A+A-A+A,A/A0A7A9A7A8A;A?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< <!<"<#<$<%<&<'<(<)<*<+<,<-<.</<0<1<2<3<4<5<6<7<8<9<:<;<<<=<><?<@<A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z<[<\<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|<}<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========= = = = = =================== =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIDATA&DLIqQ7P7$R7$s$rtT7S7$U7$v$uwW7V7$X7$y$x z Z7 Y7$[7$|${ } ]7\7$^7$$~`7_7$a7$$c7b7$d7$$f7e7$g7$$i7h7$j7$$l7k7$m7$$o7 n7%p7$%"!r7#q7%s7%%%$u7&t7%v7%%('x7)w7 %y7% %+*{7,z7 %|7 % %.-~7/}7%7%%10727%7%%43757%7%%76787%7%%:97;7%7%%=<7>7%7%%@?7A7!%7 %"%CB7D7$%7#%%%FE7G7'%7&%(%IH7J7*%7)%+%LK7M7-%7,%.%ON7P70%7/%1%RQ7S73%72%4%UT7V76%75%7%XW7Y79%78%:%[Z7\7<%7;%=%^]7_7?%7>%@%a`7b7B%7A%C%dc7e7E%7D%F%gf7h7H%7G%I%ji7k7K%7J%L%ml7n7N%7M%O%po7q7Q%7P%R%sr7t7T%7S%U%vu7w7W%7V%X%yx7z7Z%7Y%[%|{7}7]%7\%^%~77`%7_%a%77c%7b%d%77f%7e%g%77i%7h%j%77l%7k%m%77o%7n%p%77r%7q%s%77u%7t%v%77x%7w% y% 77{%7z% |%  77~%7}%%77%7%%77%7%%77%7%%77%7%%77%7%%77%8%!% "88%8%$%#%88%8%'%&(88% 8%*%)+ 8 8% 8%-%,.8 8%8%0%/188%8%3%2488%8%6%5788%8%9%8:88%8%<%;=88%8%?%>@ 88%!8%B%AC#8"8%$8%E%DF&8%8%'8%H%GI)8(8%*8%K%JL,8+8%-8%N%MO/8.8%08%Q%PR2818%38%T%SU5848%68%W%VX8878%98%Z%Y[;8:8%<8%]%\^>8=8%?8%`%_aA8@8%B8%c%bdD8C8%E8%f%egG8F8%H8%i%hjJ8I8%K8%l%kmM8L8%N8%o%npP8O8%Q8%r%qsS8R8%T8%u%tvV8U8%W8%x%w yY8 X8%Z8%{%z | \8 [8%]8%~%}_8^8%`8%%b8a8%c8%%e8d8%f8%%h8g8%i8%%k8j8%l8%%n8m8%o8%&! q8"p8&r8&&$#t8%s8&u8&&'&w8(v8&x8& &*)z8+y8 &{8 & &-,}8.|8&~8 &&0/818&8&&32848&8&&65878&8&&988:8&8&&<;8=8&8&&?>8@8 &8&!&BA8C8#&8"&$&ED8F8&&8%&'&HG8I8)&8(&*&KJ8L8,&8+&-&NM8O8/&8.&0&QP8R82&81&3&TS8U85&84&6&WV8X88&87&9&ZY8[8;&8:&<&]\8^8>&8=&?&`_8a8A&8@&B&cb8d8D&8C&E&fe8g8G&8F&H&ih8j8J&8I&K&lk8m8M&8L&N&on8p8P&8O&Q&rq8s8S&8R&T&ut8v8V&8U&W&xw8y8Y&8X&Z&{z8|8\&8[&]&~}88_&8^&`&88b&8a&c&88e&8d&f&88h&8g&i&88k&8j&l&88n&8m&o&88q&8p&r&88t&8s&u&88w&8v&x& 88z&8y& {&  88}&8|&~& 88&8&&88&8&&88&8&&88&8&&88&8&&88&8& &!99&9&#&"$99&9&&&%'99&9&)&(* 9 9& 9&,&+- 9 9&9&/&.099&9&2&1399&9&5&4699&9&8&7999&9&;&:<99&9&>&=?99& 9&A&@B"9!9&#9&D&CE%9$9&&9&G&FH(9'9&)9&J&IK+9*9&,9&M&LN.9-9&/9&P&OQ1909&29&S&RT4939&59&V&UW7969&89&Y&XZ:999&;9&\&[]=9<9&>9&_&^`@9?9&A9&b&acC9B9&D9&e&dfF9E9&G9&h&giI9H9&J9&k&jlL9K9&M9&n&moO9N9&P9&q&prR9Q9&S9&t&suU9T9&V9&w&vxX9 W9&Y9&z&y { [9 Z9&\9&}&|~ ^9]9&_9&&a9`9&b9&&d9c9&e9&&g9f9&h9&&j9i9&k9&&m9l9&n9&& p9!o9'q9''#"s9$r9't9''&%v9'u9'w9'')(y9*x9 'z9 ' ',+|9-{9 '}9 ''/.90~9'9''21939'9''54969'9''87999'9'';:9<9'9''>=9?9'9' 'A@9B9"'9!'#'DC9E9%'9$'&'GF9H9('9'')'JI9K9+'9*','ML9N9.'9-'/'PO9Q91'90'2'SR9T94'93'5'VU9W97'96'8'YX9Z9:'99';'\[9]9='9<'>'_^9`9@'9?'A'ba9c9C'9B'D'ed9f9F'9E'G'hg9i9I'9H'J'kj9l9L'9K'M'nm9o9O'9N'P'qp9r9R'9Q'S'ts9u9U'9T'V'wv9x9X'9W'Y'zy9{9['9Z'\'}|9~9^'9]'_'99a'9`'b'99d'9c'e'99g'9f'h'99j'9i'k'99m'9l'n'99p'9o'q'99s'9r't'99v'9u'w'99y'9x' z'  99|'9{' }' 99'9~''99'9''99'9''99'9''99'9''99'9'' :9':'"'!#::':'%'$&::':'('') ::' :'+'*, : :' :'.'-/::':'1'02::':'4'35::':'7'68::':':'9;::':'='<>::':'@'?A!: :'":'C'BD$:#:'%:'F'EG':&:'(:'I'HJ*:):'+:'L'KM-:,:'.:'O'NP0:/:'1:'R'QS3:2:'4:'U'TV6:5:'7:'X'WY9:8:'::'['Z\<:;:'=:'^']_?:>:'@:'a'`bB:A:'C:'d'ceE:D:'F:'g'fhH:G:'I:'j'ikK:J:'L:'m'lnN:M:'O:'p'oqQ:P:'R:'s'rtT:S:'U:'v'uwW:V:'X:'y'x z Z: Y:'[:'|'{ } ]:\:'^:''~`:_:'a:''c:b:'d:''f:e:'g:''i:h:'j:''l:k:'m:''o: n:(p:'("!r:#q:(s:((%$u:&t:(v:((('x:)w: (y:( (+*{:,z: (|: ( (.-~:/}:(:((10:2:(:((43:5:(:((76:8:(:((:9:;:(:((=<:>:(:((@?:A:!(: ("(CB:D:$(:#(%(FE:G:'(:&(((IH:J:*(:)(+(LK:M:-(:,(.(ON:P:0(:/(1(RQ:S:3(:2(4(UT:V:6(:5(7(XW:Y:9(:8(:([Z:\:<(:;(=(^]:_:?(:>(@(a`:b:B(:A(C(dc:e:E(:D(F(gf:h:H(:G(I(ji:k:K(:J(L(ml:n:N(:M(O(po:q:Q(:P(R(sr:t:T(:S(U(vu:w:W(:V(X(yx:z:Z(:Y([(|{:}:](:\(^(~::`(:_(a(::c(:b(d(::f(:e(g(::i(:h(j(::l(:k(m(::o(:n(p(::r(:q(s(::u(:t(v(::x(:w( y( ::{(:z( |(  ::~(:}((::(:((::(:((::(:((::(:((::(:((::(;(!( ";;(;($(#%;;(;('(&(;;( ;(*()+ ; ;( ;(-(,.; ;(;(0(/1;;(;(3(24;;(;(6(57;;(;(9(8:;;(;(<(;=;;(;(?(>@ ;;(!;(B(AC#;";($;(E(DF&;%;(';(H(GI);(;(*;(K(JL,;+;(-;(N(MO/;.;(0;(Q(PR2;1;(3;(T(SU5;4;(6;(W(VX8;7;(9;(Z(Y[;;:;(<;(](\^>;=;(?;(`(_aA;@;(B;(c(bdD;C;(E;(f(egG;F;(H;(i(hjJ;I;(K;(l(kmM;L;(N;(o(npP;O;(Q;(r(qsS;R;(T;(u(tvV;U;(W;(x(w yY; X;(Z;({(z | \; [;(];(~(}_;^;(`;((b;a;(c;((e;d;(f;((h;g;(i;((k;j;(l;((n;m;(o;()! q;"p;)r;))$#t;%s;)u;))'&w;(v;)x;) )*)z;+y; ){; ) )-,};.|;)~; ))0/;1;);))32;4;);))65;7;);))98;:;);))<;;=;);))?>;@; );)!)BA;C;#);")$)ED;F;&);%)')HG;I;));()*)KJ;L;,);+)-)NM;O;/);.)0)QP;R;2);1)3)TS;U;5);4)6)WV;X;8);7)9)ZY;[;;);:)<)]\;^;>);=)?)`_;a;A);@)B)cb;d;D);C)E)fe;g;G);F)H)ih;j;J);I)K)lk;m;M);L)N)on;p;P);O)Q)rq;s;S);R)T)ut;v;V);U)W)xw;y;Y);X)Z){z;|;\);[)])~};;_);^)`);;b);a)c);;e);d)f);;h);g)i);;k);j)l);;n);m)o);;q);p)r);;t);s)u);;w);v)x) ;;z);y) {)  ;;});|)~) ;;);));;);));;);));;);));;);));;);) )!<<)<)#)"$<<)<)&)%'<<)<)))(* < <) <),)+- < <)<)/).0<<)<)2)13<<)<)5)46<<)<)8)79<<)<);):<<<)<)>)=?<<) <)A)@B"<!<)#<)D)CE%<$<)&<)G)FH(<'<))<)J)IK+<*<),<)M)LN.<-<)/<)P)OQ1<0<)2<)S)RT4<3<)5<)V)UW7<6<)8<)Y)XZ:<9<);<)\)[]=<<<)><)_)^`@<?<)A<)b)acC<B<)D<)e)dfF<E<)G<)h)giI<H<)J<)k)jlL<K<)M<)n)moO<N<)P<)q)prR<Q<)S<)t)suU<T<)V<)w)vxX< W<)Y<)z)y { [< Z<)\<)})|~ ^<]<)_<))a<`<)b<))d<c<)e<))g<f<)h<))j<i<)k<))m<l<)n<)) p<!o<*q<**#"s<$r<*t<**&%v<'u<*w<**)(y<*x< *z< * *,+|<-{< *}< **/.<0~<*<**21<3<*<**54<6<*<**87<9<*<**;:<<<*<**>=<?<*<* *A@<B<"*<!*#*DC<E<%*<$*&*GF<H<(*<'*)*JI<K<+*<**,*ML<N<.*<-*/*PO<Q<1*<0*2*SR<T<4*<3*5*VU<W<7*<6*8*YX<Z<:*<9*;*\[<]<=*<<*>*_^<`<@*<?*A*ba<c<C*<B*D*ed<f<F*<E*G*hg<i<I*<H*J*kj<l<L*<K*M*nm<o<O*<N*P*qp<r<R*<Q*S*ts<u<U*<T*V*wv<x<X*<W*Y*zy<{<[*<Z*\*}|<~<^*<]*_*<<a*<`*b*<<d*<c*e*<<g*<f*h*<<j*<i*k*<<m*<l*n*<<p*<o*q*<<s*<r*t*<<v*<u*w*<<y*<x* z*  <<|*<{* }* <<*<~**<<*<**<<*<**<<*<**<<*<**<<*<** =<*=*"*!#==*=*%*$&==*=*(*') ==* =*+**, = =* =*.*-/==*=*1*02==*=*4*35==*=*7*68==*=*:*9;==*=*=*<>==*=*@*?A!= =*"=*C*BD$=#=*%=*F*EG'=&=*(=*I*HJ*=)=*+=*L*KM-=,=*.=*O*NP0=/=*1=*R*QS3=2=*4=*U*TV6=5=*7=*X*WY9=8=*:=*[*Z\<=;=*==*^*]_?=>=*@=*a*`bB=A=*C=*d*ceE=D=*F=*g*fhH=G=*I=*j*ikK=J=*L=*m*lnN=M=*O=*p*oqQ=P=*R=*s*rtT=S=*U=*v*uwW=V=*X=*y*x z Z= Y=*[=*|*{ } ]=\=*^=**~`=_=*a=**c=b=*d=**f=e=*g=**i=h=*j=**l=k=*m=**o= n=+p=*+"!r=#q=+s=++%$u=&t=+v=++('x=)w= +y=+ ++*{=,z= +|= + +.-~=/}=+=++10=2=+=++43=5=+=++76=8=+=++:9=;=+=++=<=>=+=++@?=A=!+= +"+CB=D=$+=#+%+FE=G='+=&+(+IH=J=*+=)+++LK=M=-+=,+.+ON=P=0+=/+1+RQ=S=3+=2+4+UT=V=6+=5+7+XW=Y=9+=8+:+[Z=\=<+=;+=+^]=_=?+=>+@+a`=b=B+=A+C+dc=e=E+=D+F+gf=h=H+=G+I+ji=k=K+=J+L+ml=n=N+=M+O+po=q=Q+=P+R+sr=t=T+=S+U+vu=w=W+=V+X+yx=z=Z+=Y+[+|{=}=]+=\+^+~==`+=_+a+==c+=b+d+==f+=e+g+==i+=h+j+==l+=k+m+==o+=n+p+==r+=q+s+==u+=t+v+==x+=w+ y+ =={+=z+ |+  ==~+=}++==+=++==+=++==+=++==+=++==+=++==+>+!+ ">>+>+$+#%>>+>+'+&(>>+ >+*+)+ > >+ >+-+,.> >+>+0+/1>>+>+3+24>>+>+6+57>>+>+9+8:>>+>+<+;=>>+>+?+>@ >>+!>+B+AC#>">+$>+E+DF&>%>+'>+H+GI)>(>+*>+K+JL,>+>+->+N+MO/>.>+0>+Q+PR2>1>+3>+T+SU5>4>+6>+W+VX8>7>+9>+Z+Y[;>:>+<>+]+\^>>=>+?>+`+_aA>@>+B>+c+bdD>C>+E>+f+egG>F>+H>+i+hjJ>I>+K>+l+kmM>L>+N>+o+npP>O>+Q>+r+qsS>R>+T>+u+tvV>U>+W>+x+w yY> X>+Z>+{+z | \> [>+]>+~+}_>^>+`>++b>a>+c>++e>d>+f>++h>g>+i>++k>j>+l>++n>m>+o>+,! q>"p>,r>,,$#t>%s>,u>,,'&w>(v>,x>, ,*)z>+y> ,{> , ,-,}>.|>,~> ,,0/>1>,>,,32>4>,>,,65>7>,>,,98>:>,>,,<;>=>,>,,?>>@> ,>,!,BA>C>#,>",$,ED>F>&,>%,',HG>I>),>(,*,KJ>L>,,>+,-,NM>O>/,>.,0,QP>R>2,>1,3,TS>U>5,>4,6,WV>X>8,>7,9,ZY>[>;,>:,<,]\>^>>,>=,?,`_>a>A,>@,B,cb>d>D,>C,E,fe>g>G,>F,H,ih>j>J,>I,K,lk>m>M,>L,N,on>p>P,>O,Q,rq>s>S,>R,T,ut>v>V,>U,W,xw>y>Y,>X,Z,{z>|>\,>[,],~}>>_,>^,`,>>b,>a,c,>>e,>d,f,>>h,>g,i,>>k,>j,l,>>n,>m,o,>>q,>p,r,>>t,>s,u,>>w,>v,x, >>z,>y, {,  >>},>|,~, >>,>,,>>,>,,>>,>,,>>,>,,>>,>,,>>,>, ,!??,?,#,"$??,?,&,%'??,?,),(* ? ?, ?,,,+- ? ?,?,/,.0??,?,2,13??,?,5,46??,?,8,79??,?,;,:<??,?,>,=???, ?,A,@B"?!?,#?,D,CE%?$?,&?,G,FH(?'?,)?,J,IK+?*?,,?,M,LN.?-?,/?,P,OQ1?0?,2?,S,RT4?3?,5?,V,UW7?6?,8?,Y,XZ:?9?,;?,\,[]=??,_,^`@???,A?,b,acC?B?,D?,e,dfF?E?,G?,h,giI?H?,J?,k,jlL?K?,M?,n,moO?N?,P?,q,prR?Q?,S?,t,suU?T?,V?,w,vxX? W?,Y?,z,y { [? Z?,\?,},|~ ^?]?,_?,,a?`?,b?,,d?c?,e?,,g?f?,h?,,j?i?,k?,,m?l?,n?,, p?!o?-q?--#"s?$r?-t?--&%v?'u?-w?--)(y?*x? -z? - -,+|?-{? -}? --/.?0~?-?--21?3?-?--54?6?-?--87?9?-?--;:?<?-?-->=???-?- -A@?B?"-?!-#-DC?E?%-?$-&-GF?H?(-?'-)-JI?K?+-?*-,-ML?N?.-?--/-PO?Q?1-?0-2-SR?T?4-?3-5-VU?W?7-?6-8-YX?Z?:-?9-;-\[?]?=-?<->-_^?`?@-??-A-ba?c?C-?B-D-ed?f?F-?E-G-hg?i?I-?H-J-kj?l?L-?K-M-nm?o?O-?N-P-qp?r?R-?Q-S-ts?u?U-?T-V-wv?x?X-?W-Y-zy?{?[-?Z-\-}|?~?^-?]-_-??a-?`-b-??d-?c-e-??g-?f-h-??j-?i-k-??m-?l-n-??p-?o-q-??s-?r-t-??v-?u-w-??y-?x- z-  ??|-?{- }- ??-?~--??-?--??-?--??-?--??-?--??-?-- @?-@-"-!#@@-@-%-$&@@-@-(-') @@- @-+-*, @ @- @-.--/@@-@-1-02@@-@-4-35@@-@-7-68@@-@-:-9;@@-@-=-<>@@-@-@-?A!@ @-"@-C-BD$@#@-%@-F-EG'@&@-(@-I-HJ*@)@-+@-L-KM-@,@-.@-O-NP0@/@-1@-R-QS3@2@-4@-U-TV6@5@-7@-X-WY9@8@-:@-[-Z\<@;@-=@-^-]_?@>@-@@-a-`bB@A@-C@-d-ceE@D@-F@-g-fhH@G@-I@-j-ikK@J@-L@-m-lnN@M@-O@-p-o q Q@ P@-R@-s-r t T@ S@-U@-v-u w W@ V@-X@-y-x z Z@ Y@-[@-|-{ } ]@ \@-^@--~  `@ _@-a@--  c@ b@-d@--  f@ e@-g@--  i@ h@-j@--  l@ k@-m@--  o@ n@.p@-." ! r@# q@.s@..% $ u@& t@.v@..( ' x@) w@ .y@. .+ * {@, z@ .|@ . .. - ~@/ }@.@..1 0 @2 @.@..4 3 @5 @.@..7 6 @8 @.@..: 9 @; @.@..= < @> @.@..@ ? @A @!.@ .".C B @D @$.@#.%.F E @G @'.@&.(.I H @J @*.@).+.L K @M @-.@,...O N @P @0.@/.1.R Q @S @3.@2.4.U T @V @6.@5.7.X W @Y @9.@8.:.[ Z @\ @<.@;.=.^ ] @_ @?.@>.@.a ` @b @B.@A.C.d c @e @E.@D.F.g f @h @H.@G.I.j i @k @K.@J.L.m l @n @N.@M.O.p o @q @Q.@P.R.s r @t @T.@S.U.v u @w @W.@V.X.y x @z @Z.@Y.[.| { @} @].@\.^. ~ @ @`.@_.a.  @ @c.@b.d.  @ @f.@e.g.  @ @i.@h.j.  @ @l.@k.m.  @ @o.@n.p.  @ @r.@q.s.  @ @u.@t.v.  @ @x.@w. y.  @ @{.@z. |.   @ @~.@}..  @ @.@..  @ @.@..  @ @.@..  @ @.@..  @ @.@..  @ @.A.!.  " A A.A.$.# % A A.A.'.& ( A A. A.*.) + A A. A.-., . A A.A.0./ 1 A A.A.3.2 4 A A.A.6.5 7 A A.A.9.8 : A A.A.<.; = A A.A.?.> @ A A.!A.B.A C #A "A.$A.E.D F &A %A.'A.H.G I )A (A.*A.K.J L ,A +A.-A.N.M O /A .A.0A.Q.P R 2A 1A.3A.T.S U 5A 4A.6A.W.V X 8A 7A.9A.Z.Y [ ;A :A.A =A.?A.`._ a AA @A.BA.c.b d DA CA.EA.f.e g GA FA.HA.i.h j JA IA.KA.l.k m MA LA.NA.o.n p PA OA.QA.r.q s SA RA.TA.u.t v VA UA.WA.x.w y YA XA.ZA.{.z | \A [A.]A.~.}  _A ^A.`A..  bA aA.cA..  eA dA.fA..  hA gA.iA..  kA jA.lA..  nA mA.oA./!  qA" pA/rA//$ # tA% sA/uA//' & wA( vA/xA/ /* ) zA+ yA /{A / /- , }A. |A/~A //0 / A1 A/A//3 2 A4 A/A//6 5 A7 A/A//9 8 A: A/A//< ; A= A/A//? > A@ A /A/!/B A AC A#/A"/$/E D AF A&/A%/'/H G AI A)/A(/*/K J AL A,/A+/-/N M AO A//A./0/Q P AR A2/A1/3/T S AU A5/A4/6/W V AX A8/A7/9/Z Y A[ A;/A://A=/?/` _ Aa AA/A@/B/c b Ad AD/AC/E/f e Ag AG/AF/H/i h Aj AJ/AI/K/l k Am AM/AL/N/o n Ap AP/AO/Q/r q As AS/AR/T/u t Av AV/AU/W/x w Ay AY/AX/Z/{ z A| A\/A[/]/~ } A A_/A^/`/  A Ab/Aa/c/  A Ae/Ad/f/  A Ah/Ag/i/  A Ak/Aj/l/  A An/Am/o/  A Aq/Ap/r/  A At/As/u/  A Aw/Av/x/  A Az/Ay/ {/   A A}/A|/~/   A A/A//  A A/A//  A A/A//  A A/A//  A A/A//  A A/A/ / ! B B/B/#/" $ B B/B/&/% ' B B/B/)/( * B B/ B/,/+ - B B/B///. 0 B B/B/2/1 3 B B/B/5/4 6 B B/B/8/7 9 B B/B/;/: < B B/B/>/= ? B B/ B/A/@ B "B !B/#B/D/C E %B $B/&B/G/F H (B 'B/)B/J/I K +B *B/,B/M/L N .B -B//B/P/O Q 1B 0B/2B/S/R T 4B 3B/5B/V/U W 7B 6B/8B/Y/X Z :B 9B/;B/\/[ ] =B B/_/^ ` @B ?B/AB/b/a c CB BB/DB/e/d f FB EB/GB/h/g i IB HB/JB/k/j l LB KB/MB/n/m o OB NB/PB/q/p r RB QB/SB/t/s u UB TB/VB/w/v x XB WB/YB/z/y { [B ZB/\B/}/| ~ ^B ]B/_B//  aB `B/bB//  dB cB/eB//  gB fB/hB//  jB iB/kB//  mB lB/nB//  pB! oB0qB00# " sB$ rB0tB00& % vB' uB0wB00) ( yB* xB 0zB 0 0, + |B- {B 0}B 00/ . B0 ~B0B002 1 B3 B0B005 4 B6 B0B008 7 B9 B0B00; : B< B0B00> = B? B0B0 0A @ BB B"0B!0#0D C BE B%0B$0&0G F BH B(0B'0)0J I BK B+0B*0,0M L BN B.0B-0/0P O BQ B10B0020S R BT B40B3050V U BW B70B6080Y X BZ B:0B90;0\ [ B] B=0B<0>0_ ^ B` B@0B?0A0b a Bc BC0BB0D0e d Bf BF0BE0G0h g Bi BI0BH0J0k j Bl BL0BK0M0n m Bo BO0BN0P0q p Br BR0BQ0S0t s Bu BU0BT0V0w v Bx BX0BW0Y0z y B{ B[0BZ0\0} | B~ B^0B]0_0  B Ba0B`0b0  B Bd0Bc0e0  B Bg0Bf0h0  B Bj0Bi0k0  B Bm0Bl0n0  B Bp0Bo0q0  B Bs0Br0t0  B Bv0Bu0w0  B By0Bx0 z0   B B|0B{0 }0   B B0B~00  B B0B00  B B0B00  B B0B00  B B0B00  B B0B00  C B0C0"0! # C C0C0%0$ & C C0C0(0' ) C C0 C0+0* , C C0 C0.0- / C C0C0100 2 C C0C0403 5 C C0C0706 8 C C0C0:09 ; C C0C0=0< > C C0C0@0? A !C C0"C0C0B D $C #C0%C0F0E G 'C &C0(C0I0H J *C )C0+C0L0K M -C ,C0.C0O0N P 0C /C01C0R0Q S 3C 2C04C0U0T V 6C 5C07C0X0W Y 9C 8C0:C0[0Z \ C0@C0a0` b BC AC0CC0d0c e EC DC0FC0g0f h HC GC0IC0j0i k KC JC0LC0m0l n NC MC0OC0p0o q QC PC0RC0s0r t TC SC0UC0v0u w WC VC0XC0y0x z ZC YC0[C0|0{ } ]C \C0^C00~  `C _C0aC00  cC bC0dC00  fC eC0gC00  iC hC0jC00  lC kC0mC00  oC nC1pC01" ! rC# qC1sC11% $ uC& tC1vC11( ' xC) wC 1yC1 1+ * {C, zC 1|C 1 1. - ~C/ }C1C111 0 C2 C1C114 3 C5 C1C117 6 C8 C1C11: 9 C; C1C11= < C> C1C11@ ? CA C!1C 1"1C B CD C$1C#1%1F E CG C'1C&1(1I H CJ C*1C)1+1L K CM C-1C,1.1O N CP C01C/111R Q CS C31C2141U T CV C61C5171X W CY C91C81:1[ Z C\ C<1C;1=1^ ] C_ C?1C>1@1a ` Cb CB1CA1C1d c Ce CE1CD1F1g f Ch CH1CG1I1j i Ck CK1CJ1L1m l Cn CN1CM1O1p o Cq CQ1CP1R1s r Ct CT1CS1U1v u Cw CW1CV1X1y x Cz CZ1CY1[1| { C} C]1C\1^1 ~ C C`1C_1a1  C Cc1Cb1d1  C Cf1Ce1g1  C Ci1Ch1j1  C Cl1Ck1m1  C Co1Cn1p1  C Cr1Cq1s1  C Cu1Ct1v1  C Cx1Cw1 y1  C C{1Cz1 |1   C C~1C}11  C C1C11  C C1C11  C C1C11  C C1C11  C C1C11  C C1D1!1  " D D1D1$1# % D D1D1'1& ( D D1 D1*1) + D D1 D1-1, . D D1D101/ 1 D D1D1312 4 D D1D1615 7 D D1D1918 : D D1D1<1; = D D1D1?1> @ D D1!D1B1A C #D "D1$D1E1D F &D %D1'D1H1G I )D (D1*D1K1J L ,D +D1-D1N1M O /D .D10D1Q1P R 2D 1D13D1T1S U 5D 4D16D1W1V X 8D 7D19D1Z1Y [ ;D :D1D =D1?D1`1_ a AD @D1BD1c1b d DD CD1ED1f1e g GD FD1HD1i1h j JD ID1KD1l1k m MD LD1ND1o1n p PD OD1QD1r1q s SD RD1TD1u1t v VD UD1WD1x1w y YD XD1ZD1{1z | \D [D1]D1~1}  _D ^D1`D11  bD aD1cD11  eD dD1fD11  hD gD1iD11  kD jD1lD11  nD mD1oD12!  qD" pD2rD22$ # tD% sD2uD22' & wD( vD2xD2 2* ) zD+ yD 2{D 2 2- , }D. |D2~D 220 / D1 D2D223 2 D4 D2D226 5 D7 D2D229 8 D: D2D22< ; D= D2D22? > D@ D 2D2!2B A DC D#2D"2$2E D DF D&2D%2'2H G DI D)2D(2*2K J DL D,2D+2-2N M DO D/2D.202Q P DR D22D1232T S DU D52D4262W V DX D82D7292Z Y D[ D;2D:2<2] \ D^ D>2D=2?2` _ Da DA2D@2B2c b Dd DD2DC2E2f e Dg DG2DF2H2i h Dj DJ2DI2K2l k Dm DM2DL2N2o n Dp DP2DO2Q2r q Ds DS2DR2T2u t Dv DV2DU2W2x w Dy DY2DX2Z2{ z D| D\2D[2]2~ } D D_2D^2`2  D Db2Da2c2  D De2Dd2f2  D Dh2Dg2i2  D Dk2Dj2l2  D Dn2Dm2o2 D Dq2Dp2 r2  D Dt2Ds2 u2  D Dw2Dv2 x2 D Dz2Dy2 {2 D D}2D|2 ~2  D D2D2 2  D D2D2 2  D D2D2 2  D D2D2 2  D D2D2 2  D D2D2 2 ! E E2E2# 2" $ E E2E2& 2% ' E E2E2) 2( * E E2 E2, 2+ - E E2E2/ 2. 0 E E2E22 21 3 E E2E25 24 6 E E2E28 27 9 E E2E2; 2: < E E2E2> 2= ? E E2 E2A 2@ B "E !E2#E2D 2C E %E $E2&E2G 2F H (E 'E2)E2J 2I K +E *E2,E2M 2L N .E -E2/E2P 2O Q 1E 0E22E2S 2R T 4E 3E25E2V 2U W 7E 6E28E2Y 2X Z :E 9E2;E2\ 2[ ] =E E2_ 2^ ` @E ?E2AE2b 2a c CE BE2DE2e 2d f FE EE2GE2h 2g i IE HE2JE2k 2j l LE KE2ME2n 2m o OENE2PE2q 2p r REQE2SE2t 2s u UETE2VE2w 2v x XE WE2YE2z 2y { [E ZE2\E2} 2| ~ ^E]E2_E2 2  aE`E2bE2 2  dEcE2eE2 2  gEfE2hE2 2  jEiE2kE2 2  mElE2nE2 2  pE!oE3qE3 3 # "sE$rE3tE3 3 & %vE'uE3wE3 3 ) (yE*xE 3zE 3 3 , +|E-{E 3}E 3 3 / .E0~E3E3 3 2 1E3E3E3 3 5 4E6E3E3 3 8 7E9E3E3 3 ; :E<E3E3 3 > =E?E3E3 3 A @EBE"3E!3 #3 D CEEE%3E$3 &3 G FEHE(3E'3 )3 J IEKE+3E*3 ,3 M LENE.3E-3 /3 P OEQE13E03 23 S RETE43E33 53 V UEWE73E63 83 Y XEZE:3E93 ;3 \ [E]E=3E<3 >3 _ ^E`E@3E?3 A3 b aEcEC3EB3 D3 e dEfEF3EE3 G3 h gEiEI3EH3 J3 k jElEL3EK3 M3 n mEoEO3EN3 P3 q pErER3EQ3 S3 t sEuEU3ET3 V3 w vExEX3EW3 Y3 z yE{E[3EZ3 \3 } |E~E^3E]3 _3  EEa3E`3 b3  EEd3Ec3 e3  EEg3Ef3 h3  EEj3Ei3 k3  EEm3El3 n3  EEp3Eo3!q3!!EEs3Er3!t3!!EEv3Eu3!w3!!EEy3Ex3 !z3 ! !EE|3E{3 !}3 !!EE3E~3!3!!EE3E3!3!!EE3E3!3!!EE3E3!3!!EE3E3!3!!EE3E3!3! !FE3F3"!3!!#!FF3F3%!3$!&!FF3F3(!3'!)! FF3 F3+!3*!,! F F3 F3.!3-!/!FF3F31!30!2!FF3F34!33!5!FF3F37!36!8!FF3F3:!39!;!FF3F3=!3!FF3F3@!3?!A!!F F3"F3C!3B!D!$F#F3%F3F!3E!G!'F&F3(F3I!3H!J!*F)F3+F3L!3K!M!-F,F3.F3O!3N!P!0F/F31F3R!3Q!S!3F2F34F3U!3T!V!6F5F37F3X!3W!Y!9F8F3:F3[!3Z!\!F3@F3a!3`!b!BFAF3CF3d!3c!e!EFDF3FF3g!3f!h!HFGF3IF3j!3i!k!KFJF3LF3m!3l!n!NFMF3OF3p!3o!q!QFPF3RF3s!3r!t!TFSF3UF3v!3u!w!WFVF3XF3y!3x! z! ZF YF3[F3|!3{! }! ]F\F3^F3!3~!!`F_F3aF3!3!!cFbF3dF3!3!!fFeF3gF3!3!!iFhF3jF3!3!!lFkF3mF3!3!!oF nF4pF3!4!"!!rF#qF4sF4!4!%!$uF&tF4vF4!4!(!'xF)wF 4yF4! 4!+!*{F,zF 4|F 4! 4!.!-~F/}F4F4!4!1!0F2F4F4!4!4!3F5F4F4!4!7!6F8F4F4!4!:!9F;F4F4!4!=!<F>F4F4!4!@!?FAF!4F 4!"4!C!BFDF$4F#4!%4!F!EFGF'4F&4!(4!I!HFJF*4F)4!+4!L!KFMF-4F,4!.4!O!NFPF04F/4!14!R!QFSF34F24!44!U!TFVF64F54!74!X!WFYF94F84!:4![!ZF\F<4F;4!=4!^!]F_F?4F>4!@4!a!`FbFB4FA4!C4!d!cFeFE4FD4!F4!g!fFhFH4FG4!I4!j!iFkFK4FJ4!L4!m!lFnFN4FM4!O4!p!oFqFQ4FP4!R4!s!rFtFT4FS4!U4!v!uFwFW4FV4!X4!y!xFzFZ4FY4![4!|!{F}F]4F\4!^4!!~FF`4F_4!a4!!FFc4Fb4!d4!!FFf4Fe4!g4!!FFi4Fh4!j4!!FFl4Fk4!m4!!FFo4Fn4"p4!"FFr4Fq4"s4""FFu4Ft4"v4""FFx4Fw4 "y4" "FF{4Fz4 "|4 " "FF~4F}4"4""FF4F4"4""FF4F4"4""FF4F4"4""FF4F4"4""FF4F4"4""FF4G4!"4 """GG4G4$"4#"%"GG4G4'"4&"("GG4 G4*"4)"+" G G4 G4-"4,"."G G4G40"4/"1"GG4G43"42"4"GG4G46"45"7"GG4G49"48":"GG4G4<"4;"="GG4G4?"4>"@" GG4!G4B"4A"C"#G"G4$G4E"4D"F"&G%G4'G4H"4G"I")G(G4*G4K"4J"L",G+G4-G4N"4M"O"/G.G40G4Q"4P"R"2G1G43G4T"4S"U"5G4G46G4W"4V"X"8G7G49G4Z"4Y"[";G:G4G=G4?G4`"4_"a"AG@G4BG4c"4b"d"DGCG4EG4f"4e"g"GGFG4HG4i"4h"j"JGIG4KG4l"4k"m"MGLG4NG4o"4n"p"PGOG4QG4r"4q"s"SGRG4TG4u"4t"v"VGUG4WG4x"4w" y"YG XG4ZG4{"4z" |" \G [G4]G4~"4}""_G^G4`G4"4""bGaG4cG4"4""eGdG4fG4"4""hGgG4iG4"4""kGjG4lG4"4""nGmG4oG4"5"!" qG"pG5rG5"5"$"#tG%sG5uG5"5"'"&wG(vG5xG5" 5"*")zG+yG 5{G 5" 5"-",}G.|G5~G 5"5"0"/G1G5G5"5"3"2G4G5G5"5"6"5G7G5G5"5"9"8G:G5G5"5"<";G=G5G5"5"?">G@G 5G5"!5"B"AGCG#5G"5"$5"E"DGFG&5G%5"'5"H"GGIG)5G(5"*5"K"JGLG,5G+5"-5"N"MGOG/5G.5"05"Q"PGRG25G15"35"T"SGUG55G45"65"W"VGXG85G75"95"Z"YG[G;5G:5"<5"]"\G^G>5G=5"?5"`"_GaGA5G@5"B5"c"bGdGD5GC5"E5"f"eGgGG5GF5"H5"i"hGjGJ5GI5"K5"l"kGmGM5GL5"N5"o"nGpGP5GO5"Q5"r"qGsGS5GR5"T5"u"tGvGV5GU5"W5"x"wGyGY5GX5"Z5"{"zG|G\5G[5"]5"~"}GG_5G^5"`5""GGb5Ga5"c5""GGe5Gd5"f5""GGh5Gg5"i5""GGk5Gj5"l5""GGn5Gm5"o5"#GGq5Gp5#r5##GGt5Gs5#u5##GGw5Gv5#x5# #GGz5Gy5 #{5 # #GG}5G|5#~5 ##GG5G5#5##GG5G5#5##GG5G5#5##GG5G5#5##GG5G5#5##GG5G5 #5#!#HH5H5##5"#$#HH5H5&#5%#'#HH5H5)#5(#*# H H5 H5,#5+#-# H H5H5/#5.#0#HH5H52#51#3#HH5H55#54#6#HH5H58#57#9#HH5H5;#5:#<#HH5H5>#5=#?#HH5 H5A#5@#B#"H!H5#H5D#5C#E#%H$H5&H5G#5F#H#(H'H5)H5J#5I#K#+H*H5,H5M#5L#N#.H-H5/H5P#5O#Q#1H0H52H5S#5R#T#4H3H55H5V#5U#W#7H6H58H5Y#5X#Z#:H9H5;H5\#5[#]#=HH5_#5^#`#@H?H5AH5b#5a#c#CHBH5DH5e#5d#f#FHEH5GH5h#5g#i#IHHH5JH5k#5j#l#LHKH5MH5n#5m#o#OHNH5PH5q#5p#r#RHQH5SH5t#5s#u#UHTH5VH5w#5v#x#XH WH5YH5z#5y# {# [H ZH5\H5}#5|#~# ^H]H5_H5#5##aH`H5bH5#5##dHcH5eH5#5##gHfH5hH5#5##jHiH5kH5#5##mHlH5nH5#5# #pH!oH6qH6#6###"sH$rH6tH6#6#&#%vH'uH6wH6#6#)#(yH*xH 6zH 6# 6#,#+|H-{H 6}H 6#6#/#.H0~H6H6#6#2#1H3H6H6#6#5#4H6H6H6#6#8#7H9H6H6#6#;#:H<H6H6#6#>#=H?H6H6# 6#A#@HBH"6H!6##6#D#CHEH%6H$6#&6#G#FHHH(6H'6#)6#J#IHKH+6H*6#,6#M#LHNH.6H-6#/6#P#OHQH16H06#26#S#RHTH46H36#56#V#UHWH76H66#86#Y#XHZH:6H96#;6#\#[H]H=6H<6#>6#_#^H`H@6H?6#A6#b#aHcHC6HB6#D6#e#dHfHF6HE6#G6#h#gHiHI6HH6#J6#k#jHlHL6HK6#M6#n#mHoHO6HN6#P6#q#pHrHR6HQ6#S6#t#sHuHU6HT6#V6#w#vHxHX6HW6#Y6#z#yH{H[6HZ6#\6#}#|H~H^6H]6#_6##HHa6H`6#b6##HHd6Hc6#e6##HHg6Hf6#h6##HHj6Hi6#k6##HHm6Hl6#n6##HHp6Ho6$q6$$HHs6Hr6$t6$$HHv6Hu6$w6$$HHy6Hx6 $z6 $ $HH|6H{6 $}6 $$HH6H~6$6$$HH6H6$6$$HH6H6$6$$HH6H6$6$$HH6H6$6$$HH6H6$6$ $IH6I6"$6!$#$II6I6%$6$$&$II6I6($6'$)$ II6 I6+$6*$,$ I I6 I6.$6-$/$II6I61$60$2$II6I64$63$5$II6I67$66$8$II6I6:$69$;$II6I6=$6<$>$II6I6@$6?$A$!I I6"I6C$6B$D$$I#I6%I6F$6E$G$'I&I6(I6I$6H$J$*I)I6+I6L$6K$M$-I,I6.I6O$6N$P$0I/I61I6R$6Q$S$3I2I64I6U$6T$V$6I5I67I6X$6W$Y$9I8I6:I6[$6Z$\$I6@I6a$6`$b$BIAI6CI6d$6c$e$EIDI6FI6g$6f$h$HIGI6II6j$6i$k$KIJI6LI6m$6l$n$NIMI6OI6p$6o$q$QIPI6RI6s$6r$t$TISI6UI6v$6u$w$WIVI6XI6y$6x$ z$ ZI YI6[I6|$6{$ }$ ]I\I6^I6$6~$$`I_I6aI6$6$$cIbI6dI6$6$$fIeI6gI6$6$$iIhI6jI6$6$$lIkI6mI6$6$$oI nI7pI6$7$"$!rI#qI7sI7$7$%$$uI&tI7vI7$7$($'xI)wI 7yI7$ 7$+$*{I,zI 7|I 7$ 7$.$-~I/}I7I7$7$1$0I2I7I7$7$4$3I5I7I7$7$7$6I8I7I7$7$:$9I;I7I7$7$=$<I>I7I7$7$@$?IAI!7I 7$"7$C$BIDI$7I#7$%7$F$EIGI'7I&7$(7$I$HIJI*7I)7$+7$L$KIMI-7I,7$.7$O$NIPI07I/7$17$R$QISI37I27$47$U$TIVI67I57$77$X$WIYI97I87$:7$[$ZI\I<7I;7$=7$^$]I_I?7I>7$@7$a$`IbIB7IA7$C7$d$cIeIE7ID7$F7$g$fIhIH7IG7$I7$j$iIkIK7IJ7$L7$m$lInIN7IM7$O7$p$oDATA& sIJ vЖu ٯSMp@T #5ŚyNa HW V+( ̀Q G i-Ae7HDDtۊdfȬ B;ݾu >ۊdj);ݾuۊddì;ݾtۊdcĬ ;ݾu ۊdd#Ͼݾu܊d};ݾuۊdì;ݾuۊdȬ;ݾuۊd۬;ݾuۊd;ݾuۊdȬ̾ݾuڊdM;ݾuۊdެ6;ݾu5ۊd;ݾtۊdi;ݾu^ۊd;ݾu ۊd;ξݾu@܊dl̾ݾuڊdisg eξݾug *܋̮cgj X㰅ukݖqkkuݖquukݘqkkӆrݖqr^|rӆrݕqr\|rӆr~ԫr`|r~чr~zfr]|rz҆rz ݏEr\|rӆrݖqr^|rӇrݖqr^|rӆrݖqr_|rӇrݖqr^|rӇrݖqr\|rӆrݘqr_|rӆrݖqr^|ruݕquukݖqkkӇrݕqr]|rӆrݖqr\|rӆrݖqr^|rӇrݖqr]|ruݖqu)dm+ĩ"nBx++'dj)F's Z)m+"#+&!)"D#{;&t.>#kt,`bP%=(*0$+W..&*xo1*R !ne )!%g.),P~+ wpE)k8. 5OK+/C%U)%~)(Σ+!'e)ۆ#V'S+_,\(*C7'^)8Σ+6!`!+"}b* ,-E)+,@$)Tα+3k$A)+w$ӤD$)3+Ũ>$<)O/*%e+#)\ѻ,&&݅+)+QVΏ`$".O&6,27Ϲ1{"{T, &5+H , %w$ ީ*%t +qұ0q,;**$?)A+(%4W+$B*fϠ*EW$j$Q$*!,0Ȁ)үY]& $&ՍXG~|F8=IWrJ3E Y/#JK-DPD,U0Ot%8=^0N=>(Jk_$c%caACiuxw&bw,JA_?}(tmX2#+qGQ>k*N NKIfK-Kkѣ.ߣfף..W0rͬ1g׬1ం@3 <.f<.D <.kdkЌ$C $ld$Xk[kXL*N,״5 7_M3f_M+NUQfUQ㮂R%4դf%4d %4ke%4,ۍ ]% آM0 A{ H xhʋݡ @, ­2[ Eǝ @ Saɹ;I%,yX o s޿ԿDҶǩ + %FX KeȃF48_  zL¨vBh ͧ07J4  $xxvC @`; 2 cu-e }? #3V 0 wj œbƉ#>1!kuG' (3Vт  ; 带gZ׬@4 ӿ`Ù" 8 e \~ :yq%G _9m 2Q&Y۞ H%q ld / 5' گK - s} }K72ձl<׭+ +n \hpȼ= #eRx`]^   ,&NvTAcԗ Jw w؆| *÷ 7aI;&{JRU$ P٤fn \#f3/Gl&&D |%&}1H jƕ :Z- A;% Z7ա J%n 1ӼJj q   Q˿ d MT.u¹ I_ 6$@($;H,+mT" @=ImGY U,P K Λ  ~C( 7K  (Db*xC^ + ԝ ̶]nˋ 661 " o1LjK~WxU;jaNkj.M=nDA{GiNCmӚW2/JbX5*LۅGjlwBF6h|/9h@|-B[MjnnIhaV<_Cr/VIP(RϐIHK LCQm0J*P5PʓK1SBDLk_J9#s/L.g[Ύ t>A`RrR91A<\ƒA[ T\h\NBSY8SuA2YYoA#3pnn1Ad>NHAD7 @@2;3 8b/9ؤ \3/ RYb Zbe3kc 0jK8ۉ ='9. 9NL.hX0&)((۷%W0!&iNS0%N?]+0|0]*I4].f+Sf4^8*^+2Md+=8^*!>ޗ7^#R#> B=R*A 'RWem'etqp'(3~)OlG3-ڒ/&u5UYƁȿt0cje.}Pk7sU,'xUeSpIU+ZFBSSm HZČ61ӧ ZX1q:)/r/(oc5M)\'D/$'"83/_/nS8NPT8šj/PP1j~GaWĂ+g<1+f%^DM]2 0sF7 EJ5QR7]5(~e7 jVt7G4VtgGGg@S[g2]SJţS ]I,5sݍ]}t"+5,5}tiwv(ElB85l4h8585ѥ4hDQq4h|idQ2QiZNviMj$NNaMjJnMj l3JJ lޙ2^ l>t92=2t۝@Mќo*120B2|*md5f**1P5-2Լ'plA&m>&]}6oU]+c]<=2]-f=LjSf4^8*=0=8^*V=k7^#TX=@< U6P2TkWW5P,XP}W%1hWn\Mm1\1yWMJ!5R|MlB95l4h9595ѥ4hDQq4h|idQ2QiZNviMj$NNaMjSoMjk5SٹkךjSS j9@&&jaNQ"sr*L]Qq"[ZLh^Da^DhB9]\hEh:]:]FhG'tEhBm'̨'umfro)vx4|kg gycggh4jQ} d paq6QzH=yzcTl~g`\{dz2k7utx5kăuG-h*moKy3Eb߁.~noc#w‹ vy#[$qUdt|[\lycy\a?~=dzUmOJDL=cN)|t._^v $[~ˁ{lshz]@ N>yok{u:v*Ҁ|mij8eeHjpyeepw]4gEDw@V~a5gV~5z5g5g]5zbv5z޷wbvwbvw+Ӹu̠w8މ}Ruu}{u̠}wr|uur|+ӷu̠r|8,uu,u̠,]|uu]|*ӷu̠\|8 uu u̠ uuuu*ӷu̠u8/}uu/}Bu̠/}J2}uu2}*ӷu̠2}8ޖzuuu̠ޕzuuz*ӷu̠z8wjuuwu̠wuu+Ӷu̠8w)uuwWu̠w\~uu]~+ӷu̠]~8euudu̠dݢzuuzӸu̠z3z~uu3zu̠3zXuuX*ӷu̠X8޽%uuSu̠ܧuuӷu̠'yluuyu̠y{uu{ҷu̠{ޘ~誷uu~u̠~aݿuuҷu̠XۭuuXu̠Wuu+ӷu̠89zuu9z,u̠9z9ޭ{uu{*ӷu̠{8޿uuu̠Aݺ uu7ҷu̠|\|֫uu\|u̠\|yuuyӷu̠y$}«uu}u̠}޹uuѷu̠3|}uu}}+u̠}}8޳uuѷu̠!|uu|u̠|vuuv*ӷu̠v89uue5gUv 5g5gvIpŚl%phek{ hQЃ0`Ѝ. EKuʬ&o^胐 "qxj+LCW#(,fTY>#1xeSGq7PJpY'SfXIkhO1rg$a$:bcTM_x3YۊLt bii'ebrpqudk|x_d-#D%q+B6 A Bs!ʔqq(G-3(#(#3p WY7)g).#.B((tA6W.Zc)Sb;֋,bƋ{*yL 8w+'AlUe%AC8!!W$?W$G܆)2EE2Zi$꒓6يLB-@VA:.#D%+5mBtD&lH&lH@GJqnEnE)Ym?33[?yH"c #NC7BW,/6` /` ##^HیI ܣ I O׌Jv\ \$BmV))EC+a#/um#m+.[`[M:l*l*M$ V@eAes0˓(??>) L";'=:B Ds!ʔqq(I-;'#'#;)$ >وmCmv)!Y@>#Y%r"?CTw!4i^^Zőo݉>?$M+VfN{i^6I bIE%yad# Y-vA*^q8BBghXceX?thIR.>ixc3o7Y4aHN<*qk_V9RZc΀ma6@t[lYmӀ?qcg;f#V?P[GLǀ<6oe41|ic3 ŻM* 8C2%uQ&$F_{`` P )p{"^b0f ^a\&(8 Rk +wVoI͋Sf4H6gbTQ?iH pU*:;ATITaZ ՃM+1F!+\?S:҂_vKfi`-R jVA&kNth>#ы7+u N zN/@߂D)sg4T"Ƅtz.mD.gEF'!3+T|m\l26# Փ2 Ꮔ? /063dϐ2!@ ' T;h xM!v}bg+Dv ^lhF9a&Z+#br"J }Ǜ ț& ~&nH O3{ 1T("$ d- -($z$ d- -($z $ e- -($z $ e- -($z$ d- -($z $ e- -($z $ e- -($z $ e- -($z!$ e- -($z$ e- -($z!$ e- -($z$ e- -($z$ d- -($z $ e- -($z$ d- -($z$ d- -($z$ d- -($z!$ d- -($z $ d- -($z  &&jZH {3r·:^) R+|&Nbޒ7/ܜ2 #%.k)rɮA- 'lH"ٙC[$ =0݈BYM܏ e-I';S3)^ 4.7K)٤.uR$ F/ k8 v.V Z>̰)$_Z>̰m;Оq3cu)>æ%"sC\Ud3 f"f 3Ɂ[s›s=YV-#f3cW\!0v[PaK0_v)>5n;zZ;(q>ږ\#p>pQϥ\cG\sQbyמ5]$ ]B=%o:D?%ěG+-\; ::,fd0g,F_+UuU1+2U+%Ej#TnU邖i>%4LAA FPm07bp_0$9Z^b_u7e96#M:9#wE\A4JA$"h 1;rtdkBtd8`Ig>B]BIg#>]MJg)hL]Đ]h.E\ohhZ\\hTYvhڟjY֘Yj}k9rjp3k9k9͢p@^n>4ٖ9#@pU%B{dL}#99D%j9ⵦ^b_%W[vl0&%*oxdI?ܷ>" ">#QP}RRdd8}R(}k}RcݫV}kV}k1VIiԟVqݷHiшiAHiF"Og<8iy"͇TaPa+"aTㄭ"q5aTzTR5y XX '5 Us7cTeoUb%T>æg!W%sCm;О#ӑd.B :D?n!3\; :4fd0gb4Y+UuU32U3L/gT1;rtdkBtd7`WB]BW?]MWm*]đ]mG\omПhZ\\hTYvhڟjY֘Yj}n9rjp3n9n9͢p@^of͎#`nU\UdK# f"f C#[[s›>-W-#f3e.>5n;zZ;(q>ږ\#p>pl]ϥ\cG\sm]gm]TݺRg1@gRis?s=7R(Ei㡻RcTEi6TOEib6EiO@ji߉jiYOcO; c&=cmY gWR 4=OWpV{=eqe{=nAS=/'S8yRw19 a'ex|WwFjetq+?PBOLJiJ|K |<#h"u"<#$"u%ʦ$7]0tA"u"Aw$Bq|=)"u"|=$><#h"u"<#$%ʦ$7"u"ަ$C$&'褆"u"'$4)F"u"F,$G-?"u"-?$O@Q1q"u"Q10ȅ0:R1tXyR1D-XX_D--:74̂[NNHGfYCSB@;7GE)F1] EK<>k\E:1LU ai@!#4XGKt=Eu%-E݇cŃung` `J"Y \f}Ξuqמ?f]41l}xŀxVRQʉ7YB9*U񄖛QXC ł/ڣ*31N"Cysc ӕd|o$ _m!*䎃m@kq ,x"t8b>ߨKt՜dff-k,5Mz܍S)+*8'*L/ @߸\{ІxߠL P!Svocoٯ(?hy{$3hlhoDM H0q<"9qŦ;?#Lx>Ɋc٩hS@"7/ltS&uRjz?8Kdq iY= `R$pR$ 9<Gޚ "GHE 5@ \*C <% KOI OVpXP;%gDzig h>]]GP zP 0 ?zhe OLYR YLYIչ232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|A4qB4pܹ232|232|B4pA4qܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|232|B4pB4pܹ232|1)a/)a$߆JL/(1J)/Je(B/(1G&./G&BX/(1X/Xށ_u/(1p_ /p_(B/(1G&./G&Gc-/(1Ec./Ec2(B/(1G&./G&aW/(1 a/ a#(B/(1G&-/G&E]/(1*]/)]߅JL/(1J)/Je(B/(1G&-/G&pb=/(1kb'/kb,(B/(1G&./G&aG/(1a"/a)bC/(1b$/b*(B/(1G&-/G&bD/(1 b$/ b*`[/(1`/`!p`c/(1b`/b`4aU/(,ʞo#*%"۟5tJ#0l%Ӓ0v޾#֟1y#/Y(ߊ27XS^* Jے>x):N)1}#۟4t6ΞЦ( tv Yh ~"% ^ sf&htexUP@z݄PfnzzRf@zfL^kzzRK^=zK^K^kzzRK^=zL^L^kzzRK^=zL^L^kzzRK^=zK^K^kzzRK^=zL^K^kzzRK^=zK^K^kzzRK^=zK^L^kzzRL^=zL^L^kzzRL^=zL^K^kzzRK^=zK^K^kzzRK^=zK^L^kzzRK^=zK^K^kzzRK^=zL^L^kzzRK^=zL^L^kzzRK^=zK^K^kzzRK^=zL^K^kzzRK^=zK^K^kzzRK^=zK^L^kzzRL^=0|L^L^k0|0|UL^=exL^Pnex@9."Ȼ@9/Ef."DjCuf@9njCB0fCmC0m,jCmC/@!0yC EmCٙxC= jt dyCߘj:% G!Ҫ/E!ް2EYE'2!E'EwE&>Ϡ' D&ҭEm DG&ɣ%?ɢ%"B?DG;bLVDG4!;TR4kDGJ\%  CC  WH" \nWHWHE\٤@aDI-a@ېI&ba@9߻HIQMLMMLLMGMLMMLQJMGMQJMMQJ\JMGM\JMM\J`JMGM`JMM`J\JMGM\JMM\JQJMGMQJMMQJLMGMLMMLLMGMLMMLLMGMLMMLLMGMLMMLLMGMLMMLLMGMLMMLJMGMJ%MMJ!1T>MGM1TMM1Tś"SKMGM"S٢  %m%ٲQmm٢ &>%>٢ ۓoQOŲzozҨOȓ0}&>٢ oӶoo &>٢&>oآ o㳓 ӻғ,٢ %>> x$OUL'> > xؿUL3> > x35ULfdH> > xd}ULwd~pY> > xpYշULZ Z> > x ZзULZҜbS> > xbULcc_Y> > x_YַULYFS> > xF y Fv= fF= n)= = neULƆ?> > x?UL@$> > xؿUL3> > x35ULf"m> > x"UL$F|:> > x|:?UL;xvä> > xvUL;vO> > xO0ULPњHH> > xH~ULI-C> > xCUL&D4A> > x4A۸ULHBYЯ\> > x\UL> 3]$.>{4y6w<6y76+>z6ڼS&ap>l9 KW=8KƼ?R7r"%Kף"1<4J؋""0_Kκ%"}1J-JY+6K"*-ILsJ&LQ+.nJ/H JVDNJϙMMU:NM6ρŎIԮ=?IQKBNKVJg|CHYѝG^x,H,]OIϧKDIx]k'H@HMgHnbz HD_I> aIV R/CJX\BDIQI巢IWoHN(Ny~x~(usF5!!yg!y5xu.^D!zuھxuϞCx@^A!x+x՞=bu=^D{!cuucuܞDx D^Ay!xxA\uA^Dy!\u\uDxD^@}!xEx@cu%@^D!cubuDx+D^5!xx 9xu2<^@!zu'xuB"yDB^8m!yss>:l{^4|T~nl.c] mFlmV$b#9~p9x䀊qɁybxbx{yrz;~rJr+;~i҂P~6 {ihih {xH{|wpjxjx||w`"w^Z^0Z^^+h_.mPgPgman!zp=`M=`7zp4V6qԁ-cbeTeT|-cyuDd}fx{7us7uSfxB{x$|{{$|yÀR|tz~y~yz zp~{~ow ~'mwwjm}Jn*g}}gSiق&i߂m.h.hm'wn*$wlvvf$wBsw nrQr2n{o o {{o(qہcp{Cp1Cp{8` ||'D=^4^'DA7挈Gein1 1ino?ou] o! ou}xwv,Bz?x?xyBz{z~{mx|xqہx݀@r-Cp1Cp@rL8`r'D=^4^'DA7挈Gein1 1ino?ou] o! ou}kwv,kjjkxkll?zpjpj?z}0ńz\m9*9*\m ;?n5BiT7T7Bi sYj\{ó\{H{ }?? }&r,}Y{wqAwq#{x{x~mxS}}{a E};F`}|o}&LU_|&{_j}Sқ K Î1n٭OI15;!j]dK vǭi i hɞj(Op]ɞN:/ ܉Oɞ­HBҢ/ ϭRR@Y?[]¢xh2 hmJkԫ!e ʿxTXÁ 3GH-ʾ6 ֹS.Nݽ&UPX*`Ƅ5Só^ZӁh68*:n+7 8.gt !\k.[]ʞϭwxo B[ž­Ѹ zŝY2қ ' & & ŝH@r aڊ ǭѝ ƝMBc3Zr ٭rraj:㖋 ī6_2dO(b P( .eǠ D( %hK[8eWڍ̫ɳ8 +A`ֿ){ \3A©Bf"IsYb`.#)V"H䅋4*YG":mF텓`*ƞG"_IR텒]*͞W"㢳i@慀2)۝"G#%ߌ߆'Ou#!(s Ѕ+H"<{F텒]*ƞH"_I텓_*G"JH텓a*ɞ#^!Z6\(;#UJ[e/V"OpB=ʩO`B=/W)OxOpWʩO`W0جMtOxOpMͩO`MګMtOxOqMͪO`MګMtOxOpMͩO`MڬMtOxOpMͩO`MګMtOxOpMͩO`MګMtOxOpMͩO`MڬMtOxOpMͩO`MB=)OxOqB=ʪO`B=/i)OxOpiʩO`i-سMsOxOpMͩO`MB=)Oxt ( WI)')'p9*2}$#p9p9M+Z kW| #W 0 Ä ct `)!j3tGD6FF,~D]Kp]]KKwM3K"5MMX"`tt3HgwW' VOSt( dOSOSnX3ޖ4ߟgT94&͕gg@Ο\`d(a\\ 6} 0/ )'05WW ^K T %ժ-J %%~j3Ơ;j3O'X$5w|;K3+UK6'3+3+qma>W' a>a>( VOSt( dOSOSnX<(XvX<"5p¼A4B>{pL>{Bߗcmj jmxSBmwmSBSBNmƄB.mgxRBɄB gx+ȏLUiRQ݉jBQUiB?/`QjHC/`BHC'n%/`xCgnHCښCyђnA"y&CXwj FʛFwjWDQwjqXWDEWD/qǓD3PƬ_7E3PD6{7Eէ|3P.r|7EBuV|9uhNru0ukwܞu0uۍt[ڬ̞҃'wύtk)bbLkD HEkۊkҷ H$ H(kֻHTkkUHܼHkֲ7c4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7ό24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7Ќ24^+4^p2 _(F7ό24^+D$\xW*O]xJlW;WߡJlJArڑl-|q~0@10@q1kIRq"}ezqMb#bןqM Fr3FrΩjMs2tDjM=kX 2tkXwAw2t;2tA~ tLUtz]CleEpZ,cEpMcEVP M_aNޥOwNlOEQ NlBQvONlNlWO pPrDzoJoʠD@z@zODop/D`p> 9t<á<q9 ;N>+q9t<= 9: >49t=g=8]:$\8tg=؅8:^ ?58tN=uP89{:?"P8t=?>v#8혩9(1#8|t>A+^7}9?T7tt+N\>7Z9?X7nt\>v>7>9?Z7jtv>>ME*91MEw>}^-/ISF Iz -/~q8HOx[.70c9[.*qH7Pt=909=u7g8t<=2>0 k&<=ug8g<+g>i?Jo>tf:eJ=;v73mWgYFg'i;<˽eƥ~KC=u9ϦCĮ!=uSDJDt2't=u2'72'=uҤ2=u!2Ġhaѷ9fbZrgӡf"sNx?!sH uТOxNx7 uz u;tzz;t{#i)5w[{ߠ(6v8Jmw8({],b.p|\5;tLq#ipQB m&ީf=qܜ m mW=q-=qx3r-,5_2\SsԿM*fѹf(M(p1M,6ˋ/:1pی777tۍ7$7O2tn;TN !t|aح\-UOn!Եy; a].՛ bF%& IiT%IA1M}%JB&'3 -;C?t&{&7?xR(i{&4*{&FR(OL3ZY,$z%&l%N;c%jG; /^1#Z#G^12ц^1I;2M$Q|usU qנWosUyqRqesU qנWosUy4qU4qhsU u֠WosUy|u|usU qנWosUyqRqesU qנWosUy4qU4qhsU u֠WosUy|u|usU qנWosUyqRqesU qנWosUy4qU4qhsU u֠WosUy|u|usU qנWosUyqRqesU qנWosUy4qU4qhsU u֠WosUy|u -SLZN'w xN~`hHI@k?bn"NZN7e mO7en M nG[^nևNۖ[ zw/~~OxAl+xro߄k o?oigc.)igNQSdz1Q˼-O!ա}!}mp-CڪrZ/xԖ0½0ty€ǯC?_ƌL?5K3;'ޠ ]'\!d $%j[ʍ_˃ЪM %&(j# 2')5@ ZO"vޚ5ri>]pl(3]{Yc_(R(Y}!Ɯ ;8bEPe$֞I$ V(yrl(=C;(0!) ,^!$4^!T;84B4ޤ;8kbE6;8ڰ bEPL lD#K*=@T%%b *2Q PTLǜEݚNjeY$2Y1 $$u8 ]B! ?/L[HL%ȅ/ >BLL@4 ل 5  4K|E'LbE6L ߤ jL D{ "ǰ D- خ-NDCy֟ʚ #L^JJ\~B¡c)mg|*(obbTdK}ZYA k 8 }! 6 D <С67M!.ח4\ |3Q-nzhMHLP`f~ӟII~^Q[LQxz~fº4U ﳺNh@BJ%|4W}ߴ4f4:W}t_W}f41 Ll^f4Exf4J]E_E]p0E]q1qNɜ^;hcif4ciOLz f4f4d z?LZz %w.LL%w~ЂwLS޾~DDН>ŏD>M*DY:\) S]S 3(̫JJQ=(uw)!Wk&D״;@c@4_;:@]`w2ZZP &{. d x Wӣe(X )ePv, QQ_f xܜ K +m g  +І Jǽ;T l3 ߢڨ)0%Xd",x #XU{[8>2ּ,}-˄n,(u=SF5Ⱦy7I/.ob41ʙL1j15ӲeL1ODKs*1a 1LoHKV0KuH ff9 ! )K$ b<#U5&O֙%,}!đuY%1u%|o#LǒHXl.M(</B#՛dP /BUOZK_3ˉ[ Si0s@'h%0SȤqUd@dMIQa&LeE^_N: \:d%V`.)T]ٹHYD.DSWgDװ]HфSwDl^EdNl+f[O'Gl!Gl!'yl*OZ5Rl Rl!OZtrwrPZ^MlGl!PZΝ7Q^ι7>}^^E>lGl!A@MX[O' Rl Rl!( ql0%PWslsl PW;n+ԭn֫VWтqf1VW#O;qf O'qfqfѢ'yl*|RRl Rl!|RrwrR>^܉R_:^^:RDF<\RGl!Gl!\RlӮSpRRl Rl!RlVS{s\slsl s\of+fgp]OdNX{bm7y|$ZfM[_K ^}VR#$=%6WmcS%e ΊkTU66-ar A܇6'Mra7 }%unb dszS7XZA ;;,gW!ʒܐFP1αo<Qgf!YY7|\l΍b|q+;D% lx4A 44A Ĭ ެ kx4ֶϯ440Ƭ ޶? + ˬ m l94A 44A Ĭ A !d ˬ !)mA !d !)m kx4ֶϯ440Ƭ ޶?שd ˬ )ɫ\nr ٠hMKXY-ƒ a ȉD2d")@l`4|#L֥M#!p_0^iI,6 CN3 ; -GB!M!QC@&u<) Kp#Ƀ޲_ ^DrDiE5 J\2\2Jjő'!] &h+0*&q"gy:k9r;BnwikP:C q"Co *TX!2#-A,55+%r 0S/*BTn>T*l/(0q]**3(>D)kDT2T< 0:=Z[Tڭ(|ԩР(i.vQӹV<BXժ&>_`ּ=$=௬D9s`i_b`il$bA &2"}{$ æ%+H f[7)#(FG-p|&$\$")u--%o Ԡι !&_#4`[ً(2j!(!,/x%W+x%7 (,l0l"_2l3}#3}g< (T}.zVq0.zE)MFvzLc!!Lc+#4dKw+j!Kw"!,wYTf. +TfS8 (giu0u"_2Uv;#;n; (@~Hv0H)PFK&_!D_J 3p]ؑdR23ÁPƒkR[5`C :3,ڼmwVwB9B: ,8a(qBۂ^A) #`X#%*ˣ}:(EG95=԰-fQ$F64}94 9 E48{3u3\(3?!9J14;O *JO%[!8WT[i+$ul#&-(j+D$9#9#6UE9G.iO0?K؄*E>>Ͼj>;ěō>>$:cTj8~OˆX@ B@pcEAֶo3= +#4&mi!m)Enx|e!!|eC: (f-LP|0-L̺"p2N=;#;n< (@~tvq0tv)MFvsSߥ!!SB#4eU{zYj!{zG!,zպic +i8 (jFQ0FQ$z"h2Sd t# t8 (t֍(20(!,/v F([% %0^)ӷ'#*ųs.a-H&K/&:Ť'2")˗-LD j7%߇7 P:ɸ7CPP:H 5!pWP9?Qc!w8z3zʊ@:13|=aU=q2Y ސ`~ H0H A/< Ri5=0^ܾmn-Ran`ba <"W&5\ݱWz<5uϬ5X<f1xHzW&1; O+1\jn3t4(n3^<2ESF&-KʑNDT2m0Uw&l&vU, %W$w#*Ű+#?Z1J$N a2sg&Çgaqk$W?A) F2!+,d\"'l=9=%:d®#B@%I"Ev[%ƹ&rZ#:r%!aв O$z8# g O9OxY+O^4Μ*°*OatYźA &I/:Xd,ҾΠZйo w 訰|)a)]ڟߣ7\"d;̅4rGt]S;Eqҍ8B70ޡ,HM7.^pI> '8lYK."$_7r/8z"@7:5u$9J$SȈ?9jIK$ nx-h\aDxbSݶuPYRzoG~|QdϴYhWrP Ln}Tyb=diV]eմy6rm;j{ A_d 8Vu]@\a Dk7!c/dgt%YNz%۷3|fً|9EPEƥ|6rGv|Y{HwG?{.˞Fz|ٸ{N]ED s|@ENw|W{HEUEu|JENx|a{HEUEt|JENy|a{HETEu|JENy|a{HETEv|JENy|a{HEUEu|JENy|a{HETEv|JENy|a{HETEu|JENy|a{HEUEv|J>Fwx|av{s:FӜEhC|&E( 1˨9:"J)̼)!)'(3<詣*,Ҫ!, 0f1 T 6(LNDzm_ء}z|a v:!7[@Jx\0L'~OI^I[{z{]馔 0 *zM/zw{  Ww|܏v :i mvC[Jf{u6I1Itq*Jnno :ncQez Tp eJzueSw+z+zRwA}$xU{7~JSØ uu+'q(q (Qן\ CQ`R|pwm~HxDF|Pwx;{|ݺxQ(}%6w~=%~ zک~z/yzF{Ry{furfRpD7y)۫7}7B 8;89io8^7`alx4+.<ӟ_D[֡GЊ0q|WwV-YT,jq!s 2B zPs.nNRsjfq*:"?qQm;m}!lhb T b^M,c=ws)Ms1oL)Z#)UnWYUos)smc 0`Z'cTb Kbl$y Cf g?mp }Ѣr`|ܽRyb fb߱_[g_sr&%gl@a06Uazf60[6yί&F{1x (&.]wقgΨl}wL\ JxxO%Q0VYW1\[6VWBǫr9=4, @\.t G`'"ulFv4R>!/o_͌F剺Wt=Z*͉;{XK[yI}>M5Í"5zG ?! UHGz R#UpU ިh.xXh~Wn-,,tl 7 UHUUoZ:ho16p?11e?%Bݰ?X B>DZB ' ϘNڨƨ[ :fÃ,܎,)n !%E&!ŒSh4~5ώ>%8 r=HZ?`~~?'?? g=e ɺS Tׁ A? c/>?dL#6dk ##ձJ Qrc,/3= G@#3 3@&.d_-#Y5#֭>N#*J`e>T q:E/؜ GHZe.5 yO\P2A&- {wϨGBR9U-> B461,.*qd}Mb-ȅfc^D(w#b_,QJ|\G97iJ[wXd5ELDXo}[ŝrr`Xa@-,.-̧ a,.AZ{%Ũ%RTd7Z&%[zPI%:tzP~;R}>1_R}o"11o b՝:i;oAy bx')bHOԜt[Ѓ 0>Oגt#Y#mHOs.1GG%ϏYȘ^̨1UskX Kv#;Vġ2G"hlΟ?+JjLi[iM}0@T m1Pu6T!m?Tc%#}vP{_,JkR%vԅ_ͨ {_v':'ޟN `<Ν1ZF:$)qly@l [8n6qiG[0![>,gBVd01x0f<:-RhBUkX_#W5@8q?8=7@9z.ITGsI{IFGIٍ7뗮sN&TB9$u23^35$#,d@8eB\U@qMp @"soT4Y,$Yuc7,$-~$&:7&|}^y=|bcka<TlhAYZخn9a}+f6}^@_?z@|LϪ|Oz*&Q27 p|iUBfp|u8}󀅀ր\|U\ˀ遊ӭx[Dtq}J}\ewP{Ѩ^`܍g1|\=qhtuwzvF){MyޒҁsXiaxcӂj}-#w{_q(I'= ibaq }Ow]|ɀʀÀ|2I}ဍi.}zw~tK=6>w\ `nH$=bPyZ<ߣq4F =^fsHurR5rrk؊s~szH-r:5Us}[a^sNs:|7t:o މG,2`",҈:9"` ̘ 4*Q- ƘwG1 ,4i ;1f +- ͈ ?r-- +,r--O,ah2Ǚ +2+ m\VyOTpN{xhN{OT֐gw3{6f gdvfu= WrBfu}|dڑ>d tu[R t |> Om$Jt2D~$zO.~ftN+zt[.~${{;uY/'{g~ۼ{{6n6zVNSm rv~F@y~4լJxx[S= T{PLP{vv{$vk$v46n6xmSm SmxrNyҀt69rM9rtnq;uSlJqAJq lyۀszxxizEzxhA AxsxހouFh|o}||XlK8qFqɻw‚}Crv(}~P.fF~_pتF~:{p) p:{] l5'b-f=ae=aff^MN솽gGrUKKr |psӇvH{{vFus$qsv_vi_Duy_k_jDuw'ouBOH\n\nOI~%~REDQ~~DSCsxGh!QX{%5fz}Y򈤑l9D^t w 5A1Ps- P<&$B'Nc[%/@WA@ݍHČe[ LEO@I=#&QÌ(HGN @Cؙ~ViVV#)1EĪUg( rtev} %-kX8Tg4Qtn$O4q1CfLk]urSOpq>̖)J6NL g%qӮ*2 ,G{w0jRʟ^r63:,hV BTD>gVCTG.%b4dl)҂Fe%~ S^D8 ,5в*/`$ u*6w!"O$%.("w"5,j!WM}C*ddOP[)Ϡl6!;dlك{~?&+2 t-i*ni)$_xZ* U&Z*˟w3.^9ojR쳅ˍ z,[+d "oILϠB0g2CpgyF;CKx9ڟ.ց~%4. wq(- " r(r=ЧG$۬A?鿧|XDѿ Y׿ !phLB$X?JH>p$ޘB??$ HG@ 㤒'+4 ; !Ma9װ q6dܿ)RLDF0XF^@.(\e>Cn>ٶm& ,L+Qp4bj3ԛ+] +]~A4h #5b4 ̡`?" %X)3 A3DO&ћuܽ]ˠ1"4B|| K) 9|+>*+;FX wGͭnFG{'-*zSf,#x_2Xa $o8 3 39 %֞G>Ts["U- cs3T8/ >:$}"rv*J)FǨ -K" ,44tf2A@϶ݽw5Ω;qE3z3;{٫. &٪"*U XQ60d)7 ǹ#&0D( 1ƕUΔ,e@*3-ޚ@iqBL,>"A` / 5="s,C,|.ѥ'4?/m 'O3R [A ^0IsP"0"g:pB4 ;po+7iP?i%@^ X/J< O /D q886Cbφ V|@ 4 ͉? S 57ۛV5|x Fc=L:QV;\{ /;GnT2;}LS5: @RvGYSE5%D='l''?%̖H"H<@B3:ݒG%>R3ij&kR7+b2{_|B}?'+ 7f+o?44X+i@ bP@׻%(r~Hl~HdQHp eD I%ͪ!jEƾE0ɂ$ n~XƮ$UcQkӬ;y7!3d2_2j,ɴS7O!3IQսAQ,ɦKO!3HuH,I:O!3EE,AeO!3 =|=,z7O!3d2_2j,,հO!3}4Ԑ,ɭ$O!3acS,fO!KӷeAIZ[@d *M@-*w*M@ ަ+\h>ݤ.u pU2<_<|h cSS0ӗ KK WKA!1-p @(&  ," A!aAx ^A`y )ܦ *ߦ8o = ~gl 3\  [z~v E#i -Ė=P0 Lâu ^?Cu hy YCuu bb)(yڦָp1ڦu ) C(#u IJ_^x س e" 'TB ! o5 $:p; 5\BM @ +tP =<<K =M@t 2z o IK8 L4 Bڠd~ RDHS5K3:4SAU}mAe!}[XA N5M5C@I@&JC`SEO^2E0":,V .6@ T#8 J.XݬA"%]A[S42:J. fè!O&.OJ @KY4MˊL Z u={ɚX 2+k Y $c .,'6 'f֕eT7+ &k:;5H('~3 f Q.:y$oZvk/S E05?P> Uh ./z2}/`^ \{1gzFLse<58fgtsgt=iT\i=a]ĭ=v7^ך'{u)1e=^q)_py]qɎȯ8M%#OXy[ȪxlW?eҀTӬ@JPT } #kÎ,@*!!,@*xՎr1c]uMk3adwl oG%`/lz?spNz{bNt6a0t|ߊj?;|-b0gfF5~KcjT|? &3y>$c_qYԱsBY+s.s'+cz+tkz~QkjEz]ޞ!pѪuՉ]u"p~9ߢKitY/itz` GFu~ԳlbG生el^u)xv5ʁ P*&8 ) a6b$ Yb Y3M™DP7a3a;HǑ7,<ı3=ͥIɢv4(Yp3Bh &Eh J&&²L&&g ~L& ~e/%ޤ) 2l,Yn 5;j?QJflۀR00V(`u^)H5Pʀh58)dl_+/ )F>[N~,eMIh#g$P%˝G,ͲMf8Ãoyp2v\MY٦AytͰ{A5;SߢVwXTXv^!iy8yQ9?qzQ9i/qz?zY/>oٟoz0 }'I-}{l01ES{ʠl0b:S{|S{b:{b:|=q9{b{2=٘|c=:=|||7:y!k1jGsf57̿py<^8Ez7T$ߩ;zW)wO:(68>yJ'6z%yj;Hr30*u`*BWRFjŪ")"/?i{kfiӌW4"Rg: <,oic4"?s%Fد8,!7dj6I1xX8Dڷ: C8ܢ+i~ڿ,*"@.~r=ʂ>IJ*$/ $qh3?i'8,uߕ)ט‡o0-OM/\Yo5i'Q7.S`/u((o >z3h ~"22pC";]}1Ϯ8z_蓧%53@)#I o.:5ΰ t#] 93.fwi6G7 O$ZȎñ03]ꨟ-׎HT4Mjk4פ]ka2WC%)J'ܥ+n!5?⻚u?ꚈAv ݁V2>[(+8p2J'&+i\{ B\{ { _ -'?&? '&۠K 3CK =4 LJ'r,+,,6%Ћк{ ۂLE8K {Q K4 _AL-3B9BF>Q YQ K ihD X~G, K @3CV4`AFB9m<)9kĻ0YՊ.086nmO>Kba˥5oPPwt&r >u ώ>>~mQ7ӵSQ7^p4QȢ4a!ϑ;!?ʹd$!?Gőw$Aݾ!?x=kvI:țj_au٤pD/|yzYE_`uVO|} ֘uX0^{O]wzZLeelF&|Rh^|R{g_O6:!ޡNy%"O 4Eu 1 &1r 0Wzma|0Whoϥz׵GIzqڵG4{Iz~ "~ɻ~ {s[z{`{s[?~瀨{|`5~4s[V5c5~Ȼ~5bsبl5br-~'w2~5b'w``}9~ ð9*ɺxLl%0 Ogxs l؍gxsl6l6gxsl6l}agxs}l6l6gxs6l6ljsl6rr}cbsyk7f agxs n5l8gxs_l6l> 2igxs> "l6lWgxsl6l}*qgxs}l6l Tgxs |ȟm*H-k0< -F>5d!( ՋD8E@SX[<,c ( ιLB5}&:X2K}q}Bm)DU'Fм<QR7\ 1]k>S a/Sg~/PPmz[g&p[[gj-[Kwb~Ӄ|Y|sY֥PӹlaBl5}8Qh(3א/(3x/P{cĽk r~-m8_ L3 0_ .ML3@9B_V窮ZB/mU/4'BBߡ㐺U*(B^/oUKj(BsZt|D?z} t|ugr֜F|2 syfz8~jw}߽Pk5wӊ|T~_|V~ƠbIxN008N0bH0rPtq @qNPzbvz//1G/ c/1Pq7zyX7BP4el;Z.[@_Ěu;Gந K 95K*0{#on|ڢ r?ٴg0B"[}j9/"vduW^W^ƎaɅoaV%d2Ռ$dcQ 2d2$םdcQ 2d2֝dcQ 2d2֝dcQY d2fdcQ%d2sԌ$dcQ 2d2$םdcQY d2fdcQl, d2s4EcQV.nڎ^ `d(dO `cd(d%dcd$$gd i]cdD"d i]cdD"d i]cdD"d i]cdD"d i]cdC"d i]c%ƝD"oҺ dXY d2 fdcQO $d2sdcQO $d2dcQO $d2dcQO $d2dcQX"!Å@+h*5s,4W*&ᔑn8]AiKjYwwd菓^d|}m,]0>F9zv:0tzF9הvmF9 @}v^vh @Mx @ sCzx6xsC0tmsC (O}0t^0tp(OHF98#YW{/r#O/rXm-hXmA/rN'lAr){ޞN+N.7{éf2?%}xnx5qp;pp|m!% b:\.V@9\R;..V]A\(9l=}`INl=4"zIζI"v}25vV5.S.5N)?.S|{=:^=A^^m2QDǺ01 z8w1=) ʣds< 8\Ovʣq{u\O LThT- $tWD}}A‰ԥ2%}iK-1} },-NW-&>}xpsɣ&K,t׎PpwZ=2Z=@Lځ2Pl -2٢\1ef3>9U?5LIHCzM0WNhYf-2@(.BϘfǀ|{f#!BU476!B0بS14'V\uXj`>@'V[ruX^t3%3v^w\:ӼLq5:kw׻$f4=-bj)=z 9 z5olőL; xmnlٓLbk6zL>Zk"tFLUP30bU /"'[P]֫ ~ \#P'F9zv:0tzF9הvmF9 @}v^vh @Mx @ sCzx6xsC0tmsC (O}0t^0tp(OHF98EkEr~!@xf`'! sfOTA!#`4SEk[!Po{MiԪO#M.ȭO&O./ A.qʨ > q2>Z"@.2yע>!v7@e-?4v7E@v7UE$8v73EGUE6v7TE@$8v7HETEm1PNE~$8Ϥ1JiNE.2NE]J7ԭNE.2y7TEHEu7ԭTE7 7UE˛3E7ԭUE7 7QEE7ԭQE?7 7ȅ@DC>!@ۂ7 غ<@-?4к!0|,Pv7Lz-?4v7 >?Lz{1O=$8Ϥ12J="@J=.2A0{ n(*2):ysr$(l(-x8tEz"s ae77c+Zm=*,'|>s* Ć7<{J,vy: 4-Q23S'w|a=) c+ZmC*-'|q* ĆD8Y6J,vyM -Q23&}B0{ n(*2):yst$(l(:8tEz0 l|;vf| Mf|k M}e|=vAΡ=vX=Aݘl|;vf|BDf|mB$}e|=vJѣ=v^#Jf#\ Jl"mi4^qT(Qpd||\3$}yN W%Z- >, %;T? Yd9Ti>"Z 873@9W022W0"?1cHARI8)gͮ#@I3>kff&>@I f"޻$B] V`hШߦ' rݨ:gT3*GU7PG&!K{7EHkʳ&Hd?oU(^~\$H(aeu@ D-lu@qz\/|+=̝|]s'=ƙf@hx= Zt6ޟxfKZxf:nk0xfH:nC6Hxf_6¤?څH~6?6u=_@ R_@D= N/M=&s/MI/Mss#_qsq <ϴ9}/;:6^sdQ&[T8#.7ȉoC&ǻ@ځ"j2Ɨl@-A!zzL"(SSݼ},mlm'>Ɂ=7\6!Q|Gj/ ?65~b^)3/ܨ`VR ޖ2'mpzJ0/x:{灯{  yB?p/|聬})3)}F<´~n ,C š2ϊPl2fTF̪;|VTF|;l|;vf| Mf|k M}e|=vAΡ=vX=Aݘl|;vf|BDf|mB$}e|=vJѣ=v^#JfXmѳ-)Շ @h^1ܙ qȮ iT,$ NC ':ג p 1## _ Tj$ixn݆i< M ) l * z 4i^{dN2hjDE9*ЗW]>Rl<="JǕ=n܍[ ; C OL ]o [s y/ txd t^{S >(~5F._!ˠ/u 5W јx $( *Acd q T a!TC pN q: \ M1"_ a ? Ĥ$Qj~& )j~ ۘjn TN =1ߔ vZ 6rۛ TD,>CO N[Fn4y|ݒx{p}/[?-T2$.X[?$.='tq[?G"x9[?=-~+ZJ[?5&.fQ[?@1)2U[?=.+\J[?5&.fQ[?@1)2U[?-R2".X[?$.>'ts[?G"w9f Pc[=[݀[݀f Pc[=:% P%܈h P5oe/@oeYA(@?YA7wּ@<|7YA2<2K7?QeƜKd<gg kP-{kP{z:-9-:,sGF: PɚsG˼GeN8|դ_Ԍjpѭh'v%fȣf ' *cfG*Y^`^K^{#Q3`MAى=6~W璁O{h^VQP7+(D?@ Vlf `!U UrTqζqgYrR9&;;[f Pc[=[݀[݀f Pc[=<9zu=`9:v=<9zr=(9~:r=T=j9yh=9r\:0h= 4=!9xY=9S;: X=P=إ9lxC=93:; C={f=9w=~99 =xצ=9Lw999= 98ty9vM =nŕ٥\3~)mg$Lt=$L:t=Cpiil9n=l}naq;a8 ۇ ~\=Cbe2;q܁8̄T`x/̄S{x%,ֱho^nax1ˇ3Xq2 ?ʝvHCE N+MNmN euHuHuHuHN NmN+uHC"ąuHvHvW6 +jJО|J)^,7Ee\K dq$Lk v%:~0G[rm)̭&mP֣Ct( L-uh:Qq<9H ; {2!&>A-xi>ms XL f"T)z/)2T0,"948Ly]rߙ*dT(Fe/w2֫.@MQLмIK- 8.A޺Z+EdOpx67ȓ'E){?[±X?)p.OHl$f0B1:, [HSNi*Bޝ$6B*oBTw*uBۯEÞ1UR5qw- "O+0=2*%EzlN1CƇo0ڳ2 !/PL|q1Q DqU]2^Xd( \@H-XL)۴InAy )I "{ '2cUL)/Yъ% ި4><$AlT32A-$2EBH0+CC4 ]F(SH*B}3>lE +1{85ME#;/FP$xEg %iFmBqQG0Co0jx 0CfҬ)*DsF$)* +:\F9I'JH4GCm/oK!JXPeL\5&P EWf0 A81u.UBCo."fH,B!|6G2L$MHG! 0 D I/DR.,p!?vGXK?V' ]}!G4Kz5e(:ʈQ7i ^A{("tY(c2Anpv@ kGK051!0!7445`6lB )M;9yi]9B )i=89yg]9B )h=93ɝi]3B )89yh]9B )h=99yh]9B )h=93ɝi]3B )89ye]9A )h=89yh]9A )h=96uh]6B )E:,;h];ƮA )[?iߥ;h];ȮB )i?fߑ6:f]-Ar+>*/i>nRtB#Wx@CRMgڕlO NnN1vG-KMo&7%$x07~wgZ5!"M!_ )H4n?h:ogu=2m"/"S1V DRg -U;At'9mё0qA|Հ$ hSI#(Ԏ$9syA~@fh#fL A+'4%>Z<)/B}ڶ9<%2Q2A* a2؊&l(ZV)XŊ&<A^ң(*8(\ B9ҧ8).( (|Be%*9(XhC)K>7/Ҡ!.=,g1m'X(' b*o._370#:^@;y$[P-}5zϜ1kA'9(v.Cʛ'_Rt9u #H$:;uLo:>v\djD#Q6)sIQ3E-b-ԂL|[=TlvtK27xF%\_n ܙ~מ9`H +JMl88sR4TgT1%@#1'6]AHb҃/4+8jIaaN-#~wѦ]3Op 1i]W<~QUHoqR`;mşvbqoqB'c ;m !w‚Ÿrq.̓r[*"||@f|_aպW}zWtKc9e,b,$h",hc&i ,rwb,$h",hc'i ,swa,$h",hc)i ,tw`,$h#,hc(i ,twa,$h#,hc%i ,rwa,%h",hc(i ,rw^,$h",hc(i ,rwa,#h",hc'i ,qwa,$h",hc&i ,swb,%h#,hc'i ,rwa,$h",hc'i ,swa,$h#,hc'i ,rwZ67vP?O G@]YhPNz5ʈxQLN䙎lSuRiB\+eVˋ,!M̧# 6.+xSq펟-dekXpN%yJJH9͂,`5\a^1_OYQY1O${/SD?YWĒ> z2}S"A|6 JpVO9KzRZ @&!c2FNAxeN<2.2';Z(> 3 $'ϰiKfRZGZќ J舭_łfT-=.Z*Ne%P" =5-N2Q77"`$D=P1iTK, KyJ4 M.,.@ C&^4/;N-1"wb|!/S8Z; V7 2SLP'0S!lRe 2d.h/8D*'*w./X4E/%I4%/+?rB/^)pG8tE*rpv/8* M4MI3c3 9+V,A> 1A[Z/OF_d\}Y#5pW*blq) ,)'J%5>+I0T/=,7+ v@{CxFD)3ҫbux7u!.22} `QiM4ܡ}ACRxe/Uq};'2[6.d/#IYV̌_8"+"'pLGFm F}'NHEܗG X="C2E3UZ,X><,r1Z&|@5&eh%ˇ7 ؈(*ᢲB"fxUIntI+ X-8 _?Wš9|q? D n9:a Xb'GPQS" ӦSj2~" " b2 GD2 @ -%LU(ʚM6i$_7م jݲI( e| hC1k8Gg3I6i\|NY-г9)stTaqkȇy WUe8e?Xkk(3$V'yGVJ"9kq@1GQC64,EAB!40:O#aze.(4_(0Q _3J"7#iLPRb{rvL-!䅝kYY/ дk݀ㆤxB$yq45"o ֿ\t_o={G|ԧ[ՈPto _oFt={Ҡt)ok*ovfk'lvgՈPpGpWo#tEuqpZjuՄu!opO dt~pyo~ pMt~~+p4~jW~pco^jkpʟjyokmt(%OB %Gopyoyo.mpt~.m^yooqo`Dpr"yotjryy-buAqu`&qAnq.uHqwGуt\d_oF_o\foVY]pjpo{m+yous{rus}yo~ه?Q]& {='M }Oc;Џvg2܀ NO2zLz<8)y{?g;Owb8,en;L`;sApQ2%;oq]AexCXH푏YBAewCYH푏YBAewCXHZBAexCYI푎XBAevCXF[BAeyCYJ두XBAexCXI쑏ZBAewCXH푎YBAdxCXI푏XBAevCYGYBAewCYH푏YBAdxCYI쑐XB+{ ѓ? '#LnLݸi~MPj\:  zzj+{ ѓB +0H|i&%&h[: % #w#,{" " " +{+{   -{l"  ( " % }±" %±I&" ±" %}±" %}±I%gI 8T. , N , 5 z (5K)ط;cg%}±g^7N`qI5 B6u/|B6![6G /t/_ A6u2B6!Z6G 2u2 A6u8=B6!Z6F 8bw8 B6u5'C6!\6E 5w5 C6u2A6!Y6F 2u2 A6u8=A6!Z6F 8bw8 A6u8=C6!\6G 8bw8 C6u8=B6![6F 8bw8 B6u8=B6![6F 8bw8 B6uC6!%҅8rC]#Jօ8[6*CI8rB6 8Ӆ8[6*C68rB6 8ӆ8Z6*B68rB6 8Ӆ8[6+C68rB6 8Ӆ8Z6*B68rB6 8Ӈ8Y6*@6\A6 8Ӟ SC6"JٌȜ5'ٌ_Z6G 5w5 B6u#kA6!S#=t8rٌ$s l8Z6*ٌ7IA6 87:YC6뭭C8=CeF6R 8bw8 +6u5',6![6D 5w-\Å@#DZ޹,^Å?#ȱ޺-]Å?#ɱ޺-]Å@#DZ޹,^Å?#ȱ޺,]Å?#ȱ޺-]Å@#DZ޹,]Å?#ȱ޺-]Å@#DZ޺,]Å?#ȱ޹-]Å@#ȱ޹,]Å?#ȱޤ$rAc ) ́G5 m*? # ?c )Q׈m*? _(??c )$Xm*? &?c )^ m*? # ?c )Q׈n*? _(??c )$Xm*? &?c )^ m*? # ?c )Q׈n*? _(??c )$Xm*? &?c )^ m*? "xo+ əRc ƀ#ىmuj7Qc )(l mu c ƀ# muSQc _(i nu $c ƀ# muSQc _(i mu $!# WQwc )58͚m*? _(??! $XWyc +d|)muI3aL3|+ \  0=h kA?mkY(B7=tY(C47#%3W(q H6e/2"&h:M>Y(B8F=$Y(<2e8#1(qΖ#';D1ޗ#?@8G;# 7@8Y(B7=#Y(<2e7#1(qΗ#&;D1ޗ#?A8G;# 7A8Y(A7=#X(<2e771(qN=jB19<2SG(L1bז#n1;"#T;g@8#j@8c7#m#7cT7g߻H٧czbU7xbzb7Zx?c/8؉/8e7c/]8F+D#8j4`+ rW+3 3mm>+`C?EC=1V8:'i:8+'+'x8Y({8`<2Y(m(1bח#n1;"#S;g@8#j@8c7#m#7%ޔ7g@8%j@8c7%P%#7Y({7g<2X(m(1bז#n1;"#T;g@8#j@8d7#m#7%ޔ7gA8%jA8c7%O%#7Y({7g<2Y(m(1bז#n1;"#T;g@8#j@8c7#m#7%ޔ7g@8%j@8c7%P%#7L΢7g0LktA7lO.LX%Afߜ4:>w>MZ2|Z4&.&.LY'Af4<>t>LY2}Z4&.'.LX&Af4:>u>LY2}Z4&.'.LX%Af4:>v>MY2|Z4&.&.LY'Af4;>t>LX2yZ3#.&.LY'Af4;>v>LY2}Z4'.'\z΅p  䡀\U Kn: U ܆ E1@t&Z̩ ) +EZ"aV - .6&I"̻  - .6&I"̻ +6I"aV - .6&I"̻  - /6&I!̻ +6I"aV - .6&I"̻  - .6&I̻ VtO&/Xvvt Q%_Ð(e rןT U DkX„+ R /?Wa\VՐ&/- mͯ+\ qDWaͯ\VՐ&.- mͯ+\ r.t"#̯s.2q+$%"aV - .6&I5̻  \A(L>9H<- /,&YX #xM6iq(>?ly7i(??pr(??(Ә9TD l`9(wkl(>?q(Ә9TDqq:‡9(s(Ә9TDp9(rp_pY(??8i(Ә9TD5ii1w9(y(Ә9TD7i9)hSi/7i(>?q(Ә9TDqfr::N)cS;I$n dQ *>tZ 1> qV  !,>t >> )\ v,>t >> Zr "&?x\ '>t> `[0 :st ? C, -U7 MFDp:VN m/>t ߒ>> X: />t Ȓ>> tX, 0>t >> X% 90>t >> W l6>t >> Wq k*>t: y>>7 CR3 e+>t >> \ >t |>> [ͥjqK Ɔa>S ^Ay P /@]aAp 1<\ 6# z@b< >[ 0 8< ? =>C  >> R>2 ů >> a>ɛ >>k J>SH >< É &>>4k) r&I"måJ@:B/61s+70%X"5$;%e&H"4.1#X82@:Aj *rn/2n<{6 $)%B%./&;4k%){$ᛵB@:B8.0'X&3 u!c2R `L{6  %)B%.\,V&:"t"Pn/2 N/f )%lt&"/&<*ٜ' M*7݂"'*c ͽ=!2*.R=!c.'!w=!餅 '!.  !'!֤ !ѹ  !ˤ5!ǝ =f5!ש ҿ ̤ 5!} Σ 2} 2LI} Ƥ]j242ZZ#^5#͚#R5A8G"77^"M!bB}M!U>M!D!ED!@D!3!bJ 3!C3!8!iWNX!H!a [WU S!0 x c! u!! oY D7YbYpD Dt 3) +t it |( 0;92( uu( cf4uәu3wS&&w"D'e -TV2lOwUJN4ac~'-*ԅGn-83eYbmb{C')Om⛀PXExYbmboA')K -=蜀[ڵMОN2acm',*6Im-8À[ڍxS_*g!p$H&ide|񀳓QQ7j[EwYbmbmB')J/础Uf-NR2uOY*Y1DV,T5gmO'1BQD(䚺1KUċ4 R+aWS74*~f~W2#c'2#  N[`i[xw4CXC Jƈ[ѱ i(+&Ś+ɜ<4X+Y '+ԅ|Y 0> 4ۙ>;5k>|MͤGƤi"N随#ܑ5NhՑ"ّŧ{_>5 ="?Ü!){_>v!צolC ܳmѢNo<֑k#[5ٙ:ͳmX* S!47W{鈑yk#l/N,3!z#!%C*iٌ*2/nN]:N3!l#(%B* ڌ+@2/]Nn)O3! j(iz*H$] 8v:( (Ed<1$[\?/. VG* )2/$O[ L3!k#|'%B& ڌ+A2w,So)O&3&P# h(蒈*l)$a! aM cM ''Y =kzY؛&w  ]%$lC o r .![ hg l^ wC ""-[ hA ܦR "2oVh.^ hJ c a"ww~?vJe ^ hV o r .!;7dH2t6KȄ鞷:8s{q wӝmZu uhKnƄꞖZ 1q pۂZl Aw_}@x4[`$S42}aq!3d ؀nPuB;iSSȄp@?2qzq )ӞmYv uhJnƄꞗZ _Sq oӝDmOv u`4qńꞯZ :J)q gH7 0TޝVoc^&^Oߺ8T A5M1^۟&^O iLР A53^۟ub~3D@-1Uޑbzʎ d%;oUtb&UPi5@)V^bUgikC^G^3UhU~BJW]H^MB ,ܛ3 'CubWTA(LcdCKW]b3U +T~BubWbVA)̛34oC^b%Vg_Vž mC|G^A̕h"Vx`JWrX5P VށW'^OT,Vn A53^۟&^O~3D B5V^۟'^OU,Vn A5gV^۟ub6/gVqA/1Vޑb^ H-Voh&3H^WT~3DoJVH0O1/L9:}.D551E'?/_c41!3>t>o2>z?>p?p?m"`q? 9Bb"d3%_#={?=??p?}?ym"`}?8Ba"d3%^#={p;3=?o;o;<}?am"`}?+Ba"d3%]#=z>p=?>p?o?}m"`o?*Bc"d4%^#=z?}=??p?.r?m7Kp? kC$7{hE9`= r5+XFiECJ{kW.$nrOAڋ'f .t.$>t:r ?;rtx .$>r.$nܢ#fjΦf6#c3A Xɱf'ff#НRtrZ8ta֎tۉ ;nN /$Lsx;Pty;Pty;BV@g"`V,p3 "?MfiriMX:PMsy;DATAx:2.select_poly 8XTDATA 8 оDATAXb@ !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}         " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |  !!! ! !!!!!!!!!$!'!*!-!0!3!6!9!"A"D"G"J"M"P"S"V"Y"\"_"b"e"h"k"n"q"t"w"z"}""""""""""""""""""""""""""""""""""""""""""""### # #######"#%#(#+#.#1#4#7#:#=#@#C#F#I#L#O#R#U#X#[#^#a#d#g#j#m#p#s#v#y#|############################################$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%%%% %#%&%)%,%/%2%5%8%;%>%A%D%G%J%M%P%S%V%Y%\%_%b%e%h%k%n%q%t%w%z%}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& & &&&&&&&"&%&(&+&.&1&4&7&:&=&@&C&F&I&L&O&R&U&X&[&^&a&d&g&j&m&p&s&v&y&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''!'$'''*'-'0'3'6'9'<'?'B'E'H'K'N'Q'T'W'Z']'`'c'f'i'l'o'r'u'x'{'~''''''''''''''''''''''''''''''''''''''''''''((( ((((((( (#(&()(,(/(2(5(8(;(>(A(D(G(J(M(P(S(V(Y(\(_(b(e(h(k(n(q(t(w(z(}(((((((((((((((((((((((((((((((((((((((((((())) ) )))))))")%)()+).)1)4)7):)=)@)C)F)I)L)O)R)U)X)[)^)a)d)g)j)m)p)s)v)y)|))))))))))))))))))))))))))))))))))))))))))))*** * *******!*$*'***-*0*3*6*9*<*?*B*E*H*K*N*Q*T*W*Z*]*`*c*f*i*l*o*r*u*x*{*~********************************************+++ +++++++ +#+&+)+,+/+2+5+8+;+>+A+D+G+J+M+P+S+V+Y+\+_+b+e+h+k+n+q+t+w+z+}++++++++++++++++++++++++++++++++++++++++++++,,, , ,,,,,,,",%,(,+,.,1,4,7,:,=,@,C,F,I,L,O,R,U,X,[,^,a,d,g,j,m,p,s,v,y,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- - -------!-$-'-*---0-3-6-9-<-?-B-E-H-K-N-Q-T-W-Z-]-`-c-f-i-l-o-r-u-x-{-~--------------------------------------------... ....... .#.&.).,./.2.5.8.;.>.A.D.G.J.M.P.S.V.Y.\._.b.e.h.k.n.q.t.w.z.}............................................/// / ///////"/%/(/+/./1/4/7/:/=/@/C/F/I/L/O/R/U/X/[/^/a/d/g/j/m/p/s/v/y/|////////////////////////////////////////////000 0 0000000!0$0'0*0-000306090<0?0B0E0H0K0N0Q0T0W0Z0]0`0c0f0i0l0o0r0u0x0{0~00000000000000000000000000000000000000000000111 1111111 1#1&1)1,1/1215181;1>1A1D1G1J1M1P1S1V1Y1\1_1b1e1h1k1n1q1t1w1z1}11111111111111111111111111111111111111111111222 2 2222222"2%2(2+2.2124272:2=2@2C2F2I2L2O2R2U2X2[2^2a2d2g2j2m2p2s2v2y2|22222222222222222222222222222222222222222222333 3 3333333!3$3'3*3-303336393<3?3B3E3H3K3N3Q3T3W3Z3]3`3c3f3i3l3o3r3u3x3{3~33333333333333333333333333333333333333333333444 4444444 4#4&4)4,4/4245484;4>4A4D4G4J4M4P4S4V4Y4\4_4b4e4h4k4n4q4t4w4z4}44444444444444444444444444444444444444444444555 5 5555555"5%5(5+5.5154575:5=5@5C5F5I5L5O5R5U5X5[5^5a5d5g5j5m5p5s5v5y5|55555555555555555555555555555555555555555555666 6 6666666!6$6'6*6-606366696<6?6B6E6H6K6N6Q6T6W6Z6]6`6c6f6i6l6o6r6u6x6{6~66666666666666666666666666666666666666666666777 7777777 7#7&7)7,7/7275787;7>7A7D7G7J7M7P7S7V7Y7\7_7b7e7h7k7n7q7t7w7z7}77777777777777777777777777777777777777777777888 8 8888888"8%8(8+8.8184878:8=8@8C8F8I8L8O8R8U8X8[8^8a8d8g8j8m8p8s8v8y8|88888888888888888888888888888888888888888888999 9 9999999!9$9'9*9-909396999<9?9B9E9H9K9N9Q9T9W9Z9]9`9c9f9i9l9o9r9u9x9{9~99999999999999999999999999999999999999999999::: ::::::: :#:&:):,:/:2:5:8:;:>:A:D:G:J:M:P:S:V:Y:\:_:b:e:h:k:n:q:t:w:z:}::::::::::::::::::::::::::::::::::::::::::::;;; ; ;;;;;;;";%;(;+;.;1;4;7;:;=;@;C;F;I;L;O;R;U;X;[;^;a;d;g;j;m;p;s;v;y;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<< < <<<<<<<!<$<'<*<-<0<3<6<9<<<?<B<E<H<K<N<Q<T<W<Z<]<`<c<f<i<l<o<r<u<x<{<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== ======= =#=&=)=,=/=2=5=8=;=>=A=D=G=J=M=P=S=V=Y=\=_=b=e=h=k=n=q=t=w=z=}============================================>>> > >>>>>>>">%>(>+>.>1>4>7>:>=>@>C>F>I>L>O>R>U>X>[>^>a>d>g>j>m>p>s>v>y>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??? ? ???????!?$?'?*?-?0?3?6?9?@A@D@G@J@M@P@S@V@Y@\@_@b@e@h@k@n@q@t@w@z@}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAA A AAAAAAA"A%A(A+A.A1A4A7A:A=A@ACAFAIALAOARAUAXA[A^AaAdAgAjAmApAsAvAyA|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBB B BBBBBBB!B$B'B*B-B0B3B6B9BCACDCGCJCMCPCSCVCYC\C_CbCeChCkCnCqCtCwCzC}CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDD D DDDDDDD"D%D(D+D.D1D4D7D:D=D@DCDFDIDLDODRDUDXD[D^DaDdDgDjDmDpDsDvDyD|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEE E EEEEEEE!E$E'E*E-E0E3E6E9EFAFDFGFJFMFPFSFVFYF\F_FbFeFhFkFnFqFtFwFzF}FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGG G GGGGGGG"G%G(G+G.G1G4G7G:G=G@GCGFGIGLGOGRGUGXG[G^GaGdGgGjGmGpGsGvGyG|GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHH H HHHHHHH!H$H'H*H-H0H3H6H9HIAIDIGIJIMIPISIVIYI\I_IbIeIhIkInIqItIwIzI}IIIIIIIIIIIIIIIIIIIIIIIME `=HME0.071;0G-0 *`: : :`5< ?R"۽#=Q8=@`e<A=$|DATA0G-TDATA`:0position g=زT2 .select_vertLTDATA g=w\d>*$\d>*$-?)$\d>*$-?)$-?)$\d>x\d>*$-?x\d>*$-?)$-?x\d>x-?x-?{\d>x-?{\d>{-?{-?~P\d>{\d>{-?~P\d>~P-?~P-?>3\d>~P\d>~P-?>3\d>?3-?>3-?l\d>?3\d>?3-?l\d>l\d>v\d>l-?v\d>l-?l-?v\d>|v\d>v-?|v\d>v-?v-?|v\d>|S\d>|v-?|S\d>|v-?|v-?|S\d>|S-?|S-?|x\d>|S-?|x\d>|x-?|x-?y0\d>|x\d>|x-?y0\d>y0-?y0-?v\d>y0\d>y0-?v\d>v\d>*$\d>v-?)$\d>v-?v-?)$\d>v\d>|v\d>l\d>|v\d>|S\d>l\d>l\d>|S\d>?3\d>|S\d>|x\d>?3\d>?3\d>|x\d>~P\d>|x\d>y0\d>~P\d>*$\d>*$\d>v\d>*$\d>x\d>v\d>v\d>x\d>y0\d>x\d>{\d>y0\d>y0\d>{\d>~P-?|v-?v-?|S-?v-?l-?|S-?|S-?l-?|x-?l-?>3-?|x-?>3-?~P-?|x-?|x-?~P-?y0-?~P-?{-?y0-?y0-?{-?v-?{-?x-?v-?v-?x-?)$-?x-?)$-?)$DATALDATA:..edge_verts 9XT2.select_edge`LTDATA 9u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA`LDATAh`5< .corner_vertsسT .corner_edge vT)xXTDATA@sL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA@ vL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA@xs~wxw} xB|& i|f 3l>4 plU͓ Hם   ̯  ̯ ֯   ˓ Hה q X9 Myç]va]aw] Ƣٵ xD"%mĤ|l }U4I=o=oJ48}U}8R C&Q&cޘA8|{|޻{{O||{{W{d{{V{W{q{{3{K܀y){~{`{{{?{1{{:{_ys{|1yyd|{G|'|ή{H'|{{Rͮ{{ys{|2y|{ydy){~{K{3W{p{{W{{W{d{ɲ{{î{={={{O{DATAx :2.select_polyoTDATA0oDATA * !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME n=HME0.072<`G-444. : ` : : 7< ><p h*>(1=x=A=$|DATA`G-dDATA :0position 8T2 .select_vert {XTDATAp 8w4 ? =?@=]>񽠃=?@=_ ?0=]>񽠃=_ ?0=} ?v=]>񽠃=]>񽠃=} ?v=x/>p(=} ?v=?=x/>p(=x/>p(=?=>q=?= ?ऋ=>q=>q= ?ऋ=}%>)d= ?ऋ=dB?@z=}%>)d=}%>)d=dB?@z=>uI=dB?@z=?!h=>uI=>uI=?!h=n>@W9=?!h=?qI=n>@W9=n>@W9=?qI=>@=?qI=?~&=>@=>@=?~&=U>񽠚=?~&= ?@ =U>񽠚=U>񽠚= ?@ =>񽀃< ?@ =#f"?.<>񽀃<>񽀃<#f"?.@<#f"?.<"?@@<"?4]>񽠃=R>= ? =R>=>p/= ? = ? =>p/=10>@D=>p/=R>8=10>@D=10>@D=R>8=>=R>8=4>`mv=>=>=4>`mv=DŽ> =4>`mv=>@p=DŽ> =DŽ> =>@p=>r=>@p=T>*S=>r=>r=T>*S=z> JW=T>*S=>`(J=z> JW=z> JW=>`(J=u>@9=>`(J=퐦>!=u>@9=u>@9=퐦>!=ҟ>@U=퐦>!=U>`N=ҟ>@U=ҟ>@U=U>`N=j>@`N=n>@@*t**tVt VV $;E> <7>;i>$;i>$;7>;>Sz>@"{>kà>@ټ{>7>@kà>@ټkà>@ټ7>@ca>/˼7>@>bXca>/˼ca>/˼>bX?P>񽀢.>bX>S?P>񽀢.?P>񽀢.>SdA> >S7>;dA> :>x>S>3:>xS>3&>nVS>3[>s&>nV&>nV[>sN8> )T[>sA>PoN8> )TN8> )TA>Po>`&A>Po(>:>`&>`&(>:z>@"(>:"$>:z>@"z>@""$>:{>:>x>@x>>@x9>`䄽>>9>`䄽?p9>`䄽v>0鄽?p?pv>0鄽?`8v>0鄽>2?`8?`8>2u ?J>2a> u ?Ju ?Ja> w ?xa> q>yw ?xw ?xq>yt?q>y)>`^rt?t?)>`^r ?e)>`^r>OY ?e ?e>OYr?P]>OYc> Ir?P]r?P]c> I"?hc> IZ>*"?h"?hZ>*? WdZ>*>? Wd"?<#?4T>4#?4p#?T>4T>4p#?>Ap#?.]"?N>A>A.]"?NY>.]"?N!?ؼY>Y>!?ؼ98>x⼉!?ؼ~4?Y'98>x98>x~4?Y'>~4?Y'? 0->>? 0-? WdE> t<>A>񽀃4>񽀃@4>AY>:>xY>98>x:>x:>x98>x⼁>>`(J=T>*S=퐦>!=T>*S=:>x퐦>!=퐦>!=:>xU>`N=:>xn>`N=T>*S=>@p=:>x>@p=4>`mv=:>x:>x4>`mv=R>8=>A:>x>񽀃<:>x>@=>񽀃<>񽀃<>@=U>񽠚=>Z>*:>xZ>*c> I:>x:>xc> I>OYz>@"kà>@ټca>/˼n><:>xE> <:>xdA> E> 7>;>q=}%>)d=>uI=>OY)>`^r:>x)>`^rq>y:>x:>xq>ya> :>x&>nVN8> )T9>`䄽>@xv>0鄽>@x:>xv>0鄽v>0鄽:>x>2:>xa> >2?P>񽀢.dA> ca>/˼dA> :>xca>/˼ca>/˼:>xz>@":>xN8> )Tz>@"z>@"N8> )T>`&R>8=>p/=:>x>p/=R>=:>x:>xR>=]>񽠃=n>@W9=>@=>uI=>@=:>x>uI=>uI=:>x>q=:>x]>񽠃=>q=>q=]>񽠃=x/>p(=>=DŽ> =>r=j>@*V<{>"$>:7>@"$>:_ ?0=7>@鼊7>@鼢_ ?0=>bX_ ?0=>S>bX>=>r=>S>r=h>V<>S>Sh>V$;} ?v=?`8u ?J!?ؼ#f"?.<~4?Y'#f"?.< ?@ =~4?Y'"$>:(>:_ ?0=(>:A>Po_ ?0=_ ?0=A>Po[>s?`8} ?v=?p} ?v=_ ?0=?p?p_ ?0=>_ ?0=[>s>>[>sS>310>@D=>= ? =>=>S ? = ? =>S?@=>S_ ?0=?@=ҟ>@U=j>@@9=j>@V@9=u>@9=h>V<z> JW=h>V<>r=z> JW=u ?Jw ?x} ?v=w ?xt?} ?v=} ?v=t? ?e? 0-~4?Y'? Wd~4?Y'} ?v=? Wd? Wd} ?v="?h} ?v= ?e"?h"?h ?er?P]#?4"?<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223DATA4}DATAh 7< .corner_vert <T .corner_edge <XT) <TDATA <L4  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123DATA <L4   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231DATA <s4[׻'Ы<#p1͂y.^*"5&8z̰zڎ w>ܠ?mI gJ;,?FB: 3BJ|U )"53r΅%/0j3'@a@ 6Ͷr ED(p&y(]> n^Ϝ PǬ̠K 64#-h (ǒ"[#P:讌,D [է>g(ѫ3))D?b˨!ئ*(P"+$ fpڮ= {$$7-%)#QL+Az&&6 86^с1?8ZDͱ 4Ž@pڅΦ 3p}Zw/ ' ˹#3'0>&l3 z{-J8ӪMw@: ٯ}8n؎T  3gZ " K4] U3; xhӽ$@秦H=-[P_$-E< />-׫# 4 Ư._#|HC#@,#d, ~ψ;ڟ‚h}G ;;5sΖ1IN'S;,Y u#> -ٕ,Q|h:$Dֶ,ڧ4)%?ʨ(>ٞ‚t۾2)Klzii_5?;1<鰀x5;=MQaH*ی*PoRD/;U+=ؠmIP{QJ- ;4Mkt3JЭ.f ء= ѡpObaI~_ rQcX WHRɰ֗?" -ؠ T G@__+FB Al`>U2<ZƬ i>PC[ ԗD/ VKޗ қ>ݯI'/I}.G,!߮ Ӫ Tm0ޮY a|Uȩ^LD =20oP8`s"sz"IoW;A<W;"#. #.6  {6l? x4߅[ ˫xЫxm b$ xϧzb}[i >ii5h 6 k5hчUW"  RT!ϬT!5Cl?7ި=պ =܊Kѹ n KpQ߽sߗNnz! } [ړ !߫[y!ϠpQY oYe  we޴i3 ]Q񊮠e  "Kzu  Kz\KzX |%y ʣi5&y#ܼN =S s> sƥso{ߢU@ ]n l ]ѿ>k  >/IͦN׿T!Ϡ!T! I!Ѡ! != /Ix!!/I3ޱicIސiFI\eG98 O&#&{Ϣv͢⧑H1DҐi H1PI۬FOi VF8di i )87CIv V/CqܫH&ܦSǤH&&a-ߪM-թ:̐ʩ:ь* VJ*8ADGJMPSVY\_behknqtwz}  "%(+.14ME u=HME0.073=G-8`%:": $: :8< ?K'07 UtD>5^==A=$|DATAG-`DATA":0position SXT2 .select_vert%TDATA Sw>Lߓ>R9L<#>Lߓ>R9L;#>P9L<#>L>L=>L<#>L=>L<#>L<#>L=ߓ>R9L=>L=;#>P9L=>L=<#>L=;#>P9L=ߓ>R9Lߓ>R9L=;#>P9Lߓ>R9L=;#>P9L=;#>P9L>L=ߓ>R9L=>Lߓ>R9L=ߓ>R9L>L;#>P9L=<#>L=;#>P9L<#>L=<#>L;#>P9L\d>&ƽ\d>ƽ6?&ƽ\d>ƽ6?ƽ6?&ƽ\d>&"۽\d>&ƽ6?&"۽\d>&ƽ6?&ƽ6?&"۽\d>\d>&"۽6?\d>&"۽6?&"۽6?\d>m\d>6?m\d>6?6?m\d>zt"۽\d>m6?zt"۽\d>m6?m6?zt"۽\d>ztƽ\d>zt"۽6?ztƽ\d>zt"۽6?zt"۽6?ztƽ\d>rƽ\d>ztƽ6?rƽ\d>ztƽ6?ztƽ6?rƽ\d>r3ڽ\d>rƽ6?r3ڽ\d>rƽ6?rƽ6?r3ڽ\d>l0\d>r3ڽ6?l0\d>r3ڽ6?r3ڽ6?l0\d>0\d>l06?0\d>l06?l06?0\d>3ڽ\d>06?3ڽ\d>06?06?3ڽ\d>ƽ\d>3ڽ6?ƽ\d>3ڽ6?3ڽ6?ƽ\d>ƽ\d>&ƽ\d>3ڽ\d>&ƽ\d>&"۽\d>3ڽ\d>3ڽ\d>&"۽\d>0\d>&"۽\d>\d>0\d>0\d>\d>l0\d>\d>m\d>l0\d>l0\d>m\d>r3ڽ\d>m\d>zt"۽\d>r3ڽ\d>r3ڽ\d>zt"۽\d>rƽ\d>zt"۽\d>ztƽ\d>rƽ6?rƽ6?ztƽ6?r3ڽ6?ztƽ6?zt"۽6?r3ڽ6?r3ڽ6?zt"۽6?l06?zt"۽6?m6?l06?l06?m6?06?m6?6?06?06?6?3ڽ6?6?&"۽6?3ڽ6?3ڽ6?&"۽6?ƽ6?&"۽6?&ƽ6?ƽDATA%DATA $:..edge_verts ?طT2.select_edge%TDATA@ ?u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA%DATAh8< .corner_vert jMXT .corner_edge mMT) PRظTDATA jML  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA mML   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA PRs,t԰TTT,t԰Tˎ.3Ŏ.3,t԰TTT,t԰Tˎ.3Ŏ.3pYm̶mD۶mDpYmpYm̶mD۶mDpYmyڪ-g?h_-g_yܪ?h;"#I9K GV? 22V?ԓ0̷o۷oۓ022V? V?9K GI;"#Ҝyܪ?h-g_?h_yڪ-gՔ!j,. jB.K@wy@IZS`SSZS`y@I@wKB.j. !j,wuitqiiqWcqn\d7cnlnfll~ff f+mf*fmnmwnwuivrgjoWdrn\c7cnlnfll~ff f+ne*dommwnDATAx :2.select_polySTDATA8SDATA`%: !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME |=HME0.074>G- =': ): ::< 36^ ?>uA=$|DATAG-i<DATA':0position &T2 .select_vert 9عTDATA9 &wؘj H]=j(]=j( ) > H ) >jH ) > H"> @˽ ) >jH ) >jH"> @˽">j@˽"> @˽j 4> p]">j@˽">j@˽j 4> p]j 4>jp]j 4> p]7=> j 4>jp]j 4>jp]7=> 7=>j7=> ?> <7=>j7=>j?> j <9> `@=?>jj<9> `@=9>j`@=9> `@=`,> =9>j`@=9>j`@=`,> =`,>j=`,> =;> =`,>j=`,>j=;> =;>j =;> = = >;>j =;>j = = > =j> = >'[=!'> =j> =j>'[=!'>'[=j'>'[=!'>>e=!17>'[=j'>'[=j'>>e=!17>?e=j17>>e=!17>e?e=j17>?e=j17>e eed!?> e ed!?>dj?>d!?>"e!17>dj?>dj?>"e!17>!ej17>"e!17>[!'>!ej17>!ej17>[!'>[j'>[!'> ">[j'>[j'> "> j> ">3" = j> j>3" =3j =3" =`,"=3j =3j =`,"=`,j=`,"=9"`@=`,j=`,j=9"`@=9j`@=9"`@=?"<9j`@=9j`@=?"j?>j<:&>jj<9>j`@=:&>j<:&>j<9>j`@={>jey=9>j`@=`,>j={>jey={>jey=`,>j=1l >j=`,>j=;>j =1l >j=1l >j=;>j ==jЕ=;>j = =j>=jЕ==jЕ= =j>*=jV> =j>'[=j'>*=jV>*=jV>'[=j'>$W=j`>'[=j'>?e=j17>$W=j`>$W=j`>?e=j17>/?e=j17> e// e󲑼ju'> edj?>󲑼ju'>󲑼ju'>dj?>$Wj`>dj?>!ej17>$Wj`>$Wj`>!ej17>jV>!ej17>[j'>jV>jV>[j'>罁jЕ=[j'> j>罁jЕ=罁jЕ= j>)l j= j>3j =)l j=)l j=3j ={jey=3j =`,j={jey={jey=`,j=:&j<`,j=9j`@=:&j<9j`@=?j<:&j<:&jjڽ]=j( ) >jH~b>jڽ~b>jڽ ) >jHo>jΝ ) >jH">j@˽o>jΝo>jΝ">j@˽N">jB4">j@˽j 4>jp]N">jB4N">jB4j 4>jp]v3(>jj 4>jp]7=>jv3(>jv3(>j7=>j?>j<\%x$n3jr($~t3%r(n3jr(z=jx$$~t3%r($~t3%r(z=jx$z=%x$z=jx$u=jz=%x$z=%x$u=ju=%u=j=ju=%u=%=j=$=j~b>jڽ=$=$~b>jڽ~b>$ڽ~b>jڽo>jΝ~b>$ڽ~b>$ڽo>jΝo>$Νo>jΝN">jB4o>$Νo>$ΝN">jB4N">$B4N">jB4v3(>jN">$B4N">$B4v3(>jv3(>$v3(>j:&>j$v3(>$:&>j<:&>$<:&>j<{>jey=:&>$<:&>$<{>jey={>$ey={>jey=1l >j={>$ey={>$ey=1l >j=1l >$=1l >j==jЕ=1l >$=1l >$==jЕ==$Е==jЕ=*=jV>=$Е==$Е=*=jV>+=%V>*=jV>$W=j`>+=%V>+=%V>$W=j`>$W=%`>$W=j`>/$W=%`>$W=%`>/0<%u'>/󲑼ju'>0<%u'>0<%u'>󲑼ju'>򲑼%u'>󲑼ju'>$Wj`>򲑼%u'>򲑼%u'>$Wj`>$W%`>$Wj`>jV>$W%`>$W%`>jV>%V>jV>罁jЕ=%V>%V>罁jЕ=߮&Е=罁jЕ=)l j=߮&Е=߮&Е=)l j=)l &=)l j={jey=)l &=)l &={jey={&ey={jey=:&j<{&ey={&ey=:&j<:&&<:&jK ¾=J ¾Ȕ>%V>%V>J ¾Ȕ>$W%`>J ¾Ȕ>TJ ¾>$W%`>$W%`>TJ ¾>򲑼%u'>TJ ¾>v폼J ¾l%>򲑼%u'>򲑼%u'>v폼J ¾l%>0<%u'>v폼J ¾l%>0<%u'>0<%u'>$W=%`>T=J ¾>$W=%`>$W=%`>T=J ¾>+=%V>T=J ¾>=J ¾Ȕ>+=%V>+=%V>=J ¾Ȕ>=$Е==J ¾Ȕ>=I ¾==$Е==$Е==I ¾=1l >$==I ¾=? >I ¾`ú=1l >$=1l >$=? >I ¾`ú={>$ey=? >I ¾`ú=>I ¾@]v={>$ey={>$ey=>I ¾@]v=:&>$<>I ¾@]v=@5$>I ¾]<:&>$<:&>$<@5$>I ¾]$@5$>I ¾]<'&>I ¾#v3(>$v3(>$'&>I ¾#N">$B4'&>I ¾#U >I ¾2N">$B4N">$B4U >I ¾2o>$ΝU >I ¾28>I ¾⛽o>$Νo>$Ν8>I ¾⛽~b>$ڽ8>I ¾⛽ͥ=I ¾0s׽~b>$ڽ~b>$ڽͥ=I ¾0s׽=$ͥ=I ¾0s׽f=J ¾@x=$=$f=J ¾@xu=%f=J ¾@x>=J ¾8u=%u=%>=J ¾8z=%x$>=J ¾8=J ¾p"z=%x$z=%x$=J ¾p"$~t3%r(=J ¾p"/u3J ¾`f&$~t3%r($~t3%r(/u3J ¾`f&\%x$/u3J ¾`f&J ¾p"\%x$=J ¾Ȕ>T=J ¾>; =J ¾H>>T=J ¾>; =J ¾H>>; =J ¾H>>;u3J ¾ />v폼J ¾l%>;u3J ¾ />;u3J ¾ />v폼J ¾l%> J ¾H>>v폼J ¾l%>TJ ¾> J ¾H>> J ¾H>>TJ ¾>)fJ ¾8 >TJ ¾>J ¾Ȕ>)fJ ¾8 >)fJ ¾8 >J ¾Ȕ>QĽJ ¾p=J ¾Ȕ>K ¾=QĽJ ¾p=QĽJ ¾p=K ¾=_K ¾p=K ¾=7 K ¾`ú=_K ¾p=_K ¾p=7 K ¾`ú=+ K ¾@f=7 K ¾`ú=K ¾@]v=+ K ¾@f=+ K ¾@f=K ¾@]v=7>K ¾` =K ¾@]v=85$K ¾]<7>K ¾` =7>K ¾` =85$K ¾]</K ¾485$K ¾]<'&K ¾#/K ¾4/K ¾4'&K ¾#7>K ¾ '&K ¾#U K ¾27>K ¾ 7>K ¾ U K ¾2+ K ¾ fU K ¾20K ¾⛽+ K ¾ f+ K ¾ f0K ¾⛽_K ¾PĽ0K ¾⛽K ¾0s׽_K ¾PĽ_K ¾PĽK ¾0s׽QĽJ ¾PK ¾0s׽fɽJ ¾@xQĽJ ¾PQĽJ ¾PfɽJ ¾@x)fJ ¾( fɽJ ¾@x.J ¾8)fJ ¾( )fJ ¾( .J ¾8 J ¾8>.J ¾8J ¾p" J ¾8> J ¾8>J ¾p"/u3J ¾/J ¾p"/u3J ¾`f&/u3J ¾//u3J ¾//u3J ¾`f&; =J ¾8>/u3J ¾`f&=J ¾p"; =J ¾8>; =J ¾8>=J ¾p"9f=J ¾( =J ¾p">=J ¾89f=J ¾( 9f=J ¾( >=J ¾8a=J ¾P>=J ¾8f=J ¾@xa=J ¾Pa=J ¾Pf=J ¾@xo=I ¾PĽf=J ¾@xͥ=I ¾0s׽o=I ¾PĽo=I ¾PĽͥ=I ¾0s׽3 >I ¾ fͥ=I ¾0s׽8>I ¾⛽3 >I ¾ f3 >I ¾ f8>I ¾⛽?>>I ¾ 8>I ¾⛽U >I ¾2?>>I ¾ ?>>I ¾ U >I ¾2/>I ¾4U >I ¾2'&>I ¾#/>I ¾4/>I ¾4'&>I ¾#?>>I ¾` ='&>I ¾#@5$>I ¾]>I ¾` =?>>I ¾` =@5$>I ¾]<3 >I ¾@f=@5$>I ¾]<>I ¾@]v=3 >I ¾@f=3 >I ¾@f=>I ¾@]v=o=I ¾p=>I ¾@]v=? >I ¾`ú=o=I ¾p=o=I ¾p=? >I ¾`ú=a=J ¾p=? >I ¾`ú==I ¾=a=J ¾p=a=J ¾p==I ¾=9f=J ¾8 >=I ¾==J ¾Ȕ>9f=J ¾8 >9f=J ¾8 >=J ¾Ȕ>; =J ¾H>>; =J ¾8>Ub3!//u3J ¾/Ub3!/ !8>/u3J ¾//u3J ¾/ !8> J ¾8> !8>*f!(  J ¾8> J ¾8>*f!( )fJ ¾( *f!( RĽ!P)fJ ¾( )fJ ¾( RĽ!PQĽJ ¾PRĽ!P`"PĽQĽJ ¾PQĽJ ¾P`"PĽ_K ¾PĽ`"PĽ+ " f_K ¾PĽ_K ¾PĽ+ " f+ K ¾ f+ " f7>" + K ¾ f+ K ¾ f7>" 7>K ¾ 7>" /"47>K ¾ 7>K ¾ /"4/K ¾4/"47>"` =/K ¾4/K ¾47>"` =7>K ¾` =7>"` =+ "@f=7>K ¾` =7>K ¾` =+ "@f=+ K ¾@f=+ "@f=`"p=+ K ¾@f=+ K ¾@f=`"p=_K ¾p=`"p=RĽ!p=_K ¾p=_K ¾p=RĽ!p=QĽJ ¾p=RĽ!p=*f!8 >QĽJ ¾p=QĽJ ¾p=*f!8 >)fJ ¾8 >*f!8 > !H>>)fJ ¾8 >)fJ ¾8 > !H>> J ¾H>> !H>>Ub3! /> J ¾H>> J ¾H>>Ub3! />;u3J ¾ />Ub3! />: =!H>>;u3J ¾ />;u3J ¾ />: =!H>>; =J ¾H>>: =!H>>8f=!8 >; =J ¾H>>; =J ¾H>>8f=!8 >9f=J ¾8 >8f=!8 >`=!p=9f=J ¾8 >9f=J ¾8 >`=!p=a=J ¾p=`=!p=n= p=a=J ¾p=a=J ¾p=n= p=o=I ¾p=n= p=3 > @f=o=I ¾p=o=I ¾p=3 > @f=3 >I ¾@f=3 > @f=?>> ` =3 >I ¾@f=3 >I ¾@f=?>> ` =?>>I ¾` =?>> ` =/> 4?>>I ¾` =?>>I ¾` =/> 4/>I ¾4/> 4?>> />I ¾4/>I ¾4?>> ?>>I ¾ ?>> 3 > f?>>I ¾ ?>>I ¾ 3 > f3 >I ¾ f3 > fn= PĽ3 >I ¾ f3 >I ¾ fn= PĽo=I ¾PĽn= PĽ`=!Po=I ¾PĽo=I ¾PĽ`=!Pa=J ¾P`=!P8f=!( a=J ¾Pa=J ¾P8f=!( 9f=J ¾( 8f=!( : =!8>9f=J ¾( 9f=J ¾( : =!8>; =J ¾8>: =!8>Ub3!/; =J ¾8> !H>>d!?>Ub3! />d!?>eUb3! />Ub3! />e: =!H>>e>e=!17>: =!H>>: =!H>>>e=!17>8f=!8 >>e=!17>'[=!'>8f=!8 >8f=!8 >'[=!'>`=!p='[=!'> = >`=!p=`=!p= = >n= p= = >;> =n= p=n= p=;> =3 > @f=;> =`,> =3 > @f=3 > @f=`,> =?>> ` =`,> =9> `@=?>> ` =?>> ` =9> `@=/> 49> `@=?> </> 4/> 4?> > ?> <7=> ?>> ?>> 7=> 3 > f`"PĽ""@˽+ " f""@˽b 4"p]+ " f+ " fb 4"p]7>" b 4"p]/="7>" 7>" /="/"4/="?"</"4/"4?"<7>"` =?"<9"`@=7>"` =7>"` =9"`@=+ "@f=9"`@=`,"=+ "@f=+ "@f=`,"=`"p=`,"=3" =`"p=`"p=3" =RĽ!p=3" = ">RĽ!p=RĽ!p= ">*f!8 > ">[!'>*f!8 >*f!8 >[!'> !H>>[!'>"e!17> !H>> !H>>"e!17>d!?>7=> j 4> p]3 > fj 4> p]"> @˽3 > f3 > f"> @˽n= PĽ"> @˽ ) > Hn= PĽn= PĽ ) > H`=!P ) > H]= (`=!P`=!P]= (8f=!( ]= (n=!p08f=!( 8f=!( n=!p0: =!8>n=!p0=!<: =!8>: =!8>=!Ub3!?٘!< !8> !8>٘!<*f!( ٘!<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~DATA 9DATAh:< .corner_vert ;T .corner_edge ;غT) BTDATA8 ;L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA8 ;L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}DATA8 Bs GϣUHGEUVVCUgFFУUFfG@*V@ӲUhFFϣUGGBV>ӐUi Gu9;P\9ل9PAP69T9|9&THT|9]|9Po9]O]o9io9^9miWi?^9y^9H9.yQ`yH9lȍ–H9.96j|.9ɥ.969笥uq9)<9^8׭8q88Ю:; 8x8ۘ8ɯȅ8-8h8-%-h8Zh848ZNZP48Ћ487Ce7ium7ۈG^uG؇9u7u9O9qن9bOg>Of9Q 9ـ9QEQ9fXO9)v9qXLXv9bov9tg9bSbg9Ippg9S9˪q[qwT9ǃWS9;9e;9 ɘ';99so9ʲ9J8^{88p8S8 .8ۮ8M 838ۀ8E8?CE8N87C@CN80ršN88rOrp8ѥ687*3 7u7YGuԎu;YG:ه9)Z`bKÞbBb\ZBbJÀb b[Z bI_baZZaH9baYZaGbaXZaFamaWZnaDîaiZiyib^ZbMcyb^ZbMbyb^ZbMbzb^ZbLbzb]ZbLb{b]ZbLb|mb]ZmbKëb~Qb\ZQbJÐb1b[Z1bIpb bZZbHMbaZZaG%baYZaFaaXZaEaiZiyib^ZbMcyb^ZbMbyb^ZbMbzb^ZbMbzb^ZbLb{b]ZbLb|yb]ZybKøb}`b\22~1l1}1ߕ1l1T22p1l1p1ߊ1l1T22d1l1d1~1l1U22Y1l1Y1t1l1T22O1l1O1k1l1U22F1l1E1c1l1T32=1l1=1\1l1T3261l161V1l1T3201l101Q1l1T32*1l1+1L1l1T22'1l1&1I1m1T32#1l1#1G1l1T22"1k1!1F1l1T22!1l1!1G1l1T22 1l1 1ߤ-l1T32q-\l1q-ޒ2l1T22q2l1p2)|2l1U22Z2l1Y2(e2l1T32C2l1C2'Q2l1T22.2l1.2&<2l1T322l12%(2l1T322l12%2l1T321l11$2l1T321l11#1l1T221l11#1l1T221l1ݺ1"1l1T221l1ݪ1!߿1l1T221l1ݚ1!߰1l1T221l1݋1 ߢ1l1T `XO)ƣ``)(g)|)(g;(g)A)g)()g߿)g(-g(&I-g-g&2g%&"2g2gX#9gH"Ť:g3:g^CghCgbCg?Og+oOgOgT1]g> ۥ]g]gá 6mg N\mgRmgFQg]ggǓgjgQ˓gȪguxg̪gd$ghggTg#wg,gcg5۽gg\hEۮ֬h>hƨ;hU۟:h;h ^heێL^h^hKуhs|whքh|ҫh}jh׫hjhjWhhWYiWDqiliD0iD/?0i0i/h`i/`i`ioՓiiۓi.+i *iiݲ wi ii} օ`Ft`G؛FDFr0GaFKaFp FFRFn"F؍RXRش6R1G#]#1GxHG*G7a7*GxX|GGIfIGwguGFXiXFvsnGFfmfFu}inGجFqoqFseAGuF{q{žuFqa G4FsĞ4Fn_F؏RtŞRش]R2Guƞ2Gx]G-Guƞ-Gx!GG  GwGGGvDGFͯ"Fur{GؽF5ۯ50FtpQG؉Fff=FrWGKFJKFo?FFVFm)F،RaRش>R0Gl0GxaG%G;";u%GwGG_,_GwGF5FvGF=-*9**99*9H*{*`9w9=*`9**99 **9h*]ٴ**9*9ꥴ*K9ܴ*ٜ*ìK9WK9ߦ*Au9Kݝ**u9tu9*ɪ9*J\*9p̪9\*9\*3*9G9 3*]0:O3**0:0:&*}͘-ޖ-*9* *99*=9}**9A9*9**[99R*49*}٭*-4949:*8X9ݭ*ٓ*X9X94*Ȇ9mݓ*t*9!ˆ9>t*4ʽ9t*^O*9ͽ9QO*9O*$*99j$*̕-g$*N8Ѱ-Е-N8Q*)*8i-8*-J-L*9*N*&99* 9**٪ 9 9ä*!9<*<ٻ*!9]!9*&?9ܻ*٥*w?9?9*f9)ݥ*ى*^f9f9*@ɗ9݉*4h*N9˗9h*9h*qA*B99A*:6A**4:m:Ȫ*!͖-*28-і-28*XDATAx:2.select_poly`0XTDATA`0DATAl = !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}ME =HME0.075?G-ff"f L+: ,: `: >< RX$&V[<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddeDATAh:DATAh >< .corner_vert?<ؼT .corner_edge`<<T)A<XTDATA?<Lf  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeDATA`<<Lf   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decDATAA<sfDb4b *{~ фS*{~$~LѼ9LM/?>}/p P__BP>}3)9'B3) -D\x1)7$))2w>}hzQ_BB_/p P>}/?$PZZuYmӚZs?sFErsmզ96>96>8lՓ[Aߓ[8@++gNA@hpO#\DATAx`:2.select_poly `LTDATA$ `LDATA L !$'*-0369<?BEHKNQTWZ]`cfME =HME0.076@ H-0 9`/: 0: : E< s8VXtV~*>=Pt=A=$|DATA H-`H DATA`/:0position @OT2 .select_vert TXTDATA* @Ow `N꾈 `辈 `N꾈 `辈 `辈 `N꾈 `1 `1 ` `1 ` ` `N꾈 `辈}EN `辈4gDxW}EN}EN4gDxW}E4gDxW4gD0xW}E}E4gD0xW `4gD0xW `1 ` `14gD0: `4gD0:4gD: `P+辨YC 辨YP+0YC 辨YC 0YP+0YP+xWP+辨YP+0xWP+辨YP+0YP+0xW4gDxWP+xW4gD0xWP+xWP+0xW4gD0xW4gDN꾠:4gD辠: `N꾈4gD辠: `辈 `N꾈4gD0:0:4gD:0:辠:4gD:4gD:辠:4gDN꾠:辠:4gD辠:4gDN꾠:C 辨辠:C 0辠:0:C 0C 辨YC 辨C 0YC 辨C 0C 0YP+xW4gDxWP+辨Y4gDxW `辈P+辨YP+辨Y `辈 `辈C 辨C 辨Y辠:C 辨YP+辨Y辠:辠:P+辨Y4gD辠:P+辨Y `辈4gD辠:P+0xWP+0Y4gD0xWP+0Y `14gD0xWC 00:C 0Y0:4gD0:C 0YC 0Y4gD0:P+0Y4gD0: `1P+0YP+0Y `1 `14gD44gD}E `4gD:4gDM%YmE FD SD=SD=4gD4YmE 4gD4}EYmE YmE }E`] }E ``] `]  `^ق `l_y^قSD%FD0&4gDM%FD0&YmET&4gDM%4gDM%YmET& `YmET&`]T& ` ``]T&^H&^H&l_0Z' `l_0Z'_P`( ` `_P`( `_P`(_ ` `_l_y}ENYmEN  `N꾈YmEN `]N  `N꾈 `N꾈`]N ^NقSDN꾬=FDN꾴 4gDN4FDN꾴 YmEN 4gDN44gDN4YmEN 4gDNYmEN }EN4gDNl_N0Z'^NH& `N꾈^NH&`]NT& `N꾈 `N꾈`]NT&4gDN꾠:`]NT&YmENT&4gDN꾠:4gDN꾠:YmENT&4gDNM%YmENT&FDN0&4gDNM%4gDNM%FDN0&SDN%^Nقl_Ny `N꾈l_Ny_N `N꾈 `N꾈_N `N꾈_N_NP`( `N꾈 `N꾈_NP`(l_N0Z'4gD4gDN}E4gDN}EN}E:Q(f=P(f=>龤WP+@龤WP+R(:Q(:Q(f=>龤WP+@龤Wf=>龤Wf=|o4דP+@龤WP+@龤Wf=|o4דP+~o4דf=|o4דf= p,P+~o4דP+~o4דf= p,P+p,f= p,f=`JP+p,P+p,f=`JP+`JP+M`JP+`Jf=M`JP+`Jf=`Jf=M`JP+M`Jf=M`Jf=wP+M`Jf=wP+wf=wf=ąP+wP+wf=ąP+ąf=ąf=(P+ąP+ąf=(P+(P+]P+(f=]P+(f=(f=]P+]f=]f=0\P+]f=0\P+0\f=0\f=w[P+0\P+0\f=w[P+w[f=w[f=MZP+w[P+w[f=MZP+MZP+꾘ZP+MZf=꾘ZP+MZf=MZf=꾘ZP+꾘Zf=꾘Zf= pZP+꾘Zf= pZP+pZf= pZf=|o[P+pZP+pZf=|o[P+~o[f=|o[f=>\P+~o[P+~o[f=>\P+@\f=>\f=P]P+@\P+@\f=P]P+R]P+R(P+R]:Q(P+R]f=P]:Q(:Q(f=P]f=P(P+ąP+`JP+MąP+`JP+M`JP+MąP+MąP+M`JP+tFlkP+M`JP+wP+tFlkP+tFlkP+wP+ojt#P+wP+ąP+ojt#P+ojt#P+ąP+w(P+ąP+(P+w(P+w(P+(P+w]P+(P+]P+w]P+w]P+]P+ojh\P+]P+0\P+ojh\P+ojh\P+0\P+tFxe\P+0\P+w[P+tFxe\P+tFxe\P+w[P+M0\P+w[P+MZP+M0\P+M0\P+MZP+0\P+MZP+꾘ZP+0\P+0\P+꾘ZP+L:꾸N\P+꾘ZP+pZP+L:꾸N\P+L:꾸N\P+pZP+\P+pZP+~o[P+\P+\P+~o[P+龈#]P+~o[P+@\P+龈#]P+龈#]P+@\P+]P+@\P+R]P+]P+]P+R]P+(P+R]P+R(P+(P+(P+R(P+d P+R(P+@龤WP+d P+d P+@龤WP+,LP+@龤WP+~o4דP+,LP+,LP+~o4דP+L:vP+~o4דP+p,P+L:vP+L:vP+p,P+ąP+p,P+`JP+ąf=ąf=`Jf=J:vf=`Jf= p,f=J:vf=J:vf= p,f=,Lf= p,f=|o4דf=,Lf=,Lf=|o4דf=d f=|o4דf=>龤Wf=d f=d f=>龤Wf=(f=>龤Wf=P(f=(f=(f=P(f=]f=P(f=P]f=]f=]f=P]f=龈#]f=P]f=>\f=龈#]f=龈#]f=>\f=\f=>\f=|o[f=\f=\f=|o[f=J:꾸N\f=|o[f= pZf=J:꾸N\f=J:꾸N\f= pZf=0\f= pZf=꾘Zf=0\f=0\f=꾘Zf=M0\f=꾘Zf=MZf=M0\f=M0\f=MZf=tFxe\f=MZf=w[f=tFxe\f=tFxe\f=w[f=ojh\f=w[f=0\f=ojh\f=ojh\f=0\f=w]f=0\f=]f=w]f=w]f=]f=w(f=]f=(f=w(f=w(f=(f=ojt#f=(f=ąf=ojt#f=ojt#f=ąf=tFlkf=ąf=wf=tFlkf=tFlkf=wf=Mąf=wf=M`Jf=Mąf=Mąf=M`Jf=ąf=M`Jf=`Jf=ąP+ąf=ąf=J:vP+ąf=J:vP+L:vf=J:vf=,LP+L:vP+L:vf=,LP+,Lf=,Lf=d P+,LP+,Lf=d P+d f=d f=(P+d P+d f=(P+(P+ąP+Mąf=ąP+Mąf=Mąf=ąP+w(f=w(f=ojt#P+w(f=ojt#P+ojt#f=ojt#f=tFlkP+ojt#P+ojt#f=tFlkP+tFlkf=tFlkf=MąP+tFlkP+tFlkf=MąP+MąP+w(P+w]f=w(P+w]f=w]f=w(P+M0\f=M0\f=tFxe\P+M0\f=tFxe\P+tFxe\f=tFxe\f=ojh\P+tFxe\P+tFxe\f=ojh\P+ojh\f=ojh\f=w]P+ojh\P+ojh\f=w]P+w]P+M0\P+0\f=M0\P+0\f=0\f=M0\:]f=]f=龈#]P+龈#]P+]:]:]f=龈#]P+龈#]f=龈#]f=\P+龈#]P+龈#]f=\P+\f=\f=J:꾸N\P+\P+\f=J:꾸N\P+L:꾸N\f=J:꾸N\f=0\P+L:꾸N\P+L:꾸N\f=0\P+0\P+]P+(:]P+(f=(:]:]f=(f=](=0TQ(=0kLf=0TQ(=0kLf=0kLf=0TQf=ZxWf=xW'=ZxWf=xW&=xW'=ZxWf=TQf=kL&=TQf=kL&=kL&=TQ&=龀_Jf=龀_J'=A_Jf=龀_Jf=A_J'=A_J'=A_Jf=A_J'=xDLf=A_Jf=xHL'=xDL'=xDLf=xHL'=FLf=xHLf=XL'=FL'=FLf=XL'=XLf=XLf=xHL'=XL'=XLf=xHL'=|FL'=|FLf=xHL'=xDLf=xHLf=n_J'=xDL'=xDLf=n_J'=n_J'=n_Jf=n_J'=Z_Jf=n_Jf=Z_J'=Z_J=kL=4kL=TQ=4kL=o@N=TQ=TQ=o@N=ZTQ=kL=ZkL=5@@N=ZkL=ZTQ=5@@N=5@@N=ZTQ=X N=ZTQ=o@N=X Nf=xWf=xHLf=A_Jf=xWf=A_Jf=TQf=A_Jf=龀_Jf=TQf=TQf=龀_Jf=kLf=0kLf=Z_Jf=0TQf=Z_Jf=n_Jf=0TQf=0TQf=n_Jf=ZxWf=n_Jf=xHLf=ZxWf=ZxWf=xHLf=xWf=xHLf=XLf=xWf=xWf=XLf=xHLf=xWf=TQ&=xWf=TQ&=TQ&=xW&=xW&=TQ=TQ&=龀_J&=kLf=龀_J&=kLf=kLf=龀_J&=kL=kL&=TQ=kL=TQ&=TQ=ZTQ'=ZxW=TQ'=ZxW&=xW=TQ'=ZxW(=0TQf=ZxW(=0TQf=0TQf=ZxW&=kL&=龀_J=kL'=ZxW=ZTQ(=0TQ=4kL=kLB=!eK=kL&=龀_JB=!eKB=!eK&=龀_J'=A_J=ZkL(=0kL=ZTQ(=0kL(=0TQ=ZTQ(=0kL'=Z_Jf=0kL'=Z_Jf=Z_Jf=0kLB=!eK'=A_J'=xDL=kL=5@@NB= eK=5@@N'=xDLB= eKB= eK'=xDL'=n_J=o@N=4kLB=!eKB=!eK'=xDL=o@N'=xDL'=FL=o@N=o@N'=FL=X N'=FL'=XL=X N=X N'=XL=5@@N'=XL'=|FL=5@@N=5@@N'=|FL'=xDL(=0kL=ZkL'=Z_J=ZkL=kL'=Z_J=kLB= eK'=Z_J'=Z_JB= eK'=n_JDATA TDATA0:..edge_verts TT2.select_edge TؾTDATA Tu    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA TDATAh E< .corner_vert &T .corner_edge P+XT) `+TDATA@ &L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA@ P+L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA@ `+s-Wx~HL.Wxz@HLҤ{ WxabWx[b*X}{Ҫg{ޯigҪg i*riDZ3rrʫZʺ50ZUK|}54y|].||U]hxUN|lMN(Δq|lY4e/Y/Yg$ճbcYTM YTbsίMĨ{gӞ4Є{?yF4&}&H4&HAv4g4;A3W:SA{pW:7S8?H˳C)0HN2C)tHɾ յ8 ȡ8ʪf =p'=2Ȁ'ګ'ĀӵڦEwRfARJ'~*xaml~t~.|zYUzȆ3c*YԼY3cT f{3cq0UC fJ f0UH9U1U=ICD)[Dye{4{O44\z@YcY D?Y7ټYخ.|(|~%|~`AA|~.A2_­ 8QNӻ-  G_Q ?O LԱ _ Ԝ G_e&e& LԜ G_ Lԛ G_d&d&cwԛ G_ Lcg_r*Qz}zHB_BCt_t_t_qt_o_A4cǁc4o_Aqt_t_t_At_A_ BHzć}*Qzag_r Lawԝ G_g&f& LԜ G_ Lԛ G_c&d& Lԛ G_ Lԝ G_f&f&ԝ G_ LԦ_͠ŭC`ݠufCCu(ԌߌߍԌfލԠtffyfޠ֠tfhyƌ֌ˋԌߌߍԌfލԟtgfzfޟ֟tffyƊ֌ˊ|ԌߌߍઌԌf܍՟ϯfffܟ֟ίff|ݟ֟ϯ|z'tޟfofffªfffխӮffKfܭ՟ϯffgܟ֟ϯffŊgޟ֌bȌf܍ՠϯfgfܟ֟ϯfffܟ֌ffIJqތ6~lȱ6~4~6~߲ɪ4~4~Gݲ՟ϯGGեfܟ֟ϯfffܟ֟ϯffŋeޟ֌bȋԌߌߍԌfގԟtffyfޟ֟tffyƋ֌ˋԌߌߍԌfލԟtffyfޠ֠tffzƋ֌ˊ|ԌߌߍઌԵ : ˀ '!a;b; '! '!g;h; &! '!f;f; '! d xuxjvt̾q>ط?ltG02h/nߚ2(>/9>@/x=/*0\x=I@Fp>vzp>؊_z4@B:B3BQijJ@B?>GF>OT+FFҪT+\ܻ:ު9k/9Գ:mz>+?4fw >` .?_2 \+4ދ;ܵ>F>Qڧ̼2P?ѻ5/??/T̨=r/Uݚ0\=cί=/X9?l݉//8?-? /]ֻ5|oBlĉH>[>hr=1qǰ{1̤1R/7DATAx:2.select_polyzNؿTDATA0zNDATA 9 !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME =HME0.077APH-H < 3: `4: `:F< 3b4!I>@ W=p=J>A=$|DATAPH-M DATA 3:0position`nCXT2 .select_vert =TDATA R`nCw5=/ݾX.h=/ݾ,=/ݾx%h=/ݾ,8</ݾ45=/ݾx%=/ݾx%8</ݾ453/ݾX)8</ݾ45򧝼/ݾ453/ݾX)3/ݾX)򧝼/ݾ45e/ݾx%򧝼/ݾ45uh/ݾ,e/ݾx%e/ݾx%uh/ݾ,H/ݾhuh/ݾ,#/ݾX.H/ݾhH/ݾh#/ݾX.ӽ/ݾز#/ݾX.T/ݾTӽ/ݾزӽ/ݾزT/ݾT۲/ݾӽT/ݾTN/ݾ̽۲/ݾӽ۲/ݾӽN/ݾ̽j/ݾHN/ݾ̽S)/ݾj/ݾHj/ݾHS)/ݾx%/ݾ`S)/ݾ3/ݾx%/ݾ`x%/ݾ`3/ݾ[)/ݾ43/ݾ06/ݾ<[)/ݾ4[)/ݾ406/ݾ /ݾ@=ܽ͜/ݾ>ӽ/ݾ>ӽ/ݾ>ܽ͜/ݾ>H/ݾx>ܽ͜/ݾ>c/ݾm%>H/ݾx>H/ݾx>c/ݾm%>e/ݾy%>c/ݾm%>j/ݾ2>e/ݾy%>e/ݾy%>j/ݾ2>3/ݾh)>j/ݾ2>3/ݾE6>3/ݾh)>3/ݾh)>3/ݾE6>=/ݾy%>3/ݾE6>=/ݾ2>=/ݾy%>=/ݾy%>=/ݾ2>H=/ݾx>=/ݾ2>u=/ݾm%>H=/ݾx>H=/ݾx>u=/ݾm%>å=/ݾ>u=/ݾm%>ߜ=/ݾ>å=/ݾ>å=/ݾ>ߜ=/ݾ>>/ݾ=ߜ=/ݾ> >/ݾ@=>/ݾ=>/ݾ= >/ݾ@=r>/ݾH= >/ݾ@=! !>/ݾ=r>/ݾH=r>/ݾH=! !>/ݾ=x%>/ݾ=! !>/ݾ=ՠ/>/ݾ@ C=x%>/ݾ=x%>/ݾ=ՠ/>/ݾ@ C=c)>/ݾ4ՠ/>/ݾ@ C=86>/ݾ/ݾ4c)>/ݾ486>/ݾ/ݾ`86>/ݾ<3>/ݾx%>/ݾ`x%>/ݾ`3>/ݾr>/ݾH3>/ݾ뼗S)>/ݾr>/ݾHr>/ݾHS)>/ݾ>/ݾӽS)>/ݾV>/ݾГ̽>/ݾӽ>/ݾӽV>/ݾГ̽å=/ݾزV>/ݾГ̽f=/ݾTå=/ݾزå=/ݾزf=/ݾTH=/ݾhf=/ݾT5=/ݾX.H=/ݾhH=/ݾh5=/ݾX.=/ݾx%=/ݾy%> 3x h)>3/ݾh)> 3x h)>ax y%>3/ݾh)>3/ݾh)>ax y%>e/ݾy%>ax y%>Hx x>e/ݾy%>e/ݾy%>Hx x>H/ݾx>Hx x>ӽx >H/ݾx>H/ݾx>ӽx >ӽ/ݾ>ӽx >ڲx =ӽ/ݾ>ӽ/ݾ>ڲx =۲/ݾ=ڲx =ix H=۲/ݾ=۲/ݾ=ix H=j/ݾH=ix H=x%x =j/ݾH=j/ݾH=x%x =x%/ݾ=x%x =Z)x 4x%/ݾ=x%/ݾ=Z)x 4[)/ݾ4Z)x 4x%x `[)/ݾ4[)/ݾ4x%x `x%/ݾ`x%x `ix Hx%/ݾ`x%/ݾ`ix Hj/ݾHix Hڲx ӽj/ݾHj/ݾHڲx ӽ۲/ݾӽڲx ӽӽx ز۲/ݾӽ۲/ݾӽӽx زӽ/ݾزӽx زHx hӽ/ݾزӽ/ݾزHx hH/ݾhHx hax x%H/ݾhH/ݾhax x%e/ݾx%ax x% 3x X)e/ݾx%e/ݾx% 3x X)3/ݾX) 3x X)=x x%3/ݾX)3/ݾX)=x x%=/ݾx%=x x%H=x h=/ݾx%=/ݾx%H=x hH=/ݾhH=x hť=x زH=/ݾhH=/ݾhť=x زå=/ݾزť=x ز>x ӽå=/ݾزå=/ݾز>x ӽ>/ݾӽ>x ӽs>x H>/ݾӽ>/ݾӽs>x Hr>/ݾHs>x Hx%>x `r>/ݾHr>/ݾHx%>x `x%>/ݾ`x%>x `d)>x 4x%>/ݾ`x%>/ݾ`d)>x 4c)>/ݾ4d)>x 4x%>x =c)>/ݾ4c)>/ݾ4x%>x =x%>/ݾ=x%>x =s>x H=x%>/ݾ=x%>/ݾ=s>x H=r>/ݾH=s>x H=>x =r>/ݾH=r>/ݾH=>x =>/ݾ=>x =ť=x >>/ݾ=>/ݾ=ť=x >å=/ݾ>ť=x >H=x x>å=/ݾ>å=/ݾ>H=x x>H=/ݾx>H=x x>=x y%>H=/ݾx>H=/ݾx>=x y%>=/ݾy%>=x y%> 3x h)>=/ݾy%>qhx ,駝x 45 3x X)駝x 45Ax ӽh=x TW>x Г̽>x ӽ>x ӽW>x Г̽s>x HW>x Г̽S)>x s>x Hs>x HS)>x x%>x `S)>x 3>x x%>x `x%>x `3>x d)>x 43>x 96>x x 4d)>x 496>x x =96>x <֠/>x @ C=x%>x =x%>x =֠/>x @ C=s>x H=֠/>x @ C=" !>x =s>x H=s>x H=" !>x =>x =" !>x = >x @=>x =>x = >x @=ť=x > >x @==x >ť=x >ť=x >=x >H=x x>=x >w=x m%>H=x x>H=x x>w=x m%>=x y%>w=x m%>=x 2>=x y%>=x y%>=x 2> 3x h)>=x 2> 3x E6> 3x h)> 3x h)> 3x E6>ax y%> 3x E6>fx 2>ax y%>ax y%>fx 2>Hx x>fx 2>ax m%>Hx x>Hx x>ax m%>ӽx >ax m%>˜ܽx >ӽx >ӽx >˜ܽx >ڲx =˜ܽx > x @=ڲx =ڲx = x @=ix H= x @= !x =ix H=ix H= !x =x%x = !x =̠/x @ C=x%x =x%x =̠/x @ C=Z)x 4̠/x @ C=/6x  3x E6>R3X E6> 3x E6>=x 2>R3X E6>R3X E6>=x 2>=X 2>=x 2>w=x m%>=X 2>=X 2>w=x m%>w=X m%>w=x m%>=x >w=X m%>w=X m%>=x >=X >=x > >x @==X >=X > >x @= >X @= >x @=" !>x = >X @= >X @=" !>x =" !>X =" !>x =֠/>x @ C=" !>X =" !>X =֠/>x @ C=֠/>X @ C=֠/>x @ C=96>x <֠/>X @ C=֠/>X @ C=96>x <96>X <96>x <3>x 96>X <96>X <3>x 3>X 3>x 뼘S)>x 3>X 3>X 뼘S)>x S)>X S)>x W>x Г̽S)>X S)>X W>x Г̽W>X Г̽W>x Г̽h=x TW>X Г̽W>X Г̽h=x Th=X Th=x T7=x X.h=X Th=X T7=x X.7=X X.7=x X.h=x ,7=X X.7=X X.h=x ,h=X ,h=x ,A X @= X @=˜ܽx >˜ܽX >˜ܽx >ax m%>˜ܽX >˜ܽX >ax m%>aX m%>ax m%>fx 2>aX m%>aX m%>fx 2>fX 2>fx 2> 3x E6>fX 2>癡X 0{56%X PB꧝X 456%X PBL3X F꧝X 45꧝X 45L3X F@<X 45L3X FD6%=X PB@<X 45@<X 45D6%=X PBh=X ,D6%=X PB=X 0{5h=X ,h=X ,=X 0{57=X X.=X 0{5Ɉ=X P 7=X X.7=X X.Ɉ=X P h=X TɈ=X P X>X 8h=X Th=X TX>X 8W>X Г̽X>X 8 ,>X ƽW>X Г̽W>X Г̽ ,>X ƽS)>X  ,>X ƽ<>X `uS)>X S)>X <>X `u3>X <>X `u^E>X 3>X 3>X ^E>X 96>X <^E>X ^E>X <96>X <96>X <^E>X <֠/>X @ C=^E>X <<>X u=֠/>X @ C=֠/>X @ C=<>X u=" !>X =<>X u= ,>X =" !>X =" !>X = ,>X = >X @= ,>X =X>X H> >X @= >X @=X>X H>=X >X>X H>Ɉ=X ` >=X >=X >Ɉ=X ` >w=X m%>Ɉ=X ` >=X 8{5>w=X m%>w=X m%>=X 8{5>=X 2>=X 8{5>D6%=X PB>=X 2>=X 2>D6%=X PB>R3X E6>D6%=X PB>R3X F>R3X E6>R3X E6>R3X F>fX 2>R3X F>6%X PB>fX 2>fX 2>6%X PB>aX m%>6%X PB>癡X 8{5>aX m%>aX m%>癡X 8{5>˜ܽX >癡X 8{5>X ` >˜ܽX >˜ܽX >X ` > X @=X ` >NX H> X @= X @=NX H> !X =NX H> ,X = !X = !X = ,X =̠/X @ C= ,X =<X u=̠/X @ C=̠/X @ C=<X u=/6X <<X u=TEX  3x F>R3X F> 3x F>6%x PB>R3X F>R3X F>6%x PB>6%X PB>6%x PB>癡x 8{5>6%X PB>6%X PB>癡x 8{5>癡X 8{5>癡x 8{5>x ` >癡X 8{5>癡X 8{5>x ` >X ` >x ` >Nx H>X ` >X ` >Nx H>NX H>Nx H> ,x =NX H>NX H> ,x = ,X = ,x =x 8Ɉ=X P Ɉ=X P X>x 8X>X 8X>x 8 ,>x ƽX>X 8X>X 8 ,>x ƽ ,>X ƽ ,>x ƽ<>x `u ,>X ƽ ,>X ƽ<>x `u<>X `u<>x `u^E>x <>X `u<>X `u^E>x ^E>X ^E>x ^E>x <^E>X ^E>X ^E>x <^E>X <^E>x <<>x u=^E>X <^E>X <<>x u=<>X u=<>x u= ,>x =<>X u=<>X u= ,>x = ,>X = ,>x =X>x H> ,>X = ,>X =X>x H>X>X H>X>x H>Ɉ=x ` >X>X H>X>X H>Ɉ=x ` >Ɉ=X ` >Ɉ=x ` >=x 8{5>Ɉ=X ` >Ɉ=X ` >=x 8{5>=X 8{5>=x 8{5>D6%=x PB>=X 8{5>=X 8{5>D6%=x PB>D6%=X PB>D6%=x PB> 3x F>D6%=X PB>癡x 8{5>Dx p8>x ` >Dx p8>Jx #>x ` >x ` >Jx #>Nx H>Jx #>%Kx 8S>Nx H>Nx H>%Kx 8S> ,x =%Kx 8S>%/x == ,x = ,x =%/x ==x 8`=x #/K>x (SX>x 8X>x 8/K>x (S ,>x ƽ/K>x (S"%/>x `=ʽ ,>x ƽ ,>x ƽ"%/>x `=ʽ<>x `u"%/>x `=ʽ}W@>x `y<>x `u<>x `u}W@>x `y^E>x }W@>x `y!I>x @^E>x ^E>x !I>x @^E>x x @!I>x <^E>x <^E>x x <<>x u=!I>x <}W@>x y=<>x u=<>x u=}W@>x y= ,>x =}W@>x y="%/>x == ,>x = ,>x ="%/>x ==X>x H>"%/>x ==/K>x 8S>X>x H>X>x H>/K>x 8S>Ɉ=x ` >/K>x 8S>`=x #>Ɉ=x ` >Ɉ=x ` >`=x #>=x 8{5>`=x #>Z=x h8>=x 8{5>=x 8{5>Z=x h8>D6%=x PB>Z=x h8>N1(=x E>D6%=x PB>D6%=x PB>N1(=x E> 3x F>N1(=x E> 3x x=J> 3x F> 3x F> 3x x=J>6%x PB> 3x x=J>"1(x E>6%x PB>6%x PB>"1(x E>癡x 8{5>"1(x E>Dx p8>癡x 8{5>#1( E> 3x x=J>#t3x=J> 3x x=J>N1(=x E>#t3x=J>#t3x=J>N1(=x E>M1(= E>N1(=x E>Z=x h8>M1(= E>M1(= E>Z=x h8>Z=h8>Z=x h8>`=x #>Z=h8>Z=h8>`=x #>`=#>`=x #>/K>x 8S>`=#>`=#>/K>x 8S>/K>8S>/K>x 8S>"%/>x ==/K>8S>/K>8S>"%/>x =="%/>=="%/>x ==}W@>x y="%/>=="%/>==}W@>x y=}W@>y=}W@>x y=!I>x <}W@>y=}W@>y=!I>x x x @!I>x @!I>@!I>x @}W@>x `y!I>@!I>@}W@>x `y}W@>`y}W@>x `y"%/>x `=ʽ}W@>`y}W@>`y"%/>x `=ʽ"%/>`=ʽ"%/>x `=ʽ/K>x (S"%/>`=ʽ"%/>`=ʽ/K>x (S/K>(S/K>x (S`=x #/K>(S/K>(S`=x #`=#`=x #Z=x `8`=#`=#Z=x `8Z=`8Z=x `8N1(=x EZ=`8Z=`8N1(=x EM1(=EN1(=x E 3x h=JM1(=EM1(=E 3x h=Jt3h=J 3x h=J"1(x Et3h=Jt3h=J"1(x E#1(E"1(x EDx X8#1(E#1(EDx X8DX8Dx X8Jx #DX8DX8Jx #J#Jx #%Kx (SJ#J#%Kx (S%K(S%Kx (S%/x `=ʽ%K(S%K(S%/x `=ʽ%/`=ʽ%/x `=ʽsW@x `y%/`=ʽ%/`=ʽsW@x `ysW@`ysW@x `y!Ix @sW@`ysW@`y!Ix @!I@!Ix @!Ix %/==%/==%Kx 8S>%K8S>%Kx 8S>Jx #>%K8S>%K8S>Jx #>J#>Jx #>Dx p8>J#>J#>Dx p8>Dp8>Dx p8>"1(x E>Dp8>Dp8>"1(x E>#1( E>"1(x E> 3x x=J>#1( E>Z=`8M1(=E?<45M1(=Et3h=J?<45?<45t3h=J망45t3h=J#1(E망45망45#1(Erh,#1(EDX8rh,rh,DX8!X.DX8J#!X.!X.J#RTJ#%K(SRTRT%K(SM̽%K(S%/`=ʽM̽M̽%/`=ʽS)%/`=ʽsW@`yS)S)sW@`y3sW@`y!I@33!I@/6 @= @=%K8S>˜ܽ>%K8S>J#>˜ܽ>˜ܽ>J#>am%>J#>Dp8>am%>am%>Dp8>g2>Dp8>#1( E>g2>g2>#1( E>"t3E6>#1( E>#t3x=J>"t3E6>"t3E6>#t3x=J>=2>#t3x=J>M1(= E>=2>=2>M1(= E>w=m%>M1(= E>Z=h8>w=m%>w=m%>Z=h8>=>Z=h8>`=#>=>=>`=#> >@=`=#>/K>8S> >@= >@=/K>8S>" !>=/K>8S>"%/>==" !>=" !>="%/>==֠/>@ C="%/>==}W@>y=֠/>@ C=֠/>@ C=}W@>y=96><}W@>y=!I><96><96><3>!I>@3>3>!I>@S)>!I>@}W@>`yS)>S)>}W@>`yW>Г̽}W@>`y"%/>`=ʽW>Г̽W>Г̽"%/>`=ʽh=T"%/>`=ʽ/K>(Sh=Th=T/K>(S7=X./K>(S`=#7=X.7=X.`=#h=,`=#Z=`8h=,h=,Z=`8?<45j/ݾ2>"t3E6>3/ݾE6>"t3E6>=2>3/ݾE6>3/ݾE6>=2>=/ݾ2>=2>w=m%>=/ݾ2>=/ݾ2>w=m%>u=/ݾm%>w=m%>=>u=/ݾm%>u=/ݾm%>=>ߜ=/ݾ>=> >@=ߜ=/ݾ>ߜ=/ݾ> >@= >/ݾ@= >@=" !>= >/ݾ@= >/ݾ@=" !>=! !>/ݾ=" !>=֠/>@ C=! !>/ݾ=! !>/ݾ=֠/>@ C=ՠ/>/ݾ@ C=֠/>@ C=96><ՠ/>/ݾ@ C=ՠ/>/ݾ@ C=96><86>/ݾ<96><3>86>/ݾ<86>/ݾ<3>3>/ݾ3>뼘S)>3>/ݾ3>/ݾ뼘S)>S)>/ݾS)>W>Г̽S)>/ݾS)>/ݾW>Г̽V>/ݾГ̽W>Г̽h=TV>/ݾГ̽V>/ݾГ̽h=Tf=/ݾTh=T7=X.f=/ݾTf=/ݾT7=X.5=/ݾX.7=X.h=,5=/ݾX.5=/ݾX.h=,h=/ݾ,h=,?<45h=/ݾ,h=/ݾ,?<458</ݾ45?<45망458</ݾ458</ݾ45망45򧝼/ݾ45망45rh,򧝼/ݾ45򧝼/ݾ45rh,uh/ݾ,rh,!X.uh/ݾ,uh/ݾ,!X.#/ݾX.!X.RT#/ݾX.#/ݾX.RTT/ݾTRTM̽T/ݾTT/ݾTM̽N/ݾ̽M̽S)N/ݾ̽N/ݾ̽S)S)/ݾS)3뼏S)/ݾS)/ݾ33/ݾ3/6<3/ݾ3/ݾ/6<06/ݾ /ݾ@= /ݾ@=˜ܽ>ܽ͜/ݾ>˜ܽ>am%>ܽ͜/ݾ>ܽ͜/ݾ>am%>c/ݾm%>am%>g2>c/ݾm%>c/ݾm%>g2>j/ݾ2>g2>"t3E6>j/ݾ2>DATA =DATA`4:..edge_verts 8T2.select_edge =TDATA6 8u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA =DATAhF< .corner_vert 8XT .corner_edge 8T) @ATDATA` 8L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA` 8L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA` @As t w$swEu$s$s uvuxu&v۾v<uuvGuuZvvtuCvxuuvvuvu u٦vBv u"v u u&"vn"vH u%v u)u~%v%vu)vuBu)v)vu.v5uYtV.v%.vxt3vStmtڨ3vv3vt9vnttq9v9vt@vtt@v3@v3tHvtt۪HvHvtPvttPvPvtYvttYvfYvt+cvttcvcvtGnvtܸtnvnvtVyvtܬtyv;yvtTхvtܟtvWԅvt<ґv+tܒtv[Ցvtӟv;t܄tvE֟vtӭvKtutwv׭v|utoԼvYutetOv׼v_etvhetUtvv4UtvvUtCt͵vvCtvCt2tsvv2tOv2tt v)vbtwt tww t$sU ^ ?U ^ ?^ U 4{K wf If K )uA im Rm A m7 Yt Zt 7 f, I{ b{ + ^ 7 i Ù U+ % o ʙ ⯣zL@  t Й үtCV y ֙ o9n 昒 } ڙ j/ Ϙ ޙ g% d 㙽 pc5 5粮b 䙚 噙 c 66 d %g ޙ Ϙ /j ڙ 昒 }9no ֙ yCVt Й ү  tL@z ʙ  % oU+ Ù 7 i^{ + + I{ bft 7 7 Yt Zmm A A im Ruf K )K wf I{^ U 4! ݞ%sk۞xs&%s۾%spDqϕqqaApGql딣qDqoIqYrqFq{KrXrIrNrWrLrvQsrjssPsTtޘtStLXm.=Ym.=,=ŧYmAYm,=Zm,='=ZmDZmm'=V]mL'="=R]mG]ma"=%`mޕ"==`mJ`mi=dmf==dm#Ndm=im=>=XimQim=om]=\9 DATAx`:2.select_poly JTDATAH JDATA$ < !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~ME =HME0.078BH-@`9:6: 8: :H< F:G2=t= ==A=$|DATAH-`] DATA6:0position <T2 .select_vert`%TDATA <w $ l $ -X' $ l-X'-Xl'-X'X -Xl'-Xl'X lX 콍lP lX P lX X P 콍lP P ½P@콍lP ½P@½lP@½P@&½lP@½lP@&l&&BGPk/l&l&BGPk/EGlPk/BGPk/=ü4EGlPk/EGlPk/=ü4=ül4=ü4/:^6=ül4=ül4/:^6Q/:l^6/:^62"<XI4Q/:l^6Q/:l^62"<XI4-"<==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATA@%DATAhH< .corner_vert .T .corner_edge .T).TDATA .L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA .L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA.s';k֛RB'⨛RμJ0}S}, ,£3ja o)adߞa-dF,9<1ƚ959[9244 922؝2-9292-zJ.kJ.k&B-z-&1\֠&lZ\\Zs[$1;$$ڳ$ )v$$ )>)ٍ)* )> )v*WQ/N[+*d..ʥ*v70׵(A+$(Agi$+ΞwVĪ eE eG#X)#?6X)XaOɒau)_}:L>A=$|DATAH-DATA;:0position BT2 .select_vert SRTDATA Bw6<ھȿK"3ھ \; =ھ1 >=ھ==ھ(>t!=ھ==ھ(> p>ھ >t!=ھ=t!=ھ= p>ھ >P=ھ0= p>ھ >k->ھ=P=ھ0=P=ھ0=k->ھ=D >ھ`XK=k->ھ== @>ھA=D >ھ`XK=D >ھ`XK== @>ھA=P>ھ><= @>ھA=:pJ>ھھ>ھ><:pJ>ھھ=b!ھ=齮ھ(>>ھ=齮ھ(>-ھ3<>>ھ=>ھ=-ھ3<>; ھ1 >-ھ3<>L$ھH>; ھ1 >; ھ1 >L$ھH>"3ھ0\>L$ھH>"3ھL>"3ھ0\>"3ھ0\>"3ھL>; =ھ1 >"3ھL>n$=ھH>; =ھ1 >; =ھ1 >n$=ھH>>=ھ=n$=ھH>?=ھ3<>>=ھ=>=ھ=?=ھ3<>=ھ(>:pJ>ھھ%P>ھ=L>ھ%#CF>ھUMP>ھ=P>ھ=#CF>ھUMD >ھ XK#CF>ھUM7>ھbD >ھ XKD >ھ XK7>ھbP=ھࢽ7>ھbp!>ھP=ھࢽP=ھࢽp!>ھt!=ھֽp!>ھf>ھdt!=ھֽt!=ھֽf>ھd>=ھf>ھd=ھ3>=ھ>=ھ=ھ3; =ھ1 =ھ3=u=ھXhC; =ھ1 ; =ھ1 =u=ھXhC6<ھȿK< ھ XKCFھUMPھ=CFھUMLھ%Pھ=Pھ=Lھ%Pھ><Lھ%2pJھ<2pJھ<< ھ`XK=2pJھ<5 @ھA=< ھ`XK=< ھ`XK=5 @ھA=>뽮ھ0=5 @ھA=c-ھ=>뽮ھ0=>뽮ھ0=c-ھ=b!ھ=c-ھ=pھ >b!ھ=b!ھ=pھ >齮ھ(>6<ھȿK"3ھL"3ھ \"3ھLھȿK"3ھ \"3ھ \ھȿK; ھ1 ھȿKھ>ھƽھ3b!ھֽƽھ3fھdb!ھֽb!ھֽfھd>뽮ھࢽfھdh!ھ>뽮ھࢽ>뽮ھࢽh!ھ< ھ XKh!ھ7ھb< ھ XK< ھ XK7ھbCFھUMt!="۾=="۾(>>="۾=="۾(>?="۾3<>>="۾=>="۾=?="۾3<>; ="۾1 >?="۾3<>n$="۾H>; ="۾1 >; ="۾1 >n$="۾H>Ȋ3"۾0\>n$="۾H>Ȋ3"۾L>Ȋ3"۾0\>Ȋ3"۾L>L$"۾H>Ȋ3"۾0\>Ȋ3"۾0\>L$"۾H>; "۾1 >L$"۾H>>"۾=; "۾1 >D >"۾ XK#CF>"۾UMP>"۾=#CF>"۾UML>"۾%P>"۾=P>"۾=L>"۾%P>"۾>"۾%:pJ>"۾"۾>"۾><:pJ>"۾"۾`XK=:pJ>"۾<= @>"۾A=D >"۾`XK=D >"۾`XK== @>"۾A=P="۾0== @>"۾A=k->"۾=P="۾0=P="۾0=k->"۾=t!="۾=k->"۾= p>"۾ >t!="۾=t!="۾= p>"۾ >="۾(>L$"۾H>-"۾3<>>"۾=-"۾3<>"۾(>>"۾=>"۾="۾(>b!"۾="۾(>p"۾ >b!"۾=b!"۾=p"۾ >>"۾0=p"۾ >c-"۾=>"۾0=>"۾0=c-"۾=< "۾`XK=c-"۾=5 @"۾A=< "۾`XK=< "۾`XK=5 @"۾A=P"۾><5 @"۾A=2pJ"۾<2pJ"۾="۾=u="۾XhC="۾3>="۾>="۾="۾3t!="۾ֽ="۾3f>"۾dt!="۾ֽt!="۾ֽf>"۾dP="۾ࢽf>"۾dp!>"۾P="۾ࢽP="۾ࢽp!>"۾D >"۾ XKp!>"۾7>"۾bD >"۾ XKD >"۾ XK7>"۾b#CF>"۾UM; "۾1 "۾ȿKȊ3"۾ \"۾ȿKȊ3"۾LȊ3"۾ \Ȋ3"۾ \Ȋ3"۾L6<"۾ȿK2pJ"۾<L"۾%P"۾=L"۾%CF"۾UMP"۾=P"۾=CF"۾UM< "۾ XKCF"۾UM7"۾b< "۾ XK< "۾ XK7"۾b>"۾ࢽ7"۾bh!"۾>"۾ࢽ>"۾ࢽh!"۾b!"۾ֽh!"۾f"۾db!"۾ֽb!"۾ֽf"۾d>"۾f"۾dƽ"۾3>"۾>"۾ƽ"۾3; "۾1 ƽ"۾3c-ھ=c-ھ=p"۾ >pھ >p"۾ >"۾(>pھ >pھ >"۾(>齮ھ(>"۾(>-"۾3<>齮ھ(>齮ھ(>-"۾3<>-ھ3<>-"۾3<>L$"۾H>-ھ3<>-ھ3<>L$"۾H>L$ھH>L$"۾H>Ȋ3"۾L>L$ھH>L$ھH>Ȋ3"۾L>"3ھL>Ȋ3"۾L>n$="۾H>"3ھL>"3ھL>n$="۾H>n$=ھH>n$="۾H>?="۾3<>n$=ھH>n$=ھH>?="۾3<>?=ھ3<>?="۾3<>="۾(>?=ھ3<>?=ھ3<>="۾(>=ھ(>="۾(> p>"۾ >=ھ(>=ھ(> p>"۾ > p>ھ > p>"۾ >k->"۾= p>ھ > p>ھ >k->"۾=k->ھ=k->"۾== @>"۾A=k->ھ=k->ھ== @>"۾A== @>ھA== @>"۾A=:pJ>"۾<= @>ھA== @>ھA=:pJ>"۾<:pJ>ھ<:pJ>"۾"۾%:pJ>ھ<:pJ>ھ"۾%L>ھ%L>"۾%#CF>"۾UML>ھ%L>ھ%#CF>"۾UM#CF>ھUM#CF>"۾UM7>"۾b#CF>ھUM#CF>ھUM7>"۾b7>ھb7>"۾bp!>"۾7>ھb7>ھbp!>"۾p!>ھp!>"۾f>"۾dp!>ھp!>ھf>"۾df>ھdf>"۾d="۾3f>ھdf>ھd="۾3=ھ3="۾3=u="۾XhC=ھ3=ھ3=u="۾XhC=u=ھXhC=u="۾XhC6<"۾ȿK=u=ھXhC=u=ھXhC6<"۾ȿK6<ھȿK6<"۾ȿK"3ھL6<ھȿK; =ھ1 >Ȋ3"۾0\>"3ھ0\>Ȋ3"۾0\>; "۾1 >"3ھ0\>"3ھ0\>; "۾1 >; ھ1 >; "۾1 >>"۾=; ھ1 >; ھ1 >>"۾=>ھ=>"۾=b!"۾=>ھ=>ھ=b!"۾=b!ھ=b!"۾=>"۾0=b!ھ=b!ھ=>"۾0=>뽮ھ0=>"۾0=< "۾`XK=>뽮ھ0=>뽮ھ0=< "۾`XK=< ھ`XK=< "۾`XK=P"۾><< ھ`XK=< ھ`XK=P"۾>"۾ࢽ< ھ XK< ھ XK>"۾ࢽ>뽮ھࢽ>"۾ࢽb!"۾ֽ>뽮ھࢽ>뽮ھࢽb!"۾ֽb!ھֽb!"۾ֽ>"۾b!ھֽb!ھֽ>"۾>ھ>"۾; "۾1 >ھ>ھ; "۾1 ; ھ1 ; "۾1 Ȋ3"۾ \; ھ1 ; ھ1 Ȋ3"۾ \"3ھ \Ȋ3"۾ \; ="۾1 "3ھ \"3ھ \; ="۾1 ; =ھ1 ; ="۾1 >="۾; =ھ1 ; =ھ1 >="۾>=ھ>="۾t!="۾ֽ>=ھ>=ھt!="۾ֽt!=ھֽt!="۾ֽP="۾ࢽt!=ھֽt!=ھֽP="۾ࢽP=ھࢽP="۾ࢽD >"۾ XKP=ھࢽP=ھࢽD >"۾ XKD >ھ XKD >"۾ XKP>"۾=D >ھ XKD >ھ XKP>"۾=P>ھ=P>"۾=P>"۾>ھ=P>ھ=P>"۾>ھ>"۾>"۾`XK=P>ھ>ھ>"۾`XK=D >ھ`XK=D >"۾`XK=P="۾0=D >ھ`XK=D >ھ`XK=P="۾0=P=ھ0=P="۾0=t!="۾=P=ھ0=P=ھ0=t!="۾=t!=ھ=t!="۾=>="۾=t!=ھ=t!=ھ=>="۾=>=ھ=>="۾=; ="۾1 >>=ھ=>=ھ=; ="۾1 >; =ھ1 >; ="۾1 >Ȋ3"۾0\>; =ھ1 >DATA SRDATA =:..edge_verts RXT2.select_edge VRTDATA Ru    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~DATA VRDATAh`J< .corner_vert 0ST .corner_edge ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA <@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|DATA HSs>̣!0Y†~N^†ĈG2ňŌQ1Ȍ4MN8†k|Æ8lĉl^%ƉLƍg<ȍo k   ê޼9ntפS05e†ϥÈ ňܦkŋ;⭋Nj{î%Qվ{J櫅Ki ÇćnĊ ƊbƎ<|i.Ɏ J $!|᪁|†'|| fÇܬćŊ#.NJƏ\ɏ-vH*N8†k|Æ8ll^%q666o{J櫅Ki ÇćnĊ ƊbƎ<}i.Ɏ J $6  k!0Y†~N^†ĈG2ňŌQ1Ȍ4M܁|†'|| eÇܬćŊ#.NJƏ\ɏ-vH*̣>پ!|  ê޼9nsפS05e†ϥÈ ňܦkŋ;㭋Nj{î%Qվ|g{ê{{ê{ӈ|g{uD~|zB~N{S||M{&}5{'%}N!}!}N%}'}5*}5#}N"}"}N#}*}5(}5!}N%}$}N!}-}5&}5 }N(}(}N }|'%}5 }N{{S }%}5%}5{S } }N{&}5{'&}N!}!}N&}'}5+}5#}N"}"}N#})}5(}5!}N$}$}N!},}5&}5!}N'}'}N }{'%}5 }N{{S }%}5%}5{S } }N{%}5{'}K }!}N}'}5}<{S"}"}N{)}5{'"}N$}#}N"}+}5'}5 }N&}&}N!}{'&}5 }N{{S }%}5%}5{S } }N{%}5|'&}N } }N'}'}5,}5$}N!}!}N$}(}5)}5"}N#}#}N"}+}5'}5!}N&}&}N!}{'&}5 }N{{S }%}5%}5{S } }N{%}5|'(}N } }N(}&}5,}5%}N!}!}N$}(}5)}5"}N#}#}N"}*}5'}5!}N%}%}N!}{'&}5Յ|M{{S|B~NՈ|z{uD~u}A*~}x.~o{9y}y}A{}x{*~E{}{}A)~}x.~o}}A|}}}A|}.~oՃ}x{}A)~)~E{}z}yՂ}xy}At}t}Ay}~}x}xv}Ax}x}Av}}x|}y*~E{}{}A*~}x.~o|}A|}|}A|}.~oՃ}x|}A)~)~E|}y}yՂ}xz}As}s}Az}~}xՀ}xv}Aw}w}Aw}}x}}x)~Ez}z}A*~}x.~oՁ}A|}|}A}}xՇ}x|}A}}A|}.~oՂ}xz}A)~*~Ez}}}xՀ}xw}Av}w}Aw}}x~}xs}Az}z}As}}xy}y)~E|}|}A)~}x.~o|}A|}|}A|}.~oՂ}x{}A*~*~E{}|}yՁ}xx}Av}v}Ax}}x~}xt}Ay}y}At}}xz}y)~E{}{}A)~}x.~o|}A|}|}A|}.~oՃ}x{}A*~)~E{}{}yՁ}x*~Eu}DATAx`:2.select_poly`>:TDATA`>:DATA T !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|ME =HME0.080DH-FFF B@: B: : L< >*6_>z=N-D>A=$|DATAH- <DATA@:0position DT2 .select_vert p+XTDATAH DwF]LlLL?ULp~LlL(ILl%LُL(IL(I%LُϾL-%LُLtϾL-LtL⏾ϾL-ϾL-L⏾L?L⏾uLL?uL&CLL?&CLzLL?L?zL]LlzL L4]Ll L4L]Ll]LlLNL"LL+NL"NL"L+TL|LxALL(IL+ #LTL| #LULp~TL|TL|ULp~IL ULp~L(IIL IL L(ILԛL(IALLԛ)JLL>LZLWL\඾>LZL3LƯWL\඾LƯHLWL\඾WL\඾HL>LZHLp{L>LZ>LZp{LDL)L|KLTԟLKLTԟvhL`LLvhL`LtvhL`CLoLtLtCLoDLCLo8LhlDLDL8Lhl>LZLKLTԟL?KLTԟ)L|L?L?)L|ାL0YA)L|LܟାL0YAାL0YALܟHؤL(]LܟiL8*HؤL(]iL8*L@HؤL(]HؤL(]L@WL\඾L@q1LίWL\඾WL\඾q1LίL3ILdؾJL|پ1JL[ྤL(I_LLٛL[KL׾=KL־;NLؔվ)JLLxLLxL(ILLL(I LL(IٛL L;NLؔվ=KL־ LL̢Ǿ L LlL LlLp#LLLp#mL@JL|پJL9پ1JL[JL9پJLؾ1JL[1JL[JLؾ;NLؔվJLؾ4@KL\ؾ;NLؔվ;NLؔվ4@KL\ؾ[KL׾LHlL艟 LL̢ǾlL艟L LL̢Ǿ LL̢ǾLL(IL %LD圾L(IL(I %LD圾_LLILdؾhL vILT׾hL ,LP7vILT׾=KL־JL־ LL̢ǾJL־OJLվ LL̢Ǿ LL̢ǾOJLվLHOJLվJL\־LHLHJL\־,LP7JL\־;ILl־,LP7,LP7;ILl־vILT׾7FL`?WL\඾1JL[ྣWL\඾L1JL[1JL[LILdؾLmL@ILdؾILdؾmL@hL Lj<̢Ǿ LL̢Ǿj<(I LL̢ǾL(Ij<(Ij<(IL(IϾj<-L(IϾL-Ͼj<-Wj<\඾Hj<j<Ưj<Ưj<3Wj<\඾j<3q1j<ίWj<\඾Wj<\඾q1j<ίHؤj<(]q1j<ίj<@Hؤj<(]j<)Jj<Wj<\඾)Jj<>j<ZWj<\඾Kjj<Zp{j<p{j<>j<ZDj<>j<Z8j&L=z6EL=>`EL=N&L=z"֢AN e"֢?, e%L=&~"֢?, e6EQ,>%L=&~%L=&~6EQ,>6EL=>`EL=N6EL=>`EQ,N6EL=>6EQ,>`EQ,N`EQ,N6EQ,>Ex946EQ,>GYEjj<Z)Jj<jj<Z8Lhl8Lhl>j<Z>LZ>j<Z)JL>LZ6EQ,>"֢?, ej<d5ףhHzaHؤL(]WL\඾6EQ,>j<dGYEjP=P۽[d{h=۽[d{h=۽[d{>P=P۽[d{4=Zֽ[d{>P=P۽[d{^C=>ս[d{4=Zֽ[d{4=Zֽ[d{^C=>ս[d{ij=0ѽ[d{^C=>ս[d{=Ͻ[d{ij=0ѽ[d{ij=0ѽ[d{=Ͻ[d{=̽[d{=Ͻ[d{=ɽ[d{=̽[d{=̽[d{=ɽ[d{`=iɽ[d{=ɽ[d{-_=`Ž[d{`=iɽ[d{`=iɽ[d{-_=`Ž[d{ܖ= Sǽ[d{-_=`Ž[d{T=0[ý[d{ܖ= Sǽ[d{ܖ= Sǽ[d{T=0[ý[d{)=@ƽ[d{T=0[ý[d{6=½[d{)=@ƽ[d{)=@ƽ[d{6=½[d{G=tǽ[d{6=½[d{}ӭ=ý[d{G=tǽ[d{G=tǽ[d{}ӭ=ý[d{v=ɽ[d{}ӭ=ý[d{T=$ƽ[d{v=ɽ[d{v=ɽ[d{T=$ƽ[d{HK="ͽ[d{T=$ƽ[d{[9=PEʽ[d{HK="ͽ[d{HK="ͽ[d{[9=PEʽ[d{=Pѽ[d{[9=PEʽ[d{:=Ͻ[d{=Pѽ[d{=Pѽ[d{:=Ͻ[d{#=Pֽ[d{:=Ͻ[d{=ս[d{#=Pֽ[d{#=Pֽ[d{=ս[d{ j=Piܽ[d{=ս[d{=uܽ[d{ j=Piܽ[d{ j=Piܽ[d{=uܽ[d{ҝ=[d{=uܽ[d{m=[d{ҝ=[d{ҝ=[d{m=[d{ah= [d{m=[d{H=7[d{ah= [d{ah= [d{H=7[d{B=[d{H=7[d{̸=x[d{B=[d{B=[d{̸=x[d{q=@[d{̸=x[d{s=pz[d{q=@[d{q=@[d{s=pz[d{;=[d{s=pz[d{w?=[d{;=[d{;=[d{w?=[d{=[d{w?=[d{Ɯ=[d{=[d{=[d{Ɯ=[d{=P[d{Ɯ=[d{N=[d{=P[d{=P[d{N=[d{U=[d{N=[d{wڙ=-[d{U=0ݤj=Piܽ0ݤ=uܽ0ݤ0=Pֽ0ݤ=uܽ0ݤ$=ս0ݤ0=Pֽ0ݤ0=Pֽ0ݤ$=ս0ݤ˨=Pѽ0ݤ$=ս0ݤ:=Ͻ0ݤ˨=Pѽ0ݤ˨=Pѽ0ݤ:=Ͻ0ݤUK="ͽ0ݤ:=Ͻ0ݤh9=PEʽ0ݤUK="ͽ0ݤUK="ͽ0ݤh9=PEʽ0ݤ=ɽ0ݤh9=PEʽ0ݤa=$ƽ0ݤ=ɽ0ݤ=ɽ0ݤa=$ƽ0ݤT=tǽ0ݤa=$ƽ0ݤӭ=ý0ݤT=tǽ0ݤT=tǽ0ݤӭ=ý0ݤ)=@ƽ0ݤӭ=ý0ݤ6=½0ݤ)=@ƽ0ݤ)=@ƽ0ݤ6=½0ݤ閡= Sǽ0ݤ6=½0ݤa=0[ý0ݤ閡= Sǽ0ݤ閡= Sǽ0ݤa=0[ý0ݤ`=iɽ0ݤa=0[ý0ݤ:_=`Ž0ݤ`=iɽ0ݤ`=iɽ0ݤ:_=`Ž0ݤ=̽0ݤ:_=`Ž0ݤ=ɽ0ݤ=̽0ݤ=̽0ݤ=ɽ0ݤvj=0ѽ0ݤ=ɽ0ݤ=Ͻ0ݤvj=0ѽ0ݤvj=0ѽ0ݤ=Ͻ0ݤ5=Zֽ0ݤ=Ͻ0ݤkC=>ս0ݤ5=Zֽ0ݤ5=Zֽ0ݤkC=>ս0ݤh=۽0ݤkC=>ս0ݤKP=P۽0ݤh=۽0ݤh=۽0ݤKP=P۽0ݤ=p{0ݤKP=P۽0ݤ=0ݤ=p{0ݤ=p{0ݤ=0ݤ*=0ݤ=0ݤ= 0ݤ*=0ݤ*=0ݤ= 0ݤ=/0ݤ= 0ݤ}= 0ݤ=/0ݤ=/0ݤ}= 0ݤb=0ݤ}= 0ݤڙ=-0ݤb=0ݤb=0ݤڙ=-0ݤ=P0ݤڙ=-0ݤ[=0ݤ=P0ݤ=P0ݤ[=0ݤ=0ݤ[=0ݤӜ=0ݤ=0ݤ=0ݤӜ=0ݤ;=0ݤӜ=0ݤ?=0ݤ;=0ݤ;=0ݤ?=0ݤr=@0ݤ?=0ݤs=pz0ݤr=@0ݤr=@0ݤs=pz0ݤO=0ݤs=pz0ݤ ͸=x0ݤO=0ݤO=0ݤ ͸=x0ݤnh= 0ݤ ͸=x0ݤU=70ݤnh= 0ݤnh= 0ݤU=70ݤߝ=0ݤU=70ݤz=0ݤߝ=0ݤߝ=0ݤz=0ݤj=Piܽ0ݤz=0ݤ=uܽ0ݤj=Piܽ =/սZh=иԽ0ݤ:=Ͻ諾=ս諾=ս0ݤ$=ս諾=ս諾D=0ս0ݤ$=ս0ݤ$=ս諾D=0ս0ݤ:=Ͻ諾D=0ս뫾%=Dս0ݤ:=Ͻ0ݤ:=Ͻ뫾%=Dս =/սZh=иԽ&^=Խ0ݤ:=Ͻ&^=ԽW=ЂԽ0ݤ:=Ͻ0ݤ:=ϽW=ЂԽ4=Խ4=Խ2=Խ0ݤ:=Ͻ2=Խ7%$=ӽ0ݤ:=Ͻ0ݤ:=Ͻ7%$=ӽ9=ӽ9=ӽ)F =Йӽ0ݤ:=Ͻ)F =ЙӽwU=Pӽ0ݤ:=Ͻ0ݤ:=ϽwU=Pӽa =xӽa =xӽ-{2=cӽ0ݤ:=Ͻ-{2=cӽD#=`ӽ0ݤ:=Ͻ=uӽ=0ӽ[d{=ս&=p սU)=@/ս+=Gս=0ӽܬ=ӽ[d{=սܬ=ӽ}䬾=ӽ[d{=ս[d{=ս}䬾=ӽ%=ӽ4^=`Խ&=p ս&&X=PԽ&=p ս[d{=ս&&X=PԽ&&X=PԽ[d{=ս G=0QԽ[d{=ս%=ӽ G=0QԽ G=0QԽ%=ӽMV5=Խמּ^#= ׽y⬾)=0׽[d{=uܽ`)޿=wֽ%8=Pֽ[d{=uܽ&=p ս+=Gս[d{=ս+=Gս/$=ս[d{=ս[d{=ս/$=ս[d{=uܽ/$=ս*[ۿ=gֽ[d{=uܽ[d{=uܽ*[ۿ=gֽ`)޿=wֽO#=׽מּ^#= ׽o =a׽מּ^#= ׽[d{=uܽo =a׽o =a׽[d{=uܽ=-׽[d{=uܽ%8=Pֽ=-׽=-׽%8=Pֽx= ׽6=?ؽ 7=EؽJ4=4ؽ 7=Eؽ[d{=uܽJ4=4ؽJ4=4ؽ[d{=uܽܬZ+=׽[d{=uܽy⬾)=0׽ܬZ+=׽0ݤ=uܽ 7=Eؽ>`9=Uؽ>`9=Uؽ09=Uؽ0ݤ=uܽ09=Uؽx8=Qؽ0ݤ=uܽ0ݤ=uܽx8=Qؽaw5=;ؽaw5=;ؽSn3=.ؽ0ݤ=uܽSn3=.ؽDo/=`ؽ0ݤ=uܽ0ݤ=uܽDo/=`ؽ9+=׽9+=׽j#!=׽0ݤ=uܽj#!=׽l=׽0ݤ=uܽl=׽p = ׽0ݤ=uܽp = ׽2=׽0ݤ=uܽ0ݤ=uܽ2=׽o=`ֽo=`ֽ޿=vֽ0ݤ=uܽ޿=vֽ뫾׿=Xֽ0ݤ=uܽ0ݤ=uܽ뫾׿=Xֽ0ݤ$=ս뫾׿=Xֽk諾ȿ=ֽ0ݤ$=ս0ݤ$=սk諾ȿ=ֽ諾=ս 7=Eؽ0ݤ=uܽ[d{=uܽ0ݤ=uܽ0ݤz=[d{=uܽ[d{=uܽ0ݤz=[d{m=0ݤz=0ݤU=7[d{m=[d{m=0ݤU=7[d{H=70ݤU=70ݤ ͸=x[d{H=7[d{H=70ݤ ͸=x[d{̸=x0ݤ ͸=x0ݤs=pz[d{̸=x[d{̸=x0ݤs=pz[d{s=pz0ݤs=pz0ݤ?=[d{s=pz[d{s=pz0ݤ?=[d{w?=0ݤ?=0ݤӜ=[d{w?=[d{w?=0ݤӜ=[d{Ɯ=0ݤӜ=0ݤ[=[d{Ɯ=[d{Ɯ=0ݤ[=[d{N=0ݤ[=0ݤڙ=-[d{N=[d{N=0ݤڙ=-[d{wڙ=-0ݤڙ=-0ݤ}= [d{wڙ=-[d{wڙ=-0ݤ}= [d{p= 0ݤ}= 0ݤ= [d{p= [d{p= 0ݤ= [d{㗐= 0ݤ= 0ݤ=[d{㗐= [d{㗐= 0ݤ=[d{=0ݤ=0ݤKP=P۽[d{=[d{=0ݤKP=P۽[d{>P=P۽0ݤKP=P۽0ݤkC=>ս[d{>P=P۽[d{>P=P۽0ݤkC=>ս[d{^C=>ս0ݤkC=>ս0ݤ=Ͻ[d{^C=>ս[d{^C=>ս0ݤ=Ͻ[d{=Ͻ0ݤ=Ͻ0ݤ=ɽ[d{=Ͻ[d{=Ͻ0ݤ=ɽ[d{=ɽ0ݤ=ɽ0ݤ:_=`Ž[d{=ɽ[d{=ɽ0ݤ:_=`Ž[d{-_=`Ž0ݤ:_=`Ž0ݤa=0[ý[d{-_=`Ž[d{-_=`Ž0ݤa=0[ý[d{T=0[ý0ݤa=0[ý0ݤ6=½[d{T=0[ý[d{T=0[ý0ݤ6=½[d{6=½0ݤ6=½0ݤӭ=ý[d{6=½[d{6=½0ݤӭ=ý[d{}ӭ=ý0ݤӭ=ý0ݤa=$ƽ[d{}ӭ=ý[d{}ӭ=ý0ݤa=$ƽ[d{T=$ƽ0ݤa=$ƽ0ݤh9=PEʽ[d{T=$ƽ[d{T=$ƽ0ݤh9=PEʽ[d{[9=PEʽ0ݤh9=PEʽ0ݤ:=Ͻ[d{[9=PEʽ[d{[9=PEʽ0ݤ:=Ͻ[d{:=Ͻ0ݤ:=ϽD#=`ӽ[d{:=Ͻ[d{:=ϽD#=`ӽ[d{=սD#=`ӽ=qӽ[d{=ս[d{=ս=qӽ=uӽ諾=ֽt諾л=׽0ݤ0=Pֽ =z׽=׽0ݤj=Piܽ0ݤ0=Pֽt諾л=׽0ݤj=Piܽt諾л=׽+뫾߻=]׽0ݤj=Piܽ0ݤj=Piܽ+뫾߻=]׽ =z׽=׽=ؽ0ݤj=Piܽ=ؽ =0%ؽ0ݤj=Piܽ0ݤj=Piܽ =0%ؽs= ؽs= ؽ#=@ؽ0ݤj=Piܽ#=@ؽ#&=ؽ0ݤj=Piܽ0ݤj=Piܽ#&=ؽ9.=0ٽ9.=0ٽ\D2=ٽ0ݤj=Piܽ\D2=ٽGS%6=3ٽ0ݤj=Piܽ0ݤj=PiܽGS%6=3ٽa7=@ٽa7=@ٽx:=Vٽ0ݤj=Piܽx:=Vٽfu;=Zٽ0ݤj=Piܽ0ݤj=Piܽfu;=Zٽ[d{#=Pֽfu;=Zٽ>Z;=0Zٽ[d{#=Pֽ>Z;=0ZٽH9=Jٽ[d{#=PֽH9=Jٽ`8=Dٽ[d{#=Pֽ[d{#=Pֽ`8=Dٽ6=8ٽ%=׽_)=0{׽*=@k׽6=8ٽܬ.=Pٽ[d{#=Pֽܬ.=Pٽ⬾J-=ؽ[d{#=Pֽ[d{#=Pֽ⬾J-=ؽמּ'=PؽyM=ؽ%=׽ =p1ؽ%=׽[d{#=Pֽ =p1ؽ =p1ؽ[d{#=Pֽ u=0eؽ[d{#=Pֽמּ'=Pؽ u=0eؽ u=0eؽמּ'=PؽO&=ؽW)=2ֽh&=0 ֽ[d{=Pѽ%=׽*=@k׽[d{#=Pֽ*=@k׽/0=Pֽ[d{#=Pֽ[d{#=Pֽ/0=Pֽ[d{=Pѽ/0=Pֽ*=Hֽ[d{=Pѽ[d{=Pѽ*=HֽW)=2ֽ] L=SսM\:=`ս(=Խ] L=Sս[d{=Pѽ]=ս[d{=Pѽh&=0 ֽ]=ս]=սh&=0 ֽd=pսܬ(=@Խ#/=`Խ[d{=Pѽ] L=Sս(=Խ[d{=Pѽ(=Խ㬾=PԽ[d{=Pѽ[d{=Pѽ㬾=PԽܬ(=@ԽD= eԽ[d{=Pѽ{=vԽ[d{=Pѽ#/=`Խ{=vԽ{=vԽ#/=`ԽW=zԽTg=Խ0ݤ˨=Pѽa=}Խ0ݤ˨=PѽzJ=@hԽa=}ԽTg=ԽEM =Խ0ݤ˨=PѽEM =Խ9e= Խ0ݤ˨=Pѽ0ݤ˨=Pѽ9e= Խ$)=Խ$)=Խ7=ս0ݤ˨=Pѽ7=ս9=ս0ݤ˨=Pѽ0ݤ˨=Pѽ9=սX^=pսX^=pսd=ս0ݤ˨=Pѽd=ս}o= ս0ݤ˨=Pѽ0ݤ˨=Pѽ}o= ս=3ֽ=3ֽ뫾N=Iֽ0ݤ˨=Pѽ뫾N=Iֽ諾=Pֽ0ݤ˨=Pѽ0ݤ˨=Pѽ諾=Pֽ0ݤ0=Pֽ諾=Pֽ諾=ֽ0ݤ0=Pֽ0ݤ0=Pֽ諾=ֽ諾=ֽ[d{#=Pֽ[d{ j=Piܽ0ݤj=Piܽ[d{ j=Piܽ[d{ҝ=0ݤj=Piܽ0ݤj=Piܽ[d{ҝ=0ݤߝ=[d{ҝ=[d{ah= 0ݤߝ=0ݤߝ=[d{ah= 0ݤnh= [d{ah= [d{B=0ݤnh= 0ݤnh= [d{B=0ݤO=[d{B=[d{q=@0ݤO=0ݤO=[d{q=@0ݤr=@[d{q=@[d{;=0ݤr=@0ݤr=@[d{;=0ݤ;=[d{;=[d{=0ݤ;=0ݤ;=[d{=0ݤ=[d{=[d{=P0ݤ=0ݤ=[d{=P0ݤ=P[d{=P[d{U=0ݤ=P0ݤ=P[d{U=0ݤb=[d{U=[d{=/0ݤb=0ݤb=[d{=/0ݤ=/[d{=/[d{ *=0ݤ=/0ݤ=/[d{ *=0ݤ*=[d{ *=[d{=p{0ݤ*=0ݤ*=[d{=p{0ݤ=p{[d{=p{[d{h=۽0ݤ=p{0ݤ=p{[d{h=۽0ݤh=۽[d{h=۽[d{4=Zֽ0ݤh=۽0ݤh=۽[d{4=Zֽ0ݤ5=Zֽ[d{4=Zֽ[d{ij=0ѽ0ݤ5=Zֽ0ݤ5=Zֽ[d{ij=0ѽ0ݤvj=0ѽ[d{ij=0ѽ[d{=̽0ݤvj=0ѽ0ݤvj=0ѽ[d{=̽0ݤ=̽[d{=̽[d{`=iɽ0ݤ=̽0ݤ=̽[d{`=iɽ0ݤ`=iɽ[d{`=iɽ[d{ܖ= Sǽ0ݤ`=iɽ0ݤ`=iɽ[d{ܖ= Sǽ0ݤ閡= Sǽ[d{ܖ= Sǽ[d{)=@ƽ0ݤ閡= Sǽ0ݤ閡= Sǽ[d{)=@ƽ0ݤ)=@ƽ[d{)=@ƽ[d{G=tǽ0ݤ)=@ƽ0ݤ)=@ƽ[d{G=tǽ0ݤT=tǽ[d{G=tǽ[d{v=ɽ0ݤT=tǽ0ݤT=tǽ[d{v=ɽ0ݤ=ɽ[d{v=ɽ[d{HK="ͽ0ݤ=ɽ0ݤ=ɽ[d{HK="ͽ0ݤUK="ͽ[d{HK="ͽ[d{=Pѽ0ݤUK="ͽ0ݤUK="ͽ[d{=Pѽ0ݤ˨=Pѽ[d{=PѽD= eԽ0ݤ˨=Pѽ0ݤ˨=PѽD= eԽzJ=@hԽO#=׽o =a׽ =p1ؽo =a׽=-׽ =p1ؽ =p1ؽ=-׽yM=ؽ=-׽x= ׽yM=ؽyM=ؽx= ׽%=׽x= ׽%8=Pֽ%=׽%=׽%8=Pֽ_)=0{׽%8=Pֽ`)޿=wֽ_)=0{׽_)=0{׽`)޿=wֽ*=@k׽`)޿=wֽ*[ۿ=gֽ*=@k׽*=@k׽*[ۿ=gֽ/0=Pֽ =p1ؽ u=0eؽO#=׽ u=0eؽO&=ؽO#=׽O#=׽O&=ؽמּ^#= ׽O&=ؽy⬾)=0׽מּ^#= ׽O&=ؽמּ'=Pؽy⬾)=0׽מּ'=Pؽ⬾J-=ؽy⬾)=0׽y⬾)=0׽⬾J-=ؽܬZ+=׽⬾J-=ؽܬ.=PٽܬZ+=׽ܬZ+=׽ܬ.=PٽJ4=4ؽܬ.=Pٽ6=8ٽJ4=4ؽJ4=4ؽ6=8ٽ6=?ؽ6=8ٽ`8=Dٽ6=?ؽ6=?ؽ`8=Dٽ 7=Eؽ`8=DٽH9=Jٽ 7=Eؽ 7=EؽH9=Jٽ>`9=UؽH9=Jٽ>Z;=0Zٽ>`9=Uؽ>`9=Uؽ>Z;=0Zٽ09=Uؽ>Z;=0Zٽfu;=Zٽ09=Uؽ09=Uؽfu;=Zٽx8=Qؽfu;=Zٽx:=Vٽx8=Qؽx8=Qؽx:=Vٽaw5=;ؽx:=Vٽa7=@ٽaw5=;ؽaw5=;ؽa7=@ٽSn3=.ؽa7=@ٽGS%6=3ٽSn3=.ؽGS%6=3ٽ\D2=ٽSn3=.ؽSn3=.ؽ\D2=ٽDo/=`ؽ\D2=ٽ9.=0ٽDo/=`ؽDo/=`ؽ9.=0ٽ9+=׽9.=0ٽ#&=ؽ9+=׽9+=׽#&=ؽj#!=׽#&=ؽ#=@ؽj#!=׽j#!=׽#=@ؽl=׽#=@ؽs= ؽl=׽l=׽s= ؽj=׽j=׽s= ؽp = ׽s= ؽ =0%ؽp = ׽p = ׽ =0%ؽ2=׽ =0%ؽ=ؽ2=׽=ؽ=׽2=׽2=׽=׽o=`ֽ=׽ =z׽o=`ֽo=`ֽ =z׽޿=vֽ =z׽+뫾߻=]׽޿=vֽ޿=vֽ+뫾߻=]׽뫾׿=Xֽ+뫾߻=]׽t諾л=׽뫾׿=Xֽ諾D=0ս諾=ս諾=ֽ諾=ս諾=ս諾=ֽ諾=ֽ諾=սt諾л=׽諾=սk諾ȿ=ֽt諾л=׽t諾л=׽k諾ȿ=ֽ뫾׿=Xֽ諾=ֽ諾=ֽ諾D=0ս諾=ֽ諾=Pֽ諾D=0ս諾D=0ս諾=Pֽ뫾%=Dս諾=Pֽ뫾N=Iֽ뫾%=Dս뫾%=Dս뫾N=Iֽ =/ս뫾N=Iֽ=3ֽ =/ս =/ս=3ֽZh=иԽ=3ֽ}o= սZh=иԽZh=иԽ}o= ս&^=Խ}o= սd=ս&^=Խ&^=Խd=սW=ЂԽd=սX^=pսW=ЂԽW=ЂԽX^=pս4=ԽX^=pս9=ս4=Խ4=Խ9=ս2=Խ9=ս7=ս2=Խ2=Խ7=ս7%$=ӽ7=ս$)=Խ7%$=ӽ7%$=ӽ$)=Խ9=ӽ$)=Խ9e= Խ9=ӽ9=ӽ9e= Խ)F =Йӽ9e= ԽEM =Խ)F =Йӽ)F =ЙӽEM =ԽwU=PӽEM =ԽTg=ԽwU=PӽwU=PӽTg=Խa =xӽTg=Խa=}Խa =xӽa =xӽa=}Խ-{2=cӽa=}ԽzJ=@hԽ-{2=cӽzJ=@hԽ5 =eԽ-{2=cӽ-{2=cӽ5 =eԽD#=`ӽ5 =eԽD= eԽD#=`ӽD#=`ӽD= eԽ=`ӽD= eԽ{=vԽ=`ӽ=`ӽ{=vԽ=qӽ{=vԽW=zԽ=qӽ=qӽW=zԽ=uӽ=uӽW=zԽ=0ӽW=zԽ#/=`Խ=0ӽ=0ӽ#/=`Խܬ=ӽ#/=`Խܬ(=@Խܬ=ӽܬ(=@Խ㬾=PԽܬ=ӽܬ=ӽ㬾=PԽ}䬾=ӽ㬾=PԽ(=Խ}䬾=ӽ}䬾=ӽ(=Խ%=ӽ(=ԽM\:=`ս%=ӽ%=ӽM\:=`սMV5=ԽM\:=`ս] L=SսMV5=ԽMV5=Խ] L=Sս G=0QԽ] L=Sս]=ս G=0QԽ G=0QԽ]=ս&&X=PԽ]=սd=pս&&X=PԽ&&X=PԽd=pս4^=`Խ4^=`Խd=pս&=p սd=pսh&=0 ֽ&=p ս&=p սh&=0 ֽU)=@/սh&=0 ֽW)=2ֽU)=@/սW)=2ֽ*=HֽU)=@/սU)=@/ս*=Hֽ+=Gս*=Hֽ/0=Pֽ+=Gս+=Gս/0=Pֽ/$=ս/0=Pֽ*[ۿ=gֽ/$=ս8c0ͽ8ʽ8^@ɽ8ʽ8E~ƽ8^@ɽ8^@ɽ8E~ƽ8Dǽ8E~ƽ8z@ý8Dǽ8Dǽ8z@ý8Wƽ8z@ý8}䧽 ½8Wƽ8Wƽ8}䧽 ½8e%0ǽ8}䧽 ½8`ɽY9Lb̽Y9Lb̽Y9>`ɽY9᜽#ɽY9>`ɽY9kŽY9᜽#ɽY9᜽#ɽY9kŽY9W%0ǽY9kŽY9Y9uY9NY9>Y9>Y9NY9t@.Y9NY9ڲY9t@.Y9t@.Y9ڲY9!Y9ڲY9Y9!IETQʤY9*XD@D@Y9D@DXY9Y9DXY9*XDXG[pY9*XY9*XG[pIETQʤYѧY9*XYѧ\Y9*XY9*X\s s 0uY9*X0u`Y9*XY9*X`SӝY9*XSӝY9*XY9*X;zP;zPV׻d@Y9*XV׻d@m绾 aЃY9*XwЈ8ӂ&p~aEF^Ј93893@3ʣ88@3ʣMtrШӂ&pOr0ӂ&p8Or0Or08h^8Mh^h^MvZX#LP>`8!Ʀp8!ӂ&pF^8F^D88D8!D㇦8!8!㇦xZLPgLP8!gg8!q2R8!Ʀpq2Rq2RƦpt4g` anb\ an8!b\b\8!9o$8!>`9o$Y9 ang绾}g绾}Y廾~Y9Y廾~Իwz0Y9Y9Իwz0D!dD!d=VPY9=VPDy=Y9Y9Dy= O# O#駽Y9駽sMY9sM[;DY9[;DY 6Y9Y9Y 6Ss pSs pI+Y9I+=G xY9Y9=G xY9=G xD6Y9Y9D6D@ anY98!Y9Y9ڲ8!8!Y9ڲ8ڲY9ڲY9N8ڲ8ڲY9N8NY9NY9u8N8NY9u8Y9uY95^@88Y95^@8C^@Y95^@Y9L~#ݽ8C^@8C^@Y9L~#ݽ8Z~#ݽY9L~#ݽY9࿽`|ֽ8Z~#ݽ8Z~#ݽY9࿽`|ֽ8'࿽`|ֽY9࿽`|ֽY9d7н8'࿽`|ֽ8'࿽`|ֽY9d7н8r7нY9d7нY9ʽ8r7н8r7нY9ʽ8ʽY9ʽY97~ƽ8ʽ8ʽY97~ƽ8E~ƽY97~ƽY9z@ý8E~ƽ8E~ƽY9z@ý8z@ýY9z@ýY9o䧽 ½8z@ý8z@ýY9o䧽 ½8}䧽 ½Y9o䧽 ½Y9`ɽ8yŽ8yŽY9>`ɽ8L`ɽY9>`ɽY9?0ν8L`ɽ8L`ɽY9?0ν8?0νY9?0νY9tԽ8?0ν8?0νY9tԽ8tԽY9tԽY9T-۽8tԽ8tԽY9T-۽8T-۽Y9T-۽Y9p8T-۽8T-۽Y9p8pY9pY9D8p8pY9D8DY9DY9_! 8D8DY9_! 8m! Y9_! Y9E8m! 8m! Y9E8EY9EY9*X8E8EY9*X88XY9*Xm绾 aЃ88X88Xm绾 aЃ8m绾 aЃ:sP88:sPwD`D `0Y9I^S3pY9!Y9D `0Y9!D `0TG桦Y9!Y9!TG桦I^S3pY9^Y9!Y9^[mPY9!Y9![mPsm槽 sm槽 s秽Y9!s秽Y9!Y9! Kp Kp񽅠NfY9!񽅠NfpY9!Y9!pCCջ0Y9!ջ0廾Y9!Y9!廾8廾g绾C8g绾C 08 0쏨88쏨{񽈅#񽻆̯{9Lp89Lp>A088>A0LE`t7]`q'z8q'zq'z8gp8LE`gpgpLE`xZD㧽񽀅m񽑂NDЙ82񽻆̯8񽻆̯D88D82D=P8282=P񽀅mh vZK,MV@zh 82q!P82𽑂NDЙq!Pq!P񽑂NDЙtФp9`㣽 sLPk82h ,MV@z82,MV@z@"0u8282@"0u9`㣽 sm绾^e82 Qh82LPk Qh QhLPk(@i5`kY9$=jiY9$ֻ0f=ji5`kˡ(ǣ0oY9$ˡ(ǣ0oE䣽0sY9$Y9$E䣽0s퀻z퀻ztrCY9$trCsHY9$Y9$sH\\YФY9$YФTY9$Y9$TI(nI(nGapY9$GapDƥ0Y9$Y9$Dƥ0Y9Dƥ0D`Y9Y9D`D`88!Y9!8!8@.Y9!Y9!8@.Y9t@.8@.8LY9t@.Y9t@.8LY9>8L8)Y9>Y9>8)Y98)8tPY9Y98tPY9~tP8tP8fܽY9~tPY9~tP8fܽY9}fܽ8fܽ8ỽd׽Y9}fܽY9}fܽ8ỽd׽Y9ỽd׽8ỽd׽8 ҽY9ỽd׽Y9ỽd׽8 ҽY9 ҽ8 ҽ8c0ͽY9 ҽY9 ҽ8c0ͽY9U0ͽ8c0ͽ8^@ɽY9U0ͽY9U0ͽ8^@ɽY9^@ɽ8^@ɽ8DǽY9^@ɽY9^@ɽ8DǽY9Dǽ8Dǽ8WƽY9DǽY9Dǽ8WƽY9Iƽ8Wƽ8e%0ǽY9IƽY9Iƽ8e%0ǽY9W%0ǽ8e%0ǽ8᜽#ɽY9W%0ǽY9W%0ǽ8᜽#ɽY9᜽#ɽ8᜽#ɽ8Lb̽Y9᜽#ɽY9᜽#ɽ8Lb̽Y9Lb̽8Lb̽8нY9Lb̽Y9Lb̽8нY9涔н8н8^սY9涔нY9涔н8^սY9^ս8^ս8l V۽Y9^սY9^ս8l V۽Y9l V۽8l V۽8uY9l V۽Y9l V۽8uY9g8u8,䓽0Y9gY9g8,䓽0Y9䓽08,䓽08"Y9䓽0Y9䓽08"Y9"8"8t[Y9"Y9"8t[Y9wt[8t[82Y9wt[Y9wt[82Y9$82m绾^eY9$Y9$m绾^eֻ0fxZgq'zgq2Rq'zq'zq2Rt7]`q2Rt4t7]`t7]`t4t4ƦpƦp#Ʀp#񽈅#񽉅̯񽉅㇦̯񽻆̯񽸆㇦Dq'zgpxZgpxZD㧽xZxZxZD㧽LPxZD㧽>`LPxZD㧽LE`>`LE`>A0>`>`>A09o$>A09Lp9o$9o$9Lpb\9Lp{b\b\{g`{쏨g`g`쏨 an쏨 0 an an 0g绾} 0g绾Cg绾}g绾}g绾CY廾~g绾C廾Y廾~Y廾~廾Իwz0廾ջ0Իwz0Իwz0ջ0D!dջ0CD!dD!dC=VPCp=VPp񽅠Nf=VP=VPNfDy=Nf KpDy=Dy= Kp O# Kp O# O#駽s秽駽駽s秽sMs秽sm槽 sMsMsm槽 sCsCsm槽 [;Dsm槽 [mP[;D[;D[mPY 6[mPY9^Y 6Y9^S3pY 6Y 6S3pSs pS3pI^Ss pSs pI^I+I^TG桦I+I+TG桦=G xTG桦D `0=G xDXD@D`D@D@D`D`D@D `0D@D6D `0D `0D6=G xD`D`DXD`Dƥ0DXDXDƥ0G[pDƥ0GapG[pG[pGapIEGapI(nIEIEI(nTQʤI(nTTQʤTQʤTYѧTYФYѧYѧYФ\YФ\\\\s \sHs s sH0usHtrC0u0utrC`trC퀻z``퀻z퀻zE䣽0sE䣽0sSӝE䣽0sˡ(ǣ0oSӝSӝˡ(ǣ0o񽠱ˡ(ǣ0o5`k񽠱5`k;zP5`k=ji;zP;zP=jiV׻d@=jiֻ0fV׻d@ֻ0f^绾VeV׻d@V׻d@^绾Vem绾 aЃ^绾Vem绾^em绾 aЃm绾 aЃm绾^e绾`Ѓm绾^e Qh绾`Ѓ绾`Ѓ Qh:sP Qh(@i:sP:sP(@iww(@iЈ(@iLPkЈЈLPk93LPk9`㣽 s939`㣽 s@"0u9393@"0u@3ʣ@"0u,MV@z@3ʣ@3ʣ,MV@zM,MV@zvZKMMvZKvZX#vZKh vZX#vZX#h h^h q!Ph^h^q!POr0q!PtФpOr0Or0tФptrШtrШtФpӂ&ptФp񽑂NDЙӂ&pӂ&pNDЙ~aENDЙ񽀅m~aEm=P~aE~aE=PF^=PDF^F^DDD񽸆㇦DDATAH p+DATA B:..edge_vertsET2.select_edge +TDATA0rEuF  $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y                ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | }              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y   !(*(),-464589@B@ADE !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~         ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~                 % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~          ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~   %'%&)*131256=?=>AB  "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{             " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~            " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z {              " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~       "$"#&'.0./23:<:;>? ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx                 ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x                    ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |    ! #$+-+,/07978;<CECDDATAH +eeDATAh L< .corner_vert ;FT .corner_edgeFXT)FTDATA9 ;FLF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEDATA9FLF  % $&  ( ')  + *,  . -/   1 02  4 35  7 68  : 9;  = <>  @ ?A C BD"! # F EG%$ & I HJ(' ) L KM+* , O NP.- / R QS10 2 U TV43 5 X WY76 8 [ Z\:9 ; ^ ]_=< > a `b@? A d ceCB D g fhFE G j ikIH J m lnLK M p oqON P s rtRQ S v uwUT V y xzXW Y | {}[Z \  ~^] _  a` b  dc e  gf h  ji k  ml! n " po$ q# % sr' t& ( vu* w) +   y x- z, .   |{0 }/ 1 ~3 2 4 6 5 7 9 8 : < ; = ? > @  B A C "!#E D F %$&H G I (')K J L +*,N M O .-/Q P R 102T S U 435W V X 768Z Y [ :9;] \ ^ =<>` _ a @?Ac b d CBDf e g FEGi h j IHJl k m LKMo n p ONPr q s RQSu t v UTVx w y XWY{ z | [Z\~ }  ^]_  a`b  dce  gfh  jik  mln  poq  srt  vuw  y xz  | {}  ~           ! "  $ #%  ' &(  * )+   - ,.    0 /1  3 24  6 57  9 8:  < ;=  ? >@  B AC!  " E DF$# % H GI'& ( K JL*) + N MO-, . Q PR0/ 1 T SU32 4 W VX65 7 Z Y[98 : ] \^<; = ` _a?> @ c bdBA C f egED F i hjHG I l kmKJ L o npNM O r qsQP R u tvTS U x wyWV X { z|ZY [ ~ }]\ ^  `_ a  cb d  fe g  ih j  lk m ! on# p" $ rq& s% ' ut) v( *  x w, y+ -   { z/ |. 0 ~}2 1 3 5 4 6 8 7 9 ; : < > = ? A @ B ! "D C E $#%G F H '&(J I K *)+M L N -,.P O Q 0/1S R T 324V U W 657Y X Z 98:\ [ ] <;=_ ^ ` ?>@b a c BACe d f EDFh g i HGIk j l KJLn m o NMOq p r QPRt s u TSUw v x WVXz y { ZY[} | ~ ]\^   `_a   cbd   feg   ihj   lkm   o np    r qs    u tv    x wy  { z|   ~ }                            !   # " $   & % '   ) ( *   , + -     / . 0    2 1 3   5 4 6   8 7 9   ; : <   > = ?   A @ B   ! D C E #" $ G F H &% ' J I K )( * M L N ,+ - P O Q /. 0 S R T 21 3 V U W 54 6 Y X Z 87 9 \ [ ] ;: < _ ^ ` >= ? b a c A@ B e d f DC E h g i GF H k j l JI K n m o ML N q  p r PO Q t  s u SR T w  v x VU W z y { YX Z }  | ~ \[ ]    _^ `   ba c   ed f   hg i   kj l  nm" o! #  qp% r$ &  ts( u' )  w v+ x* ,  z y. {- /  }|1 ~0 2  4 3 5  7 6 8  : 9 ;  = < >  @ ? A  !C B D # "$F E G & %'I H J ) (*L K M , +-O N P / .0R Q S 2 13U T V 5 46X W Y 8 79[ Z \ ; :<^ ] _ > =?a ` b A @Bd c e D CEg f h G FHj i k J IKm l n M LNp o q P OQs r t S RTv u w V UWy x z Y XZ| { } \ [] ~ _ ^`  b ac  e df  h gi  k jl  n mo   q pr    t su    w vx  z y{  } |~                                " ! #   % $ &   ( ' )   + * ,     . - /     1 0 2   4 3 5   7 6 8   : 9 ;   = < >   @ ? A   C B D "! # F E G %$ & I H J (' ) L K M +* , O N P .- / R Q S 10 2 U T V 43 5 X W Y 76 8 [ Z \ :9 ; ^ ] _ =< > a ` b @? A d c e CB D g f h FE G j i k IH J m l n LKM p o q ONPs r t RQSv u w UT Vy x z XW Y | { } [Z\ ~  ^]_   a`b   dce   gfh   jik   ml!n  "  po$q# %  sr't& (  vu*w) +  y x-z, .  |{0}/ 1  ~32 4  65 7  98 :  <; =  ?> @   BA C " !#EDDATA9FsF m+7Ш  ѝכ@b”ڝ_X_IyX/I+ H+QYן+QY9+jQ+S 0ʫ 50uAd  RUtrr߱rkrrktk߯xUtiX'#ߞiE#m|qiiU|c|,4ii-E0Mm4K4Kw[KwΟ[7<[Y oӕҜ1ɰ4JX'ܪitiרȨ ݴ,ԫy,`ӈ,'Ĉ'F 'Nڰ4A"ɕϿ4Ͱ ܂ J.Jr0Xj'Y.YGo.G$ gG&$ 5Ӓ$ $$ N ݒo W T y AA"'NA ވ'F'j'*ܤ$j'j'Τ$LFC "ο  8Ӄdȿ ſ uAdC Ρ ? 4֕" 1 o2W޳W:m#ap#Gffad`}Ե \2 *\2]N`T?ߕ?_TB(pg )| )[0 l! u l!4**\2{*xK\2\2K(K$ϧ(|($4!9a"_2k(__ (hL)(?4!L)?_T_b_g_tTٕ ̸R'# X 'µ 'u |uyE(A((iΛwݴswLw:n~8x |xIu|Պ|7 j$J3N٫~9Wߝ~ީVW*ީzt**zyEz\lD8Ek[5[U}55{U}}uU}ޠ~}x}~vұR-٠~%eʮRʰ~ɪ}A~}O QA~xA~    ՏE*ގGzt**yyƲzr㮲ʲar]drJq?dβa,ulul,6rhulH0a*<ޭn̡Z`Z`nio`7oҡh:h~7opPpPm7o7oҡmywQmfv+w w:fv`cvu֛Y^^YM[!ڈ[!OYYMYOY~fZ}Z}}6~[~VQ_9Lȟ~o~9LP VN;ܛYSSMYM[!ڈ[!SMYMYSN; V-r9LP9Lȟ-rбzr,{ a_vi/ojӛa=_--=_/ԕ_T^uY'YԜlruM $2 .`vh6!116! _@6! cn}ebW~ebpW~d~~~~Y}~~}1ly}}wlyeuLQu wLQڥ_5n oo ooלW-5n5nWVYlڧYl aģWVW- a綏bُbٌ] a aģ]r@_;c q `;s|El&b|T|B&rm~0oը}NY~hY~W}`b}8}Hxg8}Z|}Z}z)\}\\}Jz-s۷ss\g!-s۷-sĤ\g@lhՌhHoedudeov{vf7}H{G{57}Z^X}չiyhy^ո^}Ryi}c~~Յ|?}c}R|Q~wկ|Չ~Z~o~^~kD\ޛ~Մ] A A[]9_9_٢aͣ]]accHYIaﶢaͣHYqy ;[-qy3y(3yqy+Fey֚k]cckyr֓ljQrηrjnkklejnjQlulsg `kyk] qarյix~<}}}C}(}}.C}{~c}աIz~z~9^եa^WJ^WmYumYuO_t^W^WO_`V`V[:O_O_t[͹x@֠]wަ(x>(xw:Hz6xJUФjEFjExUqWWUФUqUФUq{W{{h{{l op.|n_0nĺ0nVn̺^՝o]LJ~}Zմ}/~"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˻"̼"˼"̼"˼"̼"˼"̺"˼"̼"ڹu2ʼ2ڱ¬μzɚ͚߱;!ʼ"̽"˽"̽"˽"̼"˼"̼"˻"̼"˼"̼"˼"̼"˼"snߑEpsnsn;DpʂDpٺ <ςɩ˼޻"̼"˼"̼"˼"̼"˻"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̽"˽"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˻"̼"˼"̼"˼"̼"˼"̼"˼"̻"˻"̽"ڑƫ8w X4gʢ"l"ll[5O ѻ@a#a#uy sԷ"2$s"7,!6y"j"g"˃ڢmp"SV&kx"*"v'ʫ((B3"YDbǻL"RI E]Ɔ!@S-V 9w !}p*]K!a2?"JU!ٱC!>k˗R"Ɩhb)v:˻8I U!= гǐ$ 7b2V ԑ 7!2}+w< > cWbp_#3c+hG ӧC ԵA I Iȩ@@OU^ޛ N Q L L ɟt,"vlpUt% `#<3¹f ]t]0&/=/l/ ^]~.a~]]-I @`{]c r]I 's aݎ^G]Z>]& ̫8 s9G\_,>:wŵ2 >Q@ 5%f r YZԐ _ T_==ZT_ZT_==ZT_ZT_=<ZT_ZT_>>ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_<=ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_=<ZT_ZT_==FT_ZF^' I "^/ ԅ% '^ $ aA ߅@t*uC V"Taa>tN% 2a ѿM!a Jߤ͒*aV]SaDGaE$)uˡIa'< a$ a''ҡ$'53Ӡ9 a1_Ȟ@ (a _`;^o߀L_XS__7BP#doEq:_^O ^R^\g*抒"_QbvˊWLlX]=W^N6t1WW4$WW B4H_;y% w'"M_ cY__OHFrfwAS_$F_] ȧ~>1?$ _MS_4 _ _UG*$ _F _fš3b!"BWB>!6'.Lޜ9%.!ߊ.(bE! M/ܚӲl^ލJN  Jo2\"4MQ(G+\A8n`H6 P H@./   _   ==  ==  ==  ==  >>  ==  ==  ==  ==  >>  ==  ==  ==  >>  =<  ==  >>  ==  ==  ==  ==   ` &__I:Z r ;#٪?}.Kնz}}r *l}dh}\~ <y98mv\!<ɪL˿dBQ |F{ /{c ZjZ 7yyx wQxe3x=wAtR wU w8w;{mv׿$v~ծuc,FuԪuD:s0B΄Yr4MrvsTs?,P)sI>pX3PBO CpY@p{AЧYY:>AN[U:A^M[k[ߪMZcM\ ZV]{ִY~Z4Z5Y׿!m֍Z3alxl'a$ka^ͩ-k,k,^eqQ_,p`Qpp,n`(xևaEOav@w7cCOvlwa'Ël aml&l nkm>p!kOpmשkgkmoO^n2hninکhthgntTtjnӿπعn"(|E~nnÉ!É;]D nn}>n8t}@3|UtA O||m!?n0~c~X'|InՐ|%ӕonZnԩQo/OuBKo=hNTuVub:htn3:hnsn ownoLsn!֓k6ooGk8unՖkduvcmk%֫c8m&kwk7m>u[3m `\u~?Hv^5p^y;`9ppA_Imk@_)ք`.nkqkA`}l`YզZܨl lxYQbY#։Tbd9cTaSrEdaawEvHEQOrHHO֋pHcHp09Պr>q^@fp?aգp\t TtҾ{կt.߁`ၶ/cA9Jxv w<Ɂv֔ẃwxρ́êxǁxy{jyx{ըzE`C=ը{kD* {f'{%}[쀅ꀼ+}]}.c~{@V  6MP2}U(2~b%ɪ~[68~PN>8QTՌ~~~"Rð{Yৼ"˼"̼"˻"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̹"˺"̼"˼"̿"˾"̺"˹"̼"˼"̼"˼"̼"ڹu2ʼ2ڱ¬μzɚ͚߯;!ʼ"̼"˼"̾"˽"̹"˺"̼"˼"̿"˾"̺"˹"̽"˽"snߑDpsnsn>DpʂDpٺ <ςɩ˼޺"̽"˼"̼"˼"̼"˼"̼"˼"̼"˼"̻"˻"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̼"˼"̽"˼"̼"˼"̼"˼"̼"˼"̼"˼"̻"˻"̼"˼"̼"˼"̼"ڑƫ8v VDjʢyyY<5L ѻ@_#i#t {" ?".kΤv"l"d"! pn"up&;"C"M'ʤ((BT{"D]7"& A)[FR_ pߚo !o0Iׁ_ D"L!3@!B њ_" r?)1J R+= B Ǖ#L 7`3V ԑ 7)3~< > kak (br`-yG u+{юD A Oz_s GΑ!P`o9 ޶ M HP֢L iJ \rp "4nउo߈lSG h#<2v ]l]0;/B.c/d].b|]])?Ca{]b q]G 'saݎfI]O=]'  Ϋ8 f=B\`,>Av- l>Q@ 6'f r YZԐ _ T_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_=>ZT_ZT_<<ZT_ZT_==ZT_ZT_>>ZT_ZT_<<ZT_ZT_>>ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_==ZT_ZT_=>ZT_ZT_=<ZT_ZT_>>FT_ZF^& I "^/ ԅ% G? 9 Vz2 腊@t*rC V)Uaa>uD# #a Ҳta BפgEg٥xVaPҿUSaYFa<0 ˑ+a2 a= a@.'ѡ'9ƻ3ՠ' a1YȬN $a  _/ _ss: _` __9EdhD`2R݀)^X ^?^A^)ocDh_xKW,8n2][D[^xmVpK ^(ay"@Lt_By% w#"L_ `[__5R[~`_@_\-Ӈ^&K:, _M욨_ _f _m[ T# _$ _VA^ڏ,PU!L&0/O|9|%.!U l%0dִ#9!ܑȲyfޓVV  Jjݽj%1M~F*T$^2pJnJ7 N V@w<-3-   _   <<  >>  ==  >>  ==  ==  =>  =<  >>  >>  <<  >>  ==  ==  ==  >>  ==  ==  ==  ==  ==   ` '__ w:[ r "7q#ԪD}.Nո}}}q $]  X} تcj}[~986!i  W%FժW̿dBR|B{ 3{`]fZ 7!yyx xI!xg.x@w@wUvSv,w:}mvտv|ue uuD>s-A΄[r4PrwsR~s?AP&sJUpXADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFME =HME0.081EI- @ BD: E: `:M< C%0)ܽx.=x=L<A=$|DATAI-`<DATAD:0position`!GXT2 .select_vert T9TDATA`!Gw G=fڽ?ӜY=ڽ9M=ݽG=fڽ9M=ݽ<=0#ڽ/Eb=0p۽d_=K۽8M=ݽ?ӜY=ڽݜ"[=P۽9M=ݽݜ"[=P۽`=Z۽9M=ݽ9M=ݽ`=Z۽/Eb=0p۽d_=K۽Z=P۽8M=ݽZ=P۽9V=ڽ8M=ݽ8M=ݽ9V=ڽB=@@ڽB=@@ڽ<=%ڽ8M=ݽ<=%ڽΝL=wٽ8M=ݽ8M=ݽΝL=wٽ=ؽΝL=wٽН=@ؽ=ؽ=ؽН=@ؽΰ=ԽН=@ؽН=ؽΰ=Խΰ=ԽН=ؽҝ= ؽҝ= ؽÝ=׽ΰ=ԽÝ=׽X=׽ΰ=Խΰ=ԽX=׽񤝾Wb=6׽񤝾Wb=6׽<4=Pֽΰ=Խ<4=Pֽx+=ֽΰ=Խΰ=Խx+=ֽCn=ֽ2/=ֽ9 =ֽΰ=Խ9 =ֽRݜ 4=ֽΰ=ԽRݜ 4=ֽ&ۜ5=ֽΰ=Խΰ=Խ&ۜ5=ֽo=U׽N=ؽ=ؽȕI= ؽ=ؽΰ=ԽȕI= ؽȕI= ؽΰ=Խ>.=׽ΰ=Խo=U׽>.=׽N=ؽы)=ؽ=ؽы)=ؽԋ;=ؽ=ؽ=ؽԋ;=ؽ9M=ݽԋ;=ؽ&=pٽ9M=ݽ9M=ݽ&=pٽ<=0#ڽɻf=pн̡=нH=@Dҽɻf=pнH=@Dҽo=н̡=н`=нH=@Dҽ`=нhe= нH=@DҽH=@Dҽhe= н2?=0ѽ \=нޜ= нk=нޜ= нB͜\=нk=нB͜\=нs0I=нk=нk=нs0I=н7q=н7q=н= Iнk=н= IнDk=нk=нk=нDk=нi= ϽDk=нH@w=Ͻi= Ͻi= ϽH@w=Ͻ'M=`Ͻ'M=`Ͻ63=Ͻi= Ͻ63=Ͻ֜ǥ=Ͻi= Ͻi= Ͻ֜ǥ=Ͻݜvӥ=Ͻݜvӥ=Ͻ 4=0Ͻi= Ͻ 4=0Ͻ;/(=Ͻi= Ͻi= Ͻ;/(=Ͻw@-=PϽw@-=PϽZtL=PϽh= ϽZtL=PϽ ѥ=pϽh= Ͻ ѥ=pϽꠝv=PϽh= Ͻꠝv=PϽ컝.=Ͻh= Ͻh= Ͻ컝.=ϽŤ=ϽŤ=Ͻѝ=@нh= Ͻѝ=@нН7=@нh= Ͻh= ϽН7=@нj=нН7=@нН㦣=Pнj=нj=нН㦣=PнH=@DҽН㦣=Pнiϝj$=?нH=@DҽH=@Dҽiϝj$=?нo=нw@-=PϽh= Ͻi= Ͻh= Ͻ!=pSѽi= Ͻi= Ͻ!=pSѽ!=pSѽ!=pSѽΰ=Խ!=pSѽ!=pSѽΰ=Խΰ=Խΰ=ԽCn=ֽΰ=Խΰ=ԽCn=ֽ2/=ֽ/Eb=0p۽8M=ݽ9M=ݽ8M=ݽ澱=pa9M=ݽ9M=ݽ澱=pa羱=pa澱=paX= 羱=pa羱=paX= Y= X= {,= 8Y= Y= {,= 8|,= 8{,= 8}O=|,= 8|,= 8}O=~O=}O=鰠=P~O=~O=鰠=P갠=P鰠=P=갠=P갠=P===:ښ=k߽==:ښ=k߽;ښ=k߽:ښ=k߽=ڽ;ښ=k߽;ښ=k߽=ڽ=ڽ=ڽ=`ս=ڽ=ڽ=`ս=`ս=`սH=@Dҽ=`ս=`սH=@DҽH=@DҽH=@Dҽ2?=0ѽH=@DҽH=@Dҽ2?=0ѽk=н2?=0ѽ0/A=Pѽk=нk=н0/A=Pѽ \=нj=н,t=ƽh= Ͻ,t=ƽ ܪ=pǽh= Ͻh= Ͻ ܪ=pǽ!=pSѽ ܪ=pǽG=ɽ!=pSѽ!=pSѽG=ɽΰ=Խ:ښ=k߽l=ݽ=ڽl=ݽ =ֽ=ڽ=ڽ =ֽ=`ս =ֽO=н=`ս=`սO=нH=@DҽO=нؘ=˽H=@DҽH=@Dҽؘ=˽j=нؘ=˽!D=`xȽj=нj=н!D=`xȽ,t=ƽG=ɽ=̽ΰ=Խ=̽p= ҽΰ=Խΰ=Խp= ҽ=ؽp= ҽ=ؽ=ؽ=ؽ=ؽ8M=ݽ=ؽLI=`޽8M=ݽ8M=ݽLI=`޽澱=pa}O=۟=Py鰠=P۟=Py.=}鰠=P鰠=P.=}=.=}أ=P==أ=P:ښ=k߽أ=P=`O:ښ=k߽:ښ=k߽=`Ol=ݽLI=`޽T=p澱=paT=p>=%澱=pa澱=pa>=%X= >=%Ie=@WX= X= Ie=@W{,= 8Ie=@Wˆ={,= 8{,= 8ˆ=}O=ˆ=(=}O=}O=(=۟=Py0ݤ(=ˆ=0ݤˆ=ˆ=Ie=@W0ݤˆ=0ݤˆ=Ie=@W0ݤIe=@WIe=@W>=%0ݤIe=@W0ݤIe=@W>=%0ݤ>=%>=%T=p0ݤ>=%0ݤ>=%T=p0ݤT=pT=pLI=`޽0ݤT=p0ݤT=pLI=`޽0ݤLI=`޽LI=`޽=ؽ0ݤLI=`޽0ݤLI=`޽=ؽ0ݤ=ؽ=ؽp= ҽ0ݤ=ؽ0ݤ=ؽp= ҽ0ݤp= ҽp= ҽ=̽0ݤp= ҽ0ݤp= ҽ=̽0ݤ=̽=̽G=ɽ0ݤ=̽0ݤ=̽G=ɽ0ݤG=ɽG=ɽ ܪ=pǽ0ݤG=ɽ0ݤG=ɽ ܪ=pǽ0ݤ ܪ=pǽ ܪ=pǽ,t=ƽ0ݤ ܪ=pǽ0ݤ ܪ=pǽ,t=ƽ0ݤ,t=ƽ,t=ƽ!D=`xȽ0ݤ,t=ƽ0ݤ,t=ƽ!D=`xȽ0ݤ!D=`xȽ!D=`xȽؘ=˽0ݤ!D=`xȽ0ݤ!D=`xȽؘ=˽0ݤؘ=˽ؘ=˽O=н0ݤؘ=˽0ݤؘ=˽O=н0ݤO=нO=н =ֽ0ݤO=н0ݤO=н =ֽ0ݤ =ֽ =ֽl=ݽ0ݤ =ֽ0ݤ =ֽl=ݽ0ݤl=ݽl=ݽ=`O0ݤl=ݽ0ݤl=ݽ=`O0ݤ=`O=`Oأ=P0ݤ=`O0ݤ=`Oأ=P0ݤأ=Pأ=P.=}0ݤأ=P0ݤأ=P.=}0ݤ.=}.=}۟=Py0ݤ.=}0ݤ.=}۟=Py0ݤ۟=Py۟=Py(=0ݤ۟=Py0ݤ۟=Py(=0ݤ(=(=ˆ=0ݤ(=0ݤ=`O0ݤ&͍=P$0ݤl=ݽ0ݤ&͍=P$0ݤmc=.ڽ0ݤl=ݽ0ݤl=ݽ0ݤmc=.ڽ0ݤ =ֽ0ݤmc=.ڽ0ݤLގ=^ӽ0ݤ =ֽ0ݤ =ֽ0ݤLގ=^ӽ0ݤO=н0ݤLގ=^ӽ0ݤ!=p5ͽ0ݤO=н0ݤO=н0ݤ!=p5ͽ0ݤؘ=˽0ݤ!=p5ͽ0ݤ=(Ƚ0ݤؘ=˽0ݤؘ=˽0ݤ=(Ƚ0ݤ!D=`xȽ0ݤ=(Ƚ0ݤ=Ľ0ݤ!D=`xȽ0ݤ!D=`xȽ0ݤ=Ľ0ݤ,t=ƽ0ݤ=Ľ0ݤ=½0ݤ,t=ƽ0ݤ,t=ƽ0ݤ=½0ݤ ܪ=pǽ0ݤ=½0ݤ_=½0ݤ ܪ=pǽ0ݤ ܪ=pǽ0ݤ_=½0ݤG=ɽ0ݤ_=½0ݤR=Ľ0ݤG=ɽ0ݤG=ɽ0ݤR=Ľ0ݤ=̽0ݤR=Ľ0ݤ ?=rȽ0ݤ=̽0ݤ=̽0ݤ ?=rȽ0ݤp= ҽ0ݤ ?=rȽ0ݤl=ͽ0ݤp= ҽ0ݤl=ͽ0ݤ3=ӽ0ݤp= ҽ0ݤp= ҽ0ݤ3=ӽ0ݤ=ؽ0ݤ3=ӽ0ݤw=ڽ0ݤ=ؽ0ݤ=ؽ0ݤw=ڽ0ݤLI=`޽0ݤw=ڽ0ݤ= 0ݤLI=`޽0ݤLI=`޽0ݤ= 0ݤT=p0ݤ= 0ݤڈ=`$0ݤT=p0ݤT=p0ݤڈ=`$0ݤ>=%0ݤڈ=`$0ݤv= 0ݤ>=%0ݤ>=%0ݤv= 0ݤIe=@W0ݤv= 0ݤ=&0ݤIe=@W0ݤIe=@W0ݤ=&0ݤˆ=0ݤ=&0ݤ=00ݤˆ=0ݤˆ=0ݤ=00ݤ(=0ݤ=00ݤQ=@0ݤ(=0ݤ(=0ݤQ=@0ݤ۟=Py0ݤQ=@0ݤqȟ=@0ݤ۟=Py0ݤ۟=Py0ݤqȟ=@0ݤ.=}0ݤqȟ=@0ݤi=0ݤ.=}0ݤ.=}0ݤi=0ݤأ=P0ݤi=0ݤ =v0ݤأ=P0ݤأ=P0ݤ =v0ݤ=`O0ݤ =v0ݤ=P0ݤ=`O0ݤ=`O0ݤ=P0ݤ&͍=P$= ֽF=0׽0ݤw=ڽ0ݤ3=ӽ <=,Խ/aB=@Խ/aB=@ԽΝx=`Խ0ݤ3=ӽΝx=`Խҝ=yս0ݤ3=ӽ0ݤ3=ӽҝ=yս0ݤw=ڽҝ=yսɝԿ=Kֽ0ݤw=ڽ0ݤw=ڽɝԿ=Kֽ= ֽF=0׽P=׽0ݤw=ڽP=׽|=׽0ݤw=ڽ0ݤw=ڽ|=׽fSo(=׽.)=׽n*=׽cw=ڽn*=׽眾# =׽cw=ڽcw=ڽ眾# =׽ޜ=׽ޜ=׽C=p=׽cw=ڽC=p=׽(=ֽcw=ڽcw=ڽ(=ֽn=`ֽn=`ֽB&=pսcw=ڽB&=pսL=pzսcw=ڽcw=ڽL=pzսc4=ӽL=pzսqw=@Խc4=ӽc4=ӽqw=@ԽdB=AԽdB=AԽt;= +Խc4=ӽt;= +Խe=0ӽc4=ӽc4=ӽe=0ӽcm=ͽe=0ӽɜx=ӽcm=ͽcm=ͽɜx=ӽKޜU=dӽKޜU=dӽN=+ӽcm=ͽN=+ӽ/վ= ӽcm=ͽcm=ͽ/վ= ӽ/Ծ= ӽ/Ծ= ӽe%=,ӽ0ݤl=ͽe%=,ӽN=cӽ0ݤl=ͽN=cӽo=ӽ0ݤl=ͽ0ݤl=ͽo=ӽ0ݤ3=ӽo=ӽӣ=0ӽ0ݤ3=ӽ0ݤ3=ӽӣ=0ӽ <=,ԽA=Ν=;ĽDvo=&Ľ0ݤ=ĽDvo=&Ľ!=Ľ0ݤ=Ľ!=Ľ󢝾<=pý0ݤ=Ľ󢝾<=pý=`ý0ݤ=Ľ0ݤ=Ľ=`ý)=ý)=ýѝ=Ѕý0ݤ=Ľѝ=ЅýН:=sý0ݤ=Ľ0ݤ=ĽН:=sý0ݤ=½Н:=sýΝȠ=Mý0ݤ=½0ݤ=½ΝȠ=Mý#uw=%ý#uw=%ý¹̍=p ý0ݤ=½¹̍=p ý(}.= ý0ݤ=½0ݤ=½(}.= ý\=½\=½d=P½0ݤ=½d=P½/7=P½0ݤ=½0ݤ=½/7=P½.=@½/Ծ= ӽ0ݤl=ͽcm=ͽ0ݤl=ͽ0ݤ ?=rȽcm=ͽcm=ͽ0ݤ ?=rȽc ?=rȽ0ݤ ?=rȽ0ݤR=Ľc ?=rȽc ?=rȽ0ݤR=ĽcR=Ľ0ݤR=Ľ0ݤ_=½cR=ĽcR=Ľ0ݤ_=½c`=½0ݤ_=½0ݤ=½c`=½c`=½0ݤ=½c=½0ݤ=½.=@½c=½c=½.=@½=p½=p½Jޜ\=½c=½Jޜ\=½Ȝ-=Pýc=½c=½Ȝ-=Pý9V= ý9V= ýw=%ýc=½w=%ýBŠ=Nýc=½c=½BŠ=Nýc=ĽBŠ=NýDR:=rýc=ĽDR:=rýspj=ýc=Ľc=Ľspj=ý6=pý6=pý𮜾=ýc=Ľ𮜾=ýל(=0Ľc=Ľc=Ľל(=0Ľݜ =pĽݜ =pĽ ٝ=7Ľc=Ľ ٝ=7Ľ9/ ҝ=:Ľc=Ľc=Ľ9/ ҝ=:ĽA=Ν=;ĽA=Ν=;Ľ0ݤ=Ľc=Ľ0ݤ=Ľ0ݤ=(Ƚc=Ľc=Ľ0ݤ=(Ƚc=(Ƚ0ݤ=(Ƚ0ݤ!=p5ͽc=(Ƚc=(Ƚ0ݤ!=p5ͽc!=p5ͽ0ݤ!=p5ͽ0ݤLގ=^ӽc!=p5ͽc!=p5ͽ0ݤLގ=^ӽcMގ=^ӽ0ݤLގ=^ӽ0ݤmc=.ڽcMގ=^ӽcMގ=^ӽ0ݤmc=.ڽcnc=.ڽ0ݤmc=.ڽ0ݤ&͍=P$cnc=.ڽcnc=.ڽ0ݤ&͍=P$c'͍=P$0ݤ&͍=P$0ݤ=Pc'͍=P$c'͍=P$0ݤ=Pc=P0ݤ=P0ݤ =vc=Pc=P0ݤ =vc =v0ݤ =v0ݤi=c =vc =v0ݤi=ci=0ݤi=0ݤqȟ=@ci=ci=0ݤqȟ=@crȟ=@0ݤqȟ=@0ݤQ=@crȟ=@crȟ=@0ݤQ=@cR=@0ݤQ=@0ݤ=0cR=@cR=@0ݤ=0c=00ݤ=00ݤ=&c=0c=00ݤ=&c=&0ݤ=&0ݤv= c=&c=&0ݤv= cv= 0ݤv= 0ݤڈ=`$cv= cv= 0ݤڈ=`$cۈ=`$0ݤڈ=`$0ݤ= cۈ=`$cۈ=`$0ݤ= c= 0ݤ= 0ݤw=ڽc= c= 0ݤw=ڽcw=ڽ0ݤw=ڽfSo(=׽cw=ڽcw=ڽfSo(=׽.)=׽cR=@Ŧ=crȟ=@Ŧ=r=crȟ=@crȟ=@r=ci=r="О=6ci=ci="О=6c =v"О=6=c =vc =v=c=P=5=`c=Pc=P5=`c'͍=P$5=`yؗ= &߽c'͍=P$c'͍=P$yؗ= &߽cnc=.ڽyؗ= &߽ =0ڽcnc=.ڽcnc=.ڽ =0ڽcMގ=^ӽ =0ڽ]|=ֽcMގ=^ӽcMގ=^ӽ]|=ֽc!=p5ͽ]|=ֽq=`0ӽc!=p5ͽc!=p5ͽq=`0ӽc=(Ƚq=`0ӽS=`(нc=(Ƚc=(ȽS=`(нc=ĽS=`(н{=Pνc=Ľc=Ľ{=Pνc=½{=Pν1=̽c=½c=½1=̽c`=½1=̽$=P̽c`=½c`=½$=P̽cR=Ľ$=P̽(= νcR=ĽcR=Ľ(= νc ?=rȽ(= νi=0Uнc ?=rȽc ?=rȽi=0Uнcm=ͽi=0Uн<=`jӽcm=ͽcm=ͽ<=`jӽc4=ӽ<=`jӽNn=%׽c4=ӽc4=ӽNn=%׽cw=ڽNn=%׽>=?۽cw=ڽcw=ڽ>=?۽c= >=?۽=k߽c= c= =k߽cۈ=`$=k߽K|=`Ycۈ=`$cۈ=`$K|=`Ycv= K|=`Y =cv= cv=  =c=& =%Ʈ=Zc=&c=&%Ʈ=Zc=0%Ʈ=Z!=c=0c=0!=cR=@!=Ŧ=cR=@k=н{=PνH=@Dҽ{=PνS=`(нH=@DҽH=@DҽS=`(н=`սΰ=Խi=0Uн!=pSѽi=0Uн(= ν!=pSѽ!=pSѽ(= νi= Ͻ(= ν$=P̽i= Ͻi= Ͻ$=P̽k=н$=P̽1=̽k=нk=н1=̽{=PνS=`(нq=`0ӽ=`սq=`0ӽ]|=ֽ=`ս=`ս]|=ֽ=ڽ]|=ֽ =0ڽ=ڽ=ڽ =0ڽ;ښ=k߽ =0ڽyؗ= &߽;ښ=k߽yؗ= &߽5=`;ښ=k߽;ښ=k߽5=`=5=`====갠=P9M=ݽ>=?۽=ؽ>=?۽Nn=%׽=ؽ=ؽNn=%׽ΰ=ԽNn=%׽<=`jӽΰ=Խΰ=Խ<=`jӽi=0UнY=  =羱=pa =K|=`Y羱=pa羱=paK|=`Y9M=ݽK|=`Y=k߽9M=ݽ9M=ݽ=k߽>=?۽="О=6갠=P"О=6r=갠=P갠=Pr=~O=r=Ŧ=~O=~O=Ŧ=|,= 8Ŧ=!=|,= 8|,= 8!=Y= !=%Ʈ=ZY= Y= %Ʈ=Z =ԋ;=ؽы)=ؽL=pzս|=׽P=׽B=@@ڽP=׽F=0׽B=@@ڽB=@@ڽF=0׽<=%ڽF=0׽= ֽ<=%ڽ<=%ڽ= ֽΝL=wٽΝL=wٽ= ֽН=@ؽ= ֽɝԿ=KֽН=@ؽН=@ؽɝԿ=KֽН=ؽɝԿ=Kֽҝ=yսН=ؽН=ؽҝ=yսҝ= ؽҝ=yսΝx=`Խҝ= ؽҝ= ؽΝx=`ԽÝ=׽Νx=`Խ/aB=@ԽÝ=׽Ý=׽/aB=@ԽX=׽/aB=@Խ <=,ԽX=׽ <=,Խӣ=0ӽX=׽X=׽ӣ=0ӽ񤝾Wb=6׽ӣ=0ӽo=ӽ񤝾Wb=6׽񤝾Wb=6׽o=ӽ<4=Pֽo=ӽN=cӽ<4=PֽN=cӽe%=,ӽ<4=Pֽ<4=Pֽe%=,ӽx+=ֽe%=,ӽ/Ծ= ӽx+=ֽo=U׽KޜU=dӽɜx=ӽt;= +ԽdB=AԽ>.=׽o=U׽ɜx=ӽ>.=׽ɜx=ӽe=0ӽ>.=׽>.=׽e=0ӽt;= +Խo=U׽&ۜ5=ֽKޜU=dӽ&ۜ5=ֽRݜ 4=ֽKޜU=dӽKޜU=dӽRݜ 4=ֽN=+ӽRݜ 4=ֽ9 =ֽN=+ӽN=+ӽ9 =ֽ/վ= ӽ9 =ֽ2/=ֽ/վ= ӽ/վ= ӽ2/=ֽ/Ծ= ӽ2/=ֽCn=ֽ/Ծ= ӽ/Ծ= ӽCn=ֽx+=ֽL=pzսы)=ؽqw=@Խы)=ؽN=ؽqw=@Խqw=@ԽN=ؽdB=AԽN=ؽȕI= ؽdB=AԽdB=AԽȕI= ؽ>.=׽ޜ=׽G=fڽC=p=׽G=fڽ<=0#ڽC=p=׽C=p=׽<=0#ڽ(=ֽ<=0#ڽ&=pٽ(=ֽ(=ֽ&=pٽn=`ֽ&=pٽԋ;=ؽn=`ֽn=`ֽԋ;=ؽB&=pսԋ;=ؽL=pzսB&=pսB=@@ڽ9V=ڽ|=׽9V=ڽZ=P۽|=׽|=׽Z=P۽fSo(=׽Z=P۽d_=K۽fSo(=׽fSo(=׽d_=K۽.)=׽d_=K۽/Eb=0p۽.)=׽.)=׽/Eb=0p۽n*=׽/Eb=0p۽`=Z۽n*=׽n*=׽`=Z۽眾# =׽`=Z۽ݜ"[=P۽眾# =׽眾# =׽ݜ"[=P۽ޜ=׽ݜ"[=P۽?ӜY=ڽޜ=׽ޜ=׽?ӜY=ڽG=fڽDk=нBŠ=NýH@w=ϽBŠ=Nýw=%ýH@w=ϽH@w=Ͻw=%ý'M=`Ͻw=%ý9V= ý'M=`Ͻ'M=`Ͻ9V= ý63=Ͻ9V= ýȜ-=Pý63=Ͻ63=ϽȜ-=PýJޜ\=½ ѥ=pϽZtL=PϽ/7=P½ZtL=PϽw@-=PϽ/7=P½w@-=PϽ;/(=Ͻ/7=P½/7=P½;/(=Ͻ.=@½;/(=Ͻ 4=0Ͻ.=@½.=@½ 4=0Ͻ=p½ 4=0Ͻݜvӥ=Ͻ=p½=p½ݜvӥ=ϽJޜ\=½ݜvӥ=Ͻ֜ǥ=ϽJޜ\=½Jޜ\=½֜ǥ=Ͻ63=Ͻ/7=P½d=P½ ѥ=pϽd=P½\=½ ѥ=pϽ ѥ=pϽ\=½ꠝv=PϽ\=½(}.= ýꠝv=PϽꠝv=PϽ(}.= ý컝.=Ͻ(}.= ý¹̍=p ý컝.=Ͻ컝.=Ͻ¹̍=p ý#uw=%ýo=нiϝj$=?н)=ý)=ýiϝj$=?нѝ=Ѕýiϝj$=?нН㦣=Pнѝ=Ѕýѝ=ЅýН㦣=PнН:=sýН㦣=PнН7=@нН:=sýН:=sýН7=@нΝȠ=MýН7=@нѝ=@нΝȠ=MýΝȠ=Mýѝ=@н#uw=%ýѝ=@нŤ=Ͻ#uw=%ý#uw=%ýŤ=Ͻ컝.=Ͻ!=Ľɻf=pн󢝾<=pýɻf=pнo=н󢝾<=pý󢝾<=pýo=н=`ýo=н)=ý=`ýA=Ν=;Ľhe= нDvo=&Ľhe= н`=нDvo=&ĽDvo=&Ľ`=н!=Ľ`=н̡=н!=Ľ!=Ľ̡=нɻf=pнs0I=нB͜\=нݜ =pĽB͜\=нޜ= нݜ =pĽݜ =pĽޜ= н ٝ=7Ľޜ= н \=н ٝ=7Ľ ٝ=7Ľ \=н9/ ҝ=:Ľ \=н0/A=Pѽ9/ ҝ=:Ľ9/ ҝ=:Ľ0/A=PѽA=Ν=;Ľ0/A=Pѽ2?=0ѽA=Ν=;ĽA=Ν=;Ľ2?=0ѽhe= нݜ =pĽל(=0Ľs0I=нל(=0Ľ𮜾=ýs0I=нs0I=н𮜾=ý7q=н𮜾=ý6=pý7q=н7q=н6=pý= Iн6=pýspj=ý= Iн= Iнspj=ýDk=нspj=ýDR:=rýDk=нDk=нDR:=rýBŠ=Nýdʧ0h/b0ݤdʧ00ݤ0D*Ԩ@˯%h/b9u 0ݤ9u ap0ݤ0ݤapD*Ԩ@˯!ܬs0%!ܬs0bMG%%bMG:6:6#P%#P*~צ%%*~צ%(B*~צ-8B%(B%(B-8B%o-8B-A%o%o-A0.@0.@轿 .0%o罿 .0轹P%o%o罹P'}Pj'}PjeܬNR%oeܬNR载ԬN%o%o罽ԬNȟV=[>ci=ţ@@0ݤoci=ţ@@{9eR0ݤo{9eRP7`S0ݤo0ݤoP7`S Jpw竾30ݤ'B[@0ݤ'B0ݤo[@[@0ݤog0ݤo Jpgw竾3竾A@0ݤ'B竾A@竾)B@0ݤ'B0ݤ'B竾)B@0ݤ竾)B@<﫾 0ݤ0ݤ<﫾 03ڽ}ٽ%⢛ֽ3ڽ%⢛ֽܑ;ڽ}ٽܬ¾pUٽ%⢛ֽܬ¾pUٽŬ˚0 ٽ%⢛ֽ%⢛ֽŬ˚0 ٽێ՚ؽIY͚ٽF:ϾTٽ0ݤo۽F:ϾTٽk)vٽ0ݤo۽k)vٽڽ0ݤo۽0ݤo۽ڽY=ڽY=ڽ쫾|`ڽ0ݤo۽쫾|`ڽm竾o۽0ݤo۽0ݤo۽m竾o۽0ݤ"Tm竾o۽q𫾱kXܽ0ݤ"T0ݤ"Tq𫾱kXܽOpܽOpܽ_ 7tݽ0ݤ"T_ 7tݽ2‚0ݽ0ݤ"T0ݤ"T2‚0ݽ9Xݽ9Xݽe0޽0ݤ"Te0޽d ޽0ݤ"T0ݤ"Td ޽޽޽Ь6ݽ%"TགྷЬ6ݽ3ܬw@ݽ%"T3ܬw@ݽy0Zݽ%"Ty0Zݽoܽ%"T%"ToܽmЧܽmЧܽ-{l۽%"T-{l۽,qq۽%"T%"T,qq۽%o۽,qq۽,vq۽%o۽%o۽,vq۽%⢛ֽ,vq۽+ypڽ%⢛ֽ%⢛ֽ+ypڽܑ;ڽ޽%"T0ݤ"T%"T%ՠ0ݤ"T0ݤ"T%ՠ0ݤԠ%ՠ%o0ݤԠ0ݤԠ%o0ݤo%oȟV=0ݤo0ݤoȟV=[>D*Ԩ@%0ݤ%%Eq0ݤ0ݤ%Eq0ݤEq%Eq%!00ݤEq0ݤEq%!00ݤ 0%!0%Hc@ܽ0ݤ 00ݤ 0%Hc@ܽ0ݤGc@ܽ%Hc@ܽ%6P׽0ݤGc@ܽ0ݤGc@ܽ%6P׽0ݤ5P׽%6P׽%-2ӽ0ݤ5P׽0ݤ5P׽%-2ӽ0ݤ,2ӽ%-2ӽ%RJPн0ݤ,2ӽ0ݤ,2ӽ%RJPн0ݤQJPн%RJPн%ڐ Ͻ0ݤQJPн0ݤQJPн%ڐ Ͻ0ݤِ Ͻ%ڐ Ͻ%齢0bн0ݤِ Ͻ0ݤِ Ͻ%齢0bн0ݤ轢0bн%齢0bн%0ҽ0ݤ轢0bн0ݤ轢0bн%0ҽ0ݤ~0ҽ%0ҽ%⢛ֽ0ݤ~0ҽ0ݤ~0ҽ%⢛ֽ0ݤᢛֽ%⢛ֽێ՚ؽ0ݤᢛֽ0ݤᢛֽێ՚ؽ0ݤo۽ێ՚ؽY;՚ؽ0ݤo۽0ݤo۽Y;՚ؽIY͚ٽ%o۽%~p?޽%"T%~p?޽%vv%"T%"T%vv%ՠ%vv%g%ՠ%ՠ%g%o%ڐ Ͻ% ;0ƽ%齢0bн% ;0ƽ%;&Ƚ%齢0bн%齢0bн%;&Ƚ%0ҽ%;&Ƚ%̽%0ҽ%0ҽ%̽%⢛ֽ%̽%n ѽ%⢛ֽ%⢛ֽ%n ѽ%o۽%n ѽ%[ؑ׽%o۽%o۽%[ؑ׽%~p?޽%g%L31%o%L31%] p%o%o%] p%(B%] p%e%(B%(B%e%%e%е%%%е%Eq%6P׽%Jн%-2ӽ%Jн%X.`̽%-2ӽ%-2ӽ%X.`̽%RJPн%X.`̽%ίȽ%RJPн%RJPн%ίȽ%ڐ Ͻ%ίȽ%Pƽ%ڐ Ͻ%ڐ Ͻ%Pƽ% ;0ƽ%е%k%Eq%k%x/%Eq%Eq%x/%!0%x/%%!0%!0%%Hc@ܽ%%bHݽ%Hc@ܽ%Hc@ܽ%bHݽ%6P׽%bHݽ%ûֽ%6P׽%6P׽%ûֽ%JнY9ûֽ%bHݽY9bHݽ%bHݽ%Y9bHݽY9bHݽ%Y9%%x/Y9Y9%x/Y9w/%x/%kY9w/Y9w/%kY9k%k%еY9kY9k%еY9ϵ%е%eY9ϵY9ϵ%eY9e%e%] pY9eY9e%] pY9\ p%] p%L31Y9\ pY9\ p%L31Y9K31%L31%gY9K31Y9K31%gY9g%g%vvY9gY9g%vvY9uv%vv%~p?޽Y9uvY9uv%~p?޽Y9}p?޽%~p?޽%[ؑ׽Y9}p?޽Y9}p?޽%[ؑ׽Y9Zؑ׽%[ؑ׽%n ѽY9Zؑ׽Y9Zؑ׽%n ѽY9m ѽ%n ѽ%̽Y9m ѽY9m ѽ%̽Y9~̽%̽%;&ȽY9~̽Y9~̽%;&ȽY9:&Ƚ%;&Ƚ% ;0ƽY9:&ȽY9:&Ƚ% ;0ƽY9 ;0ƽ% ;0ƽ%PƽY9 ;0ƽY9 ;0ƽ%PƽY9Pƽ%Pƽ%ίȽY9PƽY9Pƽ%ίȽY9ίȽ%ίȽ%X.`̽Y9ίȽY9ίȽ%X.`̽Y9W.`̽%X.`̽%JнY9W.`̽Y9W.`̽%JнY9Jн%Jн%ûֽY9JнY9Jн%ûֽY9ûֽ%ûֽ%bHݽY9ûֽY9PƽY9 ½Y9 ;0ƽY9 ½Y9PýY9 ;0ƽY9 ;0ƽY9PýY9:&ȽY9PýY9C`ƽY9:&ȽY9:&ȽY9C`ƽY9~̽Y9C`ƽY9.퓽ʽY9~̽Y9~̽Y9.퓽ʽY9m ѽY9.퓽ʽY9RнY9m ѽY9m ѽY9RнY9Zؑ׽Y9RнY9čZ׽Y9Zؑ׽Y9Zؑ׽Y9čZ׽Y9}p?޽Y9čZ׽Y9$gPP޽Y9}p?޽Y9}p?޽Y9$gPP޽Y9uvY9$gPP޽Y9Y9uvY9uvY9Y9gY9Y9X< AY9gY9gY9X< AY9K31Y9X< AY9/EY9K31Y9K31Y9/EY9\ pY9/EY9Y9\ pY9Y9ԣY9\ pY9\ pY9ԣY9eY9ԣY9JͪpvY9eY9eY9JͪpvY9ϵY9JͪpvY9{yY9ϵY9ϵY9{yY9kY9{yY9aY9kY9kY9aY9w/Y9aY9,pY9w/Y9w/Y9,pY9Y9,pY9*XY9Y9Y9*XY9bHݽY9*XY9zݽY9bHݽY9bHݽY9zݽY9ûֽY9zݽY9㿽`ֽY9ûֽY9ûֽY9㿽`ֽY9JнY9㿽`ֽY9spнY9JнY9JнY9spнY9W.`̽Y9spнY9-WcʽY9W.`̽Y9W.`̽Y9-WcʽY9ίȽY9-WcʽY9ܳƽY9ίȽY9ίȽY9ܳƽY9PƽY9ܳƽY9lfýY9PƽY9PƽY9lfýY9 ½)զo *0Y9JͪpvY9ԣ&7YMYM+ pY9ԣ+ p/Y9ԣY9ԣ/Y9Jͪpv/%jPY9JͪpvY9Jͪpv%jP)զo *0y⬾ٽY9Jͪpvy⬾ٽܬ9ǧY9JͪpvY9Jͪpvܬ9ǧjл'q`x0lJͪpvx0Dz᧽нlJͪpvlJͪpvDz᧽нD:uŧD:uŧl>bplJͪpvl>bp֦lJͪpvlJͪpv֦]@]@k諾ڥlJͪpvk諾ڥu髾lJͪpvlJͪpvu髾lԣu髾뫾0lԣlԣ뫾0<6M<6Ma6lԣa6ԣ`lԣlԣԣ`lԣ`7%ll7%t:e0t:e0wU){lwU){G$vllG$vpvpv*|Y9*|ܬe Y9ܬe 񬾀Y9Y9񬾀Y9ԣ񬾀ԣ`Y9ԣY9ԣԣ`&7ٝUpIؽmҬ`ЅؽY9čZ׽mҬ`ЅؽDܬؽY9čZ׽DܬؽٽY9čZ׽ٽBrٽY9čZ׽Y9čZ׽Brٽmٽmٽ. ]ڽY9čZ׽. ]ڽ-YڽY9čZ׽Y9čZ׽-YڽY9$gPP޽-Yڽ*Rd۽Y9$gPP޽Y9$gPP޽*Rd۽L=P0ܽL=P0ܽO0/ܽY9$gPP޽O0/ܽQRܽY9$gPP޽Y9$gPP޽QRܽܬSݽܬSݽU=ݽY9$gPP޽U=ݽAaWaݽY9$gPP޽Y9$gPP޽AaWaݽʊeW0bݽpvY9lY9Y9/EllY9/El/EY9/EY9X< A뽌l/El/EY9X< A뽌lX< AY9X< AY9彌lX< A뽌lX< AY9彌lY9Y9$gPP޽l彌lY9$gPP޽l$gPP޽Y9$gPP޽ʊeW0bݽl$gPP޽l$gPP޽ʊeW0bݽTU<ݽTU<ݽs:Sݽl$gPP޽s:Sݽ$R ܽl$gPP޽l$gPP޽$R ܽbO-ܽbO-ܽ19PPܽl$gPP޽19PPܽk뫾Ra۽l$gPP޽l$gPP޽k뫾Ra۽lčZ׽k뫾Ra۽m竾XڽlčZ׽m竾Xڽg ٽlčZ׽lčZ׽g ٽ_urٽ_urٽ z:ٽlčZ׽ z:ٽ4h0ؽlčZ׽lčZ׽4h0ؽ9ؽ9ؽf`UؽlčZ׽f`UؽapMؽlčZ׽lčZ׽apMؽٝUpIؽٝUpIؽY9čZ׽lčZ׽Y9čZ׽Y9RнlčZ׽lčZ׽Y9RнlRнY9RнY9.퓽ʽlRнlRнY9.퓽ʽl.퓽ʽY9.퓽ʽY9C`ƽl.퓽ʽl.퓽ʽY9C`ƽlC`ƽY9C`ƽY9PýlC`ƽlC`ƽY9PýlPýY9PýY9 ½lPýlPýY9 ½l ½Y9 ½Y9lfýl ½l ½Y9lfýllfýY9lfýY9ܳƽllfýllfýY9ܳƽlܳƽY9ܳƽY9-WcʽlܳƽlܳƽY9-Wcʽl-WcʽY9-WcʽY9spнl-Wcʽl-WcʽY9spнlspнY9spнY9㿽`ֽlspнlspнY9㿽`ֽl㿽`ֽY9㿽`ֽY9zݽl㿽`ֽl㿽`ֽY9zݽlzݽY9zݽY9*X佌lzݽlzݽY9*X佌l*XY9*XY9,p꽌l*X佌l*XY9,p꽌l,pY9,pY9all,p꽌l,pY9allaY9aY9{ylallaY9{yl{yY9{yY9Jͪpvl{yl{yY9JͪpvlJͪpvY9JͪpvjлlJͪpvlJͪpvjл'q`l㿽`ֽ0ݤ,浽ؽlspн0ݤ,浽ؽ0ݤo`Խlspнlspн0ݤo`Խl-Wcʽ0ݤo`Խ0ݤѽl-Wcʽl-Wcʽ0ݤѽlܳƽ0ݤѽ0ݤîνlܳƽlܳƽ0ݤîνllfý0ݤîν0ݤѪ Nͽllfýllfý0ݤѪ Nͽl ½0ݤѪ Nͽ0ݤΪ@̽l ½l ½0ݤΪ@̽lPý0ݤΪ@̽0ݤboͽlPýlPý0ݤboͽlC`ƽ0ݤboͽ0ݤ0*ϽlC`ƽlC`ƽ0ݤ0*Ͻl.퓽ʽ0ݤ0*Ͻ0ݤO ѽl.퓽ʽl.퓽ʽ0ݤO ѽlRн0ݤO ѽ0ݤ)OսlRнlRн0ݤ)OսlčZ׽0ݤ)Oս0ݤRӗPFٽlčZ׽lčZ׽0ݤRӗPFٽl$gPP޽0ݤRӗPFٽ0ݤIsݽl$gPP޽l$gPP޽0ݤIsݽl0ݤIsݽ0ݤ؅Ὄl彌l0ݤ؅ὌlX< A0ݤ؅0ݤp7彌lX< A뽌lX< A0ݤp7彌l/E0ݤp70ݤhP:轌l/El/E0ݤhP:轌l0ݤhP:0ݤX꽌ll0ݤX꽌lԣ0ݤX0ݤAph뽌lԣlԣ0ݤAph뽌lJͪpv0ݤAph0ݤ>pW뽌lJͪpvlJͪpv0ݤ>pW뽌l{y0ݤ>pW0ݤcA&꽌l{yl{y0ݤcA&꽌la0ݤcA&0ݤ\˰ 罌lalla0ݤ\˰ 罌l,p0ݤ\˰ 0ݤ佌l,p꽌l,p0ݤ佌l*X0ݤ0ݤ%wpὌl*X佌l*X0ݤ%wpὌlzݽ0ݤ%wp0ݤF@ܽlzݽlzݽ0ݤF@ܽl㿽`ֽ0ݤF@ܽ0ݤ,浽ؽl㿽`ֽ0ݤo۽0ݤRӗPFٽ0ݤᢛֽ0ݤRӗPFٽ0ݤ)Oս0ݤᢛֽ0ݤᢛֽ0ݤ)Oս0ݤ~0ҽ0ݤo0ݤhP:0ݤԠ0ݤhP:0ݤp70ݤԠ0ݤԠ0ݤp70ݤ"T0ݤp70ݤ؅0ݤ"T0ݤ"T0ݤ؅0ݤo۽0ݤ؅0ݤIsݽ0ݤo۽0ݤo۽0ݤIsݽ0ݤRӗPFٽ0ݤ)Oս0ݤO ѽ0ݤ~0ҽ0ݤO ѽ0ݤ0*Ͻ0ݤ~0ҽ0ݤ~0ҽ0ݤ0*Ͻ0ݤ轢0bн0ݤ0*Ͻ0ݤboͽ0ݤ轢0bн0ݤ轢0bн0ݤboͽ0ݤِ Ͻ0ݤboͽ0ݤΪ@̽0ݤِ Ͻ0ݤΪ@̽0ݤѪ Nͽ0ݤِ Ͻ0ݤِ Ͻ0ݤѪ Nͽ0ݤQJPн0ݤѪ Nͽ0ݤîν0ݤQJPн0ݤQJPн0ݤîν0ݤ,2ӽ0ݤ0ݤ>pW0ݤ'B0ݤ>pW0ݤAph0ݤ'B0ݤ'B0ݤAph0ݤo0ݤAph0ݤX0ݤo0ݤo0ݤX0ݤhP:0ݤ 00ݤ0ݤEq0ݤ0ݤ\˰ 0ݤEq0ݤEq0ݤ\˰ 0ݤ0ݤ\˰ 0ݤcA&0ݤ0ݤ0ݤcA&0ݤ>pW0ݤîν0ݤѽ0ݤ,2ӽ0ݤѽ0ݤo`Խ0ݤ,2ӽ0ݤ,2ӽ0ݤo`Խ0ݤ5P׽0ݤo`Խ0ݤ,浽ؽ0ݤ5P׽0ݤ5P׽0ݤ,浽ؽ0ݤGc@ܽ0ݤ,浽ؽ0ݤF@ܽ0ݤGc@ܽ0ݤGc@ܽ0ݤF@ܽ0ݤ 00ݤF@ܽ0ݤ%wp0ݤ 00ݤ 00ݤ%wp0ݤ竾)B@竾A@u髾ܬ9ǧy⬾ٽ:6y⬾ٽo *0:6:6o *0#Po *0)զ#P#P)զ*~צ*~צ)զ-8B)զ%jP-8B-8B%jP-A%jP/-A-A/0.@/+ p0.@0.@+ p .0+ pYM .0轿 .0YMPYM&7P&7ԣ`P轹Pԣ`'}Pjԣ`񬾀'}Pj'}Pj轘񬾀eܬNR轘񬾀ܬe eܬNRܬe *|eܬNReܬNR轻*|ԬN轻*|pvԬN Jpt:e07%a6<6Mg Jp7%g7%ԣ`gg轎ԣ`a6 JpP7`St:e0P7`S{9eRt:e0t:e0{9eRwU){{9eRci=ţ@@wU){wU){ci=ţ@@G$vci=ţ@@[>G$vG$v[>轾pv[>ȟV=轾pvpvȟV=载ԬNu髾竾A@轚뫾0竾A@w竾3轚뫾0뫾0w竾3<6Mw竾3[@<6M<6M[@gD:uŧdʧ0l>bpdʧ00l>bpl>bp0轳֦0<﫾 轳֦֦<﫾 轗]@<﫾 竾)B@轗]@]@竾)B@k諾ڥ竾)B@u髾k諾ڥ:6bMGܬ9ǧbMG!ܬs0ܬ9ǧܬ9ǧ!ܬs0轏jл!ܬs0˯轏jлjл˯'q`˯D*Ԩ@'q`'q`D*Ԩ@轰x0D*Ԩ@ap轰x0x0apDz᧽нap9u Dz᧽нDz᧽н9u D:uŧ9u h/bD:uŧD:uŧh/bdʧ0m竾o۽k뫾Ra۽q𫾱kXܽk뫾Ra۽19PPܽq𫾱kXܽq𫾱kXܽ19PPܽOpܽ19PPܽbO-ܽOpܽOpܽbO-ܽ_ 7tݽbO-ܽ$R ܽ_ 7tݽ_ 7tݽ$R ܽs:Sݽ3ܬw@ݽЬ6ݽAaWaݽЬ6ݽ޽AaWaݽ޽d ޽AaWaݽAaWaݽd ޽ʊeW0bݽd ޽e0޽ʊeW0bݽʊeW0bݽe0޽TU<ݽe0޽9XݽTU<ݽTU<ݽ9Xݽs:Sݽ9Xݽ2‚0ݽs:Sݽs:Sݽ2‚0ݽ_ 7tݽAaWaݽU=ݽ3ܬw@ݽU=ݽܬSݽ3ܬw@ݽ3ܬw@ݽܬSݽy0ZݽܬSݽQRܽy0Zݽy0ZݽQRܽoܽQRܽO0/ܽoܽoܽO0/ܽL=P0ܑܽ;ڽ+ypڽmٽmٽ+ypڽ. ]ڽ+ypڽ,vq۽. ]ڽ. ]ڽ,vq۽-Yڽ,vq۽,qq۽-Yڽ-Yڽ,qq۽*Rd۽,qq۽-{l۽*Rd۽*Rd۽-{l۽L=P0ܽ-{l۽mЧܽL=P0ܽL=P0ܽmЧܽoܽDܬؽ3ڽٽ3ڽܑ;ڽٽٽܑ;ڽBrٽܑ;ڽmٽBrٽٝUpIؽŬ˚0 ٽmҬ`ЅؽŬ˚0 ٽܬ¾pUٽmҬ`ЅؽmҬ`Ѕؽܬ¾pUٽDܬؽܬ¾pUٽ}ٽDܬؽDܬؽ}ٽ3ڽڽk)vٽ9ؽk)vٽF:ϾTٽ9ؽ9ؽF:ϾTٽf`UؽF:ϾTٽIY͚ٽf`Uؽf`UؽIY͚ٽapMؽIY͚ٽY;՚ؽapMؽapMؽY;՚ؽٝUpIؽY;՚ؽێ՚ؽٝUpIؽٝUpIؽێ՚ؽŬ˚0 ٽ9ؽ4h0ؽڽ4h0ؽ z:ٽڽڽ z:ٽY=ڽ z:ٽ_urٽY=ڽY=ڽ_urٽ쫾|`ڽ_urٽg ٽ쫾|`ڽ쫾|`ڽg ٽm竾o۽g ٽm竾Xڽm竾o۽m竾o۽m竾Xڽk뫾Ra۽DATA T9DATAE:..edge_verts`UT2.select_edge b9TDATAf`Uu   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}   $&$%()020145<><=@AHJHILMTVTUXY`b`adelnlmpqxzxy|}     " !$%,.,-018:89<=DFDEHIPRPQTU\^\]`ahjhilmtvtuxy  !(*(),-464589@B@ADELNLMPQXZXY\]dfdehiprpqtu|~|}              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }          " ! $ % , . , - 0 1 8 : 8 9 < = D F D E H I P R P Q T U \ ^ \ ] ` a h j h i l m t v t u x y                ! ( * ( ) , - 4 6 4 5 8 9 @ B @ A D E L N L M P Q X Z X Y \ ] d f d e h i p r p q t u | ~ | }              $ & $ % ( ) 0 2 0 1 4 5 < > < = @ A H J H I L M T V T U X Y ` b ` a d e l n l m p q x z x y | }  !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~     !#!"%&-/-.129;9:=>EGEFIJQSQRUV]_]^abikijmnuwuvyz  !")+)*-.57569:ACABEFMOMNQRY[YZ]^egefijqsqruv}}~  %'%&)*131256=?=>ABIKIJMNUWUVYZacabefmomnqry{yz}~         ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z               ! " ) + ) * - . 5 7 5 6 9 : A C A B E F M O M N Q R Y [ Y Z ] ^ e g e f i j q s q r u v }  } ~                 % ' % & ) * 1 3 1 2 5 6 = ? = > A B I K I J M N U W U V Y Z a c a b e f m o m n q r y { y z } ~          ! # ! " % & - / - . 1 2 9 ; 9 : = > E G E F I J Q S Q R U V ] _ ] ^ a b i k i j m n u w u v y z   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{   "#*,*+./6867:;BDBCFGNPNORSZ\Z[^_fhfgjkrtrsvw~~&(&'*+242367>@>?BCJLJKNOVXVWZ[bdbcfgnpnorsz|z{~    "$"#&'.0./23:<:;>?FHFGJKRTRSVW^`^_bcjljknovxvwz{             " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~                    & ( & ' * + 2 4 2 3 6 7 > @ > ? B C J L J K N O V X V W Z [ b d b c f g n p n o r s z | z { ~            " $ " # & ' . 0 . / 2 3 : < : ; > ? F H F G J K R T R S V W ^ ` ^ _ b c j l j k n o v x v w z {              " # * , * + . / 6 8 6 7 : ; B D B C F G N P N O R S Z \ Z [ ^ _ f h f g j k r t r s v w ~ ~   ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx ')'(+,353478?A?@CDKMKLOPWYWX[\cecdghoqopst{}{|    #%#$'(/1/034;=;<?@GIGHKLSUSTWX_a_`cdkmklopwywx{|   ! #$+-+,/07978;<CECDGHOQOPST[][\_`gighklsustwx                 ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |             # % # $ ' ( / 1 / 0 3 4 ; = ; < ? @ G I G H K L S U S T W X _ a _ ` c d k m k l o p w y w x { |           !  # $ + - + , / 0 7 9 7 8 ; < C E C D G H O Q O P S T [ ] [ \ _ ` g i g h k l s u s t w x                    ' ) ' ( + , 3 5 3 4 7 8 ? A ? @ C D K M K L O P W Y W X [ \ c e c d g h o q o p s t { } { |  DATA b9DATAhM< .corner_vert X8XT .corner_edge UT) UTDATA3 X8L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  DATA3 UL 0  a `2b13  d c5e46  g f8h7 9 j i;k: <  m l>n=?  p oAq@B  s rDtCE  v uGwFH  y xJzIK  | {M}LN  ~PO"Q! #  SR%T$ &  VU(W' )  YX+Z* ,  \[.]- /  _^1`0 2  ba4c3 5  ed7f6 8  hg:i9 ;  kj=l< >  nm@o? A  qpCrB D  tsFuE G  wvIxH J  zyL{K M  }|O~N P  RQ S  UT V  XW Y  [Z \  ^] _  a` b  dc e  gf h  ji k  ml n  po q  sr t  vu w  yx z  |{ }  ~                  ! " $ # % ' & ( * ) + - , . 0 / 1 3 2 4 6 5 7 9 8 :  < ; =  ? > @ B A C E D F H G I K J L N M O Q P !R "T S $U #%W V 'X &(Z Y *[ )+] \ -^ ,.` _ 0a /1c b 3d 24f e 6g 57i h 9j 8 :  l k <m ; = o n ?p >@r q Bs ACu t Ev DFx w Hy GI{ z K| JL~ } N MO  Q P"R!# T S%U$& W V(X') Z Y+[*, ] \.^-/  ` _1a02  c b4d35  f e7g6 8  i h:j9 ;   l k=m<>  o n@p?A  r qCsBD  u tFvEG  x wIyHJ  { zL|KM  ~ }ON!P  "  RQ$S# %  UT'V& (  XW*Y) +  [Z-\, .  ^]0_/ 1  a`3b2 4  dc6e5 7  gf9h8 :  ji<k; =  ml?n> @  poBqA C  srEtD F  vuHwG I  yxKzJ L  |{N}M O  ~QP R  TS U  WV X  ZY [  ]\ ^  `_ a  cb d  fe g  ih j  lk m  on p  rq s  ut v  xw y  {z |  ~}                    ! # " $ & % ' ) ( * , + - / . 0 2 1 3 5 4 6 8 7 9  ; : <  > = ? A @ B D C E G F H J I K M L N P O Q !S R #T "$V U &W %'Y X )Z (*\ [ ,] +-_ ^ /` .0b a 2c 13e d 5f 46h g 8i 7 9 k j ;l : <  n m >o =?q p Ar @Bt s Du CEw v Gx FHz y J{ IK} | M~ LN  P O!Q "  S R$T#%  V U'W&(  Y X*Z)+  \ [-],.  _ ^0`/1  b a3c24  e d6f57  h g9i8 :   k j<l;=   n m?o>@  q pBrAC  t sEuDF  w vHxGI  z yK{JL  } |N~M O !  QP#R" $  TS&U% '  WV)X( *  ZY,[+ -  ]\/^. 0  `_2a1 3  cb5d4 6  fe8g7 9  ih;j: <  lk>m= ?  onAp@ B  rqDsC E  utGvF H  xwJyI K  {zM|L N  ~}PO Q  SR T  VU W  YX Z  \[ ]  _^ `  ba c  ed f  hg i  kj l  nm o  qp r  ts u  wv x  zy {  }| ~                    " ! # % $ & ( ' ) + * , . - / 1 0  2  4 3  5   7 6  8   : 9 ;  = < >  @ ?  A   C B  D   F E  G   I H  J   L K  M   O N  P   R Q " S ! # U T % V $ & X W ( Y ' ) [ Z + \ * , ^ ] . _ - / a ` 1 b 0 2 d c 4 e 3 5 g f 7 h 6 8  j i : k 9 ;  m l = n < > p o @ q ? A s r C t B D v u F w E G y x I z H J | { L } K M  ~ O N P !  R Q #S "$  U T &V %'  X W )Y (*  [ Z ,\ +-  ^ ] /_ .0  a ` 2b 13  d c 5e 46  g f 8h 7 9   j i ;k : <   m l >n =?  p o Aq @B  s r Dt CE  v u Gw FH  y x Jz IK  | { M} LN   ~ P O"Q! # S R%T$ & V U(W' ) Y X+Z* , \ [.]- / _ ^DATA3 Us {5[*ox8_\_7 cp,.),'P;7^L;YXN3^9x^K1 .xr(hF*n($6YBu*r(2!3&&ZCW th2}A8',&6]`%[$[۲Nؠt ZbNgj(Y+Yiά_$bWnXa$)33!XQX@W0< V\5Lt$P F6#FfZ(ǪU#vf*ۆ.m9u sq Jgp !>ܡy1>>;eg I;B ZAj1'r%[C&7'ˋšX[+2'\2wRZZ&3GZ.vY0}.YP[RPR-5DR0B ]HE22-.L /Dp( (t=2F$1-'ϧ,'ќAD`>h*ޣL߮_'[DD"P}_\LWT__oT. &PY!, ,$Y*,0z5F*hZ(0(/ ˝ U}&nG%e2x˴ĊE?k1>"\K\ʤb %` +? }V  S <Ҫ6  ш1 n$m W6 K9q  E}] Y H . ˫ = o |d ? !~U \ T = ͫ D v ~W Q : \ t Ϋ}[ K L 2 4 q   9 7 x4m1 MaU=W\)\Nj(rT‰wUrr㭉wÉwˤrxrcrxxԥr}wuKrbxnrrxsxr´xrr!x<Ĵx^r#yrr^yyRr=ǹjrYvjqιjYvrŬrav`}wbvr}wc|wrsq rrtqtqr:XwrBrݮWwWwrnuurxr'r3xkxrJøx*rr^x*Ÿxru[ruvuuuvrrjv uViv_r^uu֡r\x rUrlxaxZrüxkrrxƼxrurpvuupv)r.~ pmʙW` `!ʟܟE[ [$ʡ͟@ 9ͥğBq qʦ[b  bʧH[  [$ʟ@ - - 1͂GLu_ p_ uʊ)_dm l k=TϺ˫}9 ͱ{Mf-./N+^"'^z_3Qb͉ꟹ2ܞMAGٳ5 TJDL2<VV2؍0V {0zæ鴰CS@@C,$3YڵN HXBZ- 4JZi /4 -^ݥ() x (L(*:y90ި[0kCxWQ,'4t%ү*Fd3*׿BB),T+*^A{  <.BSSQ7# -R{;V[ /P G,88f) _w 0}6:G ȿ _ .`9 FK G_3 GK \`,ص FJ ͒9Y {<lY2D-;AnmhEh@TDŮ?ܛHjmGF`uGF\`' &ܬ3{_P3CiD'TNXPN0AҢ xaBѢA"5B҆ooαmnP̵l|65${%븵 $U ? CZZ _! PGK ` [FJ ` aGK ` dFK `lGK` FJ !`< ؿGK ;`6 GK R`/ FJ g`+͵ 'GK y`& :FJ `# JFK `  VFK ` _FK ` GK 7 ̭ 2?,䄃:5 v4 /4:5 t4 Ο 74:5Zx4Z34:5 {4 -4:5 r4 Τ "4:5c4c+74:5 4 .4:5 s4 Ϋ 4:5q4qL<4:5 2 .2`4 uX- ζ X-f},/ж4ԅ|Bw4:5" 4" 14:5 y4 .4:5 s*5 ΢ .*5E5 ^" ^5"Ⱦq" ~]/ -]/G/ȯ r4 Χ 4:5i4i:94:5 4 .4:5 t4 ΰ 4:5z4zd?4:5 4 /4t67|677ƪ|̚|§ 7EP}{G87}-87}27 }}L17}277}K}$7 tq7:tt:67<7/:rQ}0:87P}O}97ÿ}-77H(7}})7bN}'7U@:&P}A:87O}O}87}87/7}h}ҡ/7uN}bF}97ؾt87 +7tt7,7lŷ{ ,7;G:y{(ҷ{H:L87ڥR}67}u77}$7&}Z}%7VF}b$7m9:ϮF}\F}9:o87P/7K:ɬM}CK:77M}XM}w77}77)47}}Ҡ47}477m}o}7-Q}=7%: Q}Q}%:c77jهiZAf%ʞW;\CV0vWyYο&_)X Ch#Wg:\UhFhΩ9pw)ӓz=^zd8Х])ĆzȯZ`BLzU^֥y,L}{"y lZزx-Jj j0Jf-GK+SePe:T`s֒SW^cCLWcֲ?2.``g?c*@A]vb™aw®PRmNWuO:MWՀF#wOP&H:EqF>3?HqS,H?=G['@?9K<,Œ;:1H;ª;tHEkFWjJ,2Kڑ)z07U-Х*ͻV-)!/+^-$]9!ߺ;)e#8AռPՁd:Dd/?'zjpKXlKcOEPKF@'uEԒtݦ)*Jqӌ<$"@ȽCGۏFޱBsC[AҧrB9DCU8v8-W>Vثlҭ!9ļ7kYOp 'zQ|Yd1(ɡcpJ$?'EIT~GIb5=hEGGhPiB}MO龪Pg}ӿ|m}| }@|Ī}~1VB`}Նj21WWϧh}>Zh%֫oԩ?WB0:n)׽Zq *"s] V.bHaX~;U: aпhZa~J^Zcfu>/(BOX4`.g30LX~+4XdG,ky,[e]5ԾF#͕F;!"ƚ !ܷ )@!@WvȂێʻٝ e^ϓhf5Crc1i@>)wE?ܡ{1>>;%X ;a:ar 8j1'o %UB&7)ˉȡY[EI\z VZf'3EZnY0~YP`RPV-8@R0 B `HE22*.I /Gm, 'tA2F$1,'ϧ,'ѝAE`>e*L_(ԒDD,P}_'L^ɏT_ _T: &NW", ,+T*,/v2G*iY(2(/ T{&$q/F%e2y^w]Ec?>k=/C"]K\Ȥb %` *> ~V  S <Ҫ5  ъ, n!%mV5 M8p  F}] X H - ˫ = o |d ? !}U [ T = ͫ E v |W R : ] t Ϋ}[ K L 3 4 q ߧ  : 7 w4m1 5֒,P)B*ޘ--x65aWL^#s~h#֯It-k.(^/"c1 *_ +mch u?|o"ghƂGepaɱiadCByKa`HKQ JJմ2稣Z2M" e>̀'~ t=t@5ڽɾ5HZYYYY<`>i=UϾ˫z9 ͱ{Mb0>/N^#.^x_)Ybͅ2; 9 rZJG۳. TDDI2EVQ2:V {1yàCİJ@.@C,($3YڵJ HgXFZ1 ^JZi // -_ݦ(* o 2L((:x90ި\0iEQ\ Q,'4u%Ӯ*Gb5*BBt).e+*^Ay % .BӮSSQ7" .R{;V] / /;;Q) _w 0}6:G ȿ _ .`8 FJ G`3 GK ]`-׵ GK ͒:X |<l[=D";Ammh E h@UDŭ?ܜHjqGF^rGF\_' !ܫ3zaP3ChD)SNZQN1AТ{bBѤA5BҊooήmݴnṞl65$~%븵 %R > CZZ `! PFK ` [FJ ` aGK ` dFK `lGK` GK !`< ؿFK ;`5 FK R`0 GK g`+͵ 'GK y`& :GK `" JFJ `  VGK ` _FJ ` GK 7 ͭ 2c@@\:5 v4 .4:5 t4 Π 74:5Zx4Z34:5 {4 -4:5 s4 Τ "4:5c4c+74:5 4 -4:5 r4 ά 4:5q4qL<4:5 2 /2`4 uW- ζ W-f},/Ѷ4ԅzBw4:5" 4" 14:5 x4 -4:5 s*5 ΢ .*5E5 ^" ^4"Ⱦq" ~]/ .]/F/ȯ r4 Χ 4:5i4i;94:5 4 .4:5 s4 ΰ 4:5z4zc?4:5 4 04t67|67 7ƪ|̚|§ 7EP}{G97}-87}17 }}L17}277}K}%7 tr7:tt:67< 70:rP}0:87P}P}87¿}-87H(7}}(7bO}(7UA:&O}A:87O}O}87}87/7}h}ҡ/7uN}cF}87پt87 ,7tt7,7lŷ{,7;G:y{(ҷ{G:L87ڥQ}87}u77}$7&}Z}$7VF}b$7m9:ϮF}\F}::o87P/7L:ɬM}CL:77N}XM}v77}77)47}}Ӡ47}377m}o}7-P}=7%: Q}Q}%:c77)ln`c{zA\%ʕW9\CV0wWxYο&_(XCh$Wh:_ThFhЩ9pw*Ӗz=\zf8Ц])>|^B{#^֤y,M}{"y lXدx,Jj j2Jf.HK,SePe7T`q֟SWZcCFWdְ?30``i?c*@>]ub™aw­PQlHW vO=IW}F&vOP)H:EoF<3? HpS,E?=GZ'C?9K<,Œ;95H;©;sGEkFXlJ,2Jچ) 07V-ӥ*λU-)!.+_-"^=!߳;;1f67յcd:Dd)?(zjpK^lKiOFOKFB'tEԏtܦ)*Hqӎ<$!@ɽCFیF޲BxCYAҧrB9DC~U8w8,W>Vتlѭ!9ļ7kYOp )zQzYd/(ɝcpJ$;'GIT~HI9Es~[`C*k?Bauaݿ& bU#25!<"k$56!6& 8P%n،5YKP*J%\K4*@mzqKr;kIڿJz2;S:mԫb5>hDGGhPiB}OO辨Pg}ӿ|nS~!Q~v{@|Ī}~2VAa}Յj13WWϧh|>[h&֫oө?VB-:n+Zs*"q] VBbSaYv;U9 aѿiZ a}JiZcfl>/!BQX1b.i=0AX+8XdI,i|,\e]5ԾF$͖F9!&Ț "ܺ (C!BUuȄۍʺÝ e_ϕh)f5Crc1i?>)pEIADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~ ME CHMEconeF@I-0 *`H: I: J:O< @1x1 #< #< #<A=sDATA@I-T<DATA`H:0position CT2 .select_vertLTDATA Cwq 8Wj;o 2)IA 1AI);q 8Wj;o 2AI)#I> 1q 8Wj;o 2 I֣AI)q 8Wj;o 2cI^绺 I֣q 8Wj;o 2ףI cI^q 8Wj;o 2)IAףI q 8Wj;o 2]1I#)IAq 8Wj;o 2);IA]1I#q 8Wj;o 2ף;I );IAq 8Wj;o 2q;IZף;I q 8Wj;o 2 1P!1I"1#I> 1AI)P!1I"1AI) I֣P!1I"1 I֣cI^P!1I"1cI^ףI P!1I"1ףI )IAP!1I"1)IA]1I#P!1I"1]1I#);IAP!1I"1);IAף;I P!1I"1ף;I q;IZP!1I"1q;IZ <==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~DATALDATAhO< .corner_vert"JT .corner_edge %JT)'JTDATA@"JL  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA@ %JL   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~DATA@'Js~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & ~Z & DATAJ:2.select_polyp`LXT2sharp_face`LTDATA0p`LDATA0`LDATA * !$'*-0369<?BEHKNQTWZ]`cfilorux{~WO`C<WOWorldGrcP=rcP=rcP=?? @A A? Ai>>?????> >J?DDATA  >JNTShader NodetreeKT<03ShaderNodeTreeV<`X<DD *SDATApV<`X<@JW W WBSDF guidéer~VShaderNodeBsdfPrincipled`c}U ACpCB???bL;DATA@J CJBase ColorBase Color@53NodeSocketColorJ-T:DATAJ->>>?DATA CJEJ@JMetallicMetallic@;NodeSocketFloatFactor0J-V:DATA0J-?DATAEJ HJ CJRoughnessRoughness@;NodeSocketFloatFactor`J-XW:DATA`J-??DATA HJJJEJIORIOR@;NodeSocketFloatJ-X:DATAJ-??zDDATAJJ MJ HJAlphaAlpha@;NodeSocketFloatFactorJ-Y:DATAJ-??DATA MJOJJJNormalNormal;NodeSocketVectorT[:DATATDATAOJ RJ MJWeightWeightH;NodeSocketFloatJ-X\:DATAJ-DATA RJTJOJDiffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor K-]:DATA K-?DATATJ WJ RJSubsurface WeightSubsurface Weight@;NodeSocketFloatFactorPK-^:DATAPK-?DATA WJYJTJSubsurface RadiusSubsurface Radius@;NodeSocketVectorTADATAT?L>=BDATAYJ \J WJSubsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceK-XADATAK-L= ADATA \J^JYJSubsurface IORSubsurface IORH;NodeSocketFloatFactorK-ADATAK-33?G?33s@DATA^J aJ \JSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorK-سADATAK-?DATA aJcJ^JSpecular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorL-ADATAL-??DATAcJ fJ aJSpecular TintSpecular Tint@53NodeSocketColor@L-XADATA@L-?DATA fJhJcJAnisotropicAnisotropic@;NodeSocketFloatFactorpL-ADATApL-?DATAhJ kJ fJAnisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorL-ظADATAL-?DATA kJmJhJTangentTangent;NodeSocketVector TADATA TDATAmJ W kJTransmission WeightTransmission Weight@;NodeSocketFloatFactorL-XADATAL-?DATA WWmJCoat WeightCoat Weight@;NodeSocketFloatFactorM-ADATAM-?DATAW W WCoat RoughnessCoat Roughness@;NodeSocketFloatFactor0M-ؽADATA0M-<?DATA WWWCoat IORCoat IOR@;NodeSocketFloat`M-ADATA`M-??@DATAW W WCoat TintCoat Tint@53NodeSocketColorM-XADATAM-????DATA WWWCoat NormalCoat Normal;NodeSocketVector`TADATA`TDATAW W WSheen WeightSheen Weight@;NodeSocketFloatFactorM-ADATAM-?DATA WWWSheen RoughnessSheen Roughness@;NodeSocketFloatFactorM-ADATAM-??DATAW W WSheen TintSheen Tint@53NodeSocketColor N-XADATA N-????DATA WWWEmission ColorEmission Color@53NodeSocketColorPN-ADATAPN-????DATAW W WEmission StrengthEmission Strength@;NodeSocketFloatN-ADATAN-$tIDATA WWWThin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthN-ADATAN-, PGDATAW WThin Film IORThin Film IOR@;NodeSocketFloatN-XADATAN-q=??zDDATA WBSDFBSDFD53NodeSocketShaderADATA@bL "%DATAp`X<V<W WSortie matériau2CShaderNodeOutputMaterial}U|CC CB???;DATAW WSurfaceSurfaceD53NodeSocketShaderDADATA WWWVolumeVolume@53NodeSocketShaderADATAW W WDisplacementDisplacement;NodeSocketVectorTXADATATDATA WWThicknessThickness;NodeSocketFloatO-ADATAO-DATA8DV<`X< WWMA Z<GMAmaterialL>>>?????>W?DDATA WNTShader NodetreeM Z<03ShaderNodeTree[<]<@D@D *SDATAp[<]< W    Principled BSDF$ShaderNodeBsdfPrincipled`c}U ACpCB???bL;DATA WWBase ColorBase Color@53NodeSocketColor@O-ADATA@O->>>?DATAW W WMetallicMetallic@;NodeSocketFloatFactorpO-ADATApO-?DATA WWWRoughnessRoughness@;NodeSocketFloatFactorO-XADATAO-M??DATAW W WIORIOR@;NodeSocketFloatO-ADATAO-??zDDATA WWWAlphaAlpha@;NodeSocketFloatFactorP-ADATAP-??DATAW W WNormalNormal;NodeSocketVector GADATA GDATA WWWWeightWeightH;NodeSocketFloat0P-XADATA0P-DATAW W WDiffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`P-ADATA`P-?DATA WWWSubsurface WeightSubsurface Weight@;NodeSocketFloatFactorP-ADATAP-?DATAW W WSubsurface RadiusSubsurface Radius@;NodeSocketVector`GADATA`G?L>=BDATA WWWSubsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceP-XADATAP-L= ADATAW W WSubsurface IORSubsurface IORH;NodeSocketFloatFactorP-ADATAP-33?G?33s@DATA WWWSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor Q-ADATA Q-?DATAW  WSpecular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPQ-ADATAPQ-??DATA  WSpecular TintSpecular Tint@53NodeSocketColorQ-XADATAQ-????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorQ-ADATAQ-?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorQ-ADATAQ-?DATA   TangentTangent;NodeSocketVectorGADATAGDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorR-XADATAR-?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@R-ADATA@R-?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpR-ADATApR-<?DATA   Coat IORCoat IOR@;NodeSocketFloatR-ADATAR-??@DATA   Coat TintCoat Tint@53NodeSocketColorR-XADATAR-????DATA   Coat NormalCoat Normal;NodeSocketVectorGADATAGDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactorS-ADATAS-?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0S-ADATA0S-??DATA   Sheen TintSheen Tint@53NodeSocketColor`S-XADATA`S-????DATA    Emission ColorEmission Color@53NodeSocketColorS-ADATAS-????DATA    Emission StrengthEmission Strength@;NodeSocketFloatS-ADATAS-$tIDATA     Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthS-ADATAS-, PGDATA   Thin Film IORThin Film IOR@;NodeSocketFloat T-XADATA T-q=??zDDATA BSDFBSDFD53NodeSocketShaderADATA@bL "%DATAp]<[<  Material Output QCShaderNodeOutputMaterial}U|CC CB???;DATA  SurfaceSurfaceD53NodeSocketShader@DADATA    VolumeVolume@53NodeSocketShaderADATA    DisplacementDisplacement;NodeSocketVector GXADATA GDATA   ThicknessThickness;NodeSocketFloatPT-ADATAPT-DATA8@D[<]<  MA`_<GMAmaterial #2N????????>  ?DDATA   NTShader NodetreeO`_<03ShaderNodeTree a<b<DD *SDATAp a<b<    Principled BSDFrs~ShaderNodeBsdfPrincipled`c}U ACpCB???(cL;DATA   Base ColorBase Color@53NodeSocketColorT-ADATAT-????DATA    MetallicMetallic@;NodeSocketFloatFactorT-0 DATAT-?DATA  !   RoughnessRoughness@;NodeSocketFloatFactorT-X1 DATAT-KA??DATA ! #  IORIOR@;NodeSocketFloatU-2 DATAU-??zDDATA#  &  ! AlphaAlpha@;NodeSocketFloatFactor@U-3 DATA@U-??DATA & ( # NormalNormal;NodeSocketVectorG5 DATAGDATA(  +  & WeightWeightH;NodeSocketFloatpU-X6 DATApU-DATA + - ( Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorU-7 DATAU-?DATA-   + Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorU-8 DATAU-?DATA  - Subsurface RadiusSubsurface Radius@;NodeSocketVectorG: DATAG?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceV-X; DATAV-L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0V-< DATA0V-33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`V-= DATA`V-?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorV-? DATAV-??DATA   Specular TintSpecular Tint@53NodeSocketColorV-X@ DATAV-????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorV-A DATAV-?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor W-B DATA W-?DATA   TangentTangent;NodeSocketVector GD DATA GDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorPW-XE DATAPW-?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactorW-F DATAW-?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorW-G DATAW-<?DATA   Coat IORCoat IOR@;NodeSocketFloatW-I DATAW-??@DATA   Coat TintCoat Tint@53NodeSocketColorX-XJ DATAX-????DATA   Coat NormalCoat Normal;NodeSocketVector`GK DATA`GDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@X-L DATA@X-?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorpX-N DATApX-??DATA   Sheen TintSheen Tint@53NodeSocketColorX-XO DATAX-????DATA   Emission ColorEmission Color@53NodeSocketColorX-P DATAX-????DATA   Emission StrengthEmission Strength@;NodeSocketFloatY-Q DATAY-$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0Y-S DATA0Y-, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat`Y-XT DATA`Y-q=??zDDATA BSDFBSDFD53NodeSocketShaderU DATA@(cL "%DATApb< a<  Material Outputv}CShaderNodeOutputMaterial}U|CC CB???;DATA  SurfaceSurfaceD53NodeSocketShaderDV DATA   VolumeVolume@53NodeSocketShaderX DATA   DisplacementDisplacement;NodeSocketVectorGXY DATAGDATA  ThicknessThickness;NodeSocketFloatY-Z DATAY-DATA8D a<b<  MAd<GMAmaterial #2.001P>>>?????> ?DDATA  NTShader NodetreeQd<03ShaderNodeTree`f< h<DD *TDATAp`f< h<     Principled BSDF. ShaderNodeBsdfPrincipled`c}U ACpCB???xcL<DATA  Base ColorBase Color@53NodeSocketColorY-[ DATAY->>>?DATA   MetallicMetallic@;NodeSocketFloatFactorY-] DATAY-?DATA   RoughnessRoughness@;NodeSocketFloatFactor Z-X^ DATA Z-+ M??DATA   IORIOR@;NodeSocketFloatPZ-_ DATAPZ-??zDDATA   AlphaAlpha@;NodeSocketFloatFactorZ-` DATAZ-??DATA   NormalNormal;NodeSocketVector Gb DATA GDATA   WeightWeightH;NodeSocketFloatZ-Xc DATAZ-DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorZ-d DATAZ-?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor[-e DATA[-?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`Gg DATA`G?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@[-Xh DATA@[-L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp[-i DATAp[-33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor[-j DATA[-?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor[-l DATA[-??DATA   Specular TintSpecular Tint@53NodeSocketColor\-Xm DATA\-????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0\-n DATA0\-?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`\-o DATA`\-?DATA   TangentTangent;NodeSocketVectorGq DATAGDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor\-Xr DATA\-?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor\-s DATA\-?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor\-t DATA\-<?DATA   Coat IORCoat IOR@;NodeSocketFloat ]-v DATA ]-??@DATA   Coat TintCoat Tint@53NodeSocketColorP]-Xw DATAP]-????DATA    Coat NormalCoat Normal;NodeSocketVectorGx DATAGDATA    Sheen WeightSheen Weight@;NodeSocketFloatFactor]-y DATA]-?DATA     Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor]-{ DATA]-??DATA    Sheen TintSheen Tint@53NodeSocketColor]-X| DATA]-????DATA    Emission ColorEmission Color@53NodeSocketColor^-} DATA^-????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@^-~ DATA@^-$tIDATA    Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp^-p DATAp^-, PGDATA   Thin Film IORThin Film IOR@;NodeSocketFloat^-Xq DATA^-q=??zDDATA BSDFBSDFD53NodeSocketShaderr DATA@xcL "%DATAp h<`f<   Material OutputCShaderNodeOutputMaterial}U|CC CB???<DATA   SurfaceSurfaceD53NodeSocketShaderDs DATA     VolumeVolume@53NodeSocketShaderu DATA    DisplacementDisplacement;NodeSocketVector GXv DATA GDATA   ThicknessThickness;NodeSocketFloat^-w DATA^-DATA8D`f< h<   MAi<GMAmaterial #3RL>L>L>?????> ?DDATA  NTShader NodetreeSi<03ShaderNodeTreek<`m<DD *TDATApk<`m<      Principled BSDFu[ShaderNodeBsdfPrincipled`c}U ACpCB???cL <DATA  Base ColorBase Color@53NodeSocketColor_-x DATA_-L>L>L>?DATA   MetallicMetallic@;NodeSocketFloatFactor0_-z DATA0_-?DATA   RoughnessRoughness@;NodeSocketFloatFactor`_-X{ DATA`_-F??DATA   IORIOR@;NodeSocketFloat_-| DATA_-??zDDATA   AlphaAlpha@;NodeSocketFloatFactor_-} DATA_-??DATA   NormalNormal;NodeSocketVectorG DATAGDATA   WeightWeightH;NodeSocketFloat_-X DATA_-DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP؂ DATAP?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectorG DATAG?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX DATAL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor DATA33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor؇ DATA?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA??DATA   Specular TintSpecular Tint@53NodeSocketColor@X DATA@????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp DATAp?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor، DATA?DATA   TangentTangent;NodeSocketVector G DATA GDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorX DATA?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor¿ DATA¿?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0¿ؑ DATA0¿<?DATA   Coat IORCoat IOR@;NodeSocketFloat`¿ DATA`¿??@DATA   Coat TintCoat Tint@53NodeSocketColor¿X DATA¿????DATA   Coat NormalCoat Normal;NodeSocketVector`G DATA`GDATA    Sheen WeightSheen Weight@;NodeSocketFloatFactor¿ؖ DATA¿?DATA    Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor¿ DATA¿??DATA     Sheen TintSheen Tint@53NodeSocketColor ÿX DATA ÿ????DATA    Emission ColorEmission Color@53NodeSocketColorPÿ DATAPÿ????DATA    Emission StrengthEmission Strength@;NodeSocketFloatÿ؛ DATAÿ$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthÿ DATAÿ, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatÿX DATAÿq=??zDDATA  BSDFBSDFD53NodeSocketShader DATA@cL "%DATAp`m<k<   Material Output@%CShaderNodeOutputMaterial}U|CC CB???<DATA   SurfaceSurfaceD53NodeSocketShaderDؠ DATA    VolumeVolume@53NodeSocketShader DATA     DisplacementDisplacement;NodeSocketVectorGX DATAGDATA   ThicknessThickness;NodeSocketFloatĿ DATAĿDATA8Dk<`m<   MA o<GMAmaterial #4.001T>?????> ?DDATA  NTShader NodetreeU o<03ShaderNodeTreep<r<@D@D*DATApp<r<     Principled BSDF.n!ShaderNodeBsdfPrincipled`c}U ACpCB???dL<DATA  ! Base ColorBase Color@53NodeSocketColor@Ŀإ DATA@Ŀ>?DATA!  $   MetallicMetallic@;NodeSocketFloatFactorpĿ DATApĿ?DATA $ & ! RoughnessRoughness@;NodeSocketFloatFactorĿX DATAĿs??DATA&  )  $ IORIOR@;NodeSocketFloatĿ DATAĿ??zDDATA ) + & AlphaAlpha@;NodeSocketFloatFactorſت DATAſ??DATA+  .  ) NormalNormal;NodeSocketVector G DATA GDATA . 0 + WeightWeightH;NodeSocketFloat0ſX DATA0ſDATA0  3  . Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`ſ DATA`ſ?DATA 3 5 0 Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorſد DATAſ?DATA5  8  3 Subsurface RadiusSubsurface Radius@;NodeSocketVector`G DATA`G?L>=BDATA 8 : 5 Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceſX DATAſL= ADATA:  =  8 Subsurface IORSubsurface IORH;NodeSocketFloatFactorſ DATAſ33?G?33s@DATA = ? : Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ƿش DATA ƿ?DATA?  B  = Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPƿ DATAPƿ??DATA B D ? Specular TintSpecular Tint@53NodeSocketColorƿX DATAƿ????DATAD  G  B AnisotropicAnisotropic@;NodeSocketFloatFactorƿ DATAƿ?DATA G I D Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorƿع DATAƿ?DATAI  L  G TangentTangent;NodeSocketVectorG DATAGDATA L N I Transmission WeightTransmission Weight@;NodeSocketFloatFactorǿX DATAǿ?DATAN  Q  L Coat WeightCoat Weight@;NodeSocketFloatFactor@ǿ DATA@ǿ?DATA Q S N Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpǿؾ DATApǿ<?DATAS  V  Q Coat IORCoat IOR@;NodeSocketFloatǿ` DATAǿ??@DATA V X S Coat TintCoat Tint@53NodeSocketColorǿXa DATAǿ????DATAX  [  V Coat NormalCoat Normal;NodeSocketVectorGb DATAGDATA [ ] X Sheen WeightSheen Weight@;NodeSocketFloatFactorȿc DATAȿ?DATA]   [ Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0ȿe DATA0ȿ??DATA  ] Sheen TintSheen Tint@53NodeSocketColor`ȿXf DATA`ȿ????DATA   Emission ColorEmission Color@53NodeSocketColorȿg DATAȿ????DATA   Emission StrengthEmission Strength@;NodeSocketFloatȿh DATAȿ$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthȿj DATAȿ, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat ɿXk DATA ɿq=??zDDATA BSDFBSDFD53NodeSocketShaderl DATA@dL "%DATApr<p<  Material Output0vKCShaderNodeOutputMaterial}U|CC CB???<DATA  SurfaceSurfaceD53NodeSocketShader@Dm DATA   VolumeVolume@53NodeSocketShadero DATA   DisplacementDisplacement;NodeSocketVector GXp DATA GDATA  ThicknessThickness;NodeSocketFloatPɿq DATAPɿDATA8@Dp<r<  MA`t<GMAmaterial #5VL?L???????> ?DDATA  NTShader NodetreeW`t<03ShaderNodeTree v<w<DD*DATAp v<w<    Principled BSDF1ShaderNodeBsdfPrincipled`c}U ACpCB???hdL!<DATA  Base ColorBase Color@53NodeSocketColorɿr DATAɿL?L???DATA   MetallicMetallic@;NodeSocketFloatFactorɿt DATAɿ?DATA   RoughnessRoughness@;NodeSocketFloatFactorɿXu DATAɿmB??DATA   IORIOR@;NodeSocketFloatʿv DATAʿ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@ʿw DATA@ʿ??DATA   NormalNormal;NodeSocketVectorGy DATAGDATA   WeightWeightH;NodeSocketFloatpʿXz DATApʿDATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorʿ{ DATAʿ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorʿ| DATAʿ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectorG~ DATAG?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance˿X DATA˿L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0˿ DATA0˿33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`˿؁ DATA`˿?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor˿ DATA˿??DATA   Specular TintSpecular Tint@53NodeSocketColor˿X DATA˿????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor˿ DATA˿?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ̿؆ DATA ̿?DATA   TangentTangent;NodeSocketVector G DATA GDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorP̿X DATAP̿?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor̿ DATA̿?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor̿؋ DATA̿<?DATA   Coat IORCoat IOR@;NodeSocketFloat̿ DATA̿??@DATA   Coat TintCoat Tint@53NodeSocketColorͿX DATAͿ????DATA   Coat NormalCoat Normal;NodeSocketVector`G DATA`GDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@Ϳؐ DATA@Ϳ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorpͿ DATApͿ??DATA   Sheen TintSheen Tint@53NodeSocketColorͿX DATAͿ????DATA   Emission ColorEmission Color@53NodeSocketColorͿ DATAͿ????DATA   Emission StrengthEmission Strength@;NodeSocketFloatοؕ DATAο$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0ο DATA0ο, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat`οX DATA`οq=??zDDATA BSDFBSDFD53NodeSocketShader DATA@hdL "%DATApw< v<  Material OutputEx,CShaderNodeOutputMaterial}U|CC CB???&<DATA  SurfaceSurfaceD53NodeSocketShaderDؚ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVectorGX DATAGDATA  ThicknessThickness;NodeSocketFloatο DATAοDATA8D v<w<  MAy<GMAmaterial #7X>>>?????> ?DDATA  NTShader NodetreeYy<03ShaderNodeTree`{< }<DD`S DATAp`{< }<     Principled BSDFb:.ShaderNodeBsdfPrincipled`c}U ACpCB???dL+<DATA  Base ColorBase Color@53NodeSocketColorο؟ DATAο>>>?DATA   MetallicMetallic@;NodeSocketFloatFactorο DATAο?DATA   RoughnessRoughness@;NodeSocketFloatFactor ϿX DATA ϿF??DATA   IORIOR@;NodeSocketFloatPϿ DATAPϿ??zDDATA   AlphaAlpha@;NodeSocketFloatFactorϿؤ DATAϿ??DATA   NormalNormal;NodeSocketVector G DATA GDATA   WeightWeightH;NodeSocketFloatϿX DATAϿDATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorϿ DATAϿ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorпة DATAп?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`G DATA`G?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@пX DATA@пL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorpп DATApп33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorпخ DATAп?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorп@ DATAп??DATA   Specular TintSpecular Tint@53NodeSocketColorѿXA DATAѿ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0ѿB DATA0ѿ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`ѿC DATA`ѿ?DATA   TangentTangent;NodeSocketVectorGE DATAGDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorѿXF DATAѿ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactorѿG DATAѿ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorѿH DATAѿ<?DATA   Coat IORCoat IOR@;NodeSocketFloat ҿJ DATA ҿ??@DATA   Coat TintCoat Tint@53NodeSocketColorPҿXK DATAPҿ????DATA   Coat NormalCoat Normal;NodeSocketVectorGL DATAGDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactorҿM DATAҿ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorҿO DATAҿ??DATA   Sheen TintSheen Tint@53NodeSocketColorҿXP DATAҿ????DATA   Emission ColorEmission Color@53NodeSocketColorӿQ DATAӿ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@ӿR DATA@ӿ$tIDATA    Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthpӿT DATApӿ, PGDATA   Thin Film IORThin Film IOR@;NodeSocketFloatӿXU DATAӿq=??zDDATA BSDFBSDFD53NodeSocketShaderV DATA@dL "%DATAp }<`{<   Material Output3x>CShaderNodeOutputMaterial}U|CC CB??? DATA   SurfaceSurfaceD53NodeSocketShaderDW DATA    VolumeVolume@53NodeSocketShaderY DATA   DisplacementDisplacement;NodeSocketVector GXZ DATA GDATA  ThicknessThickness;NodeSocketFloatӿ[ DATAӿDATA8D`{< }<   MA~<GMAsteelZ>>>?????>  ?DDATA   NTShader Nodetree[~<03ShaderNodeTree<`<DDaS DATAp<`< _  b  b Principled BSDF>>?DATA    MetallicMetallic@;NodeSocketFloatFactor0Կ^ DATA0Կ?DATA     RoughnessRoughness@;NodeSocketFloatFactor`ԿX_ DATA`ԿL??DATA    IORIOR@;NodeSocketFloatԿ` DATAԿ??zDDATA  !   AlphaAlpha@;NodeSocketFloatFactorԿa DATAԿ??DATA ! #  NormalNormal;NodeSocketVectorGc DATAGDATA#  &  ! WeightWeightH;NodeSocketFloatԿXd DATAԿDATA & ( # Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor տe DATA տ?DATA(  +  & Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorPտf DATAPտ?DATA + - ( Subsurface RadiusSubsurface Radius@;NodeSocketVectorGh DATAG?L>=BDATA-  0  + Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceտXi DATAտL= ADATA 0 2 - Subsurface IORSubsurface IORH;NodeSocketFloatFactorտj DATAտ33?G?33s@DATA2  5  0 Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorտk DATAտ?DATA 5 7 2 Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorֿm DATAֿ??DATA7  :  5 Specular TintSpecular Tint@53NodeSocketColor@ֿXn DATA@ֿ????DATA : < 7 AnisotropicAnisotropic@;NodeSocketFloatFactorpֿo DATApֿ?DATA<  ?  : Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorֿp DATAֿ?DATA ? A < TangentTangent;NodeSocketVector Gr DATA GDATAA  D  ? Transmission WeightTransmission Weight@;NodeSocketFloatFactorֿXs DATAֿ?DATA D F A Coat WeightCoat Weight@;NodeSocketFloatFactor׿t DATA׿?DATAF  I  D Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0׿u DATA0׿<?DATA I K F Coat IORCoat IOR@;NodeSocketFloat`׿w DATA`׿??@DATAK  N  I Coat TintCoat Tint@53NodeSocketColor׿Xx DATA׿????DATA N P K Coat NormalCoat Normal;NodeSocketVector`Gy DATA`GDATAP  S  N Sheen WeightSheen Weight@;NodeSocketFloatFactor׿z DATA׿?DATA S U P Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor׿| DATA׿??DATAU  X  S Sheen TintSheen Tint@53NodeSocketColor ؿX} DATA ؿ????DATA X Z U Emission ColorEmission Color@53NodeSocketColorPؿ~ DATAPؿ????DATAZ  ]  X Emission StrengthEmission Strength@;NodeSocketFloatؿ DATAؿ$tIDATA ] _ Z Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthؿ DATAؿ, PGDATA_  ] Thin Film IORThin Film IOR@;NodeSocketFloatؿX DATAؿq=??zDDATA b BSDFBSDFD53NodeSocketShader DATA@eL "%DATAp`<<d  l Material Output lCShaderNodeOutputMaterial}U|CC CB???* DATAd  g SurfaceSurfaceD53NodeSocketShaderD؄ DATA g i d VolumeVolume@53NodeSocketShader DATAi  l  g DisplacementDisplacement;NodeSocketVectorGX DATAGDATA l i ThicknessThickness;NodeSocketFloatٿ DATAٿDATA8D<`< b d MA <GMAsteel #11\L>L>?????>n ?DDATA n NTShader Nodetree] <03ShaderNodeTree<<@D@DbS DATAp<< q    Principled BSDF ShaderNodeBsdfPrincipled`c}U ACpCB???XeL/ DATA q s Base ColorBase Color@53NodeSocketColor@ٿ؉ DATA@ٿL>L>?DATAs  v  q MetallicMetallic@;NodeSocketFloatFactorpٿ DATApٿ?DATA v x s RoughnessRoughness@;NodeSocketFloatFactorٿX DATAٿR??DATAx  {  v IORIOR@;NodeSocketFloatٿ DATAٿ??zDDATA { } x AlphaAlpha@;NodeSocketFloatFactorڿ؎ DATAڿ??DATA}   { NormalNormal;NodeSocketVector G DATA GDATA  } WeightWeightH;NodeSocketFloat0ڿX DATA0ڿDATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`ڿ DATA`ڿ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorڿ؃ DATAڿ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`G DATA`G?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceڿX DATAڿL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorڿ DATAڿ33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ۿ؈ DATA ۿ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPۿ DATAPۿ??DATA   Specular TintSpecular Tint@53NodeSocketColorۿX DATAۿ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorۿ DATAۿ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorۿ؍ DATAۿ?DATA   TangentTangent;NodeSocketVectorG DATAGDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorܿX DATAܿ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@ܿ DATA@ܿ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpܿؒ DATApܿ<?DATA   Coat IORCoat IOR@;NodeSocketFloatܿ DATAܿ??@DATA   Coat TintCoat Tint@53NodeSocketColorܿX DATAܿ????DATA   Coat NormalCoat Normal;NodeSocketVectorG DATAGDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactorݿؗ DATAݿ?DATA    Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0ݿ DATA0ݿ??DATA    Sheen TintSheen Tint@53NodeSocketColor`ݿX DATA`ݿ????DATA     Emission ColorEmission Color@53NodeSocketColorݿ DATAݿ????DATA    Emission StrengthEmission Strength@;NodeSocketFloatݿ؜ DATAݿ$tIDATA    Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthݿ DATAݿ, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat ޿X DATA ޿q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@XeL "%DATAp<<   Material OutputJ![,CShaderNodeOutputMaterial}U|CC CB???4 DATA   SurfaceSurfaceD53NodeSocketShader@Dء DATA     VolumeVolume@53NodeSocketShader DATA    DisplacementDisplacement;NodeSocketVector GX DATA GDATA   ThicknessThickness;NodeSocketFloatP޿ DATAP޿DATA8@D<<   MA`<GMAsteel #16^L>L>>?????>  ?DDATA   NTShader Nodetree_`<03ShaderNodeTree <<DDcS DATAp << x  {  { Principled BSDFصShaderNodeBsdfPrincipled`c}U ACpCB???eL9 DATA  0 Base ColorBase Color@53NodeSocketColor޿ئ DATA޿L>L>>?DATA 0 2  MetallicMetallic@;NodeSocketFloatFactor޿ DATA޿?DATA2  5  0 RoughnessRoughness@;NodeSocketFloatFactor޿X DATA޿@X??DATA 5 7 2 IORIOR@;NodeSocketFloat߿ DATA߿??zDDATA7  :  5 AlphaAlpha@;NodeSocketFloatFactor@߿ث DATA@߿??DATA : < 7 NormalNormal;NodeSocketVectorG DATAGDATA<  ?  : WeightWeightH;NodeSocketFloatp߿X DATAp߿DATA ? A < Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor߿ DATA߿?DATAA  D  ? Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor߿ذ DATA߿?DATA D F A Subsurface RadiusSubsurface Radius@;NodeSocketVectorG DATAG?L>=BDATAF  I  D Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX DATAL= ADATA I K F Subsurface IORSubsurface IORH;NodeSocketFloatFactor0 DATA033?G?33s@DATAK  N  I Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`ص DATA`?DATA N P K Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA??DATAP  S  N Specular TintSpecular Tint@53NodeSocketColorX DATA????DATA S U P AnisotropicAnisotropic@;NodeSocketFloatFactor DATA?DATAU  X  S Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor غ DATA ?DATA X Z U TangentTangent;NodeSocketVector G DATA GDATAZ  ]  X Transmission WeightTransmission Weight@;NodeSocketFloatFactorPX DATAP?DATA ] _ Z Coat WeightCoat Weight@;NodeSocketFloatFactor DATA?DATA_  b  ] Coat RoughnessCoat Roughness@;NodeSocketFloatFactorؿ DATA<?DATA b d _ Coat IORCoat IOR@;NodeSocketFloat DATA??@DATAd  g  b Coat TintCoat Tint@53NodeSocketColorX DATA????DATA g i d Coat NormalCoat Normal;NodeSocketVector`G DATA`GDATAi  l  g Sheen WeightSheen Weight@;NodeSocketFloatFactor@ DATA@?DATA l n i Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp DATAp??DATAn  q  l Sheen TintSheen Tint@53NodeSocketColorX DATA????DATA q s n Emission ColorEmission Color@53NodeSocketColor DATA????DATAs  v  q Emission StrengthEmission Strength@;NodeSocketFloat DATA$tIDATA v x s Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 DATA0, PGDATAx  v Thin Film IORThin Film IOR@;NodeSocketFloat`X DATA`q=??zDDATA { BSDFBSDFD53NodeSocketShader DATA@eL "%DATAp< <}  Material Output$:CShaderNodeOutputMaterial}U|CC CB???> DATA}  SurfaceSurfaceD53NodeSocketShaderD DATA  } VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVectorGX DATAGDATA  ThicknessThickness;NodeSocketFloat DATADATA8D << { } MA<GMAsteel #18`?????> ?DDATA  NTShader Nodetreea<03ShaderNodeTree`< <DDdS DATAp`< <    Principled BSDFs;ShaderNodeBsdfPrincipled`c}U ACpCB???eLC DATA  Base ColorBase Color@53NodeSocketColor؃ DATA?DATA   MetallicMetallic@;NodeSocketFloatFactor DATA?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA ??DATA   IORIOR@;NodeSocketFloatP DATAP??zDDATA   AlphaAlpha@;NodeSocketFloatFactor؈ DATA??DATA   NormalNormal;NodeSocketVector G DATA GDATA   WeightWeightH;NodeSocketFloatX DATADATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor؍ DATA?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`G DATA`G?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@X DATA@L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp DATAp33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorؒ DATA?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA??DATA   Specular TintSpecular Tint@53NodeSocketColorX DATA?DATA    AnisotropicAnisotropic@;NodeSocketFloatFactor0 DATA0?DATA    Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`ؗ DATA`?DATA     TangentTangent;NodeSocketVectorG DATAGDATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactorX DATA?DATA    Coat WeightCoat Weight@;NodeSocketFloatFactor DATA?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor؜ DATA<?DATA    Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA    Coat TintCoat Tint@53NodeSocketColorPX DATAP????DATA     Coat NormalCoat Normal;NodeSocketVectorG DATAGDATA    Sheen WeightSheen Weight@;NodeSocketFloatFactorء DATA?DATA     Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA??DATA    Sheen TintSheen Tint@53NodeSocketColorX DATA????DATA    Emission ColorEmission Color@53NodeSocketColor DATA????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@ئ DATA@$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp DATAp, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatX DATAq=??zDDATA BSDFBSDFD53NodeSocketShader DATA@eL "%DATAp <`<  Material OutputufCShaderNodeOutputMaterial}U|CC CB???H DATA  SurfaceSurfaceD53NodeSocketShaderDث DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector X DATA DATA  ThicknessThickness;NodeSocketFloat DATADATA8D`< <  MA<GMAsteel #19b\>==?????> ?DDATA  NTShader Nodetreec<03ShaderNodeTree<`<DDeS( DATAp<`<    Principled BSDF"]ZShaderNodeBsdfPrincipled`c}U ACpCB???HfLM DATA  Base ColorBase Color@53NodeSocketColorذ DATA\>==?DATA   MetallicMetallic@;NodeSocketFloatFactor0 DATA0?DATA   RoughnessRoughness@;NodeSocketFloatFactor`X DATA`8_??DATA   IORIOR@;NodeSocketFloat DATA??zDDATA   AlphaAlpha@;NodeSocketFloatFactorص DATA??DATA   NormalNormal;NodeSocketVector  DATA DATA   WeightWeightH;NodeSocketFloatX DATADATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorPغ DATAP?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector  DATA ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX DATAL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor DATA33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorؿ DATA?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA??DATA   Specular TintSpecular Tint@53NodeSocketColor@X DATA@????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp DATAp?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor DATA?DATA   TangentTangent;NodeSocketVector !  DATA ! DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorX DATA?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor DATA?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 DATA0<?DATA   Coat IORCoat IOR@;NodeSocketFloat` DATA`??@DATA   Coat TintCoat Tint@53NodeSocketColorX DATA????DATA   Coat NormalCoat Normal;NodeSocketVector`!  DATA`! DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor DATA?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA??DATA   Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColorP DATAP????DATA   Emission StrengthEmission Strength@;NodeSocketFloat DATA$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength DATA, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatX DATAq=??zDDATA BSDFBSDFD53NodeSocketShader DATA@HfL "%DATAp`<<  Material OutputXFCShaderNodeOutputMaterial}U|CC CB???R DATA  SurfaceSurfaceD53NodeSocketShaderD DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector! X DATA! DATA  ThicknessThickness;NodeSocketFloat DATADATA8D<`<  MA <GMAsteel #2d>?????> ?DDATA  NTShader Nodetreee <03ShaderNodeTree<<@D@DfS0 DATAp<<  . 0 0 Principled BSDFXAShaderNodeBsdfPrincipled`c}U ACpCB???fLW DATA  Base ColorBase Color@53NodeSocketColor@ DATA@>?DATA   MetallicMetallic@;NodeSocketFloatFactorp DATAp?DATA   RoughnessRoughness@;NodeSocketFloatFactorX DATA |??DATA   IORIOR@;NodeSocketFloat DATA??zDDATA   AlphaAlpha@;NodeSocketFloatFactor DATA??DATA   NormalNormal;NodeSocketVector "  DATA " DATA   WeightWeightH;NodeSocketFloat0X DATA0DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor` DATA`?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor DATA?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`"  DATA`" ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX DATAL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor DATA33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA   Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA    TangentTangent;NodeSocketVector"  DATA" DATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA     Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA    Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp  DATAp <?DATA     Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA    Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA     Coat NormalCoat Normal;NodeSocketVector"  DATA" DATA  !  Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA!  $   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA $ & ! Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA&  )  $ Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA ) + & Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA+  .  ) Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA . + Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA0 BSDFBSDFD53NodeSocketShader DATA@fL "%DATAp<< 3 : Material OutputiCShaderNodeOutputMaterial}U|CC CB???\ DATA 3 5 SurfaceSurfaceD53NodeSocketShader@D DATA5  8  3 VolumeVolume@53NodeSocketShader DATA 8 : 5 DisplacementDisplacement;NodeSocketVector # X DATA # DATA:  8 ThicknessThickness;NodeSocketFloatP  DATAP DATA8@D<<0  3 MA`<GMAsteel #2.002f>?????> = ?DDATA  = NTShader Nodetreeg`<03ShaderNodeTree ! DDgS8 DATAp ! ?    Principled BSDFصBCShaderNodeBsdfPrincipled`c}U ACpCB???fLa DATA?  B Base ColorBase Color@53NodeSocketColor  DATA >?DATA B D ? MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATAD  G  B RoughnessRoughness@;NodeSocketFloatFactor X DATA m{??DATA G I D IORIOR@;NodeSocketFloat  DATA ??zDDATAI  L  G AlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA L N I NormalNormal;NodeSocketVector#  DATA# DATAN  Q  L WeightWeightH;NodeSocketFloatp X DATAp DATA Q S N Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATAS  V  Q Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA V X S Subsurface RadiusSubsurface Radius@;NodeSocketVector#  DATA# ?L>=BDATAX  [  V Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA [ ] X Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA]  `  [ Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA ` b ] Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATAb  e  ` Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA e g b AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATAg  j  e Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA j l g TangentTangent;NodeSocketVector $  DATA $ DATAl  o  j Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA o q l Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATAq  t  o Coat RoughnessCoat Roughness@;NodeSocketFloatFactor س DATA <?DATA t v q Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATAv  y  t Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA y { v Coat NormalCoat Normal;NodeSocketVector`$  DATA`$ DATA{  ~  y Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ظ DATA@ ?DATA ~  { Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATA   ~ Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ؽ DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@fL "%DATAp!    Material OutputJmCShaderNodeOutputMaterial}U|CC CB???f DATA  SurfaceSurfaceD53NodeSocketShaderD DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector$ X DATA$ DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8D !   MA# GMAsteel #20h>><>?????> ?DDATA  NTShader Nodetreei# 03ShaderNodeTree`%  ' DDhS DATAp`%  '   7 9 9 Principled BSDF9dShaderNodeBsdfPrincipled`c}U ACpCB???8gLk DATA  Base ColorBase Color@53NodeSocketColor  DATA >><>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA K??DATA   IORIOR@;NodeSocketFloatP  DATAP ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATA   NormalNormal;NodeSocketVector %  DATA % DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA    Subsurface RadiusSubsurface Radius@;NodeSocketVector`%  DATA`% ?L>=BDATA    Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ X DATA@ L= ADATA    Subsurface IORSubsurface IORH;NodeSocketFloatFactorp  DATAp 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA    Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA    Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA     AnisotropicAnisotropic@;NodeSocketFloatFactor0  DATA0 ?DATA    Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`  DATA` ?DATA     TangentTangent;NodeSocketVector%  DATA% DATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA     Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA    Coat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATA  #   Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA # %  Coat TintCoat Tint@53NodeSocketColorP X DATAP ????DATA%  (  # Coat NormalCoat Normal;NodeSocketVector%  DATA% DATA ( * % Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA*  -  ( Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA - / * Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA/  2  - Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA 2 4 / Emission StrengthEmission Strength@;NodeSocketFloat@  DATA@ $tIDATA4  7  2 Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp  DATAp , PGDATA 7 4 Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA9 BSDFBSDFD53NodeSocketShader DATA@8gL "%DATAp ' `%  < C Material OutputACShaderNodeOutputMaterial}U|CC CB??? DATA < > SurfaceSurfaceD53NodeSocketShaderD DATA>  A  < VolumeVolume@53NodeSocketShader DATA A C > DisplacementDisplacement;NodeSocketVector & X DATA & DATAC  A ThicknessThickness;NodeSocketFloat  DATA DATA8D`%  ' 9  < MA( GMAsteel #22j>>L>?????> F ?DDATA  F NTShader Nodetreek( 03ShaderNodeTree* `, DDiS DATAp* `, H    Principled BSDFNymShaderNodeBsdfPrincipled`c}U ACpCB???gL% DATAH  K Base ColorBase Color@53NodeSocketColor  DATA >>L>?DATA K M H MetallicMetallic@;NodeSocketFloatFactor0  DATA0 ?DATAM   K RoughnessRoughness@;NodeSocketFloatFactor` X DATA` mI??DATA  M IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATA   NormalNormal;NodeSocketVector&  DATA& DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP  DATAP ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector& P DATA& ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XQ DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor R DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor S DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor U DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor@ XV DATA@ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp W DATAp ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor X DATA ?DATA   TangentTangent;NodeSocketVector ' Z DATA ' DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X[ DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor \ DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 ] DATA0 <?DATA   Coat IORCoat IOR@;NodeSocketFloat` _ DATA` ??@DATA   Coat TintCoat Tint@53NodeSocketColor X` DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector`' a DATA`' DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor b DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor d DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor Xe DATA ????DATA   Emission ColorEmission Color@53NodeSocketColorP f DATAP ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat g DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength i DATA , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat Xj DATA q=??zDDATA BSDFBSDFD53NodeSocketShaderk DATA@gL "%DATAp`, *   @ Material OutputYCShaderNodeOutputMaterial}U|CC CB???* DATA  SurfaceSurfaceD53NodeSocketShaderDl DATA   VolumeVolume@53NodeSocketShadern DATA  @  DisplacementDisplacement;NodeSocketVector' Xo DATA' DATA @  ThicknessThickness;NodeSocketFloat p DATA DATA8D* `,   MA . GMAsteel #23l>L>=?????>B ?DDATA B NTShader Nodetreem . 03ShaderNodeTree/ 1 @D@DjS DATAp/ 1  E    Principled BSDF:q9~ShaderNodeBsdfPrincipled`c}U ACpCB???gL/ DATA E G Base ColorBase Color@53NodeSocketColor@ q DATA@ >L>=?DATAG  J  E MetallicMetallic@;NodeSocketFloatFactorp s DATAp ?DATA J L G RoughnessRoughness@;NodeSocketFloatFactor Xt DATA _??DATAL  O  J IORIOR@;NodeSocketFloat u DATA ??zDDATA O Q L AlphaAlpha@;NodeSocketFloatFactor v DATA ??DATAQ  T  O NormalNormal;NodeSocketVector ( x DATA ( DATA T V Q WeightWeightH;NodeSocketFloat0 Xy DATA0 DATAV  Y  T Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor` z DATA` ?DATA Y [ V Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor { DATA ?DATA[  ^  Y Subsurface RadiusSubsurface Radius@;NodeSocketVector`( } DATA`( ?L>=BDATA ^ ` [ Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X~ DATA L= ADATA`  c  ^ Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA c e ` Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ؀ DATA ?DATAe  h  c Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA h j e Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATAj  m  h AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA m o j Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؅ DATA ?DATAo  r  m TangentTangent;NodeSocketVector(  DATA( DATA r t o Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATAt  w  r Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA w y t Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp ؊ DATAp <?DATAy  |  w Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA | ~ y Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA~   | Coat NormalCoat Normal;NodeSocketVector(  DATA( DATA  ~ Sheen WeightSheen Weight@;NodeSocketFloatFactor ؏ DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA   Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ؔ DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@gL "%DATAp1 /   Material OutputssCShaderNodeOutputMaterial}U|CC CB???4 DATA  SurfaceSurfaceD53NodeSocketShader@Dؙ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector ) X DATA ) DATA  ThicknessThickness;NodeSocketFloatP  DATAP DATA8@D/ 1   MA`3 GMAsteel #25n>>>?????> ?DDATA  NTShader Nodetreeo`3 03ShaderNodeTree 5 6 DDkS DATAp 5 6  <  ?  ? Principled BSDF7ShaderNodeBsdfPrincipled`c}U ACpCB???(hL9 DATA  Base ColorBase Color@53NodeSocketColor ؞ DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA I??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@ ؓ DATA@ ??DATA   NormalNormal;NodeSocketVector)  DATA) DATA    WeightWeightH;NodeSocketFloatp X DATAp DATA    Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA     Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ؘ DATA ?DATA    Subsurface RadiusSubsurface Radius@;NodeSocketVector)  DATA) ?L>=BDATA    Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA    Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` ؝ DATA` ?DATA    Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA     Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA    AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA     Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor آ DATA ?DATA    TangentTangent;NodeSocketVector *  DATA * DATA  !   Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA ! #  Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA#  &  ! Coat RoughnessCoat Roughness@;NodeSocketFloatFactor ا DATA <?DATA & ( # Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA(  +  & Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA + - ( Coat NormalCoat Normal;NodeSocketVector`*  DATA`* DATA-  0  + Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ج DATA@ ?DATA 0 2 - Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATA2  5  0 Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA 5 7 2 Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA7  :  5 Emission StrengthEmission Strength@;NodeSocketFloat ر DATA $tIDATA : < 7 Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATA<  : Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA ? BSDFBSDFD53NodeSocketShader DATA@(hL "%DATAp6  5 A  I Material Outputv,CShaderNodeOutputMaterial}U|CC CB???> DATAA  D SurfaceSurfaceD53NodeSocketShaderDض DATA D F A VolumeVolume@53NodeSocketShader DATAF  I  D DisplacementDisplacement;NodeSocketVector* X DATA* DATA I F ThicknessThickness;NodeSocketFloat  DATA DATA8D 5 6  ? A MA8 GMAsteel #26p>>>?????>K ?DDATA K NTShader Nodetreeq8 03ShaderNodeTree`:  < DDlS DATAp`:  <  N    Principled BSDFxShaderNodeBsdfPrincipled`c}U ACpCB???xhLC DATA N P Base ColorBase Color@53NodeSocketColor ػ DATA >>>?DATAP  S  N MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA S U P RoughnessRoughness@;NodeSocketFloatFactor X DATA F??DATAU  X  S IORIOR@;NodeSocketFloatP  DATAP ??zDDATA X Z U AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATAZ  ]  X NormalNormal;NodeSocketVector +  DATA + DATA ] _ Z WeightWeightH;NodeSocketFloat X DATA DATA_  b  ] Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA b d _ Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATAd  g  b Subsurface RadiusSubsurface Radius@;NodeSocketVector`+  DATA`+ ?L>=BDATA g i d Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ X DATA@ L= ADATAi  l  g Subsurface IORSubsurface IORH;NodeSocketFloatFactorp  DATAp 33?G?33s@DATA l n i Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATAn  q  l Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA q s n Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATAs  v  q AnisotropicAnisotropic@;NodeSocketFloatFactor0  DATA0 ?DATA v x s Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`  DATA` ?DATAx  {  v TangentTangent;NodeSocketVector+  DATA+ DATA { } x Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA}   { Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA  } Coat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATA   Coat IORCoat IOR@;NodeSocketFloat   DATA  ??@DATA   Coat TintCoat Tint@53NodeSocketColorP X DATAP ????DATA   Coat NormalCoat Normal;NodeSocketVector+  DATA+ DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@  DATA@ $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp  DATAp , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat X! DATA q=??zDDATA BSDFBSDFD53NodeSocketShader" DATA@xhL "%DATAp < `:   Material OutputbxCShaderNodeOutputMaterial}U|CC CB???H DATA  SurfaceSurfaceD53NodeSocketShaderD# DATA   VolumeVolume@53NodeSocketShader% DATA   DisplacementDisplacement;NodeSocketVector , X& DATA , DATA  ThicknessThickness;NodeSocketFloat ' DATA DATA8D`:  <   MA= GMAsteel #26.001r>>>?????> ?DDATA  NTShader Nodetrees= 03ShaderNodeTree? `A DDmS DATAp? `A     Principled BSDF虅1ShaderNodeBsdfPrincipled`c}U ACpCB???hLM DATA  Base ColorBase Color@53NodeSocketColor ( DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor0 * DATA0 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor` X+ DATA` F??DATA   IORIOR@;NodeSocketFloat , DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor - DATA ??DATA   NormalNormal;NodeSocketVector, / DATA, DATA   WeightWeightH;NodeSocketFloat X0 DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  1 DATA  ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP 2 DATAP ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector, 4 DATA, ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X5 DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor 6 DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor 7 DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor 9 DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor@ X: DATA@ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp ; DATAp ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor < DATA ?DATA   TangentTangent;NodeSocketVector - > DATA - DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X? DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor @ DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 A DATA0 <?DATA   Coat IORCoat IOR@;NodeSocketFloat` C DATA` ??@DATA   Coat TintCoat Tint@53NodeSocketColor XD DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector`- E DATA`- DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor F DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor H DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor  XI DATA  ????DATA   Emission ColorEmission Color@53NodeSocketColorP J DATAP ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat K DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength M DATA , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat XN DATA q=??zDDATA BSDFBSDFD53NodeSocketShaderO DATA@hL "%DATAp`A ?   Material Output[CShaderNodeOutputMaterial}U|CC CB???R DATA  SurfaceSurfaceD53NodeSocketShaderDP DATA   VolumeVolume@53NodeSocketShaderR DATA   DisplacementDisplacement;NodeSocketVector- XS DATA- DATA  ThicknessThickness;NodeSocketFloat T DATA DATA8D? `A   MA C GMAsteel #27t=?????> ?DDATA  NTShader Nodetreeu C 03ShaderNodeTreeD F @D@DnS DATApD F      Principled BSDFDLShaderNodeBsdfPrincipled`c}U ACpCB???iLW DATA  Base ColorBase Color@53NodeSocketColor@ U DATA@ =?DATA   MetallicMetallic@;NodeSocketFloatFactorp W DATAp ?DATA   RoughnessRoughness@;NodeSocketFloatFactor XX DATA m{??DATA   IORIOR@;NodeSocketFloat Y DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor Z DATA ??DATA   NormalNormal;NodeSocketVector . \ DATA . DATA   WeightWeightH;NodeSocketFloat0 X] DATA0 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor` ^ DATA` ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor _ DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`. a DATA`. ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance Xb DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor c DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor d DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP f DATAP ??DATA   Specular TintSpecular Tint@53NodeSocketColor Xg DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor h DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor i DATA ?DATA   TangentTangent;NodeSocketVector. k DATA. DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor Xl DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@ m DATA@ ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp n DATAp <?DATA   Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor X! DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector. " DATA. DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor # DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0 % DATA0 ??DATA   Sheen TintSheen Tint@53NodeSocketColor` X& DATA` ????DATA   Emission ColorEmission Color@53NodeSocketColor ' DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ( DATA $tIDATA    Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength * DATA , PGDATA   Thin Film IORThin Film IOR@;NodeSocketFloat X+ DATA q=??zDDATA BSDFBSDFD53NodeSocketShader, DATA@iL "%DATApF D    Material OutputjACShaderNodeOutputMaterial}U|CC CB???\ DATA   SurfaceSurfaceD53NodeSocketShader@D- DATA    VolumeVolume@53NodeSocketShader/ DATA   DisplacementDisplacement;NodeSocketVector / X0 DATA / DATA  ThicknessThickness;NodeSocketFloatP 1 DATAP DATA8@DD F    MA`H GMAsteel #27.001v=?????>  ?DDATA   NTShader Nodetreew`H 03ShaderNodeTree J K DDoS( DATAp J K     Principled BSDFFShaderNodeBsdfPrincipled`c}U ACpCB???hiLa DATA   Base ColorBase Color@53NodeSocketColor 2 DATA =?DATA    MetallicMetallic@;NodeSocketFloatFactor 4 DATA ?DATA     RoughnessRoughness@;NodeSocketFloatFactor X5 DATA m{??DATA    IORIOR@;NodeSocketFloat 6 DATA ??zDDATA  p   AlphaAlpha@;NodeSocketFloatFactor@ 7 DATA@ ??DATA p r  NormalNormal;NodeSocketVector/ 9 DATA/ DATAr  u  p WeightWeightH;NodeSocketFloatp X: DATAp DATA u w r Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor ; DATA ?DATAw  z  u Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor < DATA ?DATA z | w Subsurface RadiusSubsurface Radius@;NodeSocketVector/ > DATA/ ?L>=BDATA|    z Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X? DATA L= ADATA   | Subsurface IORSubsurface IORH;NodeSocketFloatFactor0 @ DATA0 33?G?33s@DATA    Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` A DATA` ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor C DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor XD DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor E DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor F DATA ?DATA   TangentTangent;NodeSocketVector p H DATA p DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorP XI DATAP ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor J DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor K DATA <?DATA   Coat IORCoat IOR@;NodeSocketFloat M DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor XN DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector`p O DATA`p DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@ P DATA@ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp R DATAp ??DATA   Sheen TintSheen Tint@53NodeSocketColor XS DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor T DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat U DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 W DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` XX DATA` q=??zDDATA BSDFBSDFD53NodeSocketShaderY DATA@hiL "%DATApK  J   Material Output*uCShaderNodeOutputMaterial}U|CC CB???f DATA  SurfaceSurfaceD53NodeSocketShaderDZ DATA   VolumeVolume@53NodeSocketShader\ DATA   DisplacementDisplacement;NodeSocketVectorp X] DATAp DATA  ThicknessThickness;NodeSocketFloat ^ DATA DATA8D J K   MAM GMAsteel #28x>>>?????> ?DDATA  NTShader NodetreeyM 03ShaderNodeTree`O  Q DDp 0 DATAp`O  Q  @    Principled BSDF8ה3ShaderNodeBsdfPrincipled`c}U ACpCB???iLk DATA @ B Base ColorBase Color@53NodeSocketColor _ DATA >>>?DATAB  E  @ MetallicMetallic@;NodeSocketFloatFactor a DATA ?DATA E G B RoughnessRoughness@;NodeSocketFloatFactor Xb DATA I??DATAG  J  E IORIOR@;NodeSocketFloatP c DATAP ??zDDATA J L G AlphaAlpha@;NodeSocketFloatFactor d DATA ??DATAL  O  J NormalNormal;NodeSocketVector q f DATA q DATA O Q L WeightWeightH;NodeSocketFloat Xg DATA DATAQ  T  O Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor h DATA ?DATA T V Q Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor i DATA ?DATAV  Y  T Subsurface RadiusSubsurface Radius@;NodeSocketVector`q k DATA`q ?L>=BDATA Y [ V Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ Xl DATA@ L= ADATA[  ^  Y Subsurface IORSubsurface IORH;NodeSocketFloatFactorp m DATAp 33?G?33s@DATA ^ ` [ Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor n DATA ?DATA`  c  ^ Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA c e ` Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATAe  h  c AnisotropicAnisotropic@;NodeSocketFloatFactor0  DATA0 ?DATA h j e Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`  DATA` ?DATAj  m  h TangentTangent;NodeSocketVectorq  DATAq DATA m o j Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATAo  r  m Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA r t o Coat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATAt  w  r Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA w y t Coat TintCoat Tint@53NodeSocketColorP X DATAP ????DATAy  |  w Coat NormalCoat Normal;NodeSocketVectorq  DATAq DATA | ~ y Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA~   | Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA  ~ Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@  DATA@ $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp  DATAp , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@iL "%DATAp Q `O   Material Output?aCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderD DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector r X DATA r DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8D`O  Q   MAR GMAsteel #3z>>>?????> ?DDATA  NTShader Nodetree{R 03ShaderNodeTreeT `V DDq 8 DATApT `V  7  :  : Principled BSDF'xShaderNodeBsdfPrincipled`c}U ACpCB???jL DATA  Base ColorBase Color@53NodeSocketColor  DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor0  DATA0 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor` X DATA` L??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATA   NormalNormal;NodeSocketVectorr  DATAr DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP  DATAP ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectorr  DATAr ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor@ X DATA@ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp  DATAp ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA   TangentTangent;NodeSocketVector s " DATA s DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X# DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor $ DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 % DATA0 <?DATA   Coat IORCoat IOR@;NodeSocketFloat` ' DATA` ??@DATA   Coat TintCoat Tint@53NodeSocketColor X( DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector`s ) DATA`s DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor * DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor , DATA ??DATA  0  Sheen TintSheen Tint@53NodeSocketColor X- DATA ????DATA 0 2  Emission ColorEmission Color@53NodeSocketColorP . DATAP ????DATA2  5  0 Emission StrengthEmission Strength@;NodeSocketFloat / DATA $tIDATA 5 7 2 Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength 1 DATA , PGDATA7  5 Thin Film IORThin Film IOR@;NodeSocketFloat X2 DATA q=??zDDATA : BSDFBSDFD53NodeSocketShader3 DATA@jL "%DATAp`V T <  D Material Output]9CShaderNodeOutputMaterial}U|CC CB??? DATA<  ? SurfaceSurfaceD53NodeSocketShaderD4 DATA ? A < VolumeVolume@53NodeSocketShader6 DATAA  D  ? DisplacementDisplacement;NodeSocketVectors X7 DATAs DATA D A ThicknessThickness;NodeSocketFloat 8 DATA DATA8DT `V  : < MA X GMAsteel #3.001|>>>?????>F ?DDATA F NTShader Nodetree} X 03ShaderNodeTreeY [ @D@Dr RDATApY [  I    Principled BSDFV~ShaderNodeBsdfPrincipled`c}U ACpCB???XjL DATA I K Base ColorBase Color@53NodeSocketColor@ 9 DATA@ >>>?DATAK  N  I MetallicMetallic@;NodeSocketFloatFactorp ; DATAp ?DATA N P K RoughnessRoughness@;NodeSocketFloatFactor X< DATA I??DATAP  S  N IORIOR@;NodeSocketFloat = DATA ??zDDATA S U P AlphaAlpha@;NodeSocketFloatFactor > DATA ??DATAU  X  S NormalNormal;NodeSocketVector t  DATA t DATA X Z U WeightWeightH;NodeSocketFloat0 X DATA0 DATAZ  ]  X Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`  DATA` ?DATA ] _ Z Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA_  b  ] Subsurface RadiusSubsurface Radius@;NodeSocketVector`t  DATA`t ?L>=BDATA b d _ Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATAd  g  b Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA g i d Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATAi  l  g Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA l n i Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATAn  q  l AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA q s n Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATAs  v  q TangentTangent;NodeSocketVectort  DATAt DATA v x s Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATAx  {  v Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA { } x Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp  DATAp <?DATA}   { Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA  } Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA   Coat NormalCoat Normal;NodeSocketVectort  DATAt DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA   Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@XjL "%DATAp[ Y   Material OutputIJ8fCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShader@D DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector u X DATA u DATA  ThicknessThickness;NodeSocketFloatP  DATAP DATA8@DY [   MA`] GMAsteel #3.004~>>>?????> ?DDATA  NTShader Nodetree`] 03ShaderNodeTree _ ` DDs RDATAp _ `     Principled BSDFc7HShaderNodeBsdfPrincipled`c}U ACpCB???jL DATA  Base ColorBase Color@53NodeSocketColor  DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA F??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA   NormalNormal;NodeSocketVectoru  DATAu DATA   WeightWeightH;NodeSocketFloatp X DATAp DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectoru  DATAu ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA   TangentTangent;NodeSocketVector v  DATA v DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATA   Coat IORCoat IOR@;NodeSocketFloat ! DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor X" DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector`v # DATA`v DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@ $ DATA@ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp & DATAp ??DATA   Sheen TintSheen Tint@53NodeSocketColor X' DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor ( DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ) DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 + DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` X, DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader- DATA@jL "%DATAp`  _   Material Output f?rCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderD. DATA   VolumeVolume@53NodeSocketShader@ DATA   DisplacementDisplacement;NodeSocketVectorv XA DATAv DATA  ThicknessThickness;NodeSocketFloat B DATA DATA8D _ `   MAb GMAsteel #30H>H>H>?????> ?DDATA  NTShader Nodetreeb 03ShaderNodeTree`d  f DDt RDATAp`d  f      Principled BSDFv~\ShaderNodeBsdfPrincipled`c}U ACpCB???jL DATA   Base ColorBase Color@53NodeSocketColor C DATA H>H>H>?DATA     MetallicMetallic@;NodeSocketFloatFactor E DATA ?DATA    RoughnessRoughness@;NodeSocketFloatFactor XF DATA I??DATA    IORIOR@;NodeSocketFloatP G DATAP ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor H DATA ??DATA    NormalNormal;NodeSocketVector w J DATA w DATA    WeightWeightH;NodeSocketFloat XK DATA DATA     Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor L DATA ?DATA    Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor M DATA ?DATA     Subsurface RadiusSubsurface Radius@;NodeSocketVector`w O DATA`w ?L>=BDATA    Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ XP DATA@ L= ADATA    Subsurface IORSubsurface IORH;NodeSocketFloatFactorp Q DATAp 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor R DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor T DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor XU DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0 V DATA0 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` W DATA` ?DATA   TangentTangent;NodeSocketVectorw Y DATAw DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor XZ DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor [ DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor \ DATA <?DATA   Coat IORCoat IOR@;NodeSocketFloat ^ DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColorP X_ DATAP ????DATA   Coat NormalCoat Normal;NodeSocketVectorw ` DATAw DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor a DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor c DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor Xd DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor e DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@ f DATA@ $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp h DATAp , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat Xi DATA q=??zDDATA BSDFBSDFD53NodeSocketShaderj DATA@jL "%DATAp f `d   Material OutputE CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDk DATA   VolumeVolume@53NodeSocketShaderm DATA   DisplacementDisplacement;NodeSocketVector x Xn DATA x DATA  ThicknessThickness;NodeSocketFloat o DATA DATA8D`d  f   MAg GMAsteel #31>>l>?????> ?DDATA  NTShader Nodetreeg 03ShaderNodeTreei `k DDu RDATApi `k  y  |  | Principled BSDF#66ShaderNodeBsdfPrincipled`c}U ACpCB???HkL DATA  Base ColorBase Color@53NodeSocketColor p DATA >>l>?DATA   MetallicMetallic@;NodeSocketFloatFactor0 r DATA0 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor` Xs DATA` 6rQ??DATA   IORIOR@;NodeSocketFloat t DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor u DATA ??DATA   NormalNormal;NodeSocketVectorx w DATAx DATA  @  WeightWeightH;NodeSocketFloat Xx DATA DATA @ B  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor y DATA ?DATAB  E  @ Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP z DATAP ?DATA E G B Subsurface RadiusSubsurface Radius@;NodeSocketVectorx | DATAx ?L>=BDATAG  J  E Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X} DATA L= ADATA J L G Subsurface IORSubsurface IORH;NodeSocketFloatFactor ~ DATA 33?G?33s@DATAL  O  J Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA O Q L Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATAQ  T  O Specular TintSpecular Tint@53NodeSocketColor@ X DATA@ ????DATA T V Q AnisotropicAnisotropic@;NodeSocketFloatFactorp  DATAp ?DATAV  Y  T Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؄ DATA ?DATA Y [ V TangentTangent;NodeSocketVector y  DATA y DATA[  ^  Y Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA ^ ` [ Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA`  c  ^ Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 ؉ DATA0 <?DATA c e ` Coat IORCoat IOR@;NodeSocketFloat`  DATA` ??@DATAe  h  c Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA h j e Coat NormalCoat Normal;NodeSocketVector`y  DATA`y DATAj  m  h Sheen WeightSheen Weight@;NodeSocketFloatFactor ؎ DATA ?DATA m o j Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATAo  r  m Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA r t o Emission ColorEmission Color@53NodeSocketColorP  DATAP ????DATAt  w  r Emission StrengthEmission Strength@;NodeSocketFloat ؓ DATA $tIDATA w y t Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATAy  w Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA | BSDFBSDFD53NodeSocketShader DATA@HkL "%DATAp`k i ~  Material Output9CShaderNodeOutputMaterial}U|CC CB??? DATA~  SurfaceSurfaceD53NodeSocketShaderDؘ DATA  ~ VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVectory X DATAy DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8Di `k  | ~ MA m GMAsteel #35>>>?????> ?DDATA  NTShader Nodetree m 03ShaderNodeTreen p @D@Dv RDATApn p   & ( ( Principled BSDFDDShaderNodeBsdfPrincipled`c}U ACpCB???kL DATA  Base ColorBase Color@53NodeSocketColor@ ؝ DATA@ >>>?DATA   MetallicMetallic@;NodeSocketFloatFactorp  DATAp ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA wM??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor آ DATA ??DATA   NormalNormal;NodeSocketVector z  DATA z DATA   WeightWeightH;NodeSocketFloat0 X DATA0 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`  DATA` ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ا DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`z  DATA`z ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ج DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA   Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA    AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA    Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ر DATA ?DATA     TangentTangent;NodeSocketVectorz  DATAz DATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA    Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp ض DATAp <?DATA    Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA    Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA     Coat NormalCoat Normal;NodeSocketVectorz  DATAz DATA    Sheen WeightSheen Weight@;NodeSocketFloatFactor ػ DATA ?DATA     Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA    Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA  !   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA ! #  Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA#  &  ! Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA & # Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA( BSDFBSDFD53NodeSocketShader DATA@kL "%DATApp n  + 2 Material Output.HCShaderNodeOutputMaterial}U|CC CB??? DATA + - SurfaceSurfaceD53NodeSocketShader@D DATA-  0  + VolumeVolume@53NodeSocketShader DATA 0 2 - DisplacementDisplacement;NodeSocketVector { X DATA { DATA2  0 ThicknessThickness;NodeSocketFloatP  DATAP DATA8@Dn p (  + MA`r GMAsteel #36L>?????> 5 ?DDATA  5 NTShader Nodetree`r 03ShaderNodeTree t u DDw RDATAp t u 7    Principled BSDFOBHShaderNodeBsdfPrincipled`c}U ACpCB???kL DATA7  : Base ColorBase Color@53NodeSocketColor  DATA L>?DATA : < 7 MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA<  ?  : RoughnessRoughness@;NodeSocketFloatFactor X DATA _[??DATA ? A < IORIOR@;NodeSocketFloat  DATA ??zDDATAA  D  ? AlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA D F A NormalNormal;NodeSocketVector{  DATA{ DATAF  I  D WeightWeightH;NodeSocketFloatp X DATAp DATA I K F Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATAK  N  I Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA N P K Subsurface RadiusSubsurface Radius@;NodeSocketVector{  DATA{ ?L>=BDATAP  S  N Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA S U P Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATAU  X  S Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA X Z U Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATAZ  ]  X Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA ] _ Z AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA_  b  ] Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA b d _ TangentTangent;NodeSocketVector |  DATA | DATAd  g  b Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA g i d Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATAi  l  g Coat RoughnessCoat Roughness@;NodeSocketFloatFactor ؃ DATA <?DATA l n i Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATAn  q  l Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA q s n Coat NormalCoat Normal;NodeSocketVector`|  DATA`| DATAs  v  q Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ؈ DATA@ ?DATA v x s Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATAx  {  v Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA { } x Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA}   { Emission StrengthEmission Strength@;NodeSocketFloat ؍ DATA $tIDATA  } Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@kL "%DATApu  t   Material OutputzCCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDؒ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector| X DATA| DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8D t u   MAw GMAsteel #4>>>?????> ?DDATA  NTShader Nodetreew 03ShaderNodeTree`y  { DDx  DATAp`y  {     Principled BSDFujShaderNodeBsdfPrincipled`c}U ACpCB???8lL DATA  Base ColorBase Color@53NodeSocketColor ؗ DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA I??DATA   IORIOR@;NodeSocketFloatP  DATAP ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor ؜ DATA ??DATA   NormalNormal;NodeSocketVector }  DATA } DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ء DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`}  DATA`} ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ X DATA@ L= ADATA    Subsurface IORSubsurface IORH;NodeSocketFloatFactorp  DATAp 33?G?33s@DATA    Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ئ DATA ?DATA     Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA    Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA    AnisotropicAnisotropic@;NodeSocketFloatFactor0  DATA0 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` ث DATA` ?DATA    TangentTangent;NodeSocketVector}  DATA} DATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA     Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA    Coat RoughnessCoat Roughness@;NodeSocketFloatFactor ذ DATA <?DATA     Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA    Coat TintCoat Tint@53NodeSocketColorP X DATAP ????DATA    Coat NormalCoat Normal;NodeSocketVector}  DATA} DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor ص DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor!  DATA! ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@! غ DATA@! $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp!  DATAp! , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat! X DATA! q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@8lL "%DATAp { `y   Material Output1CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDؿ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector ~ X DATA ~ DATA  ThicknessThickness;NodeSocketFloat!  DATA! DATA8D`y  {   MA| GMAsteel #4.001>>>?????> `aL?DDATA  NTShader Nodetree| 03ShaderNodeTree~ ` DDy ( DATAp~ `       Principled BSDF$ ShaderNodeBsdfPrincipled`c}U ACpCB???lL DATA  Base ColorBase Color@53NodeSocketColor"  DATA" >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor0"  DATA0" ?DATA   RoughnessRoughness@;NodeSocketFloatFactor`" X DATA`" F??DATA   IORIOR@;NodeSocketFloat"  DATA" ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor"  DATA" ??DATA   NormalNormal;NodeSocketVector~  DATA~ DATA   WeightWeightH;NodeSocketFloat" X DATA" DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor #  DATA # ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP#  DATAP# ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector~ P DATA~ ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance# XQ DATA# L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor# R DATA# 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor# S DATA# ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor$ U DATA$ ??DATA   Specular TintSpecular Tint@53NodeSocketColor@$ XV DATA@$ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp$ W DATAp$ ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor$ X DATA$ ?DATA   TangentTangent;NodeSocketVector  Z DATA  DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor$ X[ DATA$ ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor% \ DATA% ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0% ] DATA0% <?DATA   Coat IORCoat IOR@;NodeSocketFloat`% _ DATA`% ??@DATA   Coat TintCoat Tint@53NodeSocketColor% X` DATA% ????DATA   Coat NormalCoat Normal;NodeSocketVector` a DATA` DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor% b DATA% ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor% d DATA% ??DATA    Sheen TintSheen Tint@53NodeSocketColor & Xe DATA & ????DATA    Emission ColorEmission Color@53NodeSocketColorP& f DATAP& ????DATA    Emission StrengthEmission Strength@;NodeSocketFloat& g DATA& $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength& i DATA& , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat& Xj DATA& q=??zDDATA  BSDFBSDFD53NodeSocketShaderk DATA@lL "%DATAp` ~    Material Output*>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree  @D@Dz 0 DATAp     h j j Principled BSDFJ!,ShaderNodeBsdfPrincipled`c}U ACpCB???lL DATA   Base ColorBase Color@53NodeSocketColor@' q DATA@' >>>?DATA  "   MetallicMetallic@;NodeSocketFloatFactorp' s DATAp' ?DATA " $  RoughnessRoughness@;NodeSocketFloatFactor' Xt DATA' G??DATA$  '  " IORIOR@;NodeSocketFloat' u DATA' ??zDDATA ' ) $ AlphaAlpha@;NodeSocketFloatFactor( v DATA( ??DATA)  ,  ' NormalNormal;NodeSocketVector`pOx DATA`pODATA , . ) WeightWeightH;NodeSocketFloat0( Xy DATA0( DATA.  1  , Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`( z DATA`( ?DATA 1 3 . Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor( { DATA( ?DATA3  6  1 Subsurface RadiusSubsurface Radius@;NodeSocketVectorpO} DATApO?L>=BDATA 6 8 3 Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance( X~ DATA( L= ADATA8  ;  6 Subsurface IORSubsurface IORH;NodeSocketFloatFactor(  DATA( 33?G?33s@DATA ; = 8 Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ) ؀ DATA ) ?DATA=  @  ; Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP)  DATAP) ??DATA @ B = Specular TintSpecular Tint@53NodeSocketColor) X DATA) ????DATAB  E  @ AnisotropicAnisotropic@;NodeSocketFloatFactor)  DATA) ?DATA E G B Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor) ؅ DATA) ?DATAG  J  E TangentTangent;NodeSocketVectorpO DATApODATA J L G Transmission WeightTransmission Weight@;NodeSocketFloatFactor* X DATA* ?DATAL  O  J Coat WeightCoat Weight@;NodeSocketFloatFactor@*  DATA@* ?DATA O Q L Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp* ؊ DATAp* <?DATAQ  T  O Coat IORCoat IOR@;NodeSocketFloat*  DATA* ??@DATA T V Q Coat TintCoat Tint@53NodeSocketColor* X DATA* ????DATAV  Y  T Coat NormalCoat Normal;NodeSocketVector qO DATA qODATA Y [ V Sheen WeightSheen Weight@;NodeSocketFloatFactor+ ؏ DATA+ ?DATA[  ^  Y Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0+  DATA0+ ??DATA ^ ` [ Sheen TintSheen Tint@53NodeSocketColor`+ X DATA`+ ????DATA`  c  ^ Emission ColorEmission Color@53NodeSocketColor+  DATA+ ????DATA c e ` Emission StrengthEmission Strength@;NodeSocketFloat+ ؔ DATA+ $tIDATAe  h  c Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength+  DATA+ , PGDATA h e Thin Film IORThin Film IOR@;NodeSocketFloat , X DATA , q=??zDDATAj BSDFBSDFD53NodeSocketShader DATA@lL "%DATAp   m t Material OutputW"CShaderNodeOutputMaterial}U|CC CB??? DATA m o SurfaceSurfaceD53NodeSocketShader@Dؙ DATAo  r  m VolumeVolume@53NodeSocketShader DATA r t o DisplacementDisplacement;NodeSocketVector`qOX DATA`qODATAt  r ThicknessThickness;NodeSocketFloatP,  DATAP, DATA8@D  j  m MA` GMAsteel #4.003>>>?????> w ?DDATA  w NTShader Nodetree` 03ShaderNodeTree  DD{ 8 DATAp  y    Principled BSDFtShaderNodeBsdfPrincipled`c}U ACpCB???(mL DATAy  | Base ColorBase Color@53NodeSocketColor, ؞ DATA, >>>?DATA | ~ y MetallicMetallic@;NodeSocketFloatFactor,  DATA, ?DATA~   | RoughnessRoughness@;NodeSocketFloatFactor, X DATA, F??DATA  ~ IORIOR@;NodeSocketFloat-  DATA- ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@- ؓ DATA@- ??DATA   NormalNormal;NodeSocketVectorqO DATAqODATA   WeightWeightH;NodeSocketFloatp- X DATAp- DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor-  DATA- ?DATA  P  Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor- ؘ DATA- ?DATA P R  Subsurface RadiusSubsurface Radius@;NodeSocketVector rO DATA rO?L>=BDATAR  U  P Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance. X DATA. L= ADATA U W R Subsurface IORSubsurface IORH;NodeSocketFloatFactor0.  DATA0. 33?G?33s@DATAW  Z  U Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`. ؝ DATA`. ?DATA Z \ W Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor.  DATA. ??DATA\  _  Z Specular TintSpecular Tint@53NodeSocketColor. X DATA. ????DATA _ a \ AnisotropicAnisotropic@;NodeSocketFloatFactor.  DATA. ?DATAa  d  _ Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor / آ DATA / ?DATA d f a TangentTangent;NodeSocketVector`rO DATA`rODATAf  i  d Transmission WeightTransmission Weight@;NodeSocketFloatFactorP/ X DATAP/ ?DATA i k f Coat WeightCoat Weight@;NodeSocketFloatFactor/  DATA/ ?DATAk  n  i Coat RoughnessCoat Roughness@;NodeSocketFloatFactor/ ا DATA/ <?DATA n p k Coat IORCoat IOR@;NodeSocketFloat/  DATA/ ??@DATAp  s  n Coat TintCoat Tint@53NodeSocketColor0 X DATA0 ????DATA s u p Coat NormalCoat Normal;NodeSocketVectorrO DATArODATAu  x  s Sheen WeightSheen Weight@;NodeSocketFloatFactor@0 ج DATA@0 ?DATA x z u Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp0  DATAp0 ??DATAz  }  x Sheen TintSheen Tint@53NodeSocketColor0 X DATA0 ????DATA }  z Emission ColorEmission Color@53NodeSocketColor0  DATA0 ????DATA   } Emission StrengthEmission Strength@;NodeSocketFloat1 ر DATA1 $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength01  DATA01 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat`1 X DATA`1 q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@(mL "%DATAp    Material OutputgVoCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDض DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVectorrOX DATArODATA  ThicknessThickness;NodeSocketFloat1  DATA1 DATA8D    MA GMAsteel #4.005>>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree`  DD| ODATAp`      Principled BSDFpB[ShaderNodeBsdfPrincipled`c}U ACpCB???xmL DATA  Base ColorBase Color@53NodeSocketColor1 ػ DATA1 >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor1  DATA1 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor 2 X DATA 2 F??DATA   IORIOR@;NodeSocketFloatP2  DATAP2 ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor2  DATA2 ??DATA   NormalNormal;NodeSocketVector`sO DATA`sODATA   WeightWeightH;NodeSocketFloat2 X DATA2 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor2  DATA2 ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor3  DATA3 ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectorsO DATAsO?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@3 X DATA@3 L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp3  DATAp3 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor3  DATA3 ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor3  DATA3 ??DATA   Specular TintSpecular Tint@53NodeSocketColor4 X DATA4 ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor04  DATA04 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`4  DATA`4 ?DATA   TangentTangent;NodeSocketVectorsO DATAsODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor4 X DATA4 ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor4  DATA4 ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor4  DATA4 <?DATA   Coat IORCoat IOR@;NodeSocketFloat 5  DATA 5 ??@DATA   Coat TintCoat Tint@53NodeSocketColorP5 X DATAP5 ????DATA   Coat NormalCoat Normal;NodeSocketVector tO DATA tODATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor5  DATA5 ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor5  DATA5 ??DATA   Sheen TintSheen Tint@53NodeSocketColor5 X DATA5 ????DATA   Emission ColorEmission Color@53NodeSocketColor6  DATA6 ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@6  DATA@6 $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp6 @ DATAp6 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat6 XA DATA6 q=??zDDATA BSDFBSDFD53NodeSocketShaderB DATA@xmL "%DATAp `   Material Output CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDC DATA   VolumeVolume@53NodeSocketShaderE DATA   DisplacementDisplacement;NodeSocketVector`tOXF DATA`tODATA  ThicknessThickness;NodeSocketFloat6 G DATA6 DATA8D`    MA GMAsteel #40>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree ` DD} ODATAp `       Principled BSDFG.ShaderNodeBsdfPrincipled`c}U ACpCB???mL DATA  Base ColorBase Color@53NodeSocketColor7 H DATA7 >?DATA   MetallicMetallic@;NodeSocketFloatFactor07 J DATA07 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor`7 XK DATA`7 t??DATA   IORIOR@;NodeSocketFloat7 L DATA7 ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor7 M DATA7 ??DATA   NormalNormal;NodeSocketVectortOO DATAtODATA   WeightWeightH;NodeSocketFloat7 XP DATA7 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor 8 Q DATA 8 ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP8 R DATAP8 ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector uOT DATA uO?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance8 XU DATA8 L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor8 V DATA8 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor8 W DATA8 ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor9 Y DATA9 ??DATA   Specular TintSpecular Tint@53NodeSocketColor@9 XZ DATA@9 ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp9 [ DATAp9 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor9 \ DATA9 ?DATA   TangentTangent;NodeSocketVector`uO^ DATA`uODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor9 X_ DATA9 ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor: ` DATA: ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0: a DATA0: <?DATA   Coat IORCoat IOR@;NodeSocketFloat`: c DATA`: ??@DATA   Coat TintCoat Tint@53NodeSocketColor: Xd DATA: ????DATA   Coat NormalCoat Normal;NodeSocketVectoruOe DATAuODATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor: f DATA: ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor: h DATA: ??DATA   Sheen TintSheen Tint@53NodeSocketColor ; Xi DATA ; ????DATA   Emission ColorEmission Color@53NodeSocketColorP; j DATAP; ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat; k DATA; $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength; m DATA; , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat; Xn DATA; q=??zDDATA  BSDFBSDFD53NodeSocketShadero DATA@mL "%DATAp`     Material OutputL|CShaderNodeOutputMaterial}U|CC CB??? DATA   SurfaceSurfaceD53NodeSocketShaderDp DATA    VolumeVolume@53NodeSocketShaderr DATA     DisplacementDisplacement;NodeSocketVectoruOXs DATAuODATA   ThicknessThickness;NodeSocketFloat< t DATA< DATA8D `    MA GMAsteel #41=>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree  @D@D~ ODATAp       Principled BSDFDpShaderNodeBsdfPrincipled`c}U ACpCB???nL DATA  ! Base ColorBase Color@53NodeSocketColor@< u DATA@< =>>?DATA!  $   MetallicMetallic@;NodeSocketFloatFactorp< w DATAp< ?DATA $ & ! RoughnessRoughness@;NodeSocketFloatFactor< Xx DATA< sQ??DATA&  )  $ IORIOR@;NodeSocketFloat< y DATA< ??zDDATA ) + & AlphaAlpha@;NodeSocketFloatFactor= z DATA= ??DATA+  .  ) NormalNormal;NodeSocketVector`vO| DATA`vODATA . 0 + WeightWeightH;NodeSocketFloat0= X} DATA0= DATA0  3  . Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`= ~ DATA`= ?DATA 3 5 0 Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor=  DATA= ?DATA5  8  3 Subsurface RadiusSubsurface Radius@;NodeSocketVectorvO DATAvO?L>=BDATA 8 : 5 Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance= X DATA= L= ADATA:  =  8 Subsurface IORSubsurface IORH;NodeSocketFloatFactor=  DATA= 33?G?33s@DATA = ? : Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor > ؄ DATA > ?DATA?  B  = Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP>  DATAP> ??DATA B D ? Specular TintSpecular Tint@53NodeSocketColor> X DATA> ????DATAD  G  B AnisotropicAnisotropic@;NodeSocketFloatFactor>  DATA> ?DATA G I D Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor> ؉ DATA> ?DATAI  L  G TangentTangent;NodeSocketVectorvO DATAvODATA L N I Transmission WeightTransmission Weight@;NodeSocketFloatFactor? X DATA? ?DATAN  Q  L Coat WeightCoat Weight@;NodeSocketFloatFactor@?  DATA@? ?DATA Q S N Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp? ؎ DATAp? <?DATAS  V  Q Coat IORCoat IOR@;NodeSocketFloat? ` DATA? ??@DATA V X S Coat TintCoat Tint@53NodeSocketColor? Xa DATA? ????DATAX  [  V Coat NormalCoat Normal;NodeSocketVector wOb DATA wODATA [ ] X Sheen WeightSheen Weight@;NodeSocketFloatFactor@ c DATA@ ?DATA]   [ Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0@ e DATA0@ ??DATA  ] Sheen TintSheen Tint@53NodeSocketColor`@ Xf DATA`@ ????DATA   Emission ColorEmission Color@53NodeSocketColor@ g DATA@ ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@ h DATA@ $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength@ j DATA@ , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat A Xk DATA A q=??zDDATA BSDFBSDFD53NodeSocketShaderl DATA@nL "%DATAp    Material Output"CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShader@Dm DATA   VolumeVolume@53NodeSocketShadero DATA   DisplacementDisplacement;NodeSocketVector`wOXp DATA`wODATA  ThicknessThickness;NodeSocketFloatPA q DATAPA DATA8@D    MA` GMAsteel #5>>>?????> ?DDATA  NTShader Nodetree` 03ShaderNodeTree  DD ODATAp      Principled BSDFShaderNodeBsdfPrincipled`c}U ACpCB???hnL! DATA  Base ColorBase Color@53NodeSocketColorA r DATAA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactorA t DATAA ?DATA   RoughnessRoughness@;NodeSocketFloatFactorA Xu DATAA F??DATA   IORIOR@;NodeSocketFloatB v DATAB ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@B w DATA@B ??DATA   NormalNormal;NodeSocketVectorwOy DATAwODATA   WeightWeightH;NodeSocketFloatpB Xz DATApB DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorB { DATAB ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorB | DATAB ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector xO~ DATA xO?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceC X DATAC L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0C  DATA0C 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`C ؁ DATA`C ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorC  DATAC ??DATA   Specular TintSpecular Tint@53NodeSocketColorC X DATAC ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorC  DATAC ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor D ؆ DATA D ?DATA   TangentTangent;NodeSocketVector`xO DATA`xODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorPD X DATAPD ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactorD  DATAD ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorD ؋ DATAD <?DATA   Coat IORCoat IOR@;NodeSocketFloatD  DATAD ??@DATA   Coat TintCoat Tint@53NodeSocketColorE X DATAE ????DATA   Coat NormalCoat Normal;NodeSocketVectorxO DATAxODATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@E ؐ DATA@E ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorpE  DATApE ??DATA   Sheen TintSheen Tint@53NodeSocketColorE X DATAE ????DATA   Emission ColorEmission Color@53NodeSocketColorE  DATAE ????DATA   Emission StrengthEmission Strength@;NodeSocketFloatF ؕ DATAF $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0F  DATA0F , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat`F X DATA`F q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@hnL "%DATAp    Material Output\e CShaderNodeOutputMaterial}U|CC CB???& DATA  SurfaceSurfaceD53NodeSocketShaderDؚ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVectorxOX DATAxODATA  ThicknessThickness;NodeSocketFloatF  DATAF DATA8D    MA GMAsteel #7L>L>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree`  DD0  DATAp`      Principled BSDFXMShaderNodeBsdfPrincipled`c}U ACpCB???nL+ DATA  Base ColorBase Color@53NodeSocketColorF ؟ DATAF L>L>>?DATA   MetallicMetallic@;NodeSocketFloatFactorF  DATAF ?DATA   RoughnessRoughness@;NodeSocketFloatFactor G X DATA G :ka??DATA   IORIOR@;NodeSocketFloatPG  DATAPG ??zDDATA   AlphaAlpha@;NodeSocketFloatFactorG ؤ DATAG ??DATA   NormalNormal;NodeSocketVector`yO DATA`yODATA   WeightWeightH;NodeSocketFloatG X DATAG DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorG  DATAG ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorH ة DATAH ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectoryO DATAyO?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@H X DATA@H L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorpH  DATApH 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorH خ DATAH ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorH 0 DATAH ??DATA   Specular TintSpecular Tint@53NodeSocketColorI X1 DATAI ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0I 2 DATA0I ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`I 3 DATA`I ?DATA   TangentTangent;NodeSocketVectoryO5 DATAyODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorI X6 DATAI ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactorI 7 DATAI ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorI 8 DATAI <?DATA   Coat IORCoat IOR@;NodeSocketFloat J : DATA J ??@DATA   Coat TintCoat Tint@53NodeSocketColorPJ X; DATAPJ ????DATA   Coat NormalCoat Normal;NodeSocketVector zO< DATA zODATA   Sheen WeightSheen Weight@;NodeSocketFloatFactorJ = DATAJ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorJ ? DATAJ ??DATA   Sheen TintSheen Tint@53NodeSocketColorJ X@ DATAJ ????DATA   Emission ColorEmission Color@53NodeSocketColorK A DATAK ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@K B DATA@K $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthpK D DATApK , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatK XE DATAK q=??zDDATA BSDFBSDFD53NodeSocketShaderF DATA@nL "%DATAp `   Material Output8,CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderDG DATA   VolumeVolume@53NodeSocketShaderI DATA   DisplacementDisplacement;NodeSocketVector`zOXJ DATA`zODATA  ThicknessThickness;NodeSocketFloatK K DATAK DATA8D`    MA GMAsteel.001>>>?????>  ?DDATA   NTShader Nodetree 03ShaderNodeTree ` DD1  DATAp `  O  R  R Principled BSDFLa3ShaderNodeBsdfPrincipled`c}U ACpCB???oL DATA   Base ColorBase Color@53NodeSocketColorL L DATAL >>>?DATA    MetallicMetallic@;NodeSocketFloatFactor0L N DATA0L ?DATA    RoughnessRoughness@;NodeSocketFloatFactor`L XO DATA`L I??DATA   IORIOR@;NodeSocketFloatL P DATAL ??zDDATA    AlphaAlpha@;NodeSocketFloatFactorL Q DATAL ??DATA    NormalNormal;NodeSocketVectorzOS DATAzODATA     WeightWeightH;NodeSocketFloatL XT DATAL DATA    Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor M U DATA M ?DATA     Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorPM V DATAPM ?DATA    Subsurface RadiusSubsurface Radius@;NodeSocketVector {OX DATA {O?L>=BDATA    Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceM XY DATAM L= ADATA "  Subsurface IORSubsurface IORH;NodeSocketFloatFactorM Z DATAM 33?G?33s@DATA"  %  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorM [ DATAM ?DATA % ' " Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorN ] DATAN ??DATA'  *  % Specular TintSpecular Tint@53NodeSocketColor@N X^ DATA@N ????DATA * , ' AnisotropicAnisotropic@;NodeSocketFloatFactorpN _ DATApN ?DATA,  /  * Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorN ` DATAN ?DATA / 1 , TangentTangent;NodeSocketVector`{Ob DATA`{ODATA1  4  / Transmission WeightTransmission Weight@;NodeSocketFloatFactorN Xc DATAN ?DATA 4 6 1 Coat WeightCoat Weight@;NodeSocketFloatFactorO d DATAO ?DATA6  9  4 Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0O e DATA0O <?DATA 9 ; 6 Coat IORCoat IOR@;NodeSocketFloat`O g DATA`O ??@DATA;  >  9 Coat TintCoat Tint@53NodeSocketColorO Xh DATAO ????DATA > @ ; Coat NormalCoat Normal;NodeSocketVector{Oi DATA{ODATA@  C  > Sheen WeightSheen Weight@;NodeSocketFloatFactorO j DATAO ?DATA C E @ Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorO l DATAO ??DATAE  H  C Sheen TintSheen Tint@53NodeSocketColor Xm DATA ????DATA H J E Emission ColorEmission Color@53NodeSocketColorP n DATAP ????DATAJ  M  H Emission StrengthEmission Strength@;NodeSocketFloat o DATA $tIDATA M O J Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength q DATA , PGDATAO  M Thin Film IORThin Film IOR@;NodeSocketFloat Xr DATA q=??zDDATA R BSDFBSDFD53NodeSocketShaders DATA@oL "%DATAp`  T  \ Material OutputCShaderNodeOutputMaterial}U|CC CB??? DATAT  W SurfaceSurfaceD53NodeSocketShaderDt DATA W Y T VolumeVolume@53NodeSocketShaderv DATAY  \  W DisplacementDisplacement;NodeSocketVector{OXw DATA{ODATA \ Y ThicknessThickness;NodeSocketFloat x DATA DATA8D `  R T MA GMAsteel.002>>>?????>^ ?DDATA ^ NTShader Nodetree 03ShaderNodeTree  @D@D2  DATAp   a    Principled BSDFTN ShaderNodeBsdfPrincipled`c}U ACpCB???XoL DATA a c Base ColorBase Color@53NodeSocketColor@ y DATA@ >>>?DATAc  f  a MetallicMetallic@;NodeSocketFloatFactorp { DATAp ?DATA f h c RoughnessRoughness@;NodeSocketFloatFactor X| DATA F??DATAh  k  f IORIOR@;NodeSocketFloat } DATA ??zDDATA k m h AlphaAlpha@;NodeSocketFloatFactor ~ DATA ??DATAm   k NormalNormal;NodeSocketVector`|Op DATA`|ODATA  m WeightWeightH;NodeSocketFloat0 Xq DATA0 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor` r DATA` ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor s DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector|Ou DATA|O?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance Xv DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor w DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  x DATA  ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP z DATAP ??DATA   Specular TintSpecular Tint@53NodeSocketColor X{ DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor | DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor } DATA ?DATA   TangentTangent;NodeSocketVector|O DATA|ODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp ؂ DATAp <?DATA   Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector }O DATA }ODATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor ؇ DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA   Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ، DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat  X DATA  q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@XoL "%DATAp     Material Output7nCShaderNodeOutputMaterial}U|CC CB??? DATA   SurfaceSurfaceD53NodeSocketShader@Dؑ DATA     VolumeVolume@53NodeSocketShader DATA    DisplacementDisplacement;NodeSocketVector`}OX DATA`}ODATA   ThicknessThickness;NodeSocketFloatP  DATAP DATA8@D     MA` GMAtexture===?????> ?DDATA  NTShader Nodetree` 03ShaderNodeTree   DD3  DATAp    h  k  k Principled BSDFOShaderNodeBsdfPrincipled`c}U ACpCB???oL DATA  Base ColorBase Color@53NodeSocketColor ؖ DATA ===?DATA "  MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA"  %  RoughnessRoughness@;NodeSocketFloatFactor X DATA I??DATA % ' " IORIOR@;NodeSocketFloat  DATA ??zDDATA'  *  % AlphaAlpha@;NodeSocketFloatFactor@ ؛ DATA@ ??DATA * , ' NormalNormal;NodeSocketVector}O DATA}ODATA,  /  * WeightWeightH;NodeSocketFloatp X DATAp DATA / 1 , Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA1  4  / Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ؠ DATA ?DATA 4 6 1 Subsurface RadiusSubsurface Radius@;NodeSocketVector ~O DATA ~O?L>=BDATA6  9  4 Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA 9 ; 6 Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA;  >  9 Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` إ DATA` ?DATA > @ ; Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA@  C  > Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA C E @ AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATAE  H  C Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ت DATA ?DATA H J E TangentTangent;NodeSocketVector`~O DATA`~ODATAJ  M  H Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA M O J Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATAO  R  M Coat RoughnessCoat Roughness@;NodeSocketFloatFactor د DATA <?DATA R T O Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATAT  W  R Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA W Y T Coat NormalCoat Normal;NodeSocketVector~O DATA~ODATAY  \  W Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ش DATA@ ?DATA \ ^ Y Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATA^  a  \ Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA a c ^ Emission ColorEmission Color@53NodeSocketColor  DATA ????DATAc  f  a Emission StrengthEmission Strength@;NodeSocketFloat ع DATA $tIDATA f h c Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATAh  f Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA k BSDFBSDFD53NodeSocketShader DATA@oL "%DATAp   m  Material Output>~CShaderNodeOutputMaterial}U|CC CB??? DATAm  SurfaceSurfaceD53NodeSocketShaderDؾ DATA  m VolumeVolume@53NodeSocketShaderp DATA   DisplacementDisplacement;NodeSocketVector~OXq DATA~ODATA  ThicknessThickness;NodeSocketFloat r DATA DATA8D    k m MA GMAtexture #10>4>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree`  DD4  DATAp`    u w w Principled BSDFnLrShaderNodeBsdfPrincipled`c}U ACpCB???oL DATA  Base ColorBase Color@53NodeSocketColor s DATA >4>>?DATA   MetallicMetallic@;NodeSocketFloatFactor u DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor Xv DATA *|Z??DATA   IORIOR@;NodeSocketFloatP w DATAP ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor x DATA ??DATA   NormalNormal;NodeSocketVector`Oz DATA`ODATA   WeightWeightH;NodeSocketFloat X{ DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor | DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor } DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVectorO DATAO?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ X DATA@ L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp  DATAp 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ؂ DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0  DATA0 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` ؇ DATA` ?DATA   TangentTangent;NodeSocketVectorO DATAODATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor ، DATA <?DATA    Coat IORCoat IOR@;NodeSocketFloat   DATA  ??@DATA    Coat TintCoat Tint@53NodeSocketColorP X DATAP ????DATA     Coat NormalCoat Normal;NodeSocketVector   DATA  DATA    Sheen WeightSheen Weight@;NodeSocketFloatFactor ؑ DATA ?DATA    Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA  p  Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA p r  Emission StrengthEmission Strength@;NodeSocketFloat@ ؖ DATA@ $tIDATAr  u  p Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp  DATAp , PGDATA u r Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATAw BSDFBSDFD53NodeSocketShader DATA@oL "%DATAp `  z  Material OutputP%CShaderNodeOutputMaterial}U|CC CB??? DATA z | SurfaceSurfaceD53NodeSocketShaderD؛ DATA|    z VolumeVolume@53NodeSocketShader DATA   | DisplacementDisplacement;NodeSocketVector` X DATA` DATA   ThicknessThickness;NodeSocketFloat  DATA DATA8D`  w  z MA GMAtexture #13>>=?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree ` DD5  DATAp `  !  $  $ Principled BSDF,2ShaderNodeBsdfPrincipled`c}U ACpCB???HpL DATA  Base ColorBase Color@53NodeSocketColor ؠ DATA >>=?DATA   MetallicMetallic@;NodeSocketFloatFactor0  DATA0 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor` X DATA` IN??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor إ DATA ??DATA   NormalNormal;NodeSocketVector  DATA DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor   DATA  ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP ت DATAP ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector   DATA  ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor د DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor@ X DATA@ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp  DATAp ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ش DATA ?DATA   TangentTangent;NodeSocketVector`  DATA` DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 ع DATA0 <?DATA   Coat IORCoat IOR@;NodeSocketFloat`  DATA` ??@DATA    Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA    Coat NormalCoat Normal;NodeSocketVector  DATA DATA     Sheen WeightSheen Weight@;NodeSocketFloatFactor ؾ DATA ?DATA    Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATA     Sheen TintSheen Tint@53NodeSocketColor  X DATA  ????DATA    Emission ColorEmission Color@53NodeSocketColorP  DATAP ????DATA     Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA  !  Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA!   Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA $ BSDFBSDFD53NodeSocketShader DATA@HpL "%DATAp`  &  . Material Output^xCShaderNodeOutputMaterial}U|CC CB???" DATA&  ) SurfaceSurfaceD53NodeSocketShaderD DATA ) + & VolumeVolume@53NodeSocketShader DATA+  .  ) DisplacementDisplacement;NodeSocketVector X DATA DATA . + ThicknessThickness;NodeSocketFloat  DATA DATA8D `  $ & MA  GMAtexture #14>>>?????>0 ?DDATA 0 NTShader Nodetree  03ShaderNodeTree  @D@D6  DATAp   3  ~   Principled BSDF<ShaderNodeBsdfPrincipled`c}U ACpCB???pL' DATA 3 5 Base ColorBase Color@53NodeSocketColor@  DATA@ >>>?DATA5  8  3 MetallicMetallic@;NodeSocketFloatFactorp  DATAp ?DATA 8 : 5 RoughnessRoughness@;NodeSocketFloatFactor X DATA H??DATA:  =  8 IORIOR@;NodeSocketFloat  DATA ??zDDATA = ? : AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATA?  B  = NormalNormal;NodeSocketVector`  DATA` DATA B D ? WeightWeightH;NodeSocketFloat0 X DATA0 DATAD  G  B Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`  DATA` ?DATA G I D Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATAI  L  G Subsurface RadiusSubsurface Radius@;NodeSocketVector  DATA ?L>=BDATA L N I Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATAN  Q  L Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA Q S N Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor   DATA  ?DATAS  V  Q Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA V X S Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATAX  [  V AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA [ ] X Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA]  `  [ TangentTangent;NodeSocketVector  DATA DATA ` b ] Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATAb  e  ` Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA e g b Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp  DATAp <?DATAg  j  e Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA j l g Coat TintCoat Tint@53NodeSocketColor X DATA ????DATAl  o  j Coat NormalCoat Normal;NodeSocketVector   DATA  DATA o q l Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATAq  t  o Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA t v q Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATAv  y  t Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA y { v Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA{  ~  y Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA ~ { Thin Film IORThin Film IOR@;NodeSocketFloat  X DATA  q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@pL "%DATAp    Material Output~|CShaderNodeOutputMaterial}U|CC CB???, DATA  SurfaceSurfaceD53NodeSocketShader@D DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector` X DATA` DATA  ThicknessThickness;NodeSocketFloatP  DATAP DATA8@D    MA` GMAtexture #15L>L>>?????> ?DDATA  NTShader Nodetree` 03ShaderNodeTree   DD7  DATAp       Principled BSDFO ShaderNodeBsdfPrincipled`c}U ACpCB???pL1 DATA  Base ColorBase Color@53NodeSocketColor  DATA L>L>>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA )s\??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA   NormalNormal;NodeSocketVector  DATA DATA   WeightWeightH;NodeSocketFloatp X DATAp DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector   DATA  ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor   DATA  ?DATA   TangentTangent;NodeSocketVector` P DATA` DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorP XQ DATAP ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor R DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor S DATA <?DATA   Coat IORCoat IOR@;NodeSocketFloat U DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor XV DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector W DATA DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@ X DATA@ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp Z DATAp ??DATA   Sheen TintSheen Tint@53NodeSocketColor X[ DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor \ DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat ] DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 _ DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` X` DATA` q=??zDDATA BSDFBSDFD53NodeSocketShadera DATA@pL "%DATAp     Material OutputvCShaderNodeOutputMaterial}U|CC CB???6 DATA  SurfaceSurfaceD53NodeSocketShaderDb DATA   VolumeVolume@53NodeSocketShaderd DATA   DisplacementDisplacement;NodeSocketVector Xe DATA DATA  ThicknessThickness;NodeSocketFloat f DATA DATA8D     MA GMAtexture #16>>L>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree`   DD8  DATAp`       Principled BSDFj9cShaderNodeBsdfPrincipled`c}U ACpCB???8qL; DATA  Base ColorBase Color@53NodeSocketColor g DATA >>L>?DATA   MetallicMetallic@;NodeSocketFloatFactor i DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor ! Xj DATA ! +N??DATA   IORIOR@;NodeSocketFloatP! k DATAP! ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor! l DATA! ??DATA   NormalNormal;NodeSocketVector` n DATA` DATA   WeightWeightH;NodeSocketFloat! Xo DATA! DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor! p DATA! ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor" q DATA" ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector s DATA ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@" Xt DATA@" L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp" u DATAp" 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor" v DATA" ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor" x DATA" ??DATA   Specular TintSpecular Tint@53NodeSocketColor# Xy DATA# ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0# z DATA0# ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`# { DATA`# ?DATA   TangentTangent;NodeSocketVector } DATA DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor# X~ DATA# ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor#  DATA# ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor# ؀ DATA# <?DATA   Coat IORCoat IOR@;NodeSocketFloat $  DATA $ ??@DATA   Coat TintCoat Tint@53NodeSocketColorP$ X DATAP$ ????DATA   Coat NormalCoat Normal;NodeSocketVector   DATA  DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor$ ؅ DATA$ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor$  DATA$ ??DATA   Sheen TintSheen Tint@53NodeSocketColor$ X DATA$ ????DATA   Emission ColorEmission Color@53NodeSocketColor%  DATA% ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat@% ؊ DATA@% $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp%  DATAp% , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat% X DATA% q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@8qL "%DATAp  `   Material OutputfooCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderD؏ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector` X DATA` DATA  ThicknessThickness;NodeSocketFloat%  DATA% DATA8D`     MA GMAtexture #17>>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree" `$ DD9  DATAp" `$     Principled BSDFDShaderNodeBsdfPrincipled`c}U ACpCB???qL DATA  Base ColorBase Color@53NodeSocketColor& ؔ DATA& >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor0&  DATA0& ?DATA  @  RoughnessRoughness@;NodeSocketFloatFactor`& X DATA`& S??DATA @ B  IORIOR@;NodeSocketFloat&  DATA& ??zDDATAB  E  @ AlphaAlpha@;NodeSocketFloatFactor& ؙ DATA& ??DATA E G B NormalNormal;NodeSocketVector  DATA DATAG  J  E WeightWeightH;NodeSocketFloat& X DATA& DATA J L G Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor '  DATA ' ?DATAL  O  J Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP' ؞ DATAP' ?DATA O Q L Subsurface RadiusSubsurface Radius@;NodeSocketVector   DATA  ?L>=BDATAQ  T  O Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance' X DATA' L= ADATA T V Q Subsurface IORSubsurface IORH;NodeSocketFloatFactor'  DATA' 33?G?33s@DATAV  Y  T Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor'  DATA' ?DATA Y [ V Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor(  DATA( ??DATA[  ^  Y Specular TintSpecular Tint@53NodeSocketColor@( X DATA@( ????DATA ^ ` [ AnisotropicAnisotropic@;NodeSocketFloatFactorp(  DATAp( ?DATA`  c  ^ Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor(  DATA( ?DATA c e ` TangentTangent;NodeSocketVector`  DATA` DATAe  h  c Transmission WeightTransmission Weight@;NodeSocketFloatFactor( X DATA( ?DATA h j e Coat WeightCoat Weight@;NodeSocketFloatFactor)  DATA) ?DATAj  m  h Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0)  DATA0) <?DATA m o j Coat IORCoat IOR@;NodeSocketFloat`)  DATA`) ??@DATAo  r  m Coat TintCoat Tint@53NodeSocketColor) X DATA) ????DATA r t o Coat NormalCoat Normal;NodeSocketVector  DATA DATAt  w  r Sheen WeightSheen Weight@;NodeSocketFloatFactor)  DATA) ?DATA w y t Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor)  DATA) ??DATAy  |  w Sheen TintSheen Tint@53NodeSocketColor * X DATA * ????DATA | ~ y Emission ColorEmission Color@53NodeSocketColorP*  DATAP* ????DATA~   | Emission StrengthEmission Strength@;NodeSocketFloat*  DATA* $tIDATA  ~ Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength*  DATA* , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat* X DATA* q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@qL "%DATAp`$ "   Material OutputCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderD DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector X DATA DATA  ThicknessThickness;NodeSocketFloat+  DATA+ DATA8D" `$   MA & GMAtexture #18>>>?????> ?DDATA  NTShader Nodetree & 03ShaderNodeTree' ) @D@D:  DATAp' )   `bbPrincipled BSDF6ShaderNodeBsdfPrincipled`c}U ACpCB???qL DATA  Base ColorBase Color@53NodeSocketColor@+  DATA@+ >>>?DATA   MetallicMetallic@;NodeSocketFloatFactorp+  DATAp+ ?DATA   RoughnessRoughness@;NodeSocketFloatFactor+ X DATA+ F??DATA   IORIOR@;NodeSocketFloat+  DATA+ ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor,  DATA, ??DATA   NormalNormal;NodeSocketVector`  DATA` DATA   WeightWeightH;NodeSocketFloat0, X DATA0, DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`,  DATA`, ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor,  DATA, ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector  DATA ?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance, X DATA, L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor,  DATA, 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor -  DATA - ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP- " DATAP- ??DATA   Specular TintSpecular Tint@53NodeSocketColor- X# DATA- ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor- $ DATA- ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor- % DATA- ?DATA   TangentTangent;NodeSocketVector ' DATA DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor. X( DATA. ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@. ) DATA@. ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp. * DATAp. <?DATA   Coat IORCoat IOR@;NodeSocketFloat. , DATA. ??@DATA   Coat TintCoat Tint@53NodeSocketColor. X- DATA. ????DATA   Coat NormalCoat Normal;NodeSocketVector  . DATA  DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor/ / DATA/ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0/ 1 DATA0/ ??DATA   Sheen TintSheen Tint@53NodeSocketColor`/ X2 DATA`/ ????DATA   Emission ColorEmission Color@53NodeSocketColor/ 3 DATA/ ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat/ 4 DATA/ $tIDATA  ` Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength/ 6 DATA/ , PGDATA ` Thin Film IORThin Film IOR@;NodeSocketFloat X7 DATA q=??zDDATAbBSDFBSDFD53NodeSocketShader8 DATA@qL "%DATAp) '  elMaterial Output"/"CShaderNodeOutputMaterial}U|CC CB???$ DATA egSurfaceSurfaceD53NodeSocketShader@D9 DATAg j eVolumeVolume@53NodeSocketShader; DATA jlgDisplacementDisplacement;NodeSocketVector` X< DATA` DATAl jThicknessThickness;NodeSocketFloatP = DATAP DATA8@D' ) b eMA`+ GMAtexture #22L>L>>?????> o?DDATA  oNTShader Nodetree`+ 03ShaderNodeTree - . DD; ( DATAp - . q  Principled BSDFF)YShaderNodeBsdfPrincipled`c}U ACpCB???(rL) DATAq tBase ColorBase Color@53NodeSocketColor > DATA L>L>>?DATA tvqMetallicMetallic@;NodeSocketFloatFactor DATA ?DATAv y tRoughnessRoughness@;NodeSocketFloatFactor XDATA f b??DATA y{vIORIOR@;NodeSocketFloat DATA ??zDDATA{ ~ yAlphaAlpha@;NodeSocketFloatFactor@ DATA@ ??DATA ~{NormalNormal;NodeSocketVector DATA DATA  ~WeightWeightH;NodeSocketFloatp XDATAp DATA Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA  Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor DATA ?DATA Subsurface RadiusSubsurface Radius@;NodeSocketVector  DATA  ?L>=BDATA  Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA Subsurface IORSubsurface IORH;NodeSocketFloatFactor0 DATA0 33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` DATA` ?DATA Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA  Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA AnisotropicAnisotropic@;NodeSocketFloatFactor !DATA ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor "DATA ?DATA TangentTangent;NodeSocketVector` $DATA` DATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X%DATAP ?DATA Coat WeightCoat Weight@;NodeSocketFloatFactor &DATA ?DATA  Coat RoughnessCoat Roughness@;NodeSocketFloatFactor 'DATA <?DATA Coat IORCoat IOR@;NodeSocketFloat )DATA ??@DATA  Coat TintCoat Tint@53NodeSocketColor X*DATA ????DATA Coat NormalCoat Normal;NodeSocketVector +DATA DATA  Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ,DATA@ ?DATA Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp .DATAp ??DATA  Sheen TintSheen Tint@53NodeSocketColor X/DATA ????DATA Emission ColorEmission Color@53NodeSocketColor 0DATA ????DATA  Emission StrengthEmission Strength@;NodeSocketFloat 1DATA $tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 3DATA0 , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat` X4DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader5DATA@(rL "%DATAp.  -  Material Output^}CShaderNodeOutputMaterial}U|CC CB???. DATA SurfaceSurfaceD53NodeSocketShaderD6DATA VolumeVolume@53NodeSocketShader8DATA  DisplacementDisplacement;NodeSocketVector X9DATA DATA ThicknessThickness;NodeSocketFloat :DATA DATA8D - .  MA0 GMAtexture #3>>>?????>?DDATA NTShader Nodetree0 03ShaderNodeTree`2  4 DD< 0 DATAp`2  4   Principled BSDF+9ShaderNodeBsdfPrincipled`c}U ACpCB???xrL3 DATA Base ColorBase Color@53NodeSocketColor ;DATA >>>?DATA  MetallicMetallic@;NodeSocketFloatFactor =DATA ?DATA RoughnessRoughness@;NodeSocketFloatFactor X>DATA 8O??DATA  IORIOR@;NodeSocketFloatP ?DATAP ??zDDATA AlphaAlpha@;NodeSocketFloatFactor @DATA ??DATA  NormalNormal;NodeSocketVector` BDATA` DATA WeightWeightH;NodeSocketFloat XCDATA DATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DDATA ?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor EDATA ?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVector GDATA ?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ XHDATA@ L= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorp IDATAp 33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor JDATA ?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor LDATA ??DATA Specular TintSpecular Tint@53NodeSocketColor XMDATA ????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor0 NDATA0 ?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` ODATA` ?DATA  TangentTangent;NodeSocketVector QDATA DATA Transmission WeightTransmission Weight@;NodeSocketFloatFactor XRDATA ?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor SDATA ?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactor TDATA <?DATA  Coat IORCoat IOR@;NodeSocketFloat VDATA ??@DATA Coat TintCoat Tint@53NodeSocketColorP XWDATAP ????DATA  Coat NormalCoat Normal;NodeSocketVector  XDATA  DATA  Sheen WeightSheen Weight@;NodeSocketFloatFactor YDATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor [DATA ??DATA  Sheen TintSheen Tint@53NodeSocketColor X\DATA ????DATA  Emission ColorEmission Color@53NodeSocketColor ]DATA ????DATA Emission StrengthEmission Strength@;NodeSocketFloat@ ^DATA@ $tIDATA  Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp DATAp , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATABSDFBSDFD53NodeSocketShaderDATA@xrL "%DATAp 4 `2  %Material OutputCShaderNodeOutputMaterial}U|CC CB???8 DATA  SurfaceSurfaceD53NodeSocketShaderDأDATA  # VolumeVolume@53NodeSocketShaderDATA #% DisplacementDisplacement;NodeSocketVector` XDATA` DATA% #ThicknessThickness;NodeSocketFloat DATA DATA8D`2  4  MA5 GMAtexture #3.001>>>?????> (?DDATA  (NTShader Nodetree5 03ShaderNodeTree7 `9 DD= 8 DATAp7 `9 *  Principled BSDFtuShaderNodeBsdfPrincipled`c}U ACpCB???rL= DATA* -Base ColorBase Color@53NodeSocketColor بDATA >>>?DATA -/*MetallicMetallic@;NodeSocketFloatFactor0 DATA0 ?DATA/ 2 -RoughnessRoughness@;NodeSocketFloatFactor` XDATA` K??DATA 24/IORIOR@;NodeSocketFloat DATA ??zDDATA4 7 2AlphaAlpha@;NodeSocketFloatFactor حDATA ??DATA 794NormalNormal;NodeSocketVector DATA DATA9 < 7WeightWeightH;NodeSocketFloat XDATA DATA <>9Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA> A <Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP زDATAP ?DATA AC>Subsurface RadiusSubsurface Radius@;NodeSocketVector  DATA  ?L>=BDATAC F ASubsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA FHCSubsurface IORSubsurface IORH;NodeSocketFloatFactor DATA 33?G?33s@DATAH K FSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor طDATA ?DATA KMHSpecular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATAM  KSpecular TintSpecular Tint@53NodeSocketColor@ XDATA@ ????DATA MAnisotropicAnisotropic@;NodeSocketFloatFactorp DATAp ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؼDATA ?DATA TangentTangent;NodeSocketVector` DATA` DATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactor XDATA ?DATA Coat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATA  Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 DATA0 <?DATA Coat IORCoat IOR@;NodeSocketFloat` DATA` ??@DATA  Coat TintCoat Tint@53NodeSocketColor XDATA ????DATA Coat NormalCoat Normal;NodeSocketVector DATA DATA  Sheen WeightSheen Weight@;NodeSocketFloatFactor DATA ?DATA  Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor XDATA ????DATA  Emission ColorEmission Color@53NodeSocketColorP DATAP ????DATA  Emission StrengthEmission Strength@;NodeSocketFloat DATA $tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength DATA , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATA BSDFBSDFD53NodeSocketShaderDATA@rL "%DATAp`9 7  "Material Outputa(CShaderNodeOutputMaterial}U|CC CB???B DATA SurfaceSurfaceD53NodeSocketShaderDDATA VolumeVolume@53NodeSocketShaderDATA " DisplacementDisplacement;NodeSocketVector XDATA DATA "ThicknessThickness;NodeSocketFloat DATA DATA8D7 `9  MA ; GMAtexture #3.002>>>?????>$?DDATA $NTShader Nodetree ; 03ShaderNodeTree< > @D@D> @ DATAp< >  ' R;T;T;Principled BSDF#vShaderNodeBsdfPrincipled`c}U ACpCB???sLG DATA ')Base ColorBase Color@53NodeSocketColor@ DATA@ >>>?DATA) , 'MetallicMetallic@;NodeSocketFloatFactorp DATAp ?DATA ,.)RoughnessRoughness@;NodeSocketFloatFactor XDATA J??DATA. 1 ,IORIOR@;NodeSocketFloat DATA ??zDDATA 13.AlphaAlpha@;NodeSocketFloatFactor DATA ??DATA3 6 1NormalNormal;NodeSocketVector` DATA` DATA 683WeightWeightH;NodeSocketFloat0 XDATA0 DATA8 ; 6Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor` DATA` ?DATA ;=8Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor DATA ?DATA= ; ;Subsurface RadiusSubsurface Radius@;NodeSocketVector DATA ?L>=BDATA ;";=Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA"; %; ;Subsurface IORSubsurface IORH;NodeSocketFloatFactor DATA 33?G?33s@DATA %;';";Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor DATA ?DATA'; *; %;Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP DATAP ??DATA *;,;';Specular TintSpecular Tint@53NodeSocketColor XDATA ????DATA,; /; *;AnisotropicAnisotropic@;NodeSocketFloatFactor DATA ?DATA /;1;,;Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor DATA ?DATA1; 4; /;TangentTangent;NodeSocketVector DATA DATA 4;6;1;Transmission WeightTransmission Weight@;NodeSocketFloatFactor XDATA ?DATA6; 9; 4;Coat WeightCoat Weight@;NodeSocketFloatFactor@ DATA@ ?DATA 9;;;6;Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp DATAp <?DATA;; >; 9;Coat IORCoat IOR@;NodeSocketFloat pDATA ??@DATA >;@;;;Coat TintCoat Tint@53NodeSocketColor XqDATA ????DATA@; C; >;Coat NormalCoat Normal;NodeSocketVector  rDATA  DATA C;E;@;Sheen WeightSheen Weight@;NodeSocketFloatFactor sDATA ?DATAE; H; C;Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0 uDATA0 ??DATA H;J;E;Sheen TintSheen Tint@53NodeSocketColor` XvDATA` ????DATAJ; M; H;Emission ColorEmission Color@53NodeSocketColor wDATA ????DATA M;O;J;Emission StrengthEmission Strength@;NodeSocketFloat xDATA $tIDATAO; R; M;Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength zDATA , PGDATA R;O;Thin Film IORThin Film IOR@;NodeSocketFloat X{DATA q=??zDDATAT;BSDFBSDFD53NodeSocketShader|DATA@sL "%DATAp> <  W;^;Material Outputd CShaderNodeOutputMaterial}U|CC CB???L DATA W;Y;SurfaceSurfaceD53NodeSocketShader@D}DATAY; \; W;VolumeVolume@53NodeSocketShaderDATA \;^;Y;DisplacementDisplacement;NodeSocketVector` XDATA` DATA^; \;ThicknessThickness;NodeSocketFloatP DATAP DATA8@D< > T; W;MA`@ GMAtexture #3.003>>>?????> a;aL?DDATA  a;NTShader Nodetree`@ 03ShaderNodeTree B C DD? H DATAp B C c;  Principled BSDF}ShaderNodeBsdfPrincipled`c}U ACpCB???hsLQ DATAc; f;Base ColorBase Color@53NodeSocketColor ؂DATA >>>?DATA f;h;c;MetallicMetallic@;NodeSocketFloatFactor DATA ?DATAh; k; f;RoughnessRoughness@;NodeSocketFloatFactor XDATA KKK??DATA k;m;h;IORIOR@;NodeSocketFloat DATA ??zDDATAm;  k;AlphaAlpha@;NodeSocketFloatFactor@ ؇DATA@ ??DATA m;NormalNormal;NodeSocketVector DATA DATA  WeightWeightH;NodeSocketFloatp XDATAp DATA Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA  Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ،DATA ?DATA Subsurface RadiusSubsurface Radius@;NodeSocketVector GDATA G?L>=BDATA  Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA Subsurface IORSubsurface IORH;NodeSocketFloatFactor0 DATA0 33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` ؑDATA` ?DATA Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA  Specular TintSpecular Tint@53NodeSocketColor XDATA ????DATA AnisotropicAnisotropic@;NodeSocketFloatFactor DATA ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؖDATA ?DATA TangentTangent;NodeSocketVector`GDATA`GDATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactorP XDATAP ?DATA Coat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATA  Coat RoughnessCoat Roughness@;NodeSocketFloatFactor ؛DATA <?DATA Coat IORCoat IOR@;NodeSocketFloat DATA ??@DATA  Coat TintCoat Tint@53NodeSocketColor XDATA ????DATA Coat NormalCoat Normal;NodeSocketVectorGDATAGDATA  Sheen WeightSheen Weight@;NodeSocketFloatFactor@ ؠDATA@ ?DATA Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp DATAp ??DATA  Sheen TintSheen Tint@53NodeSocketColor XDATA ????DATA Emission ColorEmission Color@53NodeSocketColor DATA ????DATA  Emission StrengthEmission Strength@;NodeSocketFloat إDATA $tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0 DATA0 , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat` XDATA` q=??zDDATA BSDFBSDFD53NodeSocketShaderDATA@hsL "%DATApC  B  Material Outputd$UCShaderNodeOutputMaterial}U|CC CB???V DATA SurfaceSurfaceD53NodeSocketShaderDتDATA VolumeVolume@53NodeSocketShaderDATA  DisplacementDisplacement;NodeSocketVectorGXDATAGDATA ThicknessThickness;NodeSocketFloat DATA DATA8D B C  DATA0aL << CDATA C 2VcS  /DEFZZ\aacbbdYY[NNP==>))* E,bbduuwԊwwzlmo^^aLLN88:))*""#/00Qxyzʘ}~rsuddfQQS;;<))*$$% E334SޡttvdegPPR99:(()$$%!!"|/ܧ~qrtaacKLM334%%&$$% ! C+ɪ{{~mmoZZ\BBD++,##$##$\\]vvxefhPPR668%%&######-ݱ}}nnq[[]BBD**+""#"##FFGfuuwcdfLMN223##$""#""# zz|jjlTUW::;%%&!!"""#$ᶶ~~ooq[[]AAB(()!!"!!"###2𷷹rsu__bFFH++,!!"!!"##$2𸸺uuxbceJJL../!!" !!$$$2𹹺wwydegLMN001!!" !$ṹwxzeehMMO001!!" !ѹwwzeegLMN//0 ! ! \\]vvyccfJJL,,-  t@@AZttv``bEEG(() %$ุpps[[]>>@$$%  IIIf귷||~kkmSSU556 !!6SSTuvvycceHHJ**+ t]]^~~nnpWWY89:""#!\\]uuwaacEFG++,!PPQuꬬzz|ghjOOQ--.n!::;VUUVߢ||~jkmMMN**+ 5/@@AeLLMzcde``b[[\OOP334p))*n6   MAE GMAtexture #4>>>?????> ?DDATA  NTShader NodetreeE 03ShaderNodeTree`G  I DD` p;DATAp`G  I   +--Principled BSDF<ShaderNodeBsdfPrincipled`c}U ACpCB???sL[ DATA Base ColorBase Color@53NodeSocketColor دDATA >>>?DATA  MetallicMetallic@;NodeSocketFloatFactor DATA ?DATA RoughnessRoughness@;NodeSocketFloatFactor XDATA L??DATA  IORIOR@;NodeSocketFloatP DATAP ??zDDATA AlphaAlpha@;NodeSocketFloatFactor شDATA ??DATA  NormalNormal;NodeSocketVectorGDATAGDATA WeightWeightH;NodeSocketFloat XDATA DATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor عDATA ?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVectorGDATAG?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ XDATA@ L= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorp DATAp 33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ؾDATA ?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA Specular TintSpecular Tint@53NodeSocketColor XDATA ????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor0 DATA0 ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` DATA` ?DATA   TangentTangent;NodeSocketVector GDATA GDATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactor XDATA ?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactor DATA <?DATA  Coat IORCoat IOR@;NodeSocketFloat DATA ??@DATA Coat TintCoat Tint@53NodeSocketColorP XDATAP ????DATA  Coat NormalCoat Normal;NodeSocketVector`GDATA`GDATA Sheen WeightSheen Weight@;NodeSocketFloatFactor DATA ?DATA ! Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA ??DATA !#Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA# & !Emission ColorEmission Color@53NodeSocketColor !DATA ????DATA &(#Emission StrengthEmission Strength@;NodeSocketFloat@ "DATA@ $tIDATA( + &Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp $DATAp , PGDATA +(Thin Film IORThin Film IOR@;NodeSocketFloat X%DATA q=??zDDATA-BSDFBSDFD53NodeSocketShader&DATA@sL "%DATAp I `G  Material OutputȗCShaderNodeOutputMaterial}U|CC CB???PDATA SurfaceSurfaceD53NodeSocketShaderD'DATA  VolumeVolume@53NodeSocketShader)DATA DisplacementDisplacement;NodeSocketVectorGX*DATAGDATA ThicknessThickness;NodeSocketFloat +DATA DATA8D`G  I - MAJ GMAtexture #4.001>>>?????> ?DDATA  NTShader NodetreeJ 03ShaderNodeTreeL `N DDa x;DATApL `N   Principled BSDF6%7ShaderNodeBsdfPrincipled`c}U ACpCB???tLUDATA Base ColorBase Color@53NodeSocketColor,DATA>>>?DATA MetallicMetallic@;NodeSocketFloatFactor0.DATA0?DATA  RoughnessRoughness@;NodeSocketFloatFactor`X/DATA`F??DATA IORIOR@;NodeSocketFloat0DATA??zDDATA  AlphaAlpha@;NodeSocketFloatFactor1DATA??DATA NormalNormal;NodeSocketVector G3DATA GDATA  WeightWeightH;NodeSocketFloatX4DATADATA Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor 5DATA ?DATA  Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP6DATAP?DATA Subsurface RadiusSubsurface Radius@;NodeSocketVector`G8DATA`G?L>=BDATA  Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX9DATAL= ADATA Subsurface IORSubsurface IORH;NodeSocketFloatFactor:DATA33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor;DATA?DATA Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor=DATA??DATA  Specular TintSpecular Tint@53NodeSocketColor@X>DATA@????DATA AnisotropicAnisotropic@;NodeSocketFloatFactorp?DATAp?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor@DATA?DATA TangentTangent;NodeSocketVectorGBDATAGDATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactorXCDATA?DATA Coat WeightCoat Weight@;NodeSocketFloatFactorDDATA?DATA  Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0EDATA0<?DATA Coat IORCoat IOR@;NodeSocketFloat`GDATA`??@DATA  Coat TintCoat Tint@53NodeSocketColorXHDATA????DATA Coat NormalCoat Normal;NodeSocketVectorGIDATAGDATA  Sheen WeightSheen Weight@;NodeSocketFloatFactorJDATA?DATA Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorLDATA??DATA  Sheen TintSheen Tint@53NodeSocketColor XMDATA ????DATA Emission ColorEmission Color@53NodeSocketColorPNDATAP????DATA  Emission StrengthEmission Strength@;NodeSocketFloatODATA$tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthQDATA, PGDATA Thin Film IORThin Film IOR@;NodeSocketFloatXRDATAq=??zDDATA BSDFBSDFD53NodeSocketShaderSDATA@tL "%DATAp`N L  Material Output\'CShaderNodeOutputMaterial}U|CC CB???ZDATA SurfaceSurfaceD53NodeSocketShaderDTDATA VolumeVolume@53NodeSocketShaderVDATA  DisplacementDisplacement;NodeSocketVector GXWDATA GDATA ThicknessThickness;NodeSocketFloatXDATADATA8DL `N  MA 0GMAtexture #4.002>>>?????>?DDATA NTShader Nodetree 003ShaderNodeTree13@D@Db ;DATAp13  Principled BSDFPShaderNodeBsdfPrincipled`c}U ACpCB???XtL_DATA Base ColorBase Color@53NodeSocketColor@YDATA@>>>?DATA  MetallicMetallic@;NodeSocketFloatFactorp[DATAp?DATA RoughnessRoughness@;NodeSocketFloatFactorX\DATAI??DATA  IORIOR@;NodeSocketFloat]DATA??zDDATA AlphaAlpha@;NodeSocketFloatFactor^DATA??DATA  NormalNormal;NodeSocketVectorGPDATAGDATA WeightWeightH;NodeSocketFloat0XQDATA0DATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`RDATA`?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorSDATA?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVectorGUDATAG?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceXVDATAL= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorWDATA33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor XDATA ?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPZDATAP??DATA Specular TintSpecular Tint@53NodeSocketColorX[DATA????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor\DATA?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor]DATA?DATA  TangentTangent;NodeSocketVector G_DATA GDATA Transmission WeightTransmission Weight@;NodeSocketFloatFactorX`DATA?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor@aDATA@?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpbDATAp<?DATA  Coat IORCoat IOR@;NodeSocketFloatdDATA??@DATA Coat TintCoat Tint@53NodeSocketColorXeDATA????DATA  Coat NormalCoat Normal;NodeSocketVector`GfDATA`GDATA Sheen WeightSheen Weight@;NodeSocketFloatFactor gDATA ?DATA  Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0 iDATA0 ??DATA Sheen TintSheen Tint@53NodeSocketColor` XjDATA` ????DATA  Emission ColorEmission Color@53NodeSocketColor kDATA ????DATA Emission StrengthEmission Strength@;NodeSocketFloat lDATA $tIDATA  Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength nDATA , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XoDATA q=??zDDATABSDFBSDFD53NodeSocketShaderpDATA@XtL "%DATAp31 Material OutputzCShaderNodeOutputMaterial}U|CC CB???dDATA  SurfaceSurfaceD53NodeSocketShader@DqDATA   VolumeVolume@53NodeSocketShadersDATA  DisplacementDisplacement;NodeSocketVectorGXtDATAGDATA ThicknessThickness;NodeSocketFloatP uDATAP DATA8@D13 MA`5GMAtexture #4.003>>>?????> ?DDATA  NTShader Nodetree`503ShaderNodeTree 78DDc ;DATAp 78` c cPrincipled BSDFIQShaderNodeBsdfPrincipled`c}U ACpCB???tLiDATA Base ColorBase Color@53NodeSocketColor vDATA >>>?DATA MetallicMetallic@;NodeSocketFloatFactor xDATA ?DATA  RoughnessRoughness@;NodeSocketFloatFactor XyDATA F??DATA IORIOR@;NodeSocketFloat zDATA ??zDDATA " AlphaAlpha@;NodeSocketFloatFactor@ {DATA@ ??DATA "$NormalNormal;NodeSocketVector G}DATA GDATA$ ' "WeightWeightH;NodeSocketFloatp X~DATAp DATA ')$Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA) , 'Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ؀DATA ?DATA ,.)Subsurface RadiusSubsurface Radius@;NodeSocketVector`GDATA`G?L>=BDATA. 1 ,Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA 13.Subsurface IORSubsurface IORH;NodeSocketFloatFactor0 DATA0 33?G?33s@DATA3 6 1Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor` ؅DATA` ?DATA 683Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA8 ; 6Specular TintSpecular Tint@53NodeSocketColor XDATA ????DATA ;=8AnisotropicAnisotropic@;NodeSocketFloatFactor DATA ?DATA= @ ;Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؊DATA ?DATA @B=TangentTangent;NodeSocketVectorGDATAGDATAB E @Transmission WeightTransmission Weight@;NodeSocketFloatFactorP XDATAP ?DATA EGBCoat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATAG J ECoat RoughnessCoat Roughness@;NodeSocketFloatFactor ؏DATA <?DATA JLGCoat IORCoat IOR@;NodeSocketFloat DATA ??@DATAL O JCoat TintCoat Tint@53NodeSocketColorXDATA????DATA OQLCoat NormalCoat Normal;NodeSocketVectorGDATAGDATAQ T OSheen WeightSheen Weight@;NodeSocketFloatFactor@ؔDATA@?DATA TVQSheen RoughnessSheen Roughness@;NodeSocketFloatFactorpDATAp??DATAV Y TSheen TintSheen Tint@53NodeSocketColorXDATA????DATA Y[VEmission ColorEmission Color@53NodeSocketColorDATA????DATA[ ^ YEmission StrengthEmission Strength@;NodeSocketFloatؙDATA$tIDATA ^`[Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0DATA0, PGDATA` ^Thin Film IORThin Film IOR@;NodeSocketFloat`XDATA`q=??zDDATA cBSDFBSDFD53NodeSocketShaderDATA@tL "%DATAp8 7e mMaterial Output~{CShaderNodeOutputMaterial}U|CC CB???nDATAe hSurfaceSurfaceD53NodeSocketShaderD؞DATA hjeVolumeVolume@53NodeSocketShaderDATAj m hDisplacementDisplacement;NodeSocketVector GXDATA GDATA mjThicknessThickness;NodeSocketFloatDATADATA8D 78 ceMA:GMAtexture #4.004>>>?????>o?DDATA oNTShader Nodetree:03ShaderNodeTree`< >DDd  DATAp`< > r Principled BSDF7+ShaderNodeBsdfPrincipled`c}U ACpCB???tLsDATA rtBase ColorBase Color@53NodeSocketColorؓDATA>>>?DATAt w rMetallicMetallic@;NodeSocketFloatFactorDATA?DATA wytRoughnessRoughness@;NodeSocketFloatFactor XDATA F??DATAy | wIORIOR@;NodeSocketFloatPDATAP??zDDATA |~yAlphaAlpha@;NodeSocketFloatFactorؘDATA??DATA~  |NormalNormal;NodeSocketVectorGDATAGDATA ~WeightWeightH;NodeSocketFloatXDATADATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorDATA?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor؝DATA?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVectorGDATAG?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@XDATA@L= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorpDATAp33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorآDATA?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorDATA??DATA Specular TintSpecular Tint@53NodeSocketColorXDATA????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor0DATA0?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`اDATA`?DATA  TangentTangent;NodeSocketVector GDATA GDATA Transmission WeightTransmission Weight@;NodeSocketFloatFactorXDATA?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactorDATA?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactorجDATA<?DATA  Coat IORCoat IOR@;NodeSocketFloat DATA ??@DATA Coat TintCoat Tint@53NodeSocketColorPXDATAP????DATA  Coat NormalCoat Normal;NodeSocketVector`GDATA`GDATA Sheen WeightSheen Weight@;NodeSocketFloatFactorرDATA?DATA  Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorDATA??DATA Sheen TintSheen Tint@53NodeSocketColorXDATA????DATA  Emission ColorEmission Color@53NodeSocketColorDATA????DATA  Emission StrengthEmission Strength@;NodeSocketFloat@ضDATA@$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthpDATAp, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatXDATAq=??zDDATABSDFBSDFD53NodeSocketShaderDATA@tL "%DATAp >`< Material Outputl CShaderNodeOutputMaterial}U|CC CB???xDATA SurfaceSurfaceD53NodeSocketShaderDػDATA  VolumeVolume@53NodeSocketShaderDATA DisplacementDisplacement;NodeSocketVectorGXDATAGDATA ThicknessThickness;NodeSocketFloatDATADATA8D`< > MA?GMAtexture #5>>>?????> ?DDATA  NTShader Nodetree?03ShaderNodeTreeA`C@@e (DATApA`Ci l lPrincipled BSDFֽrOShaderNodeBsdfPrincipled`c}U ACpCB???HuL}DATA !Base ColorBase Color@53NodeSocketColorDATA>>>?DATA !#MetallicMetallic@;NodeSocketFloatFactor0DATA0?DATA# & !RoughnessRoughness@;NodeSocketFloatFactor`XDATA`M??DATA &(#IORIOR@;NodeSocketFloatDATA??zDDATA( + &AlphaAlpha@;NodeSocketFloatFactorDATA??DATA +-(NormalNormal;NodeSocketVector GDATA GDATA- 0 +WeightWeightH;NodeSocketFloatXDATADATA 02-Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA2 5 0Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorPDATAP?DATA 572Subsurface RadiusSubsurface Radius@;NodeSocketVector`GDATA`G?L>=BDATA7 : 5Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceXDATAL= ADATA :<7Subsurface IORSubsurface IORH;NodeSocketFloatFactorDATA33?G?33s@DATA< ? :Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorDATA?DATA ?A<Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorDATA??DATAA D ?Specular TintSpecular Tint@53NodeSocketColor@XDATA@????DATA DFAAnisotropicAnisotropic@;NodeSocketFloatFactorpDATAp?DATAF I DAnisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorDATA?DATA IKFTangentTangent;NodeSocketVectorGDATAGDATAK N ITransmission WeightTransmission Weight@;NodeSocketFloatFactorXDATA?DATA NPKCoat WeightCoat Weight@;NodeSocketFloatFactorDATA?DATAP S NCoat RoughnessCoat Roughness@;NodeSocketFloatFactor0DATA0<?DATA SUPCoat IORCoat IOR@;NodeSocketFloat`DATA`??@DATAU X SCoat TintCoat Tint@53NodeSocketColorXDATA????DATA XZUCoat NormalCoat Normal;NodeSocketVectorGDATAGDATAZ ] XSheen WeightSheen Weight@;NodeSocketFloatFactorDATA?DATA ]_ZSheen RoughnessSheen Roughness@;NodeSocketFloatFactorDATA??DATA_ b ]Sheen TintSheen Tint@53NodeSocketColor XDATA ????DATA bd_Emission ColorEmission Color@53NodeSocketColorPDATAP????DATAd g bEmission StrengthEmission Strength@;NodeSocketFloat؃DATA$tIDATA gidThin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthDATA, PGDATAi gThin Film IORThin Film IOR@;NodeSocketFloatXDATAq=??zDDATA lBSDFBSDFD53NodeSocketShaderDATA@HuL "%DATAp`CAn vMaterial OutputzyCShaderNodeOutputMaterial}U|CC CB???DATAn qSurfaceSurfaceD53NodeSocketShader@؈DATA qsnVolumeVolume@53NodeSocketShaderDATAs v qDisplacementDisplacement;NodeSocketVector GXDATA GDATA vsThicknessThickness;NodeSocketFloatDATADATA8@A`C lnMA EGMAtexture #5.001>>>?????>x?DDATA xNTShader Nodetree E03ShaderNodeTreeFH@A@Af 0DATApFH { Principled BSDFir|ShaderNodeBsdfPrincipled`c}U ACpCB???uLDATA {}Base ColorBase Color@53NodeSocketColor@؍DATA@>>>?DATA}  {MetallicMetallic@;NodeSocketFloatFactorpDATAp?DATA }RoughnessRoughness@;NodeSocketFloatFactorXDATAH??DATA  IORIOR@;NodeSocketFloatDATA??zDDATA AlphaAlpha@;NodeSocketFloatFactorؒDATA??DATA  NormalNormal;NodeSocketVectorGDATAGDATA WeightWeightH;NodeSocketFloat0XDATA0DATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`DATA`?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorؗDATA?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVectorGDATAG?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceXDATAL= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorDATA33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ؜DATA ?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPDATAP??DATA Specular TintSpecular Tint@53NodeSocketColorXDATA????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactorDATA?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorءDATA?DATA  TangentTangent;NodeSocketVector GDATA GDATA Transmission WeightTransmission Weight@;NodeSocketFloatFactorXDATA?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor@DATA@?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpئDATAp<?DATA  Coat IORCoat IOR@;NodeSocketFloatDATA??@DATA Coat TintCoat Tint@53NodeSocketColorXDATA????DATA  Coat NormalCoat Normal;NodeSocketVector`GDATA`GDATA  Sheen WeightSheen Weight@;NodeSocketFloatFactorثDATA?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0DATA0??DATA  Sheen TintSheen Tint@53NodeSocketColor`XDATA`????DATA  Emission ColorEmission Color@53NodeSocketColorDATA????DATA Emission StrengthEmission Strength@;NodeSocketFloatذDATA$tIDATA  Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthDATA, PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATABSDFBSDFD53NodeSocketShaderDATA@uL "%DATApHF "Material Output*CShaderNodeOutputMaterial}U|CC CB???DATA SurfaceSurfaceD53NodeSocketShader@AصDATA  VolumeVolume@53NodeSocketShaderDATA "DisplacementDisplacement;NodeSocketVectorGXDATAGDATA" ThicknessThickness;NodeSocketFloatPDATAPDATA8@AFH MA`JGMAtexture #5.002>>>?????> %?DDATA  %NTShader Nodetree`J03ShaderNodeTree LMBBg 8DATAp LM'  Principled BSDFShaderNodeBsdfPrincipled`c}U ACpCB???uLDATA' *Base ColorBase Color@53NodeSocketColorغDATA>>>?DATA *,'MetallicMetallic@;NodeSocketFloatFactorDATA?DATA, / *RoughnessRoughness@;NodeSocketFloatFactorXDATAJJ??DATA /1,IORIOR@;NodeSocketFloatDATA??zDDATA1 4 /AlphaAlpha@;NodeSocketFloatFactor@ؿDATA@??DATA 461NormalNormal;NodeSocketVector GDATA GDATA6 9 4WeightWeightH;NodeSocketFloatpXDATApDATA 9;6Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorDATA?DATA; > 9Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorDATA?DATA >@;Subsurface RadiusSubsurface Radius@;NodeSocketVector`GDATA`G?L>=BDATA@ C >Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceXDATAL= ADATA CE@Subsurface IORSubsurface IORH;NodeSocketFloatFactor0DATA033?G?33s@DATAE H CSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`DATA`?DATA HJESpecular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorDATA??DATAJ M HSpecular TintSpecular Tint@53NodeSocketColorXDATA????DATA MOJAnisotropicAnisotropic@;NodeSocketFloatFactorDATA?DATAO R MAnisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor DATA ?DATA RTOTangentTangent;NodeSocketVectorGpDATAGDATAT W RTransmission WeightTransmission Weight@;NodeSocketFloatFactorPXqDATAP?DATA WYTCoat WeightCoat Weight@;NodeSocketFloatFactorrDATA?DATAY \ WCoat RoughnessCoat Roughness@;NodeSocketFloatFactorsDATA<?DATA \^YCoat IORCoat IOR@;NodeSocketFloatuDATA??@DATA^ a \Coat TintCoat Tint@53NodeSocketColorXvDATA????DATA ac^Coat NormalCoat Normal;NodeSocketVectorGwDATAGDATAc f aSheen WeightSheen Weight@;NodeSocketFloatFactor@xDATA@?DATA fhcSheen RoughnessSheen Roughness@;NodeSocketFloatFactorpzDATAp??DATAh k fSheen TintSheen Tint@53NodeSocketColorX{DATA????DATA kmhEmission ColorEmission Color@53NodeSocketColor|DATA????DATAm  kEmission StrengthEmission Strength@;NodeSocketFloat}DATA$tIDATA mThin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0DATA0, PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat`XDATA`q=??zDDATA BSDFBSDFD53NodeSocketShaderDATA@uL "%DATApM L Material OutputN< CShaderNodeOutputMaterial}U|CC CB???DATA SurfaceSurfaceD53NodeSocketShaderB؂DATA VolumeVolume@53NodeSocketShaderDATA  DisplacementDisplacement;NodeSocketVector GXDATA GDATA ThicknessThickness;NodeSocketFloatDATADATA8B LM MAOGMAtexture #5.003>>>?????>?DDATA NTShader NodetreeO03ShaderNodeTree`Q SBBh @DATAp`Q S  o q q Principled BSDFS/ShaderNodeBsdfPrincipled`c}U ACpCB???8vLDATA Base ColorBase Color@53NodeSocketColor؇DATA>>>?DATA  MetallicMetallic@;NodeSocketFloatFactorDATA?DATA RoughnessRoughness@;NodeSocketFloatFactor XDATA H??DATA  IORIOR@;NodeSocketFloatPDATAP??zDDATA AlphaAlpha@;NodeSocketFloatFactor،DATA??DATA  NormalNormal;NodeSocketVectorGDATAGDATA WeightWeightH;NodeSocketFloatXDATADATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorDATA?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorؑDATA?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVectorGDATAG?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@XDATA@L= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorpDATAp33?G?33s@DATA Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactorؖDATA?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorDATA??DATA Specular TintSpecular Tint@53NodeSocketColorXDATA????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor0DATA0?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`؛DATA`?DATA   TangentTangent;NodeSocketVector GDATA GDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorXDATA?DATA     Coat WeightCoat Weight@;NodeSocketFloatFactorDATA?DATA    Coat RoughnessCoat Roughness@;NodeSocketFloatFactorؠDATA<?DATA    Coat IORCoat IOR@;NodeSocketFloat DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColorPXDATAP????DATA  `  Coat NormalCoat Normal;NodeSocketVector`GDATA`GDATA ` b  Sheen WeightSheen Weight@;NodeSocketFloatFactorإDATA?DATAb  e  ` Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorDATA??DATA e g b Sheen TintSheen Tint@53NodeSocketColorXDATA????DATAg  j  e Emission ColorEmission Color@53NodeSocketColor DATA ????DATA j l g Emission StrengthEmission Strength@;NodeSocketFloat@ تDATA@ $tIDATAl  o  j Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp DATAp , PGDATA o l Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATAq BSDFBSDFD53NodeSocketShaderDATA@8vL "%DATAp S`Q t { Material Output!wbCShaderNodeOutputMaterial}U|CC CB???p DATA t v SurfaceSurfaceD53NodeSocketShaderBدDATAv  y  t VolumeVolume@53NodeSocketShaderDATA y { v DisplacementDisplacement;NodeSocketVectorGXDATAGDATA{  y ThicknessThickness;NodeSocketFloat DATA DATA8B`Q Sq  t MATGMAtexture #5.004>>>?????> ~ ?DDATA  ~ NTShader NodetreeT03ShaderNodeTreeV`XCCi HDATApV`X    Principled BSDF"ShaderNodeBsdfPrincipled`c}U ACpCB???vLu DATA  Base ColorBase Color@53NodeSocketColor شDATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor0 DATA0 ?DATA   RoughnessRoughness@;NodeSocketFloatFactor` XDATA` H??DATA   IORIOR@;NodeSocketFloat DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor عDATA ??DATA   NormalNormal;NodeSocketVector GDATA GDATA   WeightWeightH;NodeSocketFloat XDATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP ؾDATAP ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector`G DATA`G?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor@ X DATA@ ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactorp  DATAp ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA   TangentTangent;NodeSocketVectorG DATAGDATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0  DATA0 <?DATA   Coat IORCoat IOR@;NodeSocketFloat`  DATA` ??@DATA   Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA   Coat NormalCoat Normal;NodeSocketVectorG! DATAGDATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor " DATA ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor $ DATA ??DATA   Sheen TintSheen Tint@53NodeSocketColor X% DATA ????DATA   Emission ColorEmission Color@53NodeSocketColorP& DATAP????DATA   Emission StrengthEmission Strength@;NodeSocketFloat' DATA$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength) DATA, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloatX* DATAq=??zDDATA BSDFBSDFD53NodeSocketShader+ DATA@vL "%DATAp`XV  Material OutputԣxCShaderNodeOutputMaterial}U|CC CB???z DATA  SurfaceSurfaceD53NodeSocketShaderC, DATA   VolumeVolume@53NodeSocketShader. DATA   DisplacementDisplacement;NodeSocketVector +X/ DATA +DATA  ThicknessThickness;NodeSocketFloat0 DATADATA8CV`X  MA ZGMAtexture #6>>?????> ?DDATA  NTShader Nodetree Z03ShaderNodeTree[]@D@Dj +DATAp[]  ( * * Principled BSDF0QaShaderNodeBsdfPrincipled`c}U ACpCB???vL DATA  Base ColorBase Color@53NodeSocketColor@1 DATA@>>?DATA   MetallicMetallic@;NodeSocketFloatFactorp3 DATAp?DATA   RoughnessRoughness@;NodeSocketFloatFactorX4 DATAR??DATA   IORIOR@;NodeSocketFloat5 DATA??zDDATA   AlphaAlpha@;NodeSocketFloatFactor6 DATA??DATA   NormalNormal;NodeSocketVector+8 DATA+DATA   WeightWeightH;NodeSocketFloat0X9 DATA0DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`: DATA`?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor; DATA?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector+= DATA+?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX> DATAL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor? DATA33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor @ DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorPB DATAP??DATA   Specular TintSpecular Tint@53NodeSocketColorXC DATA????DATA    AnisotropicAnisotropic@;NodeSocketFloatFactorD DATA?DATA    Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactorE DATA?DATA    TangentTangent;NodeSocketVector +G DATA +DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorXH DATA?DATA    Coat WeightCoat Weight@;NodeSocketFloatFactor@I DATA@?DATA    Coat RoughnessCoat Roughness@;NodeSocketFloatFactorpJ DATAp<?DATA     Coat IORCoat IOR@;NodeSocketFloatL DATA??@DATA    Coat TintCoat Tint@53NodeSocketColorXM DATA????DATA     Coat NormalCoat Normal;NodeSocketVector`+N DATA`+DATA    Sheen WeightSheen Weight@;NodeSocketFloatFactorO DATA?DATA     Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0Q DATA0??DATA    Sheen TintSheen Tint@53NodeSocketColor`XR DATA`????DATA  #   Emission ColorEmission Color@53NodeSocketColorS DATA????DATA # %  Emission StrengthEmission Strength@;NodeSocketFloatT DATA$tIDATA%  (  # Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthV DATA, PGDATA ( % Thin Film IORThin Film IOR@;NodeSocketFloat XW DATA q=??zDDATA* BSDFBSDFD53NodeSocketShaderX DATA@vL "%DATAp][ - 4 Material Output2CShaderNodeOutputMaterial}U|CC CB??? DATA - / SurfaceSurfaceD53NodeSocketShader@DY DATA/  2  - VolumeVolume@53NodeSocketShader[ DATA 2 4 / DisplacementDisplacement;NodeSocketVector+X\ DATA+DATA4  2 ThicknessThickness;NodeSocketFloatP] DATAPDATA8@D[]*  - MA`_GMAtexture #7>>?????> 7 bL?DDATA  7 NTShader Nodetree`_03ShaderNodeTree abEEk +DATAp ab9    Principled BSDF&@DShaderNodeBsdfPrincipled`c}U ACpCB???(wL DATA9  < Base ColorBase Color@53NodeSocketColor^ DATA>>?DATA < > 9 MetallicMetallic@;NodeSocketFloatFactorP DATA?DATA>  A  < RoughnessRoughness@;NodeSocketFloatFactorXQ DATA M??DATA A C > IORIOR@;NodeSocketFloatR DATA??zDDATAC  F  A AlphaAlpha@;NodeSocketFloatFactor@S DATA@??DATA F H C NormalNormal;NodeSocketVector +U DATA +DATAH  K  F WeightWeightH;NodeSocketFloatpXV DATApDATA K M H Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactorW DATA?DATAM   K Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorX DATA?DATA  M Subsurface RadiusSubsurface Radius@;NodeSocketVector`+Z DATA`+?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistanceX[ DATAL= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor0\ DATA033?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`] DATA`?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor_ DATA??DATA   Specular TintSpecular Tint@53NodeSocketColorX` DATA????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactora DATA?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor b DATA ?DATA   TangentTangent;NodeSocketVector+d DATA+DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactorPXe DATAP?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactorf DATA?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorg DATA<?DATA   Coat IORCoat IOR@;NodeSocketFloati DATA??@DATA   Coat TintCoat Tint@53NodeSocketColorXj DATA????DATA   Coat NormalCoat Normal;NodeSocketVector+k DATA+DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@l DATA@?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorpn DATAp??DATA   Sheen TintSheen Tint@53NodeSocketColorXo DATA????DATA   Emission ColorEmission Color@53NodeSocketColorp DATA????DATA   Emission StrengthEmission Strength@;NodeSocketFloatq DATA$tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0s DATA0, PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat`Xt DATA`q=??zDDATA BSDFBSDFD53NodeSocketShaderu DATA@(wL "%DATApb a  Material Output54CShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderEv DATA   VolumeVolume@53NodeSocketShaderx DATA   DisplacementDisplacement;NodeSocketVector +Xy DATA +DATA  ThicknessThickness;NodeSocketFloatz DATADATA8E ab  DATA0bL  $CDATA $C 2VcS  /MIe`nipjfaYUFC/- E,mh|ԙ {ulfXSA>0-'%42Q~.ʦ8850) {rl^YDA0-*( E86S=ޮGGEB=7/%|sm]XB>.,*'&$|! /FܴRSROKF@91&zoiWR;8,)*'%# C+EɷY[ZYVSOIB:1$|ugbMI30)')&c_2^aaa_]YUPIA9. ~tn\X?<,)(&(&! -Uݽeggfeb_ZUOG?5(}whcMI1.(&(&$!KH)fgjklkigc^YTMD;/!}rlXS:7)'(%(% Lln¼o¼onmjgb]WQI?4'xra\C?+)'%(%$`oýqýrýr¼qomje`ZTLC9,~whcKG/,'$'%%$2iýqľsľtľtýs¼rolhc]VOF2#~qkUQ63'$&$&%2lľtſvſwſwľvýt¼qnkf`ZSJ?4% smXS85'$&#$gľuſvſwſwľvýu¼rokfaZSJ@5& tnYT85&$%# aľuſvſwſwľvýu¼rokf`ZSJ@5& smXS74&$%# b_<þuſvſvſvľuýt¼qnjf`YRI?3$ qlUQ41%#$"tDB*Ztľuľuľuþtýr¼pmid^XQH=1"|nhPL/-%" %$iýuľtýsýr¼pnkgb\VNE;/yhcHD*($" MK0fkýsýq¼pnlid_ZSKB7*ys`[=:&$6XV5uppnliea\VOG=2$ qkSO1.$"t c`;mlifb]XRKB8,|vd^B>(%! b_9jhc_ZTNE<1# }oiPL1/! VS2u`긲b\WQI@6)vpZV41n!><#V[X1Q߮TME;/"xrWS0. 5 /EC"eRO$zlh,ie&d`WS96p/,n6   MAdGMAtexture #8L>>L>?????> ?DDATA  NTShader Nodetreed03ShaderNodeTree`f hEEl +DATAp`f h  a c c Principled BSDF'ShaderNodeBsdfPrincipled`c}U ACpCB???xwL DATA  Base ColorBase Color@53NodeSocketColor{ DATAL>>L>?DATA   MetallicMetallic@;NodeSocketFloatFactor} DATA?DATA   RoughnessRoughness@;NodeSocketFloatFactor X~ DATA 0N??DATA   IORIOR@;NodeSocketFloatP DATAP??zDDATA "  AlphaAlpha@;NodeSocketFloatFactor؀ DATA??DATA"  %  NormalNormal;NodeSocketVector+ DATA+DATA % ' " WeightWeightH;NodeSocketFloatX DATADATA'  *  % Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA?DATA * , ' Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor؅ DATA?DATA,  /  * Subsurface RadiusSubsurface Radius@;NodeSocketVector + DATA +?L>=BDATA / 1 , Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@X DATA@L= ADATA1  4  / Subsurface IORSubsurface IORH;NodeSocketFloatFactorp DATAp33?G?33s@DATA 4 6 1 Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor؊ DATA?DATA6  9  4 Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA??DATA 9 ; 6 Specular TintSpecular Tint@53NodeSocketColorX DATA????DATA;  >  9 AnisotropicAnisotropic@;NodeSocketFloatFactor0 DATA0?DATA > @ ; Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor`؏ DATA`?DATA@  C  > TangentTangent;NodeSocketVector`+ DATA`+DATA C E @ Transmission WeightTransmission Weight@;NodeSocketFloatFactorX DATA?DATAE  H  C Coat WeightCoat Weight@;NodeSocketFloatFactor DATA?DATA H J E Coat RoughnessCoat Roughness@;NodeSocketFloatFactorؔ DATA<?DATAJ  M  H Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA M O J Coat TintCoat Tint@53NodeSocketColorPX DATAP????DATAO  R  M Coat NormalCoat Normal;NodeSocketVector+ DATA+DATA R T O Sheen WeightSheen Weight@;NodeSocketFloatFactorؙ DATA?DATAT  W  R Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA??DATA W Y T Sheen TintSheen Tint@53NodeSocketColorX DATA????DATAY  \  W Emission ColorEmission Color@53NodeSocketColor DATA????DATA \ ^ Y Emission StrengthEmission Strength@;NodeSocketFloat@؞ DATA@$tIDATA^  a  \ Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthpWDATAp, PGDATA a ^ Thin Film IORThin Film IOR@;NodeSocketFloatXWDATAq=??zDDATAc BSDFBSDFD53NodeSocketShaderWDATA@xwL "%DATAp h`f f m Material Output445CShaderNodeOutputMaterial}U|CC CB??? DATA f h SurfaceSurfaceD53NodeSocketShaderEWDATAh  k  f VolumeVolume@53NodeSocketShaderWDATA k m h DisplacementDisplacement;NodeSocketVector+XWDATA+DATAm  k ThicknessThickness;NodeSocketFloatWDATADATA8E`f hc  f MAiGMAtexture #9>?????> PW?DDATA  PWNTShader Nodetreei03ShaderNodeTreek`mFFm +DATApk`mRWW p  p Principled BSDFShaderNodeBsdfPrincipled`c}U ACpCB???wL DATARW UWBase ColorBase Color@53NodeSocketColorWDATA>?DATA UWWWRWMetallicMetallic@;NodeSocketFloatFactor0 WDATA0?DATAWW ZW UWRoughnessRoughness@;NodeSocketFloatFactor`X WDATA` |??DATA ZW\WWWIORIOR@;NodeSocketFloat WDATA??zDDATA\W _W ZWAlphaAlpha@;NodeSocketFloatFactor WDATA??DATA _WaW\WNormalNormal;NodeSocketVector`+WDATA`+DATAaW dW _WWeightWeightH;NodeSocketFloatXWDATADATA dWfWaWDiffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor WDATA ?DATAfW iW dWSubsurface WeightSubsurface Weight@;NodeSocketFloatFactorP WDATAP ?DATA iWkWfWSubsurface RadiusSubsurface Radius@;NodeSocketVector+WDATA+?L>=BDATAkW nW iWSubsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XWDATA L= ADATA nWpWkWSubsurface IORSubsurface IORH;NodeSocketFloatFactor WDATA 33?G?33s@DATApW sW nWSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor WDATA ?DATA sWuWpWSpecular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor WDATA ??DATAuW xW sWSpecular TintSpecular Tint@53NodeSocketColor@ XWDATA@ ????DATA xWzWuWAnisotropicAnisotropic@;NodeSocketFloatFactorp WDATAp ?DATAzW }W xWAnisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor WDATA ?DATA }WWzWTangentTangent;NodeSocketVector+WDATA+DATAW W }WTransmission WeightTransmission Weight@;NodeSocketFloatFactor XWDATA ?DATA WWWCoat WeightCoat Weight@;NodeSocketFloatFactor  WDATA ?DATAW W WCoat RoughnessCoat Roughness@;NodeSocketFloatFactor0 !WDATA0 <?DATA WWWCoat IORCoat IOR@;NodeSocketFloat` #WDATA` ??@DATAW W WCoat TintCoat Tint@53NodeSocketColor X$WDATA ????DATA WWWCoat NormalCoat Normal;NodeSocketVector +%WDATA +DATAW W WSheen WeightSheen Weight@;NodeSocketFloatFactor &WDATA ?DATA WWWSheen RoughnessSheen Roughness@;NodeSocketFloatFactor (WDATA ??DATAW W WSheen TintSheen Tint@53NodeSocketColor X)WDATA ????DATA WWWEmission ColorEmission Color@53NodeSocketColorP *WDATAP ????DATAW W WEmission StrengthEmission Strength@;NodeSocketFloat +WDATA $tIDATA WWWThin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength -WDATA , PGDATAW WThin Film IORThin Film IOR@;NodeSocketFloat X.WDATA q=??zDDATA p BSDFBSDFD53NodeSocketShader/WDATA@wL "%DATAp`mkr  z Material Output2CShaderNodeOutputMaterial}U|CC CB??? DATAr  u SurfaceSurfaceD53NodeSocketShaderF0WDATA u w r VolumeVolume@53NodeSocketShader2WDATAw  z  u DisplacementDisplacement;NodeSocketVector`+X3WDATA`+DATA z w ThicknessThickness;NodeSocketFloat 4WDATA DATA8Fk`m p r MA oGMAthread>>>?????>| ?DDATA | NTShader Nodetree o03ShaderNodeTreepr@G@Gn DDATAppr      Principled BSDFNShaderNodeBsdfPrincipled`c}U ACpCB???xL DATA   Base ColorBase Color@53NodeSocketColor@ 5WDATA@ >>>?DATA    MetallicMetallic@;NodeSocketFloatFactorp 7WDATAp ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X8WDATA -U??DATA   IORIOR@;NodeSocketFloat 9WDATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor :WDATA ??DATA   NormalNormal;NodeSocketVector+WDATA` ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ?WDATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector +AWDATA +?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XBWDATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor CWDATA 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor DWDATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP FWDATAP ??DATA   Specular TintSpecular Tint@53NodeSocketColor XGWDATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor HWDATA ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor IWDATA ?DATA   TangentTangent;NodeSocketVector`+KWDATA`+DATA   Transmission WeightTransmission Weight@;NodeSocketFloatFactor XLWDATA ?DATA   Coat WeightCoat Weight@;NodeSocketFloatFactor@ MWDATA@ ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp NWDATAp <?DATA   Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector+ DATA+DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor  DATA ?DATA    Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA    Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA     Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA    Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA     Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA   Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@xL "%DATAprp  & Material OutputRkCShaderNodeOutputMaterial}U|CC CB??? DATA  ! SurfaceSurfaceD53NodeSocketShader@G DATA!  $   VolumeVolume@53NodeSocketShader DATA $ & ! DisplacementDisplacement;NodeSocketVector+X DATA+DATA&  $ ThicknessThickness;NodeSocketFloatP  DATAP DATA8@Gpr   MA`tGMAthread #3>>>?????> ) ?DDATA  ) NTShader Nodetree`t03ShaderNodeTree vwHHo DDATAp vw+    Principled BSDFTxShaderNodeBsdfPrincipled`c}U ACpCB???hxL DATA+  . Base ColorBase Color@53NodeSocketColor  DATA >>>?DATA . 0 + MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA0  3  . RoughnessRoughness@;NodeSocketFloatFactor X DATA L??DATA 3 5 0 IORIOR@;NodeSocketFloat  DATA ??zDDATA5  8  3 AlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA 8 : 5 NormalNormal;NodeSocketVector`+ DATA`+DATA:  =  8 WeightWeightH;NodeSocketFloatp X DATAp DATA = ? : Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA?  B  = Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA B D ? Subsurface RadiusSubsurface Radius@;NodeSocketVector+ DATA+?L>=BDATAD  G  B Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA G I D Subsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATAI  L  G Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA L N I Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATAN  Q  L Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA Q S N AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATAS  V  Q Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor  DATA ?DATA V X S TangentTangent;NodeSocketVector+ DATA+DATAX  [  V Transmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA [ ] X Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATA]   [ Coat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATA  ] Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA   Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA   Coat NormalCoat Normal;NodeSocketVector + DATA +DATA   Sheen WeightSheen Weight@;NodeSocketFloatFactor@  DATA@ ?DATA   Sheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATA   Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA   Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA   Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATA  Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@hxL "%DATApw v  Material Output/eCShaderNodeOutputMaterial}U|CC CB??? DATA  SurfaceSurfaceD53NodeSocketShaderH DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector`+X DATA`+DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8H vw  MAyGMAthread #3.001>>>?????> ?DDATA  NTShader Nodetreey03ShaderNodeTree`{ }HHpDDDATAp`{ }  # % % Principled BSDFWShaderNodeBsdfPrincipled`c}U ACpCB???xL DATA  Base ColorBase Color@53NodeSocketColor  DATA >>>?DATA   MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA F??DATA   IORIOR@;NodeSocketFloatP  DATAP ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor  DATA ??DATA   NormalNormal;NodeSocketVector+ DATA+DATA   WeightWeightH;NodeSocketFloat X DATA DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector + DATA +?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ X DATA@ L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactorp  DATAp 33?G?33s@DATA   Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor  DATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor ` DATA ??DATA   Specular TintSpecular Tint@53NodeSocketColor Xa DATA ????DATA   AnisotropicAnisotropic@;NodeSocketFloatFactor0 b DATA0 ?DATA   Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` c DATA` ?DATA    TangentTangent;NodeSocketVector`+e DATA`+DATA    Transmission WeightTransmission Weight@;NodeSocketFloatFactor Xf DATA ?DATA    Coat WeightCoat Weight@;NodeSocketFloatFactor g DATA ?DATA   Coat RoughnessCoat Roughness@;NodeSocketFloatFactor h DATA <?DATA    Coat IORCoat IOR@;NodeSocketFloat  j DATA  ??@DATA    Coat TintCoat Tint@53NodeSocketColorP Xk DATAP ????DATA     Coat NormalCoat Normal;NodeSocketVector+l DATA+DATA    Sheen WeightSheen Weight@;NodeSocketFloatFactor m DATA ?DATA     Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor o DATA ??DATA    Sheen TintSheen Tint@53NodeSocketColor Xp DATA ????DATA     Emission ColorEmission Color@53NodeSocketColor q DATA ????DATA    Emission StrengthEmission Strength@;NodeSocketFloat@ r DATA@ $tIDATA  #   Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp t DATAp , PGDATA #  Thin Film IORThin Film IOR@;NodeSocketFloat Xu DATA q=??zDDATA% BSDFBSDFD53NodeSocketShaderv DATA@xL "%DATAp }`{ ( / Material Output6CShaderNodeOutputMaterial}U|CC CB???VDATA ( * SurfaceSurfaceD53NodeSocketShaderHw DATA*  -  ( VolumeVolume@53NodeSocketShadery DATA - / * DisplacementDisplacement;NodeSocketVector+Xz DATA+DATA/  - ThicknessThickness;NodeSocketFloat { DATA DATA8H`{ }%  ( MA~GMAthread #3.002>>>?????> 2 ?DDATA  2 NTShader Nodetree~03ShaderNodeTree`IIqDDDATAp`4    Principled BSDF٘%ShaderNodeBsdfPrincipled`c}U ACpCB???yLVDATA4  7 Base ColorBase Color@53NodeSocketColor | DATA >>>?DATA 7 9 4 MetallicMetallic@;NodeSocketFloatFactor0 ~ DATA0 ?DATA9  <  7 RoughnessRoughness@;NodeSocketFloatFactor` X DATA` I??DATA < > 9 IORIOR@;NodeSocketFloat  DATA ??zDDATA>  A  < AlphaAlpha@;NodeSocketFloatFactor ؁ DATA ??DATA A C > NormalNormal;NodeSocketVector`+ DATA`+DATAC  F  A WeightWeightH;NodeSocketFloat X DATA DATA F H C Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor   DATA  ?DATAH  K  F Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP ؆ DATAP ?DATA K M H Subsurface RadiusSubsurface Radius@;NodeSocketVector+ DATA+?L>=BDATAM  P  K Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA P R M Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATAR  U  P Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ؋ DATA ?DATA U W R Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATAW  Z  U Specular TintSpecular Tint@53NodeSocketColor@ X DATA@ ????DATA Z \ W AnisotropicAnisotropic@;NodeSocketFloatFactorp  DATAp ?DATA\  _  Z Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ؐ DATA ?DATA _ a \ TangentTangent;NodeSocketVector+ DATA+DATAa  d  _ Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA d f a Coat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATAf  i  d Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 ؕ DATA0 <?DATA i k f Coat IORCoat IOR@;NodeSocketFloat`  DATA` ??@DATAk  n  i Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA n p k Coat NormalCoat Normal;NodeSocketVector + DATA +DATAp  s  n Sheen WeightSheen Weight@;NodeSocketFloatFactor ؚ DATA ?DATA s u p Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor  DATA ??DATAu  x  s Sheen TintSheen Tint@53NodeSocketColor  X DATA  ????DATA x z u Emission ColorEmission Color@53NodeSocketColorP  DATAP ????DATAz  }  x Emission StrengthEmission Strength@;NodeSocketFloat ؟ DATA $tIDATA }  z Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA  } Thin Film IORThin Film IOR@;NodeSocketFloat X DATA q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@yL "%DATAp`  Material Outputp9XCShaderNodeOutputMaterial}U|CC CB???VDATA  SurfaceSurfaceD53NodeSocketShaderIؤ DATA   VolumeVolume@53NodeSocketShader DATA   DisplacementDisplacement;NodeSocketVector`+X DATA`+DATA  ThicknessThickness;NodeSocketFloat  DATA DATA8I`  MA GMAthread #3.003>>>?????> ?DDATA  NTShader Nodetree 03ShaderNodeTree@J@JrDTDATAp  ,..Principled BSDF;1ShaderNodeBsdfPrincipled`c}U ACpCB???XyLVDATA  Base ColorBase Color@53NodeSocketColor@ ة DATA@ >>>?DATA   MetallicMetallic@;NodeSocketFloatFactorp  DATAp ?DATA   RoughnessRoughness@;NodeSocketFloatFactor X DATA F??DATA   IORIOR@;NodeSocketFloat  DATA ??zDDATA   AlphaAlpha@;NodeSocketFloatFactor خ DATA ??DATA   NormalNormal;NodeSocketVector+ DATA+DATA   WeightWeightH;NodeSocketFloat0 X DATA0 DATA   Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor`  DATA` ?DATA   Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor أ DATA ?DATA   Subsurface RadiusSubsurface Radius@;NodeSocketVector + DATA +?L>=BDATA   Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA   Subsurface IORSubsurface IORH;NodeSocketFloatFactor  DATA 33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor ب DATA ?DATA  Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactorP  DATAP ??DATA Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor ح DATA ?DATA   TangentTangent;NodeSocketVector`+ DATA`+DATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactor X DATA ?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor@  DATA@ ?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactorp ز DATAp <?DATA  Coat IORCoat IOR@;NodeSocketFloat  DATA ??@DATA Coat TintCoat Tint@53NodeSocketColor X DATA ????DATA  Coat NormalCoat Normal;NodeSocketVector+ DATA+DATA Sheen WeightSheen Weight@;NodeSocketFloatFactor ط DATA ?DATA " Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor0  DATA0 ??DATA "$Sheen TintSheen Tint@53NodeSocketColor` X DATA` ????DATA$ ' "Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA ')$Emission StrengthEmission Strength@;NodeSocketFloat ؼ DATA $tIDATA) , 'Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength  DATA , PGDATA ,)Thin Film IORThin Film IOR@;NodeSocketFloat  X DATA  q=??zDDATA.BSDFBSDFD53NodeSocketShader DATA@XyL "%DATAp 18Material Outputv#_CShaderNodeOutputMaterial}U|CC CB???VDATA 13SurfaceSurfaceD53NodeSocketShader@J DATA3 6 1VolumeVolume@53NodeSocketShader DATA 683DisplacementDisplacement;NodeSocketVector+X DATA+DATA8 6ThicknessThickness;NodeSocketFloatP  DATAP DATA8@J. 1MA`GMAthread #3.005>>>?????> ;?DDATA  ;NTShader Nodetree`03ShaderNodeTree KKsDTDATAp =  Principled BSDFz{ShaderNodeBsdfPrincipled`c}U ACpCB???yLVDATA= @Base ColorBase Color@53NodeSocketColor  DATA >>>?DATA @B=MetallicMetallic@;NodeSocketFloatFactor  DATA ?DATAB E @RoughnessRoughness@;NodeSocketFloatFactor X DATA F??DATA EGBIORIOR@;NodeSocketFloat  DATA ??zDDATAG J EAlphaAlpha@;NodeSocketFloatFactor@  DATA@ ??DATA JLGNormalNormal;NodeSocketVector`+ DATA`+DATAL O JWeightWeightH;NodeSocketFloatp X DATAp DATA OQLDiffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA ?DATAQ T OSubsurface WeightSubsurface Weight@;NodeSocketFloatFactor  DATA ?DATA TVQSubsurface RadiusSubsurface Radius@;NodeSocketVector+ DATA+?L>=BDATAV Y TSubsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance X DATA L= ADATA Y[VSubsurface IORSubsurface IORH;NodeSocketFloatFactor0  DATA0 33?G?33s@DATA[ ^ YSubsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor`  DATA` ?DATA ^`[Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor  DATA ??DATA` c ^Specular TintSpecular Tint@53NodeSocketColor X DATA ????DATA ce`AnisotropicAnisotropic@;NodeSocketFloatFactor  DATA ?DATAe h cAnisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor   DATA  ?DATA hjeTangentTangent;NodeSocketVector+ DATA+DATAj m hTransmission WeightTransmission Weight@;NodeSocketFloatFactorP X DATAP ?DATA mojCoat WeightCoat Weight@;NodeSocketFloatFactor  DATA ?DATAo r mCoat RoughnessCoat Roughness@;NodeSocketFloatFactor  DATA <?DATA rtoCoat IORCoat IOR@;NodeSocketFloat  DATA ??@DATAt w rCoat TintCoat Tint@53NodeSocketColor X DATA ????DATA wytCoat NormalCoat Normal;NodeSocketVector + DATA +DATAy | wSheen WeightSheen Weight@;NodeSocketFloatFactor@  DATA@ ?DATA |~ySheen RoughnessSheen Roughness@;NodeSocketFloatFactorp  DATAp ??DATA~  |Sheen TintSheen Tint@53NodeSocketColor X DATA ????DATA ~Emission ColorEmission Color@53NodeSocketColor  DATA ????DATA  Emission StrengthEmission Strength@;NodeSocketFloat  DATA $tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength0  DATA0 , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat` X DATA` q=??zDDATA BSDFBSDFD53NodeSocketShader DATA@yL "%DATAp  Material OutputFOMCShaderNodeOutputMaterial}U|CC CB???VDATA SurfaceSurfaceD53NodeSocketShaderK DATA VolumeVolume@53NodeSocketShaderDATA  DisplacementDisplacement;NodeSocketVector`+XDATA`+DATA ThicknessThickness;NodeSocketFloat DATA DATA8K  MAGMAthread #3.006>>>?????>?DDATA NTShader Nodetree03ShaderNodeTree` KKtD DATAp`   Principled BSDFShaderNodeBsdfPrincipled`c}U ACpCB???yLVDATA Base ColorBase Color@53NodeSocketColor ؓDATA >>>?DATA  MetallicMetallic@;NodeSocketFloatFactor DATA ?DATA RoughnessRoughness@;NodeSocketFloatFactor  XDATA  F??DATA  IORIOR@;NodeSocketFloatP DATAP ??zDDATA AlphaAlpha@;NodeSocketFloatFactor ؘDATA ??DATA  NormalNormal;NodeSocketVector+DATA+DATA WeightWeightH;NodeSocketFloat XDATA DATA  Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor DATA ?DATA Subsurface WeightSubsurface Weight@;NodeSocketFloatFactor ؝DATA ?DATA  Subsurface RadiusSubsurface Radius@;NodeSocketVector WDATA W?L>=BDATA Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance@ XDATA@ L= ADATA  Subsurface IORSubsurface IORH;NodeSocketFloatFactorp DATAp 33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor آDATA ?DATA   Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA  Specular TintSpecular Tint@53NodeSocketColor XDATA ????DATA  AnisotropicAnisotropic@;NodeSocketFloatFactor0 DATA0 ?DATA Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor` اDATA` ?DATA  TangentTangent;NodeSocketVector`WDATA`WDATA Transmission WeightTransmission Weight@;NodeSocketFloatFactor XDATA ?DATA  Coat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATA Coat RoughnessCoat Roughness@;NodeSocketFloatFactor جDATA <?DATA ! Coat IORCoat IOR@;NodeSocketFloat  DATA  ??@DATA !#Coat TintCoat Tint@53NodeSocketColorP XDATAP ????DATA# & !Coat NormalCoat Normal;NodeSocketVectorWDATAWDATA &(#Sheen WeightSheen Weight@;NodeSocketFloatFactor رDATA ?DATA( + &Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA ??DATA +-(Sheen TintSheen Tint@53NodeSocketColor XDATA ????DATA-  +Emission ColorEmission Color@53NodeSocketColor DATA ????DATA -Emission StrengthEmission Strength@;NodeSocketFloat@ ضDATA@ $tIDATA  Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelengthp DATAp , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATABSDFBSDFD53NodeSocketShaderDATA@yL "%DATAp ` Material Output:CShaderNodeOutputMaterial}U|CC CB???VDATA SurfaceSurfaceD53NodeSocketShaderKػDATA  VolumeVolume@53NodeSocketShaderDATA DisplacementDisplacement;NodeSocketVectorWXDATAWDATA ThicknessThickness;NodeSocketFloat DATA DATA8K`  MAGMAthread #5>>>?????> ?DDATA  NTShader Nodetree03ShaderNodeTree`LLuD DATAp`  Principled BSDFwSShaderNodeBsdfPrincipled`c}U ACpCB???HzLVDATA Base ColorBase Color@53NodeSocketColor DATA >>>?DATA MetallicMetallic@;NodeSocketFloatFactor0 DATA0 ?DATA  RoughnessRoughness@;NodeSocketFloatFactor` XDATA` J??DATA IORIOR@;NodeSocketFloat DATA ??zDDATA  AlphaAlpha@;NodeSocketFloatFactor DATA ??DATA NormalNormal;NodeSocketVector`WDATA`WDATA  WeightWeightH;NodeSocketFloat XDATA DATA Diffuse RoughnessDiffuse Roughness@;NodeSocketFloatFactor  DATA  ?DATA  Subsurface WeightSubsurface Weight@;NodeSocketFloatFactorP DATAP ?DATA Subsurface RadiusSubsurface Radius@;NodeSocketVectorWDATAW?L>=BDATA  Subsurface ScaleSubsurface Scale@ ;NodeSocketFloatDistance XDATA L= ADATA Subsurface IORSubsurface IORH;NodeSocketFloatFactor DATA 33?G?33s@DATA  Subsurface AnisotropySubsurface Anisotropy@;NodeSocketFloatFactor DATA ?DATA Specular IOR LevelSpecular IOR Level@;NodeSocketFloatFactor DATA ??DATA  Specular TintSpecular Tint@53NodeSocketColor@ XDATA@ ????DATA AnisotropicAnisotropic@;NodeSocketFloatFactorp DATAp ?DATA  Anisotropic RotationAnisotropic Rotation@;NodeSocketFloatFactor DATA ?DATA TangentTangent;NodeSocketVectorWDATAWDATA  Transmission WeightTransmission Weight@;NodeSocketFloatFactor XDATA ?DATA Coat WeightCoat Weight@;NodeSocketFloatFactor DATA ?DATA  Coat RoughnessCoat Roughness@;NodeSocketFloatFactor0 DATA0 <?DATA Coat IORCoat IOR@;NodeSocketFloat` DATA` ??@DATA  Coat TintCoat Tint@53NodeSocketColor XDATA ????DATA Coat NormalCoat Normal;NodeSocketVector WDATA WDATA  Sheen WeightSheen Weight@;NodeSocketFloatFactor DATA ?DATA Sheen RoughnessSheen Roughness@;NodeSocketFloatFactor DATA ??DATA  Sheen TintSheen Tint@53NodeSocketColor  XDATA  ????DATA Emission ColorEmission Color@53NodeSocketColorP DATAP ????DATA  Emission StrengthEmission Strength@;NodeSocketFloat DATA $tIDATA Thin Film ThicknessThin Film Thickness@;NodeSocketFloatWavelength DATA , PGDATA Thin Film IORThin Film IOR@;NodeSocketFloat XDATA q=??zDDATA BSDFBSDFD53NodeSocketShaderDATA@HzL "%DATAp` Material OutputG&CShaderNodeOutputMaterial}U|CC CB???VDATA SurfaceSurfaceD53NodeSocketShaderLDATA VolumeVolume@53NodeSocketShaderDATA  DisplacementDisplacement;NodeSocketVector`WXDATA`WDATA ThicknessThickness;NodeSocketFloat DATA DATA8L` IM@ CIMRender ResultT TPbL??`L`L@ X DATA0PbL  8CDATA 8CDATA@ DATA`LDATAXT TSlot 1DATAX TTTSlot 2DATAXT T TSlot 3DATAX TTTSlot 4DATAXT T TSlot 5DATAX TTTSlot 6DATAXT T TSlot 7DATAX TTSlot 8GDh YRGDAnnotations \R \R@ =??????? >> >s>=?>?????DATA \RLLLH\>(?G?fff?RulerData3D?????????????DATA8L G GDATA G L?????DATA Ll>tK?t??>VN?xu??DNA1u4|USDNANAME{*first*last*descriptionrna_subtype_pad[4]*identifier*namevalueiconbase*default_arraydefault_array_lenminmaxsoft_minsoft_maxstepdefault_valueenum_items_num*enum_items_pad[3]precision*default_valueid_type_pad[6]*pointergroupvalval2*next*prevtypesubtypeflagname[64]_pad0[4]datalentotallen*ui_dataoperationtag_pad0[2]*subitem_reference_name*subitem_local_namesubitem_reference_indexsubitem_local_index*subitem_reference_id*subitem_local_id*rna_pathoperations_pad[2]rna_prop_type*referenceproperties*hierarchy_root*storage*runtime_pad_1[4]statusskipped_refcountedskipped_directskipped_indirectremap*depsgraph*_pad*newid*lib*asset_dataname[66]usicon_idrecalcrecalc_up_to_undo_pushrecalc_after_undo_pushsession_uid*properties*override_library*orig_id*py_instance*library_weak_referenceruntime*name_map*filedatafilepath_abs[1024]*parenttemp_indexversionfilesubversionfileidname[1024]*packedfilelibrary_filepath[1024]library_id_name[66]w[2]h[2]flag[2]changed_timestamp[2]*rect[2]co[3]*pointslengthstart_frameend_framecolor[3]color_post[3]line_thickness_pad2[4]*points_vbo*batch_line*batch_pointspath_typepath_steppath_rangepath_viewflagpath_bakeflagpath_sfpath_efpath_bcpath_acpoint[3]plane_normal[3]plane_offsetdepth_scaledeform_dual_quatbbone_segmentsbbone_arc_length_reciprocal_pad1[4]*bbone_rest_mats*bbone_pose_mats*bbone_deform_mats*bbone_dual_quats*bbone_segment_boundaries*propconstraintsikflagprotectflagagrp_indexconstflagselectflagdrawflagbboneflag*bone*childiktreesiktree*mpath*custom*custom_txcustom_scalecustom_scale_xyz[3]custom_translation[3]custom_rotation_euler[3]custom_shape_wire_widthloc[3]size[3]eul[3]quat[4]rotAxis[3]rotAnglerotmodechan_mat[4][4]pose_mat[4][4]disp_mat[4][4]disp_tail_mat[4][4]constinv[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretchikrotweightiklinweightroll1roll2curveInXcurveInYcurveOutXcurveOutYease1ease2scaleInscale_in_yscaleOutscale_out_yscale_in[3]scale_out[3]*bbone_prev*bbone_next*temp*draw_data*orig_pchancolorchanbase*chanhash**chan_arrayctimestride_offset[3]cyclic_offset[3]agroupsactive_groupiksolver*ikdata*ikparamavsnumiternumstepminstepmaxstepsolverfeedbackmaxveldampmaxdampepschannelsfcurve_range_startfcurve_range_length*channel_bagcustomColcs**layer_arraylayer_array_numlayer_active_index**slot_arrayslot_array_numlast_slot_handle**strip_keyframe_data_arraystrip_keyframe_data_array_numcurvesgroupsmarkersactive_markeridrootframe_startframe_end*preview*source*filter_grpsearchstr[64]filterflagfilterflag2renameIndex_pad0[7]regionbasespacetypelink_flag_pad0[6]v2d*actionaction_slot_handleadstimeslidemodemode_prevautosnapcache_display_pad1[6]*grp*ipoconstraintChannelstempinfluencelayer_flagslayer_mix_mode**strip_arraystrip_array_numidtypehandleslot_flags_pad1[3]strip_type_pad0[3]data_indexframe_offset**channelbag_arraychannelbag_array_numslot_handlegroup_array_num**group_arrayfcurve_array_num**fcurve_array*curve*dataui_expand_flagsfraefrablendinblendout*coefficientsarraysizepoly_orderamplitudephase_multiplierphase_offsetvalue_offsettimef1f2totvertmidvalbefore_modeafter_modebefore_cyclesafter_cyclesrectsizestrengthphaseoffsetdepthmodificationstep_size*idpchan_name[64]transChanrotation_mode_pad[5]optionscontext_propertyfallback_valuetargets[8]num_targetscurvalvariablesexpression[256]*expr_comp*expr_simplevec[2]*drivermodifiers*bezt*fptactive_keyframe_indexextendauto_smoothingarray_indexcolor_modeprev_norm_factorprev_offsetstrips*actaction_slot_name[66]fcurvesstrip_timestartendactstartactendrepeatscaleblendmodeextendmode_pad1[2]*speaker_handle*orig_strip*_pad3indexgroup[64]groupmodekeyingflagkeyingoverridepathsidname[64]description[1024]typeinfo[64]active_pathslot_name[66]*tmpacttmp_slot_handletmp_slot_name[66]nla_tracks*act_track*actstripdriversoverrides**driver_arrayact_blendmodeact_extendmodeact_influence*adtpalette_indexcustomcollectionschildbaserollhead[3]tail[3]bone_mat[3][3]inherit_scale_modearm_head[3]arm_tail[3]arm_mat[4][4]arm_rolldistweightxwidthzwidthrad_headrad_taillayersegmentsbbone_mapping_mode_pad2[7]bbone_prev_typebbone_next_typebbone_flagbbone_prev_flagbbone_next_flagactive_collection_index*active_collectionbonebase*bonehash*_pad1*edbo*act_bone*act_edboneneeds_flush_to_iddrawtypedeformflagpathflag**collection_arraycollection_array_numcollection_root_countactive_collection_name[64]layer_usedlayer_protectedaxes_positionbonesflagschild_indexchild_count*bcoll*local_type_infocatalog_idcatalog_simple_name[64]*author*copyright*licensetagsactive_tagtot_tagscustom_library_indexasset_library_type*asset_library_identifier*relative_asset_identifier*pathname[32]rule*obfear_factorsignal_idlook_aheadoloc[3]cfradistancequeue_sizewanderlevelspeedflee_distancehealthacc[3]state_idrulesconditionsactionsruleset_typerule_fuzzinessvolumefallofflast_state_idlanding_smoothnessheightbankingpitchaggressionaccuracyrangeair_min_speedair_max_speedair_max_accair_max_aveair_personal_spaceland_jump_speedland_max_speedland_max_accland_max_aveland_personal_spaceland_stick_forcestates*imageoffset[2]alphadraw_smoothfacfill_factordraw_strengthdraw_jitterdraw_angledraw_angle_factordraw_random_pressdraw_random_strengthdraw_smoothlvldraw_subdividefill_layer_modefill_directionfill_threshold_pad2[2]caps_type_pad[1]flag2fill_simplylvlfill_draw_modefill_extend_modeinput_samplesuv_randombrush_typeeraser_modeactive_smoothera_strength_fera_thickness_fgradient_fgradient_s[2]simplify_fvertex_factorvertex_modesculpt_flagsculpt_mode_flagpreset_typebrush_draw_moderandom_huerandom_saturationrandom_valuefill_extend_facdilate_pixels*curve_sensitivity*curve_strength*curve_jitter*curve_rand_pressure*curve_rand_strength*curve_rand_uv*curve_rand_hue*curve_rand_saturation*curve_rand_valueoutline_facsimplify_px*material*material_altadd_amountpoints_per_curveminimum_lengthcurve_lengthminimum_distancecurve_radiusdensity_add_attemptsdensity_mode_pad[7]*curve_parameter_falloffclonemtexmask_mtex*toggle_brush*icon_imbuf*gradient*paint_curveicon_filepath[1024]normal_weightrake_factorblendob_modesampling_flagmask_pressurejitterjitter_absoluteoverlay_flagsspacingsmooth_stroke_radiussmooth_stroke_factorratergb[3]hardnessflowwet_mixwet_persistencedensitypaint_flagstip_roundnesstip_scale_xsecondary_rgb[3]dash_ratiodash_samplessculpt_planegradient_spacinggradient_stroke_modegradient_fill_modehas_unsaved_changesfalloff_shapefalloff_anglesculpt_toolvertexpaint_toolweightpaint_toolimagepaint_toolmask_toolgpencil_toolgpencil_vertex_toolgpencil_sculpt_toolgpencil_weight_toolcurves_sculpt_toolautosmooth_factortilt_strength_factortopology_rake_factorcrease_pinch_factornormal_radius_factorarea_radius_factorwet_paint_radius_factorplane_trimtexture_sample_biascurve_presetdisconnected_distance_maxdeform_targetautomasking_flagsautomasking_boundary_edges_propagation_stepsautomasking_start_normal_limitautomasking_start_normal_falloffautomasking_view_normal_limitautomasking_view_normal_falloffelastic_deform_typeelastic_deform_volume_preservationsnake_hook_deform_typepose_deform_typepose_offsetpose_smooth_iterationspose_ik_segmentspose_origin_typeboundary_deform_typeboundary_falloff_typeboundary_offsetcloth_deform_typecloth_force_falloff_typecloth_simulation_area_typecloth_masscloth_dampingcloth_sim_limitcloth_sim_falloffcloth_constraint_softbody_strengthsmooth_deform_typesurface_smooth_shape_preservationsurface_smooth_current_vertexsurface_smooth_iterationsmultiplane_scrape_anglesmear_deform_typeslide_deform_typetexture_overlay_alphamask_overlay_alphacursor_overlay_alphaunprojected_radiussharp_thresholdblur_kernel_radiusblur_modeadd_col[4]sub_col[4]stencil_pos[2]stencil_dimension[2]mask_stencil_pos[2]mask_stencil_dimension[2]*gpencil_settings*curves_sculpt_settingsautomasking_cavity_blur_stepsautomasking_cavity_factor*automasking_cavity_curvehsvcolorsactive_colorbezpressuretot_pointsadd_indexpath[4096]filepath[1024]_padobject_pathslayersis_sequenceforward_axisup_axisoverride_frameframeuse_render_proceduraluse_prefetchprefetch_cache_sizeactive_layer_pad2[3]velocity_unitvelocity_name[64]*handlehandle_filepath[1024]*handle_readersinterocular_distanceconvergence_distanceconvergence_modepivotpole_merge_angle_frompole_merge_angle_to*imaiuser*clipcuserrotationsource*focus_objectfocus_subtarget[64]focus_distanceaperture_fstopaperture_rotationaperture_ratioaperture_bladesdrw_corners[2][4][2]drw_tria[2][2]drw_depth[2]drw_focusmat[4][4]drw_normalmat[4][4]dtxpassepartalphaclipstaclipendlensortho_scaledrawsizesensor_xsensor_yshiftxshiftyYF_dofdistsensor_fitpanorama_typefisheye_fovfisheye_lenslatitude_minlatitude_maxlongitude_minlongitude_maxfisheye_polynomial_k0fisheye_polynomial_k1fisheye_polynomial_k2fisheye_polynomial_k3fisheye_polynomial_k4central_cylindrical_range_u_mincentral_cylindrical_range_u_maxcentral_cylindrical_range_v_mincentral_cylindrical_range_v_maxcentral_cylindrical_radius_pad2*dof_obgpu_dofdofbg_imagesstereo*cachemingoalCdisCvigravity[3]dtmassstructuralshearbendingmax_bendmax_structmax_shearmax_sewingavg_spring_lentimescaletime_scalemaxgoaleff_force_scaleeff_wind_scalesim_time_olddefgoalgoalspringgoalfrictvelocity_smoothdensity_targetdensity_strengthcollider_frictionvel_dampingshrink_minshrink_maxuniform_pressure_forcetarget_volumepressure_factorfluid_densityvgroup_pressure_pad7[6]bending_dampingvoxel_cell_sizestepsPerFrameprerollmaxspringlensolver_typevgroup_bendvgroup_massvgroup_structvgroup_shrinkshapekey_restpresetsreset*effector_weightsbending_modelvgroup_sheartensioncompressionmax_tensionmax_compressiontension_dampcompression_dampshear_dampinternal_spring_max_lengthinternal_spring_max_diversionvgroup_interninternal_tensioninternal_compressionmax_internal_tensionmax_internal_compression*collision_listepsilonself_frictionfrictiondampingselfepsilonrepel_forcedistance_repelself_loop_countloop_count*groupvgroup_selfcolvgroup_objcolclampself_clamplink_statelight_linking*collectionfh_idname[64]*export_properties_pad0object_cacheobject_cache_instancedparents*gobject_hash*owner_idgobjectchildrenactive_exporter_indexexportersdupli_ofs[3]color_taglineart_usagelineart_flagslineart_intersection_masklineart_intersection_priority*view_layerxyshortytotpointmintablemaxtableext_in[2]ext_out[2]*table*premultablepremul_ext_in[2]premul_ext_out[2]default_handle_typecurpresetchanged_timestampcurrcliprcm[4]black[3]white[3]bwmul[3]sample[3]tonex_resolutiondata_luma[256]data_r[256]data_g[256]data_b[256]data_a[256]xmaxymaxco[2][2]oksample_fullsample_lineswavefrm_modevecscope_modewavefrm_heightvecscope_heightwaveform_totwavefrm_alphawavefrm_yfacvecscope_alphaminmax[3][2]hist*waveform_1*waveform_2*waveform_3*vecscope*vecscope_rgblook[64]view_transform[64]exposuregammatemperaturetint*curve_mapping*_pad2display_device[64]name[30]ownspacetarspace*space_objectspace_subtarget[64]enforceheadtaillin_errorrot_error*tarsubtarget[64]matrix[4][4]spacerotOrder*texttarnumtargetsiterationsrootbonemax_rootbone*poletarpolesubtarget[64]poleangleorientweightgrabtarget[3]numpointschainlenxzScaleModeyScaleModebulgebulge_minbulge_maxbulge_smoothreserved1reserved2euler_ordermix_modepowerminmaxflaglocaleval_timetrackflaglockflagoffset_facfollowflagupflagvolmodeplaneorglengthpivXpivYpivZaxXaxYaxZminLimit[6]maxLimit[6]extraFzinvmat[4][4]fromtomap[3]expofrom_rotation_modeto_euler_ordermix_mode_locmix_mode_rotmix_mode_scalefrom_min[3]from_max[3]to_min[3]to_max[3]from_min_rot[3]from_max_rot[3]to_min_rot[3]to_max_rot[3]from_min_scale[3]from_max_scale[3]to_min_scale[3]to_max_scale[3]offset[3]rotAxisxminyminzminzmaxsoft*targetshrinkTypeprojAxisprojAxisSpaceprojLimitshrinkModetrackAxistrack[64]frame_methodobject[64]*camera*depth_ob*cache_fileobject_path[1024]*readerreader_object_path[1024]vec[3][3]alfaradiusipoh1h2f3hideeasingbackperiodauto_handle_typevec[4]_pad1[1]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bptilt_interpradius_interpcharidxkernwnurb*editnurb*bevobj*taperobj*textoncurve*key**mat*bevel_profiletexflagtwist_modetwist_smoothsmallcaps_scalepathlenbevresoltotcolwidthext1ext2resolu_renresolv_renactnuactvertoverflowspacemodealign_ybevel_modetaper_radius_modelineslinedistfsizewordspaceulposulheightxofyoflinewidthposselstartselendlen_wchar*str*editfontfamily[64]*vfont*vfontb*vfonti*vfontbi*tbtotboxactbox*strinfocurinfobevfac1bevfac2bevfac1_mappingbevfac2_mapping_pad2[6]fsize_realtime*curve_evaledit_data_from_original_pad3[7]*batch_cacheh1_loc[2]h2_loc[2]*profilepath_lensegments_len*segmentsview_rectclip_rect*curve_offsetspoint_datacurve_datapoint_sizecurve_sizevertex_group_namesvertex_group_active_indexattributes_active_indexgeometrysymmetryselection_domain*surface*surface_uv_mapactiveactive_rndactive_cloneactive_maskuidname[68]*sharing_infofilename[1024]*layerstypemap[53]totlayermaxlayertotsize*pool*externalvmaskemaskfmaskpmasklmask*canvas*brush_group*pointcacheptcachescurrent_frameformatdisp_typeimage_fileformateffect_uiinit_color_typeeffectimage_resolutionsubstepsinit_color[4]*init_textureinit_layername[68]dry_speeddiss_speedcolor_dry_thresholddepth_clampdisp_factorspread_speedcolor_spread_speedshrink_speeddrip_veldrip_accinfluence_scaleradius_scalewave_dampingwave_speedwave_timescalewave_springwave_smoothnessuvlayer_name[68]image_output_path[1024]output_name[68]output_name2[68]*pmdsurfacesactive_surerror[64]*psyscollisionrgbwetnessparticle_radiusparticle_smoothpaint_distance*paint_ramp*vel_rampproximity_falloffwave_typeray_dirwave_factorwave_clampmax_velocitysmudge_strengthbuttypestypevertgroupuserjitstalifetimetotparttotkeyseednormfacobfacrandfactexfacrandlifeforce[3]dampnablavectsizemaxlendefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2negdispvertgroup_vvgroupname[64]vgroupname_v[64]imat[4][4]*keysstartxstartynarrowminfactimeoffssubvstr[4]subversionminversionminsubversion*curscreen*curscene*cur_view_layerfileflagsglobalfbuild_commit_timestampbuild_hash[16]*fmd*fluid*fluid_old*fluid_mutex*fluid_group*force_group*effector_group*tex_density*tex_color*tex_wt*tex_shadow*tex_flame*tex_flame_coba*tex_coba*tex_field*tex_velocity_x*tex_velocity_y*tex_velocity_z*tex_flags*tex_range_field*guiding_parentp0[3]p1[3]dp0[3]cell_size[3]global_size[3]prev_loc[3]shift[3]shift_f[3]obj_shift_f[3]obmat[4][4]fluidmat[4][4]fluidmat_wt[4][4]base_res[3]res_min[3]res_max[3]res[3]total_cellsdxboundary_widthgravity_final[3]adapt_marginadapt_resadapt_thresholdmaxressolver_resborder_collisionsactive_fieldsbetavorticityactive_color[3]highres_samplingburning_rateflame_smokeflame_vorticityflame_ignitionflame_max_tempflame_smoke_color[3]noise_strengthnoise_pos_scalenoise_time_animres_noise[3]noise_scale_pad3[4]particle_randomnessparticle_numberparticle_minimumparticle_maximumparticle_band_widthfractions_thresholdfractions_distanceflip_ratiosys_particle_maximumsimulation_method_pad4[6]viscosity_value_pad5[4]surface_tensionviscosity_baseviscosity_exponentmesh_concave_uppermesh_concave_lowermesh_particle_radiusmesh_smoothen_posmesh_smoothen_negmesh_scalemesh_generator_pad6[2]particle_typeparticle_scalesndparticle_tau_min_wcsndparticle_tau_max_wcsndparticle_tau_min_tasndparticle_tau_max_tasndparticle_tau_min_ksndparticle_tau_max_ksndparticle_k_wcsndparticle_k_tasndparticle_k_bsndparticle_k_dsndparticle_l_minsndparticle_l_maxsndparticle_potential_radiussndparticle_update_radiussndparticle_boundarysndparticle_combined_exportguiding_alphaguiding_betaguiding_vel_factorguide_res[3]guiding_source_pad8[2]cache_frame_startcache_frame_endcache_frame_pause_datacache_frame_pause_noisecache_frame_pause_meshcache_frame_pause_particlescache_frame_pause_guidingcache_frame_offsetcache_flagcache_mesh_formatcache_data_formatcache_particle_formatcache_noise_formatcache_directory[1024]cache_typecache_id[4]_pad9[2]time_totaltime_per_frameframe_lengthcfl_conditiontimesteps_minimumtimesteps_maximumslice_per_voxelslice_depthdisplay_thicknessgrid_scale*cobavector_scalegridlines_lower_boundgridlines_upper_boundgridlines_range_color[4]axis_slice_methodslice_axisshow_gridlinesdraw_velocityvector_draw_typevector_fieldvector_scale_with_magnitudevector_draw_mac_componentsuse_cobacoba_fieldinterp_methodgridlines_color_fieldgridlines_cell_filter_pad10[3]velocity_scaleopenvdb_compressionclippingopenvdb_data_depth_pad11[7]viewsettings_pad12[4]*point_cache[2]ptcaches[2]cache_compcache_high_compcache_file_format_pad13[7]*mesh*noise_texture*verts_oldnumvertsvel_multivel_normalvel_randomvel_coord[3]fuel_amountvolume_densitysurface_distanceparticle_sizesubframestexture_sizetexture_offsetvgroup_densitybehaviortexture_type_pad4[3]guiding_modeselectionqiqi_startqi_endedge_typesexclude_edge_types*linestyle*scriptis_displayedmodulesraycasting_algorithmsphere_radiusdkr_epsiloncrease_anglelinesetszcolor[4]*pt_origidx_origuv_facuv_rotuv_fill[2]vert_color[4]verts[3]info[64]fill[4]beztpoint_index*curve_pointstot_curve_pointstmp_layerinfo[128]multi_frame_falloffstroke_startfill_startvertex_startcurve_start*gps_orig*trianglestotpointstot_trianglesthicknessinittimecolorname[128]caps[2]fill_opacity_facboundbox_min[3]boundbox_max[3]uv_rotationuv_translation[2]uv_scaleselect_index_pad4[4]*dvertvert_color_fill[4]*editcurve*_pad5frameidonion_id*gpf_origstrokesframenumkey_typename[128]sort_index*gpl_origframes*actframeonion_flaginfo[128]pass_indexinverse[4][4]parsubstr[64]partypeline_changetintcolor[4]opacityviewlayername[64]blend_modevertex_paint_opacitygstepgstep_nextgcolor_prev[3]gcolor_next[3]mask_layersact_masklocation[3]rotation[3]scale[3]layer_mat[4][4]layer_invmat[4][4]*sbuffer*sbuffer_position_buf*sbuffer_color_buf*sbuffer_batch*sbuffer_gpsplayingmatidsbuffer_sflagsbuffer_usedsbuffer_sizearrow_start[8]arrow_end[8]arrow_start_stylearrow_end_styletot_cp_points*cp_points*sbuffer_brush*gpencil_cache*lineart_cache*update_cachescale[2]curve_edit_resolutioncurve_edit_thresholdcurve_edit_corner_anglepalettespixfactorline_color[4]onion_factoronion_modezdepth_offsettotframetotstrokedraw_modeonion_keytypeselect_last_indexgrid*errormodifierlayername[64]materialname[64]vgname[64]factorfactor_strengthfactor_thicknessfactor_uvsnoise_offsetnoise_modelayer_pass*curve_intensitythickness_fac*curve_thickness*gpmdseg_startseg_endseg_modeseg_repeatframe_scalesegment_active_indexhsv[3]modify_colorhardeness*objectsample_lengthsubdiv*outline_materialcountrnd_offset[3]rnd_rot[3]rnd_scale[3]mat_rplstart_delaytransitiontime_alignmentspeed_facspeed_maxgaptime_modepercentage_facfade_factarget_vgname[64]fade_opacity_strengthfade_thickness_strength*cache_datastart_facend_facrand_start_facrand_end_facrand_offsetovershoot_facpoint_densitysegment_influencemax_angle*dmddashgapdash_offsetfalloff_typeparentinv[4][4]cent[3]force*curfalloffrot[3]stroke_stepstroke_start_offsetmulti(*vert_coords_prev)()duplicationsfading_centerfading_thicknessfading_opacity*colorbanduv_offsetfill_rotationfill_offset[2]fill_scalefit_methodalignment_rotationmin_weightdist_startdist_endaxisangleline_typessource_typeuse_multiple_levelslevel_startlevel_end*source_camera*light_contour_object*source_object*source_collection*target_materialtarget_layer[64]source_vertex_group[64]overscanshadow_camera_fovshadow_camera_sizeshadow_camera_nearshadow_camera_fartransparency_flagstransparency_maskintersection_maskshadow_selectionsilhouette_selectioncrease_thresholdangle_splitting_thresholdchain_smooth_tolerancechaining_image_thresholdcalculation_flagsstroke_depth_offsetlevel_start_overridelevel_end_overrideedge_types_overrideshadow_selection_overrideshadow_use_silhouette_override*la_data_ptr*aux_targetkeep_distshrink_typeshrink_optsshrink_modeproj_limitproj_axissubsurf_levelssmooth_factorsmooth_stepskipspreadfstopfocal_lengthsensorrationum_bladeshigh_quality*id_referencedrawing_index*values*layer_nameframes_storagemasksactive_mask_index*parsubstrtranslation[3]*viewlayernamefilternum_frames_beforenum_frames_aftercolor_before[3]color_after[3]**drawing_arraydrawing_array_size*root_group_ptrlayers_data*active_node**material_arraymaterial_array_size_pad3[2]onion_skinning_settings*sceneframenrcyclmultiview_eyepasstilemulti_indexview*animtile_number*rendertilearray_layertilearray_offset[2]tilearray_size[2]gen_xgen_ygen_typegen_flaggen_depthgen_color[4]label[64]*cache_mutex*partial_update_register*partial_update_userbackdrop_offset[2]drawdata*gputexture[3][2]anims*rrrenderslotsrender_slotlast_render_slotlastframegpuframenrgpuflaggpu_passgpu_layergpu_viewseam_marginpackedfileslastusedaspxaspycolorspace_settingsalpha_modeeyeviews_formatactive_tile_indextilesviews*stereo3d_formatblocktypeadrcodemaxrcttotrctvartypeextrapbitmaskslide_minslide_maxcurveshowkeymuteiporelativetotelemvgroup[64]sliderminslidermax*refkeyelemstr[32]elemsizeblock*fromuidgenpntswopntsuopntsvopntswtypeutypevtypewactbpfufvfwdudvdw*def*editlatt*base_origlayflag_from_collectionflag_legacylocal_view_bitslocal_collections_bits*engine_type(*free)()runtime_flaglayer_collectionsrender_passesobject_bases*stats*basactlayflagpassflagpass_alpha_thresholdcryptomatte_flagcryptomatte_levelssamples*mat_override*world_override*id_propertiesfreestyle_configeeveeaovs*active_aovlightgroups*active_lightgroup**object_bases_array*object_bases_hashenergy_newspotsizespotblendarea_shape_pad1area_sizearea_sizeyarea_sizezarea_spreadsun_anglepr_textureuse_nodescascade_max_distcascade_exponentcascade_fadecascade_countdiff_facspec_factransmission_facvolume_facatt_distshadow_filter_radiusshadow_maximum_resolutionshadow_jitter_overblur*nodetreeenergyattenuation_typeparallax_typegrid_flagdistinfdistparvis_biasvis_bleedbiasvis_blurintensitygrid_resolution_xgrid_resolution_ygrid_resolution_zgrid_bake_samplesgrid_surface_biasgrid_escape_biasgrid_normal_biasgrid_view_biasgrid_facing_biasgrid_validity_thresholdgrid_dilation_thresholdgrid_dilation_radiusgrid_clamp_directgrid_clamp_indirectgrid_surfel_density*visibility_grpdata_display_sizeposition[3]attenuation_facattenuationmat[4][4]parallaxmat[4][4]mat[4][4]resolution[3]corner[3]attenuation_scaleincrement_x[3]attenuation_biasincrement_y[3]level_biasincrement_z[3]_pad4visibility_biasvisibility_bleedvisibility_range_pad5*textex_size[3]data_typecomponentsversioncube_lengrid_lenmips_lenvis_resref_res_pad[4][2]grid_txcube_tx*cube_mips*cube_data*grid_data(*L0)()(*L1_a)()(*L1_b)()(*L1_c)()*validity(*virtual_offset)()*L0*L1_a*L1_b*L1_cdata_layoutblock_lenblock_size*block_infosbakingirradiancevisibilityconnectivitysurfels_len*surfelsshareddirty*grid_static_cache*color_rampvalue_minvalue_maxrange_minrange_maxmin_curvaturemax_curvaturemin_thicknessmax_thicknessmin_anglemat_attrsamplingerrorwavelengthoctavesfrequencybackbone_lengthtip_lengthroundsrandom_radiusrandom_centerrandom_backbonescale_xscale_ypivot_upivot_xpivot_ytoleranceorientationthickness_positionthickness_ratiocapschainingsplit_lengthmin_lengthmax_lengthchain_countsplit_dash1split_gap1split_dash2split_gap2split_dash3split_gap3sort_keyintegration_typetexsteptexactdash1gap1dash2gap2dash3gap3panel*mtex[18]color_modifiersalpha_modifiersthickness_modifiersgeometry_modifiersmasklayersmasklay_actmasklay_totparent[64]sub_parent[64]parent_orig[2]parent_corners_orig[4][2]utot_uw*uwparentoffset_modeweight_interptot_point*points_deformtot_vertsplinessplines_shapes*act_spline*act_pointblend_flagrestrictflag*image_user*uvname*attribute_namevalidinterp*simastroke_rgba[4]fill_rgba[4]mix_rgba[4]stroke_stylefill_stylemix_factorgradient_anglegradient_radiusgradient_scale[2]gradient_shift[2]texture_angletexture_scale[2]texture_offset[2]texture_opacitytexture_pixsizegradient_typemix_stroke_factoralignment_modemat_occlusionintersection_prioritysurface_render_methodaspecrspecgspecbray_mirrorspecgloss_mirroughnessmetallicpr_typepr_flagline_col[4]line_priorityvcol_alphapaint_active_slotpaint_clone_slottot_slotsdisplacement_methodthickness_modealpha_thresholdrefract_depthblend_methodblend_shadowvolume_intersection_methodinflate_bounds*texpaintslotgpumaterial*gp_stylelinearttotedgetotpolytotloop*poly_offset_indicesvdataedatapdataldata*mselecttotselectact_face*texcomesheditflagsmoothreshremesh_voxel_sizeremesh_voxel_adaptivityface_sets_color_seedface_sets_color_default*active_color_attribute*default_color_attributeremesh_modecd_flagsubdivrsubsurftype*mpoly*mloop*mvert*medge*mtface*tface*mcol*mfacefdatatotface*tpageuv[4][2]col[4]transpunwrapfis[255]s_lendef_nr*dwtotweightradius[3]totdisp(*disps)()*hiddenv1v2creasebweightloopstartuv[2]ev3v4edcode*bbexpxexpyexpzradrad2*mat*imatelems*editelemswiresizerendersizethresh*lastelemexecution_timelayout_panel_open_flagpersistent_uid*texture*map_objectmap_bone[64]uvlayer_tmptexmappingsubdivTypelevelsrenderLevelsuv_smoothqualityboundary_smooth*emCache*mCachedefaxisrandomize*ob_armthreshold*start_cap*end_cap*curve_ob*offset_obmerge_distfit_typeoffset_typeuv_offset[2]bisect_thresholduse_correct_order_on_mergeuv_offset_copy[2]*mirror_obsplit_angleresval_flagsprofile_typelim_flagse_flagsmatedge_flagsface_str_modemiter_innermiter_outervmesh_methodaffect_typeprofilebevel_angledefgrp_name[64]*custom_profileedge_weight_name[64]vertex_weight_name[64]*domain*flow*effectordirectionmidlevel*projectors[10]num_projectorsaspectxaspectyscalexscaleypercentiterdelimitsymmetry_axisdefgrp_factorface_countfac*objectcenter*_pad4*indexartotindex*clothObject*sim_parms*coll_parms*point_cache*hairdatahair_grid_min[3]hair_grid_max[3]hair_grid_res[3]hair_grid_cellsize*solver_result(*x)()(*xnew)()(*xold)()(*current_xnew)()(*current_x)()(*current_v)()(*vert_tris)()mvert_numtri_numtime_xtime_xnewis_static*bvhtree(*vert_positions_prev)()(*vert_velocities)()cfra_prevverts_numdouble_thresholdmaterial_modebm_flagvertextotinfluencegridsize*bindinfluences*bindoffsets*bindcagecostotcagevert*dyngrid*dyninfluences*dynvertsdyngridsizedyncellmin[3]dyncellwidthbindmat[4][4]*bindweights*bindcos(*bindfunc)()*mesh_final*mesh_originaltotdmverttotdmedgetotdmfacepsyspositionrandom_positionrandom_rotationparticle_amountparticle_offsetindex_layer_name[68]value_layer_name[68]*facepavgroupprotectuvname[68]lvlsculptlvlrenderlvltotlvlsimple*fss*auxTargetvgroup_name[64]keepDistshrinkOptssubsurfLevels*originlimit[2]deform_axisshell_defgrp_name[64]rim_defgrp_name[64]offset_fac_vgoffset_clampnonmanifold_offset_modenonmanifold_boundary_modecrease_innercrease_outercrease_rimmat_ofsmat_ofs_rimmerge_tolerancebevel_convex*ob_axisstepsrender_stepsscrew_ofs*ocean*oceancacheresolutionviewport_resolutionspatial_sizewind_velocitysmallest_wavewave_alignmentwave_directionwave_scalechop_amountfoam_coveragespectrumfetch_jonswapsharpen_peak_jonswapbakestartbakeendcachepath[1024]foamlayername[68]spraylayername[68]cachedgeometry_moderepeat_xrepeat_yfoam_fade*object_from*object_tobone_from[64]bone_to[64]falloff_radiusedit_flagsdefault_weight*cmap_curveadd_thresholdrem_thresholdmask_constantmask_defgrp_name[64]mask_tex_use_channel*mask_texture*mask_tex_map_objmask_tex_map_bone[64]mask_tex_mappingmask_tex_uvlayer_name[68]defgrp_name_a[64]defgrp_name_b[64]default_weight_adefault_weight_bmix_setproximity_modeproximity_flags*proximity_ob_targetmin_distmax_dist*brushhermite_numvoxel_sizeadaptivitybranch_smoothingsymmetry_axesquad_methodngon_methodmin_verticeslambdalambda_border(*deltas)()deltas_numsmooth_typerest_source(*bind_coords)()bind_coords_numdelta_cacheaxis_uaxis_vcenter[2]*object_srcbone_src[64]*object_dstbone_dst[64]play_modeflip_axisdeform_modeeval_frameeval_factoranchor_grp_name[64]total_verts*vertexco*cache_systemcrease_weight*ob_sourcedata_typesvmap_modeemap_modelmap_modepmap_modemap_max_distancemap_ray_radiusislands_precisionlayers_select_src[5]layers_select_dst[5]mix_limitread_flag*vert_inds*vert_weightsnormal_dist*bindsnumbindsvertex_idx*vertsnum_mesh_vertstarget_verts_numnumpoly*id_name*lib_name*packed_filemeta_files_numblob_files_num*meta_files*blob_filesbake_modebake_target*directorydata_blocks_numactive_data_block*data_blocks*packedbake_size*node_groupsettings*simulation_bake_directorybakes_num*bakespanels_num*panelsresolution_modevoxel_amountinterior_band_width*texture_map_objecttexture_map_modetexture_mid_level[3]texture_sample_radiusgrid_name[64]layer_name[64]material_passvertex_group_name[64]*custom_curvecolor_factorhardness_factor_pad[8]tint_modestroke_loc[3]stroke_rot[3]stroke_scale[3]*segments_arraysegments_nummask_switchesmaterial_mask_bits*shared_cachesegment_startsegment_endsegment_modesegment_repeatrender_sizerender_flagdir[768]tcbuild_size_flagbuild_tc_flaguser*gputexture[3]gputextureslastsize[2]*gpdtracking*tracking_contextproxyuse_track_masktrack_preview_heightframe_widthframe_heightundist_marker*track_search*track_previewtrack_pos[2]track_disabledtrack_lockedscene_framenr*track*markerslide_scale[2]channel[32]noisesizeturbulno_rot_axisstride_axiscurmodactoffsstridelenstridechannel[32]offs_bone[32]item_typeitem*socket_typeattribute_domaindefault_input*default_attribute_name*socket_data**items_arrayitems_numidentifierroot_panelactive_indexnext_uidhasinputhasoutputdatatypesockettypeis_copyexternalidentifier[64]limitin_out*typeinfostack_indexdisplay_shapeshort_label[64]description[64]own_indexto_index*linknsinputsoutputsui_ordercustom1custom2custom3custom4warning_propagationlocxlocyoffsetxoffsetynum_panel_states*panel_states_array*fromnode*tonode*fromsock*tosockmulti_input_socket_indexnode_idid_in_nodepathview_center[2]nodeslinkscur_indexchunksizeexecution_modedefault_group_node_widthviewer_bordertree_interface*previewsactive_viewer_keynested_node_refs_num*nested_node_refs*geometry_node_asset_traitsvalue[3]value_euler[3]value[4]value[1024]*valuelabel_sizetype_idname[64]nrcyclicmoviesaturationcontrastgainliftmastershadowsmidtoneshighlightsstartmidtonesendmidtonesflapsroundingcatadioptriclensshiftpass_name[64]sizexsizeymaxspeedminspeedaspectcurvedpercentxpercentyfiltertypebokehimage_in_widthimage_in_heightcenter_xcenter_yspinzoomsigma_colorsigma_spacevariationuniformitysharpnesseccentricityhigh_precisioncontrast_limitcorner_roundinghuesatim_formatbase_path[1024]active_inputsave_as_renderuse_render_formatuse_node_formatpath[1024]layer[30]t1t2t3fstrengthfalphakey[4]algorithmchannelx1x2y1y2fac_x1fac_x2fac_y1fac_y2ycc_modebktypepreviewgamcono_zbufmaxblurbthresh*dict*nodestar_45streakscolmodmixfadeangle_ofskeymcjitprojfitslope[3]power[3]offset_basislift[3]gamma[3]gain[3]input_temperatureinput_tintoutput_temperatureoutput_tintlimchanunspilllimscaleuspillruspillguspillbfrom_color_space[64]to_color_space[64]size_xsize_ytex_mappingcolor_mappingsky_modelsun_direction[3]turbidityground_albedosun_sizesun_intensitysun_elevationsun_rotationaltitudeair_densitydust_densityozone_densitysun_disccolor_spaceprojectionprojection_blendinterpolationextensionoffset_freqsquash_freqsquashdimensionsnormalizefeaturecoloringmusgrave_typebands_directionrings_directionwave_profilename[256]convert_fromconvert_topoint_sourceparticle_systemcolor_sourceob_color_sourcepdcached_resolutionvertex_attribute_name[68]use_subsurface_auto_radiusmodelparametrizationtracking_object[64]smoothnessscreen_balancedespill_factordespill_balanceedge_kernel_radiusedge_kernel_toleranceclip_blackclip_whitedilate_distancefeather_distancefeather_falloffblur_preblur_posttrack_name[64]wrap_axisplane_track_name[64]motion_blur_samplesmotion_blur_shutterbytecode_hash[64]*bytecodedirection_typeuv_map[64]source[2]ray_lengthencoded_hashadd[3]remove[3]entries*matte_idnum_inputshdrprefilterinterpolation_typedomainbooleanintegerrotation_euler[3]vector[3]*stringtransform_spaceinput_type_radiustarget_elementfill_typecount_modeinput_type*items_arraynext_identifierenum_definitionspline_typehandle_typeuse_all_curvesmapping*capture_itemscapture_items_numalign_xpivot_modemethodsocket_typeoutput_node_id*itemsinspection_indexinput_itemsmain_itemsgeneration_itemsfactor_modeclamp_factorclamp_resultblend_typecolor_iddraw_stylevel[3]threadsshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgrav[3]animStartanimEndbakeStartbakeEndframeOffsetgstarmaxRefineiniVelxiniVelyiniVelzsurfdataPath[1024]bbStart[3]bbSize[3]typeFlagsdomainNovecgenvolumeInitTypepartSlipValuegenerateTracersgenerateParticlessurfaceSmoothingsurfaceSubdivsparticleInfSizeparticleInfAlphafarFieldSize*meshVelocitiescpsTimeStartcpsTimeEndcpsQualityattractforceStrengthattractforceRadiusvelocityforceStrengthvelocityforceRadiuslastgoodframeanimRatedeflectforcefieldshapetex_modekinkkink_axiszdirf_strengthf_dampf_flowf_wind_factorf_sizef_powermaxdistmindistf_power_rmaxradminradpdef_damppdef_rdamppdef_permpdef_frictpdef_rfrictpdef_sticknessabsorptionpdef_sbdamppdef_sbiftpdef_sboftclump_facclump_powkink_freqkink_shapekink_ampfree_endtex_nablaf_noisedrawvec1[4]drawvec2[4]drawvec_falloff_min[3]drawvec_falloff_max[3]*f_sourcepdef_cfrictweight[14]global_gravitytotspring*bpoint*bspringmsg_lockmsg_valuenodemassnamedVG_Mass[64]gravmediafrictrklimitphysics_speednamedVG_Softgoal[64]fuzzynessinspringinfrictnamedVG_Spring_K[64]solverflags**keystotpointkeysecondspringcolballballdampballstiffsbc_modeaeroedgeminloopsmaxloopschokesolver_IDplasticspringpreload*scratchshearstiffinpush*shared*collision_grouplcom[3]lrot[3][3]lscale[3][3]last_framevec[8][3]usagelight_set_membershipshadow_set_membershipreceiver_light_setblocker_shadow_set*receiver_collection*blocker_collection*sculptpar1par2par3*proxy*proxy_group*proxy_from*poselib*pose*_pad0defbasefmapsgreasepencil_modifiersshader_fxrestore_mode*matbitsactcoldloc[3]dsize[3]dscale[3]drot[3]dquat[4]drotAxis[3]drotAnglecolbitstransflagnlaflagduplicator_visibility_flagbase_flagbase_local_view_bitscol_groupcol_maskboundtypecollision_boundtypeempty_drawtypeempty_drawsizedupfacescaactdefsoftflagshapenrshapeflag_pad3[1]nlastripshooksparticlesystem*pd*soft*dup_group*fluidsimSettingspc_ids*rigidbody_object*rigidbody_constraintima_ofs[2]*iuserempty_image_visibility_flagempty_image_depthempty_image_flagmodifier_flag_pad8[4]*lightgroup*light_linking*lightprobe_cachecurindexusedusedelemseekworld_co[3]rot[4]ave[3]*groundwander[3]rest_lengthparticle_index[2]delete_flagnumpa[4]w[4]fuv[4]foffsetdurationstateprev_state*hair*boiddietimenum_dmcachesphdensityhair_indexalivespring_kplasticity_constantyield_ratioplasticity_balanceyield_balanceviscosity_omegaviscosity_betastiffness_kstiffness_knearrest_densitybuoyancyspring_frames*boidsdistrphystypeavemodereacteventdrawdraw_sizedraw_aschildtyperen_asdraw_coldraw_stepren_stephair_stepkeys_stepadapt_angleadapt_pixintegratorrotfrombb_alignbb_uv_splitbb_animbb_split_offsetbb_tiltbb_rand_tiltbb_offset[2]bb_size[2]bb_vel_headbb_vel_tailcolor_vec_maxtimetweakcourant_targetjitfaceff_hairgrid_randps_offset[1]grid_reseffector_amounttime_flagpartfactanfactanphasereactfacob_vel[3]avefacphasefacrandrotfacrandphasefacrandsizedragfacbrownfacdampfacrandlengthchild_flagchild_nbrren_child_nbrchildsizechildrandsizechildradchildflatclumpfacclumppowkink_flatkink_amp_clumpkink_extra_stepskink_axis_randomkink_amp_randomrough1rough1_sizerough2rough2_sizerough2_thresrough_endrough_end_shapeclengthclength_thresparting_facparting_minparting_maxbranch_thresdraw_line[2]path_startpath_endtrail_countkeyed_loops*clumpcurve*roughcurveclump_noise_sizebending_randomdupliweights*dup_ob*bb_ob*pd2use_modifier_stack_pad5[2]shape_flagtwistrad_rootrad_tiprad_scale*twistcurve*_pad7*part*particles*edit(*free_edit)()**pathcache**childcachepathcachebufschildcachebufs*clmd*hair_in_mesh*hair_out_mesh*target_ob*lattice_deform_datatree_framebvhtree_framechild_seedtotunexisttotchildtotcachedtotchildcachetarget_psystotkeyedbakespacebb_uvname[3][68]vgroup[13]vg_negrt3_pad3[6]*effectors*fluid_springstot_fluidspringsalloc_fluidsprings*tree*pdddt_fraclattice_strength*orig_psystotdata*data[8]extradatasimframestartframeendframeeditframelast_exactlast_validprev_name[64]*cached_framescached_frames_lenmem_cache_pad3[3]*physics_world**objects*constraintsltimenumbodiessteps_per_secondnum_solver_iterationscol_groupsmesh_sourcerestitutionmarginlin_dampingang_dampinglin_sleep_threshang_sleep_threshorn[4]pos[3]*ob1*ob2breaking_thresholdspring_typelimit_lin_x_lowerlimit_lin_x_upperlimit_lin_y_lowerlimit_lin_y_upperlimit_lin_z_lowerlimit_lin_z_upperlimit_ang_x_lowerlimit_ang_x_upperlimit_ang_y_lowerlimit_ang_y_upperlimit_ang_z_lowerlimit_ang_z_upperspring_stiffness_xspring_stiffness_yspring_stiffness_zspring_stiffness_ang_xspring_stiffness_ang_yspring_stiffness_ang_zspring_damping_xspring_damping_yspring_damping_zspring_damping_ang_xspring_damping_ang_yspring_damping_ang_zmotor_lin_target_velocitymotor_ang_target_velocitymotor_lin_max_impulsemotor_ang_max_impulse*physics_constraintcodecaudio_codecvideo_bitrateaudio_bitrateaudio_mixrateaudio_channelsaudio_volumegop_sizemax_b_framesconstant_rate_factorffmpeg_presetrc_min_raterc_max_raterc_buffer_sizemux_packet_sizemux_ratemixratemainspeed_of_sounddoppler_factordistance_modellay_zmasklay_excludepass_xorfreestyleConfigsuffix[64]viewflagdisplay_modeanaglyph_typeinterlace_typeimtypeplanescompressexr_codeccineon_flagcineon_whitecineon_blackcineon_gammajp2_flagjp2_codectiff_codecstereo3d_formatcolor_management_pad1[7]view_settingsdisplay_settingslinear_colorspace_settingscage_extrusionmax_ray_distancepass_filternormal_swizzle[3]normal_spacetargetsave_modemargin_typeview_from*cage_objectffcodecdatasubframepsfrapefraimagesframaptoframelenframe_stepdimensionspresetxschyschtilextileysubimtypeuse_lock_interface_pad7[3]scemodefrs_secalphamode_pad0[1]borderactlayxaspyaspfrs_sec_basegausscolor_mgt_flagdither_intensitybake_flagbake_filterbake_samplesbake_margin_type_pad9[6]bake_biasdistbake_user_scalepic[1024]stampstamp_font_idstamp_udata[768]fg_stamp[4]bg_stamp[4]seq_prev_typeseq_rend_typeseq_flag_pad5[3]simplify_subsurfsimplify_subsurf_rendersimplify_gpencilsimplify_particlessimplify_particles_rendersimplify_volumesline_thickness_modeunit_line_thicknessengine[32]perf_flagbake_pad8preview_pixel_sizeactviewhair_typehair_subdivblurfacmotion_blur_positionmblur_shutter_curvecompositor_devicecompositor_precisionuse_old_cpu_compositor_pad10[7]initialized*brush_asset_reference*main_brush_asset_referenceactive_brush_per_brush_type*eraser_brush*eraser_brush_asset_referencetool_brush_bindings*palette*cavity_curve*paint_cursorpaint_cursor_col[4]num_input_samplessymmetry_flagstile_offset[3]paintmissing_dataseam_bleednormal_anglescreen_grab_size[2]*stencil*clonestencil_col[3]dithercanvas_source*canvas_imageimage_userinverttotrekeytotaddkeybrushtypebrush[7]*paintcursoremitterdistselectmodeedittypefade_frames*shape_objecttransform_moderadial_symm[3]detail_sizesymmetrize_directiongravity_factorconstant_detaildetail_percent*automasking_cavity_curve_op*gravity_object*strength_curveuse_guideuse_snappingreference_pointangle_snap*reference_objectlock_axisisect_threshold*cur_falloff*cur_primitiveguide*custom_ipolast_rake[2]last_rake_anglelast_stroke_validaverage_stroke_accum[3]average_stroke_counterbrush_rotationbrush_rotation_secanchored_sizeoverlap_factordraw_invertedstroke_activedraw_anchoreddo_linear_conversionlast_location[3]last_hitanchored_initial_mouse[2]pixel_radiusinitial_pixel_radiusstart_pixel_radiussize_pressure_valuetex_mouse[2]mask_tex_mouse[2]*colorspacecurve_typedepth_modesurface_planeerror_thresholdradius_minradius_maxradius_taper_startradius_taper_endsurface_offsetcorner_angleoverhang_axisoverhang_minoverhang_maxthickness_minthickness_maxthickness_samplesdistort_mindistort_maxsharp_minsharp_maxsnap_modesnap_flagoverlap_modesnap_distancepivot_point*vpaint*wpaintuvsculpt*gp_paint*gp_vertexpaint*gp_sculptpaint*gp_weightpaint*curves_sculptvgroup_weightdoublimitautomergeobject_flagunwrapperuvcalc_flaguv_flaguv_selectmodeuv_stickyuvcalc_marginuvcalc_iterationsuvcalc_weight_factoruvcalc_weight_group[64]autoik_chainlengpencil_flagsgpencil_v3d_aligngpencil_v2d_alignannotate_v3d_alignannotate_thicknessgpencil_surface_offsetgpencil_selectmode_editgpencil_selectmode_sculptgp_sculptgp_interpolateimapaintpaint_modeparticleproportional_sizeselect_threshkeying_flagautokey_modekeyframe_typemultires_subdiv_typeedge_modeedge_mode_live_unwraptransform_pivot_pointtransform_flagsnap_node_modesnap_uv_modesnap_anim_modesnap_flag_nodesnap_flag_seqsnap_flag_animsnap_uv_flagsnap_targetsnap_transform_mode_flagsnap_face_nearest_stepsproportional_editprop_modeproportional_objectsproportional_maskproportional_actionproportional_fcurvelock_markersauto_normalizewpaint_lock_relativemultipaintweightuservgroupsubsetgpencil_selectmode_vertexuv_sculpt_settingsworkspace_tool_type_pad5[1]sculpt_paint_settingssculpt_paint_unified_sizesculpt_paint_unified_unprojected_radiussculpt_paint_unified_alphaunified_paint_settingscurve_paint_settingsstatvisnormal_vector[3]_pad6[4]*custom_bevel_profile_preset*sequencer_tool_settingssnap_mode_toolsplane_axisplane_depthplane_orientuse_plane_axis_auto_pad7[2]snap_angle_increment_2dsnap_angle_increment_2d_precisionsnap_angle_increment_3dsnap_angle_increment_3d_precisionscale_lengthsystemsystem_rotationlength_unitmass_unittime_unittemperature_unitquick_cache_steptitle[2]action[2]title_center[2]action_center[2]light_direction[3]shadow_shiftshadow_focusmatcap_ssao_distancematcap_ssao_attenuationmatcap_ssao_samplesviewport_aarender_aashadingscreen_trace_qualityscreen_trace_thicknesstrace_max_roughnessresolution_scaledenoise_stagesgi_diffuse_bouncesgi_cubemap_resolutiongi_visibility_resolutiongi_glossy_clampgi_irradiance_pool_sizetaa_samplestaa_render_samplesvolumetric_startvolumetric_endvolumetric_tile_sizevolumetric_samplesvolumetric_sample_distributionvolumetric_light_clampvolumetric_shadow_samplesvolumetric_ray_depthgtao_distancegtao_thicknessgtao_focusgtao_resolutionfast_gi_step_countfast_gi_ray_countgtao_qualityfast_gi_distancefast_gi_thickness_nearfast_gi_thickness_farfast_gi_methodbokeh_overblurbokeh_max_sizebokeh_thresholdbokeh_neighbor_maxmotion_blur_maxmotion_blur_stepsmotion_blur_depth_scaleshadow_cube_sizeshadow_pool_sizeshadow_ray_countshadow_step_countshadow_resolution_scaleclamp_surface_directclamp_surface_indirectclamp_volume_directclamp_volume_indirectray_tracing_methodray_tracing_optionslight_thresholdsmaa_thresholdexport_methodindex_custom*world*setcursorlayact*ed*toolsettingssafe_areasaudiotransform_spacesorientation_slots[4]*sound_scene*playback_handle*sound_scrub_handle*speaker_handles*fps_info*depsgraph_hash_pad7[4]active_keyingsetkeyingsetsunitphysics_settings*_pad8customdata_maskcustomdata_mask_modalsequencer_colorspace_settings*rigidbody_worldview_layers*master_collection*layer_propertiessimulation_frame_startsimulation_frame_enddisplaygrease_pencil_settingshydra*_pad9vertbaseedgebaseareabasewinidredraws_flagdo_drawdo_refreshdo_draw_gesturedo_draw_paintcursordo_draw_dragskip_handlingscrubbing*active_region*animtimer*context*tool_tip*newvvec*v1*v2*idname*type*layoutpanelname[64]*drawnameofsxofsyblocksizexblocksizeylabelofssortorder*activedatalayout_panel_stateslist_id[128]layout_typelist_scrolllist_griplist_last_lenlist_last_activeifilter_byname[128]filter_flagfilter_sort_flag*dyn_datamat[3][3]preview_id[64]id_session_uidcur_fixed_heightsize_minsize_maxalign*toolis_tool_set*v3*v4*fullbutspacetypebutspacetype_subtypewinxwinyheadertyperegion_active_win*globalspacedatahandlersactionzones*categoryvisible_rectoffset_xoffset_y*block_name_map*popup_block_panelwinrctdrawrctcategory_scrollvisibleregiontypealignmentoverlapflagfullscreenuiblockspanelspanels_category_activeui_listsui_previewspanels_category*gizmo_map*regiontimer*draw_buffer*headerstr*regiondataasset_library_referenceenabled_catalog_paths*active_catalog_pathsearch_string[64]preview_sizedisplay_flagpreferred_row_countinstance_flagshelves*active_shelforig_widthorig_heightorig_fpstopbottomleftrightxofsyofsorigin[2]file[256]build_size_flagsbuild_tc_flagsbuild_flagsstoragedonestartstillendstill*stripdata*crop*transform*color_balancestrip_frame_indexretiming_factororiginal_strip_frame_indexoriginal_retiming_factor*tmpstartofsendofsmachinestartdispenddispmulstreamindexmulticam_sourceclip_flag*strip*scene_camera*maskeffect_faderspeed_fader*seq1*seq2seqbaseconnections*sound*scene_soundpanstrobesound_offset*effectdataanim_startofsanim_endofsblend_opacitymedia_playback_ratespeed_factor*retiming_handlesretiming_handle_num*oldbasep*old_channels*parseqdisp_range[2]*seq_ref*sequence_lookup*media_presence*thumbnail_cache*seqbasep*displayed_channelsmetastack*act_seqact_imagedir[1024]act_sounddir[1024]proxy_dir[1024]proxy_storageover_ofsover_cfraover_flagover_bordershow_missing_media_flagrecycle_max_cost*prefetch_jobdisk_cache_timestampedgeWidthforwardwipetypefMinifClampfBoostdDistdQualitybNoCompScalexIniScaleyInixIniyInirotIniuniform_scalecol[3]*frameMapglobalSpeedspeed_control_typespeed_fader_lengthspeed_fader_frame_numbertext[512]*text_fonttext_blf_idtext_sizeshadow_color[4]box_color[4]outline_color[4]loc[2]wrap_widthbox_marginshadow_angleshadow_offsetshadow_bluroutline_widthblend_effectmask_input_typemask_time*mask_sequence*mask_idcolor_balancecolor_multiplycurve_mappingbrightwhite_value[3]adaptationcorrectiongraphicsuid_*fx_sh*fx_sh_b*fx_sh_cshaderfxradius[2]low_color[4]high_color[4]flipmodeglow_color[4]select_color[3]blur[2]rgba[4]rim_rgb[3]mask_rgb[3]shadow_rgba[4]transparent*newpackedfileattenuationmin_gainmax_gainoffset_time*waveform*spinlocksampleraterpt_maskspace_subtypemainbmainbomainbuseroutliner_syncdataicon*pinid*texusertree*treestoreoutlinevislib_override_view_modestoreflagsearch_flagssync_select_dirtyfilter_stateshow_restrict_flagsfilter_id_typeghost_curves*adscursorTimecursorValaroundchanshownzebraoverlay_typedraw_flaggizmo_flagcursor[2]preview_overlaytimeline_overlaycache_overlaydraw_typeoverlay_modeblend_factortitle[96]dir[1090]renamefile[256]rename_flag*rename_idfilter_glob[256]filter_search[64]filter_idactive_filehighlight_filesel_firstsel_lastthumbnail_sizesortdetails_flagsrecursion_level_pad4[2]base_paramsasset_library_refasset_catalog_visibilityimport_typebrowse_modefolders_prevfolders_nextscroll_offset*params*asset_params*files*folders_prev*folders_nextfolder_histories*op*smoothscroll_timer*previews_timerrecentnrbookmarknrsystemnrsystem_bookmarknrscopessample_line_histcentxcentypinpixel_snap_modelockdt_uvdt_uvstretchgrid_shape_sourceuv_opacitystretch_opacitytile_grid_shape[2]custom_grid_subdiv[2]mask_infooverlaylheighttabnumberwordwrapdopluginsshowlinenrsshowsyntaxline_hlightoverwritelive_edit_pad2[1]findstr[256]replacestr[256]margin_column*py_draw*py_event*py_button*py_browsercallback*py_globaldictlastspacescriptname[1024]scriptarg[256]menunr*but_refsparent_keynode_name[64]display_name[64]preview_shapeinsert_ofs_dirtreepath*edittreetree_idname[64]treetypetexfromshaderfromgeometry_nodes_type*geometry_nodes_tool_treelen_alloc*linescrollbackhistoryprompt[256]language[32]history_indexsel_startsel_endfilter_typefilter[64]xlockofylockofpath_lengthstabmat[4][4]unistabmat[4][4]postproc_flaggpencil_src*display_namereference_indexcolumnsrow_filtersviewer_path*instance_idsinstance_ids_numgeometry_component_typeobject_eval_stateactive_layer_indexcolumn_name[64]value_intvalue_int2[2]*value_stringvalue_floatvalue_float2[2]value_float3[3]value_color[4]volume_maxvolume_mindistance_maxdistance_referencecone_angle_outercone_angle_innercone_volume_outer*format*compiled*curl*sellcurcselcmtimetexcomaptoblendtypeprojxprojyprojzbrush_map_modebrush_angle_modewhich_outputofs[3]rotrandom_anglekdef_varcolfacalphafactimefaclengthfackinkfackinkampfacroughfacpadensfacgravityfaclifefacsizefacivelfacfieldfactwistfactotipotypeipotype_huedata[32]falloff_softnesspsys_cache_spaceob_cache_space*point_tree*point_datanoise_sizenoise_depthnoise_influencenoise_basisnoise_facspeed_scalefalloff_speed_scale*falloff_curverfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxtexfilterafmaxxrepeatyrepeatcheckerdistmin[3]max[3]cobablend_color[3]*intrinsicsdistortion_modelsensor_widthpixel_aspectfocalunitsprincipal_point[2]principal[2]k1k2k3division_k1division_k2nuke_k1nuke_k2brown_k1brown_k2brown_k3brown_k4brown_p1brown_p2pos[2]pattern_corners[4][2]search_min[2]search_max[2]pat_min[2]pat_max[2]markersnr*markersbundle_pos[3]pat_flagsearch_flagframes_limitpattern_matchmotion_modelalgorithm_flagminimum_correlationweight_stabcorners[4][2]**point_trackspoint_tracksnrimage_opacitylast_markerdefault_motion_modeldefault_algorithm_flagdefault_minimum_correlationdefault_pattern_sizedefault_search_sizedefault_frames_limitdefault_margindefault_pattern_matchdefault_flagmotion_flagkeyframe1keyframe2reconstruction_flagrefine_camera_intrinsicsclean_framesclean_actionclean_errorobject_distancetot_trackact_tracktot_rot_trackact_rot_trackmaxscale*rot_trackanchor_frametarget_pos[2]target_rotlocinfscaleinfrotinflast_cameracamnr*camerastracksplane_tracks*active_track*active_plane_trackreconstructionmessage[256]tot_segmentmax_segmenttotal_framesfirst_not_disabled_marker_framenrlast_not_disabled_marker_framenrcoveragesort_methodcoverage_segmentstot_channelcamerastabilization*act_plane_trackobjectsobjectnrtot_objectdopesheetuifont_idpointsitalicboldshadowshadxshadyshadowalphashadowcolorcharacter_weightpaneltitlegrouplabelwidgettooltippanelzoomminlabelcharsminwidgetcharscolumnspacetemplatespaceboxspacebuttonspacexbuttonspaceypanelspacepanelouteroutline[4]inner[4]inner_sel[4]item[4]text[4]text_sel[4]shadedshadetopshadedownroundnessinner_anim[4]inner_anim_sel[4]inner_key[4]inner_key_sel[4]inner_driven[4]inner_driven_sel[4]inner_overridden[4]inner_overridden_sel[4]inner_changed[4]inner_changed_sel[4]header[4]back[4]sub_back[4]wcol_regularwcol_toolwcol_toolbar_itemwcol_textwcol_radiowcol_optionwcol_togglewcol_numwcol_numsliderwcol_tabwcol_menuwcol_pulldownwcol_menu_backwcol_menu_itemwcol_tooltipwcol_boxwcol_scrollwcol_progresswcol_list_itemwcol_pie_menuwcol_statewidget_emboss[4]menu_shadow_facmenu_shadow_widtheditor_border[4]editor_outline[4]editor_outline_active[4]transparent_checker_primary[4]transparent_checker_secondary[4]transparent_checker_sizeicon_alphaicon_saturationwidget_text_cursor[4]xaxis[4]yaxis[4]zaxis[4]gizmo_hi[4]gizmo_primary[4]gizmo_secondary[4]gizmo_view_align[4]gizmo_a[4]gizmo_b[4]icon_scene[4]icon_collection[4]icon_object[4]icon_object_data[4]icon_modifier[4]icon_shading[4]icon_folder[4]icon_autokey[4]icon_border_intensitypanel_roundnessheader_back[4]back_grad[4]show_back_gradtitle[4]text_hi[4]header_title[4]header_text[4]header_text_hi[4]tab_active[4]tab_inactive[4]tab_back[4]tab_outline[4]button[4]button_title[4]button_text[4]button_text_hi[4]list[4]list_title[4]list_text[4]list_text_hi[4]navigation_bar[4]execution_buts[4]panelcolorsasset_shelfshade1[4]shade2[4]hilite[4]grid[4]view_overlay[4]wire[4]wire_edit[4]select[4]lamp[4]speaker[4]empty[4]camera[4]active[4]group[4]group_active[4]transform[4]vertex[4]vertex_select[4]vertex_active[4]vertex_bevel[4]vertex_unreferenced[4]edge[4]edge_select[4]edge_mode_select[4]edge_seam[4]edge_sharp[4]edge_facesel[4]edge_crease[4]edge_bevel[4]face[4]face_select[4]face_mode_select[4]face_retopology[4]face_back[4]face_front[4]face_dot[4]extra_edge_len[4]extra_edge_angle[4]extra_face_angle[4]extra_face_area[4]normal[4]vertex_normal[4]loop_normal[4]bone_solid[4]bone_pose[4]bone_pose_active[4]bone_locked_weight[4]strip[4]strip_select[4]cframe[4]before_current_frame[4]after_current_frame[4]time_keyframe[4]time_gp_keyframe[4]freestyle_edge_mark[4]freestyle_face_mark[4]scrubbing_background[4]time_marker_line[4]time_marker_line_selected[4]nurb_uline[4]nurb_vline[4]act_spline[4]nurb_sel_uline[4]nurb_sel_vline[4]lastsel_point[4]handle_free[4]handle_auto[4]handle_vect[4]handle_align[4]handle_auto_clamped[4]handle_sel_free[4]handle_sel_auto[4]handle_sel_vect[4]handle_sel_align[4]handle_sel_auto_clamped[4]ds_channel[4]ds_subchannel[4]ds_ipoline[4]keytype_keyframe[4]keytype_extreme[4]keytype_breakdown[4]keytype_jitter[4]keytype_movehold[4]keytype_generated[4]keytype_keyframe_select[4]keytype_extreme_select[4]keytype_breakdown_select[4]keytype_jitter_select[4]keytype_movehold_select[4]keytype_generated_select[4]keyborder[4]keyborder_select[4]console_output[4]console_input[4]console_info[4]console_error[4]console_cursor[4]console_select[4]vertex_sizeedge_widthobcenter_diafacedot_sizenoodle_curvinggrid_levelsdash_alphasyntaxl[4]syntaxs[4]syntaxb[4]syntaxn[4]syntaxv[4]syntaxc[4]syntaxd[4]syntaxr[4]line_numbers[4]nodeclass_output[4]nodeclass_filter[4]nodeclass_vector[4]nodeclass_texture[4]nodeclass_shader[4]nodeclass_script[4]nodeclass_pattern[4]nodeclass_layout[4]nodeclass_geometry[4]nodeclass_attribute[4]node_zone_simulation[4]node_zone_repeat[4]node_zone_foreach_geometry_element[4]simulated_frames[4]movie[4]movieclip[4]mask[4]image[4]scene[4]audio[4]effect[4]transition[4]meta[4]text_strip[4]color_strip[4]active_strip[4]selected_strip[4]keyframe_scale_faceditmesh_active[4]handle_vertex[4]handle_vertex_select[4]handle_vertex_sizeclipping_border_3d[4]marker_outline[4]marker[4]act_marker[4]sel_marker[4]dis_marker[4]lock_marker[4]bundle_solid[4]path_before[4]path_after[4]path_keyframe_before[4]path_keyframe_after[4]camera_path[4]camera_passepartout[4]gp_vertex_sizegp_vertex[4]gp_vertex_select[4]preview_back[4]preview_stitch_face[4]preview_stitch_edge[4]preview_stitch_vert[4]preview_stitch_stitchable[4]preview_stitch_unstitchable[4]preview_stitch_active[4]uv_shadow[4]match[4]selected_highlight[4]selected_object[4]active_object[4]edited_object[4]row_alternate[4]skin_root[4]anim_active[4]anim_non_active[4]anim_preview_range[4]nla_tweaking[4]nla_tweakdupli[4]nla_track[4]nla_transition[4]nla_transition_sel[4]nla_meta[4]nla_meta_sel[4]nla_sound[4]nla_sound_sel[4]info_selected[4]info_selected_text[4]info_error[4]info_error_text[4]info_warning[4]info_warning_text[4]info_info[4]info_info_text[4]info_debug[4]info_debug_text[4]info_property[4]info_property_text[4]info_operator[4]info_operator_text[4]paint_curve_pivot[4]paint_curve_handle[4]metadatabg[4]metadatatext[4]solid[4]tuitbutstv3dtfiletipotinfotacttnlatseqtimatexttoopstnodetuserpreftconsoletclipttopbartstatusbarspace_spreadsheettarm[20]collection_color[8]strip_color[9]active_theme_areamodule[128]path[768]space_typecontext[64]itemsui_name[64]op_idname[64]op_prop_enum[64]opcontextmt_idname[64]context_data_path[256]prop_id[64]prop_indeximport_methodmodule[48]*access_tokencustom_dirpath[1024]remote_url[1024]smoothspec[4]mouse_speedwalk_speedwalk_speed_factorview_heightjump_heightteleport_timeis_dirtysection_activedisplay_typesort_typetemp_win_sizextemp_win_sizeyuse_undo_legacyno_override_auto_resyncuse_cycles_debuguse_eevee_debugshow_asset_debug_infono_asset_indexinguse_viewport_debuguse_all_linked_data_directuse_extensions_debuguse_recompute_usercount_on_save_debugSANITIZE_AFTER_HEREuse_new_curves_toolsuse_new_point_cloud_typeuse_sculpt_tools_tiltuse_extended_asset_browseruse_sculpt_texture_paintenable_overlay_nextuse_new_volume_nodesuse_new_file_import_nodesuse_shader_node_previewsuse_animation_baklavaenable_new_cpu_compositordir_path[768]shelf_idname[64]dupflagpref_flagsavetimemouse_emulate_3_button_modifiertrackpad_scroll_directiontempdir[768]fontdir[768]renderdir[1024]render_cachedir[768]textudir[768]pythondir[768]sounddir[768]i18ndir[768]image_editor[1024]text_editor[1024]text_editor_args[256]anim_player[1024]anim_player_presetv2d_min_gridsizetimecode_styleversionsdbl_click_timemini_axis_typeuiflaguiflag2gpu_flag_pad8[6]app_flagviewzoomlanguagemixbufsizeaudiodeviceaudiorateaudioformataudiochannelsui_scaleui_line_widthdpiscale_factorinv_scale_factorpixelsizevirtual_pixelnode_marginnode_preview_restransoptsmenuthreshold1menuthreshold2app_template[64]themesuifontsuistylesuser_keymapsuser_keyconfig_prefsaddonsautoexec_pathsscript_directoriesuser_menusasset_librariesextension_reposasset_shelves_settingskeyconfigstr[64]active_asset_libraryactive_extension_repoextension_flagnetwork_timeoutnetwork_connection_limit_pad14[3]undostepsundomemorygpu_viewport_qualitygp_manhattendistgp_euclideandistgp_erasergp_settings_pad13[4]light_param[4]light_ambient[3]gizmo_sizegizmo_size_navigate_v3d_pad3[5]edit_studio_lightlookdev_sphere_sizevbotimeoutvbocollectratetextimeouttexcollectratememcachelimitprefetchframespad_rot_anglervisizervibrightrecent_filessmooth_viewtxglreslimitcolor_picker_typeauto_smoothing_newipo_newkeyhandles_new_pad11[4]view_frame_typeview_frame_keyframesview_frame_secondsgpu_preferred_indexgpu_preferred_vendor_idgpu_preferred_device_id_pad16[4]gpu_backendmax_shader_compilation_subprocessesplayback_fps_sampleswidget_unitanisotropic_filtertablet_apipressure_threshold_maxpressure_softnessndof_sensitivityndof_orbit_sensitivityndof_deadzonendof_flagogl_multisamplesimage_draw_methodglalphaclipautokey_flagkey_insert_channels_pad15[6]animation_flagtext_rendernavigation_modeview_rotate_sensitivity_turntableview_rotate_sensitivity_trackballcoba_weightsculpt_paint_overlay_col[3]gpencil_new_layer_col[4]drag_threshold_mousedrag_threshold_tabletdrag_thresholdmove_thresholdfont_path_ui[1024]font_path_ui_mono[1024]compute_device_typefcu_inactive_alphapie_tap_timeoutpie_initial_timeoutpie_animation_timeoutpie_menu_confirmpie_menu_radiuspie_menu_thresholdsequencer_editor_flagfactor_display_typerender_display_typefilebrowser_display_typesequencer_disk_cache_dir[1024]sequencer_disk_cache_compressionsequencer_disk_cache_size_limitsequencer_disk_cache_flagsequencer_proxy_setupcollection_instance_empty_sizetext_flag_pad10[1]file_preview_typestatusbar_flagwalk_navigationspace_datafile_space_dataexperimentaltime_lowtime_midtime_hi_and_versionclock_seq_hi_and_reservedclock_seq_lownode[6]value[4][4]trans[4]scale[4][4]scale_weight*temp_pfverthormaskmin[2]max[2]minzoommaxzoomscrollscroll_uikeeptotkeepzoomkeepofsoldwinxoldwinyalpha_vertalpha_horpage_size_y*sms*smooth_timerwinmat[4][4]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]viewcamtexcofac[4]viewmatob[4][4]persmatob[4][4]clip[6][4]clip_local[6][4]*clipbb*localvd*view_rendertwmat[4][4]tw_axis_min[3]tw_axis_max[3]tw_axis_matrix[3][3]gridviewviewquat[4]camdxcamdypixsizecamzoomis_perspperspview_axis_rollviewlockruntime_viewlockviewlock_quadofs_lock[2]twdrawflagrflaglviewquat[4]lpersplviewlview_axis_roll_pad8[1]rot_anglerot_axis[3]rotation_quaternion[4]rotation_axis[3]rotation_angleprev_typeprev_type_wirecolor_typelightbackground_typecavity_typewire_color_typeuse_compositorstudio_light[256]lookdev_light[256]matcap[256]shadow_intensitysingle_color[3]studiolight_rot_zstudiolight_backgroundstudiolight_intensitystudiolight_blurobject_outline_color[3]xray_alphaxray_alpha_wirecavity_valley_factorcavity_ridge_factorbackground_color[3]curvature_ridge_factorcurvature_valley_factorrender_passaov_name[64]edit_flagnormals_lengthnormals_constant_screen_sizepaint_flagwpaint_flagtexture_paint_mode_opacityvertex_paint_mode_opacityweight_paint_mode_opacitysculpt_mode_mask_opacitysculpt_mode_face_sets_opacityviewer_attribute_opacityxray_alpha_bonebone_wire_alphafade_alphawireframe_thresholdwireframe_opacityretopology_offsetgpencil_paper_opacitygpencil_grid_opacitygpencil_fade_layergpencil_grid_color[3]gpencil_grid_scale[2]gpencil_grid_offset[2]gpencil_grid_subdivisionsgpencil_vertex_paint_opacityhandle_displaysculpt_curves_cage_opacity*properties_storage(*properties_storage_free)()*local_statsbundle_sizebundle_drawtypeobject_type_exclude_viewportobject_type_exclude_select*ob_centrerender_borderob_centre_bone[64]local_view_uuidlocal_collections_uuiddebug_flagob_centre_cursorscenelockgp_flagnearfargizmo_show_objectgizmo_show_armaturegizmo_show_emptygizmo_show_lightgizmo_show_cameragridflaggridlinesgridsubdivvertex_opacitystereo3d_flagstereo3d_camerastereo3d_convergence_factorstereo3d_volume_alphastereo3d_convergence_alpha*ui_name*modifier_namesim_output_node_idrepeat_output_node_iditerationzone_output_node_idwireframe_typewireframe_detailinterpolation_methodsequence_modeframe_durationactive_gridrendervelocity_grid[64]listprintlevelstorelevel*reporttimer*locksession_settings*windrawable*winactivewindowsinit_flagfile_savedop_undo_depthoutliner_sync_select_dirtyoperatorsnotifier_queue*notifier_queue_set*notifier_currentextensions_updatesextensions_blockedjobspaintcursorsdragskeyconfigs*defaultconf*addonconf*userconftimers*autosavetimerautosave_scheduled*undo_stack*message_busxr*ghostwin*gpuctx*new_sceneview_layer_name[64]*unpinned_scene*workspace_hookglobal_area_map*screenposxposywindowstatelastcursormodalcursorgrabcursorpie_event_type_lockpie_event_type_lastaddmousemovetag_cursor_refreshevent_queue_check_clickevent_queue_check_dragevent_queue_check_drag_handledevent_queue_consecutive_gesture_typeevent_queue_consecutive_gesture_xy[2]*event_queue_consecutive_gesture_data*eventstate*event_last_handled*ime_dataime_data_is_composingevent_queuemodalhandlersgesturedrawcalls*cursor_keymap_statuseventstate_prev_press_time_mspropvalue_str[64]propvalueshiftctrlaltoskeykeymodifiermaptype*ptr*remove_item*add_itemdiff_itemsspaceidregionidowner_id[128]kmi_id(*poll)()(*poll_modal_item)()*modal_itemsbasename[64]keymapsactkeymap*customdata*reportsmacro*opmidname_fallback[64]layoutshook_layout_relationsowner_idstools*pin_sceneobject_modeorderparentid_pad_0[4]*active*act_layout*temp_workspace_store*temp_layout_storemistypehorrhorghorbexpmisimiststamistdistmisthiaodistaoenergyprobe_resolutionsun_thresholdsun_shadow_maximum_resolutionsun_shadow_jitter_overblursun_shadow_filter_radiuslast_updatebase_scalebase_pose_type*base_pose_objectbase_pose_location[3]base_pose_angledraw_flagscontroller_draw_styleclip_startclip_endpath[192]profile[256]component_pathsfloat_thresholdaxis_flagpose_location[3]pose_rotation[3]path[64]user_pathsop[64]*op_properties*op_properties_ptrop_flagaction_flaghaptic_flagpose_flaghaptic_name[64]haptic_durationhaptic_frequencyhaptic_amplitudeselbindingbindingsselitemTYPE4charucharshortushortintlongulongfloatdoubleint64_tuint64_tvoidint8_traw_dataDrawDataListDrawDataIDPropertyUIDataIDPropertyUIDataEnumItemIDPropertyUIDataIntIDPropertyUIDataBoolIDPropertyUIDataFloatIDPropertyUIDataStringIDPropertyUIDataIDIDPropertyDataListBaseIDPropertyIDOverrideLibraryPropertyOperationIDIDOverrideLibraryPropertyIDOverrideLibraryIDOverrideLibraryRuntimeID_Runtime_RemapID_RuntimeDepsgraphLibraryAssetMetaDataLibraryWeakReferenceLibrary_RuntimeUniqueName_MapFileDataPackedFilePreviewImagePreviewImageRuntimeHandlebMotionPathVertbMotionPathGPUVertBufHandleGPUBatchHandlebAnimVizSettingsbPoseChannel_BBoneSegmentBoundarybPoseChannel_RuntimeSessionUIDDualQuatMat4bPoseChannelBoneObjectbPoseChannelDrawDataBoneColorbPoseGHashbIKParambItascbActionGroupActionChannelBagThemeWireColorbActionActionLayerActionSlotActionStripKeyframeDatabDopeSheetCollectionSpaceAction_RuntimeSpaceActionSpaceLinkView2DbActionChannelIpoActionStripActionSlotRuntimeHandleFCurveFModifierFMod_GeneratorFMod_FunctionGeneratorFCM_EnvelopeDataFMod_EnvelopeFMod_CyclesFMod_LimitsrctfFMod_NoiseFMod_SteppedDriverTargetDriverVarChannelDriverExprPyLike_ParsedFPointBezTripleNlaStripNlaTrackKS_PathKeyingSetAnimOverrideAnimDataIdAdtTemplateBone_RuntimebArmature_RuntimeBoneCollectionbArmatureEditBoneBoneCollectionMemberBoneCollectionReferenceAssetTagAssetTypeInfobUUIDAssetLibraryReferenceAssetWeakReferenceAssetCatalogPathLinkBoidRuleBoidRuleGoalAvoidBoidRuleAvoidCollisionBoidRuleFollowLeaderBoidRuleAverageSpeedBoidRuleFightBoidDataBoidStateBoidSettingsBrushCloneImageBrushGpencilSettingsCurveMappingMaterialBrushCurvesSculptSettingsBrushMTexImBufColorBandPaintCurvetPaletteColorHSVPaletteColorPalettePaintCurvePointCacheObjectPathCacheFileLayerCacheFileCacheArchiveHandleGSetCameraStereoSettingsCameraBGImageImageUserMovieClipMovieClipUserCameraDOFSettingsCamera_RuntimeCameraGPUDOFSettingsClothSimSettingsLinkNodeEffectorWeightsClothCollSettingsCollectionLightLinkingCollectionObjectCollectionChildCollectionExportCollection_RuntimeViewLayerCurveMapPointCurveMapHistogramScopesColorManagedViewSettingsColorManagedDisplaySettingsColorManagedColorspaceSettingsbConstraintChannelbConstraintbConstraintTargetbPythonConstraintTextbKinematicConstraintbSplineIKConstraintbArmatureConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbSizeLikeConstraintbSameVolumeConstraintbTransLikeConstraintbMinMaxConstraintbActionConstraintbLockTrackConstraintbDampTrackConstraintbFollowPathConstraintbStretchToConstraintbRigidBodyJointConstraintbClampToConstraintbChildOfConstraintbTransformConstraintbPivotConstraintbLocLimitConstraintbRotLimitConstraintbSizeLimitConstraintbDistLimitConstraintbShrinkwrapConstraintbFollowTrackConstraintbCameraSolverConstraintbObjectSolverConstraintbTransformCacheConstraintCacheReaderBPointNurbCharInfoTextBoxCurveEditNurbKeyCurveProfileEditFontVFontCurvesCurveProfilePointCurvesGeometryCustomDataCurvesGeometryRuntimeHandleCustomDataLayerImplicitSharingInfoHandleCustomDataExternalBLI_mempoolCustomData_MeshMasksDynamicPaintSurfaceDynamicPaintCanvasSettingsPaintSurfaceDataPointCacheTexDynamicPaintModifierDataDynamicPaintBrushSettingsParticleSystemEffectBuildEffPartEffParticleWaveEffFileGlobalbScreenSceneFluidDomainSettingsFluidModifierDataMANTAGPUTextureFluidFlowSettingsMeshFluidEffectorSettingsFreestyleLineSetFreestyleLineStyleFreestyleModuleConfigFreestyleConfigbGPDcontrolpointbGPDspoint_RuntimebGPDspointbGPDtrianglebGPDpalettecolorbGPDpalettebGPDcurve_pointbGPDcurvebGPDstroke_RuntimebGPDstrokeMDeformVertbGPDframe_RuntimebGPDframebGPDlayer_MaskbGPDlayer_RuntimebGPDlayerbGPdata_RuntimeGpencilBatchCacheLineartCacheGPencilUpdateCachebGPgridbGPdataGpencilModifierDataNoiseGpencilModifierDataSubdivGpencilModifierDataThickGpencilModifierDataTimeGpencilModifierSegmentTimeGpencilModifierDataColorGpencilModifierDataOpacityGpencilModifierDataOutlineGpencilModifierDataArrayGpencilModifierDataBuildGpencilModifierDataLatticeGpencilModifierDataLatticeDeformDataLengthGpencilModifierDataDashGpencilModifierSegmentDashGpencilModifierDataMirrorGpencilModifierDataHookGpencilModifierDataSimplifyGpencilModifierDataOffsetGpencilModifierDataSmoothGpencilModifierDataArmatureGpencilModifierDataMultiplyGpencilModifierDataTintGpencilModifierDataTextureGpencilModifierDataWeightProxGpencilModifierDataWeightAngleGpencilModifierDataLineartGpencilModifierDataLineartDataShrinkwrapGpencilModifierDataShrinkwrapTreeDataEnvelopeGpencilModifierDataGreasePencilDrawingBaseGreasePencilDrawingGreasePencilDrawingRuntimeHandleGreasePencilDrawingReferenceGreasePencilGreasePencilFrameGreasePencilLayerFramesMapStorageGreasePencilLayerMaskGreasePencilLayerTreeNodeGreasePencilLayerTreeGroupGreasePencilLayerGreasePencilLayerRuntimeHandleGreasePencilLayerGroupRuntimeHandleGreasePencilOnionSkinningSettingsGreasePencilRuntimeHandleImageAnimImBufAnimImageViewImagePackedFileRenderSlotRenderResultImageTile_RuntimeImageTileImage_RuntimePartialUpdateRegisterPartialUpdateUserMovieCacheStereo3dFormatIpoDriverIpoCurveKeyBlockLatticeEditLattBaseViewLayerEngineDataDrawEngineTypeLayerCollectionViewLayerEEVEEViewLayerAOVViewLayerLightgroupLightgroupMembershipSceneStatsWorldLampbNodeTreeLightProbeLightProbeCacheLightGridCacheLightCacheTextureLightCacheLightProbeBakingDataLightProbeIrradianceDataLightProbeVisibilityDataLightProbeConnectivityDataLightProbeBlockDataLightProbeGridCacheFrameLightProbeObjectCacheLineStyleModifierLineStyleColorModifier_AlongStrokeLineStyleAlphaModifier_AlongStrokeLineStyleThicknessModifier_AlongStrokeLineStyleColorModifier_DistanceFromCameraLineStyleAlphaModifier_DistanceFromCameraLineStyleThicknessModifier_DistanceFromCameraLineStyleColorModifier_DistanceFromObjectLineStyleAlphaModifier_DistanceFromObjectLineStyleThicknessModifier_DistanceFromObjectLineStyleColorModifier_Curvature_3DLineStyleAlphaModifier_Curvature_3DLineStyleThicknessModifier_Curvature_3DLineStyleColorModifier_NoiseLineStyleAlphaModifier_NoiseLineStyleThicknessModifier_NoiseLineStyleColorModifier_CreaseAngleLineStyleAlphaModifier_CreaseAngleLineStyleThicknessModifier_CreaseAngleLineStyleColorModifier_TangentLineStyleAlphaModifier_TangentLineStyleThicknessModifier_TangentLineStyleColorModifier_MaterialLineStyleAlphaModifier_MaterialLineStyleThicknessModifier_MaterialLineStyleGeometryModifier_SamplingLineStyleGeometryModifier_BezierCurveLineStyleGeometryModifier_SinusDisplacementLineStyleGeometryModifier_SpatialNoiseLineStyleGeometryModifier_PerlinNoise1DLineStyleGeometryModifier_PerlinNoise2DLineStyleGeometryModifier_BackboneStretcherLineStyleGeometryModifier_TipRemoverLineStyleGeometryModifier_PolygonalizationLineStyleGeometryModifier_GuidingLinesLineStyleGeometryModifier_BlueprintLineStyleGeometryModifier_2DOffsetLineStyleGeometryModifier_2DTransformLineStyleGeometryModifier_SimplificationLineStyleThicknessModifier_CalligraphyLinkLinkDataMaskMaskParentMaskSplinePointUWMaskSplinePointMaskSplineMaskLayerShapeMaskLayerTexPaintSlotMaterialGPencilStyleMaterialLineArtMSelectMPolyMLoopMVertMEdgeMTFaceTFaceMColMFaceMeshRuntimeHandleMFloatPropertyMIntPropertyMStringPropertyMBoolPropertyMInt8PropertyMDeformWeightMVertSkinMLoopColMPropColMDispsGridPaintMaskFreestyleEdgeFreestyleFaceMLoopUVMRecastMetaElemBoundBoxMetaBallModifierDataMappingInfoModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataMaskModifierDataArrayModifierDataMirrorModifierDataEdgeSplitModifierDataBevelModifierDataDisplaceModifierDataUVProjectModifierDataDecimateModifierDataSmoothModifierDataCastModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataClothModifierDataClothClothHairDataClothSolverResultCollisionModifierDataBVHTreeSurfaceModifierData_RuntimeBVHTreeFromMeshSurfaceModifierDataBooleanModifierDataMDefInfluenceMDefCellMeshDeformModifierDataParticleSystemModifierDataParticleInstanceModifierDataExplodeModifierDataMultiresModifierDataFluidsimModifierDataFluidsimSettingsSmokeModifierDataShrinkwrapModifierDataSimpleDeformModifierDataShapeKeyModifierDataSolidifyModifierDataScrewModifierDataOceanModifierDataOceanOceanCacheWarpModifierDataWeightVGEditModifierDataWeightVGMixModifierDataWeightVGProximityModifierDataRemeshModifierDataSkinModifierDataTriangulateModifierDataLaplacianSmoothModifierDataCorrectiveSmoothDeltaCacheCorrectiveSmoothModifierDataUVWarpModifierDataMeshCacheModifierDataLaplacianDeformModifierDataWireframeModifierDataWeldModifierDataDataTransferModifierDataNormalEditModifierDataMeshSeqCacheModifierDataSDefBindSDefVertSurfaceDeformModifierDataWeightedNormalModifierDataNodesModifierSettingsNodesModifierDataBlockNodesModifierBakeFileNodesModifierPackedBakeNodesModifierBakeNodesModifierPanelNodesModifierDataNodesModifierRuntimeHandleMeshToVolumeModifierDataVolumeDisplaceModifierDataVolumeToMeshModifierDataGreasePencilModifierInfluenceDataGreasePencilOpacityModifierDataGreasePencilSubdivModifierDataGreasePencilColorModifierDataGreasePencilTintModifierDataGreasePencilSmoothModifierDataGreasePencilOffsetModifierDataGreasePencilNoiseModifierDataGreasePencilMirrorModifierDataGreasePencilThickModifierDataGreasePencilLatticeModifierDataGreasePencilDashModifierSegmentGreasePencilDashModifierDataGreasePencilMultiModifierDataGreasePencilLengthModifierDataGreasePencilWeightAngleModifierDataGreasePencilArrayModifierDataGreasePencilWeightProximityModifierDataGreasePencilHookModifierDataGreasePencilLineartModifierDataGreasePencilArmatureModifierDataGreasePencilTimeModifierSegmentGreasePencilTimeModifierDataGreasePencilEnvelopeModifierDataGreasePencilOutlineModifierDataGreasePencilShrinkwrapModifierDataGreasePencilBuildModifierDataGreasePencilSimplifyModifierDataGreasePencilTextureModifierDataMovieClipProxyMovieClip_RuntimeGPUTextureMovieClip_RuntimeMovieClipCacheMovieTrackingMovieClipScopesMovieTrackingMarkerMovieTrackingTrackbActionModifierbActionStripbNodeTreeInterfaceItembNodeTreeInterfaceSocketbNodeTreeInterfacePanelbNodeTreeInterfacebNodeTreeInterfaceRuntimeHandlebNodeStackbNodeSocketbNodeSocketTypeHandlebNodeLinkbNodeSocketRuntimeHandlebNodePanelStatebNodebNodeTypeHandlebNodeRuntimeHandlebNodeInstanceKeybNestedNodePathbNestedNodeRefbNodeTreeTypeHandleNodeInstanceHashHandleGeometryNodeAssetTraitsbNodeTreeRuntimeHandlebNodeSocketValueIntbNodeSocketValueFloatbNodeSocketValueBooleanbNodeSocketValueVectorbNodeSocketValueRotationbNodeSocketValueRGBAbNodeSocketValueStringbNodeSocketValueObjectbNodeSocketValueImagebNodeSocketValueCollectionbNodeSocketValueTexturebNodeSocketValueMaterialbNodeSocketValueMenuRuntimeNodeEnumItemsHandleNodeFrameNodeRerouteNodeImageAnimColorCorrectionDataNodeColorCorrectionNodeBokehImageNodeBoxMaskNodeEllipseMaskNodeImageLayerNodeBlurDataNodeDBlurDataNodeBilateralBlurDataNodeKuwaharaDataNodeAntiAliasingDataNodeHueSatNodeImageFileImageFormatDataNodeImageMultiFileNodeImageMultiFileSocketNodeChromaNodeTwoXYsNodeTwoFloatsNodeVertexColNodeCMPCombSepColorNodeDefocusNodeScriptDictNodeGlareNodeTonemapNodeLensDistNodeColorBalanceNodeColorspillNodeConvertColorSpaceNodeDilateErodeNodeMaskNodeSetAlphaNodeTexBaseTexMappingColorMappingNodeTexSkyNodeTexImageNodeTexCheckerNodeTexBrickNodeTexEnvironmentNodeTexGaborNodeTexGradientNodeTexNoiseNodeTexVoronoiNodeTexMusgraveNodeTexWaveNodeTexMagicNodeShaderAttributeNodeShaderVectTransformNodeShaderTexPointDensityPointDensityNodeShaderPrincipledNodeShaderHairPrincipledTexNodeOutputNodeKeyingScreenDataNodeKeyingDataNodeTrackPosDataNodeTranslateDataNodePlaneTrackDeformDataNodeShaderScriptNodeShaderTangentNodeShaderNormalMapNodeShaderUVMapNodeShaderVertexColorNodeShaderTexIESNodeShaderOutputAOVNodeSunBeamsCryptomatteEntryCryptomatteLayerNodeCryptomatte_RuntimeNodeCryptomatteNodeDenoiseNodeMapRangeNodeRandomValueNodeAccumulateFieldNodeInputBoolNodeInputIntNodeInputRotationNodeInputVectorNodeInputColorNodeInputStringNodeGeometryExtrudeMeshNodeGeometryObjectInfoNodeGeometryPointsToVolumeNodeGeometryCollectionInfoNodeGeometryProximityNodeGeometryVolumeToMeshNodeGeometryMeshToVolumeNodeGeometrySubdivisionSurfaceNodeGeometryMeshCircleNodeGeometryMeshCylinderNodeGeometryMeshConeNodeGeometryMergeByDistanceNodeGeometryMeshLineNodeSwitchNodeEnumItemNodeEnumDefinitionNodeMenuSwitchNodeGeometryCurveSplineTypeNodeGeometrySetCurveHandlePositionsNodeGeometryCurveSetHandlesNodeGeometryCurveSelectHandlesNodeGeometryCurvePrimitiveArcNodeGeometryCurvePrimitiveLineNodeGeometryCurvePrimitiveBezierSegmentNodeGeometryCurvePrimitiveCircleNodeGeometryCurvePrimitiveQuadNodeGeometryCurveResampleNodeGeometryCurveFilletNodeGeometryCurveTrimNodeGeometryCurveToPointsNodeGeometryCurveSampleNodeGeometryTransferAttributeNodeGeometrySampleIndexNodeGeometryRaycastNodeGeometryCurveFillNodeGeometryMeshToPointsNodeGeometryAttributeCaptureItemNodeGeometryAttributeCaptureNodeGeometryStoreNamedAttributeNodeGeometryInputNamedAttributeNodeGeometryStringToCurvesNodeGeometryDeleteGeometryNodeGeometryDuplicateElementsNodeGeometryMergeLayersNodeGeometrySeparateGeometryNodeGeometryImageTextureNodeGeometryViewerNodeGeometryUVUnwrapNodeSimulationItemNodeGeometrySimulationInputNodeGeometrySimulationOutputNodeRepeatItemNodeGeometryRepeatInputNodeGeometryRepeatOutputNodeGeometryForeachGeometryElementInputNodeForeachGeometryElementInputItemNodeForeachGeometryElementMainItemNodeForeachGeometryElementGenerationItemNodeForeachGeometryElementInputItemsNodeForeachGeometryElementMainItemsNodeForeachGeometryElementGenerationItemsNodeGeometryForeachGeometryElementOutputIndexSwitchItemNodeIndexSwitchNodeGeometryDistributePointsInVolumeNodeFunctionCompareNodeCombSepColorNodeShaderMixNodeGeometryLinearGizmoNodeGeometryDialGizmoNodeGeometryTransformGizmoNodeGeometryBakeItemNodeGeometryBakeFluidVertexVelocityPartDeflectSBVertexSoftBody_SharedSoftBodyBodyPointBodySpringSBScratchbDeformGroupbFaceMapObjectLineArtLightLinkingRuntimeLightLinkingSculptSessionRigidBodyObRigidBodyConObjectRuntimeHandleObHookTreeStoreElemTreeStoreHairKeyParticleKeyBoidParticleParticleSpringChildParticleParticleTargetParticleDupliWeightParticleDataSPHFluidSettingsParticleSettingsPTCacheEditParticleCacheKeyKDTree_3dParticleDrawDataPTCacheExtraPTCacheMemPointCloudPointCloudRuntimeHandleRigidBodyWorld_SharedRigidBodyWorldRigidBodyOb_SharedFFMpegCodecDataAudioDataSceneRenderLayerSceneRenderViewBakeDataRenderDataTimeMarkerPaint_RuntimeNamedBrushAssetReferenceToolSystemBrushBindingsPaintImagePaintSettingsPaintModeSettingsParticleBrushDataParticleEditSettingsSculptCurvesSculptUvSculptGpPaintGpVertexPaintGpSculptPaintGpWeightPaintVPaintGP_Sculpt_GuideGP_Sculpt_SettingsGP_Interpolate_SettingsUnifiedPaintSettingsColorSpaceCurvePaintSettingsMeshStatVisSequencerToolSettingsToolSettingsUnitSettingsPhysicsSettingsDisplaySafeAreasSceneDisplayView3DShadingRaytraceEEVEESceneEEVEESceneGpencilSceneHydraTransformOrientationSlotView3DCursorEditingSceneRuntimeHandleARegionwmTimerwmTooltipStateScrVertvec2sScrEdgeScrAreaMapLayoutPanelStatePanelPanelTypeuiLayoutPanel_RuntimePanelCategoryStackuiListuiListTypeuiListDynTransformOrientationuiPreviewScrGlobalAreaDataScrArea_RuntimebToolRefScrArearctiSpaceTypeARegion_RuntimeARegionTypewmGizmoMapwmDrawBufferAssetShelfSettingsAssetShelfAssetShelfTypeRegionAssetShelfFileHandlerFileHandlerTypeHandleStripAnimStripElemStripCropStripTransformStripColorBalanceStripProxyStripSeqRetimingHandleSequenceRuntimeSequencebSoundMetaStackSeqTimelineChannelSeqConnectionEditingRuntimeSequenceLookupMediaPresenceThumbnailCacheSeqCachePrefetchJobWipeVarsGlowVarsTransformVarsSolidColorVarsSpeedControlVarsGaussianBlurVarsTextVarsColorMixVarsSequenceModifierDataColorBalanceModifierDataCurvesModifierDataHueCorrectModifierDataBrightContrastModifierDataSequencerMaskModifierDataWhiteBalanceModifierDataSequencerTonemapModifierDataEQCurveMappingDataSoundEqualizerModifierDataShaderFxDataShaderFxData_RuntimeDRWShadingGroupBlurShaderFxDataColorizeShaderFxDataFlipShaderFxDataGlowShaderFxDataPixelShaderFxDataRimShaderFxDataShadowShaderFxDataSwirlShaderFxDataWaveShaderFxDataSpaceInfoSpaceButsSpaceProperties_RuntimeSpaceOopsSpaceOutliner_RuntimeSpaceGraph_RuntimeSpaceIpoSpaceNlaSequencerPreviewOverlaySequencerTimelineOverlaySequencerCacheOverlaySpaceSeqSpaceSeq_RuntimeMaskSpaceInfoFileSelectParamsFileAssetSelectParamsFileFolderHistoryFileFolderListsSpaceFileFileListwmOperatorFileLayoutSpaceFile_RuntimeSpaceImageOverlaySpaceImageSpaceTextSpaceText_RuntimeScriptSpaceScriptbNodeTreePathSpaceNodeOverlaySpaceNodeSpaceNode_RuntimeConsoleLineSpaceConsoleSpaceUserPrefSpaceClipSpaceTopBarSpaceStatusBarSpreadsheetColumnIDSpreadsheetColumnSpreadsheetInstanceIDSpaceSpreadsheetViewerPathSpaceSpreadsheet_RuntimeSpreadsheetRowFilterSpeakerTextLineCBDataMovieReconstructedCameraMovieTrackingCameraMovieTrackingPlaneMarkerMovieTrackingPlaneTrackMovieTrackingSettingsMovieTrackingStabilizationMovieTrackingReconstructionMovieTrackingObjectMovieTrackingStatsMovieTrackingDopesheetChannelMovieTrackingDopesheetCoverageSegmentMovieTrackingDopesheetuiFontStyleuiStyleuiWidgetColorsuiWidgetStateColorsuiPanelColorsThemeUIThemeAssetShelfThemeSpaceThemeCollectionColorThemeStripColorbThemebAddonbPathComparebUserMenubUserMenuItembUserMenuItem_OpbUserMenuItem_MenubUserMenuItem_PropbUserAssetLibrarybUserExtensionRepoSolidLightWalkNavigationUserDef_RuntimeUserDef_SpaceDataUserDef_FileSpaceDataUserDef_ExperimentalbUserScriptDirectorybUserAssetShelfSettingsUserDefvec2fvec2ivec3ivec3fvec4fmat4x4fVFontDataSmoothView2DStoreRegionView3DViewRenderSmoothView3DStoreView3DOverlayView3D_RuntimeView3DViewerPathElemIDViewerPathElemModifierViewerPathElemGroupNodeViewerPathElemSimulationZoneViewerPathElemRepeatZoneViewerPathElemForeachGeometryElementZoneViewerPathElemViewerNodeViewerPathElemVolumeDisplayVolumeRenderVolumeVolumeRuntimeHandleReportListstd_mutex_typewmXrDatawmXrRuntimeDataXrSessionSettingswmWindowManagerwmWindowwmNotifierwmKeyConfigUndoStackwmMsgBusWindowManagerRuntimeHandleWorkSpaceInstanceHookwmEvent_ConsecutiveDatawmEventwmIMEDatawmKeyMapItemPointerRNAwmKeyMapDiffItemwmKeyMapboolwmKeyConfigPrefwmOperatorTypebToolRef_RuntimeWorkSpaceLayoutwmOwnerIDWorkSpaceWorkSpaceRuntimeHandleWorkSpaceDataRelationXrComponentPathXrActionMapBindingXrUserPathXrActionMapItemXrActionMapTLEN @ P @08 D(0X d( `XXpxX(xxh0H hp xP8P@hH@h@0 Lp h( ` HH @P P(@@8p0XPPPPXPPhhX X$X8H(( x( `p` @PPX8( 8 P xh|8(hhhPXPPxP`Pp`PH00P  (H(P X p0(@XP@p P 0 `hpxpxxxxxxppxhpxppxhhppxxhhhhxphp ((  @ h`8xpp(xx(p0xhp   8 H888P8P080X8H`xxx0PH8@P8H0@HH0@08p @hD(  XP`x,@  `0@D0PHD@@@ XP(  P XX(X$88@( D p XP xh x8x(P (0 @  (0 PHxX 0x  T(@0X   xpxph(08(P8)X@h(xp(((x(H`(@Hx 0 (0xKhXX8 (P`9 @ x ((((((( 0x XXH(P hSTRC                     !"#$%&' (!)*+,-./012)3456789!:;<=> ?!@ A  B"C#DE!)FGHIJKLMN O$P Q% &R'ST"U)VWX"YZ([%Q$\]3)^_`ab*9+c!, +defghij!k-l.m.n A/ Hopqrstuvw0xyz{1 2K3|}~44430 A5E55"!#65U5,7555 8591Q:;5!3 /<= !> >>?!"@AYBCD#!)EF!G!HIIJAkE!GQKKK>L!"B" *M  CE*   N9M D??>OPPPO "! Q!"#!R$%&'!S  ()*TS+,  U-./0VW1!X234567Y85fg!Z 91:;<=!> ?@[[["ZAB!C\DE F]GC!^H!OOO>\IJ_K^L+MC!NOP1QhRS```TAUV*WJ"XYZ[\]^ _`a b!k`c daaaT!e"b bb9f g!1Phic ccjk"lmn!hiddd1PeAo*Apqrasat`uvwOx!yz{kfYe|9 }@~g65666U"!9e66gQh#ijYe|; 6k!ihQi ii"lll6mmminnn"# oLpqarsssttt!ut7>vt>wt7>xt#ytz{{{Y!|>3}~7 !      !"# $%!&'()*+,-}Y}./012)34567892!:;<=>?@ABCDEFGHIJKLMNOzPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CCY_Yd!Ye|^!!3 ~^! 7!3+Ye|!3L7QF      !"#$%&'()*+,-./012345a6789#:;<=>?@ABCFDEFkGHI7JFKJL"M!NOPQ;R)FYSTU#VW)X! YaZ[\]^Q_`!ab!cdefghijk !lmnWoWpqrstuv wxyz{|}~! ! "L! !7"L 7!!77!7 7d!!77!37!7!!37!75!7YZ  !AUVa7775 7!77!7!7!77!}~! }~!}~!7! 7!!77!!7_)*   $  )  !_K!_` MYe|!"7#7$7%L&'()*+,-./!0123456789:;<?=>?@ABCDEFGH%IJKLMNOPQRSTUVWXYZ[\] ^ _`!_`a bcmgd!nWeWf ghijklmn9 Ye|o!n'/pq7rs ^ 5!tuvwxy z{|}~     /F)"fgk3!*!*%-!ZFD!0  { FFF   7 ) ^ !"#$%&'Y()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Hhk7 "akFD_`2# _`3(!kQ!! _3!!3 N d!3   dQ     !Q   ! G  $   !7U   k  7 Q  --.a !"#$h%< Ye|!&'()l*+,- .'/~/Y0b123m4 Q #!"56"789!:;<=6>?3@A 6"78!@ 6"789!B@C"DEFGH6"7@!5IdcJ 6"78!KL@A 6"789!:L@MA 67N"7!OP@Q67N"R!STU78V@6"78@fgWe!XYZ[\7N]^_`a 67N"789!3@b 6"7!@cdefghijk!""lmn!" 6"7!@o!dcJ# 67N"78!@$67N"789@!pqrst% 6"78!:@e&6"789!uSTUvw@' 6"789!:@A(6x7Ny9)6"78!@z5{|}*67N"789@!:CA~+6"789!@, 6_"79!@7N- 6_"79!@.*6777F9Y/0677"79!@1b26"79!3@3 !43 o5963 78! 982!:::!;;;<U h!=; 9 k7Uq 7>9<; U Y,?9@  !k7Ye|3<nk;!lm@A9 5!BBBCDDD"EEE([FFF"GHI IIHQJ KL~,Ye|ZMG!([)NJQO7  !PPP_KW W    +!*~COILYWl 3QQQECa!x "Ye|QL!RYe| !!"#$%&'()*+,-.L&lm#S/ ^T TT7NT01!2345aUUUV6 8 7W WWFK !895X:YYY"!ZZZ"[""!;\<T=9W>?@ABCD]EFGXHIYJKZLTM;N^(Ye|!OPQRSTUVWXYZ[\]^_`abcdef)_gLh`#Ye|!ijklmnopqrstuvwxyz{|}~Fajib5c3d!cccabefghij iefgh kv*jlll"8ml6nl6ol6pl6ql6rl6sl67tl67u l67vl6wl6xl6yl6 $zl6 ${l6 $|l6k}l6k~l6kl6l6l6l6l6l6l6l6l6$4l6$^l6$l6$l6l6l6l65l6l6YZ_` l6l6l6-Ye|!kYZ_g   Ye|!9 !_ !d!,"  8 ,! ~ ~~!ek !"#$%&.Ye|!'()*+,-./0Z1Y2e_gL)3456789:;<=> ?@7ABCD5Ye|L&'+EFGHIJKLlmnMNOP)Q!RSTUVWXpY/ZP[\]^_`abcdef9 ghi!jkelmno mpqr!s!(tuv!!wxyz!{G!|!c!z3}wx~!h(m!_`%Ye|L'!/)3# !3"5 967 63  67N"3!3 67N"! 6Ye!67! 67777eR 6!7 666( 673!Y 67k 6!6!] 67N2! 677!07 6xk7Ny67N!pqrts" 6 66,6Q 67NFK(!,567N!+        6     !3 67 !       6 !     6     36 6 677   ! " 3 67#  :$ % ! 66& ' 5( ) * + , - . !/ 0 1 2  673 4 5 6 != "67 8 9 : ; < = 6> ? @ A B (C D E F G H I J K L !M N 2O 677P 7Q R S t3T !pY d6U pV W X Y Z [ \ ] 7^ _ ` a 6b c d e f Z [ \ ] 7^ _ ` a !6W g h 7i Z [ \ ] 7^ _ ` a j k p*6l  6^m 6!n o 6p !q 36!r s t 6u v !] w x u ^]!y z  6{ | u ^]!y z } 6~  ! %7 7  6!\  : ,I  6  ] ! 65(  !/ 6!367             67!3 # 6       6!@7    36!L 9(     Y!       Y! 6_  ! 3  k  9  67N n   Hk d 67  3   67No ! n    ! "@ 6 !Q  6  6 QK  6 !Q :h7N A6 !: 6 !u   vw 6 !:;<=6>?3 6 7N!6 !B 6 7N3"mn!6   Jo 6 !z5{|}N A6 !cdefghijk  6 !_ A 6 7NR!STUV6 !_7N 6 7N!pqrs ,6777F9 Y / 9!6 7N""    # 6 !5I"  J$6 3%6 7N!OPQ&6 7731b'6 fgWe!XYZ[\7N]^_`a( 6 :e) 6 @  *    +   , Ye|Z C- . * !%f,Q/    0     1 0  2 22!    7333!  LAU7NYZ[\  ]^  J4 ,5 4  !     L64 !4   76   899         ::: " 8!  ; k         < 9 =9> !? ??  " !k@   ! " # $ ,9 8?U% & 0' ( h) >* A9B<<<?+ ?, :- :. !/ C0 1 DYC2 _Ye|SE k 3 4 5 6 !7 8 Y9 W:   7; F< B= > D? G@ )H9I   J   KL A   MB NC O D P7E Q~E RFE SE TE U8VG!W!F XG YH I J 3ZK L M N [ZO ZP ZQ ZR S T \U V W X ]_`0^_`0_Y `Z [ C\ ] ^ _ ` a b c d e af g h i 3bj k 3c2l m n o p dq r es t fZgu hv gw x iy z x { g| j } ~  >     k        l_`m"n o N C   ^p qN2     r 5l ( s   3t           u      v wx  yz{ | }z             ,~z      z z   5 z    z ,z "z   3z     z   z    z 6    z  3 9         "                   ! 3 !      "   ""    Q   G=                        ,           G      3        7 9                      3         3  3                 ! "        (     # $ % & ' ( ' !   !    ) 4* + , - . / 0 1 2 3 4 5 6 7 8 9 k: ; < = > ? @ A LB C D E F G H I !J K L M +N O P Q R S T U V 2!W X Y Z [ \ ] ^ _ ` a #b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ k7  FD  !36b                                   F )    "!"!  &,   F F Q7kYe|    7U7 7 7 7 LAA :  /,   J   ' /    u    q1!   S         e ki        F       )D[  k 97Uqr" tsH ! 9 (2 zc(Q3 c)   ( 7 z$ #         #   7 !( 7R!e*      (     2  !             ! Ye|| )F !        k! " # $ % & ' (  ) * [ \ + , - . / 0 1 2 3 4 5 Z6 7 8 9 : ; < = > ? @ A B C D E F G 2H I J K L M 7N O QP Q R S T U w u v V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p F q F7r 7s L t u v w Ox Y y z { | } 7~        7  7U"   !    H    k           ^  b !  !      be-*" {     Ye|!bKn'/ 9 ^ )FD7 F      !Y !  3=         %7 7  !                                                   !3k"D]E1  >? C@   "  kN! g 6 !      N     !gu 0 !         7 "Xgu A     ! !* " # $ 2% & ' (   ) * + , - . / W0 1 a2 3 4 5 6 7  8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R !S T U V W X Y Z [ \ ] ^ _ ###"!7$` 93%%%ra &rb c 'l ra d re &f g h i j k l m k$Q('n !o p q r ~s ~t ~u v )w ,~x y *2z R!3+!{ | } *~   #  #  7N7 ,'n  l      mnopq 7 -'n . 23 i,/'n !0'n !1'n !2'n !3'n ! 4 k ? 7 5  !   4 6 7 2CL!                  8 9 !        : a         ;     <b3 3 , . / 0 1 2 -         5 6 ( ) +                  79:; !"#$%= &'(!)*+,>!-#?./01@ 23456789A:B;<=>!?C4!@ABCD#EFGHIJKLMNOPQRSTUVWXYZ[\] ^_Z  `abcdefghijBklDmEnNFo!:Ye|7]pq T= Gr1sk!Z _gHt<u ?v"wxFy z { | } ~;= >   )F@CHDEI9 Y! JK L)MMMMN!QOOOMM0 !PQQQ!,RRRSTZ [ !8 UU9VVVkWWWX!LYZZZ"[[[)\!3]^___MMMM` !3a\]Qb`;RJ!JJJ``#!Z [ cdKe bQf ffqgggkhf igjklllCm nop       !q C =r rrFm  q n o p s !Nkt2KuDuu  C"!%Yt rL7u u! } g"#v$ %&'( )*+, Yp NJ-.s/ 0tQwww12u34xxx"e!yyyu5z{6|7}8 AH9: ";u<=>?@ABCWDES~FpG HzQIJKLMNOPQRSTUV WXYZ[\]  ^_`abcdefghijk!9=l: !"mnuop6pqr6s6s6tL 66u 6 5qL vws6x2 y #!"5z{|}~!CQ}:!Q}!Q }!CQ}!Q }!CQ}7N!$ 4%CQ}7N!Q}$ 4!QvYZ([ (L   {  IIIII,IIJ !  9IIJ!9!,IIJE!Q II!EJ!#!#!#IIJBC !i  9  d a!qpY,II KK9!#II~ BCi !II9 Y      II _gB3 !IIJ9!SBCi _ _g    _ 9%rII II !IIBCi /!e^ !IIII9"#II$%&'() *+!9,(!*-./0123Ye|v$456789:!;%# Y <#<=>?@A'BCD7N EFG HIJKLMNOPQRST K TUVWXYZ[\](El^l_`Qa!pb*  7N cd  efghijYklm7n<Ye|  tL K opqrkstuvwxyz{|}~!NN%5_gL~)Z,{ u!EFG 7| tL K !&  3a0!111"0!h  ! "1!~V !1^! "!^1 1 "dfg!.  1t< a*"    *   8#!"##7$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU7VWkX""YZ[\!]^_`abcdefghijklmnopqrstuvwxyz{|}~kv      a !"#$%&'()*+,-./0123456789:;<=>?@@w|!*"ABCDEFGHIJKLMNOPQRS@TUVWXY!Z[\] ^_` a bcd#"{ e!# "fghi!!jiklmnopq!rs! tu!N vwxyz{|}~3"WX!       !"#8$%&'()*+,-./0123Qp456789N_`_`_`_`_`_` :`}~W}~3;<=YZ([(>JW^Wl`?`@`ABCDEFGHIJ!KLMN3OPKQ-RSTUVWXYZ[\]^PKQ_`abcdefgKhijklmnopqrstuvwxG y z{<A |}~! !  !\<IId j77W]Os!!4K A:&Q 9   0       e  0 2 H8Ye|([a!'/  ^9!K9Y/ K9.  UP Z [ tr     ! N  !"""kL"#  $%&'(!)Y3#*$$$"+",% %%\-k./0!1&2&3 4'''kk567!*kL( 8 O#*9:;T!^ ^^k<)ZL)9***"+++, Y=>?@ABC-9q&... U E DE,F*G,H*I]'Ye|#JKLMNYOPQRST!UVXWXYLYZ)_g[ B ZA:[\7]^_`abc!///d0 00"efgh3ij111k222",lmn#opqrstuvwxy333"\zENDBhkl-5.1.7/data/soleil-diffabs.png0000664000175000017500000020031115144553662015576 0ustar00piccapiccaPNG  IHDR>aIDATx 79$WD+ iE+ kA) h. Q +  <%dyK gopqqppl]]: JM0c ppppqqqqppoolxK!T#@X زn opppqqqqqpponnlhX7%Bf n n opppqqqqppoonmlkjyL *\9m m n oppoooo ppponnlkjj] Y !-MUx`ZUxRsGd iṞm m n nnl%l'l'l'l(l(l(m%n"nlljjhQj8O*}*}!u)|*}b $   d l mml&l&l&l&l'l'l'l'l'l'l(l&ljjhgoE s=V*|*}#v)|*}o#o"oPq -$@j ll"l%l%l&l&l&l&l&l&l'l'l'l'l'l'k hhf]: wFb)|)| t)|)|t)|*|SuZ%  ,9qAl|FkxRhlXkpXntZkn_fatfOyjR`bcdaa8oMoLg?b;a:^<5  2If(|(|t(|(|!u)|)|%v(y'w-?"> 3J| Orfj ` Sxe#t%{"yV3R't;MoWrYp `m [f >eHcdb{ghi^<\Jh(|(|u(|(| u(|(|$w(|(|(8'7] 0D '=zMl'|'|t'|'|t(|(|#w(|(|!/ 6A8( +L :STymk _acA^X{%s^ Uy#{#{h q{#$$$$%%%%%%%%%%$% +pAcddbdi^%6z %Rs&|'|t'|'|t'|'|#w'|'| ) ,>ewyxKlt !.T byxx`B_5K 3G} 4JZkj ` UzLlLkRt\_deB_UyZC`Qu Sy Rw V|"{hh$2####$!.0d(_'>"$$$%!^Vacbccabhxe%z%{%{%{%{&{&{&{&|&{&{&|&{&{%y #v ):YxptyyyzekkjhgdaadfkB_3J1G-B-BJmPuPu Tz!{#u22""< d)-5555-7##&6,-`?`cchhd$y%{%{%{%{%{%{%{%{%{%{%{%{&{$w p -Jx jqyyyyhllmmmmnnnnk5L-B-B-B.BJmPuPu Tz!z&{..9"35555545]c $!##;?:..*X==8r11-Z-z񒒉EE@ #??++(Y-(GGCxxp}vunNKGURLWUO)(&^00,N1(.w_GHBqphdc\z렠󊊀ijbIJD|**'O'vɇ}ԕ颣jia'%! $  ?YhJk}OrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrNqEbs4KX)9C:P^*8A(4= W!"Eyz7 #""OBC=^_Wuٛ    GfvXTyQsOqOqOqOqOqOqOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrMpA^m2HT.ALWwFbr-榧vuul{lldLLF++(O "  "19|C`pYh1EQ-@K-@K-@KB^l9MX(4=(4=(4< C${|rԦvbaZpog}}sR<<7]]Vxឞ0C`oQuQtQuQtQtQtPtQtQtQtQtQvRwQvQuQtQtPtPtQtQtQtPsOrOrOrOrOrOrOsPsOsPsMp;Ud/CN-@K-@K-@K-@K-@K>Yg2DO(4=(4=%+ 禧|{red]|<<8h O33/q%4=mW}SxRvRuQtPtQtQuQuQuQuQtQtQtQtQuQtQtQuQuQtQuQuQuRwTyTzTzU{T{T{T|QxQxJl~-@K-@K-@K-@K-@K-@K-@K?Zi0AL(4=#-5!cc[{{r}CC>~*>:33/a!!G.  ([ZSCjAiԈSSSSSSSSSSzWu\pakhfmbt_y]\]^^^^C`pIhx^^^___[3GS_9P^)7@-?K-@K-@K-@K-@K-?J:=OP=XD)BG3C~yxxpff_YYSKKF9@POIR4PYZVTTTTTTTTTTTTTTTSSSzWu\pblgglPUlO_t]\]^^^X3GS_7MZ)7A-?K-@K-@K-@K7=NQ;XX4UL,HC'?K8F$#!t$$"MFE@Hoogהccefgfdca_\YVTTTTTTTTTTTTTTTSSSsR{Vn^^X5IU^7LY)8A-?K-@K5>MPK~nlfj//,_=<8 PPJecccccccccdfggfdba^[XUTTTTTTTTO~T3QNau^^X4GS^5JW*8A1=KN=X[7YP/LO.KO.KO.KL,HC'?WFQµȼʾǻNLG[662n43/**'\vvn⍍gccccccccccccccccccdgggeda`^ZPT3QB'=Nau^^W4HS^6JV-7B[8YP/MO.KO.KO.KO.KO.KK,GC'>[KT÷ĸ}yC@<Q>>9*)&s$WWQgccccccccccccccccccccccccccde{KwB'=B'=Ocw^^W4HT^5IV,6AM-IO.KO.KO.KO.KO.KO.KK+GC&>UFO{B?;;NNH"!b330n~v퍍iccccccccccccccccccccccccccccxHtB'=B'=Pfz^^W4HS^5IU32AN.JO.KO.KO.KO.KO.KO.KK+GC&>VHPzxqvB?; 3WWPO3ee^ČlccccccccccccccccccccccccccccwHtB'=B'=Pfz^^W~6KW^7BQK.IO.KO.KO.KO.KO.KO.KO.KK,GB'>XJRRPKqri|Ҕ衢zypB>; &_`X{8))'IlccccccccccccccccccccccccccccwHtB'=B'=P\r[\V|70ALAYJ1KO.KO.KO.KO.KO.KO.KO.KO.KJ+FB(>tplrqiGD?TTNAA<11.h--*[!!D--)KPNHA>:iiaƦv *<<7_pccccccccccccccccccccccccccccwHtB'>B'=qEnwJwK4NJ:SN.JO.KO.KO.KO.KO.KO.KO.KO.KO.KO.KK.FkddMJEOLGLKF@DC>741yzpԧyxp//+MccccccccccccccccccccccccccccwHtB'>B'>lBiQ1MJ+EO.KO.KO.KO.KO.KO.KO.KO.KO.KO.KN.JWCS}ytjibD@B'>P0MB'=J+FO.LO.KO.KO.KO.KO.KO.KO.KO.KP4Lkbe}IEADA=>;8@@;uWWP}|tgf_ec]xXWR 󧨛jib 6ccccccccccccccccccccccccccccwHtB'>B'>N.JB'>J+FO.LO.LO.KO.KO.KO.KO.KO/K\KWzdb\FC?QPMWVSTSPPOKuun||t|wwoED?`_X$ccccccccccccccccccccccccccccwHtB'>B'>M.IB'>J+GO.LO.LO.KO.KO.KO.KR9NuomzFB>IGCJIFUTPdd_ttmy||yw}}uqqj^^XGGB"VUNccccccccccccccccccccccccccccwHtB'>B'>L-HB'>J+GO.LO.LO.LO.KN/JdW^]ZTD@<|{r|y{bb\ 3KJEccccccccccccccccccccccccccccwHtB'>B'>L-HB'>J+GO.LO.LN.KXBS}yu|{|{tEA=D@<vwwo(CBA= bcccccccccccccccccccccccccccwHtB'>B'>L-HB'>J+GO.LS8Owwĸ}zVSMD@B'>L-HB'>K-G`NZķǻǻ÷wvnD@:vunǻµ=12.d/.+y"" =>>9jZZSssjݦbcccccccccccccccccccccccccccvHsC'>B'>L-GB(>sijµ~OLGD@C(>L.HB*>zzsttmed_mmgqpj~vjhbD@C(>N/Ji_bxy}|vjidSRNCA>LJFba\tska_YKGCFB>)'$^^YGFA uӮ}A22._rsj™te`_acccccccccccccccccccccccuGqC(>C(>YDT}a_Ya_X|||tee_SSM441r'~|f ⭮µz 2,OOI皚|{~nwhMeb<_zJwՏW`bccccccccccccccccuGqC(>F0Ayfd]~~ufe^ DD@ed^'⭭~}tP //+XqqhwwnCC>9 ($#O=%qliGD@ xxp㎎530-שּׁxzyq*NNH坝bb[--*b--*i|{t~m}WxZ``ccccuGq_UYrqj:73''%V}}tQ<着ef_ ,,)Vllc{zr}xxqIEAljc~ti|^vROJ741``ZUTO A÷ȼȼJ%JKE򍌃wMIEEA=mkdyxqD@<52/)('%&&#Qĸĸ7##!Nz򏏅|QNJFA=FA=ljcXUPD@<30-FFAqpi ,''$WŹ'DyXUPFA=FA=FA=if_~vEB>D@FB=FB=FB==;6ńz姨jhaD@:6 )773cig`DAFB=FB=FB=>:6 ' 7<<7fVVOwxn⢢_]V^[UzvPPKmlfHD?GB=GB=GB=C?:J''$DDD>q__Xu̕줤ZWQkibwunDD?zvunJEAGB=GB=GB=FA<u '..*OOOIff^~ٜJHC22/kTTNFFAdd\~MIDGB>GB>GB>GB=*'$6662]UUN)(%ZZSGB>GB>GB>GB>62. NNHGC>GB>GB>?:7 'KKEGC>GC>D?;EAAFB=r<=8cGC>*'$]^Vxў62/  ''$DEE@vef]wxn "~~"@IENDB`hkl-5.1.7/data/soleil-cristal-4c.yaml0000664000175000017500000000326015133711150016311 0ustar00piccapicca--- ! - FileName: soleil-cristal-4c.glb Objects: - Id: 0 Name: base Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 1 Name: delta Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 2 Name: gamma Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 3 Name: kappa Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 4 Name: komega Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 5 Name: kphi Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 6 Name: mu Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no ... hkl-5.1.7/data/soleil-diffabs.glb0000664000175000017500000676754015144553665015615 0ustar00piccapiccaglTF`JSON{"asset":{"generator":"Khronos glTF Blender I/O v4.3.47","version":"2.0"},"extensionsUsed":["KHR_materials_specular","KHR_materials_ior"],"scene":0,"scenes":[{"name":"Scene","nodes":[7]}],"nodes":[{"mesh":0,"name":"base"},{"mesh":1,"name":"delta"},{"children":[1],"mesh":2,"name":"gamma"},{"mesh":3,"name":"kphi"},{"children":[3],"mesh":4,"name":"kappa"},{"children":[4],"mesh":5,"name":"komega"},{"children":[5],"mesh":6,"name":"mu"},{"children":[0,2,6],"name":"Scene"}],"materials":[{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_005","pbrMetallicRoughness":{"baseColorFactor":[1,0.9767500162124634,0.8100000023841858,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_006","pbrMetallicRoughness":{"baseColorFactor":[0,0.45247000455856323,1,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_004","pbrMetallicRoughness":{"baseColorFactor":[0.9246299862861633,0.302619993686676,0.8457800149917603,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_003","pbrMetallicRoughness":{"baseColorFactor":[1,1,0.048020001500844955,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_002","pbrMetallicRoughness":{"baseColorFactor":[0,1,0,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material_001","pbrMetallicRoughness":{"baseColorFactor":[0.9818900227546692,0.32649001479148865,0,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}},{"extensions":{"KHR_materials_specular":{"specularColorFactor":[0.5,0.5,0.5]},"KHR_materials_ior":{"ior":1}},"name":"Material.001","pbrMetallicRoughness":{"baseColorFactor":[0.2773999869823456,0.6103799939155579,0.8419299721717834,1],"metallicFactor":0,"roughnessFactor":0.9440982937812805}}],"meshes":[{"name":"base_001.001","primitives":[{"attributes":{"POSITION":0,"NORMAL":1},"indices":2,"material":0}]},{"name":"delta_001.001","primitives":[{"attributes":{"POSITION":3,"NORMAL":4},"indices":5,"material":1}]},{"name":"gamma_001","primitives":[{"attributes":{"POSITION":6,"NORMAL":7},"indices":8,"material":2}]},{"name":"kphi_001.001","primitives":[{"attributes":{"POSITION":9,"NORMAL":10},"indices":11,"material":3}]},{"name":"kappa_001.001","primitives":[{"attributes":{"POSITION":12,"NORMAL":13},"indices":14,"material":4}]},{"name":"komega_001","primitives":[{"attributes":{"POSITION":15,"NORMAL":16},"indices":17,"material":5}]},{"name":"mu_001.001","primitives":[{"attributes":{"POSITION":18,"NORMAL":19},"indices":20,"material":6}]}],"accessors":[{"bufferView":0,"componentType":5126,"count":28419,"max":[1.059000015258789,1.9049999713897705,-0.13774996995925903],"min":[-1.720829963684082,-0.989000141620636,-1.4362499713897705],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":28419,"type":"VEC3"},{"bufferView":2,"componentType":5123,"count":28419,"type":"SCALAR"},{"bufferView":3,"componentType":5126,"count":11733,"max":[1.1081300973892212,-0.2839999198913574,0.32499995827674866],"min":[-0.679999828338623,-1.3259999752044678,-0.32499998807907104],"type":"VEC3"},{"bufferView":4,"componentType":5126,"count":11733,"type":"VEC3"},{"bufferView":5,"componentType":5123,"count":11733,"type":"SCALAR"},{"bufferView":6,"componentType":5126,"count":2202,"max":[0.4823000133037567,1.125,0.26461997628211975],"min":[-0.48228996992111206,-1.0935100317001343,-1.0470298528671265],"type":"VEC3"},{"bufferView":7,"componentType":5126,"count":2202,"type":"VEC3"},{"bufferView":8,"componentType":5123,"count":2202,"type":"SCALAR"},{"bufferView":9,"componentType":5126,"count":4599,"max":[0.14680002629756927,-0.2652699947357178,0.17708000540733337],"min":[-0.13997995853424072,-0.4989500045776367,-0.133310005068779],"type":"VEC3"},{"bufferView":10,"componentType":5126,"count":4599,"type":"VEC3"},{"bufferView":11,"componentType":5123,"count":4599,"type":"SCALAR"},{"bufferView":12,"componentType":5126,"count":2394,"max":[0.2900000214576721,-0.025270000100135803,0.21494999527931213],"min":[-0.28999996185302734,-0.4700300097465515,-0.5187699794769287],"type":"VEC3"},{"bufferView":13,"componentType":5126,"count":2394,"type":"VEC3"},{"bufferView":14,"componentType":5123,"count":2394,"type":"SCALAR"},{"bufferView":15,"componentType":5126,"count":3450,"max":[0.30000007152557373,-0.22628998756408691,0.4763399660587311],"min":[-0.29999998211860657,-0.6199999451637268,-0.4594399631023407],"type":"VEC3"},{"bufferView":16,"componentType":5126,"count":3450,"type":"VEC3"},{"bufferView":17,"componentType":5123,"count":3450,"type":"SCALAR"},{"bufferView":18,"componentType":5126,"count":17349,"max":[0.5,0.9000000357627869,0.2669300436973572],"min":[-0.5,-0.8750599026679993,-0.7809999585151672],"type":"VEC3"},{"bufferView":19,"componentType":5126,"count":17349,"type":"VEC3"},{"bufferView":20,"componentType":5123,"count":17349,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":341028,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":341028,"byteOffset":341028,"target":34962},{"buffer":0,"byteLength":56838,"byteOffset":682056,"target":34963},{"buffer":0,"byteLength":140796,"byteOffset":738896,"target":34962},{"buffer":0,"byteLength":140796,"byteOffset":879692,"target":34962},{"buffer":0,"byteLength":23466,"byteOffset":1020488,"target":34963},{"buffer":0,"byteLength":26424,"byteOffset":1043956,"target":34962},{"buffer":0,"byteLength":26424,"byteOffset":1070380,"target":34962},{"buffer":0,"byteLength":4404,"byteOffset":1096804,"target":34963},{"buffer":0,"byteLength":55188,"byteOffset":1101208,"target":34962},{"buffer":0,"byteLength":55188,"byteOffset":1156396,"target":34962},{"buffer":0,"byteLength":9198,"byteOffset":1211584,"target":34963},{"buffer":0,"byteLength":28728,"byteOffset":1220784,"target":34962},{"buffer":0,"byteLength":28728,"byteOffset":1249512,"target":34962},{"buffer":0,"byteLength":4788,"byteOffset":1278240,"target":34963},{"buffer":0,"byteLength":41400,"byteOffset":1283028,"target":34962},{"buffer":0,"byteLength":41400,"byteOffset":1324428,"target":34962},{"buffer":0,"byteLength":6900,"byteOffset":1365828,"target":34963},{"buffer":0,"byteLength":208188,"byteOffset":1372728,"target":34962},{"buffer":0,"byteLength":208188,"byteOffset":1580916,"target":34962},{"buffer":0,"byteLength":34698,"byteOffset":1789104,"target":34963}],"buffers":[{"byteLength":1823804}]} <BINC`?㥏fKO?㥏z?㥏y༾KO?㥏?㥏U?㥏y༾KO?$U?$?$fKO?$C`?$z?$y༾KO?$?$y༾KO?㥏y༾KO?㥏?$?㥏?㥏?$U?㥏U?㥏?$U?$fKO?㥏C`?㥏fKO?$fKO?$C`?㥏C`?$C`?$C`?㥏z?$z?$C`?㥏z?㥏z{?㥏U{?㥏U{?$U{?$z{?$z{?㥏z?㥏z{?㥏z{?$z{?$z?$z?㥏*)?™&*)?$&U?$*)?™&U?$U?™*)?1*)?™U?™U?™U?1*)?1*)?1U?1&U?㥏&U?㥏&*)?㥏*)?1&*)?㥏&U?㥏fKO?㥏fKO?㥏͡*)?㥏&*)?㥏U?™&U?$fKO?$U?1fKO?㥏&U?㥏fKO?㥏U?1U?™fKO?㥏U?™fKO?$͡*)?㥏;lg>?㥏;lg>?$;lg>?$͡*)?$͡*)?㥏*)?1&*)?㥏͡*)?㥏*)?™͡*)?$&*)?$*)?1͡*)?㥏͡*)?$*)?1͡*)?$*)?™;lg>?㥏!Zg>?㥏!Zg>?$!Zg>?$;lg>?$;lg>?㥏!Zg>?㥏 ףݫ?㥏 ףݫ?$ ףݫ?$!Zg>?$!Zg>?㥏 ףݫ?㥏 ףU?㥏 ףU?$ ףU?$ ףݫ?$ ףݫ?㥏y༾KO?㥏y༾KO?$ ףU?$ ףU?$ ףU?㥏y༾KO?㥏U?㥏U?$U{?$U{?$U{?㥏U?㥏y༾KO?$ ףݫ?$ ףU?$!Zg>?$ ףݫ?$y༾KO?$͡*)?$;lg>?$!Zg>?$͡*)?$!Zg>?$y༾KO?$&*)?$͡*)?$fKO?$fKO?$&U?$&*)?$z{?$U{?$U?$z?$z{?$U?$fKO?$z?$U?$U?$y༾KO?$fKO?$fKO?$y༾KO?$͡*)?$͡*)?㥏!Zg>?㥏;lg>?㥏z?㥏U?㥏U{?㥏U{?㥏z{?㥏z?㥏fKO?㥏y༾KO?㥏U?㥏U?㥏z?㥏fKO?㥏͡*)?㥏fKO?㥏y༾KO?㥏 ףݫ?㥏y༾KO?㥏 ףU?㥏!Zg>?㥏͡*)?㥏y༾KO?㥏!Zg>?㥏y༾KO?㥏 ףݫ?㥏@ >A`>A`ef?A`ef?A`@ ef?A`@ >A`Z>A`Q>A`Qdf?A`Qdf?A`Zef?A`Z>A`@ >A`>t>A`@ >A`@ >І>tZef?A`Qdf?A`Zef?tZef?tQdf?A`Qdf?І?A`?A`?І?І?І?A`?A`?tA`?tA`?tA`?A`?A`?tA`?tt?tt?tt?tA`?tA`?tt?t=t?t=t?t=t?tt?tt?t=A`?t=A`?t=t?t=t?t=t?t=A`?t=A`?>A`?>A`?>A`?t=A`?t=A`?>A`?>І?>І?>І?>A`?>A`?І?І?>І?>І?>І?І?A`?tA`?tt?A`?tt?І?t=A`?>A`?t=t?>A`?>І?t=t?tt?t=t?>І?>І?І?tt?t=A`?t=t?>A`?A`?tt?tA`?A`?І?tt?tt?І?>І?>І?t=t?tt?>A`?t=t?>І@ >A`@ ef?A`@ e?І@ e?І@ >І@ >A`>A`>te?te?tef?A`>A`Z>A`Zef?A`Zef?tZef?tZ>tZ>A`>tZ>tZef?tZef?te?t>tQ>A`Q>ІQdf?ІQdf?ІQdf?A`Q>A`Z>A`Z>tQ>A`@ >І@ e?ІQdf?ІQdf?ІQ>І@ >І@ ef?A`ef?A`e?t@ ef?A`e?t@ e?ІZef?tQdf?І@ e?І@ e?Іe?tZef?tQ>A`Z>tQ>І@ >ІQ>ІZ>tZ>t>t@ >І: gfІQhfІZgftZgftgft: gfІQhfA`ZgftQhfІZtQІ: І: ІtZt: A`t: І: A`A`t: gfІ: ІQІQІQhfІ: gfІZgfA`ZgftQhfA`QhfA`QhfІQІQІQA`QhfA`gftZgftZtZttgftZgfA`ZA`ZtZtZgftZgfA`gfA`gftttA`gfA`: gfA`: A`: І: І: gfІ: gfA`ZtQA`QІZA`QA`Zt: gfA`: gfІgft: gfA`gftgfA`ZgfA`QhfA`QA`QA`ZA`ZgfA`: gfA`gfA`A`A`: A`: gfA`D?EeAEeA1eA1D?1D?Eep??1ep??E•>?E•>?E•>?1ep??1`xN1D?1eA1eA1>0HP1`xN1ep??1•>?1`GKM?1`GKM?1B0GO?1ep??1`xNE`xN1>0HP1>0HP1>0HPE`xNEB0GO?1`GKM?1`GKM?E`GKM?EB0GO?EB0GO?1`xNE>0HPEeAEeAED?E`xNEep??EB0GO?E`GKM?E`GKM?E•>?Eep??EeAE>0HPE>0HP1>0HP1eA1eAEB0GO?1B0GO?Eep??Eep??Eep??1B0GO?1D?ED?1`xN1`xN1`xNED?E`GKM?1•>?1•>?E•>?E`GKM?E`GKM?11Kț1Kț1Y1Y1Y1Kț‹?Y‹?Kț?Kț?Kț?Y‹?Y1Kț1w `F Kț1w `F Y1w `F Y1Y1Kț3w ?Y3w ?Kț‹?Kț‹?Kț‹?Y3w ?Y1w `F Kț1w ) Kț1w ) Y1w ) Y1w `F Y1w `F Kț3w O?Y3w O?Kț3w ?Kț3w ?Kț3w ?Y3w O?Y ) Kț `F Kț `F Y `F Y ) Y ) Kț ?Y ?Kț O?Kț O?Kț O?Y ?Yu , Kț , Kț , Y , Yu , Yu , Kț l ?Y l ?Kțu l ?Kțu l ?Kțu l ?Y l ?Y `F Kț{~1Kț{~1Y{~1Y `F Y `F Kț}~?Y}~?Kț ?Kț ?Kț ?Y}~?Ys|KțsTKțsTYsTYs|Ys|Kțs'?Ys'?Kțs O?Kțs O?Kțs O?Ys'?YR|YR|Y , Y , Y , YR|Y l ?YT O?YT O?YT O?Y l ?Y l ?Y1w ) Y1w ) Y1w `F Y1w `F Y1w `F Y1w ) Y3w ?Y3w O?Y3w O?Y3w O?Y3w ?Y3w ?Y1w `F Y1w `F YRTYRTYRTY1w `F YT'?Y3w ?Y3w ?Y3w ?YT'?YT'?Y1w `F YRTY1Y‹?YT'?Y3w ?Y1w `F Y1w `F Y1Y1Y1Y1w `F Y‹?Y3w ?Y3w ?Y3w ?Y‹?Y‹?Y1Y1YRTYRTYRTY1YT'?Y‹?Y‹?Y‹?YT'?YT'?YRTYRTY1w `F Y1w `F Y1w `F YRTY3w ?YT'?YT'?YT'?Y3w ?Y3w ?Y1YRTY1Y?YT'?Y‹?Y1Y1Y1Y1Y1Y1Y?Y‹?Y‹?Y‹?Y?Y?Y1Y1YRTYRTYRTY1YT'?Y?Y?Y?YT'?YT'?YRTYRTY1Y1Y1YRTY‹?YT'?YT'?YT'?Y‹?Y‹?Y{~1YD 1Y `F Y ?YF ?Y}~?Y{~1Y{~1Y `F Y `F Y `F Y{~1Y ?Y}~?Y}~?Y}~?Y ?Y ?Y `F Y `F YD 1YD 1YD 1Y `F YF ?Y ?Y ?Y ?YF ?YF ?YD 1YD 1Y{~1Y{~1Y{~1YD 1Y}~?YF ?YF ?YF ?Y}~?Y}~?Y `F YD 1YJ; YL@ ?YF ?Y ?Y `F Y `F YJ; YL@ ?Y ?Y ?YD 1YD 1Y `F Y `F Y `F YD 1Y ?YF ?YF ?YF ?Y ?Y ?Y `F YJ; Y ) Y O?YL@ ?Y ?Y `F Y `F Y ) Y ) Y ) Y `F Y O?Y ?Y ?Y ?Y O?Y O?Y ) Y ) YJ; YL@ ?Y O?Y O?YJ; Y `F Y `F Y ?Y ?YL@ ?Y1w ) KțY; Kț1Kț‹?KțY@ ?Kț3w O?Kț1w ) Kț1w `F Kț1Kț‹?Kț3w ?Kț3w O?Kțs|Kțu , KțJ; KțL@ ?Kțu l ?Kțs O?Kțs|KțJ; KțsTKțs'?KțL@ ?Kțs O?KțD 1Kț{~1Kț ) Kț O?Kț}~?KțF ?Kț{~1Kț `F Kț ) Kț O?Kț ?Kț}~?KțsTKțJ; KțD 1KțF ?KțL@ ?Kțs'?KțJ; Kț ) KțD 1KțF ?Kț O?KțL@ ?Kț1KțY; KțRTKțT'?KțY@ ?Kț‹?Kț1KțRTKț1Kț?KțT'?Kț‹?KțR|KțRTKțY; KțY@ ?KțT'?KțT O?KțR|KțY; Kț , Kț l ?KțY@ ?KțT O?KțsTKțD 1KțD 1YD 1YsTYsTKțF ?YF ?Kțs'?Kțs'?Kțs'?YF ?YD 1Kț{~1Kț{~1Y{~1YD 1YD 1Kț}~?Y}~?KțF ?KțF ?KțF ?Y}~?Y1KțRTKțRTYRTY1Y1KțT'?YT'?Kț?Kț?Kț?YT'?YR|KțR|YRTYRTYRTKțR|KțT'?YT O?YT O?KțT O?KțT'?KțT'?Ys|Kțs|YR|YR|YR|Kțs|KțT O?Ys O?Ys O?Kțs O?KțT O?KțT O?YJ; Kțu , Kțu , Yu , YJ; YJ; Kțu l ?Yu l ?KțL@ ?KțL@ ?KțL@ ?Yu l ?YJ; KțJ; Y ) Y ) Y ) KțJ; Kț O?YL@ ?YL@ ?KțL@ ?Kț O?Kț O?Y1w ) Kț1w ) YY; YY; YY; Kț1w ) KțY@ ?Y3w O?Y3w O?Kț3w O?KțY@ ?KțY@ ?Y , KțY; KțY; YY; Y , Y , KțY@ ?YY@ ?Kț l ?Kț l ?Kț l ?YY@ ?YY; Y1w `F YRTYT'?Y3w ?YY@ ?YY; YRTYR|YT O?YT'?YY@ ?YY; YR|Y , Y l ?YT O?YY@ ?Yu , Ys|YJ; YL@ ?Ys O?Yu l ?YJ; Ys|YsTYs'?Ys O?YL@ ?YJ; YsTYD 1YF ?Ys'?YL@ ?Yu , Y , YR|YT O?Y l ?Yu l ?Yu , YR|Ys|Ys O?YT O?Yu l ?Ys|KțR|Kț , Kț l ?KțT O?Kțs O?Kțs|Kț , Kțu , Kțu l ?Kț l ?Kțs O?KțY; Y1w ) Y1w `F Y3w ?Y3w O?YY@ ?Y|M; Y) Y`F Y?YO?YM@ ?Yl|Kț´, Kț, Kțl ?Kț´l ?Kțr O?Kțl|Kț<Ƽ|Kț´, Kț´l ?KțBƼ O?Kțr O?Kț, Y<Ƽ|Yl|Yr O?YBƼ O?Yl ?Y, Y´, Y<Ƽ|YBƼ O?Y´l ?Yl ?Y+; YlTY 1Y&?Yr'?Y1@ ?Y+; Yl|YlTYr'?Yr O?Y1@ ?Y, Yl|Y+; Y1@ ?Yr O?Yl ?Y|M; Y<Ƽ|Y´, Y´l ?YBƼ O?YM@ ?Y|M; Y<ƼTY<Ƽ|YBƼ O?YBƼ'?YM@ ?Y|M; Y`F Y<ƼTYBƼ'?Y?YM@ ?Y´, Kț|M; Kț|M; Y|M; Y´, Y´, KțM@ ?YM@ ?Kț´l ?Kț´l ?Kț´l ?YM@ ?Y) Kț) Y|M; Y|M; Y|M; Kț) KțM@ ?YO?YO?KțO?KțM@ ?KțM@ ?Y+; Kț+; Y) Y) Y) Kț+; KțO?Y1@ ?Y1@ ?Kț1@ ?KțO?KțO?Y+; Kț, Kț, Y, Y+; Y+; Kțl ?Yl ?Kț1@ ?Kț1@ ?Kț1@ ?Yl ?Yl|Kțl|Y<Ƽ|Y<Ƽ|Y<Ƽ|Kțl|KțBƼ O?Yr O?Yr O?Kțr O?KțBƼ O?KțBƼ O?Y<Ƽ|Kț<Ƽ|Y<ƼTY<ƼTY<ƼTKț<Ƽ|KțBƼ'?YBƼ O?YBƼ O?KțBƼ O?KțBƼ'?KțBƼ'?Y1Kț<ƼTKț<ƼTY<ƼTY1Y1KțBƼ'?YBƼ'?Kț?Kț?Kț?YBƼ'?Y 1Kț1Kț1Y1Y 1Y 1Kț?Y?Kț&?Kț&?Kț&?Y?YlTKț 1Kț 1Y 1YlTYlTKț&?Y&?Kțr'?Kțr'?Kțr'?Y&?Y<Ƽ|Kț|M; Kț´, Kț´l ?KțM@ ?KțBƼ O?Kț<Ƽ|Kț<ƼTKț|M; KțM@ ?KțBƼ'?KțBƼ O?Kț1Kț<ƼTKț1Kț?KțBƼ'?Kț?Kț1Kț|M; Kț<ƼTKțBƼ'?KțM@ ?Kț?Kț+; Kț) Kț 1Kț&?KțO?Kț1@ ?KțlTKț+; Kț 1Kț&?Kț1@ ?Kțr'?Kț1Kț`F Kț) KțO?Kț?Kț?Kț 1Kț1Kț) KțO?Kț?Kț&?Kțl|Kț+; KțlTKțr'?Kț1@ ?Kțr O?Kțl|Kț, Kț+; Kț1@ ?Kțl ?Kțr O?Kț) Kț`F Kț1Kț?Kț?KțO?Kț) Kț|M; Kț1Kț?KțM@ ?KțO?Kț+; Y`F Y`F Y?Y?Y1@ ?Y) Y) Y+; Y1@ ?YO?YO?Y`F Y`F Y) Y) Y) Y`F YO?Y?Y?Y?YO?YO?Y`F Y+; Y) YO?Y1@ ?Y?Y 1Y 1Y`F Y`F Y`F Y 1Y?Y&?Y&?Y&?Y?Y?Y`F Y`F Y+; Y1@ ?Y?Y?Y`F Y 1Y+; Y1@ ?Y&?Y?Y 1Y 1Y1Y1Y1Y 1Y?Y&?Y&?Y&?Y?Y?Y`F Y`F Y 1Y 1Y 1Y`F Y&?Y?Y?Y?Y&?Y&?Y1Y1Y`F Y`F Y`F Y1Y?Y?Y?Y?Y?Y?Y1Y 1Y`F Y?Y&?Y?Y<ƼTY<ƼTY1Y1Y1Y<ƼTY?YBƼ'?YBƼ'?YBƼ'?Y?Y?Y1Y1Y<ƼTY<ƼTY<ƼTY1YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y1Y1Y1Y1Y1Y1Y?Y?Y?Y?Y?Y?Y1Y<ƼTY1Y?YBƼ'?Y?Y<ƼTY<ƼTY`F Y`F Y`F Y<ƼTY?YBƼ'?YBƼ'?YBƼ'?Y?Y?Y1Y1Y<ƼTY<ƼTY<ƼTY1YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y`F Y`F Y1Y1Y1Y`F Y?Y?Y?Y?Y?Y?Y`F Y<ƼTY1Y?YBƼ'?Y?Y`F Y`F Y<ƼTY<ƼTY<ƼTY`F YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y) Y) Y`F Y`F Y`F Y) Y?YO?YO?YO?Y?Y?Y<Ƽ|Y<Ƽ|Y´, Y´, Y´, Y<Ƽ|Y´l ?YBƼ O?YBƼ O?YBƼ O?Y´l ?Y´l ?Yl|KțlTKțlTYlTYl|Yl|Kțr'?Yr'?Kțr O?Kțr O?Kțr O?Yr'?Y`F Kț1Kț1Y1Y`F Y`F Kț?Y?Kț?Kț?Kț?Y?Y, Kț´, Kț´, Y´, Y, Y, Kț´l ?Y´l ?Kțl ?Kțl ?Kțl ?Y´l ?Y) Kț`F Kț`F Y`F Y) Y) Kț?Y?KțO?KțO?KțO?Y?Y`F Kț) Kț) Y) Y`F Y`F KțO?YO?Kț?Kț?Kț?YO?Y1Kț`F Kț`F Y`F Y1Y1Kț?Y?Kț?Kț?Kț?Y?Y1Kț1Kț1Y1Y1Y1Kț?Y?Kț?Kț?Kț?Y?Y$s༾J$O$fJ$A`$z$fJ㥏z㥏A`㥏s༾J㥏㥏O㥏fJ㥏A`㥏fJ$fJ$A`㥏A`$A`$A`㥏z$z$A`㥏z㥏s༾J$$s༾J㥏s༾J㥏$㥏㥏$O㥏O㥏$O$Oy$zy$zy㥏zy㥏Oy㥏Oy$O$Oy$Oy㥏Oy㥏O㥏O$ףx)1?`x)㥏?`أ㥏ףx)1?`أ㥏ףأ1ףx)™ףx)1ףأ1ףأ1ףأ™ףx)™ףx)™ףأ™?`أ$?`أ$?`x)$ףx)™?`x)$?`أ$s༾J$s༾J${jx)$?`x)$ףأ1?`أ㥏s༾J㥏ףأ™s༾J$?`أ$s༾J$ףأ™ףأ1s༾J$ףأ1s༾J㥏{jx)$A̾e;?$A̾e;?㥏A̾e;?㥏{jx)㥏{jx)$ףx)™?`x)${jx)$ףx)1{jx)㥏?`x)㥏ףx)™{jx)${jx)㥏ףx)™{jx)㥏ףx)1A̾e;?$Se;?$Se;?㥏Se;?㥏A̾e;?㥏A̾e;?$Se;?$$㥏㥏Se;?㥏Se;?$$أ$أ㥏أ㥏㥏$fJ$fJ㥏أ㥏أ㥏أ$fJ$z$z㥏zy㥏zy㥏zy$z$fJ㥏㥏أ㥏Se;?㥏㥏fJ㥏{jx)㥏A̾e;?㥏Se;?㥏{jx)㥏Se;?㥏fJ㥏?`x)㥏{jx)㥏s༾J㥏s༾J㥏?`أ㥏?`x)㥏Oy㥏zy㥏z㥏O㥏Oy㥏z㥏s༾J㥏O㥏z㥏z㥏fJ㥏s༾J㥏s༾J㥏fJ㥏{jx)㥏{jx)$Se;?$A̾e;?$O$z$zy$zy$Oy$O$s༾J$fJ$z$z$O$s༾J${jx)$s༾J$fJ$$fJ$أ$Se;?${jx)$fJ$Se;?$fJ$$?ef&jD W>ef&jB W>jB W>j?j?ef&jD W>ef&j?ef&j?ef&̠?ef&̠D W>ef&̠D W>ef&jB W>jD W>ef&jD W>ef&̠D W>ef&̠B W>̠B W>j?jB W>jB W>̠B W>̠?̠?j?ef&j?j?̠?̠?ef&̠?ef&j?̠B W>̠D W>ef&̠D W>ef&̠?ef&̠?̠1+\?륿1?ʥ1+\?G)\??륿1'\??륿1(,?ʥ1(,?ʥG(,?ʥG)\??륿1(,?1(,?ʥ1??ʥ1??ʥ1'\??1(,?G(,?G)\??G??ʥG??ʥG(,?ʥG(,??u(,?'1?u(,?-&(,?-&(,?-&(,?'1?u(,?'1G(,?G(,?ʥ1(,?ʥ1(,?ʥ1(,?G(,?G)\??1'\??1'\??륿1'\??륿G)\??륿G)\??t?u*\?'1u?u(,'1)&(,'1t?u*\?'1)&(,'1)&+\?'1t?u*\?)&+\?)&(,'1)&(,'1t?u*\?'1t?u*\? G)\?1+\?1?ʥ1?ʥ G)\?륿 G)\?u?u(,)&(,)&(,'1)&(,'1u?u(,'1u?u(, G(,ʥ1(,ʥ1(,1(, G(, G(,ʥ1+\?1(,1(,ʥ1(,ʥ1+\?륿1+\?)&(,1(,1+\?1+\?)&+\?)&(,)&(,'1)&(,)&+\?)&+\?)&+\?'1)&(,'1t?u*\?u?u(,u?u(,'1u?u(,'1t?u*\?'1t?u*\? G(,u?u(,t?u*\?t?u*\? G)\? G(, G)\? G)\?륿 G(,ʥ G(,ʥ G(, G)\?1+\?륿1(,ʥ G(,ʥ G(,ʥ G)\?륿1+\?륿p=Z?(>E?(>E?(>ʥE?(>ʥp=Z?(>륿p=Z?(>p=Z?(>p=Z?(>륿p=Z?(>륿p=Z?(>륿p=Z?(>p=Z?(>p=Z?(>륿E?(>ʥE?(>ʥE?(>ʥp=Z?(>륿p=Z?(>륿E?(>ʥE?(>E?(>E?(>E?(>ʥE?(>ʥE?(>p=Z?(>p=Z?(>p=Z?(>E?(>E?(>E?(>p=Z?(>r=Z?L;r=Z?L;E?L;E?(>E?(>ʥE?(>E?L;E?L;E?L;ʥE?(>ʥp=Z?(>륿E?(>ʥE?L;ʥE?L;ʥr=Z?L;륿p=Z?(>륿p=Z?(>p=Z?(>륿r=Z?L;륿r=Z?L;륿r=Z?L;p=Z?(>E?L;ʥE?L;r=Z?L;r=Z?L;r=Z?L;륿E?L;ʥp=Z?F`>'1E?F`>'1E?F`>E?F`>p=Z?F`>p=Z?F`>'1p=Z?F`>'1p=Z?F`>p=Z?F`>p=Z?F`>p=Z?F`>'1p=Z?F`>'1p=Z?F`>E?F`>E?F`>E?F`>p=Z?F`>p=Z?F`>E?F`>E?F`>'1E?F`>'1E?F`>'1E?F`>E?F`>E?F`>'1p=Z?F`>'1p=Z?F`>'1p=Z?F`>'1E?F`>'1E?F`>'1E?F`>'1p=Z?F`>'1r=Z?'1r=Z?'1E?'1E?F`>'1E?F`>E?F`>'1E?'1E?'1E?E?F`>p=Z?F`>E?F`>E?E?r=Z?p=Z?F`>p=Z?F`>'1p=Z?F`>r=Z?r=Z?r=Z?'1p=Z?F`>'1r=Z?'1r=Z?r=Z?r=Z?r=Z?'1r=Z?'1r=Z?E?E?E?r=Z?r=Z?E?E?'1E?'1E?'1E?E?E?'1r=Z?'1r=Z?'1r=Z?'1E?'1E?'1E?E?'1r=Z?'1r=Z?'1r=Z?E?tj>j>j>tt??t>t>j>j??j??t?t??t??j??j?j?t?t?jjjt?tKgGdGj'1j'1І'1ІKgGdGІKgGdGj'1j'19=j'19=І'19=І'1І'1jOgGKgG>j'19=j'19=І'19=ІOgGKgG>ІOgGKgG>j&1>jOgGKgG>jOgGKgG>ІOgGKgG>І&1>І&1>j=&1>j&1>j&1>І&1>І=&1>І=&1>jKgG>OgG>j=&1>j=&1>І=&1>ІKgG>OgG>ІKgG>OgG>j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1jKgGdGjKgGdGІKgGdGІ'1І'1j='1j'1j'1І'1І='1І='1jOgG>dGj='1j='1І='1ІOgG>dGІOgG>dGj'1>jOgG>dGjOgG>dGІOgG>dGІ'1>І'1>j'1>C=j'1>C=І'1>І'1>І'1>j'1>C=jKgG>OgG>jKgG>OgG>І'1>C=І'1>C=І'1>C=jKgG>OgG>jj?j??j??j>jjKgG>OgG>ІІ'1>C=І'1>C=ІІ'1>І'1>ІІOgG>dGІ='1ІOgG>dGІІ'1І='1ІІKgGdGІ'1ІІІ'1ІKgGdGІ'1ІІ'1І'1І'19=ІІOgGKgG>І'19=ІІ&1>ІOgGKgG>ІІ=&1>І&1>ІІKgG>OgG>І=&1>ІІt>t??t??t?ttf䌿"?p=)Пx?p=f䌿"?K7f䌿"?K7)Пx?p=)Пx?_)Пx?p=f䌿"?p=猿?)Пx?p=猿?qӟh?qӟh?猿?@?Cqӟh?@?Cݟ8?Cݟ8?C@?C>?_ݟ8?C>?_S퟿W?_S퟿W?_>?_N?S퟿W?_N?L?L?N?s.e?8L?s.e?8j?8j?8s.e?8H?Ij?8H?Io4?Iɥ<>Iޒ$>I9>8ɥ<>I9>8㥿TB>8㥿TB>89>8$}>㥿TB>8$}>W>W>$}>%5>_W>%5>_,>_,>_%5>_4F>C,>_4F>C >C >C4F>C?I;> >C?I;>*є>,Dp=?^Sp=?^,D|??^,D|??^Sp=?^S|??^,Dp=?C,Dp=?^,D|??C,D|??C,Dp=?^,D|??^|??S|??p=?p=?S|??Sp=?Sp=?^Sp=?S|??^S|??^Sp=?S|??p=?Sp=?G[p=?ďG[p=?ďSp=?Sp=?^G[p=?ďSp=?^\^p=?~\^p=?~Sp=?^ap=?R,Dp=?^,Dp=?CSp=?^Sp=?^,Dp=?Cep=?CSp=?^ep=?Cap=?RS|??|??S|??^S|??^|??G[|??ďS|??^G[|??ď\^|??~,D|??C,D|??^e|??Ce|??C,D|??^S|??^e|??CS|??^a|??Ra|??RS|??^\^|??~ep=?C,Dp=?Ce|??Ce|??C,Dp=?C,D|??CG[|??ďG[p=?ď\^p=?~G[|??ď\^p=?~\^|??~\^|??~\^p=?~ap=?R\^|??~ap=?Ra|??Ra|??Rap=?Rep=?Ca|??Rep=?Ce|??CG[|??ď|??G[p=?ďG[p=?ď|??p=? |??^kD|??^ p=?^ p=?^kD|??^kDp=?^ |??I |??^ p=?I p=?I |??^ p=?^M?p=?kDp=?M?|??M?|??kDp=?kD|??kD|??^kD|??kDp=?^kDp=?^kD|??kDp=?kD|??kD|??^M?|??M?|??kD|??^ |??^M?|?? |??^ |??I p=?I p=?^M?p=?M?p=? p=?^kDp=?^M?p=?kDp=?^kDp=? p=?IM?p=? |??I |??IM?p=?M?|??/(|?5^/(|?FH(|?5^FH(|?5^/(|?FH(|?FHzt?FH(|?/zt?/zt?FH(|?/(|?/yN?I/yN?^EHyN?IEHyN?I/yN?^EHyN?^FHGz?^EHyN?^/Gz?^/Gz?^EHyN?^/yN?^EHyN?IEHyN?^FHzt?FHzt?EHyN?^FHGz?^FHzt?FHGz?^FH(|?FH(|?FHGz?^FH(|?5^/(|?/(|?5^/zt?/zt?/(|?5^/Gz?^/zt?/Gz?^/yN?I/yN?I/Gz?^/yN?^/zt?/yN?IFHzt?FHzt?/yN?IEHyN?I/Gz?^/(|?5^FHGz?^FHGz?^/(|?5^FH(|?5^B(|?^kD|?^B(p?^B(p?^kD|?^kDp?^B(|?IB(|?^B(p?IB(p?IB(|?^B(p?^M?p?kDp?M?|?M?|?kDp?kD|?kD|?^kD|?kDp?^kDp?^kD|?kDp?kD|?kD|?^M?|?M?|?kD|?^B(|?^M?|?B(|?^B(|?IB(p?IB(p?^M?p?M?p?B(p?^kDp?^M?p?kDp?^kDp?B(p?IM?p?B(|?IB(|?IM?p?M?|?op?^Pp?^o|?^o|?^Pp?^Q|?^op?Iop?^o|?Io|?Iop?^o|?^|?Q|?p?p?Q|?Pp?Pp?^Pp?Q|?^Q|?^Pp?Q|?Pp?Pp?^p?p?Pp?^op?^p?op?^op?Io|?Io|?^|?|?o|?^Q|?^|?Q|?^Q|?o|?I|?op?Iop?I|?p? p=^Dp=^ |?^ |?^Dp=^D|?^ p=C p=^ |?C |?C p=^ |?^>|?D|?>p=>p=D|?Dp=Dp=^Dp=D|?^D|?^Dp=D|?>p=Dp=-p=ď-p=ďDp=Dp=^-p=ďDp=^Q,p=~Q,p=~Dp=^|o+p=R p=^ p=CDp=^Dp=^ p=C~*p=CDp=^~*p=C|o+p=RD|?>|?D|?^D|?^>|?-|?ďD|?^-|?ďQ,|?~ |?C |?^~*|?C~*|?C |?^D|?^~*|?CD|?^|o+|?R|o+|?RD|?^Q,|?~~*p=C p=C~*|?C~*|?C p=C |?C-|?ď-p=ďQ,p=~-|?ďQ,p=~Q,|?~Q,|?~Q,p=~|o+p=RQ,|?~|o+p=R|o+|?R|o+|?R|o+p=R~*p=C|o+|?R~*p=C~*|?C-|?ď>|?-p=ď-p=ď>|?>p=|?^^|?^p=^p=^^|?^^p=^|?I|?^p=Ip=I|?^p=^np=^p=n|?n|?^p=^|?^|?^^|?^p=^^p=^^|?^p=^|?^|?^n|?n|?^|?^|?^n|?|?^|?Ip=Ip=^np=np=p=^^p=^np=^p=^^p=p=Inp=|?I|?Inp=n|?š(|5^š(|2(|5^2(|5^š(|2(|2zt2(|šztšzt2(|š(|ơ|NIơ|N^3|NI3|NIơ|N^3|N^2Iz^3|N^šIz^šIz^3|N^ơ|N^3|NI3|N^2zt2zt3|N^2Iz^2zt2Iz^2(|2(|2Iz^2(|5^š(|š(|5^šztšztš(|5^šIz^šztšIz^ơ|NIơ|NIšIz^ơ|N^šztơ|NI2zt2ztơ|NI3|NIšIz^š(|5^2Iz^2Iz^š(|5^2(|5^n|^`|^np^np^`|^ap^n|In|^npInpIn|^np^npapn|n|ap`|`|^`|ap^ap^`|ap`|`|^n|n|`|^n|^n|n|^n|InpInp^npnpnp^ap^npap^apnpInpn|In|Inpn|'p^Dp^'|^'|^Dp^D|^'pI'p^'|I'|I'p^'|^>|D|>p>pD|DpDp^DpD|^D|^DpD|DpDp^>p>pDp^'p^>p'p^'pI'|I'|^>|>|'|^D|^>|D|^D|'|I>|'pI'pI>|>p{N?#^|N?i绾^ P?#^ P?#^|N?i绾^ P?i绾^{N?#C{N?#^ P?#C P?#C{N?#^ P?#^ P? P?i绾|N?|N? P?i绾|N?i绾|N?i绾^|N?i绾 P?i绾^ P?i绾^|N?i绾 P?i绾|N?|N?i绾|N?㍾ď|N?㍾ď|N?i绾|N?i绾^|N?㍾ď|N?i绾^|N?qY~|N?qY~|N?i绾^|N?>R{N?#^{N?#C|N?i绾^|N?i绾^{N?#C|N?6C|N?i绾^|N?6C|N?>R P?i绾 P? P?i绾^ P?i绾^ P? P?㍾ď P?i绾^ P?㍾ď P?qY~ P?#C P?#^ P?6C P?6C P?#^ P?i绾^ P?6C P?i绾^ P?>R P?>R P?i绾^ P?qY~|N?6C{N?#C P?6C P?6C{N?#C P?#C P?㍾ď|N?㍾ď|N?qY~ P?㍾ď|N?qY~ P?qY~ P?qY~|N?qY~|N?>R P?qY~|N?>R P?>R P?>R|N?>R|N?6C P?>R|N?6C P?6C P?㍾ď P?|N?㍾ď|N?㍾ď P?|N? P? >^ P?^d>^{N? >^{N? >^ P?^d>^zN?^d>^ P? >I P? >^{N? >I{N? >I P? >^{N? >^zN?&>zN?^d> P?&> P?&>zN?^d> P?^d> P?^d>^ P?^d>zN?^d>^zN?^d>^ P?^d>zN?^d> P?^d> P?^d>^ P?&> P?&> P?^d>^ P? >^ P?&> P? >^ P? >I{N? >I{N? >^zN?&>zN?&>{N? >^zN?^d>^zN?&>zN?^d>^zN?^d>{N? >IzN?&> P? >I P? >IzN?&> P?&>< ?~s5^< ?~s< ?be;5^< ?be;5^< ?~s< ?be;33?be;< ?be;33?s33?s< ?be;< ?~s`?sI`?s^`?be;I`?be;I`?s^`?be;^ff?be;^`?be;^ff?s^ff?s^`?be;^`?s^`?be;I`?be;^33?be;33?be;`?be;^ff?be;^33?be;ff?be;^< ?be;< ?be;ff?be;^< ?be;5^< ?~s< ?~s5^33?s33?s< ?~s5^ff?s^33?sff?s^`?sI`?sIff?s^`?s^33?s`?sI33?be;33?be;`?sI`?be;Iff?s^< ?~s5^ff?be;^ff?be;^< ?~s5^< ?be;5^|?5?r>^|?5?^d>^233?r>^233?r>^|?5?^d>^233?^d>^|?5?r>I|?5?r>^233?r>I233?r>I|?5?r>^233?r>^233?&>233?^d>|?5?&>|?5?&>233?^d>|?5?^d>|?5?^d>^|?5?^d>233?^d>^233?^d>^|?5?^d>233?^d>|?5?^d>|?5?^d>^|?5?&>|?5?&>|?5?^d>^|?5?r>^|?5?&>|?5?r>^|?5?r>I233?r>I233?r>^233?&>233?&>233?r>^233?^d>^233?&>233?^d>^233?^d>233?r>I233?&>|?5?r>I|?5?r>I233?&>|?5?&>433?}^433?i绾^~?5?}^~?5?}^433?i绾^~?5?i绾^433?}I433?}^~?5?}I~?5?}I433?}^~?5?}^~?5?~?5?i绾433?433?~?5?i绾433?i绾433?i绾^433?i绾~?5?i绾^~?5?i绾^433?i绾~?5?i绾433?i绾433?i绾^433?433?433?i绾^433?}^433?433?}^433?}I~?5?}I~?5?}^~?5?~?5?~?5?}^~?5?i绾^~?5?~?5?i绾^~?5?i绾~?5?}I~?5?433?}I433?}I~?5?433?bGa=\뗿p???HrGabGa=\t/ݠ8Hv?/ݠ8Hv?Ȓ8Hv?Ȓ\tȒ\t/ݠbGa=$\뗿p?$?$?$HrGa$bGa=$$a=/ݠϖ ?/ݠϖ ?Ȓϖ ?Ȓ$a=Ȓ$a=/ݠbGa=HrGaG!GaG!GaG!Ga=bGa=bGa=$HrGa$G!Ga$G!Ga$G!Ga=$bGa=$$a=/ݠ$a=ȒG!=ȒG!=ȒG!=/ݠ$a=/ݠ\t/ݠ\tȒG!ȒG!ȒG!/ݠ\t/ݠG!=Ȓ$a=ȒbGa=bGa=G!Ga=G!=Ȓ$a=Ȓϖ ?Ȓ\뗿p?\뗿p?bGa=$a=Ȓ?HrGa\tȒ\tȒ8Hv?Ȓ?\t/ݠHrGa$?$?$8Hv?/ݠ\t/ݠϖ ?/ݠ$a=/ݠbGa=$bGa=$\뗿p?$ϖ ?/ݠ$a=/ݠbGa=$G!Ga=$G!Ga=$G!=/ݠ$a=/ݠG!Ga$HrGa$\t/ݠ\t/ݠG!/ݠG!Ga$HrGa\tȒG!ȒG!ȒG!GaHrGa$a=ȒG!=ȒG!Ga=G!Ga=bGa=$a=ȒG!Ga$G!GaG!Ga=G!Ga=G!Ga=$G!Ga$G!/ݠG!ȒG!GaG!GaG!Ga$G!/ݠG!Ga=$G!Ga=G!=ȒG!=ȒG!=/ݠG!Ga=$\뗿p?$?$??\뗿p?\뗿p?$ϖ ?/ݠ\뗿p?$\뗿p?\뗿p?ϖ ?Ȓϖ ?/ݠ?I;>GB>p=_.t>p=_.t>p=*є>?I;>c~?ƻ ~>ƻ_.t>__.t>_)Пx?_c~?ƻGB>p=GB>K7_.t>p=GB>K7_.t>__.t>p=s.e?89>8ޒ$>Iޒ$>IH?Is.e?8N?$}>9>8N?9>8s.e?8>?_%5>_$}>>?_$}>N?@?C4F>C>?_4F>C%5>_>?_猿??I;>4F>C猿?4F>C@?Cf䌿"?p=GB>p=猿?GB>p=?I;>猿?f䌿"?p=f䌿"?K7GB>K7f䌿"?p=GB>K7GB>p=fx>_c̉gn>ƻ ~>ƻfx>_ ~>ƻ_.t>_?$>_n&>ƻc̉gn>ƻ?$>_c̉gn>ƻfx>_)Пx?_?$>_fx>_)Пx?_fx>__.t>_n&>ƻc~?ƻc̉gn>ƻc~?ƻ ~>ƻc̉gn>ƻ?$>˜޾f䌿"?K7?$>_f䌿"?K7)Пx?_?$>_?$>˜޾fx>˜޾GB>K7?$>˜޾GB>K7f䌿"?K7?$>˜޾?$>_fx>_?$>˜޾fx>_fx>˜޾fx>˜޾fx>_GB>K7fx>__.t>_GB>K7c~?ƻ)Пx?__.t>_c~?ƻ_.t>_ ~>ƻ)Пx?p=_.t>p=_.t>_)Пx?p=_.t>_)Пx?_?$>_)Пx?_c~?ƻ?$>_c~?ƻn&>ƻH?Iޒ$>Io4?Iޒ$>Iɥ<>Io4?IZ"9`嬿X9`嬿Z"9Z"9X9`嬿X9X9X9`嬿;R9`嬿X9;R9`嬿;R9;R9;R9`嬿A9`嬿;R9A9`嬿A9A9A9`嬿U}8`嬿A9U}8`嬿U}8U}8U}8`嬿@|Q8`嬿U}8@|Q8`嬿@|Q8@|Q8@|Q8`嬿b:{7`嬿@|Q8b:{7`嬿b:{7b:{7b:{7`嬿Az> 7`嬿b:{7Az> 7`嬿Az> 7Z"9`嬿Z"99#S9Z"9`嬿9#S99#S9`嬿9#S9`嬿9#S9#A99#S9`嬿#A9#A9`嬿#A9`嬿#A9^$8#A9`嬿^$8^$8`嬿^$8`嬿^$8$Q8^$8`嬿$Q8$Q8`嬿$Q8`嬿$Q8n%7$Q8`嬿n%7n%7`嬿n%7`嬿n%7%? 7n%7`嬿%? 7%? 7`嬿%53S`嬿%53S@z43S`嬿@z43S`嬿%53S@z43S%? 7%53S%53S%DPԬ%53SԬ%53S`嬿%53S%J%? 7%? 7`嬿%|6CԬ%53S`嬿%53S`嬿%|6CԬ%JԬ%53S`嬿%JԬ%DPԬ@z43SԬ@zPpQԬ@z43S`嬿@z43S`嬿@zPpQԬ@z0NԬAz:ԬAz> 7`嬿@z43S`嬿Az:Ԭ@z43S`嬿@zEԬ@zEԬ@z43S`嬿@z0NԬAz> 7BzI@z43SAz> 7@z43S@z43Sn%7`嬿%? 7`嬿%53S`嬿@z43S`嬿Az> 7`嬿b:{7`嬿b:{7`嬿@|Q8`嬿@z43S`嬿@z43S`嬿@|Q8`嬿U}8`嬿@z43S`嬿U}8`嬿A9`嬿n%7`嬿%53S`嬿$Q8`嬿9#S9`嬿#A9`嬿%53S`嬿%53S`嬿#A9`嬿^$8`嬿%53S`嬿^$8`嬿$Q8`嬿A9`嬿;R9`嬿@z43S`嬿@z43S`嬿;R9`嬿X9`嬿@z43S`嬿X9`嬿%53S`嬿%53S`嬿X9`嬿Z"9`嬿%53S`嬿Z"9`嬿9#S9`嬿;R9A9@z43S@z43SA9U}8%53S^$8#A9U}8@|Q8@z43S@z43S@|Q8b:{7@z43Sb:{7Az> 7%? 7n%7%53S%53Sn%7$Q8%53S$Q8^$8#A99#S9%53S%53S9#S9Z"9%53SZ"9@z43S@z43SZ"9X9@z43SX9;R9`9?`嬿^"9?`嬿`9?`9?^"9?`嬿^"9?^"9?^"9?`嬿9#O9?`嬿^"9?9#O9?`嬿9#O9?9#O9?9#O9?`嬿 #A9?`嬿9#O9? #A9?`嬿 #A9? #A9? #A9?`嬿^$8?`嬿 #A9?^$8?`嬿^$8?^$8?^$8?`嬿$Q8?`嬿^$8?$Q8?`嬿$Q8?$Q8?$Q8?`嬿r%7?`嬿$Q8?r%7?`嬿r%7?r%7?r%7?`嬿%; 7?`嬿r%7?%; 7?`嬿%; 7?`9?`嬿`9?;P9?`9?`嬿;P9?;P9?`嬿;P9?`嬿;P9?A9?;P9?`嬿A9?A9?`嬿A9?`嬿A9?c}8?A9?`嬿c}8?c}8?`嬿c}8?`嬿c}8?@|Q8?c}8?`嬿@|Q8?@|Q8?`嬿@|Q8?`嬿@|Q8?p:{7?@|Q8?`嬿p:{7?p:{7?`嬿p:{7?`嬿p:{7?Oz< 7?p:{7?`嬿Oz< 7?Oz< 7?`嬿Pz13S?`嬿Pz13S?%03S?`嬿%03S?`嬿Pz13S?%03S?Oz< 7?Pz13S?Pz13S?Pz13S?NzG?Oz< 7?%03S?Ԭ%pQ?Ԭ%03S?`嬿%03S?`嬿%pQ?Ԭ%0N?Ԭ%5?Ԭ%; 7?%; 7?`嬿%5?Ԭ%; 7?`嬿%:?Ԭ%:?Ԭ%; 7?`嬿%03S?`嬿%:?Ԭ%03S?`嬿%E?Ԭ%E?Ԭ%03S?`嬿%0N?Ԭ%; 7?%F?%03S?%; 7?%03S?%03S?;P9?`嬿A9?`嬿Pz13S?`嬿Pz13S?`嬿A9?`嬿c}8?`嬿%03S?`嬿^$8?`嬿 #A9?`嬿c}8?`嬿@|Q8?`嬿Pz13S?`嬿Pz13S?`嬿@|Q8?`嬿p:{7?`嬿Pz13S?`嬿p:{7?`嬿Oz< 7?`嬿%; 7?`嬿r%7?`嬿%03S?`嬿%03S?`嬿r%7?`嬿$Q8?`嬿%03S?`嬿$Q8?`嬿^$8?`嬿 #A9?`嬿9#O9?`嬿%03S?`嬿%03S?`嬿9#O9?`嬿^"9?`嬿%03S?`嬿^"9?`嬿Pz13S?`嬿Pz13S?`嬿^"9?`嬿`9?`嬿Pz13S?`嬿`9?`嬿;P9?`嬿r%7?%; 7?%03S?Pz13S?Oz< 7?p:{7?p:{7?@|Q8?Pz13S?Pz13S?@|Q8?c}8?Pz13S?c}8?A9?r%7?%03S?$Q8?9#O9? #A9?%03S?%03S? #A9?^$8?%03S?^$8?$Q8?A9?;P9?Pz13S?Pz13S?;P9?`9?Pz13S?`9?%03S?%03S?`9?^"9?%03S?^"9?9#O9?|N?Ga`嬿zN?Ga>`嬿|N?Ga|N?GazN?Ga>`嬿zN?Ga>K?kK?k`嬿.L?+k`嬿K?k.L?+k`嬿.L?+k.L?+k.L?+k`嬿L?%j`嬿.L?+kL?%j`嬿L?%jL?%jL?%j`嬿wTM?h`嬿L?%jwTM?h`嬿wTM?hwTM?hwTM?h`嬿M?_ff`嬿wTM?hM?_ff`嬿M?_ffM?_ffM?_ff`嬿4M?c`嬿M?_ff4M?c`嬿4M?c4M?c4M?c`嬿|N?Ga`嬿4M?c|N?Ga`嬿|N?GaK?&k>`嬿K?&k>.L?,k>K?&k>`嬿.L?,k>.L?,k>`嬿.L?,k>`嬿.L?,k>L?%j>.L?,k>`嬿L?%j>L?%j>`嬿L?%j>`嬿L?%j>uTM?h>L?%j>`嬿uTM?h>uTM?h>`嬿uTM?h>`嬿uTM?h>M?nff>uTM?h>`嬿M?nff>M?nff>`嬿M?nff>`嬿M?nff>2M?c>M?nff>`嬿2M?c>2M?c>`嬿2M?c>`嬿2M?c>zN?Ga>2M?c>`嬿zN?Ga>zN?Ga>`嬿h?Eh?kh?kh?'k>h?E>h?'k>h?'k>h?'k>`嬿h?kh?kh?'k>`嬿h?k`嬿h?'k>h?'k>K?&k>h?'k>`嬿h?'k>ԬK?&k>`嬿K?&k>`嬿h?'k>Ԭ֣0?%k>ԬK?&k>`嬿֣0?%k>ԬK?&k>K?&k>֣0?%k>Ԭ֣0?%k>K?&k>֣0?%k>h?'k>K?kh?kh?kwd?kԬh?kԬh?k`嬿h?kأ0?kK?kK?k`嬿*\O?kԬh?k`嬿h?k`嬿*\O?kԬ\?kԬh?k`嬿\?kԬwd?kԬ.L?+k`嬿K?k`嬿h?k`嬿4M?c`嬿M?_ff`嬿h?k`嬿M?_ff`嬿wTM?h`嬿h?k`嬿h?k`嬿wTM?h`嬿L?%j`嬿h?k`嬿L?%j`嬿.L?+k`嬿h?'k>`嬿K?&k>`嬿.L?,k>`嬿.L?,k>`嬿L?%j>`嬿h?'k>`嬿h?'k>`嬿L?%j>`嬿uTM?h>`嬿h?'k>`嬿uTM?h>`嬿M?nff>`嬿M?nff>`嬿2M?c>`嬿h?'k>`嬿h?'k>`嬿2M?c>`嬿zN?Ga>`嬿h?'k>`嬿zN?Ga>`嬿h?k`嬿h?k`嬿zN?Ga>`嬿|N?Ga`嬿h?k`嬿|N?Ga`嬿4M?c`嬿.L?,k>K?&k>h?'k>h?kK?k.L?+k.L?+kL?%jh?kh?kL?%jwTM?hh?kwTM?hM?_ffh?'k>2M?c>M?nff>M?nff>uTM?h>h?'k>h?'k>uTM?h>L?%j>h?'k>L?%j>.L?,k>M?_ff4M?ch?kh?k4M?c|N?Gah?k|N?Gah?'k>h?'k>|N?GazN?Ga>h?'k>zN?Ga>2M?c>D7 33S@z43S@z43S`嬿@z43S`嬿D7 33SԬD7 33SD7 33SD7 33SԬF7 HԬF7 HԬF7 HD7 33SF7 HF7 HԬBzIԬBzIԬBzIF7 HBzIAz> 7Az> 7`嬿Az> 7`嬿BzIԬBzID7 33SF7 HBzIBzI@z43SD7 33SD7 33SԬ@z43S`嬿BzIԬBzIԬF7 HԬD7 33SԬ%53S5A53S5A53SԬ5A53SԬ%53SԬ%53S%J5AJ5AJԬ5AJԬ%JԬ%J5A53S5A53SԬ5AJԬ5AJԬ5AJ5A53S%J%JԬ%? 7`嬿%? 7`嬿%? 7%J%53S5A53S5AJ5AJ%J%53S%53SԬ%JԬ5AJԬ5AJԬ5A53SԬ%53SԬh?E>h?E>Ԭ֣0?E>Ԭ֣0?E>Ԭ֣0?E>h?E>h?'k>h?'k>`嬿h?E>Ԭh?E>Ԭh?E>h?'k>֣0?%k>֣0?E>֣0?E>Ԭ֣0?E>Ԭ֣0?%k>Ԭ֣0?%k>h?'k>`嬿֣0?%k>Ԭ֣0?E>Ԭ֣0?E>Ԭh?E>Ԭh?'k>`嬿h?'k>h?E>֣0?E>֣0?E>֣0?%k>h?'k>h?Eأ0?Eأ0?kأ0?kh?kh?Eh?Eh?kh?k`嬿h?k`嬿h?EԬh?Eh?Eh?EԬأ0?EԬأ0?EԬأ0?Eh?Eأ0?Eأ0?EԬأ0?kԬأ0?kԬأ0?kأ0?EK?kأ0?kأ0?kԬأ0?kԬK?k`嬿K?kh?EԬh?kԬأ0?kԬأ0?kԬأ0?EԬh?EԬR7 H?NzG?NzG?ԬNzG?ԬR7 H?ԬR7 H?R7 H?R7 H?ԬT7 23S?ԬT7 23S?ԬT7 23S?R7 H?T7 23S?T7 23S?ԬPz13S?`嬿Pz13S?`嬿Pz13S?T7 23S?%03S?9A03S?9A03S?Ԭ9A03S?Ԭ%03S?`嬿%03S?9AF?9AF?Ԭ9A03S?Ԭ9A03S?Ԭ9A03S?9AF?%F?%F?Ԭ9AF?Ԭ9AF?Ԭ9AF?%F?%F?%; 7?%5?Ԭ%5?Ԭ%F?Ԭ%F?%03S?`嬿9A03S?Ԭ9AF?Ԭ9AF?Ԭ%F?Ԭ%03S?`嬿%F?9AF?9A03S?9A03S?%03S?%F?R7 H?T7 23S?Pz13S?Pz13S?NzG?R7 H?NzG?NzG?ԬOz< 7?`嬿Oz< 7?`嬿Oz< 7?NzG?R7 H?ԬNzG?ԬPz13S?`嬿Pz13S?`嬿T7 23S?ԬR7 H?ԬkD(|?DqE(|?DkD(|?kD(|?qE(|?DqE(|?kD(|?qE(|?CeD(|?CeD(|?qE(|?;bE(|?]፿CeD(|?;bE(|?]፿QD(|?덿QD(|?덿;bE(|?]፿5E(|?QD(|?덿5E(|?%2D(|?3׍%2D(|?3׍5E(|?D(|?xz%2D(|?3׍D(|?xz D(|?yǍ D(|?yǍD(|?xzD(|?V D(|?yǍD(|?VSC(|?SC(|?D(|?VD(|?)?SC(|?D(|?)?5C(|?^5C(|?^D(|?)?5C(|?K7PH?D*PH?DPH?PH?*PH?D*PH?PH?*PH?AH?AH?*PH?H?鍿AH?H?鍿H?򍿚H?򍿉H?鍿+H?H?+H?XH?eߍXH?eߍ+H?SrH?͍XH?eߍSrH?͍hH?ύhH?ύSrH?͍HH?nihH?ύHH?niNH?2čNH?2čHH?niqH?MNH?2čqH?MH?H?qH?M%H?1=H?%H?1=SH?^SH?^%H?1=SH?K7SH?^SH?K7({G?^({G?^SH?K7({G?K7X(|?D2P(|?DPH?D2P(|?D*PH?DPH?DX(|?PH?AH?X(|?AH?I(|?I(|?AH?H?I(|?H?򍿢(|?򍿢(|?򍿚H?XH?eߍ(|?XH?eߍ`(|?eߍ`(|?eߍXH?eߍhH?ύ`(|?eߍhH?ύh(|?ύh(|?ύhH?ύNH?2čh(|?ύNH?2čR(|?2čR(|?2čNH?2čH?R(|?2čH?(|?(|?H?SH?^(|?SH?^S(|?^$%E:?^[%TC:?^5C(|?^5C(|?^[%TC:?^5CF?^5CF?^[%TC:?^q%9?^5CF?^q%9?^q%F?^7{UC:?^S(|?^({9?^({9?^S(|?^SH?^({9?^SH?^({G?^7{UC:?^\|F:?^S(|?^S(|?^\|F:?^+(~h;?^S(|?^+(~h;?^h##;?^U#D< ?p>D< ?_d>< ?_d>< ?p>D< ?p>< ?_d>< ?p>< ?1[>< ?1[>< ?p>< ?_Z>鍿< ?1[>< ?_Z>鍿< ?\>>< ?\>>< ?_Z>鍿< ?7>< ?\>>< ?7>< ?->eߍ< ?->eߍ< ?7>< ?m>͍< ?->eߍ< ?m>͍< ?Bк>ύ< ?Bк>ύ< ?m>͍< ?>ni< ?Bк>ύ< ?>ni< ?>2č< ?>2č< ?>ni< ?i>M< ?>2č< ?i>M< ?2>< ?2>< ?i>M< ?>1=< ?2>< ?>1=< ?'۹>^< ?'۹>^< ?>1=< ?'۹>K7أ0?j绾Dأ0?Dأ0?j绾أ0?j绾أ0?Dأ0?󽾬أ0?j绾أ0?󽾬أ0?ܻأ0?ܻأ0?󽾬أ0?ܽ鍿أ0?ܻأ0?ܽ鍿أ0?أ0?أ0?ܽ鍿أ0?󗽾أ0?أ0?󗽾أ0?萻eߍأ0?萻eߍأ0?󗽾أ0?)+͍أ0?萻eߍأ0?)+͍أ0?LSύأ0?LSύأ0?)+͍أ0?niأ0?LSύأ0?niأ0?2čأ0?2čأ0?niأ0?X뻾Mأ0?2čأ0?X뻾Mأ0?أ0?أ0?X뻾Mأ0?*1=أ0?أ0?*1=أ0?2^^أ0?2^^أ0?*1=أ0?2^K7أ0?2^^أ0?2^K7أ0?k^أ0?k^أ0?2^K7أ0?kK7< ?h绾D< ?Dأ0?j绾Dأ0?j绾D< ?Dأ0?D< ?h绾أ0?j绾أ0?ܻ< ?h绾أ0?ܻ< ?ܻ< ?ܻأ0?ܻأ0?< ?ܻأ0?< ?< ?أ0?أ0?萻eߍ< ?أ0?萻eߍ< ?搻eߍ< ?搻eߍأ0?萻eߍأ0?LSύ< ?搻eߍأ0?LSύ< ?JSύ< ?JSύأ0?LSύأ0?2č< ?JSύأ0?2č< ?2č< ?2čأ0?2čأ0?< ?2čأ0?< ?< ?أ0?أ0?2^^< ?أ0?2^^< ?0^^< ?'۹>^L?A}>^tL?>^< ?'۹>^,J?b>^֣0?%۹>^֣0?%۹>^,J?b>^o=J?`>^֣0?%۹>^o=J?`>^֣0?_>^.J?傾^K?b^< ?0^^< ?0^^K?b^ L?`^< ?0^^ L?`^tL?^tL?>^ L?V>^< ?'۹>^< ?'۹>^ L?V>^K?߁>^< ?'۹>^K?߁>^,J?b>^.J?傾^< ?0^^q=J?j^q=J?j^< ?0^^أ0?2^^q=J?j^أ0?2^^أ0?k^tL?^L?X~^< ?0^^< ?0^^L?X~^L?e{^< ?0^^L?e{^< ?'۹>^< ?'۹>^L?e{^L?Pz>^< ?'۹>^L?Pz>^L?A}>^< ?'۹>^֣0?%۹>^֣0?2>< ?'۹>^֣0?2>< ?2>< ?2>֣0?2>֣0?>2č< ?2>֣0?>2č< ?>2č< ?>2č֣0?>2č֣0?@к>ύ< ?>2č֣0?@к>ύ< ?Bк>ύ< ?Bк>ύ֣0?@к>ύ֣0?+>eߍ< ?Bк>ύ֣0?+>eߍ< ?->eߍ< ?->eߍ֣0?+>eߍ֣0?Z>>< ?->eߍ֣0?Z>>< ?\>>< ?\>>֣0?Z>>֣0?/[>< ?\>>֣0?/[>< ?1[>< ?1[>֣0?/[>֣0?]d>< ?1[>֣0?]d>< ?_d>< ?p>D< ?_d>D֣0?p>D֣0?p>D< ?_d>D֣0?]d>D< ?p>֣0?p>֣0?]Z>鍿< ?p>֣0?]Z>鍿< ?_Z>鍿< ?_Z>鍿֣0?]Z>鍿֣0?5>< ?_Z>鍿֣0?5>< ?7>< ?7>֣0?5>֣0?k>͍< ?7>֣0?k>͍< ?m>͍< ?m>͍֣0?k>͍֣0?>ni< ?m>͍֣0?>ni< ?>ni< ?>ni֣0?>ni֣0?i>M< ?>ni֣0?i>M< ?i>M< ?i>M֣0?i>M֣0?>1=< ?i>M֣0?>1=< ?>1=< ?>1=֣0?>1=֣0?%۹>K7< ?>1=֣0?%۹>K7< ?'۹>K7,J?b>K7K?߁>K7< ?'۹>K7,J?b>K7< ?'۹>K7o=J?`>K7o=J?`>K7< ?'۹>K7֣0?%۹>K7o=J?`>K7֣0?%۹>K7֣0?_>K7K?߁>K7 L?V>K7< ?'۹>K7< ?'۹>K7 L?V>K7tL?>K7< ?'۹>K7tL?>K7P?'۹>K7P?0^K7L?X~K7< ?0^K7< ?0^K7L?X~K7tL?K7< ?0^K7tL?K7 L?`K7tL?>K7L?A}>K7P?'۹>K7P?'۹>K7L?A}>K7L?Pz>K7P?'۹>K7L?Pz>K7P?0^K7P?0^K7L?Pz>K7L?e{K7P?0^K7L?e{K7L?X~K7 L?`K7K?bK7< ?0^K7< ?0^K7K?bK7.J?傾K7< ?0^K7.J?傾K7أ0?2^K7أ0?2^K7.J?傾K7q=J?jK7أ0?2^K7q=J?jK7أ0?kK7< ?0^K7أ0?2^K7أ0?*1=< ?0^K7أ0?*1=< ?*1=< ?*1=أ0?*1=أ0?X뻾M< ?*1=أ0?X뻾M< ?V뻾M< ?V뻾Mأ0?X뻾Mأ0?ni< ?V뻾Mأ0?ni< ?ni< ?niأ0?niأ0?)+͍< ?niأ0?)+͍< ?'+͍< ?'+͍أ0?)+͍أ0?󗽾< ?'+͍أ0?󗽾< ?񗽾< ?񗽾أ0?󗽾أ0?ܽ鍿< ?񗽾أ0?ܽ鍿< ?ܽ鍿< ?ܽ鍿أ0?ܽ鍿أ0?󽾬< ?ܽ鍿أ0?󽾬< ?󽾬< ?0^^< ?0^K7< ?< ?< ?0^K7< ?*1=< ?< ?*1=< ?2č< ?2č< ?*1=< ?V뻾M< ?2č< ?V뻾M< ?JSύ< ?JSύ< ?V뻾M< ?ni< ?JSύ< ?ni< ?搻eߍ< ?搻eߍ< ?ni< ?'+͍< ?搻eߍ< ?'+͍< ?< ?< ?'+͍< ?񗽾< ?< ?񗽾< ?ܻ< ?ܻ< ?񗽾< ?ܽ鍿< ?ܻ< ?ܽ鍿< ?h绾< ?h绾< ?ܽ鍿< ?󽾬< ?h绾< ?󽾬< ?h绾D< ?h绾D< ?󽾬< ?D֣0?_>^֣0?_>K7֣0?%۹>^֣0?%۹>^֣0?_>K7֣0?%۹>K7֣0?%۹>^֣0?%۹>K7֣0?2>֣0?2>֣0?%۹>K7֣0?>1=֣0?2>֣0?>1=֣0?>2č֣0?>2č֣0?>1=֣0?i>M֣0?>2č֣0?i>M֣0?@к>ύ֣0?@к>ύ֣0?i>M֣0?>ni֣0?@к>ύ֣0?>ni֣0?+>eߍ֣0?+>eߍ֣0?>ni֣0?k>͍֣0?+>eߍ֣0?k>͍֣0?Z>>֣0?Z>>֣0?k>͍֣0?5>֣0?Z>>֣0?5>֣0?/[>֣0?/[>֣0?5>֣0?]Z>鍿֣0?/[>֣0?]Z>鍿֣0?]d>֣0?]d>֣0?]Z>鍿֣0?p>q=J?j^أ0?k^q=J?jK7q=J?jK7أ0?k^أ0?kK7o=J?`>K7֣0?_>K7o=J?`>^o=J?`>^֣0?_>K7֣0?_>^L?e{K7L?Pz>K7L?e{^L?e{^L?Pz>K7L?Pz>^< ?'۹>< ?0^< ?'۹>^< ?'۹>^< ?0^< ?0^^< ?'۹>K7P?'۹>K7< ?'۹>^< ?'۹>^P?'۹>K7P?'۹>< ?'۹>^P?'۹>< ?'۹>< ?0^P?0^< ?0^^< ?0^^P?0^P?0^K7< ?0^^P?0^K7< ?0^K7P?'۹>P?0^< ?'۹>< ?'۹>P?0^< ?0^P?0^K7P?0^P?'۹>K7P?'۹>K7P?0^P?'۹>L?e{K7L?e{^L?X~^L?e{K7L?X~^L?X~K7L?X~K7L?X~^tL?^L?X~K7tL?^tL?K7tL?K7tL?^ L?`^tL?K7 L?`^ L?`K7 L?`K7 L?`^K?b^ L?`K7K?b^K?bK7K?bK7K?b^.J?傾^K?bK7.J?傾^.J?傾K7.J?傾K7.J?傾^q=J?j^.J?傾K7q=J?j^q=J?jK7o=J?`>K7o=J?`>^,J?b>^o=J?`>K7,J?b>^,J?b>K7,J?b>K7,J?b>^K?߁>^,J?b>K7K?߁>^K?߁>K7K?߁>K7K?߁>^ L?V>^K?߁>K7 L?V>^ L?V>K7 L?V>K7 L?V>^tL?>^ L?V>K7tL?>^tL?>K7tL?>K7tL?>^L?A}>^tL?>K7L?A}>^L?A}>K7L?A}>K7L?A}>^L?Pz>^L?A}>K7L?Pz>^L?Pz>K7< ?p>D֣0?p>D֣0?p>֣0?p>< ?p>< ?p>D< ?D< ?󽾬أ0?j绾أ0?j绾أ0?D< ?D< ?_d>D< ?_d>֣0?]d>֣0?]d>֣0?]d>D< ?_d>D֣0?]d>֣0?p>֣0?p>D֣0?p>D֣0?]d>D֣0?]d>E(|DE(|EJEJEJDE(|DD(|DDJDDJDJD(|D(|DY(|DY(|aHaHaHDY(|D1(|D9HD9H9H1(|1(|DqEF?DqEF?qE(|?qE(|?qE(|?DqEF?DkDF?DkD(|?DkD(|?kD(|?kDF?kDF?D*PH?D2P(|?D2P(|?2P(|?*PH?*PH?DPH?DPH?X(|?X(|?X(|?DPH?Dף?< ?< [?ף?< [?qף?qף?[?)?_qף?)?_)ף?_)ף?_)?_<?")ף?_<?"<ף?"<ף?"<?"W?֑<ף?"W?֑Wף?֑Wף?֑W?֑?Wף?֑?бף?бף?? ~?ڊбף? ~?ڊ~ף?ڊ~ף?ڊ ~?ڊ0?}=ף?ڊ}=?ڊ=?}=ף?ڊ=?=ף?=ף?=?W=?֑=ף?W=?֑W=ף?֑W=ף?֑W=?֑;=?"W=ף?֑;=?";=ף?";=ף?";=?")=?_;=ף?")=?_)=ף?_)=ף?_)=?_E=?)=ף?_E=?/=ף?/=ף?E=?=?< /=ף?=?< y=ף?< y=ף?< =?< y=ף?+y=ף?+=?< =?ҩ=?ҩ=?,y=ף?+y=ף?+=?,=?33y=ף?+=?33=?+)=?գ/=ף?E=?E=?/=ף?y=ף?+E=?y=ף?+=?+W=?*㣿;=ף? )=?գ)=?գ;=ף? )=ף?գ)=?գ)=ף?գ/=ף?W=?*㣿;=? ;=ף? ;=ף? ;=? W=?^^;=ף? W=?^^W=ף?^^W=ף?^^W=?^^=?;W=ף?^^=?;=ף?;=ף?;=?;}=?d=ף?;}=?d}=ף?d}=ף?d}=?d=?9~ף?d ~?d?;~ף?d?;бף?;бף?;?;W?^^бף?;W?^^Wף?^^Wף?^^W?^^<? Wף?^^<? <ף? <ף? <? m?*㣿<ף? m?*㣿)ף?գm?*㣿)?գ)ף?գ)ף?գ)?գ[?)ף?գ[?qף?qף?[??+qף??+ף?+?ҩ?< ף?< ף?+?+?33ף?+?33ף?< ף?< ?33?,ף?< ?,?ҩ?A`.Ӛ?A`?І?І.Ӛ?A`.Ӛ?І`w@ ?A`?A``w@ ?І`w@ ?І?A`?І`K2 ?A``w@ ?A``K2 ?І`K2 ?І`w@ ?A``w@ ?І$= ?A``K2 ?A`#9 ?І#9 ?І`K2 ?A``K2 ?І笾K2 ?A`"; ?A`笾K2 ?І笾K2 ?І"; ?A`"; ?І笾w@ ?A`笾K2 ?A`笾w@ ?І笾w@ ?І笾K2 ?A`笾K2 ?ІǪ?A`笾w@ ?A`ǪI?ІǪI?І笾w@ ?A`笾w@ ?ІӚ?A`Ǫ?A`Ӛ?ІӚ?ІǪ?A`ǪI?І"; ?A`笾K2 ?A`P ?A``K2 ?A`P ?A`笾K2 ?A``K2 ?A`笾K2 ?A``w@ ?A``w@ ?A`笾K2 ?A`笾w@ ?A``w@ ?A`笾w@ ?A`?A`Ӛ?A`b)ef?A`Ǫ?A``w@ ?І笾w@ ?І`K2 ?І`K2 ?І笾w@ ?І笾K2 ?І.Ӛ?ІRef?І?І+t?A`vӚ?A`+tI?І+tI?ІvӚ?A`vӚ?Іc w@ ?A`+t?A`c w@ ?Іc w@ ?І+t?A`+tI?Іc K2 ?A`c w@ ?A`c K2 ?Іc K2 ?Іc w@ ?A`c w@ ?ІE= ?A`c K2 ?A`D; ?ІD; ?Іc K2 ?A`c K2 ?І K2 ?A`; ?A` K2 ?І K2 ?І; ?A`= ?І w@ ?A` K2 ?A` w@ ?І w@ ?І K2 ?A` K2 ?ІI?A` w@ ?A`I?ІI?І w@ ?A` w@ ?ІvӚ?A`I?A`vӚ?ІvӚ?ІI?A`I?І; ?A` K2 ?A`  ?A`c K2 ?A`  ?A` K2 ?A`c K2 ?A` K2 ?A`c w@ ?A`c w@ ?A` K2 ?A` w@ ?A`c w@ ?A` w@ ?A`+t?A`vӚ?A`ef?A`I?A` K2 ?Іc K2 ?І w@ ?І w@ ?Іc K2 ?Іc w@ ?Іx>ؾ7q>ؾ7q>ƻ7q>ƻx>ƻx>ؾ5r>ؾĔ>ؾ7q>ؾ7q>ؾx>ؾ5r>ؾ5r>ҽ#g>ƻƘ>ƻƘ>ƻĔ>ҽ5r>ҽ#g>ƻx>ƻ7q>ƻ7q>ƻƘ>ƻ#g>ƻ5r>ؾ5r>ҽĔ>ҽĔ>ҽĔ>ؾ5r>ؾ5r>ҽ5r>ؾx>ؾx>ƻ#g>ƻ5r>ҽx>ƻ5r>ҽx>ؾĔ>ҽ7q>ؾĔ>ؾ7q>ƻ7q>ؾĔ>ҽ7q>ƻĔ>ҽƘ>ƻ6Q5 ?ҽZ1?ؾ6Q5 ?ؾZ1?ƻZ1?ؾ6Q5 ?ҽZ1?ƻ6Q5 ?ҽm%' ?ƻk=J>]?^k=J>]?zk=J>?zk=J>?zk=J>?^k=J>]?^u=J[?^u=J[?zu=J?zu=J?zu=J?^u=J[?^k=J>]?zu=J[?zu=J?zu=J?zk=J>?zk=J>]?zk=J>]?^u=J[?^u=J?^u=J?^k=J>?^k=J>]?^k=J>?^k=J>?zu=J?zu=J?zu=J?^k=J>?^k=J>]?^k=J>]?zu=J[?zu=J[?zu=J[?^k=J>]?^=ף?;}=ף?d}=ף?ڊ}=ף?ڊ=ף?=ף?;W=ף?^^=ף?;=ף?=ף?W=ף?֑W=ף?^^;=ף? W=ף?^^W=ף?֑W=ף?֑;=ף?";=ף? )=ף?գ;=ף? ;=ף?";=ף?")=ף?_)=ף?գ/=ף?)=ף?գ)=ף?_)=ף?_/=ף?/=ף?y=ף?+/=ף?/=ף?/=ף?y=ף?< y=ף?+qף?ף?+ף?< ף?< qף?qף?)ף?գqף?qף?qף?)ף?_)ף?գ<ף? )ף?գ)ף?_)ף?_<ף?"<ף? Wף?^^<ף? <ף?"<ף?"Wף?֑Wף?^^бף?;Wף?^^Wף?֑Wף?֑бף?бף?;~ף?dбף?;бף?бף?~ף?ڊ~ף?d"; ?A`P ?A`P ?ІP ?І"; ?І"; ?A`c ?A`$= ?A`#9 ?І#9 ?Іc ?Іc ?A`P ?A`c ?A`c ?Іc ?ІP ?ІP ?A``K2 ?A`$= ?A`c ?A`P ?A``K2 ?A`c ?A`Ref?A`.Ӛ?A`?A`Ǫ?A`?A`笾w@ ?A`Ǫ?A`Ref?A`?A`Ǫ?A`b)ef?A`Ref?A`Ӛ?A`Ӛ?Іb)ef?ІӚ?A`b)ef?Іb)ef?A`Ref?A`Ref?І.Ӛ?І.Ӛ?І.Ӛ?A`Ref?A`c K2 ?A`E= ?A`  ?A`  ?A`c K2 ?A`  ?A`I?A`+t?A` w@ ?A`[Bef?A`vӚ?A`+t?A`I?A`ef?A`+t?A`ef?A`[Bef?A`+t?A`= ?І  ?І K2 ?І; ?A`  ?A`= ?І  ?A`  ?І= ?І  ?A`  ?A`  ?І  ?A`  ?І  ?І  ?A`E= ?A`  ?ІE= ?A`D; ?І  ?ІvӚ?A`vӚ?Іef?ІvӚ?A`ef?Іef?A`[Bef?A`[Bef?ІvӚ?І[Bef?A`vӚ?ІvӚ?A``K2 ?Іc ?І#9 ?ІvӚ?ІI?Іef?І+tI?ІvӚ?І[Bef?Іc w@ ?І+tI?І[Bef?Іef?ІI?І w@ ?Іc w@ ?І[Bef?Іef?Іc w@ ?Іef?І w@ ?І  ?ІD; ?Іc K2 ?Іc K2 ?І K2 ?І  ?Іc K2 ?І  ?І  ?ІP ?І笾K2 ?І"; ?ІRef?І`w@ ?І?Іb)ef?І`w@ ?ІRef?І笾w@ ?І`w@ ?Іb)ef?І笾w@ ?Іb)ef?ІǪI?І笾K2 ?ІP ?Іc ?І笾K2 ?Іc ?І`K2 ?ІӚ?ІǪI?Іb)ef?ІzT(?ԬzT'\O?Ԭh'\O?Ԭh'\O?Ԭh(?ԬzT(?Ԭj@V(?+l@V'\O?+G0g'\O?+G0g'\O?+E0g(?+j@V(?+zT(?Ԭj@V(?+l@V'\O?+l@V'\O?+zT'\O?ԬzT(?ԬE0g(?+h(?Ԭh'\O?Ԭh'\O?ԬG0g'\O?+E0g(?+zT'\O?Ԭl@V'\O?+G0g'\O?+G0g'\O?+h'\O?ԬzT'\O?ԬzT(?Ԭh(?ԬE0g(?+E0g(?+j@V(?+zT(?Ԭ)(?Ԭ)&\O?ԬT.&\O?ԬT.&\O?ԬT.(?Ԭ)(?Ԭ *(?+ *&\O?+F.&\O?+F.&\O?+F.(?+ *(?+)(?Ԭ *(?+ *&\O?+ *&\O?+)&\O?Ԭ)(?Ԭ)&\O?Ԭ *&\O?+F.&\O?+F.&\O?+T.&\O?Ԭ)&\O?ԬF.(?+T.(?ԬT.&\O?ԬT.&\O?ԬF.&\O?+F.(?+)(?ԬT.(?ԬF.(?+F.(?+ *(?+)(?Ԭ\@V)\O+^@V(+90g(+90g(+70g)\O+\@V)\O+zT)\OԬzT(Ԭh(Ԭh(Ԭh)\OԬzT)\OԬzT(Ԭ^@V(+90g(+90g(+h(ԬzT(ԬzT)\OԬ\@V)\O+^@V(+^@V(+zT(ԬzT)\OԬzT)\OԬh)\OԬ70g)\O+70g)\O+\@V)\O+zT)\OԬ70g)\O+h)\OԬh(Ԭh(Ԭ90g(+70g)\O+ **\O+ *(+F.(+F.(+F.*\O+ **\O+)*\OԬ)(ԬP.(ԬP.(ԬP.*\OԬ)*\OԬ)(Ԭ *(+F.(+F.(+P.(Ԭ)(Ԭ)*\OԬ **\O+ *(+ *(+)(Ԭ)*\OԬ)*\OԬP.*\OԬF.*\O+F.*\O+ **\O+)*\OԬF.*\O+P.*\OԬP.(ԬP.(ԬF.(+F.*\O+ӣ5|ӣ1| 1| 1| 5|ӣ5|ӣgf6ʥӣG1ʥ G1ʥ G1ʥ gf6ʥӣgf6ʥ gf6ʥ 5| 1| 1| G1ʥ gf6ʥӣgf6ʥӣ5| 5| 5| gf6ʥӣgf6ʥӣgf6ʥӣG1ʥӣ1|ӣ1|ӣ5|ӣgf6ʥӣG1ʥ G1ʥ 1| 1|ӣ1|ӣG1ʥt՚A`v՚A`v՚Іv՚Іt՚Іt՚A`  A`  A`  І  І  І  A`t՚І  І  І  Іv՚Іt՚І  A`v՚A`v՚Іv՚І  І  A`t՚A`v՚A`  A`  A`  A`t՚A`t՚A`  A`  І  Іt՚Іt՚A`՚A`LgfA`LgfІLgfІ\)gfІ՚A`J A`] A`] І] ІJ ІJ A`՚A`J A`] A`] A`LgfA`՚A`] A`] ІLgfІLgfІLgfA`] A`՚A`\)gfІJ ІJ ІJ A`՚A`\)gfІLgfІ] І] ІJ І\)gfІn4 ?ZA`n4 ?ZІn4 ?q?Іn4 ?q?Іn4 ?q?A`n4 ?ZA`s%?ܽІs%?^Іn4 ?q?Іn4 ?q?Іn4 ?ZІs%?ܽІs%?ܽA`s%?ܽІn4 ?ZІn4 ?ZІn4 ?ZA`s%?ܽA`s%?ܽA`s%?^A`s%?^Іs%?^Іs%?ܽІs%?ܽA`s%?^A`n4 ?q?A`n4 ?q?Іn4 ?q?Іs%?^Іs%?^A`n4 ?ZA`n4 ?q?A`s%?^A`s%?^A`s%?ܽA`n4 ?ZA`s%?=A`n4 ??=A`n4 ??=Іn4 ??=Іs%?=Іs%?=A`n4 ??=A`n4 ?%Z=A`n4 ?%Z=Іn4 ?%Z=Іn4 ??=Іn4 ??=A`s%?=A`s%?=Іs%?;=Іs%?;=Іs%?;=A`s%?=A`s%?=Іn4 ??=Іn4 ?%Z=Іn4 ?%Z=Іs%?;=Іs%?=Іs%?;=A`s%?;=Іn4 ?%Z=Іn4 ?%Z=Іn4 ?%Z=A`s%?;=A`s%?=A`s%?;=A`n4 ?%Z=A`n4 ?%Z=A`n4 ??=A`s%?=A`}=ף?ڊ~ף?ڊ0?0?=?}=ף?ڊ}=ף?d=?90?90?9~ף?d}=ף?d}=ף?d~ף?d~ף?ڊ~ף?ڊ}=ף?ڊ}=ף?dأ0?EI h?EI أ0?Eأ0?Eh?EI h?Eأ0?AzI أ0?EI أ0?Azأ0?Azأ0?EI أ0?Eh?EI h??zI h?Eh?Eh??zI h??zh??zI أ0?AzI h??zh??zأ0?AzI أ0?AzRTo-?d;d;RTo-?뵿RTo-?뵿d;뵿RTo-?뵿뵿R$X,?뵿R$X,?뵿뵿wE8?^d>뵿R$X,?뵿wE8?^d>뵿R$X,?RR$X,?RwE8?^d>뵿wE8?^d>RR$X,?RwE8?^d>RSQ9?RSQ9?RwE8?^d>R,]?^d>RSQ9?R,]?^d>RSQ9?뵿SQ9?뵿,]?^d>R,]?^d>뵿SQ9?뵿,]?^d>뵿S8?뵿S8?뵿,]?^d>뵿 Z?^d>뵿S8?뵿 Z?^d>뵿S8?d;S8?d; Z?^d>뵿 Z?^d>d;S8?d; Z?^d>d;RTo-?d;RTo-?d; Z?^d>d;d; Z?^d>뵿,]?^d>뵿 Z?^d>d; Z?^d>d;,]?^d>뵿,]?^d>R Z?^d>d;,]?^d>Rd;d;,]?^d>RwE8?^d>Rd;wE8?^d>R뵿뵿wE8?^d>RwE8?^d>뵿RTo-?뵿R$X,?뵿RTo-?d;RTo-?d;R$X,?뵿R$X,?RRTo-?d;R$X,?RS8?d;S8?d;R$X,?RSQ9?RS8?d;SQ9?RS8?뵿S8?뵿SQ9?RSQ9?뵿>D;?Vdd;6n-d;>D;?Vd뵿>D;?Vd뵿6n-d;6n-뵿>D;?Vd뵿6n-뵿yE8?Vd뵿yE8?Vd뵿6n-뵿6%X,뵿yE8?Vd뵿6%X,뵿yE8?VdRyE8?VdR6%X,뵿6%X,RyE8?VdR6%X,R.]?VdR.]?VdR6%X,R5Q9R.]?VdR5Q9R.]?Vd뵿.]?Vd뵿5Q9R5Q9뵿.]?Vd뵿5Q9뵿Z?Vd뵿Z?Vd뵿5Q9뵿5"8뵿Z?Vd뵿5"8뵿Z?Vdd;Z?Vdd;5"8뵿5"8d;Z?Vdd;5"8d;>D;?Vdd;>D;?Vdd;5"8d;6n-d;5"8뵿5Q9뵿5"8d;5"8d;5Q9뵿5Q9R5"8d;5Q9R6n-d;6n-d;5Q9R6%X,R6n-d;6%X,R6n-뵿6n-뵿6%X,R6%X,뵿>D;?Vd뵿yE8?Vd뵿>D;?Vdd;>D;?Vdd;yE8?Vd뵿yE8?VdR>D;?Vdd;yE8?VdRZ?Vdd;Z?Vdd;yE8?VdR.]?VdRZ?Vdd;.]?VdRZ?Vd뵿Z?Vd뵿.]?VdR.]?Vd뵿 P03S?6P03S?.ŵP03S?P03S?.ŵ P03S?6ObP03S?ٵ!D03S?-D03S?O1D03S?/f#P03S?浿ObP03S?ٵ ׷4?t> ׷d?t>뵿d?t>뵿4?t> ׷4?t>뵿g?O> ׷d?t> ׷g?O>뵿g?O>뵿d?t> ׷d?t>뵿g?kf> ׷g?O> ׷g?kf>뵿g?kf>뵿g?O> ׷g?O>뵿d?A> ׷g?kf> ׷d?A>뵿d?A>뵿g?kf> ׷g?kf>뵿4?A> ׷d?A> ׷4?A>뵿4?A>뵿d?A> ׷d?A>뵿1?jf> ׷4?A> ׷1?jf>뵿1?jf>뵿4?A> ׷4?A>뵿1?O> ׷1?jf> ׷1?O>뵿1?O>뵿1?jf> ׷1?jf>뵿4?t> ׷1?O> ׷4?t>뵿4?t>뵿1?O> ׷1?O>뵿1?jf> ׷1?O> ׷4?A> ׷4?A> ׷1?O> ׷4?t> ׷4?A> ׷4?t> ׷d?A> ׷d?A> ׷4?t> ׷d?t> ׷d?A> ׷d?t> ׷g?kf> ׷g?kf> ׷d?t> ׷g?O> ׷g?kf>뵿g?O>뵿d?A>뵿d?A>뵿g?O>뵿d?t>뵿d?A>뵿d?t>뵿4?A>뵿4?A>뵿d?t>뵿4?t>뵿4?A>뵿4?t>뵿1?jf>뵿1?jf>뵿4?t>뵿1?O>뵿e_?ñe_> ?ñ)Z;?z)Z;?ze_> ?ñ'Z;> ?z)Z;?z'Z;> ?zشT?k!شT?k!'Z;> ?zִT> ?k!8?.8> ?.*?.*?.8> ?.*> ?.8?.*?.8?Z !8?Z !*?.m?ztj?z)Z;?zشT?k!e_?ñ)Z;?ztj?z8> ?Z !m> ?z8> ?.8> ?.m> ?z*> ?.'Z;> ?ztj> ?zִT> ?k!tj> ?z'Z;> ?ze_> ?ñ/\fz?.\fQ?'fQ?</\fz?'fQ?<'fz?<'fz?<'fQ?<~ueQ?['fz?<~ueQ?[uez?[uez?[~ueQ?[ddQ? cuez?[ddQ? cddz? cddz? cddQ? cYcQ?<ddz? cYcQ?<Zcz?<Zcz?<YcQ?<oRaQ? Zcz?<oRaQ? pRaz? pRaz? oRaQ? p_Q?ڰ pRaz? p_Q?ڰ p_z?ڰ p_z?ڰ p_Q?ڰ B]Q?: p_z?ڰ B]Q?: C]z?: C]z?: B]Q?: [Q? C]z?: [Q? [z? [z? [Q? YQ? [z? YQ? Yz? Yz? YQ? dXQ?GFYz? dXQ?GFdXz?GFdXz?GFdXQ?GF:P0>Yc>PYc>P0>L?Yc>PL?)I_>`0>] >PW]b>/0>W]b>/a:>a:>W]b>/N].8>#̤a:>N].8>#̤Ө-^>`OӨ-^>`ON].8>#̤(]K>.Ө-^>`O(]K>.>>(]K>.b^x>a>b^x>a9y+>M9y+>Mb^x>aT^Ø>r9y+>MT^Ø>rc2>c2>T^Ø>r^>Ř>qc2>^>Ř>qNJ?>8ц>z>^ܚ3>8ц>^ܚ3>8 >8ц>8 >63>8ц>63>z>8ц>z>ꕿ >8ц>ꕿ >#`I>8ц>#`I>8>8ц>8>jц>8ц>jц>h>8ц>h>#!b?8ц>#!b?ꕿĀ?8ц>ꕿĀ?!?8ц>!?6'?8ц>6'?8ـ?8ц>8ـ?^ܚ'?8ц>^ܚ'?!?8ц>!?'Ā?8ц>'Ā?M!b?8ц>M!b?`{h>8ц>`{h>񧞿ц>8ц>񧞿ц>`{8>8ц>`{8>M`I>8ц>M`I>' >8ц>' >z>8,8>X9ꕿ >X9z>X98,8>X9z>X963>X98,8>X963>X98 >X98,8>X98 >X9^ܚ3>X98,8>X9^ܚ3>X9z>X98,8>X9z>X9' >X98,8>X9' >X9M`I>X98,8>X9M`I>X9`{8>X98,8>X9`{8>X9񧞿ц>X98,8>X9񧞿ц>X9`{h>X98,8>X9`{h>X9M!b?X98,8>X9M!b?X9'Ā?X98,8>X9'Ā?X9!?X98,8>X9!?X9^ܚ'?X98+9?X98ـ?X98,8>X98,8>X98ـ?X96'?X98,8>X96'?X9!?X98,8>X9!?X9ꕿĀ?X98,8>X9ꕿĀ?X9#!b?X98,8>X9#!b?X9h>X98,8>X9h>X9jц>X98,8>X9jц>X98>X98,8>X98>X9#`I>X98,8>X9#`I>X9ꕿ >X9`{8>M`I>X9M`I>M`I>M`I>X9' >X9M`I>' >X9' >' >' >X9z>X9' >z>X9z>z>z>X9^ܚ3>X9z>^ܚ3>X9^ܚ3>^ܚ3>^ܚ3>X98 >X9^ܚ3>8 >X98 >8 >8 >X963>X98 >63>X963>63>63>X9z>X963>z>X9z>z>z>X9ꕿ >X9z>ꕿ >X9ꕿ >ꕿ >ꕿ >X9#`I>X9ꕿ >#`I>X9#`I>#`I>#`I>X98>X9#`I>8>X98>8>8>X9jц>X98>jц>X9jц>jц>jц>X9h>X9jц>h>X9h>h>h>X9#!b?X9h>#!b?X9#!b?#!b?#!b?X9ꕿĀ?X9#!b?ꕿĀ?X9ꕿĀ?ꕿĀ?ꕿĀ?X9!?X9ꕿĀ?!?X9!?!?!?X96'?X9!?6'?X96'?6'?6'?X98ـ?X96'?8ـ?X98ـ?8ـ?8ـ?X9^ܚ'?X98ـ?^ܚ'?X9^ܚ'?^ܚ'?^ܚ'?X9!?X9^ܚ'?!?X9!?!?!?X9'Ā?X9!?'Ā?X9'Ā?'Ā?'Ā?X9M!b?X9'Ā?M!b?X9M!b?M!b?M!b?X9`{h>X9M!b?`{h>X9`{h>`{h>`{h>X9񧞿ц>X9`{h>񧞿ц>X9񧞿ц>񧞿ц>񧞿ц>X9`{8>X9񧞿ц>`{8>X9`{8>`{8>`{8>X9M`I>X98ц>8,8>X98+9?X9ʝ>>>X9>X9>IĜB>X9IĜB>X9>IĜB>IĜB>X9IĜB>MN>X9MN>X9IĜB>MN>MN>X9MN>{>X9MN>{>{>X9{>X9{>>{>X9>>X9>X9>W>>X9W>W>X9W>X9W>i\Y7>X9i\Y7>X9W>i\Y7>i\Y7>X9i\Y7>+K>X9+K>X9i\Y7>+K>+K>X9+K> fn>X9 fn>X9+K> fn> fn>X9 fn>G{>X9 fn>G{>G{>X9G{>X9G{> Y>G{>X9 Y> Y>X9 Y>X9 Y>p> Y>X9p>p>X9p>X9p>>p>X9>>X9>X9>̓8>X9̓8>X9>̓8>̓8>X9̓8>쐓T>X9쐓T>X9̓8>쐓T>쐓T>X9쐓T>O>X9쐓T>O>O>X9O>X9O>m;>O>X9m;>m;>X9m;>X9m;>m>j>m;>X9m>j>m>j>X9m>j>X9m>j>r>m>j>X9r>r>X9r>X9r>>X9>X9r>>>X9>xۑ!>X9>xۑ!>xۑ!>X9xۑ!>X9xۑ!>y>xۑ!>X9y>y>X9y>X9y>[/ĵ?y>X9[/ĵ?[/ĵ?X9[/ĵ?X9[/ĵ?%?[/ĵ?X9%?%?X9%?X9%?Ⓙ}?X9Ⓙ}?X9%?Ⓙ}?Ⓙ}?X9Ⓙ}?2l?X9Ⓙ}?2l?2l?X92l?X92l?K?2l?X9K?K?X9K?X9K?v͔[ ?K?X9v͔[ ?v͔[ ?X9v͔[ ?X9v͔[ ?"ȕ ?v͔[ ?X9"ȕ ?"ȕ ?X9"ȕ ?X9"ȕ ? ?X9 ?X9"ȕ ? ? ?X9 ?ٖ ?X9 ?ٖ ?ٖ ?X9ٖ ?X9ٖ ?oM ?ٖ ?X9oM ?oM ?X9oM ?X9oM ?$S ?oM ?X9$S ?$S ?X9$S ?X9$S ?Q ?$S ?X9Q ?Q ?X9Q ?X9Q ?5g ?X95g ?X9Q ?5g ?5g ?X95g ?y ?X95g ?y ?y ?X9y ?X9y ?i[ ?y ?X9i[ ?i[ ?X9i[ ?X9i[ ?РB ?i[ ?X9РB ?РB ?X9РB ?X9РB ?P0?РB ?X9P0?P0?X9P0?X9P0?e/?P0?X9e/?e/?X9e/?X9e/?Ղ?X9Ղ?X9e/?Ղ?Ղ?X9Ղ?IWG?X9Ղ?IWG?IWG?X9IWG?X9IWG?BA/?IWG?X9BA/?BA/?X9BA/?X9BA/??BA/?X9??X9?X9?wp7>X9wp7>X9?wp7>wp7>X9wp7>o/ D>X9o/ D>X9wp7>o/ D>o/ D>X9o/ D> 3.>X9 3.>X9o/ D> 3.> 3.>X9 3.>^3ϐ>X9 3.>^3ϐ>^3ϐ>X9^3ϐ>X9^3ϐ> >^3ϐ>X9 > >X9 >X9 >g> >X9g>g>X9g>X9g>/*>g>X9/*>/*>X9/*>X9/*>Dž I>Dž I>X9Dž I>>>X9>ʝ>>X9ʝ>ʝ>X9ʝ>X9ʝ>>X9d_>Ǿfqo>ǾϠqi>_Ⱦd_>ǾϠqi>_Ⱦd>_Ⱦd>_ȾϠqi>_Ⱦqᤗ>,ɾd>_Ⱦqᤗ>,ɾԤd݌>,ɾԤd݌>,ɾqᤗ>,ɾqW>+ɾԤd݌>,ɾqW>+ɾd̑>+ɾd̑>+ɾqW>+ɾXqG>ʾd̑>+ɾXqG>ʾvd5>ʾeʊ>Y˾r >Y˾uq˾eʊ>Y˾uq˾@:e >uq˾@:e >uq˾uq˾drP>NS˾@:e >uq˾drP>NS˾:beM>NS˾:beM>NS˾drP>NS˾ψr]b>kʾ:beM>NS˾ψr]b>kʾEe>kʾEe>kʾψr]b>kʾEr˒>}ʾEe>kʾEr˒>}ʾe>}ʾe>}ʾEr˒>}ʾܿrIX>4ɾe>}ʾܿrIX>4ɾe>4ɾe>4ɾܿrIX>4ɾFr>ɾe>4ɾFr>ɾdeK>ɾdeK>ɾFr>ɾr:>DȾdeK>ɾr:>DȾez5>DȾez5>DȾr:>DȾr>wǾez5>DȾr>wǾeP>wǾeP>wǾr>wǾ=rd>ƾeP>wǾ=rd>ƾ[eT>ƾ[eT>ƾ=rd>ƾVrܒ>ƾ[eT>ƾVrܒ>ƾte>ƾte>ƾVrܒ>ƾ8rVw>Nžte>ƾ8rVw>NžVeF>NžVeF>Nž8rVw>Nž_r*>IžVeF>Nž_r*>Iž\ec>Iž\ec>Iž_r*>Iž7rE>`2ž\ec>Iž7rE>`2ž5e3#>`2ž5e3#>`2ž7rE>`2ž9rR>Pž5e3#>`2ž9rR>PžWe>PžWe>Pž9rR>PžqEY>hžWe>PžqEY>hžd>hžd>hžqEY>hžqR>+&ƾd>hžqR>+&ƾ/d@*>+&ƾqE> ˾q4>K;r >Y˾r >Y˾q4>K;'r>£;r >Y˾'r>£;uq˾uq˾'r>£;Srd>;uq˾Srd>;drP>NS˾drP>NS˾Srd>;Srl8>d;drP>NS˾Srl8>d;ψr]b>kʾψr]b>kʾSrl8>d;Xr{&>̾ψr]b>kʾXr{&>̾Er˒>}ʾEr˒>}ʾXr{&>̾r;>˾Er˒>}ʾr;>˾ܿrIX>4ɾܿrIX>4ɾr;>˾2 s>bʾܿrIX>4ɾ2 s>bʾFr>ɾFr>ɾ2 s>bʾr8s>ɾFr>ɾr8s>ɾr:>DȾr:>DȾr8s>ɾAs>sȾr:>DȾAs>sȾr>wǾr>wǾAs>sȾ;s:>)Ǿr>wǾ;s:>)Ǿ=rd>ƾ=rd>ƾ;s:>)Ǿ&s%j>nž=rd>ƾ&s%j>nžVrܒ>ƾVrܒ>ƾ&s%j>nž]s>ľVrܒ>ƾ]s>ľ8rVw>Nž]s>ľr^>þ8rVw>Nž8rVw>Nžr^>þȝr>Wþ8rVw>Nžȝr>Wþ_r*>Iž_r*>Ižȝr>Wþ.`r&>þ_r*>Iž.`r&>þ7rE>`2ž7rE>`2ž.`r&>þ r_X>7¾7rE>`2ž r_X>7¾9rR>Pž9rR>Pž r_X>7¾q>>þ9rR>Pžq>>þqEY>hžqEY>hžq>>þqv>þqEY>hžqv>þqR>+&ƾqR>+&ƾqv>þ~yq>ľqR>+&ƾ~yq>ľxqXc>ƾxqXc>ƾ~yq>ľ#Tq5>#žxqXc>ƾ#Tq5>#žfqo>Ǿfqo>Ǿ#Tq5>#ž;qO>(ƾfqo>Ǿ;qO>(ƾϠqi>_ȾϠqi>_Ⱦ;qO>(ƾ2qՙ>/ȾϠqi>_Ⱦ2qՙ>/Ⱦqᤗ>,ɾqᤗ>,ɾ2qՙ>/ȾC9q>#zɾqᤗ>,ɾC9q>#zɾqW>+ɾqW>+ɾC9q>#zɾfʾqW>+ɾfʾXqG>ʾXqG>ʾfʾpq>F˾XqG>ʾpq>F˾qE> ˾qE> ˾pq>F˾qɗ>̾qE> ˾qɗ>̾q4>K;NmI->ɾ2 s>bʾQ6m>bʾQ6m>bʾ2 s>bʾr;>˾Q6m>bʾr;>˾mU>˾mU>˾r;>˾Xr{&>̾mU>˾Xr{&>̾wl @>̾wl @>̾Xr{&>̾Srl8>d;wl @>̾Srl8>d;lR>d;lR>d;Srl8>d;Srd>;lR>d;Srd>;il7~>;il7~>;Srd>;'r>£;il7~>;'r>£;F*l>£;F*l>£;'r>£;q4>K;F*l>£;q4>K;Skב>K;Skב>K;q4>K;qɗ>̾kē>F˾pq>F˾fʾkē>F˾fʾ[dkql>fʾ[dkql>fʾfʾC9q>#zɾ[dkql>fʾC9q>#zɾbOk^є>#zɾbOk^є>#zɾC9q>#zɾ2qՙ>/ȾbOk^є>#zɾ2qՙ>/Ⱦ{Ik>/Ⱦ{Ik>/Ⱦ2qՙ>/Ⱦ;qO>(ƾ{Ik>/Ⱦ;qO>(ƾRk”>(ƾRk”>(ƾ;qO>(ƾ#Tq5>#žRk”>(ƾ#Tq5>#ž@jkO>#ž@jkO>#ž#Tq5>#ž~yq>ľ@jkO>#ž~yq>ľk>ľk>ľ~yq>ľqv>þk>ľqv>þkk>þkk>þqv>þq>>þkk>þq>>þk+>>þk+>>þq>>þ r_X>7¾k+>>þ r_X>7¾a7lRs>7¾a7lRs>7¾ r_X>7¾.`r&>þa7lRs>7¾.`r&>þKvl@>þKvl@>þ.`r&>þȝr>WþKvl@>þȝr>Wþld>Wþld>Wþȝr>Wþr^>þld>Wþr^>þl >þl >þr^>þ]s>ľl >þ]s>ľzm,>ľzm,>ľ]s>ľ&s%j>nžzm,>ľ&s%j>nžnž&s%j>nž;s:>)Ǿnž;s:>)ǾQm>)ǾQm>)Ǿ;s:>)ǾAs>sȾQm>)ǾAs>sȾWm>sȾWm>sȾAs>sȾr8s>ɾWm>sȾr8s>ɾNmI->ɾNmI->ɾr8s>ɾ2 s>bʾF*l>£;=l?Q>ξil7~>;il7~>;=l?Q>ξl> ξil7~>;l> ξlR>d;lR>d;l> ξl>=ξlR>d;l>=ξwl @>̾wl @>̾l>=ξ*m|>*;wl @>̾*m|>*;mU>˾mU>˾*m|>*;9m5>̾mU>˾9m5>̾Q6m>bʾQ6m>bʾ9m5>̾:bm͊>n˾Q6m>bʾ:bm͊>n˾NmI->ɾNmI->ɾ:bm͊>n˾}mJ>[ʾNmI->ɾ}mJ>[ʾWm>sȾWm>sȾ}mJ>[ʾm>ȾWm>sȾm>ȾQm>)ǾQm>)Ǿm>Ⱦm3#>CǾQm>)Ǿm3#>CǾnžm3#>CǾrmD>SžnžrmD>Sžzm,>ľzm,>ľrmD>SžPm$>ľzm,>ľPm$>ľl >þPm$>ľ!m=>þl >þl >þ!m=>þl>¾l >þl>¾ld>Wþld>Wþl>¾lP> -¾ld>WþlP> -¾Kvl@>þKvl@>þlP> -¾bl>$Kvl@>þbl>$a7lRs>7¾a7lRs>7¾bl>$*l&>¾a7lRs>7¾*l&>¾k+>>þk+>>þ*l&>¾k7>f¾k+>>þk7>f¾kk>þkk>þk7>f¾gka>]þkk>þgka>]þk>ľk>ľgka>]þfk^>' ľk>ľfk^>' ľ@jkO>#ž@jkO>#žfk^>' ľX>k">4ž@jkO>#žX>k">4žRk”>(ƾRk”>(ƾX>k">4žz#k>zƾRk”>(ƾz#k>zƾ{Ik>/Ⱦ{Ik>/Ⱦz#k>zƾk`ߕ>Ǿ{Ik>/Ⱦk`ߕ>ǾbOk^є>#zɾbOk^є>#zɾk`ߕ>Ǿk͕>_ɾbOk^є>#zɾk͕>_ɾ[dkql>fʾ[dkql>fʾk͕>_ɾ.ko>ʾ[dkql>fʾ.ko>ʾkē>F˾kē>F˾.ko>ʾ Pkn͔>̾Xe>;~k>; Pkn͔>̾Xe>; Pkn͔>̾fe>̾fe>̾ Pkn͔>̾.ko>ʾfe>̾.ko>ʾDe느>ʾDe느>ʾ.ko>ʾk͕>_ɾDe느>ʾk͕>_ɾ1e>_ɾ1e>_ɾk͕>_ɾk`ߕ>Ǿ1e>_ɾk`ߕ>Ǿ-e>Ǿ-e>Ǿk`ߕ>Ǿz#k>zƾ-e>Ǿz#k>zƾ9eX>zƾ}ew>' ľfk^>' ľgka>]þ}ew>' ľgka>]þ-ez>]þ-ez>]þgka>]þk7>f¾-ez>]þk7>f¾e)Q>f¾e)Q>f¾k7>f¾*l&>¾e)Q>f¾*l&>¾I3f >¾I3f >¾*l&>¾bl>$I3f >¾bl>$hyf>$hyf>$bl>$lP> -¾hyf>$lP> -¾8fk> -¾8fk> -¾lP> -¾l>¾8fk> -¾l>¾fq2>¾fq2>¾l>¾!m=>þfq2>¾!m=>þ8g/>þ8g/>þ!m=>þPm$>ľ8g/>þPm$>ľfg=>ľfg=>ľPm$>ľrmD>Sžfg=>ľrmD>Sžg际>Sžg际>SžrmD>Sžm3#>CǾg际>Sžm3#>CǾg<>CǾg<>CǾm3#>CǾm>Ⱦg<>CǾm>Ⱦg+>Ⱦg+>Ⱦm>Ⱦ}mJ>[ʾg+>Ⱦ}mJ>[ʾߓg{e>[ʾߓg{e>[ʾ}mJ>[ʾ:bm͊>n˾ߓg{e>[ʾ:bm͊>n˾yg>>n˾yg>>n˾:bm͊>n˾9m5>̾yg>>n˾9m5>̾Og)>̾Og)>̾9m5>̾*m|>*;Og)>̾*m|>*;Ig >*;Ig >*;*m|>*;l>=ξIg >*;l>=ξfӈ>=ξfӈ>=ξl>=ξl> ξfӈ>=ξl> ξ-f> ξ-f> ξl> ξ=l?Q>ξ-f> ξ=l?Q>ξTf3l>ξߓg{e>[ʾeǯ>*eɾg+>Ⱦg+>Ⱦeǯ>*eɾed>Ⱦg+>Ⱦed>Ⱦg<>CǾg<>CǾed>Ⱦe/>bǾg<>CǾe/>bǾg际>Sžg际>Sže/>bǾe<φ>]ƾg际>Sže<φ>]ƾfg=>ľfg=>ľe<φ>]ƾe1>ƾfg=>ľe1>ƾ8g/>þ8g/>þe1>ƾe>vž8g/>þe>vžfq2>¾fq2>¾e>vžae]>dľfq2>¾ae]>dľ8fk> -¾8fk> -¾ae]>dľle!>2ľ8fk> -¾le!>2ľhyf>$hyf>$le!>2ľlCe>0|ľhyf>$lCe>0|ľI3f >¾I3f >¾lCe>0|ľeԬ>ľI3f >¾eԬ>ľe)Q>f¾e)Q>f¾eԬ>ľ0doq>Fľe)Q>f¾0doq>Fľ-ez>]þ-ez>]þ0doq>Fľ}d#>q.ž-ez>]þ}d#>q.ž}ew>' ľ}ew>' ľ}d#>q.ž d>>ž}ew>' ľ d>>žUe=>4žUe=>4ž d>>žʓd1>sƾUe=>4žʓd1>sƾ9eX>zƾ9eX>zƾʓd1>sƾfd >>Ǿ9eX>zƾfd >>Ǿ-e>Ǿ-e>Ǿfd >>Ǿ1|dm>>Ⱦ-e>Ǿ1|dm>>Ⱦ1e>_ɾ1e>_ɾ1|dm>>Ⱦ(~d>"Ⱦ1e>_ɾ(~d>"ȾDe느>ʾDe느>ʾ(~d>"Ⱦd_>xɾDe느>ʾd_>xɾfe>̾fe>̾d_>xɾFdF>%ʾfe>̾FdF>%ʾXe>;Xe>;FdF>%ʾtdEv>M-˾Tf3l>ξ2e>̾#-e%M>'̾Tf3l>ξ#-e%M>'̾-f> ξ-f> ξ#-e%M>'̾We>̾-f> ξWe>̾fӈ>=ξfӈ>=ξWe>̾e>˾fӈ>=ξe>˾Ig >*;Ig >*;e>˾ken >cu˾Ig >*;ken >cu˾Og)>̾Og)>̾ken >cu˾ebt>ʾOg)>̾ebt>ʾyg>>n˾yg>>n˾ebt>ʾel>T0ʾyg>>n˾el>T0ʾߓg{e>[ʾߓg{e>[ʾel>T0ʾeǯ>*eɾeP>wǾe/>bǾez5>DȾez5>DȾe/>bǾed>Ⱦez5>DȾed>ȾdeK>ɾdeK>ɾed>Ⱦeǯ>*eɾdeK>ɾeǯ>*eɾe>4ɾe>4ɾeǯ>*eɾel>T0ʾe>4ɾel>T0ʾe>}ʾe>}ʾel>T0ʾebt>ʾe>}ʾebt>ʾEe>kʾd̑>+ɾd_>xɾԤd݌>,ɾԤd݌>,ɾd_>xɾ(~d>"ȾԤd݌>,ɾ(~d>"Ⱦd>_Ⱦd>_Ⱦ(~d>"Ⱦ1|dm>>Ⱦd>_Ⱦ1|dm>>Ⱦd_>Ǿd_>Ǿ1|dm>>Ⱦfd >>Ǿd_>Ǿfd >>Ǿd>ƾd>ƾfd >>Ǿʓd1>sƾd>ƾʓd1>sƾ/d@*>+&ƾ/d@*>+&ƾʓd1>sƾ d>>ž/d@*>+&ƾ d>>žd>hžd>hž d>>ž}d#>q.žd>hž}d#>q.žWe>Pžebt>ʾken >cu˾Ee>kʾEe>kʾken >cu˾e>˾Ee>kʾe>˾:beM>NS˾:beM>NS˾e>˾We>̾:beM>NS˾We>̾@:e >uq˾@:e >uq˾We>̾#-e%M>'̾@:e >uq˾#-e%M>'̾eʊ>Y˾eʊ>Y˾#-e%M>'̾2e>̾eʊ>Y˾2e>̾d~> ˾d~> ˾2e>̾dы>q˾d~> ˾dы>q˾vd5>ʾvd5>ʾdы>q˾tdEv>M-˾vd5>ʾtdEv>M-˾d̑>+ɾd̑>+ɾtdEv>M-˾FdF>%ʾd̑>+ɾFdF>%ʾd_>xɾ}d#>q.ž0doq>FľWe>PžWe>Pž0doq>FľeԬ>ľWe>PžeԬ>ľ5e3#>`2ž5e3#>`2žeԬ>ľlCe>0|ľ5e3#>`2žlCe>0|ľ\ec>Iž\ec>IžlCe>0|ľle!>2ľ\ec>Ižle!>2ľVeF>NžVeF>Nžle!>2ľae]>dľVeF>Nžae]>dľte>ƾte>ƾae]>dľe>vžte>ƾe>vž[eT>ƾ[eT>ƾe>vže1>ƾ[eT>ƾe1>ƾeP>wǾeP>wǾe1>ƾe<φ>]ƾeP>wǾe<φ>]ƾe/>bǾ0Ŀ|?¾-0Ŀj?ĿS[ ?T+þĿS[ ?T+þ-0Ŀj?Ŀ~ ?0¾ĿS[ ?T+þĿ~ ?0¾ÿ ?rþÿ ?rþĿ~ ?0¾ÿH2 ?¾ÿ ?rþÿH2 ?¾ÿs ?2ľÿs ?2ľÿH2 ?¾ÿ ?þÿs ?2ľÿ ?þÿ ?.žÿ ?.žÿ ?þϪÿ> ?Ižÿ ?.žϪÿ> ?Ižÿ# ? Ǿÿ# ? ǾϪÿ> ?Ižcÿ ?ƾÿ# ? Ǿcÿ ?ƾ\ÿ- ?zȾ\ÿ- ?zȾcÿ ?ƾ!ÿk ?hȾ\ÿ- ?zȾ!ÿk ?hȾÿO ?ɾÿO ?ɾ!ÿk ?hȾÿNy ?w(ʾÿO ?ɾÿNy ?w(ʾÿ ?o%˾ÿ ?o%˾ÿNy ?w(ʾeÿ( ?˾ÿ ?o%˾eÿ( ?˾ÿKX ?O;̾ÿKX ?O;̾eÿ( ?˾Hÿ ?̾ÿKX ?O;̾Hÿ ?̾ÿ ?T;ÿ ?T;Hÿ ?̾ÿ ?;ÿ ?T;ÿ ?;Ŀ6 ?y;Ŀ6 ?y;ÿ ?;ĿR ?ξĿ6 ?y;ĿR ?ξ8Ŀy?ܰ;8Ŀy?ܰ;ĿR ?ξ9Ŀ2?ξ8Ŀy?ܰ;9Ŀ2?ξZĿ?x;ZĿ?x;9Ŀ2?ξaĿ?rξZĿ?x;aĿ?rξ;zĿ?V?d̾;zĿ?V?d̾aĿ?rξVĿ?7;;zĿ?V?d̾VĿ?7;ŔĿ?̾ŔĿ?̾VĿ?7;Ŀ}?3̾ŔĿ?̾Ŀ}?3̾èĿt?ʾèĿt?ʾĿ}?3̾ Ŀ ?Y˾èĿt?ʾ Ŀ ?Y˾Ŀ9?΍ɾĿ9?΍ɾ Ŀ ?Y˾uĿ?ɾĿ9?΍ɾuĿ?ɾ}Ŀo)?I)Ⱦ}Ŀo)?I)ȾuĿ?ɾdĿ1?l!Ⱦ}Ŀo)?I)ȾdĿ1?l!ȾĿC?ƾĿC?ƾdĿ1?l!ȾĿ?zƾĿC?ƾĿ?zƾӤĿ·?g~žӤĿ·?g~žĿ?zƾ!Ŀ ?ľӤĿ·?g~ž!Ŀ ?ľ3Ŀ?hľ3Ŀ?hľ!Ŀ ?ľ=Ŀ?*þ3Ŀ?hľ=Ŀ?*þYsĿw?þYsĿw?þ=Ŀ?*þ%Ŀ=?Ѯ¾YsĿw?þ%Ŀ=?Ѯ¾;SĿU?]þ;SĿU?]þ%Ŀ=?Ѯ¾XĿ?¾;SĿU?]þXĿ?¾0Ŀ|?¾0Ŀ|?¾XĿ?¾-0Ŀj?Pm">΍ɾm6>ɾH8mØ>ʾH8mØ>ʾm6>ɾ1dmÊ>Y˾H8mØ>ʾ1dmÊ>Y˾NmZ>̾NmZ>̾1dmÊ>Y˾Z4m>3̾NmZ>̾Z4m>3̾9l[>d̾9l[>d̾Z4m>3̾pl܌>7;9l[>d̾pl܌>7;Nll>x;Nll>x;pl܌>7;lD>rξNll>x;lD>rξ&Xlҏ>ܰ;&Xlҏ>ܰ;lD>rξZlˏ>ξ&Xlҏ>ܰ;Zlˏ>ξlh>y;lh>y;Zlˏ>ξ1lT>ξlh>y;1lT>ξk S>T;k S>T;1lT>ξ,kŒ>;k S>T;,kŒ>;k_>O;̾k_>O;̾,kŒ>;Tyk5>̾k_>O;̾Tyk5>̾'pku1>o%˾'pku1>o%˾Tyk5>̾Ek>˾'pku1>o%˾Ek>˾Skƹ>ɾSkƹ>ɾEk>˾!$kơ>w(ʾSkƹ>ɾ!$kơ>w(ʾ{Ik>zȾ{Ik>zȾ!$kơ>w(ʾk>hȾ{Ik>zȾk>hȾ Pkn͔> Ǿ Pkn͔> Ǿk>hȾk]>ƾ Pkn͔> Ǿk]>ƾIhkxW>.žIhkxW>.žk]>ƾaIžIhkxW>.žaIžk{>2ľk{>2ľaIž7lkmF>þk{>2ľ7lkmF>þk>rþk>rþ7lkmF>þɫk>¾k>rþɫk>¾le>T+þle>T+þɫk>¾kG>0¾le>T+þkG>0¾kHl!>¾kHl!>¾kG>0¾Gl%>kHl!>¾Gl%>;lӎ>]þ;lӎ>]þGl%>`lǜ>¾;lӎ>]þ`lǜ>¾ul~>þul~>þ`lǜ>¾ l&+>Ѯ¾ul~>þ l&+>Ѯ¾*m|>hľ*m|>hľ l&+>Ѯ¾>'m>*þ*m|>hľ>'m>*þj0mƾ>g~žj0mƾ>g~ž>'m>*þ[m>ľj0mƾ>g~ž[m>ľLms6>ƾLms6>ƾ[m>ľq|muN>zƾLms6>ƾq|muN>zƾWm>I)ȾWm>I)Ⱦq|muN>zƾm>l!ȾWm>I)Ⱦm>l!ȾPm">΍ɾPm">΍ɾm>l!Ⱦm6>ɾĿR ?ξ1lT>ξZlˏ>ξĿR ?ξZlˏ>ξ9Ŀ2?ξ9Ŀ2?ξZlˏ>ξlD>rξ9Ŀ2?ξlD>rξaĿ?rξaĿ?rξlD>rξpl܌>7;aĿ?rξpl܌>7;VĿ?7;VĿ?7;pl܌>7;Z4m>3̾VĿ?7;Z4m>3̾Ŀ}?3̾Ŀ}?3̾Z4m>3̾1dmÊ>Y˾Ŀ}?3̾1dmÊ>Y˾ Ŀ ?Y˾ Ŀ ?Y˾1dmÊ>Y˾m6>ɾ Ŀ ?Y˾m6>ɾuĿ?ɾuĿ?ɾm6>ɾm>l!ȾuĿ?ɾm>l!ȾdĿ1?l!ȾdĿ1?l!Ⱦm>l!Ⱦq|muN>zƾdĿ1?l!Ⱦq|muN>zƾĿ?zƾĿ?zƾq|muN>zƾ[m>ľĿ?zƾ[m>ľ!Ŀ ?ľ!Ŀ ?ľ[m>ľ>'m>*þ!Ŀ ?ľ>'m>*þ=Ŀ?*þ=Ŀ?*þ>'m>*þ l&+>Ѯ¾=Ŀ?*þ l&+>Ѯ¾%Ŀ=?Ѯ¾%Ŀ=?Ѯ¾ l&+>Ѯ¾`lǜ>¾%Ŀ=?Ѯ¾`lǜ>¾XĿ?¾XĿ?¾`lǜ>¾Gl%>XĿ?¾Gl%>-0Ŀj?-0Ŀj?Gl%>kG>0¾-0Ŀj?kG>0¾Ŀ~ ?0¾Ŀ~ ?0¾kG>0¾ɫk>¾Ŀ~ ?0¾ɫk>¾ÿH2 ?¾ÿH2 ?¾ɫk>¾7lkmF>þÿH2 ?¾7lkmF>þÿ ?þÿ ?þ7lkmF>þaIžÿ ?þaIžϪÿ> ?IžϪÿ> ?IžaIžk]>ƾϪÿ> ?Ižk]>ƾcÿ ?ƾcÿ ?ƾk]>ƾk>hȾcÿ ?ƾk>hȾ!ÿk ?hȾ!ÿk ?hȾk>hȾ!$kơ>w(ʾ!ÿk ?hȾ!$kơ>w(ʾÿNy ?w(ʾÿNy ?w(ʾ!$kơ>w(ʾEk>˾ÿNy ?w(ʾEk>˾eÿ( ?˾eÿ( ?˾Ek>˾Tyk5>̾eÿ( ?˾Tyk5>̾Hÿ ?̾ÿ ?T;Ŀ6 ?y;lh>y;lh>y;Ŀ6 ?y;8Ŀy?ܰ;lh>y;8Ŀy?ܰ;&Xlҏ>ܰ;&Xlҏ>ܰ;8Ŀy?ܰ;ZĿ?x;&Xlҏ>ܰ;ZĿ?x;Nll>x;Nll>x;ZĿ?x;;zĿ?V?d̾Nll>x;;zĿ?V?d̾9l[>d̾9l[>d̾;zĿ?V?d̾ŔĿ?̾9l[>d̾ŔĿ?̾NmZ>̾NmZ>̾ŔĿ?̾èĿt?ʾNmZ>̾èĿt?ʾH8mØ>ʾH8mØ>ʾèĿt?ʾĿ9?΍ɾH8mØ>ʾĿ9?΍ɾPm">΍ɾPm">΍ɾĿ9?΍ɾ}Ŀo)?I)ȾPm">΍ɾ}Ŀo)?I)ȾWm>I)ȾWm>I)Ⱦ}Ŀo)?I)ȾĿC?ƾWm>I)ȾĿC?ƾLms6>ƾLms6>ƾĿC?ƾӤĿ·?g~žLms6>ƾӤĿ·?g~žj0mƾ>g~žj0mƾ>g~žӤĿ·?g~ž3Ŀ?hľj0mƾ>g~ž3Ŀ?hľ*m|>hľ*m|>hľ3Ŀ?hľYsĿw?þ*m|>hľYsĿw?þul~>þul~>þYsĿw?þ;SĿU?]þul~>þ;SĿU?]þ;lӎ>]þ;lӎ>]þ;SĿU?]þ0Ŀ|?¾;lӎ>]þ0Ŀ|?¾kHl!>¾kHl!>¾0Ŀ|?¾ĿS[ ?T+þkHl!>¾ĿS[ ?T+þle>T+þle>T+þĿS[ ?T+þÿ ?rþle>T+þÿ ?rþk>rþk>rþÿ ?rþÿs ?2ľk>rþÿs ?2ľk{>2ľk{>2ľÿs ?2ľÿ ?.žk{>2ľÿ ?.žIhkxW>.žIhkxW>.žÿ ?.žÿ# ? ǾIhkxW>.žÿ# ? Ǿ Pkn͔> Ǿ Pkn͔> Ǿÿ# ? Ǿ\ÿ- ?zȾ Pkn͔> Ǿ\ÿ- ?zȾ{Ik>zȾ{Ik>zȾ\ÿ- ?zȾÿO ?ɾ{Ik>zȾÿO ?ɾSkƹ>ɾSkƹ>ɾÿO ?ɾÿ ?o%˾Skƹ>ɾÿ ?o%˾'pku1>o%˾'pku1>o%˾ÿ ?o%˾ÿKX ?O;̾'pku1>o%˾ÿKX ?O;̾k_>O;̾¿R}?^ƾY¿ ?ksþM?EƾM?EƾY¿ ?ksþ;?4þM?Eƾ;?4þ2?mQƾ2?mQƾ;?4þwF? Pþ2?mQƾwF? Pþ"6?Lƾ"6?LƾwF? Pþ?þ"6?Lƾ?þj?ƾj?ƾ?þˡ]?\ľj?ƾˡ]?\ľi1?-4Ǿi1?-4Ǿˡ]?\ľ?ži1?-4Ǿ?ž?Ǿ?Ǿ?žh~ ?7ƾ?Ǿh~ ?7ƾܹ?e6Ⱦܹ?e6Ⱦh~ ?7ƾx$ ?Ⱦܹ?e6Ⱦx$ ?ȾF?ȾF?Ⱦx$ ?Ⱦ!{z ?cɾF?Ⱦ!{z ?cɾ?w@ɾ?w@ɾ!{z ?cɾe?Lʾ?w@ɾe?LʾRA|?1ɾRA|?1ɾe?Lʾ?˾RA|?1ɾ?˾|K?P ʾ|K?P ʾ?˾?̾|K?P ʾ?̾G?LEʾG?LEʾ?̾ς?i0;G?LEʾς?i0;|?\ʾ|?\ʾς?i0;!}?To;|?\ʾ!}?To;+¿?iRʾ+¿?iRʾ!}?To;¿I?S;+¿?iRʾ¿I?S; ¿Y?$ʾ ¿Y?$ʾ¿I?S;.¿ȴ?u̾ ¿Y?$ʾ.¿ȴ?u̾o¿(&?4ɾo¿(&?4ɾ.¿ȴ?u̾I¿]2?x̾o¿(&?4ɾI¿]2?x̾¿?Xnɾ¿?XnɾI¿]2?x̾^¿!?˾¿?Xnɾ^¿!?˾%¿?"Ⱦ%¿?"Ⱦ^¿!?˾l¿?ɾ%¿?"Ⱦl¿?ɾ'¿4?!lȾ'¿4?!lȾl¿?ɾr¿k?ĔȾ'¿4?!lȾr¿k?ĔȾ&¿r?Ǿ&¿r?Ǿr¿k?ĔȾx??Ǿ&¿r?Ǿx??Ǿ?"¿k?^cǾ?"¿k?^cǾx??Ǿke¿S?ž?"¿k?^cǾke¿S?ž ¿w?ƾ ¿w?ƾke¿S?žR¿t?ľ ¿w?ƾR¿t?ľ¿ND?ƾ¿ND?ƾR¿t?ľ9¿ ?8ľ¿ND?ƾ9¿ ?8ľ¿R}?^ƾ¿R}?^ƾ9¿ ?8ľY¿ ?ksþrVw>ƾIrR[>ľLr?/>^cǾLr?/>^cǾIrR[>ľs>žLr?/>^cǾs>žxrN>ǾxrN>Ǿs>žE/s=>?ǾxrN>ǾE/s=>?Ǿor>!lȾor>!lȾE/s=>?Ǿ4s$>ĔȾor>!lȾ4s$>ĔȾڙr>"Ⱦڙr>"Ⱦ4s$>ĔȾ(s[^>ɾڙr>"Ⱦ(s[^>ɾr&H>Xnɾr&H>Xnɾ(s[^>ɾ s>˾r&H>Xnɾ s>˾}rk>4ɾ}rk>4ɾ s>˾r#>x̾}rk>4ɾr#>x̾ hrG>$ʾ hrG>$ʾr#>x̾3r>u̾ hrG>$ʾ3r>u̾#Ory>iRʾ#Ory>iRʾ3r>u̾nr>S;#Ory>iRʾnr>S;4r`>\ʾ4r`>\ʾnr>S;-r>To;4r`>\ʾ-r>To;]rs>LEʾ]rs>LEʾ-r>To;qR>i0;]rs>LEʾqR>i0;r>P ʾr>P ʾqR>i0;ڱqup>̾r>P ʾڱqup>̾tqE>1ɾtqE>1ɾڱqup>̾ qa>˾tqE>1ɾ qa>˾ q>w@ɾ q>w@ɾ qa>˾Zq1>Lʾ q>w@ɾZq1>Lʾq>Ⱦq>ȾZq1>LʾEq~>cɾq>ȾEq~>cɾq!–>e6Ⱦq!–>e6ȾEq~>cɾ?qE>Ⱦq!–>e6Ⱦ?qE>Ⱦ{q٫>Ǿ{q٫>Ǿ?qE>ȾKq^>7ƾ{q٫>ǾKq^>7ƾqt>-4Ǿqt>-4ǾKq^>7ƾgqH֘>žqt>-4ǾgqH֘>žq#>ƾq#>ƾgqH֘>žeq >\ľq#>ƾeq >\ľK r>LƾK r>Lƾeq >\ľ"q>þK r>Lƾ"q>þ2%rfC>mQƾ2%rfC>mQƾ"q>þrrە> Pþ2%rfC>mQƾrrە> Pþi?rŔ>Eƾi?rŔ>Eƾrrە> PþFrߠ>4þi?rŔ>EƾFrߠ>4þXr I>^ƾXr I>^ƾFrߠ>4þrh>ksþXr I>^ƾrh>ksþprד>ƾprד>ƾrh>ksþzrL>8ľprד>ƾzrL>8ľrVw>ƾrVw>ƾzrL>8ľIrR[>ľ qa>˾e?LʾZq1>LʾZq1>Lʾe?Lʾ!{z ?cɾZq1>Lʾ!{z ?cɾEq~>cɾEq~>cɾ!{z ?cɾx$ ?ȾEq~>cɾx$ ?Ⱦ?qE>Ⱦ?qE>Ⱦx$ ?Ⱦh~ ?7ƾ?qE>Ⱦh~ ?7ƾKq^>7ƾKq^>7ƾh~ ?7ƾ?žKq^>7ƾ?žgqH֘>žgqH֘>ž?žˡ]?\ľgqH֘>žˡ]?\ľeq >\ľeq >\ľˡ]?\ľ?þeq >\ľ?þ"q>þ"q>þ?þwF? Pþ"q>þwF? Pþrrە> Pþrrە> PþwF? Pþ;?4þrrە> Pþ;?4þFrߠ>4þFrߠ>4þ;?4þY¿ ?ksþFrߠ>4þY¿ ?ksþrh>ksþrh>ksþY¿ ?ksþ9¿ ?8ľrh>ksþ9¿ ?8ľzrL>8ľzrL>8ľ9¿ ?8ľR¿t?ľzrL>8ľR¿t?ľIrR[>ľIrR[>ľR¿t?ľke¿S?žIrR[>ľke¿S?žs>žs>žke¿S?žx??Ǿs>žx??ǾE/s=>?ǾE/s=>?Ǿx??Ǿr¿k?ĔȾE/s=>?Ǿr¿k?ĔȾ4s$>ĔȾ4s$>ĔȾr¿k?ĔȾl¿?ɾ4s$>ĔȾl¿?ɾ(s[^>ɾ(s[^>ɾl¿?ɾ^¿!?˾(s[^>ɾ^¿!?˾ s>˾ s>˾^¿!?˾I¿]2?x̾ s>˾I¿]2?x̾r#>x̾r#>x̾I¿]2?x̾.¿ȴ?u̾r#>x̾.¿ȴ?u̾3r>u̾3r>u̾.¿ȴ?u̾¿I?S;3r>u̾¿I?S;nr>S;nr>S;¿I?S;!}?To;nr>S;!}?To;-r>To;-r>To;!}?To;ς?i0;-r>To;ς?i0;qR>i0;qR>i0;ς?i0;?̾qR>i0;?̾ڱqup>̾ڱqup>̾?̾?˾ڱqup>̾?˾ qa>˾ qa>˾?˾e?Lʾ=] >1ɾ q>w@ɾt.]h>w@ɾt.]h>w@ɾ q>w@ɾq>Ⱦt.]h>w@ɾq>Ⱦ%]\>Ⱦ%]\>Ⱦq>Ⱦq!–>e6Ⱦ%]\>Ⱦq!–>e6ȾP#]>e6ȾP#]>e6Ⱦq!–>e6Ⱦ{q٫>ǾP#]>e6Ⱦ{q٫>Ǿ(]?>Ǿ(]?>Ǿ{q٫>Ǿqt>-4Ǿ(]?>Ǿqt>-4Ǿ3]3O>-4Ǿ3]3O>-4Ǿqt>-4Ǿq#>ƾ3]3O>-4Ǿq#>ƾD]>ƾD]>ƾq#>ƾK r>LƾD]>ƾK r>Lƾ]Z]>Lƾ]Z]>LƾK r>Lƾ2%rfC>mQƾ]Z]>Lƾ2%rfC>mQƾr]>mQƾr]>mQƾ2%rfC>mQƾi?rŔ>Eƾr]>mQƾi?rŔ>Eƾӌ]>Eƾӌ]>Eƾi?rŔ>EƾXr I>^ƾӌ]>EƾXr I>^ƾa]u#>^ƾa]u#>^ƾXr I>^ƾprד>ƾa]u#>^ƾprד>ƾ]m>ƾ]m>ƾprד>ƾrVw>ƾ]m>ƾrVw>ƾJ]Q>ƾJ]Q>ƾrVw>ƾLr?/>^cǾJ]Q>ƾLr?/>^cǾ]] >^cǾ]] >^cǾLr?/>^cǾxrN>Ǿ]] >^cǾxrN>Ǿ]߁>Ǿ]߁>ǾxrN>Ǿor>!lȾ]߁>Ǿor>!lȾ]9Ձ>!lȾ]9Ձ>!lȾor>!lȾڙr>"Ⱦ]9Ձ>!lȾڙr>"ȾD]>"ȾD]>"Ⱦڙr>"Ⱦr&H>XnɾD]>"Ⱦr&H>Xnɾ]">Xnɾ]">Xnɾr&H>Xnɾ}rk>4ɾ]">Xnɾ}rk>4ɾ]!u>4ɾ]!u>4ɾ}rk>4ɾ hrG>$ʾ]!u>4ɾ hrG>$ʾu]܂>$ʾu]܂>$ʾ hrG>$ʾ#Ory>iRʾu]܂>$ʾ#Ory>iRʾ]S>iRʾ]S>iRʾ#Ory>iRʾ4r`>\ʾ]S>iRʾ4r`>\ʾW]у>\ʾW]у>\ʾ4r`>\ʾ]rs>LEʾW]у>\ʾ]rs>LEʾh]LN>LEʾh]LN>LEʾ]rs>LEʾr>P ʾh]LN>LEʾr>P ʾ0Q]T>P ʾ0Q]T>P ʾr>P ʾtqE>1ɾ0Q]T>P ʾtqE>1ɾ=] >1ɾ=] >1ɾtqE>1ɾ q>w@ɾ Z*>žJ~w>tRYy>->žRYy>->žJ~w>tIsx>RYy>->žIsx>kYL߂>2žkYL߂>2žIsx>I y>%kYL߂>2žI y>%4YQ+>ž4YQ+>žI y>%I"ey>Λ4YQ+>žI"ey>ΛTYW>eƾTYW>eƾI"ey>ΛIzy>TYW>eƾIzy>Y^b>9ƾY^b>9ƾIzy>IMHy>Y^b>9ƾIMHy>u{YwI>dǾu{YwI>dǾIMHy>@Ix>u{YwI>dǾ@Ix>kY>ǾkY>Ǿ@Ix>|IS%x>8zkY>Ǿ|IS%x>8z>aY>CȾ>aY>CȾ|IS%x>8z}yIIw>,ʼ>aY>CȾ}yIIw>,ʼ]YI>sȾ]YI>sȾ}yIIw>,ʼk}IJv>J]YI>sȾk}IJv>JaYʁ>ȾaYʁ>Ⱦk}IJv>JIt?u>aYʁ>ȾIt?u>alY E>;ȾalY E>;ȾIt?u>KI6t>alY E>;ȾKI6t>|Y>Ⱦ|Y>ȾKI6t>IEs>YӼ|Y>ȾIEs>YӼeYH>ȾeYH>ȾIEs>YӼI yr>eYH>ȾI yr>KY>PȾKY>PȾI yr> Iq>f"KY>PȾ Iq>f"Y+>ǾY+>Ǿ Iq>f"Iއq>qY+>ǾIއq>qbY~>uǾbY~>uǾIއq>qJrq>L-bY~>uǾJrq>L-Y~>ƾY~>ƾJrq>L-)Jq>٬Y~>ƾ)Jq>٬ ZU~>vƾ ZU~>vƾ)Jq>٬9J r>5 ZU~>vƾ9J r>5Zb>žZb>ž9J r>5CJr>ιZb>žCJr>ιy(Z>Nžy(Z>NžCJr>ιFGJs>~y(Z>NžFGJs>~+ZBw>YGž+ZBw>YGžFGJs>~XCJt>I+ZBw>YGžXCJt>I'Zg>:ž'Zg>:žXCJt>I8Ju>J7'Zg>:ž8Ju>J7UZ|>žUZ|>ž8Ju>J7x(Jv>EUZ|>žx(Jv>E Z*>ž Z*>žx(Jv>EJ~w>t[Z>.ƾkYL߂>2ž[ ƒ>^{ƾ[ ƒ>^{ƾkYL߂>2ž4YQ+>ž[ ƒ>^{ƾ4YQ+>žJ{[>ƾJ{[>ƾ4YQ+>žTYW>eƾJ{[>ƾTYW>eƾJh[1A>\ǾJh[1A>\ǾTYW>eƾY^b>9ƾJh[1A>\ǾY^b>9ƾY[P>1ǾY[P>1ǾY^b>9ƾu{YwI>dǾY[P>1Ǿu{YwI>dǾ P[>>3hȾ P[>>3hȾu{YwI>dǾkY>Ǿ P[>>3hȾkY>ǾL[t >ȾL[t >ȾkY>Ǿ>aY>CȾL[t >Ⱦ>aY>CȾN[0>qUɾN[0>qUɾ>aY>CȾ]YI>sȾN[0>qUɾ]YI>sȾ@W[UQ>ɾ@W[UQ>ɾ]YI>sȾaYʁ>Ⱦ@W[UQ>ɾaYʁ>Ⱦe[nׂ>Mɾe[nׂ>MɾaYʁ>ȾalY E>;Ⱦe[nׂ>MɾalY E>;Ⱦv[U>ɾv[U>ɾalY E>;Ⱦ|Y>Ⱦv[U>ɾ|Y>ȾU[Ӂ>ɾU[Ӂ>ɾ|Y>ȾeYH>ȾU[Ӂ>ɾeYH>ȾE[\>;ɾE[\>;ɾeYH>ȾKY>PȾE[\>;ɾKY>PȾ5[>tɾ5[>tɾKY>PȾY+>Ǿ5[>tɾY+>Ǿ}[r>Y ɾ}[r>Y ɾY+>ǾbY~>uǾ}[r>Y ɾbY~>uǾ[u>sȾ[u>sȾbY~>uǾY~>ƾ[u>sȾY~>ƾ[8f> Ⱦ[8f> ȾY~>ƾ ZU~>vƾ[8f> Ⱦ ZU~>vƾ[x>Ǿ[x>Ǿ ZU~>vƾZb>ž[x>ǾZb>ž[>Ǿ[>ǾZb>žy(Z>Nž[>Ǿy(Z>Nžf[>Ӛƾf[>Ӛƾy(Z>Nž+ZBw>YGžf[>Ӛƾ+ZBw>YGž[e>QDƾ[e>QDƾ+ZBw>YGž'Zg>:ž[e>QDƾ'Zg>:ž[߁> ƾ[߁> ƾ'Zg>:žUZ|>ž[߁> ƾUZ|>žk[va>\žk[va>\žUZ|>ž Z*>žk[va>\ž Z*>žs[>)ƾs[>)ƾ Z*>žRYy>->žs[>)ƾRYy>->ž[Z>.ƾ[Z>.ƾRYy>->žkYL߂>2ž]Z]>Lƾ[ ƒ>^{ƾD]>ƾD]>ƾ[ ƒ>^{ƾJ{[>ƾD]>ƾJ{[>ƾ3]3O>-4Ǿ3]3O>-4ǾJ{[>ƾJh[1A>\Ǿ3]3O>-4ǾJh[1A>\Ǿ(]?>Ǿ(]?>ǾJh[1A>\ǾY[P>1Ǿ(]?>ǾY[P>1ǾP#]>e6ȾP#]>e6ȾY[P>1Ǿ P[>>3hȾP#]>e6Ⱦ P[>>3hȾ%]\>Ⱦ%]\>Ⱦ P[>>3hȾL[t >Ⱦ%]\>ȾL[t >Ⱦt.]h>w@ɾt.]h>w@ɾL[t >ȾN[0>qUɾt.]h>w@ɾN[0>qUɾ=] >1ɾ=] >1ɾN[0>qUɾ@W[UQ>ɾ=] >1ɾ@W[UQ>ɾ0Q]T>P ʾ0Q]T>P ʾ@W[UQ>ɾe[nׂ>Mɾ0Q]T>P ʾe[nׂ>Mɾh]LN>LEʾh]LN>LEʾe[nׂ>Mɾv[U>ɾh]LN>LEʾv[U>ɾW]у>\ʾW]у>\ʾv[U>ɾU[Ӂ>ɾW]у>\ʾU[Ӂ>ɾ]S>iRʾ]S>iRʾU[Ӂ>ɾE[\>;ɾ]S>iRʾE[\>;ɾu]܂>$ʾu]܂>$ʾE[\>;ɾ5[>tɾu]܂>$ʾ5[>tɾ]!u>4ɾ]!u>4ɾ5[>tɾ}[r>Y ɾ]!u>4ɾ}[r>Y ɾ]">Xnɾ]">Xnɾ}[r>Y ɾ[u>sȾ]">Xnɾ[u>sȾD]>"ȾD]>"Ⱦ[u>sȾ[8f> ȾD]>"Ⱦ[8f> Ⱦ]9Ձ>!lȾ]9Ձ>!lȾ[8f> Ⱦ[x>Ǿ]9Ձ>!lȾ[x>Ǿ]߁>Ǿ]߁>Ǿ[x>Ǿ[>Ǿ]߁>Ǿ[>Ǿ]] >^cǾ]] >^cǾ[>Ǿf[>Ӛƾ]] >^cǾf[>ӚƾJ]Q>ƾJ]Q>ƾf[>Ӛƾ[e>QDƾJ]Q>ƾ[e>QDƾ]m>ƾ]m>ƾ[e>QDƾ[߁> ƾ]m>ƾ[߁> ƾa]u#>^ƾa]u#>^ƾ[߁> ƾk[va>\ža]u#>^ƾk[va>\žӌ]>Eƾӌ]>Eƾk[va>\žs[>)ƾӌ]>Eƾs[>)ƾr]>mQƾr]>mQƾs[>)ƾ[Z>.ƾr]>mQƾ[Z>.ƾ]Z]>Lƾ]Z]>Lƾ[Z>.ƾ[ ƒ>^{ƾF@k>CYnIp>Em>NEm>NYnIp>>I:XEm>N>I:XE@o>"E@o>">I:X&IMt>xE@o>"&IMt>xERr>ټERr>ټ&IMt>xI;Vw>MERr>ټI;Vw>M*yE`t>*yE`t>I;Vw>M Hy>پ*yE`t> Hy>پpEv>O;pEv>O; Hy>پI&{>%pEv>O;I&{>%xE.x>mxE.x>mI&{>%/I` }>5m/I` }>5<ʎEez>ʎEez>/I` }>5<;I~>/ʎEez>;I~>/~E{>k~E{>k;I~>/kI~~>&~E{>kkI~~>&E{>pE{>pkI~~>&ǢIpO~>j񹾭E{>pǢIpO~>jaFY{>SRaFY{>SRǢIpO~>jjI}>V績aFY{>SRjI}>V績VFz>IVFz>IjI}>V績J0|>VFz>IJ0|>F1;y>fF1;y>fJ0|>jRJkcz>XF1;y>fjRJkcz>XFppw>Fppw>jRJkcz>XBJ(Bx>Fppw>BJ(Bx>F-Ou>PF-Ou>PBJ(Bx>𶾝Ju>A϶F-Ou>PJu>A϶7Gr>*07Gr>*0Ju>A϶5JȖs>7Gr>*05JȖs>6G-p>l[6G-p>l[5JȖs>JO[q>m6G-p>l[JO[q>m>GThn>δ>GThn>δJO[q>mۿJ=io>">GThn>δۿJ=io>"w7GBvl>w7GBvl>ۿJ=io>"Jm> w7GBvl>Jm> .!G j>k.!G j>kJm> J~l>.!G j>kJ~l>{Fi>y{Fi>yJ~l>UJfnl>7{Fi>yUJfnl>7LFxi>LFxi>UJfnl>7Jl>VLFxi>Jl>VFi>Fi>Jl>VYIogm>_Fi>YIogm>_YFqj>YFqj>YIogm>_I7n>ZBYFqj>I7n>ZBF@k>CF@k>CI7n>ZBYnIp>6G-p>l[>GThn>δw7GBvl>6G-p>l[w7GBvl>xE.x>mxE.x>mw7GBvl>*yE`t>xE.x>m*yE`t>pEv>O;7Gr>*06G-p>l[F-Ou>PF-Ou>P6G-p>l[xE.x>mF-Ou>PxE.x>mFppw>Fppw>xE.x>mVFz>IFppw>VFz>IF1;y>fFi>YFqj>LFxi>LFxi>YFqj>*yE`t>LFxi>*yE`t>{Fi>y{Fi>y*yE`t>w7GBvl>{Fi>yw7GBvl>.!G j>kE@o>"ERr>ټEm>NEm>NERr>ټ*yE`t>Em>N*yE`t>F@k>CF@k>C*yE`t>YFqj>aFY{>SRVFz>IE{>pE{>pVFz>IxE.x>mE{>pxE.x>m~E{>k~E{>kxE.x>mʎEez>x(Jv>EBJ(Bx>J~w>tJ~w>tBJ(Bx>jRJkcz>XJ~w>tjRJkcz>XIsx>Isx>jRJkcz>XJ0|>Isx>J0|>I y>%I y>%J0|>jI}>V績I y>%jI}>V績I"ey>ΛI"ey>ΛjI}>V績ǢIpO~>jI"ey>ΛǢIpO~>j񹾜Izy>Izy>ǢIpO~>jkI~~>&Izy>kI~~>&IMHy>IMHy>kI~~>&;I~>/IMHy>;I~>/@Ix>@Ix>;I~>//I` }>5<@Ix>/I` }>5<|IS%x>8z|IS%x>8z/I` }>5<I&{>%|IS%x>8zI&{>%}yIIw>,ʼ}yIIw>,ʼI&{>% Hy>پ}yIIw>,ʼ Hy>پk}IJv>Jk}IJv>J Hy>پI;Vw>Mk}IJv>JI;Vw>MIt?u>It?u>I;Vw>M&IMt>xIt?u>&IMt>xKI6t>KI6t>&IMt>x>I:XKI6t>>I:XIEs>YӼIEs>YӼ>I:XYnIp>IEs>YӼYnIp>I yr>I yr>YnIp>I7n>ZBI yr>I7n>ZB Iq>f" Iq>f"I7n>ZBYIogm>_ Iq>f"YIogm>_Iއq>qIއq>qYIogm>_Jl>VIއq>qJl>VJrq>L-Jrq>L-Jl>VUJfnl>7Jrq>L-UJfnl>7)Jq>٬)Jq>٬UJfnl>7J~l>)Jq>٬J~l>9J r>59J r>5J~l>Jm> 9J r>5Jm> CJr>ιCJr>ιJm> ۿJ=io>"CJr>ιۿJ=io>"FGJs>~FGJs>~ۿJ=io>"JO[q>mFGJs>~JO[q>mXCJt>IXCJt>IJO[q>m5JȖs>XCJt>I5JȖs>8Ju>J78Ju>J75JȖs>Ju>A϶8Ju>J7Ju>A϶x(Jv>Ex(Jv>EJu>A϶BJ(Bx>-Cܿ|?Ǿ?"¿k?^cǾ>ܿ6?^cǾ>ܿ6?^cǾ?"¿k?^cǾ ¿w?ƾ>ܿ6?^cǾ ¿w?ƾ`7ܿ?ƾ`7ܿ?ƾ ¿w?ƾ¿ND?ƾ`7ܿ?ƾ¿ND?ƾ8-ܿ?ƾ8-ܿ?ƾ¿ND?ƾ¿R}?^ƾ8-ܿ?ƾ¿R}?^ƾl!ܿ?^ƾl!ܿ?^ƾ¿R}?^ƾM?Eƾl!ܿ?^ƾM?Eƾܿ_]?Eƾܿ_]?EƾM?Eƾ2?mQƾܿ_]?Eƾ2?mQƾܿJ?mQƾܿJ?mQƾ2?mQƾ"6?LƾܿJ?mQƾ"6?Lƾۿ?Lƾۿ?Lƾ"6?Lƾj?ƾۿ?Lƾj?ƾGۿ ?ƾGۿ ?ƾj?ƾi1?-4ǾGۿ ?ƾi1?-4Ǿۿ4?-4Ǿۿ4?-4Ǿi1?-4Ǿ?Ǿۿ4?-4Ǿ?Ǿ/ۿO?Ǿ/ۿO?Ǿ?Ǿܹ?e6Ⱦ/ۿO?Ǿܹ?e6Ⱦۿ[?e6Ⱦۿ[?e6Ⱦܹ?e6ȾF?Ⱦۿ[?e6ȾF?ȾۿiV?ȾۿiV?ȾF?Ⱦ?w@ɾۿiV?Ⱦ?w@ɾvۿpA?w@ɾvۿpA?w@ɾ?w@ɾRA|?1ɾvۿpA?w@ɾRA|?1ɾۿd?1ɾۿd?1ɾRA|?1ɾ|K?P ʾۿd?1ɾ|K?P ʾۿ?P ʾۿ?P ʾ|K?P ʾG?LEʾۿ?P ʾG?LEʾܿ?LEʾܿ?LEʾG?LEʾ|?\ʾܿ?LEʾ|?\ʾfܿFv?\ʾfܿFv?\ʾ|?\ʾ+¿?iRʾfܿFv?\ʾ+¿?iRʾܿ\7?iRʾܿ\7?iRʾ+¿?iRʾ ¿Y?$ʾܿ\7?iRʾ ¿Y?$ʾ(ܿ?$ʾ(ܿ?$ʾ ¿Y?$ʾo¿(&?4ɾ(ܿ?$ʾo¿(&?4ɾr3ܿK?4ɾr3ܿK?4ɾo¿(&?4ɾ¿?Xnɾr3ܿK?4ɾ¿?Xnɾ;ܿ?Xnɾ;ܿ?Xnɾ¿?Xnɾ%¿?"Ⱦ;ܿ?Xnɾ%¿?"ȾAܿ#?"ȾAܿ#?"Ⱦ%¿?"Ⱦ'¿4?!lȾAܿ#?"Ⱦ'¿4?!lȾ(Dܿw?!lȾ(Dܿw?!lȾ'¿4?!lȾ&¿r?Ǿ(Dܿw?!lȾ&¿r?Ǿ-Cܿ|?Ǿ-Cܿ|?Ǿ&¿r?Ǿ?"¿k?^cǾۿiV?Ⱦ(Dܿw?!lȾۿ[?e6Ⱦۿ[?e6Ⱦ(Dܿw?!lȾ-Cܿ|?ǾۿiV?ȾvۿpA?w@ɾ(Dܿw?!lȾ(Dܿw?!lȾvۿpA?w@ɾ;ܿ?Xnɾ(Dܿw?!lȾ;ܿ?XnɾAܿ#?"Ⱦ-Cܿ|?Ǿ>ܿ6?^cǾۿ[?e6Ⱦۿ[?e6Ⱦ>ܿ6?^cǾۿ4?-4Ǿۿ[?e6Ⱦۿ4?-4Ǿ/ۿO?ǾvۿpA?w@ɾۿd?1ɾ;ܿ?Xnɾ;ܿ?Xnɾۿd?1ɾۿ?P ʾ;ܿ?Xnɾۿ?P ʾܿ?LEʾ>ܿ6?^cǾ`7ܿ?ƾۿ4?-4Ǿۿ4?-4Ǿ`7ܿ?ƾ8-ܿ?ƾۿ4?-4Ǿ8-ܿ?ƾl!ܿ?^ƾr3ܿK?4ɾ;ܿ?Xnɾ(ܿ?$ʾ(ܿ?$ʾ;ܿ?Xnɾܿ?LEʾ(ܿ?$ʾܿ?LEʾܿ\7?iRʾܿ\7?iRʾܿ?LEʾfܿFv?\ʾGۿ ?ƾۿ4?-4Ǿۿ?Lƾۿ?Lƾۿ4?-4Ǿl!ܿ?^ƾۿ?Lƾl!ܿ?^ƾܿJ?mQƾܿJ?mQƾl!ܿ?^ƾܿ_]?EƾT>ržc a>rž`{>žT>rž`{>žS>žS>ž`{>ž"`>2rƾS>ž"`>2rƾS;>2rƾS;>2rƾ"`>2rƾy`8a>b(ǾS;>2rƾy`8a>b(ǾS'>b(ǾS'>b(Ǿy`8a>b(Ǿ`>ǾS'>b(Ǿ`>ǾS>ǾS>~ɾǺ`Z>~ɾ`\>@ʾS>~ɾ`\>@ʾ7SL1>@ʾ7SL1>@ʾ`\>@ʾ`n>ʾ7SL1>@ʾ`n>ʾeS>ʾeS>ʾ`n>ʾa>7˾eS>ʾa>7˾! T>7˾! T>7˾a>7˾U5a >5l˾! T>7˾U5a >5l˾2TxD>5l˾2TxD>5l˾U5a >5l˾O]aJ>i˾2TxD>5l˾O]aJ>i˾ZT˃>i˾ZT˃>i˾O]aJ>i˾Ra>91˾ZT˃>i˾Ra>91˾pT>91˾pT>91˾Ra>91˾a>ʾpT>91˾a>ʾT$>ʾT$>ʾa>ʾad>1ʾT$>ʾad>1ʾT>1ʾT>1ʾad>1ʾ>a6>s{ɾT>1ʾ>a6>s{ɾ\T$?>s{ɾ\T$?>s{ɾ>a6>s{ɾa>JȾ\T$?>s{ɾa>JȾ0T>JȾ0T>JȾa>JȾaV>Ǿ0T>JȾaV>ǾTD>ǾTD>ǾaV>Ǿa >WǾTD>Ǿa >WǾ TE>WǾ TE>WǾa >WǾao>cƾ TE>WǾao>cƾT>cƾT>cƾao>cƾǢa>HžT>cƾǢa>HžT2>HžT2>HžǢa>Hž aơ> lžT2>Hž aơ> lž)~T> lž)~T> lž aơ> lžaYa[>7ž)~T> lžaYa[>7žWTԔ>7žaV>ǾEb>ƾa >WǾa >WǾEb>ƾ-bZ>ža >WǾ-bZ>žao>cƾao>cƾ-bZ>ž\b|>_ľao>cƾ\b|>_ľǢa>HžǢa>Hž\b|>_ľa>jþǢa>Hža>jþ aơ> lž aơ> lža>jþa >M@þ aơ> lža >M@þaYa[>7žaYa[>7ža >M@þ=aa5>7¾aYa[>7ž=aa5>7¾f1a>>:žf1a>>:ž=aa5>7¾!ah>þf1a>>:ž!ah>þc a>ržc a>rž!ah>þ`А>Vþc a>rž`А>Vþ`{>ž`{>ž`А>Vþ`>þ`{>ž`>þ"`>2rƾ"`>2rƾ`>þ}~`}>ľ"`>2rƾ}~`}>ľy`8a>b(Ǿy`8a>b(Ǿ}~`}>ľ[`&>žy`8a>b(Ǿ[`&>ž`>Ǿ`>Ǿ[`&>ž!F`>%Ǿ`>Ǿ!F`>%ǾL`>Ⱦ!F`>%Ǿ;@`>pȾL`>ȾL`>Ⱦ;@`>pȾfI`> ɾL`>ȾfI`> ɾǺ`Z>~ɾǺ`Z>~ɾfI`> ɾ`` >ʾǺ`Z>~ɾ`` >ʾ`\>@ʾ`\>@ʾ`` >ʾY`X>t˾`\>@ʾY`X>t˾`n>ʾ`n>ʾY`X>t˾ٶ`Tn>j̾`n>ʾٶ`Tn>j̾a>7˾a>7˾ٶ`Tn>j̾5`d\>c;a>7˾5`d\>c;U5a >5l˾U5a >5l˾5`d\>c;x-a1>;U5a >5l˾x-a1>;O]aJ>i˾O]aJ>i˾x-a1>; ma>£;O]aJ>i˾ ma>£;Ra>91˾Ra>91˾ ma>£;a>@M;Ra>91˾a>@M;a>ʾa>ʾa>@M;a:>W̾a>ʾa:>W̾ad>1ʾad>1ʾa:>W̾9b>˾ad>1ʾ9b>˾>a6>s{ɾ>a6>s{ɾ9b>˾2b@>ʾ>a6>s{ɾ2b@>ʾa>JȾa>JȾ2b@>ʾHbv>~ɾa>JȾHbv>~ɾaV>ǾaV>ǾHbv>~ɾ|NbP>3ȾaV>Ǿ|NbP>3ȾEb>ƾ[>@M; ma>£;([z>£;([z>£; ma>£;x-a1>;([z>£;x-a1>;C[0K>;C[0K>;x-a1>;5`d\>c;C[0K>;5`d\>c;[v>c;[v>c;5`d\>c;ٶ`Tn>j̾[v>c;ٶ`Tn>j̾ZH>j̾ZH>j̾ٶ`Tn>j̾Y`X>t˾ZH>j̾Y`X>t˾xZr>t˾xZr>t˾Y`X>t˾`` >ʾxZr>t˾`` >ʾwZ(&>ʾwZ(&>ʾ`` >ʾfI`> ɾwZ(&>ʾfI`> ɾ_Z> ɾ_Z> ɾfI`> ɾ;@`>pȾ_Z> ɾ;@`>pȾYVZ>pȾYVZ>pȾ;@`>pȾ!F`>%ǾYVZ>pȾ!F`>%Ǿ\Z>%Ǿ\Z>%Ǿ!F`>%Ǿ[`&>ž\Z>%Ǿ[`&>žqZ^@>žqZ^@>ž[`&>ž}~`}>ľqZ^@>ž}~`}>ľZJ>ľZJ>ľ}~`}>ľ`>þZJ>ľ`>þ#Z(>þ#Z(>þ`>þ`А>Vþ#Z(>þ`А>VþZv>VþZv>Vþ`А>Vþ!ah>þZv>Vþ!ah>þr8[<>þr8[<>þ!ah>þ=aa5>7¾r8[<>þ=aa5>7¾\w[P>7¾\w[P>7¾=aa5>7¾a >M@þ\w[P>7¾a >M@þ[$>M@þ[$>M@þa >M@þa>jþ[$>M@þa>jþ[>jþ[>jþa>jþ\b|>_ľ[>jþ\b|>_ľ"\n)>_ľ"\n)>_ľ\b|>_ľ-bZ>ž"\n)>_ľ-bZ>žC\t>žC\t>ž-bZ>žEb>ƾC\t>žEb>ƾ\\>ƾ\\>ƾEb>ƾ|NbP>3Ⱦ\\>ƾ|NbP>3ȾBe\C>3ȾBe\C>3Ⱦ|NbP>3ȾHbv>~ɾBe\C>3ȾHbv>~ɾ^\j>~ɾ^\j>~ɾHbv>~ɾ2b@>ʾ^\j>~ɾ2b@>ʾI\[>ʾI\[>ʾ2b@>ʾ9b>˾I\[>ʾ9b>˾W&\l>˾W&\l>˾9b>˾a:>W̾W&\l>˾a:>W̾[>W̾[>W̾a:>W̾a>@M;[>W̾a>@M;[>@M;[>@M;a>@M; ma>£;Be\C>3Ⱦʓ\4>hǾ\\>ƾ\\>ƾʓ\4>hǾ\fH>hƾ\\>ƾ\fH>hƾC\t>žC\t>ž\fH>hƾa\>XľC\t>ža\>Xľ"\n)>_ľ"\n)>_ľa\>Xľ4\>٧þ"\n)>_ľ4\>٧þ[>jþ[>jþ4\>٧þf[>¾[>jþf[>¾[$>M@þ[$>M@þf[>¾-[:>7¾[$>M@þ-[:>7¾\w[P>7¾\w[P>7¾-[:>7¾\w[&R>\w[P>7¾\w[&R>r8[<>þr8[<>þ\w[&R>=1[>r8[<>þ=1[>Zv>VþZv>Vþ=1[>ZO>OX¾Zv>VþZO>OX¾#Z(>þ#Z(>þZO>OX¾ѮZv>dþ#Z(>þѮZv>dþZJ>ľZJ>ľѮZv>dþyZ>þZJ>ľyZ>þqZ^@>žqZ^@>žyZ>þ#OZ$>žqZ^@>ž#OZ$>ž\Z>%Ǿ\Z>%Ǿ#OZ$>ž2Zq>cƾ\Z>%Ǿ2Zq>cƾYVZ>pȾ2Zq>cƾ2%Z>9ǾYVZ>pȾYVZ>pȾ2%Z>9Ǿ)'Z>9;ɾYVZ>pȾ)'Z>9;ɾ_Z> ɾ_Z> ɾ)'Z>9;ɾ8ZPR>nʾ_Z> ɾ8ZPR>nʾwZ(&>ʾwZ(&>ʾ8ZPR>nʾYZV>|˾wZ(&>ʾYZV>|˾xZr>t˾xZr>t˾YZV>|˾؆Zs>̾xZr>t˾؆Zs>̾ZH>j̾ZH>j̾؆Zs>̾4Z!>;ZH>j̾4Z!>;[v>c;[v>c;4Z!>;mZ|>Klξ[v>c;mZ|>KlξC[0K>;C[0K>;mZ|>Klξ>D[I>ξC[0K>;>D[I>ξ([z>£;([z>£;>D[I>ξ^[e>Fξ([z>£;^[e>Fξ[>@M;[>@M;^[e>Fξ[>Kξ[>@M;[>Kξ[>W̾[>W̾[>Kξ \@>r;[>W̾ \@>r;W&\l>˾W&\l>˾ \@>r;A\ >̾W&\l>˾A\ >̾I\[>ʾI\[>ʾA\ >̾k\>J˾I\[>ʾk\>J˾^\j>~ɾ^\j>~ɾk\>J˾\A*>@ʾ^\j>~ɾ\A*>@ʾBe\C>3ȾBe\C>3Ⱦ\A*>@ʾh\>ȾBe\C>3Ⱦh\>Ⱦʓ\4>hǾO;T>9Ǿ2%Z>9Ǿ2Zq>cƾO;T>9Ǿ2Zq>cƾITh>cƾITh>cƾ2Zq>cƾ#OZ$>žITh>cƾ#OZ$>žeT>žeT>ž#OZ$>žyZ>þeT>žyZ>þۏT6>þۏT6>þyZ>þѮZv>dþۏT6>þѮZv>dþTj4>dþTj4>dþѮZv>dþZO>OX¾Tj4>dþZO>OX¾3U>OX¾{Uk>\w[&R>-[:>7¾{Uk>-[:>7¾KU/ >7¾KU/ >7¾-[:>7¾f[>¾KU/ >7¾f[>¾V>¾V>¾f[>¾4\>٧þV>¾4\>٧þJV8>٧þJV8>٧þ4\>٧þa\>XľJV8>٧þa\>XľxVT>XľxVT>Xľa\>Xľ\fH>hƾxVT>Xľ\fH>hƾݘVZc>hƾݘVZc>hƾ\fH>hƾʓ\4>hǾݘVZc>hƾʓ\4>hǾV)>hǾV)>hǾʓ\4>hǾh\>ȾV)>hǾh\>ȾV>ȾV>Ⱦh\>Ⱦ\A*>@ʾV>Ⱦ\A*>@ʾĞVC>@ʾĞVC>@ʾ\A*>@ʾk\>J˾ĞVC>@ʾk\>J˾V>J˾V>J˾k\>J˾A\ >̾V>J˾A\ >̾XV>̾XV>̾A\ >̾ \@>r;XV>̾ \@>r;"V5>r;"V5>r; \@>r;[>Kξ"V5>r;[>KξU\>KξU\>Kξ[>Kξ^[e>FξU\>Kξ^[e>Fξ{U >Fξ{U >Fξ^[e>Fξ>D[I>ξ{U >Fξ>D[I>ξ]ZUc>ξ]ZUc>ξ>D[I>ξmZ|>Klξ]ZUc>ξmZ|>KlξUp>KlξUp>KlξmZ|>Klξ4Z!>;Up>Klξ4Z!>;ST>;ST>;4Z!>;؆Zs>̾ST>;؆Zs>̾T>̾T>̾؆Zs>̾YZV>|˾T>̾YZV>|˾oT>|˾oT>|˾YZV>|˾8ZPR>nʾoT>|˾8ZPR>nʾOTDm>nʾU\>KξT>l˾"V5>r;"V5>r;T>l˾T>~˾"V5>r;T>~˾XV>̾XV>̾T>~˾T X>ʾXV>̾T X>ʾV>J˾V>J˾T X>ʾT&>BʾV>J˾T&>BʾĞVC>@ʾĞVC>@ʾT&>BʾT>#zɾĞVC>@ʾT>#zɾV>ȾV>ȾT>#zɾU@d>ޡȾV>ȾU@d>ޡȾV)>hǾV)>hǾU@d>ޡȾCT~i>ǾV)>hǾCT~i>ǾݘVZc>hƾݘVZc>hƾCT~i>ǾT>UƾݘVZc>hƾT>UƾxVT>XľxVT>XľT>UƾT>.ƾxVT>XľT>.ƾJV8>٧þJV8>٧þT>.ƾ@T^>CžJV8>٧þ@T^>CžV>¾V>¾@T^>Cž,T!>žV>¾,T!>žKU/ >7¾KU/ >7¾,T!>ž)~T>ľKU/ >7¾)~T>ľ{Uk>{Uk>)~T>ľTT@>}ľ{Uk>TT@>}ľ[GUC>[GUC>TT@>}ľF*Thn>\ľ[GUC>F*Thn>\ľ3U>OX¾3U>OX¾F*Thn>\ľT3>iľ3U>OX¾T3>iľTj4>dþTj4>dþT3>iľIS>W!žTj4>dþIS>W!žۏT6>þۏT6>þIS>W!ž,S>5žۏT6>þ,S>5žeT>žeT>ž,S>5žESw>'aƾeT>žESw>'aƾITh>cƾITh>cƾESw>'aƾSO>)ǾITh>cƾSO>)ǾO;T>9ǾO;T>9ǾSO>)ǾS[v>ȾO;T>9ǾS[v>Ⱦ=Tv>9;ɾ=Tv>9;ɾS[v>ȾSo>)Ⱦ=Tv>9;ɾSo>)ȾOTDm>nʾOTDm>nʾSo>)ȾS<>ɾOTDm>nʾS<>ɾoT>|˾oT>|˾S<>ɾ+SP>uʾoT>|˾+SP>uʾT>̾T>̾+SP>uʾS?[>˾T>̾S?[>˾ST>;ST>;S?[>˾S>˾ST>;S>˾Up>KlξUp>KlξS>˾ T>˾Up>Klξ T>˾]ZUc>ξ]ZUc>ξ T>˾6T[7>%̾]ZUc>ξ6T[7>%̾{U >Fξ{U >Fξ6T[7>%̾`T2l>x̾{U >Fξ`T2l>x̾U\>KξU\>Kξ`T2l>x̾T>l˾eS>ʾS?[>˾7SL1>@ʾ7SL1>@ʾS?[>˾+SP>uʾ7SL1>@ʾ+SP>uʾS>~ɾS>~ɾ+SP>uʾS<>ɾS>~ɾS<>ɾ­S >Ⱦ­S >ȾS<>ɾSo>)Ⱦ­S >ȾSo>)ȾS>ǾS>ǾSo>)ȾS[v>ȾS>ǾS[v>ȾS'>b(ǾS'>b(ǾS[v>ȾSO>)ǾS'>b(ǾSO>)ǾS;>2rƾT>1ʾT X>ʾT$>ʾT$>ʾT X>ʾT>~˾T$>ʾT>~˾pT>91˾pT>91˾T>~˾T>l˾pT>91˾T>l˾ZT˃>i˾ZT˃>i˾T>l˾`T2l>x̾ZT˃>i˾`T2l>x̾2TxD>5l˾2TxD>5l˾`T2l>x̾6T[7>%̾2TxD>5l˾6T[7>%̾! T>7˾! T>7˾6T[7>%̾ T>˾! T>7˾ T>˾eS>ʾeS>ʾ T>˾S>˾eS>ʾS>˾S?[>˾)~T> lž,T!>žT2>HžT2>Hž,T!>ž@T^>CžT2>Hž@T^>CžT>cƾT>cƾ@T^>CžT>.ƾT>cƾT>.ƾ TE>WǾ TE>WǾT>.ƾT>Uƾ TE>WǾT>UƾTD>ǾTD>ǾT>UƾCT~i>ǾTD>ǾCT~i>Ǿ0T>JȾ0T>JȾCT~i>ǾU@d>ޡȾ0T>JȾU@d>ޡȾ\T$?>s{ɾ\T$?>s{ɾU@d>ޡȾT>#zɾ\T$?>s{ɾT>#zɾT>1ʾT>1ʾT>#zɾT&>BʾT>1ʾT&>BʾT X>ʾSO>)ǾESw>'aƾS;>2rƾS;>2rƾESw>'aƾ,S>5žS;>2rƾ,S>5žS>žS>ž,S>5žIS>W!žS>žIS>W!žT>ržT>ržIS>W!žT3>iľT>ržT3>iľ/TU>>:ž/TU>>:žT3>iľF*Thn>\ľ/TU>>:žF*Thn>\ľWTԔ>7žWTԔ>7žF*Thn>\ľTT@>}ľWTԔ>7žTT@>}ľ)~T> lž)~T> lžTT@>}ľ)~T>ľ)~T> lž)~T>ľ,T!>žn94?(ɾ z4?QɾCCg3?ʾCCg3?ʾ z4?QɾR,)C4?ʾCCg3?ʾR,)C4?ʾT}3?N˾T}3?N˾R,)C4?ʾA3?%X̾T}3?N˾A3?%X̾0nN3?̾0nN3?̾A3?%X̾q_L3?;0nN3?̾q_L3?;T*s2?kV;T*s2?kV;q_L3?;)2?KξT*s2?kV;)2?Kξ1?N;1?N;)2?Kξ"e1?%ξ1?N;"e1?%ξ*л#,1?";*л#,1?";"e1?%ξԻ!1?ξ*л#,1?";Ի!1?ξ0?:;0?:;Ի!1?ξ[0?*ξ0?:;[0?*ξlS/?w̾lS/?w̾[0?*ξ'N/?K;lS/?w̾'N/?K;&M/?z˾&M/?z˾'N/?K;U:*/?K̾&M/?z˾U:*/?K̾f6=/?>ʾf6=/?>ʾU:*/?K̾M.?ʾf6=/?>ʾM.?ʾB>U/?ȾB>U/?ȾM.?ʾW.?ȾB>U/?ȾW.?Ⱦ=C/?zǾ=C/?zǾW.?Ⱦ/V.?SRǾ=C/?zǾ/V.?SRǾ3rJ/?>"ƾ3rJ/?>"ƾ/V.?SRǾJ.?ž3rJ/?>"ƾJ.?ž!/?ľ!/?ľJ.?žj5=C/?Kľ!/?ľj5=C/?Kľ0?þ0?þj5=C/?Kľ/?$þ0?þ/?$þ껿0?jMþ껿0?jMþ/?$þ0?OX¾껿0?jMþ0?OX¾HɻL1?¾HɻL1?¾0?OX¾˻?1?HɻL1?¾˻?1?঻1?þ঻1?þ˻?1?񢻿2?-঻1?þ񢻿2?-ƅ2?hþƅ2?hþ񢻿2?-{2?y¾ƅ2?hþ{2?y¾h3?^$ľh3?^$ľ{2?y¾Xk3?Wþh3?^$ľXk3?WþQ3?3)žQ3?3)žXk3?Wþ<3?ľQ3?3)ž<3?ľ@3?cƾ@3?cƾ<3?ľ )Q4?ƾ@3?cƾ )Q4?ƾs84?Ǿs84?Ǿ )Q4?ƾ4?6Ǿs84?Ǿ4?6Ǿn94?(ɾn94?(ɾ4?6Ǿ z4?QɾIc\>Ⱦ\>ȾS\(+>>ʾS\(+>>ʾ\>Ⱦ\fH>ʾS\(+>>ʾ\fH>ʾ2\>z˾2\>z˾\fH>ʾl[\%>K̾2\>z˾l[\%>K̾\Э>w̾\Э>w̾l[\%>K̾#\>K;\Э>w̾#\>K;[>:;[>:;#\>K;[f>*ξ[>:;[f>*ξ[p>";[p>";[f>*ξL[m>ξ[p>";L[m>ξGB[ S>N;GB[ S>N;L[m>ξ =[k>%ξGB[ S>N; =[k>%ξmZ|>kV;mZ|>kV; =[k>%ξZ>KξmZ|>kV;Z>Kξ#Zƹ>̾#Zƹ>̾Z>KξZUG>;#Zƹ>̾ZUG>;SZ>N˾SZ>N˾ZUG>;jZbf>%X̾SZ>N˾jZbf>%X̾HmZW>ʾHmZW>ʾjZbf>%X̾i?Z)4>ʾHmZW>ʾi?Z)4>ʾYZV>(ɾYZV>(ɾi?Z)4>ʾ'Z>QɾYZV>(ɾ'Z>QɾWZ5>ǾWZ5>Ǿ'Z>Qɾ%Z`>6ǾWZ5>Ǿ%Z`>6Ǿ hZp>cƾ hZp>cƾ%Z`>6Ǿ8ZPR>ƾ hZp>cƾ8ZPR>ƾψZF>3)žψZF>3)ž8ZPR>ƾ.`Z>ľψZF>3)ž.`Z>ľZ4>^$ľZ4>^$ľ.`Z>ľZ@>WþZ4>^$ľZ@>WþZ>hþZ>hþZ@>WþZd5>y¾Z>hþZd5>y¾4[>þ4[>þZd5>y¾,[>-4[>þ,[>-Sy[H>¾Sy[H>¾,[>-~[.>Sy[H>¾~[.>-[:>jMþ-[:>jMþ~[.>[>OX¾-[:>jMþ[>OX¾x[>>þx[>>þ[>OX¾\aS>$þx[>>þ\aS>$þF*\>ľF*\>ľ\aS>$þQ\5>KľF*\>ľQ\5>KľRN\ D>>"ƾRN\ D>>"ƾQ\5>Kľ1|\f>žRN\ D>>"ƾ1|\f>ža\>zǾa\>zǾ1|\f>ž!\#>SRǾa\>zǾ!\#>SRǾIc\>ȾIc\>Ⱦ!\#>SRǾ\>ȾR,)C4?ʾi?Z)4>ʾjZbf>%X̾R,)C4?ʾjZbf>%X̾A3?%X̾A3?%X̾jZbf>%X̾ZUG>;A3?%X̾ZUG>;q_L3?;q_L3?;ZUG>;Z>Kξq_L3?;Z>Kξ)2?Kξ)2?KξZ>Kξ =[k>%ξ)2?Kξ =[k>%ξ"e1?%ξ"e1?%ξ =[k>%ξL[m>ξ"e1?%ξL[m>ξԻ!1?ξԻ!1?ξL[m>ξ[f>*ξԻ!1?ξ[f>*ξ[0?*ξ[0?*ξ[f>*ξ#\>K;[0?*ξ#\>K;'N/?K;'N/?K;#\>K;l[\%>K̾'N/?K;l[\%>K̾U:*/?K̾U:*/?K̾l[\%>K̾\fH>ʾU:*/?K̾\fH>ʾM.?ʾM.?ʾ\fH>ʾ\>ȾM.?ʾ\>ȾW.?ȾW.?Ⱦ\>Ⱦ!\#>SRǾW.?Ⱦ!\#>SRǾ/V.?SRǾ/V.?SRǾ!\#>SRǾ1|\f>ž/V.?SRǾ1|\f>žJ.?žJ.?ž1|\f>žQ\5>KľJ.?žQ\5>Kľj5=C/?Kľj5=C/?KľQ\5>Kľ\aS>$þj5=C/?Kľ\aS>$þ/?$þ/?$þ\aS>$þ[>OX¾/?$þ[>OX¾0?OX¾0?OX¾[>OX¾~[.>0?OX¾~[.>˻?1?˻?1?~[.>,[>-˻?1?,[>-񢻿2?-񢻿2?-,[>-Zd5>y¾񢻿2?-Zd5>y¾{2?y¾{2?y¾Zd5>y¾Z@>Wþ{2?y¾Z@>WþXk3?WþXk3?WþZ@>Wþ.`Z>ľXk3?Wþ.`Z>ľ<3?ľ<3?ľ.`Z>ľ8ZPR>ƾ<3?ľ8ZPR>ƾ )Q4?ƾ )Q4?ƾ8ZPR>ƾ%Z`>6Ǿ )Q4?ƾ%Z`>6Ǿ4?6Ǿn94?(ɾCCg3?ʾHmZW>ʾHmZW>ʾCCg3?ʾT}3?N˾HmZW>ʾT}3?N˾SZ>N˾SZ>N˾T}3?N˾0nN3?̾SZ>N˾0nN3?̾#Zƹ>̾#Zƹ>̾0nN3?̾T*s2?kV;#Zƹ>̾T*s2?kV;mZ|>kV;mZ|>kV;T*s2?kV;1?N;mZ|>kV;1?N;GB[ S>N;GB[ S>N;1?N;*л#,1?";GB[ S>N;*л#,1?";[p>";[p>";*л#,1?";0?:;[p>";0?:;[>:;[>:;0?:;lS/?w̾[>:;lS/?w̾\Э>w̾\Э>w̾lS/?w̾&M/?z˾\Э>w̾&M/?z˾2\>z˾2\>z˾&M/?z˾f6=/?>ʾ2\>z˾f6=/?>ʾS\(+>>ʾS\(+>>ʾf6=/?>ʾB>U/?ȾS\(+>>ʾB>U/?ȾIc\>ȾIc\>ȾB>U/?Ⱦ=C/?zǾIc\>Ⱦ=C/?zǾa\>zǾa\>zǾ=C/?zǾ3rJ/?>"ƾa\>zǾ3rJ/?>"ƾRN\ D>>"ƾRN\ D>>"ƾ3rJ/?>"ƾ!/?ľRN\ D>>"ƾ!/?ľF*\>ľF*\>ľ!/?ľ0?þF*\>ľ0?þx[>>þx[>>þ0?þ껿0?jMþx[>>þ껿0?jMþ-[:>jMþ-[:>jMþ껿0?jMþHɻL1?¾-[:>jMþHɻL1?¾Sy[H>¾Sy[H>¾HɻL1?¾঻1?þSy[H>¾঻1?þ4[>þ4[>þ঻1?þƅ2?hþ4[>þƅ2?hþZ>hþZ>hþƅ2?hþh3?^$ľZ>hþh3?^$ľZ4>^$ľZ4>^$ľh3?^$ľQ3?3)žZ4>^$ľQ3?3)žψZF>3)žψZF>3)žQ3?3)ž@3?cƾψZF>3)ž@3?cƾ hZp>cƾ hZp>cƾ@3?cƾs84?Ǿ hZp>cƾs84?ǾWZ5>Ǿ|f0?)ʾ F˸0?̾r/?Uʾr/?Uʾ F˸0?̾,e"0?YZ;r/?Uʾ,e"0?YZ; M/?\ʾ M/?\ʾ,e"0?YZ;n/?l; M/?\ʾn/?l;Ҍb/?@ʾҌb/?@ʾn/?l;.?=';Ҍb/?@ʾ.?=';V*/?tʾV*/?tʾ.?=';¹6].?̾V*/?tʾ¹6].?̾s&.?ɾs&.?ɾ¹6].?̾x۹-?˾s&.?ɾx۹-?˾Uj.?4ɾUj.?4ɾx۹-?˾)d-?vʾUj.?4ɾ)d-?vʾ.?Ⱦ.?Ⱦ)d-?vʾ_-?gDɾ.?Ⱦ_-?gDɾ?z.?*Ⱦ?z.?*Ⱦ_-?gDɾIW-?NǾ?z.?*ȾIW-?NǾ.?Ǿ.?ǾIW-?NǾw-?ƾ.?Ǿw-?ƾ.?)Ǿ.?)Ǿw-?ƾ㹿-?nž.?)Ǿ㹿-?nž᜹]/?ƾ᜹]/?ƾ㹿-?nžι!(.?oľ᜹]/?ƾι!(.?oľI/?xƾI/?xƾι!(.?oľ.?þI/?xƾ.?þ/?Nƾ/?Nƾ.?þaB/?zIþ/?NƾaB/?zIþx/?Fƾx/?FƾaB/?zIþr/? 7þx/?Fƾr/? 7þkC0?cƾkC0?cƾr/? 7þR1{0?|þkC0?cƾR1{0?|þ_;0?aƾ_;0?aƾR1{0?|þ51?Bľ_;0?aƾ51?BľVj0?ƾVj0?ƾ51?Bľ~1?SľVj0?ƾ~1?Sľ9O0?)oǾ9O0?)oǾ~1?Sľd 1?`ƾ9O0?)oǾd 1?`ƾJ40?ǾL_0?Ⱦ 1?ʾR1{0?#zɾR1{0?#zɾ 1?ʾ1?)5˾R1{0?#zɾ1?)5˾[P0?ɾ[P0?ɾ1?)5˾*.=1?p3̾[P0?ɾ*.=1?p3̾|f0?)ʾ|f0?)ʾ*.=1?p3̾ F˸0?̾?`0h>)oǾe`>`ƾ`">ƾ`">ƾe`>`ƾ`J>Sľ`">ƾ`J>SľaX>aƾaX>aƾ`J>Sľ `^>BľaX>aƾ `^>BľC&aS>cƾC&aS>cƾ `^>Bľs`D>|þC&aS>cƾs`D>|þ?aj>Fƾ?aj>Fƾs`D>|þ4av> 7þ?aj>Fƾ4av> 7þ ZaZ>Nƾ ZaZ>Nƾ4av> 7þua>zIþ ZaZ>Nƾua>zIþra>xƾra>xƾua>zIþгam>þra>xƾгam>þaw>ƾaw>ƾгam>þa>oľaw>ƾa>oľBa#>)ǾBa#>)Ǿa>oľb>nžBa#>)Ǿb>nžaF>ǾaF>Ǿb>nžE4b<>ƾaF>ǾE4b<>ƾKa]>*ȾKa]>*ȾE4b<>ƾ_Ab>NǾKa]>*Ⱦ_Ab>NǾa>Ⱦa>Ⱦ_Ab>NǾ>b >gDɾa>Ⱦ>b >gDɾ a?>4ɾ a?>4ɾ>b >gDɾ)bo>vʾ a?>4ɾ)bo>vʾaD>ɾaD>ɾ)bo>vʾb>˾aD>ɾb>˾ a>tʾ a>tʾb>˾a>̾ a>tʾa>̾tha>@ʾtha>@ʾa>̾Ba">=';tha>@ʾBa">=';Na>\ʾNa>\ʾBa">=';ZaW>l;Na>\ʾZaW>l;4a >Uʾ4a >UʾZaW>l;'aٓ>YZ;4a >Uʾ'aٓ>YZ;an>)ʾan>)ʾ'aٓ>YZ;`>̾an>)ʾ`>̾&a>ɾ&a>ɾ`>̾ף`>p3̾&a>ɾף`>p3̾s`{C>#zɾs`{C>#zɾף`>p3̾w`̛>)5˾s`{C>#zɾw`̛>)5˾`'}>Ⱦ`'}>Ⱦw`̛>)5˾rZ`*>ʾ`'}>ȾrZ`*>ʾj`^>>yȾj`^>>yȾrZ`*>ʾVM`j>Ⱦj`^>>yȾVM`j>Ⱦ`>Ǿ`>ǾVM`j>ȾP`Y>o_Ǿ`>ǾP`Y>o_Ǿ?`0h>)oǾ?`0h>)oǾP`Y>o_Ǿe`>`ƾP`Y>o_Ǿd 1?`ƾe`>`ƾe`>`ƾd 1?`ƾ~1?Sľe`>`ƾ~1?Sľ`J>Sľ`J>Sľ~1?Sľ51?Bľ`J>Sľ51?Bľ `^>Bľ `^>Bľ51?BľR1{0?|þ `^>BľR1{0?|þs`D>|þs`D>|þR1{0?|þr/? 7þs`D>|þr/? 7þ4av> 7þ4av> 7þr/? 7þaB/?zIþ4av> 7þaB/?zIþua>zIþua>zIþaB/?zIþ.?þua>zIþ.?þгam>þгam>þ.?þι!(.?oľгam>þι!(.?oľa>oľa>oľι!(.?oľ㹿-?nža>oľ㹿-?nžb>nžb>nž㹿-?nžw-?ƾb>nžw-?ƾE4b<>ƾE4b<>ƾw-?ƾIW-?NǾE4b<>ƾIW-?NǾ_Ab>NǾ_Ab>NǾIW-?NǾ_-?gDɾ_Ab>NǾ_-?gDɾ>b >gDɾ>b >gDɾ_-?gDɾ)d-?vʾ>b >gDɾ)d-?vʾ)bo>vʾ)bo>vʾ)d-?vʾx۹-?˾)bo>vʾx۹-?˾b>˾b>˾x۹-?˾¹6].?̾b>˾¹6].?̾a>̾a>̾¹6].?̾.?=';a>̾.?=';Ba">=';Ba">=';.?=';n/?l;Ba">=';n/?l;ZaW>l;ZaW>l;n/?l;,e"0?YZ;ZaW>l;,e"0?YZ;'aٓ>YZ;'aٓ>YZ;,e"0?YZ; F˸0?̾'aٓ>YZ; F˸0?̾`>̾`>̾ F˸0?̾*.=1?p3̾`>̾*.=1?p3̾ף`>p3̾ף`>p3̾*.=1?p3̾1?)5˾ף`>p3̾1?)5˾w`̛>)5˾w`̛>)5˾1?)5˾ 1?ʾw`̛>)5˾ 1?ʾrZ`*>ʾ#2Li>Ǿ?`0h>)oǾ:LB>)oǾ:LB>)oǾ?`0h>)oǾ`">ƾ:LB>)oǾ`">ƾILm>ƾILm>ƾ`">ƾaX>aƾILm>ƾaX>aƾ\L >aƾ\L >aƾaX>aƾC&aS>cƾ\L >aƾC&aS>cƾsLS/>cƾsLS/>cƾC&aS>cƾ?aj>FƾsLS/>cƾ?aj>Fƾ;Lв>Fƾ;Lв>Fƾ?aj>Fƾ ZaZ>Nƾ;Lв>Fƾ ZaZ>NƾrL4>NƾrL4>Nƾ ZaZ>Nƾra>xƾrL4>Nƾra>xƾYLf>xƾYLf>xƾra>xƾaw>ƾYLf>xƾaw>ƾL:R>ƾL:R>ƾaw>ƾBa#>)ǾL:R>ƾBa#>)ǾLX>)ǾLX>)ǾBa#>)ǾaF>ǾLX>)ǾaF>ǾwL>ǾwL>ǾaF>ǾKa]>*ȾwL>ǾKa]>*ȾLī>*ȾLī>*ȾKa]>*Ⱦa>ȾLī>*Ⱦa>ȾgLR>ȾgLR>Ⱦa>Ⱦ a?>4ɾgLR>Ⱦ a?>4ɾL>4ɾL>4ɾ a?>4ɾaD>ɾL>4ɾaD>ɾL>ɾL>ɾaD>ɾ a>tʾL>ɾ a>tʾvL{}>tʾvL{}>tʾ a>tʾtha>@ʾvL{}>tʾtha>@ʾݵL4>@ʾݵL4>@ʾtha>@ʾNa>\ʾݵL4>@ʾNa>\ʾOLji>\ʾOLji>\ʾNa>\ʾ4a >UʾOLji>\ʾ4a >UʾL>UʾL>Uʾ4a >Uʾan>)ʾL>Uʾan>)ʾ/iL_>)ʾ/iL_>)ʾan>)ʾ&a>ɾ/iL_>)ʾ&a>ɾSL>ɾSL>ɾ&a>ɾs`{C>#zɾSL>ɾs`{C>#zɾAL>#zɾAL>#zɾs`{C>#zɾ`'}>ȾAL>#zɾ`'}>Ⱦ6LW>Ⱦ6LW>Ⱦ`'}>Ⱦj`^>>yȾ6LW>Ⱦj`^>>yȾ0Lq>>yȾ0Lq>>yȾj`^>>yȾ`>Ǿ0Lq>>yȾ`>Ǿ#2Li>Ǿ#2Li>Ǿ`>Ǿ?`0h>)oǾI^ >g~ž;>EI(x>4žI(x>4ž;>ER;wk>tI(x>4žR;wk>tdI >pždI >pžR;wk>t;>dI >pž;>[Ib>ľ[Ib>ľ;>;9N>$[Ib>ľ;9N>$4I>:ž4I>:ž;9N>$e;F>[4I>:že;F>[ I,>Iž I,>Iže;F>[a<;_> I,>Iža<;_>sHt>žsHt>ža<;_>;>lsHt>ž;>lpH>hƾpH>hƾ;>l:/>pH>hƾ:/>H>LƾH>Lƾ:/>:>vH>Lƾ:>v H>pƾ H>pƾ:>v:_>K H>pƾ:_>KwHt>}ǾwHt>}Ǿ:_>K:F>wHt>}Ǿ:F>uH,><ǾuH,><Ǿ:F>k:L>@euH,><Ǿk:L>@e}~H>TȾ}~H>TȾk:L>@em:>}~H>TȾm:>אHb>ȾאHb>Ⱦm:>;wk>7ۼאHb>Ⱦ;wk>7ۼH>2ȾH>2Ⱦ;wk>7ۼW+;>弾H>2ȾW+;>弾iH(x>ȾiH(x>ȾW+;>弾PS;>jϼiH(x>ȾPS;>jϼH^ >ȾH^ >ȾPS;>jϼB};+>H^ >ȾB};+>!IN>Ⱦ!IN>ȾB};+>;>G!IN>Ⱦ;>GJI7f>5ȾJI7f>5Ⱦ;>G;>?޻JI7f>5Ⱦ;>?޻QpIX8>9ǾQpIX8>9Ǿ;>?޻\;D>YdQpIX8>9Ǿ\;D>YdƏI)>SǾƏI)>SǾ\;D>YdL<>5庾ƏI)>SǾL<>5庾IX8>/ƾIX8>/ƾL<>5庾h<>fIX8>/ƾh<>fгI7f>\UƾгI7f>\Uƾh<>f<+>гI7f>\Uƾ<+>pIN>žpIN>ž<+>򹾂 <>pIN>ž <>I^ >g~žI^ >g~ž <>;>E:K7>{'ƾdI >pž\Kd>:ž\Kd>:ždI >pž[Ib>ľ\Kd>:ž[Ib>ľJJ(>\žJJ(>\ž[Ib>ľ4I>:žJJ(>\ž4I>:žJ>ƾJ>ƾ4I>:ž I,>IžJ>ƾ I,>IžJ|>JƾJ|>Jƾ I,>IžsHt>žJ|>JƾsHt>ž9J_X>ƾ9J_X>ƾsHt>žpH>hƾ9J_X>ƾpH>hƾjJ >jǾjJ >jǾpH>hƾH>LƾjJ >jǾH>LƾUJ>ܓǾUJ>ܓǾH>Lƾ H>pƾUJ>ܓǾ H>pƾ=IJ>Ⱦ=IJ>Ⱦ H>pƾwHt>}Ǿ=IJ>ȾwHt>}ǾDJ݈>ȾDJ݈>ȾwHt>}ǾuH,><ǾDJ݈>ȾuH,><Ǿ=IJH>ɾ=IJH>ɾuH,><Ǿ}~H>TȾ=IJH>ɾ}~H>TȾUJ>s{ɾUJ>s{ɾ}~H>TȾאHb>ȾUJ>s{ɾאHb>ȾjJ >*ɾjJ >*ɾאHb>ȾH>2ȾjJ >*ɾH>2ȾJ>jɾJ>jɾH>2ȾiH(x>ȾJ>jɾiH(x>ȾJ->HɾJ->HɾiH(x>ȾH^ >ȾJ->HɾH^ >ȾrJ>ɾrJ>ɾH^ >Ⱦ!IN>ȾrJ>ɾ!IN>Ⱦ7J>Ƣɾ7J>Ƣɾ!IN>ȾJI7f>5Ⱦ7J>ƢɾJI7f>5ȾKb>IɾKb>IɾJI7f>5ȾQpIX8>9ǾKb>IɾQpIX8>9Ǿ:K)>;Ⱦ:K)>;ȾQpIX8>9ǾƏI)>SǾ:K)>;ȾƏI)>SǾ2K >YȾ2K >YȾƏI)>SǾIX8>/ƾ2K >YȾIX8>/ƾ?K4>Ǿ?K4>ǾIX8>/ƾгI7f>\Uƾ?K4>ǾгI7f>\UƾCK3>OǾCK3>OǾгI7f>\UƾpIN>žCK3>OǾpIN>ž>Ks>ƾ>Ks>ƾpIN>žI^ >g~ž>Ks>ƾI^ >g~ž2K>2rƾ2K>2rƾI^ >g~žI(x>4ž2K>2rƾI(x>4ž:K7>{'ƾ:K7>{'ƾI(x>4ždI >pžYLf>xƾ\Kd>:žrL4>NƾrL4>Nƾ\Kd>:žJJ(>\žrL4>NƾJJ(>\ž;Lв>Fƾ;Lв>FƾJJ(>\žJ>ƾ;Lв>FƾJ>ƾsLS/>cƾsLS/>cƾJ>ƾJ|>JƾsLS/>cƾJ|>Jƾ\L >aƾ\L >aƾJ|>Jƾ9J_X>ƾ\L >aƾ9J_X>ƾILm>ƾILm>ƾ9J_X>ƾjJ >jǾILm>ƾjJ >jǾ:LB>)oǾ:LB>)oǾjJ >jǾUJ>ܓǾ:LB>)oǾUJ>ܓǾ#2Li>Ǿ#2Li>ǾUJ>ܓǾ=IJ>Ⱦ#2Li>Ǿ=IJ>Ⱦ0Lq>>yȾ0Lq>>yȾ=IJ>ȾDJ݈>Ⱦ0Lq>>yȾDJ݈>Ⱦ6LW>Ⱦ6LW>ȾDJ݈>Ⱦ=IJH>ɾ6LW>Ⱦ=IJH>ɾAL>#zɾAL>#zɾ=IJH>ɾUJ>s{ɾAL>#zɾUJ>s{ɾSL>ɾSL>ɾUJ>s{ɾjJ >*ɾSL>ɾjJ >*ɾ/iL_>)ʾ/iL_>)ʾjJ >*ɾJ>jɾ/iL_>)ʾJ>jɾL>UʾL>UʾJ>jɾJ->HɾL>UʾJ->HɾOLji>\ʾOLji>\ʾJ->HɾrJ>ɾOLji>\ʾrJ>ɾݵL4>@ʾݵL4>@ʾrJ>ɾ7J>ƢɾݵL4>@ʾ7J>ƢɾvL{}>tʾvL{}>tʾ7J>ƢɾKb>IɾvL{}>tʾKb>IɾL>ɾL>ɾKb>Iɾ:K)>;ȾL>ɾ:K)>;ȾL>4ɾL>4ɾ:K)>;Ⱦ2K >YȾL>4ɾ2K >YȾgLR>ȾgLR>Ⱦ2K >YȾ?K4>ǾgLR>Ⱦ?K4>ǾLī>*ȾLī>*Ⱦ?K4>ǾCK3>OǾLī>*ȾCK3>OǾwL>ǾwL>ǾCK3>OǾ>Ks>ƾwL>Ǿ>Ks>ƾLX>)ǾLX>)Ǿ>Ks>ƾ2K>2rƾLX>)Ǿ2K>2rƾL:R>ƾL:R>ƾ2K>2rƾ:K7>{'ƾL:R>ƾ:K7>{'ƾYLf>xƾYLf>xƾ:K7>{'ƾ\Kd>:ž|7P>F:r>9Ѿ>7Ď>(>7Ď>(F:r>9Ѿ:h>*>7Ď>(:h>*k7ჾ>΃k7ჾ>΃:h>* : ;>@Mk7ჾ>΃ : ;>@Mj7U>Kj7U>K : ;>@MB:D>iHj7U>KB:D>iH7>'7>'B:D>iH+:0A>*7>'+:0A>*%#7 ]>%#7 ]>+:0A>*_:d> %#7 ]>_:d> V7n>dV7n>d_:d> M:B>PV7n>dM:B>P7 ]> T7 ]> TM:B>P0:D>7 ]> T0:D>>7>h>7>h0:D>?W; ;>T>7>h?W; ;>TN8V>N8V>?W; ;>T;h> ۶N8V>;h> ۶8ჾ>48ჾ>4;h> ۶>8ჾ>4>&9Ď>&9Ď>> ^%¶&9Ď> ^%¶rU9P>1rU9P>1 ^%¶<d>t$rU9P>1<d>t$\9>}\9>}<d>t$ɷ\9>}ɷ9Š>"9Š>"ɷ<0>9Š>"<0>9>(9>(<0><>A9>(<>A9>N9>N<>A,<>ɺ9>N,<>ɺ9G>"9G>",<>ɺf 껾9G>"f 껾z92>Cz92>Cf 껾H=<>]z92>CH=<>]49G>hR49G>hRH=<>];>潾49G>hR;>潾#8>?#8>?;>潾T;>#8>?T;>8>v8>vT;>-;n>8>v-;n>\%8Š>s\%8Š>s-;n>-:d>mL\%8Š>s-:d>mL7>z7>z-:d>mL:wk>37>z:wk>3|7P>|7P>:wk>3F:r>9Ѿ7>z|7P>>7Ď>(\9>}\%8Š>s7>z>7Ď>(8ჾ>4&9Ď>7>z>7Ď>(\9>}\9>}>7Ď>(&9Ď>\9>}&9Ď>rU9P>19>N9G>"9>(9>(9G>"\%8Š>s9>(\%8Š>s9Š>"9Š>"\%8Š>s\9>}#8>?8>v49G>hR49G>hR8>v\%8Š>s49G>hR\%8Š>sz92>Cz92>C\%8Š>s9G>"7>'%#7 ]>j7U>Kj7U>K%#7 ]>8ჾ>4j7U>K8ჾ>4k7ჾ>΃k7ჾ>΃8ჾ>4>7Ď>(>7>hN8V>7 ]> T7 ]> TN8V>8ჾ>47 ]> T8ჾ>4V7n>dV7n>d8ჾ>4%#7 ]>e;F>[?W; ;>Ta<;_>a<;_>?W; ;>T0:D>a<;_>0:D>;>l;>l0:D>M:B>P;>lM:B>P:/>:/>M:B>P_:d> :/>_:d> :>v:>v_:d> +:0A>*:>v+:0A>*:_>K:_>K+:0A>*B:D>iH:_>KB:D>iH:F>:F>B:D>iH : ;>@M:F> : ;>@Mk:L>@ek:L>@e : ;>@M:h>*k:L>@e:h>*m:>m:>:h>*F:r>9Ѿm:>F:r>9Ѿ;wk>7ۼ;wk>7ۼF:r>9Ѿ:wk>3;wk>7ۼ:wk>3W+;>弾W+;>弾:wk>3-:d>mLW+;>弾-:d>mLPS;>jϼPS;>jϼ-:d>mL-;n>PS;>jϼ-;n>B};+>B};+>-;n>T;>B};+>T;>;>G;>GT;>;>潾;>G;>潾;>?޻;>?޻;>潾H=<>];>?޻H=<>]\;D>Yd\;D>YdH=<>]f 껾\;D>Ydf 껾L<>5庾L<>5庾f 껾,<>ɺL<>5庾,<>ɺh<>fh<>f,<>ɺ<>Ah<>f<>A<+><+>򹾪<>A<0><+>򹾑<0> <> <><0>ɷ <>ɷ;>E;>Eɷ<d>t$;>E<d>t$R;wk>tR;wk>t<d>t$ ^%¶R;wk>t ^%¶;>;> ^%¶>;>>;9N>$;9N>$>;h> ۶;9N>$;h> ۶e;F>[e;F>[;h> ۶?W; ;>T˾ӿD?ɾUj.?4ɾӿ5zD?4ɾӿ5zD?4ɾUj.?4ɾ.?Ⱦӿ5zD?4ɾ.?ȾӿfD?ȾӿfD?Ⱦ.?Ⱦ?z.?*ȾӿfD?Ⱦ?z.?*ȾӿbD?*ȾӿbD?*Ⱦ?z.?*Ⱦ.?ǾӿbD?*Ⱦ.?ǾӿoD?ǾӿoD?Ǿ.?Ǿ.?)ǾӿoD?Ǿ.?)ǾӿD?)ǾӿD?)Ǿ.?)Ǿ᜹]/?ƾӿD?)Ǿ᜹]/?ƾ8ӿD?ƾ8ӿD?ƾ᜹]/?ƾI/?xƾ8ӿD?ƾI/?xƾiӿD?xƾiӿD?xƾI/?xƾ/?NƾiӿD?xƾ/?Nƾӿ'E?Nƾӿ'E?Nƾ/?Nƾx/?Fƾӿ'E?Nƾx/?Fƾ۔ӿfE?Fƾ۔ӿfE?Fƾx/?FƾkC0?cƾ۔ӿfE?FƾkC0?cƾӿeE?cƾӿeE?cƾkC0?cƾ_;0?aƾӿeE?cƾ_;0?aƾF|ӿE?aƾF|ӿE?aƾ_;0?aƾVj0?ƾF|ӿE?aƾVj0?ƾqrӿ F?ƾqrӿ F?ƾVj0?ƾ9O0?)oǾqrӿ F?ƾ9O0?)oǾkӿ.F?)oǾkӿ.F?)oǾ9O0?)oǾJ40?Ǿkӿ.F?)oǾJ40?ǾNgӿXBF?ǾfӿEF?>yȾL_0?ȾEiӿ*9F?ȾEiӿ*9F?ȾL_0?ȾR1{0?#zɾEiӿ*9F?ȾR1{0?#zɾ*oӿTF?#zɾ*oӿTF?#zɾR1{0?#zɾ[P0?ɾ*oӿTF?#zɾ[P0?ɾxӿaE?ɾxӿaE?ɾ[P0?ɾ|f0?)ʾxӿaE?ɾ|f0?)ʾՂӿLE?)ʾՂӿLE?)ʾ|f0?)ʾr/?UʾՂӿLE?)ʾr/?UʾHӿE?UʾHӿE?Uʾr/?Uʾ M/?\ʾHӿE?Uʾ M/?\ʾcӿBE?\ʾcӿBE?\ʾ M/?\ʾҌb/?@ʾcӿBE?\ʾҌb/?@ʾ+ӿ}E?@ʾ+ӿ}E?@ʾҌb/?@ʾV*/?tʾ+ӿ}E?@ʾV*/?tʾӿxD?tʾӿxD?tʾV*/?tʾs&.?ɾӿxD?tʾs&.?ɾ˾ӿD?ɾ˾ӿD?ɾs&.?ɾUj.?4ɾӿ'E?Nƾ۔ӿfE?FƾiӿD?xƾiӿD?xƾ۔ӿfE?FƾNgӿXBF?ǾiӿD?xƾNgӿXBF?Ǿ8ӿD?ƾqrӿ F?ƾkӿ.F?)oǾF|ӿE?aƾF|ӿE?aƾkӿ.F?)oǾNgӿXBF?ǾF|ӿE?aƾNgӿXBF?ǾӿeE?cƾӿeE?cƾNgӿXBF?Ǿ۔ӿfE?Fƾ*oӿTF?#zɾxӿaE?ɾEiӿ*9F?ȾEiӿ*9F?ȾxӿaE?ɾ8ӿD?ƾEiӿ*9F?Ⱦ8ӿD?ƾfӿEF?>yȾfӿEF?>yȾ8ӿD?ƾNgӿXBF?ǾHӿE?UʾcӿBE?\ʾՂӿLE?)ʾՂӿLE?)ʾcӿBE?\ʾӿfD?ȾՂӿLE?)ʾӿfD?ȾxӿaE?ɾ˾ӿD?ɾӿ5zD?4ɾӿxD?tʾӿxD?tʾӿ5zD?4ɾӿfD?ȾӿxD?tʾӿfD?Ⱦ+ӿ}E?@ʾ+ӿ}E?@ʾӿfD?ȾcӿBE?\ʾӿD?)Ǿ8ӿD?ƾӿoD?ǾӿoD?Ǿ8ӿD?ƾxӿaE?ɾӿoD?ǾxӿaE?ɾӿbD?*ȾӿbD?*ȾxӿaE?ɾӿfD?ȾffF? C?VgfFF?gfFF? C?V CF?V9BF?A B?AgfFF?﫿gfFF?﫿 B?AffF?﫿(x=J^(x=Jz(j=J>z(j=J>z(j=J>^(x=J^U.S?뵿~ .S?뵿~ .S?Ԭ~ .S?ԬU.S?ԬU.S?뵿~ ?뵿~ ?Ԭ~ .S?Ԭ~ .S?Ԭ~ .S?뵿~ ?뵿P?ԬU.S?Ԭ~ .S?Ԭ~ .S?Ԭ~ ?ԬP?ԬP?뵿P?Ԭ~ ?Ԭ~ ?Ԭ~ ?뵿P?뵿P?뵿~ ?뵿~ .S?뵿~ .S?뵿U.S?뵿P?뵿U.S?뵿U.S?ԬP?ԬP?ԬP?뵿U.S?뵿h?E>뵿֣0?E>뵿֣0?E>Ԭ֣0?E>Ԭh?E>Ԭh?E>뵿֣0?E>뵿֣0?]d>뵿֣0?]d>Ԭ֣0?]d>Ԭ֣0?E>Ԭ֣0?E>뵿h?E>뵿h?E>Ԭh?_d>Ԭh?_d>Ԭh?_d>뵿h?E>뵿h?E>Ԭ֣0?E>Ԭ֣0?]d>Ԭ֣0?]d>Ԭh?_d>Ԭh?E>Ԭh?E>뵿h?_d>뵿֣0?]d>뵿֣0?]d>뵿֣0?E>뵿h?E>뵿֣0?]d>뵿h?_d>뵿h?_d>Ԭh?_d>Ԭ֣0?]d>Ԭ֣0?]d>뵿h?E뵿أ0?E뵿أ0?EԬأ0?EԬh?EԬh?E뵿h?Ud뵿أ0?Wd뵿أ0?E뵿أ0?E뵿h?E뵿h?Ud뵿أ0?Wd뵿أ0?WdԬأ0?EԬأ0?EԬأ0?E뵿أ0?Wd뵿h?Ud뵿h?E뵿h?EԬh?EԬh?UdԬh?Ud뵿h?UdԬh?EԬأ0?EԬأ0?EԬأ0?WdԬh?UdԬh?Ud뵿h?UdԬأ0?WdԬأ0?WdԬأ0?Wd뵿h?Ud뵿8뵿 ~ 뵿 ~ Ԭ ~ Ԭ8Ԭ8뵿3.S뵿 ~ .S뵿 ~ 뵿 ~ 뵿8뵿3.S뵿3.S뵿3.SԬ ~ .SԬ ~ .SԬ ~ .S뵿3.S뵿3.SԬ8Ԭ ~ Ԭ ~ Ԭ ~ .SԬ3.SԬ ~ .S뵿 ~ .SԬ ~ Ԭ ~ Ԭ ~ 뵿 ~ .S뵿3.S뵿8뵿8Ԭ8Ԭ3.SԬ3.S뵿5A53SԬD53SԬDJԬDJԬ5AJԬ5A53SԬ5A53S뵿D53S뵿D53SԬD53SԬ5A53SԬ5A53S뵿5AJ뵿5AJԬDJԬDJԬDJ뵿5AJ뵿D53S뵿DJ뵿DJԬDJԬD53SԬD53S뵿5A53S뵿5A53SԬ5AJԬ5AJԬ5AJ뵿5A53S뵿5A53S뵿5AJ뵿DJ뵿DJ뵿D53S뵿5A53S뵿9AF?뵿DF?뵿DF?ԬDF?Ԭ9AF?Ԭ9AF?뵿9AF?뵿9A03S?뵿D03S?뵿D03S?뵿DF?뵿9AF?뵿9A03S?뵿9A03S?ԬD03S?ԬD03S?ԬD03S?뵿9A03S?뵿9AF?ԬDF?ԬD03S?ԬD03S?Ԭ9A03S?Ԭ9AF?Ԭ9AF?뵿9AF?Ԭ9A03S?Ԭ9A03S?Ԭ9A03S?뵿9AF?뵿DF?뵿D03S?뵿D03S?ԬD03S?ԬDF?ԬDF?뵿1?V1?1F?1F?1F?V1?V1?4?Vz4F?Vz4F?V1F?1?z4F?V CF?V C?V C?V4?Vz4F?V1?V1F?VGAF?VGAF?VGA?V1?VGA?V B?A9BF?A9BF?AGAF?VGA?VffF?﫿ffF?gfFF?gfFF?gfFF?﫿ffF?﫿9BF?AgfFF?﫿gfFF?﫿gfFF? CF?V CF?V CF?VgfFF?gfFF?1F?V1F?1F?1F?1F?V1F?V1F?z4F?Vz4F?Vz4F?V1F?1F? CF?Vz4F?Vz4F?Vz4F?V CF?V CF?VGAF?V1F?V1F?V1F?VGAF?VGAF?VGAF?V9BF?AGAF?VgfFF?﫿gfFF?gfFF?gfFF?gfFF?﫿gfFF?﫿1F?gfFF? CF?V CF?Vz4F?V1F?gfFF?1F?V1F?9BF?AgfFF?﫿gfFF?9BF?AgfFF?gfFF?﫿9BF?AgfFF?1F?V9BF?A1F?VGAF?V B?AffF?ffF?﫿1?V1? B?A1?V B?AGA?V B?A1?4?V C?VffF? B?A C?V B?A4?V8,8>X9^ܚ'?X98ـ?X9xۑ!>X9y>X9A>X9>X9xۑ!>X9A>X9y>X9[/ĵ?X9A>X9r>X9>X9A>X9m>j>X9r>X9A>X9[/ĵ?X9%?X9A>X9m;>X9m>j>X9A>X9%?X9Ⓙ}?X9A>X9O>X9m;>X9A>X9Ⓙ}?X92l?X9A>X92l?X9K?X9A>X9쐓T>X9O>X9A>X9̓8>X9쐓T>X9A>X9>X9̓8>X9A>X9K?X9v͔[ ?X9A>X9p>X9>X9A>X9v͔[ ?X9"ȕ ?X9A>X9 Y>X9p>X9A>X9"ȕ ?X9 ?X9A>X9G{>X9 Y>X9A>X9 ?X9ٖ ?X9A>X9ٖ ?X9oM ?X9A>X9 fn>X9G{>X9A>X9oM ?X9$S ?X9A>X9+K>X9 fn>X9A>X9i\Y7>X9+K>X9A>X9W>X9i\Y7>X9A>X9$S ?X9Q ?X9A>X9>X9W>X9A>X9Q ?X95g ?X9A>X9{>X9>X9A>X95g ?X9y ?X9A>X9y ?X9i[ ?X9A>X9MN>X9{>X9A>X9IĜB>X9MN>X9A>X9i[ ?X9РB ?X9A>X9>X9IĜB>X9A>X9РB ?X9P0?X9A>X9>X9>X9A>X9>X9ʝ>X9A>X9P0?X9e/?X9A>X9Dž I>X9>X9A>X9e/?X9Ղ?X9A>X9Ղ?X9IWG?X9A>X9/*>X9Dž I>X9A>X9IWG?X9BA/?X9A>X9g>X9/*>X9A>X9BA/?X9?X9A>X9 >X9g>X9A>X9?X9wp7>X9A>X9^3ϐ>X9 >X9A>X9wp7>X9o/ D>X9A>X9o/ D>X9 3.>X9A>X9 3.>X9^3ϐ>X9A>X9Dž I>Dž I>X9/*>X9>>X9Dž I>X9 ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ?oM ?oM ? ? ? ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ? ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> > > 3.> 3.> 3.> >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ> 3.> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>쐓T>쐓T>O>O>O>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>O>O>m;>m;>m;>O>O>쐓T>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>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>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>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>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>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>y>y>xۑ!>xۑ!>xۑ!>y>y>y>y>y>y>y>xۑ!>xۑ!>y>y>y>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>y>y>y>xۑ!>xۑ!>>>xۑ!>xۑ!>xۑ!>>>>>>>>xۑ!>xۑ!>>>>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>>>>xۑ!>xۑ!>[/ĵ?[/ĵ?y>y>y>[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?y>y>[/ĵ?[/ĵ?[/ĵ?y>y>y>y>y>y>y>y>[/ĵ?[/ĵ?[/ĵ?y>y>r>r>>>>r>r>r>r>r>r>r>>>r>r>r>>>>>>>>>r>r>r>>>m>j>m>j>r>r>r>m>j>m>j>m>j>m>j>m>j>m>j>m>j>r>r>m>j>m>j>m>j>r>r>r>r>r>r>r>r>m>j>m>j>m>j>r>r>%?%?[/ĵ?[/ĵ?[/ĵ?%?%?%?%?%?%?%?[/ĵ?[/ĵ?%?%?%?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?%?%?%?[/ĵ?[/ĵ?m;>m;>m>j>m>j>m>j>m;>m;>m;>m;>m;>m;>m;>m>j>m>j>m;>m;>m;>m>j>m>j>m>j>m>j>m>j>m>j>m>j>m>j>m;>m;>m;>m>j>m>j>Ⓙ}?Ⓙ}?%?%?%?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?%?%?Ⓙ}?Ⓙ}?Ⓙ}?%?%?%?%?%?%?%?%?Ⓙ}?Ⓙ}?Ⓙ}?%?%?O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>m;>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>2l?2l?Ⓙ}?Ⓙ}?Ⓙ}?2l?2l?2l?2l?2l?2l?2l?Ⓙ}?Ⓙ}?2l?2l?2l?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?2l?2l?2l?Ⓙ}?Ⓙ}?K?K?2l?2l?2l?K?K?K?K?K?K?K?2l?2l?K?K?K?2l?2l?2l?2l?2l?2l?2l?2l?K?K?K?2l?2l?쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>O>쐓T>쐓T>쐓T>O>O>̓8>̓8>쐓T>쐓T>쐓T>̓8>̓8>̓8>̓8>̓8>̓8>̓8>쐓T>쐓T>̓8>̓8>̓8>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>̓8>̓8>̓8>쐓T>쐓T>>>̓8>̓8>̓8>>>>>>>>̓8>̓8>>>>̓8>̓8>̓8>̓8>̓8>̓8>̓8>̓8>>>>̓8>̓8>v͔[ ?v͔[ ?K?K?K?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?K?K?v͔[ ?v͔[ ?v͔[ ?K?K?K?K?K?K?K?K?v͔[ ?v͔[ ?v͔[ ?K?K?p>p>>>>p>p>p>p>p>p>p>>>p>p>p>>>>>>>>>p>p>p>>>"ȕ ?"ȕ ?v͔[ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ? Y> Y>p>p>p> Y> Y> Y> Y> Y> Y> Y>p>p> Y> Y> Y>p>p>p>p>p>p>p>p> Y> Y> Y>p>p> ? ?"ȕ ?"ȕ ?"ȕ ? ? ? ? ? ? ? ?"ȕ ?"ȕ ? ? ? ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ? ? ? ?"ȕ ?"ȕ ?G{>G{> Y> Y> Y>G{>G{>G{>G{>G{>G{>G{> Y> Y>G{>G{>G{> Y> Y> Y> Y> Y> Y> Y> Y>G{>G{>G{> Y> Y> ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ? ?oM ?oM ?oM ? ? ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ? fn> fn>G{>G{>G{> fn> fn> fn> fn> fn> fn> fn>G{>G{> fn> fn> fn>G{>G{>G{>G{>G{>G{>G{>G{> fn> fn> fn>G{>G{>$S ?$S ?oM ?oM ?oM ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?oM ?oM ?$S ?$S ?$S ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?$S ?$S ?$S ?oM ?oM ?+K>+K> fn> fn> fn>+K>+K>+K>+K>+K>+K>+K> fn> fn>+K>+K>+K> fn> fn> fn> fn> fn> fn> fn> fn>+K>+K>+K> fn> fn>i\Y7>i\Y7>+K>+K>+K>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>+K>+K>i\Y7>i\Y7>i\Y7>+K>+K>+K>+K>+K>+K>+K>+K>i\Y7>i\Y7>i\Y7>+K>+K>W>W>i\Y7>i\Y7>i\Y7>W>W>W>W>W>W>W>i\Y7>i\Y7>W>W>W>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>W>W>W>i\Y7>i\Y7>Q ?Q ?$S ?$S ?$S ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?$S ?$S ?Q ?Q ?Q ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?Q ?Q ?Q ?$S ?$S ?>>W>W>W>>>>>>>>W>W>>>>W>W>W>W>W>W>W>W>>>>W>W>5g ?5g ?Q ?Q ?Q ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?Q ?Q ?5g ?5g ?5g ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?5g ?5g ?5g ?Q ?Q ?{>{>>>>{>{>{>{>{>{>{>>>{>{>{>>>>>>>>>{>{>{>>>y ?y ?5g ?5g ?5g ?y ?y ?y ?y ?y ?y ?y ?5g ?5g ?y ?y ?y ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?y ?y ?y ?5g ?5g ?i[ ?i[ ?y ?y ?y ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?y ?y ?i[ ?i[ ?i[ ?y ?y ?y ?y ?y ?y ?y ?y ?i[ ?i[ ?i[ ?y ?y ?MN>MN>{>{>{>MN>MN>MN>MN>MN>MN>MN>{>{>MN>MN>MN>{>{>{>{>{>{>{>{>MN>MN>MN>{>{>IĜB>IĜB>MN>MN>MN>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>MN>MN>IĜB>IĜB>IĜB>MN>MN>MN>MN>MN>MN>MN>MN>IĜB>IĜB>IĜB>MN>MN>РB ?РB ?i[ ?i[ ?i[ ?РB ?РB ?РB ?РB ?РB ?РB ?РB ?i[ ?i[ ?РB ?РB ?РB ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?РB ?РB ?РB ?i[ ?i[ ?>>IĜB>IĜB>IĜB>>>>>>>>IĜB>IĜB>>>>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>>>>IĜB>IĜB>P0?P0?РB ?РB ?РB ?P0?P0?P0?P0?P0?P0?P0?РB ?РB ?P0?P0?P0?РB ?РB ?РB ?РB ?РB ?РB ?РB ?РB ?P0?P0?P0?РB ?РB ?ʝ>ʝ>>>>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>>>ʝ>ʝ>ʝ>>>>>>>>>ʝ>ʝ>ʝ>>>>>ʝ>ʝ>ʝ>>>>>>>>ʝ>ʝ>>>>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>>>>ʝ>ʝ>e/?e/?P0?P0?P0?e/?e/?e/?e/?e/?e/?e/?P0?P0?e/?e/?e/?P0?P0?P0?P0?P0?P0?P0?P0?e/?e/?e/?P0?P0?Dž I>Dž I>>>>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>>>Dž I>Dž I>Dž I>>>>>>>>>Dž I>Dž I>Dž I>>>Ղ?Ղ?e/?e/?e/?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?e/?e/?Ղ?Ղ?Ղ?e/?e/?e/?e/?e/?e/?e/?e/?Ղ?Ղ?Ղ?e/?e/?IWG?IWG?Ղ?Ղ?Ղ?IWG?IWG?IWG?IWG?IWG?IWG?IWG?Ղ?Ղ?IWG?IWG?IWG?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?IWG?IWG?IWG?Ղ?Ղ?/*>/*>Dž I>Dž I>Dž I>/*>/*>/*>/*>/*>/*>/*>Dž I>Dž I>/*>/*>/*>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>/*>/*>/*>Dž I>Dž I>BA/?BA/?IWG?IWG?IWG?BA/?BA/?BA/?BA/?BA/?BA/?BA/?IWG?IWG?BA/?BA/?BA/?IWG?IWG?IWG?IWG?IWG?IWG?IWG?IWG?BA/?BA/?BA/?IWG?IWG?g>g>/*>/*>/*>g>g>g>g>g>g>g>/*>/*>g>g>g>/*>/*>/*>/*>/*>/*>/*>/*>g>g>g>/*>/*>??BA/?BA/?BA/????????BA/?BA/????BA/?BA/?BA/?BA/?BA/?BA/?BA/?BA/????BA/?BA/? > >g>g>g> > > > > > > >g>g> > > >g>g>g>g>g>g>g>g> > > >g>g>wp7>wp7>???wp7>wp7>wp7>wp7>wp7>wp7>wp7>??wp7>wp7>wp7>????????wp7>wp7>wp7>?? > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > 3.> 3.>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > > >^3ϐ>^3ϐ>^3ϐ> > >o/ D>o/ D>wp7>wp7>wp7>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>wp7>wp7>o/ D>o/ D>o/ D>wp7>wp7>wp7>wp7>wp7>wp7>wp7>wp7>o/ D>o/ D>o/ D>wp7>wp7> 3.> 3.>o/ D>o/ D>o/ D> 3.> 3.> 3.> 3.> 3.> 3.> 3.>o/ D>o/ D> 3.> 3.> 3.>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D> 3.> 3.> 3.>o/ D>o/ D> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>`Κ>bGpB>u5q>̾`Κ>b5q>̾n>jپ^>Ř>q`Κ>bNJ?>`Κ>bn>jپNJ?>[< ׳?&3< ?&3< ?3< ?[< ׳?[< ׳?&T< ׳?[)T< ?[)T< ?8(#= ׳?[)#= ?[)T< ?[)T< ?[)T< ׳?[)#= ׳?[)T ׳?[)C# ׳?[)W# ?[)W# ?[))T ?[)T ׳?[)?̼ ׳?g̼ ?g̼ ?&g̼ ?&?̼ ׳?&?̼ ׳?#= ׳?[)T< ׳?[)T< ׳?8([< ׳?3< ?g̼ ?g̼ ??̼ ׳?[< ׳?C# ׳?[)Z% ׳?= ׳?T >= ׳?T ]:= ׳?T ]:= ?T *= ?T [= ?&[= ׳?&[= ׳?&>= ׳?T *= ?T v\ ?&ľ ?T  ׳?T  ׳?T b\ ׳?&v\ ?&ľ ?T ^: ?T m^: ׳?T m^: ׳?T  ׳?T ľ ?T B= ?]:= ?T ]:= ׳?T ]:= ׳?T #B= ׳?B= ?B= ?B= ?#B= ׳?#B= ׳?#B= ׳?B= ?^: ?T B ?B ׳?B ׳?m^: ׳?T ^: ?T )T ?8(T< ?8(T< ׳?8(T< ׳?8(T ׳?8()T ?8(Z% ׳?= ׳?T >= ׳?T #B= ׳?#B= ׳?[< ׳?&[< ׳?$= ׳?~$= ׳?~[= ׳?&[< ׳?&B ׳?B ׳? ׳?T  ׳?T m^: ׳?T B ׳?Z% ׳?= ׳?T [= ׳?&$= ׳?~$= ׳?~#B= ׳?>= ׳?T b\ ׳?&Z% ׳? ?Z !8> ?.8?Z !8> ?.8?.*?.8?Z !8> ?.8?Z !8> ?Z !8> ?.m> ?zm?z*?.m> ?z*?.8> ?.m> ?zm?z*?.m> ?z*?.*> ?.e_> ?ñe_?ñtj?ze_> ?ñtj?ztj> ?z)Z;?ztj?ze_> ?ñtj?ztj> ?ze_> ?ñm?zm> ?ztj> ?ztj> ?ztj?zm?z8?Z !m?ztj?ztj?zشT?k!8?Z !ִT> ?k!tj> ?zm> ?zm> ?z8> ?Z !ִT> ?k!شT?k!ִT> ?k!8> ?Z !8> ?Z !8?Z !شT?k!m?z8?Z !8> ?Z !8> ?Z !m> ?zm?ztj> ?ztj?zشT?k!شT?k!ִT> ?k!tj> ?z'Z;> ?zشT?k!tj?ztj?ztj> ?z'Z;> ?z)Z;?ztj?ztj> ?ztj> ?z'Z;> ?z)Z;?z??????Zp<Zp<Zp<Zp<Zp<Zp<???????Zp<?Zp<?Zp<?B<?B<?B<???????i?iii?ii??i?i?J >J >Q?i?i???????p3&?}ҾJb>PW!O83A?ҾW!OY"MY?bM>3?ҾYHNY"Md ;y8>yY?܆M>Y?bM>v ];A,>ޤfP?ޤfP?Jb>P? Y?M>P?ޤfP?ء>rX7:W>r7:FzK>4X?Jb>P?;YM/vOz?`GP?t S;,>W>r7:@hP?$ɡ>#r_~7:b ;8>Y"M$ɡ>#r_~7:;YMz?`GP?wK>vX?q3?_?U3?la2?_*w> 5?K|>X?yY?܆M>P?\Kx>*X?T3?Ҿ5?5I->PyY?܆M>\Kx>*X?5?5yY?܆M>5?53?Ҿ Z2?f?bM>>Y?M>2>Y:iM>X>YX2?w`b2?#b?'kM>>{Y?} ?u> <ׂ ?><M>>sYbM>>Y?} ?u> <} ?u> y>YƁ ?S><[635?52?_܆M>y>Y5?5܆M>y>Y^6P3Jb>P5?5ot?`Gܨ?ot?`Gܨ?,OJb>P???????????????FzK>4X?܆M>y>Y?2?_?FzK>4X?$ɡ>#r_~7:j0+)d+?Ɓ ?S>2>Y?FzK>4X?j0+)d+?܆M>y>Y?j0+)d+?Ɓ ?S>QJ Ѿii&&?a?2z >z Q?'о^>Qz Ѿ?ii^оQz Ѿ^оQ?z ѾJ ѾQ?J Ѿi??i?iiJ >QJ Ѿ\g\iiz >Q^оJ >QJ >\g\?i?iJ ѾQ?J Ѿ_>g?__>g?_z ѾQ?^оz ѾQ?^>Qz >^>Q?J >J >Q?J >J ѾQ?z >^оQJ >J ѾQJ >J >QJ >J >ii?i?i?i?i?Q?J >J >Q^>z >ii?gk^>g?k^>g?k^>?ii?ii?g^k>g^>k>g?^>k>g?^>k>g?^k>g^k>i?i?i?i??g?k>^>g?k>^>gk>^>ii??i?i?QJ ѾJ >Q?^оz >Q?J ѾJ >?i?i?i?i?QJ ѾJ >QJ ѾJ ѾQ?J ѾJ ѾQ?J ѾJ ѾQ?J ѾJ >QJ ѾJ >Q^>z ѾQ?J >J ѾQ?^оz ѾQ?^оz ѾQJ ѾJ ѾQ^>z ѾQ?J >J >i?i?g?\\>Q?J >J >g?\\>Q?z >^оi??i?Q?J ѾJ >g?\>\>Q?J ѾJ >Q?J ѾJ Ѿg?\>\>g?\\>g?\>\>Q?J ѾJ ѾQ?J ѾJ ѾQ?J >J Ѿg?\\>ii??g\>\>QJ ѾJ >QJ >J >g\\>ii?QJ >J >QJ >J Ѿg\\>g\\>QJ >J ѾQJ ѾJ ѾQJ ѾJ Ѿg\>\>gP]5P>QJ ѾJ >g\>\>Qz Ѿ^оJ >QJ Ѿz >z Q?'о^>Q?z >^>Q?z >>Q>J >QJ Ѿiikg^kNg?.7kNg?.7&&?aii?iii?i?lj>g?ljk>g?^k>g^?ii^gk^>gk_>g?_k>g?^_g?_8^gkJ ѾQJ Ѿz ѾQ^>z ѾQ?^>J ѾQ?J >z ѾQ?^оz ѾQ^о?  \>g\^оQz ѾJ >QJ >^>Q?z >^оQ?z >J ѾQ?J >ѾQ>^>Qz >z >z Q?'о?2_g?_8>Q?9о_g?_8>Q?>_>g?_^оQ?z >^>Q?z >>Q?>_g?_8`>Tg?S^оQz Ѿ\>g\J ѾQJ >J >QJ >J ѾQJ >\>g\\>g\\g\^>Qz >J >QJ >J ѾQJ >\>g\\>g\\g\^>Qz >^оQz Ѿ\>g\J ѾQJ >_>g?_^оQ?z >^>Q?z >>Q?>_g?_8`>Tg?S>Q?9о_g?_8>Q?>z >z Q?'о?2_g?_8J >QJ >^>Q?z >^оQ?z >J ѾQ?J >ѾQ>^>Qz >i?i\>g\^оQz ѾJ ѾQJ Ѿz ѾQ^>z ѾQ?^>J ѾQ?J >z ѾQ?^оz ѾQ^о^gk^>gk_>g?_k>g?^_g?_8^gki?ii?i?lj>g?ljk>g?^k>g^i?iiikg^kNg?.7kNg?.7&&?aiiJ >QJ Ѿz >z Q?'о^>Q?z >^>Q?z >>Q>J >QJ Ѿ_>g?_z ѾQ?^оz ѾQ?^>?i?iJ ѾQ?J Ѿ_>g?_z >Q^оJ >QJ >\g\J >QJ Ѿ\g\ii ? ^оQz Ѿ^оQ?z ѾJ ѾQ?J Ѿi??i?iiJ >QJ Ѿii&&?a?2z >z Q?'о^>Qz ѾQ?QQ?Q?Q??Q?Q?vQLQQvQL?Q?Q??fѸvQ?L?vQfѸL?Q?8Q?vQ?f8L?vQfѸL?vQL?vQ?L?vQ?L?vQ?L?vQL?Q?vQ?L?Q?Q?vQLQ?vQ?L?vQ?L?Q?ѸvQ?LvQ?LvQ?L?vQ?fѸLQvQLvQf8LvQ?LvQ?LvQLvQ?LQ?vQ?LfѸvQLQ8Q8QQ?vQL?Q?Q8Q??vQ?LQQvQL?Q??Q?vQ?L?Q?Ѹ?Q?Ѹ?FQ?cvQ?LQ??vQL?QvQLQ?Q?8???????ݬQݬQݬQQQQɩQk?ɩQk?ɩQk?Q?Q?Q???????????????????Q?Q?Q?Q?Q?Q?Q??Q??Q??Q??Q??Q????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ?Ѹ?Ѹ?Ѹ???????8?8?8?8?8?8?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?5??????55?55?55?55?55?55?555555555555??????F7+"?F7+"?F7+"?Fm."?Fm."?Fm."?F7+"F7+"F7+"Fm."Fm."Fm."5E;#5E;#5E;#1E?#1E?#1E?#5E;#?5E;#?5E;#?5E;#?5E;#?5E;#?1E??#1E??#1E??#5E?;#5E?;#5E?;#5E?;#?5E?;#?5E?;#?5E?;#?5E?;#?5E?;#?F?K'"?F?K'"?F?K'"?F?K'"?F?K'"?F?K'"?F?m."F?m."F?m."F?m."F?m."F?m."????????????????????????????????????????????????????????????????????????????????????????????????????????????F?K'"?F?K'"?F?K'"?F?K'"?F?K'"?F?K'"?F?m."F?m."F?m."F?m."F?m."F?m."1E??#1E??#1E??#5E?;#5E?;#5E?;#5E?;#?5E?;#?5E?;#?5E?;#?5E?;#?5E?;#?1E?#1E?#1E?#1E?#1E?#1E?#5E;#?5E;#?5E;#?5E;#?5E;#?5E;#?Fm."?Fm."?Fm."?Fm."?Fm."?Fm."?Fm."Fm."Fm."Fm."Fm."Fm."??????55?55?55?55?55?55?555555555555??????5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?58?8?8?8?8?8???????Ѹ?Ѹ?Ѹ?Ѹ?Ѹ?Ѹ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Q?Q?Q?Q?Q?Q?Q??Q??Q??Q??Q??Q????????????????????QQQQQQQ?Q?Q?Q?Q?Q?????????????Zp<Zp<Zp<B<B<B<???????Zp<?Zp<?Zp<?Zp<?Zp<?Zp<??????i?i?ii?ii??ii??^>z >Q?i?i???????3?҄ҾJb>PW!O3?ҾW!OY"MyY?܆M>3?ҾY"MY"Mv ];A,>Y?bM>Y?bM>v ];A,>ޤfP?@hP?Jb>P?Y?bM>P?ޤfP?$ɡ>#r_~7:$ɡ>#r_~7:FzK>4X?Jb>P?Y"M,Oot?`Gܨ?t S;,>B>rӟ ;@hP?$ɡ>#r_~7:b ;8>Y"M$ɡ>#r_~7:Y"Mz?`GP?wK>vX?U3?la?U3?la2?_H*ڙw>5?sKa>X?yY?܆M>#VI>(O?\Kx>*X?3?ؒҾ5?5Jb>PyY?܆M>\Kx>*X?5?5yY?܆M>Ѹ5?53?Ҿb2?#b?bM>>Y?܆M>y>YbM>>Yb2?#b Z2?f?bM>>Y?} ?u> <ׂ ?>>YbM>>Y?} ?u> <} ?u> ly>YƁ ?S><{X635?52?_܆M>y>YѸ5?5܆M>y>Y^6P3Jb>P$Dػ5?5ot?`Gܨ?ot?`Gܨ?W!OJb>P???????????????aK>MX?܆M>y>Y?2?_?FzK>4X?ء>rX7: 4+Ta+?Ɓ ?S>y>Y?FzK>4X? 4+Ta+?܆M>y>Y?j0+)d+?Ɓ ?S>{|#n?555?55?5?Ѹ55?k876?3?76?3?76?3?5?5???????@OE gT_Nt T_Nt T@OE gT_Nt T@OE gT%:U?%:U?%:U?%:U?%:U?%:U?????????????????????????Y<4Y<4Y<4Y<4Y<4Y<4?????????????Ѹ?3h$6?3Ѹh$6???8????????5?55?85?555?5i?i?iiii5Ѹ53*6?55iiii͏9ng?3Ѹ*6?'6?a3?3h$6?bgg?͏9ng? ?--?'6?WѸa3?5?5h$6?3? ?--? ?--?i?i5?56 l~e?ii?ii?ii?11?ll???????????????55?5Ѹ5???????????5?55?85?555?55?55?555555Ѹ5?55555555?55?5?5?55?55?55?5?5?5?5?5?55?5?5?5?5?85?5?55?5??????5?85???5?5???????5Ѹ5?55????????????m]??m]??m]??m]??m]??m]????????m]?m]?m]?m]?m]?m]?]?]?]?]?]?]???????>]?>]?>]?>]?>]?>]??????????????????????????????????????????????????????????????????????????m]??m]??m]??m]??m]??m]???????m]?m]?m]?m]?m]?m]?m]?m]?m]?m]?m]?m]???????m]??m]??m]??m]??m]??m]????????????????????????????????????????????>.l?>.l?>.l?>.l?>.l?>.l?B>zj?B>zj?B>zj?O?>F}j? O?>F}j? O?>F}j?  >OZ?þ >OZ?þ >OZ?þw>&Z?þw>&Z?þ >,Z?þo>;?bo>;?bo>;?bo>;?bo>;?bo>;?byn>E?s&Kyn>E?s&Kyn>E?s&KXn> ?KXn> ?KXn> ?Kq> >lq> >lq> >l%>E>l%>E>l%>E>lOL=b3=C}OL=b3=C}OL=b3=C}L= g=z}L= g=z}L= g=z}E6Mf&}E6Mf&}E6Mf&}OLb3C}OLb3C}OLb3C}ClClCl㴾@l㴾@l㴾@lR{n!KR{n!KR{n!Kn9Kn9Kn9Kqm;5qm;5qm;5o;bo;bo;bGzZľGzZľGzZľK ^ZþK ^ZþK ^Zþ????????????ѸѸѸ888?????????????????????oPoPoPsPsPsPWjnWjnWjn☹n☹n☹na& ~a& ~a& ~o@ ~o@ ~o@ ~-<-<-<-<-<-<?????????????????????t>4ut>4ut>4ut>4ut>4ut>4u????????????????????????&m&m&m&m&m&m5?5?5?5?5?5?5?5?5?5?5?5??????????????????????Y?>UY?>UY?>UR ?AUR ?AUR ?AU?????????????????????Y>UY>UY>UY>UY>UY>U???????????????????Ѹ?Ѹ?Ѹ??????????Ѹ?Ѹ?Ѹ888s?Ps?Ps?Po?Po?Po?P>ؘn>ؘn>ؘn>n>n>na=& ~a=& ~a=& ~$=r ~$=r ~$=r ~-?<-?<-?<-?̫<-?̫<-?̫<?????????????????????t4ut4ut4u{&3u{&3u{&3u????????????????????????&>m&>m&>m&>m&>m&>m55?55?55?55?55?55??????????????????????R AUR AUR AUR AUR AUR AU?????????????????????R ?AUR ?AUR ?AUY?>UY?>UY?>U?????????????????????????????????d{?XPd{?XPd{?XPo?Po?Po?P>n>n>n☹>n☹>n☹>n$=r ~$=r ~$=r ~o=@ ~o=@ ~o=@ ~-?<-?<-?<-?<-?<-?<?????????????????????{&3u{&3u{&3ut4ut4ut4u????????????????????????&m&m&m&m&m&m5?5?5?5?5?5?5?5?5?5?5?5??????????????????????Y>UY>UY>UR AUR AUR AU?????????????????????R ?AUR ?AUR ?AUY?>UY?>UY?>U `>S>Bw?ZD?W| ?I=w? -n>I=w? -n>TcҰw? `>S>Bw?3???[R>L? >>L? >þL? >þ???T???T>TcҰw?c@9Ty? >"[=? P?"[=? P?,>>p?TcҰw?!??A?\b>Q?IVjd>YQ?J>\b>Q?IV>2>_d?S>!??A? `>S>Bw?TcҰw? `>S>Bw?TcҰw?,>>p? } ?o<>| ? _d?S>55?55?GK+n>S?!?e?O ????T>3???[RJKO/n>־?JKO/n>־?I(O?#V>3???[R>55?82>_d?S>Z |>ߙ/Zz>G.d.>5;5?m]?E8l> Q?:T>xD?~ ?ZD?W| ?`>V>رw?m]?E8_=uw?Tn>?d> 5???T???TL? >þ_=uw?Tn>???T>,>>p?Z=q?P?"[=? P?L? >>???T>n>ڇQ?H?d> 5?d> 5? >/5Y9Ry? >s>Q?6L!??A?TcҰw? S?!??A? } ?,>>p?5?5?5?5?bP?J> } ?TcҰw?55?GK+n>S?JKO/n>־? dt>Z |>ߙm]?EѸƁ ?.d.>Ɓ ?bP?J>JKO/n>־?Ɓ ?I(O?#V>55?55?8JKO/n>־?JZ=?QP?I=w? -n>_=uw?Tn>rD?v ?s9Ry? >n>ڇQ?HY9Sy?[ >rD?v ?rD?v ?Zg>aQ?Y>n>ڇQ?HA¾gjSA¾gjSA¾gjS7C¾o{j7C¾o{j7C¾o{j7'?r 57'?r 57'?r 5V>'?ϋ%5V>'?ϋ%5V>'?ϋ%5þ.lþ.lþ.lþ.lþ.lþ.ll?þ޺l?þ޺l?þ޺dl?þ# dl?þ# dl?þ# ,l?þ,l?þ,l?þ.l?þNH9.l?þNH9.l?þNH9.l?þQ.l?þQ.l?þQ.l?þ.l?þ.l?þ.l?þѸ.l?þѸ.l?þѸ.l?þNH9.l?þNH9.l?þNH9.l?þ.l?þ.l?þ.l?þNH9.l?þNH9.l?þNH9.l?þQ.l?þQ.l?þQ.l?þѸ.l?þѸ.l?þѸl?þl?þl?þl?þl?þl?þþ.lþ.lþ.lþ.lQ9þ.lQ9þ.lQ98'?x 5?8'?x 5?8'?x 5?8'?x 5?8'?x 5?8'?x 5???????>.l?>.l?>.l?>.l?>.l?>.l?>C]>C]>C]>C]>C]>C]_?~Al_?~A>lob??eݾþ.lþ.lþ.lþ.lþ.lþ.lV>'ϋ>%5?V>'ϋ>%5?V>'ϋ>%5?7'>r 5?7'>r 5?7'>r 5?.l>.l>.l>.l>.l>.l>>.l?8>.l?8>.l?8>.l?NH9>.l?NH9>.l?NH9??????}?}?}?}?}?}?.ľE{l?.ľE{l?.ľE{l?þl?þl?þl?K?K?K?K?K?K?K?K?K?K?K?K?l>l>l>.l>.l>.l>}>}>}>}>}>}>4>}?4>}?4>}?>}?>}?>}?>l?>l?>l?>l?>l?>l??TK??TK??TK??IK??IK??IK?K??K??K??K??K??K??.l?>.l?>.l?>l?>l?>l?>}?o>}?o>}?o>}?4>}?4>}?4>?????????????????????9?9?9?RI?RI?RI???????RI9?RI9?RI9?????????????Ѹ?Ѹ?Ѹ???????8?8?8?QQQѹѹѹ888nnn999888>}>}>}>}>}>}>l>l>l>l>l>l?K?K?K?IK?IK?IKIK?IK?IK?K?K?K?.l?þ.l?þ.l?þl?þl?þl?þ}?}?}?}?}?}?}}}}}}þ.lþ.lþ.lþlþlþlKKK}!K}!K}!K!K}!K}!K}KKKlþlþlþlþlþlþ(}R(}R(}R}4}4}4?????????????????????????????????????????????8?8?8?ѹ?ѹ?ѹ?Q:?Q:?Q:?Ѹ?Ѹ?Ѹ?8?8?8????????????????nnn888ѸѸѸ888 }? }? }?o}?o}?o}?þ.l?þ.l?þ.l?þ.l?þ.l?þ.l?*K?*K?*K?K?K?K?K?K?K?K\?K\?K\?l>l>l>l>l>l>}>}>}>}>}>}>4}4}4}4}4}4} ľ}l ľ}l ľ}lþ.lþ.lþ.lKKKKKKKKKKKKlþlþlþlþlþlþ} } } }}}????????????????????????????8?8?8????????????????????????????????????????????????-;-:?-;-:?-;-:?x;0I:?x;0I:?x;0I:?x;0I:x;0I:x;0I:-;-:-;-:-;-:??????????????????????????????-X;-X;-X;-X;-X;-X;??????????????????????????????????????????y;-:?y;-:?y;-:?-;2I:?-;2I:?-;2I:???????-;2I-;2I-;2Iy;-y;-y;-????????????????8?8?8????????????????????????[~罄[~罄[~?\~?l?\~?l?\~?l罓q q q RqHRqHRqH XW XW XWPX&_PX&_PX&_~4Y95~4Y95~4Y95 425 425 425fXfXfX)KX)KX)KXqqqzqzqzqҋf~ҋf~ҋf~ Xag~ Xag~ Xag~888888ѸѸѸR>(}R>(}R>(}R>(}R>(}R>(}A>crlA>crlA>crl.>E{l.>E{l.>E{l2?x'K2?x'K2?x'K?IK?IK?IKx'K?2x'K?2x'K?25K?|5K?|5K?|E{l?.ľE{l?.ľE{l?.ľl?þl?þl?þ(}?R(}?R(}?R(}?R(}?R(}?R(}R>(}R>(}R>(}R>(}R>(}R>чl>чl>чl>ƈl>ƈl>ƈl> K|? K|? K|?K?K?K?2x'K?2x'K?2x'K?\ %K?\ %K?\ %K?þ.l?þ.l?þ.l?þl?þl?þl?}?}?}?D$C}?D$C}?D$C}????8?8?8??????????????????????Ѹ?Ѹ?Ѹ?8?8?8?Ѹ?Ѹ?Ѹ????????????????????????? =wa~? =wa~? =wa~?F=2b~?F=2b~?F=2b~?M>q?M>q?M>q?M>q?M>q?M>q?>?X?>?X?>?X?v2?jX?v2?jX?v2?jX?(5?4?(5?4?(5?4?5?H4?5?H4?5?H4?X?C?X?C?X?C?ضX?vF?ضX?vF?ضX?vF?0q?8C>0q?8C>0q?8C>0q?8C>0q?8C>0q?8C>2b~?F=2b~?F=2b~?F=2b~?F=2b~?F=2b~?F=???????????????????Q9?Q9?Q9????Q?Q?Q?????????????Ѹ?Ѹ?Ѹ??????ѸѸѸѸѸѸ888?????????????????????R(}R(}R(}R(}R(}R(}þlþlþlþlþlþl\K\K\K2K2K2KK2K2K2K\K\K\.lþ.lþ.lþ.lþ.lþ.lþ}o}o}o}o}o}o(}?R(}?R(}?R}? }? }? l?þl?þl?þ.l?þ.l?þ.l?þK?K?K?K?K?K??IK?IK?IK2?K2?K2?K>l>l>l>l>l>lo>}o>}o>}R>(}R>(}R>(}RIRIRI17:17:17:???????Q9?Q9?Q9??????????Q9?Q9?Q9??????????8?8?8?????????????????????ag~? Xag~? Xag~? Xag~? Xag~? Xag~? X:q?7:q?7:q?7:q?7:q?7:q?7X?X?X?X?X?X?4?&g54?&g54?&g54?`54?`54?`5v?ZXv?ZXv?ZXw?ėXw?ėXw?ėX>q>q>qÅ>qÅ>qÅ>qE$=h~E$=h~E$=h~E$=h~E$=h~E$=h~888E$h~E$h~E$h~E$h~E$h~E$h~ÅqÅqÅqmqmqmqzXzXzXvZXvZXvZX 425 425 425~4Y95~4Y95~4Y95PX&_PX&_PX&_XRXRXR:q7:q7:q70q8C0q8C0q8Cf~ҋ佦f~ҋ佦f~ҋ佦f~ҋ佦f~ҋ佦f~ҋwa~? =wa~? =wa~? =wa~? =wa~? =wa~? =q?M>q?M>q?M>ߨq?>ߨq?>ߨq?>wX?*7?wX?*7?wX?*7?wX?*7?wX?*7?wX?*7?5?5?5?5?5?5?5?5?5?5?5?5?v2?jX?v2?jX?v2?jX?>?X?>?X?>?X?>q?>q?>q?>ߨq?>ߨq?>ߨq?=b~?=b~?=b~? =wa~? =wa~? =wa~?8?8?8?Ѹ?Ѹ?Ѹ?????????????????????????8?8?8????????????????????????????8?8?8? wa~? wa~? wa~?b~?b~?b~?ߨq?ߨq?ߨq?q?q?q?>X?>X?>X?v2jX?v2jX?v2jX?55?55?55?55?55?55?wX*7?wX*7?wX*7?wX*7?wX*7?wX*7?:q7>:q7>:q7>:q7>:q7>:q7>f~ҋ=f~ҋ=f~ҋ=f~=f~=f~=Q9Q9Q9888888?????????????????????????8?8?8??????????????????????????????????????????????????????`=c~?`=c~?`=c~?`=c~?`=c~?`=c~?>ߨq?>ߨq?>ߨq?>ߨq?>ߨq?>ߨq?>?X?>?X?>?X?>?X?>?X?>?X?5?5?5?5?5?5?5?5?5?5?5?5?X?f?X?f?X?f?X?~k?X?~k?X?~k?ߨq?>ߨq?>ߨq?>ߨq?>ߨq?>ߨq?>bd~?,=bd~?,=bd~?,=c~?`=c~?`=c~?`=}4>}4>}4>}4>}4>}4>.l>.l>.l>.l>.l>.l>!K}?!K}?!K}?!K}?!K}?!K}?IK?IK?IK?K?K?K?þ.l?þ.l?þ.l?þ.l?þ.l?þ.l?R(}?R(}?R(}?R(}?R(}?R(}????????????????????8?8?8????RI?RI?RI???????Ѹ?Ѹ?Ѹ????????????ѸѸѸѸѸѸe~?je~?je~?jag~? Xag~? Xag~? X:q?7:q?7:q?7#q?N#q?N#q?N X?W X?W X?WX?RX?RX?R 4?25 4?25 4?25 4?25 4?25 4?25{?X{?X{?X{?X{?X{?X8C>0q8C>0q8C>0q8C>0q8C>0q8C>0q X=ag~ X=ag~ X=ag~ X=ag~ X=ag~ X=ag~ Xag~ Xag~ Xag~ Xag~ Xag~ Xag~8C0q8C0q8C0q8C0q8C0q8C0q{X{X{X{X{X{X4`54`54`54`54`54`5XXXX'X'X':q7:q7:q7:q7:q7:q7f~ҋf~ҋf~ҋh~E$h~E$h~E$2b~?F=2b~?F=2b~?F=2b~?F=2b~?F=2b~?F=ߨq?>ߨq?>ߨq?>q?M>q?M>q?M>X?C?X?C?X?C?9X?*?9X?*?9X?*?5?5?5?5?5?5?5?5?5?5?5?5?*7?wX?*7?wX?*7?wX?*7?wX?*7?wX?*7?wX?>Ԧq?>Ԧq?>Ԧq?>ߨq?>ߨq?>ߨq?F=2b~?F=2b~?F=2b~?F=2b~?F=2b~?F=2b~?????????????????????????????????????????????????????????????F2b~?F2b~?F2b~?F2b~?F2b~?F2b~?Ԧq?Ԧq?Ԧq?ߨq?ߨq?ߨq?*7wX?*7wX?*7wX?*7wX?*7wX?*7wX?55?55?55?55?55?55?jXv2?jXv2?jXv2?jXv2?jXv2?jXv2?ߨq>ߨq>ߨq>ߨq>ߨq>ߨq>2b~F=2b~F=2b~F=wa~ =wa~ =wa~ =????????????????????????????????????????????????Q9Q9Q9Q9Q9Q9ѸѸѸ?????????????????????}>}>}>}>}>}>l>l>l>l>l>l>K?K?K?TK?TK?TK?K?K?K?IK?IK?IK?þl?þl?þl?Aľcrl?Aľcrl?Aľcrl?}?}?}?}?}?}?4}4}4}4}4}4}þlþlþlþ.lþ.lþ.l2K2K2KTKTKTKIKIKIK!K}!K}!K}.lþ.lþ.lþlþlþlþ}4}4}4}}}??????c78y;c78y;c78y;c78y;c78y;c78y;????????????????????????c~`=c~`=c~`=c~`=c~`=c~`=ߨq>ߨq>ߨq>Ԧq>Ԧq>Ԧq>X>?X>?X>?X>?X>?X>?55?55?55?55?55?55?*7wX?*7wX?*7wX?>X?>X?>X?q?q?q?ߨq?ߨq?ߨq?`c~?`c~?`c~?>q?>q?>q?>ߨq?>ߨq?>ߨq?*7?wX?*7?wX?*7?wX?>?X?>?X?>?X?5?5?5?5?5?5?5?5?5?5?5?5?X?>?X?>?X?>?X?>?X?>?X?>?Ԧq?>Ԧq?>Ԧq?>q?M>q?M>q?M>c~?`=c~?`=c~?`=c~?`=c~?`=c~?`=???????????????Ԧq?Ԧq?Ԧq?b~?b~?b~?b~?b~?b~?EX?uZEX?uZEX?uZX?>X?>X?>ߨq?ߨq?ߨq?wX?*7wX?*7wX?*75?55?55?55?;55?;55?;5*7?wX*7?wX*7?wXC?XC?XC?X>q>q>q>ߨq>ߨq>ߨq,=bd~,=bd~,=bd~ߨqߨqߨqM騾qM騾qM騾q>X>X>X>X>X>X5;55;55;5555555wX*7wX*7wX*7X>X>X> XW XW XWߨqߨqߨqԦqԦqԦqb~b~b~b~b~b~\(<\(<\(<uf*<uf*<uf*<ʞRD?ʞRD?ʞRD?R?R?R?Ca:%ѸCa:%ѸCa:%Ѹ܀BPr&܀BPr&܀BPr&B?%B?%B?%B?%B?%B?%??????ـR??8ـR??8ـR??8:R?lB?:R?lB?:R?lB?H?D<H?D<H?D<c?+ ,<c?+ ,<c?+ ,<?????????'<'<'<*W]<*W]<*W]<zR?zR?zR?Ra?Ra?Ra?CT3%KѸCT3%KѸCT3%KѸB%B%B%B?%B?%B?%C?a:%8C?a:%8C?a:%8??????R?a?R?a?R?a?R?a?R?a?R?a??xG<?xG<?xG<*?W]<*?W]<*?W]<QI:QI:QI:??????0? >zi?=] >zi?=] Ѿ[i? =<Ѿv0?8 Ѿ\X0?>lA2? >GA?[i? =<>[i? =<>v0?8 >Aa?/x{uMڊjWP />xP />xP?}FMx3tM_2Pv0?8 Ѿi?K= Ѿ[i? =<Ѿ />xP_2PA🾆?xEoӁM?}FM?}FM>lA2? A"'?/x{uMAa?v0?8 >v0?8 ѾڊjWPxEoӁMv0?8 ѾxEoӁMv0?8 >?}FMzi?=] >"> A'?zi?=] Ѿzi?=] >?}FM[i? =<Ѿ?}FM />xP.l>.l>.l>.l>.l>.l>.l>Ѹ.l>Ѹ.l>iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii????????????????????????????????????????????????????????????????????????FD?CZ$?FD?CZ$?FD?CZ$?FD?CZ$?FD?CZ$?FD?CZ$?D$?8D$?8D$?8D$?8D$?8D$?8??????RI9RI9RI95?55?55?55?55?55?5555555555555RI9RI9RI9???UD?@H$?bѸUD?@H$?bѸUD?@H$?bѸGC?%?GC?%?GC?%???????>Ca%?>Ca%?>Ca%?UD@H$?b8UD@H$?b8UD@H$?b85?55?55?55?55?55?55555555;55;55;5??????Ѹ?Ѹ?Ѹ??????????????????????????????????????????????PA?A" ? Z$ ?P?AA" ?P?AA" ? ??Z$ ?PA?A" ? ?Z$ ? Z$ ?P?AA" ? ?Z$ ? ??Z$ ?PA?A" ?? ?PA?A" ?j^ ? ?PAA" ?PA?A" ??? ?P?A?A" ?P?AA" ?? ?P?AA" ?j?^? ?j^ ?PAA" ?P?AA" ?j?^ ? ?Z$ ?PAA" ?PA?A" ?j?^? ? ??Z$ ?j?^? ?j^? ?j^? ?PA?A" ? Z$ ?P?AA" ?P?AA" ? ??Z$ ?PA?A" ? ?Z$ ? Z$ ?P?AA" ? ?Z$ ? ??Z$ ?PA?A" ?? ?PA?A" ?j^ ? ?PAA" ?PA?A" ?j^ ?PAA" ?P?AA" ?j?^ ? ?Z$ ?PAA" ??? ?P?A?A" ?P?AA" ?? ?P?AA" ?j?^? ?PA?A" ?j?^? ? ??Z$ ?j?^? ?j^? ?j^? ? ?Z$ ? Z$ ?P?AA" ? ?Z$ ? ??Z$ ?PA?A" ?PA?A" ? Z$ ?P?AA" ?P?AA" ? ??Z$ ?PA?A" ?j^ ?PAA" ?P?AA" ?j?^ ? ?Z$ ?PAA" ?? ?PA?A" ?j^ ? ?PAA" ?PA?A" ?PA?A" ?j?^? ? ??Z$ ?j?^? ?j^? ?j^? ??? ?P?A?A" ?P?AA" ?? ?P?AA" ?j?^? ? ?Z$ ? Z$ ?P?AA" ? ?Z$ ? ??Z$ ?PA?A" ?PA?A" ? Z$ ?P?AA" ?P?AA" ? ??Z$ ?PA?A" ?j^ ?PAA" ?P?AA" ?j?^ ? ?Z$ ?PAA" ?? ?PA?A" ?j^ ? ?PAA" ?PA?A" ?PA?A" ?j?^? ? ??Z$ ?j?^? ?j^? ?j^? ??? ?P?A?A" ?P?AA" ?? ?P?AA" ?j?^? ?M??H???H??M??H?H?? O?-?H???M?? O-??H?M??UO?M? O-??UO??M??M?M??M??J9 ?UO?J9 ?H??M??UO???M??? O?-??UO??UO??J?9? ?M??J9? ?H??M???H???F ^#?*? ?$K ?#?9= ?$K ?#?9= F ?^#?*? $K #?9= $K #?9= ?$K #?9= ?$K ?#?9= ?$K ?#?9= $K ?#?9= $K #?9= $K #?9= ?$K #?9= H #?: $K ?#?9= $K ?#?9= =D ?>#?< H #?: =D ?>#?< ?=D ?>#?< ?=D ?>#?< =D ?>#?< =D ?>#?< =D ?>#?< ?$K #?9= ?$K ?#?9= ?H ?#?: ?H ?#?: ?H #?: ?=D >#?< ?H #?: ?H #?: ?H #?: =D >#?< =D >#?< =D >#?< ?T??D?r?I?l?5P?b?#??E??#y-??2f/??ix1T?e?/??i??????E]ݷ??O}??]/??i/??iOG?_??},1?k,1?k?r?I?r?I?G?,1?kݷ??O}?????????]??cE??#y???t?K?,1?k?*P?l???????ŽŽ?)???Ž??Ž)#?H : ?#?$K ?9= ??0??Ž?Ž?>#?=D < ?>#?=D < #?D C ?)?’п?’п>#?=D < ^#?F *? #?$K ?9= f#?M ?8 ?^#?F ?*? ?#?$K 9= ?f#?M 8 #?$K ?9= ’?п’?п?’?п?>#?=D ?< ?>#?=D ?< Ž’?п#?H ?: >#?=D ?< #?$K 9= Ž>#=D ?< ??)????Ž?’?п>#=D ?< >#=D ?< ???0??Ž??)?0??Ž?)??#$K ?9= ?^#F ?*? #$K 9= #$K 9= ^#F *? ?#$K ?9= ?#$K ?9= ??Ž?Ž?Ž#H : #$K ?9= >#=D < ?>#=D < ?)?Ž?’п?>#=D < ?#H ?: ?#H : ??Ž??Ž???Ž?#H ?: ?RI9?RI9?RI9?RI9?RI9?RI9?RI9RI9RI9RI9RI9RI9??????????????????>.p?>.p?>.p?>.p?>.p?>.p?.p.p.p.p.p.p??????>.p?>.p?>.p?>.p?>.p?>.p?.p.p.p.p.p.p>.p>.p>.p>.p>.p>.p.p?.p?.p?.p?.p?.p???????>.p>.p>.p>.p>.p>.p.p?.p?.p?.p?.p?.p??????????????????????????????????????????????????k?k?k??????????n:?n:?n:?Ѹ?Ѹ?Ѹ?8?8?8?k?k?k??????????n:?n:?n:??????????????????????Ѹ?Ѹ?Ѹ????8?8?8nnnѹѹѹn:n:n:888kkk888999QI:QI:QI:????????????????????????P}l>P}l>P}l>P}l>P}l>P}l>}l >}l >}l >}l >}l >}l >K?K?K?K?K?K?K?K?K?TK?TK?TK?/1ľul?/1ľul?/1ľul?þl?þl?þl?8}?8}?8}?}?}?}?lP}lP}lP}Fw}Fw}Fw}ľOzlľOzlľOzlþ.lþ.lþ.lKKK| K| K| K K| K| K|KKKE{l.ľE{l.ľE{l.ľ}l ľ}l ľ}l ľ(}R(}R(}RP}lP}lP}lP}?lP}?lP}?l(}?R(}?R(}?RE{l?.ľE{l?.ľE{l?.ľ}l? ľ}l? ľ}l? ľK?K?K? K?| K?| K?|\?K\?K\?K?K?K?K>l>l>l.>E{l.>E{l.>E{lF>w}F>w}F>w}l>P}l>P}l>P}>}?>}?>}?R>(}?R>(}?R>(}?>чl?>чl?>чl?/1>ul?/1>ul?/1>ul??TK??TK??TK??K??K??K?K??K??K??K??K??K??}l? >}l? >}l? >}l? >}l? >}l? >P}?l>P}?l>P}?l>P}?l>P}?l>P}?l>??????5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?5555555555555?55?55?55?55?55?5????????????????????????5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?5555555555555?55?55?55?55?55?5????????????????????????5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?5555555555555?55?55?55?55?55?5????????????????????????5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?5555555555555?55?55?55?55?55?5????????????????????????55?55?55?55?55?55?5555555555555?55?55?55?55?55?5??????5?5?5?5?5?5?5?5?5?5?5?5?????????????????????????5?5?5?5?5?5?5?5?5?5?5?5???????5?55?55?55?55?55?555555555555555?55?55?55?55?55???????????????????S'?(A?S'?(A?S'?(A?S'?(A?S'?(A?S'?(A?^?^?^?^?^?^???????????????????>~k=>~k=>~k=>~k=>~k=>~k=xpp>xpp>xpp>dp>dp>dp>T"?T"?T"?T?T?T?e-;?e-;?e-;?e-;?e-;?e-;?m|E_?m|E_?m|E_?fB_?fB_?fB_?<5~v?<5~v?<5~v?/v?/v?/v?%?%?%?%?%?%?JH>#{?JH>#{?JH>#{?cH> {?cH> {?cH> {?{>qth?{>qth?{>qth?{>qth?{>qth?{>qth??7I??7I??7I??7I??7I??7I?5?5?5?5?5?5?5?5?5?5?5?5?G?FB ?G?FB ?G?FB ?G?CF ?G?CF ?G?CF ?e?$>e?$>e?$>e?Q4>e?Q4>e?Q4>x?q>x?q>x?q>x?-q>x?-q>x?-q>?<?<?<?<?<?< z?=J z?=J z?=J z?=J z?=J z?=Jj?Ͼj?Ͼj?Ͼ0j?tϾ0j?tϾ0j?tϾM]?կM]?կM]?կM]?կM]?կM]?կ.J?I0.J?I0.J?I0J?-J?-J?- ?zRK ?zRK ?zRK ?zRK ?zRK ?zRK> l> l> l> l> l> l>}>}>}>}>}>}R(}R(}R(}R(}R(}R(}AľcrlAľcrlAľcrlAľcrlAľcrlAľcrlTKTKTKTKTKTKTKTKTKKKKul/1ľul/1ľul/1ľtl5ľtl5ľtl5ľ}8}8}8(}R(}R(}Rq>q>q>q>q>q>X(#?X(#?X(#?X(#?X(#?X(#?55?55?55?55?55?55?(#X?(#X?(#X?&-X?&-X?&-X?mq?mq?mq?q?q?q?je~?je~?je~?je~?je~?je~???????ҋ=f~?ҋ=f~?ҋ=f~?0=e~?0=e~?0=e~?>q?>q?>q?m>q?m>q?m>q?(#?X?(#?X?(#?X?(#?X?(#?X?(#?X? 5?f4? 5?f4? 5?f4? 5?f4? 5?f4? 5?f4?9X?*?9X?*?9X?*?X?(#?X?(#?X?(#?q?>q?>q?>q?>q?>q?>}?8>}?8>}?8>}?8>}?8>}?8>tl?5>tl?5>tl?5>crl?A>crl?A>crl?A>K??K??K??K??K??K???TK??TK??TK??K??K??K?/1>ul?/1>ul?/1>ul?/1>ul?/1>ul?/1>ul?R>(}?R>(}?R>(}?R>(}?R>(}?R>(}???????0e~?0e~?0e~?je~?je~?je~?mq?mq?mq?q?q?q?(#X?(#X?(#X?(#X?(#X?(#X?;55?;55?;55?55?55?55?-X&?-X&?-X&?-X&?-X&?-X&?qm>qm>qm>q>q>q>e~j=e~j=e~j=f~ҋ=f~ҋ=f~ҋ=?8?8?8???????Q?Q?Q?QI?QI?QI????17:?17:?17:????k:?k:?k:?;?;?;?k?k?k?:?:?:?17?17?17????17?17?17????8?8?8?ѹ?ѹ?ѹ?k?k?k???????ѹ?ѹ?ѹ?Q9?Q9?Q9????Q9?Q9?Q9???????k:?k:?k:????n:?n:?n:??????????QI:?QI:?QI:?RI?RI?RI?QI?QI?QI?RI9?RI9?RI9?k:?k:?k:?Q?Q?Q?k:?k:?k:?k;?k;?k;8?8?8?????Ѹ?Ѹ?Ѹ?n:?n:?n:????ѹ?ѹ?ѹ??????????9?9?9????RI?RI?RI???????ĺ?ĺ?ĺ?RI?RI?RI?RI9?RI9?RI9???QQQdddѸѸѸRIRIRIѸѸѸn:n:n:---O :O :O :RIRIRIQ9Q9Q9   ѸѸѸRIRIRIS0;S0;S0;ѸѸѸ999nnn:::nnnQQQQ9Q9Q9ѸѸѸQ9Q9Q9171717KI:KI:KI:999RIRIRIn:n:n:Q9Q9Q9n:n:n:QQQѹѹѹ>~k=>~k=>~k=>~k=>~k=>~k=xpp>xpp>xpp>Bp->Bp->Bp->T"?T"?T"?T&?T&?T&?e-;?e-;?e-;?"-;?"-;?"-;?fB_?fB_?fB_?fB_?fB_?fB_?<5~v?<5~v?<5~v?<5~v?<5~v?<5~v?g$?g$?g$?%?%?%?JH>#{?JH>#{?JH>#{?cH> {?cH> {?cH> {?{>qth?{>qth?{>qth?{>qth?{>qth?{>qth??7I??7I??7I??7I??7I??7I?5?5?5?5?5?5?5?5?5?5?5?5?G?FB ?G?FB ?G?FB ?G?CF ?G?CF ?G?CF ?e?Q4>e?Q4>e?Q4>e?Q4>e?Q4>e?Q4>x?q>x?q>x?q>x?)q>x?)q>x?)q>?<?<?<?<?<?< z?=J z?=J z?=J z?=J z?=J z?=J0j?tϾ0j?tϾ0j?tϾj?Ͼj?Ͼj?ϾM]?կM]?կM]?կM]?կM]?կM]?կ.J?I0.J?I0.J?I0.J?I0.J?I0.J?I0 ?zRK ?zRK ?zRK ?zRK ?zRK ?zRK> l> l> l> l> l> l>}>}>}>}>}>}R(}R(}R(}R(}R(}R(}AľcrlAľcrlAľcrlAľcrlAľcrlAľcrlTKTKTKTKTKTKKKKKKKtl5ľtl5ľtl5ľul/1ľul/1ľul/1ľ(}R(}R(}R}8}8}8qm>qm>qm>qm>qm>qm>X(#?X(#?X(#?-X&?-X&?-X&?55?55?55?55?55?55?(#X?(#X?(#X?&-X?&-X?&-X?q?q?q?q?q?q?je~?je~?je~?je~?je~?je~???????ҋ=f~?ҋ=f~?ҋ=f~?j=e~?j=e~?j=e~?>q?>q?>q?>q?>q?>q?(#?X?(#?X?(#?X?(#?X?(#?X?(#?X? 5?f4? 5?f4? 5?f4?5?5?5?5?5?5?X?(#?X?(#?X?(#?9X?*?9X?*?9X?*?q?m>q?m>q?m>q?m>q?m>q?m>}?8>}?8>}?8>}?8>}?8>}?8>crl?A>crl?A>crl?A>crl?A>crl?A>crl?A>K??K??K??K??K??K???TK??TK??TK??K??K??K?/1>ul?/1>ul?/1>ul?&>wl?&>wl?&>wl?R>(}?R>(}?R>(}?R>(}?R>(}?R>(}???????ҋf~?ҋf~?ҋf~?je~?je~?je~?mq?mq?mq?q?q?q?(#X?(#X?(#X?&-X?&-X?&-X?55?55?55?55?55?55?9X*?9X*?9X*?X(#?X(#?X(#?qm>qm>qm>q>q>q>e~j=e~j=e~j=e~j=e~j=e~j=????Q9?Q9?Q9?;?;?;????KI:?KI:?KI:?8?8?8?k?k?k?RI9?RI9?RI9????n?n?n?8?8?8?QI?QI?QI?????????????t:?t:?t:?Q?Q?Q????RI9?RI9?RI9???????8?8?8?RI9?RI9?RI9?k?k?k????S0;?S0;?S0;?n:?n:?n:??????????n?n?n???????Ѹ?Ѹ?Ѹ????Ѹ?Ѹ?Ѹ?Q?Q?Q?):?):?):?k?k?k?ĺ?ĺ?ĺ8?;8?;8?;????8?8?8?Q9?Q9?Q9????Q?Q?Q?RI9?RI9?RI9?Ѹ?Ѹ?Ѹ?RI9?RI9?RI9?ĺ?ĺ?ĺ?????????????RI9?RI9?RI9????8?8?8?Q9?Q9?Q9RI9RI9RI9t޺t޺t޺nnnQ9Q9Q9QI:QI:QI:888888ѸѸѸ999nnnRI9RI9RI9QI:QI:QI:999nnn-:-:-:17:17:17:RI9RI9RI97;7;7;ѸѸѸnnnk:k:k:nnnRIRIRIѸѸѸRIRIRIkkk:::S0S0S0Q9Q9Q9171717n:n:n:nnnRIRIRIRI9RI9RI9RIRIRI>~k=>~k=>~k=>~k=>~k=>~k=Bp->Bp->Bp->Bp->Bp->Bp->T"?T"?T"?T?T?T?e-;?e-;?e-;?e-;?e-;?e-;?fB_?fB_?fB_?fB_?fB_?fB_?<5~v?<5~v?<5~v?/v?/v?/v?%?%?%?%?%?%?JH>#{?JH>#{?JH>#{?cH> {?cH> {?cH> {?{>qth?{>qth?{>qth?v>uh?v>uh?v>uh??7I??7I??7I??7I??7I??7I?5?5?5?5?5?5?5?5?5?5?5?5?G?FB ?G?FB ?G?FB ? G?vI ? G?vI ? G?vI ?e?)>e?)>e?)>e?)>e?)>e?)>x?q>x?q>x?q>x?-q>x?-q>x?-q>?<?<?<?<?<?< z?=J z?=J z?=J z?=J z?=J z?=Jj?Ͼj?Ͼj?Ͼ0j?tϾ0j?tϾ0j?tϾM]?կM]?կM]?կM]?կM]?կM]?կ.J?I0.J?I0.J?I0.J?I0.J?I0.J?I0 ?zRK ?zRK ?zRK,?POK,?POK,?POK> l> l> l> l> l> l>}>}>}>}>}>}R(}R(}R(}R(}R(}R(}AľcrlAľcrlAľcrlAľcrlAľcrlAľcrlTKTKTKTKTKTKTKTKTKKKKtl5ľtl5ľtl5ľtl5ľtl5ľtl5ľ}8}8}8(}R(}R(}Rq>q>q>qm>qm>qm>X(#?X(#?X(#?X(#?X(#?X(#?55?55?55?55?55?55?vX?vX?vX?(#X?(#X?(#X?q?q?q?q?q?q?je~?je~?je~?je~?je~?je~???????j=e~?j=e~?j=e~?0=e~?0=e~?0=e~?>q?>q?>q?>q?>q?>q?(#?X?(#?X?(#?X?(#?X?(#?X?(#?X? 5?f4? 5?f4? 5?f4?;5?5?;5?5?;5?5?9X?*?9X?*?9X?*?X?(#?X?(#?X?(#?q?m>q?m>q?m>q?>q?>q?>}?8>}?8>}?8>}?8>}?8>}?8>crl?A>crl?A>crl?A>crl?A>crl?A>crl?A>K??K??K??K??K??K???TK??TK??TK??K??K??K?/1>ul?/1>ul?/1>ul?/1>ul?/1>ul?/1>ul?R>(}?R>(}?R>(}?R>(}?R>(}?R>(}???????0e~?0e~?0e~?je~?je~?je~?mq?mq?mq?+Eq?+Eq?+Eq?(#X?(#X?(#X?(#X?(#X?(#X?55?55?55?55?55?55?-X&?-X&?-X&?X(#?X(#?X(#?qm>qm>qm>q>q>q>e~j=e~j=e~j=e~j=e~j=e~j=????Q?Q?Q?5I?5I?5I????KI?KI?KI?Q9?Q9?Q9????RI?RI?RI????n:?n:?n:?Ѹ?Ѹ?Ѹ?QI:?QI:?QI:?????????????t޺?t޺?t޺?Q?Q?Q????RI?RI?RI???????Ѹ?Ѹ?Ѹ?RI?RI?RI?k:?k:?k:????S0?S0?S0????RI9?RI9?RI9?8?8?8????8?8?8?Q9?Q9?Q9?)?)?)?t:?t:?t:???8?8?8??n?n?n??????????n:?n:?n:????RI9?RI9?RI9???????Q9?Q9?Q9?QI?QI?QI?9?9?9?RI?RI?RI?:?:?:?????????????RI?RI?RI???????Q?Q?QRI9RI9RI9t:t:t:ѸѸѸѹѹѹ888RI9RI9RI9ѸѸѸQ9Q9Q9RIRIRI88817:17:17:nnnQQQ999ѹѹѹQQQnnnRIRIRIn:n:n:Q9Q9Q9KIKIKI-:-:-:KIKIKIQ9Q9Q9QQQĺĺĺ8;8;8;RIRIRIѸѸѸRI9RI9RI9nnnQQQѸѸѸQ9Q9Q9???>/ r>/ r>/ r>/ r>/ r>/ r>/ r>/ r>/ rqY~>ڽy oqY~>ڽy oqY~>ڽy o(~>)zPo(~>)zPo(~>)zPo> 1_> 1_> 1_>ը_>ը_>ը_ ; =)@ ; =)@ ; =)@ƺ;D) @ƺ;D) @ƺ;D) @nOaNnOaNnOaNw/kO?w/kO? OZ$ tfK$ tfK$ tfKg"t#fU@g"t#fU@!;tf4?< nR< nR< nR59n59n59n???????????????????????????????????????????????????????????????????????????.lþ.lþ.lþIKIKIKIKIKIK\K\K\K\K\K\K ľ}l ľ}l ľ}l ľ}l ľ}l ľ}llP}lP}lP}4}4}4}l>P}l>P}l>P}4>}4>}4>} >}l >}l >}l >}l >}l >}l}?!K}?!K}?!K}?!K}?!K}?!KIK?IK?IK?IK?IK?IK?.l?þ.l?þ.l?þ}l? ľ}l? ľ}l? ľ}?o}?o}?o}?4}?4}?4P}?l>P}?l>P}?l>P}?l>P}?l>P}?l>}l? >}l? >}l? >}l? >}l? >}l? >TK??TK??TK??IK??IK??IK???IK??IK??IK?}?!K?}?!K?}?!K?>l?>l?>l?>l?>l?>l?4>}?4>}?4>}?4>}?4>}?4>}?4}?4}?4}?4}?4}?4}?þчl?þчl?þчl?þчl?þчl?þчl?K?K?K?K?K?K?K?K?K?IK?IK?IK?}l >}l >}l >}l >}l >}l >P}l>P}l>P}l>P}l>P}l>P}l>}o}o}o}4}4}4.lþ.lþ.lþ???c_c_c_CgU_CgU_CgU_m|E_m|E_m|E_%co%co%co%co%co%co%co%co%co%co%co%coOҬzOҬzOҬzOҬzOҬzOҬz|P |P |P |P |P |P =ު~=ު~=ު~=ު~=ު~=ު~=3~=3~=3~=3~=3~=3~J>CwJ>CwJ>Cw>ݼw>ݼw>ݼwo>8wo>8wo>8wo>8wo>8wo>8w_j>j_j>j_j>j_j>j_j>j_j>j~k?X~k?X~k?Xf?Xf?Xf?X'?\EAd'?>EAd'?>EA]C?o%]C?o%]C?o%]C?o%]C?o%]C?o%oC?jZ%oC?jZ%oC?jZ%oC?jZ%oC?jZ%oC?jZ%eC?Ie%eC?Ie%eC?Ie%cC?h%cC?h%cC?h%^Z?o^Z?o^Z?o3RZ?3RZ?3RZ?,4l?kž,4l?kž,4l?kž,4l?kž,4l?kž,4l?kž|x?Bv|x?Bv|x?Bv|x?Bv|x?Bv|x?Bv~?-~?-~?-~?/~?/~?/~?G~?G~?G~?!~?!~?!y?=y?=y?=y?=y?=y?=%y??\>%y??\>%y??\>%y??\>%y??\>%y??\>3n?|b>3n?|b>3n?|b>3n?|b>3n?|b>3n?|b>kb?>kb?>kb?>lb?}>lb?}>lb?}>X?$s?X?$s?X?$s?X?$s?X?$s?X?$s?G?rM ?G?rM ?G?rM ? G?vI ? G?vI ? G?vI ?,?jDh?iK>jDh?iK>jDh?iK>jDh?iK>jDh?iK>jDh?p>;h?p>;h?p>;h?p>;h?p>;h?p>;h?G >u?G >u?G >u?G >u?G >u?G >u?s>}?s>}?s>}?s>}?s>}?s>}?Ѽ?Ѽ?Ѽ?Ѽ?Ѽ?Ѽ?)6{?)6{?)6{?6{?6{?6{?y6{?y6{?y6{?J5{?J5{?J5{? r? r? r?@覾r?@覾r?@覾r?&hb?&hb?&hb?&hb?&hb?&hb?M?M?M?M?M?M?,!63?,!63?,!63?,!63?,!63?,!63?O)?O)?O)?4O ?4O ?4O ?O?O?O?{O?{O?{O?c>c>c>]cO>]cO>]cO>1s>1s>1s>I sRѠ>I sRѠ>I sRѠ>^z|BF)>^z|BF)>^z|BF)>^z|BF)>^z|BF)>^z|BF)>{||()>{||()>{||()>}|}(>}|}(>}|}(>wT<wT<wT<wT<wT<wT<*K<*K<*K<P<P<P<v}v}v}v}v}v}u2Tu2Tu2T`u1H`u1H`u1Hf-ݾf-ݾf-ݾhfWݾhfWݾhfWݾgAi0>Ai0>i>i>i>{ij2Yy>ϳ?Y>{ij2Yy>PѳYQ>PѳYQ>PѳYQ>^9?^9?^9?ʌQ9 ?ʌQ9 ?ʌQ9 ?3.JٽN~?3.JٽN~?3.JٽN~?84}ٽM~?84}ٽM~?84}ٽM~?xae=Ќ >=}?xae=Ќ >=}?xae=Ќ >=}??]e=U >q?}??]e=U >q?}??]e=U >q?}?>>j?>>j?>>j?7>ͻ>j?7>ͻ>j?7>ͻ>j?, ?H?, ?H?, ?H?, ?H?, ?H?, ?H?H>|=?ܥ?H>|=?ܥ?H>|=?ܥ?mJ>b=??mJ>b=??mJ>b=??5->#[?"R>5->#[?"R>5->#[?"R>X*>![?>X*>![?>X*>![?>,>j?=,>j?=,>j?=Ц>j?ZM=Ц>j?ZM=>+j?=L>7i?KL>7i?KL>7i?K>ui?8>ui?8>ui?8{ij>2Y?y˾{ij>2Y?y˾{ij>2Y?y˾Pѳ>Y?Q˾Pѳ>Y?Q˾Pѳ>Y?Q˾b>W9?b>W9?b>W9?>T9? >T9? >T9? i> ?pMi> ?pMi> ?pMi> ?Mi> ?Mi> ?M>ԭ>n>ԭ>n>ԭ>n>ĭ>n>ĭ>n>ĭ>n84=}=M~84=I=DN~84=}=M~84=I=DN~84=I=DN~84=I=DN~Cbes m>}Cbes m>}Cbes m>}Cbes m>}Cbes m>}Cbes m>}jjj7ͻj7ͻj7ͻjsquHsquHsquHys'Hys'Hys'Hl>3Il>3Il>3Il>l>l>}l >}l >}l >l>ʷѸl>ʷѸl>ʷѸl>l>l>.l>.l>.l>}l >}l >}l >E{l.>QE{l.>QE{l.>Ql>Q9l>Q9l>Q9l>8l>8l>8чl>ع8чl>ع8чl>ع8.l>8.l>8.l>8wl&>nѹwl&>nѹwl&>nѹƈl>Q9ƈl>Q9ƈl>Q9l>ʷѸl>ʷѸl>ʷѸl>l>l>ňl>G:ňl>G:ňl>G:.l>.l>.l>.l>Q.l>Q.l>Ql>ʷQl>ʷQl>ʷQ+l>Q+l>Q+l>Q.l>Ѹ.l>Ѹ.l>Ѹul.1>H:ul.1>H:ul.1>H:.l>Ѹ.l>Ѹ.l>Ѹl>ʷQl>ʷQl>ʷQƈl>Gƈl>Gƈl>Gl>l>l>Ozl>}8Ozl>}8Ozl>}8l>ʷQl>ʷQl>ʷQhl>Q9hl>Q9hl>Q9чl>чl>чl>Nzl>}QNzl>}QNzl>}QNzl>}QNzl>}QNzl>}Qhl>Q9hl>Q9hl>Q9l>8l>8l>8l>ʷQ9l>ʷQ9l>ʷQ9}l >}l >}l >wl%>wl%>wl%>l>l>l>чl>чl>чl>.l>Q.l>Q.l>Q~l>I:~l>I:~l>I:l>{J9l>{J9l>{J9.l>Q.l>Q.l>Ql>ʷѸl>ʷѸl>ʷѸ.l>ѹ.l>ѹ.l>ѹl>ʷQ9l>ʷQ9l>ʷQ9l>zJ:l>zJ:l>zJ:.l>Ѹ.l>Ѹ.l>Ѹl>ʷQl>ʷQl>ʷQ?tr[H?tr[H?tr[H]iH?]iH?]iH?vCO?UvCO?UvCO?UӠ|sCӠ|sCӠ|sC| {C| {C| {C-TѾze]-jѾye-TѾze-TѾze-TѾze-TѾze5KNy5KNy5KNy5KNy5KNymèKybew=?x>ew=?x>ew=?x>ew=?x>ew=?x>ewu>>M>_u>>M>_u>>M>_>E?> >E?> >E?> >E?}5 >E?}5 >E?}5 Ҹ>[_?ߩҸ>[_?ߩҸ>[_?ߩ5>s%_?5>s%_?T>#_?O>9jk?]8Ž>9jk?]8Ž>9jk?]8Ž>wgk?Ž>wgk?Ž>wgk?ŽN>4j?{>N>4j?{>N>4j?{>>j?z>>j?z>>j?z>u> [?">u> [?">u> [?">Os>l[?>Os>l[?>Os>l[?>w>|I???w>|I???w>|I???w>|I???w>|I???w>|I???Ӡ|>s?C?Ӡ|>s?C?Ӡ|>s?C?|>G? C?|>G? C?|>G? C?->T>ze?->T>ze?->T>ze?->>~e?->>~e?->>~e?=K>z?=K>z?=K>z?¨=%K>y?¨=%K>y?¨=%K>y?bC7?bC7?bC7?y#]?y#]?y#]?ν?xew?ν?xew?ν?xew?Jͽlxw?Jͽlxw?ν?xew?D> _?D> _?D> _?D> _?D> _?D> _?x!o;?x!o;?x!o;?n!Vs;?n!Vs;?D{!l;?E< ?E< ?E< ?壾E> ?壾E> ?W֣aEO ?:Ը@ _ө>:Ը@ _ө>:Ը@ _ө>ָ_U>ָ_U>ָ_U>>þjkk=>þjkk=>þjkk=>þjkk=>þjkk=>þjkk=M6jM6jM6j{ j{ j\ j1rQ[8rQ[8rQ[8l>ʷ8l>ʷ8l>ʷ8l>ʷ8l>ʷ8l>ʷ8.l>8.l>8.l>8E{l.>Q9E{l.>Q9E{l.>Q9wl&>oQ9wl&>oQ9wl&>oQ9l>l>l>.l>Q9.l>Q9.l>Q9чl>عQ9чl>عQ9чl>عQ9l>Ѹl>Ѹl>Ѹl>Ѹl>Ѹl>Ѹ.l>Q9.l>Q9.l>Q9l>Q9l>Q9l>Q9l>l>l>E{l.>ѸE{l.>ѸE{l.>ѸOzl>Ozl>Ozl>}l >}l >}l >E{l.>gGE{l.>gGE{l.>gGl>ʷ8l>ʷ8l>ʷ8Їl>bK9Їl>bK9Їl>bK9wl&>nѹwl&>nѹwl&>nѹwl&>nѹwl&>nѹwl&>nѹ.l>9.l>9.l>9l>ʷ8l>ʷ8l>ʷ8l>8l>8l>8l>ʷQ9l>ʷQ9l>ʷQ9l>8l>8l>8l>l>l>ƈl>8ƈl>8ƈl>8ƈl>8ƈl>8ƈl>8E{l.>E{l.>E{l.>wl&>o8wl&>o8wl&>o8l>Q9l>Q9l>Q9l>8l>8l>8ƈl>Q9ƈl>Q9ƈl>Q9.l>Q9.l>Q9.l>Q9}l >Ѹ}l >Ѹ}l >Ѹl>ʷѸl>ʷѸl>ʷѸl>ʷQ9l>ʷQ9l>ʷQ9ƈl>8ƈl>8ƈl>8.l>8.l>8.l>8wl&>oѸwl&>oѸwl&>oѸwl&>Iwl&>Iwl&>I}l >}l >}l >l>l>l>.l>Q9.l>Q9.l>Q9l>ʷѸl>ʷѸl>ʷѸE{l.>ѹE{l.>ѹE{l.>ѹWn>M0?*Wn>M0?*Wn>M0?*Wn>M0?*Wn>M0?*Wn>M0?*ƫ>mOO?emƫ>mOO?emƫ>mOO?em㹫>VO?V`㹫>VO?V`㹫>VO?V`}i>sc?1c}i>sc?1c}i>sc?1cx>)vc?=x>)vc?=x>)vc?=Y>)l?YY>)l?YY>)l?Y>9.l?øZ>9.l?øZ>9.l?øZe>i?Zb.>e>i?Zb.>e>i?Zb.>e>i?Zb.>e>i?Zb.>e>i?Zb.>{&>j? \??{&>j? \??{&>j? \??{&>j? \??{&>j? \??{&>j? \??I<>ס>h`?I<>ס>h`?I<>ס>h`?I<>ס>h`?I<>ס>h`?I<>ס>h`?$?= ˁ>+v?$?= ˁ>+v?$?= ˁ>+v?=z>*4v?=z>*4v?=z>*4v?KƫmOOem>ƫmOOem>1ƫ[OD>1ƫ[OD>1ƫ[OD>yoce>yoce>yoce>t`qca>t`qca>t`qca>þ+lZ=þ+lZ=þ+lZ=ϡþ.l5PZ=ϡþ.l5PZ=ϡþ.l5PZ=6 iS.6 iS.6 iS. i:. i:.qie.@Z(ž@Z(ž@Z(ž״DZ\,ž״DZ\,ž״DZ\,ž~}@m~}@m~}@mt@խt@խt@խ{&j \?{&j \?{&j \?S@)i?S@)i?S@)i?<)i`<)i`<)i`ù<@㾘i`ù<@㾘i`ù<@㾘i`ֽ0vֽ0vֽ0vUֽ2vUֽ2vUֽ2vIWINIWINIWIN%VJW%VJW%VJWW>7bj5W>7bj5W>7bj5_u>t_jNg_u>t_jNg_u>t_jNg>l;=>l;=>l;=v>lu=v>lu=v>lu=>efG>>efG>>efG>\>jfF>\>jfF>\>jfF>>C*Xc>>C*Xc>>C*Xc> >%X> >%X> >%X>6> sB>>6> sB>>6> sB>>آ>hBWO>آ>hBWO>آ>hBWO>3>&#?3>&#?3>&#?>&?>&?>&? ?'? ?'? ?'? ?'? ?'? ?'?"?W¾2?"?W¾2?"?W¾2??\9þN2??\9þN2??\9þN2?Y^*?oph`5?Y^*?oph`5?Y^*?oph`5?S]*?apQ_5?S]*?apQ_5?S]*?apQ_5?9?.?9?.?9?.?t9?Q.?t9?Q.?t9?Q.?%H?:=/?%H?:=/?%H?:=/?r+H?0;=g(?r+H?0;=g(?r+H?0;=g(?CT?M)>?CT?M)>?CT?M)>?HT?v)>q?HT?v)>q?HT?v)>q?PC_?g>, >PC_?g>, >PC_?g>, >\N_?D>>\N_?D>>\N_?D>>f?>2>f?>2>f?>2>f?>0.>f?>0.>f?>0.>+k?3>r=+k?3>r=+k?3>r=4k?t>4=4k?t>4=4k?t>4=l?>l?>l?>l?t>ޘl?t>ޘl?t>ޘ i?>(G i?>(G i?>(G7i?s>G7i?s>G7i?s>Gc?q >jc?q >jc?q >jzc?ۛ>)zc?ۛ>)zc?ۛ>)=Z?o.a>FO=Z?o.a>FO=Z?o.a>FO=Z?o.a>FO=Z?o.a>FO=Z?o.a>FO2?!22?!22?!2#?̛eE5#?̛eE5#?̛eE5|#?GU5|#?GU5|#?GU5?$.?$.?$.?$.?$.?$.w8?-w8?-w8?-<?7E<?7E<?7Ex&>qm4x&>qm4x&>qm4(>T4(>T4(>T4}O>TMҾ}O>TMҾ}O>TMҾ"O>UM$Ӿ"O>UM$Ӿ"O>UM$Ӿu(>!_틾u(>!_틾u(>!_틾>K_>K_>K_.l?þNH9.l?þNH9.l?þNH9}l? ľQ9}l? ľQ9}l? ľQ9.l?þ.l?þ.l?þ.l?þQ.l?þQ.l?þQ~l?þɷѹ~l?þɷѹ~l?þɷѹl?þ3I9l?þ3I9l?þ3I9l?þl?þl?þl?þ3Il?þ3Il?þ3I}l? ľ:}l? ľ:}l? ľ:l?þl?þl?þl?þI9l?þI9l?þI9l?þʷ8l?þʷ8l?þʷ8.l?þ.l?þ.l?þ.l?þ.l?þ.l?þ.l?þNH.l?þNH.l?þNHl?þQl?þQl?þQl?þQ9l?þQ9l?þQ9l?þʷѸl?þʷѸl?þʷѸчl?þعѸчl?þعѸчl?þعѸl?þQ9l?þQ9l?þQ9l?þ9l?þ9l?þ9.l?þ8.l?þ8.l?þ8E{l?.ľ8E{l?.ľ8E{l?.ľ8.l?þQ.l?þQ.l?þQl?þIl?þIl?þIl?þʷQl?þʷQl?þʷQl?þQl?þQl?þQ}l? ľ}l? ľ}l? ľчl?þع8чl?þع8чl?þع8ƈl?þ8ƈl?þ8ƈl?þ8Ozl?ľ}ѸOzl?ľ}ѸOzl?ľ}Ѹl?þIl?þIl?þIl?ȮþѸl?ȮþѸl?ȮþѸl?þl?þl?þ}l? ľQ}l? ľQ}l? ľQhl?þQhl?þQhl?þQ}l? ľ}l? ľ}l? ľчl?þعQчl?þعQчl?þعQl?þl?þl?þE{l?.ľE{l?.ľE{l?.ľl?þʷQl?þʷQl?þʷQl?þl?þl?þl?þl?þl?þ.l?þѸ.l?þѸ.l?þѸul?/1ľ`8ul?/1ľ`8ul?/1ľ`8l?þ8l?þ8l?þ8wl?&ľn9wl?&ľn9wl?&ľn9brl?Aľ5J9brl?Aľ5J9brl?Aľ5J9l?þQ9l?þQ9l?þQ9l?þ8l?þ8l?þ8l?þ8l?þ8l?þ8.l?þ.l?þ.l?þ}l >8}l >8}l >8l>ʷQ9l>ʷQ9l>ʷQ9.l>8.l>8.l>8.l>Q9.l>Q9.l>Q9l>Q9l>Q9l>Q9ƈl>ƈl>ƈl>.l>.l>.l>l>l>l>l>ʷQl>ʷQl>ʷQE{l.>QE{l.>QE{l.>Q}l >Q9}l >Q9}l >Q9l>I9l>I9l>I9.l>8.l>8.l>8.l>.l>.l>}l >Q}l >Q}l >Ql>l>l>l>l>l>.l>Q.l>Q.l>Ql>l>l>.l>Q.l>Q.l>Q}l >Ѹ}l >Ѹ}l >Ѹ.l>.l>.l>ƈl>ƈl>ƈl>ƈl>Ѹƈl>Ѹƈl>Ѹ.l>Ѹ.l>Ѹ.l>Ѹ}l >Ѹ}l >Ѹ}l >Ѹ^l>^l>^l>}l >H9}l >H9}l >H9Nzl>}Q9Nzl>}Q9Nzl>}Q9ƈl>8ƈl>8ƈl>8l>8l>8l>8.l>8.l>8.l>8}l >H}l >H}l >H.l>Q.l>Q.l>Ql>3I9l>3I9l>3I9E{l.>8E{l.>8E{l.>8.l>Ѹ.l>Ѹ.l>Ѹl>ʷ8l>ʷ8l>ʷ8l>ʷѸl>ʷѸl>ʷѸƈl>Ѹƈl>Ѹƈl>Ѹl>l>l>.l>Ѹ.l>Ѹ.l>Ѹ.l>Ѹ.l>Ѹ.l>Ѹl>Ql>Ql>Ql>Ql>Ql>Q}l >8}l >8}l >8ƈl>ƈl>ƈl>.l>8.l>8.l>8l?þl?þl?þ.l?þ.l?þ.l?þl?þʷQl?þʷQl?þʷQl?þl?þl?þ.l?þ8.l?þ8.l?þ8.l?þQ9.l?þQ9.l?þQ9.l?þQ9.l?þQ9.l?þQ9E{l?.ľѸE{l?.ľѸE{l?.ľѸl?þʷ8l?þʷ8l?þʷ8l?þ8l?þ8l?þ8}l? ľ8}l? ľ8}l? ľ8l?þl?þl?þl?þʷ8l?þʷ8l?þʷ8l?þʷѸl?þʷѸl?þʷѸhl?þ8hl?þ8hl?þ8l?þ8l?þ8l?þ8E{l?.ľQE{l?.ľQE{l?.ľQ.l?þQ.l?þQ.l?þQ.l?þ8.l?þ8.l?þ8}l? ľ}l? ľ}l? ľl?þl?þl?þl?þ8l?þ8l?þ8ƈl?þ8ƈl?þ8ƈl?þ8}l? ľ}l? ľ}l? ľ.l?þѸ.l?þѸ.l?þѸ.l?þ.l?þ.l?þl?þʷѸl?þʷѸl?þʷѸчl?þع8чl?þع8чl?þع8l?þʷ8l?þʷ8l?þʷ8.l?þNH9.l?þNH9.l?þNH9.l?þ9.l?þ9.l?þ9чl?þчl?þчl?þl?þʷѸl?þʷѸl?þʷѸƈl?þѸƈl?þѸƈl?þѸl?þѸl?þѸl?þѸ}l? ľѸ}l? ľѸ}l? ľѸl?þѸl?þѸl?þѸgl?þѹgl?þѹgl?þѹhl?þQhl?þQhl?þQl?þ8l?þ8l?þ8}l? ľQ}l? ľQ}l? ľQ}l? ľѹ}l? ľѹ}l? ľѹƈl?þQ9ƈl?þQ9ƈl?þQ9чl?þع8чl?þع8чl?þع8l?þʷѸl?þʷѸl?þʷѸl?þl?þl?þ.l?þ.l?þ.l?þ.l?þ.l?þ.l?þ=w=~=w=~=w=~j=C=ij~j=C=ij~j=C=ij~=zY|=zY|=zY|=zY|=zY|=zY| %¾?qi %¾?qi %¾?qi %¾?qi %¾?qi %¾?qi:w1,\F:w1,\F:w1,\FkwߍeRFkwߍeRFkwߍeRFힾ*?ힾ*?ힾ*?ힾ*?ힾ*?Oힾ?m2]2]2]#]#ϵ#]#ϵ#]#ϵ¾ Pkoν¾ Pkoν¾ Pkoν¾Qkͽ¾Qkͽ¾Qkͽdui $>G`vi $>dui $>mvin#>mvin#>mvin#>3^W>3^W>3^W>8W>8W>8W>2͗<7!?2͗<7!?2͗<7!?ΗK7!?ΗK7!?ΗK7!?]ei O?]ei O?]ei O?.eR O?.eR O?.eR O? Y]o? Y]o? Y]o?w ǧX[o?w ǧX[o?w ǧX[o?^M~?^M~?^M~?^M~?^M~?^M~?{=Č>|?{=Č>|?{=Č>|?HBz=5 >j|?HBz=5 >j|?HBz=5 >j|?x >8>zi?x >8>zi?x >8>zi?x >8>zi?x >8>zi?x >8>zi?5w>?WF?5w>?WF?5w>?WF?w>?5YF?w>?5YF?w>?5YF?>???>???>???|>!?? ?|>!?? ?|>!?? ?1>x"]?>1>x"]?>1>x"]?>1>]?µ>1>]?µ>1>]?µ>>mOk?=>mOk?=>mOk?=> Pk?o=> Pk?o=> Pk?o=d>ti?y'$d>ti?y'$d>ti?y'$d>ui? $d>ui? $G`>vi? $>W?TѾ>W?TѾ>W?TѾ>W?Ѿ>W?Ѿ>W?Ѿ>(7?!>(7?!>(7?!̗>B7?!̗>B7?!̗>B7?!1 ⧾Uo?1 ⧾Uo?1 ⧾Uo?^M~?ͫ~?^M~?ͫ~?ͫ~?ͫ~?{=!s>|?{=!s>|?{=!s>|?{=!s>|?{=!s>|?{=!s>|? >>{i? >>{i? >>{i? >?>d~i? >?>d~i? >?>d~i?Ow>:?^F?Ow>:?^F?Ow>:?^F?Ow>:?^F?Ow>:?^F?Ow>:?^F?>K???>K???>K???>K???>K???>K???:1>%(]?>:1>%(]?>:1>%(]?>@?>/]?+M>@?>/]?+M>@?>/]?+M>>Nk?s=>Nk?s=>Nk?s=>2Mk?5=>2Mk?5=>2Mk?5=d>ti?y'$d>ti?y'$d>ti?y'$d>ti?y'$d>ti?y'$d>ti?y'$r>תW?)Ҿr>תW?)Ҿr>תW?)Ҿ8>W?Ҿ8>W?Ҿ8>W?Ҿ>77?!>77?!>77?!>77?!>77?!>77?!.e>R ?O.e>R ?O.e>R ?O+e>W ?3O+e>W ?3O+e>W ?3O\ >֧>Wo\ >֧>Wo\ >֧>Wo1 >>Uo1 >>Uo1 >>Uo =w=)~ =w=)~ =w=)~=ͫ=~=ͫ=~^==M~{Č|{Č|{Č|{h|{h|{h|x 8¾zix 8¾zix 8¾zi q ¾wi q ¾wi q ¾wiwx`dFwx`dFwx`dFOw:^FOw:^FOw:^F|!? |!? |!? ힾ*?ힾ*?ힾ*?1]µ1]µ1]µ2]2]2]¾@Qkν¾@Qkν¾@Qkν¾ Pkoν¾ Pkoν¾ Pkoνdtiy'$>dtiy'$>dtiy'$>nsxiW#>nsxiW#>nsxiW#>8W>8W>8W>̵W>̵W>̵W>ϗy97!?ϗy97!?ϗy97!?17!?17!?17!?lȮ>lȮ>lȮ>}l >8}l >8}l >8ll\>Q9ll\>Q9ll\>Q9.l>.l>.l>ClÓ>98ClÓ>98ClÓ>98ƈl>8ƈl>8ƈl>8hl>8hl>8hl>8}l >Ѹ}l >Ѹ}l >Ѹul/1>`ѹul/1>`ѹul/1>`ѹ.l>Ѹ.l>Ѹ.l>Ѹl>I9l>I9l>I9.l>.l>.l>l>ѹl>ѹl>ѹl>ʷ8l>ʷ8l>ʷ8чl>عQ9чl>عQ9чl>عQ9l>ʷQ9l>ʷQ9l>ʷQ9l>I9l>I9l>I9.l>NH.l>NH.l>NHl>ʷѸl>ʷѸl>ʷѸ.l>8.l>8.l>8}l >8}l >8}l >8ul.1>\:ul.1>\:ul.1>\:lȮ>ѸlȮ>ѸlȮ>Ѹ.l>.l>.l>l>ʷ8l>ʷ8l>ʷ8l>Ѹl>Ѹl>Ѹhl>Ѹhl>Ѹhl>Ѹl>l>l>ul/1>ul/1>ul/1>l>Ѹl>Ѹl>Ѹl>l>l>l>ʷ8l>ʷ8l>ʷ8l>8l>8l>8.l>.l>.l>}l >H}l >H}l >Hчl>чl>чl>l>I9l>I9l>I9l>l>l>.l>8.l>8.l>8l>{Jl>{Jl>{Jl>8l>8l>8l>8l>8l>8ňl> ňl> ňl> .l>Q9.l>Q9.l>Q9hl>Qhl>Qhl>Ql>ʷѸl>ʷѸl>ʷѸƈl>8ƈl>8ƈl>8.l>.l>.l>.l?þNH.l?þNH.l?þNHl?þʷѸl?þʷѸl?þʷѸl?þ2I:l?þ2I:l?þ2I:݀l?-þ݀l?-þ݀l?-þl?þl?þl?þ.l?þQ9.l?þQ9.l?þQ9l?þfl?þfl?þfl?þl?þl?þ.l?þ9.l?þ9.l?þ9l?þQl?þQl?þQl?þʷQl?þʷQl?þʷQ.l?þ8.l?þ8.l?þ8l?þ8l?þ8l?þ8чl?þعQчl?þعQчl?þعQOzl?ľ}8Ozl?ľ}8Ozl?ľ}8l?þl?þl?þl?þѸl?þѸl?þѸƈl?þѸƈl?þѸƈl?þѸl?þѸl?þѸl?þѸ.l?þ.l?þ.l?þwl?&ľwl?&ľwl?&ľl?þl?þl?þ.l?þ.l?þ.l?þ}l? ľѸ}l? ľѸ}l? ľѸ.l?þ.l?þ.l?þl?þʷ8l?þʷ8l?þʷ8el?þJ:el?þJ:el?þJ:}l? ľѸ}l? ľѸ}l? ľѸl?þѸl?þѸl?þѸ.l?þ8.l?þ8.l?þ8~l?þ~l?þ~l?þl?þQl?þQl?þQ,l?þ:,l?þ:,l?þ:l?þl?þl?þƈl?þQƈl?þQƈl?þQ.l?þ8.l?þ8.l?þ8ƈl?þѸƈl?þѸƈl?þѸƈl?þѸƈl?þѸƈl?þѸE{l?.ľQ9E{l?.ľQ9E{l?.ľQ9l?þʷ8l?þʷ8l?þʷ8l?þl?þl?þƈl?þѸƈl?þѸƈl?þѸчl?þعѸчl?þعѸчl?þعѸl?þѸl?þѸl?þѸ}l? ľ}l? ľ}l? ľl?þʷѸl?þʷѸl?þʷѸl?þQ9l?þQ9l?þQ9ƈl?þ8ƈl?þ8ƈl?þ8(a>tB?[3(a>tB?[3(a>tB?[3韸>M^?韸>M^?韸>M^?韸>M^?韸>M^?韸>M^?U>k?U>k?U>k?bQ>k?΢bQ>k?΢bQ>k?΢\> h?9>\> h?9>\> h?9>>h?R9>>h?R9>>h?R9>@>U?a>@>U?a>@>U?a>l>U?>l>U?>3>U?>8'>C4?C&?8'>C4?C&?8'>C4?C&?$>G4? &?$>G4? &?$>G4? &?vM^>0?R?rP^>,?R?vM^>0?R?&R^>3?R?&R^>3?R?&R^>3?R?,>w\>j:q?,>w\>j:q?,>w\>j:q?->P>RP>RP>R韸M^>韸M^>韸M^>韸M^>韸M^>Qþk=Qþk=Qþk=Uþk=Uþk=Uþk=h9h9h9ũAh9ũAh9ũAh9@󰾜Ua۾@󰾜Ua۾@󰾜Ua۾lU۾lU۾lU۾$G4 &$G4 &$G4 &$ 4F&$ 4F&R$4|%vM^0RvM^0RvM^0R k^2R k^2R k^2R-PR{$#=l+>{$#=l+>{=m+>M{=m+>M{=m+>M{:?(>o>2g:?(>o>2g:?(>o>2g =(> >s6g =(> >s6g:?(>o>2g: ~>]?BB: ~>]?BB: ~>]?BB$~>\?B$~>\?B$~>\?B'V>oB?;'V>oB?;'V>oB?;T>B?GT>B?GT>B?G >^?$R >^?$R >^?$R>^?li>^?li>^?liT>k?nT>k?nT>k?nS>hk?'S>hk?'S>hk?'>h?9>>h?9>>h?9>ʶ>h?8>ʶ>h?8>ʶ>h?8>l>U?>l>U?>l>U?>>U?>>U?>>U?>$>G4? &?$>G4? &?$>G4? &?A>v4?%?A>v4?%?A>v4?%?Z^>?R?Z^>?R?Z^>?R?Z^>?R?Z^>?R?Z^>?R?5a>v>D4q?5a>v>D4q?5a>v>D4q?cF>R>'3q?cF>R>'3q?cF>R>'3q? ^$R> ^$R>^li>^li>^li>Tþkn=Tþkn=Tþkn=Tþkn=Tþkn=Tþkn=ж-hq9ж-hq9ж-hq9h|9h|9h|9]LUM۾]LUM۾]LUM۾yU9۾yU9۾yU9۾$G4 &$G4 &$G4 &$ 4F&$ 4F&$ 4F&rP^,RrP^,RrP^,R k^2R k^2R k^2RmGxw5qmGxw5qmGxw5qLbz/qLbz/qLbz/q >T0 >T0 >T0 >T0 >T0 >T0m=6+>{m=6+>{m=6+>{=5+>{=5+>{=5+>{((>6k>?g((>6k>?g((>6k>?g((>6k>?g((>6k>?g((>6k>?g*~>f?B*~>f?B*~>f?B!~>dY??B!~>dY??B(~>jX?BeJ>hB?hB?hB?V_?vq>V_?vq>V_??mZ#?||A??mZ#?||A??mZ#?||A?.9#?A?.9#?A?.9#?A?mE O? ?mE O? ?mE O? ?oEB$O??oEB$O??oEB$O??^=El? >^=El? >^=El? >^=l?0C>^=l?0C>^=l?0C>xy>tz?>xy>tz?>xy>tz?>^> tz?(>^> tz?(>^> tz?(>v>aw?׽v>aw?׽v>aw?׽dv>Av?׽dv>Av?׽dv>Av?׽(>yb?H(>yb?H(>yb?H/>b?/>b?/>b?>4>?4>4>?4>4>?4>1>?. >1>?. >1>?. >.?[/<>.?[/<>.?[/%J?{%J?{%J?{<>>\>>\>>\Y>I,>*\Y>I,>*\>7>R\ï>_y=gmï>_y=gmï>_y=gm>jH=Wm>jH=Wm>jH=Wm>&8uo>&8uo>&8uo53>c7o53>c7o53>c7o9q>^ؾ_9q>^ؾ_9q>^ؾ_اq>ؾ_اq>ؾ_اq>ؾ_?m>Z#||A?m>Z#||A?m>Z#||AI>5#~AI>5#~AI>5#~AmE= O #E=m O mE= O D=&O1D=&O1D=&O1z0]l jz0]l jz0]l j>_}l>_}l>_}lxszxszxsz1^&szB1^&szB1^&szBvv=vv=vv=dvAv=dvAv=vv{=񟾏bP>񟾏bP>񟾏bP>9'b->9'b->9'b->繾1>. ?繾1>. ?繾1>. ?ڹ>?ڹ>?ڹ>?ǾB,#o?53c7>o?53c7>o?D6b7>*o?D6b7>*o?D6b7>*o?q;>_?q;>_?q;>_?c i?44I?c i?44I?c i?44I?9=I?A?9=I?A?9=I?A?9=I?A?9=I?A?9=I?A?~>Jh?-O>~>Jh?-O>~>Jh?-O> >fEh?j> >fEh?j> >fEh?j>(T>b w??#>(T>b w??#>(T>b w??#>T>w?m#>T>w?m#>T>w?m#>>t?zڽ>t?zڽ>t?zڽ>!t?;;>!t?;;>!t?;;'>.b?Aխ'>.b?Aխ'>.b?AխP#>b?RѭP#>b?RѭP#>b?RѭK>??K>??K>??Yѳ>??>Yѳ>??>Yѳ>??>.4>?C?.4>?C?.4>?C?>?|?>?|?>?|?<>'ά>}a<>'ά>}a<>'ά>}a/>v>Ta$>x>Ua$>x>Uar>b=ptr>b=ptr>b=ptY>G=tY>G=tY>G=te>$Qve>$Qve>$Qve>$Qve>$Qve>$Qv>7 ξbg>7 ξbg>7 ξbg>v;6fg>v;6fg>v;6fgi=,Ii=,Ii=,Ig?h=Ig?h=Ig?h=Ix8>Ic:x8>Ic:x8>Ic:rI3rI3rI3Uh;Uh;Uh;SKhO;SKhO;SKhO;ibTE w '$ibTE w '$ibTE w '$yTw>Y$yTw>Y$yTw>Y$ Etp= Etp= Etp=@t=@t=@t=.$@ar>.$@ar>.$@ar>) b >) b >) b >ijl?L?ijl?L?ijl?L?γM? ?γM? ?γM? ?m$a??m$a??m$a??m$a??m$a??m$a??Ja?Ja?Ja?٬{a?٬{a?٬{a?fgc< t?fgc< t?fgc< t?hkt?hkt?hkt? e$>J v? e$>J v? e$>J v?{e,%>, v?{e,%>, v?{e,%>, v?"r>cg?"r>cg?"r>cg?k>hg?k>hg?k>hg?h iU?.I?h iU?.I?h iU?.I?m>? Q?m>? Q?m>? Q?=S>,,,~O~O~O\?= >4^>\?= >4^>\?= >kj>~\?p>kj>~\?p>kj>~\?p>\>yn?8>\>yn?8>\>yn?8>E >n?μ8>E >n?μ8>E >n?μ8>L>Mo?fL>Mo?fL>Mo?fY>Lo?唡Y>Lo?唡Y>Lo?唡>`?څ>`?څ>`?څ>`?j>`?j>`?jf_>+A?n-f_>+A?n-f_>+A?n-c_>uA?Gc_>uA?Gc_>uA?Gǽ>s?Bǽ>s?Bǽ>s?Bː>>?Bː>>?Bː>>?B`>n>f`>n>f`>n>f`>kI>&f`>kI>&f`>kI>&ft|>= >{t|>= >{t|>= >{>s. >&{>s. >&{>s. >&{[=ܽ"~[=ܽ"~[=ܽ"~[=ܽ"~[=ܽ"~[=ܽ"~hfȰphfȰphfȰpRy̰pRy̰pRy̰p:Q:Q:Qv Qv Qv Q'S0<@T%'S0<@T%'S0<@T%$Sh!\`O>\`O>`^v>`^v>`^v>kAx3?kAx3?kAx3?kAx3?kAx3?kAx3?ː>B?ː>B?ː>B?&ːSB?&ːSB?&ːSB?p`Ѿf?p`Ѿf?p`Ѿf?`~Jrf?`~Jrf?`~Jrf? z? z? z?t|= {?t|= {?t|= {?պZ/="~?պZ/="~?պZ/="~?#[="~?#[="~?#[="~?=>Cp?=>Cp?=>Cp?=ذ> p?=ذ> p?=ذ> p?q>?Q?q>?Q?q>?Q?>JO#A>JO#A>JO#Aq>Lؾ_q>Lؾ_q>Lؾ_9q>^ؾ_9q>^ؾ_9q>^ؾ_5>š7o5>š7o5>š7o)>67o)>67o)>67o)>w=4m)>w=4m)>w=4m>?E=m>?E=m>?E=ma>t>‹\a>t>‹\a>t>‹\>^>\>^>\>^>\>"?y><>"?y><>"?y><>P:?&<>P:?&<>P:?&<ڹ>>?Aڹ>>?Aڹ>>?A>4>?2>4>?2>4>?2$ >b?E߯$ >b?E߯$ >b?E߯ >Tb?a >Tb?a >Tb?av>v?ؽv>v?ؽv>v?ؽdv>Av?׽dv>Av?׽dv>Av?׽]>@rz?a\>]>@rz?a\>]>@rz?a\>vy>Knz?>vy>Knz?>vy>Knz?>;9_=+l?2>;9_=+l?2>;9_=+l?2>^=l?0C>^=l?0C>^=l?0C>EO??EO??EO??|E(!O?k?|E(!O?k?|E(!O?k?H?#?]A?H?#?]A?H?#?]A?@#?A?@#?A?@#?A?q;>_?q;>_?q;>_?=qu>T_?=qu>T_?=qu>T_?)67>o?)67>o?)67>o?;(7>o?;(7>o?;(7>o?RBm?RBm?RBm?ï_ygm?ï_ygm?ï_ygm?Uƾ[%\?Uƾ[%\?Uƾ[%\?ƾ`9\?ƾ`9\?ƾ`9\?Ǿ^' 52?蹾4>2?蹾4>2?ٹ>?ٹ>?ٹ>? Tba> Tba> Tba>E5b;>E5b;>E5b;>Cvv[y=Cvv[y=Cvv[y=Cvv[y=Cvv[y=Cvv[y= uz+ uz+ uz+D tz=CD tz=CD tz=C]~li]~li]~li])l`3])l`3])l`3E=O"E=O"E=O"CkE=kOCkE=kOCkE=kOr>?H#ۊAr>?H#ۊAr>?H#ۊAk?Dn>k?Dn>k?Dn>3k?DȽ>3k?DȽ>3k?DȽ>k?CEz>k?CEz>k?CEz>k?D>k?D>k?D>k?EW>k?EW>k?EW>k?dTE޲>k?dTE޲>k?dTE޲>k?ID볮>k?ID볮>k?ID볮>/k?E->/k?E->/k?E->5}k?nF9o>5}k?nF9o>5}k?nF9o>k?VEJ>k?VEJ>k?VEJ>k?EW>k?EW>k?EW>k?D׮>k?D׮>k?D׮>8k?aC|>8k?aC|>8k?aC|>}k?D>}k?D>}k?D>ـk?jE>ـk?jE>ـk?jE>k?8E,}>k?8E,}>k?8E,}>k?E4>k?E4>k?E4>7wk?1Gb>7wk?1Gb>7wk?1Gb> k?NE켮> k?NE켮> k?NE켮>Rk?nEHͮ>Rk?nEHͮ>Rk?nEHͮ>ok?#F2>ok?#F2>ok?#F2>km9E>Pkm9E>Pkm9E>P3kD>Ƚ3kD>Ƚ3kD>Ƚk߂D>𥮾k߂D>𥮾k߂D>𥮾ćk&;E>ćk&;E>ćk&;E>߆k/ E>,߆k/ E>,߆k/ E>,jkD>jkD>jkD>AkD>3AkD>3AkD>3ЄkvE>ˮЄkvE>ˮЄkvE>ˮkD>TkD>TkD>T7kE>7kE>7kE>ـkjE>箾ـkjE>箾ـkjE>箾k7E>̮k7E>̮k7E>̮kCE>zkCE>zkCE>zkE>kE>kE>"kD>yͮ"kD>yͮ"kD>yͮdk÷D>ڮdk÷D>ڮdk÷D>ڮՊk;8E> Պk;8E> Պk;8E> k7E>̮k7E>̮k7E>̮ωkeD>䮾ωkeD>䮾ωkeD>䮾kCE>zkCE>zkCE>zWkE>WkE>WkE>kE> kE> kE> gkD>̮gkD>̮gkD>̮kE>WkE>WkE>W{kE>ɮ{kE>ɮ{kE>ɮЄkvE>ˮЄkvE>ˮЄkvE>ˮk_D>9k_D>9k_D>9AkD>3AkD>3AkD>3dkkE>dkkE>dkkE>AkD>3AkD>3AkD>3kD>kD>kD>kD>kD>kD>k7E>̮k7E>̮k7E>̮kD>ίkD>ίkD>ί_kD>떮_kD>떮_kD>떮kE> kE> kE> kBD>ٮkBD>ٮkBD>ٮ"kD>yͮ"kD>yͮ"kD>yͮk2SE>k2SE>k2SE>kE>椮kE>椮kE>椮kӁD>󮾗kӁD>󮾗kӁD>AkD>3AkD>3AkD>3k2SE>k2SE>k2SE>3kD>Ƚ3kD>Ƚ3kD>Ƚƈk6E>ƈk6E>ƈk6E>~kPE>ʮ~kPE>ʮ~kPE>ʮ‚kE>V׮‚kE>V׮‚kE>V׮kE>WkE>WkE>W^li>^li>{^k>atB] ?atB] ?atB] ?^B7?^B7?^B7?~KB?i}KB?~KB?*~fB?*~fB?*~fB?ߎ(,`˾ g?]u(a˾!g?ߎ(,`˾ g?5Y(]7˾,g?5Y(]7˾,g?5Y(]7˾,g? +2{? +2{? +2{?"B+{?"B+{?"B+{?q T=0? <>T=0? <>T=0?+`>̂>[2q?+`>̂>[2q?+`>̂>[2q?mG>xw>5q?mG>xw>5q?mG>xw>5q?Z^>?R?Z^>?R?Z^>?R?&R^>3?R?&R^>3?R?&R^>3?R?>P3?&?>P3?&?>P3?&?$>G4? &?$>G4? &?$>G4? &?>œU?>>œU?>>œU?>l>U?>l>U?>l>U?>v>h?!9>v>h?!9>v>h?!9>ũ>Ah?9>ũ>Ah?9>ũ>Ah?9>dT>k?dT>k?dT>k?1U>k?:1U>k?:1U>k?:~>6^?x~>6^?x~>6^?x韸>M^?韸>M^?韸>M^? H>B?[S>B?Z H>B?[b>B?'b>B?'b>B?'&~>k?B&~>k?B&~>k?B?~>j?JB?~>j?JB?~>j?JB]u(>a>!gߎ(>,`> g]u(>a>!gW(>'>/gW(>'>/gW(>'>/gm=6+>{m=6+>{m=6+>{=JO+>{=JO+>{=JO+>{ >T0 >T0 >T0 >T0 >T0 >T0mGxw5qmGxw5qmGxw5qLbz/qLbz/qLbz/q8^k R8^k R8^k RrP^,RrP^,RrP^,R$3&$3&$3&$G4 &$G4 &$G4 &lU۾lU۾lU۾OU۾OU۾OU۾Vh9Vh9Vh9Vh9Vh9h91Uþk:=1Uþk:=1Uþk:=Uþk=Uþk=Uþk=^li>^li>^li>.l>8.l>8.l>8{l>ŷQ{l>ŷQ{l>ŷQl>ʷQ9l>ʷQ9l>ʷQ9l>ʷѸl>ʷѸl>ʷѸAl*>,:Al*>,:Al*>,:l>{J9l>{J9l>{J9.l>.l>.l>0l{>.:0l{>.:0l{>.:,l>LH,l>LH,l>LH.l>.l>.l>l>ʷQl>ʷQl>ʷQ.l>9.l>9.l>9l>l>l>.l>NH.l>NH.l>NHl>*-:l>*-:l>:l>Q9l>Q9l>Q9l>:l>:l>:}l >H}l >H}l >HDl{>I:Dl{>I:Dl{>I:}l >8}l >8}l >8l>.l>.l>.l>|d*;4ln>(f*;l>|d*;G\*\G\*\G\*\HDO\HDO\HDO\.I)F2.I)F2.I)F2b$,)2b$,)2b$,)2kܪfDNkܪfDNkܪfDNGڪANGڪANGڪANڽ&e,r}ڽ&e,r}ڽ&e,r}ؽ*e%;}ؽ*e%;}ؽ*e%;}eK?eK?eK?wK?wK?wK?܈g:%,7?܈g:%,7?܈g:%,7?E܈,%97?E܈,%97?E܈,%97?'?羘7_?'?羘7_?'?羘7_??l2_??l2_??l2_?`yi x?`yi x?`yi x?=Qj x?=Qj x?=Qj x?u;O2v?=*a>v?=*a>v?=*a>v?=*a>v?=*a>v?UG>f>n'\?UG>f>n'\?UG>f>n'\?H>D>O\?H>D>O\?H>D>O\?h.><)? 2?h.><)? 2?h.><)? 2?">D0)?2?">D0)?2?0>d+)?2?>BN?߅>>BN?߅>>BN?߅>s>=N?>s>=N?>s>=N?>ڽ>&e?,r}>ڽ>&e?,r}>ڽ>&e?,r}>ڽ>&e?,r}>ڽ>&e?,r}>ڽ>&e?,r}>>l?G>l?G>l?G0>~l?K?0>~l?K?>el?+?>c?QK>c?QK>c?QK%>c?d%>c?d%>c?d>jK?x>jK?x>jK?xP>yK?|P>yK?|P>yK?|͈>%?I7͈>%?I7͈>%?I7و>)%?F<7و>)%?F<7و>)%?F<7?>>s&_?>>s&_?>>s&_?>%>5_?>%>5_?>%>5_j= i> xj= i> xj= i> x=+/j>x=+/j>x=+/j>xl>{J9l>{J9l>{J9l>{J9l>{J9l>{J9^l>Q^l>Q^l>Ql>Il>Il>Il>ʷQl>ʷQl>ʷQl>Ѹl>Ѹl>Ѹ.l>Ѹ.l>Ѹ.l>Ѹ}l >8}l >8}l >8}l >8}l >8l>8l>ʷѸl>ʷѸl>ʷѸl>Ѹl>Ѹl>Ѹ}l >Ѹ}l >Ѹ}l >Ѹ}l >8}l >8}l >8.l>.l>.l>l>l>l>l>8l>8l>8l>"Q9l>"Q9l>"Q9}l >}l >}l >Nzl>KNzl>KNzl>Kl>Ѹl>Ѹl>Ѹl>Ѹl>Ѹl>Ѹl>3I9l>3I9l>3I9l>3I9l>3I9l>3I9l>{Jl>{Jl>{J.l>Q9.l>Q9.l>Q9l>Il>Il>Il>l>l>l>l>l>l>l>l>}l >Q9}l >Q9}l >Q9.l>Ѹ.l>Ѹ.l>Ѹl>Ѹl>Ѹl>Ѹl>ʷQl>ʷQl>ʷQƈl>Qƈl>Qƈl>Ql>ʷѸl>ʷѸl>ʷѸчl>عѸчl>عѸчl>عѸ}l >Ѹ}l >Ѹ}l >ѸOzl>}8Ozl>}8Ozl>}8.l>.l>.l>l>l>l>}l >}l >}l >ul/1>`Ѹul/1>`Ѹul/1>`Ѹ.l>Q9.l>Q9.l>Q9.l>NH9.l>NH9.l>NH9l>ʷQ9l>ʷQ9l>ʷQ9}l >Ѹ}l >Ѹ}l >Ѹl>Ѹl>Ѹl>Ѹl>{Jl>{Jl>{Jl>ʷQ9l>ʷQ9l>ʷQ9l>ʷQl>ʷQl>ʷQ˽_v +w˽_v +w˽_v +wB B B B B B =2WN>y=2WN>y=2WN>y=2WN>y=2WN>y=2WN>y~.>f>:e~.>f>:e~.>f>:eK.><><><>?kLCYo}>?kLCYo}>?kLCU}>?aSCU}>?aSCU}>?aSC2Þ>??2Þ>??2Þ>??=ƞ>;??=ƞ>;??=ƞ>;??̜>>[?̜>>[?̜>>[?̜>>[?̜>>[?̜>>[?b>uj?5b>uj?5b>uj?5>j? i>j? i>j? i >]k?/= >]k?/= >]k?/=>Zk?#=>Zk?#=>Zk?#=>^?w5>>^?w5>>^?w5>»>^?>»>^?>»>^?>>E?t ?>E?t ?>E?t ?>E? ?>E? ?>E? ?> ?;?O> ?;?> ?;?O> ?;?O> ?;?O> ?;?n=>>_?n=>>_?n=>>_?=>d>+_?=>d>+_?=>d>+_?`=0Gv>,w?`=0Gv>,w?`=0Gv>,w?H0=Fv>+w?H0=Fv>+w?H0=Fv>+w?B <<?B <<?B <<?B <<?B <<?B <<?u̪/ Npy?u̪/ Npy?u̪/ Npy?ΪWNy?ΪWNy?ΪWNy?z.Ҿ;e?z.Ҿ;e?z.Ҿ;e?~.fҾ:e?~.fҾ:e?~.fҾ:e?V}MC?V}MC?V}MC?U}aSC?U}aSC?U}aSC?Ş??Ş??Ş??Ş??Ş??Ş?? <[> <[> <[> <[> <[> <[>buj5>buj5>buj5>buj5>buj5>jpO>¾\kɽ¾\kɽ¾\kɽ;þz\kbPɽ;þz\kbPɽ;þz\kbPɽF^\F^\F^\,^ 7,^ 7,^ 7档bE 档bE 档bE UE. UE. UE.  ; ; ;\ ;\ ;\ ;n=_n=_n=_n=_n=_n=_˽_v +wL0̽pvg%w˽_v +wl>ʷQl>ʷQl>ʷQl>l>l>.l>Q9.l>Q9.l>Q9}l >Q}l >Q}l >Ql>Il>Il>Iчl>ع8чl>ع8чl>ع8.l>8.l>8.l>8.l>Q9.l>Q9.l>Q9l>Q9l>Q9l>Q9}l >}l >}l >.l>.l>.l>.l>8.l>8.l>8l>ʷQ9l>ʷQ9l>ʷQ9l>l>l>}l >}l >}l >.l>Q.l>Q.l>Qƈl>Qƈl>Qƈl>Ql>l>l>l>Ql>Ql>Ql>ʷѸl>ʷѸl>ʷѸ}l >Ѹ}l >Ѹ}l >Ѹl>Il>Il>IlȮ>8lȮ>8lȮ>8}l >8}l >8}l >8Nzl>}QNzl>}QNzl>}Ql>8l>8l>8l>Il>Il>I}l >8}l >8}l >8E{l.>gG9E{l.>gG9E{l.>gG9чl>чl>чl>ƈl>8ƈl>8ƈl>8l>ʷQ9l>ʷ8l>ʷ8чl>ع8чl>ع8чl>ع8l>ʷQ9l>ʷQ9l>ʷQ9l>Il>Il>Il>Il>Il>Il>ʷѸl>ʷѸl>ʷѸl>l>l>l>{Jl>{Jl>{Jƈl>Gƈl>Gƈl>Gl>8l>8l>8l>ʷ8l>ʷ8l>ʷ8ƈl>Qƈl>Qƈl>Q.l>8.l>8.l>8}l >Q}l >Q}l >Ql>Ѹl>Ѹl>Ѹl>Jl>Jl>Jl>"Ql>"Ql>"Ql>ʷѸl>ʷѸl>ʷѸƈl>Ѹƈl>Ѹƈl>ѸE{l.>gGE{l.>gGE{l.>gG}l >8}l >8}l >8.l>8.l>8.l>8}l >8}l >8}l >8B>h?9E>B>h?9E>B>h?9E>B>h?9E>B>h?9E>B>h?9E> >X?t> >X?t> >X?t> >$X?> >$X?> >$X?>(Ԝ>P=?s?(Ԝ>P=?s?(Ԝ>P=?s?wߜ>9U=?j?wߜ>9U=?j?wߜ>9U=?j?>}>?D4C?>}>?D4C?>}>?D4C?L}>?7C?L}>?7C?L}>?7C?4>])>%c?4>])>%c?4>])>%c?4>4>0#c?4>4>0#c?4>4>0#c?&a62{?&a62{?&a62{?D6`4{?D6`4{?t*65{?"U(i?"U(i?"U(i?;:i?;:i?;:i?ujr L?Lj TL?ujr L?j L?j L?j L? h U4(%? h U4(%? h U4(%? h U4(%? h U4(%? h U4(%?ݭQ7>ݭQ7>ݭQ7>խ@Q9&>խ@Q9&>խ@Q9&>d>d>d>dy>dy>dy>þglϩ<þglϩ<þglϩ<þol<þol}D4C>}D4C>}D4C>}D4C>}D4C>}D4C44ھ0#c44ھ0#c44ھ0#c4Z*ھ&c4Z*ھ&c4Z*ھ&c١Žg}nAw١Žg}nAw١Žg}nAwŽ2nȹwŽ2nȹwŽ2nȹw>44漶>44漶>44漶>44漶>44漶>44漶t=*6>5{t=*6>5{t=*6>5{=b6>2{=b6>2{=b6>2{>['>i>['>i>['>iY<>5>iY<>5>iY<>5>iuj>r ?Luj>r ?Luj>r ?Lj> ?GLj> ?GLj> ?GLs>Y4?%s>Y4?%s>Y4?%s>Y4?%s>Y4?%s>Y4?%ҭ>Q?cҭ>Q?cҭ>Q?cҭ>gQ?E!ҭ>gQ?E!ҭ>gQ?E!B? |!B? |!B? |!C?2Z63!C?2Z63!C?2Z63!s>)1w s>)1w s>)1w r>1p r>1p r>1p >WKپ>WKپ>WKپ4>pKkJپ4>pKkJپ4>pKkJپ?}>z\^g?}>z\^g?}>z\^gRr>Q^ŷRr>Q^ŷRr>Q^ŷ(>9i (>9i (>9i ;>@iRJ ;>@iRJ ;>@iRJ u>ZljZljZlj<.>l <.>l <.>l dgb07>L>dgb07>L>dgb07>>hgs6>>hgs6>>hgs6> >?Ymz> >?Ymz> >?Ymz>f>YՑ>f>YՑ>f>YՑ>8|>4D>8|>4D>8|>4D>o>oD>o>oD>o>oD>>)\?>)\?>)\?3>y)f?3>y)f?3>y)f?! ? %?! ? %?! ? %?Ax ?= %?Ax ?= %?Ax ?= %? R?ʾ842? R?ʾ842? R?ʾ842?Q?ʾ:-2?Q?ʾ:-2?Q?ʾ:-2?(?K5?(?K5?(?K5?(?5?(?5?(?5?78?սV/?78?սV/?78?սV/?O8?Խݨ/?O8?Խݨ/?O8?Խݨ/?F?B=@!?F?B=@!?F?B=@!?F?b=3!?F?b=3!?F?b=3!?S?>=x ?S?>=x ?S?>=x ?S?>7q ?S?>7q ?S?>7q ?FT^?;>>FT^?;>>FT^?;>>^^?C>>^^?C>>^^?C>>8f?>t>8f?>t>8f?>t>0f?~>_>0f?~>_>0f?~>_>Yj?-> >Yj?-> >Yj?-> >j?/>< >j?/>< >j?/>< >(l?S> (l?S> (l?S> -l?7>8-l?7>8-l?7>8%i?>B7%i?>B7%i?>B7i?>X7i?>X7i?>X7"Xd?>N"Xd?>N"Xd?>N_d?>tx_d?>tx_d?>tx[?vk>e꾄[?vk>e꾄[?vk>e[?;k> [?;k> [?;k> YP?=`YP?=`YP?=`*TP?w=Hn*TP?w=Hn*TP?w=Hn0B?yr.%0B?yr.%0B?yr.%B?7>t%B?7>t%B?7>t%34?@2234?@2234?@224?6@}324?6@}324?6@}32$??R5$??R5$??R5$?}F5$?}F5$?}F52?j޾/2?j޾/2?j޾/:0?6޾`/:0?6޾`/:0?6޾`/l?þ{J9l?þ{J9l?þ{J9Nzl?ľK9Nzl?ľK9Nzl?ľK9pl?0Lľ8Q9pl?0Lľ8Q9pl?0Lľ8Q9ƈl?þG9ƈl?þG9ƈl?þG9ƈl?þѸƈl?þѸƈl?þѸ.l?þѸ.l?þѸ.l?þѸƈl?þѸƈl?þѸƈl?þѸl?þʷѸl?þʷѸl?þʷѸl?þʷQ9l?þʷQ9l?þʷQ9l?þʷ8l?þʷ8l?þʷ8.l?þQ.l?þQ.l?þQl?þU:l?þU:l?þU:gl?þ9gl?þ9gl?þ9ňl?þ :ňl?þ :ňl?þ :^l?þQ9^l?þQ9^l?þQ9.l?þNH9.l?þNH9.l?þNH9l?þʷ8l?þʷ8l?þʷ8l?þ8l?þ8l?þ8l?þ{J9l?þ{J9l?þ{J9wl?&ľn9wl?&ľn9wl?&ľn9}l? ľ}l? ľ}l? ľl?þl?þl?þl?þl?þl?þ}l? ľ}l? ľ}l? ľl?ȮþѸl?ȮþѸl?ȮþѸƈl?þ8ƈl?þ8ƈl?þ8l?þʷѸl?þʷѸl?þʷѸчl?þعѸчl?þعѸчl?þعѸ.l?þQ.l?þQ.l?þQ.l?þQ.l?þQ.l?þQňl?þ :ňl?þ :ňl?þ :wl?&ľo8wl?&ľo8wl?&ľo8`rl?@ľ3J`rl?@ľ3J`rl?@ľ3Jl?þ:l?þ:l?þ:l?þJ9l?þJ9l?þJ9,l?þ,l?þ,l?þl?þʷѸl?þʷѸl?þʷѸ}l? ľQ}l? ľQ}l? ľQl?þ7:l?þ7:l?þ7:݀l?-þQ݀l?-þQ݀l?-þQl?þl?þl?þl?þl?þl?þl?þѸl?þѸl?þѸl?þѸl?þѸl?þѸl?þ9l?þ9l?þ9l?þ{J9l?þ{J9l?þ{J9Vl?þVl?þVl?þ,l?þ,l?þ,l?þ}l? ľ}l? ľ}l? ľE{l?.ľ8E{l?.ľ8E{l?.ľ8wl?&ľwl?&ľwl?&ľl?þl?þl?þ.l>.l>.l>}l >H}l >H}l >H}l >}l >}l >l>l>l>.l>Ѹ.l>Ѹ.l>Ѹ.l>.l>.l>}l >}l >}l >l>Ql>Ql>Q}l >H}l >H}l >Hl>fl>fl>fňl>Gňl>Gňl>GE{l.>Q9E{l.>Q9E{l.>Q9l>Q9l>Q9l>Q9чl>عѸчl>عѸчl>عѸl>Ѹl>Ѹl>Ѹl>ʷQl>ʷQl>ʷQl>l>l>l>8l>8l>8l>Ѹl>Ѹl>Ѹƈl>Ѹƈl>Ѹƈl>Ѹƈl>ƈl>ƈl>l>l>l>.l>.l>.l>l>Ѹl>Ѹl>Ѹ.l>8.l>8.l>8l>l>l>l>l>l>чl>ع8чl>ع8чl>ع8.l>Q9.l>Q9.l>Q9l>ʷѸl>ʷѸl>ʷѸ.l>Q.l>Q.l>Ql>l>l>l>l>l>l>ʷQ9l>ʷQ9l>ʷQ9Nzl>}Q9Nzl>}Q9Nzl>}Q9ƈl>ƈl>ƈl>}l >ѹ}l >ѹ}l >ѹl>ѹl>ѹl>ѹƈl>Qƈl>Qƈl>Q.l>Q9.l>Q9.l>Q9}l >H9}l >H9}l >H9hl>8hl>8hl>8.l>Ѹ.l>Ѹ.l>Ѹul/1>`Ѹul/1>`Ѹul/1>`ѸOzl>}8Ozl>}8Ozl>}8l>I9l>I9l>I9^l>^l>^l>}l >Ѹ}l >Ѹ}l >Ѹl?þʷQ9l?þʷQ9l?þʷQ9}l? ľH}l? ľH}l? ľHE{l?.ľѸE{l?.ľѸE{l?.ľѸl?þQ9l?þQ9l?þQ9l?þʷѸl?þʷѸl?þʷѸЇl?þbKЇl?þbKЇl?þbK.l?þѹ.l?þѹ.l?þѹ.l?þ.l?þ.l?þ.l?þ.l?þ.l?þl?þ9l?þ9l?þ9}l? ľ9}l? ľ9}l? ľ9l?þʷѸl?þʷѸl?þʷѸl?þʷѸl?þʷѸl?þʷѸ.l?þѸ.l?þѸ.l?þѸl?þl?þl?þ.l?þ8.l?þ8.l?þ8E{l?.ľE{l?.ľE{l?.ľ.l?þѸ.l?þѸ.l?þѸ.l?þ.l?þ.l?þƈl?þѸƈl?þѸƈl?þѸ.l?þѸ.l?þѸ.l?þѸl?þѸl?þѸl?þѸ.l?þ.l?þ.l?þ.l?þ8.l?þ8.l?þ8ƈl?þƈl?þƈl?þl?þ8l?þ8l?þ8l?þI9l?þI9l?þI9.l?þ.l?þ.l?þ.l?þNH.l?þNH.l?þNHl?þʷQ9l?þʷQ9l?þʷQ9l?þʷQ9l?þʷQ9l?þʷQ9.l?þ.l?þ.l?þl?þ8l?þ8l?þ8}l? ľѸ}l? ľѸ}l? ľѸgl?þJgl?þJgl?þJl?þl?þl?þ.l?þ.l?þ.l?þNzl?ľK9Nzl?ľK9Nzl?ľK9l?þQ9l?þQ9l?þQ9.l?þ8.l?þ8.l?þ8.l?þѸ.l?þѸ.l?þѸ.l?þѸ.l?þѸ.l?þѸƈl?þQ9ƈl?þQ9ƈl?þQ9l?þQ9l?þQ9l?þQ9wl?&ľwl?&ľwl?&ľl?þʷ8l?þʷ8l?þʷ8l?þl?þl?þl?þʷ8l?þʷ8l?þʷ8k>I?(k>I?(k>I?(>eI?>eI?>eI?چ>J"?9چ>J"?9چ>J"?9*݆>P"?9*݆>P"?9*݆>P"?9T;>><`T;>><`T;>><`8;>>`8;>>`8;>>`s=\>6xs=\>6xs=\>6xv=/\>xv=/\>xv=/\>x ¼KE2"¼9 ¼K ¼K ¼KE2"¼9h޽>wyuh޽>wyuh޽>wyuFg޽JwuFg޽JwuFg޽JwuLKZLKZLKZLKZLKZLKZ+eI0+eI0+eI0+eI0+eI0+eI0.dOl.dOl.dOlm-)O]m-)O]m-)O]WeQgoWeQgoWeQgoz}eNoz}eNoz}eNoþOnl)<þOnl)<þOnl)<þOnl)<þOnl)<þOnl)<7滾bLM>ڻbN>7滾bLM>gܻObj>gܻObj>gܻObj>I۩?I۩?I۩?eI?eI?eI?z熾 "9?z熾 "9?z熾 "9?z熾 "9?z熾 "9?z熾 "9?T;<`?T;<`?T;<`?1;Hᾒ`?1;Hᾒ`?1;Hᾒ`?w4\x?w4\x?w4\x?\x?\x?\x? <vu?=M>vu?=M>vu?h=>>wyu?h=>>wyu?h=>>wyu?L>">HZ?L>">HZ?L>">HZ?L>&>FZ?L>&>FZ?L>&>FZ?>+?eI0?>+?eI0?>+?eI0?>+?eI0?>+?eI0?>+?eI0?1>>O?wI>1>>O?wI>1>>O?wI>-!>O?"y>-!>O?"y>-!>O?"y>W>e?Qgo>W>e?Qgo>W>e?Qgo>z>}e?No>z>}e?No>z>}e?No>Nػ\b6>Nػ\b6>Nػ\b6>tI?tI?tI?I4?I4?I4?چ7"9?چ7"9?چ7"9?醾"i9?醾"i9?醾"i9?Q;ᾩ`?Q;ᾩ`?Q;ᾩ`?:P`?:P`?:P`?w4\x?w4\x?w4\x?]x?]x?]x?2"<ș<?2"<ș<?2"<ș<?r#<<?r#<<?r#<<?=M>vu?=M>vu?=M>vu? =Y>tu? =Y>tu? =Y>tu?L>>rXZ?L>>rXZ?L>>rXZ?L>_>SZ?L>_>SZ?L>_>SZ?>y+?B0?>y+?B0?>y+?B0?>y+?B0?>y+?B0?>y+?B0?1>O?b>1>O?b>1>O?b>1>O?b>1>O?b>1>O?b>z>}e?No>z>}e?No>z>}e?No>ʄ>e?n>ʄ>e?n>ʄ>e?n>$>nl?Ҽ$>nl?Ҽ$>nl?Ҽ$>nl?Ҽ$>nl?ҼD>nl?Ѽٻ>^b?Zٻ>^b?Zٻ>^b?Zgܻ>Ob?jgܻ>Ob?jgܻ>Ob?j>bI?>bI?>bI?>eI?>eI?>eI?>"?i9>"?i9>"?i9>"?i9>"?i9>"?i9:>>P`:>>P`:>>P`/;>>`/;>>`/;>>`v=\>xv=\>xv=\>xs=\>6xs=\>6xs=\>6x+2"2ü+2"2ü+2"2ü yS yS yS޽fPsu޽fPsu޽fPsu ޽Ytu ޽Ytu ޽YtuLUZLUZLUZL`ZL`ZL`Zy+B0y+B0y+B0y+B0y+B0y+B0.dOl.dOl.dOl1>OwI1>OwI1>OwIAenAenAenz}eNoz}eNoz}eNo.l>8.l>8.l>8l>ʷѸl>ʷѸl>ʷѸl>l>l>ƈl>Ѹƈl>Ѹƈl>Ѹl>ʷѸl>ʷѸl>ʷѸl>l>l>l>ʷ8l>ʷ8l>ʷ8}l >}l >}l >l>l>l>.l>8.l>8.l>8l>Ql>Ql>Qчl>ع8чl>ع8чl>ع8fl>:fl>:fl>:}l >Ѹ}l >Ѹ}l >Ѹl>Ѹl>Ѹl>Ѹl>Ѹl>Ѹl>Ѹ.l>Ѹ.l>Ѹ.l>Ѹ.l>8.l>8.l>8l>Il>Il>Il>l>l>arlA>+:arlA>+:arlA>+:.l>Ѹ.l>Ѹ.l>ѸlŮ>HlŮ>HlŮ>H}l >Q9}l >Q9}l >Q9brlA>5J9brlA>5J9brlA>5J9.l>8.l>8.l>8.l>8.l>8.l>8ƈl>Ѹƈl>Ѹƈl>Ѹl>"Ѹl>"Ѹl>"Ѹl>l>l>l>"8l>"8l>"8l>ʷ8l>ʷ8l>ʷ8Nzl>KNzl>KNzl>K}l >Ѹ}l >Ѹ}l >Ѹ.l>Ѹ.l>Ѹ.l>Ѹ.l>8.l>8.l>8ƈl>9ƈl>9ƈl>9.l>Ѹ.l>Ѹ.l>Ѹ.l>.l>.l>.l>NH9.l>NH9.l>NH9.l>Q.l>Q.l>Q.l>Q.l>Q.l>Q}l >8}l >8}l >8l?þ{J9l?þ{J9l?þ{J9l?þʷѸl?þʷѸl?þʷѸ}l? ľ8}l? ľ8}l? ľ8}l? ľQ9}l? ľQ9}l? ľQ9l?þl?þl?þhl?þQ9hl?þQ9hl?þQ9ul?/1ľ`Q9ul?/1ľ`Q9ul?/1ľ`Q9Ozl?ľ}8Ozl?ľ}8Ozl?ľ}8l?þFѸl?þFѸl?þFѸhl?þ8hl?þ8hl?þ8pl?0Lľ8Ѹpl?0Lľ8Ѹpl?0Lľ8ѸE{l?.ľѸE{l?.ľѸE{l?.ľѸl?þѸl?þѸl?þѸ.l?þ8.l?þ8.l?þ8l?þ9l?þ9l?þ9чl?þعQ9чl?þعQ9чl?þعQ9wl?%ľwl?%ľwl?%ľl?þl?þl?þƈl?þƈl?þƈl?þl?þʷѸl?þʷѸl?þʷѸl?þʷѸl?þʷѸl?þʷѸ.l?þѸ.l?þѸ.l?þѸ.l?þNH9.l?þNH9.l?þNH9l?þQl?þQl?þQ,l?þ:,l?þ:,l?þ:l?þQ9l?þQ9l?þQ9Zl?þGZl?þGZl?þGl?þl?þl?þwl?&ľn9wl?&ľn9wl?&ľn9l?þ8l?þ8l?þ8l?þ"Ѹl?þ"Ѹl?þ"Ѹhl?þѸhl?þѸhl?þѸOzl?ľ}ѸOzl?ľ}ѸOzl?ľ}Ѹl?þѸl?þѸl?þѸE{l?.ľE{l?.ľE{l?.ľ.l?þѸ.l?þѸ.l?þѸƈl?þ8ƈl?þ8ƈl?þ8l?þʷ8l?þʷ8l?þʷ8.l?þQ.l?þQ.l?þQ}l? ľQ}l? ľQ}l? ľQ.l?þQ9.l?þQ9.l?þQ9l?þQ9l?þQ9l?þQ9l?þl?þl?þl?þl?þl?þ.l?þ8.l?þ8.l?þ8l?þl?þl?þ,l?þLH,l?þLH,l?þLH.l?þQ9.l?þQ9.l?þQ9'>&`?˼>'>&`?˼>'>&`?˼> >E?_ ? >E?_ ? >E?_ ?A >F? ?A >F? ?A >F? ?>#?>?>#?>?>#?>?>#?>?>#?>?>#?>? 1>>ad? 1>>ad? 1>>ad? 1>b>i_d? 1>b>i_d? 1>b>i_d?ǎ=bA>sz?ǎ=bA>sz?ǎ=bA>sz?=A>z?=A>z?=A>z?٬{Pr?٬{Pr?٬{Pr?٬{Pr?٬{Pr?٬{Pr?ч؎9s?ч؎9s?ч؎9s?UGήS.>ήS.>̮7S9>̮7S9>̮7S9>ɿ4~g~Q>ʿig`Q>ɿ4~g~Q>ʿig`Q>ʿig`Q>ʿig`Q>þ'lNaþ'lNaþ'lNaþ'lNaþ'lNaDþW'lbQ)`Q)`Q)`)Խ`)Խ`)Խ` E_ E_ E_ F F F &>&>&>7˾>7˾>7˾>0վid0վid0վidx 1ۦվedx 1ۦվedx 1ۦվedAzAzAzUԽAzUԽAzAz٬<{P=r٬<{P=r٬<{P=r٬<{P=r٬<{P=r٬<{P=rч=؎>9sч=؎>9sч=؎>9sч=؎>9sч=؎>9sч=؎>9sdnV>Qi?GVdnV>Qi?GVdnV>Qi?GVdnV>Qi?GVdnV>Qi?GVdnV>Qi?GV>60?*>60?*>60?*|> 30?*|> 30?*|> 30?*ή>S?.羾ή>S?.羾ή>S?.羸̮>7S?9羸̮>7S?9羸̮>7S?9'>&`?˼>'>&`?˼>'>&`?˼>>|E?! ?>|E?! ?>|E?! ?>|E?! ?>|E?! ?>|E?! ?>T?>?>T?>?>T?>?PÂ>_?>?PÂ>_?>?PÂ>_?>?0>F>ld?0>F>ld?0>F>ld?0>h>vd?0>h>vd?0>h>vd?w.=B>z?w.=B>z?w.=B>z?a=B>$z?a=B>$z?a=B>$z?Rz?Rz?Rz?'{,R?'{,R?'{,R? 2s? 2s? 2s?ݚ7s?ݚ7s?ݚ7s?7V6G_V?7V6G_V?7V6G_V?kV2nMDV?kV2nMDV?dnVQiGV?/0*?/0*?/0*?둾 0*?둾 0*?둾 0*?䮾tS>䮾tS>䮾tS>F宾mS >F宾mS >ٮE S> 'ygSR> 'ygSR> 'ygSR>{g!R>{g!R>{g!R>ѡþ(lFaѡþ(lFaѡþ(lFaþW(l<`þW(l<`þW(l<` )` ؟ )` ؟ )` ؟.Y`\埾.Y`\埾.Y`\埾E E E doEz doEz doEz PÂ_>PÂ_>PÂ_>kЂzj>kЂzj>kЂzj>0sվtd0sվtd0sվtd`0ZվK{d`0ZվK{d`0ZվK{d-թB݅zapB[z-թB݅z-թB݅z-թB݅z-թB݅zb{<R=՚b{<R=՚b{<R=՚ũ<R=ũ<R=b{<R=՚=ݚ>7s=ݚ>7s=ݚ>7s8=“>1s8=“>1s8=“>1sdnV>Qi?GVdnV>Qi?GVdnV>Qi?GV7V>6G?_V7V>6G?_V7V>6G?_V> 0?*> 0?*> 0?*>NM0?*>NM0?*>NM0?*֮>S?֮>S?֮>S?]̮>]zg?:R>]zg?:R>]zg?:R>]zg?:R>]zg?:R>]zg?:Rѡ>(l?Fa=ѡ>(l?Fa=ѡ>(l?Fa=ѡ>(l?Fa=ѡ>(l?Fa=ѡ>(l?Fa=*>`?!>*>`?!>*>`?!>l. PD?l. PD?l. PD?e3Ka?e3Ka?e3Ka?o&da?o&da?o&da?=9=(Wo?=9=(Wo?=9=(Wo?>=`m=xVo?>=`m=xVo?Hbk=hTo?׶D>l?׶D>l?׶D>l?E>l?E>l?E>l?Y?Y?Y?Y?Y?Y?QlQ?ʾY?QlQ?ʾY?QlQ?ʾY?=?/?8?=?/?8?=?/?8?=//?7?=//?7?=//?7?OA>mK?׫ ?OA>mK?׫ ?OA>mK?׫ ?'>IK? ?'>IK? ?'>IK? ?>Z?I'>>Z?I'>>Z?I'>!>Z?v>!>Z?v>>Z?r>O1?Z?z=O1?Z?z=O1?Z?z=G?Z?=G?Z?=G?Z?=?K?5'?K?5'?K?5'~?K?R'~?K?R'~?K?R'`?/?xD˾`?/?xD˾`?/?xD˾?.?O˾?.?O˾?.?O˾?/g?_?/g?_?/g?_?K?~?K?~?K?~< ?Ψ>D< ?Ψ>D< ?Ψ>D< ?Ψ>D< ?Ψ>D< ?Ψ>Do>&d=ao>&d=ao>&d=a8e>f=a8e>f=a8e>f=aI>UoI>UoI>UozV>YUozV>YUozV>YUo*D>F9l*D>F9l*D>F9lD>lD>lD>lQ=lQʾYQ=lQʾYQ=lQʾY#=uY#=uY =rY / 8 / 8 / 8?/8?/8?/81D K 1D K 1D K OK OK OK FѾDZFѾDZFѾDZѾZ ѾZ ѾZ fM Z+LfM Z+LfM Z+LM~ZM~ZM~ZK~&>K~&>K~&> KQ&> KQ&>K~&> /9> /9> /9>/^>/^>/^>eMuz?K~?eMuz?/g_?/g_?/g_?HC D?HC D?HC D?R$ESi?R$ESi?R$ESi?!І=pav?!І=pav?!І=pav?=Æ=av?=Æ=av?=Æ=av?T >Kr?T >Kr?T >Kr?S,>~r?S,>~r?S,>~r?XG^?XG^?XG^?(K<>^?(K<>^?(K<>^?P>1*?j;?P>1*?j;?P>1*?j;?Ȳ> *?ND;?Ȳ> *?ND;?Ȳ> *?ND;?_>j4J?" ?_>j4J?" ?_>j4J?" ?n>=J?o ?n>=J?o ?n>=J?o ?z>p\?%>z>p\?%>z>p\?%>>w\?ء>>w\?ء>>w\?ء> >|_?= >|_?= >|_?= >P_?T~= >P_?T~= >P_?T~=?IDS?M<?IDS?M<?IDS?M<?ULS? ;?ULS? ;?ULS? ;{ ?8?H{ؾ{ ?8?H{ؾ{ ?8?H{ؾ ?8?aؾ ?8?aؾ ?8?aؾ?~?!?~?!?~?!1?>p?!1?>p?!1?>p?!;>CS>|L;>CS>|L;>CS>|LN>z>ioLN>z>ioLN>z>ioL>\,%>Ki>\,%>Ki>\,%>Ki>d$>Vi>d$>Vi>d$>Vi܆>|ȇ2`v܆>|ȇ2`v܆>|ȇ2`v>&)u\v>&)u\v>&)u\vR>8rR>8rR>8rS>,~rS>,~rS>,~rnN^nN^nN^(K^(K^(K^*^6;*^6;*^6;*>;*>;*>;FJ/J: yI,J FJ/J: |kDJ\ |kDJ\ |kDJ\ ˾vw\ʡ˾vw\ʡ˾vw\ʡ˾v\˾v\˾v\e0l_Zwe0l_Zwe0l_ZwK_K_K_DXS|;>DXS|;>DXS|;>7=S^S<>7=S^S<>7=S^S<>" 8>" 8>" 8>y 8->y 8->y 8->oV!?oV!?oV!?n!?n!?n!?トL?トL?トL?oL?oL?oL?\,%Ki?\,%Ki?\,%Ki?UIr?UIr?UIr?lֽ}~?lֽ}~?lֽ}~?Sֽ,l~?Sֽ,l~?Sֽ,l~?);e_>y?);e_>y?);e_>y?;#`>ey?;#`>ey?;#`>ey?=>+c?=>+c?=>+c?7i=t>d?7i=t>d?7i=t>d?{ca>BB!?>?{ca>BB!?>?{ca>BB!?>?a>g!?Z>?a>g!?Z>?a>g!?Z>?e>?G?V ?e>?G?V ?e>?G?V ?ܝ>Q.G?. ?ܝ>Q.G?. ?؝>0G?d ?dC>x_?\q>dC>x_?\q>dC>x_?\q>B>j_?>B>j_?>B>j_?>;g>EEh?b=;g>EEh?b=;g>EEh?b=X>Jh?`=X>Jh?`=X>Jh?`=>v5a?OQ>v5a?OQ>v5a?OQ,> 2a?vQ,> 2a?vQ,> 2a?vQ%>J?澞%>J?澞%>J?%>J?%>J?%>J?澔3>&? *3>&? *3>&? *s_>©&?5)s_>©&?5)s_>©&?5)ع>O>7Uع>O>7Uع>O>7U>W>TU>W>TU>W>TUU>`>trU>`>trU>`>trU>N>4rU>N>4rU>N>4r@=2Z<(~@=2Z<(~@=2Z<(~C =Z<،~C =Z<،~C =Z<،~Jǻo_yJǻo_yJǻo_yFػ'`yFػ'`yFػ'`y:d:d:d7itd7itd7itd{caBB!>{caBB!>{caBB!>vau!4w>vau!4w>vau!4w>cDG& cDG& cDG& 08G 08G 08G kM{_TkM{_TkM{_Tn&n_ʟn&n_ʟn&n_ʟB@վ4Lh9dB@վ4Lh9dB@վ4Lh9dXվJh`XվJh`XվJh`۾.aQ>۾.aQ>۾.aQ>۾0a0Q>۾0a0Q>۾0a0Q>>ӾUJ=>>ӾUJ=>>ӾUJ=>=2Ӿ@J0>=2Ӿ@J0>=2Ӿ@J0> B,&5"*? B,&5"*? B,&5"*?0Ed& %*?0Ed& %*?0Ed& %*?֘~4U?֘~4U?֘~4U?-Ƙ=U?-Ƙ=U?-Ƙ=U?UFr?UFr?UFr?8e>f=a8e>f=a8e>f=a< ?Ψ>D< ?Ψ>D< ?Ψ>D< ?Ψ>D< ?Ψ>DB ?4ۨ>D?K?~?K?~?K?~?"G??"G??"G?i?/?˾i?/?˾? /?9˾?/?*˾?/?*˾?/?*˾?K?5'?K?5'?K?5'?K?-9'?K?-9'?K?-9'&E?Z?߲=&E?Z?߲=&E?Z?߲=G?Z?=G?Z?=G?Z?=F>sZ?@>F>sZ?@>F>sZ?@>>Z? 3>>Z? 3>>Z? 3>6>sK? ?6>sK? ?6>sK? ?@B>;K?O ?@B>;K?O ?@B>;K?O ?,= /?7?,= /?7?,= /?7?31=/?7?31=/?7?,= /?7?Ea?Y?Ea?Y?Ea?Y?Ea?Y?Ea?Y?Ea?Y?Ed>sl?Ed>sl?Ed>sl?E>sl?E>sl?E>sl?I=Uo?I=Uo?I=Uo?=9=(Wo?=9=(Wo?=9=(Wo?o&da?o&da?o&da?8ef潤a?8ef潤a?8ef潤a?= ¨qD?= ¨qD?= ¨qD?&; D?&; D?&; D?'Kq?'Kq?'Kq?L^b?L^b?L^b?/*>/*>/*> /9> /9> /9> KC8'> KC8'> KC8'>vK'>vK'>vK'>::Z::Z::Z5Z5Z5Z ѾVZ ѾVZ ѾVZ ѾVZ ѾVZ ѾVZ5Kg 5Kg 5Kg 5Kg 5Kg 5Kg 31/731/731/731/731/731/7W=eȲYW=eȲYW=eȲY[=eY[=eY[=eYD>ԑlD>ԑlD>ԑlD>lD>lD>lYK>hWoYK>hWoYK>hWoYK>hWoYK>hWoYK>hWoe>3=Kae>3=Kae>3=Ka&8J?t(>&8J?t(>&8J?t(>i5J?%>i5J?%>i5J?%>37J?Jذ>37J?Jذ>37J?Jذ>8J?F`>8J?F`>8J?F`>}/J?װ>}/J?װ>}/J?װ>&8J?t(>&8J?t(>&8J?t(>I?,r&>F1J?˰>F1J?˰>F1J?˰>?J?c>?J?c>?J?c>R0J?]>R0J?]>R0J?]>82J?>82J?>82J?>)J?|>)J?|>)J?|>(1J?5>(1J?5>(1J?5>2J?ɾٰ>2J?ɾٰ>2J?ɾٰ>J?>J?>J?>,J?;հ>,J?;հ>,J?;հ>2J?ɾٰ>2J?ɾٰ>2J?ɾٰ>}/J?װ>}/J?װ>}/J?װ>37J?Jذ>37J?Jذ>37J?Jذ>(J?n>(J?n>(J?n>82J?>82J?>82J?>=6J? >=6J? >=6J? >]6JO?ʰ]6JO?ʰ]6JO?ʰF1J?˰F1J?˰F1J?˰e*J&?ذe*J&?ذe*J&?ذs;Jе?kɰs;Jе?kɰs;Jе?kɰR0J?]尾R0J?]尾R0J?]尾.J}?𰾈.J}?𰾈.J}?𰾨'J?'J?'J?]6JO?ʰ]6JO?ʰ]6JO?ʰ2Jĸ?簾2Jĸ?簾2Jĸ?簾37JJ?ذ37JJ?ذ37JJ?ذB8J?B8J?B8J?R0J?]尾R0J?]尾R0J?]尾o0J?%o0J?%o0J?%-J?㰾-J?㰾-J?㰾p)J?0p)J?0p)J?0F1J?˰F1J?˰F1J?˰=J£?=J£?=J£?2Jĸ?簾2Jĸ?簾2Jĸ?簾8JF?`氾8JF?`氾=6J ?񰾦.J?ɰ.J?ɰ.J?ɰ)J+?ʰ)J+?ʰ)J+?ʰ37JJ?ذ37JJ?ذ37JJ?ذ37JJ?ذ37JJ?ذ37JJ?ذ)J+?ʰ)J+?ʰ)J+?ʰ5JS?ݼ5JS?ݼ5JS?ݼ37JJ?ذ37JJ?ذ37JJ?ذe*J&?ذe*J&?ذe*J&?ذ8Jp?̰8Jp?̰8Jp?̰R0J?]尾R0J?]尾R0J?]尾2Jɾ?ٰ2Jɾ?ٰ2Jɾ?ٰ4J)??ְ4J)??ְ4J)??ְ20Jt? 20Jt? 20Jt? O7Jx?QO7Jx?QO7Jx?Q}/J?װ}/J?װ}/J?װF*J?F*J?F*J?5JS?ݼ5JS?ݼ5JS?ݼi5J%?䰾i5J%?䰾i5J%?䰾]6JO?ʰ]6JO?ʰ]6JO?ʰ4J? 4J? 4J? i5J%?䰾i5J%?䰾i5J%?䰾@J?:@J?:@J?:F1J?˰F1J?˰F1J?˰(J/?"(J/?"(J/?"=Jǩ?尾=Jǩ?尾=Jǩ?尾DJi?氾DJi?氾DJi?氾e*J&?ذe*J&?ذe*J&?ذo0J?%o0J?%o0J?%3J.?iȰ3J.?iȰ3J.?iȰYF YF YF *`!*`!*`! )` ؟ )` ؟ )` ؟ѡþ(lFaѡþ(lFaѡþ(lFaþW(l<`þW(l<`þW(l<`U˿]ygR>U˿]ygR>U˿]ygR>{g!R>{g!R>{g!R>SڮS,> ˮ S)>SڮS,>ٮSS>ٮSS>ٮSS>g90*?g90*?g90*?60*?60*?60*?9VNVZV?9VNVZV?9VNVZV?dnVQiGV?dnVQiGV?dnVQiGV? 2s? 2s? 2s?ݚ7s?ݚ7s?ݚ7s?b{R՚?b{R՚?b{R՚?'{,R?'{,R?'{,R?a=pB>[z?a=pB>[z?a=pB>[z?a=B>$z?a=B>$z?a=B>$z?~0>d>xd?~0>d>xd?~0>d>xd?~0>d>xd?~0>d>xd?~0>d>xd?Ђ>?}>?Ђ>?}>?Ђ>?}>?3>B?>?3>B?>?3>B?>? >AE?o ? >AE?o ? >AE?o ?>E? ?>E? ?>E? ?*>`?!>*>`?!>*>`?!>,>j`?4r>,>j`?4r>,>j`?4r>U˿>]yg?RU˿>]yg?RU˿>]yg?RJ> S?J> S?J> S?cή>S?hHcή>S?hHcή>S?hH羬> 0?*> 0?*> 0?*>A0?*>A0?*>A0?*dnV>Qi?GVdnV>Qi?GVdnV>Qi?GV9V>N?VZV9V>N?VZV9V>N?VZV=ݚ>7s=ݚ>7s=ݚ>7s=>2s=>2s=>2s'{<,R='{<,R='{<,R=ũ<R=ũ<R=ũ<R=-թB݅z-թB݅z-թB݅z6`Bz6`Bz6`BzV07վmdV07վmdV07վmd`0ZվK{d`0ZվK{d`0ZվK{d3B>3B>3B>C1>C1>C1> AEo AEo AEo Ol>t#Ol>t#Ol>t#l>ѹl>ѹl>ѹ}l >H:}l >H:}l >H:Zlu>:Zlu>:Zlu>:klNb>eklNb>eklNb>ebrlA>5J9brlA>5J9brlA>5J9Old>/ѸOld>/ѸOld>/Ѹ l>30 l>30 l>30.l>.l>.l>.l>8.l>8.l>8l>{J9l>{J9l>{J9l>e*;l>e*;l>e*;ul/1>`Ѹul/1>`Ѹul/1>`Ѹ~l>I~l>I~l>I:9lP>X::*lC>k*lC>k*lC>kpl/L>H9pl/L>H9pl/L>H9l>EQl>EQl>EQ;l> >;lZ>>;;l> >;l>l>l>ƈl>ƈl>ƈl>.l>.l>.l>55?55?55?55?55?55?  >U }  >U }  >U }a,}a,}a,}?i?iii?ii??i?i?i?i??i?i?iiii?i?i?ii??i?iiii?i??i?i?i?i?i?i?ii?i?i?i?i?ii?ii?ii?iii?i?iiiii?ii?ii??ii?ii?i?i??i?i?i?i?i?i?ii??iii??i?i??i?i?i?i?ii?ii??i??i?i?i?i?ii?ii?i?i?i??ii??i?iiiiiii?ii??i?ii??i?iii?iiii?ii?i?ii?i?i?i?i??i?i?i?i?i?i?ii?iiiii?ii?i?i?i?ii?i?i?ii??i?i???i?i?iiiii?ii?ii??i?iiiiii?ii??ii??i?iiii?ii?i?i?i??i??i?i?i?i?ii?i??i?i?i?i?i?i?ii??ii?i?i?ii?ii?ii?ii?ii?i?iii?ii??i?i?i?i??i?i??iiiii?ii?ii??ii?ii?i?ii?ii?ii?iii?ii?i??i?i?i?i?i?i?ii?i?i?iiii?i?i?ii??i?iiii?ii?i?i??i?i?i??i?i?i?ii?ii??i?ii?iiiii?ii?i?i?i??i?i??i?iii?ii??ii?iii?ii?i?ii?ii?i?i??i?i?i?ii?ii?i?i?i??ii??i?iiiiiii?i?i?i?i?ii?i?i??ii??i?i?i?i?i?i?i?i??i?i??i?iii?ii??i?i?ii?i?i??ii??i?i?i?i?ii?iii?ii?i?ii?ii?i?ii??i?ii?iiiii?iii??i?iiiiiii?i?i?i?i??i?i?i?ii?ii?i?i?i??J ѾQJ >+n .!٬O`B>׬55?J ѾQJ >+n .bl7;,>^ld >;,>O@8>!٬0j 1<{??????^оQz >55?==^re,?==^re,?mg ?^оQz >~E`C~E`C~E`C~E`C~E`C~E`C???????????????FO,>款????O@8>!٬??????==^re,?????==^re,?????????????????????????????????????????????????????????????????????????????????????????????????Q?Q?Q?Q9?Q9?Q9?????????????????????????????????????????????????????????????????????????????????????Y9SY9SY9S:N./:N./:N./??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????þ.lѸþ.lѸþ.lѸ-þ݀lF9-þ݀lF9-þ݀lF9þlʷѸþlʷѸþlʷѸþ.lѸþ.lѸþ.lѸ?????????55BB??5?5855??????????????? :?/ :?/ :?/:?-/:?-/:?-/?'Ѹ)?'Ѹ)?'Ѹ)?'Ѹ)?'Ѹ)?'Ѹ)??????????????????55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5???????5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?r9 /r9 /r9 /-:/-:/-:/???????8?8?8?????????????8?8?8??????????????????????????????888888p>T>p>T>p>T>|?[!>|?[!>|?[!>T?M[ ?T?M[ ?T?M[ ?|?[!>|?[!>|?[!>|?[!>|?[!>|?[!>\yGa>\yGa>\yGa>y`a>y`a>y`a>a9c>#i?a9c>#i?a9c>#i?y`a>y`a>y`a>????????????TwTwTwTwTwTw/,)N?/,)N?/,)N?/,)N?/,)N?/,)N?>F!>F!>F!>F!>F!>F!I=>${?I=>${?I=>${?b}=->Y{?b}=->Y{?b}=->Y{?!ro?!ro?!ro?ﶾ o?ﶾ o?ﶾ o?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< =?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJ J J J J JJJJJJJJJJJJJJJJJJJ J!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLL L L L L LLLLLLLLLLLLLLLLLLL L!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMM M M M M MMMMMMMMMMMMMMMMMMM M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNN N N N N NNNNNNNNNNNNNNNNNNN N!N"N#N$N%N&N'N(N)N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOO O!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPP P P P P PPPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQQQQ Q!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;TT?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWW W W W W WWWWWWWWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyWzW{W|W}W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5X6X7X8X9X:X;XX?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;YY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[ [ [ [ [ [[[[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z[{[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^v^w^x^y^z^{^|^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~__________________________________________________________________________________________________________________________________````````` ` ` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`^`_```a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaa a a a a aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb b b b b bbbbbbbbbbbbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc c c c c ccccccccccccccccccc c!c"c#c$c%c&c'c(c)c*c+c,c-c.c/c0c1c2c3c4c5c6c7c8c9c:c;cc?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeee e e e e eeeeeeeeeeeeeeeeeee e!e"e#e$e%e&e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyeze{e|e}e~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffff f f f f fffffffffffffffffff f!f"f#f$f%f&f'f(f)f*f+f,f-f.f/f0f1f2f3f4f5f6f7f8f9f:f;ff?f@fAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf[f\f]f^f_f`fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzf{f|f}f~ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggggggggg g g g g ggggggggggggggggggg g!g"g#g$g%g&g'g(g)g*g+g,g-g.g/g0g1g2g3g4g5g6g7g8g9g:g;gg?g@gAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhh h h h h hhhhhhhhhhhhhhhhhhh h!h"h#h$h%h&h'h(h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;hh?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;ii?i@iAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi{i|i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;jj?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkk k k k k kkkkkkkkkkkkkkkkkkk k!k"k#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;kk?k@kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk[k\k]k^k_k`kakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzk{k|k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllll l l l l lllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;ll?l@lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmm m m m m mmmmmmmmmmmmmmmmmmm m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnn n n n n nnnnnnnnnnnnnnnnnnn n!n"n#n$n%n&n'n(n)n*n+n,n-n.n/n0n1n2n3n4n5n6n7n8n9n:n;nn?n@nAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn[n\n]n^n_n`nanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn{n|n}n~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooT?4^KT?qhνT?휾KT?휾KT?qhνT?vνT?휾KT?vνT?vϽT?L7=T?G=T?JvNb=T?JvNb=T?G=T?GT9=T?JvNb=T?GT9=T?Nb=T?Nb=T?GT9=T?qhT9=}?G=}?L7=}?GT9=}?GT9=}?L7=}?IvNb=}?GT9=}?IvNb=}?phT9=}?phT9=}?IvNb=}?Nb=}?uϽ}?uν}?휾K}?휾K}?uν}?phν}?휾K}?phν}?3^K}?GT9=T?GT9=}?G=}?G=T?GT9=T?G=}?uν}?uϽT?vνT?vν}?uϽT?vϽ}?L7=}?G=T?L7=T?L7=}?G=T?G=}?3^K}?Nb=T?Nb=T?Nb=T?4^K}?3^K}?phνT?qhνT?qhT9=T?qhT9=}?phT9=}?phν}?phν}?phT9=}?Nb=}?Nb=}?3^K}?phνT?qhνT?4^KT?Nb=T?Nb=T?qhT9=T?qhν}?GT9=}?phT9=T?qhT9=T?qhT9=T?GT9=}?GT9=}?uνT?vνT?qhνT?qhν}?phν}?uν}?휾K}?3^KT?4^KT?4^KT?휾K}?휾K}?Nb=}?IvNb=T?JvNb=T?JvNb=T?Nb=}?Nb=}?IvNb=}?L7=T?L7=T?L7=T?JvNb=}?IvNb=}?uϽ}?휾KT?휾KT?휾KT?vϽ}?uϽ_>!P`e!P`ehP`ehP`e<_>hP`e<_>!P`e<_>h楛=_>hP`ehP`ehP`eh楛=_>h楛=_>!楛=_>h楛=k">h楛=k">h楛=k">!楛=_>!楛=k">!楛=k">h楛=k">hP`ehP`e!P`e!楛=_>!楛=_>!P`e<_>hP`e<_>hP`e<_>h楛=_>!楛=_>!P`e<_>!楛=k">!楛=k">!楛=k">!P`e<_>!P`e<_>!7`ek">!7`ek">h7`ek">h7`e_>h7`e_>!7`e_>h7`ek">h7`ek">h㥛k">h㥛_>h㥛_>h7`e_>!㥛_>h㥛k">h㥛k">h㥛k">!㥛_>!㥛_>!7`e_>!㥛k">!㥛k">!㥛k">!7`e_>!7`e_>!7`e_>h7`e_>h㥛_>h㥛_>!㥛_>!7`ek">!7`ek">!㥛k">h㥛k">h㥛k">h7`ek">!7`e?"Vn=?"^==-^K7=ƈ2Vn4v<ƈ2^4v<ƈ2^v=-VnAV7=-^AV7?"^𿕽꛽VnZ!꛽^Z!|D^V,q^42nVn42^/^/nVn42Vn/^/Vn/|D^V,|D^V,Vn/|DVnV,|D^V,|DVnV,꛽VnZ!꛽^Z!꛽VnZ!V^xV^x꛽VnZ!VVnxV^xVVnxJн^Jн^VVnxIнVnJн^IнVnw^&w^&IнVnPVnw^&PVnF^PVnFVnLF^F^FVnLVnVF^VnVM^c˽M^c˽VnVMVnc˽M^c˽MVnc˽?"^𿕽?"^𿕽MVnc˽?"Vn𿕽?"^𿕽?"Vn𿕽=-VnAV7=-^AV7=-VnAV7ƈ2^vƈ2^v=-VnAV7ƈ2Vnvƈ2^vƈ2Vnvƈ2Vn4v<ƈ2^4v<ƈ2Vn4v<=-^K7==-^K7=ƈ2Vn4v<=-VnK7==-^K7==-VnK7=?"Vn=?"^=?"Vn=M^ c=M^ c=?"Vn=MVn c=M^ c=MVn c=^=^=MVn c=Vn=^=Vn=Jн^>Jн^>Vn=IнVn>Jн^>IнVn>꛽^Z!>꛽^Z!>IнVn>꛽VnZ!>꛽^Z!>꛽VnZ!>|DVn6T,>nVn42>q^42>|DVn6T,>|DVn6T,>q^42>|D^6T,>|DVn6T,>|D^6T,>꛽^Z!>q^42>nVn42>=^7>=^7>nVn42>=Vn7>=^7>=Vn7>K\=^3=>K\=^3=>=Vn7>L\=Vn3=>K\=^3=>L\=Vn3=>=^@>=^@>L\=Vn3=>&V=Vn*@>=^@>&V=Vn*@>G>^; W>G>^; W>&V=Vn*@>G>Vn; W>Z=^AAG>^= WG>Vn= WG>Vn= W&V=Vn@Z=^AAZ=^AA&V=Vn@L\=Vnӟ=nVn42q^42=Vn7=Vn7q^42=^7=Vn7=^7L\=Vnӟ=L\=Vnӟ==^7K\=^ӟ=L\=Vnӟ=K\=^ӟ=Z=^AAff?Z)\ff?Z&\=ff?&\=ff?&\=ff?)\ff?Z)\?Z)\?Z&\=?&\=?&\=?)\?Z)\ff?)\?)\?&\=?&\=ff?&\=ff?)\ff?Z)\?Z)\?)\?)\ff?)\ff?Z)\ff?Z&\=ff?&\=?&\=?&\=?Z&\=ff?Z&\=x.Sx.S=x.팿=x.팿=x.팿x.SrS=r팿=x.팿=x.팿=x.S=rS=r팿x.팿x.팿=x.팿=r팿=r팿rSrS=x.S=x.S=x.SrS|D^V,W ;^ ^/K\=^ӟ==^7W ;^ k">S&\=k">팿&\=`>팿X=`>팿X=`>SX=k">S&\=`>SX=`>팿X=%=팿PX>%=팿PX>1=S>`>SX=X=팿8> X=S8>1=S>1=S>%=팿PX>X=팿8>l=팿'>l=S'> X=S8> X=S8>X=팿8>l=팿'>l=S'>l=팿'>u=팿">u=팿">v=S">l=S'>v=S">u=팿">$R<팿$>$R<팿$>&Rv=S">)GaS]%>&R$R<팿$>$R<팿$>.Ga팿]%>)GaS]%>%IS^>)GaS]%>.Ga팿]%>.Ga팿]%>&I팿^>%IS^>%IS^>&I팿^>X팿 >X팿 >XS >%IS^>XS >X팿 >P팿>P팿>o,SpQ>XS >PSX=o,SpQ>P팿>P팿>P팿X=PSX=h팿>=hS>=PSX=PSX=P팿X=h팿>=/SB=hS>=h팿>=h팿>=/팿B=/SB=/팿B=r팿=rS=rS=/SB=/팿B=rSr팿/팿 /팿 /S rSh팿>DP팿XPSXPSXhS>Dh팿>DP팿XP팿o,SnQo,SnQPSXP팿XXS o,SnQP팿P팿X팿 XS %IS`&I팿`.Ga팿[%.Ga팿[%)GaS[%%IS`v=Sl"&RSX1=S%=팿NX%=팿NX`>팿X`>SXh팿>DhS>D/S /S /팿 h팿>D%IS`XS X팿 X팿 &I팿`%IS`$R<팿t$&RS)\`>SX`>팿X`>팿Xk">팿)\k">S)\x.Sx.팿r팿r팿rSx.SW ;^ w^&F^ƈ2^4vVn; W>X>^; W>G>^; W>G>^; W>G>Vn; W>X>Vn; W>X>Vn= WX>^= WX>^; W>X>^; W>X>Vn; W>X>Vn= WX>Vn= WG>Vn= WG>^= WG>^= WX>^= WX>Vn= WK\=^ӟ=W ;^ Z=^AAK\=^3=>=^@>Z=^AAZ=^AAW ;^ K\=^3=>X>^; W>X>^= WG>^= WG>^= WG>^; W>X>^; W>w^&W ;^ V^xV^xJн^w^&^=Jн^>꛽^Z!>꛽^Z!>W ;^ ^=?"^𿕽W ;^ F^F^M^c˽?"^𿕽^=W ;^ ?"^=?"^=M^ c=^=|D^V,꛽^Z!V^xV^xW ;^ |D^V,=^7q^42^/^/W ;^ =^7?"^𿕽=-^AV7ƈ2^vƈ2^vW ;^ ?"^𿕽q^42>W ;^ ꛽^Z!>꛽^Z!>|D^6T,>q^42>ƈ2^4v<=-^K7=?"^=?"^=W ;^ ƈ2^4v=^7>K\=^3=>K\=^3=>W ;^ q^42>=^@>G>^; W>G>^= WG>^= WZ=^AA=^@>&V=Vn@;VnS.L\=Vnӟ=L\=Vnӟ=;VnS.=Vn7Vn/;VnS.|DVnV,ƈ2Vnv;VnS.ƈ2Vn4v<X>Vn; W>G>Vn; W>G>Vn= WG>Vn= WX>Vn= WX>Vn; W>&V=Vn@&V=Vn*@>L\=Vn3=>L\=Vn3=>;VnS.&V=Vn@=Vn7;VnS.Vn/Vn/nVn42=Vn7|DVnV,;VnS.VVnxVVnx꛽VnZ!|DVnV,VVnx;VnS.PVnPVnIнVnVVnxVnV;VnS.?"Vn𿕽?"Vn𿕽MVnc˽VnV?"Vn𿕽;VnS.ƈ2Vnvƈ2Vnv=-VnAV7?"Vn𿕽ƈ2Vn4v<;VnS.?"Vn=?"Vn==-VnK7=ƈ2Vn4v꛽VnZ!>IнVn>Vn=꛽VnZ!>;VnS.nVn42>nVn42>|DVn6T,>꛽VnZ!>nVn42>;VnS.L\=Vn3=>L\=Vn3=>=Vn7>nVn42>;VnS.VnVFVnLFVnLPVn;VnS.G>Vn; W>&V=Vn*@>&V=Vn@&V=Vn@G>Vn= WG>Vn; W>X>kf.1>X>9f.1>p>9f.1>p>9f.1>p>kf.1>X>kf.1>X>Zg*x1>X>9f.1>p>9f.1>p>9f.1>p>Zg*x1>X>Zg*x1>X>^e*x1>X>kf.1>p>kf.1>p>kf.1>p>^e*x1>X>^e*x1>X>g 2>X>Zg*x1>p>Zg*x1>p>Zg*x1>p>g 2>X>g 2>X>e 2>X>^e*x1>p>^e*x1>p>^e*x1>p>e 2>X>e 2>X>9hO2>X>g 2>p>g 2>p>g 2>p>9hO2>X>9hO2>X>3eO2>X>e 2>p>e 2>p>e 2>p>3eO2>X>3eO2>X>h03>X>9hO2>p>9hO2>p>9hO2>p>h03>X>h03>X>=d03>X>3eO2>p>3eO2>p>3eO2>p>=d03>X>=d03>X>"hB5>X>h03>p>h03>p>h03>p>"hB5>X>"hB5>X>\dB5>X>=d03>p>=d03>p>=d03>p>\dB5>X>\dB5>X>;iw6>X>"hB5>p>"hB5>p>"hB5>p>;iw6>X>;iw6>X>dw6>X>\dB5>p>\dB5>p>\dB5>p>dw6>X>dw6>X>uii8>X>;iw6>p>;iw6>p>;iw6>p>uii8>X>uii8>X>Pci8>X>dw6>p>dw6>p>dw6>p>Pci8>X>Pci8>X>/i/:>X>uii8>p>uii8>p>uii8>p>/i/:>X>/i/:>X>c/:>X>Pci8>p>Pci8>p>Pci8>p>c/:>X>c/:>X>i<>X>/i/:>p>/i/:>p>/i/:>p>i<>X>i<>X>c<>X>c/:>p>c/:>p>c/:>p>c<>X>c<>X>i<=>X>i<>p>i<>p>i<>p>i<=>X>i<=>X>'c<=>X>c<>p>c<>p>c<>p>'c<=>X>'c<=>X>iS?>X>i<=>p>i<=>p>i<=>p>iS?>X>iS?>X>cS?>X>'c<=>p>'c<=>p>'c<=>p>cS?>X>cS?>X>ՋiSA>X>iS?>p>iS?>p>iS?>p>ՋiSA>X>ՋiSA>X>`cSA>X>cS?>p>cS?>p>cS?>p>`cSA>X>`cSA>X>ZiNC>X>ՋiSA>p>ՋiSA>p>ՋiSA>p>ZiNC>X>ZiNC>X>0cNC>X>`cSA>p>`cSA>p>`cSA>p>0cNC>X>0cNC>X>&ikD>X>ZiNC>p>ZiNC>p>ZiNC>p>&ikD>X>&ikD>X>6dkD>X>0cNC>p>0cNC>p>0cNC>p>6dkD>X>6dkD>X>1hIF>X>&ikD>p>&ikD>p>&ikD>p>1hIF>X>1hIF>X>dIF>X>6dkD>p>6dkD>p>6dkD>p>dIF>X>dIF>X>!lhF|G>X>1hIF>p>1hIF>p>1hIF>p>!lhF|G>X>!lhF|G>X>dF|G>X>dIF>p>dIF>p>dIF>p>dF|G>X>dF|G>X>hrH>X>!lhF|G>p>!lhF|G>p>!lhF|G>p>hrH>X>hrH>X>JerH>X>dF|G>p>dF|G>p>dF|G>p>JerH>X>JerH>X>,g'I>X>hrH>p>hrH>p>hrH>p>,g'I>X>,g'I>X>e'I>X>JerH>p>JerH>p>JerH>p>e'I>X>e'I>X>gI>X>,g'I>p>,g'I>p>,g'I>p>gI>X>gI>X>0fI>X>e'I>p>e'I>p>e'I>p>0fI>X>0fI>X>f_I>X>gI>p>gI>p>gI>p>f_I>X>f_I>X>f_I>X>0fI>p>0fI>p>0fI>p>f_I>X>f_I>X>kfIX>9fIX>9fIX>9fIX>kfIX>kfIX>ZgiIX>9fIX>9fIX>9fIX>ZgiIX>ZgiIX>^eiIX>kfIX>kfIX>kfIX>^eiIX>^eiIX>gMHX>ZgiIX>ZgiIX>ZgiIX>gMHX>gMHX>eMHX>^eiIX>^eiIX>^eiIX>eMHX>eMHX>9hHX>gMHX>gMHX>gMHX>9hHX>9hHX>3eHX>eMHX>eMHX>eMHX>3eHX>3eHX>hFX>9hHX>9hHX>9hHX>hFX>hFX>=dFX>3eHX>3eHX>3eHX>=dFX>=dFX>"h+EX>hFX>hFX>hFX>"h+EX>"h+EX>\d+EX>=dFX>=dFX>=dFX>\d+EX>\d+EX>;iDX>"h+EX>"h+EX>"h+EX>;iDX>;iDX>dDX>\d+EX>\d+EX>\d+EX>dDX>dDX>uiwBX>;iDX>;iDX>;iDX>uiwBX>uiwBX>PcwBX>dDX>dDX>dDX>PcwBX>PcwBX>/iA@X>uiwBX>uiwBX>uiwBX>/iA@X>/iA@X>cA@X>PcwBX>PcwBX>PcwBX>cA@X>cA@X>if>X>/iA@X>/iA@X>/iA@X>if>X>if>X>cf>X>cA@X>cA@X>cA@X>cf>X>cf>X>i <X>if>X>if>X>if>X>i <X>i <X>'c <X>cf>X>cf>X>cf>X>'c <X>'c <X>i;X>i <X>i <X>i <X>i;X>i;X>c;X>'c <X>'c <X>'c <X>c;X>c;X>ՋiJ9X>i;X>i;X>i;X>ՋiJ9X>ՋiJ9X>`cJ9X>c;X>c;X>c;X>`cJ9X>`cJ9X>Zi7X>ՋiJ9X>ՋiJ9X>ՋiJ9X>Zi7X>Zi7X>0c7X>`cJ9X>`cJ9X>`cJ9X>0c7X>0c7X>&i5X>Zi7X>Zi7X>Zi7X>&i5X>&i5X>6d5X>0c7X>0c7X>0c7X>6d5X>6d5X>1h4X>&i5X>&i5X>&i5X>1h4X>1h4X>d4X>6d5X>6d5X>6d5X>d4X>d4X>!lhe3X>1h4X>1h4X>1h4X>!lhe3X>!lhe3X>de3X>d4X>d4X>d4X>de3X>de3X>hn2X>!lhe3X>!lhe3X>!lhe3X>hn2X>hn2X>Jen2X>de3X>de3X>de3X>Jen2X>Jen2X>,g1X>hn2X>hn2X>hn2X>,g1X>,g1X>e1X>Jen2X>Jen2X>Jen2X>e1X>e1X>gK1X>,g1X>,g1X>,g1X>gK1X>gK1X>0fK1X>e1X>e1X>e1X>0fK1X>0fK1X>f&1X>gK1X>gK1X>gK1X>f&1X>f&1X>f&1X>0fK1X>0fK1X>0fK1X>f&1X>f&1X>PcwBX>PcwBX>PcwBX>PcwBX>PcwBX>PcwBX>kfIX>9fIp>9fIp>9fIp>kfIX>kfIX>ZgiIX>9fIp>9fIp>9fIp>ZgiIX>ZgiIX>^eiIX>kfIp>kfIp>kfIp>^eiIX>^eiIX>gMHX>ZgiIp>ZgiIp>ZgiIp>gMHX>gMHX>eMHX>^eiIp>^eiIp>^eiIp>eMHX>eMHX>9hHX>gMHp>gMHp>gMHp>9hHX>9hHX>3eHX>eMHp>eMHp>eMHp>3eHX>3eHX>hFX>9hHp>9hHp>9hHp>hFX>hFX>=dFX>3eHp>3eHp>3eHp>=dFX>=dFX>"h+EX>hFp>hFp>hFp>"h+EX>"h+EX>\d+EX>=dFp>=dFp>=dFp>\d+EX>\d+EX>;iDX>"h+Ep>"h+Ep>"h+Ep>;iDX>;iDX>dDX>\d+Ep>\d+Ep>\d+Ep>dDX>dDX>uiwBX>;iDp>;iDp>;iDp>uiwBX>uiwBX>PcwBX>dDp>dDp>dDp>PcwBX>PcwBX>/iA@X>uiwBp>uiwBp>uiwBp>/iA@X>/iA@X>cA@X>PcwBp>PcwBp>PcwBp>cA@X>cA@X>if>X>/iA@p>/iA@p>/iA@p>if>X>if>X>cf>X>cA@p>cA@p>cA@p>cf>X>cf>X>i <X>if>p>if>p>if>p>i <X>i <X>'c <X>cf>p>cf>p>cf>p>'c <X>'c <X>i;X>i

i

i

i;X>i;X>c;X>'c

'c

'c

c;X>c;X>ՋiJ9X>i;p>i;p>i;p>ՋiJ9X>ՋiJ9X>`cJ9X>c;p>c;p>c;p>`cJ9X>`cJ9X>Zi7X>ՋiJ9p>ՋiJ9p>ՋiJ9p>Zi7X>Zi7X>0c7X>`cJ9p>`cJ9p>`cJ9p>0c7X>0c7X>&i5X>Zi7p>Zi7p>Zi7p>&i5X>&i5X>6d5X>0c7p>0c7p>0c7p>6d5X>6d5X>1h4X>&i5p>&i5p>&i5p>1h4X>1h4X>d4X>6d5p>6d5p>6d5p>d4X>d4X>!lhe3X>1h4p>1h4p>1h4p>!lhe3X>!lhe3X>de3X>d4p>d4p>d4p>de3X>de3X>hn2X>!lhe3p>!lhe3p>!lhe3p>hn2X>hn2X>Jen2X>de3p>de3p>de3p>Jen2X>Jen2X>,g1X>hn2p>hn2p>hn2p>,g1X>,g1X>e1X>Jen2p>Jen2p>Jen2p>e1X>e1X>gK1X>,g1p>,g1p>,g1p>gK1X>gK1X>0fK1X>e1p>e1p>e1p>0fK1X>0fK1X>f&1X>gK1p>gK1p>gK1p>f&1X>f&1X>f&1X>0fK1p>0fK1p>0fK1p>f&1X>f&1X>PcwBX>PcwBp>PcwBp>PcwBp>PcwBX>PcwBX>f_I>X>0fI>p>0fI>p>0fI>p>f_I>X>f_I>X>f_I>X>gI>p>gI>p>gI>p>f_I>X>f_I>X>0fI>X>e'I>p>e'I>p>e'I>p>0fI>X>0fI>X>gI>X>,g'I>p>,g'I>p>,g'I>p>gI>X>gI>X>e'I>X>JerH>p>JerH>p>JerH>p>e'I>X>e'I>X>,g'I>X>hrH>p>hrH>p>hrH>p>,g'I>X>,g'I>X>JerH>X>dF|G>p>dF|G>p>dF|G>p>JerH>X>JerH>X>hrH>X>!lhF|G>p>!lhF|G>p>!lhF|G>p>hrH>X>hrH>X>dF|G>X>dIF>p>dIF>p>dIF>p>dF|G>X>dF|G>X>!lhF|G>X>1hIF>p>1hIF>p>1hIF>p>!lhF|G>X>!lhF|G>X>dIF>X>6dkD>p>6dkD>p>6dkD>p>dIF>X>dIF>X>1hIF>X>&ikD>p>&ikD>p>&ikD>p>1hIF>X>1hIF>X>6dkD>X>0cNC>p>0cNC>p>0cNC>p>6dkD>X>6dkD>X>&ikD>X>ZiNC>p>ZiNC>p>ZiNC>p>&ikD>X>&ikD>X>0cNC>X>`cSA>p>`cSA>p>`cSA>p>0cNC>X>0cNC>X>ZiNC>X>ՋiSA>p>ՋiSA>p>ՋiSA>p>ZiNC>X>ZiNC>X>`cSA>X>cS?>p>cS?>p>cS?>p>`cSA>X>`cSA>X>ՋiSA>X>iS?>p>iS?>p>iS?>p>ՋiSA>X>ՋiSA>X>cS?>X>'c<=>p>'c<=>p>'c<=>p>cS?>X>cS?>X>iS?>X>i<=>p>i<=>p>i<=>p>iS?>X>iS?>X>'c<=>X>c<>p>c<>p>c<>p>'c<=>X>'c<=>X>i<=>X>i<>p>i<>p>i<>p>i<=>X>i<=>X>c<>X>c/:>p>c/:>p>c/:>p>c<>X>c<>X>i<>X>/i/:>p>/i/:>p>/i/:>p>i<>X>i<>X>c/:>X>Pci8>p>Pci8>p>Pci8>p>c/:>X>c/:>X>/i/:>X>uii8>p>uii8>p>uii8>p>/i/:>X>/i/:>X>Pci8>X>dw6>p>dw6>p>dw6>p>Pci8>X>Pci8>X>uii8>X>;iw6>p>;iw6>p>;iw6>p>uii8>X>uii8>X>dw6>X>\dB5>p>\dB5>p>\dB5>p>dw6>X>dw6>X>;iw6>X>"hB5>p>"hB5>p>"hB5>p>;iw6>X>;iw6>X>\dB5>X>=d03>p>=d03>p>=d03>p>\dB5>X>\dB5>X>"hB5>X>h03>p>h03>p>h03>p>"hB5>X>"hB5>X>=d03>X>3eO2>p>3eO2>p>3eO2>p>=d03>X>=d03>X>h03>X>9hO2>p>9hO2>p>9hO2>p>h03>X>h03>X>3eO2>X>e 2>p>e 2>p>e 2>p>3eO2>X>3eO2>X>9hO2>X>g 2>p>g 2>p>g 2>p>9hO2>X>9hO2>X>e 2>X>^e*x1>p>^e*x1>p>^e*x1>p>e 2>X>e 2>X>g 2>X>Zg*x1>p>Zg*x1>p>Zg*x1>p>g 2>X>g 2>X>^e*x1>X>kf.1>p>kf.1>p>kf.1>p>^e*x1>X>^e*x1>X>Zg*x1>X>9f.1>p>9f.1>p>9f.1>p>Zg*x1>X>Zg*x1>X>kf.1>X>9f.1>p>9f.1>p>9f.1>p>kf.1>X>kf.1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>9f.1>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kf.1>p>^e*x1>p>fp=>p>fp=>p>fp=>p>kf.1>p>Zg*x1>p>g 2>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>^e*x1>p>e 2>p>fp=>p>fp=>p>fp=>p>^e*x1>p>g 2>p>9hO2>p>fp=>p>fp=>p>fp=>p>g 2>p>e 2>p>3eO2>p>fp=>p>fp=>p>fp=>p>e 2>p>9hO2>p>h03>p>fp=>p>fp=>p>fp=>p>9hO2>p>3eO2>p>=d03>p>fp=>p>fp=>p>fp=>p>3eO2>p>h03>p>"hB5>p>fp=>p>fp=>p>fp=>p>h03>p>=d03>p>\dB5>p>fp=>p>fp=>p>fp=>p>=d03>p>"hB5>p>;iw6>p>fp=>p>fp=>p>fp=>p>"hB5>p>\dB5>p>dw6>p>fp=>p>fp=>p>fp=>p>\dB5>p>;iw6>p>uii8>p>fp=>p>fp=>p>fp=>p>;iw6>p>dw6>p>Pci8>p>fp=>p>fp=>p>fp=>p>dw6>p>uii8>p>/i/:>p>fp=>p>fp=>p>fp=>p>uii8>p>Pci8>p>c/:>p>fp=>p>fp=>p>fp=>p>Pci8>p>/i/:>p>i<>p>fp=>p>fp=>p>fp=>p>/i/:>p>c/:>p>c<>p>fp=>p>fp=>p>fp=>p>c/:>p>i<>p>i<=>p>fp=>p>fp=>p>fp=>p>i<>p>c<>p>'c<=>p>fp=>p>fp=>p>fp=>p>c<>p>i<=>p>iS?>p>fp=>p>fp=>p>fp=>p>i<=>p>'c<=>p>cS?>p>fp=>p>fp=>p>fp=>p>'c<=>p>iS?>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>iS?>p>cS?>p>`cSA>p>fp=>p>fp=>p>fp=>p>cS?>p>ՋiSA>p>ZiNC>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>`cSA>p>0cNC>p>fp=>p>fp=>p>fp=>p>`cSA>p>ZiNC>p>&ikD>p>fp=>p>fp=>p>fp=>p>ZiNC>p>0cNC>p>6dkD>p>fp=>p>fp=>p>fp=>p>0cNC>p>&ikD>p>1hIF>p>fp=>p>fp=>p>fp=>p>&ikD>p>6dkD>p>dIF>p>fp=>p>fp=>p>fp=>p>6dkD>p>1hIF>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>1hIF>p>dIF>p>dF|G>p>fp=>p>fp=>p>fp=>p>dIF>p>!lhF|G>p>hrH>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dF|G>p>JerH>p>fp=>p>fp=>p>fp=>p>dF|G>p>hrH>p>,g'I>p>fp=>p>fp=>p>fp=>p>hrH>p>JerH>p>e'I>p>fp=>p>fp=>p>fp=>p>JerH>p>,g'I>p>gI>p>fp=>p>fp=>p>fp=>p>,g'I>p>e'I>p>0fI>p>fp=>p>fp=>p>fp=>p>e'I>p>gI>p>f_I>p>fp=>p>fp=>p>fp=>p>gI>p>0fI>p>f_I>p>fp=>p>fp=>p>fp=>p>0fI>p>f_I>p>0fI>p>fp=>p>fp=>p>fp=>p>f_I>p>f_I>p>gI>p>fp=>p>fp=>p>fp=>p>f_I>p>0fI>p>e'I>p>fp=>p>fp=>p>fp=>p>0fI>p>gI>p>,g'I>p>fp=>p>fp=>p>fp=>p>gI>p>e'I>p>JerH>p>fp=>p>fp=>p>fp=>p>e'I>p>,g'I>p>hrH>p>fp=>p>fp=>p>fp=>p>,g'I>p>JerH>p>dF|G>p>fp=>p>fp=>p>fp=>p>JerH>p>hrH>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>hrH>p>dF|G>p>dIF>p>fp=>p>fp=>p>fp=>p>dF|G>p>!lhF|G>p>1hIF>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dIF>p>6dkD>p>fp=>p>fp=>p>fp=>p>dIF>p>1hIF>p>&ikD>p>fp=>p>fp=>p>fp=>p>1hIF>p>6dkD>p>0cNC>p>fp=>p>fp=>p>fp=>p>6dkD>p>&ikD>p>ZiNC>p>fp=>p>fp=>p>fp=>p>&ikD>p>0cNC>p>`cSA>p>fp=>p>fp=>p>fp=>p>0cNC>p>ZiNC>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>ZiNC>p>`cSA>p>cS?>p>fp=>p>fp=>p>fp=>p>`cSA>p>ՋiSA>p>iS?>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>cS?>p>'c<=>p>fp=>p>fp=>p>fp=>p>cS?>p>iS?>p>i<=>p>fp=>p>fp=>p>fp=>p>iS?>p>'c<=>p>c<>p>fp=>p>fp=>p>fp=>p>'c<=>p>i<=>p>i<>p>fp=>p>fp=>p>fp=>p>i<=>p>c<>p>c/:>p>fp=>p>fp=>p>fp=>p>c<>p>i<>p>/i/:>p>fp=>p>fp=>p>fp=>p>i<>p>c/:>p>Pci8>p>fp=>p>fp=>p>fp=>p>c/:>p>/i/:>p>uii8>p>fp=>p>fp=>p>fp=>p>/i/:>p>Pci8>p>dw6>p>fp=>p>fp=>p>fp=>p>Pci8>p>uii8>p>;iw6>p>fp=>p>fp=>p>fp=>p>uii8>p>dw6>p>\dB5>p>fp=>p>fp=>p>fp=>p>dw6>p>;iw6>p>"hB5>p>fp=>p>fp=>p>fp=>p>;iw6>p>\dB5>p>=d03>p>fp=>p>fp=>p>fp=>p>\dB5>p>"hB5>p>h03>p>fp=>p>fp=>p>fp=>p>"hB5>p>=d03>p>3eO2>p>fp=>p>fp=>p>fp=>p>=d03>p>h03>p>9hO2>p>fp=>p>fp=>p>fp=>p>h03>p>3eO2>p>e 2>p>fp=>p>fp=>p>fp=>p>3eO2>p>9hO2>p>g 2>p>fp=>p>fp=>p>fp=>p>9hO2>p>e 2>p>^e*x1>p>fp=>p>fp=>p>fp=>p>e 2>p>g 2>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>g 2>p>^e*x1>p>kf.1>p>fp=>p>fp=>p>fp=>p>^e*x1>p>Zg*x1>p>9f.1>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>kf.1>p>9f.1>p>fp=>p>fp=>p>fp=>p>kf.1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>9f.1>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kf.1>p>^e*x1>p>fp=>p>fp=>p>fp=>p>kf.1>p>Zg*x1>p>g 2>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>^e*x1>p>e 2>p>fp=>p>fp=>p>fp=>p>^e*x1>p>g 2>p>9hO2>p>fp=>p>fp=>p>fp=>p>g 2>p>e 2>p>3eO2>p>fp=>p>fp=>p>fp=>p>e 2>p>9hO2>p>h03>p>fp=>p>fp=>p>fp=>p>9hO2>p>3eO2>p>=d03>p>fp=>p>fp=>p>fp=>p>3eO2>p>h03>p>"hB5>p>fp=>p>fp=>p>fp=>p>h03>p>=d03>p>\dB5>p>fp=>p>fp=>p>fp=>p>=d03>p>"hB5>p>;iw6>p>fp=>p>fp=>p>fp=>p>"hB5>p>\dB5>p>dw6>p>fp=>p>fp=>p>fp=>p>\dB5>p>;iw6>p>uii8>p>fp=>p>fp=>p>fp=>p>;iw6>p>dw6>p>Pci8>p>fp=>p>fp=>p>fp=>p>dw6>p>uii8>p>/i/:>p>fp=>p>fp=>p>fp=>p>uii8>p>Pci8>p>c/:>p>fp=>p>fp=>p>fp=>p>Pci8>p>/i/:>p>i<>p>fp=>p>fp=>p>fp=>p>/i/:>p>c/:>p>c<>p>fp=>p>fp=>p>fp=>p>c/:>p>i<>p>i<=>p>fp=>p>fp=>p>fp=>p>i<>p>c<>p>'c<=>p>fp=>p>fp=>p>fp=>p>c<>p>i<=>p>iS?>p>fp=>p>fp=>p>fp=>p>i<=>p>'c<=>p>cS?>p>fp=>p>fp=>p>fp=>p>'c<=>p>iS?>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>iS?>p>cS?>p>`cSA>p>fp=>p>fp=>p>fp=>p>cS?>p>ՋiSA>p>ZiNC>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>`cSA>p>0cNC>p>fp=>p>fp=>p>fp=>p>`cSA>p>ZiNC>p>&ikD>p>fp=>p>fp=>p>fp=>p>ZiNC>p>0cNC>p>6dkD>p>fp=>p>fp=>p>fp=>p>0cNC>p>&ikD>p>1hIF>p>fp=>p>fp=>p>fp=>p>&ikD>p>6dkD>p>dIF>p>fp=>p>fp=>p>fp=>p>6dkD>p>1hIF>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>1hIF>p>dIF>p>dF|G>p>fp=>p>fp=>p>fp=>p>dIF>p>!lhF|G>p>hrH>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dF|G>p>JerH>p>fp=>p>fp=>p>fp=>p>dF|G>p>hrH>p>,g'I>p>fp=>p>fp=>p>fp=>p>hrH>p>JerH>p>e'I>p>fp=>p>fp=>p>fp=>p>JerH>p>,g'I>p>gI>p>fp=>p>fp=>p>fp=>p>,g'I>p>e'I>p>0fI>p>fp=>p>fp=>p>fp=>p>e'I>p>gI>p>f_I>p>fp=>p>fp=>p>fp=>p>gI>p>0fI>p>f_I>p>fp=>p>fp=>p>fp=>p>0fI>p>f_I>p>0fI>p>fp=>p>fp=>p>fp=>p>f_I>p>f_I>p>gI>p>fp=>p>fp=>p>fp=>p>f_I>p>0fI>p>e'I>p>fp=>p>fp=>p>fp=>p>0fI>p>gI>p>,g'I>p>fp=>p>fp=>p>fp=>p>gI>p>e'I>p>JerH>p>fp=>p>fp=>p>fp=>p>e'I>p>,g'I>p>hrH>p>fp=>p>fp=>p>fp=>p>,g'I>p>JerH>p>dF|G>p>fp=>p>fp=>p>fp=>p>JerH>p>hrH>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>hrH>p>dF|G>p>dIF>p>fp=>p>fp=>p>fp=>p>dF|G>p>!lhF|G>p>1hIF>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dIF>p>6dkD>p>fp=>p>fp=>p>fp=>p>dIF>p>1hIF>p>&ikD>p>fp=>p>fp=>p>fp=>p>1hIF>p>6dkD>p>0cNC>p>fp=>p>fp=>p>fp=>p>6dkD>p>&ikD>p>ZiNC>p>fp=>p>fp=>p>fp=>p>&ikD>p>0cNC>p>`cSA>p>fp=>p>fp=>p>fp=>p>0cNC>p>ZiNC>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>ZiNC>p>`cSA>p>cS?>p>fp=>p>fp=>p>fp=>p>`cSA>p>ՋiSA>p>iS?>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>cS?>p>'c<=>p>fp=>p>fp=>p>fp=>p>cS?>p>iS?>p>i<=>p>fp=>p>fp=>p>fp=>p>iS?>p>'c<=>p>c<>p>fp=>p>fp=>p>fp=>p>'c<=>p>i<=>p>i<>p>fp=>p>fp=>p>fp=>p>i<=>p>c<>p>c/:>p>fp=>p>fp=>p>fp=>p>c<>p>i<>p>/i/:>p>fp=>p>fp=>p>fp=>p>i<>p>c/:>p>Pci8>p>fp=>p>fp=>p>fp=>p>c/:>p>/i/:>p>uii8>p>fp=>p>fp=>p>fp=>p>/i/:>p>Pci8>p>dw6>p>fp=>p>fp=>p>fp=>p>Pci8>p>uii8>p>;iw6>p>fp=>p>fp=>p>fp=>p>uii8>p>dw6>p>\dB5>p>fp=>p>fp=>p>fp=>p>dw6>p>;iw6>p>"hB5>p>fp=>p>fp=>p>fp=>p>;iw6>p>\dB5>p>=d03>p>fp=>p>fp=>p>fp=>p>\dB5>p>"hB5>p>h03>p>fp=>p>fp=>p>fp=>p>"hB5>p>=d03>p>3eO2>p>fp=>p>fp=>p>fp=>p>=d03>p>h03>p>9hO2>p>fp=>p>fp=>p>fp=>p>h03>p>3eO2>p>e 2>p>fp=>p>fp=>p>fp=>p>3eO2>p>9hO2>p>g 2>p>fp=>p>fp=>p>fp=>p>9hO2>p>e 2>p>^e*x1>p>fp=>p>fp=>p>fp=>p>e 2>p>g 2>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>g 2>p>^e*x1>p>kf.1>p>fp=>p>fp=>p>fp=>p>^e*x1>p>Zg*x1>p>9f.1>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kfIp>9fIp>f=p>f=p>f=p>kfIp>ZgiIp>9fIp>f=p>f=p>f=p>ZgiIp>^eiIp>kfIp>f=p>f=p>f=p>^eiIp>gMHp>ZgiIp>f=p>f=p>f=p>gMHp>eMHp>^eiIp>f=p>f=p>f=p>eMHp>9hHp>gMHp>f=p>f=p>f=p>9hHp>3eHp>eMHp>f=p>f=p>f=p>3eHp>hFp>9hHp>f=p>f=p>f=p>hFp>=dFp>3eHp>f=p>f=p>f=p>=dFp>"h+Ep>hFp>f=p>f=p>f=p>"h+Ep>\d+Ep>=dFp>f=p>f=p>f=p>\d+Ep>;iDp>"h+Ep>f=p>f=p>f=p>;iDp>dDp>\d+Ep>f=p>f=p>f=p>dDp>uiwBp>;iDp>f=p>f=p>f=p>uiwBp>PcwBp>dDp>f=p>f=p>f=p>PcwBp>/iA@p>uiwBp>f=p>f=p>f=p>/iA@p>cA@p>PcwBp>f=p>f=p>f=p>cA@p>if>p>/iA@p>f=p>f=p>f=p>if>p>cf>p>cA@p>f=p>f=p>f=p>cf>p>i

if>p>f=p>f=p>f=p>i

'c

cf>p>f=p>f=p>f=p>'c

i;p>i

f=p>f=p>f=p>i;p>c;p>'c

f=p>f=p>f=p>c;p>ՋiJ9p>i;p>f=p>f=p>f=p>ՋiJ9p>`cJ9p>c;p>f=p>f=p>f=p>`cJ9p>Zi7p>ՋiJ9p>f=p>f=p>f=p>Zi7p>0c7p>`cJ9p>f=p>f=p>f=p>0c7p>&i5p>Zi7p>f=p>f=p>f=p>&i5p>6d5p>0c7p>f=p>f=p>f=p>6d5p>1h4p>&i5p>f=p>f=p>f=p>1h4p>d4p>6d5p>f=p>f=p>f=p>d4p>!lhe3p>1h4p>f=p>f=p>f=p>!lhe3p>de3p>d4p>f=p>f=p>f=p>de3p>hn2p>!lhe3p>f=p>f=p>f=p>hn2p>Jen2p>de3p>f=p>f=p>f=p>Jen2p>,g1p>hn2p>f=p>f=p>f=p>,g1p>e1p>Jen2p>f=p>f=p>f=p>e1p>gK1p>,g1p>f=p>f=p>f=p>gK1p>0fK1p>e1p>f=p>f=p>f=p>0fK1p>f&1p>gK1p>f=p>f=p>f=p>f&1p>f&1p>0fK1p>f=p>f=p>f=p>f&1p>PcwBp>PcwBp>f=p>f=p>f=p>PcwBk">S)\k">팿)\k">팿&\=k">팿&\=k">S&\=k">S)\k">팿)\`>팿X`>팿X=`>팿X=k">팿&\=k">팿)\`>팿X%=팿NX%=팿PX>%=팿PX>`>팿X=`>팿X%=팿NXX=팿8X=팿8>X=팿8>%=팿PX>%=팿NXX=팿8l=팿(l=팿'>l=팿'>X=팿8>X=팿8l=팿(u=팿l"u=팿">u=팿">l=팿'>l=팿(u=팿l"$R<팿t$$R<팿$>$R<팿$>u=팿">u=팿l"$R<팿t$.Ga팿[%.Ga팿]%>.Ga팿]%>$R<팿$>$R<팿t$.Ga팿[%&I팿`&I팿^>&I팿^>.Ga팿]%>.Ga팿[%&I팿`X팿 X팿 >X팿 >&I팿^>&I팿`X팿 P팿P팿>P팿>X팿 >X팿 P팿P팿XP팿X=P팿X=P팿>P팿P팿Xh팿>Dh팿>=h팿>=P팿X=P팿Xh팿>D/팿 /팿B=/팿B=h팿>=h팿>D/팿 r팿r팿=r팿=/팿B=/팿 k">S)\k">S&\=`>SX=`>SX=`>SXk">S)\`>SX`>SX=1=S>1=S>1=S`>SX1=S1=S> X=S8> X=S8> X=S81=S X=S8 X=S8>l=S'>l=S'>l=S( X=S8l=S(l=S'>v=S">v=S">v=Sl"l=S(v=Sl"v=S">&R&R&R)GaS]%>)GaS]%>)GaS[%&R%IS^>%IS^>%IS`)GaS[%%IS`%IS^>XS >XS >XS %IS`XS XS >o,SpQ>o,SpQ>o,SnQXS o,SnQo,SpQ>PSX=PSX=PSXo,SnQPSXPSX=hS>=hS>=hS>DPSXhS>DhS>=/SB=/SB=/S hS>DrS/S /SB=/SB=rS=rSO޾팿Ǣ>O޾팿=߾팿 ף>팿 ף>Z팿=Z팿Ǣ>Z팿ǢZ팿팿 ף߾팿 ףO޾팿O޾팿Ǣ(ܾS=(ܾh=(ܾh ף>(ܾh ף(ܾh(ܾSShh ףh=S=h ף>Q팿.Q팿B팿q=_팿q=팿팿.S=h=ho=>hq=hSho=>h=S=h=h ף>S=j>W[Ga>㥛4K=W[Ga>j>팿Ga>W[Gaj㥛'K팿GajW[GaF6iff>F*Oa>W[Ga>,6iff>x.W[Ga>,*Oa>W[GaF!`FIKfffx.W[Ga,IKfff,!`?/C?yC?ǺC?J8C}?1=9C?Z8C?J8C?Z8Cz@?J8C?yC?C?ǺC>kN >kM% >cuk! >cuk!>kM%> k֨'> k֨'4 >k4/ >cuk!W?NCt?ĄC[>uky?GC> k֨'t?ĄCIG>Ml9,?C?CIG>Ml9?Cq>Ҥl=>;l}7>lE6?\=C?\=C>lE6>}k4,?CIG>Ml9?\=C?\=CIG>Ml9>;l}7?:C>l>?C?C>l>q>Ҥl=?C>AlF@>l>?C>l>-?GC-?GC>l>?:C]d>VmT0J`>VmkF^?>ЊC^?>ЊC`>VmkF>VmHC^?>ЊC>VmHC?xbC?xbC>VmHC?C?C>VmHCR>]lnA?CR>]lnA>AlF@]d>VmT0J^?>ЊCi6>VmOi6>VmO^?>ЊCi>VmͪOi>VmͪO^?>ЊCR? CR? C?Ci>VmͪOi>VmͪO?C73>Vm S?C?⋿C73>Vm S73>Vm S?⋿C@?C@?C?AC73>Vm S73>Vm S?AC?5AC73>Vm S?5AC">VmsFT">VmsFT?5AC+D?@C">VmsFT+D?@C?C">VmsFT?C>Vm|S>Vm|S?C!>Vm^S!>Vm^S?C!?􋿓C!>Vm^S!?􋿓Cs>VmdQs>VmdQ!?􋿓C ?Cs>VmdQ ?Cؐ>VmO>Vm $K>VmNؐ>VmOz>jn?V ?>ЊC#Y?-C ?C^ ? Cؐ>VmOؐ>VmO^ ? CV ?>ЊCؐ>VmOV ?>ЊC>Vm $K>Vm $KV ?>ЊC\>Gn7A\>Gn7AV ?>ЊCz>jn?;>1nx/W:>odn0k?bCk?bCW:>odn0&>nЖ3&>nЖ3 >ln 6k?bCk?bC >ln 6NT?/CNT?/C >ln 6 >nK7NT?/C >nK7#Y?-C#Y?-C >nK7>RnY8#Y?-C>RnY8z>jn?>Vm*>VmI,#?񅿓C#?񅿓C>VmI,i6>~m-k?bC ?m9C;>1nx/;>1nx/ ?m9C?톿C;>1nx/?톿C#?񅿓C;>1nx/#?񅿓Ci6>~m-?C(?CU>VmV&#?񅿓C?yC>Vm*>Vm*?yC?/C>Vm*?/C?ǺC>Vm*?ǺC>Vm">Vm"?ǺC?C>Vm"?C7>Vm7>Vm?CU>VmV&(?Cz ?`CU>VmV&U>VmV&z ?`Cr?}肿CU>VmV&r?}肿CV>VmiV>Vmir?}肿C<?󓂿CV>Vmi<?󓂿CS>VmlS>Vml<?󓂿CO ?PXCS>VmlO ?PXCT>VmsT>VmsO ?PXC>Vm<O ?PXC?4C>Vm<>Vm<?4C?@5C>Vm<?@5C6>Vm?@5CA> m=6>Vm7>f m  ?eCi1>lfi1>lf ?eC3 ?큂Ci1>lf3 ?큂C5 ?C?@5C?5CA> m=A> m=?5C ?eCA> m= ?eC7>f m W?NC[>uk?>/lW?NC?>/ll>ull5 ?C>l3>lc@5 ?C3>lc@i1>lfl>ull>l W?NCW?NC>l a>l W?NCa>l o ?3mCo ?3mCa>l 5 ?C5 ?Ca>l >l3Q>7C\Ż>1C>VmO(>\lieBG9> qlSC@>C@>CG9> qlSC>NlDuĪ>yC>k8>kp=>"C>l">l>"C>l>lˮ>C;>l$u"O<>kv%>Vm"(̴>ۂC>R~Cjf>VmJ>TWC<>5Ct>VmZB>;pCN<>VmW>Vm >тC>pC>Vm*>>Vm,>>Vm)>>VmI,>Vm*>Vmg*ǧ@?/LCT B?dC?(y5%?(y5%T B?dC??R4?x#;0?A`#?>A`\A-?bbCU$2_?c@F,>A`J- >A`/2_?c@F >A`/?E&?E& >A`/1[>A`3,>A`J-2_?c@F=#>A`*=#>A`*2_?c@F?9F?9F\ ? .F3=#>A`*=#>A`*\ ? .F3 ?<F =#>A`* ?<F J>A`y'J>A`y' ?<F )f ?dE. J>A`y')f ?dE. >A`Cn& >A`Cn&)f ?dE. D ?Ej >A`Cn&D ?Ej B">A`i"B">A`i"D ?Ej ) ?.QEB">A`i") ?.QE% ?:EB">A`i"% ?:Er>A`br>A`b% ?:EN ?D0 N ?D0 ; ?RCr>A`br>A`b; ?RC ?eCxr>A`b ?eCx9$>A`G ?eCx ?JCB9$>A`G9$>A`G ?JCB5 ?B9$>A`G5 ?Bط>A`8ط>A`85 ?B ?[Bط>A`8 ?[B>A`Q>A`Q ?[BV>A`V>A` ?[B?UA 7V>A`?UA 7>A` ?UA 7?A>A` >A` ?Aa>A`$?AU:?@Ea>A`$a>A`$U:?@E_??a>A`$_??(>A`gD)_??ٻ?c;?.n(>A`gD)(>A`gD)ٻ?c;?.n?=IY(>A`gD)?=IYs >A`*s >A`*?=IYX>A`I/X>A`I/?=IY?=X>A`I/?=^?O;< X>A`I/^?O;< ?;4 X>A`I/?;4 (z>A`1(z>A`1?;4 Xx?ٔ;{Xx?ٔ;{h6>A`u7>A`5Xx?ٔ;{>A`5(z>A`1}?cu;Y>A`A`

A`u7}?cu;Q?y6;CY>A`A`A`A_%>A`AQ?y6;CB?(";%z_%>A`AB?(";%z >A`4YCB?(";%z$?[; >A`4YC >A`4YC$?[; ?d; >A`4YC ?d;>A`E>A`E ?d;]?u:ަ>A`E]?u:ަG>A`0*I]?u:ަ?:"G>A`0*IG>A`0*I?:"Z?&:t^#G>A`0*IZ?&:t^#}>A`28J}>A`28JZ?&:t^#-e ?;%}>A`28J-e ?;%)@>A`4$N-e ?;%' ?;')@>A`4$N)@>A`4$N' ?;'8 ?&;&1()@>A`4$N8 ?&;&1( ?=D;~))@>A`4$N ?=D;~)q>A`zSQ ?=D;~)U ?uq;]+q>A`zSQq>A`zSQU ?uq;]+> ?~;i+q>A`zSQ> ?~;i+cJ ?y;ǀ,q>A`zSQcJ ?y;ǀ,Q>A`<\R+r?JCtcr?Caq?SCaq?SCtcr?C ?0<..aq?SC ?0<.. mq?C mq?C ?0<..rw?:c, mq?Crw?:c,p?e,CcJ ?y;ǀ,_ ? ;-Q>A`<\RQ>A`<\R_ ? ;-c{>A`Rc{>A`R_ ? ;- ?0<..c{>A`R ?0<..>A`Q>A`Q ?0<..tcr?C>A`Qtcr?C>A`Q>A`Qtcr?C!>A` P"r?,9Cr?gCyr?򉬾Cyr?򉬾Cr?gC\r?ᥫC!>A` P??@+9>A`9L9>A`9L??@+?z?;+9>A`9L?z?;+?5@@*9>A`9L?5@@* >A`bG >A`bG?5@@*?A.( >A`bG?A.('>A`ĶE-?bbCU$>A`\An?):B''>A`ĶE?A.(>A`\A>A`\A?A.(n?):B'?YDC?BE 1[>A`31[>A`3?BE ?Ek 1[>A`3?Ek ?E&-?bbCU$c?cC)"a>A`#?a>A`#?c?cC)">A`:>A`:c?cC)"?YDC>A`:?YDC>A`09>A`09?YDC1[>A`3L{?:O'B? CB?' CB?' CA?~ CL{?:OL{?:OA?~ C(A?CL{?:O(A?C,5?:U},5?:U}(A?C?A9W'B? CL{?:OcbC?CcbC?CL{?:O?x#;0QG?CcF?kC?=i W?C W?C?>=i?Q= W?C?Q= }yY? C}yY? C?Q= ?c= $ ?=Q[/^? 澓C?c= $ ?c= $ [/^? 澓Cr]?.B输C?c= $ r]?.B输C}yY? Ck?=ɉ\d?پC+?=*+?=*\d?پCFc?۾C?=Q+?=*[/^? 澓C[/^? 澓C+?=*.`?⾓C.`?⾓C+?=*Fc?۾Ck?=ɉ8?<>\d?پC\d?پC8?<>if? ԾCif? ԾC8?<> F?SW>Pif? ԾC F?SW>Pi?"X̾Ci?"X̾C F?SW>Pz?Tj>k&i?"X̾Cz?Tj>k&k?ǾCk?ǾCz?Tj>k&7$n?hCz?Tj>k&?>U$7$n?hC7$n?hC?>U$??>A`%7$n?hC??>A`%o?ٻCo?ٻC??>A`%*?>X'o?ٻC*?>X'@q?:Ctcr?C\r?ᥫC!>A` P!>A` P\r?ᥫCr?gC!>A` Pr?gC??@+??@+r?gC'r?C??@+'r?C9?>*9?>*'r?C@q?:C9?>*@q?:CD?>)D?>)@q?:C*?>X'p?e,Crw?:c,3p?OkC3p?OkCrw?:c,j?p8})3p?OkCj?p8})jn?Cjn?Cj?p8})?s$7[='jn?C?s$7[='ƀl?Cƀl?C?s$7[='6i?C6i?C?s$7[='*?D6[&6i?C*?D6[&g?lCg?lC*?D6[&? 5#g?lC? 5#.?4 L?!T1?a?C?I 2!?I 2!a?CFc?C.?4 ?I 2!g?lCg?lC?I 2!:d?C:d?C?I 2!Fc?CL?!T1?R?, 0ya?Ca?CR?, 0y?8/_a?C?8/_]?-ľC]?-ľC?8/_?z/]?-ľC?z/ȅ[?ȾCȅ[?ȾC?z/Jh?U.ȅ[?ȾCJh?U. W?&,ѾC W?&,ѾCJh?U.t?. W?&,ѾCt?. !U?aվC!U?aվCt?. ?l. !U?aվC?l. pP?߾CpP?߾C?l. xN?⾓CxN?⾓C?l. ?-.|?-.|4?.{'xN?⾓CxN?⾓C4?.{'4?0._ xN?⾓C4?0._ ?;.(J?쾓CL?/B输C?;.?;.L?/B输CL?羓C?;.L?羓CxN?⾓C(J?쾓C?;._I?iC_I?iC?;.!?k&/\_I?iC!?k&/\eu?Ĭ/A?#0E? C%J?A0},%J?A0},E? ClE?yC_I?iCeu?Ĭ/A%J?A0},_I?iC%J?A0},gfF?*CgfF?*C%J?A0},lE?yC?#0?1E? CE? C?1K?2E? CK?2WB?ICWB?ICK?2T B?dCT B?dCK?2<6?3GT B?dC<6?3G??R4z?7N?7C&?A>8^z?7NC&?A>8^?(y5%ǧ@?/LC?(y5%@?ZC@?ZC?(y5%C&?A>8^@?ZCC&?A>8^{@?ԕC?A9W(A?CP@?C?A9WP@?C;?68D;?68DP@?C)@?PC;?68D)@?PCC&?A>8^C&?A>8^)@?PC@?-CC&?A>8^@?-C{@?ԕC?8/_R?, 0y'?StľC ?񫾓Cj?p8})8 ?㪾C8 ?㪾Cj?p8})rw?:c,8 ?㪾Crw?:c,L ?*MCL ?*MCrw?:c,8 ?C* ?dC?I 2!Dx ?2CDx ?2C?I 2!.?4 Dx ?2C.?4 ? 5#Dx ?2C? 5#J ?kCJ ?kC? 5#*?D6[&J ?kC*?D6[& ?񫾓C ?񫾓C*?D6[&?s$7[=' ?񫾓C?s$7[='j?p8})'?StľCR?, 0y[B?ؔC[B?ؔCR?, 0yL?!T1?[B?ؔCL?!T1?* ?dC* ?dCL?!T1??I 2!?,޾C4?.{'k?AپCk?AپC4?.{'?-.|k?AپC?-.|l?!оCl?!оC?-.|?l. l?!оC?l. t?. l?!оCt?. ?cɾC?cɾCt?. Jh?U.?cɾCJh?U.'?StľC'?StľCJh?U.?z/'?StľC?z/?8/_!?k&/\?;.?(뾓C?(뾓C?;.4?0._ ?(뾓C4?0._ ?7龓C?7龓C4?0._ 4?.{'?7龓C4?.{' ?/B输C ?/B输C4?.{'?,޾C?#0%J?A0},[?c6C[?c6C%J?A0},eu?Ĭ/A[?c6Ceu?Ĭ/A?(뾓C?(뾓Ceu?Ĭ/A!?k&/\ ?Cz?7Ne?vgCe?vgCz?7N?(y5%e?vgC?(y5%MT?CMT?C?(y5%??R4MT?C??R4Y?=aCY?=aC??R4<6?3GY?=aC<6?3G+W?MC+W?MC<6?3GK?2+W?MCK?2[?c6C[?c6CK?2?1[?c6C?1?#0?˗7 2?7z?7N𽴝?˗7 2z?7N ?C?˗7 2콣 ?C??ӂ7+??ӂ7+뽣 ?C ?^^C??ӂ7+ ?^^Chf?`7chf?`7c ?^^C ?b79 ?b79 ?^^C ?^c7s ?^c7s ?^^CT ?C ?^c7sT ?CA ? CA ? CSy ?' C ?^c7s ?^c7sSy ?' C1 ? C ?^c7s1 ? CR ?ݓ7i꽭 ?C ?71 ? C1 ? C ?7R ?ݓ7i꽭 ?C7 ?yC ?7뽉 ?77 ?yCҳ ? 7C ?7ҳ ? 7C#7 ?7=#7 ?7=ҳ ? 7C#?72C#7 ?7=#?72Ca ?@8YD9 ?͍96| ?UH9e?\C?\C| ?UH9e ?8/a ?@8Y#?72Cvv ?Ws8{vv ?Ws8{#?72C?dCvv ?Ws8{?dC ?8/ ?8/?dC=?C ?8/=?C?\CS?:}.}?0:QJ?+CJ?+C.}?0:Q?:@D9 ?͍96?\C?:@?:@?\Ca?,eC?:@a?,eCJ?+CXx?ٔ;{`?뾓C}?cu;}?cu;`?뾓CuF?>꾓C}?cu;uF?>꾓C6?/B输C`?뾓CXx?ٔ;{?;4 `?뾓C?;4 J?+CJ?+C?;4 ^?O;< J?+C^?O;< S?:}?оCQ?y6;C?=پC?=پCQ?y6;C}?cu;?=پC}?cu;?,޾C?,޾C}?cu;6?/B输C/?vľC$?[;?5ɾC?5ɾC$?[;B?(";%z?5ɾCB?(";%z?оC?оCB?(";%zQ?y6;C?᯹C?:"?C?C?:"]?u:ަ?C]?u:ަ/?vľC/?vľC]?u:ަ ?d;/?vľC ?d;$?[;h?燱C' ?;'-e ?;%h?燱C-e ?;%?᯹C?᯹C-e ?;%Z?&:t^#?᯹CZ?&:t^#?:"w?CU ?uq;]+}"?4C}"?4CU ?uq;]+ ?=D;~)}"?4C ?=D;~)h?燱Ch?燱C ?=D;~)8 ?&;&1(h?燱C8 ?&;&1(' ?;'rw?:c, ?0<..8 ?C8 ?C ?0<.._ ? ;-?!C8 ?C_?hC_?hC8 ?C_ ? ;-_?hC_ ? ;-M?CM?C_ ? ;-cJ ?y;ǀ,M?CcJ ?y;ǀ,w?Cw?CcJ ?y;ǀ,> ?~;i+w?C> ?~;i+U ?uq;]+> k;H>kp=n>Wk<> k;Hn>Wkk<@ ?팿)\j?팿C@ ?팿&\=j?팿Cj?팿C=@ ?팿&\=?gC=?{gC=?fC=3 ?NhC=??gC=?gC=?gC=??gC=?{gC=?yC=?/C=?ǺC=?J8C=z@?J8C=?Z8C=?ǺC=?C=?yC=&]?/>D?/>ȅ[?ȾC=r]?.B辖C=[/^? 澖C=?*=&>@??C?<֊=>?<֊=DVG?YC=:K?AC=>?<֊=:K?AC=?H<:>?H<:>:K?AC=[/?<>L?WC=4PQ?RC=`?T<4>[/?<>:K?AC=`?T<4>`?T<4>:K?AC=L?WC=?Q= >?>=-}>4PQ?RC=4PQ?RC=?>=-}>? =(>4PQ?RC=? =(>`?T<4>4PQ?RC=GR?cC=?Q= >?Q= >GR?cC= W?C=?Q= > W?C=?*=&>?*=&> W?C=Y?C=?*=&>Y?C=r]?.B辖C=\d?پC=/?n=V9>5`?_⾖C=5`?_⾖C=/?n=V9>?5=f>5`?_⾖C=?5=f>[/^? 澖C=[/^? 澖C=?5=f>?=O>[/^? 澖C=?=O>?*=&>?g>>B?V>>i?"X̾C=i?"X̾C=B?V>>%?k>>#>i?"X̾C=%?k>>#>nf?QԾC=nf?QԾC=%?k>>#> .?<>>nf?QԾC= .?<>>\d?پC=\d?پC= .?<>>`?=>\d?پC=`?=>/?n=V9>9>A`9L>?Ar(>s>A`L>??>+>!>A` P>2?E|?@+>2?E|?@+>!>A` P>s>A`L>2?E|?@+>s>A`L>o? 7@+M*>o? 7@+M*>s>A`L>?Ar(>9>A`9L> >A`q_G>?Ar(>?Ar(> >A`q_G>'>A`"E>?Ar(>'>A`"E>l?6B&>l?6B&>'>A`"E>/?fC$>/?fC$>'>A`"E>>A` ZA>/?fC$>>A` ZA>a>A`-!?>?D>?7Cr">a>A`-!?>a>A`-!?>?7Cr">?CV#>a>A`-!?>?CV#>/?fC$>a>A`-!?>>A`:>?D>?D>>A`:>>A`!.9>?D>>A`!.9>Y>A`3>Y>A`3>?Ew2>|?#@Eo>Y>A`3>|?#@Eo>?D>?Ew2>Y>A`3>)?F>)?F>Y>A`3> >A`@/>)?F> >A`@/>2_??F>2_??F> >A`@/>,>A`J->2_??F>,>A`J->?9F>?9F>,>A`J->=#>A`*>?9F>=#>A`*>o ?3FF>o ?3FF>=#>A`*> ? F > ? F >=#>A`*>J>A`y'> ? F >J>A`y'>R ?E_ >R ?E_ >J>A`y'> >A`k&>R ?E_ > >A`k&>B">A`i">R ?E_ >B">A`i"> ?~RE`> ?~RE`>B">A`i"> ?EN> ?EN>B">A`i">r>A`c> ?6YC>& ?&C>r>A`c> ?EN>r>A`c>N ?CE!>N ?CE!>r>A`c>& ?&C>' ?ZBs>e ?Bs>9$>A`G> ?6YC>r>A`c>9$>A`G> ?6YC>9$>A`G>e ?Bs>9$>A`G>ط>A`;>' ?ZBs>' ?ZBs>ط>A`;>>A`S>' ?ZBs>>A`S>V>A`G>' ?ZBs>V>A`G> ?A> ?A>V>A`G>>A` >a>A`$>?QA>>A` >>A` >?QA> ?A>a>A`$>y??@>zX?U@>a>A`$>zX?U@>?QA>a>A`i$>?=9>a>A`$>a>A`$>?=9>y??@>X>A`1G/>?O;?=9>X>A`1G/>?=9>s >A`*>s >A`*>?=9>(>A`A)>(>A`A)>?=9>a>A`i$> >A`»<>?9;C>sr?uq;c>?O;X>A`1G/>?; >?; >X>A`1G/>(z>A` 1>?; >(z>A` 1>̄?;>̄?;>(z>A` 1>>A`5>̄?;>>A`5>sr?uq;c>sr?uq;c>>A`5>h6>A`s7>sr?uq;c>h6>A`s7> >A`»<> >A`7YC>?(";>_%>A`A>_%>A`A>?(";>?9;C>_%>A`A>?9;C> >A`»<>G>A`.*I>5?.:>>A`E>>A`E>5?.:>R?;>>A`E>R?;> >A`7YC> >A`7YC>R?;>?(";>)@>A`4$N>_ ?;4)%>}>A`5J>}>A`5J>_ ?;4)%>Q?:s^#>}>A`5J>Q?:s^#>G>A`.*I>G>A`.*I>Q?:s^#>5?.:>q>A`}SQ>W ?N@;)>)@>A`4$N>)@>A`4$N>W ?N@;)>{; ?(;.(>)@>A`4$N>{; ?(;.(>_ ?;4)%>Q>A`?\R>G ?;,>q>A`}SQ>q>A`}SQ>G ?;,> ?0;+>q>A`}SQ> ?0;+>W ?N@;)>tcr?C=+r?JC= ?0<,.> ?0<,.>+r?JC=q?SC=3p?OkC=x?:s,>Ôp?e,C=Ôp?e,C=x?:s,> ?0<,.>Ôp?e,C= ?0<,.>`lq?C=`lq?C= ?0<,.>q?SC=Ƭg?lC=2?v3) >i?𰰾C=i?𰰾C=2?v3) >V?57">i?𰰾C=V?57">ol?C=ol?C=V?57">?W7'>ol?C=?W7'>gn?C=gn?C=?W7'>3p?OkC=3p?OkC=?W7'>4m?3p?OkC=4m?x?:s,>ȅ[?ȾC=D?/>]?:ľC=]?:ľC=D?/>&?/m>]?:ľC=&?/m>a?oC=a?oC=&?/m>H?`1c>a?oC=H?`1c>4d?C=4d?C=H?`1c>?2>4d?C=?2>Ƭg?lC=Ƭg?lC=?2>? 2>Ƭg?lC=? 2>2?v3) >ۧ?.o>?.>!U?aվC=!U?aվC=?.><?. >!U?aվC=<?. >V?:ѾC=V?:ѾC=<?. >ȅ[?ȾC=ȅ[?ȾC=<?. >t?. >ȅ[?ȾC=t?. >&]?/>H_I?iC=J?@0@'=v?%/L<>ۧ?.o>!U?aվC=iP?+߾C=ۧ?.o>iP?+߾C=?;.>?;.>iP?+߾C=xN?⾖C=?;.>xN?⾖C=L?羖C=H_I?iC=v?%/L<>h?/>H_I?iC=h?/>BJ? C=BJ? C=h?/>?;.>BJ? C=?;.>DL?/B辖C=DL?/B辖C=?;.>L?羖C=?tv2= ?1P=E? C=E? C= ?1P=(?80!=E? C=(?80!=J?@0@'=E? C=J?@0@'=ֲE?C=ֲE?C=J?@0@'=H_I?iC=E? C= UB?"OC=?tv2=?tv2= UB?"OC= h?3= h?3= UB?"OC=T B? C= h?3=T B? C=?c4=?c4=T B? C=?5<=?5<=T B? C=@?uOC=?5<=@?uOC=[@?ZC= ?71j=?ަ7=?5<= ?71j=?5<=C&?A>8Y=C&?A>8Y=?5<=[@?ZC=C&?A>8Y=[@?ZC={@?$C=P@?C=d?(9q=)@?PC=)@?PC=d?(9q=h?Ĕ8={@?$C=@?.C=C&?A>8Y=C&?A>8Y=@?.C=)@?PC=C&?A>8Y=)@?PC=h?Ĕ8=JA?~ C=B?' C=L{?:=JA?~ C=L{?:=)A?C=L{?:=;?!:Q=)A?C=)A?C=;?!:Q=x?I9W=)A?C=x?I9W=P@?C=P@?C=x?I9W=d?(9q=B?' C={B?. C=L{?:=L{?:={B?. C='B? C=L{?:='B? C=eC?4C=L{?:=eC?4C=?D/;(=?D/;(=eC?4C=+?y?<֊=?Ҥ<= F?;kC= F?;kC=?Ҥ<=+?yA`Q>!>A` P>?g>>i?"X̾C=?>%$>?>%$>i?"X̾C=ܺk?~ǾC=?>%$>ܺk?~ǾC=#n?)jC=?>%$>#n?)jC=6F?>D`%>6F?>D`%>#n?)jC=o?4ͻC=6F?>D`%>o?4ͻC=Ȣ?>)>Ȣ?>)>o?4ͻC=@q?:C=Ȣ?>)>@q?:C=4?D>ǰ*>4?D>ǰ*>@q?:C=r?֙C=4?D>ǰ*>r?֙C=??>+>??>+>r?֙C=r?gC=??>+>r?gC=!>A` P>!>A` P>r?gC="r?6C=!>A` P>"r?6C=yr?C=yr?C=\r?C=>A`Q>>A`Q>\r?C=tcr?C=>A`Q>tcr?C=>A`Q>>A`Q>tcr?C= ?0<,.>>A`Q> ?0<,.>c{>A`R>c{>A`R> ?0<,.>a ?<_->c{>A`R>a ?<_->Q>A`?\R>Q>A`?\R>a ?<_->G ?;,>q_?~C=?{fC=?c4=G ?;,>w?C= ?0;+> ?0;+>w?C=?-ʬC= ?0;+>?-ʬC=W ?N@;)>W ?N@;)>?-ʬC=O ?2C=O ?2C=M?MѱC=W ?N@;)>W ?N@;)>M?MѱC=?6೾C=W ?N@;)>?6೾C={; ?(;.(>{; ?(;.(>?6೾C=?C={; ?(;.(>?C=_ ?;4)%>-0?AxľC=5?.:>?wC=?wC=5?.:>Q?:s^#>?wC=Q?:s^#>?C=?C=Q?:s^#>_ ?;4)%>l?оC=?(";>?ʾC=?ʾC=?(";>R?;>?ʾC=R?;>-0?AxľC=-0?AxľC=R?;>5?.:>?,޾C=8?/B辖C=?; >?; >8?/B辖C=M?꾖C=?; >̄?;>?,޾C=?,޾C=̄?;>sr?uq;c>?,޾C=sr?uq;c>?uھC=?uھC=sr?uq;c>?9;C>?uھC=?9;C>l?оC=l?оC=?9;C>?(";>M?꾖C= ^?B뾖C=?; >?; > ^?B뾖C=L? $C=?; >L? $C=?O;?79 >L? $C=8 ?&9,=8 ?&9,=L? $C=^m?C=?79 >?:->L? $C=L? $C=?:->U?:X>L? $C=U?:X>?O;B ?B8*=?XC=?C=B ?B8*=?C=u ?r8vv=^m?C=?C=8 ?&9,=8 ?&9,=?C=?XC=8 ?&9,=?XC=u{ ?UH9(=u{ ?UH9(=?XC=B ?B8*=?C=?bC=u ?r8vv=u ?r8vv=?bC=-?MC=u ?r8vv=-?MC=a ?@8V=a ?@8V=-?MC=B ?+7=B ?+7=-?MC= ?7= ?7=-?MC=ҳ ?5C= ?7=ҳ ?5C= ?jC= ?jC=: ?C= ?7= ?7=: ?C= ?  C= ?7= ?  C= ^ ?>7O=n[ ?;C=??{7,=& ? C=& ? C=??{7,=q?b7Zn=& ? C=q?b7Zn=Sy ?' C=Sy ?' C=q?b7Zn= ?b79=Sy ?' C= ?b79= ?^c77=Sy ?' C= ?^c77= ?  C= ?  C= ?^c77= ^ ?>7O=n[ ?;C= ?TC=??{7,=??{7,= ?TC=[?#7j"=[?#7j"= ?TC= ?C=q_?~C=?c4=e?jC=?c4=?5<=e?jC=e?jC=?5<=?ަ7=e?jC=?ަ7= ?C= ?C=?ަ7= ?71j= ?C= ?71j=[?#7j"=]?[C= ?1P=?tv2=]?[C=?tv2=?{fC=?{fC=?tv2= h?3=?{fC= h?3=?c4=?뾖C=v?%/L<>J?@0@'=?뾖C=J?@0@'=]?[C=]?[C=J?@0@'=(?80!=]?[C=(?80!= ?1P=ۧ?.o>?뾖C=^?龖C=ۧ?.o>^?龖C=?/B辖C=ۧ?.o>?;.>?뾖C=?뾖C=?;.>h?/>?뾖C=h?/>v?%/L<>?/B辖C=v?a-޾C=ۧ?.o>ۧ?.o>v?a-޾C=-}?ؾC=ۧ?.o>-}?ؾC=?.>?.>-}?ؾC=l?qоC=?.>l?qоC=<?. >&]?/>t?. >l?qоC=l?qоC=t?. ><?. > ?ȾC=&?/m>l?qоC=l?qоC=&?/m>D?/>l?qоC=D?/>&]?/> ?ȾC=e(?qľC=&?/m>&?/m>e(?qľC=4?*C=&?/m>4?*C=H?`1c>H?`1c>4?*C= ?蚹C=H?`1c> ?蚹C=?2>?2> ?蚹C=? 2>? 2> ?蚹C=o ?C=? 2>o ?C=2?v3) >?W7'>o ?C=4m?o ?C=?W7'>V?57">o ?C=V?57">2?v3) >?C=w?C=[?lC=[?lC=w?C=G ?;,>[?lC=G ?;,>)?9#C=)?9#C=G ?;,>a ?<_->)?9#C=a ?<_->T5 ?C=T5 ?C=a ?<_-> ?0<,.>T5 ?C= ?0<,.>x?:s,> ?;IC=T5 ?C=x?:s,> ?;IC=x?:s,>3 ?ܪC=3 ?ܪC=x?:s,>4m?3 ?ܪC=4m? ?I﫾C= ?I﫾C=4m?o ?C= ?I﫾C=o ?C= ?VC=?j@f=E?@=_!?MC=??>+>2?E|?@+>4?D>ǰ*>4?D>ǰ*>2?E|?@+>o? 7@+M*>4?D>ǰ*>o? 7@+M*>Ȣ?>)>o? 7@+M*>5?`C=Ȣ?>)>Ȣ?>)>5?`C= 5?_C=Ȣ?>)> 5?_C=6F?>D`%>6F?>D`%> 5?_C=5?h_C=6F?>D`%>5?h_C=?>%$>?>%$>5?h_C=Y5?h]C=4?[C=B?V>>s5?F]C=s5?F]C=B?V>>?g>>s5?F]C=?g>>Y5?h]C=Y5?h]C=?g>>?>%$>|I3?gXC=`?=>4?HZC=4?HZC=`?=> .?<>>4?HZC= .?<>>4?[C=4?[C= .?<>>%?k>>#>4?[C=%?k>>#>B?V>>?Q= >?*=&>1?~UC=1?~UC=?*=&>?=O>1?~UC=?=O>?5=f>1?~UC=?5=f>|I3?gXC=|I3?gXC=?5=f>/?n=V9>|I3?gXC=/?n=V9>`?=>g,?PC=`?T<4>1-?mQC=1-?mQC=`?T<4>? =(>1-?mQC=? =(>.?*SC=.?*SC=? =(>?>=-}>.?*SC=?>=-}>1?~UC=1?~UC=?>=-}>?Q= >C&)?OC=?Ҥ<=>?<֊=C&)?OC=>?<֊=?H<:>C&)?OC=?H<:>g,?PC=g,?PC=?H<:>[/?<>g,?PC=[/?<>`?T<4>G?1w==@??CF=@$?dkMC=a&?MC="%?2MC=G?1w==G?1w=="%?2MC=@$?dkMC=G?1w==@$?dkMC=cJ?=~R=cJ?=~R=@$?dkMC=P?z>F=@$?dkMC=l#?\MC=5.??r=5.??r=l#?\MC=|"?LMC=5.??r=|"?LMC=?Di?=?Di?=|"?LMC=^??D=^??D=|"?LMC=E?@=E?@=|"?LMC=_!?MC=i?)"C=?kBi=?4 OC=?4 OC=?kBi=q?UB=?4 OC=q?UB=? ?ffNC=? ?ffNC=q?UB=z?B=? ?ffNC=z?B= ?MC= ?MC=z?B=?A= ?MC=?A=_!?MC=_!?MC=?A=?j@f=?4 OC=|?OC=i?)"C=i?)"C=|?OC='?"JC='?"JC=|?OC=d?9QC='?"JC=d?9QC==?yC(C==?yC(C=d?9QC=r?bCM=r?bCM=d?9QC=?RC=r?bCM=?RC=[?@C=[?@C=?RC=?aSC=[?@C=?aSC=[B?D=[B?D=?aSC=a ?CTC=[B?D=a ?CTC= ?g"D= ?g"D=a ?CTC=ڱ!?-4WC= ?g"D=ڱ!?-4WC= ?(D}=N ?CE!>ڱ!?-4WC= ?EN> ?EN>ڱ!?-4WC=#?=YC= ?(D}=ڱ!?-4WC= ?C}> ?C}>ڱ!?-4WC=N ?CE!>"%?h[C=R ?E_ >#?=YC=#?=YC=R ?E_ > ?~RE`>#?=YC= ?~RE`> ?EN>]U&?s\C=T")??^C=o ?3FF>"%?h[C=I%?[C=R ?E_ >R ?E_ >I%?[C=]U&?s\C=R ?E_ >]U&?s\C= ? F > ? F >]U&?s\C=o ?3FF>|?#@Eo>?Ew2>.?yaC=.?yaC=?Ew2>)?F>.?yaC=)?F>g+?4h`C=g+?4h`C=)?F>2_??F>g+?4h`C=2_??F>)?\_C=)?\_C=2_??F>T")??^C=T")??^C=2_??F>?9F>T")??^C=?9F>o ?3FF>|?#@Eo>.?yaC=Yn1?SbC=|?#@Eo>Yn1?SbC=?D>Yn1?SbC=?CV#>?7Cr">Yn1?SbC=?7Cr">?D>l?6B&>/?fC$>0n3?mbC=0n3?mbC=/?fC$>?CV#>0n3?mbC=?CV#>3?x;bC=3?x;bC=?CV#>Yn1?SbC=?Ar(>4?OpaC=o? 7@+M*>o? 7@+M*>4?OpaC= 35?`C=o? 7@+M*> 35?`C=5?`C=L4?aC=4?OpaC=?Ar(>L4?aC=?Ar(>0n3?mbC=0n3?mbC=?Ar(>l?6B&>>тC=t>Vm\>N<>Vm9>>C=w >Rn6>=>In4:>=>In4:>~>]hnEC?>>C=>-mw(J>>Vm $K>>>ЊC=>VmO>\Ż>1C=3Q>7C=@>C=>NlD>(>\lkeB>>k<>>k8>uĪ>yC=>_>k53>n>-C=ˮ>C=->ekLg'>O<>k%>O<>k%>;>lr">ˮ>C=>l|>>l>>"C=>"C=>l>>l">J>TWC=jf>Vm><>5C=<>5C=jf>Vm>>$C=t>l= W>:m= W>Vm= W>A`= W>N`= W>*a= W>*a= W>N`= Wt>Nu`= W2>`= WM >`= WC>Ga= WC>Ga= WM >`= WE >;S`= WC>Ga= WE >;S`= Wg#>)a= Wg#>)a= WE >;S`= W>A`= Wg#>)a= W>A`= W>Mb= W>Mb= W>A`= W>A`= W>Mb= W>A`= W> k= W> k= W>A`= W>Vm= W> k= W>Vm= W>Vm= W>ija= W>*a= Wt>Nu`= W>ija= Wt>Nu`= W%O>a= W%O>a= Wt>Nu`= W>`= W>A`= W>*a= W>Vm= W>Vm= W>*a= W>vk= W>Vm= W>vk= Wt>l= WC>1l= Wg#>k= W2>tl= W2>tl= Wg#>k= W> k= W2>tl= W> k= WM >5l= WM >5l= W> k= W>Vm= WM >5l= W>Vm= WE >l= W%O>Il= W>l= W>uk= W>uk= W>l= Wt>l= W>uk= Wt>l= W>vk= WC>Ga; W>g#>)a; W>>Mb; W>d>Il; W>>l; W>g>uk; W>g>uk; W>>l; W>Q>l; W>g>uk; W>Q>l; W>:>vk; W>:>vk; W>Q>l; W>H/>:m; W>:>vk; W>H/>:m; W>> k; W>> k; W>H/>:m; W>>Mb; W>>`; W>&>`; W>>Ga; W>>Ga; W>&>`; W>)>;S`; W>>Ga; W>)>;S`; W>>)a; W>>)a; W>)>;S`; W>>A`; W>>)a; W>>A`; W>73>Mb; W>73>Mb; W>>A`; W>>A`; W>73>Mb; W>>A`; W>73> k; W>2>`; W>C>Ga; W>M >`; W>M >`; W>C>Ga; W>>A`; W>M >`; W>>A`; W>E >;S`; W>)>l; W>&>5l; W>>Vm; W>>Vm; W>&>5l; W>>tl; W>C>Ga; W>>Mb; W>>A`; W>>A`; W>>Mb; W>H/>:m; W>>A`; W>H/>:m; W>73> k; W>73> k; W>H/>:m; W>>Vm; W>73> k; W>>Vm; W>>k; W>>k; W>>Vm; W>>tl; W>>k; W>>tl; W>>1l; W>蟄?B u蟄?~ u?cp u?cp u蟄?~ u?u u?cp u?u ud?! ud?! u?u u?K2 ud?! u?K2 u? u? u?K2 u^?  u^?  u?K2 u?C u?C u?K2 u?T u?C u?T u )?x u )?x u?T u"?x u>ekn!>>kM%>M>Nk >M>Nk >>kM%>>Kld;>蟄?B u=蟄?B u?cp u蟄?B u=?cp u?cp u=?cp u=?cp ud?! u?cp u=d?! ud?! u=d?! u=d?! u? ud?! u=? u? u=? u=? u^?  u? u=^?  u^?  u=^?  u=^?  u?C u^?  u=?C u?C u=?T u=?T u?K2 u?T u=?K2 u?K2 u=?K2 u=?K2 u?u u?K2 u=?u u?u u=?u u=?u u蟄?~ u?u u=蟄?~ u蟄?~ u=蟄?~ u=蟄?B u=?u u=?u u=蟄?B u=?cp u=?u u=?cp u=?K2 u=?K2 u=?cp u=d?! u=?K2 u=d?! u=? u=?K2 u=? u=^?  u=?K2 u=^?  u=?T u=?T u=^?  u=?C u=?T u=?C u="?x u="?x u=?C u= )?x u=n>mfL^=>p>k"8>p>kp=>n>mfL^=>p>kB>p>kG>n>mfL^=>p>kG>p>Fj[K>n>mfL^=>p>Fj[K>p>K7i,O>n>mfL^=>p>K7i,O>p>gD9Q>n>mfL^=>p>gD9Q>p>fQ>n>mfL^=>p>fQ>p>uTeD9Q>n>mfL^=>p>uTeD9Q>p>d,O>n>mfL^=>p>d,O>p>A c[K>n>mfL^=>p>A c[K>p>8bG>n>mfL^=>p>8bG>p>ǵaB>n>mfL^=>p>ǵaB>p>7ap=>n>mfL^=>p>7ap=>p>ǵa"8>n>mfL^=>p>ǵa"8>p>8b233>n>mfL^=>p>8b233>p>A c.>n>mfL^=>p>A c.>p>dP+>n>mfL^=>p>dP+>p>uTe)>n>mfL^=>p>uTe)>p>f(>n>mfL^=>p>f(>p>g)>n>mfL^=>p>g)>p>K7iP+>n>mfL^=>p>K7iP+>p>Fj.>n>mfL^=>p>Fj.>p>k233>n>mfL^=>p>k233>p>k"8>p>k233>>k53>>_>k<>p>kp=>>k8>>k8>p>kp=>p>k"8>>k8>p>k"8>|>kz7>p>k233>>_p>k"8>p>k"8>>_|>kz7>p>Fj.>ǿ>Xj1>p>k233>p>k233>ǿ>Xj1>>k53>p>A c.>p>8b233>>Mb2>>Mb2>p>8b233>p>ǵa"8>>Mb2>p>ǵa"8>>ǵa"8>>ǵa"8>p>ǵa"8>p>7ap=>>ǵa"8>p>7ap=>>7ap=>>7ap=>p>7ap=>p>ǵaB>>7ap=>p>ǵaB>>ǵaB>>ǵaB>p>ǵaB>p>8bG>>ǵaB>p>8bG>>8bG>>8bG>p>8bG>p>A c[K>>8bG>p>A c[K>>A c[K>>A c[K>p>A c[K>p>d,O>>A c[K>p>d,O>>d,O>>d,O>p>d,O>p>uTeD9Q>>d,O>p>uTeD9Q>>uTeD9Q>>uTeD9Q>p>uTeD9Q>p>fQ>>uTeD9Q>p>fQ>>fQ>>fQ>p>fQ>p>gD9Q>>fQ>p>gD9Q>>gD9Q>>gD9Q>p>gD9Q>p>K7i,O>>gD9Q>p>K7i,O>>K7i,O>>K7i,O>p>K7i,O>p>Fj[K>>K7i,O>p>Fj[K>>Fj[K>>Fj[K>p>Fj[K>>kG>>kG>p>Fj[K>p>kG>>kG>p>kG>p>kB>>kG>p>kB>>kB>>kB>p>kB>p>kp=>>kB>p>kp=>>k<>>Mb2>>A c.>p>A c.>p>A c.>>A c.>>dP+>p>A c.>>dP+>p>dP+>p>dP+>>dP+>>uTe)>p>dP+>>uTe)>p>uTe)>p>uTe)>>uTe)>>f(>p>uTe)>>f(>p>f(>p>f(>>f(>>g)>p>f(>>g)>p>g)>p>g)>>g)>>K7iP+>p>g)>>K7iP+>p>K7iP+>p>K7iP+>>K7iP+>>Fj.>p>K7iP+>>Fj.>p>Fj.>p>Fj.>>Fj.>>^jA0>p>Fj.>>^jA0>ǿ>Xj1>>6g+.>73>fz.>>fz.>>fz.>73>fz.>73>e+.>>fz.>73>e+.>>e+.>>e+.>73>e+.>73>ide#0>>e+.>73>ide#0>>ide#0>>ide#0>73>ide#0>73>cL2>>ide#0>73>cL2>>cL2>>cL2>73>cL2>73>Tc5>>cL2>73>Tc5>>Tc5>>Tc5>73>Tc5>73>Qbw9>>Tc5>73>Qbw9>>Qbw9>>Qbw9>73>Qbw9>73>bp=>>Qbw9>73>bp=>>bp=>>bp=>73>bp=>73>QbiA>>bp=>73>QbiA>>QbiA>>QbiA>73>QbiA>73>TcE>>QbiA>73>TcE>>TcE>>TcE>73>TcE>73>cMH>>TcE>73>cMH>>cMH>>cMH>73>cMH>73>idJ>>cMH>73>idJ>>idJ>>idJ>73>idJ>73>eGL>>idJ>73>eGL>>eGL>>eGL>73>eGL>73>fL>>eGL>73>fL>>fL>>fL>73>fL>73>6gGL>>fL>73>6gGL>>6gGL>>6gGL>73>6gGL>73>uhJ>>6gGL>73>uhJ>>uhJ>>uhJ>73>uhJ>73>E_iMH>>uhJ>73>E_iMH>>E_iMH>>E_iMH>73>E_iMH>73>?iE>>E_iMH>73>?iE>>?iE>>?iE>73>?iE>73>]jiA>>?iE>73>]jiA>>]jiA>>]jiA>73>]jiA>73>~jp=>>]jiA>73>~jp=>>~jp=>>~jp=>73>~jp=>73>]jw9>>~jp=>73>]jw9>>]jw9>>]jw9>73>]jw9>73>?i5>>]jw9>73>?i5>>?i5>>?i5>73>?i5>73>E_iL2>>?i5>73>E_iL2>>E_iL2>>E_iL2>73>E_iL2>73>uhe#0>>E_iL2>73>uhe#0>>uhe#0>>uhe#0>73>uhe#0>73>6g+.>>uhe#0>73>6g+.>>6g+.>>6g+.>73>6g+.>73>fz.>>fp=>>?iE>>]jiA>>fp=>>]jiA>>~jp=>>fp=>>~jp=>>]jw9>>fp=>>]jw9>>?i5>>fp=>>?i5>>E_iL2>>fp=>>E_iL2>>uhe#0>>fp=>>uhe#0>>6g+.>>fp=>>6g+.>>fz.>>fp=>>fz.>>e+.>>fp=>>e+.>>ide#0>>fp=>>ide#0>>cL2>>fp=>>cL2>>Tc5>>fp=>>Tc5>>Qbw9>>fp=>>Qbw9>>bp=>>fp=>>bp=>>QbiA>>fp=>>QbiA>>TcE>>fp=>>TcE>>cMH>>fp=>>cMH>>idJ>>fp=>>idJ>>eGL>>fp=>>eGL>>fL>>fp=>>fL>>6gGL>>fp=>>6gGL>>uhJ>>fp=>>uhJ>>E_iMH>>fp=>>E_iMH>>?iE> ?C}>N ?CE!>RN ?CC=N ?CE!>& ?&C>RN ?CC=RN ?CC=& ?&C> ?6YC>RN ?CC= ?6YC> ?NCC=[?@C= ?D*DC=?CC=[?@C=?CC=r?bCM=[?@C=[B?D= ?D*DC= ?D*DC=[B?D= ?g"D= ?D*DC= ?g"D=RN ?CC=RN ?CC= ?g"D= ?(D}=RN ?CC= ?(D}= ?C}>?kBi=i?)"C=1*?NCC=1*?NCC=i?)"C='?"JC=1*?NCC='?"JC=?CC=?CC='?"JC==?yC(C=?CC==?yC(C=r?bCM=?kBi=1*?NCC=q?UB=q?UB=1*?NCC=?BC=q?UB=?BC=}?IBC=q?UB=}?IBC=z?B=z?B=}?IBC=ف?@C=z?B=ف?@C=?A=^??D=E?@=%?k?C=%?k?C=E?@=?j@f=%?k?C=?j@f=ف?@C=ف?@C=?j@f=?A=^??D=%?k?C=?Di?=?Di?=%?k?C=5.??r=5.??r=%?k?C=e]?=C=5.??r=e]?=C=P?z>F=+?yF=;?!:Q=ف?:C=x?I9W=x?I9W=ف?:C=}?1=9C=;?!:Q=L{?:=ف?:C=ف?:C=L{?:=%?8Y=?,7C=C&?A>8Y=z@?J8C=z@?J8C=C&?A>8Y=h?Ĕ8= ?w]7C= ?b79=?,7C=?,7C= ?b79=q?b7Zn=q?b7Zn=??{7,=?,7C=?,7C=??{7,=[?#7j"=RN ?,7C= ^ ?>7O= ?^c77=RN ?,7C= ?^c77= ?w]7C= ?w]7C= ?^c77= ?b79= ^ ?>7O=RN ?,7C= ?7= ?7=RN ?,7C= ?[88C= ?7= ?[88C=B ?+7=B ?+7= ?[88C=a ?@8V=a ?@8V= ?[88C=u ?r8vv=u ?r8vv= ?[88C=Qp ?1=9C=u ?r8vv=Qp ?1=9C=B ?B8*=?:->?79 >|k?:C=|k?:C=?79 >8 ?&9,=|k?:C=8 ?&9,=Qp ?1=9C=Qp ?1=9C=8 ?&9,=u{ ?UH9(=Qp ?1=9C=u{ ?UH9(=B ?B8*=?:->|k?:C=U?:X>U?:X>|k?:C=L?L??=C=?O;L??=9>?=C=?=C=?=9>?O;?=C=L?k?C=y??@>Qp ?IBC=' ?ZBs>|k?@C=|k?@C=' ?ZBs> ?A> ?A>?QA>|k?@C=|k?@C=?QA>L?k?C=L?k?C=?QA>zX?U@>L?k?C=zX?U@>y??@> ?NCC= ?6YC>e ?Bs> ?NCC=e ?Bs>Qp ?IBC=Qp ?IBC=e ?Bs>' ?ZBs>?@5C=?4C=>Vm<>>Vm<>?4C=O ?PXC=>Vm<>O ?PXC=T>Vmt>T>Vmt>O ?PXC=S>Vml>S>Vml>O ?PXC=?yuC=S>Vml>?yuC=V>Vmˉ>> m~o> ?eC=?5C=>Vm<>6>VmR>?@5C=?@5C=6>VmR>> m~o>?@5C=> m~o>?5C= ?eC=> m~o>9>l> ?eC=9>l>3 ?큂C=3 ?큂C=9>l>H>Jlh>3 ?큂C=H>Jlh>5 ?C=5 ?C=H>Jlh>o ?3mC=o ?3mC=H>Jlh>>Hl->o ?3mC=>Hl->W?NC=>Hl->>l8>W?NC=W?NC=>l8>>{DlD>W?NC=>{DlD>>#lG>W?NC=>#lG>>Kld;>W?NC=>Kld;>>kM%>W?NC=>kM%>t?ĄC=">Ņkn.>aA?򅿖C=ӳ?yC=">Ņkn.>ӳ?yC=y?GC=>kM%>>k'>t?ĄC=t?ĄC=>k'>y?GC=y?GC=>k'>">Ņkn.>aA?򅿖C=">Ņkn.>V>k1>aA?򅿖C=V>k1>?\=C=IG>Ml9>?C=>l6>>l6>?C=,?C=>l6>,?C=?\=C=>l6>?\=C=V>k1>IG>Ml9>>mnl:>?C=?C=>mnl:>q>Ҥl=>?C=q>Ҥl=>-?GC=-?GC=q>Ҥl=>">la>>-?GC=">la>>?C=?C=">la>>>AlF@>>AlF@>U'>nlpBA>?C=?C=U'>nlpBA> %> mC>?C= %> mC>?xbC=?xbC= %> mC>^?>ЊC=^?>ЊC= %> mC>`>VmkF>#?ȘC=R? C=i>VmΪO>i>VmΪO>R? C=^?>ЊC=i>VmΪO>^?>ЊC=i6>VmhO>i6>VmhO>^?>ЊC=]d>VmT0J>]d>VmT0J>^?>ЊC=`>VmkF>73>Vm S>?⋿C=i>VmΪO>i>VmΪO>?⋿C=#?ȘC=?AC=@?C=73>Vm S>73>Vm S>@?C=?⋿C=?AC=73>Vm S>?5AC=?5AC=73>Vm S>">VmCT>?5AC=">VmCT>+D?@C=+D?@C=">VmCT>?C=>-mw(J>V ?>ЊC=ؐ>VmO>>-mw(J>ؐ>VmO>>VmN>>-mw(J>>VmN>>Vm $K>">VmCT>>Vm|S>?C=?C=>Vm|S>!?􋿖C=!?􋿖C=>Vm|S>s>VmďQ>!?􋿖C=s>VmďQ> ?C= ?C=s>VmďQ>ؐ>VmO> ?C=ؐ>VmO>^ ? C=^ ? C=ؐ>VmO>V ?>ЊC=~>]hnEC?>#Y?-C=V ?>ЊC=~>]hnEC?>V ?>ЊC=T>=npA>T>=npA>V ?>ЊC=>-mw(J>~>]hnEC?>=>In4:>#Y?-C=#Y?-C==>In4:>w >Rn6>#Y?-C=w >Rn6>NT?/C=NT?/C=w >Rn6>k?bC=w >Rn6>>un4>k?bC=k?bC=>un4>i6>ne1>k?bC=i6>ne1>?C=?C=i6>ne1> ?m9C= ?m9C=i6>ne1>W:>mr.> ?m9C=W:>mr.>?톿C=?톿C=W:>mr.>#?񅿖C=#?񅿖C=W:>mr.>+>Tom,>#?񅿖C=+>Tom,>>Vm*>>Vm*>+>Tom,>>Vm,>?yuC=<?󓂿C=V>Vmˉ>V>Vmˉ><?󓂿C=r?}肿C=V>Vmˉ>r?}肿C=U>VmW&>r?}肿C=z ?`C=U>VmW&>U>VmW&>z ?`C=(?C=U>VmW&>(?C=7>Vm>7>Vm>(?C=?C=7>Vm>?C=>Vm">>Vm">?C=?ǺC=>Vm">?ǺC=>Vm)>>Vm)>?ǺC=?/C=>Vm)>?/C=>Vm*>>Vm*>?/C=?yC=>Vm*>?yC=#?񅿖C=F >a=>Pa=ٞ?GaC=>Ր`/* >R>Y`48 >5?|`C=5?|`C=R>Y`48 >">_`|>%?,}`C=%>P`_>f>q`M>.?1cC=73>Mb\#>D/?[wcC=h-?xjC=73> k\#>$>V+k:D#>H>Jlh>9>l>!?UlC=!?UlC=9>l>> m~o>ne>;,l)>@o?lC=v>ml>ne>;,l)>>1l >@o?lC=@o?lC=>1l >>k=>k=V>ekR=@o?lC= ?*kC=73>i6$=|?iC=73>Nhqm=??gC=3 ?NhC=73>i6$=Y?\hC=|?iC=73>Nhqm=?{gC=??gC=p>fp=p>d,Op>uTeC9Qp>fp=p>uTeC9Qp>fQp>fp=p>fQp>gC9Qp>fp=p>gC9Qp>K7i,Op>fp=p>K7i,Op>Fj[Kp>fp=p>Fj[Kp>kGp>fp=p>kGp>kBp>fp=p>kBp>kp=p>fp=p>kp=p>k\%8p>fp=p>k\%8p>k433p>fp=p>k433p>Fj.p>fp=p>Fj.p>K7iN+p>fp=p>K7iN+p>g)p>fp=p>g)p>f(p>fp=p>f(p>uTe)p>fp=p>uTe)p>dN+p>fp=p>dN+p>A c.p>fp=p>A c.p>8b433p>fp=p>8b433p>ǵa\%8p>fp=p>ǵa\%8p>7ap=p>fp=p>7ap=p>ǵaBp>fp=p>ǵaBp>8bGp>fp=p>8bGp>A c[Kp>fp=p>A c[Kp>d,O> k;H>kp=>kB>k8>ǘk\%8p>k\%8ǿ>Xj1p>Fj.>k53>k53p>Fj.p>k433p>k\%8>ǘk\%8p>k433p>k433>ǘk\%8>_k433>_k53>k8p>k\%8>kp=>kp=p>k\%8p>kp=>kp=p>kp=p>kB>kp=p>kB>kB>kBp>kBp>kG>kBp>kG> k;H> k;Hp>kGp>Fj[K> k;Hp>Fj[K>Fj[K>Fj[Kp>Fj[Kp>K7i,O>Fj[Kp>K7i,O>K7i,O>K7i,Op>K7i,Op>gC9Q>K7i,Op>gC9Q>gC9Q>gC9Qp>gC9Qp>fQ>gC9Qp>fQ>fQ>fQp>fQp>uTeC9Q>fQp>uTeC9Q>uTeC9Q>uTeC9Qp>uTeC9Qp>d,O>uTeC9Qp>d,O>d,O>d,Op>d,Op>A c[K>d,Op>A c[K>A c[K>A c[Kp>A c[K>Mb;H>Mb;Hp>A c[Kp>8bG>Mb;Hp>8bGp>ǵaB>Mb;Hp>ǵaB>ǵaB>ǵaBp>ǵaBp>7ap=>ǵaBp>7ap=>7ap=>7ap=p>7ap=p>ǵa\%8>7ap=p>ǵa\%8>ǵa\%8>ǵa\%8p>ǵa\%8p>8b433>ǵa\%8p>8b433>8b433>8b433p>8b433p>A c.>8b433p>A c.>A c.>A c.p>A c.p>dN+>A c.p>dN+>dN+>dN+p>dN+p>uTe)>dN+p>uTe)>uTe)>uTe)p>uTe)p>f(>uTe)p>f(>f(>f(p>f(p>g)>f(p>g)>g)>g)p>g)p>K7iN+>g)p>K7iN+>K7iN+>K7iN+p>K7iN+p>Fj.>K7iN+p>Fj.>Fj.>Fj.p>Fj.ǿ>Xj1>Fj.ǿ>Xj1>^j?0>7ap=>ǵa\%8>ǵaB>ǵaB>ǵa\%8>8b433>ǵaB>8b433>Mb;H>e+.73>fz.>fz.>fz.73>fz.73>6g+.>fz.73>6g+.>6g+.>6g+.73>6g+.73>uhc#0>6g+.73>uhc#0>uhc#0>uhc#073>uhc#0\>vf=>uhc#0\>vf=>E_iJ2>E_iJ2\>vf=73>?i5>E_iJ273>?i5>?i5>?i573>?i573>]jw9>?i573>]jw9>]jw9>]jw973>]jw973>~jp=>]jw973>~jp=>~jp=>~jp=73>~jp=73>]jiA>~jp=73>]jiA>]jiA>]jiA73>]jiA73>?iE>]jiA73>?iE>?iE>?iE73>?iE73>E_iMH>?iE73>E_iMH>E_iMH>E_iMH73>E_iMH73>uhJ>E_iMH73>uhJ>uhJ>uhJ73>uhJ73>6gGL>uhJ73>6gGL>6gGL>6gGL73>6gGL73>fL>6gGL73>fL>fL>fL73>fL73>eGL>fL73>eGL>eGL>eGL73>eGL73>idJ>eGL73>idJ>idJ>idJ73>idJ73>cMH>idJ73>cMH>cMH>cMH73>cMH73>TcE>cMH73>TcE>TcE>TcE73>TcE73>QbiA>TcE73>QbiA>QbiA>QbiA73>QbiA73>bp=>QbiA73>bp=>bp=>bp=73>bp=73>Qbw9>bp=73>Qbw9>Qbw9>Qbw973>Qbw973>Tc5>Qbw973>Tc5>Tc5>Tc573>Tc573>cJ2>Tc573>cJ2>cJ2>cJ273>cJ273>idc#0>cJ273>idc#0>idc#0>idc#073>idc#073>e+.>idc#073>e+.>e+.>e+.73>e+.73>fz.\>vf=>bp=>Qbw9\>vf=>Qbw9>Tc5\>vf=>Tc5>cJ2\>vf=>cJ2>idc#0\>vf=>idc#0>e+.\>vf=>e+.>fz.\>vf=>fz.>6g+.\>vf=>6g+.>uhc#0\>vf=>E_iJ2>?i5\>vf=>?i5>]jw9\>vf=>]jw9>~jp=\>vf=>~jp=>]jiA\>vf=>]jiA>?iE\>vf=>?iE>E_iMH\>vf=>E_iMH>uhJ\>vf=>uhJ>6gGL\>vf=>6gGL>fL\>vf=>fL>eGL\>vf=>eGL>idJ\>vf=>idJ>cMH\>vf=>cMH>TcE\>vf=>TcE>QbiA\>vf=>QbiA>bp=D?>)?5@@*9?>*9?>*?5@@*?z?;+9?>*?z?;+??@+)3? bCn?):B'?A.()3? bC?A.(A3?aCA3?aC?A.(4?2aCA3?aC4?2aC4?aC4?2aC?A.(?5@@*4?2aC?5@@*M5?<`CM5?<`C?5@@*D?>)M5?<`CD?>)5?_C.?naC?BE 1?3KbC1?3KbC?BE \1?IbC?BE ?YDC\1?IbC\1?IbC?YDCc?cC)"\1?IbCc?cC)"2?MEbC2?MEbCc?cC)")3? bC)3? bCc?cC)"-?bbCU$)3? bC-?bbCU$n?):B'6)?^C?9F2_?c@F6)?^C2_?c@F+?+j`C+?+j`C2_?c@F?E&+?+j`C?E&-?aC-?aC?E&.?naC.?naC?E&?Ek .?naC?Ek ?BE % ?:E) ?.QE8#?YC8#?YC) ?.QED ?Ej 8#?YCD ?Ej $?%ZC$?%ZCD ?Ej )f ?dE. $?%ZC)f ?dE. \&?nn\C\&?nn\C)f ?dE. ?<F \&?nn\C ?<F 6)?^C6)?^C ?<F \ ? .F36)?^C\ ? .F3?9Fr!?62WCN ?D0 8#?YC8#?YCN ?D0 % ?:E; ?RCN ?D0 r!?62WC; ?RCr!?62WC ?C ?C r!?62WC>!?}VC ?C >!?}VCN ?DN ?D>!?}VCOb ?;TCN ?DOb ?;TCSD?DSD?DOb ?;TC?SCb?QC?CMQ?RCQ?RC?CM⽼?CɓQ?RC?Cɓ?SC?SC?Cɓ‹?#D-?SC‹?#D-SD?Dクb?QC(?LC.ڽ?CM⽸b?QC݀?OC(?LC.ڽ(?LC.ڽ݀?OCS ?B ׽?@ٽC}?r@ؽ ?KMC ?KMCC}?r@ؽ;?+eA׽ ?KMC;?+eA׽? ?ffNC? ?ffNC;?+eA׽ {?GB׽? ?ffNC {?GB׽?NC?NC {?GB׽݀?OC݀?OC {?GB׽S ?B ׽ ?KMC!?MC?@ٽ?@ٽ!?MC"?HMC?@ٽ"?HMC%?k?")%? MCn[?=#?J^MC#?J^MCn[?=콅/?5?]#?J^MC/?5?]"?HMC"?HMC/?5?]%?k?":?!<@??C=i.?x#SC?>=iw?$=F3?dXC+?=* 2?kVC 2?kVC+?=*?=Q 2?kVC?=QX1?UCX1?UC?=Q?c= $ X1?UC?c= $ ?Q= )3?XC8?<>F3?dXCF3?dXC8?<>k?=ɉF3?dXCk?=ɉ+?=* F?SW>P8?<>4?[C4?[C8?<>)3?XCֲ5?q]C?>U$z?Tj>k&ֲ5?q]Cz?Tj>k&4?[C4?[Cz?Tj>k& F?SW>PD?>)*?>X'5?_C5?_C*?>X'??>A`%5?_C??>A`%A5?8_CA5?8_C??>A`%?>U$A5?8_C?>U$ֲ5?q]C5 ?B ?JCB ?NCC ?8/| ?UH9eQp ?1=9CS?:}^?O;< L?8^z@?J8CC&?A>8^?,7C?,7CC&?A>8^エ?˗7 2콴?˗7 2C&?A>8^?7ف?:CL{?:O,5?:U}ف?:C,5?:U}}?1=9C}?1=9C,5?:U}?A9W?c&(0?ۢdC0?eC73>e*#1?TeCX[1?c@fC)?9aC>za.!>kabF>|`h%?ގ`C3>w` >n`Z%[!?T`C0>z`,?`C>k`R z>`d?`C>`NI?`CX?'aC-:>a}>ma6X}>ma6X>aX?'aC]=?4bC&>#bY?ebC73>Nhr ?NhC/?gC?iC?N]iC73>i6$>lHne>;,l&f?DlC,?lCz>Wld%>l ,?lC%>l >l% [>uk>kN ,?KkCl>ullѠ)?%lC>l >kN >cuk!,?KkC6c1?fCJ1?\gC73>fz+@ ?|&\=@ ?팿&\=U>J &\=U>J &\=@ ?팿&\=A >팿&\=U>J &\=A >팿&\=A >J &\=A >J )\A >팿)\U>J )\h ף>N ף>U >Zhef>ZA+ef>N޾A+ef>N޾A+ef>O޾hef>Zhef>Qȟ>Q+̌>+̌>+̌>ȟ>Qȟ>O޾hffN޾>ffZ>ffZ>ffZhffO޾hffȟ̌Q̌Q̌QȟȟZ팿O޾팿߾팿 ף߾팿 ף팿 ףZ팿O޾팿=Z팿=팿 ף>팿 ף>߾팿 ף>O޾팿=Q팿팿_팿q=_팿q=B팿q=Q팿팿=Q팿=Q팿.>Q팿.>팿.>팿=(ܾS(ܾhO޾팿Sh팿Q팿hSZ팿hS(ܾSO޾팿Z팿Z팿S(ܾS팿Q팿SSS팿(ܾS=O޾팿=(ܾh=Z팿=S=h=S=h=Q팿=팿=h=S=(ܾS=(ܾh=پ팿=팿=h=S=(ܾS=S=Z팿=Z팿=O޾팿=(ܾS=Q팿=팿=S=S=S=Q팿=x.W[Gax.㥛'Kx.Sx.W[Ga>x.S=x.㥛4K=,IL=,ILFILFILFIL=,IL=x.㥛4K=x.S=x.Sx.Sx.㥛'Kx.㥛4K=,!`F!`FILFIL,IL,!`,*Oa>,IL=FIL=FIL=F*Oa>,*Oa>,6iff>F6iff>F팿iff>F팿iff>,팿iff>,6iff>,팿fffF팿fffFIKfffFIKfff,IKfff,팿fffx.팿팿팿Ga팿Gax.팿Gax.팿팿=x.팿=x.팿Ga>x.팿Ga>팿Ga>팿=x.팿x.SSS팿x.팿x.S=x.팿=팿=팿=S=x.S=W[Ga㥛'KFILFILF!`W[GaSj팿Ga팿Ga팿SW[GaFIKfffF팿fffF팿fff팿GaW[Gax.팿Ga팿GaF팿fffF팿fff,팿fffx.팿Ga㥛4K=FIL=FILFIL㥛'K㥛4K=FIL=㥛4K=W[Ga>W[Ga>F*Oa>FIL=팿Ga>j>S=S=팿=팿Ga>W[Ga>팿Ga>F팿iff>F팿iff>F6iff>W[Ga>FIKfffF!`,!`,!`,IKfffFIKfffF*Oa>F6iff>,6iff>,6iff>,*Oa>F*Oa>x.W[Gax.팿Ga,팿fff,팿fff,IKfffx.W[Gax.W[Ga,!`,IL,ILx.㥛'Kx.W[Ga,IL=,*Oa>x.W[Ga>x.W[Ga>x.㥛4K=,IL=,IL=x.㥛4K=x.㥛'Kx.㥛'K,IL,IL=㥛4K=㥛'Kjjj>㥛4K=x.W[Ga>,6iff>,팿iff>,팿iff>x.팿Ga>x.W[Ga>팿Ga>x.팿Ga>,팿iff>,팿iff>F팿iff>팿Ga>x.팿x.팿Gax.W[Gax.W[Gax.Sx.팿x.팿=x.S=x.W[Ga>x.W[Ga>x.팿Ga>x.팿=9 ףOdhSh ף(ܾh(ܾh ף(ܾ9 ף(ܾ9 ף(ܾS(ܾh(ܾh=(ܾS=(ܾN ף>(ܾN ף>(ܾh ף>(ܾh=O9 ףh ףh ףSOL=U >YJ>YJ>^=L=OL=^=^=^O^=YJ>پYJ>پYJ>پ^=^=^=پ^=پ^پ^^^=(ܾh ף>(ܾN ף>پ̒ef>پ̒ef>پhef>(ܾh ף>(ܾU >پYJ>پ̒ef>پ̒ef>(ܾN ף>(ܾU >(ܾh ף>پ팿Ǣ>پ팿=پ팿=(ܾh=(ܾh ף>(ܾL=پ^=پYJ>پYJ>(ܾU >(ܾL=پ팿پ팿Ǣ(ܾh ף(ܾh ף(ܾhپ팿پ^پ^=(ܾL=(ܾL=(ܾOپ^پ'S᣾پ^(ܾO(ܾO(ܾdپ'S᣾پ팿ǢDؾ팿 ףپhffپhff(ܾh ףپ팿Ǣ(ܾ9 ףپlffپ'S᣾پ'S᣾(ܾd(ܾ9 ףپlff(ܾ9 ף(ܾh ף(ܾh ףپhffپlffDؾ팿 ף>پ팿Ǣ>(ܾh ף>(ܾh ף>پhef>Dؾ팿 ף>l팿 ף>Dؾ팿 ף>پhef>پhef>hef>l팿 ף>پ팿Ǣ>Dؾ팿 ף>l팿 ף>l팿 ף>팿Ǣ>پ팿Ǣ>YJ>̒ef>پ̒ef>پ̒ef>پYJ>YJ>팿Ǣ>l팿 ף>hef>hef>h ף>팿Ǣ>'S᣾^پ^پ^پ'S᣾'S᣾Dؾ팿 ףl팿 ףhffhffپhffDؾ팿 ףlff'S᣾پ'S᣾پ'S᣾پlfflff̒ef>N ף>h ף>h ף>hef>̒ef>h ף>h=팿=팿=팿Ǣ>h ף>U >N ף>̒ef>̒ef>YJ>U >'S᣾dOO^'S᣾l팿 ף팿Ǣh ףh ףhffl팿 ף9 ףd'S᣾'S᣾lff9 ףh ף9 ףlfflffhffh ףپ팿=팿=S=S=(ܾS=پ팿=h(ܾh(ܾS(ܾSShپ팿=پ팿Ǣ>팿Ǣ>팿Ǣ>팿=پ팿=lffپlffپhffپhffhfflffپ̒ef>̒ef>hef>hef>پhef>پ̒ef>SS=L=L=OSL=S=h ף>h ף>U >L=hk쌿پ팿پ팿(ܾhhl팿 ףDؾ팿 ףپ팿Ǣپ팿Ǣ팿Ǣl팿 ף팿Ǣپ팿Ǣپ팿پ팿k쌿팿Ǣh ף팿Ǣk쌿k쌿hh ףhq=לq=̌̌ȟhq=̌לq=@Mۈ@MۈG板Čȟ_팿q=팿.팿.hq=ȟG板C@MۈĠ☽Ġ☽rhG板Chq=팿.팿팿hhq=rhĠ☽Ġ=Ġ=rh=rhrh=Ġ=O>O>5ꝿщ>rh=5ꝿщ>O>眿o=>眿o=>+̌>5ꝿщ>팿.>ho=>h=h=팿=팿.>ȟ>+̌>眿o=>眿o=>ho=>ȟ>G板CQG板CQ̌Q̌̌G板CQȟB팿q=_팿q=_팿q=ȟQȟrhQrhQG板CQG板CG板Crh5ꝿщ>Q5ꝿщ>Qrh=Qrh=rh=5ꝿщ>_팿o=>ȟ>ho=>ho=>팿.>_팿o=>+̌>Q+̌>Q5ꝿщ>Q5ꝿщ>5ꝿщ>+̌>팿.>Q팿.>B팿o=>B팿o=>_팿o=>팿.>B팿o=>Qȟ>ȟ>ȟ>_팿o=>B팿o=>Q팿.>ho=>Qȟ>Qȟ>B팿o=>Q팿.>QȟQ̌לq=לq=hq=QȟQG板C@Mۈלq=לq=Q̌QG板Chq=Q팿.B팿q=B팿q=Qȟhq=QrhĠ☽@Mۈ@MۈQG板CQrhhQ팿Q팿.Q팿.hq=hQrh=Ġ=Ġ☽Ġ☽QrhQrh=Q5ꝿщ>O>Ġ=Ġ=Qrh=Q5ꝿщ>ho=>Q팿.>Q팿=Q팿=h=ho=>Q+̌>眿o=>O>O>Q5ꝿщ>Q+̌>ho=>眿o=>Q+̌>Q+̌>Qȟ>ho=>Qrh=Qrhrhrhrh=Qrh=(ܾh ף(ܾџ ףN޾>ffN޾>ffO޾hff(ܾh ףN޾>ff(ܾџ ף(ܾ.Vd(ܾ.VdN޾렿᣾N޾>ffO޾hff߾팿 ףO޾팿ǢO޾팿Ǣ(ܾh ףO޾hff(ܾ}?˽N޾T㥿̽N޾렿᣾N޾렿᣾(ܾ.Vd(ܾ}?˽(ܾ}?=N޾T㥿=N޾T㥿̽N޾T㥿̽(ܾ}?˽(ܾ}?=(ܾh ףO޾팿ǢO޾팿O޾팿(ܾh(ܾh ף(ܾZ >N޾|J>N޾T㥿=N޾T㥿=(ܾ}?=(ܾZ >(ܾm矿 ף>N޾A+ef>N޾|J>N޾|J>(ܾZ >(ܾm矿 ף>O޾팿Ǣ>(ܾh ף>(ܾh=(ܾh=O޾팿=O޾팿Ǣ>O޾hef>N޾A+ef>(ܾm矿 ף>(ܾm矿 ף>(ܾh ף>O޾hef>N޾렿᣾Z렿᣾Z>ffZ>ffN޾>ffN޾렿᣾Zhff팿 ף߾팿 ף߾팿 ףO޾hffZhffN޾T㥿̽ZT㥿̽Z렿᣾Z렿᣾N޾렿᣾N޾T㥿̽N޾|J>Z|J>ZT㥿=ZT㥿=N޾T㥿=N޾|J>߾팿 ף>O޾hef>(ܾh ף>(ܾh ף>O޾팿Ǣ>߾팿 ף>N޾A+ef>ZA+ef>Z|J>Z|J>N޾|J>N޾A+ef>팿 ף>Zhef>O޾hef>O޾hef>߾팿 ף>팿 ף>Z팿Ǣ>h ף>Zhef>Zhef>팿 ף>Z팿Ǣ>ZhffZ>ffџ ףџ ףh ףZhffZ렿᣾.Vdџ ףџ ףZ>ffZ렿᣾h ףZ팿Ǣ팿 ף팿 ףZhffh ףZT㥿̽}?˽.Vd.VdZ렿᣾ZT㥿̽ZT㥿=}?=}?˽}?˽ZT㥿̽ZT㥿=hZ팿Z팿ǢZ팿Ǣh ףhZ|J>Z >}?=}?=ZT㥿=Z|J>h ף>Z팿Ǣ>Z팿=Z팿=h=h ף>ZA+ef>m矿 ף>Z >Z >Z|J>ZA+ef>h ף>m矿 ף>ZA+ef>ZA+ef>Zhef>h ף>ZT㥿=ZT㥿̽N޾T㥿̽N޾T㥿̽N޾T㥿=ZT㥿=jSS=S=j>jלq=Shhhq=לq=לq=@MۈĠ☽Ġ☽Sלq=Ġ=O>眿o=>眿o=>S=Ġ=SĠ☽Ġ=Ġ=S=SS㥛'K㥛4K=㥛4K=S=SSĠ☽@Mۈ@Mۈלq=SSS=Ġ=Ġ=Ġ☽SS=眿o=>O>O>Ġ=S=S=ho=>眿o=>џ ף.Vd}?˽}?˽Sџ ףџ ףSh ף}?˽}?=S=S=S}?˽S=}?=Z >Z >m矿 ף>S=S=m矿 ף>h ף>(ܾџ ף(ܾS(ܾ}?˽(ܾ}?˽(ܾ.Vd(ܾџ ף(ܾџ ף(ܾh ף(ܾS(ܾ}?˽(ܾS(ܾS=(ܾS=(ܾ}?=(ܾ}?˽(ܾS=(ܾm矿 ף>(ܾZ >(ܾZ >(ܾ}?=(ܾS=(ܾS=(ܾh ף>(ܾm矿 ף>(ܾS=(ܾL=(ܾU >(ܾU >(ܾN ף>(ܾS=(ܾS(ܾO(ܾL=(ܾL=(ܾS=(ܾS(ܾ9 ף(ܾd(ܾO(ܾO(ܾS(ܾ9 ף )?x u"?x u"?ru"?ru )?ru )?x u )?x u )?ru )?ru= )?ru= )?x u= )?x u"?x u?T u?T u=?T u="?x u="?x u )?x u )?x u=?C u=?C u=?C u )?x uff?Z)\?Z)\?Z&\=?Z&\=ff?Z&\=ff?Z)\ff?r)\ff?Z)\ff?Z&\=ff?Z&\=ff?r&\=ff?r)\ff?r)\ff?r&\= )?ru= )?ru= )?ruff?r)\@ ?|)\@ ?팿)\@ ?팿&\=@ ?팿&\=@ ?|&\=@ ?|)\@ ?|)\@ ?|&\=U>J &\=U>J &\=U>J )\@ ?|)\U>J )\U>J &\=A >J &\=A >J &\=A >J )\U>J )\j?팿C`?IC`?IC=`?IC=j?팿C=j?팿Cڶh?C uui?~ u蟄?~ u蟄?~ u蟄?B uڶh?C u蟄?B u=蟄?~ u=ui?~ Q=ui?~ Q=ڶh?C Q=蟄?B u=蟄?~ u=蟄?~ uui?~ uui?~ uui?~ Q=蟄?~ u=ڶh?C u蟄?B u蟄?B u=蟄?B u=ڶh?C Q=ڶh?C u`?ICO#?rC#?rC=#?rC=`?IC=`?ICG!?f CG!?rCG!?rC=G!?rC=G!?f C=G!?f C?r)\?r&\=?Z&\=?Z&\=?Z)\?r)\ )?x u= )?ru="?ru="?ru="?x u= )?x u=ff?r&\=#?rC="?ru="?ru= )?ru=ff?r&\="?x u"?x u="?ru="?ru="?ru"?x u\?rC]?d?C]?d?C=]?d?C=?rC=\?rC]?d?Cn??Cn??C=n??C=]?d?C=]?d?Cn??C~?@C~?@C=~?@C=n??C=n??C~?@CRk?u2@CRk?u2@C=Rk?u2@C=~?@C=~?@CA >팿)\@ ?팿)\@ ?|)\@ ?|)\U>J )\A >팿)\A >팿&\=A >팿)\A >J )\A >J )\A >J &\=A >팿&\=@ ?팿)\A >팿)\:>팿C:>팿Cj?팿C@ ?팿)\j?팿C:>팿C`?ICRk?u2@C:>팿C:>팿C=:>팿C=Rk?u2@C=Rk?u2@C@ ?팿&\=j?팿C=:>팿C=:>팿C=A >팿&\=@ ?팿&\=j?팿C=`?IC=:>팿C=A >팿)\A >팿&\=:>팿C=:>팿C=:>팿CA >팿)\G!?f CG!?f C=NB?rC=NB?rC=*B?rCG!?f C\?rC?rC=?r&\=?r&\=?r)\\?rC0?r)\?Z)\ff?Z)\ff?r)\0?r)\ff?Z)\0?r)\?r)\?Z)\\?rC?r)\0?r)\0?r)\G!?rC\?rCff?r)\O#?rC*B?rC*B?rC0?r)\ff?r)\?r&\=,1?r&\=?Z&\=G!?rC=,1?r&\=?r&\=?r&\=?rC=G!?rC=ff?r&\=,1?r&\=NB?rC=NB?rC=#?rC=ff?r&\="?ru*B?rCO#?rC`?IC=Rk?u2@C=:>팿C=`?IC:>팿CRk?u2@C`?ICRk?u2@C~?@C`?IC~?@Cn??C`?IC=~?@C=Rk?u2@C=`?IC=n??C=~?@C=`?IC=#?rC=NB?rC=NB?rC=G!?f C=`?IC=G!?rC=?rC=]?d?C=]?d?C=G!?f C=G!?rC=`?IC=G!?f C=]?d?C=]?d?C=n??C=`?IC=*B?rC"?ru`?IC`?ICG!?f C*B?rC]?d?C\?rCG!?rCG!?rCG!?f C]?d?C]?d?CG!?f C`?IC`?ICn??C]?d?CG!?rC0?r)\,1?r&\=,1?r&\=G!?rC=G!?rCNB?rC=,1?r&\=0?r)\0?r)\*B?rCNB?rC=,1?r&\=ff?r&\=ff?Z&\=ff?Z&\=?Z&\=,1?r&\=73>xc6',?%bCWe/?cC>l8>"%?|lC=%?3lC=?cC?mscC73>dbh73>c?dC73>Ryc+9">Ņkn.>>k'>73> k\#>sB>HCz>jn?>RnY8\>Gn7Az>jn?sB>HC>CC>V싿CG>Vm^OG>Vm`O>C>V싿C=>C=>kp=\s>k?>l{k@C>V싿C=>늿C=)>C=C>V싿C)>C>늿C>TC=>.9C=f>Vm'>B>;pC=m>VmJ>>Vmbb>Iӹ>@ދC=j>VmnR>q>VmS>Iӹ>@ދCq>VmSj>VmnR$>V+k:D#>>kM%>>ekn!>?eeC=73>1e\=73>e=շ?ycC=$?q3dC=73>Ryc3=ٞ?GaC=>Pa=>Ma<>?lC=%>l6 >z>Wld>d>yX`[>k`R ,?`C%?ގ`CI>k ay3>w` M>Nk >>Kld;>>#lG>m+?aC=߿>^a@>>!an!>73>Mb\#->!bF#,?aC>n`Z%>"%?`q`C=R!?Mb`C=W:>mr.>> C=>ㅿC=> C;>1nx/>ㅿC=#>A`*>,>A`J-> >A`@/> >nlH/0>VmnJ>늿C63>]l3hH>>늿C=/0>VmϛJ>>TC>Vmem>VmJ>un4>>uC=|>QC=:?kC,>;kxpV>ekL]>&a~&>ٞ?GaC=>Ma<>S?/*aC=>`a>>`Q>>l% >%>l6 >?lC=)?-VlC=>#lG>>{DlD>>ekn!>M>Nk >)?M(lC=)?M(lC=,?KkC=>ekn!>3>lc@!?lC,?lC,?lCi1>lf3>lc@>n`Z%>R!?Mb`C=}?)W`C=}?)W`C=&>]`C>>n`Z%>>n`Z%>Y` ?wE`C ?wE`C[!?T`C>n`Z%>Ր`/* >5?|`C=?`C=?`C=z>`d>>Ր`/* >">l>>l% >?lC=?lC=?lC=">l>>lHf?DlC[?kC[?kC>k>lH>`a>S?/*aC=ٞ?GaC=ٞ?GaC=]>&a~&>>`a>;>1nx/i6>~m->yC>yC>ㅿC;>1nx/W:>mr.>>ㅿC=>yC=>yC=+>Tom,>W:>mr.>>l G >nlH>늿C>늿C׷>>ЊC>l G>lG>׷>>ЊC=>늿C=>늿C=63>]l3hH>>lG>>Vm>$C>.9C>.9Cf>Vm'>Vm> C=W:>mr.>i6>ne1>i6>ne1>#>.C=> C=#>.C=i6>ne1>>un4>>un4>|>QC=#>.C=f>Vm'>.9C>TC>TCm>VmJf>Vm'>Vmg*>>Vm,>+>Tom,>+>Tom,>>yC=>Vmg*>>Vmg*>yCi6>~m-i6>~m->VmI,>Vmg*:?kCV>ekL>k>k[?kC:?kCS?/*aC=>`Q>z>`d>z>`d>?`C=S?/*aC=">lA> m=7>f m 7>f m >l% ">lB>A` ș>wE`ϸ ?wE`C ?wE`C>Y`B>A` >A`>&>]`C>}?)W`C=}?)W`C=ș>wE`1>>A`>>l% 7>f m i1>lfi1>lf,?lC>l% )?-VlC=)?M(lC=M>Nk >M>Nk >>#lG>)?-VlC=73>fz+73>e*X[1?c@fCX[1?c@fC6c1?fC73>fz+b1?fC=73>fx+>73>}h#*>73>}h#*>(1?gC=b1?fC=J1?\gC&1?gC73>Mh}t*73>Mh}t*73>fz+J1?\gC73>Zib(>k/?ySiC=50?PhC=50?PhC=73>Mht*>73>Zib(>&1?gCN0?LOhC73>Zie(73>Zie(73>Mh}t*&1?gCN0?LOhC50?miC73>iX'73>iX'73>Zie(N0?LOhC0?ۢdC73>c&(73>xc6'73>xc6'We/?cC0?ۢdC50?miC tj\$73>tj\$73>iX'50?miC73> k\#>h-?xjC=:/?iC=:/?iC=73>i'>73> k\#>73>i'>:/?iC=k/?ySiC=k/?ySiC=73>Zib(>73>i'>h-?xjC=$>V+k:D#>>ekn!>>ekn!>,?KkC=h-?xjC= >cuk!$>V+k>D#|.?djC|.?djC,?KkC >cuk!o>aF >߿>^a@>m+?aC=m+?aC=')?7aC=o>aF > U*?lCѠ)?%lCl>ulll>ull?>/l U*?lCf>q`M>o>aF >')?7aC=')?7aC=%?,}`C=f>q`M>o>aF +'?7`C)?9aC)?9aC>kao>aF %?ގ`CbF>|`h0>z`0>z`[!?T`C%?ގ`C#?f mC=>Hl->H>Jlh>H>Jlh>!?UlC=#?f mC=">_`|>ș>wE`1>}?)W`C=}?)W`C=5?|`C=">_`|>>`N?`C,?`C,?`Cz>`d>`Nv>mlz>Wld,?lC,?lC?lCv>ml?lC=z>Wld>v>ml>v>ml>@o?lC=?lC=-:>aX?'aCI?`CI?`C>`N-:>ane>;,l&v>ml?lC?lCf?DlCne>;,l&&>#bY=F >a=ٞ?GaC=ٞ?GaC=BC?5bC=&>#bY=73> ks=73>i6$= ?*kC= ?*kC==k?WQkC=73> ks=73>Ryc3=73>db1=3w?bC=3w?bC=շ?ycC=73>Ryc3=BC?5bC=3w?bC=73>db1=73>db1=&>#bY=BC?5bC=73> ks?RjC?iC?iC73>i6$73> ks?N]iCU?hC73>:iM#73>:iM#73>i6$?N]iC73>Nhr73>:iM#U?hCU?hC ?NhC73>NhrP?gCh?l9gC73>Nhr73>Nhr/?gCP?gC?fC73>Yfp73>Nhr73>Nhrh?l9gC?fCi?[eC73>1e`73>Yfp73>Yfp潛?fCi?[eC?fC=?{gC=73>Nhqm=73>Nhqm=73>Yfp=?fC=4 >k4/ӳ?yCaA?򅿓CaA?򅿓CV>k14 >k4/>un4>w >Rn6>>C=>C=>uC=>un4> >ln 6>uC>C>C >nK7 >ln 6P>C>yC>Vmg*>Vmg*>Vm"P>C>Vm!B:>PuCP>CP>C>Vm">Vm!>Vmg*>>yC=P>C=P>C=>Vmp">>Vmg*>>Vm!>>Vmp">P>C=P>C=B:>PuC=>Vm!>>𢃿CB:>PuC>Vm!>Vm!I>Vmf>𢃿C3Q>7C>VmO>Vm $K>Vm $K>>ЊC3Q>7C>Vm $K>>VmO>3Q>7C=3Q>7C=>>ЊC=>Vm $K>>pC>𢃿CI>VmfI>VmfW>Vm >pC>𢃿C=I>Vmc>>Vm!>>Vm!>B:>PuC=>𢃿C=>pC=W>Vm>I>Vmc>I>Vmc>>𢃿C=>pC=B>;pC>тCW>Vm W>Vm N<>VmB>;pCN<>Vm9>W>Vm>>pC=>pC=>тC=N<>Vm9>>TCB>;pCt>VmZt>VmZ>Vme>TCŴ>f6C_Z>VmIT9$>Vm4T9$>Vm4TH>&CŴ>f6C9$>Vm4T>_Z>VmIT>Ŵ>f6C=Ŵ>f6C=H>&C=9$>Vm4T>B>;pC=>Vmbb>t>Vm\>t>Vm\>>тC=B>;pC=>$C=jf>Vm>f>Vm'>f>Vm'>>.9C=>$C=>Vmjf>Vm<>5C<>5C>$C>Vm>R~C=>Vm >jf>Vm>jf>Vm>J>TWC=>R~C=E >;S`; W>>A`; W>>A`= W>A`= WE >;S`= WE >;S`; W>M >`; W>E >;S`; W>E >;S`= WE >;S`= WM >`= WM >`; W>2>`; W>M >`; W>M >`= WM >`= W2>`= W2>`; W>>NlD7>ZlE FBW>承CBW>承C@>C>NlD>NlD>@>C=BW>承C=BW>承C=7>ZlE F>>NlD>`P>JcC= 4>Rtlu>>l|>>l|>>"C=`P>JcC=C>Ga; W>2>`; W>2>`= W2>`= WC>Ga= WC>Ga; W>`P>JcC*>dplA;>l$u";>l$u"ˮ>C`P>JcCg#>)a; W>C>Ga; W>C>Ga= WC>Ga= Wg#>)a= Wg#>)a; W>O<>kv%D+>~k'h>yCh>yCˮ>CO<>kv%>^j?0ǿ>Xj1>慿C>慿C> kۢ,>^j?0> kۢ,>慿Ch>yCh>yCD+>~k'> kۢ,>^jA0>> kܢ,>h>yC=h>yC=>慿C=>^jA0>ǿ>Xj1>k53X>AHCX>AHC>慿Cǿ>Xj1X>AHC=ǿ>Xj1>>^jA0>>^jA0>>慿C=X>AHC=>k53>_-Cn>-CX>AHC>k53>ǘk\%8>k8uĪ>yCuĪ>yC>RC>ǘk\%8>RC=|>kz7>>_>_n>-C=>RC=>_ǘk\%8>RC>RCn>-C>_kz7>>RC=uĪ>yC=uĪ>yC=>k8>|>kz7>ǿ>Xj1>X>AHC=n>-C=n>-C=>k53>ǿ>Xj1>->ekLg'>ˮ>C=h>yC=h>yC=> kܢ,>->ekLg'>;>lr"> 4>Rtlu>`P>JcC=`P>JcC=ˮ>C=;>lr">>l*>dplA`P>JcC`P>JcC>"C>l7>ZlE F>l G׷>>ЊC׷>>ЊCBW>承C7>ZlE F7>ZlE F>BW>承C=׷>>ЊC=׷>>ЊC=>lG>7>ZlE F>1>Cl>R@>$C=>"C=>"C=>l">1>Cl>>R~CJ>TWCjf>Vmjf>Vm>Vm">R~C_Z>VmIT>->Vmw#S>{>#C={>#C=Ŵ>f6C=_Z>VmIT>_Z>VmITŴ>f6C{>#C{>#C->Vmw#S_Z>VmITIӹ>@ދC=\Ż>1C=>VmO>>VmO>j>VmnR>Iӹ>@ދC=Iӹ>@ދCj>VmnR>VmO>VmO\Ż>1CIӹ>@ދCsB>HC=T>=npA>>-mw(J>>-mw(J>>>ЊC=sB>HC=~>]hnEC?>T>=npA>sB>HC=sB>HC=>C=~>]hnEC?>4 >k4/> k֨'y?GCy?GCӳ?yC4 >k4/?fC=73>Yfp=73>1e\=73>1e\=?eeC=?fC=?dC73>c73>1e`73>1e`i?[eC?dC3 ?NhC=Y?\hC=73>i6$=73>i6$=73>Nhqm=3 ?NhC=73>dbh?mscC?ebC?ebC&>#bY73>dbh73> ks,>;kxp:?kC:?kC?RjC73> ksX?'aC>a&>#bY&>#bY]=?4bCX?'aC73> ks==k?WQkC=@o?lC=@o?lC=V>ekR=73> ks=!?UlC=> m~o>">l>">l>?lC=!?UlC=3>lc@>lu$?lCu$?lC!?lC3>lc@%?,}`C="%?`q`C=>n`Z%>>n`Z%>%>P`_>%?,}`C=,?aC->!bF#>za.!>za.!)?9aC,?aC,?KkC U*?lC?>/l?>/l[>uk,?KkC *> b"">73>Mb\#>.?1cC=.?1cC=%,?T0bC= *> b"">$>V+k>D#73>tj\$ V+k>D#73>Mb\#>73>c&(>f0?gdC=f0?gdC=D/?[wcC=73>Mb\#>73>c&(0?eC#1?TeC#1?TeC73>e*73>c&((1?gC=73>}h#*>73>Mht*>73>Mht*>50?PhC=(1?gC={S1?rfC=73>e*>73>fx+>73>fx+>b1?fC={S1?rfC=>k'>>kM%>$>V+k:D#>$>V+k:D#>73> k\#>>k'>>Vm $K\>Gn7AsB>HCsB>HC>>ЊC>Vm $KuĪ>yC=r>-l4=A>u>-k?>u>-k?>>k<>uĪ>yC=>l{k@r>-l?AuĪ>yCuĪ>yC>kp=>l{k@r>-l4=A>uĪ>yC=@>C=@>C=(>\lkeB>r>-l4=A>@>CuĪ>yCr>-l?Ar>-l?A(>\lieB@>C/0>VmϛJ>>늿C=C>V싿C=C>V싿C=G>Vm`O>/0>VmϛJ>/0>VmnJG>Vm^OC>V싿CC>V싿C>늿C/0>VmnJ->Vmw#S>G>Vm`O>>C=>C={>#C=->Vmw#S>>CG>Vm^O->Vmw#S->Vmw#S{>#C>Cm>VmJ>B>;pC=>TC=>TC=f>Vm'>m>VmJ>H>&C=H>?C=>VmS>>VmS>9$>Vm4T>H>&C=>VmKTH>?CH>&CH>&C9$>Vm4T>VmKTH>?C=Iӹ>@ދC=q>VmS>q>VmS>>VmS>H>?C=q>VmSIӹ>@ދCH>?CH>?C>VmKTq>VmS >nK7>CsB>HCsB>HC>RnY8 >nK7&>nЖ3|>QC>uC>uC >ln 6&>nЖ3W:>odn0#>.C|>QC|>QC&>nЖ3W:>odn0#>.CW:>odn0;>1nx/;>1nx/> C#>.C?eeC=73>e=73>cx=73>cx=w?)eC=?eeC=$?q3dC=w?)eC=73>cx=73>cx=73>Ryc3=$?q3dC=73>Ryc+9?dC?cC?cC73>dbh73>Ryc+9d>yX`[,?`C ?wE`C ?wE`Cș>wE`ϸd>yX`["%?|lC=>l8>>Hl->>Hl->#?f mC="%?|lC=>la>l %?alC%?alCu$?lC>lI>k ay%?ގ`C+'?7`C+'?7`Co>aF I>k ay)?-VlC=>{DlD>>l8>>l8>%?3lC=)?-VlC=Ѡ)?%lC%?alCa>l a>l >l Ѡ)?%lC%,?T0bC=m+?aC=>!an!>>!an!> *> b"">%,?T0bC=73>xc6'73>Mb\#,?aC,?aC,?%bC73>xc6'73>c&(> 1?%SeC=0?:eC=0?:eC=f0?gdC=73>c&(>{S1?rfC= 1?%SeC=73>c&(>73>c&(>73>e*>{S1?rfC=>Vm">l"R@>$C>l">"CR@>$C>Vm"R@>$C(̴>ۂC?\=C>}k4V>k1V>k1aA?򅿓C?\=Ct?ĄC> k֨'>kM%t?ĄC>kM%>kN t?ĄC>kN [>uk>Vm >1>Cl>(̴>ۂC=1>Cl>(̴>ۂC=R@>$C=>Vm >>R~C=(̴>ۂC=n>mfL^=>p>kp=>p>kB>g#>)a= W>Mb= W>Mb; W>>Mb; W>g#>)a; W>g#>)a= W> k= W> k; W>>Mb; W>>Mb; W>>Mb= W> k= Wg#>k= W:>vk; W>> k; W>> k; W>> k= Wg#>k= WC>1l= Wg>uk; W>:>vk; W>:>vk; W>g#>k= WC>1l= W2>tl= Wd>Il; W>g>uk; W>g>uk; W>C>1l= W2>tl= WM >5l= W>l; W>d>Il; W>d>Il; W>2>tl= WM >5l= WE >l= WQ>l; W>>l; W>>l; W>M >5l= WE >l= W>Vm= WH/>:m; W>Q>l; W>Q>l; W>E >l= W>Vm= W>Vm= W>Vm; W>H/>:m; W>H/>:m; W>>Vm= W>Vm= W)>l; W>>Vm; W>>Vm= W>Vm= W>:m= W)>l; W>&>5l; W>)>l; W>>:m= W>:m= Wt>l= W&>5l; W>>tl; W>&>5l; W>t>l= Wt>l= W>l= W>tl; W>>1l; W>>tl; W>>l= W>l= W%O>Il= W>1l; W>>k; W>>1l; W>%O>Il= W%O>Il= W>uk= W>k; W>73> k; W>>k; W>>uk= W>uk= W>vk= W73> k; W>>vk= W>*a= W73>Mb; W>73>Mb; W>73> k; W>>vk= W>*a= W>)a; W>73>Mb; W>>*a= W>ija= W>)a; W>>)a; W>73>Mb; W>>*a= W>)a; W>>ija= W%O>a= W%O>a= W>Ga; W>>)a; W>>Ga; W>%O>a= W>`= W>`= W>`; W>>Ga; W>>`; W>>`= Wt>Nu`= Wt>Nu`= W&>`; W>>`; W>&>`; W>t>Nu`= W>N`= W>N`= W)>;S`; W>&>`; W>)>;S`; W>>N`= W>A`= W>A`= W>A`; W>)>;S`; W>>A`= W>A`= W>A`; W>>A`; W>>A`; W>>A`= WS=眿o=>ho=> )?B̾ )?|?B̾|?B̾ )?|?|?B̾=|?= )?B̾= )?B̾=|?= )?=|?B̾m=|?m=|?B̾=|?B̾=|?m=|?=*y}?B̾=?B̾=*y}?=*y}?=?B̾=?=*y}??*y}?B̾*y}?B̾??B̾|?B̾|?|?B̾m|?B̾m|?|?m*y}?᥻=*y}?᥻m=j?᥻=j?᥻=*y}?᥻m=?᥻m=j?᥻=?᥻m=j?᥻j?᥻?᥻m=?᥻mj?᥻?᥻m*y}?᥻*y}?᥻?᥻m*y}?᥻m*y}?f;*y}?f;mj?f;j?f;*y}?f;m?f;mj?f;?f;mj?f;=j?f;=?f;m?f;m=j?f;=?f;m=*y}?f;=*y}?f;=?f;m=*y}?f;m=|?B̾m=*y}?B̾=|?m=|?m=*y}?B̾=*y}?=|?m=*y}?=*y}?᥻m=*y}?B̾=|?B̾m=*y}?f;m=?=?᥻m=*y}?=*y}?=?᥻m=*y}?᥻m=*y}?᥻=|?=*y}?᥻m=*y}?᥻m=|?=|?m=|?B̾=*y}?f;=|?B̾m=|?B̾m=*y}?f;=*y}?f;m=?f;m=?B̾=*y}?f;m=*y}?f;m=?B̾=*y}?B̾=?B̾=5׍?B̾m=?=?=5׍?B̾m=5׍?m=?=5׍?m=?᥻m=j?᥻= )?=*y}?᥻=*y}?᥻= )?=|?= )?B̾=j?f;=|?B̾=|?B̾=j?f;=*y}?f;=?B̾=?f;m=5׍?B̾m=5׍?m?᥻m5׍?m=5׍?m=?᥻m?᥻m=j?᥻ )?j?᥻=j?᥻= )? )?= )?B̾j?f; )?B̾= )?B̾=j?f;j?f;=?f;m5׍?B̾m?f;m=?f;m=5׍?B̾m5׍?B̾m=5׍?B̾m?B̾5׍?m5׍?m?B̾?5׍?m??᥻m*y}?᥻|?j?᥻j?᥻|? )?|?B̾*y}?f; )?B̾ )?B̾*y}?f;j?f;5׍?B̾m?f;m?B̾*y}?*y}?᥻m??*y}?᥻m?᥻m*y}?᥻m|?m*y}?᥻*y}?᥻|?m|?|?B̾m*y}?f;m|?B̾|?B̾*y}?f;m*y}?f;*y}?f;m*y}?B̾?f;m?f;m*y}?B̾?B̾*y}?᥻m*y}?|?m*y}?f;m|?B̾m*y}?B̾*y}?B̾|?B̾m*y}?*y}?|?B̾m|?m )? )?|?|? )?|?|?=|?= )?= )?=|?= )?=|?m=|?m=|?=|?=|?m=|?=*y}?=?=)y}?=)y}?=?=?=)y}??*y}?*y}???|?|?|?m|?m|?|?m)y}?\=)y}?\m=j?\=j?\=)y}?\m=?\m=j?\=?\m=j?\j?\?\m=?\mj?\?\m)y}?\)y}?\?\m)y}?\m*y}?᥻*y}?᥻mj?᥻j?᥻*y}?᥻m?᥻mj?᥻?᥻mj?᥻=j?᥻=?᥻m?᥻m=j?᥻=?᥻m=*y}?᥻=*y}?᥻=?᥻m=*y}?᥻m=|?m=*y}?=|?m=|?m=*y}?=)y}?=|?m=)y}?=)y}?\m=*y}?=|?m=*y}?᥻m=?=?\m=)y}?=)y}?=?\m=)y}?\m=)y}?\=|?=)y}?\m=)y}?\m=|?=|?m=|?=*y}?᥻=|?m=|?m=*y}?᥻=*y}?᥻m=?᥻m=?=*y}?᥻m=*y}?᥻m=?=*y}?=?=5׍?m=?=?=5׍?m=5׍?m=?=5׍?m=?\m=j?\= )?=)y}?\=)y}?\= )?=|?= )?=j?᥻=|?=|?=j?᥻=*y}?᥻=?=?᥻m=5׍?m=5׍?m?\m5׍?m=5׍?m=?\m?\m=j?\ )?j?\=j?\= )? )?= )?j?᥻ )?= )?=j?᥻j?᥻=?᥻m5׍?m?᥻m=?᥻m=5׍?m5׍?m=5׍?m?5׍?m5׍?m??5׍?m??\m)y}?\|?j?\j?\|? )?|?*y}?᥻ )? )?*y}?᥻j?᥻5׍?m?᥻m?)y}?)y}?\m??)y}?\m?\m)y}?\m|?m)y}?\)y}?\|?m|?|?m*y}?᥻m|?|?*y}?᥻m*y}?᥻*y}?᥻m*y}??᥻m?᥻m*y}??)y}?\m)y}?|?m*y}?᥻m|?m*y}?*y}?|?m)y}?)y}?|?m|?mL*?zx鼈+?{x1?'fmx1?'fmx鼈+?{x$3?2rnxL*?zmL*?zx1?'fmm1?'fmmL*?zx1?'fmx)2?nEG?)z*?jz*?jzEG?)z????=EG?)z=*?jz=*?jz=EG?)z=)2?n=1?'fmm=1?'fmxpB>pB>pppxPi8oxPi8oxPi8oBQ{BQ{BQ{ڧBU{ڧBU{ڧBU{GBUR{GBUR{GBUR{GBUR{GBUR{GBUR{)?o)?o)?oW \W \W \W \W \W \f\f\f\f\f\f\c&hBc&hBc&hBp&ѸVBp&ѸVBp&ѸVB,4d*;5,4d*;5,4d*;5e(d3|o/>3|o/>3|o/>3|o/>3|o/>pB>pB>pB>ɂ^->ɂ^->ɂ^->ɂ^->ɂ^->ɂ^->E"?E"?E"?E"?E"?E"?0&_B?0&_B?0&_B?0&_B?0&_B?0&_B?\?\?\?\?\?\?)?o?)?o?)?o?CO{?CO{?CO{?CO{?CO{?CO{?)?o?)?o?)?o?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽•~?׽~?׽~?׽~?<׽ Ѹ~?<׽ Ѹ~?<׽ Ѹ~?׽Ѹ•~?׽Ѹ•~?׽Ѹ•~?׽•~?׽•~?׽•~?ֽq~ֽq~ֽq~ֽq~ֽq~ֽq~<׽~<׽~<׽~׽•~׽•~׽•~׽•~׽•~׽•~jp׽b~jp׽b~jp׽b~jp׽b~jp׽b~jp׽b~jp׽b~jp׽b~jp׽b~5555?ii??ii??i?i555555?ii??ii??i?i55ii?ii?i?i?i?i?ii??i?i5555i?ii?ii?i5555?i?i?i?i?i?i?55?55?iiii?i?i?ii??i?iii??????????????????뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?>2`o?>2`o?>2`o?>2`o?>2`o?>2`o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?뎵>3]o?1}>x?1}>x?1}>x?1}>x?1}>x?1}>x?}>dx?}>dx?}>dx?}>dx?}>dx?}>dx?Х<?Х<?Х<?Х<?Х<?Х<?G{?G{?G{?G'{?G'{?G'{?es?es?es?es?es?es?es?es?es?es?es?es?Yws?Yws?Yws?Us?Us?Us?rqs?rqs?rqs?rqs?rqs?rqs?4jw/y?4jw/y?4jw/y?4jw/y?4jw/y?4jw/y?ޜx??ޜx??ޜx??O=?O=?O=?i<i<i<i<i<i<UsUsUsUsUsUsUsUsUsYwsYwsYwsesesesesesesG'{G'{G'{G'{G'{G'{}>dx}>dx}>dx}>dx}>dx}>dx~>w~>w~>w~>w~>w~>w>2`o>2`o>2`o>2`o>2`o>2`o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o4jw/y4jw/y4jw/y4jw/y4jw/y4jw/yeseseseseses1<1<1<1<1<1<뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o뎵>3]o???????????????????????????????????????????????????????????????????????????????????????"?%="?%="?%=?????????ѸѸѸґb+vDG??????xX|xX|xX|yU|yU|yU|]|?]|?]|?]|?]|?]|?\t\t\t\t\t\t\t?\t?\t?\t?\t?\t?]+le]+le]+le]+le]+le]+le]+le?]+le?]+le?]+le?]+le?]+le?EeQEeQEeQ+HcQ+HcQ+HcQEeQ?EeQ?EeQ?=9DnQ?=9DnQ?=9DnQ?qz1~8qz1~8qz1~81w81w81w8}1z8?}1z8?}1z8?1w8?1w8?1w8?lK!lK!lK!lK!lK!lK!ܞK)?ܞK)?ܞK)?lK!?lK!?lK!?`4`4`4`{`{`{`>`>`>`>`>`>qp{qp{qp{pppp>p>p>p>p>p>K{bCK{bCK{bCO{CO{CO{CJ{{C>J{{C>J{{C>Q{B>Q{B>Q{B>l l l l l l l =l =l =l =l =l =Q~L=Q~L=Q~L=IS~.=IS~.=IS~.=9P~9P~9P~9P~9P~9P~v仇>v仇>v仇>jvȇ>jvȇ>jvȇ>v{v{v{>vʇ>vʇ>vʇzi!j>zi!j>zi!j> iÏ> iÏ> iÏ>i uѾi uѾi uѾiѾiѾiѾBV ?BV ?BV ?BV ?BV ?BV ?.VA .VA .VA BV BV BV ?h*? ?h*? ?h*??k*??k*??k*? ? e* ? e* ? e*?k*?k*?k*"~E?"~E?"~E?"|E?"|E?"|E?"xE"xE"xE"xE"xE"xE\?\?\?\?\?\?\\\\\\#c*qm?#c*qm?#c*qm?#c*qm?#c*qm?#c*qm?#c*qm#c*qm#c*qmWpsmWpsmWpsmW i$Hy?W i$Hy?W i$Hy?'iGy?'iGy?'iGy?W i$HyW i$HyW i$HyW i$HyW i$HyW i$Hyޜx??ޜx??ޜx??ޜx??ޜx??ޜx??1Km>1Km>1Km>ޜx?ޜx?ޜx???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????xX|xX|xX|xX|xX|xX|Z|?Z|?Z|?xX|?xX|?xX|?\t\t\t\t\t\t\t?\t?\t?\t?\t?\t?]+le]+le]+le]+le]+le]+le;,he?;,he?;,he?;,he?;,he?;,he?EeQEeQEeQ+HcQ+HcQ+HcQEeQ?EeQ?EeQ?EeQ?EeQ?EeQ?qz1~8qz1~8qz1~81w81w81w8}1z8?}1z8?}1z8?}1z8?}1z8?}1z8?lK!lK!lK!lK!lK!lK!ܞK)?ܞK)?ܞK)?lK!?lK!?lK!?`4`4`4K`K`K`K`>K`>K`>`>`>`>qp{qp{qp{ppz'ppz'ppz'\p >\p >\p >ppz'>ppz'>ppz'>O{CO{CO{CK{bCK{bCK{bCN{+C>N{+C>N{+C>K{bC>K{bC>K{bC>l l l l l l l =l =l =l =l =l =IS~.=IS~.=IS~.=T~p=T~p=T~p=9P~9P~9P~jvȇ>jvȇ>jvȇ>jvȇ>jvȇ>v{v{v{>vʇ>vʇ>vʇzi!j>zi!j>zi!j>i>i>i>i uѾi uѾi uѾ}iۄѾ}iۄѾ}iۄѾDV{ ?DV{ ?DV{ ?DV{ ?DV{ ?DV{ ?.VA .VA .VA DV{ DV{ DV{ ?h*? ?h*? ?h*??k*??k*??k*? ?h* ?h* ?h*?k*?k*?k*"~E?"~E?"~E?"~E?"~E?"~E?"xE"xE"xE"|E"|E"|E\?\?\?W \?W \?W \?\\\W \W \W \jnnm?jnnm?jnnm?jnnm?jnnm?jnnm?T>fmT>fmT>fmjnnmjnnmjnnmW i$Hy?W i$Hy?W i$Hy?}hIy?}hIy?}hIy?W i$HyW i$HyW i$Hy}hIy}hIy}hIy1Km>?1Km>?1Km>?-Gw>?-Gw>?-Gw>?B@B@B@ޜx?ޜx?ޜx???????1Km>1Km>1Km>ޜx?ޜx?ޜx?ޜx??ޜx??ޜx??ޜx??ޜx??ޜx??W i$HyW i$HyW i$HyW i$HyW i$HyW i$HyW i$Hy?W i$Hy?W i$Hy?'iGy?'iGy?'iGy?#c*qm#c*qm#c*qmWpsmWpsmWpsm#c*qm?#c*qm?#c*qm?#c*qm?#c*qm?#c*qm?\\\\\\\?\?\?\?\?\?"xE"xE"xE"xE"xE"xE"~E?"~E?"~E?"|E?"|E?"|E? ? e* ? e* ? e*?k*?k*?k* ?h*? ?h*? ?h*??k*??k*??k*?.VA .VA .VA BV BV BV BV ?BV ?BV ?BV ?BV ?BV ?i uѾi uѾi uѾiѾiѾiѾzi!j>zi!j>zi!j> iÏ> iÏ> iÏ>v{v{v{>vʇ>vʇ>vʇv仇>v仇>v仇>jvȇ>jvȇ>jvȇ>9P~9P~9P~9P~9P~9P~Q~L=Q~L=Q~L=IS~.=IS~.=IS~.=l =l =l =l =l =l =l l l l l l J{{C>J{{C>J{{C>Q{B>Q{B>Q{B>K{bCK{bCK{bCO{CO{CO{Cp>p>p>p>p>p>qp{qp{qp{ppp`>`>`>`>`>`>`4`4`4`{`{`{ܞK)?ܞK)?ܞK)?lK!?lK!?lK!?lK!lK!lK!lK!lK!lK!}1z8?}1z8?}1z8?1w8?1w8?1w8?qz1~8qz1~8qz1~81w81w81w8EeQ?EeQ?EeQ?=9DnQ?=9DnQ?=9DnQ?EeQEeQEeQ+HcQ+HcQ+HcQ]+le?]+le?]+le?]+le?]+le?]+le?]+le]+le]+le]+le]+le]+le\t?\t?\t?\t?\t?\t?\t\t\t\t\t\t]|?]|?]|?]|?]|?]|?xX|xX|xX|yU|yU|yU|????????????????????Ѹ?????????????Ѹ??????????????Ѹ???????Ѹ????????Ѹ??????Ѹ??????????????????????8?????8??8?????8??8?????8?Ѹ??????????????????????????????????Ѹ?????8?8?????????Ѹ?????8?8??????????????????????????????????8??8?????8??8?????8??8?????8???????????????????????Ѹ??????Ѹ????????Ѹ???????Ѹ??????????????Ѹ?????????????Ѹ???????????????Ѹ?????????????Ѹ??????????????Ѹ???????Ѹ????????Ѹ??????Ѹ??????????????????????8?????8??8?????8??8?????8?Ѹ??????????????????????????????????Ѹ?????8?8?????????Ѹ?????8?8??????????????????????????????????8??8?????8??8?????8??8?????8???????????????????????Ѹ??????Ѹ????????Ѹ???????Ѹ??????????????Ѹ?????????????Ѹ???????8??????8?8???????8??????Ѹ????????????????????????????Ѹ???????8????????Ѹ????Ѹ????????????????8????Ѹ????????????????????????????????????Ѹ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????/ ?'?/ ?'?/ ?'? J'? J'? J'? ? ? ?   ??????xv?L=xv?L=xv?L={?6+<{?6+<{?6+<{?:=>7CX{?:=>7CX{?:=>7CXH2??0?}nI>H2??0?}nI>H2??0?}nI> 2?i0?WG> 2?i0?WG> 2?i0?WG>U?8op>U?8op>U?8op>qV?v>0qV?v>0qV?v>00L[?|>҂0L[?|>҂0L[?|>҂RI[?y>ꂾRI[?y>ꂾRI[?y>ꂾX?> FX?> FX?> F[?to>V{þ[?to>V{þ[?to>V{þU?!p>I)U?!p>I)U?!p>I)\tV?Tw>+\tV?Tw>+\tV?Tw>+ޱM?G>ޱM?G>ޱM?G>;?+-< .;?+-< .;?+-< .V?np>QV?np>QV?np>Q?;ǓH?;ǓH?;ǓH8?218?218?21?."F?."F?."F/ ۾Umϯ> ۾Umϯ> ۾UA?!%TFA?!%TFA?!%TF>XR>XR>XR}>Z׾7V}>Z׾7V}>Z׾7Vq>CžcVq>CžcVq>CžcV=<>SV=<>SV=<>SVM>'o UQM>'o UQM>'o UQ茻"%'F茻"%'F茻"%'F=e#O=e#O=e#O猻"{E猻"{E猻"{EH4<.H4<.H4<.w,ù;w,ù;w,ù; 9TS" 9TS" 9TS"1QIE5=-1QIE5=-1QIE5=-|و9e"|و9e"|و9e"ki?\ki?\ki?\ЫѾe)?,ЫѾe)?,ЫѾe)?,QIQIQIx~2C1q=x~2C1q=x~2C1q=H᾿z?H᾿z?H᾿z?=1n0N=1n0N=1n0Nh ?8g޾h ?8g޾h ?8g޾ )5Dz )5Dz )5Dzլ9," լ9," լ9," >վ> >վ> >վ>Zb+ q>Zb+ q>Zb+ q>ZUX >ZUX >ZUX >XF>XF>XF>U y>U y>U y>20JH20JH20JHO g4{=O g4{=O g4{=Fk !Fk !Fk !,Uwm?,Uwm?,Uwm?<YW><YW><YW>߾XkE>߾XkE>߾XkE>Xj]E>Xj]E>Xj]E>)VӋp>)VӋp>)VӋp>[JaY>[JaY>[JaY>#>FE?#>FE?#>FE?.SUo;?.SUo;?.SUo;?aYUTo-?aYUTo-?aYUTo-?zL?b>zL?b>zL?C#>EE?C#>EE?C#>EE?#>HP?#>HP?#>HP?0Of>EL?0Of>EL?0Of>EL?Ǿ5>TV?Ǿ5>TV?Ǿ5>TV?Ԟi>GV?Ԟi>GV?Ԟi>GV?co>tU?co>tU?co>tU?FA>oV?FA>oV?FA>oV?*a?QL?*a?QL?*a?QL?o'?P?o'?P?o'?P?;"?E?;"?E?;"?E?L?QqL?L?QqL?L?QqL??>j/?>n7??>j/?>n7??>j/?>n7?ۦ>5?6-?I>5?6-?I>5?6-?>>>?i?>>>?i?>>>?i?r;@$?D?r;@$?D?r;@$?D?αH>4?.?αH>4?.?αH>4?.?Ҁ>Δ8?@G%?Ҁ>Δ8?@G%?Ҁ>Δ8?@G%?>j>? >>j>? >>j>? >?0;?O>?0;?O>?0;?O>>׺>??>׺>??>׺>??T>=?B ?T>=?B ?T>=?B ?r ?@=??.>r ?@=??.>r ?@=??.>4?#>?>4?#>?>4?#>?>֪2?1?Jg7>֪2?1?Jg7>֪2?1?Jg7>>>?8A?>>?8A?>>?8A?|>>?w>|>>?w>|>>?w>[>Qh#[>Qh#[>Qh#\u\u\ur\@r\@r\@y=SNy=SNy=SNې?!?ې?!?ې?!?/„?>?/„?>?/„?>?'uC5?.>'uC5?.>'uC5?.>#??#??#??((?65?((?65?((?65??>*;??>*;??>*;??>T$5??>T$5??>T$5?־4>c?־4>c?־4>c?a_>\?a_>\?a_>\?-n>%E]?-n>%E]?-n>%E]?,?xY,?xY,?xY(?3[r>(?3[r>(?3[r>x1?M4$>x1?M4$>x1?M4$> 4?3= 4?3= 4?3=(?]35f>(?]35f>(?]35f> `"?J13> `"?J13> `"?J13>r ?Y1I>r ?Y1I>r ?Y1I>N ?(s?N ?(s?N ?(s??-{>?-{>?-{> ?'<? ?'<? ?'<?&?,>&?,>&?,> ?'? ?'? ?'?{>i?{>i?{>i?>x.?>x.?>x.?>.?>.?>.? ">{^H? ">{^H? ">{^H?m>1eP?m>1eP?m>1eP?t]> dnP?t]> dnP?t]> dnP?C>N¾i?C>N¾i?C>N¾i?{>"˽~k?{>"˽~k?{>"˽~k?tc*{>/x?tc*{>/x?tc*{>/x?#{B/x?#{B/x?#{B/x?:=Z鱾yn?:=Z鱾yn?:=Z鱾yn?W>$۽ʍ{?W>$۽ʍ{?W>$۽ʍ{?){?){?){?b2&{?b2&{?b2&{?vؽC{?vؽC{?vؽC{?bn_> !k?bn_> !k?bn_> !k?=t?=t?=t?q?>.?k?q?>.?k?q?>.?k?AG=Gt?AG=Gt?AG=Gt?eܾC>Ja?eܾC>Ja?eܾC>Ja? >sD? >sD? >sD?h@>`?h@>`?h@>`?->a??->a??->a??U>??U>??U>??}n,x??}n,x??}n,x??1bh>!??1bh>!??1bh>!??)p>?)p>?)p>?s4??^>s4??^>s4??^>,\?8E?,\?8E?,\?8E?i87?#>i87?#>i87?#>Z9?[r>Z9?[r>Z9?[r>*W9) ?>*W9) ?>*W9) ?>:.;b+?=>:.;b+?=>:.;b+?=>m:_-?P=m:_-?P=m:_-?P=l:~q,?=l:~q,?=l:~q,?=4=3?wy4=3?wy4=3?wym3g4??۽m3g4??۽m3g4??۽|C(*4?|C(*4?|C(*4?43?0ݽ43?0ݽ43?0ݽ!Y1?`!Y1?`!Y1?` (3?G (3?G (3?G%v!1?|%v!1?|%v!1?|N-?$N-?$N-?$!1?q!1?q!1?q`$?94`$?94`$?94+ -?J+ -?J+ -?J徃2$?T2$?T2$?T`8P?`8P?`8P?fB#?fB#?fB#?O~ ?fBO~ ?fBO~ ?fBNY ?BNY ?BNY ?BP~?QJP~?QJP~?QJ$ ?.B$ ?.B$ ?.B@1>f@1>f@1>fA 1>fA 1>fA 1>fD>wmD>wmD>wm=>>{=>>{=>>{C=N>VozC=N>VozC=N>VozQs>SjQs>SjQs>SjU>wU>wU>w+V)>g+V)>g+V)>g*g>~m*g>~m*g>~m :>u :>u :>uC>uV>{C>uV>{C>uV>{=@ >{=@ >{=@ >{ߏ>o>M{ߏ>o>M{ߏ>o>M{ٕ>Zr;kٕ>Zr;kٕ>Zr;kT>=!(kT>=!(kT>=!(kF?XIF?XIF?XI$?R J$?R J$?R J&?`?&?`?&?`?vF?{sJvF?{sJvF?{sJ?tn??tn??tn?#*?"7#*?"7#*?"7,?m,?m,?m/*?/*?/*?<8?)<8?)<8?)*7:?T/P2f*7:?T/P2f*7:?T/P2fy3:?/5by3:?/5by3:?/5b *?k *?k *?kL9?_L9?_L9?_’9?d’9?d’9?d'W9?o'W9?o'W9?oJ;?p,iнJ;?p,iнJ;?p,iнI=숔Kt?I=숔Kt?I=숔Kt? gGy? gGy? gGy?f.; z?f.; z?f.; z?Q=yq?Q=yq?Q=yq?:QUz?:QUz?:QUz?&K=^t?&K=^t?&K=^t?UP=,Ĥcq?UP=,Ĥcq?UP=,Ĥcq?C>qѾLd?C>qѾLd?C>qѾLd?2D>Ҿ?d?2D>Ҿ?d?2D>Ҿ?d?w>E[?w>E[?w>E[?8L>]b >?8L>]b >?8L>]b >?4>] >?4>] >?4>] >?6>0 x??6>0 x??6>0 x??}> N=?}> N=?}> N=?>g V?>g V?>g V?*i>7?*i>7?*i>7?S?Q,j>S?Q,j>S?Q,j>?`%p ??`%p ??`%p ??f%] ??f%] ??f%] ??,W>?,W>?,W>ٔ$?2>ٔ$?2>ٔ$?2>G&?_:3>G&?_:3>G&?_:3>&?g;3Ku>&?g;3Ku>&?g;3Ku>$?|2|>$?|2|>$?|2|>&?E3{1>&?E3{1>&?E3{1>C4?30=C4?30=C4?30=̅6?m2Y=̅6?m2Y=̅6?m2Y=ʆ6?f2rW=ʆ6?f2rW=ʆ6?f2rW=' ;?,qݽ' ;?,qݽ' ;?,qݽ:?v&\:?v&\:?v&\5?O3\=5?O3\=5?O3\=A6?F2'd=A6?F2'd=A6?F2'd=:? &i\:? &i\:? &i\q:?bT"q:?bT"q:?bT"d!;?]D&QkVd!;?]D&QkVd!;?]D&QkVi>7?`#i>7?`#i>7?`#"2?x n"2?x n"2?x ne7?Cde7?Cde7?CdF2? "F2? "F2? "꾪?Ծfd-?Ծfd-?Ծfd-|!?)N/"|!?)N/"|!?)N/"!?zJ侏"!?zJ侏"!?zJ侏"?ԾR,?ԾR,?ԾR,ǃ!?A'"ǃ!?A'"ǃ!?A'">u~^W>u~^W>u~^Wk">%={k">%={k">%={À>&K;^wÀ>&K;^wÀ>&K;^wו>`ýN oו>`ýN oו>`ýN oU>[½poU>[½poU>[½po>!R>!R>!RA>2~LWA>2~LWA>2~LW 0>etR 0>etR 0>etR>XIFR>XIFR>XIFReݽ>Y)oeݽ>Y)oeݽ>Y)o0&M>j0&M>j0&M>j^ܽ>Bo^ܽ>Bo^ܽ>Bod_%>jd_%>jd_%>je~a>yWe~a>yWe~a>yW@^{>rW@^{>rW@^{>rWI>kI>kI>k߾Y+?-߾Y+?-߾Y+?-:Ҿ?*5:Ҿ?*5:Ҿ?*5OҾ?>5OҾ?>5OҾ?>5j,?kj,?kj,?k'OL,?0'OL,?0'OL,?0뾡Ҿk?15Ҿk?15Ҿk?15h?-h?-h?-6S,?F6S,?F6S,?FlV-?A޾lV-?A޾lV-?A޾9X-?߾9X-?߾9X-?߾(,?̊쾟(,?̊쾟(,?̊"-n4?>["-n4?>["-n4?>[p-z4?tVp-z4?tVp-z4?tV:-s4?o[:-s4?o[:-s4?o[uq-{4?dVuq-{4?dVuq-{4?dV=6N3?5x=6N3?5x=6N3?5xB9j/?VR=B9j/?VR=B9j/?VR=N 6;3?IxN 6;3?IxN 6;3?Ix9`/?b=9`/?b=9`/?b=:}?͆>:}?͆>:}?͆>9ٽ/?zY=9ٽ/?zY=9ٽ/?zY=";)?`%>";)?`%>";)?`%> ;)?%> ;)?%> ;)?%>J:N"?>J:N"?>J:N"?>8=?g:>8=?g:>8=?g:>/8?+>/8?+>/8?+>8?(l>8?(l>8?(l>,U?Fx ?,U?Fx ?,U?Fx ?|9&"?ps>|9&"?ps>|9&"?ps>ٴ6?BO>ٴ6?BO>ٴ6?BO>d'.֙??d'.֙??d'.֙??zO>40 ?>40 ?>}*c?]* ?}*c?]* ?}*c?]* ?f*Y?@ ?f*Y?@ ?f*Y?@ ?0>-?0>-?0>-?ܰ>-?ܰ>-?ܰ>-?3BIG>O??3BIG>O??3BIG>O??5|۾˸8>b?5|۾˸8>b?5|۾˸8>b?y>.?y>.?y>.?_)龛:_>\?_)龛:_>\?_)龛:_>\?\i>xv?\i>xv?\i>xv?.iv>tv?.iv>tv?.iv>tv?vf#=t?vf#=t?vf#=t?ѾW(>e?ѾW(>e?ѾW(>e?=Vt?=Vt?=Vt?%۽d\{?%۽d\{?%۽d\{?so,_w[{?so,_w[{?so,_w[{?E}{?E}{?E}{?s=+t?s=+t?s=+t?ʞ8^0{?ʞ8^0{?ʞ8^0{?bf4Ky?bf4Ky?bf4Ky?N?9>N?9>N?9>wp>'~>pwp>'~>pwp>'~>pL>I^~>rL>I^~>rL>I^~>r>w~>u>w~>u>w~>ug=?|>lwg=?|>lwg=?|>lwrA"?A_>=rA"?A_>=rA"?A_>=)?Yh>K)?Yh>K)?Yh>KD?[h>KD?[h>KD?[h>K)>w>;b)>w>;b)>w>;b~?;k>7L~?;k>7L~?;k>7L2p>t~>Sp2p>t~>Sp2p>t~>Sp-L>~>1r-L>~>1r-L>~>1rK>f~>rK>f~>rK>f~>rW?->W?->W?->qN?88>qN?88>qN?88>B!?b^>>B!?b^>>B!?b^>>'I??>r'I??>r'I??>r(?<Ԛ=(?<Ԛ=(?<Ԛ=Ǹ?>=].;Ǹ?>=].;Ǹ?>=].;kw?4=pkw?4=pkw?4=pH}?Ș=нH}?Ș=нH}?Ș=нGx?=OZGx?=OZGx?=OZmw?A=|Cimw?A=|Cimw?A=|Ci|x?= Y|x?= Y|x?= YOV?B->OV?B->OV?B->[l?>B >e[l?>B >e[l?>B >ev\l?@] >W跾v\l?@] >W跾v\l?@] >W跾w~?qh<#=w~?qh<#=w~?qh<#=x~?h<=x~?h<=x~?h<=xo?K>xo?K>xo?K>l?yG=ף;l?yG=ף;l?yG=ף;$?qn?1;>qn?1;>,q?ɘ>,q?ɘ>,q?ɘ>Yqm?J>Yqm?J>Yqm?J>y?&.'`>y?&.'`>y?&.'`>?k8<T??k8<T??k8<T?Uk?;Z(BD?Uk?;Z(BD?Uk?;Z(BD??==S??==S??==S?n?)C?n?)C?n?)C?xD?!?xD?!?xD?!?@?(kED?@?(kED?@?(kED?C?e!?C?e!?C?e!?uT?8=νx ?uT?8=νx ?uT?8=νx ?ݝn?+)Ks>ݝn?+)Ks>ݝn?+)Ks>yyT?'ͽv ?yyT?'ͽv ?yyT?'ͽv ?aT?ͽ% ?aT?ͽ% ?aT?ͽ% ?O>EXe?O>EXe?O>EXe?>nRyb?>nRyb?>nRyb?>\d>o?>\d>o?>\d>o?1> `Yl?1> `Yl?1> `Yl?fFX>7lS!s?fFX>7lS!s?fFX>7lS!s?ή?=vL'x?ή?=vL'x?ή?=vL'x?;=v<*x?;=v<*x?;=v<*x?J>]8ps?J>]8ps?J>]8ps?K=uv?K=uv?K=uv?7N/=yx?7N/=yx?7N/=yx?N|gx?N|gx?N|gx?[E7v?[E7v?[E7v?ӼZv;v?ӼZv;v?ӼZv;v?unzl?unzl?unzl?ެ6K3s?ެ6K3s?ެ6K3s?bٛ}vk?bٛ}vk?bٛ}vk?hn*~al?hn*~al?hn*~al?Y}k?Y}k?Y}k?rX?rX?rX?|.Vs3?|.Vs3?|.Vs3?k.PVz`3?k.PVz`3?k.PVz`3?7erX?7erX?7erX?fmMR?fmMR?fmMR?q~X?q~X?q~X?|^mR?|^mR?|^mR?aCQ*Gv?aCQ*Gv?aCQ*Gv? `|3"> `|3"> `|3">`85"q>`85"q>`85"q>k.PVz`3?k.PVz`3?k.PVz`3?QA.TEg?QA.TEg?QA.TEg?ym= >ym= >ym= >A_w>A_w>A_w>rDn* xԭ>rDn* xԭ>rDn* xԭ>~hhb-=~hhb-=~hhb-=[z㿽 ?>[z㿽 ?>[z㿽 ?>pl W>pl W>pl W>4~ }`=4~ }`=4~ }`=T2X?T2X?T2X?Hx6P|<5%uHx6P|<5%uHx6P|<5%uuU67ꄽuU67ꄽuU67ꄽ~'3=~'3=~'3=~Ӏ=~Ӏ=~Ӏ=0Y~j=s0Y~j=s0Y~j=sxu>"@\4$t">"@\4$t">"@7\g=c7\g=c7\g=cQYj=9?QYj=9?QYj=9?\l=\l=\l=x\=-x\=-x\=-49Y>149Y>149Y>1z$$9#>?z$$9#>?z$$9#>?4>14>14>1v4>r1v4>r1v4>r1&PRg> p&PRg> p&PRg> p kD>7Y kD>7Y kD>7YٽԾOQ>bٽԾOQ>bٽԾOQ>bx°C>EYx°C>EYx°C>EYzC>#YzC>#YzC>#Y$F>r$F>r$F>rH y> wH y> wH y> wo7xo7xo7xW|tq>ЭuW|tq>ЭuW|tq>Эuii>Grii>Grii>Gr9g>sp9g>sp9g>spOdri>qOdri>qOdri>qΕri>qΕri>qΕri>q~gw=<~gw=<~gw=<Ք~^<׽0Ք~^<׽0Ք~^<׽0??????????????????K*+4?x>K*+4?x>K*+4?x>Ɣ6? 2v`Ɣ6? 2v`Ɣ6? 2v`;>T;>T;>TgI>'־]bgI>'־]bgI>'־]b>U a?>U a?>U a?*5>t)*5>t)*5>t)9 ?z'K9 ?z'K9 ?z'K?y%5 ?y%5 ?y%5 ? 'K ? 'K ? 'KN>L(J7N>L(J7N>L(J7qJ(?3)AqJ(?3)AqJ(?3)A ?1G ?1G ?1G. ?5J(. ?5J(. ?5J(Tl?Z8' Tl?Z8' Tl?Z8' *$?2k*$?2k*$?2k/?8n4Ý@/?8n4Ý@/?8n4Ý@%?3:%?3:%?3:B6?)2VcB6?)2VcB6?)2Vc#;?79&V>#;?79&V>#;?79&V>K8?)1[%$2?7h >%$2?7h >:?#݀>:?#݀>:?#݀>;?"&&X>;?"&&X>;?"&&X>:? #">:? #">:? #">?:?#>?:?#>?:?#>X>01lk?X>01lk?X>01lk?@?!9N?@?!9N?@?!9N?}n>?e;k?}n>?e;k?}n>?e;k?d?\L?d?\L?d?\L??iHJ??iHJ??iHJ??شL^???شL^???شL^???o???o???o??'?8?'?8?'?8?U'? 1?U'? 1?U'? 1?,?+R?,?+R?,?+R?,?iL?,?iL?,?iL?(8?b<o>(8?b<o>(8?b<o>=8?>>=8?>>=8?>>'?{^H?'?{^H?'?{^H?L9?_>L9?_>L9?_>L9?"d>L9?"d>L9?"d>6;?[,f]=6;?[,f]=6;?[,f]=:? .=:? .=:? .=9?#;>9?#;>9?#;>2?z4x2?z4x2?z4x 4?3ry 4?3ry 4?3ryWT1?q?4 WT1?q?4 WT1?q?4 k(?3>Ik(?3>Ik(?3>I+"?AA2볪+"?AA2볪+"?AA2볪(?̛3ዊ(?̛3ዊ(?̛3ዊ%"?2%"?2%"?2= ?Y)= ?Y)= ?Y)p?:-9Gp?:-9Gp?:-9G ? )T ? )T ? )Tt?,gt?,gt?,gs>[c s>[c s>[c f>]*f>]*f>]*^u>*^u>*^u>*_>vqH_>vqH_>vqHf<t vf<t vf<t vQR> `CQR> `CQR> `C…=款 o…=款 o…=款 o_ {_ {_ {>bk>bk>bk$ knz> knz> kn3>wBkn3>wBkn3>wBk|k?U!f=о&>U!f=о&>U!fC>jWW>C>jWW>C>j|C P>PH|C P>PH|C P>PHC&.E>C&.E>C&.E>~,S?l+~,S?l+~,S?l+d-~%>?d-~%>?d-~%>?4@>?4@>?4@>?9/?I9/?I9/?I0 ?; 0 ?; 0 ?; ,C?&T,C?&T,C?&Tn9?(n9?(n9?(59:?o59:?o59:?or9~\ ? ir9~\ ? ir9~\ ? iL+9iP?CJL+9iP?CJL+9iP?CJ: -?Ͻ: -?Ͻ: -?Ͻ^O(4?X;>^O(4?X;>^O(4?X;>U:/?,IHU:/?,IHU:/?,IH 43?= 43?= 43?==-?>=-?>=-?> /P4?CC> /P4?CC> /P4?CC>(Ҽ3?~>(Ҽ3?~>(Ҽ3?~>^./4?B>^./4?B>^./4?B>h5??h5??h5??1 '?0?1 '?0?1 '?0?6-?z>6-?z>6-?z>j.?$>j.?$>j.?$>E?J?E?J?E?J?sξ? 7?sξ? 7?sξ? 7??#??#??#?-6>Dm?-6>Dm?-6>Dm?k b>}Y?k b>}Y?k b>}Y?Df>}P?Df>}P?Df>}P?=,N>{?=,N>{?=,N>{?ݵ='>{?ݵ='>{?ݵ='>{?ml޽,X>o?ml޽,X>o?ml޽,X>o?z}5>|m?z}5>|m?z}5>|m?] >w?] >w?] >w?C=N>Voz?C=N>Voz?C=N>Voz???,???,???,?c6 ?Ӟ??c6 ?Ӟ??c6 ?Ӟ??.1>W?.1>W?.1>W?6) ???6) ???6) ???=>1W?=>1W?=>1W?٘ݽ>(o?٘ݽ>(o?٘ݽ>(o?Ѵf>xm?Ѵf>xm?Ѵf>xm?m>im?m>im?m>im?}-t4?lV>}-t4?lV>}-t4?lV>*4?y>*4?y>*4?y>R#c,?*>R#c,?*>R#c,?*>)+?}>)+?}>)+?}>>0H,?;>>0H,?;>>0H,?;>8&+?<>8&+?<>8&+?<>̏E?-?̏E?-?̏E?-?d?Nb+?~>d?Nb+?~>d?Nb+?~>:) ? ??:) ? ??:) ? ??&;a*?&;a*?&;a*?ߠ9!/?E'ߠ9!/?E'ߠ9!/?E'09GX/?ce09GX/?ce09GX/?ceZC-f34?Ǭ\>ZC-f34?Ǭ\>ZC-f34?Ǭ\>5y3?3=5y3?3=5y3?3=_43?=_43?=_43?=l~0 ?|l~0 ?|l~0 ?|:V\/?Y:V\/?Y:V\/?Y(:#?{(:#?{(:#?{8p?ס8p?ס8p?סZ8k?Z8k?Z8k?F7"z?3F7"z?3F7"z?3\+N? \+N? \+N? _::#?|_::#?|_::#?|8jx?˱8jx?˱8jx?˱s8V?tus8V?tus8V?tuh,>U%h,>U%h,>U%B>,&B>,&B>,&/ ?/ ?/ ?)>C<)>C<)>C?ڨ>?ڨ>?iE>%&iE>%&iE>%&5ؾ5>yc5ؾ5>yc5ؾ5>ycsq>}Ysq>}Ysq>}Y@񾃏q>ђY@񾃏q>ђY@񾃏q>ђY־k4>c־k4>c־k4>c~ma!=5t~ma!=5t~ma!=5tC=>&oC=>&oC=>&oXG!>JvXG!>JvXG!>Jv־ʨ5>'c־ʨ5>'c־ʨ5>'c==֥t==֥t==֥tт^{т^{т^{'k4s{'k4s{'k4s{>JfgOy>JfgOy>JfgOyTk8잽{Tk8잽{Tk8잽{.|=@Nu.|=@Nu.|=@Nue~/VhAye~/VhAye~/VhAyV侈\t>侈\t>侈\^> z;-^> z;-^> z;-V> ]NV> ]NV> ]ND>_RҾ*dD>_RҾ*dD>_RҾ*dE>nҾ0dE>nҾ0dE>nҾ0di|>pT5k?i|>pT5k?i|>pT5k?g\-?gys?g\-?gys?g\-?gys?1? W>1? W>1? W>$J?ԾԘ,?$J?ԾԘ,?$J?ԾԘ,?{ ?;G?{ ?;G?{ ?;G??UԾ-??UԾ-??UԾ-? ?t!zG? ?t!zG? ?t!zG?*0>Zn}W?*0>Zn}W?*0>Zn}W?. ?𣾺G?. ?𣾺G?. ?𣾺G?t>}qW?t>}qW?t>}qW?\ ?ډ1G?\ ?ډ1G?\ ?ډ1G?J!>\Uo(o?J!>\Uo(o?J!>\Uo(o?ו>`ýN o?ו>`ýN o?ו>`ýN o?J!>\Uo(o?J!>\Uo(o?J!>\Uo(o?">:w?">:w?">:w?w|L>d=oz?w|L>d=oz?w|L>d=oz?9#>,={?9#>,={?9#>,={?u>>P{?u>>P{?u>>P{?=@ >{?=@ >{?=@ >{?ת>Ap>3{?ת>Ap>3{?ת>Ap>3{?<'ӽJ>o?<'ӽJ>o?<'ӽJ>o?kD>m?kD>m?kD>m?[ӽ4#>\o?[ӽ4#>\o?[ӽ4#>\o?F?z]F?z]F?z]z[>i?z[>i?z[>i?䃾 f>p?䃾 f>p?䃾 f>p?5ѾR>Ec?5ѾR>Ec?5ѾR>Ec?Sؾ{P>a?Sؾ{P>a?Sؾ{P>a?ؾbP>ca?ؾbP>ca?ؾbP>ca?`& >\>?`& >\>?`& >\>?fP @8>iP?fP @8>iP?fP @8>iP?ȩ&wI!>>?ȩ&wI!>>?ȩ&wI!>>?Y#$>@?Y#$>@?Y#$>@?[=8?[=8?[=8?PC=?PC=?PC=?Dm&V >O>?Dm&V >O>?Dm&V >O>?=>S(?=>S(?=>S(?HnJ/;=ȶ>HnJ/;=ȶ>HnJ/;=ȶ>Z`=?Z`=?Z`=?{nB=>{nB=>{nB=>a~^ɐa~^ɐa~^ɐ~$~-%ё~-%ёb>}@^b>}@^b>}@^}|ٽ}|ٽ}|ٽ5~m*ϙ5~m*ϙ5~m*ϙ} ta>} ta>} ta>ypNypNypNk}YE>k}YE>k}YE>eUk3 0eUk3 0eUk3 0AkAH pTAkAH pTAkAH pTW=|[bB#W=|[bB#W=|[bB#'-S4'-S4'-S4m Ym Ym Y<_Io#<_Io#<_Io#X-_#qX-_#qX-_#qV3T33V3T33V3T33>A0H%{>A0H%{>A0H%{[/yq{Y[/yq{Y[/yq{Y@DG!@DG!@DG!@G!@G!@G!l,GXU5l,GXU5l,GXU5n^,U`XZa5n^,U`XZa5n^,U`XZa5zenTzenTzenTj9nSj9nSj9nSV"sYV"sYV"sYBڜsYBڜsYBڜsYݏ%~ Tmݏ%~ Tmݏ%~ TmDꗾ},lDꗾ},lDꗾ},l7}`l7}`l7}`l1x35s1x35s1x35s tv tv tvHz{wmHz{wmHz{wmR=DvvR=DvvR=Dvvn_>j>rn_>j>rn_>j>rh7=ѥydxh7=ѥydxh7=ѥydxY= ywY= ywY= ywm|sM>m|sM>m|sF>SgYPpF>SgYPpF>SgYPp~>^k~>^k~>^k ?<lOZtwh >lOZtwh >lOZtwhuKZ?*DuKZ?*DuKZ?*DwF?LwF?LwF?L Y? Y? Y?z$?Y$?z$?Y$?z$?Y$? q?`!lB q?`!lB q?`!lBDn??%Dn??%Dn??%p? Yp? Yp? YRZ?d+RZ?d+RZ?d+O#p?@ƯO#p?@Ư p?TA:үP?A= ÆP?A= ÆP?A= Æ~?<"¹~?<"¹~?<"¹~?<Z~?<Z~?<Zz?׏Qz?׏Qz?׏Q M? =[͈ M? =[͈ M? =[͈L?=L?=L?=?5M=,<?5M=,<?5M=,Wv?=py>Wv?=py>}?0==}?0==}?0==|w?Z{=n>|w?Z{=n>|w?Z{=n>0x?@@=[>0x?@@=[>0x?@@=[>Jv?݃=}>Jv?݃=}>Jv?݃=}>@i?%V>>@i?%V>>@i?%V>>Z>i?T>>Z>i?T>>Z>i?T>>`V?N!0>{?`V?N!0>{?`V?N!0>{??fV?n0>n??fV?n0>n??fV?n0>n?kLG? 5@>R?kLG? 5@>R?kLG? 5@>R?-?_>ֈ@?-?_>ֈ@?-?_>ֈ@?t G?=A>?t G?=A>?t G?=A>?G?8A>?G?8A>?G?8A>?U ?Ga>;v??U ?Ga>;v??U ?Ga>;v???Jn>S??Jn>S??Jn>S?`">n>kSt?`">n>kSt?`">n>kSt?؛?Gn>S?؛?Gn>S?؛?Gn>S?؛?Gn>S?؛?Gn>S?؛?Gn>S????dKB[m>s?dKB[m>s?dKB[m>s?av>ŭw?av>ŭw?av>ŭw?bIqIr>v?bIqIr>v?bIqIr>v?LCz>V7x?LCz>V7x?LCz>V7x?+r>v?+r>v?+r>v?+>=b>V2t?+>=b>V2t?+>=b>V2t?^\=|>\w?^\=|>\w?^\=|>\w?>~>Iu?>~>Iu?>~>Iu?W,>~>w-t?W,>~>w-t?W,>~>w-t?[l>8~>p?[l>8~>p?[l>8~>p?9@>qy>ـd?9@>qy>ـd?9@>qy>ـd????wg>[wg>[wg>[7r ?1I?7r ?1I?7r ?1I?b ? I?b ? I?b ? I?l ?I?l ?I?l ?I?>Ka?>Ka?>Ka??½7[??½7[??½7[? ?q,1V? ?q,1V? ?q,1V??Wn[??Wn[??Wn[? ?)]V? ?)]V? ?)]V??F=TL??F=TL??F=TL?:>2??>3,?:>2??>3,?:>2??>3,?0?ms>l.?0?ms>l.?0?ms>l.?p?H0D=UM?p?H0D=UM?p?H0D=UM?1?Par>3.?1?Par>3.?1?Par>3.?:6A?ِ?B>:6A?ِ?B>:6A?ِ?B>??>>??>>??>>B0?~>-?B0?~>-?B0?~>-?P-@?X>>P-@?X>>P-@?X>>0?4s>f.?0?4s>f.?0?4s>f.?Y5?1?=Y5?1?=Y5?1?=>?˶?>>?˶?>>?˶?>;>??A>;>??A>;>??A>@?O?>@?O?>@?O?>@?d?6>@?d?6>@?d?6>@?>>@?>>@?>>o?L? ⧾o?L? ⧾o?L? ⧾?lJ?V?lJ?V?lJ?V0?e8?yG=0?e8?yG=0?e8?yG=~f'? .A?<_~f'? .A?<_~f'? .A?<_0?N8?8-=0?N8?8-=0?N8?8-=h/?]:?;L?T¾I{>L?T¾I{>L?T¾>wL?G:>wL?G:>wL?G:V ?jqL?^V ?jqL?^V ?jqL?^,z?[5J?AWW,z?[5J?AWW,z?[5J?AWWS?0J?_?WS?0J?_?WS?0J?_?W=j>^H?>^H?>^H?Ā>??Ā>??Ā>??FA?L?akFA?L?akFA?L?ak$< ?gF$< ?gF$< ?gF >>? >>? >>?lA>??wlA>??wlA>??wyi>=-"?EO>=-"?EO>=-"?E< ? F< ? F< ? F/ < ?/F/ < ?/F/ < ?/Fae?Xae?Xae?Xx?%Wx?%Wx?%Wl=Zl=Zl=Z5ؾ]X>a5ؾ]X>a5ؾ]X>a1>/9c1>/9c1>/9cxWh>{cxWh>{cxWh>{c4bk>0c4bk>0c4bk>0c/>Pc/>Pc/>Pc1O>8_1O>8_1O>8_lO>alO>alO>a#>0_#>0_#>0_);1=lZ);1=lZ);1=lZ %=8V %=8V %=8V1 =Z1 =Z1 =Z+j3oQJ+j3oQJ+j3oQJ#<-B#<-B#<-B/7xK/7xK/7xKt##P{Bt##P{Bt##P{B2س+2س+2س+:qD:qD:qD 2a* 2a* 2a*a:a:a:i2|쉾|*i2|쉾|*i2|쉾|*L?FlJ,L?FlJ,L?FlJ,r5>,xr5>,xr5>,x?|?|?|@?侩@?侩@?侩>_^>_^>_^k5 2k5 2k5 2jm52Wjm52Wjm52W ozET= ozET= ozET=>Cs>Cs>CsZ 2gE4=Z 2gE4=Z 2gE4=R%B}=R%B}=R%B}=R%TB}=R%TB}=R%TB}=c>IC?c>IC?c>IC?}kM/>}kM/>}kM/>OþTJ>OþTJ>OþTJ>1r(M>1r(M>1r(M>A˾J>A˾J>A˾J>O LEg=O LEg=O LEg=HKp>HKp>HKp>BKhnp>BKhnp>BKhnp>ȵ23?ȵ23?ȵ23?"G2"6-?"G2"6-?"G2"6-?\~A-s9?\~A-s9?\~A-s9?zu.t9?zu.t9?zu.t9?^=¡SW?^=¡SW?^=¡SW?=X?=X?=X?Տ$>N4M\?Տ$>N4M\?Տ$>N4M\?A =4O?A =4O?A =4O?A>Ѧc?A>Ѧc?A>Ѧc?ذ>W$c?ذ>W$c?ذ>W$c?G=>/R)a?G=>/R)a?G=>/R)a?mG>ǾK"b?mG>ǾK"b?mG>ǾK"b?%>b\?%>b\?%>b\?=X?=X?=X?? B>ذ:? B>ذ:? B>ذ:k?񜾾Y=k?񜾾Y=k?񜾾Y=3[?IJz>3[?IJz>3[?IJz>^??\J 5>^??\J 5>^??\J 5>[>Qh#?[>Qh#?[>Qh#?r\@>r\@>r\@>#x| =[>#x| =[>#x| =[>ќuI>ќuI>ќuI>\>qu\>qu\>qu'uC5?.'uC5?.'uC5?.+ ?O+ ?O+ ?O ?f ?f ?f((?65((?65((?65㔽B%?9-B㔽B%?9-B㔽B%?9-BQQQ??????????????????????????????????????????????????????????????????????????????|?;#]P|?;#]P|?;#]P(m?=;(m?=;(m?=;>}>}>}F>w}F>w}F>w} >}l >}l >}l>l>l>l}?!K}?!K}?!K}?!K}?!K}?!KIK?IK?IK?IK?IK?IK?l?þl?þl?þ.l?þ.l?þ.l?þ]>]>]>m]?m]?m]?]?]?]?]?]?]?lP}?lP}?lP}?lP}?lP}?lP}???????????????????????????????){r;M>{r;M>{r;or׼2#<<<>#<<<>#w}?F>w}?F>w}?F>w}?F>w}?F>l?>l?>l?>l?>l?>l?>TK??TK??TK??K??K??K???TK??TK??TK??*K??*K??*K?>l?>l?>l?>l?>l?>l?R>(}?R>(}?R>(}?R>(}?R>(}?R>(}?Fw}?Fw}?Fw}?Fw}?Fw}?Fw}?þl?þl?þl?þl?þl?þl?TK?TK?TK?*K?*K?*K?TK?TK?TK?K?K?K?l>l>l>l>l>l>w}F>w}F>w}F>q<I~D=q<I~D=q<I~D=H?pH?pH?p2?K2?K2?K2?K2?K2?K>.l>.l>.l>.l>.l>.lR>(}R>(}R>(}R>(}R>(}R>(}Fw}Fw}Fw}Fw}Fw}Fw}þlþlþlþlþlþlTKTKTKKKK4>V+4>V+4>V+) Nq) Nq) NqlP}lP}lP}l>P}l>P}l>P}l>P}l>P}l>P}>l>l>l>l>l>l?IK?IK?IK}?!K}?!K}?!Kx'K?2x'K?2x'K?2 %K?\ %K?\ %K?\l?þl?þl?þl?þl?þl?þP}?lP}?lP}?lP}?lP}?lP}?lP}?l>P}?l>P}?l>P}?l>P}?l>P}?l>l?>l?>l?>l?>l?>l?>!K?}?!K?}?!K?}?!K?}?!K?}?!K?}?2?x'K?2?x'K?2?x'K??IK??IK??IK?>l?>l?>l?>l?>l?>l?l>P}?l>P}?l>P}?l>P}?l>P}?l>P}?lP}?lP}?lP}?lP}?lP}?lP}?þl?þl?þl?þl?þl?þl?}!K?}!K?}!K?\ %K?\ %K?\ %K?!K}?!K}?!K}?!K}?!K}?!K}?l>l>l>l>l>l>P}l>P}l>P}l>P}l>P}l>P}l>P}lP}lP}lP}lP}lP}llþlþlþlþlþlþ!K}!K}!K}!K}!K}!K}\ %K\ %K\ %K}!K}!K}!KþlþlþlþlþlþllP}lP}lP}????????????????????????????????????????????????????????????????????????@|G:@|G:@|G:qQp0K:qQp0K:qQp0K:MGYz[MGYz[MGYz[þ·laK:þ·laK:þ·laK:>}BQ9>}BQ9>}BQ9>UoNQ9>UoNQ9>UoNQ9v=6~.;v=6~.;v=6~.;l=\~I;l=\~I;l=\~I;}.;}.;}.;r=Ypμr=Ypμr=Ypμ 19|@K: 19|@K: 19|@K:1?"Z :1?"Z :1?"Z :8?$Zs;8?$Zs;8?$Zs;>dl# :>dl# :>dl# :?}[?}[?}[е>PoQ9е>PoQ9е>PoQ9f%?aCUf%?aCUf%?aCU?OKk?OKk?OKk?EKQ?EKQ?EKQN??J*9N??J*9N??J*9K? K? K? c??)&Ic??)&Ic??)&I]Mi?iҾǻ]Mi?iҾǻ]Mi?iҾǻze?@⾊94ze?@⾊94ze?@⾊94,l?þ:,l?þ:,l?þ:XU?%} :XU?%} :XU?%} :y?ym}r;y?ym}r;y?ym}r;x?Qm^;x?Qm^;x?Qm^;}?):}?):}?):y?a2y?a2y?a2f7t?E>#;f7t?E>#;f7t?E>#;?.=Ļ?.=Ļ?.=Ļ}?6>{k;}?6>{k;}?6>{k;s?<ۙ;s?<ۙ;s?<ۙ;?<;?<;?<;E?"?aE?"?aE?"?aEK??67EK??67EK??67o_?g>d-;o_?g>d-;o_?g>d-; l?>,; l?>,; l?>,;`?>pN`?>pN`?>pN*1t?ʲ>c*;*1t?ʲ>c*;*1t?ʲ>c*;W'?A?9W'?A?9W'?A?9?IK?Q?IK?Q?IK?Qw'?@A?-w'?@A?-w'?@A?-?:K??:K??:K?<>wp?7:<>wp?7:<>wp?7:?a\?Z+?a\?Z+?a\?Z+>Pj?Q>Pj?Q>Pj?Q?[?E:?[?E:?[?E:ul>8}?:ul>8}?:ul>8}?:P/r?ދP/r?ދP/r?ދ$>&|?~7$>&|?~7$>&|?~7^tO>z?G:^tO>z?G:^tO>z?G:E}?E}?E}?WU}?XWU}?XWU}?XK(˻?:K(˻?:K(˻?:thq?:thq?:thq?:þLJl?/þLJl?/þLJl?/̟}p?ǻ̟}p?ǻ̟}p?ǻ Z?aD; Z?aD; Z?aD;p[?D;p[?D;p[?D;K?FK?FK?FHl Y?c*Hl Y?c*Hl Y?c*JeF>`;JeF>`;JeF>`;98~<1? 98~<1? 98~<1? Ks?c: Ks?c: Ks?c:y6TK3?s;y6TK3?s;y6TK3?s;A6[3?;A6[3?;A6[3?;e>;e>;e>;eld>Y;eld>Y;eld>Y;XjK>I;XjK>I;XjK>I;(}R>H9(}R>H9(}R>H9i}B6di}B6di}B6d~ND=.:~ND=.:~ND=.:B}zlc:B}zlc:B}zlc:cKH^;cKH^;cKH^;a 1A8` ya 1A8` ya 1A8` yORX?:ORX?:ORX?:lþ-0;lþ-0;lþ-0;mS: mS: mS: mH7mH7mH7sXܡ ;sXܡ ;sXܡ ;+Kxr+Kxr+Kxr1y8c-;1y8c-;1y8c-;;"?E;"?E;"?Eo'?Po'?Po'?P*a?QL*a?QL*a?QLFA>oVFA>oVFA>oV8}7>U8}7>U8}7>U>\V>\V>\V)H>4?.)H>4?.)H>4?. Ƙ?nL Ƙ?nL Ƙ?nLrU>&0?R6rU>&0?R6rU>&0?R6;@$?+[D;@$?+[D;@$?+[DK >Y:?K >Y:?K >Y:?I>À5?\-I>À5?\-I>À5?\-`>4>?O `>4>?O `>4>?O >>?Ui>>?Ui>>?Ui>>?S>>?S>>?SF@>>?F@>>?F@>>?T2?n1?*2T2?n1?*2T2?n1?*2>\>?dB>\>?dB>\>?dB_< ?\=?ʾ_< ?\=?ʾ_< ?\=?ʾ?J;?t?J;?t?J;?tN?QP:?量N?QP:?量N?QP:?量*?4?Sx*?4?Sx*?4?Sx2?0?QI2?0?QI2?0?QI Y?`> => Y?`> => Y?`> =>g Y?sL> >>g Y?sL> >>g Y?sL> >>&#;?V=+?y# &#;?V=+?y# &#;?V=+?y# j'2?0?PGj'2?0?PGj'2?0?PG# J?5?\pλ# J?5?\pλ# J?5?\pλU?) ?Wh>U?) ?Wh>U?) ?Wh>Y?U]>F<>Y?U]>F<>Y?U]>F<>Fz\?~#>ċ>Fz\?~#>ċ>Fz\?~#>ċ>_U?"o>[ ?_U?"o>[ ?_U?"o>[ ?X? >A>X? >A>X? >A>I[?>Ђ>I[?>Ђ>I[?>Ђ>rV?v>>rV?v>>rV?v>>qV?v>0>qV?v>0>qV?v>0>cU?=p>>cU?=p>>cU?=p>>{V?:w>ݻ>{V?:w>ݻ>{V?:w>ݻ>r;?K< W.?r;?K< W.?r;?K< W.?P?]-> ?P?]-> ?P?]-> ?+*E? =Z?"?+*E? =Z?"?+*E? =Z?"?:E?VG=y'"?:E?VG=y'"?:E?VG=y'"?/0?P9?YS>0?P9?YS>0?w>^KER?w>^KER?w>^KER?A?!%TF?A?!%TF?A?!%TF?\ѯ>[۾JU?\ѯ>[۾JU?\ѯ>[۾JU??S;H??S;H??S;H??;ǓH??;ǓH??;ǓH?o>Y׾gV?o>Y׾gV?o>Y׾gV?>Vž+V?>Vž+V?>Vž+V?M>'o UQ?M>'o UQ?M>'o UQ?]H>;V?]H>;V?]H>;V?"+'F?"+'F?"+'F?=|%O?=|%O?=|%O?猻"{E?猻"{E?猻"{E?H4<.?H4<.?H4<.?>>>>>>j"y˥9>j"y˥9>j"y˥9>gSsO>gSsO>gSsO>}at,;;?}at,;;?}at,;;?`TIU5S-?`TIU5S-?`TIU5S-?爾²9`"?爾²9`"?爾²9`"?f?f>f?f>f?f>ͧѾL,?*?ͧѾL,?*?ͧѾL,?*?H᾿z?>H᾿z?>H᾿z?>Q10>N>Q10>N>Q10>N>u22;1O>>u22;1O>>u22;1O>>A"@'=A"@'=A"@'=j7($6i~>j7($6i~>j7($6i~>A&p̪=A&p̪=A&p̪=)O_\)O_\)O_\20w[K>20w[K>20w[K>٦XJDG٦XJDG٦XJDGTTJ ? TTJ ? TTJ ? XMXMXMsXRHsXRHsXRHX,GX,GX,G[pо~z[pо~z[pо~z|X{CC|X{CC|X{CC)U9pJ)U9pJ)U9pJ;OZ%Ͼ;OZ%Ͼ;OZ%Ͼ0V.0V.0V.>˾MI >˾MI >˾MI WG>UWG>UWG>UǾ->uVǾ->uVǾ->uV&0f>HL&0f>HL&0f>HLv˒>Pv˒>Pv˒>PC#>EEC#>EEC#>EEjGe>KjGe>KjGe>K^">LE^">LE^">LEn`CXuR$n`CXuR$n`CXuR$@R<Xe-@R<Xe-@R<Xe- aCk$ aCk$ aCk$<*-,<*-,<*-,j UXlj UXlj UXlaYUTo-aYUTo-aYUTo-.SUo;.SUo;.SUo;ԁtE? ԁtE? ԁtE? kz?p>kz?p>kz?p>)rz?`?)rz?`?)rz?`?$>3l?r>$>3l?r>$>3l?r>>_>P?>_>P?>_>P?+>UUU=J|x>=J|x> =6h= =6h= =6h=83e ξ83e ξ83e ξ+9eξ+9eξ+9eξW(mzR`W(mzR`W(mzR`BtFoCBtFoCBtFoCl!7l!7l!79;!}ga9;!}ga9;!}ga_&վS_&վS_&վSԾfԾfԾf???vEX;Hmwxa>vEX;Hmwxa>vEX;Hmwxa>֣)T ?֣)T ?֣)T ?T;K`?T;K`?T;K`?;EX;+l>;EX;+l>;EX;+l>4"wo޳>4"wo޳>4"wo޳>R;& _xG>R;& _xG>R;& _xG>Ҽx~g=Ҽx~g=Ҽx~g=w}F>w}F>w}F>}8}8}8(}R(}R(}R.lþ.lþ.lþ(}R>(}R>(}R>(}R>(}R>(}>l>l>l>l>l>l?K?K?K?K?K?KH?pH?pH?p 8oK? 8oK? 8oK?Gw}?F>w}?F>w}?F>w}?F>w}?F>l?>l?>l?>l?>l?>l?>K?2?K?2?K?2?K??K??K???TK??TK??TK??K??K??K?>.l?>.l?>.l?>l?>l?>l?R>(}?R>(}?R>(}?R>(}?R>(}?R>(}?Fw}?Fw}?Fw}?Fw}?Fw}?Fw}?þl?þl?þl?þl?þl?þl?K?K?K?K?K?K?FK'"?FK'"?FK'"?Fž0I?Fž0I?Fž0I??????????l>P}?l>P}?l>P}?lP}?lP}?lP}?lP}?lP}?lP}?þl?þl?þl?þl?þl?þl?___C 5<C 5<C 5<" ] ?xo?" ] ?xo?" ] ?xo?!K}?!K}?!K}?l>l>l>l>l>l>P}l>P}l>P}l>P}l>P}l>P}l>P}lP}lP}lP}lP}lP}llþlþlþlþlþlþ!K}!K}!K}IKIKIK\ %K\ %K\ %K}!K}!K}!KþlþlþlþlþlþllP}lP}lP}lP}lP}lP}l>P}l>P}l>P}l>P}l>P}l>P}>l>l>l>l>l>l?IK?IK?IK}?!K}?!K}?!K!K?}!K?}!K?}!K?}!K?}!K?}l?þl?þl?þl?þl?þl?þP}?lP}?lP}?lP}?lP}?lP}?lP}?l>P}?l>P}?l>P}?l>P}?l>P}?l>l?>l?>l?>l?>l?>l?>!K?}?!K?}?!K?}?!K?}?!K?}?!K?}?}?!K?}?!K?}?!K?}?!K?}?!K?}?!K?>l?>l?>l?>l?>l?>l?l>P}?l>P}?l>P}?_?TW޺_?TW޺_?TW޺F?(GqF?(GqF?(Gq+?-=+?-=+?-= ?YwO/ ?YwO/ ?YwO/?epN?epN?epN?A;v`?A;v`?A;v`?,:b?,:b?,:b?;ZS?;ZS?;ZS?5NMvOÊ>NMvOÊ>NMvOOH>3ÏOOH>3ÏOOH>3ÏOr>LjLjLj[G>[G>[5j>37b5j>37b5j>37b>Ӯc>Ӯc>ӮcZ6>,~mcZ6>,~mcZ6>,~mc>m,b>m,b>m,bC>+e\C>+e\C>+e\<:7+<:7+<:7+ /rr[O>/rr[O>/rr[k= l{Uk= l{Uk= l{U藪=~ OrU藪=~ OrU藪=~ OrU 47Kw=l 47Kw=l 47Kw=l߾LrӾ߾LrӾ߾LrӾ龸=M"ž龸=M"ž龸=M"žC߾Ls|ҾC߾Ls|ҾC߾Ls|ҾV:36-V:36-V:36-lh~E{ lh~E{ lh~E{ H~uE H~uE H~uE 6O/b >6O/b >6O/b >q6/2I >q6/2I >q6/2I >@̡>@̡>@̡>IE'/|AO/IE'/|AO/IE'/|AO/2'rAw\12'rAw\12'rAw\12'rAw\12'rAw\12'rAw\1='́A0='́A0='́A0>'AS/>'AS/>'AS/eJS_eJS_eJS_՘?괪>՘?괪>՘?괪>U?Ŕ>U?Ŕ>U?Ŕ>m5?{JĢ>m5?{JĢ>m5?{JĢ>=Ͼ ?=Ͼ ?=Ͼ ?k?& >k?& >k?& >B > ̾ ?B > ̾ ?B > ̾ ?Q)8'z?Q)8'z?Q)8'z?"~=bо& ?"~=bо& ?"~=bо& ?7,b?7,b?7,b?G aƽF?G aƽF?G aƽF?u)2":?u)2":?u)2":?ۣ yǽE?ۣ yǽE?ۣ yǽE?2*a.,:?2*a.,:?2*a.,:?Qk]?+m>k]?+m>k]?e B2>F^?e B2>F^?e B2>F^?4(BO>e^?4(BO>e^?4(BO>e^?ý>;!c?ý>;!c?ý>;!c?kc>Kc?kc>Kc?kc>Kc?:>C?c?:>C?c?:>C?c?at$>^?at$>^?at$>^?_vľp>Pc?_vľp>Pc?_vľp>Pc?bO>B_?bO>B_?bO>B_?i{6 ?X1V?i{6 ?X1V?i{6 ?X1V?*j ?T?*j ?T?*j ?T?£=&?[A?£=&?[A?£=&?[A?=m-?&:?=m-?&:?=m-?&:?Ҁ=&?(B?Ҁ=&?(B?Ҁ=&?(B?=r+?;?=r+?;?=r+?;?y>,I?ޚ>y>,I?ޚ>y>,I?ޚ>q>Q@??q>Q@??q>Q@??>gB?<?>gB?<?>gB?<?& >@??& >@??& >@??O?WK?}>O?WK?}>O?WK?}>O?wlL?>O?wlL?>O?wlL?>aϕ>zC?=Z?aϕ>zC?=Z?aϕ>zC?=Z?>90K?>>90K?>>90K?>[>(K?>[>(K?>[>(K?>]5?к2?Wӽ]5?к2?Wӽ]5?к2?Wӽc?G?c>c?G?c>c?G?c>?VL?(>?VL?(>?VL?(>?F?;T>?F?;T>?F?;T>t5?2?zRɽt5?2?zRɽt5?2?zRɽ-?;?9P-?;?9P-?;?9PS-?;?QS-?;?QS-?;?Q @?Q>z @?Q>z @?Q>zB$.?|;? >.?|;? >l@?>#yl@?>#yl@?>#y뾷??m>??m>??m>O?A? ?[O?A? ?[O?A? ?[^;?c>o^;?c>o^;?c>o@?Y>@?Y>@?Y>0$?`y>ӺA0$?`y>ӺA0$?`y>ӺA.?SX>A3.?SX>A3.?SX>A3;?Ҿ>h;?Ҿ>h;?Ҿ>hU?xؽ[U?xؽ[U?xؽ[n$?=An$?=An$?=AUG>~]UG>~]UG>~]cL$?=AcL$?=AcL$?=A?o-#j>o-#j>o-Xg7<>O9Xg7<>O9Xg7<>O9Ƅl3>9Ƅl3>9Ƅl3>9f]>f]>f]>)K?u)K?u)K?u!:]K/?;!:]K/?;!:]K/?;::/?z;::/?z;::/?z;K? >K? >K? >0X?3<0X?3<0X?3y?'.a>y?'.a>y?'>8|?8,:>8|?8,:>8|?8,:El>}?yr;El>}?yr;El>}?yr;T_?W޺T_?W޺T_?W޺I?޺I?޺I?޺?HK?VI?HK?VI?HK?VI\?K?Q\?K?Q\?K?Q%?C?*;%?C?*;%?C?*;T?\?|T?\?|T?\?|>Pj?8>Pj?8>Pj?8>k?k>k?k>k?k>r^? v>>r^? v>>r^? v>h{^? G>,h{^? G>,h{^? G>,K?z?;K?z?;K?z?;ds?>ds?>dh{^? G>,h{^? G>,h{^? G>,l?9>k;l?9>k;l?9>k;~}?m>>K~}?m>>K~}?m>>K5_}?U>$/5_}?U>$/5_}?U>$/,w?f>D=,w?f>D=,w?f>D=`l>K8?a?>_7?h?~>7?t?h}?w d*;h}?w d*;h}?w d*;8}?ka ;8}?ka ;8}?ka ;}?܂I}?܂I}?܂I6]?o 6]?o 6]?o g']?!g']?!g']?! l?þ,; l?þ,; l?þ,;"n?]軾"n?]軾"n?]軾=K?.=K?.=K?.RB?q%C ;RB?q%C ;RB?q%C ;?V9S7?V9S7?V9S7]0?d9]0?d9]0?d98?K;8?K;8?K;0?K;0?K;0?K;{>r}kH{>r}kH{>r}kH>~lI:>~lI:>~lI:ǻǻǻ(˻(˻(˻%>}Z;%>}Z;%>}Z;Zb>yҠZb>yҠZb>yҠ2b>zy2b>zy2b>zyþlHþlHþlHuAT+ Q 2}B&>Q 2}B&>Q@}yl>~:@}yl>~:@}yl>~:i~UҽCei~UҽCei~UҽCe>|>b>|>b>|>b,>m=:g,>m=:g,>m=:g>F?M>F?M>F?M->6j?Q~->6j?Q~->6j?Q~`=v?mx`=v?mx`=v?mx“ˠz?>>“ˠz?>>“ˠz?>>佯6v?>佯6v?>佯6v?> S-^?k> S-^?k> S-^?k>pXZR?_?pXZR?_?pXZR?_?ⅾmE?Y?ⅾmE?Y?ⅾmE?Y?8 ̾k)_?8 ̾k)_?8 ̾k)_?@X.P?@X.P?@X.P?s9e{0>s9e{0>s9e{0>s9>s9>s9>+1̽xX^>+1̽xX^>+1̽xX^>0<{0<{0<{Ku1>ix[Ku1>ix[Ku1>ix[>O:]@>O:]@>O:]@F>chF>chF>ch????????????????????????????????????????????????????????????????????????|~O9ֽ|~O9ֽ|~O9ֽ|~O9ֽ|~O9ֽ|~O9ֽ+~u=+~u=+~u=+~u=+~u=+~u=????????????????????????5?A4Z5?A4Z5?A4Z5?A4Z5?A4Z5?A4Z??????5?55?55?55?55?55?5??????5?55?55?55?55?55?55?A4Z=5?A4Z=5?A4Z=! 5?4EW=! 5?4EW=! 5?4EW=??????5?5?5?5?5?5?5?5?5?5?5?5?5;55;55;5555555p!F?p!F?p!F?p!F?p!F?p!F?5555555555555A4Z5A4Z5A4Z5A4Z5A4Z5A4Z! 54EW=! 54EW=! 54EW=5A4Z=5A4Z=5A4Z=555555555555??????55?55?55?55?55?55???????????????????5?IF2-}=5?IF2-}=5?IF2-}=5?B2=5?B2=5?B2=5?55?55?55?55?55?5|[1>|[1>|[1>|[1>|[1>|[1>55?55?55?55?55?55?t5zz?t5zz?t5zz?5))?5))?5))?55?55?55?55?55?55?5B2=5B2=5B2=5IF2-}=5IF2-}=5IF2-}=55?55?55?55?55?55?5555555555555B25B25B25IF2-}5IF2-}5IF2-})5?))5?))5?))5?))5?))5?)5|ϾF5|ϾF5|ϾF5ϾzH5ϾzH5ϾzH555555555555)5?)?)5?)?)5?)?)5?)?)5?)?)5?)?5?5?5?5?5?5?5?5?5?5?5?5??Ѹ?Ѹ?Ѹ?8?8?855?55?55?55?55?55?)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?|[1|[1|[1|[1|[1|[15?55?55?55?55?55?5QQQQQQ5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?))?5?))?5?))?t5?zz?t5?zz?t5?zz? 5??2} 5??2} 5??2}5?B25?B25?B2)?5?))?5?))?5?))?5?))?5?))?5?)5?ϾzH5?ϾzH5?ϾzH5?|ϾF5?|ϾF5?|ϾF5?55?55?55?55?55?5????????????????????????????????????????Ѹ?Ѹ?Ѹ???Q?ѸQ?ѸQ?Ѹ5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?پ@v5?پ@v5?پ@vV4?پ V4?پ V4?پ z?t5?zz?t5?zz?t5?z)?5?))?5?))?5?)5?dA3'ɽ5?dA3'ɽ5?dA3'ɽ5?dA3'ɽ5?dA3'ɽ5?dA3'ɽ5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?dA3'=5?dA3'=5?dA3'=5?$>3=5?$>3=5?$>3=t5?zz?t5?zz?t5?zz?5?))?5?))?5?))?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5? auL auL auL auL auL auL5?55?55?55?55?55?5}'}'}'}'}'}'}'>}'>}'>}'>}'>}'>)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?55?55?55?55?55?55??Ѹ?Ѹ?Ѹ???5?5?5?5?5?5?5?5?5?5?5?5?)5?)?)5?)?)5?)?)5?)?)5?)?)5?)?555555555555 5cپt 5cپt 5cپtz 5<پz 5<پz 5<پ)5?))5?))5?))5?))5?))5?)5dA3'ɽ5dA3'ɽ5dA3'ɽY5D3ɽY5D3ɽY5D3ɽ55?55?55?55?55?55?5555555555555$>3=5$>3=5$>3=5dA3'=5dA3'=5dA3'=55?55?55?55?55?55?5))?5))?5))?5))?5))?5))?55?55?55?55?55?55?5?55?55?55?55?55?5B4?tϾSB4?tϾSB4?tϾSU4?!ϾSU4?!ϾSU4?!ϾS)?5?))?5?))?5?))?5?))?5?))?5?)5?B25?B25?B25?IF2-}5?IF2-}5?IF2-}5?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?IF2-}=5?IF2-}=5?IF2-}=5?B2=5?B2=5?B2=P 5?i?P 5?i?P 5?i?5?6?5?6?5?6?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?QQQkɩQkɩQkɩQ5?55?55?55?55?55?5|[1|[1|[1|[1|[1|[1|1>|1>|1>|1>|1>|1>)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?)?5?)?45?45?45?45?45?45?5?5?5?5?5?5?5?5?5?5?5?5?)5?)?)5?)?)5?)?)5?)?)5?)?)5?)?55555555555585oϾfE85oϾfE85oϾfEj5iϾKKj5iϾKKj5iϾKK)5?))5?))5?))5?))5?))5?)5B25B25B2 5?2} 5?2} 5?2}55555555555555?55?55?55?55?55?5IF2-}=5IF2-}=5IF2-}=5B2=5B2=5B2=55?55?55?55?55?55?Q 5 ?Q 5 ?Q 5 ? 5}? 5}? 5}?55?55?55?55?55?55??????????????????????????????????????????????????????????w}F>w}F>w}F>P}l>P}l>P}l>}?4}?4}?4}?4}?4}?4J >J >Q^оz >Q^оz >Q?J ѾJ >Q?i?i??^>z >Q????????????ϑ=Yϑ=Yϑ=Yϑ=Yϑ=Yϑ=Y^?>^?>^?>^?>^?>^?>0]7J ѾJ >Q?z Ѿ^>Q?Ѿ>Qz ѾQ^о??????888~Aq=~Aq=~Aq=n~R=n~R=n~R=v%x>v%x>v%x>vܓ>vܓ>vܓ>);g>);g>);g>V2g >V2g >V2g >?8?8?8?Ѹ?Ѹ?ѸR[L ?R[L ?R[L ?R[L ?R[L ?R[L ??8?8?8?Ѹ?Ѹ?Ѹ?????????F[.?F[.?F[.?N[J ?QN[J ?QN[J ?QѾQ>RѸd>J ѾJ >Q?J >QJ >.d.>J ѾQJ >^оQz >^оQz >^>Qz >???????????????????????????AR>gl> ?? ? ?? ?^оz >Q?d>7>v?}K77>v?}K77>v?}K7!a=MvGu>!a=MvGu>!a=MvGu>g?}E?g?}E?g?}E?a?y@?a?y@?a?y@?}?y}?y}?y b?IپhM b?IپhM b?IپhM+T?͌B+T?͌B+T?͌BɏHɏHɏHH?H?H?j5=Sɾj5=Sɾj5=Sɾ??? t>?YG t>?YG t>?YGb>?ZGb>?ZGb>?ZG[o>Kf(q?7?[o>Kf(q?7?[o>Kf(q?7?[o>Kf(q?7[o>Kf(q?7[o>Kf(q?7|?"n#Q|?"n#Q|?"n#Q7ž>[7ž>[7ž>[>K>K>KzTI^?sy羱zTI^?sy羱zTI^?sysTsTsT“ˠz?>>“ˠz?>>“ˠz?>>->6j?Q~->6j?Q~->6j?Q~5Ѽ>L>5Ѽ>L>5Ѽ>L>z>F??z>F??z>F??>3?%>3?%>3?%'g?A)=Y>g?A)=Y>?-d;?Rv`<?ڵ?{pG?y>?{pG?y>?{pG?g?ʾH!>g?ʾH!>g?ʾH!>egC?egC?egC?T^?T^?T^?%S^?%S^?%S^?չɽx4^չɽx4^չɽx4^+T>]u=>+T>]u=>+T>]u=> &>=E? &>=E? &>=E?">sEǴ?">sEǴ?">sEǴ?.2B<.2B<.2B<猻D<.D<.D<#}L `&>L `&>CL`>CL`>CL`>>|d?5Ѿ>|d?5Ѿ>d?@Ѿ\>3d?5&Ѿ\>3d?5&Ѿ\>3d?5&Ѿ۵s?ޣ߼>۵s?ޣ߼>۵s?ޣ߼>s?P޼>s?P޼>s?P޼>@r?:6m@r?#9Bm@r?#9BmBr?p:yaBr?p:yaBr?p:ya>Pk>Pk>Pk>>>X>?X>?X>?r>ew?r>ew?r>ew?R=? H?R=? H?R=? H?R=? H?R=? H?R=? H? y?W) y?W) y?W)y?)y?)y?)My?ڭPͽzMy?PͽzMy?PͽOy?PͽOy?PͽOy?PͽI>?0H?I>?0H?I>?0H?I>?0H?I>?0H?I>?0H?p?f:0p?f:0Ip?b:,np?ke:yϿs?>Ͽs?>s?8 q>s?8 q>s?8 q>64%?64%?64%?4%?4%?4%?S\n?^S\n?^S\n?^JYn?pJYn?pJYn?p}=~=}=~=}=~=}=~=}=~=}=~=IdO ?Iy>dO ?Iy>dO ?y>uO?y>uO?y>uO?@>=g@>=g@>=g5>=g5>=g5>=gi3>۽g?i3>۽g?i3>۽g?i3>۽g?i3>۽g?i3>۽g?->h-f->h-f->h-f->h-f->h-f->h-f>] Z?>] Z?>] Z?>] Z?>] Z?>] Z?>q$ ]'>"]>q$ ]>.]>.]>.]e>_þpJWe>_þpJWZ>aþLWX>lþsJWX>lþsJWX>lþsJW>ew>,R>>*R>>*R>ew>,R>ew>,R>ew>,R֜>* D֜>* DV>, CD֜>* D֜>* D֜>* D>H+A?>H+A?>H+A?>H+A?>H+A?>H+A?i>͆ C?i>͆ C?i>͆ C?i>͆ C?> sC?i>͆ C?>[Bf?>[Bf?>[Bf?>8VBm?>8VBm?>8VBm? .>: .>: .>:9>:9>:9>:%I>a?O>%I>a?O>%I>a?O>I>ia?>I>ia?>YI>a?> <>Ze(; <>Ze(;a5<>Fe';4<>Be ;4<>Be ;4<>Be ;*8>*g?>*8>*g?>*8>*g?>8>$g?|>8>$g?|>8>$g?|> 5b>Y? 5b>Y? 5b>Y?0b>WY?0b>WY?0b>WY?=o|?ief=|?Qief=|?Qi=|?=|?=|?~;ű<~;ű<~;ű<7;? Q<7;? Q<7;? Q<Ǯt?̇Ǯt?̇Ǯt?̇Ǯt?̇Ǯt?̇yt?{n%Ss?Z>n%Ss?Z>n%Ss?Z>oNs?}v>oNs?}v>oNs?}v>9ӏe/>9ӏe/>9ӏe/>9ӏe/>9ӏe/>9ӏe/>:R ^羫R#^!羫R#^!:R ^:R ^:R ^¾gWV?$>¾gWV?$>¾gWV?$>gV?ͺ>gV?ͺ>gV?ͺ>:9me>:9me>:9me>&9̉e>&9̉e>&9̉e>Mj9? Mj9? Mj9? 1Pg9? 1Pg9? 1Pg9? $xD<$xD<$xDzCi?ž_>Ei?fž >zCi?ž_>zCi?ž_>zCi?ž_>+`i?ž+`i?ž+`i?žndi?ž|ndi?ž|ndi?ž|f?QP=>f?QP=>f?QP=>f?QP=>f?QP=>f?QP=>rf? a=w>rf? a=w>rf? a=w>mrf?=ew>mrf?=ew>mrf?=ew>f?QP=پf?QP=پf?QP=پf?QP=پf?QP=پf?QP=پmrf?=ewھmrf?=ewھmrf?=ewھrf? a=wھrf? a=wھrf? a=wھ7=?p>p?7=?p>p?7=?p>p?=3=?y>i ?=3=?y>i ?=3=?y>i ?3"?# 3"?# 3"?# 3"?# 3"?# 3"?# 3"?# >3"?# >3"?# >3"?# >3"?# >3"?# > ~V? ~V? ~V?bR?bR?bR?7=?p>p7=?p>p7=?p>p7=?p>p7=?p>p7=?p>pbRbRbR ~V ~V ~V>C>b>?9>>z>?9>>z>?> >8>?> >8>?> >8>?q. ?[>;7q. ?[>;7q. ?[>;71 ?_> 71 ?_> 71 ?_> 7p>~?qG?p>~?qG?p>~?qG?p>~?qG?p>~?qG?p>~?qG?=%B=%B=%BG=u %mCG=u %mCG=u %mC= %C?=%B?=%B?= %C?= %C?= %C?>??E>??E>??E>??E>??E>??E=ج#?.D=ج#?.D=ج#?.Dq ?#?D#?JD#?JD0սu^&?q@?0սu^&?q@?0սu^&?q@?0սu^&?q@?0սu^&?q@?0սu^&?q@?--(?61--(?61--(?610(?310(?310(?314}?4}?4}?4}?4}?4}? ľ}l? ľ}l? ľ}l? ľ}l? ľ}l? ľ}l?sK?sK?sK?sK?sK?sK?Y(a&Y(a&Y(a&e&ak̞e&ak̞e&ak̞e&ak̞>e&ak̞>e&ak̞>Y(a&>Y(a&>Y(a&>Q2N?Q2N?Q2N?Q2N?Q2N?Q2N?!K}?!K}?!K}?IK?IK?IK?QV>>QV>>QV>>QV>>QV>>QV>>}l >}l >}l >}l >}l >}l >nfe:>6>nfe:>6>nfe:>6>he/>6>he/>6>he/>6>dlu>==dlu>==dlu>==nl7z>rC=nl7z>rC=nl7z>rC=aT>fqR>aT>fqR>aT>fqR>ao^>:R>ao^>:R>ao^>:R>_ehxy>_ehxy>_ehxy>_ehxy>_ehxy>_ehxy>2Cm>_=Am>Q=Am>Q=[@m>9=[@m>9=[@m>9=kT>kT>kT>kMY>kMY>kMY>y`;>y`;>y`;>9y ;>9y ;>9y ;>ºs<˛ºs<˛ºs<˛Xs75h>Qy56>5h>Qy56>5h>vy6>h>vy6>h>vy6>h>;y5>v^yX5> ^yX5> y5>y5>y5>vv=>vv=>vv=>v=ٍ>v&=>v&=>oy K>z=oy K>z=oy K>z=oy! K>=oy! K>=oy! K>=Oc\>aGOc\>aGOc\>aGOc\>aGOc\>aGOc\>aG} P>N} P>N} P>N#P>$C#P>$C#P>$CN2a?~>N2a?~>N2a?~>N2a?~>N2a?~>N2a?~>@AR͊@AR͊@AR͊:A͊:A͊:A͊:A͊?:A͊?:A͊?]?Avي?]?Avي?]?Avي?A&c?sA&c?sA&c?s{?&?{?&?{?&?0(?31?0(?31?0(?31?--(?61?--(?61?--(?61?{H?̉\H?{H?̉\H?̉\H?̉\H?̉\H̉\H̉\H̉\H̉\H̉\Hu>$?u>$?u>$?u>$?u>$?u>$?u>$u>$u>$u>$u>$u>$ :? >c:? >c:? >c:? >c:? >c:? >a?WپN>a?WپN>a?WپN>a?KپN"N>a?KپN"N>a?KپN"N>M?1?| M?1?| M?1?| M?1?M?1?M?1?BԾ=gBԾ=gBԾ=g8Ծv=g8Ծv=g8Ծv=g\˾Ԗ>^?\˾Ԗ>^?\˾Ԗ>^?]˾Ȗ>^?]˾Ȗ>^?\˾Ԗ>^?2ƾ|X2ƾ|X2ƾ|XXƾwXXƾwXXƾwX`?f=?`?f=?`?f=?m]?d=?m]?d=?m]?d=?1K-(+?1K-(+?1K-(+?// O-.+?// O-.+?// O-.+?E~.B? ?E~.B? ?E~.B? ?W"B?˻?W"B?˻?W"B?˻?nZuUPnZuUPnZuUPWuPnZuUPWuPmV]}zmV]}zmV]}zWWB}WWB}WWB}o{T=}z?9?>{T=}z?9?>{T=}z?9?>{T=}z?9?>{T=}z?9?>k>0U?bk>0U?bk>0U?bƺk>}3U?ƺk>}3U?ƺk>}3U?D>GDuD>GDuD>GDu>JD r>JD rD>GDu#5>,.?*?#5>,.?*?#5>,.?*?7>1.?*?7>1.?*?7>1.?*?>@>>@>>@>P>9T>P>9T>P>9T>DU>?UE?DU>?UE?DU>?UE?Q>?WE?Q>?WE?Q>?WE?{>uڪ>Ƅ[{>uڪ>Ƅ[{>uڪ>Ƅ[}>>[}>>[}>>[>Xnvb?>Xnvb?>Xnvb?>%{nyb?>%{nyb?>%{nyb?u>}=g?u>}=g?u>}=g?bf>`G=@g?bf>`G=@g?bf>`G=@g?|?G%E|?G%E|?G%E|?G%E|?G%E|?G%E:?i Vо:?i Vо:?i Vо:?i Vо:?i Vо:?i VоvqW;g>vqW;g>vqW;g>vqW;g>vqW;g>vqW;g>lpoΊMlpoΊMlpoΊM񴾗ro崾ro崾ro崾?ff<>?ff<>?ff<>ºf2=>ºf2=>ºf2=>?ff<پ?ff<پ?ff<پ?ff<پ?ff<پ?ff<پ ߾Й8? ߾Й8? ߾Й8?ű ߾E8?ű ߾E8?ű ߾E8?ű ߾E8ű ߾E8ű ߾E8 ߾Й8 ߾Й8 ߾Й8.E?.E?.E?"!=E? E? E?.E.E.E.E.E.Eu>?Iu>?Iu>?I\>?I\>?I\>?Iw>&(??w>&(??>&+??w>&(??w>&(??w>&(??w>&(?>&+?>&+?>&+?>&+?w>&(?R }>](6*6?R }>](6*6?R }>](6*6?R }>](6*6?R }>](6*6?R }>](6*6?R }>](6*6R }>](6*6R }>](6*6R }>](6*6R }>](6*6R }>](6*6i?Lľ^ i?Lľ^ i?Lľ^ hi?ľ hi?ľ hi?ľ m?&Fνm?&Fνm?:νfm?+;νfm?+;νfm?+;ν_y?G{C=_y?G{C=_y?G{C=_y?G{C=_y?G{C=_y?G{C=~y?$n>~y?$n>~y?$n>}y?$>}y?$>}y?$>:̾Q>#Z_:̾Q>#Z_:̾Q>#Z_:̾Q>#Z_:̾Q>#Z_:̾Q>#Z_ž>Wyž}>Wž>Wž>Wž>Wž>W >}M? >}M? >}M?)>~M?)>~M?)>~M?~ؽ|w?:fn>~ؽ|w?:fn>~ؽ|w?:fn>3ؽf{w?n>3ؽf{w?n>3ؽf{w?n>+=!uf>+=!uf>+=!uf>=u>=u>=u>5 >Nq7J >(qF5 >Nq7d >qᘾd >qᘾd >qᘾo=Ѫy?Oo=Ѫy?Oo=Ѫy?O״=Vy?O״=Vy?O=y?O >qƘ> >qƘ> >qƘ>Z >q`>Z >q`> >q׺>y>o䣾y>o䣾y>o䣾]>osգ]>osգ]>osգ>5?#?>5?#?>5?#??>6?#??>6?#??>6?#?ڬ>;?+<ڬ>;?+<ڬ>;?+???<6> >I_?6> >I_?6> >I_?6> >I_?6> >I_?6> >I_?m>>^?m>>^?m>>^?k>>F^?k>>F^?k>>F^?K a"??K a"??K a"??5?>5?>5?>F#??F#??F#??Z? > WZ? > WZ? > WZ? > WZ? > WZ? > W;?[?+?Y >;?[?+?Y >;?[?+?Y >5*?e4?wv>5*?e4?wv>5*?e4?wv>J??W^J??W^J??W^>#.?>#.?>#.?#?#?#?#?#?#?oX}>}>}>}>}>~~~~XD~XD~XDnnnn~n~n~ɩQkɩQkɩQkɩQkɩQkɩQk'TA'TA'TA'TA'TA'TAN A3dN A3dN A3dN A3dN A3dN A3dFe$yFe$yFe$y-ey-ey-eyKI Q9KI Q9KI Q9kMI9kMI9kMI9XD=~XD=~XD=~=~ 8=~=~>nѸ>n>n>nQ9>n>nk?ɩQQ?Q?Qk?ɩQ,I9k?ɩQk?ɩQTA?'ѹTA?'TA?'TA?'N:TA?'TA?'0d?G0d?0d?=3d?J 辐7:A3d?N A3d?N y?-eQy?-ey?-ey?Fek:$y?Fe$y?Fe?n?n?n?n?n?n}?>B8}?>B8}?>B8$y?Fe>$y?Fe>$y?Fe>y?-e>y?-e>y?-e>A3d?N >A3d?N >A3d?N >A3d?N >A3d?N >A3d?N >WA?'?WA?'?WA?'?TA?'?TA?'?TA?'?k?ɩQ?k?ɩQ?k?ɩQ??Q??Q??Q?>n?>n?>n?>n?>n?>n?=~?=~?=~?XD=~?XD=~?XD=~?????????????????????????????????????55?55?55?55?55?55?i?i?i?i?i?i?ii?ii?ii?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?55555555555555?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5??i?i??i?i??i?i?5?55?55?55?55?55?5555555555555?ii??ii??ii?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?5555555;55;55;55?55?55?55?55?55?55?55?55?55?55?55?5 ??  ??  ?? 5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55? ?  ?  ? 5?55?55?55?55?55?555?55?55?55?55?55?555555555555555555555555i?ii?ii?iiiiiii555555555555??????????????????????????????55?55?55?55?55?55?i?i?i?i?i?i?ii?ii?ii?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?55555555555555?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5? ? ?? ? ?? ? ??5?55?55?55?55?55?5555555555555?ii??ii??ii?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?5555555555555?55?55?55?55?55?55?55?55?55?55?55?5?i?i?i?i?i?i5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55? ?  ?  ? 5?55?55?55?55?55?555?55?55?55?55?55?555555555555555555555555  ?  ?  ?iiiiii555555555555??????R[L ?R[L ?R[L ?R[L ?R[L ?R[L ???????R[L ?R[L ?R[L ?R[L ?R[L ?R[L ?[[[u4[NѸu4[NѸu4[NѸu4[u4[u4[u4[u4[u4[[k8[k8[k8u4[u4[u4[?e[??e[??e[?u?4[?u?4[?u?4[?L ?R[?L ?R[?L ?R[?L ?R[?L ?R[?L ?R[?L ?R[?L ?R[?L ?R[?u?4[?u?4[?u?4[?DY>"?!4DY>"?!4DY>"?!4hM>?5hM>?5hM>?5yL> 5yL> 5yL> 5Kx/>>5Kx/>>5Kx/>>5$J? 5M> $J? 5M> $J? 5M> Ä?J5Ä?J5Ä?J5?M5?M5?M5DY"!4DY"!4DY"!4Ly 5Ly 5Ly 5-x?2{>-x?2{>-x?2{>-x?2{>-x?2{>-x?2{> 5M>$J  5M>$J  5M>$J -J?M>p?-J?M>p?-J?M>p?Ä?J5?Ä?J5?Ä?J5??M5??M5??M5?#d{>c*x#d{>c*x#d{>c*x#d{>c*x#d{>c*x#d{>c*xDY>"?!4?DY>"?!4?DY>"?!4?DY>"?!4?DY>"?!4?DY>"?!4?8M>#J?8M>#J?8M>#J?yL> 5?yL> 5?yL> 5?vI>D5?vI>D5?vI>D5?hM5?hM5?hM5?DY"!4?DY"!4?DY"!4?4[u?4[u?4[u?4[u?4[u?4[u???????4[u?4[u?4[u?4[u?4[u?4[u???????- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?- ?[?e[e[e[u4[u4[u4[L R[L R[L R[L R[L R[L R[L R[L R[L R[u4[u4[u4[ J}- 5? J}- 5? J}- 5?JÄ5?JÄ5?JÄ5?"DY>!4?"DY>!4?"DY>!4?} J>- 5?} J>- 5?} J>- 5?hjM>J*?qmM> J?qmM> J??hM5??hM5??hM5?"?DY!4?"?DY!4?"?DY!4? J>}?- 5? J>}?- 5? J>}?- 5?hM>?5?hM>?5?hM>?5?g{>D'xg{>D'xg{>D'xg{>D'xg{>D'xg{>D'x.J?M>?.J?M>?.J?M>?hjM>J*hjM>J*hjM>J*?hM5?hM5?hM5Q?Uh5Q?Uh5Q?Uh5+x?K{>+x?K{>+x?K{>-x?2{>-x?2{>-x?2{>UQh5UQh5UQh5UQh5UQh5UQh58J?M>8J?M>8J?M>QU>h5QU>h5QU>h5hM>5hM>5hM>5 J>}?- 5 J>}?- 5 J>}?- 5hM>?5hM>?5X>.?854[u?4[u?4[u?4[u?4[u?4[u?4[?u4[?u4[?u4[?u4[?u4[?u[?- [?- [?- [?- [?- [?- [?[?[?[?[?[?????????????  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~---------------------------------------------------------------------------------------">thq…">thqף">Ilף">Ilף">Il…">thq…Mb>thq…Mb>thqףMb>IlףMb>IlףMb>Il…Mb>thq…Mb>thqף">thqף">Ilף">IlףMb>IlףMb>thqףMb>Il…Mb>Ilף">Ilף">Ilף">Il…Mb>Il…Mb>thq…">thq…">thqף">thqףMb>thqףMb>thq…"thq…Ebthq…EbthqףEbthqף"thqף"thq…"Il…"IlףEbIlףEbIlףEbIl…"Il…"thqףEbthqףEbIlףEbIlף"Ilף"thqף"thq…"thqף"Ilף"Ilף"Il…"thq…Ebthq…EbthqףEbIlףEbIlףEbIl…Ebthq…?v>thqwTQA7>thqwTQA7>thq):JQA7>thq):J?v>thq):J?v>thqwT>v>IlwT>v>Il):JPA7>Il):JPA7>Il):JPA7>IlwT>v>IlwT?v>thq):JQA7>thq):JPA7>Il):JPA7>Il):J>v>Il):J?v>thq):J?v>thqwT?v>thq):J>v>Il):J>v>Il):J>v>IlwT?v>thqwTQA7>thqwTQA7>thq):JPA7>Il):JPA7>Il):JPA7>IlwTQA7>thqwTvthqzTvthqp=JvIlp=JvIlp=JvIlzTvthqzTK7thqzTK7thqp=JK7Ilp=JK7Ilp=JK7IlzTK7thqzTK7thqp=Jvthqp=JvIlp=JvIlp=JK7Ilp=JK7thqp=JK7IlzTK7Ilp=JvIlp=JvIlp=JvIlzTK7IlzTK7thqzTvthqzTvthqp=Jvthqp=JK7thqp=JK7thqzT[PScxI"1ScxI"1hmxI"1hmxI[PhmxI[PScxI[PScZD[PhmZD"1hmZD"1hmZD"1ScZD[PScZD[PhmxI"1hmxI"1hmZD"1hmZD[PhmZD[PhmxI[PScxI[PhmxI[PhmZD[PhmZD[PScZD[PScxI"1ScxI"1hmxI"1hmZD"1hmZD"1ScZD"1ScxIP>ScxIP>hmxIP>hmZDP>hmZDP>ScZDP>ScxI<>ScxI<>hmxI<>hmZD<>hmZD<>ScZD<>ScxI<>hmxIP>hmxIP>hmZDP>hmZD<>hmZD<>hmxI<>ScZD<>hmZDP>hmZDP>hmZDP>ScZD<>ScZD<>ScxIP>ScxIP>hmxIP>hmxI<>hmxI<>ScxI<>ScZDP>ScZDP>ScxIP>ScxI<>ScxI<>ScZD"1ScxI[PScxI[PScZD[PScZD"1ScZD"1ScxIifq?Q ףףp?Q ףq?=  ףףp?zifq?z ףq?ף>ףp?Qdf>q?Qף>q?= if(\?Q ף(\?=  ף?Qif(\?z ף?z ף(\?ף>q?df>q?zף>ףp?zף>(\?= df>(\?Qף>?Qף>(\?ף>?zdf>(\?z ףףp?z ף'\o?if'\o?zף>'\o?ף>ףp?zdf>'\o?z ףK? ףp=J?zhfK?z ףףp?Kif'\o?K ף'\o?p=Jף>ףp?Kף>'\o?p=Jdf>'\o?K ף>K?ef>K?z ף>p=J?zhfK?K ףp=J?K ףK?p=Jef>K?K ף>K?p=J ף>p=J?Kdf>q?Qdf>q?zdf>(\?zdf>(\?zdf>(\?Qdf>q?Qף>ףp?zdf>q?zdf>q?Qdf>q?Qף>ףp?Qף>ףp?zdf>q?zף>q?ף>(\?ף>(\?df>(\?zdf>q?zdf>(\?Qף>(\?= ף>q?= ף>q?= df>q?Qdf>(\?Qdf>(\?zף>?zף>?Qף>?Qdf>(\?Qdf>(\?z ף(\?ף>(\?ף>q?ף>q? ףq? ף(\?ף>?zף>(\? ף(\? ף(\? ף?zף>?zף>q?ף>ףp?z ףףp?z ףףp?z ףq?ף>q?ף>(\?= ף>?Q ף?Q ף?Q ף(\?= ף>(\?= ף>ףp?Qף>q?=  ףq?=  ףq?=  ףףp?Qף>ףp?Qif(\?z ף(\? ףq? ףq?ifq?zif(\?zifq?z ףףp?z ףףp?Q ףףp?Qifq?Qifq?zif(\?Q ף?Q ף?z ף?zif(\?zif(\?Q ף(\?= if(\?Qifq?Qifq?Q ףq?=  ף(\?= if(\?Qif(\?zifq?zifq?zifq?Qif(\?Qef>K?Kef>K?zdf>'\o?zdf>'\o?zdf>'\o?Kef>K?Kef>K?K ף>p=J?K ף>p=J?z ף>p=J?zef>K?zef>K?Kef>K?z ף>K?ף>'\o?ף>'\o?df>'\o?zef>K?z ף>K?p=Jef>K?Kdf>'\o?Kdf>'\o?Kף>'\o?p=J ף>K?p=Jף>ףp?Kdf>'\o?Kdf>'\o?zdf>'\o?zף>ףp?zף>ףp?K ףK? ף'\o?ף>'\o?ף>'\o? ף>K? ףK?ף>ףp?zף>'\o? ף'\o? ף'\o? ףףp?zף>ףp?z ף>K? ף>p=J?z ףp=J?z ףp=J?z ףK? ף>K? ףףp?K ף'\o?p=Jף>'\o?p=Jף>'\o?p=Jף>ףp?K ףףp?K ף>p=J?K ף>K?p=J ףK?p=J ףK?p=J ףp=J?K ף>p=J?K ףK?hfK?zif'\o?zif'\o?z ף'\o? ףK? ףp=J?KhfK?KhfK?zhfK?z ףp=J?z ףp=J?Kif'\o?K ףףp?K ףףp?z ףףp?zif'\o?zif'\o?KhfK?K ףK?p=J ף'\o?p=J ף'\o?p=Jif'\o?KhfK?Kif'\o?zhfK?zhfK?KhfK?Kif'\o?Kif'\o?zף>(\?=  ף(\?=  ףq?=  ףq?= ף>q?= ף>(\?=  ף>p=J?K ףp=J?K ףp=J?z ףp=J?z ף>p=J?z ף>p=J?Kף>'\o?p=J ף'\o?p=J ףK?p=J ףK?p=J ף>K?p=Jף>'\o?p=J ףףp?Q ףףp?Kף>ףp?Kף>ףp?Kף>ףp?Q ףףp?Q ף?z ף?Qף>?Qף>?Qף>?z ף?zƂ4>FXx> !9>V~@W>-0>F>_9Q=V~k>L=FC f>&=FA`>Z>#0\>thq ~>thq;Ap\7 Ap'S=|*uAp7b=d >L7yk}Q>+>L7yF>2>ApN>F>L7yY = >Ap'S=y>L7y=*u>Ap7b=:j>L7y=l>L7y=Ap/m>5L7ybe>0߽L7yQo> Ap'S=9L7yY =L7y=|*uAp7b=lL7y=*8jL7y=l>L7y=:j>L7y=@]V>V~+=P>L7y1 >GJ>L7ya)> !9>V~@W>+>L7yF>d >L7yk}Q>A>V~7?>R=L7ybe>0=L7yQo>D=V~[>֝=L7yhz>#d=L7y>_9Q=V~k>lD̽V~[>0߽L7yQo>5L7ybe>4V~7?>V L7yk}Q>}+L7yF>]9V~@W>GJL7ya)> PL7y1 >ZVV~+=*8jL7y=lL7y=RԀthqF ~thqlZ#=ԍthq,/Ap>']Ap,Z># ~>thqՀ>thq4_>Ap,/>Ap>'Ս>thq,-0>F>647>Fr>Ƃ4>FXx>(>thq1(>Ap1 )>Ap0(>thq1 )>Ap0 )>thq0 )>thq0 )>Ap0V+>Ap)\/ )>thq0V+>Ap)\/V+>thq)\/V+>thq)\/V+>Ap)\/.>ApL.V+>thq)\/.>ApL..>thqL..>thqL..>ApL.:33>Apo|-.>thqL.:33>Apo|-:33>thqo|-:33>thqo|-:33>Apo|-b%8>Ap],:33>thqo|-b%8>Ap],b%8>thq],b%8>thq],b%8>Ap],p=>Ap,b%8>thq],p=>Ap,p=>thq,p=>thqUp=>ApU 8>ApʡUp=>thqU 8>ApʡU 8>thqʡU 8>thqʡUB4>Ap@UB4>thq@UB4>thq@U0>ApӤT0>thqӤT0>thqӤTl->ApSl->thqSl->thqS*>ApR*>thqR*>thqRx)>ApyQx)>thqyQx)>thqyQ(>ApףP(>thqףP0\>thq\0\>Ap\s>Ap偿0\>thq\s>Ap偿s>thq偿s>thq偿s>Ap偿>ApGs>thq偿>ApG>thqG>thqGZ\>ApZ\>thqZ\>thq>ApW>thqW>thqWȋ>ApHȋ>thqHȋ>thqH#>Ap#>thq0\>thq\0\>thq0\>Ap\0\>Ap\0\>thq0\>App=thq,GAp,p=Ap,(thqףP)ApRQ)thqRQ)thqRQE+Ap33SE+thq33SE+thq33S.ApBT.thqBT.thqBT.33ApU.33thqU.33thqU"8ApU"8thqU"8thqU"8ApUp=ApU"8thqUp=ApUp=thqUp=thq,p=Ap,8Ap,p=thq,8Ap,8thq,8thq,8Ap,64ApN-8thq,64ApN-64thqN-64thqN-64ApN-0Ap-64thqN-0Ap-0thq-0thq-0Ap-l-ApI.0thq-l-ApI.l-thqI.l-thqI.l-ApI.*Ap/l-thqI.*Ap/*thq/*thq/*Ap/x)Ap0*thq/x)Ap0x)thq0x)thq0x)Ap0(Ap1x)thq0(Ap1(thq1UBthq33!\thqF ~thql!\Ap\!\thq\cthq偿#thq#ApApH#thqApHthqHthqHApWthqWthqWL\ApL\thqL\thqApGthqGthqGApၿcthq偿cthq偿Apၿ!\Ap\!\thq!\thq\!\Ap!\Ap!\thq\!\Ap\Z#F ~thql!\thqZ>#Z#!\thq!\thq0\>thqZ>#!\thq!\Ap0\>Ap0\>Ap0\>thq!\thq#thqRԀthq]Ap]Ap#Ap#thqp=thqUp=ApUvApUvApUmthqUp=thqUApWthqHApHjOthqǺ@(thq1(thqףPjOthqǺ@mthqU=ԍthq,4_>Ap,Ս>thq,p=>thq,p=>thq,p=>Ap,4_>Ap,64thqN-p=thq,8thq,*thq/x)thq0(thq1)thqRQE+thq33S.thqBTl-thqI.*thq/64thqN-l-thqI.64thqN-0thq-p=thqU.thqBT.33thqUp=thqU.33thqU"8thqU*thq/(thq1p=thq,p=thq,64thqN-*thq/)thqRQ.thqBTp=thqUp=thqU(thqףP)thqRQmthqUjOthqǺ@(thqףP(thqףPp=thqUmthqU=ԍthq,p=thq,(thq1(thq1jOthqǺ@=ԍthq,h} =ԍthq,mthqUL\thqthqHthqWcthq偿!\thq\L\thqcthq偿L\thqthqGF ~thqlRԀthq#thq#thqUBthq33F ~thql!\thqUBthq33#thq#thq!\thq\!\thqL\thq!\thq\#thq#thqthqHL\thqcB>thq33 ~>thq0\>thqs>thq偿>thqGZ\>thqs>thq偿Z\>thq0\>thq\Z\>thq>thqWȋ>thqH0\>thq0\>thq\#>thq#>thqcB>thq330\>thq#>thqՀ>thq ~>thq ~>thqcB>thq33#>thq#>thq0\>thq\Z\>thqZ\>thqȋ>thqH#>thq(>thqףP(>ApףP(>Ap1(>Ap1(>thq1(>thqףP>ApUp=>ApUp=>thqUp=>thqU.o>thqU>ApUe>thqB(>thqףP(>thq1 )>thq0V+>thq)\/.>thqL..>thqL.:33>thqo|-b%8>thq],.o>thqUe>thqBՍ>thq,(>thq1 )>thq0.>thqL.0>thqӤTl->thqS*>thqR0>thqӤT*>thqRB4>thq@U(>thqףP*>thqRx)>thqyQB4>thq@Up=>thqU 8>thqʡUՍ>thq,e>thqB(>thq1(>thq1p=>thq,Ս>thq,b%8>thq],p=>thq,(>thq1(>thq1.>thqL.b%8>thq],.o>thqUp=>thqU(>thqףP(>thqףPe>thqB.o>thqU(>thqףPp=>thqUB4>thq@UB4>thq@U*>thqR(>thqףP]>ApՀ>thq#>thq#>thq#>Ap]>ApL\ApthqWApWApGL\thqL\ApApၿthqGApG.33thqU.33ApU"8ApU.thqBT.ApBT.33ApUE+thq33SE+Ap33S.ApBT)thqRQ)ApRQE+Ap33S(thqףP(ApףP)ApRQp=>ApU#>Ap 8>ApʡU*>thqR*>ApRx)>ApyQl->thqSl->ApS*>ApR0>thqӤT0>ApӤTl->ApSB4>thq@UB4>Ap@U0>ApӤT 8>thqʡU 8>ApʡUB4>Ap@UZ\>Ap>thqG>ApGx)>thqyQx)>ApyQ(>ApףPL\Ap.ApBTE+Ap33Sl->ApSZ\>Ap*>ApR.>ApL.;Ap\7:33>Apo|-/Ap>'GAp,]Ap,2>ApN> =Ap@t>`>Ap/m>|*uAp7b=9XAp%>GAp7>GAp7>2ApN>-Ap8e>-Ap8e>Ap/m>ѣAp>ѣAp>mݼApE|>ApE|>4ѣ=Ap>v=ApN>›G>ApK7> =Ap@t>2>ApN>64ApN-8Ap,q哾Ap)0Ap-64ApN-q哾Ap).>ApL.l-ApI.0Ap-:33>Apo|-y>Ap)b%8>Ap],>4hP>?^>O?`郾4hՍ>thq,o}> .o>thqU*ǽFU>CFCX>lD̽V~[>f>Ap >Ap):33>Apo|-:33>Apo|-;Ap\7f>Ap >Ap)>Ap p=>Ap,p=>Ap,b%8>Ap],y>Ap)x)>ApyQ*>ApRE+Ap33SE+Ap33S)ApRQx)>ApyQ0\>Ap!\Ap!\Ap\!\Ap\0\>Ap\0\>ApL\ApApW.33ApU.33ApU.ApBTL\ApApWApH"8ApU"8ApU.33ApUApWApH#App=ApUp=ApU"8ApUApH#Ap]ApvApUvApUp=ApU#Ap>ApU]>Ap#>Ap#>App=>ApU>ApU 8>ApʡU#>Apȋ>ApHȋ>ApHB4>Ap@U 8>ApʡUB4>Ap@Uȋ>ApH>ApW>ApW0>ApӤTB4>Ap@U0>ApӤT>ApWZ\>ApZ\>Apl->ApS0>ApӤT0\>Ap\!\Ap\ApၿApၿs>Ap偿0\>Ap\(>ApףPx)>ApyQ)ApRQ)ApRQ(ApףP(>ApףP4_>Ap,p=>Ap,>Ap >Ap />Ap>'4_>Ap,.>ApL.V+>Ap)\/*Ap/*Ap/l-ApI..>ApL.x)Ap0*Ap/V+>Ap)\/V+>Ap)\/ )>Ap0x)Ap0p=Ap,eAp q哾Ap)q哾Ap)8Ap,p=Ap,;Ap\7›G>ApK7>FX>Ap%>FX>Ap%>*u>Ap7b=;Ap\7(Ap1x)Ap0 )>Ap0 )>Ap0(>Ap1(Ap1 Ap'S=;Ap\7q哾Ap)q哾Ap)_Ap >< Ap'S=s>Ap偿ApၿApGApG>ApGs>Ap偿Z\>ApL\ApE+Ap33SE+Ap33S*>ApRZ\>App=Ap,GAp,/Ap>'/Ap>'eAp p=Ap,-Ap8e>;Ap\7|*uAp7b=|*uAp7b=GAp7>-Ap8e>›G>ApK7>;Ap\7v=ApN>v=ApN> =Ap@t>›G>ApK7>v=ApN>;Ap\7ApE|>ApE|>4v=ApN>ApE|>;Ap\7-Ap8e>-Ap8e>ѣAp>ApE|>.>ApL.0Ap-q哾Ap)q哾Ap);Ap\7.>ApL.f>Ap ><;Ap\7*u>Ap7b=*u>Ap7b= >Ap'S=f>Ap >Ap>ApG>ApGApGL\Ap(Ap1(>Ap1(>ApףP(>ApףP(ApףP(Ap1C=FCX>&=FA`>3F~$<ѣAp>֝L7yhz>dL7y>֝L7yhz>*9QV~k>dL7y>`ni>V~/z=@]V>V~+=Q>Fמ=`ni>V~/z=Q>Fמ=ec>F,s=L=FC f>_9Q=V~k>Z_9Q=V~k>Ȅ3V~q>Z3Fk>ZYFi>ZȄ3V~q>YFi>Ȅ3V~q>*9QV~k>YFi>*9QV~k>wLFC f>YFi>*ǽFU>lD̽V~[>sF:>lD̽V~[>4V~7?>sF:>>Ap y>Ap)o}> y>Ap)o}>o}> o}> Ս>thq,>Ap Ս>thq,/>Ap>'>Ap f>Ap >< >Ap'S=>L7yQ8< >Ap'S=F>L7yY =>L7yQ8<Հ>thq]>Ap.o>thqU]>Ap>ApU.o>thqUՀ>thq.o>thqUZ>#.o>thqUo}> Z>#l>L7y=y>L7y=*u>Ap7b=y>L7y= >Ap'S=*u>Ap7b=y>Ap)>4ho}>>4h^>o}>>L7yQ8L7yY =|>{t0L7yY =y>L7y=|>{t0L7y=`ni>V~/z=|>{t0<`ni>V~/z=Vpq>V~`(<|>{t0<P>L7y1 >:j>L7y=FX>Ap%>:j>L7y=*u>Ap7b=FX>Ap%>y>L7y=l>L7y=`ni>V~/z=l>L7y=@]V>V~+=`ni>V~/z=›G>ApK7>GJ>L7ya)>FX>Ap%>GJ>L7ya)>P>L7y1 >FX>Ap%>:j>L7y=P>L7y1 >@]V>V~+=P>L7y1 > !9>V~@W>@]V>V~+= !9>V~@W>09>FGw>@]V>V~+=09>FGw>Q>Fמ=@]V>V~+=2>ApN>+>L7yF>›G>ApK7>+>L7yF>GJ>L7ya)>›G>ApK7>647>Fr>09>FGw>Ƃ4>FXx>09>FGw> !9>V~@W>Ƃ4>FXx>GJ>L7ya)>+>L7yF> !9>V~@W>+>L7yF>A>V~7?> !9>V~@W>2>ApN>`>Ap/m>d >L7yk}Q>`>Ap/m>R=L7ybe>d >L7yk}Q>A>V~7?>G>Fr+> !9>V~@W>G>Fr+>-0>F> !9>V~@W>s>F:>G>Fr+>3=FZ/F>G>Fr+>A>V~7?>3=FZ/F>d >L7yk}Q>R=L7ybe>A>V~7?>R=L7ybe>D=V~[>A>V~7?>`>Ap/m> =Ap@t>R=L7ybe> =Ap@t>0=L7yQo>R=L7ybe>.=FBS>3=FZ/F>D=V~[>3=FZ/F>A>V~7?>D=V~[>֝=L7yhz>0=L7yQo>v=ApN>0=L7yQo> =Ap@t>v=ApN>D=V~[>C=FCX>.=FBS>C=FCX>+=FU>.=FBS>0=L7yQo>֝=L7yhz>D=V~[>֝=L7yhz>_9Q=V~k>D=V~[>_9Q=V~k>&=FA`>D=V~[>&=FA`>C=FCX>D=V~[>v=ApN>ѣ=Ap>֝=L7yhz>ѣ=Ap>#d=L7y>֝=L7yhz>R#d=L7y>4#d=L7y>ѣ=Ap>4#d=L7y>R_9Q=V~k>RȄ3V~q>_9Q=V~k>ApE|>ö3L7y>4ö3L7y>R4Rö3L7y>Ȅ3V~q>ö3L7y>QռL7y>Ȅ3V~q>mݼApE|>QռL7y>ApE|>QռL7y>ö3L7y>ApE|>Ȅ3V~q>QռL7y>*9QV~k>QռL7y>dL7y>*9QV~k>ѣAp>dL7y>mݼApE|>dL7y>QռL7y>mݼApE|>lD̽V~[>CFCX>*9QV~k>CFCX>wLFC f>*9QV~k>*9QV~k>֝L7yhz>lD̽V~[>֝L7yhz>0߽L7yQo>lD̽V~[>Ap/m>0߽L7yQo>ѣAp>0߽L7yQo>֝L7yhz>ѣAp>V L7yk}Q>5L7ybe>-Ap8e>5L7ybe>Ap/m>-Ap8e>lD̽V~[>5L7ybe>4V~7?>5L7ybe>V L7yk}Q>4V~7?>4FXx>sF:>4V~7?>4FXx>4V~7?>]9V~@W>}+L7yF>V L7yk}Q>2ApN>V L7yk}Q>-Ap8e>2ApN>4V~7?>}+L7yF>]9V~@W>}+L7yF>GJL7ya)>]9V~@W>GJL7ya)>}+L7yF>GAp7>}+L7yF>2ApN>GAp7>]9V~@W>ZVV~+=4FXx>ZVV~+=3QFn=4FXx>GAp7>9XAp%>GJL7ya)>9XAp%> PL7y1 >GJL7ya)>]9V~@W> PL7y1 >ZVV~+= PL7y1 >*8jL7y=ZVV~+=UcF,s=3QFn=RniV~/z=3QFn=ZVV~+=RniV~/z=|*uAp7b=*8jL7y=9XAp%>*8jL7y= PL7y1 >9XAp%>ZVV~+=lL7y=RniV~/z=lL7y=L7y=RniV~/z= Ap'S=L7y=|*uAp7b=L7y=lL7y=|*uAp7b=_Ap ><惾L7yQ8< Ap'S=惾L7yQ8<9L7yY = Ap'S=q哾Ap)1{j`郾4h1{j`郾4heAp h} q哾Ap)h} 1{jq哾Ap)惾L7yQ8<_Ap ><`郾4h_Ap >V~`(F~$

?jk>F~$<^>P>?Vpq>V~`(<`ni>V~/z=ec>F,s=Vpq>V~`(F,s=jk>F~$<惾L7yQ8<`郾4hmqV~`(<`郾4hO?mqV~`(<L7y=惾L7yQ8L7yQ8V~`(<>4hVpq>V~`(

,Wv4ɼ2%?B|s`=^ʲ>os5=~%?xB`=@?B4<>^ʲ>os5=^ʲ>os5=@?B4<>թ>o0}=@?B4<>u?B6>թ>o0}=թ>o0}=u?B6>e>&o4?>u?B6>G>JB>e>&o4?>e>&o4?>J>[C6>0>oT}>G>JB>8>#CP?0>oT}>0>oT}>8>#CP?VE>oo>8>#CP?>VMCwZ?VE>oo>VE>oo>>VMCwZ?g>Xot>>VMCwZ?p0>CNC?g>Xot>IM>Yo>zW0>`CD?R=f?oD>zW0>`CD?1=!C$?"R=>oH>R=f?oD>1=!C$?Ҽo]>1=!C$? D#?Ҽo]>Ҽo]>ıG Da#?qѽn>ıG Da#?YYD?qѽn>qѽn>TY[D?]|2mndU>TY[D?dD} ?ɕ2\nT>]|2mndU>nD{ ?xtEn>ΦDWw ?#ݾ=E>xtEn>xtEn>#ݾ=E> TOrn*\>#ݾ=E>{E9> TOrn*\> TOrn*\>{E9>ძ:n=>{E9>El>ძ:n=>ძ:n=>E2>{Vv[=El>;@#+>{Vv[=;@#+>&B84<{Vv[={Vv[=&B2<,o qλ)&B_0<9#!B+,o qλ,o qλ9#!B+No:9#!B+ )B{No:No:BS{Y{o;H )B{& Bb,Yoa,Yoa& Bbҍ܉oM_m `B^o辦Czҍ܉oM_ҍ܉oM_^o辦Cz]e[zo^o辦Cz=賾7CA aewo aewo ܳ8C p&$coˡܳ8C #pjC'$eop&$coˡ pgCBfNo-#pjC/ݽOC_"fNo-ILo/ݽOC_"[Sx/o`޽ĢC"N2DW|=lo-'{=E o(9J>N2DY=>n5>1D8Ƅ>DzY=>nY=>n琋> DxyfT>`nf琋> Dxy>WD fT>`nffT>`nf>WD +>nz>WD >FE_ؾ+>nz+>nz>FE_ؾ$ء>nVn:]>hFEؾ= ?Ecס>QUn:$ء>nVn:= ?E@>nT= ?E?&FVL@>nT@>nT㽫?&FVLQ>,Wv4ɼ?$FdL:C? #QXQ>,Wv4ɼQ>,Wv4ɼz:C?j#R$2%?B|s`=f4z6wTd/o`$=d^6{YSI-o1lF= ou9z=w6{z=w6{'{=E o(9|> {6xs^= o8$<>n|>y6s|>y6sU>nU>a6`U>nT>qn*%J>z6ܤ`J>z6ܤ`T>n%?a6oBU>@n4+>nz?x6oB?x6oB:*>n$zkE?`6B7>anȬzcס>QUn:E?z6(E?z6(cס>QUn:b?^6۾$ء>nVn:K>nc[b?>z67۾ܭb?nR㽅u?a6MjVL>nRΊ>Tvćɼgt?%{6Kjgt?%{6KjΊ> Uv+ȼ{?Kb6Ί> Uv+ȼղ>Po5={?{6{?{6ղ>oQr5=v?^6YF>*ʲ>to5=>ٕoѮ=}v?{6XF>}v?{6XF>I>o{= ~f?x6dA>թ>o= >oT?>zf?qz6Q>zf?qz6Q> >oT?>AK?S^6?e>&o4?>>WoX}>>K?j{6.?>K?j{6.?u>^o8s}>/&?v6e=?u>^o8s}>E>mo͗>h&?y6=?h&?y6=?E>mo͗>J>a6.f\?E>mo͗>*j> Xo>>w6f\?>w6f\?>DWo>>a67xq?\P>Xo>mR=t>$x6yq?t>$x6yq? R=j0j=b6 @{? R=jҼoMb>\5={6Y?{?\5={6Y?{?ҼoMb>:]6@Hy?-XӼo]>qѽn>/{6Fy?/{6Fy?SNѽn>gz6Ŧk?SNѽn>42LnS>gz6Ŧk?gz6Ŧk?ɕ2\nT>? `6S?ɕ2\nT>tn>. z6R?. z6R?/ uϣn>L3w60?/ uϣn>9SqnC\>x3z6'}0?x3z6'}0?`pn:)\>/zU_6Ի?`pn:)\>QL8nZ>4yUx67?4yUx67?QL8nZ>(7n?>Uv`\=;my6;k>;my6;k>ٛVv[=Byg^6=ٛVv[=g8roѻy]x6=y]x6=n8{o/oλz%`6g8roѻ]oڼzy6۵zy6۵]oڼG"p`68]oڼhǑoPd[px6C[px6ChǑoPd'Zx6\hǑoPd፾o _r#Z?z6r#Z?z6W⍾Xo_p9d_6) ҍoD_ze~voCV9y6)V9y6)`e/vo1aEx6#Maewo p&$coˡz6MaEx6#M?$boʡ;¾`6Lhp&$coˡyGJo"X¾az6KhX¾az6Kh[Io.4`6wuvKo"YSI-o1lf4z6wf4z6w "9 {<2X¾az6Kh "9 {<2w{J|%X¾az6KhX¾az6Kh<&b{jb%aEx6#M%W{{%r/{aEx6#MaEx6#Mr/{9+|64)r/{>{ :V9y6)9+|64)>{ :2&Z|6ҵ{G罦p({72&Z|6r#Z?z6p(v{[px6Cp({7x6{o.[px6C[px6Cx6{o.zy6۵x6{o.q<{߶Qzy6Чzy6۵q<{߶Q yw6=q<{߶Q8{ݰ= yw6=y]x6=S8{=;my6;k>S8{=ӊ,{^=;my6;k>;my6;k>ӊ,{^=4yUx67?K,{]=`j{==4yUx67?4yUx67?`j{==x3z6'}0?`j{==T{ >L3w60?x3z6'}0?9{>H v6S?w{Y >{x%> }y6S?Ϛ sa6S?I{%>gz6Ŧk?{x%>uWh{m5>gz6Ŧk?gz6Ŧk?gpW{܋5>/{6Fy?uWh{m5>Y{<>/{6Fy?/{6Fy?Y{<>0j=b6 @{?4GX{<>i=j{6>{?\5={6Y?{?<<{;>i>>{6wq?M<={f;>M=,y<[>i>>{6wq?u>^6zq? M={+y>[>->{6-e\?=,y[>Q<=kP|>->{6-e\?->{6-e\?==VQ|>h&?y6=?Q<=kP|>ء=zD|c =h&?y6=?h&?y6=?C=vD|=>K?j{6.?=C|=P>#8|N+=>K?j{6.?>K?j{6.?>8|P=|f?L|6F>>8|P=&>,|&m= ~f?x6dA>|f?L|6F>&>,|&m=}v?{6XF>&>,|&m=/>!|<}v?{6XF>v?b6AF>/>!|<{?{6/>!|<1>|o{?{6{?Kb6N1>||C |,Ygt?%{6Kju?a6Mj*>v |Yܭb?v |Y">|mܭb?|mE?z6(">|m>{E?z6(E?z6(K>[{MV?z6B>{܁={?z6B?z6B܁={U>a6`܁={pQ={Ǝ(J>z6ܤ`J>z6ܤ`pQ={Ǝ(|> {6xspQ={Ǝ({=${4|> {6xs|>y6s{=${4z=w6{=Y{4Ի{8z=w6{z=w6{Cػ{8f4z6wCػ{8 "9 {<24z6wQ<=kP|>=,y[>u e=,y[>ħuz eu e 觙tY{<>M tM tY{<>Z5>AoY{<>gpW{܋5>t5>ᦙ*ot5>ᦙ*ogpW{܋5>SG>܌6_gpW{܋5>J{%>SG>܌6_SG>܌6_{x%>?mr.D{x%>w{Y >?mr.D?mr.Dw{Y >9?J[w{Y >`j{==9?>\$9?;>V`j{==W?G g侟`j{==ӊ,{^=W?G gSW?Wӊ,{^=k?Ř8}ӊ,{^=S8{=l?ǘ}l?ǘ}S8{=8t?kS8{=;Φ{۷Q8t?kh8t?kP ;Φ{۷Q2p?d5>;Φ{۷Qx6{o.1p?U5>2p?d5>x6{o. `?i${>x6{o.p(v{ `?i${>i`?W>p(v{ID?&&5?p({7>{ :ID?&&5?ID?&&5?{:h?m9?>{ :r/{r?4p9?h?m9?L{A>\X?r/{!{^%]>dL_X?]>dL_X?!{^%!}>t%l?!{^% "9 {<2}>ql?}>ql? "9 {<2 =vt? "9 {<2Cػ{8 =vt?t=Tbt?Cػ{8M5{p?Cػ{8{=${46op?6op?{=${4ľ5`?{=${4pQ={Ǝ( ľ?`?ľ5`?=R{ӊ(7_idE?M={(܁={ȣaIgE?ȣaIgE?܁={;:Ep! ?܁={K>[{MV;:Ep! ?;:Ep! ?K>[{MVYI%>>{|>7| 9/YΖ>/YΖ>">|m Xmx~>|>7| 9*>v |Y Xmx~>Vm~>*>v |Y޴ubt=*>v |YN1>|||!|!|ñ<ҫaWľ/>!|<&>,|&m=aVľaVľ=&>4-|l=>FG&>,|&m=P>#8|N+=>FG>FG>8|P=y cቾ:P>#8|N+==>E|= ቾ: ቾ:ء=zD|c =p3%Zء=zD|c =Q<=kP|>ˋu!Zp3%ZQ<=kP|>ħuz e6*p?|ǼC?%? =vt?|ǼC?%?l2=ΰB?T#? =vlt? =vlt?=iB? U#?}>el?l2=ΰB?T#?S>;B?I?}>el?}>el?S>;B?I?">*bX?`>9B?D?>gA??>i`X?">*bX?>gA???:9r9?c>A?ϵ?>KX?}O>?&l9??o9?m>X? B>nD?#:?>X?@>?|C?>tD?73?D?1;??|C?> `?҇>?|C?>~A?|C?*>L"`?t|>L"`?t|>@?C?h*>3p?5>~A?|C?*>$?UC?><3p?5>3p?5>$?UC?><8t?k$?C?A\Ƞ?B?V*žX>aB?C9?>\9?>\H[>]dB?X{?fDH[>]dB?X{[B>eA??fD?fD[B>eA?SG>܌6_D>CA?WK >gX?3SG>܌6_SG>܌6_s >X?85>Bos >X?8N@<]C?T$u5>ou5>oN@<]C?T$١` tN@<]C?T$$6C?P!١` t١` tC?!$u< e$6C?P!僾eC?:u e$u< e僾eC?: ~n ZC?9V1ľC?p3%Zp3%ZV1ľC? ԉ:V1ľC?CLC?K׾ ԉ: ԉ:CLC?K׾@FHCLC?K׾)B?@FH@FH}B?!/ayJ;ľ)B?" B?r?,/ayJ;ľ/ayJ;ľ B? o,qh&6q (B?X,O&9 B?qǼq\i6q\i65& B?ȼu~ou=O&9 B?qǼ<$vA? =eu})=eu})=<$vA? =$uA?P>=X?KY>X?KY>DYғ>X?KY>BC?Ԯ>DYғ>DYғ>BC?Ԯ>:t ?BC?Ԯ>Y1׾C?5>:8w" ?:8w" ?Y1׾C?5>ȣaIgE?Y1׾C?5>QRC?)?ȣaIgE?ȣaIgE?]ϡC?? ľ3`?QRC?)?4+eC?P? ľ3`? ľ3`?Yj+fC??6*p?P+gC??|ǼC?%?6*p?+ >X?;8 j]?f4? =<$C?-$q 9j]?4?Q=k]?>vk%RC?i!Q=k]?>b*>]t]?HQ>C?!%RC?i!I*>Ou]?QR>ヾpC?^>I*>Ou]?QR>C >Ԉ]?>ヾpC?^>%C?_=C >Ԉ]?>V1ľC?C >Ԉ]?>w]>]?t>V1ľC?V1ľC?w]>]?t>uGC?Jؾw]>]?t>7g>3]?>+IC?׾+IC?׾Cj>]?>XB?$Cj>]?>>]?3P>B?B?>]?3P> 1B?o,>]?3P>8>/^?H=i B?&V, 1B?o,8>/^?H=&B?*ɼ8>/^?H=m>m^? <6&B?ȼ6&B?ȼn>m^?P<<$vA? =n>m^?PJ^?ő<$vA? =<$vA? =W>J^?őX?KY>>X?@>޾k]?v״? C?K>޾k]?v7o]?Z"״? C?K>?C?`>7o]?Z"G?C?*> im]?!J-z]?rG?C?*>H?C?*>J-z]?rj$?6C?G<$?UC?><]?4C-=4p"?vC?]?4C-=]?>4p"?vC?4p"?vC?]?>p?C/C?h]?>Fo]?op>o?-C?:uo?-C?:uFo]?op>?KB?V9žFo]?op>e&ľ-^?E>?KB?V9ž?KB?V9že&ľ-^?E>Jc>_B?ľ^?Ģ>B^??>Jc>_B?Jc>_B?sޞ@^?J>=N>A?ҞtB^?FL>ךf^?a>=N>A?=N>A?ךf^?a>+ >X?;8f.^?4c>.. FE?6<?+ >X?;8s >X?8=.FE?<?q 9j]?4?>Ķ^?źz?E?_v"%X? 0Y>'y?кE?xvHZ>j]?UB!X?)IY>!X?)IY>HZ>j]?UBC?>HZ>j]?UB>bp]?Z1C?B>C?B>p>ar]?3"<׾C?>>bp]?Z1k>~]?o׾"<׾C?>2׾C?>k>~]?o׾lC??k>~]?o׾:>ɚ]?"W^;C?O?W^;C?O?H+:>]?yQ+aC??H+:>]?=]??yQ+aC??yQ+aC??ѫ=]?@|ǼC?%?ѫ=]?@s]?p#|ǼC?%?|ǼC?%?s]?p#=:B?X#?s]?p#<^?c.=B?mX#?=:B?X#?<^?`>4B?s?<^?W X^?XT>Z5B?x?XT>Z5B?x?WV^?¯徔>gA??WV^?¯X^?~ʾc>A?ϵ?>gA??dP^?X}ʾ&>$X?K>dP^?X}ʾ̀E?Qؾ&>$X?K>&>$X?K>Ϙd~E? Oؾ޾k]?v  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ `N꾈 `辈 `N꾈 `辈 `辈 `N꾈 `1 `1 ` `1 ` ` `N꾈 `辈}EN `辈4gDxW}EN}EN4gDxW}E4gDxW4gD0xW}E}E4gD0xW `4gD0xW `1 ` `14gD0: `4gD0:4gD: `P+辨YC 辨YP+0YC 辨YC 0YP+0YP+xWP+辨YP+0xWP+辨YP+0YP+0xW4gDxWP+xW4gD0xWP+xWP+0xW4gD0xW4gDN꾠:4gD辠: `N꾈4gD辠: `辈 `N꾈4gD0:0:4gD:0:辠:4gD:4gD:辠:4gDN꾠:辠:4gD辠:4gDN꾠:C 辨辠:C 0辠:0:C 0C 辨YC 辨C 0YC 辨C 0C 0YP+xW4gDxWP+辨Y4gDxW `辈P+辨YP+辨Y `辈 `辈C 辨C 辨Y辠:C 辨YP+辨Y辠:辠:P+辨Y4gD辠:P+辨Y `辈4gD辠:P+0xWP+0Y4gD0xWP+0Y `14gD0xWC 00:C 0Y0:4gD0:C 0YC 0Y4gD0:P+0Y4gD0: `1P+0YP+0Y `1 `14gD44gD}E `4gD:4gDM%YmE FD SD=SD=4gD4YmE 4gD4}EYmE YmE }E`] }E ``] `]  `^ق `l_y^قSD%FD0&4gDM%FD0&YmET&4gDM%4gDM%YmET& `YmET&`]T& ` ``]T&^H&^H&l_0Z' `l_0Z'_P`( ` `_P`( `_P`(_ ` `_l_y}ENYmEN  `N꾈YmEN `]N  `N꾈 `N꾈`]N ^NقSDN꾬=FDN꾴 4gDN4FDN꾴 YmEN 4gDN44gDN4YmEN 4gDNYmEN }EN4gDNl_N0Z'^NH& `N꾈^NH&`]NT& `N꾈 `N꾈`]NT&4gDN꾠:`]NT&YmENT&4gDN꾠:4gDN꾠:YmENT&4gDNM%YmENT&FDN0&4gDNM%4gDNM%FDN0&SDN%^Nقl_Ny `N꾈l_Ny_N `N꾈 `N꾈_N `N꾈_N_NP`( `N꾈 `N꾈_NP`(l_N0Z'4gD4gDN}E4gDN}EN}E:Q(f=P(f=>龤WP+@龤WP+R(:Q(:Q(f=>龤WP+@龤Wf=>龤Wf=|o4דP+@龤WP+@龤Wf=|o4דP+~o4דf=|o4דf= p,P+~o4דP+~o4דf= p,P+p,f= p,f=`JP+p,P+p,f=`JP+`JP+M`JP+`Jf=M`JP+`Jf=`Jf=M`JP+M`Jf=M`Jf=wP+M`Jf=wP+wf=wf=ąP+wP+wf=ąP+ąf=ąf=(P+ąP+ąf=(P+(P+]P+(f=]P+(f=(f=]P+]f=]f=0\P+]f=0\P+0\f=0\f=w[P+0\P+0\f=w[P+w[f=w[f=MZP+w[P+w[f=MZP+MZP+꾘ZP+MZf=꾘ZP+MZf=MZf=꾘ZP+꾘Zf=꾘Zf= pZP+꾘Zf= pZP+pZf= pZf=|o[P+pZP+pZf=|o[P+~o[f=|o[f=>\P+~o[P+~o[f=>\P+@\f=>\f=P]P+@\P+@\f=P]P+R]P+R(P+R]:Q(P+R]f=P]:Q(:Q(f=P]f=P(P+ąP+`JP+MąP+`JP+M`JP+MąP+MąP+M`JP+tFlkP+M`JP+wP+tFlkP+tFlkP+wP+ojt#P+wP+ąP+ojt#P+ojt#P+ąP+w(P+ąP+(P+w(P+w(P+(P+w]P+(P+]P+w]P+w]P+]P+ojh\P+]P+0\P+ojh\P+ojh\P+0\P+tFxe\P+0\P+w[P+tFxe\P+tFxe\P+w[P+M0\P+w[P+MZP+M0\P+M0\P+MZP+0\P+MZP+꾘ZP+0\P+0\P+꾘ZP+L:꾸N\P+꾘ZP+pZP+L:꾸N\P+L:꾸N\P+pZP+\P+pZP+~o[P+\P+\P+~o[P+龈#]P+~o[P+@\P+龈#]P+龈#]P+@\P+]P+@\P+R]P+]P+]P+R]P+(P+R]P+R(P+(P+(P+R(P+d P+R(P+@龤WP+d P+d P+@龤WP+,LP+@龤WP+~o4דP+,LP+,LP+~o4דP+L:vP+~o4דP+p,P+L:vP+L:vP+p,P+ąP+p,P+`JP+ąf=ąf=`Jf=J:vf=`Jf= p,f=J:vf=J:vf= p,f=,Lf= p,f=|o4דf=,Lf=,Lf=|o4דf=d f=|o4דf=>龤Wf=d f=d f=>龤Wf=(f=>龤Wf=P(f=(f=(f=P(f=]f=P(f=P]f=]f=]f=P]f=龈#]f=P]f=>\f=龈#]f=龈#]f=>\f=\f=>\f=|o[f=\f=\f=|o[f=J:꾸N\f=|o[f= pZf=J:꾸N\f=J:꾸N\f= pZf=0\f= pZf=꾘Zf=0\f=0\f=꾘Zf=M0\f=꾘Zf=MZf=M0\f=M0\f=MZf=tFxe\f=MZf=w[f=tFxe\f=tFxe\f=w[f=ojh\f=w[f=0\f=ojh\f=ojh\f=0\f=w]f=0\f=]f=w]f=w]f=]f=w(f=]f=(f=w(f=w(f=(f=ojt#f=(f=ąf=ojt#f=ojt#f=ąf=tFlkf=ąf=wf=tFlkf=tFlkf=wf=Mąf=wf=M`Jf=Mąf=Mąf=M`Jf=ąf=M`Jf=`Jf=ąP+ąf=ąf=J:vP+ąf=J:vP+L:vf=J:vf=,LP+L:vP+L:vf=,LP+,Lf=,Lf=d P+,LP+,Lf=d P+d f=d f=(P+d P+d f=(P+(P+ąP+Mąf=ąP+Mąf=Mąf=ąP+w(f=w(f=ojt#P+w(f=ojt#P+ojt#f=ojt#f=tFlkP+ojt#P+ojt#f=tFlkP+tFlkf=tFlkf=MąP+tFlkP+tFlkf=MąP+MąP+w(P+w]f=w(P+w]f=w]f=w(P+M0\f=M0\f=tFxe\P+M0\f=tFxe\P+tFxe\f=tFxe\f=ojh\P+tFxe\P+tFxe\f=ojh\P+ojh\f=ojh\f=w]P+ojh\P+ojh\f=w]P+w]P+M0\P+0\f=M0\P+0\f=0\f=M0\:]f=]f=龈#]P+龈#]P+]:]:]f=龈#]P+龈#]f=龈#]f=\P+龈#]P+龈#]f=\P+\f=\f=J:꾸N\P+\P+\f=J:꾸N\P+L:꾸N\f=J:꾸N\f=0\P+L:꾸N\P+L:꾸N\f=0\P+0\P+]P+(:]P+(f=(:]:]f=(f=](=0TQ(=0kLf=0TQ(=0kLf=0kLf=0TQf=ZxWf=xW'=ZxWf=xW&=xW'=ZxWf=TQf=kL&=TQf=kL&=kL&=TQ&=龀_Jf=龀_J'=A_Jf=龀_Jf=A_J'=A_J'=A_Jf=A_J'=xDLf=A_Jf=xHL'=xDL'=xDLf=xHL'=FLf=xHLf=XL'=FL'=FLf=XL'=XLf=XLf=xHL'=XL'=XLf=xHL'=|FL'=|FLf=xHL'=xDLf=xHLf=n_J'=xDL'=xDLf=n_J'=n_J'=n_Jf=n_J'=Z_Jf=n_Jf=Z_J'=Z_J=kL=4kL=TQ=4kL=o@N=TQ=TQ=o@N=ZTQ=kL=ZkL=5@@N=ZkL=ZTQ=5@@N=5@@N=ZTQ=X N=ZTQ=o@N=X Nf=xWf=xHLf=A_Jf=xWf=A_Jf=TQf=A_Jf=龀_Jf=TQf=TQf=龀_Jf=kLf=0kLf=Z_Jf=0TQf=Z_Jf=n_Jf=0TQf=0TQf=n_Jf=ZxWf=n_Jf=xHLf=ZxWf=ZxWf=xHLf=xWf=xHLf=XLf=xWf=xWf=XLf=xHLf=xWf=TQ&=xWf=TQ&=TQ&=xW&=xW&=TQ=TQ&=龀_J&=kLf=龀_J&=kLf=kLf=龀_J&=kL=kL&=TQ=kL=TQ&=TQ=ZTQ'=ZxW=TQ'=ZxW&=xW=TQ'=ZxW(=0TQf=ZxW(=0TQf=0TQf=ZxW&=kL&=龀_J=kL'=ZxW=ZTQ(=0TQ=4kL=kLB=!eK=kL&=龀_JB=!eKB=!eK&=龀_J'=A_J=ZkL(=0kL=ZTQ(=0kL(=0TQ=ZTQ(=0kL'=Z_Jf=0kL'=Z_Jf=Z_Jf=0kLB=!eK'=A_J'=xDL=kL=5@@NB= eK=5@@N'=xDLB= eKB= eK'=xDL'=n_J=o@N=4kLB=!eKB=!eK'=xDL=o@N'=xDL'=FL=o@N=o@N'=FL=X N'=FL'=XL=X N=X N'=XL=5@@N'=XL'=|FL=5@@N=5@@N'=|FL'=xDL(=0kL=ZkL'=Z_J=ZkL=kL'=Z_J=kLB= eK'=Z_J'=Z_JB= eK'=n_JcX\羖>h~? ,< 7xMV~?'-<1j?X~ 7xMغZO/V~'->V~'-<nݾc?>linB4>>LuM1j?X~qgۓt%B1j?X~ZDzo?pht Bpht B%ְo?~ ze|?_ZDzo?FO ze|?_)e|?œDOLgn@> >5jAOɺZ'0linB4>>V~'-<[=aݾc?>֣= >TK?nݾc?>N>{Ab?mwrH ?ɮ?KTZ>t/mrrH ?ɮ?KTD?RD;4W>-mrM?d> N>{Ab?mwnx?)>>@b?fC>0m-rnx?)>%ְo?~ M?d> TFO0M?d> nx?)>TFO0t@%A?缷?VJ=cX\羖>缷?VJ=V~?'- =q,>oA "?ʿ >K?/n,>VrA "?aG>r1?51?Q >hK?Q >hK?aG>r1?51?t@%A?aG>r1?51??VJ=t@%A?l;}?==aG>r1?51?[jq?^ a>aG>r1?51?q,>oA "?Rkq?a>rH ?ɮ?KT:}?%==D?]H84:}?%==mq?#R>D?]H84M?o>ZDzo?>@b?fWo?j?O>@b?f>@b?fj?OO~?W ,K1?81?B ?? [>@b?f]G>K1?81?]G>K1?81?>@b?f缷?VJ=N>{Ab?mwO~?W ,C>0m-rTFO0Z>t/mrɺZ'0FO  lq?^>q,>oA "?D?G!R4q,>oA "?֣=D?]H84D?]H84֣=Z>t/mr֣=h~ ,0m-rC>0m-rO~W ,<ɺZ'0Xg< ,<]Q >hK?L_g>;5^{?h]19:3nQ4h` ;k׾l3h;l׾Xg< {?h]\goze|?__fnQ?>l?c>oc>ogn@> >־А=g_fnQ?>l?c-QLN=E־А=g3nQ:19?i׾^ ;4h?L_g>;i׾^ ;4h?50+=p?A_g>4;A_g>4;7+=p?bݾc?>>+=p?!=~?bݾc?>bݾc?>¨=~?{=P?{=P?Yg?=K>bݾc?>Yg?=K>j";:bݾc?>bݾc?>h!;1:_fnQ?>l?f ;:f; gn@> >_fnQ?>l?\;Sc-QLN=Eg t? Bf*Y>n 7xM0}Y>n׻F>~wM 7xMèh>~]P5nQ29<׾ƺ0hnlD8s׾Ⱥu3hZd*IAnnlD8(猼#Y>nEngt<#Y>ng t? BEngt<2Q?`?־yΘg?`XȐ>־yΘg?dN3,p?cX\羖>eX 羈u>dN3,p?c_O]Pg=NK׾wMhgt N@׾h!1ĺ 7xM 7xMj"`XȐ>f Ѻf ;cX\羖>cX\羖>f ;5Q˲? ?c*<]<=ae(`<#d|?_`e\K(?@\K(?@;h>e輖SA>@wr;>%eP7;;}1>yr}1>yrP7;;8;?9DXN8X:b8;X^8X:P7;;b8;X^YY@]8;_ep;׾v7h?9DXNp;׾v7h༖s4pQP;Ï׾3h;mQ88mQ8mQ;mQ8P3hÏ׾༖;pQs4x:; x:4pv7h׾pv7h׾k:;5t8 >x: x:4;p;v7h>x: x:4༖pQs4?P;3hÏ>;8mQ?mQ8?mQ8?;8mQ?йÊ׾4h?༖;s4pQ?.9; Y6?p׾v7h?p׾v7h?i;DXV?]8_e?P7;?b8X^?8;X:?b8X^??9;DXN?8;X:?P7;?8;;?};1>yr?P7;?};1>yr?𻖻h>e?輖;SA>@wr?;@(?@?𻖻h>e?𻖻h>e?;@(?@?@?@(?;@(?@?;e?h>\@?K(?@?@(?;e?h>輖@wr?SA>;%e?>zr;?o;}yr?1>}yr?1>zr;?o;3?,;S5?Qy ?,;?ѶQy ?,;zr;?;?ѶQ?ѶQzr;?;e<?Qz?8X:8:?8;?9DXN8:?8:??9DXN6>2h??9DXN8mQ6>2h?z򻟙>L0h?༖s4pQ|oQ?3?8mQй4hÊ׾5oQ?3?oQ?3?C1h׾7?7;pv7h׾w8O7~?ź;~?ź;t8 >8?՚ĺt8 >x: x:4<8?՚ĺ8?՚ĺ:2<62h?׾x: x:4<༖pQs4?62h?׾62h?׾mQ8?%y48?lQmQ8?йÊ׾4h?53?oQ53?oQPÏ׾3h?i~;p׾v7h?]8_e?b~S;vb~S;vb8X^?8 k]8_e?P7;?88 kY7ֿ;*?4&%zrP7;?>%e?5ﻦ@@vr4&%zr𻖻h>e? 4ﻎ(@𻖻h>e?@?@(?z򻆦(@<뻖(!@2@?F(?)˻PiaNѾ@?@(?}yr?1>rλimCѾWpλGiYNѾ}yr?1>7޺}yr?1>3?# ;7޺7Ѻ3?,;-38,:3?,;O5?FX+369H:-38,:W5?+K7?xr4>O5?FXi?OѾ5@vr@>7?xr4>i?OѾ 4@(?i?OѾ\K(?@z@(? 4@(?2F(?@e4y⾙e?\K(?@}1>yrbxqe?e4y⾙e?}1>yrz?}1>yr8;!y?8; k?Y7;ֿ;*3;hLDtr?P7;;;h>e3;hLDtr?3;hLDtr?;h>ez3;(0@?;h>e;@?@( 4;(@?z3;(0@?;@?@(e4;ey>;@?@(7;9p?7;3e>e4;ey>t;6p?{r;d-;7;9p?񰾓e<? 'K{r;d-;#{r;h՟ ;e<?QV7< ޺e<? 'Kzr;?o;Y7<ĴѺY7<ĴѺzr;?;H/<6p6zr;?;;%e?>H/<6p6.<4p;e?h> 4;@(;e?h>;@(?@? 4;@( 4;@(;@(?@?e4;y⾙e;@(?@?輖;SA>@wr?7;3ee4;y⾙e};1>yr?;z;%>{r?8;X:?!;y;z8;X:?8;:8;;??9;DXN?8;:8;:?9;DXN?3;>6hx;]Vl?༖;s4pQ?3;>6h1;߉>4h༖;s4pQ?5;oQ?3;8mQ?p;v7h>5;oQ?35;oQ?3P;3hÏ>~;?7p;v7h>w8;O7;~;?ź~;?źt8; >;8;?՚:t8; >;x:; x:48;?՚:8;?r::;26;2h?>x:; x:4;mQ84;V0h?>6;2h?>༖;pQs4^2;;8?lQ?s;mQ8й;Ê׾4h`7;P;?jQ?`7;P;?jQ?p;׾v7hi~;;?p;׾v7hb8;X^b~;S;v?b~;S;v?b8;X^8; k?]8;_eP7;;8;?z?8;?5;@@vr?z?5;@@vr?73e?3;hLDtr?z3;(0@?e4y⾙e?e4y⾙e?Ez;('@?z@(?~;Т(N@?e4;ey> 4@(? 4@(?4{;en>|5vr@>4{;en>{r;d-;~2xr4>7?xr4>{r;d-;-38,:z?8:?8;?8:?b~;S;v?8;?~?ź;8;?՚:1;4h?߉>~?ź;1;4h?߉>5oQ?3?6;2h?>`7;P;?jQ?^2lQ?;8?^2lQ?;8?`7;P;?jQ?6>2h?5;3?oQ?b~;S;v?6>2h?1߉>4h?b~;S;v?8:?~?~;8?r8;?r:8?r~;?~8;?r:b~S;v8;:3;>6hb~S;v3;>6h53?oQ3;>6h5;oQ?3^2;8?lQ^2;8?lQ5;oQ?362h?׾5;oQ?3~;?~3ﻁ6h?׾3ﻁ6h?׾~;?~8?՚ĺb~S;v88;:8!;y8;:t޺V7< ޺H/<6p6rλimCѾ7Ѻt޺t޺H/<6p6rλimCѾ.<4p8;W@آ(WpλGiYNѾWpλGiYNѾ~;N@Т(Ʃ(6@z;@(e4;y⾙e 4ﻎ(@ 4ﻎ(@e4;y⾙ex0xr};(e;z4&%zr4&%zr;z87Ѻy,,:Ѻy,,:{r;d-;ѺѺ{r;d-;Y7<ĴѺBSE>/{CH>s{Z:4<W ĻH>s{Z:47ーE{'}.;W yC>Uc=zͲH>7ーE{r >u`U ~?5s{?Z:4U ~?5/{?C=H>s{?Z:4Â> @=%v?|@Y=05?|@~]UA7O=Y=05?Y=[1=5?~]UA7O=>k?~]UA7O=~78=>k?>k?,fP= O>Tlx?q7J1=^}7;> O>Tlx? O>Tlx?^}7;>M>X(=z?U}>;wX(=z?M>X(=z?;w<F>=1y?F>=1y?˗;x<>>k?˗;x<|;?<>>>k?>>k?|;?<>=V=}?="="}?|;?<> G?>5ybz?|;?<>%~u= G?>5ybz?\j|?#(>b<?2Q';4<5?2Q';4<5b?-ҟ;s?+K&Eg?W?3gw<5 ?_=?]f)<?D;GEX<_=?]f)>pw`~]UA7O= |sAgr0>b}r>>pw` |sAU ~?5W ĻW oǻ|;?<>V=e|;?<>;w'}.;W #};T U}>eb1='}.;W r>s`C>rb=zgr0>bH>{?2C>rb=zC>b=zH>s{?Z:4=?<5kЂ> = v?BSE>/{?C=|3olE>0{?H=H ~?5<|3oBSE>/{?C=\j|?#(>bs{?Z:4\j|?#(>b<H>s{?Z:4s?+K&EgH>⃼zd?L><5H>⃼zC>b=zd?L><5H>zBSE>/{CV=eBSE>/{CW oǻV=e:E>l{? =Â> @=%v?\j|?#(>b<H>zs?+K&EgBSE>/{C?2Q';4<\j|?#(>b<#6?ԓTf3?\j|?#(>b<&Ђ>>=v?#6?ԓTf3?#6?ԓTf3?Â> @=%v?Y=05?B=?Kfus{Z:4s{Z:4/{Cs?+K&EgH>s{Z:4 Ez?mx,=#e?>|z?~T}A=mZxsr,=#6?ԓTf3?Y=05?>k??W? y<' ??D;GEX<К6?w=2??D;GEX<>>k?6?ML=2?66?mO=72?>>k?=V=}?`?Hџ;?2Q';4<#6?ԓTf3?#6?ԓTf3?>k?b?-ҟ;d:>*~k?tN>8x?,?H;j?-X;w'O>d7x??G8= O>Tlx?mM>Y(=z??6c7=?G8=M>X(=z??Y>;KEXX(=z?dF>&=S0y??D;GEX<?Y>;KEX<F>=1y?>>k?H>s{Z:4<_=?]f) Ez?_=?]f)5ybz??W?3gw<5 ?6?ML=2? G?>5ybz? G?>5ybz?66?mO=72?=V=}?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ $ l $ -X' $ l-X'-Xl'-X'X -Xl'-Xl'X lX 콍lP lX P lX X P 콍lP P ½P@콍lP ½P@½lP@½P@&½lP@½lP@&l&&BGPk/l&l&BGPk/EGlPk/BGPk/=ü4EGlPk/EGlPk/=ü4=ül4=ü4/:^6=ül4=ül4/:^6Q/:l^6/:^62"<XI4Q/:l^6Q/:l^62"<XI4-"._?LI/+;?/XG?'V>._?/XG?¾7? E?/XG?DM?¾7? E?¾?=#E?DM?dYn?n>>" ?v<U?den?1>>n Bf?L)ehn?0>KEM?>n Bf? ?ґ<U?:> NAf?^>E& L"? ?ґ<U?^>E& L"?l>?ʊ/?^>E& L"?>!f?/?l>?ʊ/?>X٣?@?>X0jO?a>?@?S>9?A@?3x>, O?i1Y>+?Q?{>,< O?>征a?rJY>G*?Q?s.Y>/?3Q?>征a?K@=sg?r>>征a?N;ez>1@=qg?n}>1@=qg?n}>; e>ө>Lq?~;ez>bzھڣe?T{>q?ө>Lq?bzھڣe?}!Pz>c?bzھڣe?ou90LX?!ny>c?}!Pz>c?ou90LX?cT8>62U?o7JX?&;J?o6>0U?r;>.U?( J?J ?@?&;J?UօY?J ?@?J ?@?UօY?*)>i=z?jy?Ie>tW=)>j=z?Y{?o0>)>j=z?ʅ;rY?{?򎽟0>5=F>gy?e>MW=L>=} 7y?e>MW={?<00>~L>.7Ⱥ=,?$U={ >gz:_U={ >g~L>.7B_h<=ĺ:,?$<+Ⱥ7,?~$B_<'V>._?h<=P++;?M=<=<.,+;?ĺ:,?$k,/_?l>?ʊ/?a>?@?H<,?2$a>?@?i1Y>+?Q?ĺ:,?$i1Y>+?Q?K@=sg?r>ĺ:,?$H<,?2$K@=sg?r>U={ >gK@=sg?r>e>aq?=>g}S=W+>9g>q?!ny>c?D)>h=Ӳz?y?e>EX=J ?@?y?e>MW==>gV ?@?V ?@?!= !>Jgr;>.U?=>g}!Pz>c?o6>0U? ?ґ<U?>P?D/?|d n?p2>l>?ʊ/?H<,?2$|d n?p2>2dn?q&>H<,?2$¾7? E?ĺ:,?$'V>._?¾~?~"E?t{?0>ԅ sY?~L>.7ȅY?&;J?=>7~L>.7&;J?ou90LX?{>,< O?>Xx%N"?V=_ > >f?ZEM?>x%N"?ZEM?/XG?>x%N"?>x%N"?/XG?z:_/XG?j(+;?z:_z:_j(+;?<ou90LX?f뽽yھ-e?=>7bzھڣe?~;ez>~L>.7~L>.7~;ez>z:_~;ez>>ϣa?4𾄽_4𾄽_.>>a?{>,< O?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6<ھȿK"3ھ \; =ھ1 >=ھ==ھ(>t!=ھ==ھ(> p>ھ >t!=ھ=t!=ھ= p>ھ >P=ھ0= p>ھ >k->ھ=P=ھ0=P=ھ0=k->ھ=D >ھ`XK=k->ھ== @>ھA=D >ھ`XK=D >ھ`XK== @>ھA=P>ھ><= @>ھA=:pJ>ھھ>ھ><:pJ>ھھ=b!ھ=齮ھ(>>ھ=齮ھ(>-ھ3<>>ھ=>ھ=-ھ3<>; ھ1 >-ھ3<>L$ھH>; ھ1 >; ھ1 >L$ھH>"3ھ0\>L$ھH>"3ھL>"3ھ0\>"3ھ0\>"3ھL>; =ھ1 >"3ھL>n$=ھH>; =ھ1 >; =ھ1 >n$=ھH>>=ھ=n$=ھH>?=ھ3<>>=ھ=>=ھ=?=ھ3<>=ھ(>:pJ>ھھ%P>ھ=L>ھ%#CF>ھUMP>ھ=P>ھ=#CF>ھUMD >ھ XK#CF>ھUM7>ھbD >ھ XKD >ھ XK7>ھbP=ھࢽ7>ھbp!>ھP=ھࢽP=ھࢽp!>ھt!=ھֽp!>ھf>ھdt!=ھֽt!=ھֽf>ھd>=ھf>ھd=ھ3>=ھ>=ھ=ھ3; =ھ1 =ھ3=u=ھXhC; =ھ1 ; =ھ1 =u=ھXhC6<ھȿK< ھ XKCFھUMPھ=CFھUMLھ%Pھ=Pھ=Lھ%Pھ><Lھ%2pJھ<2pJھ<< ھ`XK=2pJھ<5 @ھA=< ھ`XK=< ھ`XK=5 @ھA=>뽮ھ0=5 @ھA=c-ھ=>뽮ھ0=>뽮ھ0=c-ھ=b!ھ=c-ھ=pھ >b!ھ=b!ھ=pھ >齮ھ(>6<ھȿK"3ھL"3ھ \"3ھLھȿK"3ھ \"3ھ \ھȿK; ھ1 ھȿKھ>ھƽھ3b!ھֽƽھ3fھdb!ھֽb!ھֽfھd>뽮ھࢽfھdh!ھ>뽮ھࢽ>뽮ھࢽh!ھ< ھ XKh!ھ7ھb< ھ XK< ھ XK7ھbCFھUMt!="۾=="۾(>>="۾=="۾(>?="۾3<>>="۾=>="۾=?="۾3<>; ="۾1 >?="۾3<>n$="۾H>; ="۾1 >; ="۾1 >n$="۾H>Ȋ3"۾0\>n$="۾H>Ȋ3"۾L>Ȋ3"۾0\>Ȋ3"۾L>L$"۾H>Ȋ3"۾0\>Ȋ3"۾0\>L$"۾H>; "۾1 >L$"۾H>>"۾=; "۾1 >D >"۾ XK#CF>"۾UMP>"۾=#CF>"۾UML>"۾%P>"۾=P>"۾=L>"۾%P>"۾>"۾%:pJ>"۾"۾>"۾><:pJ>"۾"۾`XK=:pJ>"۾<= @>"۾A=D >"۾`XK=D >"۾`XK== @>"۾A=P="۾0== @>"۾A=k->"۾=P="۾0=P="۾0=k->"۾=t!="۾=k->"۾= p>"۾ >t!="۾=t!="۾= p>"۾ >="۾(>L$"۾H>-"۾3<>>"۾=-"۾3<>"۾(>>"۾=>"۾="۾(>b!"۾="۾(>p"۾ >b!"۾=b!"۾=p"۾ >>"۾0=p"۾ >c-"۾=>"۾0=>"۾0=c-"۾=< "۾`XK=c-"۾=5 @"۾A=< "۾`XK=< "۾`XK=5 @"۾A=P"۾><5 @"۾A=2pJ"۾<2pJ"۾="۾=u="۾XhC="۾3>="۾>="۾="۾3t!="۾ֽ="۾3f>"۾dt!="۾ֽt!="۾ֽf>"۾dP="۾ࢽf>"۾dp!>"۾P="۾ࢽP="۾ࢽp!>"۾D >"۾ XKp!>"۾7>"۾bD >"۾ XKD >"۾ XK7>"۾b#CF>"۾UM; "۾1 "۾ȿKȊ3"۾ \"۾ȿKȊ3"۾LȊ3"۾ \Ȋ3"۾ \Ȋ3"۾L6<"۾ȿK2pJ"۾<L"۾%P"۾=L"۾%CF"۾UMP"۾=P"۾=CF"۾UM< "۾ XKCF"۾UM7"۾b< "۾ XK< "۾ XK7"۾b>"۾ࢽ7"۾bh!"۾>"۾ࢽ>"۾ࢽh!"۾b!"۾ֽh!"۾f"۾db!"۾ֽb!"۾ֽf"۾d>"۾f"۾dƽ"۾3>"۾>"۾ƽ"۾3; "۾1 ƽ"۾3c-ھ=c-ھ=p"۾ >pھ >p"۾ >"۾(>pھ >pھ >"۾(>齮ھ(>"۾(>-"۾3<>齮ھ(>齮ھ(>-"۾3<>-ھ3<>-"۾3<>L$"۾H>-ھ3<>-ھ3<>L$"۾H>L$ھH>L$"۾H>Ȋ3"۾L>L$ھH>L$ھH>Ȋ3"۾L>"3ھL>Ȋ3"۾L>n$="۾H>"3ھL>"3ھL>n$="۾H>n$=ھH>n$="۾H>?="۾3<>n$=ھH>n$=ھH>?="۾3<>?=ھ3<>?="۾3<>="۾(>?=ھ3<>?=ھ3<>="۾(>=ھ(>="۾(> p>"۾ >=ھ(>=ھ(> p>"۾ > p>ھ > p>"۾ >k->"۾= p>ھ > p>ھ >k->"۾=k->ھ=k->"۾== @>"۾A=k->ھ=k->ھ== @>"۾A== @>ھA== @>"۾A=:pJ>"۾<= @>ھA== @>ھA=:pJ>"۾<:pJ>ھ<:pJ>"۾"۾%:pJ>ھ<:pJ>ھ"۾%L>ھ%L>"۾%#CF>"۾UML>ھ%L>ھ%#CF>"۾UM#CF>ھUM#CF>"۾UM7>"۾b#CF>ھUM#CF>ھUM7>"۾b7>ھb7>"۾bp!>"۾7>ھb7>ھbp!>"۾p!>ھp!>"۾f>"۾dp!>ھp!>ھf>"۾df>ھdf>"۾d="۾3f>ھdf>ھd="۾3=ھ3="۾3=u="۾XhC=ھ3=ھ3=u="۾XhC=u=ھXhC=u="۾XhC6<"۾ȿK=u=ھXhC=u=ھXhC6<"۾ȿK6<ھȿK6<"۾ȿK"3ھL6<ھȿK; =ھ1 >Ȋ3"۾0\>"3ھ0\>Ȋ3"۾0\>; "۾1 >"3ھ0\>"3ھ0\>; "۾1 >; ھ1 >; "۾1 >>"۾=; ھ1 >; ھ1 >>"۾=>ھ=>"۾=b!"۾=>ھ=>ھ=b!"۾=b!ھ=b!"۾=>"۾0=b!ھ=b!ھ=>"۾0=>뽮ھ0=>"۾0=< "۾`XK=>뽮ھ0=>뽮ھ0=< "۾`XK=< ھ`XK=< "۾`XK=P"۾><< ھ`XK=< ھ`XK=P"۾>"۾ࢽ< ھ XK< ھ XK>"۾ࢽ>뽮ھࢽ>"۾ࢽb!"۾ֽ>뽮ھࢽ>뽮ھࢽb!"۾ֽb!ھֽb!"۾ֽ>"۾b!ھֽb!ھֽ>"۾>ھ>"۾; "۾1 >ھ>ھ; "۾1 ; ھ1 ; "۾1 Ȋ3"۾ \; ھ1 ; ھ1 Ȋ3"۾ \"3ھ \Ȋ3"۾ \; ="۾1 "3ھ \"3ھ \; ="۾1 ; =ھ1 ; ="۾1 >="۾; =ھ1 ; =ھ1 >="۾>=ھ>="۾t!="۾ֽ>=ھ>=ھt!="۾ֽt!=ھֽt!="۾ֽP="۾ࢽt!=ھֽt!=ھֽP="۾ࢽP=ھࢽP="۾ࢽD >"۾ XKP=ھࢽP=ھࢽD >"۾ XKD >ھ XKD >"۾ XKP>"۾=D >ھ XKD >ھ XKP>"۾=P>ھ=P>"۾=P>"۾>ھ=P>ھ=P>"۾>ھ>"۾>"۾`XK=P>ھ>ھ>"۾`XK=D >ھ`XK=D >"۾`XK=P="۾0=D >ھ`XK=D >ھ`XK=P="۾0=P=ھ0=P="۾0=t!="۾=P=ھ0=P=ھ0=t!="۾=t!=ھ=t!="۾=>="۾=t!=ھ=t!=ھ=>="۾=>=ھ=>="۾=; ="۾1 >>=ھ=>=ھ=; ="۾1 >; =ھ1 >; ="۾1 >Ȋ3"۾0\>; =ھ1 >Q;?جrJ?^>?d7Y0DG@F8?*?d8?*?d*E^?d*i8ZFἱE^?dV@?d8t%¼?YӼ8t༨ݼVP%¼?YӼi¼?YӼݼVP?6޼(P(͈??D8?y #8ͯ?-K8?y #> F?N 2"J医N ?NN ?J$-`?HJX;ߕ&?aHߕ&?aHX; `?;;f5< `?; `?;f5<&?PY<f5<\"-<&?PY<&?PY<\"-<?<><>dN;=a,7Y<?0DBX<? 1D{;Gh,Q;?ج{;Gh,Q:X?aLQ;?جpλ?`TJ:u?k<%}|%<He:s?u.:C?t}|%<H ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xߑȖi+vlkZ}Ľ۽:ɔv:5}S۽+vlk:ɔZ}Ľ۽Z}Ľ۽:ɔ}S۽+vlkv:5:ɔ}S۽v:5=vBlk=vBlkv:5+vlk=vBlkB `i}S۽}S۽B `i7D|Ga ؽR` ?7D|Ga ؽFat-7D|Ga ؽB `iFat-Fat-\8RP+R` ?R` ?\8RP+PB58P@J8PB58g 'f\8RP+ s<йPB58mȑ+g 'f\8RP+ s<й\8RP+g 'fP@J8g 'fmȑ+PB58 s<йg 'fmȑ+̫V-P@J8P@J8̫V-)R`?Z}Ľ۽)R`?xߑȖi)R`?̫V-xߑȖiPB58Q{`1=R` ?R` ?Q{`1=7D|Ga ؽQ{`1=|ٽ7D|Ga ؽ7D|Ga ؽ|ٽ}S۽}S۽|ٽZ}Ľ۽|ٽ|r#ٽZ}Ľ۽Z}Ľ۽|r#ٽ)R`?|r#ٽ\R^o@)R`?)R`?\R^o@P@J8\R^o@EQ@-=P@J8P@J8EQ@-=PB58EQ@-=Q{`1=PB58\8RP+v=󼞙,mȑ+v=󼞙,I,mȑ+mȑ+I,̫V-I,6|(ox-̫V-̫V-6|(ox-xߑȖi6|(ox-8s,jxߑȖixߑȖi8s,j+vlk+vlk8s,j=vBlk8s,j`-j=vBlk=vBlk`-jB `iB `i`-jFat-`-jv=󼞙,Fat-Fat-v=󼞙,\8RP+|r#ٽ|9%Ї8s,j`-j6l9|ٽ|9%Ї6l98s,j8s,j6l9`-j6l9|9%Ї|ٽ|ٽ|9%Ї|r#ٽ|ٽQ{`1=`-jQ{`1=v=󼞙,`-jHO;@lpEv=󼞙,v=󼞙,lpEI,I,lpEEQ@-=EQ@-=lpEQ{`1=lpEHO;@Q{`1=Q{`1=HO;@v=󼞙,6|(ox-I,\R^o@\R^o@I,EQ@-=\R^o@|r#ٽ6|(ox-|r#ٽ8s,j6|(ox-DR?X>[=8R]ltpk?TH;QiѹiQ7rO[`e= RH;Qtnk?[]ltpk?TH;Q7rO[`e= RhQH;Q7rOVQVQiSiSTQ[`e= RiSt׼J53&uO7rO5FؼɘJccQ?e?O#US?1?Q9Q??e*TP?v?0G@Q?e?O#US??W<==?N??8Q??TP??Q??e*TP??Q?$?->Q?w?2G9AQ??W<==?N?B?!S??VQ??VQ??W<==?N?=?)=$?->Q?$?->Q?=?)=:?\4o<]ltpk?T:?\4oL?,>mc6zcc>JL?>7rOJ7vO4>L?>]ltpk?T>1L?>.=z+>Pntqk?~tkk?񱟾.=z+>:?\4o<=zg*>W۵H:?\4o<:?\4o< v$?->Q?W۵H> /M$?->Q?.?>Q?/Mo?&BS?/MHTo?;6o?&BS??-TP?EQѾ.?%i?==N?XѾ5.?'49@VRi?==N?i?==N?!UAR=f?g)=SAR`:eG=f?g)=='?>)=`:eGDR?X`:eG>; ?'K2?⃼'K2?⃼>; ?_ec=R[`e= R)>; ?iS>A;b ?c[>n?>iSiS[>˸n?>ټJH*K5FؼɘJ[>|n?ɮ>^e<;[>|n?ɮ>MѾ@.?["^e<;^e<;EQѾ.?%T?TP?V=bzY+>?ѹQ?5>K; ?[>˸n?>w?AQ9AQ?a>+L?>?VQVQ??VQVQ?>; ?5>K; ??VѸVQ?T>n?d>x?C8CQ??5QQ?a>+L?>a>+L?>?8Q?=Wz|%>4>L?>+To?x'c[>n?>+To?x'0\Ѿ.?r#c[>n?>9QkѸɩQMѾ@.?["[Ѿ!.?9Q49@VR@/R8Q/M,F,MI9VQ^/Lo?1ѸQI9VQHTo?;6V*To?39QXѾl.? l0vnλ@/R v )椛@/R,F,M v=zg*>`:eG=zg*>>A;b ?`:eG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~G=fڽ?ӜY=ڽ9M=ݽG=fڽ9M=ݽ<=0#ڽ/Eb=0p۽d_=K۽8M=ݽ?ӜY=ڽݜ"[=P۽9M=ݽݜ"[=P۽`=Z۽9M=ݽ9M=ݽ`=Z۽/Eb=0p۽d_=K۽Z=P۽8M=ݽZ=P۽9V=ڽ8M=ݽ8M=ݽ9V=ڽB=@@ڽB=@@ڽ<=%ڽ8M=ݽ<=%ڽΝL=wٽ8M=ݽ8M=ݽΝL=wٽ=ؽΝL=wٽН=@ؽ=ؽ=ؽН=@ؽΰ=ԽН=@ؽН=ؽΰ=Խΰ=ԽН=ؽҝ= ؽҝ= ؽÝ=׽ΰ=ԽÝ=׽X=׽ΰ=Խΰ=ԽX=׽񤝾Wb=6׽񤝾Wb=6׽<4=Pֽΰ=Խ<4=Pֽx+=ֽΰ=Խΰ=Խx+=ֽCn=ֽ2/=ֽ9 =ֽΰ=Խ9 =ֽRݜ 4=ֽΰ=ԽRݜ 4=ֽ&ۜ5=ֽΰ=Խΰ=Խ&ۜ5=ֽo=U׽N=ؽ=ؽȕI= ؽ=ؽΰ=ԽȕI= ؽȕI= ؽΰ=Խ>.=׽ΰ=Խo=U׽>.=׽N=ؽы)=ؽ=ؽы)=ؽԋ;=ؽ=ؽ=ؽԋ;=ؽ9M=ݽԋ;=ؽ&=pٽ9M=ݽ9M=ݽ&=pٽ<=0#ڽɻf=pн̡=нH=@Dҽɻf=pнH=@Dҽo=н̡=н`=нH=@Dҽ`=нhe= нH=@DҽH=@Dҽhe= н2?=0ѽ \=нޜ= нk=нޜ= нB͜\=нk=нB͜\=нs0I=нk=нk=нs0I=н7q=н7q=н= Iнk=н= IнDk=нk=нk=нDk=нi= ϽDk=нH@w=Ͻi= Ͻi= ϽH@w=Ͻ'M=`Ͻ'M=`Ͻ63=Ͻi= Ͻ63=Ͻ֜ǥ=Ͻi= Ͻi= Ͻ֜ǥ=Ͻݜvӥ=Ͻݜvӥ=Ͻ 4=0Ͻi= Ͻ 4=0Ͻ;/(=Ͻi= Ͻi= Ͻ;/(=Ͻw@-=PϽw@-=PϽZtL=PϽh= ϽZtL=PϽ ѥ=pϽh= Ͻ ѥ=pϽꠝv=PϽh= Ͻꠝv=PϽ컝.=Ͻh= Ͻh= Ͻ컝.=ϽŤ=ϽŤ=Ͻѝ=@нh= Ͻѝ=@нН7=@нh= Ͻh= ϽН7=@нj=нН7=@нН㦣=Pнj=нj=нН㦣=PнH=@DҽН㦣=Pнiϝj$=?нH=@DҽH=@Dҽiϝj$=?нo=нw@-=PϽh= Ͻi= Ͻh= Ͻ!=pSѽi= Ͻi= Ͻ!=pSѽ!=pSѽ!=pSѽΰ=Խ!=pSѽ!=pSѽΰ=Խΰ=Խΰ=ԽCn=ֽΰ=Խΰ=ԽCn=ֽ2/=ֽ/Eb=0p۽8M=ݽ9M=ݽ8M=ݽ澱=pa9M=ݽ9M=ݽ澱=pa羱=pa澱=paX= 羱=pa羱=paX= Y= X= {,= 8Y= Y= {,= 8|,= 8{,= 8}O=|,= 8|,= 8}O=~O=}O=鰠=P~O=~O=鰠=P갠=P鰠=P=갠=P갠=P===:ښ=k߽==:ښ=k߽;ښ=k߽:ښ=k߽=ڽ;ښ=k߽;ښ=k߽=ڽ=ڽ=ڽ=`ս=ڽ=ڽ=`ս=`ս=`սH=@Dҽ=`ս=`սH=@DҽH=@DҽH=@Dҽ2?=0ѽH=@DҽH=@Dҽ2?=0ѽk=н2?=0ѽ0/A=Pѽk=нk=н0/A=Pѽ \=нj=н,t=ƽh= Ͻ,t=ƽ ܪ=pǽh= Ͻh= Ͻ ܪ=pǽ!=pSѽ ܪ=pǽG=ɽ!=pSѽ!=pSѽG=ɽΰ=Խ:ښ=k߽l=ݽ=ڽl=ݽ =ֽ=ڽ=ڽ =ֽ=`ս =ֽO=н=`ս=`սO=нH=@DҽO=нؘ=˽H=@DҽH=@Dҽؘ=˽j=нؘ=˽!D=`xȽj=нj=н!D=`xȽ,t=ƽG=ɽ=̽ΰ=Խ=̽p= ҽΰ=Խΰ=Խp= ҽ=ؽp= ҽ=ؽ=ؽ=ؽ=ؽ8M=ݽ=ؽLI=`޽8M=ݽ8M=ݽLI=`޽澱=pa}O=۟=Py鰠=P۟=Py.=}鰠=P鰠=P.=}=.=}أ=P==أ=P:ښ=k߽أ=P=`O:ښ=k߽:ښ=k߽=`Ol=ݽLI=`޽T=p澱=paT=p>=%澱=pa澱=pa>=%X= >=%Ie=@WX= X= Ie=@W{,= 8Ie=@Wˆ={,= 8{,= 8ˆ=}O=ˆ=(=}O=}O=(=۟=Py0ݤ(=ˆ=0ݤˆ=ˆ=Ie=@W0ݤˆ=0ݤˆ=Ie=@W0ݤIe=@WIe=@W>=%0ݤIe=@W0ݤIe=@W>=%0ݤ>=%>=%T=p0ݤ>=%0ݤ>=%T=p0ݤT=pT=pLI=`޽0ݤT=p0ݤT=pLI=`޽0ݤLI=`޽LI=`޽=ؽ0ݤLI=`޽0ݤLI=`޽=ؽ0ݤ=ؽ=ؽp= ҽ0ݤ=ؽ0ݤ=ؽp= ҽ0ݤp= ҽp= ҽ=̽0ݤp= ҽ0ݤp= ҽ=̽0ݤ=̽=̽G=ɽ0ݤ=̽0ݤ=̽G=ɽ0ݤG=ɽG=ɽ ܪ=pǽ0ݤG=ɽ0ݤG=ɽ ܪ=pǽ0ݤ ܪ=pǽ ܪ=pǽ,t=ƽ0ݤ ܪ=pǽ0ݤ ܪ=pǽ,t=ƽ0ݤ,t=ƽ,t=ƽ!D=`xȽ0ݤ,t=ƽ0ݤ,t=ƽ!D=`xȽ0ݤ!D=`xȽ!D=`xȽؘ=˽0ݤ!D=`xȽ0ݤ!D=`xȽؘ=˽0ݤؘ=˽ؘ=˽O=н0ݤؘ=˽0ݤؘ=˽O=н0ݤO=нO=н =ֽ0ݤO=н0ݤO=н =ֽ0ݤ =ֽ =ֽl=ݽ0ݤ =ֽ0ݤ =ֽl=ݽ0ݤl=ݽl=ݽ=`O0ݤl=ݽ0ݤl=ݽ=`O0ݤ=`O=`Oأ=P0ݤ=`O0ݤ=`Oأ=P0ݤأ=Pأ=P.=}0ݤأ=P0ݤأ=P.=}0ݤ.=}.=}۟=Py0ݤ.=}0ݤ.=}۟=Py0ݤ۟=Py۟=Py(=0ݤ۟=Py0ݤ۟=Py(=0ݤ(=(=ˆ=0ݤ(=0ݤ=`O0ݤ&͍=P$0ݤl=ݽ0ݤ&͍=P$0ݤmc=.ڽ0ݤl=ݽ0ݤl=ݽ0ݤmc=.ڽ0ݤ =ֽ0ݤmc=.ڽ0ݤLގ=^ӽ0ݤ =ֽ0ݤ =ֽ0ݤLގ=^ӽ0ݤO=н0ݤLގ=^ӽ0ݤ!=p5ͽ0ݤO=н0ݤO=н0ݤ!=p5ͽ0ݤؘ=˽0ݤ!=p5ͽ0ݤ=(Ƚ0ݤؘ=˽0ݤؘ=˽0ݤ=(Ƚ0ݤ!D=`xȽ0ݤ=(Ƚ0ݤ=Ľ0ݤ!D=`xȽ0ݤ!D=`xȽ0ݤ=Ľ0ݤ,t=ƽ0ݤ=Ľ0ݤ=½0ݤ,t=ƽ0ݤ,t=ƽ0ݤ=½0ݤ ܪ=pǽ0ݤ=½0ݤ_=½0ݤ ܪ=pǽ0ݤ ܪ=pǽ0ݤ_=½0ݤG=ɽ0ݤ_=½0ݤR=Ľ0ݤG=ɽ0ݤG=ɽ0ݤR=Ľ0ݤ=̽0ݤR=Ľ0ݤ ?=rȽ0ݤ=̽0ݤ=̽0ݤ ?=rȽ0ݤp= ҽ0ݤ ?=rȽ0ݤl=ͽ0ݤp= ҽ0ݤl=ͽ0ݤ3=ӽ0ݤp= ҽ0ݤp= ҽ0ݤ3=ӽ0ݤ=ؽ0ݤ3=ӽ0ݤw=ڽ0ݤ=ؽ0ݤ=ؽ0ݤw=ڽ0ݤLI=`޽0ݤw=ڽ0ݤ= 0ݤLI=`޽0ݤLI=`޽0ݤ= 0ݤT=p0ݤ= 0ݤڈ=`$0ݤT=p0ݤT=p0ݤڈ=`$0ݤ>=%0ݤڈ=`$0ݤv= 0ݤ>=%0ݤ>=%0ݤv= 0ݤIe=@W0ݤv= 0ݤ=&0ݤIe=@W0ݤIe=@W0ݤ=&0ݤˆ=0ݤ=&0ݤ=00ݤˆ=0ݤˆ=0ݤ=00ݤ(=0ݤ=00ݤQ=@0ݤ(=0ݤ(=0ݤQ=@0ݤ۟=Py0ݤQ=@0ݤqȟ=@0ݤ۟=Py0ݤ۟=Py0ݤqȟ=@0ݤ.=}0ݤqȟ=@0ݤi=0ݤ.=}0ݤ.=}0ݤi=0ݤأ=P0ݤi=0ݤ =v0ݤأ=P0ݤأ=P0ݤ =v0ݤ=`O0ݤ =v0ݤ=P0ݤ=`O0ݤ=`O0ݤ=P0ݤ&͍=P$= ֽF=0׽0ݤw=ڽ0ݤ3=ӽ <=,Խ/aB=@Խ/aB=@ԽΝx=`Խ0ݤ3=ӽΝx=`Խҝ=yս0ݤ3=ӽ0ݤ3=ӽҝ=yս0ݤw=ڽҝ=yսɝԿ=Kֽ0ݤw=ڽ0ݤw=ڽɝԿ=Kֽ= ֽF=0׽P=׽0ݤw=ڽP=׽|=׽0ݤw=ڽ0ݤw=ڽ|=׽fSo(=׽.)=׽n*=׽cw=ڽn*=׽眾# =׽cw=ڽcw=ڽ眾# =׽ޜ=׽ޜ=׽C=p=׽cw=ڽC=p=׽(=ֽcw=ڽcw=ڽ(=ֽn=`ֽn=`ֽB&=pսcw=ڽB&=pսL=pzսcw=ڽcw=ڽL=pzսc4=ӽL=pzսqw=@Խc4=ӽc4=ӽqw=@ԽdB=AԽdB=AԽt;= +Խc4=ӽt;= +Խe=0ӽc4=ӽc4=ӽe=0ӽcm=ͽe=0ӽɜx=ӽcm=ͽcm=ͽɜx=ӽKޜU=dӽKޜU=dӽN=+ӽcm=ͽN=+ӽ/վ= ӽcm=ͽcm=ͽ/վ= ӽ/Ծ= ӽ/Ծ= ӽe%=,ӽ0ݤl=ͽe%=,ӽN=cӽ0ݤl=ͽN=cӽo=ӽ0ݤl=ͽ0ݤl=ͽo=ӽ0ݤ3=ӽo=ӽӣ=0ӽ0ݤ3=ӽ0ݤ3=ӽӣ=0ӽ <=,ԽA=Ν=;ĽDvo=&Ľ0ݤ=ĽDvo=&Ľ!=Ľ0ݤ=Ľ!=Ľ󢝾<=pý0ݤ=Ľ󢝾<=pý=`ý0ݤ=Ľ0ݤ=Ľ=`ý)=ý)=ýѝ=Ѕý0ݤ=Ľѝ=ЅýН:=sý0ݤ=Ľ0ݤ=ĽН:=sý0ݤ=½Н:=sýΝȠ=Mý0ݤ=½0ݤ=½ΝȠ=Mý#uw=%ý#uw=%ý¹̍=p ý0ݤ=½¹̍=p ý(}.= ý0ݤ=½0ݤ=½(}.= ý\=½\=½d=P½0ݤ=½d=P½/7=P½0ݤ=½0ݤ=½/7=P½.=@½/Ծ= ӽ0ݤl=ͽcm=ͽ0ݤl=ͽ0ݤ ?=rȽcm=ͽcm=ͽ0ݤ ?=rȽc ?=rȽ0ݤ ?=rȽ0ݤR=Ľc ?=rȽc ?=rȽ0ݤR=ĽcR=Ľ0ݤR=Ľ0ݤ_=½cR=ĽcR=Ľ0ݤ_=½c`=½0ݤ_=½0ݤ=½c`=½c`=½0ݤ=½c=½0ݤ=½.=@½c=½c=½.=@½=p½=p½Jޜ\=½c=½Jޜ\=½Ȝ-=Pýc=½c=½Ȝ-=Pý9V= ý9V= ýw=%ýc=½w=%ýBŠ=Nýc=½c=½BŠ=Nýc=ĽBŠ=NýDR:=rýc=ĽDR:=rýspj=ýc=Ľc=Ľspj=ý6=pý6=pý𮜾=ýc=Ľ𮜾=ýל(=0Ľc=Ľc=Ľל(=0Ľݜ =pĽݜ =pĽ ٝ=7Ľc=Ľ ٝ=7Ľ9/ ҝ=:Ľc=Ľc=Ľ9/ ҝ=:ĽA=Ν=;ĽA=Ν=;Ľ0ݤ=Ľc=Ľ0ݤ=Ľ0ݤ=(Ƚc=Ľc=Ľ0ݤ=(Ƚc=(Ƚ0ݤ=(Ƚ0ݤ!=p5ͽc=(Ƚc=(Ƚ0ݤ!=p5ͽc!=p5ͽ0ݤ!=p5ͽ0ݤLގ=^ӽc!=p5ͽc!=p5ͽ0ݤLގ=^ӽcMގ=^ӽ0ݤLގ=^ӽ0ݤmc=.ڽcMގ=^ӽcMގ=^ӽ0ݤmc=.ڽcnc=.ڽ0ݤmc=.ڽ0ݤ&͍=P$cnc=.ڽcnc=.ڽ0ݤ&͍=P$c'͍=P$0ݤ&͍=P$0ݤ=Pc'͍=P$c'͍=P$0ݤ=Pc=P0ݤ=P0ݤ =vc=Pc=P0ݤ =vc =v0ݤ =v0ݤi=c =vc =v0ݤi=ci=0ݤi=0ݤqȟ=@ci=ci=0ݤqȟ=@crȟ=@0ݤqȟ=@0ݤQ=@crȟ=@crȟ=@0ݤQ=@cR=@0ݤQ=@0ݤ=0cR=@cR=@0ݤ=0c=00ݤ=00ݤ=&c=0c=00ݤ=&c=&0ݤ=&0ݤv= c=&c=&0ݤv= cv= 0ݤv= 0ݤڈ=`$cv= cv= 0ݤڈ=`$cۈ=`$0ݤڈ=`$0ݤ= cۈ=`$cۈ=`$0ݤ= c= 0ݤ= 0ݤw=ڽc= c= 0ݤw=ڽcw=ڽ0ݤw=ڽfSo(=׽cw=ڽcw=ڽfSo(=׽.)=׽cR=@Ŧ=crȟ=@Ŧ=r=crȟ=@crȟ=@r=ci=r="О=6ci=ci="О=6c =v"О=6=c =vc =v=c=P=5=`c=Pc=P5=`c'͍=P$5=`yؗ= &߽c'͍=P$c'͍=P$yؗ= &߽cnc=.ڽyؗ= &߽ =0ڽcnc=.ڽcnc=.ڽ =0ڽcMގ=^ӽ =0ڽ]|=ֽcMގ=^ӽcMގ=^ӽ]|=ֽc!=p5ͽ]|=ֽq=`0ӽc!=p5ͽc!=p5ͽq=`0ӽc=(Ƚq=`0ӽS=`(нc=(Ƚc=(ȽS=`(нc=ĽS=`(н{=Pνc=Ľc=Ľ{=Pνc=½{=Pν1=̽c=½c=½1=̽c`=½1=̽$=P̽c`=½c`=½$=P̽cR=Ľ$=P̽(= νcR=ĽcR=Ľ(= νc ?=rȽ(= νi=0Uнc ?=rȽc ?=rȽi=0Uнcm=ͽi=0Uн<=`jӽcm=ͽcm=ͽ<=`jӽc4=ӽ<=`jӽNn=%׽c4=ӽc4=ӽNn=%׽cw=ڽNn=%׽>=?۽cw=ڽcw=ڽ>=?۽c= >=?۽=k߽c= c= =k߽cۈ=`$=k߽K|=`Ycۈ=`$cۈ=`$K|=`Ycv= K|=`Y =cv= cv=  =c=& =%Ʈ=Zc=&c=&%Ʈ=Zc=0%Ʈ=Z!=c=0c=0!=cR=@!=Ŧ=cR=@k=н{=PνH=@Dҽ{=PνS=`(нH=@DҽH=@DҽS=`(н=`սΰ=Խi=0Uн!=pSѽi=0Uн(= ν!=pSѽ!=pSѽ(= νi= Ͻ(= ν$=P̽i= Ͻi= Ͻ$=P̽k=н$=P̽1=̽k=нk=н1=̽{=PνS=`(нq=`0ӽ=`սq=`0ӽ]|=ֽ=`ս=`ս]|=ֽ=ڽ]|=ֽ =0ڽ=ڽ=ڽ =0ڽ;ښ=k߽ =0ڽyؗ= &߽;ښ=k߽yؗ= &߽5=`;ښ=k߽;ښ=k߽5=`=5=`====갠=P9M=ݽ>=?۽=ؽ>=?۽Nn=%׽=ؽ=ؽNn=%׽ΰ=ԽNn=%׽<=`jӽΰ=Խΰ=Խ<=`jӽi=0UнY=  =羱=pa =K|=`Y羱=pa羱=paK|=`Y9M=ݽK|=`Y=k߽9M=ݽ9M=ݽ=k߽>=?۽="О=6갠=P"О=6r=갠=P갠=Pr=~O=r=Ŧ=~O=~O=Ŧ=|,= 8Ŧ=!=|,= 8|,= 8!=Y= !=%Ʈ=ZY= Y= %Ʈ=Z =ԋ;=ؽы)=ؽL=pzս|=׽P=׽B=@@ڽP=׽F=0׽B=@@ڽB=@@ڽF=0׽<=%ڽF=0׽= ֽ<=%ڽ<=%ڽ= ֽΝL=wٽΝL=wٽ= ֽН=@ؽ= ֽɝԿ=KֽН=@ؽН=@ؽɝԿ=KֽН=ؽɝԿ=Kֽҝ=yսН=ؽН=ؽҝ=yսҝ= ؽҝ=yսΝx=`Խҝ= ؽҝ= ؽΝx=`ԽÝ=׽Νx=`Խ/aB=@ԽÝ=׽Ý=׽/aB=@ԽX=׽/aB=@Խ <=,ԽX=׽ <=,Խӣ=0ӽX=׽X=׽ӣ=0ӽ񤝾Wb=6׽ӣ=0ӽo=ӽ񤝾Wb=6׽񤝾Wb=6׽o=ӽ<4=Pֽo=ӽN=cӽ<4=PֽN=cӽe%=,ӽ<4=Pֽ<4=Pֽe%=,ӽx+=ֽe%=,ӽ/Ծ= ӽx+=ֽo=U׽KޜU=dӽɜx=ӽt;= +ԽdB=AԽ>.=׽o=U׽ɜx=ӽ>.=׽ɜx=ӽe=0ӽ>.=׽>.=׽e=0ӽt;= +Խo=U׽&ۜ5=ֽKޜU=dӽ&ۜ5=ֽRݜ 4=ֽKޜU=dӽKޜU=dӽRݜ 4=ֽN=+ӽRݜ 4=ֽ9 =ֽN=+ӽN=+ӽ9 =ֽ/վ= ӽ9 =ֽ2/=ֽ/վ= ӽ/վ= ӽ2/=ֽ/Ծ= ӽ2/=ֽCn=ֽ/Ծ= ӽ/Ծ= ӽCn=ֽx+=ֽL=pzսы)=ؽqw=@Խы)=ؽN=ؽqw=@Խqw=@ԽN=ؽdB=AԽN=ؽȕI= ؽdB=AԽdB=AԽȕI= ؽ>.=׽ޜ=׽G=fڽC=p=׽G=fڽ<=0#ڽC=p=׽C=p=׽<=0#ڽ(=ֽ<=0#ڽ&=pٽ(=ֽ(=ֽ&=pٽn=`ֽ&=pٽԋ;=ؽn=`ֽn=`ֽԋ;=ؽB&=pսԋ;=ؽL=pzսB&=pսB=@@ڽ9V=ڽ|=׽9V=ڽZ=P۽|=׽|=׽Z=P۽fSo(=׽Z=P۽d_=K۽fSo(=׽fSo(=׽d_=K۽.)=׽d_=K۽/Eb=0p۽.)=׽.)=׽/Eb=0p۽n*=׽/Eb=0p۽`=Z۽n*=׽n*=׽`=Z۽眾# =׽`=Z۽ݜ"[=P۽眾# =׽眾# =׽ݜ"[=P۽ޜ=׽ݜ"[=P۽?ӜY=ڽޜ=׽ޜ=׽?ӜY=ڽG=fڽDk=нBŠ=NýH@w=ϽBŠ=Nýw=%ýH@w=ϽH@w=Ͻw=%ý'M=`Ͻw=%ý9V= ý'M=`Ͻ'M=`Ͻ9V= ý63=Ͻ9V= ýȜ-=Pý63=Ͻ63=ϽȜ-=PýJޜ\=½ ѥ=pϽZtL=PϽ/7=P½ZtL=PϽw@-=PϽ/7=P½w@-=PϽ;/(=Ͻ/7=P½/7=P½;/(=Ͻ.=@½;/(=Ͻ 4=0Ͻ.=@½.=@½ 4=0Ͻ=p½ 4=0Ͻݜvӥ=Ͻ=p½=p½ݜvӥ=ϽJޜ\=½ݜvӥ=Ͻ֜ǥ=ϽJޜ\=½Jޜ\=½֜ǥ=Ͻ63=Ͻ/7=P½d=P½ ѥ=pϽd=P½\=½ ѥ=pϽ ѥ=pϽ\=½ꠝv=PϽ\=½(}.= ýꠝv=PϽꠝv=PϽ(}.= ý컝.=Ͻ(}.= ý¹̍=p ý컝.=Ͻ컝.=Ͻ¹̍=p ý#uw=%ýo=нiϝj$=?н)=ý)=ýiϝj$=?нѝ=Ѕýiϝj$=?нН㦣=Pнѝ=Ѕýѝ=ЅýН㦣=PнН:=sýН㦣=PнН7=@нН:=sýН:=sýН7=@нΝȠ=MýН7=@нѝ=@нΝȠ=MýΝȠ=Mýѝ=@н#uw=%ýѝ=@нŤ=Ͻ#uw=%ý#uw=%ýŤ=Ͻ컝.=Ͻ!=Ľɻf=pн󢝾<=pýɻf=pнo=н󢝾<=pý󢝾<=pýo=н=`ýo=н)=ý=`ýA=Ν=;Ľhe= нDvo=&Ľhe= н`=нDvo=&ĽDvo=&Ľ`=н!=Ľ`=н̡=н!=Ľ!=Ľ̡=нɻf=pнs0I=нB͜\=нݜ =pĽB͜\=нޜ= нݜ =pĽݜ =pĽޜ= н ٝ=7Ľޜ= н \=н ٝ=7Ľ ٝ=7Ľ \=н9/ ҝ=:Ľ \=н0/A=Pѽ9/ ҝ=:Ľ9/ ҝ=:Ľ0/A=PѽA=Ν=;Ľ0/A=Pѽ2?=0ѽA=Ν=;ĽA=Ν=;Ľ2?=0ѽhe= нݜ =pĽל(=0Ľs0I=нל(=0Ľ𮜾=ýs0I=нs0I=н𮜾=ý7q=н𮜾=ý6=pý7q=н7q=н6=pý= Iн6=pýspj=ý= Iн= Iнspj=ýDk=нspj=ýDR:=rýDk=нDk=нDR:=rýBŠ=Nýdʧ0h/b0ݤdʧ00ݤ0D*Ԩ@˯%h/b9u 0ݤ9u ap0ݤ0ݤapD*Ԩ@˯!ܬs0%!ܬs0bMG%%bMG:6:6#P%#P*~צ%%*~צ%(B*~צ-8B%(B%(B-8B%o-8B-A%o%o-A0.@0.@轿 .0%o罿 .0轹P%o%o罹P'}Pj'}PjeܬNR%oeܬNR载ԬN%o%o罽ԬNȟV=[>ci=ţ@@0ݤoci=ţ@@{9eR0ݤo{9eRP7`S0ݤo0ݤoP7`S Jpw竾30ݤ'B[@0ݤ'B0ݤo[@[@0ݤog0ݤo Jpgw竾3竾A@0ݤ'B竾A@竾)B@0ݤ'B0ݤ'B竾)B@0ݤ竾)B@<﫾 0ݤ0ݤ<﫾 03ڽ}ٽ%⢛ֽ3ڽ%⢛ֽܑ;ڽ}ٽܬ¾pUٽ%⢛ֽܬ¾pUٽŬ˚0 ٽ%⢛ֽ%⢛ֽŬ˚0 ٽێ՚ؽIY͚ٽF:ϾTٽ0ݤo۽F:ϾTٽk)vٽ0ݤo۽k)vٽڽ0ݤo۽0ݤo۽ڽY=ڽY=ڽ쫾|`ڽ0ݤo۽쫾|`ڽm竾o۽0ݤo۽0ݤo۽m竾o۽0ݤ"Tm竾o۽q𫾱kXܽ0ݤ"T0ݤ"Tq𫾱kXܽOpܽOpܽ_ 7tݽ0ݤ"T_ 7tݽ2‚0ݽ0ݤ"T0ݤ"T2‚0ݽ9Xݽ9Xݽe0޽0ݤ"Te0޽d ޽0ݤ"T0ݤ"Td ޽޽޽Ь6ݽ%"TགྷЬ6ݽ3ܬw@ݽ%"T3ܬw@ݽy0Zݽ%"Ty0Zݽoܽ%"T%"ToܽmЧܽmЧܽ-{l۽%"T-{l۽,qq۽%"T%"T,qq۽%o۽,qq۽,vq۽%o۽%o۽,vq۽%⢛ֽ,vq۽+ypڽ%⢛ֽ%⢛ֽ+ypڽܑ;ڽ޽%"T0ݤ"T%"T%ՠ0ݤ"T0ݤ"T%ՠ0ݤԠ%ՠ%o0ݤԠ0ݤԠ%o0ݤo%oȟV=0ݤo0ݤoȟV=[>D*Ԩ@%0ݤ%%Eq0ݤ0ݤ%Eq0ݤEq%Eq%!00ݤEq0ݤEq%!00ݤ 0%!0%Hc@ܽ0ݤ 00ݤ 0%Hc@ܽ0ݤGc@ܽ%Hc@ܽ%6P׽0ݤGc@ܽ0ݤGc@ܽ%6P׽0ݤ5P׽%6P׽%-2ӽ0ݤ5P׽0ݤ5P׽%-2ӽ0ݤ,2ӽ%-2ӽ%RJPн0ݤ,2ӽ0ݤ,2ӽ%RJPн0ݤQJPн%RJPн%ڐ Ͻ0ݤQJPн0ݤQJPн%ڐ Ͻ0ݤِ Ͻ%ڐ Ͻ%齢0bн0ݤِ Ͻ0ݤِ Ͻ%齢0bн0ݤ轢0bн%齢0bн%0ҽ0ݤ轢0bн0ݤ轢0bн%0ҽ0ݤ~0ҽ%0ҽ%⢛ֽ0ݤ~0ҽ0ݤ~0ҽ%⢛ֽ0ݤᢛֽ%⢛ֽێ՚ؽ0ݤᢛֽ0ݤᢛֽێ՚ؽ0ݤo۽ێ՚ؽY;՚ؽ0ݤo۽0ݤo۽Y;՚ؽIY͚ٽ%o۽%~p?޽%"T%~p?޽%vv%"T%"T%vv%ՠ%vv%g%ՠ%ՠ%g%o%ڐ Ͻ% ;0ƽ%齢0bн% ;0ƽ%;&Ƚ%齢0bн%齢0bн%;&Ƚ%0ҽ%;&Ƚ%̽%0ҽ%0ҽ%̽%⢛ֽ%̽%n ѽ%⢛ֽ%⢛ֽ%n ѽ%o۽%n ѽ%[ؑ׽%o۽%o۽%[ؑ׽%~p?޽%g%L31%o%L31%] p%o%o%] p%(B%] p%e%(B%(B%e%%e%е%%%е%Eq%6P׽%Jн%-2ӽ%Jн%X.`̽%-2ӽ%-2ӽ%X.`̽%RJPн%X.`̽%ίȽ%RJPн%RJPн%ίȽ%ڐ Ͻ%ίȽ%Pƽ%ڐ Ͻ%ڐ Ͻ%Pƽ% ;0ƽ%е%k%Eq%k%x/%Eq%Eq%x/%!0%x/%%!0%!0%%Hc@ܽ%%bHݽ%Hc@ܽ%Hc@ܽ%bHݽ%6P׽%bHݽ%ûֽ%6P׽%6P׽%ûֽ%JнY9ûֽ%bHݽY9bHݽ%bHݽ%Y9bHݽY9bHݽ%Y9%%x/Y9Y9%x/Y9w/%x/%kY9w/Y9w/%kY9k%k%еY9kY9k%еY9ϵ%е%eY9ϵY9ϵ%eY9e%e%] pY9eY9e%] pY9\ p%] p%L31Y9\ pY9\ p%L31Y9K31%L31%gY9K31Y9K31%gY9g%g%vvY9gY9g%vvY9uv%vv%~p?޽Y9uvY9uv%~p?޽Y9}p?޽%~p?޽%[ؑ׽Y9}p?޽Y9}p?޽%[ؑ׽Y9Zؑ׽%[ؑ׽%n ѽY9Zؑ׽Y9Zؑ׽%n ѽY9m ѽ%n ѽ%̽Y9m ѽY9m ѽ%̽Y9~̽%̽%;&ȽY9~̽Y9~̽%;&ȽY9:&Ƚ%;&Ƚ% ;0ƽY9:&ȽY9:&Ƚ% ;0ƽY9 ;0ƽ% ;0ƽ%PƽY9 ;0ƽY9 ;0ƽ%PƽY9Pƽ%Pƽ%ίȽY9PƽY9Pƽ%ίȽY9ίȽ%ίȽ%X.`̽Y9ίȽY9ίȽ%X.`̽Y9W.`̽%X.`̽%JнY9W.`̽Y9W.`̽%JнY9Jн%Jн%ûֽY9JнY9Jн%ûֽY9ûֽ%ûֽ%bHݽY9ûֽY9PƽY9 ½Y9 ;0ƽY9 ½Y9PýY9 ;0ƽY9 ;0ƽY9PýY9:&ȽY9PýY9C`ƽY9:&ȽY9:&ȽY9C`ƽY9~̽Y9C`ƽY9.퓽ʽY9~̽Y9~̽Y9.퓽ʽY9m ѽY9.퓽ʽY9RнY9m ѽY9m ѽY9RнY9Zؑ׽Y9RнY9čZ׽Y9Zؑ׽Y9Zؑ׽Y9čZ׽Y9}p?޽Y9čZ׽Y9$gPP޽Y9}p?޽Y9}p?޽Y9$gPP޽Y9uvY9$gPP޽Y9Y9uvY9uvY9Y9gY9Y9X< AY9gY9gY9X< AY9K31Y9X< AY9/EY9K31Y9K31Y9/EY9\ pY9/EY9Y9\ pY9Y9ԣY9\ pY9\ pY9ԣY9eY9ԣY9JͪpvY9eY9eY9JͪpvY9ϵY9JͪpvY9{yY9ϵY9ϵY9{yY9kY9{yY9aY9kY9kY9aY9w/Y9aY9,pY9w/Y9w/Y9,pY9Y9,pY9*XY9Y9Y9*XY9bHݽY9*XY9zݽY9bHݽY9bHݽY9zݽY9ûֽY9zݽY9㿽`ֽY9ûֽY9ûֽY9㿽`ֽY9JнY9㿽`ֽY9spнY9JнY9JнY9spнY9W.`̽Y9spнY9-WcʽY9W.`̽Y9W.`̽Y9-WcʽY9ίȽY9-WcʽY9ܳƽY9ίȽY9ίȽY9ܳƽY9PƽY9ܳƽY9lfýY9PƽY9PƽY9lfýY9 ½)զo *0Y9JͪpvY9ԣ&7YMYM+ pY9ԣ+ p/Y9ԣY9ԣ/Y9Jͪpv/%jPY9JͪpvY9Jͪpv%jP)զo *0y⬾ٽY9Jͪpvy⬾ٽܬ9ǧY9JͪpvY9Jͪpvܬ9ǧjл'q`x0lJͪpvx0Dz᧽нlJͪpvlJͪpvDz᧽нD:uŧD:uŧl>bplJͪpvl>bp֦lJͪpvlJͪpv֦]@]@k諾ڥlJͪpvk諾ڥu髾lJͪpvlJͪpvu髾lԣu髾뫾0lԣlԣ뫾0<6M<6Ma6lԣa6ԣ`lԣlԣԣ`lԣ`7%ll7%t:e0t:e0wU){lwU){G$vllG$vpvpv*|Y9*|ܬe Y9ܬe 񬾀Y9Y9񬾀Y9ԣ񬾀ԣ`Y9ԣY9ԣԣ`&7ٝUpIؽmҬ`ЅؽY9čZ׽mҬ`ЅؽDܬؽY9čZ׽DܬؽٽY9čZ׽ٽBrٽY9čZ׽Y9čZ׽Brٽmٽmٽ. ]ڽY9čZ׽. ]ڽ-YڽY9čZ׽Y9čZ׽-YڽY9$gPP޽-Yڽ*Rd۽Y9$gPP޽Y9$gPP޽*Rd۽L=P0ܽL=P0ܽO0/ܽY9$gPP޽O0/ܽQRܽY9$gPP޽Y9$gPP޽QRܽܬSݽܬSݽU=ݽY9$gPP޽U=ݽAaWaݽY9$gPP޽Y9$gPP޽AaWaݽʊeW0bݽpvY9lY9Y9/EllY9/El/EY9/EY9X< A뽌l/El/EY9X< A뽌lX< AY9X< AY9彌lX< A뽌lX< AY9彌lY9Y9$gPP޽l彌lY9$gPP޽l$gPP޽Y9$gPP޽ʊeW0bݽl$gPP޽l$gPP޽ʊeW0bݽTU<ݽTU<ݽs:Sݽl$gPP޽s:Sݽ$R ܽl$gPP޽l$gPP޽$R ܽbO-ܽbO-ܽ19PPܽl$gPP޽19PPܽk뫾Ra۽l$gPP޽l$gPP޽k뫾Ra۽lčZ׽k뫾Ra۽m竾XڽlčZ׽m竾Xڽg ٽlčZ׽lčZ׽g ٽ_urٽ_urٽ z:ٽlčZ׽ z:ٽ4h0ؽlčZ׽lčZ׽4h0ؽ9ؽ9ؽf`UؽlčZ׽f`UؽapMؽlčZ׽lčZ׽apMؽٝUpIؽٝUpIؽY9čZ׽lčZ׽Y9čZ׽Y9RнlčZ׽lčZ׽Y9RнlRнY9RнY9.퓽ʽlRнlRнY9.퓽ʽl.퓽ʽY9.퓽ʽY9C`ƽl.퓽ʽl.퓽ʽY9C`ƽlC`ƽY9C`ƽY9PýlC`ƽlC`ƽY9PýlPýY9PýY9 ½lPýlPýY9 ½l ½Y9 ½Y9lfýl ½l ½Y9lfýllfýY9lfýY9ܳƽllfýllfýY9ܳƽlܳƽY9ܳƽY9-WcʽlܳƽlܳƽY9-Wcʽl-WcʽY9-WcʽY9spнl-Wcʽl-WcʽY9spнlspнY9spнY9㿽`ֽlspнlspнY9㿽`ֽl㿽`ֽY9㿽`ֽY9zݽl㿽`ֽl㿽`ֽY9zݽlzݽY9zݽY9*X佌lzݽlzݽY9*X佌l*XY9*XY9,p꽌l*X佌l*XY9,p꽌l,pY9,pY9all,p꽌l,pY9allaY9aY9{ylallaY9{yl{yY9{yY9Jͪpvl{yl{yY9JͪpvlJͪpvY9JͪpvjлlJͪpvlJͪpvjл'q`l㿽`ֽ0ݤ,浽ؽlspн0ݤ,浽ؽ0ݤo`Խlspнlspн0ݤo`Խl-Wcʽ0ݤo`Խ0ݤѽl-Wcʽl-Wcʽ0ݤѽlܳƽ0ݤѽ0ݤîνlܳƽlܳƽ0ݤîνllfý0ݤîν0ݤѪ Nͽllfýllfý0ݤѪ Nͽl ½0ݤѪ Nͽ0ݤΪ@̽l ½l ½0ݤΪ@̽lPý0ݤΪ@̽0ݤboͽlPýlPý0ݤboͽlC`ƽ0ݤboͽ0ݤ0*ϽlC`ƽlC`ƽ0ݤ0*Ͻl.퓽ʽ0ݤ0*Ͻ0ݤO ѽl.퓽ʽl.퓽ʽ0ݤO ѽlRн0ݤO ѽ0ݤ)OսlRнlRн0ݤ)OսlčZ׽0ݤ)Oս0ݤRӗPFٽlčZ׽lčZ׽0ݤRӗPFٽl$gPP޽0ݤRӗPFٽ0ݤIsݽl$gPP޽l$gPP޽0ݤIsݽl0ݤIsݽ0ݤ؅Ὄl彌l0ݤ؅ὌlX< A0ݤ؅0ݤp7彌lX< A뽌lX< A0ݤp7彌l/E0ݤp70ݤhP:轌l/El/E0ݤhP:轌l0ݤhP:0ݤX꽌ll0ݤX꽌lԣ0ݤX0ݤAph뽌lԣlԣ0ݤAph뽌lJͪpv0ݤAph0ݤ>pW뽌lJͪpvlJͪpv0ݤ>pW뽌l{y0ݤ>pW0ݤcA&꽌l{yl{y0ݤcA&꽌la0ݤcA&0ݤ\˰ 罌lalla0ݤ\˰ 罌l,p0ݤ\˰ 0ݤ佌l,p꽌l,p0ݤ佌l*X0ݤ0ݤ%wpὌl*X佌l*X0ݤ%wpὌlzݽ0ݤ%wp0ݤF@ܽlzݽlzݽ0ݤF@ܽl㿽`ֽ0ݤF@ܽ0ݤ,浽ؽl㿽`ֽ0ݤo۽0ݤRӗPFٽ0ݤᢛֽ0ݤRӗPFٽ0ݤ)Oս0ݤᢛֽ0ݤᢛֽ0ݤ)Oս0ݤ~0ҽ0ݤo0ݤhP:0ݤԠ0ݤhP:0ݤp70ݤԠ0ݤԠ0ݤp70ݤ"T0ݤp70ݤ؅0ݤ"T0ݤ"T0ݤ؅0ݤo۽0ݤ؅0ݤIsݽ0ݤo۽0ݤo۽0ݤIsݽ0ݤRӗPFٽ0ݤ)Oս0ݤO ѽ0ݤ~0ҽ0ݤO ѽ0ݤ0*Ͻ0ݤ~0ҽ0ݤ~0ҽ0ݤ0*Ͻ0ݤ轢0bн0ݤ0*Ͻ0ݤboͽ0ݤ轢0bн0ݤ轢0bн0ݤboͽ0ݤِ Ͻ0ݤboͽ0ݤΪ@̽0ݤِ Ͻ0ݤΪ@̽0ݤѪ Nͽ0ݤِ Ͻ0ݤِ Ͻ0ݤѪ Nͽ0ݤQJPн0ݤѪ Nͽ0ݤîν0ݤQJPн0ݤQJPн0ݤîν0ݤ,2ӽ0ݤ0ݤ>pW0ݤ'B0ݤ>pW0ݤAph0ݤ'B0ݤ'B0ݤAph0ݤo0ݤAph0ݤX0ݤo0ݤo0ݤX0ݤhP:0ݤ 00ݤ0ݤEq0ݤ0ݤ\˰ 0ݤEq0ݤEq0ݤ\˰ 0ݤ0ݤ\˰ 0ݤcA&0ݤ0ݤ0ݤcA&0ݤ>pW0ݤîν0ݤѽ0ݤ,2ӽ0ݤѽ0ݤo`Խ0ݤ,2ӽ0ݤ,2ӽ0ݤo`Խ0ݤ5P׽0ݤo`Խ0ݤ,浽ؽ0ݤ5P׽0ݤ5P׽0ݤ,浽ؽ0ݤGc@ܽ0ݤ,浽ؽ0ݤF@ܽ0ݤGc@ܽ0ݤGc@ܽ0ݤF@ܽ0ݤ 00ݤF@ܽ0ݤ%wp0ݤ 00ݤ 00ݤ%wp0ݤ竾)B@竾A@u髾ܬ9ǧy⬾ٽ:6y⬾ٽo *0:6:6o *0#Po *0)զ#P#P)զ*~צ*~צ)զ-8B)զ%jP-8B-8B%jP-A%jP/-A-A/0.@/+ p0.@0.@+ p .0+ pYM .0轿 .0YMPYM&7P&7ԣ`P轹Pԣ`'}Pjԣ`񬾀'}Pj'}Pj轘񬾀eܬNR轘񬾀ܬe eܬNRܬe *|eܬNReܬNR轻*|ԬN轻*|pvԬN Jpt:e07%a6<6Mg Jp7%g7%ԣ`gg轎ԣ`a6 JpP7`St:e0P7`S{9eRt:e0t:e0{9eRwU){{9eRci=ţ@@wU){wU){ci=ţ@@G$vci=ţ@@[>G$vG$v[>轾pv[>ȟV=轾pvpvȟV=载ԬNu髾竾A@轚뫾0竾A@w竾3轚뫾0뫾0w竾3<6Mw竾3[@<6M<6M[@gD:uŧdʧ0l>bpdʧ00l>bpl>bp0轳֦0<﫾 轳֦֦<﫾 轗]@<﫾 竾)B@轗]@]@竾)B@k諾ڥ竾)B@u髾k諾ڥ:6bMGܬ9ǧbMG!ܬs0ܬ9ǧܬ9ǧ!ܬs0轏jл!ܬs0˯轏jлjл˯'q`˯D*Ԩ@'q`'q`D*Ԩ@轰x0D*Ԩ@ap轰x0x0apDz᧽нap9u Dz᧽нDz᧽н9u D:uŧ9u h/bD:uŧD:uŧh/bdʧ0m竾o۽k뫾Ra۽q𫾱kXܽk뫾Ra۽19PPܽq𫾱kXܽq𫾱kXܽ19PPܽOpܽ19PPܽbO-ܽOpܽOpܽbO-ܽ_ 7tݽbO-ܽ$R ܽ_ 7tݽ_ 7tݽ$R ܽs:Sݽ3ܬw@ݽЬ6ݽAaWaݽЬ6ݽ޽AaWaݽ޽d ޽AaWaݽAaWaݽd ޽ʊeW0bݽd ޽e0޽ʊeW0bݽʊeW0bݽe0޽TU<ݽe0޽9XݽTU<ݽTU<ݽ9Xݽs:Sݽ9Xݽ2‚0ݽs:Sݽs:Sݽ2‚0ݽ_ 7tݽAaWaݽU=ݽ3ܬw@ݽU=ݽܬSݽ3ܬw@ݽ3ܬw@ݽܬSݽy0ZݽܬSݽQRܽy0Zݽy0ZݽQRܽoܽQRܽO0/ܽoܽoܽO0/ܽL=P0ܑܽ;ڽ+ypڽmٽmٽ+ypڽ. ]ڽ+ypڽ,vq۽. ]ڽ. ]ڽ,vq۽-Yڽ,vq۽,qq۽-Yڽ-Yڽ,qq۽*Rd۽,qq۽-{l۽*Rd۽*Rd۽-{l۽L=P0ܽ-{l۽mЧܽL=P0ܽL=P0ܽmЧܽoܽDܬؽ3ڽٽ3ڽܑ;ڽٽٽܑ;ڽBrٽܑ;ڽmٽBrٽٝUpIؽŬ˚0 ٽmҬ`ЅؽŬ˚0 ٽܬ¾pUٽmҬ`ЅؽmҬ`Ѕؽܬ¾pUٽDܬؽܬ¾pUٽ}ٽDܬؽDܬؽ}ٽ3ڽڽk)vٽ9ؽk)vٽF:ϾTٽ9ؽ9ؽF:ϾTٽf`UؽF:ϾTٽIY͚ٽf`Uؽf`UؽIY͚ٽapMؽIY͚ٽY;՚ؽapMؽapMؽY;՚ؽٝUpIؽY;՚ؽێ՚ؽٝUpIؽٝUpIؽێ՚ؽŬ˚0 ٽ9ؽ4h0ؽڽ4h0ؽ z:ٽڽڽ z:ٽY=ڽ z:ٽ_urٽY=ڽY=ڽ_urٽ쫾|`ڽ_urٽg ٽ쫾|`ڽ쫾|`ڽg ٽm竾o۽g ٽm竾Xڽm竾o۽m竾o۽m竾Xڽk뫾Ra۽/ T>Z3fNH>=y^>++T,>=y^>d}NG>T`e;j}~= T=b`+>ٽ;}=1fG>eŲG ?=y^>G ?Fnh @?=ry^>J=Ey^>nhW@?^;|~4=sQ=`>Y>hx>ٽg<}B=Y>hm>u>6||O=Bٽ=}6=ٽg<}B=y>|SP=䌆>Ytr>䌆>Ytr>g>xFٽg<}B=mg>x'᜽ ="~!ٽ;}u=ٽg<}B=] =~M5?s:, =~}=iϾ-5=Zi7{0>=Zi7{6>O_о_ս.)E!B>WG_,о䗁>*QPս~E%!dս)E!:>YPD>P D>4Pv ikt>*o4dս)E!t>{*4>ʦZս~E%!gս,E!3>Z94iw 5; W=FC$k W=”C$4' ?25ƾ9{3-YǾA >pt3$4Ľ4d >t#k W=”C$F2Ľ12dMF2Ľ12dMk W=”C$}u!rW=Cj$ƾF 3|o"-YǾ9}PizS >t#CrN.ny@ͽRTyý >8Jr >;t9}PizS=y^>9}PizSFcΰ7 =׺y^>=y^>FcΰWNG>#l>l?H> ?ՠTBd!?rEHl>?mGo!?E>ܕ>w>rV>w ?T~2>/(?;Bd!?rE2>6(?;/>[?/>򖽕!?̱EBd!?rEҞ/>[?,; ?Z9C3{?ZҼ>.ek?I>^ߑ>փr =Uck?}vg67?+J>>ЉrY*97?sÑ> r2>Ñ> rr6=2>Ñ> r>6=>W;=1x2>Ñ> r2>Ñ> rڎWqO=x<:Q^yڎWqO=xIyMR(<j^vy<5j^yIyMR;پҚg;پҚgjaоAL<Q^yjaоAle(<j^vy<5j^yle9g!x49g!x4?Gu<:Q^yI|?G1]!Z <:Q^y<5j^yl^Z:<QD:<QDr>!;s]Խ淽}r>!;st[>̾\RdF^Խ}oZ><̾Sd8>Fz]Խ淽}8>Fz%7>~Ž+sF^Խ}F^Խ}%7>~Ž+sJ~*>u >zƗ*> >~ zʅ>>qptF^Խ}ʅ>>qpt< ׅ>v)Խ緽1}F^Խ}< ׅ>vN& >n< ׅ>v%v!>n7.> n%v>򖽕!?̱E%v">>vd>򖽕!?̱EBd!?rE">>vdЕ>>aV<)ϙC)Խ緽1}<:Q^y]Խ淽}A  e<5j^y<5j^yA  e< U?'` eս&E!!ٽ;}u=*dbF>=y^>=y^>*dbF>^C<U ?*dbF>H뷽B( *??n<U ?m@<Uu ?H뷽B( *??=6~T?緽 (,??XD1lP2q?=6~T?=6~T?XD1lP2q?{?eӊ}=E}?"귽>e?Q<0#F>{?Q<0#F>{?"귽>e?=% ?T?%>e?V,??(?=% ?T?=% ?T?V,??(?c\+=z?RI>PGp?p¤>cx~?},=z?9I>,=z?9I>cx~?}A򖽕!?̱E/;r ? Z*=Y'?'oA3*=`'?iA/;r ? Z2>Ñ> r/;r ? Zgrz?!>2>Ñ> r>>@rz?xH!>C1{?[ԼN& >n#@k/|?j*Խ Ǖ}#;؁<0|? $5k>u?j*Խ Ǖ}N/Խ뷽} $k>.u??'` e $5k>u?%?wY??'` eA  e%?zzY?Geս#E4!UEp?0Τ>#h|r'cx~?}cx~?}Ģ#,p>@ e?rཱྀ#Rp>@$/CO}? `e?,( `e?,(?$pHO?Bd!?rE@$/CO}?8F%.x$G?>򖽕!?̱E>򖽕!?̱E8F%.x$G?t%=->vnE%pZ*G?ɴm?N& >nt%=->vnɴm?#;؁<0|?%?zzY? !hս 'E?!hս 'E?!Ӈ#Fd?>_5n>s+#d?>#Az?). >5?s:,5?s:,#Az?). >!ٽ;}u=#Az?). >$py? !ٽ;}u=!ٽ;}u=$py? ,d;>]"}=}?<#Ӌ1Ej"귽>e?<#Ӌ1Ej#C跽&>Fe?跽&>Fe?#CV,??(?#C v$^R|' Bp?ݤ>r$>R|' ~5sؐPGp?p¤> Dp?%Ҥ>97エs̐#W|(<$!ny?!=c?W(dyK>?l'c? l!#q7?-*dbF>*dbF>!#q7?--跽(&??#t7?-B#P>'\H뷽B( *??귽S((0??K#G>*\;G{/q?B#P>'\$ V>vXD1lP2q?XD1lP2q?$ۇV>Dv3|=}?$ۇV>DvュQ}]"}=}?]"}=}? シCIQ}#"BjNgwDv(ν>r$ V>vB#P>'\_+͝>+r_+͝>+rB#P>'\IcI?PB#P>'\!#q7?-IcI?PIcI?P!#q7?-M52I?#t7?-nc?xa7XI?7XI?nc?xa3n?*2nc?xa!$~oy?s!ԫ^n? 'ԫ^n? '!$~oy?s! p)~?KsT$xoy?9 #Az?). > p)~?Ks p)~?Ks#Az?). >"[w?\r>#@z?G >#d?> pew?+r>w?+r>#d?>V_Z??#d?> (g?%?zzY? $5k>u?gl>g?gl>g? $5k>u?覽>|? $k>.u?Т#t /|?#馽>f|?#馽>f|?Т#t /|?͍8S'ȭ{?Т#t /|?ɴm?l'{?Ym'A{?ɴm?ȩN侉'd?ɴm?E%pZ*G?Ʃ\Y$d?Ʃ\Y$d?E%pZ*G?ΪpV0Y8?8F%.x$G??$pHO?ΪpV0Y8?ΪpV0Y8??$pHO?:^`>?$pHO?Ģ#,p>ќ^b[>:^`>Ģ#,p>v=(yS>#p>#W|(v=(yS>#W|(R|' #CɡE"\Ev"#C T#C#"Bj T T<#Ӌ1Ejw9t<#Ӌ1Ej シCIQ}w9tw9t シCIQ}NgwDvNgwzyS>F᜽/Q}'=rKtkG>g yMS>P y5S>LIwky>󞫽^\Q>rKtkG>%Hd?:^`>v^j>%Hd?˪Y0V8?%Hd?O.eN?ΪpV0Y8?ΪpV0Y8?.NƈN?ؒYi%d?O.eN?}о4g?ؒYi%d?ؒYi%d?}о4g?Ym'A{?Um*о˰g?)*~?Ym'A{?Ym'A{?A*~?覽>|?)*~?a:&B>z?馽3>C|?覽>|?rb B>z?,a>g?`?B>z?Ң>(d?gl>g?gl>g?Ң2>t!d?l*?=?Т{>i%d?>+?+?V_Z??}\Z?LJ?8z&n?A> pew?+r>08$n?>`sD?Ӎ[<qw?r> ]w?Cr>`sD?Ӎ[qa8/?_P13?oPw>qa(ν>rw>qac-]>(y_+͝>+r(ν>rE]>)y) y<c-]>(yŠ<_ ~:)hw<) y<WŠC_~㥽ztŠ `V~4Shq㥽zt⥽t4Shql U4Shq^lSrR T TnOuRɡE"oVpRHC#ɡE"ɡE"HC#\_kP5C۩#SciLѾXckXckVc( iѾޜ`|ǫO;?.?V>>y=E?,?`sD?Ӎ[<8n?߾>">~j?{'V>0`?#=Q>3`?z =;$?\/M?vȇ=8z&n?A>#?/M?==]y?&lV>Ը8%n?Ǔ>V8'n?>=]y?&lV>`sD?Ӎ[<=]y?&lV>'>^\?7>C?h[<`sD?Ӎ[<>\?咧>O;?.?V>Y>I8E?4?3ڮ>vOA?B?y`]D?41]<3ڮ>vOA?B?+?\>R?`sD?Ӎ[<`D?uY<+?\>R?=F=wv? > =rNy?6+Ф_=E|?Y>y?<='P+g `=|?*>-l?Y>y?<=X>vy?<=*>./l?gv>H?nܔv>AH?" N?p?X>vy?<=J ?l?~*?0 ?Y>y?<=Y>y?<=x* ?7 ?7@?W>4@p?> :F?r>X>vy?<= [9F?h~>𾎽5Qz?WJ>Y>y?<=Y>y?<=𾎽5Qz?WJ>`>.+`?[>6Oz?pJ>F.L?=>)`?>>,`?>ެ{L?*=V9?#hV>?zL#RT?~N/> &`?>N%NT?/jj?>>)`?>>)`?>jj?>Ҟ >8L??j2j?>|B?? >K L?i?Ҟ >8L??|B??y}y-?|~-?F3?' >L??F3?'Ҟ >8L??Ҟ >8L??Ul>:yc?ʾ_U? ?l>{c?ʾ>Ays?R"HVU?G ?>Ays?R"DP=!l? >`U? ?_U? ?NP=F$l?>08$n?>$P=l?>-? I?W^58 n?7>V8'n?>?1I?_">j?~:==h~?:>? @7?}о4g?ï>F?J7??4>| &?0:о2g??/Q>%?J>'Ϣ=k?}о4g?O>Ң=k?E>5ψ2k?}о4g?}о4g?/>ޠk??K??-K?o ?59Q?}о4g?o ?59Q?~.=Gv?}о4g?}о4g?.=v?)*~?.=詆5v?r> R?)*~?)*~?p>" R?-?о.?-? Ѿ?)?E>1VI?)*~?E>1VI?_?n. ?)*~?)_=~?_?n. ?>vO{>>vO{>t>R czp>)*~?~t>cf>6f=F!?)*~?>~?׏d=:F˝!?ύd=[E!?_U? ?Ҟ >8L??`U? ?>+?L?? >L??>+?d?KI?u+?i%d?>-?bI?>-?bI?Т{>i%d?6>>k?Т{>i%d?a:&B>z?>5>˦k?>5>˦k?ĕ%B>8z?~>9={?a:&B>z?)*~?b>={?b>={?)*~?u>_ýPw?)*~?|f=F!?u>^ý8Ow?u>_ýPw?g=Fg!?>rӉ=䡾r@r=l0 )R>Hu>*ýOw?l0 )R>Q3%?u>_ýPw?u>_ýPw?Q3%?*?*?40辥?u>^ý8Ow?0}?U.xp?u>^ý8Ow?u>^ý8Ow?/Ϯp?)&>Pa?U.xp?Q=:K?)&>Pa?Q=:K?6zm3?&>V徂a?)&>Pa?&63?U~:q,2>)?}:E2>О)?w #[>(N?)&>Pa?w #[>(N?S>V?)&>Pa?&>7徕a?ۦ>V? ]32?U> +2? >J?8?&>}` a?sJ?٬?Ƚo?]>&>}` a?:&>6徤a?CȽao?6>=ld=oh~?=ǘ=\i~?}о4g?&>Qa?B?/оg?2N?&>}` a?&>}` a?2N?5>|&}>?2N?%Hd?>D&O>?>D&O>?%Hd?>S ?䝽'Ha?Guk>>S ?>S ?Guk>[>mq>LIwky>O}M=g>pqD>>oq>O}M=>}jf=eP}=ޜ`|ǫ>2}=>2}=ߜa|%>vWpx✽`|WQcG i3Ѿ>vWp>veppWQcG i3Ѿ>8\wVc( iѾHC#>8\w>ˬ\4HC#>z2Y+3FC#棣UV@pR>z2Y+3> 2.3棣UV@pRK>G\uLS`rR4ShqK>G\K>G\4Shqv>(Nov4ShqWŠC_~v>(Novv>(NovWŠC_~ƀ> =}WŠC_~c-]>(y>} =}>} =}c-]>(y߀>r>[qc-]>(y잽\>2a>~>@Yq>~>@Yqힽ>a:>` ?Sힽ>aE0?[*8P> ?Sd>Q ?SE0?[*8>>?W&E0?[*8}[?">F>?S&>>?W&}[?>^d?ILپ}[?Cv?`~>d?QGپ>^d?ILپv?o>y?+Cv?``D?uYy?+>y?.+`sD?Ӎ[y?j<=`sD?Ӎ[<=F=wv? >X>vy?<=X>y?S:=F=7v?>=Nu%y?>} =}xG?d7f v>(NovxG?7 6qG? X]v>(Novf> Oov6qG? X]K>G\6qG? X];A?y¾K>G\K>G\9A?¾> 2.39A?¾G?48ɾ>z2Y+3>z2Y+3G?&ɾ>8\wG?&ɾVoG?iE}>8\w>8\wVoG?iE}>veppflG?n}XSA?Q&ɲ>vWp>vWpSA?Q&>2}=SA?Q&jG?=>2}=>}jf=G?ʲ=>oq>jG?= pG?π>[>mq>[>mq>vmG?OҀ>>S ?vmG?OҀ>uA?ٽ`>>S ?Zf>eS3 ?PvA?n>>D&O>?PvA?n>G?9?5>|&}>?>D&O>?G?9?&>}` a?G?9?tG?U`?&>Qa?&>Qa?tG?U`?Hu>*ýOw?tG?U`?#A?y}.'?u>^ý8Ow?Hu>*ýOw?#A?y}.'?b>={?#A?y}.'?G?_L>d?b>={?We>9={?G?_L>d?>5>˦k?G?_L>d?~G?{>t5?6>>k?>5>˦k?G?>e4?>-?bI?G?>e4?qG?>6>>-?bI?@>d?KI?oG?i>> >L??oG?i>>GA?J?T>Ҟ >8L??Ҟ >8L??DA?ǵ?Վ>>'`?r>DA?ǵ?Վ>G??6+>>)`?>>,`?>G?h?+>Y>gy?i<=G?h?+>8mG? ?D Y>y?<=Y>gy?i<=6mG? ?>y?.+6mG? ?bA?b!?6o>y?+o>y?+aA?a!?I7>^d?ILپaA?a!?I7G?W?;m>^d?ILپ>^d?ILپjG??o">F>?S&G??.lrG?]>gB뾥>>?W&>>?W&rG?]>gBd>Q ?SrG?]>gBA?>>d>Q ?S:>` ?SA?;>r>~>@YqA?;>rOG?>>~>@Yq߀>r>[qG?"i>>} =}G?"i>xG?7 >} =}2>Ñ> rtG?U`?9b*=\'?lArG?Te?G?UK8?*=Y'?'oAe*=.`'?OiAG?9?0=T? k W=”C$lG?>O>< UqG?>E>{G?{><?9?<5j^yyG?>;?G?_L>d?<5j^ypd?J>>ЉrG?_L>d?A?}.'?J>>Љr>ϑ>HrA?}.'?tG?U`?G?9?PvA?n>0=T? PvA?n> pG?π>0=T? =T?b nG?ƀ>@<{?#FTqG?wÀ>jG?=AG?ʲ=SA?Q&+=z?RI>XSA?Q&ɲmG?o}A)=z?4I>A)=z?4I>VoG?iE}\6mG? ? >t#8mG? ?D G??6+> >t# >t#G??6+> W=ЎC$G?h?+>DA?ǵ?Վ> W=C$ W=Cˤ$DA?ǵ?Վ>oG?i>> =vχT?rG?]>gBn<U ?rG?]>gB뾰G?W?;mq<U ?q<U ?jG??o=y^>G?W?;maA?a!?I7=y^>=y^>aA?a!?I76mG? ?G?&ɾ;A?y¾=% ?T?;A?y¾6qG? X]= ?T?= ?T?6qG? X]<{?6qG? X]xG?7 Q<0#F>{?FV{?xG?7 =6~T?G?"i>IA?>>T=/{DŽT?=6~T?IA?>>TrG?]>gB9}PizS}Pz `𾎽5Qz?WJ>,?\>R?ή>'QA?D?<>-tX>3ڮ>vOA?B?F>F:E?M5?䌆>Ytr>䌆>Ytr>Y>I8E?4?Lg>x? >:E?/?J;??/?e>g>xLg>x?O;?.?V>] =~M =~J;??/?e>!}=)i ϾJ;??/?e>>\?>#$}=i)Ͼ|=it Ͼ>\?攧>}=iϾ>\?攧>=]y?&lV>|=i|Ͼ|=it Ͼ=]y?&lV>@I>Xi%z=]y?&lV>?!2M?=cK>Zipn@I>Xi%z?!2M?=B>M_Eо?4M?LJ=:a>!/`?b!=B>M_EоQD>I_!о:a>!/`?b!=1>TP`>.`?!=">j?~3>AVPE">$j??PI?^1>TP3>AVPT?pI?^#D>PK ?PI?^nP='l?>#D>PK dD>&P nP='l?>Lt>L*j4nP='l?>⻇>us?"Lt>L*j4e>Dxs?"l>|c?%ʾLt>L*j4Lt>L*j4l>{c?ʾ>NZl>{c?ʾ ,>NZUƾ3Yv-?ɦ|B??#QT?g/V6?d*{z~!ƾ9{3<B?V⚾*{z~!|B??j2j?>*{z~!zs!jj?>#QT?g/ƾ9{3𧾌( 35%y-?4' ?25d"iYv-?ɦYv-?ɦd"i7S3?#'d"is9yU3?]'-Gd3?Y$'s9y<ޠp?>s9y( </<'p?ٳ><ޠp?> ( <:4<)R/<'p?ٳ><ޠp?>G5<R3>Z𾎽5Qz?WJ>9}PizSF.L?=9}PizS!-ǾF.L?=F.L?=m-ǾV2?fm-Ǿ4Ľ4dV2?fV2?f4Ľ4d*{z~!nܔv>AH?+-᾿T>J ?l? @T->NG>: ?4j?p ?p?NG>x* ?7 ?NJG>F8cHx* ?7 ?x* ?7 ?"QZc6@?>"QZc}Pz `3@?>4@p?>9}PizS [9F?h~>9}PizS6Oz?pJ> :F?r>䌆>Ytr>5>|P=,?\>R?fy>a|~P=Y>hx>+?\>R?+?\>R?Y>hx>?F=(v?ߺ>Y>hx>VT=4`;>P=F=wv? >sQ=`>AW=7sN y?VT=4`;>T`e;j}~=V=]Ney?V=]Ney?T`e;j}~=m+ƥ_=Z|?T`e;j}~=Bne@?m+ƥ_=Z|?6+Ф_=E|?wna@?*>.l? nd@?G ?*>.l?Y*>00l?TG ?nܔv>AH?G ?Z3fNH>nܔv>AH?nܔv>AH?CT3f;>++T,>ڎWqO=x.q@p?IyMRU.xp?40辥?L{_R9VMCR0辄?;پҚg40辥?"?o;پg;پҚg ]{$?jaоA*?3z%?ƷVоAƷVоA/~%I?l0 )R> [>˾Td:3>:sg=Fg!?{>+GsR <ϙC|f=F!?<)ϙCh^Z1f=Fݜ!?|f=F!?h^Z|f=F!?h^Zb?G|f=F!?|f=F!?I|?G1塾@rԉ=b?G9g!x4>rӉ=>rӉ=r6!40 R?>[!4lel0 )R>5 5R>lejaоA|f=F!?t>R czp>oZ><̾Sdt>R czp>>vO{>oZ><̾Sd [>˾Td>vO{>8>y%z>vO{>5Y?3?8>y%z\8>Ez5Y?3?C>Ž)s`? ?E>1VI?6>m ƽ%+sC>Ž)sE>1VI?c-?Ѿ1?ە>_>>~V1>>d[?K?[?K? 0>>do ?59Q?1>>d< ׅ>v ?hQ? ?hQ?%v.=詆5v?< ׅ>v< ׅ>v.=v?.=v?%vp>" R?%vօ>>ntr> R?p>" R?Fׅ>>otc-?Ѿ1?Fׅ>>otƗ*> >~ z-?о.?-?t Ѿ0?~*> >lzC>Ž)s?C>S%?l>n?;G?>Т=k?,l>>s?BGܕ> >ƀVO>Ң=k?O>Ң=k?ܕ> >ƀVE>5ψ2k?#ϕ>$>V|?O/!K?/>ޠk?=ǘ=\i~?D/>'[?>?=C7?,/>[?H2>6(?;>?=C7?>?F7?2> 3(?;D?L>w&?2>6(?;s>$ ? T?C>S%??/Q>%?30> ?!T,l>>s?BGVmQY*97?=Bdk?xcc -2?>c -2?>=Bdk?xc J?e?=Bdk?xceC2{?Ҽ J?e? J?e?eC2{?Ҽ}ȽՔo?3N>eC2{?Ҽgrz?!>ɱȽ;o?M>}ȽՔo?3N>grz?!>(='=ii~?npz?6!>/;r ? Z=ǘ=\i~?:==h~?-;4?ZҞ/>[?c -2?>'>V?VmQGV?Ap [>!.N?VmQC/N??AC-q [>C/N?B{:/2>)?ͧ?@-ͧ?@-U~:q,2>)?>6=x:,2>h)?63?>6=>6=ʼ6o'3?ڎWqO=xʼ6o'3?L;=W;=1xڎWqO=xL;=Q?=>sh?0=p?sh?1>\??Y^;/>Ir?="?&C?ٽ">&!r?[>:Q?2?v%?=>sh?}2?%?n]?>=>sh?=>sh?n]?>^;O;>Sr?="?&C?Y>3/ ?xP?ٽ">&!r?Y>3/ ?xP?ky>v˃>Bt?rKٽY">~ r?ٽ">&!r?ky>v˃>Bt?A>>.h?A>>.h?g>!4>&w?rKٽY">~ r?g>!4>&w? =>=J}?ٽ">&!r?ٽ">&!r? =>=J}?25O{? =>=J}?"}=|PU#z?5PW{?5PW{?"}=|PU#z?iսbܞb?"}=|PU#z?"}=|PU#z?iսbܞb?iսbܞb?"}=|PU#z?+>u?+>u?4>[1p?սAb?4>[1p?">/g?ս辬b?սAb?">/g?D>~i?D>~i?t>9 L?iսbܞb?t> SL?.>\;I)?qս.#辠b?iսbܞb?>X;w)?84<ľvl?# S{S>>9nG>W=6a?%s9&nE>k=U> W= a?U>wpc8B? W=wa? W= a?2B?ƾ^׽;?HcVu;9>? >Ɂb;}?ýk{v? >Ɂb;}? W= a?ýk{v?ýk{v? W= a? #?sW=F﾿a?ƾ^׽;? #?HcVu;9>?|PZ>M x? >>b <}?|P>2 x?|P>2 x?" >b<}? >>b <}?|PZ>M x?=>sh?|P>2 x?dC\<>5`?7 =T>gsh?=>sh?dC\<>5`?E;>]??zl>Yb1ξQ>7l r;cl>b2;BNQco%>mj!>UlV,2>ZG=c:,2>[ϝ/>'$(6;Cc$햽6cPP/>9(<.;OcqaCrlX3tpIЯ;]4>m|ҢII6] !:X>>Vp|ޕY':bm6 g!>Qo|U>n|*2t!X EՠE)AaP5U>n|*2obP. Wm y=U>n|*2>Qo|W y=7Wm y=5L-TE><Ëhg>_Ϗ2LkmE>1پ]e>1پ]e>'?<˅h)><>'?̨;+Qx*>e[ͨQl> D?u"C?b?nؾb?e`?ؾMb?.]量q?,]^vq?<ӅuW>m>6O^$>]Խs/> >Q^> [>sI? -Խss>Z>I?8>p.>;aԽsӚ>8>p.>8>ׇhZ>bԽsݎ>_Խ=sȦ>7>hS>}*>{#=~*>{A=cʅ>v=J_Խis9>Ʌ>Օv=5= <tW_Խ=sȦ>]Խs/>o< EX]vTNo< EXo< EX1JvBO1JvBOo< EX?cճo< EX#>l,s>(G=c:?cճ#>l,s>(͕>j[o<ӅuW>.ԽsD> bԽsݎ>AfaH ?AfaH ? <+o2s7?>=^H?qս.#辠b? <+o2s7? <+o2s7?iսbܞb?`W=յYa?iսbܞb?84<ľvl? W= a?sW=F﾿a?84<ľvl?,& rU{ku>>^;O;>Sr?ٽ">&!r?=>sh?ٽ.>?r?H?G?=>sh?=>sh?H?G?0?B%=m?G>D鷽\^?>G1}?C=k=3m?<>k=3m?<>G1}?C=e_^=a2?l7=a2?l74>_^um$}>|a^^l=m9|p<`I>mp<`I>m^l=m9|)=bd8=.:|qu)=kc)=kcquBn|*2,;/pnm@1}>A|Ɣ&>q|`V}:CtmQ&t%vN=#Gy?xn+Խs>#My?Uy $c?Rھ)Խ8s>^-Խs:>c$$c?DBھ>=^H? $c?Rھb%9?Cr+>=^H?>=^H?R%9?o+fս#:b?^l=m9|Ň#^>v?quۆ#^>J~v?W#M>[?ququУ#ٴ>n$[?аL]HG#>>([?@$8?BD,?аL]H WH@$8?BD,?G=c:=$8?A,?E%u`c?B>G=c:G=c:辘E%u`c?B>n%vAOC%Ydc?2>I{?>%vNn%vAOJ{?>-#y?b%9?Cr+ H9> [iսbܞb? m/>[A#b>Cviսbܞb?fս#:b?m# c>@v5O{?[# c>Bv#4ג|5O{?5O{?#4ג|ٽ">&!r?#4ג|$Iwekٽ">&!r?ٽ.>?r?C$ޏgk2?9G?t?pÆ#DQ/ ?跽^H?L.#Q' ?Ļ#>6>E?x鷽XH?x鷽XH?Ļ#>6>E?$}>|a^Ļ#>6>E?nt$Ӧ2k?ks>Bd^$}>|a^nt$Ӧ2k?J#=y8|X$ח_k?5x~}?d8=.:|^l=m9|6C }?Ň#^>v?$IwekOq,yG]?G?~noG#dPH?G?H?G?#dPD鷽\^?>#dP8#Oq.BT]^?<>wa^?p>#)Nq(F0}?Vw=8#Oq.$|1 G1}?C=G1}?C=$ |P-AȈt?Gy!$|sה>t?pt?p.s>܇#Q ?ļ>9zQaG>$|1 M,}н$|-8#Oq.M,}нM,}н8#Oq.ejzǾ8#Oq.?#PcLjǾcLjǾ#dP4B)$R#k|PwKr`G7LB^$7LB^$Kr`Gҫ Vm:SG$Iwekҫ Vҫ V$Iwek+öuI$dkG# ;|XpuXpuG# ;|<~G# ;|T#sc>Bvvo<~<~T#sc>Bv &b>pm# c>@v >a[E\佞b>5pgZdn>

[8 ?KN m/>[b%9?Cr+8 ?KN8 ?KN$9?r+ K?ZR%9?o+ $c?Rھ K?Z K?Z $c?Rھ馽%p?5 $c?)CھɊ#y? }립9p?(*립9p?(*Ɋ#y? }X~?@=#Gy?xI{?>-Y(~?(?-Y(~?(?I{?>yũ w?~>G{?>jG%bc?7>ɩl w?H~>ȩ w?~>jG%bc?7>̪OY??E%u`c?B>@$8?BD,?ϪMY?}?ϪMY?}?@$8?BD,?ߝ`C(?Լ??>$8?G,?#ʾ>![? ?(??? ?(???#ʾ>![?0=O>4h?#ʾ>![?Ň#^>v?0=O>4h?>`>h?Ň#^>v?n4=}2}?Ň#^>v?6C }?no=G3}?no=G3}?6C }?Y3jz?5x~}?Z$*k?Y3jz?Y3jz?k\$4Xk?ʡ #꾞b?nt$Ӧ2k?Ļ#>6>E?ʡ #꾞b?ʡ #꾞b?Ļ#>6>E? @2+6?#\;E?.#Q' ? @2+6? @2+6?܇#Q ?i䥽Rj`>Æ#DQ/ ?sה>⥽n`o>n`>sה>7zzG>ts˔>$|1 ļ>9zQaG>Y3jz?ߜ{=~?no=G3}?ߜ{=~?᜽֧>q?Bs:=X2}?no=G3}?bߜ$ǧ>q?:z>h?bߜ$ǧ>q?G?3zQ?0=O>4h?z>Bh?G?3zQ? ?(???G?3zQ?fD?_"?ߝ`C(?Լ?? ?(???D?b"?ͪJY?A?fD?_"?Pmi?8r>̪OY??[ΪrRY?Л?N}qi?mb>` w?j~>Pmi?8r>$ex?+T>` w?j~> w?Ӕ~>xtfx?T>-Y(~?(?$ex?+T>(m|?X~?@X~?@+l|?d립9p?(*(m|?`ɾj?<Ⱦﶦp?*립9p?(*bcj?LȾK?ybcj?LȾҢG? K?Z K?ZТF?8 ?KNϢ~G?y? ?O&q?N8 ?KNp@z?}O-m>py? ?O9^>Fn-m>p9^>Fn85=jz &b>p-m>pA8 =*zox<=~85=jzc]XOIGzox<=~vo<~'^$6IIzI<u'^$6IIzVac;<͈fuI<uQ0Zecҫ VQ0Zec|- ;ҫ Vԫc V|- ;7LB^$|- ;3Y` 4B)$4B)$`5Yv /j Ǿ`5Yv ힽMu􌾻/j Ǿn1"jzǾx^Nu$(}нힽMuǿ6Ի;}mн(}нǿ6Իh:zCG>6FػĠ[2vs>9zaG>9zaG>à0v>䥽Jq`E>à0v>HZ$?䥽Jq`E>䥽Jq`E>F5Zp'? ݶ2 %6?F5Zp'?ImMh/ W9? ݶ2 %6? @2+6?67a/ ]9?ʡ #꾞b?&pd/KZ9?}a?̡Fb?ʡ #꾞b?*8a?Wc3hz?a?UcVCy?Y3jz?Y3jz?TcVy?ߜ{=~?P;?#>A C> >9[K5IHzA8 =*z[ >ccn>~J]n>~J]l*?"ӽ(LW86=z.&?Zӽ+LT="Ѹ85=jz8%=QzT="Ѹ'^$6IIzT="Ѹ>p>h'^$6IIz'^$6IIz>%>hR;? >B T >W>[)خ>O>['^$6IIzۮ>>W[$?&B?nľ'^$6IIz'^$6IIz%?xB?pľF=W=WS=Di~?t4O+kss?+Y>ϼ#p $3vY>p $3v1]?ȶiG7?;iG7?; Y>e+2Y>p $3v Y>e+2}*Ty>Y>#6vY>p $3vGx*χ>9@T>z 65@T>,}  ]5 >~ZRX>T $v ]5 >~ZR(K[Y>p $3vY>p $3v򎽊(K[>L= l򎽊(K[b#1M>L= lj>=m lb#1M&VnйVVz8,%bTFj>=m l,%bTFQj*D>uz>L= l>L= lQj*D>uzf >>(gQj*D>uzq&I.f >>(gf >>(gx]O.|z*7 |z*7 T)I8j f >>(gTu$Iq <6\ >} >>&gY >,>Wg-< >}-< >}'<|B >}l> Il>_Fnl> I> se9^>Fn> seP=8>w{l>_Fnsa; >EnP=8>w{W86=zP=8>w{7?`W>98%=QzW86=z?3D9[ >cc#=t?`r>s?>gx?S>>?̞>̩?7?O(^x?T>?ے?3:]f>2a?ڊgx?S>d>b?>g?>@5$ex?+T>$ex?+T>>g?Y54?!G?"4?!G?"v ? U?Q%xtfx?T>v ? U?Q%L}.=b?4_=xtfx?T>$ex?+T>.=b?r_=(m|?L}.=b?4_=r>p]?=(n|?R(m|?fs>q]?==-?.?> -?d.?~>+H>_?]>*j|?FG>^?>Z?*!3?,>`,m|?*j|?FY?K,3?> >m= ? 96?>' ?ZJ6?t>?qH?(n|?Rt>I?$H?_f=4G??[)o|?(m|?g=G?t?uf=G??<6\ >}9^>Fnf >>(g4`+>CnB ?O >>&g >>&gB ?O>7%?}?p@z?}OϢ~G?>7%?}?>7%?}?Ϣ~G?->7R?QC Ϣ~G?bcj?LȾ->7R?QC E>,R?> bcj?LȾ>8p?.P`ɾj?<Ⱦ`,m|?Eg>p?P>8p?.P`,m|?5u>v?+l|?df=G?~?5u>v?u>v?oƗf=ƗG??f1>R6i?塾J>58i?7 ;>[F?u>v?o7 +b>E?%2v=8?ޢ?u>v?H1u>v?<ཝ=58??L#?}>|^#?XN>!0A%?>u>,v?WC0%?>5..{?N=u>v?5u>v?5..{?N==&>Z#t?>5..{?N=WQP?r`<=&>Z#t?>oTP?Iw`Z#t?>̀&>%t?[>n60?/~:{w?i~:~?_Ov >? ¾&> t?T>v T>?&¾~1HB?=&>Z#t?>=&>Z#t?>,HB?m +¢>3G 2Т>TGzOD>Rb:&>-!t?>] i>+qb~ȽW> }|o&>9t?>R&>$t?҈>ANȽ >t|#=t?`\=Ht?T$ex?+T>&>_$t?>$ex?+T>mi?q>&>_$t?>)&>!t?Z>mi?q>>]?h>mi?q>D?["?>:]?r>>:]?r>fD?_"?ف>V:4?1?睽D?b"?G?3zQ?/>!74?1?/>!74?1?G?3zQ?f>>[?.J?A}Q?֧>[q?f>>[?f>>[?Ƨ> q?+>M-v>9u?Ƨ> q?ߜ{=~?j>v>@u?j>v>@u?ߜ{=~?7>Av(}?ߜ{=~?TcVy?>Gἳ(}?>Gἳ(}?TcVy?`>q?TcVy?Ca?g>6,q?A>+q?*8a?>D ܦT?G La?>wd/Y9?ނ>0 ӤT?>D ܦT?>wd/Y9?>>5='?ImMh/ W9? Z,?h>*=֦'?h>*=֦'?&36ZF,?>Cdgz>F5Zp'?à0v>e>wd4v>>dbu>à0v>>cJy2>Ġ[2vs>ǿ6ԻZ>Ky|2>Z>Ky|2>6Fػ:>T|(½6FػOu茾5h>|\½݁>|\½Ou茾߁>0lɶힽMu􌾣`5Yv >.l/ն>.l/ն`5Yv k>>J3Y` ^t,_;k>>Jk>>J^t,_;>QHHi|5,g;vcc~>NH~>NHvcc>ҼqkQ0Zec'^$6IIz>Ҽqk>Ҽqk'^$6IIzX>T $v'^$6IIz@F=W=XX>T $vNY>'$v6AF=juW=ZXaS=i~?z>cJy2>_yG?Zag3>>dbu>_yG?Zag3>8qG?JW>>dbu>>dbu>sG?bE>h>*=֦'?8qG?JW>;A?\Y>h>*=֦'?>=í'?;A?3>>D ܦT?;A?3>G?O(?>D ܦT?> ȩT?G?=z-?A>+q?G?=z-?inG?x?`>q?`>q?pG?u?>Gἳ(}?pG?u?ETA?cR=TK'?>Gἳ(}?7>Av(}?ETA?cR=TK'?>v>u?ETA?cR=TK'?4G?;\>e?+>M-v>9u?+>M-v>9u?G?:\>?F> >_[?G?:\>?lG?~>3?f>>[?f>>[?!rG?1>l,?/>!74?1?lG?~>3?vA??>ف>V:4?1?ف>V:4?1?tA??>>:]?r>tA??>G?c?qy>>]?h>>]?h>G?c?qy>~&>"t?䡁>G?c?qy>rG?4?=&>_$t?>=&>Z#t?>rG?4?=5u>v?rG?4?=tA?W%?ý5u>v?5u>v?A?%?ý>8p?.PA?%?ýG?bA?󏂾>8p?.P>8p?.PG?bA?󏂾>IR?; G?bA?󏂾{G?>̾E>,R?> ->7R?QC a|G?0> ;>7%?}?yG??>;nG?!|> >7%?}?>7%?}?`qG?}x>T  >>&gnG?!|> HA?Z> f >>(gf >>(g~EA?Z>>L= l~EA?Z>G?= >L=5lj>=m lG?= Y>p $3vG?= lG?rY>p $3vY>p $3voG?Z>ҼqkoG?ZbA?OW&>Ҽqk>ҼqkbA?OW&>QHHbA?OW&G?/ݾ$辧>QHH>QHHyG?.ݾ.>JyG?.ݾiqG?/  k>>Jk>>J sG?P Q>.l/ն sG?P QA?i!`.߁>0lɶ߁>0lɶ͍A?!$G.݁>|\½͍A?!$G.ةG?J6 r;݁>|\½:>T|(½ةG?J6 r;Z>Ky|2>G?E: Qo;DzG? M3>Z>Ky|2>U>n|*2[rG??4?3=*=H`rG?4?=mG?w?y>ke*=H`Tc*=3F`G?c?qy>j=l7a2 W= a?nG?!|>  <+o2s7?nG?!|> yG??>; <+o2s7?7yG??>;G?bA?󏂾G?bA?󏂾>Kn|Df;G?m@?5A?%?ý>Qo|U>n|*2-A?$%?ý[rG??4?3=G?c?qy>tA??>j=l7a2vA??>lG?~>3?{=pf7yh2j=l7a2lG?~>3?@3?4G?;\>e?B?)=kcG?:\>?ETA?cR=TK'?)=bETA?cR=TK'?oG?:o(y?)=kc)=kcinG?x?p<`I>minG?x?G?O(?p<`I>mp<`I>mG?=z-?9+=Rh2?If7=>sh?lG?r" >b<}?lG?r`G?=  >Ɂb;}?" >b<}?G?!= W= a?G?j= ~EA?Z> W=\a? W= a?~EA?Z>nG?!|> =sm?E1>iqG?/  2qsh?G?/ݾ$bA?OW&=U>qh?=U>qh?bA?OW&oG?ZG?O(?;A?3>=+h2? f79A?d>?rG?;DS>(+=a2?l7|=d2?Ri78qG?JW>< k?}tʾsG?bE>_yG?Zag3>H< k?dʾH< k?dʾ3wG?96K3>RةG?J6 r;eةG?J6 r;'A?!c.k=3m?<>k=3m?<>'A?!c. sG?P Q|P>2 x?|P>2 x?(K[e)?B?ʥľ@ڮ>>)[`>>s-h?)خ>O> >W>[>>>~+h?>׍>+h?T >W>[g>$M>$w? >>[R;? >B g>$M>$w?g>]3>%w?R;? >B =>=J}? =>=J}?O;?>F |=|P#z?R;? >B >%>h"}=|PU#z?~=I{P!z?>>h~=iPq z?>>+hT="Ѹ }=P "z?|=cP %z?T=D>e$u?T="?ӽ-LaJ>fѽu?aJ>fѽu?#? ӽ7.L]D> [7/p?#? ӽ7.Lm>'I]]D> [7/p?]D> [7/p?n>~J]">/g?yo>԰K]!>1mcc">/g?[ >cc?kE9g>.(g?>:;g??CC9YD>)~}i??3D9O= 8>Gx{YD>)~}i?FD>t|i?P='8>y{t> SL?P='8>y{> set> SL?> sel>H I1t> 6L?t> RL?l>iI>V;*?l>H I<( >e}>V;*?ƾp;?|z*7 x]O.YF&Vnй?yr=#?ƾ;?x]O.{\#?TM.kD>z{\#?{\#?kD>z# XFƾ;?U|B?F*d U|B? U>F*d |z*7 U>T)I8j U>9 n>T)I8j R&In 9 n>,}9n> cV{[>>E,},} cV{[>><( >e}ގ 1U{:u>>64<"ľStl?<( >e}'<|B >}45<"ľCtl?>V;*?I[|P>2 x?Ȭr3M3P>x?JNZuE<>?b#1MLv1MJNZuE<>?&VnйEAuo=>?2ĽΘ{ v?&Vnй&Vnй2ĽΘ{ v?,{{`#?oF7?̾,m?ߤ-2,m?ߤb?? p\>-2 ?R>02>`??q*>^K>b??dC\<>5`?bw*y>Zu*n>}BU>V`?<6@T>~ dC\<>5`?|P>2 x?<6@T>~ 65@T>,} |P>2 x? ]5 >~ZR|P>2 x?(K[ ]5 >~ZR>׍>+h?>/׃>+@t?,?ŖB?ľbx>׃>At?Y>3/ ?xP?$?&B?nľ$?&B?nľX>/ ?P?@F=FX=WY>3/ ?xP?="?&C?@F=FX=WF=W=W="?&C?=i~? ="?&C?^;G>^r?xS=i~?=i~? Iae;L;>Nr?P+ms?S^;G>^r?n]?>P+ms?SP+ms?Sn]?]>1]?ȶn]?>!2?%?1]?ȶ1]?ȶ!2?%?oF7?̾!2?%?>Q?GnD7?;oF7?̾>Q?,m?ߤ.-{?P=q0g$%?>LSE>eL@lE>0%%?>Z3پ]3>W0"%?">3T#?>>پ]>1پ]e>XR#?K><>'?XR#?K>6M:8?A?.'?_'͗?%2v=8?ޢ?`5 )S>F?Z>I6?>|L^/>g=nG?C?>J^4>v< uf>g=nG?C?v< uf>]|q?f=G?~?g=nG?C? 0]Uq?f=G?~?]|q?d?ؾb?f=G?~?f=G?~?d?ؾb?䡾z>6i?d?ؾb?q YC?䡾z>6i?Mb>4i?q YC?6 cG>F?)t"C?龨w*Q6>`5 )S>F?< T>E?̨;+Qx*><>'?g=nG?C?bt> ?H?:Z>I0?bt> ?H?>/ ?D6?[>yIg?[>yIg?>/ ?D6?8>p.>>/ ?D6?X?$3?g(>8>p>8>pv>Y?&3?`>E>Ӈh;>X?$3?g(>VF>B^?>D>h4>8>ׇhZ>G>^?>-?B.?>[ݕ>jq0>*s<(4?!G?" ?9G?m"/>)swV(v ? U?Q%0>*s<(o< EXv ? U?Q%v ? U?Q%o< EX.=Kc?;_=<9Xo< EX.=b?r_=.=b?r_=o< EXfs>q]?==<9Xcʅ>v=fs>q]?==fs>q]?==cօ>v)=-?B.?>cʅ>v=*>k{=-?B.?>-?B.?>D~*>{e=8>ׇhZ>i??/6 l>b<ξg>a?͊zl>Yb1ξMܕ>=~j}d>b?\>b?WϊQЕ>j~5>_g?W5QЕ>j~k?iG?"->g?s5\=Ht?T/>(6≮>u?>/>(6<.2>Zz9>Kz?>9>Kz?>nG2>#Z]ɮ??3<02>Z}Q>7l i??4#?+?/R.>gl釲zl>Yb1ξm6 g!Ȣ?:_m +¢>3GY':bHD] b>ҺGm +¢>3GE=]8>TbHD]ήC; m1t8>Tb8>TbήC; m1tMȽ8 >s|ήC; m1tS}MȽ8 >s|MȽ8 >s|S}\=Ht?TS} ;)hqdI=̵t?(U\=Ht?Tx,;fq4p/>(6< jĢ>G@MB?꾿r??!;MB?p >?¾m6 g!m6 g!p >?¾X Eՠv >? ¾~:{w?iX EՠX EՠP:x?]obP. ~:{w?in60?/obP. XdPn60?/W y=n60?/LP?Ib?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  + X+ fI  X+ fI  fI  X+rTW+ XI rTW+ XI  XI rTW+l=TW+rTWK l=TW+rTWI rTWK l=TW+ =X+l=TWK  =X+l=TWK l=TWK  =X+ =f+ =XK  =f+ =XK  =XK  =f+l=h+ =fK l=h+ =fK  =fK l=h+rh+l=hI rh+l=hK l=hI rh+ f+rhI  f+rhI rhI  f+l=h+rh+ =f+rh+ f+ =f+ =f+ f+ =X+ f+ X+ =X+ =X+ X+l=TW+ X+rTW+l=TWI rhK l=hK  =fI rhK  =fI  fK  =fK  =XI  fI  fK  =XI  XK  =XK l=TWI  XI  XK l=TWI rTWoT=DT=o{u=DT=Du=o{u=oT=@d;oT=o{u=@d;oT=o{u=o{u=@d;/ݾT=@d;oT=@d;/ݾ~u=@d;oT=@d;o{u=@d;/ݾ~u=@d;DT=`l/ݾT=@d;Du=`l/ݾT=@d;/ݾ~u=@d;Du=`lDT=DT=`lDu=DT=`lDu=`lDu=DT=`lDT=/ݾT=@d;DT=oT=/ݾT=@d;/ݾT=@d;oT=oT=@d;o{u=@d;o{u=/ݾ~u=@d;o{u=Du=/ݾ~u=@d;/ݾ~u=@d;Du=Du=`lZ$T@d;Z$TZ$D=8Z$TZ$xi=Z$D=8Z$D=8Z$xi=Z$S=Z$D8Z$xi@d;Z$ 0(Z$xi@d;Z$T@d;Z$ 0(Z$ 0(Z$T@d;Z$ 0=(Z$T@d;Z$D=8Z$ 0=(Z$D=׾Z$S=־Z$xi=EVZ$S=־Z$nY=tӾZ$xi=EVZ$xi=EVZ$nY=tӾZ$xi=Z$nY=tӾZ$nY=视Z$xi=Z$xi=Z$nY=视Z$S=Z$D8Z$ϙSZ$xi@d;Z$ϙSZ$Y视Z$xi@d;Z$xi@d;Z$Y视Z$xiEVZ$Y视Z$YtӾZ$xiEVZ$xiEVZ$YtӾZ$ϙS־Z$ϙS־Z$D׾Z$xiEVZ$D׾Z$ 0hؾZ$xiEVZ$xiEVZ$ 0hؾZ$xi=EVZ$ 0hؾZ$ 0=hؾZ$xi=EVZ$xi=EVZ$ 0=hؾZ$D=׾oDx+oʙSKoxiEVoʙSKoY`oxiEVoxiEVoY`oxi@d;oY`oYZoxi@d;oxi@d;oYZo T@d;oYZoʙSTo T@d;oʙSToDP>Qo T@d;o T@d;oDP>Qo ToDP>Qo 00Oo To To 00Ooxi=o 00Oo 0=0Ooxi=oxi=o 0=0OoD=P>QoD=P>QoS=Toxi=oS=TosY=Zoxi=oxi=osY=Zoxi=EVosY=ZosY=`oxi=EVoxi=EVosY=`oS=KoS=KoD=x+oxi=EVoD=x+o 0=۹oxi=EVoxi=EVo 0=۹oxiEVo 0=۹o 0۹oxiEVoxiEVo 0۹oDx+o#xiEVZ$xiEVo#xi=EVZ$xiEVZ$xi=EVo#xi=EVo#xi=EVZ$xi=EV"o=EVZ$xi=EV$ y=EV"o=EV"o=EV$ y=EV!"t=EV$ y=EVS#=EV!"t=EV!"t=EVS#=EVM"vu=EVS#=EVM"=EVM"vu=EVM"vu=EVM"=EV{u=EVM"=EV=EV{u=EV{u=EV=EVkt=EV=EV=EVkt=EVkt=EV=EVtto=EV=EVXy=EVtto=EVtto=EVXy=EVZxi=EVXy=EVoxi=EVZxi=EVZxi=EVoxi=EVZxiEVoxi=EVoxiEVZxiEVZxiEVoxiEVttȝoEVoxiEVX9yEVttȝoEVttȝoEVX9yEVk2tEVX9yEV삽EVk2tEVk2tEV삽EVuEV삽EVEVuEVuEVEVM"uEVEVM"EVM"uEVM"uEVM"EV!"7tEVM"EVS#삽EV!"7tEV!"7tEVS#삽EV"͝oEVS#삽EV$>yEV"͝oEV"͝oEV$>yEVo#xiEV$>yEVZ$xiEVo#xiEV"͝oo#xi$>yZ$T&QTZ$xi&QT&QuZ$xiZ$xi&QuZ$uouDuoxiDuDToxioxiDTo T"͝o$>y!"7t$>yS#삽!"7t!"7tS#삽M"uS#삽M"M"uM"uM"uM"uuk2t삽k2tk2t삽ttȝo삽X9yttȝottȝoX9yZxiZ$xi$>yZ$T$>yo#xiZ$TZ$To#xiZ$xi=o#xio#xi=Z$xi=Z$xi=o#xi=$ y=o#xi="o=$ y=$ y="o=S#="o=!"t=S#=S#=!"t=M"=!"t=M"vu=M"=M"=M"vu==M"vu={u==={u=={u=kt===kt=Xy=kt=tto=Xy=Xy=tto=oxi=tto=Zxi=oxi=oxi=Zxi=o TZxi=Zxio To TZxioxiZxiX9yoxiM"EVM"S#삽$>yZ$xiZ$xi@d;M"EVS#삽S#삽EVS#삽$>yS#삽EVS#삽EV$>y$>yEV$>yZ$xi@d;$>yEV$>yEVZ$xi@d;Z$xiEVZ$xi=EVZ$xi=$ y=Z$xi=EV$ y=$ y=EV$ y=S#=$ y=EV$ y=EVS#=S#=EVS#=M"=S#=EVS#=EVM"=M"=EV=EVM"=EV=M"=EVM"===EV===EV==EV=Xy==EV=EVXy=Xy=EVXy=oxi=Xy=EVXy=EVoxi=oxi=EVoxi@d;oxiX9yX9yEVoxiEVoxi@d;oxi@d;X9yX9yEVX9y삽X9yEVX9yEV삽삽EV삽삽EV삽EVEVM"EVEVM"EVM"o#xiEVo#xi"͝oo#xiEV"͝o"͝oEV"͝o!"7t"͝oEV"͝oEV!"7t!"7tEV!"7tM"u!"7tEV!"7tEVM"uM"uEVo#ϙSo#D8o#xio#D8o# 0(o#xio#xio# 0(o#xi=o# 0(o# 0=(o#xi=o#xi=o# 0=(o#D=8o#D׾o#ϙS־o#xiEVo#ϙS־o#YtӾo#xiEVo#xiEVo#YtӾo#xio#YtӾo#Y视o#xio#xio#Y视o#ϙSo#D=8o#S=o#xi=o#S=o#nY=视o#xi=o#xi=o#nY=视o#xi=EVo#nY=视o#nY=tӾo#xi=EVo#xi=EVo#nY=tӾo#S=־o#S=־o#D=׾o#xi=EVo#D=׾o# 0=hؾo#xi=EVo#xi=EVo# 0=hؾo#xiEVo# 0=hؾo# 0hؾo#xiEVo#xiEVo# 0hؾo#D׾M"vu=EVM"vu=!"t=M"vu=EV!"t=!"t=EV!"t="o=!"t=EV!"t=EV"o="o=EV"o=o#xi="o=EV"o=EVo#xi=o#xi=EVM"vu=EV{u=EVM"vu={u=EV{u=M"vu=Zxi=EVZxi=tto=Zxi=EVtto=tto=EVtto=kt=tto=EVtto=EVkt=kt=EVkt={u=kt=EVkt=EV{u={u=EVZD=x+ZS=KZxi=EVZS=KZsY=`Zxi=EVZxi=EVZsY=`Zxi=ZsY=`ZsY=ZZxi=Zxi=ZsY=ZZS=TZS=TZD=P>QZxi=ZD=P>QZ 0=0OZxi=Zxi=Z 0=0OZxiZ 0=0OZ 00OZxiZxiZ 00OZDP>QZDP>QZʙSTZxiZʙSTZYZZxiZxiZYZZxiEVZYZZY`ZxiEVZxiEVZY`ZʙSKZʙSKZDx+ZxiEVZDx+Z 0۹ZxiEVZxiEVZ 0۹Zxi=EVZ 0۹Z 0=۹Zxi=EVZxi=EVZ 0=۹ZD=x+uEVuk2tuEVk2tk2tEVk2tttȝok2tEVk2tEVttȝottȝoEVttȝoZxittȝoEVttȝoEVZxiZxiEVuEVM"uEVuM"uEVM"uuDT&1DTDu&1DTDuDu&1T@d;DT&1u@d;DT&1Du&1u@d;o T@d;T@d;oxi@d;T@d;u@d;oxi@d;oxi@d;u@d;ou@d;ou@d;ouoxi@d;ouoxioxi@d;o T@d;o TT@d;o TDTT@d;T@d;DTDT&1Du&1Duu@d;Duouu@d;u@d;ouou@d;Z$xiZ$uZ$xi@d;Z$uZ$u@d;Z$xi@d;&QT`l8T@d;&Qu`l8T@d;8u@d;&Qu`l&QT&QT`l&Qu&QT`l&Qu`l&QuZ$u@d;8u@d;Z$xi@d;8u@d;8T@d;Z$xi@d;Z$xi@d;8T@d;Z$T@d;&QT`l&QT8T@d;&QTZ$T8T@d;8T@d;Z$TZ$T@d;Z$u@d;Z$u8u@d;Z$u&Qu8u@d;8u@d;&Qu&Qu`lo# 0=(o# 0(Z$ 0=(o# 0(Z$ 0(Z$ 0=(o#Y视o#YtӾZ$Y视o#YtӾZ$YtӾZ$Y视Z$ 0=hؾZ$ 0hؾo# 0=hؾZ$ 0hؾo# 0hؾo# 0=hؾZ$nY=视Z$nY=tӾo#nY=视Z$nY=tӾo#nY=tӾo#nY=视o 0=0Oo 00OZ 0=0Oo 00OZ 00OZ 0=0OZsY=ZZsY=`osY=ZZsY=`osY=`osY=Zo 0۹o 0=۹Z 0۹o 0=۹Z 0=۹Z 0۹oYZoY`ZYZoY`ZY`ZYZZ$nY=视o#nY=视o#S=Z$nY=视o#S=Z$S=o#S=o#D=8Z$S=Z$S=o#D=8Z$D=8o#D=8o# 0=(Z$D=8Z$D=8o# 0=(Z$ 0=(o 0=0OZ 0=0OZD=P>Qo 0=0OZD=P>QoD=P>QZD=P>QZS=ToD=P>QoD=P>QZS=ToS=TZS=TZsY=ZoS=ToS=TZsY=ZosY=ZoYZZYZZʙSToYZZʙSToʙSTZʙSTZDP>QoʙSToʙSTZDP>QoDP>QZDP>QZ 00OoDP>QoDP>QZ 00Oo 00OZ$ 0(o# 0(o#D8Z$ 0(o#D8Z$D8o#D8o#ϙSZ$D8Z$D8o#ϙSZ$ϙSo#ϙSo#Y视Z$ϙSZ$ϙSo#Y视Z$Y视o 0۹Z 0۹ZDx+o 0۹ZDx+oDx+ZDx+ZʙSKoDx+oDx+ZʙSKoʙSKZʙSKZY`oʙSKoʙSKZY`oY`osY=`ZsY=`ZS=KosY=`ZS=KoS=KZS=KZD=x+oS=KoS=KZD=x+oD=x+ZD=x+Z 0=۹oD=x+oD=x+Z 0=۹o 0=۹Z$ 0=hؾo# 0=hؾo#D=׾Z$ 0=hؾo#D=׾Z$D=׾o#D=׾o#S=־Z$D=׾Z$D=׾o#S=־Z$S=־o#S=־o#nY=tӾZ$S=־Z$S=־o#nY=tӾZ$nY=tӾZ$YtӾo#YtӾo#ϙS־Z$YtӾo#ϙS־Z$ϙS־o#ϙS־o#D׾Z$ϙS־Z$ϙS־o#D׾Z$D׾o#D׾o# 0hؾZ$D׾Z$D׾o# 0hؾZ$ 0hؾll=ll=l=lnR\="\=nR\="\="\=nR\=FSFS=FSFS=FS=FS0\nR:\0\nR:\nR:\0\ll=0\l="\=0\FSnR:\FS=nR:\0\FS=FS=0\nR\=0\"\=nR\=l=l"\=l0\"\="\=0\nR\=0\nR:\nR\=nR\=nR:\FS=nR:\FSFS=0\l0\ll0\FSnR:\FSnR:\nR:\FSnR\=FS=nR\=FS=FS=nR\=l="\=l="\="\=l=&QT=`l&QT=&Qou=`l&QT=&Qou=&Qou=`l8T=@d;&QT=`l8su=@d;&QT=`l&Qou=`l8su=@d;Z$T=@d;8T=@d;Z$vu=@d;8T=@d;8su=@d;Z$vu=@d;Z$T=Z$T=@d;Z$vu=Z$T=@d;Z$vu=@d;Z$vu=&QT=Z$T=&Qou=Z$T=Z$vu=&Qou=Z$T=@d;Z$T=8T=@d;Z$T=&QT=8T=@d;8T=@d;&QT=&QT=`l&Qou=`l&Qou=8su=@d;&Qou=Z$vu=8su=@d;8su=@d;Z$vu=Z$vu=@d;K l=xiZ$b=xiZ$=lEiK l=xiZ$=lEiK =lEiZ$=lEiZ$k=hK =lEiK =lEiZ$k=hK k=hZ$k=hZ$}=gK k=hK k=hZ$}=gK =gZ$}=gZ$=fK =gK =gZ$=fK =fK =XK =fZ$=XK =fZ$=fZ$=XK =XZ$=XZ$}=PWK =XZ$}=PWK =PWZ$}=PWZ$k=P WK =PWK =PWZ$k=P WK k=P WZ$k=P WZ$=yVK k=P WK k=P WZ$=yVK =yVZ$=yVZ$b=EVK =yVK =yVZ$b=EVK l=EVI rEVK l=EVZ$|EVK l=EVZ$b=EVZ$|EVI rEVZ$|EVZ$ yVI rEVZ$ yVI yVZ$ yVZ$kP WI yVI yVZ$kP WI kP WZ$kP WZ$PWI kP WI kP WZ$PWI PWZ$PWZ$XI PWI PWZ$XI XI fI XZ$fI XZ$XZ$fI fZ$fZ$gI fZ$gI gZ$gZ$khI gI gZ$khI khZ$khZ$ lEiI khI khZ$ lEiI lEiZ$ lEiZ$|xiI lEiI lEiZ$|xiI rxiK l=xiI rxiZ$b=xiI rxiZ$|xiZ$b=xiI rTWI rEVI :WI rEVI yVI :WI :WI yVI ɎWI yVI kP WI ɎWI ɎWI kP WI 𑽐6XI kP WI PWI 𑽐6XI 𑽐6XI PWI  XI PWI XI  XI  XI XI  fI XI fI  fI  fI fI ܇gI fI gI ܇gI ܇gI gI ɎhI gI khI ɎhI ɎhI khI hI khI lEiI hI hI lEiI rhI lEiI rxiI rhI rhI rxiK l=hI rxiK l=xiK l=hK l=hK l=xiK =hK l=xiK =lEiK =hK =hK =lEiK Ɏ=hK =lEiK k=hK Ɏ=hK Ɏ=hK k=hK =܇gK k=hK =gK =܇gK =܇gK =gK  =fK =gK =fK  =fK  =fK =fK  =XK =fK =XK  =XK  =XK =XK =6XK =XK =PWK =6XK =6XK =PWK Ɏ=WK =PWK k=P WK Ɏ=WK Ɏ=WK k=P WK =:WK k=P WK =yVK =:WK =:WK =yVK l=TWK =yVK l=EVK l=TWK l=TWK l=EVI rTWK l=EVI rEVI rTWZ$|TWZ$|EVZ$b=TWZ$|EVZ$b=EVZ$b=TWZ$b=TWZ$b=EVZ$=:WZ$b=EVZ$=yVZ$=:WZ$=:WZ$=yVZ$Ɏ=WZ$=yVZ$k=P WZ$Ɏ=WZ$Ɏ=WZ$k=P WZ$z=6XZ$k=P WZ$}=PWZ$z=6XZ$z=6XZ$}=PWZ$ =XZ$}=PWZ$=XZ$ =XZ$ =XZ$=XZ$ =fZ$=XZ$=fZ$ =fZ$ =fZ$=fZ$z=܇gZ$=fZ$}=gZ$z=܇gZ$z=܇gZ$}=gZ$Ɏ=hZ$}=gZ$k=hZ$Ɏ=hZ$Ɏ=hZ$k=hZ$=hZ$k=hZ$=lEiZ$=hZ$=hZ$=lEiZ$b=hZ$=lEiZ$b=xiZ$b=hZ$b=hZ$b=xiZ$|hZ$b=xiZ$|xiZ$|hZ$|hZ$|xiZ$hZ$|xiZ$ lEiZ$hZ$hZ$ lEiZ$ɎhZ$ lEiZ$khZ$ɎhZ$ɎhZ$khZ$܇gZ$khZ$gZ$܇gZ$܇gZ$gZ$ fZ$gZ$fZ$ fZ$ fZ$fZ$ XZ$fZ$XZ$ XZ$ XZ$XZ$𑽐6XZ$XZ$PWZ$𑽐6XZ$𑽐6XZ$PWZ$ɎWZ$PWZ$kP WZ$ɎWZ$ɎWZ$kP WZ$:WZ$kP WZ$ yVZ$:WZ$:WZ$ yVZ$|TWZ$ yVZ$|EVZ$|TWI rhZ$|hZ$hI rhZ$hI hZ$hZ$ɎhI hI hZ$ɎhI ɎhZ$ɎhZ$܇gI ɎhI ɎhZ$܇gI ܇gZ$܇gZ$ fI ܇gI ܇gZ$ fI  fI rhK l=hZ$|hK l=hZ$b=hZ$|hK  =fZ$ =fZ$z=܇gK  =fZ$z=܇gK =܇gZ$z=܇gZ$Ɏ=hK =܇gK =܇gZ$Ɏ=hK Ɏ=hZ$Ɏ=hZ$=hK Ɏ=hK Ɏ=hZ$=hK =hZ$=hZ$b=hK =hK =hZ$b=hK l=hK  =fK  =XZ$ =fK  =XZ$ =XZ$ =fK l=TWZ$b=TWZ$=:WK l=TWZ$=:WK =:WZ$=:WZ$Ɏ=WK =:WK =:WZ$Ɏ=WK Ɏ=WZ$Ɏ=WZ$z=6XK Ɏ=WK Ɏ=WZ$z=6XK =6XZ$z=6XZ$ =XK =6XK =6XZ$ =XK  =XK l=TWI rTWZ$b=TWI rTWZ$|TWZ$b=TWI  XZ$ XZ$𑽐6XI  XZ$𑽐6XI 𑽐6XZ$𑽐6XZ$ɎWI 𑽐6XI 𑽐6XZ$ɎWI ɎWZ$ɎWZ$:WI ɎWI ɎWZ$:WI :WZ$:WZ$|TWI :WI :WZ$|TWI rTWI  XI  fZ$ XI  fZ$ fZ$ X|=n|n|=xi|n|xi|=xiK =n|=nK =xi|=n|=xiK =xiI nK =nI xiK =nK =xiI xi|nI n|xiI nI xi|xiK =nI n|=nI n|n|=nI xiK =xi|xiK =xi|=xi|xio#|ho# fZ$|ho# fZ$ fZ$|ho#b=ho#|hZ$b=ho#|hZ$|hZ$b=ho# =fo#b=hZ$ =fo#b=hZ$b=hZ$ =fo# =Xo# =fZ$ =Xo# =fZ$ =fZ$ =Xo#b=TWo# =XZ$b=TWo# =XZ$ =XZ$b=TWo#|TWo#b=TWZ$|TWo#b=TWZ$b=TWZ$|TWo# Xo#|TWZ$ Xo#|TWZ$|TWZ$ Xo# fo# XZ$ fo# XZ$ XZ$ fo#|ho#b=ho# =fo#|ho# =fo# fo# =fo# =Xo# fo# fo# =Xo# Xo# =Xo#b=TWo# Xo# Xo#b=TWo#|TWZ$b=hZ$|hZ$ fZ$b=hZ$ fZ$ =fZ$ fZ$ XZ$ =fZ$ =fZ$ XZ$ =XZ$ XZ$|TWZ$ =XZ$ =XZ$|TWZ$b=TWr82;dm! @>&s?Ydm!  >Yu?``e;@>&s?Yc7R?yo;V&s?wEX<>:8?o| =±>w'fR?=M"c7R?T<`:d=M"*)= ;?o| =±>,> Xu^e,o =>/=8j >Yu``er=82dm!= ;@>&sYYu``e@>&sY&sĺ8??o| ±w'f Xu?^e;,o /=8;j? >Yu?``e;w'f*,2;w'fR?ao.~ =>/=8;j?V<ɷѺK?$>$s܆$sX< >Yu?k;$>$s܆< >Yu``eA >7Zu? >Yu?``e;A >7Zu$>$s?܆ >Yuk/=8j>$s?X$>$s?܆/=8jV<ɷ:Kw`=?<}rx >aY~?X>=?<}rx >y<|S?|=Y~?8=ɽz{ w`=30HBz?&w`=ϙX~?'r=30HBz?&hc!=rOɽُ{ 3c>8Fi%xc!=f>>/P?޾c!=f>3c-P? ޾ ><}8 >{K>Ei[x"< S?+={K>Ei[x>-P? ޾y<|S?|=;>HixI?<ޗ}- > =*sI?<ޗ}- >w`= =*s =*sw`=ɽz{ 30HBz?&ϙX~?'r=3cT-P?t޾Vf)M>\±&?*? =Tz&?e*?v=O<0=TzTzO<0=&dt?z]~=t}y/ + ZV;}y/ + Vf)M>\±ZV;ZV;Vf)M>\±w}/.Vf)M>\±-yw}/.Bcq}y/ + |]n#>{h{>}y/ + }y/ + h{>뺞GMh{>UTr?`<Ga{Ga{UTj?#<M0<GM<:v?ۻ7źv?ۻ7ź p?>:^q?*2 p?>:m4?}5?pN^q?*2^q?*2:j4?5?!P\'=w?K:j4?5?!P\?z>tY\'=w?K\?z>tYIh?I<+|\'=w?K%'=.w?dLIh?I<+|>#l?_=Ih?I<+|?;J9x>#l?_=>g#l? `=?;J9x?C=]r<?;J9x?Jri3?C=]r<?C=]r<?Jri3e?c!ee?c!eg~? Ͻ@?C=]rrnQ2Od*@iQQ:(3h?>fR }źH7h?>sd?EIk(v?ۻ7ź&\? WE1hl>k(E1hl>k(&\? W2nQ?(&\? W>4hb2nQ?(2rnQ?Od*>3hأ޻?w]廙>4hbZ;Cػ޻?޻޻?޻s; Cػ:x?Cػ*;Bػ][Ի:x?Cػ7:|?Cػ][Իl>E1h?k(]3Fػ8mQգ]>61h?d*>1h?x <4ypQaȺnQ?2?#8mQcPgU۾rnQ?2?Od*@iQ?Q:?(Mge۾c:2?qB;ԻeSg&K۾-:IT{<?;Ի5h?Њ>4,;ȹ?Q><7=S  <)?)?=޳?vf~?V=S֦?޳?vf~?V=[~ȶ=y?y?.~=<<.Q|<=k~/=%=A?=k~/=Ӷ=|M}?v=%=A?%=A?=M}?v=>#l?_=X1h?>-;S%ß <2?nQ?(sd;?zr/p<$iQ?=:,<3h>أ;4h>b;nQ?2(<8mQ?c;rnQ?2Od*%1h0,<`4pQ?Yأ;8mQ?c;l>E1hk(<]?[;l>E1hk(<7:|C;]?[;]?[;:xC;*;?B;:xC;޻;s;? C;Z;?C;޻;>H7h?sd;޻UB;2nQ'<>3h?/;;>4h?b;2rnQOd*#l?_= M| i=(<L<>#l?_=>#l?_=3<L<%=A?asd;a6ssd;pQW4?f4h>b;8mQ?c;mQ8?cmQ8?c8mQ?c;׾3h?fW4pQ?f;.w?B;׾H7h?sd׾H7h?sd.w?B;*?Bػ.H7h?sd;.H7h?sd;W4?pQ?f>3h?f;mQ?8?c;8?mQ?c8?mQ?cmQ?8?c;4h?>bpQ?W4?f;g??3D=1rsdH7h?>sdg??3D=1r<?'K3hfW4?pQf;.H7hsd>H7hsd.4,;2?qB;Ի5h?Њ>4,;nQ?2?(5h?Y>2?nQ?(<@iQ?Q:?(@iQ?Q:?(Q:?@iQ?(E1h?k(2?nQ?(<;?;>3h?<(>3h?<(;?;:x?Cػ&?d=t??< 6??<~7=?< 6?Q9tм??<~7=??<~7=?Q9tм?tpm<?Q9tмz? k?tpm<?tpmۙ:2?qB;Ի2?qB;Ի3p?>ۙ:??<~7=3p?>ۙ:;?:.?:??<~7=??<~7=;?:.?:&?d=t??^$$&?WH} ?tpm<$&?WH} 03h<(<;ۻ>3h<(<2?nQ(l>E1hk(<@iQ?Q:(L޺p3<<p3<ѺbJ;uExob>L޺Y|Z4e?2]<bJ;ubJ;uY|Z4e?2]<q<<q<k(nQ2?(<(3h><(a<<bJ;u?޻:x?Cػ7޺|?C;7:|?Cػ;?;x?C;Z1?ٕ5?0!6=0M}?2= \?8M"9=M}?v=DV=j~= \?8M"9;'{??Z1?ٕ5?0!J;lg1?5?x \?Mk9st;lg\'=w?K,;+{??]q?.247H;#{??;g_q?72V]q?.24t;g.Q|<]q?.24.Q|<%=A?]q?.24%'=.w?dL>g#l? `=;'{??>g#l? `==M}?v=;'{??;'{??=M}?v=1?5? \?8M"9DV=j~=J;lgDV=j~=.Q|8Fi?%x ~?Tƾ/P޾ ~?Tc:Ylƾ-P ޾޳?vf~?V={KEi?[x.~={KEi?[xƾ-P ޾L~=k=aw㑠2YYl}y/ + c:Ylc f~?R跽}y/ + }y/ + c f~?R跽fIR>uƱ;Hi?xR?e~?=c f~?R跽R?e~?=,?)? =c f~?R跽c f~?R跽,?)? =f)R>k=aw<:h{>rp?+>:UTr?`뺶JP:vo >G޺p?f>:g|Z=e?ҹ<vo >G޺;:.:S:n?Mp(޺$&?WH} ;:.:^&?X &dt?^&?X ?P}$:&d@&dt??P}$-y?P}$}?7k|Tz?Pkn#w}/.?Jri3G3 f_~?Jri3f_~-f?d!^cee뼎~g~źEe?_! ee?c!eg~źh~?ν@g~ź5M4pNsg~? Ͻb@g~? Ͻ@5M4pNvo? G޺m4?o5?`Pvo >G޺g~ =@m4?}5?pNsg~ =b@4\?|>uMh~=@ec!=e\?z>tY4\?|>uMe_!= eh?J=<:&?d=@w|T#>=—&?d=t?;?:.?:p|n#>p|n#>;?:.?:h{> ?J95:zZ?h`0< ѹP<?`-60<Bcq<?>0<? <-TAnq<-TAnq<?.lK<8p<?My:?)@=t0<?B0<? 9P x?PSU=za?}7:>t}?ѹϑ=Y}7:>t}? ~:=)YGϑ=Yѵg%>7:&? x蕼sJQ:&?'8R=y1 x蕼s~7:1 ?ـ7MC}?9ϑYҷQMC}? ~)YG9ϑY(x?땼Ys>k 8? R=v1?~7:1 ?'8?R=y1?iG:>t}?G:2 ?gzL0>ـ7MC}?J<S7:?ـ7MC}?~7:1 ?J<S7:?7:&?~7:1 ?PSU=za?~7:1 ?}7:>t}?PSU=za?(x?D~7:y?x畼Js ~)YgzL0>b~ϑYـ7MC}?3gM%>ѹϑ=Y- 82R=u1PSU=za? 8R=r17:&?PSU=za?x?t}?- 8?2R=u1?ƾ-P ޾y|S|={KEi?[x" S+= >}?8 >{KEi?[x3cJؒƾ-P ޾c!f?>ƾ/P޾>8Fi?%xc!f?>30H>Bz&Jؒ=z{? 3cJؒhc!?rO=ُ{? ϙBz&w=?`=30H>Bz&=z{? w=?`=y|S|==w=?`=?}?rx >30H>Bz&ϙ *?sI?ޗ}?- >w=?`= *?s *?sw=?`==z{? K;yr"*;4k<yrr7;g>)e:"A>vr8(?@`;>>e9;%>Ge(?@F9;@? (F9 (?@9Fe?$4;@?R(P<;@?W(`>e?⾲:;vr?"A;e?⾩ǻ?Rnμ~;yr?^17;yr?d1ǻ?Rnμ';$?]廩;?Rn<';$?]'˻$?];$';0?⻩ǻ?Rnμ$'˻0?;;?Rn<'˻$?];7yr?d1>;?Rn<~yr?^1>;;e?>:vr?"A>P<@?W(?`;>e?>9;Fe?$>4@?R(?F9; (?@?@?(?9%>Ge?;(?@?8;(?@?`>>e?:;"A>vr?r7g>)e?"*˻4k<yr?7;d1>yr?Kǻe?9;%Ge?(@?;@(?F9 (@?9Fe$>4;@R(?P<;@W(?`>e>:;vr"A>;e>ǻRn<~;yr^1>7;yrd1>ǻRn<';$];;Rnμ';$];'˻$]';$];ǻRn<$'˻0⻩;Rnμ'˻$]7yrd1;Rnμ~yr^1;;e⾲:vr"AP<@W(`;>e⾊9;Fe$4@R(F9; (@F9@ (9%Ge;(@8;(@`>e:;"Avrr7g)e"*˻4kyrK;e?D;@>Xvr;0>yru;؃e?;(?B@u;؃e?;@(?n;(?*@Z;(?i@;@(?Ŧ;e?;@(?~;yr^1>h;He?Ŧ;e?⾝~;yr^1>@>&s?Y~;yr^1>$';0;$>$s?܆$>$s?܆$';0; >Yu?``e;';$];;#ͼ >Yu?k; >Yu?``e;;?ϼ;yr?0>;#ͼ`;>e-;Uxr?4>;yr?0>u;؃e;B@?(?`;>e;(@n;*@?(?n;*@?(?;(@Ŧ;>e?4;R(@~;^1yri;>Ie?i;>Ie?;Avr/=8;j?~;^1yr#(;tDr(=N;^?(=N;^?#(;tDrV>e-;4Uxr?-;4Uxr?u;>؃eZ;(i@?u;>؃e;@?(n;(*@?<;(!@?F9;@? (;e>;@?(~;yr?^1h;He>Ŧ;e>~;yr?^1@>&sY<~;yr?^1$';0?$>$s܆<$>$s܆<$';0? >Yu``e';$?];#?< >Yuk >Yu``e;??<;yr0;#?<`;>e?>-;Uxr4;yr0u;؃e?>;B@(`;>e?>;(?@?n;*@(n;*@(;(?@?Ŧ;⾮e;(?@?~;^1>yr?i;Ie;⾓e;Z5>xr?/=8j~;^1>yr?#(;tD;r?(=N^(=N^#(;tD;r?VGe?D軶@Xvr0yru>؃e?軩(B@u>؃e?@?(?n軞(*@Z(i@@?(?Ŧ軮e@?(?7yr?d1>hHeŦ軮e⾝~yr?^1>$sX~yr?^1>$'˻0?;$$s܆$$s܆$'˻0?; Yu``e;'˻$?];ǻ#?ͼ Yuk; Yu``e;ǻ??ϼyr0>ǻ#?ͼ9Fe?$-Uxr4>yr0>;e?B@(?9Fe?$(?@n*@(?n*@(?(?@Ŧ軎⾮e?4R(?@~^1>yriIe?iIe?A>vr/8j?~^1>yr#(˻tD;r(N^?(N^?#(˻tD;rVO:N?#(˻tD;rKǻzr?Kǻe-4>Uxr?-4>Uxr?u؃eZ(?i@?u؃e@(n軞(?*@?n軞(?*@?@(Ŧ軮e?>@(7yrd1hHe?>Ŧ軮e?>~yr^1$s?X<~yr^1$'˻0$$s?܆<$$s?܆<$'˻0 Yu?``e'˻$]ǻ#< Yu?k Yu?``eǻ?<yr?0ǻ#<9Fe$>-Uxr?4yr?0;e>B@?(9Fe$>(@?n*@?(n*@?(F9 (@?Ŧ軎>e8(@?~^1yr?i>Ie>eZ5xr?/8;j~^1yr?#(˻tDr?(N;^(=N;^?Vɷ:K?0>yr?(=N;^?0>yr?i;>Ie?0>yr?n軞(?*@?Ŧ;>e?Ŧ;>e?n軞(?*@?n;*@?(?n軞(?*@?Ŧ軮e?>Z;i@?(?Z;i@?(?Ŧ軮e?>D;Wvr?@>hHe?>@󟾢&s?Y<;yr?0>;yr?0>@󟾢&s?Y< >Yu?``e;/=8;j?V&sY< Yu``e;yr0>@>&sY<yr0>h;He>DWvr@>Zi@(?Ŧ;e>Ŧ;e>Zi@(?n;(*@?n*@(?Ŧ軎⾮e?n;(*@?n;(*@?Ŧ軎⾮e?;0yr?iIe?(N^?;0yr?;0yr?(N^?V<ɷѺK?P>&s< >Yu``e Yu``e; >Yu``eP󟾻&s Yu``e;(=N^VɷѺK0yr(=N^0yri;Ie-4Uxr軩(B@Ŧ;⾮eŦ;⾮e軩(B@n;*@(n軞(*@Ŧ軮eZ;i@(Z;i@(Ŧ軮eD;Wvr@hHe@󟾢&sY;yr0;yr0@󟾢&sY >Yu``e/=8jV&s?Y Yu?``eyr?0@>&s?Yyr?0h;He?DWvr?@Zi@?(Ŧ;e?Ŧ;e?Zi@?(n;(?*@n*@?(Ŧ軎>e;(?B@;(?B@Ŧ軎>e-;4>Uxri>Ie(N;^;0>yr;0>yr(N;^V<ɷ:KP>&s? >Yu?``e; Yu?``e >Yu?``e;P󟾻&s?< Yu?``e^=O~v} (rv} =(r?v} (r^O~?v} =(r?}>՚=)r^=O~^==O~?^=O~}՚=)r?^==O~?^=O~v}> =(rv}> (r?v}> =(r^==O~?v}> (r?}՚)r^=O~^O~?^=O~}>՚)r?^O~?m>f=-+r^=O~^=O~^=O~mf-+r^=O~m>f-+r?^==O~?^O~?^==O~?mf=-+r?^O~?bS?bw`?mjVO:N?}?h>挻P󟾻&s?;=?r=k@󟾢&sY7?r=}r Yu``e;@󟾢&sYbS?bw<`??m;$$s܆T`ĺdXI?xnV?vS?u挻=?rk;@󟾢&s?Y<7?r}r; Yu?``e@󟾢&s?Y挻=?r=k}?h<>;}?h>挻}?h>挻}?h<>;=?rk;}?h<>;bS?bw<`?=?rk;=?rk;bS?bw<`?RI?" yn]?/8j?Vɷ:K?$$s?܆?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uyX᤽(:uyX᤽(:uyX᤽(:uyX᤽(:uyX᤽(:r(佯r(佯r(佯r(佯r(uy=V᤽(:uy=V᤽(:uy=V᤽(:uy=V᤽(:uy=V᤽(:uy=V᤽(:uy=V᤽(:r=(佳r=(佳r=(佳r=(佳r=(佳r=(佺>(佺>(佺>(佺>(佺>(佰G=YX G=YX G=YX G=YX G=YX G=YX >=4Zн>=4Zн>=4Zн>=4Zн>=4Zн>=4Zн>=4Zн=M)=M)=M)=M)=M)=M)7ͽk0]=7ͽk0]=7ͽk0]=7ͽk0]=7ͽk0]=7ͽk0]=>+彻>+彻>+彻>+彻>+彻>+彻>+彻>+彻>+彾=| ==| ==| ==| ==| ======彷彷彷彷彷彷彷彷彷彭GnOGnOGnOGnOGnO~=2V~=2V~=2V~=2V~=2V~=2V~=2V~=2V2V2V2V2V2V2V2V"=+@y="=+@y="=+@y="=+@y="=+@y=ֿ=R =ֿ=R =ֿ=R =ֿ=R =ֿ=R =ֿ=R =ֿ=R =ֿ=R =(=:N=(=:N=(=:N=(=:N=(=:N=Q<+=Q<+=Q<+=Q<+=8%N~=8%N~=8%N~=8%N~=8%N~=8%N~=NpG=NpG=NpG=NpG=NpG=NpG=/ڽS=/ڽS=/ڽS=/ڽS=/ڽS=/ڽS=/ڽS=/ڽS=g=4M=g=4M=g=4M=g=4M=F>^(k=F>^(k=F>^(k=F>^(k=F>^(k=F>^(k=F>^(k=>+@y=>+@y=>+@y=>+@y=>+@y=>+@y=>彻>彻>彻>彻>彻>彻>彻>彻>彺>)M@y=>)M@y=>)M@y=ܲϽM+ܲϽM+ܲϽM+ܲϽM+ܲϽM+:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн:Ͻ4Zн+M@y=+M@y=+M@y=+M@y=+M@y=+彷+彷+彷+彷+@y=+@y=+@y=+@y=+@y=jA0[ =jA0[ =jA0[ =jA0[ =jA0[ =jA0[ =PPPP*B*B*B*B(佸(佸(佸(佸(佸(佸(:Ͻ4L=:Ͻ4L=:Ͻ4L==ֽ&=ֽ&=ֽ&=ֽ&=ֽ&=ֽ&=ֽ&=ֽ&ǴA=,NǴA=,NǴA=,NM[rM[rM[rM[rM[rM=PrM=PrM=PrM=PrM=Pr!5BHQN!5BHQN!5BHQN!5BHQN!5BHQNս&ս&ս&ս&ս&ս&ս&G[X G[X G[X G[X G[X G[X >P>P>P>P>*B>*B>*B>*BG=nOG=nOG=nOG=nOG=nO!>_v?\>f?K"?f+b8E>dL[+.>=E?I"?X;>H)?A:?8?&?Ut>)'y?@> L_;? +?>>}@s\O?5)>N p?^>Et/k?렾DR >9V?{*n?"Gݵ?9? =m?ۻ>l6>?1?a?>s[?i>(U?>|`>nN>q?[㒾D%>fq?S<k|OZ??0&q?>F5?"?bu<?4P?ߕ2=e?!N?>o2?$6?>S/??v> Ndy?itb?gn4?",?I?A?h *\?D_vV*>=' >a?}9a>X?%پ߱>AA?Ŧ)L?鵾%>?5ZC>Б>I (>9<~|?5>}\ߍ\$ ?gH?ʾ+O?1?҄7j\4^ݤN?*㾺N>y5{?|(>>y{ t?=i>!S?JRyymyz=s?Mh>]pth9W>DX=s?]>/Tl?"1wQp4wdM>N?8#v#h=V}zu >8k-rH>پIUu>[GiJ>Ji;i*>ּi+ξ}=!i;&>i;,>> ;u72S† 2=+7搾Q>?k4?UN =-?pԺ<\>eF_>8B?%?2W?VqN:|?*L?<)Ҽ h׾¾ܾ0pQ\ľ8`aؾ >{8;#`R>6 ?]58=c?lj+5?>cM? e|D?bf<-Q|+,>M<>6|?t>̈>`Ik?k ?>AeK?#e|\==(_?=ܽAQ~?xZ>h?>>cʾg`?h3> ZF?x ?@罛e?پ`t=w%thI>J2>g$q?A;>%mX?4?Xx4?O y%y?zRk+T̺{?>ˉhPVo?:lV>'M?6˃>9i?=1hBO[=ijx?1g&m>x?@{m:>Ap?>ak?@Q|u?l ϾƺZ5$rr?YUp>ytd?FSž>s@d?w_u^?&̾{ؾM&D?"`|[>Y>p?@_X>gf?*Kݾh?j3=fӾ6xۆb?ө>^`ǾG7+=ƌk?GXپ[?ܾ󅭾V?K>1?&?/j?OkI..?K7kivey%>PX?X?ѾquX? m>7X?M'U> u?".]3@>Ku?x6N?Z<ŽZ?ڻ>/پzZ?M1?3Z?F ?Y?moX?{?M9=)>1{?XG>{?Gn/:{?wB>%9{?G>]Q:Ѹ-}w`y޼E)` `=?._GK{ v?d*l,j~?{ne5?*?kO?=?f5 ?ϐ?cP?ݱ=Y!?4C?j>L?>%f>n`?z'Q?)=:?5?z4?q=߷?I?~=)?=?_7>z?\$=?aE?>z?/7=I~?-='Z5?a4?Ɲ>޾J?w?4J?>5_?M QKn Q¦Ӛ=|qJF~?G!>s?;kJk?jJC>;kJG!>s?=<>Br?D> sɹJg?'rH:n-ro0= ӜƧy>?E?FM>Xk?Y*?e8?AV=oez?T] ?T?UuzS>&>pt>?a0?;> @ifё>k;}l =SU>G" 3վ Q?ZɾjgQ>jf@->\>v=c?09>wR>e?>F>&f6??uWs~>>jju->jjI=&j*aa>ƩLJ=Uo?NM [?lYʜͼb6 ,>N ?=Mx>g@t?FL>պ>X[>>a > S?>E ?ֲ& ?G>SBg>>rIw? ǾY >ML?m־~?y(?G=%~?=d!??M&@?u#=Gb? J꾩9>b8tu+6c> >-$m8?,;b|A>y 6?B?lc?>QI; 轛f?ؾ:Y5KC(\itJ?~.=|?w >p=L'?^>J>Yz?:>~>R0>;? V(?E>`5 ?Q?/_>&?]9?~7 >-b?LI> ]?) +? @. >LH=U ?R G? ՟?L?˼c?K?h%2?"d"-?Lu#=8>@龩>)?HfH`? A>/J`?lܾ^>0_?%?17L?塧#?o??=9bp?#(й>ڑ ȮD4>Yx?>_0]q;?5-?=I-2W?B4[dmY" ! $%.#|+-}v*)sp =14f7j?80;FC:{9Ax6M<LHSK[WRaIJ_]`^\iluht@w>B~yzDEG/2,q(r'omgkn  53ONQP&YZ X cebdT  UV$X=E&L>v=E&=n>v=+=n>RW=+>VWWW<+!S>WE&%S>W+%S>{RWE&>vE&=n>X+L>+rm>+=:(3=E&3=>:(3=>E&rm>>+rm>v+=n>$X=+L>>+=zRW+>E&rm>XE&L>RW=E&>>E&3=>:(=:(= 1=e=l =eõ=?=eJH>N=e> }UWѾ2eZ%>WѾ2eZ%>|Ue=VѼe#>1e=Ne>f eõ=9eJH>beC*=ĽezN>{eC={=eC=#=ezN>b=eC*=!=mA=G=I>C!=umt=nA2>=,qAcp=oA=!봽0CC=YoArG*>mmtnA2>y=(3M=o=3CsR=QN=C==Dc==YPAp==u=?U<A3*=T"=e="=e="=zljb9<>w=o4<>e=뽟͊=e=e=zljj9<>oA>V)ZpP>B-ڀP><P>=Ɖ:G>n=]o:oK>no<>M7oaQ> nA 8>o2nA:9><%p ET>Y=mArG*>KሽeB>Ľ͊zN>9͊JH>VѼ͊#>2͊Z%>iu=e >?=͊JH>#=͊zN>"=͊=:PM M>N͊>W<͊#>N=͊>Q=ӊRM>뽟͊J9>'=͊r:>uR=ljzO>޽p#="=e=O=y{?*>Cx>=|p?mp=\zB><{ba6>=w=`~?n.;~=tź3}?#>{`~? |?7$>0@}? >h,]J<@v'= Zu)v#|?5h9Ƚ {?\-Ϳ>i^?sӾ::?W,?܃>$:?&)cY9>Cxꕽ|p?sù=lyzK>`kŽ8>P?%"=4Ap?eE> [U?J?Azšc:#?N6ƾzǼkTQ;=uWhY?9J%1sM/< |u`5<+yA>ek9?)_>F)t=>Yñ6ha>ǻdtl?ӄ>S= ~?pCҽ~?5ѽ>AXՁj??>я>WT?v}+ĺ3& E k}fн}.Ͻ2grbI>s7g_>[=jqx?60<6B&?ýr?޼N>">o?>b?T>_p?Kjf?>lUAt1Y?z?91=>s+v?G!0>_?->l>u"GgƩ=O}\sF>pyh=SEG5c9jҍʾ"nc#|K gP: ?PO`B<=g=xfNy]R{&5km%!j<B=v%<F?"<^>ՅI}?f>B&a y?Ѹd                  .! !# #$#%$$%&%'&&'(')(()*)+**+,+Q,K.--././01I1:II:^:=^^=2=322343?44?\?A\H565S66SES7EE7C78CC8A8[AA[\19:9;:;<::<==<3<>33>?>@??@A@BAABCBDCCDEDFEEF6FG66GHGpHq0J0IJLnMMnIInJJngS5NOmPmRPNPSPRSSRYRTYYTZTUZZU]UV]LMWMXWWXooXVX]VMI^SY77Y8YZ88Z[[Z\Z]\\]4]X44X2M^X^2XOP_O_``_aa_ii_b_"bb"c"dccdjjdkkdeedfdJffJgmO`m`h`ahaihhiUibUbcUUcVcjVVjljklkellenefnnfgnLWRmhnWlVlolWoUThhTR5HNNHpq90091'22L_'22L_.'΋.'΋.='΋.='΋uY"˴uY"˴{Y="˴ƚ=z3Aƚ=z3A=3A=3Aƚ=h#.qOƚ=h#.qO=:\=:\\=86i\=86i\=86ik=ڽ|k=ڽ|k=ڽ|p=׽;}p=׽;}q&=ǽIjq&=ǽIj9<僾9<僾g2pBg2pB;Rn;Rnm&ǽIjm&ǽIj&s&s&s22t22t22tЭhЭhЭh\86i\86i½"4 ]½"4 ]šǽh#.qOšǽh#.qO᾽3C/4᾽3C/4˽3A˽3AЭQmr(ЭQmr(&^&^kiki02_02_i&s i&s lD#qo lD#qo 2bQx12bQx1xD#=qo xD#=qo k=ik=iЭ=Qmr(Э=Qmr(MR#iO˽>#iO\#22U 㴇p׽;}p׽;}p׽;}p\sO:RL0i:)2潀ER<nER<nq&=R42=t42=t42=t= 4 ]= 4 ]= 4 ]=>#iO=>#iO=9@j=Jg}\=Jg}\=C\4=C\4\=NR'\=NR'62=_62=_p=jrp=jr62=OvS762=OvS7p=r.p=r.p=r.u&=s u&=s LR<,,xPLR<,,xPFRC?$?D?s /4?$?D?'>@MB?Y=?I?$?D?xVG> >$?D?`?(Z~7=$?D?|(x&X=l_r>$?D?1ks$ʽ>j$?D?$?D?Y?>oj$?D?$?D? # 2?$?D?"?n"?hm$?D?ɿ>5?%$?D?G.VL?$?D?Q[5C?\s$$?D?woG>?$?D?^@0?+j$?D?$?D?8? H?j$?D?$?D?#!DT>Ӿj$?D?$?D?R?2sR?$?D? b>w$?D?v)X>Y5$?D?Tx?n^=}r>$?D??i?>K/ݼ$?D?h} ڽI=$?D?R?V ?$?D?2?g+?B#}$?D?I ?YE?$?D?#"8<c>$?D?f5?$?D?>X?yɾ$?D?|e?`Q$?D?ؾR?t$?D?=?.$?D?[*o?i޽j$D$D1>"A%"?$?D?Q[=5C\s$?$?D?1"A%"?j$DwoG>?j$D$D_ce୽$?D?"n"hm?h.D >Qpھ>$?D?YϾo>gk咾>$?D?upt0*a>rjHtg.[9w$?D?`(Z=~7=&qSlwaC>,߀6rj$?D?$?D?JJ?.?P xYF?N i>O̽D$?D?r1>!A?m "S=s>%I%Bj$?D?$?D?#"8?<?cj$?D?$?D?p??$>m,a$?D?h}? =ICC>zY$D| ?lnNmW>$?D?v?)XY5>$?D? b?w>$?D?D?@W>$?D?J?J?$D#"8?<c>j$D$D"?n"hm?$?D?>^@0+?$?D?w>oG>?Hօ>??9iz$+D %~$Dٶ$?8-$?a־4=EI$DL>Xز>uwMܩ}3>>xVnξ$Dup?t0*a>>> J宅Tkr?Fǽ٠>I ܑ>?[j$D>f5?j$D$DQ[5C\s$?$DY?Ͼo> 8:$?aD? *;?Ɩ?>>Sh?$?D?Wf?t> $?D?OS2$B,?S~$?D?W>?!?[$?D?H~*a?c?P۾H% V8???$?D?i?6罞>$?D?`v?>Ǻ= 8:$?aD?0>7!q?+GzR=F>PT>}M>j$?D?$?D?PW `G>j$?D?$?D?Ɔ9|?$?D?څYC?$?D?(_r8 BJ?$?D?z=fN?$?D?}*>L?$?D?n>;lJ?$?D?>f^ ??$?D?#=FZ?T>lI>tk?j$?D?$?D?W?}=?i$?D?>R?i濾$?D?I.> c?Ì۾$?D?_r>R`?־$?D?0 =e?O$?D?ny`?$׾j$?D?$?D?"]X?ɾj$?D?$?D?} E?>I$?D?p.mv?l>$?D?)>8["?]$?D? o><Ʋ\? m>a֣,olTlt?$DkVˆž>=ȥ>'r 8:$?aD?a%3+?|>H{{yy y t ttrrqnnokkk!!!ff$e&##&)',**,,..0.a00aa4424]22]6]Z66Z8Z<88<:<V::V@V>@@>>OOBOMBBMMDDDFFF}}H}{HLNNPPRP?RR?U?WUUWXW=XX=Y=[YY[\[^\\^^55_5b__b`b/``//--c-(cc(d(gddghg"hh"" i iijljjllmmmpppsssuuvu vv x zxxzz|||~~~LNLjmQSiUXXYijjmmmvvvxxUwTY\\___```cccdddhhJKTTT%%+++1111 333777999;;;AAACCCEEEGGGIII tg ftEЏ*ItEaE#c7Џ*IЏ*IaE#c7$uzaE#c76.Q$uz$uz6.Q]\*sq6.QcD6:.]\*sq]\*sqcD6:._|m6Ɗg+vOm+Bb]yFt+Bb]_|m6ƊgyFt_|m6ƊgcD6:.yFth==Omc|=m6Ɗg!+=Bb]h==OmhD=6:.c|=m6Ɗgc|=m6ƊghD=6:.]=\*sqhD=6:.=6.Q]=\*sq]=\*sq=6.Q(=uz=6.Qa=E#c7(=uz(=uza=E#c7Џ=*It=g fЏ=*I2u=tF2u=tFЏ=*Ia=E#c7!+=Bb]+Bb]h==Om+=бih==Omn+`in+`ih==Om+vOmh==Om+Bb]+vOm_|m6Ɗg+Bb]!+=Bb]_|m6ƊgЏ*I]\*sqЏ*I$uz]\*sq_|m6Ɗg!+=Bb]Џ*I!+=Bb]c|=m6ƊgЏ*IЏ*Ic|=m6Ɗg]=\*sqt=g ftg fЏ=*Itg fЏ*IЏ=*IЏ=*IЏ*I(=uzЏ*I]=\*sq(=uz갴jFPm ?ѾV<t?.߾Og> ̒Eo> ?Ѿ̒Eo> ?Ѿ_O]>AYD_P>̄_O]>A^Jg즦>ˎYD_P>̄E_lL>7Lg>8q,>>ULg>Fw{G>~.q>Uq>UFw{G>~.#|=<ǽj.~鿗=9Y~?1\=9ش}?_=7 Ͻ8?5+=Y~?1\=9شy?Sd>I!;}?=Ͻ;}?=Ͻy?}>!q?>Uy?}>!Lg?>q?>U8q?,>>ULg?>E_?lL>7^Jg?즦>ˎO?>FYD_?P>̄YD_?P>̄O?>FE?W>MGо;?@?޾E? f>Hо+HоO?>FC$?Cį$?=/S(?R=<}h==/S(?5)^'>5)^'>=/S(?,KW?=/S(?ϹѸDɝ$?,KW?$?D?$?D?$?D?$?D?$?D?$?D?Ѹ$?D?Ѹ$?D?Ѹ$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?ksĽ~O>oHQn󸉾{R lC>H-nش>ݾvTƭpl﹉olش>ݾvTi,?ヒVش>ݾvT%> TA/DラV/DラV%> TA%NuE%> TAO=}U=%NuE%NuER=<}h=7^#>=/S(?R=<}h=%> TA5)^'>,K^?# r O>oHQn>>p c>FmdC>H-nZ>Y4"y>>pksĽ~`>,Լ4}C>H-n`>,Լ4}Z>Y4"yC>H-n`>,Լ4}ksĽ~{ M~7txu+"9|﹉ol﹉ol+9|[maĽ~ksĽ~+T9|6.,龝`õגԞn﹉ol﹉olpnM~7txu5)^'>#ux $zsE# r FP3$zsES nU3R ɁB$zsE$zsER ɁB;B VR ɁBxsMjdl> Y=YO>oHQnO>oHQnK>V=Yش>ݾvTK>V=YM?;kmEش>ݾvTM?;kmE#?#c0>ݾ)tT>ݾ)tTQ?] Vg0%> TA=)Sl-?%> TA#?#c0G7C?Ӷ$>;4D?Ro$*8%D?~$_G:x=D?/e$ID?$*8%D?~$x:o|D?$*8%D?~$ Q9D?}$b8D?j$D?ɝ$D?ɝ$'Q9D?$\8 D?$c:C?$G7C?Ӷ$*8%D?~$ID?$eC?$*8%D?~$bQ9UD?@H$*8%D?~$:"D?$bQ9UD?@H$_G:x=D?/e$*8%D?~$eC?$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';!,<';!,<';!,<';!,<. ,(=. ,(=. ,(=l',``i? ۵>{?ߞ?>??Y6>#>cG>f =]oT? !>݂pc?E)>>>}c?.*>ھ'4/`?%>󁾞/`?H>^~p?2j>G/`?>⺾/`?,̡>i PM5?J??Z???о?}r>+1W?6>4>g8d?>`a>g?q>'J=?TY?:h?|J_?=_>?<=ǻ?;?Ƹ8s\?3^ ?&=zV?, b?jd=A>?5*?J>?WG?ػ>L?q\?7+>>?h>X> mF?؁?> ???QbǾ3>fP׾Ag?/?щ]L? )/L?0{=_?-g>@>i_?Kt>$MH>Ƚv?Y9>In>S_?!s>⮖>_?>@i>_?XM>Z7V>O?`C>o>!pIk=,ź>*?k&[?>"9_? D>ܾ:f>TT>?$DRI?Q9z9IKJ$D\H>¤> m?KB?׾'$D #Q?>>ݱݾf?f?ݱݾ=>տj?k? =쾾|?U\}rh?z>0ve?>ij*??Yܦ>*'޾u=v+>T=s?&@%?=G~=n? =*E?Gߍ>c>rQ?f*?BB>H߾^ɾ4O?B>U? L? ?tP:n#1@PЉҖ-\07>j6?G.y<>@5?'>x?K?~>3L׾^?>!>n??<*>:JKx~wp=rv?LN=K+=Z|?> ?TB?k>?L=?0>Լ\?k?~7Y?&G>aa?dN>>S [?>$ p?R? ?8$'? ?!?m%?1#?j!D?-?{>?I?b; ?ޚ>wN?<9?wR?? > t?GƏ>Mv?pd>o?H=;]? ?=t>$I?"3T??WJ={d?ޓ=?9TKnVK|\ ?QF?I>sL?8 ??Y?Y?C>?-ψ-ψ$D+?Tɾ!?Zd[?27 b=X<]*=5Q*?'½W=?+F?N_>BRN%>o$=(n?[>[>;? e?>z-5K%ǾbK>F4K;h>RPx> ?.?WCOP?ʾ .>Qq_?J~R7?)v\`>d>>:?%><> ?k>x>, U*qB>R/?f\=-0=+<>!?H?b>(>s?bL8-n?3>Ή+O ՜d?Cϼ5?/' >ԒpQ?@?Oqq?kІ>+pO?Ӿk]<($Db?z>m𧼄2e?[>g3=Gf?XQ>PD=E?Qc=jzP=L?ʭ=>y>O?ur>zI?t>z??1N>vD+?7?="Y ?w^?- ?h??":l>J? eݾg޾ ѹ)q?؝>r?sz|=?=}UU?L `֥o?>?{>wi?1\>S>w>ez]=}H$DPgw>t#=j'x>ڬ<k>s(<%M^;;2M>5w/?>hv?= ?9WP?t4UEje?2;Ct?g3r(x s?d?GF??͛>S,>[?>P>6M\?Y?>Kg?o=P>Mk?ٴ>>?-[??Q=>+l?d;k>i?l<2>e?D>w?DR?R>\K?R?W>Uմ50v?U>#f*Nu?YlhHv?5@>U?TP|<P?JH=of>}|?fգ?pY?.T?S?0ﶾTb??;?YK(\> ?,= ;??>Y?PD ~ָ>/A?z>3??<>?\0>L>^> g>m{3?>B6J?D~>iDy"? =WS.8 ?$92^5!u>c_ݾm>ɞ_[Q>id8y<6+iytͼ{]B?#? >=!C?+V?>K?>?yὙBY?)>1bnd?c>i?_MѾ|}c>x?"9=3o[=:~w?%C?t> j?Tξ =VAOS?}C [S?>S?I?=O*V?U ?8 K%?h&L?V0ľ>5eu`qc??N=>gq|?\DG>.Ѹ,{? dan??ϊh>n}ٽ,w?i\?S?7Xֽ8hiW?M0S?6`X6N >?5,==j}?0ľ=B={k?Vؾ78g?>9U?B⩾>KU?8>} ?iFU?}<Dʾr`W?d ?Xm3~j??`d=J)?y=RT>s|X8)>?{>X&Y?1X>8bhyW*2_j}.>?>!+3/??(g]?&# ><.0=7?? dantpD;#KѸx:>KN?F:??qb?LY>aԾn?-G;M?tþY?1=@>W_?7b̙̾?X\>3p>?mG?"1=?^>>N ^1=:EףpB .``!?o mU?$ do U?%[\=?>J?MQ>:W?K2?v1??g7>^{T?? !>PL>h?=b?n=λk?S\=N${?;oμn=y: ?[R?M?r9S?j rV?>tV?.# dV?_/=?N/=]?R>o=|D>BPNY?y8?RI9pt5>zV?+3&?y{V?/5?!lV?D>E5 ?4xV?UJ!/9?fCB)>WI ) 횾?6;=ϹѸ9J=d~?c:R?=nf*l}5ľTkVؾ78g@?>&X>`?j+Rf> }?v޽L=,>DM?K,, 6 66644IOQY\X^^^$$,$(,(0((0,9:5B;=?FLILLIIPTZX<   a]cejkgsqvwlzn}Momprhifbbd^_`ON BA QVK[\@#}! /~.-31{2|yutx Ub&%+ *)!$#-%'./)+3 475r89s7t>86=C<GA@FGE|EC{LzvHJwRxjNPk]lTZ[U_Vc`ad'"&(*1e20gpqfSWiohumnu;uy::yD~"RHSYWJq 8Wj;o 2)IA 1AI);q 8Wj;o 2AI)#I> 1q 8Wj;o 2 I֣AI)q 8Wj;o 2cI^绺 I֣q 8Wj;o 2ףI cI^q 8Wj;o 2)IAףI q 8Wj;o 2]1I#)IAq 8Wj;o 2);IA]1I#q 8Wj;o 2ף;I );IAq 8Wj;o 2q;IZף;I q 8Wj;o 2 1P!1I"1#I> 1AI)P!1I"1AI) I֣P!1I"1 I֣cI^P!1I"1cI^ףI P!1I"1ףI )IAP!1I"1)IA]1I#P!1I"1]1I#);IAP!1I"1);IAף;I P!1I"1ף;I q;IZP!1I"1q;IZ C.]?Ѹ.>.d?8?8>LF?Em;>J+]?8?8!+>!?qV>gJF??8gJFV>q>!+>!??8,]+> m>LF>>?8.d.>8C.]>8l>?8C.]>8l.d.>ѸѸ?8LF>J+];>EmѸ?8!+>!gJFV>qѸ?qV>gJFp!u>p!Ѹ?Em;>J+]>LFѸ?Ѹ.>.d m+>,]Ѹ?8l>>C.]8.>.dѸ?Ѹ>>LFEm>;>J+]Ѹ?Ѹ!?+>!q>V>gJF?ѸLF?>p!?u>p!?ѸJ+]?;>EmLF?>?Ѹ.d?.>ѸC.]?>8l?ѸC.]?>8l>.d?.>88?ѸLF?>>J+]?;>Em>8?Ѹ!?+>!?gJF?V>q>8?q>V>gJF?!?+>!?8?Em>;>J+]?>>LF?8?8.>.d?8l>>C.]?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~cQ쨾 =cQMҜ=cQ`+=cQ쨾 =cQ=cQ=`=cQ=cQ夾=cQ=`=cQ=`=cQ夾=cQu`=cQ쨾 =cQ`+=cQ=cQ`+=cQʭ~=cQ=cQ=cQʭ~=cQ)=cQʭ~=cQ6;=cQ)=cQ)=cQ6;=cQ@ =cQ咡=cQ@Ǚ=cQL=cQ@Ǚ=cQ=`=cQL=cQL=cQ=`=cQY ۴=cQ=`=cQu`=cQY ۴=cQY ۴=cQu`=cQ Р.=cQL=cQY ۴=Q =cQ咡=cQL=Q3L =Q3L =cQL=Q =cQ@Ǚ=cQ咡=Qw`ʙ=Qw`ʙ=cQ咡=Q3L =cQ=`=cQ@Ǚ= Q= Q=cQ@Ǚ=Qw`ʙ=cQ쨾 =cQ=`=ϥQJ=cQ=`= Q=ϥQJ=cQMҜ=cQ쨾 =Q@Κ=cQ쨾 =ϥQJ=Q@Κ=Q@Κ=QJ =cQMҜ=cQMҜ=QJ =cQ`+=QJ =FQ`5=cQ`+=cQ`+=FQ`5=cQʭ~=Q\C&=cQ6;=]Qԭ#=cQ6;=cQʭ~=]Qԭ#=]Qԭ#=cQʭ~=FQ`5=Q`V=cQ@ =Q\C&=cQ@ =cQ6;=Q\C&=Q`|=cQ)=Q`V=cQ)=cQ@ =Q`V=cQ=cQ)=Q`|=cQ夾=cQ=Qۥk=cQ=Q`|=Qۥk=cQu`=cQ夾=QgB`=cQ夾=Qۥk=QgB`=QgB`=Q7=cQu`=cQu`=Q7=cQ Р.=Q7=KQ=cQ Р.=cQ Р.=KQ=cQY ۴=KQ=Q =cQY ۴=P߂=P =]Qԭ#=]Qԭ#=P =Q\C&=P =Pb=Q\C&=Q\C&=Pb=Q`V=Pb=_P =`L=Q`V=_P =`L=/PtPQ>Q`V=Q`V=/PtPQ>Q`|=/PtPQ> Pf >Q`|=Q`|= Pf >Qۥk= Pf >PF@ >Qۥk=Qۥk=PF@ >QgB`=PF@ >P6H0t>QgB`=P6H0t>P8=QgB`=QgB`=P8=Q7=P8=PY'=Q7=PY'=HP玾9=Q7=Q7=HP玾9=KQ=HP玾9=Pۍ=KQ=Pۍ=eP`=KQ=KQ=eP`=Q =eP`=P'K=Q =Q =P'K=Q3L =P'K=PRsa=Q3L =PRsa=0P2=Q3L =Q3L =0P2=Qw`ʙ=0P2=P@\=Qw`ʙ=Qw`ʙ=P@\= Q=P@\=WP@= Q= Q=WP@=ϥQJ=WP@=P@ +=ϥQJ=ϥQJ=P@ +=Q@Κ=P)ŶBE=QJ =Q@Κ=P@ +=P)ŶBE=Q@Κ=fPU=FQ`5=QJ =P)ŶBE=QPL#b=QJ =QPL#b=fPU=QJ =fPU=P߂=FQ`5=FQ`5=P߂=]Qԭ#=P'K=eP`=PL=fPU=QPL#b=hPUl=/PtPQ>_P =`L=zPPb>P@ +=WP@=Pk=HP玾9=ˬP@=Pۍ=Pۍ=ˬP@=eP`=HP玾9=PY'=yPv}=PY'=$P@=yPv}=Pʢ >P >PF@ >PF@ >φPj L >Pʢ >Pݴ0>PE >/PtPQ>/PtPQ>P5 >Pݴ0>хPe=P{Ͼ7=P =P =Pp׾=хPe=Pp =P_z=P߂=P߂=fPU=Pp =fPU=̈PE=Pp =P4"=Pu/=P@ +=P@ +=Pk=P4"=ȆPӊ=rPP=WP@=WP@=P@\=ȆPӊ=P@\=P$❾@b =ȆPӊ=P׏`J=Pޑh=PRsa=PRsa=P'K=P׏`J=P'K=PN`E=P׏`J=ˬP@=HP玾9=ЅPX [=ЅPX [=HP玾9=uPOĎ=HP玾9=yPv}=uPOĎ={PB =$P@=P8=$P@=PY'=P8=P6H0t>P=`G>P8=P8=P=`G>{PB =P6H0t>yP>P=`G>PF@ >P >P6H0t>P6H0t>P >yP>Pf >φPj L > Pf >φPj L >PF@ > Pf >/PtPQ>PE > Pf > Pf >PE >Pf >zPPb>P5 >/PtPQ>_P =`L=/Pƺ=zPPb>Pb=qP =_P =`L=_P =`L=qP =/Pƺ=P =P{Ͼ7=Pb=Pb=P{Ͼ7=qP =Px=Pp׾=P߂=Pp׾=P =P߂=P߂=P_z=Px=hPUl=̈PE=fPU=QPL#b=>P蹾U=hPUl=P)ŶBE=NP@=QPL#b=QPL#b=NP@=>P蹾U=P@ +=Pu/=P)ŶBE=P)ŶBE=Pu/=NP@=WP@=rPP=Pk=Pk=rPP=΅P"A=ŅPk@,=P$❾@b =0P2=P$❾@b =P@\=0P2=0P2=cP0==ŅPk@,=PRsa=*PXQ=0P2=0P2=*PXQ=cP0==PRsa=Pޑh=*PXQ=PL=PN`E=P'K=ˬP@=PՌ =eP`=eP`=PՌ =PL=ʺKՌ =PՌ =BK=PՌ =ˬP@=BK=BK=ˬP@=޺Kꑍ`Q=ˬP@=ЅPX [=޺Kꑍ`Q=޺Kꑍ`Q=ЅPX [=K!`=ЅPX [=uPOĎ=K!`=K!`=uPOĎ=LK&tq=uPOĎ=yPv}=LK&tq=LK&tq=yPv}=K0=yPv}=$P@=K0=K0=$P@=LK' g=$P@={PB =LK' g=LK' g={PB =K:D>{PB =P=`G>K:D>K:D>P=`G>fK臛>P=`G>yP>fK臛>fK臛>yP> K >yP>P > K > K >P >KȢp >P >Pʢ >KȢp >KȢp >Pʢ >$KDpM >Pʢ >φPj L >$KDpM >$KDpM >φPj L >޺Klc >φPj L >Pf >޺Klc >Pf >PE >޺Klc >޺Klc >PE >։Kp: >։Kp: >PE >>K,>PE >Pݴ0>>K,>>K,>Pݴ0>K >Pݴ0>P5 >K >K >P5 >Kk>P5 >zPPb>Kk>Kk>zPPb>vK]ĺ`=zPPb>/Pƺ=vK]ĺ`=vK]ĺ`=/Pƺ=Kt =/Pƺ=qP =Kt =Kt =qP =ZKAо@7=qP =P{Ͼ7=ZKAо@7=P{Ͼ7=хPe=ZKAо@7=ZKAо@7=хPe=ڸK=ڸK=хPe=5K =хPe=Pp׾=5K =5K =Pp׾=K= =Pp׾=Px=K= =K= =Px=ʺK2=Px=P_z=ʺK2=ʺK2=P_z=/K=P_z=Pp =/K=/K=Pp =KH=Pp =̈PE=KH=̈PE=hPUl=KH=KH=hPUl=KU@l=KU@l=hPUl=KU=hPUl=>P蹾U=KU=KU=>P蹾U=K9!@@=>P蹾U=NP@=K9!@@=K9!@@=NP@=ZK+0=NP@=Pu/=ZK+0=ZK+0=Pu/=KI8"=Pu/=P4"=KI8"=KI8"=P4"=SK {=P4"=Pk=SK {=SK {=Pk=K$%<=Pk=΅P"A=K$%<=K$%<=΅P"A=KiV@=΅P"A=rPP=KiV@=KiV@=rPP=!K=rPP=ȆPӊ=!K=!K=ȆPӊ=ϺK䝾T =ȆPӊ=P$❾@b =ϺK䝾T =ϺK䝾T =P$❾@b =Km,=P$❾@b =ŅPk@,=Km,=Km,=ŅPk@,=ZK8@j==ŅPk@,=cP0==ZK8@j==ZK8@j==cP0==KX@|Q=cP0==*PXQ=KX@|Q=*PXQ=Pޑh=KX@|Q=KX@|Q=Pޑh=`KYg=`KYg=Pޑh=Kd؏ ?=Pޑh=P׏`J=Kd؏ ?=Kd؏ ?=P׏`J=UKQO3=P׏`J=PN`E=UKQO3=UKQO3=PN`E= KL =PN`E=PL= KL = KL =PL=ʺKՌ =PL=PՌ =ʺKՌ =ʺKՌ =BK= KL =BK=Kl= KL = KL =Kl=UKQO3=UKQO3=Kl=Kd؏ ?=Kd؏ ?=Kl=`KYg=KX@|Q=`KYg=ZK8@j==`KYg=K蚾@+-=ZK8@j==ZK8@j==K蚾@+-=Km,=Km,=K蚾@+-=ϺK䝾T =ϺK䝾T =K蚾@+-=!K=K蚾@+-=Kå=!K=!K=Kå=KiV@=KiV@=Kå=K$%<=K$%<=Kå=SK {=KI8"=SK {=ZK+0=K9!@@=ZK+0=KU=KU@l=KU=KH=KU=K盿 =KH=KH=K盿 =/K=/K=K盿 =ʺK2=ʺK2=K盿 =K= =5K =K= =ڸK=K= =ށKg T=ڸK=ڸK=ށKg T=ZKAо@7=ZKAо@7=ށKg T=Kt =Kt =ށKg T=vK]ĺ`=ށKg T=ށK>vK]ĺ`=vK]ĺ`=ށK>Kk>Kk>ށK>K >K >ށK>>K,>ށK>։Kp: >>K,>։Kp: >݁K, >޺Klc >޺Klc >݁K, >$KDpM >$KDpM >݁K, >KȢp >KȢp >݁K, > K >݁K, >݁KEA> K > K >݁KEA>fK臛>fK臛>݁KEA>K:D>K:D>݁KEA>LK' g=K0=LK' g=LK&tq=LK' g=ہK֎=LK&tq=LK&tq=ہK֎=K!`=K!`=ہK֎=޺Kꑍ`Q=޺Kꑍ`Q=ہK֎=BK=QKE@1=K蚾@+-=QKD=QKD=K蚾@+-=QK@^=QK\P=K= =QKA=QKA=K= =QKn`=QK8߹`/=ށKg T=QK=QK=ށKg T=QK\P=QK\P=ށKg T=K= =QK챾>ށK>QKA=QKA=ށK>QK8߹`/=QK8߹`/=ށK>ށKg T=QK=ہK֎=QK0=QK0=ہK֎=QKiI x=K蚾@+-=`KYg=QK@^=QK@^=`KYg=QKwl=`KYg=Kl=QKwl=QKwl=Kl=QK;x=QKŝЄ>݁KEA>QK\¢ i>݁KEA>݁K, >QK\¢ i>QK\¢ i>݁K, >QK\ >QK;x=Kl=QK`=Kl=BK=QK`=QK`=BK=QK}=QK}=BK=QK=BK=ہK֎=QK=QKz{$=Kå=QKJ@\&=QKJ@\&=Kå=QKE@1=Kå=K蚾@+-=QKE@1=QKg;=SK {=QKL@+=QKL@+=SK {=QKz{$=SK {=Kå=QKz{$=QK\ >݁K, >QK0>݁K, >։Kp: >QK0>QK0>։Kp: >QK챾>QK챾>։Kp: >ށK>ہK֎=LK' g=QKiI x=QKiI x=LK' g=QK95>LK' g=݁KEA>QK95>QK95>݁KEA>QKŝЄ>QK2@q=KU=QKOHS=KU=ZK+0=QKOHS=QKOHS=ZK+0=QKg;=QKg;=ZK+0=SK {=K= =K盿 =QKn`=QKn`=K盿 =QKӼϊ=QKӼϊ=K盿 =QK2@q=K盿 =KU=QK2@q=QK=tL}=QK}=tL}=tL`=QK}=QK}=tL`=QK`=tL`=tL;x=QK`=QK`=tL;x=QK;x=tL;x=tLwl=QK;x=QK;x=tLwl=QKwl=tLwl=tL@^=QKwl=QKwl=tL@^=QK@^=tL@^=tLD=QK@^=QK@^=tLD=QKD=tLD=tLE@1=QKD=QKD=tLE@1=QKE@1=tLE@1=tLJ@\&=QKE@1=QKE@1=tLJ@\&=QKJ@\&=tLJ@\&=tLz{$=QKJ@\&=QKJ@\&=tLz{$=QKz{$=tLz{$=tLL@+=QKz{$=QKz{$=tLL@+=QKL@+=tLL@+=tLg;=QKL@+=QKL@+=tLg;=QKg;=tLg;=tLOHS=QKg;=QKg;=tLOHS=QKOHS=tLOHS=tL2@q=QKOHS=QKOHS=tL2@q=QK2@q=tL2@q=tLӼϊ=QK2@q=QK2@q=tLӼϊ=QKӼϊ=tLӼϊ=tLn`=QKӼϊ=QKӼϊ=tLn`=QKn`=tLn`=tLA=QKn`=QKn`=tLA=QKA=tLA=tL\P=QKA=QKA=tL\P=QK\P=tL\P=tL=QK\P=QK\P=tL=QK=tL=tL8߹`/=QK=QK=tL8߹`/=QK8߹`/=tL8߹`/=tLA=QK8߹`/=QK8߹`/=tLA=QKA=tLA=tL챾>QKA=QKA=tL챾>QK챾>tL챾>tL0>QK챾>QK챾>tL0>QK0>tL0>tL\ >QK0>QK0>tL\ >QK\ >tL\ >tL\¢ i>QK\ >QK\ >tL\¢ i>QK\¢ i>tL\¢ i>tLŝЄ>QK\¢ i>QK\¢ i>tLŝЄ>QKŝЄ>tLŝЄ>tL95>QKŝЄ>QKŝЄ>tL95>QK95>tL95>tLiI x=QK95>QK95>tLiI x=QKiI x=tLiI x=tL0=QKiI x=QKiI x=tL0=QK0=tL0=tL=QK0=QK0=tL=QK=tL=tL}=QK=tL֢ "=tL@^=tL  ǟ=tL@^=tLwl=tL  ǟ=tL  ǟ=tLwl=tL@=tLͭ`=tL\P=tLݴ=tL\P=tLA=tLݴ=tLݴ=tLA=tLI`=tLwl=tL;x=tL@=tL;x=tL`=tL@=tL@=tL`=tLD`'=tL,w`=tLE@1=tL֢ "=tLE@1=tLD=tL֢ "=tL֢ "=tLD=tL@^=tLI=tLz{$=tL,w`=tLz{$=tLJ@\&=tL,w`=tL,w`=tLJ@\&=tLE@1=tL=tL8߹`/=tLͭ`=tL8߹`/=tL=tLͭ`=tLͭ`=tL=tL\P=tL`=tLOHS=tL쪾@=tLOHS=tLg;=tL쪾@=tL쪾@=tLg;=tLI=tLg;=tLL@+=tLI=tLI=tLL@+=tLz{$=tL@=tL0>tLM=tL0>tL챾>tLM=tLM=tL챾>tL=tL챾>tLA=tL=tL=tLA=tL8߹`/=tL`=tL}=tLD`'=tL}=tL=tLD`'=tLD`'=tL=tL `=tL=tL0=tL `=tL `=tL0=tLá=tL+=tL\¢ i>tL@=tL\¢ i>tL\ >tL@=tL@=tL\ >tL0>tLA=tLn`=tLI`=tLn`=tLӼϊ=tLI`=tLI`=tLӼϊ=tL`=tLӼϊ=tL2@q=tL`=tL`=tL2@q=tLOHS=tL0=tLiI x=tLá=tLiI x=tL95>tLá=tLá=tL95>tL+=tL95>tLŝЄ>tL+=tL+=tLŝЄ>tL\¢ i>H@=tLD`'=HD`'=tLD`'=tL `=HD`'=HD`'=tL `=H `=tL `=tLá=H `=H `=tLá=Há=tLá=tL+=Há=Há=tL+=H+=tL+=tL@=H+=H+=tL@=H@=tL@=tLM=H@=H@=tLM=HM=tLM=tL=HM=HM=tL=H=tL=tLͭ`=H=H=tLͭ`=Hͭ`=tLͭ`=tLݴ=Hͭ`=Hͭ`=tLݴ=Hݴ=tLݴ=tLI`=Hݴ=Hݴ=tLI`=HI`=tLI`=tL`=HI`=HI`=tL`=H`=tL`=tL쪾@=H`=H`=tL쪾@=H쪾@=tL쪾@=tLI=H쪾@=H쪾@=tLI=HI=tLI=tL,w`=HI=HI=tL,w`=H,w`=tL,w`=tL֢ "=H,w`=H,w`=tL֢ "=H֢ "=tL֢ "=tL  ǟ=H֢ "=H֢ "=tL  ǟ=H  ǟ=tL  ǟ=tL@=H  ǟ=H  ǟ=tL@=H@=tL@=tLD`'=H@=H أ`=H+=Hl2=H+=H@=Hl2=Hl2=H@=H=H@=HM=H=H=HM=Hwժ X=HM=H=Hwժ X=Hwժ X=H=H3=H=Hͭ`=H3=H3=Hͭ`=H~=H!`͜=H֢ "=H=H֢ "=H  ǟ=H=H=H  ǟ=H j=H  ǟ=H@=H j=H j=H@=H|N \=H@=HD`'=H|N \=H|N \=HD`'=H< ߽=HD`'=H `=H< ߽=H< ߽=H `=H أ`=H `=Há=H أ`=H أ`=Há=H+=Hͭ`=Hݴ=H~=Hݴ=HI`=H~=H~=HI`=Hz=HI`=H`=Hz=Hz=H`=HH=H`=H쪾@=HH=HH=H쪾@=Hԛ=H쪾@=HI=Hԛ=Hԛ=HI=H!`͜=HI=H,w`=H!`͜=H!`͜=H,w`=H֢ "=HAhR=H< ߽=H< ߽=H< ߽=H أ`=H< ߽=H< ߽=H أ`=H أ`=H أ`=Hl2=H أ`=H أ`=Hl2=Hl2=Hl2=H=Hl2=Hl2=H=H=H=Hwժ X=H=H=Hwժ X=Hwժ X=Hwժ X=H3=Hwժ X=Hwժ X=H3=H3=H3=H3=H㺫@=H3=Hz=H㺫@=Hz=HH=H㺫@=H㺫@=HH=HH=HH=Hԛ=HH=HH=Hԛ=Hԛ=Hԛ=H!`͜=Hԛ=Hԛ=H!`͜=H!`͜=H!`͜=H=H!`͜=H!`͜=H=H=H=H j=H=H=H j=H j=H j=HAhR=H j=H@- =H=H =H=Hwժ X=H =H =Hwժ X=He౶=Hwժ X=H3=He౶=He౶=H3=H@=H3=H~=H@=H@=H~=H'"ҫ=H~=H㺫@=H'"ҫ=H'"ҫ=H㺫@=H @;=H㺫@=HH=H @;=HH=Hԛ=H @;=H @;=Hԛ=HM=Hԛ=H!`͜=HM=HM=H!`͜=HR`J=H!`͜=H=HR`J=HR`J=H=Hm =H=H j=Hm =Hm =H j=H1 <=H j=HAhR=H1 <=H1 <=HAhR=HӰ@=HAhR=H< ߽=HӰ@=HӰ@=H< ߽=HKȥ=H< ߽=H أ`=HKȥ=HKȥ=H أ`=H@- =H أ`=Hl2=H@- =H@- =Hl2=H=I`8=H'"ҫ=I`ڨ=H'"ҫ=H @;=I`ڨ=I`ڨ=H @;=I=H @;=HM=I=I=HM=IVlة=HM=HR`J=IVlة=IVlة=HR`J=Iה=HR`J=Hm =Iה=Iה=Hm =I8] +=Hm =H1 <=I8] +=I8] +=H1 <=I^Ԥ!=H1 <=HӰ@=I^Ԥ!=I^Ԥ!=HӰ@=I^ڥ=HӰ@=HKȥ=I^ڥ=I^ڥ=HKȥ=I) ^=HKȥ=H@- =I) ^=I) ^=H@- =If=H@- =H =If=If=H =I#>i=H =He౶=I#>i=I#>i=He౶=Iu.=He౶=H@=Iu.=Iu.=H@=I`8=H@=H'"ҫ=I`8=I^Ԥ!=|N8] +=I8] +=|N8] +=|Nה=I8] +=I8] +=|Nה=Iה=|Nה=|NVlة=Iה=Iה=|NVlة=IVlة=|NVlة=|N=IVlة=IVlة=|N=I=|N=|N`ڨ=I=I=|N`ڨ=I`ڨ=|N`ڨ=|N`8=I`ڨ=I`ڨ=|N`8=I`8=|N`8=|Nu.=I`8=I`8=|Nu.=Iu.=|Nu.=|N#>i=Iu.=Iu.=|N#>i=I#>i=|N#>i=|Nf=I#>i=I#>i=|Nf=If=|Nf=|N) ^=If=If=|N) ^=I) ^=|N) ^=|N^ڥ=I) ^=I) ^=|N^ڥ=I^ڥ=|N^ڥ=|N^Ԥ!=I^ڥ=I^ڥ=|N^Ԥ!=I^Ԥ!=|N^Ԥ!=|N8] +=I^Ԥ!=|Nה=Nm =|NVlة=Nm =NR`J=|NVlة=|NVlة=NR`J=|N=NR`J=NM=|N=|N=NM=|N`ڨ=NM=N @;=|N`ڨ=|N`ڨ=N @;=|N`8=N @;=N'"ҫ=|N`8=|N`8=N'"ҫ=|Nu.=N'"ҫ=N@=|Nu.=|Nu.=N@=|N#>i=N@=Ne౶=|N#>i=|N#>i=Ne౶=|Nf=Ne౶=N =|Nf=|Nf=N =|N) ^=N =N@- =|N) ^=|N) ^=N@- =|N^ڥ=N@- =NKȥ=|N^ڥ=|N^ڥ=NKȥ=|N^Ԥ!=NKȥ=NӰ@=|N^Ԥ!=|N^Ԥ!=NӰ@=|N8] +=NӰ@=N1 <=|N8] +=|N8] +=N1 <=|Nה=N1 <=Nm =|Nה=NR`J=NUK=NM=NUK=Nꏧܝ=NM=NM=Nꏧܝ=N @;=Nꏧܝ=N`=N @;=N @;=N`=N'"ҫ=N`=NI=N'"ҫ=N'"ҫ=NI=N@=NI=N 0=N@=N@=N 0=Ne౶=N 0=N ;=Ne౶=Ne౶=N ;=N =N ;=N2z=N =N2z=N@=N =N =N@=N@- =N@=NC`}=N@- =N@- =NC`}=NKȥ=NC`}=NsY=NKȥ=NKȥ=NsY=NӰ@=NsY=NBϼ=NӰ@=NӰ@=NBϼ=N1 <=NBϼ=NС )=N1 <=N1 <=NС )=Nm =NС )=N=Nm =Nm =N=NR`J=N=NX z=NR`J=NR`J=NX z=NUK=NBϼ="OС )=NС )="OС )="O=NС )=NС )="O=N="O="OX z=N=N="OX z=NX z="OX z="OUK=NX z=NX z="OUK=NUK="OUK="Oꏧܝ=NUK=NUK="Oꏧܝ=Nꏧܝ="Oꏧܝ="O`=Nꏧܝ=Nꏧܝ="O`=N`="O`="OI=N`=N`="OI=NI="OI="O 0=NI=NI="O 0=N 0="O 0="O ;=N 0=N 0="O ;=N ;="O ;="O2z=N ;=N ;="O2z=N2z="O2z="O@=N2z=N2z="O@=N@="O@="OC`}=N@=N@="OC`}=NC`}="OC`}="OsY=NC`}=NC`}="OsY=NsY="OsY="OBϼ=NsY=NsY="OBϼ=NBϼ="OBϼ="OС )=NBϼ="O`="Oꏧܝ="OsY="Oꏧܝ="OUK="OsY="OI="O`="O 0="O`="OsY="O 0="O 0="OsY="O ;="OsY="OC`}="O ;="O ;="OC`}="O2z="OC`}="O@="O2z="OС )="OBϼ="O="OBϼ="OsY="O="O="OsY="OX z="OsY="OUK="OX z=/\V߾e|:G=e|:G=Bmu>޾s#?F%n@?Msw>|Y=ss>-ĺְ<|Y=|Y=ƹѺ԰<4xWƹѺ԰< 4xW4xW`8] @&Q|Y==xWv=ER%'9?|N[Y=qWj^=@Y[\=F?|Y= i.v=HE s>F%n@?t*<=tsS<޿uP%+A7?%XN1]= @SѺT< s>R<|{<>|] s>sS<޿u̢V<"=޺ڵ<]k猽Ѻڵ<<}]k猽 ??ET,fAA$)zu=`< gي9L;h< u<[~=e|:G=2]nAU=Ib|==Sz#?C_ @)T=G;XӼGd|z=LquὟ}= 땼f:;XӼ;r;!&=,;мt_~=p;†=PTЌUf^]#i= y=.x蕼^eoƺ;S_=Y=*{=[9=Cz=xiyi==Ю@|zAgik=C#=Id @Rgk=Q=uc=;(j @D] @&QZdJ=};4xWdr=;v=E4x}~[No=f }n}?>ڟt?~/<ݻ=~O]o}?4޾Uf?ďnsu?}!p6=+}opi=tg3|S? C޾{f?,{av>Fh >~N=~N= |=| vsz>!eݽ dpq2nzD}}e~mB!eݽ dps~ S_Bewd 侞ݽdpx3:Tp=^WG_R~O#T۽R~t#Z۽- Ov3:TpUXe>֬xV-=~6~)ۻU8~Bػؠ/~v=-Kne>ګx/~=Jp=E>@mKne>ګxޟŽrc?Ź^6N?%Q}J=5~}I=XW ~@=IŽtc?W ~@=I+r?^؟> ƽpc?۽Җ{?g=} =w0=(Ov?+Z>(Ov?+Z>} =w0=z 5Ij?><}A=0=l󟽵X?F?ԡ4Jj?>[C)?u??8B?T%?~_U==z9B?X%?}=b=Y}="=I}t=u=G ?ZU?}==~_U==殽 ?U?3F)?f??0}@=\J=|.>h?ٲ  ?pU?~<ϐ=)q>#t?I}t=u=}e =J=ł>t?|.>h?di7K}?Z߽^x~?~Y9=޽y~?Y~<7#=~[y1=}XCq=d\YPtu?)~[$e=~<~˽|=9<~m˽k"}=齵h>~+Zn?EY16p2*Q,H9~|ѼYDdK}fؽi }SؽΙ]K^Kw>6p2R~#۽2H_\:~K۝H9~|Ѽ2H_YDdK6~)ۻUV-=~ov- Ovɐ-N%vGh=~4iى~-~>B]A>'?m}'P=f)ܽp=E>@mP/~SM=K꽏}=)ܽ}Ƃ=JܽJ-2}? Hx>A]~}I=Xi 3?2}=)ܽ}=)ܽ3?23|?$H}=Ϊ3N?,3?2H;{?1S6+r?؟W ~@=If{?%P=K(?<ּC~=zr~{l= |r[dL?s׼(:{?`11c?w=~dL՗?ּҖ{?g=+>c?w=+>c?R8x=ɸ{?=f=z?Y>Җ{?g=Pǯv?Y> =z?Y>f=z?Y>YPv?3f>H<o?#>YPv?3f>z 5Ij?>H<o?#>H<o?#>"s5Ij?>Xx=H]?;>z 5Ij?>_%ZX??Xx=H]?;>u=]?1>\X?e?]<$J??\X?e?;7B?U%?v_p{"?xR&?pݗB?T%?a8G)???-8>p{"?xR&?-8>p{"?xR&?"D)???,O =e?O?"D)???J ?_U?,O =e?O?,O =e?O?G ?ZU?c?~m ?U?z.>Nh?Wc?c?.>h?.V=i>&q?|.>h?ł>t?.V=i>&q?P=e>q?ł>t?O=9>Ҟ{?ł>t?H0k >n}?=9>{?O=9>Ҟ{?0 >]o}?<=x?0 >]o}?޽ty~?<=x?<=x?޽ty~?: !)?ֽq*]!)?&=>)?d*fFn!?@n=U ?.*eFn!?]Zs?@n=U ?p=̂Ug ?_Zn?VT_Zn?Fh >$TA.hB>-v>VTVT-v>+?>ort>&@>tt\>-v><[!}\>-v>[:BdȺ;:BdȺ;>?d;EY1;=K}EY12cz5D;=K};=J}E2cz5D<uR2zlDݽ`cp<u<uݽ`cp6u=4dW[!eݽ dpv?dh 6u=4dW[Avdc|Q046u=4dW[6u=4dW[侙ꄽ|Q38{< QI8{< QIꄽ|Q3>0.>ꄽ|Q3w>6p2o >ت.Po >ت.P46D2¨6p2G`K¨,Qkdg3򮾀Tp- Ovs>Qkds>QkdTw-uN7v =TJ~- OvV$Jj =TJ~ =TJ~i0<=iЊ㜢=~< =n0<=Њ㜢=~χ=p<>zЊ㜢=~Kne>ګxχ=p<>zχ=p<>z/e>XxY=^>:$r/e>Xxk >@mY=^>:$rY=^>:$rk >@mck >@m?A}>]cc?A}>]=f?kN?A}>]Cg3}?^H=?N=f?kNCg3}?^Hc<5?{4Cg3}?^Hsl3?P2c<5?{4P 3?2n66N?c<^5?+4c<6?3n66N?& ?.,?8 ?61,?[n66N?#=^?)n66N?> ƽpc?۽#=^?)=!^? ƽtc?*n<o?cƽeqc?+r?^؟"<o?Ժn<o?c_+r?̟Y= x?@Z+r?^؟(:{?`1Y= x?@Z|={x?:ZH;{?11c?R8x=Y= x?@Z>c?5x=_%{?=>i|={x?:Zji"<o?Ժ<o?%{?=>LjQ =^?V =^?b&{?=>Oi ?61,?[b<6?3 ?61,?[=f?kN& ?.,?8Wjz?u=o==?NΝ=?Nhz?=È=ؗcckz?`=V=Y=^>:$rY==_>%rxfz?f=]=< =<>9zWjz?u=o=X#{?LzT=<>z {?JRkd8<˾Xjs>Qkd!˰>,J#5Mu$>۩.HNت.PM=3dZ侍>.z?/N<6u=4dW[.='6d_P侅z??d;n<;!}I>>;dȺ;Y>*st>>CBd;Cz?@Bƺ=&@>tt\>&@>tt\>Cz?@Bƺ=ZS<~DjuV>ŋ[<DjV>ZKz?EA^==DU ?=#U ?>Cz?#@B==q>n)? Ez?R'BǺ=9z? :'>"= >!)?&=>)?6;z? j'>z?B &>y=^[Z?0=TZ;_Z?9z? :'>E=YȾoj?8z?% S'>? u`Q?2`=WZȾj?T?uRUQ?z??p<7R>>T?z?p<R>z=<9>h{? =ǿ9>ɝ{?qz?cΈ<R>Z=[>q?]~z?q${?r=H5>=*f>q?=vh> q?{?nU=6>+<>c?Rc?${?=5>r =?LO?,O =e?O?"'{?趞=5>-8>p{"?xR&?1u"?cS&?==]?>)>yz"? X&?{?3>A8=Xx=H]?;>Xx=H]?;>!{?f3>n=H<o?#><o?>!{?f3>n==z?Y> =z?Y>!{?f3>n=_6>nc?w=f?I>kz?`=V=P>?bc'?Q>?p!?kz?`=V=&l?YD>*j?2>r۽>?dƺ;_O??$뼻O??>?dƺ;h?>ߓ=f?.>ʎFz?B”=n|D?v?CꗾD?t?TۗEz?'Bړ=Դj?|>o۽Դj?|>o۽ Ez?R'BǺ=>?dƺ;>k?;,>*:z?I 5'>$D?/>&D?U2>I*:z?I 5'>f?#>ˎf?#>ˎ6;z? j'>Ez?'Bړ=DNh?ξ#D {?d3>=4?, |84?5 q {?d3>=4l?I)~kz?`=V=~ ?X1,?&l?YD>&l?YD>& ?.,?8j?׬d> ?4,?({?o=>jij?׬d>j?̬d>&{?=>OiYYD?No>V A?[)"'{?趞=5>Lf?W?=پ"'{?趞=5>z?R<+VR>էf?#=پէf?#=پz?R<+VR>4A?Ǡ;'Z\D?Qo>&{?=>Oik?Ǿ{=({?o=>ji_6>nc?w=jk?Ⱦz=k?Ǿ{=+>c?w=1P?5N 1P?5N +>c?R8x=DNh?ξ#D+>c?w=!{?f3>n=Kh?ξA}%i? !=_}>${?\M${?\M4l?G>>s>QkdjO?չ<>p?gO?$<>Gu?t>9k d}%i? !=_}>t>9k d${?\M4A?Ǡ;'z?r<VR>"j?~=wƾz?Br/?u[Q?j?=ƾJj?H=,ƾ?2u]Q?>k?;,>>k?;,>?2u]Q?*:z?I 5'>!{?f3>n=B>y"?P&?ul?WD~ul?WD~;>w"?+U&?Bi?x7;>w"?+U&?"'{?趞=5>i?@xBi?)x""'{?趞=5>V A?[)k? >Qp_>o >ت.Pl?>P>>.%ְ>]:MIl?>A>l?>P>ְ>]:M4l?G>>4l?G>>ذ>6kd>?d;Wz?35<Бh?>ߓ=h?>==Wz?35<БP;?!?9>P;?!?9>)z?N<ϑk?>&r_>Wz?35<Бo >ت.Pk? >Qp_>Kh?ξA~?121P?5N !~?K)KM?R(;)2P?>{ 1P? 4O?R6Q:jk?Ⱦz=N? R;~?㶽=<k?gȾǮ=jk?Ⱦz=~?+۬<8`D?kM4o>S~?<#N?= _D?Mo>8`D?kM4o>pO?2o=j?۬d>^N?=N?@ `I=3j?ڬЩd>3j?ڬЩd>N??m8= l?e]>N?@ `I= ~?^ =tl?XW>l? fI>,~?ut2A=T>?Im? ~?^ =7N?ץ=SV>?a0 ?T>?Im?N? 㻅=f?B>N?s=~?j=f?B>f?B>~?`ļg=_=?}q*?~?j=N?W-; =_=?}q*?_=?}q*?N?A)KR=#i?V!=B>N? ; =[~?SȺ<=#i?V!=B>#i?V!=B>_~?p?~?<ٍ=M?==jO?չ<>p?jO?չ<>p?O? < ۊ=[>N?Y==N?;==$Jj=l?H>͍>l?H>͍>O?\+=+v= l?>m >=N?;==j=~?=&o=l?>P> l?>m >y~?J=9 =k?>|n_>~?=&o=5N?*="=k? >Qp_>Kk? >I_>]O?=Z=S;?!?;>5N?*="=~?F=eP;?!?9>^~?I==~?+==h?&>ݓ=}O?G=;O??%N?=:N?r=]_eO???I꼻O??O?L=-*j?2>r۽N?r=]_e:~?=a_*j?2>r۽*j?2>r۽]~?m=QD?v?^ϗ:~?=a_N?t=0D?t?TۗD?t?TۗN?=f?.>ʎN?t=0~?./=󎽱f?.>ʎf?.>ʎ~?x8=D?:'>~?./=lN?:=FcD?f.>[D?K#>IO?z%=z>k?;,>lN?:=FZN?N<{-k?R>,>O˴k?C:,> Ǵ+O?D>5N?@ `I==N?zCt=1v?U>E51v?U>E5#N?=a{?6>Z~b{?(=N?r=]_e0v?̊'=N?r=]_e)N?=&:0v?̊'=0v?͊'=)N?=&:/a{?f=5(#N?=S~?Z~~?*<N? R;a{?6>Z~a{?6>Z~N? R;b{?mA>jC;b{?<N?t=0b{?(=N?t=0:~?=a_b{?T(L=b{?(=:~?=a_N?r=]_ehc{?8 n ׽M?===`j=-.v?c!e=N?;==j=M?m =K$=-.v?c!e-.v?c!eM?==_{?9n<5N?X=!=~?<ٍ=_{?9n<_{?9n<~?<ٍ=N?W-; =b{?e0ZN?N<{--1v?~p@>7N?0 1v?o<>N?=zsb{?Q>N?=z~?./=sb{?Q>a{?8{>~?./=N?t=0N? R;!~?K)Kb{?mA>jC;~?<"L N?+ioμb{?mA>jC;b{?mA>jC; N?+ioμ/v?3>= N?+ioμN?*& /v?3>=/v?3>=GN?[~C!`{? >`>c{?Z=0>IN?y%%Lb{?Ĕ2IN?y%%LS~?Z|;b{?Ĕ2b{?Ĕ2S~?Z|;7N?0 <?û<?û<?;><? ;o?M%=ko?M%=k? ;x?{.=m<? ;?x?{.=m< ?=b;}?a=;#?><#?><}?a=;л?ҩ-ٛ? Fa=4;?4&=<л?ҩ-л?ҩ-?4&=<*?tΟ+?>&=`<?^?d?T8 =OL^?:^???7 [>9?gN=?\%.Ij<<>^i><'^i>o?M%k<ɞ<po?M%k<3? 7?<ɞ<p+<?Zڬj>ɞ<pɞ<pk^q=m><>^i>ARqx>KD&&B?<׬^ry>PX& B?<)\?AU&&B?~={?i:q?ɞ:q?>^?Ax>Rq?} B?G&?Rp^?-^?A&B?U&?i<\?J?A&B?U&?~{?=>i<\?J?< \??i{?=>+<?<i{?=>K:q?xɞ<?p<ɞ<?p^?iARq?xKD&?&B-<^?YyP{i{+<<=>i{Kx:qɞ^AxRq} BG&RVB<&@ B?y>̉q?AQsW=<:=`l>_q?x>q?0yZ<*<==ー2&B?&?֠2<@=B>===3s<^=J:9{?=>n6{?=>[h1]=7:n q?xLk^=OJ:D=\ܼ}wq?Nm}wq?NmE=ۼ}i&? BÚD=.ݼ,<P|w&?&BH&?G&BЉ{b<{:~Y?=>{=>i{}~7:sZKx:qB7:sWZԼ0;+lzq⃼;Ȇq0yZӼ*<=ー2&B&Zټ@qI?t'B&np&B4&h^JD\<}wqNm>랼=`/d>}~7sZ=`/d>E`)=>}~7sZ=}K<.>=`=1>`a>CO>K<.>=w,=`kR>TL>g:==wsP>c'aY7>YX>g:==ws>J\>^=J:-'a>>J\>pwap>h#<^=J:^=J:pwap>h#<H2D=\ܼpwap>h#<~a7J>GH2D=\ܼH2D=\ܼ~a7J>G<~a7J>G°Q>ưᾞ<Qc>k`=<<`/=d}~7:sZ`/=dE`)Ž}~7:sZ}`Ž1リ`aCO¾Kּ.>w,ռO>`kRTL¾g:=wsC`UP¾c'aY7ھYXg:=wsg:=ws-'a>پJ\^J-'a>پJ\tazm#^J^Jpwaph#H2D\H2D\<H2D\<~a7J۾G>랼=~a7J۾G>°Qư>랼=랼=Qc黾>k`>}#aGپ\>`q(tazm#˒>qq(}o?!9=pwaph#pwaph#~o?=~a7J۾G>~o?=w?IHY1>~a7J۾G>%aV۾,G>w?bH Y1>Qc黾>w?IHY1>:z?AML<>Qc黾>Qc黾>z?9Q<>`/d>z?9Q<>4|?k`>`/d>4|?#-<^h/>E`)=>4|?Y~?=^= =`=1>`ˠ=>NZ~?g^=j=C`U>P>NZ~?g^=j=r>+YG??`a>CO>`QT>[>r>+YG??%a<>J\>˒>ZG?I?}?=g"<$aH>\>$aH>\>}?=g"m#Lpptaz>m#h#<4y?GT>p~a7J>Gy?=GT>LppH@?> ~a7J>G%aV>,GJ@?u>(ྺQc>^H@?\">Rྷ>ؽ>%bQc>ᾺQc>ᾷ>ؽ>%b`/=dȒ>n׽> $bJ~o?KG:k`=`/=dJ~o?KG:E`)Ž-~o?%%? (˼8`Ž1モ`ˠŽ[?x\aCC`UP¾x?ɼй8G@?{^ ľ`aCO¾`QT[¾G@?{^ ľ%a<پJ\G@?{^ ľx>[q/($aHپ\Y~?=^= =4|?#-<^h/>x?ɼй84|?#-<^h/>jz?N<>x?ɼй8Ւ>>VG??Z~?&]==c}?L=Lppx?ɼй8Do?Emy?=GT>Lppy?=GT>Lpp(o?W6F@?> Do?Em̒>۽>"b6F@?> ྈ֒>Дq(J@?Y ľo?5=fB@?e -ľO?xVʼ8~o?=wo?=O?xVʼ8w?IHY1>O?xVʼ8jz?N<> w?JH@1>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~k>Ǿ6p>>P Ǿp>;>Ǿ ln>k>Ǿ6p>>wǾq>>P Ǿp>>wǾq>鯭>Ǿ@r>>P Ǿp>>P Ǿp>鯭>Ǿ@r>ʸ>ƾ s>鯭>Ǿ@r>*>ž t>ʸ>ƾ s>ʸ>ƾ s>*>ž t>ۭ>ľ0St>*>ž t>.>cľPu>ۭ>ľ0St>ۭ>ľ0St>.>cľPu>>fþpt>.>cľPu>>¾Pu>>fþpt>>fþpt>>¾Pu> խ>H¾t>>¾Pu>>n0t> խ>H¾t> խ>H¾t>>n0t>K>W0r>>n0t>> :r>K>W0r>K>W0r>> :r>.p>򿾐_p>> :r>p>?bPcp>.p>򿾐_p>.p>򿾐_p>p>?bPcp>'>…m>p>?bPcp>">m>'>…m>'>…m>">m>Oܬ>0j>">m>Ѭ>0j>Oܬ>0j>Oܬ>0j>Ѭ>0j>c>!P^h>Ѭ>0j>>6Pg>c>!P^h>c>!P^h>>6Pg>^>Qf>>6Pg>K>4e>^>Qf>^>Qf>K>4e>;>*[¾0 e>K>4e>$> ¾p/d>;>*[¾0 e>;>*[¾0 e>$> ¾p/d>1>Bþd>$> ¾p/d>t>þc>1>Bþd>1>Bþd>t>þc>^B>'žGe>t>þc>">žd>^B>'žGe>^B>'žGe>">žd>k>Zƾ f>">žd>H>;`ƾ@e>k>Zƾ f>k>Zƾ f>H>;`ƾ@e>:>8Ǿh>H>;`ƾ@e>h>:jǾg>:>8Ǿh>:>8Ǿh>h>:jǾg>u>=Ǿpk>h>:jǾg>̬> Ⱦ0`j>u>=Ǿpk>u>=Ǿpk>̬> Ⱦ0`j>;>Ǿ ln>̬> Ⱦ0`j>c>.ȾTm>;>Ǿ ln>;>Ǿ ln>c>.ȾTm>k>Ǿ6p>֟>Pyp>c>!P^h>>!pm>c>!P^h>^>Qf>>!pm>>!pm>^>Qf>5Y>k>^>Qf>;>*[¾0 e>5Y>k>5Y>k>;>*[¾0 e>P6>*[¾Pj>;>*[¾0 e>1>Bþd>P6>*[¾Pj>P6>*[¾Pj>1>Bþd>,>Bþ5j>1>Bþd>^B>'žGe>,>Bþ5j>,>Bþ5j>^B>'žGe><>'žj>^B>'žGe>k>Zƾ f><>'žj><>'žj>k>Zƾ f>e>Zƾ0Pl>k>Zƾ f>:>8Ǿh>e>Zƾ0Pl>e>Zƾ0Pl>:>8Ǿh>ҡ>8ǾЅn>:>8Ǿh>u>=Ǿpk>ҡ>8ǾЅn>ҡ>8ǾЅn>u>=Ǿpk>>=Ǿp-q>u>=Ǿpk>;>Ǿ ln>>=Ǿp-q>>=Ǿp-q>;>Ǿ ln>5>Ǿ0s>;>Ǿ ln>>P Ǿp>5>Ǿ0s>5>Ǿ0s>>P Ǿp>{>P Ǿv>>P Ǿp>ʸ>ƾ s>{>P Ǿv>{>P Ǿv>ʸ>ƾ s>d>ƾx>ʸ>ƾ s>ۭ>ľ0St>d>ƾx>d>ƾx>ۭ>ľ0St>I֠>ľ0y>ۭ>ľ0St>>fþpt>I֠>ľ0y>I֠>ľ0y>>fþpt>>fþ8z>>fþpt> խ>H¾t>>fþ8z>>fþ8z> խ>H¾t>Ϡ>H¾y> խ>H¾t>K>W0r>Ϡ>H¾y>Ϡ>H¾y>K>W0r>䦠>WPx>K>W0r>.p>򿾐_p>䦠>WPx>䦠>WPx>.p>򿾐_p>j>򿾰u>.p>򿾐_p>'>…m>j>򿾰u>j>򿾰u>'>…m>">…As>'>…m>Oܬ>0j>">…As>">…As>Oܬ>0j>֟>Pyp>Oܬ>0j>c>!P^h>֟>Pyp>Ϡ>H¾y>䦠>WPx>j>򿾰u>I֠>ľ0y>>fþ8z>d>ƾx>>fþ8z>,>Bþ5j>d>ƾx>d>ƾx>,>Bþ5j>{>P Ǿv>,>Bþ5j><>'žj>{>P Ǿv>>fþ8z>Ϡ>H¾y>,>Bþ5j>Ϡ>H¾y>j>򿾰u>,>Bþ5j>,>Bþ5j>j>򿾰u>P6>*[¾Pj>j>򿾰u>">…As>P6>*[¾Pj>P6>*[¾Pj>">…As>5Y>k>">…As>֟>Pyp>5Y>k>5Y>k>֟>Pyp>>!pm>>=Ǿp-q>5>Ǿ0s>ҡ>8ǾЅn>5>Ǿ0s>{>P Ǿv>ҡ>8ǾЅn>ҡ>8ǾЅn>{>P Ǿv>e>Zƾ0Pl>{>P Ǿv><>'žj>e>Zƾ0Pl> >ogɾ; >Eɾh`ξ >KʾX-; >ogɾ; >3ɾ(.ξ >Eɾh`ξ >3ɾ(.ξ >Ⱦξ >Eɾh`ξ >Eɾh`ξ >Ⱦξ >O8ɾϾ >Ⱦξ >wȾHkо >O8ɾϾ >O8ɾϾ >wȾHkо >gɾ,Ѿ >wȾHkо >h!ɾѾ >gɾ,Ѿ >gɾ,Ѿ >h!ɾѾ >ʾpҾ >h!ɾѾ >Zɾh"Ӿ >ʾpҾ >ʾpҾ >Zɾh"Ӿ >˾(fӾ >Zɾh"Ӿ >3˾ Ծ >˾(fӾ >˾(fӾ >3˾ Ծ >l̾Ӿ >3˾ Ծ >V̾HԾ >l̾Ӿ >l̾Ӿ >V̾HԾ >T;Ծ >V̾HԾ >)ξhyԾ >T;Ծ >T;Ծ >)ξhyԾ >3ϾXӾ >)ξhyԾ ><ϾӾ >3ϾXӾ >3ϾXӾ ><ϾӾ >TоҾ ><ϾӾ >о@Ҿ >TоҾ >TоҾ >о@Ҿ >xѾѾ >о@Ҿ >ѾѾ >xѾѾ >xѾѾ >ѾѾ >ngѾ0 о >ѾѾ >9Ѿ;о >ngѾ0 о >ngѾ0 о >9Ѿ;о > 8Ѿ ξ >9Ѿ;о >QѾXξ > 8Ѿ ξ > 8Ѿ ξ >QѾXξ >оt; >QѾXξ >'ѾX; >оt; >оt; >'ѾX; >Ͼ}̾ >'ѾX; >hо@̾ >Ͼ}̾ >Ͼ}̾ >hо@̾ >;3ξh˾ >hо@̾ >5ξȎ˾ >;3ξh˾ >;3ξh˾ >5ξȎ˾ >j̾h˾ >5ξȎ˾ >7;V˾ >j̾h˾ >j̾h˾ >7;V˾ >l˾O̾ >7;V˾ >M˾P˾ >l˾O̾ >l˾O̾ >M˾P˾ >KʾX-; >M˾P˾ >hʾ^̾ >KʾX-; >KʾX-; >hʾ^̾ >ogɾ;=TоҾ >xѾѾ=xѾѾ >xѾѾ >ngѾ0 о=xѾѾ=xѾѾ >ngѾ0 о=ngѾ0 о >ngѾ0 о > 8Ѿ ξ=ngѾ0 о=ngѾ0 о > 8Ѿ ξ= 8Ѿ ξ > 8Ѿ ξ >оt;= 8Ѿ ξ= 8Ѿ ξ >оt;=оt; >оt; >Ͼ}̾=оt;=оt; >Ͼ}̾=Ͼ}̾ >Ͼ}̾ >;3ξh˾=Ͼ}̾=Ͼ}̾ >;3ξh˾=;3ξh˾ >;3ξh˾ >j̾h˾=;3ξh˾=;3ξh˾ >j̾h˾=j̾h˾ >j̾h˾ >l˾O̾=j̾h˾=j̾h˾ >l˾O̾=l˾O̾ >l˾O̾ >KʾX-;=l˾O̾=l˾O̾ >KʾX-;=KʾX-; >KʾX-; >Eɾh`ξ=KʾX-;=KʾX-; >Eɾh`ξ=Eɾh`ξ >Eɾh`ξ >O8ɾϾ=Eɾh`ξ=Eɾh`ξ >O8ɾϾ=O8ɾϾ >O8ɾϾ >gɾ,Ѿ=O8ɾϾ=O8ɾϾ >gɾ,Ѿ=gɾ,Ѿ >gɾ,Ѿ >ʾpҾ=gɾ,Ѿ=gɾ,Ѿ >ʾpҾ=ʾpҾ >ʾpҾ >˾(fӾ=ʾpҾ=ʾpҾ >˾(fӾ=˾(fӾ >˾(fӾ >l̾Ӿ=˾(fӾ=˾(fӾ >l̾Ӿ=l̾Ӿ >l̾Ӿ >T;Ծ=l̾Ӿ=l̾Ӿ >T;Ծ=T;Ծ >T;Ծ >3ϾXӾ=T;Ծ=T;Ծ >3ϾXӾ=3ϾXӾ >3ϾXӾ >TоҾ=3ϾXӾ=3ϾXӾ >TоҾ=TоҾ >TоҾ >xѾѾ=TоҾ=˾(fӾ=l̾Ӿ=T;Ծ=gɾ,Ѿ=ʾpҾ=O8ɾϾ=ʾpҾ=оt;=O8ɾϾ=O8ɾϾ=оt;=Eɾh`ξ=оt;=Ͼ}̾=Eɾh`ξ=ʾpҾ=˾(fӾ=оt;=˾(fӾ=T;Ծ=оt;=оt;=T;Ծ= 8Ѿ ξ=T;Ծ=3ϾXӾ= 8Ѿ ξ= 8Ѿ ξ=3ϾXӾ=ngѾ0 о=3ϾXӾ=TоҾ=ngѾ0 о=ngѾ0 о=TоҾ=xѾѾ=l˾O̾=KʾX-;=j̾h˾=KʾX-;=Eɾh`ξ=j̾h˾=j̾h˾=Eɾh`ξ=;3ξh˾=Eɾh`ξ=Ͼ}̾=;3ξh˾GKs=F_a>yAY|8+>r>=w[?r=F_ž>=s[?>P/U7?r=F_ž>GKs=F_a>>P/U7?mh=l*'??>fP/7?%>߾ ߾ëb?k>㶵l?,%>߾/b?ur9>:y?ә>l?d>õdl?9>vy?)+>g5Y|?N9>&y?F6>U>,v?+>g[|?+>g[|?F-6>U>-v?#>^>|n?my6>U>*v?>?d%>xn?.>d%>xn?>?W? 9=L!?D?>m?W?=.C?+u"?+4= !?D? 9=L!?D?=.C?+u"?͈=[?L?=C?n"?[I=n?>͈=[?L?Ј=گ[?O?VJ=n?>ѹA{?v1D>[I=n?>vϑ<?,=ѹA{?v1D>ѹC{?4D> ӑ?D-=XݓI|?j>Bd?n,=쯽t?ߍܓU|?X:ܓ`|?qPNt?Ӎ+\O_??Dt? ԍO?)+\O_??+\O_??O?)0H*'?[P;O?)~He?J11H1'?-J;11H1'?-J;leH#?Jymĵ>gϚHJ?Jlg8;>nm>Ogkmgµ>4g9gH>n4zkgnrpQ8x4zkg`g#Jʣ!?aaλag=&s#[zRCy; }>yAY|8+>uZ|P+>x;7}v>z~rԽu?&+\O_??F7 OO?#:&tK_?hJH0'?=I;F7 OO?#:8 IO?AhJH0'?=I;񣐾?GJH)'?kO;m>Og?kG?kGkmgµ>4g0n>1Xm>Og{g<(xaPn>{Xvcn>ьX{g<(xUiFcwt;{g<(xn/ OjUiFcwt;UiFcwt;n/ Oj Ҿ-پNn0rPjh J!?Ҿwپ)NҾwپ)N#Jʣ!?5IQ5"I$Jժ!?՝[(l’=T5"’=T5"՝[(lH&2hv྾՝[(lvJ{z4sgHP3hkιsgHP3hkι%K{4x\ܼT'k×:L{i4uZ|P+>Iۼ'U7\ܼT6uZ|P+>'<6u]G>yAY|8+>r=F_ž>'3 'r=F_ž>̤-8p?8r=PE_P>mh=l*'??M)8r?-č8?mh=l*'??N?ml=&'??d>õdl?#mrN?!jޯN?ә>l?a(B> &y2s?>Pl?+>g[|?$B>QyWs?$B>QyWs?+>g[|?꒧ =p?j+>]eZ|?.>d%>xn?Kִ=rp?Kִ=rp?.>d%>xn?>M3^?>1>vn? 9=L!?D?>M3^?>M3^?+4= !?D?>7?.?5==!?D?͈=[?L?>7?.?>7?.?Ј=گ[?O?~ݾ>H?>͈=[?L?ѹ@{?JD>~ݾ>H?>ݾѹ@{?JD>D:_)z?=ѹA{?v1D>ܓU|?XD:_)z?=D:_)z?=ܓU|?X^Խu?d:ܓ`|?q+\O_??rԽu?&>/^?>7?`.? ݾAH?> B>ys?Kִ=rp?#mrN?Kִ=rp?ivBu;.%N?!jޯN?UiFcwt;M)8r?UiFcwt; Ҿ-پN8L?Kִ=rp?>M3^?Aiiwy;M>1^?ݾUiFcwt;Aiiwy;_ݾ9H?>vcn>ьX~ݾ>H?>D:_)z?=wn>)Xvcn>ьX:(z?F=񣐾?G(:6(z?=^Խu?dᡐ?G|?EHbԽu?& LO??ڼSU%7u(<'uTG>sgHP3hkι'M)8r?sgHP3hkιsgHP3hkι̤-8p?’=T5"M)8r?8ҾپN’=T5"3L??/*f?V>*Z1?77?03L??si?@ >/*f?V>si?@ >6H?}?>/*f?V>/*f?V>6H?}?>t(n~?m=77@}?R>+Ѽ|?!t(n~?m=t(n~?m=+Ѽ|?!f(x?Yy+Ѽ|?!+Ѽ a?Y(hx?MryL(x?y+Ѽ a?'S?v+Ѽ a?ҼW.?;C'S?r'S?vҼW.?;'K?2;OӈҼ.?G;ZӼ}>i'K?2;O'?5OZӼ}>iO&>vZӼ}>i*Լn=~O&>vz&>v*Լp=~{%&"*Լn=~ռ\ptmx%m!%m!Yռptx$о7yi Լ>tx ּh ;2W$о7yi$о7yi ּh ;2Wn# 27ּ @/WEEؼHNJn# 27n#27/FؼH! fud߾/FؼHټyqw! fud߾J!\!fP_߾ڼvq 7t~fѽUټvqɆۼa⻏ 7t~fѽ 7t~fѽۼ޻ x%y>ۼ޻޼rѢ>%x}ry>%x}ry>2ݼrܢ>wSp?޼ r>%v6KV?uSt?xSw?߼[Kr?jQAO?y`K6?5o CU?ibFO?S+@O?⼧j FU?_  v?⼧j FU?b弒w?` v?>]Rv? ` w?%Ւ=S+?aSw?==)?%Ւ=S+?%Ւ=S+?缞՚=*?  >i?==)?vd>k?~tv>i?  >i?Y>. k? Z1?܊7?vd>k?,?}=?*Z1?77? Z1?7?,?}=?84L??CGFBw!4"f;d߾OIfq 2"#fyT߾ 7t~fѽ#I$q8#I$q8 7t~fѽBw齿M~:3o< 7t~fѽ[xy>Bw齿M~:3oRd >[xy>Syw?Rd >Rd >Syw?5OQ>hS{?S+@O?5OQ>5OQ>S+@O?Lo\Y?CO?_  v?6o`Y?6o`Y?_  v?*z k2y?>]Rv?%Ւ=S+?*z k2y?*z k2y?%Ւ=S+?B4G?>Vy? =*?"t>i?A齀`?>#y?A齀`?>#y?"t>i?I:?[?v>pi? Z1?7?I:?[?+K:?~[? Z1?7?CDF?5{!? Z1?7?!0f?V>4D{GF?w!?4D{GF?w!?!0f?V>S龜@W?{>/*f?V>t(n~?m=S龜@W?{>N龉BW?D>t(n~?m=S^?ZQ(o~?=Y(hx?Mry\^?Q\^?QY(hx?Mry߆IB'?M>OO&>v\>Bh_' >΃BO&>vI#>.|z&>v%m!eI#>4|eI#>4|%m!$kW%m!$о7yi$kW[ $iW$о7yirhM')WWM$ Ѿvin# 279jMҖxRW9jMҖxRWn# 27s1DGDF{!k#=2ؤ74"f;d߾s1DGDF{!\>BeI#>4| %KfW IQ:o?*$ y%?wo\^?Q$ y%?wo~O)>]^?YP\^?Q܀O#>S龜@W?{>|OY%>Oo{9_Y?S龜@W?{>$ y%?wo\>B~O)>\>B3 O$/gW~O⾒'>|OY%>3 O$/gW>Tdp0> %KfW9jMҖxRWlSdF>g_0d>9jMҖxRWC~N~3o<9jMҖxRWCDF5{!C齕N~mVy?CGF?Bw!?S龜@W?{>A齀`?>#y?B4G?>Vy?Q?W?x>u* l3y?Q?W?x>Oo{9_Y?*z k2y?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     F/?ԩQ:F/?^b8F/?mF/?^b8F/?j~F/?mF/?mF/?j~F/?N鐾/F/?j~F/?;F/?N鐾/F/?N鐾/F/?;F/?`rF/?;F/?,hF/?`rF/?`rF/?,hF/? ֵF/?,hF/?⑾»F/? ֵF/? ֵF/?⑾»F/?VْӻF/?⑾»F/?2F/?VْӻF/?VْӻF/?2F/?bF/?2F/?F/?bF/?bF/?F/?$rF/?F/?F/?$rF/?$rF/?F/?ջF/?F/?4AF/?ջF/?ȗQF/?MF/?Ǘm:F/?MF/?~:F/?Ǘm:F/?Ǘm:F/?~:F/?]/;F/?~:F/?ŗ;;F/?]/;F/?]/;F/?ŗ;;F/?r;F/?ŗ;;F/?Ef;F/?r;F/?r;F/?Ef;F/?hԵ;F/?Ef;F/?;F/?hԵ;F/?hԵ;F/?;F/?V;F/?;F/?y;F/?V;F/?V;F/?y;F/? b;F/?y;F/?;F/? b;F/? b;F/?;F/?“r;F/?;F/? ;F/?“r;F/?“r;F/? ;F/?꒾;F/? ;F/?w1;F/?꒾; 1?v1;F/?w1;F/? ; 1?3AF/?4AF/? 1?( 1?3A컢R2?R2?X 1?%ŗ쓾6;>2XJ;>Ғ$j;>ꟕ,j>0:>{>H:>0:>e3;>0:>ꟕ,j>e3;>e3;>ꟕ,j>Ғ$j;>񆔾,;> 0>4:>{>/(Ẕ>ꟕ,j>/(Ẕ>eL3>ꟕ,j>ꟕ,j>eL3>ђi>񆔾,;>쓾6;> 0>쓾6;>Ғ$j;> 0> 0>Ғ$j;> ZH⺔>Ғ$j;>ꟕ,j> ZH⺔> ZH⺔>ꟕ,j> 3>堕i;>*;> H3;>*;>񆔾,;> H3;> H3;>񆔾,;>Z(:>񆔾,;>4:>Z(:>8>}L>듾.>}L>ꟕ,j>듾.>듾.>ꟕ,j>W.>ꟕ,j>ђi>W.ʊ>A4G;> H3;ʊ>(:> H3;>Z(:ʊ>(:ʊ>(:>Z(:ʊ>0Ö):>Z(:>4:ʊ>0Ö):ʊ>0Ö):>4:ʊ>Öp,>4:> 0ʊ>Öp,ʊ>Öp,> 0ʊ>p> 0> ZHʊ>pʊ>p> ZHʊ>@G> ZH⺔> 3ʊ>@Gʊ>@G> 3ʊ>Ǖ> 3>ꟕ,jʊ>Ǖʊ>Ǖ>ꟕ,jʊ>3p>ꟕ,j>}Lʊ>3pʊ>3p>}Lʊ>5v>}L>8ʊ>5vʊ>5v>8ʊ>㓾l>8>듾.ʊ>㓾lʊ>㓾l>듾.ʊ>=N>듾.>W.ʊ>=Nʊ>=N>W.ʊ>ة⁻>W.>ђiʊ>ة⁻ʊ>ة⁻>ђiʊ>08G>ђi>eL3ʊ>08Gʊ>08G>eL3ʊ>ۑ(>eL3>/(ʊ>ۑ(ʊ>ۑ(>/(ʊ>)>/(Ẕ>{ʊ>)ʊ>)>{ʊ>p,:>{>0:ʊ>p,:ʊ>p,:>0:ʊ>!ܑh:>0:>H:ʊ>!ܑh:ʊ>!ܑh:>H:ʊ>1G;>H:>e3;ʊ>1G;ʊ>1G;>e3;ʊ>;>e3;>Ғ$j;ʊ>;ʊ>;>Ғ$j;ʊ>.?n;>Ғ$j;>2XJ;ʊ>.?n;ʊ>.?n;>2XJ;ʊ>z䓾v;>2XJ;>쓾6;ʊ>z䓾v;ʊ>z䓾v;>쓾6;ʊ>j;>쓾6;>񆔾,;ʊ>j;ʊ>j;>񆔾,;ʊ>4N;>񆔾,;>*;ʊ>4N;ʊ>4N;>*;ʊ>ȕ;>*;>堕i;ʊ>ȕ;ʊ>ȕ;>堕i;ʊ>A4G;>堕i;> H3;ʊ>A4G;>=Nʊ>ة⁻>ة⁻ʊ>ة⁻ʊ>08G>ة⁻>ة⁻ʊ>08G>08Gʊ>08Gʊ>ۑ(>08G>08Gʊ>ۑ(>ۑ(ʊ>ۑ(ʊ>)>ۑ(>ۑ(ʊ>)>)ʊ>)ʊ>p,:>)>)ʊ>p,:>p,:ʊ>p,:ʊ>!ܑh:>p,:>p,:ʊ>!ܑh:>!ܑh:ʊ>!ܑh:ʊ>1G;>!ܑh:>!ܑh:ʊ>1G;>1G;ʊ>1G;ʊ>;>1G;>1G;ʊ>;>;ʊ>;ʊ>.?n;>;>;ʊ>.?n;>.?n;ʊ>.?n;ʊ>z䓾v;>.?n;>.?n;ʊ>z䓾v;>z䓾v;ʊ>z䓾v;ʊ>j;>z䓾v;>z䓾v;ʊ>j;>j;ʊ>j;ʊ>4N;>j;>j;ʊ>4N;>4N;ʊ>4N;ʊ>ȕ;>4N;>4N;ʊ>ȕ;>ȕ;ʊ>ȕ;ʊ>A4G;>ȕ;>ȕ;ʊ>A4G;>A4G;ʊ>A4G;ʊ>(:>A4G;>A4G;ʊ>(:>(:ʊ>(:ʊ>0Ö):>(:>(:ʊ>0Ö):>0Ö):ʊ>0Ö):ʊ>Öp,>0Ö):>0Ö):ʊ>Öp,>Öp,ʊ>Öp,ʊ>p>Öp,>Öp,ʊ>p>pʊ>pʊ>@G>p>pʊ>@G>@Gʊ>@Gʊ>Ǖ>@G>@Gʊ>Ǖ>Ǖʊ>Ǖʊ>3p>Ǖ>Ǖʊ>3p>3pʊ>3pʊ>5v>3p>3pʊ>5v>5vʊ>5vʊ>㓾l>5v>5vʊ>㓾l>㓾lʊ>㓾lʊ>=N>㓾l>㓾lʊ>=N>=Nʊ>=Nʊ>ة⁻>=N>ݸ\y;>ȕ;>,ȕ;>A4G;>,,A4G;>~(:>A4G;>(:>~(:>~(:>(:>1":>(:>0Ö):>1":>1":>0Ö):>%>0Ö):>Öp,>%>%>Öp,>Y~h>Öp,>p>Y~h>Y~h>p>,?>p>@G>,?>,?>@G>ѷy>@G>Ǖ>ѷy>ѷy>Ǖ>)b>Ǖ>3p>)b>)b>3p>ϊ>3p>5v>ϊ>ϊ>5v>擾>5v>㓾l>擾>擾>㓾l>GB>㓾l>=N>GB>GB>=N>ҹ`y>=N>ة⁻>ҹ`y>ҹ`y>ة⁻>E@?>ة⁻>08G>E@?>E@?>08G>(>08G>ۑ(>(>(>ۑ(>~ɑ">ۑ(>)>~ɑ">~ɑ">)>ɑ%:>)>p,:>ɑ%:>ɑ%:>p,:>VX:>p,:>!ܑh:>VX:>VX:>!ܑh:>F?;>!ܑh:>1G;>F?;>F?;>1G;>޺y;>1G;>;>޺y;>޺y;>;>0I^;>;>.?n;>0I^;>0I^;>.?n;>瓾;>.?n;>z䓾v;>瓾;>瓾;>z䓾v;>;>z䓾v;>j;>;>;>j;>*>;>j;>4N;>*>;>*>;>4N;>ݸ\y;>4N;>ȕ;>ݸ\y;>GB>ҹ`y>ҹ`y>ҹ`y>E@?>ҹ`y>ҹ`y>E@?>E@?>E@?>(𺖳>E@?>E@?>(𺖳>(>(>~ɑ">(𺖳>(>~ɑ">~ɑ">~ɑ">ɑ%:>~ɑ">~ɑ">ɑ%:>ɑ%:>ɑ%:>VX:>ɑ%:>ɑ%:>VX:>VX:>VX:>F?;>VX:>VX:>F?;>F?;>F?;>޺y;>F?;>F?;>޺y;>޺y;>޺y;>0I^;>޺y;>޺y;>0I^;>0I^;>0I^;>瓾;>0I^;>0I^;>瓾;>瓾;>瓾;>;>瓾;>瓾;>;>;>;>*>;>;>;>*>;>*>;>*>;>ݸ\y;>*>;>*>;>ݸ\y;>ݸ\y;>ݸ\y;>,ݸ\y;>ݸ\y;>,,,~(:>,,~(:>~(:>~(:>1":>~(:>~(:>1":>1":>1":>%>1":>1":>%>%>%>Y~h񺖳>%>%>Y~h񺖳>Y~h>Y~h>,?>Y~h񺖳>Y~h>,?>,?>,?>ѷy>,?>,?>ѷy>ѷy>ѷy>)b>ѷy>ѷy>)b>)b>)b>ϊ>)b>)b>ϊ>ϊ>ϊ>擾>ϊ>ϊ>擾>擾>擾>GB>擾>擾>GB>GB>GB>ҹ`y>GB>%>Öp,>1":>Öp,>0Ö):>1":>1":>0Ö):>~(:>0Ö):>(:>~(:>~(:>(:>,(:>A4G;>,,A4G;>ݸ\y;>A4G;>ȕ;>ݸ\y;>ݸ\y;>ȕ;>*>;>ȕ;>4N;>*>;>*>;>4N;>;>4N;>j;>;>;>j;>瓾;>j;>z䓾v;>瓾;>瓾;>z䓾v;>0I^;>z䓾v;>.?n;>0I^;>0I^;>.?n;>޺y;>.?n;>;>޺y;>޺y;>;>F?;>;>1G;>F?;>F?;>1G;>VX:>1G;>!ܑh:>VX:>VX:>!ܑh:>ɑ%:>!ܑh:>p,:>ɑ%:>ɑ%:>p,:>~ɑ">p,:>)>~ɑ">~ɑ">)>(𺖳>)>ۑ(>(𺖳>(𺖳>ۑ(>E@?>ۑ(>08G>E@?>E@?>08G>ҹ`y>08G>ة⁻>ҹ`y>ҹ`y>ة⁻>GB>ة⁻>=N>GB>GB>=N>擾>=N>㓾l>擾>擾>㓾l>ϊ>㓾l>5v>ϊ>ϊ>5v>)b>5v>3p>)b>)b>3p>ѷy>3p>Ǖ>ѷy>ѷy>Ǖ>,?>Ǖ>@G>,?>,?>@G>Y~h񺖳>@G>p>Y~h񺖳>Y~h񺖳>p>%>p>Öp,>%)̕>=N>ة⁻)̕>ة⁻>ة⁻>08G)̕>ة⁻)̕>ة⁻>08G)̕>08G>08G>ۑ()̕>08G)̕>08G>ۑ()̕>ۑ(>ۑ(>))̕>ۑ()̕>ۑ(>))̕>)>)>p,:)̕>))̕>)>p,:)̕>p,:>p,:>!ܑh:)̕>p,:)̕>p,:>!ܑh:)̕>!ܑh:>!ܑh:>1G;)̕>!ܑh:)̕>!ܑh:>1G;)̕>1G;>1G;>;)̕>1G;)̕>1G;>;)̕>;>;>.?n;)̕>;)̕>;>.?n;)̕>.?n;>.?n;>z䓾v;)̕>.?n;)̕>.?n;>z䓾v;)̕>z䓾v;>z䓾v;>j;)̕>z䓾v;)̕>z䓾v;>j;)̕>j;>j;>4N;)̕>j;)̕>j;>4N;)̕>4N;>4N;>ȕ;)̕>4N;)̕>4N;>ȕ;)̕>ȕ;>ȕ;>A4G;)̕>ȕ;)̕>ȕ;>A4G;)̕>A4G;>A4G;>(:)̕>A4G;)̕>A4G;>(:)̕>(:>(:>0Ö):)̕>(:)̕>(:>0Ö):)̕>0Ö):>0Ö):>Öp,)̕>0Ö):)̕>0Ö):>Öp,)̕>Öp,>Öp,>p)̕>Öp,)̕>Öp,>p)̕>p>p>@G)̕>p)̕>p>@G)̕>@G>@G>Ǖ)̕>@G)̕>@G>Ǖ)̕>Ǖ>Ǖ>3p)̕>Ǖ)̕>Ǖ>3p)̕>3p>3p>5v)̕>3p)̕>3p>5v)̕>5v>5v>㓾l)̕>5v)̕>5v>㓾l)̕>㓾l>㓾l>=N)̕>㓾l)̕>㓾l>=N)̕>=N>=N>ة⁻)̕>=N)̕>p*̕>$I)̕>Öp,*̕>$I*̕>H)̕>Öp,)̕>Öp,*̕>H)̕>0Ö):*̕>H*̕>Iȇ:)̕>0Ö):)̕>0Ö):*̕>Iȇ:)̕>(:*̕>Iȇ:*̕>H;)̕>(:)̕>(:*̕>H;)̕>A4G;*̕>H;)̕>y\;)̕>A4G;)̕>A4G;)̕>y\;)̕>ȕ;)̕>y\;)̕>;)̕>ȕ;)̕>ȕ;)̕>;)̕>4N;)̕>;)̕>˕;)̕>4N;)̕>4N;)̕>˕;)̕>j;)̕>˕;)̕>KÔ<)̕>j;)̕>j;)̕>KÔ<)̕>z䓾v;)̕>KÔ<)̕><)̕>z䓾v;)̕>z䓾v;)̕><)̕>.?n;)̕><)̕>J;)̕>.?n;)̕>.?n;)̕>J;)̕>;)̕>J;)̕>ố";)̕>;)̕>;)̕>ố";)̕>1G;)̕>ố";)̕>̟;)̕>1G;)̕>1G;)̕>̟;)̕>!ܑh:)̕>̟;)̕>q$I;)̕>!ܑh:)̕>!ܑh:)̕>q$I;)̕>p,:)̕>q$I;)̕>):)̕>p,:)̕>p,:)̕>):)̕>))̕>):)̕>)ȇ)̕>))̕>))̕>)ȇ)̕>ۑ()̕>)ȇ)̕>*p$H)̕>ۑ()̕>ۑ()̕>*p$H)̕>08G)̕>*p$H)̕>^)̕>08G)̕>08G)̕>^)̕>ة⁻)̕>^)̕>$ϻ)̕>ة⁻)̕>ة⁻)̕>$ϻ)̕>=N)̕>$ϻ)̕>)̕>=N)̕>=N)̕>)̕>㓾l)̕>)̕>d)̕>㓾l)̕>㓾l)̕>d)̕>5v)̕>d)̕>)̕>5v)̕>5v)̕>)̕>3p)̕>)̕>ɕN)̕>3p)̕>3p)̕>ɕN)̕>Ǖ)̕>ɕN)̕>ζ&л)̕>Ǖ)̕>Ǖ)̕>ζ&л)̕>@G)̕>ζ&л)̕>xΟ)̕>@G)̕>@G)̕>xΟ)̕>p)̕>xΟ*̕>$I)̕>p{.? )̕>$ϻ{.?"ϻ)̕>$ϻ)̕>^{.?"ϻ{.?"ϻ)̕>^{.?^)̕>^)̕>*p$H{.?^{.?^)̕>*p$H{.?(p$H)̕>*p$H)̕>)ȇ{.?(p$H{.?(p$H)̕>)ȇ{.?)ȇ)̕>)ȇ)̕>):{.?)ȇ{.?)ȇ)̕>):{.?):)̕>):)̕>q$I;{.?):{.?):)̕>q$I;{.?p$I;)̕>q$I;)̕>̟;{.?p$I;{.?p$I;)̕>̟;{.?̟;)̕>̟;)̕>ố";{.?̟;{.?̟;)̕>ố";{.?߻";)̕>ố";)̕>J;{.?߻";{.?߻";)̕>J;{.?J;)̕>J;)̕><{.?J;{.?J;)̕><{.?<)̕><)̕>KÔ<{.?<{.?<)̕>KÔ<{.?IÔ<)̕>KÔ<)̕>˕;{.?IÔ<{.?IÔ<)̕>˕;{.?˕;)̕>˕;)̕>;{.?˕;{.?˕;)̕>;{.?;)̕>;)̕>y\;{.?;{.?;)̕>y\;{.?y\;)̕>y\;*̕>H;{.?y\;{.?y\;*̕>H;{.?H;*̕>H;*̕>Iȇ:{.?H;{.?H;*̕>Iȇ:{.?Iȇ:*̕>Iȇ:*̕>H{.?Iȇ:{.?Iȇ:*̕>H{.?H*̕>H*̕>$I{.?H{.?H*̕>$I{.?$I*̕>$I)̕>xΟ{.?$I{.?$I)̕>xΟ{.?xΟ)̕>xΟ)̕>ζ&л{.?xΟ{.?xΟ)̕>ζ&л{.?̶&л)̕>ζ&л)̕>ɕN{.?̶&л{.?̶&л)̕>ɕN{.?ɕN)̕>ɕN)̕>{.?ɕN{.?ɕN)̕>{.?)̕>)̕>d{.?{.?)̕>d{.?b)̕>d)̕>{.?b{.?b)̕>{.? )̕>)̕>$ϻ{.? {.?ے;{.?J;{.?“r;{.?J;{.?<{.?“r;{.?“r;{.?<{.? b;{.?<{.?IÔ<{.? b;{.? b;{.?IÔ<{.?V;{.?IÔ<{.?˕;{.?V;{.?V;{.?˕;{.?hԵ;{.?˕;{.?;{.?hԵ;{.?hԵ;{.?;{.?r;{.?;{.?y\;{.?r;{.?r;{.?y\;{.?]/;{.?y\;{.?H;{.?]/;{.?]/;{.?H;{.?Ǘm:{.?H;{.?Iȇ:{.?Ǘm:{.?Ǘm:{.?Iȇ:{.?Ɨpq{.?Iȇ:{.?H{.?Ɨpq{.?Ɨpq{.?H{.?0{.?H{.?$I{.?0{.?0{.?$I{.?ԋ{.?$I{.?xΟ{.?ԋ{.?ԋ{.?xΟ{.?g"{.?xΟ{.?̶&л{.?g"{.?g"{.?̶&л{.?Ի{.?̶&л{.?ɕN{.?Ի{.?Ի{.?ɕN{.?$r㻗{.?ɕN{.?{.?$r㻗{.?$r㻗{.?{.?b㻗{.?{.?b{.?b㻗{.?b㻗{.?b{.?Vْӻ{.?b{.? {.?Vْӻ{.?Vْӻ{.? {.? ֵ{.? {.?"ϻ{.? ֵ{.? ֵ{.?"ϻ{.?`r{.?"ϻ{.?^{.?`r{.?`r{.?^{.?N鐾/{.?^{.?(p$H{.?N鐾/{.?N鐾/{.?(p$H{.?m{.?(p$H{.?)ȇ{.?m{.?m{.?)ȇ{.?Ϋ`q:{.?)ȇ{.?):{.?Ϋ`q:{.?Ϋ`q:{.?):{.? ꐾ/;{.?):{.?p$I;{.? ꐾ/;{.? ꐾ/;{.?p$I;{.?bҋ;{.?p$I;{.?̟;{.?bҋ;{.?bҋ;{.?̟;{.? ;{.?̟;{.?߻";{.? ;{.? ;{.?߻";{.?ے;{.?߻";{.?J;{.?ے;{.?ے;F/? ;{.? ;F/? ;F/?bҋ;{.? ;{.? ;F/?bҋ;{.?bҋ;F/?bҋ;F/? ꐾ/;{.?bҋ;{.?bҋ;F/? ꐾ/;{.? ꐾ/;F/? ꐾ/;F/?Ϋ`q:{.? ꐾ/;{.? ꐾ/;F/?Ϋ`q:{.?Ϋ`q:F/?Ϋ`q:F/?ԩQ:{.?Ϋ`q:{.?Ϋ`q:F/?ԩQ:{.?m{.?Ǘm:F/?]/;{.?]/;F/?]/;F/?r;{.?]/;{.?]/;F/?r;{.?r;F/?r;F/?hԵ;{.?r;{.?r;F/?hԵ;{.?hԵ;F/?hԵ;F/?V;{.?hԵ;{.?hԵ;F/?V;{.?V;F/?V;F/? b;{.?V;{.?V;F/? b;{.? b;F/? b;F/?“r;{.? b;{.? b;F/?“r;{.?“r;F/?“r;F/?꒾;{.?“r;{.?“r;F/?꒾;{.?ے;F/?꒾;F/?ے;{.?ے;{.?ے;F/?ے;F/? ;{.?ԻF/?g"{.?g"F/?g"F/?ԋ{.?g"{.?g"F/?ԋ{.?ԋF/?ԋF/?0{.?ԋ{.?ԋF/?0{.?0F/?0F/?Ɨpq{.?0{.?0F/?Ɨpq{.?ƗpqF/?ƗpqF/?ȗQ{.?Ɨpq{.?ƗpqF/?ȗQ{.?Ǘm:F/?ȗQF/?Ǘm:{.?Ǘm:{.?Ǘm:F/?Ǘm:F/?]/;F/?ԩQ:F/?m{.?mF/?mF/?N鐾/{.?m{.?mF/?N鐾/{.?N鐾/F/?N鐾/F/?`r{.?N鐾/{.?N鐾/F/?`r{.?`rF/?`rF/? ֵ{.?`r{.?`rF/? ֵ{.? ֵF/? ֵF/?Vْӻ{.? ֵ{.? ֵF/?Vْӻ{.?VْӻF/?VْӻF/?b㻗{.?Vْӻ{.?VْӻF/?b㻗{.?bF/?bF/?$r㻗{.?b㻗{.?bF/?$r㻗{.?$rF/?$rF/?ջ{.?$r㻗{.?$rF/?ջ{.?ԻF/?ջF/?Ի{.?Ի{.?ԻF/?ԻF/?g"R2?ӓ;R2? ;R2?ˠ;R2? ;R2?;R2?ˠ;R2?ˠ;R2?;R2? g;R2?;R2?x;R2? g;R2? g;R2?x;R2?ڛ;R2?x;R2?;R2?ڛ;R2?ڛ;R2?;R2? o;R2?;R2?Ef;R2? o;R2? o;R2?Ef;R2?7;R2?Ef;R2?ŗ;;R2?7;R2?7;R2?ŗ;;R2?$EK:R2?ŗ;;R2?~:R2?$EK:R2?$EK:R2?~:R2?DNR2?~:R2?XR2?DNR2?DNR2?XR2?R2?XR2?%ŗ;,:?=T;,:?=T;0:?>;,:?ڂ;0:?>;0:?QH;,:?ڂ;,:?ڂ;0:?QH;,:?.H;0:?QH;0:? 1 H;,:?.H;,:?.H;0:? 1 H;,:?ؑ:0:? 1 H;0:?6ۑ:,:?ؑ:,:?ؑ:0:?6ۑ:,:?Ϋp-:0:?6ۑ:0:?,:,:?Ϋp-:,:?Ϋp-:0:?,:,:?*0:?,:0:?*,:?*,:?*0:?*,:?ב0:?*0:?ڑ,:?ב,:?ב0:?ڑ,:?-dH0:?ڑ0:?30G,:?-dH,:?-dH0:?30G,:?t0:?30G0:?;,:?t,:?t0:?;,:?i<40:?;0:?=,:?i<40:?=$5:?=N0:?⓾$5:?=N$5:?㓾l0:?⓾0:?⓾$5:?㓾l0:?R$5:?㓾l$5:?2v0:?R0:?R$5:?2v0:?3$5:?2v$5:?3p0:?30:?3$5:?3p0:?XȕJ$5:?3p$5:?Ǖ0:?XȕJ0:?XȕJ$5:?Ǖ0:?A H$5:?Ǖ$5:?@G0:?A H0:?A H$5:?@G0:?s$5:?@G%5:?p0:?s0:?s%5:?p0:?Ö,%5:?p%5:?–p,0:?Ö,0:?Ö,%5:?–p,0:?&Ė):%5:?–p,%5:?-Ö):0:?&Ė):0:?&Ė):%5:?-Ö):0:?:%5:?-Ö):%5:?(:0:?:0:?:%5:?(:0:?vB|G;%5:?(:%5:?A4G;0:?vB|G;0:?vB|G;%5:?A4G;0:?nɕ;%5:?A4G;%5:?ȕ;0:?nɕ;0:?nɕ;%5:?ȕ;0:?#5;%5:?ȕ;%5:?4N;0:?#5;0:?#5;%5:?4N;0:?;%5:?4N;%5:?j;0:?;0:?;%5:?j;0:?W䓾;%5:?j;%5:?w䓾v;0:?W䓾;0:?W䓾;%5:?w䓾v;0:?>;%5:?w䓾v;%5:?+?n;0:?>;0:?>;%5:?+?n;0:?QH;%5:?+?n;%5:?ꪒ;0:?QH;0:?QH;%5:?ꪒ;0:? 1 H;%5:?ꪒ;%5:?1G;0:? 1 H;0:? 1 H;%5:?1G;0:?6ۑ:%5:?1G;%5:?ܑh:0:?6ۑ:0:?6ۑ:%5:?ܑh:0:?,:%5:?ܑh:$5:?p,:0:?,:0:?,:$5:?p,:0:?*$5:?p,:$5:?|)0:?*0:?*$5:?|)0:?ڑ$5:?|)$5:?ۑ(0:?ڑ0:?ڑ$5:?ۑ(0:?30G$5:?ۑ($5:?08G0:?30G0:?30G$5:?08G0:?;$5:?08G$5:?թ⁻0:?;0:?;$5:?թ⁻0:?=$5:?թ⁻$5:?=N0:?=BKD?BKD?xG?BKD?xG?xG?BKD?64~?4=F <{?I ɘ8~?=Dy?O\j @{?- Q {?Dy?O\нno??Fy?]GMg?ɿ׾Iнdko? нlo?Fg?е׾ GнP?zGg?׾xG\D?|1$YHнkP?| GнP?{GD?4$Hн#?BvGD?1$VzG?NQGKн#?Bн#?LBG?7OQW|н>KfG?SQGyN>3puHн:>fuHн:>fG@^>0p Gн*,2>Bz=yGN>3p3Gp=~Gн2>`zzн+2>zGkҳ=~GнZ-}vGγ=~㶽]~j{н a}{н,7}pǯ^^~U=m8H1猽!]~ڊ40\~*˻'m821Qqe~ᾇ64~4º ={/ >16~ǺPEXy\>F y?{0 > {>@Fy\>Hн^po>8Ey]>}GgT>Dн6lo曭>.ϽvmoΜ>E?gY>uнP?GMgɿ>GDH1$?YHнkP|?<|нP?LHD8-$?8Gн#B?GD-$?yG 4TQ?8Gн#B?8Gн#B?|GFWQ?5Fн׾hf?GtWQ?zGC6p?5Fн׾hf?5Fн׾hf?=yGN3p?FнE2$z?zGC6p?{G>~? Gн*,2Bz? Gн*,2Bz?3Gp~?н-=}?{G>~?C茽=^~?Gнua=\}?Gнua=\}?C茽=^~?d*q8?1?猽=<^~?]-?\?d*q8?1?'???]-?\?C茽=^~?Ge(@4\猽䶽<^~T=¾gXݵe(7@L>f|t>Su\ f\nfG>7N_оf\nf&D gvQ>mM_оG>7N_о&D gvQ><]&D gvQ"C:><]><]"C:>' b"J"C:~¾vcX>' b"J>' b"J!&¾~_X==>7'Z!&¾~_X2> |?>0,)Z$9>y>`#[t>TuB b#[&>]t>TuB t>+Ru[ &>]U^n7>[?UZ'?r??>=a|?t>Su?\ >nd?ڦ> >O_?$>nd?ڦ>&D gvQ??G>7N_?> >O_?$>&D gvQ??D>ѬҩѬ& ? J?o"?B?>J[?E>& ? J?E>& ? J?>J[?+J>g*>'Z?>J[?3>=(|?+J>g*>'Z?$9>y?z.[?:?t>'Su?A >z.[?:?f-2 4?,>t>Su?\ >t>Su?\ >f-2 4?,>nd?ڦ>'???猽=<^~?3>=(|?C茽=^~?3Gp~?3>=(|?3>=(|?3Gp~? >A1?y?{G>~?GB5p? >T[1#y? >T[1#y?GB5p?P >־Re?GyN3p?GtWQ?P >־Re?P >־Re?GSQ? >7#B?GSQ?GTDl-$?] >=:#A?] >=:#A?GDH1$? >O.?GTDl-$?GMgɿ> >O&? >O&?GMgɿ> >lYn׬>?zGgF>@Fy\>L >{[n̬>L >{[n̬>@Fy\>$9>"yZ>@Fy\>e6~Ǻ$9>y>$9>y>e6~Ǻ [Ge(@猽䶽<^~2> |㶽]~Gkҳ=~2> |2> |Gkҳ=~ >T[1>#y3Gp=~GyN>3pO >t1>y >T[1>#yGyN>3p >>eG Z>1pG?SQ >>e >>eG?SQ >.3#?BGS?NQGD?H1$] >=:#?A] >=:#?AGgD?4$ >O?.GD?H1$GMg?ɿ׾ >O?& >O?&GMg?ɿ׾ >lYn?׬GMg?ɿ׾@Fy?\L >{[n?̬L >{[n?̬@Fy?\_ 9>y?3@Fy?\!6~?G=$9>y?$9>y?!6~?G=z.[?:?C =>g:;?QD =$$?#CI::?Qb::D?ih$wB =$?CwB =$?C:y=D?0e$A =Q?cI:@D?Ua$:h?׾C =Q?{C =Q?{:bh?bؾID =Gp?6~H:h?׾P:&|?0E =ap?r&B =%p?nn:$|?t1kD =~?d:7&|?0:?G:=kD =~?dkD =~?d:?G:=D ={?2>"J:?G:=:}p?Ճ>D ={?2>D ={?2>:}p?Ճ>C =g?>:zp?g>:Q??tE =Lg?>C =g?>:Q?;? B =C?$?J:Q??b:ih$?:D?wB =C?$?wB =C?$?b:ih$?:D?D =u?_Q?_G:/e$?x=D?:f>7h?A =c?Q?A =c?Q?:b>bh?ID =6~>Gp?:>h?:t1>$|?ID =6~>Gp?E =r>`p?:t1>$|?D =p!=)~?:t1>$|?i:AO?kD =d=~?kD =d=~?i:AO?A =22{?:G:?:ԃ|p?D =2{?D =2{?:Cxp?C =ؾg?:ԃ|p?:Q?:B =ؾ{g?tE =ؾLg?:Q?wB =$C?:Q?b::Dih$?wB =$C?1E =5$1C?:y=D0e$?D =_Qu?:@DUa$?:bhb>C =Q{?D =_Qu?:7hf>ID =Gp6~>:h>:7&|0>]C =>pb>E =apr>:$|t1>D =)~p!=:7&|0>:G:kD =~d=kD =~d=:G:kE ={2"J:G::pCxD ={2D ={2:pCxC =gؾ:}pՃ:Q;C =gؾC =gؾ:9QD =#C$$:Q:Ua$@DB =C $1E =1C5$:Ua$@DD =u_Q:Ua$@D:׾hC ={QC ={Q:bؾbhE =r`p:׾hK:0&|]C =b>p]C =b>pP:0&|D =p!)~G:07&|i:A=OD =p!)~D =p!)~i:A=OD =2>{i:A=OI:ԃ>|pD =2>{D =2>{:ԃ>|pC =>g@H:e>zp:;?QC =>gC =>gEq?=}D =2>{Tq?=9|?%Y<35 =a2>{Os =l2> {|?V<"r =!~|?5VpXD?5m!C~?I׽p =np =GnpE~?I׽x =U0QF~?$IֽB)~?0~ ={ Q =ĀQ$~?@Z8lq =NCV$&~?NX̻l?JawB =C$ =sC$Yn?_v =-g\ؾ k?ՃbGUD?X_D =Ngؾ5 =gؾiD?lG#_ =e{25_D?Gw9_?wbOs = {l2 =M{b2?*vcR~ =~~ =?:xf)?LҢh+?e!h<?h@'< =pGn>~~ =p}>L?%󰼇'_r =Q;|?7q =Q?^?A\ 4>lq =V$NC?^?P5>^D?@˻?B =i$kC?c =g$9C?vD?C?i =$ؾ{g?oD?ƴï?q?[n>} =ؾbg? =ؾg?Eq?㽕}> =2e{?q?NC>2w?&~> =D2{? =;2{?vw?ج}> ==G~?Xw?Ԭz}>{?=I;> ==G~? = =D~?t{?=;>u =r>p?{?Y=t;>?}?}=V>R =~>p? =~>p?C}?ԋ}=+> =A?VQ?C}?ԋ}=+>'~?O=\=x =U?0Q?B =އ?MQ?w&~?ق=˻=wB =C?$?%~?y==ң~? =zp= =C?!$? =C?$?g~?==qp= =g?>ң~? =zp= ~?$=p<} =g?> 8 =g?>~?]=6=9 ={?2>$~?L=<?w=; ={?}2>Os = {?l2>v?,ڬ=V;r =*~?(?>=;+?1=Gg( =~?=D =)~?p!r*?3=h&B =%p?nn*?j=hs?# d =Q?R =;Q?{K_?3> =$?C^?H@>VCaD?ͻ>2 =׭$?C1E =5$?1CCaD?ͻ>:B =>{glD??>'q?S=b =\>-g+?e=!h?9(^?H@>VEq?=}^?[>??g(<?9({?=:|;>shD?G?_^?D>]q?˺t>_^?D>?g(<]q?˺t>]q?˺t>?g(?g(<{?=:|;>w?ڬ7~> =U;WJ=8cD^>?tJ]t=0<s1=R=J]t=0<G,s1=R=s1=R=G,GƼGƼ(RQ>ƼG,aDi:ԾhD Ծ>^$kV^y>qÆ>>^V{q>~i=#q諉>>q`>>~i=wp~p=~i=;{q=M|g>q`>>wp~p=Hg>g>owG=pr= 0{>0>wox==l{!=O|<)j4{0>{!0>{ъ=:P|<Ƽ;lPpNjΚPpj(RQ>ƼmQ(RQ>ƼcDư/ԾmQnQNDrTԾi>A$ D nD,ԾqB^;$B"D]D$RD'Kϑ׾g^B _ޫ)S쾃v>׾gH׾g^)^t0q{^)CjUDNYӷ#0G{Th0*{xRD.~Y#Y:=~J^D|Y#q(bn=iϤ8=~s1-:=~{q~n=ꤾ0av>Np{q~n=ꤾ_wi=f0av>Np>$JpwK=2f?FgQwK=fr{\=Mi?mQL?%jQ{"=&ѥ D??${-=i A}=1, D?@$ED?@$A}g=c0Zg?׾A}g=c$~=& g?׾jg?J׾'~7=%)j4{?0(%~@=t=82<aD@?">*1Np? v>ΚPp?j>y_D?s>mQ??_D7?.>XZ1=ER={HhQ??mQ??N1=e=šG$? D?s1=R=ёfg?#ё<շ?h<>.g?hD^>?{i*0>{?]YD0^>? <~;=0>{? 0>0>{?<;q;~=љn~?>r;=~猼,=J{9~?m'~?~猼,="jOp?~܋+i=^\Vz>S_vOp? 1uMp? _UkV$E>L%jQ?^V>1_D7Ծ>0{hQ?0{hQ?1_D7Ծ>DxD$?*SD"SԾ>q@ȉI?> DfA$?Bg:?SmQM<$?Cs?)kQD?t@$ A<$?C<$?CD?t@$GA~?m=*1Np? v><|?43>LPp?yj>*1Np? v>s)kQ??<.g? >Ls)kQ??Mfg?<ȍ?'Q?<ȍ?'Q?F>fg?H<鈮>p?F>fg?U0>S{?mӣp?mӣp?U0>S{?<<=]?t0>q{?99~?<<=]?<<=]?99~?<2|?m~?yjLPp?<3h|?<2|?yjLPp?B<:Q_?<'Qȍ?1;gG>HfgF>S{U0>m<ӣpS}>m<ӣpS}>tq{0><]<=tq{0>9~9<]<=<]<=~m|9=9~* v>1NpV?<3>|V?<3>|* v>1NpBg>Lp:?SmQB<`>g!1>ohN?<$C??1>S@A!?<$C?B<Q? 1>tCA!?1>EFA!?<'Qȍ?ݫ1>d>GAt1>d@>1>d>m<ӣpS}>1>Qxc.>A<pq>?SxYJ.>w1>UxK.><=s1> '{F%݆<=1X<|M21>W"{oժ1>${/\<|21>l٬Bl٬1>l٬BdNaNHͪ1>dNM2!BA<C$<_:Q1>!jEA1>!jEA<_:Qͧ1>ԾHdt@<Q@Ծdͧ1>ԾHd@~.Rx>K.Uxw1>d.Sx?(=%{<<믽]V?<3>|w1>]=>&{g1>\=!%{V?<3>|Z1>@>lV?<3>|Bg1>>lj1>>l?gJt1> ?4hN5AFg<$?Cͪ1>?dN`1>x?dNM<$?C1>EFA?!<$?CGAEFA?!D1>"GA?!<|Q?h]1>—d?Ծ&d?8Ծ1>d?Ծm<ӣp?S}1>Qx?c.A<p?qn< ?U1>Rx?I.,t1>Vx?W-. '{?F%=݆<?1X<|?M2>I1>9!{?=p1>u#{?9=1>l?̬><|?43><.g? > 1>l? >^1>l?Vج>BH1>EjN??<.g? ><C?$?1>HgN?{?1>HgN?{?<C?$? 1>!?tCA?<C?$?<ȍ?'Q?1>!?EFA?1>!?EFA?<ې?Q?1>G>"d?ӣp?1>G>"d?1>8>&d??<>ҡp?1>{.>Ox?mӣp?<<=]?O1>Ab.>Px?1>H.>Qx?Qf["{?<<=]?<2|?x1>xñ!{?1>oW"{?<2|?n1>ڬl? B<53/|?< ؾ.g?n1>ڬl?w1>F笾l??ohN?B<`ؾg? A<$C?!1>ohN?ϐ1>s[d1>{?HgN1lN"?@1>{?HgNҏ1>.AA?!71%O"?@1lN"?@1>EFA?!T1N?T1>EFA?!'1>*d?*Ծ1yN?MUT1N?TD1>d?Ծ1/m?߫1>~d?NԾ1>Rx?I.17m?ԫ1 m?ޫ1>Qx?c.O1.{?v1>Rx?I.ժ1>${?/\=1/{?{B1/{?{Bժ1>${?/\=R1;x?S0>p1>u#{?9=^1>l?Vج>1;x?m0>1;x?m0>1>l?٬>1:_d?>^1>l?Vج>H1>EjN??1:_d?>ϐ1s[d?>H1>EjN??1@?_G"?H1>EjN???1>!?S@A?ɍ1T@?L"?71@?%O"?D1>!?"GA?T1T?N?1>!?EFA?1>8>&d?T1T?N?T1T?N?1>8>&d?1B>$m?1>8>&d?1>c.>Qx?41>1m?k1.ޫ>m?1>c.>Qx?1{B=/{?1>c.>Qx?p1>9u#{?1{B=/{?1{B=/{?p1>9u#{?`1p0Y9x? 1>Bı"{?1>۬l?10@8x?`1p0Y9x?1>׬l?g1Hվ_d?n1>ڬl?1>b[iN?1վ[d?1վ[d?1>b[iN?1_G"@?1>b[iN?ҏ1>.AA!?71KK"z@?71%O"@?ҏ1>.AA!?o1JN\? 1>tCA!?D1>d>o1JN\?T1NT?'1>*d*>1/m߫>D1>d>1>Qxc.>1/m߫>17mԫ>1>RxI.>1/{{B=o1>Sx0.>g1>!%{\E10{AC=1+1{2=g1>!%{\R1;xS0p1>u#{91>l٬1 =xTT01 =xTT0{1>l~ͬ"1\dվ1>l謾ͪ1>dNϐ1s[dվ1:_dվ1>[iNb1@M":1>aNH1>!jEA/1@yU"1@M"1>2!BA1cN1>!jEAͧ1>ԾHdo1\JNo1\JNݫ1>Ծd@1i﫾5mͧ1>ԾHdw1>d.Sx%u1y૾;m1߫/mw1>d.Sxtv1x21{w1>K.Uxw1>]=>&{v1D1{v1D1{w1>]=>&{1TT0> =xw1>̑=%{u1>٬>lt1n0> =xt1n0> =xu1>٬>lϐ1>s[ds1>|>l1>{?HgNϐ1>s[d1=x:0?ɼh~1 0{m=ɼ~ҳaɼ|=0>E10{AC=1/{{B=vɼ|0>1 mޫ>aǼ|[1>Ǽh1>1/m߫>1 mޫ>ɼ h%>o1JN\?O˼h>,˼/D_V$?o1JN\?o1JN\?Tɼ,DoZ$?1lN"@?T̼0&Da$?0Xʼ7Q?1_G"@?1_G"@?ɼXQ?1վZd?ȼRQ? ɼVw-jp?1վZd?1վZd?Vʼʂgp?10@8x? ɼVw-jp??ɼh~?`1p0Y9x?10@8x??ɼh~?1{B=/{??ɼh~?ɼ"1>|?1A=e.{?O1v=.{?vɼ0>|?1B>$m?vɼ0>|?Wʼ> h?1B>$m?1>m?ɼ%> h?815M?ѼN?lUʼ>Eh?ΰȼQW$?s/D?T1T?N?1W?FN?ɼ\S$?2D?1@?lN"?TɼoZ$?,D?iǼQ??>w1R@?H"?1@?lN"?ɼXQ??<1oZd?>VɼQ?9? ɼ,jp?Uw>1:_d?>1:_d?>AǼjp?w>{Z1=x?ň0>Uʼlp?qg>)˼~?9=R1;x?S0>R1;x?S0>ˆɼ~?:=1 0{?mo*˼~?=˼|?y01e.{?A1/{?{Bvɼ|?01+m?Qӫ̼%|? 1˼z h?׾411m?㫾1$m?B⫾̼ h?׾T1N?TBȼh? ׾ȼ2D?uS$15N?\o1JN?\ɼ2D?\S$1lN"?@̼ 2D?R$)[ʼ6?KQ1_G"?@1_G"?@ɼ?XQ1>YdVʼ#?vQFɼ炯>hpϐ1>s[d1>Yd ɼVw>-jpt1n0> =x ɼVw>-jp?ɼ=h~xu1U0>#>x1m0>;xˆɼ:=~tv1x21{ȼ2=~cɼ>0|tv1x21{tv1x21{Eɼ07|1߫/mvɼ0|ȼ׾ h@1i﫾5m1߫/mɼ%׾ h1z[`Nɼ%׾ hWʼTZ$~,D1z[`N1z[`NTɼoZ$,D/1@Q"TɼoZ$,D:ǼƅQ1@lN"1@M"ɼXQV1WdվVɼQ9 ɼ,jpUw"1\dվ"1\dվΈɼHlpk1s:x\q0ɼmpgcXʼ~9R1;xS0ѾE>]}SVɼ9?QѾ_L?Y2ɼ?XQTɼ,D?oZ$`ѾZS?M2Ѿ_L?Y2Tɼ,D?oZ$Ѿo??ɼ2D?\S$׃ɼkh?׾Ѿo??_ѾTu??ɼ h?%׾qѾ [?!ɼ h?%׾vɼ|?0ѾK[?,ѾK[?,vɼ|?0kѾh?p\ɼ|?"1ɼ~?ҳ=Ѿh?Ѿh?T(ˆɼ~?:=MѾe?;#>WɼB~?"n= ɼ,jp?Uw>)Ѿe?n#>Ѿe?#U#> ɼ,jp?Uw>Ѿ]}S?E>Fɼhp?炯>ɼXQ??ѾE{S?j>ѾE{S?j>VɼQ?9?ѾY2?_L?ɼXQ??TɼoZ$?,D?ѾY2?_L?ѾY2?_L?TɼoZ$?,D?Ѿ?o??ɼ\S$?2D?ɼ%> h?Ѿ?o??Ѿ?o??׃ɼ>kh?Ѿ,>K[?ɼ%> h?ɼ"1>|?Ѿ,>K[?Ѿ,>K[?ɼ"1>|?kѾp\=h?cɼ>0>|?ˆɼ:~?kѾp\=h?kѾp\=h?ˆɼ:~?Ѿ#U#e?ˆɼ:~?Xʼ9wjp?Ѿ#U#e?Ѿ#U#e?iZʼk"lp?ѾEž]}S?Xʼ9wjp?ɼXQ?ѾjžE{S?ѾjžE{S?ɼXQ?ѾP2?ۇɼ+~Q?Tɼ,DoZ$?`ѾZSM2?Ѿ_LY2?Tɼ,DoZ$?Ѿo??ɼ2D\S$?ɼ h%>dѾpr?,?Ѿo??׃ɼkh>ѾK[,>ɼ h%>vɼ|0>ѾK[,>qѾ [!>vɼ|0>RѾhZ=aɼ|=0>?ɼh~Ѿh=kѾhp\=?ɼh~)Ѿen#ˆɼ~: ɼ,jpUw)Ѿen#)Ѿen# ɼ,jpUw#ѾqSž ɼ,jpUwVɼQ9Ѿ]}SEž#ѾqSžVɼQ9`ѾM2ZSɼXQHWʼAS$l2DѾY2_LѾY2_LHWʼAS$l2D}Ѿm?HWʼAS$l2Dɼ%׾ hdѾ,pr?dѾ,pr?ɼ%׾ hYѾr[ɼ%׾ hvɼ0|qѾ! [qѾ! [vɼ0|ѾhEɼ07|?ɼ=h~kѾp\hѾh?ɼ=h~Ѿ#U#>e?ɼ=h~ ɼVw>-jp)Ѿn#>e)Ѿn#>e ɼVw>-jpѾE>]}SFɼ炯>hpVɼ9?QѾE>]}SѾPSžۊۻ{pԂѾe#U#޻{p˂a޻;89ѾelS#ѾelS#ۻG@9RѾhZ=a޻;89j޻$|0>Ѿhݎ=RѾhZ=ۻ$|0>ѾK[,>ۻw#|q 1>؉ۻh^>ѾK[,>ѾK[,>ۻh)>LѾnp?Ũ?3ۻah>Oۻ?De`$?}Ѿm??Ѿj??Oۻ?De`$?IѾQn2?Oۻ?De`$?ۻcȕQ?oѾ{M2?IѾQn2?{ۻQ?ѾEž]}S?ۻcȕQ?ۊۻԂ{p?{Ѿ0ž${S?hѾVž yS?ۻeyp?ѾlS#e?ۊۻԂ{p?ۻ@9G?ѾlS#e?Ѿ;#e?ۻ@9G?RѾZ=h?ۻ@9G?ۻ0>$|?Ѿݎ=h?RѾZ=h?ۻ0>$|?IѾ.>A[?ۻ0>$|?؉ۻ^>h?IѾ.>A[?IѾ.>A[?؉ۻ^>h?}Ѿ?m??ۻ)>h?Oۻe`$??D?}Ѿ?m??}Ѿ?m??Oۻe`$??D?pѾ2?{M?Oۻe`$??D?{ۻQ??Ѿy2?J?Ѿy2?J?P޻Q??{Ѿ${S?0>{ۻQ??Ȍۻ}p?Cw>{Ѿ${S?0>{Ѿ${S?0>ۊۻ{p?Ԃ>Ѿe?lS#>޻{p?˂>a޻;?89=Ѿe?lS#>Ѿe?lS#>ۻG?@9=RѾh?Za޻;?89=j޻$|?0RѾh?ZѾh?ݎۻ$|?0IѾA[?.j޻$|?0޻[h?Y׾IѾA[?.IѾA[?.ۻeh?b׾GѾRs??6ۻh?)ؾOۻ?D?e`$}Ѿm??LѾnp??ŨOۻ?D?e`$IѾQ?n2ۻ9D?yg${ۻ?QѾJ?y2ѾJ?y2P޻?Q{Ѿ0>${S{ۻ?QۊۻԂ>{p{Ѿ0>${S{Ѿ0>${SۊۻԂ>{pѾlS#>eۊۻԂ>{pۻ@9=GѾlS#>eѾl#>eۻ@9=GѾݎhۻ@9=Gg޻0%|ѾݎhѾݎhۻ0$|Ѿ|[ۻ0$|؉ۻ^׾hѾ"[YѾr[؉ۻ^׾h}Ѿm?ۻ)ؾhOۻe`$?D}Ѿm?LѾŨnp?Oۻe`$?DpѾ2{Mۻyg$9DۻȕQcѾy2JIѾn2QP޻Q{Ѿ${S0žۻȕQcۊۻ{pԂѾ<}S ž#;>gۻc?ȕQ3#;$?C{ۻ?Qۻ9D?yg$#;$?C#;$?Cۻ9D?yg$#;Q?ߖOۻ?D?e`$ۻh?)ؾ#;Q?˓#;Q?cۻh?)ؾR#;Fp?~ۻeh?b׾ۻ$|?0R#;Fp?~R#;Fp?~ۻw#|?q 1#; ?_쯽ۻ$|?0 ۻ?9=#; ?_쯽#; ?_쯽ۻG?@9=W#; |?83>ۻG?@9=Ȍۻ}p?Cw>W#; |?83>W#; |?83>Ȍۻ}p?Cw>#;wg?+>ۊۻ{p?Ԃ>ۻȕQ?c?#;g?>#;g?>{ۻQ??#;C?$?{ۻQ??ۻyg$?9D?#;C?$?#;C?$?ۻyg$?9D?#;˓?Q?Oۻe`$??D?ۻ)>h?#;c?Q?#;c?Q?ۻ)>h?R#;~>Fp?ۻb>eh?ۻq 1>w#|?R#;~>Fp?R#;~>Fp?ۻq 1>w#|?#;_= ?ۻ0>$|? ۻ9?#;_= ?#;_= ? ۻ9?#;2|?ۻ@9G?ȌۻCw}p?W#;83 |?W#;83 |?ȌۻCw}p?#;+ؾwg?ۊۻԂ{p?ۻcȕQ?#;+ؾwg?;#;ؾg?ۻcȕQ?i#;$C?ۻcȕQ?Oۻ?De`$?#;$C?#;$C?Oۻ?De`$?#;Q˓?Oۻ?De`$?ۻh)>#;Qc?#;Qc?ۻh)>#;-pI>ۻehb>ۻw#|q 1>R#;Fp~>#;-pI>ۻw#|q 1>#; _=ۻ$|0>ۻG@9#; _=#; _= ۻ9#;|2ۻG@9ۊۻ{pԂW#; |83W#; |83ۊۻ{pԂ#;wg+ؾۊۻ{pԂۻȕQc;#;gؾ;#;gؾۻȕQc3#;C$ۻQۻyg$9Di#;C$3#;C$ۻyg$9D#;ߖQۻyg$9Dۻ)ؾh#;cQ#;cQۻ)ؾhR#;~Fpۻb׾ehۻ0$|R#;~FpR#;~Fpۻ0$|m#;Sۻ0%|ۻ@9=Gm#;Sm#;Sۻ@9=GW#;83> |ۻFm=~ۊۻԂ>{p#;13> |#;13> |ۊۻԂ>{p#;+>wgۊۻԂ>{pۻc?ȕQ;#;>gsbL>$>Jc?R#;~>Fp?JNU>t(>8v?&H;n>'p?[I;a= ?JNU>t(>8v?/OU>Z(>Av?m#;S=?!Q>y?I;V="?\I;2|?Q>U3y?zQ>Vy?\I;2|?R>+ck?Bc*;13 |?-;5ؾg?Q>ҫbk?Q>ѫak?MI;.ؾ{g?Q>^$M?=K;ؾg?hd*;$C?Q>^$M?Q>^$M?H;$C?_Q>@r ?K;$C?;Qh?BQ>@K ?Q>@S ?;Qh?:Q>.cv>y#;Q?#;-pI>Q> .ci>Q> .ci>d*;)pF>% >z~E>&H;'pn>[I; a= >z F> >z/+>[I; a=D>r/I;"V=H; |;3kE>ircG>r\I;|2Q>ckƫG; |13G;gؾQ>ckƫQ>ckƫG;gؾQ>^$Mr;gؾH;C$Q>^$MQ>^$MH;C$gQ> @I;C$[J;Q_Q>r @Q>{ @#;cQ}L>ӾcG;͓QJ;~Kp}L>ӾcH{L>ӾMc0I;L0p^gU>!s(vJ;~Kp[I;a쯽 ^gU>!s(v^gU>!s(v[I;a쯽 ,Q> =qy[I;a쯽 H;;3> |,Q> =qy,Q> =qyG;13> |Q>>fdkBc*;13> |-;5>gQ>ǫ>dkQ>ƫ>ckMI;.>{gQ>?^$MI; >Eg#;$?CQ>?^$MQ>?^$MI;$?C_Q>@?r #;$?C#;Q?ߖQ>@?{ Q>@?< ;Q?:Q>.c?vӾ#;Q?cJ;Jp?~tQ>+c?sӾQ> .c?iӾJ;Jp?~ >z? F#;#p?nd*; ?\쯽 >z?_M >Cz?%; ?d쯽h9>6r?W>m#;?SW#; |?83>kE>ir?c>S>r?>0; |?33>Q>`bk?7ū>G; |?13>G;g?>Q>ck?ƫ>Q>ck?ƫ>r;g?>Q>j!M?`?MI;{g?.>K;C?$?Q>^$M??Q>^$M??K;C?$?_Q>r ?@?Ȼ;C?$?G;͓?Q?_Q>r ?@?Q>{ ?@?#;c?Q?sbL>$>Jc?\I;f?Q?J;~>Kp?gL>[)>c?sbL>$>Jc?A>7 ?vH?BQ>K ?@?M>6 ?H?=C?<$?_Q>r ?@?BQ>K ?@?X@=_C?$?Q>~"M?"?0=yC?$?ݾ=af?lK>Q>^$M??Q>~"M?"?ݾ=af?lK>Q>ck?ƫ>ݾ=af?lK>>/}d?wq>Q>ck?ƫ>Q>ck?ƫ>>/}d?wq>D>r?/>>td?(q>ĺ3e?>;>mr?>h9>6r?W>:Ae?$|> >z? F >z F>FнKnoM>Q>Q/cj>Iнdko>bKнvP?Q>Q/cj>WQ>,ct>YHнkP|?Q>@S ?YHнkP|?GKн#B?_Q>@r ?BQ>@K ?8Gн#B?Q>`j!M?8Gн#B?5Fн׾hf?Q>"~"M?Q>^$M?5Fн׾hf?Q>ҫbk?W|н׾Kf?FнE2$z?Q>ǫdk?Q>ҫbk?FнE2$z?!Q>y? Gн*,2Bz?GнZ-=}?Q>U3y?Q>U3y?GнZ-=}?IU>^V(>v?Gнua=\}?/d*k8?1?0U>CW(> v?/OU>Z(>Av?(q8?1?sbL>$>Jc?/d*k8?1??Fz>a??sbL>$>Jc?sbL>$>Jc??Fz>a??A>7 ?vH?fL>Ӿc=i7JPQ>S @y=gqDP0=yC$BQ>K @BQ>K @0=yC$Q>j!M`0=yC$ L>]ԏϾQ>j!M`Q>j!M` L>]ԏϾQ>bkҫ L>]ԏϾϕ>l)zQ>dkǫQ>dkǫϕ>l)zkE>ircϕ>l)zey8>mr#h9>6rWeyᾓ >z F>eyF y?{0 > >z F> >z F>ˆ >{J >FнKnoM>ĺ>e?!|>F y?{?0 >z? FF y?{?0 FнKno?M >z? F >z?_}нjo?Q> .c?iӾ|нho?4<|нP?WQ>,c?tӾQ>Q/c?jӾ GнP?Q>@?< YHнkP?|Gн#?BQ>@?S Q>@?< Gн#?BQ>"?~"M8Gн#?BuHн:>fQQ>?'MQ>"?~"M5Fн>hfQ>ǫ>dkuHн:>fzн+2>zQ>ƫ>ckQ>ǫ>dkzн+2>zQ>T=y{нH2>z{н,7}Q>T=yQ>T=y{н,7}/OU>Z(Avj{н a}ǻVp81/OU>Z(AvJNU>t(8vǻVp81fL>Ӿcǻs81 ?þ w-{L>y#ӾcdL>Ӿc ?þ w-0=`n2GP/]=0>U{?i3>=ų|?.]=?~?i3>=ų|? >T[1#y?-]=Eϳ~?-]=Eϳ~? >T[1#y?+]=S?#p? >T[1#y?P >־Re?+/]=O p?1]=C"p?P >־Re?2]=}JQ? >־e?] >=:#A?.]=)kGQ?2]=}JQ?V >>#FA?\= C,$? > >#A? >O&?-]=C$$?-]=C$$? >O&?/]=fg?> >O&? >eYn[ܬ>2]=gw>2]=gw> >lYn׬>/]=U{0>L >{[n̬>$9>"yZ>/]=U{0>0]=r{0>$9>"yZ>-]=~Eϳ$9>y>t>'SuA -]=^~K-]=~Eϳ]t>Pu Z -]=%p3t>TuB G>7N_о1]="pC\=F#pC >O_$о.]=kGQ)>K_о.>9<<.]=kGQ)+]=YDQ><].]=+$C><]E>& J42]='$C.]=+$C8>m" #JZ-]=׾gE>& J+J>g*'Z/]=?׾fg/]=?׾fg+J>g*'Z0]=0r{+J>g*'Z2> |0]=0r{/]=0U{2> |-]=Eϳ=~2> |O >t1>y-]=J=\~-]=J=\~ >T[1>#y-]=3>%pO >t1>y >>ۤe-]=3>%p-]=3>%pϸ >&>eF\=]?GQ >b>e >7#?B+]=?YDQ60]=?,BQ >7#?B.]=C?+$] >=:#?A >O?+-]=C?$$-]=C?$$ >O?&/]=fg??׾ >O?& >U\n?̬/]=fg??׾2]=g?w׾ >]n?e.]=8{?0L >{[n?̬$9>y?0]=r{?00]=r{?0$9>y?.]=~??=$9>y?t>+Ru?[ >-]=^~?K=-]=~?Eϳ=]t>Pu? Z >1]="p?C>t>Ru?u >>R_?6>1]="p?C>1]="p?C>>K_?>.]=kGQ?)?>mM_?>l>) ?J?-]=$$?C?-]=$$?C?_>t! ?s"J?-]=y>g?>) ?J?K>>)Z?-]=y>g?2]=w>g?+J>g*>'Z?/]=0>U{?}N>T.>%Z?2> =|?.]=0>8{??g.]=)?kGQ A<$?C60]=?,BQ-]=C?$$ A<$?C A<$?C42]=C?'$2@<Q?S-]=C?$$/]=fg??׾B<Q?B<Q?/]=fg??׾?<ҡp?2]=g?w׾/]=U{?0@-]=^~?K=1]="p?C>V?<|?3>V?<|?3>1]="p?C>?1]="p?C>.]=kGQ?)???.]=kGQ?)?@<C?$?60]=,BQ??-]=$$?C? A<C?$? A<C?$?-]=$$?C?^?<׍?=Q?1]= $?C?-]=y>g?FAg?@p?-]=y>g?.]=0>8{?@p?@p?.]=0>8{?a?U{?-]=Eϳ~??GA?<ҡp>2]=gw>/]=U{0>@@/]=U{0>?<X=/]=U{0>-]=~Eϳ?<X=?|,]=P7=ˡ~-]=3>%p?<2>|?<2>|-]=3>%pA<>|g-]=3>%p.]=)?kGQ?g3giO?]/L>W <2>|~~O? 1L> 8}O?:dL=gʞ<2>|ⴄU|nO?4M=y6< -NO?L=JUO?|ҽRew<믽FnC$'^O?:NȫJ<)gؾVO?%TǫeVO?/ ~L\Q|^kO?ŷ=iO?Ց~>@cO?=~>GAuiO?G><'Qȍ?^?<=Q׍?4eO?pW>n<$C?ugO?S>fO?(>@<$C?}<"$XC?[O?1ƫD>}<ؾXg?/bO?7>bO?IL" ?Xo<ؾg?Xo<ؾg?hO?HL ?V?<3|?7qO?0LI ?joO?cL-z?ⴄp?;DO?=T?7CO?~>?, t<~>ޤp?g<}>p?TpO?iw~>J?<0?Q?{^O?~>#?dO?I>!>o<~?fQ?<?Q?yO?0>bp>>>UO?R>Eӫ>Mz>fO?(>>dO? ?eL>?A<|g?>bO?" ?IL>?<|?2>hO? ?HL>nfO??2M=;lO?|?8M=Ca͔<~Q?ޜ<.Q?q^O?—>qK<$?DCiO?4>QUhO?>*_<$?C<"$?KC^O? ֫>.5AFgcO?z>:cO?0L>" A<>|g#?I<E<`O?Ǩ~>R?L?I;<(]O?~>E?qbO?=/?H?[#;A?F`O<?d.f!?RbO?T>?b#?EؼI<:sO?dW>zO?h~>?>-ԼJ<#?EؼIL?伢I;PO?u ,~>GO? =?IH;?޼J; O?Չڊ=?Jۼ]WO?x=^VO?ʛi6M?v ?`QO?47M?ψҼTArdO?ԈLaO?b! cLK?м,UA?ψҼTAhPO?"= KL?eı.-lO?i Y`LiO?ƹ?ڬ?}dO?-9?-AǺ@xO?WmO?'+ ?}Ⱥ]?*}ǺZO?zk?%ּZO?z:bO?~?@Wռ?YּhO?k~?I⼍cO?=~jO?Ѿҽb?#⼪?IjO?Ѿҽb?;v^kO?ҽŷ.dO?7M=?;v༛?;vrdO?L=Ԉ?lUAW ?><qμ?lUA" ?<}bO?IL>b VO?>9F?t<}?<}/bO?>7?Ǻ<-A]O?m>c %NO?Q> a?X<@?:V?CT[O??~_?s<>?rH<;pO?U?ҽ@rO?u?3L=?<될;?<;:O?D?gL=??B;?!fO?(>>_?uO<u<;?!>+?Xp>mO?8>Z>{?Zo<k>C?<7E<^O?q>—>:bO?~>?/?n ? ޵A<?Ǽᴄ?kñ<ɥy?Э6>>=y?{ )1>5?=N~<?n <ِy?1>?Iyy?O>1?i?5<1?i?5-?-J<5y?뷽P>y?ɫ `a>E?1H< y? `>{?I;q^y?o< kb>1?H;Jx?S<|ڣy?>=QrS>?<<?(<<y? =@S>?o<$y?7>?gw<<?< <}y?>7>?ı<M7>ќy?>1>T>? W>?<ʛDY">y?9O>y=?tZX=?ף<;y??P>=wy?`>=q =?5<;m?>H<;y?j `> =? =/y?ya>ļ?mż?<$y?c>mż8y?KU> +?/? <ڵ9y?R> Py?/,6>?k g$?<2y?W^6> y?e >05?=07?B<м y?fi >0%y?ar=gZOg?]7<̼y?=Pf?({.>n̾uy?Q =`f?3/.>̾f?Cz=۾y? =_y? =\^f?{="۾y?kż `Հf?~{=ܾf?Sܾy?ļochy??@Ƽocf?Tݾ1y?rJUf?Q۾f?v$;̺y?-ѢRUy?@0Tf?l*% :ξ̖y?% m8ïf?F%ξPf?dy? ~7Zy?6;f?vaɫy?L/,UCf?W섾6f?)U͈1y?0 y?؊0|f?H6Fy?@O跽Hf?oަOf? ̾ -y?Oݵ!y?ZO f?˾S.y?&C`s Lf?(̾,. f? ۾ƫz;y? v`2 y?̎`) f?۾<{y?aj<֍f?dPܾ{ϒf?ܾ*T=y?%8cky?Sr=Ҁy?UF=f?>ξ%>y?5s9>f?w;F%>[f?4,>y?6t>ǝy?J7X>pf?sy>}y?W-C1>݋f? `>ff?ቾ>y?,Z1>y?6 a1>Hf?[s>y? P>ڙf?%k=ˮ>`f?.>y?$P>ny?q`O>xf?x.0>~y? yt`>vf?~-b>f?y+>my? `>y? +za>f?6EzPX>y?nf?Az.>Ff?+T=5>Wy?o<b>y?}f?/T=t>qy?ޤ=bT>f?R=_>f?%>>ky?ף=6R>Ty?.=aaT>hf?'>->y?>7>^f?oZ$>FP>f?> >y?:> 5> y?7 >.6>ɿf?$>f>y?!0>? >f?{>m>֟f?ʮ>{C>-y?^1>>ɜy?0>*>8>Fy?@O>=vf?T~>>f?>n->y?cO> =y?߬O>=f? >0.>Sy?.%`>p =f?">..>f?w>D{=y?9 `>Rq =y?Gfb> =nf?>z=Hy?c>Zļg?)>{=Ig?>Ty?3^>ļy?a>N=Ƽf?>Ty?sS>sf? >5TͿf?>x%y?R>ty?xT>Vգ f?V>(E%y? 8>`?f?> |%f?W>+y?17>% y?8>s_f?tE>DWy?>[1g?>f?i>Sy?D >k/Iy?zo>Վ1f?>ٮ=y?=FPf?>v׮Пf?->̾y?ڵ= FPf?.>˾ f?}=۾uG?"y>܇G?=]Zf?./=ݾf?éz=ھH?=wf?eTZG۾ޮG?=eNjG?&Ff?*-T޾Xf?HXݾaG?\-^f?J&q@ϾgH?(SH?pf?]+% ;#f?$i;n/H?8pf?cAH?QobܛH? g?hIAf? G?lf?ENx H?{1H?5?ľէf?̾f?᭾*D`H?s þf?u˾-6H?þ,H?y wưf?1̾4.f?(˾-H?  wf?~ھ yk7H?tkx%AH?r~f?Q۾{f?w۾D{9H?NEf?OܾT=^H?bSH?K)0=f?۾-T=5f?ܾgU=DH?*;A=$f?;z%>G?7=G?Xp>wf?7ξ`%>wf?7ξ`%>G?Up>f?`aE>qVH?9{o>"gH?(> f?\Y> f?vc>5H?%*>f?鈾F(>^H?˿>H?xcþ[>f?w)>Af?>fH?þr>f?.:>H?UþY>`H?w?f?-t>!f?-d>)"H?w$?ٵf?nxij>H?xi?rH?'OҸ?<g?y>f?ys>H?MG?f?T=z>H?Ɓ&?!H?T=g?ѽf?G.T=+>[f?U=$>#H?-=b?Nf?^%>d>H?I~=Tw?YH?p>?Wf?+%>Y>qf?e&>>vG?[q>L? mf?>߈>iG?~p>u$?OG?>y#>f?i>!> f?Ä>p>چH?B>>f?>Uɇ>aG?>=> H?>Tg>f? >`j>{f?]>y>G?>Y>yf?>N/>LH?q>%>cLH?O?w>f?D>m->f?>->"H?'?x>f?x>oCz=H?~?Qx>H?&?Ɓ=Gf?!>{=֍f?dP>{=H?@?=f?>TcH?4H?=H?a?坽-f?1>T[f?d>;-T H??䝽kf?\~>F%36H?EN?b2H?f?u0b%ʴf?>`%9H??n"pf?i>nWH??okXH?>hf?>넾hf?Fc> G?}:>6aef?t>uMxH?>PcH?>=af?d>q:f?ೈ>%!4KH?>f?m->D˾:H?s>7H?mx>f?O5/>˾kH?ӯv>Gb1 ?7*>{7H? =/a?{>8,?=FG?I=FcH?E=Ty?ww="F2_H?杽+ ?Oy=Q`E ?ɽE?I?z|NH?& ?@ǽ?F~H?/o\z"?ɽgFK?C 93EH?p]H?p?;2K9H?5i?O9]?}P~aH?"G?-[! '?/^G?Lľ?^A?l!EuDH?zþ)H?)Lľ?[?H?Żx>u?VNW?P8H?xkH?ů7x?p=8횾xH?hN|b?8ƚO?FEؽG?wS0H? ?c?JTFFؽr%H?2?-sF=?S)9dr>LH?2"p>7H?3;p>դ?>9s>FH?Qj>ʾ?u9֧>e?Ba>RH?ߐ>G?e>)4?3>H?d?ľ>8?1>?T?H?>ľ6>~G?'ľIw>k?xx?ޠG?'z6{?` ?Ɗ, ? ?Q8?0H?+vBh?YG?x?M?¤9?G?]? ?h#L+8?I ?ؽE?H??rH?'OҸ?, ?wؽE?}~H?=?e?FؽFF?E ?g=j3F?NH?=0?fDH?"O=y;??ʹ=>F?hFH?Rqp>?N'?=F??y>U9?̙G?)&q>?uH?o>pU?#O ?$>X8?(H?QO>q>H?Y>;9?|?>?_G?>A>G?>>4?c>E?ӍG?S>9>B ?>k#?, ?V?>)MH? >>JH?>U>, ?V?>VH??$w>?B? >E?R8?K>[H?3?x>2H??ox>?t8?S՚>3H? ?=-?z8?>V?L@F?=1H?F?&=0H? ??=?9F?dF=}0H?}U??NF?VG=M?yF?FRɽ!H?g?T=H?B??blF?"ʽ3:H??p2?-sF?ɽ?*9?nf6H?.?Sp:.H??Qp?69?e/H?,>շ?#9?tѲ?<?|I.H?Y>yYH?x>翾?_W?;xMH?=(>Zʾ?aO?N?V >{'H?>_H?t>|?r>B!+H?m9x>Xٴ?->?>e8!H?nx>  ?"> 9>>wPUp?=Fy>۱>wT#>R=aVdF ?C=E?AF=F>=d?ɽmF]>=@^e)>꽋`ec?kɽ_G8G ?~Ƚ F>齁Ud*i ?w8>* e3>?٥U=?˴u9o ?▾:8'>EuTuO ?r>௾Uv> 97c? N' 2?"̛p>; 7O?c m,>~ {)7b>m6 ? x;?z}#t~>6 KC?s8X>ҝ>l6 3>zT ? n8?~8w>T뱾!?MF/{ؽt>WT9>d3?RFؽ?HF,Hؽ6>/d گ?~Fw=>d(8>3d]=1?F =?yF=](>3dP=?4C99>n>dJ=Xr>SU>p?Vs9L>;?C9ϗ>I>ܚU+>'?Ӫ>>TUo>>s(7, ?V ?qC> ?>i>16U ?c ??>,l7) ?> kY6??Wx-??l#?V> 6?Ʊ?奛09?2.> E6? p>UT??횾e8??=@_9?a>9U??i{ؽwF?>%S?iz>c?@!?ս+E?e? CؽQF?,>7bKd?@?==F?[>t:d?k>=d?W?P=leF??=F?Sj>=d??K>X9?>=d? > >1U??Z> &9??b>19?w>>,U?^?Ι>#? > >6jU?>' ?W7??>>w?5?a>'?O> ?>7?8?;?=>m> ?A/7?">&g6? ?T ??*`>3?m(? >>>6? ?`?8?>Z >͓6?O ?)>T?ұ>?x8?ƚ>?^8?>Q>T? б>-?* F?h=>T?:>>bd?=+?aF?=<? F?FE=?>hd?=?KF?fPɽ '> d?%=O4>d??1F?ɽ?sF?ɽ^h>d??*9?nf>d?,E>;U?#*?9?X?!'9?<>mNU?`?1J?><\U?D^ >q7?V ?]?};`??P pj>7?y/ ?n>,>Q=7?i T> ?X6 ?͞>\ ?|>}>R ?+61} ?7>c7k> ?5n6} >>T4?>:Z8>z>T'e>>Hf8>`={d[`>SP>f`>'8>OwP>i8=dX>=/dRc>M>mw>db>N>uw c>5w3>d>C!dQc>)Ow>K)hUe>`we>6 fP>5U9F>*VUc> sf>. Vr7b>4fb>ӭMEFh~>* s7.B> e7d>9JF4>w6 0|a>y=F`>ED.>}6I \><96B \g>ECY>(|TMb>Ex@Pb>hfPq>T2;>Uf`>͏f>d"e,e>MfOe>MFwM?>hd6>/d *[d>ZwMN>d=c>awNQc>w)O>M>dm=^h>d=u$d>~wM>>aU$)>2[d>zwwi> d>Zf>2>WU"@>su>U!3>`>f>>>7& ?WGe>"fw>)e>F֬?B>;7? ?:}>e7" ? c>,F$?b>D R6?>d>hFM?.d>~[E?\>| fF6?> Vn6?d>iQE?>]T?!b>/sE?Qa>@f?>>T?XO>Cz-U?heY>lbf?q> Xe?c>俾jf?4%d>L^w?>,nd?q>dId?b>Nuw?i>%=1d?2f> M>w?3f>i>`w?>=_Ld?f>fP=Yd? e>.j>hw?>>T?kh>?>:w?h>R>f?<>^>ժT?>0>HT?k>e> if?>B ?r6?W_>]>f?0_>f?F?_> ?B7?Gp>߿ ?T7?`>y?HF?">T6?s] ?:_>?xF?Ra>E?r?>6?80 ?>R6?7 ?h|e>E?km?>QT?>A!c>E?Y?\mc>ef?h >>yT?>Qh>T?8б>4d>Wf?>р>F~d?ݐ=`c>_f?>[c>w^w?>%>d?{=[>:d?t=*[d>Zw?M>i>1d?%꽤c>bw?^e>Ɗc>Ww?>hd?>d?}꽳b>lw?>/uU?5c>w?c>Vf??O9A>KU?_hD>XgU?bB8c>|f?&]>{7?m Cd>۾f? d>MF?·Ei>_7? (>D7?yc g>[F?,z > ? 6w#[>F?T[>Ŀ?E>؅ ?37>." ?86Zd>g?ezEZ>`>Tl_>j?SEq_>3>7f9 >+>KU3f>]>UTfYQ;SA>ƈpJf>>{Cw#;\>p˹;|e=ye>F>6Kwng>3>!-wE.;9=!#h>3@Dw.:<=GI,:0/&|d>6Svwe,a>wFd*0=(|`>uf/J'1#|7Gbؾbh8c>&|f;>h>𗽾͚fG;G׾.hh>=0FPBX55ؾ hQGo$4Dީ`>cb_Fƽc>dSFWa$@D|b>Ec}<\_$W>DFE6c>]E\Q9Q<[c>jfB  Q޺|pƃa>f f> >f"uDX;up>f>3w:zpg:)NnE d> ]w(ABd>o[w^N+Q:E:[c>|w5>"J:G:G:7&|0>c>w3>u$d>~wM>Wk:&|0>qd>f >:T'| 0>J:dh> d>Tf>ync>f̽>!Ѹ+h>mc>sFe?+:[h[>r.:@DPa$?md>LFz?e>!6Fw?DG;V=De$?e>DݠE?7@DTa$?wIhQ?Pb>k0E?c>]}E?Q?a>^yf?BX:̀Q?DB᯾kp?^>rږf?c>hf?r:ǃ|p?#d>KG]w?9\p?4K95v?Fb>qw?Aa>LT~w?7@M?a>N>Mw?.9H:?д90>9&|?b>.M> w?Y>[5>x? 1>="|?~X>A>kg?܏;@1>!|?;*>h?ef>->f?T\>k>cg?d_>Zh?\>=?VF? ;>h?U;n$?3D?g>W?#*F?g>l?u+F?;`$? @D?th>E?V%?]/:xo$?4D?i-:2Q??:\d>E?L?d>)E?{s?d:{Q?%?d>.Cf?L>ɩQ?k?6p?XQ>c>tf?᾿>u8c>kf?>I}p?Ճ>c>jw?c>ϸ:wp?">+:?F=d>5Nw?>c>`w?[M>"J:?G:=c>w?3:?G:=G:7&|?0c>w?3d>xw?s:*|?Ŋ0e>~f?!ؽ:$|?t1:7h?fؾ1c>Yf? d>lf?::+h?׾ d>bF?Z>Jg%h?׾%UD?$H$`>OF?g>E?Ð;ID?"$"h>D?Eճ8hCD?^$Q9 ?Q=@g?EXh>|?єEժ;?Qh>Ep>2fV?]QEJƯ>ppQa>B>tfVKpoONw>MN?MN>VKp?>oON?wMN?VKpoVKp?o>VKpoMN?VKp?o>VKp>o>ONw?MN?>?MN?VKp?o>ON?w>?MN>VKp>o>VKp?>oVKp>o>MN?>?VKp?>oMN?=Mp>>=Mp坾=Mp>>MN>=Mp坾MN?>?=Mp?坾>=Mp?>=Mp?坾>MN?=Mp?>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1;@@1;C@@f@@1;C@@fC@@f@@1;Mb>1;@@fMb>1;@@f@@fMb>1;CMb>1;Mb>fCMb>1;Mb>fMb>fCMb>1;C@@1;CMb>fC@@1;CMb>fCMb>fC@@1;Mb>1;CMb>1;@@1;CMb>1;C@@1;@@fCMb>fMb>fC@@fMb>f@@fC@@{{Dv {Dv Dv v Sc>v z߾Sc>{Sc>v z߾Sc>{y߾Sc>{Sc>v 2>v Sc>{2>v Sc>{Sc>{2>v z߾Dv D{y߾Dv D{D{y߾Dv z߾Sc>v z߾D{y߾Sc>v z߾D{y߾D{y߾Sc>v v Dv ʾv Dv z߾Dv ʾv ʾv z߾Dv ʾ2>v z߾Dv z߾Sc>v ʾ2>v ʾ2>v z߾Sc>v 2>v z߾Sc>v Sc>v 2>{2>{Sc>{ʾ2>{Sc>{y߾Sc>{ʾ2>{ʾ2>{y߾Sc>{ʾ{y߾Sc>{y߾D{ʾ{ʾ{y߾D{{y߾D{D{v v ʾ{v ʾ{ʾ{v ʾv ʾ2>{ʾv ʾ2>{ʾ2>{ʾv ʾ2>v 2>{ʾ2>v 2>{2>{ʾ2>v v Dv DDSc>z߾Sc>v Sc>z߾Sc>v z߾Sc>v Sc>2>Sc>v 2>Sc>v Sc>v 2>z߾DDv z߾DDv Dv z߾Dz߾Sc>z߾Dv z߾Sc>z߾Dv z߾Dv z߾Sc>DʾDz߾Dʾʾz߾Dʾ2>z߾Dz߾Sc>ʾ2>ʾ2>z߾Sc>2>z߾Sc>Sc>2>v 2>v Sc>v ʾ2>v Sc>v z߾Sc>v ʾ2>v ʾ2>v z߾Sc>v ʾv z߾Sc>v z߾Dv ʾv ʾv z߾Dv v z߾Dv Dv ʾv ʾv ʾv ʾʾ2>v ʾʾ2>v ʾ2>v ʾʾ2>2>v ʾ2>2>v 2>v ʾ2>D½-D½-D½-½-Sc>½-z߾Sc>Sc>½-z߾Sc>z߾Sc>Sc>½-2>½-Sc>2>½-Sc>Sc>2>½-z߾D½-Dz߾D½-DDz߾D½-z߾Sc>½-z߾Dz߾Sc>½-z߾Dz߾Dz߾Sc>½-½-D½-ʾ½-D½-z߾D½-ʾ½-ʾ½-z߾D½-ʾ2>½-z߾D½-z߾Sc>½-ʾ2>½-ʾ2>½-z߾Sc>½-2>½-z߾Sc>½-Sc>½-2>2>Sc>ʾ2>Sc>z߾Sc>ʾ2>ʾ2>z߾Sc>ʾz߾Sc>z߾Dʾʾz߾Dz߾DD½-½-ʾ½-ʾʾ½-ʾ½-ʾ2>ʾ½-ʾ2>ʾ2>ʾ½-ʾ2>½-2>ʾ2>½-2>2>ʾ2>S!\^_3澹G?c߾=>mG9a߾=mG?9a߾S>!\?^_3>Gc߾@澨GV>S!\^_S>!\^_=S!\^_@>GV߾S>!\^_=S!\?^_=3澹Gc>=>mG?9a>=mG9a>S>!\^_=3>G?c>@澨G?V߾S!\?^_=S>!\?^_S!\?^_=@>G?V>S>!\?^_@澨GV>L!\?="\+"\?+=@澨G?V߾L!\@>G?V>>L!\=>"\?+>"\+=@>GV߾>L!\?,1?g>?L> B?>Y?Kt>> B?p?s4O>Y?Kt>=p?s4O? =W+wq>xL>>Y? =W+wq>y?pYo=xL>>Y?䒾Y?Kt=p?s4O? /;>~fs?=p?s4O?G>I>֪Y? /;>~fs? W+wqp?s4On?4'p?s4O> B??n?4'|=,wūq>|,wūq u?vsY@=|,wūqq?4W u?vsY@=>>Y?h>Ř #?1OPe>-v? >ǘ?4Oཇ-wsqe>Nv?m >e>Nv?m >T ,w4qeov?%6 ཇ-wsq =W+wq>eov?%6 Pe-v? =W+wq>6撾PY?i=T.wq>ǘ=?4O?ⒾZY?~-;>ds?%,W>>Y?Th2?0?zI,W>>Y?gu? tYcb=i2?0?pIng2?0?It?rY=&?aB?]=gu? tYcb=n?4'O&?`B?h^=&?`B?^=n?4'̮1?>|?n?4'> B?1?J>?>Y?Kt>e>Nv?m >,1?g>?ge>v? > &?ZB?^=,1?g>?e>Nv?m >eNv?m &?ZB?^=eNv?m m2?o0?IT &?ZB?@i^=ev?= ؒlY?ung2?0?I=Y?r /;>~fs?j2?0?=I>Y?Kt>p?s4O>Y?Kt>p?s4Op?s4O>Y?Kt>=p?s4O? =W+wq>=p?s4O? =W+wq> =W+wq>=p?s4O?䒾Y?Kt=p?s4O?䒾Y?Kt=p?s4O?=p?s4O?䒾Y?Kt W+wqp?s4O W+wqp?s4Op?s4O W+wq|=,wūq>|,wūq|=,wūq>|,wūq|,wūq|=,wūq>>>Y?h>Ř #?1OPe>-v? >ǘ?4Oཇ-wsqe>Nv?m >e>Nv?m >T ,w4qeov?%6 ཇ-wsq =W+wq>eov?%6 Pe-v? =W+wq>6撾PY?i=T.wq>ǘ=?4O?ⒾZY?~>򒾸Y?h依Ř= #?1O?Pe-v? ǘ=?4O?=-wsq>eNv?m eNv?m T= ,w4q>e>ov?%6 >=-wsq> W+wqe>ov?%6 >Pe>-v? > W+wq6>PY?i>T.wqǘ?4O>ZY?~>>Y?Kt>e>Nv?m >>=Y?r>ge>v? >e>v?= >ؒ>lY?u>e>Nv?m >eNv?m e>Nv?m >eNv?m eNv?m e>Nv?m >ev?= ؒlY?ugev? =Y?r侉䒾Y?Kt侁eNv?m >Y?Kt>p?s4O /;~fs?>p?s4OG۾I>֪Y /;~fs?>ž B???n4'>=p?s4O?n4'> =W+wq>=p?s4O?,1g>Lž B??䒾Y?Ktž B??=p?s4O?䒾Y?KtypYoԽxL۾>Y W+wqxL۾>Yp?s4O W+wqq4W> uvsY@Խ|=,wūq> uvsY@Խ|,wūq|=,wūq>-;ds?%>,W۾>YTh20?zI>,W۾>Ygu tYcbԽi20?pI>ng20?I>trYԽ&aB?]gu tYcbԽn4'>O&`B?h^&`B?^n4'>̮1>|n4'>ž B??1J>>򒾸Y?h依Ř= #?1O?Pe-v? ǘ=?4O?=-wsq>eNv?m eNv?m T= ,w4q>e>ov?%6 >=-wsq> W+wqe>ov?%6 >Pe>-v? > W+wq6>PY?i>T.wqǘ?4O>ZY?~> /;~fs?>j20?=I>>=Y?r>ng20?I>e>v?= >ؒ>lY?u>m2o0?I>T &ZB?@i^e>Nv?m > &ZB?^eNv?m e>Nv?m > &ZB?^,1g>gev? ,1g>䒾Y?Kt侁eNv?m Y>,͍^>,.fY>͍^>,.f^>.fY>͍; >,XiY>,͍; >XiY>,͍Y>͍; >Xi@6>,Л3; >,Xi@6>Л3; >,Xi; >Xi@6>Л3^>,.f@6>,Л3^>.f@6>,Л3@6>Л3^>.f; >,Xi@6>,Л3Y>,͍@6>,Л3^>,.fY>,͍@6>Л3; >Xi^>.f; >XiY>͍^>.fu5?CF<`?Tm>o!>~N>e^dLU@`?]>!>r?dj ? P>mGU@`]>!Y5r?F91c Y5r?F~N>e^dLU91c u5>?CF?<`Tm>o!~Ne^dLU?@`]>!rdj PmGU?@`?]>!>Y5>r?F?9?1c ?Y5>r?F?~Ne^dLU?9?1c ?>` i>?z!X5><?F?X5<?FX5><?F?>`? i>?z!>X5<?F PmGU?Dzc ?Dzc ?Dzc P>mGU?Dzc ?>TlL>EYO>ElO>Elɩ>Ed4>TlL>TlLɩ>Ed4覧>|㽸p~ɩ>Ed4T>EX8覧>|㽸p~T>EX8;>9Hj覧>|㽸p~覧>|㽸p~;>9HjvȤ>mثk;>9HjȊ>I vȤ>mثkvȤ>mثkȊ>I h>_HWȊ>I 5͍>Ah~h>_HWh>_HW5͍>Ah~(p>yZD5͍>Ah~h>2>Ȅj(p>yZD(p>yZDh>2>ȄjNЬ>c㽸3h>2>ȄjE>AYNЬ>c㽸3NЬ>c㽸3E>AY@>T&E>AY>E)M@>T&@>T&>E)M:>K0>E)M>EF:>K0>EF똴>E_E:>K0:>K0똴>E_E>s㽰+똴>E_Eݺ>B@D>s㽰+>s㽰+ݺ>B@D^Z>mg㽀eݺ>B@DA>HH^Z>mg㽀e^Z>mg㽀eA>HH$>_(A>HH>YLR$>_($>_(>YLR˴>#U5>YLRq>]Q8b˴>#U5˴>#U5q>]Q8b<>0PFq>]Q8b6>lAXt<>0PF6>lAXtm0>p@| <>0PF<>0PFm0>p@| >S`!T>S`!Tm0>p@| :>1`Zm0>p@| >Bxv:>1`Z:>1`Z>BxvE>J㽘n>Bxv;0>B$ܛE>J㽘nE>J㽘n;0>B$ܛ>T@;0>B$ܛa>"Fl>T@>T@a>"Flw>q]㽐a>"FlMy>Ew>q]㽐>TlL>[u>EY>EY>[uuȣ>EZuȣ>EZ>[uN>[B >[u>Ok㽸DN>[B N>[B >Ok㽸D׶>~>">Ok㽸D,>e㽬׶>~>"׶>~>",>e㽬q>;@Y,>e㽬l>X㽘؍q>;@Yq>;@Yl>X㽘؍k>D`Ķl>X㽘؍w>q]㽐k>D`Ķk>D`Ķw>q]㽐My>E@>T&E>J㽘n>T@>T@w>q]㽐@>T&w>q]㽐l>X㽘؍@>T&@>T&l>X㽘؍NЬ>c㽸3NЬ>c㽸3l>X㽘؍,>e㽬,>e㽬>Ok㽸DNЬ>c㽸3NЬ>c㽸3>Ok㽸D>[uE>J㽘n@>T&:>1`Z@>T&>S`!T:>1`Z>[u>TlLvȤ>mثkh>_HW(p>yZD>[u>[uvȤ>mثkh>_HWvȤ>mثk>TlL覧>|㽸p~NЬ>c㽸3>[u(p>yZD^Z>mg㽀e@>T&>s㽰+@>T&:>K0>s㽰+^Z>mg㽀e$>_(@>T&>S`!T@>T&<>0PF<>0PF@>T&˴>#U5@>T&$>_(˴>#U5>Bxvm0>p@| ;>9Hjm0>p@| 6>lAXt;>9Hj;>9Hj6>lAXtq>]Q8bq>]Q8b>YLR;>9Hj;>9Hj>YLRA>HHO>El>EYɩ>Ed4>EY>Bxvɩ>Ed4A>HHݺ>B@D;>9Hjɩ>Ed4>BxvT>EX8>Bxv;>9HjT>EX8My>E>EYuȣ>EZ>Bxv>EY;0>B$ܛ;0>B$ܛ>EYa>"Fl>EYMy>Ea>"Flݺ>B@D똴>E_E;>9Hj똴>E_E>EF;>9Hj>EF>E)M;>9Hj>E)ME>AY;>9Hjuȣ>EZN>[B My>EN>[B k>D`ĶMy>Eq>;@Yk>D`Ķ׶>~>"׶>~>"k>D`ĶN>[B E>AYȊ>I ;>9Hj5͍>Ah~Ȋ>I h>2>ȄjȊ>I E>AYh>2>Ȅj1&>N]+V*!>.22!`>u2UMSR3&G>^+3&G>^+UMSRDNa'>G XM VR,V^IW6DNa'>GV^IW6: j[]mPa>DNa'>Gj[S#s=>j[Sr}===#s=>#s=>r}===rh>3>r}===o=Ԟ>r>3>r>3>o=Ԟ> _2s>>o=Ԟ>Rs<8?_0s> >_0s> >Rs<8?6Ev?j ?R<;?#[* @?z?g ?z?g ?#[* @?Rڿo?9?a?#[* @?'Ӿ-Z_?Rڿo?9?a?忾=9?`?'Ӿ-Z_? \ru?d&Ӿ9_?9Z`>ӾdYb? \ru?9Z`>ӾdYb?azƥo? \ru? \ru?{)o?-3bO~?{)o?t=շ׾Of?-3bO~?-3bO~?=׾Mf?>|t?}=޲׾Pf?L>P?H>Gt?>|t?JX>P??.?Q?MW?C?鴝d}W??.?@?7_(??.? .?a?@?7_(?@?7_(?@ .?T_z?(i?m<ѐ>@ .?T_z?$22?Y"jU>(i?m<ѐ>$22?Y"jU>Z?u2>i?ž<܅>i?ž<܅>CZ?I2>q?d*>d?>q?d*>d?>HZ?2>"{?79>#?D[{?9>,<[{?9>,<#?Dn?>Z[O#?MD;Ik?,zn?>Z[On?>Z[Ok?'*zޒQ?>ھk?'*zޒVU?GrD Q?>ھQ?>ھYU?pw6 $?>f'YU?pw6 3?,>01 $?>f'3&G>^+k ?=ӨX*V*k ?=ξ*A>cxgξB>zgk ?=\l>rk ?= ʽ>??W\l>r\ l>rtʽH7?DWld:AttʽH7?DW>y? Vld:At7<:>Bt>y? VSא>>j>y? Vb>?yZ7Sא>>jSא>>jb>?yZ7?*>>Ub>?yZ7G$?U>dj'?*>>U?*>>U $?>f'c3? ;01;9?_?n?>rOQ?>ھQ?>ھ$?>vk'忾=9?`?s$?>(m'>>?X7忾=9?`?⿾:9?d?>>?X7v?< ?6Ev?j ?>?W7>p~?V>y? V#YʽA??>@Wv?< ?v?< ?ʽ>?'?Wk ?=n?>YO忾=9?`?[{?9>,b?>{?9>('`+s(>>Tr >3> _2s>>@i?ĵ=@i?ĵ=KsI>LCr >ߙ3>s(>>T1&>N]+La$>٢mIx?π ?k ?=}_M>>|t?忾=9?`? 7bS~?忾=9?`? \ru? ..~?>|t?Q?MW?忾=9?`?q?6>b?>K濾79?g?(i?m<ѐ>i?ž<܅>K濾79?g?@?i(?忾=9?`??e}W?@?i(?#?DşZ?k^2>j[SşZ?k^2>$22?Y"jU>j[Sj[S$22?Y"jU>@ .?T_z? .?d?T?B.?: j[]: j[]?.?O>P?!ʨ>2ӨX*UMSR' V*#?MD;IUMSRM> P?.L=?׾Mf?: j[]dZMQR:#?MD;IV^IW6#?MD;I: j[]V^IW6c3? ;01ӨX*ξB>zg#?MD;IӨX* k?Dz{k?@zН' V*YU?pw6 ӨX*c3? ;01hU?t =׾Mf?azƥo?: j[]]F+Mo?C`OӾVb?j[Su`XMӾNTb?d&Ӿ9_?: j[]d&Ӿ9_?9#+N@?j[SLξ(>{g\l>r 3?;0\1\l>r?*>>U 3?tT01ِ>>>j?)>?Ui`<>Ctld:At?*>>U٭\k>rZ#+s@?\s}=>>=: j[]o=Ԟ>r}===RN<;?\s}=>>=#* @?RN<;?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     4>﬛g=4>j=4>V=4>V=4>j=4>VP=4>j=4>dj=4>VP=4>VP=4>dj=4> 0=&?=&?j=&?VP=&?VP=&?j=&?V=&?j=&?cjp=&?V=&?V=&?cjp=&? =x?1 P=?䐾=?؏P=?؏P=?䐾= ?䐾@O=?䐾=?؏Q= ?䐾@O= ?䐾@O=?؏Q= ?1 =x?1 `=?䐾/=?؏`-=?؏`-=?䐾/= ?䐾@=?䐾/=?؏= ?䐾@= ?䐾@=?؏= ?1 =?)N=?Q=0A=?Ba"=?Ba"=?Q=0A= ?Opw=?Q=0A=?n<= ?Opw= ?Opw=?n<= ?)P=?)=?O=?nk=>A=l>d=>A=> Ɍ=l>d=l>d=> Ɍ= >2͍=> Ɍ= >G= >2͍=n>G=̟>2 =n> `=̟>2 =]>dw=n> `=n> `=]>dw=n>AP=]>dw=>P=n>AP=>.F=>p3=n>/e=n>/e=>p3=l>oB`=l>oB`=>p3=o>,0=>p3=>e,=o>,0=o>e,`b=>,k=i>p3ߌ=>,k=>oBp=i>p3ߌ=>oBp=>/=i>p3ߌ=i>p3ߌ=>/=n>.9=>)`0=>R===t>Ca\=t>Ca\=>R===n>O=>R===>oO=n>O=>o)=>)P=>Opw=As>o<=As>o<=>Opw=n>R=0A=>Opw=>Ca"=n>R=0A=n>R=0A=>Ca"=n>)N=>2 =>䐾@='w> ؏='w> ؏=>䐾@=n>䐾/=>䐾@=ů> ؏`-=n>䐾/=n>䐾/=ů> ؏`-=n>2 `=>2 =>䐾@O='w> ؏Q='w> ؏Q=>䐾@O=n>䐾=>䐾@O=ů> ؏P=n>䐾=n>䐾=ů> ؏P=n>2 P=> =lN>Y=շ>Z' =lN>Y=)O>) 2=շ>Z' =)O>) 2=O>u=շ>Z' =շ>Z' =O>u=}>=}S> `=$O>Z'u=ݷ> =ݷ> =$O>Z'u=з>)M=з>)M=$O>Z'u=>YP=$O>Z'u=O>r=>YP=O>( 8=+O>Wa@5=}>%`=}>%`=+O>Wa@5=>S0=+O>Wa@5=S>♾=>S0=>S0=S>♾=>$[=T>$$=N>S=^>♾=^>♾=N>S=з>WaI=N>S=O>%j=з>WaI=з>WaI=O>%j=l>(G=I>B== O>gאj=>>L =>>L = O>gאj=>ː= O>gאj=GO>B "=>ː=>ː=GO>B "=> ==PO>/:=>L> '=>1Q=>1Q=>L> '= >|d=>L> '=8O>.P= >|d= >|d=8O>.P=Ϸ>-=,O>-0=P>|0=÷>.=÷>.=P>|0=> PW=P>|0=O>1p-=> PW=> PW=O>1p-=>/D=mO> 0A= O>ːn=>B p\=>B p\= O>ːn=ٷ>gא = O>ːn=S>>Lq=ٷ>gא =ٷ>gא =S>>Lq=G>B==?/D=f? PW=? 1p-=? 1p-=f? PW=?{0=f? PW=?.=?{0=?{0=?.=?-0=?-= ?{d=?.P=?.P= ?{d='? '= ?{d=? 1Q='? '='? '=? 1Q=?/:=|?# [= ?S0=?♾=?♾= ?S0=?Va@5= ?S0=?$`=?Va@5=?Va@5=?$`=?( 8=?(G=?VaI=?$j=?$j=?VaI=?S=?VaI=?♾=?S=?S=?♾=?##=?A==?fא =?=Lq=?=Lq=?fא =?ːn=?fא =?A p\=?ːn=?ːn=?A p\=? 0A=? ==?ː=?A "=?A "=?ː=?fאj=?ː=?=L =?fאj=?fאj=?=L =?A==?=?Y' =?u=?u=?Y' =?) 2=?) 2=?Y' =??X=?Y' =? =??X=?r=N?XP=?Y'u=N?XP=?)M=?Y'u=?)M=? =?Y'u=?Y'u=? =? `=O?dw-= ?Mδ= ?C[= ?Mδ=?W+`= ?C[= ?C[=?W+`=?Ǔ6=?W+`=y ?C?=?Ǔ6=?C?=g ?Ǔ`H=*?W+=g ?Ǔ`H=?C[p=*?W+=*?W+=?C[p=?M=?C[p=) ?BwP=?M=u>[`^J=v>+=u>=u>=u>dڒ=u>=u>=u>dڒ=v>0=v>+=u>dڒ=u>=>=>uw+=>=>=>uw+=>d=>9-=>uw+=>aC=>aC=>uw+=>=>ѕ0[=E><#u=v>}jP=v>}jP=E><#u=>|jP=E><#u=>ѕ0[=>Cϕ#[=>|jP=E><#u=>Cϕ#[=>|j=9>Cᘾ=v>}j=>p=9>Cᘾ=>|j=>p=u>=9>Cᘾ=v>}j=9>Cᘾ=u>=u>Oڊ=!M>OWw=u>OA`=>Oڊ=!M>OWw=u>Oڊ=>Oڊ=>OG`=!M>OWw=u>OA`=!M>OWw=>OG`=>OP=3>OP=>O@^=u>OP=>O [=3>OP=u>OP=3>OP=>OP=>O@^=3>OP=>O [==>`=>09= >~@i= >~@i=>09=>=>09=>=>=>=>=ED>㨍=e;>Я==>=_>%x==>=]`> zt=_>%x=_>%x=]`> zt=F> f=]`> zt=?>Z@g=F> f=I>ʨp=ߘ> u=fm>Ht=ߘ> u= > m=fm>Ht=fm>Ht= > m= H>g= > m=E>%h= H>g=E>@l= H>`= >= H>`=fm>*= >= >=fm>*=>0=fm>*=I>f=>0=D>=?>p=C>=?>p=1{>;=C>=1{>;=Ģ>=C>=C>=Ģ>= E>= E> g=C>Z`w=Ģ>ᮍ t=Ģ>ᮍ t=C>Z`w=1{>@x=1{>@x=C>Z`w=?>`=C>Z`w=D> ҁ=?>`=:> g=8>Z`w=>ᮍ t=>ᮍ t=8>Z`w=p>@x=p>@x=8>Z`w=h5>`=8>Z`w=l:> ҁ=h5>`=%:>@=#2>=,H>*0=#2>=u>:=,H>*0=u>:=>z=,H>*0=,H>*0=>z=:>=>d =5>d=.> =.> =5>d=5>pٳ=5>d=.>gcpu=5>pٳ=5>pٳ=.>gcpu=>Ψw=>,=;>d0=>Ќ=;>d0=>nQP=>Ќ=>Ќ=>nQP=;>=>nQP=>dS=;>=}>d=>dR=b>p=b>p=>dR=>0,=>dR=b>`=>0,=>0,=b>`=}>j=y>r=>dк=t;>e0=>dк=t;>eཱུ=t;>e0=t;>e0=t;>eཱུ=>PĽ=t;>eཱུ=y>e=>PĽ=u>O=ӹ> =w>އ=ӹ> =]>򭎾P=w>އ=]>򭎾P=$w>5=w>އ=w>އ=$w>5=>W70F=>4ʦ=>6=>ciB=>ciB=>6=*>:OЯ=*>:OЯ=>6=>`=>6=O>4=>`=H>=&>.=>@=>@=&>.=bG>KMp =&>.=W>򏍾@=bG>KMp =bG>KMp =W>򏍾@=>P =J>z=>[=h>WRP=h>WRP=>[=9I>O0=>[=g>w!=9I>O0=9I>O0=g>w!=/> =K;>Rb=>EP={>^錾 =>EP=>={>^錾 =>=>P={>^錾 ={>^錾 =>P=D>= >Č= >[=K,>lE0= >[=:>=K,>lE0=K,>lE0=:>=W>'+=:>=04>P=W>'+=?>PTg=>@wf=;0>Oq=>@wf= >=_r=;0>Oq=;0>Oq= >=_r=<>6À= >=_r=hG>mK=<>6À=w->Q`te=T>MU s=>Kl=>Kl=T>MU s=%>Q`^w=T>MU s=j>\}@3=%>Q`^w=%>Q`^w=j>\}@3=9S>=> I=W>w y=l>tK=W>w y=>`o=> Ռj=>`o=E>g=> Ռj=:>˸f=)>$`Gz=>o }=>o }=)>$`Gz=U>Om=)>$`Gz=> m=U>Om=U>Om=> m=i>dLd=X>-=؃>7=b>I=b>I=؃>7=>ʌ=؃>7=v>=>ʌ=>ʌ=v>=8h><@i=>#Pū=>k@=>H=>H=>k@=&>An=>k@=5>m=&>An=&>An=5>m=>\P=>{p=B>*=>1 =>1 =B>*=S>G`=B>*=j>0=S>G`=S>G`=j>0=>>={>/pϹ=4>=>|F}=4>=">P=>|F}=>|F}=">P=n>O=">P='*>s@=n>O=>r=5u>G`{f=>}`@_=>F=5u>G`{f=>r=T>!o0=>F=>r=>F=T>!o0=J>u.p=@>^K^=X>a@v=W~>)[g=W~>)[g=X>a@v=3>⇚`=X>a@v=D?>>=3>⇚`=X>a@v=;>n>=D?>>=;E>D`=X>=D>i嗾@=D>i嗾@=X>=a!>0=X>=@>nЎ=a!>0=gC>=a!>0=@>nЎ=%;>n=>̀p= >&x0O=G>6㚾0= >&x0O=>̀p=>̀p=:>nPA=G>6㚾0=G>6㚾0=:>nPA=g;>!0Z=k/>2@=zD> l=]>`s=]>`s=zD> l=4E>n?=]>`s=Y>C,ne=k/>2@=`E>cO _=Y>C,ne=]>`s=.%>2@=<:> l=>`s=>`s=<:> l=:>n?=>`s=>B,ne=.%>2@=";>cO _=>B,ne=>`s=Q>2h=<> p=@>=T=@>=T=<> p=;>nP?=@>=T=>3=Q>2h==>3)1=>3=@>=T=[>2h=F> p=~>=T=~>=T=F> p=F>nP?=~>=T=$>3=[>2h=(H>3)1=$>3=~>=T=n>O=>O=G>O=>O F=n>O=G>O=>O F=G>O=m>O F=M>O`;=m>O F=G>O=#?#|৵=c?#=?DZ=c?#= ?˧u=?DZ=?DZ= ?˧u= ?Iō=x>&ʍ &=#?7= ?̀=}?ę`D=\:?ݭZ=\:?ݭZ==?9ߴ=]?~8=%>6Q=| >Iō=#?7=x>&ʍ &=w?ɷ=#?7=w?ɷ=}?ę`D=#?7=#?7=}?ę`D= ?̀=\:?ݭZ=]?~8= ?̀=??~=_>?፾0"=2?=_>?፾0"=? ㍾h=2?=2?=? ㍾h=}?=? ㍾h=)0?獾=}?=}?=)0?獾=2?p=2?p=$>Սe=>q΍=$>Սe=>nߍ/=>q΍=>q΍=>nߍ/=>8 ٶ=?YB=??~=f?x@T=f?x@T=??~=,'?=,'?=??~=2?=>q΍=>8 ٶ=_?>lp7=,'?=2?=N?3~=N?3~=2?=?}=2?=}?=?}=?}=}?=dJ?~-=}?=2?p=dJ?~-=2?p=>q΍=dJ?~-=dJ?~-=>q΍=_?>lp7=> |0='+?x0.=>S='+?x0.=)X?fk$=?,K =?Mw9=b?n=t/?Eۮ=> |0=>S=W>f=>S='+?x0.=$?xd@='+?x0.=?,K =$?xd@=?,K =)X?fk$= ?lP= ?lP=)X?fk$=|?t\@5=|?t\@5=)X?fk$=?Mw9=t/?Eۮ=b?n=v}?T,P9=$?xd@=?,K = ?lP=|?t\@5=?Mw9=A0?sp=?Mw9=t/?Eۮ=A0?sp=A0?sp=t/?Eۮ=v}?T,P9=$?xd@= ?lP=|?t\@5=A0?sp=v}?T,P9=?r`b=$>d&k=W>f=>S=|?t\@5=A0?sp=? &p=? &p=A0?sp=Vp?%@=Vp?%@=A0?sp=?r`b=$>d&k=>S=$?xd@=$?xd@=|?t\@5=?_0=?_0=|?t\@5=? &p=Q>c<=> |0=W>f=Vp?%@=?r`b=?mw=Q>c<=W>f=>ip=W>f=$>d&k=>ip=>ip=$>d&k=f>@f=$>d&k=$?xd@=f>@f=f>@f=$?xd@=?_0=?_0=? &p=?@=? &p=Vp?%@=?@=?@=Vp?%@=?mw=?vP=@O?=b?OP@=@O?=?d?)}=b?OP@=?d?)}=%>r=b?OP@=QZ?v?=-?y=c?Q%9=c?Q%9=-?y=o!?{#N=-?y=@O?=o!?{#N=o!?{#N=@O?=?vP=?vP=b?OP@=.?N&-=b?OP@=%>r=A>00=%>r=f>f{T=A>00=A>00=f>f{T=P>Ɏ Y=c?Q%9=o!?{#N=?"`=.?N&-=b?OP@=+t? 0(=+t? 0(=b?OP@=>঻=b?OP@=A>00=>঻=Q?|6=o!?{#N=?vP=?"`=o!?{#N=Q?s@=o!?{#N=Q?|6=Q?s@=Q?|6=?vP=u?0=u?0=?vP=+t? 0(=?vP=.?N&-=+t? 0(=+t? 0(=>঻=n>b$~=A>00=P>Ɏ Y=>঻=?^iv=c?Q%9=?"`=Q?s@=Q?|6=u?0=u?0=+t? 0(=̨?g=>(s=+t? 0(=n>b$~=n>b$~=>঻=>(s=?^iv=?"`=^?lb`=?"`=Q?s@=^?lb`=Q?s@=u?0=^?lb`=̨?g=+t? 0(=>(s=>(s=>঻=P>Ɏ Y=? ױ=> =V&? => =? ױ=\!? =\!? =4? q=> => =4? q=,u> =>j=$>j=&?j=&?j=&?j=7?j޷=$>j=7?j޷=&?j=&?j=7?j޷=>j= ?Ҟ= ?V= ?W= ?S!= ?+\l= ?Q0= ?׶= ?+\l= ?S^= ?S^= ?+\l= ?S!= ?Q0= ?V= ?S!= ?g= ?= ?|j= ?|j= ?= ?(= ?S^= ?= ?g= ?V= ?Ҟ= ?S!= ?|jk= ?V= ?g= ?W= ?V= ?|jk= ?VP= ?S^= ?g= ?Q0= ?׶= ?VP= ?׶= ?S^= ?VP= ?V= ?Q0= ?VP=>^=>1=>/Ў`=>(=>|j=>i0=>e=>(=>i0=>e=>i0=>1=>e=>1=>^=>^=>i=>W=>W=>i=>|jk=>/Ў`=>j@=>j=>j@=>/Ў`=>i0=>/Ў`=>1=>i0=>ő@=>i=>/Ў`=>/Ў`=>i=>^=?S^=?= =?8Q =?V =?e@`=?8Q =?8Q =?e@`=?S^=?V =?'V=?e@`=?\@=?e@`=?'V=?m0d=?e@`=?\@=?m0d=?X=?e@`=?S^=?= =?8Q =?V =?e@`=?8Q =?8Q =?e@`=?S^=?V =?'V=?e@`=?\@=?e@`=?'V=?m0d=?e@`=?\@=?m0d=?X=?e@`=O>X=O>m0d=O>_k=O>_k=O>m0d=O>!`=O>!`=O>V=O>_k=O>_k=O>V=O>_k0=O>_k0=O>V=O>V@=O>m=O>V@=O>!`0=O>V@=O>m=O>_k0=O>m=O> '=O>_k0=o>X=o>m0d=o>_k=o>_k=o>m0d=o>!`=o>!`=o>V=o>_k=o>_k=o>V=o>_k0=o>_k0=o>V=o>V@=o> '=o>_k0=o>!`0=o>V@=o>!`0=o>_k0=o>!`0=o>m=o> '= ? '= ?m= ?^k0= ?^k0= ?m= ? `0= ? `0= ?V = ?^k= ? `0= ?^k= ?^k0= ?V৆= ?^k= ?V = ?m0d= ?V৆= ? `= ?V৆= ?m0d= ?^k= ?m0d= ?X= ?^k= o>=y,>|?=@&>:=e> ͳ= o>=@&>:=|>:፾= o>=e> ͳ=|>:፾=>{8= o>=>_Ӎ`Ǵ=i>vض=<> =+>|?=i>vض=>_Ӎ`Ǵ=<> =>{0J=>D=>{0J=<> =i>vض=Y>⍾`s=>80=>'=>=>G=l">썾@=l">썾@=>G=>'=>G=Y>⍾`s=>'=>80=v>=>'=v>=>㍾=P>gP"=l">썾@=>'= Y>y=B>縍 =>=}>𓍾`x=}>𓍾`x=>=E>杍3=>=l">썾@=E>杍3=E>杍3=l">썾@= Y>y=>'=v>=P>gP"=}>𓍾`x=E>杍3=I>}+=E>杍3= Y>y=I>}+= Y>y=>'=>=>=>'=P>gP"=&:>⍾=>p@=">ҍ *=`n>썾=>&ō=>=>&ō=>rō=>=>=>rō=l;>c =>rō=&:>⍾=l;>c =&:>⍾=">ҍ *=l;>c =">ҍ *=>p@=>ˍ0=>p@=>%೼=>ˍ0=>ˍ0=>%೼=>ε =>%೼=KB>[Ǎ=>ε =_>}C=`n>썾=>~@=>~@=`n>썾=>=>=l;>c =?>}Z=l;>c =">ҍ *=`>}p=">ҍ *=>ˍ0=`>}p=>~@=>=?>}Z=?>}Z=l;>c =`>}p=`>}p=>ˍ0=>D!=>ˍ0=>ε =>D!=>_&?=B>}-=>%{@ =4>=|pd=>=e>, ̩=e>, ̩=>=v>\n =v>\n =>=Ҝ>75E=>=E>}zܱ=Ҝ>75E=Ҝ>75E=E>}zܱ=>3hPݴ=>%{@ =4>=|pd=@>n20=@>n20=4>=|pd=e>, ̩=Ҝ>75E=>3hPݴ=nU>p=>_&?=>%{@ =V>2=>%{@ =@>n20=V>2=V>2=@>n20=[>/=@>n20=e>, ̩=[>/= w>O=e>, ̩=> =e>, ̩=v>\n => =v>\n =Ҝ>75E=> => =Ҝ>75E=nU>p=[>/=e>, ̩= w>O=&>c$ ?=>_&?=V>2=> =nU>p=>w"-= w>O=> =>F`T=>w"-=nU>p=K>(=nU>p=>3hPݴ=K>(=&>c$ ?=V>2=>hr=>hr=V>2=f>U``=f>U``=V>2=[>/=[>/= w>O=f>U``=>F`T=> =>w"-=>w"-=K>(=q>$v@=f>U``= w>O=b<>e=b<>e= w>O=>F`T=>F`T=>w"-=q>$v@=q>$v@=K>(=>3hPݴ=U>vL=>s_=+>y\@׹=X>+Э=>| ŵ=_>T&=>| ŵ= >BjP.=_>T&=_>T&= >BjP.=}>b# =}>b# = >BjP.=!>+== >BjP.=U>vL=!>+==!>+==U>vL=LC>R ==U>vL=+>y\@׹=LC>R ==LC>R ==+>y\@׹=>|n޺=>|n޺=+>y\@׹=V>Z]=+>y\@׹=>s_=V>Z]=>| ŵ=X>+Э=>r0?=!>+==LC>R ==>Cি=>r0?=X>+Э= > P,=X>+Э=_>T&= > P,= > P,=_>T&=}>b# =}>b# =!>+==>=>=!>+==>Cি=>Cি=LC>R ==>|n޺=>Z@=>r0?= > P,= > P,=}>b# =>@m=>@m=}>b# =>=>Z@= > P,=>@m=>=>Cি=1>*@p=>Cি=>|n޺= >p=7>l=>@m=>=7>l=>=1>*@p=1>*@p=>Cি=>3f8=>3f8=>Cি= >p=>|n޺=V>Z]=>q=>r0?=>Z@=p>}=>Z@=>@m=7>l=7>l=1>*@p=>3f8= >p=>|n޺=>q=#> p= > 0=> p=> p=^4> `=#> p=P>> => 0 =#> p=#> p=> 0 = > 0=4>j=u>j=>j=4>j=>j=4>j=>j=>j=4>j=4>j=>j=u>j=o>S^=o>J.2=o>X=o>S!=o>J.2=o>S^=o>S!=o>Ҟ=o>g=o>Ҟ=o>W=o>g=o>S^=o>g=o>=o>(=o>g=o>}j=o>X=o>p쏾1=o>U =o>U =o>p쏾1=o>g=o>J.2=o>S!=o>X=o>X=o>S!=o>p쏾1=o>S!=o>g=o>p쏾1=o>g=o>S^=o>VP=o>S^=o>X=o>VP=o>X=o>U =o>VP=o>W=o>}jk=o>g=o>=o>g=o>(=u>ɑ}=u>ю=u>j=u>d5=u>ɑ}=u>j=v>i=v>W=v>}jk=u>d5=u>j=u>]k`=v>(=u>m=v>}j=u>m=v>%j=v>}j=u>ю=u>j=u>j=u>j=u>ю=v>i=u>d5=v>i=u>ю=v>W=v>i=u>Ҟ=v>i=u>d5=u>Ҟ=u>]k`=u>j=v>(=u>j=u>m=v>(=u>j=v>=4>j=v>=4>=4>j=v>=u>j=4>=u>j=4>j=4>=4>VP=o>VP=4>V=o>VP=o>V=4>V=o>S^=o>S!=u>S^=o>S!=u>S!=u>S^=4>V=o>V=4>͉=o>V=o>͉=4>͉=4>͉P=o>͉P=4>VP=o>͉P=o>VP=4>VP=4>}j=4>}j+=o>}j=4>}j+=v>}j+=o>}j=o>}j=v>}j+=o>}jk=v>}j+=v>}jk=o>}jk=o>}j=v>}j=o>}jn=v>}j=v>}jT=o>}jn=o>}jn=v>}jT=4>}jn=v>}jT=4>}jT=4>}jn=o>}j=o>2=v>}j=o>2=v>2=v>}j=o>@L=o>}jk=v>@L=o>}jk=v>}jk=v>@L=o>Ҟ=o>&'@L=u>Ҟ=o>&'@L=v>&'@L=u>Ҟ=o>&'2=o>=v>&'2=o>=u>=v>&'2=o>S!=o>Ҟ=u>S!=o>Ҟ=u>Ҟ=u>S!=o>=o>S^=u>=o>S^=u>S^=u>=o>2=o>&'2=v>2=o>&'2=v>&'2=v>2=o>&'@L=o>@L=v>&'@L=o>@L=v>@L=v>&'@L=v>=v>}j+=4>=v>}j+=4>}j+=4>=v>}jT=v>=4>}jT=v>=4>=4>}jT=?S!=?S^= ?S!=?S^= ?S^= ?S!=?m=?m= ?m=?m= ?m= ?m=?mP=?m0d= ?mP=?m0d= ?m0d= ?mP=?m0d=?@L= ?m0d=?@L= ?@L= ?m0d=?2=?m= ?2=?m= ?m= ?2=?%'@L=?Ҟ= ?%'@L=?Ҟ= ?Ҟ= ?%'@L=?=?%'2= ?=?%'2= ?%'2= ?=?S^=?= ?S^=?= ?= ?S^=?Ҟ=?S!= ?Ҟ=?S!= ?S!= ?Ҟ=?%'2=?2= ?%'2=?2= ?2= ?%'2=?@L=?%'@L= ?@L=?%'@L= ?%'@L= ?@L=?2=?mP= ?2=?mP= ?mP= ?2=?m=?2 = ?m=?2 = ?2 = ?m=>S^=>S!=o>S^=>S!=o>S!=o>S^=>m=>m=o>m=>m=o>m=o>m=>m0d=>mP=o>m0d=>mP=o>mP=o>m0d=>@L=>m0d=o>@L=>m0d=o>m0d=o>@L=>m=>2=o>m=>2=o>2=o>m=>Ҟ=>&'@L=o>Ҟ=>&'@L=o>&'@L=o>Ҟ=>&'2=>=o>&'2=>=o>=o>&'2=>S!=>Ҟ=o>S!=>Ҟ=o>Ҟ=o>S!=>=>S^=o>=>S^=o>S^=o>=>2=>&'2=o>2=>&'2=o>&'2=o>2=>&'@L=>@L=o>&'@L=>@L=o>@L=o>&'@L=>2 =>m=o>2 =>m=o>m=o>2 =>mP=>2=o>mP=>2=o>2=o>mP=O>S^=O>S!=>S^=O>S!=>S!=>S^=O>m=O>m=>m=O>m=>m=>m=O>m0d=O>mP=>m0d=O>mP=>mP=>m0d=O>@L=O>m0d=>@L=O>m0d=>m0d=>@L=O>m=O>2=>m=O>2=>2=>m=O>Ҟ=O>&'@L=>Ҟ=O>&'@L=>&'@L=>Ҟ=O>&'2=O>=>&'2=O>=>=>&'2=O>S!=O>Ҟ=>S!=O>Ҟ=>Ҟ=>S!=O>=O>S^=>=O>S^=>S^=>=O>2=O>&'2=>2=O>&'2=>&'2=>2=O>&'@L=O>@L=>&'@L=O>@L=>@L=>&'@L=O>2 =O>m=>2 =O>m=>m=>2 =O>mP=O>2=>mP=O>2=>2=>mP=?S!=?S^=?S!=?S^=?S^=?S!=?mP=?m0d=?mP=?m0d=?m0d=?mP=?m=?m=?m=?m=?m=?m=?2=?m=?2=?m=?m=?2=?m0d=?@L=?m0d=?@L=?@L=?m0d=?=?%'2=?=?%'2=?%'2=?=?%'@L=?Ҟ=?%'@L=?Ҟ=?Ҟ=?%'@L=?S^=?=?S^=?=?=?S^=?Ҟ=?S!=?Ҟ=?S!=?S!=?Ҟ=?%'2=?2=?%'2=?2=?2=?%'2=?@L=?%'@L=?@L=?%'@L=?%'@L=?@L=?2=?mP=?2=?mP=?mP=?2=?m=?2 =?m=?2 =?2 =?m=>=>j=&?=>j=&?j=&?=>j=>=&?j=>=&?=&?j=&?V= ?V=&?VP= ?V= ?VP=&?VP= ?S!= ?S^=>S!= ?S^=>S^=>S!=&?̉= ?̉=&?V= ?̉= ?V=&?V=&?VP= ?VP=&?̉P= ?VP= ?̉P=&?̉P= ?|jk=>|jk= ?|j=>|jk=>|j+= ?|j= ?|j=>|j+=&?|j=>|j+=&?|j+=&?|j=&?|jn=&?|jT= ?|jn=&?|jT=>|jT= ?|jn= ?|jn=>|jT= ?|j=>|jT=>|j= ?|j= ?2= ?|j=>2= ?|j=>|j=>2= ?|jk= ?@L=>|jk= ?@L=>@L=>|jk= ?%'@L= ?Ҟ=>%'@L= ?Ҟ=>Ҟ=>%'@L= ?= ?%'2=>= ?%'2=>%'2=>= ?S^= ?=>S^= ?=>=>S^= ?Ҟ= ?S!=>Ҟ= ?S!=>S!=>Ҟ= ?@L= ?%'@L=>@L= ?%'@L=>%'@L=>@L= ?%'2= ?2=>%'2= ?2=>2=>%'2=>=>|jT=&?=>|jT=&?|jT=&?=>|j+=>=&?|j+=>=&?=&?|j+=&?̉P= ?̉P=&?|jn= ?̉P= ?|jn=&?|jn= ?|j= ?̉=&?|j= ?̉=&?̉=&?|j=g?9ߏJ=g?9ߏP4=g?&V=g?9ߏP4=g?&)=g?&V=g?&V=g?&)=g?nJ=g?&)=g?nP4=g?nJ=>,?&)=g?&)=>,?nP4=g?&)=g?nP4=>,?nP4=>,?&V=g?&V=>,?9ߏJ=g?&V=g?9ߏJ=>,?9ߏJ=>,?nJ=g?nJ=>,?&V=g?nJ=g?&V=>,?&V=>,?9ߏP4=g?9ߏP4=>,?&)=g?9ߏP4=g?&)=>,?&)=>,?nP4=g?nP4=>,?nJ=g?nP4=g?nJ=>,?nJ=>,?9ߏJ=g?9ߏJ=>,?9ߏP4=g?9ߏJ=g?9ߏP4=>,?9ߏP4=u>Dϕ#[=u>#[=>Cϕ#[=u>#[=>#[=>Cϕ#[=u>g=u>gP=>f=u>gP=>fP=>f=u>gڊ=u>gF=>fڊ=u>gF=>fF=>fڊ=v>}j=v>}j=>|j=v>}j=>|j=>|j=v>}jk=v>}jP=>|jk=v>}jP=>|jP=>|jk=u>&=u>=>&=u>=>=>&=u>=u>=>=u>=>=>=u>=u>Ҟ=>=u>Ҟ=>Ҟ=>=u>󍾠=u>&=>󍾠=u>&=>&=>󍾠=v>}j=v>2=>|j=v>2=>2=>|j=v>@L=v>}jk=>@L=v>}jk=>|jk=>@L=v>&'2=u>=>%'2=u>=>=>%'2=u>Ҟ=v>&'@L=>Ҟ=v>&'@L=>%'@L=>Ҟ=v>2=v>&'2=>2=v>&'2=>%'2=>2=v>&'@L=v>@L=>%'@L=v>@L=>@L=>%'@L=u>#[=u>OA`=>#[=u>OA`=>OA`=>#[=u>O@^=u>󍾠=>O@^=u>󍾠=>󍾠=>O@^=u>gF=u>OF=>fF=u>OF=>OF=>fF=u>O=u>g=>O=u>g=>f=>O=} ?g=} ?j=} ?V=} ?V=} ?j=} ?VP=} ?j=} ?cj=} ?VP=} ?VP=} ?cj=} ? 0=m )?=m )?j=m )?VP=m )?VP=m )?j=m )?V=m )?j=m )?cjp=m )?V=m )?V=m )?cjp=m )? =?ɑ}=?ˎ =?j=?\X@h=?ɑ}=?j=?ˎ =?\X@h=?S!=?i=?W=?NP=?W=?|jk=?NP=?S!=?\X@h=?S^=?S^=?\X@h=?=?\X@h=?=?=?(=?j=?|j=?j=?$j=?|j=?jŎ=?j=?ˎ =?ˎ =?j=?j=? =?jdP$=?i=?ˎ =?jdP$=?j=?j=?jdP$=? =?lE=?xЄ=?j=?=?i=?S!=?S!=?i=?ˎ =?i=?jdP$=?ˎ =?\X@h=?j=?=?=?j=?lE=?j=?xЄ=?lE=?|jk=?i=?NP=?i=?=?W=?W=?=?Ҟ=?=?S!=?Ҟ=?=?=?(=?=?j=?(=?=?lE=?j=՚?A=՚?p%=՚?0j=՚?S^=՚?θ=՚?A=՚?θ=՚?p%=՚?A=՚?őɮ=՚?θ=՚?S!=՚?S!=՚?θ=՚?S^=՚?S!=՚?yŐF=՚?@ =՚?g=՚?"P=՚?VP=՚?VP=՚?"P=՚? =՚? =՚?"P=՚?=՚?S!=՚?Ҟ=՚?=՚?Ҟ=՚?d, =՚?=՚?S=՚?=՚?d, =՚?=՚?S=՚?g=՚?S=՚?d, =՚?g=՚?S^=՚? =՚?=՚?(=՚?S=՚?|j=՚?S=՚?"P=՚?g=՚? Vϊ=՚?g=՚?V=՚?A=՚?0j=՚? Vϊ=՚?0j=՚?@ =՚? Vϊ=՚? Vϊ=՚?yŐF=՚?g=՚?őɮ=՚?S!=՚?0j=՚?0j=՚?S!=՚?@ =՚?S!=՚?=՚?yŐF=՚?yŐF=՚?=՚?g=՚? =՚?S^=՚?VP=՚?S^=՚?A=՚?VP=՚?A=՚? Vϊ=՚?VP=՚?d, =՚?|jk=՚?g=՚?|jk=՚?d, =՚?W=՚?d, =՚?Ҟ=՚?W=՚?S=՚?g=՚?|j=՚?=՚?"P=՚?(=՚?"P=՚?S=՚?(=} ?j=?j=Ǹ?j=} ?j= ?j }=} ?j=N?jۼ=?jP=Ǹ?j=Ǹ?j= ?j }=} ?j=} ?j=9?ja=?j= ?j }=9?ja=} ?j=Ϫ? ?=qP? = ? =Ϫ? ?=C? 0=qP? =S? :=}? =Ϫ? ?=B? @ƻ=Ϫ? ?==? = ? =? =Ϫ? ?=}? =? 0 =Ϫ? ?=? ==? =Ϫ? ?=Ϫ? ?=? 0 =C? 0=Ϫ? ?=B? @ƻ=S? :=4?zo=p?}0=?^| =?^| =3?}@=a?G|P>=a?G|P>=,?}@S=F?D Ҿ=,?}@S=A?}=F?D Ҿ=F?D Ҿ=A?}=J?YP=A?}=|?} o=J?YP=J?YP=|?} o=Y?x\@׹=|?} o=M?} ^=Y?x\@׹=Y?x\@׹=M?} ^=D?|p@=?{@=?~|="&?1 A="&?1 A=?~|=?+Э=?~|=?|=?+Э=?+Э=?|=K?S&=?|=4?zo=K?S&=4?zo=?^| =K?S&=K?S&=?^| =!?a# =!?a# =?^| =t?+==?^| =a?G|P>=t?+==t?+==a?G|P>=F?D Ҿ=F?D Ҿ=J?YP=mw?+u=J?YP=Y?x\@׹=mw?+u=mw?+u=Y?x\@׹=9?"и=9?"и=Y?x\@׹=)?% B=Y?x\@׹=D?|p@=)?% B="&?1 A=?+Э=XT?q0?=t?+==F?D Ҿ=?Bি=F?D Ҿ=mw?+u=?Bি=XT?q0?=?+Э=[? P,=?+Э=K?S&=[? P,=[? P,=K?S&=!?a# =!?a# =t?+==?=?=t?+==?Bি=?Bি=mw?+u= ?͹=mw?+u=9?"и= ?͹=P?#ڸ=XT?q0?=[? P,=[? P,=!?a# =U?`=U?`=!?a# =?= ?͹=9?"и=A ?9 @=9?"и=)?% B=A ?9 @=P?#ڸ=[? P,='?/I='?/I=[? P,= ?1ؿ= ?1ؿ=[? P,=U?`=?=?Bি=+?*@p=?Bি= ?͹=SB?+:= ?1ؿ=U?`=??f=??f=U?`=?=?df=?=+?*@p=+?*@p=?Bি=?2=?2=?Bি=SB?+:=?2=SB?+:=T?g= ?͹=A ?9 @= ?f`= ?f`=A ?9 @= ?1g?=>u?i?=XT?q0?=7o?h=XT?q0?=P?#ڸ=7o?h=7o?h=P?#ڸ=6?hh=6?hh=P?#ڸ='?/I='?/I= ?1ؿ=6?hh=6?hh= ?1ؿ=?iK=?i0?= ?1ؿ=??f=??f=?=?Si@x=?Si@x=?=?df=?df=+?*@p=-2?Si=-2?Si=+?*@p=#?Hkp=+?*@p=?2=#?Hkp=#?Hkp=?2=T?g=T?g=SB?+:=J?kP=SB?+:= ?͹=J?kP=J?kP= ?͹= ?f`=?iK= ?1ؿ=?i0?=-?^&?=>?}-=D??'=>?}-=C\?v}Ͱ=D??'=D??'=C\?v}Ͱ=S?{>=?<|pd=Ǯ?l}=?@П=?@П=Ǯ?l}=1?qY=Ǯ?l}=!?}=1?qY=1?qY=!?}=TN?Y=!?}=#v?}=TN?Y=TN?Y=#v?}=ԝ?0? =#v?}=w?}=ԝ?0? =ԝ?0? =w?}=?Q?Pͮ=w?}= ?%r=?Q?Pͮ=?Q?Pͮ= ?%r=`?Y=`?Y= ?%r=?A==?A== ?%r=2?|>=D??'=S?{>=?m20=S?{>=?<|pd=?m20=?m20=?<|pd=#!?=#!?=?<|pd=?@П=?@П=1?qY=8?09=1?qY=TN?Y=8?09=8?09=TN?Y=ԝ?0? =?Q?Pͮ=`?Y= ?T'@$=`?Y=?A== ?T'@$=-?^&?=D??'=7?2=D??'=?m20=7?2=7?2=?m20=?=?m20=#!?=?=#!?=?@П=}?!0M=}?!0M=?@П=`? =?@П=8?09=`? =8?09=ԝ?0? =`? =`? =ԝ?0? = ?=ԝ?0? =?Q?Pͮ= ?=?Q?Pͮ= ?T'@$= ?= ?T'@$=?A==)H?==?=#!?=}?!0M= ?= ?T'@$=)H?== ?b$ ?=-?^&?=7?2=w?$=?=}?!0M=`? = ?=?v"-=7?2=?=?)`g=?)`g=?=w?$=}?!0M=`? =J?19=?v"-= ?=Z?(= ?=)H?==Z?(= ?b$ ?=7?2=S ?di=S ?di=7?2=1?L?v=1?L?v=7?2=?)`g=?)`g=w?$=?eG=w?$=}?!0M=J?19=J?19=`? =?v"-=?v"-=Z?(=K?g=Z?(=)H?==Aw?h?=` ?i?= ?b$ ?=S ?di=S ?di=1?L?v=?hͭ=1?L?v=?)`g=~?i\=~?i\=?)`g=?eG=?eG=w?$=Q?i`=Q?i`=w?$=?2i=?2i=w?$=J?19=B?i=J?19=d?Ei;=J?19=?v"-=d?Ei;=d?Ei;=?v"-=?)kPī=?)kPī=?v"-=K?g=K?g=Z?(=Ol?i0L=?hͭ=1?L?v=~?i\=?2i=J?19=B?i=Ol?i0L=Z?(=Aw?h?=k'?ύ?=iD? ?=<?䍾`·=?捾B=? ` =?獾=?獾=_?(ݍP=h?⍾=h?⍾=?ލ =t?ҍ *=?ލ = ?㍾=t?ҍ *=F?j鍾`X=:?ݍ=D?JٍPU=D?JٍPU=:?ݍ=q?卾=k'?ύ?=<?䍾`·=m?ÍPU=m?ÍPU=<?䍾`·=?=<?䍾`·=?捾B=?=?捾B=?獾=?=?=?獾= ?b =?獾=h?⍾= ?b =h?⍾=t?ҍ *= ?b =t?ҍ *= ?㍾=H?wÍk=H?wÍk= ?㍾=3?P= ?㍾=F?j鍾`X=3?P=3?P=F?j鍾`X=L?' =F?j鍾`X=D?JٍPU=L?' =L?' =D?JٍPU=H??_R=D?JٍPU=q?卾=H??_R=q?卾=?䍾0@=H??_R=k'?ύ?=m?ÍPU=P?}C=P?}C=m?ÍPU=?~@=?~@=m?ÍPU=?=?= ?b ='?}ѿ='?}ѿ= ?b =*?}= ?b =t?ҍ *=dh?~I=dh?~I=t?ҍ *=-?~P=t?ҍ *=H?wÍk=-?~P=-?~P=H?wÍk=3?P=?~@=?=?}`/=?='?}ѿ=?}`/=*?}= ?b =dh?~I=-?~P=3?P=w?}`ļ=w?}`ļ=3?P=^?}۹=3?P=L?' =^?}۹=^?}۹=L?' =>?n~ T=L?' =H??_R=>?n~ T=?፾==2?捾 "=V?S⍾@=ߢ?Lߍg=?ݍ=3?XٍpD=?⍾`s=L?׍=0?'Ǫ=0?'Ǫ=L?׍=?捾P=L?׍=w? )=?捾P=?፾==V?S⍾@=^?~ˍg=V?S⍾@=ߢ?Lߍg=^?~ˍg=^?~ˍg=ߢ?Lߍg=?ˍ=?ˍ=ߢ?Lߍg=3?XٍpD=3?XٍpD=?ݍ=?]ʍM=?ݍ=?⍾`s=?]ʍM=?]ʍM=?⍾`s=0?'Ǫ=?捾P=?ߍR=?|=?|=?ߍR=-?F獾=-?F獾=H?㍾= ?>=?ˍ=3?XٍpD=$l?`@*=3?XٍpD=?]ʍM=$l?`@*=AI?>`@=?፾==rR?7(=?፾==^?~ˍg=rR?7(=rR?7(=^?~ˍg=(?坍3=^?~ˍg=?ˍ=(?坍3=(?坍3=?ˍ=$l?`@*=$l?`@*=?]ʍM=o?~?=o?~?=?]ʍM=0?'Ǫ=0?'Ǫ=?捾P=?|=?|=-?F獾=?=-?F獾= ?>=?=rR?7(=(?坍3=d?~=d?~=(?坍3=8?}+=(?坍3=$l?`@*=8?}+=o?~?=0?'Ǫ=p?} ϫ=0?'Ǫ=?|=p?} ϫ=p?} ϫ=?|=0?}=0?}=?|=?=;?n=??uض=? =y?|?=??uض=;?n=;?n=7y? ?=y?|?=? =?{0J=6?D=?{0J=? =??uض=ښ?=y?|?=uv?:=%? ͳ=ښ?=uv?:=? =ښ?=%? ͳ=? =1?{8=ښ?=? =g? `?=1?{8=Y'? '=Y'?m=Y'?=Y'?=Y'?m=Y'? `0=Y'? `0=Y'?0=Y'?x`=Y'?V =Y'?0=Y'? `0=Y'?BՏl=Y'?x`=Y'?0=Y'?=Y'? `0=Y'?S^=Y'? `0=Y'?x`=Y'?S^=Y'?S^=Y'?x`=Y'?S!=Y'?BՏl=Y'?0=Y'?V =Y'?S!=Y'?x`=Y'?V =Y'?x`=Y'?BՏl=Y'?V =Y'?S!=Y'?@{=Y'?Ҟ=Y'?V৆=Y'?@{=Y'?V =Y'?Ҟ=Y'?@{=Y'?V৆=Y'?V =Y'?@{=Y'?S!=Y'?m0d=Y'?V৆=Y'? `=Y'?V৆=Y'?m0d=Y'?Ҟ=Y'?m0d=Y'?X=Y'?Ҟ=(?1 P=(?䐾=F'?؏P=F'?؏P=(?䐾=['?䐾@O=(?䐾=(?؏Q=['?䐾@O=['?䐾@O=(?؏Q=p'?1 =(?1 `=(?䐾/=F'?؏`-=F'?؏`-=(?䐾/=['?䐾@=(?䐾/=(?؏=['?䐾@=['?䐾@=(?؏=p'?1 =(?)N=(?Q=0A=b'?Ba"=b'?Ba"=(?Q=0A=\'?Opw=(?Q=0A=(?n<=\'?Opw=\'?Opw=(?n<=S'?)P=(?)=(?O=9'?n(?.=(?{0=(?{0=>(?.=(?-0=C(?-=a(?{d=(?.P=(?.P=a(?{d={(? '=a(?{d=Q(? 1Q={(? '={(? '=Q(? 1Q=(?/:=(?# [=_(?S0=*(?♾=*(?♾=_(?S0=(?Va@5=_(?S0=(?$`=(?Va@5=(?Va@5=(?$`=#(?( 8=(?(G=D(?VaI=(?$j=(?$j=D(?VaI=(?S=D(?VaI= (?♾=(?S=(?S= (?♾=e(?##=(?A==I(?fא =(?=Lq=(?=Lq=I(?fא =(?ːn=I(?fא =6(?A p\=(?ːn=(?ːn=6(?A p\=(? 0A="(? ==S(?ː=(?A "=(?A "=S(?ː=(?fאj=S(?ː=Q(?=L =(?fאj=(?fאj=Q(?=L =6(?A==(?=F(?Y' =(?u=(?u=F(?Y' =(?) 2=(?) 2=F(?Y' =(?X=F(?Y' =(? =(?X=[(?r=(?XP=(?Y'u=(?XP=E(?)M=(?Y'u=E(?)M=K(? =(?Y'u=(?Y'u=K(? =(? `=%?jŎ=%?s 0j=%?ʎ`=%?S!=%?s 0j=%?jŎ=%?@9=%?s 0j=%?S!=%?(=%?|j=%?d,=%?|j=%?i0=%?d,=%?(=%?d,=%?i0=%?e=%?(=%?=%?(=%?i0=%?=%?e=%?=%?@9=%?e=%?@9=%?S!=%?S!=%? =%?Ҟ=%?d, =%?W=%? =%?d, =%? =%?i=%?Ҟ=%? =%?W=%?|jk=%?d, =%?i=%?W=%?d, =%?|jk=%?ʎ`=%?j=%?j=%?ʎ`=%?ُ=%?j=%?i=%?b=%?j=%?j=%?b=%?jŎ=%?ُ=%?ʎ`=%?i0=%?ʎ`=%?@9=%?i0=%?i0=%?@9=%?=%?b=%?i=%?jŎ=%?jŎ=%?i=%?S!=%?S!=%?i=%? =Y'?'=Y'?@ M=Y'?S^=Y'?Ҟ=Y'?d, =Y'?W=Y'?S!=Y'?+\l=Y'?Q0=Y'?׶=Y'?+\l=Y'?S^=Y'?S^=Y'?+\l=Y'?S!=Y'?Q0=Y'?=Y'?S!=Y'?V=Y'?=Y'?VA=Y'?S^=Y'?@ M=Y'?VA=Y'?V=Y'?g=Y'?ҕp:=Y'?ҕp:=Y'?l^=Y'?V=Y'?l^=Y'?ҕp:=Y'?Ҟ=Y'?k;=Y'?=Y'?|j=Y'?|j=Y'?=Y'?(=Y'?S^=Y'?=Y'?Е`7=Y'?=Y'?k;=Y'?Е`7=Y'?'=Y'?Е`7=Y'?k;=Y'?Е`7=Y'?'=Y'?S^=Y'?'=Y'?k;=Y'?g=Y'?g=Y'?k;=Y'?|j=Y'?l^=Y'?Ҟ=Y'?S!=Y'?ҕp:=Y'?d, =Y'?Ҟ=Y'?|jk=Y'?d, =Y'?g=Y'?W=Y'?d, =Y'?|jk=Y'?ҕp:=Y'?g=Y'?d, =Y'?VP=Y'?VA=Y'?g=Y'?VA=Y'?@ M=Y'?g=Y'?@ M=Y'?'=Y'?g=Y'?Q0=Y'?׶=Y'?VA=Y'?׶=Y'?S^=Y'?VA=Y'?=Y'?Q0=Y'?VA=Y'?=Y'?V=Y'?S!=Y'?S!=Y'?V=Y'?l^==$?jּ=g%?j=)9$?j`=%?j=g%?j=m )?j=m )?j=m )?j=I(?j=m )?j=I(?j=%?j=g%?j=I(?j=m )?j=m )?j=%?j=%?j=aD(? и=_&? ?=CI'? Ũ=_&? ?=~(? `D=(? =_&? ?=aD(? и=~(? `D=&? P=CI'? Ũ=_&? ?=6%? =%? =_&? ?=(? =&? q=_&? ?=%? =&? P=_&? ?=_&? ?=%? =6%? =_&? ?=&? q=%? =D'?;@=/'?\}pX=r'?[@ =/'?\}pX=Ӄ'?}@=r'?[@ =r'?[@ =Ӄ'?}@= '?[@=Ӄ'?}@=&?}~= '?[@= '?[@=&?}~=~&?qYJ=&?}~=G&?)}=~&?qYJ=~&?qYJ=G&?)}= &?B`;=G&?)}=:%?){pܼ= &?B`;=xA(?{@=!5(? |i=W(?1 A=W(?1 A=!5(? |i=K(?,,=K(?,,=!5(? |i=(?"K=!5(? |i=/'?\}pX=(?"K=(?"K=/'?\}pX=D'?;@=D'?;@=r'?[@ ='?+='?+=r'?[@ =p%'?"`&=r'?[@ = '?[@=p%'?"`&=p%'?"`&= '?[@=&?N&-= '?[@=~&?qYJ=&?N&-=&?N&-=~&?qYJ= &?B`;= &?B`;=:%?){pܼ=%?*$p=:%?){pܼ=H%?D|p#=%?*$p=%?*$p=H%?D|p#= m%?p̹=H%?D|p#=p%?f{T= m%?p̹= m%?p̹=p%?f{T=Z%?"@A=qy(?O?=W(?1 A=K(?,,=K(?,,=(?"K=(?"`=(?"K=D'?;@='?+=&?N&-= &?B`;=&?Z c=&?Z c= &?B`;=Jm%?׻= &?B`;=%?*$p=Jm%?׻=qy(?O?=K(?,,=(?"`=(?"K='?+='?|6='?|6='?+=p%'?"`&=Jm%?׻=%?*$p=&.%? A=&.%? A=%?*$p= m%?p̹=(?"`=(?"K=S(?")=(?"K='?|6=S(?")='?|6=p%'?"`&=1\'?%@e=1\'?%@e=p%'?"`&=W&?$=p%'?"`&=&?N&-=W&?$=&?N&-=&?Z c=W&?$=W&?$=&?Z c=%?b$~=&?Z c=Jm%?׻=%?b$~= m%?p̹=Z%?"@A=&.%? A=&.%? A=Z%?"@A=*%?G$?=c(?cP?=qy(?O?=(?"`=S(?")='?|6=(?~2=(?~2='?|6=1\'?%@e=1\'?%@e=W&?$=&?@e=%?e0P=W&?$=%?b$~=%?b$~=Jm%?׻=B%?c =B%?c =Jm%?׻=&.%? A=c(?cP?=(?"`=(? iC=(? iC=(?"`=z(?i=(?"`=S(?")=z(?i=z(?i=S(?")=G(?iP=S(?")=(?~2=G(?iP=G(?iP=(?~2='?h`=(?~2=1\'?%@e='?h`='?h`=1\'?%@e=S'?Sj@'=S'?Sj@'=1\'?%@e=&?@e=&?@e=W&?$=C&? i=C&? i=W&?$=%?e0P=%?e0P=%?b$~=%?=i=%?=i=%?b$~=B%?c =B%?c =&.%? A=(%?i=(%?i=&.%? A= %??m0I=&.%? A=*%?G$?= %??m0I=h%?:?=s%?}?=}%?|=}%?|=;%?{}o=%?>E=%?>E=;%?{}o=%?|=%?|=[&?z}=C&?D =C&?D =[&?z}=&?Z0=[&?z}='?l}=&?Z0=&?Z0='?l}=:'?qY5='?l}='?}+=:'?qY5=:'?qY5='?}+='?H@='?}+=Q'?}a='?H@='?H@=Q'?}a=(?Eۮ=Q'?}a=|5(?R| *=(?Eۮ=h%?:?=}%?|=g%?! ~=}%?|=%?>E=g%?! ~=%?>E=%?|=_&?1o=%?|=C&?D =_&?1o=C&?D =&?Z0=7&?lP=&?Z0=:'?qY5=7&?lP=7&?lP=:'?qY5=j'?8)=j'?8)=:'?qY5='?H@=(?Eۮ=|5(?R| *=`(?T,P9=|5(?R| *=B(?|>=`(?T,P9=a<%?@>=h%?:?=g%?! ~=g%?! ~=%?>E='%?$p=%?>E=_&?1o='%?$p='%?$p=_&?1o='&?!08=_&?1o=C&?D ='&?!08='&?!08=C&?D =7&?lP=j'?8)='?H@=(?sp='?H@=(?Eۮ=(?sp=(?sp=(?Eۮ=`(?T,P9='%?$p='&?!08=&?4Pv='&?!08=7&?lP=&?4Pv=&?4Pv=7&?lP=9'?6p=7&?lP=j'?8)=9'?6p=9'?6p=j'?8)=(?sp=(?sp=`(?T,P9=h(?0?=a<%?@>=g%?! ~=A%?%=A%?%=g%?! ~=u%?d&k=u%?d&k=g%?! ~='%?$p=9'?6p=(?sp=*'? &p=*'? &p=(?sp=S(?%@=S(?%@=(?sp=h(?0?=u%?d&k='%?$p=%?-p=%?-p='%?$p=I&?p&Z='%?$p=&?4Pv=I&?p&Z=&?4Pv=9'?6p=L '?>/ `=L '?>/ `=9'?6p=*'? &p= %?c<=a<%?@>=A%?%=I&?p&Z=&?4Pv=L '?>/ `=S(?%@=h(?0?=(?3= %?c<=A%?%=$%?4j װ=$%?4j װ=A%?%=^%?8i==A%?%=u%?d&k=^%?8i==^%?8i==u%?d&k=f%?Ei=u%?d&k=%?-p=f%?Ei=f%?Ei=%?-p=&?Yj=%?-p=I&?p&Z=&?Yj=&?Yj=I&?p&Z=&?i0=I&?p&Z=L '?>/ `=&?i0=&?i0=L '?>/ `=@'?sh=L '?>/ `=*'? &p=D'?jP¨=D'?jP¨=*'? &p=6(?i=*'? &p=S(?%@=6(?i=6(?i=S(?%@=x(?i֮=x(?i֮=S(?%@=Z(?Ii.=S(?%@=(?3=Z(?Ii.=Z(?Ii.=(?3=7(?Oip?=(?3=h(?0?=7(?Oip?=@'?sh=L '?>/ `=D'?jP¨=|'?獾=&?@ލ=#&?ύ =#&?ύ =&?@ލ=g@&?卾p=b%?nߍ/=I%?OݍPŷ=PC%?㍾@=U(?čB=Wu(?䍾P@=7(?wÍʹ=Wu(?䍾P@=j(?ލ=7(?wÍʹ=7(?wÍʹ=j(?ލ='?<0!=j(?ލ=!(?፾0"='?<0!='?<0!=!(?፾0"=;'?^C=!(?፾0"='? ㍾h=;'?^C=;'?^C='? ㍾h=R&?*Í`='? ㍾h=|'?獾=R&?*Í`=R&?*Í`=|'?獾=#&?ύ =#&?ύ =g@&?卾p=b%?D@=g@&?卾p=%?ލ}=b%?D@=%?ލ}=%?ߍ(=b%?D@=b%?D@=%?ߍ(=%?Ff=%?ߍ(=b%?nߍ/=%?Ff=%?Ff=b%?nߍ/=b%?G=b%?nߍ/=PC%?㍾@=b%?G=U(?čB=7(?wÍʹ=.J(?x@T=.J(?x@T=7(?wÍʹ=(?v~P.=(?v~P.=7(?wÍʹ='?<0!='?<0!=;'?^C='?@=;'?^C=R&?*Í`=&?̝`=R&?*Í`=#&?ύ =&?̝`=&?̝`=#&?ύ =6j&? =%?~0=b%?D@=%?Ff=%?Ff=b%?G=Ym%?Fr=(?v~P.='?<0!='?}1='?<0!='?@='?}1='?}1='?@=r'?3~='?@=;'?^C=r'?3~=r'?3~=;'?^C=&?}=;'?^C=&?̝`=&?}=&?̝`=6j&? =&?}=&?}=6j&? =-&?~-=6j&? =#&?ύ =-&?~-=#&?ύ =b%?D@=-&?~-=-&?~-=b%?D@=%?~0=%?~0=%?Ff=Ym%?Fr=sa'?l䍾!=,'? )=v'?㍾У=J0(?.䍾=L_(?ٍ=%I(?ҍ;=%I(?ҍ;=L_(?ٍ=#x(?卾04=v'?㍾У=J0(?.䍾=%I(?ҍ;=c%?č<=C%?ݍ`&=i%?=C%?ݍ`&=Q%?ݍܱ=i%?=Q%?ݍܱ=K{%?ߍɮ=i%?=i%?=K{%?ߍɮ=%?&ʍ &=K{%?ߍɮ=%?:ߍ%=%?&ʍ &=%?:ߍ%=&?s獾=%?&ʍ &=%?&ʍ &=&?s獾=ʅ&?ɷ=&?s獾=Hq&?䍾=ʅ&?ɷ=ʅ&?ɷ=Hq&?䍾= '?oÍ=Hq&?䍾=q&?鍾0e= '?oÍ=q&?鍾0e=sa'?l䍾!= '?oÍ= '?oÍ=sa'?l䍾!='?0Í`=sa'?l䍾!=v'?㍾У='?0Í`='?0Í`=v'?㍾У=(?ݭZ=v'?㍾У=%I(?ҍ;=(?ݭZ=%I(?ҍ;=#x(?卾04=l@(?~8=u%?P~>=c%?č<=ч%?O=c%?č<=i%?=ч%?O=i%?=%?&ʍ &=%?~=ʅ&?ɷ= '?oÍ=H'?1= '?oÍ='?0Í`=H'?1=H'?1='?0Í`='?W~P='?W~P='?0Í`=(?ݭZ=(?ݭZ=%I(?ҍ;=l@(?~8=ч%?O=i%?=%?~=%?~=%?&ʍ &=&?}=&?}=%?&ʍ &=(e&?}@=%?&ʍ &=ʅ&?ɷ=(e&?}@=(e&?}@=ʅ&?ɷ=t&?}P=ʅ&?ɷ=H'?1=t&?}P=t&?}P=H'?1='?}(='?}(=H'?1=#y'?}=H'?1='?W~P=#y'?}='?W~P=(?ݭZ=1(?|e=(?ݭZ=l@(?~8=1(?|e=&?=T&?c=?&? ='?|P?=T&?c=&?=&?= '? `?='?|P?=?&? =c&?){4=&? :=?&? =T&?c=c&?){4=3'?0D= '?|?=>'?K=>'?K= &?ڶ=3'?0D= &?ڶ=&?=3'?0D=&?PN=&?= &?ڶ=&?|?=&?=&?PN=(?dw-=E)?Mδ= )?C[=E)?Mδ=)?W+`= )?C[= )?C[=)?W+`=d(?Ǔ6=)?W+`=)?C?=d(?Ǔ6=Q(?C?=)?Ǔ`H=&)?W+=)?Ǔ`H=)?C[p=&)?W+=&)?W+=)?C[p=(?M=)?C[p=})?BwP=(?M=*?Kbp=*??=*?5=*?Kbp=*?5=*?=*?5=*??=*?_A=*??=*?]$=*?_A=*?=*?h޼=*?Kbp=*??=*?h޼=*?]$= *?D@=)?S=)?e`=w)?=)?==p*??=)?jH=#)?+= *?<=#)?+=)?S= *?D@=)?e`=w)?=*?p=p*??=)?==)?aP= *?0Q=)?aP=*)?9U=*)?9U=)?%= *?#`U=)?%Ϊ=)?jH= *?<= *?<=#)?+= *?D@= *?D@=)?e`= *?p= *?p=)?e`=*?p=*?p=w)?=p*??=p*??=)?aP= *?0Q= *?0Q=*)?9U= *?#`U=*?&=)?%Ϊ= *?<=*?й= *?D@= *?p= *?p=*?p=*?Վi=*?Վi=*?p=p*??=*?&= *?<=*?p0=*?p0= *?<=*?`$= *?<= *?D@=*?`$=*?`$= *?D@=*?ԅ@=*?ԅ@= *?D@=*?й=*?й= *?p=*?-㎾r=*?-㎾r= *?p=*?Վi=*?Վi=p*??=*?U=*?U=p*??=*?hjV=p*??= *?0Q=*?hjV=*?hjV= *?0Q=*?׿P=*?׿P= *?0Q=*?h!p= *?0Q= *?#`U=*?h!p=*?h!p= *?#`U=(*?ZM=(*?ZM= *?#`U=*?&v=Z *?=r)?"=A)?қ@=r)?"=)?˧u=A)?қ@=A)?қ@=)?˧u=_)?=m?ᇚ`=u?n=,?n>=?>="?n@f="?G`{f=+!?nw^="?G`{f=R!?0^=+!?nw^=x"?n@y="?G`{f="?n@f=H"?E="?G`{f=x"?n@y=V !? o0=H"?E=x"?n@y=H"?E=V !? o0=!?t.p=<?`=]?09=:?}@i=:?}@i=]?09=`?=]?09=cL?=`?=`?=cL?=w?⨍=?Я=<?=G?$x=<?=? zt=G?$x=G?$x=? zt=? f=? zt=;?Y@g=? f=R!?ɨp=į ? u=!?Gt=į ? u=e!? m=!?Gt=!?Gt=e!? m=[!?g=e!? m=&!?%h=[!?g=&!?@l=[!?`=e!?=[!?`=!?)=e!?=e!?=!?)=į ?0=!?)=R!?f=į ?0=!?='!?p=!?='!?p= ?;=!?= ?;=4!?=!?=!?=4!?=!?=!? g=!?Y`w=4!?஍ t=4!?஍ t=!?Y`w= ?@x= ?@x=!?Y`w='!?`=!?Y`w=!? ҁ='!?`=? g=?Y`w=?஍ t=?஍ t=?Y`w=Λ?@x=Λ?@x=?Y`w= ~?`=?Y`w=? ҁ= ~?`=g?@=f|?=j?)0=f|?=?:=j?)0=?:=?z=j?)0=j?)0=?z=?=,)?d =?d=k? =k? =?d=?pٳ=?d=k?fcpu=?pٳ=?pٳ=k?fcpu=,)?ͨw=b ?,=e ?d0=m ?Ќ=e ?d0=m ?mQP=m ?Ќ=m ?Ќ=m ?mQP=e ?=m ?mQP=b ?dS=e ?="?d=M;?dR=?p=?p=M;?dR=M;?0,=M;?dR=?`=M;?0,=M;?0,=?`="?j=[ ?q=P ?dк=?d0=P ?dк=?eཱུ=?d0=?d0=?eཱུ=P ?PĽ=?eཱུ=[ ?e=P ?PĽ=?O=>? =?݇=>? ='?񭎾P=?݇='?񭎾P=?4=?݇=?݇=?4=A?V70F=%?4ʦ=-=$?6=K$?ciB=K$?ciB=-=$?6=#?9OЯ=#?9OЯ=-=$?6=%?`=-=$?6={%?4=%?`=?=I?-=O?@=O?@=I?-=?JMp =I?-=0?񏍾@=?JMp =?JMp =0?񏍾@=F?P =z ?y=!?[= !?VRP= !?VRP=!?[="?O0=!?[=P!?v!="?O0="?O0=P!?v!=lY!? = ?Rb=M ?DP=?! ?]錾 =M ?DP=c0 ?=?! ?]錾 =c0 ?=Q ?즍P=?! ?]錾 =?! ?]錾 =Q ?즍P=a!?=i?Č=J?[=zy?kE0=J?[=?=zy?kE0=zy?kE0=?=-?'+=?=l}?P=-?'+=: ? PTg= ?@wf=r?Oq= ?@wf=Z/ ?<_r=r?Oq=r?Oq=Z/ ?<_r=sX ?6À=Z/ ?<_r= ? mK=sX ?6À=z?Q`te=?LU s=?Kl=?Kl=?LU s==6!!?/pϹ= ?=e!?{F}= ?=e9!?즍P=e!?{F}=e!?{F}=e9!?즍P= ?O=e9!?즍P=hx ?s@= ?O=?j=?=} ?j=?=} ?=} ?j=?=?j=} ?=?j=} ?j=} ?=} ?VP=՚?VP=} ?V=՚?VP=՚?V=} ?V=՚?S^=՚?S!=?S^=՚?S!=?S!=?S^=} ?V=՚?V=} ?̉=՚?V=՚?̉=} ?̉=} ?̉P=՚?̉P=} ?VP=՚?̉P=՚?VP=} ?VP=} ?|j=} ?|j+=՚?|j=} ?|j+=?|j+=՚?|j=՚?|j=?|j+=՚?|jk=?|j+=?|jk=՚?|jk=՚?|j=?|j=՚?|jn=?|j=?|jT=՚?|jn=՚?|jn=?|jT=} ?|jn=?|jT=} ?|jT=} ?|jn=՚?|j=՚?2=?|j=՚?2=?2=?|j=՚?@L=՚?|jk=?@L=՚?|jk=?|jk=?@L=՚?Ҟ=՚?%'@L=?Ҟ=՚?%'@L=?%'@L=?Ҟ=՚?%'2=՚?=?%'2=՚?=?=?%'2=՚?S!=՚?Ҟ=?S!=՚?Ҟ=?Ҟ=?S!=՚?=՚?S^=?=՚?S^=?S^=?=՚?2=՚?%'2=?2=՚?%'2=?%'2=?2=՚?%'@L=՚?@L=?%'@L=՚?@L=?@L=?%'@L=?=?|j+=} ?=?|j+=} ?|j+=} ?=?|jT=?=} ?|jT=?=} ?=} ?|jT=(?S!=(?S^=Y'?S!=(?S^=Y'?S^=Y'?S!=(?m=(?m=Y'?m=(?m=Y'?m=Y'?m=(?mP=(?m0d=Y'?mP=(?m0d=Y'?m0d=Y'?mP=(?m0d=(?@L=Y'?m0d=(?@L=Y'?@L=Y'?m0d=(?2=(?m=Y'?2=(?m=Y'?m=Y'?2=(?%'@L=(?Ҟ=Y'?%'@L=(?Ҟ=Y'?Ҟ=Y'?%'@L=(?=(?%'2=Y'?=(?%'2=Y'?%'2=Y'?=(?S^=(?=Y'?S^=(?=Y'?=Y'?S^=(?Ҟ=(?S!=Y'?Ҟ=(?S!=Y'?S!=Y'?Ҟ=(?%'2=(?2=Y'?%'2=(?2=Y'?2=Y'?%'2=(?@L=(?%'@L=Y'?@L=(?%'@L=Y'?%'@L=Y'?@L=(?2=(?mP=Y'?2=(?mP=Y'?mP=Y'?2=(?m=(?2 =Y'?m=(?2 =Y'?2 =Y'?m=J ?S^=J ?S!=՚?S^=J ?S!=՚?S!=՚?S^=J ?m=J ?m=՚?m=J ?m=՚?m=՚?m=J ?m0d=J ?mP=՚?m0d=J ?mP=՚?mP=՚?m0d=J ?@L=J ?m0d=՚?@L=J ?m0d=՚?m0d=՚?@L=J ?m=J ?2=՚?m=J ?2=՚?2=՚?m=J ?Ҟ=J ?%'@L=՚?Ҟ=J ?%'@L=՚?%'@L=՚?Ҟ=J ?%'2=J ?=՚?%'2=J ?=՚?=՚?%'2=J ?S!=J ?Ҟ=՚?S!=J ?Ҟ=՚?Ҟ=՚?S!=J ?=J ?S^=՚?=J ?S^=՚?S^=՚?=J ?2=J ?%'2=՚?2=J ?%'2=՚?%'2=՚?2=J ?%'@L=J ?@L=՚?%'@L=J ?@L=՚?@L=՚?%'@L=J ?2 =J ?m=՚?2 =J ?m=՚?m=՚?2 =J ?mP=J ?2=՚?mP=J ?2=՚?2=՚?mP=܊ ?S^=܊ ?S!=J ?S^=܊ ?S!=J ?S!=J ?S^=܊ ?m=܊ ?m=J ?m=܊ ?m=J ?m=J ?m=܊ ?m0d=܊ ?mP=J ?m0d=܊ ?mP=J ?mP=J ?m0d=܊ ?@L=܊ ?m0d=J ?@L=܊ ?m0d=J ?m0d=J ?@L=܊ ?m=܊ ?2=J ?m=܊ ?2=J ?2=J ?m=܊ ?Ҟ=܊ ?%'@L=J ?Ҟ=܊ ?%'@L=J ?%'@L=J ?Ҟ=܊ ?%'2=܊ ?=J ?%'2=܊ ?=J ?=J ?%'2=܊ ?S!=܊ ?Ҟ=J ?S!=܊ ?Ҟ=J ?Ҟ=J ?S!=܊ ?=܊ ?S^=J ?=܊ ?S^=J ?S^=J ?=܊ ?2=܊ ?%'2=J ?2=܊ ?%'2=J ?%'2=J ?2=܊ ?%'@L=܊ ?@L=J ?%'@L=܊ ?@L=J ?@L=J ?%'@L=܊ ?2 =܊ ?m=J ?2 =܊ ?m=J ?m=J ?2 =܊ ?mP=܊ ?2=J ?mP=܊ ?2=J ?2=J ?mP=Q(?S!=Q(?S^=(?S!=Q(?S^=(?S^=(?S!=Q(?mP=Q(?m0d=(?mP=Q(?m0d=(?m0d=(?mP=Q(?m=Q(?m=(?m=Q(?m=(?m=(?m=Q(?2=Q(?m=(?2=Q(?m=(?m=(?2=Q(?m0d=Q(?@L=(?m0d=Q(?@L=(?@L=(?m0d=Q(?=Q(?%'2=(?=Q(?%'2=(?%'2=(?=Q(?%'@L=Q(?Ҟ=(?%'@L=Q(?Ҟ=(?Ҟ=(?%'@L=Q(?S^=Q(?=(?S^=Q(?=(?=(?S^=Q(?Ҟ=Q(?S!=(?Ҟ=Q(?S!=(?S!=(?Ҟ=Q(?%'2=Q(?2=(?%'2=Q(?2=(?2=(?%'2=Q(?@L=Q(?%'@L=(?@L=Q(?%'@L=(?%'@L=(?@L=Q(?2=Q(?mP=(?2=Q(?mP=(?mP=(?2=Q(?m=Q(?2 =(?m=Q(?2 =(?2 =(?m=%?=%?j=m )?=%?j=m )?j=m )?=%?j=%?=m )?j=%?=m )?=m )?j=m )?V=Y'?V=m )?VP=Y'?V=Y'?VP=m )?VP=Y'?S!=Y'?S^=%?S!=Y'?S^=%?S^=%?S!=m )?̉=Y'?̉=m )?V=Y'?̉=Y'?V=m )?V=m )?VP=Y'?VP=m )?̉P=Y'?VP=Y'?̉P=m )?̉P=Y'?|jk=%?|jk=Y'?|j=%?|jk=%?|j+=Y'?|j=Y'?|j=%?|j+=m )?|j=%?|j+=m )?|j+=m )?|j=m )?|jn=m )?|jT=Y'?|jn=m )?|jT=%?|jT=Y'?|jn=Y'?|jn=%?|jT=Y'?|j=%?|jT=%?|j=Y'?|j=Y'?2=Y'?|j=%?2=Y'?|j=%?|j=%?2=Y'?|jk=Y'?@L=%?|jk=Y'?@L=%?@L=%?|jk=Y'?%'@L=Y'?Ҟ=%?%'@L=Y'?Ҟ=%?Ҟ=%?%'@L=Y'?=Y'?%'2=%?=Y'?%'2=%?%'2=%?=Y'?S^=Y'?=%?S^=Y'?=%?=%?S^=Y'?Ҟ=Y'?S!=%?Ҟ=Y'?S!=%?S!=%?Ҟ=Y'?@L=Y'?%'@L=%?@L=Y'?%'@L=%?%'@L=%?@L=Y'?%'2=Y'?2=%?%'2=Y'?2=%?2=%?%'2=%?=%?|jT=m )?=%?|jT=m )?|jT=m )?=%?|j+=%?=m )?|j+=%?=m )?=m )?|j+=m )?̉P=Y'?̉P=m )?|jn=Y'?̉P=Y'?|jn=m )?|jn=Y'?|j=Y'?̉=m )?|j=Y'?̉=m )?̉=m )?|j=J)?9ߏJ=J)?9ߏP4=J)?&V=J)?9ߏP4=J)?&)=J)?&V=J)?&V=J)?&)=J)?nJ=J)?&)=J)?nP4=J)?nJ=*?&)=J)?&)=*?nP4=J)?&)=J)?nP4=*?nP4=*?&V=J)?&V=*?9ߏJ=J)?&V=J)?9ߏJ=*?9ߏJ=*?nJ=J)?nJ=*?&V=J)?nJ=J)?&V=*?&V=*?9ߏP4=J)?9ߏP4=*?&)=J)?9ߏP4=J)?&)=*?&)=*?nP4=J)?nP4=*?nJ=J)?nP4=J)?nJ=*?nJ=*?9ߏJ=J)?9ߏJ=*?9ߏP4=J)?9ߏJ=J)?9ߏP4=*?9ߏP4=?Cϕ#[=?#[=%?Cϕ#[=?#[=%?#[=%?Cϕ#[=?f=?fP=%?f=?fP=%?fP=%?f=?fڊ=?fF=%?fڊ=?fF=%?fF=%?fڊ=?|j=?|j=%?|j=?|j=%?|j=%?|j=?|jk=?|jP=%?|jk=?|jP=%?|jP=%?|jk=?&=?=%?&=?=%?=%?&=?=?=%?=?=%?=%?=?=?Ҟ=%?=?Ҟ=%?Ҟ=%?=?󍾠=?&=%?󍾠=?&=%?&=%?󍾠=?|j=?2=%?|j=?2=%?2=%?|j=?@L=?|jk=%?@L=?|jk=%?|jk=%?@L=?%'2=?=%?%'2=?=%?=%?%'2=?Ҟ=?%'@L=%?Ҟ=?%'@L=%?%'@L=%?Ҟ=?2=?%'2=%?2=?%'2=%?%'2=%?2=?%'@L=?@L=%?%'@L=?@L=%?@L=%?%'@L=?#[=?OA`=%?#[=?OA`=%?OA`=%?#[=?O@^=?󍾠=%?O@^=?󍾠=%?󍾠=%?O@^=?fF=?OF=%?fF=?OF=%?OF=%?fF=?O=?f=%?O=?f=%?f=%?O=4>﬛p4>j4>V@4>V@4>j4>V4>j4>djP4>V4>V4>djP4> &?pg&?j`&?V&?V&?j`&?V@&?j`&?cj&?V@&?V@&?cj&? u>ɑ`u>ˎЀu>jp馽u>]Xu>ɑ`u>jp馽u>ˎЀu>]Xu>S]Žv>iv>'½v>Nlܽv>'½v>}jp˽v>Nlܽu>S]Žu>]Xu>S u>S u>]Xu>Ҟu>]Xu>ތu>Ҟv>Vu>j`v>}j`ku>j`v>%jv>}j`ku>kŎp馽u>jp馽u>ˎЀu>ˎЀu>ju>jpýu>`u>kdZݽv>iu>ˎЀu>kdZݽu>ju>ju>kdZݽu>`u>l@9u>y0u>jp馽u>ݽv>iu>S]Žu>S]Žv>iu>ˎЀv>iu>kdZݽu>ˎЀu>]Xu>jp馽u>ތu>ތu>jp馽u>l@9u>jp馽u>y0u>l@9v>}jp˽v>iv>Nlܽv>iu>ݽv>'½v>'½u>ݽu>`˽u>ݽu>S]Žu>`˽u>Ҟu>ތv>Vu>ތu>j`v>Vu>ތu>l@9u>j`o>A o>Yo>o>S o>ఱo>A o>ఱo>Yo>A o>ő o>ఱo>S]Žo>S]Žo>ఱo>S o>S]Žo>zŐ8o>A @ؽo>g`o>"o>Vo>Vo>"o> `Ώo> `Ώo>"o>Ҟo>S]Žo>`˽o>Pؽo>`˽o>e,ݽo>Pؽo>Sjo>Pؽo>e,ݽo>Pؽo>Sjo>gpo>Sjo>e,ݽo>gpo>S o> `Ώo>Ҟo>Vo>S o>}j`ko>S o>"o>g`o> V߽o>gpo>V@o>A o>o> V߽o>o>A @ؽo> V߽o> V߽o>zŐ8o>gpo>ő o>S]Žo>o>o>S]Žo>A @ؽo>S]Žo>Pؽo>zŐ8o>zŐ8o>Pؽo>gpo> `Ώo>S o>Vo>S o>A o>Vo>A o> V߽o>Vo>e,ݽo>}jp˽o>gpo>}jp˽o>e,ݽo>'½o>e,ݽo>`˽o>'½o>S o>g`o>}j`ko>Ҟo>"o>Vo>"o>S o>V4>j`u>j`>jP4>j`>j4>j_>j@9>jּ>jP>jP>j4>j`4>jɗ>jŽu>j>jɗ>jŽ4>j> p?9> > 쫽> p? > 9> I> 0DP>> P> p?> > p?,> Ũ> 쫽G> 0> p?P>> P> q½> p?G> 0,> Ũ> p?> p?> q½ > > p?> I> 0Dw>z>}Ϋp>_|p>_|>}d>H|@d>H|@I>}+> DଫI>}+ڭ>}`Ԭ> Dଫ> Dଫڭ>}`Ԭg>YЭڭ>}`Ԭ2>}g>YЭg>YЭ2>}+>y\2>}*>} +>y\+>y\*>} g>|>)Y>{>NE>|`y>1=>1=NE>|`yX>+0ѰNE>|`y} >|@X>+0ѰX>+0Ѱ} >|@_>T&} >|@w>z_>T&w>zp>_|_>T&_>T&p>_|}>b#ഩ}>b#ഩp>_|!>+Ap>_|d>H|@!>+A!>+Ad>H|@> Dଫ> Dଫg>YЭ2(>+ g>YЭ+>y\2(>+ 2(>+ +>y\>">"+>y\d>%<+>y\g>|>d>%<>1=X>+0Ѱ>r?!>+A> Dଫ>C ت> Dଫ2(>+ >C ت>r?X>+0Ѱ > RX>+0Ѱ_>T& > R > R_>T&}>b#ഩ}>b#ഩ!>+A>@ۧ>@ۧ!>+A>C ت>C ت2(>+ qc>2(>+ >"qc>)>#`>r? > R > R}>b#ഩb>b>}>b#ഩ>@ۧqc>>"1>: >>"d>%<1>: >)>#` > R>/p5>/p5 > Ro>10o>10 > Rb>>@ۧ>C ت1>*>C تqc>>+Do>10b>>f>fb>>@ۧR>efЦ>@ۧ1>*1>*>C تE>2PE>2P>C ت>+DE>2P>+D>g`qc>1>: >>fw>fw1>: >>2g`?#>i?>r?>h0>r?)>#`>h0>h0)>#`>ih`ۭ>ih`ۭ)>#`>/p5>/p5o>10>ih`ۭ>ih`ۭo>10>i 3φ>i?o>10>f>f>@ۧ>Ti>Ti>@ۧR>efЦR>efЦ1>*>Tij>Tij1>*>Ik˨1>*E>2P>Ik˨>Ik˨E>2P>g`>g`>+DY>kˮ>+Dqc>Y>kˮY>kˮqc>>fw>i 3o>10φ>i?>_&@?B>}0Qq>?@WB>}0Q>w}@q>?@Wq>?@W>w}@[>{@4>=|>m}0T>@0T>@0>m}0>rY@>m}0B}>}濽>rY@>rY@B}>}濽>YhB}>}濽%>}@>Yh>Yh%>}@u>1?%>}@D>}𜼽u>1?u>1?D>}𜼽[>R?D>}𜼽m?>&` [>R?[>R?m?>&` B>YѸB>YѸm?>&` su>AAsu>AAm?>&` [>|p@q>?@W[>{@@>n2Ҽ[>{@4>=|@>n2Ҽ@>n2Ҽ4>=|{>{>4>=|T>@0T>@0>rY@>00E>rY@>Yh>00E>00E>Yhu>1?[>R?B>YѸz>U'ZB>YѸsu>AAz>U'Z>_&@?q>?@WV>Lq>?@W@>n2ҼV>LV>L@>n2Ҽ> ´@>n2Ҽ{>> ´{>T>@0Qt>"1½Qt>"1½T>@0>T>@0>00E>>00Eu>1?>>u>1?jU>𝻽u>1?[>R?jU>𝻽[>R?z>U'ZjU>𝻽z>U'Zsu>AA>0A> ´{>Qt>"1½jU>𝻽z>U'Z>0A&>c$?>_&@?V>L)>$ ½> ´Qt>"1½>jU>𝻽>w"QV>L> ´wu>)wu>)> ´)>$ ½Qt>"1½>C>1 E½>w"QjU>𝻽K>(p᷽jU>𝻽>0AK>(p᷽&>c$?V>L>d@>d@V>L>M?p>M?pV>Lwu>)wu>))>$ ½>e`7½)>$ ½Qt>"1½C>1 E½C>1 E½>>w"Q>w"QK>(p᷽>gpyK>(p᷽>0A'>h`?>i`?&>c$?>d@>d@>M?pv>hP>M?pwu>))7>i ")7>i "wu>)>e`7½>e`7½)>$ ½q>iiýq>iiý)>$ ½0>3i0ý0>3i0ý)>$ ½C>1 E½q>i@½C>1 E½>FiCC>1 E½>w"Q>FiC>FiC>w"QA>*kA>*k>w"Q>gpy>gpyK>(p᷽>i2v>hP>M?p)7>i "0>3i0ýC>1 E½q>i@½>i2K>(p᷽'>h`?->ύp?(> p?'>䍾d>捾P<> t>獾 諽>獾 諽?>)ݍ&:>⍾`&:>⍾`5Y>ލq">ҍT5Y>ލqcR>㍾P`">ҍTI>k鍾&k>ݍ@>Kٍ)>Kٍ)k>ݍ@8j>卾`ɲ->ύp?'>䍾1f>Í)1f>Í)'>䍾>'>䍾d>捾P<>d>捾P<>獾 諽>>>獾 諽l;>cީ>獾 諽&:>⍾`l;>cީ&:>⍾`">ҍTl;>cީ">ҍTcR>㍾P`>xÍ@>xÍ@cR>㍾P`e>cR>㍾P`I>k鍾&e>e>I>k鍾&>(`rI>k鍾&>Kٍ)>(`r>(`r>Kٍ)>`,>Kٍ)8j>卾`ɲ>`,8j>卾`ɲ\>䍾>>`,->ύp?1f>Í)_>}P;_>}P;1f>Í)>~>~1f>Í)>>l;>cީ1>} 1>} l;>cީ>}l;>cީ">ҍT >~5 >~5">ҍT->~c">ҍT>xÍ@->~c->~c>xÍ@e>>~>uP>~O>1>} uP>~O>}l;>cީ >~5->~ce>Et>}Et>}e>->}`e>>(`r->}`->}`>(`rA>o~*>(`r>`,A>o~*[\>፾PAq>捾\>T⍾p>Mߍ7?>ݍp5>Yٍ:Y>⍾ ½s> ׍`ۚ>(𷿽ۚ>(𷿽s> ׍`>捾ξs> ׍`(> 0U>捾ξ[\>፾PA>T⍾p>ˍ>T⍾p>Mߍ>ˍ>ˍ>Mߍr>ˍ r>ˍ >Mߍ5>Yٍ:5>Yٍ:7?>ݍp~>^ʍ17?>ݍpY>⍾ ½~>^ʍ1~>^ʍ1Y>⍾ ½ۚ>(𷿽>捾ξC>ߍ,^>} ^>} C>ߍ,Q>G獾lQ>G獾l>㍾`gT> @@r>ˍ 5>Yٍ:>aT5>Yٍ:~>^ʍ1>aT>?>[\>፾PA;>8PV[\>፾PA>ˍ;>8PV;>8PV>ˍE>杍PK>ˍr>ˍ E>杍PKE>杍PKr>ˍ >aT>aT~>^ʍ154>~P?54>~P?~>^ʍ1ۚ>(𷿽ۚ>(𷿽>捾ξ^>} ^>} Q>G獾l@>Q>G獾lT> @@@>;>8PVE>杍PKv>~@Ӽv>~@ӼE>杍PKI>}PSE>杍PK>aTI>}PS54>~P?ۚ>(𷿽>}௾ۚ>(𷿽^>} >}௾>}௾^>} >} a>} a^>} @>G>i>vP<> p+>|0?i>vPG>G>+> @?+>|0?<> p>{4> :>{4<> pi>vP o>y,>|p?@&>`De> ౶ o>@&>`D> t o>e> ౶> t>{ F o>> t$> ?>{ F ?W ?md ?Ҟ ?Ҟ ?md ? `Ъ ? `Ъ ?п ?xl ?V৆ ?п ? `Ъ ?BՏ@ ?xl ?п ?Ҟ ? `Ъ ?S  ? `Ъ ?xl ?S  ?S  ?xl ?S]Ž ?BՏ@ ?п ?V৆ ?S]Ž ?xl ?V৆ ?xl ?BՏ@ ?V৆ ?S]Ž ?ݽ ?`˽ ?V  ?ݽ ?V৆ ?`˽ ?ݽ ?V  ?V৆ ?ݽ ?S]Ž ?m˽ ?V  ? ` ?V  ?m˽ ?`˽ ?m˽ ?'½ ?`˽x?1 ᐽ?䐾 ?؏?؏?䐾  ?䐾/?䐾 ?؏@- ?䐾/ ?䐾/?؏@- ?1 @숽x?1 ὎?䐾 O޽?؏Q޽?؏Q޽?䐾 O޽ ?䐾ܽ?䐾 O޽?؏0ܽ ?䐾ܽ ?䐾ܽ?؏0ܽ ?1 0ٽ?)@0?Q==?Ba\?Ba\?Q== ?O?Q==?n'½o>m˽o>`˽o>`˽o>m˽o>!`o>Vo>ݽo>!`o>`˽o>!`o>S]Žo>!`o>ݽo>S]Žo>ݽo>CՏlo>S]Žo>S]Žo>x@o>S o>CՏlo>ݽo>Vo>CՏlo>x@o>S]Žo>S o>x@o>Vo>x@o>CՏlo>Vo>Ҟo>S o> {o>Vo> {o>S o>Ҟo> {o>Vo>Vo> {o>Vo>Wo>Ҟo>!`Ъo>Vo>!`Ъo>Ҟo>!`Ъo>mdo>Wo>0>A@὏l>dpw>A@> @ݽl>dpwཏl>dpw> @ݽ >2ܽ> @ݽ >G`ٽ >2ܽn>Gp̟>2̍n> Ɍ̟>2̍]>dpn> Ɍn> Ɍ]>dpn>A]>dp>kn>A>.8>p3pߌn>/pn>/p>p3pߌl>oBPl>oBP>p3pߌo>,k>p3pߌ>e,@bo>,ko>e,ڽ>,ڽi>p3pݽ>,ڽ>oB`ݽi>p3pݽ>oB`ݽ>/pei>p3pݽi>p3pݽ>/pen>.E>)N>R= A޽t>Ca`"޽t>Ca`"޽>R= A޽n>OPwܽ>R= A޽>oOPwܽn>OPwܽ>o)@ٽ>)>OAs>ooOn>R==>O>Ca\n>R==n>R==>Ca\n>)@0>2 0ٽ>䐾ܽ'w> ؏0ܽ'w> ؏0ܽ>䐾ܽn>䐾 O޽>䐾ܽů> ؏Q޽n>䐾 O޽n>䐾 O޽ů> ؏Q޽n>2 >2 @숽>䐾/'w> ؏@-'w> ؏@->䐾/n>䐾 >䐾/ů> ؏n>䐾 n>䐾 ů> ؏n>2 ᐽO>'½O>m˽O>`˽O>`˽O>m˽O>!`O>VO>ݽO>!`O>`˽O>!`O>S]ŽO>!`O>ݽO>S]ŽO>ݽO>CՏlO>S]ŽO>S]ŽO>x@O>S O>CՏlO>ݽO>VO>CՏlO>x@O>S]ŽO>S O>x@O>VO>x@O>CՏlO>VO>ҞO>S O> {O>VO> {O>S O>ҞO> {O>VO>VO> {O>VO>mdO>VO>!`ЪO>VO>mdO>ҞO>mdO>WO>Ҟ>qlN>Y@շ>Z'`u޽lN>Y@)O>)L޽շ>Z'`u޽)O>)L޽O>` ۽շ>Z'`u޽շ>Z'`u޽O>` ۽}>`۽}S>$O>Z' ݷ>uݷ>u$O>Z' з>)2з>)2$O>Z' >Y󏾠툽$O>Z' O> >Y󏾠툽O>(F+O>WaI߽}>%j}>%j+O>WaI߽>Sо޽+O>WaI߽S>♾ٽ>Sо޽>Sо޽S>♾ٽ>$#ڽT>$ZN>S^>♾`^>♾`N>Sз>Wa 5N>SO>%@з>Wa 5з>Wa 5O>%@l>(8I>B=ٽ O>gא߽>>Lqڽ>>Lqڽ O>gא߽>ːm߽ O>gא߽GO>B P\>ːm߽>ːm߽GO>B P\Ὄ> APO>/`D>L> 0W>1P->1P->L> 0W >|>L> 0W8O>. >| >|8O>.Ϸ>-,O>-ٽP>|d޽÷>.0ٽ÷>.0ٽP>|d޽> '߽P>|d޽O>1Qώ> '߽> '߽O>1QὫ>/:mO> = O>ː>B ">B " O>ːٷ>gאi O>ːS>>L` ٷ>gאiٷ>gאiS>>L` G>B=`琽?̙`?md?8Qಆ?S ?̙`?8Qಆ?8Qಆ?п?a?V৆?п?8Qಆ?8Qಆ?a?S ?S ?a?e˽?п?wp?a?wp?п?V৆?e˽?a?V৆?a?wp?V৆?V৆?'V㽐?e˽?'V㽐?,ݽ?e˽?\㽐?,ݽ?'V㽐?m˽?,ݽ?\㽐?,ݽ?m˽?e˽?m˽?'½?e˽?̙`?md?8Qಆ?S ?̙`?8Qಆ?8Qಆ?п?a?V৆?п?8Qಆ?8Qಆ?a?S ?S ?a?e˽?п?wp?a?wp?п?V৆?e˽?a?V৆?a?wp?V৆?V৆?'V?e˽?'V?,ݽ?e˽?\?,ݽ?'V?m˽?,ݽ?\?,ݽ?m˽?e˽?m˽?'½?e˽?/:f? '߽? 1Qὐ? 1Qf? '߽?{d޽f? '߽?.0ٽ?{d޽?{d޽?.0ٽ?-ٽ?- ?{?.?. ?{'? 0W ?{? 1P-'? 0W'? 0W? 1P-?/`D|?##ڽ ?Sо޽?♾ٽ?♾ٽ ?Sо޽?VaI߽ ?Sо޽?$jὝ?VaI߽?VaI߽?$j?(F὾?(8?Va 5?$@?$@?Va 5?S?Va 5?♾`?S?S?♾`?#[?A=`琽?fאi?=L` ?=L` ?fאi?ː?fאi?A "?ː?ː?A "? =? A?ːm߽?A P\Ὤ?A P\?ːm߽?fא߽?ːm߽?=Lqڽ?fא߽?fא߽?=Lqڽ?A=ٽ?`۽?Y'`u޽?` ۽?` ۽?Y'`u޽?)L޽?)L޽?Y'`u޽??X@?Y'`u޽?q??X@? N?X󏾠툽?Y' N?X󏾠툽?)2?Y' ?)2?u?Y' ?Y' ?u?>jŎpý>s >ʎ>S]Ž>s >jŎpý>@9@>s >S]Ž>V>|j`k>d,猽>|j`k>iЁ>d,猽>V>d,猽>iЁ>e `>V>猽>V>iЁ>猽>e `>猽>@9@>e `>@9@>S]Ž>S]Ž>ݽ>`˽>d,ݽ>'½>ݽ>d,ݽ>ݽ>iP当>`˽>ݽ>'½>|jp˽>d,ݽ>iP彔>'½>d,ݽ>|jp˽>ʎ>j`>jp馽>ʎ>ُp>j`>iP当>Pؽ>j当>jpý>Pؽ>jŎpý>ُp>ʎ>iЁ>ʎ>@9@>iЁ>iЁ>@9@>猽>Pؽ>iP当>jŎpý>jŎpý>iP当>S]Ž>S]Ž>iP当>ݽ ?'@ ?@ @1 ?S  ?`˽ ?d,ݽ ?'½ ?S]Ž ?+\p ?Qa ?׶0 ?+\p ?S  ?S  ?+\p ?S]Ž ?Qa ?pݽ ?S]Ž ?V@ ?pݽ ?V= ?S  ?@ @1 ?V= ?V@ ?gp ?ҕD ?ҕD ?l ۽ ?V@ ?l ۽ ?ҕD ?`˽ ?k@C ?Ҟ ?|j`k ?|j`k ?Ҟ ?V ?S  ?Ҟ ?ЕG ?Ҟ ?k@C ?ЕG ?'@ ?ЕG ?k@C ?ЕG ?'@ ?S  ?'@ ?k@C ?g` ?g` ?k@C ?|j`k ?l ۽ ?`˽ ?S]Ž ?ҕD ?d,ݽ ?`˽ ?|jp˽ ?d,ݽ ?gp ?'½ ?d,ݽ ?|jp˽ ?ҕD ?gp ?d,ݽ ?V ?V= ?g` ?V= ?@ @1 ?g` ?@ @1 ?'@ ?g` ?Qa ?׶0 ?V= ?׶0 ?S  ?V= ?pݽ ?Qa ?V= ?pݽ ?V@ ?S]Ž ?S]Ž ?V@ ?l ۽>j0$>jĽ>jۼ>j$>jĽ&?j&?j`&?j?j}&?j`?j}?>j`$>jĽ?j}&?j&?j`?>j`>j` a? ƻ ? p?e? ? p?? :\!? 쫽 ? p? a? ƻ? :? e? ? p?Ц> 浽q> ` ? p?\!? 쫽4?  ? p?q> `? ? p? ? p?,u> Ц> 浽 ? p?4?  ,u> ?;@?\}&?[^?\}&?} >?[^?[^?} >9)?[?} >?} 9)?[9)?[?} ?qY4?} ?d?)}P?qY4?qY4?d?)}P)?B?d?)}P>){)?B%^?{>Q? |^t?1=^t?1=Q? |Ch?,,@Ch?,,@Q? |!?"`3Q? |?\}&!?"`3!?"`3?\}&?;@?;@?[^?+0?+0?[^B?"X?[^9)?[B?"XB?"X9)?[.?N&Q9)?[?qY4.?N&Q.?N&Q?qY4)?B)?B>){_>*$>){m>D|[_>*$_>*$m>D|[m>m>D|[f>f{*m>m>f>f{*@>"=?OP?^t?1=Ch?,,@Ch?,,@!?"`3?"!?"`3?;@?+0.?N&Q)?B:?Z:?Z)?B>P)?B_>*$>P?OP?Ch?,,@?"!?"`3?+0Q?|HQ?|H?+0B?"X>P_>*$> `=> `=_>*$m>?"!?"`3p?"U!?"`3Q?|Hp?"UQ?|HB?"Xx?%x?%B?"Xt?PZB?"X.?N&Qt?PZ.?N&Q:?Zt?PZt?PZ:?Zn>b$0:?Z>Pn>b$0m>@>"=> `=> `=@>"=S>G$@?c??OP??"p?"UQ?|Hf3?~2kf3?~2kQ?|Hx?%x?%t?PZ?@ePϦ>e.t?PZn>b$0n>b$0>Pr>cpsr>cps>P> `=?c??"d? i ;d? i ;?"?i?"p?"U?i?ip?"Urd?ixp?"Uf3?~2krd?ixrd?ixf3?~2k?hf3?~2kx?%?h?hx?%ep?SjWep?SjWx?%?@ePϦ?@ePϦt?PZ`? i`? it?PZ>e.>e.n>b$0<>=ip˫<>=ip˫n>b$0r>cpsr>cps> `=>i>i> `=jY>?m5> `=S>G$@jY>?m5 >:`?/!>}p?Y4>|`Y4>|`́>{}[s>>9[s>>9́>{}x?|Px?|P;x?z}Pο?D`q?D`q;x?z}Pο?Z;x?z}Pοx,?l}0?Z?Zx,?l}0XW?qYIx,?l}0?} SXW?qYIXW?qYI?} S?H?} S?}`?H?H?}`t/?E?}`(R?R|Tt/?E >:`?Y4>|`8 >!Y4>|`[s>>98 >![s>>9x?|P ?1 x?|P?D`q ?1 ?D`q?Z ?l?ZXW?qYI ?l ?lXW?qYI?8)@b?8)@bXW?qYI?Ht/?E(R?R|Tv}?T,E(R?R|Tm_?|p@v}?T,E>@ >:`?8 >!8 >![s>>9>$[s>>9 ?1 >$>$ ?1 ,D?!F ?1 ?D`q,D?!F,D?!F?D`q ?l?8)@b?HA0?sc?Ht/?EA0?scA0?sct/?Ev}?T,E>$,D?!FN?4½,D?!F ?lN?4½N?4½ ?lJV?6 ?l?8)@bJV?6JV?6?8)@bA0?scA0?scv}?T,E??>@8 >!>%@칽>%@칽8 >!$>d&$>d&8 >!>$JV?6A0?sc? &? &A0?scVp?%dVp?%dA0?sc??$>d&>$z>-dz>-d>$f?p&p$½>$N?4½f?p&p$½N?4½JV?6%?>/ý%?>/ýJV?6? &Q>cpB>@>%@칽f?p&p$½N?4½%?>/ýVp?%d??<?3PѷQ>cpB>%@칽>4j৹>4j৹>%@칽`>8iA>%@칽$>d&`>8iA`>8iA$>d&#>Ei@$>d&z>-d#>Ei@#>Ei@z>-d"?Yj`z>-df?p&p$½"?Yj`"?Yj`f?p&p$½]?iOýf?p&p$½%?>/ý]?iOý]?iOý%?>/ý;?shý%?>/ý? &?j?j? &\S?i? &Vp?%d\S?i\S?iVp?%d[?ip[?ipVp?%d?IipPVp?%d<?3Pѷ?IipP?IipP<?3Pѷ?Oi?<?3Pѷ???Oi?;?shý%?>/ý?j)0?獾`?@ލpϮ?ύtϮ?ύt?@ލp]?卾n>nߍ@ON>Oݍ>㍾`>\r?č`<?䍾>T?wÍ ?䍾>=?ލp񱽄T?wÍ T?wÍ =?ލp񱽻?<]=?ލp_>?፾\?<]?<]_>?፾\}X?^P;_>?፾\? ㍾}X?^P;}X?^P;? ㍾?*Í? ㍾)0?獾`?*Í?*Í)0?獾`Ϯ?ύtϮ?ύt]?卾n>D߬]?卾nO?ލ>D߬O?ލHo>ߍV>D߬>D߬Ho>ߍV6]>F`Ho>ߍV>nߍ@O6]>F`6]>F`>nߍ@O> 7>nߍ@O>㍾`>> 7\r?č`~Й>D߬6]>F`6]>F`> 7 >F@ ;?v~P?<]2?}M?<]j?٫2?}M2?}Mj?٫N?3~j?٫}X?^P;N?3~N?3~}X?^P;?}P}X?^P;?̝驽?}P?̝驽?u?}P?}P?udJ?~PQ?uϮ?ύtdJ?~PQϮ?ύt>D߬dJ?~PQdJ?~PQ>D߬>~Й>~Й6]>F` >F@ ~?l䍾]? 0U#?㍾ ۾L?.䍾`p{?ٍe?ҍDe?ҍD{?ٍϔ?卾J#?㍾ ۾L?.䍾`pe?ҍDr>čB >ݍX(<>Թ >ݍX3>ݍ (<>Թ3>ݍ />ߍ (<>Թ(<>Թ/>ߍ x>&ʍX/>ߍ >:ߍ@Yx>&ʍX>:ߍ@Yn6?s獾x>&ʍXx>&ʍXn6?s獾w?ɷ`{n6?s獾?䍾w?ɷ`{w?ɷ`{?䍾p)?oÍ?䍾?鍾½p)?oÍ?鍾½~?l䍾]p)?oÍp)?oÍ~?l䍾]I?0Ík~?l䍾]#?㍾ ۾I?0ÍkI?0Ík#?㍾ ۾\:?ݭ$#?㍾ ۾e?ҍD\:?ݭ$e?ҍDϔ?卾J]?~ F$>P~P@r>čBH>O`r>čB(<>ԹH>O`(<>Թx>&ʍX>~żw?ɷ`{p)?oÍze?0Mp)?oÍI?0Íkze?0Mze?0MI?0Ík]?W~꽽]?W~꽽I?0Ík\:?ݭ$\:?ݭ$e?ҍD]?~ FH>O`(<>Թ>~ż>~żx>&ʍX-?}-?}x>&ʍXԁ?}濽x>&ʍXw?ɷ`{ԁ?}濽ԁ?}濽w?ɷ`{!?}w?ɷ`{ze?0M!?}!?}ze?0MB<?}0VB<?}0Vze?0Mϕ?}Pjze?0M]?W~꽽ϕ?}Pj]?W~꽽\:?ݭ$.?|\:?ݭ$]?~ F.?|?m ?c׶? P*?|? ?c׶?m?m*? ?*?|?? P?){PJ?D? P ?c׶?){PJ ?:I*?|p?1?@31?@3?0 ?:?0m?P³ ?:m?0m?P³?0[?|0?m?P³m?0O?dwQ ?M𰵽 ?C[P﷽ ?M𰵽?W+춽 ?C[P﷽ ?C[P﷽?W+춽?Ǔ@H?W+춽y ?Cp??Ǔ@H?Cp?g ?Ǔ6*?W+@g ?Ǔ6?C[*?W+@*?W+@?C[?Mδ?C[) ?Bw0.?Mδ>,?Kb>,?p?>,? I>,?Kb>,? I>,?ڶ>,? I>,?p?>,?_=>,?p?>,?]Z>,?_=>,?ڶ>,?h >,?Kb>,?p?>,?h >,?]ZD'?D{ ?S C ?e鷽# ?PDzw ?= x%?@? ?j6 ?Tj'? B ?T{ ?S D'?DC ?e鷽# ?PDz#?%?@?w ?= x ?a.D'?- ?a. ?9U@n ?9U@n_ ?%PN&?#) ?%@ ?j6j'? Bj'? B ?TD'?DD'?DC ?e鷽(?޶(?޶C ?e鷽#?#?# ?PDz%?@?%?@? ?a.D'?-D'?- ?9U@nN&?#){/?&z ?%@j'? B1?0ŹD'?D(?޶(?޶#?Z1?Վ Z1?Վ #?%?@?{/?&zj'? Bg,?Ng,?Nj'? B,?Zj'? BD'?D,?Z,?ZD'?D>,?ԅû>,?ԅûD'?D1?0Ź1?0Ź(?޶5,?-㎾P 5,?-㎾P (?޶Z1?Վ Z1?Վ %?@?5,?`)5,?`)%?@?,?hj@(%?@?D'?-,?hj@(,?hj@(D'?->,?׿ﭽ>,?׿ﭽD'?-,?h!D'?-N&?#),?h!,?h!N&?#)+?Z@1+?Z@1N&?#)>,?& (?Բ ?"pϱ?қo ?"pϱ ?˧p ?қo?қo ?˧p ?,?& )?Y(0Y-?[ʑpT)?Y(0Y9'?[v>+pԽu>{au>{au>dڒu>/]u>/]u>dڒv>ov>+pԽu>dڒu>{a>{a>uw S>/]>/]>uw S>`>9Qݽ>uw S>aN>aN>uw S>{a>ѕE><#v>}jv>}j⽥E><#t>|j⽥E><#>ѕ>Cϕ>|j⽥E><#s>Cϕ>|j09>Cᘾsv>}j0> =]9>Cᘾs>|j0> =]u>/]9>Cᘾsv>}j09>Cᘾsu>/]G>Oz?>Opi>Opz?>Opi3>OS>OpzG>Oz}>O?>OpiG>OzM>OC}>On>Od>Opz3>OS>O8Žn>Od3>OS>O8Ž3>OS}>O?>Opi}>O3>OS>O8Ž}>Om>O8ŽM>OCm>O8Ž}>Ou>O0߽!M>O0u>O ^>O0߽!M>O0u>O0߽>O0߽>O[!M>O0u>O ^!M>O0>O[>Oڊ3>O@Ww>O`A`u>Oڊ>OG`3>O@Wwu>Oڊ3>O@Ww>Oڊ>O`A`3>O@Ww>OG`[>2 F> l>Ro0>Ro0F> lF>n?>Ro0$>`h[>2 :>nrd$>`h>Ro0E>n`_(H>3)^:>nrd(H>3)^$>`h:>nrdQ>2 <> l>Ro0>Ro0<> l;>n?>Ro0>`hQ>2 0>nrd>`h>Ro0;>n`_=>3)^0>nrd=>3)^>`h0>nrd.%>2h<:> PA>RoA>Ro<:> P:>n0?A>Ro>B,.%>2heX>n>B,A>Ro";>cO>B,eX>neX>n";>n";>cOk/>2hzD> P>Ro>RozD> P4E>n0?>RoY>C,k/>2h罣b>nY>C,>Ro`E>cOY>C,b>nb>n`E>n`E>cO%;>n_~>n(jH:>7^~>n(jO>dH:>7^G>6㚾lO>d~>n(j~>n(j:>nWG>6㚾l:>nW:>n=G>6㚾lG>6㚾l:>n=g;>!$bE>n_>me;E>D A_;E>D A_>meD>i嗾`;k>me >n`~D>i嗾`;kD>i嗾`;k >n`~a!> >n`~@>n0a!>gC>`{a!>@>n0#>Jo v@>^Y>>n8@>^Y#>Jo vW~>)[0W~>)[0#>Jo v3>⇚#>Jo vA>n03>⇚A>n0D?>>P3>⇚A>n0轰;>n @D?>>Po>n5u>GPAI>npC5u>GPAG>0*I>npC*>nP5u>GPAo>n>F 5u>GPA*>nPT>!o>F 齥*>nP>F T>!oJ>u.=>@g>p >~`+v >~`+v>p>`Jw>p>x>`Jw>`Jw>xED>㨍0e;>0=>_>%08=>]`> A_>%08_>%08]`> AF>p<]`> A?>ZнF>pʨfߘ> fm>Hߘ>  >fm>Hfm>H > H>@ >E> l H>@E>%h H>@g >m H>@gfm>*@t >m >mfm>*@t>ufm>*@tI>P>uD>ҁ?>@C> w?>@1{>xC> w1{>xĢ>tC> wC> wĢ>t E>g E>pC>ZПĢ>ᮍpĢ>ᮍpC>ZП1{>;1{>;C>ZП?>pC>ZПD>车?>p:>p8>ZП>ᮍp𽆘>ᮍp8>ZПp>;p>;8>ZПh5>p8>ZПl:>h5>p%:>ځ#2>,H>*x#2>u>@v,H>*xu>@v>@v,H>*x,H>*x>@v:>g>dv5>dPٳ.>Pu.>Pu5>dPٳ5>5>dPٳ.>gc 5>5>.>gc >Ψ>R;>d>0;>d>nQ>0򳽙>0򳽙>nQ;>>nQ>d+;>}>dpj>d,b>b>>d,>R>d,b>`P>R>Rb>`P𬽆}>py>rp񼽓>d0Ľt;>e>d0Ľt;>et;>et;>et;>e>t;>ey>ep>u>Op馽ӹ>0qw>އ㹽ӹ>0q]>򭎾ưw>އ㹽]>򭎾ư$w>5w>އ㹽w>އ㹽$w>5>W78>4 ý>6f>ci`<½>ci`<½>6f*>:O0ϲ*>:O0ϲ>6f>` }>6fO>4 >` }H>rg&>.Zo>9k>9k&>.ZobG>KM x&>.ZoW>򏍾`}bG>KM xbG>KM xW>򏍾`}>sJ>z f>@Frh>WR`mh>WR`m>@Fr9I>Oy>@Frg>w ]9I>Oy9I>Oyg>w ]/>큽K;>R`>E{>^錾v>E>y{>^錾v>y>`m{>^錾v{>^錾v>`mD>j >Č >[}K,>lEx >[}:> mK,>lExK,>lEx:> mW>'h:> m04>`gW>'h?>P>PC;0>O>PC >=O;0>O;0>O >=O<>6` >=OhG>m <>6`w->QT>MU𽨊>K r>K rT>MU%>QT>MUj>\}K%>Q%>Qj>\}K9S> 齿> 5W>wpl>tK`W>wp>> Ռr>E>0> Ռr:>˸p)>$@[>op>op)>$@[U>O)>$@[> U>OU>O󽴁> i>dL/X>-P؃>7pʸb>I@ʻb>I@ʻ؃>7pʸ>ʌ؃>7pʸv> 걽>ʌ>ʌv> 걽8h><>#>k>H >H >k&>A>k5>m l&>A&>A5>m l>\P >{կB>0T>1Ѝ>1ЍB>0TS>GȹB>0Tj>纽S>GȹS>Gȹj>纽>>𛽽{>/4>i>|FP4>i">>|FP>|FP">n>Ol">'*>s漽n>Olu>jv>4>jv>4>4>jv>`u>j`4>`u>j`4>j`4>`4>Vo>V4>V@o>Vo>V@4>V@o>S o>S]Žu>S o>S]Žu>S]Žu>S 4>V@o>V@4>͉@o>V@o>͉@4>͉@4>͉o>͉4>Vo>͉o>V4>V4>}jn4>}jSo>}jn4>}jSv>}jSo>}jno>}jnv>}jSo>}jp˽v>}jSv>}jp˽o>}jp˽o>}j`kv>}j`ko>}j`v>}j`kv>}j*o>}j`o>}j`v>}j*4>}j`v>}j*4>}j*4>}j`o>}j`ko> Lv>}j`ko> Lv> Lv>}j`ko>2Ľo>}jp˽v>2Ľo>}jp˽v>}jp˽v>2Ľo>`˽o>&'2Ľu>`˽o>&'2Ľv>&'2Ľu>`˽o>&' Lo>Ҟv>&' Lo>Ҟu>Ҟv>&' Lo>S]Žo>`˽u>S]Žo>`˽u>`˽u>S]Žo>Ҟo>S u>Ҟo>S u>S u>Ҟo> Lo>&' Lv> Lo>&' Lv>&' Lv> Lo>&'2Ľo>2Ľv>&'2Ľo>2Ľv>2Ľv>&'2Ľv>v>}jS4>v>}jS4>}jS4>v>}j*v>`4>}j*v>`4>`4>}j*?S]Ž?S  ?S]Ž?S  ?S  ?S]Ž?md?m0 ?md?m0 ?m0 ?md?m޽?m˽ ?m޽?m˽ ?m˽ ?m޽?m˽?2Ľ ?m˽?2Ľ ?2Ľ ?m˽? L?md ? L?md ?md ? L?%'2Ľ?`˽ ?%'2Ľ?`˽ ?`˽ ?%'2Ľ?Ҟ?%' L ?Ҟ?%' L ?%' L ?Ҟ?S ?Ҟ ?S ?Ҟ ?Ҟ ?S ?`˽?S]Ž ?`˽?S]Ž ?S]Ž ?`˽?%' L? L ?%' L? L ? L ?%' L?2Ľ?%'2Ľ ?2Ľ?%'2Ľ ?%'2Ľ ?2Ľ?2㽐?m޽ ?2㽐?m޽ ?m޽ ?2㽐?m0?2৆ ?m0?2৆ ?2৆ ?m0>S >S]Žo>S >S]Žo>S]Žo>S >m0>mdo>m0>mdo>mdo>m0>m˽>m޽o>m˽>m޽o>m޽o>m˽>2Ľ>m˽o>2Ľ>m˽o>m˽o>2Ľ>md> Lo>md> Lo> Lo>md>`˽>&'2Ľo>`˽>&'2Ľo>&'2Ľo>`˽>&' L>Ҟo>&' L>Ҟo>Ҟo>&' L>S]Ž>`˽o>S]Ž>`˽o>`˽o>S]Ž>Ҟ>S o>Ҟ>S o>S o>Ҟ> L>&' Lo> L>&' Lo>&' Lo> L>&'2Ľ>2Ľo>&'2Ľ>2Ľo>2Ľo>&'2Ľ>2৆>m0o>2৆>m0o>m0o>2৆>m޽>2o>m޽>2o>2o>m޽O>S O>S]Ž>S O>S]Ž>S]Ž>S O>m0O>md>m0O>md>md>m0O>m˽O>m޽>m˽O>m޽>m޽>m˽O>2ĽO>m˽>2ĽO>m˽>m˽>2ĽO>mdO> L>mdO> L> L>mdO>`˽O>&'2Ľ>`˽O>&'2Ľ>&'2Ľ>`˽O>&' LO>Ҟ>&' LO>Ҟ>Ҟ>&' LO>S]ŽO>`˽>S]ŽO>`˽>`˽>S]ŽO>ҞO>S >ҞO>S >S >ҞO> LO>&' L> LO>&' L>&' L> LO>&'2ĽO>2Ľ>&'2ĽO>2Ľ>2Ľ>&'2ĽO>2৆O>m0>2৆O>m0>m0>2৆O>m޽O>2>m޽O>2>2>m޽?S]Ž?S ?S]Ž?S ?S ?S]Ž?m޽?m˽?m޽?m˽?m˽?m޽?md?m0?md?m0?m0?md? L?md? L?md?md? L?m˽?2Ľ?m˽?2Ľ?2Ľ?m˽?Ҟ?%' L?Ҟ?%' L?%' L?Ҟ?%'2Ľ?`˽?%'2Ľ?`˽?`˽?%'2Ľ?S ?Ҟ?S ?Ҟ?Ҟ?S ?`˽?S]Ž?`˽?S]Ž?S]Ž?`˽?%' L? L?%' L? L? L?%' L?2Ľ?%'2Ľ?2Ľ?%'2Ľ?%'2Ľ?2Ľ?2?m޽?2?m޽?m޽?2?m0?2৆?m0?2৆?2৆?m0>当>j&?当>j&?j&?当>j`>`&?j`>`&?`&?j`&?V@ ?V@&?V ?V@ ?V&?V ?S]Ž ?S >S]Ž ?S >S >S]Ž&?̉@ ?̉@&?V@ ?̉@ ?V@&?V@&?V ?V&?̉ ?V ?̉&?̉ ?|jp˽>|jp˽ ?|jnཔ>|jp˽>|jS ?|jn ?|jnཔ>|jS&?|jnཔ>|jS&?|jS&?|jn&?|j`&?|j* ?|j`&?|j*>|j* ?|j` ?|j`>|j* ?|j`k>|j*>|j`k ?|j`k ? L ?|j`k> L ?|j`k>|j`k> L ?|jp˽ ?2Ľ>|jp˽ ?2Ľ>2Ľ>|jp˽ ?%'2Ľ ?`˽>%'2Ľ ?`˽>`˽>%'2Ľ ?Ҟ ?%' L>Ҟ ?%' L>%' L>Ҟ ?S  ?Ҟ>S  ?Ҟ>Ҟ>S  ?`˽ ?S]Ž>`˽ ?S]Ž>S]Ž>`˽ ?2Ľ ?%'2Ľ>2Ľ ?%'2Ľ>%'2Ľ>2Ľ ?%' L ? L>%' L ? L> L>%' L>`>|j*&?`>|j*&?|j*&?`>|jS㽔>&?|jS㽔>&?&?|jS&?̉ ?̉&?|j` ?̉ ?|j`&?|j` ?|jn ?̉@&?|jn ?̉@&?̉@&?|jnརg?9ߏ04g?9ߏJg?&(g?9ߏJg?&Ug?&(g?&(g?&Ug?n04g?&Ug?nJg?n04>,?&Ug?&U>,?nJg?&Ug?nJ>,?nJ>,?&(g?&(>,?9ߏ04g?&(g?9ߏ04>,?9ߏ04>,?n04g?n04>,?&(g?n04g?&(>,?&(>,?9ߏJg?9ߏJ>,?&Ug?9ߏJg?&U>,?&U>,?nJg?nJ>,?n04g?nJg?n04>,?n04>,?9ߏ04g?9ߏ04>,?9ߏJg?9ߏ04g?9ߏJ>,?9ߏJu>Dϕu>󍾀>Cϕu>󍾀>󍾀>Cϕu>gpzu>gڊ>fpzu>gڊ>fڊ>fpzu>g0߽u>g8Ž>f0߽u>g8Ž>f8Ž>f0߽v>}j0v>}j`k>|j0v>}j`k>|j`k>|j0v>}jp˽v>}j⽔>|jp˽v>}j⽔>|j⽔>|jp˽u>&/]u>/]>&/]u>/]>/]>&/]u>Ҟu>`쩽>Ҟu>`쩽>`쩽>Ҟu>u>`˽>u>`˽>`˽>u>"[u>&"[>"[u>&"[>&"[>"[v>}j`kv> L>|j`kv> L> L>|j`kv>2Ľv>}jp˽>2Ľv>}jp˽>|jp˽>2Ľv>&' Lu>Ҟ>%' Lu>Ҟ>Ҟ>%' Lu>`˽v>&'2Ľ>`˽v>&'2Ľ>%'2Ľ>`˽v> Lv>&' L> Lv>&' L>%' L> Lv>&'2Ľv>2Ľ>%'2Ľv>2Ľ>2Ľ>%'2Ľu>󍾀u>O ^>󍾀u>O ^>O ^>󍾀u>O`A`u>"[>O`A`u>"[>"[>O`A`u>g8Žu>O8Ž>f8Žu>O8Ž>O8Ž>f8Žu>Opzu>gpz>Opzu>gpz>fpz>Opz?͗0?Ǐ?jŎpý?Ǐ? =?jŎpý?jŎpý? =?b&?Ǐz?-粽?jp馽?-粽?]?jp馽?jp馽?]?jŎpý?]??jŎpý?jŎpý??͗0?ʮ?VbW?jp馽?VbW?( PA?jp馽?jp馽?( PA?Ǐz?JÐ`?&`绽?jŎpý?ʮ?jp馽?&?&?jp馽?Ʈ?벽? z?>Β0?@=? ?S]Ž? z?@A?>Β0?@A?둾X?>Β0?>Β0?둾X?jp馽?jp馽?둾X?Ʈ?&`绽?഻?jŎpý?഻?w둾`'?jŎpý?jŎpý?w둾`'?S]Ž?S]Ž?w둾`'?@=? ?0?S]Ž?0?0͒!?S]Ž?S]Ž?0͒!?>Β0?|jp˽?|jS??%'2Ľ?2Ľ???2Ľ?Gڽ?2Ľ?|jp˽?Gڽ?^@`?] ߽??ʕ`m޽?7Ε1ݽ?S]Ž?M`Oڽ?NIC۽?S]Ž? qz?2֔P?J?J?2֔P??2֔P?^@`??] ߽?ʕ`m޽??7Ε1ݽ?3۽?S]Ž?S]Ž?3۽?p ڽ?HP/ݽ?x)07߽?J?J?x)07߽? qz?NIC۽?HP/ݽ?S]Ž?p ڽ?y ڽ?S]Ž?y ڽ?M`Oڽ?S]Ž?S]Ž?>Β0?S ?S ?>Β0?Ҟ?^@/?] ;?Ҟ?Ҟ?] ;?ʕp? qɏ?2֔Pc?>Β0?>Β0?2֔Pc?Ҟ?2֔Pc?^@/?Ҟ?7Ε?3G?j`?j`?3G?p@?p@?y j?j`?j`?y j?HP~?HP~?y j?M?HP~?x)0?>Β0?>Β0?x)0? qɏ?M?NI?HP~?%' L?j`? L? L?j`?|j`k?j`?Ӛ ;?|j`k?`?|j*?|j`k?jŎp馽?jp馽?jŎpý?jŎpý?j?jpý?V`? ߽?J?㐾1ݽ?͐۽?jŎpý?jŎpý?͐۽?V ڽ?V ڽ?/!ڽ?jŎpý?jŎpý?b&?JÐ`? ߽?`m޽?J?N?돾P?^?^?돾P?J?돾P?V`?J?/!ڽ?`Oڽ?jŎpý?`Oڽ?sڽ?jŎpý?jŎpý?sڽ?j?j?,v޽?^?sڽ?,0ܽ?j?j?,0ܽ?,v޽?p?㐾?j?㐾?͐G?j?j?͐G?V@?V@?/!j?j?V/? ;?jp馽?jp馽? ;?p?Ə?돾Pc?jp馽?돾Pc?V/?jp馽?/!j?0?j?jp馽?, ō?Ə?,@?, ō?j?j?, ō?jp馽?HP/ݽ?J?S]Ž?S]Ž?J?jŎpý?J?`m޽?jŎpý?jŎpý?`m޽?㐾1ݽ?>Β0?jp馽?HP~?HP~?jp馽?j?jp馽?p?j?Ӛ ߽??{`?Ӛ ߽? ޽??|jp˽??Gڽ?? ޽?Gڽ?ܙ`Oڽ?݄C۽??z?P???P???P?{`? ޽?󚾠۽?Gڽ?Gڽ?󚾠۽?/ ڽ?JP/ݽ?e07߽???e07߽?z?Gڽ?ܙ`Oڽ??݄C۽?JP/ݽ???ʕ`m޽?%'2Ľ?%'2Ľ?ʕ`m޽?`˽?ʕ`m޽?S]Ž?`˽?e0?ɏ?j`?ܙ?݄?j`?ɏ?Pc?j`?j`?Pc?Ӛ ;?Ӛ ;?Pc?{/? O?󚾰G?Ӛ ;?Ӛ ;?󚾰G?/@?݄?GR?j`?j`?GR?O0M?ʕp?7Ε?Ҟ?Ҟ?7Ε?%' L?7Ε?j`?%' L?j`?O0M?e0?/@?Gj?Ӛ ;?Ӛ ;?Gj?j`?Gj?ܙ?j`?|j`k?Ӛ ;?`?Ӛ ;?j`?`?HP~?j?j`՚?&`绽՚?@՚?S]Ž՚?~՚?&՚?W>|՚?&՚?#Ǯ՚?W>|՚?W>|՚?#Ǯ՚?VbW՚? ՚?؏`՚?mtJ՚?؏`՚?~w՚?mtJ՚?&`绽՚?S]Ž՚?4ϐ û՚?򬏾-՚?7 ՚?W>|՚?7 ՚?}՚?W>|՚?W>|՚?}՚?mtJ՚?}՚?c~՚?mtJ՚?mtJ՚?c~՚? ՚?VbW՚? 0՚?W>|՚? 0՚?a܏0 ՚?W>|՚?W>|՚?a܏0 ՚?򬏾-՚?u՚?u՚?S ՚?u՚?N/ ՚?S ՚?S ՚?N/ ՚?W>|՚?N/ ՚?~՚?W>|՚?۠Q՚?Ò涽՚?S]Ž՚?Ò涽՚?В b՚?S]Ž՚?S]Ž՚?В b՚?S ՚?В b՚?jɒ@՚?S ՚?S ՚?jɒ@՚?u՚?w둾`'՚?3i՚?S]Ž՚?3i՚?mqr՚?S]Ž՚?S]Ž՚?mqr՚?۠Q՚?p՚?㐾՚?/!j՚?㐾՚?͐G՚?/!j՚?/!j՚?͐G՚?V@՚?V/՚? ;՚?S ՚?S ՚? ;՚?p՚?NϏ՚?돾Pc՚?W>|՚?W>|՚?돾Pc՚?S ՚?돾Pc՚?V/՚?S ՚?/!j՚?՚?V՚?՚?sJ՚?V՚?sJ՚?,@՚?V՚?,@՚?))0M՚?V՚?))0M՚?W>|՚?V՚?͐۽՚?V ڽ՚?S]Ž՚?`m޽՚?㐾1ݽ՚?S]Ž՚?S]Ž՚?㐾1ݽ՚?͐۽՚?돾P՚?V`՚?`m޽՚?V`՚? ߽՚?`m޽՚?/!ڽ՚?`Oڽ՚?sڽ՚?,0ܽ՚?)) ݽ՚?V՚?V՚?)) ݽ՚?W>-߽՚?̉՚?t2՚?V՚?t2՚?՚?V՚?V՚?՚?՚?՚?t2՚?՚?՚?B6 ՚?S ՚?S ՚?B6 ՚?m՚?e՚?앾ي՚?՚?՚?앾ي՚?՚?d50՚?m̐՚?S ՚?m̐՚?7`/՚?S ՚?m՚?ܓً՚?S ՚?S ՚?ܓً՚?ؓ@h՚?Ҟ՚?ڕp`՚?՚?ؓ@h՚? ՚?S ՚?S ՚? ՚?d50՚? N՚?5,՚?Ҟ՚?5,՚?r0ϐ՚?Ҟ՚?r0ϐ՚?i3՚?Ҟ՚?Ҟ՚?i3՚?ڕp`՚?nٽ՚?S]Ž՚?𔾰0ٽ՚?S]Ž՚?`˽՚?𔾰0ٽ՚?𔾰0ٽ՚?`˽՚?t2Oٽ՚?`˽՚?Gڽ՚?t2Oٽ՚?t2Oٽ՚?Gڽ՚?Mڽ՚?U ՚?i՚?GRpܽ՚?GRpܽ՚?i՚?ڕ`՚?ݽ՚?Gڽ՚?Х޽՚?Gڽ՚?GRpܽ՚?Х޽՚?GRpܽ՚?ڕ`՚?Х޽՚?ݽ՚?앾۽՚?Gڽ՚?Gڽ՚?앾۽՚?Mڽ՚?5@՚?7P՚?ؓ0޽՚?ؓ0޽՚?7P՚?̉@՚?̉@՚?7P՚? ՚?nٽ՚?B6Kڽ՚?S]Ž՚?S]Ž՚?B6Kڽ՚?`۽՚?ؓ0޽՚?S]Ž՚?ܓܽ՚?S]Ž՚?`۽՚?ܓܽ՚?ؓ0޽՚?߽՚?5@՚? ՚?U ՚?̉@՚?U ՚?GRpܽ՚?̉@՚?%'2Ľ՚?2Ľ՚? 1ݽ՚?S ՚?7`/՚?Ҟ՚?Ҟ՚?7`/՚? N՚?%' L՚?O0M՚? L՚? L՚?O0M՚?|j`k՚?󚾰G՚?՚?̉՚?՚?t2՚?̉՚?W>-߽՚?N՚?V՚?V՚?N՚?V@՚?N՚?̉@՚?V@՚?W>|՚?mtJ՚?V՚?mtJ՚?/!ڽ՚?V՚?/!ڽ՚?sڽ՚?V՚?돾P՚?`m޽՚?N՚?N՚?`m޽՚?̉@՚?4ϐ û՚?S]Ž՚?mtJ՚?mtJ՚?S]Ž՚?/!ڽ՚?S]Ž՚?V ڽ՚?/!ڽ՚?@՚?w둾`'՚?S]Ž՚?S]Ž՚?ؓ0޽՚?`m޽՚?`m޽՚?ؓ0޽՚?̉@՚?S ՚?p՚?/!j՚?՚?S ՚?V՚?S ՚?/!j՚?V՚?/!j՚?V՚?V՚?{`՚?Ӛ ߽՚?̉@՚?̉@՚?Ӛ ߽՚?`m޽՚?`m޽՚? 1ݽ՚?̉@՚? 1ݽ՚?|jp˽՚?̉@՚?̉@՚?|jp˽՚?|jn՚?ܙ`Oڽ՚?݄C۽՚?Gڽ՚?z՚?P՚?GRpܽ՚?GRpܽ՚?P՚?̉@՚?P՚?{`՚?̉@՚? 1ݽ՚?󚾠۽՚?/ ڽ՚?e07߽՚?z՚?GRpܽ՚?݄C۽՚?GRpܽ՚?Gڽ՚?GRpܽ՚?O ݽ՚?e07߽՚?/ ڽ՚?Gڽ՚? 1ݽ՚?|jp˽՚? 1ݽ՚?2Ľ՚? 1ݽ՚?Gڽ՚?%'2Ľ՚?Gڽ՚?`˽՚?%'2Ľ՚?p՚? ՚?󚾰G՚?{/՚?Ӛ ;՚?O0M՚?e0՚?ɏ՚?O0M՚?0՚?t՚?՚?ɏ՚?Pc՚?O0M՚?O0M՚?Pc՚?{/՚?Ӛ ;՚?p՚?O0M՚?p՚?󚾰G՚?O0M՚?O0M՚?󚾰G՚?|j`k՚?󚾰G՚?̉՚?|j`k՚?̉՚?|j`՚?|j`k՚?t՚?GR՚?՚?՚?GR՚?O0M՚?՚?e՚?Ҟ՚?Ҟ՚?e՚?%' L՚?e՚?՚?%' L՚?%' L՚?՚?O0M՚?/@՚?Gj՚?󚾰G՚?󚾰G՚?Gj՚? ?jڱ ?ji} ?j`} ?j`?j`?jPƦ} ?j` ?ji} ?j} ?j`?jѦ?j?jYX?j`Q?j࣯Q?j࣯X?j`t?j t?j X?j`nj?j3?jY?jPƦq?jt?j nj?j3i?jФnj?j36g?j0úi?jФ ?ji?jۺ} ?j?jYQ?j࣯?jPƦQ?j࣯?jޫ?jPƦ?j~?j`} ?j`} ?j`~?j`#?j#?j ?jڱ} ?j`?jޫq?jr?jPƦ?jPƦq?jr} ?j`} ?j`q?jr?jѦ1?jPʼ?j|?j?j|*?j9ý?j?j*?j9ý[?jЀ½*?j9ý?jpý[?jЀ½?jpý?j[?jЀ½[?jЀ½?j彚?j@ý6g?j0ú?jॾi?jФi?jФ?jॾ1?jPʼ?jॾ?j|1?jPʼ} ?j彚?j@ý?j彲?jۺN?jР} ?j} ?jN?jР,?j ½} ?j,?j ½?j@ý} ?p} ?j} ?V@} ?V@} ?j} ?V} ?j} ?cjP} ?V} ?V} ?cjP} ? +? Ұ? ? ?? pQD? 𪵽? `$D? 𪵽? ? `$O? ? `$ө? H? po? #? ? +? Ұ#? D? 𪵽;@? O? ? ;@? O+? Ұ? `$1? p#?? pQO? ? `n? `$? `$? `n1? p#u? ? 0 ½? Ͷc? /)? 𫹽y? Pny? Pn)? 𫹽? q)? 𫹽zD? r? q? qzD? re? pOq? P? Z˫? 65-? ? ? ? ? `? v? 5-? ? ? po? 0? ? 0 v? ? ө? H? `$d? P? `$? Ͷd? P? Ͷ? qu? u? ? qj(? @f}? `j(? @f? qe? p? 꾽? q? 꾽}? `? q? ? u ? ` ? 0 ½? ? Ͷ? E+? f? Ͷ? ͶE+? fd? Pc? /y? Pn? Ӵy? Pn? Z? Ӵ? Ӵ? Z? p-˫? 6? Z? ҩ? Z ? `? ҩ? Z $? `[? p-Oq? PC? p? Z? ZC? p $? `[? u S? ? ` S? Z*?  ? ` ? `Z*? ? ҩ?Xp?B?}p??ZP³B?}p?b ?}`?ZP³?ZP³b ?}` ?Z`M ?Z`Mb ?}`z?Z`尽b ?}`F?}`*z?Z`尽z?Z`尽F?}`*n?Z`n?Z`F?}`*?ZPTF?}`*2?}?ZPT?ZPT2?}?Z6?Z62?}?Z;2?}p?}Ϋ?Z;?Z;p?}ΫV`?ZhV`?Zhp?}Ϋ5?Zp?}Ϋ?}P5?Z5?Z?}P?ZF?ZF?}P ?Z?}P3?} ?Z ?Z3?}?Z0䩽?Z0䩽3?}+{?Z@3?}-a?}2+{?Z@+{?Z@-a?}2L?ZGL?ZG-a?}2?Zª-a?}2,?}+?Zª?Zª,?}+?Zpj?Zpj,?}+j?Z=,?}+A?}`Ԭj?Z=j?Z=A?}`Ԭ?Z8?Z8A?}`Ԭ_?ZVA?}`Ԭ|?}_?ZV_?ZV|?}o?Z0o?Z0|?}Z?Z`谽|?}S?}PZ?Z`谽Z?Z`谽S?}PK?ZPK?ZPS?}PzB?ZųS?}PrE?}dzzB?ZųzB?ZųrE?}dz??.\p?rE?}dz]B?}p???.\p?$?j1p??Xp? ?2?Xp??ZP³ ?2 ?2?ZP³?2+?ZP³ ?Z`M?2+?2+ ?Z`M?2 ?Z`Mz?Z`尽?2?2z?Z`尽 ?2`Tz?Z`尽n?Z` ?2`T ?2`Tn?Z`?2 n?Z`?ZPT?2 ?2 ?ZPT?2`䬽?ZPT?Z6?2`䬽?2`䬽?Z6Џ?2૽?Z6?Z;Џ?2૽Џ?2૽?Z;f?2?Z;V`?Zhf?2f?2V`?Zhh:?2@XV`?Zh5?Zh:?2@Xh:?2@X5?Z ?20ک5?Z?ZF ?20ک ?20ک?ZF6?2?ZF ?Z6?26?2 ?Z?2 u ?Z?Z0䩽?2 u?2 u?Z0䩽x?2Џ?Z0䩽+{?Z@x?2Џx?2Џ+{?Z@UH?2ݩ+{?Z@L?ZGUH?2ݩUH?2ݩL?ZG?2p]L?ZG?Zª?2p]?2p]?Zªm?2 ?Zª?Zpjm?2 m?2 ?Zpjt?2諽?Zpjj?Z=t?2諽t?2諽j?Z=k?2j?Z=?Z8k?2k?2?Z8~?2p?Z8_?ZV~?2p~?2p_?ZVc?20`_?ZVo?Z0c?20`c?20`o?Z0M?2°o?Z0Z?Z`谽M?2°M?2°Z?Z`谽'>?28Z?Z`谽K?ZP'>?28'>?28K?ZP4?2@K?ZPzB?Zų4?2@4?2@zB?Zų]2?E4p?zB?Zų??.\p?]2?E4p?:?p?$?j1p?\-?b!$?j1p? ?2\-?b! ?2?2+\-?b!\-?b!?2+ ?b!`⯽?2+?2 ?b!`⯽?2 ?2`T ?b!`⯽ ?b!`⯽ ?2`T?b!3 ?2`T?2 ?b!3?2 ?2`䬽?b!3?b!3?2`䬽?b!?2`䬽Џ?2૽?b!Џ?2૽f?2?b!?b!f?2,?`ef?2h:?2@X,?`e,?`eh:?2@XC?b!3h:?2@X ?20کC?b!3 ?20ک6?2C?b!3C?b!36?2ȓ?b! 6?2?2 uȓ?b! ?2 ux?2Џȓ?b! ȓ?b! x?2Џ.?b!x?2ЏUH?2ݩ.?b!UH?2ݩ?2p].?b!.?b!?2p]?f%?2p]m?2 ?f%?f%m?2 Z?b!m?2 t?2諽Z?b!t?2諽k?2Z?b!Z?b!k?2e?b!Xk?2~?2pe?b!X~?2pc?20`e?b!Xe?b!Xc?20`6?b!6c?20`M?2°6?b!6M?2°'>?286?b!66?b!6'>?28!?벽'>?284?2@!?벽!?벽4?2@(?p?4?2@]2?E4p?(?p?:?p?\-?b!o5?&\-?b! ?b!`⯽o5?&o5?& ?b!`⯽?`ȭ ?b!`⯽?b!3?`ȭ?`ȭ?b!3ʳ?0a?b!3?b!ʳ?0aʳ?0a?b!,?`e,?`eC?b!3ϼ?dC?b!3ȓ?b! ϼ?dϼ?dȓ?b! jN? ȓ?b! .?b!jN? jN? .?b!?f%?f%Z?b!M?lZ?b!e?b!XM?le?b!X6?b!6M?lM?l6?b!6!?벽R?p?:?p?'M?8_:?p?o5?&'M?8_'M?8_o5?&4?p谽4?p谽o5?&?`ȭʳ?0a,?`eD?lD?l,?`eϼ?djN? ?f%?p?p?f%?p?p?f%M?lM?l!?벽?p3?p3!?벽?d>!?벽(?p??d>'M?8_4?p谽 @?"pڰ @?"pڰ4?p谽!?g'l4?p谽?`ȭ!?g'l!?g'l?`ȭ`?"W?`ȭʳ?0a`?"W`?"Wʳ?0a?g'u?g'uʳ?0ae?"/ʳ?0aD?le?"/e?"/D?l{?g'#{?g'#D?l?"ݧD?lϼ?d?"ݧ?"ݧϼ?dp?g' Чϼ?djN? p?g' Чp?g' ЧjN? /?"jN? ?p/?"/?"?p?"@'?p?p?"@'?"@'?pv?g'v?g'?pD?"`୽?pM?lD?"`୽D?"`୽M?l?"M?l?p3?"?"?p3v ?g'?p3?d>v ?g'v ?g'?d> ?w&p?2g?^7p?R?p?b?5@jR?p?'M?8_b?5@jb?5@j'M?8_W?5'M?8_ @?"pڰW?5W?5 @?"pڰZD?5믽ZD?5믽 @?"pڰ!?g'l!?g'l`?"WH ?5PʬH ?5Pʬ`?"W?5m?5m`?"W?g'u?g'ue?"/?5;?5;e?"/S?5nS?5ne?"/{?g'#{?g'#?"ݧ?50?50?"ݧ?5b?5b?"ݧp?g' Чp?g' Ч/?"D7?5 ݧD7?5 ݧ/?"[?5s[?5s/?"[?5A/?"?"@'[?5A[?5A?"@')?5C)?5C?"@'v?g'v?g'D?"`୽kJ?5ӬkJ?5ӬD?"`୽C*?5@VC*?5@VD?"`୽?5D?"`୽?"?5?5?"! ?5Ю! ?5Ю?"v ?g'ZD?5믽!?g'lx1?hH/x1?hH/!?g'lH ?5Pʬ?5m?g'u@?hH @?hH ?g'u?5;S?5n{?g'#@?hH @?hH {?g'#?50?5bp?g' Чo?hH0Do?hH0Dp?g' ЧD7?5 ݧ)?5Cv?g'ik?hHHik?hHHv?g'kJ?5Ӭ! ?5Юv ?g'M ?hH0kM ?hH0kv ?g' ?Fp?v ?g' ?w&p? ?Fp?>u?i?2g?^7p?l?LSpe2g?^7p?b?5@jl?LSpel?LSpeb?5@jGa?LSb?5@jW?5Ga?LSGa?LSW?51N?LSѯW?5ZD?5믽1N?LSѯ1N?LSѯZD?5믽x1?hH/x1?hH/H ?5Pʬ?ri`?ri`H ?5Pʬ?LS7H ?5Pʬ?5m?LS7?LS7?5m@?hH @?hH ?5;Ǎ?LSǍ?LS?5;X?LS`$?5;S?5nX?LS`$X?LS`$S?5n@?hH @?hH ?50?LS/?LS/?50Ϫ?LS?50?5bϪ?LSϪ?LS?5bo?hH0Do?hH0DD7?5 ݧR5?LSR5?LSD7?5 ݧ?LS`$D7?5 ݧ[?5s?LS`$?LS`$[?5s?riϨ[?5s[?5A?riϨ?riϨ[?5A̔?ri٩[?5A)?5C̔?ri٩̔?ri٩)?5Cik?hHHik?hHHkJ?5Ӭ??ri0|??ri0|kJ?5Ӭ!?LS'kJ?5ӬC*?5@V!?LS'!?LS'C*?5@V?ri C*?5@V?5?ri ?ri ?5- ?ri~?5! ?5Ю- ?ri~- ?ri~! ?5ЮM ?hH0k>u?i?l?LSpep?jpap?jpal?LSped?jl?LSpeGa?LSd?jd?jGa?LSQ?jƯGa?LS1N?LSѯQ?jƯQ?jƯ1N?LSѯ=7?j`1N?LSѯx1?hH/=7?j`=7?j`x1?hH/?ri`?ri`?LS7~?j!~?j!?LS7y?j橽?LS7@?hH y?j橽y?j橽@?hH ?jܨ@?hH Ǎ?LS?jܨ?jܨǍ?LSY?j Ǎ?LSX?LS`$Y?j Y?j X?LS`$I!?j nX?LS`$@?hH I!?j nI!?j n@?hH ?j@?hH ?LS/?j?j?LS/Ϫ?j`?LS/Ϫ?LSϪ?j`Ϫ?j`Ϫ?LSo?jϪ?LSo?hH0Do?jo?jo?hH0DU4?j no?hH0DR5?LSU4?j nU4?j nR5?LS?j R5?LS?LS`$?j ?j ?LS`$?riϨ̔?ri٩ik?hHH g?j! g?j!ik?hHH??ri0|??ri0|!?LS'a?j`a?j`!?LS'?ri - ?ri~M ?hH0k ?jpa ?jpaM ?hH0k ?jp?M ?hH0k ?Fp? ?jp?>?Xp?]B?}p?B?Z]B?}p?rE?}зB?ZB?ZrE?}зK?Z1rE?}зU?}K?Z1K?Z1U?}#[?Z#[?ZU?}0p?ZU?}r?}@ẽ0p?Z0p?Zr?}@ẽ?Z*r?}@ẽl?}ü?Z*?Z*l?}ü?ZPH?ZPHl?}ü?ZBl?}ü?}?ZB?ZB?}G?ZG?Z?}?Z?}9?}?Z?Z9?}L?Z8L?Z89?}{?Z9?}{?}`j{?Z{?Z{?}`j?Z{?}`j?}?Z?Z?}r?Zr?Z?} ?Z@7?}!?}濽 ?Z@7 ?Z@7!?}濽6?Zм6?Zм!?}濽`?Zp!?}濽#v?}@`?Zp`?Zp#v?}@4?Z@4?Z@#v?}@?ZF#v?}@w?}𜼽?ZF?ZFw?}𜼽??Z(??Z(w?}𜼽?Z뺽w?}𜼽$?}&?Z뺽?Z뺽$?}&?Z?Z$?}& ?Z@.$?}& ?}Y ?Z@. ?Z@. ?}Y#?ZP#?ZP ?}Y?-\p? ?}YB?}p??-\p?0?k1p?>?Xp?4?2 ж>?Xp?B?Z4?2 ж4?2 жB?Z>?20SB?ZK?Z1>?20S>?20SK?Z1N?2ȹK?Z1#[?ZN?2ȹN?2ȹ#[?Z~d?2*#[?Z0p?Z~d?2*~d?2*0p?Z?2Pr0p?Z?Z*?2Pr?2Pr?Z*?2?Z*?ZPH?2?2?ZPH?2 ?ZPH?ZB?2 ?2 ?ZB?2x?ZBG?Z?2x?2xG?Z7?2&G?Z?Z7?2&7?2&?ZI?2?ZL?Z8I?2I?2L?Z8hz?2L?Z8{?Zhz?2hz?2{?Z?2 {?Z?Z?2 ?2 ?Z?2?Zr?Z?2?2r?ZH ?20r?Z ?Z@7H ?20H ?20 ?Z@7;?2p! ?Z@76?Zм;?2p!;?2p!6?Zм1h?2r6?Zм`?Zp1h?2r1h?2r`?Zp)?2`?Zp4?Z@)?2)?24?Z@3?24?Z@?ZF3?23?2?ZF?2pg?ZF??Z(?2pg?2pg??Z(?2??Z(?Z뺽?2?2?Z뺽?20?Z뺽?Z?20?20?Zv?2F?Z ?Z@.v?2Fv?2F ?Z@. ?2¶ ?Z@.#?ZP ?2¶ ?2¶#?ZPB#?E4p?#?ZP?-\p?B#?E4p??o?0?k1p?$?YЂ0?k1p?4?2 ж$?YЂ$?YЂ4?2 ж>5?b!4?2 ж>?20S>5?b!>?20SN?2ȹ>5?b!>5?b!N?2ȹg?fpͼN?2ȹ~d?2*g?fpͼg?fpͼ~d?2*?b!K~d?2*?2Pr?b!K?2Pr?2?b!K?b!K?2?b!Pm?2?2 ?b!Pm?2 ?2x?b!Pm?b!Pm?2x)?b!?2x7?2&)?b!7?2&I?2)?b!)?b!I?2Ī?YpI?2hz?2Ī?YpĪ?Yphz?2?b!hz?2?2 ?b!?2 ?2?b!?b!?2*??2H ?20*?*?H ?20qV?b!PH ?20;?2p!qV?b!P;?2p!1h?2rqV?b!PqV?b!P1h?2r!?1h?2r)?2!?!?)?2?b!k)?23?2?b!k3?2?2pg?b!k?b!k?2pg ?b!ú?2pg?2 ?b!ú?2?20 ?b!ú ?b!ú?20K,?b!?20v?2FK,?b!v?2F ?2¶K,?b!K,?b! ?2¶v8?p? ?2¶B#?E4p?v8?p?$?YЂ>5?b!g?fpͼg?fpͼ?b!Kz?p'?b!K?b!Pmz?p'?b!Pm)?b!z?p'z?p')?b!Fc?)?b!Ī?YpFc?Ī?Yp?b!*?*?qV?b!P!?!??b!k?%?b!k ?b!ú?%?% ?b!úl4? ?b!úK,?b!l4?l4?K,?b!v8?p??p??o?v?8v?8?o?!?pЕ?o?$?YЂ!?pЕ!?pЕ$?YЂb?l0c$?YЂg?fpͼb?l0cb?l0cg?fpͼz?p' ?8z?p'Fc?Fc?Ī?Yp?p A½?p A½Ī?Yp5?pĪ?Yp*?5?p5?p*?ǖ?pP*?!?ǖ?pPǖ?pP!?N?l !??%N?l N?l ?%l4?l4?v8?p?M?d?v?8!?pЕ?"p?"p!?pЕG?" ż!?pЕb?l0cG?" żG?" żb?l0c8y?g'߾8y?g'߾b?l0c?"pqb?l0cz?p'?"pq?"pqz?p' ?8 ?8Fc?Y?"pi½Y?"pi½Fc??"½Fc??p A½?"½?"½?p A½?g'pT½?p A½5?p?g'pT½?g'pT½5?pk?":5?pǖ?pPk?":k?":ǖ?pP?"Dǖ?pPN?l ?"D?"DN?l ?"?"N?l C<?g'@cN?l l4?C<?g'@cC<?g'@cl4?P?"Ʒl4?M?d?P?"ƷP?"ƷM?d?[?w&p?l ?^7p??p? ?5?p?v?8 ?5 ?5v?8 ?5۸v?8?"p ?5۸ ?5۸?"pD?5D?5?"p+?53?"pG?" ż+?53+?53G?" żVK?5VK?5G?" ż8y?g'߾8y?g'߾?"pq]?5B]?5B?"pq?5C?5C?"pq?5`½?"pq ?8?5`½?5`½ ?88?5½ ?8Y?"pi½8?5½8?5½Y?"pi½q?5½q?5½Y?"pi½?5@ýY?"pi½?"½?5@ý?5@ý?"½u?5½u?5½?"½?g'pT½?g'pT½k?":DU?5 ½DU?5 ½k?":C?5=C?5=k?":t?50;k?":?"Dt?50;t?50;?"D?5?5?"D3 ?5?"D?"3 ?53 ?5?"[+?5([+?5(?"C<?g'@cC<?g'@cP?"Ʒ|W?5и|W?5иP?"Ʒb?5b?5P?"Ʒ[?w&p?VK?58y?g'߾k?hH:k?hH:8y?g'߾]?5Bu?5½?g'pT½?hH ½?hH ½?g'pT½DU?5 ½[+?5(C<?g'@cK?iHPK?iHPC<?g'@c|W?5иb?5[?w&p?m?Fp?` ?i`?l ?^7p? ?ri`l ?^7p? ?5 ?ri` ?ri` ?5e ?rip鸽 ?5 ?5۸e ?rip鸽e ?rip鸽 ?5۸~?ri` ?5۸D?5~?ri`~?ri`D?5!?LS0WD?5+?53!?LS0W!?LS0W+?53>?riス+?53VK?5>?riス>?riスVK?5k?hH:k?hH:]?5Bg?rig?ri]?5B,?ri]?5B?5C,?ri,?ri?5C?LSZ½?5C?5`½?LSZ½?LSZ½?5`½R5?LS0½?5`½8?5½R5?LS0½R5?LS0½8?5½o?LSOý8?5½q?5½o?LSOýo?LSOýq?5½L?riýq?5½?5@ýL?riýL?riý?5@ý?LSOý?5@ýu?5½?LSOý?LSOýu?5½?hH ½?hH ½DU?5 ½X?LSZ½X?LSZ½DU?5 ½Ǎ?LS`DU?5 ½C?5=Ǎ?LS`Ǎ?LS`C?5=?riC?5=t?50;?ri?rit?50;?LSPGt?50;?5?LSPG?LSPG?5?LS ⽽?53 ?5?LS ⽽?LS ⽽3 ?5A7?rit3 ?5[+?5(A7?ritA7?rit[+?5(K?iHPK?iHP|W?5иGa?LSP븽Ga?LSP븽|W?5иl?LSp|W?5иb?5l?LSpl?LSpb?5m?Fp?~?ri`!?LS0Wa?jfa?jf!?LS0W>?riス>?riスk?hH:g?j\g?j\k?hH:g?ri,?ri?LSZ½?jv½?jv½?LSZ½T4?jý?LSZ½R5?LS0½T4?jýT4?jýR5?LS0½o?j nýR5?LS0½o?LSOýo?j nýo?j nýo?LSOýL?riýL?riý?LSOý?j ný?j ný?LSOýI!?jý?LSOý?hH ½I!?jýI!?jý?hH ½Y?jv½?hH ½X?LSZ½Y?jv½Y?jv½X?LSZ½?jX?LSZ½Ǎ?LS`?j?jǍ?LS`?ri?ri?LSPG~?j\~?j\?LSPG?j?LSPG?LS ⽽?j?j?LS ⽽A7?ritA7?ritK?iHPQ?jиQ?jиK?iHPd?j@K?iHPGa?LSP븽d?j@d?j@Ga?LSP븽p?jpGa?LSP븽l?LSpp?jpp?jpl?LSpt?jp?l?LSpm?Fp?t?jp?33?hڍp?iD? p?*-?ۍ@ѲiD? p?@? *-?ۍ@Ѳ@? s6? Pﱽ*-?ۍ@Ѳ*-?ۍ@Ѳs6? PﱽT?/ۍs6? Pﱽ;%? YT?/ۍT?/ۍ;%? Y?ۍa;%? Y ? ٮ?ۍa ? ٮ? t?ۍa?ۍa? t?ۍ0? tp? `2?ۍ0p? `2(? ?ۍ0?ۍ0(? 4X?ݍ(? w? )4X?ݍw? )G? l4X?ݍ4X?ݍG? l?ۍ)G? l? P⨽?ۍ)? P⨽E? ?ۍ)?ۍ)E? ?ۍE? Ϫ? r ?ۍϪ? rXu? ?ۍ ?ۍXu? G?/ۍYXu? @? P⨽G?/ۍYG?/ۍY@? P⨽?ۍ6@? P⨽? l?ۍ6? l? )?ۍ6?ۍ6? )?/ۍq? )u? ?/ۍq?/ۍqu? ?ۍ&u? -? `2?ۍ&-? `2e? t?ۍ&?ۍ&e? tJ?gۍ0e? tH? ٮJ?gۍ0H? ٮc0? YJ?gۍ0J?gۍ0c0? Y&&?ۍ c0? Y*? Pﱽ&&?ۍ *? Pﱽ? &&?ۍ &&?ۍ ? ?ۍp?? 6? p? ?ۍp??ۍ04X?ݍ U?֍`R U?֍`R4X?ݍ?ۍ)J?gۍ0&&?ۍ 9?֍0f ?Gp?33?hڍp?]?Í`33?hڍp?*-?ۍ@Ѳ]?Í`]?Í`*-?ۍ@Ѳ?Í;?Í;*-?ۍ@Ѳ/?Í@Ȱ*-?ۍ@ѲT?/ۍ/?Í@Ȱ/?Í@ȰT?/ۍ?ÍPhT?/ۍ?ۍa?ÍPh?ÍPh?ۍae?Í"e?Í"?ۍa!?Í?ۍa?ۍ0!?Í!?Í?ۍ0S?ÍS?Í?ۍ0f?Í?ۍ0 U?֍`Rf?Íf?Í U?֍`R:?Ío:?Ío U?֍`RK ?Í0 U?֍`R?ۍ)K ?Í0K ?Í0?ۍ)=?Í =?Í ?ۍ)V?Í?ۍ) ?ۍV?ÍV?Í ?ۍmz?Ímz?Í ?ۍWJ?Í ?ۍG?/ۍYWJ?ÍWJ?ÍG?/ۍY?ÍlG?/ۍY?ۍ6?Íl?Íl?ۍ6?Íp?Íp?ۍ6!?Í򫽰?ۍ6?/ۍq!?Í!?Í򫽃?/ۍq<?Í?/ۍq?ۍ&<?Í<?Í?ۍ&ށ?Í@ށ?Í@?ۍ&f?Ía?ۍ&J?gۍ0f?Íaf?ÍaJ?gۍ0P?ÍpJ?gۍ09?֍0fP?ÍpP?Íp9?֍0fA?Í3A?Í39?֍0fd7?Í9?֍0f&&?ۍ d7?Íd7?Í&&?ۍ k3?ōp?&&?ۍ ?ۍp?k3?ōp?p?p? ?Gp??yų ?Gp?]?Í`?yų?yų]?Í`i ?yQ]?Í`?Í;i ?yQi ?yQ?Í;*?x`鰽?Í;/?Í@Ȱ*?x`鰽*?x`鰽/?Í@Ȱ0?y/?Í@Ȱ?ÍPh0?y0?y?ÍPh?zX?ÍPhe?Í"?zX?zXe?Í"?y ;e?Í"!?Í?y ;?y ;!?Í܇?y@!?ÍS?Í܇?y@܇?y@S?Íf`?ymS?Íf?Íf`?ymf`?ymf?Í5?ypŪf?Í:?Ío5?ypŪ5?ypŪ:?Ío?y0K:?ÍoK ?Í0?y0K?y0KK ?Í0R?yK ?Í0=?Í R?yR?y=?Í ?y詽=?Í V?Í?y詽?y詽V?Í{?yV?Ímz?Í{?y{?ymz?ÍM?yJmz?ÍWJ?ÍM?yJM?yJWJ?Í ?yĪWJ?Í?Íl ?yĪ ?yĪ?Ílw?ypl?Íl?Ípw?yplw?ypl?Íp?xP??Íp!?Í?xP??xP?!?ÍG?z9!?Í<?ÍG?z9G?z9<?Í?yW<?Íށ?Í@?yW?yWށ?Í@p?yށ?Í@f?Íap?yp?yf?Ía[?yP簽f?ÍaP?Íp[?yP簽[?yP簽P?ÍpGL?yNP?ÍpA?Í3GL?yNGL?yNA?Í3C?yPóA?Í3d7?ÍC?yPóC?yPód7?Í??Mp?d7?Ík3?ōp???Mp?B?}p?p?p?,?}dzp?p??yų,?}dz,?}dz?yų?}?yųi ?yQ?}i ?yQ*?x`鰽?}?}*?x`鰽?}@*?x`鰽0?y?}@0?y?zX?}@?}@?zX?}pH?zX?y ;?}pH?}pH?y ;2v?}뫽?y ;܇?y@2v?}뫽܇?y@f`?ym2v?}뫽2v?}뫽f`?ym"?} f`?ym5?ypŪ"?} 5?ypŪ?y0K"?} "?} ?y0K?}0?y0KR?y?}0R?y?y詽?}0?}0?y詽g?}(?y詽{?yg?}({?yM?yJg?}(g?}(M?yJ ?}`תM?yJ ?yĪ ?}`ת ?}`ת ?yĪ?}Ϋ ?yĪw?ypl?}Ϋw?ypl?xP??}Ϋ?}Ϋ?xP?w?}?xP?G?z9w?}G?z9?yWw?}w?}?yWr?}?yWp?yr?}r?}p?yU?}p?y[?yP簽U?}[?yP簽GL?yNU?}U?}GL?yNrE?}dzGL?yNC?yPórE?}dzrE?}dzC?yPó]B?}p?C?yPó??Mp?]B?}p?i?⍾?? 붽*?Xٍ@? 붽*? *?Xٍ@*?Xٍ@*? G?܍׺*? c0? `%G?܍׺c0? `%H? ХG?܍׺G?܍׺H? ХC?܍ЅH? Хe? @ C?܍Ѕe? @ ?JC?܍Ѕ?Ju? g3?Xٍ:u? g? 0U3?Xٍ:? 0U ?3?Xٍ: ?@? \?܍@? Xu? 0\?܍Xu? 0? ½\?܍? ½E? 0:)?XٍE? 0? :)?Xٍ? G? :)?Xٍ:)?XٍG? ?܍G? w? 0U?܍w? 0U(? g?܍?܍(? g ?܍[(? gp? L ?܍[p? L?P ?܍[?P ? Х?Xٍ) ? Х;%? `%?Xٍ);%? `%s6? ?Xٍ)?Xٍ)s6? >D?፾?s6? @? 붽>D?፾?;0?ʍp?i?⍾?*?Xٍ@*?Xٍ@G?܍׺K?̍ K?̍ G?܍׺6k?ҍG?܍׺C?܍Ѕ6k?ҍ6k?ҍC?܍Ѕ?̍ C?܍Ѕ?J?̍ ?̍ ?J3?Xٍ:3?Xٍ: ?ka?ҍ0 ?\?܍ka?ҍ0ka?ҍ0\?܍%?͍\?܍? ½%?͍%?͍? ½:)?Xٍ:)?Xٍ?܍g?̍g?̍?܍|?ҍE?܍ ?܍[|?ҍE|?ҍE ?܍[~?ҍ份 ?܍[?P ~?ҍ份~?ҍ份?P ?Xٍ)?Xٍ)>D?፾?"?̍ն"?̍ն>D?፾?@'?͍?;0?ʍp?*?Xٍ@:?:?*?Xٍ@K?̍ K?̍ 6k?ҍ=s?p˻=s?p˻6k?ҍ?̍ ?̍ 3?Xٍ:!?!?3?Xٍ:(3?^3?Xٍ:ka?ҍ0(3?^(3?^ka?ҍ0X?0ka?ҍ0%?͍X?0%?͍:)?Xٍ$?X$?X:)?Xٍg?̍g?̍|?ҍE0? 0? |?ҍE?༻|?ҍE~?ҍ份?༻?༻~?ҍ份?~?ҍ份?Xٍ)???Xٍ)"?̍նd??p?;0?ʍp?B?ǣ0;0?ʍp?:?B?ǣ0B?ǣ0:?MK?ǣ.MK?ǣ.:?Z?ǣP:?K?̍ Z?ǣPZ?ǣPK?̍ o?ǣ캽K?̍ =s?p˻o?ǣ캽o?ǣ캽=s?p˻?ǣ)?ǣ)=s?p˻X?ƣH=s?p˻?̍ X?ƣHX?ƣH?̍ ?ǣ@C?̍ !??ǣ@C?ǣ@C!??ƣ?ƣ!?R?ǣ!?(3?^R?ǣR?ǣ(3?^aL?ǣ`:aL?ǣ`:(3?^ {?ǣ(3?^X?0 {?ǣ {?ǣX?0?ǣ?ǣX?0?ǣpX?0%?͍?ǣp?ǣp%?͍?ǣp;%?͍$?X?ǣp;?ǣp;$?X5?ǣ`5?ǣ`$?X}`?ǣ@$?Xg?̍}`?ǣ@}`?ǣ@g?̍?ǣEg?̍0? ?ǣE?ǣE0? ?ǣ K?ǣ K0? J?ǣ-0? ?༻J?ǣ-J?ǣ-?༻?ǣ?ǣ𺽘?༻?ȣP?༻??ȣP?ȣP?, ?ǣ2, ?ǣ2?~?ǣ?"?̍ն~?ǣ~?ǣ"?̍ն!?ܥp?"?̍ն@'?͍?!?ܥp?]B?}p?d??p?rE?}зd??p?B?ǣ0rE?}зrE?}зB?ǣ0S?}ǸB?ǣ0MK?ǣ.S?}ǸMK?ǣ.Z?ǣPS?}ǸS?}ǸZ?ǣP|?}`oZ?ǣPo?ǣ캽|?}`oo?ǣ캽?ǣ)|?}`o|?}`o?ǣ)K?}Ъ?ǣ)X?ƣHK?}ЪX?ƣH?ǣ@CK?}ЪK?}Ъ?ǣ@C8?}PS?ǣ@C?ƣ8?}PS?ƣR?ǣ8?}PS8?}PSR?ǣ:a?} LR?ǣaL?ǣ`::a?} LaL?ǣ`: {?ǣ:a?} L:a?} L {?ǣ??} {?ǣ?ǣ??}?ǣ?ǣp??}??}?ǣp?}p?ǣp?ǣp;?}p?ǣp;5?ǣ`?}p?}p5?ǣ`p?}௾5?ǣ`}`?ǣ@p?}௾}`?ǣ@?ǣEp?}௾p?}௾?ǣE?}`6?ǣE?ǣ K?}`6?}`6?ǣ KQ?}Й?ǣ KJ?ǣ-Q?}ЙJ?ǣ-?ǣQ?}ЙQ?}Й?ǣ?}?ǣ?ȣP?}?}?ȣPd ?} ?ȣP, ?ǣ2d ?} , ?ǣ2~?ǣd ?} d ?} ~?ǣB?}p?~?ǣ!?ܥp?B?}p?R? l?tl??džӳl?tK? K? l?tR? K? ? ճ?džӳe? TD?^~? ~? D?^?΃ ~? ?΃ ? ճ? ճ?΃ ?džӳy? }X|?~}? }? X|?~e? Te? TX|?~D?^}? y? y? }y? y? p?y? }y? }y? p?y?|p?? p?? ?|`?? H?!~? H?!~?|`?? ? 9? TH?!~H?!~9? T?߀0V?@?߀0V? ? ?߀0V9? T? ? ճ?@?@? ճh?aسl?h?aسR? R? h?aس? ճy? p?y? jy?|p?}? PϵE|?~õy? jE|?~õy?|p?y? j}? Pϵe? `*E|?~õE|?~õe? `*8?+v?8?+~? t~? t8?+e? `*~? t? Щv?v?? Щ&?K? 0Ŷ&?? ЩK? 0Ŷ?d0ɶ&??dž𪶽{?- ĶR? 0ŶR? 0Ŷ{?- ĶK? 0Ŷ{?- Ķ?d0ɶK? 0ŶR? 0Ŷ? Щ?dž𪶽9? `*Z? ? t? tZ? ?΃r? t?΃r? Щ? Щ?΃r?dž𪶽? }0kF?~ õ? Pϵ? PϵF?~ õ9? `*9? `*F?~ õZ? ? Pϵ? j? }0k? j? p?? }0k? }0k? p??|p?Y'?%' LY'? LY'?ҞY'? LY'?mdY'?ҞY'?ҞY'?mdY'?m0Y'? P~Y'?0Y'?m0Y'?ҞY'?m0Y'?/ɏY'?/ɏY'?m0Y'?0Y'?JOY'?eGY'?2৆Y'?2৆Y'?eGY'?@Y'?@Y'?jY'?2৆Y'?/ɏY'?GPcY'?ҞY'?ҞY'?GPcY'?ᏽY'?jY'?쉽Y'?2৆Y'?2৆Y'?쉽Y'?m0Y'?쉽Y'? P~Y'?m0Y'?cPY'?ҒڵY'?2৆Y'?{PY'?VɏY'?/!PcY'?$OY'?.?GY'?V৆Y'?V৆Y'?.?GY'?@Y'?B쉽Y'?萾P~Y'?2৆Y'?萾P~Y'?͐0Y'?2৆Y'?2৆Y'?͐0Y'?cPY'?͐0Y'?VɏY'?cPY'?{PY'?vY'?VɏY'?vY'?؏Y'?VɏY'?VɏY'?؏Y'?DY'?ӄᏽY'?$OY'?V˽Y'?V˽Y'?$OY'?V৆Y'?@Y'?돾jY'?V৆Y'?V৆Y'?돾jY'?2৆Y'?돾jY'?B쉽Y'?2৆Y'?Y'?UY'?VɏY'?VɏY'?UY'?cPY'?ᏽY'?JOY'?ҞY'?JOY'?2৆Y'?ҞY'?ҞY'?2৆Y'?S Y'?2৆Y'?ҒڵY'?S Y'?S Y'?ҒڵY'?S]ŽY'?ҒڵY'?ǩY'?S]ŽY'?ǩY'?u``Y'?S]ŽY'?S]ŽY'?u``Y'? `ﺽY'?jY'?{PY'?V˽Y'?DY'?`Y'?VɏY'?VɏY'?`Y'?Y'?/!PcY'?ӄᏽY'?{PY'?{PY'?ӄᏽY'?V˽Y'? `ﺽY'?Q컽Y'?S]ŽY'?S]ŽY'?Q컽Y'?V˽Y'?V˽Y'?Q컽Y'?Y'?Y'?$`Y'?V˽Y'?V˽Y'?$`Y'?jY'?͐07߽Y'?VzY'?VY'?.?۽Y'? ڽY'?V˽Y'?V˽Y'? ڽY'?돾ڽY'?VY'?ӄY'?$޽Y'?S]ŽY'?BڽY'?`˽Y'?`˽Y'?BڽY'?萾P/ݽY'?VzY'?/!PY'?VY'?VY'?/!PY'?ӄY'?VY'?$޽Y'?V˽Y'?$޽Y'?.?۽Y'?V˽Y'?`˽Y'?萾P/ݽY'?VY'?萾P/ݽY'?͐07߽Y'?VY'?돾ڽY'?BڽY'?V˽Y'?V˽Y'?BڽY'?S]ŽY'?e۽Y'? ڽY'?`˽Y'?`˽Y'? ڽY'?ڽY'?VY'?Y'?J޽Y'? P/ݽY'?07߽Y'?m޽Y'?m޽Y'?07߽Y'?2Y'?2Y'?07߽Y'?/zY'?VY'?J޽Y'?`˽Y'?J޽Y'?e۽Y'?`˽Y'?/zY'?GPY'?2Y'?2Y'?GPY'?VY'?GPY'?Y'?VY'?m˽Y'?ڽY'?m޽Y'?ڽY'? P/ݽY'?m޽Y'?ڽY'?ڽY'?m˽Y'?ڽY'?m˽Y'?`˽Y'?m˽Y'?2ĽY'?`˽Y'?`˽Y'?2ĽY'?%'2ĽY'?@b(?@b(?G?Y'?@b(?G?Y'?gP(?G?(?:Y'?gPY'?gP(?:Y'?͐(?:(?\ѐbY'?͐(?\ѐb(?k搾Y'?͐Y'?͐(?k搾Y'?k搾 ֌(?k搾(?͐ 8Y'?k搾 ֌Y'?k搾 ֌(?͐ 8Y'?\ѐ`kY'?\ѐ`k(?͐ 8Y'?:@B(?͐ 8(?gY'?:@BY'?:@B(?gY'?G(?g(?kY'?GY'?G(?kY'?kY'?0(?0(?GY'?0(?GY'?gP(?G(?:Β%?S]Ž%?S]Ž%?>Β%?0%?GPc%? L%?/ɏ%? L%?|j`k%?/ɏ%?JO%?eG%?`%?`%?eG%?@%?`%?Ӛ%? P~%? P~%?0%?|j`k%?|j`k%?0%?/ɏ%?@%?j%?`%?`%?j%?{%?|j`k%?|j*%? P~%?|j*%?`%? P~%?GPc%?ܙ/%? L%? L%?ܙ/%?݄ ;%?݄ ;%?JO%? L%? L%?JO%?`%?{%?Ӛ%?`%?bҕP~%?30%?Ҟ%?Ҟ%?30%?pɏ%?M/%?NI ;%? z%? z%?NI ;%?HO%?HO%?x)G%?J`%?J`%?x)G%? q@%?^@%?]%?`%?`%?]%?bҕP~%?Ҟ%?%' L%?bҕP~%?%' L%?`%?bҕP~%?pɏ%?y Pc%?Ҟ%?Ҟ%?y Pc%?S %?S %?y Pc%? z%?y Pc%?M/%? z%? q@%?2֔j%?J`%?J`%?2֔j%?`%?2֔j%?^@%?`%?H޽%?x)۽%?S]Ž%?S %? z%?S]Ž%?S]Ž%?x)۽%?`˽%?`˽%?x)۽%? q ڽ%? q ڽ%?2֔ڽ%?`˽%?bҕP/ݽ%?307߽%?݄ ߽%?݄ ߽%?307߽%?pz%?݄ ߽%?2Ľ%?bҕP/ݽ%?bҕP/ݽ%?2Ľ%?]C۽%?pz%?y P%?݄ ߽%?݄ ߽%?y P%?%?%?y P%?M`%?NI ߽%?H޽%?%?%'2Ľ%?`˽%?2Ľ%?M`%?NI ߽%?%?2֔ڽ%?^@`Oڽ%?`˽%?`˽%?^@`Oڽ%?2Ľ%?^@`Oڽ%?]C۽%?2Ľ%?e۽%? ڽ%?2Ľ%?2Ľ%? ڽ%?ڽ%?ӚC۽%? P/ݽ%?|jp˽%?݄ ߽%?J޽%?2Ľ%?J޽%?e۽%?2Ľ%?|jp˽%? P/ݽ%?|jS%? P/ݽ%?07߽%?|jS%?|jS%?07߽%?%?%?07߽%?/z%?/z%?GP%?%?%?GP%?݄ ߽%?GP%?ܙ`%?݄ ߽%?ڽ%?{`Oڽ%?2Ľ%?2Ľ%?{`Oڽ%?|jp˽%?|jp˽%?{`Oڽ%?ӚC۽%?jŎp馽%?j`%?jp馽%?V%?%?J`%?J`%?%?萾P~%?萾P~%?͐0%?jŎp馽%?jŎp馽%?͐0%?Vɏ%?Vɏ%?/!Pc%?jŎp馽%?jŎp馽%?bX%?JÐƮ%?N%?돾j%?^`%?^`%?돾j%?J`%?돾j%?V%?J`%?/!Pc%?/%?jŎp馽%?/%?s%?jŎp馽%?jŎp馽%?s%?j`%?j`%?,%?^`%?s%?,ˍ%?j`%?j`%?,ˍ%?,%?pܽ%?㐾 ݽ%?%?0@gܽ%?NЯڽ%?jŎpý%?V`Oڽ%?C۽%?jŎpý%?㐾 ݽ%?͐07߽%?%?%?͐07߽%?Vz%?Vz%?/!P%?%?%?/!P%?j%?NЯڽ%?돾ڽ%?jŎpý%?돾ڽ%?V`Oڽ%?jŎpý%?/!P%?%?j%?%?jֽ%?j%?jpý%?0@gܽ%?jŎpý%?,|޽%?0@gܽ%?jֽ%?jֽ%?0@gܽ%?jpý%?萾P~%?jŎp馽%?J`%?jŎp馽%? z%?J`%?J`%? z%?HO%?C۽%?pܽ%?jŎpý%?pܽ%?%?jŎpý%?jŎpý%?%?S]Ž%?S]Ž%?%?H޽Y'?ܓY'?Y'?S Y'?`˽Y'?e۽Y'?%'2ĽY'?&Y'?ǮY'?S Y'?~ ûY'?&`绽Y'?7涽Y'?&`绽Y'?#@Y'?7涽Y'?7涽Y'?#@Y'?Vb`'Y'?uY'?؏Y'?VvY'?؏Y'?~ Y'?VvY'?VvY'?~ Y'?mt04Y'?&Y'?S Y'?4ϐY'?7涽Y'?} bY'?VvY'?} bY'?c@Y'?VvY'?VvY'?c@Y'?uY'?Vb`'Y'? iY'?7涽Y'? iY'?a܏rY'?7涽Y'?7涽Y'?a܏rY'?򬏾QY'? Y'?u`Y'?S]ŽY'?u`Y'?N/wY'?S]ŽY'?S]ŽY'?N/wY'?7涽Y'?N/wY'?~ ûY'?7涽Y'?۠-Y'?Ò Y'?S Y'?Ò Y'?ВY'?S Y'?S Y'?ВY'?S]ŽY'?ВY'?jɒ~Y'?S]ŽY'?S]ŽY'?jɒ~Y'? Y'?w둾WY'?30Y'?S Y'?30Y'?mq0 Y'?S Y'?S Y'?mq0 Y'?۠-Y'?pܽY'?㐾 ݽY'?V@Y'?W>ܽY'?NЯڽY'?7涽Y'?V`OڽY'?C۽Y'?S]ŽY'?㐾 ݽY'?͐07߽Y'?V@Y'?V@Y'?͐07߽Y'?VzY'?VzY'?/!PY'?V@Y'?NЯڽY'?돾ڽY'?7涽Y'?7涽Y'?돾ڽY'?S]ŽY'?돾ڽY'?V`OڽY'?S]ŽY'?/!PY'?`Y'?V@Y'?`Y'?s3Y'?V@Y'?s3Y'??`7߽Y'?V@Y'??`7߽Y'?@&PݽY'?V@Y'?V@Y'?@&PݽY'?VvY'?@&PݽY'?W>ܽY'?VvY'?͐0Y'?VɏY'?S Y'?VY'?Y'?Y'?Y'?㐾0MY'?S Y'?S Y'?㐾0MY'?͐0Y'?VɏY'?/!PcY'?S Y'?S Y'?/!PcY'?VvY'?VvY'?/!PcY'?/Y'?Y'?돾jY'?Y'?돾jY'?VY'?Y'?/Y'?sY'?VvY'?Y'?Y'?,Y'?Y'?VvY'?,Y'?,ˍY'?,Y'?VvY'?V@Y'?̉@Y'?a`Y'?a`Y'?̉@Y'?05Y'?ʫY'?U6Y'?V@Y'?0޽Y'?앾߽Y'?݄ ߽Y'?݄ ߽Y'?앾߽Y'?05Y'?d5NڽY'?mٽY'?S]ŽY'?mٽY'?'ϔP/ٽY'?S]ŽY'?U6Y'?`Y'?V@Y'?`Y'?ܓХ޽Y'?V@Y'?iUpٽY'?iKڽY'?`˽Y'?iKڽY'?ڕ`۽Y'?`˽Y'?`˽Y'?ڕ`۽Y'?ܽY'?ؓݽY'?۽Y'?S]ŽY'?S]ŽY'?۽Y'?d5NڽY'?'ϔP/ٽY'?iUpٽY'?`˽Y'?GRpY'?ҞY'?|j`kY'?|j`kY'?ҞY'?%' LY'?ʫ,Y'?S Y'?apOY'?S Y'?ҞY'?apOY'?apOY'?ҞY'?PY'?ҞY'?GRpY'?PY'?5Y'?WY'?GRpY'?GRpY'?WY'?ڕmY'?@hY'?GRpY'?ًY'?GRpY'?ڕmY'?ًY'?@hY'?앾 Y'?GRpY'?GRpY'?앾 Y'?PY'?LIY'?IҔ~Y'?̉Y'?ʫ,Y'?U64Y'?S Y'?U64Y'?p`Y'?S Y'?p`Y'?ܓY'?S Y'?ؓeY'?يY'?ܓY'?ܓY'?يY'?LIY'?IҔ~Y'?5Y'?̉Y'?5Y'?GRpY'?̉Y'?GRpY'?|j`Y'?̉Y'?Y'? 0MY'?|j`Y'?0Y'?/ɏY'?|j`kY'?|j`kY'?/ɏY'?GPcY'?|j`Y'? 0MY'?|j`kY'? 0MY'?0Y'?|j`kY'?eGY'?@Y'?GRpY'?GRpY'?GPcY'?ܙ/Y'?GRpY'?OY'?eGY'?ܙ/Y'?݄ ;Y'?GRpY'?@Y'?jY'?GRpY'?GRpY'?jY'?|j`Y'?jY'?{Y'?|j`Y'?{Y'?ӚY'?|j`Y'?ӚY'?Y'?|j`Y'?GPcY'?GRpY'?|j`kY'?|j`kY'?%' LY'? LY'?'ϔP/ٽY'?`˽Y'?S]ŽY'?e۽Y'? ڽY'?ڽY'?%'2ĽY'?e۽Y'?2ĽY'?e۽Y'?ڽY'?2ĽY'?ӚC۽Y'?pܽY'?|jp˽Y'?݄ ߽Y'?GR`m޽Y'?O1ݽY'?ܽY'?0޽Y'?`˽Y'?0޽Y'?݄ ߽Y'?`˽Y'?`˽Y'?݄ ߽Y'?e۽Y'?݄ ߽Y'?O1ݽY'?e۽Y'?pܽY'? ݽY'?|jp˽Y'?|jp˽Y'? ݽY'?|jnY'? ݽY'?07߽Y'?|jnY'?|jnY'?07߽Y'?̉@Y'?̉@Y'?07߽Y'?/zY'?/zY'?GPY'?̉@Y'?̉@Y'?GPY'?݄ ߽Y'?GPY'?ܙ`Y'?݄ ߽Y'?ڽY'?{`OڽY'?2ĽY'?2ĽY'?{`OڽY'?|jp˽Y'?|jp˽Y'?{`OڽY'?ӚC۽Y'?05Y'?̉@Y'?݄ ߽Y'?VY'?VvY'?̉Y'?VvY'?Y'?̉Y'?Y'?ܓY'?̉Y'?̉Y'?ܓY'?LIY'?ǮY'?w둾WY'?S Y'?mt04Y'?4ϐY'?VvY'?4ϐY'?S Y'?VvY'?W>ܽY'?7涽Y'?VvY'?C۽Y'?pܽY'?S]ŽY'?pܽY'?V@Y'?S]ŽY'?S]ŽY'?V@Y'?ؓݽY'?V@Y'?ܓХ޽Y'?ؓݽY'?V@Y'?a`Y'?ʫὖ.$?jp軽g#?j Kj%?jiA5%?jۺo%?jР%?jýj%?jiA5%?jۺ.$?jp軽.$?jp軽A5%?jۺT$?j %A5%?jۺ%?jýT$?j %T$?j %%?jý^%?j½j%?jig#?j K%?jڱg#?j K$?j%?jڱo%?jР&?j ½%?jý%?jý&?j ½%?j彼&?j ½*&?j@ý%?j%?j*&?j@ým )?jm )?j*&?j@ý'?jЀ½m )?j`m )?jS(?j0S(?j0m )?j彭(?jФS(?j0|(?j࣯m )?j`m )?j`|(?j࣯N8(?jޫU%?j4$?j+%?j`4$?j5\%?j0E+%?j`+%?j`5\%?j0E,&?j5\%?j0E%?jp馽,&?j$?jil$?jث%?jڱ%?jڱil$?jثU%?jil$?jث4$?jU%?j'?jЀ½(?jm )?jm )?j归(?j9c(?jPʼ9c(?jPʼ(?jФm )?jN8(?jޫ'?jrm )?j`'?jr&?jѦm )?j`m )?j`&?jѦ%?j`%?j`&?jѦ%?jp馽%?jp馽&?jѦ,&?jm )?pgm )?j`m )?Vm )?Vm )?j`m )?V@m )?j`m )?cjm )?V@m )?V@m )?cjm )? X](? Ұ&? '? p(? pQ^v(? t'? `$^v(? '? t'? `$(? t'? `$c'? Hs!(? po&? B(? &? X](? ҰB(? ^v(? q(? O '?  '? q(? OX](? Ұt'? `$!c(? p#p(? pQ(? C(? Pnt'? `$t'? `$C(? Pn!c(? p#8&? &? 0 ½#&? ͶF%? /f[%? 𫹽'&? Pn'&? Pnf[%? 𫹽&? qf[%? 𫹽 v%? r&? q&? q v%? rJ%? pߢ%? `I&? Z[%? 6^'? '? &? '? &? `&? '? ^'? &? s!(? po'? 0&? '? 0'? &? c'? Ht'? `$('? Pt'? `$#&? Ͷ('? P#&? Ͷ&? q8&? 8&? &? qY&? @f&? `Y&? @f&? qJ%? p4%? 꾽&? q4%? 꾽&? `&? q'? #&? u&? `&? 0 ½!4'? #&? Ͷ!4'? \'? f#&? Ͷ#&? Ͷ\'? f('? PF%? /'&? Pn`B%? Ӵ'&? PnI&? Z`B%? Ӵ`B%? ӴI&? Z)H%? p-[%? 6I&? Z"&? ҩI&? Z&? `"&? ҩI&? ZU%? `[)H%? p-ߢ%? `'u%? pI&? ZI&? Z'u%? pU%? `[#&? u&? &? `&? [&? &? `&? `[&? "&? ҩ6H(?Xp?D(?}p?D(?ZP³D(?}p?=(?}`򲽥D(?ZP³D(?ZP³=(?}`Y;(?Z`MY;(?Z`M=(?}` ,(?ZP尽=(?}`b)(?}ﰽ ,(?ZP尽 ,(?ZP尽b)(?}ﰽ(?Z`b)(?}ﰽ(?}䮽(?Z`(?Z`(?}䮽'?ZPT'?ZPT(?}䮽2'?Z6(?}䮽?'?}pH2'?Z62'?Z6?'?}pHp'?Z;?'?}pHQ'?}Ϋp'?Z;p'?Z;Q'?}Ϋ'?Zh'?ZhQ'?}ΫAg'?ZQ'?}ΫNf'?}`תAg'?ZAg'?ZNf'?}`ת;:'?ZFNf'?}`ת'?}(;:'?ZF;:'?ZF'?}( '?Z '?Z'?}(*&?Z0䩽'?}(_&?}*&?Z0䩽*&?Z0䩽_&?}&?Z@_&?}&?}2&?Z@&?Z@&?}2~&?ZG~&?ZG&?}2Q&?Zª&?}29&?}+Q&?ZªQ&?Zª9&?}+|&&?Zpj|&&?Zpj9&?}+%?Z=9&?}+%?}`Ԭ%?Z=%?Z=%?}`ԬA%?Z8A%?Z8%?}`Ԭ%?ZV%?}`Ԭh%?}d%?ZV%?ZVh%?}d%?Z0h%?}d %?}X%?Z0%?Z0 %?}X%?Z`谽%?Z`谽 %?}XJ}%?ZP %?}Xy%?}0%J}%?ZPJ}%?ZPy%?}0% t%?Zų t%?Zųy%?}0%Qq%?.\p?y%?}0%s%?}p?Qq%?.\p?yV(?j1p?6H(?Xp?RR(?26H(?Xp?D(?ZP³RR(?2RR(?2D(?ZP³H(?2+D(?ZP³Y;(?Z`MH(?2+H(?2+Y;(?Z`M8(?2Y;(?Z`M ,(?ZP尽8(?28(?2 ,(?ZP尽"(?2`T ,(?ZP尽(?Z`"(?2`T"(?2`T(?Z`-(?2 (?Z`'?ZPT-(?2 -(?2 '?ZPT'?2`䬽'?ZPT2'?Z6'?2`䬽'?2`䬽2'?Z6`'?2૽2'?Z6p'?Z;`'?2૽`'?2૽p'?Z;G'?2p'?Z;'?ZhG'?2G'?2'?Zhk'?2@X'?ZhAg'?Zk'?2@Xk'?2@XAg'?Z3='?20کAg'?Z;:'?ZF3='?20ک3='?20ک;:'?ZF '?2;:'?ZF '?Z '?2 '?2 '?Z&?2 u '?Z*&?Z0䩽&?2 u&?2 u*&?Z0䩽G&?2Џ*&?Z0䩽&?Z@G&?2ЏG&?2Џ&?Z@y&?2ݩ&?Z@~&?ZGy&?2ݩy&?2ݩ~&?ZG3K&?2p]~&?ZGQ&?Zª3K&?2p]3K&?2p]Q&?Zª&?2 Q&?Zª|&&?Zpj&?2 &?2 |&&?Zpj%?2諽|&&?Zpj%?Z=%?2諽%?2諽%?Z=%?2%?Z=A%?Z8%?2%?2A%?Z8%?2pA%?Z8%?ZV%?2p%?2p%?ZV4%?20`%?ZV%?Z04%?20`4%?20`%?Z0y%?2°%?Z0%?Z`谽y%?2°y%?2°%?Z`谽o%?28%?Z`谽J}%?ZPo%?28o%?28J}%?ZP2f%?2@J}%?ZP t%?Zų2f%?2@2f%?2@ t%?Zųc%?E4p? t%?ZųQq%?.\p?c%?E4p?&l(?p?yV(?j1p?^(?b!yV(?j1p?RR(?2^(?b!RR(?2H(?2+^(?b!^(?b!H(?2+B(?$PH(?2+8(?2B(?$P8(?2"(?2`TB(?$PB(?$P"(?2`T (? "(?2`T-(?2 (?  (? -(?2 '?b!-(?2 '?2`䬽'?b!'?2`䬽`'?2૽'?b!'?b!`'?2૽'?b!0A`'?2૽G'?2'?b!0AG'?2k'?2@X'?b!0A'?b!0Ak'?2@X#*'?$ k'?2@X3='?20ک#*'?$ 3='?20ک '?2#*'?$ #*'?$ '?2f&? '?2&?2 uf&? f&? &?2 uA&?b!+&?2 uG&?2ЏA&?b!+G&?2Џy&?2ݩA&?b!+A&?b!+y&?2ݩ0&?b!-y&?2ݩ3K&?2p]0&?b!-3K&?2p]&?2 0&?b!-0&?b!-&?2 %?b!&?2 %?2諽%?b!%?2諽%?2%?b!%?b!%?2%?b!X%?2%?2p%?b!X%?2p4%?20`%?b!X%?b!X4%?20`a%?.4%?20`y%?2°a%?.a%?.y%?2°Z%?b!òy%?2°o%?28Z%?b!òo%?282f%?2@Z%?b!òZ%?b!ò2f%?2@L%?>2f%?2@c%?E4p?L%?>&l(?p?^(?b!Rn(?vRn(?v^(?b!B(?$P (? '?b!۪'?0*'?b!'?b!0A۪'?0*۪'?0*'?b!0A#*'?$ f&? A&?b!+.&?A&?b!+0&?b!-.&?0&?b!-%?b!.&?.&?%?b!x%?Q%?b!񫽢%?b!Xx%?Qx%?Q%?b!XG%?rpϱG%?rpϱ%?b!Xa%?.a%?.Z%?b!òL%?>(?p?&l(?p?Rn(?vRn(?vB(?$PC(?lB(?$P (? C(?lC(?l (? '?pW (? ۪'?0*'?pW۪'?0*#*'?$ B'?lB'?l#*'?$ 2&?p=#*'?$ f&? 2&?p=2&?p=f&? 5&?l0=f&? .&?5&?l0=5&?l0=.&?y%?p.&?x%?Qy%?pa%?.L%?>G%?rpϱG%?rpϱL%?>6%?p?(?p?Rn(?v|(?"0|(?"0Rn(?v[(?"'?20 '?Z:'?Z@7>'?20>'?20:'?Z@7m'?2p!:'?Z@7g'?Zмm'?2p!m'?2p!g'?Zм'?2rg'?ZмA'?Zp'?2r'?2rA'?Zp'?2A'?Zpù'?Z@'?2'?2ù'?Z@'?2ù'?Z@|'?ZF'?2'?2|'?ZF7(?2pg|'?ZF'?Z(7(?2pg7(?2pg'?Z(#(?2'?Z(2(?Z뺽#(?2#(?22(?Z뺽D9(?202(?Z뺽3,(?ZD9(?20D9(?203,(?ZI(?2F3,(?Zs;(?Z@.I(?2FI(?2Fs;(?Z@.R(?2¶s;(?Z@.D(?ZPR(?2¶R(?2¶D(?ZPT(?E4p?D(?ZPlG(?.\p?T(?E4p?L%?p?Db%?j1p?R%?`Db%?j1p?kf%?2 жR%?`R%?`kf%?2 жf%?b!kf%?2 ж'p%?20Sf%?b!'p%?20S %?2ȹf%?b!f%?b! %?2ȹ%??!0c %?2ȹ%?2*%??!0c%??!0c%?2*%?b!K%?2*%?2Pr%?b!K%?2Pr1%?2%?b!K%?b!K1%?2r%?b!Pm1%?2^%?2 r%?b!Pm^%?2 v &?2xr%?b!Pmr%?b!Pmv &?2xH[&?b!v &?2xL&?2&H[&?b!L&?2&{&?2H[&?b!H[&?b!{&?2&?b!{&?2&?2&?b!&?29&?2 &?b!&?b!9&?2 |&'?b!S9&?2 v'?2|&'?b!Sv'?2>'?20|&'?b!S|&'?b!S>'?20'?b!P>'?20m'?2p!'?b!Pm'?2p!'?2r'?b!P'?b!P'?2r'?b!'?2r'?2'?b!'?2'?2'?b!'?b!'?2p7(?f'?27(?2pgp7(?fp7(?f7(?2pg(<(?b!ú7(?2pg#(?2(<(?b!ú#(?2D9(?20(<(?b!ú(<(?b!úD9(?20](?b!D9(?20I(?2F](?b!I(?2FR(?2¶](?b!](?b!R(?2¶j(?p?R(?2¶T(?E4p?j(?p?R%?`f%?b!x%?0nf%?b!%??!0cx%?0n%??!0c%?b!Kx%?0nx%?0n%?b!K%?@%?b!Kr%?b!Pm%?@%?@r%?b!PmW.&?Pr%?b!PmH[&?b!W.&?PW.&?PH[&?b!ה&?H[&?b!&?b!ה&?ה&?&?b!6'?½&?b!|&'?b!S6'?½6'?½|&'?b!S$i'?V|&'?b!S'?b!P$i'?V$i'?V'?b!P'?t'?b!P'?b!'?t'?t'?b!p7(?fp7(?f(<(?b!úq(?{(<(?b!ú](?b!q(?{q(?{](?b!j(?p?4%?p?L%?p?:%?8L%?p?R%?`:%?8:%?8R%?`R%?pЕR%?`x%?0nR%?pЕR%?pЕx%?0n%?p0%?p0x%?0n%?@$i'?V'?t'?l'?l'?t.(?8@*'?tp7(?f.(?8@*.(?8@*p7(?fT(?p`ẽT(?p`ẽp7(?fq(?{q(?{j(?p?(?p?:%?8R%?pЕ%G%?"p%G%?"pR%?pЕZy%?" żR%?pЕ%?p0Zy%?" żZy%?" ż%?p0%?"b%?p0%?@%?"b%?"b%?@E!&?"@O%?@W.&?PE!&?"@OE!&?"@OW.&?P&?"pi½W.&?Pה&?&?"pi½&?"pi½ה&?R&?"½ה&?6'?½R&?"½R&?"½6'?½EN'?g'pT½6'?½$i'?VEN'?g'pT½EN'?g'pT½$i'?V'?":$i'?V'?l'?":'?":'?l]'?"D]'?"D'?l.(?8@*.(?8@*T(?p`ẽY^(?"@Y^(?"@T(?p`ẽ(?"ƷT(?p`ẽq(?{(?"Ʒ(?"Ʒq(?{(?p?%?^7p?4%?p?$%?54%?p?:%?8$%?5$%?5:%?80%?5۸:%?8%G%?"p0%?5۸0%?5۸%G%?"pB%?5B%?5%G%?"p\%?53%G%?"pZy%?" ż\%?53\%?53Zy%?" ż|%?5|%?5Zy%?" ż<%?5 Zy%?" ż%?"b<%?5 <%?5 %?"b%?5B%?5B%?"b:%?5C%?"bE!&?"@O:%?5C:%?5CE!&?"@OO3&?5`½O3&?5`½E!&?"@OIj&?5½E!&?"@O&?"pi½Ij&?5½Ij&?5½&?"pi½8&?5½8&?5½&?"pi½ &?5@ý&?"pi½R&?"½ &?5@ý &?5@ýR&?"½'?5½'?5½R&?"½EN'?g'pT½EN'?g'pT½'?":ӆ'?5 ½ӆ'?5 ½'?":Һ'?5=Һ'?5='?":'?50;'?":]'?"D'?50;'?50;]'?"D(?5(?5]'?"D<(?5]'?"D.(?8@*<(?5<(?5.(?8@*\(?5(.(?8@*Y^(?"@\(?5(\(?5(Y^(?"@}v(?5}v(?5Y^(?"@ (?5иY^(?"@(?"Ʒ (?5и (?5и(?"ƷE(?5E(?5(?"Ʒ/(?a4p?(?"Ʒ(?p?/(?a4p?'?5½EN'?g'pT½Q'?hH ½Q'?hH ½EN'?g'pT½ӆ'?5 ½%?i`?%?^7p?r%?ri`%?^7p?$%?5r%?ri`r%?ri`$%?5 %?rip鸽$%?50%?5۸ %?rip鸽 %?rip鸽0%?5۸8%?LS 0%?5۸B%?58%?LS 8%?LS B%?5iN%?ri_B%?5\%?53iN%?ri_iN%?ri_\%?53=t%?LS ⽽\%?53|%?5=t%?LS ⽽=t%?LS ⽽|%?5d%?LSPG|%?5<%?5 d%?LSPGd%?LSPG<%?5 %?ri<%?5 %?5B%?ri%?ri%?5Bg%?LS`%?5B:%?5Cg%?LS`g%?LS`:%?5C.&?LSZ½:%?5CO3&?5`½.&?LSZ½.&?LSZ½O3&?5`½f&?LS0½O3&?5`½Ij&?5½f&?LS0½f&?LS0½Ij&?5½&?LSOýIj&?5½8&?5½&?LSOý&?LSOý8&?5½_&?LSný8&?5½ &?5@ý_&?LSný_&?LSný &?5@ý'?LSOý &?5@ý'?5½'?LSOý'?LSOý'?5½Q'?hH ½Q'?hH ½ӆ'?5 ½'?LSZ½'?LSZ½ӆ'?5 ½W'?LS`ӆ'?5 ½Һ'?5=W'?LS`W'?LS`Һ'?5=a'?riҺ'?5='?50;a'?ria'?ri'?50;(?rij'?50;(?5(?rij(?rij(?5RG(?ri(?5<(?5RG(?riRG(?ri<(?5}e(?LS0W<(?5\(?5(}e(?LS0W}e(?LS0W\(?5((?riƺ\(?5(}v(?5(?riƺ(?riƺ}v(?5(?ri}v(?5 (?5и(?ri(?ri (?5и(?ri`* (?5иE(?5(?ri`*(?ri`*E(?57(?Oi?E(?5/(?a4p?7(?Oi? %?rip鸽8%?LS t5%?jиt5%?jи8%?LS iN%?ri_iN%?ri_=t%?LS ⽽5q%?j5q%?j=t%?LS ⽽%?j\=t%?LS ⽽d%?LSPG%?j\%?j\d%?LSPG%?ri%?rig%?LS`}%?j}%?jg%?LS`2-&?jv½g%?LS`.&?LSZ½2-&?jv½2-&?jv½.&?LSZ½e&?jý.&?LSZ½f&?LS0½e&?jýe&?jýf&?LS0½&?j nýf&?LS0½&?LSOý&?j ný&?j ný&?LSOý_&?jý&?LSOý_&?LSný_&?jý_&?jý_&?LSný'?j ný_&?LSný'?LSOý'?j ný'?j ný'?LSOýR'?jý'?LSOýQ'?hH ½R'?jýR'?jýQ'?hH ½'?jv½Q'?hH ½'?LSZ½'?jv½'?jv½'?LSZ½@'?j'?LSZ½W'?LS`@'?j@'?jW'?LS`a'?riRG(?ri}e(?LS0Wh(?jfh(?jf}e(?LS0W(?riƺd(?hڍp?u(? p?b(?/ۍu(? p?wr(? b(?/ۍb(?/ۍwr(? EQ(?ۍCwr(? h(? PﱽEQ(?ۍCh(? PﱽV(? YEQ(?ۍCEQ(?ۍCV(? Yu2(?/ۍ-V(? Y?(? ٮu2(?/ۍ-u2(?/ۍ-?(? ٮ(?ۍ ?(? ٮS!(? t(?ۍ S!(? t'? `2(?ۍ (?ۍ '? `2'?/ۍ'? `2'? '?/ۍ'?/ۍ'? މ'?ۍ0'? ,'? )މ'?ۍ0,'? )y'? lމ'?ۍ0މ'?ۍ0y'? lD'?/ۍ ey'? lbF'? P⨽D'?/ۍ eD'?/ۍ ebF'? P⨽>&?ۍbF'? P⨽'? >&?ۍ'? _&? r>&?ۍ>&?ۍ_&? r&?ݍ_&? r&? &?ݍ&? \r&? P⨽&?ݍ&?ݍ\r&? P⨽?-&?ۍ6\r&? P⨽?&? l?-&?ۍ6?&? l&? )?-&?ۍ6?-&?ۍ6&? )%?ۍ&? )%? %?ۍ%? %? `2%?ۍ%?ۍ%? `2.%?ۍm%? `2j%? t.%?ۍmj%? ty%? ٮ.%?ۍm.%?ۍmy%? ٮf%?ۍPy%? ٮa%? Yf%?ۍPa%? YP%? Pﱽf%?ۍPf%?ۍPP%? PﱽV%?/ۍP%? PﱽFF%? V%?/ۍV%?/ۍFF%? R%?ۍp?FF%? B%? p?R%?ۍp?>&?ۍ&?ݍ&?֍PW&?֍PW&?ݍ?-&?ۍ6ZR(?Gp?d(?hڍp?O(?Í`d(?hڍp?b(?/ۍO(?Í`O(?Í`b(?/ۍnF(?Í;b(?/ۍEQ(?ۍCnF(?Í;nF(?Í;EQ(?ۍC6(?Í0Ȱ6(?Í0ȰEQ(?ۍC !(?ÍPhEQ(?ۍCu2(?/ۍ- !(?ÍPh !(?ÍPhu2(?/ۍ-(?Í"u2(?/ۍ-(?ۍ (?Í"(?Í"(?ۍ '?Í'?Í(?ۍ '?Í(?ۍ '?/ۍ'?Í'?Í'?/ۍ-'?Í'?/ۍމ'?ۍ0-'?Í-'?Íމ'?ۍ0?l'?Ío?l'?Íoމ'?ۍ0='?Í0މ'?ۍ0D'?/ۍ e='?Í0='?Í0D'?/ۍ e '?Í D'?/ۍ e>&?ۍ '?Í '?Í >&?ۍ&?Í&?Í>&?ۍ&?Í>&?ۍ&?֍PW&?Í&?Í&?֍PW{&?Í{&?Í&?֍PWxM&?Íl&?֍PW?-&?ۍ6xM&?ÍlxM&?Íl?-&?ۍ6{!&?Íp{!&?Íp?-&?ۍ6%?Í?-&?ۍ6%?ۍ%?Í򫽱%?Í%?ۍ%?Í%?Í%?ۍn%?ÍP%?ۍ.%?ۍmn%?ÍPn%?ÍP.%?ۍm$%?Ía$%?Ía.%?ۍmg%?Íp.%?ۍmf%?ۍPg%?Ípg%?Ípf%?ۍPr%?Í3r%?Í3f%?ۍPh%?Íf%?ۍPV%?/ۍh%?Íh%?ÍV%?/ۍd%?ōp?V%?/ۍR%?ۍp?d%?ōp?G(?p?ZR(?Gp?7D(?yųZR(?Gp?O(?Í`7D(?yų7D(?yųO(?Í`:(?yQO(?Í`nF(?Í;:(?yQ:(?yQnF(?Í;+(?y`鰽nF(?Í;6(?Í0Ȱ+(?y`鰽+(?y`鰽6(?Í0Ȱ(?y6(?Í0Ȱ !(?ÍPh(?y(?y !(?ÍPhd'?yX !(?ÍPh(?Í"d'?yXd'?yX(?Í"'?y ;(?Í"'?Í'?y ;'?y ;'?Íl'?y@'?Í'?Íl'?y@l'?y@'?Í'?ym'?Í-'?Í'?ym'?ym-'?Ícg'?ypŪ-'?Í?l'?Íocg'?ypŪcg'?ypŪ?l'?Íop:'?y0K?l'?Ío='?Í0p:'?y0Kp:'?y0K='?Í0 '?y='?Í0 '?Í '?y '?y '?Í &?y詽 '?Í &?Í&?y詽&?y詽&?Í#&?y&?Í&?Í#&?y#&?y&?Í~&?yJ&?Í{&?Í~&?yJ~&?yJ{&?ÍQ&?yĪ{&?ÍxM&?ÍlQ&?yĪQ&?yĪxM&?Íl'&?yplxM&?Íl{!&?Íp'&?ypl'&?ypl{!&?Íp%?yP?{!&?Íp%?Í򫽋%?yP?%?yP?%?Í%?y9%?Í%?Í%?y9%?y9%?Í%?yW%?Ín%?ÍP%?yW%?yWn%?ÍP"%?yn%?ÍP$%?Ía"%?y"%?y$%?Ía%?yP簽$%?Íag%?Íp%?yP簽%?yP簽g%?Íp}%?yNg%?Ípr%?Í3}%?yN}%?yNr%?Í3t%?yPór%?Í3h%?Ít%?yPót%?yPóh%?Íq%?Mp?h%?Íd%?ōp?q%?Mp?D(?}p?G(?p?8?(?}%G(?p?7D(?yų8?(?}%7D(?yų:(?yQ8?(?}%8?(?}%:(?yQ!(?}PY:(?yQ+(?y`鰽!(?}PY+(?y`鰽(?y!(?}PY!(?}PY(?yU'?}d(?yd'?yXU'?}dU'?}dd'?yX'?}Ԭd'?yX'?y ;'?}Ԭ'?y ;l'?y@'?}Ԭ'?}Ԭl'?y@'?}+l'?y@'?ym'?}+'?ymcg'?ypŪ'?}+'?}+cg'?ypŪ&'?}2cg'?ypŪp:'?y0K&'?}2p:'?y0K '?y&'?}2&'?}2 '?y_&?} '?y&?y詽_&?}_&?}&?y詽'&?}(&?y詽#&?y'&?}(#&?y~&?yJ'&?}('&?}(~&?yJ?&?}~&?yJQ&?yĪ?&?}Q&?yĪ'&?ypl?&?}?&?}'&?ypl%?}౬'&?ypl%?yP?%?}౬%?yP?%?y9%?}౬%?}౬%?y9h%?}d%?y9%?yWh%?}dh%?}d%?yW%?})%?yW"%?y%?})"%?y%?yP簽%?})%?})%?yP簽z%?}%?yP簽}%?yNz%?}}%?yNt%?yPóz%?}z%?}񲽐t%?yPós%?}p?t%?yPóq%?Mp?s%?}p?S%?hڍp?B%? p?U%?/ۍ@ĶB%? p?FF%? 붽U%?/ۍ@ĶU%?/ۍ@ĶFF%? 붽xg%?ۍ;FF%? 붽P%? xg%?ۍ;P%? a%? `%xg%?ۍ;xg%?ۍ;a%? `%0%?ۍ a%? `%y%? Х0%?ۍ y%? Хj%? @ 0%?ۍ 0%?ۍ j%? @ 3%?ۍj%? @ %? L3%?ۍ%? L%? g3%?ۍ3%?ۍ%? g.&?ۍPN%? g&? 0U.&?ۍPN&? 0U?&? .&?ۍPN.&?ۍPN?&? &?ݍP?&? \r&? &?ݍP\r&? &? 0&?ݍP&?ݍP&? 0 &?ۍ &? 0_&? @ ½ &?ۍ _&? @ ½'? 0 &?ۍ &?ۍ '? 0?'?/ۍ0%'? 0bF'? ?'?/ۍ0%?'?/ۍ0%bF'? ~'?ۍGbF'? y'? ~'?ۍGy'? ,'? 0U~'?ۍG~'?ۍG,'? 0U>'?gۍp,'? 0U'? g>'?gۍp'? g'? L>'?gۍp>'?gۍp'? Lh*(?ݍP'? LS!(? @ h*(?ݍPS!(? @ ?(? Хh*(?ݍPh*(?ݍP?(? ХT(?ۍ0?(? ХV(? `%T(?ۍ0V(? `%h(? T(?ۍ0T(?ۍ0h(? b(?/ۍ0h(? wr(? 붽 b(?/ۍ0 b(?/ۍ0wr(? 붽f(?ۍp?wr(? 붽u(? p?f(?ۍp?.&?ۍPN&?ݍPl&?֍-l&?֍-&?ݍP &?ۍ >'?gۍph*(?ݍP(?֍6(?֍6h*(?ݍP9(?֍`h*(?ݍPT(?ۍ09(?֍`df%?Gp?S%?hڍp?h%?ͶS%?hڍp?U%?/ۍ@Ķh%?Ͷh%?ͶU%?/ۍ@ĶOr%?Í CU%?/ۍ@Ķxg%?ۍ;Or%?Í COr%?Í Cxg%?ۍ;%?Í%?Íxg%?ۍ;%?Íxg%?ۍ;0%?ۍ %?Í%?Í0%?ۍ ɲ%?Í\ɲ%?Í\0%?ۍ  %?Í0%?ۍ 3%?ۍ %?Í %?Í3%?ۍ%?Í%?Í3%?ۍ &?ÍPa3%?ۍ.&?ۍPN &?ÍPa &?ÍPa.&?ۍPN~L&?Í0~L&?Í0.&?ۍPNz&?Í.&?ۍPNl&?֍-z&?Íz&?Íl&?֍-&?Í&?Íl&?֍-&?Íl&?֍- &?ۍ &?Í&?Í &?ۍ '?Í '?Í &?ۍ <'?Í &?ۍ ?'?/ۍ0%<'?Í<'?Í?'?/ۍ0%Ek'?Í`?'?/ۍ0%~'?ۍGEk'?Í`Ek'?Í`~'?ۍGB'?ÍpeB'?Ípe~'?ۍG '?Í ~'?ۍG>'?gۍp '?Í '?Í >'?gۍp'?Í>'?gۍp(?֍6'?Í'?Í(?֍6O(?ÍcO(?Íc(?֍6 (?Í(?֍69(?֍` (?Í (?Í9(?֍`W6(?Í`W6(?Í`9(?֍`(F(?ÍPK9(?֍`T(?ۍ0(F(?ÍPK(F(?ÍPKT(?ۍ0O(?ÍʶT(?ۍ0 b(?/ۍ0O(?ÍʶO(?Íʶ b(?/ۍ0S(?ōp? b(?/ۍ0𶽣f(?ۍp?S(?ōp?q%?p?df%?Gp?t%?yPdf%?Gp?h%?Ͷt%?yPt%?yPh%?Ͷ}%?y-h%?ͶOr%?Í C}%?y-}%?y-Or%?Í C%?yOr%?Í C%?Í%?y%?y%?Í%?y0꺽%?Í%?Í%?y0꺽%?y0꺽%?ÍZ%?y&%?Íɲ%?Í\Z%?y&Z%?y&ɲ%?Í\%?yCɲ%?Í\ %?Í%?yC%?yC %?ÍQ%?y0> %?Í%?ÍQ%?y0>Q%?y0>%?Í&&?y`%?Í &?ÍPa&&?y`&&?y` &?ÍPa[Q&?yp &?ÍPa~L&?Í0[Q&?yp[Q&?yp~L&?Í0M~&?y3~L&?Í0z&?ÍM~&?y3M~&?y3z&?Íܬ&?y}z&?Í&?Íܬ&?y}ܬ&?y}&?Í;&?y&?Í&?Í;&?y;&?y&?Í '?y0~&?Í '?Í '?y0~ '?y0~ '?Í*:'?y@4 '?Í<'?Í*:'?y@4*:'?y@4<'?Í!g'?yP<'?ÍEk'?Í`!g'?yP!g'?yPEk'?Í`'?ypEk'?Í`B'?Ípe'?yp'?ypB'?Ípe3'?y?B'?Ípe '?Í 3'?y?3'?y? '?Í '?y@E '?Í '?Í'?y@E'?y@E'?Í8'?y''?ÍO(?Íc8'?y'8'?y'O(?Íc(?y 캽O(?Íc (?Í(?y 캽(?y 캽 (?Í+(?y (?ÍW6(?Í`+(?y+(?yW6(?Í`:(?y0W6(?Í`(F(?ÍPK:(?y0:(?y0(F(?ÍPK.D(?y(F(?ÍPKO(?Íʶ.D(?y.D(?yO(?ÍʶG(?Mp?O(?ÍʶS(?ōp?G(?Mp?s%?}p?q%?p?y%?}0Yq%?p?t%?yPy%?}0Yt%?yP}%?y-y%?}0Yy%?}0Y}%?y-%?}%}%?y-%?y%?}%%?y%?y0꺽%?}%%?}%%?y0꺽%?}%?y0꺽Z%?y&%?}Z%?y&%?yC%?}%?}%?yC&?}%?yCQ%?y0>&?}Q%?y0>&&?y`&?}&?}&&?y`(e&?}濽&&?y`[Q&?yp(e&?}濽[Q&?ypM~&?y3(e&?}濽(e&?}濽M~&?y3t&?}M~&?y3ܬ&?y}t&?}ܬ&?y};&?yt&?}t&?};&?y'?}0V;&?y '?y0~'?}0V '?y0~*:'?y@4'?}0V'?}0V*:'?y@4#y'?}Pj*:'?y@4!g'?yP#y'?}Pj!g'?yP'?yp#y'?}Pj#y'?}Pj'?yp'?}ͽ'?yp3'?y?'?}ͽ3'?y?'?y@E'?}ͽ'?}ͽ'?y@E(?}'?y@E8'?y'(?}8'?y'(?y 캽(?}(?}(?y 캽I1(?}0(?y 캽+(?yI1(?}0+(?y:(?y0I1(?}0I1(?}0:(?y0A(?}з:(?y0.D(?yA(?}зA(?}з.D(?yD(?}p?.D(?yG(?Mp?D(?}p?&? 0Ŷ&?tƶ&?1&?dž𪶽&?tƶ&? 0Ŷ&? 0Ŷ&?tƶ&? 0Ŷ&? 0Ŷt&? Щ1&?dž𪶽'? `*'? &? t&? t'? }&?̓r&? t}&?̓rt&? Щt&? Щ}&?̓r1&?dž𪶽/ '? }0k '?~ õ '? Pϵ '? Pϵ '?~ õ'? `*'? `* '?~ õ'?  '? Pϵ; '? j/ '? }0k; '? j '? p?/ '? }0k/ '? }0k '? p? '?|p?8&? p?&? j&?|?&? Pϵ&?!~0Ƶ&? j&?!~0Ƶ&?|?&? j&? Pϵ&? `*&?!~0Ƶ&?!~0Ƶ&? `*&?߀(<&?0x&?߀(&? t&? t&?߀(&? `*&? tI&? Щ<&?0x&?&?&? 0Ŷ&? 0Ŷ&?I&? ЩI&? Щ&?<&?0x '? '?~0 '?`? '?~0 '?|p? '?`? '? '? T '?~0 '?~0'? T'?\&?#P'?\&? &? '?\'? T&?#P&? &?鳽&? t&? ճ&?鳽&? &?t&? ճt&? ճ&?&?鳽Z&?a൳&?&? &?džӳ&?-&? &? &?-&? &?-Z&?a൳&? &? I&? ճ&?džӳ&? TԳ&?^&? &? Գ&?^@&?̓ &? @&?̓ I&? ճI&? ճ@&?̓ &?džӳ&? }&?~&? &? &?~&? T&? T&?~Գ&?^&? &? &? }&? 8&? p?&? }&? }8&? p?8&?|p?Q(? Q(?p?)?p?)?p?)?Q(? )?)?q`NQ(? Q(? )?q`NQ(?Ge)?q`N)?`kQ(?Ge)?`k)?,/@žQ(?GeQ(?Ge)?,/@žQ(?dC侽)?,/@ž)?Q(?dC侽Q(?dC侽)?Q(?ls`)?)?:@@Q(?ls`Q(?ls`)?:@@Q(?g彽)?:@@)?J-Q(?g彽Q(?g彽)?J-Q(?]:`N)?J-)?@9Q(?]:`NQ(?]:`N)?@9Q(?巽)?@9)?Cp?Q(?巽Q(?巽)?Cp?Q(?Cp?Q(?Cp?)?Cp?)?Q(?Cp?)?Q(?E)?)?]:p0Q(?EQ(?E)?]:p0Q(?J-0뮽)?]:p0)?g@Q(?J-0뮽Q(?J-0뮽)?g@Q(?:@૽)?g@)?lsQ(?:@૽Q(?:@૽)?lsQ(?@)?ls)?dCPQ(?@Q(?@)?dCPQ(?,/)?dCP)?GQ(?,/Q(?,/)?GQ(?pQ(?p)?GQ(?qp0)?G)?^Q(?qp0Q(?qp0)?^Q(?)?^)?p?Q(?Q(?)?p?Q(?p?*?ɱ0P*?(@*?&(*?ɱ0P*?&(*?]t*?&(*?n04*?]t*?p'*?6P8*?6κ*?6P8*?$葾*?6κ*?6κ*?$葾*?Gݸ*? **?9ߏ04*?&(*? **?&(*?ne*?&(*?(@*?ne*?(@*?[ŏ`*?ne*?#`*?T/*?nJ*?$葾*?]t*?Gݸ*?]t*?n04*?Gݸ*?n04*?nJ*?Gݸ*?nJ*?T/*?Gݸ*?Gݸ*?T/*?nШ*?T/*? t_*?nШ*?.pM*?$ꬽ*?&U*? **?㷽*?9ߏ04*?fꎾP*? G*?9ߏ04*? G*?9ߏJ*?9ߏ04*?nJ*?&U*?#`*?#`*?&U*?!ߒ*?&U*?$ꬽ*?!ߒ*?$ꬽ*?r`ۭ*?!ߒ*?.pM*?&U*? (p*?&U*?}b*? (p*?fꎾP*?9ߏ04*?(׎:*?9ߏ04*?㷽*?(׎:*?}b*?&U*?%L*?&U*?9ߏJ*?%L*?9ߏJ*?D^*?%L*?D^*?9ߏJ*?M@*?M@*?9ߏJ*? G)?̐i)?Nᄑq)?~q)?~)?Nᄑq)?).Pq)?).P)?Nᄑ)?ڏ)?ڏ)?q缽q)?Qq)?Q)?q缽q)?Zpqq)?Zpq)?q缽)?%p)?%p)?X ^q)?i󎾀Vq)?i󎾀V)?X ^q)?͎ %)?X ^)?^ wq)?͎ %q)?͎ %)?^ wq)?Lⷽq)?Lⷽ)?^ wq)?)?^ w)?%q)?q)?)?%)?#-)?#-)?%P鳽q)?q)?)?%P鳽q)?)?%P鳽)?޺ޱq)?q)?)?޺ޱq)?m͎\q)?m͎\)?޺ޱq)? *)?޺ޱ)?X q)? *q)? *)?X )? )? )? zPzq)?fZq)?fZ)? zPzq)?a.q)?a.)? zPz)?_⏾pS)?_⏾pS)?XPq)?z-ګq)?z-ګ)?XPq)?~mq)?~m)?XP)?Ր}*?&D)?&Ѓ*?Ӑ2)?&Ѓ)?̐i*?Ӑ2*?Ӑ2)?̐iq)?~q)?).P)?ڏ*?t揾*?t揾)?ڏq)?Qq)?Zpq)?%p*?)]*?)])?%pq)?i󎾀Vq)?)?#-*?B*?B)?#-q)?q)? *)? *?(&*?(&)? q)?fZq)?a.)?_⏾pS*?叾0*?叾0)?_⏾pSq)?z-ګq)?~m)?Ր*?JҐL*?JҐL)?ՐB*?&2)?Ր)?&B*?&2*?Ӑ2q)?~ *?rpþ *?rpþq)?~ *?V7PZq)?~q)?).P *?V7PZ *?V7PZq)?).P*?t揾*?t揾q)?Q *? *?q)?Q *?j0:q)?Qq)?Zpq *?j0: *?j0:q)?Zpq*?)]*?)]q)?i󎾀V *?P1 *?P1q)?i󎾀V *?tᎾ q)?i󎾀Vq)?͎ % *?tᎾ  *?tᎾ q)?͎ % *?Ǝ ҷq)?͎ %q)?Lⷽ *?Ǝ ҷ *?Ǝ ҷq)?Lⷽ *?wq)?Lⷽq)? *?w *?wq)?*?B*?Bq)? *? *?q)? *?Ŏq)?q)? *?Ŏ *?Ŏq)? *?.0q)?q)?m͎\ *?.0 *?.0q)?m͎\ *?oYq)?m͎\q)? * *?oY *?oYq)? **?(&*?(&q)?fZ *?7h N *?7h Nq)?fZ *? tq)?fZq)?a. *? t *? tq)?a.*?叾0*?叾0q)?z-ګ *?A4) *?A4)q)?z-ګ *?9ྫq)?z-ګq)?~m *?9ྫ *?9ྫq)?~m*?JҐL *?&P־}*?&DT *?ڐȾ}*?&D*?Ӑ2T *?ڐȾT *?ڐȾ*?Ӑ2 *?rpþ *?V7PZ*?t揾 *?*0 *?*0*?t揾 *? *?j0:*?)] *?gֻ *?gֻ*?)] *?P1 *?w*?B *?Ž 7 *?Ž 7*?B *? *?oY*?(& *?1 *?1*?(& *?7h N *? t*?叾0 *?JPs *?JPs*?叾0 *?A4) *?9ྫ*?JҐL *?䫽 *?䫽*?JҐL *?&*?JҐLB*?&2 *?&T *?ڐȾ *?rpþ *?*0 *?rpþ *?V7PZ *?*0 *?*0 *? *?gֻ *? *?j0: *?gֻ *?gֻ *?P1|*?Xp *?P1 *?tᎾ |*?Xp|*?Xp *?tᎾ *?Ž 7 *?tᎾ  *?Ǝ ҷ *?Ž 7 *?Ǝ ҷ *?w *?Ž 7 *?Ž 7 *?|*?ю{ *? *?Ŏ|*?ю{|*?ю{ *?Ŏ *?1 *?Ŏ *?.0 *?1 *?.0 *?oY *?1 *?1 *?7h N *?JPs *?7h N *? t *?JPs *?JPs *?A4) *?䫽 *?A4) *?9ྫ *?䫽*?&v *?&P־*?ِb *?&P־T *?ڐȾ*?ِb*?ِbT *?ڐȾ*?>P&T *?ڐȾ *?*0*?>P&*?>P& *?*0*?0E ý*?0E ý *?*0*?:*?: *?*0*?׿0 *?*0 *?gֻ*?׿0*?׿0 *?gֻ*?ԅû*?ԅû *?gֻ*?Rۺ*?Rۺ *?gֻ*?(۹ *?gֻ|*?Xp*?(۹*?(۹|*?Xp*?@Ƹ*?@Ƹ|*?Xp*?-펾|*?Xp *?Ž 7*?-펾*?-펾 *?Ž 7*?ގ`s*?ގ`s *?Ž 7*?َp?*?َp? *?Ž 7*?ގp *?Ž 7|*?ю{*?ގp *?ގp |*?ю{*?-펾ܲ*?-펾ܲ|*?ю{*?|*?ю{ *?1*?*? *?1*?(У*?(У *?1*?R0*?R0 *?1*?ԅ *?1 *?JPs*?ԅ *?ԅ *?JPs*?׿ﭽ*?׿ﭽ *?JPs*?@D*?@D *?JPs*?0E *?JPs *?䫽*?0E*?0E *?䫽*?>X*?>X *?䫽*?ِP*?ِP *?䫽*?&  *?䫽 *?&*?& )? 0)?Pq)?ϑ@lq)?ϑ@l)?Pq)?٫q)?٫)?P)?"s@e)?"s@e)?ےq)?ֲ-q)?ֲ-)?ےq)?p q)?p )?ے)?2@)?2@)?:vPɰq)?eZ`(q)?eZ`()?:vPɰq)?Yq)?Y)?:vPɰ)?p)?p)?P鳽q)?) 곽q)?) 곽)?P鳽q)?DZ=)?P鳽)?Ƶq)?DZ=q)?DZ=)?Ƶq)?BБq)?BБ)?Ƶq)?߷)?Ƶ)?巽q)?߷q)?߷)?巽q)?``")?巽)?iqܹq)?``"q)?``")?iqܹq)?ZSq)?ZS)?iqܹq)?+0o)?iqܹ)?q)?+0oq)?+0o)?q)?g`oq)?g`o)?q)?lP)?)?ܵ0_q)?lPq)?lP)?ܵ0_q)?l` )?ܵ0_)?pD|q)?l` q)?l` )?pD|q)?R 0q)?R 0)?pD|q)?ϑ)?pD|)?Б#q)?ϑq)?ϑ)?Б#)?8xPn}*?&P:)?&*?yL)?&)? 0*?yL*?yL)? 0q)?ϑ@lq)?٫)?"s@e*?Yg*?Yg)?"s@eq)?ֲ-q)?p )?2@*?#!*?#!)?2@q)?eZ`(q)?Y)?p*?p*?p)?pq)?) 곽q)?ϑ)?8xPn*?{2*?{2)?8xPnB*?& L)?8xPn)?&0B*?& L*?yLq)?ϑ@l *?\ȑ` *?\ȑ`q)?ϑ@l *?w$q)?ϑ@lq)?٫ *?w$ *?w$q)?٫*?Yg*?Ygq)?ֲ- *?l *?lq)?ֲ- *?;㒾Dq)?ֲ-q)?p  *?;㒾D *?;㒾Dq)?p *?#!*?#!q)?eZ`( *?GM *?GMq)?eZ`( *?Yltq)?eZ`(q)?Y *?Ylt *?Yltq)?Y*?p*?pq)?) 곽 *?Wﳽ *?Wﳽq)?) 곽 *?򜓾8q)?) 곽q)?DZ= *?򜓾8 *?򜓾8q)?DZ= *?ŗq)?DZ=q)?BБ *?ŗ *?ŗq)?BБ *?臓@ŷq)?BБq)?߷ *?臓@ŷ *?臓@ŷq)?߷ *?mq)?߷q)?``" *?m *?mq)?``" *?5pq)?``"q)?ZS *?5pq)?ZSq)?+0o *?5p *?5pq)?+0o *?咾0q)?+0oq)?g`o *?咾0 *?咾0q)?g`o *?ŧ q)?g`oq)?lP *?ŧ  *?ŧ q)?lP *?^c½q)?lPq)?l`  *?^c½ *?^c½q)?l`  *?0Uq)?l` q)?R 0 *?0U *?0Uq)?R 0 *?ˑq)?R 0q)?ϑ *?ˑ *?ˑq)?ϑ*?{2}*?&P:*?yL *?' *?'*?yL *?\ȑ` *?w$*?Yg *?D#{ *?D#{*?Yg *?l *?;㒾D*?#! *?撾 *?撾*?#! *?GM *?Ylt*?p *?fֱ *?fֱ*?p *?Wﳽ *?ˑ*?{2 *?+ *?+*?{2 *?&᾽*?{2B*?& L *?&᾽ *?' *?\ȑ` *?D#{ *?\ȑ` *?w$ *?D#{ *?D#{ *?l *?撾 *?l *?;㒾D *?撾 *?撾 *?GM *?fֱ *?GM *?Ylt *?fֱ *?fֱ *?Wﳽ|*?` *?Wﳽ *?򜓾8|*?`|*?` *?򜓾8|*?$| *?򜓾8 *?ŗ|*?$| *?ŗ *?臓@ŷ|*?$||*?$| *?臓@ŷ|*?J^ *?臓@ŷ *?m|*?J^ *?m *?5p|*?J^|*?J^ *?5p|*?q *?5p *?咾0|*?q|*?q *?咾0|*?`} *?咾0 *?ŧ |*?`} *?ŧ  *?^c½|*?`}|*?`} *?^c½ *?+ *?^c½ *?0U *?+ *?0U *?ˑ *?+*?&  *?'*?sP*?sP *?'*?X *?' *?D#{*?X*?X *?D#{*?*? *?D#{*?M@D*?M@D *?D#{*?ﭽ *?D#{ *?撾*?ﭽ*?ﭽ *?撾*?ǒ *?ǒ *?撾*?0*?0 *?撾*?%У *?撾 *?fֱ*?%У*?%У *?fֱ*?G*?G *?fֱ*?`ܲ*?`ܲ *?fֱ*?op *?fֱ|*?`*?op *?op |*?`*?tp?*?tp?|*?`*?o`s|*?`|*?$|*?o`s*?o`s|*?$|*?`*?`|*?$|*?G@Ƹ|*?$||*?J^*?G@Ƹ*?G@Ƹ|*?J^*?%۹*?%۹|*?J^*?ۺ|*?J^|*?q*?ۺ*?ۺ|*?q*?ǒû*?ǒû|*?q*?0|*?q|*?`}*?0*?0|*?`}*?M:*?M:|*?`}*? ý|*?`} *?+*? ý*? ý *?+*?P&*?P& *?+*?sb*?sb *?+*?&v *?+ *?&᾽*?&v?b@ý?P@?Cϕ?Cϕ?|j?b@ý?|j?4p??b@ý?4p??Ҟ?/]?|j`k?|j0?V?|j0?/]?V?/]?Ҟ?V?4p??/]?cP?cP?/]?O3]? PĽ?`˽?|j?|j?`˽?4p??`˽??4p???`쩽?4p??4p??`쩽?Ҟ%?Cϕ%?|j%?|jp˽%?4p?%?Ҟ%?/]%?|j0%?/]%? %?/]%?Ҟ%? %?4p?%?/]%?cP%?cP%?/]%?O3]%?P@%?Cϕ%?b@ý%?Cϕ%?4p?%?b@ý%?|jp˽%?'½%?Cϕ%?'½%?`˽%?Cϕ%?Cϕ%?`˽%?4p?%?`˽%?%?4p?%?%?`쩽%?4p?%?4p?%?`쩽%?Ҟ?g:@L ?iЛ?|j?v`R>?S%?Cϕ%?Cϕ>?S?CϕL ?iЛ ?x򛾰`?|j ?x򛾰`g?Q! ?S  ?g:@k ?iЛ ?x򛾰`@!? P{!?v`R%?Cϕ ?x򛾰`! ?SE ?W ?x򛾰`k ?iЛ?|jk ?iЛ+I!?x򛾰`?|j?|j+I!?x򛾰`%?|j>?S&?W?Cϕ?Cϕ&?W<?/ߗЭ{!?v`R! ?S%?Cϕ2?< :?g:@?|jg?Q4?Fgp! ?S}?\ 0!u? P! ?S! ?S!u? P%?Cϕ%?Cϕ!u? P?v`R4?Fgp꽷?5S! ?S! ?S?5S}?\ 0?< :  ?g:@ ?x򛾰`+I!?x򛾰`!?Q%?|j%?|j!?QRJ"?Fgp꽝T"?] @!? P%?CϕE ?W?0ߗЭ ?x򛾰`<?/ߗЭY??Cϕ?CϕY??|j?|jY?q2?< :?0ߗЭw? ?x򛾰` ?x򛾰`w?ー?< :RJ"?Fgpp"?5S%?|j%?|jp"?5S%?Cϕ%?Cϕp"?5S}T"?]  ?yv`\`?/]? e?SF_g?`Nd~ ? ? eЏ ?yv`\`?/]!?9;||!?ϛ@%?|j0?SF_~ ?L ?Q@^?ϛ@`>?%?|j0%?|j0`>??|j0Џ ?yv`\`H!?SF_?/]?/]H!?SF_%?/]`>?-?Q@?|j0?|j0-?Q@<?sg@g?`Nd'?ߗk~ ?||!?ϛ@~ ?%?|j0l2? m? e?/]'?ߗk?2 *u~ ?~ ??2 *u?b;~?b;~u?9;~ ?~ ?u?9;%?|j0%?|j0u?9;^?ϛ@ ? e?/]?SF_?/] ?yv`\`?SF_H!?SF_!?`Nd%?/]%?/]!?`NdFJ"?ߗk?SF_? m ? eT"?b;~!?9;%?|j0L ?Q@?sg@?SF_?sg@z?C6Zv?SF_?SF_z?C6Zv? m<?sg@[?D6Zv?|j0?|j0[?D6Zv?/]?/][?D6Zvl2? mFJ"?ߗkp"?2 *u%?/]%?/]p"?2 *u%?|j0%?|j0p"?2 *uT"?b;~%?Opz;?O@O?O󭽫\!?O@O& ?O%?Opzo)?O ?O?Opz%?Opz?O?Opz?Oo)?O ?Opz?O_?Oï?Opz?Opz_?Oï $?OLb?Ob ?O@g?O/& ?O0$ ?O%?Opz%?Opz0$ ?O;?O@O0$ ?Oq?O`K;?O@O?O8Žg?O/x?O] ?Ou ?O %?O8Ž ?O |'!?O@%?O8Ž%?O8Ž|'!?O@c!?OP2$?O`e1$?O`\!?O@Oe1$?O`s#?O\!?O@O\!?O@Os#?Oc!?OP2*?O/?O?O8Ž]%?OҦ$?O@%?Opz%?Opz$?O@\!?O@O\!?O@O$?O@$?O` $?OLWu?Oְ?O $?OLB?O`u?Opz?OpzB?O`u?Op馽?O ?OD $?OL $?OL ?ODB?O`ur?ObU?O*?O/U?O?Oi*?O/*?O/?Oi $?OL $?OL?OiWu?Oְ?Ob?Ob?O8Ž?O8Žb?Obg?O/;?O@Oq?O`K%?O@2q?O`Kg?O/%?O@2g?O/ ?O@%?O@2s#?O$?Oc!?OP2c!?OP2$?Og$?Oc!?OP2YD%?O ý%?O8Ž%?O8ŽYD%?O ý%?Opý=?Oý ?O?O8Ž?O8Ž ?O*?O/*?O/ ?Or?Ob?O8Žx?O%?O8Žx?O] ?Ou%?O8Žg$?O!$?O0:c!?OP2c!?OP2!$?O0:YD%?O ý?OhG#?O?O0߽f ?O@ ?O!d{?O`%?O0߽d{?O`?ORG#?Oڻ?O!?O0߽ڻ?O!I?O?O0߽?O0߽I?O?O ^I?O?OЍ?O ^ ?OЍO ?O@?O ^c!?OPWS!?O%?O ^S!?O"?O%?O ^%?O ^"?O%?O0߽?OPW5F?O ?OЍ򽫆?OЍ1?O@?O ^"?O"?Op%?O0߽"?Op!?OR%?O0߽@ ?O!h ?Od{?O`d{?O`h ?OƁ?Oh ?O ?OЍƁ?O ?OЍ5F?OƁ?O%?O0߽?OR?O0߽?OR轘?Oh?O0߽1?O@v|?O@?O ^O ?O@!?O@?O ^?O ^!?O@%?O ^%?O ^!?O@c!?OPW!?OR轷 !?Oh%?O0߽%?O0߽ !?Ohd{?O`콷 !?Ohf ?Od{?O`?O ^v|?O@ ?OЍv|?O@?OPW ?OЍf ?O Of@ ?Ojd{?Oo?O5F?O] ?O{!?Oc!?O%?Oڊ?O{1?O,?Oڊ?Oڊ ?O{O ?O,c!?OS!?O]%?OڊS!?O]"?O@y%?Oڊ%?Oڊ"?O@y%?O`A`"?O@y"?Oo%?O`A`d{?Oo?O@+g%?O`A`G#?O Ofڻ?Oj?O`A`ڻ?OjI?Oq?O`A`?O`A`I?Oq?OڊI?Oq?O{?Oڊ"?Oo!?O@+g%?O`A`1?O,v|?O?Oڊ?Oڊv|?O ?O{v|?O?O ?O{@ ?Ojh ?Oqd{?Ood{?Ooh ?OqƁ?O@yh ?Oq ?O{Ɓ?O@y ?O{5F?O]Ɓ?O@y?OڊO ?O,%?OڊO ?O,!?O%?Oڊ!?O@+g !?O We%?O`A`?O@+g?O We%?O`A`%?O`A`?O We?O`A`?O`A`?O WeG#?O Of%?O`A` !?O Wed{?Oo !?O Wef ?O Ofd{?OoG:!?뛾 &!? $&!?n$&!?n$u&!?n@G:!?뛾 3}!?n!?nG !?: !?:H{!?̛3}!?n3}!?nH{!?̛u&!?n@u&!?n@H{!?̛G:!?뛾 !?:!?nG>!?p@ V>!?p@ V!?nG"?P2!?nG4"?nz"?P2lf"?X™@zJI"?fC"?n7C"?n7JI"?f4"?nz4"?nzJI"?f"?P2C"?n7c"?nC{lf"?X™@zo"?]tn"?nua"?Rdon"?nuc"?n@Apa"?Rdon"?nuo"?]tc"?nC{c"?nC{o"?]tlf"?X™@z"?8pfE"?՗ZkC"?nkC"?nkE"?՗Zkc"?n@Apc"?n@ApE"?՗Zka"?Rdo4"?nf!?n@b!?YQb!?YQb"?8pf4"?nf4"?nf"?8pfC"?nk&!?VR@;_b!?Wg`_D!?n`_D!?n`_b!?Wg`_3}!?n~`3}!?n~`b!?Wg`_!?n@bb!?Wg`_!?YQb!?n@b(?뛾 ? $?n$?n$V?n@(?뛾 ?nG?nG:?::?:)?̛?n?n)?̛V?n@V?n@)?̛(?뛾 :?:G?nGo?p@ Vo?p@ VG?nGx?P2G?nG?nzx?P2M?Y™@z,?fp?n7p?n7,?f?nz?nz,?fx?P2p?n7?nC{M?Y™@z?^tz?nu?Sdoz?nu?n@Ap?Sdoz?nu?^t?nC{?nC{?^tM?Y™@zЊ?8pf?՗Zkp?nkp?nk?՗Zk?n@Ap?n@Ap?՗Zk?Sdo?nfG?n@b9?YQb9?YQbЊ?8pf?nf?nfЊ?8pfp?nk?VR@;_?Wg`_%?n`_%?n`_?Wg`_?n~`?n~`?Wg`_G?n@b?Wg`_9?YQbG?n@bL?뛾u? Z?nZ?nZ佸`?neL?뛾u ?nu?n7 ?: ?: ?̛ ?n ?n ?̛佸`?ne佸`?ne ?̛L?뛾u ?:u?n7?p@(?p@(u?n7潖m?Lu?n7v?n0轖m?L ?W™!=?f`꽟C?n0G꽟C?n0G=?f`v?n0v?n0=?f`꽖m?L轟C?n0G꽁#?n ?W™!{?])?nF%?RdИ?na#?n0^F%?RdИ?n{?])#?n콁#?n{?]) ?W™!?w?8FEA?՗C?n C?n EA?՗#?n0^#?n0^EA?՗F%?RdИv?n 7u?n@?YPV?YPV?w?8Fv?n 7v?n 7?w?8FC?n ?bOV? op ?np? ?np?V? opu?n@V? op?YPVu?n@ ?np??n?bO ?뛾u&!? Z&!?nZ&!?nZ ?ne ?뛾u ?n佔? ?n7+M ?:+M ?: ?̛ ?n ?n ?̛ ?ne ?ne ?̛ ?뛾u+M ?:彔? ?n7 ?p@( ?p@(罔? ?n7潵?L轔? ?n7?n0轵?L?X™!?f`꽾?n0G꽾?n0G?f`?n0?n0?f`꽵?L轾?n0G꽠?n?X™!?])𽴝?ne?SdИ򽴝?n⦆?n0^e?SdИ򽴝?nz?])𽠨?n콠?n콚?])?X™!^?8Fd?՗?n ?n d?՗?n0^򽠨?n0^d?՗e?SdИ?n 7? ?n@9M ?YPV9M ?YPV^?8F?n 7?n 7^?8F?n !?bOu ? op ?np? ?np?u ? op? ?n@u ? op9M ?YPV? ?n@ ?np?!?n!?bO?VR@;_?n_G?WZ`_?n_ ?n~`G?WZ`_u?n@b?紖@Jb ?n~` ?n~`?紖@JbG?WZ`_u?n@bv?nf?紖@Jb?紖@Jbv?nf}?I,fB?ȗj}?I,fC?nkC?nk}?I,fv?nf&?_oB?ȗj#?n@Ap#?n@ApB?ȗjC?nk&?_o#?n@Ap?'䘾s#?n@Ap?nu?'䘾sq,?K)}s?~x#?nC{#?nC{s?~x?nus?~x?'䘾s?nu#?nC{C?n7q,?K)}?=&p킽LO?ȡ؀v?nzv?nzLO?ȡ؀C?n7C?n7LO?ȡ؀q,?K)}v?nzu?nG?=&p킽?=&p킽u?nGv?Ф ?ӛТv?Ф ?n ?nv?Фu?nG ?n`?n@ ?ӛТ ?ӛТ`?n@L?뛾 `?n@?n$L?뛾 L?뛾 ?n$? $!?n_ ?n~`!?XO_!?XO_ ?n~` ?]h`_? ?n@bH ?|`yb ?n~`H ?|`yb ?]h`_ ?n~`? ?n@b?nfH ?|`ybH ?|`yb?nf ?H,f?ȗj ?H,f?nk?nk ?H,f?nf<?_ o?ȗj?n@Ap?n@Ap?ȗj?nk<?_ o?n@Ap?+䘾s?n@Ap?nu?+䘾s?nC{?8x?nu?8x?+䘾s?nu?8x?nC{Դ?W }?nC{?n7Դ?W } ?=&p킽k?ȡ؀?nz?nzk?ȡ؀?n7?n7k?ȡ؀Դ?W }?nz? ?nG ?=&p킽 ?=&p킽? ?nGP ?Ф' ?ӛТP ?Ф ?n ?nP ?Ф? ?nG ?n ?n@' ?ӛТ' ?ӛТ ?n@ ?뛾 ?n@&!?n$ ?뛾 ?뛾 &!?n$&!? $ݸ?꛾zV?ne? ZV?ne?nZ? Z'?n?np?+?XO+?XO?np??]h G?n@F%?N`?np?F%?N`?]h ?np?F%?N`G?n@f?pGG?n@?n 7f?pG'?c?kVp?n p?n c?kV?n 7?n 7c?kVf?pG?n0^'?p?n '??n0^?+䘾?n0^z?nd?+䘾?n?6z?n?6?+䘾z?n?6?n콋?Wc꽍?np?n0G꽋?Wc4?fꚾ轋?Wc?n0?n0轋?Wcp?n0G4?fꚾ?n0f?xN?n0轙G?n7f?xN?ӛ佂%?餛P?n?n佂%?餛P彙G?n7潙G?n7潂%?餛Pf?xN?nV?ne?ӛ?ӛV?neݸ?꛾z=!?꛾zu&!?ne&!? Zu&!?ne&!?nZ&!? ZG!?n3}!?np?J!?XOJ!?XO3}!?np?_!?]h !?n@p!?|0B3}!?np?p!?|0B_!?]h 3}!?np?!?n@4"?n 7p!?|0Bp!?|0B4"?n 7 "?H,z$7"?ՠ "?H,zC"?n C"?n "?H,z4"?n 7am"?ۘPW"?'c"?n0^c"?n0^W"?'C"?n W"?'$7"?ՠC"?n c"?n0^n"?nam"?ۘPZ"?J 뽻k"?~/c"?n콫c"?n콻k"?~/n"?nサk"?~/am"?ۘPn"?nォc"?n콏C"?n0G꽽Z"?J @"?=&p7"?ȡ4"?n04"?n07"?ȡ齏C"?n0G꽏C"?n0G7"?ȡ齽Z"?J 4"?n0轸!?n7@"?=&p@"?=&p罸!?n7潸!?%q!?ӛ佸!?3}!?n3}!?n佸!?彸!?n73}!?nu&!?ne%q!?ӛ%q!?ӛu&!?ne=!?꛾z?%h?%h3?h?%h3?h?h3?h?k?h?h?k1?@sm?kFN?p1?@sm1?@smFN?p"[?@tFN?p"[?w"[?@t"[?@t"[?wFN?@z"[?w1?~FN?@zFN?@z1?~?1?~ ?U?? ?U?] ?U??]?]???0?03?p?03?p齄?33?p?꽄?3齄?3?1?v?FN?91?v1?vFN?9"[?FN?9"[?>"[?"[?"[?>FN?"[?>1?@FN?FN?1?@0?p1?@?0?p?? l0?p0?p? l? l&!?0s!?轢R!?3s!?v!?齢R!?3齢R!?3v!?!?vv!?齩!?pp!?v!?v뽩!?ppA!?!?ppA!?>A!?A!?A!?>e!?A!?>!?@e!?e!?!?@!?P!?@R!?!?P!?PR!?QJ!?R!?&!? lQJ!?QJ!?&!? l&!? l&!?%h&!?%hQJ!?h&!?%hQJ!?hR!?hQJ!?h!? kR!?hR!?h!? k!?@sm!? ke!?p!?@sm!?@sme!?pA!?@te!?pA!?wA!?@tA!?@tA!?w!?|A!?w!?~!?|!?|!?~v!?`!?~R!?0Kv!?`v!?`R!?0Ks!?ŁR!?0K&!?s!?Ł!?Ł_ ?`!?ҁ!?ҁ_ ?` ?_ ?`[ ?@?~ ? ?[ ?@?~[ ?@?~[ ?@?~8 ?@z[ ?@?~[ ?@?~8 ?@z"- ?`sx8 ?@z"- ?s"- ?`sx"- ?`sx"- ?sA ? ho"- ?s0h ?FlA ? hoA ? ho0h ?Fl` ? j0h ?Fl ?h` ? j` ? j ?h!?g ?h&!?%h!?g&!? l!?p ?!?p` ?{ ? ?` ?{0h ?p[` ?{A ?0h ?p[0h ?p[A ?"- ?A ?"- ?0E"- ?"- ?"- ?0E8 ?9"- ?0E[ ?@_8 ?98 ?9[ ?@_[ ?@_[ ?@_ ?[ ?@_[ ?@_ ?_ ? ?齩!?_ ?_ ?齩!?!?? l?p4??pA?{4?4?A?{?p[A?{??p[?p[??𽅼??0E???0Eɳ?9?0E?@_ɳ?9ɳ?9?@_뽽?@_뽽?@_?齽?@_뽽?@_?A??齋?A?A?齋?轺??^;?]g?ځg?ځ^;?]?^;?]L???L??@?~L?ɳ?@z?@?~?@?~ɳ?@z?`sxɳ?@z?s?`sx?`sx?sɳ?p?s?Flɳ?pɳ?p?Fl?Em?Em?FlA? j?Fl4?hA? jA? j4?h?g4?h?%h?g$?p$?dpd?d@$?pd?d@?Pd?d@A?dp?P?PA?dp?0A?dp?d`Y?0?d`Y?d?0?0?d?@`?d?d?@`?@`?d?%?%?dA?pj?d?dyA?pjA?pj?dyd?ʻ?dy$?d d?ʻd?ʻ$?d $? b ?dP^. ?dBb ?Rb ?R. ?dBH ?c. ?dB!?dࣱH ?cH ?c!?dࣱ-!?-!?!?dࣱ+!?P!?dࣱ&=!?d+!?P+!?P&=!?d&=!?@`&=!?d+!?d鷽&=!?@`&=!?@`+!?d鷽!?۸+!?d鷽-!?d`͹!?۸-!?d`͹H ?d0!?۸!?۸H ?d0. ?I/?3>#n?8>>"n?jE>F/?3q ?[? ?zE>G/?3>g?I>q ?[? ?q ?[? ?>g?I>?D EI/?3?tt%n?>#n?8>EF/?3?q [? EF/?3?g?Tо ^? q [? g?TоGLľT#*`W<(횾msN(횾msN]WO>W>OW(>msN?]>W>`>W<>(>msN?GL>T#*?GLľT#* _W~(횾msNA㚾jN]W]>W>]WA>jN?]>W> _>W~>(>msN?GL>T#*?ʾ%?15?}T?S>>x\O?m> cO?}T?S>w >/%d?^ݾzT?N>t>h,?rPw >/%d?^ݾo >c$d?ݾ%t>O0?ZP>?YCГ@?\C?w /%d?^>mt"1?P?th,?rP?w /%d?^>|>T?rDw /%d?^>m>> cO}>T?S}>T?S>> _ON>?75>J,5??ޱ>_7?!?^{>;o?τ>ޱ>_7?!? >"n?#e|{>o?%>~{>'o?܄>>n?*0r_?MN>n?*0<=4o>QxE[?cN7deE[_rǻbfZ2ܤg_DUZ&4A=a_|Ļg_DU4A=k%Rx?E=[?cN?n?*0>=r_?MN?^{;o?τn?*0> "n?#>e|{o?%鄾ޱ_7?!^{;o?τJ,5?ޱ_7?!<=4o>Qxv_?N>n?*0r_?MN~{>'o?܄>>n?*0E>n?/~{>'o?܄>ޱ>_7?!?{>o?܄>>J,5??ޱ>_7?!?J,5?ޱ_7?!{o?܄ޱ_7?!En?/>~{'o?܄^{;o?τn?*0>=r_?MN?n?*0>=Ho>Rx?E=[?cN?k%?75}>T?S>ԥ>JaOm>> cO}>T?Sw /%d?^>|>T?rDth,?rP?w /%d?^>w /%d?^>mt"1?P?Г@?\C?>?YCw >/%d?^ݾmt>"1?Pt>h,?rPw >/%d?^ݾ}T?S>w >/%d?^ݾm> cO?zT?N>}T?S>>x\O?Nʾ?75?GL>T#*? _>W~>(>msN?A>jN?]>W>]W]>W>A㚾jN]W _W~(횾msNGLľT#*GL>T#*? _>W~>(>msN?(>msN?]>W>OWO>W>(횾msN]W _W~(횾msNGLľT#* =(?=HL?{?P0L?{W {?9>JнR?JнR?%${?q9>^=_p|?%>^=_p|?%>${?X9>'wg1?E8?XT{?1X9>(?f=?Hg1?-8?{ ?Vpj?JKȾP=?/NP=?/N j?cVȾ9= 6~?=J;j?ZȾ<i?>ݟ=s5~?=k=5~?=<i?>Nb>S?>wVS?ᄑk5~?i?Ӿi?Ӿk5~?J;=j?Z>ݟs5~?P?N?8=j?J>8=j?J>bO?tN?{= ?V?"O=i>f=j}=>iA>X>i|>f=j}=?ˡ=;g־)3=}y= Xʼa/ UtUX=ħg־?ˡ=;g־ɼ' zyUp=TZAhTZ?B=es3>'R>)e^F?CR>\dRF?=s ?>q==u0=3sN>[1Rjw=T;u1@=:uΔ0RL=OYoO9?wT;u1>[1=Rj?[1=Rj?wT;u1>0ǽ3sNwT;u1>CR\dRFܬǽ6si?ȽcsCBv!R `ZF>h=%Z㤊|Z?>g>޴sf}ǽ/5ǩgH>ižB}$ǽfj}ǽiAž"Oi;>h=%Zǽs ?'R)e^FCR\dRFܬǽ6si?wT;u1>̯ǽs\'Z1=XRa?f8u>q⽇=u>[1=Rj?1OU?L=CO;=;=\dRF?ܬ=6si?>=csCB>ZR>`fF?>h%Z?U>]S?o>8=38~?7Z=<i? ><i?>k=5~?=8j?JȾ=6~?=P=R?Nuj?0fȾ:0j?d0ȾP=e?}N᣽ ?Vg= ?V?J;=j?Z>9O?ۋN?P?N?8=j?J>akY5~?)|9=)j?e>Zi?Ӿl6~?ݟs5~?i?ӾwVS?"Oi;fj}ǽiAžižB}$ǽ/5ǩgH>sf}ǽ޴g><4 qU?맊^/Z?r=5Z=IgY)־ɼ' zyUɼ4 uqUS=mg־Y2=J}=?ˡ=;g־X>i|>f=j}=sf=}=>iA>"O=i>P0>L?{?X=T{?1X9J=R??=R?u?X=T{?1X9@_kq|?[%^_p|?%IX=+{?q9HDwn1?x8?_=vr|?ӯ%>Y}{?>9>^=_p|?%>fϽDR?N${?X9>W {?9>JнR?P0L?{\`> 1yi|2=O%=%ni|7=Խ3} g=%=A% g=%=A%r6=Խ33}z"= WFy=uԽ3}e*<\%|n=W^Gy6(h%|?nW^Gy?ֽuԽ3}?nW^Gy?2O%=%?r6ֽԽ33}?*ֽԽ4}?2x%=s%?ϋ(>h|?2x%=s%?6=t`>N/y?`F(>i|?Gξ9E̎`?ξ7HI`?ѸѸѸO8h?OѸh?5555Yl¾Yl¾55 i2Ѿ5555:8ay i2Ѿ55:QayDmB>55?ug*>55?55?DmB>55?ξ9J`?55?ug*>55?Gξ9E̎`???ty?^f??????ty?^f????ty?^f>??????ty?^f>??4?>ލF?>?C>?f>པ>Xi?>g>ri?>?%C>?z\?b,>?%C>? ?x&I}\?9b"꾁}\?9b"m?xI-?ZV+[~?{r;l=i?tD=?':W=i?tD=v?~7?? 9W=?99==v?~7?K?Imv?~7?6?`;K?Imz?=Y=D?rm ?!f?Ag*<7>D?2n ?pX{?_=W>"f?(<2>(f?(<\B>kY{?H=_>>L?C6>ڍ&Z{?{=>>>kiL?C6>ڍ>k<i?L?C6ڍ?&Z{?{>L?C6ڍ?"f?(2ྮX{?=pX{?_W"f?(2–D?>8j !f?Ag*7ྒz?=>2D?r>m  t;X W+B:>ZU}=3j= W[:>xY_iƼ>M:>U}=3j=_iƼ>M:>Ğ>94R*?}=]=U}=3j=Ҟ>2^*?Z3;Z3=U}3jҞ>2<^*Ğ>942<^*Ğ>948>a=}H=6_=9_^8>e2>aT>P<}=^=eO">^T>ӹ6#K3?P<}=^==}H=6_=U6/JR3?ɩ u"?]>D)?z~O?0>> I?Ϯ>Q>U?Z>J>U?ǁO?H>{@?z~O?0> Iz~O?0>> I?Z>JUǁO?H{@z~O?0> IϮ>QUu"?]̾D)?Ju!缥=w+?u!<>ut<" >v=7w+?'uٛ=@? 9[=/Eգ;kY"Bw2wEգkY"?Bw2en>ȴ9[/?EգkY"?IA]?V]=?!Z?y*?0>E?O?)=\?ծ*?]>?hRU?S{a>E?O?)=?hRU?S{a>>;?ZBE?O?,]=E?O?)=>;?Z,D?g9_$BO+t=BQ;&BQ;&Oo=A@"+%>AL",%>0Ot=:z-}>0Ot=O >x-O> ?;V?M?y,?=:.?{>[,?;.? >V,?M?y,?3y?zi 8ėM?O_F?X?5ƾ4y?.\ie4y?M\i4X?5ƾ&?'V?!=)]>>bHP>>XФ>֮>AX>>bHP>B?؋=7>b.P>3?:[1B?B?1W3?a .?=.:I,_s*=OOpa;*׮qEEF>?FxG=X>x{=X>uEZQ>f?o I? ?>YU<"F뾺o4'Y ZbؾC"F뾺o4'Y ɀ&)_>Qb ؾLCQb ؾLC]&)>b9IG.?]&)>k;>?b9IG.?74e!eؾQFƾWU-%,ؾQ ƾsz2Y2<U|%WU-%*/Y2<{R%>*/Y2<|誾%?h>{R%>n 8x1;| 5| 58x1;5!sx1>J8wxQ;eVkf>5!sx1>xesT1>sS)f>0$N¾TX*?pw)F?pwuF?׏ Z>?S>Z>?S>Z>?S>=?49XC>?>:?d X,?Xb?Vp>_?f> _?ꕼ>b?\Qp > X?]b?lp>i>VfMkX?A#MX?x.ch>_TfY>X+R+> ^hžPo&b/+83K e4@3 !)/Ro7b0GvZ>ho>Po&b/r}#>~>vZ>Hp>vZ>܉>4r#>>lW$>! ?ľf'5I2ھfgV_ھjgǎ <7wQC>4Gj$<>Rjp<>7TwC>w^S?57ھ>k?SA=Bv?脽>Cv?>k?SA=%[?y̾k?gH =$? [s[?w̾[?*̾$? [i>cM>\_)?3>KZ/? ,F>8?0Y?Si[_8?0<8?X1<?Sg[VC>S̾?Si[-}L>&OlJVC>S̾QLs??>͉dry6?P>HIa?Ϸ<>>n?³>sQLs??>͉<T?->q ?Ia?Ϸ<>>QLs??>͉>T?->q ?P?6P\??s?e? >>u]?I>Ju]?I>Je? >>s"? >.?e? >>ȘW?cA>%@?o"?>}.?e? >>du˾dQ]j֕W?A>NB?U#}>N#?{o#>c8tc>ʯtc>xo>;U\j>%yo>6obǛ&>߾U\j>%辈 վV7 h-X\j>sbߙ&>I߾71z5=pOc=A>VqNݺ ?x:>pAVnN~ ?pOc=A>pOc=A>(C>.L> vx:>pAx:>pAC>HL> v:#Y[p $>+?eey4>>g>C>g>A>eey4>>& ~Gag>A>A_>D=S$>G+?v㾎7?{r8A_>D=g>>C> $>+?eey4>>g>C>g>A>eey4>>[j˾Qjg>A>A_>D=S$>G+?v㾎7?{r8A_>D=g>>C>?-g>3(e?5>;u?h?>)u?h?>)e?ͩ5>};C>/L> vu?h?>)"`?{>,c?_\>u 3t?>"c?"`?{>,㽎=h?>?-g>3e?ͩ5>};u?h?>)u?h?>)e?ͩ5>};>~?kQk=u?h?>)"`?{>,c?_\>u 3t?>"c?"`?{>,㽎=h?>??????????? l?¾:cHN?v c>Lg?1پWsy5N?y @ c>0o߾\6?#x7?#v"b>~߾x\ɔ ?פ}78~;?)? Ci-?Ñ*?ס!,?b*?⡾,?)?dj-?=N?k !c>Fg?0Lپsy6?#x]?#=7?#v ?򦙾8?U"=8~;?b*?⡾,?yF4?xF4?@4?'ޓO4?Ñ*?ס!,?M?@e۾?>b*?⡾,?BN?% c9c>M?|۾>}M?_۾>;N? c>U?U}|j>1CN? v c>.l?¾J:RV?,dtj>.l?¾J:,Fg?Kپ*y]?#= ?a7`>0o߾\O>9:= U?O>HJU>)7?*?-???gugp>i> >?x>h?B?V?۔1>͇U?n>42?:X7?Ih=,-???gU>7?*?|? >3??x>h?a>g>>B?]? 2?^7?)h='>vU?>,-???-?U?A?v??>3?ATV?y>V?g>?=bz): ߍ>buN?'i>A?f?> NB?X?jw2?X7?=h=>?o=w)?Rj>?N?u>о?cP>?B?R?N?h> Ѿ^N?6z>ѾB?V?۔f?> N2?[7?Ah=-?D??}o?`Co?xT^-???ʚq?-=0>+-?|??]V?#>?q?,==>ؘq?5=@>XV?O0>?f?=H>????????????$? =äC?U>k;Yz??"JEX?V>k;9Xz?|eY^s??EX?7Fkף<7"?|eY^s?U>k;Yz?,`̖>UN`s? F֣< "?>'=Zl<}8ξ3<jd?Ѫz徳<}s>'=ls>&=ۖlp?b9Sd?ЬKξT`ݠx=*~%oVAH W>&g7?.">%?_>p>R&?)A>R&?)A>&?"!> >U>fP7M>%?_>p>4>s&O>l>R7P>>6M7]_>"><sQ>9J=VMw?9J=VMw?"><sQ>ҽlp>>sN>2X t>ҽld>BX#t@>of5E>ljҽWl8e>ljҽWl8e>t_5bQ>BK?>uY5`>:qkA*V>OK>W&?)L> >J7,\>u>:a>be)^q|>ҽ~l>R\Ko>OK>vxA W>7{7)\>N2?X>RS&?)!P>u>:a>l>R7P>{F=DM?u>:a>H=M?ljҽWl8e>_u>@ax>Su>=a>ҽld>.edqom|>tDKI>1e7)\>)d3hqdnikB¾S~@ uҭy/_%|A¾ԃ@r 5Z/U,uҭy/_%Kҭ /Y%3ZU@ZlZUY787EVL?񽦞Z?񽦞ZY787EVLrJa>Ai1Ea>\i n>"}7#?4Z->#}M7> a#?4Z-?\->%>aѠHz"x]񽳚Z/a>iiM?rJa>Ai?V-Y? >C"a?^-&rGB?!ͽ$>lYX?6Y>>L?4>DР>c-l?gxe>>>L? >4dw=]V?I ?8yA[?$?S4B?>0l)?>)O2?ur>>lYX?6Y>aŠ>0l?Zae>RUp}?=Ҡ>0l?Fe>>>L? >lkży?_[>>L? ><D[??ļly?[۔A[?$?v=V?I ? )R2?o>̣0i}?@=ļly?[۔A[?$?w.y?\B>]B?+>)L2?p>py?\B>~y?;B>)[2?W>+Hj}?=lżEy?][w3?h}?D=ǜ>ci?'<*\6n?URUp}?=aŠ>0l?Zae>{.u{?V=^vy??B>*}>.M?P *}>.M?P [3y??B>jX$?_(?xȾ6V$?ש(?Ⱦ[3y??B>ޑ>Ԏi?'+l?e>ļy?~[ļly?[{.u{?V=}G-M?V ۉ=~?}.=>lYX?6Y>RUp}?=pS$?(?JȾБ>Ŏi?(<|Q?:>;0V=؟~?.=RUp}?=g_?PZhU}?V=*\6n?U#]k_?sRZg_?PZQ+7n?hUi?hO*\6n?Uļly?[i?P i?C[ļly?[}G-M?V ?Q*}>.M?P X$?y(?Ⱦf?ZlQ?{kQQ$?۫(?bȾ|Q?:>;0꾾8z?BD)b>?x|>jNQ?" ,e>?`4h>I?:J|>jNQ?"Tr>i@?u!JT;?O>nꋰ>eJQ?x%쾧QN?$ 6Z1?:'ᾞ_?TP_?*T2i0? V)^?7[e0?q)h>?e$.^?b$.^?bFi>?w8"z?Dc#9z?D$}>UQ? 쾭<>Ia?&:žo>TQ?n>;?Z^>~ˮ>I^?赾;? l>L>83N?cͮ>^?tˮ>^?>/N?7p\/8?:[_?J/T$.^?bar>c?=<>Ia?&:ž{>SQ?Y-]=t?>-]=t?>~>PQ?J쾞ľk?"={>SQ?Ycͮ>^?tľk?"=wLu?>$.^?bM$9z?Dw>sc?=$.^?b>[X?P[>$.^?bLu?i>>[X?P[>LJu?>8"z?Db>7?C#)?b>7?M")?M$9z?D\>t?>c#9z?D,I>Aa?Sž.]?t?Ֆ>.]?t?Ֆ>ľk?"=?ȾI?w>>'^?N/\ 9? Uľk?U=L?M?<>_?*T.x>c?=`>wX?vR>eLu?7>b>7?M")?b>7?C#)?\>t?>L"%4,?[9?+7>Ȟ?]X=t?W>`IȾI??>KȾ#I?>ľ:k?u!=)7>>?L?H?7<>r>:c?M=4?%?>̀>c?̀=>dX? i>4? ?`>Ѫ>X?e>Lb>G7?*)?4?-?]>O"T7,?99?\>t?>,7>?,7>?ľk?"=p\/8?:d>{u?Zg?Iо, E=C/?#3?g?Iо???rg?SоED/?3??'n ?~G?h{3,>'U?j=>ݽQ9RI9LLj >O^W'9P^XL >jQB> ݽL;) >cYh⼭ h޽h{3,>'U?L >yVSK=jA>޽jA>޽yVf=:m}~>,>9P^X:m}~>,>9P^X:m}~>,>jA>޽:m}~>,>Gcc+DzdF>RIRIRIRe?ྖ1Re?ྖ1V t<V t<Z>;j+>j,pܦ,=,pܦ,=??J<???J<???????????)޻????)޻??)޻???u?T4o=??u?T4o=?????????????????J?*?uT4o?RI?uT4o?`~qƽ i=Qa~rƽwh=`~qƽ i=2S^~;=G:mW=@K 9,=lBXjWLO _?ڴQԝY2 CX9,= ?QYj ?ScQFp>QdA F>8>>徤=b?z>C = x?~;=G:s=b?+d F>z=>z>D =z x?E(?A3@?wJ? y<}?(?2@?z> =# x?>徤=b?+=}w?ԾkB,?DY7q?=={D)>V> ;ځ ?'>9E?X>E?d>p;| ?͋`7j?1Y> ;ڄ ?+=}w?◬]X7p?GԾI?,?N0_n>km^7i?O_b>/;@MG;>'*>>EC&?DY7q?Y>3@S?> t1 ==={D)>> |&M=> |&M==={D)>M>iI>׭=<{j^)>>FE ?M>iI> N>XiL> >WEG%?!Y>R@P?◬]X7p?RD_]d>'*>R>|N=M> i+>>ө>De$Η>M> i+>>Y>M@U?Z>AeUЗ>Y>@@T?DY7q?+j?r>+j?r>DY7q?߼'9 >ogZJP ܳ>^'z+ >͠9h,u23E~7gYR=}ľ_痾7gR=`2p-fľ_ۗľ_ۗ`2p-fϽT e_2p+rg JP ?ϽT g JP  >͠9h, ϽTL >͠9h,K>3]'+):?\ N>rY'Β+N?8~=S:):?\ {3? H?ʅ=m.?)2_Ӿ:G?=8㾭>*WJ?;2 Ӿ(pw}n2/3?-cPо]cPоn2/3?ľ_"ݗgľ_ν.T 4(-C. ϽTL  >92,qx>9% >͠9h,):?\  y>9%c`Pоžf_rSC-.4(-C.ϽT qx>9%x> 9${3? p>?#q)w):?\ J?;2 ӾDw>?V%wr>?*?,=0l?&>k7>K?0>>/X>>&?$? o`?}r>;X>"?H?;X>"?H? `?h>ZdK>1X?sd%J>r0X? `?h>b̾gY?>{ %`?'g>c??5>̾~Y?>ɉ̾Y?>t4??> N_?D>K?S$>>T>&?ǧ$?y>l*??y>l*??5c>&?Ҩ$?#Y>?H?̾~Y?>AN9 _?6>Av?^>>vu>?*?=K?S$>>=u}?` `K?S$>>y>l*??pt}?s`cs}?h`d >*?/?+}?.>*??Y>?H?~}?̥8Vk?kFžEY>T?H?Ǜ{?5D>X>?5H?Xd-<>A6X?{{?ND>ZdK>1X?̾Y?ଯ>8/6{?0D>{{?ND>|̾Y? >Av?q_>>~}?̥;X>"?H?Vtk?(Fž㥨p?!su>?*?/*=pt}?s`O2{?OD>Asv?Z>>y>>?$p8Vk?kFžF@{?hD>>76?*$@m>>?:d#Av?w>>_M@?#?Le&Av?^>>#N~_?:>I@?Q#?&㥨p?!su}?t`-"x??F!4"??F6 t}?,s`nb?ՠnb?ՠpt}?s`~}?̥~}?̥轂Vtk?(Fžpb?;RȒ>v/6?0${?0D> l>>?]}Vj>ټ>?n쾐F@?0#?K&+X?p0>pb?;Vtk?(Fž\ͽQ?{ͽֽQ?4Vtk?(FžJ>06?1$>76?*$@m>>?:d))X?=n0>))X?=n0>I@?Q#?& N _?;>I> ?*i|> t?2>>k?=b5|B?tB?žCɾ=xV??¾NmB?ž땾~A?ɾm~V?1¾ɾV?i&¾ ݕA?)HOf?@Ծ0qKf?DԾݕP}A?^>pM?ڕ A?w>I#?*t>2M?X>pM?I> ?*@l>w^?>!?M*?>Tk?VVl>{^?'߾sl>Jz^?߾?>Tk?VVcNG\?BM>(I\?M>?>Tk?VVHiM?t<2> k??cj|> t?H2HiM?tpq?9U=t>2M?Xl>{^?'߾VUj?}Z>$> oq?fU=xB?OSh>|?扟=vB?ɾm~V?1¾ h>5|?=h>7|?U=$ȾwzV?0N¾0JEf?վ0qKf?DԾt>2M?XY<x?X|>Y<x?|>>zM?nayj?oY>ayj?oY>l>{^?'߾qH\?M>,?'F? >#>nq?mU= h>5|?=Sh>|?扟=iNf?'ԾR>rS?>F>ۂS?>iNf?'ԾGY,?'F? > h>5|?=T>&S?@>GYWj?AN>5D?^ ?VUj?}Z>cNG\?BM>7?RY>&,>P>]?E>S?>GY6 ,>>]?GY C? ?C?} ?`j?e>Jz/ ?C 5?㾳 ?a5?VUj?}Z>\7|?\>bK\?M>HiM?t)>pq?9U=,?'F? >V? ?6>,?'F? >F>ۂS?>6 ,>>]?6 ,>>]?5D?^ ?5{N ?p5?87K?JM>ZノW\?jM>'վc?+fL>>Zg?I>d>{u??>g?I>?E>D/?3??>Zg?I>E>D/?3?U?$>tܾ-?l?6??*X?j=?D7??(?Hݞ???????*X?j=??*X?j=?)X? =???>-?l?6?a?h>>??ra?>>>?>L]gS/>?.?*>mC7??????????G=cc+>?????8t>s@??7t>sA?U?$>tܾ?U?$>tܾ???????3be=zHm???Zd=wjm??RI9?RI9Ѹ?RI9???U?>ܾ^D E>I/?3^|wD E>I/?3|w?[U>u?^?[U>u?>g?T>^? ?]?!?чa?>U>>#n?8a?h>>o)??>#n?8~Yɽ>J"n?V)??)????q ?[? ??a?h>>l ?4W?!?})m_})m_}Q }Q 东>_ge#>}Q -G=àc>>`g$>(?Hݞ8t>s@:t>sL@ :~.=8I9~=8 :~.=jV* ?(?HݞҾXiQt>9sh@ҾXiѷѸN⾗eQt>9sh@ַ8:ΪUq?东>_ge#>t?东>_ge#>wG=zc>t?!2?6?>`?Zd=wjm?>`?w?Zl[?^e=2jdm?>Il.?>@7l=>^q".?->;@7=ώ~l=>^q'X?h=;2?!E6?/\tۡ>!2?6?3be=zHm?/\tۡ>".?->;@7l?6~YɽH=~ҾZiW>Ll>weW>Ll->/q`8>weo>K`?:ΪUq??p[?:ΪUq?t?8?p[?%C}Q ѸnC θ8}Q 84'mnC  :~.=|w?jV* ?8nC ?%C?jV* ? x+{>¨>jLLj >¨>j9P^X󎽘L;) >e}'>ޟur'2o}'>5s4>u<'uovۆ(p禾A+=7u~tཞpj禾I_=`~qƽ i=7u~t(p禾A+=݇ھg?`~qƽ i=݇ھg?8ҾXi?`~qƽ i=;re:ΪUq$ewޟur'2o:ΪUqѸK>n?MA~>w?>Il?MA~>w?&,>JU?>Il? ཥv~'>;^cY'>;^o>K`aYV⼜¨>j/߽[w~O^W'/߽[w~^YGV O^W'MA~>w?: xj|>h{3,>'U?: xj|>L >h{3,>'U?'>;^/ro>K`/r:ΪUqo>K`xھfg?K>n?ҾZi?K>n?W>Ll?ҾZi?55v膾55v膾7u~t55}'>55?@r >55?55?@r > x+{{}V>*X?j=Uw7u~t=UwJ?*7u~t=e>}'ޟu?r'2o=}'5s4u?<'uo=[Gr?e>:ΪUq?$ew>ޟu?r'2o=:ΪUq?&Ww ݇ھg2J?9*݇ھgҾXiJ?* ཥv~?'>;^?2?6?'>;^?>`?g2?kr6?K>nMA~>w>IlMA~>w.?>@7>Il{}V>/߽[w~?*X?j=/߽[w~?;2?!E6?)X? =MA~>w: xj|.?*>mC7 x+{@7xھfgK>nҾZiK>nW>LlҾZi'>;^?/r?o>K`?/r?:ΪUq?o>K`?55?vۆ>55?v>7u~t=55?}ݢ55@r 5555@r /\tۡ~Y= x+{~Y={}V> x+{5s4>?)޻vۆ>?Uwvۆ>?J<7u~te>7u~t}'e>@v?C?;J<[Gr??J<$ew>;r??)޻uc&Ww wcyѸ΂ھރgUw e:wy?s ?X? ཥv~?s ?X?'>;^? ཥv~?ƽ>8s_>dpK>n_>dpMA~>wK>n~Y=exy?{}V>e:wy?/߽[w~?{}V>_>dpQZṱ8ѸMA~>w/\tۡ x+{MA~>wwcƽ>8sxھfgƽ>8sK>nxھfgs ?X?DӋDv?'>;^?DӋDv?/r?'>;^?55?@r >55?@r >v>55?7u~t55}'5555}'/\tۡ>e?D?,2 x+{>Re?ྖ1¨>j x+{>5s4V t<vۆV t<(p禾A+=vۆ\P7u~t=e7u~t=}'>e@v\p[Gro\,$ew/rWŏ{ t<uc?,pܦ,=wc?xھfg?pj禾I_=exy'?X/߽[w~s ?X>S>^ ཥv~}͟>6s?>bp?W>jn?_>dp?(~>Dw?;>n?we?Bྭ1e:wyZ>;jexy/߽[w~¨>j>gp?^t0>8(~>Dw?QZṱ>x |>MA~>w?s ?XDӋDv'>;^DӋDv/r'>;^wc?ƽ>8s?xھfg?ƽ>8s?K>n?xھfg?;555s4;55Kr+v557u~t=;55?}'>55?55?}z>|wsa>u^sa>ug?Tо^Uu ?xG?^?D EI/?3?^?|w?D EI/?3? ]?!6jM>ݽ#n?8>6jM>ݽ9m~>/>#n?8>L;) >9P^X~Y=9P^X/\tۡ~Y=~~q [? ~jQB> ݽl 4W?!J"n?V>5mK>;>?`7m~><>A~??]yV?N=DzdF>e DzdF> :~.e e  :~.n!oȶ :~.mVQ/ n!oȶCP}?})m_> i=})m_>}Q > i= i=}Q > a<*z}Q >-Gàc a<*z:ΪUq hҾXi?D/e?rEz(rF>>Il?&,>JU?l=>^q?&,>JU?=ώ~?l=>^q?^YGV o>K`]no>K`?n[]n9P^X󎽵aYV⼜/\tۡccY㼔pƺ[n/\tۡ&,>JU?L;) >H=~?L;) >~Y=H=~?ҾZi?W>Ll?>we?W>Ll?->/q?`Ѹ>we?o>K`:ΪUq?p[:ΪUqtѸ?p[{Q9%B?}Q >8nC ?θѸ}Q >})m_>nC ? :~.nC mVQ/ ѸnC {Q%BmVQ/ z;?A~?[P ?H9A~? i=[P ?e ~n!oȶ~%Q~n!oȶFۙ>@f?埾O/?ǩ ?C>X?u=/?4 ?>X?uϽ?X?u=(X?A=X?uϽ?O/?ǩ CX?uϽ?Yϙ>f)>/?? A>b{?X?uϽ??A'?X?uϽ?ؙ>Ufk֟>?A'?Ab{X?u=?A?'X?u=ؙ>Uf?k֟?A?'*q/? Ab{s/?~ (X?A=Ab{*q?>/? ?>A>b{?s/?~ ?>X?uϽ?A>b{??A'?͙>fן>*qؙ>Ufk֟>/? *q?A?'͙>f?ן*q?>BΙ>f?˟/? ?>*q?>( =ay( =>}ay>?=??I<???I<??;ힼ??;ힼi<??gfz>. t>3s@DmB>8t>s@wGzcDmB>wG=zc>ls¾DzdF>ls¾icѾDzdF>?Gξ9E̎`??Gξ9E̎`??Od??H=~L+l>>]nL+l>>L+l>>]nL+l>>?\e=u-m?L+l>>?3be=zHm?H=~?L+l>>?>&v??W=~???W=~?8t>s@N⾗ewGzcN⾗et-GàcN8t?-G=àc>D/e?wG=zc>rEz(rF>D/e?l=>^q=ώ~?n[=ώ~]n?n[^e=2jdm??n[?=ώ~?w?Zl[?l=>^q?=ώ~?>we->/qt->/q?p[t?p[?t?->/q?t?>we?->/q?Q9( =ty?^f>}ty?^f5?5Ѹ>}5?5?>$v?ty?^f>>$v?W=~?ty?^f>?;ힼi<?i<??>?=?>?=?I<??-%W>V#?gD>#n?8>>"n?j-%W>V#?gDq ?[? ?-%W>V#?gD3>JiO?'?q ?[? ?q ?[? ?3>JiO?'??-%WV#?gD?tt%n?>#n?8> W,$?hD? ]?!-%WV#?gD?4[hO?'l 4W?!q [? 3JiO?'????????p>yllf>?Ѹ?Ѹ?Ѹ?=Uc>?f{>3ilv>?f>U| ǽ>~|`ǽ?8= {=}??E=z=}??5f>BF?Opt> s@?/f>F??"ot>s7A???ZM>$>srQ??????Y>">pQV>,>&nQ??????? o>jlk>p>yllf>?????????????=Rc >???????K=n??p>yllf>K=n?=2G=O}????5f>BF?????5f>BF????Sl?ڿ"???????o?GJ=o?GJ=?~Rl?yڿVo?GJ=????s)?>8?HP>s)?>8?HP>????Lz?%="Mo?GJ=s?⃼>?s?⃼>???????????~Rl?yڿV?z?_{%=YM??2?,p?????|?>&?_<??????????o?GJ=??o?GJ=?o?GJ=??????Sl?]ֿ)?>8?bP>@Vl?˿V ?8)?LD8?aP>??)?>8?bP>?>uW[>?N>yW1>???s?Pͷ>???2?,pz?_{%=YM?????H4>#cO?.??20f>F??3>dO?8/??-%W>V#?gD?????3>dO?8/?-%W>V#?gD?ZM>$>srQ?? W>,$?hD,>,NZf~Ƚol?7Url?&UDf7M6>>3h 6>>h>a>Db8c>k?K,>k>ba#?n>9#>?&,I>?d,\T#?>x9:/?Ď>!qeZ#?f>9HL?ޓ>ρC/?Zj>EsJ/?P>s.L?շ> 8S?]>RdL?ݓ>OzDu?ˡ=fQ4S?m> T@S?D>cSԀu?=j8j?K>w1Z?6[>3((/̆8? /8?S6[>3KoA?hWO1[Z>3J}@J >AKoA?hW IrA?TJ}@J >AbZ-? 9@\>@3Ŵ>,q-?7 R%5>,yl?1UX-?E 7\-? Fl?+Upѐe?-&پoRe?0پyl?1Uv=F?!yl?1UR6>{>>hv=F?!v=F?!6> {>.hp>4?,*>?,@/?g>qw>O>I Y?p @/?g>qwr2S??k>"`S>q Y? ?F>jY?tJ/S?[|>kUL>q?tiͽW>wq?ͽ,S?`>S ( ?C3E?F'S?>Tb'j?>s1@ ??E?Ą/8?sByA?GO`)>s|?V!=F?!p>4?,~%<Ц?@b>ݽ?,TC> Y?!Tu|?VDuA?Vl4<?J =r?>= F? O<??S<?@z;>Y?9`nq?/:=H>1Y?L>q?tiͽTaq?;=6H>?\? > ))>u|?VX4<?>n?>F>6n?o>oRe?0پ =r?4ݠ>Taq?;=L>q?tiͽ4m?+(=L>q?tiͽ ( ?C3E?FDm?Y(=B>WA\?E ><?^?4I?;|>ף<?:+7?O ?z>67?) ?C4<?d>n?> =Er?Ѡ>S<?@cEaUW??T>-7? ?b>wn?>>W0?-?>0?-?F>6n?o> =r?4ݠ>+K ,(?b@? =Rr?Wݠ>PCRW??BJW?/?r~<[?>Xʾ=? ?Kʾ*=? ?Teʾ_=? ?꾦KQ?-R>W ?v?`nq?/:=Dm?(=y;)?">y;)?">Dm?(=A &?xi="D?m#?AR=@`)>|s|?FX1N?Lp?b> (>x|?V9>D\? >m#N??>'N?{?>9>D\? > ??u?> ??u?>C>:B\? >%T?Z?I? f>FL?yJI?#J>n>vD7?b ???%?>f???>>&7?I ? ?pt>?r>?%{7?~>37? ?S>0?-?S>0?-? =Er?Ѡ>=?G?=?G? =r?4ݠ>JJ%(?@?J)(?z@?)\SW?D?T犾>T?y]>T?)\SW?D?D־!>C?PCRW??aʾT=?% ? F־g0>C? F־g0>C?Vʾ@=? ?] ??q_ ?ԯ?`꾣XQ?7>@`; ?o>uOQ?H>Taq?;=@z5 ?}>.@> ?is>9q?L=s;)?">< ?u>m?t>?7?+ ?>?Ts7?+>{e?.=f?>5>p??O?Ă>Ǭf?>5>i?cf>[ȭ>*??̿?Ђ>c~???т>+i?(f>Zƭ>=?_>} ?>U ?X@?=C>h?'8= ??*?Q8= ??*?=>>"h?.I>co?=>>"h?/+-P>[n?IHl>o?I%ޕ>Ȓo?O>an?)X̾>dgW?]"{P>QUn?R6 ؐ>CJ?J̾Ժ>YW?BV̾>beW?(= ݖ>JJ?!&/?e:?= 鱐>WEJ?}:>=~?U+/?_3?U+/?_3?*:S>?v+n?( >h:Ӆ>I?6aio>V>2~+_b?->k+}?>Zi:چ>>t[@<>L>Z@_>΋>Vi>>+ Eeb ?GJ=%EVA ?@~=b^iφ>D>7qiw>lS=G???dς>ݽ=?|> ? >:?t>=?>7 ?>@] ?HS@?>0#:?g>>0#:?g>>X ?U@?ܕ>#:?I?Xݕ>:?P?v>R ?P]@?8=??*?Q8=??*?I>0o?0UyC??I>o?:̾>cW?UC??1UC??O>̾I>gW? /?kA?w+i?n>2[>> Q?d%> [ >>2E{H ?-=4 fQ?U`%>>ke?=|???Â>D}?Ey??5?>>0#:?g>[}?,EnG}?0kE>:?؁>P< ?p>y:?+s>T>:?N?P< ?ܕ>#:?I?8= ?? *?{r<ݐ?f=Lt<Đ?f=8= ?? *?۰a}?J=8=??*?rUC??a}?\=UC??(./?5?۰a}?J=bk}?J~=^"/?<?h潀7}?|=6/?)?Qr+,w?q>'06:}?CS=v+n?( >B _Q?E%>/潙9}?8= Q?0_%>2E{H ?-=x=m?Ӕ='K<?Iy%W>:??Am<?U^=彬;}?`T= RQ?G%>x=?U=SXξĢi?p⋽h>Bne?u!=D}?EHnS? "oN<?`t<#?w2f=aC}?"= /8}?.=7>4R? nG}?0kE;oN<4?s \?.3վr\?>վ/oN<&?s7~S? t<#?w2f=aC}?"=;X>9G?J>tAR?I)6}?&=?P? G彷9}?=D=?=?lP?s Ncξ[i?nG}?0kE(:?rZ9!(:?#t9[}?,E+6?þoD36?7þ[}?,Ebu\?Bվr\?>վNS?' 4?|$~S?~ Lt<Đ?f=*X>̹G?^X>bG?la}?\=6>:R?{8D> .R?;(t?P?!,?'??lP?s u=m?[={@?(?$Vr( ?HξFi?(:?rZ9(:?Z9vH-6?ӾþaB>뾯~66?þg\?4վlj62?V )pg$?!Xg\?Aվ-4?$3{4?M$mS? ,? OT?OmS? =j?M=*r?{|MHnS? ;X>9G?J>B>[;X>9G?J.>u?)*UX>G?B>,R?~3.>u?)*">E?*>tAR?{$??g$? ?A7>4R? F,?'?3-?'?˗ ?BP? %SW?:?J]> B\>뾜 @6?þlJ4?_ =m?M;X>9G?J>B>[RW??v>?;P?$ @?(?JGMIVvI!XȾoxilɾ~d%s` ?C4>JCd]뼾 ㅾ-`dz=#wԖj>.Rɽzl)UɽplP@ ehE=sAn$z>`6ꢾ=:>~{?>.eb/u9>ee}e==~Ez,ݵ>2jnHzMȾziA8@'Rr%>@|rWȾwiOZ6 B*MȾzijɾjd_+1 K*xɾ9dw&`䅾\dC1 'E*. N*PM䅾TbdLggb9b/ 1Յ_d8]ɽپle5jNb\/1Fɽyl=A$Nbi/1ç=A$;P>SmhH>0`#9>g02#UP>pho{?' k;P>Smhz>`6ꢾ7?ܽ }y? y5>v`I? >`n>LeI I? ̦("I? #G>Qe1|%?k.AL ׽?>.eb/е>akn{v%?}@A ׽kܵ>6in%z->tdC%?:AEֽUk Hۆl9@rNPj53XNb33H;@'rN徦ƾNqȳƾd5@.r* %K*0; :*#5kbJ/1"fdj@d]NbV/1iY掾uVJbR/v1=rAg$=B徘c=c=rAg$xV>;M1=A$I>0$!# a>s;M\c>;MOT>|0#? rN(ƾ/ B*h$#ヽD# (e*d[vdv#^DX&ڎ<ujNb\/1U= 徝cm>"̾JM&?8 yX;5?9O'X;5?9O'&?8 y^?jѾ? rI?/ 䙕^?Ѿ^? ѾI? u?. uN% I? %?APAֽu?=uF% ?d'B]v1>o7=}u~=p0> Yra>\^K>,u2U>|Ï=;xf>Չ_>ثLA?R|*T?j>MӍ.?u?⍾*?Q?oj >>{^r>{nۜj>VJ:?q^> ?K-Bu1>0>Yr>?65ݢ>/>TXr(>`K> (unU>?h6>h?6>`K> (unU>~?>bL^>;>La>`K> (unU>o_>LN?fp_>uLU?ď=xg>w}< l:>I<p/z^:?3IӍ(??0^i>?׾)]>+ *a0%Q>m f0B><׾-]>x[ASeU>x[ASeU>v tD>.9==~?>bL^>4_>L?I?ҍ>JH?_>LM?`IMH?N'?@JAjY= ?d'B]v1>IH??2> ?%B81>?h6>H??-M> D??hA>}?6>?,羼#??6>{>4L>n?2#??羡#?6=>L>ҍ>JH?|ƍ>ILH?w<)p/^:?an=Wh?2p={|h?I<p/z^:?gߍi-?\?፾:6??`>^Į># h08> ^0M>aA)U>$7>!|Η>p"AgU>X.8=17!>H??-M>#?羀#?N0??[0?|쾰??L]#?>P? ??Q}羇#?ō>CQH?x>P?k?9q=2Vdh?썾V ?~?P <8V? 퍾y?? U0}`> <#V? &GCz?Gxy? R0O>17!>15C7;z4?ď1l ?>7pb?5Oq=l1 ?450;z4?15C7;z4?p9>O=w> ipb?E(?A3@?MJ?y<?(?2@?>qb?ď1l ?xKoHzO=mW=@K V̾<j_K3^zjWO a?ټOxKza̾{wL=}>dkqQ=^)~[ӽ w=^)~[ӽ w=w7M=}>^)~[ӽ w=w7M=}>GLľT#*]W(횾msN(횾msN]WO>W>OW(>msN?Y_>Wј>`>W<>(>msN?GL>T#*?GLľT#* _W~(횾msN@ᚾn N]W]>W>]W)>iN?]>W> _>W~>\>p,N?GL>T#*?ʾս?45?}T?S>>x\O?m> cO?}T?S>w >/%d?^ݾzT?N>t>h,?rPw >/%d?^ݾo >c$d?ݾ%t>O0?ZPГ>@?\C?YC?@y 'd?>%tO0?ZP?th,?rP?w /%d?^>|>T?rDw +d?p>m>> cO}>T?S>T?I>>x\O>ս?45>J,5??ޱ>_7?!?{>o?܄>ޱ>_7?!? >"n?#~{>'o?܄>~{>'o?܄>>n?*0r_?MN>n?*0<=4o>Qxv_?N7deE[_rǻbfZ2ܤg_DUZ&4A=a_|Ļg_DU4A=k%Rx?E=[?cN?n?*0>E=[?cN? {o?Än?*0> "n?#>e|{o?%鄾ޱ_7?!^{;o?τ*/5?ޱ_7?!?qo?J5b=s?⃼>s?⃼>qo?J5b=????9s?N|.>?Q:o?*K=??o?GJ=??o?GJ=o?GJ=Sl?ڿ"????Ѹo?IRxv_?N>n?*0r_?MN{>o?Є>>n?*0 >"n?#~{>'o?܄>ޱ>_7?!?{>o?܄>>J,5??ޱ>_7?!?J,5?ޱ_7?!{o?܄ޱ_7?!En?/>~{'o?܄^{;o?τn?*0>=r_?MN?n?*0>=Ho>Rx?E=[?cN?k%?75}>T?S>> _Om>> cO}>T?Sw /%d?^>}>T?Sth,?rP?w /%d?^>w /%d?^>mt"1?P?Г@?\C?>?YCo >c$d?ݾ%t>O0?ZPt>h,?rPw >/%d?^ݾ}T?S>w >/%d?^ݾm> cO?}T?S>}T?S>>x\O?Nʾ?75?GL>T#*? _>W~>(>msN?A>jN?]>W>]W]>W>(횾msN]W3kWٰ(횾msNGLľT#*GL>T#*?`>W<>(>msN?(>msN?]>W>OWO>W>(횾msNY_Wј`W<(횾msNGLľT#*?7M?4t=?H5+=?H5+=7M?4t=?????H5+=??M@;??۶?G@;???M@;۶?G@;?1??????M@;?1????8? 'KL?{?P0L?{IX+{?q9>JнR?fϽDR?N%${?q9>^=_p|?%>^=_p|?%>%${?q9>'wg1?E8?XT{?1X9>)?2=?Hg1?-8?{ ?V8j?JȾP=?NP=?yNJ;j?ZȾ9= 6~?=7j?UȾ<i?>k=5~?=tl=7~?܍=Nb>S?>NbS?ݟs5~?i?ӾZi?Ӿ9 6~?|9=)j?e>ݟs5~?P?N?8=j?J>8=j?J>P?N?{= ?V?"O=i>sf=}=>iA>>i>=}7=?ˡ=;g־ f=$}z=ɼ 7 uoU=g־X=ħg־ɼ' zyUp=TZv!R> `ZF?v!R> `ZF?=sOZ>µ=~>uy=s ?>\1dRw=T;u1@=:uΔ0RL=OO?q⽇=u>[1=Rj?Z1=XRa?⽪9u`>Tǽsb3q⽇=u>v!R `ZF0ǽ3sNȽs>'R)e^FAh=TZ㤊|Z?>g>޴g>2}ǽXħg>Xi|žfj}ǽ f$}zȽ͛4ihžMDi;%6;ѳ.ME!t.ME!t.ME!tQQ888:qݭ=:qݭ=qݩ=xPW|+?W|+?W|+?QѸѸѸ`mߋm<_m<_m<>h=%ZBǽes3'R)e^Fv!R `ZF0ǽ3sN;ǽs ?X1=R?wT;u1>~;uݑ>[1=Rj?1OU?L=O=8u0R0Rw=T;u10=3sN>µ=~>uyv!R> `ZF?0=3sN>=s ?>v!R> `ZF?S?>R8=7~?8=^?7=5~?6*=8j?JȾ=6~?=P=?yN|9)j?eȾpj?JKȾP=?N{ ?Vg= ?V?J;=j?Z>9O?ۋN?P?N?8=j?J>akY5~?)|9=)j?e>Zi?Ӿ9 6~?9 6~?i?ӾwVS?"Oi;fj}ǽiAžižB}$ǽ/5ǩgH>2}ǽ޴g>g><4 qU?0MZ?p=TZ?ˡ=;g־ɼ' zyUtɼx/ wtUX=ħg־f=j}=ɡ=g)־X>i|>f=j}=sf=}=͛>4ih>M=Di>0>L? ~?X=T{?1X9=R?u?^=GR?ʹ?q#=z {?A9]So|?i%Z]Gn|?&W= {?9H<-a1?8X=T{?1X9=D)?=HDwn1?x8?@_=kq|?[%>%{?/?9>^=_p|?%>fϽDR?N%${?q9>IX+{?q9>JнR?P0L?{uQP=`uQ9=ok{@cok{@cRI9RI9RI9`uQ9=uQP= uT=v~? uT=v~?4fz[F>Qesz\F>Aƾ״>HL?ƾ> L?=>muQP=xQ=@4!34ͽw7M=}>iq _=4245ͽ@4!34ͽlq=lq=9#=?V@4!34ͽ9# =?V9# =?Vw7M=}>vb9&;8أt9&;8أtvb@4!34ͽvbvb@4!34ͽ8&8twL=}>dkqQ=w7M=}>SR%?O;?@4!34ͽ7#=?zViq _=lq]=9# =?V???&>m?H4#cO?.-%WV#?gD?3dO?8/? W,$?hD?????3dO?8/-%WV#?gD?? ƾ\>L?w?yc+w#{?_\;6?BM;!?AϾ[>_ͺ.l?X?Ͼ6]> _^;W>fh%佥f?LXAb?ͣX^e;G>fZO>M>X^e;G>f^>v|>N;_O>:S> XvO>B>X&$>e>N>Y 0?!>o>9NZ??>Y 0?FeZ?ԽP4?o ?Sk(?@Ͻ7?d(? Ͻ#ls?{Ƈ?rr+Iw?i+RA;?CA3/Z?`d@*-Z?bLP;P?zAY2r?tO;?Ar(a?/X3|r?g r?:]_?XI?=j\?k?X\O>]>H Xcq=n\?i@=by\?qO>s>X>0?>Q0?_??~g>;K?5??gD5?5a ?Φg>;K?5*>dK? "_L5?U ?)ܦ3?C?:M5?VV ?rЦ&O?_G?E*7?7C?W:q4?C?:'O?G?)e>g?Qɺ=~?7?d(? ϽVgT?60RJT?0ľb?JP>m?g=ľϑb?m3Ƈ?rr+/9#Z?<辱p=^g\?>0?={?[={?v> 0?99#|?k=V>T0?g>;K?519#e|?<==p~? ⼜YXT?0>Q>cm?3=ľ6b?Y-2Z?N=e?3=Һ=ӕ?H1=k+"Z?04r?9#|?k=g>;K?5ݾle?=ݾie?E=P>$K?&&?C?I:>Q>cm?3=ľEb?x> f?ia>ľ6b?=e?3=>f?saa>R=?@2=4jr?$>X?K?% >MX?WL?4jr?f9g?p>3|r?I?=j\?f9g?p>u=m\? џ={?\7g?{>5m=g?[`>k=W{??CV?>k=P{? X9#|?=2"V?>d0?C?:K>4g?ݾle?=ݾle?=U>g?ue?&޺B1?dD8?i=sɺ=~?G>Q>cm?3=3}>Cf?a>R=?@2=>A;?#?/>K;??9=?F,2= >X???$>X?K?8g?{>G1%I7?2?h~Ⱦ2? )?f9g?p>4SV?>A V? >9#|?k= 35?!ä> 35?!ä>9#|?k=ݾle?=~1?G8?= 6>m?$2=B?\?rF>B?h?^F>J`>Vm?=My;?le?>vE>m?h= |>f?,a>pp;?p?>q;?q?>3}>Cf?a>.?N?z ?ϋ>f?/a>L>:;?)?.?A?m?}.?]??6?L>:;?)?S>ي ?l4?>1<;?;+? &> X?S?TE> ?ņ4?7F> ?4?&>^X?G?>?XEQ?݆>?IQ?'> X?N??4E7?G2??4E7?G2?\7g?{>7b>?;wA?7b>?;wA?\7g?{>Ⱦ2?+?h~Ⱦ2? )?4SV?>-?a?6??QV?>' t5?ݤ> !5? >9ܾsse?=Q ?P7>Q ?7>ݾpe?7=a[??=ܾre?h=Bfe?޺b][oG?h=;?L,?=p?\H>B>X?7g>:c>X?r>%c>eR?D>H?R+?.?M>*??H>R?w>M??]f>JP:??XL>W:?;R>QR>G#f?+`>q-?9F?Q>2?8F?R>mm>f?<=p\?S?T>a>f?Ky꟯>o?m<=W?S?Y<==D\?S?Fz>o?rɽ?S?@zn>Yo?>U[?r?S?f+rs?S?ᾟ>[?&;c?-?>U[?oF2*>l}?@U?-?@U?-?dO2„>lr?pH2>3r?>Y>Px>gh<) ?>Z;?,?=JX?>-:c>|x>}:p?b]=GX?e>Sc>+?%?4>>a2p?=*??>H?>XG:?|>^=? ??ft>+Q:?Q>2?8F?>P=? $ ?KQ>+?=F?m<=T?S?^.:\?Ė?<=p\?S?rɽ?S? -:\??c:h\?(?s)r?S?3zH?'?zH?g.?r-?̡S?DN?-?Qq<> ?|>hJY>Q>& ;?Q>xEY>_x>:KE?=`& ;?Q>Dy5{?;?,?l=|x>}:p?b]=>3p?]=+?R?>@q=h? =+?%?4>>sI=?) ?e@q=~h?O =op=i?? =>T=?Z ?v>+-g?6>> O=?" ?Q>2?8F?s>`(g?L>s>`(g?L>Q>2?8F? -:\??^{=H?/?&;c?-?-{?=ϿS?-?k<| ?>+{?1=0{?w=d< ?>V&;?yQ>o=Yk?f=&>R9g?>TA2~?QٽZ>+g?B>c:h\?(?l<.~?#Gؽl<~~?zؽx/:\?}?-U >Ϡ}??fgD6{?x>9p?K= DS?1* DS?1*>7p?=~8d?GC~8d?GC(>u8p?[=op=i?? =O/<$w?u,{?^=$>#Z?ݾ$>#Z?ݾ-{?N=>Y[?O>c[? ,{?^= >ڟ}?UA}>7d?hOp=i?M =ϱI? o'I?lpp=i? =u_:5P?%x op=i?? =l<.~?#Gؽ6^::P?p l<.~?#Gؽ0-<6w?u=xLZ?/ݾ/8?>{ǽҙD#4{?⃼P \S?*D:.P?ڄ {j[? >}?#UA/?Iu6?w/8?FǽF %S?*Dm?5AܼDE?9[ S?T+ 6yi ?[޾ \S?+M3d?LQ5} ?a޾;5w ?)޾M3d?LQ?A3d?CλDI?~e;?6?I?qľ1H>lGɲI?$V\:&@P?%i ϴľb|>"Gݵľc>†G6^::P?p &?Uu_:5P?%x =BvK>[p]=BZ?ݾoϹ> E ?bB=>I ?YB$>#Z?ݾޔ??.>Z?ݾ>[?h? ?ޔ??.>[?Ё#>?6?d">?<?Vx>U[?PdH??Tl>Y[?O/?Iu6?iH??lNyH?m?imY/?^6?RU?{ ?jU/?~6?(PV >}?RAU?< ?Uv >I>n]Ϫ=LK ?[BK"[8)j;%8#ByRQ>Bg%8 hQih7x$q=@>'kЀ\A-#}7n 514/>a7nx4žyho1J.//a1J.//aRž>ham'cžhSHCZ~྾aL'Ui['yq̔QZ>*0+,Z뾾Q\; (0+ (0+Q\;؎ APG&Q\;ي[(j;؎ APG&苗ٻAD&K"[8)j;jQ>#ByoR>B^=s4>^=9B[=sI\>KmKd>=/Aɐ\>Nmz;A>fk>R=p84>^=95>f3?(?G3q)7>fe>+hRa@(?3e3?(?G3q>+hR ?yC{>+hR>#kP ?|CftAu#1!/a/bվY bnվY14/>a6"UC>ϾUϾ1\9/XaZ'Ucf}')` (0+1x>[KH0+؎ APG& =[ ^SӵAK&Q>B =4^ =O^RQ>BgJ>?Y9=?(ᄅ>==EK(?Q3G~AR(?3o~ ?$gCpg?e+Ufоu_'/?.>7mq'n'>قKp/t 073/a>7) >yK:ݾ~W_>ܓK^*0U+>(}ݾrWݾplW'0+~<Ӿh (0+a =F^N~YO<ӾhJO˳Y?i4GqJ>AYjQ>#By?xGQ>B0x>%=0?'G8?lG>=E>=?*k=?YB(?A3yo]fg?ͪ1~ $g>F >v^ziC!hbΤ>.I|= SGQ> f}|1"=8ACQҰ>bu>/K|Q=SGQ>wF?Cwov> >pcb=7?j?V> >pcb=>!m%=7?j?V>%>m#=d>}n L>7?j?V>=?Kc? >o>znL>=>7o ?X>ynL> >kʔ> >a7 ?>k/>YO>EfN_>=>7o ?>>T7C ??O>fU>1&>(*P:?8O>zfS`>=[a>1&>(*P:?&>,*:?=[a>yipoRH ?4=Ya/>KYSAb>L{iCjR?KYSAb>J g|^>cvidlR??xitR?H 6gN>(7<? c wgh>K xb>&)7K&?(7<?/b>"9( >Tӫbf>t'SiQ>/({ E>SGQ>DQ(> c4=-;R>*`? >F?dw>J[?ྫྷ>YF?6d6>E?s]?{>B[?ba%>7?j?V> >a7 ?D7?5^?y&>})*:?cvidlR?1mV;j?|ieRI?D&.7*?RV!j?CRVHTj?\7$?dBmR:?rpD:?1j7&)?{@( >=(w :>S'Q>h4-2R>"[?#>7?j?V>G7?8뾠?F7?U+?=>7o ?>/1;?b>E!6;?<>ܯ7 ?f>lGe?%>Ǹ7 ?3&>%*|:?>zHe?r>-pFe?0&>!*:?P =1%~?3&>%*|:? TV<_j?f =D[~? =W%~? TV<_j?:y- VԾd?[-RԾ,d? TV<_j?Hо:[?8VNpfj?Pix:?XFо[?n5/:?TC(h . >hTҾ5>1(2!n>mZ4Z-R>,_TӾ]>g5?{D;MF4Ï=3ubu?AڼøÏ=35?sD;?4l5? >;QF4p?b9u?ҌۼubW' 5gAJmnN^? F֣< "?\`> 1yi|2=O%=%ni|7=Խ3} g=%=A% g=%=A%r6=Խ33}z"= WFy=uԽ3}e*<\%|n=W^Gy6(h%|? ꯽%WGy?*ֽԽ4}?nW^Gy?2O%=%?r6ֽԽ33}?*ֽԽ4}?2x%=s%?ϋ(>h|?2x%=s%?6=t`>N/y?`F(>i|???????????Ѹ?Ѹ?Ѹ??????2??վ, >F?A>Kw^?K>d?S>G>ݟH??̆4?/?B>>,(>EfQi??oQ,M? ?`=,>6F?2?L?XվA>Kw^?K>>d?wS>?M?d=4?? Q>۹>ȌH?&?>S?(?=?G>`?>`?(? ?i>"K? ?]>K?T|>p>cu?j?'?o7?i=u1>x)>yaQ } }?2?=I,.2??\־u2?q?վ>eo^?KȲ@?@'$?!@?+$?>t^?UK?M?G=>?{M?&V=>d?wS>4??S>Z4?7?[>>Q?(?=?I>e?5=?,.>xg? ?]>K?lC'?7C?z=#o7?i=u1 }vi?.>P>2?\?վ@?&9$?}@? $?t ?M?Z=sDh?_>=#h?z>=?.M? ='v4?s?8>gC?=8#_'z?N=>NM(z?=NM }ǯt?L'> z }o2?p?[վ®t?Ϻ'>zt?'>+zc2?o?վIo?w?h>ZMo?/h>No2?p?[վXi?C>>yi?#>ˑ>@?,@$? z?wDK>z?+K>T@?8$?-0h?E>=Ah?<>S=4?<?GD>"v?q>>!v?dr>k>4?? Q>s?%p>$G>k4??A> =?|>Y?.s?q>nG>.s?{p>̒G>&=?Я>l?3y?0e>2>y? >2>0=?*>d?o?p>7>=?>Gg?-E'?o?y>)4>n?h>+>r7'?v?h?h=C>v?d=>r@'?|?<1>)?iJ;nL&>v>\m>uF>qc> \m>b fo;>c뽬b>|c꽫=f Xg><"6$Zf)fÈ>{ L!h><"| h><"ψ>'z SL=?cɾ(0 ψ>'z SL>b5 t?vSA!r>+ڽRl?>?R? 5?1?d4?xiͮ ?>?R?>)?W9?P Ս>>Ԑ)?v>\m>n?YSA.$> tF?[S! 5?1?M>L0R?b4?z_ ?Xf4?]* ?>ؠ)?K9?< >9?J >>\ m>Dž)?iC;>f&>m)?>Y;,h&>>2cFf?^۾oꦽeYf?q۾`>zc`?-ԾRv|U>|cCR h><"L`?]7Ծfv h><"=?cɾ(0 `?8Ծv=?cɾ(0 ψ>'z SL?vSA|?D 5?1?x?g>g5?1?g4?0lժ ?̌x?Ng>x?jWѽg>+k4?O ?y? = K/>Z4? { ?9?kq >y?_ \/>y?0( 3/>ш9?_ >0z?,?_I=9?B >|)?0D;L&>I z?)>]=z?%>|=ߤ)?X';d&>j|?)*+<k)?];K&>AJf?'۾^|?++{?=:{?A:Klf?0"۾l/ ?SAx?xjMkx?b)mQk?SAF?¨O!Gξ9E̎`?ξ7HI`?ѸѸѸO8h?OѸh?5555Yl¾Yl¾55 i2Ѿ5555:8ay i2Ѿ55ayDmB>55?ug*>55?55?DmB>55?ξ9J`?55?ug*>55?Gξ9E̎`?????????????????????????????????ty?^f??????ty?^f????ty?^f>??????ty?^f>??d?Zs復>;NRj3H\?:mzx?u>d?v! 2H\?;m l;?,>cͼRk? cͼRk?zx?u> q(Q<3H\?:mzx?u>d?v! 2H\?;maP<|?,>cͼRk? cͼRk?zx?u>u9G?d<ї ?#:kR#e>˘ƾ<k?M_Zr)>M_Zr)>˘ƾ<k?fDX;?_0 9>Jx7"yC@D6=a0(Jx7"y_ĺ9>BjzVsJx75"y@D6=a0(@D6=a0(ǚtBjzVs#:kR#e>˘ƾ<k?M_Zr)>M_Zr)>˘ƾ<k?/ξ;NRj?_Kĺy3>Jx7"y9kl#1>@D6=a0(Jx7"y_0 9>BjzVsJx75"y@D6=a0(@D6=a0(ǚtBjzVs qN<|?s{޺{>?tѾ@=Ii?s{޺{>DYjF$??tѾ@=Ii? Y@\Y➉ $?sFѺN>sѺ/>Wc = Y@\Wc = >q(Q< Y@\~Y*M>q(Q<:#Y[pr K;?=D;+? Ӿ,nEh? Ӿ,nEh?=>;+?f?w J@>=JD;+?m]<%f?w J@>C?w6ݵ7@>@mk';5d><|Ae>';5d5l?ŕ;EþY?wY?wl?C;:þ7r?ĺX>wl?o<:þ\??%<_ *?9r?Nĺ>\??Y)˻kd?9r?Nĺ>\??%<_ *?fDX;?}v>,˻ d?0VA?DZ<'\?= +_>:h9\?rL}>ԻiT>S:hHw? <>\?YI\A?<'ߗP?#h?9\?r:w?{<>0?pn<J?ܗP?e*h?:w?{<>ܗP?e*h? ?sj<"J?P?6P\?4?>ލF?>?C>?>g>ri? >g>-i?>?%C>?z\?b,>?@>? ?x&I}\?9b"꾁}\?9b"m?xI-?ZV+ ~?)|r;8=i?tD=?':W=i?tD=v?~7?? 9W=?99==v?~7?J?ѹmv?~7?6?`;K?Imz?=Y=D?rm ?"f?Uc*<2>D?2n ?pX{?_=W>!f?(<7>(f?(<\B>kY{?H=_>>L?C6>ڍ&Z{?{=>>A>nkiL?C6>ڍA>nk<i?L?C6ڍ?&Z{?{>L?C6ڍ?(f?(\BkY{?H_>pX{?_W!f?(7ྛD?>2n "f?Uc*2z?=>YD?>i  t;XWD:>2UU}=3j= W[:>xY_iƼ>M:>}=]=_iƼ>M:>Ğ>94R*?}=]=U}=3j=Ҟ>2^*?N+;N+=U}3j>2<*Ğ>942<*Ğ>948>a=}H=6_=9_^8>e2>aT>P<}=^=eO">^T>ӹ6#K3?P<}=^==}H=6_=R6GGR3?ɩ u"?]>D)?z~O?0>> I?Ϯ>Q>U?Z>J>U?ǁO?H>{@?z~O?0> Iz~O?0>> I?Z>JUǁO?H{@z~O?0> I>poUu"?]̾D)?Jut" =w+?u!<>ut<" >o=O~p+?'uٛ=@?ȴ9[=/Eգ;kY"Bw2wE,أU"?Bw2en>ȴ9[/?EգkY"?D]?/^=?\?ծ*?]>OH?O?Fb=\?ծ*?]>?hRU?S{a>E?O?)=?hRU?S{a>>;?ZBE?O?,]=H?LO?.=>;?Z,D?g9_$B0Ot=BQ;&BQ;&Oo=A@"+%>A"|%>0Ot=w->O+t=O >|-> ?=;V?SM?^?m5.?>],?$7.?>X,?M?SF.?4y?M\i4bM?`?X?5ƾ4y?.\ie2y?zi Q?5Hƾ&??!=)]>7>b.P>>XФ>֮>AX>>_bEP>śB?ۅ#7>b.P>3?:[XB?4>B?1W3?:[ .?=.:㳕^sq^=OEJpr;ˮqEEF>?xzB=X>xzB=X>qEEF>?o I? ?>YUQb ؾLCQb ؾLC&E)6>9.?]&)>k;>?}9F .?v5{eؾŭQƾU|%ؾQ@Ǿ*/Y2w3Y0<骾@h>R>n 8x1;| 5| 58x1;5!sx1>8x1;eVkf>5!sx1>xesT1>GRf>0$N¾TX*?pw)F?pwuF?׏ Z>?S>C>?>C>?>?f}XC>?>:?^b T,?Xb?Vp>_?f> _?ꕼ>%b?8p`>X?f$b?Sp/>cu>9TfLkX?A#&X?6r>Pfd>X+R+> ^hž!Oob;:3 7F:3 *Nob$.vȻZ>'q>]Tofb-r $>e}>v[>n>vZ>Hp>4r#>>lW$>! ?ľf'5Imھjgg<- pT $ھfg <7wQC>Rjp<>4Gj$<>7TwC>c_tѓ>:S?z,ھ>k?<Լ=0Ev?2(Շ>_Dv?鄽ԇ>k?bԻ=[?׻|̾k?gH =$? [[?*̾[?*̾$? [i>cM>\ Z)?@37 >U/?k(,>>8?0Y?GS}[<8?e0n<8?X1KS˾?Si[-}L>&OlJVC>S̾Y>">pQ^-%W>V#?gD^|w!W>}'?dD|w??f>F?^??f>F?3>JiO?'?^? ?]?!?\)?78?PbP>>#n?8\)?78?PbP>\@>&?Kd<>#n?8Pl?*濾!o?GJ=f>U| ǽo?GJ=p>yllf>f>U| ǽ>J"n?V|?>&?_<|?>&?_<??q ?[? ??)?>8?bP>l ?4W?!?})m_})m_}Q }Q >uW[>}Q =Uc>>uW[>/3?,pQt>9sh@Zjt>s:@ :~.= :~.= :~.=jV* ?/3?,pҾXikt>s@ҾXiN⾗ekt>s@:ΪUq?N>yW1>t?N>yW1>=Rc >t?s?&僼oǜ>>`?K=%x n?>`?w?Zl[?K=%x n?>IlLz?%="Ml=>^qLz?%="ME=z=}l=>^qo?GJ=s?&僼oǜ> o>jlk>s?⃼>K=n?p>yllf>Lz?%="M~Rl?yڿVE=z=}~Rl?yڿV>~|`ǽ8= {=}ҾZiW>Ll>weW>Ll->/q`8>weo>K`?:ΪUq??p[?:ΪUq?t?8?p[?%C}Q ѸnC θ8}Q })m_nC  :~.=|w?jV* ?8nC ?%C?mVQ/ ? x+{>.ME!tiq _=.ME!tE 4 -4̽iq _=%6;ѳ}'>qoJ5b}'>5s4>qo4Svۆq=7u~tངq=)~[ӽgw=7u~t:qݭ=݇ھg?)~X'ӽ-9x=݇ھg?8ҾXi?^)~[ӽ w=[Ѹ;rbk$6³:ΪUqbk$6³qo4S:ΪUqK>n?MA~>w?>Il?MA~>w?wk6M=9}>>Il? ཥv~'>;^hv<bا'>;^>`hv<bا.ME!t/߽[w~4/4̽/߽[w~vc 4,4ͽMA~>w?: xj|>w7M=}>: xj|>dkqQ=w7M=}>'>;^/ro>K`/r:ΪUqo>K`xھfg?K>n?ҾZi?K>n?W>Ll?ҾZi?55vۆ55v膾7u~t55}'>55?@r >55?55?@r > x+{{}V>9Pl?忾'U{}V>o?GJ=9Pl?忾'Uvۆ>Uw7u~t=UwJ?*7u~t=e>}'qo?J5b=}'5s4qo?4S=;r?e>:ΪUq?e>qo?4S=:ΪUq?7H9&Ww ݇ھgG"J?݇ھgҾXiJ?*/߽[w~?'>;^?s?&僼oǜ>'>;^?>`?s?Pͷ>8K>nMA~>w>IlMA~>wz?%=L>Il{}V>/߽[w~?o?G)K=/߽[w~?s?&僼oǜ>o?G)K=MA~>w: xj|Lz?%="M: xj|9Pl?忾'ULz?%="MxھfgK>nҾZiK>nW>LlҾZi'>;^?/r?o>K`?/r?:ΪUq?o>K`?55?vۆ>55?v>7u~t=55?}'55@r 5555@r ?1?)?@; x+{?2@{}V> x+{5s4>?} zvۆ>p?~ Uwvۆ>M?? =7u~te>7u~t}'e>DӋDv?L?l=;r?M?? =e>[Gr??} 3wcUw ucTѸ݇ھg&Ww ?H5+=s ?X? ཥv~?s ?X?'>;^? ཥv~?.8ƽ>8s?In?< ZʼMA~>wK>n)?@;?H5+=}#>?H5+=/߽[w~?}#>? 'K88MA~>w?1?0"x{MA~>wwcƽ>8sxھfgƽ>8sK>nxھfgs ?X?DӋDv?'>;^?DӋDv?/r?'>;^?55?@r >55?@r >v>55?7u~t55}ݢ5555}ݢ/\tۡ>V|y+ x+{>V|y+ME!@ x+{>5s4_^ߋE2o<vۆ`mߋm< q=vۆxP7u~t="6nγ7u~t=}'>"6nγ@vxP[GrxPbk$6³;r+`zߋk<uc?qݩ=wc?΂ھރg?:qݭ=exy'?X/߽[w~s ?X'>;^ ཥv~}͟>6s?>bp?W>jn?_>dp?MA~>w?K>n?V|y+e:wy.ME!te:wy/߽[w~.ME!t>gp?/\tۡ>8(~>Dw?QZṱ>x |>MA~>w?s ?XDӋDv'>;^DӋDv/r'>;^wc?ƽ>8s?xھfg?ƽ>8s?K>n?xھfg?55@r 55Kr+vs놾55u~@=55?}'>55?55?}z>|w=>m^=>m3JiO?'^0ƾ>L?^?-%WV#?gD?^?|w?!W}'?dD? ]?!9#=?V#n?8>9#=?V#VR%?;?#n?8>iq _= 4,4ͽuQP= 4,4ͽ/\tۡ`uQ9=~~q [? ~2#=? Vl 4W?!J"n?V>oR%?o;??VR%?l;?A~??8<S#8c>70fz=F>e 70fz=F> :~.e e  :~.n!oȶ :~.mVQ/ n!oȶCP}?})m_> i=})m_>}Q > i= i=}Q >8&8t}Q >ok{@c辣9&;8أt:ΪUq}?&8tt9&;8أtok{@ct(<=U#Uc>ҾZi?ez=F>ҾXi?N⾗e?ez=F>>Il?PwL=}>l=>^q?wk6M=9}>)v=~?l=>^q?hv<bاo>K`]no>K`?n[]n4/4̽v`t`/\tۡhv<bا]n/\tۡw7M=}>ciqK =^u*=~?dkqQ=`uQ9=(v=b~?ҾZi?W>Ll?>we?W>Ll?->/q?`Ѹ>we?o>K`:ΪUq?p[:ΪUqtѸ?p[{Q9%B?}Q >8nC ?θѸ}Q >})m_>nC ? :~.nC mVQ/ ѸnC %CmVQ/ z;?A~?[P ?@~? i=P?e ~n!oȶ~~n!oȶῙ> f?䟾/?? ?> X?g=>/?4 ?>X?uϽ?X?u=(X?A=X?uϽ?/? X?uϽ?Yϙ>f)>O/?ǩ CA>b{?X?uϽ??A'?X?uϽ?ؙ>Ufk֟>?A'?Ab{X?u=?A?'X?u=ؙ>Uf?k֟?A?'*q/? Ab{s/?~ (X?A=Ab{*q?>/? ?>A>b{?s/?~ ?>(X?AϽ?A>b{??A'?͙>fן>*qؙ>Ufk֟>/? *q?A?'͙>f?ן*q?>BΙ>f?˟/? ?>*q?>( =ay( =>}ay>?=??I<???I<??;ힼ??;ힼi<??gfz>Qt>9sh@DmB>Qt>9sh@ok{@cDmB>=Rc >ls¾70fz=F>ls¾icѾezWF>?Gξ9E̎`??Gξ9E̎`??Od??E=z=}L+l>>]nL+l>>L+l>>]nL+l>>?K=n?L+l>>?K=n?^u*=~?L+l>>?>&v??W=~???W=~?Opt> s@>weok{@cN⾗etok{@ct?=Rc >D/e?=Rc >ez=F>>we?l=>^q=F= }?n[=F= }]nw?Zl[K=%x n?w?Zl[?)v=~??n[?l=>^q?)v=~?>we->/qt->/q?p[t?p[?t?->/q?t?>we?->/q?1Q9=#ty?^f>}ty?^f5?5Ѹ>}5?5?>$v?ty?^f>>&v?W=~?ty?^f>?;ힼi<?i<??>?=?>?=?I<??-%W>V#?gD>#n?8>>"n?j-%W>V#?gDq ?[? ?-%W>V#?gD3>JiO?'? ?b?c ?q ?[? ?3>JiO?'??-%WV#?gD?#n?8>>"n?j>-%WV#?gD?q [? -%WV#?gD?3JiO?' ^? q [? 3JiO?'???????? o>jlk>????=Uc>? o>jlk>?f>U| ǽ>~|`ǽ?8= {=}??E=z=}??5f>BF?Opt> s@?3f>F??"ot>s7A?RI8?RI9?Y>">pQ??????Y>">pQV>,>&nQ??????? o>jlk>p>yllf>?????????????ʐ=VScy>???????K=n??p>yllf>K=%x n?=F= }????5f>BF?????5f>BF????Sl?ڿ"???????o?GJ=o?GJ=?~Rl?yڿVo?GJ=????s)?>8?HP>s)?>8?HP>????Lz?%="Mo?GJ=s?⃼>?s?⃼>???????????~Rl?yڿV?Lz?%="M??2?,p?????|?>&?_<???????8?8?8?o?GJ=??o?GJ=?o?GJ=??????Sl?ڿ")?>8?bP>Pl?*濾!?\)?78?PbP>??)?>8?bP>?>sW>?N>yW1>???s?⃼>???/3?,pz?_{%=YM?????H4>#cO?.??20f>F??3>dO?8/??-%W>V#?gD?????3>dO?8/?-%W>V#?gD?ZM>$>srQ?? W>,$?hD/J>r,SZ?f~Ƚol?7Unlb?,0UD"KR6>{>>h<6>d>h>ف>lbp>4?,4>>bQY#?>9*>?,p>4?,QY#?>9C/?Zj>EsQY#?>9L?>@/?g>qw;/?u>xL?>Ѐ,S?`>SL?ۓ> u?sʡ=]r2S??k>"`(7S?[>^u?=b=^Z2j?>M1Z?&5[>"3'/F8?S㽸/8?㽖.[^>3DuA?V5[>"3J}@J >AJonA?cJonA?cJ}@J >A gП-? 3{@ >=@ .>,bZ-? '>,Hl?g0UX-?E bZ-? l?h4Umԋe?;پoRe?0پl?h4Uv=F?!l?h4U6>p>~hv=F?!v=F?!x6>o>nh&t>,?,&t>,?,@/?g>qw?F>jY?tA/?Du>qJ/S?[|>kUR>Y?Q>Y?r2S??k>"`L>rq?[ͽ@> q?$kͽ *S?d>Qf! ?9E?c1S?w>IR/j?Ӻ>t1 ( ?C3E?Ft/8?W IrA?T ))>u|?V= F? p>4?,%<?_@p>4?,TC> Y?!Tt|?VKoA?hWl4<?J =Rr?Wݠ>!=F?!S<?@E%<?@Q>Y?>Uq?=?F>jY?tL>q?tiͽTaq?;=C>:B\? > ))>u|?VX4<?En?>G>>n?>oRe?0پ =Rr?Wݠ>Taq?;=L>q?tiͽ4m?+(=L>q?tiͽ( ?3E?Dm?(=B>WA\?E >b<?%T?Z?I? f>l4<?Jd77? ?{>/17?U ?C4<?d6n?o> =Er?Ѡ>Tz>67?) ?G>>n?>>W0?-?>0?-?G>>n?> =r?cѠ>4'K((?:@? =Rr?Wݠ>PCRW??=AOW??O<??Vʾ@=? ?Vʾ@=? ?yYʾ=? ?%RQ?E>ҿd ?_?Taq?;=4m?+(=v;ʄ)?">|;})?">O{m?(=A&?i="D?m#?AR= ))>u|?V+N?w?U>)>v|?ՠVC>:B\? >(N?"|?>A-N?t?>M>~?\? >`??!?>??Y ?>=Q><\?b >xZ?t8I?r>R?CI?V>T>d77? ? ??u?>f???>>)7? ? ?pt>?_>ر?*7?z>67?) ?>W0?-?]>}0?!-? =Rr?Wݠ>\=?G?=a?G? =Rr?Wݠ>JJ%(?@?*K%(?w@?PCRW??T犾>T?T犾>T?k("XW?? F־g0>C?PCRW??Yʾ=? ? F־g0>C?D־!>C?Vʾ@=? ?(Y ?̼?_ ?r?%RQ?E>`@< ?~>uOQ?H>Taq?;=`@< ?~>{@B ?p>oIq? =s;)?"> ?{>d?3>/7? ?S>?7?>re?a=f?>F5>y??5?>Zf?>5>wi?g>Wĭ>|???Â>c~???т>+i?(f>Zƭ>=?a> ?>GQ ?l[@?4=Y>h?8=??*?Q8=??*?=0O>h?}I>NJo?=DD>h?O>>^n?.I>co?}I>NJo?"KO>e\n?I̾!>_W?!lP>'[n?6 >JJ?I̾!>_W?YT̾x>_cW?(= ݖ>JJ?^"/?<?= 鱐>WEJ?}:>=~?~(/?5?d*/?7?*:S>?w+i?n>~:C>x?c[i.ц>ز>v+n?( >k+}?>\iQۆ>->5[F7>N~> [?>k~>_i†>[>EH ?K=*E0: ?S}=^i>)>ni>GQ=|???Â>=?7 > ?>:?Av>=?G>H ?>GQ ?l[@?v>:?g>>:?Av>>GQ ?l[@?>:?J?ڕ>/:?M?´>KW ?Z@?8=??*?Q8= ??*?I>o?4UC??}I>NJo?>̾ >aW?0UyC??UC??>̾ >aW?d*/?7?2~+_b?-> [*>$>% nQ?{%> [*>$>%EVA ?@~= LQ?ya%>h>Bne?u!=v??6? Ă>[}?,Ec{???ς>Ԕ> :?q>nG}?0kED}?E>:?i>P<?s>:?Av>>:?G?;oN<4?ܕ>#:?I?8= ?? *?{r<ݐ?f=Lt<Đ?f=Q8=??*?۰a}?J=Q8=??*?UC??۰a}?J=0UyC??~(/?5?۰a}?J=Ha}?v=(./?5?G彷9}?=(./?5?x+mp?2>/潙9}?8=v+n?( > Q?0_%> /8}?.= Q?0_%>2E{H ?-=D=?=Q<6?V .>:?\?dwD=?=Ncξ[i?h>Bne?u!=nG}?0kEHnS? "oN<?`t<#?w2f=Ha}?v=G彷9}?=d2>6R?nG}?0kE/oN<&?sr\?>վs \?.3վ;oN<4?S? Lt<Đ?f=aC}?"=*X>̹G?6>:R?{P4;8}? =?BP? S:}?Ƈ=D=?=?P? bξi?-[}?,E(:?QW9(:?QW9nG}?0kEoD36?7þ|16?hþ[}?,EXg\?Aվbu\?BվHnS? 4?|$7~S? t<#?w2f=;X>9G?J;X>9G?JHa}?v=4>2R?N&7>4R? ?P? ,?'??lP?s u=m?[={@?(?$V# ? "Ncξ[i?(:?QW9F((:?s9|16?hþ B\>oD36?7þr\?>վlJ4?_ k\&?u!\?Kվj4?$-4?$mS? ,? O#W?ХOHnS? =j?M=*r?{|M7~S? 0X>NG?>P>B~[ X>G?д[/>P?#*;X>9G?JV,>6R?)[/>P?#*$9>?'*7>4R? e$?K?e$?K?7>4R? ,?'?,?'??P?c EW??_w>B>WAz&6?þmy!?!H==9G?J>)8>g[gMW?E ?9x>?hP? g@?(?󰻊Hz#WvIMȾziCɾΧdR_w1?XC>ׅid ㅾ-`d=w}j>Aɽl*Aɽl*&kh1=A$'>ߌ`袾=:>~{?>.eb/?>.eb/=:>~{е>akn{Uk HۆMȾziH;@'rH;@'rWȾwiO+1 K*MȾzijɾjd_+1 K*nɾΗd` ㅾ-`d+1 K*W/ H*\ ㅾ-`dRkb&X/1 ㅾ-`dAɽl*Ygb[/1]ɽپle5ç=A$jNb\/1=A$;P>SmhH>0`#T>/s&#Q>ah'? ǀ;P>Smhz>`6ꢾ2? t? r>Ւ`ߢI? Ҏ,>\`^좾O!>eLI? I? ?>.eb/x%?x:A ׽?>.eb/е>akn{%?AAֽ,>inn5y->tdC%?GAֽGXB@rNh[23NPj53l9@rtNy;ƾNƾH;@'r1 'E*. N*PwNb6c/ 1>:<͆dw待d]NbV/1TXEu]NbV/1p=A$҃=P徏c=B徘cY=A$ a>s;M=A$H>0`# a>s;Me>;-MH>0`#? yNvƾ+1 K*_#prD. N*P>:<͆d_#prDiY掾uYgb[/1=c\c>;M? re45?`'85?LR '? r^?9Ѿ&?8 y&I? #k^? ѾI^?GѾI?+ Du?t&I? %?AAֽ9u?st& ?d'B]v1>=*v~A=0>Yr>[K>(u2~U>gŏ=xf>_>LM?R|W3j>⍾*?Q?gߍi-?\?7q]jT>20^>pjK>VJr2:^L>3 ?o,B31>@>Vr>}?6>/>TXr(>FyK>&uYU>?h6>}?6>1\K>)ueU>=>=L>>=>=L>>1\K>)ueU>p_>LB?^_>PL-U?ď=xg>3IR|wgߍi-?\?rA׾g+]> Uc0G> q]0G>=L׾)]w>bAfU>bAfU>} D>.9==6=>L>_>LM?ҍ>JH?L J?wJH?Q'?GAY= ?d'B]v1>J??@>3 ?o,B31>}?6>J??@> D??hA>}?6>?羒#?}?6>;>La>?#??c#?=>=L>>hӍ>wEH?|ƍ>ILH?w+ *a0%Q> Uc0G>bAfU>>7]"—>iAfU>.C8z=h%7y!—>N??θL>?y#?>[0?̤?N0??V?иA#?>[P?+??#?vč>&lIH?>)P?G?io=ya)h?ߍ'?z?P <8V?ߍ'?z?> E[0R> Gzĵ?~Gͼx?+ *a0%Q>q"7f!>50;at4?ď1l ?ܣ>5mb?5Oq=l1 ?50;at4?s5|7;w4?pb9>O=>mb?(??2}@?J?ymb?ď1l ?_K}-zO=jWO a̾w7M=}>dkqQ=^)~[ӽ w=^)~[ӽ w=w7M=}>^)~[ӽ w=w7M=}>GLľT#* _W~(횾msNA㚾jN]W]>W>]WA>jN?]>W> _>W~>(>msN?GL>T#*?GLľT#*`W<(횾msN(횾msN]WO>W>OW(>msN?]>W>`>W<>(>msN?GL>T#*?Nʾ?75?}T?S>> _O?m> cO?}T?S>w >/%d?^ݾ}T?S>t>h,?rPw >/%d?^ݾw >/%d?^ݾ%t>O0?ZPГ>@?\CГ@?\C?w /%d?^>mt"1?P?th,?rP?w /%d?^>|>T?rDw /%d?^>m>> cO}>T?S}>T?S>>x\ON>?75>J,5??ޱ>_7?!?{>o?܄>ޱ>_7?!? >"n?#e|{>o?%>^{>;o?τ>>n?*0r_?MN>n?*0==Ho>RxE[?cN7deE[_rǻbfZ2ܤa_|ĻZ&4A=a_|Ļg_DU4A=k%Qx?v=_?N?n?*0>=r_?MN?{o?Єn?*0> "n?#>e|{o?%鄾ޱ_7?!{o?܄J,5?ޱ_7?!?qo?J5b=s?⃼>s?⃼>qo?J5b=????s?VÜ>?9o? H*K=??o?GJ=??o?GJ=o?GJ=RIQSl?ڿ"????o?G)K=Pl?*濾!?RI98??8Lz?%="MSl?ڿ"???~Rl?yڿVLz?%="M??????Lz?%="M???Lz?%="M?J?*?==Ho>Rxv_?NE>n?/r_?MN^{>;o?τ>E>n?/E>n?/~{>'o?܄>ޱ>_7?!?{>o?܄>>J,5??ޱ>_7?!?J,5?ޱ_7?!{o?܄ޱ_7?!En?/>~{'o?܄~{'o?܄n?*0>=r_?MN?n?*0><4o>Qx?v=_?N?k%?75}>T?S>ԥ>JaOm>> cO}>T?Sw /%d?^>|>T?rDth,?rP?w /%d?^>w /%d?^>mt"1?P?Г@?\C?Г>@?\Cw >/%d?^ݾmt>"1?Pmt>"1?Pw >/%d?^ݾ}T?S>w >/%d?^ݾm> cO?}T?S>}T?S>ԥ>JaO?Nʾ?75?GL>T#*?`>W<>\>p,N?(>msN?]>W>OWO>W>@ᚾn N]W _W~(횾msNGLľT#*GL>T#*? _>W~>(>msN?)>iN?]>W>]W]>W>@ᚾn N]W _W~(횾msNGLľT#*?7M?4t=?H5+=?H5+=7M?4t=?????H5+=?۶?G@;??۶?G@;???M@;۶?G@;RI?1??????M@;?1??RI98???IL?{?P0L?{W {?9>JнR?fϽDR?NIX+{?q9>^=_p|?%>^=_p|?%>IX+{?q9>Hg1?-8?%${?q9> (?=?mg1?8?{ ?V8j?JȾbO=?tNP=?/N j?cVȾ9= 6~?=J;j?ZȾ<i?>k=5~?=k=5~?=<i?>Nb>S?>NbS?ᄑk5~?i?Ӿi?Ӿk5~?J;=j?Z>ݟs5~?P?N?8=j?J>8=j?J>P?/N?{= ?V?"O=i>f=j}=>iA>>iA>=}7=X=ħg־2=}=tɼx/ wtU?ˡ=;g־=>g־޴ȼ/ tUq=jZAhTZ?B=es3>'R>)e^F?CR>\dRF?ܬ=6si?>q==u0=3sN>[1Rjq==u~=;uݑX1R=OLCO?wT;u1>L0=R ?[1=Rj?wT;u1>0ǽ3sNwT;u1>CR\dRFܬǽ6si?ȽcsCBZR`fF>h=%ZpTZ?Smg>tY2J}ǽ>g>ižB}$ǽfj}ǽXi|ž"Oi;%6;ѳ.ME!t.ME!t.ME!tQQѸ:qݭ=:qݭ=qݩ=xPW|+?ѸV|y+W|+?QQѸ_m<_m<_m<_h=ZȽs>'R)e^FCR\dRFܬǽ6si?wT;u1>Tǽsb3Z1=XRa?f8u>;0=R?NO5?Y=oO9q==u[1RjZ1XRa=9u`̯=s\'>q==uv!R> `ZF?0=3sN>=s ?>ZR>`fF?>h%Z?U>]S?o>8=38~?7Z= <i?>k=5~?=8j?JȾ=6~?=P=R?N|9)j?eȾ:0j?d0Ⱦ"P=?ȀN᣽ ?Vg= ?V?J;=j?Z>PR?N?m{Pκ?ςN?8=j?J>akY5~?)|9=)j?e>Zi?Ӿ9 6~?4~?~)-`h?LӾNbS?"Oi;fj}ǽiAžižB}$ǽXħg>sf}ǽtʡ`g_><4 uqU?qjZ?s=ZX=ħg־lȼ' yUtɼx/ wtU=g־=}7=X=ħg־X>i|>f=j}==B}$=͛>4ih>"O=i>P0>L?{?X=T{?1X9=R??=R?u?X=T{?1X9@_kq|?[%^_p|?%IX=+{?q9HHn1?x8?_=vr|?ӯ%>Y}{?>9>^=_p|?%>fϽDR?NXT{?1X9>W {?9>JнR?P0L?{uQP=uQP=ok{@cok{@c`uQ9=uQP= uT=v~? uT=v~?Qesz\F>Qesz\F>Aƾ״>HL?ƾ> L?=>mѸuQP=xQ=@4!34ͽw7M=}>kq,a=Y 4,45ͽ@4!34ͽkq,a=dkqQ=9#=?V 4,4ͽ6#=?V9# =?VwL=}>vb9&;8أt8&8tvb@4!34ͽvbvb@4!34ͽ8&8tw7M=}>lq]=w7M=}>(<=U#Uc>(<=U#Uc>SR%?O;?@4!34ͽ>#=? Viq _=kq,a=9# =?V???&>m?H4#cO?.-%WV#?gD?3dO?8/? W,$?hD?????3dO?8/-%WV#?gD?? ƾ\>L?@c?]+I#ȇ?oI_;?A#az?l|Ͼ5>/_\;?dAM;?,A]Ͼ>9_㽿_?IX.ϾD>_^;G>fh%佥f?LXAb?ͣXCae;.=>`fvO>B>X^e;G>f>g>NsO>kL> XtO>-3>-X$>L>N>0?l~">mV>dN?y?>0?lZmZ?bԽP ?bV?](? Ͻ?Y(?CϽP(?peT?0 K.%T?0P4?o:ľb?\ mP ?og#y?nWžb?ľb?J#?vzG?l+zG?l+\;?dA@*-Z?b+I0Z?lXS;? A5Vr?xLP;P?zAk?XY2r?thr?_]_?XI?=j\?ؽhg?XZO>M>XI?=j\?%>=v\?{[O>_>(X>0?>0?Z??g>;K?5??~J5?QZ ?ͦ|>K?|>K?_L5?U ?)ܦ3?C?:J5?QZ ?ͦs!O?N?X*d0?C?:>)?C?:XO?S?f)D@>g? ĺ=~?7?d(? ϽSWXT?0VgT?60ľb?JP>m?g=9ľb?%v?o++m)Z?Pr9s=.j\?v> 0?9[={?_j=]{?Hv> 0?9X9#|?=6>0?g>;K?519#e|?<=Qɺ=~?RJT?0>Q>cm?3=fľpb? 86Z?J&=?e3=Һ=ӕ?H1=W(Z?D~4r?9#|?k=g>;K?5ݾle?=ݾie?E=>K?\>)?C?:>Q>cm?3=cľb?-$x> f?ia>ľb?J&=?e3=>8f?Ha>R=?@2=4jr?'> X?N?'> X?N?4jr?\7g?{>4jr?A=m\?f9g?p>cq=n\?ik=P{? 8g?{>\7g?{>k=P{? 2"V?>k=P{? X9#|?=6) V?>d0?C?:Z>g?D ݾme?=ݾle?=U>g?ue?&޺1?=8?=sɺ=~?G⼪`>m?{i=3}>Cf?a>|=A?2=>C;?v%?.>N>;?,?Q=5?j2=$>X?K?Q>j X?3O?8g?{>?4E7?G2?h~Ⱦ2? )?\7g?{>2"V?>?CV?>9#|?k=m ވ5? >m ވ5? >9#|?k=ݾle?=1?m?h=B?R?uF>B?\?rF>E>m?4=q;?q?>P>m?g=ϋ>f?/a>Zs;?yl?j>w;?j?>ϋ>f?/a>.?A?m?ϋ>f?/a>>7;?8,?.?A?m?}.?]??6?>7;?8,?-W>L ?4?>6;?2??>X?S?H>Z ?T4?7F> ?4?$>X?K?>?XEQ?݆>?IQ? &> X?S??4E7?G2??4E7?G2?\7g?{>7b>?;wA?7b>?;wA?\7g?{>sȾ2?1?~Ⱦ2?0?4 V?>p)H?+?/???V?#>D z5?ݤ>m ވ5? >ݾpe?7=Q ?P7>Q- ?f7>9ܾsse?=][G?=c ݾoe?=p"e? ޺b][oG?h=a;?,?2=p?H>u>X?r>%c>X?r>%c>R?0>HB?+??>{+?ݼ?>R?w>M??]f>JP:??ft>+Q:?F>n>ff?{F> ;?3F?R>!:?z2F?yE>z>Sf?Y<==D\?S?ED>>?f?Ky꟯>o?<=c?S?<=`?S?Bzޏ>uo?rf?S?y$>o?!ۣ>'[?rɽ?S?.r?ԖS??נ>1[? U?o-?ƺ>[?G2o>w?F]?--?@U?-?L2>v?pKJ2s>s?CYm>v>k< ?>;?,?=X?h>!c>ˇ>7p?u=X?7u>Uc>+?%?4>ˇ>7p?u=+??>o?a>I:?> O=?" ?J?>WO:?R>!:?z2F?> O=?" ?O>67?5F?Y<==D\?S? -:\??<=c?S?r>?XS?.:g\?'? -:\??s)r?S?zH?g.?mDH?'?r?0S?@U?-?i< ?>_AY>>&;?Q>CYm>v>KKL?k=&;? Q>QgD6{?7䃼;?O,?s=>9p?'=w>5p?= +? ?V>@q=h? =}+??>>sI=?) ?p=h? =op=i?? => O=?" ?wv>*'g?}Q>>sI=?) ?Q>2?8F?wv>*'g?}Q>t>$g?q\>Q>2?8F?<0:\??qyXH??&;c?-?-{?=i>\?-?k<| ?>+{?1=0{?w=d< ?>w&;?Q>Rp=Ri? =dY>;)g?vM>!:A~?3Gؽs>`(g?L>c:h\?(?l<.~?#Gؽh<~?׽ -:\??O/K >}?zVAfgD6{?>7p?= DS?1* \S?+(>u8p?[=}>7d?hO~8d?GC>7p?=op=i?? =KO/Z? ݾx>Z?/ݾ-{?N=>Y[?O >[?,{?^= >Ɵ}?0B}>7d?hOpp=i? =ϱI? o0I?$eRp=Ri? =D:;P?Nq Rp=Ri? =l<.~?#Gؽ6^::P?p l<~~?zؽKO/,Z?ݾy/8?rCǽfgD6{? DS?1*\:&@P?%i ;h<~? ؽe=R[?Ё >ڟ}?UAP/?x6?C/8?`wǽk ,S?*DY?8NDDQ?Y \S?+B6Ny ?޾ ^S?+M3d?LQx6'u ?޾ 6p ?B޾1d?P?~8d?GCI?b?Y ?  I?{ľ1H>lGI?b6^::P?p ݵľc>†Gݵľc>†GD:;P?Nq &?Uu_:5P?%x =B&>sy]JЪ=?\Z?.ݾdι>= ?khB=>I ?YBx>Z?/ݾޔ??.&>Z?ݾ>[?h? ?N? ?xr>[?r!>?k;?3b/>?"?q >[?sH??m>c[? P/?x6?CgH??lXkH?u?g m/?w6?U?/ ?&Uݫ/?t6?s >}?%WAU?/ ?&Ux >?>q]̪=OO ?XB$[+j;%8BRQ>Bg 5h{hxxq=>.k\A-#}!,n 514/>a7n 5ž,h n1'/a1L-/bRž>ham'cžhSHCZ~྾aL'Uam'chZᄒ6b0i+,Z뾾Q\;쾀*0+(04+Q\;SӵAK&7Qv\k1쾊$[+j;mAM@&苗ٻAD&K"[8)j;jQ>#ByoR>B^=s4>^=9]=Ps v\>5Nm7Hd>=/Ay\>Qmy03>OfK>%=0J>=>4>f͚3?(?G3q)7>fe>+hR\=(?ݻ31c3?(?G3q>+hR ?vCf>hU>k ?sCbA&#1J.//a&(bվY&bվY1J.//ab*UiϾ"UϾ14/>aZ'Uc{`)'Go*0+ri>}K (0+苗ٻAD& =m^SӵAK&Q>B =P^C =^R>BJ>դ.Y=?oY>f"=8\=(?ݻ31ca@(?3e ?vCgg?Ϫ,UϾIg7ue'}>|K/b27/@7Rw>jK>aݾlwW]>7KKP0*+Сpݾ sWsݾjW^*0U+~<Ӿhm_0p+ =.P^Q<ӾOhC =^J>Y~R<<Ӿ?hO<Ӿh)J>CY?dG J>pYR>B#ݽ?5$GQ>BC|>"=2?܅hG?xG >=1=Ȋ=?ZdȊ=?ZdB(?A3yogg?ϪK g> >JvxiZbfФ>7K|ͺ= eg}"=aSeQ>SGQ> f}|1"=<oEQ>b>.DJ| =aSeQ>3F?pu>0>!pb=6?#i?k >0>!pb=>m&==?Kc? >|>m(=d>}n L>4?em?>7?j?V>d>}n L>>Ӻ7n ?d>}n L> >kʔ>=>7o ? >kʔ>?O>fU>%>Ǹ7 ?>>T7C ??O>fU>4&>+*>:??O>fU>=m^a>1&>(*P:?1&>(*P:?=[a>yipoRH ?=[a>[Sb~>yipoRH ?[Sb~>J g|^>yipoRH ??xitR?H 6gN>(7<?{d g]>/b>%7#??7 ?/b>n6( >bu>SGQ><(% >StQ>E AQ >_4-R>x`?>[ >wF?Cwov>)[?1>wF?Cwov>4?em?>[?ྛ>:?.f?6 >#> 7 ?F7?U+?3&>%*|:?cvidlR?1mV;j?oyibR ?&>71?RV!j?CRVHTj?D&.7*?i^:?p]_:?37?<(% >=(w :>S'Q>h4-2R>[?~P%>=?Kc? >I7?ϟ?F7?U+?#> 7 ?>,2/;?W>~+4;?#> 7 ?f>lGe?>>T7C ?1&>(*P:?Ȍ>jJe?>^vLe?3&>I*:?f =D[~?3&>%*|:?1mV;j? =W%~? =kYJ~? TV<_j?5^-b|Ծ@d?5^-b|Ծ@d? TV<_j?Hо:[?9VBj?b㟘:?<о [?i^:?X7(# b>F[T Ӿ>"9( >Xf4-mR>jaT Ӿe>l5? >;QF4Ï=3v(buu?ӼڼÏ=3g5?{D;MF4l5? >;QF4p?b9uu?Ӽڼk󰼹bS' 5CjAlJ<.k"پbÏ=Lf3IP'B 5mA?H;4N?u?tڼ)D?! =#?hD?=#?n۬=Q =~?s?u; /N?F۬=ڹ =~?mnN^??;|4N?7Fkף<7"?mnN^?F۬=ڹ =~?`|񼝖>mnN^? F֣< "?\`> 1yi|2=O%=%ni|*=Խ4} g=%=A%2=O%=%r6=Խ33}n=W^Gy=uԽ3}6(h|?2x%=s%?6=t`>N/y?ϋ(>h|???????????????????2??վ, >F?A>Kw^?K>>d?wS>>H?H?̆4?/?B>>B>gQi??oQ,M??3I,#>F?o2?p?[վA>Kw^?K>>d?wS>?M?d=4??P_>ٹ>H?\?>S?(?=?u->P`? >Y?((? ?]>K? ?]>K?l|>o>Xbu? ='?; 7?qm=1*>d5>_Q M?2?=I,u2?q?վu2?q?վ>eo^?KȲ@?@'$?!@?+$?>t^?UK?M?G=/?\M?1!=>@d?S>%4?? P>4?? Q>_>^Z?c(?=?!>a?=?u->P`?"# ?O>3K?2@'?C?\x=݌#7?5=1M)~i?>6>o2?p?[վȲ@?@'$?!]@?$??.M?=EAh?>×=2h?:>—=?6M?=̆4?/?B>HC?=/#_&z?=fgM>(z?#ď=NM^t?Q'> z }o2?p?[վǯt?L'> zt?'> z2??վMo?"h>]Oo? h>-ƭ2??+վ)~i?>6>Xi?C>>@?+$?]z?J>WQz?I+K>K@?&9$?}-0h?E>=*h?1`>g=w4?0?@>v?_r>>v?Fr>>4??5E>s?p>G>:m4??S6>=?~>^U?.s?q>nG>.s?{p>̒G>!(=?ޯ>f?Py?e>i2>y?V><2>=?>^?o?z>(>L!=?>`?V">'?o?`>)>o?'M>t>!0'?v?h?h=C>v? ^e=W> ='?|? <1>|)?0D;L&>`>\?m>'V>y}c뽊>#\۬m>V~fFq<,>cV>$~c꽕Hfbg><"VfpΈ>r Lg><"<"͈>~ L=?wɾ. ψ>'z SL#>p4 t ?sSAC>>ڽl??>JR?g5?1?g4?R ?>&>R?>ؠ)?9?J >>)?>'\ɩm> ?ZSA23>6 tF?[S!g5?1?>NhR?/f4?wy ?=i4?`2 ?>س)?K9?< >9?K Ԑ>>"\m>|)?0D;L&>x)?O;e&>6>fc*Lf?u۾VVf?A|۾%'V>y}c뽮`?8Ծv`>8zcO<"L`?]7Ծfv&h>< "a=?iyɾR0 `?Ծv=?cɾ(0 ̈>Ww L?vSA|?D 5?P}1?x?g>5?D1?i4?z ?x?'g>:x?[g>n4?Q ?$y?V />2a4?P ?69?&d >y?0( 3/>y? />?9?0Q > z?>|L=9?B >|)?0D;L&> z?>M= z?ɏ>~=)?0=;f&>Of|?%L*G,*@f?Z۾n\|?5+~*{?=:wcf?YG۾y?_9NjCf?۾`?~Ծv;y?RDO~9y?>N׹9`?Ծvb?*讽K?P.L`?]7Ծfv=?cɾ(0 =?ɾ- ?rSAwx?lQkx?b)mQk?vSAF?¨O!Gξ9E̎`?ξ7HI`?ѸѸѸO8h?OѸh?5555Yl¾Yl¾55 i2Ѿ5555:8ay i2Ѿ55ayDmB>55?gfz>55?55?DmB>55?ξ9J`?55?ug*>55?Gξ9E̎`?????????????????????????????????ty?^f??????ty?^f????ty?^f>??????ty?^f>??d?Zs˘><kK\? :h2H\?;m>J;Oj3H\?:mzx?u>d?v! 2H\?;m u;?,>cͼRk?;G?1< ?6>oμPPk?zx?u>u9G?d<ї ?d?Zs˘><kK\? :h2H\?;m˘><k>q(Q<3H\?:mzx?u>d?Zs 2H\?;maP<|?+>qμRk?>?G?c< ?6>oμPPk?zx?u>u9G?d<ї ?ƾM_Zr)>ƾJx7"yC@D6=a0(Jx7"y_ĺ9>BjzVsJx75"y@D6=a0(@$5=0(ǚtBjzVsƾM_Zr)>˘ƾ<k?/ξ;NRj?_0 9>Jx7"y9kl#1>@D6=a0(Jx7"y_ĺ9>BjzVsJx75"y@D6=a0(@D6=a0(ǚtBjzVsaP<|?s{޺{>?tѾ@=Ii?s޺L>DYjF$?UiѾ@=Ki?FzYAY➉ $?s*Ѻ}>sFѺN>Wc = Y@\Wc = >q(Q< Y@\ Y@\>q(Q<:I\[pr ou;?=JD;+? Ӿ,nEh? Ӿ,nEh?=>;+?f?w J@>=JD;+?m]<%f?w J@>f?w J@>@mk';5d><|Ae>';5d(l?Gnwl?o<:þ\??%<_ *?9r?Nĺ>\??%<_ *?>)˻kd?7r?ĺX>\??Yǻud?0VA?DZ<'\?YT>S:h9\?rL}>ԻiO>:h:w?{<>9\?r?\A?Y<'ߗP?#h?\?YHw? <>0?pn<J?ܗP?e*h?:w?{<>ܗP?e*h? ?sj<"J?P?6P\?4?>ލF?>?@>?>g>ri?>>i?>?%C>?~\?Kb#\>?4>? ?x&I}\?9b"~\?Kb#m?xI-?ZV+[~?{r;l=i?tD=?':W=i?tD=v?~7?? 9W=?99==v?~7?K?Imv?~7?6?`;K?Imz?=Y=D?rm ?!f?Ag*<7>D?2n ?pX{?_=W>"f?(<2>(f?(<\B>kY{?H=_>>L?C6>ڍ&Z{?{=>>>kiL?C6>ڍ>k<i?L?nF6r?&Z{?{>L?C6ڍ?"f?(2kY{?H_>pX{?_W"f?(2ྛD?>2n !f?Ag*7z?=>YD?r>m  t;X W+B:>ZU}=3j= W+B:>Z_iƼ>M:>}=]=_iƼ>M:>Ğ>94R*?}=]=U}=3j=Ҟ>2^*?Z3;Z3=U}3jҞ>2<^*Ğ>942<^*Ğ>948>a=}H=6_=9_^8>e2>aT>P<}=^=eO">^T>6N3?P<}=^==}H=6_=U6/JR3?ɩ ly"? >B)?z~O?0>> I?Ϯ>Q>U?Z>J>U?ǁO?H>{@?z~O?0> Iz~O?0>> I?Z>JUǁO?H{@z~O?0> IϮ>QUu"?]̾D)?Ju!缥=w+?ut<" >u< >o=O~p+?'uٛ=@? 9[=/Eգ;kY"Bw2wEգkY"?Bw2en>ȴ9[/?EգkY"?IA]?V]=?!Z?y*?0>E?O?)=\?ծ*?]>?hRU?S{a>E?O?)=?hRU?S{a>>;?Z@?!O?`=E?O?)=>;?Z,D?g9_$BO+t=BQ;&BQ;&Oo=A@"+%>AL",%>0Ot=:z-}>0Ot=O >x-O> ?;V?bM?`?=:.?{>[,?;.? >V,?bM?`?3y?zi 8M?y,?X?5ƾ4y?M\i43y?zi 8X?5ƾ&??!=)]>7>b.P>֮>AX>֮>AX>>_bEP>B?؋=7>b.P>3?:[1B?B?1W3?a .?=.:I,_s*=OOpr;ˮqEEF>?FxG=X>x{=X>uEZQ>f?o I? ?>YU<"F뾺o4'Y ZbؾC"F뾺o4'Y ɀ&)_>Qb ؾLCQb ؾLC]&)>b9IG.?]&)>k;>?b9IG.?74e!ؾ QƾvU*%,ؾQ ƾ*/Y2*/Y2<|誾%?h>R'">n 8x1;| 5| 58x1;5!sx1>J8wxQ;a]f>5!sx1>{s1>sS)f>$,@¾.W*?pw)F?pw)F?Z>?S>C>?>C>?>?f}XC>?>:?H U,?Xb?Vp>_?f> _?ꕼ>b?\Qp > X?]$b?Sp/>i>VfMkX?A#kX?A#佡i>VfMh>+!XR+> ^hžPo&b/+83K e4@3 !)/Ro7b0GvZ>ho>Po&b/r}#>~>vZ>Hp>vZ>܉>3rW#>>lW$>! ?ľf'5I2ھfgV_ھjgǎ <7wQC>4Gj$<>Rjp<>7TwC>w^S?57ھ>k?SA=_Dv?鄽ԇ>Cv?>k?2SA=[?.̾k?gH =$? [[?*̾[?*̾<&?~ y >M;\_)?3>KZ/? ,F>8?0Y?Sg[_8?0<8?0Y<?Sg[VC>S̾?Si[-}L>&OlJVC>S̾Y>">pQ^-%W>V#?gD^|w!W>}'?dD|w??f>F?^??f>F?3>JiO?'?^? ?]?!?\)?78?PbP>>#n?8\)?78?PbP>\@>&?Kd<>#n?8Pl?*濾!o?GJ=f>U| ǽo?GJ=p>yllf>f>U| ǽ>J"n?V|?>&?_<|?>&?_<??q ?[? ??)?>8?bP>l ?4W?!?})m_})m_}Q }Q >uW[>}Q =Uc>>uW[>/3?,pQt>9sh@Zjt>s:@ :~.=8I9~=8 :~.=mVQ/ ?2?,pҾXiOpt> s@ҾXi>wekt>s@:ΪUq?>vW>t?N>yW1>=Rc >t?s?&僼oǜ>>`?K=%x n?>`?w?Zl[?K=%x n?>IlLz?%="Ml=>^qLz?%="M=F= }l=>^qo?GJ=s?&僼oǜ>p>yllf>s?⃼>K=n?p>yllf>Lz?%="MPl?*濾!E=z=}~Rl?yڿV>~|`ǽ8= {=}ҾZiW>Ll>weW>Ll->/q`8>weo>K`?:ΪUq??p[?:ΪUq?t?8?p[?%C}Q ѸnC θ8}Q 84'mnC  :~.=nC ?mVQ/ ?8nC ?%C?mVQ/ ? x+{>.ME!tiq _=.ME!tE 4 -4̽iq _=%6;ѳ}'>ioo@ }'>5s4>no}@2Rvۆq=7u~tངq=)~[ӽgw=7u~t:qݭ=݇ھg?)~X'ӽ-9x=݇ھg?ҾXi?^)~[ӽ w=;rbk$6³:ΪUqbk$6³qo4S:ΪUqѸK>n?MA~>w?>Il?MA~>w?wk6M=9}>>Il? ཥv~'>;^hv<bا'>;^o>K`hv<bا.ME!t/߽[w~@4!34ͽ/߽[w~vc 4,4ͽMA~>w?: xj|>w7M=}>: xj|>dkqQ=w7M=}>'>;^/ro>K`/r:ΪUqo>K`xھfg?K>n?ҾZi?K>n?W>Ll?ҾZi?55v膾55v膾7u~t55}'>55?@r >55?55?@r > x+{{}V>9Pl?忾'U{}V>o?GJ=9Pl?忾'Uvۆ>Uw7u~t=UwJ?*7u~t=e>}'ioo?@ =}'5s4no?}@2R=[Gr?e>:ΪUq?$ew>qo?4S=:ΪUq?&Ww ݇ھg2J?9*݇ھgѸҾXiJ?* ཥv~?'>;^?s?&僼oǜ>'>;^?Ѹ>`?s?Pͷ>K>nMA~>w>IlMA~>wz?%=L>Il}#>/߽[w~?o?G)K=/߽[w~?s?&僼oǜ>o?G)K=MA~>w: xj|Lz?%="M: xj|9Pl?忾'ULz?%="MxھfgK>nҾZiK>nW>LlҾZi'>;^?/r?o>K`?/r?:ΪUq?o>K`?55?vۆ>55?v>7u~t=55?}ݢ55@r 5555@r ?1?)?@; x+{?2@{}V> x+{5s4>?} zvۆ>p?~ Uwvۆ>M?? =7u~te>7u~t}'e>@v?uM?Tt^=[Gr?M?? =$ew>;r?? 4uc&Ww wcyѸ΂ھރgUw ?H5+=s ?X? ཥv~?s ?X?'>;^? ཥv~?ƽ>8s?In?<+˼MA~>wK>n1?@-;?H5+=}#>?H5+= ཥv~?{}V>?I8ѸMA~>w?1? x+{MA~>wwcƽ>8sxھfgƽ>8sK>nxھfgs ?X?DӋDv?'>;^?DӋDv?/r?'>;^?55?@r >55?@r >v>55?7u~t55}'5555}'/\tۡ>V|y+ x+{>V|y+ME!@ x+{>5s4_^ߋE2o<vۆ`mߋm< q=vۆxP7u~t=%6;ѳ7u~t=}'>AA'6ų@vxP[Grx`P"%6;ѳ/r+`zߋk<uc?qݩ=wc?xھfg?qB+=ezy'?X/߽[w~s ?X>S>^ ཥv~}͟>6s?>bp?W>jn?#>ep?(~>Dw?;>n?V|y+e:wydJE !>ezy`߽x~SE!:t>gp?/\tۡ>8(~>Dw?QZṱ>x |>MA~>w?s ?XDӋDv'>;^DӋDv/r'>;^wc?ƽ>8s?xھfg?ƽ>8s?K>n?xھfg?;555s4;55Kr+v557u~t=;55?}'>55?55?}z>|w=>m^=>m3JiO?'^0ƾ>L?^?-%WV#?gD?^?|w?!W}'?dD? ]?!9#=?V#n?8>9#=?V#VR%?;?#n?8>iq _= 4,4ͽuQP= 4,4ͽ/\tۡ`uQ9=~~q [? ~2#=? Vl 4W?!J"n?V>oR%?o;??VR%?l;?A~??8<S#8c>70fz=F>e 70fz=F> :~.e e  :~.n!oȶ :~.mVQ/ n!oȶCP}?})m_> i=})m_>}Q > i= i=}Q >n=&)8ǟt}Q >ok{@c辣9&;8أt:ΪUq@&8Ltt9&;8أtok{@ct(<=U#Uc>ҾXi?ezWF>ҾXi?N⾗e?ez=F>>Il?PwL=}>l=>^q?wk6M=9}>)v=~?l=>^q?hv<bاo>K`]no>K`?n[]n4/4̽v`t`/\tۡhv<bا]n/\tۡw7M=}>ciqK =^u*=~?dkqQ=`uQ9=(v=b~?ҾZi?W>Ll?>we?W>Ll?->/q?`Ѹ>we?o>K`:ΪUq?p[:ΪUqtѸ?p[%C?}Q >8nC ?θѸ}Q >})m_>nC ?Q9 :~.nC mVQ/ ѸnC {Q%BmVQ/ z;?A~?[P ?H9A~? i=[P ?e ~n!oȶ~%Q~n!oȶFۙ>@f?埾O/?ǩ ?C>X?u=O/?ǩ ?C>(X?AϽ?X?u=X?u=X?uϽ?/?4 X?uϽ?Yϙ>f)>/?? A>b{?X?uϽ??A'?X?uϽ?ؙ>Ufk֟>?A'?Ab{X?u=?A?'X?u=ؙ>Uf?k֟?A?'*q/? Ab{s/?~ X?u=Ab{*q?>/? ?>A>b{?s/?~ ?>(X?AϽ?A>b{??A'?͙>fן>*qBΙ>f˟>/? *q?A?'͙>f?ן*q?>ؙ>Uf?k֟/? ?>*q?>( =ay( =>}ay>?=??I<???I<??;ힼ??;ힼi<??gfz>Qt>9sh@DmB>Qt>9sh@ok{@cDmB>=Uc>ls¾70fz=F>ls¾icѾezWF>?Gξ9E̎`??Gξ9E̎`??Od??E=z=}L+l>>]nL+l>>L+l>>]nL+l>>?K=n?L+l>>?K=n?^u*=~?L+l>>?>&v??W=~???W=~?Opt> s@D/eok{@cD/etok{@ct?=Rc >N⾗e?=Rc >ezWF>N⾗e?l=>^q=F= }?n[=F= }]n?n[K=%x n??n[?)v=~?w?Zl[?l=>^q?)v=~?>we->/qt->/q?p[t?p[?t?->/q?t?>we?->/q?( =ty?^f>}ty?^f5?5Ѹ>}5?5?>$v?ty?^f>>&v?QW=~?ry?B2f>?;ힼi<?i<??>?=?>?=?I<??????????????????????????????????????????????,_e?eپ:>??RIѸ??8?Q9Q?Q9????????_e?! پxy>,_e?eپ:>????,_e?eپ:>?n:?n:ge?(ؾ>,_e?eپ:>??1v=X{c>z=R} =Q!4~4>K?zY?h>`s r???>U'#r??>_Q"r?w=}c>?????_e?! پxy>?Ѹ?Ѹd[e? پݔ>????????????RI8?,_e?eپ:>ree?ؾ>?8?8?8?8?8????Q9?Q9ree?ؾ>??_e?! پxy>??,_e?eپ:>ae?ؾ>?^=a}Ƚ+=b}AȽ?󣔾?=^s??Kt=sS.=s???????-=s??󣔾?=^sDG?y>@P?uD?y>qP??uD?y>qP?DG?y>@P????8?Ѹ????8?8?8?EW>!puD?y>qP?R(>X0߾}bR(>X0߾}bDG?y>@P?T>xELE?ދy>P??k7>yCE>ޣsd?L=|3=k7>yCE???qs>?@[?????#?#;?7;L?8?8?8??????????????????????????qs>?@qs>?@????qs>?@(e>1?J@?8?8??8?Ѹ88?????Q:?QI:QI????8?8?8?????8?8?8?????,_e?eپ:>,_e?eپ:>??????????????8??Ѹ=Q4~?Ѹ?="3~1v=X{c>=Q!4~?="3~?8??????=G4~=~3~?????8?8?8????8Ѹ?Q98????3>?#Y?%3>$?Y??ռXm??,_e?eپ:>VҼ=繾[m???LE?ދy>P???LE?ދy>P??QQ9ѸpR?qy>@P?LE?ދy>P??Ѹ?8ѸѸ??8??DG?y>@P?uD?y>qP????S.=s!=sEW>!puD?y>qP?ND>puD?y>qP?????uD?y>qP??LE?ދy>P?k7>yCE?>;Ud??DG?y>@P?>ޣsd???DG?y>@P???qi?4Ѿn=????Q?Q?Q?Ѹ?Ѹ?Ѹ??????V i?!Ѿdn=???????Ѹ??Ѹ?8Ѹ??Q9?Q9?Q9????Q?Q?Q??g?zҾK?8?8g?ҾVg?zҾK???Ѹ?Ѹ?Ѹ??qi?4Ѿn=??i?Ѿfn=qi?4Ѿn=?g?zҾK?Ѹ?Ѹg?zҾKg?zҾK?Ѹ?Ѹ??qi?4Ѿn=?8?8[i?Ѿbn= i?VѾan=?Ѹ?Ѹ??8???Ѹ?Ѹ g?\ Ӿ@h?Ҿ׻?8?89?QQ?RIѸ??g?zҾK?8?8h?Ҿ׻?RI?RI9Q9Q9?ѸQQ?Q9???????i?Ѿfn=??i?Ѿfn=i?hѾsn=?8?8?8??Ѹ??8?8?8?Ѹ?Ѹ?Ѹ>ip??? D?]>??? D?]>? D?]>??????g?zҾKg?Ҿ@88???????Q?Qng?"Ӿ?Q9?Q9h?Ҿ׻RI9RI9ng?"Ӿh?ԔҾk?k:mt?{r=6%?RI9?RI9?n:?n: h?DҾg?Ҿ@???Q?Qnt?Bq=%??nt?Bq=%??nt?Bq=%ot?p=&?n?n? i?VѾan=?qi?4Ѿn=nTq?[>??QTq?-ܘ>?nTq?[>???????????????????????????8?8a2J?)J?+Q9?Ѹ??i?Ѿfn=i?Ѿan=?Q9?Q9?RI9i?Ѿfn=?RIi?QѾn=?Ѹ?Ѹ?QQ9Q9??6/J???6/J?8*@!?4>.?EK4?^yrU+??g?zҾK?%ot?p=&hnt?q=%??Aj?>^?un?1x=un?1x=?ڰ8ip???>ip??????{!>r'? c=?6/J?|b!>Cz'?]=?????????????6/J?8?qi?4Ѿn=??i?Ѿfn=?qi?4Ѿn=????i?Ѿfn=i?Ѿfn=????6/J?8= h?aҾ?Q9?RI9?g?zҾK$? D?]>g?ҾV?8? D?]>??? D?]>?Ѹ?Ѹ6/J?6/J?8?8?8?n?n,J?K ? > fF>6/J?Ѹ6/J?> fR>[">h|???6/J?8RI?6/J?????Ѹ?9QI9?Q?Qn:n:??? > fF>?-J4?rT+???:!?(> .??nTq?[>A!?(>.??ѸѸ?8?RIQ9?RI9Q?RI8n:n:?Q?ѸRI9?Q9Q?RIQ9????Ѹ???ip?ګѸip?<=k~ڰ??Dj?>Dj?>??Ѹ????????H=5>%N?,?H=5>%N?,?L?cy>rP??#5>N?,??vi>=?jTH=5>%N?,???????????????????????h>;?T????Ѹ?Ѹ?Ѹ??H=5>%N?,?H=5>%N?,?????H=5>%N?,??????H=5>%N?,?H=5>%N?,?????????????[??/Ѹ?[??qs>?@???E@??????????vi>=?jT?qs>?@??vi>=?jTvi>=?jT??vi>=?jT???i>?5T>#n?8>>"n?ji>?5Tq ?[? ?vi>=?jT&5>N?L(? ?^? ?q ?[? ??5> N?'??E/`N>t]0;3]&K;nh >pi>֩GrB\>n}E\>Fz0\F>q*zri\>IoYB>r\> nw\Rg>AjYr(>ȜYB>y\ng>EDQ>xDP>op\g>*:A> y\9g>649g>):*>\ :6> 69g>)q6!>>H$tJ6>>$6g>)ŖWO>?k9o6Rg>)I^g>/+S{C>r9GIR>m9g>%S޾_S>BGc޾n>TG h>MSfO>7XBg>5/SKkg>NnXA>iJXmfpO>[DXg>Jn_`>]2_S>]9g>:Kn E>;bhrքg>|Mng>8y,@>bch E>;bh7g>6yY[d׊[<8>d47g>7y=2>hg>8y'^>:g>"sD=(>h=B>h^>#Rg>Ws-z>-V>+\PCz>5+>x5\7^>8g>4"sQ>&>}Y ]> g>$$s>ng>y\o>E5>Y#>>Y'>Og>1u\>>ZD>>D>87g>M}\A ?2>:>9g> y\ť)?Dkg>6\ ?*>: ?X>:e)? h>6,=$?Ń>Y)8$?$>uT)?[h>6e9? >U)?‡g> 6"S?"g>>k9?p(>,w9?4>N1S?g>uyG?S->޾RG?WF>%޾%S?g>fBX?M>q*S?jg>/hn?RI>{ߜJX?#(>sB@X?^>|h~bn? >]?aa>_]?UG>_en?M%J>Ԝe]h?'>Yen?M%J>Ԝc#}?_e]h?'>Y$^h?'>aY$}?U:FKq?> Ѐ#}?O`$?^;~7;}=q?H>πO?I6!`>xt62? `>th>2=/62? 6k1?\h>{(f;?;4&hC>Ur\>)zS(;?I 4Yk(#w;?J4-\"Q>'zB+'1?rW)\`>5*z Y-j>ُ+-1?r+$1?) YP> p;?U;Y YE>bxDP>o p;?U; 6e;?2O1?hܾlD>}:>w N*>1? ܾC9^-1?ܾܥ:i>a q~;?_ì:O> nmD>>$v;?kSi;?q6!>>H$R徑1?ep9>@$ŖWO>?k9R後1?_&F後-1?$t>kb9꨾cA?/{C>r9޾H>G꨾OA?gM騾UA?%޾_S>BGx+C?C޾N>GZMQ>QFXxV%C?txC?Z6>LXBI1?1MYv>=Xm_|>]Il;1?1MIh-1?$1_aa>>]~;?,¦_H>3]5>eh97r;?,ͫAu;?],,@>bch,U$1?8uP>_hYd,'1?8,K.1?28֊[Pd?=>x;?,[[<->~dD=(>h<=n;?},,?=˄;?,ݽ=h>Ğh4>21?$3׈=3>Ihq*z>F>0\4>T"1?1534>.1?Y'35*z>`>W)\T>pA?z>R>.\>O>Y>iA?G>iA?Gw>D> Y>sC?o,>M> Y>Q>ED>uC?i>oC?>q>OG>D۷>T1?EE>;z> tD ?V>:E>i31?G2>1?M ?5>:x>i;?n ?t>:3;$?}>]i>N|;?i{>@l;?^[A$?H>j_?1?R5@$?`>c?k9?WO>Ŗ?'1?F}?1?MD*r9?5>?l;?}j9?eA>RG?WF>%޾?xr;?c:?};?{G?l>O޾)?s/1? c G?XQ>޾DX?N\>Y)?&1?`)?-1?T?X?k>)[ ?EA?6LX?)>h]?!>j_ ?A?7 ?EA?6>]?aa>_!?ZE?۬k]?Q>)_Yh?6>!?QE?ج!?QE?جYh?6>8?0?@Idh?>Sq?qǧ>~8?0?Iu}?lБO?/IǾ^k?Қ4O?$I6(1?(KbǾj?c֚6v2?l(w;?4Ǿk?Ǿ k?q;f(sy;?:4P~n?1?;3>k?p4>%1?23Ԝ>gA?I>Vk?D> k?>iA?G]G=gz?(h7V>mA?#>uC?iw=iz?R07C=Mjz?07>wyC?YhC>?Tl?o[>rsC?h>1??>_Nl?h><1?&3^>;?Nk>]l?(F>Kl?PkQ>Ko;? >ߤl?__>~;?q?21?7ڟ>l?_?w:1??ʇ;?X͟>l?r_>`l? `?9_;?ᘮ!>i?h"?~;?OpH)?q,1?`k>i?"J)?)1?i?%"ѻ>i?" ?xA?6Z> y? 5 ?A?,6-!?EOE?@ܬ8Z>y?l 50Y>ky?-4"!??aE?W?7>7r?=м!?ZE?Y8?0?kIF>4r?Ҽ[5p}?X^GǾk?՚PޤB?z6Ǿtk?曨n?ʭգ?2٩6?Шyn?<?Z k?S :?d'<-:?U<= k?2A=hz?c7=dz? 7">Kl?ex$,<^?FI>Ol?v؟>l?__(<?[Iɟ>=l?v_ߠ>ui?"'<?I#<?>i?4"Y>~y? 5t>aPo?R)v?(84=Zs}? ?e𼙿>)v?(84=q>)v?Ϡ4=գ?2X>k|?<=X>k|?<=գ?2F<?4=C8}?>tƽCw?;jS?u=g:?`?y?94}?:<ٷ}?<Y>ky? 5} }?¤y?54R>2r?kѼ6}?/s<)ϊ>'v?W;4=Gr>k|?T=\>f?L>>{f?;>eX>\l|?=>e?b>eX>\l|?=<?b<Ɲ>e?b>A>e?5b>`Tn?kx>׽<?U4<Zn?Ox>>mZn?y5x>I<ε?{/=>;~a?>ɒ>ta?j><?0=P1>/Im?W>1>.Vm?>P1>/Im?W>w4=4}?> >j^?g&>>`^?'J>*4=2}??,><o?$,>Ģ4=r6}?x> ?OK=<?="`eg?W> ?OK=ʷ:2?<]eg?>beg?>ʷ:2?<_j?Cw>-:?U<i~?|=]hj?yL>Qj?ٷ>ɰj}?ۅ=Dc=pi?1>i~?|=(|?+ =vcYi?n-> d?xi?a>Qp|?=W[]?">X]?&>Ql|? =ʡom?L>zOi|?u ='<?fIɡmum?-L>tm?aL>t(<?`k?% >z%<? yZ}?<ͭk?s >9k?O >}?N<CKl`?*=}?<, }?u<ab`?4=6{\`?-=wk }?<@ bFV?=eA?*'?=|>YNo?<$?0B?!a=> Io?WR#v?~4=$?YB?ɲ=$?B?=!>#v?$ 5=|"?@?S/>Ί> 'v? 5=>{f?;>q"?@?/>q"?@?/>>{f?;> ?~I;?6P>?[;?O>>։f?;#>ނ>e?a>>e?b>>iVn?VRx>i?)?\>d?)?j>Ϋ>Tn?kx>_]>F;?8>o>6;?W>ANj>In?x>>ia?.>>;~a?>51>8Qm?L1>|³>16?O?cϳ>Q5? ?P1>/Im?W>>D;?n"?͕>CV;?Z"?1>)Pm?0>>v^?/>">mm^?M><5o?N>Ⱥ=5?2?Ⱥ=5?2?<5o?N>aGJ;?~.?GN;?z.?dtg?h>z`elg?>]j?>k;5?-?:5?K-?_j?Cw>*?-?}*?-?e^j?9>/F0??]j?>cyi?b>E;0?d?2\0??c~i?3T>",?%?",?%?c~i?3T>)ec]?>收]]?>Esm?({L>7 )?Z6>hp)?(>tm?aL>q(*?s>Cs(ƙ*?u>ʡom?L>+0?ԋ>աmm?L>ַ߶k? >`+<0?)ԋ>+L0?Zŋ>vk? >6k,?.?>b6=,?G?>Һzk?? >W`?i= ?sC;?P>>e?mb>T5?u6?4>.5?H?>e>e?a>`?)?C>T>P;?3#>ʒ>|a?T>,?|?ȸ)?3?n?)?'ג>ua?>hڳ>5?m?>J;?g"?V<>l^?>U>u?;M?YU>|?M?>v^?/>~ź=6?2?GDQ;?Rw.?"`eg?W>1#v?R?뽜q?R?beg?>:5?t-?美,?$?n[]? >E9 ?oY?6 ?^?da]?O > )?+>^61,?>>&Hkj`?=oV?.=nV?X=FWi`?"i=SRD#?DE=Vqe`?96=X SV?Y=RD6#?D=e?P>s5=qA? ''? z=ra?>|=qA? ''? z=|$?B?=ra?>|=ۨa?>=$?B?̲=3Y?3>'Rg>$?EB?a="?@?B/>Y?>9g>Y?1>kg>|"?@?S/>\P?>>&"?Q@?/> ?>;?D>iP?>>gP?>|> ?e0;?]x>5?K#?*>g5?X3?>8?[)?j>v5?h>B ?5?> ?*?)?%`>)"? F>0?m?i)?N>p>K;?>"?B>'?"?> <?m>><;?I>t-?b?x)?&?i?9)?ó>5?0?4>Pg>RG?>@>G?Pг>'5??c>>mP?6ݳ>5?N?γ>K;? c"?q>>vP?W>>P?>@;?r"?U>Nj?M?U>Nj?M?ź=5?2?=\>c?0,=Xf>ac?ɺ=W5?;2?F>a?ź=5?2?aGJ;?~.?gJ/>ma?J\>Ya?&G`A;?b.?T뽏b?صR?j?R?:5?-?Uyh>[?y>[?:5?K-?D7,>M?;5?z-?ǝ*?H-?B*>3M?AT$>ƓM?jq*?-?.ؾ >lB?-*?-?;^0?5?0ؾ>ދB?mؾƔ>B?I˜0??{`n&>&4?;^0?5?BE,?74?X>14?T(>.4?,?_3?89 ?f?8?9 ?_? )?6>4=> ?i4Z>A ?d )?5>h?>>)?q>x("*?Y>t?=>I>|?X>>w(x*?>uwLP> ˰>d(*?Y>+30?>_[L>>pL|w>ݰ>+0?ы>KXu >t>+x0?ȋ>6,?.?>DX$>t>@X`4>1t>'6?,?I.?>rV?=Ie?>u5=ra?>|=rp?>>Zdp?>ǜ>a?>c>yG=_k?} >cf>a?>m=Y?>>xg>k?ၢ>f>k?Ђ> f>Y?\>jg>U">Y?u'>mg>aP?>>i.b?>>+b?>ݯ>ZP?>ج>OR?!>OG>JZP? >>5?B?>LR?>;^>MR?->?E>5?-U?>5?> ?5?l> ?"? 4>-?*?>,?*?FТ>_,?("?{>+(?3?Iޱ>ww3???b)??,>4?>1D>I M?5?P?6)?F>3>G?s6>>M?/A>5>d M?6>J>?G?>¢>f&^?4>>4G?H>+>tP?b`>> ^?>>-^?}>>\P?Cf>> g?W>>|P?U>Jv?VM?A>>sg?HM>>F g?U>n?zM?7>D>n?U>Nj?M?0,=Xf>ac?7>D>n?7>D>n?0,=Xf>ac?<Ϣ>r?A,=4L>c?J\>Ya?Z<â>r?r?w7.>ma?Ὂ>O\n?H>a?T뽏b?صR?>bn?>n^n?P뽪i?R?y\1+>j?T뽏b?صR?syZ>8[?]\y>j?-v\zB>j?1y>G[?y謾{>b?yX>[?6>pM?ڬa>b?笾C>b?E I>KM?mؾp>czB?f >+4?Gy ?a?Z(#>)?((>)?Lw ?_?P 56> ? 5>m ?t?Q>>Q>>QN>>v?2>+>:kL>x>EXx&>/t>M{V̚?3X=Dmg> =Dmg> =M{V̚?3X=In[>p=`xV}?T='^D#?E=n>Qqp=`?Ӛ>ot=@?,; >;Vg?l>]=?^; >; }?D2Mg?5>\a=Wg?rm>*= }??\b?H*>u>, }?:<\>Il?;>Cd>b?U>4v>b?V>*v>l?;>0n>-R?>ȁ>2R?>>l?e;>pK? >>:l?;>o>:V?\C>?_K?PP>>[K?s>>V?C>D?9?*>/?xV?yC>?S4?\>-?9?Q>ߨ?9?D>?`L4?b]>-?X[?Ky>?$?v?>=M$?Z4?֒\>>-??>vy9?>M4?\>9"-?Ң?mg>-S??4>w9??@>Cp9??Qg>'S?>_S>BG?>P>G??Qg>'S?u>R>@X?}?qg>-S?Ҝ>KJ>gn?Y>N\>DX?s>B>DX?%>I>gn?_> F>]?_>UG>]?{ߜ>RI>/hn?D=wA>g?eԜ>I>Akn?=[_C>y?=6>g?D=wA>g?=}C>hy?7>k?=}C>hy?\ܽ-\> rx?7>k?7>k?\ܽ-\> rx?H>wb?iR>tb?ܽ]>px?nO>Jb?[ܽ,]>px?SVg>i?!n Q>b?nN>b?퐭Tg>i?ZC>$R?0<>"R?Rg>i?/lC>oK?Og>i?Gg>P]K?԰3t>ЕK?6>'K?F\amg>WK?L*>3?,>3?wMjg>bK?:%(>&?Vg>RK? @g>?%^>&?%x[>&? @g>?b7R>?-7jG>F?@_kg> ?$JD>>>%@g>}?bg>V>JN >b>J5><>'bjUg>>T8>ͨ>TSI>è>ױbJng>>Hb6>v>ǧbYg>>vH>];>v>8bu>-v>˛vI>e;>d>=dg>=^vϚH>J;>Bhq>0=v0H>[c;>#; =,#?wX?@=`?Ӛ>ot=V%?cB?\='%`?q>yt=ag?Y<>hb=>%?wTB?m=%? NB?ܵ=xeg?,>K_=kA3?X1?4>Vg?l>]=b?)>v>((3?/1?4>+3?V,1?z4>b?)>v>"?nA?>b?)>v>R?Cj>wq>?qA? >?GOA?>y2R?`> >~?ZC?>R?S>r>@RK?I>گ>dV?C?է>>q?oC?>_K?PP>>_K?PP>>:?G >?E?T1?۷>>?_%1?9>9?>?>t;?u>:?/>֥?Yr?v/>B$?n>i;?x>V>~;?m>c?`>5@$?Y8>-1??h?R>y?$?Ŗ?WO>?k9?h<>)1??7>21???l>f9?{>};?:?ޕ?&>/w9?->Z/>G?d>i;?8?*}>Gq;?n?>OD>G?ao>P!1?)?q>F>VG?X>A>iJX?l>N1?f)?`>21?)?d>t>;X?v,>^@?#?X>A>iJX?ˡ_>C>]?*,>Ct@?1#?,>a@?#?_>k>]?t=A?4%?)_>Q>k]?=nL> g?u=A?<%?v=A??%?=6>g?,<1?(8?@=%g>#g?=7i)>j?,<11?8?,<'1?8?7>Xk?~0TA?s&?7>k?iR>tb?laUA?t&?0NA?z&?H>wb?n0%C??iR>tb?wnZ>b?Tq08(C??n0%C??nO>Jb?r 1?+?nO>Jb?sF>z&R?r 1?+?r'1?B+?s_>R?YA??;S> R?fP>K?̛A?"?YA??f>K?ʾC?O?[j>K? b>v3?[ʾC?T?ʾC?Z? ]T>=|3?-'1?8?U|>fo3?O%t>K&?41?!?%'1??W%wE>&?uC Iw;?_>*%B>*&?E76>7?D Br;?n>Y= w;?m>7[E>'?j#'1?}>7Q>?JZ> :>u'1?[d>]-1?}>J`>M> x};?>7J5i>U>ATl>+> |;?)> Ƅ;?o>hT{>Ψ>W1G81?I>?TB>˨>Hb6>v>1+!1?I>1 1?:I>fSbX>v>fY(Rj??k=>bH[>v>odߐ>=Z3(??8=>(6??5= dv>=80?I=df>w=Ejq>a=R8_0?I=#=+ ~?<#?wX?@= pV>z?,)=R?YX?@=$*%?IEB?}=VW> z?Y)=V>_z?+)=!%?kfB?զ=H{> e?9(>5%?sZB?姵=83?'1?f4>͟>ye?7(>83?'1?f4>n?2cA? >>*e?(>n>e?(>?bsA?כ>Lf> w?p >?tA?>Yh?wyC?>ff>n w? >}f>Lw?! > p?mC?>]>Ql?>O]?jC?>1?@1?o>J4>al?>=?*1?>>M|;?\>f\>Ul?>B>h]l?rΈ>5>;?E>ډ_>l?9>>d;?z>ba>1?M? `>l?>&F>-1??*>y;? ?_>el?ٟ>m_>l?'>*}>Gq;?n?|n=6Wp?>z>;??{>G31?q)?=bp?L>)1?J)?,>a@?#?l=[p?s>:9=vcp?L>,>[@?#?ĺ<y?&\>,>`r=A?%?#8"f?>0t=A?0%?,,*&9f?U1>YOA?{&?zyx?bn>1HjA?Z&?so09C??z׀x? m>{2wx?_{n>#o0<C?7?Dcc?>0AC??~?1?~+?ҴDښc?I>~%1?+?YA??Dc?>ǷDc?>YA??`x?,F>d-A?u?ʾFC?K?Ɓx?F>Nx?fG>ʾC?Z?'i?1U>kʾdC?@?:21?y?L9 41??u6 ;?R>i?:>#* i?<>D Gy;?T>}n?=,>' ˏ;?P>,=1?Nf>{n?,>%1?{>!Jk;?>1yn?E>,>kn?#,> #;?>(Il?= !v;?Ȇ>1+!1?I>:l?=1K.1?I>"0(m??4=3ֿ@l? =忾W(6??5=Y4u?<6(ވ??Yi=8Ť0?I="(Cu?zz?rY(=>e?q(>Af> w?^ >ff>n w? >JP>Wl?>GgQl?>w_>Bl? >,h<?<7_>Ӭl?R>7=Zp?>Ij<?Q}?|.j=Yp?e>/ź7?|.ĺ<y?&\>8V.f?x>ezRx?@m>zvx?n>Dc?p&>|x?+G>Ax?GF>i?#>j1ݽa}?Q=i?.>ݤn?,>0ݽ}?;=0ݽ}?;=Ҥn?5 ,>_=?[Wܤn?;,>ٿ>l?w==?EX=?cYٿ>l?w=u?|<ػFn?RW=b~?nu? x>#=+ ~?<7nνz~?'W=b~?<V>_z?+)=mνz~?V(mνQz~?T(V>_z?+)=}?}|V><z?d*=if>kw?? >3U}?P殽!R}?Wdf>Hw? >h<?,<"r?9㖾h<?…<7_?07?O.Ⱥ!<|? $<|?R8ƺ=Z(~?*ɺ{'zx?In>`=*~?"uu=)~?kz}x?n>Ia=n~?U{x?m>x? F>a=~?杽Ia=n~?Uhx?F>{=}}?}x?CG>%bݽ%}?w==M}?Q3=|}?Hj1ݽa}?Q=_=?[=?cYu?۬<>}?@FͶxku?Qu> ν0y~?Z(]Ͼ5f? <\Ͼ[f? ~ν y~?)sLk?U:ν{~?'ǂ}?\&Wk?LU{媾Zk?IUD}?'箽^y^?ڳ{Cc^?Y,}?VL n?!=F}?رh<?Co<Ln?0㚾Lmn?Қ\Ij<}?/o˾y[j?Q˾7_?0"9\h?=)~?.a=~?ݭM>hdh?vM>Qh?Ӽa=~?>i?[Da=~~?k=~}?i>yi? > i?nB=v}?j>Fe?ɃZ>7(e?p;f=}?u>Yh?$34=}}?xj=?5Y%>Mh?$>@Hh?/$="?4[?>pm?j=?cY>}?@F%>+m?.5;>m?~2]>q}?pDߔ?gp[?9zHJo?o4M. n?7;0?xϽ軾on?:mu?v>7Ϗ0?AϽ77t0?Ͻlu?O>wh4ޥ.?{G͂ru?>v3Ͼٟf? _4.?r^Go4.?aGhϾѓf?J f5#?y5>#?B?Ͼdf?P -%;?cTMϾf?| Qk?4U6);?q8;?Qk?4U1־,?B羑>,?05'*Gk?UqKa^?{|p^?곾Ln?6 a%?d{%?Ln?6/{þ#?k*zþ׵#?*Ln?n0[h?g> 5?&M&J#>5?R&N>"Xh? >*?x!( >k*?!N>_h?cr>5? N>SZh?n>5?U>5?q>ri?ܙ?{2??2?>i?Ι ?;?NϾq>ri?ܙӺ>e?`͑ ?;?[Ͼ ?;?ptϾ>e?̇1$?۷,?56$?,?>e?{5>Gh?$>Th?$>m?-?6?M9|-?,5?N9,0>m?h|,?tm?Z ?%jd| ?< Kc^?)}$? =IP;?q,D=a?k_b>t?Mʚb>H|?L =sa?\/>6?NC&4$?,?}v>Jh?$-SF? ?f KF? ?re>UPh?E$-?5?9ӊ,?+TƦHv?N5M \_>R/Hh?3M7~0?xϽ.\/>U\7>R7}0?AϽkWҐ?~iQ|7kw0?Ͻ{4.?zG*WWo?QT'Ww?@kQy4G.?]GPG>2n46.?zG˄5P#? P5_>TP"U>[5w#? eD>!׾85#?*L;?D~>"׾D<> ׾,;?|4>/;?*,?羃4If>E$42>)=:,?7fw ?rE_~ ?ELe9$? >g2o 2>_2}꾆$?&D>;h@Z꾓$?oþ#?*羫^>g@v羐`>b@zþ#?J*k>POlþ#?ܸ* yE?-E9>yOE5>O]@yD?FRk>fYn>yE?A)-O@?"[5k 2>wYkq >Ym- @?"8>[6-%@?"*?=N">[& >[Lue*?p=pG>au*?=֣5?E48>Fa8>Fa֣5?E4a=o>Ua֣5?Y?4 =IP;?q,Ma=_6>Na _=&>Sa{=~J;?,Ab>i?VMib>Xd?MX>5?Z&^>W>Q&>@>Q#>5?p`&~>>@#>5?L&U >*?!>P#>@6> >@">U*?!s?b>G41>Ս*?K!t>^5?2+k?D>HX4e?`> S4 e>u5? |?> "~~>B5? ?ȡ2??>"?>i"?2?3/?>C"?2?n ?;?5ϾIK+3/?>CϞ ?;?{hϾB?xM>#{ ?;?^Ͼ8$?@,?lB?D>ucB?kZ>i,$?,? KF? ?redF? ?XA.?5?9]?2>+_]?k>ϡ_6-?= 6?9_?>J>轏 .?5?9,?I-vϩ_?9>9=I,?' D'L>$׾4R>rN9R>B񾁔D>׾*4{L>r%4[>j̉ ?/)1>.r(ۘ)J>q(d4 ?) A>KO2_o>]@>!Oֶ1>[`Kն>`>!OӇ >h |>Onku%>~YZϢ>iԇ>i6k>YR׃>%o k >Y>S[4>ίo{6 >-o>U[pG>a>=>ͅac=,>Qa>⛢>up> >qp+=5>PNagql>>vhI_= >Yab>]?M4rl>ű>ήhpl>б>h™b>la?pM#>6>aԀb>;b?M >Y>Q|>7>aK>y7>Ma1>W> Q>Ѣ>U> >>VQaf>0>@$>g>Uէ>>U>@>a@s?;>T4}q?^>J4H?>",?I>fv* ,?>w*;?> " D*}?>"3/?>C<r7N(EG/?>M=B?*>/B?25>Ü3ZF? ?Z-]?ȶ>-]?>AjkF? ?eg?>l 7F? ?X]?>_2f?G>#jjf?>QX]?m>_o?F>~u]?%>_._?>o?ut>o?>*_?>=oko?>i=__?a>r"O?LY?4zo?Ȳ>\9_^ܾ4f w}f^|cmP|^{}0]s"}<ힼx^ml"%}랼?Z})cAm4Htm\g},)ߵmD,}d* lU}Xuï{mkh}m  U}5uStmf^4HX} t^&}s):|m>^4W$}p`*b}"زvm5^8,vmh^{kb}`Tp-nb-b}(#׽$}׽pp/n`׽#}׽_})ܽnp*.ns Sp3n`}s۽ɲ5{/^}ܽbk~ĽJ˲@1{!0bm~0Ľ8 ~M`Ȳ3{g/)ɲ4{/8 ~!p̐m8 ~#}uɐGmUҺXr'}= ,c$f}mː'm"⺾ ca}Og <naYc:e}u&}]I޵m,=V} zi=$}d .+>m"xi='} ݶ=}k+>m|Ϩ&m+>m꨾=}bl>}m8=t}AL:˻=S}kS$l>ym-n l>{m^˻=xT}㽓˒>،ms]ͻ=V}K=$}׽ʒ>mŜs=$}׽3\=b}Xʒ>mŜsɒ>ms[=(b}h/w>Pp w'=_b}cT>B}jk>5p T>sB}Ds=}$9jk>5p l>,p[ ~@=}8>؇q np%t=})8>9} !>qUp(g>}!>p}>;>qXp>qUpM>o}>؝>ss->Ƽ>p}}>{}'>wsożRp),nr9ʲ%0{#;0]!/\] 6\>̲[2{C0,͐`mֺ >8tpz!¨>66qX!tL ?S'Cf$ Sܾfi07ڨܾ}f  m~es0}7ֽc08ѥx^mlx54 -3M/r5&-3M mI.L%1y7#醾r6m min!F%y7 S%r7b醾Я{m&7<$`8ï{mkumN^C8ñx8s^|m]5-Y]Q3-^|m]*83dΛ'lm ^p"nUwN88rpp/n`Zpᾗ)-\%sl%--"pp/n`|s|2Vp)nH$]7(\쾅WDm2U 3to2]-]-\£}+$^,6L $t$6]1\š>7+52v.$]7(\쾹_m@>Y5.S>`.5r.ڨmѺ o(-vC;g !-I;mẾW)KN831ɐmg޵< nn})K8:1)K!8&1 <nλ=X7-Y:w="-:۵< n/W5>w70,g޵< nn>=hzmZ5>s7\,QZ5>Fz7,}o=|mJ>8`#}o=|m+>m>>8a#{M>8c#+>m>!-!>=-!jm+>mè>Ɠ7h+>+m+^;l>umCy>o7=>r7 5pl>vm_>8") l>Gm ,%>3m s>9#>58ʒ>mŜs&&? 1-QW -?*-Wʒ>mŜszD?9X>ؓmsl>,p[ j=?9<?]9Dw>Pp `'?5>pP ?nT8' '?5H'?5{y?mT' >?$e?>?b$0??aTR'dB1?7ý?P}T'>4qp1?k67ý!1?S27.ý}>|qpV ?G7s>tqWp؝>ssļ ?1F-7s&؁CaF$Tk$=VC$2S=H08;kV9+kUeTo07ڽt9bҾ.?d4U0d8ٽg5/-PM*bҾy=d 3bҾsdu5-KM[GϷ35-PMX%k7$[[N%t7ĽKҾ\QK%Kr73G8ϱ1KҾbaKcҾF㾔8˷=z *8s뱾 -!ȉ=ƺΈU=T }mW5-龲'{T(@ L-龋I8=&h.(&lK(8ߌҾ68b᾿"-82XҾ"6'ҾG6pj#-?,*뾉BN`b(-U+&ez2Y^ľ6AN ƾzY5.rze+r6e>7+52v.yҾbf_>53."z-Y;_0ҾVf^\Ҿf o(-vC;;mg !-I;W)KN831f;L3m;mW)KN831A=GҾg)K8 H1 =j-ܦ:E=أҾgy=Ҿgw="-:t>`f|=&-:@5>{7f,s> 'afRt>aX^fQZ5>Fz7,6>aZ/>5>9k7s,$=>8ds#@>$;Z*)>TZ@K>8}g#S> ҾK@K>8}g# >&-|!S> ҾKI>JҾKZ>m-"`g?au%;>B6-!>[7!h?Ҿ;xn?/;<>}7,("?RҾV_'e>,}72>u8)<}"?VҾg'"?fҾd'!>w8xOu8)\%?)-Zpᾁ?z-vQ?q9FTN?6NvWN?"+Y?s9v!;V?ݟҾp츾E?R9*)'?I5I'3V?Ҿ㸾'3V?Ҿ㸾)'?I5Ie? y̒'?/5=?$v?e?.Hye?01syk=?$b?j?wPD>?[$?+<1?7ýj?X|-T.bҾ&d[Ⱦna?>.Pn?0"[䝾RMVTn[6KҾS:GV-TeK'Ҿ'V㾷=!⺾-}LVSFVS=뺾+6nl8->=T&2H(+6nl8-+6nl8-&dK(@ "/?~O=&h.(ƢҾz7& >OxxҾ6ǎFN& >Oc c?TOJG@N1_1j2xpJNbҾ >Vy<_8j 㸾7Ҿ9V*rep᭾bW_8jޭI_4j-rge_޺xr%eJxҾ f_޺xyҾxfÓ;{`m/X_xɺX_:x2;0mi >SmwÓ;{`maC=Ҿ5g >TwC=dҾ$gs>_f > -T͔w >!FT}ws>^f>8js>(of>Zõ>8tjε>d8Rj7>PZ ?> qR>{ZHD>EҾfҾDKw?km; ?.>8mRy ?>1gR|?w;q4?:Sk-a?|;x"?Ҿi'M4?T|-p"?Ҿc':l?Lh/ˮ4N?˿뾩V?ULӾ Ըċl?0?7V?DҾsf?⺾ͧyl?N/ˮl?;0رce?eV\y"}?Ne*_f?Kz7y&k?+ #}? .`#}?-Ej?w?; >;j?Rua0e?5ᾊ5xf?ǵ;7;.˔>#t) =z!>|9 |hB |uSA=>\Ynh#=>iXn=ke>R|$B=Ɂ>:uc=A>|ZA=b=w}}J=nف>߱u4==}XJ==~o=aʁ>uk=Ɂ>:uc==-~z=Wg^>"v#>8 =Y~==}Ϳ="^>Ƌv">=ȓ}G=e*>n{vsY>^>fv%">H*>N~vY>1=6~Ǻ=o27>@lS>4d=3~=T=s{{[ >J37>@l>={(>e=x3j>07>9l̪>=Ǎxsj> <3`b=;T=vc>j!w >T=v>AIj<}>w >*yvqQ>S=EvM>*>xv]>VA6~<=ڽou>YTA4~=iR8|+>.ڽo>Q8p|{+>g| >Tڽo >ڽ/o$>+Q|B">0w?u!q>x| >m{}>`=-v6u>q>΁4}x,=ˡ~-=wu+&q>0w?u!q>ɡw~=4w6>ʡS~ a= 1̽M}˽L}= [Oxp=4w`6>^Oxp=ͽ5~d\~=ʣkp=9ν2~+=s$|d=٣Xp;E=J@$t|z1=}$Mt7=?>TnT=>Un =>Fu2=l?@Ђ>H?@VЂ>>Fu2={>aD>'>6u=h_>}vQ#>ź>aw>|>Ea9`>^>v_#>>Mf>^>Fv`S#>J*>svZ>2>M>>]M1>oI*>txvv5Z>27>=lQ>07>7l>=x~j>=cY>=x~j>]V=v>=cY>Ѥ=#cO>]V=v>挽4N:?T=v=ȅ>*rvz>挽4N:?挽!N?+*kkv>$ڽo?<>ڽo>wu+&q>o/ A ?2?@?@u\q>PW^>-v6u>q>4we6>PW^>%J^>%4wŬ6>Ǿcu>4w6>]OxE=Ǿcu>Ǿ}cv>\Oxby=ɣepwu=}ʣp =쑾u<==(vI=ЄI= 0ut;==a I6U=7?ZIZ=>YnS=8?},3">8?8,C3">>Nn=?@݂>~?>@>ה>Aax>C ?ظ"LH>a: ?">]l>% bG>Y>5M>C>uMv>H7>Kli>>h*$? >I*b %?K7>"l>yd>0/?o27>@lS>ꤴ=]c6>@e> 1/?sd>0a/?=cY>~=T%B?=cGJ>猽{/N?~=%%lB?茽g=N?ڽo>Mv,q|2?qv,$2?SڽoV>1+@4?"@3?Ix^>{ ? ʎ ?U^)>n!_&>X8^ĵ>Ǿ~cu>!]&h>!Q&>%Ⱦvc)u>.0x>MǾcZu><%p=y.M0Ux>n}.0{x>գp?=I9=@Jo?K^5=<?WIE=f?{ҾSH>]?=I=8?,2">g?lҾ_>1f?Ҿ5G>x8?6,!>Cd?p¾[kt>d?Z¾t>8?,u3">3JW?6־>8?8,C3">?@݂>PW?־>EW?S־>?A\҂>0E?o>?Aт>6 ?"%>E?I,|>E?>H ?"+>^!#?W^R?? ?R"#(>t>MJ>#?._?}#?B Ui?+>ΫM4> ?FRؾ+r:?>Mf>>QP*%?{ ?kؾk:?$ ?9ؾs:?>D* %?m4>%¾F M?m4>%¾F M?>>*>%?qִ>{þZ?L>\*$?d>0/?ʴ>`þΙZ?ʴ>`þΙZ?nd>0/?u>@g¾d?u>X¾d?sd>0a/?s=þj?sd>0a/?~=T%B?s=þj?=Dþj?~=T%B?J:8B¾l?I:pM¾pl?~=]%B?KX佥ھe?~=%%lB?猽{/N?KX佥ھe?KX佥ھe?挽4N:?<_bi\?c&N?v,@2?_I\?<_bi\?v=,2?9t\?ҭ\?v@,2? ׾rG?Mv,q|2?o/ A ?b׾dマG?Z׾nF?{A?5jѾ89?<9@2?W| ?ogѾ)9?pvѾ$9? ʎ ?W*.~e[&?B.íW&?$ã 3?&5F{ؾJ?W| ?O!{W&>25U7ؾ?c"5ؾ-?M!t&>ƛR'>+Rq4>O!{W&>WqZľ8>!V&:>.0mx>>wZ;ľD+>lwZHľ8>.0Px>dD&¾u>dM¾qu>.-0mx>bofԾ>.0yix>FPI=bofԾ>сf4Ծ>dIQ=[gr=:IA=Q TAU-=[ r=?ƺ; >;_Co?aA=!}?N/<y>Qo?~󲾾5= g?%Ҿa>> }?["95!}?#9g?ҾE>m?pBS.y>g?FҾz>d? чt>m?%RJ>Pd?¾It>#=W?nk־>m?KS>Wm?Sv>EW?S־>R?n e?%QW?־>E?U>R?anxs?6E?뾐q>7n3\?$ ?{ؾN`:?7>i¾DL?>oX \?2>e¾L?>þZ?|>o \?X>nn\?մ>þZ?V]>nr?ش>þ'Z?u>5¾&d?]>nr?au>\¾(d? =ۡþj?]> nr?Z]>@nkr?=Dþj?F~nx?=Dþj?VH:e2¾l?F~nx?J:8B¾l?Zھe?F~nx?bHnWx?Zھe?үCnm?W佼ھe?_t׎\?ԯlHnm?_꾲\?r_\?znm?ڻn]m?9t\? eU?\?Z׾CpG?W*eVU?Qf׾(ᆭG?Eq\Ѿ+9?%AdU? 6dǁU?j[ѾM19?t"-jPMft5?pGѾ9?Q'.X&?)-˟Mg5? "-ȸMhm5?c.m]&?MJ=F?w*.flb&?e15l)ؾ?Z ME??5׾?kR%XE>M REr?M F`?FR̀7>LeehM->Rs)>OsZľm->Eke3M>o`eQM>^ZSž,>tצFuZľu<>d4¾v> t˽Ek^>d:]¾u>lfԾH>t FfO^>tbE.3^>sf<Ծ >}7;۟[q=˹;J9Q}?xPIc?@ >9|?bp?IYc?Ȕ2RH9|?^{2I9|?xPIc?R>J9Q}?Ȕ2RH9|?X۾ôQ9Bg?hѸbp?Uz95 ?cIb,:J ?)G:>8@?^)J:b5@?FfI.:<?Ȁ7:O?m):~;@?I:O?l۾Q9sAg?l۾Q9sAg?Ȁ7:O?bp?|:Ȕ2>.k:<>rH9m>rѹ9j}>q+k%/:TL>UK9\1 ?UK9\1 ?.k7-:<>FfI':=?r9sy>{Ѹ>>|I:[{2>{Q>>J<|0:]{2>|0:]{2>i8ج<~gŽ?Q9J{?ѸNR4>~?1I4=An?vd:I>Kq?BQ9 I>{?Ѹk4>Kq?BQ9 I>u~?H={?QLR4>An? I:I> T?I:?Kq?B8 I>Kq?BQ9 I> T?7:?[sH?:;?5??I:.N?[sH?:;?]e'?7:ЯA?^e'?H:ѯA?[sH?:;? T?I:?a'?7:A?>0:lf?5??d.:/N?5??I:.N?C>DG:if?>:m?@ >9|?>>d:m?>X9-P}?>I9-P}?=>e:m?>0:lf?J<|RHȔ2~gŽ?n:-Ue qpd|RHȔ2e qpdp~e[Ž|RHȔ2~gQ9rԾ.:hk;7:>~tϽ:~gQ9r>H9So=j:~4>Q9&|4>vQ9H|=j:~2~7:v?~=j:~ @Ͻ,:~38ǂ7:_?~4>Q9&|>Q92Eg>e9SoU?I95 FfI?':=m)?:~;@)?G:>8@hI?+: ?Ȁ7:Ol)?I:~;@Y?7: Ok>6K9rAgX>ôQ9Bg?Ȁ7:Oе>bJ9Po|?0:]{291k?.:s1ʾr?r9mr?G9sy.k?7-:<ʾU?zH9Y. U?zH9Y. .k?7-:<ʾkI? .:r?r9m{?Ѹz>|?0:]{2{?Ѹz>?Q9J|?:a2|?0:]{2i?Q9ج~?1I4=Ѿ&a>tMѾ؛M\9ua5oN̎Ѿ蛾J\<g׾B9ua5oN̎!up@̎g׾Dᶽpgh=gpdǏ=!up@̎p;=Ѹp;=Ѹ??՚7<5*].<???Q9?3t<RIRI!up@̎!up@̎?JJ<JJ<pgh=p t=JJ<JJ<JJ<JJ<QQQJJ<JJ<8?RI9!up@̎?Ѹ5*].%zr,=hU>?5^;8$zq,=߁U>Ѹ?jdƾD=ѸѸ%zr,=hU>%zr,=hU>888XL|h8{XUH2b뢧뢧Kb%zr,=hU>88%zr,=hU>cb772b뢧뢧JpUɖ0>h8{XUHh8{XUHJpUɖ0>p]W0>%zr,=hU>JpUɖ0>Nk7㒾?"?%zr,=hU>%zr,=hU>Nk7㒾?"?C(>"V;?&8i+Eb|ȶQ:DX;ӷQ9&הt&8i+Eb|ӷQ9&הt2&9^DQ9'㔾tѺOy+>*5ﻗ55^*5ﻗ55^ѺOy+>*˻߫`lhѺ v+>k;gEپH*˻٤` k;DgؾFQm@͈(˻!`X*˻߫`lhFQm@͈FQ:m@͈=FQm@͈*;߫`lh>FQ:m@͈=FQ:m@͈=(;!`X>kDg>kgE>H*;٤` >I:pr+>?*;߫`lh>*5;55^?:|+>?: v+>?48;+^8^?^1 Zu?48;+^8^?k;cw?'[u?'[u?fk;{vT?1=?Tz:]=:}`u1:;^u2&9^:'[uѺOy+>2&9^48ﻶ+^8^ѺOy+>*˻߫`lhIѺpr+>k;gEپH*˻٤` k;DgؾFQm@͈(˻!`X*˻߫`lhQ,mrFQ:m@͈=FQm@͈*;߫`lh>FQ:m@͈=FQ:m@͈=(;!`X>Jkg9>kgE>H*;٤` >I:pr+>?*;߫`lh>*5;55^?:/+>?:Oy+>?2;&9^?뺇;^u?2;&9^?8;KP+[c|?뺇;^u?}`u?8;KP+[c|?>1ajk;p,?55=ѹt>Borc>Ĩac>Ĩacѹi>@qrkĻ_>ycѹi>@qr ;\=6S_>y8P> }?S;_>y?c9i>@qr?k;_>y?c;>Ĩa?9t>Bor?c9i>@qr?c;>Ĩa?{km,?w8=?e;>a? ;IJ?U?{rvw,?.=?jkp,?55=? ;J?\?kn?'> ;J?'J?~:bq?6>krn?0>U~:q?]>~7b?˴<9`en?ɳ>kn?ij>~7b?˴<} ~?Co~7??< ; e?Sl H~? ~?A ;e?a-~H?l- ;e?q_:D<?-T xH?4- 0|H?0^:@?*T^ĺn>Huk::9?/TH:TA=YĺY>wkYĺY>wkH:TA=/]_>5<$?k:)>"w|? K9i>Aqr?k::)>v|?"b;%>d^^?c9i>@qr?9t>Bor?"b;%>d^^??0f.?g;?ka;>#W^?1;\? ?л{p.?^;?i.?ad;?2;9\?Ɲ?e*;PBr?{>1;\? ?;?-켓d*;Gr?`>*c*;Er?k>S;q?7k=?_k?y1;?-Qk?ʾ;?z;Q?$öQWk?ʾQk?#ʾz;Q?$x"(?B A;Q?`X;">'zbx"(?B A(?AY;>|b뺇>;^uY;>|b+:r^=뺇>;^u}>`u+:r^=T8P }S;_y K9iAqr;^y y;bE]dc9i@qr9tBory;wWd ;6-y;wWdmQNA' ;6-QTA'2q>m]&;-k;j-_?mX^*z^eY뺧AmM^ ;]U-=]]+zULY^*z^eY ;M=Ѻ.w?> ;]a=:Ul ?Ѻw>Ѻw>:U ?؞ @;;.?:U ?Q:^rZ? 4;.?1 .;q.?Q:5Z\Z?c7ȸn?Q:5Z\Z?.;Vͥ?~7zӸn?~7zӸn?.;A Wv?B/=^?B/^H:q@=C ¾lB/^ ¾lk5Z[Z8A¾¶l1 ;.;q.Q5Z\ZQ^rZ ;4;.޺U ? ;>;c.:.w?޺U ޺Un `:w+ ]a:.w?^:*z^eY>^ ]U-^ ]U-]:]+zULY>:AmM>]:]+zULY>;k;j-?:AmM>2:q>m]>; ;6-?mQ9NA'?mQ9NA'?;;-? ym羠Zd?;&;-?ѹCmr? ym羠Zd?.y[]羜^d?cѹi@qr?T^y? KiAqr? ;\6?S_y?1=?fk;{vT?yH8> u?1=?yH8> u?Y>|b?)K0H>_u?;(?A?`X">'zb?`X">'zb?;(?A?=|Q??x;"(?B A?Q:k?#>zQ?$?=|Q??Q:k?>?k;?y1<?-<7k;=?_<*c*Er?kSq?<?-[^;i.?ad;ѹt>Bor"b%>d^^"b%>d^^cѹi>@qrkĻ_>ycѹi>@qröQ:0^;S_>y*@!?4>.?\L4?`rV+?nTq?[>EK4?^yrU+?<g?׾B=nTq?[>nTq?[>g?׾D=p?ghܽ??p? tܽ??Ƽ?Ƽ??Ƽ?Ƽ???Ƽ?Ƽ?p? tܽ??p? tܽnTq?[>p? tܽ??8p?Xnܽ?888J?DǼDǼs?dǼ?Ƽ?RI?RInTq?[>nTq?[>?8?8????Ƽ?Ƽ????Q?Q?Q??????????Ƽ?Ƽ????Ƽ?Ƽ?QTq?-ܘ>??Ƽ?ƼnTq?[>nTq?[>??Ƽ?Ƽi?Ѿfn=??Ƽ?Ƽ?i?Ѿfn=??????????8?8?8??????????????i?Ѿfn=??qi?4Ѿn=??g?zҾK??g?zҾK?Q9?Q9?Q9??i?Ѿfn=i?Ѿfn=?g?Ҿ@bg?ҾL??????????i?Ѿs`n=Yi?mѾcn=????g?zҾKg?zҾK???????????nt?Bq=%g?zҾK????????????g?zҾK??nt?Bq=%Smt?p=2?Ѹ?Ѹ?8Ѹ?8???????????????Dj?>?Ѹ?Ѹ??Sf?yibDj?>nt?Bq=%??nt?Bq=%?Sf?yib?h8?{XUH=??3?cXJ=?????U3?ޯX~=h8?{XUH=?2b?뢧뢧>cb?77>????nt?Bq=%??nt?Bq=%??2b?뢧뢧>2b?뢧뢧>??????yRf?cY3bDj?>yRf?cY3bun?1x=Aj?>^;=TkvQ9,> u;1=I9,> uY;>|bQ98> u(?AY;>|bY;>|b(?A;Q?b &(?nAöQWk?ʾz;Q?$z;Q?$Qk?#ʾ;?Qk?ʾk?y1);A?7k=?_*c*;Er?k>);A?;?-켓d*;Gr?`>1;\? ?e*;PBr?{>i.?ad;?2;9\?Ɲ?1;\? ?6m.?a;?9_;>[^?i.?ad;?9t>Bor?"b;%>d^^?"b;%>d^^?c9i>@qr?k;_>y?c9i>@qr?ȶQDX;?S;_>y?>;5<$k)>"w| Ki>Aqrk:)>v|"b%>d^^cѹi>@qrѹt>Bor"b%>d^^?;0f.?g;9_>[^1ۻ\? л;{p.?^;;i.?ad;2ۻ9\?Ɲe*PBr?{1ۻ\? ?-?Q:k?#>zQ?$?x;"(?B A?=|Q??`X">'zb?;(?A?;(?TA?Y>|b?^:1 >Zu?Y>|b?+޺r^=?:'>[u?:'>[u?+޺r^=?;1?/;$Ə'^?Hq@=C?¾εl?B/;^?¾εl?Q:5Z\Z?A¾¶l?1 .;q.?Q:5Z\Z?Q:5Z\Z? 1;.?:U ?؞ @;;.?Ѻ.w?>:U ?:Ul ?`Ѻw+> ;]a=Ѻ.w?>^*z^eY ;M=^ ;]U-=]]+zULY뺧AmM]]+zULYk;j-뺧AmM2q>m]&;-QTA'mQNA' ;6- y;m羠Zd&;-9Cmry;wWd.y;[]羜^dc9i@qrT;^y K9iAqr \6S;_y8;P }?S_y? KiAqr?T^y?.y[]羜^d?cѹi@qr?ѹtBor? ym羠Zd?; ;6-? ym羠Zd?mQ9NA'?; ;6-?Q9TA'?:_?mX>;&;-?;k;j-?:_?mX>^:*z^eY>:AmM>^ ]U-]:]+zULY>^:*z^eY>^ ]U-:.w?^ ]U-޺Uk :w:w޺Uk ؞ ;@;;.޺U Q^rZ ;4;.1 ;.;q.Q5Z\Z7:Snk5Z[Z.Vͥc7:ȸnc7:ȸn.Vͥ/;]=_B/;=^.:V%YĺY>wkB/;=^YĺY>wk::9?/Tĺ*>Ftkj ~H?n-^:@?*T:C<?-T xH?4 ;e?q-~H?l- ~?A ;9e?0Wᾮ ;e?q H~?~7??<} ~?Cokn?ij>~7b?˴<~7b?˴<9`en?ɳ>U~:q?]>~:bq?6>k ;J?'J?kn?ij>jkp,?55=?Ρ ;׵J?X? ;IJ?U?jkp,?55=?e;>a?{km,?w8=?9t>Bor?c;>Ĩa?c;>Ĩa?c9i>@qr?k;_>y?c9i>@qr? \=6?S;_>y?8;P> }S_>ycѹi>@qrkĻ_>yc>Ĩaѹt>Borcѹi>@qrc>Ĩa{k;m,?w8=e>a IJ?U{r;vw,?.=jk;p,?55= J?\k;n?' J?'J~bq?6k;rn?0U~q?]~7:b?˴k;n?ijk;n?ij~7:b?˴} ;~?Co=~7:?? e?q> ;H~?= ;~?A= e?a>-;~H?l-? e?q>_ѺD<?-T? ;xH?4? ;xH?4?^Ѻ@?*T?:@>qk?_ѺD<?-T?HTA=?^:n>Huk?^:n>Huk?HTA=?B/;^?8;KP+[c|?ȶQDX;?bQ'˔t?8;KP+[c|?bQ'˔t?2;&9^?ӷQ&הt?:Oy+>?2;&9^?*5;55^?:|+>?*;߫`lh>: v+>?kgE>H*;٤` >Jkg9>FQ:m@͈=(;!`X>*;߫`lh>Q:,mr=FQm@͈FQ:m@͈=*˻߫`lhFQm@͈FQm@͈(˻!`Xk;Dgؾk;gEپH*˻٤` IѺpr+>*˻߫`lh*5ﻗ55^Ѻ|+>Ѻ v+>2&9^:;^u2&9^fk{vT:;^u:}`ufk{vT;=T;1?z޺]=?'[u?;1?'[u?2;&9^?^1 Zu?:Oy+>?48;+^8^?*5;55^?:|+>?*;߫`lh>I:pr+>?kgE>H*;٤` >kDg>FQ:m@͈=(;!`X>*;߫`lh>Q:,mr=FQm@͈FQ:m@͈=*˻߫`lhFQm@͈FQm@͈(˻!`Xk;Dgؾk;\gLپH*˻٤` IѺpr+>*˻߫`lh*5ﻗ55^Ѻ|+>Ѻ v+>48ﻶ+^8^^:1 Zu48ﻶ+^8^&8i+Eb|:'[u:'[u&8i+Eb|>;1 ?|?)(BJ*>?H5+=|?)(BJ*>~? @=?H5+=?H5+=~? @=~?O^??~?O^9Q?RI?RB >B?h??.?> >> >?~?O^??~?O^?H5+=~?O^??8r~?^?8V?h?Q?Q?r *=?H*=????.?> >> >?RI?RI?RI???????Ѹ?Ѹ?Ѹ??.?> >> >??.?> >> >??H5+=V?h >> >?v;.?> >> >??v;????QI:?QI:?QI:??????????Ѹ?Ѹ?Ѹ?????????v;???v;??Ї?lts??Ї?lts??????v;?Hv;?0? UlsЇ?lts?Ѹ?Ѹ?????????v;?v;????Ї?ltsЇ?lts????????????;4Ї?lts????????????Ї?lts???;,?;4?Ѹ?8??????fdP/-;v?r,<v?r,<??????????;,????l~?ҽQ??;,?l~?ҽQ?#w?t}#=??#w?t}#=?????!w?} "=#w?t}#=??7474=?@4f74=?????;,???;,?8?8L?374=?7474=??????l~?ҽQ?;,l~?ҽQzz?7<?;,?;,zz?7<O?;>XkvC3ﻞN|́^>]nfk{vTR>nI9,> uOG9D>um>On`]nG_9?/]Ϊ;^? ?$=;?Ч$=ht?mR> ;bg?[>Tlt?6>oH???;g?й>x;g?>gH? J?";1?8?RdH?N?JǺZ>:a?";1?8?;1?8?9ɺqj>6a? :n>Jo?JǺZ>:a? )z>>x?L:S>]o?L:S>]o? )z>>x?2<׊l>y?M/ȣl>0yLS>]ok:)>v|k)>"w| H>o~;9K>?a_>9o91?8s;Z>:as;Z>:a91?8;gH? J1?8 bg?[ؾ;jH?F);>mH?Bg?йؾ;Tlt?6 bg?[ؾs?%;ht?mR;Tlt?6Ϊ^? ?$uV?=?p#ޚD5i?(:>uV?=$u8?=јDi?E>TA< "m?>TA< "m?>jDi?I>G_<9?/?ޚD5i?(:>2^?dI?_<9?/?m_Pn?]F?iI?"} >ixr?On?}>{r? :?$=,?/<^>Pn?<^>]n?:T$=?+޺r^=?.:V%C3ﻞN|́R>n.:V%^>]n}<>{r}< >yr^>]n0;,?@Mi>)nļ;?.0;,?@M60;)?Mļ;?.= ;[? ļ;?;.Viu?& ;[??S ;[?mu?&)Y~?׽u?&fy? [>)Y~?׽)Y~?׽fy? [>*n;@}?T>p;$}?>by? &\>@I۞]?j?qey? [>%¼Fo>?*?'KE]??]IW]??%¼i>?+?7;?IO?%¼i>?+?ZĻ >k?ǂ7;o?eO?~7;R?O?YĻ>k?5DX;|>u?YĻ>k?Hk,@F=Ų?5DX;|>u?5DX;|>u?Hk,@F=Ų? \=6?f (&7kE5DX|>uf (&75DX|>uY;>k5DX|>u~7R?OY;>kZ; >k7?IO%<i>?+7?IOՈI<]?%<i>?+%?*R*K<]? f<y? [@I<۞]?jpλ$}?bX<~?=D[?F?w<ʸu?2>~[?s?k<;?ڜ.? [?#?)00?M?o<;?.?2l<;?.?c*)?M?/<^>Pn?60)?M?} >yr?<^>]n?}>{r? :?$=,?<^>]n?<^>]n? :?$=,?HTA=?ȶQDX;?}D,,{?>Qǔt?ힼE*{?| b޾Xvf?ӷQ&הt?ӷQ&הt? ޾sf?ض<ݳ,5 ;8]?Qĺqmz|T>BX;Kg@>DX; g>|ĺbpz2ET>V>;~ q=|ĺbpz2ET>"R}s >;$~= >;$~="R}so;#u"R}s޻8U o;#u;uo޻)U ;46a3o޻)U )];l6^3l;6=[3o]0I;qno7 ]2|f0I;qnoJ;bo2|ffk{vTHq@=C? :?$=,?Z.r?HTA=?Z.r?A¾¶l?,- r?ۻ)??Ѹþl?þl?Έۻc)??;C!$?ۻ)??zmj>;ZC\$?m;KCJ$?@j>;>w۵>@j>~7{<;K@w>;K@w>0{<;r} 7K7]>r} >P2;+kw>/3;xk|>h} >7;Kr} >޻K@w~7;{~7;X޻K@w,;j˾޻K@wR;/U ?1;@U ?޻%ut>ǭ;S}Ȑ>=޻#u> >$~";R}s>";R}s> >$~|:bpz2ETV>~ qDX gپ|:bpz2ETF:lzŕTGXgLپo 6]EXѧgپ,<) :]) :]U,"w|*˻r.s }k)>"w|X`nTmt@*Õɛxo}=Tɛxo}=Tt@*ÕQpnm=LQ$n=ɛxo}=TLQ$n=ѸLQ$n=Ѹ?"0"0=J//=???Q9.0=x!=TxC=TR{W_ɛxo}=T~0~0=~0~0=ݮQmգ=Qpnm=88Ե/0="0"0=~0~0=~0~0=nnnRIRIRIQ9Q9Q9Q9Q9Q9~0~0=~0~0=888R{W_"0"0= T_ 㽳"0"0=uT_@R{W_7r{^ =7r{^ =7r{^ =r =RIRIRI7r{^ =7r{^ =ѸѸѸ??QQQ8887r{^ =z~ -<=z~ -<=?5^;z~<=8Ѹ?7r{^ =#{~}[<=z~ -<=" Na" Na:n[[:n[[z~ -<=ѸѸz~ -<=nh[:n[[bW"=" Na+" N-a:b\澴=b\a.=z~ -<=:b\澴=9/:Ǟ9(?z~ -<=z~ -<=9/:Ǟ9(?Y>g?EC2e=|&1<<)1<<)|&oe}?<d}#<б,;,<;,O;>X?H:q@=CI #=n/;$ rH:TA= ,;*r8 ¾lZ.;r;)?8¾εl8A¾¶l;)?C'$;)?z;mj˾RCP$mKCJ$z;mj˾޻>w۵;Aj˾30; \޻K@w޻>w۵0;{'R} >7;Ko6;kN>}X >r} >7;,k@|>7]>7;,k@|>;H4t5?4]>3ﻚ] ?;45?0ċO?;4z5?;˾j?T0LO?~7RO?Y;˾k?5DX|u?Y;˾k?Hk;,@FŲ?5DX|u?5DX|u?Hk;,@FŲ? ;\6?f ;(=&7k;E=5DX;|u ;\=65DX;|uXĻʾDkpFX;uT0;LOZĻ ˾kYĻ˾kO0;UO$4.5O0;UO6;o]$4.54z56;o]/3xk|ǾP2;d]1';R} 4ﻅkmlǾo6kNǾ;}X &7m5<';R} ;>w۵>0M<~7{<;K@w>@j>;K@w>m;KCJ$?@j> j>;C2$? ۻȌ)??m;KCJ$?}~7;&ub?ۻ)??ۻ)??~7;5Eb?,- r?~7;5Eb?2;|f?Z.r?Z.r?2;|f?.;Vͥ?f ;(&7?k;E?5DX;|>u? ;\6?5DX;|>u?XĻ>Dk?BX;>u?7;?IO?ZĻ >k?YĻ>k?O0;U?O?G&¼b>?g+?7;'?}O?]IW]??%¼Fo>?*?%¼Fo>?*?'KE]??fy? [>@I۞]?j?p;$}?>dPy? \>&;N}?>)Y~?׽fy? [>)hny?[>X~?ؽwʸu?2)Y~?׽S ;[?mu?&Viu?&D;[?Fkż;?ڜ. ;[??7;0?M ļ;?;.2lż;?.)0;0?Mi>)n60;)?M}< >yr^>]n}<>{r ?$=,^>]nR>nI #=nH:q@=C.;:V%?2;|f?<^>]n?.;Vͥ?<^>]n?}>{r?}>{r?<^>]n?0C%?M?!Bn?o<;?.?)00?M?60)?M?2l<;?.?l[??k<>!;?.? ~[?s?D[?F?w<ʸu?2>X<~?=f<y? [)Y<~?=Y?*I<-]? @I<۞]?j%<i>?+ǂ7o?eO%<i>?+Z; >k7?IO~7R?OY;>k5DX|>uY;>kHk;,@F=Ų5DX|>u5DX|>uHk;,@F=Ų ;\=6ȶQ:DX;<E*{ӷQ9&הt<E){P;޾sfDQ9'㔾tӷQ9&הtM;5޾wfé,$~|:bpz2ET";R}s> >$~ >$~";R}s>=޻#u>`;&S} >1;@U ?޻%ut>޻~!u>;3U ?޻,6a3?;/U, ?;?]?l޻6=[3?޻,6a3?);]?0Iqno?);]?2;|f?Gyo?0Iqno?2;|f?fk;{vT?z:]=I #=nJ;bo+:r^=J;boG:](J;oY;(6T3)ï]m&];46a3 U ;6E[3Ј;"u޻/U, ޻8U o;#u"R}so;#u >;$~="R}s"R}s >;$~=|ĺbpz2ET>V>;~ q=DX; g>ĺqz,T>FĺlzŕT>`EX;g>o ;6]?BX;Kg@>ض<ݳ,"w|?q;h.s? <}?k:)>"w|?2<׊l>y?:_>=o?k::)>v|?k:)>"w|?:H>o?JǺZ>:a? :n>Jo?T;1?h8?ƺt>3a?źd>8a?";1?8?RdH?N?T;1?h8?x;g?>)>mH?B?jH?F?x;g?>vjt?B> ;bg?[>;?Ч$=it?yF>it?yF>Ϊ;^? ?$=u;V?Ϊ;^? ?$=ޚD<5i?(:оwu;?O$u;8?^D]n`lvrm>On}<>{r ?$=,^>]nR>nI #=nz:]=fk;{vT?C3;N|́?/<^>Pn?fk;{vT?/<^>Pn?yH8> u?)K0H>_u?On?]F?iI?/<^>Pn?G_<9?/?@?lI?]F?iI?G_<9?/?jDi?I>_<9?/?VAޚD5i?(:>TA< "m?>$u8?=jDi?I>јDi?E>wu?O=?p#uV?=;Tlt?6Ϊ^? ?$s?%;ht?mR bg?[ؾ;Tlt?6;rH?;g?йؾ bg?[ؾ;gH? J1?8;gH? Js;Z>:a91?891?8s;Z>:aLS>]os;Z>:a5 ;FBz>]o H>o ;)z>>xM/ȣl>0yQR?DV!}YLt!ñ+s?RI9RI9RI9ѸѸѸn:n:n:ѸѸѸ88~ c&k=s侧c6m=s侧c6m=s$c<=ѸѸѸ?Q?8ѹQI9n:?k?k?s$c<=ѸѸiBdEo="t+c19=ѸѸ#}\Nt%}_}PtJwc$??! ps?!WNs??Ѹ?Ѹ!WNs?RIRIIjcn0Jќc?! ps?-Ws?)Kc=W!][z >W!][z >!WNs?!}YLt!}YLtRI?n:R|թoOt#}\Nt?!ñ+s?!WNs?M׾`FXH׾X\wHX!WNs?!WNs?M׾`FXQR?DV8Q ?V!ñ+s?M׾`FXM׾`FXNRyNRy!WNs?!WNs??RI98s$c<=0n|Rۈh侾cK=iBdEo=߾.=td?߾b=d?ѸѸ߾.=td?~?{D޾|a?8?kC޾ga?8#/.[}:'.d-I:Ѹ?9??5.#]~@:D.>q?߾.=td?~?{D޾|a???..C~D:߾.=td?߾.=td?|?4޾ta?|?O޾a?~?{D޾|a?~?{D޾|a?RI9RI9=v,C>8?RI0?8޾a??QQ:?%޾a?= v.C>7t88bct7ᩏXt3#/.[}:..\~:#/.[}:#/.[}:Q9Ѹ?QQ9Ѹ~?{D޾|a?|?O޾a?= v.C>= v.C>88-І?A?9P[?QQQ888Lچ?KA?І?A?kkm?.A?`܆?DA?ѸѸ..\~:..\~:#/.[}:#/.[}:#/.[}:tq>lk888a>Loktq>lk888---..\~:#/.[}:s侧c6m=iBdEo=5.#]~@:?e6F1Vʽ%zr,=hU>C(>"V;?^6u1ʽ??Q9RI?Ѹ?ѸRI9Q?Q9?Q9QQQ888Ve61ʽy;lן;VZt;Q:Q:Q:888?RI9?RI9Q?17?17k:k:?17?1788jdƾD=jtƾ=jdƾD=?8e6F1VʽnnbR6,1CWʽe6F1VʽjdƾD=jdƾD=jdƾD=ѸѸe6F1Vʽe6F1Vʽl61"ʽ88??L0[?wjdƾD=??L0[?w< [?:w???k:뾌Z?vwjdƾD=ѸѸtjtƾF=L0[?wL0[?wL0[?w1{[?!w1{[?!wRIRIRI88l61"ʽ??Bf61#ʽ_6\1*#ʽѸѸѸѸT_61WʽT_61WʽѸQ?8???n?nQI:?ѸѸѸ1{[?!w1qiwGxqwGx1{[?!wjdƾD=jdƾD=1{[?!w,;[?w%zr,=hU>%zr,=hU>H%zS,=hU>88jdƾD=jdƾD=ѸѸ%z ,=iU>!up@̎7h$K:ĕv4g$J:wv9ua5oN̎,ѾV>MQe6F1VʽQe6F1Vʽ!up@̎Pum[̎!up@̎??i680?e6F1VʽBf61#ʽRI9RI9r61Vʽ?????i680?68᥽0?혾sWu=i680?혾sWu=88!o$E:Nv7h$K:ĕv88'[s(t=4g$J:wv7h$K:ĕv???????8???혾sWu=?RI9'[s(t='[s(t=혾sWu=4g$J:wv4g$J:wv,ѾV>MѾ蛾J\H%zS,=hU>jdƾD=QQQC(>"V;?Nk7㒾?"?l7גq"?mBBA>??%zr,=hU>%zr,=hU>%zr,=hU>Q?Q9QlZABr+>mBBA>£4a{T£4a{T4${qwGxqwGxq`wGxqgwbFx88?Nk7㒾?"?l7גq"?lZABr+>mBBA>1qiwGx0%X'?;=?i680?i680?i680?68᥽0??88El61Vʽe6F1Vʽ8?Ѹ'jYƾE=?1{[?!wjdƾD=[j'eƾ=L0[?w1{[?!wL0[?w?????????????????????????????tq>lk??tq>lktq>lk?_G6B?Ѥ_G6B?Ѥ??vi=?jT?_G6B?Ѥ??_G6B?Ѥ???h;?T?vi=?jT?????????????9P[?????????????_G6B?Ѥ_G6B?Ѥ????xG>B???vi=?jT???vi=?jT?vi=?jT??Lچ?KA?Ά#?A??9P[?9P[???i?5T?#n?8>>"n?j>i?5T?q [? vi=?jT?xG>B?l 4W?!q [? ^GB?`Ӛ>otaO/={UAh(>q.=UAMlu<>^h">ǧasouԴ;>^-\"Q>'z0\F>q*z^XP>Tdnuȳ;> ^CeC>˾XN>཰XN>཰CeC>˾})K*>IeD>)˾qMX;>UK D>'=`0Ke>&=MYK;>-O3J;>z3>P~M:>U&>o$nM;>Yv-C>5j&r>3$~&A>ę$ԃ-TFC>5ЊZ>: w-VC>5-8;>%T6|q>[:*:>:8<>iT}޾_>.Gc޾n>TG27<>DT>W+;>*Txh}C>Yj 4>2W؛w>[Ws.C>Pjp)>&cfC>Wj*J;>Mxp>'4cpt>u0cD*jc;>$xӽG>T\cӽVR>Yc)};> xH\>j)5d;>2x:b<SQ>!jSQ>!j:b<=;>h:c<n>]\>r=;>h= >hIo>i\>r'z> Q>-\q*z>F>0\Io>i\>r>B>Yn>^\> r>ҟg>v\>F@>YY>6>kYn+>mg>:r\>,>iD)>D>6DW>9g>>r\ ?O>ì:>_kg>|v\?'?} J>; ?5>: ?A>:C'?J>;6E$?OD>hlQ$?5>`J'?J>P;S8?:3>]#@'?I>u$;w7K?[<;8?Q>98?P>޹6K??gȾ5K?a>$K?>9d?\>-ȾT?"!>SݨµT?w>@d?]>˥Ⱦ;9b?t>Bvd?Oa]>QȾv?H>];;b?j>v+b?v>vv?_nI>L;wc?5>(Խ d?9w> Խ^v?ϚH>J;Bhq?>0󎽡v?0H>[c;?^<e:qq?g> O?.I`k>t262?G,'`qg>zth,>p6 2?+J61?\iױ>Ȥ#Ⱦ??jc.h3>o"\z>)zq#??/.q#??/."\z>)z?#l9?>t>1\:>EzuXn4>#J9?P #͔9?}ݾXY> yRG?z \XC>-K>vG쾛 YJG?4B *FG?:.2K>BL쾿v C?˾V%K>?v3b> 8R4C?˾+C?˾y3Q> %'1?\v39U>6r&iN>$,1?3LV1?4y&&>͚$gԾe;?xK 4o&Q>R$uw8>*:_ԾIw;?uC kԾo;?9I m}I>f:T{1?L1}+)>:O޾l>GSo;,1?V~ 1?B޾_S>BGN@??x޾,>vGJB>W\???????o>W?9?8)[i>sW8p>&.c?79? )?79? )p >/cyQG?N8p>&.cӽVR>YcTG?JyWG?GӽVR>Yce٣;s/C?-%ӽVR>Ycd@\>j2֣;12C?%2֣;12C?%DF jk=.1?ه7A>j=h>hk=1?'7k=.1?ه7~=>'h4>U};?yd(r=t>h'z>7>S4\4>j;?y(4>U};?yd(z>l>2(\f>.1?Ǻ+'z>7>S4\>r3>0Yr>'1?+r>-1?+3>[]> Y/>ux;? 3>[]> Y >`>R{D/>ux;? />ux;? >S>D{D!>!1?Q>ED ?]>~:.>H!1?:G>1?N ?(>:z>d;? ?X>:3;$?}>]T^>;?x>i;?n@$?9>pG?1?`従3$?ȕ>\8?><?s@1?j?1?S8?&&>o ?HA?8?\>\#K?m>?SA??YA?[ڨK?>BA?U(C?xK?6> T?n>}ܨx?9C?xM?'C?xlT?uE>ۨ1?%1?{IT?:> ݨ@Gb?5>v_1?1?ؽI<1?+91?WI;9b?t>BvI$?\B?6Kb?%>vhd?L>oԽ %??B?Խ4?4?zGd?f>wԽiq?>(O4?4?TwG%<{?߾'O?^XJ.m?8sO?I6 2?+Jm?k96r 2?X#??...m?8n?:q#??/.hkt?#??H.#v9?끂Ƈt?!#9?5 ^G?zt?Ecft?V NQG?m1]y?I l 'cG?% ӕ9C?L˾jY1y?h v1͠y? Y0C?˾H&k?8vz,C?D˾,1?@lk?`xn21?llԾ};?6 4k?Zy5Wk?֔mԾw;?Y= 8Xk?AUԾ!;?1 n81?iR8ek?v岾}]-1?M??j8%^k? i8[k?"@_??vqsw??$}A??;?9?)tw?U}?،9?)cz;RG?Nsw?<}~sw?|%T]G?B@;y?Hlcz;RG?N֣;9,C?%; y?m;< y?l֣;9,C?%(=Ph?,оأ;m5C?!%k=.1?ه7*=h?!о=41?7 4>};?`(&(=Kh?о*=h?!о4>U};?yd(k)>bqk?v8!4>t;?n(r>'1?B+^)>:mk?nG|f>151?"+z.>U~;?)>sk?-)>:nk?4H >Cw;? =>di?쁢1/>Ò;?Y>'@1?Q_?>i?'E>i31?G2T^>;?1> i?[s>h?ِ>f;?u> s?z2_>~;?q?/1?;>'s?.2?91?徻?jA?>s?1 >s?^b2?LA?{a>rv?>ƽ?'[A?}訾N?)C?xF>jxv?yŽ:>zv?ŽC?+C?xy>`?vǽ?C?I y1?Z1?I\>`?sȽ1?$1?I\$?"PB?SQ>`?Dǽ>`?]Gǽ($?RB?*H>^z?Լ%$?TB?Bv4?r4?zGH> z?q׼5;{? m?TA=)?Y<@=W?T<""m?RFt?C1cy? Zik?SJ?H;*'k?^8Cak?QﲾKkB?(K;nkh?@;l8Pk?OMMs_w?};&y?L9k+=fh?PkϾE^=N~?@Ͻ(=Ph?,о)>kk?R?;_=1B~?ҽ)>kk?R:L>h?c?;_=1B~?ҽ.`e=(~?ؽ>h?֣?EX;?> i?Nc>s?!1[أ?-Dأ\?0>s?k1b?^e<by?h<>s?1.;>9{v?9Ž~>v?@hĽR>La?LqƽٙD>'{?vм>@t?nc;y?l^=C~?Uҽ|f}?->|f}?->w^=D~?!ҽi}?F= ^=9E~?ѽOأn?jP/~fh}?z=:>zv?Ž|H>z? ּ)b?cz? ּejV+y? <=>Et?Gj?=>zj?=s@=ܱ?=EX<@>Ahk?4>b@=Ʊ?YNik? 5>>[Vk?r5>x=̳~?^=dO>i?>q=m~?Z===~?=>F#i?>>#i?ˎ>=- ~?+=$"[>τj?>;=[~?䑺=Gk>?xQ;X[>zj?ǭ>PY[>/j?&>TkL?g >; = j?E!>_eH?(K;h<0~~?=|Y=9j?<>U=j?gn>ź<{~?N=ս< i?M>,<~?=Q~?-=<(i?1>/<i?v>~?>e= 鷽i?V>p~?e=|f}?->跽pi?;>鷽i?q>|a}?>S4@}e?'i>P@=!e?>k}g}?>5 d?}>|Ge}?G>~fh}?z=t*d?>6ad?>i}?F=gi?t>~fh}?z=Oأn?jP/gi?t>dsi?s>"T?0Ҹ}j?,>8أJ?32bc?Cc<ȸj?{,>yj?yq,><_?^:t?:t?<>rj?R=p9?.?=V9?.?=*>j?=iaA?A?U^>iaA?A?U^>Ġ>~j?=M&?5?>>wj?='ó>dk? 5> '?#5?L>'?5?q>>^jk?n4>N6?ް2?>'6?#2?>>-fk?v 5>E?;?>>^jk?n4>>n#i?>D?;?>d>?;?|>~ >!i?ʎ>* ?B?? ?:??>i? ͎>~>5?5?S7>gi?=ڎ>[>|yj?>F>5?m;?x|>5?A?s[>zj?x>>2?'U ?>l2?tG ?PY[>/j?&>r~>NsB? ?+T[>=j?>mX=j?!>]~>LvB??T~>|B??\W=]j?>1>2?1?1> 2?1?=Zj?}>H=uB?%? = j?E!>C<i?(g>X=oB?%?=uB?%?ﺖ<"i?|L>?F2?(E7??F@2?>7?<%i?A>YB?%?/<i?v> 鷽i?V>I2?hA0?I%2?=0?ji?PK>K~pB?C?跽pi?;>5@e?C>W~rB?F?$~~B??3@#e?'>ݳFW;? ?ݳFW;? ?x7@W"e?>) d?>HC3c?5>uxi?L>m/?o?/?,{?IMi?g>:!A?&>8!4?&>gi?t>\r*5?{>dsi?s>Ҹ}j?,>Ry5?{>v}D5?x>㸾Lj?,>2 *?R> 2C*?o>j?,>O?3h0?};>㸾Lj?,>߾Se?#=Q3ǔ0?;>N30?;>y߾`Se?6$=G|?г=G?n=`߾ee?㹧="XaE?3( =߾3Xe?=~j)y?<"bRE?& =N೾Z;?|?) d?>}?'?}?'?) d?>E/?{?O]??( ƦH?v?N5M= \?_>R=ƦH?v?N5M=i9?.?6=_\?$>V= \?_>R=i9?.?6=W?@?_jQ>Ir9?.?a=zA? ?^> (W?>t?Q>W?@?_jQ>'mA?3?ā^>P?=a>>#oA?.?C^> '?5?|>P?5_>T>P?*>Q>'?έ5?C>>&?95?>(?52?ʑ>%F?<>R>p5F?Y>R >-I?22?/Ӽ>0?> ?>?2?>S?;?>[0?>?[0?>?XJ?v;?>C?>* ?NR?;?4+>ĸ ?B'??Z?i>??}>?̬ ?B?? ?x>$/?% ?-'??>e5?H? ?3/? ?U>/?%>?5?B?Q>^>[B?|>5?'?>u2?.; ?oQ>.>4GB?C>>SB?><2?B ?P>5A>O?>a2?S ?.>JhB?U?qj>{>RO?

G>oP?~>bB??k>q >Y?>uB??21>>2?1?7k>zA>SsY?Dk>$>}Y?1>Ȧ2?/1?=1>*P_?1>2?1?R={B? %?\4=L>A_?=X$>rM_?=iB? %?:>Ma?=iB? %?uDf2?&R7?:>Ma?l :>Wa?>F2?_7?6罜 >5u_?>F2?K7?Z)yB?u%?5>>8g_?l93>Ii_?bvB?%?VOg)=>Y?bvB?%?I2?:0?'Rg3>3Y?'Rg3>3Y?I%2?=0? 4>OP?I2?:0?C~uB?? 4>OP?ᒫ>\P?~{]B??ȶ>`C?~nB?I?x곾I;??N>DTC?ᾃ>xVC?޳K;?H?m?'?ao?J'?/?y?r@!>'?\!p\>;#?/?*?W.Z>; ?n/?݂?Z!/5?4>M.>< ?.i>< ?Q!?a4>o@8>>f!&?>>r}5?>;h@D>&>E[@ry>7>ek=5?z>Le>>~[5?>2B*?> M>m>M>ɴ>2*?؅>?0V>tKs>2*?n>N30?;>-V>s>,V>gis>|O3Ƙ0?;>Zr?>E3Ϣ0?y};>bGe?ѳ=FZ)?>Z|?>G|?г=N]?d>G2F?>>bQ?>Z>nQ?i>gf>CF?>>D?>.?>F?S>!>0?T>?`D?,F>'?תD?U>?0?Cc>? ?>I? ?>/?^>!>@GB?>>R?m>ۢ>xR?Ci>>XB?b>L΢>$^?%9>^>UB?D>QC>O?:_>> &^?>Iߢ>V#^?qj>{>RO?H>θ>i?A>$>nO?j>/>-|Y?u>Ģ> i?ԇ>e>h??9k>j>gY? >J>o?k>>Y?=>p[_?u>>o?>Ϣ>go?=X$>rM_?<Ϣ>r?=1>*P_? :a>Pa?Z<â>r?r? :)(>Ia?ӽޢ>Aq?:>Ma?s6X$>6n_?r]ӽ%Ӣ>vDq?ӽ>A?q?B>\d_?fܢ>?k?Z7>1|_?q:g7>Y?Kf>wk?ofxĢ>k?kg1>Y?iϢ>1b?Og#>Y?&> WP?Ţ>`5b?!i>4b?;^>[P?ە龿Ţ>T?jXf>FP?bᾙ>SLC?+`:>ԽT?Q>ֺT?>LC?x>L@?ȶ>`C?V?!'?Oñ>a@?/>WI@?}?'?$Gj>0?h?|'?E!~>E-?$q5>0?&$D>(0?cO!>?.>*5 ?ao@R>>RM>ִ>]_>*!>u_>=>M[>l>b.Vl>7s>#`? w>t=n?g=n?gr?g]>o>h?O>=h?(>q=r?a]>6n>%\?.p>,z>\?>)z>r?]>n>7Y?>>5r?~]>yo>`??J>kC>Y?[h>a>Y?O>> `?8 J>6>R{D?`> >D?>>r`?OI>{>>O:? >0v ?`? YJ>FB>C?D>?>q:?>*p ?^:?4>w ?AC?IHC>?%?>V&?C?ДC>?x/?f\>,C?ũ%?>z&?%?<>&?:6?I]>C?z?7m>M7??o>7?b0?~]> C?W<>>׋J?11?h\>.C?>f>b?V>> J?QX>D>J?>7g>b?c>fH>T?ܨ>T>T?>Pg>qb?1v>GP>+Ab?>Sg>̰b?v:>P!J>v?v>Q>Bb?1v>GP>+Ab?:>_ J>Xv?=ma>!Uc?=b>Uc?v:>P!J>v?d;@\>j?w:>J>v?@ȺC>8{?d;@\>j?d;@\>j?ܙC>7{?;>h?*ɺ|}C>L9{?n]\>r?J/>`h? >h?og]>>r?'z Q>-\?q*zF>0\?og]>>r?,M> Y?n\> r?v 龱g>:u\?O>Y?,+>Y?n+mg>:r\?,>iD?꾣>eD?6d#h>Sc\?Knv>:?@龬g>Br\?_)g>6? ]>~:?a i>ܥ:?>) g>h6?5@$`>c?G$G> d?)g> 6?x9B>?)Rg>6?pQ I> ?m9o>?{9>ْ?0RUI>r ?GI >F>tH>> R jI>j ?W>>Q5XJ>5y ?NjgC>5>eW/u>M>ֲW܎>>Rj=4D> [>#cN>Rp>P]jC>:s>xs9>Q*>>c(>;p>6-c>pp>Ax:>P*> dŁ>=cr>.= xA;>Ѵ*>Oq+>=jx.9> *>Sr,=VA.rqd>Ἆ=?MT?&=6!`?>xt=q#?oC?='%`?q>yt=h?,>p=#?ߦC?;7=Ht#?HC?j=h?8>t=!3?61?4>i?ױ>Ȥ=B\?/>Cz>Q3?1?4>L3?1?$5>A\?>g\z>49!?;?8>}*\?T>Ez> Y?M>,>c!?y;?,>Y!?s;?*> Y?M>,>:?ދ:?N> Y?M>,>D{D?S>>?:?]>M?)r:?v>LD?>>N?1?>qD?>>v:?>h ?,?g;1?>A:?'1?>|:?gY>Pu ?>Dy;?n>jy:?D]>w ?%?`>&?>Dy;?n>q>~;?_>%?>@&?]Q>%1?[?.%?>&?՟?>7?S>1?j?Y8>-1???R>b7?p>x;???f>Z7?-e>M>͠J?w>];??|>&w;?U?K>zQ>9J?Fo>'1? )?7I>RB>J?-٨>O>T?Fo>'1? )?`>q,1?H)?'Ϩ>:a>PT?k4>~;?zX(?ۨ>uE>lT?v>HE>~Cb?4>Vq;?xe(?ļ4>`x;?[_(?v>\>>@b?7=,1?:6?uv>A>SFb?=Q>Yc?k=%1?.6?7==&1?6?=G>T\c?9q;?@\.?=l>Sc?g;l>* j?)9};?N.?K9z;?Q.?c;5g>? j?k'1?I7?Ke;w> j?~>'h?k.1?ه7?៫x'1?7?2G>h?4p;?8r(? >h?zR>.\?!4t;?n(?J4#w;?Yk(?5*z`>W)\?r'1?B+?'z Q>-\?3[]> Y?r'1?B+?xp$1?+?ҍZ> Y?/r;?& ?3[]> Y?e^>yD?/r;?& ?/ux;? ?Pm>tD?ܾ^-1?C9?KV>}D? R>i:?ܾS'1??@?ܾ61?-? ox>ޠ:?HTrA?k> 6>:?\F$+>o?uZA?>CzIWA?>E$>u?&aC?>y?$R>h??k9WO>Ŗ?MtC?>nC?K>?k9WO>Ŗ?&1?o>?k9WO>Ŗ?GP>>(1?r>u'1?[d> GXQ>> !r;?>hGob>>Wg>Й> ~;?˔> Ƅ;?o>W>> 1:1?QI>WJB>>1c>2p>91G 1?FI>111?I>*c'>mp>"0(m??4='.c>9p>` d+>=6(ވ??Yi=K(v??6=hdL>o=8S0?0I=df>w=Ejq>a='8K0?I=t >͞}?V<?MT?&=oJ>z? =6?RT?K&=\{#?[C?=J>z?j =J>z?!=z#?C?9=>&)i?/ >#?C?&=23?&1? 4>>"i?ȹ >3?<1?4>} ?;?t>R>/i? >y>i?8 >P!?0;?Z9>>l??>u!?;?&>?:?@> >]!l?|?>M>#!l?S?>Q?m:?h>U>n?ves>?c:?)>$?F1?>">n?r>C9?^-1?>q>~;?_>%X>9n?@s>g=>n?s>>;?C>,B>Yq?H>>{;?d>]Q>%1?[?EB>Oq?q>hE>31??>6~;??gB>Vq?J>B>&Rq?Ts>p>x;??=Nq?T>*>y;? ?)o>'.1?])?t=Pq?> o>41?)?x4>;?P(?=Tq?Ġ>=Lq?$>ļ4>`x;?[_(?4>N;?C(?)l=G1?6?<[q?T>;=61?6?jH9 ;?G.?o<Iq?>I9q;?@\.?sGq?e>5H9X;?A.?h81?'~7?"sTq?>#.1?t7?R!4Kz;?g(?sRq?">ҳsKq?I>"4m;?`u(?do? >!4t;?n(?r 1?+? fo?>rp:1?O+?w0;??J7o?ɡ>c o?>a0l;?A?;g?g>Kz;??wܾ,1?+?g?%>ܾi+1?7??S3kA?> {g?}?>g?ge>\aA?>߬ R{?=HTrA?k>wxC?>&,V{?==T{?6j=oC? >Al?r> .C?~>:1?I>$sl?>$1?Za> !v;?Ȇ>~NYl?=>>l?KU>!y;?>"el?G=! j;?G>11?=I>H\l?=1'1?I>7(Q??\5=T.cl??=kl?)=,(??=~z }v?z?[=X> i?= >Q=eV~?³j=>+i? >>'l?a?>/G=_~?@h=>-l??><>n?r>=`~?-jg==Z~?ik=q>pn?۷s> ?mH>•n?)s>B>hSq?#c>գ^?Wh?fB>HOq?~>k? B>Uq?W>=dUq?Š>ykC?b5zr?=Lq?$>:?\=Rq?[Р>o:K?ج:?\<Kq?Ct>h94<?WYHMsUq?>~84ZS<?K&"sTq?>J7o?ɡ>XS<+?AW(YS<=?&iLo?>K.;,?C^=J7o?ɡ>&g?>;-?Y=,:/?ͼ=xg?e>_ [{?q5=e^X{?=l?">˶?6<2l?V>kl?)=m?<+N?n< #Afl?=Ғyv?}?T<0nw?N.r >}?V<J>z?j =w?v.Tw?|.J>z?j =Y罄~?;J>z?j =F=U^~?i=9~?/< 罨~?^k<{=q^~??h=|?1Ľ_ E|?ýF=U^~?i=գ^?WZS<?K&-;+?v=o=|?a=|?m&;-?Y=F>ex?>.;,?*=0vT{?=IF>ix?IF>ix?0vT{?=y>}?U_>}?6VvU{?k=ZK?L<Zj?~w?LTw?|.Y罄~?; DϾ'f? AϾ_f? I ~?5l?XS<+?AW( =|? 8<>2l?Óh<>. l?뭾=v|?:d>d?.=>e?]\=|?{rF>=kx?YF>xlx?]_,>T}?^fUgR>Sf?43?>̣f?~3>%}?ȠV>Wl?lP>ۅ}?Vö?<->2Jl? >wRl?l+>?_<~>Dw?*K[H? 7MeaSo?5P70?uϽ|YNo?Tw?|.7Ϗ0?AϽ70?JϽiw?$.>803?8w?.v3Ͼٟf? .0I3?8903?¸8NϾĚf?Z ɶ-c*? ɶ-c*? DϾ'f? 5?U)Ͼ+f? i?m85?66+5? 嬾i? [m2?v來m2?侺i?[mt;?^ˬi?@m9}ϩl?;?o;?'| }l?5W3#?(p#?nX}l?˽_o[B?wH`}El?z$Vm?MjtB?-khoB?5u$dm?z2?S*Z2?*lt$Om?kՊ,tB?P $[m?hm? i,nB?h A,zB?8 Jm?6պ禽2? 6ꦽ2?J&69K'm?aöѸtB?[&9K'm?aOP5l?>O5?UF&#>>5?Y&.i<>P'l?ĭ >̌*?!>Ӭ*?d!P<>6l?wn>=0?WT6<>0l?]I>e?Id>:0?\U>0?U0>Ze??~<? ?U<?[ U>e?v< ?8?پW> e?ƥF>bx?D; ?p8?پ< ?r8?гپF>cx?-+?:?fF>ex?Ay>f?(3?:?fU? :?H[>f?e3H;?A?1Q;?5?3yu>f?3RL3?50?l};S>f?38>uGl?Қ&U3?W0?;(b3?"0?;c>>l?՚G?)j?wG?Ι? ӳ>Wl?l'"?]E? DI>El?l>w?J)K"?@E?  =IP;?q,?%=ug?Ծb>Pp?Mʚb>H|?L$=#g?LԾ{>6??&rV]? USƦHv?N5M70?yϽ \_>R \_>R70?AuϽY`>eY7~0?ϽH03?8YE>YY`>eY:<0O3?8P>r/)03?8(-*?IP>0P>0(-*?IeDM>bݾa-f*? 5?mDa>}ݾoD.d>sݾ5?$6B>x5?鱾2?E#6>/h6*>%2?-F>u$U2? ;?Ȱjk>R>$;?Զ  9n>Iu1(l;?a`#? U>|1 {>u16I#?C龘>SB})#?˘?d_B??m(>VBE=>tbB]B?I"Np >O$mB?3L2?݊*\%>OP>PPr2?w*k>>ܒYq2?w*A,zB?8 4kK>pYkq >Y,bB? 5サ>}V_,hB? X2?%)62 >S_5サ>}V_ꦽ2?E36f >Ta禽V2? #6öѸtB?[& )(>Iaf >TaѸbB?h&=>_öѸtB?[& =IP;?q,K=>_=>8_ =C;?,Ab>i?VMb>]?M >y5?^&t>L>gQ>Kf>lQ>5?P&o>>@"> 5?.E&( >k*?!>/>@6> >@f>J*?$! ?>2C>*?j!`>0?ia?~>2?>2b>C0?O?? z>+0?gd? ? ?t?% 3??; "?6?, /?w> ?B'?ĸ ; ?p8?پ/?R>Q N/?nn> r5 ?mx8?ٲپh??>S3 ?8?Xپ.?:?`|??|>?9? W/pL?>@?9?d];?!?`MliL?~>~eL?>W;?.?m3myT??Kx+\;?&??Z3?0?L;T?j{?xT?7|?fxUY3?0?R};hZ?|?u53?,0?;G?؝?1гZ?3?Z?|?QG?q?0ҳSV]??gGG?$?ӳ"?LE? !L]??~ﰼY`>eYPX>J`>n7ߌ`>'FPZ>xءyD`>UݾtDb>dݾ-6X>?>#?>#*6">G|0ݢ>њ&$6>`>3o0Oޢ>@&}0>&>;) }:>Y|1/ y>1nwM>Q`BUQĢ>RUQĢ>R m>bBfþ>q-^*龗<>xNBy4s>]OSþS,>'!^}þŢ>*^s_;>hO9⇾;>iiC4>Onku%>~YZϢ>i ևU> i6k>Y%>!o k >Yu>(W_!>oӧ>*oP5v>O_Zâ>r88P>6R_>Ma¨>r識â>r>Ma?=>Iqf >Ta=>_=>Oq=¢>Eq=v>_Lol>O>dh=>_Ԁb>;b?MHWl>ѱ>hpl>б>hib>Xd?M#>6>ab>q? M>p>Q>Q>Ha>gy>a&>>fQ!>+!>'U>B=>Q}>>E@>ᶢ>U>e¢>ڒU#>>@}?y>2۰/?&_> q??>Q?N>Q?N>t??=>IgL?ɨ>wAMfVc}ףmv}CeE4V}Eü#mw;m:xMU}'ļ˲m|E4V}Eü!\$}ݼtmy!\$}6 }?uݼtmy(Ym[}7 h}GtIZmǩBO }VvHU}ߜf}mCXmLL| =r ~­Owi=&} )>|mG%"xi='} 8=ee}a3\)>jm@*>vmbIi=3`}h٭~>m7=d} g,=*&}~>TmڌPù=A%}(2=Ec}Eǽ~>$m匾~>7mp 1=b}ǽ{>m?N=d}ǽ=&}Vo>Ͼmd;N=%}0>b}*k|}>mpN|>UmN>b}Zt>n!0>b}*kd >$}zi>~nȐ >s$};i4h>@}G>nCWt>n!q>}q>BnNhN>}N>tH}zd>tHnC5Md>tHnC5MN>tH}z,>J!tP>G}z>}Ce;>itBO mƼ=.{,ZBG=(\!bH=30\n=a1{'B*>|mO$M<V>$5'=0\|4)>~mW>W'5{'>y15k'*>nm; >/-!G><.-B!*>nm;{>8r )>mLLɒ~>fm8 x>&8 >8 ,~>m5*?.-m8?"-n~>m' ?$8dؾ~>7mp {>m?N ?O8پ!# ?8nؾR>mNoN/$?#-$?C-<ݷ/=>m#NGZ#?8|>UmNt>n!n#?L8xo#?8L> nF6?Q)-> 9,6? -"9G>nw0?_7ɱO>and>tHnC5Mwb0?7}v0?47Z>X;nM#?DyE6>(CnX6M͙>tM #? E=D6*rs]BZRCF$l,TY\hϾؽٱC9$Sjh3L5X*:hՋоؽWhо4ؽ34x Gekyg35O$*k98,efyLe\y}+88XҾ!*88r!-5-$ XҾ/XҾ!;--$N~ﺾ6--`3m7 NNg [r71+;S[r715 86ؾ";WΗ;b?t4 8(ؾe'8Ҿ{"E< 8aQؾ 0-8mg'ӤҾ2"d'Ҿ&"9B-m,C=u#-^2>ھt7 %(=c뾾 =,ھ>7 6kӾ?Hھj7' 2H58#*ؿҾgTH4RҾ?KHG(8᪾}[88iw -9/鳾*[x[?xJ"-#5/~ҾPp`iw -9/jP<:s7<,[~ҾBs`~mҾq`jP<:s7<,@ﺾ0lP:e=u2`5V>w$g7$:ey>8e8V>$J~<>>Ҿ,XV>w$g<>h,5s'o/>?ҾX>>Ҿ,XÈ>3.5n'i>&5kz'x>/#-J"M> IHMi>*-!hJ ?Ҿ-#;>!-!>8 C ? Ҿ/;hJ ?Ҿ-#;׉>8 x(? )2q>8! ?)1-Kv'?- )x(? )-?3+-1p.=?b|+?#-|" ?8پ"*=?J<.=?T!# ?8nؾ?KH?RҾ4n ?t87پ!$?F+-,2DH?Ҿ5AᆭBH? Ӿ&%$?6-iW[?߾곾ߨ$?v-#?H86k[?ThI[? w:#?˥8{`?NҾ~ X#?/8 56?A-9^`?Ӿ~0h`?Ҿs~6?6- 9,l?%& 6?!-l#9n0?.7T忽4l?YT:l?6ߺSv0?472e?W8x b0?s7#?nEC6%e?8'~8x? ,=B\sȚ]!wMC>$;Vs 𚾯]7hĖоؽw> ;ChZaоؽ5e¾y!w >I;&w=; Deu,ybeSBɾ@eȄyQXҾT/9_eSG)ɾ XIҾ"\N$^[e4bTɾ9_eSG)ɾNߺr\NK;8dNr" ;|Z=GK93KK,8PF;pc'?i};;nV_'RҾ("'+?;a^'ҾLJ"r='b?b;'b?b;v#=dx龝_ \e!=:DҾSHfW_\+24Ҿ!IHg䷾`[Q߽_R\_\x[o-T+.sӑa[P~Ҿv`hoS2s~mҾq`@ﺾ0l4lo.T/sgoT1sX຾4l:b<X຾4lף;&<#xm:b<:Jv`<;gGum:>? w;gGumF=Ҿg:>? weH=Ҿg}y>D?e2:>>% w:>{>M!w}y>D?e%=>W_Xc4y>,ZIey>>}ҾnXH>^qc<>ڈҾ&XZ>g NMF>_,cV>__jc.i>i?IM&? SCJ_>bsEM B ?Ҿ-;?S9C; ?Ҿ~';'?!C) }?ETC ?SMC^(?pź)UTMZH?}Ҿ=Qk[?BB`?Nu>uy`??⾊[?mr(s?pTkoi[?.`?28Ҿw~?s?Ro i`?Ҿ~/l?~"V.s?GTjo1s?Tgo6l?=W?V`e<`I:o1l? |X%e?8'~8x?Hv`MfVc<>}֣;>Cmpv=>}Ce;M>U}<#>mw=ת>mm97x=.4>V}ݛ<<>wmD?>M>U}#}P=%>vm >>>%}{=\>d}p= >+|m >$>hum>>>wb}q= j> mW>>sd}Hpp=%>%}(=\>mrW>4>W$}p`==b}(#=k>mW> j> mW>{=kb}=Ev>m>=b}(#==$}=`v>m>=#}==a}=`v>m>Iv>mn>EƩ=a}%=> *nJs>=rc}y(==%}>>(0nK>=)}>94=y}=Ȗ>:n>|>4n<>Q;4=,}=#=5{<@>/:4=}=#=y0{7UA>b<~z=Z^m>b< ~=l'}"D>/m`\>u&}]>}>G^mw\>0*mw>꯶}F>|:νɂm>8ܵ}>,T}S >}rνym>}oν|m>B-OV} >1m>,V} >{i$} >1mӵ>i&}v >ie}g=`1mŽ>1mӵ>b}=B^p>a}+6=ܵA}[=#^,p%>ڵ3@}m=|[~j=^p^>#^,p%>Hp~=[=}y>Ⱥ ~Ϫ=rγXm~r=V=ƀy> l~ =xϽK~x`==yd>=h~yǜ>Ͻ1K~w`=Ťp=Ͻ1K~w`=5};R=Ф p=}R=&E};=Lp= p=&E};=NUnC=zpF}=NtH}z>,nb>+o#=o1{;A>D=4\?XG=+\~?#=C/{~nA>`m歼>2^ pi>=xy>Ͼ[2&>Ͼ{[bM>C=dy>!^Mf>}=yrN>hq0=^f>C?_$_S=f>!eT2` fEm>w=n3?V4W=u3?@4h=#>mw=*?88>>mcw=%>vm >Q*??88>R*?88>@>qm%>5-?r!-$>"-?e6-> >+|m >=?F8ݯ>g?>pomX>>mFW>u?8>?8Ư>\>mrW>?5-Y>?5-Y>h>ɼmpW>>*83d>׃>۰mW>v>mɐ>>8w>>8r>av>m뗐>o>/-y?o>/-y?zv>6m>>¿8?wv>m֐>Q>O#nQ>>8e0?>i8 ?>3n;>Gx>(-./?Gx>(-./?>(0nK>=>O{2JG1?>?$n>F=#\?ٿ=>b2mb1?ɿ=>u2N1?YF=6\!?s=t$B?js=h$ B?D=4\?{r;+5K4?E=/\Ė?Z^m>{r;+5K4?pwr;M<54?x`mGl>}ٽ:-:?(}ٽT--:?o1m>QZ5Fz7,?Z^m>9νQ{m>Z5s7\,?[5`7,?νom Q>!L84|#?|:νɂm>a1m">L8U#?YB8~b#?2m˨>}'-!?<-X!?1m>sվ9j ?1msШ>^;p>#$վ9 ?bվ9} ?B^p>O{5>^&p>$о*[jv>`5>HS5ٕ>)Ͼ[P>5$>. $>Ͼ[]A>".ڻ>KϾ[h>x9^{f>"-=>D"-t>SJ^kf>26T$=>6C$|>Kྭ^t2f>,{6>> I̋^f>ܤ pa=,>6?>A,6?>Ф p=0P8=1Ѥp5=垺fn0`C=5 0UQ8]=0P8=nC=# E5G6=垺fn0`C=͙tM<# E5=hs?Cy_=C?[$n.T=Oh?Z+оx=C?$S=n3?4`==h?|о2==h?|о2=n3?4`=3e?Ӿay>.3?34} =*?68m8>Ie?,Z4y>N>e?:ky>*?88>WX?Ҿ_>*?e8e8>1-?q$-b'>X?"Ҿ->.X?\Ҿ@1>;-?-$>~CM?]>.-?(-$>?8>==M?*\]> BM?5N>L?N8ޯ>*;?ҾD ??8 >?(->,#;?ҾgJ ?0;?Ҿ$Q ? ?-!>R'? w(?N?$&->>8g>}G'?˭(?Q'?((?>ζ8>?Ҿl6?>8>b>"-82??XҾ"6??SҾ|6?z>W-/?P>wAN?w_>" -|6?>8\)?:>hIN?> ƾzq8?+>cҾ0V?>8\)?0x>-+B/?Ӹ>Ҿ=V?+>cҾ0V??x>J"-#5/?#r>ϭ#e?i>w -9/?l=>tr2R1?$q>Le?r>%e?|=>gq2Q1?Q>Ҿ,f?Կ=>h2[1?r=\$B?y>Ҿbf?Bz>dҾJf?s=t$B?iÒm?r=\$B?{r;d%54?fL3m?m?{r;|254?Fؽ)Ҿg?{r;d%54?ٽ"-B:?CؽdҾ$g?KDؽ Ҿg? ٽ0-$:?y7e?Wٽ3-:?Z53g7,?yu>Ae?yTҾX?Z5m7,?KV8en#?T/ҾQX?:ҾsX?Y8fi#?iBM??8h#? &-|!?M IHM?iBM?M!I-!?J #Ҿ,*;?r!5-!? վ9w ?< `Ҿx";?YO 4Ҿ';?<վ'9 ?n(G'?Mվz9 ?~M25>(>K'?s(4]UL'?p{5>7Ҿ?L5 >u1o$0>76Ҿ4? 74{ҾE?V9$2 >1PN"P><$>B"-]>>BN>".ڻ>c,VҾո>ɏ"G.>"&6$>n3VҾw> >VҾb>86}$> f?Ⱥy>6$ >1,^6>>eIYy>e%Lvy>v,}6>>jwPD=-6?>y30B=8 ƺ={k P=jmS:B=5 0UQ8]=,eI w= #0M8 = # E=D6={,e j8x=?u`Ns?n#\=+h?-о=Bw?u?;>)Lh?;оj=?e?sy>F$w?[=;>&w?=;> De?u,y>Xc?W_%=>$:e?7ty>xX?Ҿ/>c?_(H>VX?hҾ#>=M?P>c?_8=>K c?`8>-M?k@>^@?x`P?NM?AVu>>;?%cҾQ ?n@?^ b?x";?`Ҿ< ?F'?aι(?b@? `tU?c@?W_c?K'?ϐ(?p?tr_K?>'?쾾(?? Ӿ6??%`K??Ҿ6?*>BN??Z_K?H?'_K?>>BN?>in_h5j?>ǎFN? >7Ҿ9V?p>bW_8j?ո> Ҿ[9V?r>.Be?p>bW_8j?~߭>R_#6j?r>%e?=_{x?1r>ڒe?x>Ҿf?=_޺x?y>Ҿbf?fL3m?=&q_Bx?Ⱥ=q_׼x?fL3m?8'2_!Lv?fL3m?FؽҾg?'!_(Mv?AؽGҾg?ty7$:e?8'2_!Lv?9';_Mv?sy?e?;оp_c?ayӾ3e?/ҾxX? <о_c?o/?ҾX?|P?CM?9оӢ_c?RIо_c?ZAM?Y._8f@?5Nノ BM?? Ҿj&;?U_5h@?= Ҿw);?(ǾG'?U_Hi@?bo_rb@?(J'?޷K1_?P(hQQ'?7Ҿd?K_/?6Ҿ?:NWѾI>ٳK_W?KZ_?@Nն>IiET*>zHN}`>9VaҾg>Li8S9>QVA9Ҿ>yfjͥy>Xi S 9>BiT*>e Ky>ew{ fǺy>{k P= w;Zq,>\wn=6=,>jw=)=>SAbjGMx=a0e5ᾊ5x=~-=SVAj 9}xP=IcQ9R}>bp=IYc^{2>I9|^{2>I9|xP=Icj 9}Ȕ2>RH9|X>ôQ9Bg_>dpU?zH9Y. kI?:)?:?8@)?G:>8@kI? .:?Ȁ7:Om)?:~;@Y?7: Ol>Q9sAgl>Q9sAg?Ȁ7:O>bp|?:12.k?7-:<ʾr?90r?J91q+k?%/:TLʾU?J9) U?9) .k?7-:<ʾqI?i-:r?90{?Ѹ>|?:12{?Ѹ>}?:Q9>|?:12|?:12}?:Q9>~?d*Q=}H9H<{ѸNR4~-5̽Anvd:I6qrQ9T{Qk46qr8T~1I4̽{QLR4An I:ITrG:e q8pdxqQ9X T7:IG5Q: qMI:PhGGcQ: L'&Q:.AaP'Q:AiGG77: TJ:L'&Q:.A׾9hqMI:PQ9R}󆶾7:.oj 9}j 9}󆶾7:.o׾9h׾9h󆶾7:.oqMI:Pq?c:>s?H:>}?J9>s?!:>~?@(Q=}?:Q9>q?f:o>$U?: ?s?G:y>s?G:y>$U?: ?!J?:@0?k+?7:o>?J?4~:]4?B#?{:ӥD?f#?Vk:D?J?]f:7?xU?Է9r ?k+?7:o>?e#?: D?>IQL_?f#?Vk:D?v:>Q:s>l?>IQL_?"=k:~?>=J@w?5>:k:k?l?v:>Q:s>l?>=J@w?>5Q_? F6=k: ?i>IKAw?"=k:~?H9So?:'I:;~?48&|?4Q9&|?I:K<~?=(k:~?I:K<~?f5=k:X?=&k:~?4Q9&|?۾Q92Eg?e9So?UdG9z: ?FfI.:<?m):~;@?)G:>8@?cIb,:J ?Ȁ7:O?l)I:~;@?Y7: O?k۾6K9rAg?l۾Q9sAg?Ȁ7:O?еbJ9Po?|I:[{2>.k7-:<>rr9m>r9sy>q+k%/:TL>UI95 ?UI95 ?x,k:G>FfI':=?rr9m>{Ѹz>>|:a2>{Ѹz>>iQ9ج<|I:a2>|I:a2>iQ9ج<~1I4̽u:q?]? ?Ѹ?~7;s?'̛u:q?]~7;s?'̛>ĺX?su:q?]軧7q?}mѝĺؕX?z ,@o0?x9ĺX?w:%?I ,@o0?x9E9?II>vBh ,@o0?x9,h0? 9>>DhY>%>Dh(;^=bH/J>>t&J>>t(;=/Z` }(;=\Z<ξ%jY6 }Y6 }\Z<ξ%j(˻xՀTX<ξ"j]<&=|,6*˻{T(˻xՀT]<&=|,6g*;Vl$ `^@F=:w5>"nȸ>:dw B>#;=Vm! ?"nȸ>P=n>#;EV? ?~0=Qr,?g#;;Vn$ ?(;xՀT?]&=|,?]&=|,?6*;{T?ξ!%j?(;xՀT?Y<6 }?ξ!%j?׳%ξ4&j?Y<6 }?(˻=?/Z<` }?<&J>>t?(˻^=b?(˻^=b?H>t?`<4>vGh?*K5>Dh?<>>Dh? ,ѝ:ؕX?z?>:X?s?/<'gl?i> w?~>m,<hl??e>? Lw?^~> w?~>?8?x?8?8+#?HA?Ѹ;'#?5qA?Ѹ;'#?5qA ?II@Ջ????????Q9?Q9?Q9?.5??D&#?2A?;'#?5qA?;'#?5qA???k:?k:?k:?? ?yl ????? ?Imҋ? ?Ibዾć?Nq ?? ?yl ????RI?RI?RI?Ѹ?Ѹ?Ѹ?Ѹ?Ѹ7?>5/???;?b?D??d;??>?ѸP ?J?>;?b?D ?yl ?R7?>F5/???R7?>F5/??R7?>F5/????9?9?9?8R7?>F5/??8R7?>F5/????>7??&@?;?b?D???ѸR7?>F5/??ѸR7?>F5/?vJ ?jJ?>?Q ?'J?>?Ѹ?Ѹ?8O ?J?>?8?vJ ?jJ?>?>>ms)">>Lnk>kk>p_s>{2k>r_ڵ">!¤>n>>[jW>=+>hW"><ޤ>Enb3s>7>VMNs>D>V"> '?/=k>3 ?~79^> ?37">'?&=s>k)?">#e)?/"[">˞'?,=a>B?l>B?z >{a??r z>HE?羋}>ȐE? >a?cWg>W?g3 >da?0X>Ůq?Dg>W?g>W?iN>Pq?SB:>FZ?^;>|Z?k^F>q?8Ƕ>Dm?>Ůq?Da2>x?UR>Fm?&>Im?&F2>My?UHv>u?ʸQu>u?J< >y?"T4>> c?=\> c?=< >y?"T4>>Óa?r>< >y?"T4>f>;{m? >>a?O.r>l>Ôa?a+r>Dz>%|m?V >h">PN?C>8>N?3>>N}m?>ب>\O?,> >Pzm?>MH2>]?;>>@ZO?l>>GO?N>A|2>Tq]?>V >MB?x?>0fB?(]?#><%?o>?l>$?"?th>$?"?#>%?>?o> ?6)=?n>]~ ?.=?#>D%?>?s> >W?s>>fW?ӛ">>o?k>">U?Nw>>TU?">k4>o?>lb>&d?v>ua>+d? "> >oo?>o=s?l%?<=FC>‰< p?f*=ڇW>,

.>sK?:=†WK?:=†W >> sk>kk>p_>LQ>`WqMs><^>cVz?!c>433?b>@93qMs><^>cVk>_ ?7s>k)?"a>B?l8?#?#+Q? #?5a>B?ly>nE?p>Fm?Gt>u?~?N?;e?N?H.u>u?J;{> c?)=ʛ>XcO?#>$>0pB?R??M$?>>?HE$?XH>>ojB?Y?th>$?"?o> ?6)=?s>#>W??i>2??Wj> 2?s> ">1W?Vu>Ȳ>lU?>lb>&d?+>=8 s?!?/=թD?^!?A=SD?M,>== s?P>b= `?>o=s?a>ռfp?>fa=`??'=Wx>7k>q_3I?F>4Mh5I?>I0v>fik>cn_\-?<*>H/0v>fik>cn_ >U)>kfW-?B*> B/n-?>L/{>C>hnW?'>QH3K?/>HA3w> ?7A]R?>f[R?6>Ih> ?.7-??> ?S7>*R)?f"-?a?-?[?$>J)? #?#?_b?m#?C>E?L??L??\m>|E?4SQ?W?^_>E?O>hW?aQ?D?0_@SQ?^?d_֎>W?zpR;?'?BO>hW?P_>Y?sh^d;?'?8&B5P;?'?A)>, Z?2^x-?-$:?gm>Y?^>_6m?Sw-?:?{Nw-?:?{N⽨>F9m?M?N?=~?4N?kk>]c?s.=2L?P?t=L?D?|r=Uw>Tc?j= SQ?:?j>>ib? =>`a?',r>{bQ?!?> SQ?:?j>ɑ>~a?+r>IX;?'"?}>>~a?~r>_>0N?Z>q;?\["?C~>IX;?'"?}>!>AN?(>1}-?6$?ç>U>N?.B>е>PO?>-?$?>-?X$?ϵ>D>UO?'>.?9$?V>? $?e>>#? "?iR?#>v>GXR?>>`>v>h$?"?}-?>F?\>$?E"?0>Qr ?D0=?F-?f>< ?$-?_>s?#>s ?02=??B>A2?C?V>2?u>W>U?{ZR?m>8?TR?}n>2?Vu>Ȳ>lU?a-?iQ>4?>>U?>Aa>&d?-?Q>X4?ԉ-?LQ>t4?>|b>(d?!?/=թD?#o?E-?>>M/K?/>HA3]o?r!>.o?!>W)?\F>73`R?>>U쾮-?M??#?h\'o?>Ns/o?z>r8?#?#+L??-?|:?w?N?,o?SȲ>@o?N>?1N?%IL??Ls=0-?$?Sϵ>?#$?a>>p?>[>>p?:>E>>?;$?L>bZR?]>G>-?,>U ??LQ> 2?Lp?F>r>WJp?F>>?[>>2?%VR? en>3?-? P>4?!?)=!D?;lp?a=ݪ>gp?=>!?T=ҪD?2a?[#=B>^!?A=SD?>b= `?'a?Vm#=2> Di?i{r=νо:I?>:Bo?!>I9I?>ES-?>pD/o?#!>wo?l!>aR?[>DW^o?J>ssUR?_>k>x-??1o?`>ro?>VsL?`?? {s?я>^L?(?G \Q?SL?ҥ_s?A> {s?я>^@SQ?^?d_o?>6]Q?M?ی_];?f'?&Bho?%Ȳ>eV;?'?1Ax-?-$:?io?!>io?!>6L??Ls=mys?5>\=TL?!?,Ns=O`Q?'?&j>s?3>0=s?3>0=_Q?&?Ń>dp?7>@>>O`Q?'?&j>Ec;?5t"??}>p?7>?'>>[i;?@m"?}>Ҏ-?$?>dp?7>@>>dp?7>@>>~\R?}>-t>Lp?F>r>bZR?]>G>}-?>F?WJp?F>>Op?RZF>c>i_R?m>1?jp?= >YR?QGn>}1?-?Q>X4?gp?=>`{?ĺo9ao?S<;F2|?c<.ao?S<;Bi?i?q=оF2|?c<.1|?أb{?q5=k4{?G6=o4o?">}? cL=^}?K=i+o?!>o<}?q=09}?s=z7o?">o{?Y= o?l!>^o?J>ss&{?=# #{?P=A Mo?p݂>s$}?p=(iW}?z= jo?>s=}?=G}?N=Ԭp?H>1s3}?>=Dno?#u>ss?Z>A0-}?Z=D-}?'=QEbs?N>3}?d=BO}?K=`COs?A>:{?6>DOs?rv>ɷo?ҕ>σ{?U`6>BO{?6>BOo?ز>2}?L>B}?Ȝ>Dto?>,7}?><}?>˰o?м>(}?>D<o?>·s?ڙ>=,}?)=>FB|B< s?>>=}? > =}?Ī> =s?3>0=[{?0>9K=s?3>0=dp?7>@>>[{?0>9K={?:0>I=p?>E@>>}?3=T= }?cg=S=p?*>D>>>}?=%=?<}?.==dp?7>@>>${?1]>R >0 p?^>@>>Ip?F>>!{?K>Q >!{?K>Q >Ip?F>>}?Т=^Y=}?cg==Jp?F>:><}?S='>=}?=>Np?wF>,>%{?0=M5>Lp?F>r>hp?2R=>%{?0=M5>\!{?=5>5hp?X=Cڪ>}? =>}?c7 =>ip? =j><}?<>L<}?`I<>hp?2R=>Y|?;{2>-ip?=>'a?Vm#=2>Y|?;{2>>4Ys?)">餾Ln?O>kv_?^>7kw_?ڵ">!¤n?>nW?+>6fW?">P餾Tn?MNs>DV?MNs>DV?H">u'25=?k>3 ~7?0_> u7?ȝ">'#=?s>k)"?>#e)/"?n">')=?Os>EF?js>:E?">98c b>j_>@G>$`>wG!>I">(Ac =>J>sZ>>ZN>">?cH>y݄>(n'>>%n~> >L|拨=l>b={>b = >m|Q=z> iѹ >|W=>G |y> i>}iWK>q |S+>^J4OC>^j2>|#>?bU/j>G |>Ss.>3Fbi>Gbi>XsG> Tݽ>?Rs:N=E _1U>SFU>dT+=Q_V>GN>Gd="_>; N=E _1>Z=(>~; >~; >]=(>(% !>(% !>]=(u>)8>]=(B>3F~Lu>)8u>)8B>3F~L>[`LJ-D>WL>Ծ,e>[`LJڶ>@QPJ)>Ծe"U>+P'V>9}P>K!Ծve>#x&gA>'Ӿme1>_"q/> 6x)g>wox'g1>q>Dq ?TXU?>X[Ӽp??SĽrS?~>Լp? > s??OnŽR??OnŽR?>4Ys?[>Sikt_?B>AdW?AKs>NV??Vξ%A3?7?eξ;3?qMs><^cV?k>_ 7?>^)"?Ps>E??#C>?#'>cs>Ea?[> G|>>OZx>>(n >?jG( W>?CGD>W>>%n~>l>b=>Nx(g>`q@!?Ƚ2D@!?Ƚ2D>.\q'>Db`v>,tq4>+{b`I?}kŽR?_>jkq_?T?e ?DT?O>l ?BR>kq_?xu-?@]PM/?[>Sikt_? >U)kfW?|-?a6M/?'-?}Q/?> 2jW?%?$!ξyF3?q?~>ξ<3?> 7?t[R?d> RR?Aia>9^> 37?|-?Ϭ?v> 7?>H) #?Љ-?`_?+-?yb?>pM)#??~#Q>b?m#C>؃>G>aR?ClI>RR?˞>R>XG>Gw-?=~,>v>G}>>Z>-?e,>-?\,>>Z䬫>?˛GtW>?G7?W>~>b=L? = L?<=l>b=sI?;>ib4=>iѹrI?i;sI?;>iGE9?4/FC>~iHy>^u39?/ZE09?B/w>d^^NI?-xm^>K^M>:bj>I?SI?,jG>Hb=ix9?"5>4bJjQ>_S0-r9?"9?"W>mT;B?Z {U>dT+>Gk *B?( n>Gz徨>; ,B?Y. `!B? z>w; kH?]徛ھc>r; 7>s<!H?ھ|H?nBھ)>'. !29?Tܾ- ;>^!>z28߭9?&۾Һ 29?Tܾ- ;>:$8QWQ?xQ >%+8>Q,JJbZQ?`KSQ?5>j龲IJ:X;?h>Q,JJ{n>cPc;?틾:X;?hF>p8;PI-?PQ4Ka>9]P/> 6x)g-?QJ4ԉ-?LQt4>jxZ#g!?:ɽD ?9V;U??1ŽR?Lk?rt>k?=qp>?7ŽJR?MT? c ?\-?<*H/??a;ξc93?rmp?>hp?^=!>?HξK@3?YR?:b>-?a?"?#D>5Sp?jk>THp?+׃k>Q? #5>WR?>Y-?q,>?Go?S =o?Ek=?CGD>W>L?.=u-?P<4x!?MȽDp?Pԫp?9ǫ!?cȽD2a?[#B.!?NȽD>b`a? o#gBZk?V@qe>MT? c ?hp?^=!>T?3zc ?~-? IP/?hp?G.>kp?>t[R?d>Mp?I}k>/aR?c>-?Z[?Qp?Ζk>Vp?nk>LpR?9r>)o?= =RR?˞>Gw-?=~,>o?zl =Vo?#D=qL?= ܾ [Q?nr?0`r?O0<`JVQ?ډ/Wp?LƫYQ?zC^;?jp?oc;?틾S-?Q4p?FY|?;{2>Zk?V@qe>{?<3>{?;3>Zk?V@qe>y?,K+\>Zk?V@qe>kp?>Jy?K+\>y?MKZ+\>jp?e>I}?EL*=}?Ki+=kp?>=}?ꕽ>o<}?q0>kp?>&{?>ip?69>Jp?ǃek>%{?_꽟>${?'>Ip?׃k>$}?p(i=W}? jz=Mp?I}k>?<}?.=?<}?.=DOp?k>v%{? )=Ap?Lk>o? N={?*h=v%{? )=o?S =(}?_sK=}?i+K=Vo?#D==}?==<}?;=Vo?#D=(}?&9ZZs?}?QGo{}?XGPs?|r}?La,5}?t轴`gcs?w}?ŭLs?!t?qj%Jvy}?La3z}?ݰt?j J}?KoI}?VJs?k2&J:v}?\ܽt?ZMj%Jr?Ho0W_|}?Dyېܽy}?􁷽ܽr?0_}?ȇK꽵}?b1Jr?%1p^Ō{?Yc.r?U0_`p?eīɐ{? b.]{?Q$a.Gp?y7ķ}? ]S}?p?h츫=}?՚!L<}?`Ip?Fn"ǫr{? 7o9Gp?y7ķ'a?Vm#2{?񰻕V9_c94S_4SKH̾BWgF:KH̾BWgF:!=sxM?8>ByDT݆/ou>T݆/ou>do_M?OV1M?!=sdo_M?xM?Z繾B\m?I̾-Xg KH̾BWgF:VҼ=繾[m?8k۹W]m? *)h;?8 Z+)*;?hV*=hV*=S.=ssp, ~bmX佚)vu= v.C>K׾kDXOJh"?Т(zj;>|JQ"1?OJh"?K׾kDX|JQ"1?|JQ"1?sp, ~bo bR=vFC>sp, ~b߾.=td?sp, ~b̾v[g 5f4 5f4o blN b55J`4Sf4 5f4 5>̾ZgQ"5;55;55;5;55;55;555555lN b5555555555>̾ZgQ"f4 5f4 5KH̾BWgF:I̾-Xg 55{*v_h5555f]4SJ`4S5555f4 5f4 5lN b5555>̾ZgQ"555555555555 5f4 5f4o ba Db55555555555555555555555555mX佚)vuY/+vh55555555sp, ~b5555555555J`4Sf]4S55I̾-Xg KH̾BWgF:555555555555555555554(vt{*v_h55z㾚 blN b555555?do_M?55? 5f4? 5f4? 5f4?55?55?do_M?55?55?z;>;55?;55?;55?f4 5?f4 5?jҢz;>ѢVz;>55?T݆/ou>;55?;55?xM?do_M?55?ѹJg"y?55?55?͆r2oPu>Ά3ou>55?55?55?55?55?f4 5?f4 5?z];>55?55?do_M?55?55?55?55?55?55?55?55?55?54? 5f4?zc;>z;>55?55?54?7 M?54?xM? 5f4? 5f4?55?55?ѹJg"y?ѹJg"y?55?55?55?55?55?55?55?ѢVz;>5;5?5;5?5;5?55?55?55?55?55?55?55?55?͆r2oPu>͆r2oPu>55?do_M? mYM?55?55?55?55?ѹJg"y?Jye"?55?ѢVz;>z;>55?55?}?4>????}?4>??~?MO=}?4>?~?MO=??~?MO=??~?MO=D~?`=???????}?o>}?o>?????o}?7???8?8~?2Ľ??~?fĽ~?fĽ?????????????o}?7??}?4>}?o>?Ѹ?Ѹ???????8?8~?Y=~?MO=?sY=>`{?????????????????????o}?7o}?7???????????????????~?fĽ~?fĽ????o}?7}??????o}?7?~?fĽ??~?2Ľ????Ѹ?Ѹ?Ѹ?????????????????v?ۆ??v?ۆ??v?ۆ??y?jb??y?jby?jb???????v?ۆ??????????????????????????v?ۆ??v?ۆv?膾?y?jby?YLb?8?8?Ѹ?Ѹ?Ѹ??????v?ۆ????????????8?8?8??????????????v?ۆ>??v?ۆ>??v?ۆ>??{y?݃b>??y?jb>y?jb>???????v?ۆ>????????????????????????????Ѹ?Ѹv?ۆ>??v?ۆ>v?ۆ>?y?jb>{y?݃b>??v?ۆ>?????b>k:;q}QѸRIѸRIH>H7:{H>ak:%r}v>J9#o?Q:ѩO>`)>I`>ZH:tv>J9#ov>J9#o>ZH:tH>H7:{H>H7:{>ZH:tb>k:;q})>I`?Q:ѩOn#?c:vLEn#?c:vLE?Q:ѩOy-?Q:ѩObaE?I9A#y- v?wf:Æ^?~:\g?9ܾg?9ܾ^?:BgE?9$"BgE?9$"^?~:\|?7:uQ=pu?J9̎>z?4:Z>^?7:MQ=G?:^xk{?9Q9"+Gk{?9Q9"+G?V:I*v?hc:B?k:%?)f?:%>]?: ?]?:# ?,f?:L>pu?J9̎>pu?J9̎>)f?:%>?z?:[>3?7:l16?>H9h^?&?7;=S?&?7;=S?B?k:%?~3?sQ:k16?3?7:*6?B?k:%?]?: ?#C=cT~?>" ;u? = :7? = :7? >" ;Ƃu?E0>H;Et?4<>G;Ct? >" ;Ƃu?>H9h^? >" ;Ƃu?&?7;=S?>H9h^?b>k:;q}QѸRIѸRIH>H7:{b>k:;q}v>J9#o?Q:ѩO>`)>I`>ZH:tv>J9#ov>J9#o>ZH:tH>H7:{H>H7:{>ZH:tb>k:;q})>I`?Q:ѩOn#?c:vLE&#?&:FE?k:ѩOUv- v?wf:Æ^?:Zg?9ܾg?9ܾ^?M:BgE?9$" dE?%9 #^?M:y-g?9ܾk{?9Q9"+G v?wf:ÆG?:^x?7:uQ=z?4:Z>\?Q:MQ=1u?8K9>z?4:Z>^?7:MQ=?V:Ik{?9Q9"+Gk{?9Q9"+GG?:^x*v?hc:B?k:%?)f?:%>]?: ?]?: ?)f?:%>pu?J9̎>pu?J9̎>)f?:%>z?4:Z>3?7:l16?>H9h^?&?7;=S?&?7;=S?|B?6k:b%?~3?sQ:k16?3?Q:*6?B?k:%?]?: ? .=cW?>" ;u?" ;Ƃu?E0>H;Et?4<>G;Ct?># ;u?>H9h^? >" ;Ƃu?&?7;=S?>H9h^?Hak:%r}?-?Q:ѩO?baEI9A#?y<; >-? vwf:Æ>^~:\>g9>g9>^:> dE%9 #?BgE:$"?0^Л:>|k{9Q9"+G> vwf:Æ>G:^x<sQ:sQz4:Z7:uQ1u8K9z4:Z\Q:MQG:^xk{9Q9"+G>G:^xBk:%)f:%]: ]:# )f:%puJ9̎puJ9̎)f:%ྟz4:Z37:l16|:[3]ߖ#;Qߖ#;QBk:%37:l1637:*6Bk:%>] :y?;Z;qˁh: wˁh: w ^;q:46],;q˓#;Q:46]ˁh: wQRI9y?;Hak:%r}?-?Q:ѩO?baEI9A#?y<; >-? vwf:Æ>^:Z>g9>g9>^M:> dE%9 #?BgE9$"?^~:\>y< :>-?g9>k{9Q9"+G> vwf:Æ>G:^x<7:uQz4:ZsQ:sQ1u8K9z4:Z\Q:MQG:^xk{9Q9"+G>G:^x<*vhc:>Bk:%)f:%]: ]:# )f:%puJ9̎puJ9̎)f:%ྟz4:Z37:l16|:[3]ߖ#;Q[J;QBk:%37:l1637:*6Bk:%>] :y?;Z;qˁh: wˁh: w,;q:46] ^;q˓#;Q:46]ˁh: wQRI9y?; .=cW?_jNA;'?[:r?)[#:u?jNA;'?3k: 6?5uI9ꤎ> ekJ;Z>w:>w:> ekJ;Z>[:m?5uI9ꤎ>w!:_ >~b9#=w:>(:P/~b9#=pȴQYϱ}YѸ:bx6:wbx6:w}YѸ:(:P/}Ѹ ?~޷9=(:P/bx:&w b-:5pȴQYϱ.D;UQQ `@[.:(`@[.:(UQQ \b2,:@ b-:5UQQ pȴQYϱ!@+:d(J:hRp.8G;p.G;J:hR-N̹Q9_.j7:MuHQ9_=k:o=k:oHQ9_J:hR":o_H?-:f~{.j7:Mu.j7:Mu_H?-:f~{T27:w}/?x.:{ѸRIT27:w}T27:w}QRIRIr =! :o?>/;\t?. 0=t;.|?. 0=t;.|?>/;\t?dO:du? #;ݦU?k:k/Y?:.;t?k:-Y?p:u?:.;t? g#;U?<4.:F5?vk:*Y?vk:*Y?<4.:F5?B-;'? eH;ڴ>B}/;&?[:r?[:r?B-;'?<4.:F5?5uI9ꤎ> ekJ;Z>w:>w:> ekJ;Z>[:m?5uI9ꤎ>w!:_ > oH9=w:>!:AqN oH9=we:Dz^}I? :P^}I? H9T=!:AqN}}H we:DzgorQ`we:DzN}boJ:ZgorQ`.D;TTѸA`@[.:(`@[.:(TTѸAN}boJ:ZN}boJ:ZTTѸAgorQ`H@.:(J:hR.D;.D;J:hR,X/Q9=_@7:uHQ9_=k:o=k:oHQ9_J:hR=k:o_H?-:f~{}7:ѫu}7:ѫu_H?-:f~{T27:w}/?x.:{ѸRIT27:w}T27:w}QRIRI >7:}?t">̶Q:V|?Q:N|?LQ?՜D; uy?;y?;O>՜D; u&>^e;w?:!T>JcO>՜D; u>Jc&>^e;wO>՜D; u|)>Hc?:!T"?HsE?:!T:?:."?HsEm?ĺ9$N?I޺.?_?Q:_?Q:$N?I޺.?:?7:.:?:.$N?I޺.?"?HsEx?Be:o0m?~i뾾!_?Q: .m?Cĺg뾾x?Be:oD~?x?I:o?!:AqN|?i,'>?:P<|?i,'>D~??!:AqN<|?i,'>mv?:φ>e?PI9a>mv?:φ>pa?rJ:>e?PI9a>IG?,:} ?,e?G9sl>sHA?I:'?7EA? ,:^'?,e?G9sl>ma?H:С>dGG?r/: ?5EA?OG:\'?"?U8.E?5EA?OG:\'? ?+I:U?"?U8.E?>k:ϴv?>ͷQ9ob?̮>{.:Lp?̮>{.:Lp?>QQ9b? ?H:U? ?aK:U?>QQ9b?"?/8ҿE?̮>{.:Lp?">Q:N|?>k:ϴv?>k:ϴv?">Q:N|?>~7:}? >7:}?t">̶Q:V|?̶Q:V|?LQ?>/;\ty?;2F;>G,;td>:au ?>H;U?k:k/Y:>.;t?k:k/Yp>:u:>.;t ?g#;U<4?.:F5?vk:*Y?vk:*Y>4?:G5f??D;j)gxY?:f??D;j)^?O:l^?O:lf??D;j)>4?:G5:M~?H Iq? I%x?C~:"yr%x?C~:"yrIq? I֦^?I:Iq? IgxY?:֦^?I:%x?C~:"yr?:iG<8M~?G &p?Qñ>[~?rQ=bx?6:w>bx?6:w>(~?Q7=?:<(~?Q7=:M~?H ?:<bx?:&w> b?-:5>p?ȴQYϱ>.?8D;?U?QQ ?!@?+:d(?`@?[.:(?U?QQ ?\b?2,:@> b?-:5>U?QQ ?9p?йQӱ>H@?.:(??J:hR?.?D;?p.?G;??J:hR?-N>̹Q9_?H>7:fu?H>Q9_?>=k:o?>=k:o?-N>̹Q9_??J:hR?>Yk:6o?">Q:N|?>~7:u?>d}7:u?">Q:N|?>~7:}?{3>_ƺU|?֣#?uӚ> ѹt?{3>_ƺU|?uӚ> ѹt?h> y;+Cc?^ߚ>ѹt?&?,-2B?> y;|@c?>Q;w@c?&?x.2B?N?뺖;n7?D&?/d/B?p?Eh>1N?2;*3?zN?; 0?p?Eh>}?ף;:>7p?o>}?ף:}?ף;:>}?ף;:>}?ף:7p?o;}?ף:M?kHp?E;hp?E;hM?<&?j7:~GBM?kHu>[~r5c9&?I:MB8&?7:MB>xr7c > Q:&t>{r9cY=6DX>Q:(t>Q:(tw~Y=^*'>;}AX>e:l }?">w}?ǚ>ѹt?q>:p}?ǚ>ѹt? >y;Dc?uӚ> ѹt?&?x.2B?h> y;+Cc?> y;|@c?&?x.2B?1N?2;*3?D&?/d/B?p?Eh>1N?2;*3?zN?; 0?p?Eh>}?ף;:>7p?o>}?ף:}?ף;:>}?ף;:>}?ף:i?;tѾ}?ף:čJ?ڼAi?N};L(Ѿϥi?z;73ѾJ?~h?2Q;J\J?~">;fh?2Q;J\o>IfjBB> y;qY{h?2Q;J\h?2Q;J\jBB> y;qY{ W=a~y%>;|?|n>3dx?z>2:,m?|n>3dx? ?렉2W?z>2:,m?L>U:f)m? ?/W?+D?1.;j#? ?/W?h?-2>0D?W;o#?D?;V#?h?-2>1!}?D;>h?-2>~?ԻȽ("}?śD;>("}?śD;>r~?"ԻJȽp?E;hr~?"ԻJȽ1N?2*3p?E;hKp?k;1N?2*3 &?:),BN?뺖n7> y|@c&?x:.2B&?,:-2B> y|@c%>9Lth> y+Ccq>p}uӚ> 9tuӚ> 9tq>p}{X˽R~{3>_ƺU|?֣#?uӚ> ѹt?{3>_ƺU|?uӚ> ѹt?> y;|@c?^ߚ>ѹt?&?x.2B?> y;|@c?> y;|@c?&?x.2B?N?뺖;n7? &?),B?*p?A4>1N?2;*3?1N?2;*3?p?Eh>r~?";J=p?Eh>("}?śDr~?";J=~?;=1!}?Dh?-;2Ծ1!}?DD?-P#h?-;2Ծh?-;2Ծ0D?W猻o#P ?;*W+D?1.j#L>U޺f)m ?;-W ?;/Wz>2޺,mXn>0c;vx >{޺+m%>||n>3d;xQ􎾁7juNɾQqkH:tH:tNɾQqk :{ZdɾpQokc>1#+ :{Zv :Zc>1#+U]e;& xf>:+ rHCXU>`e;! U>`e;! rHCXR~;ؽ$rEX{B-7>~;ؽ~;ؽ{B-7>ٳfC;t>{,/7>=!+?IfJA;>fHF;8>g=꺖+?M;)Y?g=꺖+?QG9sp?;Y?;Y?ªGI9up?Xn0c;vx?1J9xp?#?Xn0c;vx?{X˽R~Xn0cvxªGIupXn0cvxǻYªGIupQ0ѹspMǻ)Yg=꺖;+Mǻ)YfHFػ8ݾg=꺖;+=;!+IfJAػݾ{,;/7ٳfCػtݾ~Ļ={B-;7{B-;7~Ļ=r^;ꍦ>R~Ļ=U>`e! ? rHCX;> rHCX;>U>`e! ?i>x:N+?U]e& ?v Z?c>:1#+?c>:1#+?v Z?dɾpQ9ok? {Z?Ht?NɾQ9qk?NɾQ9qk?Ht?Q􎾁7;ju? W=Б~Xn0cvxªGIupXn0cvxǻYªGIupªGIupǻYg=꺖;+Mǻ)YfHFػ8ݾg=꺖;+=;!+ٳfCػtݾ{,;/7ٳfCػtݾ~Ļ={B-;7{B-;7~Ļ=$rEX;>~Ļ=U>`e! ? rHCX;> rHCX;>U>`e! ?c>:1#+?U]e& ?v Z?c>:1#+?c>:1#+?v Z?dɾpQ9ok?eZ?Ht?NɾQ9qk?NɾQ9qk?Ht?Q􎾁7;ju?Y=^9pՃa;p]wՃa;p]wB7p6y;a`7pN1Yw86y;a` y;`Q1*W18S#;@U1Y 8{2o(kS#;Su#;'{2o(k~}#;4o_b|E_e+j+>}i#;}i#;b|E_e+j+>3CpQ:G>b|E_e+j+>B*9&?ApQ:ʰ>ApQ:ʰ>B*9&?DJ:ʜ#?DJ:ʜ#?B*9&?rDX;Z`?B9 &?ªGI9up?rDX;Z`?rDX;Z`?ªGI9up?Xn0c;vx?1J9xp?#?Xn0c;vx?(>nc{? >}?>`Ѻ@^u?(>nc{?>`Ѻ@^u?m&>;M:^?*>Ѻ[u?Sy+?:>?m&>;M:^?,>@;8^?Sy+?:>?Q`?S;r>|+?v~:>?g?Q>`?;h>Xg?Q>m?~7:B͈=`?;h>`?;h>,m?Q:r=m?FQ@͈m?FQ:@͈=`?h,m?Qrm?~7B͈`?hXg?Q;ؾg?Q;ؾ`?h|+?Ǚĺ>Q`?Sr,>@ջ8^Sy+?>Sy+?>m&>ԻM:^>`:@^um&>ԻM:^6+>wףd|>`:@^u>: `u6+>d|_>ͽr|">DVw?>kkh?dN>G:v?dN>G:v?>kkh?ie?d*xCY?ܫ>kJih?R?t:?ie?d*xCY?ge?0tCY?R?t:?jA?͸8'?lA?8²'?R?t:?"r?QТ>R?t:?<~?>H=r?SQĢ>r?SQĢ><~?>H=~?;pֽ~?p=r?SQ9Ģ<~?>;H׽<~?>;H׽r?SQ9ĢR?t;:"r?Q9ТjA?͸Ѹ'R?t;:jA?͸Ѹ'ge?0;tCYR?t;:R?t;:ie?d*;xCYޫ>Q:Lih`?0;eFYdN>Gv>k:kh>k:khdN>Gv종>OD;w종ODwh.;l;%Qt;%Qth.;l  ;FG ;lv;Ѹ.E U;Gv;Ѹ.Fa_e;-? ;GE U;GFa_e;-[n:eƺaae;c>/*K]nĜ:]nĜ:c>/*K>+,:=>+,]nĜĺ>c>/:*K=c>/:*K=]nĜĺ>aae>[neƺ>E UG?Fa_e->Fa_e->? ĻG?v;8.?#:Ϸ8.?E UG?5-l?  ĻFG?Ļ%Qt?h.l?h.l?Ļ%Qt?>L)ڒv?종ODwȾ\0kdNG:vdNG:v{Ⱦk\Ⱦ\0kKgIڤ\ڤ\KgIiAf:'lAb:'KK|p{r;KH{},)|p{r;~p}r;wl}c-hd}8t;d>d}8td~p}rw>l}c-;h>},;)>|p{r>KH;{?|p{r> pAe'?KK;?iAf'?:ڤ\?KgI;?KgI;?:ڤ\?Ⱦ\:0k?5:f\?dNGv?Ⱦ\:0k?{Ⱦ:k?dNGv?%F>;[w?sY=>`{?=eI~?|>Xsu?sY=>`{?|>Xsu?>m?눎>Wu?'?`hA?^>|m?^>|m?'?hA?i%?<B?7%?'?hA?h?>識hz>ng?c;>`h?¨qo>B?BX;p=g?x;>g?x;>B?BX;p=?+CXmp?+CX;mp=g?C^ؾB?BXpB?BXpg?xؾ`h?¨z;m'?;hA'?;hA^>;|m눎>W;u>;m">Fػ}|>X;su|>X;su">Fػ}W=%J~l[ yH;to)zN0;>x)zN0;>xH;toJt;>aSOo6CػJ3MZ `;^:aBZݦ;T:a6RԻR3 Gi' 6Gػ3Mpb֣G:O4(KFU=gk>Op1<.>gVk>Mpb֣(G!o<?d#6C;3?{G<?P󾱩=a?6R;R3?6C;J3?MZ `^:a?S;Oo?&Pb=a?)zd*>x?H;;to?H;;to?)zd*>x?l[< y?,ټ4A5?s> 8V|?)T>*5Z,?{3>_ƺU|?am>4%?VT>C$5 ,?T>d'5{,?o>4Ҷ%?>mg5?o>4Ҷ%??o5R>>mg5?>Em5 ?!?5#>@/"?4Ӣ>?N5>C*?5`lg>c6"?4>8"?]4ܢ>#*?5k6g>4?4 =*?5 g>$4?2l5P]4? 5=z4?4=14?"_5P.,?[4_$4?2l5PA#?n5y!,?$ 5_"0,?4 `L#?_50U ?4dtE#?k5wĭ>om5%J ? 5侊H ? 5 >Pm5J+> 5 ĭ>om5w>5^)87>5_A,>5 #w>w5 i)0>%4}0w>75l)(>6-.n0>t4y0,ټ4A5?> ǺV|? e&>4K5p/?#3>\NU|?z>|6'? h&>eN5/?&>M5?/?z>X6'?>ĵ4 <?z>k6ÿ'?H>9|?>4 C?>4A?a>9?k ?=4®>T>9?z"?j83> ?4ʔ>+ ?!4>\"?oc8F@>)?3⎄>)?3⎄>"?d834>2?6ԓ3?{5fw2?6<2?c6<-3?z57x?w)?=5G{I3?ԇ50w8?$y:Qg)?N5S{l)?3G5>|?St:`?37?yn:]aO>:Θ?D+7F>07~> :˭> s6HE&k>u6G&>:g7>z7,>":0 ?> M5B.7>r7,o緽-8p:M_f;n)V"6*\vc;) þ0t9~.=9U5e¾>y#]7 >Kn#7 >5>b\4\?5ܾ>̾]5?Ow4۽?Zd4?Գ̾W5?р4P)?y̾>5?X-2z5#.?&ӀO4JF)?р4P)?-2m5y/?*ټ4%5?X-2z5#.?#3>\NU|?,ټ45?o緽-8p: 7]8.P4j- c8 . :zQ4ޅ-"Q640-v:55p1"} y: `~:tѾZt15 hv1 `~:tѾ0%*3)' {:qѾT.n!;84<%93%׎3f]G.B.;3iz7[2817Q2bgQ.$;~3r+7^>>T.!;\3|9N\>6+7>>r+7^>>|9N\>d'@7>! 7>m9[>徕~8?9j>(̾L5?;x81?1~8=?p̾5A?Ѐ@4I)?׾̾|5z?F2m5/?߀u4R)?Ѐ@4I)?2fx5j.?,ټ4A5?t-2St5/?> ǺV|?<ټ4"5?U=E6T{3k{B˽~.r=G5q.{M=˽0~,57(.r=G5q.=9@5~w.j8v5=(}ɾ4 L>856(𾊚7ɾ5Eɾ5E𾊚7mU4wϾ𾊚7 l82Mk4Ͼl4łϾ!O82@"1\4!O82c09]-=%1+45,1dz40~92.= {21$6ϳ=lt2*6ϳ=0t9~.=|#-70>0t9~.=s_t8~B>:z#7{>,u#\7 >s_t8~B>4BA?l8hN>yp;j?4I?(4F?;Ȕ?oRK7*?;?@ZE<<-)?R/E7*?,RQ7**?YH,;== ]<>#(z75mt>w*(47mt>8 `W<>+@0">w0;>8 X<>վ 5u? [< >m>:0?Dվ5?%վ,5a?;ӊ:4?M5-?;ӊ:4?R9r-?Mz5-?ƅM5 -?TY9Ek-?07?/>03?p3> o2/2?%>j14)?p3> o2/2?>.5?'>.4)?'>y44)?[>o5?->5g&?[>o5? ?d5y>->5g&?a>4+? ?^5C>$?4L> ?k5n>/,?i5!S>v$?& 51>H$?51>׷,?qe5S>t4?5>( =׷,?qe5S>V+4?e5z{P4?t5=4?t5=+4?e5PC*? 5u].4?fb5P:/ ?35֧ D*?3 5Su*F*?5zu- ?c25⧾1?d5\- ?c25⧾D>5-s.?Mi5VU,? g5[_6>53&V>-M4E8'6>5,wG>5h-I>T42'UV>F4 ?'bG>5Ts-A5e- W=Б~>03?2;>46-?t>Q4:z*?H;>66-?(j>:@E ?t>Q4:z*?t> 4|*? v>:J ?>9d>>59> v>:J ?#?9WB>>:OB ?h%?!#6hي>?Z93>L?39L%>%?d$6C͊>4?4=;%?6ي>G4?65=>4?]46܊=4?4==4?5{>(,?5_:4?57jH#?h5y$,?5_#,?5_'G#?#g5υJ?]4ܾjH#?h5y>99ּJ?]4ܾ?4 ܾ>x9fD>W%6ǡΔ>9ws>=8&>6ZD>W%6ǡPhs>TE8 &FG>3v/iCG>,3/Ks>$=8'U=863Ks>_C8&{X˽R~U=E6T{3/0O3r3h2 2=Z4'p3 o2/2Q=`3q:^4'<^g4s'^g3& 4"x\^37a b4;쾒7Oᄋ(6-n 4.' 4b2쾷(6-n-wF3c -L3hc(/6 n2n68(6n#2# 7t=2w682(6Q827t=ʟ/31IC>#2# 7t= a9ޏ>B/ϻ3EC>)/r3IC> t9>?23-> x9ޏ>}%{8)?G/31>*38>}%{8)?/%?}%{8)?Z6 +?w/"%?z / %?Z6 +?d"@'/6?Z6 +?U?F= 8H0?d"@'/6?"/J03r3h2 2=Z4'r3h2 2绾5|)=Z4' I_4 'NŁ5#E5 #{껾l}5I,E5eʾ?5> :50@r5HXʾ*D4G{5":ʾ*C.6%Ȇ*T4Wzo*`M49{qB.6%b5}4S%I.6%+:Q>e5y4ܒe5y4ܒ"+:(>4R,-6tB>PH,7 B>+:>r9Y>+%:*>CV9>l9>_e9>9A>86?HC7?9>ǥ<8;?9d>5\'?ǥ<8;?ȥ08 I?O5cf'?0%4}0?5_'?@*zv?0#4t0?=U4U4?(>nc{?8V>+10?A(>Ġ{?s>D9Ҟ?y8V>2/?QV>810?>==9?V>4g ?>>(@9{??U;>Y>4 ?Y>4 ??R;>?T4)'>? 4 >E?oW;LJ>%q,?Wy8Y>(>?L;~>̡2?5֐=.w,?=r8X(>w,?s8>(>2?5)=L4?4U2?5,=1*?G9ay6M?4?4oL4?4*?9E6"?vm4*?9y6q>?<ѧ׾"?rx4⡾"?(u4<?;׾>}4X/ 9?s<׾=>]8#>T4;( >}4X/ >8 #g>0->0̗->8 #=$6(&2=>]8#_>ͽr|=*62=U4U4?F=80??>T3U0?˧F=M8_0?H>~8ɲ!??>D[3`O0??>T3U0?F>8!?>19?F>8!? ?d7D>>1y3?J>1i4? ?d7D>_%?k/1O>8?j7>/?#4=> %?:1@>&?-1!A>/?4=><7?vp2Gv;;/?&4@=>1?57?2;7?yz2s; 1?5>"?T4 1?5?5w˾>"?T4"?э4à?5˾>K5}7 "?k57&˾e>^5a>g4= ~>4> fL>_5Eр>4{W)5N>zn5YX-2>z5#.Ѐ>@4I)Ā>4Q)V*2>&q5K/γ= 4 42>q5/=EY4EY4γ= 4 4s> ?&}@=P`3~vi>=?jT=P`3~|w}i>_?-T>q{d?DG?y>@P?^?DG?y>@P?&5>N?L(?^? ?]?!?&? D?]>>#n?8&? D?]>{!>r'? c=>#n?8 g?\ Ӿ@i?Ѿn=_=,b}~ȽYi?mѾcn=,_e?eپ:>_=,b}~Ƚ>J"n?V|b!>Cz'?]= |!>y'?\=6/J??u>kp?q ?[? ?u>kp?&? D?]>l ?4W?!?})m_[">h|})m_z=8} [">h|[">h|z=8}  > fF>z=8} ew=zc"> > fF>ny]D<=k~Q>ny]D=|2=<=k~<=k~=|2==|2=mVQ/ ?ڰny]Dr?u=R(>X0߾}bQ>ny]D\N4?}rQ+?>f6>h>`s r? > fF>1v=X{c>h>`s r?^Rq?Z>E!?%>.?VҼ=繾[m?A!?(>.?4>K?zY?VҼ=繾[m?(Cj?/>Rlt?Q@q=1EW>!pnt?Bq=%!=sND>pi?Ѿn=zRq?>,_e?eپ:>QTq?-ܘ>ռXm?d[e? پݔ>nt?Bq=%g?Ҿ@!=sg?Ҿ@+=b}AȽ!=sun?1x=?j?d>)>߾ʀbAj?>^EW>!pa(> ߾bA!?(>.?DM4?DrP+?4>K?zY?Q4?%yrN+?>T>"r?4>K?zY?=Q!4~z=8} ѸnC z=8} })m_nC =|2=>q{d?mVQ/ ?>q{d?%C?mVQ/ ?r =R{W_jtƾ=R{W_⽁i6U1&ʽtjtƾF=P@?LQ$n=<g׾BQpnm=pt>=} g׾~嶽" Nab:g=h8{XUHb:g=JpUɖ0>8X[b\a.=/oĞ6(?JpUɖ0>/7(?l7גq"?hpԖ0>X`nTmt@*ÕѾ雾L\P@?} g׾~嶽 Ѿ3曾N\i>@g?z~ -<=0 *>S;?z~ -<=H%zS,=hU>C(>"V;? ཥv~x!=T!up@̎ɛxo}=TѾQ>Mxu3od؎R{W_/߽[w~Bf61#ʽ/߽[w~!up@̎ i61Zʽz~ -<=rzv>=%zr,=hU>rzv>=tjtƾF=%zr,=hU>xI=/TZ`Hm,ѾV>MZ`HmѾ雾L\Ѿ&a>tM/oĞ6(?i>@g?Nk7㒾?"?i>@g?6>Q;?Nk7㒾?"?nCgCg ? N4`Kb" Nah8{XUHKb#Q0q=/W0=p t=~0~0=]2

g? ӾJ{}V>i?Ѿn=|g? Ӿ4vۆ>Uwh8?{XUH=UwQf?:b8?X[=e>}'<g?׾B=}'p?t>ܽ} g?׾~=;r?e>\N4?}rQ+?e>} g?׾~=\N4?}rQ+?7H9&Ww ݇ھgyRf?cY3b݇ھgo?ꪾ3z=yRf?cY3b ཥv~?'>;^?^Rq?Z>'>;^?/G!?s>.?Tq?K>8K>nMA~>w@j?>MA~>whnt?q=%(Cj?/>R{}V>/߽[w~?qi?4Ѿn=/߽[w~?^Rq?Z>qi?4Ѿn=MA~>w: xj|nt?Bq=%: xj|g?Ҿ@nt?Bq=%xھfgK>nun?1x=K>nAj?>^-m?v='>;^?/r?A!?(>.?/r?DM4?DrP+?*@!?4>.?55?vۆ>Kb?>v>h8?{XUH=Kb?>}'55p? tܽ55??Ƽ4nżp? tܽ0? Uls?Hv; x+{%?jv{}V> x+{!w?} "=G~?ҽivۆ>l~?ҽQUwvۆ>~? @=~?O^e> ~?O}'e>|?)(BJ*>~?s>:@=;r?~?>@=e>[Gr?}~?ҽēzz?7<Uw Lzz?!z7<݇ھg&Ww ?H*=2B?> ? ཥv~?B? > ?'>;^? ཥv~?O?;>X3?;K>nG?lu`<yMA~>wK>n?Hv;?H*=}#>?H*=/߽[w~?{}V>A?;0? Uls88MA~>w0? Uls x+{MA~>w{z?b8+xھfg"O?m;>K>nxھfg2B?> ?|?U'B+>'>;^?|?U'B+>/r?'>;^??7474= w?˧}GZ=55?!w?S}3&=v>55?~?O.]B?h}ݢV?hbV(=zz7<>/oĞ6(?b\a.=ezy^<)/߽[w~7=;ɛxo}=T ཥv~!O;>+?A;<7 u>.g?w)^@g?"oݵ.e:wyng\_ezy`߽x~uT_@3;<lE!O;>+?/7(?"Om;>?i>@g?/oĞ6(?7474#wt}#nCgCg!wS}3&+" N-anh[oe}?lk^tq>lk^GB?^І?A?8s?vi=?jT?8s?|w?}i_?-T? ]?!1{[?!w#n?8>1{[?!w~&T'?0>=?#n?8>tjtƾF= i61ZʽiBdEo= i61ZʽJṘiBdEo=~q`wGxq [? q`wGx q[?Iwl 4W?!J"n?V>&W'?;=??0%X'?;=?980??lZABr+>= v.C>\4{T= v.C>͝t\4{T\4{T͝tn!oȶ͝tmVQ/ n!oȶCP}?})m_>6☾9st=})m_>!<\zv >ᘾsYu=ᘾsYu=W!][z >7h$K:ĕvW!][z >'Kc7h$K:ĕvѾ雾L\l$H:v!}YLt7h$K:ĕv',K-c!}YLtpd>Bc)>Kn7咾W"?>=v-C>l7גq"?~?{D޾|a?>=v-C>{$>W;?%zr,=hU>D.>q?%zr,=hU>߾.=td?D?:>q?!up@̎DѾX>MM׾`FXDѾX>MQW ?VE<׾iHXe6F1Vʽ!up@̎NRy!up@̎@׾mGXqR{H%zS,=hU>tjtƾF=߾b=d?@jhƾ^|=s侧c6m=s߾Y^=5d?Nk7㒾?"?6>Q;??kC޾ga?0 *>S;?D.>q??kC޾ga?,ѾV>MѾ!K\Q ?VѾ雾L\#}\NtQW ?V"Zs?W!][z >8nC ?!<\zv >})m_>nC ?7t潢5.#]~@:mVQ/ 2.}:%CmVQ/ z;?i680?[P ?i680?6☾9st=P?£4a{T1qiwGxn!oȶ1qiwGx~n!oȶFۙ>@f?埾O/?ǩ ?C>X?u=/? ?>(X?AϽ?X?u=X?u=X?uϽ?/?4 X?uϽ?Yϙ>f)>/?? R7?>F5/?X?uϽ?t?Nvj ?X?uϽ?ؙ>Ufk֟>t?Nvj ?&#?2AX?u=;?b?DX?u=ؙ>Uf?k֟=?n?!@ ?Ibዾ/? +#?HAs/?~ (X?A=+#?AO ?J?>/? ?>7?9>2/?s/?~ ?>(X?AϽ?7?>5/?ȉ?Dl ?͙>fן> ?IbዾBΙ>f˟>/?  ?Ibዾ;?b?D͙>f?ןP ?J?>ؙ>Uf?k֟/? ?>P ?J?>_4S( =`㾝 |b( =>}Jk b>?=??I<???I<??;ힼ??;ힼi<??Ά3ou>Q>ny]Dz;>8>ByDJנc辿z;>1v=X{c>>̾ZgQ"= v.C>>̾ZgQ"Y/+vh= v.C>?do_M??xM?Jz"??𓔾=*shV*=E<׾iHXhV*= Z+)*;@׾mGX Z+)*;?м}Ym?hV*=?ռXm?߾b=d?hV*=?>&v??W=~???W=~?Q>ny]D~(>J+߾6b)Kc=R(>X0߾}b!}YLtJwc$h>`s r?ew=zc">~?{D޾|a?1v=X{c>= v.C>~?{D޾|a?EW>!p!=sQW ?V!=sE<׾iHXQW ?VZ繾B\m?4>K?zY?߾.=td?4>K?zY?D?:>q?߾.=td?a(> ߾bEW>!p#}\NtEW>!pQ ?V#}\Nt4>K?zY?>T>"r?D.>q?>T>"r??kC޾ga?D.>q?=#v?膾>}v?膾y?jbѸ>}pJ9zy?܃b>>&v?v?>>&v?-IW=~?v?>?;ힼƷ8o}?7i<?o}?7~?2Ľi<?~?MO=>?=}?o>>?=?I<Ѹ}?o>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< =?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJ J J J J JJJJJJJJJJJJJJJJJJJ J!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLL L L L L LLLLLLLLLLLLLLLLLLL L!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMM M M M M MMMMMMMMMMMMMMMMMMM M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNN N N N N NNNNNNNNNNNNNNNNNNN N!N"N#N$N%N&N'N(N)N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOO O!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPP P P P P PPPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQQQQ Q!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;TT?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWW W W W W WWWWWWWWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyWzW{W|W}W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5X6X7X8X9X:X;XX?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;YY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[ [ [ [ [ [[[[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z[{[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^v^w^x^y^z^{^|^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~__________________________________________________________________________________________________________________________________````````` ` ` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`^`_```a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaa a a a a aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb b b b b bbbbbbbbbbbbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc c c c c ccccccccccccccccccc c!c"c#c$c%c&c'c(c)c*c+c,cx>p=x>$1h=x>p >x>$1h=x>$1h >x>p >X[(?*@l*? i 3?zl*? i K7?h73?z3?zK7?h7.d;? /!XK7?h7M;?֏hl.d;? /!XM;?֏hlT:??h@l5=.d;? /!X.d;? /!XT:??h@l5=WN:?O6=T:??h@l5=3?߉hn=WN:?O6=WN:?O6=3?߉hn= 3?=3?߉hn=Y(?^Yht= 3?= 3?=Y(?^Yht=T(?;2@H=)?$ >+?g >/86?=+?g >;?Og=/86?=/86?=;?Og=Z@?Zu=;?Og=vC?gS=Z@?Zu=Z@?Zu=vC?gS=E?6p0~)? />#1h0~)? 뽴)?_g/>#1h0/>p0/>#1h0/>pТ/>#1h0/>#1hТ/>pТ/>#1hТl*? i />pТl*? i X[(?*@/>pТl*? i 086?1gŽK7?h7086?1gŽZ@?bg iK7?h7K7?h7Z@?bg iM;?֏hlZ@?bg iE?gႻM;?֏hlM;?֏hlE?gႻT:??h@l5=E?gႻvC?gS=T:??h@l5=T:??h@l5=vC?gS=3?߉hn=/>#1hТ/>#1h0l*? i />#1h0콴)?_gl*? i )?_g086?1gŽl*? i x>$1h >x>$1h=+?g >x>$1h=Y(?^Yht=+?g >Y(?^Yht=3?߉hn=+?g >+?g >3?߉hn=;?Og=3?߉hn=vC?gS=;?Og=.d;? /!XB?Z73?zB?Z7-6?[`Ž3?z3?z-6?[`ŽX[(?*@-6?[`Ž~)? X[(?*@X[(?*@~)? />pТ~)? />p0/>pТ/86?=Z@?Zu= 3?= 3?=Z@?Zu=WN:?O6=Z@?Zu=E?6p=x>p >T(?;2@H=x>p >)?$ >T(?;2@H=T(?;2@H=)?$ > 3?=)?$ >/86?= 3?=x>p >x>$1h >)?$ >x>$1h >+?g >)?$ >x>$1h=x>p=Y(?^Yht=x>p=T(?;2@H=Y(?^Yht=?`С>?%С>(?B`\>?%С>+?]&8>(?B`\>?%0=?`0=!(?z$q=?`0=Ʉ(?`$=!(?z$q=(?>`Ὧ4?Sz+?/Z&E߽+?/Z&E߽4?Sz:?P%H4?Sz8??@`^:?P%H:?P%H8??@`^@B?u%:8??@`^wg??8Tϼ@B?u%:wg??8TϼQC?i `<@B?u%:@B?u%:QC?i `<C?!%i?1%[=FQ>?1%[=@??2 `=:?P%@=@??2 `=5?A`=:?P%@=:?P%@=5?A`=+?]&8>5?A`=(?B`\>+?]&8>Ʉ(?`$=3? a=!(?z$q=!(?z$q=3? a=o3?1$Y=3? a=t;?6a==o3?1$Y=o3?1$Y=t;?6a==FQ>?1%[=t;?6a==;=?aFQ>?1%[=FQ>?1%[=;=?as?%0=+?]&8>?%0=!(?z$q=+?]&8>!(?z$q=o3?1$Y=+?]&8>+?]&8>o3?1$Y=:?P%@=?h2 ǽ+?/Z&E߽u(?$ȫu(?$ȫ+?/Z&E߽m3?$+?/Z&E߽:?P%Hm3?$m3?$:?P%Hs?1%[=FQ>?1%[=:?P%@=o3?1$Y=(?>`+?/Z&E߽?9Sǽ+?/Z&E߽?h2 ǽ?9Sǽ?9SǽJ(?(`p4(?>`(?>`J(?(`p44?Sz4?Szwg??8Tϼ8??@`^5?A`=@??2 `=3? a=3? a=@??2 `=t;?6a==@??2 `=QC?i `Ʉ(?`$=?`С>(?B`\>Ʉ(?`$=Ʉ(?`$=(?B`\>3? a=(?B`\>5?A`=3? a=u(?$ȫJ(?(`p4?h2 ǽJ(?(`p4?9Sǽ?h2 ǽ?`С>?`0=?%С>?`0=?%0=?%С>r2s>'wf125.dWB.?t2?&f.2R.┽݀w?dWB.?t2?̙?UX?2߽%a?P p>tc0??߽+뾑a?2澯x?P p>tc0?I !p>ci0?25}?3d>8>25}?D"u!u=dĿ>8>D"u!u=N\]pdĿ>8>dĿ>8>N\]p=Ja>jN\]p !E,3;J>[v=Ja>j !E,;޾tq?, !E,q+Ev w޾br?4+޾br?4+q+Ev wP,?k<{ =I> t?v=E?l>>Q?=CEE?#?X0?l>>Q?l>>Q?v#?zߣ0?C? >l>v#?zߣ0?Y?Ӓ>C?>b>C?>b>X?'>'Fc?P>L=/Y?*>h?6˾'Fc?P>L='Fc?P>L=]h?˾'xP?>g]h?˾'1?pn޾zP?>1?pn޾U?^-Ծ6zP?>zP?>Z?J*Ծ6H>>nMGU?^-Ծ6>LrkH>>nMGH>>nMG>q@k8=4>eAF[>>ta8=4>epSAǍm`8=4>e>Lrk):An`AF[>>taYb?):An`-CP޾ba?oiDf>Hb?-CP޾ba?2߽%a?GgDq>b??߽+뾑a? ?YX?GgDq>b??߽+뾑a?[?9Ծ62澯x?[?9Ծ61?lg޾2澯x?2澯x?1?pn޾Dn!u=~1?j޾h?˾Dn!u=@Dln!5A=h?˾\Dph?˾VX?y>N\]pN\]pX?k> .-CP޾ba?pSAǍm`r߽+3a?pSAǍm`>}k ]*a?>}kT?98Ծ6f߽_&뾩a?㔽рw?&f.2R.=CEE?&f.2R.q+Ev w=CEE?q+Ev w 3F=~E?=CnE? .#? P0? .VX?y>#? P0?3d>8>vP?>'O 1{>Ua0?^{P?(>H>>nMGO 1{>Ua0? H Yz>Dg0?H>>nMGP?+VX?>>HG%"9=>e̙?UX? ?YX?8=Ŕ>e`~D'{>7b?P8=>Ce[Ae>qa`~D'{>7b?l>>Q?C?>b>G޾k?p,޾/n?+C? >l>=Ja>jC?>b>'Fc?P>L=>J>_=Ja>j'Fc?P>L=d˾>98>'Fc?P>L=vP?>'3d>8>r2s>'wd;.?2?gMQ,?- t?gMQ,?-V t?G޾k?p,a=Y> t?>+>eQ?޾Bm?Z,dWB.?t2?㔽рw?{ =I> t?㔽рw?=CEE?{ =I> t?(f228.p7s>wq+Ev wp7s>wP*,?mQ(?>̐ >2pui[4>sՏ >puS;#CeNi[4>s>9>-8?,/>6Z>d;v?=Jaiox?g/>Z>#f? >1z?9'> Ip? Ip? >2z?9'>OӾ,4?: > 4z?'>Fm> ?OӾ,4?OӾ,4?Fm> ?pM?JK!>DFL!> ?O>y?8;pM?JK!>O>\y?;O3fn)>d=pq:J>jp;J>O3fn)>d=[^EO3fn)>d=2S[+>J򾭖[^E[^ES>7>Io)? ?)=)?'?))=S>7>I!/k!SZ5>ES&oW>\R"/ z!!/k!&oW>\RS;#CeN&oW>\Ri[4>sS;#CeNTa=G?KeG?>( ?ۼ3?y=canx?d*=caamx?>( ?ۼ3?ݎ>R3?>( ?ۼ3?B? > ?>m3?V><3?B? > ?)?'?))=B?e˿> ?|u?>K=)?'?))=)?5'?(=|u?>K=`?y|u?>K=O>y?8;`?*䟾O>y?8;: > 4z?'>`?&埾Z`?: z>lz?}#>>#پ0K >2z?9'> >>:>Hn>%پKl>6!پKJ'>>9>Gnߍ>/ݾ][f >pu>9>-8?7#AggN>9>-8?d*=caamx?S;#CeNy=canx?>m3?S;#CeNT#DdN>m3?!/k!O>߾ Ns p?ߍ>/ݾ][ߍ>/ݾ][ Ip?>#پ0K Ip?"Ӿ/4?>#پ0K>%پKOӾ,4?`?yӾ~24?pM?JK!>p`?p~XJ >"[g` `?y`?y"[g` )?$?,)=)? ?))=!/k!V><3?>"f? Ip?.G>+أ>|d? Ip?dQ>߾#N.G>+أ>|d?R>֣>d?%>>E>En>!f?>"f?J'>>9>Gn: > 4z?'> >2z?9'>O>y?8;Fm> ?&oW>\RSZ5>ES>( ?ۼ3?>( ?ۼ3?S>7>IKB?>?S>7>IO3fn)>d=B?e˿> ?B?e˿> ?0f4>/d=!{u?M>=3f)>1d=O>\y?;{u?>=Ź/>29Z>!;v?E>M(?>`=@? kG?Ɏ>J(? >3WJ%>sȔ=m@?jG?c=C?whG?[">s'>Z' ?ú3?H[슙>s?j>R>( ?ۼ3?ߍ>/ݾ][ >>:>HnD>β߾"NJ'>>9>Gn.G>+أ>|d?dF>3߾:%N>Q(?>,/>6Z>d;v?o > q#u6/><8Z> :v?>9>-8?f >pu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmQ>q>[>˨IQQ>^t:>˨IQ%>̟]@<Q>^t:>Rqa@8 >NgR`H>Zt:>q>[>Zt: >NgR`H>q>[ >NgR`HB>9:Y^>q>[B>9:Y^>HDB>9:Y^#>{9@_>HDQ>PD#>{9@_Q>q>[#>{9@_>˨IQQ>q>[#>{9@_Q>PD>HDQ>PDQ>%폽>HD>HDQ>%폽>%폽Q>%폽Q>׌%<폽>%폽>%폽Q>׌%<폽>%<폽Q>׌%<폽Q>p%<폽>%<폽Q>pxpq>=[>xxq>=[>q>=[Q>q>=[Q>kt=:>q>=[>q>=[Q>kt=:>ot=:Q>kt=:Q>=@ݣ>ot=:>ot=:Q>=@ݣ>=@ݣQ>=@ݣQ>wh=4>=@ݣ>=@ݣQ>wh=4>yh=4Q>wh=4Q>=ݣ<>yh=4>yh=4Q>=ݣ<>=ݣ<Q>=ݣ<Q>kt=@:=>=ݣ<>=ݣ<Q>kt=@:=>ot=@:=Q>kt=@:=Q>q>=[=>ot=@:=>ot=@:=Q>q>=[=>q>=[=Q>q>=[=Q>pq>=[=>q>=[=Q>pxp׌%<=>xx׌%<=>%<=Q>׌%<=Q>%=>%<=>%<=Q>%=>%=Q>%=Q>PD=>%=>%=Q>PD=>HD=Q>PD=Q>q>[=>HD=>HD=Q>q>[=>q>[=Q>q>[=Q>^t@:=>q>[=>q>[=Q>^t@:=>Zt@:=Q>^t@:=Q>ݣ<>Zt@:=>Zt@:=Q>ݣ<>ݣ<Q>ݣ<Q>oh4>ݣ<>ݣ<Q>oh4>mh4Q>oh4Q>@ݣ>mh4>mh4Q>@ݣ>@ݣQ>@ݣQ>^t:>@ݣ>@ݣQ>^t:>Zt:Q>^t:%>̟]@<>Zt:>Zt:%>̟]@<>Rqa@8> V=>HD=>H=HD=>q>[=>H=H=q>[=>Kr=>q>[=>Zt@:=>Kr=>Kr=>Zt@:=> @<>Zt@:=>ݣ<> @<> @<>ݣ<>Hb4>ݣ<>mh4>Hb4>Hb4>mh4> >mh4>@ݣ> > >@ݣ>Kr>@ݣ>Zt:>Kr>Kr>Zt:>H=`Zt:>q>[>H=`H=`q>[>V>q>[>HD>V>V>HD>b$ꎽ>HD>%폽>b$ꎽ>b$ꎽ>%폽>xb$<ꎽ>%폽>%<폽>xb$<ꎽ>xb$<ꎽ>%<폽><V>%<폽>x<V><V>x_==`xq>=[>_==`_==`q>=[>er=>q>=[>ot=:>er=>er=>ot=:>=>ot=:>=@ݣ>=>=>=@ݣ>Tb=4>=@ݣ>yh=4>Tb=4>Tb=4>yh=4>=@<>yh=4>=ݣ<>=@<>=@<>=ݣ<>er==>=ݣ<>ot=@:=>er==>er==>ot=@:=>_==ot=@:=>q>=[=>_==_==q>=[=>< V=>q>=[=>x< V=>< V=>xxb$<0=>x%<=>xb$<0=>xb$<0=>%<=>b$0=>%<=>%=>b$0=>b$0=>%=> V=>%=>HD=> V=Q>oh4Q>ݣ<O>P(<Q>^t@:=>N>mx=Q>ݣ<>N>mx=O>g<Q>ݣ<Q>ݣ<O>g<O>P(<Q>q>[=N>9 -W=Q>^t@:=N>9 -W=>N>mx=Q>^t@:=Q>PD=9O>Sa=Q>q>[=9O>Sa=N>9 -W=Q>q>[=Q>%=O>ؒࢌ=Q>PD=O>ؒࢌ=9O>Sa=Q>PD=Q>׌%<=N>҂;@=Q>%=N>҂;@=O>ؒࢌ=Q>%=Q>p ׌%<=xO> ҂;@=Q>׌%<=Q>q>=[=oO>S9=W=Q>pS9=W=xO> pkt=@:=O> tj=`=Q>q>=[=O> tj=`=oO>S9=W=Q>q>=[=Q>=ݣٝ=<Q>kt=@:=!O>ٝ=<O>@{o==Q>kt=@:=Q>kt=@:=O>@{o==O> tj=`=Q>kt=:O>=Q>=@ݣQ>=@ݣO>=Q>wh=4O>=O> V=4Q>wh=4Q>wh=4O> V=4Q>=ݣ<O> V=4!O>ٝ=<Q>=ݣ<Q>q>=[N>?m=6Q>kt=:Q>kt=:N>?m=6O>=Q>p9=@WQ>q>=[Q>q>=[#O>9=@WN>?m=6Q>׌%<폽(O>PppP9=@WQ>%폽 $O><Q>׌%<폽Q>׌%<폽 $O><(O>PPDO>Q݌Q>%폽Q>%폽O>Q݌ $O><Q>q>[O>cQ>PDQ>PDO>cO>Q݌Q>^t:*O>ҏ;KVQ>q>[Q>q>[*O>ҏ;KVO>cQ>@ݣN>o`&Q>^t:Q>^t:N>o`&*O>ҏ;KVO>P(kQ>oh4Q>oh4lTO>kQ>@ݣlTO>k,M>;Q>@ݣQ>@ݣ,M>;N>o`&=N>C[2>Rqa@8>6$W:>Rqa@8%>̟]@<>6$W:>6$W:%>̟]@<ō>qQL@Bړ>XU:>Rqa@8=N>C[2 >NgR`H>Rqa@8ړ>XU:ݔ>A`L >NgR`Hړ>XU:B>9:Y^ >NgR`Hݔ>A`LM>I4ZB>9:Y^ݔ>A`LM>I4Z#>{9@_B>9:Y^q>89gU#>{9@_M>I4Z#>{9@_q>89gU>˨IQō>qQL@B>˨IQq>89gU%>̟]@<>˨IQō>qQL@B> V=>b$0=>b$0=>b$0=>yb$<0=>b$0=>b$0=>yb$<0=>xb$<0=>yb$<0=>< V=>xb$<0=>xb$<0=>< V=>< V=>< V=>_==< V=>< V=>_==_==_==ar==>_==_==ar==>er==>er==>ar==>=@<>Kr=>H=H=H=H= V=>H= V=> V=> V=> V=>b$0=>H=`Kr>Kr>Kr> >Kr>Kr> > > >Hb4> > >Hb4>Hb4>Hb4> @<>Hb4>Hb4> @<> @<> @<> @<>Kr=> @<>Kr=>Kr=>Kr=>Kr=>H=ar==>=@<>=@<>=@<>Tb=4>=@<>=@<>Tb=4>Tb=4>Tb=4>=>Tb=4>Tb=4>=>=>=>er=>=>=>er=>er=>er=>_==`er=>er=>_==`_==`_==`<V>_==`_==`<V><V><V>yb$<ꎽ><V><V>yb$<ꎽ>xb$<ꎽ>yb$<ꎽ>b$ꎽ>xb$<ꎽ>xb$<ꎽ>b$ꎽ>b$ꎽ>b$ꎽ>V>b$ꎽ>b$ꎽ>V>V>V>H=`V>V>H=`H=`H=`H=`KrAJ><0NBJ>Nޮ< ]A>C< A>C< NBJ>Nޮ< ]A>a}<`ĊA>0;A>a}<`ĊNBJ>Nޮ< ] $O>Nޮ< ](O>PPNޮ< ]AJ><0(O>P<0#O>9=@WA>C< A> V=`vAJ><0A> V=`vA>}1=^AJ><0A>1(KA>):K>0RHA>)lTO>k:K>0RH:K>0RHlTO>kOL>1*K;lTO>kO>P(1*K;OL>1*K;O>P(1*K;O>P()1*K;J><=6L>3<=xO> 3<=N>҂;@=A>a}<Ċ=A>0;0=e'H><=A>0;0=6L>3<=e'H><=A>a}<Ċ=e'H><=A>C<@=e'H><=J><=A>C<@=A>C<@=J><=A> V=v=A> V=v=J><=A>}1=^=oO>S9=W=J><=xO> =@3=cٝ=ٝ=3=c<O>@{o==FK>3=c_=&5k=\ =O>@{o==FK>3=c<O> tj=`=A>5k=\ =OH>_=&==_=&<\+J>=@====<\+J>=@1=ѧ<=oO>S9=W=A>}1=^=A>}1=^=oO>S9=W=A>P=`A=A>P=`A=oO>S9=W=A>5k=\ =oO>S9=W=O> tj=`=A>5k=\ =A>5k=\ =O> tj=`=FK>3=c< K>`8=L>μ=O>ؒࢌ=O>ؒࢌ=L>μ=9O>Sa=L>μ=H>GȼJ=A>Uv=A>'м@=A>Uv=H>GȼJ=A>'м@=H>GȼJ=A>a}Ċ=H>GȼJ= K>`8=A>a}Ċ= K>`8=O>ؒࢌ=A>a}Ċ=A>a}Ċ=O>ؒࢌ=A>00=A>00=O>ؒࢌ=A>0;0=O>ؒࢌ=N>҂;@=A>0;0=A>0;0=N>҂;@=6L>3<=i>J>能@c<{L>XN<>N>mx=O>P(<O>g<{L>XN<{L>XN<O>g<>N>mx=O>P(<{L>XN<0sI>_@\)<O>P(<0sI>_@\)<0sI>_@\)ѧ)ѧ<0sI>_@\=<0sI>_@\J>能@c=J>能@c<>N>mx=A>==<>N>mx=A>4k\ =A>4k\ =>N>mx=A>P`A=>N>mx=N>9 -W=A>P`A=A>P`A=N>9 -W=A>n}1^=A>n}1^=N>9 -W=A>Uv=N>9 -W=9O>Sa=A>Uv=A>Uv=9O>Sa=L>μ=N>o`&,M>;5J>σּA>)ѧA>=@H>N@H>N@A>=@5J>σּA>)ѧH>N@A>)A>)H>N@lTO>klTO>kH>N@,M>;O>Q݌O>cJ>M{J>M{O>c1J>6/ּఃA>a}`ĊJ>M{A>'м J>M{1J>6/ּఃA>'м A>'м 1J>6/ּఃA>U`v1J>6/ּఃO>cA>U`vA>U`vO>cA>n}1^O>c*O>ҏ;KVA>n}1^A>n}1^*O>ҏ;KVA>P AA>P A*O>ҏ;KVA>4k`\ *O>ҏ;KVN>o`&A>4k`\ A>4k`\ N>o`&A>=@A>=@N>o`&5J>σּNBJ>Nޮ< ] $O>0;A>0; $O>0 $O><O>Q݌A>0A>0O>Q݌A>a}`ĊA>a}`ĊO>Q݌J>M{HJ>=eԼL>ȅ=@N>?m=6O>=N>?m=6L>ȅ=@L>ȅ=@HH>*=@KO>=A>1=ѧHH>*=@KA>==@A>==@HH>*=@KHJ>=eԼA>5k=`\ A>==@HJ>=eԼHJ>=eԼN>?m=6A>5k=`\ A>5k=`\ N>?m=6A>P= AN>?m=6#O>9=@WA>P= AA>P= A#O>9=@WA>}1=^A>}1=^#O>9=@WAJ><0\+J>=@ٝ=1=ѧ1=ѧٝ= =) =)ٝ= V=4!O>ٝ=<O> V=4A> V=4A> V=4O> V=4A> =)O> V=4O>=A> =)A> =)O>=A>1=ѧA>1=ѧO>=HH>*=@K>6$W:ō>qQL@B>O>>O>ō>qQL@BO> GGO> GGō>qQL@B~>>Oō>qQL@Bq>89gU~>>O~>>Oq>89gUЏ>d8UЏ>d8Uq>89gUP>i%6Xq>89gUM>I4ZP>i%6XP>i%6XM>I4Zϒ>ro8Uϒ>ro8UM>I4Z>>OM>I4Zݔ>A`L>>O>>Oݔ>A`LL>G GL>G Gݔ>A`L֓>O>ݔ>A`Lړ>XU:֓>O>֓>O>ړ>XU:˒>Ud8˒>Ud8ړ>XU:cL>X`%6ړ>XU:=N>C[2cL>X`%6cL>X`%6=N>C[2>6$W:>a}<>Qm<> @<>Hb4<>1>7>7>Trx>GaA>GaA>Trx>1]0>Trx>n+>1]0>1]0>n+>p.V>n+ >*Ry>p.V>p.V >*Ry>~R>~R >*Ry>\ >*Ry>R >\>\>R > > >R >Hb4>R <>1>Hb4>GaA>7>h;>7>h;>a}<>7>7>a}<>Hb4>a}<> @<>Hb4>Tb=4>=@<>Hʅ=;>Hʅ=;>=@<>u\=Z<>=@<>=]<>u\=Z<>=]<>~=S<>u\=Z<>u\=Z<>~=S<>>r=<>~=S<>ɚp=/V<>>r=<>ɚp=/V<>J]=0<>>r=<>>r=<>J]=0<>sn=;>J]=0<>Ga=B8>sn=;>sn=;>Ga=B8>&|=4';>Ga=B8>Vrv=h>&|=4';>Vrv=h>=f>&|=4';>&|=4';>=f>m}=>yb$<ꎽ><VH>)!<6}><V>\<H>)!<6}>\<>R<~H>)!<6}>R<~>/V)!<6}H>)!<6}>/V],;n>/VH0< ]>],;n>],;n>H0< ]>JK;`t>H0< ]>~6B8Ga>JK;`tH>)!<6}>;K>yb$<ꎽ>yb$<ꎽ>;K>b$ꎽ>Hʅ=;>&|=4';>Tb=4>&|=4';>m}=>Tb=4>Tb=4>m}=>=>m}=>^=m>=>=>^=m>er=>~6B8Ga>k rv>JK;`t>k rv>f𹃽>JK;`t>JK;`t>f𹃽p>Vo;F>f𹃽>b$ꎽp>Vo;F>b$ꎽ>;Kp>Vo;F>^=m>:{=>er=>:{=>NlX=0>er=>er=>NlX=0>_==`NlX=0>")=^>_==`_==`")=^><V>")=^><@><V><V><@>\<>f𹃽>P}>b$ꎽ>P}>.m@>b$ꎽ>b$ꎽ>.m@>V>.m@>#{>V>V>#{>H=`#{>0 lX>H=`H=`0 lX>Kr>0 lX>є^")>Kr>Kr>є^")> >є^")>N> > >N>\>`\=>L=>b$0=>b$0=>L=>yb$<0=>L=>\oG=>yb$<0=>b$0=> V=>`\=> V=>\=>`\=>\=>R~=>`\=>`\=>R~=>@r=>R~=>.Vp=>@r=>.Vp=>0`]=>@r=>@r=>0`]=>n=>0`]=>AGa=>n=>n=>AGa=>AV:x=>AGa=>n:`rv=>AV:x=>AV:x=>n:`rv=>\oG=>n:`rv=>g;=>\oG=>\oG=>g;=>yb$<0=>g;=>#yb$<0=>#m<`=>yb$<0=>yb$<0=>m<`=>< V=>m<`=>_<@{=>< V=>< V=>_<@{=>_==_<@{=>0=`lX=>_==_==0=`lX=>ar==>0=`lX=>^=")=>ar==>^=")=>c=<>ar==>ar==>c=<>=@<>=@<>c=<>=]<>Qm<>!{<> @<>!{<>4lX0=> @<> @<>4lX0=>Kr=>Kr=>4lX0=>H=4lX0=>")^=>H=H=")^=> V=>")^=>ἀ=> V=> V=>ἀ=>\=i>J>能@c<0sI>_@\搽'搽'<0sI>_@\<}H>J>能@c搽'<{L>XN搽'1<{L>XN<}H><0sI>_@\11<0sI>_@\<{L>XN<*>H>o<="2J>B<5=e'H><=e'H><="2J>B<5=J><="2J>B<5=L><=J><=J><=L><=6L>3<=*>H>o<=e'H><=L><=e'H><=6L>3<=L><=I>Qüa=H>GȼJ=H>=H>GȼJ=I>Qüa= K>`8=I>Qüa=L>ۼV= K>`8= K>`8=L>ۼV=L>μ=H>GȼJ=L>μ=H>=H>=L>μ=L>ۼV=GH>_=C=<\+J>=@<\+J>=@=3=c<\+J>=@_=&_=C_=C_=&<]hI>_=_=&3=c<]hI>_=<]hI>_=3=c=1*K;OL>Jb*K;:K>0RHOL>Jb*K;OL>Jb(K:K>0RHOL>1*K;A>1*K;OL>Jb*K;A>1*K;A>Jb*K;OL>Jb*K;A>Jb(KA>Jb*K;A>O4A>Jb*K;A>1*K;A>O4A>1*K;A>)O4A>O4A>)))ѧ)ѧ~@)ѧ=~@~@=ʃi`5=A>=4k\ =A>ʃi`5=A>ʃi`5=A>4k\ =A>-O;@=A>4k\ =A>P`A=A>-O;@=A>-O;@=A>P`A=A>60\=A>P`A=A>n}1^=A>60\=A>60\=A>n}1^=A>O t=A>n}1^=A>Uv=A>O t=A>O t=A>Uv=A>μ0=A>Uv=A>'м@=A>μ0=A>μ0=A>'м@=A>{ĉ=A>'м@=A>a}Ċ=A>{ĉ=A>{ĉ=A>a}Ċ=A>=A>a}Ċ=A>00=A>=A>=A>00=A>;=A>00=A>0;0=A>;=A>;=A>0;0=A>D{<ĉ=A>0;0=A>a}<Ċ=A>D{<ĉ=A>D{<ĉ=A>a}<Ċ=A>0<0=A>a}<Ċ=A>C<@=A>0<0=A>0<0=A>C<@=A>O =t=A>C<@=A> V=v=A>O =t=A>O =t=A> V=v=A>60=\=A> V=v=A>}1=^=A>60=\=A>60=\=A>}1=^=A>-O=;@=A>}1=^=A>P=`A=A>-O=;@=A>-O=;@=A>P=`A=A>؃i=`5=A>P=`A=A>5k=\ =A>؃i=`5=A>؃i=`5=A>5k=\ =A>~=@5k=\ =A>==~=@~=@=====1=ѧ==1=ѧ׻=~(1=ѧ =)׻=~(׻=~( =)O=4A> =) V=4A>O=4A>O=4A> V=4A>׻=}(A> V=4A> =)A>׻=}(A>׻=}(A> =)A>=A> =)A>1=ѧA>=A>=A>1=ѧA>~=@@A>1=ѧA>==@A>~=@@A>~=@@A>==@A>؃i= 5A>==@A>5k=`\ A>؃i= 5A>؃i= 5A>5k=`\ A>-O=;@A>5k=`\ A>P= AA>-O=;@A>-O=;@A>P= AA>60=\A>P= AA>}1=^A>60=\A>60=\A>}1=^A>O =`tA>}1=^A> V=`vA>O =`tA>O =`tA> V=`vA>0< A> V=`vA>C< A>0< A>0< A>C< A>D{<ĉA>C< A>a}<`ĊA>D{<ĉA>D{<ĉA>a}<`ĊA>;ꌽA>a}<`ĊA>0;A>;ꌽA>;ꌽA>0;A>ꌽA>0;A>0A>ꌽA>ꌽA>0A>{ĉA>0A>a}`ĊA>{ĉA>{ĉA>a}`ĊA>μ A>a}`ĊA>'м A>μ A>μ A>'м A>O `tA>'м A>U`vA>O `tA>O `tA>U`vA>60\A>U`vA>n}1^A>60\A>60\A>n}1^A>-O;@A>n}1^A>P AA>-O;@A>-O;@A>P AA>ʃi 5A>P AA>4k`\ A>ʃi 5A>ʃi 5A>4k`\ A>~@@A>4k`\ A>=@A>~@@A>~@@A>=@A>A>=@A>)ѧA>A>A>)ѧA>ͻ}(A>)ѧA>)A>ͻ}(A>ͻ}(A>)A>O4A>)A>1(KA>O4A>O4A>1(KA>Jb(KA>1(K:K>0RHA>Jb(K:K>0RHOL>Jb(KA>Jb(KH>N@5J>σּG>XڼG>Xڼ5J>σּRM>eѼ5J>σּ,M>;RM>eѼ,M>;H>N@RM>eѼRM>eѼH>N@G>Xڼ.?H>~ϼJ>M{1J>6/ּః.?H>~ϼJ>M{L>ͼ0J>M{1J>6/ּఃL>ͼ0L>ͼ01J>6/ּః6J>3.?H>~ϼ1J>6/ּః6J>3yI>Nޮ< ]I>*<@cyI><0NBJ>Nޮ< ]yI><0L><0NBJ>Nޮ< ]L>Nޮ< ]I>*<@cEI>'5=HH>*=@KqI>2=[ƼqI>2=[ƼHH>*=@KL>ot=ϼHH>*=@KL>ȅ=@L>ot=ϼL>ot=ϼL>ȅ=@EI>'5=缒L>ȅ=@HJ>=eԼEI>'5=缢EI>'5=HJ>=eԼHH>*=@KcL>X`%6>6$W:>B0S<8>B0S<8>6$W:>O>>.m@x->-m@x->*{x->M>N>є^")x->M>є^")x->Д^")>є^")>0 lXx->Д^")x->Д^")>0 lXx->0 lX>0 lX>#{x->0 lXx->0 lX>#{x->*{x->*{>#{>.m@x->I\O2>1]0>p.Vx->I\O2>p.Vx->p.V>p.V>~Rx->p.Vx->p.V>~Rx->~R>~R>\x->~Rx->~R>\x->\>\>Nx->\x->\>Nx->Mx->I\O2(>a5>1]0>1]0(>a5>GaAx->Qm<>Qm<>a}Qm<>a}a}<>a}<>h;x->a}a}<>h;x->h;>h;>h;x->h;>;rvp:>GaAx->;rvp:x->;rvp:>GaA(>a5>QmQm {<>4lX0=x->3lX0=x->")^=x->ἀ=>ἀ=>")^=x->ἀ=>")^=x->")^=x->")^=>")^=>4lX0=x->3lX0=>4lX0=x-> {<>4lX0=>!{ { {<>!{<>QmZO2\=>0`]=>.Vp=x->ZO2\=>.Vp=x->.Vp=>.Vp=>R~=x->.Vp=x->.Vp=>R~=x->R~=>R~=>\=x->R~=x->R~=>\=x->\=>\=>ἀ=x->\=x->\=>ἀ=x->ἀ=x->ZO2\=(>5a=>0`]=>0`]=(>5a=>AGa=x->m<`=>m<`=>#m<`=>#$#g;=x->$$g;=x->g;=>g;=>n:`rv=x->g;=x->g;=>n:`rv=x->n:`rv=>n:`rv=>AGa=x->n:`rv=x->n:`rv=>AGa=(>5a=>0=`lX=x->0=`lX=x->^=")=x->d=<>c=^=")=>c=<>^=")=x->^=")=x->^=")=>^=")=>0=`lX=>0=`lX=>_<@{=x->0=`lX=x->0=`lX=>_<@{=x->`<@{=>_<@{=>m<`=x->`<@{=x->`<@{=>m<`=x->m<`=x->b\=P2<>J]=0<>ɚp=/Vb\=P2<>ɚp=/Vʚp=/V<>ɚp=/V<>~=Sʚp=/Vʚp=/V<>~=S~=S<>~=S<>=]~=S~=S<>=]=]<>=]<>c==]=]<>c=d=b\=P2<(>a=59>J]=0<>J]=0<(>a=59>Ga=B8x->^=m>^=m>m}=x->^=m>m}=x->m}=>m}=>=fx->m}=x->m}=>=fx->=f>=f>Vrv=hx->=fx->=f>Vrv=hx->Wrv=h>Vrv=h>Ga=B8x->Wrv=hx->Wrv=h>Ga=B8(>a=59x-><@><@x->")=^><@>")=^x->")=^>")=^>NlX=0x->")=^x->")=^>NlX=0x->OlX=0>NlX=0>:{=x->OlX=0x->OlX=0>:{=x->;{=>:{=>^=mx->;{=x->;{=>^=mx->^=mx->O2<@\>H0< ]>/VO2<@\>/V/V/VR<~x->/V/VR<~x->R<~>R<~>\<x->R<~x->R<~>\<x->\<>\<><@x->\<x->\<><@x-><@>~6B8Ga>H0< ](>Y59a(>Y59a>H0< ]x->O2<@\x->-m@>.m@>P}x->-m@>P}x->P}>P}>f𹃽x->P}x->P}>f𹃽x->f𹃽>f𹃽>k rvx->f𹃽x->f𹃽>k rvx->k rv>k rv>~6B8Gax->k rvx->k rv>~6B8Ga(>Y59a`.>*)!<6}K/>O)!<6}>],;nK/>OO],;nE3>;m>],;n>JK;`tE3>;mE3>;m>JK;`t3>ʼn';7}>JK;`tp>Vo;F3>ʼn';7}3>ʼn';7}p>Vo;F.>; Lp>Vo;F>;K.>; L.>; L>;K`.>*;KH>)!<6}`.>*=w;>Hʅ=;l1>˪=<>Hʅ=;>u\=Z˪=˪=<>u\=Z<3>t=<>u\=Z<>>r=<3>t=<>>r=<>sn=;3>t=<3>t=<>sn=;/>n=;>sn=;>&|=4';/>n=;/>n=;>&|=4';/>Qy=@7;/>Qy=@7;>&|=4';.>=w;>&|=4';>Hʅ=;.>=w;>AV:x=>\oG=2>_A'`7}=2>_A'`7}=>\oG=.>d鯻@L=>\oG=>L=.>d鯻@L=.>d鯻@L=>L=0>.ׁ=>L=>`\=0>.ׁ=>`\=>@r=0>.ׁ=0>.ׁ=>@r=_/> `Sr=>@r=>n=_/> `Sr=_/> `Sr=>n=/>lj n=>n=>AV:x=/>lj n=/>lj n=>AV:x=2>_A'`7}=3>zt>n+/>n>n+뻔>Trx/>n/>n>Trx/>Qy<7>Trx>7/>Qy<7/>Qy<7>7.>􅃽w>7<>1.>􅃽w.>􅃽w<>1l1><>1>R l1>>R >*Ryl1>l1> >*Ry3>zt >*Ry>n+뻁3>ztA>4;PF=A>hR<='O>1<=A>E%P=8A>uZ ™'O>A1A>\=A> <'O>= $A>=ȭ:A>=I'O>/C=4'O>/C=4A>=I'O>=qI>2=[ƼL>ot=ϼ'O>='O>t=('O>=L>ot=ϼ'O>t=(L>ot=ϼEI>'5=编A>a=J/EI>'5=A>=@RA>=IA>=@REI>'5=缢EI>'5=qI>2=[ƼA>=IA>=IqI>2=[Ƽ'O>=EI>'5=编A>a=J/'O>t=('O>t=(A>a=J/'O> L=0lA>a=J/+A>>fl=L'O> L=0l'O> L=0l+A>>fl=L6A>uX=`Sa6A>uX=`SaA>_@=v'O> L=0l'O> L=0lA>_@=v'O>= $A>_@=vA>\='O>= $yI>= $'O>1<'O>= $L>1<L>*<@cA>Co*<@cEA>sR<晽yI><I>*<@cA>Co <yI>Co <yI><'O>= $I>*<@cEA>sR<晽'O>1<EA>sR<晽A>A; 'O>1<'O>1<A>A; 'O>A1A>A; A>E%P='O>A1'O> $'O>A1L>ͼ0L>ͼ06J>3'O> $A>+ P`.?H>~ϼ6J>3A>`ߔ.?H>~ϼA>+ P`A>`ߔ.?H>~ϼ8A>uZ ™8A>uZ ™.?H>~ϼ'O>A1.?H>~ϼL>ͼ0'O>A1'O> $6J>3A>+ P`A>+ P`A>d.'O> $'O> $A>d.'O>L0lA>d.TA>Nj'O>L0l'O>L0lTA>NjA>dU'O>t('O>L0lA>À 2A>À 2'O>L0lA>dUG>XڼRM>eѼ'O>t('O>t(RM>eѼ'O>A>?@[G>XڼRM>eѼG>XڼA>?@[A>ۢj A>À 2G>XڼA>ۢj A>À 2G>Xڼ'O>t('O>A>?@[RM>eѼ'O>A>ǚj-A>?@['O>*C4A>ǚj-'O>'O>*C4A>*rA>ǚj-'O>*C4A>v6A>*r'O>*C4A>v6'O><'O>*C4'O>t(='O>11搽'<'O>t(=|A>1`6.=kJ>搽'@S@S<}H>@S搽'<}H><}H><'O><}H>1<'O><'O>t(=kJ>搽'<|A>1`6.=|A>1`6.=A>hFb+W='O>t(='O>t(=A>hFb+W='O>L0l=A>hFb+W=;A>Bt='O>L0l=H>=L>ۼV='O>@$='O>A1='O>@$=L>ۼV='O>A1=L>ۼV=I>Qüa=A>j=I>Qüa=AA>U@ݘ=AA>U@ݘ=I>Qüa=A>/ 0=I>Qüa=H>=A>/ 0=A>/ 0=H>=A>$/ >=H>='O>@$=A>$/ >='O>@$='O>L0l=A>$/ >=A>$/ >='O>L0l=A>p$Є='O>L0l=;A>Bt=A>p$Є=I>Qüa=A>j='O>A1='O>A1=A>j='O>1<=A>j=A>4;PF='O>1<='O>=@$='O>1<=L><=L><="2J>B<5='O>=@$="2J>B<5=*>H>o<=A> #< =A> #< =*>H>o<=A>j<=A>j<=*>H>o<=A>hR<=A>hR<=*>H>o<='O>1<=*>H>o<=L><='O>1<=A>!\=='O>=@$=A> #< ='O>=@$="2J>B<5=A> #< =A>!\==A>}@=v='O>=@$='O>=@$=A>}@=v='O> L=0l='O> L=0l=A>}@=v=CA>_=Z=]hI>_==<'O>t=(='O>t=(=!)M>=<'O>=<'O>==_=C<:A>u=A =A>D=@c_=C_=C<]hI>_=<:A>u=A =A>!k=f%=:A>u=A =]hI>_=<]hI>_=<'O>t=(=A>!k=f%=A>!k=f%='O>t=(= A>u=`@='O>t=(='O> L=0l= A>u=`@='O> L=0l=CA>_=Z= A>u=`@=GH>_=C<A>D=@c<'O>=<A>D=@c<(A>ʚ=,<'O>=<'O>=<(A>ʚ=,<'O>/C=4(A>ʚ=,=ȭ:'O>/C=4A>Jb(KOL>Jb(KA>Jb*K;OL>Jb(KOL>Jb*K;A>Jb*K;;>O4A><;>~@<;><;>~@<;>˃i`5=A>~@ʃi`5=;>˃i`5=A>ʃi`5=A>-O;@=;>˃i`5=;>˃i`5=A>-O;@=;>60\=A>-O;@=A>60\=;>60\=A>60\=A>O t=;>60\=;>60\=A>O t=;>μ0=A>O t=A>μ0=;>μ0=A>μ0=A>{ĉ=;>μ0=;>μ0=A>{ĉ=;>=A>{ĉ=A>=;>=A>=A>;=;>=;>=A>;=;>C{<ĉ=A>;=A>D{<ĉ=;>C{<ĉ=A>D{<ĉ=A>0<0=;>C{<ĉ=;>C{<ĉ=A>0<0=;>O =t=A>0<0=A>O =t=;>O =t=A>O =t=A>60=\=;>O =t=;>O =t=A>60=\=;>-O=;@=A>60=\=A>-O=;@=;>-O=;@=A>-O=;@=A>؃i=`5=;>-O=;@=;>-O=;@=A>؃i=`5=;>~=@؃i=`5=A>~=@<;>~=@~=@=<;>~=@<;>~=@=<;>׻=~(=׻=~(<;>׻=~(׻=~(O=4;>׻=~(<;>׻=~(O=4;>׻=}(A>O=4A>׻=}(;>׻=}(A>׻=}(A>=;>׻=}(;>׻=}(A>=;>~=@@A>=A>~=@@;>~=@@A>~=@@A>؃i= 5;>~=@@;>~=@@A>؃i= 5;>-O=;@A>؃i= 5A>-O=;@;>-O=;@A>-O=;@A>60=\;>-O=;@;>-O=;@A>60=\;>O =`tA>60=\A>O =`t;>O =`tA>O =`tA>0< ;>O =`t;>O =`tA>0< ;>C{<ĉA>0< A>D{<ĉ;>C{<ĉA>D{<ĉA>;ꌽ;>C{<ĉ;>C{<ĉA>;ꌽ;>ꌽA>;ꌽA>ꌽ;>ꌽA>ꌽA>{ĉ;>ꌽ;>ꌽA>{ĉ;>μ A>{ĉA>μ ;>μ A>μ A>O `t;>μ ;>μ A>O `t;>60\A>O `tA>60\;>60\A>60\A>-O;@;>60\;>60\A>-O;@;>˃i 5A>-O;@A>ʃi 5;>˃i 5A>ʃi 5A>~@@;>˃i 5;>˃i 5A>~@@;>A>~@@A>;>A>A>ͻ}(;>;>A>ͻ}(;>O4A>ͻ}(A>O4;>O4;>O4A>O4A><2>E [P>i%6XP>o A`P>i%6Xϒ>ro8UP>o A`ϒ>ro8U>>OP>o A`P>o A`>>Oq >KU>>OL>G Gq >KUL>G G֓>O>q >KU֓>O>˒>Ud8=*>\N`gA˒>Ud8cL>X`%6=*>\N`gAcL>X`%6>B0S<8=*>\N`gA>B0S<8>O>s>oVBK>O>O> GGs>oVBKO> GG~>>Os>oVBKs>oVBK~>>O2>E [~>>OЏ>d8U2>E [Џ>d8UP>i%6X2>E [.>=w;l1>˪=Tb=4.>􅃽wl1>x->Hb4x->a}</>Qy<7.>􅃽wx->Hb4l1>x-> (>a5/>Qy<7x->;rvp:x->;rvp:/>Qy<7x->h;/>Qy<7x->a}h;x->f𹃽x->k rvE3>;mx->k rv(>Y59aE3>;m.>􅃽wx->Hb4x->a}a}Hb4x->QmHb4x-> @QmQm @ { { @3lX0=x-> l1>x->~Rl1>3>ztx->~Rx->~R3>ztx->p.Vx->p.V3>ztx->I\O2x->I\O23>zt(>a53>zt/>n(>a5(>a5/>n/>Qy<7x->zb$<ꎽ`.>*<VE3>;m3>ʼn';7}x->f𹃽x->f𹃽3>ʼn';7}x->P}x->P}3>ʼn';7}x->b$ꎽ3>ʼn';7}.>; Lx->b$ꎽx->b$ꎽ.>; Lx->zb$<ꎽx->zb$<ꎽ.>; L`.>*~Rx->\x-> x->\x->Mx-> x-> x->Mx->Jrx->Mx->Д^")x->Jrx->Jrx->Д^")x->G=`Д^")x->0 lXx->G=`G=`0 lXx->Vx->0 lXx->*{x->Vx->Vx->*{x->b$ꎽx->*{x->-m@x->b$ꎽx->b$ꎽx->-m@x->P}x->b$0=x->zb$<0=.>d鯻@L=(>5a=2>_A'`7}=x->n:`rv=.>d鯻@L=x->zb$<0=2>_A'`7}=x->zb$<0=x->$_A'`7}=x->$g;=2>_A'`7}=2>_A'`7}=x->g;=x->n:`rv=x-> V=x->b$0=0>.ׁ=0>.ׁ=x->b$0=.>d鯻@L=x-> @Jr=x->3lX0=x->3lX0=x->Jr=x->")^=x->Jr=x->G=")^=x->")^=x->G=ἀ=x->G= V=x->ἀ=x->ἀ=x-> V=x->\=x-> V=0>.ׁ=x->\=x->\=0>.ׁ=x->R~=x->R~=0>.ׁ=x->.Vp=0>.ׁ=_/> `Sr=x->.Vp=x->.Vp=_/> `Sr=x->ZO2\=x->ZO2\=_/> `Sr=(>5a=_/> `Sr=/>lj n=(>5a=(>5a=/>lj n=2>_A'`7}=x->Tb=4l1>˪==@m}=/>Qy=@7;.>=w;x->=@˪=~=S˪=<3>t=~=S~=S<3>t=ʚp=/Vʚp=/V<3>t=b\=P2b\=P2<3>t=<(>a=593>t=n=;(>a=59x->~=S=]=@=]d==@=@d=br==x->d=^=")=x->br==x->br==x->^=")=x->`==^=")=x->0=`lX=x->`==`==0=`lX=x->< V=x->0=`lX=x->`<@{=x->< V=x->< V=x->`<@{=x->zb$<0=x->`<@{=x->m<`=x->zb$<0=x->zb$<0=x->m<`=x->$n=;/>Qy=@7;(>a=59(>a=59/>Qy=@7;x->Wrv=hx->Wrv=h/>Qy=@7;x->=f/>Qy=@7;x->m}=x->=f.>=w;x->Tb=4x->m}=x->m}=x->Tb=4x->^=mx->Tb=4x->=x->^=mx->^=mx->=x->;{=x->=x->fr=x->;{=x->;{=x->fr=x->OlX=0x->OlX=0x->fr=x->")=^x->fr=x->`==`")=^x->`==`<Vx->")=^x->")=^x-><Vx-><@x-><@x-><Vx->\<x-><V`.>*\<x->\<`.>*R<~`.>*OR<~x->R<~K/>O/V/VOO2<@\K/>O;mx->O2<@\x->O2<@\E3>;m(>Y59aA>=ȭ:A>=q*A>=I|A>1`6.=A>@SE"=A>a=J/A>=@RA>L=`"A>8ۨ@Sv6A>8ۨ<A>D=@c<:A>u=A =A>y=YpXA>ۢj A>?@['O>'4'O>*C4'O>6n<'O>*C4'O><'O>6n<'O>6n<'O><'O>C}"='O><'O>t(='O>C}"='O>C}"='O>t(='O>O&Ec='O>t(='O>L0l='O>O&Ec='O>O&Ec='O>L0l='O>K ='O>L0l='O>@$='O>K ='O>K ='O>@$='O>`+='O>@$='O>A1='O>`+='O>`+='O>A1='O> a+<='O>A1='O>1<='O> a+<='O> a+<='O>1<='O>g <='O>1<='O>=@$='O>g <='O>g <='O>=@$='O>_&E=c='O>=@$='O> L=0l='O>_&E=c='O>_&E=c='O> L=0l='O>C}="='O> L=0l='O>t=(='O>C}="='O>C}="='O>t=(='O>>n=<'O>t=(='O>=<'O>>n=<'O>>n=<'O>=<'O>/=4'O>=<'O>/C=4'O>/=4'O>/=4'O>/C=4'O>>n=@'O>/C=4'O>='O>>n=@'O>>n=@'O>='O>C}=@"'O>='O>t=('O>C}=@"'O>C}=@"'O>t=('O>_&E=c'O>t=('O> L=0l'O>_&E=c'O>_&E=c'O> L=0l'O>g <숽'O> L=0l'O>= $'O>g <숽'O>g <숽'O>= $'O> a+<'O>= $'O>1<'O> a+<'O> a+<'O>1<'O>`+'O>1<'O>A1'O>`+'O>`+'O>A1'O>K 숽'O>A1'O> $'O>K 숽'O>K 숽'O> $'O>O&Ec'O> $'O>L0l'O>O&Ec'O>O&Ec'O>L0l'O>C}@"'O>L0l'O>t('O>C}@"'O>C}@"'O>t('O>6n@'O>t('O>'O>6n@'O>6n@'O>'O>'4'O>'O>*C4'O>'4;>7= :F;>-O=;@;>0-O=;@;>O =`t;>00O =`t;>6!<`;>O =`t;>C{<ĉ;>6!<`;>6!<`;>C{<ĉ;>P6!`;>C{<ĉ;>ꌽ;>P6!`;>P6!`;>ꌽ;>꼀s;>ꌽ;>μ ;>꼀s;>꼀s;>μ ;>7 :F;>μ ;>60\;>7 :F;>7 :F;>60\;>/j4;>60\;>˃i 5;>/j4;>/j4;>˃i 5;>2уp;>˃i 5;>;>2уp;>2уp;>;>;Ԇ;;>;>O4;>;Ԇ;;>;Ԇ;;>O4;>{<;>O4;><;>{<;>{<;><;>kS(=;><;>˃i`5=;>kS(=;>kS(=;>˃i`5=;>hT`m_=;>˃i`5=;>60\=;>hT`m_=;>hT`m_=;>60\=;>niP3=;>60\=;>μ0=;>niP3=;>niP3=;>μ0=;>,2 5=;>μ0=;>=;>,2 5=;>,2 5=;>=;>i=;>C{<ĉ=;>iiC{<ĉ=;>tT=`m_=;>C{<ĉ=;>O =t=;>tT=`m_=;>tT=`m_=;>O =t=;>"kS=(=;>O =t=;>-O=;@=;>"kS=(=;>"kS=(=;>-O=;@=;>{=<;>-O=;@=;>~=@<;>{=<;>{=<;>~=@<;>BԆ=;;>~=@<;>׻=~(<;>BԆ=;;>BԆ=;;>׻=~(<;>:у=p;>׻=~(<;>׻=}(;>:у=p;>:у=p;>׻=}(;>/j=4;>׻=}(;>~=@@;>/j=4;>/j=4;>~=@@;>7= :F;>~=@@;>-O=;@;>7= :F9>< V=x->zb$<0=9>{b$<0=x->zb$<0=x->b$0=9>{b$<0=9>{b$<0=x->b$0=9>b$0=x->b$0=x-> V=9>b$0=9>b$0=x-> V=9> V=x-> V=x->G= V=9> V=x->G=G=G=Jr=9>G=G=Jr=9>Jr=x->Jr=x-> @<9>Jr=9>Jr=x-> @<9> @<9>fr==x->`==`==`==< V=9>`==`==< V=9>< V=9>< V=x->< V=x->zb$<0=9>`==`fr=9>fr=x->fr=x->=9>fr=9>fr=x->=9>=x->=x->Tb=49>=9>=x->Tb=49>Tb=4x->Tb=4x->=@<9>Tb=49>Tb=4x->=@<9>=@=@br==9>=@<9>=@br==9>fr==9>fr==x->br==x->`== @Hb49> @<9> @Hb49>Hb4x->Hb4x-> 9>Hb49>Hb4x-> 9> x-> x->Jr9> 9> x->Jr9>Jrx->Jrx->G=`Jr9>Jrx->G=`G=`G=`V9>G=`G=`V9>Vx->Vx->b$ꎽ9>V9>Vx->b$ꎽ9>b$ꎽx->b$ꎽx->zb$<ꎽ9>b$ꎽ9>b$ꎽx->zb$<ꎽ9>{b$<ꎽx->zb$<ꎽx-><V9>{b$<ꎽ9>{b$<ꎽx-><V9><V9><Vx-><V9>`==`<Vx->`==``==``==``==`fr=A>ǚj-p>>8@ۨA>?@[A>ǚj-p>>w4p>>8@ۨp>>8@ۨA>pXA>?@[p>>8@ۨA>ۢj A>pXp>>E`"A>ۢj p>>8@ۨp>>E`"A>À 2A>ۢj p>>E`"A>dUA>À 2p>>!UdA>dUp>>E`"A>dUTA>Njp>>!UdTA>NjA>d.p>>!Udp>>!UdA>d.o>>V슽A>d.A>+ P`o>>V슽o>>T~1A>+ P`o>>V슽o>>T~1A>`ߔA>+ P`A>`ߔ8A>uZ ™o>>T~1o>>T~18A>uZ ™o>>ت;08A>uZ ™A>E%P=o>>ت;0A>E%P=A>A; o>>ت;0o>>ت;0A>A; EA>sR<晽o>>ت;0A>CosR<晽o>>GCo>ت;0o>>G <A>Co>v4=`A> <o>>G <A>\=o>>v4=`A>\=A>_@=vo>>v4=`n>>4r= }Eo>>v4=`+A>>fl=L+A>>fl=Lo>>v4=`6A>uX=`Sao>>v4=`A>_@=v6A>uX=`Sa+A>>fl=LA>a=J/n>>4r= }EA>a=J/A>L=`"n>>4r= }En>>y=XA>L=`"n>>4r= }EA>=In>>=q*A>=q*A>=In>>y=Xn>>=q*A>=In>>y=XA>=@RA>=@RA>L=`"n>>y=XA>=q*A>=ȭ:n>>=q*n>>=r*=ȭ:n>>=q*A>=ȭ:(A>ʚ=,>=r*<(A>ʚ=,<A>D=@c>=r*>=r*<A>D=@c>y=Y<A>D=@cy=Y>y=Y>y=Yy=Y<:A>u=A =:A>u=A =A>!k=f%=n>>y=Y!k=f%= A>u=`@=n>>y=Y>4r=@}E= A>u=`@=n>>y=Y_=Z= A>u=`@=n>>4r=@}E=n>>4r=@}E=A>}@=v=CA>_=Z=n>>4r=@}E=A>}@=v=o>>v4==o>>v4==A>}@=v=A>!\==A>!\==A> #< =o>>v4==o>>v4==A> #< =o>>G #< =A>j<=o>>G>Gj<=o>>ت;P=A>j<=A>hR<=o>>ت;P=A>hR<=A>4;PF=o>>ت;P=o>>ت;P=A>4;PF=o>>T~1=A>4;PF=A>j=o>>T~1=A>j=AA>U@ݘ=o>>T~1=o>>T~1=AA>U@ݘ=A>/ 0=A>/ 0=A>$/ >=o>>T~1=o>>T~1=A>$/ >=o>>V=A>$/ >=A>p$Є=o>>V=o>>V=A>p$Є=p>>!U@d=A>p$Є=;A>Bt=p>>!U@d=;A>Bt=A>hFb+W=p>>!U@d=A>hFb+W=|A>1`6.=p>>!U@d=p>>!U@d=|A>1`6.=p>>E"=|A>1`6.=A>E"=p>>E"=A>E"=A>@S

>E"=p>>8ۨ@S

>E"=p>>8ۨ@S

>8ۨ*rA>8ۨ

>w4A>*rp>>8ۨ<A>ǚj-A>*rp>>w4P@S>>n=<'O>/=4P@S>/=4'O>/=4'O>>n=@P@S>/=4P@S>/=4'O>>n=@P@S>>n=@'O>>n=@'O>C}=@"P@S>>n=@P@S>>n=@'O>C}=@"P@S>C}=@"'O>C}=@"'O>_&E=cP@S>C}=@"P@S>C}=@"'O>_&E=cQ@S>_&E=c'O>_&E=c'O>g <숽Q@S>_&E=cQ@S>_&E=c'O>g <숽Q@S>h <숽'O>g <숽'O> a+h <숽Q@S>h <숽'O> a+ a+<'O> a+<'O>`+Q@S> a+ a+<'O>`+Q@S>`+'O>`+'O>K 숽Q@S>`+Q@S>`+'O>K 숽Q@S>J 숽'O>K 숽'O>O&EcQ@S>J 숽Q@S>J 숽'O>O&EcQ@S>O&Ec'O>O&Ec'O>C}@"Q@S>O&EcQ@S>O&Ec'O>C}@"R@S>C}@"'O>C}@"'O>6n@R@S>C}@"R@S>C}@"'O>6n@R@S>6n@'O>6n@'O>'4R@S>6n@R@S>6n@'O>'4R@S>'4'O>'4'O>6n'4R@S>'4'O>6n6n<'O>6n<'O>C}"=R@S>6n6n<'O>C}"=R@S>C}"='O>C}"='O>O&Ec=R@S>C}"=R@S>C}"='O>O&Ec=Q@S>O&Ec='O>O&Ec='O>K =Q@S>O&Ec=Q@S>O&Ec='O>K =Q@S>J ='O>K ='O>`+=Q@S>J =Q@S>J ='O>`+=Q@S>`+='O>`+='O> a+<=Q@S>`+=Q@S>`+='O> a+<=Q@S> a+<='O> a+<='O>g <=Q@S> a+<=Q@S> a+<='O>g <=Q@S>h <='O>g <='O>_&E=c=Q@S>h <=Q@S>h <='O>_&E=c=Q@S>_&E=c='O>_&E=c='O>C}="=Q@S>_&E=c=Q@S>_&E=c='O>C}="=P@S>C}="='O>C}="='O>>n=C}="=P@S>C}="='O>>n=>n=<'O>>n=<'O>/=4P@S>>n=<;>niP3=8>w󜼀i~=;>hT`m_=8>w󜼀i~=8>m[=;>hT`m_=;>hT`m_=8>m[=;>kS(=8>m[=8>'P%=;>kS(=;>kS(=8>'P%=;>{<8>'P%=8>w<;>{<;>{<8>w<;>;Ԇ;8>w<8>j,;;>;Ԇ;;>;Ԇ;8>j,;;>2уp8>j,;8>Hȁl;>2уp;>2уp8>Hȁl;>/j48>Hȁl8> f;>/j4;>/j48> f;>7 :F8> f8>5*C;>7 :F;>7 :F8>5*C;>꼀s8>5*C8>缠o;>꼀s;>꼀s8>缠o;>P6!`8>缠o8>;;>P6!`;>P6!`8>;;>6!<`8>;8>w<;>6!<`;>6!<`8>w<;>0w<8>007= :F8>5=*C;>7= :F;>7= :F8>5=*C;>/j=48>5=*C8>f=;>/j=4;>/j=48>f=;>:у=p8>f=8>Pȁ=l;>:у=p;>:у=p8>Pȁ=l;>BԆ=;8>Pȁ=l8>s=,;;>BԆ=;;>BԆ=;8>s=,;;>{=<8>s=,;8>w=<;>{=<;>{=<8>w=<;>"kS=(=8>w=<8>'P=%=;>"kS=(=;>"kS=(=8>'P=%=;>tT=`m_=8>'P=%=8>|=[=;>tT=`m_=;>tT=`m_=8>|=[=;>i|=[=8>ii,2 5=8>uR2=;>,2 5=;>,2 5=8>uR2=;>niP3=8>uR2=8>w󜼀i~=;>niP3=G>劽s>oVBKC>Vs>oVBK2>E [C>VC>V2>E [Ƥ>0X@Ƥ>0X@2>E [B>(F~Pލ2>E [P>o A`B>(F~PލB>(F~PލP>o A`t?>q{0t?>q{0P>o A`ƒ>j}P>o A`q >KUƒ>j}ƒ>j}q >KU>>q >KUX>Vq >KU֓>O>X>VX>V֓>O>>B X֓>O>=*>\N`gA>B X>B X=*>\N`gA8>_ލF~8>_ލF~=*>\N`gA]>:`{=*>\N`gA>B0S<8]>:`{]>:`{>B0S<8wΏ>~>B0S<8s>oVBKwΏ>~wΏ>~s>oVBKG>劽9>L,<{9><V9>q=x9><V9>`==`q=x9>q=x9>`==`=^=@ A9>`==`fr=9>=^=@ A9>=^=@ A9>fr=9>}!=9>fr=9>=9>}!=9>}!=9>=9>='9>=9>Tb=49>='9>='9>Tb=49>='<9>Tb=49>=@<9>='<9>='<9>=@<9>}!=<9>=@<9>fr==9>}!=<9>}!=<9>fr==9>=^= A=9>fr==9>`===^= A=9>=^= A=9>`==q=x=9>`==< V=9>q=x=9>q=x=9>< V=9>L,<{=9>< V=9>{b$<0=9>L,<{=9>L,<{=9>{b$<0=9>ZQ3t=9>{b$<0=9>b$0=9>ZQ3t=9>ZQ3t=9>b$0=9>,{=9>b$0=9> V=9>,{=9>,{=9> V=9>px=9> V=9>G=px=9>px=9>G=#^ A=9>G=Jr=9>#^ A=9>#^ A=9>Jr=9>o!<9>Jr=9> @<9>o!<9>o!<9> @<9>}'<9> @<9>Hb49>}'<9>}'<9>Hb49>}'9>Hb49> 9>}'9>}'9> 9>o!9> 9>Jr9>o!9>o!9>Jr9>#^@ A9>Jr9>G=`#^@ A9>#^@ A9>G=`px9>G=`V9>px9>px9>V9>,{9>V9>b$ꎽ9>,{9>,{9>b$ꎽ9>ZQ3t9>b$ꎽ9>{b$<ꎽ9>ZQ3t9>ZQ3t9>{b$<ꎽ9>L,<{9>{b$<ꎽ9><V9>L,<{n>>wk=n>>y=Xn>>4r= }En>>wk=n>>=q*n>>y=Xn>>@N=4n>>=q*n>>wk=n>>@N=4n>>=r*>=q*n>>wk=>=r*>@N=4n>>wk=>y=Y>=r*>Wzt==n>>y=Y>wk=>Wzt==n>>4r=@}E=n>>y=Y>]O>=@[=n>>4r=@}E=n>>Wzt==o>>]O>=@[=o>>v4==n>>4r=@}E=o>>]O>=@[=o>>v4==o>>r<,=o>>v4==o>>G>r<,=o>>r<,=o>>G>o%<ӏ=o>>G>ت;P=o>>o%<ӏ=o>>o%<ӏ=o>>ت;P=o>>n%ӏ=o>>ت;P=o>>T~1=o>>n%ӏ=o>>n%ӏ=o>>T~1=o>>r,=o>>T~1=o>>V=o>>r,=o>>r,=o>>V=o>>LO>@[=o>>V=p>>!U@d=o>>LO>@[=o>>LO>@[=p>>!U@d=p>>Dzt=p>>!U@d=p>>E"=p>>Dzt=p>>nk

>E"=p>>Dzt=p>>nk

>8ۨ

>E"=p>>8N4p>>8ۨ

>nk

>8N4p>>w4p>>8ۨ

>nkp>>w4p>>8N4p>>nkp>>8@ۨp>>w4p>>Dztp>>8@ۨp>>nkp>>Dztp>>E`"p>>8@ۨo>>LO>[p>>E`"p>>Dzto>>LO>[p>>!Udp>>E`"o>>LO>[p>>!Udo>>r,p>>!Udo>>V슽o>>r,o>>n%ӏo>>V슽o>>r,o>>n%ӏo>>T~1o>>V슽o>>o%<ӏo>>T~1o>>n%ӏo>>T~1o>>ت;0o>>o%<ӏo>>o%<ӏo>>ت;0o>>r<,o>>ت;0o>>G>r<,o>>r<,o>>G>]O>=[o>>]O>=[o>>v4=`o>>G>Wzt=o>>v4=`o>>]O>=[n>>Wzt=n>>4r= }Eo>>v4=`n>>wk=n>>4r= }En>>Wzt=Q@S>J =Q@S>@$=Q@S>O&Ec=Q@S>@$=R@S>L0l=Q@S>O&Ec=Q@S>O&Ec=R@S>L0l=R@S>C}"=R@S>L0l=R@S>t(=R@S>C}"=R@S>C}"=R@S>t(=R@S>6nt(=R@S>6n6n'4R@S>*C4R@S>'4R@S>'4R@S>*C4R@S>6n@R@S>*C4R@S>R@S>6n@R@S>6n@R@S>R@S>C}@"R@S>R@S>t(R@S>C}@"R@S>C}@"R@S>t(Q@S>O&EcR@S>t(R@S>L0lQ@S>O&EcQ@S>O&EcR@S>L0lQ@S>J 숽R@S>L0lQ@S> $Q@S>J 숽Q@S>J 숽Q@S> $Q@S>`+Q@S> $Q@S>A1Q@S>`+Q@S>`+Q@S>A1Q@S> a+A1Q@S>1<Q@S> a+ a+1<Q@S>h <숽Q@S>1<Q@S>= $Q@S>h <숽Q@S>h <숽Q@S>= $Q@S>_&E=cQ@S>= $P@S> L=0lQ@S>_&E=cQ@S>_&E=cP@S> L=0lP@S>C}=@"P@S> L=0lP@S>t=(P@S>C}=@"P@S>C}=@"P@S>t=(P@S>>n=@P@S>t=(P@S>=P@S>>n=@P@S>>n=@P@S>=P@S>/=4P@S>=P@S>/C=4P@S>/=4P@S>/=4P@S>/C=4P@S>>n=/C=4P@S>=>n=>n==C}="=P@S>=t=(=P@S>C}="=P@S>C}="=P@S>t=(=Q@S>_&E=c=P@S>t=(=P@S> L=0l=Q@S>_&E=c=Q@S>_&E=c=P@S> L=0l=Q@S>h <=P@S> L=0l=Q@S>=@$=Q@S>h <=Q@S>h <=Q@S>=@$=Q@S> a+<=Q@S>=@$=Q@S>1<=Q@S> a+<=Q@S> a+<=Q@S>1<=Q@S>`+=Q@S>1<=Q@S>A1=Q@S>`+=Q@S>`+=Q@S>A1=Q@S>J =Q@S>A1=Q@S>@$=Q@S>J =8>'P%=8>m[=8>w<8>m[=8>w󜼀i~=8>w<8>w<8>w󜼀i~=8>j,;8>w󜼀i~=8> f8>j,;8>j,;8> f8>Hȁl8>5*C8> f8>缠o8> f8>f=8>缠o8>w󜼀i~=8>uR2=8> f8>uR2=8> f8> f8>|=[=8>;8>缠o8>w<8>缠o8>f=8>w<8>w<8>f=8>f=8>5=*C8>Pȁ=l8>f=8>s=,;8>f=8> f8>s=,;8>s=,;8> f8>w=<8> f8>|=[=8>w=<8>w=<8>|=[=8>'P=%=9>L,<{=3w>q=x=9>q=x=3w>q=x=3w>>^= A=9>q=x=9>q=x=3w>>^= A=9>=^= A=3w>>^= A=3w>~!=<9>=^= A=9>=^= A=3w>~!=<9>}!=<3w>~!=<3w>='<9>}!=<9>}!=<3w>='<9>='<3w>='<3w>='9>='<9>='<3w>='9>='3w>='3w>~!=9>='9>='3w>~!=9>}!=3w>~!=3w>>^=@ A9>}!=9>}!=3w>>^=@ A9>=^=@ A3w>>^=@ A3w>q=x9>=^=@ A9>=^=@ A3w>q=x9>q=x3w>q=x3w>I,<{9>q=x9>q=x3w>I,<{9>L,<{9>L,<{3w>I,<{9>ZQ3t3w>I,<{3w>tR^3t9>ZQ3t3w>tR^3t3w>,{9>ZQ3t9>ZQ3t3w>,{9>,{3w>,{3w>px9>,{9>,{3w>px9>px3w>px3w>"^@ A9>px9>px3w>"^@ A9>#^@ A3w>"^@ A3w>n!9>#^@ A9>#^@ A3w>n!9>o!3w>n!3w>|'9>o!9>o!3w>|'9>}'3w>|'3w>|'<9>}'9>}'3w>|'<9>}'<3w>|'<3w>o!<9>}'<9>}'<3w>o!<9>o!<3w>o!<3w>"^ A=9>o!<9>o!<3w>"^ A=9>#^ A=3w>"^ A=3w>px=9>#^ A=9>#^ A=3w>px=9>px=3w>px=3w>,{=9>px=9>px=3w>,{=9>,{=3w>,{=3w>tR^3t=9>,{=9>,{=3w>tR^3t=9>ZQ3t=3w>tR^3t=3w>I,<{=9>ZQ3t=9>ZQ3t=3w>I,<{=9>L,<{=9>L,<{=3w>I,<{=3w>q=x=n>>@N=4Q8>@N=4n>>wk=>@N=4Q8>wk=Q8>@N=4n>>wk=Q8>wk=n>>@N=4n>>wk=Q8>Vzt=Q8>wk=n>>Wzt=Q8>Vzt=n>>wk=n>>Wzt=Q8>\O>=[Q8>Vzt=o>>]O>=[Q8>\O>=[n>>Wzt=Q8>\O>=[Q8>r<,o>>]O>=[o>>]O>=[Q8>r<,o>>r<,Q8>r<,Q8>o%<ӏo>>r<,o>>r<,Q8>o%<ӏo>>o%<ӏo>>o%<ӏQ8>n%ӏQ8>o%<ӏo>>n%ӏQ8>n%ӏo>>o%<ӏo>>n%ӏQ8>r,Q8>n%ӏo>>r,Q8>r,o>>n%ӏo>>r,Q8>MO>[Q8>r,o>>r,Q8>MO>[o>>LO>[o>>LO>[Q8>EztQ8>MO>[p>>DztQ8>Ezto>>LO>[p>>DztQ8>nkQ8>Eztp>>nkQ8>nkp>>Dztp>>nkQ8>8N4Q8>nkp>>8N4Q8>8N4p>>nkp>>8N4Q8>nk8N4p>>nknk

>8N4p>>nkEzt=Q8>nk

>Dzt=Q8>Ezt=p>>nk

>Dzt=Q8>MO>@[=Q8>Ezt=p>>Dzt=Q8>MO>@[=o>>LO>@[=Q8>MO>@[=Q8>r,=o>>LO>@[=o>>LO>@[=Q8>r,=o>>r,=Q8>r,=Q8>n%ӏ=o>>r,=o>>r,=Q8>n%ӏ=o>>n%ӏ=Q8>n%ӏ=Q8>o%<ӏ=o>>n%ӏ=o>>n%ӏ=Q8>o%<ӏ=o>>o%<ӏ=Q8>o%<ӏ=Q8>r<,=o>>o%<ӏ=o>>o%<ӏ=Q8>r<,=o>>r<,=Q8>r<,=Q8>\O>=@[=o>>r<,=o>>]O>=@[=Q8>\O>=@[=o>>r<,=o>>]O>=@[=Q8>Vzt==Q8>\O>=@[=n>>Wzt==Q8>Vzt==o>>]O>=@[=n>>Wzt==Q8>wk=Vzt==n>>wk=wk=>Wzt==n>>wk=@N=4Q8>wk=<9W>=*P@S>=P@S>t=(P@S> L=0lsW>{o=`IP@S>t=(sW>{o=`IW>=+&P@S>t=(P@S>t=(W>=+&9W>=*Q@S>= $W>(=tP@S> L=0lW>(=tW> L=0lP@S> L=0lP@S> L=0lW> L=0lsW>{o=`IQ@S>1<W><Q@S>= $W><W>= $Q@S>= $Q@S>= $W>= $W>(=tQ@S>A1W>O 3 CQ@S>1<W>O 3 CW>1<Q@S>1<Q@S>1<W>1<W><Q@S> $W>Q@S>A1W>W>@1Q@S>A1Q@S>A1W>@1W>O 3 CR@S>L0lW>(tQ@S> $W>(tW> $Q@S> $Q@S> $W> $W>R@S>t(}W>toIR@S>L0l}W>toIW>L0lR@S>L0lR@S>L0lW>L0lW>(tR@S>W>c䎽R@S>t(W>c䎽W> '&R@S>t(R@S>t(W> '&}W>toIR@S>*C4W>񚽀.R@S>W>񚽀.W>dެR@S>R@S>W>dެW>c䎽R@S>񚽀.*C4W>񚽀.y4R@S>*C4R@S>*C4W>y4W>񚽀.R@S>t(=W>c䎽@c䎽@񚽀.L0l=|W>toI=R@S>t(=|W>toI=W>`'&=R@S>t(=R@S>t(=W>`'&=W>c䎽@@$=W>(t=R@S>L0l=W>(t=W>L0l=R@S>L0l=R@S>L0l=W>L0l=|W>toI=Q@S>A1=W>=Q@S>@$=W>=W>@$=Q@S>@$=Q@S>@$=W>@$=W>(t=Q@S>1<=W>O 3@C=Q@S>A1=W>O 3@C=W>@1=Q@S>A1=Q@S>A1=W>@1=W>=Q@S>=@$=W><=Q@S>1<=W><=W>1<=Q@S>1<=Q@S>1<=W>1<=W>O 3@C=P@S> L=0l=W>(=t=Q@S>=@$=W>(=t=W>=@$=Q@S>=@$=Q@S>=@$=W>=@$=W><=9W>=*W>=P@S>=W>=W>/C=4P@S>=P@S>=W>/C=4P@S>/C=4W>/C=4W>=/C=4P@S>/C=4W>===t=(=P@S>==t=(=P@S>t=(=W>t=(=sW>{o=I=P@S>t=(=P@S>t=(=sW>{o=I=P@S> L=0l=sW>{o=I=W> L=0l=P@S> L=0l=P@S> L=0l=W> L=0l=W>(=t=3w>jfe3w>k?3w>n!3w>V0sN3w>o!<3w>{2@*̼3w>n!3w>k?3w>|'3w>k?3w>jf33w>|'3w>|'3w>jf33w>|'<3w>jf33w>X@*̼3w>|'<3w>|'<3w>X@*̼3w>o!<3w>X@*̼3w>E3w>o!<3w>o!<3w>E3w>{2@*̼3w>{2@*̼3w>w$33w>V0sN3w>w$33w>U?3w>V0sN3w>V0sN3w>U?3w>y`w\3w>U?3w>w$e3w>y`w\3w>y`w\3w>w$e3w>{2j(3w>o!<3w>C3w>1b43w>0o3w>px3w>ya3w>px3w>,{3w>ya3w>jfe3w>n!3w>Xj(3w>n!3w>"^@ A3w>Xj(3w>Xj(3w>"^@ A3w>E-3w>"^@ A3w>px3w>E-3w>E-3w>px3w>{2j(3w>px3w>0o3w>{2j(3w>{2j(3w>0o3w>y`w\3w>C3w>o!<3w>⻀C3w>o!<3w>V0sN3w>⻀C3w>⻀C3w>V0sN3w>tR^3b3w>V0sN3w>tR^3`QI3w>tR^3b3w>tR^3b3w>tR^3`QI3w>;C3w>tR^3`QI3w>41;sN3w>;C3w>;C3w>41;sN3w><`w\3w>0I,<{3w>41; d3w>I,<{3w>I,<{3w>41; d3w>tR^3t3w>41; d3w>tR^33w>tR^3t3w>tR^3t3w>tR^33w>,{3w>tR^33w>V0 d3w>,{3w>,{3w>V0 d3w>ya3w>1b43w>C;3w>o!<3w>C;3w>⻀C<3w>o!<3w>o!<3w>⻀C<3w>U= @=3w>⻀C<3w>tR^3b<3w>U= @=3w>tR^3b<3w>;C<3w>U= @=3w>;C<3w>C<;3w>U= @=3w>U= @=3w>C<;3w>='<3w>C<;Ow>db<3w>='<3w>='db<3w>='3w><`w\3w>0;C3w>0I,<{3w>;C3w>I,<{3w>q=x3w>;C3w>q=x3w>>^=@ A3w>;C3w>;C3w>>^=@ AOw>db<3w>>^=@ A3w>~!=Ow>db<Ow>db<3w>~!=3w>='v>!:=%w>)Q)=3w>o!<3w>o!<%w>)Q)=3w>"^ A=3w>"^ A=%w>)Q)=3w>px=3w>px=%w>)Q)=3w>,{=3w>,{=%w>)Q)=3w>tR^3t=3w>tR^3t=%w>)Q)=3w>I,<{=%w>)Q)=v>!:=3w>I,<{=3w>I,<{=v>!:=3w>U= @=3w>U= @=v>!:=3w>o!<3w>f=4<3w>='<3w> k= @=3w>='<3w>~!=<3w> k= @=3w>U= @=3w>-w$= f=3w>I,<{=3w>-w$= f=3w>{2=j(=3w>I,<{=3w>I,<{=3w>{2=j(=3w>q=x=3w>{2=j(=3w>١E=@-=3w>q=x=3w>q=x=3w>١E=@-=3w>>^= A=3w>١E=@-=3w>X=j(=3w>>^= A=3w>>^= A=3w>X=j(=3w>~!=<3w>X=j(=3w>f= f=3w>~!=<3w>~!=<3w>f= f=3w> k= @=3w>f=4<3w>X=*<3w>='<3w>X=*<3w>١E=<3w>='<3w>='<3w>١E=<3w>U= @=3w>١E=<3w>{2=*<3w>U= @=3w>U= @=3w>{2=*<3w>-w$=4nk78>܅j!<78>܅i!Q8>nkQ8>8N478>܅j!<78>sQ8>nk78>܅i!78>sQ8>EztQ8>nk78>LyF (8Q8>Ezt78>s꼸78>LyF (8Q8>MO>[Q8>Ezt78>_yjQ8>MO>[78>LyF (878>_yjQ8>r,Q8>MO>[78>lpQ8>r,78>_yj78>lpQ8>n%ӏQ8>r,78>ݡ;Q8>n%ӏ78>lp78>ݡ;Q8>o%<ӏQ8>n%ӏ78>"<|Q8>o%<ӏ78>ݡ;Q8>o%<ӏQ8>r<,78>"<|78>"<|Q8>r<,78>`(=@SQ8>r<,Q8>\O>=[78>`(=@S78>`(=@SQ8>\O>=[78>Q_=78>Q_=Q8>Vzt=Q8>\O>=[Q8>)=]Q8>Vzt=78>Q_=Q8>)=]Q8>wk=Q8>Vzt=8>͔=4Q8>wk=Q8>)=]8>͔=4Q8>@N=4Q8>wk=Q8>)=^@N=48>͔=4Q8>)=^wk=@N=478>Q_==Q8>wk=)=^<78>Q_==Q8>Vzt==Q8>wk=<78>`(=S=Q8>Vzt==78>Q_==78>`(=S=Q8>\O>=@[=Q8>Vzt==78>"<|=Q8>\O>=@[=78>`(=S=78>"<|=Q8>r<,=Q8>\O>=@[=78>ݡ;0=Q8>r<,=78>"<|=78>ݡ;0=Q8>o%<ӏ=Q8>r<,=78>lp0=Q8>o%<ӏ=78>ݡ;0=78>lp0=Q8>n%ӏ=Q8>o%<ӏ=78>_ zj=Q8>n%ӏ=78>lp0=78>_ zj=Q8>r,=Q8>n%ӏ=78>LyF`(8=Q8>r,=78>_ zj=78>LyF`(8=Q8>MO>@[=Q8>r,=78>sMO>@[=78>LyF`(8=78>sEzt=Q8>MO>@[=78>܅j!Ezt=78>s<78>܅j!nkEzt=Q8>8N4Q8>nk<78>܅j!{o=I=W>t=(=W>݅= "=W>݅= "=W>t=(=W>ܖ=@t=(=W>=ܖ=@ܖ=@=C=06sW>{o=I=W>U=e=W> L=0l=W>U=e=W>4=@=W> L=0l=W> L=0l=W>4=@=W>(=t=W>4=@=W>(=`=W>(=t=W>(=t=W>(=`=W>=@$=W>(=`=W>=@$=W>=@$=W><=W><0e=W><=W><=W><0e=W>1<=W><0e=W>l;N=W>1<=W>1<=W>l;N=W>O 3@C=W>l;N=W>N=W>O 3@C=W>O 3@C=W>N=W>@1=W>N=W>0e=W>@1=W>@1=W>0e=W>=W>0e=W>bѼP=W>=W>=W>bѼP=W>@$=W>bѼP=W>(`=W>@$=W>@$=W>(`=W>(t=W>(`=W>4@=W>(t=W>(t=W>4@=W>L0l=W>4@=W>Ue=W>L0l=W>L0l=W>Ue=|W>toI=}W>toIW>UeW>L0lW>UeW>4W>L0lW>L0lW>4W>(tW>4W>(@W>(tW>(tW>(@W> $W>(@W>bѼ0W> $W> $W>bѼ0W>W>bѼ0W>eW>W>W>eW>@1W>eW>NW>@1W>@1W>NW>O 3 CW>NW>l;NW>O 3 CW>O 3 CW>l;NW>1<W>l;NW><eW>1<W>1<W><eW><W><eW><0W><W><W><0W>= $W><0W>(=@W>= $W>= $W>(=@W>(=tW>(=@W>4=W>(=tW>(=tW>4=W> L=0lW>4=W>U=eW> L=0lW> L=0lW>U=esW>{o=`I9W>=*W>ܖ=W>=W>ܖ=pW>C=06W>=O>C<Ow>db<O>b<4Ow>db<3w>C<;O>b<4O>b<43w>C<;O>C<;O>C<;3w>C<;O>;C<3w>C<;3w>;C<O>;C<3w>;C<3w>tR^3b<O>;C<O>;C<3w>tR^3b<O>!`3b<3w>tR^3b<3w>⻀C<O>!`3b<O>!`3b<3w>⻀C<O>⻀C<3w>⻀C<3w>C;O>⻀C<O>⻀C<3w>C;O>C;3w>C;3w>1b4O>C;O>C;3w>1b4O>0b43w>1b43w>CO>0b4O>0b43w>CO>C3w>C3w>⻀CO>CO>C3w>⻀CO>⻀C3w>⻀C3w>tR^3bO>⻀CO>⻀C3w>tR^3bO>!`3b3w>tR^3b3w>;CO>!`3bO>!`3b3w>;CO>;CO>;C3w>;CO>C<3w>;COw>db<O>C<K>#=v>!:=u>:I$=u>:I$=%w>)Q)=v>!:=u>:I$=%w>)Q)=K>#=%w>)Q)=v>!:=K>#=3w>V0sN|>`3`QI3w>tR^3`QI|>`3`QI|>51;sN3w>tR^3`QI3w>tR^3`QI|>51;sN3w>41;sN|>51;sN|><`w\3w>41;sN3w>41;sN|><`w\3w><`w\|><`w\|>0<`w\3w><`w\|>0000051; d3w>51; d3w>41; d|>51; d|>`33w>41; d3w>41; d|>`33w>tR^3|>`3|>U0 d3w>tR^33w>tR^3|>U0 d3w>V0 d|>U0 d|>xa3w>V0 d3w>V0 d|>xa3w>ya|>xa|>0o3w>ya3w>ya|>0o3w>0o|>0o|>x`w\3w>0o3w>0o|>x`w\3w>y`w\|>x`w\|>U0sN3w>y`w\3w>y`w\|>U0sN3w>V0sN|>U0sN|>`3`QI3w>V0sN3w>X@*̼|>E3w>E|>E|>{2@*̼3w>E3w>E|>{2@*̼3w>{2@*̼|>{2@*̼|>w$33w>{2@*̼3w>{2@*̼|>w$33w>w$3|>w$3|>U?3w>w$33w>w$3|>U?3w>U?|>U?|>w$e3w>U?3w>U?|>w$e3w>w$e|>w$e|>{2j(3w>w$e3w>w$e|>{2j(3w>{2j(|>{2j(|>E-3w>{2j(3w>{2j(|>E-3w>E-|>E-|>Xj(3w>E-3w>E-|>Xj(3w>Xj(|>Xj(|>jfe3w>Xj(3w>Xj(|>jfe3w>jfe|>jfe|>k?3w>jfe3w>jfe|>k?3w>k?|>k?|>jf33w>k?3w>k?|>jf33w>jf3|>jf3|>X@*̼3w>jf33w>jf3|>X@*̼3w>X@*̼|>X@*̼|>E3w>X@*̼3w>{2=j(=|>١E=@-=3w>١E=@-=|>١E=@-=|>X=j(=3w>١E=@-=3w>١E=@-=|>X=j(=3w>X=j(=|>X=j(=|>f= f=3w>X=j(=3w>X=j(=|>f= f=3w>f= f=|>f= f=|> k= @=3w>f= f=3w>f= f=|> k= @=3w> k= @=|> k= @=|>f=4<3w> k= @=3w> k= @=|>f=4<3w>f=4<|>f=4<|>X=*<3w>f=4<3w>f=4<|>X=*<3w>X=*<|>X=*<|>١E=<3w>X=*<3w>X=*<|>١E=<3w>١E=<|>١E=<|>{2=*<3w>١E=<3w>١E=<|>{2=*<3w>{2=*<|>{2=*<|>-w$=4<3w>{2=*<3w>{2=*<|>-w$=4<3w>-w$=4<|>-w$=4<|>U= @=3w>-w$=4<3w>-w$=4<|>U= @=3w>U= @=|>U= @=|>-w$= f=3w>U= @=3w>U= @=|>-w$= f=3w>-w$= f=|>-w$= f=|>{2=j(=3w>-w$= f=3w>-w$= f=|>{2=j(=3w>{2=j(=|>{2=j(=|>١E=@-=3w>{2=j(=Q8>)=]8>)=]8>͔=4Q8>)=]78>Q_=8>)=]Q8>)=^<8>)=^<78>Q_==Q8>)=^<8>͔=48>)=^<\B>>U=e=\B>>݅= "=sW>{o=I=]B>>(=`=W>4=@=\B>>U=e=W>4=@=W>U=e=\B>>U=e=\B>>U=e=W>U=e=sW>{o=I=]B>><0e=W>>(=`=W>(=`=]B>>(=`=]B>>(=`=W>(=`=W>4=@=]B>>N=W>l;N=]B>><0e=W>l;N=W><0e=]B>><0e=]B>><0e=W><0e=W>>dѼP=W>0e=]B>>N=W>0e=W>N=]B>>N=]B>>N=W>N=W>l;N=]B>>4@=W>(`=]B>>dѼP=W>(`=W>bѼP=]B>>dѼP=]B>>dѼP=W>bѼP=W>0e=^B>>zsE=W>Ue=]B>>4@=W>Ue=W>4@=]B>>4@=]B>>4@=W>4@=W>(`=^B>>`'&=^B>>zsE=W>`'&=|W>toI=^B>>zsE=^B>>zsE=|W>toI=W>Ue=^B>>s6*dެ<^B>>c䎽@<^B>><^B>>c䎽@`'&=^B>>s6*W>y4^B>>s6*y4W>񚽀.<^B>>s6*<^B>>s6*񚽀.dެ<^B>>W>dެ^B>>s6*W>dެW>񚽀.^B>>s6*^B>>s6*W>񚽀.W>y4^B>>zs@EW> '&^B>>W> '&W>c䎽^B>>^B>>W>c䎽W>dެ]B>>4W>Ue^B>>zs@EW>Ue}W>toI^B>>zs@E^B>>zs@E}W>toIW> '&]B>>dѼ0W>(@]B>>4W>(@W>4]B>>4]B>>4W>4W>Ue]B>>NW>e]B>>dѼ0W>eW>bѼ0]B>>dѼ0]B>>dѼ0W>bѼ0W>(@]B>><eW>l;N]B>>NW>l;NW>N]B>>N]B>>NW>NW>e]B>>(=@W><0]B>><eW><0W><e]B>><e]B>><eW><eW>l;N\B>>U=eW>4=]B>>(=@W>4=W>(=@]B>>(=@]B>>(=@W>(=@W><0\B>>U=esW>{o=`I\B>>݅="sW>{o=`IW>U=e\B>>U=e\B>>U=eW>U=eW>4=sW>{o=I=W>݅= "=\B>>݅= "=W>݅= "=W>ܖ=@<\B>>݅= "=\B>>݅= "=W>ܖ=@<\B>>ܖ=@ܖ=@C=06\B>>ܖ=@<\B>>ܖ=@C=06\B>> =4pW>C=06W>ܖ=\B>> =4\B>> =4W>ܖ=\B>>ܖ=W>ܖ=9W>=*\B>>ܖ=\B>>ܖ=9W>=*\B>>݅="9W>=*W>=+&\B>>݅="\B>>݅="W>=+&sW>{o=`I>X>VBV>_s@BV>_s@X>VΔ>} }X>V>B XΔ>} }Δ>} }>B XW>as>B X8>_ލF~W>asW>as8>_ލF~y>\sl8>_ލF~]>:`{y>\sly>\sl]>:`{dP>ֳ i]>:`{wΏ>~dP>ֳ idP>ֳ iwΏ>~>cglwΏ>~G>劽>cgl>cglG>劽F>ăsG>劽C>VF>ăsF>ăsC>V~͍>}}C>VƤ>0X@~͍>}}~͍>}}Ƥ>0X@D>s`Ƥ>0X@B>(F~PލD>s`D>s`B>(F~Pލ>sl\B>(F~Pލt?>q{0>sl\>sl\t?>q{0L>*it?>q{0ƒ>j}L>*iL>*iƒ>j} >-elaƒ>j}> >-ela >-ela>BV>_s@O>< ;O>C<;O> ;<O>C<;O>;C<O> ;<O> ;<O>;C<O>!`3 5<O>;C<O>!`3b<O>!`3 5<O>!`3 5<O>!`3b<O> <O>!`3b<O>⻀C<O> <O> <O>⻀C<O> ;O>⻀C<O>C;O> ;O> ;O>C;O> 54O>C;O>0b4O> 54O> 54O>0b4O> O>0b4O>CO> O> O>CO> O>CO>⻀CO> O> O>⻀CO>!`3 5O>⻀CO>!`3bO>!`3 5O>!`3 5O>!`3bO> ;O>!`3bO>;CO> ;O> ;O>;CO>< O>;CO>C<O>< O>< O>C<O>L 5<4O>C<O>b<4O>L 5<4O>L 5<4O>b<4O>< ;O>b<4O>C<;O>< ;|>E-|>U0sN|>x`w\|>X=*<|>f=4<|> = 0<|><`w\|>ܶi=J|>0ܶi=J|>:1'=|>00:1'=|>:1'=|>=@y`/=;|> = 0<|>g)=@|> = 0<|> = 0|>g)=@|>g)=@|> = 0|> =HԼ|> = 0|>wp< |> =HԼ|>Cp |>s -|>U0sN|>xa|>U0 d|>@P\|>@P\|>U0 d|>`3|>U0 d|>`3|>`3|>`3|>`3|>=@`3|>51; d|>=@=@51; d|>U0sN|>s -|>`3`QI|> = 0<|>f=4<|>=w=|>f=4<|> k= @=|>=w=|>=w=|> k= @=|>ܶi=J=|>s -|>bt< -|>`3`QI|>bt< -|>wp< |>`3`QI|>`3`QI|>wp< |>51;sN|>wp< |> = 0|>51;sN|>51;sN|> = 0|><`w\|> = 0|>=@w|><`w\|><`w\|>=@w|>ܶi=J|>X=*<|> = 0<|>١E=<|> = 0<|>y`/=;|>١E=<|>١E=<|>y`/=;|>{2=*<|>y`/=;|>ݩ=<|>{2=*<|>{2=*<|>ݩ=<|>-w$=4<|>ݩ=<|>VP< )=|>-w$=4<|>-w$=4<|>VP< )=|>U= @=|> 1'|>iJ|>Xj(|>w=|>E|> 0<|>E|>X@*̼|> 0<|> 0<|>X@*̼|> 0|>X@*̼|>jf3|> 0|> 0|>jf3|>@w|>jf3|>k?|>@w|>@w|>k?|>iJ|>k?|>jfe|>iJ|>iJ|>jfe|>Xj(|>xa|>@P\|>0o|>@P\|> 1'|>0o|>0o|> 1'|>x`w\|> 1'|>Xj(|>x`w\|>x`w\|>Xj(|>E-|> 1'=|><|>``/;|>VP< )=|>~< <$=|>U= @=|>~< <$=|>@p\=|>U= @=|>U= @=|>@p\=|>-w$= f=|>@p\=|>`3П=|>-w$= f=|>-w$= f=|>`3П=|>{2=j(=|>`3П=|>=@{2=j(=|>{2=j(=|>=@١E=@-=|>=@:1'==|>١E=@-=|>١E=@-=|>:1'==|>X=j(=|>:1'==|>ܶi=J=|>X=j(=|>X=j(=|>ܶi=J=|>f= f=|>ܶi=J=|> k= @=|>f= f=|>~< <$=|>`3 0=|>@p\=|>`3 0=|>~ <$=|>@p\=|>@p\=|>~ <$=|> 1'=|>~ <$=|>P )=|> 1'=|> 1'=|>P )=|><|>E-|>{2j(|>U0sN|>{2j(|>w$e|>U0sN|>U0sN|>w$e|>Cp |>w$e|>U?|>Cp |>Cp |>U?|> HԼ|>U?|>w$3|> HԼ|> HԼ|>w$3|>{g)@|>w$3|>{2@*̼|>{g)@|>{g)@|>{2@*̼|>``/;|>{2@*̼|>E|>``/;|>``/;|>E|> 1'=|>E|>w=|> 1'=|> 1'=|>w=|>iJ=8>㶋<78>܅i!78>܅j!<8>㶋<8>ݜ478>܅i!78>s<8>㶋<78>܅j!<78>s<8>ts=8>㶋<78>LyF`(8=8>ts=78>s<78>LyF`(8=8>M>\=8>ts=78>_ zj=8>M>\=78>LyF`(8=78>_ zj=8>qPt=8>M>\=78>lp0=8>qPt=78>_ zj=78>lp0=8>M%!=8>qPt=78>ݡ;0=8>M%!=78>lp0=78>ݡ;0=8>%M%!=78>"<|=8>%ݡ;0=78>"<|=8>%`(=S=8>"<|=78>`(=S=8>Z>=\=8>Q_==8>Z>=\=78>`(=S=78>Q_==8>t=s=8>Z>=\=8>)=^<8>t=s=78>Q_==8>)=^<8>궋=<8>t=s=8>+=48>궋=<8>)=^<8>+=48>䜑=48>궋=<8>)=]8>䜑=48>+=48>)=]8>궋=8>䜑=478>Q_=8>궋=8>)=]8>궋=8>t=r78>Q_=78>Q_=8>t=r78>`(=@S8>t=r8>Z>=\78>`(=@S78>`(=@S8>Z>=\78>"<|78>"<|8><0t8>Z>=\78>ݡ;8><0t78>"<|78>ݡ;8>%<0t78>lp8>%ݡ;78>lp8>M%p!8>%_yj8>M%p!78>lp78>_yj8>q0t8>M%p!78>LyF (88>q0t78>_yj78>LyF (88>M>\8>q0t78>s꼀8>M>\78>LyF (878>s꼁8>tr8>M>\78>܅i!8>tr78>s꼥78>܅i!8>㶋8>tr8>ݜ48>㶋78>܅i!^B>>^B>>s6*^B>>ݜ4^B>>s6*^B>>s6*<^B>>ݜ4^B>>ݜ4^B>>s6*<^B>>㶋<^B>>s6*<^B>><^B>>㶋<^B>>ts=^B>><^B>>㶋<^B>>ts=^B>>zsE=^B>><]B>>L>\=^B>>zsE=^B>>ts=]B>>L>\=]B>>4@=^B>>zsE=]B>>qPt=]B>>4@=]B>>L>\=]B>>qPt=]B>>dѼP=]B>>4@=]B>>L%!=]B>>dѼP=]B>>qPt=]B>>dѼP=]B>>N=]B>>L%!=]B>>L%!=]B>>N=]B>>%>N=]B>><0e=]B>>%>%><0e=]B>>><0e=]B>>(=`=]B>>>>(=`=]B>>[>=\=]B>>[>=\=\B>>U=e=]B>>(=`=\B>>t=s=\B>>U=e=]B>>[>=\=\B>>t=s=\B>>݅= "=\B>>U=e=\B>>궋=<\B>>݅= "=\B>>t=s=\B>>궋=<\B>>ܖ=@<\B>>݅= "=\B>>䜑=4\B>>ܖ=@<\B>>궋=<\B>>䜑=4\B>> =4\B>>ܖ=@<\B>>궋=\B>> =4\B>>䜑=4\B>> =4\B>>ܖ=\B>>궋=\B>>궋=\B>>ܖ=\B>>t=r\B>>ܖ=\B>>݅="\B>>t=r\B>>t=r\B>>݅="]B>>[>=\]B>>[>=\\B>>U=e\B>>݅="]B>><0t\B>>U=e]B>>[>=\]B>><0t]B>>(=@\B>>U=e]B>>%>(=@]B>><0t]B>>(=@]B>><e]B>>%>L%p!]B>><e]B>>%><e]B>>N]B>>L%p!]B>>q0t]B>>N]B>>L%p!]B>>N]B>>dѼ0]B>>q0t]B>>L>\]B>>dѼ0]B>>q0t]B>>dѼ0]B>>4]B>>L>\]B>>L>\]B>>4^B>>tr]B>>4^B>>zs@E^B>>tr^B>>tr^B>>zs@E^B>>㶋^B>>zs@E^B>>^B>>㶋^B>>㶋^B>>^B>>ݜ4Ə> O>!`3 5Ə>c3 5O>!`3 5O> ;Ə>c3 5Ə>c3 5O> ;Ə> ;O> ;O>< Ə> ;Ə> ;O>< Ə>< O>< O>L 5<4Ə>< Ə>< O>L 5<4Ə>L 5<4O>L 5<4O>< ;Ə>L 5<4Ə>L 5<4O>< ;Ə>< ;O>< ;O> ;<Ə>< ;Ə>< ;O> ;<Ə> ;<O> ;<O>!`3 5<Ə> ;<Ə> ;<O>!`3 5<Ə>c3 5<O>!`3 5<O> <Ə>c3 5<Ə>c3 5<O> <Ə> <O> <O> ;Ə> <Ə> <O> ;Ə> ;O> ;O> 54Ə> ;Ə> ;O> 54Ə> 54O> 54O> Ə> 54Ə> 54O> Ə> O> O> Ə> Ə> O> Ə> O> O>!`3 5Ə> ۨ><@`3П=ۨ>B|X3П=|>`3П=|>@p\=ۨ>B|X3П=ۨ>B|X3П=|>@p\=ۨ>@p\=|>@p\=|> 1'=ۨ>@p\=ۨ>@p\=|> 1'=ۨ>!1'=|> 1'=|>iJ=ۨ>!1'=ۨ>!1'=|>iJ=ۨ>iJ=|>iJ=|>w=ۨ>iJ=ۨ>iJ=|>w=ۨ>w=|>w=|> 0<ۨ>w=ۨ>w=|> 0<ۨ> 0<|> 0<|> 0ۨ> 0<ۨ> 0<|> 0ۨ> 0|> 0|>@wۨ> 0ۨ> 0|>@wۨ>@w|>@w|>iJۨ>@wۨ>@w|>iJۨ>iJ|>iJ|> 1'ۨ>iJۨ>iJ|> 1'ۨ>!1'|> 1'|>@P\ۨ>!1'ۨ>!1'|>@P\ۨ>@P\|>@P\|>`3ۨ>@P\ۨ>@P\|>`3ۨ>B|X3|>`3|>=@B|X3ۨ>B|X3|>=@<@=@:1'=ۨ><@<@:1'=ۨ>91'=|>:1'=|>ܶi=Jۨ>91'=ۨ>91'=|>ܶi=Jۨ>۶i=J|>ܶi=J|>=@wۨ>۶i=Jۨ>۶i=J|>=@wۨ>=@w|>=@w|> = 0ۨ>=@wۨ>=@w|> = 0ۨ> = 0|> = 0|> = 0<ۨ> = 0ۨ> = 0|> = 0<ۨ> = 0<|> = 0<|>=w=ۨ> = 0<ۨ> = 0<|>=w=ۨ>=w=|>=w=|>ܶi=J=ۨ>=w=ۨ>=w=|>ܶi=J=ۨ>۶i=J=|>ܶi=J=|>:1'==ۨ>۶i=J=ۨ>۶i=J=|>:1'==ۨ>91'==|>:1'==|>=@91'==ۨ>91'==|>=@<@=@`3П=ۨ><@ݩ=<|>ݩ=<|>y`/=;Ə> P )=|><|>P )=Ə> P )=Ə><|><Ə><Ə>``/;|><|><Ə>``/;|>``/;|>``/;Ə>``/;|>{g)@Ə>``/;Ə>{g)@|>{g)@|>{g)@Ə>{g)@|> HԼƏ>Cp |>Cp Ə> HԼ|>Cp |> HԼƏ> HԼ|> HԼƏ>{g)@Ə> HԼƏ>Cp Ə>s -|>Cp |>Cp Ə>s -|>s -Ə>bt< -|>wp< |>bt< -Ə>s -Ə>bt< -|>s -|>s -Ə>bt< -|>bt< -Ə>bt< -Ə>wp< |>wp< Ə>wp< Ə> =HԼ|>wp< |>wp< Ə> =HԼ|> =HԼ|> =HԼƏ> =HԼ|>g)=@Ə> =HԼƏ>g)=@|>g)=@Ə>g)=@Ə>}`/=;|>g)=@|>g)=@Ə>}`/=;|>y`/=;|>y`/=;Ə>}`/=;Ə>ݩ=<|>ݩ=<Ə>ݩ=<|>VP< )=Ə>ݩ=<Ə>VP< )=|>VP< )=|>VP< )=Ə>VP< )=|>~< <$=Ə>VP< )=Ə>~< <$=|>~< <$=Ə>~< <$=Ə>c3 0=|>~< <$=|>~< <$=Ə>c3 0=|>`3 0=Ə>c3 0=Ə>~ <$=|>`3 0=|>`3 0=Ə>~ <$=|>~ <$=|>~ <$=Ə>~ <$=|>P )=Ə>~ <$=Ə> P )=|>P )=\B>>䜑=48>䜑=4\B>>궋=\B>>䜑=48>궋=<8>䜑=4\B>>궋=<8>궋=<\B>>䜑=4\B>>궋=<8>t=s=8>궋=<\B>>t=s=8>t=s=\B>>궋=<\B>>t=s=8>Z>=\=8>t=s=]B>>[>=\=8>Z>=\=\B>>t=s=]B>>[>=\=8>Z>=\=]B>>>[>=\=]B>>%>%%>>%M%!=8>%>L%!=8>M%!=]B>>%>L%!=8>qPt=8>M%!=]B>>qPt=8>qPt=]B>>L%!=]B>>qPt=8>M>\=8>qPt=]B>>L>\=8>M>\=]B>>qPt=]B>>L>\=8>ts=8>M>\=^B>>ts=8>ts=]B>>L>\=^B>>ts=8>㶋<8>ts=^B>>㶋<8>㶋<^B>>ts=^B>>㶋<8>ݜ48>㶋<^B>>ݜ48>ݜ4^B>>㶋<^B>>ݜ48>㶋8>ݜ4^B>>㶋8>㶋^B>>ݜ4^B>>㶋8>tr8>㶋^B>>tr8>tr^B>>㶋^B>>tr8>M>\8>tr]B>>L>\8>M>\^B>>tr]B>>L>\8>q0t8>M>\]B>>q0t8>q0t]B>>L>\]B>>q0t8>M%p!8>q0t]B>>L%p!8>M%p!]B>>q0t]B>>L%p!8>%M%p!]B>>%%>L%p!]B>>%<0t8>%><0t8><0t]B>>%><0t8>Z>=\8><0t]B>>[>=\8>Z>=\]B>><0t8>Z>=\8>t=r]B>>[>=\]B>>[>=\8>t=r\B>>t=r8>t=r8>궋=\B>>t=r\B>>t=r8>궋=\B>>궋=\B>>궋=8>䜑=48>궋=Ə> ;Ə><@ˆƏ>c3 5Ə><@ˆƏ>c3Ə>c3 5Ə>c3 5Ə>c3Ə> Ə>c3Ə>@ˆƏ> Ə> Ə>@ˆƏ> Ə>@ˆƏ>rˆƏ> Ə> Ə>rˆƏ> 54Ə>rˆƏ>ȥ4Ə> 54Ə> 54Ə>ȥ4Ə> ;Ə>ȥ4Ə>rˆ<Ə> ;Ə> ;Ə>rˆ<Ə> <Ə>rˆ<Ə>ˆ<Ə> <Ə> <Ə>ˆ<Ə>c3 5<Ə>ˆ<Ə>c3@<Ə>c3 5<Ə>c3 5<Ə>c3@<Ə> ;<Ə>c3@<Ə><ˆ<Ə> ;<Ə> ;<Ə><ˆ<Ə>< ;Ə><ˆ<Ə>ˆ<<Ə>< ;Ə>< ;Ə>ˆ<<Ə>L 5<4Ə>ˆ<<Ə><4Ə>L 5<4Ə>L 5<4Ə><4Ə>< Ə><4Ə>ˆ<Ə>< Ə>< Ə>ˆ<Ə> ;Ə>ˆ<Ə><@ˆƏ> ;ۨ>v= ף=ۨ>n= ף=ۨ>=@\=lݨ>~T=ܨ>ڲS=ۨ>5`e=ۨ>iJۨ>!1'ۨ>5`eZdۨ>@w>*`iݨ>T׼ܨ>ڲS=lݨ>~T=>䟽ς=ۨ>n=ףۨ>v=ףۨ>= \ۨ>v=ףۨ>۶i=Jۨ>= \ۨ> = 0<ۨ>=@\=ۨ> = 0ۨ>=@\=ۨ>= \ۨ> = 0ۨ> = 0ۨ>= \ۨ>=@wۨ>= \ۨ>۶i=Jۨ>=@wiݨ>T׼>b ۨ>@w>b ۨ>[<ۨ>@wۨ>@wۨ>[<ۨ> 0ۨ>[<ۨ>ڛۨ> 0ۨ> 0ۨ>ڛۨ> 0<ۨ>ڛۨ>ڛ;ۨ> 0<ۨ> 0<ۨ>ڛ;ۨ>w=ۨ>B|X3П=ۨ>5`e=ۨ>v==ܨ>um3ݨ>˞PB>oۨ>!1'ۨ>5`eۨ>5`e@ڨ>r OCۨ>Onv A)>~N@acۨ>ڛ;ۨ>[<<ۨ>w=ۨ>[<<ۨ>w=ۨ>w=Oݨ><ި>꛽ =Oݨ><>b<ި>꛽ =ި>꛽ =ۨ>s=ۨ>w=ۨ>s=ۨ>a(=ۨ>w=ۨ>w=ۨ>a(=ۨ>iJ=ۨ>a(=ۨ>Onv`A=ۨ>iJ=ۨ>iJ=ۨ>Onv`A=ۨ>!1'=ۨ>B|X3П=ۨ>@p\=ۨ>5`e=ۨ>@p\=ۨ>!1'=ۨ>5`e=ۨ>5`e=ۨ>!1'=ۨ>5`eP=ۨ> = 0<ۨ>=w=ۨ>=@\=ۨ>=w=ۨ>۶i=J=ۨ>=@\=ۨ>=@\=ۨ>۶i=J=ۨ>v= ף=ۨ>۶i=J=ۨ>91'==ۨ>v= ף=ۨ>v= ף=ۨ>91'==ۨ>v==ۨ>91'==ۨ><@v==ۨ>v==ۨ><@B|X3П=ۨ>5`eZdۨ>!1'ۨ>5`eۨ>!1'ۨ>5`e@ۨ>5`eۨ>5`eۨ>5`e@ܨ>umۨ>5`e@3ݨ>˞PBܨ>umۨ>!1'ۨ>@P\ۨ>5`eۨ>@P\ۨ>B|X3ۨ>5`eۨ>5`eۨ>B|X3ۨ>v=ۨ>B|X3ۨ><@v=ۨ>v=ۨ><@v=ףۨ><@91'=ۨ>v=ףۨ>v=ףۨ>91'=ۨ>۶i=Jyߨ>>*`ۨ>s>*`ۨ>@wۨ>sۨ>sۨ>@wۨ>a񃽀(ۨ>@wۨ>iJۨ>a񃽀(ۨ>a񃽀(ۨ>iJۨ>Onv Aۨ>iJۨ>5`eZdۨ>Onv Aۨ>Onv Aۨ>5`eZd)>~N@acި>iYS=>_c=ب>C=ب>C=>_c=ۨ>Onv`A=>_c=ۨ>5`e@Zd=ۨ>Onv`A=ۨ>Onv`A=ۨ>5`e@Zd=ۨ>!1'=ۨ>5`e@Zd=ۨ>5`e=ۨ>!1'=ۨ>!1'=ۨ>5`e=ۨ>5`eP=ۨ>5`e=ܨ>ڲS=ۨ>5`eP=>zMڨ>r OC)>~N@acި>꛽ =>b<>y8=Ə>SּT<Ə> P )=Ə>g@ =Ə> P )=Ə>~ <$=Ə>g@ =Ə>g@ =Ə>~ <$=Ə>c3`=Ə>~ <$=Ə>c3 0=Ə>c3`=Ə>c3`=Ə>c3 0=Ə>g<@ =Ə>c3 0=Ə>~< <$=Ə>g<@ =Ə>SּT<>@<Ə> P )=>@<>O<Ə> P )=Ə>SּT<Ə> g<>@<>@<Ə> g<>O<Ə>B4>O<Ə> g<Ə>``/;Ə><Ə> P )=>O<Ə>B4Ə> P )=Ə> P )=Ə>B4Ə>``/;Ə>``/;Ə>B4Ə>{g)@Ə>B4>HU@Ə>{g)@Ə>{g)@>HU@>q jƏ> g>HU@Ə>B4Ə>{g)@>q jƏ> HԼ>HU@Ə> g>q jƏ> gƏ>SּSּ>q j>q jƏ>SּSּƏ> HԼƏ>SּSּƏ>g Ə> HԼƏ> HԼƏ>g Ə>Cp Ə>Cp Ə>g Ə>s -X>F@Ə>wp< '>Q9:)Ə>wp< Ə>bt< -'>Q9:)Ə>wp< X>F@Ə>g '>Q9:)Ə>s -X>F@Ə>s -Ə>g X>F@Ə>s -'>Q9:)Ə>bt< -Ə>S =HԼƏ>g< Ə> =HԼƏ>wp< Ə>g< Ə> =HԼ>> =ۨƏ>\=4Ə> =g;>m=Ə>S\=4>> =ۨƏ> =g>> =ۨ;>m=Ə> =gƏ>Sm=>> =ۨƏ>S> =ۨƏ> =HԼƏ>ݩ=<Ə>}`/=;Ə>\=4Ə>}`/=;Ə>g)=@Ə>\=4Ə>\=4Ə>g)=@Ə> =HԼƏ> =g<>dU=<Ə>\=4Ə>\=4>dU=<Ə>ݩ=<>dU=<䕱>q =j<Ə>ݩ=<Ə>~< <$=Ə>VP< )=Ə>g<@ =Ə>g<@ =Ə>VP< )=Ə>S<T<Ə>VP< )=Ə>ݩ=<Ə>S<T<Ə>ݩ=<䕱>q =j<Ə>S<T<Ə>S<T<䕱>q =j<Ə> =g<䕱>q =j<>dU=<Ə> =g<Ə>g Ə>c3@Ə>wp< Ə>c3@Ə>g< Ə>wp< >cglJǏ>thdP>ֳ iJǏ>thN>ԜfdP>ֳ idP>ֳ iN>Ԝfy>\slN>ԜfՒ>s hy>\sly>\slՒ>s hW>asՒ>s hF>HJoW>asW>asF>HJoΔ>} }F>HJo\>wwΔ>} }Δ>} }\>wwBV>_s@\>ww>Sn@jBV>_s@BV>_s@>Sn@j >-ela>Sn@jN> iF >-ela >-elaN> iFL>*iN> iFM>ɢfМL>*iL>*iM>ɢfМ>sl\M>ɢfМƏ>8hs>sl\>sl\Ə>8hsD>s`Ə>8hs5>JoHD>s`D>s`5>JoH~͍>}}5>JoH?>ww~͍>}}~͍>}}?>wwF>ăs?>ww>K@FoF>ăsF>ăs>K@Fo>cgl>K@FoJǏ>th>cgl|><ˆ<Ə>c3@<|>`3@<Ə>c3@<Ə>ˆ<|>`3@<|>`3@<Ə>ˆ<|>ˆ<Ə>ˆ<Ə>rˆ<|>ˆ<|>ˆ<Ə>rˆ<|>rˆ<Ə>rˆ<Ə>ȥ4|>rˆ<|>rˆ<Ə>ȥ4|>ȥ4Ə>ȥ4Ə>rˆ|>ȥ4|>ȥ4Ə>rˆ|>rˆƏ>rˆƏ>@ˆ|>rˆ|>rˆƏ>@ˆ|>@ˆƏ>@ˆƏ>c3|>@ˆ|>@ˆƏ>c3|>`3Ə>c3Ə><@ˆ|>`3|>`3Ə><@ˆ|><@ˆƏ><@ˆƏ>ˆ<|><@ˆ|><@ˆƏ>ˆ<|>ˆ<Ə>ˆ<Ə><4|>ˆ<|>ˆ<Ə><4|><4Ə><4Ə>ˆ<<|><4|><4Ə>ˆ<<|>ˆ<<Ə>ˆ<<Ə><ˆ<|>ˆ<<|>ˆ<<Ə><ˆ<|><ˆ<Ə><ˆ<Ə>c3@<|><ˆ4`e*X}>4`eZdۨ>5`eZd >/`ep馽>/`ep馽 >Ff0Kۨ>5`e@ۨ>5`ej>4`e@ۨ>5`e >/`ej>4`e@j>4`ej>4`e@͖>4`e0qۨ>5`eZdۨ>5`eX}>4`e*ۨ>5`ej>4`eX}>4`e*X}>4`e*j>4`e >4`e#j>4`e͖>4`e0q >4`e# >Ff0Kb> ]e`գ >/`ep馽 >/`ep馽b> ]e`գ >/`eb> ]e`գZ>4`eף >/`e >/`eZ>4`eףj>4`e@Z>4`eף>4`e@j>4`e@j>4`e@>4`e@͖>4`e0q >/`eۨ>5`e >x=ۨ>5`eۨ>v= >x= >x=p馽 >x=ۨ>v=ۨ>v=ۨ>v=ף >x=p馽ۨ>v=ף>0= >x=p馽 >x=p馽>0=>x=p馽>0=ۨ>v=ף>n=ףۨ>v=ףۨ>n=ף>n=ףۨ>= \(>=[ۨ>n=ף(>=[>n=ףۨ>n=ף>r==ۨ>=@\=>=*=>=*=ۨ>=@\=þ>z= = F>=@+>pߦ=V>b=@%þ>z= =ۨ>=@\=b{>=Y=(>=[V>b=@%5>Ϧ=$ F>=@+U>=U>pߦ=U>=U>=@2ռ>pߦ=>pߦ=>=@2ռ.e>=9G>=@<>=@U>=9v.e>=9<>r==>=@<>r==>pߦ=>=@<>=@<>pߦ=U>=:v<>pߦ=.e>=9U>=:v=:v<.e>=9 F>=d<.e>=9>=@ F>=d< F>=d<>=@|6>=:v<>=@G>=@<|6>=:v< F>=d|6>=9vk>F=ͪb=@%(>=[ F>=@+ F>=@+(>=[|6>=U(>=[ۨ>= \|6>=U|6>=Uۨ>= \G>=@2ռۨ>=@\=|6>=V=2<.e>=9<>=2<>r==>=2=V<>r==>r==U>=V<ۨ>=@\=U>=V< F>=+<ۨ>=@\=ۨ>=@\= F>=+<|6>=V<>=J=ۛ<ۨ>=@\=ۨ>=@\=w>=ۛ<ۨ>= \5>X=ͪ>=ۨ>= \ۨ>= \>=G>=@2ռG>=@>g=D<|6>=9v|6>=9v>g=DF=ͪ=9v F>=dG>=@< F>=dk>F=ͪ=@=@F=ͪ<&>=9<&>=9F=ͪ=2F=ͪ<>=J=2=2<>=J<ۨ>=@\=d>/=@ F>y=C>g=D<>g=D<F>y=Cw>=ۛ=@2ռ>=&>=9>=d>/=@ &>=9&>=9d>/=@ G>=@d>/=@ >g=D=@w>=ۛ<F>y=Cۨ>= \F>y=C5>X=ͪۨ>= \ۨ>n= ף=>n= ף=ۨ>=@\=>n= ף=b{>=Y=ۨ>=@\=ۨ>v= ף=$>==ۨ>n= ף=$>==>n= ף=ۨ>n= ף=$>==ۨ>v= ף= >x==ۨ>v= ף=ۨ>v== >x== >x==ۨ>v== >x== >x==>x==$>== >x==ۨ>v== >/`e=ۨ>v==ۨ>5`e= >/`e=ۨ>5`e@Zd=X}>4`e@Zd=X}>4`e+=ۨ>5`e=ۨ>5`eP= >/`e=ۨ>5`eP=j>4`eP= >/`e= >/`e=j>4`eP= >/`e=͖>4`e@q=j>4`eP= >4`e#=j>4`eP=j>4`e= >4`e#= >4`e#=j>4`e=X}>4`e+=j>4`e=ۨ>5`e=X}>4`e+=X}>4`e+=ۨ>5`e=ۨ>5`e@Zd=͖>4`e@q=>4`e`=j>4`eP=>4`e`=Z>4`e ף=j>4`eP=j>4`eP=Z>4`e ף= >/`e=Z>4`e ף=>/`e ף= >/`e= >/`e=>/`e ף=>/`e=>/`e ף=о>Se=>/`e=8i>˞@B=j>4`eP=ܨ>ڲS=j>4`eP=ۨ>5`eP=ܨ>ڲS=ܨ>ڲS=>䟽ς=8i>˞@B=8i>˞@B=>䟽ς=a>n=>䟽ς=lݨ>~T=a>n=a>n=lݨ>~T=i>wm=lݨ>~T=ۨ>5`e=i>wm=ۨ>5`e=j>4`e=i>wm=>_c=(>%`&d=ۨ>5`e@Zd=(>%`&d=X}>4`e@Zd=ۨ>5`e@Zd=(>%`&d=>_c=~>BNZ=>_c=ި>iYS=~>BNZ=~>BNZ=ި>iYS=~>uJ=ި>iYS=ب>C=~>uJ=~>uJ=ب>C=]> x`E@=ۨ>s=X}>s=ۨ>a(=X}>s=X}>a(=ۨ>a(=ۨ>a(=X}>a(=ۨ>Onv`A=X}>a(=]> x`E@=ۨ>Onv`A=X}>s=ۨ>s=X}>"\=ۨ>s=ި>꛽ =X}>"\=X}>"\=ި>꛽ =&>n=ި>꛽ =a> =&>n=ި>꛽ =>y8=a> =a> =>y8=`>颽<>y8=>b<`>颽<`>颽<>b<ᓱ><>b<ᓱ><ᓱ>[<<ۨ>[<[<[<<ۨ>[<<=>EW<ۨ>[<<ۨ>ڛ;=>EW<=>EW<>;!>D>;G>thϺ!>D!>DG>thϺ b>Xۨ>ڛ b>Xۨ>ڛ; b>X>;ۨ>ڛ;ۨ>ڛ;>;=>EW< b>Xۨ>ڛ!>Dۨ>ڛۨ>[D!>Dۨ>[<>ܡD>b >ܡDۨ>[<>b >ʗ1ż>ܡD>b iݨ>T׼>ʗ1ż>ʗ1żiݨ>T׼V>櫢׼>*`S>rRiݨ>T׼S>rRV>櫢׼iݨ>T׼>*`*m>bnd>9ET>*`d>9ETS>rRyߨ>*m>bn>*`F,>3 *m>bnX}>"\*m>bnyߨ>X}>"\X}>"\yߨ>X}>syߨ>ۨ>sX}>sۨ>Onv At> w /Aۨ>a񃽀(t> w /AX}>a񃽀(ۨ>a񃽀(ۨ>a񃽀(X}>a񃽀(ۨ>sX}>a񃽀(X}>sۨ>st> w /Aڨ>r OCX}>䁽 Cڨ>r OC>zMX}>䁽 CX}>䁽 C>zM> ׆S>zM)>~N@ac> ׆S> ׆S)>~N@ac>&c>&c)>~N@acX}>4`eZd)>~N@acۨ>5`eZdX}>4`eZdۨ>5`eܨ>umj>4`eܨ>umW>4}j>4`eܨ>um>oW>4}W>4}>oBg>ΟP>o3ݨ>˞PBBg>ΟPj>4`e@Bg>ΟPۨ>5`e@Bg>ΟP3ݨ>˞PBۨ>5`e@Ə>SּT<|>SּT<|> g<Ə>S<T<|>S<T<|>g<@ =Ə>S<T<Ə> =g<|>S<T<|>S<T<Ə> =g<|> =g<Ə> =g<Ə>\=4|> =g<|> =g<Ə>\=4|>^=4|>^=4Ə>\=4|> =gƏ>g< |>g< |>S\=4Ə> =g|> =gƏ> =gƏ>S =g|> =gƏ>SSSSg< Ə>g< Ə>c3@|>g< |>g< Ə>c3@|>`3@Ə>c3@Ə>g |>`3@|>`3@Ə>g |>"g |>"g Ə>g |>SּSּƏ>g Ə>SּSּ|>SּSּƏ>SּSּƏ> g|>SּSּ|>SּSּƏ> g|> gƏ> gƏ>B4|> g|> gƏ>B4|>B4|>B4Ə>B4|> g<Ə>B4Ə> g<|> g<|> g<Ə> g<Ə>SּT<Ə>SּT<Ə>g@ =|>SּT<|>SּT<Ə>g@ =|>"g@ =Ə>g@ =Ə>c3`=|>"g@ =|>"g@ =Ə>c3`=|>`3`=Ə>c3`=Ə>g<@ =|>`3`=|>`3`=Ə>g<@ =|>g<@ =|>g<@ =Ə>g<@ =Ə>S<T#X>F@C>:@I$C>:@I$'>Q9:)X>F@C>:@I$'>Q9:)r>#'>Q9:)X>F@r>#Jq>L=ʢ;>m=C>k=C>k=>> =ۨ;>m=C>k=>> =ۨJq>L=ʢ>> =ۨ;>m=Jq>L=ʢJq>e=<䕱>q =jj =0<䕱>q =j<>dU=e=j =0<>dU=e=j =0<䕱>q =j<>dU=@<>@,,<>O<>@,<>O@<>O<>@@>HU@C>,C>,>q j>HU@C>,>q jo>>q j>HU@o>|><ˆ<|>S<T<|>ˆ<<|>S<T<|> =g<|>ˆ<<|>ˆ<<|> =g<|><4|> =g<|>^=4|><4|><4|>^=4|>ˆ<|>rˆ<|>SּT<|>ˆ<|>SּT<|>"g@ =|>ˆ<|>ˆ<|>"g@ =|>`3@<|>"g@ =|>`3`=|>`3@<|>`3@<|>`3`=|><ˆ<|>`3`=|>g<@ =|><ˆ<|><ˆ<|>g<@ =|>S<T<|>@ˆ|>SּSּ|>rˆ|>SּSּ|> g|>rˆ|>rˆ|> g|>ȥ4|> g|>B4|>ȥ4|>ȥ4|>B4|>rˆ<|>B4|> g<|>rˆ<|>rˆ<|> g<|>SּT<|>^=4|> =g|>ˆ<|> =g|>Sˆ<|>ˆ<|>S<@ˆ|>Sg< |><@ˆ|><@ˆ|>g< |>`3|>g< |>`3@|>`3|>`3|>`3@|>@ˆ|>`3@|>"g |>@ˆ|>@ˆ|>"g |>SּSּ>\*P>\#g>Se`g>Se`P>\#>/`e`hP>\#&#>/`e>/`e`hP>\#>\0q&#>/`e&#>/`e>\0q >Ff0K>\0q;>Q[@ >Ff0K >Ff0K;>Q[@b> ]e`գ;>Q[@> \ףb> ]e`գZ>4`eףb> ]e`գZ>"\ףb> ]e`գ> \ףZ>"\ףX}>"\*#w>Z̅ >"\# >"\##w>Z̅8>t툽X}>4`e* >4`e#8>t툽Z>4`eףZ>"\ף>"\@Z>4`eף>"\@>4`e@>"\@͖>"\0q>4`e@>4`e@͖>"\0q͖>4`e0q͖>"\0q >"\#͖>4`e0q͖>4`e0q >"\# >4`e# >"\#8>t툽 >4`e#> ׆S>&cX}>"\*X}>"\X}>sX}>a񃽀(t> w /AX}>䁽 CX}>a񃽀(X}>a񃽀(X}>䁽 CX}>"\X}>䁽 C> ׆SX}>"\X}>"\> ׆SX}>"\*X}>4`e*8>t툽X}>4`eZd8>t툽>yXX}>4`eZdX}>4`eZd>yX>&c>&c>yXX}>"\*>yX#w>Z̅X}>"\*j>4`e@j>4`eBg>ΟPj>4`eW>4}Bg>ΟP >x=p馽>x=p馽 >/`ep馽>x=p馽>/`ep馽 >/`ep馽>/`ep馽>x=p馽 >Ff0K>x=p馽>0= >Ff0K >Ff0K>0=>/`e>0=>x=>/`e >x=p馽 >/`ep馽 >x= >/`ep馽 >/`e >x=>n=ףp>n=@>0=A>o=0a$>y=0qQ>n=#Q>n=#$>y=0q$>n=0q$>y=0q>0=$>n=0q$>n=0q>0=p>n=@$>P=CA>o=0a>n=*>n=*A>o=0aQ>n=#>n=ף(>=[p>n=@p>n=@(>=[$>n=0q(>=[5>Ϧ=$$>n=0q$>n=0q5>Ϧ=$Q>n=#Q>n=#5>Ϧ=$>n=*>x=@.e>=9.e>x=9.e>=9>=@2ռ.e>x=9.e>x=9>=@2ռ>x=@2ռ>=@2ռU>=U>x=@2ռ>x=@2ռU>=UU>x=UU>=U F>=@+U>x=UU>x=U F>=@+ F>x=@+ F>=@+|6>=U F>x=@+ F>x=@+|6>=U|6>x=U|6>=UG>=@2ռ|6>x=U|6>x=UG>=@2ռG>x=@2ռG>=@2ռ&>=9G>x=@2ռG>x=@2ռ&>=9&>x=9&>=9G>=@&>x=9&>x=9G>=@G>x=@G>=@|6>=9vG>x=@G>x=@|6>=9v|6>x=9v|6>=9v F>=d|6>x=9v|6>x=9v F>=d F>x=d F>=dU>=9v F>x=d F>x=dU>=9vU>x=9vU>=9v>=@U>x=9vU>x=9v>=@>x=@>=@.e>=9>x=@ե>䏭="F>y=C>ܭ=@ԍF>y=Cd>/=@ >ܭ=@ԍ>ܭ=@ԍd>/=@ z>=@d>/=@ >=z>=@z>=@>=>ܭ=>=5>X=ͪ>ܭ=>ܭ=5>X=ͪե>䏭="5>X=ͪF>y=Cե>䏭="5>Ϧ=$V>b=@%>n=*V>b=@%>n=>n=*>n= ף= o>i==b{>=Y=>+t==þ>z= =$>n=@q=þ>z= =b{>=Y=$>n=@q=b{>=Y= o>i==$>n=@q=>+t==>n==þ>z= =>n==>=*=þ>z= =E>n=<>r==>n=@<>n=@<>r==|>n=`=>r==>=*=|>n=`=|>n=`=>=*=>n==E>n=n=̼>r==E>n=̼>pߦ=>r==>n=@>n=V>b=@%V>b=@%>pߦ=>n=@>n=@>pߦ=>n=@>n=@>pߦ=E>n=̼>ܭ=`<>=J<>ܭ=ٹ<>=JF=ͪ<>ܭ=ٹ<>ܭ=ٹF=ͪ=F=ͪ<>g=D==<>g=DX=/<>g=DX=/X=/=ۛ<>ܭ=`=ۛ<>=J<>ܭ=`<>x=2<.e>=9<.e>x=9<.e>=9<>=@<.e>x=9<.e>x=9<>=@<>x=@<>=@=:v<>x=@<>x=@=:vx=:v=:v< F>=dx=:vx=:v< F>=d< F>x=d< F>=d<|6>=:v< F>x=d< F>x=d<|6>=:v<|6>x=:v<|6>=:v=@<|6>x=:v<|6>x=:v=@x=@=@<&>=9x=@x=@<&>=9<&>x=9<&>=9=2<&>x=9<&>x=9=2x=2=2<|6>=Vx=2x=2<|6>=V<|6>x=V<|6>=V< F>=+<|6>x=V<|6>x=V< F>=+< F>x=+< F>=+=V< F>x=+< F>x=+=Vx=V=V<>=2x=Vx=V<>=2<>x=2<>=2<.e>=9<>x=23=0w=>+t==> =0Z=>y==> =0Z=>+t==>+t==$>n=@q=>y==>y==$>n=@q=H>y==$>n=@q= o>i==H>y==H>y== o>i==$>== o>i==>n= ף=$>== >/`e=>/`e= >x==>/`e=>x== >x==>x==>ȎY==$>==>ȎY==>U`e=П=$>==$>==>U`e=П=>x=П=>/`eП=>t<П=о>Se=>t<П=s>Ӻ<=о>Se=о>Se=s>Ӻ<=>/`e=>/`e=s>Ӻ<=>x==s>Ӻ<=>ȎY==>x== >/`e= >x== >/`e= >x== >x== >/`e=j>4`e=j>4`eP=i>wm=j>4`eP=8i>˞@B=i>wm=i>wm=8i>˞@B=a>n=X}>a(=X}>s=X}>"\=X}>4`e@Zd=~>v@=X}>4`e+=~>v@=> u=X}>4`e+=X}>a(=X}>"\=]> x`E@=]> x`E@=X}>"\=~>uJ=X}>4`e@Zd=(>%`&d=~>v@=~>v@=(>%`&d=u>~e=u>~e=(>%`&d=~>BNZ=u>~e=~>BNZ=X}>"\+=X}>"\+=~>BNZ=X}>"\=~>BNZ=~>uJ=X}>"\=Z>"\ ף=Z>4`e ף=>4`e`=X}>4`e+=> u= >4`e#=> u=u>~e=p>YPs=X}>"\+=p>YPs=u>~e=> u=p>YPs= >4`e#= >4`e#=p>YPs=͖>4`e@q=p>YPs=>"\=͖>4`e@q=͖>4`e@q=>"\=>4`e`=>4`e`=>"\=Z>"\ ף=>/`e ף=Z>4`e ף=> \ ף=Z>4`e ף=Z>"\ ף=> \ ף=>/`e ף=> \ ף=6> \`=O>\#=>/`e@q=>\@q=>/`e@q=о>Se=>\@q=>\@q=о>Se=6> \`=6> \`=о>Se=>/`e ף=">rYe=>oed=>\+=>\+=>oed=O>\#=O>\#=>oed=>/`e@q=ۨ>Onv`A=]> x`E@=ب>C=`>颽<ᓱ>櫢׼X}>"\+=X}>"\={>ң4=X}>"\=&>n={>ң4={>ң4=&>n=a> =a> =`>颽<{>ң4={>ң4=`>颽<>ѣֈ>ʗ1żV>櫢׼ᓱ><`>颽櫢׼>ѣֈd>9ET>Ѩ`>ѣֈᓱ>[<<=>EW櫢׼S>rR>ѣֈd>9ET>ѣֈS>rRX}>"\*>Ѩ`X}>"\X}>"\>Ѩ`F,>3 >ܡD>ʗ1ż!>D!>D>ʗ1ż=>EW<>ʗ1żᓱ><=>EW<>ѣֈ>Ѩ`X}>"\*8f>t;G>thϺ;>K:8f>t; b>XG>thϺ^_>B: b>X8f>t;^_>B:>; b>X;>K:>;^_>B:G>thϺ>;;>K:d>9ET*m>bnUH><@N UH><@N *m>bn>xE/e>?d>9ETUH><@N d>9ET/e>?>Ѩ`/e>?>xE>Ѩ`>Ѩ`>xEF,>3 >xE*m>bnF,>3 ۨ>Onv Aڨ>r OCt> w /AUu>v@v ה>Dnj0>Sn@j>Sn@j ה>Dnj0N> iF ה>Dnj0a>lbzN> iFN> iFa>lbzM>ɢfМa>lbzL>XN_$M>ɢfМM>ɢfМL>XN_$Ə>8hsL>XN_$9>wb@Ə>8hsƏ>8hs9>wb@5>JoH9>wb@ﴍ>uk`B5>JoH5>JoHﴍ>uk`B?>wwﴍ>uk`B%'>Nvv?>ww?>ww%'>Nvv>K@Fo%'>Nvv5>Hk>K@Fo>K@Fo5>HkJǏ>th5>Hk;>䓅`pbJǏ>thJǏ>th;>䓅`pbN>Ԝf;>䓅`pbO>$@N_N>ԜfN>ԜfO>$@N_Ւ>s hO>$@N_b>KwbՒ>s hՒ>s hb>KwbF>HJob>Kwb>bB`kF>HJoF>HJo>bB`k\>ww>bB`kUu>v@v\>ww\>wwUu>v@v>Sn@j> \ף;>Q[@]>֣\]>֣\;>Q[@>ʣPT>\*>ʣPTP>\#P>\#>ʣPT>\0q>ʣPT;>Q[@>\0qg>Se`>/`e`Z>\*>/`e`Z>\`Z>\*g>Se`>/`e`h>/`e`h>/`e<>_:e׈#>/`eXe@`>AeCE>/`e̼>=eA/`e̼>/`e/`e̼>AeC>/`e<>/`e<>AeC>_:e׈y>Mel>Xe@`>/`e@м>/`e@м#>/`e@мy>Me#>/`e@м#>/`eMey>Me#>/`e<>_:e׈>=eA5e݈/`e̼E>/`e/`e̼f>ZMeZMe/`e̼o>5e݈/`e̼~>/`e@=l>Xe@`~>/`e@=8t>/`el>Xe@`l>Xe@`8t>/`e>/`e@м8t>/`e>/`e`Z>/`e@м>/`e@м>/`e`Z>/`e`h>/`e`Zg>Se`>/`e`hf>ZMe<>Ve^/`e/`e<>Ve^<~>/`e=<~>/`e=<>Ve^<8t>/`e=>Ve^<>=eA<8t>/`e=8t>/`e=>=eA<>/`e<>oed=">rYe=>/`eh=>/`eh=">rYe=>/`e<">rYe=>/`eZ=>/`e<>/`e<>/`eZ=8t>/`e=>/`e>/`e >Ff0K>/`e >/`e`h>/`e >/`e`h>/`e`h>/`e >/`e >/`e`h>/`e>/`e`h&#>/`e>/`e>/`e&#>/`e >Ff0K> \ף]>֣\Z>"\ף]>֣\>ף \Z>"\ףZ>"\ף>ף \ش>գ [Ũ> v`8>t툽>>@ꆽ8>t툽#w>Z̅>>@ꆽ˨>gq8>t툽Ũ> v`>>@ꆽ#w>Z̅è>,}#w>Z̅>yXè>,}è>,}>yX˨>gq>yX8>t툽˨>gq>"\@Z>"\ףش>գ [X}>"\* >"\#>ѣֈ>ѣֈ >"\#ش>գ [ >"\#͖>"\0qش>գ [͖>"\0q>"\@ش>գ [>x=`h>x= A>o=0a>x= >y= A>o=0a>y= >y=A>o=0aA>o=0a>y=$>y=0q>x=>0=>y=>y=>0=$>y=0q>y=>/`e>x=>/`e>/`e>x=$>P=C>n=*>y=@м>n=*>n=>y=@м>y=@м>n=>y=<>n=>n==>y=<>y=<>n==j>3=0w=>n==>+t==j>3=0w=>y=@м>y=@м$>P=C>y=@мA>o=0a$>P=C!>l=˼!>[=y>[=@˼!>[=y>l=u>[=@˼>[=@˼ F>x=@+!>l=˼ F>x=@+|6>x=U!>l=˼|6>x=UG>x=@2ռ!>l=˼!>l=˼G>x=@2ռ!>[=yG>x=@2ռ&>x=9!>[=y!>[=y&>x=9G>x=@>x=@2ռU>x=U>[=@˼>[=@˼U>x=U F>x=@+G>x=@|6>x=9v!>[=y|6>x=9v F>x=d!>[=y!>[=y F>x=d>l=u F>x=dU>x=9v>l=uU>x=9v>x=@>l=u>l=u>x=@>[=@˼>x=@.e>x=9>[=@˼>[=@˼.e>x=9>x=@2ռz>=@v>=@ߙ>ܭ=@ԍ>ܭ=@ԍv>=@ߙե>䏭=">ܭ=ե>䏭="z>=@|>n=`=>n==>n=>n=@E>n=̼E>n=<>n=>n=@|>n=`=>n=@>n=@|>n=`=|>n=`=>n=@>n=@<>n=@E>n=<>n=@X=/<>ܭ=`<~>=r<>ܭ=`<>ܭ=ٹ<~>=r<~>=r<>ܭ=ٹ=x=V<>^=< F>x=+<>^=[=< F>x=+<>^=<>g=u[=<>g=ul=z[=x=2<|6>x=V[=[=<|6>x=V< F>x=+x=V<>x=2<>^=<>x=2<.e>x=9<>^=<.e>x=9<>x=@<>^=<>^=<>x=@<>g=u<>x=@x=:v<>g=ux=:v< F>x=d<>g=u<>g=u< F>x=dl=z< F>x=d<|6>x=:vl=z<|6>x=:vx=@l=zl=zx=@[=x=@<&>x=9[=[=<&>x=9x=2<> =0Z=>y=3=0w=j>3=0w=>y=<>y=<$>==>x=П=H>y==>x=П=>y=П=H>y==>x=@=>x=h=>y=@=>x=h=> =0Z=>y=@=>y=@=> =0Z=>y=П=> =0Z=>y==>y=П=>y=П=>y==H>y==*> ʋ<=><`k=b>C<=><`k=>$< =b>C<=b>C<=>$< =>t<П=>t<П=>$< =>t<П=>t<П=>$< =s>Ӻ<=s>Ӻ<=>$< =>ȎY==>$< =`>,]=`Ȟ=>ȎY==C>Ye==>U`e=П=>ȎY==`>,]=`Ȟ=>g=P=C>Ye==C>Ye==>g=P=>25i=`=C>Ye==>ȎY==`>,]=`Ȟ=>U`e=П=C>Ye==>x=П=C>Ye==>y=П=>x=П=>/`eП=>/`eП=о>Se=>/`eh=>/`e@=>oed=>/`e@=>/`e@=>oed=>/`e@=>/`eП=>oed=>oed=>/`eП=>/`e@q=>/`eП=о>Se=>/`e@q=>t<П=>t<П=>/`eП=>t<П=>/`eП=>/`eП=˨>,=è>z =u>~e=u>~e=è>z =~>v@=è>z =Ѩ>JsЁ=~>v@=~>v@=Ѩ>JsЁ=> u=l>+YPT=> u=Ѩ>JsЁ=> u=l>+YPT=u>~e=˨>,=u>~e=l>+YPT=Z>"\ ף=>"\=Z>ף@\=Z>ף@\=>"\={>ң4=X}>"\+={>ң4=p>YPs={>ң4=>"\=p>YPs=Z>ף@\=>ף@\=Z>"\ ף=Z>"\ ף=>ף@\=> \ ף=>ף@\=7>ף@\=> \ ף=> \ ף=7>ף@\=hh> ˣW=>/`eZ=">rYe=>\Z=">rYe=>\+=>\Z=> \ ף=hh> ˣW=6> \`=6> \`=hh> ˣW=>\@q=hh> ˣW=>ƣ0=>\@q=>\@q=>ƣ0=O>\#=O>\#=>ƣ0=>\+=43>ԣ(Ҩ>Zԣ;7>ף@\=7>ף@\=Ҩ>Zԣ;<>֣ Ҩ>Zԣ;g >ѣ@<>֣ g >ѣ@43>ԣ(<>֣ >ʣPT<>֣ ]>֣\<>֣ 43>ԣ(]>֣\Z>ף@\=ش>գ [z>uգ:z>uգ:ش>գ [>wգ(z>uգ:1>2ңP:Z>ף@\=Z>ף@\=1>2ңP:>ף@\=>ף@\=1>2ңP:ش>գ [1>2ңP:>wգ(ش>գ [>ѣֈش>գ [{>ң4=ش>գ [Z>ף@\={>ң4=hh> ˣW=7>ף@\=>ƣ0=>ƣ0=7>ף@\=>ﴣ=<>֣ >ﴣ=7>ף@\=h>ԣ@ST>ӣF;7>ף@\=h>ԣ@]>֣\7>ף@\=7>ף@\=]>֣\43>ԣ(h>ԣ@츃>գ,]>֣\]>֣\ST>ӣF;>գ,7>ף@\=ST>ӣF;]>֣\>ף@\=e>ԣ;7>ף@\=e>ԣ;N>ԣ@츶7>ף@\=7>ף@\=N>ԣ@]>֣\N>ԣ@v>ԣ(]>֣\]>֣\v>ԣ(>ף@\=v>ԣ(e>ԣ;>ף@\=z>ԣ*}>ԣ;>ף@\=}>ԣ;!R>ԣ@츰>ף@\=>ף@\=!R>ԣ@]>֣\!R>ԣ@z>ԣ*]>֣\]>֣\z>ԣ*>ף \>ף@\=>ӣF;P>ԣ@P>ԣ@>ף \>ף@\=>ף@\=>ף \z>ԣ*P>ԣ@1>գ,>ף \>ף \1>գ,ش>գ [1>գ,>ӣF;ش>գ [ش>գ [>ӣF;>ף@\=UH><@N >xEۨ>7p[E>P9}z=E>P9}zr>P9 \)R>98r>P9 \->s9V r>P9 \ۨ>7p[->s9V /e>?UH><@N ۨ>7p[>xE/e>?ۨ>7p[E>P9}z=e>(;젺r>P9 \e>(;젺>IKE>P9}z=E>P9}z=>IK>;(;E>P9}z=>;(;r>P9 \>;(;e>(;젺r>P9 \E>P9}z=qk>9;r>P9@\=>:@߇>:J r>P9 \r>P9 \߇>:J E>P9}z=߇>:J qk>9;E>P9}z=qk>9;>:@r>P9@\=r>P9@\=>:@r>P9 \r>P9@\='>:*;w6>G9H:)R>98^>Er>P9 \^>EN>=8r>P9 \r>P9 \N>=8r>P9@\=r>P9@\=N>=8'>:*;w6>G9H:'>:*;)R>98'>:*;^>E)R>98->s9V o>6E)R>98w6>G9H:)R>98>>:*;w6>G9H:>>:*;->s9V >>:*;o>6E->s9V >:@>:J ->s9V w6>G9H:>:J ->s9V >:J > 9;w6>G9H:> 9;>:@w6>G9H:w6>G9H:>:@->s9V A>r>9->s9V ۨ>7p[ۨ>7p[w6>G9H:A>r>9ۨ>7p[;>K:^_>B:^_>B:8f>t;ۨ>7p[ۨ>7p[^_>B:ݨ>3Y=8f>t;;>K:ۨ>7p[^_>B:ݨ>3Y=ۨ>7p[ۨ>7p[ݨ>3Y=w6>G9H:ݨ>3Y=r>P9@\=w6>G9H:>\*>\`Z>ʣPT>\`Z<>֣ >ʣPT@r>\`x>\`Z8t>/`e>\`Z>/`e`Z8t>/`e8t>/`e~>/`e@=@r>\`x@r>\`x~>/`e@=_>\~>/`e@=E>/`e̼_>\_>\E>/`e̼E> \̼~>/`e=<8t>/`e=q>[@y=8t>/`e=>/`eZ=q>[@y=q>[@y=>/`eZ=>\Z=q>[@y=9>|<~>/`e=<~>/`e=<9>|/`e/`e<9>|<>󸏽/`e̼E>/`e \̼E>/`e<>󸏽 \̼>iE> \̼<>֣ <>֣ E> \̼>ﴣ=>󸏽<>ﴣ=E> \̼>/`e`h>/`e`hA>o=0aA>o=0a>/`e`h>x=`h>/`e`h>/`e`h>x=`h> Ļ@м>i>̼"!>i> Ļ@м>\"!> Ļ@м>/`e@м>\"!>\"!>/`e@м>%Z 0>i@m>/`e`h>̼h>/`e`hA>o=0a>̼h>̼hA>o=0a>Ю`Y>A;@м> y=@м> Y#< 7 >y=@м>y=@м>Y#< 7 A>o=0a>Y#< 7 > <A>o=0a> <>ף; ,A>o=0aA>o=0a>ף; ,>Ю`Y>i@m>\h>/`e`h>\h>%Z`Y>/`e`h>/`e`h>%Z`Y>/`e@м>%Z`Y>#D>/`e@м>/`e@м>#D>%Z 0>ף; ,>3,2>Ю`Y>3,2>p֣ ,>Ю`Y>Ю`Y>p֣ ,>֣D>p֣ ,>q >֣D>֣D>q >Ю 0>q ># 7 >Ю 0>Ю 0># 7 >̼"!># 7 >q x>̼"!>̼"!>q x> Ļ@м#>/`e<#>#<#>.yi<#>#<#>/`e<#>.k;#>Buĺ#>w 0,U>ڶ&;#>P<аU>ڶ&;U>ڶ&;#>P<а>;@#>.xi#>##>/`e@м#>##>.j#>/`e@м#><9#>=O)#>y=< >/ɻϼ#>3#>-Nxi#>-Nxi#>3> f;ϼ#>-Nxi#>w 08 >/ɻϼ#>w 08#>Bu >/ɻϼ >/ɻϼ#>Bu#>/`e@м#>Bu#>8#>/`e@м#>/`e@м#>8#>.xiZ>O_;L!;#>w 0@9<#>-Nyiڶ&;#>w 0,#>w 0,#>-Nj#>-Nj#>XԻ##>/`e<#>/`e@м#>.k;#>/`e@м#>.j#>.k;#>.k;#>.j#>,;#>.j#>,#>,;#>,;#>,#>Bu:#>,#>Buĺ#>Bu:#>Bu:#>Buĺ#>w 0,;#>BuĺU>ڶ&;#>w 0,;#>w 0,;U>ڶ&;#>-Nk;U>ڶ&;Z>O_;L!;#>-Nk;#>-Nk;Z>O_;L!;#>XԻ#<#>XԻ#O_;L!;#>-Nyi<#>P<а#><@>;@#><@#>P<f>;@>;@#>P<fZ>O_;L!;#>P<f#><9Z>O_;L!;Z>O_;L!;#><9#>w 0@9<#><9#>y=<#>w 0@9<#>w 0@9<#>y=<#>Bu<#>y=<#>/`e<#>Bu<#>Bu<#>/`e<#>@9<#>/`e<#>.yi<#>@9<#>=O)#>E=9#>y=<#>E=9#>]=f#>y=<#>y=<#>]=f#>y=@м#>]=f#>p{#=@#>y=@м#>y=@м#>p{#=@#>]=а#>XԻ##>-Nxi#>-Nxi> f;ϼ#> f;ϼ#>=ϼ> f;ϼ#>y=@м#>=ϼ#>=ϼ#>y=@м#>E=MǼ#>y=@м#>]=а#>E=MǼ>/`eh={>K<=9> /`eh=>/`e<{>K<={>K<=>/`e<><=r> ?=9=> F=p=> =0Z=> =0Z=> F=p=>y=<> F=p=]>b@=F=>y=<>y=<]>b@=F=>h+==>_=@܀=>h+==#p>=,=>/`e<>y=<><=><=>y=<>_=@܀=>y=<>h+==>_=@܀=>L!=@=>0 =3=#p>=,=>0 =3=B>j==#p>=,=#p>=,=B>j==>_=@܀=9> }2/`eh=->}2<`k=>/`eh=>/`eh=><`k=>oed=><`k=>Coed=>oed=>C/`eh=}>%z<>=eAz<>=eA<>Ve^z<>Ve^ZMezzZMeayayZMe%zьZMe5e݈%zь%zь5e݈<}>%z5e݈<>=eA<}>%z%z@y>Mel1>z@y>Me>_:e׈l1>z@l1>z@>_:e׈b>\ym>_:e׈>AeCb>\ymb>\ym>AeC>%z>AeCl>Xe@`>%z>%zl>Xe@`T>%z@l>Xe@`y>MeT>%z@>y= >/`e >y=>/`e >/`e>y=>x= >/`e >y= >/`e >/`e >y= >/`e >x= >/`e`h>x= >x=`h>/`e`h#>y=@м>y=@м#>y=<>y=@м>y=<#>y=l=˼>Hb=˼>[=@˼>Hb=˼!>Hb=@˼!>l=˼!>l=˼!>Hb=@˼>[=@˼!>Hb=@˼>Hb=˼>[=@˼>l=u!>[=y>Hb=y>Hb=y!>Hb=u!>[=y!>Hb=u>l=u!>[=y!>Hb=u>Hb=y>l=uv>=@ߙz>=@#>=@4z>=@ե>䏭="#>=@4#>=@4ե>䏭="o>H=ե>䏭="v>=@ߙo>H=~>=r=<>M==X=/<>M=<>M=X=/<~>=r<>g=u<>Hb=zl=zl=zHb=u<>Hb=z<>g=uHb=ul=z<>g=u<>Hb=zHb=u<>Hb=[=<>^=[=Hb=<>Hb=[=<>^=Hb=<>^=<>Hb=Hb=<+>xi=h=Z>UVA=f=r> ?=9=>x=h=>xi=h=> =0Z=>xi=h=+>xi=h=> =0Z=+>xi=h=r> ?=9=> =0Z=>xi=h=>x=h=>25i=`=>x=h=>x=@=>25i=`=C>Ye==>25i=`=>y=@=>25i=`=>x=@=>y=@=>y=@=>y=П=C>Ye==*> ʋ<=b>C<=>/`e@=b>C<=>/`e@=>/`e@=>/`e@=b>C<=>/`eП=>/`eП=b>C<=>t<П=Z>UVA=f=+>xi=h=>g=P= >"= k=`>,]=`Ȟ=>8> =i=>8> =i=`>,]=`Ȟ=+><=`>,]=`Ȟ=>$< =+><=+><=>$< =->}2}2$< =><`k= >"= k=+>֏1==`>,]=`Ȟ=+>֏1==Z>UVA=f=`>,]=`Ȟ=`>,]=`Ȟ=Z>UVA=f=>g=P=>C<`k=*> ʋ<=>25i=`=>g=P=>xi=h=>g=P=+>xi=h=>xi=h=>/`eh=>C/`e@=>C ʋ<=>/`e@=è>z =Iب>Zp̃=Ѩ>JsЁ=>\Z=>\+=>ﴣ=>\+=>ƣ0=>ﴣ=o>6E>>:*;z>ԣ*z>ԣ*>>:*;}>ԣ;>>:*;)R>98}>ԣ;}>ԣ;)R>98!R>ԣ@)R>98o>6E!R>ԣ@!R>ԣ@o>6Ez>ԣ*e>(;젺>;(;43>ԣ(43>ԣ(>;(;Ҩ>Zԣ;>;(;>IKҨ>Zԣ;Ҩ>Zԣ;>IKg >ѣ@g >ѣ@츯>IK43>ԣ(>IKe>(;젺43>ԣ(>wգ(A>r>9z>uգ:A>r>9w6>G9H:z>uգ:z>uգ:w6>G9H:1>2ңP:w6>G9H:->s9V 1>2ңP:1>2ңP:->s9V >wգ(->s9V A>r>9>wգ(^>E'>:*;v>ԣ(v>ԣ('>:*;e>ԣ;'>:*;N>=8e>ԣ;e>ԣ;N>=8N>ԣ@N>=8^>EN>ԣ@N>ԣ@^>Ev>ԣ(1>գ,>:@>ӣF;>:@> 9;>ӣF;>ӣF;> 9;P>ԣ@> 9;>:J P>ԣ@P>ԣ@츍>:J 1>գ,>:J >:@1>գ,ST>ӣF;>:@򸃃>գ,>:@qk>9;ST>ӣF;h>ԣ@qk>9;ST>ӣF;qk>9;߇>:J h>ԣ@h>ԣ@߇>:J >գ,߇>:J >:@򸃃>գ,>F r>P9 \G%>Fr>P9 \E>P9}zG%>FG%>F>ŖG%>F=><4>F= >什̼&>4ϺG%>FE>P9}z=/>)&E>P9}zG%>F&>4Ϻ>Ŗ4>< >什F=G%>F= >什P9}z= >什<7n>iP9}z=E>P9}z=7n>i'F=>Ŗ><><>Ŗ&>ߌ<&>ߌ<>Ŗ7>5⃼q>'P9}z=/>)&o>!büE>P9}zE>P9}zo>!büG%>Fo>!bü >什̼G%>F>Li >ȇ< >什ui >ȇ< >什u< >什u >什u >什u<7>5⃼ >什u<&>ߌ<7>5⃼i >ȇ<>LE>P9}z=E>P9}z=>L/>)&r>P9@\=>F@=E>P9}z=>F@=G%>F=E>P9}z=>F@=r>P9@\=pۨ>獗=pۨ>獗=r>P9@\=ݨ>3Y=ۨ>7p[Zܨ>֒=ۨ>0@֒ۨ>7p[ݨ>3Y=Zܨ>֒=ۨ>7p[Ө>Ě>F ۨ>7p[r>P9 \>F @r>\`x<>֣ >\`ZE> \̼>i_>\_>\>i@r>\`x>i<>֣ @r>\`xq>[@y=>ﴣ=9>|<>ﴣ=>󸏽<9>|<>\Z=>ﴣ=q>[@y=> Ļ@м >/ɻϼ>/`e@м >/ɻϼ#>/`e@м>/`e@м >/ɻϼ> Ļ@м>q xl+>p xl+>n֣|˼ >/ɻϼ >/ɻϼl+>n֣|˼#>3l+>n֣|˼l+>43#>3l+>43l+>ף;|˼#>3#>3l+>ף;|˼> f;ϼl+>ף;|˼l+> f;ϼ> f;ϼl+> A;@м>A;@мl+>  Y#< 7 l+> Z#< 7 >Y#< 7 l+>Z#< 7 l+> <>Y#< 7 >Y#< 7 l+> <> <l+> <l+>ף; ,> <> <l+>ף; ,>ף; ,l+>ף; ,l+>43,2>ף; ,>ף; ,l+>43,2>3,2l+>43,2l+>n֣ ,>3,2>3,2l+>n֣ ,>p֣ , >/ɻϼ>q xl+>p x>q x># 7 l+>p xl+>p x># 7 l+># 7 ># 7 >q l+># 7 l+># 7 >q l+>p >q >p֣ ,l+>p l+>p >p֣ ,l+>n֣ ,#>y=@м> f;ϼ>y=@м> f;ϼ>A;@м>y=@м>y=@м>A;@м>y=@м>il+>̼"!>̼"!l+>̼"!l+>Ю 0>̼"!>̼"!l+>Ю 0>Ю 0l+>Ю 0l+>֣D>Ю 0>Ю 0l+>֣D>֣D>֣Dl+>֣D>Ю`Yl+>֣Dl+>Ю`Y>Ю`Yl+>Ю`Yl+>̼h>Ю`Y>Ю`Yl+>̼h>̼hl+>̼hl+>i@m>̼h>̼hl+>i@m>i@ml+>i@ml+>\h>i@m>i@ml+>\h>\hl+>\hl+>%Z`Y>\h>\hl+>%Z`Y>%Z`Y>%Z`Yl+>%Z`Y>#Dl+>%Z`Yl+>#D>#Dl+>#Dl+>%Z 0>#D>#Dl+>%Z 0>%Z 0l+>%Z 0l+>\"!>%Z 0>%Z 0l+>\"!>\"!l+>\"!l+>g>\"!>\"!l+>g>i>il+>gl+>̼"!#>@9Au<#>BuAuv 0@9<#>Bu<#>Buv 0@9<#>w 0@9v 0@9,Nyi<#>w 0@9<#>w 0@9,Nyi<#>-Nyi,NyiWԻ#<#>-Nyi<#>XԻ#WԻ#<#>-Nyi<#>XԻ#,Nk;l+>WԻ#<#>-Nk;l+>,Nk;#>XԻ#<#>-Nk;l+>v 0,;l+>,Nk;#>w 0,;l+>v 0,;#>-Nk;#>w 0,;l+>Au:l+>v 0,;#>Bu:l+>Au:#>w 0,;#>Bu:l+>,;l+>Au:#>,;l+>,;#>Bu:#>,;l+>.k;l+>,;#>.k;l+>.k;#>,;#>.k;l+>#.k;#>##<#>.k;#>#.yi#<#>#.yi<#>.yi<#>.yi@9.yi<#>.yi@9<#>@9@9Au<#>@9<#>XԻ#l+>,Nxi#>-Nxil+>,Nxil+>v 08#>-Nxi#>-Nxil+>v 08#>w 08l+>v 08l+>Au#>w 08#>w 08l+>Au#>Bul+>Aul+>8#>Bu#>Bul+>8#>8l+>8l+>.xi#>8#>8l+>.xi#>.xil+>.xil+>##>.xi#>.xil+>##>#l+>#l+>.j#>##>#l+>.j#>.jl+>.jl+>,#>.j#>.jl+>,#>,l+>,l+>Auĺ#>,#>,l+>Auĺ#>Buĺl+>Auĺl+>v 0,#>Buĺ#>w 0,l+>v 0,#>Buĺ#>w 0,l+>=Njl+>v 0,#>w 0,l+>=Nj#>-Nj#>-Njl+>=Nj#>XԻ##>XԻ#l+>WԻ#l+>=Nj#>XԻ#l+>WԻ#l+>,Nxi>y=<>/`e<>y=<>/`e<#>/`e<>y=<>y=<#>/`e<#>y=<#>]=аl+>E=MǼ#>E=MǼl+>E=MǼl+>=ϼ#>E=MǼ#>E=MǼl+>=ϼ#>=ϼl+>=ϼl+>=ϼ#>=ϼl+>P<а#>P<а#>P<а#>P<аl+>P<а#><@l+>P<аl+><@#><@l+><@l+>P<f#><@#><@l+>P<f#>P<fl+>P<fl+><9#>P<f#>P<fl+><9#><9l+><9l+>=O)#><9#><9l+>=O)#>=O)l+>=O)l+>E=9#>=O)#>=O)l+>E=9#>E=9l+>E=9l+>]=f#>E=9#>E=9l+>]=f#>]=fl+>]=fl+>p{#=@#>]=f#>]=fl+>p{#=@#>p{#=@l+>p{#=@l+>]=а#>p{#=@#>p{#=@l+>]=а#>]=а#>]=аl+>]=аl+>E=MǼZ>O_;L!;c>P:~ U>ڶ&;Z>O_;L!;>kp;7;c>P:~ Z>O_;L!;>kp;7;>;@>;@4><;W>kp;7;U>ڶ&;4><;W>;@U>ڶ&;c>P:~ 4><;W->}2 >]<=M>>]<=9> g K<=E#>ggK<=#>Ԉ<M={>K<=><=#>Ԉ<M=#>Ԉ<M=><=%>,= N=><=>_=@܀=%>,= N=>_=@܀=B>j==%>,= N=%>,= N=B>j==h>G]==B>j==>0 =3=h>G]==>0 =3=#>_==h>G]==->}2>]<=+><=M>>]<=#>_==+><=+><=#>_==>8> =i=#>_==>0 =3=>8> =i=>8> =i=>0 =3= >"= k=>0 =3=>L!=@= >"= k=]$>-=0=>L!=@= >"= k=>L!=@=#p>=,=2>a=Z=#p>=,=>h+==2>a=Z=>,=~=>h+==2>a=Z=>h+==]>b@=F=>,=~=#>j@=W=]>b@=F=>,=~=#>j@=W=> F=p=]>b@=F=f">E=Pq=> F=p=#>j@=W=f">E=Pq=r> ?=9=> F=p= >"= k=]$>-=0=+>֏1==]$>-=0=r> ?=9=+>֏1==+>֏1==r> ?=9=Z>UVA=f=k>z<>!z<}>%z<>!z<>z[<}>%z<>z[<>Py(u<}>%z<}>%z<>Py(u%zь<>Py(u| z%zь%zь| zay| zzy ayayzy zzy 0y@z0y@<>!zz<>!z@󅼊>zRl1>z@l1>z@>zRT>%z@>zR>PyͼT>%z@T>%z@>Pyͼ>%z>Pyͼs4>| z>%zs4>| zX}>y֣>%z>%zX}>y֣b>\ymX}>y֣+8>y@cb>\ymb>\ym+8>y@cl1>z@+8>y@c >yul1>z@ >yu>!z@l1>z@ݰ>_>>@ꆽ>@ぽ>>@ꆽè>,}>@ぽ>@ぽè>,}>̓x+è>,}˨>gq>̓x+>̓x+˨>gq>ob˨>gqŨ> v`>ob>obŨ> v`ݰ>_Ũ> v`>>@ꆽݰ>_˨>,=l>+YPT=ݰ>@=ݰ>@=l>+YPT=>t=>t=l>+YPT=> }s=l>+YPT=Ѩ>JsЁ=> }s=Ѩ>JsЁ=Iب>Zp̃=> }s=> }s=Iب>Zp̃=>q`=Iب>Zp̃=è>z =>q`=>q`=è>z =ݰ>@=è>z =˨>,=ݰ>@=G%>F>* G%>*G%>F>F >* >!z0y@<4><4>0y@< >什< >什0y@<7n>i0y@zy <7n>i<7n>izy ''zy zy | z| z<>Py(uȇ<>Py(u< >什u<>z[<&>ߌ<>Py(u<>Py(u<&>ߌ< >什u<4><><>!z<>!z<><>z[<><&>ߌ<>z[<>!z@󅼴 >yu7>5⃼7>5⃼ >yu >什u >yu+8>y@c >什u >什u+8>y@c>L+8>y@cX}>y֣>L>LX}>y֣/>)&X}>y֣s4>| z/>)&/>)&s4>| zo>!büs4>| z>Pyͼo>!büo>!bü>Pyͼ >什̼>zR&>4Ϻ>Pyͼ>Pyͼ&>4Ϻ >什̼7>5⃼>Ŗ>!z@>!z@>Ŗ>zR>Ŗ&>4Ϻ>zRG%>F=G%>*=G%>FG%>FG%>*G%>*=>*@=G%>*=>F@=G%>*=G%>F=>F@=ۨ>֒ =ۨ>*@=ۨ>* =ۨ>֒ =pۨ>獗=ۨ>*@=pۨ>獗=ۨ>*@=>F@=ۨ>*@=>*@=>F@=?Ȧ> `B=ۨ>0@֒Zܨ>֒=?Ȧ> `B=r> =ۨ>0@֒ͨ> `,N=r> =?Ȧ> `B=r> =w> .<>t&&<5> t>t&&<>* ^Dۨ>0@֒>t&&<5> tۨ>0@֒r> =>t&&<>t&&<> *;> 4ۂ> 耼> 4ߛ> Ŭz> uۂ> 耼)> @ּz> u> 4ۂ> 耼>* ^D> 4z> u>* ^D>t&&<> 4$J>8c6>=ϚS^>.{$J>ZZ_>z06>=ϚSۨ>0@֒>z0$J>ZZ_ۨ>0@֒ :>l n6>z05> t :>l n6ۨ>0@֒>* ^D :>l n65> t>* ^D>w C! :>l n6z> u>w C!>* ^Dz> uL>@>w C!)> @ּL>@z> u$J>8c)> @ּۂ> 耼$J>8cL>@)> @ּ$J>8c^>.{L>@$J>8c@<> *;>t&&<$J>u4> *;$J>8c@<$J>u4> 4> *;$J>8c> 4$J>u4$J>8cߛ> Ŭ> 4ۂ> 耼ߛ> Ŭ$J>8c$J>8c@ F=.>U=>t&& F=$J>8c@ . F=>t&&<->Ǭ=w> . =z'> F=w> .<->Ǭ=R>/2=->Ǭ=r> =ͨ> `,N=R>/2=r> =R>/2=ͨ> `,N=?Ȧ> `B=R>/2=Zܨ>֒=3ڝ>ѝ u5=?Ȧ> `B=Zܨ>֒=R>/2=$J>ZZ _=/>q h,=3ڝ>ѝ u5=$J>ZZ _=.>U=/>q h,=!>i^~ w=fE>F7q {=$J>ZZ _=$J>ZZ _=9>Ђ@=!>i^~ w=$J>ZZ _=Zܨ>֒=9>Ђ@=3ڝ>ѝ u5=Zܨ>֒=$J>ZZ _=Zܨ>֒=֟>A*K=9>Ђ@=ݨ>3Y=֟>A*K=Zܨ>֒=pۨ>獗=֟>A*K=ݨ>3Y=ۨ>֒ =֟>A*K=pۨ>獗=@9>t%=֟>A*K=ۨ>֒ =@9>t%=sr>s=֟>A*K=$J>O@=sr>s=@9>t%=]>i)=sr>s=$J>O@=$J>O@=fE>F7q {=]>i)=>s|ּ=XH>q0&=$J>! ן=9ߛ>╪ =XH>q0&=>s|ּ=$J>! ן=z>Gp#=>s|ּ=$J>O@=z>Gp#=$J>! ן=$J>O@=>^D =z>Gp#=@9>t%=>^D =$J>O@=XH>q0&=ʛ>G3 =$J>; ɭ=XH>q0&=9ߛ>╪ =ʛ>G3 =$J><`Ħ= #> 2< =*>< =$J>; ɭ= #> 2< =$J><`Ħ=$J>; ɭ=ʛ>G3 = #> 2< =>A3= =$J><`Ħ=*>< =>A3= =$J>.=–=$J><`Ħ= L>==7= =$J>.=–=>A3= =$J> n=@>}=f>q= =ި>9=d=$J>.=–=f>q= =$J> n=@>}=$J>.=–= L>==7= =f>q= =$J> n=@>}={> =m=$J>q=@Q?=>jZ=@B=$J> n=@>}=ި>9=d=>jZ=@B={> =m=$J> n=@>}=$J>q=@Q?=x>D=.=p> =+={> =m=x>D=.=$J>q=@Q?=Λ>=;$J>=(< > =@8<$J>=(<,> == > =@8<$J>q=@Q?=,> ==$J>=(<$J>q=@Q?=p> =+=,> ==Λ>=;L> =$J>-=!L> =$J>-=!ǜ> =X$J>-=!$J>='ǜ> =Xǜ> =X$J>='?|>2#=ɠ>-=.p> =+$J>q=Q?p> =+?|>2#=$J>q=Q?$J>q=Q??|>2#=$J>='ߨ>G`==[V> = h$J> n=>}$J> n=>}[V> = h$J>q=Q?$J>q=Q?[V> = hɠ>-=.8>t=$5֨>g=P$J> n=>}ߨ>G`==$J> n=>}5֨>g=P>췀<0)>< $J><@Ħ$J><@Ħ)>< $J>.=)>< z>u= $J>.=z>u= >D=0$J>.=$J>.= >D=0$J> n=>} >D=08>t=$$J> n=>}$J><@ĦI>+06`>췀<0>췀<0I>+06`ʛ>G3 $J>!q`o*>R #>2 $J>!q`o #>2 I>+06` #>2 ʛ>G3 I>+06`$J>!q`o$J>! ן*>R *>R $J>! ן>3 >qP- L>,=7 $J>O $J>O L>,=7 $J>! ן L>,=7 >3 $J>! ן$J>O #8>n`}<>&0i@u$J>O <>&0i@u>Lpq$J>O >Lpq>qP->qP->Lpq>|>qP->|ۨ>֒ Ө>Ě>|ۨ>֒ Ө>Ě>gچ>|ۨ>7p[>gچӨ>Ěۨ>0@֒>gچۨ>7p[ۨ>0@֒ >rl x>gچ$J>ZZ_ >rl xۨ>0@֒$J>ZZ_#8>n`} >rl xӨ>Ě>* >F >* ۨ>* Ө>ĚӨ>Ěۨ>* ۨ>* ۨ>* ۨ>֒ Ө>Ě1>}p2L>XN_$=N>wy@̔L>XN_$a>lbz=N>wy@̔=N>wy@̔a>lbzj>}p2a>lbz ה>Dnj0j>}p2j>}p2 ה>Dnj0>|Ҏ ה>Dnj0Uu>v@v>|Ҏ>|ҎUu>v@v>ووUu>v@v>bB`k>وو>وو>bB`k>Ҏp>bB`kb>Kwb>Ҏp>Ҏpb>Kwbj>z2}b>KwbO>$@N_j>z2}j>z2}O>$@N_=N>=̔`yO>$@N_;>䓅`pb=N>=̔`y=N>=̔`y;>䓅`pb1>z2};>䓅`pb5>Hk1>z2}1>z2}5>Hkĥ>Ҏp5>Hk%'>Nvvĥ>Ҏpĥ>Ҏp%'>Nvv>وو%'>Nvvﴍ>uk`B>وو>ووﴍ>uk`Bĥ>|Ҏﴍ>uk`B9>wb@ĥ>|Ҏĥ>|Ҏ9>wb@1>}p29>wb@L>XN_$1>}p2l+>*l+>%Z`Yk+>`el+>t=f+>xi=`t=+>[=@Ka=l+>t==f+>xi=`t=l+>t=l+>xi==f+>xi=`t=l+>t==+>$<@Ja=l+>t=+>[=@Ka=l+>CS<X8+>$<@Ja=+>9;u;0>S<X8l+>CCC<=+>9;u;l+>p{#=@l+>]=fl+>t=l+>t=l+>]=fl+>E=9l+>,Nxil+><9l+>=O)l+><9l+>P<fl+>,Nxil+>,Nxil+>P<fl+>P<аl+>t=l+>]=аl+>p{#=@l+>P<fl+><@l+>P<аl+>P<аl+>t=l+>=ϼl+>t=l+>=ϼl+>E=MǼl+>t=l+>t=l+>E=MǼl+>]=аl+>ף;|˼l+>43l+>,Nxil+>P<аl+>t=l+>  t=l+>Z#< 7 l+>t=l+> <l+>Z#< 7 l+>t=Хl+>43,2l+>t=l+>43,2l+>ף; ,l+>t=l+>t=l+>ף; ,l+> <l+># 7 l+>p l+>t=Хl+>p l+>n֣ ,l+>t=Хl+>t=Хl+>n֣ ,l+>43,2l+>n֣|˼l+>p xl+>t=Хl+>t=Хl+>p xl+># 7 l+>̼"!l+>gl+>*l+>Ю`Yl+>֣Dl+>t=Хl+>֣Dl+>Ю 0l+>t=Хl+>%Z`Yl+>\hk+>`el+>\hl+>i@mk+>`ek+>`el+>i@ml+>t=Хl+>i@ml+>̼hl+>t=Хl+>t=Хl+>̼hl+>Ю`Yl+>gl+>\"!l+>*l+>\"!l+>%Z 0l+>*l+>%Z 0l+>#Dl+>*l+>*l+>#Dl+>%Z`Yl+>=Nj+>:f4l+>,Nk;l+>8l+>Aul+>t=Хl+>Aul+>,Nxil+>t=Хl+>t=Хl+>,Nxil+>n֣|˼l+>,Nxil+>43l+>n֣|˼l+>Aul+>v 08l+>,Nxi+>:f4l+>WԻ#l+>,Nxil+>=Njl+>WԻ#+>:f4l+>.xil+>*l+>#l+>*l+>.jl+>#l+>,Nk;l+>v 0,l+>=Njl+>Au:l+>v 0,l+>,Nk;l+>v 0,l+>Auĺl+>Au:l+>Au:l+>Auĺl+>* =l+>Auĺl+>,l+>* =l+>* =l+>,l+>.jl+>,Nk;l+>C<=l+>WԻ#<-> 9;l+>C<=l+>,Nk;-> 9;+>9;u;l+>C<=l+>* =l+>C<=l+>/`e=l+>* =l+>.yiC<=l+>#.yi* =l+>C<=l+>,NyiWԻ#,Nyiv 0@9C<=l+>v 0@9AuC<=l+>C<=l+>@9Au.yi@9C<=l+>* =l+>.k;l+>#* =l+>,;l+>.k;l+>Au:l+>,;l+>* =l+>,Nk;l+>v 0,;l+>Au:+>:f4-> 9;l+>,Nk;l+>,Nxi0>S<X8h->p;r+>$<@Ja=0>S<X8l+>,Nxil+>E=9l+>=O)l+>t=l+>t=l+>,Nxil+>=O)l+>t=廪+>$<@Ja=l+>,Nxil+> ף;|˼l+>P<аl+>ף;|˼l+>,Nxil+>P<аh->p;r+>:f4l+>,Nxil+>Ю 0l+>̼"!l+>t=Хl+>̼"!l+>*l+>t=Хl+>t=Хl+>*l+>8l+>*l+>.xil+>8l+>.jl+>*l+>* =4><;W>ct;>kp;7;>kp;7;k>9:c>P:~ >kp;7;k>@2H;r;k>9:#>xi= ף=f">E=Pq=>">^i=o=r> ?=9=f">E=Pq=#>xi= ף=&">Z=@`a=>,=~= !>>j@=W=>,=~=&">Z=@`a=>,=~=%>,= N= !>>,=~=%>,= N=h>G]==>">^i=o=#>j@=W=&">Z=@`a=f">E=Pq=#>j@=W=>">^i=o=#>_==>L!=@=]$>-=0=h>G]==>L!=@=#>_==#>xi= ף=]$>-=0=r> ?=9=#>xi= ף=#>_==]$>-=0=#>C< ף=#>_==#>xi= ף=#>C< ף=M>>]<=#>_==h>G]==2>a=Z=>L!=@=>,=~=2>a=Z=h>G]==#>C< ף=E#>g>]<=G#>< o=E#>gC< ף=#>Ԉ<M=E#>g< o= !>>Ԉ<M=G#>< o=%>,= N=#>Ԉ<M= !>>Ьićzä>3n`|>ob>obzä>3n`|>̓x+zä>3n`|ཤ>hw>̓x+>̓x+ཤ>hw>@ぽཤ>hw>P>@ぽ>@ぽ>Pݰ>_>P9>;ݰ>_9>;>IwFݰ>_ݰ>_>IwF>ob>IwFX>Ьić>ob\>=o>H=򝼠>/=o>H=v>=@ߙ>/=v>=@ߙ#>=@4>/=>/=#>=@4\>=#>=@4o>H=\>=>/=$<>M=<~>=r<+i>=<>M=<>/=$<+i>=<>M=<>/=$<>M=<~>=r<>/=$<&>vw=¤>k =>q`=¤>k =Qܤ>*iL=>q`=>q`=Qܤ>*iL=> }s=Qܤ>*iL=>v=> }s=> }s=>v=>t=>t=J>T.=>v=ݰ>@=J>T.=>t=ݰ>@=>pʂ=J>T.=ݰ>@=¤>V Gz=>pʂ=ݰ>@=&>vw=¤>V Gz=ݰ>@=&>vw=>q`=ۨ>* ۨ>*  >* ۨ>* >*  >* >* >* l+>*>* G%>*l+>*G%>*G%>*=l+>*>*@=ۨ>* =ۨ>*@=>*@= >* =ۨ>* =>*@= >* =G%>*= >* =l+>* =G%>*=l+>* =l+>*G%>*=@9>t%=ۨ>֒ =ۨ>* =ۨ>5`e =ۨ>* = >/`e =ۨ>5`e =@9>t%=ۨ>* =ۨ>v= =@9>t%=ۨ>5`e =>^D =@9>t%=ۨ>v= =ۨ>v= =z>Gp#=>^D =>s|ּ=z>Gp#=ۨ>v= =ۨ>v= =9ߛ>╪ =>s|ּ=ۨ>v= =ʛ>G3 =9ߛ>╪ = #> 2< =ʛ>G3 =ۨ>v= =ۨ>v= =*>< = #> 2< =>A3= =*>< =ۨ>v= =ۨ>v= = L>==7= =>A3= =f>q= = L>==7= =ۨ>v= =ۨ>v= =ި>9=d=f>q= =ۨ>v= = >t= =ި>9=d= >x= = >t= =ۨ>v= = >x= = >Uae!= >t= = >/`e = >Uae!= >x= = >/`e = >* = >Uae!=ۨ>* = >* = >/`e =#8>n`}zä>3n`|<>&0i@uzä>3n`|X>Ьić<>&0i@u<>&0i@uX>Ьić>Lpq>|>Lpq>IwF>IwF>LpqX>Ьić>gچ>|9>;9>;>|>IwF9>;>P>gچཤ>hw >rl x>P>gچ >rl x>P#8>n`} >rl xzä>3n`|zä>3n`| >rl xཤ>hw.>U=$J>`,=$J>+<$J>`,=fE>F7q {=$J>1Js`Js=$J>`,=$J>ZZ _=fE>F7q {=.>U=$J>ZZ _=$J>`,=XH>q0&=$J>&,=$J>! ן=$J>&,$J>! ן$J>+$J>! ן$J>!q`o$J>+$J>+$J>!q`oI>+06`I>+06`$J><@Ħ$J><+$J><+$J><@Ħ$J>>,=$J><@Ħ$J>.=$J>>,=$J>>,=$J>.=$J>JJs= Js$J>.=$J> n=>}$J>JJs= Js$J>JJs= Js$J> n=>}$J>= ,$J> n=>}$J>q=Q?$J>= ,$J>= ,$J>q=Q?$J>+=#8>n`}$J> ,$J>1Js Js#8>n`}$J>ZZ_$J> ,$J>&,=$J>O@=$J>! ן=$J>&,=fE>F7q {=$J>O@=$J>1Js`Js=fE>F7q {=$J>&,=$J>q=Q?$J>='$J>+=$J>='$J>-=!$J>+=$J>+=$J>-=!$J>8=4$J>-=!Λ>=;$J>8=4$J>+=<Λ>=;$J>8=4$J>+=<$J>=(<Λ>=;$J>=`,=$J>=(<$J>+=<$J>=`,=$J>q=@Q?=$J>=(<$J>JJs=`Js=$J>q=@Q?=$J>=`,=$J>JJs=`Js=$J> n=@>}=$J>q=@Q?=$J>>,==$J> n=@>}=$J>JJs=`Js=$J>>,==$J>.=–=$J> n=@>}=$J><+=$J>.=–=$J>>,==$J><+=$J><`Ħ=$J>.=–=$J>LG3@=$J><`Ħ=$J><+=$J>LG3@=$J>; ɭ=$J><`Ħ=XH>q0&=$J>; ɭ=$J>LG3@=$J>+<$J>8c@<.>U=$J>,4$J>8c@<$J>+<$J>,4$J>u4$J>8c@<$J>+$J>u4$J>,4$J>+$J>8c$J>u4$J>+6>=ϚS$J>8c$J> ,6>=ϚS$J>+$J>ZZ_6>=ϚS$J> ,$J>1Js Js#8>n`}$J>&,#8>n`}$J>O $J>&,$J>&,$J>O $J>! ן>z0>`6>=ϚS>z0,>;u1>`¤>ףE6 :>l n6ַ>k1,>;u1 :>l n6¤>ףE6,>;u1>z0 :>l n6ַ>k1 :>l n6>w C!ַ>k1>w C!觤>,z$觤>,z$>w C!>}>}L>@ľ>z>w C!L>@>}ľ>zL>@^>.{>`^>.{6>=ϚSľ>z^>.{>`.>U=V>Yj@=¤>ۛ=z'> F=V>Yj@=.>U=z'> F=¤>r=V>Yj@=¤>r=->Ǭ=y>5 7=¤>r=z'> F=->Ǭ=R>/2=>q&1=y>5 7=y>5 7=->Ǭ=R>/2=>H 6=R>/2=3ڝ>ѝ u5=>q&1=R>/2=>H 6=>H 6=/>q h,=M>a(=>H 6=3ڝ>ѝ u5=/>q h,=M>a(=.>U=¤>ۛ=M>a(=/>q h,=.>U=fE>F7q {=&>vw=¤>k =!>i^~ w=&>vw=fE>F7q {=!>i^~ w=¤>V Gz=&>vw=9>Ђ@=¤>V Gz=!>i^~ w=¤>V Gz=9>Ђ@=>pʂ=>pʂ=֟>A*K=J>T.=9>Ђ@=֟>A*K=>pʂ=֟>A*K=>v=J>T.=sr>s=>v=֟>A*K=sr>s=Qܤ>*iL=>v=sr>s=]>i)=Qܤ>*iL=¤>k =]>i)=fE>F7q {=¤>k =]>i)=Qܤ>*iL=>qP-ۨ>֒ ۨ>* >* >p^e >x= >x= >p^e >t= >x= >/`e >* >/`e ۨ>5`e >* >* ۨ>5`e ۨ>* ۨ>* ۨ>5`e >qP->qP-ۨ>5`e L>,=7 ۨ>5`e ۨ>v= L>,=7 L>,=7 ۨ>v= >3 >t= 5֨>g=P >x= 5֨>g=P8>t=$ >x= >x= 8>t=$ۨ>v= ۨ>v= 8>t=$ >D=0ۨ>v= *>R >3 >췀<0ۨ>v= )>< #>2 *>R ʛ>G3 *>R ۨ>v= ʛ>G3 ۨ>v= >췀<0ʛ>G3 )>< ۨ>v= z>u= z>u= ۨ>v= >D=01>}p2j>z2}=N>=̔`yj>z2}1>}p2>Ҏp1>}p2=N>wy@̔>Ҏp>Ҏp=N>wy@̔>وو=N>wy@̔j>}p2>وو>ووj>}p2>|Ҏ>ووĥ>|Ҏĥ>Ҏpĥ>|Ҏ1>}p2ĥ>Ҏpĥ>Ҏp1>}p21>z2}1>}p2=N>=̔`y1>z2}k>9:-> 9;c>P:~ k>@2H;r;-> 9;k>9:k>@2H;r;+>9;u;-> 9;>kp;7;+>9;u;k>@2H;r;>kp;7;0>S<X8+>9;u;>ct;0>S<X8>kp;7;>ct;h->p;r0>S<X84><;Wh->p;r>ct;4><;W+>:f4h->p;rc>P:~ +>:f44><;Wc>P:~ -> 9;+>:f4k+>`e >p^el+>* >p^e >* l+>* >* =l+>/`e= >Uae!= >* =l+>* =l+>/`e= >Uae!=l+>/`e=l+>C<=#>C< ף= >Uae!=l+>C<=#>xi= ף= >Uae!=#>C< ף=#>xi= ף= >t= = >Uae!=l+>xi== >t= =#>xi= ף=l+>xi==l+>t== >t= =l+>CC< ף=l+>C<=l+>C< o=#>C< ף=+>$<@Ja=G#>< o=l+>C$<@Ja= !>>< o=+>[=@Ka= !>>$<@Ja=+>[=@Ka=&">Z=@`a= !>>[=@Ka=>">^i=o=&">Z=@`a=f+>xi=`t=>">^i=o=+>[=@Ka=>">^i=o=l+>xi==#>xi= ף=>">^i=o=f+>xi=`t=l+>xi==j> =}l+>t=Хl+>t=l+>t=j> =@}=l+>t==j> =@}=j> =}l+>t=廴 >t= >p^el+>t=Хk+>`el+>t=Х >p^e >x== >/`e = >x= = >x== >/`e= >/`e =ۨ>5`e= >/`e = >/`e=ۨ>5`e=ۨ>5`e = >/`e =ۨ>\m=ۨ>5`e=ۨ>5`e`=ۨ>5`e`=ۨ>v=`=ۨ>v= =ۨ>5`e=ۨ>v= =ۨ>5`e =ۨ>5`e=ۨ>5`e`=ۨ>v= =ۨ>\m=ۨ>5`e`=ۨ>5`e=ۨ>\m=ۨ>\m=ۨ>5`e`= >x==E>x=`=E>x== >x==ۨ>v=`=E>x=`= >x= =ۨ>v=`= >x== >x= =ۨ>v= =ۨ>v=`=>jZ=@B= >t= => =t=ި>9=d= >t= =>jZ=@B=¤>+=$J>8=4¤>9=4¤>9=4$J>+=<$J>8=4¤>+=<$J>+=<¤>9=4¤>+=<$J>=`,=$J>+=<¤>=`,=$J>=`,=¤>+=<¤>=`,=$J>JJs=`Js=$J>=`,=¤>KJs=`Js=$J>JJs=`Js=¤>=`,=¤>KJs=`Js=$J>>,==$J>JJs=`Js=¤>?,==$J>>,==¤>KJs=`Js=¤>?,==$J><+=$J>>,==¤><+=$J><+=¤>?,==¤><+=$J>LG3@=$J><+=¤>LS3@=$J>LG3@=¤><+=¤>LS3@=XH>q0&=$J>LG3@=¤>+=XH>q0&=¤>LS3@=¤>+=$J>&,=XH>q0&=¤>%,=$J>&,=¤>+=¤>%,=$J>1Js`Js=$J>&,=¤>0Js`Js=$J>1Js`Js=¤>%,=¤>0Js`Js=$J>`,=$J>1Js`Js=¤>`,=$J>`,=¤>0Js`Js=¤>`,=$J>+<$J>`,=¤>+<$J>+<¤>`,=¤>+<$J>,4$J>+<¤>+4$J>,4¤>+<¤>+4$J>+$J>,4¤>+$J>+¤>+4¤>+$J> ,$J>+¤> ,$J> ,¤>+¤> ,$J>1Js Js$J> ,¤>0Js Js$J>1Js Js¤> ,$J>1Js Js$J>&,¤>0Js Js¤>0Js Js$J>&,¤>%,$J>&,$J>+¤>%,¤>%,$J>+¤>+$J>+I>+06`¤>+¤>+I>+06`¤>LS3 I>+06`$J><+¤>LS3 ¤>LS3 $J><+¤><+$J><+$J>>,=¤><+¤><+$J>>,=¤>?,=$J>>,=$J>JJs= Js¤>?,=¤>?,=$J>JJs= Js¤>KJs= Js$J>JJs= Js$J>= ,¤>KJs= Js¤>KJs= Js$J>= ,¤>= ,$J>= ,$J>+=¤>= ,¤>= ,$J>+=¤>+=$J>+=$J>8=4¤>+=ݰ>1s,>;u1>`.ݰ>1s>`,>;u1ݰ>1sľ>z>`>r訽 `ľ>zݰ>1s>r訽 `>}ľ>z>r訽 `觤>,z$>}>`.ַ>k1觤>,z$>`.¤>ףE6ַ>k1>`.,>;u1¤>ףE6>Ş``=M>a(=¤>ۛ=>-=M>a(=>Ş``=>-=>H 6=M>a(=>%ͧA,=>H 6=>-=>%ͧA,=>q&1=>H 6=ݰ>| t=>q&1=>%ͧA,=ݰ>| t=y>5 7=>q&1=ݰ>| t=¤>r=y>5 7=ݰ>| t=V>Yj@=¤>r=>Ş``=V>Yj@=ݰ>| t=>Ş``=¤>ۛ=V>Yj@= >t= > =t5֨>g=P5֨>g=P> =tߨ>G`== >/`e >/`epۨ>5`e >/`epۨ>5`epۨ>5`e >/`e >x= >/`ep >x= >x=p >/`epE>x=@E>x=p >x=pۨ>v=@E>x=@ۨ>v= E>x=@ >x=pۨ>v= ۨ>v= >x=p >x= ۨ>v= ۨ>5`e ۨ>v=@ۨ>5`e ۨ>5`epۨ>v=@ۨ>v=@ۨ>5`epۨ>5`e@ۨ>5`epۨ>\mpۨ>5`e@ۨ>5`e@ۨ>\mpۨ>5`eۨ>5`eۨ>\mۨ>\mpl+>t==> =t= >t= =l+>t==j> =@}=> =t=Z> =,2Z> =kj> =}>> =`.ɠ>-=.>> =oɠ>-=.[V> = h>> =oj> =}Z> =k> =tZ> =k> =o> =t> =t> =o>> =o[V> = hߨ>G`==>> =o>> =oߨ>G`==> =tZ> =,2j> =}{>=w/{>=w/j> =}Z> =O > =C =Z> =P =f> =C =Z> =P =p> =P =f> =C =f> =C =p> =P =f> =#

=P =p> = =# =#

=<> =#

= =<> =# =P =j> =}d>;=.=j> =}j> =@}=d>;=.=Z> = -2=j> =@}=d>;=.=j> =@}=> =o=> =t=j> =@}=Z> =@k=> =o=Z> = -2=Z> =@k=j> =@}=> =C => =# =P => =# = =P =Z> =P =Z> = =}Z> = =j> =}j> =}Z> =Z> =O Z> => =C Z> =O Z> =O > =C p> =O > =C f> =C p> =O p> =O f> =C p> =f> =C f> =#p> =p> =f> =#Z> =f> =#> =#Z> =Z> => =#> =C {> =m=>> =.=x>D=.={> =m=>> =o=>> =.=>jZ=@B=>> =o={> =m=>jZ=@B=> =o=>> =o=>jZ=@B=> =t=> =o=> =t >t= j> =} >t= l+>t=Хj> =}>Of= >x==E>x==>Of= >/`e= >x== >/`e=ۨ>\m=ۨ>5`e= >/`e=C>Vm=ۨ>\m=>Of=C>Vm= >/`e=>Of=>2Qh=C>Vm=H>/`e=Q>m=X>*+fp6=Q>m=ۨ>\m=X>*+fp6=X>*+fp6=ۨ>\m= >/`e=ۨ>\m=ۨ>5`e= >/`e= >/`e=ۨ>5`e`=ۨ>5`e= >/`e=3w>/`e`=ۨ>5`e`=X>*+fp6=3w>/`e`= >/`e=3w>/`e`=ۨ>v=`=ۨ>5`e`=3w>/`e`=E>x=`=ۨ>v=`=>Of=E>x=`=3w>/`e`=C>Vm=ۨ>\m=ۨ>\m=ۨ>\m=Q>m=C>Vm=p> =+p> =+=?|>2#=?|>2#=,> ==p> =+=Λ>=; > =@8<,> ==?|>2#=Λ>=;,> ==?|>2#=L> =Λ>=;?|>2#=L> =ǜ> =X¤>vq`q¤> ,¤>+¤>vq`q¤>0Js Js¤> ,¤>vq`q¤>0Js Js¤>+¤>0Js Js¤>%,¤>+¤>+¤>%,¤>E @.¤>%,¤>+¤>E @.¤>E @.¤>+¤>LS3¤>+¤>LS3 ¤>LS3¤>LS3¤>LS3 ¤>y <@.¤>LS3 ¤><+¤>y <@.¤>y <@.¤><+¤>+=¤><+¤>?,=¤>+=¤>+=¤>?,=¤>q=`q¤>?,=¤>KJs= Js¤>q=`q¤>q=`q¤>KJs= Js¤>=+¤>KJs= Js¤>= ,¤>=+¤>=+¤>= ,¤>`.=@ ¤>= ,¤>+=¤>`.=@ ¤>`.=@ ¤>+=¤>=4¤>+=¤>9=4¤>=4¤>`.= <¤>9=4¤>=4¤>`.= <¤>+=<¤>9=4¤>= +=¤>+=<¤>`.= <¤>= +=¤>=`,=¤>+=<¤>q=q=¤>=`,=¤>= +=¤>q=q=¤>KJs=`Js=¤>=`,=¤>+==¤>KJs=`Js=¤>q=q=¤>+==¤>?,==¤>KJs=`Js=¤>y <`.=¤>?,==¤>+==¤>y <`.=¤><+=¤>?,==¤>LS3 =¤><+=¤>y <`.=¤>LS3 =¤>LS3@=¤><+=¤>E `.=¤>LS3@=¤>LS3 =¤>E `.=¤>+=¤>LS3@=¤>+=¤>+=¤>E `.=¤>+=¤>%,=¤>+=¤>vqq=¤>%,=¤>+=¤>vqq=¤>0Js`Js=¤>%,=¤> +=¤>0Js`Js=¤>vqq=¤> +=¤>`,=¤>0Js`Js=¤>S. <¤>`,=¤> +=¤>S. <¤>+<¤>`,=¤>4¤>+<¤>S. <¤>4¤>+4¤>+<¤>S.@ ¤>+4¤>4¤>S.@ ¤>+¤>+4¤>+¤>+¤>S.@ ¤>+¤> ,¤>+>r訽 `̨>v@ 觤>,z$>r訽 `Ǩ>!̨>v@ ݰ>1sǨ>!>r訽 `ݰ>1sXʨ>I Ǩ>!ݰ>1sXʨ> *Xʨ>I >`.Xʨ> *ݰ>1s>`.GŨ>Z"-Xʨ> *觤>,z$GŨ>Z"->`.觤>,z$̨>v@ GŨ>Z"-ݰ>| t=Wʨ> *=Wʨ> =>%ͧA,=Wʨ> *=ݰ>| t=>%ͧA,=GŨ>9S"-=Wʨ> *=>-=GŨ>9S"-=>%ͧA,=>-=̨>  =GŨ>9S"-=>Ş``=̨>  =>-=>Ş``=Ǩ>=̨>  =ݰ>| t=Ǩ>=>Ş``=ݰ>| t=Wʨ> =Ǩ>=ۨ>5`ep >/`epۨ>\mpۨ>\mp>m-mp⭽ >/`ep >/`epE>x=p >x=p >/`ep,>0f0ME>x=p>m-mp⭽,>0f0M >/`epE>Ga@E>x=@l>]e0 E>x=@ۨ>v=@l>]e0 l>]e0 ۨ>v=@ۨ>5`e@l>]e0 ۨ>5`e@ >/`e >/`eۨ>5`e@ۨ>5`e\>m4G>b˧H>/`e >/`eۨ>\mۨ>5`e >/`e\>mۨ>\ml>]e0 \>m >/`el>]e0 4G>b˧\>mC>Vmۨ>\m\>mC>Vmۨ>\mpۨ>\m>m-mp⭽ۨ>\mpC>Vm>f=C => =C =f>f=C => =C =f> =C =f>f=C =f>f=C =f> =C =f>f=# =C =f> =#f=#f=# =#<>f=# =#<> =#<>f=#<>f=#<> =#<>f=C => =#<> =C =>f=C =L\>\=o0>=oŧ>,=oa>];=oL\>\=o>=oL\>\=oŧ>,=o>=o>=oŧ>,=o> =oŧ>,=o>> =o> =oHx>n=kZ> =kHx>n=,2Z> =kZ> =,2Hx>n=,2Z> =O Z>j=O {>=w/Z>j=O Z>j=`.{>=w/p> =O p>j=O Z> =O p>j=O Z>j=O Z> =O p> =p>j=p> =O p>j=p>j=O p> =O Z> =Z>j=p> =Z>j=p>j=p> =Z> =j= =Z>j=j=Z> =p> =

j= =

j=j= =

=P =p>j=P =p> =

j=P =p>j=

= =P =Z>j=P =p> =P =Z>j=P =p>j=P =p> =P =d>;=.=Z>j=.=Z> =P =Z>j=.=Z>j=P =Z> =P =Hx>n=@k=Z> = -2=Hx>n= -2=Hx>n=@k=Z> =@k=Z> = -2=>=o=a>];=o=:[>f=o=ŧ>,=o=:[>f=o=0>=o=ŧ>,=o=>=o=:[>f=o=>> =o=>=o=ŧ>,=o=>> =o=> =o=>=o=ŧ>,=o=>> =.=>> =o=ŧ>,=o=ŧ>,=.=>> =.=x>D=.=ŧ>,=.=p>*=.=>> =.=ŧ>,=.=x>D=.=>> =`.ŧ>,=`.ɠ>-=.ŧ>,=`.p>*=`.ɠ>-=.>> =`.>> =oŧ>,=`.>> =oŧ>,=oŧ>,=`.>f=#> =#f>f=#> =#f> =#f>f=#f>f=#f> =#f>f=C f> =#f> =C f>f=C f>f=C f> =C >f=C f> =C > =C >f=C >f=C > =C >f=#> =C > =#>f=#>Of=E>x==E>x=`=H>/`e=X>*+fp6=>2Qh=>2Qh=>Of=X>*+fp6=H>/`e=>2Qh=Q>m=>2Qh=C>Vm=Q>m=X>*+fp6=>Of=3w>/`e`=p> =+ɠ>-=.p>*=`.p> =+=x>D=.=p>*=.=p>*=.=p> =+p> =+=p> =+p>*=`.p>*=.=p>*=.=p>*=`.p>j=.=p>*=`.p>j=`.p>j=.=ǚ>F3 =¤>LS3 =ǚ>x <`.=ǚ>F3 =¤>E `.=¤>LS3 =ǚ>F `.=¤>E `.=ǚ>F3 =ǚ>F `.=¤>+=¤>E `.=ǚ>+=¤>+=ǚ>F `.=ǚ>+=¤>vqq=¤>+=ǚ>wqq=¤>vqq=ǚ>+=ǚ>wqq=¤> +=¤>vqq=ǚ> +=¤> +=ǚ>wqq=ǚ> +=¤>S. <¤> +=ǚ>T. <¤>S. <ǚ> +=ǚ>T. <¤>4¤>S. <ǚ>4¤>4ǚ>T. <ǚ>4¤>S.@ ¤>4ǚ>T.@ ¤>S.@ ǚ>4ǚ>T.@ ¤>+¤>S.@ ǚ>+¤>+ǚ>T.@ ǚ>+¤>vq`q¤>+ǚ>+¤>vq`qǚ>wq`q¤>vq`q¤>+ǚ>wq`qǚ>wq`q¤>+ǚ>+¤>+¤>E @.ǚ>+ǚ>+¤>E @.ǚ>F @.¤>E @.¤>LS3ǚ>F @.ǚ>F @.¤>LS3ǚ>F3¤>LS3¤>y <@.ǚ>F3ǚ>F3¤>y <@.ǚ>x <@.¤>y <@.¤>+=ǚ>x <@.ǚ>x <@.¤>+=ǚ>+=¤>+=¤>q=`qǚ>+=ǚ>+=¤>q=`qǚ>q=`q¤>q=`q¤>=+ǚ>q=`qǚ>q=`q¤>=+ǚ>=+¤>=+¤>`.=@ ǚ>=+ǚ>=+¤>`.=@ ǚ>_.=@ ¤>`.=@ ¤>=4ǚ>_.=@ ǚ>_.=@ ¤>=4ǚ>=4ǚ>=4¤>`.= <¤>=4ǚ>_.= <¤>`.= <ǚ>=4ǚ>_.= <¤>= +=¤>`.= <ǚ>= +=¤>= +=ǚ>_.= <ǚ>= +=¤>q=q=¤>= +=ǚ>q=q=¤>q=q=ǚ>= +=ǚ>q=q=¤>+==¤>q=q=ǚ>+==¤>+==ǚ>q=q=ǚ>+==¤>y <`.=¤>+==ǚ>x <`.=¤>y <`.=ǚ>+==ǚ>x <`.=¤>LS3 =¤>y <`.=C>Vm,>0f0M>m-mp⭽\>m,>0f0MC>Vm\>mH>/`e,>0f0M4G>b˧,>0f0MH>/`eE>Ga@,>0f0M4G>b˧E>Ga@,>0f0ME>x=@,>0f0ME>x=pE>x=@l>]e0 E>Ga@4G>b˧'>f=O/f=#<>f=#f=#<'>f=O/f=C ='>f=O/<'>f=e=f>f=C =f>f=C ='>f=e=>f=C ='>f=e=>f=e=>f=C =>f=C =>f=e=>f=#<>f=e=>f=O/<>f=#<>f=#<>f=O/<'>f=O/6%=eJ0>= 20>=o!>6%=eJ0>=o#>Ž= a#>Ž= a0>=o:>ȧ=ʊ0>=oL\>\=o:>ȧ=ʊ:>ȧ=ʊL\>\=ofA>ӆ=0>=`.p>*=`.0>= 2p>*=`.ŧ>,=`.0>= 20>= 2ŧ>,=`.0>=oŧ>,=`.ŧ>,=o0>=o> =oZ> =k>=oZ> =kHx>n=k>=oa>];=o>=oa>];=h>=o>=`.a>];=ha>];=h>=`.a>];=`.Hx>n=kHx>n=,2>=oHx>n=,2>=`.>=o>=`.Hx>n=,2>j=`.Hx>n=,2Z> =,2>j=`.>j=`.Z> =,2{>=w/{>=w/Z>j=`.>j=`.>j=.=p>j=P =p>j=.=>j=.=Z>j=P =p>j=P =Z>j=.=Z>j=P =>j=.=>l=@p>j=.=l>m=p>j=.=p>j=`.l>m=p>j=`.f7>y=#l>m=>j= !=>5k==p>j=p>j=>5k==p>j=O Z>j=Z>j=

j=Z>j=

j=

j=p>j=p>j=<>j= !=p>j=

j=P =>j= !=>j= !=p>j=.=p>j=P =>~==p>j=.=>j= !=Z>j=`.Z>j=O >j=`.Z>j=O p>j=O >j=`.눧>(l=ڊ>k=zp>j=O p>j=O ڊ>k=z>j=`.ڊ>k=zf7>y=#>j=`.>j=`.f7>y=#p>j=`.>5k==>j==p>j=O p>j=O >j==눧>(l=>j==n>m=4<눧>(l=눧>(l=n>m=4<>l=@n>m=4<>m= =>l=@>l=@>m= =p>j=.=p>j=.=>m= =>~==d>;=.=Z>j=.=>j=.=>=.=Hx>n=@k=Hx>n= -2=>=.=>=o=Hx>n=@k=>=o=Z> =@k=Hx>n=@k=>=o=> =o=Z> =@k=>j=.=Z> = -2=d>;=.=>j=.=Hx>n= -2=Z> = -2=>=.=Hx>n= -2=>j=.=a>];=qe=>=.=a>];=.=a>];=qe=>=o=>=.=a>];=o=>=o=a>];=qe=:[>f=o=t@>=ฉ=G>Z=P=2!>y=G=+>е=`D.=0>=o=G>Z=P=0>=o=:[>f=o=G>Z=P=2!>y=G=0>=o=_>d=_=2!>y=G=G>Z=P=ŧ>,=o=0>=o=+>е=`D.=p>*=.=ŧ>,=o=+>е=`D.=ŧ>,=.=ŧ>,=o=p>*=.='>f=ef>f=C >f=C f>f=C '>f=ef>f=#'>f=e'>f=N/f>f=#f>f=#'>f=N/>f=#'>f=N/>f=N/>f=#>f=#>f=N/>f=C >f=N/>f=e>f=C >f=C >f=e'>f=e>=.=>j=.=p>j=.=+>е=`D.=p>j=.=p>*=.=a>];=.=p>j=.=+>е=`D.=a>];=.=>=.=p>j=.=>=`.>j=`.a>];=`.>j=`.p>j=`.a>];=`.a>];=`.p>j=`.<2>=`.p>j=`.p>*=`.<2>=`.<2>=`.p>*=`.0>=`.Sҗ>j\@=ǚ>T. <ǚ> +=ǚ>wqq=Sҗ>j\@=ǚ> +=ǚ>wqq=Sҗ>TT=Sҗ>j\@=ǚ>+=Sҗ>TT=ǚ>wqq=ǚ>+=Sҗ>%\=Sҗ>TT=ǚ>F `.=Sҗ>%\=ǚ>+=ǚ>F `.=Sҗ>p֛ f=Sҗ>%\=ǚ>F3 =Sҗ>p֛ f=ǚ>F `.=ǚ>F3 =Sҗ>"B3@=Sҗ>p֛ f=ǚ>F3 =Sҗ>֛< f=Sҗ>"B3@=ǚ>x <`.=Sҗ>֛< f=ǚ>F3 =ǚ>x <`.=Sҗ><=\=Sҗ>֛< f=ǚ>+==Sҗ><=\=ǚ>x <`.=ǚ>+==Sҗ>T= T=Sҗ><=\=ǚ>q=q=Sҗ>T= T=ǚ>+==ǚ>q=q=Sҗ>y\=@=Sҗ>T= T=ǚ>= +=Sҗ>y\=@=ǚ>q=q=ǚ>= +=Sҗ>%f=֛y\=@=ǚ>_.= %f=֛<ǚ>= +=ǚ>=4Sҗ>%f=֛<ǚ>_.= <ǚ>=4Sҗ>1=4Sҗ>%f=֛<ǚ>=4Sҗ>1=4ǚ>_.=@ Sҗ>1=4Sҗ>%f=@֛ǚ>_.=@ ǚ>_.=@ Sҗ>%f=@֛ǚ>=+Sҗ>%f=@֛Sҗ>y\=ǚ>=+ǚ>=+Sҗ>y\=ǚ>q=`qSҗ>y\=Sҗ>T=Tǚ>q=`qǚ>q=`qSҗ>T=Tǚ>+=Sҗ>T=TSҗ><=`\ǚ>+=ǚ>+=Sҗ><=`\ǚ>x <@.Sҗ><=`\Sҗ>֛<fǚ>x <@.ǚ>x <@.Sҗ>֛<fǚ>F3Sҗ>֛<fSҗ>#"3 ǚ>F3ǚ>F3Sҗ>#"3 ǚ>F @.Sҗ>#"3 Sҗ>t֛fǚ>F @.Sҗ>t֛fSҗ>&`\ǚ>F @.ǚ>F @.Sҗ>&`\ǚ>+Sҗ>&`\fҗ>+T@Tǚ>+ǚ>+fҗ>+T@Tǚ>wq`qfҗ>+T@Tuԗ>2^1ǚ>wq`qǚ>wq`quԗ>2^1ǚ>+uԗ>2^1Sҗ>f@֛ǚ>+ǚ>T.@ Sҗ>f@֛ǚ>+ǚ>4Sҗ>f@֛ǚ>T.@ ǚ>4Sҗ>%4Sҗ>f@֛ǚ>T. %4ǚ>4ǚ>T. f֛%4Sҗ>j\@=Sҗ>f֛<ǚ>T. <> Xʨ>I >N@*%> Ǩ>!Xʨ>I >@Ǩ>!> >@̨>v@ Ǩ>!>`"̨>v@ >@>`"GŨ>Z"-̨>v@ >m`'GŨ>Z"->`">p%(GŨ>Z"->m`'>p%(Xʨ> *GŨ>Z"->N@*%Xʨ> *>p%(>N@*%Xʨ>I Xʨ> *>N"=GŨ>9S"-=̨>  =>'=GŨ>9S"-=>N"=>(=GŨ>9S"-=>'=>(=Wʨ> *=GŨ>9S"-=>`*%=Wʨ> *=>(=>`*%=Wʨ> =Wʨ> *=>m =Wʨ> =>`*%=>m =Ǩ>=Wʨ> =>p%=Ǩ>=>m =>p%=̨>  =Ǩ>=>N"=̨>  =>p%='>=e=>=e='>f=e=>=e=>f=e='>f=e=>=e=>=O/<>f=e=>=O/<>f=O/<>f=e=>=O/<'>=O/<>f=O/<'>=O/<'>f=O/<>f=O/<'>=O/<'>=e='>f=O/<'>=e='>f=e='>f=O/<@>켲=>#>Ž= a>%=A#>Ž= a@>켲=>!>6%=eJ0>= 2!>6%=eJ@>켲=>0>= 2@>켲=><2>=`.<2>=`.@>켲=>A>@= ; @>켲=>>%=A>tվ= ; >tվ= ; >%=A>>ߨ= a>>ߨ= a>%=A#>Ž= a@>켲=>>tվ= ; A>@= ; >tվ= ; *>=BA>@= ; A>@= ; *>=BZ>=B*>=B*>=:=BZ>=:<*>=:=BZ>=:=) =*>=:{=) =h>=) =Z>=:<+>е=`D.=<>=*7=NA>{=) =@>2= D=+>е=`D.=2!>y=G=@>2= D=<>=*7=+>е=`D.=@>2= D=2!>y=G=_>d=_=y>"=_=@>2= D=_>d=_=<>=*7=y>"=_=h>=) =<>=*7=@>2= D=y>"=_=NA>{=) =<>=*7=h>=) =>>ߨ= a#>Ž= aT>3=ʊ#>Ž= a:>ȧ=ʊT>3=ʊT>3=ʊ:>ȧ=ʊ>=:>ȧ=ʊfA>ӆ=>=>;=ฉ=t@>=ฉ=:[>f=o=a>];=hx><=@H>n=@x><=@>=żH>n=@H>n=@>=ż k> =ż>=żb>{=d k> =ż|v>>=db>{=d k> =ż|v>>=d>=@9{=dj>I=@9<>=@9<|v>>=dj>I=@9<x>}7=>=>=@9<3H>Y=>=x>}7=>=j>I=@9<3H>Y=>=a>];=qe=x>}7=>=>;=ฉ=a>];=qe=3H>Y=>=>;=ฉ=:[>f=o=a>];=qe=fA>ӆ=L\>\=o>=>=L\>\=oH>n=@H>n=@L\>\=oa>];=h<2>=`.0>=`.0>= 2x><=@a>];=h>=ża>];=ha>];=`.>=ża>];=.=+>е=`D.=NA>{=) =Z>=:];=.=NA>{=) =a>];=.=x>}7=>=a>];=qe=a>];=.=>=@9<x>}7=>=Z>=:<>=@9];=.=Z>=:{=d>=@9=Bb>{=dZ>=:{=d>=żZ>=BZ>=B>=żA>@= ; >=ża>];=`.A>@= ; A>@= ; a>];=`.<2>=`.ڊ>k=z눧>(l=W>=W>=눧>(l=>W=>W=눧>(l=G>W=눧>(l=>l=@G>W=G>W=>l=@>LX= >l=@l>m=>LX= >LX= l>m=>$=l>m=f7>y=#>$=>$=f7>y=#>W=`!>W=`!f7>y=#W>=f7>y=#ڊ>k=zW>=$>W=F=>5k==΃>W=t=>5k==>j= !=΃>W=t=΃>W=t=>j= !=ۦ>@=!=ۦ>@=!=>~==>j= !=R>W=r=>~==ۦ>@=!=>~==>m= =R>W=r=R>W=r=>m= =/>@=@Z =>m= =n>m=4@=@Z =/>@=@Z =n>m=4<>W=^m=4<>j==>W=^<>W=^<>j==$>W=F=>j==>5k==$>W=F=:[>f=o=a>];=o=a>];=qe=b>|=P=t@>=ฉ=>;=ฉ=b>|=P=G>Z=P=t@>=ฉ=y>"=_=G>Z=P=b>|=P=y>"=_=_>d=_=G>Z=P='>=N/>=N/'>f=N/>=N/>f=N/'>f=N/>=N/>=e>f=N/>=e>f=e>f=N/>=e'>=e>f=e'>=e'>f=e>f=e'>=e'>=N/'>f=e'>=N/'>f=N/'>f=eo>0=4o>?n=@Sҗ>%f=@֛o>C}=@"Sҗ>y\=o>?n=@Sҗ>y\=Sҗ>%f=@֛o>?n=@o>a&E=cSҗ>T=To>C}=@"Sҗ>T=TSҗ>y\=o>C}=@"o>k <숽Sҗ><=`\o>a&E=cSҗ><=`\Sҗ>T=To>a&E=co>(a+֛<fo>k <숽Sҗ>֛<fSҗ><=`\o>k <숽o>`+Sҗ>#"3 o>(a+#"3 Sҗ>֛<fo>(a+&`\Sҗ>t֛fo>G 숽o>G 숽Sҗ>t֛fo>`+Sҗ>t֛fSҗ>#"3 o>`+o>5n@uԗ>2^1o>C}@"o>C}@"uԗ>2^1>&Wr 2uԗ>2^1fҗ>+T@T>&Wr 2>&Wr 2fҗ>+T@T>K&Ec>K&Ecfҗ>+T@T5>. qfҗ>+T@TSҗ>&`\5>. q5>. qSҗ>&`\r>$2WrSҗ>&`\o>G 숽r>$2Wrr>$2Wro>G 숽r>L&Eco>G 숽o>M&Ecr>L&Ecr>L&Eco>M&Ecr>'Wr 2o>M&Eco>C}@"r>'Wr 2r>'Wr 2o>C}@">&Wr 2o>&4Sҗ>f@֛o>5n@o>5n@Sҗ>f@֛uԗ>2^1o>&4Sҗ>f֛<o>5n<o>&4Sҗ>%4Sҗ>f֛f@֛Sҗ>%4o>&4o>5nj\@=o>C}"=Sҗ>f֛j\@=o>5n<o>C}"=Sҗ>TT=o>M&Ec=o>C}"=Sҗ>j\@=Sҗ>TT=o>M&Ec=Sҗ>%\=o>G =o>M&Ec=Sҗ>TT=Sҗ>%\=o>G =Sҗ>p֛ f=o>`+=o>G =Sҗ>%\=Sҗ>p֛ f=o>`+=Sҗ>"B3@=o>(a+<=o>`+=Sҗ>p֛ f=Sҗ>"B3@=o>(a+<=Sҗ>֛< f=o>k <=Sҗ>"B3@=Sҗ>֛< f=o>(a+<=o>k <=Sҗ><=\=o>a&E=c=Sҗ>֛< f=Sҗ><=\=o>k <=o>a&E=c=Sҗ>T= T=o>C}="=Sҗ><=\=Sҗ>T= T=o>a&E=c=o>C}="=Sҗ>y\=@=o>?n=T= T=Sҗ>y\=@=o>C}="=Sҗ>%f=@֛Sҗ>1=4o>0=4o>0=4Sҗ>%f=֛1=4o>?n=%f=֛<o>0=4Sҗ>y\=@=Sҗ>%f=֛<o>?n=<>ף#>p%(>m`'>ף#>m`'>`">ף#>`">@>ף#>@> >ף#> >N@*%>ף#>N@*%>p%(>ף #=>p%=>m =>ף #=>m =>`*%=>ף #=>`*%=>(=>ף #=>(=>'=>ף #=>'=>N"=>ף #=>N"=>p%='>=e='>=O/<>=e='>=O/<>=O/<>=e=H>n=@ k> =ż*>=B k> =ż|v>>=d*>=B*>=:<|v>>=d*>=B*>=:I=@9<|v>>=dh>=) =j>I=@9<*>=:=) =3H>Y=>=j>I=@9"=_=3H>Y=>=h>=) =y>"=_=>;=ฉ=3H>Y=>=b>|=P=>;=ฉ=y>"=_=T>3=ʊ>=>>ߨ= a>=H>n=@>>ߨ= a>>ߨ= aH>n=@>tվ= ; H>n=@*>=B>tվ= ; >=B=@>2= D=׋>BC=WN=>=B=<>=*7=@>2= D=>=B=<>=*7=(7>û=MA=(7>û=MA=<>=*7=@>2= D=@>2= D=׋>BC=WN=(7>û=MA=c݋>=7CӋ>p=1V>%=Ac݋>=7C@>켲=>>%=Ac݋>=7C@>켲=>Ӌ>p=1V>%=AӋ>p=1V@>켲=>a>];=oa>];=hL\>\=o>$=6g> ̱=P>LX= >LX= 6g> ̱=PG>W=6g> ̱=P7>^= 6G>W=G>W=7>^= 6>W=>W=7>^= 6W>=7>^= 6K>=W>=W>=K>=>W=`!K>=>$=>W=`!/>@=@Z =Ƥ>=@ =R>W=r=R>W=r=J>==Ƥ>=@ =ۦ>@=!=J>==R>W=r=ۦ>@=!=J>==΃>W=t=J>==K>==΃>W=t=΃>W=t=K>==$>W=F=$>W=F=K>==>W=^==Ƥ>=@ =>W=^<>W=^<Ƥ>=@ =/>@=@Z ='>=N/'>=e>=N/'>=e>=e>=N/o>?n=@h>Y\=?o>C}=@"h>Y\=?h>=1'o>C}=@"o>C}=@"h>=1'o>a&E=ch>=1'h>J=io>a&E=co>a&E=ch>J=io>k <숽h>J=ih>iw=o>k <숽o>k <숽h>iw=o>(a+iw=h> 0< o>(a+<o>(a+ 0< o>`+h> 0< h> 0 o>`+o>`+h> 0 o>G 숽h> 0 h>Two>G 숽o>G 숽h>Two>M&Ech>Twh>Jio>M&Eco>M&Ech>Jio>C}@"h>Jih>1'o>C}@"o>C}@"h>1'o>5n@h>1'h>N\?o>5n@o>5n@h>N\?o>&4h>N\?h>4o>&4o>5n4o>&4o>5nN\@@4o>C}"=h>N\@@<o>5n<o>C}"=h>@1'=h>N\@@<o>M&Ec=h>@1'=o>C}"=o>M&Ec=h>Ji=h>@1'=o>G =h>Ji=o>M&Ec=o>G =h>Tw=h>Ji=o>`+=h>Tw=o>G =o>`+=h> 0 =h>Tw=o>(a+<=h> 0 =o>`+=o>(a+<=h> 0< =h> 0 =o>k <=h> 0< =o>(a+<=o>k <=h>iw==h> 0< =o>a&E=c=h>iw==o>k <=o>a&E=c=h>J=i=h>iw==o>C}="=h>J=i=o>a&E=c=o>C}="=h>=@1'=h>J=i=o>?n==@1'=o>C}="=o>?n=Y\=@@=@1'=o>0=4h>Y\=@@<o>?n=Y\=@@ğ=4o>0=4o>0=4h>ğ=4o>?n=@h>ğ=4h>Y\=?o>?n=@r>'Wr 2r>xq`2r>L&Ecr>xq`2r>u2`qr>L&Ecr>L&Ecr>u2`qr>$2Wrr>$2Wrr>u2`q5>. q5>. q>wq`2>K&Ec>K&Ec>wq`2>&Wr 2r>'Wr 2>&Wr 2r>xq`2>&Wr 2>wq`2r>xq`2>=B=(7>û=MA=>=A=K>=7>^= 6>v=`<>v=`<7>^= 66g> ̱=P6g> ̱=P>$=z>I=` z>I=` >$=K>bB=>$=K>=K>bB=K>bB=K>=>v=`<K>==J>==>Ӱ=@ =>Ӱ=@ =J>==ץ>^==ץ>^==Ƥ>=@ =J>==Ƥ>=@ =K>==>Ӱ=@ =f>=ަh>Y\=?h>ğ=4f>=ަf>= h>Y\=?h>Y\=?f>= h>=1'f>= f>S=bh>=1'h>=1'f>S=bh>J=if>S=bjf>nF=Ih>J=ih>J=ijf>nF=Ih>iw=jf>nF=If>ۤ{<`h>iw=h>iw=f>ۤ{<`h> 0< f>ۤ{<`f>XŨ@h> 0< h> 0< f>XŨ@h> 0 f>XŨ@f>ϼ0h> 0 h> 0 f>ϼ0h>Twf>ϼ0f>W2|h>Twh>Twf>W2|h>Jif>W2|f>8ozCh>Jih>Jif>8ozCh>1'f>8ozCf>̍eh>1'h>1'f>̍eh>N\?f>̍ef> )m(h>N\?h>N\?f> )m(h>4f> )m(f> /p(4h>N\@@ /p(4h>N\@@zڍ_ /p(@1'=f>zڍ_N\@@@1'=f>o)C=f>zڍ_Ji=f>o)C=h>@1'=h>Ji=f>V2|=f>o)C=h>Tw=f>V2|=h>Ji=h>Tw=f>ϼP=f>V2|=h> 0 =f>ϼP=h>Tw=h> 0 =Cf>ӨpB=f>ϼP=h> 0< =Cf>ӨpB=h> 0 =h> 0< =qf>{< g=Cf>ӨpB=h>iw==qf>{< g=h> 0< =h>iw==lf>AF=@I=qf>{< g=h>J=i=lf>AF=@I=h>iw==h>J=i=f>S= b=lf>AF=@I=h>=@1'=f>S= b=h>J=i=h>=@1'=f>=` =f>S= b=h>Y\=@@=` =h>=@1'=h>Y\=@@=` =h>ğ=4f>=ަY\=@@ğ=4f>ğ=4f>=ަğ=4f>ğ=4f>=ަ>$jBa>7 lr>u2`q>7 l=N>2 qr>u2`qr>u2`q=N>2 q5>. q=N>2 q>7 l5>. q}>Ȍa jB>wq`2Cϖ>uQ`Q>wq`25>. qCϖ>uQ`QCϖ>uQ`Q5>. q}>#jBa5>. q>7 l}>#jBa>$jBar>u2`q7͋>vQ`Qr>u2`qr>xq`27͋>vQ`Q7͋>vQ`Qr>xq`2>Ɍa jB}>Ȍa jB>wq`2>q2>wq`2>wq`2=N>q2r>xq`2=N>q2>=l7r>xq`2r>xq`2>=l7>Ɍa jB׋>BC=WN=>u=`\=(7>û=MA=>u=`\=>=B=(7>û=MA=>=A=>=B=(7>û=MA=>=B=׋>BC=WN=>u=`\=X>m-=@]Ӌ>p=1Vc݋>=7CӋ>p=1VX>m-=@]x>l?=\؁>t=`]F>=VX>m-=@]]>*=qAn>)=NF>=V6g> ̱=PK>bB=>v=`<K>bB=6g> ̱=Pz>I=` Ƥ>=@ =>Ӱ=@ =ץ>^==f>8ozCe> ~`Gf>̍e)c>@ `e> ~`G!c>>*Tq!f>FLJ qKc>U}!c>>*T!c>>*TKc>U}c>A/q!f>FLJ q!c>>*Te>$o@We>$o@Wf>W2|q!f>FLJ qe>$o@Wf>8ozCf>W2|rc>SX&~=c>=DS=e>o@}Q=c>=DS=rc>SX&~=#c>wPT= e>g{1I=f>o)C=e>o@}Q=e>o@}Q=c> \u=rc>SX&~=f>o)C=c> \u=e>o@}Q=bf>Fo=c> \u=f>o)C=f>V2|=bf>Fo=f>o)C=Dc> @= e>g{1I=c>=DS= e>g{1I=f>zڍ_o)C=Cf>ӨpB=c>t ף=f>ϼP=Cf>ӨpB= d> =c>t ף=qf>{< g= d> =Cf>ӨpB=qf>{< g=9d>ߕ; ף= d> =Dc> @=f>zڍ_< e>g{1I=c>ףuzڍ_ @=imd>Lꣽ2;f>zڍ_<c>ףuLꣽ2;f> /p(zڍ_Lꣽ2;f> )m(f> /p( )m(jc>g᣽Ximd>Lꣽ2;e> ~`G)c>@ `f>̍e)c>@ `c>ףtf>̍ef>̍ec>ףtf> )m(c>ףtjc>g᣽Xf> )m(fd>̣= f>ğ=43c>ף=Y<3c>ף=Yğ=4$c>ǣ=@=ަ<3c>ף=Y<׍e>hm=@5U=nc>=U=c>*@e=wu=f>S= b=׍e>hm=@5U=c>*@e=wu=f>S= b=e>x=ED=׍e>hm=@5U=f>=` =e>x=ED=f>S= b=uc>u=.=f>=ަ<$c>ǣ=@u=.=f>=` =f>=ަu=.=e>x=ED=f>=` =nc>=U=e>x=ED=uc>u=.=c>*@e=wu=qe>fiP= o=f>S= b=c>*@e=wu=c>=V==qe>fiP= o=c>j==d>I=@|=c>=V==c>j==lf>AF=@I=d>I=@|=c>t< ף=lf>AF=@I=c>j==c>t< ף=qf>{< g=lf>AF=@I=c>t< ף=9d>ߕ; ף=qf>{< g=lf>AF=@I=qe>fiP= o=d>I=@|=f>S= b=qe>fiP= o=lf>AF=@I=f>V2|=#c>wPT=bf>Fo=f>V2|=c>ΰA2=#c>wPT=f>V2|=%c>\ἰJ=c>ΰA2=f>ϼP=%c>\ἰJ=f>V2|=c>t ף=%c>\ἰJ=f>ϼP=Kc>U}q!f>FLJ qc>A/q!f>FLJ qf>W2|c>A/c>A/f>W2|$c> YHf>W2|f>ϼ0$c> YH$c> YHf>ϼ0c>tףf>ϼ0f>XŨ@c>tףc>tףf>XŨ@:d>敻ףf>S=bUc>`=`nF=If>S=bf>F=}jf>nF=Iue>F=}E c>=qjf>nF=IE c>=qPc>u<أjf>nF=Ijf>nF=IPc>u<أf>ۤ{<`Pc>u<أ6d>u<ףf>ۤ{<`f>ۤ{<`6d>u<ףf>XŨ@6d>u<ף:d>敻ףf>XŨ@ue>F=}nc>yU=KE c>=qe>|=`\I͎e>3p= xRf>= f>= ͎e>3p= xRf>S=b͎e>3p= xRUc>`=`S=bUc>`=`3p= xRc>5=Tc>5=Te>|=`\Ic>4x=-e>|=`\If>= c>4x=-c>4x=-f>= [ c>=0f>= f>=ަ[ c>=0f>=ަf>ğ=4[ c>=0[ c>=0f>ğ=4fd>̣= >'A@w=N>2 q=N>< A{=N>2 q>7 l=N>< A{=N>< A{>7 l>'A@w>7 l>$jBa>'A@w>'A@w>$jBa>;Lk>$jBa7͋>vQ`Q>;Lk>;Lk7͋>vQ`Q7͋>\\7͋>vQ`Q>Ɍa jB7͋>\\7͋>\\>Ɍa jB>k@L>Ɍa jB>=l7>k@L>k@L>=l7>Vw'A>=l7=N>q2>Vw'A>Vw'A=N>q2=N>1A{<=N>q2>1A{<=N>1A{<>Uw'A>Ȍa jB>Uw'A>Uw'A}>Ȍa jB}>߯k@L}>Ȍa jBCϖ>uQ`Q}>߯k@L}>߯k@LCϖ>uQ`QCϖ>\\Cϖ>uQ`Q}>#jBaCϖ>\\Cϖ>\\}>#jBa}>:Lk}>#jBa>7 l}>:Lk}>:Lk>7 l>'A@w>7 l=N>2 q>'A@wӋ>p=1Vx>l?=\ >"=`BWx>l?=\X>m-=@]$>=]X>m-=@]؁>t=`]$>=]$>=]؁>t=`]#>=K[/&>D=U؁>t=`]#>=K[/&>D=UF>=V؁>t=`]zp> =MF>=V/&>D=Uzp> =Mn>)=NF>=V >IU=@Pn>)=Nzp> =M >IU=@Pzp> =Mo >=RCӋ>p=1Vd>I=I]*>F=`_ >IU=@PH>H=cZn>)=NN>=`]H>H=cZ >IU=@PN>=`]*>F=`_H>H=cZg>ʽ= _*>F=`_N>=`]g>ʽ= _Ӌ>p=1V*>F=`_ >"=`BWӋ>p=1Vg>ʽ= _n>)=NF>=V]>*=qAX>m-=@]F>=Vd>I=I]c݋>=7Cd>I=I]Ӌ>p=1VX>m-=@]d>I=I]c݋>=7Cc>ףt\>ףtjc>g᣽Xjc>g᣽X\>ףtimd>Lꣽ2;imd>Lꣽ2;\>ףu<\>ףtimd>Lꣽ2;c>ףu<\>ףu<c>=DS=#c>wPT=]>+QpX=Dc> @=\>ףu<c>ףu @=\>k =\>ףu<c>=DS=\>k =Dc> @=c>=DS=Y]>U=\>k =Y]>U=]>+QpX=c>=DS=c>ΰA2=]>+QpX=#c>wPT=c>ΰA2= ]>Z=]>+QpX=%c>\ἰJ= ]>Z=c>ΰA2=%c>\ἰJ=\>t ף= ]>Z=c>t ף=\>t ף=%c>\ἰJ=c>t< ף=\>t ף=9d>ߕ; ף=c>t< ף=\>t< ף=\>t ף= d> =\>t ף=c>t ף= d> =9d>ߕ; ף=\>t ף=\>I[==\>t< ף=c>t< ף=1M]>bU==c>=V==\>I[==\>I[==c>j==c>=V==c>t< ף=c>j==\>I[==uc>u=.=b\>(sd= t=c>*@e=wu=uc>u=.=\>\=@@Q=b\>(sd= t=c>=V==b\>(sd= t=1M]>bU==c>*@e=wu=b\>(sd= t=c>=V==uc>u=.=]>R==\>\=@@Q=$c>ǣ=@<]>R==uc>u=.=$c>ǣ=@<\>ף=u<]>R==3c>ף=Y<\>ף=u<$c>ǣ=@<3c>ף=Y<\>ף=t\>ף=u<3c>ף=Y<\>ף=tfd>̣= fd>̣= \>ף=t[ c>=0 `>Vyr=X=׍e>hm=@5U=qC`>^%q=`GI=e>x=ED=qC`>^%q=`GI=׍e>hm=@5U=qC`>^%q=`GI=e>x=ED=>H`>1Q}=F=nc>=U=4b`>l=YQ=>H`>1Q}=F=>H`>1Q}=F=e>x=ED=nc>=U=4b`>l=YQ=nc>=U= `>Vyr=X=׍e>hm=@5U= `>Vyr=X=nc>=U=v`>Tn=c> \u=bf>Fo=bf>Fo=D`>Fcu=v`>Tn==G`>.tJ@=bf>Fo=#c>wPT=D`>Fcu=bf>Fo==G`>.tJ@=c`>U~=#c>wPT=rc>SX&~==G`>.tJ@=#c>wPT=c`>U~=c`>U~=c> \u=v`>Tn=c`>U~=rc>SX&~=c> \u=1M]>bU==c>=V==d>I=@|=1M]>bU==d>I=@|=7\> K=@^q=7\> K=@^q=d>I=@|=qe>fiP= o=1M]>bU==qe>fiP= o=c>=V==7\> K=@^q=qe>fiP= o=1M]>bU==Y]>U=e>o@}Q=c>=DS=\>:hoO=e>o@}Q=Y]>U=c>=DS= e>g{1I=Y]>U= e>g{1I=\>mx@H=Y]>U=e>o@}Q=\>mx@H= e>g{1I=e>o@}Q=\>:hoO=\>mx@H=>Cu>'A@w،>LMj>'A@w>;Lk،>LMj،>LMj>;Lk(>P\@O\>;Lk7͋>\\(>P\@O\(>P\@O\7͋>\\،>j M7͋>\\>k@L،>j M،>j M>k@LG>u C>k@L>Vw'AG>u CG>u C>Vw'AZN>Xpy/?>Vw'A=N>1A{Xpy/?ZN>Xpy/?=N>1A{uC=N>1A{<>Uw'Ae>uCe>uC>Uw'AÕ>j@M>Uw'A}>߯k@LÕ>j@MÕ>j@M}>߯k@L\t>QO\P\}>߯k@LCϖ>\\\t>QO\P\\t>QO\P\Cϖ>\\Õ>2MjCϖ>\\}>:LkÕ>2MjÕ>2Mj}>:Lk4>2Cu}>:Lk>'A@w4>2Cu4>2Cu>'A@w N>/?@py>'A@w=N>< A{ N>/?@py N>/?@py=N>< A{>Cu=N>< A{>'A@w>Cub]>]=R\>h~r= Je>|=`\Ie>|=`\I\>h~r= J͎e>3p= xR\>`u=kW͎e>3p= xR\>h~r= Jc>5=T͎e>3p= xR\>`u=kWb]>]=Rc>5=T\>`u=kWe>|=`\Ic>5=Tb]>]=R;G`>?tJ= ue>F=}D`>F=`cunc>yU=Kue>F=};G`>?tJ= c`>U=~nc>yU=K;G`>?tJ= c`>U=~t`>T=nnc>yU=Knc>yU=Kt`>T=nUc>`=``=`T=nt`>T=nD`>F=`cuf>F=}f>F=`cu\>lGx\>S`qq!f>FLJ qKc>U}\>S`qq!f>FLJ q\>S`qKc>U}&]>V@&]>V@\>lGxKc>U}\>lGxq!f>FLJ qKc>U}!c>>*T`>~ We>$o@W`>~ WV`>_n5Ue>$o@WQ`>,)pJf>8ozCV`>_n5UV`>_n5Uf>8ozCe>$o@WP`>#|@PGf>8ozCQ`>,)pJe> ~`Gf>8ozCP`>#|@PG`>~ W!c>>*TP`>#|@PG!c>>*Te> ~`GP`>#|@PG\>t<ףPc>u<أE c>=q\>ף=t\>p= +[ c>=0[ c>=0\>p= +c>4x=-\>p= +\>L|=D;c>4x=-c>4x=-\>L|=D;c>5=T\>L|=D;b]>]=Rc>5=Tc>5=Tb]>]=R]>5T=ic>5=T]>5T=iUc>`=``=`5T=inc>yU=K]>5T=i\>SH=^nc>yU=Knc>yU=K\>SH=^E c>=q\>SH=^\>M+=pE c>=qE c>=q\>M+=p\>t<ף\>t<ף\>tףPc>u<أPc>u<أ\>tף6d>u<ף\>tף:d>敻ף6d>u<ף:d>敻ף\>tףc>tף&]>V@c>A/\>n@Ԉc>A/$c> YH\>n@Ԉ\>n@Ԉ$c> YH\><+p\><+p$c> YH\>tף$c> YHc>tף\>tף&]>V@\>\@Q!c>>*Tc>A/&]>V@!c>>*T\>\@Q\>k`!c>>*T!c>>*T\>k`)c>@ `\>k`\>ףt)c>@ `)c>@ `\>ףtc>ףtd>I=I]H>H=cZ*>F=`_F>=VH>H=cZd>I=I]n>)=NH>H=cZF>=VY]>U=\>:hoO=]>+QpX=\>+}<\>mx@H=\>:hoO=\>mx@H=\>k =Y]>U=b]>]=R\>`u=kW]>5T=iv\>-=f$\>h~r= J\>L|=D;\>L|=D;\>h~r= Jb]>]=Rv\>-=f$%w\>W=`Dg\>h~r= J\>h~r= J%w\>W=`Dg\>`u=kW]>R==\>Z=<\>M=@W#=\>ף=u<\>Z=<]>R==]>R==\>M=@W#=\>\=@@Q=\>M=@W#=|\>{=U=\>\=@@Q=\>M=@W#=|\>{=U=;\>Ʈs=I=;\>Ʈs=I=v\>UW=@Ag=\>\=@@Q=\>M=@W#=;\>Ʈs=I=v\>UW=@Ag=\>\=@@Q=|\>{=U=;\>Ʈs=I=b\>(sd= t=v\>UW=@Ag=1M]>bU==\>A==1M]>bU==7\> K=@^q=v\>UW=@Ag=7\> K=@^q=\>A==1M]>bU==7\> K=@^q=v\>UW=@Ag=\>A==1M]>bU==\>I[==\>?<=\>I[==\>A==\>?<=\>t< ף=\>I[==\>ڟPќ=\>t< ף=\>?<=\>ڟPќ=\>t ף=\>t< ף=\>Ҽ=\>t ף=\>ڟPќ=\>Ҽ= ]>Z=\>t ף=\>.J50j= ]>Z=\>Ҽ=\>.J50j=]>+QpX= ]>Z=]>+QpX=A{\>Q\}=\> vN`p=A{\>Q\}=\> vN`p=\>.J50j=A{\>Q\}=]>+QpX=\>.J50j=\>.J50j=\> vN`p=]>+QpX=\>+}<\>k =\>mx@H=\>M:+<\>k =\>+}<\>M:+<\>ףu<\>k =\>M:+<\>ףt\>ףu<\>M9+\>ףt\>M:+<\>M9+\>ףtG\>l-\>ףt\>k`G\>l-\>k`\>\@QG\>l-G\>l-\>\@Q\>-J5j\>lGx\>n@Ԉ\>-J5j\>-J5j\>n@Ԉ\>Ҽ\>?<`噽ew\>ج؝\>tףew\>ج؝\>Ҽ\>tף\>tף\>Ҽ\><+p\>Ҽ\>n@Ԉ\><+p]>5T=i\>kP=p%w\>W=`Dg]>5T=i\>kP=p\>SH=^\>tף\>t<ף\>?<`噽\>t<ף\>M+=p\>?<`噽\>?<`噽\>M+=p\>A=\>M+=p\>SH=^\>A=\>SH=^\>kP=p\>A=%w\>W=`Dg\>kP=p\>A=\>ף=t\>Z=<\>ף=u<\>Z=<\>/=4\>ף=t\>/=4\>Z=@\>ף=t\>ף=t\>Z=@\>p= +\>p= +\>Z=@\>L|=D;\>Z=@v\>-=f$\>L|=D;%w\>W=`Dg]>5T=i\>`u=kW\>n@Ԉ\>lGx&]>V@\>-J5j\>S`q&]>V@\>-J5j[\>5q S&]>V@\>N9~K[\>5q S\>-J5j\>N9~K\>\@Q\>-J5j&]>V@[\>5q S\>\@Q\>\@Q\>N9~K[\>5q S\>\=@@Q=v\>UW=@Ag=b\>(sd= t=\>lGx\>-J5j\>S`q\>.J50j=\>:hoO=]>+QpX=qC`>^%q=`GI=>H`>1Q}=F=4b`>l=YQ=D`>Fcu==G`>.tJ@=c`>U~=c`>U=~;G`>?tJ= D`>F=`cu$>=]o >=RC >=H >=Ho >=RC}>= C/&>D=Uo >=RCzp> =M#>=K[o >=RC/&>D=Uo >=RC$>=]#>=K[x>l?=\$>=] >"=`BW >"=`BW$>=] >=H{>5= Pg>ʽ= _N>=`]{>5= PN>=`] >IU=@P{>5= P >IU=@Po >=RC{>5= Po >=RC}>= C{>5= P}>= C >=H{>5= P >=H >"=`BW{>5= P >"=`BWg>ʽ= _c`>U=~\>kP=pt`>T=nt`>T=n\>kP=pD`>F=`cu\>kP=p]>5T=iD`>F=`cuD`>F=`cu]>5T=ic`>U=~]>5T=i\>kP=pc`>U=~[>Z=@v\>-=f$\>Z=@[>?<`噽\>A=[>?=%w\>W=`Dg\>A=[>?=ew\>ج؝\>?<`噽[>?<`噽[>?<`噽\>?<`噽\>A=[>+J5j\>-J5j[>Ҽ\>-J5j\>Ҽ[>Ҽ[>Ҽ\>Ҽew\>ج؝[>sdF\>-J5j[>+J5j[>M9+G\>l-[>+}[>+}G\>l-[>sdF[>sdFG\>l-\>-J5j[>M:+<\>M:+<[>+}<[>M9+\>M:+<[>M:+<[>M9+\>M9+\>M:+<[>M9+\>M9+G\>l-[>+}<\>+}<[>seF=\>M:+<\>+}<[>+}<[>seF=\>.J50j=[>+J50j=[>seF=\>:hoO=\>.J50j=\>+}<\>:hoO=[>seF=[>Ҽ=\>Ҽ=[>럫Pќ=[>Ҽ=\>.J50j=\>Ҽ=[>+J50j=\>.J50j=[>Ҽ=[>럫Pќ=\>ڟPќ=[>?<=\>Ҽ=\>ڟPќ=[>럫Pќ=[>?==\>A==[>?<=[>?<=\>?<=\>A==\>ڟPќ=\>?<=[>?<=v\>UW=@Ag=\>A==[>?==v\>UW=@Ag=[>M=@W#=\>M=@W#=\>Z=@\>/=4[>Z=@[>Z=@\>/=4[>/=4\>/=4\>Z=<[>/=4[>Z=<\>Z=<[>/=4[>Z=<\>M=@W#=\>Z=<[>M=@W#=\>M=@W#=[>Z=<[\>5q S\>N9~KQ`>,)pJQ`>,)pJ\>N9~KP`>#|@PGP`>#|@PG\>N9~K`>~ W\>N9~K[\>5q S`>~ W`>~ W[\>5q SV`>_n5UV`>_n5U[\>5q SQ`>,)pJc`>U~=A{\>Q\}=D`>Fcu=v`>Tn=A{\>Q\}=c`>U~=v`>Tn=\> vN`p=A{\>Q\}=D`>Fcu=\> vN`p=v`>Tn=D`>Fcu=A{\>Q\}=\> vN`p= `>Vyr=X=|\>{=U=4b`>l=YQ= `>Vyr=X=;\>Ʈs=I=|\>{=U=qC`>^%q=`GI=;\>Ʈs=I= `>Vyr=X=4b`>l=YQ=;\>Ʈs=I=qC`>^%q=`GI=4b`>l=YQ=|\>{=U=;\>Ʈs=I=>CuN>D>>w N>/?@pyN>D>>w֓>B`s N>/?@py N>/?@py֓>B`s4>2Cu֓>B`s >L@0i4>2Cu4>2Cu >L@0iÕ>2Mj >L@0iQ^>ZZÕ>2MjÕ>2MjQ^>ZZ\t>QO\P\Q^>ZZQ>f7iL\t>QO\P\\t>QO\P\Q>f7iLÕ>j@MQ>f7iLՓ>sBÕ>j@MÕ>j@MՓ>sBe>uCՓ>sBM>w@>>e>uCe>uCM>w@>>ZN>Xpy/?M>w@>>Ŏ>rsBZN>Xpy/?ZN>Xpy/?Ŏ>rsBG>u CŎ>rsBp>Z0iLG>u CG>u Cp>Z0iL،>j Mp>Z0iL(>>ZZ،>j M،>j M(>>ZZ(>P\@O\(>>ZZ(>L@7i(>P\@O\(>P\@O\(>L@7i،>LMj(>L@7iƎ>B`s،>LMj،>LMjƎ>B`s>CuƎ>B`sN>D>>w>Cu[>/=4[>}=4[>Z=@[>}=4[>= [>Z=@[>Z=@[>= v\>-=f$[>= [>蜎=s-v\>-=f$v\>-=f$[>蜎=s-%w\>W=`Dg[>蜎=s-[>Oc=`s%w\>W=`Dg%w\>W=`Dg[>Oc=`s[>?=[>Oc=`s[>=2[>?=[>?=[>=2[>?<`噽[>=2[>Wև?<`噽[>?<`噽[>Wևج؝[>Wև?Ѕew\>ج؝ew\>ج؝[>?Ѕ[>Ҽ[>?Ѕ[>ٔ߼@F[>Ҽ[>Ҽ[>ٔ߼@F[>+J5j[>ٔ߼@F[>v@\[>+J5j[>+J5j[>v@\[>sdF[>v@\[>yR[>sdF[>sdF[>yR[>+}[>yR[>[>+}[>+}[>[>M9+[>[>y[5[>M9+[>M:+<[>y[5[>M9+[>M:+<[>y[5<[>y[5[>+}<[>y[5<[>M:+<[>+}<[> =[>y[5<[>seF=[> =[>+}<[>seF=[>y@R=[> =[>+J50j=[>y@R=[>seF=[>+J50j=[>v@\=[>y@R=[>Ҽ=[>v@\=[>+J50j=[>Ҽ=[>ٔ߼`F=[>v@\=[>럫Pќ=[>ٔ߼`F=[>Ҽ=[>럫Pќ=[>?=[>ٔ߼`F=[>?<=[>?=[>럫Pќ=[>?<=[>Wև?=[>?<=[>Wև?==[>Wև=2=[>?==[>?==[>=2=v\>UW=@Ag=[>=2=[>Oc=s=v\>UW=@Ag=v\>UW=@Ag=[>Oc=s=[>M=@W#=[>M=@W#=[>蜎=@s-=[>Oc=s=[>Z=<[>蜎=@s-=[>M=@W#=[>Z=<[>=@!<[>蜎=@s-=[>/=4[>=@!<[>Z=<[>=@!<[>}=4[>/=4[>= vq[>c=;[>蜎=s-vq[>c=;vq[>|=`.[>蜎=s-[>蜎=s-vq[>|=`.[>Oc=`svq[>|=`.vq[>*@e=wu[>Oc=`s[>Oc=`svq[>*@e=wu[>=2vq[>*@e=wuwq[>=[>=2[>=2wq[>=[>Wև=wq[><`l[>Wև<`l[>?Ѕwq[><`lwq[>\]P[>?Ѕ[>?Ѕwq[>\]P[>ٔ߼@Fwq[>\]Pwq[>@=[>ٔ߼@F[>ٔ߼@Fwq[>@=[>v@\wq[>@=wq[>ΰA2[>v@\[>v@\wq[>ΰA2[>yRwq[>ΰA2xq[>ES[>yR[>yRxq[>ES[>xq[>ESxq[>b[>[>xq[>b[>y[5xq[>bxq[>-_6[>y[5[>y[5-_6[>y[5[>y[5-_6-_6[> =xq[>-_6<[>y[5<[> =xq[>b=xq[>-_6<[>y@R=xq[>b=[> =[>y@R=xq[>E S=xq[>b=[>v@\=xq[>E S=[>y@R=[>v@\=wq[>ΰA2=xq[>E S=[>ٔ߼`F=wq[>ΰA2=[>v@\=[>ٔ߼`F=wq[>`==wq[>ΰA2=[>?=wq[>`==[>ٔ߼`F=[>?=wq[>\]p=wq[>`==[>Wև\]p=[>?=[>Wև\]p=[>Wև=2=wq[>==[>=2=[>=2=wq[>==[>Oc=s=wq[>==vq[>*@e=wu=[>Oc=s=[>蜎=@s-=vq[>*@e=wu=[>Oc=s=[>蜎=@s-=vq[>|=.=vq[>*@e=wu=[>=@!|=.=[>蜎=@s-=[>=@!c=@<|=.=[>=@!c=@<<[>}=4vq[>c=@<=4[>}=4[>}=4vq[>=4[>= vq[>=4vq[>c=;[>= Ǝ>B`sM>l6 nN>D>>wM>l6 nu̓>2:`'kN>D>>wN>D>>wu̓>2:`'k֓>B`su̓>2:`'kՠ>DD`֓>B`s֓>B`sՠ>DD` >L@0iՠ>DD`L>jRR >L@0i >L@0iL>jRRQ^>ZZL>jRR>W`DQ^>ZZQ^>ZZ>W`DQ>f7iL>W`D{Γ> k 9:Q>f7iLQ>f7iL{Γ> k 9:Փ>sB{Γ> k 9:hO>nl6Փ>sBՓ>sBhO>nl6M>w@>>hO>nl6Ў>'k2:M>w@>>M>w@>>Ў>'k2:Ŏ>rsBЎ>'k2:>` DŎ>rsBŎ>rsB>` Dp>Z0iL>` DO>R`Rp>Z0iLp>Z0iLO>R`R(>>ZZO>R`Ry>D@`(>>ZZ(>>ZZy>D@`(>L@7iy>D@`͎>/9: k(>L@7i(>L@7i͎>/9: kƎ>B`s͎>/9: kM>l6 nƎ>B`sU>4_=6vq[>c=;vq[>=4U>4_=6U>k=vq[>c=;vq[>c=;U>k=vq[>|=`.U>k=U>E=Svq[>|=`.vq[>|=`.U>E=Svq[>*@e=wuU>E=SU>A=2vq[>*@e=wuvq[>*@e=wuU>A=2wq[>=U>A=2U>"<@=wq[>=wq[>=U>"<@=wq[><`lU>"<@=U>];Pwq[><`lwq[><`lU>];Pwq[>\]PU>];PU>`lwq[>\]Pwq[>\]PU>`lwq[>@=U>`lU>څwq[>@=wq[>@=U>څwq[>ΰA2U>څU>@ewuwq[>ΰA2wq[>ΰA2U>@ewuxq[>ESU>@ewuU>|`.xq[>ESxq[>ESU>|`.xq[>bU>|`.U>\;xq[>bxq[>bU>\;xq[>-_6xq[>-_6U>什4U>\;xq[>-_6什4xq[>-_6xq[>-_6\@<什4xq[>b=U>\@<-_6b=U>|.=U>\@<E S=U>|.=xq[>b=xq[>E S=U>@ewu=U>|.=wq[>ΰA2=U>@ewu=xq[>E S=wq[>ΰA2=U>څ=U>@ewu=wq[>`==U>څ=wq[>ΰA2=wq[>`==U>l=U>څ=wq[>\]p=U>l=wq[>`==wq[>\]p=U>];p=U>l=wq[>];p=wq[>\]p=wq[>"<`==U>];p=wq[>"<`==wq[>==U>"<`==U>A=2=wq[>==wq[>==U>A=2=vq[>*@e=wu=U>A=2=U>E= S=vq[>*@e=wu=vq[>|=.=U>E= S=vq[>*@e=wu=vq[>|=.=U>k==U>E= S=vq[>c=@<k==vq[>|=.=U>k==rU>e=6c=@<c=@<e=6=4vq[>=4rU>e=64_=6U>什4R@S>̟/U>\;U>什4R@S>Т4R@S>̟/U>\@<Т4U>什4U>\@<</S>)Т4U>\@<@=/S>)|.=R@S>@=U>\@<|.=R@S>1)=R@S>@=U>@ewu=R@S>1)=U>|.=U>@ewu=R@S>]>zK=R@S>1)=U>@ewu=R@S>B^m=R@S>]>zK=U>@ewu=Q@S>R :ƃ=R@S>B^m=U>څ=Q@S>R :ƃ=U>@ewu=U>څ=Q@S>=Q@S>R :ƃ=U>l=Q@S>=U>څ=U>l=Q@S>=ؼ=Q@S>=U>l=Q@S>݀ i=Q@S>=ؼ=U>l=Q@S>T=Q@S>݀ i=U>];p=Q@S>T=U>l=U>];p=Q@S>Ʊ;o=Q@S>T=U>"<`==Q@S>Ʊ;o=U>];p=U>"<`==Q@S>E<=Q@S>Ʊ;o=Q@S>E<=Q@S>d<`j=U>"<`==U>"<`==Q@S>d<`j=U>A=2=Q@S>d<`j=Q@S>j=@7=U>A=2=Q@S>j=@7=Q@S>#;= =U>A=2=Q@S>#;= =P@S>0\=k=U>A=2=U>A=2=P@S>0\=k=U>E= S=P@S>0\=k=P@S>|=M=U>E= S=U>k==P@S>|=M=U>E= S=U>k==P@S>Hщ=@'=P@S>|=M=P@S>Hщ=@'=P@S>4V==U>k==P@S>4V==P@S>uQ=k==U>k==P@S>uQ=e=6uQ=L=\1e=6e=6L=\1=4P@S>L=\1L=4U>=4U>=4P@S>L=4U>4_=6P@S>L=4P@S>L=[1U>4_=6P@S>L=[1P@S>uQ=@U>4_=6U>4_=6P@S>uQ=@U>k=P@S>uQ=@P@S>4V=@U>k=U>k=P@S>4V=@U>E=SP@S>4V=@P@S>Hщ='U>E=SP@S>Hщ='P@S>|=MU>E=SP@S>|=MP@S>0\=@kU>E=SU>E=SP@S>0\=@kU>A=2P@S>0\=@kQ@S>#;=U>A=2Q@S>#;=Q@S>j= 7U>A=2U>A=2Q@S>j= 7U>"<@=Q@S>j= 7Q@S>d<@jU>"<@=U>"<@=Q@S>d<@jU>];PQ@S>d<@jQ@S>E<읽U>];PQ@S>E<읽Q@S>Ʊ;oU>];PQ@S>Ʊ;oQ@S>T`젽U>];PU>];PQ@S>T`젽U>`lQ@S>T`젽Q@S>݀iU>`lQ@S>݀iQ@S>=ؼpU>`lU>`lQ@S>=ؼpU>څQ@S>=ؼpQ@S>ЏU>څU>څQ@S>ЏU>@ewuQ@S>ЏQ@S>R :ƃU>@ewuQ@S>R :ƃR@S>B^mU>@ewuR@S>B^mR@S>]>zKU>@ewuU>@ewuR@S>]>zKU>|`.R@S>]>zKR@S>@1)U>|`.R@S>@1)R@S>U>|`.U>|`.R@S>U>\;R@S>R@S>>ǜ@U>\;U>\;R@S>̟/R@S>>ǜ@Լ> =lM>l6 n=N>]9dpM>l6 n͎>/9: k=N>]9dp=N>]9dp͎>/9: kߎ> =l͎>/9: ky>D@`ߎ> =lߎ> =ly>D@`>Gby>D@`O>R`R>Gb>GbO>R`Rq>TTO>R`R>` Dq>TTq>TT>` D>ԢbG>` DЎ>'k2:>ԢbG>ԢbGЎ>'k2:ߎ> l =Ў>'k2:hO>nl6ߎ> l =ߎ> l =hO>nl6=N>dp ]9hO>nl6{Γ> k 9:=N>dp ]9=N>dp ]9{Γ> k 9:Լ> l ={Γ> k 9:>W`DԼ> l =Լ> l =>W`D>ӢbG>W`DL>jRR>ӢbG>ӢbGL>jRRl+>TTL>jRRՠ>DD`l+>TTl+>TTՠ>DD`>Gbՠ>DD`u̓>2:`'k>Gb>Gbu̓>2:`'kԼ> =lu̓>2:`'kM>l6 nԼ> =lP@S>L=\1R=[L=4S0:>R=[<):>Т=4P@S>L=4P@S>L=4):>Т=4P@S>L=[1):>Т=4):>o=ƱP@S>L=[1P@S>L=[1):>o=ƱP@S>uQ=@):>o=Ʊ^0:> R=ڼP@S>uQ=@P@S>uQ=@^0:> R=ڼP@S>4V=@P@S>4V=@^0:> R=ڼP@S>Hщ='^0:> R=ڼ^0:>J=;P@S>Hщ='P@S>Hщ='^0:>J=;P@S>|=MP@S>|=M^0:>J=;P@S>0\=@k^0:>J=;^0:>YM={|P@S>0\=@kP@S>0\=@k^0:>YM={|Q@S>#;=Q@S>#;=^0:>YM={|Q@S>j= 7^0:>YM={|_0:>=BQ@S>j= 7Q@S>j= 7_0:>=BQ@S>d<@jQ@S>d<@j_0:>=BQ@S>E<읽_0:>=B_0:>1<6Q@S>E<읽Q@S>E<읽_0:>1<6Q@S>Ʊ;oQ@S>Ʊ;o_0:>1<6Q@S>T`젽_0:>1<6_0:>0r1p4Q@S>T`젽Q@S>T`젽_0:>0r1p4Q@S>݀iQ@S>݀i_0:>0r1p4Q@S>=ؼp_0:>0r1p4_0:>>Q@S>=ؼpQ@S>=ؼp_0:>>Q@S>ЏQ@S>Џ_0:>>Q@S>R :ƃ_0:>>`0:>lM`l|Q@S>R :ƃQ@S>R :ƃ`0:>lM`l|R@S>B^mR@S>B^m`0:>lM`l|R@S>]>zK`0:>lM`l|`0:>4;R@S>]>zKR@S>]>zK`0:>4;R@S>@1)R@S>@1)`0:>4;R@S>`0:>4;`0:> VټR@S>R@S>`0:> VټR@S>>ǜ@R@S>̟/`0:> VټR@S>>ǜ@R@S>̟/`0:>XL`0:> VټR@S>Т4`0:>XLR@S>̟//S>)<`0:>XLR@S>Т4/S>)a<`0:>XLR@S>@=L+:>a</S>)@=`0:>x=L+:>a1)=`0:>x=R@S>@=R@S>]>zK=`0:>x=R@S>1)=R@S>]>zK=`0:>m+^=`0:>x=R@S>B^m=`0:>m+^=R@S>]>zK=Q@S>R :ƃ=`0:>m+^=R@S>B^m=Q@S>R :ƃ=_0:>) =`0:>m+^=Q@S>=_0:>) =Q@S>R :ƃ=Q@S>=ؼ=_0:>) =Q@S>=Q@S>=ؼ=_0:>ׄ0=_0:>) =Q@S>݀ i=_0:>ׄ0=Q@S>=ؼ=Q@S>T=_0:>ׄ0=Q@S>݀ i=Q@S>T=_0:>6@7P=_0:>ׄ0=Q@S>Ʊ;o=_0:>6@7P=Q@S>T=Q@S>E<=_0:>6@7P=Q@S>Ʊ;o=Q@S>E<=_0:>;<=_0:>6@7P=Q@S>E<=_0:>;<=Q@S>d<`j=Q@S>d<`j=_0:>;<=Q@S>j=@7=_0:>;<=_0:>3#)==Q@S>j=@7=Q@S>j=@7=_0:>3#)==Q@S>#;= =Q@S>#;= =_0:>3#)==P@S>0\=k=_0:>3#)==^0:>m=^=P@S>0\=k=P@S>0\=k=^0:>m=^=P@S>|=M=P@S>|=M=^0:>m=^=P@S>Hщ=@'=^0:>m=^=3:>au=@=P@S>Hщ=@'=P@S>Hщ=@'=3:>au=@=P@S>4V==P@S>4V==3:>au=@=P@S>uQ=<3:>au=@=S0:>R=[uQ=uQ=R=[L=\1<֌>]D`$e>@Y:ho=N>]9dpZ>ϜJ%_>w$e`D>ӢbG>ho@Y: >%_J>ԢbG>ӢbGl+>TTZ>ϜJ%_l+>TT>GbZ>ϜJ%_Z>ϜJ%_>Gb>@Y:ho>GbԼ> =l>@Y:ho>@Y:hoԼ> =l=N>]9dp>ԢbGߎ> l =>ho@Y:ߎ> l ==N>dp ]9>ho@Y:>ho@Y:=N>dp ]9>w$e`D=N>dp ]9Լ> l =>w$e`D>w$e`DԼ> l =>ӢbG=N>]9dpߎ> =l֌>]D`$eߎ> =l>Gb֌>]D`$e֌>]D`$e>Gb >%_J>Gbq>TT >%_J >%_Jq>TT>ԢbG_0:>;<= 5><0= 5>2= 5>,= w=_0:>3#)== 5><0=_0:>3#)==_0:>;<= 5><0= 5>&T= F=^0:>m=^= 5>,= w=^0:>m=^=_0:>3#)== 5>,= w= 5>uЀ=@~=3:>au=@= 5>&T= F=3:>au=@=^0:>m=^= 5>&T= F= 5> =$lR=[< 5>uЀ=@~=S0:>R=[<3:>au=@= 5>uЀ=@~= 5>۽=g):>Т=4 5> =$l<):>Т=4S0:>R=[< 5> =$l< 5>=V¼^0:> R=ڼ 5>۽=g^0:> R=ڼ):>o=Ʊ 5>۽=g 5>۽=g):>o=Ʊ):>Т=4 5>? m=@T'^0:>J=; 5>=V¼^0:>J=;^0:> R=ڼ 5>=V¼ 5>7=`a^0:>YM={| 5>? m=@T'^0:>YM={|^0:>J=; 5>? m=@T' 5>63<_0:>=B 5>7=`a_0:>=B^0:>YM={| 5>7=`a 5>l 1<6 5>63<_0:>1<6_0:>=B 5>63< 5>0 p_0:>0r1p4 5>l 0r1p4_0:>1<6 5>l 3缐_0:>> 5>0 p_0:>>_0:>0r1p4 5>0 p 5>7`a`0:>lM`l| 5>3缐`0:>lM`l|_0:>> 5>3缐 5>3 m@T'`0:>4; 5>7`a`0:>4;`0:>lM`l| 5>7`a 5>3 m@T'`0:> Vټ 5>V¼`0:> Vټ`0:>4; 5>3 m@T' 5>V¼`0:>XL 5>սg 5>V¼`0:> Vټ`0:>XL 5>սgL+:>a< 5> $l< 5>սg`0:>XLL+:>a< 5> $l<`0:>x= 5>mЀ@~= 5> $la<`0:>x= 5>mЀ@~=`0:>m+^= 5>T F= 5>mЀ@~=`0:>x=`0:>m+^= 5>T F=_0:>) = 5> w= 5>T F=`0:>m+^=_0:>) = 5> w=_0:>ׄ0= 5>k0= 5> w=_0:>) =_0:>ׄ0= 5>2=_0:>6@7P=_0:>;<= 5>k0=_0:>6@7P= 5>2= 5>k0=_0:>ׄ0=_0:>6@7P=>w$e`DZ>ϜJ%_>7Oo`O>)6U`i3>;Ja^Z>ϜJ%_3>;Ja^.>ixTZ>ϜJ%_Z>ϜJ%_.>ixT>7Oo`Or>z^E y>^K |t>@Y:hoZ>ϜJ%_>@Y:ho>)6U`i>)6U`i>@Y:hoڔ>=BQ`l>@Y:ho>^K |tڔ>=BQ`l降>\O OoX>4 Ju֌>]D`$e֌>]D`$eX>4 Ju>@Y:hoX>4 JuJ>F@w>@Y:ho>@Y:hoJ>F@wr>z^E y֌>]D`$e >%_J降>\O Oo>iBUG> ^ Ja >%_JG> ^ Jam>xTi >%_J >%_Jm>xTi降>\O Oo>Jy`^E&>xt`eK>ho@Y:>ho@Y:&>xt`eK >%_J&>xt`eK>l BQ >%_J >%_J>l BQ>iBU>7Oo`OC>u J>w$e`D>w$e`DC>u J>ho@Y:C>u J1>@wF>ho@Y:>ho@Y:1>@wF>Jy`^E 5>k0= 5>y %<`= 5>= %`= 5>k0= 5>2= 5>y %<`= 5>rZy= 5>k0= 5>= %`= 5>rZy= 5> w= 5>k0= 5>d<` K= 5> w= 5>rZy= 5>d<` K= 5>T F= 5> w= 5>o`} = 5>T F= 5>d<` K= 5>o`} = 5>mЀ@~= 5>T F= 5>mv< 5>mЀ@~= 5>o`} = 5>mv< 5> $l< 5>mЀ@~= 5>. 5> $l< 5>mv< 5>. 5>սg 5> $l< 5>ꀽbʼ 5>սg 5>. 5>ꀽbʼ 5>V¼ 5>սg 5>X`, 5>V¼ 5>ꀽbʼ 5>X`, 5>3 m@T' 5>V¼ 5>d 5>3 m@T' 5>X`, 5>3 m@T' 5>7`a 5>d 5>d 5>7`a 5>(H0V 5>7`a 5>3缐 5>(H0V 5>(H0V 5>3缐 5>2@} 5>3缐 5>0 p 5>2@} 5>0 p 5>l 2@} 5>2@} 5>l DH<0V 5>l 63< 5>DH<0V 5>DH<0V 5>63< 5>,=d 5>63< 5>7=`a 5>,=d 5>,=d 5>7=`a 5>X=`, 5>7=`a 5>? m=@T' 5>X=`, 5>X=`, 5>? m=@T' 5>=bʼ 5>? m=@T' 5>=V¼ 5>=bʼ 5>=bʼ 5>=V¼ 5>6= 5>=V¼ 5>۽=g 5>6= 5>6= 5>۽=g 5>u=v< 5>۽=g 5> =$l< 5>u=v< 5>u=v< 5> =$l< 5>o=`} = 5> =$l< 5>uЀ=@~= 5>o=`} = 5>o=`} = 5>uЀ=@~= 5>d<=` K= 5>uЀ=@~= 5>&T= F= 5>d<=` K= 5>d<=` K= 5>&T= F= 5>Z&T= F= 5>,= w= 5>ZZ,= w= 5>y %<`= 5>,= w= 5><0= 5>y %<`= 5>2= 5><0= 5>y %<`=3>;Ja^>7Oo`O.>ixT=N>uJtJ>F@ws>L`3qJ>F@wX>4 Jus>L`3qs>L`3qX>4 JuG>;Ti3>:Tiڔ>=BQ`l`)>L`3qڔ>=BQ`l>^K |t`)>L`3q`)>L`3q>^K |t=N>uJt>^K |tJ>F@w=N>uJt3>ȃi T.>ixT>__.>ixT3>;Ja^>__>__3>;Ja^3>:Ti3>;Ja^ڔ>=BQ`l3>:Ti=N>t`J1>@wF`)>^3qL1>@wFC>u J`)>^3qL`)>^3qLC>u J3>ȃi TC>u J.>ixT3>ȃi TG>Ƀi T>l BQs>_3qL>l BQ&>xt`eKs>_3qLs>_3qL&>xt`eK=N>t`J&>xt`eK1>@wF=N>t`JX>4 Jum>xTiG>;TiG>;Tim>xTi>__m>xTiG> ^ Ja>__>__G> ^ JaG>Ƀi TG> ^ Ja>l BQG>Ƀi T>^K |t>)6U`iڔ>=BQ`lX>4 Jur>z^E yJ>F@wG> ^ Ja降>\O Oom>xTi&>xt`eK>iBU>l BQC>u J>Jy`^E1>@wFK7><@i~ 5>2@} 5>DH<0VK7><@i~ 5>DH<0VK7>|=@[ 5>DH<0V 5>,=dK7>|=@[K7>|=@[ 5>,=dK7>'P=`% 5>,=d 5>X=`,K7>'P=`% 5>X=`, 5>=bʼK7>'P=`%K7>'P=`% 5>=bʼK7>w=@¼ 5>=bʼ 5>6=K7>w=@¼K7>w=@¼ 5>6=K7>s=* 5>o=`} =K7>f== 5>u=vf==K7>Pȁ=l< 5>u=v< 5>u=vPȁ=l< 5>6=K7>Pȁ=l=4 5>6= 5>6=K7>=4K7>s=* 5>d<=` K=K7>5=+C= 5>o=`} =K7>5=+C=K7>f== 5>o=`} = 5>Zd<=` K=K7>5=+C= 5>d<=` K= 5>y %<`=K7>Zy %<`=K7>;0= 5>= %`= 5>y %<`=K7>w<0=K7>;0= 5>y %<`=K7>w<0=K7>= %`=K7>;0= 5>rZy= 5>rZy=K7>o= 5>d<` K=K7>;0=K7>o= 5>rZy= 5>d<` K=K7>5+C= 5>o`} =K7>o=K7>5+C= 5>d<` K= 5>o`} =K7>Hȁl< 5>mv< 5>o`} =K7> f=K7>Hȁl5+C=K7> f= 5>o`} = 5>mvHȁl< 5>. 5>.K7>w@¼ 5>ꀽbʼ 5>.K7>j*K7>w@¼K7>Hȁlj* 5>. 5>ꀽbʼK7>w@¼ 5>X`, 5>X`,K7>'P`% 5>dK7>w@¼K7>'P`% 5>X`, 5>(H0VK7>m@[ 5>dK7>'P`%K7>m@[ 5>dK7><@i~K7>c`2 5>2@} 5>2@}K7>c`2 5>(H0VK7>c`2K7>w@i~ 5>(H0V 5>(H0VK7>w@i~K7>m@[N>tLyL>|O@xv>^K |tL>|O@xvڔ>=BQ`l>^K |t>XW;nڔ>=BQ`lL>|O@xv>XW;n3>;Ja^ڔ>=BQ`lgI>bb3>;Ja^>XW;ngI>bb.>ixT3>;Ja^>>nW.>ixTgI>bb>>nWC>u J.>ixTJ>}vvOC>u J>>nWJ>}vvO1>@wFC>u JM>ytL1>@wFJ>}vvOM>ytL&>xt`eK1>@wFM>wx P&>xt`eKM>ytLM>wx P>l BQ&>xt`eK^̍>GmX>l BQM>wx P^̍>GmXG> ^ Ja>l BQS>bbG> ^ Ja^̍>GmXS>bbm>xTiG> ^ Jaۍ>W>nm>xTiS>bbۍ>W>nX>4 Jum>xTi~Q>vO}vX>4 Juۍ>W>n~Q>vO}vJ>F@wX>4 JuN>tLyJ>F@w~Q>vO}v>^K |tJ>F@wN>tLyr>z^E yX>4 Ju=N>@_yv=N>@_yvX>4 Ju 1>}wX>4 Ju降>\O Oo 1>}w 1>}w降>\O Oo[>]!降>\O OoG> ^ Ja[>]![>]!G> ^ Ja>G> ^ Ja>iBU>>>iBU[>`!>iBU&>xt`eK[>`![>`!&>xt`eK>@|&>xt`eK>Jy`^E>@|>@|>Jy`^E=N>v _y>Jy`^EC>u J=N>v _y=N>v _yC>u J>@|C>u J>7Oo`O>@|>@|>7Oo`O~@>`!>7Oo`O3>;Ja^~@>`!~@>`!3>;Ja^ܕ>3>;Ja^>)6U`iܕ>ܕ>>)6U`i~@>]!>)6U`i>^K |t~@>]!~@>]!>^K |t>W|>^K |tr>z^E y>W|>W|r>z^E y=N>@_yvL>|O@xv=N>uJtN>tLy=N>uJts>L`3qN>tLy~Q>vO}vs>L`3qN>tLys>L`3qG>;Ti~Q>vO}vۍ>W>nG>;Ti~Q>vO}vG>;Ti>__ۍ>W>nS>bb>__ۍ>W>n>__G>Ƀi TS>bb^̍>GmXG>Ƀi TS>bbG>Ƀi Ts>_3qL^̍>GmXs>u,Qs>_3qL^̍>GmXs>_3qL=N>t`Js>u,Qs>u,Q=N>t`JM>ytL=N>t`J`)>^3qLM>ytLJ>}vvO`)>^3qLM>ytL`)>^3qL3>ȃi TJ>}vvO>>nW3>ȃi TJ>}vvO3>ȃi T>__>>nWgI>bb>__>>nW>__3>:TigI>bb>XW;n3>:TigI>bb3>:Ti`)>L`3q>XW;nL>|O@xv`)>L`3q>XW;n`)>L`3q=N>uJtL>|O@xvK7>Pȁ=lli~==4K7>Pȁ=lf==Q8>li~=li~=f==Q8>V[==K7>f==K7>5=+C=Q8>V[==Q8>V[==K7>5=+C=Q8>%='P=K7>5=+C=K7>%='P=Q8>%='P=K7>|< w=K7>w<0=Q8>|< w=Q8>+;=K7>w<0=Q8>|< w=Q8>+;=K7>;0=K7>w<0=Q8>l`ȁ=K7>;0=Q8>+;=Q8>l`ȁ=K7>o=K7>;0=Q8> f=K7>o=Q8>l`ȁ=Q8> f=K7>5+C=K7>o=Q8>*C5=K7>5+C=Q8> f=Q8>*C5=K7> f=K7>5+C=Q8>o f=Q8>*C5=Q8>o Hȁl f=Q8>Hȁlo j*K7>HȁlK7>j*Q8>K7>w@¼K7>j*Q8>oK7>w@¼Q8>Q8>oK7>'P`%K7>w@¼Q8>*C5K7>'P`%Q8>oQ8>*C5K7>m@[K7>'P`%Q8>fK7>m@[Q8>*C5K7>m@[K7>w@i~Q8>fQ8>fK7>w@i~Q8>l@ȁK7>w@i~K7>c`2Q8>l@ȁQ8>l@ȁK7>c`2Q8>+;`K7>c`2K7><@i~Q8>+;`Q8>+;`K7><@i~Q8>|<@i~K7>|=@[Q8>|||=@[Q8>%='PK7>|=@[K7>'P=`%Q8>%='PQ8>%='PK7>'P=`%Q8>V[=`K7>'P=`%K7>w=@¼Q8>V[=`Q8>V[=`K7>w=@¼Q8>li~=@K7>w=@¼K7>s=*Q8>li~=@Q8>li~=@K7>s=*Q8>=4K7>s=*K7>=4Q8>=4Q8>=4K7>=4K7>Pȁ=l< 1>}w[>]!>h7a>h7a[>]!<>vLpL[>]!><>vLpL<>vLpL>>a`7>[>`!>a`7>a`7[>`!'>]Ք[>`!>@|'>]Ք'>]Ք>@|=N>vD|>@|=N>v _y=N>vD|=N>vD|=N>v _yt>]Ք=N>v _y>@|t>]Քt>]Ք>@|>a`7>@|~@>`!>a`7>a`7~@>`!>>vLpL~@>`!ܕ>>>vLpL>>vLpLܕ>>h7aܕ>~@>]!>h7a>h7a~@>]!t>!PՔ~@>]!>W|t>!PՔt>!PՔ>W|=N>D|v>W|=N>@_yv=N>D|v=N>D|v=N>@_yv 1>}w^̍>GmXM>wx Ps>u,Qs>u,QM>wx PM>ytLQ8>V[=`Q8>li~=@Q8>=4Q8>l`ȁ=Q8>oQ8> f=Q8>l`ȁ=Q8>*C5Q8>oQ8>l`ȁ=Q8>|%='PQ8>oQ8>Q8> f=Q8>oQ8>o  f=Q8>o *C5=Q8> f=Q8>+;`Q8>|l@ȁQ8>|l`ȁ=Q8>l@ȁQ8>l@ȁQ8>l`ȁ=Q8>fQ8>fQ8>*C5Q8>l`ȁ=Q8>%='PQ8>V[=`Q8>l`ȁ=Q8>V[=`Q8>=4Q8>l`ȁ=Q8>l`ȁ=Q8>=4Q8>+;=Q8>=4Q8>li~=+;=Q8>+;=Q8>li~=|< w=Q8>li~=V[==Q8>|< w=Q8>|< w=Q8>V[==Q8>%='P=<>vLpL>a`7'>]Ք>>vLpL>h7at>!PՔ'>]Ք=N>vD|t>]Ք 1>}w>h7a=N>D|v>h7a<>vLpL=N>D|v=N>D|v<>vLpLt>!PՔ<>vLpL'>]Քt>!PՔt>!PՔ'>]Ք>>vLpL'>]Քt>]Ք>>vLpL>>vLpLt>]Ք>a`7dS&jvBt[{M茼=2~[m(<>qmԣ;$B>Z{ԣ;$B>Z{k:<>qm;أ;>ck:<>qmmѤ?KHO֣;w>ՀcO֣;w>ՀcmѤ?KHף;0?=9ލm٨?HAxP?(9ף;0?799ף;0?79#pP?7أ;]?I#pP?74"q?8w֣;]?w֣;]?4"q?8yգ;x?$qd5"q?,7oƭ?5Dv֣;x? qv֣;x? q7oƭ?5Dأ;C?)C=7o?sCbyrx?$q>أ;?4D=أ;?4D=byrx?$q>Tף;eq?*>byrx?$q>+zu]?>գ;]q?ݟ>գ;]q?ݟ>+zu]?> ٣;P?Ή?+zu]?>nm0?99?֣;{P?&?֣;{P?&?nm0?99?գ; 4?BI?m_0?<9?|r>w|c?bأ;/?FI?bأ;/?FI?|r>w|c?[٣;*>m?|r>w|c?PA>U{?wգ;P&>m?wգ;P&>m?PA>U{?]֣;%= ~?PA>U{?N|a%½~?֣;=~?֣;=~?N|a%½~?գ; B[{?4N|TY½p~?{ENm?ԣ;$BZ{?ԣ;$BZ{?{ENm?;أ;c?(D( m?>.=I?O֣;wՀc?O֣;wՀc?>.=I?ף;0=9?42:I?⇅pvPS?9ף;079?9ף;079?⇅pvPS?أ;]I>8vPc?ߣ_qMS>w֣;]>w֣;]>ߣ_qMS>yգ;x$q>qC>XG%3B=v֣;x q>v֣;x q>XG%3B=أ;C)CXG%3B=FJxRsأ;4Dأ;4DFJxRsTף;eq*QIx sy-[7գ;]qݟգ;]qݟy-[7]e<%^Yy-[7.<%E"]e<%^Y]e<%^Y8<0E#"O/ݼg"E/=Ҿg?O֣;wՀc?x>7"&;?;أ;c?9ף;079?x>7"&;?x>7"&;?9ף;079?F=UGS ?0ԣ;m0:9?w֣;]>Ȑ=UW ?T=UK ?w֣;]>nx>Bn>أ;]I>yգ;x$q>nx>Bn>x>@n;>yգ;x$q>(>7|A=yգ;x$q>أ;4D(>7|A=2(>8|FVA=أ;4D(>4iu(mأ;C)Cգ;]qݟ(>4iu(m(>gumգ;]qݟ(>Z\Tף;eq*]e<%^Y(>Z\(>Z\`e<(^Oq(>IN.г6]e<%^Yк|=%|B"(>P.ӯ6"(>P.ӯ6к|=%|BԊ(>f`к|=%|B;)f`Ɍ(>羴h`t;W,m(>{?wt;W,m]֣;%½ ~(>{?w(>Mb?w]֣;%½ ~t(>J=`{]֣;%½ ~ԣ;$B>Z{2t(>~= `{2t(>~= `{գ; B>[{͍(>>sjգ; B>[{O֣;w>Հc͍(>>sj͍(>>sjO֣;w>ՀcA(>?F;أ;>c9ף;0?79(>L?KFA(>?F9ף;0?79r(>BM?0ԣ;m0?:9w֣;]?Y(>dM?Rr(>BM?w֣;]?M(>n?Sأ;]?Iyգ;x?$qM(>n?SM(>n?Syգ;x?$q(>7|?Ayգ;x?$qأ;?4D=(>7|?A2(>8|?FVAأ;?4D==s?%>أ;C?)C=գ;]q?ݟ>=˺s?o>C=ps?)>գ;]q?ݟ>x>P???Tף;eq?*>֣;{P?&?x>P???x>P?'=?֣;{P?&?q(>IN.?г6?֣;{P?&?bأ;/?FI?"(>P.?ӯ6?"(>P.?ӯ6?bأ;/?FI?Ԋ(>>f`?գ; 4?BI?ף;>&m?Ԋ(>>f`?Ɍ(>>h`?wգ;P&>m?(>{?>w?[٣;*>m?]֣;%= ~?(>{?>w?(>Mb?>w?]֣;%= ~?t(>J`{?]֣;%= ~?ԣ;$BZ{?t(>J`{?s(>r_{?ԣ;$BZ{?= Ӿog?գ; B[{?O֣;wՀc?= Ӿog?XG%3B=qC>z{? >⇅pvPS?{%TT ?qC>R{"T ?Fa@kd>qC>qC>Ha:k*Y>q{C >>.=I?,1&A?⇅pvPS?,1&A?R{"T ?⇅pvPS?(D( m?m#^?>.=I?f<^?,1&A?>.=I?zhY½~?"w~}?{ENm?"w~}?f<^?(D( m?PA>U{?7=}|?4N|TY½p~?7=}|?V+ ]~}?4N|TY½p~?p>|c?LD[>a?PA>U{?LD[>a?H=?|?蕼A>;U{?m_0?<9?ǘ%?YB?|r>w|c?蕘<%?WB?B9g>va?|r>w|c?+zu]?>r བྷPL?O?nm0?99?߽*QL??a %?GTB?nm0?99?byrx?$q> 4y?D[>+zu]?>=4y?ш[>UElAb?Q>z]?>z]?>E'b?O>r བྷPL?O??`P? gv?Kj4"q?8#q?,2fv?Kjp?4D2fv?Kjdk~?kFp?`C7o?sChq~?G^ebyrx?$q>dk~?k 4y?D[>byrx?$q>mѤ?KHlYQ?OAxP?(9nvP? lYQ?O2fv?Kjk:<>qmie[m(<>qm[m(<>qm{h>ie ?RE4oL?q{o=}M茼=2~茼u=~o=}Fd>7ke༖;㾦[eSලY|4oL?q{4oL?q{ලZ|o=}dS&jvB|宽xu_༖;㾦[e༖;㾦[e|宽xu_SලY|G y+[:%/9dS&jvBdS&jvB%/9|宽xu_QIx saƱ#vV& hw+[:G y+[:ñ-sV %/9z{? >|XG%3B=GհB={>|QIx s{>|uNYxOoQIx sQIx sWxhorV} T'G>{]ܼ"7E>f?>pc]ܼ"7E.<%E">f?>pcǓ>W?>mc8<0E#"_?VDC(]n=@@O/ݼg"E)VG>{/#;V.]ܼ"7E(3(@Ӏ=P@4].ƙ3!0);O.'7(ܜ=N@b!)J3!0);O./]=4$awкM>b!)J40]G>4$awкM>>;)Ta!["J$?@ >7;5T\$`wM>^7; .T$?@ >.<<,_?3,-<6<,$?ɑ@³ >g}^{?9!Q?߽?|NK?k=?t(>J`{?2t(>~ `{?|NK?k=?(>Mb?>w?NK? k=?$ ?>۴H?:r(>g|?>w?(>{?>w?$ ?>۴H?Ɍ(>>h`? ?>"H? 3?L?p%?Ԋ(>>f`?Ɍ(>>h`?4?H?%?(> J.?96?4?H?%??}7?g>(>M.? 6?(>M.? 6?2 ?fz7?>+x> P?@?+x> P?@? ?C=ps?)>Ȑ=UW ?> 0?&x>:"Q;?&x>:"Q;?> 0?= Ӿog?> 0?\Gb?F>= Ӿog?= Ӿog?Fb?DF>9!Q?߽?(>M. 6?%e뾉(>:Zrk?%뾄O?q Cyr(>Z](>Z\O?q C(>gum®O?n CV? / ּ(>gum(>gumV? / ּ2(>8|FVA=V? / ּ]?:Gi>2(>8|FVA=2(>8|FVA=]?:Gi>x>Dn>x>Dn>]?:Gi>Վ=UXP ?]?:Gi>+?: >Վ=UXP ?Ȑ=UW ?+?: > >ƛ"0?2 ?fz7?>kd?rb>]n>C=ps?)>(d?)c>T>U? ?<=˺s?o>=˺s?o>րU? ?W<2(>8|?FVAU?I ?+<7 ?)P?I2(>8|?FVA2(>8|?FVA7 ?)P?I(>n?G7 ?)P?I؁#?*?/ľM(>n?Ss(>n?gM?؁#?*?/ľ?Z%?wr(>BM?r(>BM??,?JqA(>?F?,?Jq>iK?H>" A(>?FA(>?F lK??>s 8(>>pjjK?0}># V?0=f ͍(>>sj͍(>>sjV?G5=Z (>}=^{V?G5=Z QK?6kqt(>J=`{2t(>~= `{QK?6kq(>Mb?wQK?k$ ?۴H(>{?w(>{?w$ ?۴HɌ(>羴h` ?"H 3?Lp%Ԋ(>f`Ɍ(>羴h`4?H%(> J.96(>M. 64?H%>?7%뾤>h?,gX><>!rzy>.mzy>.m><>"r|Y˅c>:yD=~WYc>V;y><>"ro=}><>!rFd>7keFd>7ke><>"r>i?gX{h>ie>i?gX?6 ?Ezy>.mD;?,]>h?,gXD*K;?']L<V?|R>lm?TdXnV㽓 wqP7;{5=YshP7;{5|=Ysh=Ysh|=Cxd>|{P>{H@ >=xd>=Cxd>z{? >hwrF>{P>{H@ >iV{R"0>hwrF>=?Q?1>Q)>kz?6h>,a?B9g>va?>)>kz?7=}|?'Sc>ay?P <;=n~?7o#U=X{?N<;=~?1>Q)>kz?7o#U=X{?'Sc>ay?7o#U=X{?ʽn>Jk?7o#U=X{?=?Q?ʽn>Jk?ʽn>Jk?†=M?Q?#;?@]?#;?@]?†=M?Q?C,a?i=~?n]=>UT?[L ? 94y?[> 4y?D[> >TT?K ?E'b?O>>UT?[L ?ǶG??Nj>UT?[L ?߽KL??KjǶG??i=~?n]=DĆ\h?<>†Yh?G>i=~?n]=+Xu?>=?Q?񒘽%?EZB?vqRT?Q ?">ڼ|? \>" N?"w~}?"w~}?\> N?m#^?\> N?uPf?r;ܚ,\?6'옹vl?*v;+\?uPf?6'옹vl?ΐuo rf?eP ]B`y?uPf?">[ټŦ|?eP ]B`y?-">>ټ̧|?"w~}?eP ]B`y?eP ]B`y?"w~}?x !?x !?"w~}?O<=,~?"w~}?H=?|?O<=,~?N<;=~?H=?|?1>Q)>kz?4kyIXh)?vX>V(>{%TT ?z{? >Fa@kd>e>yV6>U>Va>Fa@kd>{%TT ?z{? >vX>V(>v*{Z1>i:{;0>z{? >v*{Z1>i:{;0>v*{Z1>Ͻ]]s >Ͻ[s ,>v*{Z1>ge3eh>v*{Z1>4kyIXh)?ge3eh>JkGXZ,?m{{T ?ge3eh>ge3eh>{%TT ?2gQS?2OOS?{{xT ?&;L>:+?R{"T ?,1&A?f*;I>=+?f*;I>=+?,1&A?6MwG?Ю6pG?,1&A?*v;+\?&A?l^?*v;+\?*v;+\?m#^? \>" N?ñ-sV WxhoCz=;hA&בs!bn'e7c[ۼ@}$[ۼ@}$bn'e7c㾶Cz=;hA&^彫s[ۼ@}$P7;{5P7;{5[ۼ@}$!|!|[ۼ@}$uNYxOoPcZ||宽xu_i>Ӡgpnrj>(gdr|宽xu_>F־XJ}7}]uyj>(gdr q*mj>(gdr>F־XJ<m<m>F־XJɼ/^>F־XJ|宽xu_ɼ{`^ɼ{`^|宽xu_EX{O|宽xu_%/9EX{OnBX`O%/9HN; .R; .%/9kKB%/9ñ-sV wzrKB:~rˍK>ñ-sV bn'e7c㾮'eqcñ-sV Cz=;hA&><>"ro=}D*=1~D=~o=}FX$W o=}PN[|FX$W FX$W PN[|׮6,~]y}7}]uyPcZ|j>(gdr> ,sY?> ,sY?> ,sY?;]Q?.Q猼7Y?HfQ猼7Y?Hf8ZQ?gDl>?*8ZQ?q ?EgDl>?*)Kg>?* ?#ELlm?TdXi=~?n]= 4y?D[>+Xu?>+Xu?> 4y?D[>W!}?G>N"}?> 4y?D[>(Ka?!= 4y?D[>hq~?G^eٵQ4a?,U=8Qa? =dk~?kؠ D}?!3dk~?kgv?KjUC}?LUC}?L(-Nv? lԚu?ԋԚu?ԋgv?KjqFw?RǓ>W?>mc[_?E5՛3썽53(![_?E:e"s:e"s[_?EᆲZkn_?*$?@ >ZkvZkc$?@ >HW>ZUa<>WU$?@ >I > h$?@ >4$awкM>Ec d>hI > h$_wM>5>>>dX9>>eX\$`wM>T6?=&1\$`wM>40]G>cQ6? =1Q6?=1/]=|e?[e?KC40]G>潅h? h>40]G>6(р=M@:h? >Sh?,>6(р=M@O>PW>O>PW>'7(ܜ=N@(rμu׼'7(ܜ=N@T'G>{ͼּͼּT'G>{Ǔ>W?>mcC?/#ͽ >rӍ>}?G}i>V?. q׼u> aH>k?dɽw>k?dɽw>2??,?k?3W' k?Q' 2??'?>g-=2??,?f_?O?>g=>g=H`?zO?%>>?H`?zO?/>2?XD<7E>ܓʻ>?>>?uA2?G<׮7DA>] V??DA>] V??A2?ku<73?b15v=uA2?G<׮7)y?2h"qL3?15B=L3?15B=)y?2h"qO?q CO?q ;D)y?2h"qV? / ּ)y?2h"qu> aH>V? / ּm?rS' og>ȥMk?dɽw>e>tMOu>MPL< k?dɽw>u>MPL< gC?#ͽ&k?,ɽ<>k?dɽw>C?/#ͽV? / ּC?/#ͽ]?:Gi>V? / ּրU? ?W]n>r3`?l>9r3`?l>9(d?)c>T>S?o=>?kd?rb>]n> i?P?hS?o=>?m?P?@=>,F?S?S=>F"?S?Kq=>$?>F?3 4]?,(>=>,F?8J>4?0K4]?,(>QL>y?2K>i?9Ž4]?,(>4]?,(>=>%i?Ž<:?B.~q=>%i?ŽW?'? ?:?ď.Fq:?ď.Fq?'? ?+c?ռ[?'? ?{>B[>R?+c?ռ[䒞>j>R?9>O??+c?ռ[뾙+c?ռ[뾜9>O?}??E?P'!?+6=V?G5=Z >iK?H>" mMp?>.dK?6>) =ؽ|Jp?Ư>@=9ٽr|L{>%RSmMp?>.W{>b-MSD>Q9mMp?>.mMp?>.b>S9ľ?˔>n%F?>W91>`!,d?<>#F??<>#F?>`!,dR?e'k>>`!,d-">?5.R?e'k>mMp?>.`?I[ >JJV?|=_ V?G5=Z `?A >KNK? k/6`?b>O;+c?ռ[؃U?3 ?{<+c?ռ[O=E?+!?=U?M ?<րU? ?W<m?ڊ6 ?(P?I7 ?)P?I>m?ڊ+{#?,*? ľ>L?(3.E>h7T?R?e'k>E>h7T?S'?>}R?e'k>R?e'k>S'?>}GG?_V;žS'?>}QK?kEG?޿Fž|NK?k`?A >KEG?B8ž>m?ڊ>_?s!+{#?,*? ľ>_?+ĕ>pA7?GP"Y|#?٠*?ľY|#?٠*?ľ•>D7?NM"?,?Jqĕ>pA7?GP">VC ?q9?,?Jq?,?Jq>VC ?q9fK?.>$ >'< ?*9C.>^>bnd>iK?H>" fK?.>$ C.>^>bnd=9ٽr|S'?>}6l>>NvQK?kJl>>Zve>;wTkQK?6kqQK?ke>;wTk ?"HZg>ɒ?Pk}> YK ?HK ?HL|>dY2?Ef%}> Y>B#84?H%2?Ef%>B#8?%뾔>B#8Rx>KV?%e뾀?%eRx>KVO?q CRx>KV >i ľO?q CO?q C >iľL3?15B=x?g_=x=^?,`jp>9!Q?߽?9!Q?߽?x=^?,`jp>NK? k=?x=^?,`jp>R?>>|NK?k=?9!Q?߽?\Gb?F>9x?g =\Gb?F>QN>=&Py?9x?g =N>=4Ny?#>N>F?x?g_=x?g_=#>N>F?+ ;?ō9/>G%> F?8J>0K?4?+ ;?ō9/QL>2K?y?>9=i?+ ;?ō9/9 ;?+=>=%i?[=%i?'? QD*?&\V3Ch>|?]@?|?]@?P >#1C>TR?Y>5> >V3Ch>?x뾢+?R?>>nR?>>U?+?|NK?k=?1?1+?6l>Nv?NK? k=?Jl>Zv?e>;w>Tk?|NK?k=?NK? k=?e>;w>Tk? ?>"H?Zg>ɒ>?Pk?}>> Y?K ?>H?K ?>H?L|>>dY?2?E?f%?}>> Y?>B#?8?4?H?%?2?E?f%?>B#?8?2 ?fz7?>>B#?8?|> E?N??}7?g>|> E?N?ȇ>w^?>?}7?g>2 ?fz7?>ȇ>w^?>kd?rb>]n>(d?)c>T>ȇ>w^?>m?P?@1 >Zr7č>$>3cW>.? Gi>|$>Rc>؎>N>͞?]?:Gi>]?:Gi>ڎ>Q>?+?: >+?: >ڎ>Q>?g>0?؎>N>͞?> H?>( 0?>bA0?> H?\Gb?F>>R jH?'d>-f?\Gb?F>\Gb?F>'d>-f?QN>=&Py?kDX 1?vG{JA1>>Uo?H䃽[p??uzs1>'_g? rʾ4kyIXh)?H䃽[p?e>yV6>XYp?&S>v=?#bZ>V!>'D^g?}ʾv*{Z1>6S>}=?#S>~{=?#$B{$[1>vX>V(>\8s{6i=Mz{7o#U=X{?È#T=W{?{6L{i=z{=?Q?{6L{i=z{ 6>뾬^†=M?Q?[=?Q?6>뾈^>)>kz?\8sÈ#T=W{?G6>}K^È#T=W{?1>Q)>kz?6>iF^bL>SnGxἾe?* >q{n">ټ|?m>nc!>ғ>i">[ټŦ|?">[ټŦ|?g->ѓ>i"\> N?uM f?(\>Η N?* >q{C> q{"\> N?K >ޓ>iNYJ>f|S&i=~?n]==~?=J>f|S&T>RT?Q ?i=~?n]=ȶG?2?NYpNYM˶]G?`?6Sq^ֶG?+? >TT?K ?=񖽽q㧾jDSqa^ >QT?zP ?+>vS3=Cxd>7O>l$>T='WsnO>l?4>&d==~=Ysh=ώxd>LwR>`tO>-l51>LwR> rν}=O>le3>ȡAm 覾qν}=We7svё=qν}=LwR>!Ys= 𧼅w`F>@Ņ{o;0>eŎs=!Ys=i:{;0>myD>i:{;0>Ͻ]sh>myD>nyiD>5Ͻ+\so,>d^>Ͻ]]s >ge3eh>d^>&di>ge3eh>1yQ?Gd0e>Q2qTSn ?RQ?ԒyQ?2OOS?,:,?.2OS?f*;I>=+?0:,?):,?f*;I>=+? dF?f*;I>=+?6MwG? dF?`#F?6MwG?u%[?6tVG?*v;+\?u%[?[?r;ܚ,\?v Dtl?r;ܚ,\?$&v0ol?v Dtl?ΐZlwl?6'옹vl?bw?6'옹vl?eP ]B`y?bw?bw?eP ]B`y?׎M}?eP ]B`y? Ș|"?׎M}?R4N}?x !?4$=A}?x !?N<;=~?4$=A}?4$=A}?O<=,~?ێ}b>qw?N<;=~?'Sc>ay?ێ}b>qw?ێ}b>qw?'Sc>ay?7>$jl?'Sc>ay?ʽn>Jk?T>gl?7>$jl?ʽn>Jk?; >&[?ʽn>Jk?H;>]?ޏ>\?; >&[?#;?i]?W?F?J;?C]?ChZd?gu>,d?t>]h?8>CGr?>"E]h?7>+Xu?>CGr?>CGr?>2?Zu?>th-{?q>+Xu?>E#}?z>th-{?q>th-{?q>~I!}?>>V{}?N"}?>8Qa? =Dh}?Dh}?ٵQ4a?,U=th-{?q8Qa? =/猻C}?Lj\.{?Wth-{?qUC}?LCGr?ҟ(B}?sf}Ӛu?A:r?񨕾CGr?p!u?dԋud?jܾ}Ӛu?AujWg?&پud?jܾ,d?tܾuYg?f پQ? ujWg?&پQ猼7Y?HfQ? Q?, Q猼7Y?HfT5:?,i匼4Y?k)Kg>?*T5:?,2:?U,gDl>?*[?F)Kg>?*L[[&K<S?RD;}?T] >[[ >[[D;>]T>glD;?,]bi>MmT>glT>glzy>.mێ}b>qwzy>.mYc>9yێ}b>qwێ}b>qwYƋc>:yG=HA}WYc>V;y(K$=+~G=HA}G=HA}(K$=+~R4N}(K$=+~FX$W R4N}׎M}FX$W awFXؿ׮6,~]yawbwխ6*]]yr:ulխ6*]]y<mr:ulv Dtl<m[y;츸mɼ/^[([ɼ^\HFɼ/^^]O`#F`#F^]O):,d^ {OHN; .):,):,M ;.QQR; .wzrKBQQԒyQkKB&diܾk8K;'eqc&diܾ&diܾ(e;^tZ6rPbn'e7c㾎s%镾qrBrڴ^彫s {qבs!0;{6 {nq2!{FX0;{5!Ys=0;{6ֈawqWe7svё=!Ys=nV㽓 wq+Am Uwq"=WssA%m=WsUc=~¤Amڼ2A} Cz=;hA&2R[`?(>2R[`?(>Cz=;hA&4>|{=Vj?Cz=;hA&ۺVVxko4>|{=Vj?Wxho[ۼ@}$4>|{=Vj?4>|{=Vj?*ۼA} MR- `?d'>>ج>g?1j>ͼg,cr>F־XJS>ڬ>ٛg?hs>cehqFV>YL>h?1j>ͼg,crx>Q־VJFV>YL>h?U>X>h?x>Q־VJ‘(?_>Gj8?>> g?>F־XJ(? _>in8?C`?B>><>r>+V?B`?BA>>lm?TdX><>!rE`?=>1>lm?TdXp;>Mef?>i?gX><>"r 1>NZxf?->(Wf?^>0;>9"r>+V?ҋp@U>rǬw?Pl#L ?l#L ? rXw?[>>}bN!?qFw?R>U>}cNF?x>>xdN?>>U ,sY?pZY>ZpY>J-pY?P`q׮w?(rμu׼Ǔ>W?>mc ˾)&50&?`˾j,&j,&?Ǔ>W?>mc5՛3썽X>gTk?D֛vľQbԘ=Xzu >id ľnOx>K$[֘J9XRx>KV  =|nOx>K$[-><#;8  =|  =|>C#8GO{3@Da>]#B8n>2n Y[[l>D[[l>Dq>5 羖 YľQbľQb5p>YX>gTk Dp>6>eg=ȴ>Ö>?)| D >ȴ>Ö>?;듾NA"7?E>ܓʻ>?ۣA>V?;듾NA"7?;듾NA"7?ۣA>V?/c?C>DA>] V??L3?15B=xd?D>a?B >L3?15B=ǩHq/)3?w.5sE= >i ľ!Jq)軩IqOf* >i ľ|;Xxk D>ByTⅾ6>eg=6>eg=ByTⅾm?rS' ׾gc5>1 >Zr7č>C?"Uͽ׾gc5>C?/#ͽ?c"XNC?/#ͽi>QL= ?b"qN?c"XNi>QL= S"8,g>NLB =Z>wᆰOO8,8,=Z>wᆰOO`qa=Z>wᆰOOm?rS' roa roak?3W' ByTⅾ >rӍ>׾gc5>e*>؎>N>͞?FQ;g$?~ҬW??ՉB1Z?%d>s+f?> H?ՉB1Z?>[ H?S~Ϫ,[??~ҬW??> H?؎>N>͞?FQ;g$?̎>*P>?e*>؎>T>?v$>‹c>>e*>e*>s$>#c?> >rǍ>Bi>G?=>=%i?R>>1K?A?> G?8J>0K?4?g%? ;?8J>0K?4?=>>,F?g%? ;?k%?8?>'>"F?-Ⱥ>S[?#>N>F?ňN>=}Oy? ĺ> [?M>[?ňN>=}Oy?76+gv?QN>=&Py?'d>-f?7+fv?7+fv?'d>-f?ԉȆ!6Z?> G?9T?=>=%i?=>=%i?9T?K.?i D*??lD> v?Y>>x>Nv??lD> v?6l>Nv?ʾ aI`?Jl>Zv??+?ʾ aI`?ʾ~b`??x뾢+?_ Jl+M7??x뾢+? >V3Ch> Jr+F7? Jr+F7?P >#1C>{c`>)>3C >K.?i D*?lyqg`>lyqg`>3'? cJ*?9T?>C#?8?[[l?>D?MbkF??>(J?Y>>Iy^?->MbkF??>Iy^?->|> E?N?PblF?N ?MbkF??|> E?N?-><#?;8?a>]#?B8?n>2>n Y?[[l?>D?[[l?>D?q>5 > Y?>Qb?5p>>Y?X>g>Tk?>Qb?>Qb?X>g>Tk??D>֛v? D?pӾ=>%i?ŽR>>A?1K)| D? Ӿ8J>4?0K;듾NA"?78J>4?0K=>,F?;듾NA"?7;듾NA"?7=>,F?/c?C?=>,F?sm?P?:fxd?D?a?B? .p?P?ǩHq?/)=m?P?@TLJ>{^?&>軩Iq?Of*=!Jq?)=>z^?k>>(J?Y>k D?ӾByT?>=>%i?Ž=>%i?ŽByT?>?'?0 ?׾gc?5v>Ùm?Ί?E?P'!?+6=׾gc?5?E?P'!?+6=?c"?XN>?E?P'!?+6=9>O???b"?qN>?c"?XN>A9>O?\~?S"8?,?9>O??>Ug>R?8?,?8?,?>Ug>R?`q>a?>ge>R?6?O'?s ? r>oa? r>oa?? '? ?ByT?>dY>]C.>^>bnd6匾b?LC>)>5od>@ ?96匾b?LC>VC ?q9•>D7?NM"猾M?C6匾b?LC•>D7?NM"q D/J?Tk•>D7?NM">_?s!q D/J?Tkq D/J?Tk>_?s!St`?Eþ>_?s!L>m?ۊXꕾv`?uGþXꕾv`?uGþL>m?ۊ׾gc?5ҪϾ@>`!,d>W91ҪϾ@>W91a46 >W91gz>s+]QSR63 R63 z>&TSm߶pNz>&TS=aؽ!|Do¯Nm߶pN=aؽ!|F+)=(p=aؽ!|,>>;rdʚl)=pі()=p/>>pdN>4]-">?5.>`!,dSLߏ>YdSLߏ>Yd>`!,d"ŵϾ@?lD vY>>x>Nv?lD v6l>>Nvlʾk|>_Jl>>ZvY'?z>vlʾk|>_lʾk|>_V'?>z̬&$?c/X'?H>|9>8T?̬&$?c/̬&$?c/9>8T?վcW?9>8T?-">?5.վcW?վ1fW?ܝz!>?;.SLߏ>Ydl!{>ȅJp?Ư>@";X?>Jp?Ư>@?˔>n%F?dK;?>";X?>?<>#F?XTŹ ??<>#F?R?e'k>KT$ ?XTŹ ?R?g꾃_>pGN@ GG?_V;žGQ< K辈hsI ]Ⱦhj Ⱦ`?I[ >J辷l!{>ȅ{`?mY >UQKp?¯>l!{>ȅW'.>nr3`?l>9~^k>az>/6`?b>O;S?o=>?~^k>az>~^k>az>S?V=>? Nur>S?Kq=>$?]?5>hNtrm>$]?1+ 4>:?.rhNtrm> Nur><:?B.~q)\O\Kξ<:?B.~q'c?ռ ]\Rξ)\O\Kξ+c?ռ[ʻhĽbϾhsĽuϾ+c?Լ뾢WF,>~y'c?ռ /6`?b>O;W6#>o1?[@?+ TR?Y>5>yeG>t5=yeG>t5=R?>>"R?B>>:^?S^z>;h=m>x=^?,`jp>jNiC¾p#>:^?S^z>9x?g =vMiB¾'#>x?g_=;?#{Pi?¾?S#>2KiN¾#>;?.zK¾N ;?#0_wM&\wM>yM|?]@?yeG>t5=\>s߾f_?O?lGylq?-;>f_?O?2??=.?S;1nq?K/;>;Roq?;>2?p? '?NX>9?2??'?k?dɽw>NX>9?NX>9?yk?QRɽ>f_ݞ>yk?QRɽ>u> aH>_Ӗaߞ>_ޙǞ>aj>i aH>eJzהu> aH>1y?g"7eJzה1y?g"7aA2?<®7eJzהeJzהD2?mD<7\N>߾A2?ku<7f_?O?:W]m>0۾qN<|@Ƽ#Y%|?V%<=vKzNt }`6>l#L ?x>>xdN?t }`6>ndJ?t }`6>x>>xdN?fJ?x>>xdN?pZY>PF;Q?ꍆpe> 0jׄ>YP{{(3> 0jׄ>pZY>pZY>l#L ?YP{{(3>YP{{(3>l#L ?s|`7>ꍆpe>PF;Q?fJ?ocJ??GQ\?`Fr5x)6?͝Q9? y:(>md+?`Fr5x)6?`Fr5x)6? y:(>md+?'=&08?'=&08?e OQ?`Fr5x)6?{Jrt)6?e OQ?𡟾 yqS?=O &Q?aC\?𡟾 yqS?.@`?#L>ϯ->(Wf?ۣn6tS?@q?ۣn6tS? 1>NZxf?@q?->(Wf?>+V?)>X2v">(V?GF?K"8{|?B`?BA>͌>|V?)>X2vOѫ2hZ?.@`?#L>ϯ)>X2vOѫ2hZ?A`?|M>:ۣn6tS?>+V?GF?K"8{|?@q? G?b2"?||? 9?%q?@q?b!X"?V%<=pP?4=:v?FV>YL>h?'J>M>h? (?"_>bm8?P>nP?ɟV?&q>,>̬>g?(?_>q8?A13)->E٬>g?ɟV?&q>E1!3 -,>̬>g?j< =0>Y%|?j< =0>Y%|?,>̬>g?(S=`̬>g?'J>M>h?(S=`nP?(?_>Mk8?K\V?1q>K\V?1q>ª-+O ?rU?P>nP?P>nP?gO/V ?mU?bfD'?8?-V ?mU??7Q3%?C?gf\'?8?gf\'?8?2JL3%? C?ov)4?z0?0M??gf\'?8?ļz:M?\?ļ!8M??gf\'?8?ly)+4?v0?2R[`?(>>={=Rj?0M??:M??4>|{=Vj?"kZ:>v2R[`?(>4>|{=Vj?2R[`?(>:>vüNg ۾ļz:M?\?2R[`?(>¼tLgY۾fü:M?t?2R[`?(>0M??vX>fR|=L2j?B<'TJ>>+>>+ف76S>}=?#6S>}=?# T]]p?dn0J? p:+V?< H䃽[p?=ua?<~=Na?徛'`g?rʾNa?H䃽[p?'`g?rʾ<~0='`g?rʾJ>>+ف7'`g?rʾ6S>}=?#M>L;+ >n0J? x Qp? Ep:+V?< p:+V?< =?/++J?J (-J?p A%=?H+gU?@A%=?H+;h9"? FgN?|@_M:>q{c!>ғ>i;ܾ`>ŲJ==]=nܾ>Jg->ѓ>i==]=nK >ޓ>i_ꖲ>nd=_ꖲ>nu>\>2yt>\>Ѱy_ꖲ>n92=m>Yr_ꖲ>n_M:>q{92=m>YrÓ2=Ry>Xr_M:>q{ 9>b_M:>q{;ܾ`>ŲJ 9>b;ܾ`>ŲJgN?|@ 9>b 9>bgN?|@k; ?iUgN?|@;h9"? FҖ; ?gU_ꖲ>nd===]=n==]=nMeO=8|ýmvd=qN<|@Ƽ|ýmvr1Si3|MývG6>}K^G6>}K^^6vi= |{J'3Sgw6mui=z{\8s^,=vkؾg^,=vkؾgP:s 5=}ۆpv 5=}ۆpvP:s#}K^|ýmvY[RL\J'3S^,=vkؾgJ'3Sb6]|i={{^,=vkؾg]9U(K\M*Or1SJ'3SM*O?&C75"&@7RO 45,4jDSqa^J>f|S&蓾5K蓾5K`(>3xS.oǺris@oǺris@J>f|S&ysNYh~tվ'l$>qν}=侠d_<nyiD> zGİ>myD>d^>rwGܮ> zGİ>d^>eS3]>&di>QQ?eS3]>QQ?,:,?eS3]>eS3]>+):!,?|Q=)?):,?`#F?^S)?\HF?u%[?^S)?|Q=)?BT>[?5{7J?[?v Dtl?H J?r:ul?bw?H J?H J?bw?߿ցoX?Z*aOw?׎M}?.nX?R4N}?4$=A}?؁mX?ڡ pX?=@}?A>S?G=HA}?ێ}b>qw?[tS?ێ}b>qw?7>$jl?[tS?C8A>S?S>cil?{>;?T>gl?; >&[?u >;?; >&[?W?F?u >;?u >;?W?F?W?j?W?F?T5:?,?? ?T5:?,?Q?0?W?j?W?j?mQ?8 ?ο(C?Z>Q? ?ud?j>C?]O>ud?j>CGr?>DC? S>C?]O>CGr?>ֿ_V?/m>CGr?>th-{?q>lV?o>th-{?q>Dh}?lV?o>GV?dS>V{}?GV?dSDh}?th-{?qlV?oth-{?qCGr?lV?oֿ_V?/mCGr?C?]OCGr?ud?jܾtmC?a^ud?jܾQ? DC? Sο(C?ZmQ?8 W?jQ?0T5:?,W?jT5:?,[?FW?jW?jW?Fu >;W?F; >&[u >;; >&[T>glu >;{>;S>cilC8A>S7>$jlێ}b>qwA>Sێ}b>qwG=HA}[tSA>S=@}ڡ pX4$=A}R4N}؁mX׎M}aw؁mX߿ցoXbwH Jbwr:ulH Jr:ul[H J5{7JBT>[|Q=)([`#F^S)`#F):,^S)|Q=)):,eS3],:,QQeS3]QQ&diܾeS3]eS3]^d$^ܾ%fOd^ܾqrdOqr {qdO%fO {nq侠d_<2!{FX!Ys=侠d_<侠d_H>޾Ec d>h*>C3?1I > h5>>>dX*>C3?15>>>dX(T6?C=1>L3?@1>3?r1(T6?C=1je?> cQ6? =1|e?[le?6>]|e?[h?I>je?> h?I>O>PW>rǸ>S'N)?.>Pp>ͼ?u׼rǸ>S'N)?(rμu׼ ˾)&50&?rǸ>S'N)?`˾j,&j,&?53(!s`8e>5՛3썽ge- s`e>:e"sZZk s`e> s`e>ZZk/H>*޾ZZka<>WUHB>9&޾a<>WUEc d>hH>޾W'.>n_k>zz>q8S1?F*Q_XӞ>eev}Ԕq8S1F*= ?ng">UNNX>9?Q_XӞ>q8S1=[e{˔rq.60ByTⅾNX>9?`qa`qaNX>9?8,NX>9? ?ng">UN83,[ج$?/KվaW?ğXTŹ ?վeW?kWݏ>WdTV ?Q_XӞ>q8S1F*= ?ng">UN ?ng">UNq8S1F*=׾c5>q8S1=N2 d8L配>׾c5>׾c5>/ :L>YQe>᥽eE>* =L>QP;#?p.69!0ew~Ȕ/c?C>eev}Ԕ\é>J߾za?H>/c?C>\N>߾;듾NA"7?;듾NA"7?\N>߾k D>k D>\é>J߾ByTⅾ\é>J߾;Roq?;>ByTⅾByTⅾS;1nq?K/;>NV>i>?[U2YD=6Ll|>bmv>{ATV ?~GY@ <[ج$?/[ج$?/pGN@ <ʾ>m_ʾ>_pGN@ <CP :"pGN@ b3`?G>ǩGqd*p.69!0ǩHq/)㘾:X}㾮p.69!0p.69!0|;Xx㾭ѾDt辣(ѾJz]AD] ľNbt辣(ѾJt辣(ѾJ] ľNbC7!"] ľNb?lD vC7!"C7!"?D֛vʾTp>'`Y8\W10?JCd="?=h#=>9T?yeG>t5=ሥd`>B=5"?yeG>t5=B=5"?Oʾt5=Oʾt5=yeG>t5=Jo+I7?^b`&> Qi9?L8t0?Oi?¾l#>Oi?¾l#>48Ys0?/ :L>!20>QP;#?QP;#?!20>~ T??!20>߭D /?~ҬW??~ҬW??ή.K $/?ՉB1Z?߭D /?y 9?ԉȆ!6Z?ՉB1Z?y 9?7+fv?y 9?Oi?¾l#>76+gv?76+gv?Oi?¾l#>*Ǻ>N[?*Ǻ>N[?Oi?¾l#>k%?8?Oi?¾l#>zK¾Ng%? ;?g%? ;?zK¾N> G?֬>CG?zK¾N@T?zK¾N񾓜>yM9T?T?>wMe*H>s 5=q8S1?ak>|z>rq.6?0> ?ng"?>UN>XheĽtϾW'.>np.6?9!0>bk>vz>/c?C?]ak>uz> Nur>za?H?/c?C? Nur>;듾NA"?7;듾NA"?7hNtrm>k D?Ӿk D?Ӿ Nur>ByT?>hNtrm>i\ξByT?>3`?G?ǩGq?d*=p.6?9!0>ǩGq?d*=>(J?Y>p.6?9!0>p.6?9!0>*J?N>Ѿ>(J?Y>ibLF?s ?ѾѾibLF?s ?$Aھ$? '?pfbLF??z]?AD?Dھ%?̍'?@ھw?'?[[l?>D?t辣(>J?z]?AD?] >Nb?t辣(>J?t辣(>J?] >Nb?B=5"?] >Nb??lD> v?JCd="?JCd="??D>֛v?OʾByT?>XheĽtϾ`q>a?`q>a?XheĽtϾ8?,?XheĽtϾ ?ng"?>UN>8?3,?W'.>nq8S1?F* ?ng"?>UN> ?ng"?>UN>q8S1?F*׾c?5q8S1?vҾ!p\??ǘ׾c?5׾c?5Ҿq\?NSt`?Eþ0Ҿ$t\?뼘 "1?lSt`?Eþ:Cq`?Uþw%1?ph X2J?gq D/J?Tk "1?lA?3C "1?lU?&A?3CT?&mv>{AA?3Cl?Cmv>{AdY>]dY>]*u >yAF+)=(pwv>wAlp>\F+)=(pF+)=(pLl|>bm߶pNLl|>b";X?>m߶pN(N;!;?B>a46 a46 ";X?>"ŵϾ@ ;\?w>XTŹ ?ҪϾ@Ͼ@XTŹ ?Z>Tdc½*~H=iwbyHP{3>+:0V?F5 a?徦ΈϾ_?UmsڨQ?ݷ/W5;Z?QV=`z>F>{'-B+\ >3 K?.D3 K?.DlD>rE+2774?оiD>pE+>,J? & 4?о& 4?оB/J? ;?:%B/J? gQ?@5?+5?+gN?|@>29½gJ?@ܾ>J>9>9;ܾ`>ŲJ>!Maܾl>JHL=n$3M>%M$3M>%MHL=n]pMWOHL=ni3|MývO]pMWO4|Zýzv"яKz3 K.D>3 K.D>[zz`x6>74>[zz`x6>4K?& 4>& 4>ndJ?;:%?ndJ?_r-w)m6?5+?5+?_r-w)m6?29?_r-w)m6?ۣn6tS?9?9?O~oS?!M?O~oS?&Zq?-sPG#M?-sPG#M?i*q?pP=O?&Zq?#5=i;v?%ل=O?%ل=O?#5=i;v?">lP?<>oA?<>oA?>з >qjP??1G$?>з >qjP?gf\'?8?p?7A$???$?gf\'?8??"*?'>gf\'?8?bnM??'*?x> !$*?|>LM??gE?&ψ>LM??A!kkE?G>}jE?r̈>A!k1sP? =A!kE"-|Q<~ޯP?=NLO>vj뾦? LTn>r P?ãu >;LTn>r LTn>r u >;ľLXu=a>;[tSľLXu=ľLXu=[tS|L+M;A>S.nX|L+M;|L+M;.nX9L zmXH JLLH JL۾Y־5{7J|Q=)L۾Y־L۾Y־|Q=)3LscIXF)eS3]3LscI3LscIeS3]ALRAս U3=}dOALRAսALRAսdO}Ly ='hO2侠d_<}Ly =}Ly =d<7L |>ud< zGİ>7L |>7L |>K{G>lL/oO> zGİ>eS3]>lL/oO>lL/oO>eS3]>LO?+M3ݕ>|Q=)?LgM?LgM?^S)?oLa?RZL)?5{7J?oLa?7Ld?5{7J?L h?.nX?A>S?̿L R>h?̿L R>h?A>S?Lg> >VUA>nS?{>;?Lg> >нLʊ>>u >;?L>t>Q>{;?W?j?L>t>L>t>W?j?LM?:C>}??tmC?a^>LM?:C>LM?:C>tmC?a^>L?ew<C?]O>lV?o>L?ewL?K&GV?dS>1V?+VCL8?"htmC?a^? HLw>"h; >եY?C7=!"?;bı=^i?C7=!"?L8t0?e;X=__i?;bı=^i?L8t0?¹;1,f?8Y0?y 9?¹;1,f?¹;1,f?y 9?);־VP?y 9?߭D /?;־DRP?';P־TP?߭D /?^;a!Ǜ)?߭D /?!20>[;!)?[;!)?0@>;KUJ>!20>y0 9; KG>; KG>/ :L> ;Dc\>j;>?7 ?j6ھ?'?q;?R8?j6ھ?'?og$>J?p;I?P8?p;I?P8?t辣(>J?;">Y?; >եY?t辣(>J? Cy="?3:?7 "1?l;K?UJ "1?lҾ%t\?~Ř; K?G꾈; K?GҾ%t\?~Ř ;Dc?\Ҿu\?x8$M1?-*;c?:\;c?:\w8L1?;(j?f3=x8$M1?-*^w.^6?\!0>P;$j?3=;%j?3=t.g6?0>;e]?~>^w.^6?\!0>Ѿ>J?`>;w~]?>;w~]?>Ѿ;>? ?j;>?7 ?Ѿ>J?`>?6ھ6?`'?/ :L>x8$M1-*=;c:\>;c:\>w8L1=;(jf3x8$M1-*=^w.^6\!0P;$j3;%j3t.g60;e]~^w.^6\!0Ѿ>J`龁;w~];w~]Ѿ Ѿ>J`?6ھ6`'j;>7 j;>7 j6ھ'q;R8j6ھ'og$ѾJp;IP8p;IP8t辣(ѾJ;"Yt辣(ѾJ Cf "; եY; եY Cf ";bı^i Cf "U2)="6e;X__i;bı^iU2)="6¹;1>,fU2)="6wv>wA¹;1>,f¹;1>,fmv>{AH >XnBH >XnBmv>{Al66?7z>xAU?&l66?73:?7U?&w%1?phc*<}J`Nb:>vc*<}JA8k ʾ*˻iRboHObg^v*Sb3徂fü Pgq۾^>ov)4?z0?ܣc{ž{ov)4?z0??7Q3%?C?d?(>>?7Q3%?C?-V ?mU?d?W(>>d?s(>>-V ?mU?Yp%>/q,>-V ?mU?K\V?1q>p>,>`QzgV">K\V?1q>~pv>[,>PzwV >E1!3 -V? q>A13)-j< =0>Y%|?PzwV >PzwV >j< =0>Y%|?>}?Չ=><<0>?%|?*B<1b=?=}?Չ=>pB<b=n?b!X"??}?!j=>?}?҉=>b!c?GF?K"8{|?g>}?X=>q>4v G?b2"?||?)>͝>}Zq>4v??}?͡=>>U˝>ZӫkZ?)>X2vHgvLHi@>BhZ?*>Ƚ>Zի|jfZ?aC\?whv MHBP@>aC\? ՎVQ?fvKHւ@>}~QTG=HgvLHi@> y:(>md+? y:(>md+?dvVdH߁@>ʆ'=0к8?HgvLHi@>e OQ?'=&08? y:(>md+?#D'QH?'~dUF=PF;Q?O>5<2$5=Z?'~dUF=YP{{(3>q>>qiwbyHP{3>-iw>{2q>>qYP{{(3>#iv><2 0jׄ>0jߏ>$5=Z?i7>2٨w~ҍy½R*~'|=qT>> @qՏ{:,򼟽c½*~H=Cq>>pc½*~H=|U{S;,Ո|'=˰B+& u䬍䥽 45,4HrB+&y|B>f=a|>j=\ /R:O' c5,4a|>j=RO!?ܾ5$!?aܾ^$RO]9U(K\oIUBK\ B-=:kؾg!?ܾ5$!? ܾ$ B-=:kؾg4k? &^,=vkؾg 5=}ۆpvf1k? p60k?7 5s5=#φӴva?pI s5=#φӴv#\>ѰySU?ާ=l 7SU?= t>\>Ѱy92=m>YrÓ2=Ry>Xr 9>buTU?t= SU?ާ=l 9>b k?':>R 9>bҖ; ?gU k?':>R k?':>Rn< ?[UZ?*>Җ; ?gU;h9"? FZ?*>D:i9"? FW=?ʝ+7Z? :>oA%=?H+p:+V?< Z?*>Z?*>p:+V?< krPE>"p:+V?< _?,^jrUE>S_?,^=ua?徬krPE>"OrUW >Na?lr7E>ȮoUY 2>[S= z4@F>La?Y侙qUV W>B<'T<[S= z4@F>78k ʾqλc*<}JB<'TX?PU& =~?ޯP=3 K.D> ?/iEˆ> K,D>& 4>?gE&ψ>?kEG>4> ?!$*|>& 4>5+? ?!$*|>Q?)*n>9)?p?7A$?5+?9??E$?p?7A$?;Е9?@?0A?;Е9?-sPG#M?@?0A??w"M?%ل=O?<>oA?? j>w"M?-?sP>G#M?@0>A?;?Е>9?@0>A?p?7A$?;?Е>9??>9??E$??5?+?p?7A$?Q)*?n>?9?)??5?+? !$*?|>&? 4?> !$*?|>kE?G>?4?>&? 4?>gE?&ψ>? K?,D> /iE?ˆ>~ޯP?=?3 K?.D>?3 K?.D>XP?U& =X?P?U& XP?U& =3 K?.DX?P?U& ~?ޯP?3 K?.D ?/iE?ˆ K?,D& 4?о?gE?&ψ?kE?G4?о ?!$*?|& 4?о5?+ ?!$*?|Q?)*?n9?)p??7A$5?+>9??E$p??7A$;Е>9@?0>A;Е>9-sP>G#M@?0>A?<>oA j>w"M]?pM=WO j>w"M%لOp?P=O%?ل=OpPO? jw"M]pMWOLO?LO?%s8A->LtQ>.%sAG>^9<=>lL/oO>LtQ>9:>7L |>9:>\M} h<=7L |>7L |>?N}B} Ji<=}Ly =M}% ;=>k^Q:}Ly =}Ly =A k^e:L&SeսA k^e:T92*@ALRAսL&Seսp92*j6@LhD=J95*%3@ZbĻy3LscILhD=ZbĻyL۾Y־ZbĻy9L۾Y־L۾Y־9L9[}L咾LcY|L+M;[9@/|L+M;|L+M;9ʫ./ľLXu=9ʫ./! M!+< F$sg~>Ln> Ln> >&s{>uL>`뾉$sg~>96d>^L>`뾶L>`96d>^TL?9n>><[TL?TL?ž<KL?g&<[29D0.?2L?K&KL?g&29D0.?2L?ew<29D0.?2tU;LM?:C>tULޤ?C>2<\st>2<\s<9^??>L>t>L>t>9^??>Lg> >9р?tI> >< >8L>>?h<<<̿L R>h??h<<< h?̿L R>h?  s`e> Z|'>h) -s`̗e>H>(޾Y|t'>( X|I'>p HB>9&޾^U>YU> HB>9&޾TιA7?H>(޾*>C3?1͹97?͹97?>3?r1q,=ȱN?,=N?ɧ*>C3?1?A:?3J>3?1ke?>@-?+6?7-?+6?7le?6>]N`?;>5ZP`?1>Zle?6>]~?'D;Ű=le?6>]h?I>~?'D;Ű=~?'D;Ű=h?I>f;?[ܾm?h?I>ո> ')?V;?ܾFl?f;?[ܾm?ո> ')? ><:?P>S:?rǸ>S'N)?ѽ$-B?ʸ>'')? ˾)&50&?ѽ$-B?ѽt$0B? ˾)&50&?w~~Z?k˾*&*&? s`e>w~~Z?w~~Z? s`e> aJy\t>྽Y>t >rB~W>Q]H >XnBB}<?t7n~a>O][~b>\O]?B5?7`\~h8?,b0?9?7;BK?=`~8?^0~8?a0;r K?LD~gc?{I꾈; K?G;c?A\D~gc?{ID~gc?{I꾵;c?A\L~/z?A;c?:\P;$j?3=Z~z?UAL~/z?A;+%j?i3=~D[~?9=P;$j?3=;w~]?>[~[~?~=~Z~?/=;+]?s>~;w~]?>j;>?7 ?w~c:m?ʽ>~j;>?7 ?T~H?;?j;>?7 ?p;I?P8?Z~H??^~H?{?:;?M8?~F? P?p;I?P8?;J>Y?~F? P?~F? P?; >եY?%~aD>mq?;J>Y?c;=\i?%~aD>mq?%~aD>mq?;±=t\i?+^~*C=r6?c;=\i?;C14*f?+^~*C=r6?+^~*C=r6?;թ19+f?~pRx?;C14*f?9;־ PP?~pRx?~pRx?';P־TP?~WQ]?9;־ PP?[;!)?n~aO]?[~b\O]?[;!)?`\~h8,b0?[;!)?;BK=>`~8^0?~8a0?;r KL>D~gc{I>; KG>;cA\>D~gc{I>D~gc{I>;cA\>L~/zA>;c:\>P;$j3Z~zUA>L~/zA>;+%ji3~D[~9P;$j3;w~][~[~~~Z~/;+]s~7 w~c:mʽ~7 T~H;j;>7 p;IP8Z~H^~H{:;M8~F Pp;IP8;JY~F P~F P; եY%~aDmq;JYc;\i%~aDmq%~aDmq;±t\iH?c;\i;C1>4*fH?H?;թ1>9+f྽Y>t;C1>4*fH >XnB$߾m>t`CO?aXVik>2'~dUF=`CO?aXq2> Bq#iv><2F-: Bq`CO?aX"G->: Bq=-,7?Y1>{!,F-:#u֭{!,"-Z#? k>2#uP᥽=-,7?Y1>B'-R#?1v>y|B>f=#u֭F*?)3?y|B>f=#-U#?ty>E_*? 3?!?Pܾ$y|B>f=@Hn*?83?!?Pܾ$JCp?FǽI!?Pܾ$4k? &Ap?ǽ`BAp?Dǽ4k? &Op,?94k? &Da?I5 p,?FvY9p,?FvY9a?IW,?=ҳ<a?IWSU?ާ=l ,?ŏ={<,?ŏ={R\0SU?ާ=l p+?>]0+?>]0p+?>Q>͵p7Z? :>o+?>Q>͵+?[> Z?,>p_'?40>5Z?.>1xnr8E>_'?40>)4;z>krPE>".^'?30>)4;z>oUY 2>EmrRE>䡃@)?t=oUY 2>)4;z>i)?L =A8k ʾ*˻oUY 2>L(Zy;5A8k ʾ*˻@)?t=iI(c|;r5*Sb3徂fA8k ʾ*˻*e''y*Sb3徂fiI(c|;r5c'G' cž{*Sb3徂f+$*) cž{c'G'+$*)d?s(>> cž{\+*d?s(>>}S5?ӬKc-d?Cq(>>Qp^>.>iT5?Kd-v,$@-pR>.>}S5?ӬKc-v,$@`QzgV">Qp>,>&-.? 1D5`QzgV">+$c_@PzwV >??}?͡=>..?Dr5..?Dr5??}?͡=>?!?H_8???}?͡=>)>͝>}Z?!?H_8??!?H_8?*>Ƚ>Z3sv\A-?3u]\7-?HgvLHi@>)>͝>}Z^#?98HgvLHi@>3u]\7-?^#?98'~dUF=HgvLHi@>`CO?aX'~dUF=^#?98?<>oA"?><<??1G$"?><<_?x?U???$??E$?Lm?C^??"*?'?Lm?C^Q?nL*?ھ?'*?xQ?)*?nY?ʺ*?پ?gE?&ψs?*?$پ?BOB?Ad?kE?G?jmE?yΈ?mB?b?P?h ?nB?bƐ?J?~?ޯP?~?ޯP?Ɛ?J??2K?D>Ɛ?J??BOB?Ad>v?3K?D>?3 K?.D>?mB?b>?74?>?jB?b>Q?nL*?>&? 4?>&? 4?>Y?ʺ*?>?;?:%?Q?K*?>_?x?U??5?+??5?+??Lm?C^??>29??/k?_b?"?><9?;?Е>9?"?><!M?"?><G#M?-?sP>G#M??G=L?p?PO??G=L??뽘L?%?لO?%?لO??뽘L??"?LmC^??*>?'*x> ?!$*|>K?1+>?gE&ψ>?+>?UMY>?kEG>?}jEr̈>?UMY>1?sP =?UMY>d?Y'~?ޯP=~?ޯP=d?Y'?2KDd?Y'?%N׎?3 K.D?3 K.D?%N׎?4о?O'Nhˎ$?U$Ծ&? 4о&? 4о$? $־?;:%$?G $־j?#t X?5+?5+`?Ak[?29l?f^"?<<?9?9"?<<?!M"?<<?뽘L$?3M%M$?3M%M?GL]?pM=WO?GL?=L?=O?=O?=L?"><<@?0>A9:>&sA.>?N}B} Ji<=&sA.>b!9S&s{>už<9n>>>&s{>u93.?ž<%~aD>mq?>gH>nH?b~K??]P?>C>mqH?d>LJ4?B,?~F? P?~F? P?d>LJ4?B,?N~mH?J?d>.4?H<,?r[>N6^?=T>T~H?;?T~H?;?r[>N6^?=T>w~c:m?ʽ>'[>@9^?jC> p?>=w~c:m?ʽ>w~c:m?ʽ> p?>=~Z~?/=cp?鹩>݂=c?,P>.1~Z~?/=~Z~?/=c?nP>Z1~ez?Ac?O>+2{d?m>k+L~/z?AL~/z?Azd?l>+D~gc?{I(}d?a>Ն+_o?>>`D~gc?{ID~gc?{I_o?>&Y`~8?1[0Hao?갎>2@`c?J>b,~8?a0~8?a0#c?=>-n~a>O]#c?=>-)A?RN<>lF n~a>O]n~a>O]IA?8<>IJ ྽Y>t྽Y>tA?5<>.G H?A?5<>.G t>xH?t>x >=e~l?1H? >=e~l%~aDmq(w>eXl93?}նei%~aDmq%~aDmq 3? ʶjb~K?]P 3? ʶjd>LJ4B,~F P~F Pd>LJ4B,N~mHJd>.4H<,r[>N6^=TT~H;T~H;r[>N6^=Tw~c:mʽ'[>@9^jC->6f 1w~c:mʽw~c:mʽ>;f1~Z~/>;f1;^'?@d֒=~Z~/~Z~/;^'?@d֒=~ezA>;^'?@d֒=!~?R罅!9=L~/zA>L~/zA>~?Lj罱9=D~gc{I>!~?R罅!9=T?8qᾌ>D~gc{I>D~gc{I>T?9o'>~81[0?-T?d)>~F?*?~8a0?~8a0?~F?*?n~aO]?F?ј0?;?d%?n~aO]?n~aO]?;?d%?~̼pPx?;?d%?6? 2?~pRx?~pRx?6?)8 =2?~;bC=Z6?6?)8 =2?h?\=>~C= 6?~C= 6?h?\=>%~aD>mq?%~aD>mq?h?\=>>C>mqH?dJ-;7)a+*j뤾f''>@5R*(kh!)JP(1v;5B5S*Rkf''>Q( w;h5-w\*'@5R*(k)?=$-\|'Q( w;h5Y#)? =fX{Q>$-\|')Y4z>fX{Q>Y#)? =)Y4z>$)xn>fX{Q>_'?40>z$M)y>)74iz>_'?40>?oA>Oz$M)y>Hc'?10R>?oA>O+?>Q>͵?oA>OI%>-+?>Q>͵6+?_>^K%>-+?>R\0G%>k-$\>A+?z>LY0+?^ >Z0$\>Ax,?=<$\>AI"D),?;Ï==<),?;Ï==<"tRbDt,?s%9"tRbD!E8p,?FvY9q,?\9! G8BAp?Dǽ!E8i>8l>BAp?Dǽ9~*? 3?i>sy>BAp?Dǽ<*?e3?w$?6>i>8l>*-N#?Dy>w$?6>9~*? 3?B'-R#?1v>w>?]>w$?6>B-G*7?t1>!y>? >B'-R#?1v>B-G*7?t1>|bL?"=t>?I>Q<bj?;?U.0Y>?+>?LmC^?=(>u-@"#??+>b$(>D.@#?#<\Y?6?s+>?s+>#<\Y?6*ZS<\dj?|;j?|뫾9w? U??LmC^?#>? ZU?==z'j@?`?Ak[?`?Ak[?q=Mz'i@?b$(>D.@#?<?뽁L?>s?"?< ԋs?=Ӿ`g?A?6< WU??=L?R>(}??GL?R>(}?I=-a|?˹?L?˹?L?M=5`|?>s?j?|>9 >ԋs??=L?>>s?M=5>`|?<?=L?<?=L?I=->a|?R>(}??Lm?C^?>w? ?U?"?><< ?WU?=>`g?j?|>99`g?> >ԋs?s?*?$>.=Hu?Lm?C^?7=Hq=Mz'?i@??Lm?C^??Lm?C^?q=Mz'?i@?S>D ?kU??jB?b>=~iξY?ʺ*?>=~iξK !YQs?*?$>?y*?ڍ>\ RYT7=HƐ?J?U=|z ?mB?b> =|9 Kvّў?gB?b>ў?gB?b>EB Iv =4~i&ξ?kB?/b=2|0 >Ɛ?J? =|9 >LB ?IJ??IJ?LB  =| Y?ʺ*?پ=~i>?jB?b =4~i&>EB Iv>ў?gB?b?fuB?հa Kvّ> =|9 >?Lm?C^.=Hu?Y?ʺ*?پ7=H?\ RYT?s?*?$پs?*?$پK !YQ?=~i>"?><<>w? ?U?Lm?C^#>? ?ZUq=Mz'?i@?Lm?C^?Lm?C^q=Mz'?i@7=H??=L>>s"?><<> >ԋs=>`gj?|>96<=>`gR>< ?WU?뽘LR>(}?G=LR>(}I=->a|˹?=L<?=LM=5>`|>>s"?<<>s?뽘L>sM=5`|<?뽁L<?뽁LI=-a|R>(}?LmC^>w? U"?<< WU=Ӿ`gj?|뫾9 ԋsWS?UMY>7x=R^z dL>ȴc0D=?UMY>?U.0Y>ȴc0D=d?Y'C=7<̰x)qd?Y'y?Yt'7<̰x)q?%N׎= $$?$־$?G $־uA>=A$`?Ak[-A>= $q=Mz'i@l?f^`?Ak[fn=w'sl@S>D kUO?A&Oz?U/<[>;^8?e$9<~?j"9=?]<<[>5^ROz?U/<>fި1Oz?UR^<~? b=->6f 1>fި1~? b=W'?M@ܡ=~? b= ? V4M={Z'?@ؒ=AW'?@֒= ? V4M=~?j"9= ? V4M=e~?)5"R=?$9R=pJ~?R=Y(?e$9<?e$9=pJ~?R=Y(u|? >&+ý/)?w>=/)?w>=u|? >&+ý?j<)K~?j"9=R{?`0 ~?Խ&a<&?ҷ|g8; 3?նGpe}?:g 3?նGp>ele}?:gO?A&[>5^R徛j?dn'[>@9^jC徝d>4A,j?dnj?dnd>.4H<,{?zbFd>4d?, 3?նGp{?zbF{?zbF3?ض=R{?`0 ~?j"9=?^匼,Ǽ~?j"9=?e$9<?^匼,Ǽ?^匼,Ǽ?e$9c?\u?Y>ݧ=~?P=ơ ^i?p>yo.A?5<>FN \i?ɍ>ous?W>F.A?5<>FN DA?N<>M As?t>t>w8xAs?t>3l?| ľt>w8xt>x3l?| ľ>Wyel3l?| ľv [?_ؾ >=e~lڅ>e0l[?k1ؾe}?:gl~?Խ`$?S]Wk:&cv?j< p>~?9V=Y=$?S]Wk:~?9V=Y=?A$=4<$?S]Wk:$?S]Wk:?A$=4< p?>=?A$=4<?= p?>=? .1u?퍆>=z~?=q c?\M c?\M c?1>.c?\.bo?Ӥ>A`c?\A`? A`(}d?a>Ն+?Ն+c?,P>.1?EX|g?\\:!~?R罅!9=!~?R罅!9=?\\:-T?d)>-T?d)>?\\:-|F?㧻?-|F?㧻??\\:;?d%?;?d%??\\:6?78 2?6?78 2??\\:h?:^=>?\\:?EX!aeeh?$=S>eh?$=S>?EX!ae$?S]Wk:$?S]Wk:?EX|g!~?R罅!9=Fv?~]> p?>=Oz?U>R^ p?>=[>5^?R>Oz?U>/$?S]Wk:{?)=h?:^=>W{?]=~?1"d=h?:^=>eh?$=S>~?1"d=>C>mqH?~?1"d={?z>R>lH?>R>lH?{?zd>4?d?,?{?zj?dn>>ld>'4?L;,?d>4?A,?j?dn>>'[>@9^?jC>j?dn>>O?A?&>[>5^?R>[>;^?8>O?A?&>Oz?U>/Fv?~]>Zv?=&}v p?>=Zv?=&}vv될N` p?>=p?L>=/vŠ`$?S]Wk:v될N`>z%?Ik:?Ik:r~Ct%~|PZcҾ:5 *fk|7#C;?,I)˻=5*#k-w\*'|7#C;Ifv u=5*#k?,I)˻gv u($)>5*Okjisf]`(`$)gv u(jisf]`(`f#L")ڻPn-㏢f#jsqD`9*`Pn-㏢R[@f#Yg6־R[@Pn-㏢YgkC־OONR[@9;ZLQ=1ųNYg6־9;ZLQ=1 K׾B,?OON? >k K׾B,?9;ZLQ=1  Z׾=,??M7?? >G? >G?M7?<? 1?˾^=Yq F?Z;A ?]>^L?!=N?ˢ?w>w>?]>H!=AWAw$?6>w>?]>$1i?>?T>%u%?2>RN??g>$1i?>?T>iĴ>Im> q}%?t6>go?~>D>i>j>2i?>XU>o?>>§!댓H8iĴ>Im>!t?§!댓H8o?>>t?"TD§!댓H8Kv?jS$>"TDM"t?v?S]Ä>$~>A"tRbD%x?MYT>$~>AKv?jS$>wx?CT>D%>-$ԓ>AY,z?d>D%>-wx?CT>c+z?ʹ>@o9A>OP'F% >->.{?+|.(=@o9A>OPY,z?d>W/{?b.X)=$)|>@o9A>OP|7#C;$)|>>.{?+|.(=|7#C;fX{Q>$)|>-w\*'fX{Q>|7#C;x B>:=$@N=-d(jT<.a?,~>YcL=KdBB7M=ģd侩MmVA=A$ <.?;?q=Mz'i@'D kU?r Q?<ӈ>nJc?>< UR>< WUaKc?=Ӿ`g<(>Gc?I6x>M4q?=Ӿ`gk=6ӾqgJl>]6q?>sI6x>M4q?̼z?> ԋs> ԋsιPz?M=5`|̼z?x=c?I=-a|I=-a|XJY=`d?R>pѸ(}J=c?Q(}R>p8(}<ዽa|Qa|M=5>`|lJcPz?>( >s>KJP͢z?` >ԋs>>`sP_gP_`g=>`gw뾴Gc?R>< ?WUäkKc?<J Q?>< ?U!>Q8 ?EU<J Q?q=Mz'?i@K<:n#Q?{%?].k;?ť=y'?/i@q=Mz'?i@# *d.we;?=ьHW?=ьHW a].k;n= ~'?bf@?R4"V].k;PI<Y Qq=Mz'?i@?q=Mz'?i@?<%QS>D ?kU?<J QLňaJc>< ?U?R>< ?WU?äkKc=>`g?w뾴GcP_`g?k=6>qg?`@>vs?P_( >s?>( >s?MGjEPzM=6O>_|?lJcPzQa|?I=->a|?Qp8(}?<ዽ(}?R>pѸ(}?J=caJ=|b|?XJY=`d zI=-a|?I=-a|?̼z>( s? zJl>]6q>( s?>`s?I6x>M4q=Ӿg?Ax>\4q<y>rNc=Ӿ`g?=Ӿ`g?w<>GcR>< WU?aKc?r Q>< U?!>Q8 EU? _?~ Q==z'j@?`aU?#Q <.?; ={'nj@?X:=pw'l@? <.?;=(>u-@"#?T4"0>\tU?? d<594-?O?G=? <;?1g?]ͮ>;?1g?]ͮ>?A$=4<"y>>/~C?ȹ?A$==C>{C?U~?*U=\Y=bv?8A<]s>jt>>C?jt>>C?bv?8A<]s>@?{`O?bv?o?kL=<@?{`O?p@?گO??_3<B? t*??mN,~?[=;~?Խ#A?tQ=F>+~?ԽE]<@?`O{;~?Խ0g;?]ͮ>0gF?&.2sU?úF?&.\tU?U_> aؾ?2VgA?I<??<?\\:?EX|gF?:<?\\:<_>8aؾ?\^9?YggU_> aؾ?w󰻪$9<p{eM?>~?r < =Kp{w?>t8=ɐ=~?r < =~?r < =P>1<=*|?*=Jc>8W=ɐ=/,s< nN<*|?*=Jc>i*|?=Z}>z= sݧ=u?>)=Lp=蛀<%~?P=Z˃{=;Џ~=6~?=~?P=ơ Џ~=6i?v>oЏ~=6^ir>/^i?p>yo^i?p>yo^ir>/us?W>F^ir>/ya<'c$s?>Ҧs?s>ڣyA3< c2l? Fľ yb<:c:{cz270l?~ sľ70l?~ sľ:{cz2v [?_ؾ:{cz2o? O* [?9moؾv [?_ؾoK) O±}?sf*oKNN~_e}?:ge}?:g~׸ ?]O|8;@~Ǡ J2^|<?CqIp<0?ܷ|;/;G=J2^|<;m `=1/?gg=(?ȇw>=q>>=?e$9<}mG `=Kp{w?>?bQlB<9?޾L=dw6f~?#<=e~?)5"?]<<_y?=Q>=tv>->?l->t?'ԇ>M=Mtv>Dw->]y"f>e֣R=t?'ԇ>M=]yf>&+ýq~?e=#>zh=N3u|? >&+ýu|? >&+ýzh=N3?j<)Kz=O3z"G< N?c<@TN?j/Oz?U>R^~=Vv?]>'~I=V;Vw*>נRPv?~]>Zv?]>XwC>Rv?m=ؕvXwC>RW;v?3=#vv?3=#v\H!=AWA<^=Ѹ?Z4=֣;-L ?>@?>_`?>A>=$>nNb??r Q?J ?M>@??r Q?<.?;?J ?M>@?J ?M>@?<.?;?A>=$Qc&K>#dt?I6x>M4q?Z>Qb?I6x>M4q?L<ň>aJc?>nNb?>nNb?w<>Gc?L?#Q?b/y?Q=Pd?ARc K>`et?x=c? z?Qc&K>#dt?Qc&K>#dt?̼z?Jl>]6q?n='p?JPz?bcy?>KJP͢z?<ዽy[M?LňaJc?n=+p?äkKc?P_B?R4"V].k;?<>y[M?R4"V].k;?<J Q?<>y[M?<>y[M?<J Q?w뾴Gc?S{=i>K !YQ?&B>B?K !YQ?7=H?&B>B?&B>B?7=H?R4"V].k;? \wQ > Iv>S{=i>EB Iv> =4~i&>S{=i>S{=i> =4~i&>K !YQ?D@1y2q LB \wI7 >LB  =|9 > \wQ > \wQ > =| >>C Kv⑋>wzYcDǾ IvD@1y2q >C Kv⑋ =| D@1y2q &1yq =|9 LB gY~8@K !YQ uzuWcOǾK !YQ=~iξg\zXcPǾwzYcDǾ =4~i&ξ IvxQ=Pd_gr)}Q=PdQbcI6x>M4q,\N>BxJl>]6q̼z,\N>Bx7N>x zQ=Pd ? >[>?r Q #=Z\>%cL?#Qw<>Gc #=Z\>%c #=Z\>%cL<ň>aJcI6x>M4qz ?>R^>b$(>D.@#?/$p?b$(>D.@#?<.?;z ?>R^> ? >[><.?;?r Q-A>= $Y<^>`?>YmVAN>`?O->^>`?>mVAJY>s?^>CSA< Rs?>m<?>l<=KY>s?^>KY>s?^>Tml<== G4@#?P`?1>Zz~?D;|=f49:>fS5[.>z~?D;|=Db=FR~?X;ΰ=f;?[ܾm?Drb=RDrb=Rf;?[ܾm?'~S>ʾV;?ܾFl? ><:?yS >˾yS >˾P>S:?޾:#?"P>S:?ѽ$-B?ݾB#? "ݾB#? "ѽ$-B?=25?3ѽ$-B?w~~Z?B=15?L3B=15?L3qa???#x^F?ϖaJ\s>M?x?oM?x?oav\e>f?>av\e>Y|t'>( f?>J蛾f?>J蛾Y|t'>( eG?xPFa=Y|ƈ'> ^U>eG?xPFa= G?-P?a=^U>|S?˾>YU> TιA7?yS?˾ >yS?˾ >ʹm7?-< >h"#?͹97?s,=N?< >h"#?>ɝ"b#?q,=ȱN?✽4N4?q,=ȱN?-?+6?7✽4N4?9I4N4?2?5?)|so_?-?+6?7N`?;>5Z- m_?0sX?N`?;>5ZfC<>?y@?>;?1g?]ͮ>?>-?;?tk?ʮ>S>C>{C?F?!>-?F?!>-?S>C>{C?1?=mS?T>K>ĀC?@?{`O??#='mS??#='mS?@?{`O??y@?@?{`O???*??y@??y@???*??->??*???O=ַ>F?-!>F?-!>>? N=fï>2?mS=??O=ַ>@?`O{?'mS#=?'mS#=@?`O{?y@@?`O{??*?y@?y@??*?-??*??ַO=F?!-F?!-??ַO=1?mS??ַO=@?{=`O?#'mS?#'mS@?{=`O?>y@@?{=`O;?]ͮ>0g?>y@?>y@;?خ>e?-?;?ʮ>skg>@U?FF?-?!F?-?!0>\tU?2?mS?n>oU?U-?xO?G=?'mS?#?'mS?#{-?O?|=?y@?>{-?O?|=;?e?خ>?y@?>iz=vRl~=:VpM s[r~{=A9;+cDb>MBɥ2?[r~{=A9;[r~{=A9;MBɥ2?Џ~=6MBɥ2?oD6>K?Џ~=6W}/i pM9}pG$=pMw%}1D=9}pG$=9}pG$=w%}1D=?|[ =w%}1D=PQod?>y@|N\ R=khU>K>M8= 1?;m `=o?N:{cz2%>|8?%>|8?:{cz2Ҿ3=[3i?:{cz2y,4<cҾ3=[3i?Ҿ3=[3i?y,4<coD6>K?y,4<c`i.q>0KE5=K?oD6>K?^ir>/Џ~=6;m `=/M_=0?0p{͈b?>pM'~I=V;VOuIJiBl~=:V.y]>LN|Y?PQod?>0p{͈b?>0p{͈b?>PQod?>8W=ɐ=PQod?>w%}1D=8W=ɐ=8W=ɐ=w%}1D= s s+cDb>w >RpMW;pMW}iݵW;W;W}/i ;"y=ƽ?UW}/i dU;L!yqƽU!yqƽUdI;Lu2j9$dI;LNؾҾu2j9$u1j©$NؾҾkJb l>>AG2?A" ?±ѯ?%wCm>~&n<\*7>E4Ľ~&nE4Ľ\*7>E4ĽHX=Z(5o=48s0?Y=HX=Z(5o='~IV;V=8'0? =8'0? =l~罸:V=OuIJ?iB>l~罸:V=.y]OuIJ?iB>:tJ?3N>.y]YL2?* ?.y];}KȾAG2?A" ?YL2?* ?;}KȾ±ѯ?to26 O%>|8?@~Ǡ %>|8? b^>>@~Ǡ @~Ǡ b^>>J2^|< b^>>±ѯ?J2^|J*{$5>)NؾҾLxshkJLxshu{xxg=fkokJkJu{xxg=fkoW7 }'Ž&AG2A" @| = N>@| = N>I2 ;}?K>AG2A" .y]><;}?K>LxshzR)Kiz=v;m `=;m `=3q~'=>khU>K>3q~'=>^y!f><khU>K>khU>K>^y!f>G >^y!f>Dw->jPS>>iPd>G >Mtv>Dw->K=3'?>Mtv>Dw->`yJ=#Q>K=3'?>K=3'?>_y?=Q>*{$5>)_y?=Q>~&n<*{$5>)*{$5>)~&n<{=!~&n<%wCm>+{Ǻ=!{=!$w0Cm>Gi?6?.?? ?]_?,I)˻2IP8B;??! ?_ ?.V?N&?,I)˻W/{?b.X)=?? ?_|7#C;W/{?b.X)= ?Q&"?Fl羁?? ?]_Y,z?d> ?%"? ^W/{?b.X)=Y,z?d>7!?>l ?%"? ^wx?CT>!?r>fc+z?ʹ>%x?MYT> G!?B>ԟ8!?r>fv?S]Ä> G!?B>ԟ8%x?MYT>v?S]Ä>C!?=E G!?B>ԟ8!t?C!?=Ev?S]Ä>!t?"? mzB!?=Ego?~>D>"? mzB!t?go?~>D>Ė"?tF/U"?B$1i?>?T>c"?9fW/go?~>D>$1i?>?T>,#?21б"?q/RN??g>,#?21б$1i?>?T>RN??g>G#? >*ľ,#?21б?}<<}#?A*lľRN??g>?}<<_$?7_>8G#? >*ľ?_$?7_>8?}<<?D%?B =_$?7_>8?<=ĻD%?B =??<=Ļ?H ?^D%?B =DG? >G))?؎`2?"R m~M?9ZP=4*)?~̎b2?? >G9;ZLQ=1B*?ћN>?`()?䎾_2?YgkC־C*?gmN>?m9ZPQ=3YgkC־e+?>:?C*?gmN>?Pn-㏢e+?>:?YgkC־Zn_-M,?z'>(?wd+?T>:?js^``4,?c*>*(?Pn-㏢jisf]`(`-?ܣ??,?5>(?evw$u\-??" ?jisf]`(`Ifv u /?ǩ!? > -??x??,I)˻ /?ǩ!? >gv u(?,I)˻c?R?K> /?ǩ!? > ?dV?M&_?R?iK>?,I)˻wzYcDǾ&1yq ~Fz!?c<&1yq \wQ >~Fz!?c<~Fz!?c< \wQ >1p?h \wQ >G=Yi><&p?~h 0?V ?G=Yi>1p?h>0?VQ ?l&B>B?G=Yi>N0?>&B>B?>0?VQ ?l20?a> <>cM?&B>B?v0?>$+<>=gM?20?a> s0?>$n='p?+<>=gM?ԇ.;>Yrn='p?>u0?Q>$I2o='%p?~b^22y?UՇ;>ZrUՇ;>Zrbfy?/F9bfy?oc*K>*bt?/F9/F9.kcy K>ct?W/1-Vc+K>ct?>nNb?fV//-fV//- }>Rb?>A>>ˋAJ ?M>@? }>Rb?O<.?WپJ ?M>@?>4وAO<.?Wپ>_`?>J ?M>@?-?1bv>`?+>O<.?Wپ-?1bvJY>s?^>>_`?>i,?b<-KY>s?^>-?1bv,?s?^>%ڧA :=V?.,?@a>;/p?&)?H *?z ?>R^>Q*?",?))?H *?$o#=Hl>Pc ? >\>W"(>`?w?Eo#=BR> !cU)?p=*?#=a>c7N>x%(>~?w?Rf>=.|?,\N>BxW"(>`?w?N>԰x|y <(}f>&P=ʓ|?=p<>q~l?_)}f>&P=ʓ|?|y <(}I[qƩn=p<>q~l?slD?éq~l?I[qƩn`I"J^~5@ \d]~;@zzVc-TǾ4 w^' <] uzuWcOǾ~Fz!?m5<iSV0?#'mSi=о?#'mS?>2@i=оi=о?>2@iZp>,R?>2@ ?-?riZp>,RiZp>,R ?-?ri>SV0?-?,?'mS?# i><0i>SV0?'mS?#i>=?'mS?#?1@?>i>=i>=K ?p@?>i,R>Zp>?1@?> ?r>-?i,R>Zp>i,R>Zp> ?r>-?iSV0>>F?!>-??#='mS?iSV0>>iSV0>>?#='mS?i>?#='mS??2@?i>i>?2@?iZp,R>?2@? ?-r>iZp,R>iZp,R> ?-r>iSV0>?-,>?'mS#= i<0>iSV0>?'mS#=iо?'mS#=?1@iоiоK ?p@i,RZp?1@ ?r-i,RZpi,RZp ?r-iSV0F?!-?#'mSiSV0kG>jF!4r&FBhx׾`i;l+{x?h= ko{/=p!Ӡ4m>i+Ӡ4m>i++{Ǻ=!VUFܻ>7+{Ǻ=!i?6?.VUFܻ>7VUFܻ>7i?6?.$0H?S!6?w.m#w[m>$0H?S$0H?Sm#w[m>"dd?ƶ.$w\m>%\*7>E4Ľmfd?5mfd?5\6>7hĽx(~?\*7>E4Ľ80?Y=x(~?x(~?L8u0?=3 <=z?j:A>L8u0?=zJ?@@>3 <=z?j:A>3 <=z?j:A>OuIJ?iB>9X?'}>OuIJ?iB>YL2?* ?9X?'}>9X?'}>sJ2? ?Gl826?-?O2? ?vbj>H>Gl826?-?Gl826?-?vbj>H>@Dn> ? b^>>%>H8?@Dn> ?@Dn> ?%P>n8?4*>Q0?%>|8?1Ҿ2=y4i?,4*>N0?,4*>N0?1Ҿ2=y4i?`i;h#>1Ҿ2=y4i?KE5=K?` C#>`i;h#>oD6>K?QZC:XV?oD6>K? CUƥe?^]CXR?^]CXR? CUƥe?%Mp> CUƥe?+cDb>%Mp>%Mp>Pb>Cm>$jĢ>;bIP`>|zk}98>#jâ>#jâ>bxk78>MQ2 [>xyk色8>w%}1D=HQ [>IQ}Z>w%}1D=b^3=w ~V0D=pMb^3=b^3=pMFdpzJ@@xF=gFdOuIJiBmKQ1)OuIJiBYL2* ?IQN,GQl68sJ2 $jÕ.玾O2 +&#jϕ掾#jϕ掾x&0*Tt32(f"&MGq!0*Tt32()T%4MGq!kG>jF!4r&MGq!FBhx׾kG>jF!4r&=o7d ;LV}߂Q k^Ə>ՉXepٌ>Mr{ =+Hkqҏ>ԉfq9?KedpU>fq9?KLX\Y?IedpU>edpU>LX0Y?XJ*{$5>)F{85>%XLX0Y?XJn=F'?.>LX\Y?IgI?%Q>='?ܢ>n=F'?.>gI?%Q>nP1> >2Y>>kfU>V>iK>>kfU>V>nP1> >iK?>}>jPS>>gI?%Q>iK?>}>?Y>М>7<{)>ũ'?kfU>V>khU>K>j<)>'?Mx=,?*5r?wOo c?>LY?j<)>'?1+*t5r?Mx=,?JM=|,?1+*t5r?LN|Y?1+*t5r?q1Qd>wOo c?>qa1W>eN->QNoW|?D>QNoW|?D>OfN@V;>y@|N\ R=?|[ =OfN@V;>9}pG$=cNo!9>HaK>9}pG$=gIa{龅>J172٬9}pG$=9}J%=J172٬W}/i W}/i J172٬=o d;DL=oNؾҾ=otRh8*N ؾҾNؾҾqR@R= Lx9PshoR-G㾔U5LD Lx9PshU L.EzSLxsh Lx9PshS]zR)K!!zI(K<}LzL<|L<-y>!OW[<OW[<!!\q{ =!!k^Ə>Չr{=F,?l8%?B~=.-?1Ev5$?\>8,?8}B.?پG#? >*ľ-?1^v}B.?پ/#?$3K%#?@;*ľ>F6A,#?21б}B.?پ>F6A>"?hi߳/,#?21б\/L)->"?hi߳/D>TA\/L)-"?mB'"?tf//QC9i"?/ӈB[/#~.-/QC9e!?D=Ei"?/ӈB$ɇ;>r\re!?D=E/QC9ȇ70;>P[rM!?>8e!?D=Ev0?>$M!?>8ȇ70;>P[rv0?>$!?f>͋M!?>8A0?s>!?~>v0?>$u0?>  ?%"? ^羸!?~>0?N ?& ?%"? ^0?J>0?N ?&?? ?_ ?%"? ^t%Ep?[h?? ?_0?N ?&<&p?~h ?.V?N&?? ?_~Fz!?c< ?.V?N&<&p?~h~Fz!?c ?.V?N&! 6Zc?R?K>~Fz!?m5<' <]"/?I!?պ>ed?R?uK>)O";!?> /?ǩ!? >' 4W)O";!?>k-?_? ? /?ǩ!? >MdH?t`E?sD(?-?? ?=;>}l?ǝ,?f'>D(?`E?sl?k+?>|:?ǝ,?f'>D(?f>&P=ʓ|?k+?>|:?v=0>l?f>&P=ʓ|?NF*?mjK>?k+?>|:?W"(>`?w?E*?&K>?f>&P=ʓ|?%(>~?w?|.)?ʎ_2?E*?&K>?)?u:*?,)?!ێy]2?%(>~?w?)?u:*?V #l{M?L0)?؎vZ2?Q*?",?)V #l{M?)?F)*?Y nyM?#'?X*?L,?0X*?L,?0>&'?r!+N$?SN>&'?r?:?`k#+$?Ck#+$?C?:?`% A=%֡A:&%?B5=?:?`iZp>,R\6Z>[i=о\6Z>\{R8=?i=оi=о\{R8=? i<0\{R8=?E\f >>iSV0iSV0E\f >>i,RZpE\f >>\>6Z>i,RZpi,RZp\>6Z>iо\>6Z>\?{R8iоiо\?{R8 i<0>\?{R8E\>f iSV0>iSV0>E\>f iZp,R>E\>f \6Z>뾞iZp,R>iZp,R>\6Z>>\6Z>\{R8i>i>\{R8 i<0>>\{R8E\f ԾiSV0>>iSV0>>E\f Ծi,R>Zp>E\f Ծ\뾛6Zi,R>Zp>i,R>Zp>\뾛6Zi>=\뾛6Z\{R8=i>=i>=\{R8= i><0\{R8=E\Ծf >i>SV0i>SV0E\Ծf >iZp>,RE\Ծf >\6Z>iZp>,RӁAN>/?֐o>+n? n{?*>D;0L>f'>Mp?Mr}{2Gl826?-?Dy>ϣ ?N~`!X?g{>WHܾTpM7>>Mp?8;L>@'E>;l%`?JN,vB>Õ6TD}?85,vB>Õ6$jĢ>C}?rixF=g n{?*>b.뾵h3= {?4>3D}?b.뾵h3=b^3=C}?riIQ}Z>TD}?85$jĢ>IQ}Z>TpM7>!R*^?X?g{>+^? |+X?g{>?X?ڊ> |Iힽ3 <=z?j:A>A |d!(6 #{++ ?z?!A>E6 {x(~?(6 #{+~Z~{=x(~?ևD)~?U Z}{U=čed?깶`i; ?1EEþ)K-`_>Dy>ϣ ?yXd*QZaŏo2/Y?aX!)rֽϾRоpyQ Z}{U=7mz.=čed?깶7mz.= /hX1čed?깶mfd?5/X 1 kZ#X? /hX1oN(A_2L RZ$X? kZ#X?QGaIԾ'a?čed?깶QGaIԾ'a?g{"T ?čed?깶čed?깶gT?/1H?gT?ұRxG>2H?J2H?CŰRߓG>RFMڻ>u"`[<5p4Џm>Op+ܽuR~?p4Џm>Op+PF>^ܽGgR~?ܽuR~?PF>(MLT>xF=g?IQN, {?4>GQl68$jÕ.玾 n{?*> n{?*>$jÕ.玾LAZ>?$jÕ.玾0*Tt32(ӁAN>/?ӁAN>/?0*Tt32(uiݏm<?+T^')}D>|I!_u&uiݏm<?uiݏm<?QA>F!'y&`i; ??1n:1>@Dn> ?QZaŏo?1n:1>?1n:1>/OZÏ!zᾢXIMk> ?/OZÏ!z3Eb:þXIMk> ?@Dn> ?(4+>S0?yXd*4*>>U0?"`=[>vXP0yXd*`i;h#>qd<`i;h#>BYCEXU?qd<<BYCEXU?,vB>Õ6BYCEXU?MܱX>,B>6,vB>Õ6MܱX>$jĢ>^!|WHܾF5: =4< 37 lPX?>Gl826?-?kPa lPGl826?-?ybX})սGl826?-?N~`!aX!)rֽdX`$RֽN~`!ϾaоuQ| 4=+ľ6:?褾 '#F褾 '#F+ľ6:?ұRxG>+ľ6:?F>ұRxG>ŰRߓG>*F*ƍ>RFMڻ>F>Mr}{2RFMڻ>xSF>Mr}{2vJLhT>Mr}{2>d?(MLT>KX=vsl>2/Y? ϾVоEwQ RZ$X?oN(A_2L侇4wy>:}>mr:>k^Ə>Չ'Xsr>k^Ə>Չ<ߤy>%!M*Xpr>'Xsr>$!2W 8 ?$!SZ"2W 8 ?2W 8 ?SZ"gl > >pSUMRGʛg >Ƙ>:}>mr:>HZpq h>k^Ə>ՉHZpq h>`?־vMk>k^Ə>Չ:}>mr:>$$w5X>HZpq h>HZpq h>$$w5X>`?־vMk>vWY? g`?־Rk> $s5X[>LX\Y?Iat9?k^Ə>Չ`?־vMk>wW^< ~k^Ə>Չk^Ə>ՉvWX? LX\Y?ILX\Y?IsWC 1XI?CQ>sWC 1y|Y$=gI?%Q>g}I?Q>y|Y$=GwZhN來dMZ*˾y|Y$=vWY? ggI?%Q>GwZheK>>y|Y$=X-bM(˾GwZhX-bM(˾MQ}&ѾϾGwZhGwZhMQ}&ѾϾeK>>MQ}&ѾϾo_">mgKS>$>mgKS>$>o_">羴Y >2>?Y>М>o_">@<)>ͬ'?ʓ~սMjovQ*)Oq1T>6U5Fr?ovQ*)Oq1T>ʓ~սMjovQ*) '?ʓ~սMj<@<)>ͬ'?o_">ʓ~սMj< '?ovQ*)7Y5yr?0i ?=>aN:D>y)P >cNo!9>Oq1T>(P>cNo!9>Vd81پc5>ȶ8T:?pwy-(3@!0jk ?4ac>XQ9de:X&پT:?de:X&پpwy-(3@:?!0jk ?4pwy-(3@Vd81پ!0jk ?4Vd81پOfN@V;>=Z *72٬ac>X8*72٬La>ac>X8ac>X8La>ndN F>N來dM?Z*>6e >γ=ac>X8ac>XQ95e,>ӳ==Z 6e >γ=wA>|=Z UMRGoR-Gʛg >Ƙ>ʛg >Ƙ>oR-GQ9>>oR-Gm=-Q9>>>=* *wqA>g#}Q9>>Qm>>wA>|KobM?d5>wA>|5e,>ӳ=N來dM?Z*>o_">=a=F~aq:1hU>=`=i~(P>Oq1T>M?x?o>g?:S=.5?3>g?Zw:=[ww?CzB=15?L3B=15?L3=[ww?CzA ޾#?"=[ww?Cz[A46^?A ޾#?"޾b#?ɝ"fLQ4^?|S>˾fLQ4^?DU!?c=|S>˾yS >˾LD!?=Db=FRD!?og= [M>w>Db=FRDrb=RN[,s> >f6A!->[t>">r6fD0>6Ҏ<1T3?0sX?6Ҏ<1T3?¾Saf?0sX?0sX?¾Saf?c4GK4?¾Saf?'=t]x?c4GK4?Dߜ4K4?cW(=tn]x?A >"#?kX(=t^x?[A>46^?A >"#?>ɝ"b#?K>73^?|S?˾>fL>Q4^?D?c=V!?|S?˾>|S?˾>LD?=!?G?P*`=LD?=!?[?>`>eG?xPFa=eG?xPFa=[?>`>f?>.[?>`>|?7?ѣ2?/-.f?>J蛾7<7?.2?e)<??(97?t2?H-<>g?-y:&?>?}`L\8a{J,<>=\P8\OZ>{J,<>={J,<>=\6Z>{~='\6Z>E\>f Z{*=~{=}\>f}B~=JaE\>f \?P8M}=`Ia}L=`\a?8{>=>J,<\?P8\>OZ>{>=>J,<{>=>J,<\>6Z>{'>~=\>6Z>E\f >>\{~>,={}>=\f>>}Ja=B~=E\f >>\P8=?M}`Ia==}`=L=\8=a?{J,>=>\P8=?\OZ>{J,>=>{J,>=>\6Z>{~׽'>\6Z>E\Ծf >Z{*׽~>{ؽ}>\Ծf>}B~Ja=E\Ծf >\P8=M}`Ia=}L`=\a8={>=J,\P8=\뾡OZ{>=J,{>=J,\뾛6Z{'~׽\뾛6ZE\f Ծ\{~,׽{}ؽ\fԾ}JaB~E\f Ծ\P8M}`Ia!T|-(aYT 0N~`!$I>d*v ?*WFt!M3DXd*];3kx>Ft!M3P?|fUk ?lx>(Gt33 PKB iNF!7.nE1>!T|-G/nrF1>P?|fUk ?!T|-!T|-P?|fUk ?kaUO0ݾ'VP?|fUk ?T LeU-ݾFz?ߜ;E J<g~$I>d*vDU>(vkGt>N3:-PKz&ؾ )%'[kx>Ft!M3kx>Ft!M3&ؾ )%'[T W];(軾yXd*<;ڞ;yXd*<<;ڞ;_>3X?;Ӟ;<ޤc<,`sB>6_>3X?,`sB>6:?T=u,_>3X?_>3X?:?P=<,p>v; `:?T=u,,`sB>6 c;+>mG,B>6zƨ?N@;2> myC}?4y;t?zƨ?Ny;t?}e;>mzƨ?N->0f?oH n{?*>=.?Eػ=.?Eػ n{?*>P" >d}?T<|`#x?z>XY>a?j=>g?Jd}?T< n{?*>d<0K??<;t?t>g?J<?MG?/׽|`#x?z>>_>?^>a?m=w>L>?"On>B>XY>a?j=XY>a?j=&Ok>3>˾j?5=1~? =RmE?1q$!(?".!uq?>p@->0f?GPxy?I&=@->0f?^>a?m=GPxy?I&=\HP(yy?S=^>a?m=@>$r?@=>XY>a?j=d˾rj?hBZ>#r?<>BZ>#r?<>˾j?i[p=L??˾j?RmE?1qy[:L?b?i[p=L??RmE?1q&>(?.?RmE?1q5=1~? =$>!(?".?7<}?9>s?b9u<?h;>g?J<<;t?t{!x??z>|`#x?z><;t?tp<0?n=<;t?tTD}?85p<0?n=p<0?n=TD}?85dr=T?t5+= n{?*>E!>5v?we0=e?tq卤>ͤ:x>S@->0f?w:{>NQ(+}?ɻ @->0f?->0f?oHQ(+}?ɻ n{?*>Q(+}?ɻ ϴH=U?j n{?*> n{?*>ϴH=U?j E!>5v?we^?F*K n{?*> >?ٶQTD}?85ꄽXI?{;0?yC}?4TD}?85{;0?dr=T?t5+=.=~~?:,;?y9>s?b9>s?b,;?y9u<?h;&(?.7<}?5=1~? =7<}?9u<?h;5=1~? =5=1~? =?u<?X;?X?оA=?X?оA=9u<?h;0=e?9u<?h;^?F*K<0=e?0=e?^?F*K< n{?*>H?<? ;ף?B<,;?y,;?yף?B< >?ٶQdr=T?t5+={;0?@>o?<{;0?m<? ;c>o??!o??!*n?;"?bO?iӁAN>/?XJ=::=~?mc>-n?XJ=::=~?;"?bO?֐o>+n?XJ=::=~?|}A]>?^>q? 5A?LAZ>?h6m-p?3A?^>q? 5A?vim<? ;<?^>q? 5A?U?1q< ?XJ=::=~?;<?uiݏm<? ;F?uiݏm<?ܽyR~? ;F?F$>RTf36>[ThzA!9<ܽuR~?vJLhT>;R?vJLhT>>OL> ;F?;R?_>aL!&>c>Lr G?Za& ʾ#G&?>OL>1ed)>>OL>2=?|о)1ed)> 1e)ޓ>2=?|о)[ThzA!9<=?yоKr?z2!hzA!9<[ThzA!9Za& ʾ#G&?S3=?h?>OL>':>' h? .j?>OL>>OL> .j?c>Lr G?-JUՉj?<޽r~?c>K G?kc>'G?R`<޽dr~?-!?F'F?<޽r~?#v?};>&!?&FF?^OL>>d?>vJLhT>>d?>Mp?E>;l%;l%.>.%+E>;l%D;0L>f'.>.%+0+>ď.+E;!L>'QJ?er>: E;!L>'Jr2.WJ?q>ϸ uLr2_ =?mо.WJ?q>ϸ +ľ6:?{6Z?*F*ƍ>{6Z?CMwl3m>Fafō>{6Z?TPľ3:?gC>T ľT8:? |T4=gjhC>gC>| 4=zv 4>ؾ| 4=lߤ 'Fzv 4>ؾzv 4>ؾlߤ 'F<4T4ba?ԾIa?N?gT?N?ýV. ?gT?gT?ýV ?ŰRߓG>ýV. ?<4T4ұRxG>N?IaqԾa?oQT4_>QGaIԾ'a? kZ#X?nQ_>oQT4_> RZ$X?# 2=> kZ#X?v|^s># 2=> RZ$X?hwy>y^>v|^s>4wy>F޾3e\ 4wy>oN(A_2LF޾3e\ ޾e2ْYVNNB__MQ28CgYVNNB__M侕/X1 43CW 43CW/X1)flt/X17mz.=)flt*)lMh&7Ɍz0=콢{ >&7Ɍz0= Z}{U=@콾{ >]a{c >XZ=qBĤ>Pʽ,}XZ=qBĤ>U Z}{U= Z}{U=XZ=qBĤ>콢{ >pnM6 {Pʽ,}(6 #{+ |Iힽʽ-,}⽽ʽ-,}⽓ |Iힽ oo>[-^?6o|oȇ> |+[-^?ȖGu̽>mo}oȇ>[-^?QpT/7>ȖGu̽>ȖGu̽>EYp07> > EWI=WHܾ/õq/*EYp07>/õq/* > EWI=EYp07>WHܾi2q- Ӿ3gʼڽݾH6ܾ^Ӿgڽ/õq/*^!|2\' WHܾ o 2\' wilߍ2\' ^!|uiSލ욾uiSލ욾^!|ACپuf^!| =4S,| ?S,| ?gx:v6m>\ TXӽJ;vC m>ϾTо{Q\T$ӽ\NZS)ӽϾTо{Q1Uˊ[ 1Uˊ[  ϾVоEwQOhcZ0 ϾVоEwQiNF!(aYT 0G/nrF1>\I[\># ?P?|fUk ?]Iyj> ?lQ ?)K-`_>PX3Eb:þX(Gt33Xmr:>ix#(:>Ej>Q9>>ix(:>#>s>XH>Q9>>CfM?,>ix(:>#>ix(:>#>CfM?,>qxi>V=KobM?d5>c>Q9OrxVi>8O=qxi>V=c>Q9W|%>W|%>c>8 Gj>-P>*qxV=ihx#>iA:c>8:?ODj>_e:?8!0jk ?4Dj>_Ej>!0jk ?4ix#>(:ix#>(:!0jk ?4-P>*-P>*붕=T,=^~Orx8O=ViqxV=i붕=T,=^~Պxmt+= =~r_V>i澺x?|tՊxmto_">azڌwKazڌwKo_">gsߟcMcq_>OMQ}&ѾϾsccOQ(ѾϾN來dMZ*˾sccsccN來dMZ*˾qxiVN來dMZ*˾vWX? OrxVi8OqxiVsWC dW|%W|%vWY? gDj_>vWY? g$$w5X>Dj_>Dj_>&$ӵ5L>:}>mr:>_>/>'Xsr>ix#(:>hx#iA:>(X-s >qxVi>%Xs>+W: ?Orx8OVi>qxVi>Wɢ ?Պxm2W 8 ?g >>ՊxmՊxmegA >>s4>H>s4>H>g >>Q9>>wRZk ʓ~սMj<aFaF#v޵QF)ʓ~սMj<aFvQ)wRZk ovQ*)ʓ~սMj<6ZlMܾZe֪w-6Q@M܄deվ{_݄tվ_Vd81پ©wg-`P@D߄&jվ_Vd81پ䮽ܾeVd81پ©wg-`P@ܾe@q>#x?-=wA>|gի=e~?%=wA>|3eǗ>ѳ=@q>#x?-=gի=e~?%=2eF>=@q>#x?-=ի= f~?=wM>L|5e> =bvP?UXpo 3$>DuܾzyM=?jܾzO=?`?־Rk>UXpo 3$>DuܾzyM=? `?־Ok>bvP?`?־vMk>rYp >wtP?0jvyxyYW=BLLxYDFwshHyY#==L]FwZhi_|x}Hw[h\HyY#=jzxM}`Iakx:>#>\{~,׽jx(:>F">sx|i>$P=\{~,׽\{~,׽sx|i>$P={>=J,sx|i>$P=b|j%>{>=J,{>=J,b|j%>M}`Ia=M}=`Iakx#:>Z{*=~jxF"(:>sx$P|i>Z{*=~Z{*=~sx$P|i>{J,<>=Orx8OVi>Yxn<޻t>{J,<>={J,<>=Yxn<޻t>M}`Ia@x`@<ƻt>_s<><>M}`IaM}`Ia_s<><>jx(:>F">M}`Ia==s,ccc\{~>,=sac*csx|i$P\{~>,=\{~>,=sx|i$P{>=>J,=>J,<{>=>J,M}=`IaM}=`Ia Ij>jxF"(:>b|j%> Ij>M}`Ia= Ij>jxF">(:M}`Ia=M}`Ia=kx#>:Z{*׽~>jxF">(:sx$P=|iZ{*׽~>Z{*׽~>sx$P=|i{J,>=>sx$P=|iYxn޻t{J,>=>{J,>=>Yxn޻tM}`Ia==@x`@ƻtazڌwKM}`Ia==M}`Ia==azڌwKsac*cv?BLJvcc??c:V?c:Vc? =G<c?&x3D?Ż=# =@F<c?&,?(?0x3D?Ż=#x3D?Ż=#,?(?0z?ߜ;E J,?,+B0lb>N;Xz?ޝ;Iz?ߜ;E Jlb>N;XkN;X-K!T|-eU ݾWTS3U>F xKzys%*ž(AlȎe xKzȎe˅ؾ([ǘ)eqM$̝3ؾto&[˅ؾ([qM$̝3 PKB KQ$7ʝ3(!\ Ǿ PKB PKB #\^ǾeU ݾWT(!\ ǾS3U>FjcU+ݾdR\T$ӽ1Uˊ[ ˥]kxtyiRӍᚾپfM2S2-t=y.*gN,R ?M2S2-M2S2-P,Ȫ ?tyiRӍᚾgN,R ?P\JV'ӽwilߍtyiRӍᚾ\ TXӽ]{yT |aM/1S0U>K(aYT 01S0U>K^l>r>gAS^ 0h9bƐ1a^^l>>1Uˊ[ 1Uˊ[ 0^l>>]{y^l>r>=)@@I˥]kxkx>Ft!M3P?|fUk ?D3X?>1 ;`I>;qI*v>1 ;` ?W$I>d*v ?Wp>v; `z?ޝ;I>dź;`:?T=u,z?ޝ;Iz?ޝ;I:?T=u,t?4<2:? !=,0)?b?t?<_>3X?4U>Bp(v<;ڞ;4U>Bp(v6c;軾<;ڞ;g;>m>O!?K:?P=<,}z??R6?Cm7)Q?~> žQ?~> ž6?Cm7)D?3>x'Z6?Cm>):?T=u,E?Z)>z'J?%>=x':?T=u,>6 ?٬K}?!9ρz??gR,Rc?N>p,Rc?N>pρz??gRQ?~> ž}e;>m<;t?t>O!?Kʳ>,&?Ky;t?D?3>x'y;t??tG?׽D?3>x'D?3>x'?tG?׽eQ?>žQ?~> ž?MG?/׽Nc?j^>C1sWٽ>ɾ˾j?vя>h&=˾j?&Ok>3>v?>[=v?>[="On>B>LR> (?&Ok>3>w>L>?LR> (?LR>,?گ>}>?LӾ<>Gd?w>L>?cM!x?z>ӾM<>Ld?ӾM<>Ld?{!x??z>e="s>^w?)!x?bz>x4o^w?6=s>cw?p<0?n=#?T<>M?p<0?n=dr=T?t5+=?{<>M??{<>M?dr=T?t5+=sW?^̽>>r=ZT?*=@>o?<=uW?Gν>>sW?^̽>>@>o?h&栲>o?[v??>[A=^~?:L?R> (A=^~?:*"9>cs?ƻL?R> (L?R> ( 9>s?ȃL><>Gd9>s?ȃ%9<}?><>pKd><>pKd7<}?e"s>^w7<}?q(? .ęs>Нwęs>Нw&(?.#T<>Mq(? .K_rE?o{<>MC(<>{MQqE?#bqW׽>&ɾ.NoE?s˾j?sW^̽>ɾF4W?)<>ף?B<`>R>a?ףw?nDR>a?ï>_B>a?C?<?R;SPQ?^> m<? ;p; ?LTQ?[>LTQ?[>p; ?; ?Cf;(?H?$.9> ?&C; ?CH?ٻF{V?}<>*I?!Sףw?nD<F4W?)<>"?G?Vs׽>g? I<Nc?^>Kr>sg?<Nc?^>Kr;"?bO?>c\>P?i]=\" >z}?2YS<2?!>_s ?\" >z}?2YS_s ?d<0K??>c\>P?j2?> x ?ˢ^?k>'=k?o>XP" >d}?T<k?o>X=.?EػD" >N}?VU.f?m=h{?(m=X{?e=>-f?>{?Y覽@->0f?=.?Eػ>{?Y覽>{?Y覽=.?ۻk?`>9Zm?oI?)C5u? k>9=7>U.f?5u? k>9=ci>a?7=7>U.f?!U>`u?E>p?n(><>g? I<>g? IJa?l=!U>`u?E>!U>`u?E>h>Ja?l=(v=~?r=u=j~?ত=XY>a?j=xu?%w>I9=~Iwў>~?u^?L<> ?5?^?F*K<9u<?h;> ?5?> ?'5?9u<?h;7??iGdw<?X;s;?y7??iG+7??e;s;?zQ-?1Hs;?yiD?նQx`3?0HP{.?g3HgD?kxIҞ>P? >?kEX?K*K?OIcR>fҾvq$>8v>qZ=vq$>8GPxy?I&=v>qZ=v>qZ=~aPwy?Q=f B^>e ?ZGPwy?>Z=]>9!r?L> B½>j ? B½>j ?^>"r??>oӾC<>Id?CD>`"r?L>i[p=L??Ӿ<>[Jd?Ӿ<>[Jd?ڌ[=L?1?s=t>w?i[p=L??>q(? .?Ȳ=~t>w?Ȳ=~t>w?&>(?.?#?T<>M?>q(? .?%=0~?=?{<>M??{<>M?%=0~?=sW?^̽>>5=1~? =?X?оA==uW?Gν>>sW?^̽>>?{X?p'B=v?>qZٔ?X?0VA=0=Ae? 켘v??>[v??>[0=e?L?R> (0=Ae? H!>3v?|eL?R> (L?R> (pc!>S4v?|eL><>GdH!>3v?|ejI=@U?j o><>Jdo><>JdϴH=U?j b"s>wϴH=U?j Q(+}?ɻ b"s>ws>w5*}? <>MQ(+}?ɻ :x>S<>M<>M:x>SFcR>HҾ:x>Svq$>8OIcR>fҾC"?继[;^?[>)=.x?`6p>T?ӽ. ?.x?`6p>^?>]=^?>]=j2?> x ?T?%ӽ ?T?ӽ. ?2?!>_s ??Q@?2?!>_s ?>R>Q??ܞ@??ܞ@?>R>Q?XJ=::=~?>R>Q?;"?bO?XJ=::=~?c>K G?1!?QDF?-^>u?1A?1!?F?U?HO; ?-^>u?1A? U?; ??<==X?XJ=::=~??:==X?x?}'=rl>XJ=::=~?XJ=::=~?x?}'=rl>F=?H=ľ׶ ?M?U<?9?{%0?#v?:>ø9? "0?w}?1ov>#v?};>#v?};>v}?nJ>-!?F'F?-!?F'F?w}?1ov>U?; ?w}?1ov>? <=͚X? U?; ?oc>ݔG?^>q? 5A? ;F?-^>u?1A?;<? ;F?2=?|о)>QSJ?~> >OL>ϸ QSJ?~> F.F+ýV ?N?FQ- _>O i3p>QP>J̾TgzI:!̾ZLo>7?Tgz%9<ýV. ?nQ_><4T4<4T4qQ^>sk4ZؾCMwl3m>1{W5Z?QP>J̾QP>J̾nd Z?9e[X94=9e[X94={6Z?gC>9e[X94=gC>f\b"=f\b"=gC>FQ- _>gC>sk4ZؾFQ- _>‰پg? .j?$."h?[ThzA!9<]Lm>$2?q1Vl) ޓ>]Lq>2?9e[X94=#X픔>f\b"=#X픔>eWfR74=]Lm>$2?#X픔>"1fg)>"1k)$>nXm>Za& ʾ#G&?N!X6>Ǿ;J?"e&zʾ_D&?Za& ʾ#G&?? Ǿ=J?S3=?h?$."h?Ǿ;J?‰پg?<޽r~? .j?;wo? .j?‰پg?;wo?@<6޽q~?ף;wo? >D̛4Ke?<]?8>įA?=*&? ?d̽/?A?5=-&?$v?d :> ?lϽ}/? ?d̽/?#v?};>->ΛHe?>Ke?]!v?;ʌ>R`<޽dr~?o~?Bǽbh<@8>,={?tc_?2.={?@]?=6>\>]?,$> 8>= {?`A?2=k*&?R>G>64B ݤ- $F'޾e 43CW > EWI=f\b"=FQ- _>bݾufae=nQ_>z#Y 2'2>bݾufae= !ݾrfE_e=z#Y 2'2>My^>My^>F޾3e\ ]!ݾrfd=]!ݾrfd='޾e SȖGu̽> > EWI= 43CW޾e2ْ > EWI=nSY#ӾbgڽL5Tc.=nSY,\9CR)li@콾{ >k6 ,WI=/õq/*xS#ӾbgڽS/õq/*]f{L5Tc.=tyiRӍᚾwilߍL5Tc.=oZ뼫mo}oȇ>ȖGu̽>ʽ-,}Pʽ,}m?HZ>@콾{ >m?HZ> 43CW콢{ >nSYL5Tc.=]{y7Et?Q gem>iUCt?+apnh pnM6b>VieԈ>%=qIФ>٩$< m>gem>^Ӿgڽ,6+. V=)_>V=|_V>i2q- %*?9;??[>3%^ӾgڽW=j_ >#Ӿbgڽ;??[>3%K5b.? >t;?#[>%%*?)K5b.? >K5b.? >%*?9oZ뼫S%F*?,6+. > o:dX`$Rֽ2/Y?Wy*Pw?lk>"=K? ?x6E"J? ᄐ¾Sgf?¾S)f?+>"J? (=^t*]x?#>$J?!'ȲX?cW(=tn]x?cW(=tn]x?X?uK>73^?-6X?38?IξK>73^?[A>46^?;8?EξD?c=V!?8?Iξ7zbk>D?c=V!?D?c=V!? xbKp>[?>`>7zbk>3Wx =M d>[?_>o>[?_>o>3Wx =M d>|?7?ѣ2?/-<3Wx =M d>4Ksˣ?|?7?ѣ2?/-<|?7?ѣ2?/-<4Ksˣ?>g?:˨Ks?оFI?>g?:>g?:оFI?݉[w?%\zоFI?z=zX?݉[w?%\z݉[w?%\zz=zX?K3^?7z=zX??Iξ8?[A46^?[A46^?;?Eξ8?DU!?c=?Iξ8?7zb?k>DU!?c=DU!?c=xyb?k>[v>">7zb?k>w?Mk>WR=[t>">[t>">Pw?lk>"=6EO ;X:L~ʽ:L~ʽ`>O ;Xb#?Cӽv?ևѝ#?C9ӽc?k*c? )<%b#?Cӽ,?,+B0ѝ#?C9ӽ`>O ;X,?,+B0?/Uf~?|5ǥ}?g:p=%Kj<lCƾu6|xPv^F?>^>D^sp=^F?>z?Cj۬<F??>u6|xPvz?Cj۬i">|Lj<%Kj<lCƾ}~?9ğV~?B927VL?xKӚi">|Lj|Mj<P">|Mj<ǥ}?g:p=V~{/<>^>^s=bt=by_^F?>|?v|IȽF?>s2*|*4"bt=by_F?>(1?e]P0?%Kj<lCƾF,1? b]vM0?-hc?oף>%Kj<lCƾ%Kj<lCƾCfc?֣5>}~?9ğVCfc?֣5>f~?|5<]~?km6V]~?km6Vf~?|5<?10%f~? [1|?v|IȽ|?v|IȽ4`GtZ>23?- 123?- 12_Ftf>ZfD?p L2_Ftf>"R>`s=hD? AZfD?p L^>^s=z?Cj۬<78>\=[{?W~?BǽGj<1|?I*e>1|?I*e>o~?BǽbhGSZ=Xmz?ߜ;E J>^+PZ=[mP =G<3D?=#ؽ>+PZ=[mmؽ>Z=[m-D?R= #z?W;I-#=*?>.n1S0U>K0=PXO^1S0U>K=)@@I0=PXO^_=m?>S3U>F]#=\/>8n0=PXO^=)@@IR=Ǹɾj?=)@aa^^l>>R=Ǹɾj?R=Ǹɾj?a^^l>>D9_= m?>a^^l>>1S0U>Kϡ_=m?>ǘ)eys%*ž(Al`v<>]{y(!\ ǾnSYxS(!\ Ǿp=92Z#\ǾqM$̝3p=92qM$̝3ǘ)ep=920>S:g@}d?"7X>hz??Rd?c6>>35֒m?}z??R>35֒m?W?fսY}z??Rρz??gRW?fսYE6?\m=))?bi?p:?P=,W?fսYW?iս:?T=,Z6?Cm>)W?fսYmؽ>Z=[m)?bi?mؽ>Z=[mt?<)?bi?}?~7Rc?N>mB ~?Z=3Pc?/T>sp?>a< ~?l= ~?l=󽱌p?>k<ۖ{?+k;:=>p?>W]<k?k>϶ۖ{?+k;:=>ۖ{?+k;:=>k?`>9Z"?Ӈ;k?`>9Z^?[>)=C"?继[; ~?Z=3?$hwZ'}?~77?uk'ρz??gR}?~7YS{z?|gQ> 挼qu}?>Aeu}?*>7i=t>ow?2Qz?gQ>6=s>cw?? =>ȬO?YS{z?|gQ>?{<>M?=uW?Gν>>2Qz?gQ>YS{z?|gQ>sW?^̽>> 挼qu}?>sW?^̽>>v?>qZeu}?*>eu}?*>v?>qZL?R>]'LR>,?LӾ<>Gd???Ӿ<>pKd?6=s>cw?L?R>+L><>Gdeu}?*>><>pKde"s>^weu}?*>eu}?*>/j,s>wR5< S?'?e"s>^w!<>O7M1sWٽ>ɾ7&ɾ1sWٽ>ɾv>qZ=??%v>'=LR> (?SPQ?^> ?N-?zT?`>R>a?`>R>a? ?N-?zT?FS?<>; ?C%FMR?e<>OQ?j>:>{?Y覽k?`>9Zp?n(><<(v=~?=u?Ow>9=i?mI?wp?y(>_`u?E>>{?Y覽!U>`u?E><(v=~?=>{?Y覽>{?Y覽<(v=~?=m=h{?(<(v=~?=i?mI?wm=h{?(Q-?1HyI>?`0DH?GGxIҞ>P?>\ ?5?{Ⱥ?H?H{Ⱥ?H?H>֥ ?5?+7??e;F<>ƬOwAwA(K<[? ֆy?ik~?L?R>]'L><>Gd~?~?L><>Gds>w<>MOIcR>fҾAfҾuv>>y=qZ= B½>j ?e ?>(K<[?  B½>j ?oӾC<>Id?>(K<[? Ӿ<>[Jd?s=t>w?>(K<[? >(K<[? =!t>#w?=y?ok=!t>#w?? =>ȬO?=y?ok?{<>M?=uW?Gν>>=y?ok=y?oksW?^̽>>~?sW?^̽>>v?>qZ3~?~?v?>qZL?R>]''0x?aqnp>?}#<"?Ӈ;"?ڇ;B?63ۖ{?+k;:=>XJ=::=~?zI=?@ľK ??ܞ@?F=?H=ľ׶ ?Mu>hc(%>?D@?y/? Nw/ >ʪQ?Y̿>lH}P>?ɬQ?.x?`6p>׿>kH N׿>kH N'0x?aqnp>R>fc#>'0x?aqnp>T?1ӽ ?Mu>hc(%>>hc_>T?ӽ ??ܞ@?#5?M4| >Vl9}?C$?Aa!:LD >Vc8}?2?&Gr6?C$?Aa!:LD$?!LDb2?4G6??@I??CI?2?k{6?ø9? "0?ø9? "0?2?&Gr6?w}?v>w}?v>2?k{6?? <=͚X?2?D6?(g? I=>? <=͚X??XE>J?x?}'=rl>? <=͚X?")g?sI=ݐ>,d?I>J >i?&C>1J??F>J?,d?I>J >S?XB>Rq?F>J?? <=͚X?")g?sI=ݐ>x?}'=rl>?XE>J?H=?2ľ; ??F>J?R>fc#>UK=?4ľ ??= G?4M?<?#v?};>b>W=s?K4?!H=K4k8>.={?4?´H=4Y?a="eG 8>= {??ٕ=dG?=G? 8>= {?78>\=[{?o?=5G?A?9=&&??"=G? v? :EΌ>A?=-&??@I?%9?SX0??) =xG? 9?M%>0?4M?<??) =xG?H̾]@h=Q%<̅Y=t?Q>QP>J̾QP>J̾mY=t?E>ZLo>7?W(=>YAa?]Lm>$2?mY=t?E>]Lm>$2?W(=>YAa?ek3=EYAa?‰پg?Ǿ>J?$9]~]=$9]~]=Ǿ;J?ݾeufEd=f\b"=ݾeufEd=Xne>ݾeufEd=Ǿ;J?nXm>$9]~]=}=oپAg?oپAg?}=d֣;W muo?}=9/@F=d֣;W muo?d֣;W muo?_:.~@F= =2D[!?}~?zƹ|o~?BǽbhΛHe?_>ʛLIe?P=Dg[!?  ?׽/?P=Dg[!?l>.lsH=  ?׽/? ?d̽/?l>.lsH=@]?=6>PB]?I*>l>.lsH=tc_?29/@F=9/@F==;|?ݞ+>> wikp<=;|?ݞ+>?QN> wikp wikp<#?CÍӽ>yi5o<:L~ʽ>yi5oJyP^7V~ =gJyP^v='2nSYv='2ݾeufEd=v='2$9]~]=ݾeufEd= =2D[!?9/@F=l>.lsH=>{lsIH=9/@F=| >V`Fü>yi5o<| >V`Fü9/@F==}=};{FI>ob<:,}=}=ob<:,:L~ʽob<:,0:P~ʽ:L~ʽ0~tŽ}= a >=#,=\r7;wq,=7;~tŽ}=}=~tŽ0#,=\r7; V#D~tŽ~tŽ V#Dv='2 V#D a >=v='2v='2 a >=}0=R W=/_>%*?)جf~?{Trhy?\947Ǿ=jk?^=ZDʿ~?=g<?_;ZDʿ~?=D;?[-ZDʿ~?=جf~?{TD;?挻e;? U[>%R W=/_>~?T%*?)e;?;@[>!!%جf~?{Trhy?\94U ZDʿ~?=U 3? 08:Yhqy?h:4rhy?\943?0:@Wza%>rhy?\94@Wza%>ZDʿ~?=@Wza%>U ܛD&~?=rhy?\94#?d:?ǻ7?{?NDQI9n:7<?)ZDʿ~?=ZDʿ~?=7<?)rhy?\94R$9<?#?d:rhy?\94-I?-I:QI9n:?ǻ7?{?ND5ǻ@{?0DQI9QI9ZDʿ~?=;ǻs@{?v5DXG<?7 ;H:?_e;g<?_;67#?0ZDʿ~?=67#?0IK<?Q;ZDʿ~?=ZDʿ~?=<?Q;?ǻ7?{?ND?ǻ7?{?NDIK<?Q;XG<?7 ;H:?_e;XG<?7 ;g<?_;XG<?7 ;67#?0g<?_;D;?[-.iwV?l g<?_;:?_e;g<?_;_vw?n>H:?_e;_\vw?ϛ>D;?挻_vw?n> yV?Bq D;?挻Tc?M ?$}>r=D;?挻H:?_e; ?No>=D;?挻 ?No>=>2?D:?k;>2??c? D:?k;H:?_e;Tc?MD;?挻D-M?ϑD;?挻جf~?{Tجf~?{TD:?k;1-M?֛جf~?{Tm>gem>%?<%?<8Ct?r]جf~?{T~?T٩$<(@}?a8Ct?r]m>gem>جf~?{T٩$<(@}?a~?Tجf~?{T(@}?aH:?_e;(@}?a;ǻs@{?v5DH:?_e;Gv?Ӈsa?pg=#?CÍӽsa?pg=>wi3o<#?CÍӽTT?ܲv>sa?pg=hc?Jʣ>va?S=e~? <hc?Jʣ>hc?Jʣ>F,1? b]vM0?|RT?ᰮ>|RT?ᰮ>F,1? b]vM0??^v D?F,1? b]vM0?F?>˦?EvD?˦?EvD?F??>?cw%=23?- 1ZfD?p L=b?MQxԞ˾ZfD?p L}~?;z;"}b?Sx˓˾b?Sx˓˾}~?;z;"}v?Ǽ=b?MQxԞ˾?5?3?-Z$13?-'1?8?|?v|IȽ|?v|IȽ?5?t~?^C!ʽF?>|?v|IȽ? y%=|?v|IȽt~?^C!ʽ? y%=>9??dw-y%=>si*6o<>wi3o<? y%=| >V`Füt~?^C!ʽr>s`wļ? y%=[?8d =G<z?">Rz?">wR =G<0>S:g@} =G<. ?;<}U0>S:g@}?)KzGGH[? <=c?u?]$>{bj>GH[? <=c??)KzG?U7ף=?)KzG]~?km6V?U7ף=?U7ף=]~?km6V7 t?}1>-]? 6N?dn?fu"?1<`!H?IbsbS?7=ԼH?Ibsb,(r?+>qㇾS?7=Լ?7=R*Լ,(r?+>qㇾ8y?Oj>,(r?+>qㇾq?d5o8y?Oj>8y?Oj>q?dUq?d>U>q?dUYq? LU>q?d>5o>Yq? L{bj>Yq? L<_?F߾ T_>u?]$>{bj>u?]$>{bj>,_?2H߾;_>?)KzG(}?ǧo=k{?}{=5*<(?7k`R|f?0.?'K<[<<?_弪N/\|? ?'K<[<?'K<[<\|? ?d>=G=|?@ܶ{?'9rN?2"d~?0U?o>T ~?hd~?0d~?0T ~?hj?KT ~?h~y?6!Aj?Kj?K~y?6!AG=|?@۬?E=!t? ,8<>?'K<[;ܵ= ?K1漉N/ ?K1漉N/9{?}>;ܵ==~?zn=9(}?ǧo=j?K"?,è<]>~?%V=G5?_З#?SS?i>]>S?>>5?UܗZ#?.?&=-(:?N5?͗x#?87}?_>.?&=-(:?.?&=-(:?87}?_>q?o>K6}?i_>?'K<[q?n >?'K<[?'K<[<?nE= tE:t?K{;0>?nE= tZ?2ݤ==Z?2:<==?nE= tU^?ٲ>8<>\|? bk?ʾ?d>=bk?ʾy?c5>?d>=?d>=#y?ff7.=?nE= t#y?ff7.=?-޻h<?nE= t?nE= t?-޻h<? ,(}?ǧo=(?7k`R|lu|?yr<)>u}?Fd=O=N?2" w?<$w?<$Zx?-hw> Dx?anN>=~?zn=9~?(=xp ?K1漉N/~?(=xp"}?f=D9 ?K1漉N/<?_弪N/"}?f=D9PK?AQ^W"}?f=D9w?<$K?@QPPK?AQ^Ww?<$ jm?G!>w?<$Dx?anN> jm?G!>X|?IG>?eD-q*?ռ<>?X|?IG>z?Cj۬<?gDE?eD-z?Cj۬<?Tz3?f3=n)H??#J'0x?aqnp>'0x?aqnp>?|%J?E6#<?|%Js?(>#<?E6#<?E6##<@?H?J;7%9H?Uy~?M۽z?Cj۬<?E6#<?V-?V-?E6#<?J;7%9?E6#<@?H?J;7%9,{?j=>sh>B>&c?5y~?2۽Cd>B>c?^:?N=?1փUy~?M۽5y~?2۽C^:?N=?1փ?J;7%9w*?ռ>? 1> ߼E |?|?7,KK>0> ߼b |?| >Vl9}?0|?҈IK>k|?_GG>| >Vl9}? 8>= {?| >Vl9}?c>:258k? 8>= {? 8>= {?r>0F8k?b>W=s?E?w?>^>D^sp=T+=?Y?R>`s=2_Ftf>T+=?Y?dEtIf>,2|#<"-=<?˽Y?T+=?Y?,2 |q3"<8+2$?>8G+$?>,2|#3H,2| HlD޾T>3H[u=`y"_E?a? J\u=ay _^>D^sp=E?w?>10?>s#i">|=k<?$?2* ? P">|2k<Y}{<>?$?2* ?j?D?0 ?x'}{<>"-9>L?V~{/<>u6|xPvT+9ƪ>܏?T+9ƪ>܏?u6|xPv8,?Xu6|xPv~h<l{#ƾ8,?XP12?&Hj#~h<l{#ƾi">|Lj<10?>s#`>3m?X? 0={m?W?fսYX? 0={m?ؽ>+PZ=[mW?fսYd?c6>>^35֒m?>^35֒m?>^. ?;<}UHd? 7>0>S:g@}. ?;<}Uw?<$ ~?Z=3b?2"<# ><3 ~?CZ= {?Ik;q!=>b?2"<# >k: Q:?yk: Q:?k:MI9?Q@z?Q>qXS+z?Q>k:8??k:MI9?h: Q:??R5< S?'? 挼qu}?>kQ?Q.7?QQ?eu}?*>kQ?7QQ?Q.7?&9O"P/F4W?)<>"P/ x!>I?F4W?)<> ?T-?XM? >dI?`0DH?GG۬7??\RI\=6gb>"۬7??\RQ-2?.H";a>nj$Q-2?.H`0DH?GG>(K<[? k Q=y?okW"y?UkkQQ.7>(K<[? kѸW"y?Uk>(K<[? k-7QQk:LI:~?A*/={?H?Llg=!?3?f3=n)H?>?ɬQ?K;>{>ñs?7.x?džp>K;>{>ñs?O!>*/={?7.x?džp>O!>*/={?7?,j3=&H?/x?,p>K;>{>ñs?>佾Q?S?XB>Rqe >CQ?b/?Iwb/S?XB>Rq7?oT>ĚJ?S?[B>l>nHRS?[B>ly/?1wy/Y̿>lH}P׿>kH NR>fc#>?F>J?5?рXM4. $?x!FDV4?^I=4X $?a!NFDY?a="eG4?´H=4V?c=PhG$?!LD?"=G??"=G?$?!LD?CI?H?Llg=!?!>,={?,d?I>J >IZ?gr6[?(g? I=>O?r=[?O?)5= [?^+g?@I=߅>Wu?ٵQ<>^+g?@I=߅>v2?]{%6?Wu?ٵQ<>Wu?ٵQ<> 2?6?0> ߼b |? 1>s |?2?&Gr6?| >Vl9}?_?:r53[?,>^=c?(g? I=>~>k^=ڐc?H?Llg=!?")g?sI=ݐ>")g?sI=ݐ>H?Llg=!?,d?I>J >> 05k?| >r6V9}?#5?M4S?ArB>p-d?J>V0 >K;>{>ñs?+d?GU>. >!>g.={?^2;>{>s?>=ps?u>l25k?4?´H=4u>l25k?#5?M44?]I=U4g=%<+s=y?>}Y=0t?E>v?Ǽtc_?2<>`ü`_?/<>{lsIH=>`üzzV?i _\vw?ϛ>tvhw0_tw? >};{FI>_!tw?˴>g<?_;};{FI>:;{MI>Ⱥ<?>ob<:,Mh<?Q; yV?Bq 37<ODob<:, yV?Bq z~7 U<z{%>D޼Ys%޼@Wza%>=;|?ݞ+>@Wza%>3? 08:==|?c+>Se=%<|?+>3? 08:p?TNs?TN3?0:1s|߼3?0(:U Ys%޼>JyP^1-M?֛\8V~髜=1-M?֛D:?k;7V~ =7V~ =H:?_e;gJyP^(K;?X-OK+M?Ҟ^I(yi^67#?0I&?" ;纖7:?Vʼκ :?N(˼z%G?Б=jc?p>2? a >= t>=>2?#,=\r7;>2? ?No>=wq,=7;#,=\r7;K ? r>c=VzK ? r>c=龖c?T9R:QI99jq=&|H QI99-I?-I::ƺ̻;?>[.h??q1(r3?nūR?龷G?sO/=rhy?\94b>HBǾgk?^=G?sO/=ūR?ӨM?:4=6Ծ;?|>^3~3?ʑ=[.h??q[.h??q^3~3?ʑ=rhy?\94^3~3?ʑ=HKn>4>rrhy?4rhy?\94!Ky>1>{#>=[.h??qӨM?:4={#|s?>/s?>ӨM?:4=:l(&O?V >l)O?Q ӨM?:4=[A?>{ m#>g=cIW>ͣhy?Q84b>H>r$?.;BǾgk?^=BǾgk?^=>r$?.;G?sO/=>r$?.;1(r3?n~G?N/=)Z׋>n>KWx>.?>cIW>ͣ;(.?5.?>.?>(.?~A?*>(.?~>l)O?Q [A?>KWx>,Zz>ap>rhy?\94rhGy?3)Z׋>n>b>H?ǻ7?{?NDAa>ahy?Q84k_>ba[Sc?eqrhy?\94k_>ba?ǻ7?{?NDF?KF?K?ǻ7?{?ND(@}?a~?T9#6>lw˽~?T(@}?a9#6>جf~?{T'+3292,N/=ج&~?/ZDʿ~?=^,]/==|RT?ᰮ>>wi3o9??^v D??-Fv D?>9 ?|RT?ᰮ>>9 ?>wi3o<|RT?ᰮ>=b?MQxԞ˾| >V`Fü?5?>`üt~?CUʽ?8?v?Ǽ| >V`Fü=b?MQxԞ˾?QzG~?FD_~?B927Vd~?0ޣ?)K0]~?km6Vd~?0?ۛDG}_?V߾V_>^~?e2=?ѼЭa=d~?0d~?0"?jҼEa=XG?ѹ1 ?N?ڴѼFEa=jyD>^G?&ѹ ?jyD>5|?=0o>[G?Vѹ8 ?XG?ѹ1 ?4|s=n>y#}?偕=5|?=0o>{b'>=!}?怕= S#}??M=9{b'>=lo?:=ailo?1={'>ӫ=~?t3=2=~?t3=2={''>=?==G {'>џ=a,s=?==Ga,s=b{/>?<:Y?W= Ѹb{/>@~?=S6 c{/>\1f?B@~?Ǔ=j@~?=S6\1f?B"?1<`!?^? Bzd:ew?5<9)?Թ<`!h;MkH?Ibsbzd:ewF?&H?IbsbH?bbTF?&^%r?,?~?FD__?F߾ T_>^~?e2=_?R߾8_>Wq?I<~?Mp2=~?.+2=Wq?Ij>?(;.]Ggj>u?s$>j>D~=ψ=֠q?c>>C~=Eψ=~1=ϹѸ q?s>q>q?@t>W>~X,=7y?'0j>7y?'0j>~X,=?7=R*Լ~X,=:rN=?1]?6="ԼJ?=1ݼP~*=濽L?=S?7=ԼcP~†=n?fulY?lY?\0(T> t?m}*1>\0(T>{Ch?6w> t?m}*1> t? } 1>Dh?w >q? _ף=Bh?Ywg,>{?cc@F>?U7ף=q? _ף={?y@F>GH[? <=c?GH[? <=c?{?y@F>?;4[<y?uƽBV>=yQ7Q?S?K-;FI=wQQ?~& =.<=?LqN<5@=S?K-;FI=~7=Z<= ?-<-!t<~& =.<=`>P(>n?P<P<? ,P(>U^?ٲ>8<>X`>>?DȺ8<>Z?2:<==?QyG>Z?2ݤ==S?)Y><?Qy<:t?K{;0>+?Yw@&>XM?S?)Y><q?>@&>XM?:t?K{;0>q?.r>}\??>)>SM? .?=%:?}\??>q?Sk>.?=$:?*}L= >}\??>SS?i>]>*}L= >.?=$:?S?>>XQ> ??Q?(+}Q=ɻ >A?u ??Q?SS?i>]>E?<<@w}?'>L ??Q?{?/}{=X<4*KL<{?/}{=X<?-;-(?7k`R||?Cz=yQKQ?y?uƽBV>=~?zn=9?wpN>?XM~?z=}T~? ]= p@&>>?XMU?o>)>>?SM;u`U?o>U?o>ߟ6be|?FApmIM)x}LG=|?@G=|?@)x}Lܶ{?'9r< ~Z=x?-,6}? >?:.(x?#,#,K6}?i_>f?0.?Q(x?#,#,?0~.?QѸ9{?}>;ܵ={?">?=?RI>~?:=hw>~?:= Q}?ѹZw ?RI=~?zn=9m}?]ѹ ?wpNz?Cj۬<(}?ǧo=Ֆ{?yr;:=>{?^e;:=>(}?ǧo=b?2"<# ><x?N>[S߾y?uKĭV߾t?{xĭgm??F!>Kĭu1s?1<\GK?@QPu1s?1<\Gѝ|?ԫK?@QPK?@QPѝ|?ԫ<?_弪N/^|?=%~ԽnuЭ?LL<?_弪N/%~Խnu@|? .\|? 8&~Խ)vbk?ʾѸ%~Խnupy>Ixk?ʾѸpy>Ix}_0f=bk?ʾ8k?˾T} e=#y?ff7.=T} e= ZSbhc>y?7-=y?Z7=ZS%"W>?@޻[g<\SXY>;:x%-?4?t<?-޻h<;:x%-?u|?Ip<)>};6x-?&vG=x>u|?Ip<)>lu|?yr<)>&vG=x>u}?Fd=O='v=x>{Y>{=}?h=gO=u}?Fd=O=\{N>F=?{={k7<><?3ZU!{<>ZM!Yx?ۀw>DYx?w>U!Eev||> Dx?anN>x?N>[fv{>꽱S߾y?u<?nE= t>Oe?g>?'K<[7e?.6g>?nE= tm'?U?d>=?d>=Z?+N?)'?-US?*L<[<Z?+N??d>=?'K<[<>e?Og>~R?AN? 1> ߼E |?Ct*?ռS>?O?@?O?s?Ct*?ռS>??^OP;q*?ռ<>??gDE?^OP;?^;?eD-~?V6|? >G?-y~?pl|~?V6|?Tz,y?. >W=?--?m#;4%9*y? >$q=?m#;4%9`=?K=?؃,y?. >W=)y? >u=`=?K=?؃:1eA?H=?փY>B>c?_4d>B>c?O }? vi=M>7 1>s |?O??ju?~P<>4O? k?8 }?vi=>u?UQ<+>Bu?4YS<> }?^i=Щ>O?)5= [? }?ei=e>X>^B>c?O?=T?O?=T?X>^B>c?IZ?gr6[?X>^B>c?,{?j=>_?:r53[?! {?j=N<>{?7=>IZ?gr6[?3{?*j=;>Uy~?M۽J? >4>Uy~?M۽@?z8HJ?X>07> ?A>@?z8Hs?(>#<̜?<4M=?.=s?(>#<?Q#<?<_<?#?ϑߩ-=?E_2<3?f3=n)H?? |%}Z?qk6[?Q {?j=4<>>^=c?! {?j=N<>3?f3=n)H?>i^=c?~>k^=ڐc?6?3=&H?H?Llg=!?T+=?Y?J;?J#>0)?E?w?>J;?J#>0)?u?=E?w?>u?==)Q=@}E?w?>E?w?>=)Q=@}O޾>H=)Q=@}o8)=3L/O޾>HO޾>H3p8]=L/8G+$?> m8=O/Uz=JA>88-$?i>88-$?i>ڄz=A> =:?@Y?z=oA>ݙ7最=}V{?T+=?Y?7Ѐ=T{?J;?J#>0)?T+=?Y?J?B=f?ݑs?O+>[??l ??$?2* ?Ӑs?7+>"[4?> "ݑs?O+>[A$>y`=כ{R.?>#R.?>#9$$>\={8,?XA$>y`=כ{w3k=rz58,?X3F=5`H~׏==8,?X#1/,?`H~׏==T+9ƪ>܏?H~1==uf!=J?T+9ƪ>܏?(9>=?,h =J??$?2* ?uf!=J?t==}??$?2* ?=+=\}?b!J?=b??$?2* ?>XB^0=PXO^G>`>0=PXO^R=Ǹɾj?G>`>>`>R=Ǹɾj?>>0\?R=Ǹɾj?ϡ_=m?>2>>f2\?>>2\?>_=:m?t>B>[? _=m?2>B#=3>_ngR>[?!]>{}[?"=Z?>mn>4^#=*?>.n0=PXO^>XB^EYAa?opW [L+uWS[[QW(=>YAa?྽=,;?྽=,;?}(=l^񾋅a?>.?XA-?W(=>YAa?mY=t?E>m> .?_D-?mY=t?E>,=y?>>.?XA-?m> .?_D-?=by?>?ͽ>q?w4=2y?>g=S?5ؽ>?4g=S\?ٴZw?KX}>J[G?sO/=p,N/=ˉ>\?ٴJ;?J#>0)?=7O=VU{?𾺾;?ԉ>p;?>=7O=VU{?"33?=3B3?=7=.T{?!Ky>1>=7O=VU{?z=oA>HKn>4>HKn>4>Uz=JA>{#>={#>=z=oA>cIW>ͣz=oA>o8)=3L/KWx>l8N=nO/===x@}KWx>FEW>===x@}(c.?Ou?=_>l)O?Q ===x@}4==?}:l(&O?V (.?שp;?>{#|s?>J;?J#>0)?J;?J#>0)?#^s?N}>u?=_{#|s?>?l#O?yY u?=_$J?e=^?=+=}?mA?'>[A?>=+=\}?.?H>t==}?HT=J?.?>.?H>HT=J?,Zz>ap>,h =J?lH~MĠ=߭=*Z>|>,Zz>ap>lH~MĠ=߭=b>HlH~MĠ=߭=,3F=&z5b>Hb>H,3F=&z5>r$?.;,3F=&z5A$>x=A{>n$?-1;>u$?1;A$>x=A{8(Bo3?ꌊӐs?7+>"[ǫR?0龃A$>x=A{A$>x=A{ի-R?}Q(at3?똊[A?>ӨM?:4=$J?e=^?$J?e=^?s\M?94=Ӑs?7+>"[ӨM?:4=xӫR?/Ӑs?7+>"[[.h??qlRt?NRR~G?N/=~G?N/=w?W}>[pR$t?pR\ Ҿ ivWRot?qRG+X>apR$t?pR[.h??qG+X>a/"[۾$??Fba?FbaH}VH}V<EEy_Z<|`!{3lbEu_[\.T?OR_(=>\.T?O2/(/&MU@ [>2/(/&MUAL{1q}y0_+b E>!QM>;4O-ʐ=SEY_,ClÓþ9Q9Nv6~;4O-ʐ=BL2ٱNv6~lþF8BL2ٱ E°! yR~3)ؾ JgE!yBL2ٱ!QM>ͯA澧+?ܾCA>bEu_[<ͯA澧+?!QM>97) v\>ͯA澧+?bEu_[<1!"?9?97) v\>E<)L澰+?97) v\>i "?Ȗ?tx=Fc!?S?Etx=FEFY!}5v>H}VF9#y >Nc:?j>ĺWޞV<9#6>tlG< m>lld:t_>< m>ܾCA>llX]'?< m>< m>|C;,TL&?X9#y >|C;,TL&?d:t_>9# >< m> 9#>xLddξD>|C;,TL&?(@}?azLiYξ>9#6>(@}?a/"[۾$?W}L1Uξ>vڊ?DKXE3s?xL Wξ>/"[۾$?XE3s?p23]>W}L1Uξ>{;#,0?23^w>XE3s? ľ!3jnH>`2$3z>{;#,0?{;#,0?y>]'?8 ľ34jZE>q(IQ|?V>?wp*EK?oH~?芾V>wpq(IQ|?*EK?St?q(IQ|?;g) ?% !Qu?*EK?;g) ?ˢZ!Ͻ?x? t?XE3s?9Zнx?;g) ?芾V>wpGLs`z?d -<>0 W>tp|~?fL+z? 8P[:>3u ?9V<38z?r=w?c.dV?u ?d -<>`Lz?9V<38z?uS>M?5Pu_:>%x ?r=w?uS>M?v?5>? 8P[:>3u ?~^7>ѿF?v?5>?uS>M?;S>s>- >`!?l:#< ?lQ?v?5>?- >`!?;S>s>y?1>L?i:>6F?- >`!?";| >f>5?>Q=VF?o>W:ν"a_?>;n >p>l:#< ?lQ?<νc_?>5?>";| >f>=G?>W7R?Z>9x>?W>r(5?>R?E^>Q=VF?o>휾Os?*=cJ6F?V>5D/?>cJ6F?V>/l?՝ >5D/?>Q=VF?o>/l?՝ >cJ6F?V>=G?>9x>?W>/l?՝ >휾Os?*=mX~?V=d?G߾uA=mX~?V=d?G߾uA=3?y1`>d?G߾uA=jrI?xI]>Q3?G1>3?y1`>I?]>m?g緽˜>>`> =>Fo >]??{>e>m?ꌷ> ??B}>]??{>\m?hW>I?}c]>fD>[W>+?v!e>O;?->O;?->+?v!e>??nw$>]??{>+?!Y>>`>x>D>[>O;?->5=3_Z?> 8u?d>)`_Z?&T?} ?PT?[ ?d>)`_Z?A?|-p?e>tz)L`Z? ?WrO?A?|-p?И ?XO?>)?p9=)?A?|-p?A?|-p?>)?p9=)?O;?->>)?p9=)?x>&T?} ?L>[ 8u?> 8u?L>r![vzDN= C?U?]=- ?|P > =}?!E9?p=?0?:U?Z= ?K9?Şo=0?ϖL>[vzK9?Şo=0?DN= C?L>[W`?6 >s =։}?|P > =}?>C?t>d?#L>\:=L}?'?>]6?=>t=z?O;?>G?O;?>G?.>>=z??C?>L_?q>>7=5z?e>_\:=v}?>C?t>d?O;?>G?؁O?S? R<> v?jR>;?K>? R<> v?jR>6n*?N9?0"4>O;?>G?6n*?N9?0"4>#?ŷ>`6?#?ŷ>`6?q*?&9? 4>r^s?oJ>t#?ŷ>`6?r^s?oJ>tQ?>?2?'+3292R\s?]sJ>tQ?>?2?'+3292(w/^s?AUJ>tجf~?{T(w'+3292/lNw_˽(wجf~?{T/lNw_˽soc$Kj<(wb< оlc~Ij\?~䴾p,N/=ˉh>\?Y״)P>>d?'k22x2'+3292)P>>d?u9>}{?u9>}{?P?H>b2?'k22x2&澻a-6X?3Fz=5DʲX?û>,"J?ay=G6DPy=51E+>"J?  ?>>(A+>"J? ヌK? ?x ?E<> &A ?>>(AK? ?xhVg?~ς>K? ?wPw?lk>"=Yg?eĂ>(Yg?eĂ>(Pw?lk>"=U?anᾔp,w?Sk>"W=7zb?k> U?}Nr0U?ol1|xyb?k>>P67zb?k>`?>ξ8?m>lP8>PE?Iξ8?=V>M8t\;?Eξ8?:}=a|X?[b>6t[b>6tz=zX?-rH/0;z=zX?оI?-rH/0;c{r,H;оFI?z#ݾf оFI?4Ksˣ?z#ݾf z#ݾf 4Ksˣ?AeR#qK؁s?3Wx =M d>MAU#ՋA$V# r3Wx =M d>L|~R<۽3Wx =M d>7zbk>L|~R<۽L|~R<۽7zbk>=IK>xb q> `8?>ξ6I-K>6I-K>8?Iξ"a;8?EξX?u&澻axQ|=1<{ snO>>Z4?5>Ѹk? >; ~?c)x=]?u>=?1v>X;>Z4?5w^?A">?1v>X;]?l>= ?Ǭ;OȺ77<ůw?>7?:{<>Z<\{N>F=S4?56ѸS4?56ѸC{>v='v=x>?L<-ZS%"W>z;w6-?ZS%"W>T} e=?opN<?opN<T} e=%~ԽnuS4?56Qgv{>齪{<>ZIxԵ8&~?Խu%~Խ(vѝ|?ԫ>Z4?5>Qѝ|?ԫd3s?<;>Z4?5>Ѹd3s?<;Ca߾xs?`v<>Z4?5>ѸS4?56Ѹb߾z?p6|O@=U>cj4>?opN<%~ԽnuS4?56Ѹ{'>ӫ= {'>џ=S4?56Ѹ+0=S4?56Qb{/>+0=zrͪ; 9>x: ewS4?56Ѹzd:ew]?* B>Z4?5>QS4?56Ѹ\1f?Bb{/>~?_yD}? zrͪ; 9>D}? F?it%zrͪ; 9>zrͪ; 9> F?it%x: ew"?jҼEa=^~?e2=zrͪ; 9>zrͪ; 9>^~?e2=R~?)?(;+[<{?y@F>wQ|=e~1=C~=Eψ=zrͪ; 9>{iv Lw snO>v役dw#;缻 snO> snO>#;zrͪ; 9>#;O~=zrͪ; 9>zrͪ; 9>O~=DH?=T1ݼ{?y@F>Dh?w >xQ|=10(>xQ|=1<0(>Ve{UAxQ|=1<xQ|=1<M#񰻼;u`zrͪ; 9>;u`?opN<zrͪ; 9>zrͪ; 9>?L<-"?jҼEa=?opN<cj4>"?jҼEa=;u`?>>D?]M?opN<K~?#d=E=Q}?ѹZw ?opN<?RIѸm}?]ѹ K~?#d=E=pmIMxQ|=1<)x}Lwg|=1<(x?#,#,S?)Y>}\??> ~Z=[.}`>.= ~Z=,rk_\=.}>}.=[.}`>.=r[=TԻ]D;S?)Y>?]8<?)<[x}?.S?)Y><?)<[?:x}?.p-}3> .=x}?o5?5?p-}3> .=?e;ex}?o@w}?'>L<?e;e.}>}.=x}?.`>P(>?]8<`>P(>~"==y}?\/<4)>~7=Z<=wQQ?y}?\/<4)>x}?.|?0YCz=yQKQ??e;e|?0YCz=x}?.p-}3> .=M\>}???@w}?'>L<.}>}.=+}.= >aM>???}\??>+}.= >.}>}.=S?)Y><@&>XM?}\??>K~?#d=E=?)<[S?)Y><?opN<v~FܽUGL?אº? ?Ǭ;OȺz;,;x-?S4?56ѸS4?56Ѹ?opN<z;w6-?>Z4?5>Ѹ ?Ǭ;OȺ<?opN< {'>џ=6|O@=U>%~Խnu6|O@=U>?opN<%~ԽnuGL?אº?K~?#d=E=?L<-C~=Eψ=?o;|.]<zrͪ; 9>?(;+[<xQ|=1<zrͪ; 9>zrͪ; 9>xQ|=1<M#xQ|=1.=~R?AN?Z?$IΪ>K'?|U'?S^h?~> f>e?\ g>K'?|U<>pҚ>^ŷh?~>܊ +Z?!0K{??<_F?U#F?U#W=nT?<??#$q=7%DX?_=?.=ߑj?(k>?<_<?.=W?X?f=8 }?vi=>3{?*j=;>! {?j=N<>+03{?*j=;>O }? vi=M> +Z?!0K{?! {?j=N<>3?f3=n)H?^+Z?0/q{?8 }?vi=>! {?j=N<>f?T[=>8 }?vi=>*-Z?\/x?f?T[=>4O? k?O }? vi=M>ד6J? >4>3{?*j=;> ?07>+0f?T[=>?^OP;4O? k?)l?ĝ>=?^;f?T[=>~?V6|?^;*l?1>u=T?<?~?V6|*l?1>u=*y? >$q=~?V6|T?<?u=Ms?"!͈=<(?2@?P>B~[?gR>[?nψ=8(?5@?>>2\?nψ=8(?5@?>ˁt?>>2\?>>0\?! >2ˁt?G>`>>ˁt?>?&;n>>`>>`>>?&;n>>@J^ >?W&> >qZ3n3>4^ >qZ3n3cN>i>%,p>@J^>4^N>>)pgR>[?N>>)p[t=ps?.gR>[?A߬ ->oI?JG?:G>f>x >6I? ?N-?zT?JG?9>> ?N-?zT?0f>JG?9>>O/<ʃ= ~A"P/I?A MF!OW=Nb>"`0DH?GGheʽzݾ\]=GNb>"RFT!heʽzݾ\]=GNb>"RFT!OW=Nb>"`0DH?GG MF!{=fXv?>b2O?ؽ>?4>lj0O?N5>=\^?ͽ>q?w4?ͽ>q?w4l5>a^>.?XA-?Υ5>`^dfL=F@(2|>.?XA-?>.?G-?bL="(3|rݾ2A,;?yA,(;?2*?<,K="(4|YW[$C2*?<, D,";?sW[AᄁI&~?FX2*?<,opW [L*U>]?I&~?FXsW[Aテ{=fXv?Q>%]?opW [Lテ{=fXv??ͽ>q?w4u9>}{?QH>d?¶Ѽ6>}?QH>d?h>\?Y״-мP>}?¶Ѽ6>}?>\?ٴwH|='<>\?ٴw?W}>[wH|='J[iSREt?iSRwH|='}.=iSREt?iSR.}>}.=wg|=1M?r=w?NZ=Ҁ?NZ=Ҁ?~^7>ѿF?S>M?d-{>!?~^7>ѿF?NZ=Ҁ?FY=,?:|; ?sQ?- >`!?NZ=Ҁ?-L=>BOc?l:#< ?lQ?Q) (ݽL~?=Y>Nc?NZ=Ҁ?Q) (ݽL~? >@d?-L=>BOc?kp]=~? >@d?Q) (ݽL~?kp]=~?d=fq{? >Ѹ@d?;$F({?d=fq{?kp]=~?ۣ?ݩS?=8(?5@? R<> v?jR>̈=5(?8@?u=Ms?" R<> v?jR> Q<> v?R>[t=ps?. k*?k9?4>r^s?oJ>t k*?k9?4>N>>)pN>2>c(pq*?&9? 4>u=Ms?"(*ur^s?oJ>t >qZ3n3 >Y3|m3]s?tJ>tN>>)p >Y3|m3װ>?&m>}(;|! >2ˁt?lc~Ij

?&T>(ulc~Ij<9>?&Z>ۣ?ݩS?lchpkˁt?ܾCA>vhW?P FMs?T?kW? }|Y'? \5,?Q<{@>fW?> < n>o``_'?ܾiC>< >teW? V>up$+>gb*EK?ɡ=]< (WE;C?(>g?`x=SsE;C?(>g?U?]=- ?w=s`x=SsU?]=- ?L>[T [uz&T?} ? =.]>y? =G]>jy&T?} ?߰j=n>ɺbPT?[ ? A? #?߰j=n>ɺbmj=>b A?+xt?;}P=,?< A?+xt?"J;?>P=ج,?(<P=ج,?(<"J;?>/=W?x }L;?>]??{>/=W?x /=W?x ??B}>SN=es?؁O?S?jS)vb?>=j?f>؁O?S?b< оQ~sb? >ׇ>jbx; ?F(E;N?$+>gbo``_'?x; ?[b,?lb ??B}>I?]>O=gs?I?]>d?G߾uA=O=gs?O=gs?d?G߾uA=/o?Uشd?G߾uA=`휾s?=TY|o?㴾ý)xM^`휾s?=Z)o?PشýxM^fJA?V>휾Os?*=~)bcJ6F?V>ýͯxk^+b]=I?>bJlE?V>/d<,=G?>[b뾭.j<,";| >f>]=I?>۲jK^ @W;n >p>/d<,۲jK^ @Wv?5>?;n >p>|P百sv?5>?۲jK^ @W{P虾Hs 8P[:>3u ?t?@>Л?&/,2H 8P[:>3u ?P0ܙ's&/,2Hd -<> 8P[:>3u ?V>?wpd -<>|P/_2 Ӏs?!QM>7ܾAC\>(jUU?pg3!QM>D-s?(jUU?pg3lþEQ9!QM>잽}*y?_/]>lþF8kjU?2잽}*y?_/]>BL2ٱlþEQ9/랽'y?Ya]>+]HQtBL2ٱzb?}>n,^H8t/랽'y?Ya]>b< оn,^H8tjS)vb?>]=~j?>ۣ?ݩS?]=C _#W ?զS?O;?>G?S=k7 3+Wɡ=]< (WO;?>G?9C?O>f?$'7z+%x,q+]HQt$'7zPVE?+%x,q<9-n<{?WRW\=*IXD?/?cE?9R]=<9-n<{?cE?$'7zWRW\=P*g[D?%?R*=NdT?pBP*g[D?%?BAT?-PVWOn?>VWOn?>BAT?-PQƱX#? CQƱX#? CUf>j NdT?pB@ [>`#?HCl Nt~>)0c[+SY$xq}y0_+z.ZHVtj }y0_++%x,qܾCA> /t?ı\>5>+?r A0t?ܾCA>)L澰+?ӻ?clQ? /t??7jQ? !?l?Q㽚`~?ϑ?7jQ?5>+? !?l?tx=F, +?Gk.Q㽚`~?ϑQ㽚`~?ϑ1!?j?@t6|]G-ݽ-rtl>F8`:0m>, +?Gk.tlG-ݽ-r-ݽ-rPmlfgNW|Z-ݽ-r^:sm_>2cjlgNW|ZܾCA>ı\>V|xZll7ܾAC\>o``_'?{=fXv?>lj0O?X%]?{=fXv?zD;TL&?Q>%]?YU]?S=;,TR&?I ~?^I ~?^;{L,`ξ>2*?<,|C;,TL&?xLddξD>I ~?^{LRξp>bL="(3|2*?<,`2$3z>bL="(3|W}L1Uξ>p23]>N5>=\^ ľ!3jnH>N5>=\^>lj0O? ľ!3jnH>y>]'?>b2O?ľ0j$G>N5>=\^#?ŷ>`6?W?><2?u]9>{?-мP>}?.NP?_Sc=2}?PU=%m8? df?-мP>}?-мP>}?; 1f?u]9>{?u]9>{?؁=2f^?'?>]6?#?ŷ>`6? df?ߩ>>=ƃz?; 1f?>j=fV~?ߩ>>=ƃz?ߩ>>=ƃz?>j=fV~?e>:=+}?x;ʾb?!=j3^Z?_Sc=2/;l?_Sc=2;l?>j=fV~?H?)=V~?y>/;l?)?G8)?>j=fV~?|P > =}?e>_\:=v}?> :u?>j=fV~?l`>v)bZ?K9?Fp=0?|P > =}?DN= C?|P > =}?>j=fV~?DN= C?>j=fV~?> 8u?DN= C?l`>v)bZ?>j=fV~? ?W-O? ?W-O?>j=fV~?ʦ)?n9`7)?K2a=V>M8t\-rH/0;=V>M8t\K2a>P6ӷ"3ȾaFz=5Dm>lP8>P6Fz=5DU?anᾔpPy=51E@} ?D;>+AU?a#~U?anᾔp@} ?D;>+AYg?eĂ>(|~<ο۽6I-K>AR#^o6I-K>K2aAR#^oAeR#K2aO.ݾRfLK2a-rH/0;O.ݾRfLh?n>5?=<9Y>Oe?g><>pҚ>^5?=<9Yh?n><>pҚ>^&?5"95?=<9Y'?S?h<0>Ӛ>.^'?Sv~FܽU?e:jY?3#I[ڪ>v~FܽU'?Z`?I۪>ʜL?㐾Ź?v~aܽ~R?AN? L?ِ ?jY?3#I[ڪ>7W?tN?K~?#d=E=GL?אº?f>e?\ g>~?c#d=sN=7W?tN?>e?Og>N?J<[K~?#d=E= sQ9nO>hHQP?xQ|=1}?wg|=1<֗={?5?Q5? >@d?d=^{?[.}`>.=5?Ѹ5? >@d?5?5?x}?./f?C^=A>v>=d?x}?.^+Z?0/q{?v>=d?/f?C^=A>^+Z?0/q{?-L=>BOc?v>=d?u^??->-L=>BOc?^+Z?0/q{?9w^?}3/>&]?>Q=SI=>Lc? w? >*x}?o-w?2>6<'l?s>ˆ=/f?C^=A>?;왻<)l?ĝ>=Ow?D>d<1?ᬭ;̼= ~?_ex=T?<? ?Ǭ;OȺ< ~?c)x=j?bV(>T?<? ~?c)x=W?X?f=ߑj?(k>_? >n0Z?/s?CX?^=y? >O;u^??->{'`9=z̪"9>>Z4?5>Z4?5>Ѹ4l'=&]?>Q=4l'={'`9=>Z4?5>ѸHx0ʾ(b?hHQP?zrͪ; 9> snO>zrͪ; 9>hHQP? Mp)=U~?Q) (ݽL~?RMuIï2>/wkp]=~?>v#?!#kp]=~?I.2>w>v#?!#W[=p=90?]=w~?v#?!#tY=6zb?[=Bq=/?7>\#?\#}<?FY=,?>\#?\#<2t?Y-L=>BOc?^v=Ze?U>l:#< ?lQ?-L=>BOc?W:ν"a_?>m]<-y?[I]Z)o?Pش̼n̼nýxM^Z)o?Pش]ܼ týxM^̼n]ܼ t+b뾜ýͯxk^[ܼW^ b2]ܼ t[ܼW^ |j<Α,~)b9_ܼX,(< |j<Α,[ܼW^ [ܼ,&<۲jK^ @W |j<Α,\ܼ;쾅c۲jK^ @W[ܼ,&<\ܼ;쾅c|P百s۲jK^ @W5\ܼXb]y|P百s\ܼ;쾅cm]ܼ[I]-y&/,2H}Pۙsڼ.84='&/,2Hm]ܼ[I]-yڼ.84='芾V>wp&/,2Hټ>t銾sV>xpڼ.84='ټ>te>lb芾V>wp[ܼ^ ?We>lbټ>t[ܼ^ ?W^,?<$+>gb9_ܼ(kjU?2]ܼ t?>잽)y?^H]>)\ܼ`?f3=]ܼ t?>Dvb?(>/랽'y?Ya]>[ܼW?^ ?Dvb?(>]ܼ t?>[ܼW?^ ?=j?f>Dvb?(>P<˾j=j?f>[ܼW?^ ?]=~j?>= ? S&W<˾jP<˾j}̡=Q? &W\<;쾅c=< @(Wsy=eus\<;쾅c\<;쾅csy=eusۋ[vzm]<[I]-ym]<[I]-yL>[r![vz =.]>yy]<> t? =G]>jy߰j=n>ɺb]<> t]<> t߰j=n>ɺb[<^ ?W1j=>_b;}P=,?<[<^ ?W[<^ ?W;}P=,?<9_<(6]j þPBS GP>6]`#?HC?ytu%?>89]0XWn? >`#?HC"ɾ܆/ia?*IXD?/?[Wqn?>"ɾ܆/ia?<9<{?*UD?M?~ɾІja?PVE?<9-n<{?CӾ]'0+"?Mg`V|wtı\>Z<gNW|ZӾb'("?8Rm<ܽ6",rMg`V|wt9%?8B=ܽ.Dr8Rm<--?BP +?Kh.ܽ6",r\ܾ `4?n?, +?Gk.--?B\ܾ `4?n?Q㽸`~?8P +?Kh.l]ܾ#Z4?u?+?kQ?Q|`~?\ܾ `4?n? ?-t??7jQ?fӾI_',"?r A0t?l]ܾ#Z4?u?JӾe'E&"?ı\>31t?zʾb?*d˙>{=@8[Z?=8A\Z?P)d3>fD>[W>PU=%m8?s> վY?؁=2f^?> վgY?þC؁=2f^?U=nl8?_Sc=2 վgY?_Sc=2>?8?>վY? s;W<?>?8?7'q;? s;W<?>j=fV~?ܹ;W<~?>>?8?>j=fV~?>j=fV~?>>?8?Sc=j=fV~?3؁e?7'q;?؁=2f^?þC7'q;?7P*;?Lþ?CZb=?L͢þCG8?Zb=?Zf=?G8?X>yXd*;-?v =fw=Ze?U>-L=>BOc?]?l>=4l'=cw=`^e?E>L-P4yXNp,={'`9==L~{}=>`>Op<<>`>+?v!e>6p<<{'`9=yXNp,=*d˙>yXNp,=#kcyX5?*d˙>*d˙>#kcyX5?6p<<+?v!e>D>[>6p<[>*d˙>L-P4j{`_9=F% D=F =-v`9= OW,b nZTTfj*nW>wo?c3fj*nW> EfU?wo?c3wo?c3G x>F"U? ?ۈ8T?G x>F"U?nׁ4 ?>T? ?DT?nׁ4qm.0 >nׁ4nhv\8smn1 ,>fj*nW>{'`9=mO;{'`9=fl)= (  ;T?Z?/¼4l'=%( F:;fl)= H:}v=^e?.F>fl)={6?J?U= H;T?@V?`'¼(6?J?j=fl)= |lYQTqm.0 >fj*nW>om. 7>hw\khj+nN>fj*nW>hw\辴{'`9=hw\ܾF`\>{'`9={'`9=ܾJE`\>&O+ܾJE`\>om. 7>&O+&O+qm.0 >nׁ4qm.0 > ?DT?nׁ4nׁ4 ?>T?G x>F"U? ?ۈ8T?wo?c3G x>F"U?܈ ;F#U?wo?c3ܾF`\>wo?c3b nZTTܾF`\>ܾJE`\> |lYQTqm.0 >R5?>CؽXM~?\:=R?E^>5?>=O^?>vؽL~?&\:=pνJc_?>=O^?>r(5?>pνJc_?> H;=O^?>pνJc_?>}v=^e?.F>#;*d˙>Hx0ʾ(b?{'`9=Hx0ʾ(b?zrͪ; 9>-v`9=l\^;PrA [MUxĺ[xl\^;PruIï2>/wRMI.2>w<2t?Y7>\#?\#uIï2>/w `; W<2t?Yl\^;Pr[`;yV\I.2>w5^;Wr>0]g>;; W9?#G羣<Pb1{%<<PbfVWA<.Pb[`;yV\>?og>9x>?W>um?>m?귽>/l?՝ >_:x>&W>᜾8s?,=5D/?>/l?՝ >\m?hW>`휾s?=/l?՝ >m?g緽˜> ~?TV=᜾s?Ĕ=m?鷽V>mX~?V=13?13>>м ?k K?[ܼW?^ ?.Ѽc=м.?BK?t?\<;쾅c<0]yS<>t?4t?ۋ t t.<=쾁c?]<> t^< ?W.<=쾁c?.<=쾁c?Y`\<c?;m]<-y?[I]S<t>ѵ<tk>5\m]<-y?[I]̼nP<nm>Ѽ[y?IK]>̼n*<5 n>˷Ѽy?Fd]>]ܼ t̼nѼ c?*.>]ܼ tѼ[y?IK]>.Ѽc?=>[ܼW^ ]ܼ tѼ̸Ѽ̸0 t?6_ܼv13cѼ ?W?SѼ>t?m]ܼ[I]-y\ܼ;쾅cѼ3=R?5\ܼXb]ySѼ>t?Ѽ1h3=?ڼ.84='5\ܼXb]yѼIK][y?Lڼՠ4=ݨѼ1h3=?`Ҽ!d]y?Dؼ>tڼ.84='Ѽ3/ c?ټ>tѼIK][y?.Ѽ=쾁c?[ܼ^ ?Wټ>tIҼ{,\ܼc?;5ѼW ?SѼt>m]ܼ-y?[I]\ܼc?;쾃ѼR3=5\ܼy?Xb]Ҽ t>Ѽ1h3=)\ܼ`?f3=5\ܼy?Xb]Ѽ[yIK])\ܼ`?f3=Ѽ1h3=˷ѼyFd]]ܼ t?>)\ܼ`?f3=Ѽ c*.]ܼ t?>Ѽ[yIK].Ѽc=쾗[ܼW?^ ?]ܼ t?>S GP>6]G~n?A=Wn?ϳ>S GP>6]kKG~n?A|þ7B sWdS GP>6]|þ7B坽 j˾ sWdþPB 镽N?lxY?"ɾ܆/ia?VWOn?>G~n?A镽N?lxY?l]ܾ#Z4?u? W\EF?a!坽 j?>--?BrWEF?ua!l]ܾ#Z4?u?뇝T*?_B7eoK Tcj WHF?]!]gA辮VcfӾI_',"?ah]{g3>8Rm<fӾI_',"?kK<?ah]{g3>Nܾm_4?t? sWd<?CӾ]'0+"?l]ܾ#Z4?u?坽 j?> sWd<?þC> վgY?*?W]G(?V]q ?_RW?> վgY?> վgY? E?8?> վgY?f4=\j=xT? վgY?=,;#?ܹ;W<~?`Q9]<?ܹ;W<~?7'q;?`8]<?`Q9]<?7'q;?Z =R?`8]<?Z =R?6c;軾;6c廾k=?yXd*n%?%R>T0WF?}rSW];(軾ǝ-?!ǵTbp(?"Rmλ?@{<#;5-?#<n%?%Rmλ?@{Mwo? :4d ?T?7o?AEi>4o?@t>d ?T?U @R? ?DT?qm.0 >Є R?U @R?qm.0 >nK> qm.0 >b nZTTnK> H)2u{?5_ Pq?S>&Iky?E.Լ"a\>, 2;{?,v:,/?H)2u{?&Iky?Ev:,/?,v:,/?&Iky?{r^yX2?&Iky?Op<<#kcyX5?o~wPTl=.TNr,=~ν.TNr,=L-P4~ν OW,>߾U:XF% D=A߾:rze;=F% D=nׁ4L/y&O+L/y>߾U:X9@#OL+܈ ;F#U?Rnc9QN?܋ ?F$U? Q?Rnc<܋ ?F$U?hw\zzdqzܾE`\>zzdqz9QN?VܾB`\>nׁ41T.hw\$.?k gqZxhw\܈ ;F#U?owx=nׁ4owx=K1 N/nׁ4fj*nW>@~.?_/O?܋ ?F$U?@~.?_/O?owx=܋ ?F$U?s&t:;*w=SZ=dj\(n^>6*:x=9SZ=@~.?_/O?bj,nС>7~?==<T?Z?ü9]~?״=g~?,=<1/?!J?=T?Z?/¼k=ؓ9?(0?r<_? $>=%=~?,s U?Έ=Y="~?&\>V8> U?o=9?8(0?=%=~?=O^?>o=9?8(0? U?oO^?>J;:w?ބ>o=9?8(0? U?vؽL~?&\:==O^?> U?7ֽ{>CؽXM~?\:=tR?'j>~kֽ{x>7u>f"vؽL~?&\:=7ֽ{>R?E^>=L~{}=wJa=2?<>`>-`=?ϓ<{?+SZ=P1>`>=L~{}=6p<mmy?wJa=2?Mwo? :4d ?T?7o?AEi>4o?@t>d ?T?U @R? ?DT?qm.0 >Є R?U @R?qm.0 >nK> qm.0 >b nZTTnK> 8EX;[rmxJ:Zx=8On??.#- #<>0]g>R> 4]d>y^;rj({%<9?#G>4]0X>A<.Pb>4]0X>;; W<Pbfj({%<l\^;Prk ?>>o>>`>E{?Y=19x>?W>W7R?Z>>6f3">6f3"ǩ>;o>9x>?W>պ> {? Y=1>6f3">6f3"{? Y=1>>86k{? Y=1kI>]bV>>86k;پ켃g?Ѽ3=R?1? `>eh?;پ Vg?Ҽ$K]1y?TҼh3=q?x#> d?ѼIK][y?;پ Vg? U d?.Ѽ=쾁c?`Ҽ!d]y?#TڲI?.Ѽ=쾁c?x#> d?&UI?Ѽ,̸5ѼW ?%%'0|!?oYQd>Ѽ0 t>ɈҼW{ ?D>پa@S>Ѽ0 t>oYQd>j?پa'S>ѼR3=ąҼt<>.#nn$ѼR3=D>پa@S>n$Ѽ[yIK]TҼqh3=rMkӿѼ[yIK].#nn$qOKkː‰ҼZc=`Ҽy!d]?+R.|.Ѽc=rMkӿ?R={ҹѼ=?K?‰ҼZc=r?R|Ѽ?K?>Ȳ$?P%-?м.?BK?Ɉ<{ ?W?>$?)(-?E>$?!-?Ɉ<{ ?W?%3>h>qQ?5< ?W?I<> t?>>Q>Q?>>Q>Q?I<> t?D>>@S>a?4t?<3='?j?>'S>a?j?>'S>a?<3='?>$n?<1h3=?<$K]1y?.#>$nn?.#>$nn?<$K]1y? >U d?˷> d?x#>> d?‰<=Zc?&>UI?.<=쾁c?I<{,TڲI?#>TڲI?I<{,)0!?<,εo+0!?!>o+0!?ɈS>5">S>">S>I< t>>:_i"O>4<tV>*<5 n>5$>N^ivO>5$>N^ivO>*<5 n> n`a?e>cida?[>Ѽ[y?IK]>*<5 n>rMk?ӿ>Ѽ[y?IK]>cida?[>qOKk?ː>‰ҼZc?=>`Ҽy?!d]>2K?s>.Ѽc?=>rMk?ӿ>>AK?eq>IҼ3ҷ$?D>-?Ѽ̸;u$?<@-?5Ѽ ?W?BҼqQ?5Ѽ ?W?3ҷ$?D>-?>Q>Q?IҼ> t?ɈҼ{ ?W?1? `>eh?Ѽ>0 t?%3h>qQ?=1 `>ch?Ѽ3=R?ąҼ<>t?ѻ?9{<"4=k=T?v ?dOW?n%?%R"4=k=T?mλ?@{ǵTbf4=\j=xT?ǵTb̡=:@#? 5=j=.T?ܹ;W<~?4=Ij=T?<8 ?ܹ;W<~?T8<?1=cM~?>ݲTV?{RC(>d>7o?AEi>U @R?4o?@t>V?{RC(>d>b ?|"콓SV?SC?%d>>)4b ?|"콓S ?'$콄S >4n@y>K4f0.-nK> n@y0.-U @R?0/-Xi0.?U @R?U @R?hž.?V?SC?%d>wj>l@O?Yx Oq?>wj>l@x Oq?>YFv?8YFv?8v rRq?>h5>Q+4?v rRq?>H)2u{?"j>T-4?h5>Q+4?F0H2j{?퇣|R~U?O/=e?ྜྷ{? Y=1!?uBX{? Y=1wJa=2?wJa=2?<&Iky?v rRq?>xrivX?yXNp,=>86kH<\|?++@~.?_/O?o7wy=)9x=ȻZ=z.?1O?H<\|?++<} '=[>>P5kQQռԺ>#>7knI>~+WQQռćI>׃VG09;TQQռ;<:z#>7kowx=lSIkպ>>k8k;<:}sze;t=>߾U:XأcPE>߾U:X?rN!ycP?R;B];Dw~+Wz>k8kԺ>#>7k(Gt)Cl`sIkmO;*w=SZ= <]|?+ =w?.߀g~?,=<\~?ִ=- =w?.߀!=9?+0?g~?,=(6?J?j=H<\|?++T?*V?¼mO;H<\|?++9]~?״=T?*V?¼ =w?Ҁ9]~?״=I<]|?+,e*=}?&B= =w?ҀL>J? ,e*=}?&B=am=9?+0? =w?Ҁr<_? $>!=9?+0?`e*=}?XA==Y=~?jkV>k>>n?h?3C|>ƻr?:Cr=llx[B\>V{>h?3C|>E+\>,V>=%=~?i?Cp>ƻr?:C?\>Vх>=Hwrƻr?:Ch?3C|>,s U?[B\>V{>r=llx>6f3"$ CU?Ps=[l7ֽ{> U?>6f3"V?{RC(>d>7o?AEi>U @R?4o?@t>V?{RC(>d>b ?|"콓SV?SC?%d>>)4b ?|"콓S ?'$콄S >4n@y>K4f0.-nK> n@y0.-U @R?0/-Xi0.?U @R?U @R?hž.?V?SC?%d> =w?ҀH<\|?++Ժ>#>7kZNs=l-Ժ>#>7kʅ>%f"2ҫ>+J?պ>>k8kr=llx>9J?( =֏w?ӀԺ>#>7kP )COcP?=N0أcPEnI>~+W~=N~=NnI>~+WXQ=X|nI>~+WE{?Y=1XQ=X|XQ=X|-{?Y=1iD>پa@S>{Yb>} -0!?SY >oYQd>)0!?BKuY4o.?SY >&UI?5-K]4l.?} -0!?&UI?ԌJ$X?)K_Z4{p.? U d?Jmz)X?&UI? U d?M%J<҂Ir?ԌJ$X?;پ켃g?M%J<҂Ir? U d?;پ Vg?O}?!J‚Lr?;پ켃g?M%J<҂>Ir?O}?1? `>eh?!J‚>Lr?;پ Vg?05&`>mdh?ԌJ>$X?g Jς>pJr?%3h>qQ?Jm>z)X?1? `>eh?%3h>qQ?)K_Z4?{p.?ԌJ>$X?0$?A-?)K_Z4?{p.?%3h>qQ?3ҷ$?D>-?g,LD9\?nD>BKuY4?o.?2K?s>0L7\?I>3ҷ$?D>-?4K?i>2q?@]>0L7\?I>}Ik?ʐ>2q?@]>>AK?eq>cida?[>2q?@]>qOKk?ː>;b^ba?0g>_)?.:?p3Sq?C]>;b^ba?0g>5,?Ź+:?>p`iwO>5,?Ź+:?MM>^0td>>p`iwO>>:_i"O>QM>`.tgd>>S>QM>`.tgd>0L>7\I>>S>>S>HL> 6\,U>}> -0!?g,L>D9\nD>)K>`4i.?}> -0!?>)0!?5-K>]4l.?&>UI?)K>_Z4{p.?ԌJ>$X?&>UI?&>UI?J>mz)X? >U d?ԌJ>$X?M%J><҂Ir? >U d? >U d?g J>ςpJr?>$n?M%J><҂Ir?k J>:;z?>$n?>$n?k J>:;z?j?>'S>a?k J>:;z?G)>G)>t?D>>@S>a?+>8>It?>>s1Y?D>>@S>a?D>>@S>a?>o>3Y?%3>h>qQ?m>>5Y?6L?a>=>>>Q>Q?>>Q>Q?6L?a>=>>$?)(-?6L?a>=>l>_?p>E>$?!-?>$?)(-?l>_?p>? R+|l>_?p> ??>?+R.|}IkʐZ g??p >?R4|n$Z g??p >qOKkːn$Ñeu2; +??>j?پa'S>Ñeun<n$j?پa'S>Lr 5`wÑeunq ^w0[`>D>پa@S>rT$>*A坽 j˾Q 4vh>}u$l'AH:Ѣ坽 j˾C,> arWY6u}$l-AC,> aG~n?ArWY6ヲu}?4 =Dn?BQC,> a_t}?=?xY?~Gn?Bn/B1?p3?K?zY?ヲu}?4 =XKfkw?K?zY?n/B1?p3?XKfkw?A`\E\EBw"??xY?Q 4vh>lʯ j\˾h<6eE"?_t}c;Xcah]{g3>J/?1^s3#@>Vc0%u}QTct2f>mw#@>Vcn/B1p3ct2f>mw[EF?Q[!7eoK TcQ 4v?hrWEF?ua!ct2f>mw"N v?hʯ j?\>rWEF?ua!u}$?l-A?坽 j?>Q 4v?hrT$?>*A?3H5<?坽 j?>C, a?W6<?}u$?l'A?C, a?7]{3>W6<?ヲu}4 ah]{g3>C, a?=}f34L>K4b4B0o5->)4U= 5f}'f3=h06-}3=o.?0O4-G }f3=<4=Xi0.?<4=V?SC?%d>Xi0.?U<= 5=f=}'f3R?VC(d>=}3 >4Q?UCAd>J`=X?XFv?R9 ,ǩT?>Fv?< 9J`=X?Tj>A!?uBXTj>A[=X?!?uBX[=X?XQ=X|0rԵQ=c|[=X?|L?h[=X? ,ǩT?*?z2?~"*?z2?~" ,ǩT? ^?>;, ^?>;, ,ǩT?XFv?R9[=X?*?z2?~"|L?h*?z2?~"L?5M?_L?g3ИL?V hL?4M?F-6?e$,L?5M?FujF-6?e$,aB?'$;νFuj-6?g!,aB?'$;νo7[^(kgFujJ>]쉌o7[^(kg aB?$oνr=llx5Efp/ݾM>])uZ;ݾr=llxr?FkuZ;ݾ5Efp/ݾr=llxuZ;ݾƻr?:Cp=Fw{sL Cc 1uZ;ݾp=Fw{s5Efp/ݾ.C 1_7b](g5Efp/ݾuZ;ݾL Cc 1M>])5Efp/ݾ_7b](g!^?>u",G`v?37b>~^?Q>?FBv?8h5>Q+4?b>~^?Q>b>~^?Q>h5>Q+4??7*d*?ne>*4?퇣|R~U??7*d*?BA? ?UV>:'>on?=%=~?nO<u׽mZ>v:?Y"΄>u׽mZ>W?|$,>v:?Y"΄>v:?Y"΄>W?|$,> b?E >W?|$,>*;?,?6= b?E > { u?.=*;?,?6= b?E > B u?q='?~ >?F >;?,?Wٛ=*-47?'5>W'?M>? > B u?q='-h 7?s$5>H}>h?(>W'?M>? >WABy??>H}>h?(>&*-`7?)A5>WABy??>*=E}?&B=H}>h?(>BA? ?*=E}?&B=WABy??>BA? ?=Y=~?,e*=}?&B=퇣|R~U?H)2u{??7*d*??7*d*?H)2u{?v:?Y"΄>u:?X"4ۄ>H)2u{?nO:mPkAnO<=N0S?$,>L>J? r=llxM>])[B?2$}<νL>J? JO>M] ݫ>nJ?bH}>h?(>,e*=}?&B=L>J? '? >?J >}>Kh?w'>[B?ƛ$cpνj'?o >? >>J?[B?ƛ$cpν;?l,?ٛ=j'?o >? >-l6?=,;?l,?ٛ=[B?ƛ$cpν;?,?Dܛ=T?$#,>-6?@!,-6?,S?$,>|L?hT?$#,>=N|L?h|L?h=N0cr@MQ=|Dw<} '=QQռ,&iXʖ:>j$iP֖9>QQռ:UG2QԼ8Y4:>Mpv:X I#8TWXWXI#8T_?֣,G09;TH<-+4ﻩ_?֣,CN?Ez?;<:pA/?eC9D/?@9l_Hk;<:ik>=Ul_HkD/?@9lSIk#Gl) أik>=Ulkk(>nUw(6.;~cFԾ)케uObncFԾcFԾL$xfۣPȾjtn;pźTց.ȾjTց.Ⱦj'<h CN?y;n z`e*=}?XA=)`P?SV>93>n?E? ?)`P?p?C}>SV>93>n?oCE&1h?3C|>NgP?)!C0=Hwrh?3C|>=}f34L>K4b4B0o5->)4U= 5f}'f3=h06-}3=o.?0O4-G }f3=<4=Xi0.?<4=V?SC?%d>Xi0.?U<= 5=f=}'f3R?VC(d>=}3 >4Q?UCAd>'-'-~?8+"sԞ>MM>^0td>y%S-?L>8\J>G7+ sc>0L>7\I>RM>/td>G7+ sc>`!r$C?dFK>\4l.?z%S:5?BK>_4h.?r.L>4\S>z%S:5?]о1i?ԌJ>$X?(c!o$C?ԌJ>$X?BK>uY4o.?(c!o$C?vGA}?M%J><҂Ir?]о1i?M%J><҂Ir?ԌJ>$X?]о1i?q >j}?k J>:;z?W-B}?k J>:;z?!J>‚Lr?W-B}?>>s1Y?G)>G)>t?S>Ti?S>Ti?G)>G)>t?q >j}?G)>G)>t?k J>:;z?q >j}?r,r?g.>l>_?p>]gTB[?Y?]gTB[?Y?l>_?p>Q?ov?l>_?p>6L?a>=>U Q?gv?Q?ov?D8L?V>>Њ,?>s ?Њ,?>s ?3L?pl>>>>>s1Y?>s1Y?b>s1Y?.>Qi? <"?35T?bQi?O/'!?F?.>Qi?䶽l+?Z g??p >` ,r?.>` ,r?.> ?? >l>_?p>\Ӽ8|D->Lr 5`w8+="sԞ>t.Լ8|D->Ñeun ?? >ϑduW;t.Լ8|D->G7+= sc>SY >I}%=S0?q ^w0[`>SY >G7+= sc>z%=S:5?BKuY4o.?`!=r$C?z%=S:5?Y>BK_4h.?(c!=o$C?ԌJ$X?=]о1i?(c!=o$C?BKuY4o.?ԌJ$X?=]о1i?M%J<҂Ir?=vGA}?=]о1i?hJ'X?M%J<҂Ir?W=-B}?O}?= >j}?W=-B}?&JłVKr?O}?q= >j}?M%J<҂>Ir?=o>2j?O}?&Jł>VKr?q= >j}?=z> j?ԌJ>$X?a!=i#?D?M%J<҂>Ir?ԌJ>$X?=o>2j?a!=i#?D?BKuY4?o.?|%=}PS?"?ԌJ>$X?BKuY4?o.?a!=i#?D?ay%=RS??L8\?J>S*=6r?>)K_Z4?{p.?r.L4\?S>ay%=RS??RM>/td>r0?(:?'-'-~?,/a ~?2q?@]>/?¯G':?95+=r?>2q?@]>'-'-~?0L7\?I>2q?@]>3+=r?>XKfkw?5/-B1??o3?2/>1?r3?_t}?=Ѹ_t}?=\,>QaѸѸC,> aH$&AѸu}$l-AQ 4vh>Q 4vh>ct2fmw?\,Qa?H$?&A?u}$?l-A?Uk Tv?hQ 4v?hct2f>mwXKf>kw5/-B1?o3J/?1^s3_t}8_t}\,Qa?=}3U<= 5=U= 5U<= 5=}3=U= 5s:?\"uф>b?B >6H?8M? b?E >v u?b=6H?8M?u< u?-=L?4M?u<'-h 7?s$5> u?-=#7_(g&-7?=5>u<72d(ڄg`Au}?%>&-7?=5>oC1A4x?j>72d(ڄgCdq'1*?? ?A4x?j>)`P?*?? ?Cdq'1p^>^?]M>?Ϛ7d*? ^?>;,ה? }f*?s:?\"uф> ^?>;, ^?>;,s:?\"uф>i*?'2?`"p:?`"Nτ>6H?8M?i*?'2?`"zm>>?dڹZݾ2s}7ͽ =m>(Xd5Efp/ݾڹZݾm쬖>=d\Ff/ݾ}PQ8=}8=oCf:ݾnlZ?ݾڹZݾr}47ͽ =}PQ8==X>UE1SX?> ,ǩT?=>HJ`=X? ,ǩT?=>H5=aX?r<RX?>X+T?=/QX?g>J`=X?Լ]"a\> oO$&ioז->j$iP֖9>nNvxLJ>.Y6||r?N}vӇ>3>BoP>.Y6||r?YP|Fr?3>:DoP>:?Ȇþ8?t :?܈þg-?3>BoP>4_?䣾23>BoP> >=FRp4_?䣾24_?䣾2^.>FRQd꾪WX >=FRpv:X ׺^XcFԾ_dtQlkk(>nUlkk(>nU#\?M-=n_dQ羨@/?t C9$\?n=lkk(>nU A/?mɲtC9#\?M-=?#\?M-=>zR ?->z}O @N?+@N?+>zR ؁Ⱦ9j>zR p}bdGȾjTց.ȾjtqbdGcFԾ=}3U<= 5=U= 5U<= 5=}3=U= 5*"sԞ>ߜ=q->z%S:5?ߜ=q->mQ?:% S_5?%$S-?mQ?v ;o$C?ziQ^?1Ӕ VF? s$C? s$C?1Ӕ VF?}оۚi?I4ِ ZF?@ ƾ*k?]о1i?<оki?@ ƾ*k?W-B}?@ ƾ*k?&j}?vGA}?W-B}?&j}? >j}?&j}?*M'>B{? >j}?q >j}?*M'>B{?.>Qi?*M'>B{?|xy>'f?/>JTi?.>Qi?|xy>'f?ලo+?'f?8ԫ_)?.j>?򬶽p+??֙fB[?Y?ԫG)?d>?&S&X?{?֙fB[?Y?֙fB[?Y?Ӟf#X??` ,r?.>q6(X?(x?)Gu?=>` ,r?.>` ,r?.>)Gu?=>-Լ7| ^->+Iu?->H=HCo?)>-Լ7| ^->*= s>=Fo?A>t.Լ8|D->*="sԞ>==t:>=Fo?A>z%=S:5?q=Et냏>*= s>%=$S-?"="W ?>=t'x> =s$C?0ҫ=|"WF ?:%= S_5? =s$C?=V(~??ԫ=n%W ?<=оki?=V(~?? =s$C?<=оki?O=Jپf?ŗ= (V{??W=-B}?O=Jپf?<=оki?=vGA}?#== I{?O=Jپf?= >j}?$= L{?=vGA}?= >j}?y= =E3}?#== I{?O={> j?=j=4}?= >j}?=z> j?=m>Ztj?=j=4}? =#?רD?=m>Ztj?O={> j? =#?D?34=!?9E?L=^>wj?/%=PS?#?34=!?9E? =#?רD?ay%=RS??=7oR?Ii?3=!??E?S*=6r?>=7oR?Ii?%=RS??S*=6r?><.r?SG>=7oR?Ii?'-'-~?<.r?SG>/*=r?>J<-r?/S>[[5\?'-'-~?'-'-~?7\?* s>7\?ߜ=q->*"sԞ><@?C(?݈ ?D??+M/+!?F?݈ ?D?? l+?-`4?+M/+!?F?TO/ !?F? l+?-`4?ڜ<@'?2T?; ?O?T?@lV+?Y4? ?5?,?6>: ?Њ,?>s ?5> ?u5?Q?z?X<@?J(?Q?z?ۈ-?A??Q?"|?5> ?u5?爾?@??m쬖>=dv} 7= 6V>UlPy^.>FRQd3>BoP>>go1+=`>޴o8_=3>BoP> NG}v-ׇ>mNp}vӇ>v:X S\#=S\#=:UbW!tsPj:Ub^.>FRQd꾱u#sZ_t<sZ">HR\f>go1+=^>zl #\?M-=fP>mgvE>gL#\?M-=ٛ>Hkޛ>Nkvp}bdG羂#\?M-=p}bdG羆>zhR vE>gL!Nu֧h>ߜ=q->[[5\?!uh>:p0Z[>ߜ=q->ޜCqǣ>:p0Z[>mQ?p.Zg>Nt43?mQ?mQ?+43?4 PTF?S43?>"l%Z?I4ِ ZF?I4ِ ZF?>"l%Z?U?.$ƾ(k?>"l%Z?b.~fu?@ ƾ*k? uƾh*k?c.fu?&j}?c.fu?.URA=z?&j}?&j}?.URA=z?*M'>B{?UA=fz?x?}>~n?*M'>B{?*M'>B{?x?}>~n?|xy>'f?x?}>~n?A[ ?bO?|xy>'f?%>f?[F ?\O?H)?i>?[F ?\O?D?A#?ԫG)?d>?ԫG)?d>?HD?>#?&S&X?{?D?:#?r[mc?>&S&X?{?q6(X?(x?r[mc?>)Gu?=>r[mc?>\hqd|?>]]Iu?i1>]]Iu?i1>hee|?w>E=/Fo?>hee|?w>">f>E=/Fo?>r=tw>>fؘ>H=HCo?)>q=Et냏>0X>ǁb>O>fw>0ҫ=|"WF ?0X>ǁb>q=Et냏>0ҫ=|"WF ?=C"?0X>ǁb>=V(~??=C"?ի= W8 ?=V(~??`3H> qP?=C"?O=Jپf?`3H> qP?=V(~??O=Jپf??>)zn?3/H> sP?#== I{??>}}n?O=Jپf?#== I{? >VJS|??>S|o|n?==3}? >I|?$= L{?=j=4}?V>_>T t? >I|?ޤ=rm>sj?V>_>T t?==2}?=m>Ztj?v>>_>T t?Mh=V!?A9E?v>>Ztj?34=!?9E?=84?3?v>>]?h>=c?4?P3?$<,r?S>>]?EY>=7oR?Ii?<.r?SG>|>ep?3l>>+]?]c>[[5\?|>Wp?l><.r?SG>ë3\?'1(?|>Wp?l>[[5\?B(!/(?!Nu֧h>"?>iB?3_>rWlq?;l+?=a4?3_>rWlq?9ޓ+}?;l+?=a4? l+?-`4?9ޓ+}?/5> ?u5? K >o>5> ?u5?s>K\ >c>(1?1?"?h>|B?;l+?=a4?HP?>> l+?-`4?ۈ-?A??ՉP?G>>cP?$>>ۈ-?A??V4?8-?t[>"jB?>3_lq?rW >D ?5?3_lq?rWC=9{?))- >D ?5?x >: ?.5?C=9{?))-ۈ-?A??j={?(-_>Ve?yۈ-?A??ۈ-?A??>n e?&}r_Y4?4-?p[>q}kͽ=t"g>}5=+}P8= tZ>j=zm>>?d}V8= 6V>UlPym쬖>=dv} 7= zm>>?dr}47ͽ =lt[>6=#)}n>6?<RX?>=>>F<RX?>*)}n>`6?՚d?G]>Wu?A>>LI6?wT

_t<sZ,>|o,=u0sZfmNp}vӇ>SZ=tqbdGvE>gLٛ>HkHD?>#?]>V>V>r[mc?>OzH?_> ]T>Jb>3x]9? r?qI?Hj>k+ZI?,%Buy9?o? 9?p?k+ZI?,%⾢?=?qI?Hj>3x]9? r?^Q>r=[F ?\O?qI?Hj>^Q>> D[?t4?14!=> D?T^f?'>>#>6?V?MF>=C"?t4?14!=4?R4=oZ?}^?LSf?aO>=3C"?4tZ?{h?4?n54=7;?ǥy>PqZ?{4?G =C"?5KH>Q uP?7;?>=3C"?:?tGa>V?MF>> D[?V?MF>0X>ǁb>=3C"? >VJS|?6?U0??>}}n? >VJS|?5"?ME?6?U0?V>_>T t?5"?ME? >I|?V>_>T t?>L>Rb> V?fD>$? @p>0X>ǁb>:?tGa>j ?xSU=Y>bT>)$?!@>Jo ?yPU=>fؘ>Y>bT>j ?xSU=\hqd|?>O>fw>\hqd|?>w^?=Jo ?yPU=]>V>V>@xH?9k>r[mc?>OzH?_>S5-? <>]mc?>r[mc?>S5-? <>\hqd|?>S5-? <>w^?=hee|?w>r۾"-g]b;(佾6(?>qXb?A=`>"[b?ҽA=1|>p?cl>(<󽾻0(?3>V?Ը>|>p?l>`>"[b?ҽA=i2p|?g= >5>X)?M?=c?4?P3?Ɋ>V)?U?=84?3?LP?[>>4>]?g>LP?[>>v=>4?ӻ3?Z?1|>p?cl>3>V?Ը>$Y?4>]?g>1|>p?cl>$Y?IP?^>>>]?h>2p|?g= >IP?^>>Z?5>X)?M?24M?[=q?=<4?3?Ɋ>V)?U?~!?>36?24M?[=q?/!?EP>i:?dK?"?ɔ>~!?>36??[>:?Hv>>Z?dK?"?ɔ>>$(>bc?Hv>>Z?/!?EP>i:?>v>(>lc?V>_>T t?v>>v>(>lc?>_>T t?Hv>>Z?3M?[=eq?dK?"?ɔ>x=Y84?c3?24M?[=q?v>>Y?3/H> sP?ut>?6?7;?>`3H> qP?> _E?ut>?6?3/H> sP?? A?>>_GaE??>)zn? ?} A?2H> vP?6?U0? ?} A?툟{n?/HI?5*%qI?Hj>⾢?=?qI?Hj>[F ?\O?⾢?=?⾢?=?[F ?\O?>H?[F ?\O?x?}>~n?>H?>H??}>}n?0=:6?x?}>~n?UA=fz?d0z =p6?0=:6?.URA=z?=|r"l%Z?P4X3?A/ݪ;%?/ڪ8%?Ux4ܾ5>>"l%Z?ݾb̾N?>"l%Z? ޾ W̾N?|{7d^?%lWZ?>"l%Z?|{7d^?b.~fu?|{7d^?8\FؼQL?b.~fu?c.fu?~ټSL?pUN@=z?Aؼ TL?=|re8־( Ӆ9? ޾ W̾N?9"?4LJ+.>7p{-Z$f>:p0Z[>NJH>KM|43?4LJ+.>H`&?S43?H`&?4LJ+.>]G?f]G?9"?G?M>8G "?p.Zg>G?M>bE?=>7p{-Z$f>%!?[]>!pg1ZU]>!Nu֧h>%!?[]>!uh>'m3(?%!?[]>%!?[]>'m3(?-۾*g;[Ӿ, C?[}?̲=jR?aU+}?l_>8 Wq?z=n{R?z=n{R?l_>8 Wq? ?Q߾:3?l_>8 Wq?"?>iB??߾83??߾83?"?>iB?$d?$/>"?>iB?cP?$>>$d?$/>$d?$/>.P?>ȵ>z?$F>(\=.P?>ȵ>R4?;-?p[>z?6%F>'=z?6%F>'=Q4?:-?[>M??.U4?7-?[>e>[e?^zr>M??Z>M??Z>n e?&}r[> C?,>n e?&}r=נ{?_-[> C?,}> C?/=נ{?_-sɲR?o=נ{?_-l_q?8 Wz{R?nz{R?n3_lq?rW :3?Q߾3_lq?rW"jB?>83?߾83?߾\"B?>-#d4>$"jB?>K>s>$d/>$$d/>$K>s>z(\=$F>K1>g>//n>21?z'=6%F>z'=6%F> /n>1?M] ?//n>21?ܾȺ<g?=MZ?=MZ?ܾȺ<g?[Ӿ, C?Fܾƺ<0g?ޓ}?Ӿ6XC?<RX?>jd?*(?]?X>ڥl d?))n>I6?Y?kH??*)}n>`6?G]>Wu?A>>Y?E??Y?kH??=]>1Xu?f[>>y?3?Gg>LVfX?1پ8]>Vu?WZ>>?z3?s\>LVfX?1پLVu?WZ>>|{. Q? #3NhX?&پ|{. Q? eq*Ѿ#3}>Ѝrh=e**wѾ|{. Q? >>2rC={ Q?E't?/ʝs<RX?>3޾?=ecd87<W?r>Prw6=ێpY>e*ރѾi/>jF־dTd?ˎY>q>r^j=vP/>ZG־dUd?7NR>j>Y$g?N$ZG־dUd?>j>Y$g?<RX?>S#<RX?>>j>Y$g? e;F%^Ҿ#3ПV6?#3޾=qedU=>@޾=dd:OX?>))n>I6?޾=qed=>_BS5-? <>y`(?&??^?ɶ=^?ɶ=E(?'??Jo ?yPU=Jo ?yPU=*Vݾ8eE=I(?p)??Jo ?yPU=$? @p>*Vݾ8eE=> D[?ut>?6?F?㲾ؼ?9?rGǸ>Uݾ 8e=$? @p>9?rGǸ>>NĢ>Uݾ 8e=> D?>eТ>9?rGǸ>> D?!2 F~>NĢ>-B~K?"Բ_?> D[?>>_GaE?I?岾b?ut>?6?> _E?TD&嬾Oh.?H?ײ#??c A?TD&嬾Oh.?> _E?I?zA?L`?E& ڬi.?6?U0?L`? ?} A?>$(>bc?L`?>$(>bc?_F6=2?L`?;"?SE?XH`?ž6?A7Y0?5"?ME?>gT?_F6=2?>$(>bc?HX>b%`;?>6?b*>gT?b*>gT?/!?EP>i:?"?k>k6?>v>(>lc??[>:?b*>gT?Z?d?5?+?Ɋ>V)?U?$Y?jV8D,?F>d?5?+?"?k>k6?d?5?+?HX>b%`;Ɋ>V)?U?d?5?+??>6?Z?9! }4?>TX8-?Q>>V?ս>+!5z4?H>UT?g=>V?>|$&B?b=9! }4?>`>"[b?ҽA=$B?1==>V?>`>"[b?ҽA=s> m&>$]B?Ie=`>"[b?ҽA=`r>m2>|۾,-g;|۾,-g;`r>m2>2(!?^>S>iZ>+w[3@>%D?U?IP?^>>3@>%D?U?6@>(D?Q?LP?[>>c>Q,41?p|?lg= >I>o^nc>Q,41?>.4k1?tNP?>y>p|?lg= >o>+oo|?*kg=^& >S>[>Tx[S>iZ>+w[2p|?g= >F>

Z?PqZ?{4?^5;?>7;?>h>ni>F>O>Z?4=6"MT^5;?>>#>6?h>ni>^5;?>4=6"MTS>)?nw>B6J?^f?g+>=!M>#>6?S>)?:>)?qZ?R~{i?aF>D>Z?&>t)?Yf?9->uZ?{?HX>b%`;>?>6?^fK?&?㽔>CX>E%i;cK?օ?ۻ>dR>>dR>>dK?"?ɔ>24M?[=q?l+X>%H;1M?[=t?>?>6?RD>>.M?C[=x?xDX>1%E~;-B~4?n54=> D[?+Y}2t4?14!=#qA.~> D[?V?MF>ٽ-~V?MF>rX>!2 F~4?j84$=prؔ\>V?MF>t4?14!=+Y}2rȘ>Qt?O߾ >3?.P? y>?߾ @3? d?$X?>.P? y>.P? y> d?$X?>* ޾)?? d?$X?>z?$F>(\=޾<)??* ޾)??Qz?E F> =ʾ??D?z?$F>(\=M??.ʾ??D?ʾ??D?M??.,O>Dc?M??.[> C?,,O>Dc?,O>Dc?}> C?/̧>xq?[> C?,̲R?j0>>=vq?{h>zvq?rR?jO<>>'dj?̲R?j @3?߾O<>>'dj?O<>>'dj?t >3?O߾> y>.P? @3?߾ dX?>$>v>,P?> y>.P? dX?>$>?<)? dX?>$z(\=$F>>T?)?>?<)?z(\=$F> >AD?2?z(\=$F>M.? >AD?2? >AD?2?MQ?,>Dc?O>M.?[Ӿ, C?,>Dc?O>,>Dc?O>[Ӿ, C? =>yq?>[Ӿ, C?̲=jR?Z=G{q?ڨ>Z=G{q?ڨ> =IjR?Q̲=jR? ?Q߾:3?Q+> O?^Y?o> 9!"?9"?^Y?o>RIJP>\?[rOҾOJ6H݂>^Y?o>]G?4LJ+.>\?[rOҾy>,ZO?i]GX?B\?uҾ9!?]G?y>,ZO? d^ؾd]UCܾ>%W6oc>.G־) 9?Wؾ]y`a?G:]<־y+ 9?gVؾ]u^a?8j>FU?e8־( Ӆ9?5C־`' փ9?j>FU?^HPf&?Y/ڪ?%?H`&?j>FU?j>FU?UoT3oc>Y/ڪ?%?@U=7ܾ>6/N檾u7%?%W6oc>84?#?鬜λ>:u?T=qI?Hj>/HI?5*%B>ou?=rI?pi>λ>:u?T=/HI?5*%?ʐ&?;?~?&?@?4?ϣ#?.k+ZI?,%84?#?鬜qI?Hj>/HI?5*%Buy9?o?gδ*!Z^Q>Ks=m%?@=2?HD?>#?ȩfP`? rQ`?SD?A#?J^N\>r=hnV?SwD?~:#?<%?K:2? ]T>Jb>D?A#?ohvCV?gδ*!Z3x]9? r?hV?9?i?]J>MX>hnV??*"hW?|{7d^?ݾb̾N?`r>m2>G>OAY>2(!?^>%!?[]>G>OAY>bE?=>G>OAY>ןG??ƺ>G?M>bE?=>ןG??ƺ>]1G?ןG??ƺ>>*O?]G?i]GX?>*O?e>:";%p?]1G?e>:";%p?7Dc&?H`&?zq> ;n?]9־0 9?e>:";%p?|?N|*?]9־0 9?]9־0 9?|?N|*?ݾb̾N??f~*?*5Q?lw?ݾb̾N?ݾb̾N?^2Q?w??*"hW??*"hW? ?=gV?|{7d^?|{7d^? ?=gV?Aؼ TL? ?=gV?=|rӁ#?⾢?=?GG>|H?qq+?(>Ӂ#?qq+?(>Ӂ#?>H?!(?!Ҟ>{|/?y(?Hƞ>}/?>H? ?=gV?>H?0=:6? ?=gV?~?&?@?$mm?>p>Buy9?o?⾢?=??7&?>?Buy9?o?nm?>Pmp>">G?1>we9? k?Buy9?o?,>>G?>@xH?9k>">G?1>y`(?&??@xH?9k>@xH?9k>y`(?&??S5-? <>|޾W=Ggd\َYz>N$3\َYz>|޾W=Ggd^eP*?sѾ\َYz>#3!2 F~s0Y*F?㲾ؼ?nv5se=r{Ƙ]>+Y}2r{Ƙ]>>c͢>-B~+> O?\?[rOҾe>:";%p?Hh?}7@>[Y?c>G?oGMǺ>ןG??ƺ>^Y?o>>*O?Hh׍OL@>8V~ҽ[Y?c>4W~8ҽ%E=\?[rOҾ!{4?>̜4M=<|M>n<$B?&1=̜4M=!~4?>|M>np|M><v?m=XjV8D,?F>G|Q>Ͱ>j?G>Ͱ>{r1 BS8.?>|M>n<j?G>Ͱ> {[:1 BS8.?>v?dn=0hj?G>Ͱ>Hd95?;+?"{t- ]X>L%B};{0%CX>E%i;dR>>>{|9J Rz>>{$]X>L%B};dR>> {[:1 {$xDX>1%E~;b*>gT?}-aiT?{$"}<=?6=]2?b*>gT?f|1>?6'=2?}-XH`??6'=2?X{i/Y9>L`?f|1>X{i/Y9>@&謾5k.?p׀q`?P/yRmI>@&謾5k.?X{i/Y9>P/yRmI>F?㲾ؼ??&&i.?F?㲾ؼ?)x?k=:_ȽZ?)x?k=:_ȽQZ?P/yRmI>)x?k=:_F?㲾ؼ?P/yRmI>P/yRmI>BȽƭsZ?H?ײ#?nv5se=>eТ>r# >c{Ij<$<->@Ѣ>nv5se=c{Ij<$<`ݾ!6eۂ=>c͢>c{Ij<$|(?#??8{(j<E(?'??^{?>+>!=|(?)??,>>G?>]{?+>Y=,>>G?>Vpm?>op>]{?+>Y=]{?+>Y=Vpm?>op>$z?AF>!>4?#?qq+?(>Ӂ#?$z?AF>!>$z?AF>!>n+?>#?W~?0=?=}?-Cؼ>T=GV? ?=gV?T=GV?W~?0=?= ?=gV? ?=gV?W~?0=?=(?Þ>Y/?W~?0=?=n+?>#?k(?Ԟ>p/?e>:";%p?,z?<0>=4W~8ҽ%E=zq> ;n?,z?<0>=B?˅*? ?=gV?w?;W?w}?Cؼ>?*"hW?3Q?x;?w}?Cؼ>w}?Cؼ>^2Q?w?|v?ċ;4=1Q?w??I#*?v?!;=?侹*?,z?<0>=|v?ċ;4=4W~8ҽ%E=,z?<0>=|v?ċ;4=">#m1>̜4M=<$]B?Ie=5M=# m&>dh?T־Hm2>at>mFB>m}?cb NN =G>OAY>QE>Od>m}?cb NN =G?oGMǺ>m}?cb NN =(EhN@>ןG??ƺ>4W~8ҽ%E=s>#;j?\?dfҾqq+?(>Ӂ#?4?#?~?&?@?$z?AF>!>B>ou?=~?&?@?$z?AF>!>O}?m=~?&?@?oD?qAj >O}?m=z?+>!>trD?/>Vpm?>op>$z?AF>!>}?&?9?}?/=dPVpm?>op>Vpm?>op>tD?O%澒>}?&/=jV8D,?F>"{t- d?5?+?͡4?#?˸z?y,>!>J˒> u?~=P/yRmI>+Y}2H?ײ#?7@>M"D?X?c>Q,41?o>+og>ni>4=6"MT>)?.u^a?8gVؾ]=c5ooc>Y?E??t?/s}?>B }?>% 't?/ʝsj^?=ZKLVfX?1پt?b/s|{. Q? y?3?Gg>t?/sLZfX?$پ't?/ʝsY?E??y?3?Gg> < }>d?Y?kH??*(?]?X>}(?a?FU>Y?kH??}?>B ?֚AF>l>%g?vP/>ZG־dUd??!֚"DvP/>ZG־dUd?r>Prw6=?!֚"Dr>Prw6=t?b/s?!֚"Dt?b/sg^?=NU?!֚"Dbj^?=JB}?>LB s?ǧ DB}?>LB *(?]?X>?R*(?]?X>>j>Y$g?䴕 aa?-S*z?o0>D=j>FU?j>FU?m+z?\V0>c==c5ooc>,z?<0>=zq> ;n?=c5ooc>=c5ooc>e>:";%p?y`a?G:Zh>-;s?,z?<0>=նk]a?'=zBJL!S=(EhN@>m}?Cb =z rF>v?;=q:|.=X~xVҽ0E=qv?;/=:G.=XT==V?K}?{ټ>z|rF>z|rF>w}?Cؼ>v?!;=}l==$z?AF>!>8xt= f>$z?AF>!>8W~?.\1=?=7x`=~f>7x`=~f>8W~?.\1=?=#TS=jV?({>=$z?AF>!>W}à=2=~~eoX=]{?+>Y=j}V=-]=}=,]=]{?+>Y=({k>ZC=({k>ZC=]{?+>Y=$z?AF>!>}?" o^<8{(j<8{(j<<~~X=i}?>镼 >]{?+>Y=z?qAv=v4s$L=$w?F[!>8{(j<P/yRmI>}?l=^w?F!>+Y}2 .y~I>v4s$L=M-Yl/F `w?F)!>϶z?LE?>hX{KjX9>z?wlM>z?DA?>.yI>Y{Lj?9>W}?à2= .y~I>z?DA?>z?wlM>F|1>m?WB<̽>hX{KjX9>_|1>z?wlM>ؘ}O^Ni{0%m?|<3>m?<̽>L}<={E%L|y1>"}<=m?<׽> {[:1 {0%N}<_SO{r1 ~?-Ӻp|M><n}?b =dh?:־WRف=̜4M=<{G؁=q| 4><>N=f<~?-Ӻp|M><;z?ݝD>Rف=¦}?=PtD?O%澒>%?82?<%?K:2?tD?w2澃 >thOV?hnV?tD?O%澒>kg3l"ZyD?}#澝>}?&/=gδ*!Zg]Z}?&/=ǩT`?- +T`?ͤ}?b=&<%?K:2?>I)?(x?o=9_X>n@i>F>C>Z?U*x?= _:>)?aF>D>Z?ȽQZ?'x?#=R_h>ni>ȽSZ?F>O>Z?h>ni>)x?k=:_ȽZ?S>[>Tx[v?dn=0hI>o^nS>[>Tx[j?G>Ͱ>Av?sfn=[3@>%D?U?j?$G>ذ>S>[>Tx[o>+oj?G>Ͱ>z@>%D?V?I>o^nv?dn=0h*j?G>ٰ>Q}{=AED?#̧=xq?>}{=DD?͚# ?ۚ&?t=Hxq?>=Hxq?> ?&?,>Dc?O>b ?&?>d?S>>c?{>>c?{>>d?S> >AD?2?>d?S>w~?<= >AD?2?G>0?D?? x~?M<0=* >?)? x~?M<0=T?灦N>>?p)?>?p)?OT?`>> y>.P?OT?`>'9>1?> y>.P?> y>.P?q<>j11?O<>>'dj?*>1?}{#AED?O<>>'dj?O<>>'dj?}{#AED?{h>zvq?{Κ#DD? tۚ&?0>>=vq?{h>zvq? tۚ&?,O>Dc? &?>dS>,O>Dc?Ʈ>c?>dS> ʾ2?AD?>dS>x~\=wM< ʾ2?AD? ʾ2?AD?x~\=wM<* ޾)?? x~0=M* ޾)??* ޾)??OT`>.P? y>OT`>%9㾝1?풶V,P?b>*P?I>g8㾖1? Q*1?}{=DD?͚#O<'dj?>{G<~Ž:uɮz1LS=~Ž:u#}<3<ɮz1LS=ɮz1LS=T}U3;#}<3Hh?}7@>tzA5=4W~8ҽ%E=tzA5=p]|(8 =4W~8ҽ%E=V~ҽ?F=\|l7罪=q:|.=p]|(8 =~?Fk=q:|.=q:|.=~?Fk=z|rF>~?Fk=} B>z|rF>z|rF>} B>#TS=jV?} ,>[|b<+>*T=Q?3T;=N?[|b<+>(9x=f>[|b<+>~x(9x=f>~x=~dgU==~Ʃ==){>=){>=~Ʃ==}=,]=~ݓ=s=\~=}.=}=,]=}=,]=\~=}.=~~X=\~=}.=l}?y8=v=~~oX=}?" o^~?+$k =z?qAv=`w?F)!>~?Uk=~?+$k =W}?à2=~?Uk=`w?F)!>W}?à2=e~?Msw=~?Uk=Qz?ky?>e~?Msw=W}?à2=Qz?ky?>~?\=e~?Msw=z?wlM>Q~?r=Qz?ky?>z?wlM>~?94=~?\=m?<̽>~?94=z?wlM>m?<̽>ҡ}y˼B>~?94=m?<̽>ҡ}y˼B>ؘ}O^Niҡ}y˼B>}^~};_!iؘ}O^Ni}^{r1 }^_Gpi^C{r1 {r1 Ipj^7~?~+什~?2-n~?t=/]=_Gpi^C;z?ݝD>Rف=~?@=/]=~?2-;z?ݝD>Rف=|~?N=Έ=n~?t=/]={G<|~?N=Έ=;z?ݝD>Rف=|~?N=Έ=~Ž:u{G<#}<3>WuzB5=.NSt>/XU?szZ5=tzA5=ucX?\|l7罪=/XU?-,J:?p]|(8 =p]|(8 =*a,jI:?~?Fk=-,J:?+xa?~?Fk=~?Fk=+xa?} B>+xa?.nJx?} B>} B>.nJx?[|b<+>.nJx?0s;=X}?[|b<+>[|b<+>0s;=X}?~2qo?~xo?~dgU==fa߫>o?1^B?2N?~dgU==~dgU==,R??wN?~Ʃ==yeA?N?-|E?W?~==~Ʃ==aܠE?֏?~ı=}.=-|E?W?&0Yi?>\~=}.=\~=}.=&0Yi?>}?8==&0Yi?>02Q@}>l}?y8=v=:~?mŽ.<02Q@}>}?Gr=y=~?9Ž<0={=>02Q@}>~?+$k =)e={">~?9Ž_.<~?+$k =H0=Gh1> +={>~?!(k=c=hu0>M~?+𸽿 =~?Uk=`=lDU !?,=˘hW!>~?Rrx=`=lDU !?~?!(k=~?HNsC=*2=DP? 1=oD!?Q~?r=x`=BP?e~?Msw=Q~?r=`=I֨o?*2=DP?~?94=-=Jo?~?\=~?94=d='߂ly}?d=Yo?}˼>X1=߂;z}?~?94=}˼>lɷ3w?0=y}?} >"l:4w?}^9lxX2w?d&lpa}^}^r0l(a_Gpi^Cr0l(al> ̾A c Fp^;C~?@=/]=l>̾ c Fp^;Cn~?t=/]=a/=߆Y?&?l>̾ c|~?N=Έ=b=-Y?=&?~?@=/]=|~?6N=5=E%=eD; ,=Y?}+?|~?N=Έ=y%=4D;~Ž:uH%= >;j}i;4~ ƽt~Ž_.6};}u<6};.NSt>T}U3;<.㾢1?P? G{=BD?F#P?G>9>F?M}{=DD?͚#}{=DD?͚#>9>F?M ?ۚ&?t>9>F?MuFD?o4?. ?&? ?&?uFD?o4?.>d?S>uFD?o4?.x?o>'P<)Ad?H>>d?S>x?o>'P! x~?M<0= x~?M<0=uj?V4>ƃT?>/j?@>?-Ծ\y+?OT?`>OT?`>L?8Ծw+?'9>1?L?8Ծw+?>GP?*>1?.>1?>GP?}{#AED?D>CP?>9MF?{Κ#DD?{Κ#DD?>9MF? tۚ&?>9MF?uFD.o4? &? &?uFD.o4?>dS>uFD.o4?x'P)AdH>>dS>x'Px~\=wMuj4>V x~0=M< x~0=MVƃT>-j@>Lw+?8ԾOT`>OT`>Lw+?8Ծ%9㾝1?Lw+?8ԾP? G.㾢1?>q>aRt>>3};> q>*>1a>.NSt>aRt>> >3a>ucX?>/a>>;I?/XU?`X?v$>;?*a,jI:?>;I?l> _E?-,J:?*a,jI:?l> _E?u_辿a?l> _E?>P"f?.2a?kbt^a?C*>CTf?bJx?H>1Ef?>ď1'o?.nJx?bJx?h$>'o?>E>-m?0o=1X}?c%o=aW}?>E>-m?5_>o?䒥>6E>,m?[>i>!Z?1F>o?Ne>o?[>i>!Z?yeA?N?>>Z? >"?Z0?yeA?N?aIF?~N?#>~"?>Y0?aܠE?֏?3>Њ"?`W0?>N?.>1E?U?eE?Ӌ?>N?.>cYi?>)>N?>>dNtB?#?,7]i?͘>^`y\i?*>dNtB?#?*2?}>+2@}>?tadNtB?#?)e={">?ta廇+2@}>1=Ɓ{f#>~۱g4|>?ta廒`=h >߱lg|>@d={<>,=˘hW!> R=>߱lg|>`=lDU !?(RE>c=hu0>,=lD !?W$-.?a RG>e=JP?&$/.?`=lDU !?x`=BP?fxX?$0.?`=I֨o?h\j{X?x`=BP?-=Jo?mIzj?h\j{X?d=_y}?~TI{j?`=I֨o?0=y}?an=Kt?~TI{j?lɷ3w?B)n=~It?d='߂ly}?lɷ3w?{-%'?HYn=UKt?l(1w?{-%'?d&lpa{-%'?L>,Dr0l(ad&lpaZ$> Dl> ̾A c> yD,>si?h->l>̾ cb=-Y?=&?>×i?x->l>̾ ca/=߆Y?&?о>/%?rH;?X>oi?->y%=8 >;ž>&?:J;?b=-Y?=&?ž>&?:J;?׃>8Zty%=8 >;y%=8 >;׃>8Zt6};6};׃>([t>q>;+t_wUK{I)KjB?Q#?;+t_廬{!!|p,=wUK{I)߱lg|>{!!|p,=;+t_廜߱lg|>{~z)>{!!|p,=߱lg|>OmN>{~z)>,R>K>OmN>౾go|> R=> 5BUYz?Mdm>&$/.?4_U?(RE>&$/.?KuK?y5gU?&$/.?ν!-#:?K:sK?&$/.?bVRK?ν!-#:?+ZyX?bVRK?&$/.?h\j{X?]4t5a?bVRK?$'RIyj? 5s1a?+ZyX?=&kIxj?Kĺn?]4t5a?$'RIyj?νCO_y?Kĺn?=&kIxj?Vɽ}?νCO_y?an=Kt?Vɽ}?=&kIxj?,bn=Ht?47=4){?8Wɽ%}?{-%'?\4Rʡ=({?HYn=UKt?*T"'?Ǽ >}?47=4){?Ǽ >}?4>pdl{-%'?J+G)'?4>pdlZ$> D4>pdlK=KkܾfZ$> DK=uܾWf =oPZ$> D=]aPU=&(Ɋ?> yDZ$> DU=&(Ɋ?X>oi?->V=%(?ڽ?<@&X>oi?->ž>&?:J;?Nڽ?@(&n>Ƙi?->Nƾ>-?sD;?;&VfD Oڽ9@#&PG;(VcA =ߖiʾ;>'?L;?=ߖiʾY=Xs>ԘOȾ>("?L;?ž>&?:J;?=sӘ׃>8Zt=sӘ>z׃>8Zt׃>8Zti>߫z2JD? $I9i>߫z2=e~ 4D?$ I94D?$ I9=e~ > q>=e~ ~Ι=}5=>%q>~Ι=}5=P=^wu>>%q>>%q>P=^wu>+>K.a,>u=_w:tu>4>eJ>(>/aۺ>+>K.a,>4>eJ>v$>;?4>eJ>K=e^Pf>'>;?K=^Bp>=RE ?v$>;? =E ?tT=34?v$>;?v$>;?tT=34?l> _E?tT=34?=]aP?l> _E? =oP?R=-\r^?(>Ű E?(>Ű E?R=-\r^?C*>CTf?T='R5^?4>ln?C*>CTf?H>1Ef?4>ln?h$>$jn?mK=smpSx?h$>E>+m?V=C=~?=CO>_y?>E>-m?=CO>_y?1T=̛>Ԩr?>E>-m?>E>-m?1T=̛>Ԩr?*>: >Z?1T=̛>Ԩr? 5>4>N^? >A> Z?,>>iZ? 5>4>N^?&>\"?U0?4>6>O^?WK= ?fU?#>~"?>Y0?K= ?fU?=!-?#:?#>~"?>Y0?=!-?#:?T=@?"&?#>~"?>Y0?&>\"?U0?T=@?"&?џ>cN?>W=ɦ@?]&?-9=bY?nX?>N?.>=ӠY?S?V=f?~g>)>N?>>桥>N?(>V=f?~g>N| B?#?~T=цf?W>XlIlHq?KjB?Q#?1hB?0#?wUK{I)QIyܰq?k=$bt?P?Gd3=Ϗ>!pu?DP?CLw+?8Ծ3=ӏ>ou?~2=Ï>*ru? v+?*ԾGʿ>0&>=i?Lw+?8Ծ4jx5>Gʿ>0&>=i?Gʿ>0&>=i?4jx5>z>wF>53C?-j@>jx!<لo>z>wF>53C?z>wF>53C?xO<Ýo>%?Q?T>x'PCD话8?%?Q?T>%?JM?>@D;?+]>mP?n>uFD.o4?>9MF?+]>mP?n>_a>;P?>,FȯF?k>$bt?=>9MF?>BP?k>$bt?=k>$bt?=>BP?~2*ru?Ï>>GP??-Ծ\y+?'f3qu?Ï>~2*ru?Ï>L?8Ծw+?Gʿ=i?0&>L?8Ծw+?j?>@>Gʿ=i?0&>yi?q2&>4j?x5>߾1C?C>j?>@>jx?لo>!6߾5C?W<>x?o> <%6>-O?x?o>'PKM?%>KM?@D?;?+]ɾn>mP?-ED? :? 8>F?E+]ɾn>mP?`aɾ>F?Ek=$bt?>9>F?MP?Bk=$bt?>zq>q7mR=e~ q>q7mRu>3rJH~=#~a!=e~ 3>rJMH~Ι=}5=5>4rrHH_>t-OD>~Ι=}5=Ι=O}Fi=_>ZtmhD>G=;^wu>_>t-OD>x>+g>u=_w:tu>G=;^wu>x>+g>G 5>e)I>4>GeU>w>2g>FeL=^e>w>2g>O>{G{?K=e^Pf>FeL=^e>O>{G{?9=ϒE ?9=ϒE ?R>Gz~?tT=34?O>{G{?Q>$@?tT=34?tT=34?Q>$@?:=P?>=P?N>!@?R=-\r^?Q>$@?}O>оc?R=-\r^?R=-\r^?}O>оc?24>$jn?4>ln?P>žc?mK=smpSx?}O>оc?`Q>nt?mK=smpSx?bL=%mpx?`Q>nt?;=~?=j~?Q>ot?V=C=~?`Q>nt?OO>>1s?V=C=~?V=C=~?2R>O>s?h<=BO>Z_y?h<=BO>Z_y?2R>O>s?1T=̛>Ԩr?N>>Os?P>Ϻ>`?1T=̛>Ԩr?1T=̛>Ԩr?P>Ϻ>`?4>6>O^?4>6>O^?O>>I`?cL=^ ? U?P>Ϻ>`?P>?m5=?WK= ?fU?WK= ?fU?P>#?w/=?<=-?m#:?=!-?#:?P>#?w/=?T=@?"&?P>#?w/=?!P> J?ƞ ?T=@?"&?T=@?"&?!P> J?ƞ ?-9=bY?nX?=ӠY?S?R>J?+ ?V=f?~g>!P> J?ƞ ?X#?V=f?~g>V=f?~g>NV?QIyܰq?wUK{I)?%SImq?wUK{I)XyxBN?{!!|p,=XyxBwUK{I){~z)>XyxB{!!|p,={~z)>m ^>XyxBOmN>\m_>-{)>OmN>Cx=>Y1>m ^>49Uz?Cx=>Y1>OmN>NaLcuK?v;Y;>4_U?KuK?3Q1+K*?!l?Y13><ν-m#:?3Q1+K*?KuK?bVRK?NQj1Q*?<ν-m#:?bVRK?OuT?N1N*?]4t5a?OuT?bVRK?gaLĺjn?OuT?]4t5a?Kĺn?6OY~Km?OuT?h<νBOZ_y?6OY~Km?Kĺn?8Wɽ%}?PEA~m?h<νBOZ_y?Vɽ}?P >}?PB?}?렾AK&91PB?}?렾AK&914>pdl4>pdlI&'81K=KkܾfI&'81O>rPK=KkܾfldL=kܾfO>rP>=P=]aPR>APU=&(Ɋ?O>rPj> 6%U=&(Ɋ?U=&(Ɋ?j> 6%Oڽ9@#&"Sڽ<@^&j> 6%J;&VdD j> 6% O>\`ݾJ;&VdD J;&VdD O>\`ݾ=ߖiʾ==iʾP>$\CVݾ=sӘP>$\CVݾq>eqPR=sӘ=sӘq>eqPRi>߫z26L6?=օG&?=TjRM?~2=Ï>*ru?s<>6L6H&?>օ߾i3C?9>=hR?(5p?O> _a>;P?>߾1C?C>%6>-O?s<>%6>-O?Y_ɾ>P?s<>s<>`aɾ>*ru?+]>mP?n>Px>2at?===}eR?9w>et?=2{u?>$= SR?T=}eR?9~2*ru?Ï>6L6H&?>օ'f3qu?Ï>Gʿ=i?0&>nM6e&?ʅK6H&?Ϳ,i?BN&>a߾+C?z_>~2=Ï>*ru?Gʿ>0&>=i?nM6?ʅe&?˿>T&>5i?z>wF>53C?nM6?ʅe&?6L6?=օG&?z>wF>53C?p?O> >9>h3C?%?JM?>p?O> p?9D>%?R?\>Y_>P?>L&414d?>`iM<.>l?ZcO>rP4d?>O>rP F&;14d?>Pl?;me~j> 6%l?Zcj> 6%O>rPtl?Z`9k?۔ `% O>\`ݾ8Rl?0n} O>\`ݾj> 6%qPl?*z}am?ҷ[Xq>eqPR9k?۔ `%q>eqPRP>$\CVݾ9k?۔ `%;vk?Ǿ!3=5>4rrHHam?ҷ[Xu>3rJHq>eqPRam?ҷ[XSk?[x>w>2g>tk? Ǿ<4=x>+g>_>t-OD>tk? Ǿ<4=8uk?DǾ\3=_>ZtmhD>>r Hw*k?YV9Yy>O>{G{?+Vk?@P>O>{G{?w>2g>+Vk?@P> k?-Q>$@?(k?ZUqy>Q>$@?O>{G{?w*k?YV9Yy>j?][LA>}O>оc? k?-}O>оc?Q>$@? k?- j? c>`Q>nt?j?][LA>`Q>nt?P>žc?j?\6>Ii?pw=r>OO>>1s? j? c>OO>>1s?`Q>nt?j? p>gl? ,>>P>Ϻ>`?Ai?1=>P>Ϻ>`?2R>O>s?Ai?1=>l?i>>SN>'?q2=?gl? ,>>SN>'?q2=?P>Ϻ>`?bl?#,> >+K?G>M>!P> J?ƞ ?l?i>>!P> J?ƞ ?P>#?w/=?sl?>$>BK?>K>?k_mN?!P> J?ƞ ?BK?>K>kZ佰XyxBغkǾok_m佦ɸ?XyxBkǾ\m_>k3=kǾXyXxm ^>k3=!l?Y13>Q?kEK>k3=\m_>v;Y;>>k%~^K>3Q1+K*?tk(3s>Q?kEK>Cx=>Y1>N1N*?k]w>PS?jjAo>k]w>NQj1Q*?OuT?jhAЖ>R_~fm?Sn*v9>j"AL>OuT?6OY~Km?`iM<.>PB?PB?Sn*v9>PEA~m?P >օs<>9S>P;fI> |>>&s<>|>Jɘ:VB?^=s<>Is2<6>:VB?^=9S>P; 3]2?r{?T-TjPM?sAST-TjPM?2fU>2fU>TgZTM?,/bg8?TgZTM?r{?,/bg8?_M?}IԾ>k>C0?6L6?=օG&?nM6?ʅe&?k>C0?T-TjPM?Kh>F0? >[53y?TgZTM?T-TjPM? >W5y? 3]2?6L6?=օG&?p?O> AbM?"EԾ>l?>̊J|? >p?O> |?̙v >(W?uZ=R?p?O> p?O> W?=]=?AbM?"EԾ>&>a2?13?%?S=hR?(5 =fR? :?%?Sp?O> ?%?SE,? p?O> E,?̊7S>M;p~/? 6L6H&?>օ6L6H&?>օp~/? =hR?(5"/?]  ʚy?5 =fR? :=hR?(5 ʚy?5&>a2?13.n>r韴>XbN>GplIj=¾.n>r韴>dieK<>XbN>Wp^s>.n>r韴>GplIj=¾Aqpt>jA>.n>r韴>p@U_>܄jA>Aqpt>#po_>Єk 9t>jA>kJ>Fk 9t>p@U_>܄kJ>FQ?kEK>k 9t>1u%>X#}Q?kEK>kJ>F1u%>X#}3k)=>k%~^K> kX>|<˛k>Z=1u%>X#} kX>|p=2kAǾm kX>|p=kZ?kLǾ!ßnm>dX>kZO)u5>p=ßnm>dX>K?>z>5k$[@>E?>K?>z>ßnm>dX>K?>z>l?i>>J>eE?I>J>eE?I>l?i>>g?gϾl?i>>gl?,>>g?2QϾg?gϾgl?,>>+>Ai?1=>+ j? c>++ q?&Q= j? c>j?\6>+ q?&Q= + q?&Q= j?\6>p?P>&j?\6> k?$>pq}>dp?P> "p?P>F k?-Hv?mZ>J. k?$>pq}>W,k?J6[y>0.Hv?mZ>J.W,k?J6[y>op? O>qHW,k?J6[y>+Vk?@P>op? O>qHqp?6C>I+Vk?@P>WLj?N>)Wk?PF>;vk?Ǿ!3=WLj?N>)WLj?N>)uk?WǾ74=o?ƭ>=;vk?Ǿ!3=am?ҷ[Xo?ƭ>=o?->=am?ҷ[XXn?P>'F>am?ҷ[XYk?`a%n?Q>F>Xn?P>'F>Yk?`a%=n?(q>j>Yk?`a%8Rl?0n}=n?(q>j>=n?(q>j>8Rl?0n}s?>ƍ>8Rl?0n}tl?Z`s?Ι>ō>s?Ι>ō>tl?Z`Vb>㋎tl?Z`4d?>Vb>㋎dieK<>4d?>XbN>|>Jɘ5S>@R;W?=]=B[fv? >[53y?x6>^?̘H?8 >A5zy?L]>]H0?W6>j]?H?W6>j]?H?Kh>F0?_>Av.?0)?c>]?,/bg8?ټ?z?zX?,/bg8?6|{?ڼr?X?ټr?X?r{?B[fv?6|{? >[53y?B[fv?ើ)?y.?:VB?^=Q ?L@?WI?'=|>ȘQ ?L@?Q ?O@?w|B>ɘ7_>j]?|>Ș,/bg8?E>:]?Ǻ=7{?x- y?c5x6̘H?^?D y?`5"/?] x6̘H?^?x6̘H?^?c/?1 ힾ)?w.?p~/? WI?'=Ꞿ)?&{.?:0>45]?,>J,?!]H0?W?=]=?>w.?)?>w.?)?:V?^=B?Q>L@? ?W?'=I?e|?$r:>Q>O@? ?Q>N@?ӣ ?|?̙v >:0>45]?,>|?D̙,:>o,?Y45]?,>r{?fI>Ɗ/fF8?k>C0? 3]2?A8 >Z5Yy?|?D̙,:>ndM?F:Ծd>W?=]=??%?Sl?>̊o,?Ya2?13D y?`5?M>:D4:t?p<K q?=3?M>7D7 q?>O=e%?T>,7 q?>O=ep?P>&%?T>,%?T>,xp?P>mk%?[?xp?P>m)Gv?Z>I.dn%??)Gv?Z>I.op? O>qHk%?[?k%?[?op? O>qHX?B??op? O>qHIj?L>X?B??X?B??Ij?L> ?FS?Z1n?\>F>?h[4?>o?ƭ>=?h[4?>?"G?">o?ƭ>=o?ƭ>=9?G?"">Ij?L>?"G?"> ?W?=Ij?L>Ij?L> ?PV?lҀ= ?FS?Z1li>|?ۨ??n?\>F>)?d???h[4?>n?\>F>s?՘>э>jl%?ū>{/?%v>jl%?ū>{/?)?d??:n?@q>u>XbN>m%? >n}/?s?՘>э>Vb>㋎n%K==\ASnli=D$¾XbN>¾p?Gn%K==\AWb>ּ¾p?Gm%? >n}/?GplIj=¾n%K==\AWp^s>p">_,>F4p8n_>;܄n%K==\Aχ>4Wp^s>p8n_>;܄,b?r&k,V>F,>F4,b?r&p8n_>;܄k,V>Fk%t3>?r2u>΋}k,V>F *:?ܾn%0>?ױ2,b?r& (:?ܾk,V>F1u%>X#}n%0>?ױ29kc>Gz< klc>K'ukE>t=9kc>Gz< >W?9_=pl%Q6?Dp>n%0>?ױ2 >W?9_=9kc>Gz<'ukE>t=Jn%5M6?~>ny>X>n*y>X>b?$?J>eE?I>so%}N6?r>)d??ny>X>g?_wϾ||A??m>Z#>E?>^?&?||A??m>Z#J>eE?I>3?M>7D}? -KL:t?5oZ#Xkt[?;Y?Sy?;Y?,/bg8?r{?#))S>=?Ɗ/fF8?SC;Y?#%S>f}=?|>JɘƊ/fF8?K?+-?|>Jɘ#%S>f}=?N?(?V?=|>Jɘ%>;?+Z>W?=]=K?+-?%A;?Z>p~/? :VB?^=Uo?f>"/?] %A;?Z>Uo?f>D y?`5"/?] 5=Re?۾ ͘y?ç5ϱITo?}f>5=Re?۾?%?SD y?`5 >c?"w`=?%?S=e?۾ >c?"w`=,?]E,?c?"w`=? !-?l>e|?$r:>,?]? !-?l>%?{??W?=]=?|?D̙,:>%?'Z>?;?W?=]=????%?Z>$B;?k>C0?(W?uZ=R?>e>Uo?k>C0?%?Z>$B;?>e>Uo? >=5y?k>C0?Xkt[? >[53y?>e>Uo?r{? >W5y?q[?F32?k>C0?I1>k<.7?I1>k<.7?k>C0?4?z(?k>C0?_M?}IԾ>4?z(?4?z(?]M?'GԾB>d?+>AbM?"EԾ>|?D̙,:>d?+>d?+>|?D̙,:>?n߾<l?>̊?y߾̊\O?z>W̾l?>̊?%?SUO?j>S˾SO?ou>˾?%?S>L!?Ь?%?S>2?3>L!?Ь>S!?&>a2?13ѽ^7?P0&>a2?13"/?] $Sҽ"8?/$Sҽ"8?/"/?] ay?p~/? 9S>P;> d?8 ?5S>@R;*i >_U9S>P;|>Jɘmi[>iAi P>j|>Jɘ= Jɘ2fU>= `ON̾>2fU>Sy?[O˾`>[O˾`>Sy?"[0!?r{? 3]2?"[0!?"[0!? 3]2?>=.ś7?;Y?B[fv?q[?cCv?x6>^?̘H?q[?>e>[Uo?W6>j]?H?Xkt[?6>.Y?H?_>Av.?0)?>e>Uo?%? Z>*C;?%>r.?')?>f>Ro?>+q.?,)?Q>O@? ?%?'Z>?;?%?{??Q>N@?ӣ ?%?Z>;;?Q>L@? ?T0>:4]?}+>????-?bp>T0>:4]?}+>???U0>/]?;>C˾a?Z>8˾a?;\>Ǻ=7{?x-5=Re?۾=<8{?ix-x6̘H?^?5=Re?۾ᤌTo?0f>W6H?j]?=e?H۾6H?-Y?tힾ)?~.?ϱITo?}f>%A;?Z>ힾ)?w.?Ro?a/f>ힾ)?w.?Q ?O@?%>;?+Z>K?+-?Q ?O@?%$B;?Z>Q̧ ?K@?7_>j]?K?+-?#CBS>=?h|>]?Q'P?*?7_>j]?ڼr?X?#))S>=?;Y?ڼr?X?#))S>=?ڼ3w?|X?Bv?;Y??"G?">\?{<>K< ?x?a4?N>\?{<>K<,?=M}?.j=4=x?a4?N>x???s}?T6=N5=s}?T6=N5=x???p,g?Ä>>]>x???h%?ȫ>~/?*g?Є>\>p,g?Ä>>]>h%?ȫ>~/?#?w-̓/?i?G,?O/<흀< ?0k3¾p?G?O/@47h%=cA`_44?H:H`4B+g>҂,b?r&H҂*:?ܾ`?*r}= Yk,:?"ܾ+-g>Q}?=0Yk%t3>?r2 *:?ܾ:?r2Q}?=0Yr2"<~r+2W?<_=?g%5>?2n-g>=+2W?<_=@<~r|*g>e0=h%T6?r>+2W?<_=5< Ⱥ;pl%Q6?Dp>n-g>=5< Ⱥ;)d??h%T6?r>J84Z#)d???cũ{A?>9Z#8{84<0<{A?>Y#u ?nM? c?bǑ?H#N?ĺ?H#Nx?P 0K?ĺKN?eѺx? 1K-g? Q/=ھx?P 0Kx?M>D*g?ȷ/=ھ_-g?/=iھx?&M>D?D;$x?M>Du}?5Q>,?(D;Y?D;${?\>,,?ݘ;`Ry?T>],dn%??,?ݘ;`,?ݘ;`k%?[??;1E?sA?? ?FS?Z1+g?c>.(.g?(> ?FS?Z1 ?4?z(?d?7>v)>v ?S?v)>v ?S?d?+>Q?y߾,D?< ??n߾<S˾x>,D?< ?x>,D?< ?8ZO?nh>˾u~7<57?A2?8ZO?nh>˾>L!?Ь7<|7?2?7<|7?2?>L!?Ь=ُk?>>L!?Ь #ҽG 8?r/=ُk?>=ُk?>Cҽq#8?6/k @?]K(?Cҽq#8?6/> d?!@?dD(?k @?]K(?ay?ZWJO?fO?> d?i^>y|KO?iP?wICO?QU?i^>ynCu5?h4?iN>v= {(7 ?-D?J8 ?.D?]O-˾>}Gf1?8?]O-˾>"[0!?}Gf1?8?}Gf1?8?'ׯ@!?=N?L?"[0!?I1>k<.7?=N?L?="O?L?>=.ś7?4?z(??#-?p> >c?"w`=>5˾a?M>3˾\a?JY> >c?"w`==e?۾? ?=@<~r``K<?3?3\?{<>K<?O/K<}?.j=4=?O/>]>gM,D?< ?%9J@?G(?4?z(?)y)>#r ?S?=J?L?v)>v ?S?gM?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< =?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\d>*$\d>*$-?)$\d>*$-?)$-?)$\d>x\d>*$-?x\d>*$-?)$-?x\d>x-?x-?{\d>x-?{\d>{-?{-?~P\d>{\d>{-?~P\d>~P-?~P-?>3\d>~P\d>~P-?>3\d>?3-?>3-?l\d>?3\d>?3-?l\d>l\d>v\d>l-?v\d>l-?l-?v\d>|v\d>v-?|v\d>v-?v-?|v\d>|S\d>|v-?|S\d>|v-?|v-?|S\d>|S-?|S-?|x\d>|S-?|x\d>|x-?|x-?y0\d>|x\d>|x-?y0\d>y0-?y0-?v\d>y0\d>y0-?v\d>v\d>*$\d>v-?)$\d>v-?v-?)$\d>v\d>|v\d>l\d>|v\d>|S\d>l\d>l\d>|S\d>?3\d>|S\d>|x\d>?3\d>?3\d>|x\d>~P\d>|x\d>y0\d>~P\d>*$\d>*$\d>v\d>*$\d>x\d>v\d>v\d>x\d>y0\d>x\d>{\d>y0\d>y0\d>{\d>~P-?|v-?v-?|S-?v-?l-?|S-?|S-?l-?|x-?l-?>3-?|x-?>3-?~P-?|x-?|x-?~P-?y0-?~P-?{-?y0-?y0-?{-?v-?{-?x-?v-?v-?x-?)$-?x-?)$-?)$xI <)Kǒ=]j~?ďK=q=Cz~K= j~?N=< ?ďK=q=Cz~rNYbuI<Ɯ>VJ=TkI<ƜpK==y~>VJ=TkqNc^9VJ=yrKj=rrNYbuKj=rf⾞XeWi=zrggw=R(B@#[Te!⾹Teggw=R(B@gw<@Y(gw=Y(<@=Te!>cwf?@V(>cwf?@V(=XefKjr=XefIR=b+>KjrKjrIR=b+>D֭h >om~>j0DBgVA=r~_=j0DBgR=cbv>VA=r~_=ޢV=~?==gom>:=i?]> >om~>$VA=r~=:=i?]>&S4?&=CV~?=Y=?Y=?<^-Tn?+ψ=Y=?<9=yg?>S?Yψ=9=yg?>z- Q??!8=Ywg?>z=?- Q?z- Q??z- Q??Cz=?Q?!8>Ywg?z=?- Q?eN=.<?9>yg?9>yg?eN=.<?JBOPף;;?K= j~?QBOw;C?N=c<ߗ?OB;?eN=.<?N=c<ߗ?=gom>9V~?0=|0DZ]eJ:V~?f=S?Yψ=Y0D,8hj0DBg&S4?&=AiurZ&S4?&=Bz Q??MjrY棾AiurZz- Q??ggwB@R(z- Q??k>Nzg?>cwf?@V(p*K^=k~?3I4<JBOPף;;?SI><qNc^JBOPף;;?QBOw;C?rNYbuk>Nzg?j Nbɦf⾞Xek>Nzg?9>yg?#[Tev?@V(:=i?]>UA=\q~=X=r?)X=P?<ܬX=.?i9=yg?>R=cbv>#=Te[=Nzg?k>#=Te[>cw=V(f?@=Nzg?k>=Nzg?k>>cw=V(f?@z=?- Q?v=$S(B@Wi=zrz=?- Q?z=2??Q?i=⣾$rmN=P]<_?Ai=Zur>VJ=TkmN=P]<_?mN=.񽠃=?@=_ ?0=]>񽠃=_ ?0=} ?v=]>񽠃=]>񽠃=} ?v=x/>p(=} ?v=?=x/>p(=x/>p(=?=>q=?= ?ऋ=>q=>q= ?ऋ=}%>)d= ?ऋ=dB?@z=}%>)d=}%>)d=dB?@z=>uI=dB?@z=?!h=>uI=>uI=?!h=n>@W9=?!h=?qI=n>@W9=n>@W9=?qI=>@=?qI=?~&=>@=>@=?~&=U>񽠚=?~&= ?@ =U>񽠚=U>񽠚= ?@ =>񽀃< ?@ =#f"?.<>񽀃<>񽀃<#f"?.@<#f"?.<"?@@<"?4]>񽠃=R>= ? =R>=>p/= ? = ? =>p/=10>@D=>p/=R>8=10>@D=10>@D=R>8=>=R>8=4>`mv=>=>=4>`mv=DŽ> =4>`mv=>@p=DŽ> =DŽ> =>@p=>r=>@p=T>*S=>r=>r=T>*S=z> JW=T>*S=>`(J=z> JW=z> JW=>`(J=u>@9=>`(J=퐦>!=u>@9=u>@9=퐦>!=ҟ>@U=퐦>!=U>`N=ҟ>@U=ҟ>@U=U>`N=j>@`N=n>@@*t**tVt VV $;E> <7>;i>$;i>$;7>;>Sz>@"{>kà>@ټ{>7>@kà>@ټkà>@ټ7>@ca>/˼7>@>bXca>/˼ca>/˼>bX?P>񽀢.>bX>S?P>񽀢.?P>񽀢.>SdA> >S7>;dA> :>x>S>3:>xS>3&>nVS>3[>s&>nV&>nV[>sN8> )T[>sA>PoN8> )TN8> )TA>Po>`&A>Po(>:>`&>`&(>:z>@"(>:"$>:z>@"z>@""$>:{>:>x>@x>>@x9>`䄽>>9>`䄽?p9>`䄽v>0鄽?p?pv>0鄽?`8v>0鄽>2?`8?`8>2u ?J>2a> u ?Ju ?Ja> w ?xa> q>yw ?xw ?xq>yt?q>y)>`^rt?t?)>`^r ?e)>`^r>OY ?e ?e>OYr?P]>OYc> Ir?P]r?P]c> I"?hc> IZ>*"?h"?hZ>*? WdZ>*>? Wd"?<#?4T>4#?4p#?T>4T>4p#?>Ap#?.]"?N>A>A.]"?NY>.]"?N!?ؼY>Y>!?ؼ98>x⼉!?ؼ~4?Y'98>x98>x~4?Y'>~4?Y'? 0->>? 0-? WdE> t<>A>񽀃4>񽀃@4>AY>:>xY>98>x:>x:>x98>x⼁>>`(J=T>*S=퐦>!=T>*S=:>x퐦>!=퐦>!=:>xU>`N=:>xn>`N=T>*S=>@p=:>x>@p=4>`mv=:>x:>x4>`mv=R>8=>A:>x>񽀃<:>x>@=>񽀃<>񽀃<>@=U>񽠚=>Z>*:>xZ>*c> I:>x:>xc> I>OYz>@"kà>@ټca>/˼n><:>xE> <:>xdA> E> 7>;>q=}%>)d=>uI=>OY)>`^r:>x)>`^rq>y:>x:>xq>ya> :>x&>nVN8> )T9>`䄽>@xv>0鄽>@x:>xv>0鄽v>0鄽:>x>2:>xa> >2?P>񽀢.dA> ca>/˼dA> :>xca>/˼ca>/˼:>xz>@":>xN8> )Tz>@"z>@"N8> )T>`&R>8=>p/=:>x>p/=R>=:>x:>xR>=]>񽠃=n>@W9=>@=>uI=>@=:>x>uI=>uI=:>x>q=:>x]>񽠃=>q=>q=]>񽠃=x/>p(=>=DŽ> =>r=j>@*V<{>"$>:7>@"$>:_ ?0=7>@鼊7>@鼢_ ?0=>bX_ ?0=>S>bX>=>r=>S>r=h>V<>S>Sh>V$;} ?v=?`8u ?J!?ؼ#f"?.<~4?Y'#f"?.< ?@ =~4?Y'"$>:(>:_ ?0=(>:A>Po_ ?0=_ ?0=A>Po[>s?`8} ?v=?p} ?v=_ ?0=?p?p_ ?0=>_ ?0=[>s>>[>sS>310>@D=>= ? =>=>S ? = ? =>S?@=>S_ ?0=?@=ҟ>@U=j>@@9=j>@V@9=u>@9=h>V<z> JW=h>V<>r=z> JW=u ?Jw ?x} ?v=w ?xt?} ?v=} ?v=t? ?e? 0-~4?Y'? Wd~4?Y'} ?v=? Wd? Wd} ?v="?h} ?v= ?e"?h"?h ?er?P]#?4"?7=T?G?H/;{2-6>/0=Pwf>G6=~?CG?a6=?G?/0=Pwf>-fD>d>q?/0=Pwf>\m>>x>kl?-fD>d>q?-fD>d>q?\m>>x>kl?>ej?g>\m>>x>kl?p>6~LS?>yj?͙>>j?7>n>YIS?go>"> T?>xHS?C@>]x=zc?jm>>ȡT?x>>ܟT?C@>]x=zc?0fQ>j?>C@>]x=zc??/_>"S?MQ>āj?>(Q>؃j?v>?$_>S?>.?E)??$_>S?K?J>@1?>.?E)?>?B)?K?J>@1?[>j?>K?J>@1?e &? >'!?[>j?>[>j?>6 &?>f)!?% ?P),?>6 &?>f)!?u.?j? >% ?P),?>?(,? >v.?Bl?Q>෠>o?U0>v.?Bl?Q>rJ?>pQ>෠>o?U0>෠>o?U0>rJ?>pQ>'?g;?6>rJ?>pQ>v*?5;?0!>'?g;?6>L'?B;?&6>*?6;?z>*?+??74=a6=?G? w<.7?/2?sRd8t?Wt<[7?,2?/Ⱥ>\g?z@Xvt?z@Xvt?/Ⱥ>\g?|!@{?/Ⱥ>\g?9->Y?c!@{?I|!t{?9->Y?e+e|??K9>Y?2u[>k?~efŊ??e+e|??2u[>k?P(~f?2u[>k?tʾ>V`?P(~f?7|f?ʾݲ>`?u% ,?ʾݲ>`?Ѿ>בM?q%z,?%,?Ѿ>M? :7?Ѿ>בM? < ;3? :7? :7? < ;3? ]P#? < ;3?#,=:C?9 KR #? ]P#?#,=:C?- #Mq ?#,=:C?]gFelu?- #Mq ?- #Mq ?lFkn?'>lFkn?QY=?'Z>'>QY=?25#>QW=?s9%q>25#>25#>9%Ԍq>h}D2>9%Ԍq>|tx->h}D2>h}D2>}tۤ>v=+i!<&|tج䰒>}>*޼v=+O*޼žl-Լz(G\w8#Cwd&_8#qrf&Uf&UeFprEH>9qrfRSEH>EH>ΚRũSͫ9%,MoΚRũSžl-Լ9%c4o9%c4ofžlԼW{d;vBOfžlԼ}>*޼W{d;vBOM{?4T$GQ4`c2N{?y4\ dce7aO`pc+T]u=e7aO`e7aO`T]ANWYȾD )TC]G1|@ UȾDZȾD1|@ SGm91|@ =Yh־SGm9j98mY־J~(%u YX־DGlc,(opz(G\wm:ĉcm98#Cw N {?7'5P͎{?6e @G 2N{?y4L xT$GQT$GQL xܖݽDZ!~Lfxi[=MܖݽDZ!ܖݽDZ!i[=MT^i[=Mms=|T^T^ms=|}<(,2c=k=;>K>4s|K>4s"+=fRj>J>Ps,>9/><o1=Vj"+=fRj,>9/><o"F>W{R,>9/><o|'>>&X%F>^RZR"F>W{R|'>>&Xy>r-+@|'>>&X>q ? Fy>X*0@y>r-+@>q ? F >>tL>q ? FB>?1 >>tL >>tLD>D?18l>oNߝUD>D?1>#:? g>?KݟU8l>oNߝU>#:? >&?wA >&:?  >K6?7&?fwAv*?5;?0!>c,?=?Ga=*?+??74=,?=?e`=[.?27?M *?c??3=*?+??74=[.?27?M >h?C[.?27?M I,?1?n>h?C齴>h?C齙H,?1?C{>6 X?%WH,?1?C{)?E%?g¾>6 X?%W>6 X?%W!)?I%?d¾L?H?NLB)?H%?k¾,^>[Dd4 L?H?NL?gH?OmQ>Dd >K6?a>bAdz?k?u >K6? >K6?z?k?u>&?wA|tx->9%Ԍq>Q%=?>h?C෠>o?U0>*?+??74=෠>o?U0>L'?B;?&6>*?+??74=>}h?y>6 X?%W2N{?y4>6 X?%WL?H?NL2N{?y4!NЦ{?4L?H?NL >K6? < ;3?Ѿ>בM?#*=C?ܹѾ>M?!NЦ{?4#*=C?#*=C?!NЦ{?4YkF]s?!NЦ{?4Q%=?AnF_o?Ѿ>M?ʾݲ>`?!NЦ{?4ʾݲ>`?s#X>Gk?!NЦ{?4!NЦ{?4&r\>Jk?9->Y?>h?C!NЦ{?4>o?+<0>!NЦ{?4[>j?>෠>o?U0>෠>o?U0>[>j?>b?&,?l> >K6?>#:? !NЦ{?4>#:? B>?1!NЦ{?4!NЦ{?4D>D?1>q ? F(pd&_EH>Q#=-?!NЦ{?4ztw5>!NЦ{?42X{e;N|tx->ztw5>W{d;vBO>*޼>j?7>x>>ܟT?0fQ>j?>Z>?r ?F3>?>$X!NЦ{?43>?>$X/,> ;>Oo!NЦ{?4!NЦ{?4,>;>Wo>V>s!NЦ{?4/DO`[ȾDL x!NЦ{?4;='=-N!NЦ{?42N{?y4;='=-N;='=-N!NЦ{?4k=!NЦ{?4>J>Ps2oSҫ=ͫ9%,MoW{d;vBOEH>W{d;vBO!NЦ{?4H?EH>!NЦ{?4J~(%u!NЦ{?4[ȾD(pJ~(%uvTȾ!Dj99->Y?4v>og?!NЦ{?42ƺ>g?<7?132?!NЦ{?4!NЦ{?4<7?132?a6=?G?>.?E)?O>j?>0fQ>j?>[>j?>!NЦ{?40fQ>j?>0fQ>j?>!NЦ{?4>j?7>!NЦ{?4a6=?G?U>j?>>j?7>a6=?G?-fD>d>q?e+e|??P(~f?%3,?'y7>25#>| Di2>+;#2m:ĉcm9B sr.ҋc:,;c{5>B srB srO,;={:6>fRS,;c{5>fžlԼfRSe+e|??%,?žl-Լ%,?h}D2>žl-Լžl-Լ~D|2>w=+b~T^|pQ>\>BdJrJ?>pQ>}.?^e?>mQ>Ddm:ĉcm98mY־,;c{5>8mY־1|@ O,;={:6>,;c{5>1|@ )TC]G辘T^/=`Pwg> cݽDZ!/=`Pwg>%;j{5>ܖݽDZ!ܖݽDZ!%;j{5>0GU%;j{5>Tp]I0GU0GUTp]Ipc|!@{?dP݋??vht?~efŊ??žl-ԼsRd8t?sRd8t?žl-Լc:x_?žl-Լ%;j{5>c:x_?- #Mq ?'Z> R#?'>~D|2>9 KR #?9 KR #?h}D2> :7?h}D2>q%z,?<7?XN1=Vj%F>^RZR/=`Pwg>/=`Pwg>%F>^RZRy>r-+@l?d?mQ>DdN;&?E6AmQ>Dd/=`Pwg>8&?7CA8&?7CA/=`Pwg>vv>LPU/=`Pwg>y>r-+@g>?KݟUg>?KݟUmy>]).@ >>tLc,?=?Ga=v*?5;?0!>.?7?պ v*?5;?0!>rJ?>pQ>.?7?պ .?7?պ rJ?>pQ>I,?1?nJ?>`>)?oG%?\¾H,?1?C{w.?^f?^>&?>>&!?\>BdJ&?>>&!?K?J>@1?,^>[Dd4 mQ>Dd#I?MG>1??$_>S?Cm>(y>l?/=`Pwg>,r>GS?/=`Pwg>mQ>Ddn>YIS?~>0FS?\>BdJ@>D=$c?,^>[Dd4 ?/_>"S?P>KG=3c?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123hkl-5.1.7/data/soleil-diffabs.yaml0000664000175000017500000000325515133711150015746 0ustar00piccapicca--- ! - FileName: soleil-diffabs.glb Objects: - Id: 0 Name: base Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 1 Name: delta Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 2 Name: gamma Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 4 Name: kappa Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 5 Name: komega Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 3 Name: kphi Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no - Id: 6 Name: mu Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000] Hide: no ... hkl-5.1.7/data/soleil-diffabs.blend0000664000175000017500001453044415120506330016100 0ustar00piccapiccaBLENDER-v403RENDHZSceneTEST= ''$DEE@vef]wxn "]^Vxў62/ <=8cGC>*'$AAFB=rKKEGC>GC>D?;ENNHGC>GB>GB>?:7 'ZZSGB>GB>GB>GB>62. dd\~MIDGB>GB>GB>GB=*'$6662]UUN)(%DD?zvunJEAGB=GB=GB=FA<u '..*OOOIff^~ٜJHC22/kTTNFFAPPKmlfHD?GB=GB=GB=C?:J''$DDD>q__Xu̕줤ZWQkibwun ZZTed^GB>FB=FB=FB=>:6 ' 7<<7fVVOwxn⢢_]V^[Uzv]\V^\VFB=FB=FB=FB=52/)33/XOOImme~ٟ`]WHEAEC?]]WVTOFB=FB=FB=FB=*'$11-ahh`u͚򤤘b`YDA=nmfpoh 5cc\Ǐ{QNIFB=FB=FB=EA<x883cge^DA=ROJ(&$ oogՏ~~vLIEFB=FB=FB=C?:L772cihaDA:6 )773cig`DAFB=FB=FB==;6ńz姨jhaD@D@9 ($#O=%qliGD@ xxp㎎530-שּׁxzyq,OOI皚|{~nwhMeb<_zJwՏW`bccccccccccccccccuGqC(>F0Ayfd]~~ufe^ DD@ed^'⭭~}tP22._rsj™te`_acccccccccccccccccccccccuGqC(>C(>YDT}a_Ya_X|||tee_SSM441r'~|f ⭮µz 2((%rppg˔𛜐`bccccccccccccccccccccccccccuGqC(>C(>N/Ji_bxy}|vjidSRNCA>LJFba\tska_YKGCFB>)'$^^YGFA uӮ}AxacccccccccccccccccccccccccccuFqC(>C(>L.HB*>zzsttmed_mmgqpj~vjhbD@>9jZZSssjݦbcccccccccccccccccccccccccccvHsC'>B'>L-GB(>sijµ~OLGD@B'>L-HB'>K-G`NZķǻǻ÷wvnD@:vunǻµ=12.d/.+y bcccccccccccccccccccccccccccwHtB'>B'>L-HB'>J+GO.LS8Owwĸ}zVSMD@B'>L-HB'>J+GO.LO.LN.KXBS}yu|{|{tEA=D@<vwwo(CBA=ccccccccccccccccccccccccccccwHtB'>B'>L-HB'>J+GO.LO.LO.LO.KN/JdW^]ZTD@<|{r|y{bb\ 3KJE$ccccccccccccccccccccccccccccwHtB'>B'>M.IB'>J+GO.LO.LO.KO.KO.KO.KR9NuomzFB>IGCJIFUTPdd_ttmy||yw}}uqqj^^XGGB"VUN6ccccccccccccccccccccccccccccwHtB'>B'>N.JB'>J+FO.LO.LO.KO.KO.KO.KO.KO/K\KWzdb\FC?QPMWVSTSPPOKuun||t|wwoED?`_X$$"DccccccccccccccccccccccccccccwHtB'>B'>P0MB'=J+FO.LO.KO.KO.KO.KO.KO.KO.KO.KP4Lkbe}IEADA=>;8@@;uWWP}|tgf_ec]xXWR 󧨛jib //+MccccccccccccccccccccccccccccwHtB'>B'>lBiQ1MJ+EO.KO.KO.KO.KO.KO.KO.KO.KO.KO.KN.JWCS}ytjibD@B'=qEnwJwK4NJ:SN.JO.KO.KO.KO.KO.KO.KO.KO.KO.KO.KK.FkddMJEOLGLKF@DC>741yzpԧyxp))'IlccccccccccccccccccccccccccccwHtB'=B'=P\r[\V|70ALAYJ1KO.KO.KO.KO.KO.KO.KO.KO.KJ+FB(>tplrqiGD?TTNAA<11.h--*[!!D--)KPNHA>:iiaƦv *3ee^ČlccccccccccccccccccccccccccccwHtB'=B'=Pfz^^W~6KW^7BQK.IO.KO.KO.KO.KO.KO.KO.KK,GB'>XJRRPKqri|Ҕ衢zypB>; &_`X{8330n~v퍍iccccccccccccccccccccccccccccxHtB'=B'=Pfz^^W4HS^5IU32AN.JO.KO.KO.KO.KO.KO.KK+GC&>VHPzxqvB?; 3WWPO$WWQgccccccccccccccccccccccccccde{KwB'=B'=Ocw^^W4HT^5IV,6AM-IO.KO.KO.KO.KO.KO.KK+GC&>UFO{B?;;NNH"!b**'\vvn⍍gccccccccccccccccccdgggeda`^ZPT3QB'=Nau^^W4HS^6JV-7B[8YP/MO.KO.KO.KO.KO.KK,GC'>[KT÷ĸ}yC@<Q>>9*)&s PPJecccccccccdfggfdba^[XUTTTTTTTTO~T3QNau^^X4GS^5JW*8A1=KN=X[7YP/LO.KO.KO.KL,HC'?WFQµȼʾǻNLG[662n43/Hoogהccefgfdca_\YVTTTTTTTTTTTTTTTSSSsR{Vn^^X5IU^7LY)8A-?K-@K5>MPK~nlfj//,_=<8R4PYZVTTTTTTTTTTTTTTTSSSzWu\pblgglPUlO_t]\]^^^X3GS_7MZ)7A-?K-@K-@K-@K7=NQ;XX4UL,HC'?K8F$#!t$$"MFE@CjAiԈSSSSSSSSSSzWu\pakhfmbt_y]\]^^^^C`pIhx^^^___[3GS_9P^)7@-?K-@K-@K-@K-@K-?J:=OP=XD)BG3C~yxxpff_YYSKKF9@POI<%;rJtt\obkhfnbt^y]\]^^^^__]\ZXW}UzTxNoPr\\ZX~V{UyRuC_o`;S`*9B-?J-@K-@K-@K-@K-@K-@KDbr98HK5Hwxxpff_ZZTMMH>>:33/a!!G.  ([ZS&6?v^^^^^^\[YX~V{UzSvSwQuRuQtQtRuQtRuQtQtQuQtQuRuQuQuQtQuRuQtKk}0AL-?J-@K-@K-@K-@K-@K4IU^,~0C`oQuQtQuQtQtQtPtQtQtQtQtQvRwQvQuQtQtPtPtQtQtQtPsOrOrOrOrOrOrOsPsOsPsMp;Ud/CN-@K-@K-@K-@K-@K>Yg2DO(4=(4=%+ 禧|{red]|<<8h O33/q "19|C`pYh1EQ-@K-@K-@KB^l9MX(4=(4=(4< C${|rԦvbaZpog}}sR<<7]]Vxឞ    GfvXTyQsOqOqOqOqOqOqOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrMpA^m2HT.ALWwFbr-榧vuul{lldLLF++(O " 'vɇ}ԕ颣jia'%! $  ?YhJk}OrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrOrNqEbs4KX)9C:P^*8A(4= W!"Eyz7 #""OBC=^_WuٛFF@ROIec[{zr茌/,)_GHBqphdc\z렠󊊀ijbIJD|**'O(GGCxxp}vunNKGURLWUO)(&^00,N1(.w++(Y- ;:7ppiꄄ|xwokiaTQLrrj``XIID &6?MoOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqOqIh{5>?:..*X==8r11-Z-z񒒉EE@ 551}kkdㅄ|~tskrqj~~uoogEE@' $T:SaLmOqOqOqOqOqOqOqOqOqOqOqOqOqNpKm}FkvCgp@_jA\jMnOqOqOqOqOqOqOqOqOqOqOqOq8Q_22.v//+n551sYYSPPJ 00-pgf`ڂy~rqi]ZS|qqi#7#2:~;TcLlOqOqOqOqOqOqOqMo:q_%9#""21rOGkvOqOqOqOqOqOqOqPsOqOq7?N!!=..*i (33/t884yVVPcc[* **(baa[ӂz~|{s][T**' )"08z9Q_Ii{OqOqOqbyxx`B_5K 3G} 4JZkj ` UzLlLkRt\_deB_UyZC`Qu Sy Rw V|"{hh$2####$!.0d(_'>"$$$%!^Vacbccabhxe%z%{%{%{%{&{&{&{&|&{&{&|&{&{%y #v ,>ewyxKlt !.T '=zMl'|'|t'|'|t(|(|#w(|(|!/"> 3J| Orfj ` Sxe#t%{"yV3R't;MoWrYp `m [f >eHcdb{ghi^<\Jh(|(|u(|(| u(|(|$w(|(|(8 ,9qAl|FkxRhlXkpXntZkn_fatfOyjR`bcdaa8oMoLg?b;a:^<5  2If(|(|t(|(|!u)|)|%v(y'w-?$@j ll"l%l%l&l&l&l&l&l&l'l'l'l'l'l'k hhf]: wFb)|)| t)|)|t)|*|SuZ%  d l mml&l&l&l&l'l'l'l'l'l'l(l&ljjhgoE s=V*|*}#v)|*}o#o"oPq -Ṟm m n nnl%l'l'l'l(l(l(m%n"nlljjhQj8O*}*}!u)|*}b $  \9m m n oppoooo ppponnlkjj] Y !-MUx`ZUxRsGd i%Bf n n opppqqqqppoonmlkjyL *#@X زn opppqqqqqpponnlhX7M0c ppppqqqqppoolxK!T <%dyK gopqqppl]]: J 79$WD+ iE+ kA) h. Q + GLOBPZ 34"2 ? ? y=unknownWM &_WMWinMan~9<9<9<9<3_OM=_Z_W_Z_[_W_X1=8_X1=+__3?L?L?L??????L=L=L=???= #<zDDATAx9< __ ?ViewLayer ?= ==z?@z?o=`o=?JAfa2_6_6_(_äj(_(_`=J_% DATA =? =DATA`=DATA =`=DATA `== =DATA ==`=DATA = ==DATA =`==DATA `== =DATA ==`=DATA ==DATA(z?`z? =`=DATA(`z?z?z?`==DATA(z?z?`z?==DATA(z?Pz?z? ==DATA(Pz?z?z? =`=DATA(z?z?Pz?`==DATA(z?@z?z?==DATA(@z?z? ==DATAo=`o= =`===Jb=z?z? = =DATA =DATA = = DADA6PEAPEA?? 7767Ob==u`ȉu`(e_DATA = = =CACAXBABA?? YY7Y$YOb==u`Hu`&e( daDATA = =A@D@VE?VE??? Obu`hu`'eDATA(z?4DATA`o=o= =`===Jb=z?z? = =DATA =DATA =)DADAVEAVEA?? Ob5;=5;=u`u`'e(-p>DATA(z?5WSH ?WSAnimationon==z?z?@қ=DATAX= ?DefaultDATA(z?==WSH?WSCompositing.001 = =жz?жz?ӛ=DATAX =?DefaultDATA(жz?= =WSH ?WSGeometry Nodes== z? z? ԛ=DATAX=?DefaultDATA( z?==WSH?WSLayoutg.001 = =pz?pz?@o=@o=՛=DATAX =?DefaultDATA(pz?= =DATA@o=builtin.select_boxuiltin.selectbox1=_DATA1= WM_toolsystem_ref_properties_ensure_idprops2=2=DATA2= builtin.select_boxd_group`3=`3=DATA`3= VIEW3D_OT_select_boxgroupWSH ?WSModeling = =z?z?֛=DATAX ==DefaultDATA(z?= =WSH?WSRenderingg.001 != !=z?z?כ=DATAX !="=DefaultDATA(z?= !=WSH ?WSScripting01!=!=`z?`z? ؛=DATAX!=%=DefaultDATA(`z?=!=WSH?WSSculpting01 "= "=z?z?ٛ=DATAX "= *=DefaultDATA(z?= "=WSH ?WSShading.001"="=z?z?ڛ=DATAX"= -=DefaultDATA(z?="=WSH?WSTexture Paint #= #=Pz?Pz?ۛ=DATAX #= p=DefaultDATA(Pz?= #=WSH ?WSUV Editing1#=#=z?z?ܛ=DATAX#= s=DefaultDATA(z?=#=SNP ?SRAnimation4`= A=z?0z? o=o=DATA `==DATA ==`=DATA = ==DATA =`==DATA `== =2DATA ==`=2DATA = ==2hDATA =`==hDATA `== =ADATA ==`=2ADATA = @==.DATA @=`@==2.DATA `@=@= @=<DATA @=@=`@=<DATA @= A=@=2ADATA A=@=2DATA(z?@z?=`=DATA(@z?z?z? ==DATA(z?z?@z?`==DATA(z?0z?z?==DATA(0z?z?z? = =DATA(z?лz?0z?= =DATA(лz? z?z?= =DATA( z?pz?лz?=`=DATA(pz?z? z?==DATA(z?z?pz?`==DATA(z?`z?z?`==DATA(`z?z?z?`==DATA(z?z?`z?= @=DATA(z?Pz?z?`= @=DATA(Pz?z?z?= @=DATA(z?z?Pz?`=@=DATA(z?@z?z?=@=DATA(@z?z?z?= A=DATA(z?z?@z?= A=DATA(z?0z?z?@= A=DATA(0z?z?`=`=DATA o=o=`== ==3gMT`Z=`Z= = P=DATA = =lCACALCACA??  MM3NgMDATA = P= =AAN99?@::3OM: DATA P= =C@CN)09/9?@0:0:PM0:DATA`Z=mDATAo=o= o=== = =3iM ? ? R= T=DATA R= T=CACAL7CA7CA??  MM3MDATA T= R=jCCFMLL?? MM3iMDATA8 ?se Sculpt`GRDATAo=o=o=`== A=@=1B2 Ȝ= Ȝ= V= b=DATA V= X=/DA DA1`DA`DA??  2212DATA X= Z= V=cCA DA1{DA{DA?? 2212 DATA Z= \= X=DATA \= ^= Z=DATA ^= `= \=`B`B*187?@88BDATA `= b= ^=4C`#C`ã?@ 11BDATA b= `=1B2 ̛=DATA ̛=@@@AHM~/?奾&?H:?`>E:28e?>!u=64?~/?H:?2奾`>8e?&?D:> |@w@?WZ@G"'&h @;?ڊ?E:?@3c @uo依¼|>~A1A64A[h>&w>ٸtϰ> P>>j` B"֟ӷBn2´A(@k?@!=_D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????G? gUpz!oAF:jA\>7?8˔DATAx Ȝ=? AL> ??? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=?? @?=@???@????>??L>??????????DATAo=o=o==`== @=1/@ 2 ? ? d= j=DATA d= f=-DA@DA1DADA?? 221'@2DATA f= h= d=HCp7HCx??/&DATA h= j= f=C\Cx?@V1/&DATA j= h=CpCx  I #<HBJU/&DATAX ?" ?PDATAo=o=o=`== @=`=1- 2 ? ? l= =DATA l= n=9DA@DA1DADA?? 221-2DATA n= = l=HCA\ 6??77DATA = = n=11DATA = =CDC+2 1 1I #<HBJ212DATAX ?" ?PDATAo=o=@= A===31B Μ= Μ= = =DATA = =TDADA`DA`DA??  31DATA = = =cCADA@DA@DA?? 31 DATA = = =DATA = = =DATA = = =`B`B*187?@8833BDATA = = =4C`#C`ã?@ 11BDATA = =31B p=DATA p=DZ?@vףD>3;Q?Fwi?JF>#,TY!e?*=>!o?F>Hwi?TY5;JF>!e?Q?$,,=>?_DA3xt@??N˟QQ !?!>->#,>얼?V>*=poA!oA'>&(?zPiL=>Ph{C G.5DVЦCGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA????????D^6?ᾟ !oA :DATAx Μ=? AL> ??? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SNP?SRCompositing`A=D=z?z?`o=o=DATA `A=A=DATA A=A=`A=DATA A= B=A=DATA B=`B=A=DATA `B=B= B=2DATA B=B=`B=2DATA B= C=B=2hDATA C=`C=B=hDATA `C=C= C=DATA C=C=`C=wDATA C= D=C=.DATA D=`D=C=2.DATA `D=D= D=HDATA D=`D=2HDATA(z?z?A=`B=DATA(z? z?z? B=B=DATA( z?pz?z?`B=B=DATA(pz?z? z?B=B=DATA(z?z?pz? B= C=DATA(z?`z?z?A= C=DATA(`z?z?z?B= C=DATA(z?z?`z?`A=C=DATA(z?Pz?z?`B= D=DATA(Pz?z?z?C= D=DATA(z?z?Pz?`A=`B=DATA(z?@z?z?A=B=DATA(@z?z?z?C=`D=DATA(z?z?@z?A=`D=DATA(z?0z?z?B=D=DATA(0z?z?z? D=D=DATA(z?0z?`D=D=DATA`o=@o=`B=B= C=A=3gMT[=[= = =DATA = =lCACALCACA??  MM3NgMDATA = = =AAN99?@::3OM: DATA = =CCN)09/9?@0:0:PM0:DATA[=mDATA@o= o=`o=B=B= B= C=3iM ? ? = =DATA = =CACAL7CA7CA??  MM3MDATA = =jCCFMLL?? MM3iMDATA8 ?se Sculpt`GRDATA o=o=@o=`A=C= D=`B=1- 2?? = =DATA = =9DA@DA1DADA?? 221-2DATA = = =HCA\ 6??77DATA = = =11DATA = =CDC+2 1 1I #<HBJ212DATAX?" ?PDATAo=o= o=`D=A=B=D=1I2`;<`;< = =DATA = ='DA@DA1DADA?? 2212DATA = = =@C\C.?@V1IDATA = = =`B`B.187?@88IDATA = = ACBC>u"ĨzD)nnJ$DOVUU??FFL= @ VVUIVDATAh`;</ ? ?CompositorNodeTreeDATAo=o=C=`D=D= D=1/G 2 ? ? = =DATA = =-DA@DA1DADA?? 221.G2DATA = = =HCp7HC??/-DATA = = =C\C?@V1/-DATA = =CpC  I #<HBJU/-DATAX ?" ?PSNP?SRGeometry NodesD= H=z?z?o= o=DATA D= E=DATA E=`E=D=DATA `E=E= E=DATA E=E=`E=DATA E= F=E=2DATA F=`F=E=2DATA `F=F= F=ADATA F=F=`F=2ADATA F= G=F=ADATA G=`G=F=DATA `G=G= G=2DATA G=G=`G=DATA G= H=G=dDATA H=G=2dDATA(z? z?D=E=DATA( z?pz?z? E=E=DATA(pz?z? z?E= F=DATA(z?z?pz?`E=`F=DATA(z?`z?z? F=F=DATA(`z?z?z?`F=F=DATA(z?z?`z?`F=F=DATA(z?Pz?z?F=F=DATA(Pz?z?z?`E= G=DATA(z?z?Pz? F= G=DATA(z?@z?z?F= G=DATA(@z?z?z?E=`G=DATA(z?z?@z? F=`G=DATA(z?0z?z?E=G=DATA(0z?z?z? E=G=DATA(z?z?0z?`G=G=DATA(z? z?z?D=G=DATA( z?pz?z?`F=G=DATA(pz?z? z?F= H=DATA(z?z?pz?E= H=DATA(z?z?G= H=DATAo=o=E=`G=G= E=3M\=\= = =DATA = =lCACALCACA??  MM3MDATA = = =AA2?@3O DATA = =CC1)0/?@00P0 ? ?DATAH ? ?MESH_UL_vgroups_DATAH ? ?MESH_UL_shape_keys_DATA\= mDATAo=o=o=G=`F=F= H=1e@2 =< =< = =DATA = =@DA@DA1DADA?? 221'@2DATA = = =\C\C?@11e&DATA = = =`B`B187?@88e&DATA = =ClpXlpXDu÷uC+211??FFL= @ 221e&2DATAh =</ ?GeometryNodeTreeeDATAo=`o=o=F= G= F=F=1B Ԝ= Ԝ= = Ν=DATA = ĝ=TDAhDA[DA[DA?? 1DATA ĝ= Ɲ= =cCAhDAgDAgDA?? 1 DATA Ɲ= ȝ= ĝ=DATA ȝ= ʝ= Ɲ=DATA ʝ= ̝= ȝ=`B`B187?@88B8DATA ̝= Ν= ʝ=11BDATA Ν= ̝=1B t=DATA t=DZ?O7@vף=>2;Q?Iwi?yJF>",,TY!e?"=>0P55z?;>Fwi?SY-;yJF>!e?Q?,"=>}kA)IA??&IϟQQ!?o ?->",>;얼$@N>"=5AAzAz)>(?q:!3h#|={>:!Iw8 C!z÷H7DxBCHB??D^6?ᾟ A8c:{Ͱ>BH9辢HLDATAx Ԝ=L> ? HB? #<zD ?L=>1?L?L?L?????L=L=L=??@?@???@?????>??L>?fff???????DATA`o=@o=o=`F=`E= G=F=B@=@= Н= ؝=DATA Н= ҝ=CA@$DA@0DA@0DA?? DATA ҝ= ԝ= Н=0DA@$DA@0DA@0DA?? B[ DATA ԝ= ֝= ҝ=CC?@\DATA ֝= ؝= ԝ=\DATA ؝= ֝=JC6C?? \DATAx@=9`z?`z?z?z?DATA(`z?7=P=DATA=6 =DATA =positionޞDATA P=positionDATA(z?DATA@o= o=`o=`G= F=E=G=3M'?? ڝ= ܝ=DATA ڝ= ܝ=CACALCACA?? MM3MDATA ܝ= ڝ=jCCFM LL ?? M M 3M DATA8?`GRDATA o=@o=D=G= H=E=1c 2P ?>< ޝ= =DATA ޝ= =9DA@DA1 DA DA?? 221Jc2DATA = = ޝ=HCpA\6??77IDATA = = =CA\66?@7711IDATA = =CpCX+2 51 15I #<HBJ261I26DATAX ?">< ?PDATA = =@DA@DA1DADA?? 221Kd22DATA = = =\C\C?@11JDATA = = =\B_B7Z?@8[8[JDATA = =ClpXlpXDG/G/A+26116??FFL= @ 27271J2727DATAh></ ? = = ?GeometryNodeTreeeSNP?SRLayout.002`H=J=z?=o= p= ^=P+VDATA `H=H=DATA H=H=`H=DATA H= I=H=DATA I=`I=H=DATA `I=I= I=DATA I=I=`I=DATA I= J=I=DATA J=`J=I=DATA `J=J= J=^DATA J=`J=^DATA(z?Pz?`H=`I=DATA(Pz?z?z?H=`I=DATA(z?z?Pz?H=I=DATA(z?@z?z? I=I=DATA(@z?z?z?`I=I=DATA(z?z?@z?I=I=DATA(z?0z?z? I= J=DATA(0z?z?z?H= J=DATA(z?z?0z?I= J=DATA(z? =z?`H=`J=DATA( =p=z?H=`J=DATA(p== =I=J=DATA(==p=`I=J=DATA(==`J=J=DATAo=` p=`I=I= J=H= Jb ^= ^= = =@_m_DATA = =hCACA CACA??     Kb==ea(eae.p>DATA = = =AA?@ Kb==o=o=eaeae/p>DATAo=DPROPERTIES_PT_navigation_baret @<DATA = =nC! nC ?@Kb=l;=o= p== =Heaeaeh.p>DATAo=o=KbPROPERTIES_PT_context(e$$ XB<DATAo=o=o=DOBJECT_PT_context_object?$$ D<DATAo=@o=o=DOBJECT_PT_transformH*e `o=`o=E<DATA`o=DOBJECT_PT_delta_transform= G<DATA@o= o=o=DOBJECT_PT_relations(,en !XI<DATA o=o=@o=DOBJECT_PT_collections,eS "K<DATAo=o= o=DOBJECT_PT_instancingh-e$ #L<DATAo=o=o=DOBJECT_PT_motion_paths(.e6 $o=o=N<DATAo=OBJECT_PT_motion_paths_display6XP<DATAo=o=o=DOBJECT_PT_shading? %R<DATAo=`o=o=DOBJECT_PT_visibilityH/e &S<DATA`o=@o=o=DOBJECT_PT_display$= 'U<DATA@o= o=`o=DOBJECT_PT_lineart(e (XW<DATA o=o=@o=DOBJECT_PT_animatione )Y<DATAo=o= o=DOBJECT_PT_custom_props$={ *Z<DATAo=o=o=RENDER_PT_format\<DATAo=o=o=RENDER_PT_frame_rangeAeLo=o=X^<DATAo=RENDER_PT_time_stretchingA0p=DATAo=`o=o=RENDER_PT_stereoscopy&1p=DATA`o= o=o=RENDER_PT_output@o=@o=3p=DATA@o=RENDER_PT_output_color_managementX5p=DATA o=o=`o=RENDER_PT_stamp7p=DATAo=o= o=RENDER_PT_post_processing8p=DATAo=o=o=RENDER_PT_context$$:p=DATAo= o=o=RENDER_PT_eevee_next_samplingo=@o=Xp=DATAo=`o=o=RENDER_PT_eevee_next_sampling_render$$?p=DATA`o=@o=o=RENDER_PT_eevee_next_sampling_shadowsAp=DATA@o=`o=RENDER_PT_eevee_next_sampling_advancedXCp=DATA o=o=o=RENDER_PT_eevee_next_clamping Ep=DATAo=o= o=RENDER_PT_eevee_next_raytracing Fp=DATAo=o=o=RENDER_PT_eevee_next_volumest Hp=DATAo=o=o=RENDER_PT_eevee_hairY XJp=DATAo=o=o=RENDER_PT_simplify> Lp=DATAo=`o=o=RENDER_PT_eevee_next_depth_of_field#Mp=DATA`o=@o=o=RENDER_PT_eevee_next_motion_blurOp=DATA@o= o=`o=RENDER_PT_eevee_next_filmXQp=DATA o=p=@o=RENDER_PT_eevee_performanceSp=DATAp=p= o=RENDER_PT_gpencilTp=DATAp=p=p=RENDER_PT_freestyleVp=DATAp=p=p=RENDER_PT_color_managementXXp=DATAp=p=p=SCENE_PT_scenek V VZp=DATAp=`p=p=SCENE_PT_unitP  [p=DATA`p=@p=p=SCENE_PT_physics5  ]p=DATA@p= p=`p=SCENE_PT_simulation  X_p=DATA p=p=@p=SCENE_PT_keying_sets  ap=DATAp=p= p=SCENE_PT_audio  bp=DATAp=p=p=SCENE_PT_rigid_body_world  dp=DATAp= p=p=SCENE_PT_eevee_next_light_probes  Xfp=DATA p= p=p=SCENE_PT_animation  hp=DATA p= p=SCENE_PT_custom_propsx  ip=DATAH= =MESH_UL_vgroups_DATAH ==MESH_UL_shape_keys_DATA ^=_mh=h_DATA` p=@ p=o=I=I= I= J= Jb== = =ؑz?x&_DATA = =CACA 7CA7CA??      Kb[=[=eau`@4p>DATA = =~CUC   ??      Kb:=:=Hu`u`?H5p>DATA8=T>T>J=se Sculpt`GRA_DATAJ=!!J=DATAJ=!( ?&p= ? p= ? = ?r= ? o= ? eo= r= r= ? ^o=`r= ? lo= ? Wo=r="r= ? i? (r= ? Po=r= r=`r="r= (r=DATA@ p= p=` p=`H=`J=J=`I=] HJb = = = =HB_hz?DATA = =JDADADADA?? D]rNb==ȡu`Hu`h_X9p>DATA = = =HCHC4 ,??--CsNbDATA = = =CtNbDATA = =CC8} - -I #<HBJ.C..qNbXD_Hu`u`h?DATAX =" ?RDATA p=@ p=`J=H=I=J=_\Jb ڜ= ڜ= P= ^=8p_p_@o=DATA P= R=_DADA`DA`DA??  `Kb==h__?Ap>DATA R= T= P=CCADA1EA1EA??  Kb==_hY|?h?Cp>DATA T= V= R=__aKbDATA V= X= T=lbKbDATA X= Z= V=`B`BJ18'7'?@8(8(7_8(8(Kb&g=&g=p=p=Z|?(Z|??Cp>DATAp=%DVIEW3D_PT_tools_activehĄ?8Z8Z kp=DATA Z= \= X=|CCJ''?@((l_(( Kb = =p=p=Pn=0n=[|?(u`;?:?_`n=@p>DATAp=p=eVIEW3D_PT_transform?e Xmp=DATAp=p=p=VIEW3D_PT_active_toolBBop=DATAp=`p=p=VIEW3D_PT_tools_object_options#ep=p=pp=DATAp=VIEW3D_PT_tools_object_options_transform#LLrp=DATA`p=@p=p=WORKSPACE_PT_mainXtp=DATA@p=p=`p=VIEW3D_PT_view3d_properties p= p=vp=DATA p=VIEW3D_PT_view3d_lockQQwp=DATAp=p=@p=VIEW3D_PT_view3d_cursoryp=DATAp=p=p=VIEW3D_PT_collectionsX{p=DATAp=p=VIEW3D_PT_grease_pencil}p=DATAPPn=n=ItemDATAPn=0n=Pn=ToolDATAP0n=n=ViewDATA \= ^= Z= C C??88_cKbp=p=DATAp=OPERATOR_PT_redo~p=DATA ^= \=_\\ Kb(D_Hu`H_? x=7l(DATA x=DZ?r@vף1q=vwjj?%XZx?ox>M=f4?N?-qw~=jZx?vj?ox>,@I??L9>w>v> jj9 @Vpxoxé>?4@N@-.&q9F5{=ͽH>J4MBXUÛHŒBoTCAHB??D>3;Q?Fwi?JF>#,TY!e?*=>{??-urQQ !?V[>5>#,>얼@H*=4RA{A?????9=1[FK@ѫ:[hg]=?@9=1[FDATAx ڜ=? AL> ??? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????_¦,VSNP=SRModeling K=L=`==p=@p=DATA K=`K=DATA `K=K= K=DATA K=K=`K=DATA K= L=K=DATA L=`L=K=2DATA `L=L= L=2DATA L=L=`L=2gDATA L=L=gDATA(`== K= L=DATA(==`=`K= L=DATA(=P==K=`L=DATA(P===K=`L=DATA(==P= L=L=DATA(=@==`L=L=DATA(@===K=L=DATA(==@=`K=L=DATA(=0==L=L=DATA(0=== K=K=DATA(=0= L=`L=DATAp=`p= L=L=L=`K=3fMS`_=`_= `= d=DATA `= b=lCACALCACA??  MM3MfMDATA b= d= `=AA@N88?@993OL9 DATA d= b=CC?N)08/8?@0909PL09DATA`_= mDATA`p=@p=p=L=`L=K=L=3hM != != f= h=DATA f= h=CACAL7CA7CA??  MM3MDATA h= f=jCCFMLL?? MM3hMDATA8 !=se Sculpt`GRDATA@p=`p= K=K=`L= L=12  = = j= =DATA j= l=DA@DA1`DA`DA??  2212DATA l= n= j=CA@DA1DADA?? 2212 DATA n= = l=DATA = = n=DATA = = =\B@_Bu187?@8878DATA = = =???@11DATA = = =CcCd?@88DATA = =12 |=DATA |=DZ? @vףD>3;Q?Fwi?JF>#,TY!e?*=>{?F>Hwi?TY5;JF>!e?Q?$,,=>kA)IA??ƿ`˟QQ!?>->#,>얼&\?V>*=BA{A%>`(?ӈ|泞=8CnNG‚7Dioñ6CUGB??D>3;Q?Fwi?JF>#,TY!e?*=>{??ƿ`˟QQ!?>->#,>얼&\?V>*=BA{A?????D^6?ᾟ {An:DATAx =? AL> ??? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SNP"=SRRendering9 M=N=== p=p=DATA M=`M=DATA `M=M= M=DATA M=M=`M=DATA M= N=M=DATA N=`N=M=2DATA `N=N= N=2DATA N=N=`N=`DATA N=N=2`DATA(= =`M= N=DATA( =p==M=`N=DATA(p== = N=`N=DATA(==p=`M=M=DATA(=`==M=`N=DATA(`=== M= N=DATA(==`= M=N=DATA(=P==M=N=DATA(P===`N=N=DATA(==P= N=N=DATA(==N=N=DATA p=p= N=`N=M=`M=3M `=`= = =DATA = =lCACALCACA??  MM3MDATA = = =AA|?@3O DATA = =CC|)0/?@00P0DATA`=mDATAp=p= p= M=N=N= N=1_ 2L $= $= = &=DATA = "=9DA@DA1DADA?? 221F_2DATA "= $= =HCHC4 ,??--EDATA $= &= "=11EDATA &= $=CpCH+2 11 11I #<HBJ221E22DATAX $=" ?PDATAp=p=N=M=`N=N=1a2 = = (= 4=DATA (= *=@&DA@DA1DADA?? 2212DATA *= ,= (=1 DATA ,= .= *= O=DATA O=DATA .= 0= ,=DATA 0= 2= .=@C\Ch?@V1aDATA 2= 4= 0=\B_Bh187?@88aDATA 4= 2=DD?\;W?21a2DATA) =) o=d3addA>Hz?>>6?????@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8@R<\=99~9?|N)7 D7a4B8~7(/78&^8a47F7>7|N)8F7m7(/7~7^c7m7$7)7e7&^7)7a47m7a47~7co7 7a47$7CI7&^7Ax7&^7Ax7Ax7m7|N7X7a47&^7Ax8Ax7^c7|N7$77a47h897+7 7h8CI.8a4B8f9JiT::;HI;G;SL;(GE;(I;@;ϧD;ϧD;QE;޼A;@;C;B;,~@; <;|H; :;zB;C;!?;"<;A;;;YO;Rf;p;1z;;;1v;_;wG;&^;S;; ;״;;W";X;B(;&;-;.;8;T4;b[*;;ϝ;&::S8l:c8??d#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????d??fff? SNP%=SRScripting1`O= C=@=p=p=#p=DATA `O=O=DATA O=O=`O=DATA O= @=O=DATA @=`@=O=DATA `@=@= @=2DATA @=@=`@=2DATA @= A=@=2RDATA A=`A=@=RDATA `A=A= A=2tDATA A=A=`A=tDATA A= B=A=1DATA B=`B=A=1DATA `B=B= B=DATA B=B=`B=1DATA B= C=B=DATA C=B=1DATA(@==O=`@=DATA(==@= @=@=DATA(=0 ==@=@=DATA(0 = == @= A=DATA( = =0 =@= A=DATA( = = =`@=@=DATA( =p = =`@=`A=DATA(p = = =@=`A=DATA( = =p = A=A=DATA( =` = =O=A=DATA(` = = =`A=A=DATA( = =` =`O=A=DATA( =P = =`@=A=DATA(P = = =O= B=DATA( = =P =@= B=DATA( =@ = =A= B=DATA(@ = = =`O=`B=DATA( = =@ =A=B=DATA( =0= =`B=B=DATA(0== =`B=B=DATA(==0=O=B=DATA(= == B= C=DATA( =p==B= C=DATA(p= =B= C=DATAp=p=`@=`A=A=O=3sM`a=a= 6= :=DATA 6= 8=lCACALCACA??  MM3ZsMDATA 8= := 6=AAEE?@FF3OYF DATA := 8=CC)0E/E?@0F0FPY0FDATAa=mDATAp=p=p=@=@= @= A=3SM '= '= <= >=DATA <= >=CACAL7CA7CA??  MM3MDATA >= <=jCC1FMLL?? MM3SMDATA8 '=se Sculpt`GRDATAp=` p=p=`O=`B=B=A=01== P= R=DATA P= R= BADAsDADA?? tt0DATA R= P= DD@ DACC*10?? 1101DATA0=DATA` p=@!p=p=`A=@= A=A=3uQM(=(= T= V=DATA T= V=CACALCACA?? MM38QMDATA V= T=ECCbFMLL?? MM3u7MDATA8(=`GRDATA@!p= "p=` p=A= B=@=`@=21  B=B= X= ^=DATA X= Z=CADADADA?? 21DATA Z= \= X=AADA@DA@DA?? 21- DATA \= ^= Z=11.DATA ^= \=D@{DC~XDp6ALnuD #<zD 21.DATAXB=* PT|?DATA "p=#p=@!p=B=O= B= C=01 ƞ= ƞ= `= l=DATA `= b=TDA@ DA0`DA`DA??  1101DATA b= d= `=cCA@ DA0{DA{DA?? 1101 DATA d= f= b=DATA f= h= d=DATA h= j= f=`B`B18V7V?@8W8WDATA j= l= h=4C`#C`ã?@ 00DATA l= j=01q =DATA =DZ?#@vףD>3;Q?Fwi?JF>#,TY!e?*=> 6kz?F>Hwi?TY5;JF>!e?Q?$,,=>g_A\ӏA??}*Y˟QQ !?*Z>->#,>얼?V>*=B6=AAzAg(>(?`~B̻=>`.3dC qG˜P.D6*CwGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????D^6?ᾟ {A8(;C?Ѽ/ڿDATAx ƞ=? AL> ??? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????DATA#p= "p=`B=B= C=B=01p=p= n= p=DATA n= p=CA@ DA0@{DA@{DA?? 110x1DATA p= n= DC@ DC*10?? 110w1DATA(=0=DATA=DATAxp=1==>>> pythonSNP *=SRSculpting2`C= E=`==#p=%p=DATA `C=C=DATA C=C=`C=DATA C= D=C=DATA D=`D=C=DATA `D=D= D=2DATA D=D=`D=2DATA D= E=D=2gDATA E=D=gDATA(`==C=`D=DATA(==`= D=D=DATA(=P==`D=D=DATA(P===D=D=DATA(==P= D= E=DATA(=@==C= E=DATA(@===D= E=DATA(==@=`C=C=DATA(=0==`D=D=DATA(0===C=D=DATA(=0=`C=`D=DATA#p=$p=`D=D= E=C=3fMS c= c= r= v=DATA r= t=lCACALCACA??  MM3MfMDATA t= v= r=AA@N88?@993OL9 DATA v= t=C/C@N)08/8?@0909PL09DATA c=mDATA$p=%p=#p=D=D= D= E=3hM+=+= x= z=DATA x= z=CACAL7CA7CA??  MM3MDATA z= x=jCCFMLL?? MM3hMDATA8+=se Sculpt`GRDATA%p=$p=`C=C=D=`D=12  ̞= ̞= |= =DATA |= ~='DA@DA1`DA`DA??  2212DATA ~= = |=DA@DA1DADA?? 2212 DATA = = ~=DATA = = =DATA = = =\B_Bu187?@8878DATA = = =???@11DATA = = =8C C?@88DATA = =12 =DATA =DZ? @vףس]?F>>e>%V?WFw?냄>0 23l?س]?>e>Fw?F>%V샄>_@w???ʐ/HF1?>'V?%V?z@냄>23 @l@Ǡ?S>x'_ڐrz=cO>.åhCRb2H/Z.CX޺B8HB??س]?F>>e>%V?WFw?냄>0 23l??SF1? >0V?%V?z`y@냄>23Q@l@?????-D?`*W!QCRl@n:DATAx ̞=? AL> ???  HB? #<zD ?L=>1DefaultDefaultbasic_1wn.exr8663c049cdde90b2ced7ef559_1_500x500.jpg?????????L=L=L=??B@?=@???@????>??L>??????????SNP -=SRShading003`E=H==p=&p=+p=DATA `E=E=DATA E=E=`E=DATA E= F=E=DATA F=`F=E=DATA `F=F= F=2DATA F=F=`F=2DATA F= G=F=2gDATA G=`G=F=gDATA `G=G= G=DATA G=G=`G=w-DATA G= H=G=$DATA H=`H=G=$DATA `H=H= H=$DATA H=`H=2DATA(= =E=`F=DATA( =p== F=F=DATA(p== =`F=F=DATA(==p=F=F=DATA(=`== F= G=DATA(`===E= G=DATA(==`=F= G=DATA(=P==`E=G=DATA(P===`F=G=DATA(==P=E= H=DATA(=@==F= H=DATA(@===`E=`G=DATA(==@=E=`G=DATA(=0== H=`H=DATA(0===G=`H=DATA(==0=`G=`H=DATA(= ==F=H=DATA( =p==`F=H=DATA(p= =`H=H=DATA&p=`'p=`F=F= G=E=3fMS`d=`d= = =DATA = =lCACALCACA??  MM3MfMDATA = = =AA@N88?@993OL9 DATA = =CC@N)08/8?@0909PL09DATA`d=mDATA`'p=@(p=&p=F=F= F= G=3hM.=.= = =DATA = =CACAL7CA7CA??  MM3MDATA = =jCCFMLL?? MM3hMDATA8.=se Sculpt`GRDATA@(p= )p=`'p=`E=`G=`H=G=#$ = = = =DATA = =CACA#CACA?? $$#$DATA = = =AACA#CACA?? $$#$ DATA = = =H=DATAH=DATA = = =DATA = = =##DATA = = =`B`B187?@88DATA = =CC??$#$DATA) =)d3ddA>>dd?@?fff? DATA )p=*p=@(p=G=`H=H=`F=%1 `p=`p= = =DATA = =[DADA DADA??  %1 DATA = = =@C\C?@11DATA = = =`B`B187?@88%%DATA = = ACC`$1D[PC   ??FFL= @   %1 DATAh`p=/ ?*p=*p=ShaderNodeTreeDATA*p=-aCAMaterialMaterialDATA*p=+p= )p=`G=E= H=`H=#$K 4= 4= = =DATA = =CACA#DADA?? $$#$DATA = = =???@DATA = = =CC$E#ECDBCDB?@$F$F#$FDATA = = =???@ DATA = = =???@DATA = =C@0C$ #??$$#$DATA 4=' N=DATA( N=$Save As Blender File/home/experiences/instrumentation/piccaig/s/orkspaces.blend@DATA+p=*p=`H= H=F=H=%1 K Ҟ= Ҟ= = $=DATA = =TDADA `DA`DA??   %1 DATA = = =cCADA `DA`DA??  %1  DATA = = =DATA = = =DATA = "= =`B`B187?@88%%DATA "= $= =4C`#C`ã?@ 11DATA $= "=%1 1 =DATA =DZ?LL@vף?׫wK?)]?ZH>55(k? >pƒ2Xe??)]??5׫ZH>'k?vK?>bA_A?3?ƅKwKꕙ?W ?>>e{5<@ƾ ƾ˾=AeAU><?a6ۖ 4gֽZz=a>$U1uCTG#1D;fC[HB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA????? 8?z* Ծ{A4:;><)ѾiDATAx Ҟ=? AL> ???  HB? #<zD ?L=>1Defaulte.jpgforest.exrpg0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L???????L=L=L=??H@?=@???@????>??L>??????????SNP p=SRTexture Paint I=`K===,p=@/p=DATA I=`I=DATA `I=I= I=DATA I=I=`I=DATA I= J=I=DATA J=`J=I=2DATA `J=J= J=2DATA J=J=`J=2gDATA J= K=J=gDATA K=`K=J=DATA `K= K=DATA(==`I= J=DATA(=`==I=`J=DATA(`=== J=J=DATA(==`=`J=J=DATA(=P==I=J=DATA(P===`I=J=DATA(==P=J=J=DATA(=@== I=I=DATA(@=== J=`J=DATA(==@= I= K=DATA(=0== J= K=DATA(0===I=`K=DATA(==0=`J=`K=DATA(== K=`K=DATA,p=-p= J=J=J=`I=3fMSe=e= &= *=DATA &= (=lCACALCACA??  MM3MfMDATA (= *= &=AA@N88?@993OL9 DATA *= (=CiC@N)08/8?@0909PL09DATAe=mDATA-p=`.p=,p=J=`J=I=J=3hMq=q= ,= .=DATA ,= .=CACAL7CA7CA??  MM3MDATA .= ,=jCCFMLL?? MM3hMDATA8q=se Sculpt`GRDATA`.p=@/p=-p= I=I=`K= K=  = = 0= <=DATA 0= 2=CA@ADADADA?? DATA 2= 4= 0=`DA@ADA@DA@DA??  DATA 4= 6= 2=K=DATAK=DATA 6= 8= 4=DATA 8= := 6=\Cp\C@g?@DATA := <= 8=\B_Bu187?@8878DATA <= :=CC@@? @DATA) =)d3ddA>>dd?@?fff? DATA@/p=`.p= K=`K=`J= J=1,  ؞= ؞= >= L=DATA >= @=CAKDA+`DA`DA??  ,,1,DATA @= B= >=DAKDA+JDAJDA?? ,,1, DATA B= D= @=DATA D= F= B=DATA F= H= D=\B_Bu187?@88=8DATA H= J= F=???@11DATA J= L= H=8C C?@>>DATA L= J=1, =DATA =?DZ?vףD>3;Q?Fwi?JF>#,TY!e?*=>G?F>Hwi?TY5;JF>!e?Q?$,,=>#A׎-@?g4?˟QQC?dz>->#,>Zz?V>*=GAGAs>5j?# '>n$? n^aC63HGHCaCNHB??D>3;Q?Fwi?JF>#,TY!e?*=>!o??7glrQQ !?>5>#,>얼ȫ@H*=lA!oA?????D^6?ᾟ GA>:DATAx ؞=? AL> ??? HB? #<zD ?L=>1DefaultDefault0dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SNP s=SRUV EditingK= N= =0"= p=p=DATA K= L=DATA L=`L=K=DATA `L=L= L=DATA L=L=`L=DATA L= M=L=2DATA M=`M=L=2DATA `M=M= M=2gDATA M=M=`M=gDATA M= N=M="DATA N=M="DATA( =p= L=L=DATA(p== =L= M=DATA(==p=L=`M=DATA(=`== M=`M=DATA(`===L=M=DATA(= =`= L=M=DATA( =P ==`M=M=DATA(P = = =K=`L=DATA( = =P =L= M=DATA( =@!= =K=M=DATA(@!=!= =L=M=DATA(!=!=@!=`L= N=DATA(!=0"=!= M= N=DATA(0"=!=M= N=DATA p=p=L=`M=M= L=3fMSf=f= N= R=DATA N= P=lCACALCACA??  MM3MfMDATA P= R= N=AA@N88?@993OL9 DATA R= P=CC@N)08/8?@0909PL09t= v=DATAHt= v=MESH_UL_vgroups_DATAH v=t=MESH_UL_shape_keys_DATAf=mDATAp=p= p=`M= M=L=M=3hMw=w= T= V=DATA T= V=CACAL7CA7CA??  MM3MDATA V= T=jCCFMLL?? MM3hMDATA8w=se Sculpt`GRDATAp=p=p=K=`L= N=M=!"  = = X= t=DATA X= Z=kDAHDA!NDANDA?? ""!"DATA Z= \= X=BAHDA!HDAHDA?? ""!" DATA \= ^= Z=`N=DATA`N=DATA ^= p= \=DATA p= r= ^=\C\C{?@!!DATA r= t= p=\B_Bu187?@8878DATA t= r=CC@@!@"!"DATA) =)d3ddA>>dd?@?fff? DATAp=p=M= N= M=L=#1  ޞ= ޞ= v= =DATA v= x=DA8CDA`DA`DA??  #1DATA x= z= v=CACDACDACDA?? #1 DATA z= |= x=DATA |= ~= z=DATA ~= = |=\B@_Bu187?@88#Z8DATA = = ~=4C`#C`ã?@ 11DATA = =#1 `=DATA `=?DZ?vףD>3;Q?Fwi?JF>#,TY!e?*=>!o?F>Hwi?TY5;JF>!e?Q?$,,=>?_DA3xt@?W;?˟QQʷ?dz>->#,>K¼z?V>*=poA!oAj>?S"&!z>$?&5hTCíG5DVõЦCGB??D>3;Q?Fwi?JF>#,TY!e?*=>!o?W;?˟QQʷ?dz>->#,>K¼z?V>*=poA!oA?????D^6?ᾟ !oA>:DATAx ޞ=? AL> ??? HB? #<zD ?L=>10dac0b05ae44d0d8663c049cdde90b2ced7ef559_1_500x500.jpg?L?L?L??????L=L=L=??@?=@???@????>??L>??????????SCX ?SCScenetageain4= ?`r=?? ? ?=L=)\=)\=333>L=>L= ZNoneStandard?sRGB? dd?d@@ZQ???????o:/tmp/ L?L?L??>????BLENDER_EEVEE_NEXT ZNoneStandard?sRGB// 7=7=?????C?5555"=??????D?fC??A_?@Nonec - Base ContrastAgXicd? E A =sRGBsRGB y= y= p=:?:?:?=L>??L?L?L????b @=B@L?L>?L=>>I?@B? A ?B? Aw+2>L>?@@ #<?p=DATA4= DATA0 ?5=`6= ݛ= =2?== ==?o:o: ?uv_importance!!= = == =P2 ?2 ?2 ?2 ?2 ?2 ?2 ?> ? ?? #<#y??2>?????A[D DL>HB?[D D[D D?a?I?=¸=I??I@n= =?¸=5<¸=5>?> = =DATA =o????C?5555O=???????DATAO=m??DATA =o????C?5555O=q=??????DATAO=m??DATA =o????C?5555 =??????DATA =m??DATA`=I]|?DATA8]|?brushes/essentials_brushes-mesh_sculpt.blend/Brush/DrawDATA =o????C?5555=???????DATA=m??DATA= =`= h= =DATA =o????C?5555=??????DATA=m??DATA =I@]|?DATA8@]|?brushes/essentials_brushes-gp_draw.blend/Brush/PencilDATA`=I\|?DATA<\|?brushes/essentials_brushes-gp_draw.blend/Brush/Eraser SoftDATA== h= =DATA =o????C?5555=??????DATA=m??DATA=I _|?DATA8 _|?brushes/essentials_brushes-gp_vertex.blend/Brush/PaintDATA =`= =DATA =o????C?5555 =??????DATA =m??DATA`=I_|?DATA8_|?brushes/essentials_brushes-gp_sculpt.blend/Brush/SmoothDATA== =DATA =o????C?5555=??????DATA=m??DATA=I_|?DATA8_|?brushes/essentials_brushes-gp_weight.blend/Brush/PaintDATA =o????C?5555 $=??????DATAT $=m< #>q= >u>Q>??333?Q>= W?q= >?<DATA =o????C?5555"=??????DATA$"=m<???<DATAHn=n== ????DATAPn=??Ǿ ?>n=?> ?Ǿ?n=DATA =DATA =o????C?5555`=??????DATA`=m??DATA=I@`|?DATA@@`|?brushes/essentials_brushes-mesh_texture.blend/Brush/Paint HardDATA ?8?X?$=T=//../../../../Desktop/ A DATAX$= %=Channel 0DATAX %=%=$=Channel 1DATAX%= &= %=Channel 2DATAX &=&=%=Channel 3DATAX&= '= &=Channel 4DATAX '='=&=Channel 5DATAX'= (= '=Channel 6DATAX (=(='=Channel 7DATAX(= )= (=Channel 8DATAX )=)=(=Channel 9 DATAX)= *= )=Channel 10 DATAX *=*=)=Channel 11 DATAX*= += *=Channel 12 DATAX +=+=*=Channel 13 DATAX+= ,= +=Channel 14DATAX ,=,=+=Channel 15DATAX,= -= ,=Channel 16DATAX -=-=,=Channel 17DATAX-= .= -=Channel 18DATAX .=.=-=Channel 19DATAX.= /= .=Channel 20DATAX /=/=.=Channel 21DATAX/= = /=Channel 22DATAX = =/=Channel 23DATAX = != =Channel 24DATAX !=!= =Channel 25DATAX!= "= !=Channel 26DATAX "="=!=Channel 27DATAX"= #= "=Channel 28DATAX #=#="=Channel 29DATAX#= $= #=Channel 30DATAX $=$=#=Channel 31DATAX$= %= $=Channel 32 DATAX %=%=$=Channel 33!DATAX%= &= %=Channel 34"DATAX &=&=%=Channel 35#DATAX&= '= &=Channel 36$DATAX '='=&=Channel 37%DATAX'= (= '=Channel 38&DATAX (=(='=Channel 39'DATAX(= )= (=Channel 40(DATAX )=)=(=Channel 41)DATAX)= *= )=Channel 42*DATAX *=*=)=Channel 43+DATAX*= += *=Channel 44,DATAX +=+=*=Channel 45-DATAX+= ,= +=Channel 46.DATAX ,=,=+=Channel 47/DATAX,= -= ,=Channel 480DATAX -=-=,=Channel 491DATAX-= .= -=Channel 502DATAX .=.=-=Channel 513DATAX.= /= .=Channel 524DATAX /=/=.=Channel 535DATAX/= 0= /=Channel 546DATAX 0=0=/=Channel 557DATAX0= 1= 0=Channel 568DATAX 1=1=0=Channel 579DATAX1= 2= 1=Channel 58:DATAX 2=2=1=Channel 59;DATAX2= 3= 2=Channel 60<DATAX 3=3=2=Channel 61=DATAX3= 4= 3=Channel 62>DATAX 4=4=3=Channel 63?DATAX4= 5= 4=Channel 64@DATAX 5=5=4=Channel 65ADATAX5= 6= 5=Channel 66BDATAX 6=6=5=Channel 67CDATAX6= 7= 6=Channel 68DDATAX 7=7=6=Channel 69EDATAX7= 8= 7=Channel 70FDATAX 8=8=7=Channel 71GDATAX8= 9= 8=Channel 72HDATAX 9=9=8=Channel 73IDATAX9= := 9=Channel 74JDATAX :=:=9=Channel 75KDATAX:= ;= :=Channel 76LDATAX ;=;=:=Channel 77MDATAX;= <= ;=Channel 78NDATAX <=<=;=Channel 79ODATAX<= == <=Channel 80PDATAX ====<=Channel 81QDATAX== >= ==Channel 82RDATAX >=>===Channel 83SDATAX>= ?= >=Channel 84TDATAX ?=?=>=Channel 85UDATAX?= @= ?=Channel 86VDATAX @=@=?=Channel 87WDATAX@= A= @=Channel 88XDATAX A=A=@=Channel 89YDATAXA= B= A=Channel 90ZDATAX B=B=A=Channel 91[DATAXB= C= B=Channel 92\DATAX C=C=B=Channel 93]DATAXC= D= C=Channel 94^DATAX D=D=C=Channel 95_DATAXD= E= D=Channel 96`DATAX E=E=D=Channel 97aDATAXE= F= E=Channel 98bDATAX F=F=E=Channel 99cDATAXF= G= F=Channel 100dDATAX G=G=F=Channel 101eDATAXG= H= G=Channel 102fDATAX H=H=G=Channel 103gDATAXH= I= H=Channel 104hDATAX I=I=H=Channel 105iDATAXI= J= I=Channel 106jDATAX J=J=I=Channel 107kDATAXJ= K= J=Channel 108lDATAX K=K=J=Channel 109mDATAXK= L= K=Channel 110nDATAX L=L=K=Channel 111oDATAXL= M= L=Channel 112pDATAX M=M=L=Channel 113qDATAXM= N= M=Channel 114rDATAX N=N=M=Channel 115sDATAXN= O= N=Channel 116tDATAX O=O=N=Channel 117uDATAXO= P= O=Channel 118vDATAX P=P=O=Channel 119wDATAXP= Q= P=Channel 120xDATAX Q=Q=P=Channel 121yDATAXQ= R= Q=Channel 122zDATAX R=R=Q=Channel 123{DATAXR= S= R=Channel 124|DATAX S=S=R=Channel 125}DATAXS= T= S=Channel 126~DATAX T=T=S=Channel 127DATAXT= T=Channel 128DATA 7=7=left_LDATA7= 7=right_RDATA =o????= =`=C?5555=??????DATA=m??DATA =m??DATA`=m??DATA=m??DATA$"=m?????DATAP y=ViewLayer #=%=%=`|?`|?`|??8==(@`=`=(v_DATA0 #=p#= ?DATA0p#=#= #= ?DATA0#=$=p#= ?DATA0$=`$=#= ?DATA0`$=$=$= ?DATA0$=%=`$= ?DATA0%=P%=$= ?DATA0P%=%=%= ?DATA0%=%=P%= ?DATA0%=%= ?DATA8= ViewLayer ID properties`9=`9=DATA`9= cycles := :=DATA := use_denoisingDATA`=LineSet dV=DATA@`|? p=a|?a|?DATA@a|?p=DATAx p=lGRScene Collection ?==== DATA =h = ?DATA =h`== ?DATA `=h= = ?DATA =h=`= ?DATA =h == ?DATA =h`== ?DATA `=h= = ?DATA =h`= ?DATA =ip=PL h=ZPLPalette =t=DATA =Y`=???DATA `=Y= =r?r?r?DATA =Y=`=f?f?f?DATA =Y ==Y?Y?Y?DATA =Y`==L?L?L?DATA `=Y= =??????DATA =Y=`=2?2?2?DATA =Y ==&?&?&?DATA =Y`==???DATA `=Y= = ? ? ?DATA =Y=`=???DATA =Y ==>>>DATA =Y`==>>>DATA `=Y= =>>>DATA =Y=`=>>>DATA =Y ==>>>DATA =Y`==L>L>L>DATA `=Y= =>>>DATA =Y=`====DATA =Y ==DATA =Y`==r?|?>DATA `=Y= =?j?DATA =Y=`=~?'?=DATA =Y ==~? ?>DATA =Y`=={?l><DATA `=Y= =~?T>>DATA =Y=`=P?DATA =Y ==(?=t>DATA =Y`==><>DATA `=Y= =,>DATA =Y=`=q?b?E?DATA =Y ==~?d?3?DATA =Y`==~?Z?;?DATA `=Y= =~?B??DATA =Y=`=X??>DATA =Y `===?>>DATA `=Y``=="?>,>DATA ``=Y`= `=>T>4>DATA `=Y`=``=> >L>DATA `=Y a=`=P>=@=DATA a=Y`a=`=g?K??DATA `a=Ya= a=Q?3? ?DATA a=Ya=`a=A?1?>DATA a=Y b=a=W??0=DATA b=Y`b=a=?1?DATA `b=Yb= b=~? ?DATA b=Yb=`b=?>DATA b=Y c=b=7?>DATA c=Y`c=b=>x>=DATA `c=Yc= c=l> >DATA c=Yc=`c=~?J?Z?DATA c=Y d=c=~?>K?DATA d=Y`d=c=~?=?DATA `d=Yd= d=]?@>>DATA d=Yd=`d=@?>>DATA d=Y e=d= ?=?DATA e=Y`e=d=>> ?DATA `e=Ye= e=>=>DATA e=Ye=`e=0>=d>DATA e=Y f=e=>=>DATA f=Y`f=e=??>DATA `f=Yf= f=??DATA f=Yf=`f=?>DATA f=Y g=f=?>>DATA g=Y`g=f=?>?DATA `g=Yg= g=?~?DATA g=Yg=`g=?>DATA g=Y h=g=?DATA h=Y`h=g=>DATA `h=Yh= h= = =DATA h=Yh=`h=v?}??DATA h=Y i=h=i?w??DATA i=Y`i=h=O?f?~?DATA `i=Yi= i=*?G?~?DATA i=Yi=`i=>3?~?DATA i=Y j=i==>}?DATA j=Y`j=i=>*?DATA `j=Yj= j=<>>>DATA j=Yj=`j=@>>DATA j=Y k=j=`=`=>DATA k=Y`k=j=n?u?p?DATA `k=Yk= k=V?e?^?DATA k=Yk=`k=,?X?9?DATA k=Y l=k=>-?F?DATA l=Y`l=k=>)?/?DATA `l=Yl= l=>>DATA l=Yl=`l=>>>DATA l=Y m=l=8>>>DATA m=Y`m=l==H>d>DATA `m=Ym= m=p==>DATA m=Ym=`m=X??t?DATA m=Y n=m=8?t?u?DATA n=Y`n=m=.?L?5?DATA `n=Yn= n=>E?>DATA n=Yn=`n=T>?>DATA n=Y o=n=>?>DATA o=Y`o=n=>?>DATA `o=Yo= o==>,>DATA o=Yo=`o=(>p>\>DATA o=Y p=o==8>=DATA p=Y`p=o=o??I?DATA `p=Yp= p=f?s??DATA p=Yp=`p=DATA `q=Yq= q=>>DATA q=Yq=`q=>?,>DATA q=Y r=q=$>>DATA r=Y`r=q=>>DATA `r=Yr= r==L>>DATA r=Yr=`r=?>DATA r=Y s=r=?DATA s=Y`s=r=>?>DATA `s=Ys= s=>??DATA s=Ys=`s=??DATA s=Y t=s=>>?DATA t=Y`t=s=>?DATA `t=Yt= t=?DATA t=Yt=`t=|>>DATA t=Yt=>GRxp=lGRCollection1 u=`u=DATA u=h`u= ?DATA `u=h u= ?OB ?OBbase001_node ? i? ==????????????????????????a@DATA=DATA=OB ?OBCameraamera.001 = .@A???????ر?g@x4Jc^@?????????33?3?5)? ??`i=DATA`i=???=L> ף<@OB ?OBdelta001_node ? Po= =@=????????????????????????a@DATA=DATA@=OB ?OBgamma001_node ? Wo= p==????????????????????????a@DATAp=DATA=OB ?OBkappa001_node ? ^o= ==????????????????????????a@DATA=DATA=OB ?OBkomega001 ? eo= 0=`=????????????????????????a@DATA0=DATA`=OB ?OBkphi001_node ? lo= ==????????????????????????a@DATA=DATA=OB ?OBLight p= p@?p@??????{&?W+b=??????????22?3?'4'? ??j=DATAj=???=L> ף<@OB ?OBmu001_node ? o= = =????????????????????????a@DATA=DATA =OB ?OBScene ??????????????????o:?????a@CA =dCACameraamera.001h/?=BHB@?BAI@(Aɿ?II@Dk`%O6߲II@??CHBB? A333@?=? ?6?DATAh/ (/(/DATA(/ cycles/H/ DATA/ /panorama_typeDATA/ //fisheye_fovI@DATA/ h//fisheye_lens(ADATAh/ //latitude_minɿDATA/ (/h/latitude_max?DATA(/ //longitude_minIDATA/ h/(/longitude_maxI@DATAh/  //fisheye_polynomial_k0DDATA / /h/fisheye_polynomial_k1kDATA/ / /fisheye_polynomial_k2`DATA/ H//fisheye_polynomial_k3%O6DATAH/ /fisheye_polynomial_k4߲LAp p=LALight ???zD=6?>==?I@L>L=AzDL?=???? B?o: A@&=zDDATA0@&=ME i?HMEbase_001.001P=oo%ot=k= m= p=p= m~>xI?L7?@5&?A=I|DATAP="r=DATAk=0position`?u=2 .select_vert mr=v=DATA$4`?woC`?㥏fKO?㥏z?㥏y༾KO?㥏?㥏U?㥏y༾KO?$U?$?$fKO?$C`?$z?$y༾KO?$?$y༾KO?㥏y༾KO?㥏?$?㥏?㥏?$U?㥏U?㥏?$U?$fKO?㥏C`?㥏fKO?$fKO?$C`?㥏C`?$C`?$C`?㥏z?$z?$C`?㥏z?㥏z{?㥏U{?㥏U{?$U{?$z{?$z{?㥏z?㥏z{?㥏z{?$z{?$z?$z?㥏*)?™&*)?$&U?$*)?™&U?$U?™*)?1*)?™U?™U?™U?1*)?1*)?1U?1&U?㥏&U?㥏&*)?㥏*)?1&*)?㥏&U?㥏fKO?㥏fKO?㥏͡*)?㥏&*)?㥏U?™&U?$fKO?$U?1fKO?㥏&U?㥏fKO?㥏U?1U?™fKO?㥏U?™fKO?$͡*)?㥏;lg>?㥏;lg>?$;lg>?$͡*)?$͡*)?㥏*)?1&*)?㥏͡*)?㥏*)?™͡*)?$&*)?$*)?1͡*)?㥏͡*)?$*)?1͡*)?$*)?™;lg>?㥏!Zg>?㥏!Zg>?$!Zg>?$;lg>?$;lg>?㥏!Zg>?㥏 ףݫ?㥏 ףݫ?$ ףݫ?$!Zg>?$!Zg>?㥏 ףݫ?㥏 ףU?㥏 ףU?$ ףU?$ ףݫ?$ ףݫ?㥏y༾KO?㥏y༾KO?$ ףU?$ ףU?$ ףU?㥏y༾KO?㥏U?㥏U?$U{?$U{?$U{?㥏U?㥏y༾KO?$ ףݫ?$ ףU?$!Zg>?$ ףݫ?$y༾KO?$͡*)?$;lg>?$!Zg>?$͡*)?$!Zg>?$y༾KO?$&*)?$͡*)?$fKO?$fKO?$&U?$&*)?$z{?$U{?$U?$z?$z{?$U?$fKO?$z?$U?$U?$y༾KO?$fKO?$fKO?$y༾KO?$͡*)?$͡*)?㥏!Zg>?㥏;lg>?㥏z?㥏U?㥏U{?㥏U{?㥏z{?㥏z?㥏fKO?㥏y༾KO?㥏U?㥏U?㥏z?㥏fKO?㥏͡*)?㥏fKO?㥏y༾KO?㥏 ףݫ?㥏y༾KO?㥏 ףU?㥏!Zg>?㥏͡*)?㥏y༾KO?㥏!Zg>?㥏y༾KO?㥏 ףݫ?㥏@ >A`>A`ef?A`ef?A`@ ef?A`@ >A`Z>A`Q>A`Qdf?A`Qdf?A`Zef?A`Z>A`@ >A`>t>A`@ >A`@ >І>tZef?A`Qdf?A`Zef?tZef?tQdf?A`Qdf?І?A`?A`?І?І?І?A`?A`?tA`?tA`?tA`?A`?A`?tA`?tt?tt?tt?tA`?tA`?tt?t=t?t=t?t=t?tt?tt?t=A`?t=A`?t=t?t=t?t=t?t=A`?t=A`?>A`?>A`?>A`?t=A`?t=A`?>A`?>І?>І?>І?>A`?>A`?І?І?>І?>І?>І?І?A`?tA`?tt?A`?tt?І?t=A`?>A`?t=t?>A`?>І?t=t?tt?t=t?>І?>І?І?tt?t=A`?t=t?>A`?A`?tt?tA`?A`?І?tt?tt?І?>І?>І?t=t?tt?>A`?t=t?>І@ >A`@ ef?A`@ e?І@ e?І@ >І@ >A`>A`>te?te?tef?A`>A`Z>A`Zef?A`Zef?tZef?tZ>tZ>A`>tZ>tZef?tZef?te?t>tQ>A`Q>ІQdf?ІQdf?ІQdf?A`Q>A`Z>A`Z>tQ>A`@ >І@ e?ІQdf?ІQdf?ІQ>І@ >І@ ef?A`ef?A`e?t@ ef?A`e?t@ e?ІZef?tQdf?І@ e?І@ e?Іe?tZef?tQ>A`Z>tQ>І@ >ІQ>ІZ>tZ>t>t@ >І: gfІQhfІZgftZgftgft: gfІQhfA`ZgftQhfІZtQІ: І: ІtZt: A`t: І: A`A`t: gfІ: ІQІQІQhfІ: gfІZgfA`ZgftQhfA`QhfA`QhfІQІQІQA`QhfA`gftZgftZtZttgftZgfA`ZA`ZtZtZgftZgfA`gfA`gftttA`gfA`: gfA`: A`: І: І: gfІ: gfA`ZtQA`QІZA`QA`Zt: gfA`: gfІgft: gfA`gftgfA`ZgfA`QhfA`QA`QA`ZA`ZgfA`: gfA`gfA`A`A`: A`: gfA`D?EeAEeA1eA1D?1D?Eep??1ep??E•>?E•>?E•>?1ep??1`xN1D?1eA1eA1>0HP1`xN1ep??1•>?1`GKM?1`GKM?1B0GO?1ep??1`xNE`xN1>0HP1>0HP1>0HPE`xNEB0GO?1`GKM?1`GKM?E`GKM?EB0GO?EB0GO?1`xNE>0HPEeAEeAED?E`xNEep??EB0GO?E`GKM?E`GKM?E•>?Eep??EeAE>0HPE>0HP1>0HP1eA1eAEB0GO?1B0GO?Eep??Eep??Eep??1B0GO?1D?ED?1`xN1`xN1`xNED?E`GKM?1•>?1•>?E•>?E`GKM?E`GKM?11Kț1Kț1Y1Y1Y1Kț‹?Y‹?Kț?Kț?Kț?Y‹?Y1Kț1w `F Kț1w `F Y1w `F Y1Y1Kț3w ?Y3w ?Kț‹?Kț‹?Kț‹?Y3w ?Y1w `F Kț1w ) Kț1w ) Y1w ) Y1w `F Y1w `F Kț3w O?Y3w O?Kț3w ?Kț3w ?Kț3w ?Y3w O?Y ) Kț `F Kț `F Y `F Y ) Y ) Kț ?Y ?Kț O?Kț O?Kț O?Y ?Yu , Kț , Kț , Y , Yu , Yu , Kț l ?Y l ?Kțu l ?Kțu l ?Kțu l ?Y l ?Y `F Kț{~1Kț{~1Y{~1Y `F Y `F Kț}~?Y}~?Kț ?Kț ?Kț ?Y}~?Ys|KțsTKțsTYsTYs|Ys|Kțs'?Ys'?Kțs O?Kțs O?Kțs O?Ys'?YR|YR|Y , Y , Y , YR|Y l ?YT O?YT O?YT O?Y l ?Y l ?Y1w ) Y1w ) Y1w `F Y1w `F Y1w `F Y1w ) Y3w ?Y3w O?Y3w O?Y3w O?Y3w ?Y3w ?Y1w `F Y1w `F YRTYRTYRTY1w `F YT'?Y3w ?Y3w ?Y3w ?YT'?YT'?Y1w `F YRTY1Y‹?YT'?Y3w ?Y1w `F Y1w `F Y1Y1Y1Y1w `F Y‹?Y3w ?Y3w ?Y3w ?Y‹?Y‹?Y1Y1YRTYRTYRTY1YT'?Y‹?Y‹?Y‹?YT'?YT'?YRTYRTY1w `F Y1w `F Y1w `F YRTY3w ?YT'?YT'?YT'?Y3w ?Y3w ?Y1YRTY1Y?YT'?Y‹?Y1Y1Y1Y1Y1Y1Y?Y‹?Y‹?Y‹?Y?Y?Y1Y1YRTYRTYRTY1YT'?Y?Y?Y?YT'?YT'?YRTYRTY1Y1Y1YRTY‹?YT'?YT'?YT'?Y‹?Y‹?Y{~1YD 1Y `F Y ?YF ?Y}~?Y{~1Y{~1Y `F Y `F Y `F Y{~1Y ?Y}~?Y}~?Y}~?Y ?Y ?Y `F Y `F YD 1YD 1YD 1Y `F YF ?Y ?Y ?Y ?YF ?YF ?YD 1YD 1Y{~1Y{~1Y{~1YD 1Y}~?YF ?YF ?YF ?Y}~?Y}~?Y `F YD 1YJ; YL@ ?YF ?Y ?Y `F Y `F YJ; YL@ ?Y ?Y ?YD 1YD 1Y `F Y `F Y `F YD 1Y ?YF ?YF ?YF ?Y ?Y ?Y `F YJ; Y ) Y O?YL@ ?Y ?Y `F Y `F Y ) Y ) Y ) Y `F Y O?Y ?Y ?Y ?Y O?Y O?Y ) Y ) YJ; YL@ ?Y O?Y O?YJ; Y `F Y `F Y ?Y ?YL@ ?Y1w ) KțY; Kț1Kț‹?KțY@ ?Kț3w O?Kț1w ) Kț1w `F Kț1Kț‹?Kț3w ?Kț3w O?Kțs|Kțu , KțJ; KțL@ ?Kțu l ?Kțs O?Kțs|KțJ; KțsTKțs'?KțL@ ?Kțs O?KțD 1Kț{~1Kț ) Kț O?Kț}~?KțF ?Kț{~1Kț `F Kț ) Kț O?Kț ?Kț}~?KțsTKțJ; KțD 1KțF ?KțL@ ?Kțs'?KțJ; Kț ) KțD 1KțF ?Kț O?KțL@ ?Kț1KțY; KțRTKțT'?KțY@ ?Kț‹?Kț1KțRTKț1Kț?KțT'?Kț‹?KțR|KțRTKțY; KțY@ ?KțT'?KțT O?KțR|KțY; Kț , Kț l ?KțY@ ?KțT O?KțsTKțD 1KțD 1YD 1YsTYsTKțF ?YF ?Kțs'?Kțs'?Kțs'?YF ?YD 1Kț{~1Kț{~1Y{~1YD 1YD 1Kț}~?Y}~?KțF ?KțF ?KțF ?Y}~?Y1KțRTKțRTYRTY1Y1KțT'?YT'?Kț?Kț?Kț?YT'?YR|KțR|YRTYRTYRTKțR|KțT'?YT O?YT O?KțT O?KțT'?KțT'?Ys|Kțs|YR|YR|YR|Kțs|KțT O?Ys O?Ys O?Kțs O?KțT O?KțT O?YJ; Kțu , Kțu , Yu , YJ; YJ; Kțu l ?Yu l ?KțL@ ?KțL@ ?KțL@ ?Yu l ?YJ; KțJ; Y ) Y ) Y ) KțJ; Kț O?YL@ ?YL@ ?KțL@ ?Kț O?Kț O?Y1w ) Kț1w ) YY; YY; YY; Kț1w ) KțY@ ?Y3w O?Y3w O?Kț3w O?KțY@ ?KțY@ ?Y , KțY; KțY; YY; Y , Y , KțY@ ?YY@ ?Kț l ?Kț l ?Kț l ?YY@ ?YY; Y1w `F YRTYT'?Y3w ?YY@ ?YY; YRTYR|YT O?YT'?YY@ ?YY; YR|Y , Y l ?YT O?YY@ ?Yu , Ys|YJ; YL@ ?Ys O?Yu l ?YJ; Ys|YsTYs'?Ys O?YL@ ?YJ; YsTYD 1YF ?Ys'?YL@ ?Yu , Y , YR|YT O?Y l ?Yu l ?Yu , YR|Ys|Ys O?YT O?Yu l ?Ys|KțR|Kț , Kț l ?KțT O?Kțs O?Kțs|Kț , Kțu , Kțu l ?Kț l ?Kțs O?KțY; Y1w ) Y1w `F Y3w ?Y3w O?YY@ ?Y|M; Y) Y`F Y?YO?YM@ ?Yl|Kț´, Kț, Kțl ?Kț´l ?Kțr O?Kțl|Kț<Ƽ|Kț´, Kț´l ?KțBƼ O?Kțr O?Kț, Y<Ƽ|Yl|Yr O?YBƼ O?Yl ?Y, Y´, Y<Ƽ|YBƼ O?Y´l ?Yl ?Y+; YlTY 1Y&?Yr'?Y1@ ?Y+; Yl|YlTYr'?Yr O?Y1@ ?Y, Yl|Y+; Y1@ ?Yr O?Yl ?Y|M; Y<Ƽ|Y´, Y´l ?YBƼ O?YM@ ?Y|M; Y<ƼTY<Ƽ|YBƼ O?YBƼ'?YM@ ?Y|M; Y`F Y<ƼTYBƼ'?Y?YM@ ?Y´, Kț|M; Kț|M; Y|M; Y´, Y´, KțM@ ?YM@ ?Kț´l ?Kț´l ?Kț´l ?YM@ ?Y) Kț) Y|M; Y|M; Y|M; Kț) KțM@ ?YO?YO?KțO?KțM@ ?KțM@ ?Y+; Kț+; Y) Y) Y) Kț+; KțO?Y1@ ?Y1@ ?Kț1@ ?KțO?KțO?Y+; Kț, Kț, Y, Y+; Y+; Kțl ?Yl ?Kț1@ ?Kț1@ ?Kț1@ ?Yl ?Yl|Kțl|Y<Ƽ|Y<Ƽ|Y<Ƽ|Kțl|KțBƼ O?Yr O?Yr O?Kțr O?KțBƼ O?KțBƼ O?Y<Ƽ|Kț<Ƽ|Y<ƼTY<ƼTY<ƼTKț<Ƽ|KțBƼ'?YBƼ O?YBƼ O?KțBƼ O?KțBƼ'?KțBƼ'?Y1Kț<ƼTKț<ƼTY<ƼTY1Y1KțBƼ'?YBƼ'?Kț?Kț?Kț?YBƼ'?Y 1Kț1Kț1Y1Y 1Y 1Kț?Y?Kț&?Kț&?Kț&?Y?YlTKț 1Kț 1Y 1YlTYlTKț&?Y&?Kțr'?Kțr'?Kțr'?Y&?Y<Ƽ|Kț|M; Kț´, Kț´l ?KțM@ ?KțBƼ O?Kț<Ƽ|Kț<ƼTKț|M; KțM@ ?KțBƼ'?KțBƼ O?Kț1Kț<ƼTKț1Kț?KțBƼ'?Kț?Kț1Kț|M; Kț<ƼTKțBƼ'?KțM@ ?Kț?Kț+; Kț) Kț 1Kț&?KțO?Kț1@ ?KțlTKț+; Kț 1Kț&?Kț1@ ?Kțr'?Kț1Kț`F Kț) KțO?Kț?Kț?Kț 1Kț1Kț) KțO?Kț?Kț&?Kțl|Kț+; KțlTKțr'?Kț1@ ?Kțr O?Kțl|Kț, Kț+; Kț1@ ?Kțl ?Kțr O?Kț) Kț`F Kț1Kț?Kț?KțO?Kț) Kț|M; Kț1Kț?KțM@ ?KțO?Kț+; Y`F Y`F Y?Y?Y1@ ?Y) Y) Y+; Y1@ ?YO?YO?Y`F Y`F Y) Y) Y) Y`F YO?Y?Y?Y?YO?YO?Y`F Y+; Y) YO?Y1@ ?Y?Y 1Y 1Y`F Y`F Y`F Y 1Y?Y&?Y&?Y&?Y?Y?Y`F Y`F Y+; Y1@ ?Y?Y?Y`F Y 1Y+; Y1@ ?Y&?Y?Y 1Y 1Y1Y1Y1Y 1Y?Y&?Y&?Y&?Y?Y?Y`F Y`F Y 1Y 1Y 1Y`F Y&?Y?Y?Y?Y&?Y&?Y1Y1Y`F Y`F Y`F Y1Y?Y?Y?Y?Y?Y?Y1Y 1Y`F Y?Y&?Y?Y<ƼTY<ƼTY1Y1Y1Y<ƼTY?YBƼ'?YBƼ'?YBƼ'?Y?Y?Y1Y1Y<ƼTY<ƼTY<ƼTY1YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y1Y1Y1Y1Y1Y1Y?Y?Y?Y?Y?Y?Y1Y<ƼTY1Y?YBƼ'?Y?Y<ƼTY<ƼTY`F Y`F Y`F Y<ƼTY?YBƼ'?YBƼ'?YBƼ'?Y?Y?Y1Y1Y<ƼTY<ƼTY<ƼTY1YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y`F Y`F Y1Y1Y1Y`F Y?Y?Y?Y?Y?Y?Y`F Y<ƼTY1Y?YBƼ'?Y?Y`F Y`F Y<ƼTY<ƼTY<ƼTY`F YBƼ'?Y?Y?Y?YBƼ'?YBƼ'?Y) Y) Y`F Y`F Y`F Y) Y?YO?YO?YO?Y?Y?Y<Ƽ|Y<Ƽ|Y´, Y´, Y´, Y<Ƽ|Y´l ?YBƼ O?YBƼ O?YBƼ O?Y´l ?Y´l ?Yl|KțlTKțlTYlTYl|Yl|Kțr'?Yr'?Kțr O?Kțr O?Kțr O?Yr'?Y`F Kț1Kț1Y1Y`F Y`F Kț?Y?Kț?Kț?Kț?Y?Y, Kț´, Kț´, Y´, Y, Y, Kț´l ?Y´l ?Kțl ?Kțl ?Kțl ?Y´l ?Y) Kț`F Kț`F Y`F Y) Y) Kț?Y?KțO?KțO?KțO?Y?Y`F Kț) Kț) Y) Y`F Y`F KțO?YO?Kț?Kț?Kț?YO?Y1Kț`F Kț`F Y`F Y1Y1Kț?Y?Kț?Kț?Kț?Y?Y1Kț1Kț1Y1Y1Y1Kț?Y?Kț?Kț?Kț?Y?Y$s༾J$O$fJ$A`$z$fJ㥏z㥏A`㥏s༾J㥏㥏O㥏fJ㥏A`㥏fJ$fJ$A`㥏A`$A`$A`㥏z$z$A`㥏z㥏s༾J$$s༾J㥏s༾J㥏$㥏㥏$O㥏O㥏$O$Oy$zy$zy㥏zy㥏Oy㥏Oy$O$Oy$Oy㥏Oy㥏O㥏O$ףx)1?`x)㥏?`أ㥏ףx)1?`أ㥏ףأ1ףx)™ףx)1ףأ1ףأ1ףأ™ףx)™ףx)™ףأ™?`أ$?`أ$?`x)$ףx)™?`x)$?`أ$s༾J$s༾J${jx)$?`x)$ףأ1?`أ㥏s༾J㥏ףأ™s༾J$?`أ$s༾J$ףأ™ףأ1s༾J$ףأ1s༾J㥏{jx)$A̾e;?$A̾e;?㥏A̾e;?㥏{jx)㥏{jx)$ףx)™?`x)${jx)$ףx)1{jx)㥏?`x)㥏ףx)™{jx)${jx)㥏ףx)™{jx)㥏ףx)1A̾e;?$Se;?$Se;?㥏Se;?㥏A̾e;?㥏A̾e;?$Se;?$$㥏㥏Se;?㥏Se;?$$أ$أ㥏أ㥏㥏$fJ$fJ㥏أ㥏أ㥏أ$fJ$z$z㥏zy㥏zy㥏zy$z$fJ㥏㥏أ㥏Se;?㥏㥏fJ㥏{jx)㥏A̾e;?㥏Se;?㥏{jx)㥏Se;?㥏fJ㥏?`x)㥏{jx)㥏s༾J㥏s༾J㥏?`أ㥏?`x)㥏Oy㥏zy㥏z㥏O㥏Oy㥏z㥏s༾J㥏O㥏z㥏z㥏fJ㥏s༾J㥏s༾J㥏fJ㥏{jx)㥏{jx)$Se;?$A̾e;?$O$z$zy$zy$Oy$O$s༾J$fJ$z$z$O$s༾J${jx)$s༾J$fJ$$fJ$أ$Se;?${jx)$fJ$Se;?$fJ$$?ef&jD W>ef&jB W>jB W>j?j?ef&jD W>ef&j?ef&j?ef&̠?ef&̠D W>ef&̠D W>ef&jB W>jD W>ef&jD W>ef&̠D W>ef&̠B W>̠B W>j?jB W>jB W>̠B W>̠?̠?j?ef&j?j?̠?̠?ef&̠?ef&j?̠B W>̠D W>ef&̠D W>ef&̠?ef&̠?̠1+\?륿1?ʥ1+\?G)\??륿1'\??륿1(,?ʥ1(,?ʥG(,?ʥG)\??륿1(,?1(,?ʥ1??ʥ1??ʥ1'\??1(,?G(,?G)\??G??ʥG??ʥG(,?ʥG(,??u(,?'1?u(,?-&(,?-&(,?-&(,?'1?u(,?'1G(,?G(,?ʥ1(,?ʥ1(,?ʥ1(,?G(,?G)\??1'\??1'\??륿1'\??륿G)\??륿G)\??t?u*\?'1u?u(,'1)&(,'1t?u*\?'1)&(,'1)&+\?'1t?u*\?)&+\?)&(,'1)&(,'1t?u*\?'1t?u*\? G)\?1+\?1?ʥ1?ʥ G)\?륿 G)\?u?u(,)&(,)&(,'1)&(,'1u?u(,'1u?u(, G(,ʥ1(,ʥ1(,1(, G(, G(,ʥ1+\?1(,1(,ʥ1(,ʥ1+\?륿1+\?)&(,1(,1+\?1+\?)&+\?)&(,)&(,'1)&(,)&+\?)&+\?)&+\?'1)&(,'1t?u*\?u?u(,u?u(,'1u?u(,'1t?u*\?'1t?u*\? G(,u?u(,t?u*\?t?u*\? G)\? G(, G)\? G)\?륿 G(,ʥ G(,ʥ G(, G)\?1+\?륿1(,ʥ G(,ʥ G(,ʥ G)\?륿1+\?륿p=Z?(>E?(>E?(>ʥE?(>ʥp=Z?(>륿p=Z?(>p=Z?(>p=Z?(>륿p=Z?(>륿p=Z?(>륿p=Z?(>p=Z?(>p=Z?(>륿E?(>ʥE?(>ʥE?(>ʥp=Z?(>륿p=Z?(>륿E?(>ʥE?(>E?(>E?(>E?(>ʥE?(>ʥE?(>p=Z?(>p=Z?(>p=Z?(>E?(>E?(>E?(>p=Z?(>r=Z?L;r=Z?L;E?L;E?(>E?(>ʥE?(>E?L;E?L;E?L;ʥE?(>ʥp=Z?(>륿E?(>ʥE?L;ʥE?L;ʥr=Z?L;륿p=Z?(>륿p=Z?(>p=Z?(>륿r=Z?L;륿r=Z?L;륿r=Z?L;p=Z?(>E?L;ʥE?L;r=Z?L;r=Z?L;r=Z?L;륿E?L;ʥp=Z?F`>'1E?F`>'1E?F`>E?F`>p=Z?F`>p=Z?F`>'1p=Z?F`>'1p=Z?F`>p=Z?F`>p=Z?F`>p=Z?F`>'1p=Z?F`>'1p=Z?F`>E?F`>E?F`>E?F`>p=Z?F`>p=Z?F`>E?F`>E?F`>'1E?F`>'1E?F`>'1E?F`>E?F`>E?F`>'1p=Z?F`>'1p=Z?F`>'1p=Z?F`>'1E?F`>'1E?F`>'1E?F`>'1p=Z?F`>'1r=Z?'1r=Z?'1E?'1E?F`>'1E?F`>E?F`>'1E?'1E?'1E?E?F`>p=Z?F`>E?F`>E?E?r=Z?p=Z?F`>p=Z?F`>'1p=Z?F`>r=Z?r=Z?r=Z?'1p=Z?F`>'1r=Z?'1r=Z?r=Z?r=Z?r=Z?'1r=Z?'1r=Z?E?E?E?r=Z?r=Z?E?E?'1E?'1E?'1E?E?E?'1r=Z?'1r=Z?'1r=Z?'1E?'1E?'1E?E?'1r=Z?'1r=Z?'1r=Z?E?tj>j>j>tt??t>t>j>j??j??t?t??t??j??j?j?t?t?jjjt?tKgGdGj'1j'1І'1ІKgGdGІKgGdGj'1j'19=j'19=І'19=І'1І'1jOgGKgG>j'19=j'19=І'19=ІOgGKgG>ІOgGKgG>j&1>jOgGKgG>jOgGKgG>ІOgGKgG>І&1>І&1>j=&1>j&1>j&1>І&1>І=&1>І=&1>jKgG>OgG>j=&1>j=&1>І=&1>ІKgG>OgG>ІKgG>OgG>j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1>C=j'1>j'1>j'1>j'1>C=j'1>C=jOgG>dGj'1>j'1>j'1>jOgG>dGjOgG>dGj='1jOgG>dGjOgG>dGjOgG>dGj='1j='1j'1j='1j='1j='1j'1j'1j'1jKgGdGjKgGdGІKgGdGІ'1І'1j='1j'1j'1І'1І='1І='1jOgG>dGj='1j='1І='1ІOgG>dGІOgG>dGj'1>jOgG>dGjOgG>dGІOgG>dGІ'1>І'1>j'1>C=j'1>C=І'1>І'1>І'1>j'1>C=jKgG>OgG>jKgG>OgG>І'1>C=І'1>C=І'1>C=jKgG>OgG>jj?j??j??j>jjKgG>OgG>ІІ'1>C=І'1>C=ІІ'1>І'1>ІІOgG>dGІ='1ІOgG>dGІІ'1І='1ІІKgGdGІ'1ІІІ'1ІKgGdGІ'1ІІ'1І'1І'19=ІІOgGKgG>І'19=ІІ&1>ІOgGKgG>ІІ=&1>І&1>ІІKgG>OgG>І=&1>ІІt>t??t??t?ttf䌿"?p=)Пx?p=f䌿"?K7f䌿"?K7)Пx?p=)Пx?_)Пx?p=f䌿"?p=猿?)Пx?p=猿?qӟh?qӟh?猿?@?Cqӟh?@?Cݟ8?Cݟ8?C@?C>?_ݟ8?C>?_S퟿W?_S퟿W?_>?_N?S퟿W?_N?L?L?N?s.e?8L?s.e?8j?8j?8s.e?8H?Ij?8H?Io4?Iɥ<>Iޒ$>I9>8ɥ<>I9>8㥿TB>8㥿TB>89>8$}>㥿TB>8$}>W>W>$}>%5>_W>%5>_,>_,>_%5>_4F>C,>_4F>C >C >C4F>C?I;> >C?I;>*є>,Dp=?^Sp=?^,D|??^,D|??^Sp=?^S|??^,Dp=?C,Dp=?^,D|??C,D|??C,Dp=?^,D|??^|??S|??p=?p=?S|??Sp=?Sp=?^Sp=?S|??^S|??^Sp=?S|??p=?Sp=?G[p=?ďG[p=?ďSp=?Sp=?^G[p=?ďSp=?^\^p=?~\^p=?~Sp=?^ap=?R,Dp=?^,Dp=?CSp=?^Sp=?^,Dp=?Cep=?CSp=?^ep=?Cap=?RS|??|??S|??^S|??^|??G[|??ďS|??^G[|??ď\^|??~,D|??C,D|??^e|??Ce|??C,D|??^S|??^e|??CS|??^a|??Ra|??RS|??^\^|??~ep=?C,Dp=?Ce|??Ce|??C,Dp=?C,D|??CG[|??ďG[p=?ď\^p=?~G[|??ď\^p=?~\^|??~\^|??~\^p=?~ap=?R\^|??~ap=?Ra|??Ra|??Rap=?Rep=?Ca|??Rep=?Ce|??CG[|??ď|??G[p=?ďG[p=?ď|??p=? |??^kD|??^ p=?^ p=?^kD|??^kDp=?^ |??I |??^ p=?I p=?I |??^ p=?^M?p=?kDp=?M?|??M?|??kDp=?kD|??kD|??^kD|??kDp=?^kDp=?^kD|??kDp=?kD|??kD|??^M?|??M?|??kD|??^ |??^M?|?? |??^ |??I p=?I p=?^M?p=?M?p=? p=?^kDp=?^M?p=?kDp=?^kDp=? p=?IM?p=? |??I |??IM?p=?M?|??/(|?5^/(|?FH(|?5^FH(|?5^/(|?FH(|?FHzt?FH(|?/zt?/zt?FH(|?/(|?/yN?I/yN?^EHyN?IEHyN?I/yN?^EHyN?^FHGz?^EHyN?^/Gz?^/Gz?^EHyN?^/yN?^EHyN?IEHyN?^FHzt?FHzt?EHyN?^FHGz?^FHzt?FHGz?^FH(|?FH(|?FHGz?^FH(|?5^/(|?/(|?5^/zt?/zt?/(|?5^/Gz?^/zt?/Gz?^/yN?I/yN?I/Gz?^/yN?^/zt?/yN?IFHzt?FHzt?/yN?IEHyN?I/Gz?^/(|?5^FHGz?^FHGz?^/(|?5^FH(|?5^B(|?^kD|?^B(p?^B(p?^kD|?^kDp?^B(|?IB(|?^B(p?IB(p?IB(|?^B(p?^M?p?kDp?M?|?M?|?kDp?kD|?kD|?^kD|?kDp?^kDp?^kD|?kDp?kD|?kD|?^M?|?M?|?kD|?^B(|?^M?|?B(|?^B(|?IB(p?IB(p?^M?p?M?p?B(p?^kDp?^M?p?kDp?^kDp?B(p?IM?p?B(|?IB(|?IM?p?M?|?op?^Pp?^o|?^o|?^Pp?^Q|?^op?Iop?^o|?Io|?Iop?^o|?^|?Q|?p?p?Q|?Pp?Pp?^Pp?Q|?^Q|?^Pp?Q|?Pp?Pp?^p?p?Pp?^op?^p?op?^op?Io|?Io|?^|?|?o|?^Q|?^|?Q|?^Q|?o|?I|?op?Iop?I|?p? p=^Dp=^ |?^ |?^Dp=^D|?^ p=C p=^ |?C |?C p=^ |?^>|?D|?>p=>p=D|?Dp=Dp=^Dp=D|?^D|?^Dp=D|?>p=Dp=-p=ď-p=ďDp=Dp=^-p=ďDp=^Q,p=~Q,p=~Dp=^|o+p=R p=^ p=CDp=^Dp=^ p=C~*p=CDp=^~*p=C|o+p=RD|?>|?D|?^D|?^>|?-|?ďD|?^-|?ďQ,|?~ |?C |?^~*|?C~*|?C |?^D|?^~*|?CD|?^|o+|?R|o+|?RD|?^Q,|?~~*p=C p=C~*|?C~*|?C p=C |?C-|?ď-p=ďQ,p=~-|?ďQ,p=~Q,|?~Q,|?~Q,p=~|o+p=RQ,|?~|o+p=R|o+|?R|o+|?R|o+p=R~*p=C|o+|?R~*p=C~*|?C-|?ď>|?-p=ď-p=ď>|?>p=|?^^|?^p=^p=^^|?^^p=^|?I|?^p=Ip=I|?^p=^np=^p=n|?n|?^p=^|?^|?^^|?^p=^^p=^^|?^p=^|?^|?^n|?n|?^|?^|?^n|?|?^|?Ip=Ip=^np=np=p=^^p=^np=^p=^^p=p=Inp=|?I|?Inp=n|?š(|5^š(|2(|5^2(|5^š(|2(|2zt2(|šztšzt2(|š(|ơ|NIơ|N^3|NI3|NIơ|N^3|N^2Iz^3|N^šIz^šIz^3|N^ơ|N^3|NI3|N^2zt2zt3|N^2Iz^2zt2Iz^2(|2(|2Iz^2(|5^š(|š(|5^šztšztš(|5^šIz^šztšIz^ơ|NIơ|NIšIz^ơ|N^šztơ|NI2zt2ztơ|NI3|NIšIz^š(|5^2Iz^2Iz^š(|5^2(|5^n|^`|^np^np^`|^ap^n|In|^npInpIn|^np^npapn|n|ap`|`|^`|ap^ap^`|ap`|`|^n|n|`|^n|^n|n|^n|InpInp^npnpnp^ap^npap^apnpInpn|In|Inpn|'p^Dp^'|^'|^Dp^D|^'pI'p^'|I'|I'p^'|^>|D|>p>pD|DpDp^DpD|^D|^DpD|DpDp^>p>pDp^'p^>p'p^'pI'|I'|^>|>|'|^D|^>|D|^D|'|I>|'pI'pI>|>p{N?#^|N?i绾^ P?#^ P?#^|N?i绾^ P?i绾^{N?#C{N?#^ P?#C P?#C{N?#^ P?#^ P? P?i绾|N?|N? P?i绾|N?i绾|N?i绾^|N?i绾 P?i绾^ P?i绾^|N?i绾 P?i绾|N?|N?i绾|N?㍾ď|N?㍾ď|N?i绾|N?i绾^|N?㍾ď|N?i绾^|N?qY~|N?qY~|N?i绾^|N?>R{N?#^{N?#C|N?i绾^|N?i绾^{N?#C|N?6C|N?i绾^|N?6C|N?>R P?i绾 P? P?i绾^ P?i绾^ P? P?㍾ď P?i绾^ P?㍾ď P?qY~ P?#C P?#^ P?6C P?6C P?#^ P?i绾^ P?6C P?i绾^ P?>R P?>R P?i绾^ P?qY~|N?6C{N?#C P?6C P?6C{N?#C P?#C P?㍾ď|N?㍾ď|N?qY~ P?㍾ď|N?qY~ P?qY~ P?qY~|N?qY~|N?>R P?qY~|N?>R P?>R P?>R|N?>R|N?6C P?>R|N?6C P?6C P?㍾ď P?|N?㍾ď|N?㍾ď P?|N? P? >^ P?^d>^{N? >^{N? >^ P?^d>^zN?^d>^ P? >I P? >^{N? >I{N? >I P? >^{N? >^zN?&>zN?^d> P?&> P?&>zN?^d> P?^d> P?^d>^ P?^d>zN?^d>^zN?^d>^ P?^d>zN?^d> P?^d> P?^d>^ P?&> P?&> P?^d>^ P? >^ P?&> P? >^ P? >I{N? >I{N? >^zN?&>zN?&>{N? >^zN?^d>^zN?&>zN?^d>^zN?^d>{N? >IzN?&> P? >I P? >IzN?&> P?&>< ?~s5^< ?~s< ?be;5^< ?be;5^< ?~s< ?be;33?be;< ?be;33?s33?s< ?be;< ?~s`?sI`?s^`?be;I`?be;I`?s^`?be;^ff?be;^`?be;^ff?s^ff?s^`?be;^`?s^`?be;I`?be;^33?be;33?be;`?be;^ff?be;^33?be;ff?be;^< ?be;< ?be;ff?be;^< ?be;5^< ?~s< ?~s5^33?s33?s< ?~s5^ff?s^33?sff?s^`?sI`?sIff?s^`?s^33?s`?sI33?be;33?be;`?sI`?be;Iff?s^< ?~s5^ff?be;^ff?be;^< ?~s5^< ?be;5^|?5?r>^|?5?^d>^233?r>^233?r>^|?5?^d>^233?^d>^|?5?r>I|?5?r>^233?r>I233?r>I|?5?r>^233?r>^233?&>233?^d>|?5?&>|?5?&>233?^d>|?5?^d>|?5?^d>^|?5?^d>233?^d>^233?^d>^|?5?^d>233?^d>|?5?^d>|?5?^d>^|?5?&>|?5?&>|?5?^d>^|?5?r>^|?5?&>|?5?r>^|?5?r>I233?r>I233?r>^233?&>233?&>233?r>^233?^d>^233?&>233?^d>^233?^d>233?r>I233?&>|?5?r>I|?5?r>I233?&>|?5?&>433?}^433?i绾^~?5?}^~?5?}^433?i绾^~?5?i绾^433?}I433?}^~?5?}I~?5?}I433?}^~?5?}^~?5?~?5?i绾433?433?~?5?i绾433?i绾433?i绾^433?i绾~?5?i绾^~?5?i绾^433?i绾~?5?i绾433?i绾433?i绾^433?433?433?i绾^433?}^433?433?}^433?}I~?5?}I~?5?}^~?5?~?5?~?5?}^~?5?i绾^~?5?~?5?i绾^~?5?i绾~?5?}I~?5?433?}I433?}I~?5?433?bGa=\뗿p???HrGabGa=\t/ݠ8Hv?/ݠ8Hv?Ȓ8Hv?Ȓ\tȒ\t/ݠbGa=$\뗿p?$?$?$HrGa$bGa=$$a=/ݠϖ ?/ݠϖ ?Ȓϖ ?Ȓ$a=Ȓ$a=/ݠbGa=HrGaG!GaG!GaG!Ga=bGa=bGa=$HrGa$G!Ga$G!Ga$G!Ga=$bGa=$$a=/ݠ$a=ȒG!=ȒG!=ȒG!=/ݠ$a=/ݠ\t/ݠ\tȒG!ȒG!ȒG!/ݠ\t/ݠG!=Ȓ$a=ȒbGa=bGa=G!Ga=G!=Ȓ$a=Ȓϖ ?Ȓ\뗿p?\뗿p?bGa=$a=Ȓ?HrGa\tȒ\tȒ8Hv?Ȓ?\t/ݠHrGa$?$?$8Hv?/ݠ\t/ݠϖ ?/ݠ$a=/ݠbGa=$bGa=$\뗿p?$ϖ ?/ݠ$a=/ݠbGa=$G!Ga=$G!Ga=$G!=/ݠ$a=/ݠG!Ga$HrGa$\t/ݠ\t/ݠG!/ݠG!Ga$HrGa\tȒG!ȒG!ȒG!GaHrGa$a=ȒG!=ȒG!Ga=G!Ga=bGa=$a=ȒG!Ga$G!GaG!Ga=G!Ga=G!Ga=$G!Ga$G!/ݠG!ȒG!GaG!GaG!Ga$G!/ݠG!Ga=$G!Ga=G!=ȒG!=ȒG!=/ݠG!Ga=$\뗿p?$?$??\뗿p?\뗿p?$ϖ ?/ݠ\뗿p?$\뗿p?\뗿p?ϖ ?Ȓϖ ?/ݠ?I;>GB>p=_.t>p=_.t>p=*є>?I;>c~?ƻ ~>ƻ_.t>__.t>_)Пx?_c~?ƻGB>p=GB>K7_.t>p=GB>K7_.t>__.t>p=s.e?89>8ޒ$>Iޒ$>IH?Is.e?8N?$}>9>8N?9>8s.e?8>?_%5>_$}>>?_$}>N?@?C4F>C>?_4F>C%5>_>?_猿??I;>4F>C猿?4F>C@?Cf䌿"?p=GB>p=猿?GB>p=?I;>猿?f䌿"?p=f䌿"?K7GB>K7f䌿"?p=GB>K7GB>p=fx>_c̉gn>ƻ ~>ƻfx>_ ~>ƻ_.t>_?$>_n&>ƻc̉gn>ƻ?$>_c̉gn>ƻfx>_)Пx?_?$>_fx>_)Пx?_fx>__.t>_n&>ƻc~?ƻc̉gn>ƻc~?ƻ ~>ƻc̉gn>ƻ?$>˜޾f䌿"?K7?$>_f䌿"?K7)Пx?_?$>_?$>˜޾fx>˜޾GB>K7?$>˜޾GB>K7f䌿"?K7?$>˜޾?$>_fx>_?$>˜޾fx>_fx>˜޾fx>˜޾fx>_GB>K7fx>__.t>_GB>K7c~?ƻ)Пx?__.t>_c~?ƻ_.t>_ ~>ƻ)Пx?p=_.t>p=_.t>_)Пx?p=_.t>_)Пx?_?$>_)Пx?_c~?ƻ?$>_c~?ƻn&>ƻH?Iޒ$>Io4?Iޒ$>Iɥ<>Io4?IZ"9`嬿X9`嬿Z"9Z"9X9`嬿X9X9X9`嬿;R9`嬿X9;R9`嬿;R9;R9;R9`嬿A9`嬿;R9A9`嬿A9A9A9`嬿U}8`嬿A9U}8`嬿U}8U}8U}8`嬿@|Q8`嬿U}8@|Q8`嬿@|Q8@|Q8@|Q8`嬿b:{7`嬿@|Q8b:{7`嬿b:{7b:{7b:{7`嬿Az> 7`嬿b:{7Az> 7`嬿Az> 7Z"9`嬿Z"99#S9Z"9`嬿9#S99#S9`嬿9#S9`嬿9#S9#A99#S9`嬿#A9#A9`嬿#A9`嬿#A9^$8#A9`嬿^$8^$8`嬿^$8`嬿^$8$Q8^$8`嬿$Q8$Q8`嬿$Q8`嬿$Q8n%7$Q8`嬿n%7n%7`嬿n%7`嬿n%7%? 7n%7`嬿%? 7%? 7`嬿%53S`嬿%53S@z43S`嬿@z43S`嬿%53S@z43S%? 7%53S%53S%DPԬ%53SԬ%53S`嬿%53S%J%? 7%? 7`嬿%|6CԬ%53S`嬿%53S`嬿%|6CԬ%JԬ%53S`嬿%JԬ%DPԬ@z43SԬ@zPpQԬ@z43S`嬿@z43S`嬿@zPpQԬ@z0NԬAz:ԬAz> 7`嬿@z43S`嬿Az:Ԭ@z43S`嬿@zEԬ@zEԬ@z43S`嬿@z0NԬAz> 7BzI@z43SAz> 7@z43S@z43Sn%7`嬿%? 7`嬿%53S`嬿@z43S`嬿Az> 7`嬿b:{7`嬿b:{7`嬿@|Q8`嬿@z43S`嬿@z43S`嬿@|Q8`嬿U}8`嬿@z43S`嬿U}8`嬿A9`嬿n%7`嬿%53S`嬿$Q8`嬿9#S9`嬿#A9`嬿%53S`嬿%53S`嬿#A9`嬿^$8`嬿%53S`嬿^$8`嬿$Q8`嬿A9`嬿;R9`嬿@z43S`嬿@z43S`嬿;R9`嬿X9`嬿@z43S`嬿X9`嬿%53S`嬿%53S`嬿X9`嬿Z"9`嬿%53S`嬿Z"9`嬿9#S9`嬿;R9A9@z43S@z43SA9U}8%53S^$8#A9U}8@|Q8@z43S@z43S@|Q8b:{7@z43Sb:{7Az> 7%? 7n%7%53S%53Sn%7$Q8%53S$Q8^$8#A99#S9%53S%53S9#S9Z"9%53SZ"9@z43S@z43SZ"9X9@z43SX9;R9`9?`嬿^"9?`嬿`9?`9?^"9?`嬿^"9?^"9?^"9?`嬿9#O9?`嬿^"9?9#O9?`嬿9#O9?9#O9?9#O9?`嬿 #A9?`嬿9#O9? #A9?`嬿 #A9? #A9? #A9?`嬿^$8?`嬿 #A9?^$8?`嬿^$8?^$8?^$8?`嬿$Q8?`嬿^$8?$Q8?`嬿$Q8?$Q8?$Q8?`嬿r%7?`嬿$Q8?r%7?`嬿r%7?r%7?r%7?`嬿%; 7?`嬿r%7?%; 7?`嬿%; 7?`9?`嬿`9?;P9?`9?`嬿;P9?;P9?`嬿;P9?`嬿;P9?A9?;P9?`嬿A9?A9?`嬿A9?`嬿A9?c}8?A9?`嬿c}8?c}8?`嬿c}8?`嬿c}8?@|Q8?c}8?`嬿@|Q8?@|Q8?`嬿@|Q8?`嬿@|Q8?p:{7?@|Q8?`嬿p:{7?p:{7?`嬿p:{7?`嬿p:{7?Oz< 7?p:{7?`嬿Oz< 7?Oz< 7?`嬿Pz13S?`嬿Pz13S?%03S?`嬿%03S?`嬿Pz13S?%03S?Oz< 7?Pz13S?Pz13S?Pz13S?NzG?Oz< 7?%03S?Ԭ%pQ?Ԭ%03S?`嬿%03S?`嬿%pQ?Ԭ%0N?Ԭ%5?Ԭ%; 7?%; 7?`嬿%5?Ԭ%; 7?`嬿%:?Ԭ%:?Ԭ%; 7?`嬿%03S?`嬿%:?Ԭ%03S?`嬿%E?Ԭ%E?Ԭ%03S?`嬿%0N?Ԭ%; 7?%F?%03S?%; 7?%03S?%03S?;P9?`嬿A9?`嬿Pz13S?`嬿Pz13S?`嬿A9?`嬿c}8?`嬿%03S?`嬿^$8?`嬿 #A9?`嬿c}8?`嬿@|Q8?`嬿Pz13S?`嬿Pz13S?`嬿@|Q8?`嬿p:{7?`嬿Pz13S?`嬿p:{7?`嬿Oz< 7?`嬿%; 7?`嬿r%7?`嬿%03S?`嬿%03S?`嬿r%7?`嬿$Q8?`嬿%03S?`嬿$Q8?`嬿^$8?`嬿 #A9?`嬿9#O9?`嬿%03S?`嬿%03S?`嬿9#O9?`嬿^"9?`嬿%03S?`嬿^"9?`嬿Pz13S?`嬿Pz13S?`嬿^"9?`嬿`9?`嬿Pz13S?`嬿`9?`嬿;P9?`嬿r%7?%; 7?%03S?Pz13S?Oz< 7?p:{7?p:{7?@|Q8?Pz13S?Pz13S?@|Q8?c}8?Pz13S?c}8?A9?r%7?%03S?$Q8?9#O9? #A9?%03S?%03S? #A9?^$8?%03S?^$8?$Q8?A9?;P9?Pz13S?Pz13S?;P9?`9?Pz13S?`9?%03S?%03S?`9?^"9?%03S?^"9?9#O9?|N?Ga`嬿zN?Ga>`嬿|N?Ga|N?GazN?Ga>`嬿zN?Ga>K?kK?k`嬿.L?+k`嬿K?k.L?+k`嬿.L?+k.L?+k.L?+k`嬿L?%j`嬿.L?+kL?%j`嬿L?%jL?%jL?%j`嬿wTM?h`嬿L?%jwTM?h`嬿wTM?hwTM?hwTM?h`嬿M?_ff`嬿wTM?hM?_ff`嬿M?_ffM?_ffM?_ff`嬿4M?c`嬿M?_ff4M?c`嬿4M?c4M?c4M?c`嬿|N?Ga`嬿4M?c|N?Ga`嬿|N?GaK?&k>`嬿K?&k>.L?,k>K?&k>`嬿.L?,k>.L?,k>`嬿.L?,k>`嬿.L?,k>L?%j>.L?,k>`嬿L?%j>L?%j>`嬿L?%j>`嬿L?%j>uTM?h>L?%j>`嬿uTM?h>uTM?h>`嬿uTM?h>`嬿uTM?h>M?nff>uTM?h>`嬿M?nff>M?nff>`嬿M?nff>`嬿M?nff>2M?c>M?nff>`嬿2M?c>2M?c>`嬿2M?c>`嬿2M?c>zN?Ga>2M?c>`嬿zN?Ga>zN?Ga>`嬿h?Eh?kh?kh?'k>h?E>h?'k>h?'k>h?'k>`嬿h?kh?kh?'k>`嬿h?k`嬿h?'k>h?'k>K?&k>h?'k>`嬿h?'k>ԬK?&k>`嬿K?&k>`嬿h?'k>Ԭ֣0?%k>ԬK?&k>`嬿֣0?%k>ԬK?&k>K?&k>֣0?%k>Ԭ֣0?%k>K?&k>֣0?%k>h?'k>K?kh?kh?kwd?kԬh?kԬh?k`嬿h?kأ0?kK?kK?k`嬿*\O?kԬh?k`嬿h?k`嬿*\O?kԬ\?kԬh?k`嬿\?kԬwd?kԬ.L?+k`嬿K?k`嬿h?k`嬿4M?c`嬿M?_ff`嬿h?k`嬿M?_ff`嬿wTM?h`嬿h?k`嬿h?k`嬿wTM?h`嬿L?%j`嬿h?k`嬿L?%j`嬿.L?+k`嬿h?'k>`嬿K?&k>`嬿.L?,k>`嬿.L?,k>`嬿L?%j>`嬿h?'k>`嬿h?'k>`嬿L?%j>`嬿uTM?h>`嬿h?'k>`嬿uTM?h>`嬿M?nff>`嬿M?nff>`嬿2M?c>`嬿h?'k>`嬿h?'k>`嬿2M?c>`嬿zN?Ga>`嬿h?'k>`嬿zN?Ga>`嬿h?k`嬿h?k`嬿zN?Ga>`嬿|N?Ga`嬿h?k`嬿|N?Ga`嬿4M?c`嬿.L?,k>K?&k>h?'k>h?kK?k.L?+k.L?+kL?%jh?kh?kL?%jwTM?hh?kwTM?hM?_ffh?'k>2M?c>M?nff>M?nff>uTM?h>h?'k>h?'k>uTM?h>L?%j>h?'k>L?%j>.L?,k>M?_ff4M?ch?kh?k4M?c|N?Gah?k|N?Gah?'k>h?'k>|N?GazN?Ga>h?'k>zN?Ga>2M?c>D7 33S@z43S@z43S`嬿@z43S`嬿D7 33SԬD7 33SD7 33SD7 33SԬF7 HԬF7 HԬF7 HD7 33SF7 HF7 HԬBzIԬBzIԬBzIF7 HBzIAz> 7Az> 7`嬿Az> 7`嬿BzIԬBzID7 33SF7 HBzIBzI@z43SD7 33SD7 33SԬ@z43S`嬿BzIԬBzIԬF7 HԬD7 33SԬ%53S5A53S5A53SԬ5A53SԬ%53SԬ%53S%J5AJ5AJԬ5AJԬ%JԬ%J5A53S5A53SԬ5AJԬ5AJԬ5AJ5A53S%J%JԬ%? 7`嬿%? 7`嬿%? 7%J%53S5A53S5AJ5AJ%J%53S%53SԬ%JԬ5AJԬ5AJԬ5A53SԬ%53SԬh?E>h?E>Ԭ֣0?E>Ԭ֣0?E>Ԭ֣0?E>h?E>h?'k>h?'k>`嬿h?E>Ԭh?E>Ԭh?E>h?'k>֣0?%k>֣0?E>֣0?E>Ԭ֣0?E>Ԭ֣0?%k>Ԭ֣0?%k>h?'k>`嬿֣0?%k>Ԭ֣0?E>Ԭ֣0?E>Ԭh?E>Ԭh?'k>`嬿h?'k>h?E>֣0?E>֣0?E>֣0?%k>h?'k>h?Eأ0?Eأ0?kأ0?kh?kh?Eh?Eh?kh?k`嬿h?k`嬿h?EԬh?Eh?Eh?EԬأ0?EԬأ0?EԬأ0?Eh?Eأ0?Eأ0?EԬأ0?kԬأ0?kԬأ0?kأ0?EK?kأ0?kأ0?kԬأ0?kԬK?k`嬿K?kh?EԬh?kԬأ0?kԬأ0?kԬأ0?EԬh?EԬR7 H?NzG?NzG?ԬNzG?ԬR7 H?ԬR7 H?R7 H?R7 H?ԬT7 23S?ԬT7 23S?ԬT7 23S?R7 H?T7 23S?T7 23S?ԬPz13S?`嬿Pz13S?`嬿Pz13S?T7 23S?%03S?9A03S?9A03S?Ԭ9A03S?Ԭ%03S?`嬿%03S?9AF?9AF?Ԭ9A03S?Ԭ9A03S?Ԭ9A03S?9AF?%F?%F?Ԭ9AF?Ԭ9AF?Ԭ9AF?%F?%F?%; 7?%5?Ԭ%5?Ԭ%F?Ԭ%F?%03S?`嬿9A03S?Ԭ9AF?Ԭ9AF?Ԭ%F?Ԭ%03S?`嬿%F?9AF?9A03S?9A03S?%03S?%F?R7 H?T7 23S?Pz13S?Pz13S?NzG?R7 H?NzG?NzG?ԬOz< 7?`嬿Oz< 7?`嬿Oz< 7?NzG?R7 H?ԬNzG?ԬPz13S?`嬿Pz13S?`嬿T7 23S?ԬR7 H?ԬkD(|?DqE(|?DkD(|?kD(|?qE(|?DqE(|?kD(|?qE(|?CeD(|?CeD(|?qE(|?;bE(|?]፿CeD(|?;bE(|?]፿QD(|?덿QD(|?덿;bE(|?]፿5E(|?QD(|?덿5E(|?%2D(|?3׍%2D(|?3׍5E(|?D(|?xz%2D(|?3׍D(|?xz D(|?yǍ D(|?yǍD(|?xzD(|?V D(|?yǍD(|?VSC(|?SC(|?D(|?VD(|?)?SC(|?D(|?)?5C(|?^5C(|?^D(|?)?5C(|?K7PH?D*PH?DPH?PH?*PH?D*PH?PH?*PH?AH?AH?*PH?H?鍿AH?H?鍿H?򍿚H?򍿉H?鍿+H?H?+H?XH?eߍXH?eߍ+H?SrH?͍XH?eߍSrH?͍hH?ύhH?ύSrH?͍HH?nihH?ύHH?niNH?2čNH?2čHH?niqH?MNH?2čqH?MH?H?qH?M%H?1=H?%H?1=SH?^SH?^%H?1=SH?K7SH?^SH?K7({G?^({G?^SH?K7({G?K7X(|?D2P(|?DPH?D2P(|?D*PH?DPH?DX(|?PH?AH?X(|?AH?I(|?I(|?AH?H?I(|?H?򍿢(|?򍿢(|?򍿚H?XH?eߍ(|?XH?eߍ`(|?eߍ`(|?eߍXH?eߍhH?ύ`(|?eߍhH?ύh(|?ύh(|?ύhH?ύNH?2čh(|?ύNH?2čR(|?2čR(|?2čNH?2čH?R(|?2čH?(|?(|?H?SH?^(|?SH?^S(|?^$%E:?^[%TC:?^5C(|?^5C(|?^[%TC:?^5CF?^5CF?^[%TC:?^q%9?^5CF?^q%9?^q%F?^7{UC:?^S(|?^({9?^({9?^S(|?^SH?^({9?^SH?^({G?^7{UC:?^\|F:?^S(|?^S(|?^\|F:?^+(~h;?^S(|?^+(~h;?^h##;?^U#D< ?p>D< ?_d>< ?_d>< ?p>D< ?p>< ?_d>< ?p>< ?1[>< ?1[>< ?p>< ?_Z>鍿< ?1[>< ?_Z>鍿< ?\>>< ?\>>< ?_Z>鍿< ?7>< ?\>>< ?7>< ?->eߍ< ?->eߍ< ?7>< ?m>͍< ?->eߍ< ?m>͍< ?Bк>ύ< ?Bк>ύ< ?m>͍< ?>ni< ?Bк>ύ< ?>ni< ?>2č< ?>2č< ?>ni< ?i>M< ?>2č< ?i>M< ?2>< ?2>< ?i>M< ?>1=< ?2>< ?>1=< ?'۹>^< ?'۹>^< ?>1=< ?'۹>K7أ0?j绾Dأ0?Dأ0?j绾أ0?j绾أ0?Dأ0?󽾬أ0?j绾أ0?󽾬أ0?ܻأ0?ܻأ0?󽾬أ0?ܽ鍿أ0?ܻأ0?ܽ鍿أ0?أ0?أ0?ܽ鍿أ0?󗽾أ0?أ0?󗽾أ0?萻eߍأ0?萻eߍأ0?󗽾أ0?)+͍أ0?萻eߍأ0?)+͍أ0?LSύأ0?LSύأ0?)+͍أ0?niأ0?LSύأ0?niأ0?2čأ0?2čأ0?niأ0?X뻾Mأ0?2čأ0?X뻾Mأ0?أ0?أ0?X뻾Mأ0?*1=أ0?أ0?*1=أ0?2^^أ0?2^^أ0?*1=أ0?2^K7أ0?2^^أ0?2^K7أ0?k^أ0?k^أ0?2^K7أ0?kK7< ?h绾D< ?Dأ0?j绾Dأ0?j绾D< ?Dأ0?D< ?h绾أ0?j绾أ0?ܻ< ?h绾أ0?ܻ< ?ܻ< ?ܻأ0?ܻأ0?< ?ܻأ0?< ?< ?أ0?أ0?萻eߍ< ?أ0?萻eߍ< ?搻eߍ< ?搻eߍأ0?萻eߍأ0?LSύ< ?搻eߍأ0?LSύ< ?JSύ< ?JSύأ0?LSύأ0?2č< ?JSύأ0?2č< ?2č< ?2čأ0?2čأ0?< ?2čأ0?< ?< ?أ0?أ0?2^^< ?أ0?2^^< ?0^^< ?'۹>^L?A}>^tL?>^< ?'۹>^,J?b>^֣0?%۹>^֣0?%۹>^,J?b>^o=J?`>^֣0?%۹>^o=J?`>^֣0?_>^.J?傾^K?b^< ?0^^< ?0^^K?b^ L?`^< ?0^^ L?`^tL?^tL?>^ L?V>^< ?'۹>^< ?'۹>^ L?V>^K?߁>^< ?'۹>^K?߁>^,J?b>^.J?傾^< ?0^^q=J?j^q=J?j^< ?0^^أ0?2^^q=J?j^أ0?2^^أ0?k^tL?^L?X~^< ?0^^< ?0^^L?X~^L?e{^< ?0^^L?e{^< ?'۹>^< ?'۹>^L?e{^L?Pz>^< ?'۹>^L?Pz>^L?A}>^< ?'۹>^֣0?%۹>^֣0?2>< ?'۹>^֣0?2>< ?2>< ?2>֣0?2>֣0?>2č< ?2>֣0?>2č< ?>2č< ?>2č֣0?>2č֣0?@к>ύ< ?>2č֣0?@к>ύ< ?Bк>ύ< ?Bк>ύ֣0?@к>ύ֣0?+>eߍ< ?Bк>ύ֣0?+>eߍ< ?->eߍ< ?->eߍ֣0?+>eߍ֣0?Z>>< ?->eߍ֣0?Z>>< ?\>>< ?\>>֣0?Z>>֣0?/[>< ?\>>֣0?/[>< ?1[>< ?1[>֣0?/[>֣0?]d>< ?1[>֣0?]d>< ?_d>< ?p>D< ?_d>D֣0?p>D֣0?p>D< ?_d>D֣0?]d>D< ?p>֣0?p>֣0?]Z>鍿< ?p>֣0?]Z>鍿< ?_Z>鍿< ?_Z>鍿֣0?]Z>鍿֣0?5>< ?_Z>鍿֣0?5>< ?7>< ?7>֣0?5>֣0?k>͍< ?7>֣0?k>͍< ?m>͍< ?m>͍֣0?k>͍֣0?>ni< ?m>͍֣0?>ni< ?>ni< ?>ni֣0?>ni֣0?i>M< ?>ni֣0?i>M< ?i>M< ?i>M֣0?i>M֣0?>1=< ?i>M֣0?>1=< ?>1=< ?>1=֣0?>1=֣0?%۹>K7< ?>1=֣0?%۹>K7< ?'۹>K7,J?b>K7K?߁>K7< ?'۹>K7,J?b>K7< ?'۹>K7o=J?`>K7o=J?`>K7< ?'۹>K7֣0?%۹>K7o=J?`>K7֣0?%۹>K7֣0?_>K7K?߁>K7 L?V>K7< ?'۹>K7< ?'۹>K7 L?V>K7tL?>K7< ?'۹>K7tL?>K7P?'۹>K7P?0^K7L?X~K7< ?0^K7< ?0^K7L?X~K7tL?K7< ?0^K7tL?K7 L?`K7tL?>K7L?A}>K7P?'۹>K7P?'۹>K7L?A}>K7L?Pz>K7P?'۹>K7L?Pz>K7P?0^K7P?0^K7L?Pz>K7L?e{K7P?0^K7L?e{K7L?X~K7 L?`K7K?bK7< ?0^K7< ?0^K7K?bK7.J?傾K7< ?0^K7.J?傾K7أ0?2^K7أ0?2^K7.J?傾K7q=J?jK7أ0?2^K7q=J?jK7أ0?kK7< ?0^K7أ0?2^K7أ0?*1=< ?0^K7أ0?*1=< ?*1=< ?*1=أ0?*1=أ0?X뻾M< ?*1=أ0?X뻾M< ?V뻾M< ?V뻾Mأ0?X뻾Mأ0?ni< ?V뻾Mأ0?ni< ?ni< ?niأ0?niأ0?)+͍< ?niأ0?)+͍< ?'+͍< ?'+͍أ0?)+͍أ0?󗽾< ?'+͍أ0?󗽾< ?񗽾< ?񗽾أ0?󗽾أ0?ܽ鍿< ?񗽾أ0?ܽ鍿< ?ܽ鍿< ?ܽ鍿أ0?ܽ鍿أ0?󽾬< ?ܽ鍿أ0?󽾬< ?󽾬< ?0^^< ?0^K7< ?< ?< ?0^K7< ?*1=< ?< ?*1=< ?2č< ?2č< ?*1=< ?V뻾M< ?2č< ?V뻾M< ?JSύ< ?JSύ< ?V뻾M< ?ni< ?JSύ< ?ni< ?搻eߍ< ?搻eߍ< ?ni< ?'+͍< ?搻eߍ< ?'+͍< ?< ?< ?'+͍< ?񗽾< ?< ?񗽾< ?ܻ< ?ܻ< ?񗽾< ?ܽ鍿< ?ܻ< ?ܽ鍿< ?h绾< ?h绾< ?ܽ鍿< ?󽾬< ?h绾< ?󽾬< ?h绾D< ?h绾D< ?󽾬< ?D֣0?_>^֣0?_>K7֣0?%۹>^֣0?%۹>^֣0?_>K7֣0?%۹>K7֣0?%۹>^֣0?%۹>K7֣0?2>֣0?2>֣0?%۹>K7֣0?>1=֣0?2>֣0?>1=֣0?>2č֣0?>2č֣0?>1=֣0?i>M֣0?>2č֣0?i>M֣0?@к>ύ֣0?@к>ύ֣0?i>M֣0?>ni֣0?@к>ύ֣0?>ni֣0?+>eߍ֣0?+>eߍ֣0?>ni֣0?k>͍֣0?+>eߍ֣0?k>͍֣0?Z>>֣0?Z>>֣0?k>͍֣0?5>֣0?Z>>֣0?5>֣0?/[>֣0?/[>֣0?5>֣0?]Z>鍿֣0?/[>֣0?]Z>鍿֣0?]d>֣0?]d>֣0?]Z>鍿֣0?p>q=J?j^أ0?k^q=J?jK7q=J?jK7أ0?k^أ0?kK7o=J?`>K7֣0?_>K7o=J?`>^o=J?`>^֣0?_>K7֣0?_>^L?e{K7L?Pz>K7L?e{^L?e{^L?Pz>K7L?Pz>^< ?'۹>< ?0^< ?'۹>^< ?'۹>^< ?0^< ?0^^< ?'۹>K7P?'۹>K7< ?'۹>^< ?'۹>^P?'۹>K7P?'۹>< ?'۹>^P?'۹>< ?'۹>< ?0^P?0^< ?0^^< ?0^^P?0^P?0^K7< ?0^^P?0^K7< ?0^K7P?'۹>P?0^< ?'۹>< ?'۹>P?0^< ?0^P?0^K7P?0^P?'۹>K7P?'۹>K7P?0^P?'۹>L?e{K7L?e{^L?X~^L?e{K7L?X~^L?X~K7L?X~K7L?X~^tL?^L?X~K7tL?^tL?K7tL?K7tL?^ L?`^tL?K7 L?`^ L?`K7 L?`K7 L?`^K?b^ L?`K7K?b^K?bK7K?bK7K?b^.J?傾^K?bK7.J?傾^.J?傾K7.J?傾K7.J?傾^q=J?j^.J?傾K7q=J?j^q=J?jK7o=J?`>K7o=J?`>^,J?b>^o=J?`>K7,J?b>^,J?b>K7,J?b>K7,J?b>^K?߁>^,J?b>K7K?߁>^K?߁>K7K?߁>K7K?߁>^ L?V>^K?߁>K7 L?V>^ L?V>K7 L?V>K7 L?V>^tL?>^ L?V>K7tL?>^tL?>K7tL?>K7tL?>^L?A}>^tL?>K7L?A}>^L?A}>K7L?A}>K7L?A}>^L?Pz>^L?A}>K7L?Pz>^L?Pz>K7< ?p>D֣0?p>D֣0?p>֣0?p>< ?p>< ?p>D< ?D< ?󽾬أ0?j绾أ0?j绾أ0?D< ?D< ?_d>D< ?_d>֣0?]d>֣0?]d>֣0?]d>D< ?_d>D֣0?]d>֣0?p>֣0?p>D֣0?p>D֣0?]d>D֣0?]d>E(|DE(|EJEJEJDE(|DD(|DDJDDJDJD(|D(|DY(|DY(|aHaHaHDY(|D1(|D9HD9H9H1(|1(|DqEF?DqEF?qE(|?qE(|?qE(|?DqEF?DkDF?DkD(|?DkD(|?kD(|?kDF?kDF?D*PH?D2P(|?D2P(|?2P(|?*PH?*PH?DPH?DPH?X(|?X(|?X(|?DPH?Dף?< ?< [?ף?< [?qף?qף?[?)?_qף?)?_)ף?_)ף?_)?_<?")ף?_<?"<ף?"<ף?"<?"W?֑<ף?"W?֑Wף?֑Wף?֑W?֑?Wף?֑?бף?бף?? ~?ڊбף? ~?ڊ~ף?ڊ~ף?ڊ ~?ڊ0?}=ף?ڊ}=?ڊ=?}=ף?ڊ=?=ף?=ף?=?W=?֑=ף?W=?֑W=ף?֑W=ף?֑W=?֑;=?"W=ף?֑;=?";=ף?";=ף?";=?")=?_;=ף?")=?_)=ף?_)=ף?_)=?_E=?)=ף?_E=?/=ף?/=ף?E=?=?< /=ף?=?< y=ף?< y=ף?< =?< y=ף?+y=ף?+=?< =?ҩ=?ҩ=?,y=ף?+y=ף?+=?,=?33y=ף?+=?33=?+)=?գ/=ף?E=?E=?/=ף?y=ף?+E=?y=ף?+=?+W=?*㣿;=ף? )=?գ)=?գ;=ף? )=ף?գ)=?գ)=ף?գ/=ף?W=?*㣿;=? ;=ף? ;=ף? ;=? W=?^^;=ף? W=?^^W=ף?^^W=ף?^^W=?^^=?;W=ף?^^=?;=ף?;=ף?;=?;}=?d=ף?;}=?d}=ף?d}=ף?d}=?d=?9~ף?d ~?d?;~ף?d?;бף?;бף?;?;W?^^бף?;W?^^Wף?^^Wף?^^W?^^<? Wף?^^<? <ף? <ף? <? m?*㣿<ף? m?*㣿)ף?գm?*㣿)?գ)ף?գ)ף?գ)?գ[?)ף?գ[?qף?qף?[??+qף??+ף?+?ҩ?< ף?< ף?+?+?33ף?+?33ף?< ף?< ?33?,ף?< ?,?ҩ?A`.Ӛ?A`?І?І.Ӛ?A`.Ӛ?І`w@ ?A`?A``w@ ?І`w@ ?І?A`?І`K2 ?A``w@ ?A``K2 ?І`K2 ?І`w@ ?A``w@ ?І$= ?A``K2 ?A`#9 ?І#9 ?І`K2 ?A``K2 ?І笾K2 ?A`"; ?A`笾K2 ?І笾K2 ?І"; ?A`"; ?І笾w@ ?A`笾K2 ?A`笾w@ ?І笾w@ ?І笾K2 ?A`笾K2 ?ІǪ?A`笾w@ ?A`ǪI?ІǪI?І笾w@ ?A`笾w@ ?ІӚ?A`Ǫ?A`Ӛ?ІӚ?ІǪ?A`ǪI?І"; ?A`笾K2 ?A`P ?A``K2 ?A`P ?A`笾K2 ?A``K2 ?A`笾K2 ?A``w@ ?A``w@ ?A`笾K2 ?A`笾w@ ?A``w@ ?A`笾w@ ?A`?A`Ӛ?A`b)ef?A`Ǫ?A``w@ ?І笾w@ ?І`K2 ?І`K2 ?І笾w@ ?І笾K2 ?І.Ӛ?ІRef?І?І+t?A`vӚ?A`+tI?І+tI?ІvӚ?A`vӚ?Іc w@ ?A`+t?A`c w@ ?Іc w@ ?І+t?A`+tI?Іc K2 ?A`c w@ ?A`c K2 ?Іc K2 ?Іc w@ ?A`c w@ ?ІE= ?A`c K2 ?A`D; ?ІD; ?Іc K2 ?A`c K2 ?І K2 ?A`; ?A` K2 ?І K2 ?І; ?A`= ?І w@ ?A` K2 ?A` w@ ?І w@ ?І K2 ?A` K2 ?ІI?A` w@ ?A`I?ІI?І w@ ?A` w@ ?ІvӚ?A`I?A`vӚ?ІvӚ?ІI?A`I?І; ?A` K2 ?A`  ?A`c K2 ?A`  ?A` K2 ?A`c K2 ?A` K2 ?A`c w@ ?A`c w@ ?A` K2 ?A` w@ ?A`c w@ ?A` w@ ?A`+t?A`vӚ?A`ef?A`I?A` K2 ?Іc K2 ?І w@ ?І w@ ?Іc K2 ?Іc w@ ?Іx>ؾ7q>ؾ7q>ƻ7q>ƻx>ƻx>ؾ5r>ؾĔ>ؾ7q>ؾ7q>ؾx>ؾ5r>ؾ5r>ҽ#g>ƻƘ>ƻƘ>ƻĔ>ҽ5r>ҽ#g>ƻx>ƻ7q>ƻ7q>ƻƘ>ƻ#g>ƻ5r>ؾ5r>ҽĔ>ҽĔ>ҽĔ>ؾ5r>ؾ5r>ҽ5r>ؾx>ؾx>ƻ#g>ƻ5r>ҽx>ƻ5r>ҽx>ؾĔ>ҽ7q>ؾĔ>ؾ7q>ƻ7q>ؾĔ>ҽ7q>ƻĔ>ҽƘ>ƻ6Q5 ?ҽZ1?ؾ6Q5 ?ؾZ1?ƻZ1?ؾ6Q5 ?ҽZ1?ƻ6Q5 ?ҽm%' ?ƻk=J>]?^k=J>]?zk=J>?zk=J>?zk=J>?^k=J>]?^u=J[?^u=J[?zu=J?zu=J?zu=J?^u=J[?^k=J>]?zu=J[?zu=J?zu=J?zk=J>?zk=J>]?zk=J>]?^u=J[?^u=J?^u=J?^k=J>?^k=J>]?^k=J>?^k=J>?zu=J?zu=J?zu=J?^k=J>?^k=J>]?^k=J>]?zu=J[?zu=J[?zu=J[?^k=J>]?^=ף?;}=ף?d}=ף?ڊ}=ף?ڊ=ף?=ף?;W=ף?^^=ף?;=ף?=ף?W=ף?֑W=ף?^^;=ף? W=ף?^^W=ף?֑W=ף?֑;=ף?";=ף? )=ף?գ;=ף? ;=ף?";=ף?")=ף?_)=ף?գ/=ף?)=ף?գ)=ף?_)=ף?_/=ף?/=ף?y=ף?+/=ף?/=ף?/=ף?y=ף?< y=ף?+qף?ף?+ף?< ף?< qף?qף?)ף?գqף?qף?qף?)ף?_)ף?գ<ף? )ף?գ)ף?_)ף?_<ף?"<ף? Wף?^^<ף? <ף?"<ף?"Wף?֑Wף?^^бף?;Wף?^^Wף?֑Wף?֑бף?бף?;~ף?dбף?;бף?бף?~ף?ڊ~ף?d"; ?A`P ?A`P ?ІP ?І"; ?І"; ?A`c ?A`$= ?A`#9 ?І#9 ?Іc ?Іc ?A`P ?A`c ?A`c ?Іc ?ІP ?ІP ?A``K2 ?A`$= ?A`c ?A`P ?A``K2 ?A`c ?A`Ref?A`.Ӛ?A`?A`Ǫ?A`?A`笾w@ ?A`Ǫ?A`Ref?A`?A`Ǫ?A`b)ef?A`Ref?A`Ӛ?A`Ӛ?Іb)ef?ІӚ?A`b)ef?Іb)ef?A`Ref?A`Ref?І.Ӛ?І.Ӛ?І.Ӛ?A`Ref?A`c K2 ?A`E= ?A`  ?A`  ?A`c K2 ?A`  ?A`I?A`+t?A` w@ ?A`[Bef?A`vӚ?A`+t?A`I?A`ef?A`+t?A`ef?A`[Bef?A`+t?A`= ?І  ?І K2 ?І; ?A`  ?A`= ?І  ?A`  ?І= ?І  ?A`  ?A`  ?І  ?A`  ?І  ?І  ?A`E= ?A`  ?ІE= ?A`D; ?І  ?ІvӚ?A`vӚ?Іef?ІvӚ?A`ef?Іef?A`[Bef?A`[Bef?ІvӚ?І[Bef?A`vӚ?ІvӚ?A``K2 ?Іc ?І#9 ?ІvӚ?ІI?Іef?І+tI?ІvӚ?І[Bef?Іc w@ ?І+tI?І[Bef?Іef?ІI?І w@ ?Іc w@ ?І[Bef?Іef?Іc w@ ?Іef?І w@ ?І  ?ІD; ?Іc K2 ?Іc K2 ?І K2 ?І  ?Іc K2 ?І  ?І  ?ІP ?І笾K2 ?І"; ?ІRef?І`w@ ?І?Іb)ef?І`w@ ?ІRef?І笾w@ ?І`w@ ?Іb)ef?І笾w@ ?Іb)ef?ІǪI?І笾K2 ?ІP ?Іc ?І笾K2 ?Іc ?І`K2 ?ІӚ?ІǪI?Іb)ef?ІzT(?ԬzT'\O?Ԭh'\O?Ԭh'\O?Ԭh(?ԬzT(?Ԭj@V(?+l@V'\O?+G0g'\O?+G0g'\O?+E0g(?+j@V(?+zT(?Ԭj@V(?+l@V'\O?+l@V'\O?+zT'\O?ԬzT(?ԬE0g(?+h(?Ԭh'\O?Ԭh'\O?ԬG0g'\O?+E0g(?+zT'\O?Ԭl@V'\O?+G0g'\O?+G0g'\O?+h'\O?ԬzT'\O?ԬzT(?Ԭh(?ԬE0g(?+E0g(?+j@V(?+zT(?Ԭ)(?Ԭ)&\O?ԬT.&\O?ԬT.&\O?ԬT.(?Ԭ)(?Ԭ *(?+ *&\O?+F.&\O?+F.&\O?+F.(?+ *(?+)(?Ԭ *(?+ *&\O?+ *&\O?+)&\O?Ԭ)(?Ԭ)&\O?Ԭ *&\O?+F.&\O?+F.&\O?+T.&\O?Ԭ)&\O?ԬF.(?+T.(?ԬT.&\O?ԬT.&\O?ԬF.&\O?+F.(?+)(?ԬT.(?ԬF.(?+F.(?+ *(?+)(?Ԭ\@V)\O+^@V(+90g(+90g(+70g)\O+\@V)\O+zT)\OԬzT(Ԭh(Ԭh(Ԭh)\OԬzT)\OԬzT(Ԭ^@V(+90g(+90g(+h(ԬzT(ԬzT)\OԬ\@V)\O+^@V(+^@V(+zT(ԬzT)\OԬzT)\OԬh)\OԬ70g)\O+70g)\O+\@V)\O+zT)\OԬ70g)\O+h)\OԬh(Ԭh(Ԭ90g(+70g)\O+ **\O+ *(+F.(+F.(+F.*\O+ **\O+)*\OԬ)(ԬP.(ԬP.(ԬP.*\OԬ)*\OԬ)(Ԭ *(+F.(+F.(+P.(Ԭ)(Ԭ)*\OԬ **\O+ *(+ *(+)(Ԭ)*\OԬ)*\OԬP.*\OԬF.*\O+F.*\O+ **\O+)*\OԬF.*\O+P.*\OԬP.(ԬP.(ԬF.(+F.*\O+ӣ5|ӣ1| 1| 1| 5|ӣ5|ӣgf6ʥӣG1ʥ G1ʥ G1ʥ gf6ʥӣgf6ʥ gf6ʥ 5| 1| 1| G1ʥ gf6ʥӣgf6ʥӣ5| 5| 5| gf6ʥӣgf6ʥӣgf6ʥӣG1ʥӣ1|ӣ1|ӣ5|ӣgf6ʥӣG1ʥ G1ʥ 1| 1|ӣ1|ӣG1ʥt՚A`v՚A`v՚Іv՚Іt՚Іt՚A`  A`  A`  І  І  І  A`t՚І  І  І  Іv՚Іt՚І  A`v՚A`v՚Іv՚І  І  A`t՚A`v՚A`  A`  A`  A`t՚A`t՚A`  A`  І  Іt՚Іt՚A`՚A`LgfA`LgfІLgfІ\)gfІ՚A`J A`] A`] І] ІJ ІJ A`՚A`J A`] A`] A`LgfA`՚A`] A`] ІLgfІLgfІLgfA`] A`՚A`\)gfІJ ІJ ІJ A`՚A`\)gfІLgfІ] І] ІJ І\)gfІn4 ?ZA`n4 ?ZІn4 ?q?Іn4 ?q?Іn4 ?q?A`n4 ?ZA`s%?ܽІs%?^Іn4 ?q?Іn4 ?q?Іn4 ?ZІs%?ܽІs%?ܽA`s%?ܽІn4 ?ZІn4 ?ZІn4 ?ZA`s%?ܽA`s%?ܽA`s%?^A`s%?^Іs%?^Іs%?ܽІs%?ܽA`s%?^A`n4 ?q?A`n4 ?q?Іn4 ?q?Іs%?^Іs%?^A`n4 ?ZA`n4 ?q?A`s%?^A`s%?^A`s%?ܽA`n4 ?ZA`s%?=A`n4 ??=A`n4 ??=Іn4 ??=Іs%?=Іs%?=A`n4 ??=A`n4 ?%Z=A`n4 ?%Z=Іn4 ?%Z=Іn4 ??=Іn4 ??=A`s%?=A`s%?=Іs%?;=Іs%?;=Іs%?;=A`s%?=A`s%?=Іn4 ??=Іn4 ?%Z=Іn4 ?%Z=Іs%?;=Іs%?=Іs%?;=A`s%?;=Іn4 ?%Z=Іn4 ?%Z=Іn4 ?%Z=A`s%?;=A`s%?=A`s%?;=A`n4 ?%Z=A`n4 ?%Z=A`n4 ??=A`s%?=A`}=ף?ڊ~ף?ڊ0?0?=?}=ף?ڊ}=ף?d=?90?90?9~ף?d}=ף?d}=ף?d~ף?d~ף?ڊ~ף?ڊ}=ף?ڊ}=ף?dأ0?EI h?EI أ0?Eأ0?Eh?EI h?Eأ0?AzI أ0?EI أ0?Azأ0?Azأ0?EI أ0?Eh?EI h??zI h?Eh?Eh??zI h??zh??zI أ0?AzI h??zh??zأ0?AzI أ0?AzRTo-?d;d;RTo-?뵿RTo-?뵿d;뵿RTo-?뵿뵿R$X,?뵿R$X,?뵿뵿wE8?^d>뵿R$X,?뵿wE8?^d>뵿R$X,?RR$X,?RwE8?^d>뵿wE8?^d>RR$X,?RwE8?^d>RSQ9?RSQ9?RwE8?^d>R,]?^d>RSQ9?R,]?^d>RSQ9?뵿SQ9?뵿,]?^d>R,]?^d>뵿SQ9?뵿,]?^d>뵿S8?뵿S8?뵿,]?^d>뵿 Z?^d>뵿S8?뵿 Z?^d>뵿S8?d;S8?d; Z?^d>뵿 Z?^d>d;S8?d; Z?^d>d;RTo-?d;RTo-?d; Z?^d>d;d; Z?^d>뵿,]?^d>뵿 Z?^d>d; Z?^d>d;,]?^d>뵿,]?^d>R Z?^d>d;,]?^d>Rd;d;,]?^d>RwE8?^d>Rd;wE8?^d>R뵿뵿wE8?^d>RwE8?^d>뵿RTo-?뵿R$X,?뵿RTo-?d;RTo-?d;R$X,?뵿R$X,?RRTo-?d;R$X,?RS8?d;S8?d;R$X,?RSQ9?RS8?d;SQ9?RS8?뵿S8?뵿SQ9?RSQ9?뵿>D;?Vdd;6n-d;>D;?Vd뵿>D;?Vd뵿6n-d;6n-뵿>D;?Vd뵿6n-뵿yE8?Vd뵿yE8?Vd뵿6n-뵿6%X,뵿yE8?Vd뵿6%X,뵿yE8?VdRyE8?VdR6%X,뵿6%X,RyE8?VdR6%X,R.]?VdR.]?VdR6%X,R5Q9R.]?VdR5Q9R.]?Vd뵿.]?Vd뵿5Q9R5Q9뵿.]?Vd뵿5Q9뵿Z?Vd뵿Z?Vd뵿5Q9뵿5"8뵿Z?Vd뵿5"8뵿Z?Vdd;Z?Vdd;5"8뵿5"8d;Z?Vdd;5"8d;>D;?Vdd;>D;?Vdd;5"8d;6n-d;5"8뵿5Q9뵿5"8d;5"8d;5Q9뵿5Q9R5"8d;5Q9R6n-d;6n-d;5Q9R6%X,R6n-d;6%X,R6n-뵿6n-뵿6%X,R6%X,뵿>D;?Vd뵿yE8?Vd뵿>D;?Vdd;>D;?Vdd;yE8?Vd뵿yE8?VdR>D;?Vdd;yE8?VdRZ?Vdd;Z?Vdd;yE8?VdR.]?VdRZ?Vdd;.]?VdRZ?Vd뵿Z?Vd뵿.]?VdR.]?Vd뵿 P03S?6P03S?.ŵP03S?P03S?.ŵ P03S?6ObP03S?ٵ!D03S?-D03S?O1D03S?/f#P03S?浿ObP03S?ٵ ׷4?t> ׷d?t>뵿d?t>뵿4?t> ׷4?t>뵿g?O> ׷d?t> ׷g?O>뵿g?O>뵿d?t> ׷d?t>뵿g?kf> ׷g?O> ׷g?kf>뵿g?kf>뵿g?O> ׷g?O>뵿d?A> ׷g?kf> ׷d?A>뵿d?A>뵿g?kf> ׷g?kf>뵿4?A> ׷d?A> ׷4?A>뵿4?A>뵿d?A> ׷d?A>뵿1?jf> ׷4?A> ׷1?jf>뵿1?jf>뵿4?A> ׷4?A>뵿1?O> ׷1?jf> ׷1?O>뵿1?O>뵿1?jf> ׷1?jf>뵿4?t> ׷1?O> ׷4?t>뵿4?t>뵿1?O> ׷1?O>뵿1?jf> ׷1?O> ׷4?A> ׷4?A> ׷1?O> ׷4?t> ׷4?A> ׷4?t> ׷d?A> ׷d?A> ׷4?t> ׷d?t> ׷d?A> ׷d?t> ׷g?kf> ׷g?kf> ׷d?t> ׷g?O> ׷g?kf>뵿g?O>뵿d?A>뵿d?A>뵿g?O>뵿d?t>뵿d?A>뵿d?t>뵿4?A>뵿4?A>뵿d?t>뵿4?t>뵿4?A>뵿4?t>뵿1?jf>뵿1?jf>뵿4?t>뵿1?O>뵿e_?ñe_> ?ñ)Z;?z)Z;?ze_> ?ñ'Z;> ?z)Z;?z'Z;> ?zشT?k!شT?k!'Z;> ?zִT> ?k!8?.8> ?.*?.*?.8> ?.*> ?.8?.*?.8?Z !8?Z !*?.m?ztj?z)Z;?zشT?k!e_?ñ)Z;?ztj?z8> ?Z !m> ?z8> ?.8> ?.m> ?z*> ?.'Z;> ?ztj> ?zִT> ?k!tj> ?z'Z;> ?ze_> ?ñ/\fz?.\fQ?'fQ?</\fz?'fQ?<'fz?<'fz?<'fQ?<~ueQ?['fz?<~ueQ?[uez?[uez?[~ueQ?[ddQ? cuez?[ddQ? cddz? cddz? cddQ? cYcQ?<ddz? cYcQ?<Zcz?<Zcz?<YcQ?<oRaQ? Zcz?<oRaQ? pRaz? pRaz? oRaQ? p_Q?ڰ pRaz? p_Q?ڰ p_z?ڰ p_z?ڰ p_Q?ڰ B]Q?: p_z?ڰ B]Q?: C]z?: C]z?: B]Q?: [Q? C]z?: [Q? [z? [z? [Q? YQ? [z? YQ? Yz? Yz? YQ? dXQ?GFYz? dXQ?GFdXz?GFdXz?GFdXQ?GF:P0>Yc>PYc>P0>L?Yc>PL?)I_>`0>] >PW]b>/0>W]b>/a:>a:>W]b>/N].8>#̤a:>N].8>#̤Ө-^>`OӨ-^>`ON].8>#̤(]K>.Ө-^>`O(]K>.>>(]K>.b^x>a>b^x>a9y+>M9y+>Mb^x>aT^Ø>r9y+>MT^Ø>rc2>c2>T^Ø>r^>Ř>qc2>^>Ř>qNJ?>8ц>z>^ܚ3>8ц>^ܚ3>8 >8ц>8 >63>8ц>63>z>8ц>z>ꕿ >8ц>ꕿ >#`I>8ц>#`I>8>8ц>8>jц>8ц>jц>h>8ц>h>#!b?8ц>#!b?ꕿĀ?8ц>ꕿĀ?!?8ц>!?6'?8ц>6'?8ـ?8ц>8ـ?^ܚ'?8ц>^ܚ'?!?8ц>!?'Ā?8ц>'Ā?M!b?8ц>M!b?`{h>8ц>`{h>񧞿ц>8ц>񧞿ц>`{8>8ц>`{8>M`I>8ц>M`I>' >8ц>' >z>8,8>X9ꕿ >X9z>X98,8>X9z>X963>X98,8>X963>X98 >X98,8>X98 >X9^ܚ3>X98,8>X9^ܚ3>X9z>X98,8>X9z>X9' >X98,8>X9' >X9M`I>X98,8>X9M`I>X9`{8>X98,8>X9`{8>X9񧞿ц>X98,8>X9񧞿ц>X9`{h>X98,8>X9`{h>X9M!b?X98,8>X9M!b?X9'Ā?X98,8>X9'Ā?X9!?X98,8>X9!?X9^ܚ'?X98+9?X98ـ?X98,8>X98,8>X98ـ?X96'?X98,8>X96'?X9!?X98,8>X9!?X9ꕿĀ?X98,8>X9ꕿĀ?X9#!b?X98,8>X9#!b?X9h>X98,8>X9h>X9jц>X98,8>X9jц>X98>X98,8>X98>X9#`I>X98,8>X9#`I>X9ꕿ >X9`{8>M`I>X9M`I>M`I>M`I>X9' >X9M`I>' >X9' >' >' >X9z>X9' >z>X9z>z>z>X9^ܚ3>X9z>^ܚ3>X9^ܚ3>^ܚ3>^ܚ3>X98 >X9^ܚ3>8 >X98 >8 >8 >X963>X98 >63>X963>63>63>X9z>X963>z>X9z>z>z>X9ꕿ >X9z>ꕿ >X9ꕿ >ꕿ >ꕿ >X9#`I>X9ꕿ >#`I>X9#`I>#`I>#`I>X98>X9#`I>8>X98>8>8>X9jц>X98>jц>X9jц>jц>jц>X9h>X9jц>h>X9h>h>h>X9#!b?X9h>#!b?X9#!b?#!b?#!b?X9ꕿĀ?X9#!b?ꕿĀ?X9ꕿĀ?ꕿĀ?ꕿĀ?X9!?X9ꕿĀ?!?X9!?!?!?X96'?X9!?6'?X96'?6'?6'?X98ـ?X96'?8ـ?X98ـ?8ـ?8ـ?X9^ܚ'?X98ـ?^ܚ'?X9^ܚ'?^ܚ'?^ܚ'?X9!?X9^ܚ'?!?X9!?!?!?X9'Ā?X9!?'Ā?X9'Ā?'Ā?'Ā?X9M!b?X9'Ā?M!b?X9M!b?M!b?M!b?X9`{h>X9M!b?`{h>X9`{h>`{h>`{h>X9񧞿ц>X9`{h>񧞿ц>X9񧞿ц>񧞿ц>񧞿ц>X9`{8>X9񧞿ц>`{8>X9`{8>`{8>`{8>X9M`I>X98ц>8,8>X98+9?X9ʝ>>>X9>X9>IĜB>X9IĜB>X9>IĜB>IĜB>X9IĜB>MN>X9MN>X9IĜB>MN>MN>X9MN>{>X9MN>{>{>X9{>X9{>>{>X9>>X9>X9>W>>X9W>W>X9W>X9W>i\Y7>X9i\Y7>X9W>i\Y7>i\Y7>X9i\Y7>+K>X9+K>X9i\Y7>+K>+K>X9+K> fn>X9 fn>X9+K> fn> fn>X9 fn>G{>X9 fn>G{>G{>X9G{>X9G{> Y>G{>X9 Y> Y>X9 Y>X9 Y>p> Y>X9p>p>X9p>X9p>>p>X9>>X9>X9>̓8>X9̓8>X9>̓8>̓8>X9̓8>쐓T>X9쐓T>X9̓8>쐓T>쐓T>X9쐓T>O>X9쐓T>O>O>X9O>X9O>m;>O>X9m;>m;>X9m;>X9m;>m>j>m;>X9m>j>m>j>X9m>j>X9m>j>r>m>j>X9r>r>X9r>X9r>>X9>X9r>>>X9>xۑ!>X9>xۑ!>xۑ!>X9xۑ!>X9xۑ!>y>xۑ!>X9y>y>X9y>X9y>[/ĵ?y>X9[/ĵ?[/ĵ?X9[/ĵ?X9[/ĵ?%?[/ĵ?X9%?%?X9%?X9%?Ⓙ}?X9Ⓙ}?X9%?Ⓙ}?Ⓙ}?X9Ⓙ}?2l?X9Ⓙ}?2l?2l?X92l?X92l?K?2l?X9K?K?X9K?X9K?v͔[ ?K?X9v͔[ ?v͔[ ?X9v͔[ ?X9v͔[ ?"ȕ ?v͔[ ?X9"ȕ ?"ȕ ?X9"ȕ ?X9"ȕ ? ?X9 ?X9"ȕ ? ? ?X9 ?ٖ ?X9 ?ٖ ?ٖ ?X9ٖ ?X9ٖ ?oM ?ٖ ?X9oM ?oM ?X9oM ?X9oM ?$S ?oM ?X9$S ?$S ?X9$S ?X9$S ?Q ?$S ?X9Q ?Q ?X9Q ?X9Q ?5g ?X95g ?X9Q ?5g ?5g ?X95g ?y ?X95g ?y ?y ?X9y ?X9y ?i[ ?y ?X9i[ ?i[ ?X9i[ ?X9i[ ?РB ?i[ ?X9РB ?РB ?X9РB ?X9РB ?P0?РB ?X9P0?P0?X9P0?X9P0?e/?P0?X9e/?e/?X9e/?X9e/?Ղ?X9Ղ?X9e/?Ղ?Ղ?X9Ղ?IWG?X9Ղ?IWG?IWG?X9IWG?X9IWG?BA/?IWG?X9BA/?BA/?X9BA/?X9BA/??BA/?X9??X9?X9?wp7>X9wp7>X9?wp7>wp7>X9wp7>o/ D>X9o/ D>X9wp7>o/ D>o/ D>X9o/ D> 3.>X9 3.>X9o/ D> 3.> 3.>X9 3.>^3ϐ>X9 3.>^3ϐ>^3ϐ>X9^3ϐ>X9^3ϐ> >^3ϐ>X9 > >X9 >X9 >g> >X9g>g>X9g>X9g>/*>g>X9/*>/*>X9/*>X9/*>Dž I>Dž I>X9Dž I>>>X9>ʝ>>X9ʝ>ʝ>X9ʝ>X9ʝ>>X9d_>Ǿfqo>ǾϠqi>_Ⱦd_>ǾϠqi>_Ⱦd>_Ⱦd>_ȾϠqi>_Ⱦqᤗ>,ɾd>_Ⱦqᤗ>,ɾԤd݌>,ɾԤd݌>,ɾqᤗ>,ɾqW>+ɾԤd݌>,ɾqW>+ɾd̑>+ɾd̑>+ɾqW>+ɾXqG>ʾd̑>+ɾXqG>ʾvd5>ʾeʊ>Y˾r >Y˾uq˾eʊ>Y˾uq˾@:e >uq˾@:e >uq˾uq˾drP>NS˾@:e >uq˾drP>NS˾:beM>NS˾:beM>NS˾drP>NS˾ψr]b>kʾ:beM>NS˾ψr]b>kʾEe>kʾEe>kʾψr]b>kʾEr˒>}ʾEe>kʾEr˒>}ʾe>}ʾe>}ʾEr˒>}ʾܿrIX>4ɾe>}ʾܿrIX>4ɾe>4ɾe>4ɾܿrIX>4ɾFr>ɾe>4ɾFr>ɾdeK>ɾdeK>ɾFr>ɾr:>DȾdeK>ɾr:>DȾez5>DȾez5>DȾr:>DȾr>wǾez5>DȾr>wǾeP>wǾeP>wǾr>wǾ=rd>ƾeP>wǾ=rd>ƾ[eT>ƾ[eT>ƾ=rd>ƾVrܒ>ƾ[eT>ƾVrܒ>ƾte>ƾte>ƾVrܒ>ƾ8rVw>Nžte>ƾ8rVw>NžVeF>NžVeF>Nž8rVw>Nž_r*>IžVeF>Nž_r*>Iž\ec>Iž\ec>Iž_r*>Iž7rE>`2ž\ec>Iž7rE>`2ž5e3#>`2ž5e3#>`2ž7rE>`2ž9rR>Pž5e3#>`2ž9rR>PžWe>PžWe>Pž9rR>PžqEY>hžWe>PžqEY>hžd>hžd>hžqEY>hžqR>+&ƾd>hžqR>+&ƾ/d@*>+&ƾqE> ˾q4>K;r >Y˾r >Y˾q4>K;'r>£;r >Y˾'r>£;uq˾uq˾'r>£;Srd>;uq˾Srd>;drP>NS˾drP>NS˾Srd>;Srl8>d;drP>NS˾Srl8>d;ψr]b>kʾψr]b>kʾSrl8>d;Xr{&>̾ψr]b>kʾXr{&>̾Er˒>}ʾEr˒>}ʾXr{&>̾r;>˾Er˒>}ʾr;>˾ܿrIX>4ɾܿrIX>4ɾr;>˾2 s>bʾܿrIX>4ɾ2 s>bʾFr>ɾFr>ɾ2 s>bʾr8s>ɾFr>ɾr8s>ɾr:>DȾr:>DȾr8s>ɾAs>sȾr:>DȾAs>sȾr>wǾr>wǾAs>sȾ;s:>)Ǿr>wǾ;s:>)Ǿ=rd>ƾ=rd>ƾ;s:>)Ǿ&s%j>nž=rd>ƾ&s%j>nžVrܒ>ƾVrܒ>ƾ&s%j>nž]s>ľVrܒ>ƾ]s>ľ8rVw>Nž]s>ľr^>þ8rVw>Nž8rVw>Nžr^>þȝr>Wþ8rVw>Nžȝr>Wþ_r*>Iž_r*>Ižȝr>Wþ.`r&>þ_r*>Iž.`r&>þ7rE>`2ž7rE>`2ž.`r&>þ r_X>7¾7rE>`2ž r_X>7¾9rR>Pž9rR>Pž r_X>7¾q>>þ9rR>Pžq>>þqEY>hžqEY>hžq>>þqv>þqEY>hžqv>þqR>+&ƾqR>+&ƾqv>þ~yq>ľqR>+&ƾ~yq>ľxqXc>ƾxqXc>ƾ~yq>ľ#Tq5>#žxqXc>ƾ#Tq5>#žfqo>Ǿfqo>Ǿ#Tq5>#ž;qO>(ƾfqo>Ǿ;qO>(ƾϠqi>_ȾϠqi>_Ⱦ;qO>(ƾ2qՙ>/ȾϠqi>_Ⱦ2qՙ>/Ⱦqᤗ>,ɾqᤗ>,ɾ2qՙ>/ȾC9q>#zɾqᤗ>,ɾC9q>#zɾqW>+ɾqW>+ɾC9q>#zɾfʾqW>+ɾfʾXqG>ʾXqG>ʾfʾpq>F˾XqG>ʾpq>F˾qE> ˾qE> ˾pq>F˾qɗ>̾qE> ˾qɗ>̾q4>K;NmI->ɾ2 s>bʾQ6m>bʾQ6m>bʾ2 s>bʾr;>˾Q6m>bʾr;>˾mU>˾mU>˾r;>˾Xr{&>̾mU>˾Xr{&>̾wl @>̾wl @>̾Xr{&>̾Srl8>d;wl @>̾Srl8>d;lR>d;lR>d;Srl8>d;Srd>;lR>d;Srd>;il7~>;il7~>;Srd>;'r>£;il7~>;'r>£;F*l>£;F*l>£;'r>£;q4>K;F*l>£;q4>K;Skב>K;Skב>K;q4>K;qɗ>̾kē>F˾pq>F˾fʾkē>F˾fʾ[dkql>fʾ[dkql>fʾfʾC9q>#zɾ[dkql>fʾC9q>#zɾbOk^є>#zɾbOk^є>#zɾC9q>#zɾ2qՙ>/ȾbOk^є>#zɾ2qՙ>/Ⱦ{Ik>/Ⱦ{Ik>/Ⱦ2qՙ>/Ⱦ;qO>(ƾ{Ik>/Ⱦ;qO>(ƾRk”>(ƾRk”>(ƾ;qO>(ƾ#Tq5>#žRk”>(ƾ#Tq5>#ž@jkO>#ž@jkO>#ž#Tq5>#ž~yq>ľ@jkO>#ž~yq>ľk>ľk>ľ~yq>ľqv>þk>ľqv>þkk>þkk>þqv>þq>>þkk>þq>>þk+>>þk+>>þq>>þ r_X>7¾k+>>þ r_X>7¾a7lRs>7¾a7lRs>7¾ r_X>7¾.`r&>þa7lRs>7¾.`r&>þKvl@>þKvl@>þ.`r&>þȝr>WþKvl@>þȝr>Wþld>Wþld>Wþȝr>Wþr^>þld>Wþr^>þl >þl >þr^>þ]s>ľl >þ]s>ľzm,>ľzm,>ľ]s>ľ&s%j>nžzm,>ľ&s%j>nžnž&s%j>nž;s:>)Ǿnž;s:>)ǾQm>)ǾQm>)Ǿ;s:>)ǾAs>sȾQm>)ǾAs>sȾWm>sȾWm>sȾAs>sȾr8s>ɾWm>sȾr8s>ɾNmI->ɾNmI->ɾr8s>ɾ2 s>bʾF*l>£;=l?Q>ξil7~>;il7~>;=l?Q>ξl> ξil7~>;l> ξlR>d;lR>d;l> ξl>=ξlR>d;l>=ξwl @>̾wl @>̾l>=ξ*m|>*;wl @>̾*m|>*;mU>˾mU>˾*m|>*;9m5>̾mU>˾9m5>̾Q6m>bʾQ6m>bʾ9m5>̾:bm͊>n˾Q6m>bʾ:bm͊>n˾NmI->ɾNmI->ɾ:bm͊>n˾}mJ>[ʾNmI->ɾ}mJ>[ʾWm>sȾWm>sȾ}mJ>[ʾm>ȾWm>sȾm>ȾQm>)ǾQm>)Ǿm>Ⱦm3#>CǾQm>)Ǿm3#>CǾnžm3#>CǾrmD>SžnžrmD>Sžzm,>ľzm,>ľrmD>SžPm$>ľzm,>ľPm$>ľl >þPm$>ľ!m=>þl >þl >þ!m=>þl>¾l >þl>¾ld>Wþld>Wþl>¾lP> -¾ld>WþlP> -¾Kvl@>þKvl@>þlP> -¾bl>$Kvl@>þbl>$a7lRs>7¾a7lRs>7¾bl>$*l&>¾a7lRs>7¾*l&>¾k+>>þk+>>þ*l&>¾k7>f¾k+>>þk7>f¾kk>þkk>þk7>f¾gka>]þkk>þgka>]þk>ľk>ľgka>]þfk^>' ľk>ľfk^>' ľ@jkO>#ž@jkO>#žfk^>' ľX>k">4ž@jkO>#žX>k">4žRk”>(ƾRk”>(ƾX>k">4žz#k>zƾRk”>(ƾz#k>zƾ{Ik>/Ⱦ{Ik>/Ⱦz#k>zƾk`ߕ>Ǿ{Ik>/Ⱦk`ߕ>ǾbOk^є>#zɾbOk^є>#zɾk`ߕ>Ǿk͕>_ɾbOk^є>#zɾk͕>_ɾ[dkql>fʾ[dkql>fʾk͕>_ɾ.ko>ʾ[dkql>fʾ.ko>ʾkē>F˾kē>F˾.ko>ʾ Pkn͔>̾Xe>;~k>; Pkn͔>̾Xe>; Pkn͔>̾fe>̾fe>̾ Pkn͔>̾.ko>ʾfe>̾.ko>ʾDe느>ʾDe느>ʾ.ko>ʾk͕>_ɾDe느>ʾk͕>_ɾ1e>_ɾ1e>_ɾk͕>_ɾk`ߕ>Ǿ1e>_ɾk`ߕ>Ǿ-e>Ǿ-e>Ǿk`ߕ>Ǿz#k>zƾ-e>Ǿz#k>zƾ9eX>zƾ}ew>' ľfk^>' ľgka>]þ}ew>' ľgka>]þ-ez>]þ-ez>]þgka>]þk7>f¾-ez>]þk7>f¾e)Q>f¾e)Q>f¾k7>f¾*l&>¾e)Q>f¾*l&>¾I3f >¾I3f >¾*l&>¾bl>$I3f >¾bl>$hyf>$hyf>$bl>$lP> -¾hyf>$lP> -¾8fk> -¾8fk> -¾lP> -¾l>¾8fk> -¾l>¾fq2>¾fq2>¾l>¾!m=>þfq2>¾!m=>þ8g/>þ8g/>þ!m=>þPm$>ľ8g/>þPm$>ľfg=>ľfg=>ľPm$>ľrmD>Sžfg=>ľrmD>Sžg际>Sžg际>SžrmD>Sžm3#>CǾg际>Sžm3#>CǾg<>CǾg<>CǾm3#>CǾm>Ⱦg<>CǾm>Ⱦg+>Ⱦg+>Ⱦm>Ⱦ}mJ>[ʾg+>Ⱦ}mJ>[ʾߓg{e>[ʾߓg{e>[ʾ}mJ>[ʾ:bm͊>n˾ߓg{e>[ʾ:bm͊>n˾yg>>n˾yg>>n˾:bm͊>n˾9m5>̾yg>>n˾9m5>̾Og)>̾Og)>̾9m5>̾*m|>*;Og)>̾*m|>*;Ig >*;Ig >*;*m|>*;l>=ξIg >*;l>=ξfӈ>=ξfӈ>=ξl>=ξl> ξfӈ>=ξl> ξ-f> ξ-f> ξl> ξ=l?Q>ξ-f> ξ=l?Q>ξTf3l>ξߓg{e>[ʾeǯ>*eɾg+>Ⱦg+>Ⱦeǯ>*eɾed>Ⱦg+>Ⱦed>Ⱦg<>CǾg<>CǾed>Ⱦe/>bǾg<>CǾe/>bǾg际>Sžg际>Sže/>bǾe<φ>]ƾg际>Sže<φ>]ƾfg=>ľfg=>ľe<φ>]ƾe1>ƾfg=>ľe1>ƾ8g/>þ8g/>þe1>ƾe>vž8g/>þe>vžfq2>¾fq2>¾e>vžae]>dľfq2>¾ae]>dľ8fk> -¾8fk> -¾ae]>dľle!>2ľ8fk> -¾le!>2ľhyf>$hyf>$le!>2ľlCe>0|ľhyf>$lCe>0|ľI3f >¾I3f >¾lCe>0|ľeԬ>ľI3f >¾eԬ>ľe)Q>f¾e)Q>f¾eԬ>ľ0doq>Fľe)Q>f¾0doq>Fľ-ez>]þ-ez>]þ0doq>Fľ}d#>q.ž-ez>]þ}d#>q.ž}ew>' ľ}ew>' ľ}d#>q.ž d>>ž}ew>' ľ d>>žUe=>4žUe=>4ž d>>žʓd1>sƾUe=>4žʓd1>sƾ9eX>zƾ9eX>zƾʓd1>sƾfd >>Ǿ9eX>zƾfd >>Ǿ-e>Ǿ-e>Ǿfd >>Ǿ1|dm>>Ⱦ-e>Ǿ1|dm>>Ⱦ1e>_ɾ1e>_ɾ1|dm>>Ⱦ(~d>"Ⱦ1e>_ɾ(~d>"ȾDe느>ʾDe느>ʾ(~d>"Ⱦd_>xɾDe느>ʾd_>xɾfe>̾fe>̾d_>xɾFdF>%ʾfe>̾FdF>%ʾXe>;Xe>;FdF>%ʾtdEv>M-˾Tf3l>ξ2e>̾#-e%M>'̾Tf3l>ξ#-e%M>'̾-f> ξ-f> ξ#-e%M>'̾We>̾-f> ξWe>̾fӈ>=ξfӈ>=ξWe>̾e>˾fӈ>=ξe>˾Ig >*;Ig >*;e>˾ken >cu˾Ig >*;ken >cu˾Og)>̾Og)>̾ken >cu˾ebt>ʾOg)>̾ebt>ʾyg>>n˾yg>>n˾ebt>ʾel>T0ʾyg>>n˾el>T0ʾߓg{e>[ʾߓg{e>[ʾel>T0ʾeǯ>*eɾeP>wǾe/>bǾez5>DȾez5>DȾe/>bǾed>Ⱦez5>DȾed>ȾdeK>ɾdeK>ɾed>Ⱦeǯ>*eɾdeK>ɾeǯ>*eɾe>4ɾe>4ɾeǯ>*eɾel>T0ʾe>4ɾel>T0ʾe>}ʾe>}ʾel>T0ʾebt>ʾe>}ʾebt>ʾEe>kʾd̑>+ɾd_>xɾԤd݌>,ɾԤd݌>,ɾd_>xɾ(~d>"ȾԤd݌>,ɾ(~d>"Ⱦd>_Ⱦd>_Ⱦ(~d>"Ⱦ1|dm>>Ⱦd>_Ⱦ1|dm>>Ⱦd_>Ǿd_>Ǿ1|dm>>Ⱦfd >>Ǿd_>Ǿfd >>Ǿd>ƾd>ƾfd >>Ǿʓd1>sƾd>ƾʓd1>sƾ/d@*>+&ƾ/d@*>+&ƾʓd1>sƾ d>>ž/d@*>+&ƾ d>>žd>hžd>hž d>>ž}d#>q.žd>hž}d#>q.žWe>Pžebt>ʾken >cu˾Ee>kʾEe>kʾken >cu˾e>˾Ee>kʾe>˾:beM>NS˾:beM>NS˾e>˾We>̾:beM>NS˾We>̾@:e >uq˾@:e >uq˾We>̾#-e%M>'̾@:e >uq˾#-e%M>'̾eʊ>Y˾eʊ>Y˾#-e%M>'̾2e>̾eʊ>Y˾2e>̾d~> ˾d~> ˾2e>̾dы>q˾d~> ˾dы>q˾vd5>ʾvd5>ʾdы>q˾tdEv>M-˾vd5>ʾtdEv>M-˾d̑>+ɾd̑>+ɾtdEv>M-˾FdF>%ʾd̑>+ɾFdF>%ʾd_>xɾ}d#>q.ž0doq>FľWe>PžWe>Pž0doq>FľeԬ>ľWe>PžeԬ>ľ5e3#>`2ž5e3#>`2žeԬ>ľlCe>0|ľ5e3#>`2žlCe>0|ľ\ec>Iž\ec>IžlCe>0|ľle!>2ľ\ec>Ižle!>2ľVeF>NžVeF>Nžle!>2ľae]>dľVeF>Nžae]>dľte>ƾte>ƾae]>dľe>vžte>ƾe>vž[eT>ƾ[eT>ƾe>vže1>ƾ[eT>ƾe1>ƾeP>wǾeP>wǾe1>ƾe<φ>]ƾeP>wǾe<φ>]ƾe/>bǾ0Ŀ|?¾-0Ŀj?ĿS[ ?T+þĿS[ ?T+þ-0Ŀj?Ŀ~ ?0¾ĿS[ ?T+þĿ~ ?0¾ÿ ?rþÿ ?rþĿ~ ?0¾ÿH2 ?¾ÿ ?rþÿH2 ?¾ÿs ?2ľÿs ?2ľÿH2 ?¾ÿ ?þÿs ?2ľÿ ?þÿ ?.žÿ ?.žÿ ?þϪÿ> ?Ižÿ ?.žϪÿ> ?Ižÿ# ? Ǿÿ# ? ǾϪÿ> ?Ižcÿ ?ƾÿ# ? Ǿcÿ ?ƾ\ÿ- ?zȾ\ÿ- ?zȾcÿ ?ƾ!ÿk ?hȾ\ÿ- ?zȾ!ÿk ?hȾÿO ?ɾÿO ?ɾ!ÿk ?hȾÿNy ?w(ʾÿO ?ɾÿNy ?w(ʾÿ ?o%˾ÿ ?o%˾ÿNy ?w(ʾeÿ( ?˾ÿ ?o%˾eÿ( ?˾ÿKX ?O;̾ÿKX ?O;̾eÿ( ?˾Hÿ ?̾ÿKX ?O;̾Hÿ ?̾ÿ ?T;ÿ ?T;Hÿ ?̾ÿ ?;ÿ ?T;ÿ ?;Ŀ6 ?y;Ŀ6 ?y;ÿ ?;ĿR ?ξĿ6 ?y;ĿR ?ξ8Ŀy?ܰ;8Ŀy?ܰ;ĿR ?ξ9Ŀ2?ξ8Ŀy?ܰ;9Ŀ2?ξZĿ?x;ZĿ?x;9Ŀ2?ξaĿ?rξZĿ?x;aĿ?rξ;zĿ?V?d̾;zĿ?V?d̾aĿ?rξVĿ?7;;zĿ?V?d̾VĿ?7;ŔĿ?̾ŔĿ?̾VĿ?7;Ŀ}?3̾ŔĿ?̾Ŀ}?3̾èĿt?ʾèĿt?ʾĿ}?3̾ Ŀ ?Y˾èĿt?ʾ Ŀ ?Y˾Ŀ9?΍ɾĿ9?΍ɾ Ŀ ?Y˾uĿ?ɾĿ9?΍ɾuĿ?ɾ}Ŀo)?I)Ⱦ}Ŀo)?I)ȾuĿ?ɾdĿ1?l!Ⱦ}Ŀo)?I)ȾdĿ1?l!ȾĿC?ƾĿC?ƾdĿ1?l!ȾĿ?zƾĿC?ƾĿ?zƾӤĿ·?g~žӤĿ·?g~žĿ?zƾ!Ŀ ?ľӤĿ·?g~ž!Ŀ ?ľ3Ŀ?hľ3Ŀ?hľ!Ŀ ?ľ=Ŀ?*þ3Ŀ?hľ=Ŀ?*þYsĿw?þYsĿw?þ=Ŀ?*þ%Ŀ=?Ѯ¾YsĿw?þ%Ŀ=?Ѯ¾;SĿU?]þ;SĿU?]þ%Ŀ=?Ѯ¾XĿ?¾;SĿU?]þXĿ?¾0Ŀ|?¾0Ŀ|?¾XĿ?¾-0Ŀj?Pm">΍ɾm6>ɾH8mØ>ʾH8mØ>ʾm6>ɾ1dmÊ>Y˾H8mØ>ʾ1dmÊ>Y˾NmZ>̾NmZ>̾1dmÊ>Y˾Z4m>3̾NmZ>̾Z4m>3̾9l[>d̾9l[>d̾Z4m>3̾pl܌>7;9l[>d̾pl܌>7;Nll>x;Nll>x;pl܌>7;lD>rξNll>x;lD>rξ&Xlҏ>ܰ;&Xlҏ>ܰ;lD>rξZlˏ>ξ&Xlҏ>ܰ;Zlˏ>ξlh>y;lh>y;Zlˏ>ξ1lT>ξlh>y;1lT>ξk S>T;k S>T;1lT>ξ,kŒ>;k S>T;,kŒ>;k_>O;̾k_>O;̾,kŒ>;Tyk5>̾k_>O;̾Tyk5>̾'pku1>o%˾'pku1>o%˾Tyk5>̾Ek>˾'pku1>o%˾Ek>˾Skƹ>ɾSkƹ>ɾEk>˾!$kơ>w(ʾSkƹ>ɾ!$kơ>w(ʾ{Ik>zȾ{Ik>zȾ!$kơ>w(ʾk>hȾ{Ik>zȾk>hȾ Pkn͔> Ǿ Pkn͔> Ǿk>hȾk]>ƾ Pkn͔> Ǿk]>ƾIhkxW>.žIhkxW>.žk]>ƾaIžIhkxW>.žaIžk{>2ľk{>2ľaIž7lkmF>þk{>2ľ7lkmF>þk>rþk>rþ7lkmF>þɫk>¾k>rþɫk>¾le>T+þle>T+þɫk>¾kG>0¾le>T+þkG>0¾kHl!>¾kHl!>¾kG>0¾Gl%>kHl!>¾Gl%>;lӎ>]þ;lӎ>]þGl%>`lǜ>¾;lӎ>]þ`lǜ>¾ul~>þul~>þ`lǜ>¾ l&+>Ѯ¾ul~>þ l&+>Ѯ¾*m|>hľ*m|>hľ l&+>Ѯ¾>'m>*þ*m|>hľ>'m>*þj0mƾ>g~žj0mƾ>g~ž>'m>*þ[m>ľj0mƾ>g~ž[m>ľLms6>ƾLms6>ƾ[m>ľq|muN>zƾLms6>ƾq|muN>zƾWm>I)ȾWm>I)Ⱦq|muN>zƾm>l!ȾWm>I)Ⱦm>l!ȾPm">΍ɾPm">΍ɾm>l!Ⱦm6>ɾĿR ?ξ1lT>ξZlˏ>ξĿR ?ξZlˏ>ξ9Ŀ2?ξ9Ŀ2?ξZlˏ>ξlD>rξ9Ŀ2?ξlD>rξaĿ?rξaĿ?rξlD>rξpl܌>7;aĿ?rξpl܌>7;VĿ?7;VĿ?7;pl܌>7;Z4m>3̾VĿ?7;Z4m>3̾Ŀ}?3̾Ŀ}?3̾Z4m>3̾1dmÊ>Y˾Ŀ}?3̾1dmÊ>Y˾ Ŀ ?Y˾ Ŀ ?Y˾1dmÊ>Y˾m6>ɾ Ŀ ?Y˾m6>ɾuĿ?ɾuĿ?ɾm6>ɾm>l!ȾuĿ?ɾm>l!ȾdĿ1?l!ȾdĿ1?l!Ⱦm>l!Ⱦq|muN>zƾdĿ1?l!Ⱦq|muN>zƾĿ?zƾĿ?zƾq|muN>zƾ[m>ľĿ?zƾ[m>ľ!Ŀ ?ľ!Ŀ ?ľ[m>ľ>'m>*þ!Ŀ ?ľ>'m>*þ=Ŀ?*þ=Ŀ?*þ>'m>*þ l&+>Ѯ¾=Ŀ?*þ l&+>Ѯ¾%Ŀ=?Ѯ¾%Ŀ=?Ѯ¾ l&+>Ѯ¾`lǜ>¾%Ŀ=?Ѯ¾`lǜ>¾XĿ?¾XĿ?¾`lǜ>¾Gl%>XĿ?¾Gl%>-0Ŀj?-0Ŀj?Gl%>kG>0¾-0Ŀj?kG>0¾Ŀ~ ?0¾Ŀ~ ?0¾kG>0¾ɫk>¾Ŀ~ ?0¾ɫk>¾ÿH2 ?¾ÿH2 ?¾ɫk>¾7lkmF>þÿH2 ?¾7lkmF>þÿ ?þÿ ?þ7lkmF>þaIžÿ ?þaIžϪÿ> ?IžϪÿ> ?IžaIžk]>ƾϪÿ> ?Ižk]>ƾcÿ ?ƾcÿ ?ƾk]>ƾk>hȾcÿ ?ƾk>hȾ!ÿk ?hȾ!ÿk ?hȾk>hȾ!$kơ>w(ʾ!ÿk ?hȾ!$kơ>w(ʾÿNy ?w(ʾÿNy ?w(ʾ!$kơ>w(ʾEk>˾ÿNy ?w(ʾEk>˾eÿ( ?˾eÿ( ?˾Ek>˾Tyk5>̾eÿ( ?˾Tyk5>̾Hÿ ?̾ÿ ?T;Ŀ6 ?y;lh>y;lh>y;Ŀ6 ?y;8Ŀy?ܰ;lh>y;8Ŀy?ܰ;&Xlҏ>ܰ;&Xlҏ>ܰ;8Ŀy?ܰ;ZĿ?x;&Xlҏ>ܰ;ZĿ?x;Nll>x;Nll>x;ZĿ?x;;zĿ?V?d̾Nll>x;;zĿ?V?d̾9l[>d̾9l[>d̾;zĿ?V?d̾ŔĿ?̾9l[>d̾ŔĿ?̾NmZ>̾NmZ>̾ŔĿ?̾èĿt?ʾNmZ>̾èĿt?ʾH8mØ>ʾH8mØ>ʾèĿt?ʾĿ9?΍ɾH8mØ>ʾĿ9?΍ɾPm">΍ɾPm">΍ɾĿ9?΍ɾ}Ŀo)?I)ȾPm">΍ɾ}Ŀo)?I)ȾWm>I)ȾWm>I)Ⱦ}Ŀo)?I)ȾĿC?ƾWm>I)ȾĿC?ƾLms6>ƾLms6>ƾĿC?ƾӤĿ·?g~žLms6>ƾӤĿ·?g~žj0mƾ>g~žj0mƾ>g~žӤĿ·?g~ž3Ŀ?hľj0mƾ>g~ž3Ŀ?hľ*m|>hľ*m|>hľ3Ŀ?hľYsĿw?þ*m|>hľYsĿw?þul~>þul~>þYsĿw?þ;SĿU?]þul~>þ;SĿU?]þ;lӎ>]þ;lӎ>]þ;SĿU?]þ0Ŀ|?¾;lӎ>]þ0Ŀ|?¾kHl!>¾kHl!>¾0Ŀ|?¾ĿS[ ?T+þkHl!>¾ĿS[ ?T+þle>T+þle>T+þĿS[ ?T+þÿ ?rþle>T+þÿ ?rþk>rþk>rþÿ ?rþÿs ?2ľk>rþÿs ?2ľk{>2ľk{>2ľÿs ?2ľÿ ?.žk{>2ľÿ ?.žIhkxW>.žIhkxW>.žÿ ?.žÿ# ? ǾIhkxW>.žÿ# ? Ǿ Pkn͔> Ǿ Pkn͔> Ǿÿ# ? Ǿ\ÿ- ?zȾ Pkn͔> Ǿ\ÿ- ?zȾ{Ik>zȾ{Ik>zȾ\ÿ- ?zȾÿO ?ɾ{Ik>zȾÿO ?ɾSkƹ>ɾSkƹ>ɾÿO ?ɾÿ ?o%˾Skƹ>ɾÿ ?o%˾'pku1>o%˾'pku1>o%˾ÿ ?o%˾ÿKX ?O;̾'pku1>o%˾ÿKX ?O;̾k_>O;̾¿R}?^ƾY¿ ?ksþM?EƾM?EƾY¿ ?ksþ;?4þM?Eƾ;?4þ2?mQƾ2?mQƾ;?4þwF? Pþ2?mQƾwF? Pþ"6?Lƾ"6?LƾwF? Pþ?þ"6?Lƾ?þj?ƾj?ƾ?þˡ]?\ľj?ƾˡ]?\ľi1?-4Ǿi1?-4Ǿˡ]?\ľ?ži1?-4Ǿ?ž?Ǿ?Ǿ?žh~ ?7ƾ?Ǿh~ ?7ƾܹ?e6Ⱦܹ?e6Ⱦh~ ?7ƾx$ ?Ⱦܹ?e6Ⱦx$ ?ȾF?ȾF?Ⱦx$ ?Ⱦ!{z ?cɾF?Ⱦ!{z ?cɾ?w@ɾ?w@ɾ!{z ?cɾe?Lʾ?w@ɾe?LʾRA|?1ɾRA|?1ɾe?Lʾ?˾RA|?1ɾ?˾|K?P ʾ|K?P ʾ?˾?̾|K?P ʾ?̾G?LEʾG?LEʾ?̾ς?i0;G?LEʾς?i0;|?\ʾ|?\ʾς?i0;!}?To;|?\ʾ!}?To;+¿?iRʾ+¿?iRʾ!}?To;¿I?S;+¿?iRʾ¿I?S; ¿Y?$ʾ ¿Y?$ʾ¿I?S;.¿ȴ?u̾ ¿Y?$ʾ.¿ȴ?u̾o¿(&?4ɾo¿(&?4ɾ.¿ȴ?u̾I¿]2?x̾o¿(&?4ɾI¿]2?x̾¿?Xnɾ¿?XnɾI¿]2?x̾^¿!?˾¿?Xnɾ^¿!?˾%¿?"Ⱦ%¿?"Ⱦ^¿!?˾l¿?ɾ%¿?"Ⱦl¿?ɾ'¿4?!lȾ'¿4?!lȾl¿?ɾr¿k?ĔȾ'¿4?!lȾr¿k?ĔȾ&¿r?Ǿ&¿r?Ǿr¿k?ĔȾx??Ǿ&¿r?Ǿx??Ǿ?"¿k?^cǾ?"¿k?^cǾx??Ǿke¿S?ž?"¿k?^cǾke¿S?ž ¿w?ƾ ¿w?ƾke¿S?žR¿t?ľ ¿w?ƾR¿t?ľ¿ND?ƾ¿ND?ƾR¿t?ľ9¿ ?8ľ¿ND?ƾ9¿ ?8ľ¿R}?^ƾ¿R}?^ƾ9¿ ?8ľY¿ ?ksþrVw>ƾIrR[>ľLr?/>^cǾLr?/>^cǾIrR[>ľs>žLr?/>^cǾs>žxrN>ǾxrN>Ǿs>žE/s=>?ǾxrN>ǾE/s=>?Ǿor>!lȾor>!lȾE/s=>?Ǿ4s$>ĔȾor>!lȾ4s$>ĔȾڙr>"Ⱦڙr>"Ⱦ4s$>ĔȾ(s[^>ɾڙr>"Ⱦ(s[^>ɾr&H>Xnɾr&H>Xnɾ(s[^>ɾ s>˾r&H>Xnɾ s>˾}rk>4ɾ}rk>4ɾ s>˾r#>x̾}rk>4ɾr#>x̾ hrG>$ʾ hrG>$ʾr#>x̾3r>u̾ hrG>$ʾ3r>u̾#Ory>iRʾ#Ory>iRʾ3r>u̾nr>S;#Ory>iRʾnr>S;4r`>\ʾ4r`>\ʾnr>S;-r>To;4r`>\ʾ-r>To;]rs>LEʾ]rs>LEʾ-r>To;qR>i0;]rs>LEʾqR>i0;r>P ʾr>P ʾqR>i0;ڱqup>̾r>P ʾڱqup>̾tqE>1ɾtqE>1ɾڱqup>̾ qa>˾tqE>1ɾ qa>˾ q>w@ɾ q>w@ɾ qa>˾Zq1>Lʾ q>w@ɾZq1>Lʾq>Ⱦq>ȾZq1>LʾEq~>cɾq>ȾEq~>cɾq!–>e6Ⱦq!–>e6ȾEq~>cɾ?qE>Ⱦq!–>e6Ⱦ?qE>Ⱦ{q٫>Ǿ{q٫>Ǿ?qE>ȾKq^>7ƾ{q٫>ǾKq^>7ƾqt>-4Ǿqt>-4ǾKq^>7ƾgqH֘>žqt>-4ǾgqH֘>žq#>ƾq#>ƾgqH֘>žeq >\ľq#>ƾeq >\ľK r>LƾK r>Lƾeq >\ľ"q>þK r>Lƾ"q>þ2%rfC>mQƾ2%rfC>mQƾ"q>þrrە> Pþ2%rfC>mQƾrrە> Pþi?rŔ>Eƾi?rŔ>Eƾrrە> PþFrߠ>4þi?rŔ>EƾFrߠ>4þXr I>^ƾXr I>^ƾFrߠ>4þrh>ksþXr I>^ƾrh>ksþprד>ƾprד>ƾrh>ksþzrL>8ľprד>ƾzrL>8ľrVw>ƾrVw>ƾzrL>8ľIrR[>ľ qa>˾e?LʾZq1>LʾZq1>Lʾe?Lʾ!{z ?cɾZq1>Lʾ!{z ?cɾEq~>cɾEq~>cɾ!{z ?cɾx$ ?ȾEq~>cɾx$ ?Ⱦ?qE>Ⱦ?qE>Ⱦx$ ?Ⱦh~ ?7ƾ?qE>Ⱦh~ ?7ƾKq^>7ƾKq^>7ƾh~ ?7ƾ?žKq^>7ƾ?žgqH֘>žgqH֘>ž?žˡ]?\ľgqH֘>žˡ]?\ľeq >\ľeq >\ľˡ]?\ľ?þeq >\ľ?þ"q>þ"q>þ?þwF? Pþ"q>þwF? Pþrrە> Pþrrە> PþwF? Pþ;?4þrrە> Pþ;?4þFrߠ>4þFrߠ>4þ;?4þY¿ ?ksþFrߠ>4þY¿ ?ksþrh>ksþrh>ksþY¿ ?ksþ9¿ ?8ľrh>ksþ9¿ ?8ľzrL>8ľzrL>8ľ9¿ ?8ľR¿t?ľzrL>8ľR¿t?ľIrR[>ľIrR[>ľR¿t?ľke¿S?žIrR[>ľke¿S?žs>žs>žke¿S?žx??Ǿs>žx??ǾE/s=>?ǾE/s=>?Ǿx??Ǿr¿k?ĔȾE/s=>?Ǿr¿k?ĔȾ4s$>ĔȾ4s$>ĔȾr¿k?ĔȾl¿?ɾ4s$>ĔȾl¿?ɾ(s[^>ɾ(s[^>ɾl¿?ɾ^¿!?˾(s[^>ɾ^¿!?˾ s>˾ s>˾^¿!?˾I¿]2?x̾ s>˾I¿]2?x̾r#>x̾r#>x̾I¿]2?x̾.¿ȴ?u̾r#>x̾.¿ȴ?u̾3r>u̾3r>u̾.¿ȴ?u̾¿I?S;3r>u̾¿I?S;nr>S;nr>S;¿I?S;!}?To;nr>S;!}?To;-r>To;-r>To;!}?To;ς?i0;-r>To;ς?i0;qR>i0;qR>i0;ς?i0;?̾qR>i0;?̾ڱqup>̾ڱqup>̾?̾?˾ڱqup>̾?˾ qa>˾ qa>˾?˾e?Lʾ=] >1ɾ q>w@ɾt.]h>w@ɾt.]h>w@ɾ q>w@ɾq>Ⱦt.]h>w@ɾq>Ⱦ%]\>Ⱦ%]\>Ⱦq>Ⱦq!–>e6Ⱦ%]\>Ⱦq!–>e6ȾP#]>e6ȾP#]>e6Ⱦq!–>e6Ⱦ{q٫>ǾP#]>e6Ⱦ{q٫>Ǿ(]?>Ǿ(]?>Ǿ{q٫>Ǿqt>-4Ǿ(]?>Ǿqt>-4Ǿ3]3O>-4Ǿ3]3O>-4Ǿqt>-4Ǿq#>ƾ3]3O>-4Ǿq#>ƾD]>ƾD]>ƾq#>ƾK r>LƾD]>ƾK r>Lƾ]Z]>Lƾ]Z]>LƾK r>Lƾ2%rfC>mQƾ]Z]>Lƾ2%rfC>mQƾr]>mQƾr]>mQƾ2%rfC>mQƾi?rŔ>Eƾr]>mQƾi?rŔ>Eƾӌ]>Eƾӌ]>Eƾi?rŔ>EƾXr I>^ƾӌ]>EƾXr I>^ƾa]u#>^ƾa]u#>^ƾXr I>^ƾprד>ƾa]u#>^ƾprד>ƾ]m>ƾ]m>ƾprד>ƾrVw>ƾ]m>ƾrVw>ƾJ]Q>ƾJ]Q>ƾrVw>ƾLr?/>^cǾJ]Q>ƾLr?/>^cǾ]] >^cǾ]] >^cǾLr?/>^cǾxrN>Ǿ]] >^cǾxrN>Ǿ]߁>Ǿ]߁>ǾxrN>Ǿor>!lȾ]߁>Ǿor>!lȾ]9Ձ>!lȾ]9Ձ>!lȾor>!lȾڙr>"Ⱦ]9Ձ>!lȾڙr>"ȾD]>"ȾD]>"Ⱦڙr>"Ⱦr&H>XnɾD]>"Ⱦr&H>Xnɾ]">Xnɾ]">Xnɾr&H>Xnɾ}rk>4ɾ]">Xnɾ}rk>4ɾ]!u>4ɾ]!u>4ɾ}rk>4ɾ hrG>$ʾ]!u>4ɾ hrG>$ʾu]܂>$ʾu]܂>$ʾ hrG>$ʾ#Ory>iRʾu]܂>$ʾ#Ory>iRʾ]S>iRʾ]S>iRʾ#Ory>iRʾ4r`>\ʾ]S>iRʾ4r`>\ʾW]у>\ʾW]у>\ʾ4r`>\ʾ]rs>LEʾW]у>\ʾ]rs>LEʾh]LN>LEʾh]LN>LEʾ]rs>LEʾr>P ʾh]LN>LEʾr>P ʾ0Q]T>P ʾ0Q]T>P ʾr>P ʾtqE>1ɾ0Q]T>P ʾtqE>1ɾ=] >1ɾ=] >1ɾtqE>1ɾ q>w@ɾ Z*>žJ~w>tRYy>->žRYy>->žJ~w>tIsx>RYy>->žIsx>kYL߂>2žkYL߂>2žIsx>I y>%kYL߂>2žI y>%4YQ+>ž4YQ+>žI y>%I"ey>Λ4YQ+>žI"ey>ΛTYW>eƾTYW>eƾI"ey>ΛIzy>TYW>eƾIzy>Y^b>9ƾY^b>9ƾIzy>IMHy>Y^b>9ƾIMHy>u{YwI>dǾu{YwI>dǾIMHy>@Ix>u{YwI>dǾ@Ix>kY>ǾkY>Ǿ@Ix>|IS%x>8zkY>Ǿ|IS%x>8z>aY>CȾ>aY>CȾ|IS%x>8z}yIIw>,ʼ>aY>CȾ}yIIw>,ʼ]YI>sȾ]YI>sȾ}yIIw>,ʼk}IJv>J]YI>sȾk}IJv>JaYʁ>ȾaYʁ>Ⱦk}IJv>JIt?u>aYʁ>ȾIt?u>alY E>;ȾalY E>;ȾIt?u>KI6t>alY E>;ȾKI6t>|Y>Ⱦ|Y>ȾKI6t>IEs>YӼ|Y>ȾIEs>YӼeYH>ȾeYH>ȾIEs>YӼI yr>eYH>ȾI yr>KY>PȾKY>PȾI yr> Iq>f"KY>PȾ Iq>f"Y+>ǾY+>Ǿ Iq>f"Iއq>qY+>ǾIއq>qbY~>uǾbY~>uǾIއq>qJrq>L-bY~>uǾJrq>L-Y~>ƾY~>ƾJrq>L-)Jq>٬Y~>ƾ)Jq>٬ ZU~>vƾ ZU~>vƾ)Jq>٬9J r>5 ZU~>vƾ9J r>5Zb>žZb>ž9J r>5CJr>ιZb>žCJr>ιy(Z>Nžy(Z>NžCJr>ιFGJs>~y(Z>NžFGJs>~+ZBw>YGž+ZBw>YGžFGJs>~XCJt>I+ZBw>YGžXCJt>I'Zg>:ž'Zg>:žXCJt>I8Ju>J7'Zg>:ž8Ju>J7UZ|>žUZ|>ž8Ju>J7x(Jv>EUZ|>žx(Jv>E Z*>ž Z*>žx(Jv>EJ~w>t[Z>.ƾkYL߂>2ž[ ƒ>^{ƾ[ ƒ>^{ƾkYL߂>2ž4YQ+>ž[ ƒ>^{ƾ4YQ+>žJ{[>ƾJ{[>ƾ4YQ+>žTYW>eƾJ{[>ƾTYW>eƾJh[1A>\ǾJh[1A>\ǾTYW>eƾY^b>9ƾJh[1A>\ǾY^b>9ƾY[P>1ǾY[P>1ǾY^b>9ƾu{YwI>dǾY[P>1Ǿu{YwI>dǾ P[>>3hȾ P[>>3hȾu{YwI>dǾkY>Ǿ P[>>3hȾkY>ǾL[t >ȾL[t >ȾkY>Ǿ>aY>CȾL[t >Ⱦ>aY>CȾN[0>qUɾN[0>qUɾ>aY>CȾ]YI>sȾN[0>qUɾ]YI>sȾ@W[UQ>ɾ@W[UQ>ɾ]YI>sȾaYʁ>Ⱦ@W[UQ>ɾaYʁ>Ⱦe[nׂ>Mɾe[nׂ>MɾaYʁ>ȾalY E>;Ⱦe[nׂ>MɾalY E>;Ⱦv[U>ɾv[U>ɾalY E>;Ⱦ|Y>Ⱦv[U>ɾ|Y>ȾU[Ӂ>ɾU[Ӂ>ɾ|Y>ȾeYH>ȾU[Ӂ>ɾeYH>ȾE[\>;ɾE[\>;ɾeYH>ȾKY>PȾE[\>;ɾKY>PȾ5[>tɾ5[>tɾKY>PȾY+>Ǿ5[>tɾY+>Ǿ}[r>Y ɾ}[r>Y ɾY+>ǾbY~>uǾ}[r>Y ɾbY~>uǾ[u>sȾ[u>sȾbY~>uǾY~>ƾ[u>sȾY~>ƾ[8f> Ⱦ[8f> ȾY~>ƾ ZU~>vƾ[8f> Ⱦ ZU~>vƾ[x>Ǿ[x>Ǿ ZU~>vƾZb>ž[x>ǾZb>ž[>Ǿ[>ǾZb>žy(Z>Nž[>Ǿy(Z>Nžf[>Ӛƾf[>Ӛƾy(Z>Nž+ZBw>YGžf[>Ӛƾ+ZBw>YGž[e>QDƾ[e>QDƾ+ZBw>YGž'Zg>:ž[e>QDƾ'Zg>:ž[߁> ƾ[߁> ƾ'Zg>:žUZ|>ž[߁> ƾUZ|>žk[va>\žk[va>\žUZ|>ž Z*>žk[va>\ž Z*>žs[>)ƾs[>)ƾ Z*>žRYy>->žs[>)ƾRYy>->ž[Z>.ƾ[Z>.ƾRYy>->žkYL߂>2ž]Z]>Lƾ[ ƒ>^{ƾD]>ƾD]>ƾ[ ƒ>^{ƾJ{[>ƾD]>ƾJ{[>ƾ3]3O>-4Ǿ3]3O>-4ǾJ{[>ƾJh[1A>\Ǿ3]3O>-4ǾJh[1A>\Ǿ(]?>Ǿ(]?>ǾJh[1A>\ǾY[P>1Ǿ(]?>ǾY[P>1ǾP#]>e6ȾP#]>e6ȾY[P>1Ǿ P[>>3hȾP#]>e6Ⱦ P[>>3hȾ%]\>Ⱦ%]\>Ⱦ P[>>3hȾL[t >Ⱦ%]\>ȾL[t >Ⱦt.]h>w@ɾt.]h>w@ɾL[t >ȾN[0>qUɾt.]h>w@ɾN[0>qUɾ=] >1ɾ=] >1ɾN[0>qUɾ@W[UQ>ɾ=] >1ɾ@W[UQ>ɾ0Q]T>P ʾ0Q]T>P ʾ@W[UQ>ɾe[nׂ>Mɾ0Q]T>P ʾe[nׂ>Mɾh]LN>LEʾh]LN>LEʾe[nׂ>Mɾv[U>ɾh]LN>LEʾv[U>ɾW]у>\ʾW]у>\ʾv[U>ɾU[Ӂ>ɾW]у>\ʾU[Ӂ>ɾ]S>iRʾ]S>iRʾU[Ӂ>ɾE[\>;ɾ]S>iRʾE[\>;ɾu]܂>$ʾu]܂>$ʾE[\>;ɾ5[>tɾu]܂>$ʾ5[>tɾ]!u>4ɾ]!u>4ɾ5[>tɾ}[r>Y ɾ]!u>4ɾ}[r>Y ɾ]">Xnɾ]">Xnɾ}[r>Y ɾ[u>sȾ]">Xnɾ[u>sȾD]>"ȾD]>"Ⱦ[u>sȾ[8f> ȾD]>"Ⱦ[8f> Ⱦ]9Ձ>!lȾ]9Ձ>!lȾ[8f> Ⱦ[x>Ǿ]9Ձ>!lȾ[x>Ǿ]߁>Ǿ]߁>Ǿ[x>Ǿ[>Ǿ]߁>Ǿ[>Ǿ]] >^cǾ]] >^cǾ[>Ǿf[>Ӛƾ]] >^cǾf[>ӚƾJ]Q>ƾJ]Q>ƾf[>Ӛƾ[e>QDƾJ]Q>ƾ[e>QDƾ]m>ƾ]m>ƾ[e>QDƾ[߁> ƾ]m>ƾ[߁> ƾa]u#>^ƾa]u#>^ƾ[߁> ƾk[va>\ža]u#>^ƾk[va>\žӌ]>Eƾӌ]>Eƾk[va>\žs[>)ƾӌ]>Eƾs[>)ƾr]>mQƾr]>mQƾs[>)ƾ[Z>.ƾr]>mQƾ[Z>.ƾ]Z]>Lƾ]Z]>Lƾ[Z>.ƾ[ ƒ>^{ƾF@k>CYnIp>Em>NEm>NYnIp>>I:XEm>N>I:XE@o>"E@o>">I:X&IMt>xE@o>"&IMt>xERr>ټERr>ټ&IMt>xI;Vw>MERr>ټI;Vw>M*yE`t>*yE`t>I;Vw>M Hy>پ*yE`t> Hy>پpEv>O;pEv>O; Hy>پI&{>%pEv>O;I&{>%xE.x>mxE.x>mI&{>%/I` }>5m/I` }>5<ʎEez>ʎEez>/I` }>5<;I~>/ʎEez>;I~>/~E{>k~E{>k;I~>/kI~~>&~E{>kkI~~>&E{>pE{>pkI~~>&ǢIpO~>j񹾭E{>pǢIpO~>jaFY{>SRaFY{>SRǢIpO~>jjI}>V績aFY{>SRjI}>V績VFz>IVFz>IjI}>V績J0|>VFz>IJ0|>F1;y>fF1;y>fJ0|>jRJkcz>XF1;y>fjRJkcz>XFppw>Fppw>jRJkcz>XBJ(Bx>Fppw>BJ(Bx>F-Ou>PF-Ou>PBJ(Bx>𶾝Ju>A϶F-Ou>PJu>A϶7Gr>*07Gr>*0Ju>A϶5JȖs>7Gr>*05JȖs>6G-p>l[6G-p>l[5JȖs>JO[q>m6G-p>l[JO[q>m>GThn>δ>GThn>δJO[q>mۿJ=io>">GThn>δۿJ=io>"w7GBvl>w7GBvl>ۿJ=io>"Jm> w7GBvl>Jm> .!G j>k.!G j>kJm> J~l>.!G j>kJ~l>{Fi>y{Fi>yJ~l>UJfnl>7{Fi>yUJfnl>7LFxi>LFxi>UJfnl>7Jl>VLFxi>Jl>VFi>Fi>Jl>VYIogm>_Fi>YIogm>_YFqj>YFqj>YIogm>_I7n>ZBYFqj>I7n>ZBF@k>CF@k>CI7n>ZBYnIp>6G-p>l[>GThn>δw7GBvl>6G-p>l[w7GBvl>xE.x>mxE.x>mw7GBvl>*yE`t>xE.x>m*yE`t>pEv>O;7Gr>*06G-p>l[F-Ou>PF-Ou>P6G-p>l[xE.x>mF-Ou>PxE.x>mFppw>Fppw>xE.x>mVFz>IFppw>VFz>IF1;y>fFi>YFqj>LFxi>LFxi>YFqj>*yE`t>LFxi>*yE`t>{Fi>y{Fi>y*yE`t>w7GBvl>{Fi>yw7GBvl>.!G j>kE@o>"ERr>ټEm>NEm>NERr>ټ*yE`t>Em>N*yE`t>F@k>CF@k>C*yE`t>YFqj>aFY{>SRVFz>IE{>pE{>pVFz>IxE.x>mE{>pxE.x>m~E{>k~E{>kxE.x>mʎEez>x(Jv>EBJ(Bx>J~w>tJ~w>tBJ(Bx>jRJkcz>XJ~w>tjRJkcz>XIsx>Isx>jRJkcz>XJ0|>Isx>J0|>I y>%I y>%J0|>jI}>V績I y>%jI}>V績I"ey>ΛI"ey>ΛjI}>V績ǢIpO~>jI"ey>ΛǢIpO~>j񹾜Izy>Izy>ǢIpO~>jkI~~>&Izy>kI~~>&IMHy>IMHy>kI~~>&;I~>/IMHy>;I~>/@Ix>@Ix>;I~>//I` }>5<@Ix>/I` }>5<|IS%x>8z|IS%x>8z/I` }>5<I&{>%|IS%x>8zI&{>%}yIIw>,ʼ}yIIw>,ʼI&{>% Hy>پ}yIIw>,ʼ Hy>پk}IJv>Jk}IJv>J Hy>پI;Vw>Mk}IJv>JI;Vw>MIt?u>It?u>I;Vw>M&IMt>xIt?u>&IMt>xKI6t>KI6t>&IMt>x>I:XKI6t>>I:XIEs>YӼIEs>YӼ>I:XYnIp>IEs>YӼYnIp>I yr>I yr>YnIp>I7n>ZBI yr>I7n>ZB Iq>f" Iq>f"I7n>ZBYIogm>_ Iq>f"YIogm>_Iއq>qIއq>qYIogm>_Jl>VIއq>qJl>VJrq>L-Jrq>L-Jl>VUJfnl>7Jrq>L-UJfnl>7)Jq>٬)Jq>٬UJfnl>7J~l>)Jq>٬J~l>9J r>59J r>5J~l>Jm> 9J r>5Jm> CJr>ιCJr>ιJm> ۿJ=io>"CJr>ιۿJ=io>"FGJs>~FGJs>~ۿJ=io>"JO[q>mFGJs>~JO[q>mXCJt>IXCJt>IJO[q>m5JȖs>XCJt>I5JȖs>8Ju>J78Ju>J75JȖs>Ju>A϶8Ju>J7Ju>A϶x(Jv>Ex(Jv>EJu>A϶BJ(Bx>-Cܿ|?Ǿ?"¿k?^cǾ>ܿ6?^cǾ>ܿ6?^cǾ?"¿k?^cǾ ¿w?ƾ>ܿ6?^cǾ ¿w?ƾ`7ܿ?ƾ`7ܿ?ƾ ¿w?ƾ¿ND?ƾ`7ܿ?ƾ¿ND?ƾ8-ܿ?ƾ8-ܿ?ƾ¿ND?ƾ¿R}?^ƾ8-ܿ?ƾ¿R}?^ƾl!ܿ?^ƾl!ܿ?^ƾ¿R}?^ƾM?Eƾl!ܿ?^ƾM?Eƾܿ_]?Eƾܿ_]?EƾM?Eƾ2?mQƾܿ_]?Eƾ2?mQƾܿJ?mQƾܿJ?mQƾ2?mQƾ"6?LƾܿJ?mQƾ"6?Lƾۿ?Lƾۿ?Lƾ"6?Lƾj?ƾۿ?Lƾj?ƾGۿ ?ƾGۿ ?ƾj?ƾi1?-4ǾGۿ ?ƾi1?-4Ǿۿ4?-4Ǿۿ4?-4Ǿi1?-4Ǿ?Ǿۿ4?-4Ǿ?Ǿ/ۿO?Ǿ/ۿO?Ǿ?Ǿܹ?e6Ⱦ/ۿO?Ǿܹ?e6Ⱦۿ[?e6Ⱦۿ[?e6Ⱦܹ?e6ȾF?Ⱦۿ[?e6ȾF?ȾۿiV?ȾۿiV?ȾF?Ⱦ?w@ɾۿiV?Ⱦ?w@ɾvۿpA?w@ɾvۿpA?w@ɾ?w@ɾRA|?1ɾvۿpA?w@ɾRA|?1ɾۿd?1ɾۿd?1ɾRA|?1ɾ|K?P ʾۿd?1ɾ|K?P ʾۿ?P ʾۿ?P ʾ|K?P ʾG?LEʾۿ?P ʾG?LEʾܿ?LEʾܿ?LEʾG?LEʾ|?\ʾܿ?LEʾ|?\ʾfܿFv?\ʾfܿFv?\ʾ|?\ʾ+¿?iRʾfܿFv?\ʾ+¿?iRʾܿ\7?iRʾܿ\7?iRʾ+¿?iRʾ ¿Y?$ʾܿ\7?iRʾ ¿Y?$ʾ(ܿ?$ʾ(ܿ?$ʾ ¿Y?$ʾo¿(&?4ɾ(ܿ?$ʾo¿(&?4ɾr3ܿK?4ɾr3ܿK?4ɾo¿(&?4ɾ¿?Xnɾr3ܿK?4ɾ¿?Xnɾ;ܿ?Xnɾ;ܿ?Xnɾ¿?Xnɾ%¿?"Ⱦ;ܿ?Xnɾ%¿?"ȾAܿ#?"ȾAܿ#?"Ⱦ%¿?"Ⱦ'¿4?!lȾAܿ#?"Ⱦ'¿4?!lȾ(Dܿw?!lȾ(Dܿw?!lȾ'¿4?!lȾ&¿r?Ǿ(Dܿw?!lȾ&¿r?Ǿ-Cܿ|?Ǿ-Cܿ|?Ǿ&¿r?Ǿ?"¿k?^cǾۿiV?Ⱦ(Dܿw?!lȾۿ[?e6Ⱦۿ[?e6Ⱦ(Dܿw?!lȾ-Cܿ|?ǾۿiV?ȾvۿpA?w@ɾ(Dܿw?!lȾ(Dܿw?!lȾvۿpA?w@ɾ;ܿ?Xnɾ(Dܿw?!lȾ;ܿ?XnɾAܿ#?"Ⱦ-Cܿ|?Ǿ>ܿ6?^cǾۿ[?e6Ⱦۿ[?e6Ⱦ>ܿ6?^cǾۿ4?-4Ǿۿ[?e6Ⱦۿ4?-4Ǿ/ۿO?ǾvۿpA?w@ɾۿd?1ɾ;ܿ?Xnɾ;ܿ?Xnɾۿd?1ɾۿ?P ʾ;ܿ?Xnɾۿ?P ʾܿ?LEʾ>ܿ6?^cǾ`7ܿ?ƾۿ4?-4Ǿۿ4?-4Ǿ`7ܿ?ƾ8-ܿ?ƾۿ4?-4Ǿ8-ܿ?ƾl!ܿ?^ƾr3ܿK?4ɾ;ܿ?Xnɾ(ܿ?$ʾ(ܿ?$ʾ;ܿ?Xnɾܿ?LEʾ(ܿ?$ʾܿ?LEʾܿ\7?iRʾܿ\7?iRʾܿ?LEʾfܿFv?\ʾGۿ ?ƾۿ4?-4Ǿۿ?Lƾۿ?Lƾۿ4?-4Ǿl!ܿ?^ƾۿ?Lƾl!ܿ?^ƾܿJ?mQƾܿJ?mQƾl!ܿ?^ƾܿ_]?EƾT>ržc a>rž`{>žT>rž`{>žS>žS>ž`{>ž"`>2rƾS>ž"`>2rƾS;>2rƾS;>2rƾ"`>2rƾy`8a>b(ǾS;>2rƾy`8a>b(ǾS'>b(ǾS'>b(Ǿy`8a>b(Ǿ`>ǾS'>b(Ǿ`>ǾS>ǾS>~ɾǺ`Z>~ɾ`\>@ʾS>~ɾ`\>@ʾ7SL1>@ʾ7SL1>@ʾ`\>@ʾ`n>ʾ7SL1>@ʾ`n>ʾeS>ʾeS>ʾ`n>ʾa>7˾eS>ʾa>7˾! T>7˾! T>7˾a>7˾U5a >5l˾! T>7˾U5a >5l˾2TxD>5l˾2TxD>5l˾U5a >5l˾O]aJ>i˾2TxD>5l˾O]aJ>i˾ZT˃>i˾ZT˃>i˾O]aJ>i˾Ra>91˾ZT˃>i˾Ra>91˾pT>91˾pT>91˾Ra>91˾a>ʾpT>91˾a>ʾT$>ʾT$>ʾa>ʾad>1ʾT$>ʾad>1ʾT>1ʾT>1ʾad>1ʾ>a6>s{ɾT>1ʾ>a6>s{ɾ\T$?>s{ɾ\T$?>s{ɾ>a6>s{ɾa>JȾ\T$?>s{ɾa>JȾ0T>JȾ0T>JȾa>JȾaV>Ǿ0T>JȾaV>ǾTD>ǾTD>ǾaV>Ǿa >WǾTD>Ǿa >WǾ TE>WǾ TE>WǾa >WǾao>cƾ TE>WǾao>cƾT>cƾT>cƾao>cƾǢa>HžT>cƾǢa>HžT2>HžT2>HžǢa>Hž aơ> lžT2>Hž aơ> lž)~T> lž)~T> lž aơ> lžaYa[>7ž)~T> lžaYa[>7žWTԔ>7žaV>ǾEb>ƾa >WǾa >WǾEb>ƾ-bZ>ža >WǾ-bZ>žao>cƾao>cƾ-bZ>ž\b|>_ľao>cƾ\b|>_ľǢa>HžǢa>Hž\b|>_ľa>jþǢa>Hža>jþ aơ> lž aơ> lža>jþa >M@þ aơ> lža >M@þaYa[>7žaYa[>7ža >M@þ=aa5>7¾aYa[>7ž=aa5>7¾f1a>>:žf1a>>:ž=aa5>7¾!ah>þf1a>>:ž!ah>þc a>ržc a>rž!ah>þ`А>Vþc a>rž`А>Vþ`{>ž`{>ž`А>Vþ`>þ`{>ž`>þ"`>2rƾ"`>2rƾ`>þ}~`}>ľ"`>2rƾ}~`}>ľy`8a>b(Ǿy`8a>b(Ǿ}~`}>ľ[`&>žy`8a>b(Ǿ[`&>ž`>Ǿ`>Ǿ[`&>ž!F`>%Ǿ`>Ǿ!F`>%ǾL`>Ⱦ!F`>%Ǿ;@`>pȾL`>ȾL`>Ⱦ;@`>pȾfI`> ɾL`>ȾfI`> ɾǺ`Z>~ɾǺ`Z>~ɾfI`> ɾ`` >ʾǺ`Z>~ɾ`` >ʾ`\>@ʾ`\>@ʾ`` >ʾY`X>t˾`\>@ʾY`X>t˾`n>ʾ`n>ʾY`X>t˾ٶ`Tn>j̾`n>ʾٶ`Tn>j̾a>7˾a>7˾ٶ`Tn>j̾5`d\>c;a>7˾5`d\>c;U5a >5l˾U5a >5l˾5`d\>c;x-a1>;U5a >5l˾x-a1>;O]aJ>i˾O]aJ>i˾x-a1>; ma>£;O]aJ>i˾ ma>£;Ra>91˾Ra>91˾ ma>£;a>@M;Ra>91˾a>@M;a>ʾa>ʾa>@M;a:>W̾a>ʾa:>W̾ad>1ʾad>1ʾa:>W̾9b>˾ad>1ʾ9b>˾>a6>s{ɾ>a6>s{ɾ9b>˾2b@>ʾ>a6>s{ɾ2b@>ʾa>JȾa>JȾ2b@>ʾHbv>~ɾa>JȾHbv>~ɾaV>ǾaV>ǾHbv>~ɾ|NbP>3ȾaV>Ǿ|NbP>3ȾEb>ƾ[>@M; ma>£;([z>£;([z>£; ma>£;x-a1>;([z>£;x-a1>;C[0K>;C[0K>;x-a1>;5`d\>c;C[0K>;5`d\>c;[v>c;[v>c;5`d\>c;ٶ`Tn>j̾[v>c;ٶ`Tn>j̾ZH>j̾ZH>j̾ٶ`Tn>j̾Y`X>t˾ZH>j̾Y`X>t˾xZr>t˾xZr>t˾Y`X>t˾`` >ʾxZr>t˾`` >ʾwZ(&>ʾwZ(&>ʾ`` >ʾfI`> ɾwZ(&>ʾfI`> ɾ_Z> ɾ_Z> ɾfI`> ɾ;@`>pȾ_Z> ɾ;@`>pȾYVZ>pȾYVZ>pȾ;@`>pȾ!F`>%ǾYVZ>pȾ!F`>%Ǿ\Z>%Ǿ\Z>%Ǿ!F`>%Ǿ[`&>ž\Z>%Ǿ[`&>žqZ^@>žqZ^@>ž[`&>ž}~`}>ľqZ^@>ž}~`}>ľZJ>ľZJ>ľ}~`}>ľ`>þZJ>ľ`>þ#Z(>þ#Z(>þ`>þ`А>Vþ#Z(>þ`А>VþZv>VþZv>Vþ`А>Vþ!ah>þZv>Vþ!ah>þr8[<>þr8[<>þ!ah>þ=aa5>7¾r8[<>þ=aa5>7¾\w[P>7¾\w[P>7¾=aa5>7¾a >M@þ\w[P>7¾a >M@þ[$>M@þ[$>M@þa >M@þa>jþ[$>M@þa>jþ[>jþ[>jþa>jþ\b|>_ľ[>jþ\b|>_ľ"\n)>_ľ"\n)>_ľ\b|>_ľ-bZ>ž"\n)>_ľ-bZ>žC\t>žC\t>ž-bZ>žEb>ƾC\t>žEb>ƾ\\>ƾ\\>ƾEb>ƾ|NbP>3Ⱦ\\>ƾ|NbP>3ȾBe\C>3ȾBe\C>3Ⱦ|NbP>3ȾHbv>~ɾBe\C>3ȾHbv>~ɾ^\j>~ɾ^\j>~ɾHbv>~ɾ2b@>ʾ^\j>~ɾ2b@>ʾI\[>ʾI\[>ʾ2b@>ʾ9b>˾I\[>ʾ9b>˾W&\l>˾W&\l>˾9b>˾a:>W̾W&\l>˾a:>W̾[>W̾[>W̾a:>W̾a>@M;[>W̾a>@M;[>@M;[>@M;a>@M; ma>£;Be\C>3Ⱦʓ\4>hǾ\\>ƾ\\>ƾʓ\4>hǾ\fH>hƾ\\>ƾ\fH>hƾC\t>žC\t>ž\fH>hƾa\>XľC\t>ža\>Xľ"\n)>_ľ"\n)>_ľa\>Xľ4\>٧þ"\n)>_ľ4\>٧þ[>jþ[>jþ4\>٧þf[>¾[>jþf[>¾[$>M@þ[$>M@þf[>¾-[:>7¾[$>M@þ-[:>7¾\w[P>7¾\w[P>7¾-[:>7¾\w[&R>\w[P>7¾\w[&R>r8[<>þr8[<>þ\w[&R>=1[>r8[<>þ=1[>Zv>VþZv>Vþ=1[>ZO>OX¾Zv>VþZO>OX¾#Z(>þ#Z(>þZO>OX¾ѮZv>dþ#Z(>þѮZv>dþZJ>ľZJ>ľѮZv>dþyZ>þZJ>ľyZ>þqZ^@>žqZ^@>žyZ>þ#OZ$>žqZ^@>ž#OZ$>ž\Z>%Ǿ\Z>%Ǿ#OZ$>ž2Zq>cƾ\Z>%Ǿ2Zq>cƾYVZ>pȾ2Zq>cƾ2%Z>9ǾYVZ>pȾYVZ>pȾ2%Z>9Ǿ)'Z>9;ɾYVZ>pȾ)'Z>9;ɾ_Z> ɾ_Z> ɾ)'Z>9;ɾ8ZPR>nʾ_Z> ɾ8ZPR>nʾwZ(&>ʾwZ(&>ʾ8ZPR>nʾYZV>|˾wZ(&>ʾYZV>|˾xZr>t˾xZr>t˾YZV>|˾؆Zs>̾xZr>t˾؆Zs>̾ZH>j̾ZH>j̾؆Zs>̾4Z!>;ZH>j̾4Z!>;[v>c;[v>c;4Z!>;mZ|>Klξ[v>c;mZ|>KlξC[0K>;C[0K>;mZ|>Klξ>D[I>ξC[0K>;>D[I>ξ([z>£;([z>£;>D[I>ξ^[e>Fξ([z>£;^[e>Fξ[>@M;[>@M;^[e>Fξ[>Kξ[>@M;[>Kξ[>W̾[>W̾[>Kξ \@>r;[>W̾ \@>r;W&\l>˾W&\l>˾ \@>r;A\ >̾W&\l>˾A\ >̾I\[>ʾI\[>ʾA\ >̾k\>J˾I\[>ʾk\>J˾^\j>~ɾ^\j>~ɾk\>J˾\A*>@ʾ^\j>~ɾ\A*>@ʾBe\C>3ȾBe\C>3Ⱦ\A*>@ʾh\>ȾBe\C>3Ⱦh\>Ⱦʓ\4>hǾO;T>9Ǿ2%Z>9Ǿ2Zq>cƾO;T>9Ǿ2Zq>cƾITh>cƾITh>cƾ2Zq>cƾ#OZ$>žITh>cƾ#OZ$>žeT>žeT>ž#OZ$>žyZ>þeT>žyZ>þۏT6>þۏT6>þyZ>þѮZv>dþۏT6>þѮZv>dþTj4>dþTj4>dþѮZv>dþZO>OX¾Tj4>dþZO>OX¾3U>OX¾{Uk>\w[&R>-[:>7¾{Uk>-[:>7¾KU/ >7¾KU/ >7¾-[:>7¾f[>¾KU/ >7¾f[>¾V>¾V>¾f[>¾4\>٧þV>¾4\>٧þJV8>٧þJV8>٧þ4\>٧þa\>XľJV8>٧þa\>XľxVT>XľxVT>Xľa\>Xľ\fH>hƾxVT>Xľ\fH>hƾݘVZc>hƾݘVZc>hƾ\fH>hƾʓ\4>hǾݘVZc>hƾʓ\4>hǾV)>hǾV)>hǾʓ\4>hǾh\>ȾV)>hǾh\>ȾV>ȾV>Ⱦh\>Ⱦ\A*>@ʾV>Ⱦ\A*>@ʾĞVC>@ʾĞVC>@ʾ\A*>@ʾk\>J˾ĞVC>@ʾk\>J˾V>J˾V>J˾k\>J˾A\ >̾V>J˾A\ >̾XV>̾XV>̾A\ >̾ \@>r;XV>̾ \@>r;"V5>r;"V5>r; \@>r;[>Kξ"V5>r;[>KξU\>KξU\>Kξ[>Kξ^[e>FξU\>Kξ^[e>Fξ{U >Fξ{U >Fξ^[e>Fξ>D[I>ξ{U >Fξ>D[I>ξ]ZUc>ξ]ZUc>ξ>D[I>ξmZ|>Klξ]ZUc>ξmZ|>KlξUp>KlξUp>KlξmZ|>Klξ4Z!>;Up>Klξ4Z!>;ST>;ST>;4Z!>;؆Zs>̾ST>;؆Zs>̾T>̾T>̾؆Zs>̾YZV>|˾T>̾YZV>|˾oT>|˾oT>|˾YZV>|˾8ZPR>nʾoT>|˾8ZPR>nʾOTDm>nʾU\>KξT>l˾"V5>r;"V5>r;T>l˾T>~˾"V5>r;T>~˾XV>̾XV>̾T>~˾T X>ʾXV>̾T X>ʾV>J˾V>J˾T X>ʾT&>BʾV>J˾T&>BʾĞVC>@ʾĞVC>@ʾT&>BʾT>#zɾĞVC>@ʾT>#zɾV>ȾV>ȾT>#zɾU@d>ޡȾV>ȾU@d>ޡȾV)>hǾV)>hǾU@d>ޡȾCT~i>ǾV)>hǾCT~i>ǾݘVZc>hƾݘVZc>hƾCT~i>ǾT>UƾݘVZc>hƾT>UƾxVT>XľxVT>XľT>UƾT>.ƾxVT>XľT>.ƾJV8>٧þJV8>٧þT>.ƾ@T^>CžJV8>٧þ@T^>CžV>¾V>¾@T^>Cž,T!>žV>¾,T!>žKU/ >7¾KU/ >7¾,T!>ž)~T>ľKU/ >7¾)~T>ľ{Uk>{Uk>)~T>ľTT@>}ľ{Uk>TT@>}ľ[GUC>[GUC>TT@>}ľF*Thn>\ľ[GUC>F*Thn>\ľ3U>OX¾3U>OX¾F*Thn>\ľT3>iľ3U>OX¾T3>iľTj4>dþTj4>dþT3>iľIS>W!žTj4>dþIS>W!žۏT6>þۏT6>þIS>W!ž,S>5žۏT6>þ,S>5žeT>žeT>ž,S>5žESw>'aƾeT>žESw>'aƾITh>cƾITh>cƾESw>'aƾSO>)ǾITh>cƾSO>)ǾO;T>9ǾO;T>9ǾSO>)ǾS[v>ȾO;T>9ǾS[v>Ⱦ=Tv>9;ɾ=Tv>9;ɾS[v>ȾSo>)Ⱦ=Tv>9;ɾSo>)ȾOTDm>nʾOTDm>nʾSo>)ȾS<>ɾOTDm>nʾS<>ɾoT>|˾oT>|˾S<>ɾ+SP>uʾoT>|˾+SP>uʾT>̾T>̾+SP>uʾS?[>˾T>̾S?[>˾ST>;ST>;S?[>˾S>˾ST>;S>˾Up>KlξUp>KlξS>˾ T>˾Up>Klξ T>˾]ZUc>ξ]ZUc>ξ T>˾6T[7>%̾]ZUc>ξ6T[7>%̾{U >Fξ{U >Fξ6T[7>%̾`T2l>x̾{U >Fξ`T2l>x̾U\>KξU\>Kξ`T2l>x̾T>l˾eS>ʾS?[>˾7SL1>@ʾ7SL1>@ʾS?[>˾+SP>uʾ7SL1>@ʾ+SP>uʾS>~ɾS>~ɾ+SP>uʾS<>ɾS>~ɾS<>ɾ­S >Ⱦ­S >ȾS<>ɾSo>)Ⱦ­S >ȾSo>)ȾS>ǾS>ǾSo>)ȾS[v>ȾS>ǾS[v>ȾS'>b(ǾS'>b(ǾS[v>ȾSO>)ǾS'>b(ǾSO>)ǾS;>2rƾT>1ʾT X>ʾT$>ʾT$>ʾT X>ʾT>~˾T$>ʾT>~˾pT>91˾pT>91˾T>~˾T>l˾pT>91˾T>l˾ZT˃>i˾ZT˃>i˾T>l˾`T2l>x̾ZT˃>i˾`T2l>x̾2TxD>5l˾2TxD>5l˾`T2l>x̾6T[7>%̾2TxD>5l˾6T[7>%̾! T>7˾! T>7˾6T[7>%̾ T>˾! T>7˾ T>˾eS>ʾeS>ʾ T>˾S>˾eS>ʾS>˾S?[>˾)~T> lž,T!>žT2>HžT2>Hž,T!>ž@T^>CžT2>Hž@T^>CžT>cƾT>cƾ@T^>CžT>.ƾT>cƾT>.ƾ TE>WǾ TE>WǾT>.ƾT>Uƾ TE>WǾT>UƾTD>ǾTD>ǾT>UƾCT~i>ǾTD>ǾCT~i>Ǿ0T>JȾ0T>JȾCT~i>ǾU@d>ޡȾ0T>JȾU@d>ޡȾ\T$?>s{ɾ\T$?>s{ɾU@d>ޡȾT>#zɾ\T$?>s{ɾT>#zɾT>1ʾT>1ʾT>#zɾT&>BʾT>1ʾT&>BʾT X>ʾSO>)ǾESw>'aƾS;>2rƾS;>2rƾESw>'aƾ,S>5žS;>2rƾ,S>5žS>žS>ž,S>5žIS>W!žS>žIS>W!žT>ržT>ržIS>W!žT3>iľT>ržT3>iľ/TU>>:ž/TU>>:žT3>iľF*Thn>\ľ/TU>>:žF*Thn>\ľWTԔ>7žWTԔ>7žF*Thn>\ľTT@>}ľWTԔ>7žTT@>}ľ)~T> lž)~T> lžTT@>}ľ)~T>ľ)~T> lž)~T>ľ,T!>žn94?(ɾ z4?QɾCCg3?ʾCCg3?ʾ z4?QɾR,)C4?ʾCCg3?ʾR,)C4?ʾT}3?N˾T}3?N˾R,)C4?ʾA3?%X̾T}3?N˾A3?%X̾0nN3?̾0nN3?̾A3?%X̾q_L3?;0nN3?̾q_L3?;T*s2?kV;T*s2?kV;q_L3?;)2?KξT*s2?kV;)2?Kξ1?N;1?N;)2?Kξ"e1?%ξ1?N;"e1?%ξ*л#,1?";*л#,1?";"e1?%ξԻ!1?ξ*л#,1?";Ի!1?ξ0?:;0?:;Ի!1?ξ[0?*ξ0?:;[0?*ξlS/?w̾lS/?w̾[0?*ξ'N/?K;lS/?w̾'N/?K;&M/?z˾&M/?z˾'N/?K;U:*/?K̾&M/?z˾U:*/?K̾f6=/?>ʾf6=/?>ʾU:*/?K̾M.?ʾf6=/?>ʾM.?ʾB>U/?ȾB>U/?ȾM.?ʾW.?ȾB>U/?ȾW.?Ⱦ=C/?zǾ=C/?zǾW.?Ⱦ/V.?SRǾ=C/?zǾ/V.?SRǾ3rJ/?>"ƾ3rJ/?>"ƾ/V.?SRǾJ.?ž3rJ/?>"ƾJ.?ž!/?ľ!/?ľJ.?žj5=C/?Kľ!/?ľj5=C/?Kľ0?þ0?þj5=C/?Kľ/?$þ0?þ/?$þ껿0?jMþ껿0?jMþ/?$þ0?OX¾껿0?jMþ0?OX¾HɻL1?¾HɻL1?¾0?OX¾˻?1?HɻL1?¾˻?1?঻1?þ঻1?þ˻?1?񢻿2?-঻1?þ񢻿2?-ƅ2?hþƅ2?hþ񢻿2?-{2?y¾ƅ2?hþ{2?y¾h3?^$ľh3?^$ľ{2?y¾Xk3?Wþh3?^$ľXk3?WþQ3?3)žQ3?3)žXk3?Wþ<3?ľQ3?3)ž<3?ľ@3?cƾ@3?cƾ<3?ľ )Q4?ƾ@3?cƾ )Q4?ƾs84?Ǿs84?Ǿ )Q4?ƾ4?6Ǿs84?Ǿ4?6Ǿn94?(ɾn94?(ɾ4?6Ǿ z4?QɾIc\>Ⱦ\>ȾS\(+>>ʾS\(+>>ʾ\>Ⱦ\fH>ʾS\(+>>ʾ\fH>ʾ2\>z˾2\>z˾\fH>ʾl[\%>K̾2\>z˾l[\%>K̾\Э>w̾\Э>w̾l[\%>K̾#\>K;\Э>w̾#\>K;[>:;[>:;#\>K;[f>*ξ[>:;[f>*ξ[p>";[p>";[f>*ξL[m>ξ[p>";L[m>ξGB[ S>N;GB[ S>N;L[m>ξ =[k>%ξGB[ S>N; =[k>%ξmZ|>kV;mZ|>kV; =[k>%ξZ>KξmZ|>kV;Z>Kξ#Zƹ>̾#Zƹ>̾Z>KξZUG>;#Zƹ>̾ZUG>;SZ>N˾SZ>N˾ZUG>;jZbf>%X̾SZ>N˾jZbf>%X̾HmZW>ʾHmZW>ʾjZbf>%X̾i?Z)4>ʾHmZW>ʾi?Z)4>ʾYZV>(ɾYZV>(ɾi?Z)4>ʾ'Z>QɾYZV>(ɾ'Z>QɾWZ5>ǾWZ5>Ǿ'Z>Qɾ%Z`>6ǾWZ5>Ǿ%Z`>6Ǿ hZp>cƾ hZp>cƾ%Z`>6Ǿ8ZPR>ƾ hZp>cƾ8ZPR>ƾψZF>3)žψZF>3)ž8ZPR>ƾ.`Z>ľψZF>3)ž.`Z>ľZ4>^$ľZ4>^$ľ.`Z>ľZ@>WþZ4>^$ľZ@>WþZ>hþZ>hþZ@>WþZd5>y¾Z>hþZd5>y¾4[>þ4[>þZd5>y¾,[>-4[>þ,[>-Sy[H>¾Sy[H>¾,[>-~[.>Sy[H>¾~[.>-[:>jMþ-[:>jMþ~[.>[>OX¾-[:>jMþ[>OX¾x[>>þx[>>þ[>OX¾\aS>$þx[>>þ\aS>$þF*\>ľF*\>ľ\aS>$þQ\5>KľF*\>ľQ\5>KľRN\ D>>"ƾRN\ D>>"ƾQ\5>Kľ1|\f>žRN\ D>>"ƾ1|\f>ža\>zǾa\>zǾ1|\f>ž!\#>SRǾa\>zǾ!\#>SRǾIc\>ȾIc\>Ⱦ!\#>SRǾ\>ȾR,)C4?ʾi?Z)4>ʾjZbf>%X̾R,)C4?ʾjZbf>%X̾A3?%X̾A3?%X̾jZbf>%X̾ZUG>;A3?%X̾ZUG>;q_L3?;q_L3?;ZUG>;Z>Kξq_L3?;Z>Kξ)2?Kξ)2?KξZ>Kξ =[k>%ξ)2?Kξ =[k>%ξ"e1?%ξ"e1?%ξ =[k>%ξL[m>ξ"e1?%ξL[m>ξԻ!1?ξԻ!1?ξL[m>ξ[f>*ξԻ!1?ξ[f>*ξ[0?*ξ[0?*ξ[f>*ξ#\>K;[0?*ξ#\>K;'N/?K;'N/?K;#\>K;l[\%>K̾'N/?K;l[\%>K̾U:*/?K̾U:*/?K̾l[\%>K̾\fH>ʾU:*/?K̾\fH>ʾM.?ʾM.?ʾ\fH>ʾ\>ȾM.?ʾ\>ȾW.?ȾW.?Ⱦ\>Ⱦ!\#>SRǾW.?Ⱦ!\#>SRǾ/V.?SRǾ/V.?SRǾ!\#>SRǾ1|\f>ž/V.?SRǾ1|\f>žJ.?žJ.?ž1|\f>žQ\5>KľJ.?žQ\5>Kľj5=C/?Kľj5=C/?KľQ\5>Kľ\aS>$þj5=C/?Kľ\aS>$þ/?$þ/?$þ\aS>$þ[>OX¾/?$þ[>OX¾0?OX¾0?OX¾[>OX¾~[.>0?OX¾~[.>˻?1?˻?1?~[.>,[>-˻?1?,[>-񢻿2?-񢻿2?-,[>-Zd5>y¾񢻿2?-Zd5>y¾{2?y¾{2?y¾Zd5>y¾Z@>Wþ{2?y¾Z@>WþXk3?WþXk3?WþZ@>Wþ.`Z>ľXk3?Wþ.`Z>ľ<3?ľ<3?ľ.`Z>ľ8ZPR>ƾ<3?ľ8ZPR>ƾ )Q4?ƾ )Q4?ƾ8ZPR>ƾ%Z`>6Ǿ )Q4?ƾ%Z`>6Ǿ4?6Ǿn94?(ɾCCg3?ʾHmZW>ʾHmZW>ʾCCg3?ʾT}3?N˾HmZW>ʾT}3?N˾SZ>N˾SZ>N˾T}3?N˾0nN3?̾SZ>N˾0nN3?̾#Zƹ>̾#Zƹ>̾0nN3?̾T*s2?kV;#Zƹ>̾T*s2?kV;mZ|>kV;mZ|>kV;T*s2?kV;1?N;mZ|>kV;1?N;GB[ S>N;GB[ S>N;1?N;*л#,1?";GB[ S>N;*л#,1?";[p>";[p>";*л#,1?";0?:;[p>";0?:;[>:;[>:;0?:;lS/?w̾[>:;lS/?w̾\Э>w̾\Э>w̾lS/?w̾&M/?z˾\Э>w̾&M/?z˾2\>z˾2\>z˾&M/?z˾f6=/?>ʾ2\>z˾f6=/?>ʾS\(+>>ʾS\(+>>ʾf6=/?>ʾB>U/?ȾS\(+>>ʾB>U/?ȾIc\>ȾIc\>ȾB>U/?Ⱦ=C/?zǾIc\>Ⱦ=C/?zǾa\>zǾa\>zǾ=C/?zǾ3rJ/?>"ƾa\>zǾ3rJ/?>"ƾRN\ D>>"ƾRN\ D>>"ƾ3rJ/?>"ƾ!/?ľRN\ D>>"ƾ!/?ľF*\>ľF*\>ľ!/?ľ0?þF*\>ľ0?þx[>>þx[>>þ0?þ껿0?jMþx[>>þ껿0?jMþ-[:>jMþ-[:>jMþ껿0?jMþHɻL1?¾-[:>jMþHɻL1?¾Sy[H>¾Sy[H>¾HɻL1?¾঻1?þSy[H>¾঻1?þ4[>þ4[>þ঻1?þƅ2?hþ4[>þƅ2?hþZ>hþZ>hþƅ2?hþh3?^$ľZ>hþh3?^$ľZ4>^$ľZ4>^$ľh3?^$ľQ3?3)žZ4>^$ľQ3?3)žψZF>3)žψZF>3)žQ3?3)ž@3?cƾψZF>3)ž@3?cƾ hZp>cƾ hZp>cƾ@3?cƾs84?Ǿ hZp>cƾs84?ǾWZ5>Ǿ|f0?)ʾ F˸0?̾r/?Uʾr/?Uʾ F˸0?̾,e"0?YZ;r/?Uʾ,e"0?YZ; M/?\ʾ M/?\ʾ,e"0?YZ;n/?l; M/?\ʾn/?l;Ҍb/?@ʾҌb/?@ʾn/?l;.?=';Ҍb/?@ʾ.?=';V*/?tʾV*/?tʾ.?=';¹6].?̾V*/?tʾ¹6].?̾s&.?ɾs&.?ɾ¹6].?̾x۹-?˾s&.?ɾx۹-?˾Uj.?4ɾUj.?4ɾx۹-?˾)d-?vʾUj.?4ɾ)d-?vʾ.?Ⱦ.?Ⱦ)d-?vʾ_-?gDɾ.?Ⱦ_-?gDɾ?z.?*Ⱦ?z.?*Ⱦ_-?gDɾIW-?NǾ?z.?*ȾIW-?NǾ.?Ǿ.?ǾIW-?NǾw-?ƾ.?Ǿw-?ƾ.?)Ǿ.?)Ǿw-?ƾ㹿-?nž.?)Ǿ㹿-?nž᜹]/?ƾ᜹]/?ƾ㹿-?nžι!(.?oľ᜹]/?ƾι!(.?oľI/?xƾI/?xƾι!(.?oľ.?þI/?xƾ.?þ/?Nƾ/?Nƾ.?þaB/?zIþ/?NƾaB/?zIþx/?Fƾx/?FƾaB/?zIþr/? 7þx/?Fƾr/? 7þkC0?cƾkC0?cƾr/? 7þR1{0?|þkC0?cƾR1{0?|þ_;0?aƾ_;0?aƾR1{0?|þ51?Bľ_;0?aƾ51?BľVj0?ƾVj0?ƾ51?Bľ~1?SľVj0?ƾ~1?Sľ9O0?)oǾ9O0?)oǾ~1?Sľd 1?`ƾ9O0?)oǾd 1?`ƾJ40?ǾL_0?Ⱦ 1?ʾR1{0?#zɾR1{0?#zɾ 1?ʾ1?)5˾R1{0?#zɾ1?)5˾[P0?ɾ[P0?ɾ1?)5˾*.=1?p3̾[P0?ɾ*.=1?p3̾|f0?)ʾ|f0?)ʾ*.=1?p3̾ F˸0?̾?`0h>)oǾe`>`ƾ`">ƾ`">ƾe`>`ƾ`J>Sľ`">ƾ`J>SľaX>aƾaX>aƾ`J>Sľ `^>BľaX>aƾ `^>BľC&aS>cƾC&aS>cƾ `^>Bľs`D>|þC&aS>cƾs`D>|þ?aj>Fƾ?aj>Fƾs`D>|þ4av> 7þ?aj>Fƾ4av> 7þ ZaZ>Nƾ ZaZ>Nƾ4av> 7þua>zIþ ZaZ>Nƾua>zIþra>xƾra>xƾua>zIþгam>þra>xƾгam>þaw>ƾaw>ƾгam>þa>oľaw>ƾa>oľBa#>)ǾBa#>)Ǿa>oľb>nžBa#>)Ǿb>nžaF>ǾaF>Ǿb>nžE4b<>ƾaF>ǾE4b<>ƾKa]>*ȾKa]>*ȾE4b<>ƾ_Ab>NǾKa]>*Ⱦ_Ab>NǾa>Ⱦa>Ⱦ_Ab>NǾ>b >gDɾa>Ⱦ>b >gDɾ a?>4ɾ a?>4ɾ>b >gDɾ)bo>vʾ a?>4ɾ)bo>vʾaD>ɾaD>ɾ)bo>vʾb>˾aD>ɾb>˾ a>tʾ a>tʾb>˾a>̾ a>tʾa>̾tha>@ʾtha>@ʾa>̾Ba">=';tha>@ʾBa">=';Na>\ʾNa>\ʾBa">=';ZaW>l;Na>\ʾZaW>l;4a >Uʾ4a >UʾZaW>l;'aٓ>YZ;4a >Uʾ'aٓ>YZ;an>)ʾan>)ʾ'aٓ>YZ;`>̾an>)ʾ`>̾&a>ɾ&a>ɾ`>̾ף`>p3̾&a>ɾף`>p3̾s`{C>#zɾs`{C>#zɾף`>p3̾w`̛>)5˾s`{C>#zɾw`̛>)5˾`'}>Ⱦ`'}>Ⱦw`̛>)5˾rZ`*>ʾ`'}>ȾrZ`*>ʾj`^>>yȾj`^>>yȾrZ`*>ʾVM`j>Ⱦj`^>>yȾVM`j>Ⱦ`>Ǿ`>ǾVM`j>ȾP`Y>o_Ǿ`>ǾP`Y>o_Ǿ?`0h>)oǾ?`0h>)oǾP`Y>o_Ǿe`>`ƾP`Y>o_Ǿd 1?`ƾe`>`ƾe`>`ƾd 1?`ƾ~1?Sľe`>`ƾ~1?Sľ`J>Sľ`J>Sľ~1?Sľ51?Bľ`J>Sľ51?Bľ `^>Bľ `^>Bľ51?BľR1{0?|þ `^>BľR1{0?|þs`D>|þs`D>|þR1{0?|þr/? 7þs`D>|þr/? 7þ4av> 7þ4av> 7þr/? 7þaB/?zIþ4av> 7þaB/?zIþua>zIþua>zIþaB/?zIþ.?þua>zIþ.?þгam>þгam>þ.?þι!(.?oľгam>þι!(.?oľa>oľa>oľι!(.?oľ㹿-?nža>oľ㹿-?nžb>nžb>nž㹿-?nžw-?ƾb>nžw-?ƾE4b<>ƾE4b<>ƾw-?ƾIW-?NǾE4b<>ƾIW-?NǾ_Ab>NǾ_Ab>NǾIW-?NǾ_-?gDɾ_Ab>NǾ_-?gDɾ>b >gDɾ>b >gDɾ_-?gDɾ)d-?vʾ>b >gDɾ)d-?vʾ)bo>vʾ)bo>vʾ)d-?vʾx۹-?˾)bo>vʾx۹-?˾b>˾b>˾x۹-?˾¹6].?̾b>˾¹6].?̾a>̾a>̾¹6].?̾.?=';a>̾.?=';Ba">=';Ba">=';.?=';n/?l;Ba">=';n/?l;ZaW>l;ZaW>l;n/?l;,e"0?YZ;ZaW>l;,e"0?YZ;'aٓ>YZ;'aٓ>YZ;,e"0?YZ; F˸0?̾'aٓ>YZ; F˸0?̾`>̾`>̾ F˸0?̾*.=1?p3̾`>̾*.=1?p3̾ף`>p3̾ף`>p3̾*.=1?p3̾1?)5˾ף`>p3̾1?)5˾w`̛>)5˾w`̛>)5˾1?)5˾ 1?ʾw`̛>)5˾ 1?ʾrZ`*>ʾ#2Li>Ǿ?`0h>)oǾ:LB>)oǾ:LB>)oǾ?`0h>)oǾ`">ƾ:LB>)oǾ`">ƾILm>ƾILm>ƾ`">ƾaX>aƾILm>ƾaX>aƾ\L >aƾ\L >aƾaX>aƾC&aS>cƾ\L >aƾC&aS>cƾsLS/>cƾsLS/>cƾC&aS>cƾ?aj>FƾsLS/>cƾ?aj>Fƾ;Lв>Fƾ;Lв>Fƾ?aj>Fƾ ZaZ>Nƾ;Lв>Fƾ ZaZ>NƾrL4>NƾrL4>Nƾ ZaZ>Nƾra>xƾrL4>Nƾra>xƾYLf>xƾYLf>xƾra>xƾaw>ƾYLf>xƾaw>ƾL:R>ƾL:R>ƾaw>ƾBa#>)ǾL:R>ƾBa#>)ǾLX>)ǾLX>)ǾBa#>)ǾaF>ǾLX>)ǾaF>ǾwL>ǾwL>ǾaF>ǾKa]>*ȾwL>ǾKa]>*ȾLī>*ȾLī>*ȾKa]>*Ⱦa>ȾLī>*Ⱦa>ȾgLR>ȾgLR>Ⱦa>Ⱦ a?>4ɾgLR>Ⱦ a?>4ɾL>4ɾL>4ɾ a?>4ɾaD>ɾL>4ɾaD>ɾL>ɾL>ɾaD>ɾ a>tʾL>ɾ a>tʾvL{}>tʾvL{}>tʾ a>tʾtha>@ʾvL{}>tʾtha>@ʾݵL4>@ʾݵL4>@ʾtha>@ʾNa>\ʾݵL4>@ʾNa>\ʾOLji>\ʾOLji>\ʾNa>\ʾ4a >UʾOLji>\ʾ4a >UʾL>UʾL>Uʾ4a >Uʾan>)ʾL>Uʾan>)ʾ/iL_>)ʾ/iL_>)ʾan>)ʾ&a>ɾ/iL_>)ʾ&a>ɾSL>ɾSL>ɾ&a>ɾs`{C>#zɾSL>ɾs`{C>#zɾAL>#zɾAL>#zɾs`{C>#zɾ`'}>ȾAL>#zɾ`'}>Ⱦ6LW>Ⱦ6LW>Ⱦ`'}>Ⱦj`^>>yȾ6LW>Ⱦj`^>>yȾ0Lq>>yȾ0Lq>>yȾj`^>>yȾ`>Ǿ0Lq>>yȾ`>Ǿ#2Li>Ǿ#2Li>Ǿ`>Ǿ?`0h>)oǾI^ >g~ž;>EI(x>4žI(x>4ž;>ER;wk>tI(x>4žR;wk>tdI >pždI >pžR;wk>t;>dI >pž;>[Ib>ľ[Ib>ľ;>;9N>$[Ib>ľ;9N>$4I>:ž4I>:ž;9N>$e;F>[4I>:že;F>[ I,>Iž I,>Iže;F>[a<;_> I,>Iža<;_>sHt>žsHt>ža<;_>;>lsHt>ž;>lpH>hƾpH>hƾ;>l:/>pH>hƾ:/>H>LƾH>Lƾ:/>:>vH>Lƾ:>v H>pƾ H>pƾ:>v:_>K H>pƾ:_>KwHt>}ǾwHt>}Ǿ:_>K:F>wHt>}Ǿ:F>uH,><ǾuH,><Ǿ:F>k:L>@euH,><Ǿk:L>@e}~H>TȾ}~H>TȾk:L>@em:>}~H>TȾm:>אHb>ȾאHb>Ⱦm:>;wk>7ۼאHb>Ⱦ;wk>7ۼH>2ȾH>2Ⱦ;wk>7ۼW+;>弾H>2ȾW+;>弾iH(x>ȾiH(x>ȾW+;>弾PS;>jϼiH(x>ȾPS;>jϼH^ >ȾH^ >ȾPS;>jϼB};+>H^ >ȾB};+>!IN>Ⱦ!IN>ȾB};+>;>G!IN>Ⱦ;>GJI7f>5ȾJI7f>5Ⱦ;>G;>?޻JI7f>5Ⱦ;>?޻QpIX8>9ǾQpIX8>9Ǿ;>?޻\;D>YdQpIX8>9Ǿ\;D>YdƏI)>SǾƏI)>SǾ\;D>YdL<>5庾ƏI)>SǾL<>5庾IX8>/ƾIX8>/ƾL<>5庾h<>fIX8>/ƾh<>fгI7f>\UƾгI7f>\Uƾh<>f<+>гI7f>\Uƾ<+>pIN>žpIN>ž<+>򹾂 <>pIN>ž <>I^ >g~žI^ >g~ž <>;>E:K7>{'ƾdI >pž\Kd>:ž\Kd>:ždI >pž[Ib>ľ\Kd>:ž[Ib>ľJJ(>\žJJ(>\ž[Ib>ľ4I>:žJJ(>\ž4I>:žJ>ƾJ>ƾ4I>:ž I,>IžJ>ƾ I,>IžJ|>JƾJ|>Jƾ I,>IžsHt>žJ|>JƾsHt>ž9J_X>ƾ9J_X>ƾsHt>žpH>hƾ9J_X>ƾpH>hƾjJ >jǾjJ >jǾpH>hƾH>LƾjJ >jǾH>LƾUJ>ܓǾUJ>ܓǾH>Lƾ H>pƾUJ>ܓǾ H>pƾ=IJ>Ⱦ=IJ>Ⱦ H>pƾwHt>}Ǿ=IJ>ȾwHt>}ǾDJ݈>ȾDJ݈>ȾwHt>}ǾuH,><ǾDJ݈>ȾuH,><Ǿ=IJH>ɾ=IJH>ɾuH,><Ǿ}~H>TȾ=IJH>ɾ}~H>TȾUJ>s{ɾUJ>s{ɾ}~H>TȾאHb>ȾUJ>s{ɾאHb>ȾjJ >*ɾjJ >*ɾאHb>ȾH>2ȾjJ >*ɾH>2ȾJ>jɾJ>jɾH>2ȾiH(x>ȾJ>jɾiH(x>ȾJ->HɾJ->HɾiH(x>ȾH^ >ȾJ->HɾH^ >ȾrJ>ɾrJ>ɾH^ >Ⱦ!IN>ȾrJ>ɾ!IN>Ⱦ7J>Ƣɾ7J>Ƣɾ!IN>ȾJI7f>5Ⱦ7J>ƢɾJI7f>5ȾKb>IɾKb>IɾJI7f>5ȾQpIX8>9ǾKb>IɾQpIX8>9Ǿ:K)>;Ⱦ:K)>;ȾQpIX8>9ǾƏI)>SǾ:K)>;ȾƏI)>SǾ2K >YȾ2K >YȾƏI)>SǾIX8>/ƾ2K >YȾIX8>/ƾ?K4>Ǿ?K4>ǾIX8>/ƾгI7f>\Uƾ?K4>ǾгI7f>\UƾCK3>OǾCK3>OǾгI7f>\UƾpIN>žCK3>OǾpIN>ž>Ks>ƾ>Ks>ƾpIN>žI^ >g~ž>Ks>ƾI^ >g~ž2K>2rƾ2K>2rƾI^ >g~žI(x>4ž2K>2rƾI(x>4ž:K7>{'ƾ:K7>{'ƾI(x>4ždI >pžYLf>xƾ\Kd>:žrL4>NƾrL4>Nƾ\Kd>:žJJ(>\žrL4>NƾJJ(>\ž;Lв>Fƾ;Lв>FƾJJ(>\žJ>ƾ;Lв>FƾJ>ƾsLS/>cƾsLS/>cƾJ>ƾJ|>JƾsLS/>cƾJ|>Jƾ\L >aƾ\L >aƾJ|>Jƾ9J_X>ƾ\L >aƾ9J_X>ƾILm>ƾILm>ƾ9J_X>ƾjJ >jǾILm>ƾjJ >jǾ:LB>)oǾ:LB>)oǾjJ >jǾUJ>ܓǾ:LB>)oǾUJ>ܓǾ#2Li>Ǿ#2Li>ǾUJ>ܓǾ=IJ>Ⱦ#2Li>Ǿ=IJ>Ⱦ0Lq>>yȾ0Lq>>yȾ=IJ>ȾDJ݈>Ⱦ0Lq>>yȾDJ݈>Ⱦ6LW>Ⱦ6LW>ȾDJ݈>Ⱦ=IJH>ɾ6LW>Ⱦ=IJH>ɾAL>#zɾAL>#zɾ=IJH>ɾUJ>s{ɾAL>#zɾUJ>s{ɾSL>ɾSL>ɾUJ>s{ɾjJ >*ɾSL>ɾjJ >*ɾ/iL_>)ʾ/iL_>)ʾjJ >*ɾJ>jɾ/iL_>)ʾJ>jɾL>UʾL>UʾJ>jɾJ->HɾL>UʾJ->HɾOLji>\ʾOLji>\ʾJ->HɾrJ>ɾOLji>\ʾrJ>ɾݵL4>@ʾݵL4>@ʾrJ>ɾ7J>ƢɾݵL4>@ʾ7J>ƢɾvL{}>tʾvL{}>tʾ7J>ƢɾKb>IɾvL{}>tʾKb>IɾL>ɾL>ɾKb>Iɾ:K)>;ȾL>ɾ:K)>;ȾL>4ɾL>4ɾ:K)>;Ⱦ2K >YȾL>4ɾ2K >YȾgLR>ȾgLR>Ⱦ2K >YȾ?K4>ǾgLR>Ⱦ?K4>ǾLī>*ȾLī>*Ⱦ?K4>ǾCK3>OǾLī>*ȾCK3>OǾwL>ǾwL>ǾCK3>OǾ>Ks>ƾwL>Ǿ>Ks>ƾLX>)ǾLX>)Ǿ>Ks>ƾ2K>2rƾLX>)Ǿ2K>2rƾL:R>ƾL:R>ƾ2K>2rƾ:K7>{'ƾL:R>ƾ:K7>{'ƾYLf>xƾYLf>xƾ:K7>{'ƾ\Kd>:ž|7P>F:r>9Ѿ>7Ď>(>7Ď>(F:r>9Ѿ:h>*>7Ď>(:h>*k7ჾ>΃k7ჾ>΃:h>* : ;>@Mk7ჾ>΃ : ;>@Mj7U>Kj7U>K : ;>@MB:D>iHj7U>KB:D>iH7>'7>'B:D>iH+:0A>*7>'+:0A>*%#7 ]>%#7 ]>+:0A>*_:d> %#7 ]>_:d> V7n>dV7n>d_:d> M:B>PV7n>dM:B>P7 ]> T7 ]> TM:B>P0:D>7 ]> T0:D>>7>h>7>h0:D>?W; ;>T>7>h?W; ;>TN8V>N8V>?W; ;>T;h> ۶N8V>;h> ۶8ჾ>48ჾ>4;h> ۶>8ჾ>4>&9Ď>&9Ď>> ^%¶&9Ď> ^%¶rU9P>1rU9P>1 ^%¶<d>t$rU9P>1<d>t$\9>}\9>}<d>t$ɷ\9>}ɷ9Š>"9Š>"ɷ<0>9Š>"<0>9>(9>(<0><>A9>(<>A9>N9>N<>A,<>ɺ9>N,<>ɺ9G>"9G>",<>ɺf 껾9G>"f 껾z92>Cz92>Cf 껾H=<>]z92>CH=<>]49G>hR49G>hRH=<>];>潾49G>hR;>潾#8>?#8>?;>潾T;>#8>?T;>8>v8>vT;>-;n>8>v-;n>\%8Š>s\%8Š>s-;n>-:d>mL\%8Š>s-:d>mL7>z7>z-:d>mL:wk>37>z:wk>3|7P>|7P>:wk>3F:r>9Ѿ7>z|7P>>7Ď>(\9>}\%8Š>s7>z>7Ď>(8ჾ>4&9Ď>7>z>7Ď>(\9>}\9>}>7Ď>(&9Ď>\9>}&9Ď>rU9P>19>N9G>"9>(9>(9G>"\%8Š>s9>(\%8Š>s9Š>"9Š>"\%8Š>s\9>}#8>?8>v49G>hR49G>hR8>v\%8Š>s49G>hR\%8Š>sz92>Cz92>C\%8Š>s9G>"7>'%#7 ]>j7U>Kj7U>K%#7 ]>8ჾ>4j7U>K8ჾ>4k7ჾ>΃k7ჾ>΃8ჾ>4>7Ď>(>7>hN8V>7 ]> T7 ]> TN8V>8ჾ>47 ]> T8ჾ>4V7n>dV7n>d8ჾ>4%#7 ]>e;F>[?W; ;>Ta<;_>a<;_>?W; ;>T0:D>a<;_>0:D>;>l;>l0:D>M:B>P;>lM:B>P:/>:/>M:B>P_:d> :/>_:d> :>v:>v_:d> +:0A>*:>v+:0A>*:_>K:_>K+:0A>*B:D>iH:_>KB:D>iH:F>:F>B:D>iH : ;>@M:F> : ;>@Mk:L>@ek:L>@e : ;>@M:h>*k:L>@e:h>*m:>m:>:h>*F:r>9Ѿm:>F:r>9Ѿ;wk>7ۼ;wk>7ۼF:r>9Ѿ:wk>3;wk>7ۼ:wk>3W+;>弾W+;>弾:wk>3-:d>mLW+;>弾-:d>mLPS;>jϼPS;>jϼ-:d>mL-;n>PS;>jϼ-;n>B};+>B};+>-;n>T;>B};+>T;>;>G;>GT;>;>潾;>G;>潾;>?޻;>?޻;>潾H=<>];>?޻H=<>]\;D>Yd\;D>YdH=<>]f 껾\;D>Ydf 껾L<>5庾L<>5庾f 껾,<>ɺL<>5庾,<>ɺh<>fh<>f,<>ɺ<>Ah<>f<>A<+><+>򹾪<>A<0><+>򹾑<0> <> <><0>ɷ <>ɷ;>E;>Eɷ<d>t$;>E<d>t$R;wk>tR;wk>t<d>t$ ^%¶R;wk>t ^%¶;>;> ^%¶>;>>;9N>$;9N>$>;h> ۶;9N>$;h> ۶e;F>[e;F>[;h> ۶?W; ;>T˾ӿD?ɾUj.?4ɾӿ5zD?4ɾӿ5zD?4ɾUj.?4ɾ.?Ⱦӿ5zD?4ɾ.?ȾӿfD?ȾӿfD?Ⱦ.?Ⱦ?z.?*ȾӿfD?Ⱦ?z.?*ȾӿbD?*ȾӿbD?*Ⱦ?z.?*Ⱦ.?ǾӿbD?*Ⱦ.?ǾӿoD?ǾӿoD?Ǿ.?Ǿ.?)ǾӿoD?Ǿ.?)ǾӿD?)ǾӿD?)Ǿ.?)Ǿ᜹]/?ƾӿD?)Ǿ᜹]/?ƾ8ӿD?ƾ8ӿD?ƾ᜹]/?ƾI/?xƾ8ӿD?ƾI/?xƾiӿD?xƾiӿD?xƾI/?xƾ/?NƾiӿD?xƾ/?Nƾӿ'E?Nƾӿ'E?Nƾ/?Nƾx/?Fƾӿ'E?Nƾx/?Fƾ۔ӿfE?Fƾ۔ӿfE?Fƾx/?FƾkC0?cƾ۔ӿfE?FƾkC0?cƾӿeE?cƾӿeE?cƾkC0?cƾ_;0?aƾӿeE?cƾ_;0?aƾF|ӿE?aƾF|ӿE?aƾ_;0?aƾVj0?ƾF|ӿE?aƾVj0?ƾqrӿ F?ƾqrӿ F?ƾVj0?ƾ9O0?)oǾqrӿ F?ƾ9O0?)oǾkӿ.F?)oǾkӿ.F?)oǾ9O0?)oǾJ40?Ǿkӿ.F?)oǾJ40?ǾNgӿXBF?ǾfӿEF?>yȾL_0?ȾEiӿ*9F?ȾEiӿ*9F?ȾL_0?ȾR1{0?#zɾEiӿ*9F?ȾR1{0?#zɾ*oӿTF?#zɾ*oӿTF?#zɾR1{0?#zɾ[P0?ɾ*oӿTF?#zɾ[P0?ɾxӿaE?ɾxӿaE?ɾ[P0?ɾ|f0?)ʾxӿaE?ɾ|f0?)ʾՂӿLE?)ʾՂӿLE?)ʾ|f0?)ʾr/?UʾՂӿLE?)ʾr/?UʾHӿE?UʾHӿE?Uʾr/?Uʾ M/?\ʾHӿE?Uʾ M/?\ʾcӿBE?\ʾcӿBE?\ʾ M/?\ʾҌb/?@ʾcӿBE?\ʾҌb/?@ʾ+ӿ}E?@ʾ+ӿ}E?@ʾҌb/?@ʾV*/?tʾ+ӿ}E?@ʾV*/?tʾӿxD?tʾӿxD?tʾV*/?tʾs&.?ɾӿxD?tʾs&.?ɾ˾ӿD?ɾ˾ӿD?ɾs&.?ɾUj.?4ɾӿ'E?Nƾ۔ӿfE?FƾiӿD?xƾiӿD?xƾ۔ӿfE?FƾNgӿXBF?ǾiӿD?xƾNgӿXBF?Ǿ8ӿD?ƾqrӿ F?ƾkӿ.F?)oǾF|ӿE?aƾF|ӿE?aƾkӿ.F?)oǾNgӿXBF?ǾF|ӿE?aƾNgӿXBF?ǾӿeE?cƾӿeE?cƾNgӿXBF?Ǿ۔ӿfE?Fƾ*oӿTF?#zɾxӿaE?ɾEiӿ*9F?ȾEiӿ*9F?ȾxӿaE?ɾ8ӿD?ƾEiӿ*9F?Ⱦ8ӿD?ƾfӿEF?>yȾfӿEF?>yȾ8ӿD?ƾNgӿXBF?ǾHӿE?UʾcӿBE?\ʾՂӿLE?)ʾՂӿLE?)ʾcӿBE?\ʾӿfD?ȾՂӿLE?)ʾӿfD?ȾxӿaE?ɾ˾ӿD?ɾӿ5zD?4ɾӿxD?tʾӿxD?tʾӿ5zD?4ɾӿfD?ȾӿxD?tʾӿfD?Ⱦ+ӿ}E?@ʾ+ӿ}E?@ʾӿfD?ȾcӿBE?\ʾӿD?)Ǿ8ӿD?ƾӿoD?ǾӿoD?Ǿ8ӿD?ƾxӿaE?ɾӿoD?ǾxӿaE?ɾӿbD?*ȾӿbD?*ȾxӿaE?ɾӿfD?ȾffF? C?VgfFF?gfFF? C?V CF?V9BF?A B?AgfFF?﫿gfFF?﫿 B?AffF?﫿(x=J^(x=Jz(j=J>z(j=J>z(j=J>^(x=J^U.S?뵿~ .S?뵿~ .S?Ԭ~ .S?ԬU.S?ԬU.S?뵿~ ?뵿~ ?Ԭ~ .S?Ԭ~ .S?Ԭ~ .S?뵿~ ?뵿P?ԬU.S?Ԭ~ .S?Ԭ~ .S?Ԭ~ ?ԬP?ԬP?뵿P?Ԭ~ ?Ԭ~ ?Ԭ~ ?뵿P?뵿P?뵿~ ?뵿~ .S?뵿~ .S?뵿U.S?뵿P?뵿U.S?뵿U.S?ԬP?ԬP?ԬP?뵿U.S?뵿h?E>뵿֣0?E>뵿֣0?E>Ԭ֣0?E>Ԭh?E>Ԭh?E>뵿֣0?E>뵿֣0?]d>뵿֣0?]d>Ԭ֣0?]d>Ԭ֣0?E>Ԭ֣0?E>뵿h?E>뵿h?E>Ԭh?_d>Ԭh?_d>Ԭh?_d>뵿h?E>뵿h?E>Ԭ֣0?E>Ԭ֣0?]d>Ԭ֣0?]d>Ԭh?_d>Ԭh?E>Ԭh?E>뵿h?_d>뵿֣0?]d>뵿֣0?]d>뵿֣0?E>뵿h?E>뵿֣0?]d>뵿h?_d>뵿h?_d>Ԭh?_d>Ԭ֣0?]d>Ԭ֣0?]d>뵿h?E뵿أ0?E뵿أ0?EԬأ0?EԬh?EԬh?E뵿h?Ud뵿أ0?Wd뵿أ0?E뵿أ0?E뵿h?E뵿h?Ud뵿أ0?Wd뵿أ0?WdԬأ0?EԬأ0?EԬأ0?E뵿أ0?Wd뵿h?Ud뵿h?E뵿h?EԬh?EԬh?UdԬh?Ud뵿h?UdԬh?EԬأ0?EԬأ0?EԬأ0?WdԬh?UdԬh?Ud뵿h?UdԬأ0?WdԬأ0?WdԬأ0?Wd뵿h?Ud뵿8뵿 ~ 뵿 ~ Ԭ ~ Ԭ8Ԭ8뵿3.S뵿 ~ .S뵿 ~ 뵿 ~ 뵿8뵿3.S뵿3.S뵿3.SԬ ~ .SԬ ~ .SԬ ~ .S뵿3.S뵿3.SԬ8Ԭ ~ Ԭ ~ Ԭ ~ .SԬ3.SԬ ~ .S뵿 ~ .SԬ ~ Ԭ ~ Ԭ ~ 뵿 ~ .S뵿3.S뵿8뵿8Ԭ8Ԭ3.SԬ3.S뵿5A53SԬD53SԬDJԬDJԬ5AJԬ5A53SԬ5A53S뵿D53S뵿D53SԬD53SԬ5A53SԬ5A53S뵿5AJ뵿5AJԬDJԬDJԬDJ뵿5AJ뵿D53S뵿DJ뵿DJԬDJԬD53SԬD53S뵿5A53S뵿5A53SԬ5AJԬ5AJԬ5AJ뵿5A53S뵿5A53S뵿5AJ뵿DJ뵿DJ뵿D53S뵿5A53S뵿9AF?뵿DF?뵿DF?ԬDF?Ԭ9AF?Ԭ9AF?뵿9AF?뵿9A03S?뵿D03S?뵿D03S?뵿DF?뵿9AF?뵿9A03S?뵿9A03S?ԬD03S?ԬD03S?ԬD03S?뵿9A03S?뵿9AF?ԬDF?ԬD03S?ԬD03S?Ԭ9A03S?Ԭ9AF?Ԭ9AF?뵿9AF?Ԭ9A03S?Ԭ9A03S?Ԭ9A03S?뵿9AF?뵿DF?뵿D03S?뵿D03S?ԬD03S?ԬDF?ԬDF?뵿1?V1?1F?1F?1F?V1?V1?4?Vz4F?Vz4F?V1F?1?z4F?V CF?V C?V C?V4?Vz4F?V1?V1F?VGAF?VGAF?VGA?V1?VGA?V B?A9BF?A9BF?AGAF?VGA?VffF?﫿ffF?gfFF?gfFF?gfFF?﫿ffF?﫿9BF?AgfFF?﫿gfFF?﫿gfFF? CF?V CF?V CF?VgfFF?gfFF?1F?V1F?1F?1F?1F?V1F?V1F?z4F?Vz4F?Vz4F?V1F?1F? CF?Vz4F?Vz4F?Vz4F?V CF?V CF?VGAF?V1F?V1F?V1F?VGAF?VGAF?VGAF?V9BF?AGAF?VgfFF?﫿gfFF?gfFF?gfFF?gfFF?﫿gfFF?﫿1F?gfFF? CF?V CF?Vz4F?V1F?gfFF?1F?V1F?9BF?AgfFF?﫿gfFF?9BF?AgfFF?gfFF?﫿9BF?AgfFF?1F?V9BF?A1F?VGAF?V B?AffF?ffF?﫿1?V1? B?A1?V B?AGA?V B?A1?4?V C?VffF? B?A C?V B?A4?V8,8>X9^ܚ'?X98ـ?X9xۑ!>X9y>X9A>X9>X9xۑ!>X9A>X9y>X9[/ĵ?X9A>X9r>X9>X9A>X9m>j>X9r>X9A>X9[/ĵ?X9%?X9A>X9m;>X9m>j>X9A>X9%?X9Ⓙ}?X9A>X9O>X9m;>X9A>X9Ⓙ}?X92l?X9A>X92l?X9K?X9A>X9쐓T>X9O>X9A>X9̓8>X9쐓T>X9A>X9>X9̓8>X9A>X9K?X9v͔[ ?X9A>X9p>X9>X9A>X9v͔[ ?X9"ȕ ?X9A>X9 Y>X9p>X9A>X9"ȕ ?X9 ?X9A>X9G{>X9 Y>X9A>X9 ?X9ٖ ?X9A>X9ٖ ?X9oM ?X9A>X9 fn>X9G{>X9A>X9oM ?X9$S ?X9A>X9+K>X9 fn>X9A>X9i\Y7>X9+K>X9A>X9W>X9i\Y7>X9A>X9$S ?X9Q ?X9A>X9>X9W>X9A>X9Q ?X95g ?X9A>X9{>X9>X9A>X95g ?X9y ?X9A>X9y ?X9i[ ?X9A>X9MN>X9{>X9A>X9IĜB>X9MN>X9A>X9i[ ?X9РB ?X9A>X9>X9IĜB>X9A>X9РB ?X9P0?X9A>X9>X9>X9A>X9>X9ʝ>X9A>X9P0?X9e/?X9A>X9Dž I>X9>X9A>X9e/?X9Ղ?X9A>X9Ղ?X9IWG?X9A>X9/*>X9Dž I>X9A>X9IWG?X9BA/?X9A>X9g>X9/*>X9A>X9BA/?X9?X9A>X9 >X9g>X9A>X9?X9wp7>X9A>X9^3ϐ>X9 >X9A>X9wp7>X9o/ D>X9A>X9o/ D>X9 3.>X9A>X9 3.>X9^3ϐ>X9A>X9Dž I>Dž I>X9/*>X9>>X9Dž I>X9 ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ?oM ?oM ? ? ? ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ? ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ? ? ? ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ?oM ?oM ?oM ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> > > 3.> 3.> 3.> >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ> 3.> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ> >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > 3.> 3.> 3.> > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> > > > 3.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>쐓T>쐓T>O>O>O>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>O>O>m;>m;>m;>O>O>쐓T>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>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>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>m;>m;>m;>O>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>O>O>O>m;>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>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>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>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>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>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>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>y>y>xۑ!>xۑ!>xۑ!>y>y>y>y>y>y>y>xۑ!>xۑ!>y>y>y>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>y>y>y>xۑ!>xۑ!>>>xۑ!>xۑ!>xۑ!>>>>>>>>xۑ!>xۑ!>>>>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>xۑ!>>>>xۑ!>xۑ!>[/ĵ?[/ĵ?y>y>y>[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?y>y>[/ĵ?[/ĵ?[/ĵ?y>y>y>y>y>y>y>y>[/ĵ?[/ĵ?[/ĵ?y>y>r>r>>>>r>r>r>r>r>r>r>>>r>r>r>>>>>>>>>r>r>r>>>m>j>m>j>r>r>r>m>j>m>j>m>j>m>j>m>j>m>j>m>j>r>r>m>j>m>j>m>j>r>r>r>r>r>r>r>r>m>j>m>j>m>j>r>r>%?%?[/ĵ?[/ĵ?[/ĵ?%?%?%?%?%?%?%?[/ĵ?[/ĵ?%?%?%?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?[/ĵ?%?%?%?[/ĵ?[/ĵ?m;>m;>m>j>m>j>m>j>m;>m;>m;>m;>m;>m;>m;>m>j>m>j>m;>m;>m;>m>j>m>j>m>j>m>j>m>j>m>j>m>j>m>j>m;>m;>m;>m>j>m>j>Ⓙ}?Ⓙ}?%?%?%?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?%?%?Ⓙ}?Ⓙ}?Ⓙ}?%?%?%?%?%?%?%?%?Ⓙ}?Ⓙ}?Ⓙ}?%?%?O>O>m;>m;>m;>O>O>O>O>O>O>O>m;>m;>O>O>O>m;>m;>m;>m;>m;>m;>m;>m;>O>O>O>m;>m;>m;>m;>쐓T>쐓T>쐓T>m;>m;>m;>m;>m;>m;>m;>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>m;>m;>m;>쐓T>쐓T>2l?2l?Ⓙ}?Ⓙ}?Ⓙ}?2l?2l?2l?2l?2l?2l?2l?Ⓙ}?Ⓙ}?2l?2l?2l?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?Ⓙ}?2l?2l?2l?Ⓙ}?Ⓙ}?K?K?2l?2l?2l?K?K?K?K?K?K?K?2l?2l?K?K?K?2l?2l?2l?2l?2l?2l?2l?2l?K?K?K?2l?2l?쐓T>쐓T>O>O>O>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>O>O>쐓T>쐓T>쐓T>O>O>O>O>O>O>O>O>쐓T>쐓T>쐓T>O>O>̓8>̓8>쐓T>쐓T>쐓T>̓8>̓8>̓8>̓8>̓8>̓8>̓8>쐓T>쐓T>̓8>̓8>̓8>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>쐓T>̓8>̓8>̓8>쐓T>쐓T>>>̓8>̓8>̓8>>>>>>>>̓8>̓8>>>>̓8>̓8>̓8>̓8>̓8>̓8>̓8>̓8>>>>̓8>̓8>v͔[ ?v͔[ ?K?K?K?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?K?K?v͔[ ?v͔[ ?v͔[ ?K?K?K?K?K?K?K?K?v͔[ ?v͔[ ?v͔[ ?K?K?p>p>>>>p>p>p>p>p>p>p>>>p>p>p>>>>>>>>>p>p>p>>>"ȕ ?"ȕ ?v͔[ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?v͔[ ?"ȕ ?"ȕ ?"ȕ ?v͔[ ?v͔[ ? Y> Y>p>p>p> Y> Y> Y> Y> Y> Y> Y>p>p> Y> Y> Y>p>p>p>p>p>p>p>p> Y> Y> Y>p>p> ? ?"ȕ ?"ȕ ?"ȕ ? ? ? ? ? ? ? ?"ȕ ?"ȕ ? ? ? ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ?"ȕ ? ? ? ?"ȕ ?"ȕ ?G{>G{> Y> Y> Y>G{>G{>G{>G{>G{>G{>G{> Y> Y>G{>G{>G{> Y> Y> Y> Y> Y> Y> Y> Y>G{>G{>G{> Y> Y> ? ?ٖ ?ٖ ?ٖ ? ? ? ? ? ? ? ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ? ? ? ?ٖ ?ٖ ?oM ?oM ? ? ? ?oM ?oM ?oM ?oM ?oM ?oM ?oM ? ? ?oM ?oM ?oM ? ? ? ? ? ? ? ? ?oM ?oM ?oM ? ? ?ٖ ?ٖ ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?ٖ ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?ٖ ?ٖ ?ٖ ?oM ?oM ? fn> fn>G{>G{>G{> fn> fn> fn> fn> fn> fn> fn>G{>G{> fn> fn> fn>G{>G{>G{>G{>G{>G{>G{>G{> fn> fn> fn>G{>G{>$S ?$S ?oM ?oM ?oM ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?oM ?oM ?$S ?$S ?$S ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?oM ?$S ?$S ?$S ?oM ?oM ?+K>+K> fn> fn> fn>+K>+K>+K>+K>+K>+K>+K> fn> fn>+K>+K>+K> fn> fn> fn> fn> fn> fn> fn> fn>+K>+K>+K> fn> fn>i\Y7>i\Y7>+K>+K>+K>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>+K>+K>i\Y7>i\Y7>i\Y7>+K>+K>+K>+K>+K>+K>+K>+K>i\Y7>i\Y7>i\Y7>+K>+K>W>W>i\Y7>i\Y7>i\Y7>W>W>W>W>W>W>W>i\Y7>i\Y7>W>W>W>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>i\Y7>W>W>W>i\Y7>i\Y7>Q ?Q ?$S ?$S ?$S ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?$S ?$S ?Q ?Q ?Q ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?$S ?Q ?Q ?Q ?$S ?$S ?>>W>W>W>>>>>>>>W>W>>>>W>W>W>W>W>W>W>W>>>>W>W>5g ?5g ?Q ?Q ?Q ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?Q ?Q ?5g ?5g ?5g ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?Q ?5g ?5g ?5g ?Q ?Q ?{>{>>>>{>{>{>{>{>{>{>>>{>{>{>>>>>>>>>{>{>{>>>y ?y ?5g ?5g ?5g ?y ?y ?y ?y ?y ?y ?y ?5g ?5g ?y ?y ?y ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?5g ?y ?y ?y ?5g ?5g ?i[ ?i[ ?y ?y ?y ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?y ?y ?i[ ?i[ ?i[ ?y ?y ?y ?y ?y ?y ?y ?y ?i[ ?i[ ?i[ ?y ?y ?MN>MN>{>{>{>MN>MN>MN>MN>MN>MN>MN>{>{>MN>MN>MN>{>{>{>{>{>{>{>{>MN>MN>MN>{>{>IĜB>IĜB>MN>MN>MN>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>MN>MN>IĜB>IĜB>IĜB>MN>MN>MN>MN>MN>MN>MN>MN>IĜB>IĜB>IĜB>MN>MN>РB ?РB ?i[ ?i[ ?i[ ?РB ?РB ?РB ?РB ?РB ?РB ?РB ?i[ ?i[ ?РB ?РB ?РB ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?i[ ?РB ?РB ?РB ?i[ ?i[ ?>>IĜB>IĜB>IĜB>>>>>>>>IĜB>IĜB>>>>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>IĜB>>>>IĜB>IĜB>P0?P0?РB ?РB ?РB ?P0?P0?P0?P0?P0?P0?P0?РB ?РB ?P0?P0?P0?РB ?РB ?РB ?РB ?РB ?РB ?РB ?РB ?P0?P0?P0?РB ?РB ?ʝ>ʝ>>>>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>>>ʝ>ʝ>ʝ>>>>>>>>>ʝ>ʝ>ʝ>>>>>ʝ>ʝ>ʝ>>>>>>>>ʝ>ʝ>>>>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>ʝ>>>>ʝ>ʝ>e/?e/?P0?P0?P0?e/?e/?e/?e/?e/?e/?e/?P0?P0?e/?e/?e/?P0?P0?P0?P0?P0?P0?P0?P0?e/?e/?e/?P0?P0?Dž I>Dž I>>>>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>>>Dž I>Dž I>Dž I>>>>>>>>>Dž I>Dž I>Dž I>>>Ղ?Ղ?e/?e/?e/?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?e/?e/?Ղ?Ղ?Ղ?e/?e/?e/?e/?e/?e/?e/?e/?Ղ?Ղ?Ղ?e/?e/?IWG?IWG?Ղ?Ղ?Ղ?IWG?IWG?IWG?IWG?IWG?IWG?IWG?Ղ?Ղ?IWG?IWG?IWG?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?Ղ?IWG?IWG?IWG?Ղ?Ղ?/*>/*>Dž I>Dž I>Dž I>/*>/*>/*>/*>/*>/*>/*>Dž I>Dž I>/*>/*>/*>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>Dž I>/*>/*>/*>Dž I>Dž I>BA/?BA/?IWG?IWG?IWG?BA/?BA/?BA/?BA/?BA/?BA/?BA/?IWG?IWG?BA/?BA/?BA/?IWG?IWG?IWG?IWG?IWG?IWG?IWG?IWG?BA/?BA/?BA/?IWG?IWG?g>g>/*>/*>/*>g>g>g>g>g>g>g>/*>/*>g>g>g>/*>/*>/*>/*>/*>/*>/*>/*>g>g>g>/*>/*>??BA/?BA/?BA/????????BA/?BA/????BA/?BA/?BA/?BA/?BA/?BA/?BA/?BA/????BA/?BA/? > >g>g>g> > > > > > > >g>g> > > >g>g>g>g>g>g>g>g> > > >g>g>wp7>wp7>???wp7>wp7>wp7>wp7>wp7>wp7>wp7>??wp7>wp7>wp7>????????wp7>wp7>wp7>?? > > 3.> 3.> 3.> > > > > > > > 3.> 3.> > > > 3.> 3.> 3.> 3.> 3.> 3.> 3.> 3.> > > > 3.> 3.>^3ϐ>^3ϐ> > > >^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> > >^3ϐ>^3ϐ>^3ϐ> > > > > > > > >^3ϐ>^3ϐ>^3ϐ> > >o/ D>o/ D>wp7>wp7>wp7>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>wp7>wp7>o/ D>o/ D>o/ D>wp7>wp7>wp7>wp7>wp7>wp7>wp7>wp7>o/ D>o/ D>o/ D>wp7>wp7> 3.> 3.>o/ D>o/ D>o/ D> 3.> 3.> 3.> 3.> 3.> 3.> 3.>o/ D>o/ D> 3.> 3.> 3.>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D>o/ D> 3.> 3.> 3.>o/ D>o/ D> 3.> 3.>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.> 3.> 3.> 3.> 3.>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ>^3ϐ> 3.> 3.> 3.>^3ϐ>^3ϐ>`Κ>bGpB>u5q>̾`Κ>b5q>̾n>jپ^>Ř>q`Κ>bNJ?>`Κ>bn>jپNJ?>[< ׳?&3< ?&3< ?3< ?[< ׳?[< ׳?&T< ׳?[)T< ?[)T< ?8(#= ׳?[)#= ?[)T< ?[)T< ?[)T< ׳?[)#= ׳?[)T ׳?[)C# ׳?[)W# ?[)W# ?[))T ?[)T ׳?[)?̼ ׳?g̼ ?g̼ ?&g̼ ?&?̼ ׳?&?̼ ׳?#= ׳?[)T< ׳?[)T< ׳?8([< ׳?3< ?g̼ ?g̼ ??̼ ׳?[< ׳?C# ׳?[)Z% ׳?= ׳?T >= ׳?T ]:= ׳?T ]:= ?T *= ?T [= ?&[= ׳?&[= ׳?&>= ׳?T *= ?T v\ ?&ľ ?T  ׳?T  ׳?T b\ ׳?&v\ ?&ľ ?T ^: ?T m^: ׳?T m^: ׳?T  ׳?T ľ ?T B= ?]:= ?T ]:= ׳?T ]:= ׳?T #B= ׳?B= ?B= ?B= ?#B= ׳?#B= ׳?#B= ׳?B= ?^: ?T B ?B ׳?B ׳?m^: ׳?T ^: ?T )T ?8(T< ?8(T< ׳?8(T< ׳?8(T ׳?8()T ?8(Z% ׳?= ׳?T >= ׳?T #B= ׳?#B= ׳?[< ׳?&[< ׳?$= ׳?~$= ׳?~[= ׳?&[< ׳?&B ׳?B ׳? ׳?T  ׳?T m^: ׳?T B ׳?Z% ׳?= ׳?T [= ׳?&$= ׳?~$= ׳?~#B= ׳?>= ׳?T b\ ׳?&Z% ׳? ?Z !8> ?.8?Z !8> ?.8?.*?.8?Z !8> ?.8?Z !8> ?Z !8> ?.m> ?zm?z*?.m> ?z*?.8> ?.m> ?zm?z*?.m> ?z*?.*> ?.e_> ?ñe_?ñtj?ze_> ?ñtj?ztj> ?z)Z;?ztj?ze_> ?ñtj?ztj> ?ze_> ?ñm?zm> ?ztj> ?ztj> ?ztj?zm?z8?Z !m?ztj?ztj?zشT?k!8?Z !ִT> ?k!tj> ?zm> ?zm> ?z8> ?Z !ִT> ?k!شT?k!ִT> ?k!8> ?Z !8> ?Z !8?Z !شT?k!m?z8?Z !8> ?Z !8> ?Z !m> ?zm?ztj> ?ztj?zشT?k!شT?k!ִT> ?k!tj> ?z'Z;> ?zشT?k!tj?ztj?ztj> ?z'Z;> ?z)Z;?ztj?ztj> ?ztj> ?z'Z;> ?z)Z;?zDATAo mr=DATA m=..edge_verts ?Xv=2sharp_edger=v=DATAx ?uo()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq         ( ) 0 2 0 1 @ A H J H I X Y ` b ` a p q x z x y      " ! 0 1 8 : 8 9 H I P R P Q ` a h j h i x y      ! ( * ( ) 8 9 @ B @ A P Q X Z X Y h i p r p q         ( ) 0 2 0 1 @ A H J H I X Y ` b ` a p q x z x y      " ! 0 1 8 : 8 9 H I P R P Q ` a h j h i x y   !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy     ! ( * ( ) 8 9 @ B @ A P Q X Z X Y h i p r p q !!!!!!!!!!(!)!0!2!0!1!@!A!H!J!H!I!X!Y!`!b!`!a!p!q!x!z!x!y!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""" "" """ """ "!"0"1"8":"8"9"H"I"P"R"P"Q"`"a"h"j"h"i"x"y"""""""""""""""""""""""""""""""""""# ##### #!#(#*#(#)#8#9#@#B#@#A#P#Q#X#Z#X#Y#h#i#p#r#p#q#################################$$$$$$$$$$($)$0$2$0$1$@$A$H$J$H$I$X$Y$`$b$`$a$p$q$x$z$x$y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %% %%% %"% %!%0%1%8%:%8%9%H%I%P%R%P%Q%`%a%h%j%h%i%x%y%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%& &&&&& &!&(&*&(&)&8&9&@&B&@&A&P&Q&X&Z&X&Y&h&i&p&r&p&q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''(')'0'2'0'1'@'A'H'J'H'I'X'Y'`'b'`'a'p'q'x'z'x'y'''''''''''''''''''''''''''''''((( (( ((( ("( (!(0(1(8(:(8(9(H(I(P(R(P(Q(`(a(h(j(h(i(x(y((((((((((((((((((((((((((((((((((() ))))) )!)()*)()))8)9)@)B)@)A)P)Q)X)Z)X)Y)h)i)p)r)p)q)))))))))))))))))))))))))))))))))**********(*)*0*2*0*1*@*A*H*J*H*I*X*Y*`*b*`*a*p*q*x*z*x*y*******************************+++ ++ +++ +"+ +!+0+1+8+:+8+9+H+I+P+R+P+Q+`+a+h+j+h+i+x+y+++++++++++++++++++++++++++++++++++, ,,,,, ,!,(,*,(,),8,9,@,B,@,A,P,Q,X,Z,X,Y,h,i,p,r,p,q,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------(-)-0-2-0-1-@-A-H-J-H-I-X-Y-`-b-`-a-p-q-x-z-x-y-------------------------------... .. ... .". .!.0.1.8.:.8.9.H.I.P.R.P.Q.`.a.h.j.h.i.x.y.................................../ ///// /!/(/*/(/)/8/9/@/B/@/A/P/Q/X/Z/X/Y/h/i/p/r/p/q/////////////////////////////////0000000000(0)000200010@0A0H0J0H0I0X0Y0`0b0`0a0p0q0x0z0x0y0000000000000000000000000000000111 11 111 1"1 1!1011181:18191H1I1P1R1P1Q1`1a1h1j1h1i1x1y111111111111111111111111111111111112 22222 2!2(2*2(2)28292@2B2@2A2P2Q2X2Z2X2Y2h2i2p2r2p2q2222222222222222222222222222222223333333333(3)303230313@3A3H3J3H3I3X3Y3`3b3`3a3p3q3x3z3x3y3333333333333333333333333333333444 44 444 4"4 4!4041484:48494H4I4P4R4P4Q4`4a4h4j4h4i4x4y444444444444444444444444444444444445 55555 5!5(5*5(5)58595@5B5@5A5P5Q5X5Z5X5Y5h5i5p5r5p5q5555555555555555555555555555555556666666666(6)606260616@6A6H6J6H6I6X6Y6`6b6`6a6p6q6x6z6x6y6666666666666666666666666666666777 77 777 7"7 7!7071787:78797H7I7P7R7P7Q7`7a7h7j7h7i7x7y777777777777777777777777777777777778 88888 8!8(8*8(8)88898@8B8@8A8P8Q8X8Z8X8Y8h8i8p8r8p8q8888888888888888888888888888888889999999999(9)909290919@9A9H9J9H9I9X9Y9`9b9`9a9p9q9x9z9x9y9999999999999999999999999999999::: :: ::: :": :!:0:1:8:::8:9:H:I:P:R:P:Q:`:a:h:j:h:i:x:y:::::::::::::::::::::::::::::::::::; ;;;;; ;!;(;*;(;);8;9;@;B;@;A;P;Q;X;Z;X;Y;h;i;p;r;p;q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<(<)<0<2<0<1<@<A<H<J<H<I<X<Y<`<b<`<a<p<q<x<z<x<y<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== == === ="= =!=0=1=8=:=8=9=H=I=P=R=P=Q=`=a=h=j=h=i=x=y===================================> >>>>> >!>(>*>(>)>8>9>@>B>@>A>P>Q>X>Z>X>Y>h>i>p>r>p>q>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????(?)?0?2?0?1?@?A?H?J?H?I?X?Y?`?b?`?a?p?q?x?z?x?y???????????????????????????????@@@ @@ @@@ @"@ @!@0@1@8@:@8@9@H@I@P@R@P@Q@`@a@h@j@h@i@x@y@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A AAAAA A!A(A*A(A)A8A9A@ABA@AAAPAQAXAZAXAYAhAiApArApAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBB(B)B0B2B0B1B@BABHBJBHBIBXBYB`BbB`BaBpBqBxBzBxByBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CC CCC C"C C!C0C1C8C:C8C9CHCICPCRCPCQC`CaChCjChCiCxCyCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD DDDDD D!D(D*D(D)D8D9D@DBD@DADPDQDXDZDXDYDhDiDpDrDpDqDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEE(E)E0E2E0E1E@EAEHEJEHEIEXEYE`EbE`EaEpEqExEzExEyEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFF FF FFF F"F F!F0F1F8F:F8F9FHFIFPFRFPFQF`FaFhFjFhFiFxFyFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFG GGGGG G!G(G*G(G)G8G9G@GBG@GAGPGQGXGZGXGYGhGiGpGrGpGqGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHH(H)H0H2H0H1H@HAHHHJHHHIHXHYH`HbH`HaHpHqHxHzHxHyHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIII II III I"I I!I0I1I8I:I8I9IHIIIPIRIPIQI`IaIhIjIhIiIxIyIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ JJJJJ J!J(J*J(J)J8J9J@JBJ@JAJPJQJXJZJXJYJhJiJpJrJpJqJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKK(K)K0K2K0K1K@KAKHKJKHKIKXKYK`KbK`KaKpKqKxKzKxKyKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLL LL LLL L"L L!L0L1L8L:L8L9LHLILPLRLPLQL`LaLhLjLhLiLxLyLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM MMMMM M!M(M*M(M)M8M9M@MBM@MAMPMQMXMZMXMYMhMiMpMrMpMqMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNN(N)N0N2N0N1N@NANHNJNHNINXNYN`NbN`NaNpNqNxNzNxNyNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOO OO OOO O"O O!O0O1O8O:O8O9OHOIOPOROPOQO`OaOhOjOhOiOxOyOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP PPPPP P!P(P*P(P)P8P9P@PBP@PAPPPQPXPZPXPYPhPiPpPrPpPqPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQ(Q)Q0Q2Q0Q1Q@QAQHQJQHQIQXQYQ`QbQ`QaQpQqQxQzQxQyQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRR RR RRR R"R R!R0R1R8R:R8R9RHRIRPRRRPRQR`RaRhRjRhRiRxRyRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS SSSSS S!S(S*S(S)S8S9S@SBS@SASPSQSXSZSXSYShSiSpSrSpSqSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTT(T)T0T2T0T1T@TATHTJTHTITXTYT`TbT`TaTpTqTxTzTxTyTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUU UU UUU U"U U!U0U1U8U:U8U9UHUIUPURUPUQU`UaUhUjUhUiUxUyUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV VVVVV V!V(V*V(V)V8V9V@VBV@VAVPVQVXVZVXVYVhViVpVrVpVqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWW(W)W0W2W0W1W@WAWHWJWHWIWXWYW`WbW`WaWpWqWxWzWxWyWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXX XX XXX X"X X!X0X1X8X:X8X9XHXIXPXRXPXQX`XaXhXjXhXiXxXyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY YYYYY Y!Y(Y*Y(Y)Y8Y9Y@YBY@YAYPYQYXYZYXYYYhYiYpYrYpYqYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZ(Z)Z0Z2Z0Z1Z@ZAZHZJZHZIZXZYZ`ZbZ`ZaZpZqZxZzZxZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[ [[ [[[ ["[ [![0[1[8[:[8[9[H[I[P[R[P[Q[`[a[h[j[h[i[x[y[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\ \\\\\ \!\(\*\(\)\8\9\@\B\@\A\P\Q\X\Z\X\Y\h\i\p\r\p\q\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]](])]0]2]0]1]@]A]H]J]H]I]X]Y]`]b]`]a]p]q]x]z]x]y]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^ ^^^ ^"^ ^!^0^1^8^:^8^9^H^I^P^R^P^Q^`^a^h^j^h^i^x^y^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_ _____ _!_(_*_(_)_8_9_@_B_@_A_P_Q_X_Z_X_Y_h_i_p_r_p_q_________________________________``````````(`)`0`2`0`1`@`A`H`J`H`I`X`Y```b```a`p`q`x`z`x`y```````````````````````````````aaa aa aaa a"a a!a0a1a8a:a8a9aHaIaPaRaPaQa`aaahajahaiaxayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab bbbbb b!b(b*b(b)b8b9b@bBb@bAbPbQbXbZbXbYbhbibpbrbpbqbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccc(c)c0c2c0c1c@cAcHcJcHcIcXcYc`cbc`cacpcqcxczcxcycccccccccccccccccccccccccccccccddd dd ddd d"d d!d0d1d8d:d8d9dHdIdPdRdPdQd`dadhdjdhdidxdyddddddddddddddddddddddddddddddddddde eeeee e!e(e*e(e)e8e9e@eBe@eAePeQeXeZeXeYeheieperepeqeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffff(f)f0f2f0f1f@fAfHfJfHfIfXfYf`fbf`fafpfqfxfzfxfyfffffffffffffffffffffffffffffffggg gg ggg g"g g!g0g1g8g:g8g9gHgIgPgRgPgQg`gaghgjghgigxgygggggggggggggggggggggggggggggggggggh hhhhh h!h(h*h(h)h8h9h@hBh@hAhPhQhXhZhXhYhhhihphrhphqhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiii(i)i0i2i0i1i@iAiHiJiHiIiXiYi`ibi`iaipiqixizixiyiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjj jj jjj j"j j!j0j1j8j:j8j9jHjIjPjRjPjQj`jajhjjjhjijxjyjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjk kkkkk k!k(k*k(k)k8k9k@kBk@kAkPkQkXkZkXkYkhkikpkrkpkqkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllll(l)l0l2l0l1l@lAlHlJlHlIlXlYl`lbl`lalplqlxlzlxlylllllllllllllllllllllllllllllllmmm mm mmm m"m m!m0m1m8m:m8m9mHmImPmRmPmQm`mamhmjmhmimxmymmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmn nnnnn n!n(n*n(n)n8n9n@nBn@nAnPnQnXnZnXnYnhninpnrnpnqnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooo !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    ! # ! " 1 2 9 ; 9 : I J Q S Q R a b i k i j y z     ! " ) + ) * 9 : A C A B Q R Y [ Y Z i j q s q r           ) * 1 3 1 2 A B I K I J Y Z a c a b q r y { y z     ! # ! " 1 2 9 ; 9 : I J Q S Q R a b i k i j y z     ! " ) + ) * 9 : A C A B Q R Y [ Y Z i j q s q r )*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr          ) * 1 3 1 2 A B I K I J Y Z a c a b q r y { y z !! ! ! ! !!!!!#!!!"!1!2!9!;!9!:!I!J!Q!S!Q!R!a!b!i!k!i!j!y!z!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " """""!""")"+")"*"9":"A"C"A"B"Q"R"Y"["Y"Z"i"j"q"s"q"r"""""""""""""""""""""""""""""""""##########)#*#1#3#1#2#A#B#I#K#I#J#Y#Z#a#c#a#b#q#r#y#{#y#z###############################$$ $ $ $ $$$!$#$!$"$1$2$9$;$9$:$I$J$Q$S$Q$R$a$b$i$k$i$j$y$z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ % %%%%%!%"%)%+%)%*%9%:%A%C%A%B%Q%R%Y%[%Y%Z%i%j%q%s%q%r%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&)&*&1&3&1&2&A&B&I&K&I&J&Y&Z&a&c&a&b&q&r&y&{&y&z&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' ' ' '''!'#'!'"'1'2'9';'9':'I'J'Q'S'Q'R'a'b'i'k'i'j'y'z''''''''''''''''''''''''''''''''''' ( (((((!("()(+()(*(9(:(A(C(A(B(Q(R(Y([(Y(Z(i(j(q(s(q(r((((((((((((((((((((((((((((((((())))))))))))*)1)3)1)2)A)B)I)K)I)J)Y)Z)a)c)a)b)q)r)y){)y)z)))))))))))))))))))))))))))))))** * * * ***!*#*!*"*1*2*9*;*9*:*I*J*Q*S*Q*R*a*b*i*k*i*j*y*z*********************************** + +++++!+"+)+++)+*+9+:+A+C+A+B+Q+R+Y+[+Y+Z+i+j+q+s+q+r+++++++++++++++++++++++++++++++++,,,,,,,,,,),*,1,3,1,2,A,B,I,K,I,J,Y,Z,a,c,a,b,q,r,y,{,y,z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- - - - ---!-#-!-"-1-2-9-;-9-:-I-J-Q-S-Q-R-a-b-i-k-i-j-y-z----------------------------------- . .....!.".).+.).*.9.:.A.C.A.B.Q.R.Y.[.Y.Z.i.j.q.s.q.r.................................//////////)/*/1/3/1/2/A/B/I/K/I/J/Y/Z/a/c/a/b/q/r/y/{/y/z///////////////////////////////00 0 0 0 000!0#0!0"0102090;090:0I0J0Q0S0Q0R0a0b0i0k0i0j0y0z00000000000000000000000000000000000 1 11111!1"1)1+1)1*191:1A1C1A1B1Q1R1Y1[1Y1Z1i1j1q1s1q1r1111111111111111111111111111111112222222222)2*212321222A2B2I2K2I2J2Y2Z2a2c2a2b2q2r2y2{2y2z222222222222222222222222222222233 3 3 3 333!3#3!3"3132393;393:3I3J3Q3S3Q3R3a3b3i3k3i3j3y3z33333333333333333333333333333333333 4 44444!4"4)4+4)4*494:4A4C4A4B4Q4R4Y4[4Y4Z4i4j4q4s4q4r4444444444444444444444444444444445555555555)5*515351525A5B5I5K5I5J5Y5Z5a5c5a5b5q5r5y5{5y5z555555555555555555555555555555566 6 6 6 666!6#6!6"6162696;696:6I6J6Q6S6Q6R6a6b6i6k6i6j6y6z66666666666666666666666666666666666 7 77777!7"7)7+7)7*797:7A7C7A7B7Q7R7Y7[7Y7Z7i7j7q7s7q7r7777777777777777777777777777777778888888888)8*818381828A8B8I8K8I8J8Y8Z8a8c8a8b8q8r8y8{8y8z888888888888888888888888888888899 9 9 9 999!9#9!9"9192999;999:9I9J9Q9S9Q9R9a9b9i9k9i9j9y9z99999999999999999999999999999999999 : :::::!:":):+:):*:9:::A:C:A:B:Q:R:Y:[:Y:Z:i:j:q:s:q:r:::::::::::::::::::::::::::::::::;;;;;;;;;;);*;1;3;1;2;A;B;I;K;I;J;Y;Z;a;c;a;b;q;r;y;{;y;z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< < < < <<<!<#<!<"<1<2<9<;<9<:<I<J<Q<S<Q<R<a<b<i<k<i<j<y<z<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< = =====!="=)=+=)=*=9=:=A=C=A=B=Q=R=Y=[=Y=Z=i=j=q=s=q=r=================================>>>>>>>>>>)>*>1>3>1>2>A>B>I>K>I>J>Y>Z>a>c>a>b>q>r>y>{>y>z>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ? ? ? ???!?#?!?"?1?2?9?;?9?:?I?J?Q?S?Q?R?a?b?i?k?i?j?y?z??????????????????????????????????? @ @@@@@!@"@)@+@)@*@9@:@A@C@A@B@Q@R@Y@[@Y@Z@i@j@q@s@q@r@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAA)A*A1A3A1A2AAABAIAKAIAJAYAZAaAcAaAbAqArAyA{AyAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB B B B BBB!B#B!B"B1B2B9B;B9B:BIBJBQBSBQBRBaBbBiBkBiBjByBzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C CCCCC!C"C)C+C)C*C9C:CACCCACBCQCRCYC[CYCZCiCjCqCsCqCrCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDD)D*D1D3D1D2DADBDIDKDIDJDYDZDaDcDaDbDqDrDyD{DyDzDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEE E E E EEE!E#E!E"E1E2E9E;E9E:EIEJEQESEQEREaEbEiEkEiEjEyEzEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE F FFFFF!F"F)F+F)F*F9F:FAFCFAFBFQFRFYF[FYFZFiFjFqFsFqFrFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGG)G*G1G3G1G2GAGBGIGKGIGJGYGZGaGcGaGbGqGrGyG{GyGzGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHH H H H HHH!H#H!H"H1H2H9H;H9H:HIHJHQHSHQHRHaHbHiHkHiHjHyHzHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH I IIIII!I"I)I+I)I*I9I:IAICIAIBIQIRIYI[IYIZIiIjIqIsIqIrIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJ)J*J1J3J1J2JAJBJIJKJIJJJYJZJaJcJaJbJqJrJyJ{JyJzJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKK K K K KKK!K#K!K"K1K2K9K;K9K:KIKJKQKSKQKRKaKbKiKkKiKjKyKzKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK L LLLLL!L"L)L+L)L*L9L:LALCLALBLQLRLYL[LYLZLiLjLqLsLqLrLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMM)M*M1M3M1M2MAMBMIMKMIMJMYMZMaMcMaMbMqMrMyM{MyMzMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN N N N NNN!N#N!N"N1N2N9N;N9N:NINJNQNSNQNRNaNbNiNkNiNjNyNzNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN O OOOOO!O"O)O+O)O*O9O:OAOCOAOBOQOROYO[OYOZOiOjOqOsOqOrOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPP)P*P1P3P1P2PAPBPIPKPIPJPYPZPaPcPaPbPqPrPyP{PyPzPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQ Q Q Q QQQ!Q#Q!Q"Q1Q2Q9Q;Q9Q:QIQJQQQSQQQRQaQbQiQkQiQjQyQzQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ R RRRRR!R"R)R+R)R*R9R:RARCRARBRQRRRYR[RYRZRiRjRqRsRqRrRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSS)S*S1S3S1S2SASBSISKSISJSYSZSaScSaSbSqSrSyS{SySzSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTT T T T TTT!T#T!T"T1T2T9T;T9T:TITJTQTSTQTRTaTbTiTkTiTjTyTzTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT U UUUUU!U"U)U+U)U*U9U:UAUCUAUBUQURUYU[UYUZUiUjUqUsUqUrUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVV)V*V1V3V1V2VAVBVIVKVIVJVYVZVaVcVaVbVqVrVyV{VyVzVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWW W W W WWW!W#W!W"W1W2W9W;W9W:WIWJWQWSWQWRWaWbWiWkWiWjWyWzWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X XXXXX!X"X)X+X)X*X9X:XAXCXAXBXQXRXYX[XYXZXiXjXqXsXqXrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYY)Y*Y1Y3Y1Y2YAYBYIYKYIYJYYYZYaYcYaYbYqYrYyY{YyYzYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZ Z Z Z ZZZ!Z#Z!Z"Z1Z2Z9Z;Z9Z:ZIZJZQZSZQZRZaZbZiZkZiZjZyZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ [ [[[[[!["[)[+[)[*[9[:[A[C[A[B[Q[R[Y[[[Y[Z[i[j[q[s[q[r[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\)\*\1\3\1\2\A\B\I\K\I\J\Y\Z\a\c\a\b\q\r\y\{\y\z\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]] ] ] ] ]]]!]#]!]"]1]2]9];]9]:]I]J]Q]S]Q]R]a]b]i]k]i]j]y]z]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ^ ^^^^^!^"^)^+^)^*^9^:^A^C^A^B^Q^R^Y^[^Y^Z^i^j^q^s^q^r^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__________)_*_1_3_1_2_A_B_I_K_I_J_Y_Z_a_c_a_b_q_r_y_{_y_z_______________________________`` ` ` ` ```!`#`!`"`1`2`9`;`9`:`I`J`Q`S`Q`R`a`b`i`k`i`j`y`z``````````````````````````````````` a aaaaa!a"a)a+a)a*a9a:aAaCaAaBaQaRaYa[aYaZaiajaqasaqaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb)b*b1b3b1b2bAbBbIbKbIbJbYbZbabcbabbbqbrbyb{bybzbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcc c c c ccc!c#c!c"c1c2c9c;c9c:cIcJcQcScQcRcacbcickcicjcyczccccccccccccccccccccccccccccccccccc d ddddd!d"d)d+d)d*d9d:dAdCdAdBdQdRdYd[dYdZdidjdqdsdqdrdddddddddddddddddddddddddddddddddeeeeeeeeee)e*e1e3e1e2eAeBeIeKeIeJeYeZeaeceaebeqereye{eyezeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeff f f f fff!f#f!f"f1f2f9f;f9f:fIfJfQfSfQfRfafbfifkfifjfyfzfffffffffffffffffffffffffffffffffff g ggggg!g"g)g+g)g*g9g:gAgCgAgBgQgRgYg[gYgZgigjgqgsgqgrggggggggggggggggggggggggggggggggghhhhhhhhhh)h*h1h3h1h2hAhBhIhKhIhJhYhZhahchahbhqhrhyh{hyhzhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhii i i i iii!i#i!i"i1i2i9i;i9i:iIiJiQiSiQiRiaibiiikiiijiyiziiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii j jjjjj!j"j)j+j)j*j9j:jAjCjAjBjQjRjYj[jYjZjijjjqjsjqjrjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkk)k*k1k3k1k2kAkBkIkKkIkJkYkZkakckakbkqkrkyk{kykzkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkll l l l lll!l#l!l"l1l2l9l;l9l:lIlJlQlSlQlRlalblilkliljlylzlllllllllllllllllllllllllllllllllll m mmmmm!m"m)m+m)m*m9m:mAmCmAmBmQmRmYm[mYmZmimjmqmsmqmrmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn)n*n1n3n1n2nAnBnInKnInJnYnZnancnanbnqnrnyn{nynznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoo "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{     " # * , * + : ; B D B C R S Z \ Z [ j k r t r s           * + 2 4 2 3 B C J L J K Z [ b d b c r s z | z {     " $ " # 2 3 : < : ; J K R T R S b c j l j k z {     " # * , * + : ; B D B C R S Z \ Z [ j k r t r s           * + 2 4 2 3 B C J L J K Z [ b d b c r s z | z {     "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    " $ " # 2 3 : < : ; J K R T R S b c j l j k z { ! !!!!!"!#!*!,!*!+!:!;!B!D!B!C!R!S!Z!\!Z![!j!k!r!t!r!s!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""*"+"2"4"2"3"B"C"J"L"J"K"Z"["b"d"b"c"r"s"z"|"z"{"""""""""""""""""""""""""""""""## # # # ###"#$#"###2#3#:#<#:#;#J#K#R#T#R#S#b#c#j#l#j#k#z#{################################### $ $$$$$"$#$*$,$*$+$:$;$B$D$B$C$R$S$Z$\$Z$[$j$k$r$t$r$s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%*%+%2%4%2%3%B%C%J%L%J%K%Z%[%b%d%b%c%r%s%z%|%z%{%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & & & &&&"&$&"&#&2&3&:&<&:&;&J&K&R&T&R&S&b&c&j&l&j&k&z&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' '''''"'#'*','*'+':';'B'D'B'C'R'S'Z'\'Z'['j'k'r't'r's'''''''''''''''''''''''''''''''''((((((((((*(+(2(4(2(3(B(C(J(L(J(K(Z([(b(d(b(c(r(s(z(|(z({((((((((((((((((((((((((((((((()) ) ) ) )))")$)")#)2)3):)<):);)J)K)R)T)R)S)b)c)j)l)j)k)z){))))))))))))))))))))))))))))))))))) * *****"*#***,***+*:*;*B*D*B*C*R*S*Z*\*Z*[*j*k*r*t*r*s*********************************++++++++++*+++2+4+2+3+B+C+J+L+J+K+Z+[+b+d+b+c+r+s+z+|+z+{+++++++++++++++++++++++++++++++,, , , , ,,,",$,",#,2,3,:,<,:,;,J,K,R,T,R,S,b,c,j,l,j,k,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - -----"-#-*-,-*-+-:-;-B-D-B-C-R-S-Z-\-Z-[-j-k-r-t-r-s---------------------------------..........*.+.2.4.2.3.B.C.J.L.J.K.Z.[.b.d.b.c.r.s.z.|.z.{...............................// / / / ///"/$/"/#/2/3/:/> > > > >>>">$>">#>2>3>:><>:>;>J>K>R>T>R>S>b>c>j>l>j>k>z>{>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ? ?????"?#?*?,?*?+?:?;?B?D?B?C?R?S?Z?\?Z?[?j?k?r?t?r?s?????????????????????????????????@@@@@@@@@@*@+@2@4@2@3@B@C@J@L@J@K@Z@[@b@d@b@c@r@s@z@|@z@{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA A A A AAA"A$A"A#A2A3A:A >>>>>#>$>+>->+>,>;><>C>E>C>D>S>T>[>]>[>\>k>l>s>u>s>t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????+?,?3?5?3?4?C?D?K?M?K?L?[?\?c?e?c?d?s?t?{?}?{?|???????????????????????????????@@ @ @ @ @@@#@%@#@$@3@4@;@=@;@<@K@L@S@U@S@T@c@d@k@m@k@l@{@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ A AAAAA#A$A+A-A+A,A;A<=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}     $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u           , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | }      $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u ,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu          , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | } !! !! ! !!!$!&!$!%!4!5!!$<$=$L$M$T$V$T$U$d$e$l$n$l$m$|$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ % %%%%%$%%%,%.%,%-%<%=%D%F%D%E%T%U%\%^%\%]%l%m%t%v%t%u%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&,&-&4&6&4&5&D&E&L&N&L&M&\&]&d&f&d&e&t&u&|&~&|&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' '' ' '''$'&'$'%'4'5'<'>'<'='L'M'T'V'T'U'd'e'l'n'l'm'|'}''''''''''''''''''''''''''''''''''' ( ((((($(%(,(.(,(-(<(=(D(F(D(E(T(U(\(^(\(](l(m(t(v(t(u((((((((((((((((((((((((((((((((()))))))))),)-)4)6)4)5)D)E)L)N)L)M)\)])d)f)d)e)t)u)|)~)|)})))))))))))))))))))))))))))))))** ** * ***$*&*$*%*4*5*<*>*<*=*L*M*T*V*T*U*d*e*l*n*l*m*|*}*********************************** + +++++$+%+,+.+,+-+<+=+D+F+D+E+T+U+\+^+\+]+l+m+t+v+t+u+++++++++++++++++++++++++++++++++,,,,,,,,,,,,-,4,6,4,5,D,E,L,N,L,M,\,],d,f,d,e,t,u,|,~,|,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- -- - ---$-&-$-%-4-5-<->-<-=-L-M-T-V-T-U-d-e-l-n-l-m-|-}----------------------------------- . .....$.%.,...,.-.<.=.D.F.D.E.T.U.\.^.\.].l.m.t.v.t.u.................................//////////,/-/4/6/4/5/D/E/L/N/L/M/\/]/d/f/d/e/t/u/|/~/|/}///////////////////////////////00 00 0 000$0&0$0%04050<0>0<0=0L0M0T0V0T0U0d0e0l0n0l0m0|0}00000000000000000000000000000000000 1 11111$1%1,1.1,1-1<1=1D1F1D1E1T1U1\1^1\1]1l1m1t1v1t1u1111111111111111111111111111111112222222222,2-242624252D2E2L2N2L2M2\2]2d2f2d2e2t2u2|2~2|2}222222222222222222222222222222233 33 3 333$3&3$3%34353<3>3<3=3L3M3T3V3T3U3d3e3l3n3l3m3|3}33333333333333333333333333333333333 4 44444$4%4,4.4,4-4<4=4D4F4D4E4T4U4\4^4\4]4l4m4t4v4t4u4444444444444444444444444444444445555555555,5-545654555D5E5L5N5L5M5\5]5d5f5d5e5t5u5|5~5|5}555555555555555555555555555555566 66 6 666$6&6$6%64656<6>6<6=6L6M6T6V6T6U6d6e6l6n6l6m6|6}66666666666666666666666666666666666 7 77777$7%7,7.7,7-7<7=7D7F7D7E7T7U7\7^7\7]7l7m7t7v7t7u7777777777777777777777777777777778888888888,8-848684858D8E8L8N8L8M8\8]8d8f8d8e8t8u8|8~8|8}888888888888888888888888888888899 99 9 999$9&9$9%94959<9>9<9=9L9M9T9V9T9U9d9e9l9n9l9m9|9}99999999999999999999999999999999999 : :::::$:%:,:.:,:-:<:=:D:F:D:E:T:U:\:^:\:]:l:m:t:v:t:u:::::::::::::::::::::::::::::::::;;;;;;;;;;,;-;4;6;4;5;D;E;L;N;L;M;\;];d;f;d;e;t;u;|;~;|;};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< << < <<<$<&<$<%<4<5<<<><<<=<L<M<T<V<T<U<d<e<l<n<l<m<|<}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< = =====$=%=,=.=,=-=<===D=F=D=E=T=U=\=^=\=]=l=m=t=v=t=u=================================>>>>>>>>>>,>->4>6>4>5>D>E>L>N>L>M>\>]>d>f>d>e>t>u>|>~>|>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ?? ? ???$?&?$?%?4?5??BEHKNQTWZ]<]=]L]M]T]V]T]U]d]e]l]n]l]m]|]}]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ^ ^^^^^$^%^,^.^,^-^<^=^D^F^D^E^T^U^\^^^\^]^l^m^t^v^t^u^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__________,_-_4_6_4_5_D_E_L_N_L_M_\_]_d_f_d_e_t_u_|_~_|_}_______________________________`` `` ` ```$`&`$`%`4`5`<`>`<`=`L`M`T`V`T`U`d`e`l`n`l`m`|`}``````````````````````````````````` a aaaaa$a%a,a.a,a-acfilEGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~       % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~   %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~      % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~ !!!!!!%!&!-!/!-!.!=!>!E!G!E!F!U!V!]!_!]!^!m!n!u!w!u!v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""-"."5"7"5"6"E"F"M"O"M"N"]"^"e"g"e"f"u"v"}""}"~"""""""""""""""""""""""""""""""## ## ####%#'#%#&#5#6#=#?#=#>#M#N#U#W#U#V#e#f#m#o#m#n#}#~################################### $$$$$$%$&$-$/$-$.$=$>$E$G$E$F$U$V$]$_$]$^$m$n$u$w$u$v$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%-%.%5%7%5%6%E%F%M%O%M%N%]%^%e%g%e%f%u%v%}%%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& && &&&&%&'&%&&&5&6&=&?&=&>&M&N&U&W&U&V&e&f&m&o&m&n&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ''''''%'&'-'/'-'.'='>'E'G'E'F'U'V']'_']'^'m'n'u'w'u'v'''''''''''''''''''''''''''''''''((((((((((-(.(5(7(5(6(E(F(M(O(M(N(](^(e(g(e(f(u(v(}((}(~((((((((((((((((((((((((((((((()) )) ))))%)')%)&)5)6)=)?)=)>)M)N)U)W)U)V)e)f)m)o)m)n)})~))))))))))))))))))))))))))))))))))) ******%*&*-*/*-*.*=*>*E*G*E*F*U*V*]*_*]*^*m*n*u*w*u*v*********************************++++++++++-+.+5+7+5+6+E+F+M+O+M+N+]+^+e+g+e+f+u+v+}++}+~+++++++++++++++++++++++++++++++,, ,, ,,,,%,',%,&,5,6,=,?,=,>,M,N,U,W,U,V,e,f,m,o,m,n,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ------%-&---/---.-=->-E-G-E-F-U-V-]-_-]-^-m-n-u-w-u-v---------------------------------..........-...5.7.5.6.E.F.M.O.M.N.].^.e.g.e.f.u.v.}..}.~...............................// // ////%/'/%/&/5/6/=/?/=/>/M/N/U/W/U/V/e/f/m/o/m/n/}/~/////////////////////////////////// 000000%0&0-0/0-0.0=0>0E0G0E0F0U0V0]0_0]0^0m0n0u0w0u0v0000000000000000000000000000000001111111111-1.151715161E1F1M1O1M1N1]1^1e1g1e1f1u1v1}11}1~111111111111111111111111111111122 22 2222%2'2%2&25262=2?2=2>2M2N2U2W2U2V2e2f2m2o2m2n2}2~22222222222222222222222222222222222 333333%3&3-3/3-3.3=3>3E3G3E3F3U3V3]3_3]3^3m3n3u3w3u3v3333333333333333333333333333333334444444444-4.454745464E4F4M4O4M4N4]4^4e4g4e4f4u4v4}44}4~444444444444444444444444444444455 55 5555%5'5%5&55565=5?5=5>5M5N5U5W5U5V5e5f5m5o5m5n5}5~55555555555555555555555555555555555 666666%6&6-6/6-6.6=6>6E6G6E6F6U6V6]6_6]6^6m6n6u6w6u6v6666666666666666666666666666666667777777777-7.757775767E7F7M7O7M7N7]7^7e7g7e7f7u7v7}77}7~777777777777777777777777777777788 88 8888%8'8%8&85868=8?8=8>8M8N8U8W8U8V8e8f8m8o8m8n8}8~88888888888888888888888888888888888 999999%9&9-9/9-9.9=9>9E9G9E9F9U9V9]9_9]9^9m9n9u9w9u9v999999999999999999999999999999999::::::::::-:.:5:7:5:6:E:F:M:O:M:N:]:^:e:g:e:f:u:v:}::}:~:::::::::::::::::::::::::::::::;; ;; ;;;;%;';%;&;5;6;=;?;=;>;M;N;U;W;U;V;e;f;m;o;m;n;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <<<<<<%<&<-</<-<.<=<><E<G<E<F<U<V<]<_<]<^<m<n<u<w<u<v<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==========-=.=5=7=5=6=E=F=M=O=M=N=]=^=e=g=e=f=u=v=}==}=~===============================>> >> >>>>%>'>%>&>5>6>=>?>=>>>M>N>U>W>U>V>e>f>m>o>m>n>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ??????%?&?-?/?-?.?=?>?E?G?E?F?U?V?]?_?]?^?m?n?u?w?u?v?????????????????????????????????@@@@@@@@@@-@.@5@7@5@6@E@F@M@O@M@N@]@^@e@g@e@f@u@v@}@@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AA AAAA%A'A%A&A5A6A=A?A=A>AMANAUAWAUAVAeAfAmAoAmAnA}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBB%B&B-B/B-B.B=B>BEBGBEBFBUBVB]B_B]B^BmBnBuBwBuBvBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCC-C.C5C7C5C6CECFCMCOCMCNC]C^CeCgCeCfCuCvC}CC}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDD DD DDDD%D'D%D&D5D6D=D?D=D>DMDNDUDWDUDVDeDfDmDoDmDnD}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EEEEEE%E&E-E/E-E.E=E>EEEGEEEFEUEVE]E_E]E^EmEnEuEwEuEvEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFF-F.F5F7F5F6FEFFFMFOFMFNF]F^FeFgFeFfFuFvF}FF}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGG GG GGGG%G'G%G&G5G6G=G?G=G>GMGNGUGWGUGVGeGfGmGoGmGnG}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG HHHHHH%H&H-H/H-H.H=H>HEHGHEHFHUHVH]H_H]H^HmHnHuHwHuHvHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIII-I.I5I7I5I6IEIFIMIOIMINI]I^IeIgIeIfIuIvI}II}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJ JJ JJJJ%J'J%J&J5J6J=J?J=J>JMJNJUJWJUJVJeJfJmJoJmJnJ}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ KKKKKK%K&K-K/K-K.K=K>KEKGKEKFKUKVK]K_K]K^KmKnKuKwKuKvKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLL-L.L5L7L5L6LELFLMLOLMLNL]L^LeLgLeLfLuLvL}LL}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMM MM MMMM%M'M%M&M5M6M=M?M=M>MMMNMUMWMUMVMeMfMmMoMmMnM}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM NNNNNN%N&N-N/N-N.N=N>NENGNENFNUNVN]N_N]N^NmNnNuNwNuNvNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOO-O.O5O7O5O6OEOFOMOOOMONO]O^OeOgOeOfOuOvO}OO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPP PP PPPP%P'P%P&P5P6P=P?P=P>PMPNPUPWPUPVPePfPmPoPmPnP}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP QQQQQQ%Q&Q-Q/Q-Q.Q=Q>QEQGQEQFQUQVQ]Q_Q]Q^QmQnQuQwQuQvQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRR-R.R5R7R5R6RERFRMRORMRNR]R^ReRgReRfRuRvR}RR}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSS SS SSSS%S'S%S&S5S6S=S?S=S>SMSNSUSWSUSVSeSfSmSoSmSnS}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS TTTTTT%T&T-T/T-T.T=T>TETGTETFTUTVT]T_T]T^TmTnTuTwTuTvTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUU-U.U5U7U5U6UEUFUMUOUMUNU]U^UeUgUeUfUuUvU}UU}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVV VV VVVV%V'V%V&V5V6V=V?V=V>VMVNVUVWVUVVVeVfVmVoVmVnV}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWW%W&W-W/W-W.W=W>WEWGWEWFWUWVW]W_W]W^WmWnWuWwWuWvWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXX-X.X5X7X5X6XEXFXMXOXMXNX]X^XeXgXeXfXuXvX}XX}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYY YY YYYY%Y'Y%Y&Y5Y6Y=Y?Y=Y>YMYNYUYWYUYVYeYfYmYoYmYnY}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ZZZZZZ%Z&Z-Z/Z-Z.Z=Z>ZEZGZEZFZUZVZ]Z_Z]Z^ZmZnZuZwZuZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[-[.[5[7[5[6[E[F[M[O[M[N[][^[e[g[e[f[u[v[}[[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\ \\ \\\\%\'\%\&\5\6\=\?\=\>\M\N\U\W\U\V\e\f\m\o\m\n\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ]]]]]]%]&]-]/]-].]=]>]E]G]E]F]U]V]]]_]]]^]m]n]u]w]u]v]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^-^.^5^7^5^6^E^F^M^O^M^N^]^^^e^g^e^f^u^v^}^^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__ __ ____%_'_%_&_5_6_=_?_=_>_M_N_U_W_U_V_e_f_m_o_m_n_}_~___________________________________ ``````%`&`-`/`-`.`=`>`E`G`E`F`U`V`]`_`]`^`m`n`u`w`u`v`````````````````````````````````aaaaaaaaaa-a.a5a7a5a6aEaFaMaOaMaNa]a^aeagaeafauava}aa}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb bb bbbb%b'b%b&b5b6b=b?b=b>bMbNbUbWbUbVbebfbmbobmbnb}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccc%c&c-c/c-c.c=c>cEcGcEcFcUcVc]c_c]c^cmcncucwcucvcccccccccccccccccccccccccccccccccdddddddddd-d.d5d7d5d6dEdFdMdOdMdNd]d^dedgdedfdudvd}dd}d~dddddddddddddddddddddddddddddddee ee eeee%e'e%e&e5e6e=e?e=e>eMeNeUeWeUeVeeefemeoemene}e~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ffffff%f&f-f/f-f.f=f>fEfGfEfFfUfVf]f_f]f^fmfnfufwfufvfffffffffffffffffffffffffffffffffgggggggggg-g.g5g7g5g6gEgFgMgOgMgNg]g^gegggegfgugvg}gg}g~ggggggggggggggggggggggggggggggghh hh hhhh%h'h%h&h5h6h=h?h=h>hMhNhUhWhUhVhehfhmhohmhnh}h~hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh iiiiii%i&i-i/i-i.i=i>iEiGiEiFiUiVi]i_i]i^iminiuiwiuiviiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjj-j.j5j7j5j6jEjFjMjOjMjNj]j^jejgjejfjujvj}jj}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkk kk kkkk%k'k%k&k5k6k=k?k=k>kMkNkUkWkUkVkekfkmkokmknk}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk llllll%l&l-l/l-l.l=l>lElGlElFlUlVl]l_l]l^lmlnlulwlulvlllllllllllllllllllllllllllllllllmmmmmmmmmm-m.m5m7m5m6mEmFmMmOmMmNm]m^memgmemfmumvm}mm}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnn nn nnnn%n'n%n&n5n6n=n?n=n>nMnNnUnWnUnVnenfnmnonmnnn}n~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw         . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~        & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w          . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~   &'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~       & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w !!!!!!! !!!.!/!6!8!6!7!F!G!N!P!N!O!^!_!f!h!f!g!v!w!~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""&"("&"'"6"7">"@">"?"N"O"V"X"V"W"f"g"n"p"n"o"~"""""""""""""""""""""""""""""""""#""######&#'#.#0#.#/#>#?#F#H#F#G#V#W#^#`#^#_#n#o#v#x#v#w#################################$$$$$$$ $$$.$/$6$8$6$7$F$G$N$P$N$O$^$_$f$h$f$g$v$w$~$$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%&%(%&%'%6%7%>%@%>%?%N%O%V%X%V%W%f%g%n%p%n%o%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%&&&&&&&&'&.&0&.&/&>&?&F&H&F&G&V&W&^&`&^&_&n&o&v&x&v&w&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' '''.'/'6'8'6'7'F'G'N'P'N'O'^'_'f'h'f'g'v'w'~''~''''''''''''''''''''''''''''''''((((((((&(((&('(6(7(>(@(>(?(N(O(V(X(V(W(f(g(n(p(n(o(~((((((((((((((((((((((((((((((((()(())))))&)').)0).)/)>)?)F)H)F)G)V)W)^)`)^)_)n)o)v)x)v)w)))))))))))))))))))))))))))))))))******* ***.*/*6*8*6*7*F*G*N*P*N*O*^*_*f*h*f*g*v*w*~**~********************************++++++++&+(+&+'+6+7+>+@+>+?+N+O+V+X+V+W+f+g+n+p+n+o+~+++++++++++++++++++++++++++++++++,++,,,,,,&,',.,0,.,/,>,?,F,H,F,G,V,W,^,`,^,_,n,o,v,x,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- ---.-/-6-8-6-7-F-G-N-P-N-O-^-_-f-h-f-g-v-w-~--~--------------------------------........&.(.&.'.6.7.>.@.>.?.N.O.V.X.V.W.f.g.n.p.n.o.~................................./..//////&/'/./0/.///>/?/F/H/F/G/V/W/^/`/^/_/n/o/v/x/v/w/////////////////////////////////0000000 000.0/060806070F0G0N0P0N0O0^0_0f0h0f0g0v0w0~00~0000000000000000000000000000000011111111&1(1&1'16171>1@1>1?1N1O1V1X1V1W1f1g1n1p1n1o1~111111111111111111111111111111111211222222&2'2.202.2/2>2?2F2H2F2G2V2W2^2`2^2_2n2o2v2x2v2w2222222222222222222222222222222223333333 333.3/363836373F3G3N3P3N3O3^3_3f3h3f3g3v3w3~33~3333333333333333333333333333333344444444&4(4&4'46474>4@4>4?4N4O4V4X4V4W4f4g4n4p4n4o4~444444444444444444444444444444444544555555&5'5.505.5/5>5?5F5H5F5G5V5W5^5`5^5_5n5o5v5x5v5w5555555555555555555555555555555556666666 666.6/666866676F6G6N6P6N6O6^6_6f6h6f6g6v6w6~66~6666666666666666666666666666666677777777&7(7&7'76777>7@7>7?7N7O7V7X7V7W7f7g7n7p7n7o7~777777777777777777777777777777777877888888&8'8.808.8/8>8?8F8H8F8G8V8W8^8`8^8_8n8o8v8x8v8w8888888888888888888888888888888889999999 999.9/969896979F9G9N9P9N9O9^9_9f9h9f9g9v9w9~99~99999999999999999999999999999999::::::::&:(:&:':6:7:>:@:>:?:N:O:V:X:V:W:f:g:n:p:n:o:~:::::::::::::::::::::::::::::::::;::;;;;;;&;';.;0;.;/;>;?;F;H;F;G;V;W;^;`;^;_;n;o;v;x;v;w;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<< <<<.</<6<8<6<7<F<G<N<P<N<O<^<_<f<h<f<g<v<w<~<<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========&=(=&='=6=7=>=@=>=?=N=O=V=X=V=W=f=g=n=p=n=o=~=================================>==>>>>>>&>'>.>0>.>/>>>?>F>H>F>G>V>W>^>`>^>_>n>o>v>x>v>w>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????? ???.?/?6?8?6?7?F?G?N?P?N?O?^?_?f?h?f?g?v?w?~??~????????????????????????????????@@@@@@@@&@(@&@'@6@7@>@@@>@?@N@O@V@X@V@W@f@g@n@p@n@o@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@AAAAAA&A'A.A0A.A/A>A?AFAHAFAGAVAWA^A`A^A_AnAoAvAxAvAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBB BBB.B/B6B8B6B7BFBGBNBPBNBOB^B_BfBhBfBgBvBwB~BB~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCC&C(C&C'C6C7C>C@C>C?CNCOCVCXCVCWCfCgCnCpCnCoC~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDDDDDD&D'D.D0D.D/D>D?DFDHDFDGDVDWD^D`D^D_DnDoDvDxDvDwDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEE EEE.E/E6E8E6E7EFEGENEPENEOE^E_EfEhEfEgEvEwE~EE~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFF&F(F&F'F6F7F>F@F>F?FNFOFVFXFVFWFfFgFnFpFnFoF~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGFFGGGGGG&G'G.G0G.G/G>G?GFGHGFGGGVGWG^G`G^G_GnGoGvGxGvGwGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHH HHH.H/H6H8H6H7HFHGHNHPHNHOH^H_HfHhHfHgHvHwH~HH~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIII&I(I&I'I6I7I>I@I>I?INIOIVIXIVIWIfIgInIpInIoI~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJIIJJJJJJ&J'J.J0J.J/J>J?JFJHJFJGJVJWJ^J`J^J_JnJoJvJxJvJwJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKK KKK.K/K6K8K6K7KFKGKNKPKNKOK^K_KfKhKfKgKvKwK~KK~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLL&L(L&L'L6L7L>L@L>L?LNLOLVLXLVLWLfLgLnLpLnLoL~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMMMMMM&M'M.M0M.M/M>M?MFMHMFMGMVMWM^M`M^M_MnMoMvMxMvMwMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNN NNN.N/N6N8N6N7NFNGNNNPNNNON^N_NfNhNfNgNvNwN~NN~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOO&O(O&O'O6O7O>O@O>O?ONOOOVOXOVOWOfOgOnOpOnOoO~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPOOPPPPPP&P'P.P0P.P/P>P?PFPHPFPGPVPWP^P`P^P_PnPoPvPxPvPwPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQ QQQ.Q/Q6Q8Q6Q7QFQGQNQPQNQOQ^Q_QfQhQfQgQvQwQ~QQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRR&R(R&R'R6R7R>R@R>R?RNRORVRXRVRWRfRgRnRpRnRoR~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSRRSSSSSS&S'S.S0S.S/S>S?SFSHSFSGSVSWS^S`S^S_SnSoSvSxSvSwSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTT TTT.T/T6T8T6T7TFTGTNTPTNTOT^T_TfThTfTgTvTwT~TT~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUU&U(U&U'U6U7U>U@U>U?UNUOUVUXUVUWUfUgUnUpUnUoU~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVUUVVVVVV&V'V.V0V.V/V>V?VFVHVFVGVVVWV^V`V^V_VnVoVvVxVvVwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWW WWW.W/W6W8W6W7WFWGWNWPWNWOW^W_WfWhWfWgWvWwW~WW~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXX&X(X&X'X6X7X>X@X>X?XNXOXVXXXVXWXfXgXnXpXnXoX~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYXXYYYYYY&Y'Y.Y0Y.Y/Y>Y?YFYHYFYGYVYWY^Y`Y^Y_YnYoYvYxYvYwYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZ ZZZ.Z/Z6Z8Z6Z7ZFZGZNZPZNZOZ^Z_ZfZhZfZgZvZwZ~ZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[&[([&['[6[7[>[@[>[?[N[O[V[X[V[W[f[g[n[p[n[o[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\[[\\\\\\&\'\.\0\.\/\>\?\F\H\F\G\V\W\^\`\^\_\n\o\v\x\v\w\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]] ]]].]/]6]8]6]7]F]G]N]P]N]O]^]_]f]h]f]g]v]w]~]]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^&^(^&^'^6^7^>^@^>^?^N^O^V^X^V^W^f^g^n^p^n^o^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^^______&_'_._0_._/_>_?_F_H_F_G_V_W_^_`_^___n_o_v_x_v_w_________________________________``````` ```.`/`6`8`6`7`F`G`N`P`N`O`^`_`f`h`f`g`v`w`~``~````````````````````````````````aaaaaaaa&a(a&a'a6a7a>a@a>a?aNaOaVaXaVaWafaganapanaoa~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbbbbb&b'b.b0b.b/b>b?bFbHbFbGbVbWb^b`b^b_bnbobvbxbvbwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccc ccc.c/c6c8c6c7cFcGcNcPcNcOc^c_cfchcfcgcvcwc~cc~ccccccccccccccccccccccccccccccccdddddddd&d(d&d'd6d7d>d@d>d?dNdOdVdXdVdWdfdgdndpdndod~dddddddddddddddddddddddddddddddddeddeeeeee&e'e.e0e.e/e>e?eFeHeFeGeVeWe^e`e^e_eneoevexeveweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffff fff.f/f6f8f6f7fFfGfNfPfNfOf^f_fffhfffgfvfwf~ff~ffffffffffffffffffffffffffffffffgggggggg&g(g&g'g6g7g>g@g>g?gNgOgVgXgVgWgfgggngpgngog~ggggggggggggggggggggggggggggggggghgghhhhhh&h'h.h0h.h/h>h?hFhHhFhGhVhWh^h`h^h_hnhohvhxhvhwhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiii iii.i/i6i8i6i7iFiGiNiPiNiOi^i_ifihifigiviwi~ii~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjj&j(j&j'j6j7j>j@j>j?jNjOjVjXjVjWjfjgjnjpjnjoj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkjjkkkkkk&k'k.k0k.k/k>k?kFkHkFkGkVkWk^k`k^k_knkokvkxkvkwkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllll lll.l/l6l8l6l7lFlGlNlPlNlOl^l_lflhlflglvlwl~ll~llllllllllllllllllllllllllllllllmmmmmmmm&m(m&m'm6m7m>m@m>m?mNmOmVmXmVmWmfmgmnmpmnmom~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnmmnnnnnn&n'n.n0n.n/n>n?nFnHnFnGnVnWn^n`n^n_nnnonvnxnvnwnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx       ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x          ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x  ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x   !!!!!!! !'!)!'!(!7!8!?!A!?!@!O!P!W!Y!W!X!g!h!o!q!o!p!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!"""""""'"("/"1"/"0"?"@"G"I"G"H"W"X"_"a"_"`"o"p"w"y"w"x""""""""""""""""""""""""""""""""## ######!## #/#0#7#9#7#8#G#H#O#Q#O#P#_#`#g#i#g#h#w#x###################################$$$$$$$ $'$)$'$($7$8$?$A$?$@$O$P$W$Y$W$X$g$h$o$q$o$p$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$%%%%%%%'%(%/%1%/%0%?%@%G%I%G%H%W%X%_%a%_%`%o%p%w%y%w%x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& &&&&&&!&& &/&0&7&9&7&8&G&H&O&Q&O&P&_&`&g&i&g&h&w&x&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' ''')'''('7'8'?'A'?'@'O'P'W'Y'W'X'g'h'o'q'o'p''''''''''''''''''''''''''''''''''('((((((('(((/(1(/(0(?(@(G(I(G(H(W(X(_(a(_(`(o(p(w(y(w(x(((((((((((((((((((((((((((((((()) ))))))!)) )/)0)7)9)7)8)G)H)O)Q)O)P)_)`)g)i)g)h)w)x)))))))))))))))))))))))))))))))))))******* *'*)*'*(*7*8*?*A*?*@*O*P*W*Y*W*X*g*h*o*q*o*p**********************************+*+++++++'+(+/+1+/+0+?+@+G+I+G+H+W+X+_+a+_+`+o+p+w+y+w+x++++++++++++++++++++++++++++++++,, ,,,,,,!,, ,/,0,7,9,7,8,G,H,O,Q,O,P,_,`,g,i,g,h,w,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- -'-)-'-(-7-8-?-A-?-@-O-P-W-Y-W-X-g-h-o-q-o-p----------------------------------.-.......'.(./.1./.0.?.@.G.I.G.H.W.X._.a._.`.o.p.w.y.w.x................................// //////!// ///0/7/9/7/8/G/H/O/Q/O/P/_/`/g/i/g/h/w/x///////////////////////////////////0000000 0'0)0'0(07080?0A0?0@0O0P0W0Y0W0X0g0h0o0q0o0p0000000000000000000000000000000000101111111'1(1/111/101?1@1G1I1G1H1W1X1_1a1_1`1o1p1w1y1w1x1111111111111111111111111111111122 222222!22 2/20272927282G2H2O2Q2O2P2_2`2g2i2g2h2w2x222222222222222222222222222222222223333333 3'3)3'3(37383?3A3?3@3O3P3W3Y3W3X3g3h3o3q3o3p3333333333333333333333333333333333434444444'4(4/414/404?4@4G4I4G4H4W4X4_4a4_4`4o4p4w4y4w4x4444444444444444444444444444444455 555555!55 5/50575957585G5H5O5Q5O5P5_5`5g5i5g5h5w5x555555555555555555555555555555555556666666 6'6)6'6(67686?6A6?6@6O6P6W6Y6W6X6g6h6o6q6o6p6666666666666666666666666666666666767777777'7(7/717/707?7@7G7I7G7H7W7X7_7a7_7`7o7p7w7y7w7x7777777777777777777777777777777788 888888!88 8/80878987888G8H8O8Q8O8P8_8`8g8i8g8h8w8x888888888888888888888888888888888889999999 9'9)9'9(97989?9A9?9@9O9P9W9Y9W9X9g9h9o9q9o9p9999999999999999999999999999999999:9:::::::':(:/:1:/:0:?:@:G:I:G:H:W:X:_:a:_:`:o:p:w:y:w:x::::::::::::::::::::::::::::::::;; ;;;;;;!;; ;/;0;7;9;7;8;G;H;O;Q;O;P;_;`;g;i;g;h;w;x;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<< <'<)<'<(<7<8<?<A<?<@<O<P<W<Y<W<X<g<h<o<q<o<p<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=<======='=(=/=1=/=0=?=@=G=I=G=H=W=X=_=a=_=`=o=p=w=y=w=x================================>> >>>>>>!>> >/>0>7>9>7>8>G>H>O>Q>O>P>_>`>g>i>g>h>w>x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????? ?'?)?'?(?7?8???A???@?O?P?W?Y?W?X?g?h?o?q?o?p??????????????????????????????????@?@@@@@@@'@(@/@1@/@0@?@@@G@I@G@H@W@X@_@a@_@`@o@p@w@y@w@x@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AAAAAA!AA A/A0A7A9A7A8AGAHAOAQAOAPA_A`AgAiAgAhAwAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBB B'B)B'B(B7B8B?BAB?B@BOBPBWBYBWBXBgBhBoBqBoBpBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCCC'C(C/C1C/C0C?C@CGCICGCHCWCXC_CaC_C`CoCpCwCyCwCxCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDD DDDDDD!DD D/D0D7D9D7D8DGDHDODQDODPD_D`DgDiDgDhDwDxDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEE E'E)E'E(E7E8E?EAE?E@EOEPEWEYEWEXEgEhEoEqEoEpEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFFFFFFF'F(F/F1F/F0F?F@FGFIFGFHFWFXF_FaF_F`FoFpFwFyFwFxFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGG GGGGGG!GG G/G0G7G9G7G8GGGHGOGQGOGPG_G`GgGiGgGhGwGxGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHH H'H)H'H(H7H8H?HAH?H@HOHPHWHYHWHXHgHhHoHqHoHpHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIHIIIIIII'I(I/I1I/I0I?I@IGIIIGIHIWIXI_IaI_I`IoIpIwIyIwIxIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJ JJJJJJ!JJ J/J0J7J9J7J8JGJHJOJQJOJPJ_J`JgJiJgJhJwJxJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKK K'K)K'K(K7K8K?KAK?K@KOKPKWKYKWKXKgKhKoKqKoKpKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLKLLLLLLL'L(L/L1L/L0L?L@LGLILGLHLWLXL_LaL_L`LoLpLwLyLwLxLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMM MMMMMM!MM M/M0M7M9M7M8MGMHMOMQMOMPM_M`MgMiMgMhMwMxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNN N'N)N'N(N7N8N?NAN?N@NONPNWNYNWNXNgNhNoNqNoNpNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONOOOOOOO'O(O/O1O/O0O?O@OGOIOGOHOWOXO_OaO_O`OoOpOwOyOwOxOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPP PPPPPP!PP P/P0P7P9P7P8PGPHPOPQPOPPP_P`PgPiPgPhPwPxPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQ Q'Q)Q'Q(Q7Q8Q?QAQ?Q@QOQPQWQYQWQXQgQhQoQqQoQpQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRRRRRR'R(R/R1R/R0R?R@RGRIRGRHRWRXR_RaR_R`RoRpRwRyRwRxRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSS SSSSSS!SS S/S0S7S9S7S8SGSHSOSQSOSPS_S`SgSiSgShSwSxSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTT T'T)T'T(T7T8T?TAT?T@TOTPTWTYTWTXTgThToTqToTpTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUTUUUUUUU'U(U/U1U/U0U?U@UGUIUGUHUWUXU_UaU_U`UoUpUwUyUwUxUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVV VVVVVV!VV V/V0V7V9V7V8VGVHVOVQVOVPV_V`VgViVgVhVwVxVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWW W'W)W'W(W7W8W?WAW?W@WOWPWWWYWWWXWgWhWoWqWoWpWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXWXXXXXXX'X(X/X1X/X0X?X@XGXIXGXHXWXXX_XaX_X`XoXpXwXyXwXxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYY YYYYYY!YY Y/Y0Y7Y9Y7Y8YGYHYOYQYOYPY_Y`YgYiYgYhYwYxYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZ Z'Z)Z'Z(Z7Z8Z?ZAZ?Z@ZOZPZWZYZWZXZgZhZoZqZoZpZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[Z[[[[[[['[([/[1[/[0[?[@[G[I[G[H[W[X[_[a[_[`[o[p[w[y[w[x[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\ \\\\\\!\\ \/\0\7\9\7\8\G\H\O\Q\O\P\_\`\g\i\g\h\w\x\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]] ]'])]'](]7]8]?]A]?]@]O]P]W]Y]W]X]g]h]o]q]o]p]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^]^^^^^^^'^(^/^1^/^0^?^@^G^I^G^H^W^X^_^a^_^`^o^p^w^y^w^x^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__ ______!__ _/_0_7_9_7_8_G_H_O_Q_O_P___`_g_i_g_h_w_x___________________________________``````` `'`)`'`(`7`8`?`A`?`@`O`P`W`Y`W`X`g`h`o`q`o`p``````````````````````````````````a`aaaaaaa'a(a/a1a/a0a?a@aGaIaGaHaWaXa_aaa_a`aoapawayawaxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb bbbbbb!bb b/b0b7b9b7b8bGbHbObQbObPb_b`bgbibgbhbwbxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccc c'c)c'c(c7c8c?cAc?c@cOcPcWcYcWcXcgchcocqcocpccccccccccccccccccccccccccccccccccdcddddddd'd(d/d1d/d0d?d@dGdIdGdHdWdXd_dad_d`dodpdwdydwdxddddddddddddddddddddddddddddddddee eeeeee!ee e/e0e7e9e7e8eGeHeOeQeOePe_e`egeiegehewexeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffff f'f)f'f(f7f8f?fAf?f@fOfPfWfYfWfXfgfhfofqfofpffffffffffffffffffffffffffffffffffgfggggggg'g(g/g1g/g0g?g@gGgIgGgHgWgXg_gag_g`gogpgwgygwgxgggggggggggggggggggggggggggggggghh hhhhhh!hh h/h0h7h9h7h8hGhHhOhQhOhPh_h`hghihghhhwhxhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiii i'i)i'i(i7i8i?iAi?i@iOiPiWiYiWiXigihioiqioipiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijijjjjjjj'j(j/j1j/j0j?j@jGjIjGjHjWjXj_jaj_j`jojpjwjyjwjxjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkk kkkkkk!kk k/k0k7k9k7k8kGkHkOkQkOkPk_k`kgkikgkhkwkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllll l'l)l'l(l7l8l?lAl?l@lOlPlWlYlWlXlglhlolqlolpllllllllllllllllllllllllllllllllllmlmmmmmmm'm(m/m1m/m0m?m@mGmImGmHmWmXm_mam_m`mompmwmymwmxmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnn nnnnnn!nn n/n0n7n9n7n8nGnHnOnQnOnPn_n`ngningnhnwnxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnDATAor=?DATAhp= .corner_vert ?v= .corner_edgea?w=)`6?Xw=DATA  ?Lo  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< <!<"<#<$<%<&<'<(<)<*<+<,<-<.</<0<1<2<3<4<5<6<7<8<9<:<;<<<=<><?<@<A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z<[<\<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|<}<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========= = = = = =================== =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDD D D D D DDDDDDDDDDDDDDDDDDD D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEE E E E E EEEEEEEEEEEEEEEEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFF F F F F FFFFFFFFFFFFFFFFFFF F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGG G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJ J J J J JJJJJJJJJJJJJJJJJJJ J!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLL L L L L LLLLLLLLLLLLLLLLLLL L!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMM M M M M MMMMMMMMMMMMMMMMMMM M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNN N N N N NNNNNNNNNNNNNNNNNNN N!N"N#N$N%N&N'N(N)N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOO O!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPP P P P P PPPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQQQQ Q!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;TT?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWW W W W W WWWWWWWWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyWzW{W|W}W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5X6X7X8X9X:X;XX?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;YY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[ [ [ [ [ [[[[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z[{[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^v^w^x^y^z^{^|^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~__________________________________________________________________________________________________________________________________````````` ` ` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`^`_```a`b`c`d`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaa a a a a aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb b b b b bbbbbbbbbbbbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc c c c c ccccccccccccccccccc c!c"c#c$c%c&c'c(c)c*c+c,c-c.c/c0c1c2c3c4c5c6c7c8c9c:c;cc?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeee e e e e eeeeeeeeeeeeeeeeeee e!e"e#e$e%e&e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyeze{e|e}e~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffff f f f f fffffffffffffffffff f!f"f#f$f%f&f'f(f)f*f+f,f-f.f/f0f1f2f3f4f5f6f7f8f9f:f;ff?f@fAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf[f\f]f^f_f`fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzf{f|f}f~ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggggggggg g g g g ggggggggggggggggggg g!g"g#g$g%g&g'g(g)g*g+g,g-g.g/g0g1g2g3g4g5g6g7g8g9g:g;gg?g@gAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhh h h h h hhhhhhhhhhhhhhhhhhh h!h"h#h$h%h&h'h(h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;hh?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;ii?i@iAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi{i|i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;jj?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkk k k k k kkkkkkkkkkkkkkkkkkk k!k"k#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;kk?k@kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk[k\k]k^k_k`kakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzk{k|k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllll l l l l lllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;ll?l@lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmm m m m m mmmmmmmmmmmmmmmmmmm m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnn n n n n nnnnnnnnnnnnnnnnnnn n!n"n#n$n%n&n'n(n)n*n+n,n-n.n/n0n1n2n3n4n5n6n7n8n9n:n;nn?n@nAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn[n\n]n^n_n`nanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn{n|n}n~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooDATA a?Lo )7)DS#aCS  7cE7%a$a)eEESdE )7)GS&aFS  7fE7(a'a)hEHSgE )7)JS)aIS  7iE7+a*a)kEKSjE )7)MS,aLS  7lE7.a -a)nENSmE )7)PS/aOS  7oE71a0a)qEQSpE )7)SS2aRS  7rE74a3a)tETSsE )7)VS5aUS  7uE77a6a)wEWSvE )7)YS8aXS  7xE7:a9a)zEZSyE )7)\S;a[S  7{E7=aa^S  7~E7@a?a)E`SE)7)bSAaaS7E7Ca Ba)EcSE"!)7)eSDadS7E7Fa#Ea)EfSE%$)7)hSGagS7E7Ia&Ha)EiSE( ')7)kSJajS  7E7La)Ka)ElSE+ *)7)nSMamS 7E7Oa,Na)EoSE.-)7)qSPapS7E7Ra/Qa)ErSE10)7)tSSasS7E7Ua2Ta)EuSE43)7)wSVavS7E7Xa5Wa)ExSE76)7)zSYayS7E7[a8Za)E{SE:9)7)}S\a|S7E7^a;]a)E~SE=<)7)S_aS 7E7aa>`a)ESE@!?)7)SbaS#"7E7daAca)ESEC$B)7)SeaS&%7E7gaDfa)ESEF'E)7)ShaS)(7E7jaGia ) ESEI*H)7)SkaS, +7E7maJla ) ESEL-K)7)SnaS/.7E7paMoa)ESEO0N)7)SqaS217E7saPra)ESER3Q)7)StaS547E7vaSua)ESEU6T)7)SwaS877E7yaVxa)ESEX9W)7)SzaS;:7E7|aY{a)ESE[<Z)7)S}aS>=7E7a\~a)ESE^?]*7*SaSA @7E7a_a"*!ESEaB`*7*SaSD#C7E7aba%*$ESEdEc*7*SaSG&F7E7aea(*'ESEgHf *7 *SaSJ)I7E7aha+ **ESEjKi *7 *SaSM,L7E7aka.*-ESEmNl*7*SaSP/O7E7ana1*0ESEpQo*7*SaSS2R7E7aqa4*3ESEsTr*7*SaSV5U7E7ata7*6ESEvWu*7*SaSY8X7E7awa:*9ESEyZx*7*SaS\;[7E7aza=*<ESE|]{*7*SaS_>^8E7a}a@ *?ESE`~"*8!*SaSbAa8E8aaC#*BESEc%*8$*SaSeDd8E8aaF&*EESEf(*8'*SaShGg 8E8aaI)*HESEi+* 8**SaSkJj 8E 8aaL,*KESEl.* 8-*SaSnMm8E8aaO/*NESEo1*80*SaSqPp8E8aaR2*QESEr4*83*SaStSs8E8aaU5*TESEu7*86*SaSwVv8E8aaX8*WESEx:*89*SaSzYy8E8aa[;*ZESE{=*8<*SaS}\|8E8aa^>*]ESE~@*8?*SaS_!8E 8aaaA*`FSFC*"8B*SaSb$8F#8aadD*cFSFF*%8E*SaSe'8F&8aagG*fFSFI*(8H*SaSh*8F)8aajJ*i FS FL*+8K*SaSk-8 F,8aamM*l FS FO*.8N*SaSn08F/8aapP*oFSFR*18Q*SaSq38F28aasS*rFSFU*48T*SaSt68F58aavV*uFSFX*78W*SaSw98F88aayY*xFSF[*:8Z*SaSz<8F;8aa|\*{FSF^*=8]*SaS}?8F>8aa_*~FSFa*@8`*TaTB8 FA8aab*"FT!Fd*C8c*TaTE8#FD8aae*%FT$Fg*F8f*TaTH8&FG8aah*(FT'Fj*I8i* Ta TK8)FJ8aak*+F T*Fm*L8l* Ta TN8,FM8aan*.FT-Fp*O8o*TaTQ8/FP8aaq*1FT0Fs*R8r*TaTT82FS8aat*4FT3Fv*U8u*TaTW85FV8aaw*7FT6Fy*X8x*TaTZ88FY8aaz*:FT9F|*[8{*TaT]8;F\8aa}*=FTF_8ba*@F T?F*a8*"Tb!Tc8AFb8bb*CF#TBF*d8*%Tb$Tf8DFe8bb*FF&TEF*g8*(Tb'Ti8GFh8 bb*IF)THF*j8*+T b*Tl8JFk8 b b*LF,TKF*m8*.T b-To8MFn8bb*OF/TNF*p8*1Tb0Tr8PFq8bb*RF2TQF*s8*4Tb3Tu8SFt8bb*UF5TTF*v8*7Tb6Tx8VFw8bb*XF8TWF*y8*:Tb9T{8YFz8bb*[F;TZF*|8*=TbT]F*8*@Tb?T8_F8!b b*aFAT`F*8*CT"bBT8bF8$b#b*dFDTcF*8*FT%bET8eF8'b&b*gFGTfF*8*IT(bHT8hF8*b)b*jFJTiF *8*LT+bKT8kF8-b ,b*mFMTlF  *8*OT.bNT8nF80b /b*pFPToF*8*RT1bQT8qF83b2b*sFSTrF*8*UT4bTT8tF86b5b*vFVTuF*8*XT7bWT8wF89b8b*yFYTxF*8*[T:bZT8zF8b*F_T~F*8*aT@b`T8F8BbAb*FbTF! *8*dTCbcT8F8Eb"Db*FeTF$#*8*gTFbfT8F8Hb%Gb*FhTF'&*8*jTIbiT  8F8Kb(Jb*FkTF* )*8*mTLblT  8F8Nb+Mb*FnTF-,*8*pTOboT8F8Qb.Pb*FqTF0/*8*sTRbrT8F8Tb1Sb*FtTF32*8*vTUbuT8F8Wb4Vb*FwTF65*8*yTXbxT8F8Zb7Yb*FzTF98*8*|T[b{T8F8]b:\b*F}TF<;*8*T^b~T8F8`b=_b*FTF? >*8*TabT"!8F8cb@bb*FTFB#A*8*TdbT%$8F8fbCeb*FTFE&D*8*TgbT('8F8ibFhb *FTFH)G*8*TjbT+ *8F8lbIkb * FTFK,J*8*TmbT. -8F8obLnb*FTFN/M*8*TpbT108F8rbOqb*FTFQ2P*8*TsbT438F8ubRtb*FTFT5S*8*TvbT768F8xbUwb*FTFW8V*8*TybT:98F8{bXzb*FTFZ;Y*8*T|bT=<8F8~b[}b*FTF]>\+8*TbT@?8F8b^b!+ FTF`A_+8+TbTC"B8F8bab$+#FTFcDb+8+TbTF%E8F8bdb'+&FTFfGe +8+TbTI(H8F8bgb* +)FTFiJh +8 +TbTL+K8F8bjb- +,FTFlMk+8+TbTO.N8F8bmb0+/FTFoPn+8+TbTR1Q8F8bpb3+2FTFrSq+8+TbTU4T8F8bsb6+5FTFuVt+8+TbTX7W8F8bvb9+8FTFxYw+8+TbT[:Z8F8byb<+;FTF{\z+8+TbT^=]8F8b|b?+>FTF~_}!+9 +TbTa@`9F9bbB"+AFTFb$+9#+TbTdCc9F9bbE%+DFTFe'+9&+TbTgFf9F9bbH(+GFTFh*+ 9)+TbTjIi 9F 9bbK++JFTFk-+ 9,+TbTmLl9F 9bbN.+MFTFn0+9/+TbTpOo9F9bbQ1+PFTFq3+92+TbTsRr9F9bbT4+SFTFt6+95+TbTvUu9F9bbW7+VFTFw9+98+TbTyXx9F9bbZ:+YFTFz<+9;+TbT|[{9F9bb]=+\FTF}?+9>+TbT^~ 9F9bb`@+_GTFB+!9A+TbTa#9G"9bbcC+bGTGE+$9D+TbTd&9G%9bbfF+eGTGH+'9G+TbTg)9G(9bbiI+h GTGK+*9J+TbTj,9 G+9bblL+k GT GN+-9M+TbTm/9 G.9bboO+nGTGQ+09P+TbTp29G19bbrR+qGTGT+39S+TbTs59G49bbuU+tGTGW+69V+TbTv89G79bbxX+wGTGZ+99Y+TbTy;9G:9bb{[+zGTG]+<9\+TbT|>9G=9bb~^+}GTG`+?9_+UbTA9G@9bba+!GU Gc+B9b+UbUD9"GC9bbd+$GU#Gf+E9e+UbUG9%GF9bbg+'GU&Gi+H9h+ UbUJ9(GI9bbj+*G U)Gl+K9k+ Ub UM9+GL9bbm+-G U,Go+N9n+UbUP9.GO9bbp+0GU/Gr+Q9q+UbUS91GR9bbs+3GU2Gu+T9t+UbUV94GU9bbv+6GU5Gx+W9w+UbUY97GX9bby+9GU8G{+Z9z+UbU\9:G[9bb|+G+`9+!Uc Ub9@Ga9cc+BG"UAG+c9+$Uc#Ue9CGd9cc+EG%UDG+f9+'Uc&Uh9FGg9cc+HG(UGG+i9+*U c)Uk9IGj9 c c+KG+UJG+l9+-U c,Un9LGm9c c+NG.UMG+o9+0Uc/Uq9OGp9cc+QG1UPG+r9+3Uc2Ut9RGs9cc+TG4USG+u9+6Uc5Uw9UGv9cc+WG7UVG+x9+9Uc8Uz9XGy9cc+ZG:UYG+{9+U9^G9 cc+`G@U_G+9+BU!cAU9aG9#c"c+cGCUbG+9+EU$cDU9dG9&c%c+fGFUeG+9+HU'cGU9gG9)c(c+iGIUhG+9+KU*cJU9jG9,c +c+lGLUkG  +9+NU-cMU9mG9/c .c+oGOUnG +9+QU0cPU9pG92c1c+rGRUqG+9+TU3cSU9sG95c4c+uGUUtG+9+WU6cVU9vG98c7c+xGXUwG+9+ZU9cYU9yG9;c:c+{G[UzG+9+]Uc=c+~G^U}G+9+`U?c_U9G9Ac@c+GaUG +9+cUBcbU9G9Dc!Cc+GdUG#"+9+fUEceU9G9Gc$Fc+GgUG&%+9+iUHchU 9G9Jc'Ic+GjUG) (+9+lUKckU  9G9Mc*Lc+GmUG, ++9+oUNcnU9G9Pc-Oc+GpUG/.+9+rUQcqU9G9Sc0Rc+GsUG21+9+uUTctU9G9Vc3Uc+GvUG54+9+xUWcwU9G9Yc6Xc+GyUG87+9+{UZczU9G9\c9[c+G|UG;:+9+~U]c}U9G9_c<^c+GUG>=+9+U`cU! 9G9bc?ac+GUGA"@+9+UccU$#9G9ecBdc+GUGD%C+9+UfcU'&9G9hcEgc+GUGG(F+9+UicU* )9G9kcHjc + GUGJ+I+9+UlcU- ,9G9ncKmc+ GUGM.L+9+UocU0/9G9qcNpc+GUGP1O+9+UrcU329G9tcQsc+GUGS4R+9+UucU659G9wcTvc+GUGV7U+9+UxcU989G9zcWyc+GUGY:X+9+U{cU<;9G9}cZ|c+GUG\=[+9+U~cU?>9G9c]c ,GUG_@^,9,UcUB!A9G9c`c#,"GUGbCa,9,UcUE$D9G9ccc&,%GUGeFd,9,UcUH'G9G9cfc) ,(GUGhIg ,9 ,UcUK*J9G9cic, ,+GUGkLj,9 ,UcUN-M9G9clc/,.GUGnOm,9,UcUQ0P9G9coc2,1GUGqRp,9,UcUT3S9G9crc5,4GUGtUs,9,UcUW6V9G9cuc8,7GUGwXv,9,UcUZ9Y9G9cxc;,:GUGz[y,9,UcU]<\9G9c{c>,=GUG}^| ,9,UcU`?_:G:c~cA!,@GUGa#,:",UcUcBb:G:ccD$,CGUGd&,:%,UcUfEe:G:ccG',FGUGg),:(,UcUiHh :G :ccJ*,IGUGj,, :+,UcUlKk :G :ccM-,LGUGm/,:.,UcUoNn:G:ccP0,OGUGp2,:1,UcUrQq:G:ccS3,RGUGs5,:4,UcUuTt:G:ccV6,UGUGv8,:7,UcUxWw:G:ccY9,XGUGy;,::,UcU{Zz:G:cc\<,[GUG|>,:=,UcU~]}:G:cc_?,^GUGA, :@,UcU`":H!:ccbB,aHUHD,#:C,UcUc%:H$:cceE,dHUHG,&:F,UcUf(:H':cchH,gHUHJ,):I,UcUi+: H*:cckK,j HU HM,,:L,UcUl.: H-:ccnN,mHU HP,/:O,UcUo1:H0:ccqQ,pHUHS,2:R,UcUr4:H3:cctT,sHUHV,5:U,UcUu7:H6:ccwW,vHUHY,8:X,UcUx::H9:cczZ,yHUH\,;:[,UcU{=:H<:cc}],|HUH_,>:^,UcU~@:H?:cc`, HVHb,A:a,VcVC:!HB:ccc,#HV"He,D:d,VcVF:$HE:ccf,&HV%Hh,G:g,VcVI:'HH:cci,)H V(Hk,J:j, Vc VL:*HK:ccl,,H V+Hn,M:m,Vc VO:-HN:cco,/HV.Hq,P:p,VcVR:0HQ:ccr,2HV1Ht,S:s,VcVU:3HT:ccu,5HV4Hw,V:v,VcVX:6HW:ccx,8HV7Hz,Y:y,VcV[:9HZ:cc{,;HV:H},\:|,VcV^:HV=H,_:, VcVa:?H`:dd,AH!V@H,b:,#Vd"Vd:BHc:dd,DH$VCH,e:,&Vd%Vg:EHf:dd,GH'VFH,h:,)Vd(Vj:HHi: d d,JH*VIH,k:,,V d+Vm:KHl: d d,MH-VLH,n:,/Vd.Vp:NHo:dd,PH0VOH,q:,2Vd1Vs:QHr:dd,SH3VRH,t:,5Vd4Vv:THu:dd,VH6VUH,w:,8Vd7Vy:WHx:dd,YH9VXH,z:,;Vd:V|:ZH{:dd,\HVd=V:]H~:dd,_H?V^H,:,AV d@V:`H:"d!d,bHBVaH,:,DV#dCV:cH:%d$d,eHEVdH,:,GV&dFV:fH:(d'd,hHHVgH,:,JV)dIV:iH:+d*d,kHKVjH  ,:,MV,dLV:lH:.d -d,nHNVmH  ,:,PV/dOV:oH:1d0d,qHQVpH,:,SV2dRV:rH:4d3d,tHTVsH,:,VV5dUV:uH:7d6d,wHWVvH,:,YV8dXV:xH::d9d,zHZVyH,:,\V;d[V:{H:=dd^V:~H:@d?d,H`VH,:,bVAdaV:H:Cd Bd,HcVH"!,:,eVDddV:H:Fd#Ed,HfVH%$,:,hVGdgV:H:Id&Hd,HiVH( ',:,kVJdjV  :H:Ld)Kd,HlVH+ *,:,nVMdmV :H:Od,Nd,HoVH.-,:,qVPdpV:H:Rd/Qd,HrVH10,:,tVSdsV:H:Ud2Td,HuVH43,:,wVVdvV:H:Xd5Wd,HxVH76,:,zVYdyV:H:[d8Zd,H{VH:9,:,}V\d|V:H:^d;]d,H~VH=<,:,V_dV :H:ad>`d,HVH@!?,:,VbdV#":H:ddAcd,HVHC$B,:,VedV&%:H:gdDfd,HVHF'E,:,VhdV)(:H:jdGid , HVHI*H,:,VkdV, +:H:mdJld , HVHL-K,:,VndV/.:H:pdMod,HVHO0N,:,VqdV21:H:sdPrd,HVHR3Q,:,VtdV54:H:vdSud,HVHU6T,:,VwdV87:H:ydVxd,HVHX9W,:,VzdV;::H:|dY{d,HVH[<Z,:,V}dV>=:H:d\~d,HVH^?]-:-VdVA @:H:d_d"-!HVHaB`-:-VdVD#C:H:dbd%-$HVHdEc-:-VdVG&F:H:ded(-'HVHgHf -: -VdVJ)I:H:dhd+ -*HVHjKi -: -VdVM,L:H:dkd.--HVHmNl-:-VdVP/O:H:dnd1-0HVHpQo-:-VdVS2R:H:dqd4-3HVHsTr-:-VdVV5U:H:dtd7-6HVHvWu-:-VdVY8X:H:dwd:-9HVHyZx-:-VdV\;[:H:dzd=-<HVH|]{-:-VdV_>^;H:d}d@ -?HVH`~"-;!-VdVbAa;H;ddC#-BHVHc%-;$-VdVeDd;H;ddF&-EHVHf(-;'-VdVhGg ;H;ddI)-HHVHi+- ;*-VdVkJj ;H ;ddL,-KHVHl.- ;--VdVnMm;H;ddO/-NHVHo1-;0-VdVqPp;H;ddR2-QHVHr4-;3-VdVtSs;H;ddU5-THVHu7-;6-VdVwVv;H;ddX8-WHVHx:-;9-VdVzYy;H;dd[;-ZHVH{=-;<-VdV}\|;H;dd^>-]HVH~@-;?-VdV_!;H ;ddaA-`IVIC-";B-VdVb$;I#;dddD-cIVIF-%;E-VdVe';I&;ddgG-fIVII-(;H-VdVh*;I);ddjJ-i IV IL-+;K-VdVk-; I,;ddmM-l IV IO-.;N-VdVn0;I/;ddpP-oIVIR-1;Q-VdVq3;I2;ddsS-rIVIU-4;T-VdVt6;I5;ddvV-uIVIX-7;W-VdVw9;I8;ddyY-xIVI[-:;Z-VdVz<;I;;dd|\-{IVI^-=;]-VdV}?;I>;dd_-~IVIa-@;`-WdWB; IA;ddb-"IW!Id-C;c-WdWE;#ID;dde-%IW$Ig-F;f-WdWH;&IG;ddh-(IW'Ij-I;i- Wd WK;)IJ;ddk-+I W*Im-L;l- Wd WN;,IM;ddn-.IW-Ip-O;o-WdWQ;/IP;ddq-1IW0Is-R;r-WdWT;2IS;ddt-4IW3Iv-U;u-WdWW;5IV;ddw-7IW6Iy-X;x-WdWZ;8IY;ddz-:IW9I|-[;{-WdW];;I\;dd}-=IWI_;ed-@I W?I-a;-"We!Wc;AIb;ee-CI#WBI-d;-%We$Wf;DIe;ee-FI&WEI-g;-(We'Wi;GIh; ee-II)WHI-j;-+W e*Wl;JIk; e e-LI,WKI-m;-.W e-Wo;MIn;ee-OI/WNI-p;-1We0Wr;PIq;ee-RI2WQI-s;-4We3Wu;SIt;ee-UI5WTI-v;-7We6Wx;VIw;ee-XI8WWI-y;-:We9W{;YIz;ee-[I;WZI-|;-=WeW]I-;-@We?W;_I;!e e-aIAW`I-;-CW"eBW;bI;$e#e-dIDWcI-;-FW%eEW;eI;'e&e-gIGWfI-;-IW(eHW;hI;*e)e-jIJWiI -;-LW+eKW;kI;-e ,e-mIMWlI  -;-OW.eNW;nI;0e /e-pIPWoI-;-RW1eQW;qI;3e2e-sISWrI-;-UW4eTW;tI;6e5e-vIVWuI-;-XW7eWW;wI;9e8e-yIYWxI-;-[W:eZW;zI;e-I_W~I-;-aW@e`W;I;BeAe-IbWI! -;-dWCecW;I;Ee"De-IeWI$#-;-gWFefW;I;He%Ge-IhWI'&-;-jWIeiW  ;I;Ke(Je-IkWI* )-;-mWLelW  ;I;Ne+Me-InWI-,-;-pWOeoW;I;Qe.Pe-IqWI0/-;-sWRerW;I;Te1Se-ItWI32-;-vWUeuW;I;We4Ve-IwWI65-;-yWXexW;I;Ze7Ye-IzWI98-;-|W[e{W;I;]e:\e-I}WI<;-;-W^e~W;I;`e=_e -IWI? >-;-WaeW" !;I;ce@be - IWIB#A-;-WdeW% $;I;feCee - IWIE&D-;-WgeW( ';I;ieFhe - IWIH)G-;-WjeW+ *;I;leIke - IWIK,J-;-WmeW. -;I;oeLne - IWIN/M-;-WpeW1 0;I;reOqe - IWIQ2P-;-WseW4 3;I;ueRte - IWIT5S-;-WveW7 6;I;xeUwe - IWIW8V-;-WyeW: 9;I;{eXze - IWIZ;Y-;-W|eW= <;I;~e[}e - IWI]>\.;-WeW@ ?;I;e^e! . IWI`A_.;.WeWC" B;I;eae$ .# IWIcDb.;.WeWF% E;I;ede' .& IWIfGe .;.WeWI( H;I;ege* .) IWIiJh .; .WeWL+ K;I;eje- ., IWIlMk.;.WeWO. N;I;eme0 ./ IWIoPn.;.WeWR1 Q;I;epe3 .2 IWIrSq.;.WeWU4 T;I;ese6 .5 IWIuVt.;.WeWX7 W;I;eve9 .8 IWIxYw.;.WeW[: Z;I;eye< .; IWI{\z.;.WeW^= ];I;e|e? .> IWI~_}!.< .WeWa@ `<I<eeB ".A IWIb$.<#.WeWdC c<I<eeE %.D IWIe'.<&.WeWgF f<I<eeH (.G IWIh*. <).WeWjI i <I <eeK +.J IWIk-. <,.WeWmL l<I <eeN ..M IWIn0.</.WeWpO o<I<eeQ 1.P IWIq3.<2.WeWsR r<I<eeT 4.S IWIt6.<5.WeWvU u<I<eeW 7.V IWIw9.<8.WeWyX x<I<eeZ :.Y IWIz<.<;.WeW|[ {<I<ee] =.\ IWI}?.<>.WeW^ ~ <I<ee` @._ JWIB.!<A.WeWa #<J"<eec C.b JWJE.$<D.WeWd &<J%<eef F.e JWJH.'<G.WeWg )<J(<eei I.h JWJK.*<J.WeWj ,< J+<eel L.k JW JN.-<M.WeWm /< J.<eeo O.n JWJQ.0<P.WeWp 2<J1<eer R.q JWJT.3<S.WeWs 5<J4<eeu U.t JWJW.6<V.WeWv 8<J7<eex X.w JWJZ.9<Y.WeWy ;<J:<ee{ [.z JWJ].<<\.WeW| ><J=<ee~ ^.} JWJ`.?<_.XeW A<J@<ee a. !JX Jc.B<b.XeX D<"JC<ee d. $JX#Jf.E<e.XeX G<%JF<ee g. 'JX&Ji.H<h. XeX J<(JI<ee j. *J X)Jl.K<k. Xe X M<+JL<ee m. -J X,Jo.N<n.XeX P<.JO<ee p. 0JX/Jr.Q<q.XeX S<1JR<ee s. 3JX2Ju.T<t.XeX V<4JU<ee v. 6JX5Jx.W<w.XeX Y<7JX<ee y. 9JX8J{.Z<z.XeX \<:J[<ee |. J.`<.!Xf X b<@Ja<ff . BJ"XAJ.c<.$Xf#X e<CJd<ff . EJ%XDJ.f<.'Xf&X h<FJg<ff . HJ(XGJ.i<.*X f)X k<IJj< f f . KJ+XJJ.l<.-X f,X n<LJm<f f . NJ.XMJ.o<.0Xf/X q<OJp<ff . QJ1XPJ.r<.3Xf2X t<RJs<ff . TJ4XSJ.u<.6Xf5X w<UJv<ff . WJ7XVJ.x<.9Xf8X z<XJy<ff . ZJ:XYJ.{<.X <^J< ff . `J@X_J.<.BX!fAX <aJ<#f"f . cJCXbJ.<.EX$fDX <dJ<&f%f . fJFXeJ.<.HX'fGX <gJ<)f(f . iJIXhJ.<.KX*fJX <jJ<,f +f . lJLXkJ  .<.NX-fMX <mJ</f .f . oJOXnJ .<.QX0fPX <pJ<2f1f . rJRXqJ.<.TX3fSX <sJ<5f4f . uJUXtJ.<.WX6fVX <vJ<8f7f . xJXXwJ.<.ZX9fYX <yJ<;f:f . {J[XzJ.<.]Xf=f . ~J^X}J.<.`X?f_X <J<Af@f . JaXJ .<.cXBfbX <J<Df!Cf . JdXJ#".<.fXEfeX <J<Gf$Ff . JgXJ&%.<.iXHfhX  <J<Jf'If . JjXJ) (.<.lXKfkX  <J<Mf*Lf . JmXJ, +.<.oXNfnX <J<Pf-Of . JpXJ/..<.rXQfqX <J<Sf0Rf . JsXJ21.<.uXTftX <J<Vf3Uf . JvXJ54.<.xXWfwX <J<Yf6Xf . JyXJ87.<.{XZfzX <J<\f9[f . J|XJ;:.<.~X]f}X <J<_f<^f . JXJ>=.<.X`fX!! <J<bf?af!.!JXJA"@.<.XcfX$!#<J<efBdf!.!JXJD%C.<.XffX'!&<J<hfEgf!.!JXJG(F.<.XifX* !)<J<kfHjf !. !JXJJ+I.<.XlfX- !,<J<nfKmf!. !JXJM.L.<.XofX0!/<J<qfNpf!.!JXJP1O.<.XrfX3!2<J<tfQsf!.!JXJS4R.<.XufX6!5<J<wfTvf!.!JXJV7U.<.XxfX9!8<J<zfWyf!.!JXJY:X.<.X{fX<!;<J<}fZ|f!.!JXJ\=[.<.X~fX?!><J<f]f !/!JXJ_@^/</XfXB!!A<J<f`f#!/"!JXJbCa/</XfXE$!D<J<fcf&!/%!JXJeFd/</XfXH'!G<J<fff)! /(!JXJhIg /< /XfXK*!J<J<fif,! /+!JXJkLj/< /XfXN-!M<J<flf/!/.!JXJnOm/</XfXQ0!P<J<fof2!/1!JXJqRp/</XfXT3!S<J<frf5!/4!JXJtUs/</XfXW6!V<J<fuf8!/7!JXJwXv/</XfXZ9!Y<J<fxf;!/:!JXJz[y/</XfX]!/=!JXJ}^| /</XfX`?!_=J=f~fA!!/@!JXJa#/="/XfXcB!b=J=ffD!$/C!JXJd&/=%/XfXfE!e=J=ffG!'/F!JXJg)/=(/XfXiH!h =J =ffJ!*/I!JXJj,/ =+/XfXlK!k =J =ffM!-/L!JXJm//=./XfXoN!n=J=ffP!0/O!JXJp2/=1/XfXrQ!q=J=ffS!3/R!JXJs5/=4/XfXuT!t=J=ffV!6/U!JXJv8/=7/XfXxW!w=J=ffY!9/X!JXJy;/=:/XfX{Z!z=J=ff\!/==/XfX~]!}=J=ff_!?/^!JXJA/ =@/XfX`!"=K!=ffb!B/a!KXKD/#=C/XfXc!%=K$=ffe!E/d!KXKG/&=F/XfXf!(=K'=ffh!H/g!KXKJ/)=I/XfXi!+= K*=ffk!K/j! KX KM/,=L/XfXl!.= K-=ffn!N/m!KX KP//=O/XfXo!1=K0=ffq!Q/p!KXKS/2=R/XfXr!4=K3=fft!T/s!KXKV/5=U/XfXu!7=K6=ffw!W/v!KXKY/8=X/XfXx!:=K9=ffz!Z/y!KXK\/;=[/XfX{!==K<=ff}!]/|!KXK_/>=^/XfX~!@=K?=ff!`/! KYKb/A=a/YfY!C=!KB=ff!c/!#KY"Ke/D=d/YfY!F=$KE=ff!f/!&KY%Kh/G=g/YfY!I='KH=ff!i/!)K Y(Kk/J=j/ Yf Y!L=*KK=ff!l/!,K Y+Kn/M=m/Yf Y!O=-KN=ff!o/!/KY.Kq/P=p/YfY!R=0KQ=ff!r/!2KY1Kt/S=s/YfY!U=3KT=ff!u/!5KY4Kw/V=v/YfY!X=6KW=ff!x/!8KY7Kz/Y=y/YfY![=9KZ=ff!{/!;KY:K}/\=|/YfY!^=KY=K/_=/ YfY!a=?K`=gg!/!AK!Y@K/b=/#Yg"Y!d=BKc=gg!/!DK$YCK/e=/&Yg%Y!g=EKf=gg!/!GK'YFK/h=/)Yg(Y!j=HKi= g g!/!JK*YIK/k=/,Y g+Y!m=KKl= g g!/!MK-YLK/n=//Yg.Y!p=NKo=gg!/!PK0YOK/q=/2Yg1Y!s=QKr=gg!/!SK3YRK/t=/5Yg4Y!v=TKu=gg!/!VK6YUK/w=/8Yg7Y!y=WKx=gg!/!YK9YXK/z=/;Yg:Y!|=ZK{=gg!/!\KYg=Y!=]K~=gg!/!_K?Y^K/=/AY g@Y!=`K="g!g!/!bKBYaK/=/DY#gCY!=cK=%g$g!/!eKEYdK/=/GY&gFY!=fK=(g'g!/!hKHYgK/=/JY)gIY!=iK=+g*g!/!kKKYjK  /=/MY,gLY!=lK=.g -g!/!nKNYmK  /=/PY/gOY!=oK=1g0g!/!qKQYpK/=/SY2gRY!=rK=4g3g!/!tKTYsK/=/VY5gUY!=uK=7g6g!/!wKWYvK/=/YY8gXY!=xK=:g9g!/!zKZYyK/=/\Y;g[Y!={K==gg^Y!=~K=@g?g!/!K`YK/=/bYAgaY!=K=Cg Bg!/!KcYK"!/=/eYDgdY!=K=Fg#Eg!/!KfYK%$/=/hYGggY!=K=Ig&Hg!/!KiYK( '/=/kYJgjY ! =K=Lg)Kg!/!KlYK+ */=/nYMgmY! =K=Og,Ng!/!KoYK.-/=/qYPgpY!=K=Rg/Qg!/!KrYK10/=/tYSgsY!=K=Ug2Tg!/!KuYK43/=/wYVgvY!=K=Xg5Wg!/!KxYK76/=/zYYgyY!=K=[g8Zg!/!K{YK:9/=/}Y\g|Y!=K=^g;]g!/!K~YK=</=/Y_gY !=K=ag>`g"/"KYK@!?/=/YbgY#""=K=dgAcg"/"KYKC$B/=/YegY&"%=K=ggDfg"/"KYKF'E/=/YhgY)"(=K=jgGig "/ "KYKI*H/=/YkgY, "+=K=mgJlg "/ "KYKL-K/=/YngY/".=K=pgMog"/"KYKO0N/=/YqgY2"1=K=sgPrg"/"KYKR3Q/=/YtgY5"4=K=vgSug"/"KYKU6T/=/YwgY8"7=K=ygVxg"/"KYKX9W/=/YzgY;":=K=|gY{g"/"KYK[<Z/=/Y}gY>"==K=g\~g"/"KYK^?]0=0YgYA "@=K=g_g""0!"KYKaB`0=0YgYD#"C=K=gbg%"0$"KYKdEc0=0YgYG&"F=K=geg("0'"KYKgHf 0= 0YgYJ)"I=K=ghg+" 0*"KYKjKi 0= 0YgYM,"L=K=gkg."0-"KYKmNl0=0YgYP/"O=K=gng1"00"KYKpQo0=0YgYS2"R=K=gqg4"03"KYKsTr0=0YgYV5"U=K=gtg7"06"KYKvWu0=0YgYY8"X=K=gwg:"09"KYKyZx0=0YgY\;"[=K=gzg="0<"KYK|]{0=0YgY_>"^>K=g}g@" 0?"KYK`~"0>!0YgYbA"a>K>ggC"#0B"KYKc%0>$0YgYeD"d>K>ggF"&0E"KYKf(0>'0YgYhG"g >K>ggI")0H"KYKi+0 >*0YgYkJ"j >K >ggL",0K"KYKl.0 >-0YgYnM"m>K>ggO"/0N"KYKo10>00YgYqP"p>K>ggR"20Q"KYKr40>30YgYtS"s>K>ggU"50T"KYKu70>60YgYwV"v>K>ggX"80W"KYKx:0>90YgYzY"y>K>gg[";0Z"KYK{=0><0YgY}\"|>K>gg^">0]"KYK~@0>?0YgY_"!>K >gga"A0`"LYLC0">B0YgYb"$>L#>ggd"D0c"LYLF0%>E0YgYe"'>L&>ggg"G0f"LYLI0(>H0YgYh"*>L)>ggj"J0i" LY LL0+>K0YgYk"-> L,>ggm"M0l" LY LO0.>N0YgYn"0>L/>ggp"P0o"LYLR01>Q0YgYq"3>L2>ggs"S0r"LYLU04>T0YgYt"6>L5>ggv"V0u"LYLX07>W0YgYw"9>L8>ggy"Y0x"LYL[0:>Z0YgYz"<>L;>gg|"\0{"LYL^0=>]0YgY}"?>L>>gg"_0~"LYLa0@>`0ZgZ"B> LA>gg"b0""LZ!Ld0C>c0ZgZ"E>#LD>gg"e0"%LZ$Lg0F>f0ZgZ"H>&LG>gg"h0"(LZ'Lj0I>i0 Zg Z"K>)LJ>gg"k0"+L Z*Lm0L>l0 Zg Z"N>,LM>gg"n0".LZ-Lp0O>o0ZgZ"Q>/LP>gg"q0"1LZ0Ls0R>r0ZgZ"T>2LS>gg"t0"4LZ3Lv0U>u0ZgZ"W>5LV>gg"w0"7LZ6Ly0X>x0ZgZ"Z>8LY>gg"z0":LZ9L|0[>{0ZgZ"]>;L\>gg"}0"=LZ~0ZgZ"`>>L_>hg"0"@L Z?L0a>0"Zh!Z"c>ALb>hh"0"CL#ZBL0d>0%Zh$Z"f>DLe>hh"0"FL&ZEL0g>0(Zh'Z"i>GLh> hh"0"IL)ZHL0j>0+Z h*Z"l>JLk> h h"0"LL,ZKL0m>0.Z h-Z"o>MLn>hh"0"OL/ZNL0p>01Zh0Z"r>PLq>hh"0"RL2ZQL0s>04Zh3Z"u>SLt>hh"0"UL5ZTL0v>07Zh6Z"x>VLw>hh"0"XL8ZWL0y>0:Zh9Z"{>YLz>hh"0"[L;ZZL0|>0=Zh\L}>hh"0"^L>Z]L0>0@Zh?Z">_L>!h h"0"aLAZ`L0>0CZ"hBZ">bL>$h#h"0"dLDZcL0>0FZ%hEZ">eL>'h&h"0"gLGZfL0>0IZ(hHZ">hL>*h)h"0"jLJZiL 0>0LZ+hKZ">kL>-h ,h"0"mLMZlL  0>0OZ.hNZ">nL>0h /h"0"pLPZoL0>0RZ1hQZ">qL>3h2h"0"sLSZrL0>0UZ4hTZ">tL>6h5h"0"vLVZuL0>0XZ7hWZ">wL>9h8h"0"yLYZxL0>0[Z:hZZ">zL>0^Z=h]Z">}L>?h>h"0"L_Z~L0>0aZ@h`Z">L>BhAh"0"LbZL! 0>0dZChcZ">L>Eh"Dh"0"LeZL$#0>0gZFhfZ">L>Hh%Gh"0"LhZL'&0>0jZIhiZ " >L>Kh(Jh"0"LkZL* )0>0mZLhlZ " >L>Nh+Mh"0"LnZL-,0>0pZOhoZ">L>Qh.Ph"0"LqZL0/0>0sZRhrZ">L>Th1Sh"0"LtZL320>0vZUhuZ">L>Wh4Vh"0"LwZL650>0yZXhxZ">L>Zh7Yh"0"LzZL980>0|Z[h{Z">L>]h:\h"0"L}ZL<;0>0Z^h~Z">L>`h=_h#0"LZL? >0>0ZahZ"#!>L>ch@bh#0#LZLB#A0>0ZdhZ%#$>L>fhCeh#0#LZLE&D0>0ZghZ(#'>L>ihFhh #0#LZLH)G0>0ZjhZ+ #*>L>lhIkh #0 #LZLK,J0>0ZmhZ. #->L>ohLnh#0#LZLN/M0>0ZphZ1#0>L>rhOqh#0#LZLQ2P0>0ZshZ4#3>L>uhRth#0#LZLT5S0>0ZvhZ7#6>L>xhUwh#0#LZLW8V0>0ZyhZ:#9>L>{hXzh#0#LZLZ;Y0>0Z|hZ=#<>L>~h[}h#0#LZL]>\1>0ZhZ@#?>L>h^h!#1 #LZL`A_1>1ZhZC"#B>L>hah$#1##LZLcDb1>1ZhZF%#E>L>hdh'#1&#LZLfGe 1>1ZhZI(#H>L>hgh*# 1)#LZLiJh 1> 1ZhZL+#K>L>hjh-# 1,#LZLlMk1>1ZhZO.#N>L>hmh0#1/#LZLoPn1>1ZhZR1#Q>L>hph3#12#LZLrSq1>1ZhZU4#T>L>hsh6#15#LZLuVt1>1ZhZX7#W>L>hvh9#18#LZLxYw1>1ZhZ[:#Z>L>hyh<#1;#LZL{\z1>1ZhZ^=#]>L>h|h?#1>#LZL~_}!1? 1ZhZa@#`?L?hhB#"1A#LZLb$1?#1ZhZdC#c?L?hhE#%1D#LZLe'1?&1ZhZgF#f?L?hhH#(1G#LZLh*1 ?)1ZhZjI#i ?L ?hhK#+1J#LZLk-1 ?,1ZhZmL#l?L ?hhN#.1M#LZLn01?/1ZhZpO#o?L?hhQ#11P#LZLq31?21ZhZsR#r?L?hhT#41S#LZLt61?51ZhZvU#u?L?hhW#71V#LZLw91?81ZhZyX#x?L?hhZ#:1Y#LZLz<1?;1ZhZ|[#{?L?hh]#=1\#LZL}?1?>1ZhZ^#~ ?L?hh`#@1_#MZLB1!?A1ZhZa##?M"?hhc#C1b#MZME1$?D1ZhZd#&?M%?hhf#F1e#MZMH1'?G1ZhZg#)?M(?hhi#I1h# MZMK1*?J1ZhZj#,? M+?hhl#L1k# MZ MN1-?M1ZhZm#/? M.?hho#O1n#MZMQ10?P1ZhZp#2?M1?hhr#R1q#MZMT13?S1ZhZs#5?M4?hhu#U1t#MZMW16?V1ZhZv#8?M7?hhx#X1w#MZMZ19?Y1ZhZy#;?M:?hh{#[1z#MZM]1?M=?hh~#^1}#MZM`1??_1[hZ#A?M@?hh#a1#!M[ Mc1B?b1[h[#D?"MC?hh#d1#$M[#Mf1E?e1[h[#G?%MF?hh#g1#'M[&Mi1H?h1 [h[#J?(MI?hh#j1#*M [)Ml1K?k1 [h [#M?+ML?hh#m1#-M [,Mo1N?n1[h[#P?.MO?hh#p1#0M[/Mr1Q?q1[h[#S?1MR?hh#s1#3M[2Mu1T?t1[h[#V?4MU?hh#v1#6M[5Mx1W?w1[h[#Y?7MX?hh#y1#9M[8M{1Z?z1[#\?:M[?hh#|1#M1`?1![i [#b?@Ma?ii#1#BM"[AM1c?1$[i#[#e?CMd?ii#1#EM%[DM1f?1'[i&[#h?FMg?ii#1#HM([GM1i?1*[ i)[#k?IMj? i i#1#KM+[JM1l?1-[ i,[#n?LMm?i i#1#NM.[MM1o?10[i/[#q?OMp?ii#1#QM1[PM1r?13[i2[#t?RMs?ii#1#TM4[SM1u?16[i5[#w?UMv?ii#1#WM7[VM1x?19[i8[#z?XMy?ii#1#ZM:[YM1{?1<[i;[#}?[M|?ii#1#]M=[\M1~?1?[i>[#?^M? ii#1#`M@[_M1?1B[!iA[#?aM?#i"i#1#cMC[bM1?1E[$iD[#?dM?&i%i#1#fMF[eM1?1H['iG[#?gM?)i(i#1#iMI[hM1?1K[*iJ[#?jM?,i +i#1#lML[kM  1?1N[-iM[#?mM?/i .i#1#oMO[nM 1?1Q[0iP[#?pM?2i1i#1#rMR[qM1?1T[3iS[#?sM?5i4i#1#uMU[tM1?1W[6iV[#?vM?8i7i#1#xMX[wM1?1Z[9iY[#?yM?;i:i#1#{M[[zM1?1][i=i#1#~M^[}M1?1`[?i_[#?M?Ai@i#1#Ma[M 1?1c[Bib[#?M?Di!Ci#1#Md[M#"1?1f[Eie[#?M?Gi$Fi#1#Mg[M&%1?1i[Hih[ #?M?Ji'Ii#1#Mj[M) (1?1l[Kik[ # ?M?Mi*Li#1#Mm[M, +1?1o[Nin[#?M?Pi-Oi#1#Mp[M/.1?1r[Qiq[#?M?Si0Ri#1#Ms[M211?1u[Tit[#?M?Vi3Ui#1#Mv[M541?1x[Wiw[#?M?Yi6Xi#1#My[M871?1{[Ziz[#?M?\i9[i#1#M|[M;:1?1~[]i}[#?M?_i<^i#1#M[M>=1?1[`i[!$ ?M?bi?ai$1$M[MA"@1?1[ci[$$#?M?eiBdi$1$M[MD%C1?1[fi['$&?M?hiEgi$1$M[MG(F1?1[ii[* $)?M?kiHji $1 $M[MJ+I1?1[li[- $,?M?niKmi$1 $M[MM.L1?1[oi[0$/?M?qiNpi$1$M[MP1O1?1[ri[3$2?M?tiQsi$1$M[MS4R1?1[ui[6$5?M?wiTvi$1$M[MV7U1?1[xi[9$8?M?ziWyi$1$M[MY:X1?1[{i[<$;?M?}iZ|i$1$M[M\=[1?1[~i[?$>?M?i]i $2$M[M_@^2?2[i[B!$A?M?i`i#$2"$M[MbCa2?2[i[E$$D?M?ici&$2%$M[MeFd2?2[i[H'$G?M?ifi)$ 2($M[MhIg 2? 2[i[K*$J?M?iii,$ 2+$M[MkLj2? 2[i[N-$M?M?ili/$2.$M[MnOm2?2[i[Q0$P?M?ioi2$21$M[MqRp2?2[i[T3$S?M?iri5$24$M[MtUs2?2[i[W6$V?M?iui8$27$M[MwXv2?2[i[Z9$Y?M?ixi;$2:$M[Mz[y2?2[i[]<$\?M?i{i>$2=$M[M}^| 2?2[i[`?$_@M@i~iA$!2@$M[Ma#2@"2[i[cB$b@M@iiD$$2C$M[Md&2@%2[i[fE$e@M@iiG$'2F$M[Mg)2@(2[i[iH$h @M @iiJ$*2I$M[Mj,2 @+2[i[lK$k @M @iiM$-2L$M[Mm/2@.2[i[oN$n@M@iiP$02O$M[Mp22@12[i[rQ$q@M@iiS$32R$M[Ms52@42[i[uT$t@M@iiV$62U$M[Mv82@72[i[xW$w@M@iiY$92X$M[My;2@:2[i[{Z$z@M@ii\$<2[$M[M|>2@=2[i[~]$}@M@ii_$?2^$M[MA2 @@2[i[`$"@N!@iib$B2a$N[ND2#@C2[i[c$%@N$@iie$E2d$N[NG2&@F2[i[f$(@N'@iih$H2g$N[NJ2)@I2[i[i$+@ N*@iik$K2j$ N[ NM2,@L2[i[l$.@ N-@iin$N2m$N[ NP2/@O2[i[o$1@N0@iiq$Q2p$N[NS22@R2[i[r$4@N3@iit$T2s$N[NV25@U2[i[u$7@N6@iiw$W2v$N[NY28@X2[i[x$:@N9@iiz$Z2y$N[N\2;@[2[i[{$=@N<@ii}$]2|$N[N_2>@^2[i[~$@@N?@ii$`2$ N\Nb2A@a2\i\$C@!NB@ii$c2$#N\"Ne2D@d2\i\$F@$NE@ii$f2$&N\%Nh2G@g2\i\$I@'NH@ii$i2$)N \(Nk2J@j2 \i \$L@*NK@ii$l2$,N \+Nn2M@m2\i \$O@-NN@ii$o2$/N\.Nq2P@p2\i\$R@0NQ@ii$r2$2N\1Nt2S@s2\i\$U@3NT@ii$u2$5N\4Nw2V@v2\i\$X@6NW@ii$x2$8N\7Nz2Y@y2\i\$[@9NZ@ii${2$;N\:N}2\@|2\i\$^@N\=N2_@2 \i\$a@?N`@jj$2$AN!\@N2b@2#\j"\$d@BNc@jj$2$DN$\CN2e@2&\j%\$g@ENf@jj$2$GN'\FN2h@2)\j(\$j@HNi@ j j$2$JN*\IN2k@2,\ j+\$m@KNl@ j j$2$MN-\LN2n@2/\j.\$p@NNo@jj$2$PN0\ON2q@22\j1\$s@QNr@jj$2$SN3\RN2t@25\j4\$v@TNu@jj$2$VN6\UN2w@28\j7\$y@WNx@jj$2$YN9\XN2z@2;\j:\$|@ZN{@jj$2$\N<\[N2}@2>\j=\$@]N~@jj$2$_N?\^N2@2A\ j@\$@`N@"j!j$2$bNB\aN  2@2D\#jC\$@cN@%j $j$2$eNE\dN  2@2G\&jF\$@fN@(j 'j$2$hNH\gN  2@2J\)jI\$@iN@+j *j$2$kNK\jN  2@2M\,jL\$@lN@.j -j$2$nNN\mN  2@2P\/jO\$@oN@1j 0j$2$qNQ\pN  2@2S\2jR\$@rN@4j 3j$2$tNT\sN  2@2V\5jU\$@uN@7j 6j$2$wNW\vN  2@2Y\8jX\$@xN@:j 9j$2$zNZ\yN  2@2\\;j[\$@{N@=j j^\$@~N@@j ?j$2$N`\N  2@2b\Aja\$@N@Cj Bj$2$Nc\N" ! 2@2e\Djd\$@N@Fj# Ej$2$Nf\N% $ 2@2h\Gjg\$@N@Ij& Hj$2$Ni\N( ' 2@2k\Jjj\ $ @N@Lj) Kj$2$Nl\N+ * 2@2n\Mjm\$ @N@Oj, Nj$2$No\N. - 2@2q\Pjp\$@N@Rj/ Qj$2$Nr\N1 0 2@2t\Sjs\$@N@Uj2 Tj$2$Nu\N4 3 2@2w\Vjv\$@N@Xj5 Wj$2$Nx\N7 6 2@2z\Yjy\$@N@[j8 Zj$2$N{\N: 9 2@2}\\j|\$@N@^j; ]j$2$N~\N= < 2@2\_j\ $@N@aj> `j%2%N\N@ !? 2@2\bj\#%"@N@djA cj%2%N\NC $B 2@2\ej\&%%@N@gjD fj%2%N\NF 'E 2@2\hj\)%(@N@jjG ij %2 %N\NI *H 2@2\kj\, %+@N@mjJ lj %2 %N\NL -K 2@2\nj\/%.@N@pjM oj%2%N\NO 0N 2@2\qj\2%1@N@sjP rj%2%N\NR 3Q 2@2\tj\5%4@N@vjS uj%2%N\NU 6T 2@2\wj\8%7@N@yjV xj%2%N\NX 9W 2@2\zj\;%:@N@|jY {j%2%N\N[ <Z 2@2\}j\>%=@N@j\ ~j%2%N\N^ ?] 3@3\j\A %@@N@j_ j"%3!%N\Na B` 3@3\j\D#%C@N@jb j%%3$%N\Nd Ec 3@3\j\G&%F@N@je j(%3'%N\Ng Hf 3@ 3\j\J)%I@N@jh j+% 3*%N\Nj Ki 3@ 3\j\M,%L@N@jk j.%3-%N\Nm Nl 3@3\j\P/%O@N@jn j1%30%N\Np Qo 3@3\j\S2%R@N@jq j4%33%N\Ns Tr 3@3\j\V5%U@N@jt j7%36%N\Nv Wu 3@3\j\Y8%X@N@jw j:%39%N\Ny Zx 3@3\j\\;%[@N@jz j=%3<%N\N| ]{ 3@3\j\_>%^AN@j} j@% 3?%N\N `~ "3A!3\j\bA%aANAj jC%#3B%N\N c %3A$3\j\eD%dANAj jF%&3E%N\N f (3A'3\j\hG%g ANAj jI%)3H%N\N i +3 A*3\j\kJ%j AN Aj jL%,3K%N\N l .3 A-3\j\nM%mANAj jO%/3N%N\N o 13A03\j\qP%pANAj jR%23Q%N\N r 43A33\j\tS%sANAj jU%53T%N\N u 73A63\j\wV%vANAj jX%83W%N\N x :3A93\j\zY%yANAj j[%;3Z%N\N { =3A<3\j\}\%|ANAj j^%>3]%N\N ~ @3A?3\j\_%!AN Aj ja%A3`%O\O  C3"AB3\j\b%$AO#Aj jd%D3c%O\O  F3%AE3\j\e%'AO&Aj jg%G3f%O\O  I3(AH3\j\h%*AO)Aj jj%J3i% O\ O  L3+AK3\j\k%-A O,Aj jm%M3l% O\ O  O3.AN3\j\n%0AO/Aj jp%P3o%O\O  R31AQ3\j\q%3AO2Aj js%S3r%O\O  U34AT3\j\t%6AO5Aj jv%V3u%O\O  X37AW3\j\w%9AO8Aj jy%Y3x%O\O  [3:AZ3\j\z%Aj j%_3~%O\O  a3@A`3]j]%BA OAAj j%b3%"O]!O  d3CAc3]j]%EA#ODAj j%e3%%O]$O  g3FAf3]j]%HA&OGAj j%h3%(O]'O  j3IAi3 ]j ]%KA)OJAj j%k3%+O ]*O  m3LAl3 ]j ]%NA,OMAj j%n3%.O]-O  p3OAo3]j]%QA/OPAj j%q3%1O]0O  s3RAr3]j]%TA2OSAj j%t3%4O]3O  v3UAu3]j]%WA5OVAj j%w3%7O]6O  y3XAx3]j]%ZA8OYAj j%z3%:O]9O  |3[A{3]j]%]A;O\Aj j%}3%=O]O_Ak j%3%@O ]?O  3aA3"]k!]%cAAObAk k%3%CO#]BO  3dA3%]k$]%fADOeAk k%3%FO&]EO  3gA3(]k']%iAGOhA k k%3%IO)]HO  3jA3+] k*]%lAJOkA k k%3%LO,]KO  3mA3.] k-]%oAMOnAk k%3%OO/]NO  3pA31]k0]%rAPOqAk k%3%RO2]QO  3sA34]k3]%uASOtAk k%3%UO5]TO  3vA37]k6]%xAVOwAk k%3%XO8]WO  3yA3:]k9]%{AYOzAk k%3%[O;]ZO  3|A3=]k<]%~A\O}Ak k%3%^O>]]O  3A3@]k?]%A_OA!k k%3%aOA]`O  3A3C]"kB]%AbOA$k #k%3%dOD]cO  3A3F]%kE]%AeOA'k &k%3%gOG]fO  3A3I](kH]%AhOA*k )k%3%jOJ]iO  3A3L]+kK]%AkOA-k ,k%3%mOM]lO  3A3O].kN]%AnOA0k /k%3%pOP]oO  3A3R]1kQ]%AqOA3k 2k%3%sOS]rO  3A3U]4kT]%AtOA6k 5k%3%vOV]uO  3A3X]7kW]%AwOA9k 8k%3%yOY]xO  3A3[]:kZ]%AzOAk%3%O_]~O  3A3a]@k`]%AOABk Ak%3%Ob]O!  3A3d]Ckc]%AOAEk" Dk%3%Oe]O$ # 3A3g]Fkf]%AOAHk% Gk%3%Oh]O' & 3A3j]Iki] % AOAKk( Jk%3%Ok]O* ) 3A3m]Lkl] % AOANk+ Mk%3%On]O- , 3A3p]Oko]%AOAQk. Pk%3%Oq]O0 / 3A3s]Rkr]%AOATk1 Sk%3%Ot]O3 2 3A3v]Uku]%AOAWk4 Vk%3%Ow]O6 5 3A3y]Xkx]%AOAZk7 Yk%3%Oz]O9 8 3A3|][k{]%AOA]k: \k%3%O}]O< ; 3A3]^k~]%AOA`k= _k&3%O]O? > 3A3]ak]"&!AOAck@ bk&3&O]OB #A 3A3]dk]%&$AOAfkC ek&3&O]OE &D 3A3]gk](&'AOAikF hk &3&O]OH )G 3A3]jk]+ &*AOAlkI kk &3 &O]OK ,J 3A3]mk]. &-AOAokL nk&3&O]ON /M 3A3]pk]1&0AOArkO qk&3&O]OQ 2P 3A3]sk]4&3AOAukR tk&3&O]OT 5S 3A3]vk]7&6AOAxkU wk&3&O]OW 8V 3A3]yk]:&9AOA{kX zk&3&O]OZ ;Y 3A3]|k]=&<AOA~k[ }k&3&O]O] >\ 4A3]k]@&?AOAk^ k!&4 &O]O` A_ 4A4]k]C"&BAOAka k$&4#&O]Oc Db 4A4]k]F%&EAOAkd k'&4&&O]Of Ge 4A4]k]I(&HAOAkg k*& 4)&O]Oi Jh 4A 4]k]L+&KAOAkj k-& 4,&O]Ol Mk 4A4]k]O.&NAOAkm k0&4/&O]Oo Pn 4A4]k]R1&QAOAkp k3&42&O]Or Sq 4A4]k]U4&TAOAks k6&45&O]Ou Vt 4A4]k]X7&WAOAkv k9&48&O]Ox Yw 4A4]k][:&ZAOAky k<&4;&O]O{ \z 4A4]k]^=&]AOAk| k?&4>&O]O~ _} !4B 4]k]a@&`BOBk kB&"4A&O]O b $4B#4]k]dC&cBOBk kE&%4D&O]O e '4B&4]k]gF&fBOBk kH&(4G&O]O h *4 B)4]k]jI&i BO Bk kK&+4J&O]O k -4 B,4]k]mL&lBO Bk kN&.4M&O]O n 04B/4]k]pO&oBOBk kQ&14P&O]O q 34B24]k]sR&rBOBk kT&44S&O]O t 64B54]k]vU&uBOBk kW&74V&O]O w 94B84]k]yX&xBOBk kZ&:4Y&O]O z <4B;4]k]|[&{BOBk k]&=4\&O]O } ?4B>4]k]^&~ BOBk k`&@4_&P]O  B4!BA4]k]a&#BP"Bk kc&C4b&P]P  E4$BD4]k]d&&BP%Bk kf&F4e&P]P  H4'BG4]k]g&)BP(Bk ki&I4h& P]P  K4*BJ4]k]j&,B P+Bk kl&L4k& P] P  N4-BM4]k]m&/B P.Bk ko&O4n&P]P  Q40BP4]k]p&2BP1Bk kr&R4q&P]P  T43BS4]k]s&5BP4Bk ku&U4t&P]P  W46BV4]k]v&8BP7Bk kx&X4w&P]P  Z49BY4]k]y&;BP:Bk k{&[4z&P]P  ]4BP=Bk k~&^4}&P]P  `4?B_4^k]&ABP@Bk k&a4&!P^ P  c4BBb4^k^&DB"PCBk k&d4&$P^#P  f4EBe4^k^&GB%PFBk k&g4&'P^&P  i4HBh4 ^k^&JB(PIBk k&j4&*P ^)P  l4KBk4 ^k ^&MB+PLBk k&m4&-P ^,P  o4NBn4^k^&PB.POBk k&p4&0P^/P  r4QBq4^k^&SB1PRBk k&s4&3P^2P  u4TBt4^k^&VB4PUBk k&v4&6P^5P  x4WBw4^k^&YB7PXBk k&y4&9P^8P  {4ZBz4^k^&\B:P[Bk k&|4&P  4`B4!^l ^&bB@PaBl l&4&BP"^AP  4cB4$^l#^&eBCPdBl l&4&EP%^DP  4fB4'^l&^&hBFPgBl l&4&HP(^GP  4iB4*^ l)^&kBIPjB l l&4&KP+^JP  4lB4-^ l,^&nBLPmBl l&4&NP.^MP  4oB40^l/^&qBOPpBl l&4&QP1^PP  4rB43^l2^&tBRPsBl l&4&TP4^SP  4uB46^l5^&wBUPvBl l&4&WP7^VP  4xB49^l8^&zBXPyBl l&4&ZP:^YP  4{B4<^l;^&}B[P|Bl l&4&]P=^\P  4~B4?^l>^&B^PB l l&4&`P@^_P  4B4B^!lA^&BaPB#l "l&4&cPC^bP  4B4E^$lD^&BdPB&l %l&4&fPF^eP  4B4H^'lG^&BgPB)l (l&4&iPI^hP  4B4K^*lJ^&BjPB,l +l&4&lPL^kP  4B4N^-lM^&BmPB/l .l&4&oPO^nP  4B4Q^0lP^&BpPB2l 1l&4&rPR^qP  4B4T^3lS^&BsPB5l 4l&4&uPU^tP  4B4W^6lV^&BvPB8l 7l&4&xPX^wP  4B4Z^9lY^&ByPB;l :l&4&{P[^zP  4B4]^l =l&4&~P^^}P  4B4`^?l_^&BPBAl @l&4&Pa^P  4B4c^Blb^&BPBDl! Cl&4&Pd^P# " 4B4f^Ele^&BPBGl$ Fl&4&Pg^P& % 4B4i^Hlh^ &BPBJl' Il&4&Pj^P) ( 4B4l^Klk^ & BPBMl* Ll&4&Pm^P, + 4B4o^Nln^&BPBPl- Ol&4&Pp^P/ . 4B4r^Qlq^&BPBSl0 Rl&4&Ps^P2 1 4B4u^Tlt^&BPBVl3 Ul&4&Pv^P5 4 4B4x^Wlw^&BPBYl6 Xl&4&Py^P8 7 4B4{^Zlz^&BPB\l9 [l&4&P|^P; : 4B4~^]l}^&BPB_l< ^l&4&P^P> = 4B4^`l^!' BPBbl? al'4'P^PA "@ 4B4^cl^$'#BPBelB dl'4'P^PD %C 4B4^fl^''&BPBhlE gl'4'P^PG (F 4B4^il^* ')BPBklH jl '4 'P^PJ +I 4B4^ll^- ',BPBnlK ml'4 'P^PM .L 4B4^ol^0'/BPBqlN pl'4'P^PP 1O 4B4^rl^3'2BPBtlQ sl'4'P^PS 4R 4B4^ul^6'5BPBwlT vl'4'P^PV 7U 4B4^xl^9'8BPBzlW yl'4'P^PY :X 4B4^{l^<';BPB}lZ |l'4'P^P\ =[ 4B4^~l^?'>BPBl] l '5'P^P_ @^ 5B5^l^B!'ABPBl` l#'5"'P^Pb Ca 5B5^l^E$'DBPBlc l&'5%'P^Pe Fd 5B5^l^H''GBPBlf l)' 5('P^Ph Ig 5B 5^l^K*'JBPBli l,' 5+'P^Pk Lj 5B 5^l^N-'MBPBll l/'5.'P^Pn Om 5B5^l^Q0'PBPBlo l2'51'P^Pq Rp 5B5^l^T3'SBPBlr l5'54'P^Pt Us 5B5^l^W6'VBPBlu l8'57'P^Pw Xv 5B5^l^Z9'YBPBlx l;'5:'P^Pz [y 5B5^l^]<'\BPBl{ l>'5='P^P} ^| 5B5^l^`?'_CPCl~ lA'!5@'P^P a #5C"5^l^cB'bCPCl lD'$5C'P^P d &5C%5^l^fE'eCPCl lG''5F'P^P g )5C(5^l^iH'h CP Cl lJ'*5I'P^P j ,5 C+5^l^lK'k CP Cl lM'-5L'P^P m /5C.5^l^oN'nCPCl lP'05O'P^P p 25C15^l^rQ'qCPCl lS'35R'P^P s 55C45^l^uT'tCPCl lV'65U'P^P v 85C75^l^xW'wCPCl lY'95X'P^P y ;5C:5^l^{Z'zCPCl l\'<5['P^P | >5C=5^l^~]'}CPCl l_'?5^'P^P  A5 C@5^l^`'"CQ!Cl lb'B5a'Q^Q  D5#CC5^l^c'%CQ$Cl le'E5d'Q^Q  G5&CF5^l^f'(CQ'Cl lh'H5g'Q^Q  J5)CI5^l^i'+C Q*Cl lk'K5j' Q^ Q  M5,CL5^l^l'.C Q-Cl ln'N5m'Q^ Q  P5/CO5^l^o'1CQ0Cl lq'Q5p'Q^Q  S52CR5^l^r'4CQ3Cl lt'T5s'Q^Q  V55CU5^l^u'7CQ6Cl lw'W5v'Q^Q  Y58CX5^l^x':CQ9Cl lz'Z5y'Q^Q  \5;C[5^l^{'=CQC^5^l^~'@CQ?Cl l'`5' Q_Q  b5ACa5_l_'CC!QBCl l'c5'#Q_"Q  e5DCd5_l_'FC$QECl l'f5'&Q_%Q  h5GCg5_l_'IC'QHCl l'i5')Q _(Q  k5JCj5 _l _'LC*QKCl l'l5',Q _+Q  n5MCm5_l _'OC-QNCl l'o5'/Q_.Q  q5PCp5_l_'RC0QQCl l'r5'2Q_1Q  t5SCs5_l_'UC3QTCl l'u5'5Q_4Q  w5VCv5_l_'XC6QWCl l'x5'8Q_7Q  z5YCy5_l_'[C9QZCl l'{5';Q_:Q  }5\C|5_l_'^CQ_=Q  5_C5 _l_'aC?Q`Cm m'5'AQ!_@Q  5bC5#_m"_'dCBQcCm m'5'DQ$_CQ  5eC5&_m%_'gCEQfCm m'5'GQ'_FQ  5hC5)_m(_'jCHQiC m m'5'JQ*_IQ  5kC5,_ m+_'mCKQlC m m'5'MQ-_LQ  5nC5/_m._'pCNQoCm m'5'PQ0_OQ  5qC52_m1_'sCQQrCm m'5'SQ3_RQ  5tC55_m4_'vCTQuCm m'5'VQ6_UQ  5wC58_m7_'yCWQxCm m'5'YQ9_XQ  5zC5;_m:_'|CZQ{Cm m'5'\Q<_[Q  5}C5>_m=_'C]Q~Cm m'5'_Q?_^Q  5C5A_ m@_'C`QC"m !m'5'bQB_aQ  5C5D_#mC_'CcQC%m $m'5'eQE_dQ  5C5G_&mF_'CfQC(m 'm'5'hQH_gQ  5C5J_)mI_'CiQC+m *m'5'kQK_jQ  5C5M_,mL_'ClQC.m -m'5'nQN_mQ  5C5P_/mO_'CoQC1m 0m'5'qQQ_pQ  5C5S_2mR_'CrQC4m 3m'5'tQT_sQ  5C5V_5mU_'CuQC7m 6m'5'wQW_vQ  5C5Y_8mX_'CxQC:m 9m'5'zQZ_yQ  5C5\_;m[_'C{QC=m m^_'C~QC@m ?m'5'Q`_Q  5C5b_Ama_'CQCCm Bm'5'Qc_Q" ! 5C5e_Dmd_'CQCFm# Em'5'Qf_Q% $ 5C5h_Gmg_'CQCIm& Hm'5'Qi_Q( ' 5C5k_Jmj_ ' CQCLm) Km'5'Ql_Q+ * 5C5n_Mmm_' CQCOm, Nm'5'Qo_Q. - 5C5q_Pmp_'CQCRm/ Qm'5'Qr_Q1 0 5C5t_Sms_'CQCUm2 Tm'5'Qu_Q4 3 5C5w_Vmv_'CQCXm5 Wm'5'Qx_Q7 6 5C5z_Ymy_'CQC[m8 Zm'5'Q{_Q: 9 5C5}_\m|_'CQC^m; ]m'5'Q~_Q= < 5C5__m_ 'CQCam> `m(5(Q_Q@ !? 5C5_bm_#("CQCdmA cm(5(Q_QC $B 5C5_em_&(%CQCgmD fm(5(Q_QF 'E 5C5_hm_)((CQCjmG im (5 (Q_QI *H 5C5_km_, (+CQCmmJ lm (5 (Q_QL -K 5C5_nm_/(.CQCpmM om(5(Q_QO 0N 5C5_qm_2(1CQCsmP rm(5(Q_QR 3Q 5C5_tm_5(4CQCvmS um(5(Q_QU 6T 5C5_wm_8(7CQCymV xm(5(Q_QX 9W 5C5_zm_;(:CQC|mY {m(5(Q_Q[ <Z 5C5_}m_>(=CQCm\ ~m(5(Q_Q^ ?] 6C6_m_A (@CQCm_ m"(6!(Q_Qa B` 6C6_m_D#(CCQCmb m%(6$(Q_Qd Ec 6C6_m_G&(FCQCme m((6'(Q_Qg Hf 6C 6_m_J)(ICQCmh m+( 6*(Q_Qj Ki 6C 6_m_M,(LCQCmk m.(6-(Q_Qm Nl 6C6_m_P/(OCQCmn m1(60(Q_Qp Qo 6C6_m_S2(RCQCmq m4(63(Q_Qs Tr 6C6_m_V5(UCQCmt m7(66(Q_Qv Wu 6C6_m_Y8(XCQCmw m:(69(Q_Qy Zx 6C6_m_\;([CQCmz m=(6<(Q_Q| ]{ 6C6_m__>(^DQCm} m@( 6?(Q_Q `~ "6D!6_m_bA(aDQDm mC(#6B(Q_Q c %6D$6_m_eD(dDQDm mF(&6E(Q_Q f (6D'6_m_hG(g DQDm mI()6H(Q_Q i +6 D*6_m_kJ(j DQ Dm mL(,6K(Q_Q l .6 D-6_m_nM(mDQDm mO(/6N(Q_Q o 16D06_m_qP(pDQDm mR(26Q(Q_Q r 46D36_m_tS(sDQDm mU(56T(Q_Q u 76D66_m_wV(vDQDm mX(86W(Q_Q x :6D96_m_zY(yDQDm m[(;6Z(Q_Q { =6D<6_m_}\(|DQDm m^(>6](Q_Q ~ @6D?6_m__(!DQ Dm ma(A6`(R_R  C6"DB6_m_b($DR#Dm md(D6c(R_R  F6%DE6_m_e('DR&Dm mg(G6f(R_R  I6(DH6_m_h(*DR)Dm mj(J6i( R_ R  L6+DK6_m_k(-D R,Dm mm(M6l( R_ R  O6.DN6_m_n(0DR/Dm mp(P6o(R_R  R61DQ6_m_q(3DR2Dm ms(S6r(R_R  U64DT6_m_t(6DR5Dm mv(V6u(R_R  X67DW6_m_w(9DR8Dm my(Y6x(R_R  [6:DZ6_m_z(Dm m(_6~(R_R  a6@D`6`m`(BD RADm m(b6("R`!R  d6CDc6`m`(ED#RDDm m(e6(%R`$R  g6FDf6`m`(HD&RGDm m(h6((R`'R  j6IDi6 `m `(KD)RJDm m(k6(+R `*R  m6LDl6 `m `(ND,RMDm m(n6(.R`-R  p6ODo6`m`(QD/RPDm m(q6(1R`0R  s6RDr6`m`(TD2RSDm m(t6(4R`3R  v6UDu6`m`(WD5RVDm m(w6(7R`6R  y6XDx6`m`(ZD8RYDm m(z6(:R`9R  |6[D{6`m`(]D;R\Dm m(}6(=R`R_Dn m(6(@R `?R  6aD6"`n!`(cDARbDn n(6(CR#`BR  6dD6%`n$`(fDDReDn n(6(FR&`ER  6gD6(`n'`(iDGRhD n n(6(IR)`HR  6jD6+` n*`(lDJRkD n n(6(LR,`KR  6mD6.` n-`(oDMRnDn n(6(OR/`NR  6pD61`n0`(rDPRqDn n(6(RR2`QR  6sD64`n3`(uDSRtDn n(6(UR5`TR  6vD67`n6`(xDVRwDn n(6(XR8`WR  6yD6:`n9`({DYRzDn n(6([R;`ZR  6|D6=`n<`(~D\R}Dn n(6(^R>`]R  6D6@`n?`(D_RD!n n(6(aRA``R  6D6C`"nB`(DbRD$n #n(6(dRD`cR  6D6F`%nE`(DeRD'n &n(6(gRG`fR  6D6I`(nH`(DhRD*n )n(6(jRJ`iR  6D6L`+nK`(DkRD-n ,n(6(mRM`lR  6D6O`.nN`(DnRD0n /n(6(pRP`oR  6D6R`1nQ`(DqRD3n 2n(6(sRS`rR  6D6U`4nT`(DtRD6n 5n(6(vRV`uR  6D6X`7nW`(DwRD9n 8n(6(yRY`xR  6D6[`:nZ`(DzRDn(6(R_`~R  6D6a`@n``(DRDBn An(6(Rb`R!  6D6d`Cnc`(DRDEn" Dn(6(Re`R$ # 6D6g`Fnf`(DRDHn% Gn(6(Rh`R' & 6D6j`Ini` ( DRDKn( Jn(6(Rk`R* ) 6D6m`Lnl` ( DRDNn+ Mn(6(Rn`R- , 6D6p`Ono`(DRDQn. Pn(6(Rq`R0 / 6D6s`Rnr`(DRDTn1 Sn(6(Rt`R3 2 6D6v`Unu`(DRDWn4 Vn(6(Rw`R6 5 6D6y`Xnx`(DRDZn7 Yn(6(Rz`R9 8 6D6|`[n{`(DRD]n: \n(6(R}`R< ; 6D6`^n~`(DRD`n= _n)6(R`R? > 6D6`an`")!DRDcn@ bn)6)R`RB #A 6D6`dn`%)$DRDfnC en)6)R`RE &D 6D6`gn`()'DRDinF hn )6)R`RH )G 6D6`jn`+ )*DRDlnI kn )6 )R`RK ,J 6D6`mn`. )-DRDonL nn)6)R`RN /M 6D6`pn`1)0DRDrnO qn)6)R`RQ 2P 6D6`sn`4)3DRDunR tn)6)R`RT 5S 6D6`vn`7)6DRDxnU wn)6)R`RW 8V 6D6`yn`:)9DRD{nX zn)6)R`RZ ;Y 6D6`|n`=)<DRD~n[ }n)6)R`R] >\ 7D6`n`@)?DRDn^ n!)7 )R`R` A_ 7D7`n`C")BDRDna n$)7#)R`Rc Db 7D7`n`F%)EDRDnd n')7&)R`Rf Ge 7D7`n`I()HDRDng n*) 7))R`Ri Jh 7D 7`n`L+)KDRDnj n-) 7,)R`Rl Mk 7D7`n`O.)NDRDnm n0)7/)R`Ro Pn 7D7`n`R1)QDRDnp n3)72)R`Rr Sq 7D7`n`U4)TDRDns n6)75)R`Ru Vt 7D7`n`X7)WDRDnv n9)78)R`Rx Yw 7D7`n`[:)ZDRDny n<)7;)R`R{ \z 7D7`n`^=)]DRDn| n?)7>)R`R~ _} !7E 7`n`a@)`EREn nB)"7A)R`R b $7E#7`n`dC)cEREn nE)%7D)R`R e '7E&7`n`gF)fEREn nH)(7G)R`R h *7 E)7`n`jI)i ER En nK)+7J)R`R k -7 E,7`n`mL)lER En nN).7M)R`R n 07E/7`n`pO)oEREn nQ)17P)R`R q 37E27`n`sR)rEREn nT)47S)R`R t 67E57`n`vU)uEREn nW)77V)R`R w 97E87`n`yX)xEREn nZ):7Y)R`R z <7E;7`n`|[){EREn n])=7\)R`R } ?7E>7`n`^)~ EREn n`)@7_)S`R  B7!EA7`n`a)#ES"En nc)C7b)S`S  E7$ED7`n`d)&ES%En nf)F7e)S`S  H7'EG7`n`g))ES(En ni)I7h) S`S  K7*EJ7`n`j),E S+En nl)L7k) S` S  N7-EM7`n`m)/E S.En no)O7n)S`S  Q70EP7`n`p)2ES1En nr)R7q)S`S  T73ES7`n`s)5ES4En nu)U7t)S`S  W76EV7`n`v)8ES7En nx)X7w)S`S  Z79EY7`n`y);ES:En n{)[7z)S`S  ]7ES=En n~)^7})S`S  `7?E_7an`)AES@En n)a7)!Sa S  c7BEb7ana)DE"SCEn n)d7)$Sa#S  f7EEe7ana)GE%SFEn n)g7)'Sa&S  i7HEh7 ana)JE(SIEn n)j7)*S a)S  l7KEk7 an a)ME+SLEn n)m7)-S a,S  o7NEn7ana)PE.SOEn n)p7)0Sa/S  r7QEq7ana)SE1SREn n)s7)3Sa2S  u7TEt7ana)VE4SUEn n)v7)6Sa5S  x7WEw7ana)YE7SXEn n)y7)9Sa8S  {7ZEz7ana)\E:S[En n)|7)S  7`E7!ao a)bE@SaEo o)7)BS"aAS  DATA `6?soMM@M M]%M *6̷2c"ӳ)6{")ūVV՗@cVH©VճHVLVMİH̤2׺2.̷2V2ȴ2 -߶2L,cNЧ<=_HeW]<,]%,NSb@)@@Y@Sb,ғWUnM @ߓW,ӽU@,ϫ@nM-@VVpV@)@ݴVHHH5VVlHMMM9HHGe@MrMMGer?>@@,V VV@V@@VMMM@@g@VMQMSN@6~?@VSNSN]M~?@`~?V]MN]MM@4MMMoMNMv_@@@@V VV@V@X@V@͠@X@V@͠@@V@@@@V@@@X@V@͠@X@V@͠@@V@@@@V@@@@@V_@V@V V%%%"k"G`"$`٪'M MM3LL`L#`Ԫs`)_))~%%%_ :`  eӄclH HH1#'`ڪE`EE...B o^  )  &  '+++&+++&')  &  'Hll45&v5&4H5&|/!t̶224WE/長2ķ2-2:E/?`HhH7Zi'HHHM(b4&g@@_l(2M :s:[$l;l2'2:pTUZ/;|ヌe >>L@@_@_? h hh?ff_f?_??@?@ @_?  ?_ ?  _ 1_112C2 2/ //C,,_,,_,,0C0 0 C  _ C_ C_2 22C22_2Oa7D G   FF   G DD G   F  F   G E;۠pf 2 e,_Mՠ  N__N ._...M. . N__ M   M՞__M՞   N__N  M_ N_ N__MՒ 1_111C1 1\ \\C]]_]w_wwuCu uw wwCss_s\_\\^C^ ^4 44C11_12_224C4 4_ __C\\_\t_ttxCx xu uuCww_wi_iiiCi i? ??C>>_>*6 +  -..   * .   D G   F   F   G Dܕ`66|[ MՑ__M " ""M$$_$_M M__M  M՟__Mՠ  M__M * **M**_*;_;;=M= = M_ M՟_Q QQBQQ_Q!_!!"B" "_ B . ..B.._.]_]]\B\ \2 22B22_22_222B2 21 11B11_1._...B. . B_ B""_"2 22B22_2 x83s xW   D G   F    F G D     D G   F F   G E   46 J__J _J  J_ J__ _ J _J  J_ J__J _ _  J FF`F V J  ` J_ J___J _J  L `GGVG  J_ _  J  ŸB ( |  Ÿ*C Ÿ Ӫ ( }Iک Ÿcϑ`]]6Z]]]6Z]MM@]]ԃ]8ZM1VCp2622@2OVV'2\]%]]k2*22]MTVVr3VM@M[,M?%2#2W?,%2q;,C%2,m&2iM@'2D&2O,q<.2-cW@  SMMVM:MӍMMjMMVM:MӍMMjMMMMZM@MMMMMZM@MMM@MiMTMMMM@MiMTMMAVȟY~YY` Q'Q1@Qv;Q'Q1@Qv;QwQ1@QA_>>BSB B)_))+S+ +z zzSww_wv_vvxSx x&_&&%S% %^ ^^S\\_\]_]]^S^ ^& &&S%%_%x xxSvv_vv_vvySy y _ #S# #] ]]SZZ_Z]_]]]S] ]# ##S''_'v vvSss_sv_vvxSx x' ''S''_'B BBSBB_BVYVsWN %_0_000%0 0 &  _ &ո_+ ++%,,_,_%Ս M MM&MM_M &ՙ__%  (_X_XXY)Y Y_____)_ _, ,,(,,_,_)՝ *Ն_j jjii_ig_ggh h hh hh ii_iq qq!qq_qE_EEE E E_  Q QQRR_R_!՞   _E EE DD_D_(Ն W WW(WW_WL_LLL(L L8 88(77_7 (Մ__' _(  '_5_555(5 5M MM(MM_M5 55(66_6 (Ն_E EE EE_E  __!ա R RRSS_S_  E_EEE E E (__' 3 33(33_3L_LLL(L L5_554(4 4 '__(   yD @AT+44V L  ?$M:ǵyڎɂ l % <]ɨu9 k ¨ fB? Э xbufƨ88Ũ8SQWo# # N 7f,*~  , 0YM ) )d6ke pBBBBI ʕ ]1SU. ׇ f r;E*F7K|E3&&&%8883 0I2 W V P %_0_000%0 0 &_ &չ_+ ++%++_+_%Ս M MM&MM_M &՚__%  (_Y_YYY)Y Y____^)^ ^, ,,(,,_,_)՝ *Յ_j jjjj_jh_hhg g gh hh ii_iq qq!pp_pE_EEE E E_  Q QQQQ_Q_!՞    _ D DD EE_E_(Ն W WW(WW_WL_LLL(L L8 88(77_7 (Յ__' _(  '_4_444(4 4M MM(LL_L6 66(55_5 (Շ_E EE EE_E  __!ա R RRSS_S_  E_EEE E E (__' 3 33(22_2L_LLL(L L4_445(5 5 '__( J v  M$( z J  yD  z ?W 0 < ' ʔryAH qL8T88 0 (PV1) p ˞ p y A @_h 7 - 5  k } S;.;S;Um_ ; O % ~ *e?úE3&J&;& 8<8w8.3۰C6 0I a2WVP %_0_000%0 0 &  _ &ո_+ ++%,,_,_%Ս M MM&MM_M &ՙ__%  (_X_XXY)Y Y_____)_ _, ,,(,,_,_)՝ *Ն_j jjii_ig_ggh h hh hh ii_iq qq!qq_qF_FFE E E_  Q QQRR_R_!՞   _E EE DD_D_(Ն W WW(WW_WL_LLL(L L9 99(99_9 (Յ__' _(  '_5_555(5 5M MM(MM_M5 55(66_6 (Ն_E EE EE_E  __!ՠ R RRSS_S_  F_FFE E E (__' 3 33(33_3L_LLL(L L5_555(5 5 '__( 9$N2NN L  ?Y%|^$ M  : k ǵ yܕry?Эxbuf88Ũ8SQ l r ƾ 6kWo#1^֐U'+y#N73 %M @ QNT4Lp:y  ׇ f } j   * e?úE3888!٢a * QQQ$[[_[4_44x<T< <<+ <<|!W `WW )- )){+ +`,_ySp \                     V`   V V ݰ V  "  /  V%%T%G%Ǡ%%VV   v V ! "V"""" ""V"z"#l#f#000//V/ `V`m``E`!` V  ! "  V ]  ӱ V\ͱ" V11G1#11V1n  ! ((('''VV  1" V Ƞ V J V- !  ݰ VV   V_" "  vϟvv |s111cKK?K0`Ɵ`` 1H11lVVVĀ,ڀ,,%%%###... M ```r3rr  ? BBBPPP;M MMoTTnTkJDu< uE/EE999;V;P;>>>/O/ /2E22I i L @ @@`//z/'''!!!qS...`d``]~]]Y>P>H>u+WW[Q[[NNN&ib&\&+W>ߛQSנ C++ߞ+R?LLLoӲ+++k|NNN\\\G--<-~4R4D5]p@PrNz888>y{ǁ!33m3,,,9+99/n\G 9 U n/g}//@@@o@@@)݀ˮN,N N/~/5/Q---&-&"&;MLrZx>|CCC2hmfoe44I4l9;;; Së&lz:m,_߆ 222AAIA222.%.:.&E#&&ƙ G- nkDGGGjFɯFF4X442uW22:::77z7+:++Uooo|HyI<m<<ɰ;7;;қe,vOOOJJvJL'*'T'M9991L..!j.//ʑ/3q33p:w ޚ-"""),))Z++Ɇ+!/!!8RY)))JJJ8JTJ,,,1&7&&x$q$$>""""">"!9::n:J>U,y(̇a11Þ1 9+sd:F:ȫ:9`9:3*k###< ' D y U<0pĭ 3555g%ʮ ZŞ )O׫j111  , Q 7?Ɂ??~ ::[:RR9R4))=) IG  ܛH##n# F /~;M;M;;CiCCRg'gHgep}===I { d ""v"llS s^qX:qԦ .8j>ʛ>>I8M(d/O/n/,-,¯,JMM%%%Tz v O ˁ f"\gr#ٜ##  999E666u6n6Ƞ6Dn'g'M'jY4"\"{"!6ju۬R_V/// 3M5MqMTTT:::1"31-1{9299whhhsBDެTCCC GGʌG׍K""J"V&h&&׈@vRPPcP,)FFF >T>>""))w)GA[A"Au@@@:+:A:!SSYSpppi9Ձ99rteutt^^d^ZbbCbTMT)T9 99LLwɁ:::C CC,K,,v L_܅y y y [[JJ}JMMM9t9P9^&S&&~ssŨsJVVVgaggm?mTm6RRR9H;HH&֑k(HKOʠ1lU1100X011O1nVVHV}l}}:Ć::-U:UnU'2'ߞ'TTҚTQ'{:''i^iiT__Z_nnEnX%_%%r$=$$G}G6G2y2A24l44i _ ! chc+cd0dd։" b""]<qak77p74}4q4ˎ2F2x2ş333M5<5n5jKEKKEEE}JJHJw/4 u*&+ U1,1ݔ15U5=5~$ $8$>><> 2?22{111==;=333F4J4941X1X1&&g&L.,ڎ"ǂ""\/\:\WeqeDe***[OVj~,,,>G>[>o)j)s) ++ׄ+p"""QQ>Q&|=&&IKII:::9W9e9999NqN|N1E7G 9 4$ $ %op%^%д11S1DdDD)׉))t%%%~'ZC''+)+%+@o@H@F''FYF O ~߸ { F%%%̶%Ӏ=-d=0=P6P:P000' 8a G__|9  V8$`8    !`!!0 `__###0 }`Ǫ `  \  _ 9_999399 * w`Yj`:-#####_#_`g000433`3(`(( *W* *. ..Y/X/_/t`Ϫ&J ...8.!.`.ŪE`EEE6EE$$$'&&`&` $ & s_ Z_)_)))2))e`3`ĪH _p%   k~_:# ##M## `#+`+ê+"i)u_}; ;;WO_l_v" fm w i` 0`Ҫ< x` L9 99TE_bA^AAt:::r DD*D%a%%!6!!033G3$  R NUNNQx,Rfn^Aq>3d>>k#l#]#pHHH`7DkDDܨi<GNw@]@@YS9s99  z' g.{...M //+/b***#6lbVMXʷqWժ#ԍ SzS"S_:x:s:baə3Ј;e...dȋhދԧ//~/fЙS>_"OF›m9z:Fћ1z11GeTG0Gyy Ljpj6jQ@ @@| w s2 NџK L 6Zd66^Ԍ46r44111c>>>  > XQpv!؛:3Дlǜo$S.AVA A<Fo6wQ&|QTQxD*DDeMK45333??3...ݔ0EXcElE PZw ( x+2җfmEe_"[ FbF F '` ߪ 2?? `? _ - --ds% J`JªJYYY8,,_,. `..y) % pQC`5`55'O' ' ? <'''''_')`))B+`_~  : ::J Z  ,`?V _0 _\ 7 77`66_6 e~_*:`:: ;r;# ;  T_ }`Q##`#ê M636_6q^8y_y'`y!???R RR!# `«;! $ X`X̪XZJZ" Z`ت: { _ Ջ! `ª_@~b8 _>~g6 L_LLL!LL@w@N`@ 555,! ,,E*G*B`*u uu<9\9 9;`襁,00`0! Dy_^97`9 9`u _ G ~:_::{:$: :հ__qU>%`>Ϊ>v0v v`- $ GGmG99I9*M~a7 = " m ڟ###x  ---7L߬Nޡ͞|f\3\\TMmMMMMMD~DDI$+^{SASSWFF%F5PPPK66u6_XXXb{Tܪ ? *ϟ%$%%a;L;;55ƪ52#̀##柖1Յת\\w\NPPP?ZLLOLL|@||[FFgFTI{ٝs '  ,h,,ϳM p +0E>EW̦x11a1!  p9 %  Ԥt8![!H!KKK{сdII I{QQQ«?>"L>>>B~T:::DDDz' t ~ E O/' ''٪|3\>e>d>ps/$h$ $"T/TTh>nnnDR RR`zJJJxb?bYbIIsIJe̹Jn) b_O7x7E76;;5;[~[[T*TlH^q=4O466Y6HAwH1HX &z;zz: + =9&99%G%`%4yxy[y婂߂Q###@2@K@.ڭԭKo8o8<8? A //o/3J b>>>q22+2 ! ٹ?u??ث~,e,,-QQQ66K6רiii}@y@c@U k GGG߭ccqct'''b[%%%nJ(IӐ؝2]2X2s6 ];ě;;v K ; -  G iךl)Sr E(333Ձ,҆,, & D 0F00S-d #9͟99sX , ;vw+Į9   ͮ.v.". ֌ / S #EXExE''f '8aed $ m S333q7p77  H <9<G<=z==:B:Z: % 63!;@`nE9 Қ ~ _p~okK$77,7Q: A * ggUg A A : 1 X {P|99V9!%%K%OOOw0m000J++,Y,,)tA'>tBxԡoo>G>JJJ)x.N.. 3233M"z"]"p ' M+:=g=&=1>11a%Q%%y'JJ9JP9^9'9 gjggD= |==cDDD*I*X*Yp|pԜpN9fofEf)kE=9N-ƣ-{-׆ӆޠL^LL '&T&-&5nV ` g `L LLy7t7" 7/ ~&}&_& SaX` `:Վ Tb`6X XXN" 1`X` ^ՏEՏ X'`XX3gg(`gت MZ  `po hC"e ;`;;?T?_? i't'T`'`7ղ:::09 9`9  Z "`Ӫ`a|Ɓ8|8&`8?_??B<Վ  j ӷ`@B @^@ugu u,8`,,:`êB_}<k<<]""@"zvӊ<<-<='ppp77o7m...68^G(#:#7#afa]aHaHTHjcOuBpۡ"OlZ:0}A> vԨ12<p c777a=xBPBB***X,,,zU`u#ӟΪ#@@@>>> j~ s $5tY<cnccxxxWWWrrr9p^ #***KKdKc tHHjHDDD|wԧgm](\\=\-. .).|N```\\\..4.e$X$$ }YMBiBBt^3^^ I@IIӜ$$ $pN-8--t,ppisiiL///l+l֟lw1 N]NNƧ g@r''-'^4mU4&4rE>EuEU##\#///z""=@I@@ ##!#H >*4:k:/:v - C ~FW:/^//N&&&-8- -pwkkk//Ƹ/%lVllXlU#b###j__]_< X X"?X6p6"699F9au Wu8uI..y.K0Ԣ00]5 b z  { GS w S ۧ/}//] m7  - +++ ś z  s {en ~& V Cv@y'>''M&7&H&j;;;>>>  " !j!!###Ǫ y | ; "%">"~!!!  ب y++z+1 C ///K888(|!))Ԯ) a Λ/i7#"2 j s 'ۀ'7' y 4v}==u=%I XOXfXMMMvOOOEEE[M[[wPoyuCמ, f ٯ W\*K**989>9D<'/}QZ $ ž ن'ˮ: I::OVkM///4 X 9m9`9  /Ú//R;a;I;!4447%77--k-VKm$cc\d hn%/%%>>>F? ??C##k#oTF+FfF3V33)))PgSgg ]]ߙ](vvv.ic&|&&%%K%WWNW00D 0T̟ق'4'{'...@-x--00a0v | =$ )ljX{`=(m((///<333~33֝3k/// lh V+̈́ˡ ԛCfa/ɀ// N|  ;Rپ IIwIt ;\ &&& s ͩ M})))$<$$T$$i$N ŗ+jyjg}٤HU000B ڐ 5$5>5 t kp.X..x ͔ ~ ,,s,Z)))D)}$IIIG7  ϧ "h{hh%#%1%m|7|e|rxhPPP*{hzhrh*c$$$PPPY8WWWjӒ>>>5%%%)a~2Q22%p ! w f^''֝'@n+a++MM^MQ{2222pp5pj////d999% ?R&x!kIr<<ժ<p'B,",6,ASUwRRHR a 999hɒ  C<< %)|i'8'E'bbbBBB!!V!PPiPC\]+\q\+H-p###00033%3Z,,&,5 5a5p8Ӽ88?..߆.$#$$*++'+1PPPPPDrPbWE|KiKKd UXU+U/n//^^^// /SNN۵N7#<#w#nmnnRY5YYC:C7CX;ˁ;;ǸBBLBS<<<:555|'+888E!^! > k>?n8nznYYY*)*7*cMvnMM{$$|$e_y <߰LuucuEVHV΋U666 [[[:H:u:7222)))&&&>X>>ŭf)>)ɖ)pë Jʢcb~*%AzhvZ33?3c'''A$h$$Ź ٧ $ x-`bEEģEJ*G6GG__?_˻Z&ZEZמ77)7uC'('?' ^% m[OuOOR:RR+++lnBHHH6KKK###ݵ!7Zͽ s/Ξ  `tt0]ơGGţG*KKKa?']''@888 %%q%9MGfzGGGGG6... D e /K V Р,:c,2,۰  ////ZZZ \\O\2***9/pGƊGmGwBBBJ555)3###$"$q$+l++~,,,;;[;vJ.JJ7TG<.M..`P]PPQQ9Q#m&##N.җ g Z %%%'\Z\\m,mm F dt?"%%%7%%000ǹ(q(($#DoQjQǡQ("UVXV<^ / ' $6=665{ #'##`Հ) , - -`-ƪ _ V __s~, . yc_ `g _<_$]~4, ,,H00_0# `##"=" "# ##G#-#`#Ϊ a`` P N  ] ``ê1 =_+`++  2A22 @`%_%%&/&#`&ڪH HH`7_f SnX` ` Ϊ %~k= ` t ̀  & q  ` _hMC###3# # `#Ȫ_J~L?`8`88 8?87 ! mv`H(`ߪ/77708 8`8` y) _'m~ S _ m`C   R`  # ##P##_#%_%%*N* *`>sh>>#'1'k';-l  Z \_OzOO00"=""ICC CַԷԠz3P3:3ljynyy###}]'h4{4>4_66)6%)!)) z&L=Yq `x  S2QN!000^7C77=:i=="eVXV̞V .Űv Haăiuiim/9//))<)%F%i%??? N 0B0V0tgggqƸwެ22&2!!×!c NRRQRpW2`'ѝA@n@@m66$6(K((U&olooZkDkk-11P1 @X@i@a@@I@uw@Е y ^QpXOXÞX+&733 c3g3&&f& >_>e>ɤ ) q \d}.11ϩ1Fk)X))gu%h%%p?h_gQgg2*](i]] ^''"'R 6l6٤6 j^m^m^xWxϡxA|ApAɂF ] a ` `     _ )`)ƪ) '4''`Ǫ.`..0^0 0>>>B@ @_@ Q`  v!!2 !B `BB4`Ъ%= %%#W# #&&&8'' `(O`OO2#`۪4 ̀`|+"""_6`66q 0`._..q.q.$ .u`Fb ''`' [[$ \\\Զ7`Ϫ_zQQQMX_ԩ} ,y yy EEsDD_D)))",Y,.`,E y_^_ Պ &`תw$ wwMww_w+_++i!u!> !:_:=:~l#l l%_pEEEXX_X  f ~_1t_tttt t' `''P|ՠguNu3u}}~}^(w~?~~?b?l? s  V 1`"ҟ""#}x+H+)+f"G`G|G` MMM c3H33IBII###//z:/zzzMgMJM [ @ 8π8)8iIIIM{ Ӝ#1##UT@@h@8 w]t]\]xOOOzߞNNNŃ;;b;{,,,b8#88B焑 CCC2bVbb#|8s8Q8ޥ5XG8?%l%%Мcҟcc?~b4bb{eeԞe {~{?{ѪĂߪ2߂کxddd%% %G>GܠGi""2"ʂ 'unnQn`ԀnӀXUOOO'8''333+G6GG!O?OO- 5gVYHYiY ME ҸbB#BB#n##ަ^^C^rErr/l77K7U| V ?___5ښ 5***f1fQfcc&ci''/'T2 2Q2Nyyy1lu6v׹Iݞ hhhuu+++J6JJ" aCagai  |(DD?D,N{{{;LLϠL N &/*'**#"'"ͯ"#8#$  _::g;Jl//g}//,o,,f|#۟# #%3%% !  )X))m  % ##z#+   a@y///#>>d>q''u'(%w%U%@ ˂ f Tߔ  CE [ f r 55 5m +++$$g$t,,9,_!""դ"9###(%((e2T~Ky$$$!BOϞZM,MxM 9L\C=Hޡ+b++,Y f 0 ʩ=ݡWu)u$uVZ~3Y3i3g=ݰM $P ( %E!|bbFbHHH+^++ɫ57EEEްE e  TޘT.T$$$ 888ˉ$W$$*F*@*qwxA\AA}FLFF   ٱGGG!...@7C77222_܍U&\z\\4/44+k++)^S(5  m W w  Fd , %d%o%=h=K=5>)>;>).r.2.ūΫ8ZZ,Z"""}w}m}ARRR ? /BXXɫXZp+F+"+;;;<d<<-0AM00zv+;p+r+i ;NпՑ+E'EEGCGG&&&e~_:D`DªDu-u `uê_} Y^$G `NNN ?Ռi_`YՅ +) ++|**_*P_PPs6ss+ `ƪ8Հ__W!WW V11_1z ` ERyK^k`VVV`)}eTu uuR5~5_5L g,,_,w_wwsbs s  j g+g`gԪ S[`[[bs yn ͍/ <{垡 f᜛Gߛm?$ߐh9]L~˾,?,>,yp[pp8^XX;X2A2N2 a rdr r0ŸX>s> ><#aayabMMMMMMMMMMMMMMMdMMMdMMM(MMM(MMMZMMMZMMMMMMM&M@M 0M&M@M 0MBFM@MMBFM@MMtM@M9MtM@M9M0M@M>M0M@M>MAM@MMAM@MM&M@M 0M&M@M 0M~MMM~MMMMMdMMMdMMM(MMM(MMMMMMMMMZMMMZMMMMMMMMMMMMMMMZMMMZMMM(MMM(MMMdMMMdMMMMMMM~MMM~MMMAM@MMAM@MMBFM@MMBFM@MMtM@M9MtM@M9M&M@M 0M&M@M 0MOM@MMOM@MM0M@M>M0M@M>MBFM@MMBFM@MM0M@M>M0M@M>MtM@M9MtM@M9MAM@MMAM@MMOM@MMOM@MM&M@M 0M&M@M 0]Hg2%2@]+6I|Ju׳Z`p_2 H]V@CCM؞Q0]Ǘs':Т0(xO,uLffUU ى|C0@@V_C ȟ(.[@ M Mk M@@-oV% R X Z Z6ZV+V^VV RCUU  ,.p  ==2= )n ) )Vm?CDATAhp= material_indexds=w=2.select_poly ?w=2sharp_face ?x=DATAds=L%DATA% ?DATA% ?DATAt= !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}         " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |  !!! ! !!!!!!!!!$!'!*!-!0!3!6!9!"A"D"G"J"M"P"S"V"Y"\"_"b"e"h"k"n"q"t"w"z"}""""""""""""""""""""""""""""""""""""""""""""### # #######"#%#(#+#.#1#4#7#:#=#@#C#F#I#L#O#R#U#X#[#^#a#d#g#j#m#p#s#v#y#|############################################$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%%%% %#%&%)%,%/%2%5%8%;%>%A%D%G%J%M%P%S%V%Y%\%_%b%e%h%k%n%q%t%w%z%}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& & &&&&&&&"&%&(&+&.&1&4&7&:&=&@&C&F&I&L&O&R&U&X&[&^&a&d&g&j&m&p&s&v&y&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''!'$'''*'-'0'3'6'9'<'?'B'E'H'K'N'Q'T'W'Z']'`'c'f'i'l'o'r'u'x'{'~''''''''''''''''''''''''''''''''''''''''''''((( ((((((( (#(&()(,(/(2(5(8(;(>(A(D(G(J(M(P(S(V(Y(\(_(b(e(h(k(n(q(t(w(z(}(((((((((((((((((((((((((((((((((((((((((((())) ) )))))))")%)()+).)1)4)7):)=)@)C)F)I)L)O)R)U)X)[)^)a)d)g)j)m)p)s)v)y)|))))))))))))))))))))))))))))))))))))))))))))*** * *******!*$*'***-*0*3*6*9*<*?*B*E*H*K*N*Q*T*W*Z*]*`*c*f*i*l*o*r*u*x*{*~********************************************+++ +++++++ +#+&+)+,+/+2+5+8+;+>+A+D+G+J+M+P+S+V+Y+\+_+b+e+h+k+n+q+t+w+z+}++++++++++++++++++++++++++++++++++++++++++++,,, , ,,,,,,,",%,(,+,.,1,4,7,:,=,@,C,F,I,L,O,R,U,X,[,^,a,d,g,j,m,p,s,v,y,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- - -------!-$-'-*---0-3-6-9-<-?-B-E-H-K-N-Q-T-W-Z-]-`-c-f-i-l-o-r-u-x-{-~--------------------------------------------... ....... .#.&.).,./.2.5.8.;.>.A.D.G.J.M.P.S.V.Y.\._.b.e.h.k.n.q.t.w.z.}............................................/// / ///////"/%/(/+/./1/4/7/:/=/@/C/F/I/L/O/R/U/X/[/^/a/d/g/j/m/p/s/v/y/|////////////////////////////////////////////000 0 0000000!0$0'0*0-000306090<0?0B0E0H0K0N0Q0T0W0Z0]0`0c0f0i0l0o0r0u0x0{0~00000000000000000000000000000000000000000000111 1111111 1#1&1)1,1/1215181;1>1A1D1G1J1M1P1S1V1Y1\1_1b1e1h1k1n1q1t1w1z1}11111111111111111111111111111111111111111111222 2 2222222"2%2(2+2.2124272:2=2@2C2F2I2L2O2R2U2X2[2^2a2d2g2j2m2p2s2v2y2|22222222222222222222222222222222222222222222333 3 3333333!3$3'3*3-303336393<3?3B3E3H3K3N3Q3T3W3Z3]3`3c3f3i3l3o3r3u3x3{3~33333333333333333333333333333333333333333333444 4444444 4#4&4)4,4/4245484;4>4A4D4G4J4M4P4S4V4Y4\4_4b4e4h4k4n4q4t4w4z4}44444444444444444444444444444444444444444444555 5 5555555"5%5(5+5.5154575:5=5@5C5F5I5L5O5R5U5X5[5^5a5d5g5j5m5p5s5v5y5|55555555555555555555555555555555555555555555666 6 6666666!6$6'6*6-606366696<6?6B6E6H6K6N6Q6T6W6Z6]6`6c6f6i6l6o6r6u6x6{6~66666666666666666666666666666666666666666666777 7777777 7#7&7)7,7/7275787;7>7A7D7G7J7M7P7S7V7Y7\7_7b7e7h7k7n7q7t7w7z7}77777777777777777777777777777777777777777777888 8 8888888"8%8(8+8.8184878:8=8@8C8F8I8L8O8R8U8X8[8^8a8d8g8j8m8p8s8v8y8|88888888888888888888888888888888888888888888999 9 9999999!9$9'9*9-909396999<9?9B9E9H9K9N9Q9T9W9Z9]9`9c9f9i9l9o9r9u9x9{9~99999999999999999999999999999999999999999999::: ::::::: :#:&:):,:/:2:5:8:;:>:A:D:G:J:M:P:S:V:Y:\:_:b:e:h:k:n:q:t:w:z:}::::::::::::::::::::::::::::::::::::::::::::;;; ; ;;;;;;;";%;(;+;.;1;4;7;:;=;@;C;F;I;L;O;R;U;X;[;^;a;d;g;j;m;p;s;v;y;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<< < <<<<<<<!<$<'<*<-<0<3<6<9<<<?<B<E<H<K<N<Q<T<W<Z<]<`<c<f<i<l<o<r<u<x<{<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== ======= =#=&=)=,=/=2=5=8=;=>=A=D=G=J=M=P=S=V=Y=\=_=b=e=h=k=n=q=t=w=z=}============================================>>> > >>>>>>>">%>(>+>.>1>4>7>:>=>@>C>F>I>L>O>R>U>X>[>^>a>d>g>j>m>p>s>v>y>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??? ? ???????!?$?'?*?-?0?3?6?9?@A@D@G@J@M@P@S@V@Y@\@_@b@e@h@k@n@q@t@w@z@}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAA A AAAAAAA"A%A(A+A.A1A4A7A:A=A@ACAFAIALAOARAUAXA[A^AaAdAgAjAmApAsAvAyA|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBB B BBBBBBB!B$B'B*B-B0B3B6B9BCACDCGCJCMCPCSCVCYC\C_CbCeChCkCnCqCtCwCzC}CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDD D DDDDDDD"D%D(D+D.D1D4D7D:D=D@DCDFDIDLDODRDUDXD[D^DaDdDgDjDmDpDsDvDyD|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEE E EEEEEEE!E$E'E*E-E0E3E6E9EFAFDFGFJFMFPFSFVFYF\F_FbFeFhFkFnFqFtFwFzF}FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGG G GGGGGGG"G%G(G+G.G1G4G7G:G=G@GCGFGIGLGOGRGUGXG[G^GaGdGgGjGmGpGsGvGyG|GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHH H HHHHHHH!H$H'H*H-H0H3H6H9HIAIDIGIJIMIPISIVIYI\I_IbIeIhIkInIqItIwIzI}IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJ J JJJJJJJ"J%J(J+J.J1J4J7J:J=J@JCJFJIJLJOJRJUJXJ[J^JaJdJgJjJmJpJsJvJyJ|JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKK K KKKKKKK!K$K'K*K-K0K3K6K9KLALDLGLJLMLPLSLVLYL\L_LbLeLhLkLnLqLtLwLzL}LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMM M MMMMMMM"M%M(M+M.M1M4M7M:M=M@MCMFMIMLMOMRMUMXM[M^MaMdMgMjMmMpMsMvMyM|MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNN N NNNNNNN!N$N'N*N-N0N3N6N9NOAODOGOJOMOPOSOVOYO\O_ObOeOhOkOnOqOtOwOzO}OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPP P PPPPPPP"P%P(P+P.P1P4P7P:P=P@PCPFPIPLPOPRPUPXP[P^PaPdPgPjPmPpPsPvPyP|PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQ Q QQQQQQQ!Q$Q'Q*Q-Q0Q3Q6Q9QRARDRGRJRMRPRSRVRYR\R_RbReRhRkRnRqRtRwRzR}RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSS S SSSSSSS"S%S(S+S.S1S4S7S:S=S@SCSFSISLSOSRSUSXS[S^SaSdSgSjSmSpSsSvSyS|SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTT T TTTTTTT!T$T'T*T-T0T3T6T9TUAUDUGUJUMUPUSUVUYU\U_UbUeUhUkUnUqUtUwUzU}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVV V VVVVVVV"V%V(V+V.V1V4V7V:V=V@VCVFVIVLVOVRVUVXV[V^VaVdVgVjVmVpVsVvVyV|VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWW W WWWWWWW!W$W'W*W-W0W3W6W9WXAXDXGXJXMXPXSXVXYX\X_XbXeXhXkXnXqXtXwXzX}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYY Y YYYYYYY"Y%Y(Y+Y.Y1Y4Y7Y:Y=Y@YCYFYIYLYOYRYUYXY[Y^YaYdYgYjYmYpYsYvYyY|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ Z ZZZZZZZ!Z$Z'Z*Z-Z0Z3Z6Z9Z[A[D[G[J[M[P[S[V[Y[\[_[b[e[h[k[n[q[t[w[z[}[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\ \ \\\\\\\"\%\(\+\.\1\4\7\:\=\@\C\F\I\L\O\R\U\X\[\^\a\d\g\j\m\p\s\v\y\|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]] ] ]]]]]]]!]$]']*]-]0]3]6]9]<]?]B]E]H]K]N]Q]T]W]Z]]]`]c]f]i]l]o]r]u]x]{]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^^^^^^ ^#^&^)^,^/^2^5^8^;^>^A^D^G^J^M^P^S^V^Y^\^_^b^e^h^k^n^q^t^w^z^}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ _ _______"_%_(_+_._1_4_7_:_=_@_C_F_I_L_O_R_U_X_[_^_a_d_g_j_m_p_s_v_y_|____________________________________________``` ` ```````!`$`'`*`-`0`3`6`9`<`?`B`E`H`K`N`Q`T`W`Z`]```c`f`i`l`o`r`u`x`{`~````````````````````````````````````````````aaa aaaaaaa a#a&a)a,a/a2a5a8a;a>aAaDaGaJaMaPaSaVaYa\a_abaeahakanaqatawaza}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb b bbbbbbb"b%b(b+b.b1b4b7b:b=b@bCbFbIbLbObRbUbXb[b^babdbgbjbmbpbsbvbyb|bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccc c ccccccc!c$c'c*c-c0c3c6c9cdAdDdGdJdMdPdSdVdYd\d_dbdedhdkdndqdtdwdzd}ddddddddddddddddddddddddddddddddddddddddddddeee e eeeeeee"e%e(e+e.e1e4e7e:e=e@eCeFeIeLeOeReUeXe[e^eaedegejemepeseveye|eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefff f fffffff!f$f'f*f-f0f3f6f9fgAgDgGgJgMgPgSgVgYg\g_gbgeghgkgngqgtgwgzg}gggggggggggggggggggggggggggggggggggggggggggghhh h hhhhhhh"h%h(h+h.h1h4h7h:h=h@hChFhIhLhOhRhUhXh[h^hahdhghjhmhphshvhyh|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiii i iiiiiii!i$i'i*i-i0i3i6i9ijAjDjGjJjMjPjSjVjYj\j_jbjejhjkjnjqjtjwjzj}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkk k kkkkkkk"k%k(k+k.k1k4k7k:k=k@kCkFkIkLkOkRkUkXk[k^kakdkgkjkmkpkskvkyk|kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklll l lllllll!l$l'l*l-l0l3l6l9lmAmDmGmJmMmPmSmVmYm\m_mbmemhmkmnmqmtmwmzm}mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnn n nnnnnnn"n%n(n+n.n1n4n7n:n=n@nCnFnInLnOnRnUnXn[n^nandngnjnmnpnsnvnyn|nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooME Po=HMEdelta_001.001=--G- w=o= p= `p= q= 3[>zNqd?B`?ff>A=I|DATA= (r=DATAo=0position?x=2 .select_vert =x=DATA%?w-T?4^KT?qhνT?휾KT?휾KT?qhνT?vνT?휾KT?vνT?vϽT?L7=T?G=T?JvNb=T?JvNb=T?G=T?GT9=T?JvNb=T?GT9=T?Nb=T?Nb=T?GT9=T?qhT9=}?G=}?L7=}?GT9=}?GT9=}?L7=}?IvNb=}?GT9=}?IvNb=}?phT9=}?phT9=}?IvNb=}?Nb=}?uϽ}?uν}?휾K}?휾K}?uν}?phν}?휾K}?phν}?3^K}?GT9=T?GT9=}?G=}?G=T?GT9=T?G=}?uν}?uϽT?vνT?vν}?uϽT?vϽ}?L7=}?G=T?L7=T?L7=}?G=T?G=}?3^K}?Nb=T?Nb=T?Nb=T?4^K}?3^K}?phνT?qhνT?qhT9=T?qhT9=}?phT9=}?phν}?phν}?phT9=}?Nb=}?Nb=}?3^K}?phνT?qhνT?4^KT?Nb=T?Nb=T?qhT9=T?qhν}?GT9=}?phT9=T?qhT9=T?qhT9=T?GT9=}?GT9=}?uνT?vνT?qhνT?qhν}?phν}?uν}?휾K}?3^KT?4^KT?4^KT?휾K}?휾K}?Nb=}?IvNb=T?JvNb=T?JvNb=T?Nb=}?Nb=}?IvNb=}?L7=T?L7=T?L7=T?JvNb=}?IvNb=}?uϽ}?휾KT?휾KT?휾KT?vϽ}?uϽ_>!P`e!P`ehP`ehP`e<_>hP`e<_>!P`e<_>h楛=_>hP`ehP`ehP`eh楛=_>h楛=_>!楛=_>h楛=k">h楛=k">h楛=k">!楛=_>!楛=k">!楛=k">h楛=k">hP`ehP`e!P`e!楛=_>!楛=_>!P`e<_>hP`e<_>hP`e<_>h楛=_>!楛=_>!P`e<_>!楛=k">!楛=k">!楛=k">!P`e<_>!P`e<_>!7`ek">!7`ek">h7`ek">h7`e_>h7`e_>!7`e_>h7`ek">h7`ek">h㥛k">h㥛_>h㥛_>h7`e_>!㥛_>h㥛k">h㥛k">h㥛k">!㥛_>!㥛_>!7`e_>!㥛k">!㥛k">!㥛k">!7`e_>!7`e_>!7`e_>h7`e_>h㥛_>h㥛_>!㥛_>!7`ek">!7`ek">!㥛k">h㥛k">h㥛k">h7`ek">!7`e?"Vn=?"^==-^K7=ƈ2Vn4v<ƈ2^4v<ƈ2^v=-VnAV7=-^AV7?"^𿕽꛽VnZ!꛽^Z!|D^V,q^42nVn42^/^/nVn42Vn/^/Vn/|D^V,|D^V,Vn/|DVnV,|D^V,|DVnV,꛽VnZ!꛽^Z!꛽VnZ!V^xV^x꛽VnZ!VVnxV^xVVnxJн^Jн^VVnxIнVnJн^IнVnw^&w^&IнVnPVnw^&PVnF^PVnFVnLF^F^FVnLVnVF^VnVM^c˽M^c˽VnVMVnc˽M^c˽MVnc˽?"^𿕽?"^𿕽MVnc˽?"Vn𿕽?"^𿕽?"Vn𿕽=-VnAV7=-^AV7=-VnAV7ƈ2^vƈ2^v=-VnAV7ƈ2Vnvƈ2^vƈ2Vnvƈ2Vn4v<ƈ2^4v<ƈ2Vn4v<=-^K7==-^K7=ƈ2Vn4v<=-VnK7==-^K7==-VnK7=?"Vn=?"^=?"Vn=M^ c=M^ c=?"Vn=MVn c=M^ c=MVn c=^=^=MVn c=Vn=^=Vn=Jн^>Jн^>Vn=IнVn>Jн^>IнVn>꛽^Z!>꛽^Z!>IнVn>꛽VnZ!>꛽^Z!>꛽VnZ!>|DVn6T,>nVn42>q^42>|DVn6T,>|DVn6T,>q^42>|D^6T,>|DVn6T,>|D^6T,>꛽^Z!>q^42>nVn42>=^7>=^7>nVn42>=Vn7>=^7>=Vn7>K\=^3=>K\=^3=>=Vn7>L\=Vn3=>K\=^3=>L\=Vn3=>=^@>=^@>L\=Vn3=>&V=Vn*@>=^@>&V=Vn*@>G>^; W>G>^; W>&V=Vn*@>G>Vn; W>Z=^AAG>^= WG>Vn= WG>Vn= W&V=Vn@Z=^AAZ=^AA&V=Vn@L\=Vnӟ=nVn42q^42=Vn7=Vn7q^42=^7=Vn7=^7L\=Vnӟ=L\=Vnӟ==^7K\=^ӟ=L\=Vnӟ=K\=^ӟ=Z=^AAff?Z)\ff?Z&\=ff?&\=ff?&\=ff?)\ff?Z)\?Z)\?Z&\=?&\=?&\=?)\?Z)\ff?)\?)\?&\=?&\=ff?&\=ff?)\ff?Z)\?Z)\?)\?)\ff?)\ff?Z)\ff?Z&\=ff?&\=?&\=?&\=?Z&\=ff?Z&\=x.Sx.S=x.팿=x.팿=x.팿x.SrS=r팿=x.팿=x.팿=x.S=rS=r팿x.팿x.팿=x.팿=r팿=r팿rSrS=x.S=x.S=x.SrS|D^V,W ;^ ^/K\=^ӟ==^7W ;^ k">S&\=k">팿&\=`>팿X=`>팿X=`>SX=k">S&\=`>SX=`>팿X=%=팿PX>%=팿PX>1=S>`>SX=X=팿8> X=S8>1=S>1=S>%=팿PX>X=팿8>l=팿'>l=S'> X=S8> X=S8>X=팿8>l=팿'>l=S'>l=팿'>u=팿">u=팿">v=S">l=S'>v=S">u=팿">$R<팿$>$R<팿$>&Rv=S">)GaS]%>&R$R<팿$>$R<팿$>.Ga팿]%>)GaS]%>%IS^>)GaS]%>.Ga팿]%>.Ga팿]%>&I팿^>%IS^>%IS^>&I팿^>X팿 >X팿 >XS >%IS^>XS >X팿 >P팿>P팿>o,SpQ>XS >PSX=o,SpQ>P팿>P팿>P팿X=PSX=h팿>=hS>=PSX=PSX=P팿X=h팿>=/SB=hS>=h팿>=h팿>=/팿B=/SB=/팿B=r팿=rS=rS=/SB=/팿B=rSr팿/팿 /팿 /S rSh팿>DP팿XPSXPSXhS>Dh팿>DP팿XP팿o,SnQo,SnQPSXP팿XXS o,SnQP팿P팿X팿 XS %IS`&I팿`.Ga팿[%.Ga팿[%)GaS[%%IS`v=Sl"&RSX1=S%=팿NX%=팿NX`>팿X`>SXh팿>DhS>D/S /S /팿 h팿>D%IS`XS X팿 X팿 &I팿`%IS`$R<팿t$&RS)\`>SX`>팿X`>팿Xk">팿)\k">S)\x.Sx.팿r팿r팿rSx.SW ;^ w^&F^ƈ2^4vVn; W>X>^; W>G>^; W>G>^; W>G>Vn; W>X>Vn; W>X>Vn= WX>^= WX>^; W>X>^; W>X>Vn; W>X>Vn= WX>Vn= WG>Vn= WG>^= WG>^= WX>^= WX>Vn= WK\=^ӟ=W ;^ Z=^AAK\=^3=>=^@>Z=^AAZ=^AAW ;^ K\=^3=>X>^; W>X>^= WG>^= WG>^= WG>^; W>X>^; W>w^&W ;^ V^xV^xJн^w^&^=Jн^>꛽^Z!>꛽^Z!>W ;^ ^=?"^𿕽W ;^ F^F^M^c˽?"^𿕽^=W ;^ ?"^=?"^=M^ c=^=|D^V,꛽^Z!V^xV^xW ;^ |D^V,=^7q^42^/^/W ;^ =^7?"^𿕽=-^AV7ƈ2^vƈ2^vW ;^ ?"^𿕽q^42>W ;^ ꛽^Z!>꛽^Z!>|D^6T,>q^42>ƈ2^4v<=-^K7=?"^=?"^=W ;^ ƈ2^4v=^7>K\=^3=>K\=^3=>W ;^ q^42>=^@>G>^; W>G>^= WG>^= WZ=^AA=^@>&V=Vn@;VnS.L\=Vnӟ=L\=Vnӟ=;VnS.=Vn7Vn/;VnS.|DVnV,ƈ2Vnv;VnS.ƈ2Vn4v<X>Vn; W>G>Vn; W>G>Vn= WG>Vn= WX>Vn= WX>Vn; W>&V=Vn@&V=Vn*@>L\=Vn3=>L\=Vn3=>;VnS.&V=Vn@=Vn7;VnS.Vn/Vn/nVn42=Vn7|DVnV,;VnS.VVnxVVnx꛽VnZ!|DVnV,VVnx;VnS.PVnPVnIнVnVVnxVnV;VnS.?"Vn𿕽?"Vn𿕽MVnc˽VnV?"Vn𿕽;VnS.ƈ2Vnvƈ2Vnv=-VnAV7?"Vn𿕽ƈ2Vn4v<;VnS.?"Vn=?"Vn==-VnK7=ƈ2Vn4v꛽VnZ!>IнVn>Vn=꛽VnZ!>;VnS.nVn42>nVn42>|DVn6T,>꛽VnZ!>nVn42>;VnS.L\=Vn3=>L\=Vn3=>=Vn7>nVn42>;VnS.VnVFVnLFVnLPVn;VnS.G>Vn; W>&V=Vn*@>&V=Vn@&V=Vn@G>Vn= WG>Vn; W>X>kf.1>X>9f.1>p>9f.1>p>9f.1>p>kf.1>X>kf.1>X>Zg*x1>X>9f.1>p>9f.1>p>9f.1>p>Zg*x1>X>Zg*x1>X>^e*x1>X>kf.1>p>kf.1>p>kf.1>p>^e*x1>X>^e*x1>X>g 2>X>Zg*x1>p>Zg*x1>p>Zg*x1>p>g 2>X>g 2>X>e 2>X>^e*x1>p>^e*x1>p>^e*x1>p>e 2>X>e 2>X>9hO2>X>g 2>p>g 2>p>g 2>p>9hO2>X>9hO2>X>3eO2>X>e 2>p>e 2>p>e 2>p>3eO2>X>3eO2>X>h03>X>9hO2>p>9hO2>p>9hO2>p>h03>X>h03>X>=d03>X>3eO2>p>3eO2>p>3eO2>p>=d03>X>=d03>X>"hB5>X>h03>p>h03>p>h03>p>"hB5>X>"hB5>X>\dB5>X>=d03>p>=d03>p>=d03>p>\dB5>X>\dB5>X>;iw6>X>"hB5>p>"hB5>p>"hB5>p>;iw6>X>;iw6>X>dw6>X>\dB5>p>\dB5>p>\dB5>p>dw6>X>dw6>X>uii8>X>;iw6>p>;iw6>p>;iw6>p>uii8>X>uii8>X>Pci8>X>dw6>p>dw6>p>dw6>p>Pci8>X>Pci8>X>/i/:>X>uii8>p>uii8>p>uii8>p>/i/:>X>/i/:>X>c/:>X>Pci8>p>Pci8>p>Pci8>p>c/:>X>c/:>X>i<>X>/i/:>p>/i/:>p>/i/:>p>i<>X>i<>X>c<>X>c/:>p>c/:>p>c/:>p>c<>X>c<>X>i<=>X>i<>p>i<>p>i<>p>i<=>X>i<=>X>'c<=>X>c<>p>c<>p>c<>p>'c<=>X>'c<=>X>iS?>X>i<=>p>i<=>p>i<=>p>iS?>X>iS?>X>cS?>X>'c<=>p>'c<=>p>'c<=>p>cS?>X>cS?>X>ՋiSA>X>iS?>p>iS?>p>iS?>p>ՋiSA>X>ՋiSA>X>`cSA>X>cS?>p>cS?>p>cS?>p>`cSA>X>`cSA>X>ZiNC>X>ՋiSA>p>ՋiSA>p>ՋiSA>p>ZiNC>X>ZiNC>X>0cNC>X>`cSA>p>`cSA>p>`cSA>p>0cNC>X>0cNC>X>&ikD>X>ZiNC>p>ZiNC>p>ZiNC>p>&ikD>X>&ikD>X>6dkD>X>0cNC>p>0cNC>p>0cNC>p>6dkD>X>6dkD>X>1hIF>X>&ikD>p>&ikD>p>&ikD>p>1hIF>X>1hIF>X>dIF>X>6dkD>p>6dkD>p>6dkD>p>dIF>X>dIF>X>!lhF|G>X>1hIF>p>1hIF>p>1hIF>p>!lhF|G>X>!lhF|G>X>dF|G>X>dIF>p>dIF>p>dIF>p>dF|G>X>dF|G>X>hrH>X>!lhF|G>p>!lhF|G>p>!lhF|G>p>hrH>X>hrH>X>JerH>X>dF|G>p>dF|G>p>dF|G>p>JerH>X>JerH>X>,g'I>X>hrH>p>hrH>p>hrH>p>,g'I>X>,g'I>X>e'I>X>JerH>p>JerH>p>JerH>p>e'I>X>e'I>X>gI>X>,g'I>p>,g'I>p>,g'I>p>gI>X>gI>X>0fI>X>e'I>p>e'I>p>e'I>p>0fI>X>0fI>X>f_I>X>gI>p>gI>p>gI>p>f_I>X>f_I>X>f_I>X>0fI>p>0fI>p>0fI>p>f_I>X>f_I>X>kfIX>9fIX>9fIX>9fIX>kfIX>kfIX>ZgiIX>9fIX>9fIX>9fIX>ZgiIX>ZgiIX>^eiIX>kfIX>kfIX>kfIX>^eiIX>^eiIX>gMHX>ZgiIX>ZgiIX>ZgiIX>gMHX>gMHX>eMHX>^eiIX>^eiIX>^eiIX>eMHX>eMHX>9hHX>gMHX>gMHX>gMHX>9hHX>9hHX>3eHX>eMHX>eMHX>eMHX>3eHX>3eHX>hFX>9hHX>9hHX>9hHX>hFX>hFX>=dFX>3eHX>3eHX>3eHX>=dFX>=dFX>"h+EX>hFX>hFX>hFX>"h+EX>"h+EX>\d+EX>=dFX>=dFX>=dFX>\d+EX>\d+EX>;iDX>"h+EX>"h+EX>"h+EX>;iDX>;iDX>dDX>\d+EX>\d+EX>\d+EX>dDX>dDX>uiwBX>;iDX>;iDX>;iDX>uiwBX>uiwBX>PcwBX>dDX>dDX>dDX>PcwBX>PcwBX>/iA@X>uiwBX>uiwBX>uiwBX>/iA@X>/iA@X>cA@X>PcwBX>PcwBX>PcwBX>cA@X>cA@X>if>X>/iA@X>/iA@X>/iA@X>if>X>if>X>cf>X>cA@X>cA@X>cA@X>cf>X>cf>X>i <X>if>X>if>X>if>X>i <X>i <X>'c <X>cf>X>cf>X>cf>X>'c <X>'c <X>i;X>i <X>i <X>i <X>i;X>i;X>c;X>'c <X>'c <X>'c <X>c;X>c;X>ՋiJ9X>i;X>i;X>i;X>ՋiJ9X>ՋiJ9X>`cJ9X>c;X>c;X>c;X>`cJ9X>`cJ9X>Zi7X>ՋiJ9X>ՋiJ9X>ՋiJ9X>Zi7X>Zi7X>0c7X>`cJ9X>`cJ9X>`cJ9X>0c7X>0c7X>&i5X>Zi7X>Zi7X>Zi7X>&i5X>&i5X>6d5X>0c7X>0c7X>0c7X>6d5X>6d5X>1h4X>&i5X>&i5X>&i5X>1h4X>1h4X>d4X>6d5X>6d5X>6d5X>d4X>d4X>!lhe3X>1h4X>1h4X>1h4X>!lhe3X>!lhe3X>de3X>d4X>d4X>d4X>de3X>de3X>hn2X>!lhe3X>!lhe3X>!lhe3X>hn2X>hn2X>Jen2X>de3X>de3X>de3X>Jen2X>Jen2X>,g1X>hn2X>hn2X>hn2X>,g1X>,g1X>e1X>Jen2X>Jen2X>Jen2X>e1X>e1X>gK1X>,g1X>,g1X>,g1X>gK1X>gK1X>0fK1X>e1X>e1X>e1X>0fK1X>0fK1X>f&1X>gK1X>gK1X>gK1X>f&1X>f&1X>f&1X>0fK1X>0fK1X>0fK1X>f&1X>f&1X>PcwBX>PcwBX>PcwBX>PcwBX>PcwBX>PcwBX>kfIX>9fIp>9fIp>9fIp>kfIX>kfIX>ZgiIX>9fIp>9fIp>9fIp>ZgiIX>ZgiIX>^eiIX>kfIp>kfIp>kfIp>^eiIX>^eiIX>gMHX>ZgiIp>ZgiIp>ZgiIp>gMHX>gMHX>eMHX>^eiIp>^eiIp>^eiIp>eMHX>eMHX>9hHX>gMHp>gMHp>gMHp>9hHX>9hHX>3eHX>eMHp>eMHp>eMHp>3eHX>3eHX>hFX>9hHp>9hHp>9hHp>hFX>hFX>=dFX>3eHp>3eHp>3eHp>=dFX>=dFX>"h+EX>hFp>hFp>hFp>"h+EX>"h+EX>\d+EX>=dFp>=dFp>=dFp>\d+EX>\d+EX>;iDX>"h+Ep>"h+Ep>"h+Ep>;iDX>;iDX>dDX>\d+Ep>\d+Ep>\d+Ep>dDX>dDX>uiwBX>;iDp>;iDp>;iDp>uiwBX>uiwBX>PcwBX>dDp>dDp>dDp>PcwBX>PcwBX>/iA@X>uiwBp>uiwBp>uiwBp>/iA@X>/iA@X>cA@X>PcwBp>PcwBp>PcwBp>cA@X>cA@X>if>X>/iA@p>/iA@p>/iA@p>if>X>if>X>cf>X>cA@p>cA@p>cA@p>cf>X>cf>X>i <X>if>p>if>p>if>p>i <X>i <X>'c <X>cf>p>cf>p>cf>p>'c <X>'c <X>i;X>i

i

i

i;X>i;X>c;X>'c

'c

'c

c;X>c;X>ՋiJ9X>i;p>i;p>i;p>ՋiJ9X>ՋiJ9X>`cJ9X>c;p>c;p>c;p>`cJ9X>`cJ9X>Zi7X>ՋiJ9p>ՋiJ9p>ՋiJ9p>Zi7X>Zi7X>0c7X>`cJ9p>`cJ9p>`cJ9p>0c7X>0c7X>&i5X>Zi7p>Zi7p>Zi7p>&i5X>&i5X>6d5X>0c7p>0c7p>0c7p>6d5X>6d5X>1h4X>&i5p>&i5p>&i5p>1h4X>1h4X>d4X>6d5p>6d5p>6d5p>d4X>d4X>!lhe3X>1h4p>1h4p>1h4p>!lhe3X>!lhe3X>de3X>d4p>d4p>d4p>de3X>de3X>hn2X>!lhe3p>!lhe3p>!lhe3p>hn2X>hn2X>Jen2X>de3p>de3p>de3p>Jen2X>Jen2X>,g1X>hn2p>hn2p>hn2p>,g1X>,g1X>e1X>Jen2p>Jen2p>Jen2p>e1X>e1X>gK1X>,g1p>,g1p>,g1p>gK1X>gK1X>0fK1X>e1p>e1p>e1p>0fK1X>0fK1X>f&1X>gK1p>gK1p>gK1p>f&1X>f&1X>f&1X>0fK1p>0fK1p>0fK1p>f&1X>f&1X>PcwBX>PcwBp>PcwBp>PcwBp>PcwBX>PcwBX>f_I>X>0fI>p>0fI>p>0fI>p>f_I>X>f_I>X>f_I>X>gI>p>gI>p>gI>p>f_I>X>f_I>X>0fI>X>e'I>p>e'I>p>e'I>p>0fI>X>0fI>X>gI>X>,g'I>p>,g'I>p>,g'I>p>gI>X>gI>X>e'I>X>JerH>p>JerH>p>JerH>p>e'I>X>e'I>X>,g'I>X>hrH>p>hrH>p>hrH>p>,g'I>X>,g'I>X>JerH>X>dF|G>p>dF|G>p>dF|G>p>JerH>X>JerH>X>hrH>X>!lhF|G>p>!lhF|G>p>!lhF|G>p>hrH>X>hrH>X>dF|G>X>dIF>p>dIF>p>dIF>p>dF|G>X>dF|G>X>!lhF|G>X>1hIF>p>1hIF>p>1hIF>p>!lhF|G>X>!lhF|G>X>dIF>X>6dkD>p>6dkD>p>6dkD>p>dIF>X>dIF>X>1hIF>X>&ikD>p>&ikD>p>&ikD>p>1hIF>X>1hIF>X>6dkD>X>0cNC>p>0cNC>p>0cNC>p>6dkD>X>6dkD>X>&ikD>X>ZiNC>p>ZiNC>p>ZiNC>p>&ikD>X>&ikD>X>0cNC>X>`cSA>p>`cSA>p>`cSA>p>0cNC>X>0cNC>X>ZiNC>X>ՋiSA>p>ՋiSA>p>ՋiSA>p>ZiNC>X>ZiNC>X>`cSA>X>cS?>p>cS?>p>cS?>p>`cSA>X>`cSA>X>ՋiSA>X>iS?>p>iS?>p>iS?>p>ՋiSA>X>ՋiSA>X>cS?>X>'c<=>p>'c<=>p>'c<=>p>cS?>X>cS?>X>iS?>X>i<=>p>i<=>p>i<=>p>iS?>X>iS?>X>'c<=>X>c<>p>c<>p>c<>p>'c<=>X>'c<=>X>i<=>X>i<>p>i<>p>i<>p>i<=>X>i<=>X>c<>X>c/:>p>c/:>p>c/:>p>c<>X>c<>X>i<>X>/i/:>p>/i/:>p>/i/:>p>i<>X>i<>X>c/:>X>Pci8>p>Pci8>p>Pci8>p>c/:>X>c/:>X>/i/:>X>uii8>p>uii8>p>uii8>p>/i/:>X>/i/:>X>Pci8>X>dw6>p>dw6>p>dw6>p>Pci8>X>Pci8>X>uii8>X>;iw6>p>;iw6>p>;iw6>p>uii8>X>uii8>X>dw6>X>\dB5>p>\dB5>p>\dB5>p>dw6>X>dw6>X>;iw6>X>"hB5>p>"hB5>p>"hB5>p>;iw6>X>;iw6>X>\dB5>X>=d03>p>=d03>p>=d03>p>\dB5>X>\dB5>X>"hB5>X>h03>p>h03>p>h03>p>"hB5>X>"hB5>X>=d03>X>3eO2>p>3eO2>p>3eO2>p>=d03>X>=d03>X>h03>X>9hO2>p>9hO2>p>9hO2>p>h03>X>h03>X>3eO2>X>e 2>p>e 2>p>e 2>p>3eO2>X>3eO2>X>9hO2>X>g 2>p>g 2>p>g 2>p>9hO2>X>9hO2>X>e 2>X>^e*x1>p>^e*x1>p>^e*x1>p>e 2>X>e 2>X>g 2>X>Zg*x1>p>Zg*x1>p>Zg*x1>p>g 2>X>g 2>X>^e*x1>X>kf.1>p>kf.1>p>kf.1>p>^e*x1>X>^e*x1>X>Zg*x1>X>9f.1>p>9f.1>p>9f.1>p>Zg*x1>X>Zg*x1>X>kf.1>X>9f.1>p>9f.1>p>9f.1>p>kf.1>X>kf.1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>9f.1>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kf.1>p>^e*x1>p>fp=>p>fp=>p>fp=>p>kf.1>p>Zg*x1>p>g 2>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>^e*x1>p>e 2>p>fp=>p>fp=>p>fp=>p>^e*x1>p>g 2>p>9hO2>p>fp=>p>fp=>p>fp=>p>g 2>p>e 2>p>3eO2>p>fp=>p>fp=>p>fp=>p>e 2>p>9hO2>p>h03>p>fp=>p>fp=>p>fp=>p>9hO2>p>3eO2>p>=d03>p>fp=>p>fp=>p>fp=>p>3eO2>p>h03>p>"hB5>p>fp=>p>fp=>p>fp=>p>h03>p>=d03>p>\dB5>p>fp=>p>fp=>p>fp=>p>=d03>p>"hB5>p>;iw6>p>fp=>p>fp=>p>fp=>p>"hB5>p>\dB5>p>dw6>p>fp=>p>fp=>p>fp=>p>\dB5>p>;iw6>p>uii8>p>fp=>p>fp=>p>fp=>p>;iw6>p>dw6>p>Pci8>p>fp=>p>fp=>p>fp=>p>dw6>p>uii8>p>/i/:>p>fp=>p>fp=>p>fp=>p>uii8>p>Pci8>p>c/:>p>fp=>p>fp=>p>fp=>p>Pci8>p>/i/:>p>i<>p>fp=>p>fp=>p>fp=>p>/i/:>p>c/:>p>c<>p>fp=>p>fp=>p>fp=>p>c/:>p>i<>p>i<=>p>fp=>p>fp=>p>fp=>p>i<>p>c<>p>'c<=>p>fp=>p>fp=>p>fp=>p>c<>p>i<=>p>iS?>p>fp=>p>fp=>p>fp=>p>i<=>p>'c<=>p>cS?>p>fp=>p>fp=>p>fp=>p>'c<=>p>iS?>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>iS?>p>cS?>p>`cSA>p>fp=>p>fp=>p>fp=>p>cS?>p>ՋiSA>p>ZiNC>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>`cSA>p>0cNC>p>fp=>p>fp=>p>fp=>p>`cSA>p>ZiNC>p>&ikD>p>fp=>p>fp=>p>fp=>p>ZiNC>p>0cNC>p>6dkD>p>fp=>p>fp=>p>fp=>p>0cNC>p>&ikD>p>1hIF>p>fp=>p>fp=>p>fp=>p>&ikD>p>6dkD>p>dIF>p>fp=>p>fp=>p>fp=>p>6dkD>p>1hIF>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>1hIF>p>dIF>p>dF|G>p>fp=>p>fp=>p>fp=>p>dIF>p>!lhF|G>p>hrH>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dF|G>p>JerH>p>fp=>p>fp=>p>fp=>p>dF|G>p>hrH>p>,g'I>p>fp=>p>fp=>p>fp=>p>hrH>p>JerH>p>e'I>p>fp=>p>fp=>p>fp=>p>JerH>p>,g'I>p>gI>p>fp=>p>fp=>p>fp=>p>,g'I>p>e'I>p>0fI>p>fp=>p>fp=>p>fp=>p>e'I>p>gI>p>f_I>p>fp=>p>fp=>p>fp=>p>gI>p>0fI>p>f_I>p>fp=>p>fp=>p>fp=>p>0fI>p>f_I>p>0fI>p>fp=>p>fp=>p>fp=>p>f_I>p>f_I>p>gI>p>fp=>p>fp=>p>fp=>p>f_I>p>0fI>p>e'I>p>fp=>p>fp=>p>fp=>p>0fI>p>gI>p>,g'I>p>fp=>p>fp=>p>fp=>p>gI>p>e'I>p>JerH>p>fp=>p>fp=>p>fp=>p>e'I>p>,g'I>p>hrH>p>fp=>p>fp=>p>fp=>p>,g'I>p>JerH>p>dF|G>p>fp=>p>fp=>p>fp=>p>JerH>p>hrH>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>hrH>p>dF|G>p>dIF>p>fp=>p>fp=>p>fp=>p>dF|G>p>!lhF|G>p>1hIF>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dIF>p>6dkD>p>fp=>p>fp=>p>fp=>p>dIF>p>1hIF>p>&ikD>p>fp=>p>fp=>p>fp=>p>1hIF>p>6dkD>p>0cNC>p>fp=>p>fp=>p>fp=>p>6dkD>p>&ikD>p>ZiNC>p>fp=>p>fp=>p>fp=>p>&ikD>p>0cNC>p>`cSA>p>fp=>p>fp=>p>fp=>p>0cNC>p>ZiNC>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>ZiNC>p>`cSA>p>cS?>p>fp=>p>fp=>p>fp=>p>`cSA>p>ՋiSA>p>iS?>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>cS?>p>'c<=>p>fp=>p>fp=>p>fp=>p>cS?>p>iS?>p>i<=>p>fp=>p>fp=>p>fp=>p>iS?>p>'c<=>p>c<>p>fp=>p>fp=>p>fp=>p>'c<=>p>i<=>p>i<>p>fp=>p>fp=>p>fp=>p>i<=>p>c<>p>c/:>p>fp=>p>fp=>p>fp=>p>c<>p>i<>p>/i/:>p>fp=>p>fp=>p>fp=>p>i<>p>c/:>p>Pci8>p>fp=>p>fp=>p>fp=>p>c/:>p>/i/:>p>uii8>p>fp=>p>fp=>p>fp=>p>/i/:>p>Pci8>p>dw6>p>fp=>p>fp=>p>fp=>p>Pci8>p>uii8>p>;iw6>p>fp=>p>fp=>p>fp=>p>uii8>p>dw6>p>\dB5>p>fp=>p>fp=>p>fp=>p>dw6>p>;iw6>p>"hB5>p>fp=>p>fp=>p>fp=>p>;iw6>p>\dB5>p>=d03>p>fp=>p>fp=>p>fp=>p>\dB5>p>"hB5>p>h03>p>fp=>p>fp=>p>fp=>p>"hB5>p>=d03>p>3eO2>p>fp=>p>fp=>p>fp=>p>=d03>p>h03>p>9hO2>p>fp=>p>fp=>p>fp=>p>h03>p>3eO2>p>e 2>p>fp=>p>fp=>p>fp=>p>3eO2>p>9hO2>p>g 2>p>fp=>p>fp=>p>fp=>p>9hO2>p>e 2>p>^e*x1>p>fp=>p>fp=>p>fp=>p>e 2>p>g 2>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>g 2>p>^e*x1>p>kf.1>p>fp=>p>fp=>p>fp=>p>^e*x1>p>Zg*x1>p>9f.1>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>kf.1>p>9f.1>p>fp=>p>fp=>p>fp=>p>kf.1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>9f.1>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kf.1>p>^e*x1>p>fp=>p>fp=>p>fp=>p>kf.1>p>Zg*x1>p>g 2>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>^e*x1>p>e 2>p>fp=>p>fp=>p>fp=>p>^e*x1>p>g 2>p>9hO2>p>fp=>p>fp=>p>fp=>p>g 2>p>e 2>p>3eO2>p>fp=>p>fp=>p>fp=>p>e 2>p>9hO2>p>h03>p>fp=>p>fp=>p>fp=>p>9hO2>p>3eO2>p>=d03>p>fp=>p>fp=>p>fp=>p>3eO2>p>h03>p>"hB5>p>fp=>p>fp=>p>fp=>p>h03>p>=d03>p>\dB5>p>fp=>p>fp=>p>fp=>p>=d03>p>"hB5>p>;iw6>p>fp=>p>fp=>p>fp=>p>"hB5>p>\dB5>p>dw6>p>fp=>p>fp=>p>fp=>p>\dB5>p>;iw6>p>uii8>p>fp=>p>fp=>p>fp=>p>;iw6>p>dw6>p>Pci8>p>fp=>p>fp=>p>fp=>p>dw6>p>uii8>p>/i/:>p>fp=>p>fp=>p>fp=>p>uii8>p>Pci8>p>c/:>p>fp=>p>fp=>p>fp=>p>Pci8>p>/i/:>p>i<>p>fp=>p>fp=>p>fp=>p>/i/:>p>c/:>p>c<>p>fp=>p>fp=>p>fp=>p>c/:>p>i<>p>i<=>p>fp=>p>fp=>p>fp=>p>i<>p>c<>p>'c<=>p>fp=>p>fp=>p>fp=>p>c<>p>i<=>p>iS?>p>fp=>p>fp=>p>fp=>p>i<=>p>'c<=>p>cS?>p>fp=>p>fp=>p>fp=>p>'c<=>p>iS?>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>iS?>p>cS?>p>`cSA>p>fp=>p>fp=>p>fp=>p>cS?>p>ՋiSA>p>ZiNC>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>`cSA>p>0cNC>p>fp=>p>fp=>p>fp=>p>`cSA>p>ZiNC>p>&ikD>p>fp=>p>fp=>p>fp=>p>ZiNC>p>0cNC>p>6dkD>p>fp=>p>fp=>p>fp=>p>0cNC>p>&ikD>p>1hIF>p>fp=>p>fp=>p>fp=>p>&ikD>p>6dkD>p>dIF>p>fp=>p>fp=>p>fp=>p>6dkD>p>1hIF>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>1hIF>p>dIF>p>dF|G>p>fp=>p>fp=>p>fp=>p>dIF>p>!lhF|G>p>hrH>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dF|G>p>JerH>p>fp=>p>fp=>p>fp=>p>dF|G>p>hrH>p>,g'I>p>fp=>p>fp=>p>fp=>p>hrH>p>JerH>p>e'I>p>fp=>p>fp=>p>fp=>p>JerH>p>,g'I>p>gI>p>fp=>p>fp=>p>fp=>p>,g'I>p>e'I>p>0fI>p>fp=>p>fp=>p>fp=>p>e'I>p>gI>p>f_I>p>fp=>p>fp=>p>fp=>p>gI>p>0fI>p>f_I>p>fp=>p>fp=>p>fp=>p>0fI>p>f_I>p>0fI>p>fp=>p>fp=>p>fp=>p>f_I>p>f_I>p>gI>p>fp=>p>fp=>p>fp=>p>f_I>p>0fI>p>e'I>p>fp=>p>fp=>p>fp=>p>0fI>p>gI>p>,g'I>p>fp=>p>fp=>p>fp=>p>gI>p>e'I>p>JerH>p>fp=>p>fp=>p>fp=>p>e'I>p>,g'I>p>hrH>p>fp=>p>fp=>p>fp=>p>,g'I>p>JerH>p>dF|G>p>fp=>p>fp=>p>fp=>p>JerH>p>hrH>p>!lhF|G>p>fp=>p>fp=>p>fp=>p>hrH>p>dF|G>p>dIF>p>fp=>p>fp=>p>fp=>p>dF|G>p>!lhF|G>p>1hIF>p>fp=>p>fp=>p>fp=>p>!lhF|G>p>dIF>p>6dkD>p>fp=>p>fp=>p>fp=>p>dIF>p>1hIF>p>&ikD>p>fp=>p>fp=>p>fp=>p>1hIF>p>6dkD>p>0cNC>p>fp=>p>fp=>p>fp=>p>6dkD>p>&ikD>p>ZiNC>p>fp=>p>fp=>p>fp=>p>&ikD>p>0cNC>p>`cSA>p>fp=>p>fp=>p>fp=>p>0cNC>p>ZiNC>p>ՋiSA>p>fp=>p>fp=>p>fp=>p>ZiNC>p>`cSA>p>cS?>p>fp=>p>fp=>p>fp=>p>`cSA>p>ՋiSA>p>iS?>p>fp=>p>fp=>p>fp=>p>ՋiSA>p>cS?>p>'c<=>p>fp=>p>fp=>p>fp=>p>cS?>p>iS?>p>i<=>p>fp=>p>fp=>p>fp=>p>iS?>p>'c<=>p>c<>p>fp=>p>fp=>p>fp=>p>'c<=>p>i<=>p>i<>p>fp=>p>fp=>p>fp=>p>i<=>p>c<>p>c/:>p>fp=>p>fp=>p>fp=>p>c<>p>i<>p>/i/:>p>fp=>p>fp=>p>fp=>p>i<>p>c/:>p>Pci8>p>fp=>p>fp=>p>fp=>p>c/:>p>/i/:>p>uii8>p>fp=>p>fp=>p>fp=>p>/i/:>p>Pci8>p>dw6>p>fp=>p>fp=>p>fp=>p>Pci8>p>uii8>p>;iw6>p>fp=>p>fp=>p>fp=>p>uii8>p>dw6>p>\dB5>p>fp=>p>fp=>p>fp=>p>dw6>p>;iw6>p>"hB5>p>fp=>p>fp=>p>fp=>p>;iw6>p>\dB5>p>=d03>p>fp=>p>fp=>p>fp=>p>\dB5>p>"hB5>p>h03>p>fp=>p>fp=>p>fp=>p>"hB5>p>=d03>p>3eO2>p>fp=>p>fp=>p>fp=>p>=d03>p>h03>p>9hO2>p>fp=>p>fp=>p>fp=>p>h03>p>3eO2>p>e 2>p>fp=>p>fp=>p>fp=>p>3eO2>p>9hO2>p>g 2>p>fp=>p>fp=>p>fp=>p>9hO2>p>e 2>p>^e*x1>p>fp=>p>fp=>p>fp=>p>e 2>p>g 2>p>Zg*x1>p>fp=>p>fp=>p>fp=>p>g 2>p>^e*x1>p>kf.1>p>fp=>p>fp=>p>fp=>p>^e*x1>p>Zg*x1>p>9f.1>p>fp=>p>fp=>p>fp=>p>Zg*x1>p>9f.1>p>kf.1>p>fp=>p>fp=>p>fp=>p>9f.1>p>kfIp>9fIp>f=p>f=p>f=p>kfIp>ZgiIp>9fIp>f=p>f=p>f=p>ZgiIp>^eiIp>kfIp>f=p>f=p>f=p>^eiIp>gMHp>ZgiIp>f=p>f=p>f=p>gMHp>eMHp>^eiIp>f=p>f=p>f=p>eMHp>9hHp>gMHp>f=p>f=p>f=p>9hHp>3eHp>eMHp>f=p>f=p>f=p>3eHp>hFp>9hHp>f=p>f=p>f=p>hFp>=dFp>3eHp>f=p>f=p>f=p>=dFp>"h+Ep>hFp>f=p>f=p>f=p>"h+Ep>\d+Ep>=dFp>f=p>f=p>f=p>\d+Ep>;iDp>"h+Ep>f=p>f=p>f=p>;iDp>dDp>\d+Ep>f=p>f=p>f=p>dDp>uiwBp>;iDp>f=p>f=p>f=p>uiwBp>PcwBp>dDp>f=p>f=p>f=p>PcwBp>/iA@p>uiwBp>f=p>f=p>f=p>/iA@p>cA@p>PcwBp>f=p>f=p>f=p>cA@p>if>p>/iA@p>f=p>f=p>f=p>if>p>cf>p>cA@p>f=p>f=p>f=p>cf>p>i

if>p>f=p>f=p>f=p>i

'c

cf>p>f=p>f=p>f=p>'c

i;p>i

f=p>f=p>f=p>i;p>c;p>'c

f=p>f=p>f=p>c;p>ՋiJ9p>i;p>f=p>f=p>f=p>ՋiJ9p>`cJ9p>c;p>f=p>f=p>f=p>`cJ9p>Zi7p>ՋiJ9p>f=p>f=p>f=p>Zi7p>0c7p>`cJ9p>f=p>f=p>f=p>0c7p>&i5p>Zi7p>f=p>f=p>f=p>&i5p>6d5p>0c7p>f=p>f=p>f=p>6d5p>1h4p>&i5p>f=p>f=p>f=p>1h4p>d4p>6d5p>f=p>f=p>f=p>d4p>!lhe3p>1h4p>f=p>f=p>f=p>!lhe3p>de3p>d4p>f=p>f=p>f=p>de3p>hn2p>!lhe3p>f=p>f=p>f=p>hn2p>Jen2p>de3p>f=p>f=p>f=p>Jen2p>,g1p>hn2p>f=p>f=p>f=p>,g1p>e1p>Jen2p>f=p>f=p>f=p>e1p>gK1p>,g1p>f=p>f=p>f=p>gK1p>0fK1p>e1p>f=p>f=p>f=p>0fK1p>f&1p>gK1p>f=p>f=p>f=p>f&1p>f&1p>0fK1p>f=p>f=p>f=p>f&1p>PcwBp>PcwBp>f=p>f=p>f=p>PcwBk">S)\k">팿)\k">팿&\=k">팿&\=k">S&\=k">S)\k">팿)\`>팿X`>팿X=`>팿X=k">팿&\=k">팿)\`>팿X%=팿NX%=팿PX>%=팿PX>`>팿X=`>팿X%=팿NXX=팿8X=팿8>X=팿8>%=팿PX>%=팿NXX=팿8l=팿(l=팿'>l=팿'>X=팿8>X=팿8l=팿(u=팿l"u=팿">u=팿">l=팿'>l=팿(u=팿l"$R<팿t$$R<팿$>$R<팿$>u=팿">u=팿l"$R<팿t$.Ga팿[%.Ga팿]%>.Ga팿]%>$R<팿$>$R<팿t$.Ga팿[%&I팿`&I팿^>&I팿^>.Ga팿]%>.Ga팿[%&I팿`X팿 X팿 >X팿 >&I팿^>&I팿`X팿 P팿P팿>P팿>X팿 >X팿 P팿P팿XP팿X=P팿X=P팿>P팿P팿Xh팿>Dh팿>=h팿>=P팿X=P팿Xh팿>D/팿 /팿B=/팿B=h팿>=h팿>D/팿 r팿r팿=r팿=/팿B=/팿 k">S)\k">S&\=`>SX=`>SX=`>SXk">S)\`>SX`>SX=1=S>1=S>1=S`>SX1=S1=S> X=S8> X=S8> X=S81=S X=S8 X=S8>l=S'>l=S'>l=S( X=S8l=S(l=S'>v=S">v=S">v=Sl"l=S(v=Sl"v=S">&R&R&R)GaS]%>)GaS]%>)GaS[%&R%IS^>%IS^>%IS`)GaS[%%IS`%IS^>XS >XS >XS %IS`XS XS >o,SpQ>o,SpQ>o,SnQXS o,SnQo,SpQ>PSX=PSX=PSXo,SnQPSXPSX=hS>=hS>=hS>DPSXhS>DhS>=/SB=/SB=/S hS>DrS/S /SB=/SB=rS=rSO޾팿Ǣ>O޾팿=߾팿 ף>팿 ף>Z팿=Z팿Ǣ>Z팿ǢZ팿팿 ף߾팿 ףO޾팿O޾팿Ǣ(ܾS=(ܾh=(ܾh ף>(ܾh ף(ܾh(ܾSShh ףh=S=h ף>Q팿.Q팿B팿q=_팿q=팿팿.S=h=ho=>hq=hSho=>h=S=h=h ף>S=j>W[Ga>㥛4K=W[Ga>j>팿Ga>W[Gaj㥛'K팿GajW[GaF6iff>F*Oa>W[Ga>,6iff>x.W[Ga>,*Oa>W[GaF!`FIKfffx.W[Ga,IKfff,!`?/C?yC?ǺC?J8C}?1=9C?Z8C?J8C?Z8Cz@?J8C?yC?C?ǺC>kN >kM% >cuk! >cuk!>kM%> k֨'> k֨'4 >k4/ >cuk!W?NCt?ĄC[>uky?GC> k֨'t?ĄCIG>Ml9,?C?CIG>Ml9?Cq>Ҥl=>;l}7>lE6?\=C?\=C>lE6>}k4,?CIG>Ml9?\=C?\=CIG>Ml9>;l}7?:C>l>?C?C>l>q>Ҥl=?C>AlF@>l>?C>l>-?GC-?GC>l>?:C]d>VmT0J`>VmkF^?>ЊC^?>ЊC`>VmkF>VmHC^?>ЊC>VmHC?xbC?xbC>VmHC?C?C>VmHCR>]lnA?CR>]lnA>AlF@]d>VmT0J^?>ЊCi6>VmOi6>VmO^?>ЊCi>VmͪOi>VmͪO^?>ЊCR? CR? C?Ci>VmͪOi>VmͪO?C73>Vm S?C?⋿C73>Vm S73>Vm S?⋿C@?C@?C?AC73>Vm S73>Vm S?AC?5AC73>Vm S?5AC">VmsFT">VmsFT?5AC+D?@C">VmsFT+D?@C?C">VmsFT?C>Vm|S>Vm|S?C!>Vm^S!>Vm^S?C!?􋿓C!>Vm^S!?􋿓Cs>VmdQs>VmdQ!?􋿓C ?Cs>VmdQ ?Cؐ>VmO>Vm $K>VmNؐ>VmOz>jn?V ?>ЊC#Y?-C ?C^ ? Cؐ>VmOؐ>VmO^ ? CV ?>ЊCؐ>VmOV ?>ЊC>Vm $K>Vm $KV ?>ЊC\>Gn7A\>Gn7AV ?>ЊCz>jn?;>1nx/W:>odn0k?bCk?bCW:>odn0&>nЖ3&>nЖ3 >ln 6k?bCk?bC >ln 6NT?/CNT?/C >ln 6 >nK7NT?/C >nK7#Y?-C#Y?-C >nK7>RnY8#Y?-C>RnY8z>jn?>Vm*>VmI,#?񅿓C#?񅿓C>VmI,i6>~m-k?bC ?m9C;>1nx/;>1nx/ ?m9C?톿C;>1nx/?톿C#?񅿓C;>1nx/#?񅿓Ci6>~m-?C(?CU>VmV&#?񅿓C?yC>Vm*>Vm*?yC?/C>Vm*?/C?ǺC>Vm*?ǺC>Vm">Vm"?ǺC?C>Vm"?C7>Vm7>Vm?CU>VmV&(?Cz ?`CU>VmV&U>VmV&z ?`Cr?}肿CU>VmV&r?}肿CV>VmiV>Vmir?}肿C<?󓂿CV>Vmi<?󓂿CS>VmlS>Vml<?󓂿CO ?PXCS>VmlO ?PXCT>VmsT>VmsO ?PXC>Vm<O ?PXC?4C>Vm<>Vm<?4C?@5C>Vm<?@5C6>Vm?@5CA> m=6>Vm7>f m  ?eCi1>lfi1>lf ?eC3 ?큂Ci1>lf3 ?큂C5 ?C?@5C?5CA> m=A> m=?5C ?eCA> m= ?eC7>f m W?NC[>uk?>/lW?NC?>/ll>ull5 ?C>l3>lc@5 ?C3>lc@i1>lfl>ull>l W?NCW?NC>l a>l W?NCa>l o ?3mCo ?3mCa>l 5 ?C5 ?Ca>l >l3Q>7C\Ż>1C>VmO(>\lieBG9> qlSC@>C@>CG9> qlSC>NlDuĪ>yC>k8>kp=>"C>l">l>"C>l>lˮ>C;>l$u"O<>kv%>Vm"(̴>ۂC>R~Cjf>VmJ>TWC<>5Ct>VmZB>;pCN<>VmW>Vm >тC>pC>Vm*>>Vm,>>Vm)>>VmI,>Vm*>Vmg*ǧ@?/LCT B?dC?(y5%?(y5%T B?dC??R4?x#;0?A`#?>A`\A-?bbCU$2_?c@F,>A`J- >A`/2_?c@F >A`/?E&?E& >A`/1[>A`3,>A`J-2_?c@F=#>A`*=#>A`*2_?c@F?9F?9F\ ? .F3=#>A`*=#>A`*\ ? .F3 ?<F =#>A`* ?<F J>A`y'J>A`y' ?<F )f ?dE. J>A`y')f ?dE. >A`Cn& >A`Cn&)f ?dE. D ?Ej >A`Cn&D ?Ej B">A`i"B">A`i"D ?Ej ) ?.QEB">A`i") ?.QE% ?:EB">A`i"% ?:Er>A`br>A`b% ?:EN ?D0 N ?D0 ; ?RCr>A`br>A`b; ?RC ?eCxr>A`b ?eCx9$>A`G ?eCx ?JCB9$>A`G9$>A`G ?JCB5 ?B9$>A`G5 ?Bط>A`8ط>A`85 ?B ?[Bط>A`8 ?[B>A`Q>A`Q ?[BV>A`V>A` ?[B?UA 7V>A`?UA 7>A` ?UA 7?A>A` >A` ?Aa>A`$?AU:?@Ea>A`$a>A`$U:?@E_??a>A`$_??(>A`gD)_??ٻ?c;?.n(>A`gD)(>A`gD)ٻ?c;?.n?=IY(>A`gD)?=IYs >A`*s >A`*?=IYX>A`I/X>A`I/?=IY?=X>A`I/?=^?O;< X>A`I/^?O;< ?;4 X>A`I/?;4 (z>A`1(z>A`1?;4 Xx?ٔ;{Xx?ٔ;{h6>A`u7>A`5Xx?ٔ;{>A`5(z>A`1}?cu;Y>A`A`

A`u7}?cu;Q?y6;CY>A`A`A`A_%>A`AQ?y6;CB?(";%z_%>A`AB?(";%z >A`4YCB?(";%z$?[; >A`4YC >A`4YC$?[; ?d; >A`4YC ?d;>A`E>A`E ?d;]?u:ަ>A`E]?u:ަG>A`0*I]?u:ަ?:"G>A`0*IG>A`0*I?:"Z?&:t^#G>A`0*IZ?&:t^#}>A`28J}>A`28JZ?&:t^#-e ?;%}>A`28J-e ?;%)@>A`4$N-e ?;%' ?;')@>A`4$N)@>A`4$N' ?;'8 ?&;&1()@>A`4$N8 ?&;&1( ?=D;~))@>A`4$N ?=D;~)q>A`zSQ ?=D;~)U ?uq;]+q>A`zSQq>A`zSQU ?uq;]+> ?~;i+q>A`zSQ> ?~;i+cJ ?y;ǀ,q>A`zSQcJ ?y;ǀ,Q>A`<\R+r?JCtcr?Caq?SCaq?SCtcr?C ?0<..aq?SC ?0<.. mq?C mq?C ?0<..rw?:c, mq?Crw?:c,p?e,CcJ ?y;ǀ,_ ? ;-Q>A`<\RQ>A`<\R_ ? ;-c{>A`Rc{>A`R_ ? ;- ?0<..c{>A`R ?0<..>A`Q>A`Q ?0<..tcr?C>A`Qtcr?C>A`Q>A`Qtcr?C!>A` P"r?,9Cr?gCyr?򉬾Cyr?򉬾Cr?gC\r?ᥫC!>A` P??@+9>A`9L9>A`9L??@+?z?;+9>A`9L?z?;+?5@@*9>A`9L?5@@* >A`bG >A`bG?5@@*?A.( >A`bG?A.('>A`ĶE-?bbCU$>A`\An?):B''>A`ĶE?A.(>A`\A>A`\A?A.(n?):B'?YDC?BE 1[>A`31[>A`3?BE ?Ek 1[>A`3?Ek ?E&-?bbCU$c?cC)"a>A`#?a>A`#?c?cC)">A`:>A`:c?cC)"?YDC>A`:?YDC>A`09>A`09?YDC1[>A`3L{?:O'B? CB?' CB?' CA?~ CL{?:OL{?:OA?~ C(A?CL{?:O(A?C,5?:U},5?:U}(A?C?A9W'B? CL{?:OcbC?CcbC?CL{?:O?x#;0QG?CcF?kC?=i W?C W?C?>=i?Q= W?C?Q= }yY? C}yY? C?Q= ?c= $ ?=Q[/^? 澓C?c= $ ?c= $ [/^? 澓Cr]?.B输C?c= $ r]?.B输C}yY? Ck?=ɉ\d?پC+?=*+?=*\d?پCFc?۾C?=Q+?=*[/^? 澓C[/^? 澓C+?=*.`?⾓C.`?⾓C+?=*Fc?۾Ck?=ɉ8?<>\d?پC\d?پC8?<>if? ԾCif? ԾC8?<> F?SW>Pif? ԾC F?SW>Pi?"X̾Ci?"X̾C F?SW>Pz?Tj>k&i?"X̾Cz?Tj>k&k?ǾCk?ǾCz?Tj>k&7$n?hCz?Tj>k&?>U$7$n?hC7$n?hC?>U$??>A`%7$n?hC??>A`%o?ٻCo?ٻC??>A`%*?>X'o?ٻC*?>X'@q?:Ctcr?C\r?ᥫC!>A` P!>A` P\r?ᥫCr?gC!>A` Pr?gC??@+??@+r?gC'r?C??@+'r?C9?>*9?>*'r?C@q?:C9?>*@q?:CD?>)D?>)@q?:C*?>X'p?e,Crw?:c,3p?OkC3p?OkCrw?:c,j?p8})3p?OkCj?p8})jn?Cjn?Cj?p8})?s$7[='jn?C?s$7[='ƀl?Cƀl?C?s$7[='6i?C6i?C?s$7[='*?D6[&6i?C*?D6[&g?lCg?lC*?D6[&? 5#g?lC? 5#.?4 L?!T1?a?C?I 2!?I 2!a?CFc?C.?4 ?I 2!g?lCg?lC?I 2!:d?C:d?C?I 2!Fc?CL?!T1?R?, 0ya?Ca?CR?, 0y?8/_a?C?8/_]?-ľC]?-ľC?8/_?z/]?-ľC?z/ȅ[?ȾCȅ[?ȾC?z/Jh?U.ȅ[?ȾCJh?U. W?&,ѾC W?&,ѾCJh?U.t?. W?&,ѾCt?. !U?aվC!U?aվCt?. ?l. !U?aվC?l. pP?߾CpP?߾C?l. xN?⾓CxN?⾓C?l. ?-.|?-.|4?.{'xN?⾓CxN?⾓C4?.{'4?0._ xN?⾓C4?0._ ?;.(J?쾓CL?/B输C?;.?;.L?/B输CL?羓C?;.L?羓CxN?⾓C(J?쾓C?;._I?iC_I?iC?;.!?k&/\_I?iC!?k&/\eu?Ĭ/A?#0E? C%J?A0},%J?A0},E? ClE?yC_I?iCeu?Ĭ/A%J?A0},_I?iC%J?A0},gfF?*CgfF?*C%J?A0},lE?yC?#0?1E? CE? C?1K?2E? CK?2WB?ICWB?ICK?2T B?dCT B?dCK?2<6?3GT B?dC<6?3G??R4z?7N?7C&?A>8^z?7NC&?A>8^?(y5%ǧ@?/LC?(y5%@?ZC@?ZC?(y5%C&?A>8^@?ZCC&?A>8^{@?ԕC?A9W(A?CP@?C?A9WP@?C;?68D;?68DP@?C)@?PC;?68D)@?PCC&?A>8^C&?A>8^)@?PC@?-CC&?A>8^@?-C{@?ԕC?8/_R?, 0y'?StľC ?񫾓Cj?p8})8 ?㪾C8 ?㪾Cj?p8})rw?:c,8 ?㪾Crw?:c,L ?*MCL ?*MCrw?:c,8 ?C* ?dC?I 2!Dx ?2CDx ?2C?I 2!.?4 Dx ?2C.?4 ? 5#Dx ?2C? 5#J ?kCJ ?kC? 5#*?D6[&J ?kC*?D6[& ?񫾓C ?񫾓C*?D6[&?s$7[=' ?񫾓C?s$7[='j?p8})'?StľCR?, 0y[B?ؔC[B?ؔCR?, 0yL?!T1?[B?ؔCL?!T1?* ?dC* ?dCL?!T1??I 2!?,޾C4?.{'k?AپCk?AپC4?.{'?-.|k?AپC?-.|l?!оCl?!оC?-.|?l. l?!оC?l. t?. l?!оCt?. ?cɾC?cɾCt?. Jh?U.?cɾCJh?U.'?StľC'?StľCJh?U.?z/'?StľC?z/?8/_!?k&/\?;.?(뾓C?(뾓C?;.4?0._ ?(뾓C4?0._ ?7龓C?7龓C4?0._ 4?.{'?7龓C4?.{' ?/B输C ?/B输C4?.{'?,޾C?#0%J?A0},[?c6C[?c6C%J?A0},eu?Ĭ/A[?c6Ceu?Ĭ/A?(뾓C?(뾓Ceu?Ĭ/A!?k&/\ ?Cz?7Ne?vgCe?vgCz?7N?(y5%e?vgC?(y5%MT?CMT?C?(y5%??R4MT?C??R4Y?=aCY?=aC??R4<6?3GY?=aC<6?3G+W?MC+W?MC<6?3GK?2+W?MCK?2[?c6C[?c6CK?2?1[?c6C?1?#0?˗7 2?7z?7N𽴝?˗7 2z?7N ?C?˗7 2콣 ?C??ӂ7+??ӂ7+뽣 ?C ?^^C??ӂ7+ ?^^Chf?`7chf?`7c ?^^C ?b79 ?b79 ?^^C ?^c7s ?^c7s ?^^CT ?C ?^c7sT ?CA ? CA ? CSy ?' C ?^c7s ?^c7sSy ?' C1 ? C ?^c7s1 ? CR ?ݓ7i꽭 ?C ?71 ? C1 ? C ?7R ?ݓ7i꽭 ?C7 ?yC ?7뽉 ?77 ?yCҳ ? 7C ?7ҳ ? 7C#7 ?7=#7 ?7=ҳ ? 7C#?72C#7 ?7=#?72Ca ?@8YD9 ?͍96| ?UH9e?\C?\C| ?UH9e ?8/a ?@8Y#?72Cvv ?Ws8{vv ?Ws8{#?72C?dCvv ?Ws8{?dC ?8/ ?8/?dC=?C ?8/=?C?\CS?:}.}?0:QJ?+CJ?+C.}?0:Q?:@D9 ?͍96?\C?:@?:@?\Ca?,eC?:@a?,eCJ?+CXx?ٔ;{`?뾓C}?cu;}?cu;`?뾓CuF?>꾓C}?cu;uF?>꾓C6?/B输C`?뾓CXx?ٔ;{?;4 `?뾓C?;4 J?+CJ?+C?;4 ^?O;< J?+C^?O;< S?:}?оCQ?y6;C?=پC?=پCQ?y6;C}?cu;?=پC}?cu;?,޾C?,޾C}?cu;6?/B输C/?vľC$?[;?5ɾC?5ɾC$?[;B?(";%z?5ɾCB?(";%z?оC?оCB?(";%zQ?y6;C?᯹C?:"?C?C?:"]?u:ަ?C]?u:ަ/?vľC/?vľC]?u:ަ ?d;/?vľC ?d;$?[;h?燱C' ?;'-e ?;%h?燱C-e ?;%?᯹C?᯹C-e ?;%Z?&:t^#?᯹CZ?&:t^#?:"w?CU ?uq;]+}"?4C}"?4CU ?uq;]+ ?=D;~)}"?4C ?=D;~)h?燱Ch?燱C ?=D;~)8 ?&;&1(h?燱C8 ?&;&1(' ?;'rw?:c, ?0<..8 ?C8 ?C ?0<.._ ? ;-?!C8 ?C_?hC_?hC8 ?C_ ? ;-_?hC_ ? ;-M?CM?C_ ? ;-cJ ?y;ǀ,M?CcJ ?y;ǀ,w?Cw?CcJ ?y;ǀ,> ?~;i+w?C> ?~;i+U ?uq;]+> k;H>kp=n>Wk<> k;Hn>Wkk<@ ?팿)\j?팿C@ ?팿&\=j?팿Cj?팿C=@ ?팿&\=?gC=?{gC=?fC=3 ?NhC=??gC=?gC=?gC=??gC=?{gC=?yC=?/C=?ǺC=?J8C=z@?J8C=?Z8C=?ǺC=?C=?yC=&]?/>D?/>ȅ[?ȾC=r]?.B辖C=[/^? 澖C=?*=&>@??C?<֊=>?<֊=DVG?YC=:K?AC=>?<֊=:K?AC=?H<:>?H<:>:K?AC=[/?<>L?WC=4PQ?RC=`?T<4>[/?<>:K?AC=`?T<4>`?T<4>:K?AC=L?WC=?Q= >?>=-}>4PQ?RC=4PQ?RC=?>=-}>? =(>4PQ?RC=? =(>`?T<4>4PQ?RC=GR?cC=?Q= >?Q= >GR?cC= W?C=?Q= > W?C=?*=&>?*=&> W?C=Y?C=?*=&>Y?C=r]?.B辖C=\d?پC=/?n=V9>5`?_⾖C=5`?_⾖C=/?n=V9>?5=f>5`?_⾖C=?5=f>[/^? 澖C=[/^? 澖C=?5=f>?=O>[/^? 澖C=?=O>?*=&>?g>>B?V>>i?"X̾C=i?"X̾C=B?V>>%?k>>#>i?"X̾C=%?k>>#>nf?QԾC=nf?QԾC=%?k>>#> .?<>>nf?QԾC= .?<>>\d?پC=\d?پC= .?<>>`?=>\d?پC=`?=>/?n=V9>9>A`9L>?Ar(>s>A`L>??>+>!>A` P>2?E|?@+>2?E|?@+>!>A` P>s>A`L>2?E|?@+>s>A`L>o? 7@+M*>o? 7@+M*>s>A`L>?Ar(>9>A`9L> >A`q_G>?Ar(>?Ar(> >A`q_G>'>A`"E>?Ar(>'>A`"E>l?6B&>l?6B&>'>A`"E>/?fC$>/?fC$>'>A`"E>>A` ZA>/?fC$>>A` ZA>a>A`-!?>?D>?7Cr">a>A`-!?>a>A`-!?>?7Cr">?CV#>a>A`-!?>?CV#>/?fC$>a>A`-!?>>A`:>?D>?D>>A`:>>A`!.9>?D>>A`!.9>Y>A`3>Y>A`3>?Ew2>|?#@Eo>Y>A`3>|?#@Eo>?D>?Ew2>Y>A`3>)?F>)?F>Y>A`3> >A`@/>)?F> >A`@/>2_??F>2_??F> >A`@/>,>A`J->2_??F>,>A`J->?9F>?9F>,>A`J->=#>A`*>?9F>=#>A`*>o ?3FF>o ?3FF>=#>A`*> ? F > ? F >=#>A`*>J>A`y'> ? F >J>A`y'>R ?E_ >R ?E_ >J>A`y'> >A`k&>R ?E_ > >A`k&>B">A`i">R ?E_ >B">A`i"> ?~RE`> ?~RE`>B">A`i"> ?EN> ?EN>B">A`i">r>A`c> ?6YC>& ?&C>r>A`c> ?EN>r>A`c>N ?CE!>N ?CE!>r>A`c>& ?&C>' ?ZBs>e ?Bs>9$>A`G> ?6YC>r>A`c>9$>A`G> ?6YC>9$>A`G>e ?Bs>9$>A`G>ط>A`;>' ?ZBs>' ?ZBs>ط>A`;>>A`S>' ?ZBs>>A`S>V>A`G>' ?ZBs>V>A`G> ?A> ?A>V>A`G>>A` >a>A`$>?QA>>A` >>A` >?QA> ?A>a>A`$>y??@>zX?U@>a>A`$>zX?U@>?QA>a>A`i$>?=9>a>A`$>a>A`$>?=9>y??@>X>A`1G/>?O;?=9>X>A`1G/>?=9>s >A`*>s >A`*>?=9>(>A`A)>(>A`A)>?=9>a>A`i$> >A`»<>?9;C>sr?uq;c>?O;X>A`1G/>?; >?; >X>A`1G/>(z>A` 1>?; >(z>A` 1>̄?;>̄?;>(z>A` 1>>A`5>̄?;>>A`5>sr?uq;c>sr?uq;c>>A`5>h6>A`s7>sr?uq;c>h6>A`s7> >A`»<> >A`7YC>?(";>_%>A`A>_%>A`A>?(";>?9;C>_%>A`A>?9;C> >A`»<>G>A`.*I>5?.:>>A`E>>A`E>5?.:>R?;>>A`E>R?;> >A`7YC> >A`7YC>R?;>?(";>)@>A`4$N>_ ?;4)%>}>A`5J>}>A`5J>_ ?;4)%>Q?:s^#>}>A`5J>Q?:s^#>G>A`.*I>G>A`.*I>Q?:s^#>5?.:>q>A`}SQ>W ?N@;)>)@>A`4$N>)@>A`4$N>W ?N@;)>{; ?(;.(>)@>A`4$N>{; ?(;.(>_ ?;4)%>Q>A`?\R>G ?;,>q>A`}SQ>q>A`}SQ>G ?;,> ?0;+>q>A`}SQ> ?0;+>W ?N@;)>tcr?C=+r?JC= ?0<,.> ?0<,.>+r?JC=q?SC=3p?OkC=x?:s,>Ôp?e,C=Ôp?e,C=x?:s,> ?0<,.>Ôp?e,C= ?0<,.>`lq?C=`lq?C= ?0<,.>q?SC=Ƭg?lC=2?v3) >i?𰰾C=i?𰰾C=2?v3) >V?57">i?𰰾C=V?57">ol?C=ol?C=V?57">?W7'>ol?C=?W7'>gn?C=gn?C=?W7'>3p?OkC=3p?OkC=?W7'>4m?3p?OkC=4m?x?:s,>ȅ[?ȾC=D?/>]?:ľC=]?:ľC=D?/>&?/m>]?:ľC=&?/m>a?oC=a?oC=&?/m>H?`1c>a?oC=H?`1c>4d?C=4d?C=H?`1c>?2>4d?C=?2>Ƭg?lC=Ƭg?lC=?2>? 2>Ƭg?lC=? 2>2?v3) >ۧ?.o>?.>!U?aվC=!U?aվC=?.><?. >!U?aվC=<?. >V?:ѾC=V?:ѾC=<?. >ȅ[?ȾC=ȅ[?ȾC=<?. >t?. >ȅ[?ȾC=t?. >&]?/>H_I?iC=J?@0@'=v?%/L<>ۧ?.o>!U?aվC=iP?+߾C=ۧ?.o>iP?+߾C=?;.>?;.>iP?+߾C=xN?⾖C=?;.>xN?⾖C=L?羖C=H_I?iC=v?%/L<>h?/>H_I?iC=h?/>BJ? C=BJ? C=h?/>?;.>BJ? C=?;.>DL?/B辖C=DL?/B辖C=?;.>L?羖C=?tv2= ?1P=E? C=E? C= ?1P=(?80!=E? C=(?80!=J?@0@'=E? C=J?@0@'=ֲE?C=ֲE?C=J?@0@'=H_I?iC=E? C= UB?"OC=?tv2=?tv2= UB?"OC= h?3= h?3= UB?"OC=T B? C= h?3=T B? C=?c4=?c4=T B? C=?5<=?5<=T B? C=@?uOC=?5<=@?uOC=[@?ZC= ?71j=?ަ7=?5<= ?71j=?5<=C&?A>8Y=C&?A>8Y=?5<=[@?ZC=C&?A>8Y=[@?ZC={@?$C=P@?C=d?(9q=)@?PC=)@?PC=d?(9q=h?Ĕ8={@?$C=@?.C=C&?A>8Y=C&?A>8Y=@?.C=)@?PC=C&?A>8Y=)@?PC=h?Ĕ8=JA?~ C=B?' C=L{?:=JA?~ C=L{?:=)A?C=L{?:=;?!:Q=)A?C=)A?C=;?!:Q=x?I9W=)A?C=x?I9W=P@?C=P@?C=x?I9W=d?(9q=B?' C={B?. C=L{?:=L{?:={B?. C='B? C=L{?:='B? C=eC?4C=L{?:=eC?4C=?D/;(=?D/;(=eC?4C=+?y?<֊=?Ҥ<= F?;kC= F?;kC=?Ҥ<=+?yA`Q>!>A` P>?g>>i?"X̾C=?>%$>?>%$>i?"X̾C=ܺk?~ǾC=?>%$>ܺk?~ǾC=#n?)jC=?>%$>#n?)jC=6F?>D`%>6F?>D`%>#n?)jC=o?4ͻC=6F?>D`%>o?4ͻC=Ȣ?>)>Ȣ?>)>o?4ͻC=@q?:C=Ȣ?>)>@q?:C=4?D>ǰ*>4?D>ǰ*>@q?:C=r?֙C=4?D>ǰ*>r?֙C=??>+>??>+>r?֙C=r?gC=??>+>r?gC=!>A` P>!>A` P>r?gC="r?6C=!>A` P>"r?6C=yr?C=yr?C=\r?C=>A`Q>>A`Q>\r?C=tcr?C=>A`Q>tcr?C=>A`Q>>A`Q>tcr?C= ?0<,.>>A`Q> ?0<,.>c{>A`R>c{>A`R> ?0<,.>a ?<_->c{>A`R>a ?<_->Q>A`?\R>Q>A`?\R>a ?<_->G ?;,>q_?~C=?{fC=?c4=G ?;,>w?C= ?0;+> ?0;+>w?C=?-ʬC= ?0;+>?-ʬC=W ?N@;)>W ?N@;)>?-ʬC=O ?2C=O ?2C=M?MѱC=W ?N@;)>W ?N@;)>M?MѱC=?6೾C=W ?N@;)>?6೾C={; ?(;.(>{; ?(;.(>?6೾C=?C={; ?(;.(>?C=_ ?;4)%>-0?AxľC=5?.:>?wC=?wC=5?.:>Q?:s^#>?wC=Q?:s^#>?C=?C=Q?:s^#>_ ?;4)%>l?оC=?(";>?ʾC=?ʾC=?(";>R?;>?ʾC=R?;>-0?AxľC=-0?AxľC=R?;>5?.:>?,޾C=8?/B辖C=?; >?; >8?/B辖C=M?꾖C=?; >̄?;>?,޾C=?,޾C=̄?;>sr?uq;c>?,޾C=sr?uq;c>?uھC=?uھC=sr?uq;c>?9;C>?uھC=?9;C>l?оC=l?оC=?9;C>?(";>M?꾖C= ^?B뾖C=?; >?; > ^?B뾖C=L? $C=?; >L? $C=?O;?79 >L? $C=8 ?&9,=8 ?&9,=L? $C=^m?C=?79 >?:->L? $C=L? $C=?:->U?:X>L? $C=U?:X>?O;B ?B8*=?XC=?C=B ?B8*=?C=u ?r8vv=^m?C=?C=8 ?&9,=8 ?&9,=?C=?XC=8 ?&9,=?XC=u{ ?UH9(=u{ ?UH9(=?XC=B ?B8*=?C=?bC=u ?r8vv=u ?r8vv=?bC=-?MC=u ?r8vv=-?MC=a ?@8V=a ?@8V=-?MC=B ?+7=B ?+7=-?MC= ?7= ?7=-?MC=ҳ ?5C= ?7=ҳ ?5C= ?jC= ?jC=: ?C= ?7= ?7=: ?C= ?  C= ?7= ?  C= ^ ?>7O=n[ ?;C=??{7,=& ? C=& ? C=??{7,=q?b7Zn=& ? C=q?b7Zn=Sy ?' C=Sy ?' C=q?b7Zn= ?b79=Sy ?' C= ?b79= ?^c77=Sy ?' C= ?^c77= ?  C= ?  C= ?^c77= ^ ?>7O=n[ ?;C= ?TC=??{7,=??{7,= ?TC=[?#7j"=[?#7j"= ?TC= ?C=q_?~C=?c4=e?jC=?c4=?5<=e?jC=e?jC=?5<=?ަ7=e?jC=?ަ7= ?C= ?C=?ަ7= ?71j= ?C= ?71j=[?#7j"=]?[C= ?1P=?tv2=]?[C=?tv2=?{fC=?{fC=?tv2= h?3=?{fC= h?3=?c4=?뾖C=v?%/L<>J?@0@'=?뾖C=J?@0@'=]?[C=]?[C=J?@0@'=(?80!=]?[C=(?80!= ?1P=ۧ?.o>?뾖C=^?龖C=ۧ?.o>^?龖C=?/B辖C=ۧ?.o>?;.>?뾖C=?뾖C=?;.>h?/>?뾖C=h?/>v?%/L<>?/B辖C=v?a-޾C=ۧ?.o>ۧ?.o>v?a-޾C=-}?ؾC=ۧ?.o>-}?ؾC=?.>?.>-}?ؾC=l?qоC=?.>l?qоC=<?. >&]?/>t?. >l?qоC=l?qоC=t?. ><?. > ?ȾC=&?/m>l?qоC=l?qоC=&?/m>D?/>l?qоC=D?/>&]?/> ?ȾC=e(?qľC=&?/m>&?/m>e(?qľC=4?*C=&?/m>4?*C=H?`1c>H?`1c>4?*C= ?蚹C=H?`1c> ?蚹C=?2>?2> ?蚹C=? 2>? 2> ?蚹C=o ?C=? 2>o ?C=2?v3) >?W7'>o ?C=4m?o ?C=?W7'>V?57">o ?C=V?57">2?v3) >?C=w?C=[?lC=[?lC=w?C=G ?;,>[?lC=G ?;,>)?9#C=)?9#C=G ?;,>a ?<_->)?9#C=a ?<_->T5 ?C=T5 ?C=a ?<_-> ?0<,.>T5 ?C= ?0<,.>x?:s,> ?;IC=T5 ?C=x?:s,> ?;IC=x?:s,>3 ?ܪC=3 ?ܪC=x?:s,>4m?3 ?ܪC=4m? ?I﫾C= ?I﫾C=4m?o ?C= ?I﫾C=o ?C= ?VC=?j@f=E?@=_!?MC=??>+>2?E|?@+>4?D>ǰ*>4?D>ǰ*>2?E|?@+>o? 7@+M*>4?D>ǰ*>o? 7@+M*>Ȣ?>)>o? 7@+M*>5?`C=Ȣ?>)>Ȣ?>)>5?`C= 5?_C=Ȣ?>)> 5?_C=6F?>D`%>6F?>D`%> 5?_C=5?h_C=6F?>D`%>5?h_C=?>%$>?>%$>5?h_C=Y5?h]C=4?[C=B?V>>s5?F]C=s5?F]C=B?V>>?g>>s5?F]C=?g>>Y5?h]C=Y5?h]C=?g>>?>%$>|I3?gXC=`?=>4?HZC=4?HZC=`?=> .?<>>4?HZC= .?<>>4?[C=4?[C= .?<>>%?k>>#>4?[C=%?k>>#>B?V>>?Q= >?*=&>1?~UC=1?~UC=?*=&>?=O>1?~UC=?=O>?5=f>1?~UC=?5=f>|I3?gXC=|I3?gXC=?5=f>/?n=V9>|I3?gXC=/?n=V9>`?=>g,?PC=`?T<4>1-?mQC=1-?mQC=`?T<4>? =(>1-?mQC=? =(>.?*SC=.?*SC=? =(>?>=-}>.?*SC=?>=-}>1?~UC=1?~UC=?>=-}>?Q= >C&)?OC=?Ҥ<=>?<֊=C&)?OC=>?<֊=?H<:>C&)?OC=?H<:>g,?PC=g,?PC=?H<:>[/?<>g,?PC=[/?<>`?T<4>G?1w==@??CF=@$?dkMC=a&?MC="%?2MC=G?1w==G?1w=="%?2MC=@$?dkMC=G?1w==@$?dkMC=cJ?=~R=cJ?=~R=@$?dkMC=P?z>F=@$?dkMC=l#?\MC=5.??r=5.??r=l#?\MC=|"?LMC=5.??r=|"?LMC=?Di?=?Di?=|"?LMC=^??D=^??D=|"?LMC=E?@=E?@=|"?LMC=_!?MC=i?)"C=?kBi=?4 OC=?4 OC=?kBi=q?UB=?4 OC=q?UB=? ?ffNC=? ?ffNC=q?UB=z?B=? ?ffNC=z?B= ?MC= ?MC=z?B=?A= ?MC=?A=_!?MC=_!?MC=?A=?j@f=?4 OC=|?OC=i?)"C=i?)"C=|?OC='?"JC='?"JC=|?OC=d?9QC='?"JC=d?9QC==?yC(C==?yC(C=d?9QC=r?bCM=r?bCM=d?9QC=?RC=r?bCM=?RC=[?@C=[?@C=?RC=?aSC=[?@C=?aSC=[B?D=[B?D=?aSC=a ?CTC=[B?D=a ?CTC= ?g"D= ?g"D=a ?CTC=ڱ!?-4WC= ?g"D=ڱ!?-4WC= ?(D}=N ?CE!>ڱ!?-4WC= ?EN> ?EN>ڱ!?-4WC=#?=YC= ?(D}=ڱ!?-4WC= ?C}> ?C}>ڱ!?-4WC=N ?CE!>"%?h[C=R ?E_ >#?=YC=#?=YC=R ?E_ > ?~RE`>#?=YC= ?~RE`> ?EN>]U&?s\C=T")??^C=o ?3FF>"%?h[C=I%?[C=R ?E_ >R ?E_ >I%?[C=]U&?s\C=R ?E_ >]U&?s\C= ? F > ? F >]U&?s\C=o ?3FF>|?#@Eo>?Ew2>.?yaC=.?yaC=?Ew2>)?F>.?yaC=)?F>g+?4h`C=g+?4h`C=)?F>2_??F>g+?4h`C=2_??F>)?\_C=)?\_C=2_??F>T")??^C=T")??^C=2_??F>?9F>T")??^C=?9F>o ?3FF>|?#@Eo>.?yaC=Yn1?SbC=|?#@Eo>Yn1?SbC=?D>Yn1?SbC=?CV#>?7Cr">Yn1?SbC=?7Cr">?D>l?6B&>/?fC$>0n3?mbC=0n3?mbC=/?fC$>?CV#>0n3?mbC=?CV#>3?x;bC=3?x;bC=?CV#>Yn1?SbC=?Ar(>4?OpaC=o? 7@+M*>o? 7@+M*>4?OpaC= 35?`C=o? 7@+M*> 35?`C=5?`C=L4?aC=4?OpaC=?Ar(>L4?aC=?Ar(>0n3?mbC=0n3?mbC=?Ar(>l?6B&>>тC=t>Vm\>N<>Vm9>>C=w >Rn6>=>In4:>=>In4:>~>]hnEC?>>C=>-mw(J>>Vm $K>>>ЊC=>VmO>\Ż>1C=3Q>7C=@>C=>NlD>(>\lkeB>>k<>>k8>uĪ>yC=>_>k53>n>-C=ˮ>C=->ekLg'>O<>k%>O<>k%>;>lr">ˮ>C=>l|>>l>>"C=>"C=>l>>l">J>TWC=jf>Vm><>5C=<>5C=jf>Vm>>$C=t>l= W>:m= W>Vm= W>A`= W>N`= W>*a= W>*a= W>N`= Wt>Nu`= W2>`= WM >`= WC>Ga= WC>Ga= WM >`= WE >;S`= WC>Ga= WE >;S`= Wg#>)a= Wg#>)a= WE >;S`= W>A`= Wg#>)a= W>A`= W>Mb= W>Mb= W>A`= W>A`= W>Mb= W>A`= W> k= W> k= W>A`= W>Vm= W> k= W>Vm= W>Vm= W>ija= W>*a= Wt>Nu`= W>ija= Wt>Nu`= W%O>a= W%O>a= Wt>Nu`= W>`= W>A`= W>*a= W>Vm= W>Vm= W>*a= W>vk= W>Vm= W>vk= Wt>l= WC>1l= Wg#>k= W2>tl= W2>tl= Wg#>k= W> k= W2>tl= W> k= WM >5l= WM >5l= W> k= W>Vm= WM >5l= W>Vm= WE >l= W%O>Il= W>l= W>uk= W>uk= W>l= Wt>l= W>uk= Wt>l= W>vk= WC>Ga; W>g#>)a; W>>Mb; W>d>Il; W>>l; W>g>uk; W>g>uk; W>>l; W>Q>l; W>g>uk; W>Q>l; W>:>vk; W>:>vk; W>Q>l; W>H/>:m; W>:>vk; W>H/>:m; W>> k; W>> k; W>H/>:m; W>>Mb; W>>`; W>&>`; W>>Ga; W>>Ga; W>&>`; W>)>;S`; W>>Ga; W>)>;S`; W>>)a; W>>)a; W>)>;S`; W>>A`; W>>)a; W>>A`; W>73>Mb; W>73>Mb; W>>A`; W>>A`; W>73>Mb; W>>A`; W>73> k; W>2>`; W>C>Ga; W>M >`; W>M >`; W>C>Ga; W>>A`; W>M >`; W>>A`; W>E >;S`; W>)>l; W>&>5l; W>>Vm; W>>Vm; W>&>5l; W>>tl; W>C>Ga; W>>Mb; W>>A`; W>>A`; W>>Mb; W>H/>:m; W>>A`; W>H/>:m; W>73> k; W>73> k; W>H/>:m; W>>Vm; W>73> k; W>>Vm; W>>k; W>>k; W>>Vm; W>>tl; W>>k; W>>tl; W>>1l; W>蟄?B u蟄?~ u?cp u?cp u蟄?~ u?u u?cp u?u ud?! ud?! u?u u?K2 ud?! u?K2 u? u? u?K2 u^?  u^?  u?K2 u?C u?C u?K2 u?T u?C u?T u )?x u )?x u?T u"?x u>ekn!>>kM%>M>Nk >M>Nk >>kM%>>Kld;>蟄?B u=蟄?B u?cp u蟄?B u=?cp u?cp u=?cp u=?cp ud?! u?cp u=d?! ud?! u=d?! u=d?! u? ud?! u=? u? u=? u=? u^?  u? u=^?  u^?  u=^?  u=^?  u?C u^?  u=?C u?C u=?T u=?T u?K2 u?T u=?K2 u?K2 u=?K2 u=?K2 u?u u?K2 u=?u u?u u=?u u=?u u蟄?~ u?u u=蟄?~ u蟄?~ u=蟄?~ u=蟄?B u=?u u=?u u=蟄?B u=?cp u=?u u=?cp u=?K2 u=?K2 u=?cp u=d?! u=?K2 u=d?! u=? u=?K2 u=? u=^?  u=?K2 u=^?  u=?T u=?T u=^?  u=?C u=?T u=?C u="?x u="?x u=?C u= )?x u=n>mfL^=>p>k"8>p>kp=>n>mfL^=>p>kB>p>kG>n>mfL^=>p>kG>p>Fj[K>n>mfL^=>p>Fj[K>p>K7i,O>n>mfL^=>p>K7i,O>p>gD9Q>n>mfL^=>p>gD9Q>p>fQ>n>mfL^=>p>fQ>p>uTeD9Q>n>mfL^=>p>uTeD9Q>p>d,O>n>mfL^=>p>d,O>p>A c[K>n>mfL^=>p>A c[K>p>8bG>n>mfL^=>p>8bG>p>ǵaB>n>mfL^=>p>ǵaB>p>7ap=>n>mfL^=>p>7ap=>p>ǵa"8>n>mfL^=>p>ǵa"8>p>8b233>n>mfL^=>p>8b233>p>A c.>n>mfL^=>p>A c.>p>dP+>n>mfL^=>p>dP+>p>uTe)>n>mfL^=>p>uTe)>p>f(>n>mfL^=>p>f(>p>g)>n>mfL^=>p>g)>p>K7iP+>n>mfL^=>p>K7iP+>p>Fj.>n>mfL^=>p>Fj.>p>k233>n>mfL^=>p>k233>p>k"8>p>k233>>k53>>_>k<>p>kp=>>k8>>k8>p>kp=>p>k"8>>k8>p>k"8>|>kz7>p>k233>>_p>k"8>p>k"8>>_|>kz7>p>Fj.>ǿ>Xj1>p>k233>p>k233>ǿ>Xj1>>k53>p>A c.>p>8b233>>Mb2>>Mb2>p>8b233>p>ǵa"8>>Mb2>p>ǵa"8>>ǵa"8>>ǵa"8>p>ǵa"8>p>7ap=>>ǵa"8>p>7ap=>>7ap=>>7ap=>p>7ap=>p>ǵaB>>7ap=>p>ǵaB>>ǵaB>>ǵaB>p>ǵaB>p>8bG>>ǵaB>p>8bG>>8bG>>8bG>p>8bG>p>A c[K>>8bG>p>A c[K>>A c[K>>A c[K>p>A c[K>p>d,O>>A c[K>p>d,O>>d,O>>d,O>p>d,O>p>uTeD9Q>>d,O>p>uTeD9Q>>uTeD9Q>>uTeD9Q>p>uTeD9Q>p>fQ>>uTeD9Q>p>fQ>>fQ>>fQ>p>fQ>p>gD9Q>>fQ>p>gD9Q>>gD9Q>>gD9Q>p>gD9Q>p>K7i,O>>gD9Q>p>K7i,O>>K7i,O>>K7i,O>p>K7i,O>p>Fj[K>>K7i,O>p>Fj[K>>Fj[K>>Fj[K>p>Fj[K>>kG>>kG>p>Fj[K>p>kG>>kG>p>kG>p>kB>>kG>p>kB>>kB>>kB>p>kB>p>kp=>>kB>p>kp=>>k<>>Mb2>>A c.>p>A c.>p>A c.>>A c.>>dP+>p>A c.>>dP+>p>dP+>p>dP+>>dP+>>uTe)>p>dP+>>uTe)>p>uTe)>p>uTe)>>uTe)>>f(>p>uTe)>>f(>p>f(>p>f(>>f(>>g)>p>f(>>g)>p>g)>p>g)>>g)>>K7iP+>p>g)>>K7iP+>p>K7iP+>p>K7iP+>>K7iP+>>Fj.>p>K7iP+>>Fj.>p>Fj.>p>Fj.>>Fj.>>^jA0>p>Fj.>>^jA0>ǿ>Xj1>>6g+.>73>fz.>>fz.>>fz.>73>fz.>73>e+.>>fz.>73>e+.>>e+.>>e+.>73>e+.>73>ide#0>>e+.>73>ide#0>>ide#0>>ide#0>73>ide#0>73>cL2>>ide#0>73>cL2>>cL2>>cL2>73>cL2>73>Tc5>>cL2>73>Tc5>>Tc5>>Tc5>73>Tc5>73>Qbw9>>Tc5>73>Qbw9>>Qbw9>>Qbw9>73>Qbw9>73>bp=>>Qbw9>73>bp=>>bp=>>bp=>73>bp=>73>QbiA>>bp=>73>QbiA>>QbiA>>QbiA>73>QbiA>73>TcE>>QbiA>73>TcE>>TcE>>TcE>73>TcE>73>cMH>>TcE>73>cMH>>cMH>>cMH>73>cMH>73>idJ>>cMH>73>idJ>>idJ>>idJ>73>idJ>73>eGL>>idJ>73>eGL>>eGL>>eGL>73>eGL>73>fL>>eGL>73>fL>>fL>>fL>73>fL>73>6gGL>>fL>73>6gGL>>6gGL>>6gGL>73>6gGL>73>uhJ>>6gGL>73>uhJ>>uhJ>>uhJ>73>uhJ>73>E_iMH>>uhJ>73>E_iMH>>E_iMH>>E_iMH>73>E_iMH>73>?iE>>E_iMH>73>?iE>>?iE>>?iE>73>?iE>73>]jiA>>?iE>73>]jiA>>]jiA>>]jiA>73>]jiA>73>~jp=>>]jiA>73>~jp=>>~jp=>>~jp=>73>~jp=>73>]jw9>>~jp=>73>]jw9>>]jw9>>]jw9>73>]jw9>73>?i5>>]jw9>73>?i5>>?i5>>?i5>73>?i5>73>E_iL2>>?i5>73>E_iL2>>E_iL2>>E_iL2>73>E_iL2>73>uhe#0>>E_iL2>73>uhe#0>>uhe#0>>uhe#0>73>uhe#0>73>6g+.>>uhe#0>73>6g+.>>6g+.>>6g+.>73>6g+.>73>fz.>>fp=>>?iE>>]jiA>>fp=>>]jiA>>~jp=>>fp=>>~jp=>>]jw9>>fp=>>]jw9>>?i5>>fp=>>?i5>>E_iL2>>fp=>>E_iL2>>uhe#0>>fp=>>uhe#0>>6g+.>>fp=>>6g+.>>fz.>>fp=>>fz.>>e+.>>fp=>>e+.>>ide#0>>fp=>>ide#0>>cL2>>fp=>>cL2>>Tc5>>fp=>>Tc5>>Qbw9>>fp=>>Qbw9>>bp=>>fp=>>bp=>>QbiA>>fp=>>QbiA>>TcE>>fp=>>TcE>>cMH>>fp=>>cMH>>idJ>>fp=>>idJ>>eGL>>fp=>>eGL>>fL>>fp=>>fL>>6gGL>>fp=>>6gGL>>uhJ>>fp=>>uhJ>>E_iMH>>fp=>>E_iMH>>?iE> ?C}>N ?CE!>RN ?CC=N ?CE!>& ?&C>RN ?CC=RN ?CC=& ?&C> ?6YC>RN ?CC= ?6YC> ?NCC=[?@C= ?D*DC=?CC=[?@C=?CC=r?bCM=[?@C=[B?D= ?D*DC= ?D*DC=[B?D= ?g"D= ?D*DC= ?g"D=RN ?CC=RN ?CC= ?g"D= ?(D}=RN ?CC= ?(D}= ?C}>?kBi=i?)"C=1*?NCC=1*?NCC=i?)"C='?"JC=1*?NCC='?"JC=?CC=?CC='?"JC==?yC(C=?CC==?yC(C=r?bCM=?kBi=1*?NCC=q?UB=q?UB=1*?NCC=?BC=q?UB=?BC=}?IBC=q?UB=}?IBC=z?B=z?B=}?IBC=ف?@C=z?B=ف?@C=?A=^??D=E?@=%?k?C=%?k?C=E?@=?j@f=%?k?C=?j@f=ف?@C=ف?@C=?j@f=?A=^??D=%?k?C=?Di?=?Di?=%?k?C=5.??r=5.??r=%?k?C=e]?=C=5.??r=e]?=C=P?z>F=+?yF=;?!:Q=ف?:C=x?I9W=x?I9W=ف?:C=}?1=9C=;?!:Q=L{?:=ف?:C=ف?:C=L{?:=%?8Y=?,7C=C&?A>8Y=z@?J8C=z@?J8C=C&?A>8Y=h?Ĕ8= ?w]7C= ?b79=?,7C=?,7C= ?b79=q?b7Zn=q?b7Zn=??{7,=?,7C=?,7C=??{7,=[?#7j"=RN ?,7C= ^ ?>7O= ?^c77=RN ?,7C= ?^c77= ?w]7C= ?w]7C= ?^c77= ?b79= ^ ?>7O=RN ?,7C= ?7= ?7=RN ?,7C= ?[88C= ?7= ?[88C=B ?+7=B ?+7= ?[88C=a ?@8V=a ?@8V= ?[88C=u ?r8vv=u ?r8vv= ?[88C=Qp ?1=9C=u ?r8vv=Qp ?1=9C=B ?B8*=?:->?79 >|k?:C=|k?:C=?79 >8 ?&9,=|k?:C=8 ?&9,=Qp ?1=9C=Qp ?1=9C=8 ?&9,=u{ ?UH9(=Qp ?1=9C=u{ ?UH9(=B ?B8*=?:->|k?:C=U?:X>U?:X>|k?:C=L?L??=C=?O;L??=9>?=C=?=C=?=9>?O;?=C=L?k?C=y??@>Qp ?IBC=' ?ZBs>|k?@C=|k?@C=' ?ZBs> ?A> ?A>?QA>|k?@C=|k?@C=?QA>L?k?C=L?k?C=?QA>zX?U@>L?k?C=zX?U@>y??@> ?NCC= ?6YC>e ?Bs> ?NCC=e ?Bs>Qp ?IBC=Qp ?IBC=e ?Bs>' ?ZBs>?@5C=?4C=>Vm<>>Vm<>?4C=O ?PXC=>Vm<>O ?PXC=T>Vmt>T>Vmt>O ?PXC=S>Vml>S>Vml>O ?PXC=?yuC=S>Vml>?yuC=V>Vmˉ>> m~o> ?eC=?5C=>Vm<>6>VmR>?@5C=?@5C=6>VmR>> m~o>?@5C=> m~o>?5C= ?eC=> m~o>9>l> ?eC=9>l>3 ?큂C=3 ?큂C=9>l>H>Jlh>3 ?큂C=H>Jlh>5 ?C=5 ?C=H>Jlh>o ?3mC=o ?3mC=H>Jlh>>Hl->o ?3mC=>Hl->W?NC=>Hl->>l8>W?NC=W?NC=>l8>>{DlD>W?NC=>{DlD>>#lG>W?NC=>#lG>>Kld;>W?NC=>Kld;>>kM%>W?NC=>kM%>t?ĄC=">Ņkn.>aA?򅿖C=ӳ?yC=">Ņkn.>ӳ?yC=y?GC=>kM%>>k'>t?ĄC=t?ĄC=>k'>y?GC=y?GC=>k'>">Ņkn.>aA?򅿖C=">Ņkn.>V>k1>aA?򅿖C=V>k1>?\=C=IG>Ml9>?C=>l6>>l6>?C=,?C=>l6>,?C=?\=C=>l6>?\=C=V>k1>IG>Ml9>>mnl:>?C=?C=>mnl:>q>Ҥl=>?C=q>Ҥl=>-?GC=-?GC=q>Ҥl=>">la>>-?GC=">la>>?C=?C=">la>>>AlF@>>AlF@>U'>nlpBA>?C=?C=U'>nlpBA> %> mC>?C= %> mC>?xbC=?xbC= %> mC>^?>ЊC=^?>ЊC= %> mC>`>VmkF>#?ȘC=R? C=i>VmΪO>i>VmΪO>R? C=^?>ЊC=i>VmΪO>^?>ЊC=i6>VmhO>i6>VmhO>^?>ЊC=]d>VmT0J>]d>VmT0J>^?>ЊC=`>VmkF>73>Vm S>?⋿C=i>VmΪO>i>VmΪO>?⋿C=#?ȘC=?AC=@?C=73>Vm S>73>Vm S>@?C=?⋿C=?AC=73>Vm S>?5AC=?5AC=73>Vm S>">VmCT>?5AC=">VmCT>+D?@C=+D?@C=">VmCT>?C=>-mw(J>V ?>ЊC=ؐ>VmO>>-mw(J>ؐ>VmO>>VmN>>-mw(J>>VmN>>Vm $K>">VmCT>>Vm|S>?C=?C=>Vm|S>!?􋿖C=!?􋿖C=>Vm|S>s>VmďQ>!?􋿖C=s>VmďQ> ?C= ?C=s>VmďQ>ؐ>VmO> ?C=ؐ>VmO>^ ? C=^ ? C=ؐ>VmO>V ?>ЊC=~>]hnEC?>#Y?-C=V ?>ЊC=~>]hnEC?>V ?>ЊC=T>=npA>T>=npA>V ?>ЊC=>-mw(J>~>]hnEC?>=>In4:>#Y?-C=#Y?-C==>In4:>w >Rn6>#Y?-C=w >Rn6>NT?/C=NT?/C=w >Rn6>k?bC=w >Rn6>>un4>k?bC=k?bC=>un4>i6>ne1>k?bC=i6>ne1>?C=?C=i6>ne1> ?m9C= ?m9C=i6>ne1>W:>mr.> ?m9C=W:>mr.>?톿C=?톿C=W:>mr.>#?񅿖C=#?񅿖C=W:>mr.>+>Tom,>#?񅿖C=+>Tom,>>Vm*>>Vm*>+>Tom,>>Vm,>?yuC=<?󓂿C=V>Vmˉ>V>Vmˉ><?󓂿C=r?}肿C=V>Vmˉ>r?}肿C=U>VmW&>r?}肿C=z ?`C=U>VmW&>U>VmW&>z ?`C=(?C=U>VmW&>(?C=7>Vm>7>Vm>(?C=?C=7>Vm>?C=>Vm">>Vm">?C=?ǺC=>Vm">?ǺC=>Vm)>>Vm)>?ǺC=?/C=>Vm)>?/C=>Vm*>>Vm*>?/C=?yC=>Vm*>?yC=#?񅿖C=F >a=>Pa=ٞ?GaC=>Ր`/* >R>Y`48 >5?|`C=5?|`C=R>Y`48 >">_`|>%?,}`C=%>P`_>f>q`M>.?1cC=73>Mb\#>D/?[wcC=h-?xjC=73> k\#>$>V+k:D#>H>Jlh>9>l>!?UlC=!?UlC=9>l>> m~o>ne>;,l)>@o?lC=v>ml>ne>;,l)>>1l >@o?lC=@o?lC=>1l >>k=>k=V>ekR=@o?lC= ?*kC=73>i6$=|?iC=73>Nhqm=??gC=3 ?NhC=73>i6$=Y?\hC=|?iC=73>Nhqm=?{gC=??gC=p>fp=p>d,Op>uTeC9Qp>fp=p>uTeC9Qp>fQp>fp=p>fQp>gC9Qp>fp=p>gC9Qp>K7i,Op>fp=p>K7i,Op>Fj[Kp>fp=p>Fj[Kp>kGp>fp=p>kGp>kBp>fp=p>kBp>kp=p>fp=p>kp=p>k\%8p>fp=p>k\%8p>k433p>fp=p>k433p>Fj.p>fp=p>Fj.p>K7iN+p>fp=p>K7iN+p>g)p>fp=p>g)p>f(p>fp=p>f(p>uTe)p>fp=p>uTe)p>dN+p>fp=p>dN+p>A c.p>fp=p>A c.p>8b433p>fp=p>8b433p>ǵa\%8p>fp=p>ǵa\%8p>7ap=p>fp=p>7ap=p>ǵaBp>fp=p>ǵaBp>8bGp>fp=p>8bGp>A c[Kp>fp=p>A c[Kp>d,O> k;H>kp=>kB>k8>ǘk\%8p>k\%8ǿ>Xj1p>Fj.>k53>k53p>Fj.p>k433p>k\%8>ǘk\%8p>k433p>k433>ǘk\%8>_k433>_k53>k8p>k\%8>kp=>kp=p>k\%8p>kp=>kp=p>kp=p>kB>kp=p>kB>kB>kBp>kBp>kG>kBp>kG> k;H> k;Hp>kGp>Fj[K> k;Hp>Fj[K>Fj[K>Fj[Kp>Fj[Kp>K7i,O>Fj[Kp>K7i,O>K7i,O>K7i,Op>K7i,Op>gC9Q>K7i,Op>gC9Q>gC9Q>gC9Qp>gC9Qp>fQ>gC9Qp>fQ>fQ>fQp>fQp>uTeC9Q>fQp>uTeC9Q>uTeC9Q>uTeC9Qp>uTeC9Qp>d,O>uTeC9Qp>d,O>d,O>d,Op>d,Op>A c[K>d,Op>A c[K>A c[K>A c[Kp>A c[K>Mb;H>Mb;Hp>A c[Kp>8bG>Mb;Hp>8bGp>ǵaB>Mb;Hp>ǵaB>ǵaB>ǵaBp>ǵaBp>7ap=>ǵaBp>7ap=>7ap=>7ap=p>7ap=p>ǵa\%8>7ap=p>ǵa\%8>ǵa\%8>ǵa\%8p>ǵa\%8p>8b433>ǵa\%8p>8b433>8b433>8b433p>8b433p>A c.>8b433p>A c.>A c.>A c.p>A c.p>dN+>A c.p>dN+>dN+>dN+p>dN+p>uTe)>dN+p>uTe)>uTe)>uTe)p>uTe)p>f(>uTe)p>f(>f(>f(p>f(p>g)>f(p>g)>g)>g)p>g)p>K7iN+>g)p>K7iN+>K7iN+>K7iN+p>K7iN+p>Fj.>K7iN+p>Fj.>Fj.>Fj.p>Fj.ǿ>Xj1>Fj.ǿ>Xj1>^j?0>7ap=>ǵa\%8>ǵaB>ǵaB>ǵa\%8>8b433>ǵaB>8b433>Mb;H>e+.73>fz.>fz.>fz.73>fz.73>6g+.>fz.73>6g+.>6g+.>6g+.73>6g+.73>uhc#0>6g+.73>uhc#0>uhc#0>uhc#073>uhc#0\>vf=>uhc#0\>vf=>E_iJ2>E_iJ2\>vf=73>?i5>E_iJ273>?i5>?i5>?i573>?i573>]jw9>?i573>]jw9>]jw9>]jw973>]jw973>~jp=>]jw973>~jp=>~jp=>~jp=73>~jp=73>]jiA>~jp=73>]jiA>]jiA>]jiA73>]jiA73>?iE>]jiA73>?iE>?iE>?iE73>?iE73>E_iMH>?iE73>E_iMH>E_iMH>E_iMH73>E_iMH73>uhJ>E_iMH73>uhJ>uhJ>uhJ73>uhJ73>6gGL>uhJ73>6gGL>6gGL>6gGL73>6gGL73>fL>6gGL73>fL>fL>fL73>fL73>eGL>fL73>eGL>eGL>eGL73>eGL73>idJ>eGL73>idJ>idJ>idJ73>idJ73>cMH>idJ73>cMH>cMH>cMH73>cMH73>TcE>cMH73>TcE>TcE>TcE73>TcE73>QbiA>TcE73>QbiA>QbiA>QbiA73>QbiA73>bp=>QbiA73>bp=>bp=>bp=73>bp=73>Qbw9>bp=73>Qbw9>Qbw9>Qbw973>Qbw973>Tc5>Qbw973>Tc5>Tc5>Tc573>Tc573>cJ2>Tc573>cJ2>cJ2>cJ273>cJ273>idc#0>cJ273>idc#0>idc#0>idc#073>idc#073>e+.>idc#073>e+.>e+.>e+.73>e+.73>fz.\>vf=>bp=>Qbw9\>vf=>Qbw9>Tc5\>vf=>Tc5>cJ2\>vf=>cJ2>idc#0\>vf=>idc#0>e+.\>vf=>e+.>fz.\>vf=>fz.>6g+.\>vf=>6g+.>uhc#0\>vf=>E_iJ2>?i5\>vf=>?i5>]jw9\>vf=>]jw9>~jp=\>vf=>~jp=>]jiA\>vf=>]jiA>?iE\>vf=>?iE>E_iMH\>vf=>E_iMH>uhJ\>vf=>uhJ>6gGL\>vf=>6gGL>fL\>vf=>fL>eGL\>vf=>eGL>idJ\>vf=>idJ>cMH\>vf=>cMH>TcE\>vf=>TcE>QbiA\>vf=>QbiA>bp=D?>)?5@@*9?>*9?>*?5@@*?z?;+9?>*?z?;+??@+)3? bCn?):B'?A.()3? bC?A.(A3?aCA3?aC?A.(4?2aCA3?aC4?2aC4?aC4?2aC?A.(?5@@*4?2aC?5@@*M5?<`CM5?<`C?5@@*D?>)M5?<`CD?>)5?_C.?naC?BE 1?3KbC1?3KbC?BE \1?IbC?BE ?YDC\1?IbC\1?IbC?YDCc?cC)"\1?IbCc?cC)"2?MEbC2?MEbCc?cC)")3? bC)3? bCc?cC)"-?bbCU$)3? bC-?bbCU$n?):B'6)?^C?9F2_?c@F6)?^C2_?c@F+?+j`C+?+j`C2_?c@F?E&+?+j`C?E&-?aC-?aC?E&.?naC.?naC?E&?Ek .?naC?Ek ?BE % ?:E) ?.QE8#?YC8#?YC) ?.QED ?Ej 8#?YCD ?Ej $?%ZC$?%ZCD ?Ej )f ?dE. $?%ZC)f ?dE. \&?nn\C\&?nn\C)f ?dE. ?<F \&?nn\C ?<F 6)?^C6)?^C ?<F \ ? .F36)?^C\ ? .F3?9Fr!?62WCN ?D0 8#?YC8#?YCN ?D0 % ?:E; ?RCN ?D0 r!?62WC; ?RCr!?62WC ?C ?C r!?62WC>!?}VC ?C >!?}VCN ?DN ?D>!?}VCOb ?;TCN ?DOb ?;TCSD?DSD?DOb ?;TC?SCb?QC?CMQ?RCQ?RC?CM⽼?CɓQ?RC?Cɓ?SC?SC?Cɓ‹?#D-?SC‹?#D-SD?Dクb?QC(?LC.ڽ?CM⽸b?QC݀?OC(?LC.ڽ(?LC.ڽ݀?OCS ?B ׽?@ٽC}?r@ؽ ?KMC ?KMCC}?r@ؽ;?+eA׽ ?KMC;?+eA׽? ?ffNC? ?ffNC;?+eA׽ {?GB׽? ?ffNC {?GB׽?NC?NC {?GB׽݀?OC݀?OC {?GB׽S ?B ׽ ?KMC!?MC?@ٽ?@ٽ!?MC"?HMC?@ٽ"?HMC%?k?")%? MCn[?=#?J^MC#?J^MCn[?=콅/?5?]#?J^MC/?5?]"?HMC"?HMC/?5?]%?k?":?!<@??C=i.?x#SC?>=iw?$=F3?dXC+?=* 2?kVC 2?kVC+?=*?=Q 2?kVC?=QX1?UCX1?UC?=Q?c= $ X1?UC?c= $ ?Q= )3?XC8?<>F3?dXCF3?dXC8?<>k?=ɉF3?dXCk?=ɉ+?=* F?SW>P8?<>4?[C4?[C8?<>)3?XCֲ5?q]C?>U$z?Tj>k&ֲ5?q]Cz?Tj>k&4?[C4?[Cz?Tj>k& F?SW>PD?>)*?>X'5?_C5?_C*?>X'??>A`%5?_C??>A`%A5?8_CA5?8_C??>A`%?>U$A5?8_C?>U$ֲ5?q]C5 ?B ?JCB ?NCC ?8/| ?UH9eQp ?1=9CS?:}^?O;< L?8^z@?J8CC&?A>8^?,7C?,7CC&?A>8^エ?˗7 2콴?˗7 2C&?A>8^?7ف?:CL{?:O,5?:U}ف?:C,5?:U}}?1=9C}?1=9C,5?:U}?A9W?c&(0?ۢdC0?eC73>e*#1?TeCX[1?c@fC)?9aC>za.!>kabF>|`h%?ގ`C3>w` >n`Z%[!?T`C0>z`,?`C>k`R z>`d?`C>`NI?`CX?'aC-:>a}>ma6X}>ma6X>aX?'aC]=?4bC&>#bY?ebC73>Nhr ?NhC/?gC?iC?N]iC73>i6$>lHne>;,l&f?DlC,?lCz>Wld%>l ,?lC%>l >l% [>uk>kN ,?KkCl>ullѠ)?%lC>l >kN >cuk!,?KkC6c1?fCJ1?\gC73>fz+@ ?|&\=@ ?팿&\=U>J &\=U>J &\=@ ?팿&\=A >팿&\=U>J &\=A >팿&\=A >J &\=A >J )\A >팿)\U>J )\h ף>N ף>U >Zhef>ZA+ef>N޾A+ef>N޾A+ef>O޾hef>Zhef>Qȟ>Q+̌>+̌>+̌>ȟ>Qȟ>O޾hffN޾>ffZ>ffZ>ffZhffO޾hffȟ̌Q̌Q̌QȟȟZ팿O޾팿߾팿 ף߾팿 ף팿 ףZ팿O޾팿=Z팿=팿 ף>팿 ף>߾팿 ף>O޾팿=Q팿팿_팿q=_팿q=B팿q=Q팿팿=Q팿=Q팿.>Q팿.>팿.>팿=(ܾS(ܾhO޾팿Sh팿Q팿hSZ팿hS(ܾSO޾팿Z팿Z팿S(ܾS팿Q팿SSS팿(ܾS=O޾팿=(ܾh=Z팿=S=h=S=h=Q팿=팿=h=S=(ܾS=(ܾh=پ팿=팿=h=S=(ܾS=S=Z팿=Z팿=O޾팿=(ܾS=Q팿=팿=S=S=S=Q팿=x.W[Gax.㥛'Kx.Sx.W[Ga>x.S=x.㥛4K=,IL=,ILFILFILFIL=,IL=x.㥛4K=x.S=x.Sx.Sx.㥛'Kx.㥛4K=,!`F!`FILFIL,IL,!`,*Oa>,IL=FIL=FIL=F*Oa>,*Oa>,6iff>F6iff>F팿iff>F팿iff>,팿iff>,6iff>,팿fffF팿fffFIKfffFIKfff,IKfff,팿fffx.팿팿팿Ga팿Gax.팿Gax.팿팿=x.팿=x.팿Ga>x.팿Ga>팿Ga>팿=x.팿x.SSS팿x.팿x.S=x.팿=팿=팿=S=x.S=W[Ga㥛'KFILFILF!`W[GaSj팿Ga팿Ga팿SW[GaFIKfffF팿fffF팿fff팿GaW[Gax.팿Ga팿GaF팿fffF팿fff,팿fffx.팿Ga㥛4K=FIL=FILFIL㥛'K㥛4K=FIL=㥛4K=W[Ga>W[Ga>F*Oa>FIL=팿Ga>j>S=S=팿=팿Ga>W[Ga>팿Ga>F팿iff>F팿iff>F6iff>W[Ga>FIKfffF!`,!`,!`,IKfffFIKfffF*Oa>F6iff>,6iff>,6iff>,*Oa>F*Oa>x.W[Gax.팿Ga,팿fff,팿fff,IKfffx.W[Gax.W[Ga,!`,IL,ILx.㥛'Kx.W[Ga,IL=,*Oa>x.W[Ga>x.W[Ga>x.㥛4K=,IL=,IL=x.㥛4K=x.㥛'Kx.㥛'K,IL,IL=㥛4K=㥛'Kjjj>㥛4K=x.W[Ga>,6iff>,팿iff>,팿iff>x.팿Ga>x.W[Ga>팿Ga>x.팿Ga>,팿iff>,팿iff>F팿iff>팿Ga>x.팿x.팿Gax.W[Gax.W[Gax.Sx.팿x.팿=x.S=x.W[Ga>x.W[Ga>x.팿Ga>x.팿=9 ףOdhSh ף(ܾh(ܾh ף(ܾ9 ף(ܾ9 ף(ܾS(ܾh(ܾh=(ܾS=(ܾN ף>(ܾN ף>(ܾh ף>(ܾh=O9 ףh ףh ףSOL=U >YJ>YJ>^=L=OL=^=^=^O^=YJ>پYJ>پYJ>پ^=^=^=پ^=پ^پ^^^=(ܾh ף>(ܾN ף>پ̒ef>پ̒ef>پhef>(ܾh ף>(ܾU >پYJ>پ̒ef>پ̒ef>(ܾN ף>(ܾU >(ܾh ף>پ팿Ǣ>پ팿=پ팿=(ܾh=(ܾh ף>(ܾL=پ^=پYJ>پYJ>(ܾU >(ܾL=پ팿پ팿Ǣ(ܾh ף(ܾh ף(ܾhپ팿پ^پ^=(ܾL=(ܾL=(ܾOپ^پ'S᣾پ^(ܾO(ܾO(ܾdپ'S᣾پ팿ǢDؾ팿 ףپhffپhff(ܾh ףپ팿Ǣ(ܾ9 ףپlffپ'S᣾پ'S᣾(ܾd(ܾ9 ףپlff(ܾ9 ף(ܾh ף(ܾh ףپhffپlffDؾ팿 ף>پ팿Ǣ>(ܾh ף>(ܾh ף>پhef>Dؾ팿 ף>l팿 ף>Dؾ팿 ף>پhef>پhef>hef>l팿 ף>پ팿Ǣ>Dؾ팿 ף>l팿 ף>l팿 ף>팿Ǣ>پ팿Ǣ>YJ>̒ef>پ̒ef>پ̒ef>پYJ>YJ>팿Ǣ>l팿 ף>hef>hef>h ף>팿Ǣ>'S᣾^پ^پ^پ'S᣾'S᣾Dؾ팿 ףl팿 ףhffhffپhffDؾ팿 ףlff'S᣾پ'S᣾پ'S᣾پlfflff̒ef>N ף>h ף>h ף>hef>̒ef>h ף>h=팿=팿=팿Ǣ>h ף>U >N ף>̒ef>̒ef>YJ>U >'S᣾dOO^'S᣾l팿 ף팿Ǣh ףh ףhffl팿 ף9 ףd'S᣾'S᣾lff9 ףh ף9 ףlfflffhffh ףپ팿=팿=S=S=(ܾS=پ팿=h(ܾh(ܾS(ܾSShپ팿=پ팿Ǣ>팿Ǣ>팿Ǣ>팿=پ팿=lffپlffپhffپhffhfflffپ̒ef>̒ef>hef>hef>پhef>پ̒ef>SS=L=L=OSL=S=h ף>h ף>U >L=hk쌿پ팿پ팿(ܾhhl팿 ףDؾ팿 ףپ팿Ǣپ팿Ǣ팿Ǣl팿 ף팿Ǣپ팿Ǣپ팿پ팿k쌿팿Ǣh ף팿Ǣk쌿k쌿hh ףhq=לq=̌̌ȟhq=̌לq=@Mۈ@MۈG板Čȟ_팿q=팿.팿.hq=ȟG板C@MۈĠ☽Ġ☽rhG板Chq=팿.팿팿hhq=rhĠ☽Ġ=Ġ=rh=rhrh=Ġ=O>O>5ꝿщ>rh=5ꝿщ>O>眿o=>眿o=>+̌>5ꝿщ>팿.>ho=>h=h=팿=팿.>ȟ>+̌>眿o=>眿o=>ho=>ȟ>G板CQG板CQ̌Q̌̌G板CQȟB팿q=_팿q=_팿q=ȟQȟrhQrhQG板CQG板CG板Crh5ꝿщ>Q5ꝿщ>Qrh=Qrh=rh=5ꝿщ>_팿o=>ȟ>ho=>ho=>팿.>_팿o=>+̌>Q+̌>Q5ꝿщ>Q5ꝿщ>5ꝿщ>+̌>팿.>Q팿.>B팿o=>B팿o=>_팿o=>팿.>B팿o=>Qȟ>ȟ>ȟ>_팿o=>B팿o=>Q팿.>ho=>Qȟ>Qȟ>B팿o=>Q팿.>QȟQ̌לq=לq=hq=QȟQG板C@Mۈלq=לq=Q̌QG板Chq=Q팿.B팿q=B팿q=Qȟhq=QrhĠ☽@Mۈ@MۈQG板CQrhhQ팿Q팿.Q팿.hq=hQrh=Ġ=Ġ☽Ġ☽QrhQrh=Q5ꝿщ>O>Ġ=Ġ=Qrh=Q5ꝿщ>ho=>Q팿.>Q팿=Q팿=h=ho=>Q+̌>眿o=>O>O>Q5ꝿщ>Q+̌>ho=>眿o=>Q+̌>Q+̌>Qȟ>ho=>Qrh=Qrhrhrhrh=Qrh=(ܾh ף(ܾџ ףN޾>ffN޾>ffO޾hff(ܾh ףN޾>ff(ܾџ ף(ܾ.Vd(ܾ.VdN޾렿᣾N޾>ffO޾hff߾팿 ףO޾팿ǢO޾팿Ǣ(ܾh ףO޾hff(ܾ}?˽N޾T㥿̽N޾렿᣾N޾렿᣾(ܾ.Vd(ܾ}?˽(ܾ}?=N޾T㥿=N޾T㥿̽N޾T㥿̽(ܾ}?˽(ܾ}?=(ܾh ףO޾팿ǢO޾팿O޾팿(ܾh(ܾh ף(ܾZ >N޾|J>N޾T㥿=N޾T㥿=(ܾ}?=(ܾZ >(ܾm矿 ף>N޾A+ef>N޾|J>N޾|J>(ܾZ >(ܾm矿 ף>O޾팿Ǣ>(ܾh ף>(ܾh=(ܾh=O޾팿=O޾팿Ǣ>O޾hef>N޾A+ef>(ܾm矿 ף>(ܾm矿 ף>(ܾh ף>O޾hef>N޾렿᣾Z렿᣾Z>ffZ>ffN޾>ffN޾렿᣾Zhff팿 ף߾팿 ף߾팿 ףO޾hffZhffN޾T㥿̽ZT㥿̽Z렿᣾Z렿᣾N޾렿᣾N޾T㥿̽N޾|J>Z|J>ZT㥿=ZT㥿=N޾T㥿=N޾|J>߾팿 ף>O޾hef>(ܾh ף>(ܾh ף>O޾팿Ǣ>߾팿 ף>N޾A+ef>ZA+ef>Z|J>Z|J>N޾|J>N޾A+ef>팿 ף>Zhef>O޾hef>O޾hef>߾팿 ף>팿 ף>Z팿Ǣ>h ף>Zhef>Zhef>팿 ף>Z팿Ǣ>ZhffZ>ffџ ףџ ףh ףZhffZ렿᣾.Vdџ ףџ ףZ>ffZ렿᣾h ףZ팿Ǣ팿 ף팿 ףZhffh ףZT㥿̽}?˽.Vd.VdZ렿᣾ZT㥿̽ZT㥿=}?=}?˽}?˽ZT㥿̽ZT㥿=hZ팿Z팿ǢZ팿Ǣh ףhZ|J>Z >}?=}?=ZT㥿=Z|J>h ף>Z팿Ǣ>Z팿=Z팿=h=h ף>ZA+ef>m矿 ף>Z >Z >Z|J>ZA+ef>h ף>m矿 ף>ZA+ef>ZA+ef>Zhef>h ף>ZT㥿=ZT㥿̽N޾T㥿̽N޾T㥿̽N޾T㥿=ZT㥿=jSS=S=j>jלq=Shhhq=לq=לq=@MۈĠ☽Ġ☽Sלq=Ġ=O>眿o=>眿o=>S=Ġ=SĠ☽Ġ=Ġ=S=SS㥛'K㥛4K=㥛4K=S=SSĠ☽@Mۈ@Mۈלq=SSS=Ġ=Ġ=Ġ☽SS=眿o=>O>O>Ġ=S=S=ho=>眿o=>џ ף.Vd}?˽}?˽Sџ ףџ ףSh ף}?˽}?=S=S=S}?˽S=}?=Z >Z >m矿 ף>S=S=m矿 ף>h ף>(ܾџ ף(ܾS(ܾ}?˽(ܾ}?˽(ܾ.Vd(ܾџ ף(ܾџ ף(ܾh ף(ܾS(ܾ}?˽(ܾS(ܾS=(ܾS=(ܾ}?=(ܾ}?˽(ܾS=(ܾm矿 ף>(ܾZ >(ܾZ >(ܾ}?=(ܾS=(ܾS=(ܾh ף>(ܾm矿 ף>(ܾS=(ܾL=(ܾU >(ܾU >(ܾN ף>(ܾS=(ܾS(ܾO(ܾL=(ܾL=(ܾS=(ܾS(ܾ9 ף(ܾd(ܾO(ܾO(ܾS(ܾ9 ף )?x u"?x u"?ru"?ru )?ru )?x u )?x u )?ru )?ru= )?ru= )?x u= )?x u"?x u?T u?T u=?T u="?x u="?x u )?x u )?x u=?C u=?C u=?C u )?x uff?Z)\?Z)\?Z&\=?Z&\=ff?Z&\=ff?Z)\ff?r)\ff?Z)\ff?Z&\=ff?Z&\=ff?r&\=ff?r)\ff?r)\ff?r&\= )?ru= )?ru= )?ruff?r)\@ ?|)\@ ?팿)\@ ?팿&\=@ ?팿&\=@ ?|&\=@ ?|)\@ ?|)\@ ?|&\=U>J &\=U>J &\=U>J )\@ ?|)\U>J )\U>J &\=A >J &\=A >J &\=A >J )\U>J )\j?팿C`?IC`?IC=`?IC=j?팿C=j?팿Cڶh?C uui?~ u蟄?~ u蟄?~ u蟄?B uڶh?C u蟄?B u=蟄?~ u=ui?~ Q=ui?~ Q=ڶh?C Q=蟄?B u=蟄?~ u=蟄?~ uui?~ uui?~ uui?~ Q=蟄?~ u=ڶh?C u蟄?B u蟄?B u=蟄?B u=ڶh?C Q=ڶh?C u`?ICO#?rC#?rC=#?rC=`?IC=`?ICG!?f CG!?rCG!?rC=G!?rC=G!?f C=G!?f C?r)\?r&\=?Z&\=?Z&\=?Z)\?r)\ )?x u= )?ru="?ru="?ru="?x u= )?x u=ff?r&\=#?rC="?ru="?ru= )?ru=ff?r&\="?x u"?x u="?ru="?ru="?ru"?x u\?rC]?d?C]?d?C=]?d?C=?rC=\?rC]?d?Cn??Cn??C=n??C=]?d?C=]?d?Cn??C~?@C~?@C=~?@C=n??C=n??C~?@CRk?u2@CRk?u2@C=Rk?u2@C=~?@C=~?@CA >팿)\@ ?팿)\@ ?|)\@ ?|)\U>J )\A >팿)\A >팿&\=A >팿)\A >J )\A >J )\A >J &\=A >팿&\=@ ?팿)\A >팿)\:>팿C:>팿Cj?팿C@ ?팿)\j?팿C:>팿C`?ICRk?u2@C:>팿C:>팿C=:>팿C=Rk?u2@C=Rk?u2@C@ ?팿&\=j?팿C=:>팿C=:>팿C=A >팿&\=@ ?팿&\=j?팿C=`?IC=:>팿C=A >팿)\A >팿&\=:>팿C=:>팿C=:>팿CA >팿)\G!?f CG!?f C=NB?rC=NB?rC=*B?rCG!?f C\?rC?rC=?r&\=?r&\=?r)\\?rC0?r)\?Z)\ff?Z)\ff?r)\0?r)\ff?Z)\0?r)\?r)\?Z)\\?rC?r)\0?r)\0?r)\G!?rC\?rCff?r)\O#?rC*B?rC*B?rC0?r)\ff?r)\?r&\=,1?r&\=?Z&\=G!?rC=,1?r&\=?r&\=?r&\=?rC=G!?rC=ff?r&\=,1?r&\=NB?rC=NB?rC=#?rC=ff?r&\="?ru*B?rCO#?rC`?IC=Rk?u2@C=:>팿C=`?IC:>팿CRk?u2@C`?ICRk?u2@C~?@C`?IC~?@Cn??C`?IC=~?@C=Rk?u2@C=`?IC=n??C=~?@C=`?IC=#?rC=NB?rC=NB?rC=G!?f C=`?IC=G!?rC=?rC=]?d?C=]?d?C=G!?f C=G!?rC=`?IC=G!?f C=]?d?C=]?d?C=n??C=`?IC=*B?rC"?ru`?IC`?ICG!?f C*B?rC]?d?C\?rCG!?rCG!?rCG!?f C]?d?C]?d?CG!?f C`?IC`?ICn??C]?d?CG!?rC0?r)\,1?r&\=,1?r&\=G!?rC=G!?rCNB?rC=,1?r&\=0?r)\0?r)\*B?rCNB?rC=,1?r&\=ff?r&\=ff?Z&\=ff?Z&\=?Z&\=,1?r&\=73>xc6',?%bCWe/?cC>l8>"%?|lC=%?3lC=?cC?mscC73>dbh73>c?dC73>Ryc+9">Ņkn.>>k'>73> k\#>sB>HCz>jn?>RnY8\>Gn7Az>jn?sB>HC>CC>V싿CG>Vm^OG>Vm`O>C>V싿C=>C=>kp=\s>k?>l{k@C>V싿C=>늿C=)>C=C>V싿C)>C>늿C>TC=>.9C=f>Vm'>B>;pC=m>VmJ>>Vmbb>Iӹ>@ދC=j>VmnR>q>VmS>Iӹ>@ދCq>VmSj>VmnR$>V+k:D#>>kM%>>ekn!>?eeC=73>1e\=73>e=շ?ycC=$?q3dC=73>Ryc3=ٞ?GaC=>Pa=>Ma<>?lC=%>l6 >z>Wld>d>yX`[>k`R ,?`C%?ގ`CI>k ay3>w` M>Nk >>Kld;>>#lG>m+?aC=߿>^a@>>!an!>73>Mb\#->!bF#,?aC>n`Z%>"%?`q`C=R!?Mb`C=W:>mr.>> C=>ㅿC=> C;>1nx/>ㅿC=#>A`*>,>A`J-> >A`@/> >nlH/0>VmnJ>늿C63>]l3hH>>늿C=/0>VmϛJ>>TC>Vmem>VmJ>un4>>uC=|>QC=:?kC,>;kxpV>ekL]>&a~&>ٞ?GaC=>Ma<>S?/*aC=>`a>>`Q>>l% >%>l6 >?lC=)?-VlC=>#lG>>{DlD>>ekn!>M>Nk >)?M(lC=)?M(lC=,?KkC=>ekn!>3>lc@!?lC,?lC,?lCi1>lf3>lc@>n`Z%>R!?Mb`C=}?)W`C=}?)W`C=&>]`C>>n`Z%>>n`Z%>Y` ?wE`C ?wE`C[!?T`C>n`Z%>Ր`/* >5?|`C=?`C=?`C=z>`d>>Ր`/* >">l>>l% >?lC=?lC=?lC=">l>>lHf?DlC[?kC[?kC>k>lH>`a>S?/*aC=ٞ?GaC=ٞ?GaC=]>&a~&>>`a>;>1nx/i6>~m->yC>yC>ㅿC;>1nx/W:>mr.>>ㅿC=>yC=>yC=+>Tom,>W:>mr.>>l G >nlH>늿C>늿C׷>>ЊC>l G>lG>׷>>ЊC=>늿C=>늿C=63>]l3hH>>lG>>Vm>$C>.9C>.9Cf>Vm'>Vm> C=W:>mr.>i6>ne1>i6>ne1>#>.C=> C=#>.C=i6>ne1>>un4>>un4>|>QC=#>.C=f>Vm'>.9C>TC>TCm>VmJf>Vm'>Vmg*>>Vm,>+>Tom,>+>Tom,>>yC=>Vmg*>>Vmg*>yCi6>~m-i6>~m->VmI,>Vmg*:?kCV>ekL>k>k[?kC:?kCS?/*aC=>`Q>z>`d>z>`d>?`C=S?/*aC=">lA> m=7>f m 7>f m >l% ">lB>A` ș>wE`ϸ ?wE`C ?wE`C>Y`B>A` >A`>&>]`C>}?)W`C=}?)W`C=ș>wE`1>>A`>>l% 7>f m i1>lfi1>lf,?lC>l% )?-VlC=)?M(lC=M>Nk >M>Nk >>#lG>)?-VlC=73>fz+73>e*X[1?c@fCX[1?c@fC6c1?fC73>fz+b1?fC=73>fx+>73>}h#*>73>}h#*>(1?gC=b1?fC=J1?\gC&1?gC73>Mh}t*73>Mh}t*73>fz+J1?\gC73>Zib(>k/?ySiC=50?PhC=50?PhC=73>Mht*>73>Zib(>&1?gCN0?LOhC73>Zie(73>Zie(73>Mh}t*&1?gCN0?LOhC50?miC73>iX'73>iX'73>Zie(N0?LOhC0?ۢdC73>c&(73>xc6'73>xc6'We/?cC0?ۢdC50?miC tj\$73>tj\$73>iX'50?miC73> k\#>h-?xjC=:/?iC=:/?iC=73>i'>73> k\#>73>i'>:/?iC=k/?ySiC=k/?ySiC=73>Zib(>73>i'>h-?xjC=$>V+k:D#>>ekn!>>ekn!>,?KkC=h-?xjC= >cuk!$>V+k>D#|.?djC|.?djC,?KkC >cuk!o>aF >߿>^a@>m+?aC=m+?aC=')?7aC=o>aF > U*?lCѠ)?%lCl>ulll>ull?>/l U*?lCf>q`M>o>aF >')?7aC=')?7aC=%?,}`C=f>q`M>o>aF +'?7`C)?9aC)?9aC>kao>aF %?ގ`CbF>|`h0>z`0>z`[!?T`C%?ގ`C#?f mC=>Hl->H>Jlh>H>Jlh>!?UlC=#?f mC=">_`|>ș>wE`1>}?)W`C=}?)W`C=5?|`C=">_`|>>`N?`C,?`C,?`Cz>`d>`Nv>mlz>Wld,?lC,?lC?lCv>ml?lC=z>Wld>v>ml>v>ml>@o?lC=?lC=-:>aX?'aCI?`CI?`C>`N-:>ane>;,l&v>ml?lC?lCf?DlCne>;,l&&>#bY=F >a=ٞ?GaC=ٞ?GaC=BC?5bC=&>#bY=73> ks=73>i6$= ?*kC= ?*kC==k?WQkC=73> ks=73>Ryc3=73>db1=3w?bC=3w?bC=շ?ycC=73>Ryc3=BC?5bC=3w?bC=73>db1=73>db1=&>#bY=BC?5bC=73> ks?RjC?iC?iC73>i6$73> ks?N]iCU?hC73>:iM#73>:iM#73>i6$?N]iC73>Nhr73>:iM#U?hCU?hC ?NhC73>NhrP?gCh?l9gC73>Nhr73>Nhr/?gCP?gC?fC73>Yfp73>Nhr73>Nhrh?l9gC?fCi?[eC73>1e`73>Yfp73>Yfp潛?fCi?[eC?fC=?{gC=73>Nhqm=73>Nhqm=73>Yfp=?fC=4 >k4/ӳ?yCaA?򅿓CaA?򅿓CV>k14 >k4/>un4>w >Rn6>>C=>C=>uC=>un4> >ln 6>uC>C>C >nK7 >ln 6P>C>yC>Vmg*>Vmg*>Vm"P>C>Vm!B:>PuCP>CP>C>Vm">Vm!>Vmg*>>yC=P>C=P>C=>Vmp">>Vmg*>>Vm!>>Vmp">P>C=P>C=B:>PuC=>Vm!>>𢃿CB:>PuC>Vm!>Vm!I>Vmf>𢃿C3Q>7C>VmO>Vm $K>Vm $K>>ЊC3Q>7C>Vm $K>>VmO>3Q>7C=3Q>7C=>>ЊC=>Vm $K>>pC>𢃿CI>VmfI>VmfW>Vm >pC>𢃿C=I>Vmc>>Vm!>>Vm!>B:>PuC=>𢃿C=>pC=W>Vm>I>Vmc>I>Vmc>>𢃿C=>pC=B>;pC>тCW>Vm W>Vm N<>VmB>;pCN<>Vm9>W>Vm>>pC=>pC=>тC=N<>Vm9>>TCB>;pCt>VmZt>VmZ>Vme>TCŴ>f6C_Z>VmIT9$>Vm4T9$>Vm4TH>&CŴ>f6C9$>Vm4T>_Z>VmIT>Ŵ>f6C=Ŵ>f6C=H>&C=9$>Vm4T>B>;pC=>Vmbb>t>Vm\>t>Vm\>>тC=B>;pC=>$C=jf>Vm>f>Vm'>f>Vm'>>.9C=>$C=>Vmjf>Vm<>5C<>5C>$C>Vm>R~C=>Vm >jf>Vm>jf>Vm>J>TWC=>R~C=E >;S`; W>>A`; W>>A`= W>A`= WE >;S`= WE >;S`; W>M >`; W>E >;S`; W>E >;S`= WE >;S`= WM >`= WM >`; W>2>`; W>M >`; W>M >`= WM >`= W2>`= W2>`; W>>NlD7>ZlE FBW>承CBW>承C@>C>NlD>NlD>@>C=BW>承C=BW>承C=7>ZlE F>>NlD>`P>JcC= 4>Rtlu>>l|>>l|>>"C=`P>JcC=C>Ga; W>2>`; W>2>`= W2>`= WC>Ga= WC>Ga; W>`P>JcC*>dplA;>l$u";>l$u"ˮ>C`P>JcCg#>)a; W>C>Ga; W>C>Ga= WC>Ga= Wg#>)a= Wg#>)a; W>O<>kv%D+>~k'h>yCh>yCˮ>CO<>kv%>^j?0ǿ>Xj1>慿C>慿C> kۢ,>^j?0> kۢ,>慿Ch>yCh>yCD+>~k'> kۢ,>^jA0>> kܢ,>h>yC=h>yC=>慿C=>^jA0>ǿ>Xj1>k53X>AHCX>AHC>慿Cǿ>Xj1X>AHC=ǿ>Xj1>>^jA0>>^jA0>>慿C=X>AHC=>k53>_-Cn>-CX>AHC>k53>ǘk\%8>k8uĪ>yCuĪ>yC>RC>ǘk\%8>RC=|>kz7>>_>_n>-C=>RC=>_ǘk\%8>RC>RCn>-C>_kz7>>RC=uĪ>yC=uĪ>yC=>k8>|>kz7>ǿ>Xj1>X>AHC=n>-C=n>-C=>k53>ǿ>Xj1>->ekLg'>ˮ>C=h>yC=h>yC=> kܢ,>->ekLg'>;>lr"> 4>Rtlu>`P>JcC=`P>JcC=ˮ>C=;>lr">>l*>dplA`P>JcC`P>JcC>"C>l7>ZlE F>l G׷>>ЊC׷>>ЊCBW>承C7>ZlE F7>ZlE F>BW>承C=׷>>ЊC=׷>>ЊC=>lG>7>ZlE F>1>Cl>R@>$C=>"C=>"C=>l">1>Cl>>R~CJ>TWCjf>Vmjf>Vm>Vm">R~C_Z>VmIT>->Vmw#S>{>#C={>#C=Ŵ>f6C=_Z>VmIT>_Z>VmITŴ>f6C{>#C{>#C->Vmw#S_Z>VmITIӹ>@ދC=\Ż>1C=>VmO>>VmO>j>VmnR>Iӹ>@ދC=Iӹ>@ދCj>VmnR>VmO>VmO\Ż>1CIӹ>@ދCsB>HC=T>=npA>>-mw(J>>-mw(J>>>ЊC=sB>HC=~>]hnEC?>T>=npA>sB>HC=sB>HC=>C=~>]hnEC?>4 >k4/> k֨'y?GCy?GCӳ?yC4 >k4/?fC=73>Yfp=73>1e\=73>1e\=?eeC=?fC=?dC73>c73>1e`73>1e`i?[eC?dC3 ?NhC=Y?\hC=73>i6$=73>i6$=73>Nhqm=3 ?NhC=73>dbh?mscC?ebC?ebC&>#bY73>dbh73> ks,>;kxp:?kC:?kC?RjC73> ksX?'aC>a&>#bY&>#bY]=?4bCX?'aC73> ks==k?WQkC=@o?lC=@o?lC=V>ekR=73> ks=!?UlC=> m~o>">l>">l>?lC=!?UlC=3>lc@>lu$?lCu$?lC!?lC3>lc@%?,}`C="%?`q`C=>n`Z%>>n`Z%>%>P`_>%?,}`C=,?aC->!bF#>za.!>za.!)?9aC,?aC,?KkC U*?lC?>/l?>/l[>uk,?KkC *> b"">73>Mb\#>.?1cC=.?1cC=%,?T0bC= *> b"">$>V+k>D#73>tj\$ V+k>D#73>Mb\#>73>c&(>f0?gdC=f0?gdC=D/?[wcC=73>Mb\#>73>c&(0?eC#1?TeC#1?TeC73>e*73>c&((1?gC=73>}h#*>73>Mht*>73>Mht*>50?PhC=(1?gC={S1?rfC=73>e*>73>fx+>73>fx+>b1?fC={S1?rfC=>k'>>kM%>$>V+k:D#>$>V+k:D#>73> k\#>>k'>>Vm $K\>Gn7AsB>HCsB>HC>>ЊC>Vm $KuĪ>yC=r>-l4=A>u>-k?>u>-k?>>k<>uĪ>yC=>l{k@r>-l?AuĪ>yCuĪ>yC>kp=>l{k@r>-l4=A>uĪ>yC=@>C=@>C=(>\lkeB>r>-l4=A>@>CuĪ>yCr>-l?Ar>-l?A(>\lieB@>C/0>VmϛJ>>늿C=C>V싿C=C>V싿C=G>Vm`O>/0>VmϛJ>/0>VmnJG>Vm^OC>V싿CC>V싿C>늿C/0>VmnJ->Vmw#S>G>Vm`O>>C=>C={>#C=->Vmw#S>>CG>Vm^O->Vmw#S->Vmw#S{>#C>Cm>VmJ>B>;pC=>TC=>TC=f>Vm'>m>VmJ>H>&C=H>?C=>VmS>>VmS>9$>Vm4T>H>&C=>VmKTH>?CH>&CH>&C9$>Vm4T>VmKTH>?C=Iӹ>@ދC=q>VmS>q>VmS>>VmS>H>?C=q>VmSIӹ>@ދCH>?CH>?C>VmKTq>VmS >nK7>CsB>HCsB>HC>RnY8 >nK7&>nЖ3|>QC>uC>uC >ln 6&>nЖ3W:>odn0#>.C|>QC|>QC&>nЖ3W:>odn0#>.CW:>odn0;>1nx/;>1nx/> C#>.C?eeC=73>e=73>cx=73>cx=w?)eC=?eeC=$?q3dC=w?)eC=73>cx=73>cx=73>Ryc3=$?q3dC=73>Ryc+9?dC?cC?cC73>dbh73>Ryc+9d>yX`[,?`C ?wE`C ?wE`Cș>wE`ϸd>yX`["%?|lC=>l8>>Hl->>Hl->#?f mC="%?|lC=>la>l %?alC%?alCu$?lC>lI>k ay%?ގ`C+'?7`C+'?7`Co>aF I>k ay)?-VlC=>{DlD>>l8>>l8>%?3lC=)?-VlC=Ѡ)?%lC%?alCa>l a>l >l Ѡ)?%lC%,?T0bC=m+?aC=>!an!>>!an!> *> b"">%,?T0bC=73>xc6'73>Mb\#,?aC,?aC,?%bC73>xc6'73>c&(> 1?%SeC=0?:eC=0?:eC=f0?gdC=73>c&(>{S1?rfC= 1?%SeC=73>c&(>73>c&(>73>e*>{S1?rfC=>Vm">l"R@>$C>l">"CR@>$C>Vm"R@>$C(̴>ۂC?\=C>}k4V>k1V>k1aA?򅿓C?\=Ct?ĄC> k֨'>kM%t?ĄC>kM%>kN t?ĄC>kN [>uk>Vm >1>Cl>(̴>ۂC=1>Cl>(̴>ۂC=R@>$C=>Vm >>R~C=(̴>ۂC=n>mfL^=>p>kp=>p>kB>g#>)a= W>Mb= W>Mb; W>>Mb; W>g#>)a; W>g#>)a= W> k= W> k; W>>Mb; W>>Mb; W>>Mb= W> k= Wg#>k= W:>vk; W>> k; W>> k; W>> k= Wg#>k= WC>1l= Wg>uk; W>:>vk; W>:>vk; W>g#>k= WC>1l= W2>tl= Wd>Il; W>g>uk; W>g>uk; W>C>1l= W2>tl= WM >5l= W>l; W>d>Il; W>d>Il; W>2>tl= WM >5l= WE >l= WQ>l; W>>l; W>>l; W>M >5l= WE >l= W>Vm= WH/>:m; W>Q>l; W>Q>l; W>E >l= W>Vm= W>Vm= W>Vm; W>H/>:m; W>H/>:m; W>>Vm= W>Vm= W)>l; W>>Vm; W>>Vm= W>Vm= W>:m= W)>l; W>&>5l; W>)>l; W>>:m= W>:m= Wt>l= W&>5l; W>>tl; W>&>5l; W>t>l= Wt>l= W>l= W>tl; W>>1l; W>>tl; W>>l= W>l= W%O>Il= W>1l; W>>k; W>>1l; W>%O>Il= W%O>Il= W>uk= W>k; W>73> k; W>>k; W>>uk= W>uk= W>vk= W73> k; W>>vk= W>*a= W73>Mb; W>73>Mb; W>73> k; W>>vk= W>*a= W>)a; W>73>Mb; W>>*a= W>ija= W>)a; W>>)a; W>73>Mb; W>>*a= W>)a; W>>ija= W%O>a= W%O>a= W>Ga; W>>)a; W>>Ga; W>%O>a= W>`= W>`= W>`; W>>Ga; W>>`; W>>`= Wt>Nu`= Wt>Nu`= W&>`; W>>`; W>&>`; W>t>Nu`= W>N`= W>N`= W)>;S`; W>&>`; W>)>;S`; W>>N`= W>A`= W>A`= W>A`; W>)>;S`; W>>A`= W>A`= W>A`; W>>A`; W>>A`; W>>A`= WS=眿o=>ho=> )?B̾ )?|?B̾|?B̾ )?|?|?B̾=|?= )?B̾= )?B̾=|?= )?=|?B̾m=|?m=|?B̾=|?B̾=|?m=|?=*y}?B̾=?B̾=*y}?=*y}?=?B̾=?=*y}??*y}?B̾*y}?B̾??B̾|?B̾|?|?B̾m|?B̾m|?|?m*y}?᥻=*y}?᥻m=j?᥻=j?᥻=*y}?᥻m=?᥻m=j?᥻=?᥻m=j?᥻j?᥻?᥻m=?᥻mj?᥻?᥻m*y}?᥻*y}?᥻?᥻m*y}?᥻m*y}?f;*y}?f;mj?f;j?f;*y}?f;m?f;mj?f;?f;mj?f;=j?f;=?f;m?f;m=j?f;=?f;m=*y}?f;=*y}?f;=?f;m=*y}?f;m=|?B̾m=*y}?B̾=|?m=|?m=*y}?B̾=*y}?=|?m=*y}?=*y}?᥻m=*y}?B̾=|?B̾m=*y}?f;m=?=?᥻m=*y}?=*y}?=?᥻m=*y}?᥻m=*y}?᥻=|?=*y}?᥻m=*y}?᥻m=|?=|?m=|?B̾=*y}?f;=|?B̾m=|?B̾m=*y}?f;=*y}?f;m=?f;m=?B̾=*y}?f;m=*y}?f;m=?B̾=*y}?B̾=?B̾=5׍?B̾m=?=?=5׍?B̾m=5׍?m=?=5׍?m=?᥻m=j?᥻= )?=*y}?᥻=*y}?᥻= )?=|?= )?B̾=j?f;=|?B̾=|?B̾=j?f;=*y}?f;=?B̾=?f;m=5׍?B̾m=5׍?m?᥻m5׍?m=5׍?m=?᥻m?᥻m=j?᥻ )?j?᥻=j?᥻= )? )?= )?B̾j?f; )?B̾= )?B̾=j?f;j?f;=?f;m5׍?B̾m?f;m=?f;m=5׍?B̾m5׍?B̾m=5׍?B̾m?B̾5׍?m5׍?m?B̾?5׍?m??᥻m*y}?᥻|?j?᥻j?᥻|? )?|?B̾*y}?f; )?B̾ )?B̾*y}?f;j?f;5׍?B̾m?f;m?B̾*y}?*y}?᥻m??*y}?᥻m?᥻m*y}?᥻m|?m*y}?᥻*y}?᥻|?m|?|?B̾m*y}?f;m|?B̾|?B̾*y}?f;m*y}?f;*y}?f;m*y}?B̾?f;m?f;m*y}?B̾?B̾*y}?᥻m*y}?|?m*y}?f;m|?B̾m*y}?B̾*y}?B̾|?B̾m*y}?*y}?|?B̾m|?m )? )?|?|? )?|?|?=|?= )?= )?=|?= )?=|?m=|?m=|?=|?=|?m=|?=*y}?=?=)y}?=)y}?=?=?=)y}??*y}?*y}???|?|?|?m|?m|?|?m)y}?\=)y}?\m=j?\=j?\=)y}?\m=?\m=j?\=?\m=j?\j?\?\m=?\mj?\?\m)y}?\)y}?\?\m)y}?\m*y}?᥻*y}?᥻mj?᥻j?᥻*y}?᥻m?᥻mj?᥻?᥻mj?᥻=j?᥻=?᥻m?᥻m=j?᥻=?᥻m=*y}?᥻=*y}?᥻=?᥻m=*y}?᥻m=|?m=*y}?=|?m=|?m=*y}?=)y}?=|?m=)y}?=)y}?\m=*y}?=|?m=*y}?᥻m=?=?\m=)y}?=)y}?=?\m=)y}?\m=)y}?\=|?=)y}?\m=)y}?\m=|?=|?m=|?=*y}?᥻=|?m=|?m=*y}?᥻=*y}?᥻m=?᥻m=?=*y}?᥻m=*y}?᥻m=?=*y}?=?=5׍?m=?=?=5׍?m=5׍?m=?=5׍?m=?\m=j?\= )?=)y}?\=)y}?\= )?=|?= )?=j?᥻=|?=|?=j?᥻=*y}?᥻=?=?᥻m=5׍?m=5׍?m?\m5׍?m=5׍?m=?\m?\m=j?\ )?j?\=j?\= )? )?= )?j?᥻ )?= )?=j?᥻j?᥻=?᥻m5׍?m?᥻m=?᥻m=5׍?m5׍?m=5׍?m?5׍?m5׍?m??5׍?m??\m)y}?\|?j?\j?\|? )?|?*y}?᥻ )? )?*y}?᥻j?᥻5׍?m?᥻m?)y}?)y}?\m??)y}?\m?\m)y}?\m|?m)y}?\)y}?\|?m|?|?m*y}?᥻m|?|?*y}?᥻m*y}?᥻*y}?᥻m*y}??᥻m?᥻m*y}??)y}?\m)y}?|?m*y}?᥻m|?m*y}?*y}?|?m)y}?)y}?|?m|?mL*?zx鼈+?{x1?'fmx1?'fmx鼈+?{x$3?2rnxL*?zmL*?zx1?'fmm1?'fmmL*?zx1?'fmx)2?nEG?)z*?jz*?jzEG?)z????=EG?)z=*?jz=*?jz=EG?)z=)2?n=1?'fmm=1?'fmx<=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}     $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u           , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | }      $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u ,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu          , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | } !! !! ! !!!$!&!$!%!4!5!!$<$=$L$M$T$V$T$U$d$e$l$n$l$m$|$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ % %%%%%$%%%,%.%,%-%<%=%D%F%D%E%T%U%\%^%\%]%l%m%t%v%t%u%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&,&-&4&6&4&5&D&E&L&N&L&M&\&]&d&f&d&e&t&u&|&~&|&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' '' ' '''$'&'$'%'4'5'<'>'<'='L'M'T'V'T'U'd'e'l'n'l'm'|'}''''''''''''''''''''''''''''''''''' ( ((((($(%(,(.(,(-(<(=(D(F(D(E(T(U(\(^(\(](l(m(t(v(t(u((((((((((((((((((((((((((((((((()))))))))),)-)4)6)4)5)D)E)L)N)L)M)\)])d)f)d)e)t)u)|)~)|)})))))))))))))))))))))))))))))))** ** * ***$*&*$*%*4*5*<*>*<*=*L*M*T*V*T*U*d*e*l*n*l*m*|*}*********************************** + +++++$+%+,+.+,+-+<+=+D+F+D+E+T+U+\+^+\+]+l+m+t+v+t+u+++++++++++++++++++++++++++++++++,,,,,,,,,,,,-,4,6,4,5,D,E,L,N,L,M,\,],d,f,d,e,t,u,|,~,|,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- -- - ---$-&-$-%-4-5-<->-<-=-L-M-T-V-T-U-d-e-l-n-l-m-|-}----------------------- %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~       % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~   %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~      % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~ !!!!!!%!&!-!/!-!.!=!>!E!G!E!F!U!V!]!_!]!^!m!n!u!w!u!v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""-"."5"7"5"6"E"F"M"O"M"N"]"^"e"g"e"f"u"v"}""}"~"""""""""""""""""""""""""""""""## ## ####%#'#%#&#5#6#=#?#=#>#M#N#U#W#U#V#e#f#m#o#m#n#}#~################################### $$$$$$%$&$-$/$-$.$=$>$E$G$E$F$U$V$]$_$]$^$m$n$u$w$u$v$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%-%.%5%7%5%6%E%F%M%O%M%N%]%^%e%g%e%f%u%v%}%%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& && &&&&%&'&%&&&5&6&=&?&=&>&M&N&U&W&U&V&e&f&m&o&m&n&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ''''''%'&'-'/'-'.'='>'E'G'E'F'U'V']'_']'^'m'n'u'w'u'v'''''''''''''''''''''''''''''''''((((((((((-(.(5(7(5(6(E(F(M(O(M(N(](^(e(g(e(f(u(v(}((}(~((((((((((((((((((((((((((((((()) )) ))))%)')%)&)5)6)=)?)=)>)M)N)U)W)U)V)e)f)m)o)m)n)})~))))))))))))))))))))))))))))))))))) ******%*&*-*/*-*.*=*>*E*G*E*F*U*V*]*_*]*^*m*n*u*w*u*v*********************************++++++++++-+.+5+7+5+6+E+F+M+O+M+N+]+^+e+g+e+f+u+v+}++}+~+++++++++++++++++++++++++++++++,, ,, ,,,,%,',%,&,5,6,=,?,=,>,M,N,U,W,U,V,e,f,m,o,m,n,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ------%-&---/---.-=->-E-G-E-F-U-V-]-_-]-^-m-n-u-w-u-v--------------------- ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw         . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~        & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w          . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~   &'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~       & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w !!!!!!! !!!.!/!6!8!6!7!F!G!N!P!N!O!^!_!f!h!f!g!v!w!~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""&"("&"'"6"7">"@">"?"N"O"V"X"V"W"f"g"n"p"n"o"~"""""""""""""""""""""""""""""""""#""######&#'#.#0#.#/#>#?#F#H#F#G#V#W#^#`#^#_#n#o#v#x#v#w#################################$$$$$$$ $$$.$/$6$8$6$7$F$G$N$P$N$O$^$_$f$h$f$g$v$w$~$$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%&%(%&%'%6%7%>%@%>%?%N%O%V%X%V%W%f%g%n%p%n%o%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%&&&&&&&&'&.&0&.&/&>&?&F&H&F&G&V&W&^&`&^&_&n&o&v&x&v&w&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' '''.'/'6'8'6'7'F'G'N'P'N'O'^'_'f'h'f'g'v'w'~''~''''''''''''''''''''''''''''''''((((((((&(((&('(6(7(>(@(>(?(N(O(V(X(V(W(f(g(n(p(n(o(~((((((((((((((((((((((((((((((((()(())))))&)').)0).)/)>)?)F)H)F)G)V)W)^)`)^)_)n)o)v)x)v)w)))))))))))))))))))))))))))))))))******* ***.*/*6*8*6*7*F*G*N*P*N*O*^*_*f*h*f*g*v*w*~**~********************************++++++++&+(+&+'+6+7+>+@+>+?+N+O+V+X+V+W+f+g+n+p+n+o+~+++++++++++++++++++++++++++++++++,++,,,,,,&,',.,0,.,/,>,?,F,H,F,G,V,W,^,`,^,_,n,o,v,x,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- ---.-/-6-8-6-7-F-G-N-P-N-O-^-_-f-h-f-g-v-w-~--~-------------------- ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx       ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x          ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x  ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x   !!!!!!! !'!)!'!(!7!8!?!A!?!@!O!P!W!Y!W!X!g!h!o!q!o!p!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!"""""""'"("/"1"/"0"?"@"G"I"G"H"W"X"_"a"_"`"o"p"w"y"w"x""""""""""""""""""""""""""""""""## ######!## #/#0#7#9#7#8#G#H#O#Q#O#P#_#`#g#i#g#h#w#x###################################$$$$$$$ $'$)$'$($7$8$?$A$?$@$O$P$W$Y$W$X$g$h$o$q$o$p$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$%%%%%%%'%(%/%1%/%0%?%@%G%I%G%H%W%X%_%a%_%`%o%p%w%y%w%x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& &&&&&&!&& &/&0&7&9&7&8&G&H&O&Q&O&P&_&`&g&i&g&h&w&x&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' ''')'''('7'8'?'A'?'@'O'P'W'Y'W'X'g'h'o'q'o'p''''''''''''''''''''''''''''''''''('((((((('(((/(1(/(0(?(@(G(I(G(H(W(X(_(a(_(`(o(p(w(y(w(x(((((((((((((((((((((((((((((((()) ))))))!)) )/)0)7)9)7)8)G)H)O)Q)O)P)_)`)g)i)g)h)w)x)))))))))))))))))))))))))))))))))))******* *'*)*'*(*7*8*?*A*?*@*O*P*W*Y*W*X*g*h*o*q*o*p**********************************+*+++++++'+(+/+1+/+0+?+@+G+I+G+H+W+X+_+a+_+`+o+p+w+y+w+x++++++++++++++++++++++++++++++++,, ,,,,,,!,, ,/,0,7,9,7,8,G,H,O,Q,O,P,_,`,g,i,g,h,w,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- -'-)-'-(-7-8-?-A-?-@-O-P-W-Y-W-X-g-h-o-q-o-p-------------------------DATA- =DATAh q= .corner_vert`t=y= .corner_edgeu=y=)gv=z=DATAT`t=L-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~---------------------------------------------------------------------------------------DATATu=L-21a"(`"v ((x 3w b"54d"(c"y (({ 6z e"87g" (f"| "(!(~ 9} h"  ;:j"#(i" %( $( < k"  >=m"&(l" (('( ? n"A@p")(o" +(*( B q"DCs",(r" .(-( E t"GFv"/(u" 1(0( H w"JIy"2(x" 4(3( K z"ML|"5({"  7(6( N }"P O"8(~"   :( 9( Q ""!S R";(" =(#<( T "%$VU">(" @(&?( W "('YX"A(" C()B( Z "+*\["D(" F(,E( ] ".-_^"G(" I(/H( ` "10ba"J(" L(2K( c "43ed"M(" ! O(5N( f "76h"g"P(" $#R(8Q( i ":9k%j"S(" '&U(;T( l "=<n(m"V(" *)X(>W( o "@?q+p"Y(" -,[(AZ( r "CBt.s"\(" 0/^(D]( u "FEw1v"_(" 32a(G`( x "IHz4y"b(" 65d(Jc( { "LK}7|"e(" 98g(Mf( ~ "O N:"h("  <;j(Pi(  "R Q="k(" ?>m(Sl(  "UT@"n(" BAp(Vo(  "XWC"q(" EDs(Yr(  "[ZF"t(" HGv(\u(  "^]I"w(" KJy(_x(  "a`L"z(" NM|(b{(  "dcO"}("  Q P(e~(  " g!fR"("# "T S(h(  "j$iU"("& %WV(k(  "m'lX"(") (ZY(n(  "p*o["(", +]\(q(  "s-r^"("/ .`_(t(  "v0ua"("2 1cb(w(  "y3xd"("5 4fe(z(  !" |6{g"("8 7i"h(}(  $"#9~j"("; :l%k((  '"&<m"("> =o(n((  *")?p"("A @r+q((  -",Bs"("D Cu.t((  0"/Ev"("G Fx1w((  3"2Hy"("J I{4z((  6"5K|"("M L~7}((  9"8N"("P O:((  <";Q"("S R=((  ?">T"("V U@((  B"AW"("Y XC((  E"DZ#("\ [F((  H#G]#(#_ ^I((  K#J`#(#b aL((  N#Mc #(#e dO((  Q #Pf #( #h! gR((# " T #Si#(#k$ jU((& % W#Vl#(#n' mX(() ( Z#Yo#(#q* p[((, + ]#\r#(#t- s^((/ . `#_u#(#w0 va((2 1 c#bx#(#z3 yd((5 4 f#e{!#( #}6 |g((8 7 i"#h~$#(##9 j((; : l%#k'#(&#< m((> = o(#n*#()#? p((A @ r+#q-#(,#B s((D C u.#t0#(/#E v((G F x1#w3#(2#H y((J I {4#z6#(5#K |((M L ~7#}  9#(8#N ((P O :#  <#(;#Q ((S R =#?#(>#T ((V U @#B#(A#W ((Y X C#E#(D#Z )(\ [ F#H#)G#] ))_ ^ I#K#)J#` ))b a L#N#)M#c  ))e d O#"!Q# )P#f  ) )h #g R#%$T# )S#i ))k &j U#('W#)V#l ))n )m X#+*Z#)Y#o ))q ,p [#.-]#)\#r ))t /s ^#10`#)_#u ))w 2v a#43c#)b#x ))z 5y d#76f#)e#{ !) )} 8| g# :9i#")h#~ $) #) ; j#  =<l#%)k# ') &) > m#@?o#()n# *))) A p#CBr#+)q# -),) D s#FEu#.)t# 0)/) G v#IHx#1)w# 3)2) J y#LK{#4)z# 6)5) M |#O N~#7)}#   9)8) P #! R Q#:)#  <)";) S #$#UT#=)# ?)%>) V #'&XW#@)# B)(A) Y #*)[Z#C)# E)+D) \ #-,^]#F)# H).G) _ #0/a`#I)# K)1J) b #32dc#L)#  N)4M) e #65g!f#O)# #"Q)7P) h #98j$i#R)# &%T):S) k #<;m'l#U)# )(W)=V) n #?>p*o#X)# ,+Z)@Y) q #BAs-r#[)# /.])C\) t #EDv0u#^)# 21`)F_) w #HGy3x#a)# 54c)Ib) z #KJ|6{#d)# 87f)Le) } #NM9~#g)#  ;:i)Oh)  #Q P<#j)#  >=l)Rk)  #TS?#m)# A@o)Un)  #WVB#p)# DCr)Xq)  #ZYE#s)# GFu)[t)  #]\H#v)# JIx)^w)  #`_K#y)# ML{)az)  #cbN#|)# P O~)d})  # f eQ#)#" !S R)g)  # i#hT#)#% $VU)j)  #l&kW#)#( 'YX)m)  #o)nZ#)#+ *\[)p)  #r,q]#)#. -_^)s)  #u/t`#)#1 0ba)v)  #x2wc#)#4 3ed)y)  #{5zf#)#7 6h!g)|)  ##"~8}i#)#: 9k$j))  &#%;l#)#= <n'm))  )#(>o#)#@ ?q*p))  ,#+Ar#)#C Bt-s))  /#.Du#)#F Ew0v))  2#1Gx#)#I Hz3y))  5#4J{#)#L K}6|))  8#7M~#)#O N9))  ;#:P#)#R Q<))  >#=S#)#U T?))  A#@V#)#X WB))  D#CY#)#[ ZE))  G$F\$)$^ ]H))  J$I_$)$a `K))  M$Lb$)$d cN))  P $Oe $) $g fQ))" ! S $Rh$) $j# iT))% $ V$Uk$)$m& lW))( ' Y$Xn$)$p) oZ))+ * \$[q$)$s, r])). - _$^t$)$v/ u`))1 0 b$aw$)$y2 xc))4 3 e$dz $)$|5 {f))7 6 h!$g}#$)"$8 ~i)): 9 k$$j&$)%$; l))= < n'$m)$)($> o))@ ? q*$p,$)+$A r))C B t-$s/$).$D u))F E w0$v2$)1$G x))I H z3$y5$)4$J {))L K }6$| 8$)7$M ~))O N 9$  ;$):$P ))R Q <$>$)=$S ))U T ?$A$)@$V ))X W B$D$)C$Y ))[ Z E$G$*F$\ **^ ] H$J$*I$_ **a ` K$M$*L$b **d c N$! P$ *O$e  * *g "f Q$$#S$ *R$h * *j %i T$'&V$*U$k **m (l W$*)Y$*X$n **p +o Z$-,\$*[$q **s .r ]$0/_$*^$t **v 1u `$32b$*a$w **y 4x c$65e$*d$z  **| 7{ f$98h$!*g$} #* "* :~ i$  <;k$$*j$ &* %* = l$ ?>n$'*m$ )*(* @ o$BAq$**p$ ,*+* C r$EDt$-*s$ /*.* F u$HGw$0*v$ 2*1* I x$KJz$3*y$ 5*4* L {$NM}$6*|$   8*7* O ~$ Q P$9*$   ;*!:* R $#"TS$<*$ >*$=* U $&%WV$?*$ A*'@* X $)(ZY$B*$ D**C* [ $,+]\$E*$ G*-F* ^ $/.`_$H*$ J*0I* a $21cb$K*$ M*3L* d $54f e$N*$ "!P*6O* g $87i#h$Q*$ %$S*9R* j $;:l&k$T*$ ('V*<U* m $>=o)n$W*$ +*Y*?X* p $A@r,q$Z*$ .-\*B[* s $DCu/t$]*$ 10_*E^* v $GFx2w$`*$ 43b*Ha* y $JI{5z$c*$ 76e*Kd* | $ML~8}$f*$  :9h*Ng*  $P O;$i*$  =<k*Qj*  $S R>$l*$ @?n*Tm*  $VUA$o*$ CBq*Wp*  $YXD$r*$ FEt*Zs*  $\[G$u*$ IHw*]v*  $_^J$x*$ LKz*`y*  $baM${*$ ON}*c|*  $ edP$~*$! R Q*f*  $ h"gS$*$$ #UT*i*  $k%jV$*$' &XW*l*  $n(mY$*$* )[Z*o*  $q+p\$*$- ,^]*r*  $t.s_$*$0 /a`*u*  $w1vb$*$3 2dc*x*  $z4ye$*$6 5g f*{*  "$!}7|h$*$9 8j#i*~*  %$$:k$*$< ;m&l**  ($'=n$*$? >p)o**  +$*@q$*$B As,r**  .$-Ct$*$E Dv/u** 1$0Fw$*$HGy2x**4$3Iz$*$KJ|5{**7$6L}$*$NM8~** :$9O$*$Q P;**  =$<R$*$T S>**@$?U$*$WVA**C$BX$*$ZYD**F$E[%*%]\G**I%H^%*%`_J**L%Ka%*%cbM**O%Nd %* %feP**! R %Qg %* %i"hS**$#U%Tj%*%l%kV**'&X%Wm%*%o(nY***)[%Zp%*%r+q\**-,^%]s%*%u.t_**0/a%`v%*%x1wb**32d%cy%*%{4ze**65g %f|"%*!%~7}h**98j#%i%%*$%:k**<;m&%l(%*'%=n**?>p)%o+%**%@q**BAs,%r.%*-%Ct**EDv/%u1%*0%Fw**HGy2%x4%*3%Iz**KJ|5%{7%*6%L}**N M8%~  :%*9%O**Q P;% =%*<%R**TS>%@%*?%U**WVA%C%*B%X**ZYD%F%*E%[++]\G%I%+H%^++`_J%L%+K%a++cbM% O%+N%d + +f!eP%#"R% +Q%g + +i$hS%&%U%+T%j++l'kV%)(X%+W%m++o*nY%,+[%+Z%p++r-q\%/.^%+]%s++u0t_%21a%+`%v++x3wb%54d%+c%y++{6ze%87g% +f%|"+!+~9}h%  ;:j%#+i%%+ $+<k%  >=m%&+l%(+'+?n%A@p%)+o%++*+Bq%DCs%,+r%.+-+Et%GFv%/+u%1+0+Hw%JIy%2+x%4+3+Kz%ML|%5+{% 7+6+N}%P O%8+~%  :+ 9+Q%"!S R%;+%=+#<+T%%$VU%>+%@+&?+W%('YX%A+%C+)B+Z%+*\[%D+%F+,E+]%.-_^%G+%I+/H+`%10ba%J+%L+2K+c%43ed%M+%! O+5N+f%76h"g%P+%$#R+8Q+i%:9k%j%S+%'&U+;T+l%=<n(m%V+%*)X+>W+o%@?q+p%Y+%-,[+AZ+r%CBt.s%\+%0/^+D]+u%F Ew1v%_+%  32a+G`+x%I Hz4y%b+%  65d+Jc+{%L K}7|%e+%  98g+Mf+~%O N:%h+%  <;j+Pi+%R Q=%k+%  ?>m+Sl+%U T@%n+%  BAp+Vo+%X WC%q+%  EDs+Yr+ %[ ZF%t+%  H Gv+\u+ % ^ ]I%w+%  K Jy+_x+ % a `L%z+%  N M|+b{+ % d cO%}+%  Q P+e~+ % g! fR%+%# " T S+h+ % j$ iU%+%& % W V+k+ % m' lX%+%) ( Z Y+n+ % p* o[%+%, + ] \+q+ % s- r^%+%/ . ` _+t+ % v0 ua%+%2 1 c b+w+ % y3 xd%+%5 4 f e+z+! % |6 {g%+%8 7 i" h+}+$ %# 9 ~j%+%; : l% k++' %& < m%+%> = o( n++* %) ? p%+%A @ r+ q++- %, B s%+%D C u. t++0 %/ E v%+%G F x1 w++3 %2 H y%+%J I {4 z++6 %5 K |%+%M L ~7 }++9 %8 N %+%P O : ++  < %; Q %+%S R = ++ ? %> T %+%V U @ ++B %A W %+%Y X C ++E %D Z &+%\ [ F ++H &G ] &+&_ ^ I ++K &J ` &+&b a L ++N &M c  &+&e d O ++ Q &P f  &+ &h !g R ++#"T &S i &+&k $j U ++&%W &V l &+&n 'm X ++)(Z &Y o &+&q *p [ ++,+] &\ r &+&t -s ^ ++/.` &_ u &+&w 0v a ++21c &b x &+&z 3y d ++54f &e { !&+ &} 6| g ++87i "&h ~ $&+#& 9 j ++;:l %&k  '&+&& < m ++>=o (&n  *&+)& ? p ++A@r +&q  -&+,& B s ++DCu .&t  0&+/& E v ++GFx 1&w  3&+2& H y ++JI{ 4&z  6&+5& K | ++ML~ 7&}    9&+8& N  ++P O :&    <&+;& Q  ++SR =&  ?&+>& T  ++VU @&  B&+A& W  ++YX C&  E&+D& Z  ,+\[ F&  H&,G& ]  ,,_^ I&  K&,J& `  ,,ba L&  N&,M& c   ,,e d O&  "!Q& ,P& f   , ,h#g R&  %$T& ,S& i  ,,k&j U&  ('W&,V& l  ,,n)m X&  +*Z&,Y& o  ,,q,p [&  .-]&,\& r  ,,t/s ^&  10`&,_& u  ,,w2v a&  43c&,b& x  ,,z5y d&  76f&,e& {  !, ,}8| g&  :9i&",h& ~  $, #,; j&  =<l&%,k&   ', &,> m&  @?o&(,n&   *,),A p&  CBr&+,q&   -,,,D s&  FEu&.,t&   0,/,G v&  IHx&1,w&   3,2,J y&  LK{&4,z&   6,5,M |&  O N~&7,}&   9,8,P & ! R Q&:,&   <,";,S & $ #UT&=,&   ?,%>,V & ' &XW&@,&   B,(A,Y & * )[Z&C,&   E,+D,\ & - ,^]&F,&   H,.G,_ & 0 /a`&I,&   K,1J,b & 3 2dc&L,&   N,4M,e & 6 5g!f&O,&  # "Q,7P,h & 9 8j$i&R,&  & %T,:S,k & < ;m'l&U,&  ) (W,=V,n & ? >p*o&X,&  , +Z,@Y,q & B As-r&[,&  / .],C\,t & E Dv0u&^,&  2 1`,F_,w & H Gy3x&a,&  5 4c,Ib,z & K J|6{&d,&  8 7f,Le,} & N M9~&g,&  ; :i,Oh, & Q P<&j,&  > =l,Rk, & T S?&m,&  A @o,Un, & W VB&p,&  D Cr,Xq, & Z YE&s,&  G!Fu,[t,!&!] \H&v,&  J!Ix,^w,!&!` _K&y,&  M!L{,az,!&!c bN&|,&  P !O~,d}, !& !f eQ&,&" ! S !R,g,!& !i# hT&,&% $ V!U,j,!&!l& kW&,&( ' Y!X,m,!&!o) nZ&,&+ * \![,p,!&!r, q]&,&. - _!^,s,!&!u/ t`&,&1 0 b!a,v,!&!x2 wc&,&4 3 e!d,y, !&!{5 zf&,&7 6 h!!g,|,#!&"!~8 }i&,&: 9 k$!j,,&!&%!; l&,&= < n'!m,,)!&(!> o&,&@ ? q*!p,,,!&+!A r&,&C B t-!s,,/!&.!D u&,&F E w0!v,,2!&1!G x&,&I H z3!y,,5!&4!J {&,&L K }6!|,,8!&7!M ~&,&O N 9!,,  ;!&:!P &,&R Q !&=!S &,&U T ?!,,A!&@!V &,&X W B!,,D!&C!Y &,&[ Z E!,,G!'F!\ ','^ ] H!,,J!'I!_ ','a ` K!,,M!'L!b ','d c N!,,P! 'O!e  ', 'g f Q!,,"!S! 'R!h ', 'j #i T!,,%$V!'U!k ','m &l W!,,('Y!'X!n ','p )o Z!,,+*\!'[!q ','s ,r ]!,,.-_!'^!t ','v /u `!,,10b!'a!w ','y 2x c!,,43e!'d!z  ','| 5{ f!,,76h!!'g!} #',"' 8~ i!,,:9k!$'j! &',%' ; l!,,=<n!''m! )',(' > o!,,@?q!*'p! ,',+' A r!,,CBt!-'s! /',.' D u!,,FEw!0'v! 2',1' G x!,,IHz!3'y! 5',4' J {!,,LK}!6'|!  8',7' M ~!,,O N!9'!   ;',:' P !,,R Q!<'! >',=' S !,,UT!?'! A',@' V !,,XW!B'! D',C' Y !,,[Z!E'! G'-F' \ !--^]!H'! J'-I' _ !--a`!K'! M'-L' b !--dc!N'! ! P' -O' e ! - -g"f!Q'! $#S' -R' h !- -j%i!T'! '&V'-U' k !--m(l!W'! *)Y'-X' n !--p+o!Z'! -,\'-[' q !--s.r!]'! 0/_'-^' t !--v1u!`'! 32b'-a' w !--y4x!c'! 65e'-d' z ! --|7{!f'! 98h'!-g' } !#- "-:~!i'!  <;k'$-j'  !&- %-=!l'! ?>n''-m'  !)-(-@!o'! BAq'*-p'  !,-+-C!r'! EDt'--s'  !/-.-F!u'! HGw'0-v'  !2-1-I!x'! KJz'3-y'  !5-4-L!{'! NM}'6-|'  ! 8-7-O!~'!  Q P'9-'  ! ;-!:-R!'!# "TS'<-'  !>-$=-U!'!& %WV'?-'  !A-'@-X!'!) (ZY'B-'  !D-*C-[!'!, +]\'E-'  !G--F-^!'!/ .`_'H-'  !J-0I-a!'!2 1cb'K-'  !M-3L-d!'!5 4f e'N-'  "!!P-6O-g!'!8 7i#h'Q-'  %!$S-9R-j!'!; :l&k'T-'  (!'V-<U-m!'!> =o)n'W-'  +!*Y-?X-p!'!A @r,q'Z-'  .!-\-B[-s!'!D Cu/t']-'  1!0_-E^-v!'!G Fx2w'`-'  4!3b-Ha-y!'!J I{5z'c-'  7!6e-Kd-|!'!M L~8}'f-'  :!9h-Ng-!'!P O;'i-'  =!<k-Qj-!'!S R>'l-'  @!?n-Tm-!'!V UA'o-'  C!Bq-Wp-!'!Y XD'r-'  F!Et-Zs-"'"\ [G'u-'  I"Hw-]v-"'"_ ^J'x-'  L"Kz-`y-"'"b aM'{-'  O"N}-c|- "' "e dP'~-'!  R "Q-f- "' "h" gS'-'$ # U"T-i-"'"k% jV'-'' & X"W-l-"'"n( mY'-'* ) ["Z-o-"'"q+ p\'-'- , ^"]-r-"'"t. s_'-'0 / a"`-u-"'"w1 vb'-'3 2 d"c-x-"'"z4 ye'-'6 5 g "f-{-""'!"}7 |h'-'9 8 j#"i-~-%"'$": k'-'< ; m&"l--("''"= n'-'? > p)"o--+"'*"@ q'-'B A s,"r--."'-"C t'-'E D v/"u--1"'0"F w'-'H G y2"x--4"'3"I z'-'K J |5"{--7"'6"L }'-'N M 8"~-- :"'9"O '-'Q P ;"--  ="'<"R '-'T S >"--@"'?"U '-'W V A"--C"'B"X '-'Z Y D"--F"'E"[ (-(] \ G"--I"(H"^ (-(` _ J"--L"(K"a (-(c b M"--O"(N"d  (- (f e P"--! R" (Q"g  (- (i "h S"--$#U"(T"j (-(l %k V"--'&X"(W"m (-(o (n Y"--*)["(Z"p (-(r +q \"---,^"(]"s (-(u .t _"--0/DATATgv=s-\V:t V 5 b  MMMԳMMMԳMMMMMMM.MMEM.MMEMMMҴMMMҴM0MMM0MMMMMMMMMZM@MMZM@MMOM@MMOM@MMM@M2%MM@M2%M'M@M"0M'M@M"0MdM@M=MdM@M=MĄM@M>MĄM@M>S1Vq{Vͯۖ.<lPzϞHWVVTqVUSmW]}UQV@@VM"MM@l@@VM"MM@lMWMMʼMMVMO@@VMMMV@@MMHM~@@MjMMMjMMv٫bVqV6?gikV%Vb.);7]V1V3HHVH2HHHHHHHHVH2GGGGGVG2V1//V/2///V4NNNQQVQ3XXVX3XXX[[[XXVX3'''++V+2))V)2+++ V 2V2V2V2V3V1V1%%V%2###>>V>2@@@  $$V$3GGGEEVE3V2  >>V>1@@@V2DDDBBVB3 V 3  <<V<1;;;V2V222222V22 V 3  V2V2V2  V2V1V3GGVG2GGGHHHHHVH2EEEFFVF2V1//V/2///V4NNNQQVQ3XXVX3XXX[[[XXVX3'''**V*2**V*2*** V 2V2V2V2V3 V 1  V1$$V$2###>>V>2@@@  ""V"3GGGEEVE3V2??V?1AAAV2DDDBBVB3 V 3  <<V<1<<<V2 V 211111V12V3V2V2 V 2  V2  V2V2V2V2 V 3  22222V22V2V2<<V<1;;; V 3  DDDBBVB3V2>>V>1@@@V2  GGGEEVE3  $$V$3>>V>2@@@%%V%2###V1V1V3V2V2V2 V 2))V)2+++'''++V+2[[[XXVX3XXVX3XXXNNNQQVQ3V4//V/2///V1GGGGGVG2HHHHHVH2HHVH2HHHV3V1VVў_VVVў VVVў YYV^ YYVZ \\VǙ \\Vę H`H`V H`H`V ccV- ccV* ggV# ggV# 4l4lV 5l5lV ppVՄ ppVՄ uuV uuV x{x{V x{x{V V| V| Vr Vr Vh Vh mmV0a mmV/a GGV}Z EEVՂZ VըT VէT ЋЋVՃO ΋΋VՉO VJ VJ %%VF %%VF VGC VFC GC_FC_%%F_%%F_J_J_΋΋O_ЋЋO_T_T_EEZ_FF|Z_mm0a_mm/a_h_h_r_r_|_|_x{x{_x{x{_uu_uu_pp_pp_4l4l_5l5l_gg#_gg#_cc*_cc-_H`H` _H`H` _\\ę_\\Ǚ_YYZ_YY^_VVў_VVў_VVVў VVVў YYV^ YYVZ \\VǙ \\Vę H`H`V H`H`V ccV- ccV* ggV# ggV# 4l4lV 5l5lV ppVՄ ppVՄ uuV uuV x{x{V x{x{V V| V| Vr Vr Vh Vh mmV0a mmV/a GGV}Z EEVՂZ VըT VէT ЋЋVՃO ΋΋VՉO VJ VJ %%VF %%VF VGC VFC GC_FC_%%F_%%F_J_J_΋΋O_ЋЋO_T_T_EEZ_FF|Z_mm0a_mm/a_h_h_r_r_|_|_x{x{_x{x{_uu_uu_pp_pp_4l4l_5l5l_gg#_gg#_cc*_cc-_H`H` _H`H` _\\ę_\\Ǚ_YYZ_YY^_VVў_ZVZV%_+Z+Z_UYUY_c]c]]_\\ _``___M_dd_cc^_hh_ggH_ll|_ll_kqkq_pp_tvtv_vv͆_{{_{{݂_B|_|_q_2q_h_h_iiBa_H`_77Z_Y_T_TTS_O_N_XX`K_RJ_ZG_eeTF_C_B_p@_Vp@ Q6e ʝ  .VKAbˉ`T``ǝֿB ȷ # !! !1cuuyyy%%%-(( (1`g:N:E :.S SPSx_u&\?` h  * R &`&_&S !# ##>`>$>XR,p_o P !ܩ^ 8  > _ ^Q]^7Y5x 7 in@`!`_WOmo'n'''YYRQ n n : K .N NN`X<;, ,,J yM |_||T"d""jt tt%t""t"{u_ T HM_2WN$$\$|j>c >O>DZtŲ\SeʴΒ888; Bdyҟ-u>}Ǐ  ѝ RmPm0`mò;b!h2,,,<W!& w _ "DK*E | %g% %MAW AAMaS+_++Si!.22x2D 5_55Z[%'%v %2֖[F+`(((#`ש O`OOo#Y"`YYG z% OԳ []^d&l [6$o`$o$zmG٨ I w wee(e g Yk4l_x`xx))#)o=c  = ` mlZw:ި:s:_#@##8"_""< cʟ=aUaC`aӤ))5)<o* B  ӉI,;a''O '\PLn  E ?a  j 4Z ZZ#"#D#dP` r ̨ l)ze[`ѫIXh }al۫c ^.`^^y I( gl%%9%=uuu ZU`H# HlHGsD^O )!<`<U<I` '++1+QW1P<_982% $ yL: & { "K`VU\ܷ!_!!VW''q'7w /# // N0NkN^ V [-l-- } `RND`Ohi`P̫x"_AiKazS4!#* :U Srr y  uC x &D&`&@%_%t%2~T+Bz BB )`))؄Dm`l< < <_ `C% Y  _۠Cnw%%%4%v C` &` 3 s o  / /1'/ M P v D _ b_`11+1t)  F Y \j 7_= ? _ Ѣ YL797`7= {KJK`K## #!,/. ] 4= 6`$$ S8B`B4BUI% %%/@`עK&! &;& e # 2 L )< P {`_O.`}WWWY]g <`X Ȝ _ xaPIe- S<1ɜ1`162_2 2kD{]_ :{`}t; `> ; a ; R`  Ņ-`R-& :% %%%} :.-..,`` k y 9 H` ɸ a0_I222#?##. * .j`  4 '`  he"4`l$F0{ _T_) ` A# Bl_5 V` >% %4%QR`O\\qW\_Q9 QMQK5X+5^+'`+@)] )9)(k((j`5TcW3`CƚH Hw:H 3  OS`SS{<}]3sUܚ#_y2920`2xd:c``9w:9  $""_"ո( vx |:F`1qh`h h#r) u{8`MAl b 8+p_ش4`44uhO_OOhI6II ++`++f*  _U`UUf w|55(5RXg_<j_ r * gE7`_ __ U `  : z _ ' ':' T A` _wGw&  W 9 tQDQ Qa@`%-``*X 8 ^`U_3 ?\; VvX2`MrӦdP8|$``,V&'`^BM,`c_d>G2 22v)3`))%IS`Y*0 *w*D_: n _DV. U U7z0`{ QLL Lp"Dp`ҁ~~F~`r^C0600S-`? ??9+@͕91`9ҡ9Gy]`CFF!`F}555'FƟy5ō5.`5331 3!DѠe$nV3`,iR 3 `hAjvv-`v__D\^}gf|'`|]||4%%X % c)!ma<4M E c W` ʟ 3 ƕ]`t ;E`EE_ =/' 3} '  :D`DD/ /6./U3`UV_ZΚJb _ك%Z %%8 `x1_% v 99 xxx G `GG`8"< "")_)v)T = 3 `J^\`\O\(FO(:`(dd dK` #` KFvub~ @ L "`""ˉF FF.+_q_"`"D"FI)Q0QS CPCC''s' h)~3ê(_(}(`* )\|LV nARA_AWABCf*LC5))")#0P#`#4q ^ !g!8!1 1V1)!`!}!yH{P`Q&&&J'ˢn_>R"_""h  18cn`cGcVy (` ?yՓfg\mtMx$`8N}%##0#+  M G,aaU`a)4))&*<++6+)))sүiџii! a   U w b 9 ڮ  T [II) I#͎ %k t\}, \ ` tS/** *::s:2ܗ͗? 0YO45LXJaOJ_Jk^T4$}$o$F$ FpF?4݂{ ++f+՗&qu&&M &jjcD DD  m9P1I`ӷ'''77ҩ7x & , ``|. | || 0 *x`xxxZ*ȋ*C`*+'''Nw` $kR _EK`EEY@ԟ@c!@">."")-_(' (("l?[?=!=^=- 6`qN l ^ aK _ ;W42q2w27eH2x    B_BBB-B B''ò'68 k =xzxx i s-o-E-I5͐)@CCCzxp'& H  ّ ޑJؑI ۑ ۑI ܑ  I HّIۑ%%VLۑI ܑ  I HّIۑ)))<8778877887788778. @ QQ|Q sԦczz@z {7 ED%%&%FDhhh]55K5ED)D\D ʷ O^$2$j$| Ы}ş;.0.."'8BBBFpLZץf   B{eª THH^H.(  r}7R"" "Q2\2̣2Pty ש 9 5Iz%%%׍{`*  F ׮{HJ̅ư33y3Ay: L gL2L֧Yhȟ5G8^GPGnKqT{TKTPMP##v#V ӝj)))yZ Q }~~ / Nh]HӷEc8 /| 2Rp B % գ?I7"""v M & Q z ,,`,i^ܦl.llyGS V , ̔Nϔ5 YzeR ! v -// /'*`*m*%jL%_%%I%b%_ƒk} k1kܑ`_##G(#  g Dl`D£DqOnnn%%ڏ%F`"'N""SCO, OO:#,#(#)Z`î)_)ޢ)~MK_Fi%P z HA`HHR444_ |*_`զ1 1+1F |L| |<*3 sx_ t +` & h  :!PֲQ L'5-Xa0Ρ61sR1_1 x }!i!!F'i2F#F^F_ϧ(h-0W!>5"y}| 1.6 ..Oq[p[[%%s%_k Wxb;8 `8%8&## #CT 36/z#S`X>_>>`m.b.‹._]%qt"7OT`O`Or# t/V//!1!w! #_ EZ 6 c Q4z c% M  gsmCbC[Ceduy:###''r'-!JّH I  ( 8 N. ۑ  I ّHIܑ I  ۑ LŴyp'& H  ّ ޑJؑI ۑ ۑ  I ܑ IHّ I ۑ9M8v88778877887785?5ϙ5""Ÿ"9))) CC%Cr&a& &{oR=Aɟ< Au;;;aT+`%% %<U][l,`llU*Vu`9B# ####N#_#L%`LLvӉ:M:Mm:--V-AL6`I{.֜ Vr222*T*۫*]IK ן ^ xxfxL`VVV/vvMvsSֳ!M^Fd%%Ɵ%o% %+% U ( ͟L*/7 j/^.H... ..h5C0yoh //$/w/H x |)))z):_::DU&&&Ο6P {s(K(_(#)##ҷ)# =_=6=  [  5TTT+yaUx / KW<`WWf4%`ͷ+dn_<Rtxx x2++b+)jGt8_88MX**S*:`KaX P  H(l}? ܳ ] (O(](%T ~ pfΟfI$f/l:e::4γR!'9<y`rȮN''cl'+2&ddd1|ssscZ4%g%%AD߇K? ejezeFe, e 1uĝ[ i ޖ`$ Ö7@%%%| . ZcQ9e9ܫ9R ɞ  p"t""cs";%%%It*__CP_ޜ A:nOHHHW3 3=3c[|/CS// 'M'`'3 _ Qv&QL"`LLU~=B}MMM!`/hhfh Q_ ǣ US J % 'LG=9&7&p &OW<<u<--=- ف2X`6 S` r D8 DDGX6XX 2K܏l[[^[K#`X7l]K"E`""x߾(`F`ŢK-`˒OOOӟH4H9H&-1< 1]$1Hڊ, uȷr'^I^^ȟ ) ۼ ǟ 9 UG >G 0G [q  | ]e]]]_]ȱ]F  s OOǪOa{#`ɨzoc[cczzƤzFSKkR C t !bpG\&{C&W&4 0 -?`+8`88OX`XX?'?L?$$Q$(F X S `nn nַv2 -۲ߴC---mOtOO`bmߊ%-{߾7_,W,Ϫ,}k/k2k6883g8_d0d]dQ\QQݏR2RR_u S ֑ppp1 m`ll o:S:$:[˵ Eش2co<B`<<P`PPn4 C^= ^3^. YYYѪo`--J-ߗhLJ__Fԟ www$4P6 ԁ $  X*x6\" \ \, 2 , w5, &u&&`JC?`CCG2`G%GW--%- J*   ·+.5cݡ) 63WW*WI + 44J4$m^ ^NL^pvpmpEYETE`ccc878 S8QQQRVR0Rj (`j j PWˇU߉ I `  ] "pZZݬZIxVxx~mHmm,( ""%"ǟӾE`1s`sצs6b  ]ٌ  gggh{{{ s `s s `%*ڗ|Q|c|^Y^ Y,Yۗ&͗s&U4,4g4`Y8YSY_Aߩ/WE#E2E\B s,EEЇEJS`ñ`biYߪ*:(ژ>ΐ &' <ζֶwKKK   xmն&"  ַG)r_j* 0?+ |֗ .  >o|ouoߴڧ!i>"mm mª`V V `ª`V bvbzb_XS`! ,b, bb.7`.. W ~ Ѵ V `[. C6 CqC6`V k0k|k U`C 2uE u~u=˛1P] C. .x`lˣlPl_0 Q{? Q/FQ cQ 0Q خ  yCyԨy{nCxCC[__R_`# $` y f^F/`FF}rfrrqNqq/OQʴ_( 8vo iMi:iiwiŲi`f]e]]ϓA`Vdm]mW_m߈g|u+ ֈpfJ.J`XJ5555"5i5JJ'J#3D%DDCғ`ң2Q_UUZ\U`___Ђ b  zzFzzB(BCؒ  ؒ  NN N,*,t-,: +rѠ_PM߯E֧RgdИ W ݧ gdd*d6'7,Os`z_zIzVI_88v8_ %  ` * 4 Uaaab sb b H nɝ(( (    r,`r>rsdssv ` p u9` y(&; 6WҥWRJWU.W cLߪDCJ8 JkJrffO]f_)ָ D:[[[W(`MTs[[[fU ffCIvII^3\!3M3c϶P1a666`*Y7. 7N7d  /2 ` `e e\re 9  nّ ``+~+~+_? 2oJ W2`a$`w[U;`UUxA`xx `"t/=Ee- e(e. ooحo0qɨltt]tD` 7 & z ; % G2Gj6Gy' yyG 4::5:J FFF 5 y5    YYyYp$pw6p ]V# ɟ. .\. }}}.- ^ `< < < 5 ##_# lY & X ʔh6h2h))).0.. Z Q E j#\ ٱ 9'ª`V `Ȫ!`Ҫ'`̪(%`%Ъ%)`ͪ,i`iӪi/`Ϫ1 ` Ԫ 3`Ъ6O`OժO8`Ӫ<`ժ;C?Z '/՗9 %%1% 5Ղ ii.i5 .2 PP.P 00/0, .`Ī__0`0Ҫ08O`OӪO6`Ъ3`Ҫ1I`IͪI,i`iӪi/`̪(%`%Ъ%)`Ȫ!`Ҫ'  O ,PrTO, u  M~[RP[˥&#&&S---=_! +)++&&v&E_! C(7***}d]fX&&Ŏ,,ʟ,Vp X f2$_&ik,,p,zԀXHݟ000 !  _ ++m+I+b+.+$}?///_/!/ /e]~,,b,#6L_w///ʟ/V/:DATAh`p= material_index2w=Xz=2.select_poly `=z=2sharp_face p=z=DATA=2w=LGDATAH `=DATAH p=DATA = w= !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}         " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |  !!! ! !!!!!!!!!$!'!*!-!0!3!6!9!"A"D"G"J"M"P"S"V"Y"\"_"b"e"h"k"n"q"t"w"z"}""""""""""""""""""""""""""""""""""""""""""""### # #######"#%#(#+#.#1#4#7#:#=#@#C#F#I#L#O#R#U#X#[#^#a#d#g#j#m#p#s#v#y#|############################################$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%%%% %#%&%)%,%/%2%5%8%;%>%A%D%G%J%M%P%S%V%Y%\%_%b%e%h%k%n%q%t%w%z%}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& & &&&&&&&"&%&(&+&.&1&4&7&:&=&@&C&F&I&L&O&R&U&X&[&^&a&d&g&j&m&p&s&v&y&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''!'$'''*'-'0'3'6'9'<'?'B'E'H'K'N'Q'T'W'Z']'`'c'f'i'l'o'r'u'x'{'~''''''''''''''''''''''''''''''''''''''''''''((( ((((((( (#(&()(,(/(2(5(8(;(>(A(D(G(J(M(P(S(V(Y(\(_(b(e(h(k(n(q(t(w(z(}(((((((((((((((((((((((((((((((((((((((((((())) ) )))))))")%)()+).)1)4)7):)=)@)C)F)I)L)O)R)U)X)[)^)a)d)g)j)m)p)s)v)y)|))))))))))))))))))))))))))))))))))))))))))))*** * *******!*$*'***-*0*3*6*9*<*?*B*E*H*K*N*Q*T*W*Z*]*`*c*f*i*l*o*r*u*x*{*~********************************************+++ +++++++ +#+&+)+,+/+2+5+8+;+>+A+D+G+J+M+P+S+V+Y+\+_+b+e+h+k+n+q+t+w+z+}++++++++++++++++++++++++++++++++++++++++++++,,, , ,,,,,,,",%,(,+,.,1,4,7,:,=,@,C,F,I,L,O,R,U,X,[,^,a,d,g,j,m,p,s,v,y,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- - -------!-$-'-*---0-3-6-9-<-?-B-E-H-K-N-Q-T-W-Z-]-`-c-f-i-l-o-r-u-x-{-~------------------------------ME Wo=HMEgamma_001= ?`s= t= q=q= 6<LȾ^>?$'?A=I|DATA=r=DATA`s=0position w=X{=2 .select_vert D={=DATA8g w=w">thq…">thqף">Ilף">Ilף">Il…">thq…Mb>thq…Mb>thqףMb>IlףMb>IlףMb>Il…Mb>thq…Mb>thqף">thqף">Ilף">IlףMb>IlףMb>thqףMb>Il…Mb>Ilף">Ilף">Ilף">Il…Mb>Il…Mb>thq…">thq…">thqף">thqףMb>thqףMb>thq…"thq…Ebthq…EbthqףEbthqף"thqף"thq…"Il…"IlףEbIlףEbIlףEbIl…"Il…"thqףEbthqףEbIlףEbIlף"Ilף"thqף"thq…"thqף"Ilף"Ilף"Il…"thq…Ebthq…EbthqףEbIlףEbIlףEbIl…Ebthq…?v>thqwTQA7>thqwTQA7>thq):JQA7>thq):J?v>thq):J?v>thqwT>v>IlwT>v>Il):JPA7>Il):JPA7>Il):JPA7>IlwT>v>IlwT?v>thq):JQA7>thq):JPA7>Il):JPA7>Il):J>v>Il):J?v>thq):J?v>thqwT?v>thq):J>v>Il):J>v>Il):J>v>IlwT?v>thqwTQA7>thqwTQA7>thq):JPA7>Il):JPA7>Il):JPA7>IlwTQA7>thqwTvthqzTvthqp=JvIlp=JvIlp=JvIlzTvthqzTK7thqzTK7thqp=JK7Ilp=JK7Ilp=JK7IlzTK7thqzTK7thqp=Jvthqp=JvIlp=JvIlp=JK7Ilp=JK7thqp=JK7IlzTK7Ilp=JvIlp=JvIlp=JvIlzTK7IlzTK7thqzTvthqzTvthqp=Jvthqp=JK7thqp=JK7thqzT[PScxI"1ScxI"1hmxI"1hmxI[PhmxI[PScxI[PScZD[PhmZD"1hmZD"1hmZD"1ScZD[PScZD[PhmxI"1hmxI"1hmZD"1hmZD[PhmZD[PhmxI[PScxI[PhmxI[PhmZD[PhmZD[PScZD[PScxI"1ScxI"1hmxI"1hmZD"1hmZD"1ScZD"1ScxIP>ScxIP>hmxIP>hmZDP>hmZDP>ScZDP>ScxI<>ScxI<>hmxI<>hmZD<>hmZD<>ScZD<>ScxI<>hmxIP>hmxIP>hmZDP>hmZD<>hmZD<>hmxI<>ScZD<>hmZDP>hmZDP>hmZDP>ScZD<>ScZD<>ScxIP>ScxIP>hmxIP>hmxI<>hmxI<>ScxI<>ScZDP>ScZDP>ScxIP>ScxI<>ScxI<>ScZD"1ScxI[PScxI[PScZD[PScZD"1ScZD"1ScxIifq?Q ףףp?Q ףq?=  ףףp?zifq?z ףq?ף>ףp?Qdf>q?Qף>q?= if(\?Q ף(\?=  ף?Qif(\?z ף?z ף(\?ף>q?df>q?zף>ףp?zף>(\?= df>(\?Qף>?Qף>(\?ף>?zdf>(\?z ףףp?z ף'\o?if'\o?zף>'\o?ף>ףp?zdf>'\o?z ףK? ףp=J?zhfK?z ףףp?Kif'\o?K ף'\o?p=Jף>ףp?Kף>'\o?p=Jdf>'\o?K ף>K?ef>K?z ף>p=J?zhfK?K ףp=J?K ףK?p=Jef>K?K ף>K?p=J ף>p=J?Kdf>q?Qdf>q?zdf>(\?zdf>(\?zdf>(\?Qdf>q?Qף>ףp?zdf>q?zdf>q?Qdf>q?Qף>ףp?Qף>ףp?zdf>q?zף>q?ף>(\?ף>(\?df>(\?zdf>q?zdf>(\?Qף>(\?= ף>q?= ף>q?= df>q?Qdf>(\?Qdf>(\?zף>?zף>?Qף>?Qdf>(\?Qdf>(\?z ף(\?ף>(\?ף>q?ף>q? ףq? ף(\?ף>?zף>(\? ף(\? ף(\? ף?zף>?zף>q?ף>ףp?z ףףp?z ףףp?z ףq?ף>q?ף>(\?= ף>?Q ף?Q ף?Q ף(\?= ף>(\?= ף>ףp?Qף>q?=  ףq?=  ףq?=  ףףp?Qף>ףp?Qif(\?z ף(\? ףq? ףq?ifq?zif(\?zifq?z ףףp?z ףףp?Q ףףp?Qifq?Qifq?zif(\?Q ף?Q ף?z ף?zif(\?zif(\?Q ף(\?= if(\?Qifq?Qifq?Q ףq?=  ף(\?= if(\?Qif(\?zifq?zifq?zifq?Qif(\?Qef>K?Kef>K?zdf>'\o?zdf>'\o?zdf>'\o?Kef>K?Kef>K?K ף>p=J?K ף>p=J?z ף>p=J?zef>K?zef>K?Kef>K?z ף>K?ף>'\o?ף>'\o?df>'\o?zef>K?z ף>K?p=Jef>K?Kdf>'\o?Kdf>'\o?Kף>'\o?p=J ף>K?p=Jף>ףp?Kdf>'\o?Kdf>'\o?zdf>'\o?zף>ףp?zף>ףp?K ףK? ף'\o?ף>'\o?ף>'\o? ף>K? ףK?ף>ףp?zף>'\o? ף'\o? ף'\o? ףףp?zף>ףp?z ף>K? ף>p=J?z ףp=J?z ףp=J?z ףK? ף>K? ףףp?K ף'\o?p=Jף>'\o?p=Jף>'\o?p=Jף>ףp?K ףףp?K ף>p=J?K ף>K?p=J ףK?p=J ףK?p=J ףp=J?K ף>p=J?K ףK?hfK?zif'\o?zif'\o?z ף'\o? ףK? ףp=J?KhfK?KhfK?zhfK?z ףp=J?z ףp=J?Kif'\o?K ףףp?K ףףp?z ףףp?zif'\o?zif'\o?KhfK?K ףK?p=J ף'\o?p=J ף'\o?p=Jif'\o?KhfK?Kif'\o?zhfK?zhfK?KhfK?Kif'\o?Kif'\o?zף>(\?=  ף(\?=  ףq?=  ףq?= ף>q?= ף>(\?=  ף>p=J?K ףp=J?K ףp=J?z ףp=J?z ף>p=J?z ף>p=J?Kף>'\o?p=J ף'\o?p=J ףK?p=J ףK?p=J ף>K?p=Jף>'\o?p=J ףףp?Q ףףp?Kף>ףp?Kף>ףp?Kף>ףp?Q ףףp?Q ף?z ף?Qף>?Qף>?Qף>?z ף?zƂ4>FXx> !9>V~@W>-0>F>_9Q=V~k>L=FC f>&=FA`>Z>#0\>thq ~>thq;Ap\7 Ap'S=|*uAp7b=d >L7yk}Q>+>L7yF>2>ApN>F>L7yY = >Ap'S=y>L7y=*u>Ap7b=:j>L7y=l>L7y=Ap/m>5L7ybe>0߽L7yQo> Ap'S=9L7yY =L7y=|*uAp7b=lL7y=*8jL7y=l>L7y=:j>L7y=@]V>V~+=P>L7y1 >GJ>L7ya)> !9>V~@W>+>L7yF>d >L7yk}Q>A>V~7?>R=L7ybe>0=L7yQo>D=V~[>֝=L7yhz>#d=L7y>_9Q=V~k>lD̽V~[>0߽L7yQo>5L7ybe>4V~7?>V L7yk}Q>}+L7yF>]9V~@W>GJL7ya)> PL7y1 >ZVV~+=*8jL7y=lL7y=RԀthqF ~thqlZ#=ԍthq,/Ap>']Ap,Z># ~>thqՀ>thq4_>Ap,/>Ap>'Ս>thq,-0>F>647>Fr>Ƃ4>FXx>(>thq1(>Ap1 )>Ap0(>thq1 )>Ap0 )>thq0 )>thq0 )>Ap0V+>Ap)\/ )>thq0V+>Ap)\/V+>thq)\/V+>thq)\/V+>Ap)\/.>ApL.V+>thq)\/.>ApL..>thqL..>thqL..>ApL.:33>Apo|-.>thqL.:33>Apo|-:33>thqo|-:33>thqo|-:33>Apo|-b%8>Ap],:33>thqo|-b%8>Ap],b%8>thq],b%8>thq],b%8>Ap],p=>Ap,b%8>thq],p=>Ap,p=>thq,p=>thqUp=>ApU 8>ApʡUp=>thqU 8>ApʡU 8>thqʡU 8>thqʡUB4>Ap@UB4>thq@UB4>thq@U0>ApӤT0>thqӤT0>thqӤTl->ApSl->thqSl->thqS*>ApR*>thqR*>thqRx)>ApyQx)>thqyQx)>thqyQ(>ApףP(>thqףP0\>thq\0\>Ap\s>Ap偿0\>thq\s>Ap偿s>thq偿s>thq偿s>Ap偿>ApGs>thq偿>ApG>thqG>thqGZ\>ApZ\>thqZ\>thq>ApW>thqW>thqWȋ>ApHȋ>thqHȋ>thqH#>Ap#>thq0\>thq\0\>thq0\>Ap\0\>Ap\0\>thq0\>App=thq,GAp,p=Ap,(thqףP)ApRQ)thqRQ)thqRQE+Ap33SE+thq33SE+thq33S.ApBT.thqBT.thqBT.33ApU.33thqU.33thqU"8ApU"8thqU"8thqU"8ApUp=ApU"8thqUp=ApUp=thqUp=thq,p=Ap,8Ap,p=thq,8Ap,8thq,8thq,8Ap,64ApN-8thq,64ApN-64thqN-64thqN-64ApN-0Ap-64thqN-0Ap-0thq-0thq-0Ap-l-ApI.0thq-l-ApI.l-thqI.l-thqI.l-ApI.*Ap/l-thqI.*Ap/*thq/*thq/*Ap/x)Ap0*thq/x)Ap0x)thq0x)thq0x)Ap0(Ap1x)thq0(Ap1(thq1UBthq33!\thqF ~thql!\Ap\!\thq\cthq偿#thq#ApApH#thqApHthqHthqHApWthqWthqWL\ApL\thqL\thqApGthqGthqGApၿcthq偿cthq偿Apၿ!\Ap\!\thq!\thq\!\Ap!\Ap!\thq\!\Ap\Z#F ~thql!\thqZ>#Z#!\thq!\thq0\>thqZ>#!\thq!\Ap0\>Ap0\>Ap0\>thq!\thq#thqRԀthq]Ap]Ap#Ap#thqp=thqUp=ApUvApUvApUmthqUp=thqUApWthqHApHjOthqǺ@(thq1(thqףPjOthqǺ@mthqU=ԍthq,4_>Ap,Ս>thq,p=>thq,p=>thq,p=>Ap,4_>Ap,64thqN-p=thq,8thq,*thq/x)thq0(thq1)thqRQE+thq33S.thqBTl-thqI.*thq/64thqN-l-thqI.64thqN-0thq-p=thqU.thqBT.33thqUp=thqU.33thqU"8thqU*thq/(thq1p=thq,p=thq,64thqN-*thq/)thqRQ.thqBTp=thqUp=thqU(thqףP)thqRQmthqUjOthqǺ@(thqףP(thqףPp=thqUmthqU=ԍthq,p=thq,(thq1(thq1jOthqǺ@=ԍthq,h} =ԍthq,mthqUL\thqthqHthqWcthq偿!\thq\L\thqcthq偿L\thqthqGF ~thqlRԀthq#thq#thqUBthq33F ~thql!\thqUBthq33#thq#thq!\thq\!\thqL\thq!\thq\#thq#thqthqHL\thqcB>thq33 ~>thq0\>thqs>thq偿>thqGZ\>thqs>thq偿Z\>thq0\>thq\Z\>thq>thqWȋ>thqH0\>thq0\>thq\#>thq#>thqcB>thq330\>thq#>thqՀ>thq ~>thq ~>thqcB>thq33#>thq#>thq0\>thq\Z\>thqZ\>thqȋ>thqH#>thq(>thqףP(>ApףP(>Ap1(>Ap1(>thq1(>thqףP>ApUp=>ApUp=>thqUp=>thqU.o>thqU>ApUe>thqB(>thqףP(>thq1 )>thq0V+>thq)\/.>thqL..>thqL.:33>thqo|-b%8>thq],.o>thqUe>thqBՍ>thq,(>thq1 )>thq0.>thqL.0>thqӤTl->thqS*>thqR0>thqӤT*>thqRB4>thq@U(>thqףP*>thqRx)>thqyQB4>thq@Up=>thqU 8>thqʡUՍ>thq,e>thqB(>thq1(>thq1p=>thq,Ս>thq,b%8>thq],p=>thq,(>thq1(>thq1.>thqL.b%8>thq],.o>thqUp=>thqU(>thqףP(>thqףPe>thqB.o>thqU(>thqףPp=>thqUB4>thq@UB4>thq@U*>thqR(>thqףP]>ApՀ>thq#>thq#>thq#>Ap]>ApL\ApthqWApWApGL\thqL\ApApၿthqGApG.33thqU.33ApU"8ApU.thqBT.ApBT.33ApUE+thq33SE+Ap33S.ApBT)thqRQ)ApRQE+Ap33S(thqףP(ApףP)ApRQp=>ApU#>Ap 8>ApʡU*>thqR*>ApRx)>ApyQl->thqSl->ApS*>ApR0>thqӤT0>ApӤTl->ApSB4>thq@UB4>Ap@U0>ApӤT 8>thqʡU 8>ApʡUB4>Ap@UZ\>Ap>thqG>ApGx)>thqyQx)>ApyQ(>ApףPL\Ap.ApBTE+Ap33Sl->ApSZ\>Ap*>ApR.>ApL.;Ap\7:33>Apo|-/Ap>'GAp,]Ap,2>ApN> =Ap@t>`>Ap/m>|*uAp7b=9XAp%>GAp7>GAp7>2ApN>-Ap8e>-Ap8e>Ap/m>ѣAp>ѣAp>mݼApE|>ApE|>4ѣ=Ap>v=ApN>›G>ApK7> =Ap@t>2>ApN>64ApN-8Ap,q哾Ap)0Ap-64ApN-q哾Ap).>ApL.l-ApI.0Ap-:33>Apo|-y>Ap)b%8>Ap],>4hP>?^>O?`郾4hՍ>thq,o}> .o>thqU*ǽFU>CFCX>lD̽V~[>f>Ap >Ap):33>Apo|-:33>Apo|-;Ap\7f>Ap >Ap)>Ap p=>Ap,p=>Ap,b%8>Ap],y>Ap)x)>ApyQ*>ApRE+Ap33SE+Ap33S)ApRQx)>ApyQ0\>Ap!\Ap!\Ap\!\Ap\0\>Ap\0\>ApL\ApApW.33ApU.33ApU.ApBTL\ApApWApH"8ApU"8ApU.33ApUApWApH#App=ApUp=ApU"8ApUApH#Ap]ApvApUvApUp=ApU#Ap>ApU]>Ap#>Ap#>App=>ApU>ApU 8>ApʡU#>Apȋ>ApHȋ>ApHB4>Ap@U 8>ApʡUB4>Ap@Uȋ>ApH>ApW>ApW0>ApӤTB4>Ap@U0>ApӤT>ApWZ\>ApZ\>Apl->ApS0>ApӤT0\>Ap\!\Ap\ApၿApၿs>Ap偿0\>Ap\(>ApףPx)>ApyQ)ApRQ)ApRQ(ApףP(>ApףP4_>Ap,p=>Ap,>Ap >Ap />Ap>'4_>Ap,.>ApL.V+>Ap)\/*Ap/*Ap/l-ApI..>ApL.x)Ap0*Ap/V+>Ap)\/V+>Ap)\/ )>Ap0x)Ap0p=Ap,eAp q哾Ap)q哾Ap)8Ap,p=Ap,;Ap\7›G>ApK7>FX>Ap%>FX>Ap%>*u>Ap7b=;Ap\7(Ap1x)Ap0 )>Ap0 )>Ap0(>Ap1(Ap1 Ap'S=;Ap\7q哾Ap)q哾Ap)_Ap >< Ap'S=s>Ap偿ApၿApGApG>ApGs>Ap偿Z\>ApL\ApE+Ap33SE+Ap33S*>ApRZ\>App=Ap,GAp,/Ap>'/Ap>'eAp p=Ap,-Ap8e>;Ap\7|*uAp7b=|*uAp7b=GAp7>-Ap8e>›G>ApK7>;Ap\7v=ApN>v=ApN> =Ap@t>›G>ApK7>v=ApN>;Ap\7ApE|>ApE|>4v=ApN>ApE|>;Ap\7-Ap8e>-Ap8e>ѣAp>ApE|>.>ApL.0Ap-q哾Ap)q哾Ap);Ap\7.>ApL.f>Ap ><;Ap\7*u>Ap7b=*u>Ap7b= >Ap'S=f>Ap >Ap>ApG>ApGApGL\Ap(Ap1(>Ap1(>ApףP(>ApףP(ApףP(Ap1C=FCX>&=FA`>3F~$<ѣAp>֝L7yhz>dL7y>֝L7yhz>*9QV~k>dL7y>`ni>V~/z=@]V>V~+=Q>Fמ=`ni>V~/z=Q>Fמ=ec>F,s=L=FC f>_9Q=V~k>Z_9Q=V~k>Ȅ3V~q>Z3Fk>ZYFi>ZȄ3V~q>YFi>Ȅ3V~q>*9QV~k>YFi>*9QV~k>wLFC f>YFi>*ǽFU>lD̽V~[>sF:>lD̽V~[>4V~7?>sF:>>Ap y>Ap)o}> y>Ap)o}>o}> o}> Ս>thq,>Ap Ս>thq,/>Ap>'>Ap f>Ap >< >Ap'S=>L7yQ8< >Ap'S=F>L7yY =>L7yQ8<Հ>thq]>Ap.o>thqU]>Ap>ApU.o>thqUՀ>thq.o>thqUZ>#.o>thqUo}> Z>#l>L7y=y>L7y=*u>Ap7b=y>L7y= >Ap'S=*u>Ap7b=y>Ap)>4ho}>>4h^>o}>>L7yQ8L7yY =|>{t0L7yY =y>L7y=|>{t0L7y=`ni>V~/z=|>{t0<`ni>V~/z=Vpq>V~`(<|>{t0<P>L7y1 >:j>L7y=FX>Ap%>:j>L7y=*u>Ap7b=FX>Ap%>y>L7y=l>L7y=`ni>V~/z=l>L7y=@]V>V~+=`ni>V~/z=›G>ApK7>GJ>L7ya)>FX>Ap%>GJ>L7ya)>P>L7y1 >FX>Ap%>:j>L7y=P>L7y1 >@]V>V~+=P>L7y1 > !9>V~@W>@]V>V~+= !9>V~@W>09>FGw>@]V>V~+=09>FGw>Q>Fמ=@]V>V~+=2>ApN>+>L7yF>›G>ApK7>+>L7yF>GJ>L7ya)>›G>ApK7>647>Fr>09>FGw>Ƃ4>FXx>09>FGw> !9>V~@W>Ƃ4>FXx>GJ>L7ya)>+>L7yF> !9>V~@W>+>L7yF>A>V~7?> !9>V~@W>2>ApN>`>Ap/m>d >L7yk}Q>`>Ap/m>R=L7ybe>d >L7yk}Q>A>V~7?>G>Fr+> !9>V~@W>G>Fr+>-0>F> !9>V~@W>s>F:>G>Fr+>3=FZ/F>G>Fr+>A>V~7?>3=FZ/F>d >L7yk}Q>R=L7ybe>A>V~7?>R=L7ybe>D=V~[>A>V~7?>`>Ap/m> =Ap@t>R=L7ybe> =Ap@t>0=L7yQo>R=L7ybe>.=FBS>3=FZ/F>D=V~[>3=FZ/F>A>V~7?>D=V~[>֝=L7yhz>0=L7yQo>v=ApN>0=L7yQo> =Ap@t>v=ApN>D=V~[>C=FCX>.=FBS>C=FCX>+=FU>.=FBS>0=L7yQo>֝=L7yhz>D=V~[>֝=L7yhz>_9Q=V~k>D=V~[>_9Q=V~k>&=FA`>D=V~[>&=FA`>C=FCX>D=V~[>v=ApN>ѣ=Ap>֝=L7yhz>ѣ=Ap>#d=L7y>֝=L7yhz>R#d=L7y>4#d=L7y>ѣ=Ap>4#d=L7y>R_9Q=V~k>RȄ3V~q>_9Q=V~k>ApE|>ö3L7y>4ö3L7y>R4Rö3L7y>Ȅ3V~q>ö3L7y>QռL7y>Ȅ3V~q>mݼApE|>QռL7y>ApE|>QռL7y>ö3L7y>ApE|>Ȅ3V~q>QռL7y>*9QV~k>QռL7y>dL7y>*9QV~k>ѣAp>dL7y>mݼApE|>dL7y>QռL7y>mݼApE|>lD̽V~[>CFCX>*9QV~k>CFCX>wLFC f>*9QV~k>*9QV~k>֝L7yhz>lD̽V~[>֝L7yhz>0߽L7yQo>lD̽V~[>Ap/m>0߽L7yQo>ѣAp>0߽L7yQo>֝L7yhz>ѣAp>V L7yk}Q>5L7ybe>-Ap8e>5L7ybe>Ap/m>-Ap8e>lD̽V~[>5L7ybe>4V~7?>5L7ybe>V L7yk}Q>4V~7?>4FXx>sF:>4V~7?>4FXx>4V~7?>]9V~@W>}+L7yF>V L7yk}Q>2ApN>V L7yk}Q>-Ap8e>2ApN>4V~7?>}+L7yF>]9V~@W>}+L7yF>GJL7ya)>]9V~@W>GJL7ya)>}+L7yF>GAp7>}+L7yF>2ApN>GAp7>]9V~@W>ZVV~+=4FXx>ZVV~+=3QFn=4FXx>GAp7>9XAp%>GJL7ya)>9XAp%> PL7y1 >GJL7ya)>]9V~@W> PL7y1 >ZVV~+= PL7y1 >*8jL7y=ZVV~+=UcF,s=3QFn=RniV~/z=3QFn=ZVV~+=RniV~/z=|*uAp7b=*8jL7y=9XAp%>*8jL7y= PL7y1 >9XAp%>ZVV~+=lL7y=RniV~/z=lL7y=L7y=RniV~/z= Ap'S=L7y=|*uAp7b=L7y=lL7y=|*uAp7b=_Ap ><惾L7yQ8< Ap'S=惾L7yQ8<9L7yY = Ap'S=q哾Ap)1{j`郾4h1{j`郾4heAp h} q哾Ap)h} 1{jq哾Ap)惾L7yQ8<_Ap ><`郾4h_Ap >V~`(F~$

?jk>F~$<^>P>?Vpq>V~`(<`ni>V~/z=ec>F,s=Vpq>V~`(F,s=jk>F~$<惾L7yQ8<`郾4hmqV~`(<`郾4hO?mqV~`(<L7y=惾L7yQ8L7yQ8V~`(<>4hVpq>V~`(

?>4hy>Ap)f>Ap ><>4hf>Ap ><>L7yQ8<>4hh} eAp =ԍthq,eAp /Ap>'=ԍthq,RԀthqZ#mthqUZ#h} mthqUvApU]ApmthqU]ApRԀthqmthqU-0>F>647>Fr>Ƃ4>FXx>3=FZ/F>G>Fr+>s>F:>C=FCX>.=FBS>+=FU>YFi>3F~$<ZYFi>Z3Fk>3F~$FGw>647>Fr>-0>F>ec>F,s=3F~$F~$<3=FZ/F>3F~$Fr+>h} Z#Z>#Z>#o}> h} o}>1{jh} h} o}> o}>o}>^>1{jo}>3F~$<&=FA`>L=FC f>L=FC f>Z3F~$F~$<3F~$<^>jk>F~$<3=FZ/F>.=FBS>C=FCX>C=FCX>3F~$<3=FZ/F>ec>F,s=Q>Fמ=09>FGw>09>FGw>3F~$F,s=3QFn=UcF,s=jkF~$4FXx>3QFn=3QFn=3F~$CFCX>*ǽFU>sF:>sF:>3F~$YFi>wLFC f>CFCX>CFCX>3F~$G>Fr+>3F~$<09>FGw>09>FGw>-0>F>G>Fr+>L*xI֊}kp=J聾R^p=JL>-p=J>R^p=J#|>ƅkp=J>R^p=JL>-p=J>R^xI聾R^xIL*xI聾R^p=J聾R^p=J>R^p=J聾R^xI聾R^xI>R^p=J>R^xI }ƅk;…#|>ƅk…#|>ƅkp=J#|>ƅkp=J֊}kp=J }ƅk;…#|>ƅkp=J>R^p=J聾R^p=J聾R^p=J֊}kp=J#|>ƅkp=J`V>H?…DE?…@E?p=J@E?p=J[H?p=J`V>H?…`=H?…_H?…_H?p=J_H?p=J`=+ H?p=J`=H?…Q>#@E?…`=H?…`=+ H?p=J`=+ H?p=J>sAE?p=JQ>#@E?…:d>Υ@?…Q>#@E?…>sAE?p=J>sAE?p=Jڵd>ç@?p=J:d>Υ@?…_H?p=J_H?…`V>H?…`V>H?…[H?p=J_H?p=Jd@?…d@?p=J@E?p=J@E?p=JDE?…d@?…d@?p=Jd@?…g9?…g9?…&z9?p=Jd@?p=J:d>Υ@?…ڵd>ç@?p=J>g9?xI>g9?xI>9?…:d>Υ@?…>ռp=J>ռʡ><ʡ><ʡ>ռp=J'N>->G>P(>p=Jx >=p=Jx >=p=J >m=ʡ'N>-> >؟ʡ( >؟p=JL>-p=JL>-p=JL>* >؟ʡ( ݟ=ʡ( ݟ=p=JK&0>p=JK&0>p=J'N->ʡ( ݟ=ʡL*ʡL*xI( ؟p=J( ؟p=Jw ݟʡL*ʡռʡռp=J->>9?…>g9?xI>g9?xIG>P(>p=J'N>->><ʡ >m=ʡx >=p=Jx >=p=J><ʡ>ռʡ>ռp=J( >؟p=J( >؟p=J >؟ʡ>ռʡL>*L>-p=J#|>ƅkp=J#|>ƅkp=J#|>ƅk…L>*g9?…'N->ʡK&0>p=JK&0>p=J&z9?p=Jg9?…( ݟ=p=J( ݟ=ʡ<ʡ<ʡ*#|>ƅk… }ƅk;… }ƅk;…L*ʡL>* >؟ʡL>*L*ʡL*ʡw ݟʡ >؟ʡ>ռʡ >؟ʡw ݟʡw ݟʡռʡ>ռʡ>ռʡռʡ<ʡ<ʡ><ʡ>ռʡ><ʡ<ʡ( ݟ=ʡ( ݟ=ʡ >m=ʡ><ʡ >m=ʡ( ݟ=ʡ'N->ʡ'N->ʡ'N>-> >m=ʡ89?…'N>->'N->ʡg9?…89?…'N->ʡ89?…>9?…'N>->d@?…89?…g9?…DE?…89?…d@?…`V>H?…89?…DE?…_H?…89?…`V>H?…`=H?…89?…_H?…Q>#@E?…89?…`=H?…:d>Υ@?…89?…Q>#@E?…>9?…89?…:d>Υ@?…L>-p=JL*xI聾R^xI聾R^xI>R^xIL>-p=J( >؟p=J( ؟p=JL*xIL*xIL>-p=J( >؟p=J>ռp=Jռp=J( ؟p=J( ؟p=J( >؟p=J>ռp=J>ռp=J>ռp=J>=p=J( ݟ=p=J( ݟ=p=J=p=JG>P(>p=JK&0>p=JK&0>p=J( ݟ=p=Jx >=p=Jx9 9?"IK&0>p=JG>P(>p=J>g9?xIx9 9?"IG>P(>p=Jx9 9?"I&z9?p=JK&0>p=Jd@?p=J&z9?p=Jx9 9?"I@E?p=Jd@?p=Jx9 9?"I[H?p=J@E?p=Jx9 9?"I_H?p=J[H?p=Jx9 9?"I`=+ H?p=J_H?p=Jx9 9?"I>sAE?p=J`=+ H?p=Jx9 9?"Iڵd>ç@?p=J>sAE?p=Jx9 9?"I>g9?xIڵd>ç@?p=Jx9 9?"IfP>d\BfP>dZDfP>hmZD+1>dZD+1>d\B+1>hmZD"1d\B"1dZD"1hmZD[PdZD[Pd\B[PhmZDZPthq'1H"1thq'1H"1hm'1H"1hm'1H[Phm'1HZPthq'1H[Phm'1H"1hm'1H"1hmZD"1hmZD[PhmZD[Phm'1H[PhmZD"1hmZD"1dZD"1dZD[PdZD[PhmZD[PdZD"1dZD"1d\B"1d\B[Pd\B[PdZD[Pd\B"1d\B"1Il."1Il.[PIl.[Pd\BZPthq.[PIl."1Il."1Il."1thq.ZPthq.ZPthq'1HZPthq."1thq."1thq."1thq'1HZPthq'1H[PhmZDZPthq.ZPthq'1HZPthq'1H[Phm'1H[PhmZD[PIl.ZPthq.[PhmZD[PhmZD[Pd\B[PIl."1hm'1H"1thq'1H"1thq."1thq."1hmZD"1hm'1H"1hmZD"1thq."1Il."1Il."1d\B"1hmZD+1>thq'1HgP>thq'1HfP>hm'1HfP>hm'1H+1>hm'1H+1>thq'1H+1>thq'1H+1>thq.gP>thq.gP>thq.gP>thq'1H+1>thq'1H+1>d\BfP>d\BfP>Il.fP>Il.+1>Il.+1>d\B+1>dZDfP>dZDfP>d\BfP>d\B+1>d\B+1>dZD+1>hmZDfP>hmZDfP>dZDfP>dZD+1>dZD+1>hmZD+1>hm'1HfP>hm'1HfP>hmZDfP>hmZD+1>hmZD+1>hm'1H+1>thq'1H+1>hm'1H+1>hmZD+1>hmZD+1>thq.+1>thq'1H+1>Il.+1>thq.+1>hmZD+1>hmZD+1>d\B+1>Il.fP>hm'1HgP>thq'1HgP>thq.gP>thq.fP>hmZDfP>hm'1HfP>hmZDgP>thq.fP>Il.fP>Il.fP>d\BfP>hmZD+1>thq.+1>Il.fP>Il.fP>Il.gP>thq.+1>thq.DATA D=DATAt=..edge_vertsPx={=2sharp_edge :=|=DATADPx=u    !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~DATA :=DATAhq= .corner_vert H?X|= .corner_edge ?|=) D|=DATAh" H?L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATAh" ?L   "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|DATAh" Ds@[M@M2%M@@@[M@M2%M@@M'MMMҫM@M"0@M@MM@@@@VMMM@@ @@VMMM@@ @M@MM@@M'MMMҫM@M"0@[M@M2%M@@@[M@M2%M@@@@VMMM@@ @M@MM@@M'MMMҫM@M"0@[M@M2%M@@@[M@M2%M@@@[M@M2%M@@@[M@M2%M@@M'MMMҫM@M"0@M@MM@@@@VMMM@@ MĄMMMM@M?MdM@MMMVM=M'MMMҫM@M"0MM@M2%MM@M2%MM@M2%MM@M2%MM@M2%MM@M2%MM@M2%MM@M2%M'MMMҫM@M"0MdM@MMMVM=MĄMMMM@M?M'MMMҫM@M"0MҫM@M"0M'MMr,,P,, /w-י>Ep1%,e  7էe n  Y R uIùː--ː r .V,T/Xsqr  - ː +ɐ  -ː-̐ɐ+r . V q,Ts/XX/sT,qV.r  + ɐ  - ː 1 -̐(6(6 - ː   ː- ̐ -T,X/sq - ː V.wv*Au1D  +cZSECܙ&##~#Å8]h 1 ΐϲyk7r9rKrɟNd ־ A Rƀ#Q?w I<NڡOq>$djFRd < NۡCj $ O !I(I9+,1LW$@XkokuqCWmhoauK"qB1 K dR}Gz+` ~  rgy]m4_XL k Wv{=d?۰х4O63M޳ӈĬO 8L*Ly Dm>s  j!c xܐGYGlGE3E;EEFEEGIGeG  Ҽ ƌ==r=ؗeHeeuHu]uDATAhq= material_index ?}=2.select_poly =X}=2sharp_face =}=DATAx ?LDATA =DATA =DATA| ? !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|ME ^o=HMEkappa_001.001=Z Z Z q= w= `x= `q= q= 3}Kz>c>ջ>A=I|DATA= r=DATA w=0position x=~=2 .select_vert 0=X~=DATA8p x=wZ z>6kþz>S7Cɾz>|o3aƾz>S7Cɾz>6kþz>/>`Ǿz6kþzo3aƾz0>`Ǿz0>`Ǿzo3aƾzW7Cɾͽ]u=]u$b=Yʉvͽ]u$b=Yʉv"bʽYʉv"bʽYʉv$b=YʉvGZ=ON4[B~"bʽYʉvGZ=ON4[B~EZSN4[B~EZSN4[B~GZ=ON4[B~#=MLEZSN4[B~#=ML#QL#QL#=MLD=|#QLD=|D|D|D=|<޼[D|<޼[޼[޼[<޼[\ <ϼ.޼[\ <ϼ.X ϼ.n>RP8 ۾t>XX׾`p>XX׾ %ֽRjFZX׾tZX׾nRP8 ۾ =R=j'=ֽ'=ֽR=jKFN=r{ɽDKFN=r{ɽDR=jG<Ѯ½G<Ѯ½R=jRjG<Ѯ½RjGѮ½Rj%ֽGFNt{ɽDRjGFNt{ɽDGѮ½n>RP8 ۾`p>XX׾\>v9*\>v9*`p>XX׾F>XX׾\>v9*F>XX׾bG>.$HbG>.$HF>XX׾R=jbG>.$HR=j.>dp.>dpR=j =.>dp =;>9 .dp.dp Rj.dpRj`G0$H`G0$HRjFZX׾`G0$HFZX׾\x9*\x9*FZX׾nRP8 ۾zW7Cɾzo3aƾ$(q"#Ҿ$(q"#Ҿzo3aƾ$(G+Ͼ$(q"#Ҿ$(G+Ͼhվhվ$(G+ϾziҾhվziҾ󎃾wyݾ󎃾wyݾziҾ󎃾?ھ󎃾wyݾ󎃾?ھr r 󎃾?ھrjX޾r rjX޾ǎmݽǎmݽrjX޾ǎmս7ǎmݽǎmս7徆cXνl꾆cXνlǎmս7徆c ƽ]辆cXνl꾆c ƽ]辧P㱽?P㱽?񾆀c ƽ]辨PqP㱽?PqC\C\PqC(\C\C(\'/.'/.C(\'/bZiPS >ZiG=Fc4PS >UHPS >ZiPS >UH!>ٔ!>ٔPS >UH!>@m"!>ٔ!>@m"'/> .'/> .!>@m"'/>^ .'/>^\C>\'/>^ (\C>\C> (\P>㱽?P>㱽?C> (\P>qP>㱽?P>qc>Rνl꾈c>Rνl꾨P>qc> ƽ]辈c>Rνl꾈c> ƽ]Ɏm>ݽɎm>ݽ羈c> ƽ]Ɏm>ս7Ɏm>ݽɎm>ս7t> t> Ɏm>ս7t>dX޾t> t>dX޾>syݾ>syݾt>dX޾>>ھ>syݾ>>ھ>hվ>hվ>>ھ>ziҾ>hվ>ziҾ$(>m"#Ҿ$(>m"#Ҿ>ziҾ$(>G+Ͼ$(>G+Ͼz>S7Cɾ$(>m"#Ҿz>S7Cɾ$(>G+Ͼz>|o3aƾ1#󎃾?ھ%,!Yzo3aƾz6kþ,h#zo3aƾ,h#$(G+Ͼ$(G+Ͼ,h#!w@jLl$(G+Ͼ!w@jLl>t5cF8>t5cF8Q[7v$(G+Ͼ$(G+ϾQ[7v/Z$(G+Ͼ/ZziҾziҾ/ZNC[ziҾNC[󎃾?ھ󎃾?ھNC[[4Oͽ󎃾?ھ[4Oͽ%,!Y`p>Qګ$(>G+Ͼm> m> $(>G+Ͼ[> 5z>6kþz>|o3aƾQ>8@0Q>8@0z>|o3aƾ$(>G+ϾQ>8@0$(>G+Ͼw>>jLlw>>jLl$(>G+Ͼ`p>Qګ[> 5$(>G+Ͼ%B>߽+%B>߽+$(>G+Ͼ>ziҾ%B>߽+>ziҾ&4>Oͽ&4>Oͽ>ziҾ>>ھ&4>Oͽ>>ھ|I#>L>>ھ ">9lό|I#>L#=MLPS >UHG=Fc4#=MLG=Fc4D=|G=Fc4bg=D=|D=|bg=BϦ=Y| 1D=|BϦ=Y| 1<޼[BϦ=Y| 1u=񼽟<޼[<޼[u=񼽟C(=\.⼣<޼[C(=\.⼣\ <ϼ.C(=\.⼣¨LCʾt>XX׾n>RP8 ۾$(>m"#Ҿz>S7Cɾz>/>`Ǿz0>`ǾzW7Cɾ9XLCʾ9XLCʾzW7Cɾ$(q"#Ҿ9XLCʾ$(q"#ҾtZX׾tZX׾$(q"#ҾnRP8 ۾nRP8 ۾$(q"#ҾhվnRP8 ۾hվ\x9*侤hվ󎃾wyݾ\x9*\x9*󎃾wyݾr \x9*r `G0$Hr ǎmݽ`G0$H`G0$Hǎmݽ羆cXνl`G0$HcXνl.dpcXνl꾧P㱽?.dp.dpP㱽?C\.dpC\9C\'/.99'/.!ٔ9!ٔ !ٔPS Zi  PS ZiE F E F%ֽE Fbgʽ:*_A%ֽ%ֽbgʽ:*_ABϦ6. %ֽBϦ6. GFNt{ɽDBϦ6. ucg GFNt{ɽDGFNt{ɽDucg C(~WGFNt{ɽDC(~WGѮ½C(~WsGѮ½GѮ½sD31sGѮ½D31sG<Ѯ½D31s¨<sG<Ѯ½G<Ѯ½¨<sC(=~WG<Ѯ½C(=~WKFN=r{ɽDC(=~Wu=ag KFN=r{ɽDKFN=r{ɽDu=ag BϦ=2. KFN=r{ɽDBϦ=2. '=ֽBϦ=2. bg=6*_A'=ֽ'=ֽbg=6*_AG= F'=ֽG= F =G= FPS >Zi = =PS >Zi!>ٔ =!>ٔ;>!>ٔ'/> .;>;>'/> .C>\;>C>\.>dpC>\P>㱽?.>dp.>dpP>㱽?񾈀c>Rνl.>dpc>RνlbG>.$Hc>RνlɎm>ݽbG>.$HbG>.$HɎm>ݽt> bG>.$Ht> \>v9*z>/>`Ǿ;X>LCʾ$(>m"#Ҿ$(>m"#Ҿ;X>LCʾn>RP8 ۾$(>m"#Ҿn>RP8 ۾>hվ>hվn>RP8 ۾\>v9*侤>hվ\>v9*>syݾ>syݾ\>v9*t> FZX׾RjFLCʾF>LCʾR=jF>XX׾m=ftrv=]u|z1itrv|z1itrv=]uͽ]u|z1itrvͽ]ukltrvftՕᆭ*ft龚@龚ftՕᆭ*@龚@֕ᆭ*BĽھ2pھy3@ ھ3@ ھ3pھy35ھ3@ ھ35ھ3Q ھ3@龚ft龚@ ھ3@ ھ3ft龚\ǽU۾1@ ھ3\ǽU۾1BĽھ2>*Ͼs.E>*Ͼ`=><^><^>*Ͼ`=>`=`=*Ͼ`=<^@j@<6>@<^@<^@<6>@h@<^@h@`=@<^@!m@j$=3;c=%*C=ྤCQ=1ྸC$=3;c=ྤClt>Օᆭ*(=6ᾫA>3;c6#JIu <ػmʥ@6D˾Q1ྸCྤC$3;c~3;c@֕ᆭ*@6D˾Œ= ھ`= > ھ!= > ھ`=@龚@ ھ3@ ھ!=@6D˾@Ƨ<@HNѾ@龚@ ھ!=@Ƨ!=@龚@Ƨ!=@֕ᆭ*@֕ᆭ*@Ƨ!=@Ƨ<@֕ᆭ*@Ƨ<@6D˾@>`=@>f@><^@><^@>f@>:6>@>m@><^@>j@>j@><^@>:6>@>4D˾@>FNѾ@>ħ<@>4D˾@>ħ<@>ԕᆭ*@>ԕᆭ*@>ħ<@>ħ!=@>ԕᆭ*@>ħ!=@>龚@>龚@>ħ!=@> ھ!=@>龚@> ھ!=@> ھ3= ھ==Ҿ=J<Ҿ=bJ ھ=cJҾ=Ҿ=Ҿ`= ھ`=rҾ=rҾ= ھ`=r ھ=rҾ=r ھ={w9ҾmQ={w9ҾmQ=r ھ={w9 ھmQ={w9ҾmQ={w9 ھmQ=Ҿ=Ҿ={w9 ھmQ= ھ=Ҿ= ھ=bJ ھ=cJҾ=bJ ھ=L3Ҿ=L3Ҿ=bJ ھ=3 ھ=L3Ҿ=3 ھ=J<Ҿ=J<Ҿ=3 ھ=J< ھ=J<Ҿ=J< ھ== ھ==Ҿ== ھ=w9=ҾmQ=w9=ҾmQ== ھ=w9= ھmQ=w9=ҾmQ=w9= ھmQ=1r=Ҿ=Œ= ھ`=Œ=Ҿ`=1r=Ҿ=Œ= ھ`=1r=Ҿ=1r= ھ=1r= ھ=1r=Ҿ=w9= ھmQ=]d;>ħ`=L>ħ`= > ھ`= > ھ`=L>ħ`=L>`= > ھ`=L>`=@>`=Œ=Ҿ`=Œ= ھ`= > ھ`=Œ=Ҿ`= > ھ`=>*Ͼ`=>*Ͼ`= > ھ`=@>`=>*Ͼ`=@>`=>`=@>ԕᆭ*@>龚lt>Օᆭ*lt>Օᆭ*@>龚lt>龚=pھy3@> ھ3=5ھ3=5ھ3@> ھ3Q= ھ3lt>龚@>龚(=U۾1(=U۾1@>龚@> ھ3(=U۾1@> ھ3B=ھ2B=ھ2@> ھ3=pھy3Ҿ`=*Ͼ`= ھ`=Ҿ`= ھ`= ھ`=LƧ`=Wd;Ƨ`=L`=L`=Wd;Ƨ`= ھ`=L`= ھ`=@`=@`= ھ`=*Ͼ`=@`=*Ͼ`=`=w9=ҾmQ=L3Ҿ`==Ҿ==Ҿ=L3Ҿ`=J<Ҿ=J<Ҿ=L3Ҿ`=L3Ҿ=Œ=Ҿ`=L3Ҿ`=1r=Ҿ=1r=Ҿ=L3Ҿ`=w9=ҾmQ=cJҾ=L3Ҿ`=Ҿ=Ҿ=L3Ҿ`={w9ҾmQ=L3Ҿ=L3Ҿ`=cJҾ=rҾ={w9ҾmQ=Ҿ`=Ҿ`={w9ҾmQ=L3Ҿ`=L>FNѾL>ħ<@>FNѾ@>FNѾL>ħ<@>ħʛB@>m@>jL>ʛB@>jL>jL>j@>j@>:6>L>j@>:6>L>:6>L>:6>@>:6>@>fL>:6>@>fL>fL>`=L>f@>`=@>`=L>f@>f@>ħħ<@>ħ!=@>ħ!=L>ħħ`=@>ħ!=L>ħ`=]d;>ħ!=]d;>ħ!=L>ħ`=]d;>ħ`=L>ħ>КL>ʛBL>ħʛBL>jL>`=L>ħ`=L>fL>fL>ħ`=L>ħfL>ħ:6>L>:6>L>ħj@> ھ!=@>ħ!= > ھ!= > ھ!=@>ħ!=]d;>ħ!= > ھ!=]d;>ħ!= > ھ`= > ھ`=]d;>ħ!=]d;>ħ`=@><^><^@>`=@`=`=@<^@<^`=<^@>`=><^>`=LƧLh@<6>L<6>L<6>@<6>@jL<6>@jLjLj@j@!mLj@!mLʛBLƧ`=L`=LƧLʛBLHNѾLƧ ھ!=Wd;Ƨ!=@ ھ!=@ ھ!=Wd;Ƨ!=@Ƨ!=Wd;Ƨ!= ھ!=Wd;Ƨ`=Wd;Ƨ`= ھ!= ھ`=ft龚ftՕᆭ*\ǽU۾1\ǽU۾1ftՕᆭ*\ǽ6ᾫAQ1ྸCQ ھ35ھ3Q1ྸC5ھ3ྤCྤC5ھ3pھy3ྤCpھy3%*C%*Cpھy3BĽھ2%*CBĽھ2BĽ#gBBĽ#gBBĽھ2\ǽU۾1BĽ#gB\ǽU۾1\ǽ6ᾫA$=1ྸCQ=1ྸCQ= ھ3Q ھ3Q1ྸC$1ྸCQ ھ3$1ྸC%$31ྸC$=1ྸCQ= ھ3%$31ྸC%$31ྸCQ= ھ3Q ھ3(=6ᾫA(=U۾1B=ھ2(=6ᾫAB=ھ2B=#gBB=#gBB=ھ2=pھy3B=#gB=pھy3=%*C=%*C=pھy3=5ھ3=%*C=5ھ3=ྤC=ྤC=5ھ3Q= ھ3=ྤCQ= ھ3Q=1ྸC(=U۾1(=6ᾫAlt>龚lt>龚(=6ᾫAlt>Օᆭ*L3Ҿ`=Œ=Ҿ`=>*Ͼ`=*Ͼ`=L3Ҿ`=>*Ͼ`=*Ͼ`=Ҿ`=L3Ҿ`=>*Ͼ`=>*Ͼs.E*Ͼ`=3 ھ=bJ ھ=8 ھ5= ھ`=Q ھ38 ھ5={w9 ھmQ=8 ھ5= ھ=8 ھ5=bJ ھ= ھ=Q ھ3 ھ!=@ ھ3 ھ!=@ ھ!=@ ھ3 ھ`=8 ھ5=r ھ=8 ھ5={w9 ھmQ=r ھ=w9= ھmQ=8 ھ5=1r= ھ=8 ھ5=Œ= ھ`=1r= ھ=@> ھ!= > ھ!=@> ھ3 > ھ!=Q= ھ3@> ھ3J< ھ=3 ھ=8 ھ5=Q= ھ38 ھ5=Q ھ3 ھ`= ھ!= ھ`= ھ!=Q ھ3 ھ`=Q= ھ3 > ھ!=Œ= ھ`=Q= ھ3Œ= ھ`=8 ھ5== ھ=J< ھ=8 ھ5== ھ=8 ھ5=w9= ھmQ=!>@m"PS >UH#=ML!>@m"#=MLGZ=ON4[B~'/>^@m"GZ=ON4[B~C> (\'/>^ (\GZ=ON4[B~$b=YʉvP>qC> (\$b=Yʉvc> ƽ]辨P>q$b=Yʉv>>ھ >Ʉ ">9lό>>ھt>dX޾ >Ʉc> ƽ]$b=Yʉv=]uc> ƽ]辴=]um=ftrvɎm>ս7很c> ƽ]m=ftrvɎm>ս7m=ftrv$=xNzwɎm>ս7$=xNzw=Y ~t>dX޾Ɏm>ս7徤=Y ~t>dX޾=Y ~Z >|kt>dX޾Z >|k >Ʉ#QLPS UH!Hm"#QL!Hm"EZSN4[B~EZSN4[B~!Hm"'/bLCʾF> 7þF>LCʾ[> 5%B>߽+ >>jLl OͽN "΄=Y ~ >OͽZ >|kkltrvI~2Oͽ$=xNzw >Oͽ=Y ~`p>>jLlm> [> 5 >>jLlz&> 7þF> 7þkltrv2Oͽ|z1itrv >>jLl2Oͽz&> 7þ`p>>jLl[> 5F> 7þ[> 5 >>jLlF> 7þ&4>Oͽ >Oͽ%B>߽+ >Oͽ >>jLl%B>߽+[4OͽNC[ OͽNC[ @jLl Oͽm> `p>>jLl`p>Qګ`p>>jLlw>>jLl`p>Qګ;X>LCʾQ>8@0`p>LCʾQ>8@0w>>jLl`p>LCʾQ>8@0;X>LCʾz>6kþ;X>LCʾz>/>`Ǿz>6kþ`p>LCʾF>LCʾF>XX׾`p>LCʾF>XX׾`p>XX׾;X>LCʾ`p>LCʾt>XX׾`p>LCʾ`p>XX׾t>XX׾NC[/ZQ[7vNC[Q[7v @jLlz0>`Ǿ9XLCʾz6kþ9XLCʾ,h#z6kþF> 7þ`p>LCʾ`p>>jLl`p>LCʾw>>jLl`p>>jLlF 7þQ[7v>t5cF89XLCʾtZX׾F 7þ9XLCʾF 7þ,h#FLCʾF 7þtZX׾FLCʾtZX׾FZX׾-\Υ1# Oͽ-\Υ Oͽ "΄ >ɄZ >|k >Oͽ >Ʉ >Oͽ ">9lόN Oͽ2OͽN2OͽI~ Oͽ1#%,!Y Oͽ%,!Y[4Oͽ|I#>L ">9lό >Oͽ|I#>L >Oͽ&4>Oͽ2Oͽ$=xNzwm=ftrv2Oͽm=ftrv|z1itrv!w@jLl,h#F 7þ!w@jLlF 7þ>t5cF8 >Oͽ$=xNzw2Oͽ >Oͽ2Oͽ >>jLl@>4D˾@>ԕᆭ*_K(>3;c<^*Ͼs.E>*Ͼs.E<^>*Ͼs.E><^$=3;cB=#gB=%*C%*C$3;cྤC>3;c@>4D˾_K(>3;cBĽ#gB$3;c%*Cu <ػmʥ$=3;c$3;c$=3;c%$31ྸC$3;c$=3;cu <ػmʥ>3;cu <ػmʥ@>4D˾>3;c$3;c~3;cu <ػmʥ~3;c@6D˾u <ػmʥ<#J=Iu <ػmʥ6#JI@>4D˾u <ػmʥ<#J=I\ǽ6ᾫAftՕᆭ*~3;cftՕᆭ*@֕ᆭ*~3;c\ǽ6ᾫA~3;c$3;c\ǽ6ᾫA$3;cBĽ#gBQ1ྸC$3;c$1ྸC$3;c%$31ྸC$1ྸCQ=1ྸC$=1ྸC$=3;c$=1ྸC%$31ྸC$=3;c(=6ᾫAB=#gB$=3;c(=6ᾫA$=3;c>3;c>3;c_K(>3;clt>Օᆭ*_K(>3;c@>ԕᆭ*lt>Օᆭ*mUjj>/׾M>(}~>yƾ2>/׾M>YNEʾ89>YNEʾ89>/׾M> c̾U=>m/׾==y>/׾=lվףP>l/׾ףP>N6վIR>Q&վzV>/׾\>oվ\>,QKOX>="VqW>"VqW>=ռV>=7>= 0>v@h#>33þr)>ֱAC>Zvþo*>yƾ2>(>"VqW>Dގt\>OyQlϼ\>~{KOX>7ۻ缾\>7ۻ缾\>~{KOX>"VqW>7ۻ缾\>"VqW>Y{,\>Y{,\>"VqW>ODގt\>"VqW>㽼꽾\>㽼꽾\>"VqW>ռV>㽼꽾\>ռV>vc\>vc\>ռV>qZ\>qZ\>ռV>\>\>ռV>T>\>T>!7O\>!7O\>T>SwQ>!7O\>SwQ>T`T¾\>08EǾ\>rƾ\>pN>pN>rƾ\>CJž\>pN>CJž\>rþ\>T`T¾\>SwQ>_YK¾\>_YK¾\>SwQ>rþ\>rþ\>SwQ>pN>ܻ;\>ͰN˾\>bJD>bJD>ͰN˾\>ɾ\>08EǾ\>pN>ɾ\>ɾ\>pN>͑/I>ɾ\>͑/I>bJD>oվ\>bJD>=̽8J>> 0>W wѾH>=7>=7>W wѾH>lվףP>=7>lվףP>N6վIR>=7>N6վIR>Q&վzV>=7>Q&վzV>=̽8J>>=̽8J>>Q&վzV>oվ\>(>yƾ2> 0>yƾ2>YNEʾ89> 0> 0>YNEʾ89> c̾U=> 0> c̾U=>X ;A> 0>X ;A>W wѾH>Zvþo*>(>33þr)>33þr)>(>ֱAC>>>mUjj>ֱAC>>>ֱAC>>>ֱAC>mUjj>(}~>ֱAC>(}~>v@h#>>>/׾M>mUjj>bJD>͑/I>͑/I>pN>pN>SwQ>̽8J>>=7>=7>,QKOX>"VqW>"VqW>,QKOX>"VqW>~{KOX>ռV>ռV>"VqW>"VqW>ռV>"VqW>ռV>T>ռV>pN>SwQ>SwQ>SwQ>SwQ>T>T>SwQ>T>T>T>ռV>͑/I>pN>͑/I>͑/I>pN>pN>͑/I>bJD>bJD>=7>=̽8J>>̽8J>>̽8J>>=̽8J>>bJD>̽8J>>bJD>bJD> 0>=7> 0> 0>=7>=7>(> 0>(>(> 0> 0>ֱAC>>>ֱAC>(>ֱAC>ֱAC>(>ֱAC>(>J=վ\>= <>Jd=iҾ\>Jd=iҾ\>= <>6=B>Jd=iҾ\>6=B>=Ͼ\>=Ͼ\>6=B>#=VϾ\>#=VϾ\>6=B>=F8;\>=F8;\>6=B>Т=@H>=F8;\>Т=@H>J=Ȱʾ\>Bue=`<þ\>=ľ\>=M>=ľ\>o0=!vƾ\>=M>=M>o0=!vƾ\>6=l!Ⱦ\>=M>6=l!Ⱦ\>Т=@H>Т=@H>6=l!Ⱦ\>=*WȾ\>Т=@H>=*WȾ\>J=Ȱʾ\>V%=5AT>Q=\>7=\>V%=5AT>7=\>z3\= Q>z3\= Q>7=\>Q0=\>Bue=`<þ\>=M>z3\= Q>Bue=`<þ\>z3\= Q>a= þ\>a= þ\>z3\= Q>J=+\>J=+\>z3\= Q>Q0=\>}~^<]\><]\>~^0; Ҽ\>0; Ҽ\>~^~{KOX>0; Ҽ\>~{KOX>yQlϼ\>}+<`\>~^~^+<`\><^\>~^<^\><^\><(\><(\>V%=5AT>V%=5AT><(\>^V%=5AT>^Q=\>y> u>y>K>&>lx>&>lx>\>mL >>o>y> u>&>lx>>o>\>mL >&>lx>>DQ #>>DQ #>&>lx>&>s¾A)>&>s¾A)>&>lx>f >#>&>s¾A)>f >#>43>ƾ1%2>43>ƾ1%2>f >#>6>ɾfN7>6>ɾfN7>f >#>>ʾ+5;>>ʾ+5;>f >#>>,>>ʾ+5;>>,>G* >ϾyD>G* >ϾyD>>,>{=j4>G* >ϾyD>{=j4>i>վEP>= <>J=վ\>i>վEP>i>վEP>{=j4>= <>0; Ҽ\>yQlϼ\>Q/׾\>a= þ\>J=+\>Q/׾\>=F8;\>Q/׾\>#=VϾ\>o0=!vƾ\>Q/׾\>6=l!Ⱦ\>>DQ #>y>/׾u>\>mL >\>mL >y>/׾u>y> u>\>mL >y> u>>o>i>վEP>l>/׾EP>y>/׾u>i>վEP>y>/׾u>G* >ϾyD>>ʾ+5;>G* >ϾyD>6>ɾfN7>6>ɾfN7>G* >ϾyD>y>/׾u>6>ɾfN7>y>/׾u>43>ƾ1%2>43>ƾ1%2>y>/׾u>>DQ #>43>ƾ1%2>>DQ #>&>s¾A)>=,QKOX>~^<W>y>=y> u>y>/׾=y>/׾=y> u>y>/׾u>=y>=y>/׾=J=վ\>I=/׾\>l>/׾EP>J=վ\>l>/׾EP>i>վEP>~^<W>,QKOX>~{KOX>~{KOX>~^~^<W>~^<W>~^<V>~^<V><V>V%=5AT><V>V%=5AT>U%=5AT>U%=5AT>V%=5AT>z3\= Q>U%=5AT>z3\= Q>y3\= Q>y3\= Q>z3\= Q>=M>z3\= Q>=M>=M>=M>=M>Т=@H>=M>Т=@H>Т=@H>Т=@H>Т=@H>6=B>Т=@H>6=B>6=B>6=B>6=B>= <>6=B>= <>= <>= <>= <>ʀ=j4>= <>{=j4>ʀ=j4>ʀ=j4>{=j4>>,>{=j4>>,>>,>>,>>,>f >#>>,>f >#>f >#>&>lx>y>K>&>lx>&>lx>&>lx>f >#>&>lx>f >#>f >#>y>=y>K>y> u>=m/׾=/׾M>=>>>>=/׾M>>>/׾M>/׾\>l/׾ףP>Q/׾\>/׾\>/׾M>Q/׾\>/׾M>m/׾=Q/׾\>m/׾=y>/׾=y>/׾u>l>/׾EP>I=/׾\>Q/׾\>y>/׾=y>/׾u>Q/׾\>y>/׾u>I=/׾\>=T>ռV>=>>ֱAC>y>=&>lx>y>K>̽8J>>==7>=~^<W><V>(>=ֱAC>f >#>&>lx>y>= 0>=(>>,>f >#>y>=pN>=͑/I>T>=SwQ>SwQ>=pN>͑/I>=bJD>bJD>=̽8J>>ʀ=j4>>,>y>== <>ʀ=j4>y>=6=B>= <>y>=Т=@H>6=B>y>==M>Т=@H>y>=y3\= Q>=M>y>=U%=5AT>y3\= Q>y>=<V>U%=5AT>y>=y>==<V>X ;A> c̾U=>/׾M>X ;A>/׾M>W wѾH>Zvþo*>33þr)>/׾M>Zvþo*>/׾M>yƾ2>/׾M>33þr)>v@h#>/׾M>v@h#>(}~>W wѾH>/׾M>l/׾ףP>W wѾH>l/׾ףP>lվףP>l/׾ףP>/׾\>Q&վzV>l/׾ףP>Q&վzV>N6վIR>TӽiѾ\>oվ\>/׾\>bJD>0½ξ\>ܻ;\>bJD>TӽiѾ\>0½ξ\>bJD>oվ\>TӽiѾ\>=Ͼ\>#=VϾ\>Q/׾\>=*WȾ\>6=l!Ⱦ\>Q/׾\>Bue=`<þ\>a= þ\>Q/׾\>Jd=iҾ\>I=/׾\>J=վ\>T`T¾\>_YK¾\>Q/׾\>Q/׾\>I=/׾\>=Ͼ\>I=/׾\>Jd=iҾ\>=Ͼ\>TӽiѾ\>/׾\>0½ξ\>/׾\>Q/׾\>0½ξ\>Q/׾\>Y{,\>OQ/׾\>ODގt\>7ۻ缾\>Y{,\>Q/׾\>7ۻ缾\>Q/׾\>yQlϼ\>㽼꽾\>vc\>Q/׾\>㽼꽾\>Q/׾\>Dގt\>Q/׾\>\>!7O\>Q/׾\>!7O\>T`T¾\>Q/׾\>vc\>qZ\>Q/׾\>qZ\>\>Q/׾\>_YK¾\>rþ\>Q/׾\>rþ\>CJž\>Q/׾\>}<]\>Q/׾\><]\>0; Ҽ\>Q/׾\>^<(\>Q/׾\><(\><^\>Q/׾\>CJž\>rƾ\>Q/׾\>rƾ\>08EǾ\>Q/׾\>08EǾ\>ɾ\>Q/׾\>ɾ\>ͰN˾\>Q/׾\>ͰN˾\>ܻ;\>Q/׾\>ܻ;\>0½ξ\>Q/׾\><^\>+<`\>Q/׾\>+<`\>}Q/׾\>7=\>Q=\>Q/׾\>Q=\>^Q0=\>7=\>Q/׾\>Q0=\>Q/׾\>J=+\>=ľ\>Bue=`<þ\>Q/׾\>=ľ\>Q/׾\>o0=!vƾ\>J=Ȱʾ\>=*WȾ\>Q/׾\>J=Ȱʾ\>Q/׾\>=F8;\>*Ͼ`=*Ͼs.E<^>*Ͼs.E*Ͼs.E*Ͼ`= @jLlQ[7vF 7þL>КLHNѾLʛB2Oͽ Oͽ @jLlL>FNѾL>>КL>ħКLʛB@!mL>>КL>К@!mL>>К@!m@>mL>>К@>mL>ʛB@><^@>m><^@>m@!m><^><^@!m<^<^@!m@<^DATA\ 0=DATA`x=..edge_vertsBy=~=2sharp_edge &=~=DATAJBy=uZ     !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~            !#!""#$&$%%&')'(()*,*++,-/-../0201123534456867789;9::;<><==>?A?@@ABDBCCDEGEFFGHJHIIJKMKLLMNPNOOPQSQRRSTVTUUVWYWXXYZ\Z[[\]_]^^_`b`aabcecddefhfgghikijjklnlmmnoqoppqrtrsstuwuvvwxzxyyz{}{||}~~           " !!"#%#$$%&(&''()+)**+,.,--./1/0012423345756678:899:;=;<<=>@>??@ACABBCDFDEEFGIGHHIJLJKKLMOMNNOPRPQQRSUSTTUVXVWWXY[YZZ[\^\]]^_a_``abdbccdegeffghjhiijkmkllmnpnoopqsqrrstvtuuvwywxxyz|z{{|}}~~          !  !"$"##$%'%&&'(*())*+-+,,-.0.//0131223464556797889:<:;;<=?=>>?@B@AABCECDDEFHFGGHIKIJJKLNLMMNOQOPPQRTRSSTUWUVVWXZXYYZ[][\\]^`^__`acabbcdfdeefgighhijljkklmomnnoprpqqrsusttuvxvwwxy{yzz{|~|}}~                                                     ! # ! " " # $ & $ % % & ' ) ' ( ( ) * , * + + , - / - . . / 0 2 0 1 1 2 3 5 3 4 4 5 6 8 6 7 7 8 9 ; 9 : : ; < > < = = > ? A ? @ @ A B D B C C D E G E F F G H J H I I J K M K L L M N P N O O P Q S Q R R S T V T U U V W Y W X X Y DATA\ &=DATAh q= .corner_vert L?= .corner_edge X?X=) y==DATAh% L?LZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y DATAh% X?LZ    "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|      "#!%&$()'+,*./-120453786:;9=><@A?CDBFGEIJHLMKOPNRSQUVTXYW[\Z^_]ab`decghfjkimnlpqostrvwuyzx|}{~     !" $%#'(&*+)-.,01/3426759:8<=;?@>BCAEFDHIGKLJNOMQRPTUSWXVZ[Y]^\`a_cdbfgeijhlmkopnrsquvtxyw{|z~}      !#$"&'%)*(,-+/0.231564897;<:>?=AB@DECGHFJKIMNLPQOSTRVWUYZX\][_`^bcaefdhigkljnomqrptuswxvz{y}~|                          " # ! % & $ ( ) ' + , * . / - 1 2 0 4 5 3 7 8 6 : ; 9 = > < @ A ? C D B F G E I J H L M K O P N R S Q U V T X Y W DATAh% y=sZ l l]lll_l :OO/ ܢ AK   t3Iq&<}}b__  b H$  t_79f:99˟*9S_> A.ؠwI GVZJȪ47 Ra20 Dž "$ B 0@*1͜R ] ; Y $ T*O?խ7 * {I8}<[X& G I=T2? ES Z&>Y=y  Ҡ U AE&FњFњ  > =}s+)KgD%@|&݅ЊEX;t:֚"['-#¥kW..*B3P1]aRl n ӿ cGU7S[:U,7 cg8x3qӴ5ocNo֥?P a ֟\CI̠CHh222) P ! 7} _"xR#mH5l B  f@ެ 4 g ޟ~6 ]  m h # Þ{I   -N ϲ B;3Ia  qDAM0M`W #ߒI7 YMFp1ҟ,_W)=!޼tu|Ŝ6n} r o > ¨ N7 ]dFl }K5'Ԅ9V  L # J w3 Vܡ| $ _/_/@/ =| 1 ;;;;b##ڞ###Z#'j^s7@@&J[jo%//< /B_  g q C   C ɮσ3+D+1+ MVMЫM$}ccZcI,fz,,ި..4.:B:ß:_}V(^w"Xbccycɀ,,,!MAM>Moi]++Ǭ+ۃ&*:G8gџD{~TG_GGxxp / gaStO 2 Tw G I uWy~0llG#G G ' Ѐ G  ( 17R9ջ P a X01V6x z /#K;GƠ e  O VL}_JVS[. ط v l_sy!v  Ԍ  ABH6("7 ˨ rPr 000%0z 0`۔Ϩsu D 5 - u aԴЇhGG#?VȠWHgggu;b;;gggU*444|*;bj  K b&/f//ڴ 3͇ p1 N ?]]D?n,,,sܦIK}_  VG}o!<G2Xf2Y2d'צcϡ9,)c4Nʨ{z]@|u|9A#$,rqKyJI a HA e&&&ch## $D.[vƴW%6%;% o /7//!!*!v"""8f , N Ld5#!eceueYYY Ⱥ -a9 =;k+  /.}Vmg|5Ќ . _  2 3 l-աT'>aEL/k//~  w8 4f;3111i4  '~ S +G S)6N66YHQIr`?^ 7 &WJ|t|Π|OA;pߏ[MM!MM  3_3ß3p? x~EwKv B q ߘ _k# lղχclg[cl7}%wf=pßp3pC{{{?hy[)\))P,,px,9*l0   nn'nҟUӭ 9ryRXr7vΟ4 PjPآj}ϣLf-zDATAh`q= material_index q==2.select_poly K?=2sharp_faceN?X=DATAx q=LDATA  K?DATA N?BDATA| q= !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ME eo=HMEkomega_001 =z z ~z 8?z= |= q=q= @3uؾq <>ZI>F>A=I|DATA = r=DATAz=0position`kz=ؐ=2 .select_vert q==DATA`kz=wz {>23|>{43|>a>23ϛ>a>23ϛ>{43|>|a43ϛ>a>23ϛ>|a43ϛ>B>23>B>23>|a43ϛ>B43>B>23>B43>dz">33>dz">33>B43>`z"33>dz">33>`z"33>hI>33̦>hI>33̦>`z"33>dI33̦>hI>33̦>dI33̦>R=33>R=33>dI33̦>R33>R=33>R33># `=33ݎ># `=33ݎ>R33> `33ݎ># `=33ݎ> `33ݎ><33><33> `33ݎ>镼33>G὚߉>nZ_>G὚|>G὚|>nZ_>M|>*>%Sz>N<@>f|>>%S>>%S>N<@>f|>M>||>>%S>M>||>>sh :>>sh :>M>||>ee>|>>sh :>ee>|>> VH>> VH>ee>|>;J~>|>> VH>;J~>|>>G8 {N>>G8 {N>;J~>|>ׅ>u|>ׅ>u|>>f|>>G8 {N> />%S>G=GI>]>%S%z>G=GI>G=߉>?>>]>%S%z>G=GI>?>>]>%S%z>?>>*>%Sz>*>%Sz>?>>U>|>*>%Sz>U>|>$>|>*>%Sz>$>|>N<@>f|>G=GI> />%S>{=/>{=/> />%S>٠=v2^>٠=v2^> />%S>`=%S>٠=v2^>`=%S>=>=i>=>=i>`=%S>eҘ=%S2>=>=i>eҘ=%S2>T|T|eҘ=%S2><%S>T|<%S>|!><%S> ͼ%S>|!>|!> ͼ%S>A.!v>A.!v> ͼ%S>YҘ%S2>A.!v>YҘ%S2>Q >Q >YҘ%S2>%S$>Q >%S$>GGI>GGI>%S$>/%S >GGI>/%S >G὚߉>G὚߉>/%S >sO^%SV>G὚߉>sO^%SV>nZ_>nZ_>sO^%SV>M|>M|>sO^%SV>5O%Snn>M|>5O%Snn>x$|>x$|>5O%Snn>r@h|>r@h|>5O%Snn>%S>r@h|>%S>Mx|>f|>D)|>G8 {N>G8 {N>D)|>ژ~|>G8 {N>ژ~|> VH> VH>ژ~|>Sk'k|> VH>Sk'k|>#g >#g >Sk'k|>Mx|>#g >Mx|>%S>eҘ="2>eҘ=%S2>`=">`=">eҘ=%S2>`=%S>`=">`=%S> />!> />!>`=%S> />%S> />!> />%S>]>!%z>]>!%z> />%S>]>%S%z>]>!%z>]>%S%z>)>!z>)>!z>]>%S%z>*>%Sz>)>!z>*>%Sz>>!>>!>*>%Sz>>%S>eҘ=%S2>eҘ="2><%S><%S>eҘ="2><"><%S><"> ͼ">E"0>YҘ%S2> ͼ"> ͼ">YҘ%S2> ͼ%S> ͼ"> ͼ%S><%S>"$>YҘ%S2>E"0>%S$>YҘ%S2>"$>%S$>"$>/%S >/%S >"$>/# >/%S >/# >sO^%SV>sO^%SV>/# >sO^#V>sO^%SV>sO^#V>5O%Snn>5O%Snn>sO^#V>6O#nn>5O%Snn>6O#nn>%S>%S>6O#nn>#>#>6O#nn>B43>#>B43>|a43ϛ>ϾL>[ھ('>{43|>{43|>[ھ('>|a43ϛ>|a43ϛ>[ھ('>ՂYL>|a43ϛ>ՂYL>#>ϾL>{43|>Ae̾>Ae̾>{43|>Ǿ|>> Ǿ|>We>|>>?e̾>>?e̾>We>|>{>23|>>?e̾>{>23|>>پP>B43>6O#nn>`z"33>`z"33>6O#nn>sO^#V>`z"33>sO^#V>dI33̦>dI33̦>sO^#V>/# >dI33̦>/# >R33>R33>/# >"$>"$>E"0>R33>R33>E"0> `33ݎ> `33ݎ>E"0>镼33>镼33>E"0> ͼ">镼33> ͼ"><33><33> ͼ"><">eҘ="2>`="># `=33ݎ>eҘ="2># `=33ݎ><33>eҘ="2><33><"># `=33ݎ>`=">R=33>R=33>`="> />!>R=33> />!>hI>33̦>]>!%z>dz">33>hI>33̦>]>!%z>hI>33̦> />!>B>23>)>!z>>!>B>23>>!>a>23ϛ>a>23ϛ>>!>>iҪ>a>23ϛ>>iҪ>{>23|>{>23|>>iҪ>>پP>]>!%z>)>!z>dz">33>dz">33>)>!z>B>23>G὚߉>G὚|>GGI>GGI>G὚|>GMム|>G=GI>G=Mム|>G=|>G=GI>G=|>G=߉>>f|>> Ǿ|>>G8 {N>>G8 {N>> Ǿ|>>?e̾>>G8 {N>>?e̾>> VH>>?e̾>>پP>> VH>> VH>>پP>>sh :>>sh :>>پP>>iҪ>>sh :>>iҪ>>%S>>%S>>iҪ>>!>Ae̾>Ǿ|>f|>ϾL>Ae̾>[ھ('>[ھ('>Ae̾>f|>[ھ('>f|>G8 {N>G8 {N> VH>[ھ('>[ھ('> VH>#g >[ھ('>#g >%S>[ھ('>%S>ՂYL>ՂYL>%S>#>{>23|>G=Mム|>{43|>{43|>G=Mム|>GMム|>;J~>|>>&|>ׅ>u|>>&|>>f|>ׅ>u|>>&|>{>23|>We>|>>&|>We>|>> Ǿ|>>f|>>&|>> Ǿ|>G=Mム|>>&|>G=|>&|>Ǿ|>{43|>Ǿ|>&|>f|>f|>&|>D)|>D)|>&|>ژ~|>ژ~|>&|>Sk'k|>Sk'k|>&|>Mx|>Mx|>&|>r@h|>{>23|>>&|>G=Mム|>U>|>G=|>$>|>$>|>G=|>>&|>$>|>>&|>N<@>f|>N<@>f|>>&|>M>||>M>||>>&|>ee>|>ee>|>>&|>;J~>|>r@h|>&|>x$|>x$|>&|>M|>GMム|>&|>{43|>M|>&|>G὚|>G὚|>&|>GMム|>y>Q>=Q`=QSpq= -"X BVq= -Vq= -Gz 1s馽 hJ= -<=z ёW=q= -W=q= -<=z ё=X 1W=q= -=X 1p=q= -p=q= -=X 1K=$ ͗q= `=Q`=y Q=* q= ] >~, >^ y x>^ y x> kۿ >* q= ] >* q= ] > kۿ >z6"O ,>* q= ] >z6"O ,>Y> 8>PH >ۋlC >VQ=VQ=ۋlC >@Lq >VQ=@Lq >ZQt=ZQt=@Lq >Q[_ >ZQt=Q[_ >ُ3 >r >Byu >枼q= F=r >枼q= F=r_ > >Vq= =; GZ >; GZ >Vq= =枼q= F=; GZ >枼q= F=ԏz >ԏz >枼q= F=Byu > >2Ed >Vq= =Vq= =2Ed >F 6T >Vq= =F 6T >* q= ] >* q= ] >F 6T >* >* q= ] >* >~, > 4tff>g4I# >) Q] >g4I# >ȁ.9cE >) Q] >) Q] >ȁ.9cE >VQ=VQ=ȁ.9cE >C >VQ=C >PH >h3Q>r׼E>Q# >Q# >r׼E>> ^>Q# >> ^>k:]>Q# >k:]>) Q] >) Q] >k:]>6pe)\>) Q] >6pe)\> 4tff>7 =Q] >=P >A}=V >A}=V >ax=xbr>7 =Q] >7 =Q] >ax=xbr>%k=:]>7 =Q] >%k=:]>N=QM>%k=:]>}=?i>N=QM>N=QM>}=?i>=N=QM>=-=Q# >-=Q# >=E;Ln>-=Q# >E;Ln>h3Q>h3Q>E;Ln>]'8WU>h3Q>]'8WU>r׼E>W=q= ==f $ >=, >W=q= ==, >D=q= r=D=q= r==, >ӎ=r  >D=q= r=ӎ=r  >=W >r= >r=_ >h=Qt=r=_ >l= >h=Qt=h=Qt=l= >`=|D >h=Qt=`=|D >َ= >h=Qt=َ= >x=&L >x=&L >=u >h=Qt=h=Qt==u >ldž=M >h=Qt=ldž=M >7 =Q] >7 =Q] >ldž=M >=P >uq=, I>bHy= ;p>6 =q= ] >E=q= E>z6="O ,>6 =q= ] >6 =q= ] >z6="O ,>#k=ۿ >6 =q= ] >#k=ۿ >uq=, I>bHy= ;p>6 =A} ] >6 =q= ] >6 =q= ] >6 =A} ] >W=q= =W=q= =6 =A} ] >#= x >W=q= =#= x >=f $ >>Q%;>q= %;">Q`=">Q`=>q= %;!>q= `=">Q`=!>q= `= >q= ==W >r= >D=q= r=D=q= r=r= >h=Qt=D=q= r=h=Qt=\=q= y=\=q= y=h=Qt=]=Qy=\=q= y=]=Qy= >q= = >q= =]=Qy= >Q= >q= = >Q=">Q`=ُ3 >r_ >ZQt=ZQt=r_ >枼q= F=ZQt=枼q= F=OQy=枼q= F=Pq= y=OQy=OQy=Pq= y=y Q=y Q=Pq= y=z q= =y Q=z q= =q= `=Q`=q= `=ۉQ%;ۉQ%;q= `=܉q= %;񵽋;KEG¾}Qx"޾񵽋;Qx"޾2424Qx"޾Q= *Xɺǹ cSǹ cSXɺV$ǹ cSV$U@e|bȾǹ cS⾭U@e|bȾwo߾Q8.q̾w8䅾ܾU@e|bȾU@e|bȾw8䅾ܾwo߾2gо 2)vپʾ jϾ 2)vپXxپʾ jϾʾ jϾXxپ)t~ھʾ jϾ)t~ھQ8.q̾Q8.q̾)t~ھw8䅾ܾ 2)vپ2gоgVH=(н< >㽽<(>㽽<(>㽹< >Y컃 潽<(>Y컃 L(L(Y컃 W ۽L(W ۽V(۽V(۽W ۽3e| ½V(۽3e| ½2e|(½2e|(½3e| ½ `2e|(½ ` (` (` `eν Z (`eν Zeν(Zeν(Zeν Zj 佃 >ټeν(Zj 佃 >ټi (>ټi (>ټj 佃 >ټ뽃 o;i (>ټ뽃 o;(o;(o;뽃 o;j 佃 ڬ<(o;j 佃 ڬټu(Uu(x<(o;i (ڬ<Nj=(r=(=(V=V=(=V(=<(=CQ(w=;((,A=(j彽<(>VH=(н=(Ih˽V=(`(m=R|>Y> 8>z6"O ,>(m=R|>z6"O ,> kۿ >#k=ۿ >z6="O ,>(m==R|>(m==R|>z6="O ,>E=q= E>(m==R|>E=q= E>(m=R|>(m=R|>E=q= E>Y> 8>uq=, I>#k=ۿ >(m==R|>uq=, I>(m==R|>bHy= ;p>bHy= ;p>(m==R|>C-x=Po|>bHy= ;p>C-x=Po|>6 =A} ] >6 =A} ] >C-x=Po|>T=a|>=XV}>#= x >n=a>}>n=a>}>#= x >6 =A} ] >n=a>}>6 =A} ] >T=a|>澎=0>ӎ=r  > =R~> =R~>ӎ=r  >=, > =R~>=, >=XV}>=XV}>=, >=f $ >=XV}>=f $ >#= x >/\=&H>r= >澎=0>澎=0>r= >=W >澎=0>=W >ӎ=r  >0\=+L>r=_ >/\=&H>/\=&H>r=_ >r= >r=_ >0\=+L>l= >l= >0\=+L>;=W<ڈ> =[>َ= >;=W<ڈ>;=W<ڈ>َ= >`=|D >;=W<ڈ>`=|D >l= >5=:̉>=u > =[> =[>=u >x=&L > =[>x=&L >َ= >y=@X>ax=xbr>A}=V >y=@X>A}=V >>=0:#>>=0:#>A}=V >=P >>=0:#>=P >ldž=M >>=0:#>ldž=M >5=:̉>5=:̉>ldž=M >=u >ax=xbr>y=@X>(m=Qk>ax=xbr>(m=Qk>%k=:]>%k=:]>(m=Qk>}=?i>}=?i>(m=Qk>E;Ln>E;Ln>(m=Qk>r׼E>r׼E>(m=Qk>(mQk>r׼E>(mQk>k:]>r >#\&H>Byu >Byu >#\&H>ھ0>XV}>2Ed > >XV}> >挽R~>挽R~> >; GZ >挽R~>; GZ >ھ0>ھ0>; GZ >ԏz >ھ0>ԏz >Byu >(m=R|> kۿ >+-xPo|>+-xPo|> kۿ >^ y x>+-xPo|>^ y x>Ta|>Ta|>^ y x>~, >Ta|>~, >* >Ta|>* >ba>}>ba>}>* >F 6T >ba>}>F 6T >XV}>XV}>F 6T >2Ed >k:]>(mQk>6pe)\>6pe)\>(mQk>*-xu5^>6pe)\>*-xu5^> 4tff> 4tff>*-xu5^>g4I# >g4I# >*-xu5^>Tg5>g4I# >Tg5>ȁ.9cE >ȁ.9cE >Tg5>aGrZ>ȁ.9cE >aGrZ>C >C >aGrZ>P؞>C >P؞>PH >挽n8>@Lq >ۋlC >挽n8>ۋlC >P؞>P؞>ۋlC >PH >@Lq >挽n8>Q[_ >Q[_ >挽n8>پxƈ>Q[_ >پxƈ>ُ3 >ُ3 >پxƈ>"\+L>ُ3 >"\+L>r_ >#\&H>r >"\+L>"\+L>r >r_ >̽Tx>̽ʁ>=Tx>=Tx>̽ʁ>=ʁ>=Tx>=ʁ>=Tx>=Tx>=ʁ>= ń>= ń>=ʁ>=;jM>= ń>=;jM>=속>=속>=;jM>0=) G>0=) G>=;jM>̽;jM>0=) G>̽;jM>̽속>̽속>̽;jM>̽ ń>̽ ń>̽;jM>̽ʁ>̽ ń>̽ʁ>̽Tx>-3 {>#\&H>mh ń>̽ ń>-3 {>mh ń>=Tx>-3 {>̽Tx>̽Tx>-3 {>̽ ń>=Tx>C-x=Po|>(m==R|>(m==R|>(m=R|>-3 {>-3 {>(m=R|>+-xPo|>-3 {>+-xPo|>Ta|>Ta|>ba>}>-3 {>-3 {>ba>}>XV}>-3 {>XV}>挽R~>-3 {>挽R~>ھ0>-3 {>ھ0>#\&H>(m==R|>-3 {>=Tx>澎=0> =R~>=Tx>=Tx> =R~>=XV}>=XV}>n=a>}>=Tx>=Tx>n=a>}>T=a|>=Tx>T=a|>C-x=Po|>mh ń> |>̽ ń>̽ ń> |>̽속>*-xu5^> |>Tg5>Tg5> |>aGrZ>mh ń>"\+L> |> |>"\+L>پxƈ> |>پxƈ>挽n8> |>挽n8>P؞> |>P؞>aGrZ>>=0:#>5=:̉>0=) G>0=) G>5=:̉> =[>0=) G>y=@X>>=0:#> =[>;=W<ڈ>0=) G>0=) G>;=W<ڈ>0\=+L>= ń>0\=+L>yh= ń>= ń>yh= ń>=Tx>=Tx>yh= ń>/\=&H>=Tx>/\=&H>澎=0>= ń>=Tx>= ń>=Tx>=Tx>= ń>>ݽQ`ٽ?5=\Q޼Q޼ٽ?5=\Ü?5ڼQ޼Ü?5ڼ?5o;Q޼?5o;Qo;Ü?5<ٽ?5ݽQiop=Qo;?5o;Ü?5<Qo;Ü?5ݽQiop=ٽ?5ݽQiop=?5j=Qzǩ=Qzǩ=?5j=?5B[=Qzǩ=?5B[="퍽QV="퍽QV=?5B[=H.?5="퍽QV=H.?5=W11Q=W11Q=H.?5=qQ!=qQ!=H.?5=hl?5=qQ!=hl?5=l=Qiop=>=Qiop=ޞ=?5ݽQ`QSٽ?5=\QS?5ݞ?5ݞQS?5*ƽ?5*ƽQS"퍽Qɽ?5*ƽ"퍽QɽH.?5H.?5"퍽QɽW11QH.?5W11Qhl?5hl?5W11QqQhl?5qQl=Q`ޞ=?5=\>=Q`.=Q޼ޞ=?5=\.=Q޼ќ=?5ڼќ=?5ڼ.=Q޼=?5o;=?5o;.=Q޼)=Qo;=?5o;)=Qo;ќ=?5<ќ=?5<)=Qo;.=Q$㽹< >㽪ټj 佃 >ټKq= ޼뽃 o;뽃 o;Kq= ޼q= o;뽃 o;q= o;j 佃 ڬh=V$U=@e|bȾ=V$=->h^=ɺ^=ɺ=->h~=hԹQ8=.q̾]94=B9qj˾U=@e|bȾU=@e|bȾ]94=B9qj˾k~=0|ƾU=@e|bȾk~=0|ƾ=->h2gо*h->hU@e|bȾV$Qc(:xhԹXɺXɺxhԹV$V$xhԹ->hWLtwn֪Qc(:Qc(:wn֪T9UQc(:T9UxhԹ]~箾ڝڣU&a-U&a-ڣpΨOpΨOڣWLtWLtڣwn֪]~箾ڝU&a-O94dx@O94dx@U&a-Q8w0<ַ[Ǯ3.A`׽3u׽3uǮ3.A`ַ[׽3uַ[ʾA큖ʾA큖ַ[Q8wQ8wַ[O94dx@KEG¾}8˳PžH㷽ܵľTtX[(3Ⱦ<[_9˾;Q1޾d[Z;3ݾ>;Q1޾77Oվڅ־77Oվڅ־>;Q1޾վ&׾77Oվڅ־վ&׾vuE*ܾҾyh= ń>0\=+L>/\=&H>mh ń>#\&H>"\+L>~, >* >F 6T >E;Ln>=}=?i>r׼E>]'8WU>E;Ln>k:]>> ^>r׼E>QV҇޾QV҇޾Qx"޾yܾQV޾QV޾QV޾QV޾Qx"޾QV҇޾QV҇޾Qx"޾QV҇޾QV҇޾Qx"޾QV҇޾QV҇޾Qx"޾yܾQV޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾QV҇޾QV޾Qx"޾Gz 1Vq= -"X BxhԹ\;#-r->h_~0|ƾ->h\;#-r_~0|ƾ\;#-rQ94B9qj˾O94dx@ַ[\;#-rQ94B9qj˾\;#-rhRjvOξ0<ַ[_94=dx@\;#-r\;#-r_94=dx@m~=箾ڝ\;#-rm~=箾ڝ=ڣk~=0|ƾ]94=B9qj˾\;#-rk~=0|ƾ\;#-r=->h~=hԹ=->h\;#-r=ڣ=n֪\;#-r\;#-r]94=B9qj˾*;Q1޾8˳PžHfU 3;뾹վ&׾>;Q1޾fU 3;vuE*ܾҾվ&׾fU 3;S,T5 ;vuE*ܾҾfU 3;Օ[_9˾S,T5 ;fU 3;FD(3riRʾՕ[_9˾fU 3;<[_9˾FD(3riRʾfU 3;g,=T5 ;<[_9˾fU 3;H=;Q1޾=վ&׾fU 3;B˳=PžHH=;Q1޾fU 3;K=EG¾}B˳=PžHfU 3;K=EG¾}fU 3;=;.~== \2Q˄_ ~̽= \2=Q˄_2Q˄_.~== \.~== \ ~̽= \p -.~== \p -p= -=ʁ>̽ʁ>̽;jM>̽;jM>=;jM>=ʁ> |>0=) G>̽속>= ń>0=) G>0\=+L>= ń>0=) G>= ń>= ń>=속>0=) G>U>|>?>>G=|>?>>G=߉>G=|>\;#-rڣ]~箾ڝ\;#-r]~箾ڝO94dx@=վ&׾u=E*ܾҾfU 3;뾊u=E*ܾҾg,=T5 ;fU 3;pqQ!<ڼ.=Q޼>=Q`QSyQ"퍽QɽZQt="퍽QV=VQ=N=QM>-=Q# >pqh3Q>pqW11Q=Q# >W11Q=qQ!=Q# >QS>ݽQ`yQ>ݽQ`|! Ql>yQ>Q%;)=Qo;>Q!<ڼ)=Qo;.=Q޼>Q!<ڼ">Q`= >Q=.=Q$< >Q=>=Qiop=.=Q$<Qzǩ=OQy=>ݽQiop=OQy=y Q=>ݽQiop=Q`=Q$ݽQiop=y Q=OQy=Qzǩ=ZQt=Qzǩ="퍽QV=ZQt=Q޼Qo; QQo;ۉQ%; Q=Qzǩ=>=Qiop=]=Qy=>=Qiop= >Q=]=Qy=7 =Q] >N=QM>u11=Q=N=QM>pq"퍽QV=) Q] >VQ="퍽QV=">Q`=.=Q$<>Q%;.=Q$<)=Qo;>Q%;Qo;Q$<ۉQ%;Q$<Q`=ۉQ%;]=Qy=h=Qt==Qzǩ=h=Qt=0=QV==Qzǩ=u11=Q=0=QV=7 =Q] >0=QV=h=Qt=7 =Q] >>Q!<ڼ>=Q`! >Ql>>=Q`y>Q! >Ql>|! Ql>>ݽQ` Q>ݽQ`Q޼ Q0=Qɽy>Q=QS0=Qɽu11=Q录y>Qu11=Q彼2=Q˄_y>QQ# >qQ!=h3Q>qQ!=pqW11Q彮2Q˄_qQ2=Q˄_u11=Qpq:ѽq= ^q= ퟽q= 뽪q= !<ڼ=q= 9(`=q= kO"=v $ =" 4ȟ=1% E"=v $ȟ=1% E>q= "X Bpq= -~$ Kȗpq= -Q a~$ Kȗ" 4Vq= % Q" 4% Qȟ1% EQ= 8gQ= t0=q= 8Q= t0= )=q= 8* q= ] >Y> 8>uq= X=Y> 8>q= ==uq= X=Vq= =cq= j=枼q= F=E=q= E>6 =q= ] >L=q= =E=q= E>L=q= =q= ==Y> 8>=q= o;`=q= <>q= %;`=q= q= `=>q= %;l=q= >q= ȟ=1% EKq= ޼:ѽq= ^ q= :ѽq= ^}! q= l> q= Kq= ޼ q= q= o; q= ܉q= %;q= o;܉q= %;q= `=Kq= l<܉q= %;Kq= lq= =q= ! >q= l>>q= >q= %;>q= !<ڼ`=q= kO>q= %;`=q= kO=q= o;`=q= <=q= R8=!>q= `==q= R8= >q= =!>q= `== )"=v $=q= 8"=v $>q= =q= 8Vq= cq= 4ƽuq= ߽Vq= uq= ߽% QQ t0؎q= 8"v $؎q= 8q= "v $uq= ߽q= 뽔% Qq= 뽠=% Q% Q=q= =q= 9(! >q= l>=q= 9(>q= !<ڼ! >q= l>\=q= y= >q= ==q= = >q= ==q= R8==q= =l=q= ȟ=1% E=% Ql=q= =% QL=q= Խl=q= $=\=q= y==q= =L=q= =6 =q= ] >W=q= =L=q= =W=q= =l=q= $=* q= ] >uq= X=cq= j=* q= ] >cq= j=Vq= =q= ퟽Vq= q= q= ퟽q= }! q= l>D=q= r=\=q= y=l=q= $=D=q= r=l=q= $=W=q= =>Q!<ڼ>q= !<ڼ>q= %;>Q!<ڼ>q= %;>Q%;! >q= l>! >Ql>>q= ! >Ql>y>Q>q= p= -p=q= -.~== \p=q= -=q= 8.~== \>q= y>Q=q= 8y>Q2=Q˄_=q= 8>Q!<ڼ! >Ql>! >q= l>>Q!<ڼ! >q= l>>q= !<ڼ؎q= 82Q˄_yQ؎q= 8yQq= yQ|! Ql>q= |! Ql>}! q= l>q= QۉQ%;܉q= %; Q܉q= %; q= Q q= }! q= l> Q}! q= l>|! Ql>pq= -p - ~̽= \pq= - ~̽= \؎q= 8nW=ٱѾ8־&=Aξ׾<=z ё9*: -dWٱѾ8־뗽@Ծ' ԾeھަϾ9*: -뗽@Ծ' Ծ<=z ё=@Ծ' ԾnW=ٱѾ8־lJA[޾̾9*: -eھަϾN cɾ9*: -lJA[޾̾<=z ёo=ھަϾ=@Ծ' ԾlJ=A[޾̾o=ھަϾ<=z ё=h -h - R'3M(侐1Ǿh -9Ǿ R'3M(侐1Ǿ9Ǿh -N cɾh -9*: -N cɾ<9ǾN =cɾ=h -N =cɾhJ= -=h -hJ= -N =cɾlJ=A[޾̾hJ= -lJ=A[޾̾<=z ёp=q= -K=$ ͗Q= 8g=q= 8p=q= -Q= 8gi (>ټ(o;u(U(o;u(xټæ(C (`ƽ(uY (`eν(Zƽ(uY2e|(=æ(?t= (P=æ(?t=ƽ(ڏ= (P=2e|(=V(=CQ(w=2e|(=CQ(w=æ(?t=CQ(FڽV(۽2e|(½CQ(Fڽ2e|(½æ(CL(V(۽<(@MV(۽CQ(Fڽ<(@M;(N]=<(=L(%=<(=V(=L(%=A=(=;(N]=<(&p=;(N]=L(%=<(&p=;((,񽽉<(>L(潫;((,L(<(@M=(o=A=(=VH=(5=A=(=<(&p=VH=(5=A=(j彿=(Ih˽VH=(нA=(jVH=(н<(>㽽(=(V==(o=V=(==(o=VH=(5=V=(=V=(`=(Ih˽(=(q V=(`(=(q Nj=( T=(۝5='^=(Ut=Nj=(r='^=(Ut=(=(V=Nj=(r=Nj=( T(=(q '^=(dNj=( T'^=(d=(1%=(1%'^=(d =(=(1% =( =(PSK =(<< =(j==(۝5= =(j='^=(Ut==(۝5= =(PSK =(伖=(o; =(PSK=(o;&=(o;&=(o;=(o; =(<<=(o; =(j= =(<<=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}     $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u           , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | }      $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~       % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v  ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw         . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~        & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w          . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o  ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx       ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x          ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x DATA| q=DATAhq= .corner_vert q=ؑ= .corner_edge Hq==) {=X=DATA5 q=Lz   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y DATA5 Hq=Lz   `m  bao n  cp  edr q" ! fs  hgu# t  % $ iv kjx& w  ( ' ly  nm{) z+ * o|  qp~, }! . - r  t"s/ $#1 0 u  w%v2 '&4 3 x  z(y5 *)7 6 {  }+|8 -,: 9 ~ .; "!0/= <  # 1> %$32@ ?  & 4A ('65C B  ) 7D +*98F E  , :G .-<;I H  / =J 10?>L K  2 @M 43BAO N  5 CP 76EDR Q  8 FS :9HGU  T  ; IV =<KJX  W  > LY @?NM[ Z  A O\ CBQP^ ]  D R_ FETSa  `  G Ub IHWVd  c  J Xe LKZYg  f    M [h ON] \j  i    P ^k RQ`_m  l  S an UTcbp  o  V dq XWfes ! r # Y" gt [ Zihv $ u  & \% jw ^ ]lky ' x ) _( mz a`on| * { , b+ p} dcr q - ~ "!/ e. s gfu#t 0 %$2 h1 v jix&w 3 ('5 k4 y ml{)z 6 +*8 n7 | po~,} 9 ! .-; q:  s"r/ < $#10> t=  v%u2 ? '&43A w@  y(x5 B *)76D zC  |+{8 E -,:9G }F  .~; H 0/=<J I  1> K 32@?M L  4A N 65CBP O  7D Q 98FES R  :G T <;IHV U  =J W ?>LKY X  @M Z BAON\ [  CP ] EDR Q_ ^   FS ` HGU Tb a   IV c KJX We d   LY f NM[ Zh g  O\ i QP^ ]k j  R_ l TSa `n m   Ub o WVd cq p   Xe r ZYg ft s    [h u ] \j iw v    ^k x `_m lz y   an { cbp o} |   dq ~ fes! r  # " gt ihv$ u & % jw lky' x ) ( mz on|* { , + p} r q- ~ "!/ . s u#t0  %$2 1 v x&w3  ('5 4 y {)z6  +*8 7 | ~,}9  .-; :  /<  10> =  2?  43A @  5B  76D C  8E  :9G F  ;H  =<J I  >K  @?M L  AN  CBP O  DQ  FES  R   GT  IHV  U   JW  LKY  X   MZ  ON\ [  P]  RQ_ ^   S`  UTb  a   Vc  XWe  d   Yf  [ Zh  g     \i  ^ ]k  j    _l   a`n  m   bo   dcq  p ! er   gft " s $ # hu   jiw % v  ' & kx   mlz ( y * ) n{   po} + |  - , q~   s!r .  #"0 / t   v$u 1 &%3 2 w   y'x 4 )(6 5 z   |*{ 7 ,+9 8 }   -~ : ! /.< ;   " 0 = $#21? >   % 3 @ '&54B A   ( 6 C *)87E D   + 9 F -,;:H G   . < I 0/>=K J   1 ? L 32A@N M   4 B O 65DCQ P   7 E R 98GFT  S   : H U <;JIW  V   = K X ?>MLZ  Y   @ N [ BAPO] \   C Q ^ EDSR`  _   F T a HGVUc  b   I W d KJYXf  e    L Z g NM\ [i  h    O ] j QP_ ^l  k   R ` m TSbao  n   U c p WVedr q  " X! f s Z Yhgu # t   % [$ i v ] \kjx & w   ( ^' l y `_nm{ ) z  + a* o | cbqp~ , } ! . d- r  fet"s / $ #1 g0 u ihw%v 2 ' &4 j3 x lkz(y 5 * )7 m6 { on}+| 8 - ,: p9 ~ r!q. ; #"0 /= s<  u$t1 > &%3 2@ v?  x'w4 A )(6 5C yB  {*z7 D ,+9 8F |E  ~-}: G /.< ;I H  0= J 21? >L K  3@ M 54B AO N  6C P 87E DR Q  9F S ;:H GU T  <I V >=K JX W  ?L Y A@N M[ Z  BO \ DCQ P^ ]  ER _ GFT Sa `   HU b JIW Vd c   KX e MLZ Yg f  N[ h PO] \j i  Q^ k SR` _m l   Ta n VUc bp o   Wd q YXf es r   Zg t \ [i hv u    ]j w _ ^l ky x DATA5 {=sz Ȕq<I q I}STPm`ϵYueu H [m`}y7oeȟʗ:շVBٷVVBܷ_H4; N{5 ~ M# _ Ӿ K%32ԟ292t b 5)o))''qC'+PN%,J%|%-7w7@7V,,\,CiCC'נH9'~n֪kkok e ] HAHH"k"3"@YGjG~%Gԓԓ6 4Į>GTs##N#%""ki" l 4 "]mm4mCL1¼1ј1'*[* 8*2/22=HmwQګ6{z rXԴ""۩"@r 6 vğ fc1"$S::o):ukUYYΧYQFȪ@Q@@@ )))y» eJ)z( nUUU^Y F | { e &'\/`1 ! V֟;٢6`  ` / ! VHo«_ X F<rcv T YHr }% N b . Q ŧZ]8  ; ?:1#ȭyLp7 G K c&5/CX}Tm\A ,  1 e 3hS,={Oj( ]N g L 3 6$24r3M->ק I ̗ WJ Y -E"= zؑqڎ Н  tٰGz7< _z ,+ilR`RRR2 Y kh M & f b 4 ٩ qKVY 3 7 1 ))1)&{ o( sJN f k&/L&&i ? 1U-Y K7 mX/ U !Wǟ Ӡ V}*KMe1`fNn^`Ѩ8 | a 3 E ! : qɵ^] )41 p 5  4 . KFX e =` `Aq3o ֠ m _ݡH3] "R#N [:uL{jLOOIVvvvvvvvv v v v vVDFǗР+J e + W ~ l C!fx$"R $ d>ϐ'k9 xO  Р 4 ̼ 3 _bjǰb.a0 ? I:?yy\ f Q #gH%!BgC3P  ӹ xJ8ra?_ u v3Ch(PC ~!-xڤ{R(K + k !G|`GG}666~e|EѠD2 D DDI((s(**E*~X::v:m%^8w@z`z٦zbh`ާe0^`'r***>`>ª>===dXX X-}--Fi͇....-+Y t Z c % ]|U^hXbΩ@o@=`@_!>"u`"")~)@)J} n555T'i'N'D{H` & } HKP Ҁ 0 ***hէѧ  |^l^_^%F%/%0q0^0U ڡ l eeeYY`nR;* ؟ L Ƀ///K%N%? %M'd n? ! DJ CBhpr C9 IP/'^5Y800-0߁ENNNm X &&& f.ڞ.. 777n 1 RRR7g77[$$Y$ԟR,|,u,V)v)4)Y(I II`IIItOO}6Ogb b!b9?B?0?tAˤ P>###SN==H=iP3PPPW|9gAB.ϡ ={۾h=s...~ *O**`, z ҡn L.)×"*y~A8s, ~7 ݚMt{ G eW)Ȅ))%  ş,q,",* **ޟe %)%%|Q%ث%%߾*{*,*Ǫ,,,ߞty°?wzz Y $$1$Ty:***} R (;ki)n~))'h''MNtB}Wj1Gp`f Yzw.` o~!m~,Z&̩_xt222L 00E~0گy U 0+++ *~fDma@ а Z {***D"Iik p z ءz#^ ##m#|##C}+! P A 2%d G n2|҃x%%%k{Pݞ t w zNVrD~Wn-L B  %%ҝ%)ɨ)o)V 4 ))t)w |`/'f %6%]%z*\**)l)4)cw  "v˄B %%S%6, +xO e ]Ӭ( C t 0000[02n0_  e)&&D&/999.>m>>@ȣ \s),/,u,+S++Cg4Ҥc&7A S͞ %%Ԑ%)#)Z),t,, $ l ? ' l p>>>99m9$3C3R3s333]J'i/ۣhWh_y˩qC*_ ^ @^`x?K_f_im:_9ڿ9yyW_ y o kk V Î %t i ~ H ʬz.  sMʫz=   > zϢ.Y>  Aumzr )jtsM֠sIlre 2+D',á˃I~ ā D[B[[[@[[@zCZVX֠JmibC$Q~ZJI{q?X %BVW  A R0єh-Dw3zAWʦ>ɕ`G^B*m#+,wՠK9 t {vjr>./FDATAhq= material_index ?=2.select_poly =ؒ=2sharp_face ==DATA ?L~DATA =DATA =DATA 8? !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z ME lo=HMEkphi_001.001@ = =~= = `q= q= z_;þ,H<>I=p>A=I|DATA@ =`r=DATA~=0position /?=2 .select_vert L?ؓ=DATA /?w]m=w-$b="U=w-ᾊd=jp=w-=TAw-=+w-U0=Ep1w-Z=Ep1w-Z=+w-U0=[Uټw-U=[Uټw-U=+w-U0=]w-ᾄ=[Uټw-U=]w-ᾄ=2w-ᾈF="U=w-ᾊd===w-x=jp=w-=jp=w-W{=w-]Ku=w-ᾑ|jp=w-Wu=w-ᾑ|p=w-ᾤڧp=w-ᾤڧu=w-ᾑ|TA=w-Ᾱǒp=w-ᾤڧTA=w-ᾹǒYp1=w-ᾈ$Yp1=w-ᾈ$TA=w-Ᾱǒ?=w-Yp1=w-ᾈ$?=w-Db_)۾/=:żA߾O>:żA߾O>Db_)۾/=DbA߾/==A߾ ==_)۾ ==A߾:X==A߾:X==_)۾ ==_)۾:X==A߾:X==_)۾:X=:żA߾O>:żA߾O>=_)۾:X=:ż_)۾O>|z=_)۾,Ԛ==_)۾ =|z=A߾,Ԛ=|z=A߾,Ԛ==_)۾ ==A߾ =|z=_)۾,Ԛ=|z=A߾,Ԛ==A߾ʉ=|z=_)۾,Ԛ==A߾ʉ==_)۾ʉ==_)۾ʉ==A߾ʉ==A߾8==A߾8==_)۾8==_)۾ʉ=I>A߾ܝI>_)۾ܝ=A߾8==A߾8=I>_)۾ܝ=_)۾8=okA߾ok_)۾;_)۾rI>_)۾ܝI>A߾ܝ=_)۾=_)۾I>A߾ܝ=A߾=_)۾=A߾=A߾Mg=_)۾=A߾Mg=_)۾Mg=_)۾Mg=A߾Mg=A߾W =_)۾Mg=A߾W =_)۾W =_)۾W =A߾W =A߾ᴽ=_)۾W =A߾ᴽ =_)۾ᴽ =_)۾ᴽ =A߾ᴽ=A߾`vϽ =_)۾ᴽ=A߾`vϽ=_)۾`vϽ=_)۾`vϽ=A߾`vϽY;|=A߾P6彫=_)۾`vϽY;|=A߾P6Y;|=_)۾P6Y;|=_)۾P6Y;|=A߾P62=_)۾2=_)۾Y;|=A߾P62=A߾2=_)۾2=A߾<_)۾<_)۾2=A߾)K<_)۾=uݾ={ݾ*=mݾaÓ=өqݾ:ݾaSb<ݾ½Sb<ݾ½:ݾa<ݾݾ<ުݾF=_)۾Vq,1=ݾ2;2>=_)۾Vq2>=ݾVq2>=ݾVq2>=_)۾Vq=ݾ=ݾ2>=_)۾Vq=_)۾=ݾ=_)۾A=_)۾\B=ݾA=_)۾\BA=ݾ\BA=ݾ\BA=_)۾\B=ݾ |=ݾ |A=_)۾\B=_)۾ |=ݾ |=_)۾ |n{=ݾWx=_)۾ |n{=_)۾Wxn{=ݾWxn{=ݾWxn{=_)۾Wx+Y@=_)۾zn{=ݾWx+Y@=_)۾z+Y@=ݾz+Y@=ݾz+Y@=_)۾z"<ݾй+Y@=_)۾z"<_)۾й"<ݾй"<ݾй"<_)۾йSb<ݾ½Sb<ݾ½"<_)۾йRb<_)۾½Sb<ݾ½Rb<_)۾½o_)۾ý\_)۾goݾýo_)۾ýo_)۾ýoݾýSb<ݾ½8_)۾y\ݾg\_)۾g\_)۾g\ݾgoݾý%Z_)۾̣8ݾy8_)۾y8_)۾y8ݾy\ݾgA_)۾Aݾ%Z_)۾̣%Z_)۾̣Aݾ%Zݾ̣%Z_)۾̣%Zݾ̣8ݾyȒ_)۾lʼ@ݾ9(@_)۾9(@_)۾9(@ݾ9(:ݾ3e@_)۾9(:ݾ3e:_)۾3e:_)۾3e:ݾ3eAݾ:_)۾3eAݾA_)۾A__)۾?=ݾVq=ݾ=ݾ8_)۾333="_)۾ vC=#_)۾$=ok_)۾o_)۾ý;_)۾rʽ_)۾3Y._)۾c:_)۾3e=_)۾8==_)۾P<=_)۾Ŭ=,1=_)۾2;=_)۾P<=_)۾8==_)۾Mg=_)۾W A=_)۾\B=_)۾=_)۾Mg=_)۾=_)۾MgA=_)۾\B=_)۾I>_)۾ܝ=_)۾2>=_)۾Vq=_)۾=_)۾2>=_)۾Vq2>=_)۾Vq,1=_)۾2;I>_)۾ܝ,1=_)۾2;=_)۾8=I>_)۾ܝQ}_)۾ýʽ_)۾3A_)۾ʽ_)۾3:_)۾3eA_)۾=_)۾ | =_)۾ᴽn{=_)۾Wx =_)۾ᴽ=_)۾`vϽn{=_)۾Wx,U_)۾ 8_)۾y _)۾8_)۾y\_)۾g _)۾K_)۾۽%Z_)۾̣,U_)۾ %Z_)۾̣8_)۾y,U_)۾ =_)۾ᴽ=_)۾ |=_)۾W =_)۾ |A=_)۾\B=_)۾W K_)۾۽Q}_)۾ý%Z_)۾̣Q}_)۾ýA_)۾%Z_)۾̣ _)۾\_)۾gok_)۾\_)۾go_)۾ýok_)۾=_)۾ =|z=_)۾,Ԛ=Fw=_)۾֋=|z=_)۾,Ԛ=2ŕ=_)۾#=Fw=_)۾֋=:ż_)۾O>\ŧ_)۾=Db_)۾/=\ŧ_)۾=_)۾U=Db_)۾/= <_)۾=)K<_)۾==_)۾:X=)K<_)۾=:ż_)۾O>=_)۾:X==_)۾ =;=_)۾==_)۾:X=;=_)۾= <_)۾==_)۾:X=2ŕ=_)۾#=|z=_)۾,Ԛ= =_)۾X=|z=_)۾,Ԛ==_)۾ʉ= =_)۾X=n{=_)۾Wx=_)۾`vϽ+Y@=_)۾z=_)۾`vϽY;|=_)۾P6+Y@=_)۾z _)۾Ș=i__)۾FZ=Db_)۾/=i__)۾FZ=-r_)۾=Db_)۾/=m_)۾aÓ=_)۾lC=i__)۾FZ=_)۾lC=-r_)۾=i__)۾FZ=֢_)۾!q=н_)۾}=m_)۾aÓ=н_)۾}=_)۾lC=m_)۾aÓ=_)۾333=#_)۾$=֢_)۾!q=#_)۾$=н_)۾}=֢_)۾!q==_)۾8==_)۾Ŭ==_)۾ʉ==_)۾Ŭ= =_)۾X==_)۾ʉ=_)۾&?ǽ_)۾nF_)۾?ǽ_)۾nȒ_)۾lʼF_)۾_)۾&d_)۾I=ݾVq課=ݾ2>=ݾVq=ݾ8課=ݾ=ݾP<,1=ݾ2;'=ݾ;<,1=ݾ2;課=ݾ'=ݾ;<2ŕ=ݾ#= =ݾX="U=ݾd= =ݾX=+=ݾe,="U=ݾd=Fw=ݾ֋=2ŕ=ݾ#=]m=ݾ$b=2ŕ=ݾ#="U=ݾd=]m=ݾ$b=]m=ݾ$b=7=ݾ=Fw=ݾ֋=7=ݾ=;=ݾ=Fw=ݾ֋=+Y@=ݾzTA=ݾǒn{=ݾWxTA=ݾǒu=ݾ|n{=ݾWx"<ݾй?=ݾ+Y@=ݾz?=ݾTA=ݾǒ+Y@=ݾzSb<ݾ½<ݾ"<ݾй<ݾ?=ݾ"<ݾйݾU=[ŧݾ=^ݾ=[ŧݾ=7񰺻ݾF=^ݾ=7ݾ5%Zݾ̣\mݾ+%Zݾ̣Aݾ\mݾ+mݾaÓ=i_ݾFZ=uݾ=i_ݾFZ=TAݾ=uݾ=qݾ[=ɠݾ"=֢ݾ!q=ɠݾ"=ݾ333=֢ݾ!q=@ݾ9(+ݾw:ݾ3e+ݾwUݾ<,T:ݾ3eȒݾlʼԔݾa@ݾ9(Ԕݾa+ݾw@ݾ9(?ǽݾn'ݾȒݾlʼ'ݾԔݾaȒݾlʼ'=ݾ;<ޔ=ݾl&<=ݾP<ޔ=ݾl&<=ݾŬ==ݾP<ޔ=ݾl&<+=ݾe,==ݾŬ=+=ݾe,= =ݾX==ݾŬ=n{=ݾWxu=ݾ|=ݾ |u=ݾ|{=ݾ]K=ݾ |:ݾ3eUݾ<,TAݾUݾ<,T\mݾ+Aݾ ݾȘ=ݾU=+ݾU0=ݾU=^ݾ=+ݾU0=֢ݾ!q={ݾ*=qݾ[={ݾ*=uݾ=qݾ[=i_ݾFZ= ݾȘ=TAݾ= ݾȘ=+ݾU0=TAݾ==ݾ8=ݾӠ=ݾ=ݾA=ݾ\BӠ=ݾӠ=ݾA=ݾ\B{=ݾ]KA=ݾ\B=ݾ |{=ݾ]K%Zݾ̣7ݾ58ݾy7ݾ5{ݾ8ݾy8ݾy{ݾ\ݾg{ݾөqݾ\ݾg\ݾgөqݾoݾýөqݾSb<ݾ½oݾýɠݾ"=ݾ<ݾ333=ݾA߾ܝ=A߾=3<=A߾ |z=A߾,Ԛ=jp=A߾===A߾x=VBA߾w9=#A߾$="A߾ vC=\UټA߾U=DbA߾/=Ep1A߾Z=:żA߾O>DbA߾/=\UټA߾U=NA߾7=:żA߾O>\UټA߾U=KONA߾7=dA߾<ʽA߾<"A߾ vC=ʽA߾A߾ܝ=A߾8=`B=A߾w9==A߾ʉ===A߾x==A߾ʉ=|z=A߾,Ԛ===A߾x==A߾<=A߾8=`B=A߾w9==A߾8==A߾ʉ=`B=A߾w9==A߾I>A߾ܝ=A߾"ȼI>A߾ܝ=A߾ =A߾"ȼ=A߾Mg=A߾`B=A߾)?)=A߾=A߾"ȼ`B=A߾)?)=A߾W =A߾Mg==A߾h=A߾Mg`B=A߾)?)==A߾hjp=A߾W =A߾ᴽ==A߾h =A߾ᴽ=A߾W ==A߾hp=A߾ڧ=A߾`vϽjp=A߾W=A߾`vϽ =A߾ᴽjp=A߾WYp1=A߾$Y;|=A߾P6p=A߾ڧY;|=A߾P6彫=A߾`vϽp=A߾ڧ;A߾rKOy"=t<>y=X="=X="=t<>y=t<= ><>y><><>y> >>y >>"=>y>>y>"=">y=t<=">y="=t<>y=">y=t<=>y >>y><>y><>y>>y>">y=">y=Y=>y"=<>y>Y=>y"=">y=t<>y=X="=t<=<><>t<="=<>"= > >"=><>Y=>y"=X="=Y=>y"=<><>y> >>>y >>y >>>y>&=_ؽ&=ş_ؽˊ=ˊ=齚&=ş_ؽˊ=ş齝9]=ş'9]='ˊ=şˊ=ş齝9]='ˊ==B==şB=\*=PŒ=\*=PŒ==şB=]*=şPŒ=\*=PŒ=]*=şPŒ=wA=O`=]*=şPŒ=xA=şO`=wA=O`=^2^ş2SşN^2SşNTNWΥY=VΥşY=\)=\)=VΥşY=[)ş=\)=[)ş=9]0/>9]0/>[)ş=9]ş0/>9]=ş'ݽş4 ݽ4 9]=ş'ݽ4 9]='=şB==B=9]0/>=şB=9]0/>9]ş0/>VΥşY=WΥY=TNTNSşNVΥşY=xA=şO`=&=ş_ؽwA=O`=&=ş_ؽ&=_ؽwA=O`=ݽş4 ^ş2^2ݽş4 ^2ݽ4 \*=PŒ=\)=9]0/>\*=PŒ=9]0/>=B=wA=O`=WΥY=\)=wA=O`=\)=\*=PŒ=&=_ؽˊ=^2&=_ؽ^2TNݽ4 ^2ˊ=ݽ4 ˊ=齝9]='WΥY=wA=O`=&=_ؽWΥY=&=_ؽTN]*=şPŒ==şB=9]ş0/>]*=şPŒ=9]ş0/>[)ş=xA=şO`=]*=şPŒ=[)ş=xA=şO`=[)ş=VΥşY=xA=şO`=VΥşY=&=ş_ؽVΥşY=SşN&=ş_ؽ&=ş_ؽSşN^ş2&=ş_ؽ^ş2ˊ=şˊ=ş^ş2ݽş4 ˊ=şݽş4 9]=ş'Õ=;"%=;|&>;D >;㈵;nM=;<>;Vh=ؼ7=ؼ7=S7A>h= 7x=ؼ7= 7x=$オ7ȵ=.G7~V71;i>7q<.G7~i>7q< 7~=.G7~ 7~=a77=.G7~a77=ؼ7=$Ǻȵ= Ǻx=SǺA>h=-؍Ǻ{=.GǺ~ͽǺO*Ǻ}=ؼǺ=VϽǺ-=ؼǺ=.GǺ~-؍Ǻ{=*Ǻ}=$Ǻȵ=ؼǺ=ؼǺ=$Ǻȵ=SǺA>h=ؼǺ=SǺA>h=aǺ7=.GǺ~ؼǺ=VǺ1;VǺ1;ؼǺ=i>ǺqǺq<ؼǺ=aǺ7=i>ǺqǺqǺq7q7qǺq< Ǻ~=i>7q< Ǻ~= 7~= 7~= Ǻ~=aǺ7= 7~=aǺ7=a77=a77=aǺ7=SǺA>h=a77=SǺA>h=S7A>h=S7A>h=SǺA>h= Ǻx=S7A>h= Ǻx= 7x= 7x= Ǻx=$Ǻȵ= 7x=$Ǻȵ=$オ7ȵ=$オ7ȵ=$Ǻȵ=*Ǻ}=$オ7ȵ=*Ǻ}=*ཱུ7}=*ཱུ7}=*Ǻ}=VϽǺ-=*ཱུ7}=VϽǺ-=VϽ7-=VϽ7-=VϽǺ-=ؼǺ=VϽ7-=ؼǺ=ؼ7=ۋޓL=߉ޓj=ۋ=L=ۋ=L=߉ޓj=߉=j=ۋ=L=߉=j=X닽=X닽=߉=j=yu=X닽=yu=PF=PF=yu=_gǺ=PF=_gǺ=kn?=kn?=_gǺ= =kn?= =F׌ˈv7=F׌ˈv7= =ۋ[L=F׌ˈv7=ۋ[L=UV=UV=ۋ[L=Ҍ@v7=UV=Ҍ@v7=-؍Ǻ{=-؍Ǻ{=Ҍ@v7=-؍7{=-؍Ǻ{=-؍7{=ؼǺ=ؼǺ=-؍7{=ؼ7=߉ޓj=ʽޓ4ʽ=4߉ޓj=ʽ=4߉=j=.GǺ~.G7~ͽǺOͽǺO.G7~ͽ7OͽǺOͽ7Otͽ| tͽ| ͽ7O|̽@Itͽ| |̽@I̽ˈI̽ˈI|̽@IQ̽[뭁̽ˈIQ̽[뭁̽%̽%Q̽[뭁.˽̽%.˽xD̽PZxD̽PZ.˽ʽǺg'xD̽PZʽǺg' ̽򘁼 ̽򘁼ʽǺg't(ʽ< ̽򘁼t(ʽA߾ܝI>ܝ|=A߾B|=A߾BI>ܝ\=5|=A߾B\=5i=A߾Y4i=A߾Y4\=5,N=`= ;$A=p<$A=p ;3=֨<$A=p<3=֨<=<3=Vq>X)?)R=j R=j >X)?)W5>t쾩0R=j W5>t쾩0a=フ;a=フ;W5>t쾩0>Xh;a=フ;>Xh;?f> ;Z0=TI>ܝ3=Vq3=VqI>ܝ>"YQ3=Vq>"YQ>X)?)rン=6=,ޓ=,ޓ=6=,Ο=Ƚr=ңZ=_ٽ꾿=_ٽ꾿=ңZ=Zᄑ꾕+=Zᄑ꾕+=ңZ=,Ο=,Ο=ңZ=,ޓ=Ƚr=_ٽ꾿=rdp=Ƚr=rdp=8ܽヨ^=8ܽヨ^=rdp=K"=8ܽヨ^=K"=J꽭t$=J꽭t$=K"=S/nܝ*GϽA߾΍=ճA߾ =rA߾=QA߾G=TA߾_^A߾)=A߾oTA߾_^_A߾k)TA߾_^A߾0Ӷl˽A߾ɥAI=%g4=Ӄ=# =,=j쾠OܝI>A߾ܝ>"YQ>"YQI>A߾ܝ>X)?)>X)?)I>A߾ܝ=A߾8=>X)?)=A߾8=W5>t쾩0W5>t쾩0=A߾8==꾸8=W5>t쾩0=꾸8=>Xh;>Xh;=꾸8=3=֨<>Xh;3=֨ ;nM=㈵;&>D&>;D&>;D >;㈵; >㈵;>V< >㈵; >;㈵; >;㈵;>;V<>V<>V<Õ="&>D&>D >㈵;>V<>;VV<>;VV;㈵; >;㈵;&>;D%=;|&>DÕ="Õ=;"Õ=;"&>;D&>DÕ="%=|%=;|%=;|Õ=;"Õ=".Aᾶ(3>e?vT5> ?⾬3>u/=w =#V/k=#V/k=w =DX =g)/73>,/2>d vT5>,/2> 3>d vT5>2`v.4>?=`v: >2.޾.4>2.޾.4>?=`v: >?=.޾: >cK q=c`v q=7K2>c`v q=2`v.4>7K2>7K2>2`v.4>8.޾2>8.޾2>2`v.4>2.޾.4>=Ke1==`ve1=H&=KI=H&=KI==`ve1=H&=WI=H&=WI==`ve1=w(W~=w(W~==`ve1=c`v q=w(W~=c`v q=w(K~=w(K~=c`v q=cK q==`ve1=! > >=R>`v"7C=R>.޾"7C=! >ڊ>==.޾ :=! >ڊ>=R=6Ǻ8=<=a9=<=a9=T=0:=! >ڊ>=! >ڊ>=T=0:==ڊ :=! >ڊ>==ڊ :==.޾ :==K3=! > >==Ke1==Ke1=! > >==`ve1=! >ڊ>=R>`v"7C=! > >=R>`v"7C=! >ڊ>=R>.޾"7C=>`v=R>`v"7C=>.޾=>.޾=R>`v"7C=R>.޾"7C=>`v=>.޾=?=.޾: >?=`v: >>`v=?=.޾: >>`v==`ve1=R>`v"7C=?=`v: >=`ve1=>`v=c`v q==`ve1=2`v.4>2`v.4>=`ve1=?=`v: >rン=6A߾=6==ʉ==A߾ʉ=B=ᄁ=ܵA߾ܝܣ=A߾8g==A߾8=ܵA߾ܝ|=A߾BTA߾_^TA߾_^< {=A߾Ҙ;=A߾ЖTA߾_^Ҙ;=A߾ЖȚ=A߾ TA߾_^Ț=A߾ OA߾ܝTA߾_^ܣ=A߾8g=TA߾_^=A߾ʉ==A߾ʉ=TA߾_^ܵ.Aᾶ(3>./(3>e?vT5>./(3>g)/73>d vT5>e?vT5>g)/73> 3> ?⾬3>e?vT5>e?vT5>d vT5> 3> ?⾬3>25۾#>2'=5۾Z%>2'=5۾Z%>.Aᾶ(3> ?⾬3>#V5۾k=DX[ܾ=w[ܾ=w[ܾ=u5۾=#V5۾k=25۾#>#V5۾k=u5۾=u5۾=2'=5۾Z%>25۾#>DX =w =w[ܾ=w[ܾ=DX[ܾ=DX =,/2>./(3>u/=u/=#V/k=,/2>,/2>g)/73>./(3>./(3>.Aᾶ(3>2'=5۾Z%>./(3>2'=5۾Z%>u/=2'=5۾Z%>w =u/=2'=5۾Z%>w[ܾ=w =2'=5۾Z%>u5۾=w[ܾ= ?⾬3>#V5۾k=25۾#> ?⾬3>DX[ܾ=#V5۾k= ?⾬3> 3>,/2>DX[ܾ=#V/k=DX =,/2>#V/k= ?⾬3>#V/k=DX[ܾ= ?⾬3>! >ڊ>=! > >=R=6Ǻ8=! > >=N=iJA7=R=6Ǻ8=! > >=ny=*o5=N=iJA7=! > >==K3=ny=*o5=!(%=LϽ=!(ޓ%=£/=3^=£ޓ/=£ޓ/=3^=3ޓ^=<=!< O=<!<<!< O= O{ =<{ =.=>=.==.=LϽ=>=.=LϽ=MϽ==MϽ==LϽ=!(%=MϽ==!(%==:=C=C==:=:=C===:=ZdZ6QV}. O=*սQ1 cnM׽}tj'Ͻ=9z|'Ͻ=9z|M׽}tj`ڽdd'Ͻ=9z|`ڽdd޽ZdT\'Ͻޓ9z|'սޓo'Ͻ=9z|'Ͻ=9z|'սޓo'սbo'Ͻ=9z|'սbo*սQ1 cn޽ZdT\KX⽲ZS'Ͻ=9z|'Ͻ=9z|KX⽲ZSNJI'Ͻ=9z|NJI O= O=NJI뽲i? O=뽲i?ZdZ6QV}._rm( O= O=_rm('Q1$ O='Q1$@b5Y#ޓ''ޓޓ' O O=Mux l&߻< 2Dػ@b5Y#@]5Y# O= O=@]5Y#] O=]Mux l&߻ )+Ȼ O +Ȼ +Ȼ O O= +Ȼ O=W &ʻ )+ȻW kʻ O OW kʻy ͖uͻ Oy ͖uͻ+ ^һ+ ^һ< p_Dػ O O< p_DػMu†l&߻ OMu†l&߻ޓ滈< 2Dػ+ q^һ O= O=+ q^һy HĔuͻ O=y HĔuͻW &ʻ:==:==:=:==:=!(%=£/=£ޓ/=[ޓ=£/=[ޓ=Z=Z=[ޓ=!(ޓ%=Z=!(ޓ%=LϽ={ <{ =<<=!<{ <<=!<<!<؈ lսa[<D͵><Dz<D7x< #2콨@<< 5꽨@<< 57x< #25woڇ<ۇ+oڇڇE轎<ۇ+ڇEڇٽ<ۇ+ڇٽ̃ڇe6Ƚ<ۇ+̃ڇe6Ƚ`νڇ%̴[Ƚxч|<ۇ+Խۇ)[Ƚ8|<ۇ+[Ƚxч|[Ƚ8|<8+<ۇ+&߽8ę_ν)%̴%߽)ęԽ8솭_ν)%̴&߽8ę;ۇ4h;)4hG=)4h;ۇ4hG=)4hS=ڇ4hS=ڇ4hG=)4h識)S=ڇ4h識)識ڇ識ڇ識)k )$E識ڇk )$Ek ڇ$Ek ڇ$Ek )$E=)>k ڇ$E=)>=ڇ>=ڇ>=)>o)=ڇ>o)oڇoڇo))E轖oڇ)EڇEڇE)E)ٽڇE)ٽڇٽڇٽ)ٽ˃)e6Ƚڇٽ˃)e6Ƚ̃ڇe6Ƚ̃ڇe6Ƚ˃)e6Ƚ_ν)%̴̃ڇe6Ƚ_ν)%̴`νڇ%̴`νڇ%̴_ν)%̴Խ8솭`νڇ%̴Խ8솭Խۇ)[Ƚ8|Խۇ)Խ8솭Խۇ)[Ƚ8|[Ƚxч|C<8C<)콦;)4hC<8콦;)4h;ۇ4h<ۇ+C<8콚;ۇ4h<ۇ+k ڇ$E=ڇ><ۇ+識ڇk ڇ$E<ۇ+S=ڇ4h識ڇ<ۇ+;ۇ4hS=ڇ4h5~<-!0ܽ<钾ֽ <=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}     $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u           , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | }      $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u ,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|} %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~       % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~   %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw         . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~        & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w          . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~   &'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx       ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x          ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x  ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwxDATA |=DATAh q= .corner_vert`%}== .corner_edge`}=ؔ=)`}==DATAG`%}=L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATAG`}=L?{ z A@< > | = B~ } DC ? A  @ E   GF B  D C H    JI E   G F K    ML H J I N   PO K M L Q   SR N  P O T   VU Q  S R W   YX T  V U Z   \[ W  Y X ]   _^ Z   \ [ "`!   ba ]  #_ ^ %c$   ed" ` ! &b a (f'#   hg% c $ )e d +i*&   kj( f ' ,h g .l-)   nm+ i * /k j 1o0,   qp. l - 2n m 4r3/   ts1 o 0 5q p 7u62   wv4 r 3 8t s :x95   zy7 u 6 ;w v ={<8   }|: x 9 >z y @~?;   = { < A} | CB>   @ ~ ? D  FEA   C B G IHD   F E J LK G   I H M  ON J   L K P  RQM   O N S  UTP   R Q V XWS   U T Y [ZV   X W \ ^]Y   [ Z _ a`\   ^ ] b dc!_   a ` e" gf$b #  d c !h % ji'e & " g f $k#( ml*h ) % j i 'n&+ po-k , ( m l *q). sr0n / + p o -t,1 vu3q 2 . s r 0w/4 yx6t 5 1 v u 3z27 |{9w 8 4 y x 6}5: ~<z ; 7 | { 98= ?} > :  ~ <;@ B A =  ?>C  E D@ BAF  H GC  ED I   K JF  HGL   N M I  KJO  Q PL  NMR  T SO QPU  W VR TSX  Z YU WV[  ] \X ZY ^  ` _[! ]\#a"  c b ^$ `_&d% ! f e#a"' cb)g( $ i h&d%* fe,j+ ' l k)g(- ih/m. * o n,j+0 lk2p1 - r q/m.3 on5s4 0 u t2p16 rq8v7 3 x w5s49 ut;y: 6 { z8v7< xw>|= 9 ~ };y:? {zA@ <  >|=B ~}DC ?  A@E  GF B  DC H   JI E  GF K   ML H  JIN PO K  MLQ  SR N  POT  VU Q  SRW  YX T  VUZ  \[ W  YX]  _^ Z  \["`!  ba ] # _^%c$ ed" `! & ba(f' # hg% c$ ) ed+i* & kj( f' , hg.l- ) nm+ i* / kj1o0 , qp. l- 2 nm4r3 / ts1 o0 5 qp7u6 2 wv4 r3 8 ts:x9 5 zy7 u6 ; wv={< 8 }|: x9 > zy@~? ; = {< A }|CB > @ ~? D FE A  C B G IH D   F E J  LK G   I H M ON J L K P RQ M  O N S UT P  R Q V XW S  U T Y [Z V  X W \ ^] Y  [ Z !_  a` \  "^ ] $b# dc! _ %a ` 'e&" gf$ b # (d c *h)% ji' e & +g f -k,( ml* h ) .j i 0n/+ po- k , 1m l 3q2. sr0 n / 4p o 6t51 vu3 q 2 7s r 9w84 yx6 t 5 :v u <z;7 |{9 w 8 =y x ?}>: ~< z ; @| { BA= ? } > C ~ ED@ B A F  HGC E D I  KJF H G L   NM I K J O   QPL  N M R   TSO  Q P U   WVR T S X  ZYU W V [  ]\X Z Y ^  `_[ ] \ a  cb ^ ` _ d!  fe#a "c b g$  ih&d %!f e #j"'  lk)g ($i h &m%*  on,j +'l k )p(-  rq/m .*o n ,s+0  ut2p 1-r q /v.3  xw5s 40u t 2y16  {z8v 73x w 5|49  ~};y :6{ z 87<  >| =9~ } ;:?  A @< >=B  D C? A@E  G FB DC H   J IE  GF K   M L H  JIN  P O K  MLQ  S RN POT  V UQ SRW  Y XT VUZ  \ [W YX]  _ ^Z  \["`!  b a]# _^%c$  e d"`!& ba(f' # h g%c$) ed+i* & k j(f', hg.l- ) n m+i*/ kj1o0 , q p.l-2 nm4r3 / t s1o05 qp7u6 2 w v4r38 ts:x9 5 z y7u6; wv={< 8 } |:x9> zy@~? ;  ={<A }|CB >  @~?D  FE A  CB G  IH D   FE J   LK G   IHM ON J  LKP RQ M  ONS  UT P  RQV  XW S  UTY  [Z V  XW\  ^] Y  [Z!_   a` \ " ^]$b#  dc! _ % a`'e& " gf$ b# ( dc*h) % ji' e& + gf-k, ( ml* h) . ji0n/ + po- k, 1 ml3q2 . sr0 n/ 4 po6t5 1 vu3 q2 7 sr9w8 4 yx6 t5 : vu<z; 7 |{9 w8 = yx?}> : ~< z; @ |{BA = ? }> C ~ED @  B A F HG C   E D I  KJ F   H G L  NM I K J O QP L N M R TS O  Q P U WV R  T S X ZY U  W V [ ]\ X  Z Y ^ `_ [  !] \ #a" cb ^  $` _ &d%! fe# a " 'c b )g($ ih& d % *f e ,j+' lk) g ( -i h /m.* on, j + 0l k 2p1- rq/ m . 3o n 5s40 ut2 p 1 6r q 8v73 xw5 s 4 9u t ;y:6 {z8 v 7 <x w >|=9 ~}; y : DATAG`}=sV]OV]NN O]VNV]N   V]NNON N   ] VNON  N  N Nq|V4   4 44IûoV V o I ˻ IʻoV404IʻoVVnHͻ44Vo˻I4VoͻI4!" " ܘ R g !"  # LV# VKVL" V L  #KV.c!;h  % !.c+!+T+,j,/,lc.!5}3n  ѽV!.cc.!c.!Vӽ!.cӽ V!.cc.!.c,H1ݨV!VV#P֢PPHLILL O ]V  L1L1i2i2V  V  V ޑ JV " #            fv)ë)8)zphhhjdcdld%FTA4)4O49(i(( ̐#VO#+#ڠnOVsV)B)M)C"od66n62},,S,^֋c֋ɟB9VWWW0Տvlc~~H~0Zt_+8 jՆZ`Ϊ_KՔ s`ss~ttt ,d D DDs,},_,TT`TҪTIT*TTN NNEE>E EO^_ʪXEE. E/`(```C ?==_=Qh~eÛsOפXT+5?% !| gzkR Q _s/ILbDeš*<><<yx˝/PwN[u%p%p%~0U0U[U 7 f la,r#t#.#u~>Km ֗ 9P6*?%)o1ooQzqgw} ٯ ̈́ G%%%B8 d G7v77ԯd***C.M@U `  k*tJԪtK;P2ѢEN3  w y7:M[\q)Z"''Ţ'RR@Rv"+"0"jj~jٚj8868e)))n) )),,C=,*X**''Ԁ'K q DF11؞10|0by0 'b':':*:a::F:̀:1VEV 5V[``˜``W`g|`000wAA7AEE'E4ff0fWwW WZ'}R: - :L:؟:L!<´<<'C:''JsYYYkQ QQ.99ӟ9-N-O-%%%d?[[#[IIiI1ͮ114 C b 9'\V{[1}>{:|::5KV4 44,77Ծ7RRu 2 cc:::+Գ++NAN NɡYzzHz|EEEv111&ݟ wQÌQQlbbcbE s o LRI4IITTYTUU؞Uǽpe3ee,,,EUEEIIHIZ]r;Q`ND/DUDз ͭ #3#5#UA'J''>ʤ>P>+Ń+h+|+V++sߣ22l222݆2=Wnn-nnάwwwL<<<N,,,P ؄z/ n +++ +4+q+&k&D&B"H""4q4F4 p ; 9BBzB]>>>ާWW,W)/ ~//000@Zˏ:W  ֈ###ůtF = ӘAiژIuoްA%);p=x׶;R 6 Wu%scYH  : 2W6 %I ^QŤC%, 2&T j 0   T d`bj7g j VL VLVLV g:)HvVѢY}9Ø>y5m*M i} * + ( p sx^z444-wԪhL  , K |RP \ } { ϯ w h /// ;R#.! y= ~Gm'N  _n`d _ m 3HcUDw!%ؽP`JB {i'Blz8| s 8  `Z  |љN ܻ>\>`>ܥ!)f~JuH6\(\Z\/@`5'J?''d߁{F ;>p-;? :!D%o?mV\VFVFVӯ&&&R 99 V W kD/U"rJnݗ`%h>SӦZRX4KKΰџTVǡ>Ot (ڡ((RۡRRd1guOey>><<<151:1s+Y+ʨ+w5P55k`...]|h>8q8F88=88-nqEh%5%%NNN'f'W'&)l))&JMY9 ; x VޡVkFz    1Z? 2 / 1]GhE6t ӣ'v W  ]][]u c$ ŧ>m>h>|/K^//2tPhGnGG/  q ТZvHsHHm|T[>B_B+Bf_HJ 70T00(`SmS~SFdFTF&SS&^͵2Pި>& PMUA&˘@c)6A&0)6xط2cPUFE,PFE9L_ɶ2޼H̞"J2J"޼2c*6غLFE*6FEڗ@cnM*=1*=*=eν1inM1*=Ͻ1*=*=qdz*=We*=*=ϓWdy<*=1<*=*=nMmM1mMvj1anM1nM1ՓWnMDATAh`q= material_index =X=2.select_poly so==2sharp_face zo=ؕ=DATA =LDATA so=DATA zo=DATA = !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|ME o=HMEmu_001.001p =CCC=`= = q=r= @OL<?*5c?"?A=I|DATAp =r=DATA`=0position ?X=2 .select_vert %==DATA<- ?wCL1ھZLQwEL+پZL=+پZL=QwEL=1ھZ>">͒>&%>v>&%>v>&%>v>">͒>">͒> >>">͒>">͒>">͒> >> >>>> >> >> >>>>>>>>x>>>>>>>>>x>>>x>>|>>>x>>>x>>>x>>|>>|>>o>>|>>|>>|>>o>>o>0>>0>>I1>V>I1>V>I1>V>0>>/>i>/>i>0>>0>>0>>/>i>O->]>O->]>/>i>/>i>/>i>O->]>+>A>+>A>O->]>O->]>O->]>+>A>)>pw>)>pw>+>A>+>A>+>A>)>pw>9'>>9'>>)>pw>)>pw>)>pw>9'>>G`%>>9'>>9'>>9'>>G`%>>G`%>>$#>^{>G`%>>G`%>>G`%>>$#>^{>$#>^{>+!>@H>$#>^{>$#>^{>$#>^{>+!>@H>+!>@H>>>+!>@H>+!>@H>+!>@H>>>>>*f>>>>>>>>*f>>*f>>E>4)>*f>>*f>>*f>>E>4)>E>4)>>>E>4)>E>4)>E>4)>>>>>I1>V>2>>2>>2>>I1>V>I1>V>ZV>)>>>>>>>ZV>)>ZV>)>2>>'2>}>'2>}>'2>}>2>>2>>>T>ZV>)>ZV>)>ZV>)>>T>>T>'2>}>yv2>>yv2>>yv2>>'2>}>'2>}>K>&>>T>>T>>T>K>&>K>&>yv2>>S1>#b>S1>#b>S1>#b>yv2>>yv2>>>o>K>&>K>&>K>&>>o>>o>S1>#b>0>>0>>0>>S1>#b>S1>#b>0>>f/>Xn>f/>Xn>f/>Xn>0>>0>>f/>Xn>->Z >->Z >->Z >f/>Xn>f/>Xn>->Z >+>>+>>+>>->Z >->Z >+>> )>ގ> )>ގ> )>ގ>+>>+>> )>ގ>l'>Ou>l'>Ou>l'>Ou> )>ގ> )>ގ>l'>Ou>&%>v>&%>v>&%>v>l'>Ou>l'>Ou>G`%>>>9'>>>9'>>>9'>>>G`%>>>G`%>>>$#>_{>>G`%>>>G`%>>>G`%>>>$#>_{>>$#>_{>>+!>@H>>$#>_{>>$#>_{>>$#>_{>>+!>@H>>+!>@H>>>=>+!>@H>>+!>@H>>+!>@H>>>=>>=>*f>=>>=>>=>>=>*f>=>*f>=>E>4)=>*f>=>*f>=>*f>=>E>4)=>E>4)=>><>E>4)=>E>4)=>E>4)=>><>><>I1>V<>2><>2><>2><>I1>V<>I1>V<>ZV>*<>><>><>><>ZV>*<>ZV>*<>2><>'2>};>'2>};>'2>};>2><>2><>>T;>ZV>*<>ZV>*<>ZV>*<>>T;>>T;>'2>};>yv2>:>yv2>:>yv2>:>'2>};>'2>};>K>&:>>T;>>T;>>T;>K>&:>K>&:>yv2>:>S1>$b:>S1>$b:>S1>$b:>yv2>:>yv2>:>>o:>K>&:>K>&:>K>&:>>o:>>o:>S1>$b:>0> 9>0> 9>0> 9>S1>$b:>S1>$b:>0> 9>f/>Xn9>f/>Xn9>f/>Xn9>0> 9>0> 9>f/>Xn9>->Z 9>->Z 9>->Z 9>f/>Xn9>f/>Xn9>->Z 9>+>8>+>8>+>8>->Z 9>->Z 9>+>8> )>ގ8> )>ގ8> )>ގ8>+>8>+>8> )>ގ8>l'>Ou8>l'>Ou8>l'>Ou8> )>ގ8> )>ގ8>l'>Ou8>&%>v8>&%>v8>&%>v8>l'>Ou8>l'>Ou8>">͒8>&%>v8>&%>v8>&%>v8>">͒8>">͒8> >8>">͒8>">͒8>">͒8> >8> >8>>9> >8> >8> >8>>9>>9>>>x9>>9>>9>>9>>>x9>>>x9>>|9>>>x9>>>x9>>>x9>>|9>>|9>>o:>>|9>>|9>>|9>>o:>>o:>0>=>0>=>I1>V<>I1>V<>I1>V<>0>=>/>h=>/>h=>0>=>0>=>0>=>/>h=>O->^=>O->^=>/>h=>/>h=>/>h=>O->^=>+>A>>+>A>>O->^=>O->^=>O->^=>+>A>>)>pw>>)>pw>>+>A>>+>A>>+>A>>)>pw>>9'>>>9'>>>)>pw>>)>pw>>)>pw>>9'>>>G`%>>9'>>jf&>>$#>^{>G`%>>jf&>>9'>>)>pw>jf&>>+!>@H>$#>^{>jf&>>)>pw>+>A>jf&>>>>+!>@H>jf&>>+>A>O->]>jf&>>*f>>>>jf&>>O->]>/>i>jf&>>E>4)>*f>>jf&>>/>i>0>>jf&>>>>E>4)>jf&>>0>>I1>V>jf&>>ZV>)>>>jf&>>I1>V>2>>jf&>>>T>ZV>)>jf&>>2>>'2>}>jf&>>K>&>>T>jf&>>'2>}>yv2>>jf&>>>o>K>&>jf&>>yv2>>S1>#b>jf&>>>|>>o>jf&>>S1>#b>0>>jf&>>>>x>>|>jf&>>0>>f/>Xn>jf&>>>>>>x>jf&>>f/>Xn>->Z >jf&>> >>>>jf&>>->Z >+>>jf&>>">͒> >>jf&>>+>> )>ގ>jf&>>&%>v>">͒>jf&>> )>ގ>l'>Ou>jf&>>l'>Ou>&%>v>jf&>>9'>>G`%>>jf&>>G`%>>$#>^{>jf&>>)>pw>9'>>jf&>>$#>^{>+!>@H>jf&>>+>A>)>pw>jf&>>+!>@H>>>jf&>>O->]>+>A>jf&>>>>*f>>jf&>>/>i>O->]>jf&>>*f>>E>4)>jf&>>0>>/>i>jf&>>E>4)>>>jf&>>I1>V>0>>jf&>>>>ZV>)>jf&>>2>>I1>V>jf&>>ZV>)>>T>jf&>>'2>}>2>>jf&>>>T>K>&>jf&>>yv2>>'2>}>jf&>>K>&>>o>jf&>>S1>#b>yv2>>jf&>>>o>>|>jf&>>0>>S1>#b>jf&>>>|>>>x>jf&>>f/>Xn>0>>jf&>>>>x>>>jf&>>->Z >f/>Xn>jf&>>>> >>jf&>>+>>->Z >jf&>> >>">͒>jf&>> )>ގ>+>>jf&>>">͒>&%>v>jf&>>l'>Ou> )>ގ>jf&>>&%>v>l'>Ou>jf&>>G`%>>>9'>>>jf&>;>jf&>;>jf&>;>G`%>>>$#>_{>>G`%>>>jf&>;>jf&>;>jf&>;>$#>_{>>9'>>>)>pw>>jf&>;>jf&>;>jf&>;>9'>>>+!>@H>>$#>_{>>jf&>;>jf&>;>jf&>;>+!>@H>>)>pw>>+>A>>jf&>;>jf&>;>jf&>;>)>pw>>>=>+!>@H>>jf&>;>jf&>;>jf&>;>>=>+>A>>O->^=>jf&>;>jf&>;>jf&>;>+>A>>*f>=>>=>jf&>;>jf&>;>jf&>;>*f>=>O->^=>/>h=>jf&>;>jf&>;>jf&>;>O->^=>E>4)=>*f>=>jf&>;>jf&>;>jf&>;>E>4)=>/>h=>0>=>jf&>;>jf&>;>jf&>;>/>h=>><>E>4)=>jf&>;>jf&>;>jf&>;>><>0>=>I1>V<>jf&>;>jf&>;>jf&>;>0>=>ZV>*<>><>jf&>;>jf&>;>jf&>;>ZV>*<>I1>V<>2><>jf&>;>jf&>;>jf&>;>I1>V<>>T;>ZV>*<>jf&>;>jf&>;>jf&>;>>T;>2><>'2>};>jf&>;>jf&>;>jf&>;>2><>K>&:>>T;>jf&>;>jf&>;>jf&>;>K>&:>'2>};>yv2>:>jf&>;>jf&>;>jf&>;>'2>};>>o:>K>&:>jf&>;>jf&>;>jf&>;>>o:>yv2>:>S1>$b:>jf&>;>jf&>;>jf&>;>yv2>:>>|9>>o:>jf&>;>jf&>;>jf&>;>>|9>S1>$b:>0> 9>jf&>;>jf&>;>jf&>;>S1>$b:>>>x9>>|9>jf&>;>jf&>;>jf&>;>>>x9>0> 9>f/>Xn9>jf&>;>jf&>;>jf&>;>0> 9>>9>>>x9>jf&>;>jf&>;>jf&>;>>9>f/>Xn9>->Z 9>jf&>;>jf&>;>jf&>;>f/>Xn9> >8>>9>jf&>;>jf&>;>jf&>;> >8>->Z 9>+>8>jf&>;>jf&>;>jf&>;>->Z 9>">͒8> >8>jf&>;>jf&>;>jf&>;>">͒8>+>8> )>ގ8>jf&>;>jf&>;>jf&>;>+>8>&%>v8>">͒8>jf&>;>jf&>;>jf&>;>&%>v8> )>ގ8>l'>Ou8>jf&>;>jf&>;>jf&>;> )>ގ8>l'>Ou8>&%>v8>jf&>;>jf&>;>jf&>;>l'>Ou8>9'>>>G`%>>>jf&>;>jf&>;>jf&>;>9'>>>G`%>>>$#>_{>>jf&>;>jf&>;>jf&>;>G`%>>>)>pw>>9'>>>jf&>;>jf&>;>jf&>;>)>pw>>$#>_{>>+!>@H>>jf&>;>jf&>;>jf&>;>$#>_{>>+>A>>)>pw>>jf&>;>jf&>;>jf&>;>+>A>>+!>@H>>>=>jf&>;>jf&>;>jf&>;>+!>@H>>O->^=>+>A>>jf&>;>jf&>;>jf&>;>O->^=>>=>*f>=>jf&>;>jf&>;>jf&>;>>=>/>h=>O->^=>jf&>;>jf&>;>jf&>;>/>h=>*f>=>E>4)=>jf&>;>jf&>;>jf&>;>*f>=>0>=>/>h=>jf&>;>jf&>;>jf&>;>0>=>E>4)=>><>jf&>;>jf&>;>jf&>;>E>4)=>I1>V<>0>=>jf&>;>jf&>;>jf&>;>I1>V<>><>ZV>*<>jf&>;>jf&>;>jf&>;>><>2><>I1>V<>jf&>;>jf&>;>jf&>;>2><>ZV>*<>>T;>jf&>;>jf&>;>jf&>;>ZV>*<>'2>};>2><>jf&>;>jf&>;>jf&>;>'2>};>>T;>K>&:>jf&>;>jf&>;>jf&>;>>T;>yv2>:>'2>};>jf&>;>jf&>;>jf&>;>yv2>:>K>&:>>o:>jf&>;>jf&>;>jf&>;>K>&:>S1>$b:>yv2>:>jf&>;>jf&>;>jf&>;>S1>$b:>>o:>>|9>jf&>;>jf&>;>jf&>;>>o:>0> 9>S1>$b:>jf&>;>jf&>;>jf&>;>0> 9>>|9>>>x9>jf&>;>jf&>;>jf&>;>>|9>f/>Xn9>0> 9>jf&>;>jf&>;>jf&>;>f/>Xn9>>>x9>>9>jf&>;>jf&>;>jf&>;>>>x9>->Z 9>f/>Xn9>jf&>;>jf&>;>jf&>;>->Z 9>>9> >8>jf&>;>jf&>;>jf&>;>>9>+>8>->Z 9>jf&>;>jf&>;>jf&>;>+>8> >8>">͒8>jf&>;>jf&>;>jf&>;> >8> )>ގ8>+>8>jf&>;>jf&>;>jf&>;> )>ގ8>">͒8>&%>v8>jf&>;>jf&>;>jf&>;>">͒8>l'>Ou8> )>ގ8>jf&>;>jf&>;>jf&>;>l'>Ou8>&%>v8>l'>Ou8>jf&>;>jf&>;>jf&>;>&%>v8>'v8>]%Ou8>c&;>c&;>c&;>'v8>]%Ou8>%"#ގ8>c&;>c&;>c&;>]%Ou8>m)͒8>'v8>c&;>c&;>c&;>m)͒8>%"#ގ8>!8>c&;>c&;>c&;>%"#ގ8>r+8>m)͒8>c&;>c&;>c&;>r+8>!8>Z 9>c&;>c&;>c&;>!8>-9>r+8>c&;>c&;>c&;>-9>Z 9>cXn9>c&;>c&;>c&;>Z 9>S/x9>-9>c&;>c&;>c&;>S/x9>cXn9> 9>c&;>c&;>c&;>cXn9>\0|9>S/x9>c&;>c&;>c&;>\0|9> 9>$b:>c&;>c&;>c&;> 9>1o:>\0|9>c&;>c&;>c&;>1o:>$b:>TV:>c&;>c&;>c&;>$b:>M~2&:>1o:>c&;>c&;>c&;>M~2&:>TV:> };>c&;>c&;>c&;>TV:>|2T;>M~2&:>c&;>c&;>c&;>|2T;> };>8I<>c&;>c&;>c&;> };>s2*<>|2T;>c&;>c&;>c&;>s2*<>8I<>V<>c&;>c&;>c&;>8I<>1<>s2*<>c&;>c&;>c&;>1<>V<>)=>c&;>c&;>c&;>V<>04)=>1<>c&;>c&;>c&;>04)=>)=>1<h=>c&;>c&;>c&;>)=>d/=>04)=>c&;>c&;>c&;>d/=>1<h=>^=>c&;>c&;>c&;>1<h=>v-=>d/=>c&;>c&;>c&;>v-=>^=> A>>c&;>c&;>c&;>^=>+@H>>v-=>c&;>c&;>c&;>+@H>> A>>"pw>>c&;>c&;>c&;> A>>`)_{>>+@H>>c&;>c&;>c&;>`)_{>>"pw>>#%>>c&;>c&;>c&;>"pw>>i'>>`)_{>>c&;>c&;>c&;>i'>>#%>>i'>>c&;>c&;>c&;>#%>>]%Ou8>'v8>c&;>c&;>c&;>]%Ou8>%"#ގ8>]%Ou8>c&;>c&;>c&;>%"#ގ8>'v8>m)͒8>c&;>c&;>c&;>'v8>!8>%"#ގ8>c&;>c&;>c&;>!8>m)͒8>r+8>c&;>c&;>c&;>m)͒8>Z 9>!8>c&;>c&;>c&;>Z 9>r+8>-9>c&;>c&;>c&;>r+8>cXn9>Z 9>c&;>c&;>c&;>cXn9>-9>S/x9>c&;>c&;>c&;>-9> 9>cXn9>c&;>c&;>c&;> 9>S/x9>\0|9>c&;>c&;>c&;>S/x9>$b:> 9>c&;>c&;>c&;>$b:>\0|9>1o:>c&;>c&;>c&;>\0|9>TV:>$b:>c&;>c&;>c&;>TV:>1o:>M~2&:>c&;>c&;>c&;>1o:> };>TV:>c&;>c&;>c&;> };>M~2&:>|2T;>c&;>c&;>c&;>M~2&:>8I<> };>c&;>c&;>c&;>8I<>|2T;>s2*<>c&;>c&;>c&;>|2T;>V<>8I<>c&;>c&;>c&;>V<>s2*<>1<>c&;>c&;>c&;>s2*<>)=>V<>c&;>c&;>c&;>)=>1<>04)=>c&;>c&;>c&;>1<>1<h=>)=>c&;>c&;>c&;>1<h=>04)=>d/=>c&;>c&;>c&;>04)=>^=>1<h=>c&;>c&;>c&;>^=>d/=>v-=>c&;>c&;>c&;>d/=> A>>^=>c&;>c&;>c&;> A>>v-=>+@H>>c&;>c&;>c&;>v-=>"pw>> A>>c&;>c&;>c&;>"pw>>+@H>>`)_{>>c&;>c&;>c&;>+@H>>#%>>"pw>>c&;>c&;>c&;>#%>>`)_{>>i'>>c&;>c&;>c&;>`)_{>>i'>>#%>>c&;>c&;>c&;>i'>>'v>]%Ou>c&>]%Ou>%"#ގ>c&>m)͒>'v>c&>%"#ގ>!>c&>r+>m)͒>c&>!>Z >c&>->r+>c&>Z >cXn>c&>S/x>->c&>cXn>>c&>\0|>S/x>c&>>#b>c&>1o>\0|>c&>#b>TV>c&>M~2&>1o>c&>TV> }>c&>|2T>M~2&>c&> }>8I>c&>s2)>|2T>c&>8I>V>c&>1>s2)>c&>V>)>c&>04)>1>c&>)>1<i>c&>d/>04)>c&>1<i>]>c&>v->d/>c&>]> A>c&>+@H>v->c&> A>"pw>c&>`)^{>+@H>c&>"pw>#%>c&>i'>`)^{>c&>#%>i'>c&>]%Ou>'v>c&>%"#ގ>]%Ou>c&>'v>m)͒>c&>!>%"#ގ>c&>m)͒>r+>c&>Z >!>c&>r+>->c&>cXn>Z >c&>->S/x>c&>>cXn>c&>S/x>\0|>c&>#b>>c&>\0|>1o>c&>TV>#b>c&>1o>M~2&>c&> }>TV>c&>M~2&>|2T>c&>8I> }>c&>|2T>s2)>c&>V>8I>c&>s2)>1>c&>)>V>c&>1>04)>c&>1<i>)>c&>04)>d/>c&>]>1<i>c&>d/>v->c&> A>]>c&>v->+@H>c&>"pw> A>c&>+@H>`)^{>c&>#%>"pw>c&>`)^{>i'>c&>i'>#%>c&>#%>>#%>>"pw>>"pw>>"pw>>#%>>"pw>>"pw>> A>> A>> A>>"pw>> A>> A>>^=>^=>^=> A>>^=>^=>1<h=>1<h=>1<h=>^=>1<h=>1<h=>)=>)=>)=>1<h=>)=>)=>V<>V<>V<>)=>1o:>\0|9>\0|9>\0|9>1o:>1o:>\0|9>S/x9>S/x9>S/x9>\0|9>\0|9>S/x9>-9>-9>-9>S/x9>S/x9>-9>r+8>r+8>r+8>-9>-9>r+8>m)͒8>m)͒8>m)͒8>r+8>r+8>m)͒8>'v8>'v8>'v8>m)͒8>m)͒8>]%Ou8>'v8>'v8>'v8>]%Ou8>]%Ou8>%"#ގ8>]%Ou8>]%Ou8>]%Ou8>%"#ގ8>%"#ގ8>!8>%"#ގ8>%"#ގ8>%"#ގ8>!8>!8>Z 9>!8>!8>!8>Z 9>Z 9>cXn9>Z 9>Z 9>Z 9>cXn9>cXn9> 9>cXn9>cXn9>cXn9> 9> 9>$b:> 9> 9> 9>$b:>$b:>1o:>M~2&:>M~2&:>M~2&:>1o:>1o:>TV:>$b:>$b:>$b:>TV:>TV:>M~2&:>|2T;>|2T;>|2T;>M~2&:>M~2&:> };>TV:>TV:>TV:> };> };>|2T;>s2*<>s2*<>s2*<>|2T;>|2T;>8I<> };> };> };>8I<>8I<>s2*<>1<>1<>1<>s2*<>s2*<>V<>8I<>8I<>8I<>V<>V<>1<>04)=>04)=>04)=>1<>1<>04)=>d/=>d/=>d/=>04)=>04)=>d/=>v-=>v-=>v-=>d/=>d/=>v-=>+@H>>+@H>>+@H>>v-=>v-=>+@H>>`)_{>>`)_{>>`)_{>>+@H>>+@H>>`)_{>>i'>>i'>>i'>>`)_{>>`)_{>>i'>>#%>>#%>>#%>>i'>>i'>>]%Ou>'v>'v>'v>]%Ou>]%Ou>%"#ގ>]%Ou>]%Ou>]%Ou>%"#ގ>%"#ގ>!>%"#ގ>%"#ގ>%"#ގ>!>!>Z >!>!>!>Z >Z >cXn>Z >Z >Z >cXn>cXn>>cXn>cXn>cXn>>>#b>>>>#b>#b>1o>M~2&>M~2&>M~2&>1o>1o>TV>#b>#b>#b>TV>TV>M~2&>|2T>|2T>|2T>M~2&>M~2&> }>TV>TV>TV> }> }>|2T>s2)>s2)>s2)>|2T>|2T>8I> }> }> }>8I>8I>s2)>1>1>1>s2)>s2)>V>8I>8I>8I>V>V>1>04)>04)>04)>1>1>04)>d/>d/>d/>04)>04)>d/>v->v->v->d/>d/>v->+@H>+@H>+@H>v->v->+@H>`)^{>`)^{>`)^{>+@H>+@H>`)^{>i'>i'>i'>`)^{>`)^{>i'>#%>#%>#%>i'>i'>#%>#%>"pw>"pw>"pw>#%>"pw>"pw> A> A> A>"pw> A> A>]>]>]> A>]>]>1<i>1<i>1<i>]>1<i>1<i>)>)>)>1<i>)>)>V>V>V>)>1o>\0|>\0|>\0|>1o>1o>\0|>S/x>S/x>S/x>\0|>\0|>S/x>->->->S/x>S/x>->r+>r+>r+>->->r+>m)͒>m)͒>m)͒>r+>r+>m)͒>'v>'v>'v>m)͒>m)͒>s)͒>澚'v'v'vs)͒>s)͒>x+>s)͒s)͒s)͒x+>x+>澮->x+x+x+->澮-=Y/x>澮---Y/x=Y/x=b0|=Y/xY/xY/xb0|=b0|=澩1o=b0|b0|b0|1o=澩1o>//VV>V>/>7<i7<i//>/>7<i>]]7<i7<i>7<i>]> A A]]>]> A>"pw"pw A A> A>"pw>#%#%"pw"pw>"pw>#%i'#%>#%>#%>i'i'f)^{i'>i'>i'>f)^{f)^{ +@Hf)^{>f)^{>f)^{> +@H +@H|- +@H> +@H> +@H>|-|-d/|->|->|-=d/d/04)d/=d/=d/=04)04)104)=04)=04)=澲11V>I>>I>>I>VVs2)1=澲1=澲1=s2)s2)>I}>}>}>>I>I2Ts2)=s2)=s2)=澂2T2T}ZV>ZV>ZV>}}S~2&2T=澂2T=澂2T=S~2&S~2&ZV#b>#b>#b>ZVZV1oS~2&=S~2&=S~2&=澩1o1o#b>澥>澥>#b#bcXn>澉cXn>澉cXn>澥cXnZ >Z >Z >澉cXncXnZ !>澈!>澈!>Z Z !+"#ގ>+"#ގ>+"#ގ>澈!!+"#ގ]%Ou>澣]%Ou>澣]%Ou>+"#ގ+"#ގ]%Ou'v>澚'v>澚'v>澣]%Ou]%Oui'>#%>>#%>>#%>>i'>i'>f)_{>i'>>i'>>i'>>f)_{>f)_{> +@H>f)_{>>f)_{>>f)_{>> +@H> +@H>|-= +@H>> +@H>> +@H>>|-=|-=d/=|-=>|-=>|-==d/=d/=04)=d/==d/==d/==04)=04)=1<04)==04)==04)==澲1<1<V<>I<>>I<>>I<>V<VI<};>};>};>>I<>I<2T;s2*<=s2*<=s2*<=澂2T;2T;};ZV:>ZV:>ZV:>};};S~2&:2T;=澂2T;=澂2T;=S~2&:S~2&:ZV:$b:>$b:>$b:>ZV:ZV:1o:S~2&:=S~2&:=S~2&:=澩1o:1o:$b: 9>澥 9>澥 9>$b:$b: 9cXn9>澉cXn9>澉cXn9>澥 9 9cXn9Z 9>Z 9>Z 9>澉cXn9cXn9Z 9!8>澈!8>澈!8>Z 9Z 9!8+"#ގ8>+"#ގ8>+"#ގ8>澈!8!8+"#ގ8]%Ou8>澣]%Ou8>澣]%Ou8>+"#ގ8+"#ގ8]%Ou8'v8>澚'v8>澚'v8>澣]%Ou8]%Ou8>s)͒8>澚'v8'v8'v8s)͒8>s)͒8>x+8>s)͒8s)͒8s)͒8x+8>x+8>澮-9>x+8x+8x+8-9>澮-9=Y/x9>澮-9-9-9Y/x9=Y/x9=b0|9=Y/x9Y/x9Y/x9b0|9=b0|9=澩1o:=b0|9b0|9b0|91o:=澩1o:>/=/=V<V<>V<>/=>7<h=7<h=/=/=>/=>7<h=>^=^=7<h=7<h=>7<h=>^=> A> A>^=^=>^=> A>>"pw>"pw> A> A>> A>>"pw>>#%>#%>"pw>"pw>>"pw>>#%>>i'>#%>c&>f)^{>i'>c&>#%>"pw>c&> +@H>f)^{>c&>"pw> A>c&>|-> +@H>c&> A>]>c&=d/>|->c&>]>7<i>c&=04)=d/>c&>7<i>/>c&=澲1=04)>c&>/>V>c&=s2)=澲1>c&>V>>I>c&=澂2T=s2)>c&>>I>}>c&=S~2&=澂2T>c&>}>ZV>c&=澩1o=S~2&>c&>ZV>#b>c&=b0|=澩1o>c&>#b>澥>c&=Y/x=b0|>c&>澥>澉cXn>c&>澮-=Y/x>c&>澉cXn>Z >c&>x+>澮->c&>Z >澈!>c&>s)͒>x+>c&>澈!>+"#ގ>c&>澚'v>s)͒>c&>+"#ގ>澣]%Ou>c&>澣]%Ou>澚'v>c&#%i'c&i'f)^{c&"pw#%c&f)^{ +@Hc& A"pwc& +@H|-c&] Ac&|-d/c&7<i]c&d/04)c&/7<ic&04)1c&V/c&1s2)c&>IVc&s2)2Tc&}>Ic&2TS~2&c&ZV}c&S~2&1oc&#bZVc&1ob0|c&#bc&b0|Y/xc&cXnc&Y/x-c&Z cXnc&-x+c&!Z c&x+s)͒c&+"#ގ!c&s)͒'vc&]%Ou+"#ގc&'v]%Ouc&>i'>>#%>>c&;>c&;>c&;>i'>>f)_{>>i'>>c&;>c&;>c&;>f)_{>>#%>>"pw>>c&;>c&;>c&;>#%>> +@H>>f)_{>>c&;>c&;>c&;> +@H>>"pw>> A>>c&;>c&;>c&;>"pw>>|-=> +@H>>c&;>c&;>c&;>|-=> A>>^=>c&;>c&;>c&;> A>=d/=>|-=>c&;>c&;>c&;=d/=>^=>7<h=>c&;>c&;>c&;>^==04)==d/=>c&;>c&;>c&;=04)=>7<h=>/=>c&;>c&;>c&;>7<h==澲1<=04)=>c&;>c&;>c&;=澲1<>/=>V<>c&;>c&;>c&;>/==s2*<=澲1<>c&;>c&;>c&;=s2*<>V<>>I<>c&;>c&;>c&;>V<=澂2T;=s2*<>c&;>c&;>c&;=澂2T;>>I<>};>c&;>c&;>c&;>>I<=S~2&:=澂2T;>c&;>c&;>c&;=S~2&:>};>ZV:>c&;>c&;>c&;>};=澩1o:=S~2&:>c&;>c&;>c&;=澩1o:>ZV:>$b:>c&;>c&;>c&;>ZV:=b0|9=澩1o:>c&;>c&;>c&;=b0|9>$b:>澥 9>c&;>c&;>c&;>$b:=Y/x9=b0|9>c&;>c&;>c&;=Y/x9>澥 9>澉cXn9>c&;>c&;>c&;>澥 9>澮-9=Y/x9>c&;>c&;>c&;>澮-9>澉cXn9>Z 9>c&;>c&;>c&;>澉cXn9>x+8>澮-9>c&;>c&;>c&;>x+8>Z 9>澈!8>c&;>c&;>c&;>Z 9>s)͒8>x+8>c&;>c&;>c&;>s)͒8>澈!8>+"#ގ8>c&;>c&;>c&;>澈!8>澚'v8>s)͒8>c&;>c&;>c&;>澚'v8>+"#ގ8>澣]%Ou8>c&;>c&;>c&;>+"#ގ8>澣]%Ou8>澚'v8>c&;>c&;>c&;>澣]%Ou8#%>i'>c&;c&;c&;#%>i'>f)_{>c&;c&;c&;i'>"pw>#%>c&;c&;c&;"pw>f)_{> +@H>c&;c&;c&;f)_{> A>"pw>c&;c&;c&; A> +@H>|-=c&;c&;c&; +@H>^= A>c&;c&;c&;^=|-=d/=c&;c&;c&;|-=7<h=^=c&;c&;c&;7<h=d/=04)=c&;c&;c&;d/=/=7<h=c&;c&;c&;/=04)=1I<VIIv8l'>Ou8df&>;df&>;df&>;&%>v8l'>Ou8)>ގ8df&>;df&>;df&>;l'>Ou8">͒8&%>v8df&>;df&>;df&>;">͒8)>ގ8+>8df&>;df&>;df&>;)>ގ8 >8">͒8df&>;df&>;df&>; >8+>8->Z 9df&>;df&>;df&>;+>8>9 >8df&>;df&>;df&>;>9->Z 9f/>Xn9df&>;df&>;df&>;->Z 9>>x9>9df&>;df&>;df&>;>>x9f/>Xn90> 9df&>;df&>;df&>;f/>Xn9>|9>>x9df&>;df&>;df&>;>|90> 9M1>$b:df&>;df&>;df&>;0> 9>o:>|9df&>;df&>;df&>;>o:M1>$b:sv2>:df&>;df&>;df&>;M1>$b:K>&:>o:df&>;df&>;df&>;K>&:sv2>:!2>};df&>;df&>;df&>;sv2>:>T;K>&:df&>;df&>;df&>;>T;!2>};2>;df&>;df&>;!2>};TV>*<>T;df&>;df&>;df&>;TV>*<2>V;df&>;df&>;2><}>*;df&>;df&>;}>V<0>=df&>;df&>;df&>;C1>V4)=}>;df&>;df&>;?>4)=0>=/>h=df&>;df&>;df&>;0>=$f>=?>4)=df&>;df&>;df&>;$f>=/>h=I->^=df&>;df&>;df&>;/>h=>=$f>=df&>;df&>;df&>;>=I->^=+>A>df&>;df&>;df&>;I->^=%!>@H>>=df&>;df&>;df&>;%!>@H>+>A>)>pw>df&>;df&>;df&>;+>A>$#>_{>%!>@H>df&>;df&>;df&>;$#>_{>)>pw>3'>>df&>;df&>;df&>;)>pw>A`%>>$#>_{>df&>;df&>;df&>;A`%>>3'>>A`%>>df&>;df&>;df&>;3'>>>澉l'>Ou8>澔&%>v8>df&>;>df&>;>df&>;>澉l'>Ou8>)>ގ8>澉l'>Ou8>df&>;>df&>;>df&>;>)>ގ8>澔&%>v8>澸">͒8>df&>;>df&>;>df&>;>澔&%>v8>澥+>8>)>ގ8>df&>;>df&>;>df&>;>澥+>8>澸">͒8>澴 >8>df&>;>df&>;>df&>;>澸">͒8>->Z 9>澥+>8>df&>;>df&>;>df&>;>->Z 9>澴 >8>澁>9>df&>;>df&>;>df&>;>澴 >8?澣f/>Xn9>->Z 9>df&>;>df&>;>df&>;?澣f/>Xn9>澁>9>>>x9>df&>;>df&>;>df&>;>澁>9?澈0> 9?澣f/>Xn9>df&>;>df&>;>df&>;?澈0> 9>>>x9>>|9>df&>;>df&>;>df&>;>>>x9?M1>$b:?澈0> 9>df&>;>df&>;>df&>;?M1>$b:>>|9>澄>o:>df&>;>df&>;>df&>;>>|9?sv2>:?M1>$b:>df&>;>df&>;>df&>;?sv2>:>澄>o:>K>&:>df&>;>df&>;>df&>;>澄>o:?!2>};?sv2>:>df&>;>df&>;>df&>;?!2>};>K>&:>澩>T;>df&>;>df&>;>df&>;>K>&:?2>};>df&>;>df&>;>df&>;?2><>澩>T;>TV>*<>df&>;>df&>;>df&>;>澩>T;?C1>V<>df&>;>df&>;>df&>;?C1>V<>TV>*<>}><>df&>;>df&>;>df&>;>TV>*=?C1>V<>df&>;>df&>;>df&>;?0>=>}><>?>4)=>df&>;>df&>;>df&>;>}>h=?0>=>df&>;>df&>;>df&>;?/>h=>?>4)=>$f>=>df&>;>df&>;>df&>;>?>4)=>I->^=?/>h=>df&>;>df&>;>df&>;>I->^=>$f>=>澯>=>df&>;>df&>;>df&>;>$f>=>+>A>>I->^=>df&>;>df&>;>df&>;>+>A>>澯>=>%!>@H>>df&>;>df&>;>df&>;>澯>=>)>pw>>+>A>>df&>;>df&>;>df&>;>)>pw>>%!>@H>>$#>_{>>df&>;>df&>;>df&>;>%!>@H>>3'>>>)>pw>>df&>;>df&>;>df&>;>3'>>>$#>_{>>A`%>>>df&>;>df&>;>df&>;>$#>_{>>A`%>>>3'>>>df&>;>df&>;>df&>;>A`%>>&%>vl'>Oudf&>l'>Ou)>ގdf&>">͒&%>vdf&>)>ގ+>df&> >">͒df&>+>->Z df&>> >df&>->Z f/>Xndf&>>>x>df&>f/>Xn0>df&>>|>>xdf&>0>M1>#bdf&>>o>|df&>M1>#bsv2>df&>K>&>odf&>sv2>!2>}df&>>TK>&df&>!2>}2>df&>TV>)>Tdf&>2>C1>Vdf&>}>TV>)df&>C1>V0>df&>?>4)}>df&>0>/>idf&>$f>?>4)df&>/>iI->]df&>>$f>df&>I->]+>Adf&>%!>@H>df&>+>A)>pwdf&>$#>^{%!>@Hdf&>)>pw3'>df&>A`%>$#>^{df&>3'>A`%>df&>>澉l'>Ou>澔&%>v>df&>>)>ގ>澉l'>Ou>df&>>澔&%>v>澸">͒>df&>>澥+>>)>ގ>df&>>澸">͒>澴 >>df&>>->Z >澥+>>df&>>澴 >>澁>>df&>?澣f/>Xn>->Z >df&>>澁>>>>x>df&>?澈0>?澣f/>Xn>df&>>>>x>>|>df&>?M1>#b?澈0>>df&>>>|>澄>o>df&>?sv2>?M1>#b>df&>>澄>o>K>&>df&>?!2>}?sv2>>df&>>K>&>澩>T>df&>?2>?!2>}>df&>>澩>T>TV>)>df&>?C1>V?2>>df&>>TV>)>}>>df&>?0>?C1>V>df&>>}>>?>4)>df&>?/>i?0>>df&>>?>4)>$f>>df&>>I->]?/>i>df&>>$f>>澯>>df&>>+>A>I->]>df&>>澯>>%!>@H>df&>>)>pw>+>A>df&>>%!>@H>$#>^{>df&>>3'>>)>pw>df&>>$#>^{>A`%>>df&>>A`%>>3'>>df&>>3'>>3'>>)>pw>)>pw>>)>pw>>3'>>>)>pw>)>pw>+>A>+>A>>+>A>>)>pw>>+>A>+>A>I->^=I->^=>I->^=>+>A>>I->^=I->^=/>h=/>h=?/>h=>I->^=?/>h=/>h=0>=0>=?0>=?/>h=?0>=0>=C1>VVV=>澄>o:>>|9>|9>|9>o:>澄>o:>>|9>>>x9>>x9>>x9>|9>>|9>>>x9>澁>9>9>9>>x9>>>x9>澁>9>澴 >8 >8 >8>9>澁>9>澴 >8>澸">͒8">͒8">͒8 >8>澴 >8>澸">͒8>澔&%>v8&%>v8&%>v8">͒8>澸">͒8l'>Ou8&%>v8>澔&%>v8>澔&%>v8>澉l'>Ou8l'>Ou8)>ގ8l'>Ou8>澉l'>Ou8>澉l'>Ou8>)>ގ8)>ގ8+>8)>ގ8>)>ގ8>)>ގ8>澥+>8+>8->Z 9+>8>澥+>8>澥+>8>->Z 9->Z 9f/>Xn9->Z 9>->Z 9>->Z 9?澣f/>Xn9f/>Xn90> 9f/>Xn9?澣f/>Xn9?澣f/>Xn9?澈0> 90> 9M1>$b:0> 9?澈0> 9?澈0> 9?M1>$b:M1>$b:>o:K>&:>K>&:>K>&:>澄>o:>o:sv2>:M1>$b:?M1>$b:?M1>$b:?sv2>:sv2>:K>&:>T;>澩>T;>澩>T;>K>&:K>&:!2>};sv2>:?sv2>:?sv2>:?!2>};!2>};>T;TV>*<>TV>*<>TV>*<>澩>T;>T;2>};?!2>};?!2>};?2><2>*<}><>}><>}><>TV>**V<2>VV<}>4)=>?>4)=>?>4)=>}><}>4)=$f>=>$f>=>$f>=>?>4)=?>4)=$f>=>=>澯>=>澯>=>$f>=$f>=>=%!>@H>>%!>@H>>%!>@H>>澯>=>=%!>@H>$#>_{>>$#>_{>>$#>_{>>%!>@H>%!>@H>$#>_{>A`%>>>A`%>>>A`%>>>$#>_{>$#>_{>A`%>>3'>>>3'>>>3'>>>A`%>>A`%>>l'>Ou&%>v>澔&%>v>澔&%>v>澉l'>Oul'>Ou)>ގl'>Ou>澉l'>Ou>澉l'>Ou>)>ގ)>ގ+>)>ގ>)>ގ>)>ގ>澥+>+>->Z +>>澥+>>澥+>>->Z ->Z f/>Xn->Z >->Z >->Z ?澣f/>Xnf/>Xn0>f/>Xn?澣f/>Xn?澣f/>Xn?澈0>0>M1>#b0>?澈0>?澈0>?M1>#bM1>#b>oK>&>K>&>K>&>澄>o>osv2>M1>#b?M1>#b?M1>#b?sv2>sv2>K>&>T>澩>T>澩>T>K>&K>&!2>}sv2>?sv2>?sv2>?!2>}!2>}>TTV>)>TV>)>TV>)>澩>T>T2>!2>}?!2>}?!2>}?2>2>TV>)}>>}>>}>>TV>)TV>)C1>V2>?2>?2>?C1>VC1>V}>?>4)>?>4)>?>4)>}>}>?>4)$f>>$f>>$f>>?>4)?>4)$f>>>澯>>澯>>$f>$f>>%!>@H>%!>@H>%!>@H>澯>>%!>@H$#>^{>$#>^{>$#>^{>%!>@H%!>@H$#>^{A`%>>A`%>>A`%>>$#>^{$#>^{A`%>3'>>3'>>3'>>A`%>A`%>>3'>3'>)>pw)>pw>)>pw>3'>>)>pw)>pw+>A+>A>+>A>)>pw>+>A+>AI->]I->]>I->]>+>A>I->]I->]/>i/>i?/>i>I->]?/>i/>i0>0>?0>?/>i?0>0>C1>VC1>V?C1>V?0>>澄>o>>|>|>|>o>澄>o>>|>>>x>>x>>x>|>>|>>>x>澁>>>>>x>>>x>澁>>澴 > > >>>澁>>澴 >>澸">͒">͒">͒ >>澴 >>澸">͒>澔&%>v&%>v&%>v">͒>澸">͒L=+پ~ L+پ~ Ld~ Ld~ L=d~ L=+پ~ L=+پ~ L=+پZL+پZL+پZL+پ~ L=+پ~ L= L=d~ Ld~ Ld~ L L= /\=kA`#\kA`$\1ھA`$\1ھA`.\=1ھA`/\=kA`/\=kA`/\=k/T=k/Tk/#\k/#\kA`/\=kA`T=k/Tk/Tk/#\kA`/\=kA`T=k/L=kZLkZLkZTk/T=k/L=kZL=kELkELkELkZL=kZT1ھ/$\1ھA`$\1ھ/.\=1ھA`T=1ھ/.\=1ھ/.\=1ھA`$\1ھA`T1ھ/T1ھ/T=1ھ/.\=1ھA`T=1ھ/T1ھ/L1ھZL1ھZL=1ھZT=1ھ/L=1ھZL1ھZL+پZL+پZL=+پZL=1ھZL= L LK LK L=K L= L=K LK LQwELQwEL=QwEL=K L=kEL=QwELQwELQwELkEL=kE/\=k//\=kA`.\=1ھA`.\=1ھA`.\=1ھ//\=k/L= L=K L=QwEL=QwEL=d~ L= L=d~ L=QwEL=+پZL=+پZL=+پ~ L=d~ L=QwEL=kEL=kZL=kZL=1ھZL=QwELQwELd~ L+پ~ L+پ~ L+پZLQwETk/LkZL1ھZL1ھZT1ھ/Tk/$\1ھ/$\1ھA`#\kA`#\kA`#\k/$\1ھ/L=kZT=k/T=1ھ/T=1ھ/L=1ھZL=kZLkZLkELQwELQwEL1ھZLkZLK L Ld~ Ld~ LQwELK ̾I B?lG̾&1?lG̾I B?!̾I B?!̾&1?lG̾&1?!>K B?G>&1?G˾I B?G˾I B?G>&1?G˾&1?G>K B?!>&1?!>K B?lG>&1?!>&1?lG>K B?lG>٣0?!>&1?-˾ף0?!˾ף0?!>&1?-˾&1?-˾ף0?!˾&1?-̾&1?!>&1?->٣0?!>&1?!˾I B?-̾I B?!˾&1?-˾&1?-̾I B?!̾&1?!̾&1?lG˾ף0?lG̾&1?!̾&1?!˾ף0?lG˾ף0?!˾ף0?lG˾&1?G>٣0?lG>٣0?lG˾&1?G>&1?G>٣0?lG>&1?lG>٣0?!>٣0?!>&1?lG>&1?!>K B?!>K B?->&1?!>&1?!>K B?->&1?->K B?->]B?!˾I B?-˾I B?->]B?!˾[B?!˾I B?-˾[B?!̾I B?!˾ף0?lG̾&1?lG˾&1?G>&1?G>&1?lG>٣0?lG>K B?->K B?!>]B?!˾[B?lG̾I B?lG˾[B?!˾[B?!̾I B?lG̾I B?!̾I B?lG˾I B?G̾&1?lG̾&1?lG˾I B?G˾&1?G>K B?G>K B?lG>&1?G>K B?lG>&1?lG>&1?G>K B?lG>]B?lG>K B?!>K B?!>]B?lG>]B?!̾I B?lG˾[B?lG˾I B?G>K B?lG>K B?G>]B?lG>]B?lG>K B?G˾[B?lG˾[B?lG>K B?G˾I B?GL>T?lGL>Sc?lGL>T?!L>T?!L>Sc?lGL>Sc?!JT?GJSc?G~J>T?G~J>T?GJSc?G~J>Sc?GLT?!LSc?!LT?lGLT?lGLSc?!LSc?lGJ c?!JSc?-~J> c?!~J> c?!JSc?-~J>Sc?-~J> c?!~J>Sc?-L>Sc?!JSc?-J c?!LSc?!~J>T?-L>T?!~J>Sc?-~J>Sc?-L>T?!L>Sc?!L>Sc?lG~J> c?lGL>Sc?!L>Sc?!~J> c?lG~J> c?!~J> c?lG~J>Sc?GJ c?lGJ c?lG~J>Sc?GJSc?GJ c?lGLSc?lGJ c?!J c?!LSc?lGLSc?!LT?!JT?-LSc?!LSc?!JT?-JSc?-~J>T?-~J>zT?!L>T?!~J> c?lGL>Sc?lG~J>Sc?GJ c?lGJSc?GLSc?lGJT?-LT?!JzT?!~J>zT?lGL>T?lG~J>zT?!~J>zT?!L>T?lGL>T?!L>T?lG~J>T?GL>Sc?lGL>Sc?lG~J>T?G~J>Sc?GJT?GLT?lGJSc?GJSc?GLT?lGLSc?lGLT?lGJzT?lGLT?!LT?!JzT?lGJzT?!L>T?lG~J>zT?lG~J>T?GLT?lGJT?GJzT?lGJzT?lGJT?G~J>zT?lG~J>zT?lGJT?G~J>T?G(>pC?lG(>S?lG(>pC?!(>pC?!(>S?lG(>S?!"nC?G"S?G">pC?G">pC?G"S?G">S?G(nC?!(S?!(nC?lG(nC?lG(S?!(S?lG"zT?!"S?-">zT?!">zT?!"S?-">S?-">zT?!">S?-(>S?!"S?-"zT?!(S?!">pC?-(>pC?!">S?-">S?-(>pC?!(>S?!(>S?lG">zT?lG(>S?!(>S?!">zT?lG">zT?!">zT?lG">S?G"zT?lG"zT?lG">S?G"S?G"zT?lG(S?lG"zT?!"zT?!(S?lG(S?!(nC?!"nC?-(S?!(S?!"nC?-"S?-"nC?-"[B?!">pC?-">pC?-"[B?!">]B?!">pC?-">]B?!(>pC?!">zT?lG(>S?lG">S?G"zT?lG"S?G(S?lG"nC?-(nC?!"[B?!">]B?lG(>pC?lG">]B?!">]B?!(>pC?lG(>pC?!(>pC?lG">pC?G(>S?lG(>S?lG">pC?G">S?G"nC?G(nC?lG"S?G"S?G(nC?lG(S?lG(nC?lG"[B?lG(nC?!(nC?!"[B?lG"[B?!(>pC?lG">]B?lG">pC?G(nC?lG"nC?G"[B?lG"[B?lG"nC?G">]B?lG">]B?lG"nC?G">pC?G~J>zT?lG~J>zT?!JzT?!JzT?!JzT?lG~J>zT?lG~J>zT?!~J>T?-JT?-JT?-JzT?!~J>zT?!~J>T?-~J>Sc?-JSc?-JSc?-JT?-~J>T?-~J> c?lGJ c?lGJ c?!J c?!~J> c?!~J> c?lG~J> c?lGJ c?lGJ c?!J c?!~J> c?!~J> c?lG~J>T?-~J>Sc?-JSc?-JSc?-JT?-~J>T?-~J>zT?!~J>T?-JT?-JT?-JzT?!~J>zT?!~J>zT?lG~J>zT?!JzT?!JzT?!JzT?lG~J>zT?lG~J>zT?lGJT?G~J>T?GJzT?lGJT?G~J>zT?lGLT?lGJT?GJzT?lGL>T?lG~J>zT?lG~J>T?GLT?!JzT?lGJzT?!LT?lGJzT?lGLT?!JSc?GLT?lGLSc?lGJT?GLT?lGJSc?GL>Sc?lG~J>T?G~J>Sc?GL>T?lG~J>T?GL>Sc?lG~J>zT?!L>T?lGL>T?!~J>zT?lGL>T?lG~J>zT?!JT?-LT?!JzT?!J c?lGJSc?GLSc?lG~J> c?lGL>Sc?lG~J>Sc?G~J>T?-~J>zT?!L>T?!LSc?!JT?-JSc?-LT?!JT?-LSc?!J c?!LSc?lGLSc?!J c?lGLSc?lGJ c?!J c?lG~J>Sc?GJSc?G~J> c?lG~J>Sc?GJ c?lGL>Sc?!~J> c?lG~J> c?!L>Sc?lG~J> c?lGL>Sc?!~J>Sc?-L>T?!L>Sc?!~J>T?-L>T?!~J>Sc?-JSc?-J c?!LSc?!~J> c?!~J>Sc?-L>Sc?!~J> c?!JSc?-~J>Sc?-J c?!JSc?-~J> c?!LT?lGLSc?!LSc?lGLT?!LSc?!LT?lG~J>T?GJSc?G~J>Sc?GJT?GJSc?G~J>T?GL>T?!L>Sc?lGL>Sc?!L>T?lGL>Sc?lGL>T?!">zT?lG"zT?lG"zT?!"zT?!">zT?!">zT?lG">]B?lG">]B?!"[B?!"[B?!"[B?lG">]B?lG">pC?-">S?-"S?-"S?-"nC?-">pC?->]B?lG˾[B?lG˾[B?!˾[B?!>]B?!>]B?lG>&1?lG>٣0?!˾ף0?!˾ף0?!˾ף0?lG>&1?lG>&1?->K B?-˾I B?-˾I B?-˾&1?->&1?->n9?->0?-˾0?-˾0?-˾l9?->n9?->n9?lG>]?!˾[?!˾[?!˾[?lG>n9?lG>0?lG˾ޡ0?lG˾ޡ0?!˾ޡ0?!>0?!>0?lG˾ޡ0?lG>0?G˾0?G>0?lG>0?G˾ޡ0?lG>0?lG>0?G>0?lG̾0?lG˾ޡ0?lG˾0?G>0?!>0?lG>0?!>0?lG>0?lG>0?!>0?lG>n9?lG>n9?G>0?G>0?lG>n9?G̾l9?lG˾0?G˾l9?G̾0?lG˾0?G̾l9?lG˾ޡ0?!̾0?lG̾0?!˾ޡ0?lG̾0?lG˾ޡ0?!>0?->0?!>0?!>n9?G>n9?lG>]?lG˾[?lG̾l9?lG˾l9?G˾0?-˾ޡ0?!̾0?!˾0?->0?!˾ޡ0?!>0?->0?!˾0?->n9?!>0?->n9?->0?!>0?->n9?!>]?!>n9?lG>n9?!>]?lG>n9?lG>]?!>]?lG˾l9?G>n9?G˾[?lG˾l9?G>]?lG̾l9?!˾[?lG˾[?!̾l9?lG˾[?lG̾l9?!˾l9?-̾0?!̾l9?!˾0?-̾0?!˾l9?->n9?->]?!>n9?!˾[?!˾l9?-̾l9?!˾[?!>n9?-˾l9?->]?!>n9?-˾[?!>n9?!>n9?lG>0?lG>0?!>n9?!>0?lG˾0?G>n9?G˾l9?G>0?G>n9?G˾0?G̾0?!̾l9?lG̾l9?!̾0?lG̾l9?lG̾0?!>QHk>QH?,>ף@k?,>ף@k>QH>?,>ף@k>>kD>$3Pɐ>xIQy> Y)t-Jp Oo vk Oo vkJp==Di Oo vk Oo vkDi/> Oo vk/>(&x(&x <j Oo vk Oo vk <jK Oo vkK¡¡ۀ Oo vk Oo vkۀ?xۀ Oo vk?xۀ|Vۢk|Vۢk?xۀ4[|Vۢk4[p=kp=k4[2)%[k4[ӂ2)%[k2)%[kӂʄp2)%[kʄp&\$ТH3 [UAk=B>k€=Т#>Nk#>Nk€=Тl=dТ#>Nkl=dТk$>"kk$>"kl=dТ=Тk$>"k=Т,\>$Т,\>$Т>ʄpk$>"kk$>"k>ʄp>ӂk$>"k>ӂp=>kݏ>ۀ%o>kz>ۀz>ۀ%o>kp=>kz>ۀp=>k>ۀ>ۀp=>k>ӂݏ>ۀa>ʄ֡%o>k%o>ka>ʄ֡>K%o>k>K>˗>˗ >H%o>k%o>k >H*>R=%o>k*>R=> > >]P%o>k%o>k>]P`3>W%o>k`3>W>s >s >t-%o>k%o>k>t->B>%o>k>B>#^w>&kB1>02>W#s=>~].>2'՞ah.>z>B>>B>ah.>z.>{>B>.>{\*/>?矾\*/>?矾/>z>B>>B>/>zR0>j⠾>B>R0>j⠾;0>]2>W#3>>s=>~s=>~3>>3>3Ks=>~3>3K5> 25> 2 6>lЮs=>~s=>~ 6>lЮ17>öɢs=>~꾓17>öɢoV>?~oV>?~꾓17>öɢQ8>ТoV>?~Q8>Т>~>~Q8>Т&O>/iТ>~&O>/iТW>Т;0>]B1>0>B>>B>B1>0s=>~꾝>B>s=>~#^w>&k#^w>&ks=>~r=>+/#^w>&kr=>+/r=>(kW>Т#>Т>~>~#>Т\؃>Ю>~\؃>Ю>=>=K>[>~>~꾴K>[->0>~->0V>s~V>s~->0'S>V>s~'S>>T |a'S>0Ņ>qɡ>T |a>T |a0Ņ>qɡ>Uv>Uv薆>>T |a>T |a薆>>37>T |a>37 > >,o>#>T |a>T |a,o>#ւ>Di>T |aւ>Di>u7>u7Ň>".>T |a>T |aŇ>".<̇>8(>T |a<̇>8(·>7Qy> Y)ɐ>xI.>>/R.>>/Rɐ>xI~>g·>7p>hW>T |a>T |ap>hWU>e>T |aU>e>ra>raU>eƒ>W }>raƒ>W }s>s>ƒ>W }~>gs>~>g&>4a&>4a~>gɐ>xIOr>֣ EB>֣ 0>KڽQy> Y)x>]"D>$3PD>$3Px>]"r>֣ D>$3Pr>֣ Or>֣ ED>$3POr>֣ E0>Kڽ>Q N>) a->֣ z^->֣ z^N>) a+>}@>h->֣ z^+>}@>hB>֣ B>֣ +>}@>hꂊ>8q B>֣ ꂊ>8q 0>Kڽ->֣ z^>֣ >Q >Q >֣ ,W>֣ ߎ:>'nh>֣ ^.>֣ sO.>֣ sO.>:yd>'nh>'nh.>:yd.>x >'nh.>x >>.>x .>FZ)>.>FZ)>B>>B>.>FZ)~.> ->B>~.> -].>2'՞ Oo vkp=(kp=+/򾗙t- Oo vkB>B> Oo vkp=+/򾗙B>p=+/o=~Q8Тo=~LA{,ТLA{,Тo=~~Q8Т 6lЮo=~o=~ 6lЮ5do=~5d4/4/3Eo=~o=~꾰3EA2o=~A2B>B>A21 .ǵB>1 .ǵ1Y/(1Y/(/U0jqᠾB>B>/U0jqᠾ%02r:ǠB>%02r:Ǡ/h/hV*/?矾B>B>V*/?矾n.u7B>n.u7X.'՞X.'՞GF.ñB>B>GF.ñx. -B>x. -x. -w.FZ)w.FZ)'nh'nhw.FZ)w.=C'nhw.=C֣ ^֣ ^w.=Cw.THY֣ ^w.THYw.֣ sOQ#glhWT |aT |alhWɇ#$(ɇ#$(IȇR"0T |aT |aIȇR"0T |aC|YgC|Yg`T |aT |a`JT |aJzzle1T |aT |ale1 |T |a | , |^R , ,^R4 ,4Vs~Vs~4D8Vs~꾊D8 ~ ~꾊D8~~꾊D8 *Hm~ *HmP탾P탾j~~꾳j̢~꾈̢ТТsC4Т~~sC4ТXaТ~XaТLA{,ТQ#gT |a=t=tT |ara=traiŧeN) a(W֣ ߎ:֣ N) a֣ )֣ z^B֣ 悊8q )֣ z^)֣ z^悊8q N) arasiŧeiŧes~&4aiŧe~&4a][e][e~&4aNMD][eNMDyvg[)yvg[)NMDVyt(Vyt(NMDD$3PVyt(D$3Pr֣ 󽌃r֣ D$3PGr֣ EGr֣ ED$3P0KڽGr֣ E0KڽB֣ B֣ 0Kڽ悊8q (W֣ ߎ:N) a胾)jY<(W֣ ߎ:胾)jY<`֣ b^<悊8q & 5m胾)jY<悊8q 胾)jY֣ ߎ:d>֣ b^<>)jY<>kZ>:~?,>ף@k?,>ף@kZ>:~V>s~꾓>T |a>7tV>s~+>}@>hN>) a>7t&>4a>7ts>s>>7t>ra>ra>7t>T |aɐ>xI>7t&>4aV>s~>7t?,>ף@k>7t#>!=Ӿ?,>ף@k>Q ,W>֣ ߎ:>)jY<>Q >)jY) aN>) a>)jY<>7t>7t0>Kڽꂊ>8q >7tꂊ>8q +>}@>hɐ>xID>$3P>7t>7tD>$3P0>KڽB}>Bk^>1kp=>kp=>k^>1k>kp=>k>k>k#^w>&kr=>(k%o>k%o>kr=>(kr=>(k%o>kr=>(kp=>kp=>kr=>(k>ukp=>k>ukB}>Bk]n>;:GQ.[I< k>Q.h=1e>G4c= k>Q.h=|\>Q.<=jk>GjCE<]n>;:G<1e>G4c=1e>G4c=]n>;:G< k>Q.h='>Q.0>kI@>G@ >3E>Q.Z >3E>Q.Z >kI@>G@ >|\>Q.<=|\>Q.<=kI@>G@ >V>G6=|\>Q.<=V>G6=1e>G4c=>Q.%M>">GzD,>'>Q.0>'>Q.0>">GzD,>kI@>G@ >=Q.sPb>}=G$\>b=GH>=Q.sPb>b=GH>>Q.%M>>Q.%M>b=GH>">GzD,>Lk7=Q.Qo>}=G$\>=Q.sPb>!3Q.Es>2=Gii>Lk7=Q.Qo>Lk7=Q.Qo>2=Gii>}=G$\>,k7Q.Qo>3Gݰm>!3Q.Es>!3Q.Es>3Gݰm>2=Gii>Q.%M>ͶG Z>Q.sPb>Q.sPb>ͶG Z>,k7Q.Qo>,k7Q.Qo>ͶG Z>2Gii>,k7Q.Qo>2Gii>3Gݰm>'Q.0>"GzD,>bGH>'Q.0>bGH>Q.%M>Q.%M>bGH>ͶG Z>"GzD,>'Q.0>3EQ.Z >t\Q.<=aI@G@ >3EQ.Z >3EQ.Z >aI@G@ >"GzD,> 1eG4c=VG6= kQ.h= kQ.h=VG6=t\Q.<=t\Q.<=VG6=aI@G@ >h@v>QHnt*r>tHq[t>3KRs˾h@v>QHnq[t>3KRs˾>QHk>QHkq[t>3KRs˾Rw>3KRkF.>0NF.>0Nk,>uMkF.>0N,>uMk,>uM,>uM,>uMk%*>Mk,>uM%*>Mk%*>M%*>M%*>Mk~'>pMk%*>M~'>pMk~'>pM~'>pMk~'pMk~'>pM~'>pM~'pMk~'pM~'pM~'pMk~)}Mk~'pM~)}Mk~)}M~)}M~)}Mkj+rMk~)}Mj+rMkj+rMj+rMj+rMke0-Mkj+rMe0-Mke0-Me0-Me0-Mk<.0Nke0-M<.0Nk<.0Nk;,ף@k;,ף@kQH;,ף@kQHQHkRw>3KRkq[t>3KRs˾c>"Qkzc"Qkg[t3KRs˾Hw3KRk =֣ Т|v=֣ Т|v=֣ ǜk3֣ "yT^<֣ z~x|v=֣ z~x =֣ I[ =֣ ?a4=֣ ?a2֣ >,4>G֣ >G֣ :>G֣ :>G֣ >hsc֣ >hsc֣ >G֣ >rQ֣ >hsc֣ >rQ֣ >z֣ =z֣ =rQ֣ >sh֣ =z֣ =sh֣ =Є֣ Mry=Є֣ Mry=sh֣ =xw֣ PL=Є֣ Mry=xw֣ PL=`֣ b^r֣ j><֣ hw><֣ hw>r֣ j>-֣ `g>G֣ :>>D֣ %>>2֣ >,4>2֣ >,4>>D֣ %>> 7 ֣ T^>2֣ >,4> 7 ֣ T^>-֣ P>-֣ P> 7 ֣ T^>-֣ `g>-֣ P>-֣ `g>4 ֣ :S>4 ֣ :S>-֣ `g>r֣ j>G>֣ ?aG>֣ CrQ>֣ Є>֣ Mry=w>֣ PL={h>֣ =<֣ hw> ֣ M>D֣ y>D֣ y> ֣ M>uü֣ >D֣ y>uü֣ >$֣ 8{>$֣ 8{>uü֣ >$֣ >$֣ 8{>$֣ >ǜk3֣ }>ǜk3֣ }>$֣ >)v<֣ >ǜk3֣ }>)v<֣ >9D=֣ y>9D=֣ y>)v<֣ > =֣ M>9D=֣ y> =֣ M>|v=֣ l>|v=֣ l> =֣ M>|v=֣ )>|v=֣ l>|v=֣ )>=֣ j>=֣ j>|v=֣ )> =֣ x>=֣ j> =֣ x> =֣ >`> =֣ >`> =֣ x>J=֣ hw> =֣ >`>J=֣ hw>< >֣ :S>< >֣ :S>J=֣ hw>7 >֣ T^>< >֣ :S>7 >֣ T^>2>֣ >,4>2>֣ >,4>7 >֣ T^>E>֣ %>>2>֣ >,4>E>֣ %>>G>֣ >G>֣ >E>֣ %>>G>֣ F:>G>֣ >G>֣ F:>rQ>֣ >rQ>֣ >G>֣ F:>pc>֣ >rQ>֣ >pc>֣ >{h>֣ ={h>֣ =pc>֣ >z>֣ ={h>֣ =z>֣ =Є>֣ Mry=rQ>֣ {h>֣ 㳼Or>֣ EЄ>֣ Mry=d>֣ b^<w>֣ PL=w>֣ PL=d>֣ b^<,W>֣ ߎ:w>֣ PL=,W>֣ ߎ:q{>֣ ;q{>֣ ;,W>֣ ߎ:>֣ q{>֣ ;>֣ w>֣ `<w>֣ `<>֣ ->֣ z^w>֣ `<->֣ z^{h>֣ 㳼{h>֣ 㳼->֣ z^B>֣ {h>֣ 㳼B>֣ Or>֣ E.>֣ ?a.>֣ sOG>֣ C>֣ ?a>֣ a>֣ ^ =֣ I[>֣ a =֣ ?a< >֣ fO>֣ a =֣ I[>֣ ^>֣ a< >֣ fO>֣ ^< >֣ fO.>֣ sO.>֣ sO< >֣ fO2>֣ 0.>֣ sO2>֣ 0G>֣ C=֣ i\j=֣ \qLU=֣ s4=֣ ?a =֣ ?a=֣ ̯f=֣ ̯f =֣ ?a =֣ i=֣ ̯f =֣ i|v=֣ h|v=֣ h =֣ i|v=֣ i|v=֣ h|v=֣ i=֣ i=֣ i|v=֣ i\j=֣ \qLU=֣ s\j=֣ \q9D=֣ u9D=֣ u\j=֣ \qT^<֣ z~xT^<֣ z~x\j=֣ \q|v=֣ z~x-֣ s.U֣ s-֣ z~x-֣ z~x.U֣ sD֣ u ֣ oj-֣ s-֣ i.U֣ s ֣ oj֣ i-֣ s ֣ oj.U֣ s-֣ ?a ֣ oj-֣ i֣ i ֣ ojr֣ ̯fr֣ ̯f ֣ oj&ս֣ ?a&ս֣ ?a ֣ oj-֣ ?a&ս֣ ?a6֣ uW4 ֣ fO6֣ uW-֣ K4 ֣ fO-֣ ?a6֣ uW&ս֣ ?a6֣ uW֣ ?a֣ ^-֣ K6֣ uW2֣ 02֣ 06֣ uWw.֣ sO2֣ 0w.֣ sOG֣ G֣ w.֣ sOG֣ ?aw.֣ sO6֣ uW֣ ^G֣ $֣ 7|G֣ 7|G֣ 7|$֣ 7|Ђ֣ z~xG֣ 7|Ђ֣ z~xG֣ z~xG֣ z~xЂ֣ z~xs֣ sG֣ z~xs֣ sG֣ sG֣ ss֣ s֣ iG֣ s֣ iG֣ iG֣ i֣ ia ֣ ?aG֣ ia ֣ ?aG֣ ?aG֣ ?aa ֣ ?arQ֣ G֣ ?arQ֣ G֣ ҂֣ DiIȇ֣ 0l֣ G֣ Тl֣ G֣ G֣ l֣ df֣ G֣ df֣ $֣ 7| ֣ |֣ ֣ ;6֣ ;6֣ ҂֣ Di֣ ;6҂֣ Di֣ ֣ ҂֣ Dil֣ ֣ l֣ ֣ Т֣ Тl֣ G֣ Т33֣ #OS 6֣ Q8֣ ТO0֣ 䠾1֣ (33֣ #O/֣ 럾O0֣ 䠾V.֣ w֞V.֣ w֞O0֣ 䠾33֣ #OV.֣ w֞33֣ #Ow.֣ -w.֣ -33֣ #OQ8֣ Тw.֣ -Q8֣ Тw.֣ w.֣ sOw.֣ ?aG֣ ?aG֣ ?aw.֣ ?aw.֣ iG֣ ?aw.֣ iG֣ iG֣ iw.֣ iw.֣ sG֣ iw.֣ sG֣ sG֣ sw.֣ sw.֣ z~xG֣ sw.֣ z~xG֣ z~xG֣ z~xw.֣ z~xw.֣ 7|G֣ z~xw.֣ 7|G֣ 7|G֣ 7|w.֣ 7|w.֣ G֣ 7|w.֣ G֣ G֣ w.֣ Q8֣ ТG֣ Q8֣ ТG֣ Т-֣ ֣ 7|-֣ 7|-֣ 7|֣ 7|֣ z~x-֣ 7|֣ z~x-֣ z~x-֣ z~x֣ z~x֣ s-֣ z~x֣ s-֣ s-֣ s֣ s֣ i-֣ s֣ i-֣ i-֣ i֣ i֣ ?a-֣ i֣ ?a-֣ ?a-֣ ?a֣ ?a6֣ uWP:֣ At@֣ ֣ -z֣ A!֣ P֣ T֣ T֣ PP:֣ A֣ TP:֣ A-֣ â-֣ âP:֣ A֣ --֣ â֣ --֣ -֣ ֣ -֣ -֣ ֣ ֣ 7|֣֣ Т$֣ Т$֣ $֣ $֣ Т%\֣ ТG֣ #֣ #֣ -G֣ #֣ -II֣ #OII֣ #O#֣ -c'֣ w֞II֣ #Oc'֣ w֞Va֣ (Va֣ (c'֣ w֞,4֣ 럾Va֣ (,4֣ 럾dG֣ 䠾G֣ ֣֣ Т#֣ #֣ ֣֣ Т$֣ #֣ $֣ #֣ #֣ $֣ $֣ 7|#֣ $֣ 7|E#<֣ E#<֣ $֣ 7||v=֣ 7|E#<֣ |v=֣ 7|E#<֣ E#<֣ |v=֣ 7||v=֣ |v=֣ |v=֣ ТE#<֣ E#<֣ |v=֣ Т'ף<֣ ТE#<֣ 'ף<֣ ТE#<֣ -E#<֣ -'ף<֣ Т<֣ E#<֣ -<֣ '<֣ w֞'<֣ w֞<֣ I<֣ #O'<֣ w֞I<֣ #O4<֣ 럾4<֣ 럾I<֣ #Ơa<֣ (4<֣ 럾̛a<֣ (ڎG<֣ 䠾 =֣ 7|>֣ 7|>֣ =֣ 7| >֣ "u>֣ 7| >֣ "u>֣ z~x>֣ 7|>֣ z~x >֣ "u>֣ s>֣ s >֣ "u>֣ i =֣ i>֣ i >֣ "u =֣ i >֣ "u =֣ s>֣ a =֣ i =֣ ?a>֣ i>֣ a>֣ ?a =֣ i>֣ a>֣ iG>֣ CG>֣ ?a.>֣ ?a.>֣ ?aG>֣ ?aG>֣ i.>֣ ?aG>֣ i.>֣ i.>֣ iG>֣ iG>֣ s.>֣ iG>֣ s.>֣ s.>֣ sG>֣ sG>֣ z~x.>֣ sG>֣ z~x.>֣ z~x.>֣ z~xG>֣ z~xG>֣ 7|.>֣ z~xG>֣ 7|.>֣ 7|.>֣ 7|G>֣ 7|G>֣ .>֣ 7|G>֣ .>֣ G>֣ G>֣ Т.>֣ .>֣ G>֣ ТQ8>֣ Т.>֣ Q8>֣ Т.>֣ -.>֣ -Q8>֣ Т[ 6>֣ .>֣ -[ 6>֣ V.>֣ w֞V.>֣ w֞[ 6>֣ ;3>֣ #OV.>֣ w֞;3>֣ #O/>֣ 럾/>֣ 럾;3>֣ #O1>֣ (/>֣ 럾1>֣ (O0>֣ 䠾>֣ ;6>֣ #>֣ ТMȇ>֣ 0ւ>֣ Di>֣ hf>֣ p>֣ #>֣ Т#>֣ Тp>֣ Mȇ>֣ 0#>֣ ТMȇ>֣ 0>֣ ;6>֣ ;6Mȇ>֣ 0>֣ >֣ ;6>֣ >֣ |Or>֣ E󽔃r>֣ rQ>֣ rQ>֣ r>֣ e >֣ ?arQ>֣ e >֣ ?aG>֣ ?aG>֣ ?ae >֣ ?a>֣ iG>֣ ?a>֣ iG>֣ iG>֣ i>֣ is>֣ sG>֣ is>֣ sG>֣ sG>֣ ss>֣ sЂ>֣ z~xG>֣ sЂ>֣ z~xG>֣ z~xG>֣ z~xЂ>֣ z~x$>֣ 7|G>֣ z~x$>֣ 7|G>֣ 7|G>֣ 7|$>֣ 7|hf>֣ G>֣ 7|hf>֣ G>֣ G>֣ hf>֣ #>֣ ТG>֣ #>֣ ТG>֣ Т =֣ i\j=֣ \q|v=֣ i =֣ s\j=֣ \q =֣ i|v=֣ z~x\j=֣ \q =֣ z~x =֣ z~x\j=֣ \q =֣ s =֣ s >֣ "u =֣ z~x =֣ 7|"=֣ ]|v=֣ 7| =֣ Т|v=֣ =֣ =֣ |v=֣ "=֣ ]>֣ Pz>֣ A!X:>֣ AX:>֣ Az>֣ A!!>֣ TX:>֣ A!>֣ T|@>֣ |@>֣ !>֣ T-\>֣ Т|@>֣ -\>֣ Т>֣ ->֣ --\>֣ Т =֣ Т>֣ - =֣ Т>֣ >֣ =֣ Т =֣ >֣ =֣ =֣ 7| =֣ 7| =֣ "=֣ ]|v=֣ 7|"=֣ ]|v=֣ D֣ u$֣ w$֣ z~x$֣ z~x$֣ wzT^֣ z~x$֣ z~xzT^֣ z~x$֣ 7|$֣ 7|zT^֣ z~xǜk3֣ "y$֣ 7|ǜk3֣ "y|v=֣ 7||v=֣ 7|ǜk3֣ "y|v=֣ z~x|v=֣ 7||v=֣ z~x =֣ 7| =֣ 7||v=֣ z~x =֣ z~x =֣ 7| =֣ z~x >֣ "uD֣ u$֣ z~x-֣ z~x-֣ z~x$֣ z~x$֣ 7|-֣ z~x$֣ 7|-֣ 7|-֣ 7|$֣ 7|$֣ -֣ 7|$֣ -֣ -֣ $֣ %\֣ Т-֣ %\֣ Т-֣ âЄ֣ Mry=`֣ b^<胾)jY<Є>֣ Mry=z>֣ =nr>)=>)jY֣ b^<>)[q=>)[q=d>֣ b^<Є>֣ Mry=>)[q=Є>֣ Mry=-j>)}=-j>)}=Є>֣ Mry=nr>)=E>֣ %>>T>>)7>G>֣ F:>G>֣ F:>T>>)7>zW>)z>G>֣ F:>zW>)z>pc>֣ >pc>֣ >zW>)z>[>)&>pc>֣ >[>)&>z>֣ =z>֣ =[>)&>p>)P =z>֣ =p>)P =nr>)=O=)n>>)"_>7 >֣ T^>7 >֣ T^>>)"_>>)V>7 >֣ T^>>)V>E>֣ %>>E>֣ %>>>)V>6>)@>E>֣ %>>6>)@>T>>)7> =֣ M>=)u>|v=֣ )>|v=֣ )>=)u>=)\w>|v=֣ )>=)\w> =֣ x> =֣ x>=)\w>O=)n> =֣ x>O=)n>J=֣ hw>J=֣ hw>O=)n>7 >֣ T^> ֣ M>jH)>uü֣ >uü֣ >jH)>Q)>uü֣ >Q)>$֣ >$֣ >Q)>x3) >$֣ >x3) >)v<֣ >)v<֣ >x3) ><)>)v<֣ ><)> =֣ M> =֣ M><)>jH=)> =֣ M>jH=)>=)u><֣ hw>Ľ)\w> ֣ M> ֣ M>Ľ)\w>)u> ֣ M>)u>jH)>hsc֣ >zW)z>G֣ :>G֣ :>zW)z>T>)7>G֣ :>T>)7>>D֣ %>>>D֣ %>>T>)7>6)@>>D֣ %>>6)@> 7 ֣ T^> 7 ֣ T^>6)@>)V> 7 ֣ T^>)V>-֣ `g>-֣ `g>)V>)"_>-֣ `g>)"_><֣ hw><֣ hw>)"_>O余)n><֣ hw>O余)n>Ľ)\w>z֣ =p)P =hsc֣ >hsc֣ >p)P =[)&>hsc֣ >[)&>zW)z>胾)jY<)[q=Є֣ Mry=Є֣ Mry=)[q=)j)}=Є֣ Mry=)j)}=z֣ =z֣ =)j)}=nr)=z֣ =nr)=p)P =胾)jYQ.h=mq>Q.[I<>)[q=>)[q=mq>Q.[I<|>(,"9Q<>)[q=|>(,"9Q<>)jY<>)[q=-j>)}= k>Q.h= k>Q.h=-j>)}=nr>)= k>Q.h=nr>)=|\>Q.<=nr>)=p>)P =|\>Q.<=|\>Q.<=p>)P =[>)&>|\>Q.<=[>)&>3E>Q.Z >[>)&>zW>)z>3E>Q.Z >3E>Q.Z >zW>)z>T>>)7>3E>Q.Z >T>>)7>'>Q.0>T>>)7>6>)@>'>Q.0>'>Q.0>6>)@>>)V>'>Q.0>>)V>>Q.%M>>)V>>)"_>>Q.%M>>Q.%M>>)"_>O=)n>>Q.%M>O=)n>=Q.sPb>O=)n>=)\w>=Q.sPb>=Q.sPb>=)\w>=)u>=Q.sPb>=)u>Lk7=Q.Qo>=)u>jH=)>Lk7=Q.Qo>Lk7=Q.Qo>jH=)><)>Lk7=Q.Qo><)>!3Q.Es><)>x3) >!3Q.Es>!3Q.Es>x3) >Q)>!3Q.Es>Q)>,k7Q.Qo>Q)>jH)>,k7Q.Qo>,k7Q.Qo>jH)>)u>,k7Q.Qo>)u>Q.sPb>)u>Ľ)\w>Q.sPb>Q.sPb>Ľ)\w>O余)n>Q.sPb>O余)n>Q.%M>O余)n>)"_>Q.%M>Q.%M>)"_>)V>Q.%M>)V>'Q.0>)V>6)@>'Q.0>'Q.0>6)@>T>)7>'Q.0>T>)7>3EQ.Z >T>)7>zW)z>3EQ.Z >3EQ.Z >zW)z>[)&>3EQ.Z >[)&>t\Q.<=[)&>p)P =t\Q.<=t\Q.<=p)P =nr)=t\Q.<=nr)= kQ.h=)[q=胾)jY< kQ.h=)[q= kQ.h=)j)}=)j)}= kQ.h=nr)=Hw3KRkQHk1{Uk;{>Uk>QHkRw>3KRk%*>Mkc>"Qk'l>QHk%*>Mklg>Ukc>"Qkc>"Qklg>UkRw>3KRkzc"QklgUk<.0Nkzc"Qk<.0Nk'lQHk'lQHk<.0Nke0-Mk'lQHke0-Mkj+rMkX>eXklg>UkF.>0NkF.>0Nklg>Uk,>uMk,>uMklg>Uk%*>Mkj+rMk~)}Mk'lQHk'lQHk~)}Mk~'pMk'lQHk~'pMk'l>QHk'l>QHk~'pMk~'>pMk'l>QHk~'>pMk%*>MkHw3KRklgUkzc"QkRw>3KRklg>Uk;{>Uk;{>Uklg>Ukz>CVkz>CVklg>UkLx>=XkLx>=Xklg>Ukat>Xkat>Xklg>Ukzp>Ykzp>Yklg>Ukk>Zkk>Zklg>Ukf>Uka> Zka> Zklg>UkQ\>YkQ\>Yklg>UkX>eXk<.0NklgUkXeXkXeXklgUkG\YkG\YklgUka Zka ZklgUkf&M'ף< gkp=>1>p=>k1>k$>"kk$>"k1>a#>ۅk$>"ka#>ۅ#>Nk#>Nka#>ۅs=R#>Nks=R=B>k=B>ks=R&^==B>k&^=cc=Ckcc=Ck&^=U=cc=CkU=ZCp=>k>>p=>k>k>>kD9>s~>>D9>s򾦛D9>s~꾖>k>~D9>s򾦛>󾦛>>>󾦛^>1>^>1^>1^>1^>1B}>B^>1B}>BB}>BB}>BB}>B>uB}>B>u>u>u>ur=>(>ur=>(r=>(>k>k>~>~>k^>1k>~^>1k^>1~^>1~^>1kB}>Bk^>1~B}>BkB}>B~B}>B~B}>Bk>ukB}>B~꾵>uk>u~꾵>u~꾵>ukr=>(k>u~r=>(kr=>(~꾖>D9>s~D9>s򾦛D9>s򾦛D9>s~渓>`~D9>s򾦛渓>`~渓>`񾦛渓>`񾦛渓>`~C>%~渓>`񾦛C>%~C>%򾦛C>%򾦛C>%~겘>~C>%򾦛겘>~겘>򾦛겘>򾦛겘>~꾪ޚ>M(~겘>򾦛ޚ>M(~꾪ޚ>M(ޚ>M(ޚ>M(~{>:~꾪ޚ>M({>:~{>:>{>:>k>k{>:{>:~>k{>:~Z>:~;{>U>QH;{>Uk;{>Uk>QH>QHk;{>U;{>Ukz>CVk;{>Uz>CVkz>CVz>CVz>CVkLx>=Xkz>CVLx>=XkLx>=XLx>=XLx>=Xkat>XkLx>=Xat>Xkat>Xat>Xat>Xkzp>Ykat>Xzp>Ykzp>Yzp>Yzp>Ykk>Zkzp>Yk>Zkk>Zk>Zk>Zkf>Zf> Zkf> Zka> Za> Za> ZkQ\>Yka> ZQ\>YkQ\>YQ\>YQ\>YkX>eXkQ\>YX>eXkX>eXg0NF.>0NgeXF.>0NX>eXF.>0NkF.>0NkX>eXX>eXk<.0NkXeXk<.0N<.0NXeXkXeX<.0NXeX8gF &8gF &XeX8gF &<"<"'ף< <"'ף< 'ף< 'ף< 'ף< G)<'ף< G)<G)<G)<G)<i3G)<i3i3i3i3ђ)i3ђ)ђ)ђ)ђ)֣ ђ)֣ ֣ ֣ ֣ W"֣ W"W"<"G>&M<"<"G>&MG>&MLi>ȰJLi>ȰJUh>KLi>ȰJUh>KUh>KUh>KUh>KLe>QLUh>KLe>QLLe>QLLe>QLLe>QL#b>WMLe>QL#b>WM#b>WM#b>WM#b>WM]>b@N#b>WM]>b@N]>b@N]>b@N]>b@NJY>N]>b@NJY>NJY>NJY>NJY>NFxT>NJY>NFxT>NFxT>NFxT>NFxT>NO> gNFxT>NO> gNO> gNO> gNO> gNUK>MO> gNUK>MUK>MUK>MUK>MG>&MUK>MG>&MG>&MLi>ȰJs=>TLi>ȰJLi>ȰJs=>Ts=>Ts=>Tr=>(s=>Ts=>Tr=>(r=>(p=(o=Tp=(p=(o=To=To=TBiȰJo=To=TBiȰJBiȰJG&MG&MUKMG&MUKMUKMUKMUKMO gNUKMO gNO gNO gNO gN(s=>TLi>ȰJBeQLUhKBiȰJp=(wp=p=w@}B@}B\1p=p=\1쎾p=쎾^>1p=>>>p=>>^>1B}>Bp=>p=>B}>B>up=>>ur=>(1>JY>NFxT>Nr=>(Li>ȰJp=>p=>Li>ȰJUh>Kp=>Uh>K1>]>b@NJY>N#b>WM#b>WMJY>N1>#b>WM1>Le>QLLe>QL1>Uh>K zBiȰJp=p=BiȰJo=Tp=o=Tp=('ף< &^=<"<"&^=s=R<"s=RG>&MG>&Ms=Ra#>ۅG>&Ma#>ۅUK>MUK>Ma#>ۅ1>UK>M1>O> gNO> gN1>FxT>NUKMBiȰJG&MG&MBiȰJ zG&M zW"W" z"վ YW""վ Y֣ ֣ "վ Y/ض֣ /ضђ)ђ)/ضVӼO ђ)VӼO i3i3VӼO ;@2P i3;@2P G)<G)<;@2P Ɔ<*R G)<Ɔ<*R 'ף< 'ף< Ɔ<*R U='ף< U=&^=#bWMBeQL]b@N]b@NBeQLBiȰJ]b@NBiȰJJYNJYNBiȰJUKMJYNUKM0N,>uM%*>M~'>pM8gF &guq3;$v;$$$v;$G#uM8gF &,>uM%*>M<.0N8gF &e0-Me0-M8gF &j+rM~'>pM~'pM8gF &8gF &~'pM~)}M8gF &~)}Mj+rM],Ak;,ף@kQHk;,ף@k],Ak& 5m& 5m],Ak胾)jY<胾)jY<],AkmqQ.[I<>QHk?,>ף@k>_Ekh@v>QHn>QHk>_Ek5>1Z?)"Ӿ |> {:t>_Ek5>1Z?)"Ӿ>_Ek]>,Akjk>GjCEG B;]n>;:G<]n>;:GG B;&n>GH]n>;:G<&n>GHo>G`IGr>GS*x>Q@n4q>Gi`4q>Gi`뽝*x>Q@n]n>;:G<4q>Gi`]n>;:GG`>_Ek |> {:t*x>Q@n>_Ek*x>Q@nh@v>QHnh@v>QHn*x>Q@nIGr>GSh@v>QHnIGr>GSt*r>tHmq>Q.[I<]n>;:G<v>Ҥ4IFv>Ҥ4IF]n>;:G<*x>Q@nv>Ҥ4IF*x>Q@nz>R8rnz>R8rn*x>Q@n |> {:tw.FZ)x. -w.֣ -w.֣ z~xw.=Cw.֣ 7|w.֣ 7|w.=Cw.FZ)w.֣ 7|w.FZ)w.֣ w.֣ w.FZ)w.֣ -w.֣ z~xw.֣ sw.=Cw.=Cw.֣ sw.֣ iw.=Cw.֣ iw.THYw.THYw.֣ iw.֣ ?aw.THYw.֣ ?aw.֣ sO1Y/(1֣ (O0֣ 䠾Q8֣ ТS 6֣ Q8ТQ8ТS 6֣ 6lЮ 6lЮS 6֣ 5d5dS 6֣ 33֣ #O5d33֣ #O4/1Y/(1 .ǵ1֣ (1֣ (1 .ǵA21֣ (A233֣ #O33֣ #OA23E33֣ #O3E4/V*/?矾/h/֣ 럾/֣ 럾/h%02r:Ǡ/֣ 럾%02r:ǠO0֣ 䠾O0֣ 䠾%02r:Ǡ/U0jqᠾO0֣ 䠾/U0jqᠾ1Y/(V.֣ w֞w.֣ -x. -x. -GF.ñV.֣ w֞V.֣ w֞GF.ñX.'՞V.֣ w֞X.'՞/֣ 럾/֣ 럾X.'՞n.u7/֣ 럾n.u7V*/?矾G֣ ТQ8֣ ТQ8ТQ8ТLA{,ТG֣ ТG֣ ТLA{,ТXaТG֣ ТXaТ֣ Т֣ ТXaТsC4Т֣ ТsC4ТТlhWl֣ ɇ#$(ɇ#$(l֣ Iȇ֣ 0ɇ#$(Iȇ֣ 0IȇR"0IȇR"0Iȇ֣ 0Iȇ֣ 0҂֣ Di҂֣ DiC|YgC|Yg҂֣ Di``҂֣ Di֣ `֣ J ֣ |le1֣ ֣ le1z֣ zJD84֣ ;6֣ ;64^R֣ ;6^R ֣ | ֣ |^R | ֣ | |le1֣ ТТ֣ ֣ Т̢̢j֣ ֣ jP탾֣ P탾֣ ;6֣ ;6P탾 *Hm֣ ;6 *HmD8$֣ 7|=tЂ֣ z~xЂ֣ z~x=tiŧeЂ֣ z~xiŧes֣ ss֣ siŧe][es֣ s][e֣ i֣ i][eyvg[)֣ iyvg[)a ֣ ?aa ֣ ?ayvg[)Vyt(a ֣ ?aVyt(r֣ $֣ 7|df֣ =t=tdf֣ l֣ =tl֣ Q#gQ#gl֣ lhW>֣ ?a>֣ ^>'nh>t->֣ ->B>>B>>֣ ->֣ >B>>֣ >>>֣ >֣ 7|>֣ 7|>֣ z~x>>>֣ z~x>֣ s>>֣ s>'nh>'nh>֣ s>֣ i>'nh>֣ i>֣ ?a,\>$Т-\>֣ Т>ʄp>ʄp-\>֣ Т!>֣ Tz>֣ A!>ۀ!>֣ T!>֣ T>ۀ>ӂ!>֣ T>ӂ>ʄpa>ʄ֡ݏ>ۀz>֣ A!z>֣ A!ݏ>ۀz>ۀz>֣ A!z>ۀ>ۀa>ʄ֡z>֣ A!>K>Kz>֣ A!>֣ P>K>֣ P>˗>˗>֣ PX:>֣ A>˗X:>֣ A >H`3>W>]P|@>֣ |@>֣ >]P> |@>֣ > X:>֣ AX:>֣ A> *>R=X:>֣ A*>R= >H`3>W|@>֣ >s >s |@>֣ >֣ ->s >֣ ->t-&ף<Т'ף<֣ Т!<Т!<Т'ף<֣ Т|v=֣ Т,\>$Т=Т-\>֣ Т-\>֣ Т=Т =֣ Т=Тl=dТ =֣ Т =֣ Тl=dТ€=Т =֣ Т€=Т|v=֣ Т|v=֣ Т€=Тiws=-Т|v=֣ Тiws=-Т!<ТE#<֣ -'<֣ w֞C#< -C#< -'<֣ w֞(P:֣ A/>DiK֣ P¡¡֣ Pz֣ A!¡z֣ A!ۀ֣ T4[z֣ A!z֣ A!4[?xۀz֣ A!?xۀۀ%\֣ Т&\$Т-֣ â-֣ â&\$Тʄp-֣ âʄp֣ T֣ Tʄpӂ֣ Tӂ4[֣ 7|֣ ֣ B>B>֣ ֣ -B>֣ -t-'nh֣ ^֣ ?a֣ ?a֣ i'nh'nh֣ i֣ s'nh֣ s֣ s֣ z~x֣ z~x֣ 7|e >֣ ?ar>֣ x>]"p>hWp>֣ U>eU>ep>֣ hf>֣ U>ehf>֣ ƒ>W }x>]"Qy> Y)e >֣ ?ae >֣ ?aQy> Y).>>/Re >֣ ?a.>>/R>֣ i>֣ i.>>/R~>ghf>֣ $>֣ 7|ƒ>W }ƒ>W }$>֣ 7|Ђ>֣ z~xƒ>W }Ђ>֣ z~x~>g~>gЂ>֣ z~xs>֣ s~>gs>֣ s>֣ i#>Т#>֣ Т\؃>Ю\؃>Ю#>֣ Т>֣ >֣ ;6K>[>֣ >֣ K>[>=>֣ >=\؃>Ю>Uv0Ņ>qɡ >֣ | >֣ |0Ņ>qɡ'S> >֣ |'S>>֣ ;6>֣ ;6'S>->0>֣ ;6->0K>[>Uv >֣ |薆>薆> >֣ |>֣ 薆>>֣ >37ւ>֣ Di,o>#>֣ >֣ ,o># >>֣ >>37Mȇ>֣ 0>u7ւ>֣ Diւ>֣ Di>u7ւ>Diւ>֣ Diւ>Di,o>#p>֣ p>hWMȇ>֣ 0Mȇ>֣ 0p>hW·>7·>7<̇>8(Mȇ>֣ 0Mȇ>֣ 0<̇>8(Ň>".Mȇ>֣ 0Ň>".>u7Q8>ТQ8>֣ Т&O>/iТ&O>/iТQ8>֣ ТG>֣ Т&O>/iТG>֣ ТW>ТW>ТG>֣ Т#>֣ ТW>Т#>֣ Т#>Т.>֣ -V.>֣ w֞~.> -~.> -V.>֣ w֞].>2'՞].>2'՞V.>֣ w֞ah.>zah.>zV.>֣ w֞/>֣ 럾ah.>z/>֣ 럾.>{O0>֣ 䠾/>z/>֣ 럾/>֣ 럾/>z\*/>?矾/>֣ 럾\*/>?矾.>{1>֣ (;0>]O0>֣ 䠾O0>֣ 䠾;0>]R0>j⠾O0>֣ 䠾R0>j⠾/>z3>3K3>>;3>֣ #O;3>֣ #O3>>2>W#;3>֣ #O2>W#1>֣ (1>֣ (2>W#B1>01>֣ (B1>0;0>]3>3K;3>֣ #O5> 25> 2;3>֣ #O[ 6>֣ 5> 2[ 6>֣ 6>lЮ 6>lЮ[ 6>֣ 17>öɢ17>öɢ[ 6>֣ Q8>֣ Т17>öɢQ8>֣ ТQ8>Т.>:yd.>֣ sO.>֣ ?a.>֣ ?a.>֣ i.>:yd.>:yd.>֣ i.>֣ s.>:yd.>֣ s.>x .>֣ -~.> -.>֣ .>֣ ~.> -.>FZ).>֣ .>FZ).>֣ 7|.>֣ 7|.>FZ).>x .>֣ 7|.>x .>֣ z~x.>֣ z~x.>x .>֣ ss=>~r=>(~r=>+/r=>+/r=>(~r=>(kr=>+/r=>(kr=>(kr=>(~s=>~z>(~r=>(~z>(~꾵>u~꾵>u~z>(~B}>B~B}>B~z>(~^>1~^>1~z>(~>~>~z>(~D9>s~D9>s~z>(~渓>`~渓>`~z>(~C>%~C>%~z>(~겘>~겘>~z>(~꾪ޚ>M(~꾪ޚ>M(~z>(~{>:~{>:~z>(~Z>:~Z>:~z>(~V>s~z>(~>~V>s~>~z>(~oV>?~oV>?~z>(~s=>~p=(kp=(kp=+/p=+/p=(kp=(~p=+/p=(~o=~~z(~ ~ ~z(~Vs~Vs~z(~Z<~Z<~z(~y<~y<~z(~꾨ޚO(~꾨ޚO(~z(~貘~貘~z(~C'~C'~z(~专b~专b~z(~B9s~B9s~z(~꾿쎾~꾿쎾~z(~\1~\1~z(~@}B~@}B~z(~꾳w~꾳w~z(~p=(~p=(~z(~o=~o=~z(~~꾀>c;_j>p=>ھGKھtbFA<_>c;_=>ھj>pGKھFA<_sbFA<_>c;_>c;_>c;_FA<_FA<_=>ھ=>ھGKھGKھGKھ=>ھ>c;_>c;_j>pj>pj>p>c;_j>p=>ھ=>ھ=>ھj>pj>ptbsbFA<_FA<_FA<_tb>c;_FA<_GKھGKھ=>ھ>c;_>c;_=>ھGKھGKھFA<_>c;_sbtbGKھGKھGKھsbq[t>3KRs˾t*r>tHj*rtHj*rtHg[t3KRs˾q[t>3KRs˾3GSj*rtHt*r>tHIGr>GS3GSt*r>tH3GS?GrGSj*rtH3GjCEGSjk>GjCE<3GjCEGSjk>GjCE<1e>G4c=3GjCE<1e>G4c=V>G6=3GjCE<V>G6=kI@>G@ >3GjCEG@ >">GzD,>3GjCE<">GzD,>b=GH>3GjCE}=G$\>3GjCE<}=G$\>2=Gii>3GjCE<2=Gii>3Gݰm>3GjCE<3Gݰm>2Gii>3GjCE<2Gii>ͶG Z>3GjCE<ͶG Z>bGH>3GjCE"GzD,>3GjCE<"GzD,>aI@G@ >3GjCEVG6=3GjCEף@k]>,Akmq>Q.[IQ.[I<>)jYף@k]>,Ak>QHkmq>Q.[I<>QHkIGr>GSt*r>tH>QHkIGr>GSmq>Q.[IGSmq>Q.[IGjCE3KRs˾F.>0Nkc>"Qkq[t>3KRs˾,>uMkF.>0Nkq[t>3KRs˾%*>Mk,>uMkq[t>3KRs˾~'>pMk%*>Mk~'>pMkq[t>3KRs˾g[t3KRs˾g[t3KRs˾~'pMk~'>pMk>?>>?mG> ?> ?>?mG> ?G> ?> ?Gҭ~>c?ҭ~>c?> ?Gҭ~>c?Gҭ~>c?ҭ~>c?G^lA>,?^lA>,?ҭ~>c?G^lA>,?GM΂ ?GM΂ ?hQ?GhQ?GM΂ ?hQ?dlA,?dlA,?Gح~c?ح~c?dlA,?Gح~c?Gح~c?ح~c?G ? ?ح~c?G ?G ? ?G?? ?G?G'N->'N->Gx ݟ=x ݟ='N->Gx ݟ=Gx ݟ=x ݟ=G<<x ݟ=G<G<<Gռռ<GռGռռGx ݟGx ݟx ݟGL-L-x ݟGL-Gx ݟGx ݟռkj> VGLc>_q9~ >`GK `GFc_q9| VGM΂ ?GhY?GhY?hY?M΂ ?M΂ ?GFc_Fc_q9K `GLc>_q9d>_k~ >`GK `G~ >`Gd>_kd>_kFc_K `G>sռG>sռx >؟x >؟x >؟G>sռG>sռG><G><><>sռ>sռG><Gx >؟=Gx >ݟ=x >ݟ=><><GL>->G>?mG>?>>?>L>->L>->GL>-L>-Gx >؟Gx >؟Gx >؟L>-x >ݟ=x >؟=GL>->GL>->GL>->x >ݟ=^lA>,?G`>Y?G`>Y?`>Y?^lA>,?^lA>,?G`>Y?G?΂= ?G?΂= ??΂= ?`>Y?`>Y?G?΂= ??΂= ?GhQ?GhQ?GhQ??΂= ?hY?GdlA,?GdlA,?dlA,?hY?hY?G?G'N->G'N->'N->??GFc_| VGFc_q9| VGFc_L-L-L-G| VGkj> VGd>_kLc>_q9L>-GL>-d>_kd>_kkj> VGL>-Gx >؟=Gx ݟ=G'N->G'N->GL>->Gx >؟=G><G<Gx ݟ=Gx ݟ=Gx >؟=G><G>sռGռG<G<G><G>sռG>sռGx >؟Gx ݟGx ݟGռG>sռGx >؟GL>-GL-GL-Gx ݟGx >؟Gق(?GL>->G'N->G?Gق(?G'N->Gق(?G>?mGL>->G>?mGق(?G> ?G> ?Gق(?Gҭ~>c?Gҭ~>c?Gق(?G^lA>,?G^lA>,?Gق(?G`>Y?G`>Y?Gق(?G?΂= ?G?΂= ?Gق(?GhQ?GhQ?Gق(?GM΂ ?GM΂ ?Gق(?GhY?GhY?Gق(?GdlA,?GdlA,?Gق(?Gح~c?Gح~c?Gق(?G ?G ?Gق(?G?GL>-Gkj> VG| VG| VGL-GL>-GK `G| VGkj> VGkj> VG~ >`GK `Gx >ݟ=L>->'N->'N->x ݟ=x >ݟ=><x >ݟ=x ݟ=x ݟ=<><>sռ><<<ռ>sռ>sռռx ݟx ݟx >؟>sռx >؟x ݟL-L-L>-x >؟L>-L-Fc_Fc_d>_kL>-ق(?v'N->L>->>?>ق(?vL>->ق(?v?'N-> ??ق(?vح~c? ?ق(?vdlA,?ح~c?ق(?vhY?dlA,?ق(?vM΂ ?hY?ق(?vhQ?M΂ ?ق(?v?΂= ?hQ?ق(?v`>Y??΂= ?ق(?v^lA>,?`>Y?ق(?vҭ~>c?^lA>,?ق(?v> ?ҭ~>c?ق(?v>?>> ?ق(?ve]~ ZI~ ZIA`ZIA`e]A`e]~ dIL~ [mF~ ZI~ ZI~ e]~ dIL~ dIL~ dILA`[mFA`[mFA`[mF~ dIL~ dILA`e]A`ZIA`ZIA`[mFA`dILA`dIL~ e]~ e]A`e]A`dILA`dIL~ [mF~ [mFA`ZIA`ZIA`ZI~ [mF~ fI>J~ _m>F~ _m>FA`_m>FA`fI>JA`fI>J~ g>[~ ^>I~ _m>F~ _m>F~ fI>J~ g>[~ g>[A`fI>JA`_m>FA`_m>FA`^>IA`g>[A`g>[~ g>[A`^>IA`^>IA`^>I~ g>[~ ^>I~ ^>IA`_m>FA`_m>FA`_m>F~ ^>I~ Ii>K~ >oY~ >oYA`>oYA`Ii>KA`Ii>K~ E>pP~ ue>^~ ue>^A`ue>^A`E>pPA`E>pP~ >oY~ ue>^~ ue>^A`ue>^A`>oYA`>oY~ Ii>K~ E>pP~ E>pPA`E>pPA`Ii>KA`Ii>K~ Ii>KA`>oYA`ue>^A`ue>^A`E>pPA`Ii>KA`Ii>K~ >oY~ ue>^~ ue>^~ E>pP~ Ii>K~ ke^A`EpPA`IiKA`IiKA` oYA`ke^A`ke^~ EpP~ IiK~ IiK~ oY~ ke^~ oY~ IiK~ IiKA`IiKA` oYA` oY~ ke^~ EpP~ EpPA`EpPA`ke^A`ke^~ EpP~ IiK~ IiKA`IiKA`EpPA`EpP~ ke^~ oY~ oYA` oYA`ke^A`ke^~ g>[~ fI>J~ fI>JA`fI>JA`g>[A`g>[~ 4^z>E|>x@X%x>ƧX%x>ƧE|>x@}>^\%xƧ}^E|x@\%xƧE|x@7^zE|l=}O={T={T=}O=~<E|>l={>T=}>O=ut~H~H{T=uv>7^z$(>7^z$(>uv>\%x c>!E|x@!}^!7^z!7^z!}^!~H#4^z>#}>^#E|>x@|H4^7|7#u>t6^u>Q#s>t6^u>Q>#u>v>#s>v>|u>Qu>ts>tE|>l=||>M={>T=||M=E|l={T=|u>Q>s>v>u>v>農Q-Q農Q農Q--Q農-農農-n-農n-n農n農n-[-n農[-[農[農[-W-[農W-W羲W羲W-il-W羲il-il羲il羲il-8-il羲8-8澲8澲8-͓#-8澲͓#-͓#澲͓#澲͓#-h-͓#澲h-h徲h徲h-P4-h徲P4-P4侲P4侲P4-N@ -P4侲N@ -N@ 㾲N@ 㾲N@ -P -N@ 㾲P -P 㾲P 㾲P -E-P 㾲E-E⾲E⾲E-͓-E⾲͓-͓ᾲ͓ᾲ͓-83-͓ᾲ83-83ྲ83ྲ83-iA-83ྲiA-iAྲiAྲiA-W'߾-iAྲW'߾-W'߾W'߾W'߾-R߾-W'߾R߾-R߾R߾R߾-X߾-R߾X߾-X߾X߾X߾-(޾-X߾(޾-(޾(޾(޾-Qn޾-(޾Qn޾-Qn޾Qn޾Qn޾-(޾-Qn޾(޾-(޾(޾(޾-♾X߾-(޾♾X߾-♾X߾♾X߾♾X߾-R߾-♾X߾R߾-R߾R߾R߾-L'߾-R߾L'߾-L'߾L'߾L'߾-l盾A-L'߾l盾A-l盾Aྲl盾Aྲl盾A-k3-l盾Aྲk3-k3ྲk3ྲk3-՜-k3ྲ՜-՜ᾲ՜ᾲ՜-N#E-՜ᾲN#E-N#E⾲N#E⾲N#E-S -N#E⾲S -S 㾲S 㾲S -c -S 㾲c -c 㾲c 㾲c -S4-c 㾲S4-S4侲S4侲S4-N#h-S4侲N#h-N#h徲N#h徲N#h-՜#-N#h徲՜#-՜#澲՜#澲՜#-k-՜#澲k-k澲k澲k-l盾l-k澲l盾l-l盾l羲l盾l羲l盾l-L-l盾l羲L-L羲L羲L-[-L羲[-[農[農[-♾n-[農♾n-♾n農♾n農♾n--♾n農-農農-Q-N@ -P4-Q -P -N@ -Q -P4-h-Q -E-P -Q -h-͓#-Q -͓-E-Q -͓#-8-Q -83-͓-Q -8-il-Q -iA-83-Q -il-W-Q -W'߾-iA-Q -W-[-Q -R߾-W'߾-Q -[-n-Q -X߾-R߾-Q -n--Q -(޾-X߾-Q --Q-Q -Qn޾-(޾-Q -Q--Q -(޾-Qn޾-Q --♾n-Q -♾X߾-(޾-Q -♾n-[-Q -R߾-♾X߾-Q -[-L-Q -L'߾-R߾-Q -L-l盾l-Q -l盾A-L'߾-Q -l盾l-k-Q -k3-l盾A-Q -k-՜#-Q -՜-k3-Q -՜#-N#h-Q -N#E-՜-Q -N#h-S4-Q -S -N#E-Q -S4-c -Q -c -S -Q -P4侲N@ 㾲Q 㾲N@ 㾲P 㾲Q 㾲h徲P4侲Q 㾲P 㾲E⾲Q 㾲͓#澲h徲Q 㾲E⾲͓ᾲQ 㾲8澲͓#澲Q 㾲͓ᾲ83ྲQ 㾲il羲8澲Q 㾲83ྲiAྲQ 㾲W羲il羲Q 㾲iAྲW'߾Q 㾲[農W羲Q 㾲W'߾R߾Q 㾲n農[農Q 㾲R߾X߾Q 㾲農n農Q 㾲X߾(޾Q 㾲Q農農Q 㾲(޾Qn޾Q 㾲農Q農Q 㾲Qn޾(޾Q 㾲♾n農農Q 㾲(޾♾X߾Q 㾲[農♾n農Q 㾲♾X߾R߾Q 㾲L羲[農Q 㾲R߾L'߾Q 㾲l盾l羲L羲Q 㾲L'߾l盾AྲQ 㾲k澲l盾l羲Q 㾲l盾Aྲk3ྲQ 㾲՜#澲k澲Q 㾲k3ྲ՜ᾲQ 㾲N#h徲՜#澲Q 㾲՜ᾲN#E⾲Q 㾲S4侲N#h徲Q 㾲N#E⾲S 㾲Q 㾲c 㾲S4侲Q 㾲S 㾲c 㾲Q 㾲hr#GG#GhG9u}~hrGh9uG& 9u}~G9u&HmGi5& G&HmirG8i5Gir8G]*t8G8\SGY ]*tG\SXG3ZY GX3Gm*3ZG3mPGo|m*GmPG]ׯ*o|G\ׯPGqZ]ׯ*G\ׯPpGV qZGpV G*tV GV SG *tGS G5 G qGx 5GqxGmG#ѫ|~x GxGm#ѫGq#ѫ|~G#ѫGꐫGqGꐫGG#G-hr-G-h-#G-G-hr-9u}~-G-9u-h-G-9u}~-& -G-&Hm-9u-G-& -i5-G-ir-&Hm-G-i5-8-G-8-ir-G-8-]*t-G-\S-8-G-]*t-Y -G-X-\S-G-Y -3Z-G-3-X-G-3Z-m*-G-mP-3-G-m*-o|-G--mP-G-o|-]ׯ*-G-\ׯP--G-]ׯ*-qZ-G-p-\ׯP-G-qZ-V -G-V -p-G-V -*t-G-S-V -G-*t- -G- -S-G- -5-G-q- -G-5-x -G-xGm-q-G-x -#ѫ|~-G-#ѫ-xGm-G-#ѫ|~-q-G--#ѫ-G-q-ꐫG-G-ꐫG--G-mPmP--3mP-mP33-mP-X3-3XX-3-\SX-X\S\S-X-8\S-\S88-\S-ir8-8irir-8-&Hmir-ir&Hm&Hm-ir-9u&Hm-&Hm9u9u-&Hm-h9u-9uhh-9u-#Gh-h#G#G-h-hr#G-#Ghrhr-#G-9u}~hr-hr9u}~9u}~-hr-& 9u}~-9u}~& & -9u}~-i5& -& i5i5-& -8i5-i588-i5-]*t8-8]*t]*t-8-Y ]*t-]*tY Y -]*t-3ZY -Y 3Z3Z-Y -m*3Z-3Zm*m*-3Z-o|m*-m*o|o|-m*-]ׯ*o|-o|]ׯ*]ׯ*-o|-qZ]ׯ*-]ׯ*qZqZ-]ׯ*-V qZ-qZV V -qZ-*tV -V *t*t-V - *t-*t  -*t-5 - 55- -x 5-5x x -5-#ѫ|~x -x #ѫ|~#ѫ|~-x -q#ѫ|~-#ѫ|~qq-#ѫ|~-ꐫGq-qꐫGꐫG-q-ꐫG-ꐫG-ꐫG-#ѫ-#ѫ#ѫ--xGm#ѫ-#ѫxGmxGm-#ѫ-qxGm-xGmqq-xGm- q-q  -q-S - SS- -V S-SV V -S-pV -V pp-V -\ׯPp-p\ׯP\ׯP-p-\ׯP-\ׯP-\ׯP-mP-⠄ԲUՃU-ՃUՃUՃU- ԲU-ՃU ԲU- ԲU ԲU ԲU-DU-懁sUڀ>U-ڀ>Uڀ>Uڀ>U-8@T-ڀ>U8@T-8@T8@T8@T-wMT-8@TwMT-wMTwMTwMT-T~XT-wMTT~XT-T~XTT~XTT~XT- ~nS-T~XT ~nS- ~nS ~nS ~nS-}xS- ~nS}xS-}xS}xS}xS-7}1S-}xS7}1S-7}1S7}1S7}1S-}NR-7}1S}NR-}NR}NR}NR- ~XiR-}NR ~XiR- ~XiR ~XiR ~XiR-T~ R- ~XiRT~ R-T~ RT~ RT~ R-wwQ-T~ RwwQ-wwQwwQwwQ-8@#gQ-wwQ8@#gQ-8@#gQ8@#gQ8@#gQ-ڀ$Q-8@#gQڀ$Q-ڀ$Qڀ$Qڀ$Q-懁P-ڀ$Q懁P-懁P懁P懁P-D2P-懁PD2P-D2PD2PD2P- P-D2P P- P P P-ՃP- PՃP-ՃPՃPՃP-⠄P-ՃP⠄P-⠄P⠄P⠄P-f2P-⠄Pf2P-f2Pf2Pf2P-<"P-f2P<"P-<"P<"P<"P-І$Q-<"PІ$Q-І$QІ$QІ$Q-:k#gQ-І$Q:k#gQ-:k#gQ:k#gQ:k#gQ-wQ-:k#gQwQ-wQwQwQ-Y R-wQY R-Y RY RY R-XiR-Y RXiR-XiRXiRXiR-׈NR-XiR׈NR-׈NR׈NR׈NR-V爾1S-׈NRV爾1S-V爾1SV爾1SV爾1S-׈xS-V爾1S׈xS-׈xS׈xS׈xS-nS-׈xSnS-nSnSnS-YXT-nSYXT-YXTYXTYXT-MT-YXTMT-MTMTMT-:kT-MT:kT-:kT:kT:kT-І>U-:kTІ>U-І>UІ>UІ>U-<"sU-І>U<"sU-<"sU<"sU<"sU-fU-Ճ1S-ڀ$Q-8@#gQ-Ճ1S-ڀ>U-懁sU-Ճ1S-懁P-ڀ$Q-Ճ1S-懁sU-DU-Ճ1S-І$Q-<"P-Ճ1S-І>U-:kT-Ճ1S-:k#gQ-І$Q-Ճ1S-:kT-MT-Ճ1S-wQ-:k#gQ-Ճ1S-MT-YXT-Ճ1S-Y R-wQ-Ճ1S-YXT-nS-Ճ1S-XiR-Y R-Ճ1S-nS-׈xS-Ճ1S-׈NR-XiR-Ճ1S-׈xS-V爾1S-Ճ1S-V爾1S-׈NR-Ճ1S-}xS7}1SՃ1S7}1S}NRՃ1S ~nS}xSՃ1S}NR ~XiRՃ1ST~XT ~nSՃ1S ~XiRT~ RՃ1SwMTT~XTՃ1ST~ RwwQՃ1S8@TwMTՃ1SwwQ8@#gQՃ1Sڀ>U8@TՃ1S8@#gQڀ$QՃ1S懁sUڀ>UՃ1Sڀ$Q懁PՃ1SDU<"sUՃ1S<"PІ$QՃ1S:kTІ>UՃ1SІ$Q:k#gQՃ1SMT:kTՃ1S:k#gQwQՃ1SYXTMTՃ1SwQY RՃ1SnSYXTՃ1SY RXiRՃ1S׈xSnSՃ1SXiR׈NRՃ1SV爾1S׈xSՃ1S׈NRV爾1SՃ1S,V[3Y?VYLY?VY,VYLYtVgX,V[3YLY,VYtV`ZLY!U rXtVgXLYtV`Z!U2ZLY-UX!U rXLY!U2Z-U[LYS1W-UXLY-U[Sc[LYRWS1WLYSc[R;[LY kQBVWRWLYR;[ kQ[LYO/W kQBVWLY kQ[O\LYeNWO/WLYO\eN:\LYL"WeNWLYeN:\L!\LY;KWL"WLYL!\;K:\LYܯI/W;KWLY;K:\ܯI\LY`6HBVWܯI/WLYܯI\`6H[LYXFW`6HBVWLY`6H[XF;[LYE1WXFWLYXF;[Ec[LY@DXE1WLYEc[@D[LYKC rX@DXLY@D[KC2ZLY,CgXKC rXLYKC2Z,C`ZLYAB[3Y,CgXLY,C`ZABYLY̮BYAB[3YLYABY̮BYLY?VY-,V[3Y-LY-,VY-?VY-LY-,V[3Y-tVgX-LY-tV`Z-,VY-LY-tVgX-!U rX-LY-!U2Z-tV`Z-LY-!U rX--UX-LY--U[-!U2Z-LY--UX-S1W-LY-Sc[--U[-LY-S1W-RW-LY-R;[-Sc[-LY-RW- kQBVW-LY- kQ[-R;[-LY- kQBVW-O/W-LY-O\- kQ[-LY-O/W-eNW-LY-eN:\-O\-LY-eNW-L"W-LY-L!\-eN:\-LY-L"W-;KW-LY-;K:\-L!\-LY-;KW-ܯI/W-LY-ܯI\-;K:\-LY-ܯI/W-`6HBVW-LY-`6H[-ܯI\-LY-`6HBVW-XFW-LY-XF;[-`6H[-LY-XFW-E1W-LY-Ec[-XF;[-LY-E1W-@DX-LY-@D[-Ec[-LY-@DX-KC rX-LY-KC2Z-@D[-LY-KC rX-,CgX-LY-,C`Z-KC2Z-LY-,CgX-AB[3Y-LY-ABY-,C`Z-LY-AB[3Y-̮BY-LY-̮BY-ABY-LY-eN:\eN:\-L!\-O\eN:\-eN:\O\O\-eN:\- kQ[O\-O\ kQ[ kQ[-O\-R;[ kQ[- kQ[R;[R;[- kQ[-Sc[R;[-R;[Sc[Sc[-R;[--U[Sc[-Sc[-U[-U[-Sc[-!U2Z-U[--U[!U2Z!U2Z--U[-tV`Z!U2Z-!U2ZtV`ZtV`Z-!U2Z-,VYtV`Z-tV`Z,VY,VY-tV`Z-?VY,VY-,VY?VY?VY-,VY-,V[3Y?VY-?VY,V[3Y,V[3Y-?VY-tVgX,V[3Y-,V[3YtVgXtVgX-,V[3Y-!U rXtVgX-tVgX!U rX!U rX-tVgX--UX!U rX-!U rX-UX-UX-!U rX-S1W-UX--UXS1WS1W--UX-RWS1W-S1WRWRW-S1W- kQBVWRW-RW kQBVW kQBVW-RW-O/W kQBVW- kQBVWO/WO/W- kQBVW-eNWO/W-O/WeNWeNW-O/W-L"WeNW-eNWL"WL"W-eNW-;KWL"W-L"W;KW;KW-L"W-ܯI/W;KW-;KWܯI/WܯI/W-;KW-`6HBVWܯI/W-ܯI/W`6HBVW`6HBVW-ܯI/W-XFW`6HBVW-`6HBVWXFWXFW-`6HBVW-E1WXFW-XFWE1WE1W-XFW-@DXE1W-E1W@DX@DX-E1W-KC rX@DX-@DXKC rXKC rX-@DX-,CgXKC rX-KC rX,CgX,CgX-KC rX-AB[3Y,CgX-,CgXAB[3YAB[3Y-,CgX-̮BYAB[3Y-AB[3Y̮BY̮BY-AB[3Y-ABY̮BY-̮BYABYABY-̮BY-,C`ZABY-ABY,C`Z,C`Z-ABY-KC2Z,C`Z-,C`ZKC2ZKC2Z-,C`Z-@D[KC2Z-KC2Z@D[@D[-KC2Z-Ec[@D[-@D[Ec[Ec[-@D[-XF;[Ec[-Ec[XF;[XF;[-Ec[-`6H[XF;[-XF;[`6H[`6H[-XF;[-ܯI\`6H[-`6H[ܯI\ܯI\-`6H[-;K:\ܯI\-ܯI\;K:\;K:\-ܯI\-L!\;K:\-;K:\L!\L!\-;K:\-eN:\L!\-L!\~6K>:\L>!\-L>!\L>!\L>!\-%cN>:\-L>!\%cN>:\-%cN>:\%cN>:\%cN>:\-O>\-%cN>:\O>\-O>\O>\O>\-eQ>P[-O>\eQ>P[-eQ>P[eQ>P[eQ>P[-~R>;[-eQ>P[~R>;[-~R>;[~R>;[~R>;[-S> c[-~R>;[S> c[-S> c[S> c[S> c[-U>[-S> c[U>[-U>[U>[U>[-U>2Z-U>[U>2Z-U>2ZU>2ZU>2Z-oV>`Z-U>2ZoV>`Z-oV>`ZoV>`ZoV>`Z-V>Y-oV>`ZV>Y-V>YV>YV>Y- V>IY-V>Y V>IY- V>IY V>IY V>IY-V>2Y- V>IYV>2Y-V>2YV>2YV>2Y-oV>X-V>2YoV>X-oV>XoV>XoV>X-U> rX-oV>XU> rX-U> rXU> rXU> rX-U>X-U> rXU>X-U>XU>XU>X-S>W-U>XS>W-S>WS>WS>W-~R>XW-S>W~R>XW-~R>XW~R>XW~R>XW-eQ>BVW-~R>XWeQ>BVW-eQ>BVWeQ>BVWeQ>BVW-O>/W-eQ>BVWO>/W-O>/WO>/WO>/W-%cN>W-O>/W%cN>W-%cN>W%cN>W%cN>W-L>{W-%cN>WL>{W-L>{WL>{WL>{W-~6K>W-L>{W~6K>W-~6K>W~6K>W~6K>W-I>/W-~6K>WI>/W-I>/WI>/WI>/W-,1H>BVW-I>/W,1H>BVW-,1H>BVW,1H>BVW,1H>BVW-#F>XW-,1H>BVW#F>XW-#F>XW#F>XW#F>XW-СE>W-#F>XWСE>W-СE>WСE>WСE>W- D>X-СE>W D>X- D>X D>X D>X-C> rX- D>XC> rX-C> rXC> rXC> rX-l'C>X-C> rXl'C>X-l'C>Xl'C>Xl'C>X- B>2Y-l'C>X B>2Y- B>2Y B>2Y B>2Y-B>IY- B>2YB>IY-B>IYB>IYB>IY- B>Y-B>IY B>Y- B>Y B>Y B>Y-l'C>`Z- B>Yl'C>`Z-l'C>`Zl'C>`Zl'C>`Z-C>2Z-l'C>`ZC>2Z-C>2ZC>2ZC>2Z- D>[-C>2Z D>[- D>[ D>[ D>[-СE> c[- D>[СE> c[-СE> c[СE> c[СE> c[-#F>;[-СE> c[#F>;[-#F>;[#F>;[#F>;[-,1H>P[-#F>;[,1H>P[-,1H>P[,1H>P[,1H>P[-I>\-,1H>P[I>\-I>\I>\I>\-~6K>:\-I>\~6K>:\-~6K>:\~6K>:\~6K>:\-L>!\- V>IY-V>Y-L>IY-V>2Y- V>IY-L>IY-V>Y-oV>`Z-L>IY-oV>X-V>2Y-L>IY-oV>`Z-U>2Z-L>IY-U> rX-oV>X-L>IY-U>2Z-U>[-L>IY-U>X-U> rX-L>IY-U>[-S> c[-L>IY-S>W-U>X-L>IY-S> c[-~R>;[-L>IY-~R>XW-S>W-L>IY-~R>;[-eQ>P[-L>IY-eQ>BVW-~R>XW-L>IY-eQ>P[-O>\-L>IY-O>/W-eQ>BVW-L>IY-O>\-%cN>:\-L>IY-%cN>W-O>/W-L>IY-%cN>:\-L>!\-L>IY-L>{W-%cN>W-L>IY-L>!\-~6K>:\-L>IY-~6K>W-L>{W-L>IY-~6K>:\-I>\-L>IY-I>/W-~6K>W-L>IY-I>\-,1H>P[-L>IY-,1H>BVW-I>/W-L>IY-,1H>P[-#F>;[-L>IY-#F>XW-,1H>BVW-L>IY-#F>;[-СE> c[-L>IY-СE>W-#F>XW-L>IY-СE> c[- D>[-L>IY- D>X-СE>W-L>IY- D>[-C>2Z-L>IY-C> rX- D>X-L>IY-C>2Z-l'C>`Z-L>IY-l'C>X-C> rX-L>IY-l'C>`Z- B>Y-L>IY- B>2Y-l'C>X-L>IY- B>Y-B>IY-L>IY-B>IY- B>2Y-L>IY-V>Y V>IYL>IY V>IYV>2YL>IYoV>`ZV>YL>IYV>2YoV>XL>IYU>2ZoV>`ZL>IYoV>XU> rXL>IYU>[U>2ZL>IYU> rXU>XL>IYS> c[U>[L>IYU>XS>WL>IY~R>;[S> c[L>IYS>W~R>XWL>IYeQ>P[~R>;[L>IY~R>XWeQ>BVWL>IYO>\eQ>P[L>IYeQ>BVWO>/WL>IY%cN>:\O>\L>IYO>/W%cN>WL>IYL>!\%cN>:\L>IY%cN>WL>{WL>IY~6K>:\L>!\L>IYL>{W~6K>WL>IYI>\~6K>:\L>IY~6K>WI>/WL>IY,1H>P[I>\L>IYI>/W,1H>BVWL>IY#F>;[,1H>P[L>IY,1H>BVW#F>XWL>IYСE> c[#F>;[L>IY#F>XWСE>WL>IY D>[СE> c[L>IYСE>W D>XL>IYC>2Z D>[L>IY D>XC> rXL>IYl'C>`ZC>2ZL>IYC> rXl'C>XL>IY B>Yl'C>`ZL>IYl'C>X B>2YL>IYB>IY B>YL>IY B>2YB>IYL>IY}>RA}>4SՃ>4SA}>4S}>SՃ>4S~>kR}>RՃ>4S}>S~> SՃ>4S^~> R~>kRՃ>4S~> S^~>ZTՃ>4Sw>Q^~> RՃ>4S^~>ZTw>TՃ>4S<@>iQw>QՃ>4Sw>T<@>BTՃ>4Sڀ>'Q<@>iQՃ>4S<@>BTڀ>sAUՃ>4Sꇁ>zPڀ>'QՃ>4Sڀ>sAUꇁ>vUՃ>4SD>)Pꇁ>zPՃ>4Sꇁ>vUD>4UՃ>4S >PD>)PՃ>4SD>4U >̴UՃ>4SՃ>P >PՃ>4S >̴UՃ>QUՃ>4S栄>PՃ>PՃ>4SՃ>QU栄>̴UՃ>4Sf>)P栄>PՃ>4S栄>̴Uf>4UՃ>4S@">zPf>)PՃ>4Sf>4U@">vUՃ>4SІ>'Q@">zPՃ>4S@">vUІ>sAUՃ>4S>k>iQІ>'QՃ>4SІ>sAU>k>BTՃ>4S>Q>k>iQՃ>4S>k>BT>TՃ>4SY> R>QՃ>4S>TY>ZTՃ>4S >kRY> RՃ>4SY>ZT > SՃ>4S׈>R >kRՃ>4S > S׈>SՃ>4SZ>4S׈>RՃ>4S׈>SZ>4SՃ>4SA}>4S-}>R-Ճ>4S-}>S-A}>4S-Ճ>4S-}>R-~>kR-Ճ>4S-~> S-}>S-Ճ>4S-~>kR-^~> R-Ճ>4S-^~>ZT-~> S-Ճ>4S-^~> R-w>Q-Ճ>4S-w>T-^~>ZT-Ճ>4S-w>Q-<@>iQ-Ճ>4S-<@>BT-w>T-Ճ>4S-<@>iQ-ڀ>'Q-Ճ>4S-ڀ>sAU-<@>BT-Ճ>4S-ڀ>'Q-ꇁ>zP-Ճ>4S-ꇁ>vU-ڀ>sAU-Ճ>4S-ꇁ>zP-D>)P-Ճ>4S-D>4U-ꇁ>vU-Ճ>4S-D>)P- >P-Ճ>4S- >̴U-D>4U-Ճ>4S- >P-Ճ>P-Ճ>4S-Ճ>QU- >̴U-Ճ>4S-Ճ>P-栄>P-Ճ>4S-栄>̴U-Ճ>QU-Ճ>4S-栄>P-f>)P-Ճ>4S-f>4U-栄>̴U-Ճ>4S-f>)P-@">zP-Ճ>4S-@">vU-f>4U-Ճ>4S-@">zP-І>'Q-Ճ>4S-І>sAU-@">vU-Ճ>4S-І>'Q->k>iQ-Ճ>4S->k>BT-І>sAU-Ճ>4S->k>iQ->Q-Ճ>4S->T->k>BT-Ճ>4S->Q-Y> R-Ճ>4S-Y>ZT->T-Ճ>4S-Y> R- >kR-Ճ>4S- > S-Y>ZT-Ճ>4S- >kR-׈>R-Ճ>4S-׈>S- > S-Ճ>4S-׈>R-Z>4S-Ճ>4S-Z>4S-׈>S-Ճ>4S- >̴U >̴U-Ճ>QU-D>4U >̴U- >̴UD>4UD>4U- >̴U-ꇁ>vUD>4U-D>4Uꇁ>vUꇁ>vU-D>4U-ڀ>sAUꇁ>vU-ꇁ>vUڀ>sAUڀ>sAU-ꇁ>vU-<@>BTڀ>sAU-ڀ>sAU<@>BT<@>BT-ڀ>sAU-w>T<@>BT-<@>BTw>Tw>T-<@>BT-^~>ZTw>T-w>T^~>ZT^~>ZT-w>T-~> S^~>ZT-^~>ZT~> S~> S-^~>ZT-}>S~> S-~> S}>S}>S-~> S-A}>4S}>S-}>SA}>4SA}>4S-}>S-}>RA}>4S-A}>4S}>R}>R-A}>4S-~>kR}>R-}>R~>kR~>kR-}>R-^~> R~>kR-~>kR^~> R^~> R-~>kR-w>Q^~> R-^~> Rw>Qw>Q-^~> R-<@>iQw>Q-w>Q<@>iQ<@>iQ-w>Q-ڀ>'Q<@>iQ-<@>iQڀ>'Qڀ>'Q-<@>iQ-ꇁ>zPڀ>'Q-ڀ>'Qꇁ>zPꇁ>zP-ڀ>'Q-D>)Pꇁ>zP-ꇁ>zPD>)PD>)P-ꇁ>zP- >PD>)P-D>)P >P >P-D>)P-Ճ>P >P- >PՃ>PՃ>P- >P-栄>PՃ>P-Ճ>P栄>P栄>P-Ճ>P-f>)P栄>P-栄>Pf>)Pf>)P-栄>P-@">zPf>)P-f>)P@">zP@">zP-f>)P-І>'Q@">zP-@">zPІ>'QІ>'Q-@">zP->k>iQІ>'Q-І>'Q>k>iQ>k>iQ-І>'Q->Q>k>iQ->k>iQ>Q>Q->k>iQ-Y> R>Q->QY> RY> R->Q- >kRY> R-Y> R >kR >kR-Y> R-׈>R >kR- >kR׈>R׈>R- >kR-Z>4S׈>R-׈>RZ>4SZ>4S-׈>R-׈>SZ>4S-Z>4S׈>S׈>S-Z>4S- > S׈>S-׈>S > S > S-׈>S-Y>ZT > S- > SY>ZTY>ZT- > S->TY>ZT-Y>ZT>T>T-Y>ZT->k>BT>T->T>k>BT>k>BT->T-І>sAU>k>BT->k>BTІ>sAUІ>sAU->k>BT-@">vUІ>sAU-І>sAU@">vU@">vU-І>sAU-f>4U@">vU-@">vUf>4Uf>4U-@">vU-栄>̴Uf>4U-f>4U栄>̴U栄>̴U-f>4U-Ճ>QU栄>̴U-栄>̴UՃ>QUՃ>QU-栄>̴U- >̴UՃ>QU-Ճ>QUٯ>)>{-)>{)>{)>{-o>-)>{o>-o>o>o>-4>-o>4>-4>4>4>->-4>>->>>->T->>T->T>T>T-:>m->T:>m-:>m:>m:>m->-:>m>->>>-6)>n->6)>n-6)>n6)>n6)>n-v>7-6)>nv>7-v>7v>7v>7->A-v>7>A->A>A>A-ö>G->Aö>G-ö>Gö>Gö>G->-ö>G>->>>-v>"->v>"-v>"v>"v>"-6)>k!-v>"6)>k!-6)>k!6)>k!6)>k!->-6)>k!>->>>-:>->:>-:>:>:>->wu-:>>wu->wu>wu>wu->M ->wu>M ->M >M >M -4>->M 4>-4>4>4>-o>x-4>o>x-o>xo>xo>x-(>}-o>x(>}-(>}(>}(>}-ٯ>x-(>}ٯ>x-ٯ>xٯ>xٯ>x->-ٯ>x>->>>-UW>M ->UW>M -UW>M UW>M UW>M -Q>wu-UW>M Q>wu-Q>wuQ>wuQ>wu->-Q>wu>->>>-E>->E>-E>E>E>->l!-E>>l!->l!>l!>l!-uҫ>#->l!uҫ>#-uҫ>#uҫ>#uҫ>#-E>-uҫ>#E>-E>E>E>->G-E>>G->G>G>G-E>B->GE>B-E>BE>BE>B-uҫ>8-E>Buҫ>8-uҫ>8uҫ>8uҫ>8->n-uҫ>8>n->n>n>n-E>->nE>-E>E>E>->n-E>>n->n>n>n-R>T->nR>T-R>TR>TR>T-VW>-R>TVW>-VW>VW>VW>->-VW>>->>>-ٯ>->ٯ>-ٯ>ٯ>ٯ>-)>{-ö>G->A-(>G->-ö>G-(>G->A-v>7-(>G-v>"->-(>G-v>7-6)>n-(>G-6)>k!-v>"-(>G-6)>n->-(>G->-6)>k!-(>G->-:>m-(>G-:>->-(>G-:>m->T-(>G->wu-:>-(>G->T->-(>G->M ->wu-(>G->-4>-(>G-4>->M -(>G-4>-o>-(>G-o>x-4>-(>G-o>-)>{-(>G-(>}-o>x-(>G-)>{-ٯ>-(>G-ٯ>x-(>}-(>G-ٯ>->-(>G->-ٯ>x-(>G->-VW>-(>G-UW>M ->-(>G-VW>-R>T-(>G-Q>wu-UW>M -(>G-R>T->n-(>G->-Q>wu-(>G->n-E>-(>G-E>->-(>G-E>->n-(>G->l!-E>-(>G->n-uҫ>8-(>G-uҫ>#->l!-(>G-uҫ>8-E>B-(>G-E>-uҫ>#-(>G-E>B->G-(>G->G-E>-(>G->Aö>G(>Gö>G>(>Gv>7>A(>G>v>"(>G6)>nv>7(>Gv>"6)>k!(>G>6)>n(>G6)>k!>(>G:>m>(>G>:>(>G>T:>m(>G:>>wu(>G>>T(>G>wu>M (>G4>>(>G>M 4>(>Go>4>(>G4>o>x(>G)>{o>(>Go>x(>}(>Gٯ>)>{(>G(>}ٯ>x(>G>ٯ>(>Gٯ>x>(>GVW>>(>G>UW>M (>GR>TVW>(>GUW>M Q>wu(>G>nR>T(>GQ>wu>(>GE>>n(>G>E>(>G>nE>(>GE>>l!(>Guҫ>8>n(>G>l!uҫ>#(>GE>Buҫ>8(>Guҫ>#E>(>G>GE>B(>GE>>G(>GYQ> 㾲A> 㾲 㾲A> 㾲YQ>2侲 㾲>E⾲YQ> 㾲 㾲YQ>2侲>h徲 㾲.ϓ>6ᾲ>E⾲ 㾲>h徲.ϓ>#澲 㾲Y9>1ྲ.ϓ>6ᾲ 㾲.ϓ>#澲Y9>澲 㾲>AྲY9>1ྲ 㾲Y9>澲>l羲 㾲dX>%߾>Aྲ 㾲>l羲dX>羲 㾲i>R߾dX>%߾ 㾲dX>羲i>[農 㾲(–>V߾i>R߾ 㾲i>[農(–>l農 㾲>&޾(–>V߾ 㾲(–>l農>農 㾲l޾>&޾ 㾲>農農 㾲e>&޾l޾ 㾲農e>農 㾲P>V߾e>&޾ 㾲e>農P>l農 㾲>R߾P>V߾ 㾲P>l農>[農 㾲N>%߾>R߾ 㾲>[農N>羲 㾲>AྲN>%߾ 㾲N>羲>l羲 㾲m>1ྲ>Aྲ 㾲>l羲m>澲 㾲Jל>6ᾲm>1ྲ 㾲m>澲Jל>#澲 㾲$>E⾲Jל>6ᾲ 㾲Jל>#澲$>h徲 㾲U> 㾲$>E⾲ 㾲$>h徲U>2侲 㾲d> 㾲U> 㾲 㾲U>2侲d> 㾲 㾲A> -YQ> - -YQ>2-A> - -YQ> ->E- ->h-YQ>2- ->E-.ϓ>6- -.ϓ>#->h- -.ϓ>6-Y9>1- -Y9>-.ϓ>#- -Y9>1->A- ->l-Y9>- ->A-dX>%߾- -dX>->l- -dX>%߾-i>R߾- -i>[-dX>- -i>R߾-(–>V߾- -(–>l-i>[- -(–>V߾->&޾- ->-(–>l- ->&޾-l޾- -->- -l޾-e>&޾- -e>-- -e>&޾-P>V߾- -P>l-e>- -P>V߾->R߾- ->[-P>l- ->R߾-N>%߾- -N>->[- -N>%߾->A- ->l-N>- ->A-m>1- -m>->l- -m>1-Jל>6- -Jל>#-m>- -Jל>6-$>E- -$>h-Jל>#- -$>E-U> - -U>2-$>h- -U> -d> - -d> -U>2- ->農>--(–>l農>->農(–>l農(–>l->-i>[農(–>l-(–>l農i>[農i>[-(–>l-dX>羲i>[-i>[農dX>羲dX>-i>[->l羲dX>-dX>羲>l羲>l-dX>-Y9>澲>l->l羲Y9>澲Y9>->l-.ϓ>#澲Y9>-Y9>澲.ϓ>#澲.ϓ>#-Y9>->h徲.ϓ>#-.ϓ>#澲>h徲>h-.ϓ>#-YQ>2侲>h->h徲YQ>2侲YQ>2->h-A> 㾲YQ>2-YQ>2侲A> 㾲A> -YQ>2-YQ> 㾲A> -A> 㾲YQ> 㾲YQ> -A> ->E⾲YQ> -YQ> 㾲>E⾲>E-YQ> -.ϓ>6ᾲ>E->E⾲.ϓ>6ᾲ.ϓ>6->E-Y9>1ྲ.ϓ>6-.ϓ>6ᾲY9>1ྲY9>1-.ϓ>6->AྲY9>1-Y9>1ྲ>Aྲ>A-Y9>1-dX>%߾>A->AྲdX>%߾dX>%߾->A-i>R߾dX>%߾-dX>%߾i>R߾i>R߾-dX>%߾-(–>V߾i>R߾-i>R߾(–>V߾(–>V߾-i>R߾->&޾(–>V߾-(–>V߾>&޾>&޾-(–>V߾-l޾>&޾->&޾l޾l޾->&޾-e>&޾l޾-l޾e>&޾e>&޾-l޾-P>V߾e>&޾-e>&޾P>V߾P>V߾-e>&޾->R߾P>V߾-P>V߾>R߾>R߾-P>V߾-N>%߾>R߾->R߾N>%߾N>%߾->R߾->AྲN>%߾-N>%߾>Aྲ>A-N>%߾-m>1ྲ>A->Aྲm>1ྲm>1->A-Jל>6ᾲm>1-m>1ྲJל>6ᾲJל>6-m>1-$>E⾲Jל>6-Jל>6ᾲ$>E⾲$>E-Jל>6-U> 㾲$>E-$>E⾲U> 㾲U> -$>E-d> 㾲U> -U> 㾲d> 㾲d> -U> -U>2侲d> -d> 㾲U>2侲U>2-d> -$>h徲U>2-U>2侲$>h徲$>h-U>2-Jל>#澲$>h-$>h徲Jל>#澲Jל>#-$>h-m>澲Jל>#-Jל>#澲m>澲m>-Jל>#->l羲m>-m>澲>l羲>l-m>-N>羲>l->l羲N>羲N>->l->[農N>-N>羲>[農>[-N>-P>l農>[->[農P>l農P>l->[-e>農P>l-P>l農e>農e>-P>l-農e>-e>農農-e>->農-農|(<|H~H~H~(<|(<|uQ>uv>s>v>s>v>|u>Q>|uQ>|>(<~>(<~>H~>H|>H|>(<|uQ|u>Qs>ts>tut|uQ!~4^uQ>6^u>Q>6^u>Q>#s>v>!uv>#~>(<6^>(<6^>H6^>H#~>H#~>(t6^u>Q6^u>Q4^uQ!ut#~>H#u>t#s>t|u>Qs>t~>HX%x> c>}>O=4^z>$(>4^z>$(>}>O={>T=#X%x> c>#4^z>$(>#}>O=#4^z>$(>#E|>l=#}>O=!\%x c>!}O=!7^z$(>!7^z$(>!}O=!E|l=#s>v>#~>(<#~>H#~>H#s>t#s>v>s>v>s>t~>H~>H~>(<s>v>uv>~(<~H~Hutuv>!uv>!ut4^74^7!~!uv>#s>v>#s>t#s>t!ut!uv>uv>uts>ts>ts>v>uv>4^uQ>!uv>!\%x c>!\%x c>4^ix >4^uQ>4^ix >!\%x c>!7^z$(>!7^z$(>4^Iz`>4^ix >#u>v>6^u>Q>6^ix> >6^ix> >#X%x> c>#u>v>4^Iz`>!7^z$(>!E|l=!E|l=4^|M=4^Iz`>#X%x> c>6^ix> >6^Ez>`>6^Ez>`>#4^z>$(>#X%x> c>#4^z>$(>6^Ez>`>6^|>M=6^|>M=#E|>l=#4^z>$(>4^~p=4^|M=!E|l=!E|l=!}O=4^~p=#E|>l=6^|>M=6^~>p=6^~>p=#}>O=#E|>l=6^ݦ><#~><#}>O=#}>O=6^~>p=6^ݦ><6^>(<#~>(<#~><#~><6^ݦ><6^>(<#u>t#~>H#~>H#~>H#X%x>Ƨ#u>t!7^z!~H!ut!ut!\%xƧ!7^z4^7!~H!}^!}^4^~4^7#X%x>Ƨ#~>H#}>^#}>^#4^z>#X%x>Ƨ6^ݦ>7#~>H#~>H#~>H6^>H6^ݦ>74^~!}^!E|x@!E|x@4^|4^~6^~>#}>^#~>H#~>H6^ݦ>76^~>4^|!E|x@!7^z!7^z4^Iz4^|6^|>#E|>x@#}>^#}>^6^~>6^|>4^Iz!7^z!\%xƧ!\%xƧ4^ix4h4^Iz6^Ez>#4^z>#E|>x@#E|>x@6^|>6^Ez>4^ix4h!\%xƧ!ut!ut4^uQ4^ix4h6^ix>4h#X%x>Ƨ#4^z>#4^z>6^Ez>6^ix>4h6^u>Q#u>t#X%x>Ƨ#X%x>Ƨ6^ix>4h6^u>Q4^uQ>|uQ>|u>Q>|u>Q>6^u>Q>4^uQ>6^ix> >6^u>Q>|u>Q>|u>Q>|ix> >6^ix> >4^uQ>4^ix >|ix >|ix >|uQ>4^uQ>6^Ez>`>6^ix> >|ix> >|ix> >|Ez>`>6^Ez>`>4^ix >4^Iz`>|Iz`>|Iz`>|ix >4^ix >6^|>M=6^Ez>`>|Ez>`>|Ez>`>||>M=6^|>M=4^Iz`>4^|M=||M=||M=|Iz`>4^Iz`>6^~>p=6^|>M=||>M=||>M=|~>p=6^~>p=4^|M=4^~p=|~p=|~p=||M=4^|M=6^ݦ><6^~>p=|~>p=|~>p=|ݦ><6^ݦ><4^~p=4^<|<|<|~p=4^~p=6^>(<6^ݦ><|ݦ><|ݦ><|>(<6^>(<6^>(<|>(<|>H|>H6^>H6^>(<6^ݦ>76^>H|>H|>H|ݦ>76^ݦ>76^~>6^ݦ>7|ݦ>7|ݦ>7|~>6^~>4^74^~|~|~|74^76^|>6^~>|~>|~>||>6^|>4^~4^||||||~4^~6^Ez>6^|>||>||>|Ez>6^Ez>4^|4^Iz|Iz|Iz||4^|6^ix>4h6^Ez>|Ez>|Ez>|ix>4h6^ix>4h4^Iz4^ix4h|ix4h|ix4h|Iz4^Iz6^u>Q6^ix>4h|ix>4h|ix>4h|u>Q6^u>Q4^ix4h4^uQ|uQ|uQ|ix4h4^ix4h6^u>Q|u>Q|uQ|uQ4^uQ6^u>Quv>|uQ>|ix >|ix >\%x c>uv>\%x c>|ix >|Iz`>|Iz`>7^z$(>\%x c>|u>Q>u>v>X%x> c>X%x> c>|ix> >|u>Q>7^z$(>|Iz`>||M=||M={T=7^z$(>|ix> >X%x> c>4^z>$(>4^z>$(>|Ez>`>|ix> >||>M=|Ez>`>4^z>$(>4^z>$(>{>T=||>M=|~p=}O=E|l=E|l=||M=|~p=|<~<}O=}O=|~p=|<}>O=|~>p=||>M=||>M=E|>l=}>O=|(<~(<~<~<|<|(<~><|ݦ><|~>p=|~>p=}>O=~><~>(<|>(<|ݦ><|ݦ><~><~>(<|7~H~H~H|H|7|~}^~H~H|7|~|>H~>H~>H~>H|ݦ>7|>H||E|x@}^}^|~|||ݦ>7~>H}>^}>^|~>|ݦ>7|Iz7^zE|x@E|x@|||Iz|~>}>^E|>x@E|>x@||>|~>|ix4h\%xƧ7^z7^z|Iz|ix4h||>E|>x@4^z>4^z>|Ez>||>|uQut\%xƧ\%xƧ|ix4h|uQ|Ez>4^z>X%x>ƧX%x>Ƨ|ix>4h|Ez>|ix>4hX%x>Ƨu>tu>t|u>Q|ix>4hu>t~>H~>H~>Hs>tu>t~H}^\%xƧ\%xƧut~HX%x>Ƨ}>^~>H~>Hu>tX%x>Ƨs>v>~>(<~><~><u>v>s>v>u>v>~><}>O=}>O=X%x> c>u>v>#~>(<#s>v>#u>v>#u>v>#~><#~>(<#u>v>#X%x> c>#}>O=#}>O=#~><#u>v>!uv>!~!uv>!~<4^<4^~p=4^~p=!}O=!~<{T=~<~(<~({T=?1^z$(>?V%x c>?E|l=?V%x c>?uv>?E|l=?E|l=?uv>?}O=?}O=?uv>?~<?E|x@?}^?~H?uv>?~(<?~<?E|x@?ut?1^z?1^z?ut?V%xƧ#>1^z#>V%xƧ#>E|x@#>E|x@#>V%xƧ#>ut#>E|l=#>}O=#>1^z$(>#>1^z$(>#>}O=#>~<#>1^z$(>#>~<#>V%x c>#>V%x c>#>~<#>~(<#>V%x c>#>~(<#>uv>!>}>O=!>E|>l=!>~><6^>(<|>(<6^>H6^>H|>(<|>H|>>H4^>>H4^>>7|>>H4^>>7|>>7|>>74^>>74^>~>|>>74^>~>|>~>|>~>4^>~>4^>|>|>~>4^>|>|>|>|>|>4^>|>4^>Kz>|>|>4^>Kz>|>Kz>|>Kz>4^>Kz>4^>ix>4h|>Kz>4^>ix>4h|>ix>4h|>ix>4h4^>ix>4h4^>u>Q|>ix>4h4^>u>Q|>u>Q|>uQ6^>ix4h|>ix4h|>ix4h6^>ix4h6^>Cz|>ix4h6^>Cz|>Cz|>Cz6^>Cz6^>||>Cz6^>||>||>|6^>|6^>~|>|6^>~|>~|>~6^>~6^>ڦ7|>~6^>ڦ7|>ڦ7|>ڦ76^>ڦ76^>H|>ڦ76^>H|>H|>(<6^>(<6^>ڦ<|>(<6^>ڦ<|>ڦ<|>ڦ<6^>ڦ<6^>~p=|>ڦ<6^>~p=|>~p=|>~p=6^>~p=6^>|M=|>~p=6^>|M=|>|M=|>|M=6^>|M=6^>Cz`>|>|M=6^>Cz`>|>Cz`>|>Cz`>6^>Cz`>6^>ix >|>Cz`>6^>ix >|>ix >|>ix >6^>ix >6^>uQ>|>u>Q>4^>ix> >|>ix> >|>ix> >4^>ix> >4^>Kz>`>|>ix> >4^>Kz>`>|>Kz>`>|>Kz>`>4^>Kz>`>4^>|>M=|>Kz>`>4^>|>M=|>|>M=|>|>M=4^>|>M=4^>~>p=|>|>M=4^>~>p=|>~>p=|>~>p=4^>~>p=4^>><|>~>p=4^>><|>><|>><4^>><4^>>(<|>><4^>>(<|>>(<6^>(<#>~(<6^>ڦ<6^>ڦ<#>~(<#>~<6^>ڦ<#>~<6^>~p=6^>~p=#>~<#>}O=6^>~p=#>}O=6^>|M=6^>|M=#>}O=#>E|l=6^>|M=#>E|l=6^>Cz`>6^>Cz`>#>E|l=#>1^z$(>6^>Cz`>#>1^z$(>6^>ix >6^>ix >#>1^z$(>#>V%x c>6^>ix >#>V%x c>6^>uQ>6^>uQ>#>V%x c>#>uv>#>~H6^>H#>~H#>~H6^>H6^>ڦ7#>~H6^>ڦ7#>}^#>}^6^>ڦ76^>~#>}^6^>~#>E|x@#>E|x@6^>~6^>|6^>uQ#>ut6^>ix4h6^>ix4h#>ut#>V%xƧ6^>ix4h#>V%xƧ6^>Cz6^>Cz#>V%xƧ#>1^z6^>Cz#>1^z6^>|6^>|#>1^z#>E|x@4^>u>Q>!>s>v>!>u>v>!>u>t!>s>t4^>u>Q4^>u>Q>!>u>v>4^>ix> >4^>ix> >!>u>v>!>^%x> c>4^>ix> >!>^%x> c>4^>Kz>`>4^>Kz>`>!>^%x> c>!>:^z>$(>4^>Kz>`>!>:^z>$(>4^>|>M=4^>|>M=!>:^z>$(>!>E|>l=4^>|>M=!>E|>l=4^>~>p=4^>~>p=!>E|>l=!>}>O=4^>~>p=!>}>O=4^>><4^>>}>O=!>~><4^>>~><4^>>(<4^>>(~>~>(u>t4^>u>Q!>^%x>Ƨ!>^%x>Ƨ4^>u>Q4^>ix>4h!>^%x>Ƨ4^>ix>4h!>:^z>!>:^z>4^>ix>4h4^>Kz>!>:^z>4^>Kz>!>E|>x@!>E|>x@4^>Kz>4^>|>!>E|>x@4^>|>!>}>^!>}>^4^>|>4^>~>4^>>H!>~>H4^>>74^>>7!>~>H!>~>H4^>>7!>~>H4^>~>4^>~>!>~>H!>}>^|>u>Q>>u>v>>s>v>|>><>~>(<>~><|>><>~><|>~>p=|>~>p=>~><>}>O=|>~>p=>}>O=|>|>M=|>|>M=>}>O=>E|>l=|>|>M=>E|>l=|>Kz>`>|>Kz>`>>E|>l=>:^z>$(>|>Kz>`>>:^z>$(>|>ix> >|>ix> >>:^z>$(>>^%x> c>|>ix> >>^%x> c>|>u>Q>|>u>Q>>^%x> c>>u>v>|>uQ>?uv>|>ix >|>ix >?uv>?V%x c>|>ix >?V%x c>|>Cz`>|>Cz`>?V%x c>?1^z$(>|>Cz`>?1^z$(>|>|M=|>|M=?1^z$(>?E|l=|>|M=?E|l=|>~p=|>~p=?E|l=?}O=|>~p=?}O=|>ڦ<|>ڦ<?}O=?~<|>ڦ<?~<|>(<|>(<?~<?~(<>~>H|>>H>~>H>~>H|>>H|>>7>~>H|>>7>}>^>}>^|>>7|>~>>}>^|>~>>E|>x@>E|>x@|>~>|>|>>E|>x@|>|>|>Kz>|>u>Q>u>t|>ix>4h|>ix>4h>u>t>^%x>Ƨ|>ix>4h>^%x>Ƨ|>Kz>|>Kz>>^%x>Ƨ>:^z>|>Kz>>:^z>>E|>x@?ut|>uQ?V%xƧ?V%xƧ|>uQ|>ix4h?V%xƧ|>ix4h?1^z?1^z|>ix4h|>Cz?1^z|>Cz?E|x@?E|x@|>Cz|>||>H?~H|>ڦ7|>ڦ7?~H?~H|>ڦ7?~H|>~|>~?~H?}^|>~?}^|>||>|?}^?E|x@ gff?V-)gff?('2+gff?-1 gff?V-+gff?-1-gff?/ gff?V--gff?/"/gff?~. gff?V-gff?+5'gff?H5'gff?H5l gff?4 gff?V- gff?V-l gff?4z!gff?x 4 gff?V-z!gff?x 4%gff?+3 gff?V-%gff?+3)gff?('2 gff?V-.? gff?e$gff?ۢ$ gff?V-gff?ۢ$gff?% gff?V-Ugff?$gff?$ gff?V-gff?$Sgff?c]$ gff?V-Sgff?c]$.? gff?e$ gff?V-]gff?ް5 gff?5 gff?V- gff?5gff?+5 gff?V-RPgff?4l'gff?ek5 gff?V-l'gff?ek5]gff?ް5 gff?V-Tgff?@2zgff?J{3 gff?V-zgff?J{3gff?M4 gff?V-gff?M4RPgff?4 gff?V-(2,gff?J))gff? $("/gff?~./gff?*- gff?V- gff?V-/gff?*-D/gff?b+ gff?V-D/gff?b+.gff?u* gff?V-.gff?u*(2,gff?J))gff? $(_/&gff?' gff?V- gff?V-_/&gff?'@"gff?3& gff?V-@"gff?3&gff?v% gff?V-gff?v%Ugff?$ gff?V-ؽgff?50Nݽgff?rh1 gff?V-Nݽgff?rh1Tgff?@2 gff?V-@AԽgff?G,Խgff?- gff?V-Խgff?-Hսgff?. gff?V-Hսgff?.ؽgff?50 gff?V-Zٽgff?()սgff?* gff?V-սgff?*@AԽgff?G,gff?%}gff?ݰ% gff?V- gff?V-}gff?ݰ%gff?|&gff?|& gff?V& gff?V- gff?V- gff?V&_tgff?*o' gff?V-_tgff?*o'J5޽gff?( gff?V-J5޽gff?(Zٽgff?() c?V-vZ c?ö5O c?5 c?V-c c? 5 c?xz5 c?V- c?xz5vZ c?ö5 c?V-R c?4&n c?[% c?V-ڽ c?0Nֽ c?ݓ/ c?V-Nֽ c?ݓ/Խ c?IF. c?V-ͱ c?c3L c?[3 c?V-L c?[3" c?H1 c?V-" c?H1ڽ c?0 c?V-F, c?i0~* c?1 c?V-)@- c?). c?.+ c?V-{q c?4)% c?% c?V-; c?vl$t c?F$ c?V-t c?F${q c?4)%n c?[%q c?$ c?V- c?V-q c?$ٚ c?}$ c?V-ٚ c?}$ c?Z$ c?V- c?Z$; c?vl$Խ c?IF.ӽ c?(, c?V- c?V-ӽ c?(,CԽ c?+ c?V-CԽ c?+}׽ c?S*O c?5 c?5 c?V- c?V- c?5N c?55 c?V-N c?55 c?"4 c?V- c?"4ͱ c?c3 c?%gJ$ c? & c?V- c?V-gJ$ c? &' c?' c?V-' c?'W* c?9( c?V-W* c?9()@- c?)~* c?1u_' c?)2 c?V- c?V-u_' c?)2# c?3 c?V-# c?3Z c?k4 c?V-Z c?k4c c? 5. c?.+^/ c?, c?V- c?V-^/ c?,y/ c?- c?V-y/ c?-. c?%/ c?V-. c?%/F, c?i0}׽ c?S*q۽ c?) c?V- c?V-q۽ c?)C( c?' c?V-C( c?' c?V& c?V- c?V&R c?4&)$f?M2N&$f?Y3O)(d?2O)(d?2)d?I2)$f?M2)$f?M2)d?I2p`+d?1)$f?M2p`+d?1ٷ,$f?S"1p`+d?1,d? 1ٷ,$f?S"1ٷ,$f?S"1,d? 1s-d?0ٷ,$f?S"1s-d?0.$f?/s-d?0.d?/.$f?/.$f?/.d?/ڕ/d?~5/.$f?/ڕ/d?~5/&0$f?".ڕ/d?~5/ 0d?z.&0$f?".&0$f?". 0d?z.)0d?-&0$f?".)0d?-ܣ0$f?+-)0d?-0d?+-ܣ0$f?+-ܣ0$f?+-0d?+-0d?0|,ܣ0$f?+-0d?0|,H0$f?5+0d?0|,-0d?+H0$f?5+H0$f?5+-0d?+/d?2 +H0$f?5+/d?2 +/$f?uv*/d?2 +n/d?lx*/$f?uv*/$f?uv*n/d?lx*6.d?)/$f?uv*6.d?)-$f?.)6.d?)}-d? 2)-$f?.)-$f?.)}-d? 2)g+d?u(-$f?.)g+d?u(_*$f?'g+d?u(J*d?(_*$f?'_*$f?'J*d?((d?q'_*$f?'(d?q'[&$f?&(d?q'b&d?V&[&$f?&[&$f?&b&d?V&$d?q&[&$f?&$d?q&D"$f?)&$d?q&"d?g&D"$f?)&D"$f?)&"d?g&i d?E%D"$f?)&i d?E%R$f?=%i d?E%Dd?kC%R$f?=%R$f?=%Dd?kC%d?$R$f?=%d?$X$f?$d?$Md?$X$f?$X$f?$Md?$d?\r$X$f?$d?\r$ $f?jH$d?\r$ d?N$ $f?jH$ $f?jH$ d?N$]d?+$ $f?jH$]d?+$p$f?$]d?+$pd?h"$p$f?$p$f?$pd?h"$ d?;$p$f?$ d?;$$ $f?%$ d?;$' d?+$$ $f?%$$ $f?%$' d?+$kd?G=$$ $f?%$kd?G=$w$f?Ic$kd?G=$d?i$w$f?Ic$w$f?Ic$d?i$d?$w$f?Ic$d?$$f?$d?$1d?$$f?$$f?$1d?$(d?W!%$f?$(d?W!%g$f?y%(d?W!% d?%g$f?y%g$f?y% d?%d?%g$f?y%d?%<$f?J&<$f?J&d?%꽔d?P&<$f?J&꽔d?P&$f?&$f?&꽔d?P&潔d?&$f?&潔d?&$f?D'潔d?& 㽔d?'I'$f?D'$f?D' 㽔d?'I'߽d?'$f?D'߽d?'wܽ$f?a(߽d?'ܽd?d(wܽ$f?a(wܽ$f?a(ܽd?d(ٽd?Y(wܽ$f?a(ٽd?Y(bx׽$f?A)ٽd?Y(׽d?)bx׽$f?A)bx׽$f?A)׽d?)սd?>*bx׽$f?A)սd?>*VԽ$f?.*սd?>*6Խd?%*VԽ$f?.*VԽ$f?.*6Խd?%*8ҽd?+VԽ$f?.*8ҽd?+4ҽ$f?A,8ҽd?+biҽd?B,4ҽ$f?A,4ҽ$f?A,biҽd?B,ѽd?,4ҽ$f?A,ѽd?,Bҽ$f?#-ѽd?,Dҽd?{-Bҽ$f?#-Bҽ$f?#-Dҽd?{-Нҽd?P.Bҽ$f?#-Нҽd?P.zӽ$f?z.Нҽd?P.ӽd?*.zӽ$f?z.zӽ$f?z.ӽd?*.Խd?ߦ/zӽ$f?z.Խd?ߦ/ֽ$f?L0Խd?ߦ/ֽd?J0ֽ$f?L0ֽ$f?L0ֽd?J0ؽd?0ֽ$f?L0ؽd?0y۽$f?61ؽd?0۽d?1y۽$f?61y۽$f?61۽d?14t޽d?2y۽$f?614t޽d?2$f?24t޽d?2ὔd?2$f?2$f?2ὔd?2P彔d?/3$f?2P彔d?/39$f?!3P彔d?/3^齔d?39$f?!39$f?!3^齔d?3ld?)49$f?!3ld?)4u$f?4ld?)4d?(~4u$f?4u$f?4d?(~4d?4u$f?4d?4 t$f?/5d?4d?4)5 t$f?/5 t$f?/5d?4)5Ad?Cs5 t$f?/5Ad?Cs5$f?P5Ad?Cs5d?£5$f?P5$f?P5d?£5d?A5$f?P5d?A5G>$f?5d?A5@d?15G>$f?5G>$f?5@d?154 d?z6G>$f?54 d?z6 $f?q64 d?z6! d?5 $f?q6 $f?q6! d?5td?L5 $f?q6td?L5-$f?e5td?L5(d?5-$f?e5-$f?e5(d?5d? 5-$f?e5d? 5{$f?5d? 5td?^5{$f?5{$f?5td?^5> d?YG5{$f?5> d?YG5$f?T4> d?YG5xd?n4$f?T4$f?T4xd?n4d?4$f?T4d?4$)"$f??4d?4j"d?:4$)"$f??4$)"$f??4j"d?:4M$d?t3$)"$f??4M$d?t3N&$f?Y3N&$f?Y3M$d?t39&d?GU3N&$f?Y39&d?GU3O)(d?2R c?4& c?V&꽔d?P&꽔d?P&d?%R c?4&R c?4&d?% d?%R c?4& d?%n c?[% d?%(d?W!%n c?[%n c?[%(d?W!%1d?$n c?[%1d?$q c?$1d?$d?$q c?$q c?$d?$d?i$q c?$d?i$ٚ c?}$d?i$kd?G=$ٚ c?}$ٚ c?}$kd?G=$' d?+$ٚ c?}$' d?+$ c?Z$' d?+$ d?;$ c?Z$ c?Z$ d?;$pd?h"$ c?Z$pd?h"$; c?vl$pd?h"$]d?+$; c?vl$; c?vl$]d?+$ d?N$; c?vl$ d?N$t c?F$ d?N$d?\r$t c?F$t c?F$d?\r$Md?$t c?F$Md?${q c?4)%Md?$d?${q c?4)%{q c?4)%d?$Dd?kC%{q c?4)%Dd?kC% c?%Dd?kC%i d?E% c?% c?%i d?E%"d?g& c?%"d?g&gJ$ c? &"d?g&$d?q&gJ$ c? &gJ$ c? &$d?q&b&d?V&gJ$ c? &b&d?V&' c?'b&d?V&(d?q'' c?'' c?'(d?q'J*d?(' c?'J*d?(W* c?9(J*d?(g+d?u(W* c?9(W* c?9(g+d?u(}-d? 2)W* c?9(}-d? 2))@- c?)}-d? 2)6.d?))@- c?))@- c?)6.d?)n/d?lx*)@- c?)n/d?lx*. c?.+n/d?lx*/d?2 +. c?.+. c?.+/d?2 +-0d?+. c?.+-0d?+^/ c?,-0d?+0d?0|,^/ c?,^/ c?,0d?0|,0d?+-^/ c?,0d?+-y/ c?-0d?+-)0d?-y/ c?-y/ c?-)0d?- 0d?z.y/ c?- 0d?z.. c?%/ 0d?z.ڕ/d?~5/. c?%/. c?%/ڕ/d?~5/.d?/. c?%/.d?/F, c?i0.d?/s-d?0F, c?i0F, c?i0s-d?0,d? 1F, c?i0,d? 1~* c?1,d? 1p`+d?1~* c?1~* c?1p`+d?1)d?I2~* c?1)d?I2u_' c?)2)d?I2O)(d?2u_' c?)2u_' c?)2O)(d?29&d?GU3u_' c?)29&d?GU3# c?39&d?GU3M$d?t3# c?3# c?3M$d?t3j"d?:4# c?3j"d?:4Z c?k4j"d?:4d?4Z c?k4Z c?k4d?4xd?n4Z c?k4xd?n4c c? 5xd?n4> d?YG5c c? 5c c? 5> d?YG5td?^5c c? 5td?^5 c?xz5td?^5d? 5 c?xz5 c?xz5d? 5(d?5 c?xz5(d?5vZ c?ö5(d?5td?L5vZ c?ö5vZ c?ö5td?L5! d?5vZ c?ö5! d?5O c?5! d?54 d?z6O c?5O c?54 d?z6@d?15O c?5@d?15 c?5@d?15d?A5 c?5 c?5d?A5d?£5 c?5d?£5N c?55d?£5Ad?Cs5N c?55N c?55Ad?Cs5d?4)5N c?55d?4)5 c?"4d?4)5d?4 c?"4 c?"4d?4d?(~4 c?"4d?(~4ͱ c?c3d?(~4ld?)4ͱ c?c3ͱ c?c3ld?)4^齔d?3ͱ c?c3^齔d?3L c?[3^齔d?3P彔d?/3L c?[3L c?[3P彔d?/3ὔd?2L c?[3ὔd?2" c?H1ὔd?24t޽d?2" c?H1" c?H14t޽d?2۽d?1" c?H1۽d?1ڽ c?0۽d?1ؽd?0ڽ c?0ڽ c?0ؽd?0ֽd?J0ڽ c?0ֽd?J0Nֽ c?ݓ/ֽd?J0Խd?ߦ/Nֽ c?ݓ/Nֽ c?ݓ/Խd?ߦ/ӽd?*.Nֽ c?ݓ/ӽd?*.Խ c?IF.ӽd?*.Нҽd?P.Խ c?IF.Խ c?IF.Нҽd?P.Dҽd?{-Խ c?IF.Dҽd?{-ӽ c?(,Dҽd?{-ѽd?,ӽ c?(,ӽ c?(,ѽd?,biҽd?B,ӽ c?(,biҽd?B,CԽ c?+biҽd?B,8ҽd?+CԽ c?+CԽ c?+8ҽd?+6Խd?%*CԽ c?+6Խd?%*}׽ c?S*6Խd?%*սd?>*}׽ c?S*}׽ c?S*սd?>*׽d?)}׽ c?S*׽d?)q۽ c?)׽d?)ٽd?Y(q۽ c?)q۽ c?)ٽd?Y(ܽd?d(q۽ c?)ܽd?d(C( c?'ܽd?d(߽d?'C( c?'C( c?'߽d?' 㽔d?'I'C( c?' 㽔d?'I' c?V& c?V& 㽔d?'I'潔d?& c?V&潔d?&꽔d?P&$)"$f??4z!gff?x 4$f?T4$f?T4z!gff?x 4l gff?4$f?T4l gff?4{$f?5{$f?5l gff?4'gff?H5{$f?5'gff?H5-$f?e5-$f?e5'gff?H5gff?+5-$f?e5gff?+5 $f?q6 $f?q6gff?+5 gff?5 $f?q6 gff?5G>$f?5G>$f?5 gff?5]gff?ް5G>$f?5]gff?ް5$f?P5$f?P5]gff?ް5l'gff?ek5$f?P5l'gff?ek5 t$f?/5 t$f?/5l'gff?ek5RPgff?4 t$f?/5RPgff?4u$f?4u$f?4RPgff?4gff?M4u$f?4gff?M49$f?!39$f?!3gff?M4zgff?J{39$f?!3zgff?J{3$f?2$f?2zgff?J{3Tgff?@2$f?2Tgff?@2y۽$f?61y۽$f?61Tgff?@2Nݽgff?rh1y۽$f?61Nݽgff?rh1ֽ$f?L0ֽ$f?L0Nݽgff?rh1ؽgff?50ֽ$f?L0ؽgff?50zӽ$f?z.zӽ$f?z.ؽgff?50Hսgff?.zӽ$f?z.Hսgff?.Bҽ$f?#-Bҽ$f?#-Hսgff?.Խgff?-Bҽ$f?#-Խgff?-4ҽ$f?A,4ҽ$f?A,Խgff?-@AԽgff?G,4ҽ$f?A,@AԽgff?G,VԽ$f?.*VԽ$f?.*@AԽgff?G,սgff?*VԽ$f?.*սgff?*bx׽$f?A)bx׽$f?A)սgff?*Zٽgff?()bx׽$f?A)Zٽgff?()wܽ$f?a(wܽ$f?a(Zٽgff?()J5޽gff?(wܽ$f?a(J5޽gff?($f?D'$f?D'J5޽gff?(_tgff?*o'$f?D'_tgff?*o'$f?&$f?&_tgff?*o' gff?V&$f?& gff?V&<$f?J&<$f?J& gff?V&gff?|&<$f?J&gff?|&g$f?y%g$f?y%gff?|&}gff?ݰ%g$f?y%}gff?ݰ%$f?$$f?$}gff?ݰ%gff?%$f?$gff?%w$f?Ic$w$f?Ic$gff?%gff?ۢ$w$f?Ic$gff?ۢ$$ $f?%$$ $f?%$gff?ۢ$.? gff?e$$ $f?%$.? gff?e$p$f?$p$f?$.? gff?e$Sgff?c]$p$f?$Sgff?c]$ $f?jH$ $f?jH$Sgff?c]$gff?$ $f?jH$gff?$X$f?$X$f?$gff?$Ugff?$X$f?$Ugff?$R$f?=%R$f?=%Ugff?$gff?v%R$f?=%gff?v%D"$f?)&D"$f?)&gff?v%@"gff?3&D"$f?)&@"gff?3&[&$f?&[&$f?&@"gff?3&_/&gff?'[&$f?&_/&gff?'_*$f?'_*$f?'_/&gff?')gff? $(_*$f?')gff? $(-$f?.)-$f?.))gff? $((2,gff?J)-$f?.)(2,gff?J)/$f?uv*/$f?uv*(2,gff?J).gff?u*/$f?uv*.gff?u*H0$f?5+H0$f?5+.gff?u*D/gff?b+H0$f?5+D/gff?b+ܣ0$f?+-ܣ0$f?+-D/gff?b+/gff?*-ܣ0$f?+-/gff?*-&0$f?".&0$f?"./gff?*-"/gff?~.&0$f?"."/gff?~..$f?/.$f?/"/gff?~.-gff?/.$f?/-gff?/ٷ,$f?S"1ٷ,$f?S"1-gff?/+gff?-1ٷ,$f?S"1+gff?-1)$f?M2)$f?M2+gff?-1)gff?('2)$f?M2)gff?('2N&$f?Y3N&$f?Y3)gff?('2%gff?+3N&$f?Y3%gff?+3$)"$f??4$)"$f??4%gff?+3z!gff?x 4 >gff?V-^=gff?U3LC=gff?W2 >gff?V-=gff?45=gff?4.4 >gff?V-5=gff?4.4^=gff?U3 >gff?V->gff?p$>gff?$ >gff?V-~=gff?(f-k=gff?^, >gff?V-!*>gff?DQ(ލ,>gff?|) >gff?V- >gff?`$k>gff?`$ >gff?V-k>gff?`$>gff?p$ >gff?V- =gff?$M>gff?$ >gff?V-M>gff?$ >gff?`$ >gff?V-=gff?%S=gff?B% >gff?V-S=gff?B% =gff?$LC=gff?W2w=gff?C91 >gff?V- >gff?V-w=gff?C91=gff?0 >gff?V-=gff?0B=gff?. >gff?V-B=gff?.~=gff?(f- >gff?V->gff?5U>gff?[5 >gff?V-U>gff?[5=gff?4 >gff?V->V>gff?[Z5'>gff?X5 >gff?V-'>gff?X5D >gff?5 >gff?V-D >gff?5>gff?5 >gff?V-Dh+>gff?41e(>gff?S2>gff?$\>gff?% >gff?V- >gff?V-\>gff?%">gff?V& >gff?V-">gff?V&&>gff?A' >gff?V-&>gff?A'!*>gff?DQ( >gff?V-e=gff?E'z==gff?JY& >gff?V-z==gff?JY&=gff?%e(>gff?S2a$>gff?R3 >gff?V- >gff?V-a$>gff?R3- >gff?+4 >gff?V-- >gff?+4fH>gff?4 >gff?V-fH>gff?4>V>gff?[Z5k=gff?^,l=gff?z* >gff?V- >gff?V-l=gff?z*=gff?Z) >gff?V-=gff?Z)=gff?2U( >gff?V-=gff?2U(e=gff?E' >gff?V-%.>gff?c.->gff?`/ >gff?V-->gff?`/Dh+>gff?41ލ,>gff?|)].>gff?* >gff?V- >gff?V-].>gff?*aa/>gff? , >gff?V-aa/>gff? ,o/>gff?a- >gff?V-o/>gff?a-%.>gff?c.>$f?5>$f?5<>d?\5<>d?\5>d?5>$f?5>$f?5>d?5>d?&5>$f?5>d?&5O>$f?:5>d?&5~L>d?5O>$f?:5O>$f?:5~L>d?5Е>d?5O>$f?:5Е>d?5D >$f?6Е>d?5D >d?5D >$f?6D >$f?6D >d?5 >d?5D >$f?6 >d?5k_>$f?5 >d?5 b>d?S5k_>$f?5k_>$f?5 b>d?S5Z>d?u5k_>$f?5Z>d?u5>$f?5Z>d?u5>d?`5>$f?5>$f?5>d?`5=d?^5>$f?5=d?^5V=$f?5=d?^5O=d?5V=$f?5V=$f?5O=d?5 =d?4V=$f?5 =d?4^o=$f?c4 =d?4=d?^4^o=$f?c4^o=$f?c4=d?^4d =d?3^o=$f?c4d =d?3=$f?3d =d?3=d?3=$f?3=$f?3=d?3%=d?3=$f?3%=d?3=$f?~2%=d?3=d? {2=$f?~2=$f?~2=d? {2wx=d?t1=$f?~2wx=d?t10=$f?X1wx=d?t1`=d?qU10=$f?X10=$f?X1`=d?qU1J:=d?o00=$f?X1J:=d?o0(=$f??0J:=d?o00]=d?0(=$f??0(=$f??00]=d?0=d?zp/(=$f??0=d?zp/D@=$f?m.=d?zp/t=d?.D@=$f?m.D@=$f?m.t=d?.d=d?.D@=$f?m.d=d?.5=$f?h-d=d?./=d?h-5=$f?h-5=$f?h-/=d?h-=d?$,5=$f?h-=d?$,d=$f?( ,=d?$,=d? ,d=$f?( ,d=$f?( ,=d? ,5=d?}\+d=$f?( ,5=d?}\+u=$f?p*5=d?}\+=d?*u=$f?p*u=$f?p*=d?*D=d? *u=$f?p*D=d? **=$f?{f)D=d? *Y=d?i)*=$f?{f)*=$f?{f)Y=d?i)8=d?2(*=$f?{f)8=d?2(}c=$f?1(8=d?2(=d?5(}c=$f?1(}c=$f?1(=d?5(=d?H'}c=$f?1(=d?H'm =$f?'=d?H'!0=d?'m =$f?'m =$f?'!0=d?']=d?|&m =$f?']=d?|&=$f?,&&]=d?|&=d?k+&=$f?,&&=$f?,&&=d?k+&J=d?%=$f?,&&J=d?%Q=$f?R\%Q=$f?R\%J=d?%=d?8b%Q=$f?R\%=d?8b%=$f?%=$f?%=d?8b%=d?%=$f?%=d?%=$f?$=d?%=d??$=$f?$=$f?$=d??$>d?$=$f?$>d?$>$f?U$>d?$@>d?\$>$f?U$>$f?U$@>d?\$rJ>d?4$>$f?U$rJ>d?4$ >$f?$rJ>d?4$_ >d?V&$ >$f?$ >$f?$_ >d?V&$K >d?$ >$f?$K >d?$׀>$f?!$K >d?$8~>d?%$׀>$f?!$׀>$f?!$8~>d?%$%:>d?q3$׀>$f?!$%:>d?q3$3>$f?6T$%:>d?q3$W>d?Z$3>$f?6T$3>$f?6T$W>d?Z$>d?$3>$f?6T$>d?$)>$f?a$>d?$F>d?H$)>$f?a$)>$f?a$F>d?H$>d?%)>$f?a$>d?% >$f?Y%>d?%>d?_% >$f?Y% >$f?Y%>d?_%a!>d?% >$f?Y%a!>d?%ݒ#>$f?#&a!>d?%#>d?$(&ݒ#>$f?#&ݒ#>$f?#&#>d?$(&'%>d?5&ݒ#>$f?#&'%>d?5&'>$f?''%>d?5&ct'>d?G''>$f?''>$f?'ct'>d?G'G)>d?''>$f?'G)>d?'S*>$f?8-(G)>d?'*>d?&1(S*>$f?8-(S*>$f?8-(*>d?&1(vD,>d?(S*>$f?8-(vD,>d?(k|->$f?a)vD,>d?(d->d?d)k|->$f?a)k|->$f?a)d->d?d)/.>d?*k|->$f?a)/.>d?*Y/>$f?2*/.>d?*N?/>d?)*Y/>$f?2*Y/>$f?2*N?/>d?)*m/>d??W+Y/>$f?2*m/>d??W+d0>$f?,m/>d??W+J0>d?,d0>$f?,d0>$f?,J0>d?,0>d?,d0>$f?,0>d?,0>$f?c-0>d?,0>d?c-0>$f?c-0>$f?c-0>d?c-g0>d?+.0>$f?c-g0>d?+./>$f?.g0>d?+.u/>d?./>$f?./>$f?.u/>d?.^/>d?k//>$f?.^/>d?k/l.>$f?0^/>d?k/r.>d? 0l.>$f?0l.>$f?0r.>d? 0H->d?10l.>$f?0H->d?10N,>$f?!T1H->d?10\7,>d?P1N,>$f?!T1N,>$f?!T1\7,>d?P1*>d?1N,>$f?!T1*>d?1T)>$f? {2*>d?1$?)>d?w2T)>$f? {2T)>$f? {2$?)>d?w2ٓ'>d?3T)>$f? {2ٓ'>d?3%>$f?03ٓ'>d?3%>d?|3%>$f?03%>$f?03%>d?|3#>d?3%>$f?03#>d?3:t!>$f?Ra4#>d?3d!>d?l[4:t!>$f?Ra4:t!>$f?Ra4d!>d?l[4g&>d?4:t!>$f?Ra4g&>d?4>$f?5>$f?5g&>d?4A>d?5>$f?5A>d?5<>d?\5z= c?%T= c?B%=d?8b%=d?8b%J=d?%z= c?%z= c?%J=d?%=d?k+&z= c?%=d?k+&\D= c?&=d?k+&]=d?|&\D= c?&\D= c?&]=d?|&!0=d?'\D= c?&!0=d?'T.= c?'!0=d?'=d?H'T.= c?'T.= c?'=d?H'=d?5(T.= c?'=d?5(b= c?(=d?5(8=d?2(b= c?(b= c?(8=d?2(Y=d?i)b= c?(Y=d?i) = c?*Y=d?i)D=d? * = c?* = c?*D=d? *=d?* = c?*=d?*<= c?h+=d?*5=d?}\+<= c?h+<= c?h+5=d?}\+=d? ,<= c?h+=d? ,A= c?»,=d? ,=d?$,A= c?»,A= c?»,=d?$,/=d?h-A= c?»,/=d?h-[p= c?./=d?h-d=d?.[p= c?.[p= c?.d=d?.t=d?.[p= c?.t=d?.|= c?o_/t=d?.=d?zp/|= c?o_/|= c?o_/=d?zp/0]=d?0|= c?o_/0]=d?0c= c?00]=d?0J:=d?o0c= c?0c= c?0J:=d?o0`=d?qU1c= c?0`=d?qU10= c?1`=d?qU1wx=d?t10= c?10= c?1wx=d?t1=d? {20= c?1=d? {2= c?2=d? {2%=d?3= c?2= c?2%=d?3=d?3= c?2=d?3\= c?O3=d?3d =d?3\= c?O3\= c?O3d =d?3=d?^4\= c?O3=d?^4h= c?C4=d?^4 =d?4h= c?C4h= c?C4 =d?4O=d?5h= c?C4O=d?5Ԧ= c?!5O=d?5=d?^5Ԧ= c?!5Ԧ= c?!5=d?^5>d?`5Ԧ= c?!5>d?`5> c?5>d?`5Z>d?u5> c?5> c?5Z>d?u5 b>d?S5> c?5 b>d?S5- > c?5 b>d?S5 >d?5- > c?5- > c?5 >d?5D >d?5- > c?5D >d?5׀> c?5D >d?5Е>d?5׀> c?5׀> c?5Е>d?5~L>d?5׀> c?5~L>d?5C> c?5~L>d?5>d?&5C> c?5C> c?5>d?&5>d?5C> c?5>d?5> c? 5>d?5<>d?\5> c? 5> c? 5<>d?\5A>d?5> c? 5A>d?5> c?4A>d?5g&>d?4> c?4> c?4g&>d?4d!>d?l[4> c?4d!>d?l[4"> c?3d!>d?l[4#>d?3"> c?3"> c?3#>d?3%>d?|3"> c?3%>d?|3&> c?r2%>d?|3ٓ'>d?3&> c?r2&> c?r2ٓ'>d?3$?)>d?w2&> c?r2$?)>d?w2 *> c?z1$?)>d?w2*>d?1 *> c?z1 *> c?z1*>d?1\7,>d?P1 *> c?z1\7,>d?P1,> c?0\7,>d?P1H->d?10,> c?0,> c?0H->d?10r.>d? 0,> c?0r.>d? 0c.> c?Z/r.>d? 0^/>d?k/c.> c?Z/c.> c?Z/^/>d?k/u/>d?.c.> c?Z/u/>d?.d/> c?N .u/>d?.g0>d?+.d/> c?N .d/> c?N .g0>d?+.0>d?c-d/> c?N .0>d?c-Е/> c?,0>d?c-0>d?,Е/> c?,Е/> c?,0>d?,J0>d?,Е/> c?,J0>d?,.> c?c+J0>d?,m/>d??W+.> c?c+.> c?c+m/>d??W+N?/>d?)*.> c?c+N?/>d?)*Î-> c?*N?/>d?)*/.>d?*Î-> c?*Î-> c?*/.>d?*d->d?d)Î-> c?*d->d?d)]+> c?(d->d?d)vD,>d?(]+> c?(]+> c?(vD,>d?(*>d?&1(]+> c?(*>d?&1(w(> c?'*>d?&1(G)>d?'w(> c?'w(> c?'G)>d?'ct'>d?G'w(> c?'ct'>d?G'F$> c?d&ct'>d?G''%>d?5&F$> c?d&F$> c?d&'%>d?5&#>d?$(&F$> c?d&#>d?$(&t > c?x%#>d?$(&a!>d?%t > c?x%t > c?x%a!>d?%>d?_%t > c?x%>d?_% 6> c?@%>d?_%>d?% 6> c?@% 6> c?@%>d?%F>d?H$ 6> c?@%F>d?H$C> c?$F>d?H$>d?$C> c?$C> c?$>d?$W>d?Z$C> c?$W>d?Z$> c?St$W>d?Z$%:>d?q3$> c?St$> c?St$%:>d?q3$8~>d?%$> c?St$8~>d?%$K > c?Z$8~>d?%$K >d?$K > c?Z$K > c?Z$K >d?$_ >d?V&$K > c?Z$_ >d?V&$q> c?t$_ >d?V&$rJ>d?4$q> c?t$q> c?t$rJ>d?4$@>d?\$q> c?t$@>d?\$RC> c?$@>d?\$>d?$RC> c?$RC> c?$>d?$=d??$RC> c?$=d??$T= c?B%T= c?B%=d??$=d?%T= c?B%=d?%=d?8b%:t!>$f?Ra4- >gff?+4%>$f?03%>$f?03- >gff?+4a$>gff?R3%>$f?03a$>gff?R3T)>$f? {2T)>$f? {2a$>gff?R3e(>gff?S2T)>$f? {2e(>gff?S2N,>$f?!T1N,>$f?!T1e(>gff?S2Dh+>gff?41N,>$f?!T1Dh+>gff?41l.>$f?0l.>$f?0Dh+>gff?41->gff?`/l.>$f?0->gff?`//>$f?./>$f?.->gff?`/%.>gff?c./>$f?.%.>gff?c.0>$f?c-0>$f?c-%.>gff?c.o/>gff?a-0>$f?c-o/>gff?a-d0>$f?,d0>$f?,o/>gff?a-aa/>gff? ,d0>$f?,aa/>gff? ,Y/>$f?2*Y/>$f?2*aa/>gff? ,].>gff?*Y/>$f?2*].>gff?*k|->$f?a)k|->$f?a)].>gff?*ލ,>gff?|)k|->$f?a)ލ,>gff?|)S*>$f?8-(S*>$f?8-(ލ,>gff?|)!*>gff?DQ(S*>$f?8-(!*>gff?DQ('>$f?''>$f?'!*>gff?DQ(&>gff?A''>$f?'&>gff?A'ݒ#>$f?#&ݒ#>$f?#&&>gff?A'">gff?V&ݒ#>$f?#&">gff?V& >$f?Y% >$f?Y%">gff?V&\>gff?% >$f?Y%\>gff?%)>$f?a$)>$f?a$\>gff?%>gff?$)>$f?a$>gff?$3>$f?6T$3>$f?6T$>gff?$>gff?p$3>$f?6T$>gff?p$׀>$f?!$׀>$f?!$>gff?p$k>gff?`$׀>$f?!$k>gff?`$ >$f?$ >$f?$k>gff?`$ >gff?`$ >$f?$ >gff?`$>$f?U$>$f?U$ >gff?`$M>gff?$>$f?U$M>gff?$=$f?$=$f?$M>gff?$ =gff?$=$f?$ =gff?$=$f?%=$f?% =gff?$S=gff?B%=$f?%S=gff?B%Q=$f?R\%Q=$f?R\%S=gff?B%=gff?%Q=$f?R\%=gff?%=$f?,&&=$f?,&&=gff?%z==gff?JY&=$f?,&&z==gff?JY&m =$f?'m =$f?'z==gff?JY&e=gff?E'm =$f?'e=gff?E'}c=$f?1(}c=$f?1(e=gff?E'=gff?2U(}c=$f?1(=gff?2U(*=$f?{f)*=$f?{f)=gff?2U(=gff?Z)*=$f?{f)=gff?Z)u=$f?p*u=$f?p*=gff?Z)l=gff?z*u=$f?p*l=gff?z*d=$f?( ,d=$f?( ,l=gff?z*k=gff?^,d=$f?( ,k=gff?^,5=$f?h-5=$f?h-k=gff?^,~=gff?(f-5=$f?h-~=gff?(f-D@=$f?m.D@=$f?m.~=gff?(f-B=gff?.D@=$f?m.B=gff?.(=$f??0(=$f??0B=gff?.=gff?0(=$f??0=gff?00=$f?X10=$f?X1=gff?0w=gff?C910=$f?X1w=gff?C91=$f?~2=$f?~2w=gff?C91LC=gff?W2=$f?~2LC=gff?W2=$f?3=$f?3LC=gff?W2^=gff?U3=$f?3^=gff?U3^o=$f?c4^o=$f?c4^=gff?U35=gff?4.4^o=$f?c45=gff?4.4V=$f?5V=$f?55=gff?4.4=gff?4V=$f?5=gff?4>$f?5>$f?5=gff?4U>gff?[5>$f?5U>gff?[5k_>$f?5k_>$f?5U>gff?[5>gff?5k_>$f?5>gff?5D >$f?6D >$f?6>gff?5D >gff?5D >$f?6D >gff?5O>$f?:5O>$f?:5D >gff?5'>gff?X5O>$f?:5'>gff?X5>$f?5>$f?5'>gff?X5>V>gff?[Z5>$f?5>V>gff?[Z5>$f?5>$f?5>V>gff?[Z5fH>gff?4>$f?5fH>gff?4:t!>$f?Ra4:t!>$f?Ra4fH>gff?4- >gff?+4#>}^#>E|x@#>ut#>~H#>}^#>ut#>~H#>~H#>ut#>uv>#>~(<#>~H#>~H#>ut#>uv>6^>(<6^>H#>~H#>~H#>~(<6^>(s>v>!>~>(u>v>!>u>v>!>~>(^%x> c>!>^%x> c>!>~>(~>^%x> c>!>~>:^z>$(>!>:^z>$(>!>~>E|>l=!>s>v>!>s>t!>~>H!>~>H!>~>(s>v>!>~>H!>s>t!>~>H!>~>H!>s>t!>u>t!>~>H!>u>t!>}>^!>}>^!>u>t!>^%x>Ƨ!>}>^!>^%x>Ƨ!>E|>x@!>E|>x@!>^%x>Ƨ!>:^z>4^>>(~>(~>H!>~>H4^>>H4^>>(<|>uQ>6^>uQ>4^>u>Q>4^>u>Q>|>u>Q>|>uQ>|>u>Q>4^>u>Q>4^>ix> >|>uQ>|>ix >6^>uQ>6^>uQ>#>uv>!>s>v>!>s>v>4^>u>Q>6^>uQ>?uv>|>uQ>|>u>Q>|>u>Q>>s>v>?uv>>~>(<|>><|>>(<>~>(<|>>(<|>>H|>>H>~>H>~>(<|>>(<4^>>(<4^>>H4^>>H|>>H|>>(<6^>uQ4^>u>Q!>s>t!>s>t#>ut6^>uQ|>uQ6^>uQ6^>ix4h|>uQ|>u>Q4^>u>Q4^>u>Q6^>uQ|>uQ>s>t>u>t|>u>Q?ut>s>t|>u>Q|>u>Q|>uQ?ut?~(<?~H|>H|>H|>(<?~(<?uv>>s>v>>s>t>s>t?ut?uv>>s>v>>u>v>>~>(<>u>v>>~><>~>(<>u>v>>^%x> c>>~><>^%x> c>>}>O=>~><>^%x> c>>:^z>$(>>}>O=>:^z>$(>>E|>l=>}>O=>s>v>>~>(<>~>H>~>H>s>t>s>v>>~>H>u>t>s>t>~>H>~>H>u>t>~>H>^%x>Ƨ>u>t>~>H>}>^>^%x>Ƨ>}>^>:^z>>^%x>Ƨ>}>^>E|>x@>:^z>?uv>?ut?~H?~H?~(<?uv>?~H?ut?~H?~H?ut?E|x@#>uv>#>ut!>s>t!>s>t!>s>v>#>uv>DATAC %=DATA=..edge_verts?ؖ=2sharp_edge ==DATA(?uC()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq         ( ) 0 2 0 1 @ A H J H I X Y ` b ` a p q x z x y      " ! 0 1 8 : 8 9 H I P R P Q ` a h j h i x y      ! ( * ( ) 8 9 @ B @ A P Q X Z X Y h i p r p q         ( ) 0 2 0 1 @ A H J H I X Y ` b ` a p q x z x y      " ! 0 1 8 : 8 9 H I P R P Q ` a h j h i x y   !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy  !(*()89@B@APQXZXYhiprpq()0201@AHJHIXY`b`apqxzxy   " !018:89HIPRPQ`ahjhixy     ! ( * ( ) 8 9 @ B @ A P Q X Z X Y h i p r p q !!!!!!!!!!(!)!0!2!0!1!@!A!H!J!H!I!X!Y!`!b!`!a!p!q!x!z!x!y!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""" "" """ """ "!"0"1"8":"8"9"H"I"P"R"P"Q"`"a"h"j"h"i"x"y"""""""""""""""""""""""""""""""""""# ##### #!#(#*#(#)#8#9#@#B#@#A#P#Q#X#Z#X#Y#h#i#p#r#p#q#################################$$$$$$$$$$($)$0$2$0$1$@$A$H$J$H$I$X$Y$`$b$`$a$p$q$x$z$x$y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %% %%% %"% %!%0%1%8%:%8%9%H%I%P%R%P%Q%`%a%h%j%h%i%x%y%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%& &&&&& &!&(&*&(&)&8&9&@&B&@&A&P&Q&X&Z&X&Y&h&i&p&r&p&q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''(')'0'2'0'1'@'A'H'J'H'I'X'Y'`'b'`'a'p'q'x'z'x'y'''''''''''''''''''''''''''''''((( (( ((( ("( (!(0(1(8(:(8(9(H(I(P(R(P(Q(`(a(h(j(h(i(x(y((((((((((((((((((((((((((((((((((() ))))) )!)()*)()))8)9)@)B)@)A)P)Q)X)Z)X)Y)h)i)p)r)p)q)))))))))))))))))))))))))))))))))**********(*)*0*2*0*1*@*A*H*J*H*I*X*Y*`*b*`*a*p*q*x*z*x*y*******************************+++ ++ +++ +"+ +!+0+1+8+:+8+9+H+I+P+R+P+Q+`+a+h+j+h+i+x+y+++++++++++++++++++++++++++++++++++, ,,,,, ,!,(,*,(,),8,9,@,B,@,A,P,Q,X,Z,X,Y,h,i,p,r,p,q,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------(-)-0-2-0-1-@-A-H-J-H-I-X-Y-`-b-`-a-p-q-x-z-x-y-------------------------------... .. ... .". .!.0.1.8.:.8.9.H.I.P.R.P.Q.`.a.h.j.h.i.x.y.................................../ ///// /!/(/*/(/)/8/9/@/B/@/A/P/Q/X/Z/X/Y/h/i/p/r/p/q/////////////////////////////////0000000000(0)000200010@0A0H0J0H0I0X0Y0`0b0`0a0p0q0x0z0x0y0000000000000000000000000000000111 11 111 1"1 1!1011181:18191H1I1P1R1P1Q1`1a1h1j1h1i1x1y111111111111111111111111111111111112 22222 2!2(2*2(2)28292@2B2@2A2P2Q2X2Z2X2Y2h2i2p2r2p2q2222222222222222222222222222222223333333333(3)303230313@3A3H3J3H3I3X3Y3`3b3`3a3p3q3x3z3x3y3333333333333333333333333333333444 44 444 4"4 4!4041484:48494H4I4P4R4P4Q4`4a4h4j4h4i4x4y444444444444444444444444444444444445 55555 5!5(5*5(5)58595@5B5@5A5P5Q5X5Z5X5Y5h5i5p5r5p5q5555555555555555555555555555555556666666666(6)606260616@6A6H6J6H6I6X6Y6`6b6`6a6p6q6x6z6x6y6666666666666666666666666666666777 77 777 7"7 7!7071787:78797H7I7P7R7P7Q7`7a7h7j7h7i7x7y777777777777777777777777777777777778 88888 8!8(8*8(8)88898@8B8@8A8P8Q8X8Z8X8Y8h8i8p8r8p8q8888888888888888888888888888888889999999999(9)909290919@9A9H9J9H9I9X9Y9`9b9`9a9p9q9x9z9x9y9999999999999999999999999999999::: :: ::: :": :!:0:1:8:::8:9:H:I:P:R:P:Q:`:a:h:j:h:i:x:y:::::::::::::::::::::::::::::::::::; ;;;;; ;!;(;*;(;);8;9;@;B;@;A;P;Q;X;Z;X;Y;h;i;p;r;p;q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<(<)<0<2<0<1<@<A<H<J<H<I<X<Y<`<b<`<a<p<q<x<z<x<y<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== == === ="= =!=0=1=8=:=8=9=H=I=P=R=P=Q=`=a=h=j=h=i=x=y===================================> >>>>> >!>(>*>(>)>8>9>@>B>@>A>P>Q>X>Z>X>Y>h>i>p>r>p>q>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????(?)?0?2?0?1?@?A?H?J?H?I?X?Y?`?b?`?a?p?q?x?z?x?y???????????????????????????????@@@ @@ @@@ @"@ @!@0@1@8@:@8@9@H@I@P@R@P@Q@`@a@h@j@h@i@x@y@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A AAAAA A!A(A*A(A)A8A9A@ABA@AAAPAQAXAZAXAYAhAiApArApAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBB(B)B0B2B0B1B@BABHBJBHBIBXBYB`BbB`BaBpBqBxBzBxByBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CC CCC C"C C!C0C1C8C:C8C9CHCICPCRCPCQC`CaChCjChCiCxCyCCCCCCCCCCCCCCCCCCC !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    ! # ! " 1 2 9 ; 9 : I J Q S Q R a b i k i j y z     ! " ) + ) * 9 : A C A B Q R Y [ Y Z i j q s q r           ) * 1 3 1 2 A B I K I J Y Z a c a b q r y { y z     ! # ! " 1 2 9 ; 9 : I J Q S Q R a b i k i j y z     ! " ) + ) * 9 : A C A B Q R Y [ Y Z i j q s q r )*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr)*1312ABIKIJYZacabqry{yz    !#!"129;9:IJQSQRabikijyz  !")+)*9:ACABQRY[YZijqsqr          ) * 1 3 1 2 A B I K I J Y Z a c a b q r y { y z !! ! ! ! !!!!!#!!!"!1!2!9!;!9!:!I!J!Q!S!Q!R!a!b!i!k!i!j!y!z!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " """""!""")"+")"*"9":"A"C"A"B"Q"R"Y"["Y"Z"i"j"q"s"q"r"""""""""""""""""""""""""""""""""##########)#*#1#3#1#2#A#B#I#K#I#J#Y#Z#a#c#a#b#q#r#y#{#y#z###############################$$ $ $ $ $$$!$#$!$"$1$2$9$;$9$:$I$J$Q$S$Q$R$a$b$i$k$i$j$y$z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ % %%%%%!%"%)%+%)%*%9%:%A%C%A%B%Q%R%Y%[%Y%Z%i%j%q%s%q%r%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&)&*&1&3&1&2&A&B&I&K&I&J&Y&Z&a&c&a&b&q&r&y&{&y&z&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' ' ' '''!'#'!'"'1'2'9';'9':'I'J'Q'S'Q'R'a'b'i'k'i'j'y'z''''''''''''''''''''''''''''''''''' ( (((((!("()(+()(*(9(:(A(C(A(B(Q(R(Y([(Y(Z(i(j(q(s(q(r((((((((((((((((((((((((((((((((())))))))))))*)1)3)1)2)A)B)I)K)I)J)Y)Z)a)c)a)b)q)r)y){)y)z)))))))))))))))))))))))))))))))** * * * ***!*#*!*"*1*2*9*;*9*:*I*J*Q*S*Q*R*a*b*i*k*i*j*y*z*********************************** + +++++!+"+)+++)+*+9+:+A+C+A+B+Q+R+Y+[+Y+Z+i+j+q+s+q+r+++++++++++++++++++++++++++++++++,,,,,,,,,,),*,1,3,1,2,A,B,I,K,I,J,Y,Z,a,c,a,b,q,r,y,{,y,z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- - - - ---!-#-!-"-1-2-9-;-9-:-I-J-Q-S-Q-R-a-b-i-k-i-j-y-z----------------------------------- . .....!.".).+.).*.9.:.A.C.A.B.Q.R.Y.[.Y.Z.i.j.q.s.q.r.................................//////////)/*/1/3/1/2/A/B/I/K/I/J/Y/Z/a/c/a/b/q/r/y/{/y/z///////////////////////////////00 0 0 0 000!0#0!0"0102090;090:0I0J0Q0S0Q0R0a0b0i0k0i0j0y0z00000000000000000000000000000000000 1 11111!1"1)1+1)1*191:1A1C1A1B1Q1R1Y1[1Y1Z1i1j1q1s1q1r1111111111111111111111111111111112222222222)2*212321222A2B2I2K2I2J2Y2Z2a2c2a2b2q2r2y2{2y2z222222222222222222222222222222233 3 3 3 333!3#3!3"3132393;393:3I3J3Q3S3Q3R3a3b3i3k3i3j3y3z33333333333333333333333333333333333 4 44444!4"4)4+4)4*494:4A4C4A4B4Q4R4Y4[4Y4Z4i4j4q4s4q4r4444444444444444444444444444444445555555555)5*515351525A5B5I5K5I5J5Y5Z5a5c5a5b5q5r5y5{5y5z555555555555555555555555555555566 6 6 6 666!6#6!6"6162696;696:6I6J6Q6S6Q6R6a6b6i6k6i6j6y6z66666666666666666666666666666666666 7 77777!7"7)7+7)7*797:7A7C7A7B7Q7R7Y7[7Y7Z7i7j7q7s7q7r7777777777777777777777777777777778888888888)8*818381828A8B8I8K8I8J8Y8Z8a8c8a8b8q8r8y8{8y8z888888888888888888888888888888899 9 9 9 999!9#9!9"9192999;999:9I9J9Q9S9Q9R9a9b9i9k9i9j9y9z99999999999999999999999999999999999 : :::::!:":):+:):*:9:::A:C:A:B:Q:R:Y:[:Y:Z:i:j:q:s:q:r:::::::::::::::::::::::::::::::::;;;;;;;;;;);*;1;3;1;2;A;B;I;K;I;J;Y;Z;a;c;a;b;q;r;y;{;y;z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< < < < <<<!<#<!<"<1<2<9<;<9<:<I<J<Q<S<Q<R<a<b<i<k<i<j<y<z<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< = =====!="=)=+=)=*=9=:=A=C=A=B=Q=R=Y=[=Y=Z=i=j=q=s=q=r=================================>>>>>>>>>>)>*>1>3>1>2>A>B>I>K>I>J>Y>Z>a>c>a>b>q>r>y>{>y>z>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ? ? ? ???!?#?!?"?1?2?9?;?9?:?I?J?Q?S?Q?R?a?b?i?k?i?j?y?z??????????????????????????????????? @ @@@@@!@"@)@+@)@*@9@:@A@C@A@B@Q@R@Y@[@Y@Z@i@j@q@s@q@r@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAA)A*A1A3A1A2AAABAIAKAIAJAYAZAaAcAaAbAqArAyA{AyAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB B B B BBB!B#B!B"B1B2B9B;B9B:BIBJBQBSBQBRBaBbBiBkBiBjByBzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C CCCCC!C"C)C+C)C*C9C:CACCCACBCQCRCYC[CYCZCiCjCqCsCqCrCCCCCCCCCCCCCCCCCCC "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{     " # * , * + : ; B D B C R S Z \ Z [ j k r t r s           * + 2 4 2 3 B C J L J K Z [ b d b c r s z | z {     " $ " # 2 3 : < : ; J K R T R S b c j l j k z {     " # * , * + : ; B D B C R S Z \ Z [ j k r t r s           * + 2 4 2 3 B C J L J K Z [ b d b c r s z | z {     "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    "$"#23:<:;JKRTRSbcjljkz{  "#*,*+:;BDBCRSZ\Z[jkrtrs*+2423BCJLJKZ[bdbcrsz|z{    " $ " # 2 3 : < : ; J K R T R S b c j l j k z { ! !!!!!"!#!*!,!*!+!:!;!B!D!B!C!R!S!Z!\!Z![!j!k!r!t!r!s!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""*"+"2"4"2"3"B"C"J"L"J"K"Z"["b"d"b"c"r"s"z"|"z"{"""""""""""""""""""""""""""""""## # # # ###"#$#"###2#3#:#<#:#;#J#K#R#T#R#S#b#c#j#l#j#k#z#{################################### $ $$$$$"$#$*$,$*$+$:$;$B$D$B$C$R$S$Z$\$Z$[$j$k$r$t$r$s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%*%+%2%4%2%3%B%C%J%L%J%K%Z%[%b%d%b%c%r%s%z%|%z%{%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & & & &&&"&$&"&#&2&3&:&<&:&;&J&K&R&T&R&S&b&c&j&l&j&k&z&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' '''''"'#'*','*'+':';'B'D'B'C'R'S'Z'\'Z'['j'k'r't'r's'''''''''''''''''''''''''''''''''((((((((((*(+(2(4(2(3(B(C(J(L(J(K(Z([(b(d(b(c(r(s(z(|(z({((((((((((((((((((((((((((((((()) ) ) ) )))")$)")#)2)3):)<):);)J)K)R)T)R)S)b)c)j)l)j)k)z){))))))))))))))))))))))))))))))))))) * *****"*#***,***+*:*;*B*D*B*C*R*S*Z*\*Z*[*j*k*r*t*r*s*********************************++++++++++*+++2+4+2+3+B+C+J+L+J+K+Z+[+b+d+b+c+r+s+z+|+z+{+++++++++++++++++++++++++++++++,, , , , ,,,",$,",#,2,3,:,<,:,;,J,K,R,T,R,S,b,c,j,l,j,k,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - -----"-#-*-,-*-+-:-;-B-D-B-C-R-S-Z-\-Z-[-j-k-r-t-r-s---------------------------------..........*.+.2.4.2.3.B.C.J.L.J.K.Z.[.b.d.b.c.r.s.z.|.z.{...............................// / / / ///"/$/"/#/2/3/:/> > > > >>>">$>">#>2>3>:><>:>;>J>K>R>T>R>S>b>c>j>l>j>k>z>{>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ? ?????"?#?*?,?*?+?:?;?B?D?B?C?R?S?Z?\?Z?[?j?k?r?t?r?s?????????????????????????????????@@@@@@@@@@*@+@2@4@2@3@B@C@J@L@J@K@Z@[@b@d@b@c@r@s@z@|@z@{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA A A A AAA"A$A"A#A2A3A:A >>>>>#>$>+>->+>,>;><>C>E>C>D>S>T>[>]>[>\>k>l>s>u>s>t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????+?,?3?5?3?4?C?D?K?M?K?L?[?\?c?e?c?d?s?t?{?}?{?|???????????????????????????????@@ @ @ @ @@@#@%@#@$@3@4@;@=@;@<@K@L@S@U@S@T@c@d@k@m@k@l@{@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ A AAAAA#A$A+A-A+A,A;A<=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}     $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u           , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | }      $ & $ % 4 5 < > < = L M T V T U d e l n l m | }     $ % , . , - < = D F D E T U \ ^ \ ] l m t v t u ,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu,-4645DELNLM\]dfdetu|~|}   $&$%45<><=LMTVTUdelnlm|}  $%,.,-<=DFDETU\^\]lmtvtu          , - 4 6 4 5 D E L N L M \ ] d f d e t u | ~ | } !! !! ! !!!$!&!$!%!4!5!!$<$=$L$M$T$V$T$U$d$e$l$n$l$m$|$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ % %%%%%$%%%,%.%,%-%<%=%D%F%D%E%T%U%\%^%\%]%l%m%t%v%t%u%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&,&-&4&6&4&5&D&E&L&N&L&M&\&]&d&f&d&e&t&u&|&~&|&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' '' ' '''$'&'$'%'4'5'<'>'<'='L'M'T'V'T'U'd'e'l'n'l'm'|'}''''''''''''''''''''''''''''''''''' ( ((((($(%(,(.(,(-(<(=(D(F(D(E(T(U(\(^(\(](l(m(t(v(t(u((((((((((((((((((((((((((((((((()))))))))),)-)4)6)4)5)D)E)L)N)L)M)\)])d)f)d)e)t)u)|)~)|)})))))))))))))))))))))))))))))))** ** * ***$*&*$*%*4*5*<*>*<*=*L*M*T*V*T*U*d*e*l*n*l*m*|*}*********************************** + +++++$+%+,+.+,+-+<+=+D+F+D+E+T+U+\+^+\+]+l+m+t+v+t+u+++++++++++++++++++++++++++++++++,,,,,,,,,,,,-,4,6,4,5,D,E,L,N,L,M,\,],d,f,d,e,t,u,|,~,|,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- -- - ---$-&-$-%-4-5-<->-<-=-L-M-T-V-T-U-d-e-l-n-l-m-|-}----------------------------------- . .....$.%.,...,.-.<.=.D.F.D.E.T.U.\.^.\.].l.m.t.v.t.u.................................//////////,/-/4/6/4/5/D/E/L/N/L/M/\/]/d/f/d/e/t/u/|/~/|/}///////////////////////////////00 00 0 000$0&0$0%04050<0>0<0=0L0M0T0V0T0U0d0e0l0n0l0m0|0}00000000000000000000000000000000000 1 11111$1%1,1.1,1-1<1=1D1F1D1E1T1U1\1^1\1]1l1m1t1v1t1u1111111111111111111111111111111112222222222,2-242624252D2E2L2N2L2M2\2]2d2f2d2e2t2u2|2~2|2}222222222222222222222222222222233 33 3 333$3&3$3%34353<3>3<3=3L3M3T3V3T3U3d3e3l3n3l3m3|3}33333333333333333333333333333333333 4 44444$4%4,4.4,4-4<4=4D4F4D4E4T4U4\4^4\4]4l4m4t4v4t4u4444444444444444444444444444444445555555555,5-545654555D5E5L5N5L5M5\5]5d5f5d5e5t5u5|5~5|5}555555555555555555555555555555566 66 6 666$6&6$6%64656<6>6<6=6L6M6T6V6T6U6d6e6l6n6l6m6|6}66666666666666666666666666666666666 7 77777$7%7,7.7,7-7<7=7D7F7D7E7T7U7\7^7\7]7l7m7t7v7t7u7777777777777777777777777777777778888888888,8-848684858D8E8L8N8L8M8\8]8d8f8d8e8t8u8|8~8|8}888888888888888888888888888888899 99 9 999$9&9$9%94959<9>9<9=9L9M9T9V9T9U9d9e9l9n9l9m9|9}99999999999999999999999999999999999 : :::::$:%:,:.:,:-:<:=:D:F:D:E:T:U:\:^:\:]:l:m:t:v:t:u:::::::::::::::::::::::::::::::::;;;;;;;;;;,;-;4;6;4;5;D;E;L;N;L;M;\;];d;f;d;e;t;u;|;~;|;};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< << < <<<$<&<$<%<4<5<<<><<<=<L<M<T<V<T<U<d<e<l<n<l<m<|<}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< = =====$=%=,=.=,=-=<===D=F=D=E=T=U=\=^=\=]=l=m=t=v=t=u=================================>>>>>>>>>>,>->4>6>4>5>D>E>L>N>L>M>\>]>d>f>d>e>t>u>|>~>|>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ?? ? ???$?&?$?%?4?5??BEGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~       % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~      % & - / - . = > E G E F U V ] _ ] ^ m n u w u v           - . 5 7 5 6 E F M O M N ] ^ e g e f u v }  } ~   %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~  %'%&56=?=>MNUWUVefmomn}~ %&-/-.=>EGEFUV]_]^mnuwuv-.5756EFMOMN]^egefuv}}~      % ' % & 5 6 = ? = > M N U W U V e f m o m n } ~ !!!!!!%!&!-!/!-!.!=!>!E!G!E!F!U!V!]!_!]!^!m!n!u!w!u!v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""-"."5"7"5"6"E"F"M"O"M"N"]"^"e"g"e"f"u"v"}""}"~"""""""""""""""""""""""""""""""## ## ####%#'#%#&#5#6#=#?#=#>#M#N#U#W#U#V#e#f#m#o#m#n#}#~################################### $$$$$$%$&$-$/$-$.$=$>$E$G$E$F$U$V$]$_$]$^$m$n$u$w$u$v$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%-%.%5%7%5%6%E%F%M%O%M%N%]%^%e%g%e%f%u%v%}%%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& && &&&&%&'&%&&&5&6&=&?&=&>&M&N&U&W&U&V&e&f&m&o&m&n&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ''''''%'&'-'/'-'.'='>'E'G'E'F'U'V']'_']'^'m'n'u'w'u'v'''''''''''''''''''''''''''''''''((((((((((-(.(5(7(5(6(E(F(M(O(M(N(](^(e(g(e(f(u(v(}((}(~((((((((((((((((((((((((((((((()) )) ))))%)')%)&)5)6)=)?)=)>)M)N)U)W)U)V)e)f)m)o)m)n)})~))))))))))))))))))))))))))))))))))) ******%*&*-*/*-*.*=*>*E*G*E*F*U*V*]*_*]*^*m*n*u*w*u*v*********************************++++++++++-+.+5+7+5+6+E+F+M+O+M+N+]+^+e+g+e+f+u+v+}++}+~+++++++++++++++++++++++++++++++,, ,, ,,,,%,',%,&,5,6,=,?,=,>,M,N,U,W,U,V,e,f,m,o,m,n,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ------%-&---/---.-=->-E-G-E-F-U-V-]-_-]-^-m-n-u-w-u-v---------------------------------..........-...5.7.5.6.E.F.M.O.M.N.].^.e.g.e.f.u.v.}..}.~...............................// // ////%/'/%/&/5/6/=/?/=/>/M/N/U/W/U/V/e/f/m/o/m/n/}/~/////////////////////////////////// 000000%0&0-0/0-0.0=0>0E0G0E0F0U0V0]0_0]0^0m0n0u0w0u0v0000000000000000000000000000000001111111111-1.151715161E1F1M1O1M1N1]1^1e1g1e1f1u1v1}11}1~111111111111111111111111111111122 22 2222%2'2%2&25262=2?2=2>2M2N2U2W2U2V2e2f2m2o2m2n2}2~22222222222222222222222222222222222 333333%3&3-3/3-3.3=3>3E3G3E3F3U3V3]3_3]3^3m3n3u3w3u3v3333333333333333333333333333333334444444444-4.454745464E4F4M4O4M4N4]4^4e4g4e4f4u4v4}44}4~444444444444444444444444444444455 55 5555%5'5%5&55565=5?5=5>5M5N5U5W5U5V5e5f5m5o5m5n5}5~55555555555555555555555555555555555 666666%6&6-6/6-6.6=6>6E6G6E6F6U6V6]6_6]6^6m6n6u6w6u6v6666666666666666666666666666666667777777777-7.757775767E7F7M7O7M7N7]7^7e7g7e7f7u7v7}77}7~777777777777777777777777777777788 88 8888%8'8%8&85868=8?8=8>8M8N8U8W8U8V8e8f8m8o8m8n8}8~88888888888888888888888888888888888 999999%9&9-9/9-9.9=9>9E9G9E9F9U9V9]9_9]9^9m9n9u9w9u9v999999999999999999999999999999999::::::::::-:.:5:7:5:6:E:F:M:O:M:N:]:^:e:g:e:f:u:v:}::}:~:::::::::::::::::::::::::::::::;; ;; ;;;;%;';%;&;5;6;=;?;=;>;M;N;U;W;U;V;e;f;m;o;m;n;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <<<<<<%<&<-</<-<.<=<><E<G<E<F<U<V<]<_<]<^<m<n<u<w<u<v<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<==========-=.=5=7=5=6=E=F=M=O=M=N=]=^=e=g=e=f=u=v=}==}=~===============================>> >> >>>>%>'>%>&>5>6>=>?>=>>>M>N>U>W>U>V>e>f>m>o>m>n>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ??????%?&?-?/?-?.?=?>?E?G?E?F?U?V?]?_?]?^?m?n?u?w?u?v?????????????????????????????????@@@@@@@@@@-@.@5@7@5@6@E@F@M@O@M@N@]@^@e@g@e@f@u@v@}@@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AA AAAA%A'A%A&A5A6A=A?A=A>AMANAUAWAUAVAeAfAmAoAmAnA}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBB%B&B-B/B-B.B=B>BEBGBEBFBUBVB]B_B]B^BmBnBuBwBuBvBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCC-C.C5C7C5C6CECFCMCOCMCNC]C^CeCgCeCfCuCvC}CC}C~CCCCCCCCCCCCCCC ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw         . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~        & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w          . / 6 8 6 7 F G N P N O ^ _ f h f g v w ~ ~          & ( & ' 6 7 > @ > ? N O V X V W f g n p n o ~   &'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~&'.0./>?FHFGVW^`^_novxvw ./6867FGNPNO^_fhfgvw~~&(&'67>@>?NOVXVWfgnpno~       & ' . 0 . / > ? F H F G V W ^ ` ^ _ n o v x v w !!!!!!! !!!.!/!6!8!6!7!F!G!N!P!N!O!^!_!f!h!f!g!v!w!~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""&"("&"'"6"7">"@">"?"N"O"V"X"V"W"f"g"n"p"n"o"~"""""""""""""""""""""""""""""""""#""######&#'#.#0#.#/#>#?#F#H#F#G#V#W#^#`#^#_#n#o#v#x#v#w#################################$$$$$$$ $$$.$/$6$8$6$7$F$G$N$P$N$O$^$_$f$h$f$g$v$w$~$$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%&%(%&%'%6%7%>%@%>%?%N%O%V%X%V%W%f%g%n%p%n%o%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%&&&&&&&&'&.&0&.&/&>&?&F&H&F&G&V&W&^&`&^&_&n&o&v&x&v&w&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' '''.'/'6'8'6'7'F'G'N'P'N'O'^'_'f'h'f'g'v'w'~''~''''''''''''''''''''''''''''''''((((((((&(((&('(6(7(>(@(>(?(N(O(V(X(V(W(f(g(n(p(n(o(~((((((((((((((((((((((((((((((((()(())))))&)').)0).)/)>)?)F)H)F)G)V)W)^)`)^)_)n)o)v)x)v)w)))))))))))))))))))))))))))))))))******* ***.*/*6*8*6*7*F*G*N*P*N*O*^*_*f*h*f*g*v*w*~**~********************************++++++++&+(+&+'+6+7+>+@+>+?+N+O+V+X+V+W+f+g+n+p+n+o+~+++++++++++++++++++++++++++++++++,++,,,,,,&,',.,0,.,/,>,?,F,H,F,G,V,W,^,`,^,_,n,o,v,x,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- ---.-/-6-8-6-7-F-G-N-P-N-O-^-_-f-h-f-g-v-w-~--~--------------------------------........&.(.&.'.6.7.>.@.>.?.N.O.V.X.V.W.f.g.n.p.n.o.~................................./..//////&/'/./0/.///>/?/F/H/F/G/V/W/^/`/^/_/n/o/v/x/v/w/////////////////////////////////0000000 000.0/060806070F0G0N0P0N0O0^0_0f0h0f0g0v0w0~00~0000000000000000000000000000000011111111&1(1&1'16171>1@1>1?1N1O1V1X1V1W1f1g1n1p1n1o1~111111111111111111111111111111111211222222&2'2.202.2/2>2?2F2H2F2G2V2W2^2`2^2_2n2o2v2x2v2w2222222222222222222222222222222223333333 333.3/363836373F3G3N3P3N3O3^3_3f3h3f3g3v3w3~33~3333333333333333333333333333333344444444&4(4&4'46474>4@4>4?4N4O4V4X4V4W4f4g4n4p4n4o4~444444444444444444444444444444444544555555&5'5.505.5/5>5?5F5H5F5G5V5W5^5`5^5_5n5o5v5x5v5w5555555555555555555555555555555556666666 666.6/666866676F6G6N6P6N6O6^6_6f6h6f6g6v6w6~66~6666666666666666666666666666666677777777&7(7&7'76777>7@7>7?7N7O7V7X7V7W7f7g7n7p7n7o7~777777777777777777777777777777777877888888&8'8.808.8/8>8?8F8H8F8G8V8W8^8`8^8_8n8o8v8x8v8w8888888888888888888888888888888889999999 999.9/969896979F9G9N9P9N9O9^9_9f9h9f9g9v9w9~99~99999999999999999999999999999999::::::::&:(:&:':6:7:>:@:>:?:N:O:V:X:V:W:f:g:n:p:n:o:~:::::::::::::::::::::::::::::::::;::;;;;;;&;';.;0;.;/;>;?;F;H;F;G;V;W;^;`;^;_;n;o;v;x;v;w;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<< <<<.</<6<8<6<7<F<G<N<P<N<O<^<_<f<h<f<g<v<w<~<<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========&=(=&='=6=7=>=@=>=?=N=O=V=X=V=W=f=g=n=p=n=o=~=================================>==>>>>>>&>'>.>0>.>/>>>?>F>H>F>G>V>W>^>`>^>_>n>o>v>x>v>w>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????? ???.?/?6?8?6?7?F?G?N?P?N?O?^?_?f?h?f?g?v?w?~??~????????????????????????????????@@@@@@@@&@(@&@'@6@7@>@@@>@?@N@O@V@X@V@W@f@g@n@p@n@o@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@AAAAAA&A'A.A0A.A/A>A?AFAHAFAGAVAWA^A`A^A_AnAoAvAxAvAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBB BBB.B/B6B8B6B7BFBGBNBPBNBOB^B_BfBhBfBgBvBwB~BB~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCC&C(C&C'C6C7C>C@C>C?CNCOCVCXCVCWCfCgCnCpCnCoC~CCCCCCCCCCCCCCCCCC ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx       ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x          ' ) ' ( 7 8 ? A ? @ O P W Y W X g h o q o p         ' ( / 1 / 0 ? @ G I G H W X _ a _ ` o p w y w x  ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx ! /07978GHOQOP_`gighwx ')'(78?A?@OPWYWXghoqop'(/1/0?@GIGHWX_a_`opwywx       !  / 0 7 9 7 8 G H O Q O P _ ` g i g h w x   !!!!!!! !'!)!'!(!7!8!?!A!?!@!O!P!W!Y!W!X!g!h!o!q!o!p!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!"""""""'"("/"1"/"0"?"@"G"I"G"H"W"X"_"a"_"`"o"p"w"y"w"x""""""""""""""""""""""""""""""""## ######!## #/#0#7#9#7#8#G#H#O#Q#O#P#_#`#g#i#g#h#w#x###################################$$$$$$$ $'$)$'$($7$8$?$A$?$@$O$P$W$Y$W$X$g$h$o$q$o$p$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$%%%%%%%'%(%/%1%/%0%?%@%G%I%G%H%W%X%_%a%_%`%o%p%w%y%w%x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& &&&&&&!&& &/&0&7&9&7&8&G&H&O&Q&O&P&_&`&g&i&g&h&w&x&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''' ''')'''('7'8'?'A'?'@'O'P'W'Y'W'X'g'h'o'q'o'p''''''''''''''''''''''''''''''''''('((((((('(((/(1(/(0(?(@(G(I(G(H(W(X(_(a(_(`(o(p(w(y(w(x(((((((((((((((((((((((((((((((()) ))))))!)) )/)0)7)9)7)8)G)H)O)Q)O)P)_)`)g)i)g)h)w)x)))))))))))))))))))))))))))))))))))******* *'*)*'*(*7*8*?*A*?*@*O*P*W*Y*W*X*g*h*o*q*o*p**********************************+*+++++++'+(+/+1+/+0+?+@+G+I+G+H+W+X+_+a+_+`+o+p+w+y+w+x++++++++++++++++++++++++++++++++,, ,,,,,,!,, ,/,0,7,9,7,8,G,H,O,Q,O,P,_,`,g,i,g,h,w,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------- -'-)-'-(-7-8-?-A-?-@-O-P-W-Y-W-X-g-h-o-q-o-p----------------------------------.-.......'.(./.1./.0.?.@.G.I.G.H.W.X._.a._.`.o.p.w.y.w.x................................// //////!// ///0/7/9/7/8/G/H/O/Q/O/P/_/`/g/i/g/h/w/x///////////////////////////////////0000000 0'0)0'0(07080?0A0?0@0O0P0W0Y0W0X0g0h0o0q0o0p0000000000000000000000000000000000101111111'1(1/111/101?1@1G1I1G1H1W1X1_1a1_1`1o1p1w1y1w1x1111111111111111111111111111111122 222222!22 2/20272927282G2H2O2Q2O2P2_2`2g2i2g2h2w2x222222222222222222222222222222222223333333 3'3)3'3(37383?3A3?3@3O3P3W3Y3W3X3g3h3o3q3o3p3333333333333333333333333333333333434444444'4(4/414/404?4@4G4I4G4H4W4X4_4a4_4`4o4p4w4y4w4x4444444444444444444444444444444455 555555!55 5/50575957585G5H5O5Q5O5P5_5`5g5i5g5h5w5x555555555555555555555555555555555556666666 6'6)6'6(67686?6A6?6@6O6P6W6Y6W6X6g6h6o6q6o6p6666666666666666666666666666666666767777777'7(7/717/707?7@7G7I7G7H7W7X7_7a7_7`7o7p7w7y7w7x7777777777777777777777777777777788 888888!88 8/80878987888G8H8O8Q8O8P8_8`8g8i8g8h8w8x888888888888888888888888888888888889999999 9'9)9'9(97989?9A9?9@9O9P9W9Y9W9X9g9h9o9q9o9p9999999999999999999999999999999999:9:::::::':(:/:1:/:0:?:@:G:I:G:H:W:X:_:a:_:`:o:p:w:y:w:x::::::::::::::::::::::::::::::::;; ;;;;;;!;; ;/;0;7;9;7;8;G;H;O;Q;O;P;_;`;g;i;g;h;w;x;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<< <'<)<'<(<7<8<?<A<?<@<O<P<W<Y<W<X<g<h<o<q<o<p<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=<======='=(=/=1=/=0=?=@=G=I=G=H=W=X=_=a=_=`=o=p=w=y=w=x================================>> >>>>>>!>> >/>0>7>9>7>8>G>H>O>Q>O>P>_>`>g>i>g>h>w>x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????? ?'?)?'?(?7?8???A???@?O?P?W?Y?W?X?g?h?o?q?o?p??????????????????????????????????@?@@@@@@@'@(@/@1@/@0@?@@@G@I@G@H@W@X@_@a@_@`@o@p@w@y@w@x@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA AAAAAA!AA A/A0A7A9A7A8AGAHAOAQAOAPA_A`AgAiAgAhAwAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBB B'B)B'B(B7B8B?BAB?B@BOBPBWBYBWBXBgBhBoBqBoBpBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCCC'C(C/C1C/C0C?C@CGCICGCHCWCXC_CaC_C`CoCpCwCyCwCxCCCCCCCCCCCCCCCCCCCDATAC =DATAhr= .corner_vert7?X= .corner_edge?=)ծ?ؗ=DATA7?LC  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< <!<"<#<$<%<&<'<(<)<*<+<,<-<.</<0<1<2<3<4<5<6<7<8<9<:<;<<<=<><?<@<A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z<[<\<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|<}<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========= = = = = =================== =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDATA?LCyl!k2L;2{z!]*!N;M;m_*2^*|o!n2O;2~}!`*!Q;P;pb*2a*r!q2R;2!c*!T;S;se*2d*  u!t2U;2!f*!W; V;vh*2g*  x!w2X;2!i*!Z;Y;yk*2j*{!z2[;2!l*!];\;|n*2m*~!}2^;2!o*!`;_;q*2p*!2a;2!r*!c;b; t*2s*!2d;2 !u*!f;e;  w*2v*!2g;2 "x*"i;h;z*2y*"2j;2"{*"l; k;}*2|*"!"2m;2"~*"o;#n;*2*%$"2p;2 "* "r;&q;*2*(' "2s;2 "* "u;)t;*2*+*"2v;2"*"x;,w;*3*.-"3y;3"*"{;/z;! *3*10"3|;3""*"~;2};$#*3*43"3;3%"*";5;'&* 3*76" 3; 3("*";8;*)* 3*:9"3; 3+"*";;;-,*3*=< "3;3.""*!";>;0/*3*@?#"3;31%"*$";A;32*3*CB&"3;34("*'";D;65*3*FE)"3;37+"**";G;98*3*IH,"3;3:."*-";J;<;*3*LK/" 3;3=1"*0";M;?>*!3*ON2"#3;"3@4"*3";P;BA*$3*RQ5"&3;%3C7"*6";S;ED*'3*UT8")3;(3F:"*9";V;HG**3*XW;",3;+3I="*<";Y;KJ*-3*[Z>"/3;.3L@"*?";\;NM*03*^]A"23;13OC"*B";_;QP*33*a`D"53;43RF"*E";b;TS*63*dcG"83;73UI"*H";e;WV*93*gfJ";3;:3XL"*K";h;ZY*<3*jiM">3;=3[O"*N";k;]\*?3*mlP"A3;@3^R"*Q";n;`_*B3*poS"D3;C3aU"*T";q;cb*E3*srV"G3;F3dX"*W";t;fe*H3*vuY"J3;I3g["*Z";w;ih*K3*yx\"M3;L3j^"*]";z;lk*N3*|{_"P3;O3ma"*`";};on*Q3*~b"S3;R3pd"*c";;rq*T3*e"V3;U3sg"*f";;ut*W3*h"Y3;X3vj"*i";;xw*Z3* k"\3;[3 y m"*l";;{z*]3* n"_3;^3 | p"*o";;~}*`3* q"b3;a3  s"*r";;*c3* t"e3;d3  v"*u";;*f3* w"h3;g3  y"*x";;*i3* z"k3;j3  |"*{";;*l3* }"n3;m3  "*~";;*o3* "q3;p3  "*";; *r3* " t3;s3  "*";; *u3* " w3;v3  "*";;+x3+ "z3;y3  "+";;+{3+! "}3;|3# " "+";;+~3+$ "3;3& % "+";; +3 +' "3;3) ( " +";; +3 +* "3;3, + "+";;+3+- "3<3/ . "+"<<!+3+0 #""3<32 1 "+"<<$+3+3 &"%3<35 4 "+"<<'+3+6 )"(3 <38 7 "+" < <*+3+9 ,"+3 <3; : "+"< <-+3+< /".3<3> = " +"<<0"+3!+? 2"13<3A @ "#+"<<3%+3$+B 5"43<3D C "&+"<<6(+3'+E 8"73<3G F ")+"<<9++3*+H ;":3<3J I ",+"<<<.+3-+K >"=3<3M L "/+" <<?1+30+N A"@3!<3P O "2+"#<"<B4+33+Q D"C3$<3S R "5+"&<%<E7+36+T G"F3'<3V U "8+")<(<H:+39+W J"I3*<3Y X ";+",<+<K=+3<+Z M"L3-<3\ [ ">+"/<.<N@+3?+] P"O30<3_ ^ "A+"2<1<QC+3B+` S"R33<3b a "D+"5<4<TF+3E+c V"U36<3e d "G+"8<7<WI+3H+f Y"X39<3h g "J+";<:<ZL+3K+i \"[3<<3k j "M+"><=<]O+3N+l _"^3?<3n m "P+"A<@<`R+3Q+o b"a3B<3q p "S+"D<C<cU+3T+r e"d3E<3t s "V+"G<F<fX+3W+u h"g3H<3w v "Y+"J<I<i[+3Z+x k"j3K<3z y "\+"M<L<l^+3]+{ n"m3N<3} | "_+"P<O<oa+3`+~ q"p3Q<3  "b+"S<R<rd+3c+  t"s3T<3  "e+"V< U<ug+3f+  w"v3W<3  "h+"Y< X<xj+3i+ z"y3Z<3  "k+"\<[<{m+3l+ }"|3]<3  "n+"_<^<~p+3o+ "3`<3  "q+"b<a<s+3r+ "3c<3  "t+"e<d<  v+3u+ "3f<3  #w+"h<g< y+3x+ #3i<3  #z+#k<j<|+3{+! #3l<3  #}+#n<"m<+3~+$ ##3o<3  #+#q<%p<+3+' & #3r<3  #+ #t<(s<+3+* ) #3u<3  #+#w<+v<+3+- ,#4x<4  #+#z<.y< +4+0 /#4{<4 ! #+#}<1|<#"+4+3 2#4~<4 $ #+#<4<&%+4+6 5# 4< 4 ' #+#<7<)(+ 4+9 8# 4< 4 * #+#<:<,++4+< ;#4<4 - !#+ #<=</.+4+? >"#4<4 0 $#+##<@<21+4+B A%#4<4 3 '#+&#<C<54+4+E D(#4<4 6 *#+)#<F<87+4+H G+#4<4 9 -#+,#<I<;:+4+K J.#4<4 < 0#+/#<L<>=+ 4+N M1#"4<!4 ? 3#+2#<O<A@+#4+Q P4#%4<$4 B 6#+5#<R<DC+&4+T S7#(4<'4 E 9#+8#<U<GF+)4+W V:#+4<*4 H <#+;#<X<JI+,4+Z Y=#.4<-4 K ?#+>#<[<ML+/4+] \@#14<04 N B#+A#<^<PO+24+` _C#44<34 Q E#+D#<a<SR+54+c bF#74<64 T H#+G#<d<VU+84+f eI#:4<94 W K#+J#<g<YX+;4+i hL#=4<<4 Z N#+M#<j<\[+>4+l kO#@4<?4 ] Q#+P#<m<_^+A4+o nR#C4<B4 ` T#+S#<p<ba+D4+r qU#F4<E4 c W#+V#<s<ed+G4+u tX#I4<H4 f Z#+Y#<v<hg+J4+x w[#L4<K4 i ]#+\#<y<kj+M4+{ z^#O4<N4 l `#+_#<|<nm+P4+~ }a#R4<Q4 o c#+b#<<qp+S4+ d#U4<T4 r f#+e#<<ts+V4+ g#X4<W4 u i#+h#<<wv+Y4+ j#[4<Z4 x l#+k#<<zy+\4+ m#^4<]4 { o#+n#<<}|+_4+ p#a4<`4 ~ r#+q#<<+b4+ s#d4<c4  u#+t#<<+e4+ v#g4<f4  x#+w#<<+h4+ y#j4<i4  {#+z#<<+k4+ |#m4<l4  ~#+}#<<+n4+ #p4<o4  #+#<<+q4+  # s4<r4  #+#<< +t4+  # v4<u4  #+#<<,w4+ #y4<x4  #,#<<,z4, #|4<{4" ! #,#<<,}4,# #4<~4% $ #,#<< ,4,& #4<4( ' # ,#<< ,4 ,) #4<4+ * # ,#<<,4,, #4<4. - #,#== ,4,/ "#!4=41 0 #,#==#,4,2 %#$4=44 3 #,#==&,4,5 (#'4=47 6 #,# = =),4,8 +#*4 =4: 9 #,# = =,,4,; .#-4=4= < #,#==/!,4 ,> 1#04=4@ ? #",#==2$,4#,A 4#34=4C B #%,#==5',4&,D 7#64=4F E #(,#==8*,4),G :#94=4I H #+,#==;-,4,,J =#<4=4L K #.,#==>0,4/,M @#?4 =4O N #1,#"=!=A3,42,P C#B4#=4R Q #4,#%=$=D6,45,S F#E4&=4U T #7,#(='=G9,48,V I#H4)=4X W #:,#+=*=J<,4;,Y L#K4,=4[ Z #=,#.=-=M?,4>,\ O#N4/=4^ ] #@,#1=0=PB,4A,_ R#Q42=4a ` #C,#4=3=SE,4D,b U#T45=4d c #F,#7=6=VH,4G,e X#W48=4g f #I,#:=9=YK,4J,h [#Z4;=4j i #L,#==<=\N,4M,k ^#]4>=4m l #O,#@=?=_Q,4P,n a#`4A=4p o #R,#C=B=bT,4S,q d#c4D=4s r #U,#F=E=eW,4V,t g#f4G=4v u #X,#I=H=hZ,4Y,w j#i4J=4y x #[,#L=K=k],4\,z m#l4M=4| { #^,#O=N=n`,4_,} p#o4P=4 ~ #a,#R=Q=qc,4b, s#r4S=4  #d,#U= T=tf,4e,  v#u4V=4  #g,#X= W=wi,4h, y#x4Y=4  #j,#[=Z=zl,4k, |#{4\=4  #m,#^=]=}o,4n, #~4_=4  #p,#a=`=r,4q, #4b=4  #s,#d=c=  u,4t, #4e=4  #v,#g=f=  x,4w, $4h=4  $y,$j=i={,4z,  $4k=4  $|,$m=!l=~,4},# "$4n=4  $,$p=$o=,4,& % $4q=4  $, $s='r=,4,) ( $4t=4  $, $v=*u=,4,, +$5w=4  $,$y=-x=,5,/ .$5z=5  $,$|=0{="!,5,2 1$5}=5 # $,$=3~=%$,5,5 4$ 5=5 & $,$=6=(', 5,8 7$ 5= 5 ) $,$=9=+*, 5,; :$5=5 , $,$=<=.-,5,> =!$5=5 / #$,"$=?=10,5,A @$$5=5 2 &$,%$=B=43,5,D C'$5=5 5 )$,($=E=76,5,G F*$5=5 8 ,$,+$=H=:9,5,J I-$5=5 ; /$,.$=K==<,5,M L0$!5= 5 > 2$,1$=N=@?,"5,P O3$$5=#5 A 5$,4$=Q=CB,%5,S R6$'5=&5 D 8$,7$=T=FE,(5,V U9$*5=)5 G ;$,:$=W=IH,+5,Y X<$-5=,5 J >$,=$=Z=LK,.5,\ [?$05=/5 M A$,@$=]=ON,15,_ ^B$35=25 P D$,C$=`=RQ,45,b aE$65=55 S G$,F$=c=UT,75,e dH$95=85 V J$,I$=f=XW,:5,h gK$<5=;5 Y M$,L$=i=[Z,=5,k jN$?5=>5 \ P$,O$=l=^],@5,n mQ$B5=A5 _ S$,R$=o=a`,C5,q pT$E5=D5 b V$,U$=r=dc,F5,t sW$H5=G5 e Y$,X$=u=gf,I5,w vZ$K5=J5 h \$,[$=x=ji,L5,z y]$N5=M5 k _$,^$={=ml,O5,} |`$Q5=P5 n b$,a$=~=po,R5, c$T5=S5 q e$,d$==sr,U5, f$W5=V5 t h$,g$==vu,X5, i$Z5=Y5 w k$,j$==yx,[5, l$]5=\5 z n$,m$==|{,^5, o$`5=_5 } q$,p$==~,a5, r$c5=b5  t$,s$==,d5, u$f5=e5  w$,v$==,g5, x$i5=h5  z$,y$==,j5, {$l5=k5  }$,|$==,m5, ~$o5=n5  $,$==,p5,  $r5=q5  $,$== ,s5,  $ u5=t5  $,$== ,v5, $x5=w5  $-$==-y5- ${5=z5!  $-$==-|5-" $~5=}5$ # $-$==-5-% $5=5' & $ -$== -5 -( $5=5* ) $ -$==-5 -+ $5=5- , $-$>=-5-. !$ 5>50 / $-$>>"-5-1 $$#5>53 2 $-$>>%-5-4 '$&5>56 5 $-$ >>(-5-7 *$)5 >59 8 $-$ > >+-5-: -$,5 >5< ; $-$>>. -5-= 0$/5>5? > $!-$>>1#-5"-@ 3$25>5B A $$-$>>4&-5%-C 6$55>5E D $'-$>>7)-5(-F 9$85>5H G $*-$>>:,-5+-I <$;5>5K J $--$>>=/-5.-L ?$>5>5N M $0-$!> >@2-51-O B$A5">5Q P $3-$$>#>C5-54-R E$D5%>5T S $6-$'>&>F8-57-U H$G5(>5W V $9-$*>)>I;-5:-X K$J5+>5Z Y $<-$->,>L>-5=-[ N$M5.>5] \ $?-$0>/>OA-5@-^ Q$P51>5` _ $B-$3>2>RD-5C-a T$S54>5c b $E-$6>5>UG-5F-d W$V57>5f e $H-$9>8>XJ-5I-g Z$Y5:>5i h $K-$<>;>[M-5L-j ]$\5=>5l k $N-$?>>>^P-5O-m `$_5@>5o n $Q-$B>A>aS-5R-p c$b5C>5r q $T-$E>D>dV-5U-s f$e5F>5u t $W-$H>G>gY-5X-v i$h5I>5x w $Z-$K>J>j\-5[-y l$k5L>5{ z $]-$N>M>m_-5^-| o$n5O>5~ } $`-$Q>P>pb-5a- r$q5R>5  $c-$T>S>se-5d-  u$t5U>5  $f-$W> V>vh-5g-  x$w5X>5  $i-$Z>Y>yk-5j- {$z5[>5  $l-$]>\>|n-5m- ~$}5^>5  $o-$`>_>q-5p- $5a>5  $r-$c>b> t-5s- $5d>5  $u-$f>e>  w-5v- $5g>5  %x-%i>h>z-5y- %5j>5  %{-%l> k>}-5|-" !%5m>5  %~-%o>#n>-5-% $%5p>5  %- %r>&q>-5-( ' %5s>5  %- %u>)t>-5-+ *%5v>5  %-%x>,w>-6-. -%6y>6  %-%{>/z>! -6-1 0%6|>6 " %-%~>2}>$#-6-4 3%6>6 % %-%>5>'&- 6-7 6% 6> 6 ( %-%>8>*)- 6-: 9%6> 6 + %-%>;>-,-6-= < %6>6 . "%-!%>>>0/-6-@ ?#%6>6 1 %%-$%>A>32-6-C B&%6>6 4 (%-'%>D>65-6-F E)%6>6 7 +%-*%>G>98-6-I H,%6>6 : .%--%>J><;-6-L K/% 6>6 = 1%-0%>M>?>-!6-O N2%#6>"6 @ 4%-3%>P>BA-$6-R Q5%&6>%6 C 7%-6%>S>ED-'6-U T8%)6>(6 F :%-9%>V>HG-*6-X W;%,6>+6 I =%-<%>Y>KJ--6-[ Z>%/6>.6 L @%-?%>\>NM-06-^ ]A%26>16 O C%-B%>_>QP-36-a `D%56>46 R F%-E%>b>TS-66-d cG%86>76 U I%-H%>e>WV-96-g fJ%;6>:6 X L%-K%>h>ZY-<6-j iM%>6>=6 [ O%-N%>k>]\-?6-m lP%A6>@6 ^ R%-Q%>n>`_-B6-p oS%D6>C6 a U%-T%>q>cb-E6-s rV%G6>F6 d X%-W%>t>fe-H6-v uY%J6>I6 g [%-Z%>w>ih-K6-y x\%M6>L6 j ^%-]%>z>lk-N6-| {_%P6>O6 m a%-`%>}>on-Q6- ~b%S6>R6 p d%-c%>>rq-T6- e%V6>U6 s g%-f%>>ut-W6- h%Y6>X6 v j%-i%>>xw-Z6- k%\6>[6 y m%-l%>>{z-]6- n%_6>^6 | p%-o%>>~}-`6- q%b6>a6  s%-r%>>-c6- t%e6>d6  v%-u%>>-f6- w%h6>g6  y%-x%>>-i6- z%k6>j6  |%-{%>>-l6- }%n6>m6  %-~%>>-o6- %q6>p6  %-%>> -r6-  % t6>s6  %-%>> -u6- % w6>v6  %-%>>.x6. %z6>y6  %.%>>.{6.! %}6>|6# " %.%>>.~6.$ %6>6& % %.%>> .6 .' %6>6) ( % .%>> .6 .* %6>6, + %.%>>.6.-  %6?6/ . %.%??!.6.0 #%"6?62 1 %.%??$.6.3 &%%6?65 4 %.%??'.6.6 )%(6 ?68 7 %.% ? ?*.6.9 ,%+6 ?6; : %.%? ?-.6.< /%.6?6> = % .%??0".6!.? 2%16?6A @ %#.%??3%.6$.B 5%46?6D C %&.%??6(.6'.E 8%76?6G F %).%??9+.6*.H ;%:6?6J I %,.%??<..6-.K >%=6?6M L %/.% ???1.60.N A%@6!?6P O %2.%#?"?B4.63.Q D%C6$?6S R %5.%&?%?E7.66.T G%F6'?6V U %8.%)?(?H:.69.W J%I6*?6Y X %;.%,?+?K=.6<.Z M%L6-?6\ [ %>.%/?.?N@.6?.] P%O60?6_ ^ %A.%2?1?QC.6B.` S%R63?6b a %D.%5?4?TF.6E.c V%U66?6e d %G.%8?7?WI.6H.f Y%X69?6h g %J.%;?:?ZL.6K.i \%[6?=?]O.6N.l _%^6??6n m %P.%A?@?`R.6Q.o b%a6B?6q p %S.%D?C?cU.6T.r e%d6E?6t s %V.%G?F?fX.6W.u h%g6H?6w v %Y.%J?I?i[.6Z.x k%j6K?6z y %\.%M?L?l^.6].{ n%m6N?6} | %_.%P?O?oa.6`.~ q%p6Q?6  %b.%S?R?rd.6c.  t%s6T?6  %e.%V? U?ug.6f.  w%v6W?6  %h.%Y? X?xj.6i. z%y6Z?6  %k.%\?[?{m.6l. }%|6]?6  %n.%_?^?~p.6o. %6`?6  %q.%b?a?s.6r. %6c?6  %t.%e?d?  v.6u. %6f?6  &w.%h?g? y.6x. &6i?6  &z.&k?j?|.6{.! &6l?6  &}.&n?"m?.6~.$ #&6o?6  &.&q?%p?.6.' & &6r?6  &. &t?(s?.6.* ) &6u?6  &.&w?+v?.6.- ,&7x?7  &.&z?.y? .7.0 /&7{?7 ! &.&}?1|?#".7.3 2&7~?7 $ &.&?4?&%.7.6 5& 7? 7 ' &.&?7?)(. 7.9 8& 7? 7 * &.&?:?,+.7.< ;&7?7 - !&. &?=?/..7.? >"&7?7 0 $&.#&?@?21.7.B A%&7?7 3 '&.&&?C?54.7.E D(&7?7 6 *&.)&?F?87.7.H G+&7?7 9 -&.,&?I?;:.7.K J.&7?7 < 0&./&?L?>=. 7.N M1&"7?!7 ? 3&.2&?O?A@.#7.Q P4&%7?$7 B 6&.5&?R?DC.&7.T S7&(7?'7 E 9&.8&?U?GF.)7.W V:&+7?*7 H <&.;&?X?JI.,7.Z Y=&.7?-7 K ?&.>&?[?ML./7.] \@&17?07 N B&.A&?^?PO.27.` _C&47?37 Q E&.D&?a?SR.57.c bF&77?67 T H&.G&?d?VU.87.f eI&:7?97 W K&.J&?g?YX.;7.i hL&=7?<7 Z N&.M&?j?\[.>7.l kO&@7??7 ] Q&.P&?m?_^.A7.o nR&C7?B7 ` T&.S&?p?ba.D7.r qU&F7?E7 c W&.V&?s?ed.G7.u tX&I7?H7 f Z&.Y&?v?hg.J7.x w[&L7?K7 i ]&.\&?y?kj.M7.{ z^&O7?N7 l `&._&?|?nm.P7.~ }a&R7?Q7 o c&.b&??qp.S7. d&U7?T7 r f&.e&??ts.V7. g&X7?W7 u i&.h&??wv.Y7. j&[7?Z7 x l&.k&??zy.\7. m&^7?]7 { o&.n&??}|._7. p&a7?`7 ~ r&.q&??.b7. s&d7?c7  u&.t&??.e7. v&g7?f7  x&.w&??.h7. y&j7?i7  {&.z&??.k7. |&m7?l7  ~&.}&??.n7. &p7?o7  &.&??.q7.  & s7?r7  &.&?? .t7.  & v7?u7  &.&??/w7. &y7?x7  &/&??/z7/ &|7?{7" ! &/&??/}7/# &7?~7% $ &/&?? /7/& &7?7( ' & /&?? /7 /) &7?7+ * & /&??/7/, &7?7. - &/&@@ /7// "&!7@71 0 &/&@@#/7/2 %&$7@74 3 &/&@@&/7/5 (&'7@77 6 &/& @ @)/7/8 +&*7 @7: 9 &/& @ @,/7/; .&-7@7= < &/&@@/!/7 /> 1&07@7@ ? &"/&@@2$/7#/A 4&37@7C B &%/&@@5'/7&/D 7&67@7F E &(/&@@8*/7)/G :&97@7I H &+/&@@;-/7,/J =&<7@7L K &./&@@>0/7//M @&?7 @7O N &1/&"@!@A3/72/P C&B7#@7R Q &4/&%@$@D6/75/S F&E7&@7U T &7/&(@'@G9/78/V I&H7)@7X W &:/&+@*@J/\ O&N7/@7^ ] &@/&1@0@PB/7A/_ R&Q72@7a ` &C/&4@3@SE/7D/b U&T75@7d c &F/&7@6@VH/7G/e X&W78@7g f &I/&:@9@YK/7J/h [&Z7;@7j i &L/&=@<@\N/7M/k ^&]7>@7m l &O/&@@?@_Q/7P/n a&`7A@7p o &R/&C@B@bT/7S/q d&c7D@7s r &U/&F@E@eW/7V/t g&f7G@7v u &X/&I@H@hZ/7Y/w j&i7J@7y x &[/&L@K@k]/7\/z m&l7M@7| { &^/&O@N@n`/7_/} p&o7P@7 ~ &a/&R@Q@qc/7b/ s&r7S@7  &d/&U@ T@tf/7e/  v&u7V@7  &g/&X@ W@wi/7h/ y&x7Y@7  &j/&[@Z@zl/7k/ |&{7\@7  &m/&^@]@}o/7n/ &~7_@7  &p/&a@`@r/7q/ &7b@7  &s/&d@c@  u/7t/ &7e@7  &v/&g@f@  x/7w/ '7h@7  'y/'j@i@{/7z/  '7k@7  '|/'m@!l@~/7}/# "'7n@7  '/'p@$o@/7/& % '7q@7  '/ 's@'r@/7/) ( '7t@7  '/ 'v@*u@/7/, +'8w@7  '/'y@-x@/8// .'8z@8  '/'|@0{@"!/8/2 1'8}@8 # '/'@3~@%$/8/5 4' 8@8 & '/'@6@('/ 8/8 7' 8@ 8 ) '/'@9@+*/ 8/; :'8@8 , '/'@<@.-/8/> =!'8@8 / #'/"'@?@10/8/A @$'8@8 2 &'/%'@B@43/8/D C''8@8 5 )'/('@E@76/8/G F*'8@8 8 ,'/+'@H@:9/8/J I-'8@8 ; /'/.'@K@=</8/M L0'!8@ 8 > 2'/1'@N@@?/"8/P O3'$8@#8 A 5'/4'@Q@CB/%8/S R6''8@&8 D 8'/7'@T@FE/(8/V U9'*8@)8 G ;'/:'@W@IH/+8/Y X<'-8@,8 J >'/='@Z@LK/.8/\ [?'08@/8 M A'/@'@]@ON/18/_ ^B'38@28 P D'/C'@`@RQ/48/b aE'68@58 S G'/F'@c@UT/78/e dH'98@88 V J'/I'@f@XW/:8/h gK'<8@;8 Y M'/L'@i@[Z/=8/k jN'?8@>8 \ P'/O'@l@^]/@8/n mQ'B8@A8 _ S'/R'@o@a`/C8/q pT'E8@D8 b V'/U'@r@dc/F8/t sW'H8@G8 e Y'/X'@u@gf/I8/w vZ'K8@J8 h \'/['@x@ji/L8/z y]'N8@M8 k _'/^'@{@ml/O8/} |`'Q8@P8 n b'/a'@~@po/R8/ c'T8@S8 q e'/d'@@sr/U8/ f'W8@V8 t h'/g'@@vu/X8/ i'Z8@Y8w k'/j'@@yx/[8/l']8@\8zn'/m'@@|{/^8/o'`8@_8}q'/p'@@~/a8/r'c8@b8 t'/s'@@/d8/ u'f8@e8  w'/v'@@/g8/ x'i8@h8z'/y'@@/j8/{'l8@k8}'/|'@@/m8/~'o8@n8'/'@@/p8/ 'r8@q8'/'@@ /s8/ ' u8@t8'/'@@ /v8/'x8@w8'0'@@0y80'{8@z8! '0'@@0|80"'~8@}8$#'0'@@080%'8@8'&' 0'@@ 08 0('8@8*)' 0'@@08 0+'8@8-,'0'A@080.!' 8A80/'0'AA"0801$'#8A832'0'AA%0804''&8A865'0' AA(0807*')8 A898'0' A A+080:-',8 A8<;'0'AA. 080=0'/8A8?>'!0'AA1#08"0@3'28A8BA'$0'AA4&08%0C6'58A8ED''0'AA7)08(0F9'88A8HG'*0'AA:,08+0I<';8A8KJ'-0'AA=/08.0L?'>8A8NM'00'!A A@20810OB'A8"A8QP'30'$A#AC50840RE'D8%A8TS'60''A&AF80870UH'G8(A8WV'90'*A)AI;08:0XK'J8+A8ZY'<0'-A,AL>08=0[N'M8.A8]\'?0'0A/AOA08@0^Q'P81A8`_'B0'3A2ARD08C0aT'S84A8cb'E0'6A5AUG08F0dW'V87A8fe'H0'9A8AXJ08I0gZ'Y8:A8ih'K0'A^P08O0m`'_8@A8on'Q0'BAAAaS08R0pc'b8CA8rq'T0'EADAdV08U0sf'e8FA8ut'W0'HAGAgY08X0vi'h8IA8xw'Z0'KAJAj\08[0yl'k8LA8{z']0'NAMAm_08^0|o'n8OA8~}'`0'QAPApb08a0r'q8RA8'c0'TASAse08d0  u't8UA8'f0'WA VAvh08g0  x'w8XA8'i0'ZAYAyk08j0{'z8[A8'l0']A\A|n08m0~'}8^A8'o0'`A_Aq08p0'8aA8'r0'cAbA t08s0'8dA8 'u0'fAeA  w08v0'8gA8 (x0(iAhAz08y0(8jA8({0(lA kA}08|0"!(8mA8(~0(oA#nA080%$(8pA8 (0 (rA&qA080(' (8sA8 (0 (uA)tA080+*(8vA8(0(xA,wA090.-(9yA9(0({A/zA! 09010(9|A9"(0(~A2}A$#09043(9A9%(0(A5A'&0 9076( 9A 9((0(A8A*)0 90:9(9A 9+(0(A;A-,090=< (9A9."(0!(A>A0/090@?#(9A91%(0$(AAA32090CB&(9A94((0'(ADA65090FE)(9A97+(0*(AGA98090IH,(9A9:.(0-(AJA<;090LK/( 9A9=1(00(AMA?>0!90ON2(#9A"9@4(03(APABA0$90RQ5(&9A%9C7(06(ASAED0'90UT8()9A(9F:(09(AVAHG0*90XW;(,9A+9I=(0<(AYAKJ0-90[Z>(/9A.9L@(0?(A\ANM0090^]A(29A19OC(0B(A_AQP0390a`D(59A49RF(0E(AbATS0690dcG(89A79UI(0H(AeAWV0990gfJ(;9A:9XL(0K(AhAZY0<90jiM(>9A=9[O(0N(AkA]\0?90mlP(A9A@9^R(0Q(AnA`_0B90poS(D9AC9aU(0T(AqAcb0E90srV(G9AF9dX(0W(AtAfe0H90vuY(J9AI9g[(0Z(AwAih0K90yx\(M9AL9j^(0](AzAlk0N90|{_(P9AO9ma(0`(A}Aon0Q90~b(S9AR9pd(0c(AArq0T90e(V9AU9sg(0f(AAut0W90h(Y9AX9vj(0i(AAxw0Z90k(\9A[9ym(0l(AA{z0]90n(_9A^9|p(0o(AA~}0`90q(b9Aa9s(0r(AA0c90 t(e9Ad9  v(0u(AA0f90 w(h9Ag9 y(0x(AA 0i90 z( k9Aj9|(0{(AA 0l90 }( n9Am9(0~(AA 0o90 ( q9Ap9(0(AA 0r90 ( t9As9(0(AA 0u90 ( w9Av9(0(AA 1x91 ( z9Ay9 (1(AA 1{91! ( }9A|9#"(1(AA 1~91$ ( 9A9&%(1(AA  19 1' ( 9A9)(( 1(AA  19 1* ( 9A9,+(1(AA 191- ( 9B9/.(1(BB! 1910# (" 9B921(1(BB$ 1913& (% 9B954(1(BB' 1916) (( 9 B987(1( B B* 1919, (+ 9 B9;:(1(B B- 191</ (. 9B9>=( 1(BB0 "19!1?2 (1 9B9A@(#1(BB3 %19$1B5 (4 9B9DC(&1(BB6 (19'1E8 (7 9B9GF()1(BB9 +19*1H; (: 9B9JI(,1(BB< .19-1K> (= 9B9ML(/1( BB? 11901NA (@ 9!B9PO(21(#B"BB 41931QD (C 9$B9SR(51(&B%BE 71961TG (F 9'B9VU(81()B(BH :1991WJ (I 9*B9YX(;1(,B+BK =19<1ZM (L 9-B9\[(>1(/B.BN @19?1]P (O 90B9_^(A1(2B1BQ C19B1`S (R 93B9ba(D1(5B4BT F19E1cV (U 96B9ed(G1(8B7BW I19H1fY (X 99B9hg(J1(;B:BZ L19K1i\ ([ 9B=B] O19N1l_ (^ 9?B9nm(P1(AB@B` R19Q1ob (a 9BB9qp(S1(DBCBc U19T1re (d 9EB9ts(V1(GBFBf X19W1uh (g 9HB9wv(Y1(JBIBi [19Z1xk (j 9KB9zy(\1(MBLBl ^19]1{n (m 9NB9}|(_1(PBOBo a19`1~q (p 9QB9(b1(SBRBr d19c1 t (s 9TB9(e1(VB UBu g19f1  w (v 9WB9(h1(YB XBx j19i1z (y 9ZB9(k1(\B[B{ m19l1} (| 9]B9(n1(_B^B~ p19o1 ( 9`B9(q1(bBaB s19r1 ( 9cB9 (t1(eBdB  v19u1 ( 9fB9 )w1(hBgB y19x1 ) 9iB9)z1)kBjB |19{1!  ) 9lB9)}1)nB"mB 19~1$# ) 9oB9 )1)qB%pB 191'& ) 9rB9 )1 )tB(sB 191*) ) 9uB9)1)wB+vB 191-, ) :xB:)1)zB.yB  1:10/ ) :{B:!)1)}B1|B# "1:132 ) :~B:$)1)B4B& %1:165 ) :B :')1)B7B) (1 :198 ) :B :*)1)B:B, +1:1<; ) :B:-!)1 )B=B/ .1:1?> ") :B:0$)1#)B@B2 11:1BA %) :B:3')1&)BCB5 41:1ED () :B:6*)1))BFB8 71:1HG +) :B:9-)1,)BIB; :1:1KJ .) :B:<0)1/)BLB> =1 :1NM 1) ":B!:?3)12)BOBA @1#:1QP 4) %:B$:B6)15)BRBD C1&:1TS 7) (:B':E9)18)BUBG F1):1WV :) +:B*:H<)1;)BXBJ I1,:1ZY =) .:B-:K?)1>)B[BM L1/:1]\ @) 1:B0:NB)1A)B^BP O12:1`_ C) 4:B3:QE)1D)BaBS R15:1cb F) 7:B6:TH)1G)BdBV U18:1fe I) ::B9:WK)1J)BgBY X1;:1ih L) =:B<:ZN)1M)BjB\ [1>:1lk O) @:B?:]Q)1P)BmB_ ^1A:1on R) C:BB:`T)1S)BpBb a1D:1rq U) F:BE:cW)1V)BsBe d1G:1ut X) I:BH:fZ)1Y)BvBh g1J:1xw [) L:BK:i])1\)ByBk j1M:1{z ^) O:BN:l`)1_)B|Bn m1P:1~} a) R:BQ:oc)1b)BBq p1S:1 d) U:BT:rf)1e)BBt s1V:1 g) X:BW:ui)1h)BBw v1Y:1 j) [:BZ:xl)1k)BBz y1\:1 m) ^:B]:{o)1n)BB} |1_:1 p) a:B`:~r)1q)BB 1b:1 s) d:Bc:  u)1t)BB 1e:1  v) g:Bf:  x)1w)BB 1h:1!y)!j:Bi:{)1z)BB!1k:1!|)!m:Bl:~)1})BB!1n:1!)!p:Bo:)1)BB!1q:1 !) !s:Br:)1)BB !1t:1 !) !v:Bu:)1)BB!2w:1!)!y:Bx:)2)BB!2z:2 !)!|:B{:"!)2)BB!2}:2#!)!:B~:%$)2)BB! 2:2&!)!:B:(') 2)BB! 2: 2)!)!:B:+*) 2)BB!2:2,!)!:B:.-)2)CC !2:2/"!)!!:C:10)2)CC#!2:22%!)$!:C:43)2)CC&!2:25(!)'!:C:76)2) C C)!2:28+!)*!: C::9)2) C C,!2:2;.!)-!:C:=<)2)CC/!!2: 2>1!)0!:C:@?)"2)CC2!$2:#2A4!)3!:C:CB)%2)CC5!'2:&2D7!)6!:C:FE)(2)CC8!*2:)2G:!)9!:C:IH)+2)CC;!-2:,2J=!)!02:/2M@!)?!: C:ON)12)"C!CA!32:22PC!)B!:#C:RQ)42)%C$CD!62:52SF!)E!:&C:UT)72)(C'CG!92:82VI!)H!:)C:XW):2)+C*CJ!<2:;2YL!)K!:,C:[Z)=2).C-CM!?2:>2\O!)N!:/C:^])@2)1C0CP!B2:A2_R!)Q!:2C:a`)C2)4C3CS!E2:D2bU!)T!:5C:dc)F2)7C6CV!H2:G2eX!)W!:8C:gf)I2):C9CY!K2:J2h[!)Z!:;C:ji)L2)=CC:ml)O2)@C?C_!Q2:P2na!)`!:AC:po)R2)CCBCb!T2:S2qd!)c!:DC:sr)U2)FCECe!W2:V2tg!)f!:GC:vu)X2)ICHCh!Z2:Y2wj!)i!:JC:yx)[2)LCKCk!]2:\2zm!)l!:MC:|{)^2)OCNCn!`2:_2}p!)o!:PC:~)a2)RCQCq!c2:b2s!)r!:SC:)d2)UC TCt!f2:e2  v!)u!:VC:)g2)XC WCw!i2:h2 y!)x!:YC:)j2)[CZCz!l2:k2|!){!:\C:)m2)^C]C}!o2:n2!)~!:_C:)p2)aC`C!r2:q2!)!:bC:)s2)dCcC ! u2:t2!)!:eC: )v2)gCfC ! x2:w2!*!:hC:*y2*jCiC!{2:z2 !*!:kC:*|2*mC!lC!~2:}2#"!*!:nC:*2*pC$oC!2:2&%! *!:qC: *2 *sC'rC!2:2)(! *!:tC:*2 *vC*uC!2:2,+!*!;wC:*2*yC-xC!2;2/.!*!;zC; *2*|C0{C"!!2;221!*!;}C;#*2*C3~C%!$2;254!*! ;C;&*2*C6C(!'2 ;287!*! ;C ;)*2*C9C+!*2 ;2;:!*!;C;, *2*C<C.!-2;2>=!!*!;C;/#*2"*C?C1!02;2A@!$*!;C;2&*2%*CBC4!32;2DC!'*!;C;5)*2(*CEC7!62;2GF!**!;C;8,*2+*CHC:!92;2JI!-*!;C;;/*2.*CKC=!<2;2ML!0*!!;C ;>2*21*CNC@!?2";2PO!3*!$;C#;A5*24*CQCC!B2%;2SR!6*!';C&;D8*27*CTCF!E2(;2VU!9*!*;C);G;*2:*CWCI!H2+;2YX!<*!-;C,;J>*2=*CZCL!K2.;2\[!?*!0;C/;MA*2@*C]CO!N21;2_^!B*!3;C2;PD*2C*C`CR!Q24;2ba!E*!6;C5;SG*2F*CcCU!T27;2ed!H*!9;C8;VJ*2I*CfCX!W2:;2hg!K*!<;C;;YM*2L*CiC[!Z2=;2kj!N*!?;C>;\P*2O*ClC^!]2@;2nm!Q*!B;CA;_S*2R*CoCa!`2C;2qp!T*!E;CD;bV*2U*CrCd!c2F;2ts!W*!H;CG;eY*2X*CuCg!f2I;2wv!Z*!K;CJ;h\*2[*CxCj!iDATAծ?sCVO  V O""V"O"""VODD"""  DE D$$V$O$$$VO+++++V+O%%V%O&&&77777V7O''V'O)))/////V/OVO,,V,P+++""V"O!!!VOVPVO77766V6OVOVO""V"O$$$VO V O  %%V%O%%%VO+++++V+O%%V%O$$$77777V7O))V)O'''/////V/OVO,,V,P+++!!V!O!!!VOVPVO77766V6OVOVO""V"O$$$VOVOVO  V O!!V!O!!!VODD !!!"""D  E  DVV_{Z{Z_7W7WVl g^g^_ZZVk bb*_^^V7 \g\g_"c"cVД ll_ggV, 7r7r_mmVF xx_rrV A_6y6yV՜ VV+s_!!VA h_Vq __Vg 44cW_::V1^ TTP_kkVճV ``LK_VKP [[kF_VJ DD$B_VE ssVվA 7W7Wl_VVVն ZZk_{Z{ZVչ ^^7_g^g^VՌ !c!cД_bbV* gg,_\g\gVՎ mmF_llVծ rr_7r7rVՈ 6y6y_xxV !!A_VA q_VVV+s g_Vh ::1^_V_ kkV_44VcW KP_TTVP J_``VLK E_[[VkF ssA_DDV$B DDV$B ssA_[[VkF E_``VMK J_TTVP KP_44VcW kkV_V_ ::1^_Vh g_VVV+s q_VA !!A_xxV 6y6y_8r8rVՈ rr_llVծ mmF_\g\gVՎ gg,_bbV* !c!cД_g^g^VՌ ^^7_{Z{ZVչ ZZk_VVVն 7W7Wl_ssVվA VE DD$B_VJ [[kF_VKP ``LK_kkVճV TTP_::V1^ 44cW_Vg __Vq h_!!VA VV+s_6y6yV՜ A_rrV xx_mmVF 8r8r_ggV, ll_"c"cVД \g\g_^^V7 bb*_ZZVk g^g^_7W7WVl {Z{Z_VV_  E  E""""""DD DVO!!V!O""" V OVOVOVO##V#O###VOVO77766V6OVOFFVFOEEEVO:::;;V;O,,V,P+++VO///..V.O((V(O&&&77777V7O%%V%O$$$***++V+OVO%%V%O%%% V O  VO##V#O###VOVO77766V6OVOFFVFOFFFVO:::;;V;O,,V,P+++ V O///..V.O''V'O'''77777V7O%%V%O%%%***++V+OVOVO$$V$O$$$E  E  """DDDVO""V"O""" V OVO  VO  VO""V"O"""VODD    DEE$$V$O$$$VOVO+++**V*O&&V&O%%%66677V7O''V'O'''.....V.OVO++V+P,,,:::::V:OVOFFVFOFFFVO66677V7OVOVO##V#O###VO V O  %%V%O%%%VO+++**V*O$$V$O%%%66677V7O''V'O'''.....V.OVO++V+P,,,:::::V:OVOGGVGOFFFVO66677V7OVOVO##V#O###VOVOVO  VO!!V!O"""VOD  D"""!!!D  E EVV_{Z{Z_7W7WVl g^g^_ZZVk bb*_^^V7 \g\g_"c"cVД ll_ggV, 8r8r_mmVF xx_rrV A_6y6yV՜ VV+s_!!VA h_Vq __Vg 44cW_::V1^ TTP_kkVճV ``LK_VKP [[kF_VJ DD$B_VE ssVվA 7W7Wl_VVVն ZZk_{Z{ZVչ ^^7_g^g^VՌ !c!cД_bbV* gg,_\g\gVՎ mmF_llVծ rr_8r8rVՈ 6y6y_xxV !!A_VA q_VVV+s g_Vh ::1^_V_ kkV_44VcW KP_TTVP J_``VLK E_[[VkF ssA_DDV$B DDV$B ssA_[[VkF E_``VMK J_TTVP KP_44VcW kkV_V_ ::1^_Vh g_VVV+s q_VA !!A_xxV 6y6y_7r7rVՈ rr_llVծ mmF_\g\gVՎ gg,_bbV* !c!cД_g^g^VՌ ^^7_{Z{ZVչ ZZk_VVVն 7W7Wl_ssVվA VE DD$B_VJ [[kF_VKP ``LK_kkVճV TTP_::V1^ 44cW_Vg __Vq h_!!VA VV+s_6y6yV՜ A_rrV xx_mmVF 7r7r_ggV, ll_"c"cVД \g\g_^^V7 bb*_ZZVk g^g^_7W7WVl {Z{Z_VV_DE !!!"""D  DDVO!!V!O!!!  V OVOVOVO##V#O###VOVO77777V7OVOVPVO!!V!O!!!++V+P,,,VO...//V/O''V'O)))66666V6O$$V$O%%%+++++V+OVO%%V%O%%% V O  VO##V#O###VOVO77777V7OVOVPVO""V"O"""++V+P,,,VO...//V/O''V'O)))66666V6O&&V&O%%%+++++V+OVOVO$$V$O$$$D  E!!!  DD DVO""V"O"""  V OVOiFidihxhshiFidihxhshV%pџ2y33,3**t*d  e /6p 6y6ΔϦa4`aaa+# `##jNx`sP ssCCC1\%Kw`b_bbw4" C_O=OUVO"W"`"###dVu_Z"ɥVTVTT222*%q%%Pddd{> {}2{ܤ`ϖTTTK UUUZ_ZEZzN$$$_sT( 7Z z5X555_%_%%vhZԚ "iQ/_s(,̟eVPVzV?n:ֺ`k*h**`㋊" | ` $84kk;,kZ 7{{{+`e3 e3eJ;+v4|p _88I86W($$$'k''% ] Ah%!,;.w22 2iay qx #+&+ѐ+_b_bLbܐ.%5%%Y + `+v+rLXdݥN._.|.OFggg2jjjO>(>>**_*###R`oQojo //ũ/1nE-?Sj8A > Q`:X:XEMXR`QO}|`||V#p##PPQ^P_mʟmQm`zt:W!Qg2 { _ ' os| ||u  C}CC_ mttHt,ެCTП: ,d|9/cT>his?Z S_ ~ #q x 7I>K<,!  X n H ZA `AnAAy>A$st?;t_8Jq*~4?dۖvYSB-o-/DՆ(;T T  S }|+++++}+Z}ZZZZZlZ0E 4_L  2a:E/$$f$0i Dݛt%s!###l ̍ygxݔ ###B~< L  ""'R P)f F 6 Q:QQ6?t;/B:^v|UԧK=z #D|nsqoCkt#S`DFω ǁ . nÞ Q  p v UC)+:_W#N##e۩\bp/yPW< ) b} a> D@8zRٞ<[\k  u ħ  d#9D/$7g^r_up  ū8gxң$  [ %[ [  $  [% [  $  $[[%$[[% SV#!!# " "$"$#! ! # ",,,,,,  Ha * XA~X_X ;I`6Wȉ9(}o/ Vԕ[x8]8W8s7L* ҿ 3 x^a}"$#!!# "  "$#!!#  "H,,,,,,  o B%[[$%[[$$[%  [ $[[%[ $  q>< Y o mYYn nYYm oYVX T V   U S WU V T VTUWWUTV T VUWSU  V T XV    C) џ?) >GJ"]qB`BB܀fBC C GQQQA z  PKPݮP'Ş'I'p_v_̮_9khkk ggg#i## k`kk55 5PVP]] ]4z̭T666܈bj33T3\aj\_\``6`8Bn|'[_;)4m7t77{9W99}-}}w! 8to@@I@E"_"B"|#G #`#" V 6 `V ׵% `> Q 4==V =^J֟$҅#ZYZZĂDW!x`R  > Ǒ O ` ;,i,_,̧3*3R3 Y 6 !iqiiS|=`==]zlqljl˟ `+Y++ O B 71z1v1# I ^ \3633ZZZLßbu+B+C+(@A@ @Ǡwb# p##yf)fUfg#1#+#4+'+++#AqAABsBBlLLLfl,.,l,^B؟BRB;!iOOOlN2t#|_v_M_HHd{dd1///۱Ç_AAzA y^uu2u#-v-- !]%BtBBHWHHPPjP%%%i RHRRպ0"`W``uu 99.90i00898'8& ՗ 5 BjBB\(i(()c ! . ZnPبPsPk~ ~C~  sI`ssm1YOOO a ɵ wmn Q 8B3iX_XXVՄ ,'~,,I`Ymݡ/C6`'&W19I`h(\ .ԍu˭ h -oabz ́ g  CԐu+++x?!??\ -A6I6M6yMMLMA999 @ ڠ G,՝ `e 4 (_(^(`+ ``i222h)1O_ _  ///#o##L4h_ÞW%e%%.#|##^!S,SSfAVA:A&&&QQQЍi`DDڧDh-/hFhh/a//@eOO OH˅n` MoԪ~-{x  ۪ } <M?_& &&=0==ݫ92-i iiU55~5:&!/-(6Uw< ` \V!Cd e dj  _ )))A''')W)l)%5%<%oS6ؤJfM~MMMMMM0MMM0MMMMMMMMMMMҴMMMҴM.MMEM.MMEMMMԳMMMԳMMMM~MMM/MMM/MMMMMҴMMMҴMMMMMMMMMԳMMMԳMMVM$0M'MMMMVM$0M'MMMMMmMM@MMMMmMM@MMM@MMeMMMM@MMeMMMeMMMM@MMeMMMM@MM'MMMMVM$0M'MMMMVM$0MM@MMMMmMM@MMMMmM.MMEM.MMEX  S SSSSS22[2[[[[[EEEGG2G322@2@@AAA3[[[[[2[22[2[[[[[3:::992922  3 5555515'2'''''22&&&''2'5155555322:2:::::3[[[ZZ2Z22Z2ZZ\\\3AAAAA2A22  3 G2GGEEE[[[[[2[2jjj''''2''EEEG2GG  3 22AA2A@@@iiij3jj''2''''22''''2''0010///322 3 5555155''2'&&&22''''2''jj3jiii@@@@2@@22 3KK2KJJJ[[[[2[[22[[2[[[[3AAAA2AA22@@2@@@@3''2''''jjjj2jjjj2j2%%%%%2%6166555 3 2237776616'2'''''22'''''2'd3ddeee:::::2:22  3 G2GGFFF[[[[[2[22[2[[\\\3AAABB2B22:2::9993[[[ZZ2Z22Z2ZZ[[[FFFEE2E322B2BB@@@iiihh3h%2%%%%%2vvv&&&'2''GGGG2GGxx2xxxxҫҫ2߫2ߪvvvv2vvEE2EFFF''2''''vvvu3uujj2jjjj&&&'2''LLLK2KK~~2~~~~SSSS3SSCC1CCCCwwwx2xxGG2GGGG&&2&'''32&&&'2''FFFG2GGxx2xwww22~~~~2~~KK2KKKK&&2&'''23''''2''FFFF2FFvv2vvvvDDDD1DDTT3TUUUxxxx2xxGG2GFFF''2''''kkkk2kkvv3v2'''&&2&j3jjjjj@@@@@2@223F2FFFFF[[[[[2[22[2[[ZZZ3:::::2:22@2@@@@@3'2''&&&kkkkk2kk2kkkkk'''&&2&GGGGG2G 3 22:2::;;;dddee3e'2''&&&22'''''2'6166666322 36666616'2''&&&2kkk''''2''EEEE2EE  3 22@@2@@@@jjji3ii''2''''22''''2''0010111  3 22 35555155%%2%%%%22%%%%2%%ii3iiii@@@A2AA22 3 KK2KLLL\\\Z2ZZ22ZZ2Z\\\3@@@@2@@22BB2B@@@3&&2&'''kkkk2kkkk2k3'''''2'51555553 EEEDD1DS3SSTTTwwwww2wE2EEEEE'2'''''jjjii2ij2jjjjj'''''2'38188999TTTSS3SD1DDDDD  3 G2GGFFF\\\[[2[32[2[[\\\GGGFF2F3 2299988183%2%%&&&22%%%&&2&GGGEE2Ew2wwwww22  3 5555515'2'''''22[[2[[[[FFFG2GG  3 22AA2A@@@jjjj3jj''2''''22''''2''00100003 2235555155''2''''22''''2''jj3jjjjBBBB2BB22 3LL2LLLLZZZ[2[[22\\2\ZZZ3AAAA2AA22@@2@@@@3[[[[2[[2) )s )+_++wr \ Vd`,b,4,>->>c6?6c6::(y:y~O_OO555}''x'66v6;;<;3s3"3*#**<**4*a**=K*o*9* *O)&))/˭,,f,++E+*!**11[[1"##܉#,,,)u)l) .[..u00`0"G""w//q`/ ++=p+00c0$]$$...æ7q7Y7 -00L0+++-/R/_/Q"""&a111Ҡ++p+F00<066Y6UZBɲ+l++'ɭ'j'                       L j ...#+1++l'~''$ i By&z&7&55955::?:6777ү>N>>ǔ-b-B-y,+Ɂ+,A,/,,(Z((]#t#b#،-Ic-y-v k 2<<<]'666&+&& !!R!-0f0l0 OOTO77t7\;Cy;;444l*Y**Rj)Y)դ)5+?+Z+)R)E)m+]++%~yȥ5܀55;44}42'[''""o".Bd../ //Ӟ- upR111$///'C''4..ɟ.,$+++R''ޛ'"U""'j'|'s5955::?:6777߯>L>>Ŕ.b.B.y g R PPRP666;y;;{444]*Y**Rj)))4))\))))"*.**"{.../,Q,,Ȕ)Y))###.Kb.G.:..P.W  ȼ<<<'55"5&&p& """yȥ555\5g55'}\''ң###,c,,ʆ}000$.į.:.%%%a"|""///r!@ D sSShS#!a!B!IkzJ  n s 5 [8{88Ű | "{"@T"*%*t#* UG$$$F=**vt*)99L9q8###Rj111".F111  =  p ?,9~ܬrunX/cprޓmi)3FltyU<t2ֲ22zJ!eZB222>2&nT"""p*֕**++2+f+{*L+^BاԚ,s,,HV!!Dd!^| +x+=+О))')).+.o.L)߄))/l //T}dڗ/bYm z F 3 0 ? !!! 3 c } T vc`8cݔmk 4 o;g; ; w ]~DrirǬ$֤$[$#t#$#I } 11i1-}(tߜ^#Sv eDDDEW`e6`Q { ظ B=%V:333&33x3:bx}&_w))) Q{!+!! i83BBY Be<<|<D_!rNNNMzMM03^)))ˌ9979-(((>-v--FF>BF##,#z C)iEuSJ#I,,}"ܽ""3IP   F%eYq%&&I,",,!D D~D)x))$ ''u'+II;IR$$$I$$j$@fDLDDP?PPd=422պ2,,$,=:#|!x!![,, ,K29BBԽB+((+(y)cm.Š.:.IMMMu...!!!,g[H 7 1 ȇ#v#7#!W8N M cY"K3CGػȔ ͪ |M ~  777///Ya000ۄ2T22]""|"| f,Chkۡk!ke e|e0119Y1#K#9#i/MKKKEEE2 + u 5j552 22E ח4 4+4q\i\D\E3EECDCbC.1e1L1pȧ-]ŪQ|!G!!===9zjzLztlll.888nj/K=D--w-+n5$55ǨBBBH#B#-h#R->llPl&kkkݝ&&^&P!b< X 4 #=#"#/++u+n<<:<s԰  0.# #E#,,,ͱ11>1֣! ޖ R7 Ug;m&$&,&uxsm"u'Jb dddbb?bl'w'' m"No##N#%l%[\%BuB8BJJJɊ|On ++++I+R+wX+,E)$)).ln..444'7n''/O5/-/hSSSGRR}R{)<))22r2PPPCJJlJGEb{EEtFF^F2x22է:::<-0ԇ00+G+G+ a<78 / 1 FFFޭBBqB] YW/NM...z"11P1ttQtwwAw˜R1Û"^""^M ٚ'A''%,"<"T"\.:f3~x7(p(H(O#\^ B ܞ}St)yD#vqp#3#O#!0!h!KA{AA̰BfM mћǎ<c<<1w#hՈ/>~C ه 0F0X0}G4 I ))w)/// >j##b#+Y++}e)  ĒY2#7#i#X& 2ΐ^ J^3ɧ N p  ] B v@Ee4a R b;G6š66e҄%%%!/L)ij))Dd@a ҵ  #### d 9 m G . )44h4ۥ) 111s4J}  / 66&j/y4V4$Kv@ =9\*f**fSEo _ Q_{  ???@f<<2<7m"l#e## Ȳ m * # ],.,|,cYGR&&& b ` 9ca'{'' iq<ֵf0xw [ k(OD/Gr8<#~## B ߨ=G; ;O;6!N+&^;;;wۏBBB$''Ω'|ռW---N<< <,,,y, 2 t1 Ĥ [ ))q) f'n"""|0,,,Xn>{''W'...ͧ>&>:>";"{"9U @@T/@//w/lºmԖ=B(h)c1>11R,RRˀTTT){{vhOmj???.;;;H 00u0L W  ^-+ I O6Tp].ۢ%q''p?' h#a (v g`m666222/::.:,,K,ں*t*:\*IIR%IKK.rK\l[l"b""4]44D))^B)'/BT?++c+Hv555&&e&6=,M,I,u"N d U VVV\\]\ a%Ԯ%eS%"( I"I5I?v?G?[}7a7 744Sg4=11oP1'K'kz'}]xov- 8'A&Je %%%%k'''282v2 WnF~Gpd #^(!!v4!>K̠)] aglR!RRDDvD@@]@88=8q=!=Q= WFWW++R+.@.i.:::{ ^ { c ~ c nMhi"6|Թ+++C Y[ . LΨjD444)))0P0q0QAAxA@@o@V  p&L5*TTTISSzSfK++b+F+$X#$$ץ&&&?~RvA#~##_/4//_W_B_HaaaA P}Z\ \)\W\\A\}IbIIB/ByB&&&"µ"É"L-LLLDDDEpEDEu#@̥@k@#///333/ݔ.mw__Н_y YYNYV_  .  S j:$: :1!11(b(a(ҡ \_@EkB^֭  <" ΂ޡ&oH=DMTEŏ|ݨ u 1ܕ{9z&6UL qPfDDDHHfH̠4 4@4 jsDATAhq= material_index7==2.select_poly =X=2sharp_face ==DATA\Z7=LDATA =DATA =DATA`Z= !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }          " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |          ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~          # & ) , / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }   "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}  "%(+.147:=@CFILORUX[^adgjmpsvy|  !$'*-0369<?BEHKNQTWZ]`cfilorux{~  #&),/258;>ADGJMPSVY\_behknqtwz}         " % ( + . 1 4 7 : = @ C F I L O R U X [ ^ a d g j m p s v y |  !!! ! !!!!!!!!!$!'!*!-!0!3!6!9!"A"D"G"J"M"P"S"V"Y"\"_"b"e"h"k"n"q"t"w"z"}""""""""""""""""""""""""""""""""""""""""""""### # #######"#%#(#+#.#1#4#7#:#=#@#C#F#I#L#O#R#U#X#[#^#a#d#g#j#m#p#s#v#y#|############################################$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%%%% %#%&%)%,%/%2%5%8%;%>%A%D%G%J%M%P%S%V%Y%\%_%b%e%h%k%n%q%t%w%z%}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& & &&&&&&&"&%&(&+&.&1&4&7&:&=&@&C&F&I&L&O&R&U&X&[&^&a&d&g&j&m&p&s&v&y&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''!'$'''*'-'0'3'6'9'<'?'B'E'H'K'N'Q'T'W'Z']'`'c'f'i'l'o'r'u'x'{'~''''''''''''''''''''''''''''''''''''''''''''((( ((((((( (#(&()(,(/(2(5(8(;(>(A(D(G(J(M(P(S(V(Y(\(_(b(e(h(k(n(q(t(w(z(}(((((((((((((((((((((((((((((((((((((((((((())) ) )))))))")%)()+).)1)4)7):)=)@)C)F)I)L)O)R)U)X)[)^)a)d)g)j)m)p)s)v)y)|))))))))))))))))))))))))))))))))))))))))))))*** * *******!*$*'***-*0*3*6*9*<*?*B*E*H*K*N*Q*T*W*Z*]*`*c*f*i*l*o*r*u*x*{*~********************************************+++ +++++++ +#+&+)+,+/+2+5+8+;+>+A+D+G+J+M+P+S+V+Y+\+_+b+e+h+k+n+q+t+w+z+}++++++++++++++++++++++++++++++++++++++++++++,,, , ,,,,,,,",%,(,+,.,1,4,7,:,=,@,C,F,I,L,O,R,U,X,[,^,a,d,g,j,m,p,s,v,y,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- - -------!-$-'-*---0-3-6-9-<-?-B-E-H-K-N-Q-T-W-Z-]-`-c-f-i-l-o-r-u-x-{-~--------------------------------------------... ....... .#.&.).,./.2.5.8.;.>.A.D.G.J.M.P.S.V.Y.\._.b.e.h.k.n.q.t.w.z.}............................................/// / ///////"/%/(/+/./1/4/7/:/=/@/C/F/I/L/O/R/U/X/[/^/a/d/g/j/m/p/s/v/y/|////////////////////////////////////////////000 0 0000000!0$0'0*0-000306090<0?0B0E0H0K0N0Q0T0W0Z0]0`0c0f0i0l0o0r0u0x0{0~00000000000000000000000000000000000000000000111 1111111 1#1&1)1,1/1215181;1>1A1D1G1J1M1P1S1V1Y1\1_1b1e1h1k1n1q1t1w1z1}11111111111111111111111111111111111111111111222 2 2222222"2%2(2+2.2124272:2=2@2C2F2I2L2O2R2U2X2[2^2a2d2g2j2m2p2s2v2y2|22222222222222222222222222222222222222222222333 3 3333333!3$3'3*3-303336393<3?3B3E3H3K3N3Q3T3W3Z3]3`3c3f3i3l3o3r3u3x3{3~33333333333333333333333333333333333333333333444 4444444 4#4&4)4,4/4245484;4>4A4D4G4J4M4P4S4V4Y4\4_4b4e4h4k4n4q4t4w4z4}44444444444444444444444444444444444444444444555 5 5555555"5%5(5+5.5154575:5=5@5C5F5I5L5O5R5U5X5[5^5a5d5g5j5m5p5s5v5y5|55555555555555555555555555555555555555555555666 6 6666666!6$6'6*6-606366696<6?6B6E6H6K6N6Q6T6W6Z6]6`6c6f6i6l6o6r6u6x6{6~66666666666666666666666666666666666666666666777 7777777 7#7&7)7,7/7275787;7>7A7D7G7J7M7P7S7V7Y7\7_7b7e7h7k7n7q7t7w7z7}77777777777777777777777777777777777777777777888 8 8888888"8%8(8+8.8184878:8=8@8C8F8I8L8O8R8U8X8[8^8a8d8g8j8m8p8s8v8y8|88888888888888888888888888888888888888888888999 9 9999999!9$9'9*9-909396999<9?9B9E9H9K9N9Q9T9W9Z9]9`9c9f9i9l9o9r9u9x9{9~99999999999999999999999999999999999999999999::: ::::::: :#:&:):,:/:2:5:8:;:>:A:D:G:J:M:P:S:V:Y:\:_:b:e:h:k:n:q:t:w:z:}::::::::::::::::::::::::::::::::::::::::::::;;; ; ;;;;;;;";%;(;+;.;1;4;7;:;=;@;C;F;I;L;O;R;U;X;[;^;a;d;g;j;m;p;s;v;y;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<< < <<<<<<<!<$<'<*<-<0<3<6<9<<<?<B<E<H<K<N<Q<T<W<Z<]<`<c<f<i<l<o<r<u<x<{<~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=== ======= =#=&=)=,=/=2=5=8=;=>=A=D=G=J=M=P=S=V=Y=\=_=b=e=h=k=n=q=t=w=z=}============================================>>> > >>>>>>>">%>(>+>.>1>4>7>:>=>@>C>F>I>L>O>R>U>X>[>^>a>d>g>j>m>p>s>v>y>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??? ? ???????!?$?'?*?-?0?3?6?9?@A@D@G@J@M@P@S@V@Y@\@_@b@e@h@k@n@q@t@w@z@}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAA A AAAAAAA"A%A(A+A.A1A4A7A:A=A@ACAFAIALAOARAUAXA[A^AaAdAgAjAmApAsAvAyA|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBB B BBBBBBB!B$B'B*B-B0B3B6B9BCACDCGCJCMCPCSCVCYC\C_CbCeChCkCnCqCtCwCzC}CCCCCCCCCCCCCCCCCCCCCCCCCWO`r=WOWorldrcP=rcP=rcP=?? @A A? AiA?W??????> Y=?DDATA  Y=NTShader Nodetreer=u0bShaderNodeTree` r= r=q|?q|?ߛ=?DATAp` r= r=[=ց= ف= ف=Principled BSDF蚍6ShaderNodeBsdfPrincipled`,V ACpCB???'==DATA[= ^=Base ColorBase Color@w5bNodeSocketColor0!==DATA0!=_>A?W??DATA ^=`=[=MetallicMetallic@jNodeSocketFloatFactor`!=؎=DATA`!=?DATA`= c= ^=RoughnessRoughness@jNodeSocketFloatFactor!==DATA!=mq??DATA c=e=`=IORIOR@jNodeSocketFloat!=X=DATA!=??zDDATAe= h= c=AlphaAlpha@jNodeSocketFloatFactor!==DATA!=??DATA h=j=e=NormalNormaljNodeSocketVector=؃=DATA=DATAj= m= h=WeightWeightHjNodeSocketFloat "==DATA "=DATA m=o=j=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactorP"=X=DATAP"=?DATAo= r= m=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor"==DATA"=?DATA r=t=o=Subsurface RadiusSubsurface Radius@jNodeSocketVector=؈=DATA=?L>=BDATAt= w= r=Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance"==DATA"=L= ADATA w=y=t=Subsurface IORSubsurface IORHjNodeSocketFloatFactor"=X=DATA"=33?G?33s@DATAy= |= w=Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactor#==DATA#=?DATA |=~=y=Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor@#=؍=DATA@#=??DATA~= = |=Specular TintSpecular Tint@w5bNodeSocketColorp#==DATAp#=????DATA ==~=AnisotropicAnisotropic@jNodeSocketFloatFactor#=X=DATA#=?DATA= = =Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactor#==DATA#=?DATA ===TangentTangentjNodeSocketVector =ؒ=DATA =DATA= = =Transmission WeightTransmission Weight@jNodeSocketFloatFactor$==DATA$=?DATA ===Coat WeightCoat Weight@jNodeSocketFloatFactor0$=X=DATA0$=?DATA= = =Coat RoughnessCoat Roughness@jNodeSocketFloatFactor`$==DATA`$=<?DATA ===Coat IORCoat IOR@jNodeSocketFloat$=ؗ=DATA$=??@DATA= Ł= =Coat TintCoat Tint@w5bNodeSocketColor$==DATA$=????DATA Ł=ǁ==Coat NormalCoat NormaljNodeSocketVector`=X=DATA`=DATAǁ= ʁ= Ł=Sheen WeightSheen Weight@jNodeSocketFloatFactor$==DATA$=?DATA ʁ=́=ǁ=Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor %=؜=DATA %=??DATÁ= ρ= ʁ=Sheen TintSheen Tint@w5bNodeSocketColorP%==DATAP%=????DATA ρ=с=́=Emission ColorEmission Color@w5bNodeSocketColor%=X=DATA%=????DATAс= ԁ= ρ=Emission StrengthEmission Strength@jNodeSocketFloat%==DATA%=$tIDATA ԁ=ց=с=Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength%=ء=DATA%=, PGDATAց= ԁ=Thin Film IORThin Film IOR@jNodeSocketFloat&==DATA&=q=??zDDATA ف=BSDFBSDFD}5bNodeSocketShaderX=DATA@'= "%DATAp r=` r=ہ= =Material Output#CShaderNodeOutputMaterial,V|CC CB???=DATAہ= ށ=SurfaceSurfaceD}5bNodeSocketShaderq|?=DATA ށ==ہ=VolumeVolume@}5bNodeSocketShaderئ=DATA= = ށ=DisplacementDisplacementjNodeSocketVector==DATA=DATA ==ThicknessThicknessjNodeSocketFloat@&=X=DATA@&=DATA8q|?` r= r= ف=ہ=MA r=GMAMaterial_001%]{?)>?????>=?DDATA =NTShader Nodetree r=u0bShaderNodeTreer=`r=r|?r|?0==DATApr=`r= = ===Principled BSDF(=LeShaderNodeBsdfPrincipled`,V ACpCB???h'==DATA ==Base ColorBase Color@w5bNodeSocketColorp&==DATAp&=%]{?)>?DATA= = =MetallicMetallic@jNodeSocketFloatFactor&=ث=DATA&=?DATA ===RoughnessRoughness@jNodeSocketFloatFactor&==DATA&=mq??DATA= = =IORIOR@jNodeSocketFloat'=X=DATA'=??zDDATA ===AlphaAlpha@jNodeSocketFloatFactor0'==DATA0'=??DATA= = =NormalNormaljNodeSocketVector =ذ=DATA =DATA ===WeightWeightHjNodeSocketFloat`'==DATA`'=DATA= = =Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactor'=X=DATA'=?DATA ===Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor'==DATA'=?DATA= = =Subsurface RadiusSubsurface Radius@jNodeSocketVector`=ص=DATA`=?L>=BDATA ===Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance'==DATA'=L= ADATA= = =Subsurface IORSubsurface IORHjNodeSocketFloatFactor (=X=DATA (=33?G?33s@DATA ===Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactorP(==DATAP(=?DATA= = =Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor(=غ=DATA(=??DATA = ==Specular TintSpecular Tint@w5bNodeSocketColor(==DATA(=????DATA = = =AnisotropicAnisotropic@jNodeSocketFloatFactor(=X=DATA(=?DATA == =Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactor)==DATA)=?DATA= = =TangentTangentjNodeSocketVector=ؿ=DATA=DATA ===Transmission WeightTransmission Weight@jNodeSocketFloatFactor@)==DATA@)=?DATA= = =Coat WeightCoat Weight@jNodeSocketFloatFactorp)=X=DATAp)=?DATA ===Coat RoughnessCoat Roughness@jNodeSocketFloatFactor)==DATA)=<?DATA= = =Coat IORCoat IOR@jNodeSocketFloat)==DATA)=??@DATA ===Coat TintCoat Tint@w5bNodeSocketColor*==DATA*=????DATA= = =Coat NormalCoat NormaljNodeSocketVector=X=DATA=DATA ===Sheen WeightSheen Weight@jNodeSocketFloatFactor0*==DATA0*=?DATA= = =Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor`*==DATA`*=??DATA ===Sheen TintSheen Tint@w5bNodeSocketColor*==DATA*=????DATA= = =Emission ColorEmission Color@w5bNodeSocketColor*=X=DATA*=????DATA ===Emission StrengthEmission Strength@jNodeSocketFloat*==DATA*=$tIDATA= = =Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength +==DATA +=, PGDATA ==Thin Film IORThin Film IOR@jNodeSocketFloatP+= =DATAP+=q=??zDDATA=BSDFBSDFD}5bNodeSocketShaderX!=DATA@h'= "%DATAp`r=r= ==Material OutputƥHCShaderNodeOutputMaterial,V|CC CB???=DATA ==SurfaceSurfaceD}5bNodeSocketShaderr|?"=DATA= = =VolumeVolume@}5bNodeSocketShader#=DATA ===DisplacementDisplacementjNodeSocketVector =%=DATA =DATA= =ThicknessThicknessjNodeSocketFloat+=X&=DATA+=DATA8r|?r=`r== =MA r=GMAMaterial_002??????> =?DDATA  =NTShader Nodetree r=u0bShaderNodeTreer=r=`s|?`s|?1==DATApr=r=== = =Principled BSDFd ShaderNodeBsdfPrincipled`,V ACpCB???'==DATA= =Base ColorBase Color@w5bNodeSocketColor+='=DATA+=??DATA ===MetallicMetallic@jNodeSocketFloatFactor+=(=DATA+=?DATA= = =RoughnessRoughness@jNodeSocketFloatFactor,=*=DATA,=mq??DATA ===IORIOR@jNodeSocketFloat@,=X+=DATA@,=??zDDATA= = =AlphaAlpha@jNodeSocketFloatFactorp,=,=DATAp,=??DATA =Â==NormalNormaljNodeSocketVector=-=DATA=DATAÂ= Ƃ= =WeightWeightHjNodeSocketFloat,=/=DATA,=DATA Ƃ=Ȃ=Â=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactor,=X0=DATA,=?DATAȂ= ˂= Ƃ=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor-=1=DATA-=?DATA ˂=͂=Ȃ=Subsurface RadiusSubsurface Radius@jNodeSocketVector=2=DATA=?L>=BDATA͂= Ђ= ˂=Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance0-=4=DATA0-=L= ADATA Ђ=҂=͂=Subsurface IORSubsurface IORHjNodeSocketFloatFactor`-=X5=DATA`-=33?G?33s@DATA҂= Ղ= Ђ=Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactor-=6=DATA-=?DATA Ղ=ׂ=҂=Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor-=7=DATA-=??DATAׂ= ڂ= Ղ=Specular TintSpecular Tint@w5bNodeSocketColor-=9=DATA-=????DATA ڂ=܂=ׂ=AnisotropicAnisotropic@jNodeSocketFloatFactor .=X:=DATA .=?DATA܂= ߂= ڂ=Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactorP.=;=DATAP.=?DATA ߂==܂=TangentTangentjNodeSocketVector =<=DATA =DATA= = ߂=Transmission WeightTransmission Weight@jNodeSocketFloatFactor.=>=DATA.=?DATA ===Coat WeightCoat Weight@jNodeSocketFloatFactor.=X?=DATA.=?DATA= = =Coat RoughnessCoat Roughness@jNodeSocketFloatFactor.=@=DATA.=<?DATA ===Coat IORCoat IOR@jNodeSocketFloat/=A=DATA/=??@DATA= = =Coat TintCoat Tint@w5bNodeSocketColor@/=C=DATA@/=????DATA ===Coat NormalCoat NormaljNodeSocketVector`=XD=DATA`=DATA= = =Sheen WeightSheen Weight@jNodeSocketFloatFactorp/=E=DATAp/=?DATA ===Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor/=F=DATA/=??DATA= = =Sheen TintSheen Tint@w5bNodeSocketColor/=H=DATA/=????DATA ===Emission ColorEmission Color@w5bNodeSocketColor0=XI=DATA0=????DATA= = =Emission StrengthEmission Strength@jNodeSocketFloat00=J=DATA00=$tIDATA ===Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength`0=K=DATA`0=, PGDATA= =Thin Film IORThin Film IOR@jNodeSocketFloat0=M=DATA0=q=??zDDATA =BSDFBSDFD}5bNodeSocketShaderXN=DATA@'= "%DATApr=r== =Material Outputx]0CShaderNodeOutputMaterial,V|CC CB???=DATA= =SurfaceSurfaceD}5bNodeSocketShader`s|?O=DATA = ==VolumeVolume@}5bNodeSocketShaderP=DATA = = =DisplacementDisplacementjNodeSocketVector=R=DATA=DATA = =ThicknessThicknessjNodeSocketFloat0=XS=DATA0=DATA8`s|?r=r= ==MA`r=GMAMaterial_003??D=?????>=?DDATA =NTShader Nodetree`r=u0bShaderNodeTree r=r= t|? t|?2==DATAp r=r= = ===Principled BSDFb6Z/ShaderNodeBsdfPrincipled`,V ACpCB???(==DATA ==Base ColorBase Color@w5bNodeSocketColor0=T=DATA0=??D=?DATA= = =MetallicMetallic@jNodeSocketFloatFactor 1=U=DATA 1=?DATA ===RoughnessRoughness@jNodeSocketFloatFactorP1=W=DATAP1=mq??DATA= = =IORIOR@jNodeSocketFloat1=XX=DATA1=??zDDATA ===AlphaAlpha@jNodeSocketFloatFactor1=Y=DATA1=??DATA= p= =NormalNormaljNodeSocketVector =Z=DATA =DATA p=r==WeightWeightHjNodeSocketFloat1=\=DATA1=DATAr= u= p=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactor2=X]=DATA2=?DATA u=w=r=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor@2=^=DATA@2=?DATAw= z= u=Subsurface RadiusSubsurface Radius@jNodeSocketVector`=_=DATA`=?L>=BDATA z=|=w=Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistancep2=a=DATAp2=L= ADATA|= = z=Subsurface IORSubsurface IORHjNodeSocketFloatFactor2=Xb=DATA2=33?G?33s@DATA ==|=Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactor2=c=DATA2=?DATA= = =Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor3=d=DATA3=??DATA ===Specular TintSpecular Tint@w5bNodeSocketColor03=f=DATA03=????DATA= = =AnisotropicAnisotropic@jNodeSocketFloatFactor`3=Xg=DATA`3=?DATA ===Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactor3=h=DATA3=?DATA= = =TangentTangentjNodeSocketVector=i=DATA=DATA ===Transmission WeightTransmission Weight@jNodeSocketFloatFactor3=k=DATA3=?DATA= = =Coat WeightCoat Weight@jNodeSocketFloatFactor3=Xl=DATA3=?DATA ===Coat RoughnessCoat Roughness@jNodeSocketFloatFactor 4=m=DATA 4=<?DATA= = =Coat IORCoat IOR@jNodeSocketFloatP4=n=DATAP4=??@DATA ===Coat TintCoat Tint@w5bNodeSocketColor4==DATA4=????DATA= = =Coat NormalCoat NormaljNodeSocketVector=X=DATA=DATA ===Sheen WeightSheen Weight@jNodeSocketFloatFactor4==DATA4=?DATA= = =Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor4==DATA4=??DATA ===Sheen TintSheen Tint@w5bNodeSocketColor5==DATA5=????DATA= = =Emission ColorEmission Color@w5bNodeSocketColor@5=X=DATA@5=????DATA ===Emission StrengthEmission Strength@jNodeSocketFloatp5==DATAp5=$tIDATA= = =Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength5==DATA5=, PGDATA ==Thin Film IORThin Film IOR@jNodeSocketFloat5==DATA5=q=??zDDATA=BSDFBSDFD}5bNodeSocketShaderX=DATA@(= "%DATApr= r= ==Material Output|m(CShaderNodeOutputMaterial,V|CC CB???=DATA ==SurfaceSurfaceD}5bNodeSocketShader t|?=DATA= = =VolumeVolume@}5bNodeSocketShader=DATA ===DisplacementDisplacementjNodeSocketVector ==DATA =DATA= =ThicknessThicknessjNodeSocketFloat6=X =DATA6=DATA8 t|? r=r== =MAr=GMAMaterial_004l?> X??????> =?DDATA  =NTShader Nodetreer=u0bShaderNodeTree`r= !r=t|?t|?3==DATAp`r= !r=== = =Principled BSDFTShaderNodeBsdfPrincipled`,V ACpCB???X(==DATA= =Base ColorBase Color@w5bNodeSocketColor06=!=DATA06=l?> X??DATA =ƒ==MetallicMetallic@jNodeSocketFloatFactor`6="=DATA`6=?DATAƒ= Ń= =RoughnessRoughness@jNodeSocketFloatFactor6=$=DATA6=mq??DATA Ń=ǃ=ƒ=IORIOR@jNodeSocketFloat6=X%=DATA6=??zDDATAǃ= ʃ= Ń=AlphaAlpha@jNodeSocketFloatFactor6=&=DATA6=??DATA ʃ=̃=ǃ=NormalNormaljNodeSocketVector='=DATA=DATÃ= σ= ʃ=WeightWeightHjNodeSocketFloat 7=)=DATA 7=DATA σ=у=̃=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactorP7=X*=DATAP7=?DATAу= ԃ= σ=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor7=+=DATA7=?DATA ԃ=փ=у=Subsurface RadiusSubsurface Radius@jNodeSocketVector=,=DATA=?L>=BDATAփ= ك= ԃ=Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance7=.=DATA7=L= ADATA ك=ۃ=փ=Subsurface IORSubsurface IORHjNodeSocketFloatFactor7=X/=DATA7=33?G?33s@DATAۃ= ރ= ك=Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactor8=0=DATA8=?DATA ރ==ۃ=Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor@8=1=DATA@8=??DATA= = ރ=Specular TintSpecular Tint@w5bNodeSocketColorp8=3=DATAp8=????DATA ===AnisotropicAnisotropic@jNodeSocketFloatFactor8=X4=DATA8=?DATA= = =Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactor8=5=DATA8=?DATA ===TangentTangentjNodeSocketVector =6=DATA =DATA= = =Transmission WeightTransmission Weight@jNodeSocketFloatFactor9=8=DATA9=?DATA ===Coat WeightCoat Weight@jNodeSocketFloatFactor09=X9=DATA09=?DATA= = =Coat RoughnessCoat Roughness@jNodeSocketFloatFactor`9=:=DATA`9=<?DATA ===Coat IORCoat IOR@jNodeSocketFloat9=;=DATA9=??@DATA= = =Coat TintCoat Tint@w5bNodeSocketColor9===DATA9=????DATA ===Coat NormalCoat NormaljNodeSocketVector`=X>=DATA`=DATA= = =Sheen WeightSheen Weight@jNodeSocketFloatFactor9=?=DATA9=?DATA ===Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor :=@=DATA :=??DATA= = =Sheen TintSheen Tint@w5bNodeSocketColorP:=B=DATAP:=????DATA ===Emission ColorEmission Color@w5bNodeSocketColor:=XC=DATA:=????DATA= = =Emission StrengthEmission Strength@jNodeSocketFloat:=D=DATA:=$tIDATA ===Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength:=E=DATA:=, PGDATA= =Thin Film IORThin Film IOR@jNodeSocketFloat;=G=DATA;=q=??zDDATA =BSDFBSDFD}5bNodeSocketShaderXH=DATA@X(= "%DATAp !r=`r= = e=Material Outputg=?DDATA g=NTShader Nodetree"r=u0bShaderNodeTree$r=`&r=u|?u|?4==DATAp$r=`&r= j= ===Principled BSDF:rShaderNodeBsdfPrincipled`,V ACpCB???(=ơ=DATA j=l=Base ColorBase Color@w5bNodeSocketColorp;=N=DATAp;=?J z?)\O??DATAl= o= j=MetallicMetallic@jNodeSocketFloatFactor;=O=DATA;=?DATA o=q=l=RoughnessRoughness@jNodeSocketFloatFactor;=Q=DATA;=mq??DATAq= t= o=IORIOR@jNodeSocketFloat<=XR=DATA<=??zDDATA t=v=q=AlphaAlpha@jNodeSocketFloatFactor0<=S=DATA0<=??DATAv= y= t=NormalNormaljNodeSocketVector =T=DATA =DATA y={=v=WeightWeightHjNodeSocketFloat`<=V=DATA`<=DATA{= ~= y=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactor<=XW=DATA<=?DATA ~=={=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor<=X=DATA<=?DATA= = ~=Subsurface RadiusSubsurface Radius@jNodeSocketVector`=Y=DATA`=?L>=BDATA ===Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance<=[=DATA<=L= ADATA= = =Subsurface IORSubsurface IORHjNodeSocketFloatFactor ==X\=DATA ==33?G?33s@DATA ===Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactorP==]=DATAP==?DATA= = =Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor==^=DATA==??DATA ===Specular TintSpecular Tint@w5bNodeSocketColor==0=DATA==????DATA= = =AnisotropicAnisotropic@jNodeSocketFloatFactor==X1=DATA==?DATA ===Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactor>=2=DATA>=?DATA= = =TangentTangentjNodeSocketVector=3=DATA=DATA ===Transmission WeightTransmission Weight@jNodeSocketFloatFactor@>=5=DATA@>=?DATA= = =Coat WeightCoat Weight@jNodeSocketFloatFactorp>=X6=DATAp>=?DATA ===Coat RoughnessCoat Roughness@jNodeSocketFloatFactor>=7=DATA>=<?DATA= = =Coat IORCoat IOR@jNodeSocketFloat>=8=DATA>=??@DATA ===Coat TintCoat Tint@w5bNodeSocketColor?=:=DATA?=????DATA= = =Coat NormalCoat NormaljNodeSocketVector=X;=DATA=DATA ===Sheen WeightSheen Weight@jNodeSocketFloatFactor0?=<=DATA0?=?DATA= = =Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor`?===DATA`?=??DATA ===Sheen TintSheen Tint@w5bNodeSocketColor?=?=DATA?=????DATA= = =Emission ColorEmission Color@w5bNodeSocketColor?=X@=DATA?=????DATA ===Emission StrengthEmission Strength@jNodeSocketFloat?=A=DATA?=$tIDATA= = =Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength =B=DATA =, PGDATA ==Thin Film IORThin Film IOR@jNodeSocketFloatP=D=DATAP=q=??zDDATA=BSDFBSDFD}5bNodeSocketShaderXE=DATA@(= "%DATAp`&r=$r= ==Material Output2֫JCShaderNodeOutputMaterial,V|CC CB???ˡ=DATA ==SurfaceSurfaceD}5bNodeSocketShaderu|?F=DATA= = =VolumeVolume@}5bNodeSocketShaderG=DATA ===DisplacementDisplacementjNodeSocketVector =I=DATA =DATA= =ThicknessThicknessjNodeSocketFloat=XJ=DATA=DATA8u|?$r=`&r== =MA (r=GMAMaterial_006&>??????> Ą=?DDATA  Ą=NTShader Nodetree (r=u0bShaderNodeTree)r=+r=`v|?`v|?5=Ȣ=DATAp)r=+r=Ƅ== = =Principled BSDFxkCShaderNodeBsdfPrincipled`,V ACpCB???(=p=DATAƄ= Ʉ=Base ColorBase Color@w5bNodeSocketColor=K=DATA=&>??DATA Ʉ=˄=Ƅ=MetallicMetallic@jNodeSocketFloatFactor=L=DATA=?DATA˄= ΄= Ʉ=RoughnessRoughness@jNodeSocketFloatFactor=N=DATA=mq??DATA ΄=Є=˄=IORIOR@jNodeSocketFloat@=XO=DATA@=??zDDATAЄ= ӄ= ΄=AlphaAlpha@jNodeSocketFloatFactorp=P=DATAp=??DATA ӄ=Մ=Є=NormalNormaljNodeSocketVector=Q=DATA=DATAՄ= ؄= ӄ=WeightWeightHjNodeSocketFloat=S=DATA=DATA ؄=ڄ=Մ=Diffuse RoughnessDiffuse Roughness@jNodeSocketFloatFactor=XT=DATA=?DATAڄ= ݄= ؄=Subsurface WeightSubsurface Weight@jNodeSocketFloatFactor=U=DATA=?DATA ݄=߄=ڄ=Subsurface RadiusSubsurface Radius@jNodeSocketVector=V=DATA=?L>=BDATA߄= = ݄=Subsurface ScaleSubsurface Scale@ jNodeSocketFloatDistance0=X=DATA0=L= ADATA ==߄=Subsurface IORSubsurface IORHjNodeSocketFloatFactor`=XY=DATA`=33?G?33s@DATA= = =Subsurface AnisotropySubsurface Anisotropy@jNodeSocketFloatFactor=Z=DATA=?DATA ===Specular IOR LevelSpecular IOR Level@jNodeSocketFloatFactor=[=DATA=??DATA= = =Specular TintSpecular Tint@w5bNodeSocketColor=]=DATA=????DATA ===AnisotropicAnisotropic@jNodeSocketFloatFactor =X^=DATA =?DATA= = =Anisotropic RotationAnisotropic Rotation@jNodeSocketFloatFactorP=_=DATAP=?DATA ===TangentTangentjNodeSocketVector =`=DATA =DATA= = =Transmission WeightTransmission Weight@jNodeSocketFloatFactor=b=DATA=?DATA ===Coat WeightCoat Weight@jNodeSocketFloatFactor=Xc=DATA=?DATA= = =Coat RoughnessCoat Roughness@jNodeSocketFloatFactor=d=DATA=<?DATA ===Coat IORCoat IOR@jNodeSocketFloat=e=DATA=??@DATA= = =Coat TintCoat Tint@w5bNodeSocketColor@=g=DATA@=????DATA ===Coat NormalCoat NormaljNodeSocketVector`=Xh=DATA`=DATA= = =Sheen WeightSheen Weight@jNodeSocketFloatFactorp=i=DATAp=?DATA ===Sheen RoughnessSheen Roughness@jNodeSocketFloatFactor=j=DATA=??DATA= = =Sheen TintSheen Tint@w5bNodeSocketColor=l=DATA=????DATA ===Emission ColorEmission Color@w5bNodeSocketColor=Xm=DATA=????DATA= = =Emission StrengthEmission Strength@jNodeSocketFloat0=n=DATA0=$tIDATA ===Thin Film ThicknessThin Film Thickness@jNodeSocketFloatWavelength`=o=DATA`=, PGDATA= =Thin Film IORThin Film IOR@jNodeSocketFloat=q=DATA=q=??zDDATA =BSDFBSDFD}5bNodeSocketShaderXr=DATA@(= "%DATAp+r=)r== =Material OutputX~CShaderNodeOutputMaterial,V|CC CB???u=DATA= =SurfaceSurfaceD}5bNodeSocketShader`v|?s=DATA ===VolumeVolume@}5bNodeSocketShadert=DATA= = =DisplacementDisplacementjNodeSocketVector=v=DATA=DATA ==ThicknessThicknessjNodeSocketFloat=Xw=DATA=DATA8`v|?)r=+r= ==IM@ o=IMRender ResultX= \=&=??`ա=`ա===DATA0&=  |=DATA |=DATA=DATA`ա=DATAXX= Y=Slot 1DATAX Y=Y=X=Slot 2DATAXY= Z= Y=Slot 3DATAX Z=Z=Y=Slot 4DATAXZ= [= Z=Slot 5DATAX [=[=Z=Slot 6DATAX[= \= [=Slot 7DATAX \=[=Slot 8DNA1],VSDNANAME{*first*last*descriptionrna_subtype_pad[4]*identifier*namevalueiconbase*default_arraydefault_array_lenminmaxsoft_minsoft_maxstepdefault_valueenum_items_num*enum_items_pad[3]precision*default_valueid_type_pad[6]*pointergroupvalval2*next*prevtypesubtypeflagname[64]_pad0[4]datalentotallen*ui_dataoperationtag_pad0[2]*subitem_reference_name*subitem_local_namesubitem_reference_indexsubitem_local_index*subitem_reference_id*subitem_local_id*rna_pathoperations_pad[2]rna_prop_type*referenceproperties*hierarchy_root*storage*runtime_pad_1[4]statusskipped_refcountedskipped_directskipped_indirectremap*depsgraph*_pad*newid*lib*asset_dataname[66]usicon_idrecalcrecalc_up_to_undo_pushrecalc_after_undo_pushsession_uid*properties*override_library*orig_id*py_instance*library_weak_referenceruntime*name_map*filedatafilepath_abs[1024]*parenttemp_indexversionfilesubversionfileidname[1024]*packedfilelibrary_filepath[1024]library_id_name[66]w[2]h[2]flag[2]changed_timestamp[2]*rect[2]co[3]*pointslengthstart_frameend_framecolor[3]color_post[3]line_thickness_pad2[4]*points_vbo*batch_line*batch_pointspath_typepath_steppath_rangepath_viewflagpath_bakeflagpath_sfpath_efpath_bcpath_acpoint[3]plane_normal[3]plane_offsetdepth_scaledeform_dual_quatbbone_segmentsbbone_arc_length_reciprocal_pad1[4]*bbone_rest_mats*bbone_pose_mats*bbone_deform_mats*bbone_dual_quats*bbone_segment_boundaries*propconstraintsikflagprotectflagagrp_indexconstflagselectflagdrawflagbboneflag*bone*childiktreesiktree*mpath*custom*custom_txcustom_scalecustom_scale_xyz[3]custom_translation[3]custom_rotation_euler[3]custom_shape_wire_widthloc[3]size[3]eul[3]quat[4]rotAxis[3]rotAnglerotmodechan_mat[4][4]pose_mat[4][4]disp_mat[4][4]disp_tail_mat[4][4]constinv[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretchikrotweightiklinweightroll1roll2curveInXcurveInYcurveOutXcurveOutYease1ease2scaleInscale_in_yscaleOutscale_out_yscale_in[3]scale_out[3]*bbone_prev*bbone_next*temp*draw_data*orig_pchancolorchanbase*chanhash**chan_arrayctimestride_offset[3]cyclic_offset[3]agroupsactive_groupiksolver*ikdata*ikparamavsnumiternumstepminstepmaxstepsolverfeedbackmaxveldampmaxdampepschannelsfcurve_range_startfcurve_range_length*channel_bagcustomColcs**layer_arraylayer_array_numlayer_active_index**slot_arrayslot_array_numlast_slot_handle**strip_keyframe_data_arraystrip_keyframe_data_array_numcurvesgroupsmarkersactive_markeridrootframe_startframe_end*preview*source*filter_grpsearchstr[64]filterflagfilterflag2renameIndex_pad0[7]regionbasespacetypelink_flag_pad0[6]v2d*actionaction_slot_handleadstimeslidemodemode_prevautosnapcache_display_pad1[6]*grp*ipoconstraintChannelstempinfluencelayer_flagslayer_mix_mode**strip_arraystrip_array_numidtypehandleslot_flags_pad1[3]strip_type_pad0[3]data_indexframe_offset**channelbag_arraychannelbag_array_numslot_handlegroup_array_num**group_arrayfcurve_array_num**fcurve_array*curve*dataui_expand_flagsfraefrablendinblendout*coefficientsarraysizepoly_orderamplitudephase_multiplierphase_offsetvalue_offsettimef1f2totvertmidvalbefore_modeafter_modebefore_cyclesafter_cyclesrectsizestrengthphaseoffsetdepthmodificationstep_size*idpchan_name[64]transChanrotation_mode_pad[5]optionscontext_propertyfallback_valuetargets[8]num_targetscurvalvariablesexpression[256]*expr_comp*expr_simplevec[2]*drivermodifiers*bezt*fptactive_keyframe_indexextendauto_smoothingarray_indexcolor_modeprev_norm_factorprev_offsetstrips*actaction_slot_name[66]fcurvesstrip_timestartendactstartactendrepeatscaleblendmodeextendmode_pad1[2]*speaker_handle*orig_strip*_pad3indexgroup[64]groupmodekeyingflagkeyingoverridepathsidname[64]description[1024]typeinfo[64]active_pathslot_name[66]*tmpacttmp_slot_handletmp_slot_name[66]nla_tracks*act_track*actstripdriversoverrides**driver_arrayact_blendmodeact_extendmodeact_influence*adtpalette_indexcustomcollectionschildbaserollhead[3]tail[3]bone_mat[3][3]inherit_scale_modearm_head[3]arm_tail[3]arm_mat[4][4]arm_rolldistweightxwidthzwidthrad_headrad_taillayersegmentsbbone_mapping_mode_pad2[7]bbone_prev_typebbone_next_typebbone_flagbbone_prev_flagbbone_next_flagactive_collection_index*active_collectionbonebase*bonehash*_pad1*edbo*act_bone*act_edboneneeds_flush_to_iddrawtypedeformflagpathflag**collection_arraycollection_array_numcollection_root_countactive_collection_name[64]layer_usedlayer_protectedaxes_positionbonesflagschild_indexchild_count*bcoll*local_type_infocatalog_idcatalog_simple_name[64]*author*copyright*licensetagsactive_tagtot_tagscustom_library_indexasset_library_type*asset_library_identifier*relative_asset_identifier*pathname[32]rule*obfear_factorsignal_idlook_aheadoloc[3]cfradistancequeue_sizewanderlevelspeedflee_distancehealthacc[3]state_idrulesconditionsactionsruleset_typerule_fuzzinessvolumefallofflast_state_idlanding_smoothnessheightbankingpitchaggressionaccuracyrangeair_min_speedair_max_speedair_max_accair_max_aveair_personal_spaceland_jump_speedland_max_speedland_max_accland_max_aveland_personal_spaceland_stick_forcestates*imageoffset[2]alphadraw_smoothfacfill_factordraw_strengthdraw_jitterdraw_angledraw_angle_factordraw_random_pressdraw_random_strengthdraw_smoothlvldraw_subdividefill_layer_modefill_directionfill_threshold_pad2[2]caps_type_pad[1]flag2fill_simplylvlfill_draw_modefill_extend_modeinput_samplesuv_randombrush_typeeraser_modeactive_smoothera_strength_fera_thickness_fgradient_fgradient_s[2]simplify_fvertex_factorvertex_modesculpt_flagsculpt_mode_flagpreset_typebrush_draw_moderandom_huerandom_saturationrandom_valuefill_extend_facdilate_pixels*curve_sensitivity*curve_strength*curve_jitter*curve_rand_pressure*curve_rand_strength*curve_rand_uv*curve_rand_hue*curve_rand_saturation*curve_rand_valueoutline_facsimplify_px*material*material_altadd_amountpoints_per_curveminimum_lengthcurve_lengthminimum_distancecurve_radiusdensity_add_attemptsdensity_mode_pad[7]*curve_parameter_falloffclonemtexmask_mtex*toggle_brush*icon_imbuf*gradient*paint_curveicon_filepath[1024]normal_weightrake_factorblendob_modesampling_flagmask_pressurejitterjitter_absoluteoverlay_flagsspacingsmooth_stroke_radiussmooth_stroke_factorratergb[3]hardnessflowwet_mixwet_persistencedensitypaint_flagstip_roundnesstip_scale_xsecondary_rgb[3]dash_ratiodash_samplessculpt_planegradient_spacinggradient_stroke_modegradient_fill_modehas_unsaved_changesfalloff_shapefalloff_anglesculpt_toolvertexpaint_toolweightpaint_toolimagepaint_toolmask_toolgpencil_toolgpencil_vertex_toolgpencil_sculpt_toolgpencil_weight_toolcurves_sculpt_toolautosmooth_factortilt_strength_factortopology_rake_factorcrease_pinch_factornormal_radius_factorarea_radius_factorwet_paint_radius_factorplane_trimtexture_sample_biascurve_presetdisconnected_distance_maxdeform_targetautomasking_flagsautomasking_boundary_edges_propagation_stepsautomasking_start_normal_limitautomasking_start_normal_falloffautomasking_view_normal_limitautomasking_view_normal_falloffelastic_deform_typeelastic_deform_volume_preservationsnake_hook_deform_typepose_deform_typepose_offsetpose_smooth_iterationspose_ik_segmentspose_origin_typeboundary_deform_typeboundary_falloff_typeboundary_offsetcloth_deform_typecloth_force_falloff_typecloth_simulation_area_typecloth_masscloth_dampingcloth_sim_limitcloth_sim_falloffcloth_constraint_softbody_strengthsmooth_deform_typesurface_smooth_shape_preservationsurface_smooth_current_vertexsurface_smooth_iterationsmultiplane_scrape_anglesmear_deform_typeslide_deform_typetexture_overlay_alphamask_overlay_alphacursor_overlay_alphaunprojected_radiussharp_thresholdblur_kernel_radiusblur_modeadd_col[4]sub_col[4]stencil_pos[2]stencil_dimension[2]mask_stencil_pos[2]mask_stencil_dimension[2]*gpencil_settings*curves_sculpt_settingsautomasking_cavity_blur_stepsautomasking_cavity_factor*automasking_cavity_curvehsvcolorsactive_colorbezpressuretot_pointsadd_indexpath[4096]filepath[1024]_padobject_pathslayersis_sequenceforward_axisup_axisoverride_frameframeuse_render_proceduraluse_prefetchprefetch_cache_sizeactive_layer_pad2[3]velocity_unitvelocity_name[64]*handlehandle_filepath[1024]*handle_readersinterocular_distanceconvergence_distanceconvergence_modepivotpole_merge_angle_frompole_merge_angle_to*imaiuser*clipcuserrotationsource*focus_objectfocus_subtarget[64]focus_distanceaperture_fstopaperture_rotationaperture_ratioaperture_bladesdrw_corners[2][4][2]drw_tria[2][2]drw_depth[2]drw_focusmat[4][4]drw_normalmat[4][4]dtxpassepartalphaclipstaclipendlensortho_scaledrawsizesensor_xsensor_yshiftxshiftyYF_dofdistsensor_fitpanorama_typefisheye_fovfisheye_lenslatitude_minlatitude_maxlongitude_minlongitude_maxfisheye_polynomial_k0fisheye_polynomial_k1fisheye_polynomial_k2fisheye_polynomial_k3fisheye_polynomial_k4central_cylindrical_range_u_mincentral_cylindrical_range_u_maxcentral_cylindrical_range_v_mincentral_cylindrical_range_v_maxcentral_cylindrical_radius_pad2*dof_obgpu_dofdofbg_imagesstereo*cachemingoalCdisCvigravity[3]dtmassstructuralshearbendingmax_bendmax_structmax_shearmax_sewingavg_spring_lentimescaletime_scalemaxgoaleff_force_scaleeff_wind_scalesim_time_olddefgoalgoalspringgoalfrictvelocity_smoothdensity_targetdensity_strengthcollider_frictionvel_dampingshrink_minshrink_maxuniform_pressure_forcetarget_volumepressure_factorfluid_densityvgroup_pressure_pad7[6]bending_dampingvoxel_cell_sizestepsPerFrameprerollmaxspringlensolver_typevgroup_bendvgroup_massvgroup_structvgroup_shrinkshapekey_restpresetsreset*effector_weightsbending_modelvgroup_sheartensioncompressionmax_tensionmax_compressiontension_dampcompression_dampshear_dampinternal_spring_max_lengthinternal_spring_max_diversionvgroup_interninternal_tensioninternal_compressionmax_internal_tensionmax_internal_compression*collision_listepsilonself_frictionfrictiondampingselfepsilonrepel_forcedistance_repelself_loop_countloop_count*groupvgroup_selfcolvgroup_objcolclampself_clamplink_statelight_linking*collectionfh_idname[64]*export_properties_pad0object_cacheobject_cache_instancedparents*gobject_hash*owner_idgobjectchildrenactive_exporter_indexexportersdupli_ofs[3]color_taglineart_usagelineart_flagslineart_intersection_masklineart_intersection_priority*view_layerxyshortytotpointmintablemaxtableext_in[2]ext_out[2]*table*premultablepremul_ext_in[2]premul_ext_out[2]default_handle_typecurpresetchanged_timestampcurrcliprcm[4]black[3]white[3]bwmul[3]sample[3]tonex_resolutiondata_luma[256]data_r[256]data_g[256]data_b[256]data_a[256]xmaxymaxco[2][2]oksample_fullsample_lineswavefrm_modevecscope_modewavefrm_heightvecscope_heightwaveform_totwavefrm_alphawavefrm_yfacvecscope_alphaminmax[3][2]hist*waveform_1*waveform_2*waveform_3*vecscope*vecscope_rgblook[64]view_transform[64]exposuregammatemperaturetint*curve_mapping*_pad2display_device[64]name[30]ownspacetarspace*space_objectspace_subtarget[64]enforceheadtaillin_errorrot_error*tarsubtarget[64]matrix[4][4]spacerotOrder*texttarnumtargetsiterationsrootbonemax_rootbone*poletarpolesubtarget[64]poleangleorientweightgrabtarget[3]numpointschainlenxzScaleModeyScaleModebulgebulge_minbulge_maxbulge_smoothreserved1reserved2euler_ordermix_modepowerminmaxflaglocaleval_timetrackflaglockflagoffset_facfollowflagupflagvolmodeplaneorglengthpivXpivYpivZaxXaxYaxZminLimit[6]maxLimit[6]extraFzinvmat[4][4]fromtomap[3]expofrom_rotation_modeto_euler_ordermix_mode_locmix_mode_rotmix_mode_scalefrom_min[3]from_max[3]to_min[3]to_max[3]from_min_rot[3]from_max_rot[3]to_min_rot[3]to_max_rot[3]from_min_scale[3]from_max_scale[3]to_min_scale[3]to_max_scale[3]offset[3]rotAxisxminyminzminzmaxsoft*targetshrinkTypeprojAxisprojAxisSpaceprojLimitshrinkModetrackAxistrack[64]frame_methodobject[64]*camera*depth_ob*cache_fileobject_path[1024]*readerreader_object_path[1024]vec[3][3]alfaradiusipoh1h2f3hideeasingbackperiodauto_handle_typevec[4]_pad1[1]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bptilt_interpradius_interpcharidxkernwnurb*editnurb*bevobj*taperobj*textoncurve*key**mat*bevel_profiletexflagtwist_modetwist_smoothsmallcaps_scalepathlenbevresoltotcolwidthext1ext2resolu_renresolv_renactnuactvertoverflowspacemodealign_ybevel_modetaper_radius_modelineslinedistfsizewordspaceulposulheightxofyoflinewidthposselstartselendlen_wchar*str*editfontfamily[64]*vfont*vfontb*vfonti*vfontbi*tbtotboxactbox*strinfocurinfobevfac1bevfac2bevfac1_mappingbevfac2_mapping_pad2[6]fsize_realtime*curve_evaledit_data_from_original_pad3[7]*batch_cacheh1_loc[2]h2_loc[2]*profilepath_lensegments_len*segmentsview_rectclip_rect*curve_offsetspoint_datacurve_datapoint_sizecurve_sizevertex_group_namesvertex_group_active_indexattributes_active_indexgeometrysymmetryselection_domain*surface*surface_uv_mapactiveactive_rndactive_cloneactive_maskuidname[68]*sharing_infofilename[1024]*layerstypemap[53]totlayermaxlayertotsize*pool*externalvmaskemaskfmaskpmasklmask*canvas*brush_group*pointcacheptcachescurrent_frameformatdisp_typeimage_fileformateffect_uiinit_color_typeeffectimage_resolutionsubstepsinit_color[4]*init_textureinit_layername[68]dry_speeddiss_speedcolor_dry_thresholddepth_clampdisp_factorspread_speedcolor_spread_speedshrink_speeddrip_veldrip_accinfluence_scaleradius_scalewave_dampingwave_speedwave_timescalewave_springwave_smoothnessuvlayer_name[68]image_output_path[1024]output_name[68]output_name2[68]*pmdsurfacesactive_surerror[64]*psyscollisionrgbwetnessparticle_radiusparticle_smoothpaint_distance*paint_ramp*vel_rampproximity_falloffwave_typeray_dirwave_factorwave_clampmax_velocitysmudge_strengthbuttypestypevertgroupuserjitstalifetimetotparttotkeyseednormfacobfacrandfactexfacrandlifeforce[3]dampnablavectsizemaxlendefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2negdispvertgroup_vvgroupname[64]vgroupname_v[64]imat[4][4]*keysstartxstartynarrowminfactimeoffssubvstr[4]subversionminversionminsubversion*curscreen*curscene*cur_view_layerfileflagsglobalfbuild_commit_timestampbuild_hash[16]*fmd*fluid*fluid_old*fluid_mutex*fluid_group*force_group*effector_group*tex_density*tex_color*tex_wt*tex_shadow*tex_flame*tex_flame_coba*tex_coba*tex_field*tex_velocity_x*tex_velocity_y*tex_velocity_z*tex_flags*tex_range_field*guiding_parentp0[3]p1[3]dp0[3]cell_size[3]global_size[3]prev_loc[3]shift[3]shift_f[3]obj_shift_f[3]obmat[4][4]fluidmat[4][4]fluidmat_wt[4][4]base_res[3]res_min[3]res_max[3]res[3]total_cellsdxboundary_widthgravity_final[3]adapt_marginadapt_resadapt_thresholdmaxressolver_resborder_collisionsactive_fieldsbetavorticityactive_color[3]highres_samplingburning_rateflame_smokeflame_vorticityflame_ignitionflame_max_tempflame_smoke_color[3]noise_strengthnoise_pos_scalenoise_time_animres_noise[3]noise_scale_pad3[4]particle_randomnessparticle_numberparticle_minimumparticle_maximumparticle_band_widthfractions_thresholdfractions_distanceflip_ratiosys_particle_maximumsimulation_method_pad4[6]viscosity_value_pad5[4]surface_tensionviscosity_baseviscosity_exponentmesh_concave_uppermesh_concave_lowermesh_particle_radiusmesh_smoothen_posmesh_smoothen_negmesh_scalemesh_generator_pad6[2]particle_typeparticle_scalesndparticle_tau_min_wcsndparticle_tau_max_wcsndparticle_tau_min_tasndparticle_tau_max_tasndparticle_tau_min_ksndparticle_tau_max_ksndparticle_k_wcsndparticle_k_tasndparticle_k_bsndparticle_k_dsndparticle_l_minsndparticle_l_maxsndparticle_potential_radiussndparticle_update_radiussndparticle_boundarysndparticle_combined_exportguiding_alphaguiding_betaguiding_vel_factorguide_res[3]guiding_source_pad8[2]cache_frame_startcache_frame_endcache_frame_pause_datacache_frame_pause_noisecache_frame_pause_meshcache_frame_pause_particlescache_frame_pause_guidingcache_frame_offsetcache_flagcache_mesh_formatcache_data_formatcache_particle_formatcache_noise_formatcache_directory[1024]cache_typecache_id[4]_pad9[2]time_totaltime_per_frameframe_lengthcfl_conditiontimesteps_minimumtimesteps_maximumslice_per_voxelslice_depthdisplay_thicknessgrid_scale*cobavector_scalegridlines_lower_boundgridlines_upper_boundgridlines_range_color[4]axis_slice_methodslice_axisshow_gridlinesdraw_velocityvector_draw_typevector_fieldvector_scale_with_magnitudevector_draw_mac_componentsuse_cobacoba_fieldinterp_methodgridlines_color_fieldgridlines_cell_filter_pad10[3]velocity_scaleopenvdb_compressionclippingopenvdb_data_depth_pad11[7]viewsettings_pad12[4]*point_cache[2]ptcaches[2]cache_compcache_high_compcache_file_format_pad13[7]*mesh*noise_texture*verts_oldnumvertsvel_multivel_normalvel_randomvel_coord[3]fuel_amountvolume_densitysurface_distanceparticle_sizesubframestexture_sizetexture_offsetvgroup_densitybehaviortexture_type_pad4[3]guiding_modeselectionqiqi_startqi_endedge_typesexclude_edge_types*linestyle*scriptis_displayedmodulesraycasting_algorithmsphere_radiusdkr_epsiloncrease_anglelinesetszcolor[4]*pt_origidx_origuv_facuv_rotuv_fill[2]vert_color[4]verts[3]info[64]fill[4]beztpoint_index*curve_pointstot_curve_pointstmp_layerinfo[128]multi_frame_falloffstroke_startfill_startvertex_startcurve_start*gps_orig*trianglestotpointstot_trianglesthicknessinittimecolorname[128]caps[2]fill_opacity_facboundbox_min[3]boundbox_max[3]uv_rotationuv_translation[2]uv_scaleselect_index_pad4[4]*dvertvert_color_fill[4]*editcurve*_pad5frameidonion_id*gpf_origstrokesframenumkey_typename[128]sort_index*gpl_origframes*actframeonion_flaginfo[128]pass_indexinverse[4][4]parsubstr[64]partypeline_changetintcolor[4]opacityviewlayername[64]blend_modevertex_paint_opacitygstepgstep_nextgcolor_prev[3]gcolor_next[3]mask_layersact_masklocation[3]rotation[3]scale[3]layer_mat[4][4]layer_invmat[4][4]*sbuffer*sbuffer_position_buf*sbuffer_color_buf*sbuffer_batch*sbuffer_gpsplayingmatidsbuffer_sflagsbuffer_usedsbuffer_sizearrow_start[8]arrow_end[8]arrow_start_stylearrow_end_styletot_cp_points*cp_points*sbuffer_brush*gpencil_cache*lineart_cache*update_cachescale[2]curve_edit_resolutioncurve_edit_thresholdcurve_edit_corner_anglepalettespixfactorline_color[4]onion_factoronion_modezdepth_offsettotframetotstrokedraw_modeonion_keytypeselect_last_indexgrid*errormodifierlayername[64]materialname[64]vgname[64]factorfactor_strengthfactor_thicknessfactor_uvsnoise_offsetnoise_modelayer_pass*curve_intensitythickness_fac*curve_thickness*gpmdseg_startseg_endseg_modeseg_repeatframe_scalesegment_active_indexhsv[3]modify_colorhardeness*objectsample_lengthsubdiv*outline_materialcountrnd_offset[3]rnd_rot[3]rnd_scale[3]mat_rplstart_delaytransitiontime_alignmentspeed_facspeed_maxgaptime_modepercentage_facfade_factarget_vgname[64]fade_opacity_strengthfade_thickness_strength*cache_datastart_facend_facrand_start_facrand_end_facrand_offsetovershoot_facpoint_densitysegment_influencemax_angle*dmddashgapdash_offsetfalloff_typeparentinv[4][4]cent[3]force*curfalloffrot[3]stroke_stepstroke_start_offsetmulti(*vert_coords_prev)()duplicationsfading_centerfading_thicknessfading_opacity*colorbanduv_offsetfill_rotationfill_offset[2]fill_scalefit_methodalignment_rotationmin_weightdist_startdist_endaxisangleline_typessource_typeuse_multiple_levelslevel_startlevel_end*source_camera*light_contour_object*source_object*source_collection*target_materialtarget_layer[64]source_vertex_group[64]overscanshadow_camera_fovshadow_camera_sizeshadow_camera_nearshadow_camera_fartransparency_flagstransparency_maskintersection_maskshadow_selectionsilhouette_selectioncrease_thresholdangle_splitting_thresholdchain_smooth_tolerancechaining_image_thresholdcalculation_flagsstroke_depth_offsetlevel_start_overridelevel_end_overrideedge_types_overrideshadow_selection_overrideshadow_use_silhouette_override*la_data_ptr*aux_targetkeep_distshrink_typeshrink_optsshrink_modeproj_limitproj_axissubsurf_levelssmooth_factorsmooth_stepskipspreadfstopfocal_lengthsensorrationum_bladeshigh_quality*id_referencedrawing_index*values*layer_nameframes_storagemasksactive_mask_index*parsubstrtranslation[3]*viewlayernamefilternum_frames_beforenum_frames_aftercolor_before[3]color_after[3]**drawing_arraydrawing_array_size*root_group_ptrlayers_data*active_node**material_arraymaterial_array_size_pad3[2]onion_skinning_settings*sceneframenrcyclmultiview_eyepasstilemulti_indexview*animtile_number*rendertilearray_layertilearray_offset[2]tilearray_size[2]gen_xgen_ygen_typegen_flaggen_depthgen_color[4]label[64]*cache_mutex*partial_update_register*partial_update_userbackdrop_offset[2]drawdata*gputexture[3][2]anims*rrrenderslotsrender_slotlast_render_slotlastframegpuframenrgpuflaggpu_passgpu_layergpu_viewseam_marginpackedfileslastusedaspxaspycolorspace_settingsalpha_modeeyeviews_formatactive_tile_indextilesviews*stereo3d_formatblocktypeadrcodemaxrcttotrctvartypeextrapbitmaskslide_minslide_maxcurveshowkeymuteiporelativetotelemvgroup[64]sliderminslidermax*refkeyelemstr[32]elemsizeblock*fromuidgenpntswopntsuopntsvopntswtypeutypevtypewactbpfufvfwdudvdw*def*editlatt*base_origlayflag_from_collectionflag_legacylocal_view_bitslocal_collections_bits*engine_type(*free)()runtime_flaglayer_collectionsrender_passesobject_bases*stats*basactlayflagpassflagpass_alpha_thresholdcryptomatte_flagcryptomatte_levelssamples*mat_override*world_override*id_propertiesfreestyle_configeeveeaovs*active_aovlightgroups*active_lightgroup**object_bases_array*object_bases_hashenergy_newspotsizespotblendarea_shape_pad1area_sizearea_sizeyarea_sizezarea_spreadsun_anglepr_textureuse_nodescascade_max_distcascade_exponentcascade_fadecascade_countdiff_facspec_factransmission_facvolume_facatt_distshadow_filter_radiusshadow_maximum_resolutionshadow_jitter_overblur*nodetreeenergyattenuation_typeparallax_typegrid_flagdistinfdistparvis_biasvis_bleedbiasvis_blurintensitygrid_resolution_xgrid_resolution_ygrid_resolution_zgrid_bake_samplesgrid_surface_biasgrid_escape_biasgrid_normal_biasgrid_view_biasgrid_facing_biasgrid_validity_thresholdgrid_dilation_thresholdgrid_dilation_radiusgrid_clamp_directgrid_clamp_indirectgrid_surfel_density*visibility_grpdata_display_sizeposition[3]attenuation_facattenuationmat[4][4]parallaxmat[4][4]mat[4][4]resolution[3]corner[3]attenuation_scaleincrement_x[3]attenuation_biasincrement_y[3]level_biasincrement_z[3]_pad4visibility_biasvisibility_bleedvisibility_range_pad5*textex_size[3]data_typecomponentsversioncube_lengrid_lenmips_lenvis_resref_res_pad[4][2]grid_txcube_tx*cube_mips*cube_data*grid_data(*L0)()(*L1_a)()(*L1_b)()(*L1_c)()*validity(*virtual_offset)()*L0*L1_a*L1_b*L1_cdata_layoutblock_lenblock_size*block_infosbakingirradiancevisibilityconnectivitysurfels_len*surfelsshareddirty*grid_static_cache*color_rampvalue_minvalue_maxrange_minrange_maxmin_curvaturemax_curvaturemin_thicknessmax_thicknessmin_anglemat_attrsamplingerrorwavelengthoctavesfrequencybackbone_lengthtip_lengthroundsrandom_radiusrandom_centerrandom_backbonescale_xscale_ypivot_upivot_xpivot_ytoleranceorientationthickness_positionthickness_ratiocapschainingsplit_lengthmin_lengthmax_lengthchain_countsplit_dash1split_gap1split_dash2split_gap2split_dash3split_gap3sort_keyintegration_typetexsteptexactdash1gap1dash2gap2dash3gap3panel*mtex[18]color_modifiersalpha_modifiersthickness_modifiersgeometry_modifiersmasklayersmasklay_actmasklay_totparent[64]sub_parent[64]parent_orig[2]parent_corners_orig[4][2]utot_uw*uwparentoffset_modeweight_interptot_point*points_deformtot_vertsplinessplines_shapes*act_spline*act_pointblend_flagrestrictflag*image_user*uvname*attribute_namevalidinterp*simastroke_rgba[4]fill_rgba[4]mix_rgba[4]stroke_stylefill_stylemix_factorgradient_anglegradient_radiusgradient_scale[2]gradient_shift[2]texture_angletexture_scale[2]texture_offset[2]texture_opacitytexture_pixsizegradient_typemix_stroke_factoralignment_modemat_occlusionintersection_prioritysurface_render_methodaspecrspecgspecbray_mirrorspecgloss_mirroughnessmetallicpr_typepr_flagline_col[4]line_priorityvcol_alphapaint_active_slotpaint_clone_slottot_slotsdisplacement_methodthickness_modealpha_thresholdrefract_depthblend_methodblend_shadowvolume_intersection_methodinflate_bounds*texpaintslotgpumaterial*gp_stylelinearttotedgetotpolytotloop*poly_offset_indicesvdataedatapdataldata*mselecttotselectact_face*texcomesheditflagsmoothreshremesh_voxel_sizeremesh_voxel_adaptivityface_sets_color_seedface_sets_color_default*active_color_attribute*default_color_attributeremesh_modecd_flagsubdivrsubsurftype*mpoly*mloop*mvert*medge*mtface*tface*mcol*mfacefdatatotface*tpageuv[4][2]col[4]transpunwrapfis[255]s_lendef_nr*dwtotweightradius[3]totdisp(*disps)()*hiddenv1v2creasebweightloopstartuv[2]ev3v4edcode*bbexpxexpyexpzradrad2*mat*imatelems*editelemswiresizerendersizethresh*lastelemexecution_timelayout_panel_open_flagpersistent_uid*texture*map_objectmap_bone[64]uvlayer_tmptexmappingsubdivTypelevelsrenderLevelsuv_smoothqualityboundary_smooth*emCache*mCachedefaxisrandomize*ob_armthreshold*start_cap*end_cap*curve_ob*offset_obmerge_distfit_typeoffset_typeuv_offset[2]bisect_thresholduse_correct_order_on_mergeuv_offset_copy[2]*mirror_obsplit_angleresval_flagsprofile_typelim_flagse_flagsmatedge_flagsface_str_modemiter_innermiter_outervmesh_methodaffect_typeprofilebevel_angledefgrp_name[64]*custom_profileedge_weight_name[64]vertex_weight_name[64]*domain*flow*effectordirectionmidlevel*projectors[10]num_projectorsaspectxaspectyscalexscaleypercentiterdelimitsymmetry_axisdefgrp_factorface_countfac*objectcenter*_pad4*indexartotindex*clothObject*sim_parms*coll_parms*point_cache*hairdatahair_grid_min[3]hair_grid_max[3]hair_grid_res[3]hair_grid_cellsize*solver_result(*x)()(*xnew)()(*xold)()(*current_xnew)()(*current_x)()(*current_v)()(*vert_tris)()mvert_numtri_numtime_xtime_xnewis_static*bvhtree(*vert_positions_prev)()(*vert_velocities)()cfra_prevverts_numdouble_thresholdmaterial_modebm_flagvertextotinfluencegridsize*bindinfluences*bindoffsets*bindcagecostotcagevert*dyngrid*dyninfluences*dynvertsdyngridsizedyncellmin[3]dyncellwidthbindmat[4][4]*bindweights*bindcos(*bindfunc)()*mesh_final*mesh_originaltotdmverttotdmedgetotdmfacepsyspositionrandom_positionrandom_rotationparticle_amountparticle_offsetindex_layer_name[68]value_layer_name[68]*facepavgroupprotectuvname[68]lvlsculptlvlrenderlvltotlvlsimple*fss*auxTargetvgroup_name[64]keepDistshrinkOptssubsurfLevels*originlimit[2]deform_axisshell_defgrp_name[64]rim_defgrp_name[64]offset_fac_vgoffset_clampnonmanifold_offset_modenonmanifold_boundary_modecrease_innercrease_outercrease_rimmat_ofsmat_ofs_rimmerge_tolerancebevel_convex*ob_axisstepsrender_stepsscrew_ofs*ocean*oceancacheresolutionviewport_resolutionspatial_sizewind_velocitysmallest_wavewave_alignmentwave_directionwave_scalechop_amountfoam_coveragespectrumfetch_jonswapsharpen_peak_jonswapbakestartbakeendcachepath[1024]foamlayername[68]spraylayername[68]cachedgeometry_moderepeat_xrepeat_yfoam_fade*object_from*object_tobone_from[64]bone_to[64]falloff_radiusedit_flagsdefault_weight*cmap_curveadd_thresholdrem_thresholdmask_constantmask_defgrp_name[64]mask_tex_use_channel*mask_texture*mask_tex_map_objmask_tex_map_bone[64]mask_tex_mappingmask_tex_uvlayer_name[68]defgrp_name_a[64]defgrp_name_b[64]default_weight_adefault_weight_bmix_setproximity_modeproximity_flags*proximity_ob_targetmin_distmax_dist*brushhermite_numvoxel_sizeadaptivitybranch_smoothingsymmetry_axesquad_methodngon_methodmin_verticeslambdalambda_border(*deltas)()deltas_numsmooth_typerest_source(*bind_coords)()bind_coords_numdelta_cacheaxis_uaxis_vcenter[2]*object_srcbone_src[64]*object_dstbone_dst[64]play_modeflip_axisdeform_modeeval_frameeval_factoranchor_grp_name[64]total_verts*vertexco*cache_systemcrease_weight*ob_sourcedata_typesvmap_modeemap_modelmap_modepmap_modemap_max_distancemap_ray_radiusislands_precisionlayers_select_src[5]layers_select_dst[5]mix_limitread_flag*vert_inds*vert_weightsnormal_dist*bindsnumbindsvertex_idx*vertsnum_mesh_vertstarget_verts_numnumpoly*id_name*lib_name*packed_filemeta_files_numblob_files_num*meta_files*blob_filesbake_modebake_target*directorydata_blocks_numactive_data_block*data_blocks*packedbake_size*node_groupsettings*simulation_bake_directorybakes_num*bakespanels_num*panelsresolution_modevoxel_amountinterior_band_width*texture_map_objecttexture_map_modetexture_mid_level[3]texture_sample_radiusgrid_name[64]layer_name[64]material_passvertex_group_name[64]*custom_curvecolor_factorhardness_factor_pad[8]tint_modestroke_loc[3]stroke_rot[3]stroke_scale[3]*segments_arraysegments_nummask_switchesmaterial_mask_bits*shared_cachesegment_startsegment_endsegment_modesegment_repeatrender_sizerender_flagdir[768]tcbuild_size_flagbuild_tc_flaguser*gputexture[3]gputextureslastsize[2]*gpdtracking*tracking_contextproxyuse_track_masktrack_preview_heightframe_widthframe_heightundist_marker*track_search*track_previewtrack_pos[2]track_disabledtrack_lockedscene_framenr*track*markerslide_scale[2]channel[32]noisesizeturbulno_rot_axisstride_axiscurmodactoffsstridelenstridechannel[32]offs_bone[32]item_typeitem*socket_typeattribute_domaindefault_input*default_attribute_name*socket_data**items_arrayitems_numidentifierroot_panelactive_indexnext_uidhasinputhasoutputdatatypesockettypeis_copyexternalidentifier[64]limitin_out*typeinfostack_indexdisplay_shapeshort_label[64]description[64]own_indexto_index*linknsinputsoutputsui_ordercustom1custom2custom3custom4warning_propagationlocxlocyoffsetxoffsetynum_panel_states*panel_states_array*fromnode*tonode*fromsock*tosockmulti_input_socket_indexnode_idid_in_nodepathview_center[2]nodeslinkscur_indexchunksizeexecution_modedefault_group_node_widthviewer_bordertree_interface*previewsactive_viewer_keynested_node_refs_num*nested_node_refs*geometry_node_asset_traitsvalue[3]value_euler[3]value[4]value[1024]*valuelabel_sizetype_idname[64]nrcyclicmoviesaturationcontrastgainliftmastershadowsmidtoneshighlightsstartmidtonesendmidtonesflapsroundingcatadioptriclensshiftpass_name[64]sizexsizeymaxspeedminspeedaspectcurvedpercentxpercentyfiltertypebokehimage_in_widthimage_in_heightcenter_xcenter_yspinzoomsigma_colorsigma_spacevariationuniformitysharpnesseccentricityhigh_precisioncontrast_limitcorner_roundinghuesatim_formatbase_path[1024]active_inputsave_as_renderuse_render_formatuse_node_formatpath[1024]layer[30]t1t2t3fstrengthfalphakey[4]algorithmchannelx1x2y1y2fac_x1fac_x2fac_y1fac_y2ycc_modebktypepreviewgamcono_zbufmaxblurbthresh*dict*nodestar_45streakscolmodmixfadeangle_ofskeymcjitprojfitslope[3]power[3]offset_basislift[3]gamma[3]gain[3]input_temperatureinput_tintoutput_temperatureoutput_tintlimchanunspilllimscaleuspillruspillguspillbfrom_color_space[64]to_color_space[64]size_xsize_ytex_mappingcolor_mappingsky_modelsun_direction[3]turbidityground_albedosun_sizesun_intensitysun_elevationsun_rotationaltitudeair_densitydust_densityozone_densitysun_disccolor_spaceprojectionprojection_blendinterpolationextensionoffset_freqsquash_freqsquashdimensionsnormalizefeaturecoloringmusgrave_typebands_directionrings_directionwave_profilename[256]convert_fromconvert_topoint_sourceparticle_systemcolor_sourceob_color_sourcepdcached_resolutionvertex_attribute_name[68]use_subsurface_auto_radiusmodelparametrizationtracking_object[64]smoothnessscreen_balancedespill_factordespill_balanceedge_kernel_radiusedge_kernel_toleranceclip_blackclip_whitedilate_distancefeather_distancefeather_falloffblur_preblur_posttrack_name[64]wrap_axisplane_track_name[64]motion_blur_samplesmotion_blur_shutterbytecode_hash[64]*bytecodedirection_typeuv_map[64]source[2]ray_lengthencoded_hashadd[3]remove[3]entries*matte_idnum_inputshdrprefilterinterpolation_typedomainbooleanintegerrotation_euler[3]vector[3]*stringtransform_spaceinput_type_radiustarget_elementfill_typecount_modeinput_type*items_arraynext_identifierenum_definitionspline_typehandle_typeuse_all_curvesmapping*capture_itemscapture_items_numalign_xpivot_modemethodsocket_typeoutput_node_id*itemsinspection_indexinput_itemsmain_itemsgeneration_itemsfactor_modeclamp_factorclamp_resultblend_typecolor_iddraw_stylevel[3]threadsshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgrav[3]animStartanimEndbakeStartbakeEndframeOffsetgstarmaxRefineiniVelxiniVelyiniVelzsurfdataPath[1024]bbStart[3]bbSize[3]typeFlagsdomainNovecgenvolumeInitTypepartSlipValuegenerateTracersgenerateParticlessurfaceSmoothingsurfaceSubdivsparticleInfSizeparticleInfAlphafarFieldSize*meshVelocitiescpsTimeStartcpsTimeEndcpsQualityattractforceStrengthattractforceRadiusvelocityforceStrengthvelocityforceRadiuslastgoodframeanimRatedeflectforcefieldshapetex_modekinkkink_axiszdirf_strengthf_dampf_flowf_wind_factorf_sizef_powermaxdistmindistf_power_rmaxradminradpdef_damppdef_rdamppdef_permpdef_frictpdef_rfrictpdef_sticknessabsorptionpdef_sbdamppdef_sbiftpdef_sboftclump_facclump_powkink_freqkink_shapekink_ampfree_endtex_nablaf_noisedrawvec1[4]drawvec2[4]drawvec_falloff_min[3]drawvec_falloff_max[3]*f_sourcepdef_cfrictweight[14]global_gravitytotspring*bpoint*bspringmsg_lockmsg_valuenodemassnamedVG_Mass[64]gravmediafrictrklimitphysics_speednamedVG_Softgoal[64]fuzzynessinspringinfrictnamedVG_Spring_K[64]solverflags**keystotpointkeysecondspringcolballballdampballstiffsbc_modeaeroedgeminloopsmaxloopschokesolver_IDplasticspringpreload*scratchshearstiffinpush*shared*collision_grouplcom[3]lrot[3][3]lscale[3][3]last_framevec[8][3]usagelight_set_membershipshadow_set_membershipreceiver_light_setblocker_shadow_set*receiver_collection*blocker_collection*sculptpar1par2par3*proxy*proxy_group*proxy_from*poselib*pose*_pad0defbasefmapsgreasepencil_modifiersshader_fxrestore_mode*matbitsactcoldloc[3]dsize[3]dscale[3]drot[3]dquat[4]drotAxis[3]drotAnglecolbitstransflagnlaflagduplicator_visibility_flagbase_flagbase_local_view_bitscol_groupcol_maskboundtypecollision_boundtypeempty_drawtypeempty_drawsizedupfacescaactdefsoftflagshapenrshapeflag_pad3[1]nlastripshooksparticlesystem*pd*soft*dup_group*fluidsimSettingspc_ids*rigidbody_object*rigidbody_constraintima_ofs[2]*iuserempty_image_visibility_flagempty_image_depthempty_image_flagmodifier_flag_pad8[4]*lightgroup*light_linking*lightprobe_cachecurindexusedusedelemseekworld_co[3]rot[4]ave[3]*groundwander[3]rest_lengthparticle_index[2]delete_flagnumpa[4]w[4]fuv[4]foffsetdurationstateprev_state*hair*boiddietimenum_dmcachesphdensityhair_indexalivespring_kplasticity_constantyield_ratioplasticity_balanceyield_balanceviscosity_omegaviscosity_betastiffness_kstiffness_knearrest_densitybuoyancyspring_frames*boidsdistrphystypeavemodereacteventdrawdraw_sizedraw_aschildtyperen_asdraw_coldraw_stepren_stephair_stepkeys_stepadapt_angleadapt_pixintegratorrotfrombb_alignbb_uv_splitbb_animbb_split_offsetbb_tiltbb_rand_tiltbb_offset[2]bb_size[2]bb_vel_headbb_vel_tailcolor_vec_maxtimetweakcourant_targetjitfaceff_hairgrid_randps_offset[1]grid_reseffector_amounttime_flagpartfactanfactanphasereactfacob_vel[3]avefacphasefacrandrotfacrandphasefacrandsizedragfacbrownfacdampfacrandlengthchild_flagchild_nbrren_child_nbrchildsizechildrandsizechildradchildflatclumpfacclumppowkink_flatkink_amp_clumpkink_extra_stepskink_axis_randomkink_amp_randomrough1rough1_sizerough2rough2_sizerough2_thresrough_endrough_end_shapeclengthclength_thresparting_facparting_minparting_maxbranch_thresdraw_line[2]path_startpath_endtrail_countkeyed_loops*clumpcurve*roughcurveclump_noise_sizebending_randomdupliweights*dup_ob*bb_ob*pd2use_modifier_stack_pad5[2]shape_flagtwistrad_rootrad_tiprad_scale*twistcurve*_pad7*part*particles*edit(*free_edit)()**pathcache**childcachepathcachebufschildcachebufs*clmd*hair_in_mesh*hair_out_mesh*target_ob*lattice_deform_datatree_framebvhtree_framechild_seedtotunexisttotchildtotcachedtotchildcachetarget_psystotkeyedbakespacebb_uvname[3][68]vgroup[13]vg_negrt3_pad3[6]*effectors*fluid_springstot_fluidspringsalloc_fluidsprings*tree*pdddt_fraclattice_strength*orig_psystotdata*data[8]extradatasimframestartframeendframeeditframelast_exactlast_validprev_name[64]*cached_framescached_frames_lenmem_cache_pad3[3]*physics_world**objects*constraintsltimenumbodiessteps_per_secondnum_solver_iterationscol_groupsmesh_sourcerestitutionmarginlin_dampingang_dampinglin_sleep_threshang_sleep_threshorn[4]pos[3]*ob1*ob2breaking_thresholdspring_typelimit_lin_x_lowerlimit_lin_x_upperlimit_lin_y_lowerlimit_lin_y_upperlimit_lin_z_lowerlimit_lin_z_upperlimit_ang_x_lowerlimit_ang_x_upperlimit_ang_y_lowerlimit_ang_y_upperlimit_ang_z_lowerlimit_ang_z_upperspring_stiffness_xspring_stiffness_yspring_stiffness_zspring_stiffness_ang_xspring_stiffness_ang_yspring_stiffness_ang_zspring_damping_xspring_damping_yspring_damping_zspring_damping_ang_xspring_damping_ang_yspring_damping_ang_zmotor_lin_target_velocitymotor_ang_target_velocitymotor_lin_max_impulsemotor_ang_max_impulse*physics_constraintcodecaudio_codecvideo_bitrateaudio_bitrateaudio_mixrateaudio_channelsaudio_volumegop_sizemax_b_framesconstant_rate_factorffmpeg_presetrc_min_raterc_max_raterc_buffer_sizemux_packet_sizemux_ratemixratemainspeed_of_sounddoppler_factordistance_modellay_zmasklay_excludepass_xorfreestyleConfigsuffix[64]viewflagdisplay_modeanaglyph_typeinterlace_typeimtypeplanescompressexr_codeccineon_flagcineon_whitecineon_blackcineon_gammajp2_flagjp2_codectiff_codecstereo3d_formatcolor_management_pad1[7]view_settingsdisplay_settingslinear_colorspace_settingscage_extrusionmax_ray_distancepass_filternormal_swizzle[3]normal_spacetargetsave_modemargin_typeview_from*cage_objectffcodecdatasubframepsfrapefraimagesframaptoframelenframe_stepdimensionspresetxschyschtilextileysubimtypeuse_lock_interface_pad7[3]scemodefrs_secalphamode_pad0[1]borderactlayxaspyaspfrs_sec_basegausscolor_mgt_flagdither_intensitybake_flagbake_filterbake_samplesbake_margin_type_pad9[6]bake_biasdistbake_user_scalepic[1024]stampstamp_font_idstamp_udata[768]fg_stamp[4]bg_stamp[4]seq_prev_typeseq_rend_typeseq_flag_pad5[3]simplify_subsurfsimplify_subsurf_rendersimplify_gpencilsimplify_particlessimplify_particles_rendersimplify_volumesline_thickness_modeunit_line_thicknessengine[32]perf_flagbake_pad8preview_pixel_sizeactviewhair_typehair_subdivblurfacmotion_blur_positionmblur_shutter_curvecompositor_devicecompositor_precisionuse_old_cpu_compositor_pad10[7]initialized*brush_asset_reference*main_brush_asset_referenceactive_brush_per_brush_type*eraser_brush*eraser_brush_asset_referencetool_brush_bindings*palette*cavity_curve*paint_cursorpaint_cursor_col[4]num_input_samplessymmetry_flagstile_offset[3]paintmissing_dataseam_bleednormal_anglescreen_grab_size[2]*stencil*clonestencil_col[3]dithercanvas_source*canvas_imageimage_userinverttotrekeytotaddkeybrushtypebrush[7]*paintcursoremitterdistselectmodeedittypefade_frames*shape_objecttransform_moderadial_symm[3]detail_sizesymmetrize_directiongravity_factorconstant_detaildetail_percent*automasking_cavity_curve_op*gravity_object*strength_curveuse_guideuse_snappingreference_pointangle_snap*reference_objectlock_axisisect_threshold*cur_falloff*cur_primitiveguide*custom_ipolast_rake[2]last_rake_anglelast_stroke_validaverage_stroke_accum[3]average_stroke_counterbrush_rotationbrush_rotation_secanchored_sizeoverlap_factordraw_invertedstroke_activedraw_anchoreddo_linear_conversionlast_location[3]last_hitanchored_initial_mouse[2]pixel_radiusinitial_pixel_radiusstart_pixel_radiussize_pressure_valuetex_mouse[2]mask_tex_mouse[2]*colorspacecurve_typedepth_modesurface_planeerror_thresholdradius_minradius_maxradius_taper_startradius_taper_endsurface_offsetcorner_angleoverhang_axisoverhang_minoverhang_maxthickness_minthickness_maxthickness_samplesdistort_mindistort_maxsharp_minsharp_maxsnap_modesnap_flagoverlap_modesnap_distancepivot_point*vpaint*wpaintuvsculpt*gp_paint*gp_vertexpaint*gp_sculptpaint*gp_weightpaint*curves_sculptvgroup_weightdoublimitautomergeobject_flagunwrapperuvcalc_flaguv_flaguv_selectmodeuv_stickyuvcalc_marginuvcalc_iterationsuvcalc_weight_factoruvcalc_weight_group[64]autoik_chainlengpencil_flagsgpencil_v3d_aligngpencil_v2d_alignannotate_v3d_alignannotate_thicknessgpencil_surface_offsetgpencil_selectmode_editgpencil_selectmode_sculptgp_sculptgp_interpolateimapaintpaint_modeparticleproportional_sizeselect_threshkeying_flagautokey_modekeyframe_typemultires_subdiv_typeedge_modeedge_mode_live_unwraptransform_pivot_pointtransform_flagsnap_node_modesnap_uv_modesnap_anim_modesnap_flag_nodesnap_flag_seqsnap_flag_animsnap_uv_flagsnap_targetsnap_transform_mode_flagsnap_face_nearest_stepsproportional_editprop_modeproportional_objectsproportional_maskproportional_actionproportional_fcurvelock_markersauto_normalizewpaint_lock_relativemultipaintweightuservgroupsubsetgpencil_selectmode_vertexuv_sculpt_settingsworkspace_tool_type_pad5[1]sculpt_paint_settingssculpt_paint_unified_sizesculpt_paint_unified_unprojected_radiussculpt_paint_unified_alphaunified_paint_settingscurve_paint_settingsstatvisnormal_vector[3]_pad6[4]*custom_bevel_profile_preset*sequencer_tool_settingssnap_mode_toolsplane_axisplane_depthplane_orientuse_plane_axis_auto_pad7[2]snap_angle_increment_2dsnap_angle_increment_2d_precisionsnap_angle_increment_3dsnap_angle_increment_3d_precisionscale_lengthsystemsystem_rotationlength_unitmass_unittime_unittemperature_unitquick_cache_steptitle[2]action[2]title_center[2]action_center[2]light_direction[3]shadow_shiftshadow_focusmatcap_ssao_distancematcap_ssao_attenuationmatcap_ssao_samplesviewport_aarender_aashadingscreen_trace_qualityscreen_trace_thicknesstrace_max_roughnessresolution_scaledenoise_stagesgi_diffuse_bouncesgi_cubemap_resolutiongi_visibility_resolutiongi_glossy_clampgi_irradiance_pool_sizetaa_samplestaa_render_samplesvolumetric_startvolumetric_endvolumetric_tile_sizevolumetric_samplesvolumetric_sample_distributionvolumetric_light_clampvolumetric_shadow_samplesvolumetric_ray_depthgtao_distancegtao_thicknessgtao_focusgtao_resolutionfast_gi_step_countfast_gi_ray_countgtao_qualityfast_gi_distancefast_gi_thickness_nearfast_gi_thickness_farfast_gi_methodbokeh_overblurbokeh_max_sizebokeh_thresholdbokeh_neighbor_maxmotion_blur_maxmotion_blur_stepsmotion_blur_depth_scaleshadow_cube_sizeshadow_pool_sizeshadow_ray_countshadow_step_countshadow_resolution_scaleclamp_surface_directclamp_surface_indirectclamp_volume_directclamp_volume_indirectray_tracing_methodray_tracing_optionslight_thresholdsmaa_thresholdexport_methodindex_custom*world*setcursorlayact*ed*toolsettingssafe_areasaudiotransform_spacesorientation_slots[4]*sound_scene*playback_handle*sound_scrub_handle*speaker_handles*fps_info*depsgraph_hash_pad7[4]active_keyingsetkeyingsetsunitphysics_settings*_pad8customdata_maskcustomdata_mask_modalsequencer_colorspace_settings*rigidbody_worldview_layers*master_collection*layer_propertiessimulation_frame_startsimulation_frame_enddisplaygrease_pencil_settingshydra*_pad9vertbaseedgebaseareabasewinidredraws_flagdo_drawdo_refreshdo_draw_gesturedo_draw_paintcursordo_draw_dragskip_handlingscrubbing*active_region*animtimer*context*tool_tip*newvvec*v1*v2*idname*type*layoutpanelname[64]*drawnameofsxofsyblocksizexblocksizeylabelofssortorder*activedatalayout_panel_stateslist_id[128]layout_typelist_scrolllist_griplist_last_lenlist_last_activeifilter_byname[128]filter_flagfilter_sort_flag*dyn_datamat[3][3]preview_id[64]id_session_uidcur_fixed_heightsize_minsize_maxalign*toolis_tool_set*v3*v4*fullbutspacetypebutspacetype_subtypewinxwinyheadertyperegion_active_win*globalspacedatahandlersactionzones*categoryvisible_rectoffset_xoffset_y*block_name_map*popup_block_panelwinrctdrawrctcategory_scrollvisibleregiontypealignmentoverlapflagfullscreenuiblockspanelspanels_category_activeui_listsui_previewspanels_category*gizmo_map*regiontimer*draw_buffer*headerstr*regiondataasset_library_referenceenabled_catalog_paths*active_catalog_pathsearch_string[64]preview_sizedisplay_flagpreferred_row_countinstance_flagshelves*active_shelforig_widthorig_heightorig_fpstopbottomleftrightxofsyofsorigin[2]file[256]build_size_flagsbuild_tc_flagsbuild_flagsstoragedonestartstillendstill*stripdata*crop*transform*color_balancestrip_frame_indexretiming_factororiginal_strip_frame_indexoriginal_retiming_factor*tmpstartofsendofsmachinestartdispenddispmulstreamindexmulticam_sourceclip_flag*strip*scene_camera*maskeffect_faderspeed_fader*seq1*seq2seqbaseconnections*sound*scene_soundpanstrobesound_offset*effectdataanim_startofsanim_endofsblend_opacitymedia_playback_ratespeed_factor*retiming_handlesretiming_handle_num*oldbasep*old_channels*parseqdisp_range[2]*seq_ref*sequence_lookup*media_presence*thumbnail_cache*seqbasep*displayed_channelsmetastack*act_seqact_imagedir[1024]act_sounddir[1024]proxy_dir[1024]proxy_storageover_ofsover_cfraover_flagover_bordershow_missing_media_flagrecycle_max_cost*prefetch_jobdisk_cache_timestampedgeWidthforwardwipetypefMinifClampfBoostdDistdQualitybNoCompScalexIniScaleyInixIniyInirotIniuniform_scalecol[3]*frameMapglobalSpeedspeed_control_typespeed_fader_lengthspeed_fader_frame_numbertext[512]*text_fonttext_blf_idtext_sizeshadow_color[4]box_color[4]outline_color[4]loc[2]wrap_widthbox_marginshadow_angleshadow_offsetshadow_bluroutline_widthblend_effectmask_input_typemask_time*mask_sequence*mask_idcolor_balancecolor_multiplycurve_mappingbrightwhite_value[3]adaptationcorrectiongraphicsuid_*fx_sh*fx_sh_b*fx_sh_cshaderfxradius[2]low_color[4]high_color[4]flipmodeglow_color[4]select_color[3]blur[2]rgba[4]rim_rgb[3]mask_rgb[3]shadow_rgba[4]transparent*newpackedfileattenuationmin_gainmax_gainoffset_time*waveform*spinlocksampleraterpt_maskspace_subtypemainbmainbomainbuseroutliner_syncdataicon*pinid*texusertree*treestoreoutlinevislib_override_view_modestoreflagsearch_flagssync_select_dirtyfilter_stateshow_restrict_flagsfilter_id_typeghost_curves*adscursorTimecursorValaroundchanshownzebraoverlay_typedraw_flaggizmo_flagcursor[2]preview_overlaytimeline_overlaycache_overlaydraw_typeoverlay_modeblend_factortitle[96]dir[1090]renamefile[256]rename_flag*rename_idfilter_glob[256]filter_search[64]filter_idactive_filehighlight_filesel_firstsel_lastthumbnail_sizesortdetails_flagsrecursion_level_pad4[2]base_paramsasset_library_refasset_catalog_visibilityimport_typebrowse_modefolders_prevfolders_nextscroll_offset*params*asset_params*files*folders_prev*folders_nextfolder_histories*op*smoothscroll_timer*previews_timerrecentnrbookmarknrsystemnrsystem_bookmarknrscopessample_line_histcentxcentypinpixel_snap_modelockdt_uvdt_uvstretchgrid_shape_sourceuv_opacitystretch_opacitytile_grid_shape[2]custom_grid_subdiv[2]mask_infooverlaylheighttabnumberwordwrapdopluginsshowlinenrsshowsyntaxline_hlightoverwritelive_edit_pad2[1]findstr[256]replacestr[256]margin_column*py_draw*py_event*py_button*py_browsercallback*py_globaldictlastspacescriptname[1024]scriptarg[256]menunr*but_refsparent_keynode_name[64]display_name[64]preview_shapeinsert_ofs_dirtreepath*edittreetree_idname[64]treetypetexfromshaderfromgeometry_nodes_type*geometry_nodes_tool_treelen_alloc*linescrollbackhistoryprompt[256]language[32]history_indexsel_startsel_endfilter_typefilter[64]xlockofylockofpath_lengthstabmat[4][4]unistabmat[4][4]postproc_flaggpencil_src*display_namereference_indexcolumnsrow_filtersviewer_path*instance_idsinstance_ids_numgeometry_component_typeobject_eval_stateactive_layer_indexcolumn_name[64]value_intvalue_int2[2]*value_stringvalue_floatvalue_float2[2]value_float3[3]value_color[4]volume_maxvolume_mindistance_maxdistance_referencecone_angle_outercone_angle_innercone_volume_outer*format*compiled*curl*sellcurcselcmtimetexcomaptoblendtypeprojxprojyprojzbrush_map_modebrush_angle_modewhich_outputofs[3]rotrandom_anglekdef_varcolfacalphafactimefaclengthfackinkfackinkampfacroughfacpadensfacgravityfaclifefacsizefacivelfacfieldfactwistfactotipotypeipotype_huedata[32]falloff_softnesspsys_cache_spaceob_cache_space*point_tree*point_datanoise_sizenoise_depthnoise_influencenoise_basisnoise_facspeed_scalefalloff_speed_scale*falloff_curverfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxtexfilterafmaxxrepeatyrepeatcheckerdistmin[3]max[3]cobablend_color[3]*intrinsicsdistortion_modelsensor_widthpixel_aspectfocalunitsprincipal_point[2]principal[2]k1k2k3division_k1division_k2nuke_k1nuke_k2brown_k1brown_k2brown_k3brown_k4brown_p1brown_p2pos[2]pattern_corners[4][2]search_min[2]search_max[2]pat_min[2]pat_max[2]markersnr*markersbundle_pos[3]pat_flagsearch_flagframes_limitpattern_matchmotion_modelalgorithm_flagminimum_correlationweight_stabcorners[4][2]**point_trackspoint_tracksnrimage_opacitylast_markerdefault_motion_modeldefault_algorithm_flagdefault_minimum_correlationdefault_pattern_sizedefault_search_sizedefault_frames_limitdefault_margindefault_pattern_matchdefault_flagmotion_flagkeyframe1keyframe2reconstruction_flagrefine_camera_intrinsicsclean_framesclean_actionclean_errorobject_distancetot_trackact_tracktot_rot_trackact_rot_trackmaxscale*rot_trackanchor_frametarget_pos[2]target_rotlocinfscaleinfrotinflast_cameracamnr*camerastracksplane_tracks*active_track*active_plane_trackreconstructionmessage[256]tot_segmentmax_segmenttotal_framesfirst_not_disabled_marker_framenrlast_not_disabled_marker_framenrcoveragesort_methodcoverage_segmentstot_channelcamerastabilization*act_plane_trackobjectsobjectnrtot_objectdopesheetuifont_idpointsitalicboldshadowshadxshadyshadowalphashadowcolorcharacter_weightpaneltitlegrouplabelwidgettooltippanelzoomminlabelcharsminwidgetcharscolumnspacetemplatespaceboxspacebuttonspacexbuttonspaceypanelspacepanelouteroutline[4]inner[4]inner_sel[4]item[4]text[4]text_sel[4]shadedshadetopshadedownroundnessinner_anim[4]inner_anim_sel[4]inner_key[4]inner_key_sel[4]inner_driven[4]inner_driven_sel[4]inner_overridden[4]inner_overridden_sel[4]inner_changed[4]inner_changed_sel[4]header[4]back[4]sub_back[4]wcol_regularwcol_toolwcol_toolbar_itemwcol_textwcol_radiowcol_optionwcol_togglewcol_numwcol_numsliderwcol_tabwcol_menuwcol_pulldownwcol_menu_backwcol_menu_itemwcol_tooltipwcol_boxwcol_scrollwcol_progresswcol_list_itemwcol_pie_menuwcol_statewidget_emboss[4]menu_shadow_facmenu_shadow_widtheditor_border[4]editor_outline[4]editor_outline_active[4]transparent_checker_primary[4]transparent_checker_secondary[4]transparent_checker_sizeicon_alphaicon_saturationwidget_text_cursor[4]xaxis[4]yaxis[4]zaxis[4]gizmo_hi[4]gizmo_primary[4]gizmo_secondary[4]gizmo_view_align[4]gizmo_a[4]gizmo_b[4]icon_scene[4]icon_collection[4]icon_object[4]icon_object_data[4]icon_modifier[4]icon_shading[4]icon_folder[4]icon_autokey[4]icon_border_intensitypanel_roundnessheader_back[4]back_grad[4]show_back_gradtitle[4]text_hi[4]header_title[4]header_text[4]header_text_hi[4]tab_active[4]tab_inactive[4]tab_back[4]tab_outline[4]button[4]button_title[4]button_text[4]button_text_hi[4]list[4]list_title[4]list_text[4]list_text_hi[4]navigation_bar[4]execution_buts[4]panelcolorsasset_shelfshade1[4]shade2[4]hilite[4]grid[4]view_overlay[4]wire[4]wire_edit[4]select[4]lamp[4]speaker[4]empty[4]camera[4]active[4]group[4]group_active[4]transform[4]vertex[4]vertex_select[4]vertex_active[4]vertex_bevel[4]vertex_unreferenced[4]edge[4]edge_select[4]edge_mode_select[4]edge_seam[4]edge_sharp[4]edge_facesel[4]edge_crease[4]edge_bevel[4]face[4]face_select[4]face_mode_select[4]face_retopology[4]face_back[4]face_front[4]face_dot[4]extra_edge_len[4]extra_edge_angle[4]extra_face_angle[4]extra_face_area[4]normal[4]vertex_normal[4]loop_normal[4]bone_solid[4]bone_pose[4]bone_pose_active[4]bone_locked_weight[4]strip[4]strip_select[4]cframe[4]before_current_frame[4]after_current_frame[4]time_keyframe[4]time_gp_keyframe[4]freestyle_edge_mark[4]freestyle_face_mark[4]scrubbing_background[4]time_marker_line[4]time_marker_line_selected[4]nurb_uline[4]nurb_vline[4]act_spline[4]nurb_sel_uline[4]nurb_sel_vline[4]lastsel_point[4]handle_free[4]handle_auto[4]handle_vect[4]handle_align[4]handle_auto_clamped[4]handle_sel_free[4]handle_sel_auto[4]handle_sel_vect[4]handle_sel_align[4]handle_sel_auto_clamped[4]ds_channel[4]ds_subchannel[4]ds_ipoline[4]keytype_keyframe[4]keytype_extreme[4]keytype_breakdown[4]keytype_jitter[4]keytype_movehold[4]keytype_generated[4]keytype_keyframe_select[4]keytype_extreme_select[4]keytype_breakdown_select[4]keytype_jitter_select[4]keytype_movehold_select[4]keytype_generated_select[4]keyborder[4]keyborder_select[4]console_output[4]console_input[4]console_info[4]console_error[4]console_cursor[4]console_select[4]vertex_sizeedge_widthobcenter_diafacedot_sizenoodle_curvinggrid_levelsdash_alphasyntaxl[4]syntaxs[4]syntaxb[4]syntaxn[4]syntaxv[4]syntaxc[4]syntaxd[4]syntaxr[4]line_numbers[4]nodeclass_output[4]nodeclass_filter[4]nodeclass_vector[4]nodeclass_texture[4]nodeclass_shader[4]nodeclass_script[4]nodeclass_pattern[4]nodeclass_layout[4]nodeclass_geometry[4]nodeclass_attribute[4]node_zone_simulation[4]node_zone_repeat[4]node_zone_foreach_geometry_element[4]simulated_frames[4]movie[4]movieclip[4]mask[4]image[4]scene[4]audio[4]effect[4]transition[4]meta[4]text_strip[4]color_strip[4]active_strip[4]selected_strip[4]keyframe_scale_faceditmesh_active[4]handle_vertex[4]handle_vertex_select[4]handle_vertex_sizeclipping_border_3d[4]marker_outline[4]marker[4]act_marker[4]sel_marker[4]dis_marker[4]lock_marker[4]bundle_solid[4]path_before[4]path_after[4]path_keyframe_before[4]path_keyframe_after[4]camera_path[4]camera_passepartout[4]gp_vertex_sizegp_vertex[4]gp_vertex_select[4]preview_back[4]preview_stitch_face[4]preview_stitch_edge[4]preview_stitch_vert[4]preview_stitch_stitchable[4]preview_stitch_unstitchable[4]preview_stitch_active[4]uv_shadow[4]match[4]selected_highlight[4]selected_object[4]active_object[4]edited_object[4]row_alternate[4]skin_root[4]anim_active[4]anim_non_active[4]anim_preview_range[4]nla_tweaking[4]nla_tweakdupli[4]nla_track[4]nla_transition[4]nla_transition_sel[4]nla_meta[4]nla_meta_sel[4]nla_sound[4]nla_sound_sel[4]info_selected[4]info_selected_text[4]info_error[4]info_error_text[4]info_warning[4]info_warning_text[4]info_info[4]info_info_text[4]info_debug[4]info_debug_text[4]info_property[4]info_property_text[4]info_operator[4]info_operator_text[4]paint_curve_pivot[4]paint_curve_handle[4]metadatabg[4]metadatatext[4]solid[4]tuitbutstv3dtfiletipotinfotacttnlatseqtimatexttoopstnodetuserpreftconsoletclipttopbartstatusbarspace_spreadsheettarm[20]collection_color[8]strip_color[9]active_theme_areamodule[128]path[768]space_typecontext[64]itemsui_name[64]op_idname[64]op_prop_enum[64]opcontextmt_idname[64]context_data_path[256]prop_id[64]prop_indeximport_methodmodule[48]*access_tokencustom_dirpath[1024]remote_url[1024]smoothspec[4]mouse_speedwalk_speedwalk_speed_factorview_heightjump_heightteleport_timeis_dirtysection_activedisplay_typesort_typetemp_win_sizextemp_win_sizeyuse_undo_legacyno_override_auto_resyncuse_cycles_debuguse_eevee_debugshow_asset_debug_infono_asset_indexinguse_viewport_debuguse_all_linked_data_directuse_extensions_debuguse_recompute_usercount_on_save_debugSANITIZE_AFTER_HEREuse_new_curves_toolsuse_new_point_cloud_typeuse_sculpt_tools_tiltuse_extended_asset_browseruse_sculpt_texture_paintenable_overlay_nextuse_new_volume_nodesuse_new_file_import_nodesuse_shader_node_previewsuse_animation_baklavaenable_new_cpu_compositordir_path[768]shelf_idname[64]dupflagpref_flagsavetimemouse_emulate_3_button_modifiertrackpad_scroll_directiontempdir[768]fontdir[768]renderdir[1024]render_cachedir[768]textudir[768]pythondir[768]sounddir[768]i18ndir[768]image_editor[1024]text_editor[1024]text_editor_args[256]anim_player[1024]anim_player_presetv2d_min_gridsizetimecode_styleversionsdbl_click_timemini_axis_typeuiflaguiflag2gpu_flag_pad8[6]app_flagviewzoomlanguagemixbufsizeaudiodeviceaudiorateaudioformataudiochannelsui_scaleui_line_widthdpiscale_factorinv_scale_factorpixelsizevirtual_pixelnode_marginnode_preview_restransoptsmenuthreshold1menuthreshold2app_template[64]themesuifontsuistylesuser_keymapsuser_keyconfig_prefsaddonsautoexec_pathsscript_directoriesuser_menusasset_librariesextension_reposasset_shelves_settingskeyconfigstr[64]active_asset_libraryactive_extension_repoextension_flagnetwork_timeoutnetwork_connection_limit_pad14[3]undostepsundomemorygpu_viewport_qualitygp_manhattendistgp_euclideandistgp_erasergp_settings_pad13[4]light_param[4]light_ambient[3]gizmo_sizegizmo_size_navigate_v3d_pad3[5]edit_studio_lightlookdev_sphere_sizevbotimeoutvbocollectratetextimeouttexcollectratememcachelimitprefetchframespad_rot_anglervisizervibrightrecent_filessmooth_viewtxglreslimitcolor_picker_typeauto_smoothing_newipo_newkeyhandles_new_pad11[4]view_frame_typeview_frame_keyframesview_frame_secondsgpu_preferred_indexgpu_preferred_vendor_idgpu_preferred_device_id_pad16[4]gpu_backendmax_shader_compilation_subprocessesplayback_fps_sampleswidget_unitanisotropic_filtertablet_apipressure_threshold_maxpressure_softnessndof_sensitivityndof_orbit_sensitivityndof_deadzonendof_flagogl_multisamplesimage_draw_methodglalphaclipautokey_flagkey_insert_channels_pad15[6]animation_flagtext_rendernavigation_modeview_rotate_sensitivity_turntableview_rotate_sensitivity_trackballcoba_weightsculpt_paint_overlay_col[3]gpencil_new_layer_col[4]drag_threshold_mousedrag_threshold_tabletdrag_thresholdmove_thresholdfont_path_ui[1024]font_path_ui_mono[1024]compute_device_typefcu_inactive_alphapie_tap_timeoutpie_initial_timeoutpie_animation_timeoutpie_menu_confirmpie_menu_radiuspie_menu_thresholdsequencer_editor_flagfactor_display_typerender_display_typefilebrowser_display_typesequencer_disk_cache_dir[1024]sequencer_disk_cache_compressionsequencer_disk_cache_size_limitsequencer_disk_cache_flagsequencer_proxy_setupcollection_instance_empty_sizetext_flag_pad10[1]file_preview_typestatusbar_flagwalk_navigationspace_datafile_space_dataexperimentaltime_lowtime_midtime_hi_and_versionclock_seq_hi_and_reservedclock_seq_lownode[6]value[4][4]trans[4]scale[4][4]scale_weight*temp_pfverthormaskmin[2]max[2]minzoommaxzoomscrollscroll_uikeeptotkeepzoomkeepofsoldwinxoldwinyalpha_vertalpha_horpage_size_y*sms*smooth_timerwinmat[4][4]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]viewcamtexcofac[4]viewmatob[4][4]persmatob[4][4]clip[6][4]clip_local[6][4]*clipbb*localvd*view_rendertwmat[4][4]tw_axis_min[3]tw_axis_max[3]tw_axis_matrix[3][3]gridviewviewquat[4]camdxcamdypixsizecamzoomis_perspperspview_axis_rollviewlockruntime_viewlockviewlock_quadofs_lock[2]twdrawflagrflaglviewquat[4]lpersplviewlview_axis_roll_pad8[1]rot_anglerot_axis[3]rotation_quaternion[4]rotation_axis[3]rotation_angleprev_typeprev_type_wirecolor_typelightbackground_typecavity_typewire_color_typeuse_compositorstudio_light[256]lookdev_light[256]matcap[256]shadow_intensitysingle_color[3]studiolight_rot_zstudiolight_backgroundstudiolight_intensitystudiolight_blurobject_outline_color[3]xray_alphaxray_alpha_wirecavity_valley_factorcavity_ridge_factorbackground_color[3]curvature_ridge_factorcurvature_valley_factorrender_passaov_name[64]edit_flagnormals_lengthnormals_constant_screen_sizepaint_flagwpaint_flagtexture_paint_mode_opacityvertex_paint_mode_opacityweight_paint_mode_opacitysculpt_mode_mask_opacitysculpt_mode_face_sets_opacityviewer_attribute_opacityxray_alpha_bonebone_wire_alphafade_alphawireframe_thresholdwireframe_opacityretopology_offsetgpencil_paper_opacitygpencil_grid_opacitygpencil_fade_layergpencil_grid_color[3]gpencil_grid_scale[2]gpencil_grid_offset[2]gpencil_grid_subdivisionsgpencil_vertex_paint_opacityhandle_displaysculpt_curves_cage_opacity*properties_storage(*properties_storage_free)()*local_statsbundle_sizebundle_drawtypeobject_type_exclude_viewportobject_type_exclude_select*ob_centrerender_borderob_centre_bone[64]local_view_uuidlocal_collections_uuiddebug_flagob_centre_cursorscenelockgp_flagnearfargizmo_show_objectgizmo_show_armaturegizmo_show_emptygizmo_show_lightgizmo_show_cameragridflaggridlinesgridsubdivvertex_opacitystereo3d_flagstereo3d_camerastereo3d_convergence_factorstereo3d_volume_alphastereo3d_convergence_alpha*ui_name*modifier_namesim_output_node_idrepeat_output_node_iditerationzone_output_node_idwireframe_typewireframe_detailinterpolation_methodsequence_modeframe_durationactive_gridrendervelocity_grid[64]listprintlevelstorelevel*reporttimer*locksession_settings*windrawable*winactivewindowsinit_flagfile_savedop_undo_depthoutliner_sync_select_dirtyoperatorsnotifier_queue*notifier_queue_set*notifier_currentextensions_updatesextensions_blockedjobspaintcursorsdragskeyconfigs*defaultconf*addonconf*userconftimers*autosavetimerautosave_scheduled*undo_stack*message_busxr*ghostwin*gpuctx*new_sceneview_layer_name[64]*unpinned_scene*workspace_hookglobal_area_map*screenposxposywindowstatelastcursormodalcursorgrabcursorpie_event_type_lockpie_event_type_lastaddmousemovetag_cursor_refreshevent_queue_check_clickevent_queue_check_dragevent_queue_check_drag_handledevent_queue_consecutive_gesture_typeevent_queue_consecutive_gesture_xy[2]*event_queue_consecutive_gesture_data*eventstate*event_last_handled*ime_dataime_data_is_composingevent_queuemodalhandlersgesturedrawcalls*cursor_keymap_statuseventstate_prev_press_time_mspropvalue_str[64]propvalueshiftctrlaltoskeykeymodifiermaptype*ptr*remove_item*add_itemdiff_itemsspaceidregionidowner_id[128]kmi_id(*poll)()(*poll_modal_item)()*modal_itemsbasename[64]keymapsactkeymap*customdata*reportsmacro*opmidname_fallback[64]layoutshook_layout_relationsowner_idstools*pin_sceneobject_modeorderparentid_pad_0[4]*active*act_layout*temp_workspace_store*temp_layout_storemistypehorrhorghorbexpmisimiststamistdistmisthiaodistaoenergyprobe_resolutionsun_thresholdsun_shadow_maximum_resolutionsun_shadow_jitter_overblursun_shadow_filter_radiuslast_updatebase_scalebase_pose_type*base_pose_objectbase_pose_location[3]base_pose_angledraw_flagscontroller_draw_styleclip_startclip_endpath[192]profile[256]component_pathsfloat_thresholdaxis_flagpose_location[3]pose_rotation[3]path[64]user_pathsop[64]*op_properties*op_properties_ptrop_flagaction_flaghaptic_flagpose_flaghaptic_name[64]haptic_durationhaptic_frequencyhaptic_amplitudeselbindingbindingsselitemTYPE4charucharshortushortintlongulongfloatdoubleint64_tuint64_tvoidint8_traw_dataDrawDataListDrawDataIDPropertyUIDataIDPropertyUIDataEnumItemIDPropertyUIDataIntIDPropertyUIDataBoolIDPropertyUIDataFloatIDPropertyUIDataStringIDPropertyUIDataIDIDPropertyDataListBaseIDPropertyIDOverrideLibraryPropertyOperationIDIDOverrideLibraryPropertyIDOverrideLibraryIDOverrideLibraryRuntimeID_Runtime_RemapID_RuntimeDepsgraphLibraryAssetMetaDataLibraryWeakReferenceLibrary_RuntimeUniqueName_MapFileDataPackedFilePreviewImagePreviewImageRuntimeHandlebMotionPathVertbMotionPathGPUVertBufHandleGPUBatchHandlebAnimVizSettingsbPoseChannel_BBoneSegmentBoundarybPoseChannel_RuntimeSessionUIDDualQuatMat4bPoseChannelBoneObjectbPoseChannelDrawDataBoneColorbPoseGHashbIKParambItascbActionGroupActionChannelBagThemeWireColorbActionActionLayerActionSlotActionStripKeyframeDatabDopeSheetCollectionSpaceAction_RuntimeSpaceActionSpaceLinkView2DbActionChannelIpoActionStripActionSlotRuntimeHandleFCurveFModifierFMod_GeneratorFMod_FunctionGeneratorFCM_EnvelopeDataFMod_EnvelopeFMod_CyclesFMod_LimitsrctfFMod_NoiseFMod_SteppedDriverTargetDriverVarChannelDriverExprPyLike_ParsedFPointBezTripleNlaStripNlaTrackKS_PathKeyingSetAnimOverrideAnimDataIdAdtTemplateBone_RuntimebArmature_RuntimeBoneCollectionbArmatureEditBoneBoneCollectionMemberBoneCollectionReferenceAssetTagAssetTypeInfobUUIDAssetLibraryReferenceAssetWeakReferenceAssetCatalogPathLinkBoidRuleBoidRuleGoalAvoidBoidRuleAvoidCollisionBoidRuleFollowLeaderBoidRuleAverageSpeedBoidRuleFightBoidDataBoidStateBoidSettingsBrushCloneImageBrushGpencilSettingsCurveMappingMaterialBrushCurvesSculptSettingsBrushMTexImBufColorBandPaintCurvetPaletteColorHSVPaletteColorPalettePaintCurvePointCacheObjectPathCacheFileLayerCacheFileCacheArchiveHandleGSetCameraStereoSettingsCameraBGImageImageUserMovieClipMovieClipUserCameraDOFSettingsCamera_RuntimeCameraGPUDOFSettingsClothSimSettingsLinkNodeEffectorWeightsClothCollSettingsCollectionLightLinkingCollectionObjectCollectionChildCollectionExportCollection_RuntimeViewLayerCurveMapPointCurveMapHistogramScopesColorManagedViewSettingsColorManagedDisplaySettingsColorManagedColorspaceSettingsbConstraintChannelbConstraintbConstraintTargetbPythonConstraintTextbKinematicConstraintbSplineIKConstraintbArmatureConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbSizeLikeConstraintbSameVolumeConstraintbTransLikeConstraintbMinMaxConstraintbActionConstraintbLockTrackConstraintbDampTrackConstraintbFollowPathConstraintbStretchToConstraintbRigidBodyJointConstraintbClampToConstraintbChildOfConstraintbTransformConstraintbPivotConstraintbLocLimitConstraintbRotLimitConstraintbSizeLimitConstraintbDistLimitConstraintbShrinkwrapConstraintbFollowTrackConstraintbCameraSolverConstraintbObjectSolverConstraintbTransformCacheConstraintCacheReaderBPointNurbCharInfoTextBoxCurveEditNurbKeyCurveProfileEditFontVFontCurvesCurveProfilePointCurvesGeometryCustomDataCurvesGeometryRuntimeHandleCustomDataLayerImplicitSharingInfoHandleCustomDataExternalBLI_mempoolCustomData_MeshMasksDynamicPaintSurfaceDynamicPaintCanvasSettingsPaintSurfaceDataPointCacheTexDynamicPaintModifierDataDynamicPaintBrushSettingsParticleSystemEffectBuildEffPartEffParticleWaveEffFileGlobalbScreenSceneFluidDomainSettingsFluidModifierDataMANTAGPUTextureFluidFlowSettingsMeshFluidEffectorSettingsFreestyleLineSetFreestyleLineStyleFreestyleModuleConfigFreestyleConfigbGPDcontrolpointbGPDspoint_RuntimebGPDspointbGPDtrianglebGPDpalettecolorbGPDpalettebGPDcurve_pointbGPDcurvebGPDstroke_RuntimebGPDstrokeMDeformVertbGPDframe_RuntimebGPDframebGPDlayer_MaskbGPDlayer_RuntimebGPDlayerbGPdata_RuntimeGpencilBatchCacheLineartCacheGPencilUpdateCachebGPgridbGPdataGpencilModifierDataNoiseGpencilModifierDataSubdivGpencilModifierDataThickGpencilModifierDataTimeGpencilModifierSegmentTimeGpencilModifierDataColorGpencilModifierDataOpacityGpencilModifierDataOutlineGpencilModifierDataArrayGpencilModifierDataBuildGpencilModifierDataLatticeGpencilModifierDataLatticeDeformDataLengthGpencilModifierDataDashGpencilModifierSegmentDashGpencilModifierDataMirrorGpencilModifierDataHookGpencilModifierDataSimplifyGpencilModifierDataOffsetGpencilModifierDataSmoothGpencilModifierDataArmatureGpencilModifierDataMultiplyGpencilModifierDataTintGpencilModifierDataTextureGpencilModifierDataWeightProxGpencilModifierDataWeightAngleGpencilModifierDataLineartGpencilModifierDataLineartDataShrinkwrapGpencilModifierDataShrinkwrapTreeDataEnvelopeGpencilModifierDataGreasePencilDrawingBaseGreasePencilDrawingGreasePencilDrawingRuntimeHandleGreasePencilDrawingReferenceGreasePencilGreasePencilFrameGreasePencilLayerFramesMapStorageGreasePencilLayerMaskGreasePencilLayerTreeNodeGreasePencilLayerTreeGroupGreasePencilLayerGreasePencilLayerRuntimeHandleGreasePencilLayerGroupRuntimeHandleGreasePencilOnionSkinningSettingsGreasePencilRuntimeHandleImageAnimImBufAnimImageViewImagePackedFileRenderSlotRenderResultImageTile_RuntimeImageTileImage_RuntimePartialUpdateRegisterPartialUpdateUserMovieCacheStereo3dFormatIpoDriverIpoCurveKeyBlockLatticeEditLattBaseViewLayerEngineDataDrawEngineTypeLayerCollectionViewLayerEEVEEViewLayerAOVViewLayerLightgroupLightgroupMembershipSceneStatsWorldLampbNodeTreeLightProbeLightProbeCacheLightGridCacheLightCacheTextureLightCacheLightProbeBakingDataLightProbeIrradianceDataLightProbeVisibilityDataLightProbeConnectivityDataLightProbeBlockDataLightProbeGridCacheFrameLightProbeObjectCacheLineStyleModifierLineStyleColorModifier_AlongStrokeLineStyleAlphaModifier_AlongStrokeLineStyleThicknessModifier_AlongStrokeLineStyleColorModifier_DistanceFromCameraLineStyleAlphaModifier_DistanceFromCameraLineStyleThicknessModifier_DistanceFromCameraLineStyleColorModifier_DistanceFromObjectLineStyleAlphaModifier_DistanceFromObjectLineStyleThicknessModifier_DistanceFromObjectLineStyleColorModifier_Curvature_3DLineStyleAlphaModifier_Curvature_3DLineStyleThicknessModifier_Curvature_3DLineStyleColorModifier_NoiseLineStyleAlphaModifier_NoiseLineStyleThicknessModifier_NoiseLineStyleColorModifier_CreaseAngleLineStyleAlphaModifier_CreaseAngleLineStyleThicknessModifier_CreaseAngleLineStyleColorModifier_TangentLineStyleAlphaModifier_TangentLineStyleThicknessModifier_TangentLineStyleColorModifier_MaterialLineStyleAlphaModifier_MaterialLineStyleThicknessModifier_MaterialLineStyleGeometryModifier_SamplingLineStyleGeometryModifier_BezierCurveLineStyleGeometryModifier_SinusDisplacementLineStyleGeometryModifier_SpatialNoiseLineStyleGeometryModifier_PerlinNoise1DLineStyleGeometryModifier_PerlinNoise2DLineStyleGeometryModifier_BackboneStretcherLineStyleGeometryModifier_TipRemoverLineStyleGeometryModifier_PolygonalizationLineStyleGeometryModifier_GuidingLinesLineStyleGeometryModifier_BlueprintLineStyleGeometryModifier_2DOffsetLineStyleGeometryModifier_2DTransformLineStyleGeometryModifier_SimplificationLineStyleThicknessModifier_CalligraphyLinkLinkDataMaskMaskParentMaskSplinePointUWMaskSplinePointMaskSplineMaskLayerShapeMaskLayerTexPaintSlotMaterialGPencilStyleMaterialLineArtMSelectMPolyMLoopMVertMEdgeMTFaceTFaceMColMFaceMeshRuntimeHandleMFloatPropertyMIntPropertyMStringPropertyMBoolPropertyMInt8PropertyMDeformWeightMVertSkinMLoopColMPropColMDispsGridPaintMaskFreestyleEdgeFreestyleFaceMLoopUVMRecastMetaElemBoundBoxMetaBallModifierDataMappingInfoModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataMaskModifierDataArrayModifierDataMirrorModifierDataEdgeSplitModifierDataBevelModifierDataDisplaceModifierDataUVProjectModifierDataDecimateModifierDataSmoothModifierDataCastModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataClothModifierDataClothClothHairDataClothSolverResultCollisionModifierDataBVHTreeSurfaceModifierData_RuntimeBVHTreeFromMeshSurfaceModifierDataBooleanModifierDataMDefInfluenceMDefCellMeshDeformModifierDataParticleSystemModifierDataParticleInstanceModifierDataExplodeModifierDataMultiresModifierDataFluidsimModifierDataFluidsimSettingsSmokeModifierDataShrinkwrapModifierDataSimpleDeformModifierDataShapeKeyModifierDataSolidifyModifierDataScrewModifierDataOceanModifierDataOceanOceanCacheWarpModifierDataWeightVGEditModifierDataWeightVGMixModifierDataWeightVGProximityModifierDataRemeshModifierDataSkinModifierDataTriangulateModifierDataLaplacianSmoothModifierDataCorrectiveSmoothDeltaCacheCorrectiveSmoothModifierDataUVWarpModifierDataMeshCacheModifierDataLaplacianDeformModifierDataWireframeModifierDataWeldModifierDataDataTransferModifierDataNormalEditModifierDataMeshSeqCacheModifierDataSDefBindSDefVertSurfaceDeformModifierDataWeightedNormalModifierDataNodesModifierSettingsNodesModifierDataBlockNodesModifierBakeFileNodesModifierPackedBakeNodesModifierBakeNodesModifierPanelNodesModifierDataNodesModifierRuntimeHandleMeshToVolumeModifierDataVolumeDisplaceModifierDataVolumeToMeshModifierDataGreasePencilModifierInfluenceDataGreasePencilOpacityModifierDataGreasePencilSubdivModifierDataGreasePencilColorModifierDataGreasePencilTintModifierDataGreasePencilSmoothModifierDataGreasePencilOffsetModifierDataGreasePencilNoiseModifierDataGreasePencilMirrorModifierDataGreasePencilThickModifierDataGreasePencilLatticeModifierDataGreasePencilDashModifierSegmentGreasePencilDashModifierDataGreasePencilMultiModifierDataGreasePencilLengthModifierDataGreasePencilWeightAngleModifierDataGreasePencilArrayModifierDataGreasePencilWeightProximityModifierDataGreasePencilHookModifierDataGreasePencilLineartModifierDataGreasePencilArmatureModifierDataGreasePencilTimeModifierSegmentGreasePencilTimeModifierDataGreasePencilEnvelopeModifierDataGreasePencilOutlineModifierDataGreasePencilShrinkwrapModifierDataGreasePencilBuildModifierDataGreasePencilSimplifyModifierDataGreasePencilTextureModifierDataMovieClipProxyMovieClip_RuntimeGPUTextureMovieClip_RuntimeMovieClipCacheMovieTrackingMovieClipScopesMovieTrackingMarkerMovieTrackingTrackbActionModifierbActionStripbNodeTreeInterfaceItembNodeTreeInterfaceSocketbNodeTreeInterfacePanelbNodeTreeInterfacebNodeTreeInterfaceRuntimeHandlebNodeStackbNodeSocketbNodeSocketTypeHandlebNodeLinkbNodeSocketRuntimeHandlebNodePanelStatebNodebNodeTypeHandlebNodeRuntimeHandlebNodeInstanceKeybNestedNodePathbNestedNodeRefbNodeTreeTypeHandleNodeInstanceHashHandleGeometryNodeAssetTraitsbNodeTreeRuntimeHandlebNodeSocketValueIntbNodeSocketValueFloatbNodeSocketValueBooleanbNodeSocketValueVectorbNodeSocketValueRotationbNodeSocketValueRGBAbNodeSocketValueStringbNodeSocketValueObjectbNodeSocketValueImagebNodeSocketValueCollectionbNodeSocketValueTexturebNodeSocketValueMaterialbNodeSocketValueMenuRuntimeNodeEnumItemsHandleNodeFrameNodeRerouteNodeImageAnimColorCorrectionDataNodeColorCorrectionNodeBokehImageNodeBoxMaskNodeEllipseMaskNodeImageLayerNodeBlurDataNodeDBlurDataNodeBilateralBlurDataNodeKuwaharaDataNodeAntiAliasingDataNodeHueSatNodeImageFileImageFormatDataNodeImageMultiFileNodeImageMultiFileSocketNodeChromaNodeTwoXYsNodeTwoFloatsNodeVertexColNodeCMPCombSepColorNodeDefocusNodeScriptDictNodeGlareNodeTonemapNodeLensDistNodeColorBalanceNodeColorspillNodeConvertColorSpaceNodeDilateErodeNodeMaskNodeSetAlphaNodeTexBaseTexMappingColorMappingNodeTexSkyNodeTexImageNodeTexCheckerNodeTexBrickNodeTexEnvironmentNodeTexGaborNodeTexGradientNodeTexNoiseNodeTexVoronoiNodeTexMusgraveNodeTexWaveNodeTexMagicNodeShaderAttributeNodeShaderVectTransformNodeShaderTexPointDensityPointDensityNodeShaderPrincipledNodeShaderHairPrincipledTexNodeOutputNodeKeyingScreenDataNodeKeyingDataNodeTrackPosDataNodeTranslateDataNodePlaneTrackDeformDataNodeShaderScriptNodeShaderTangentNodeShaderNormalMapNodeShaderUVMapNodeShaderVertexColorNodeShaderTexIESNodeShaderOutputAOVNodeSunBeamsCryptomatteEntryCryptomatteLayerNodeCryptomatte_RuntimeNodeCryptomatteNodeDenoiseNodeMapRangeNodeRandomValueNodeAccumulateFieldNodeInputBoolNodeInputIntNodeInputRotationNodeInputVectorNodeInputColorNodeInputStringNodeGeometryExtrudeMeshNodeGeometryObjectInfoNodeGeometryPointsToVolumeNodeGeometryCollectionInfoNodeGeometryProximityNodeGeometryVolumeToMeshNodeGeometryMeshToVolumeNodeGeometrySubdivisionSurfaceNodeGeometryMeshCircleNodeGeometryMeshCylinderNodeGeometryMeshConeNodeGeometryMergeByDistanceNodeGeometryMeshLineNodeSwitchNodeEnumItemNodeEnumDefinitionNodeMenuSwitchNodeGeometryCurveSplineTypeNodeGeometrySetCurveHandlePositionsNodeGeometryCurveSetHandlesNodeGeometryCurveSelectHandlesNodeGeometryCurvePrimitiveArcNodeGeometryCurvePrimitiveLineNodeGeometryCurvePrimitiveBezierSegmentNodeGeometryCurvePrimitiveCircleNodeGeometryCurvePrimitiveQuadNodeGeometryCurveResampleNodeGeometryCurveFilletNodeGeometryCurveTrimNodeGeometryCurveToPointsNodeGeometryCurveSampleNodeGeometryTransferAttributeNodeGeometrySampleIndexNodeGeometryRaycastNodeGeometryCurveFillNodeGeometryMeshToPointsNodeGeometryAttributeCaptureItemNodeGeometryAttributeCaptureNodeGeometryStoreNamedAttributeNodeGeometryInputNamedAttributeNodeGeometryStringToCurvesNodeGeometryDeleteGeometryNodeGeometryDuplicateElementsNodeGeometryMergeLayersNodeGeometrySeparateGeometryNodeGeometryImageTextureNodeGeometryViewerNodeGeometryUVUnwrapNodeSimulationItemNodeGeometrySimulationInputNodeGeometrySimulationOutputNodeRepeatItemNodeGeometryRepeatInputNodeGeometryRepeatOutputNodeGeometryForeachGeometryElementInputNodeForeachGeometryElementInputItemNodeForeachGeometryElementMainItemNodeForeachGeometryElementGenerationItemNodeForeachGeometryElementInputItemsNodeForeachGeometryElementMainItemsNodeForeachGeometryElementGenerationItemsNodeGeometryForeachGeometryElementOutputIndexSwitchItemNodeIndexSwitchNodeGeometryDistributePointsInVolumeNodeFunctionCompareNodeCombSepColorNodeShaderMixNodeGeometryLinearGizmoNodeGeometryDialGizmoNodeGeometryTransformGizmoNodeGeometryBakeItemNodeGeometryBakeFluidVertexVelocityPartDeflectSBVertexSoftBody_SharedSoftBodyBodyPointBodySpringSBScratchbDeformGroupbFaceMapObjectLineArtLightLinkingRuntimeLightLinkingSculptSessionRigidBodyObRigidBodyConObjectRuntimeHandleObHookTreeStoreElemTreeStoreHairKeyParticleKeyBoidParticleParticleSpringChildParticleParticleTargetParticleDupliWeightParticleDataSPHFluidSettingsParticleSettingsPTCacheEditParticleCacheKeyKDTree_3dParticleDrawDataPTCacheExtraPTCacheMemPointCloudPointCloudRuntimeHandleRigidBodyWorld_SharedRigidBodyWorldRigidBodyOb_SharedFFMpegCodecDataAudioDataSceneRenderLayerSceneRenderViewBakeDataRenderDataTimeMarkerPaint_RuntimeNamedBrushAssetReferenceToolSystemBrushBindingsPaintImagePaintSettingsPaintModeSettingsParticleBrushDataParticleEditSettingsSculptCurvesSculptUvSculptGpPaintGpVertexPaintGpSculptPaintGpWeightPaintVPaintGP_Sculpt_GuideGP_Sculpt_SettingsGP_Interpolate_SettingsUnifiedPaintSettingsColorSpaceCurvePaintSettingsMeshStatVisSequencerToolSettingsToolSettingsUnitSettingsPhysicsSettingsDisplaySafeAreasSceneDisplayView3DShadingRaytraceEEVEESceneEEVEESceneGpencilSceneHydraTransformOrientationSlotView3DCursorEditingSceneRuntimeHandleARegionwmTimerwmTooltipStateScrVertvec2sScrEdgeScrAreaMapLayoutPanelStatePanelPanelTypeuiLayoutPanel_RuntimePanelCategoryStackuiListuiListTypeuiListDynTransformOrientationuiPreviewScrGlobalAreaDataScrArea_RuntimebToolRefScrArearctiSpaceTypeARegion_RuntimeARegionTypewmGizmoMapwmDrawBufferAssetShelfSettingsAssetShelfAssetShelfTypeRegionAssetShelfFileHandlerFileHandlerTypeHandleStripAnimStripElemStripCropStripTransformStripColorBalanceStripProxyStripSeqRetimingHandleSequenceRuntimeSequencebSoundMetaStackSeqTimelineChannelSeqConnectionEditingRuntimeSequenceLookupMediaPresenceThumbnailCacheSeqCachePrefetchJobWipeVarsGlowVarsTransformVarsSolidColorVarsSpeedControlVarsGaussianBlurVarsTextVarsColorMixVarsSequenceModifierDataColorBalanceModifierDataCurvesModifierDataHueCorrectModifierDataBrightContrastModifierDataSequencerMaskModifierDataWhiteBalanceModifierDataSequencerTonemapModifierDataEQCurveMappingDataSoundEqualizerModifierDataShaderFxDataShaderFxData_RuntimeDRWShadingGroupBlurShaderFxDataColorizeShaderFxDataFlipShaderFxDataGlowShaderFxDataPixelShaderFxDataRimShaderFxDataShadowShaderFxDataSwirlShaderFxDataWaveShaderFxDataSpaceInfoSpaceButsSpaceProperties_RuntimeSpaceOopsSpaceOutliner_RuntimeSpaceGraph_RuntimeSpaceIpoSpaceNlaSequencerPreviewOverlaySequencerTimelineOverlaySequencerCacheOverlaySpaceSeqSpaceSeq_RuntimeMaskSpaceInfoFileSelectParamsFileAssetSelectParamsFileFolderHistoryFileFolderListsSpaceFileFileListwmOperatorFileLayoutSpaceFile_RuntimeSpaceImageOverlaySpaceImageSpaceTextSpaceText_RuntimeScriptSpaceScriptbNodeTreePathSpaceNodeOverlaySpaceNodeSpaceNode_RuntimeConsoleLineSpaceConsoleSpaceUserPrefSpaceClipSpaceTopBarSpaceStatusBarSpreadsheetColumnIDSpreadsheetColumnSpreadsheetInstanceIDSpaceSpreadsheetViewerPathSpaceSpreadsheet_RuntimeSpreadsheetRowFilterSpeakerTextLineCBDataMovieReconstructedCameraMovieTrackingCameraMovieTrackingPlaneMarkerMovieTrackingPlaneTrackMovieTrackingSettingsMovieTrackingStabilizationMovieTrackingReconstructionMovieTrackingObjectMovieTrackingStatsMovieTrackingDopesheetChannelMovieTrackingDopesheetCoverageSegmentMovieTrackingDopesheetuiFontStyleuiStyleuiWidgetColorsuiWidgetStateColorsuiPanelColorsThemeUIThemeAssetShelfThemeSpaceThemeCollectionColorThemeStripColorbThemebAddonbPathComparebUserMenubUserMenuItembUserMenuItem_OpbUserMenuItem_MenubUserMenuItem_PropbUserAssetLibrarybUserExtensionRepoSolidLightWalkNavigationUserDef_RuntimeUserDef_SpaceDataUserDef_FileSpaceDataUserDef_ExperimentalbUserScriptDirectorybUserAssetShelfSettingsUserDefvec2fvec2ivec3ivec3fvec4fmat4x4fVFontDataSmoothView2DStoreRegionView3DViewRenderSmoothView3DStoreView3DOverlayView3D_RuntimeView3DViewerPathElemIDViewerPathElemModifierViewerPathElemGroupNodeViewerPathElemSimulationZoneViewerPathElemRepeatZoneViewerPathElemForeachGeometryElementZoneViewerPathElemViewerNodeViewerPathElemVolumeDisplayVolumeRenderVolumeVolumeRuntimeHandleReportListstd_mutex_typewmXrDatawmXrRuntimeDataXrSessionSettingswmWindowManagerwmWindowwmNotifierwmKeyConfigUndoStackwmMsgBusWindowManagerRuntimeHandleWorkSpaceInstanceHookwmEvent_ConsecutiveDatawmEventwmIMEDatawmKeyMapItemPointerRNAwmKeyMapDiffItemwmKeyMapboolwmKeyConfigPrefwmOperatorTypebToolRef_RuntimeWorkSpaceLayoutwmOwnerIDWorkSpaceWorkSpaceRuntimeHandleWorkSpaceDataRelationXrComponentPathXrActionMapBindingXrUserPathXrActionMapItemXrActionMapTLEN @ P @08 D(0X d( `XXpxX(xxh0H hp xP8P@hH@h@0 Lp h( ` HH @P P(@@8p0XPPPPXPPhhX X$X8H(( x( `p` @PPX8( 8 P xh|8(hhhPXPPxP`Pp`PH00P  (H(P X p0(@XP@p P 0 `hpxpxxxxxxppxhpxppxhhppxxhhhhxphp ((  @ h`8xpp(xx(p0xhp   8 H888P8P080X8H`xxx0PH8@P8H0@HH0@08p @hD(  XP`x,@  `0@D0PHD@@@ XP(  P XX(X$88@( D p XP xh x8x(P (0 @  (0 PHxX 0x  T(@0X   xpxph(08(P8)X@h(xp(((x(H`(@Hx 0 (0xKhXX8 (P`9 @ x ((((((( 0x XXH(P hSTRC                     !"#$%&' (!)*+,-./012)3456789!:;<=> ?!@ A  B"C#DE!)FGHIJKLMN O$P Q% &R'ST"U)VWX"YZ([%Q$\]3)^_`ab*9+c!, +defghij!k-l.m.n A/ Hopqrstuvw0xyz{1 2K3|}~44430 A5E55"!#65U5,7555 8591Q:;5!3 /<= !> >>?!"@AYBCD#!)EF!G!HIIJAkE!GQKKK>L!"B" *M  CE*   N9M D??>OPPPO "! Q!"#!R$%&'!S  ()*TS+,  U-./0VW1!X234567Y85fg!Z 91:;<=!> ?@[[["ZAB!C\DE F]GC!^H!OOO>\IJ_K^L+MC!NOP1QhRS```TAUV*WJ"XYZ[\]^ _`a b!k`c daaaT!e"b bb9f g!1Phic ccjk"lmn!hiddd1PeAo*Apqrasat`uvwOx!yz{kfYe|9 }@~g65666U"!9e66gQh#ijYe|; 6k!ihQi ii"lll6mmminnn"# oLpqarsssttt!ut7>vt>wt7>xt#ytz{{{Y!|>3}~7 !      !"# $%!&'()*+,-}Y}./012)34567892!:;<=>?@ABCDEFGHIJKLMNOzPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CCY_Yd!Ye|^!!3 ~^! 7!3+Ye|!3L7QF      !"#$%&'()*+,-./012345a6789#:;<=>?@ABCFDEFkGHI7JFKJL"M!NOPQ;R)FYSTU#VW)X! YaZ[\]^Q_`!ab!cdefghijk !lmnWoWpqrstuv wxyz{|}~! ! "L! !7"L 7!!77!7 7d!!77!37!7!!37!75!7YZ  !AUVa7775 7!77!7!7!77!}~! }~!}~!7! 7!!77!!7_)*   $  )  !_K!_` MYe|!"7#7$7%L&'()*+,-./!0123456789:;<?=>?@ABCDEFGH%IJKLMNOPQRSTUVWXYZ[\] ^ _`!_`a bcmgd!nWeWf ghijklmn9 Ye|o!n'/pq7rs ^ 5!tuvwxy z{|}~     /F)"fgk3!*!*%-!ZFD!0  { FFF   7 ) ^ !"#$%&'Y()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Hhk7 "akFD_`2# _`3(!kQ!! _3!!3 N d!3   dQ     !Q   ! G  $   !7U   k  7 Q  --.a !"#$h%< Ye|!&'()l*+,- .'/~/Y0b123m4 Q #!"56"789!:;<=6>?3@A 6"78!@ 6"789!B@C"DEFGH6"7@!5IdcJ 6"78!KL@A 6"789!:L@MA 67N"7!OP@Q67N"R!STU78V@6"78@fgWe!XYZ[\7N]^_`a 67N"789!3@b 6"7!@cdefghijk!""lmn!" 6"7!@o!dcJ# 67N"78!@$67N"789@!pqrst% 6"78!:@e&6"789!uSTUvw@' 6"789!:@A(6x7Ny9)6"78!@z5{|}*67N"789@!:CA~+6"789!@, 6_"79!@7N- 6_"79!@.*6777F9Y/0677"79!@1b26"79!3@3 !43 o5963 78! 982!:::!;;;<U h!=; 9 k7Uq 7>9<; U Y,?9@  !k7Ye|3<nk;!lm@A9 5!BBBCDDD"EEE([FFF"GHI IIHQJ KL~,Ye|ZMG!([)NJQO7  !PPP_KW W    +!*~COILYWl 3QQQECa!x "Ye|QL!RYe| !!"#$%&'()*+,-.L&lm#S/ ^T TT7NT01!2345aUUUV6 8 7W WWFK !895X:YYY"!ZZZ"[""!;\<T=9W>?@ABCD]EFGXHIYJKZLTM;N^(Ye|!OPQRSTUVWXYZ[\]^_`abcdef)_gLh`#Ye|!ijklmnopqrstuvwxyz{|}~Fajib5c3d!cccabefghij iefgh kv*jlll"8ml6nl6ol6pl6ql6rl6sl67tl67u l67vl6wl6xl6yl6 $zl6 ${l6 $|l6k}l6k~l6kl6l6l6l6l6l6l6l6l6$4l6$^l6$l6$l6l6l6l65l6l6YZ_` l6l6l6-Ye|!kYZ_g   Ye|!9 !_ !d!,"  8 ,! ~ ~~!ek !"#$%&.Ye|!'()*+,-./0Z1Y2e_gL)3456789:;<=> ?@7ABCD5Ye|L&'+EFGHIJKLlmnMNOP)Q!RSTUVWXpY/ZP[\]^_`abcdef9 ghi!jkelmno mpqr!s!(tuv!!wxyz!{G!|!c!z3}wx~!h(m!_`%Ye|L'!/)3# !3"5 967 63  67N"3!3 67N"! 6Ye!67! 67777eR 6!7 666( 673!Y 67k 6!6!] 67N2! 677!07 6xk7Ny67N!pqrts" 6 66,6Q 67NFK(!,567N!+        6     !3 67 !       6 !     6     36 6 677   ! " 3 67#  :$ % ! 66& ' 5( ) * + , - . !/ 0 1 2  673 4 5 6 != "67 8 9 : ; < = 6> ? @ A B (C D E F G H I J K L !M N 2O 677P 7Q R S t3T !pY d6U pV W X Y Z [ \ ] 7^ _ ` a 6b c d e f Z [ \ ] 7^ _ ` a !6W g h 7i Z [ \ ] 7^ _ ` a j k p*6l  6^m 6!n o 6p !q 36!r s t 6u v !] w x u ^]!y z  6{ | u ^]!y z } 6~  ! %7 7  6!\  : ,I  6  ] ! 65(  !/ 6!367             67!3 # 6       6!@7    36!L 9(     Y!       Y! 6_  ! 3  k  9  67N n   Hk d 67  3   67No ! n    ! "@ 6 !Q  6  6 QK  6 !Q :h7N A6 !: 6 !u   vw 6 !:;<=6>?3 6 7N!6 !B 6 7N3"mn!6   Jo 6 !z5{|}N A6 !cdefghijk  6 !_ A 6 7NR!STUV6 !_7N 6 7N!pqrs ,6777F9 Y / 9!6 7N""    # 6 !5I"  J$6 3%6 7N!OPQ&6 7731b'6 fgWe!XYZ[\7N]^_`a( 6 :e) 6 @  *    +   , Ye|Z C- . * !%f,Q/    0     1 0  2 22!    7333!  LAU7NYZ[\  ]^  J4 ,5 4  !     L64 !4   76   899         ::: " 8!  ; k         < 9 =9> !? ??  " !k@   ! " # $ ,9 8?U% & 0' ( h) >* A9B<<<?+ ?, :- :. !/ C0 1 DYC2 _Ye|SE k 3 4 5 6 !7 8 Y9 W:   7; F< B= > D? G@ )H9I   J   KL A   MB NC O D P7E Q~E RFE SE TE U8VG!W!F XG YH I J 3ZK L M N [ZO ZP ZQ ZR S T \U V W X ]_`0^_`0_Y `Z [ C\ ] ^ _ ` a b c d e af g h i 3bj k 3c2l m n o p dq r es t fZgu hv gw x iy z x { g| j } ~  >     k        l_`m"n o N C   ^p qN2     r 5l ( s   3t           u      v wx  yz{ | }z             ,~z      z z   5 z    z ,z "z   3z     z   z    z 6    z  3 9         "                   ! 3 !      "   ""    Q   G=                        ,           G      3        7 9                      3         3  3                 ! "        (     # $ % & ' ( ' !   !    ) 4* + , - . / 0 1 2 3 4 5 6 7 8 9 k: ; < = > ? @ A LB C D E F G H I !J K L M +N O P Q R S T U V 2!W X Y Z [ \ ] ^ _ ` a #b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ k7  FD  !36b                                   F )    "!"!  &,   F F Q7kYe|    7U7 7 7 7 LAA :  /,   J   ' /    u    q1!   S         e ki        F       )D[  k 97Uqr" tsH ! 9 (2 zc(Q3 c)   ( 7 z$ #         #   7 !( 7R!e*      (     2  !             ! Ye|| )F !        k! " # $ % & ' (  ) * [ \ + , - . / 0 1 2 3 4 5 Z6 7 8 9 : ; < = > ? @ A B C D E F G 2H I J K L M 7N O QP Q R S T U w u v V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p F q F7r 7s L t u v w Ox Y y z { | } 7~        7  7U"   !    H    k           ^  b !  !      be-*" {     Ye|!bKn'/ 9 ^ )FD7 F      !Y !  3=         %7 7  !                                                   !3k"D]E1  >? C@   "  kN! g 6 !      N     !gu 0 !         7 "Xgu A     ! !* " # $ 2% & ' (   ) * + , - . / W0 1 a2 3 4 5 6 7  8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R !S T U V W X Y Z [ \ ] ^ _ ###"!7$` 93%%%ra &rb c 'l ra d re &f g h i j k l m k$Q('n !o p q r ~s ~t ~u v )w ,~x y *2z R!3+!{ | } *~   #  #  7N7 ,'n  l      mnopq 7 -'n . 23 i,/'n !0'n !1'n !2'n !3'n ! 4 k ? 7 5  !   4 6 7 2CL!                  8 9 !        : a         ;     <b3 3 , . / 0 1 2 -         5 6 ( ) +                  79:; !"#$%= &'(!)*+,>!-#?./01@ 23456789A:B;<=>!?C4!@ABCD#EFGHIJKLMNOPQRSTUVWXYZ[\] ^_Z  `abcdefghijBklDmEnNFo!:Ye|7]pq T= Gr1sk!Z _gHt<u ?v"wxFy z { | } ~;= >   )F@CHDEI9 Y! JK L)MMMMN!QOOOMM0 !PQQQ!,RRRSTZ [ !8 UU9VVVkWWWX!LYZZZ"[[[)\!3]^___MMMM` !3a\]Qb`;RJ!JJJ``#!Z [ cdKe bQf ffqgggkhf igjklllCm nop       !q C =r rrFm  q n o p s !Nkt2KuDuu  C"!%Yt rL7u u! } g"#v$ %&'( )*+, Yp NJ-.s/ 0tQwww12u34xxx"e!yyyu5z{6|7}8 AH9: ";u<=>?@ABCWDES~FpG HzQIJKLMNOPQRSTUV WXYZ[\]  ^_`abcdefghijk!9=l: !"mnuop6pqr6s6s6tL 66u 6 5qL vws6x2 y #!"5z{|}~!CQ}:!Q}!Q }!CQ}!Q }!CQ}7N!$ 4%CQ}7N!Q}$ 4!QvYZ([ (L   {  IIIII,IIJ !  9IIJ!9!,IIJE!Q II!EJ!#!#!#IIJBC !i  9  d a!qpY,II KK9!#II~ BCi !II9 Y      II _gB3 !IIJ9!SBCi _ _g    _ 9%rII II !IIBCi /!e^ !IIII9"#II$%&'() *+!9,(!*-./0123Ye|v$456789:!;%# Y <#<=>?@A'BCD7N EFG HIJKLMNOPQRST K TUVWXYZ[\](El^l_`Qa!pb*  7N cd  efghijYklm7n<Ye|  tL K opqrkstuvwxyz{|}~!NN%5_gL~)Z,{ u!EFG 7| tL K !&  3a0!111"0!h  ! "1!~V !1^! "!^1 1 "dfg!.  1t< a*"    *   8#!"##7$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU7VWkX""YZ[\!]^_`abcdefghijklmnopqrstuvwxyz{|}~kv      a !"#$%&'()*+,-./0123456789:;<=>?@@w|!*"ABCDEFGHIJKLMNOPQRS@TUVWXY!Z[\] ^_` a bcd#"{ e!# "fghi!!jiklmnopq!rs! tu!N vwxyz{|}~3"WX!       !"#8$%&'()*+,-./0123Qp456789N_`_`_`_`_`_` :`}~W}~3;<=YZ([(>JW^Wl`?`@`ABCDEFGHIJ!KLMN3OPKQ-RSTUVWXYZ[\]^PKQ_`abcdefgKhijklmnopqrstuvwxG y z{<A |}~! !  !\<IId j77W]Os!!4K A:&Q 9   0       e  0 2 H8Ye|([a!'/  ^9!K9Y/ K9.  UP Z [ tr     ! N  !"""kL"#  $%&'(!)Y3#*$$$"+",% %%\-k./0!1&2&3 4'''kk567!*kL( 8 O#*9:;T!^ ^^k<)ZL)9***"+++, Y=>?@ABC-9q&... U E DE,F*G,H*I]'Ye|#JKLMNYOPQRST!UVXWXYLYZ)_g[ B ZA:[\7]^_`abc!///d0 00"efgh3ij111k222",lmn#opqrstuvwxy333"\zENDBhkl-5.1.7/data/Makefile.in0000664000175000017500000004132215144640451014250 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = data ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(hkl3ddir)" DATA = $(hkl3d_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ converter = blender_gltf_converter.py models = soleil-diffabs.yaml soleil-cristal-4c.yaml glbs = $(models:.yaml=.glb) blends = $(models:.yaml=.blend) pngs = $(models:.yaml=.png) EXTRA_DIST = $(converter) $(models) $(glbs) $(blends) $(pngs) CLEANFILES = $(glbs) $(pngs) hkl3ddir = $(pkgdatadir)/hkl3d hkl3d_DATA = $(EXTRA_DIST) all: all-am .SUFFIXES: .SUFFIXES: .blend .glb .png $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-hkl3dDATA: $(hkl3d_DATA) @$(NORMAL_INSTALL) @list='$(hkl3d_DATA)'; test -n "$(hkl3ddir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hkl3ddir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hkl3ddir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hkl3ddir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hkl3ddir)" || exit $$?; \ done uninstall-hkl3dDATA: @$(NORMAL_UNINSTALL) @list='$(hkl3d_DATA)'; test -n "$(hkl3ddir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hkl3ddir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(hkl3ddir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-hkl3dDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-hkl3dDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-hkl3dDATA \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-hkl3dDATA .PRECIOUS: Makefile .blend.glb: $(BLENDER) -b -P $(converter) -- -mp ./$< .blend.png: $(BLENDER_THUMBNAILER) $< $@ %.blend: wget https://people.debian.org/~picca/hkl3d/$@ -O $@ export-all-model: scp $(blends) people.debian.org:public_html/hkl3d/ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/data/Makefile.am0000664000175000017500000000104715133711150014230 0ustar00piccapiccaconverter=blender_gltf_converter.py models=soleil-diffabs.yaml soleil-cristal-4c.yaml glbs=$(models:.yaml=.glb) blends=$(models:.yaml=.blend) pngs=$(models:.yaml=.png) .blend.glb: $(BLENDER) -b -P $(converter) -- -mp ./$< .blend.png: $(BLENDER_THUMBNAILER) $< $@ EXTRA_DIST=$(converter) $(models) $(glbs) $(blends) $(pngs) CLEANFILES=$(glbs) $(pngs) hkl3ddir = $(pkgdatadir)/hkl3d hkl3d_DATA = $(EXTRA_DIST) %.blend: wget https://people.debian.org/~picca/hkl3d/$@ -O $@ export-all-model: scp $(blends) people.debian.org:public_html/hkl3d/ hkl-5.1.7/config.h.in0000664000175000017500000002061615144640447013325 0ustar00piccapicca/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if using 'alloca.c'. */ #undef C_ALLOCA /* Define to 1 if you have 'alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if works. */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the 'atexit' function. */ #undef HAVE_ATEXIT /* Define to 1 if you have the header file. */ #undef HAVE_DATATYPE99_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have 'vprintf' but do have '_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the 'dup2' function. */ #undef HAVE_DUP2 /* Define to 1 if you have the 'fchdir' function. */ #undef HAVE_FCHDIR /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if you have the 'floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the 'fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the 'getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the 'getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define to 1 if you have the 'gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the 'isascii' function. */ #undef HAVE_ISASCII /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the 'memchr' function. */ #undef HAVE_MEMCHR /* Define to 1 if you have the 'memmove' function. */ #undef HAVE_MEMMOVE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the 'memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the 'mkdir' function. */ #undef HAVE_MKDIR /* Define to 1 if you have the 'pow' function. */ #undef HAVE_POW /* Define to 1 if you have the 'putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the 'rmdir' function. */ #undef HAVE_RMDIR /* Define to 1 if you have the 'select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the 'sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the 'strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the 'strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the 'strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the 'strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the 'strncasecmp' function. */ #undef HAVE_STRNCASECMP /* Define to 1 if you have the 'strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the 'strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the 'strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the 'strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the 'vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if you have the 'vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if 'fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if 'vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_YAML_H /* activate the logging or not */ #undef LOGGING /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Major version */ #undef VMAJ /* Micro version */ #undef VMIC /* Minor version */ #undef VMIN /* Revison */ #undef VREV /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define for Solaris 2.5.1 so the uint8_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT8_T /* Define to empty if 'const' does not conform to ANSI C. */ #undef const /* Define to '__inline__' or '__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef int8_t /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define as 'unsigned int' if doesn't define. */ #undef size_t /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef uint8_t /* Define as 'fork' if 'vfork' does not work. */ #undef vfork hkl-5.1.7/m4/0000775000175000017500000000000015144640564011615 5ustar00piccapiccahkl-5.1.7/m4/libtool.m40000644000175000017500000114100515144640442013516 0ustar00piccapicca# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 63 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), in case it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2024 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' AC_CACHE_CHECK([for -no_fixup_chains linker flag], [lt_cv_support_no_fixup_chains], [ save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" AC_LINK_IFELSE( [AC_LANG_PROGRAM([],[])], lt_cv_support_no_fixup_chains=yes, lt_cv_support_no_fixup_chains=no ) LDFLAGS=$save_LDFLAGS ] ) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_REQUIRE([AC_PROG_RANLIB]) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[int test_pointer_size[sizeof (void *) - 5]; ]])], [shlibpath_var=LD_LIBRARY_PATH], [shlibpath_var=LD_32_LIBRARY_PATH]) ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" _LT_COMPILER_PIC($1)='-fPIC' _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(no_undefined_flag, $1)= ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], [lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BCDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; serenity*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *-mlibc) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; serenity*) ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | windows* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; *-mlibc) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; serenity*) ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e. impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; *-mlibc) _LT_TAGVAR(ld_shlibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; serenity*) ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. if test x-L = x"$p" || test x-R = x"$p" || test x-l = x"$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_FILECMD # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], [AC_CHECK_PROG([FILECMD], [file], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS hkl-5.1.7/m4/gtk-doc.m40000644000175000017500000001066015144640443013404 0ustar00piccapicca# -*- mode: autoconf -*- # # gtk-doc.m4 - configure macro to check for gtk-doc # Copyright (C) 2003 James Henstridge # 2007-2017 Stefan Sauer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # As a special exception, the above copyright owner gives unlimited # permission to copy, distribute and modify the configure scripts that # are the output of Autoconf when processing the Macro. You need not # follow the terms of the GNU General Public License when using or # distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # serial 2 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) AC_MSG_CHECKING([for gtk-doc]) PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) AC_MSG_RESULT($have_gtk_doc) if test "$have_gtk_doc" = "no"; then AC_MSG_WARN([ You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found.]) fi dnl check for tools we added during development dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that dnl may not be writable by the user. Currently, automake requires that the dnl test name must end in '.test'. dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then AC_MSG_ERROR([ You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '[$]0'.]) fi dnl don't check for glib if we build glib if test "x$PACKAGE_NAME" != "xglib"; then dnl don't fail if someone does not have glib PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) fi dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) hkl-5.1.7/m4/ltversion.m40000644000175000017500000000131215144640442014072 0ustar00piccapicca# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation, # Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4441 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.5.4]) m4_define([LT_PACKAGE_REVISION], [2.5.4]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.5.4' macro_revision='2.5.4' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) hkl-5.1.7/m4/ltsugar.m40000644000175000017500000001045315144640442013534 0ustar00piccapicca# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) hkl-5.1.7/m4/ltoptions.m40000644000175000017500000003612115144640442014106 0ustar00piccapicca# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 10 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --enable-aix-soname configure option, and support the # `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. # DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_ENABLE([aix-soname], [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $enableval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --enable-aix-soname]) ;; esac lt_cv_with_aix_soname=$enable_aix_soname], [_AC_ENABLE_IF([with], [aix-soname], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)]) enable_aix_soname=$lt_cv_with_aix_soname]) with_aix_soname=$enable_aix_soname AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --enable-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_ENABLE([pic], [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [dnl Continue to support --with-pic and --without-pic, for backward dnl compatibility. _AC_ENABLE_IF([with], [pic], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])])] ) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) hkl-5.1.7/m4/lt~obsolete.m40000644000175000017500000001400715144640442014424 0ustar00piccapicca# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) hkl-5.1.7/contrib/0000775000175000017500000000000015144640570012732 5ustar00piccapiccahkl-5.1.7/contrib/petra3/0000775000175000017500000000000015144640570014130 5ustar00piccapiccahkl-5.1.7/contrib/petra3/hkl_calculations.c0000664000175000017500000002336214677222567017635 0ustar00piccapicca#include #include "hkl.h" #include #include #include double a = 4.542, b = 16.955, c = 7.389; double alpha = 90.0 * HKL_DEGTORAD; double beta = 90.0 * HKL_DEGTORAD; double gamm = 90.0 * HKL_DEGTORAD; char *diffr_type = "E6C"; double wavelength = 1.62751693358; double angles_or0[] = {0.0, 22.31594, 89.1377, 0.0, 0.0, 45.15857}; double hkl_or0[] = {0, 8, 0}; double angles_or1[] = {0.0, 34.96232, 78.3139, 0.0, 0.0, 71.8007}; double hkl_or1[] = {0, 12, 1}; double ux = 0.878929693221, uy = -3.6132870009, uz = 0.263869539307; char *engine_type = "hkl"; char *engine_mode = "constant_phi_vertical"; int n_refl = 9; size_t n_angles = sizeof(angles_or0)/sizeof(angles_or0[0]); HklGeometry *new_hkl_geometry(char *dtype, double wavelength) { HklFactory *factory; HklGeometry *geometry; factory = hkl_factory_get_by_name(dtype, NULL); geometry = hkl_factory_create_new_geometry(factory); if(TRUE != hkl_geometry_axis_values_set(geometry, angles_or0, n_angles, HKL_UNIT_USER, NULL)){ printf("\n>>> There is a problem during the creation of the new geometry.\n"); exit(EXIT_FAILURE); } if(TRUE != hkl_geometry_wavelength_set(geometry, wavelength, HKL_UNIT_USER, NULL)){ printf("\n>>> There is a problem during the assignment of the wavelength.\n"); exit(EXIT_FAILURE); } return geometry; } HklSampleReflection *new_sample_reflection(HklGeometry *geometry, HklDetector *detector, double angles_refl[], size_t n_angles, double hkl_refl[3], HklSample *sample) { HklSampleReflection *reflection; if(TRUE != hkl_geometry_axis_values_set(geometry, angles_refl, n_angles, HKL_UNIT_USER, NULL)){ printf("\n>>> There is a problem with the angles of the reflection %5.3f %5.3f %5.3f.\n", hkl_refl[0], hkl_refl[1], hkl_refl[2]); exit(EXIT_FAILURE); } reflection = hkl_sample_reflection_new(geometry, detector, hkl_refl[0], hkl_refl[1], hkl_refl[2], NULL); hkl_sample_add_reflection(sample, reflection); return reflection; } HklSample *new_hkl_sample(void) { HklSample *sample; HklLattice *lattice; HklGeometry *geometry; HklDetector *detector; HklSampleReflection *or0, *or1; sample = hkl_sample_new("sample name"); lattice = hkl_lattice_new(a, b, c, alpha, beta, gamm, NULL); hkl_sample_lattice_set(sample, lattice); geometry = new_hkl_geometry(diffr_type, wavelength); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); or0 = new_sample_reflection(geometry, detector, angles_or0, n_angles, hkl_or0, sample); or1 = new_sample_reflection(geometry, detector, angles_or1, n_angles, hkl_or1, sample); if(TRUE != hkl_sample_compute_UB_busing_levy(sample, or0, or1, NULL)){ printf("\n>>> There is a problem during the calculation of the UB matrix.\n"); exit(EXIT_FAILURE); } /* Another way of obtaining the UB matrix: using the parameters Ux, Uy and Uz . */ /* parameter = hkl_sample_ux_get(sample); if(TRUE != hkl_parameter_value_set(parameter, ux, HKL_UNIT_USER, NULL) || TRUE != hkl_sample_ux_set(sample, parameter, NULL)){ printf("\n>>> There is a problem during the assignment of the parameter Ux.\n"); exit(EXIT_FAILURE); } parameter = hkl_sample_uy_get(sample); if(TRUE != hkl_parameter_value_set(parameter, uy, HKL_UNIT_USER, NULL) || TRUE != hkl_sample_uy_set(sample, parameter, NULL)){ printf("\n>>> There is a problem during the assignment of the parameter Uy.\n"); exit(EXIT_FAILURE); } parameter = hkl_sample_uz_get(sample); if(TRUE != hkl_parameter_value_set(parameter, uz, HKL_UNIT_USER, NULL) || TRUE != hkl_sample_uz_set(sample, parameter, NULL)){ printf("\n>>> There is a problem during the assignment of the parameter Uz.\n"); exit(EXIT_FAILURE); } */ hkl_geometry_free(geometry); hkl_detector_free(detector); return sample; } HklEngine *new_hkl_engine(char *diffr_type, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { const HklFactory *factory; HklEngineList *engines; HklEngine *engine; factory = hkl_factory_get_by_name(diffr_type, NULL); engines = hkl_factory_create_new_engine_list(factory); hkl_engine_list_init(engines, geometry, detector, sample); engine = hkl_engine_list_engine_get_by_name(engines, engine_type, NULL); if(TRUE != hkl_engine_current_mode_set(engine, engine_mode, NULL)){ printf("\n>>> There is a problem during the assignment of the engine mode.\n"); exit(EXIT_FAILURE); } return engine; } void hklmatrix_to_gslmatrix(const HklMatrix *m_hkl, gsl_matrix *m_gsl) { int i, j; double x; for(i = 0; i < 3; ++i){ for(j = 0; j < 3; ++j){ x = hkl_matrix_get(m_hkl, i, j); gsl_matrix_set(m_gsl, i, j, x); } } } void cross_product(gsl_vector *u, gsl_vector *v, gsl_vector *vect_prod) { double p1 = gsl_vector_get(u,1)*gsl_vector_get(v,2) - gsl_vector_get(u,2)*gsl_vector_get(v,1); double p2 = - gsl_vector_get(u,0)*gsl_vector_get(v,2) + gsl_vector_get(u,2)*gsl_vector_get(v,0); double p3 = gsl_vector_get(u,0)*gsl_vector_get(v,1) - gsl_vector_get(u,1)*gsl_vector_get(v,0); gsl_vector_set(vect_prod, 0, p1); gsl_vector_set(vect_prod, 1, p2); gsl_vector_set(vect_prod, 2, p3); } void calculate_M_matrix(const HklGeometry *geometry, HklDetector *detector, gsl_matrix *M) { HklQuaternion P_quat; HklMatrix *P_hkl; gsl_vector *ki_lab, *kf_lab; gsl_vector *u1_lab, *u2_lab, *u3_lab; gsl_matrix *P, *Minv; double vect_norm; int i; /* ki and kf in the laboratory frame */ P_quat = hkl_geometry_detector_rotation_get(geometry, detector); P_hkl = hkl_matrix_new(); hkl_quaternion_to_matrix(&P_quat, P_hkl); P = gsl_matrix_alloc(3, 3); hklmatrix_to_gslmatrix(P_hkl, P); ki_lab = gsl_vector_alloc(3); gsl_vector_set_zero(ki_lab); gsl_vector_set(ki_lab, 0, 1.0); kf_lab = gsl_vector_alloc(3); gsl_blas_dgemv(CblasNoTrans, 1.0, P, ki_lab, 0.0, kf_lab); /* u1, u2, and u3 (basis vectors of the BG reference frame) */ u1_lab = gsl_vector_alloc(3); gsl_vector_memcpy(u1_lab, ki_lab); gsl_vector_add(u1_lab, kf_lab); vect_norm = gsl_blas_dnrm2(u1_lab); gsl_blas_dscal(1.0/vect_norm, u1_lab); u2_lab = gsl_vector_alloc(3); cross_product(ki_lab, kf_lab, u2_lab); vect_norm = gsl_blas_dnrm2(u2_lab); gsl_blas_dscal(1.0/vect_norm, u2_lab); u3_lab = gsl_vector_alloc(3); gsl_vector_memcpy(u3_lab, ki_lab); gsl_vector_sub(u3_lab, kf_lab); vect_norm = gsl_blas_dnrm2(u3_lab); gsl_blas_dscal(1.0/vect_norm, u3_lab); /* Matrix transformation from lab to BG reference frame */ Minv = gsl_matrix_alloc(3, 3); for (i = 0; i < 3; ++i){ gsl_matrix_set(Minv, i, 0, gsl_vector_get(u1_lab, i)); gsl_matrix_set(Minv, i, 1, gsl_vector_get(u2_lab, i)); gsl_matrix_set(Minv, i, 2, gsl_vector_get(u3_lab, i)); } /* By construction, the matrix M is orthogonal: inverse(M) = transpose(M) */ gsl_matrix_memcpy(M, Minv); gsl_matrix_transpose(M); } void compute_transf_matrix(double *refl_hkl, double trans_matrix[3][3]) { HklSample *sample; HklGeometry *geometry; const HklGeometry *geom; HklDetector *detector; HklEngine *engine; HklGeometryList *geometries; HklQuaternion R_quat; HklMatrix *R_hkl; const HklMatrix *UB_hkl; gsl_matrix *UB, *M, *R, *T, *MRUB; int i, j; double angles[6]; int n_angles = 6; sample = new_hkl_sample(); geometry = new_hkl_geometry(diffr_type, wavelength); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); engine = new_hkl_engine(diffr_type, geometry, detector, sample); geometries = hkl_engine_pseudo_axis_values_set(engine, refl_hkl, 3, HKL_UNIT_USER, NULL); geom = hkl_geometry_list_item_geometry_get(hkl_geometry_list_items_first_get(geometries)); /* The values of the angles (4S + 2D) can be obtained with */ hkl_geometry_axis_values_get(geom, angles, n_angles, HKL_UNIT_USER); for (i = 0; i < n_angles; ++i){ printf(" %8.5f ", angles[i]); } printf("\n"); /* Matrix transformation from lab to BG reference frame */ M = gsl_matrix_alloc(3, 3); calculate_M_matrix(geom, detector, M); /* Matrix transformation from recipr to BG reference frame */ R_quat = hkl_geometry_sample_rotation_get(geom, sample); R_hkl = hkl_matrix_new(); hkl_quaternion_to_matrix(&R_quat, R_hkl); R = gsl_matrix_alloc(3, 3); hklmatrix_to_gslmatrix(R_hkl, R); UB_hkl = hkl_sample_UB_get(sample); UB = gsl_matrix_alloc(3, 3); hklmatrix_to_gslmatrix(UB_hkl, UB); T = gsl_matrix_alloc(3, 3); gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, R, UB, 0.0, T); MRUB = gsl_matrix_alloc(3, 3); gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, M, T, 0.0, MRUB); for(i = 0; i < 3; ++i){ for(j = 0; j < 3; ++j){ trans_matrix[i][j] = gsl_matrix_get(MRUB, i, j); } } hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geometry); } int main(void) { int i, j, k; double refl_hkl[] = {0.5, 6.5, 0.43}; double MRUB_matrix[3][3]; for(i = 0; i < n_refl; ++i){ refl_hkl[1] = i + 6.5; printf("\nReflection %5.3f, %5.3f, %5.3f :\n", refl_hkl[0], refl_hkl[1], refl_hkl[2]); compute_transf_matrix(refl_hkl, MRUB_matrix); printf("The transformation matrix:\n"); for(j = 0; j < 3; ++j){ for(k = 0; k < 3; ++k){ printf(" %10.6f ", MRUB_matrix[j][k]); } printf("\n"); } printf("\n"); } return 0; } hkl-5.1.7/contrib/petra3/Makefile.in0000664000175000017500000005057715144640451016211 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = hkl_calculations$(EXEEXT) subdir = contrib/petra3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) hkl_calculations_SOURCES = hkl_calculations.c hkl_calculations_OBJECTS = hkl_calculations.$(OBJEXT) hkl_calculations_LDADD = $(LDADD) am__DEPENDENCIES_1 = hkl_calculations_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl_calculations.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = hkl_calculations.c DIST_SOURCES = hkl_calculations.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(GLIB_CFLAGS) \ $(GOBJECT_CFLAGS) \ $(GSL_CFLAGS) # wee need access to the private part until the trajectory is done. AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(GLIB_LIBS) \ $(GOBJECT_LIBS) \ $(GSL_LIBS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/petra3/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/petra3/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: $(am__rm_f) $(noinst_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) hkl_calculations$(EXEEXT): $(hkl_calculations_OBJECTS) $(hkl_calculations_DEPENDENCIES) $(EXTRA_hkl_calculations_DEPENDENCIES) @rm -f hkl_calculations$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl_calculations_OBJECTS) $(hkl_calculations_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl_calculations.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/hkl_calculations.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/hkl_calculations.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/contrib/petra3/Makefile.am0000664000175000017500000000117514677222567016204 0ustar00piccapiccaAM_CPPFLAGS = -Wextra -D_DEFAULT_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(GLIB_CFLAGS) \ $(GOBJECT_CFLAGS) \ $(GSL_CFLAGS) # wee need access to the private part until the trajectory is done. AM_LDFLAGS = -Wl,--whole-archive,$(top_builddir)/hkl/.libs/libhkl.a,--no-whole-archive LDADD = \ $(top_builddir)/hkl/libhkl.la \ $(top_builddir)/hkl/api2/libhkl2.la \ $(GLIB_LIBS) \ $(GOBJECT_LIBS) \ $(GSL_LIBS) noinst_PROGRAMS = hkl_calculations # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/contrib/Makefile.in0000664000175000017500000005032315144640450014777 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = cristal sixs petra3 all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/contrib/sixs/0000775000175000017500000000000015144640570013720 5ustar00piccapiccahkl-5.1.7/contrib/sixs/Makefile.in0000664000175000017500000005333615144640451015775 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = hkl3d$(EXEEXT) subdir = contrib/sixs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) hkl3d_SOURCES = hkl3d.c hkl3d_OBJECTS = hkl3d.$(OBJEXT) hkl3d_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl3d.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = hkl3d.c DIST_SOURCES = hkl3d.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(GSL_CFLAGS) \ $(GLIB_CFLAGS) \ $(GTK_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = \ -Wl,--export-dynamic \ $(top_builddir)/hkl/libhkl.la \ $(GSL_LIBS) \ $(GLIB_LIBS) \ $(GTK_LIBS) \ $(HDF5_LIBS) hkl3d_LDADD = \ $(top_builddir)/hkl/libhkl.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/sixs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/sixs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files clean-binPROGRAMS: $(am__rm_f) $(bin_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=) hkl3d$(EXEEXT): $(hkl3d_OBJECTS) $(hkl3d_DEPENDENCIES) $(EXTRA_hkl3d_DEPENDENCIES) @rm -f hkl3d$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hkl3d_OBJECTS) $(hkl3d_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/hkl3d.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/hkl3d.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/contrib/sixs/Makefile.am0000664000175000017500000000076714677222567016002 0ustar00piccapiccabin_PROGRAMS = hkl3d AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ $(GSL_CFLAGS) \ $(GLIB_CFLAGS) \ $(GTK_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = \ -Wl,--export-dynamic \ $(top_builddir)/hkl/libhkl.la \ $(GSL_LIBS) \ $(GLIB_LIBS) \ $(GTK_LIBS) \ $(HDF5_LIBS) hkl3d_LDADD = \ $(top_builddir)/hkl/libhkl.la # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/contrib/sixs/hkl3d.c0000664000175000017500000002271714677222567015116 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include //#undef H5_USE_16_API #include "hkl.h" #include #define ROOT "/nfs/ruche-sixs/sixs-soleil/com-sixs/2015/Shutdown4-5/XpadAu111/" #define FILENAME "align_FLY2_omega_00045.nxs" #define DATASET_IMAGE "com_113934/scan_data/xpad_image" #define DATASET_MU "com_113934/scan_data/UHV_MU" #define DATASET_OMEGA "com_113934/scan_data/UHV_OMEGA" #define DATASET_DELTA "com_113934/scan_data/UHV_DELTA" #define DATASET_GAMMA "com_113934/scan_data/UHV_GAMMA" #define DATASET_UB "com_113934/SIXS/I14-C-CX2__EX__DIFF-UHV__#1/UB" #define DATASET_WAVELENGTH "com_113934/SIXS/Monochromator/wavelength" #define DATASET_DIFFRACTOMETER_TYPE "com_113934/SIXS/I14-C-CX2__EX__DIFF-UHV__#1/type" /* Display all the node informations */ /* static herr_t attribute_info(hid_t location_id, const char *attr_name, const H5A_info_t *ainfo, void *op_data) */ /* { */ /* printf(" Attribute: %ld %s\n", location_id, attr_name); */ /* return 0; */ /* } */ /* static herr_t file_info(hid_t loc_id, const char *name, const H5L_info_t *info, void *opdata) */ /* { */ /* H5O_info_t statbuf; */ /* hsize_t n = 0; */ /* /\* */ /* * Get type of the object and display its name and type. */ /* * The name of the object is passed to this function by */ /* * the Library. Some magic :-) */ /* *\/ */ /* H5Oget_info_by_name(loc_id, name, &statbuf, H5P_DEFAULT); */ /* switch (statbuf.type) { */ /* case H5O_TYPE_UNKNOWN: */ /* printf(" Object with name %s is an unknown type\n", name); */ /* break; */ /* case H5O_TYPE_GROUP: */ /* printf(" Object with name %s is a group\n", name); */ /* break; */ /* case H5O_TYPE_DATASET: */ /* printf(" Object with name %s is a dataset\n", name); */ /* break; */ /* case H5O_TYPE_NAMED_DATATYPE: */ /* printf(" Object with name %s is a named datatype\n", name); */ /* break; */ /* default: */ /* printf(" Unable to identify an object "); */ /* } */ /* H5Aiterate_by_name(loc_id, name, H5_INDEX_NAME, H5_ITER_NATIVE, &n, attribute_info, NULL, H5P_DEFAULT); */ /* return 0; */ /* } */ typedef struct _HklDataframeSixsUhv HklDataframeSixsUhv; struct _HklDataframeSixsUhv { hid_t file; hid_t mu; hid_t omega; hid_t delta; hid_t gamma; hid_t ub; hid_t wavelength; hid_t dtype; }; static HklDataframeSixsUhv hkl_h5_open(const char *filename) { /* herr_t status; */ hid_t h5file_id; HklDataframeSixsUhv dataframe = {0}; /* is it an hdf5 file */ if (H5Fis_hdf5(filename) == 0) return dataframe; h5file_id = H5Fopen (filename, H5F_ACC_RDONLY, H5P_DEFAULT); if (h5file_id < 0) return dataframe; /* display all the node informations */ /* status = H5Lvisit(h5file_id, H5_INDEX_CRT_ORDER, H5_ITER_NATIVE, file_info, NULL); */ /* if(status < 0) */ /* return dataframe; */ dataframe.file = h5file_id; dataframe.mu = H5Dopen (h5file_id, DATASET_MU, H5P_DEFAULT); dataframe.omega = H5Dopen (h5file_id, DATASET_OMEGA, H5P_DEFAULT); dataframe.delta = H5Dopen (h5file_id, DATASET_DELTA, H5P_DEFAULT); dataframe.gamma = H5Dopen (h5file_id, DATASET_GAMMA, H5P_DEFAULT); dataframe.ub = H5Dopen (h5file_id, DATASET_UB, H5P_DEFAULT); dataframe.wavelength = H5Dopen (h5file_id, DATASET_WAVELENGTH, H5P_DEFAULT); dataframe.dtype = H5Dopen (h5file_id, DATASET_DIFFRACTOMETER_TYPE, H5P_DEFAULT); return dataframe; } static hssize_t check_ndims(hid_t dataset_id, int expected, hid_t *space_id) { *space_id = H5Dget_space (dataset_id); return H5Sget_simple_extent_ndims (*space_id) == expected; } static int hkl_h5_len(const HklDataframeSixsUhv *dataframe) { hid_t space_id = H5Dget_space (dataframe->mu); return H5Sget_simple_extent_npoints(space_id); } static int hkl_h5_is_valid(const HklDataframeSixsUhv *dataframe) { int res = TRUE; hid_t space_id; hssize_t n; /* check the dimensionnality of the axes */ res &= check_ndims(dataframe->mu, 1, &space_id); n = H5Sget_simple_extent_npoints(space_id); /* check the dimensionnality of all the axes */ res &= check_ndims(dataframe->omega, 1, &space_id); res &= n == H5Sget_simple_extent_npoints(space_id); res &= check_ndims(dataframe->delta, 1, &space_id); res &= n == H5Sget_simple_extent_npoints(space_id); res &= check_ndims(dataframe->gamma, 1, &space_id); res &= n == H5Sget_simple_extent_npoints(space_id); return res; } static herr_t hkl_h5_close(const HklDataframeSixsUhv *dataframe) { H5Dclose(dataframe->dtype); H5Dclose(dataframe->wavelength); H5Dclose(dataframe->ub); H5Dclose(dataframe->gamma); H5Dclose(dataframe->delta); H5Dclose(dataframe->omega); H5Dclose(dataframe->mu); return H5Fclose (dataframe->file); } typedef struct _HklDataframe HklDataframe; struct _HklDataframe { int i; int len; const HklDataframeSixsUhv *_dataframe; }; static const HklDataframe hkl_dataframe_first(const HklDataframeSixsUhv *dataframe) { HklDataframe frame; frame.i = 0; frame.len = hkl_h5_len(dataframe); frame._dataframe = dataframe; return frame; } static int hkl_dataframe_done(const HklDataframe dataframe) { return dataframe.i < dataframe.len; } static const HklDataframe hkl_dataframe_next(const HklDataframe dataframe) { HklDataframe frame = dataframe; frame.i++; return frame; } static herr_t get_position(hid_t dataset_id, int idx, double *position) { hid_t space_id; hid_t mem_type_id; hid_t mem_space_id; hsize_t count[1]; hsize_t offset[1]; mem_type_id = H5Dget_type(dataset_id); /* Get the dataspace handle */ if ( (space_id = H5Dget_space( dataset_id )) < 0 ) goto out; /* Define a hyperslab in the dataset of the size of the records */ offset[0] = idx; count[0] = 1; if ( H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ if ( (mem_space_id = H5Screate_simple( 1, count, NULL )) < 0 ) goto out; if ( H5Dread(dataset_id, mem_type_id, mem_space_id, space_id, H5P_DEFAULT, position ) < 0 ) goto out; /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( space_id ) < 0 ) goto out; return 0; out: H5Tclose(mem_type_id); return -1; } static herr_t hkl_dataframe_geometry_get(const HklDataframe dataframe, HklGeometry **geometry) { herr_t status = 0; hid_t datatype; double wavelength; double axes[4]; /* create the HklGeometry */ if((*geometry) == NULL){ char *name; size_t n; HklFactory *factory; /* read the diffractometer type from the hdf5 file */ datatype = H5Dget_type(dataframe._dataframe->dtype); n = H5Tget_size(datatype); name = malloc(n+1); status = H5Dread(dataframe._dataframe->dtype, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, name); if(status >= 0){ /* remove the last "\n" char */ name[n-1] = 0; factory = hkl_factory_get_by_name(name, NULL); *geometry = hkl_factory_create_new_geometry(factory); } free(name); H5Tclose(datatype); } /* read the wavelength double */ /* TODO check the right size */ /* TODO how to obtain the unit of the wavelength */ datatype = H5Dget_type(dataframe._dataframe->wavelength); status = H5Dread(dataframe._dataframe->wavelength, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, &wavelength); if(status >= 0) status = hkl_geometry_wavelength_set(*geometry, wavelength, HKL_UNIT_USER, NULL); H5Tclose(datatype); /* read the axis positions of the ith dataframe */ /* check how to decide about the dataset connection and the hkl axes connection */ /* TODO check the right size */ /* TODO how to obtain the unit of the axes position */ if (get_position(dataframe._dataframe->mu, dataframe.i, &axes[0]) < 0) goto out; if (get_position(dataframe._dataframe->omega, dataframe.i, &axes[1]) < 0) goto out; if (get_position(dataframe._dataframe->gamma, dataframe.i, &axes[2]) < 0) goto out; if (get_position(dataframe._dataframe->delta, dataframe.i, &axes[3]) < 0) goto out; status = hkl_geometry_axis_values_set(*geometry, axes, 4, HKL_UNIT_USER, NULL); /* hkl_geometry_fprintf(stdout, *geometry); */ /* fprintf(stdout, "\n"); */ return 0; out: return -1; } int main (int argc, char ** argv) { const char *filename = ROOT FILENAME; HklDataframeSixsUhv dataframe_h5 = hkl_h5_open(filename); int res = hkl_h5_is_valid(&dataframe_h5); /* fprintf(stdout, "h5file is valid : %d\n", res); */ HklGeometry *geometry = NULL; for(HklDataframe dataframe = hkl_dataframe_first(&dataframe_h5); hkl_dataframe_done(dataframe); dataframe = hkl_dataframe_next(dataframe)) { hkl_dataframe_geometry_get(dataframe, &geometry); /* fprintf(stdout, " %d", dataframe.i); */ } hkl_geometry_free(geometry); hkl_h5_close(&dataframe_h5); return res; } hkl-5.1.7/contrib/cristal/0000775000175000017500000000000015144640570014373 5ustar00piccapiccahkl-5.1.7/contrib/cristal/xrays/0000775000175000017500000000000015144640570015541 5ustar00piccapiccahkl-5.1.7/contrib/cristal/xrays/xrays-image-dat.c0000664000175000017500000000321114677222567020712 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "xrays/xrays-image.h" XRaysImage* xrays_image_from_file_dat(FILE *file, size_t width, size_t height) { size_t i; XRaysImage *img; rewind(file); img = xrays_image_new(XRAYS_IMAGE_FLOAT, width, height, 1); if(NULL == img){ fprintf(stderr, "Can not allocate an image for the dat file"); goto failed; } for(i=0; idata)[i]) != 1) { fprintf(stderr, "Invalid data in the dat file.\n"); fclose(file); goto failed; } } return img; failed: return NULL; } hkl-5.1.7/contrib/cristal/xrays/xrays-image.c0000664000175000017500000003216314677222567020154 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include "xrays-macros.h" #include "xrays-image.h" #include "xrays-image-spe.h" /* private */ static size_t get_elem_size(XRaysImageType type) { size_t size; size = 0; switch (type) { case XRAYS_IMAGE_USHORT: case XRAYS_IMAGE_SHORT: size = 2; break; case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_FLOAT: size = 4; break; case XRAYS_IMAGE_LONG: size = 8; break; } return size; } static XRaysImageFileType file_type(char const *filename) { char *ext; ext = strchr(filename, '.'); if (NULL == ext) goto fail; if (!strcmp(ext, ".spe") || !strcmp(ext, ".SPE")) return XRAYS_IMAGE_FILE_SPE; if (!strcmp(ext, ".dat")) return XRAYS_IMAGE_FILE_DAT; fail: return XRAYS_IMAGE_FILE_UNKNOWN; } static int same_dims(XRaysImage const *img1, XRaysImage const *img2) { return img1->width == img2->width && img1->height == img2->height && img1->len == img2->len; } /* public */ XRaysImage* xrays_image_new(XRaysImageType type, size_t width, size_t height, size_t len) { XRaysImage *img; img = malloc(sizeof(XRaysImage)); if (!img) die("Can not allocate memory"); img->type = type; img->width = width; img->height = height; img->len = len; img->elem_size = get_elem_size(type); img->data = calloc(width * height * len, img->elem_size); if (!img->data) die("Can not allocate memory"); return img; } XRaysImage* xrays_image_new_copy(XRaysImage const *src) { XRaysImage *img; img = malloc(sizeof(XRaysImage)); if (!img) die("Can not allocate memory"); /* struct copy */ *img = *src; /* then make a deep copy of the image */ if (src->data) { size_t len; len = src->width * src->height * src->len * src->elem_size; img->data = malloc(len); if (!img->data) die("Can not allocate memory"); memcpy(img->data, src->data, len); } return img; } XRaysImage* xrays_image_from_file(char const *filename, size_t width, size_t height) { XRaysImage *img; FILE *file; img = NULL; file = fopen(filename,"rbm"); if (!file) return img; switch(file_type(filename)) { case XRAYS_IMAGE_FILE_SPE: img = xrays_image_spe_read(file); break; case XRAYS_IMAGE_FILE_DAT: img = xrays_image_from_file_dat(file, width, height); break; case XRAYS_IMAGE_FILE_UNKNOWN: break; } fclose(file); return img; } int xrays_image_cmp(XRaysImage const *img1, XRaysImage const *img2) { int res = 0; size_t size; size = sizeof(XRaysImage) - sizeof(void*); res |= memcmp(img1, img2, size); size = img1->width * img1->height * img1->len * img1->elem_size; res |= memcmp(img1->data, img2->data, size); return res; } void xrays_image_free(XRaysImage *img) { if (img->data) free(img->data); free(img); } void xrays_image_copy(XRaysImage *dst, XRaysImage const *src) { if (same_dims(dst, src) && dst->type == src->type) { size_t len; len = src->width * src->height * src->len * src->elem_size; memcpy(dst->data, src->data, len); } } XRaysImage* xrays_image_attach(XRaysImageType type, size_t width, size_t height, size_t len, void *data) { XRaysImage *img; img = malloc(sizeof(XRaysImage)); if (!img) die("Can not allocate memory"); img->type = type; img->width = width; img->height = height; img->len = len; img->elem_size = get_elem_size(type); img->data = data; return img; } void xrays_image_detach(XRaysImage *img) { if (img) free(img); } void xrays_image_clear(XRaysImage *img) { size_t size = img->width * img->height * img->len * img->elem_size; memset(img->data, 0, size); } double xrays_image_rms(XRaysImage const *img) { double rms = 0; #define XRAYS_RMS(type)\ do{\ int i;\ double mean = 0;\ int nb_elements = img->width * img->height * img->len;\ type *data = img->data;\ for(i=0;itype) { case XRAYS_IMAGE_SHORT: XRAYS_RMS(short int); break; case XRAYS_IMAGE_USHORT: XRAYS_RMS(unsigned short int); break; case XRAYS_IMAGE_INT: XRAYS_RMS(int); break; case XRAYS_IMAGE_UINT: XRAYS_RMS(unsigned int); break; case XRAYS_IMAGE_LONG: XRAYS_RMS(long); break; case XRAYS_IMAGE_FLOAT: XRAYS_RMS(float); break; } return rms; #undef XRAYS_RMS } void xrays_image_min_max(XRaysImage const *img, double *min, double *max) { #define XRAYS_MIN_MAX(type)\ do{\ int i;\ int nb_elements = img->width * img->height * img->len;\ type *data = img->data;\ *min = *max = data[0];\ for(i=1;i *max ? data[i] : *max;\ }\ } while(0); switch(img->type) { case XRAYS_IMAGE_SHORT: XRAYS_MIN_MAX(short int); break; case XRAYS_IMAGE_USHORT: XRAYS_MIN_MAX(unsigned short int); break; case XRAYS_IMAGE_INT: XRAYS_MIN_MAX(int); break; case XRAYS_IMAGE_UINT: XRAYS_MIN_MAX(unsigned int); break; case XRAYS_IMAGE_LONG: XRAYS_MIN_MAX(long); break; case XRAYS_IMAGE_FLOAT: XRAYS_MIN_MAX(float); break; } #undef XRAYS_MIN_MAX } void xrays_image_add(XRaysImage *img1, XRaysImage const *img2) { #define XRAYS_ADD(a, b)\ do{\ int i;\ int nb_elements = img1->width * img1->height * img1->len;\ a *data1 = img1->data;\ b *data2 = img2->data;\ for(i=0;itype) { case XRAYS_IMAGE_USHORT: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(unsigned short int, unsigned short int); break; case XRAYS_IMAGE_SHORT: case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_SHORT: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(short int, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_ADD(short int, short int); break; case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_UINT: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(unsigned int, unsigned short int); break; case XRAYS_IMAGE_UINT: XRAYS_ADD(unsigned int, unsigned int); break; case XRAYS_IMAGE_SHORT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_INT: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(int, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_ADD(int, short int); break; case XRAYS_IMAGE_UINT: XRAYS_ADD(int, unsigned int); break; case XRAYS_IMAGE_INT: XRAYS_ADD(int, int); break; case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_LONG: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(long, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_ADD(long, short int); break; case XRAYS_IMAGE_UINT: XRAYS_ADD(long, unsigned int); break; case XRAYS_IMAGE_INT: XRAYS_ADD(long, int); break; case XRAYS_IMAGE_LONG: XRAYS_ADD(long, long); break; case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_FLOAT: switch(img2->type) { case XRAYS_IMAGE_USHORT: XRAYS_ADD(float, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_ADD(float, short int); break; case XRAYS_IMAGE_UINT: XRAYS_ADD(float, unsigned int); break; case XRAYS_IMAGE_INT: XRAYS_ADD(float, int); break; case XRAYS_IMAGE_LONG: XRAYS_ADD(float, long); break; case XRAYS_IMAGE_FLOAT: XRAYS_ADD(float, float); break; } break; } #undef XRAYS_ADD } void xrays_image_div(XRaysImage *img, double d) { #define XRAYS_DIV(type)\ do{\ int i;\ int nb_elements = img->width * img->height * img->len;\ type *data = img->data;\ for(i=0;itype) { case XRAYS_IMAGE_SHORT: XRAYS_DIV(short int); break; case XRAYS_IMAGE_USHORT: XRAYS_DIV(unsigned short int); break; case XRAYS_IMAGE_INT: XRAYS_DIV(int); break; case XRAYS_IMAGE_UINT: XRAYS_DIV(unsigned int); break; case XRAYS_IMAGE_LONG: XRAYS_DIV(long); break; case XRAYS_IMAGE_FLOAT: XRAYS_DIV(float); break; } #undef XRAYS_DIV } void xrays_image_convert(XRaysImage *dst, XRaysImage const *src) { #define XRAYS_CONVERT(a, b)\ do{\ int i;\ int nb_elements = dst->width * dst->height * dst->len;\ a *data1 = dst->data;\ b *data2 = src->data;\ for(i=0;iwidth * dst->height * dst->len; \ a *data1 = dst->data; \ b *data2 = src->data; \ for(i=0;i= c && max <= d){\ XRAYS_CONVERT(a, b);\ }\ } while(0); /* same type */ if (dst->type == src->type) { xrays_image_copy(dst, src); return; } /* different type -> conversion */ if (!same_dims(dst, src)) return; switch(dst->type) { case XRAYS_IMAGE_USHORT: switch(src->type) { case XRAYS_IMAGE_USHORT: case XRAYS_IMAGE_SHORT: case XRAYS_IMAGE_UINT: XRAYS_CONVERT_MIN_MAX(unsigned short int, unsigned int, 0, 65535); break; case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: XRAYS_CONVERT_INTEGRAL(unsigned short int, float); break; } break; case XRAYS_IMAGE_SHORT: switch(src->type) { case XRAYS_IMAGE_USHORT: case XRAYS_IMAGE_SHORT: case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_UINT: switch(src->type) { case XRAYS_IMAGE_USHORT: XRAYS_CONVERT(unsigned int, unsigned short int); break; case XRAYS_IMAGE_SHORT: case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_INT: switch(src->type) { case XRAYS_IMAGE_USHORT: XRAYS_CONVERT(int, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_CONVERT(int, short int); break; case XRAYS_IMAGE_UINT: case XRAYS_IMAGE_INT: case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_LONG: switch(src->type) { case XRAYS_IMAGE_USHORT: XRAYS_CONVERT(long, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_CONVERT(long, short int); break; case XRAYS_IMAGE_UINT: XRAYS_CONVERT(long, unsigned int); break; case XRAYS_IMAGE_INT: XRAYS_CONVERT(long, int); break; case XRAYS_IMAGE_LONG: case XRAYS_IMAGE_FLOAT: break; } break; case XRAYS_IMAGE_FLOAT: switch(src->type) { case XRAYS_IMAGE_USHORT: XRAYS_CONVERT(float, unsigned short int); break; case XRAYS_IMAGE_SHORT: XRAYS_CONVERT(float, short int); break; case XRAYS_IMAGE_UINT: XRAYS_CONVERT(float, unsigned int); break; case XRAYS_IMAGE_INT: XRAYS_CONVERT(float, int); break; case XRAYS_IMAGE_LONG: XRAYS_CONVERT(float, long); break; case XRAYS_IMAGE_FLOAT: break; } break; } #undef XRAYS_CONVERT_MIN_MAX #undef XRAYS_CONVERT } hkl-5.1.7/contrib/cristal/xrays/xrays-droplet.c0000664000175000017500000004520614677222567020545 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frdric-Emmanuel */ #include #include #include #include #include #include #include "xrays/xrays-droplet.h" #include "xrays/xrays-macros.h" /* * Allocate the memory for the Droplet structure. */ XRaysDroplet *xrays_droplet_new(XRaysImage const *dark, double trigger, double seuil, double ADU_per_photon, int cosmic, int contour) { XRaysDroplet *droplet; if (dark->type != XRAYS_IMAGE_USHORT || !trigger || !seuil || !ADU_per_photon ) goto failed; droplet = malloc(sizeof(*droplet)); if(NULL == droplet) goto failed; droplet->nb_gouttes = 0; droplet->I_max = 0; droplet->I_tot = 0; droplet->I_traitement = 0; droplet->dark = dark; droplet->gtt = xrays_image_new(XRAYS_IMAGE_INT, 1, 1, 5 * dark->width * dark->height / 2); droplet->img = xrays_image_new(XRAYS_IMAGE_UINT, dark->width, dark->height, dark->len); droplet->indic = xrays_image_new(XRAYS_IMAGE_INT, dark->width, dark->height, dark->len); droplet->trigger = trigger; droplet->seuil = seuil; droplet->ADU_per_photon = ADU_per_photon; droplet->cosmic = cosmic; droplet->contour = contour; droplet->histogram = xrays_image_new(XRAYS_IMAGE_LONG, 10000, 1, 1); return droplet; failed: return NULL; } /* * destroy the XRaysDroplet structure */ void xrays_droplet_free(XRaysDroplet *droplet) { xrays_image_free(droplet->gtt); xrays_image_free(droplet->img); xrays_image_free(droplet->indic); xrays_image_free(droplet->histogram); free(droplet); } /* * This method compute the center of mass of a droplet. */ static void droplet_intensity_and_coordinates(XRaysDroplet *droplet, unsigned short int const *imgs, int **gtt, int **contour, float *intensity, unsigned int *x, unsigned int *y) { unsigned int index; unsigned short int const *dark; size_t width; int *indic; int *pgtt; int *pcont; int I_pixel; unsigned int ratio; dark = droplet->dark->data; indic = droplet->indic->data; width = droplet->dark->width; pgtt = *gtt; pcont = *contour; *intensity = 0.; *x = 0; *y = 0; // on calcule le centre de masse // ici le centre de la goutte do { pgtt += 1; index = abs(*pgtt) - 1; I_pixel = imgs[index] - dark[index]; if (I_pixel > 0) { *x += (index % width) * I_pixel; *y += (index / width) * I_pixel; *intensity += I_pixel; } } while (*pgtt >= 0); // ici on rajoute la bordure. if (droplet->contour) { do { pcont -= 1; index = abs(*pcont) - 1; I_pixel = imgs[index] - dark[index]; if (I_pixel>= 0) { ratio= abs(indic[index]); *x += ((index % width) * I_pixel) / ratio; *y += ((index / width) * I_pixel) / ratio; *intensity += I_pixel/ ratio; } } while (*pcont >= 0); } droplet->I_tot += *intensity; if (*intensity > droplet->I_max) droplet->I_max = *intensity; *gtt = pgtt; *contour = pcont; } /* * Traitement du fichier gtt afin d'en extraire les photons X. La premire * tape consiste dterminer le barricentre de chaques gouttes ainsi que * leur poids puis convertire ces gouttes en photons X en fonction de ce * poids. * Ici on rajoute ou pas la bordure. * La fonction retourne le pourcentage de l'energie restitu par le * traitement des gouttes */ static void droplet_treatment(XRaysDroplet *droplet, unsigned short int const *data) { int *pgtt1; int *pgtt2; int *pcont1; int *pcont2; int *histogram; int I_pixel; unsigned int i; unsigned int indice; unsigned int nb_photons; unsigned int x; unsigned int y; unsigned int ratio; int *indic; unsigned int *image_traite; unsigned short int const *imgs; unsigned short int const *dark; float reste; float I_gtt; size_t width; imgs = data; dark = droplet->dark->data; indic = droplet->indic->data; width = droplet->dark->width; image_traite = droplet->img->data; histogram = droplet->histogram->data; droplet->I_traitement = 0; droplet->I_tot = 0; droplet->I_max = 0; droplet->I_traitement = 0; // on traite les gouttes pour remplir l'image finale pgtt1 = pgtt2 = droplet->gtt->data; pgtt1--; pgtt2--; pcont1 = pcont2 = droplet->gtt->data; pcont1 += droplet->gtt->len; pcont2 += droplet->gtt->len; fprintf(stderr, " nb: %d", droplet->nb_gouttes); for(i=0; inb_gouttes; ++i) { x = y = I_gtt = 0; pgtt2 = pgtt1; pcont2 = pcont1; // on calcule le centre de masse // ici le centre de la goutte droplet_intensity_and_coordinates(droplet, data, &pgtt1, &pcont1, &I_gtt, &x, &y); // On range dans l'histogramme les ADU if(I_gtt < droplet->histogram->width){ histogram[(unsigned int)I_gtt] += 1; fprintf(stderr, " %f %d", I_gtt, histogram[(unsigned int)I_gtt]); } // on vrifie que la goutte n'est pas un cosmic if (droplet->cosmic && I_gtt > droplet->cosmic && I_gtt < 10*droplet->cosmic) { printf("cosmic: %f\n", I_gtt); continue; } // on convertit les gouttes en photons X if (I_gtt > droplet->seuil) { if (I_gtt <= 1.5 * droplet->ADU_per_photon) { indice = floor(0.5+(double)x / I_gtt) + width * floor(0.5+(double)y / I_gtt); image_traite[indice] += 1; droplet->I_traitement += 1; } else { // centre de la goutte do { pgtt2 += 1; indice = abs(*pgtt2) - 1; I_pixel = imgs[indice] - dark[indice]; nb_photons = I_pixel / droplet->ADU_per_photon; reste = (float)(I_pixel % droplet->ADU_per_photon) / droplet->ADU_per_photon; if (rand() / (RAND_MAX + 1.) < reste) nb_photons += 1; image_traite[indice] += nb_photons; droplet->I_traitement += nb_photons; } while(*pgtt2 >= 0); // contour if(droplet->contour) { do { pcont2 -= 1; indice = abs(*pcont2) - 1; I_pixel = imgs[indice] -dark[indice]; ratio = abs(indic[indice]); reste = (float)I_pixel / ratio / droplet->ADU_per_photon; if (rand() / (RAND_MAX + 1.) < reste) nb_photons = 1; else nb_photons = 0; image_traite[indice] += nb_photons; droplet->I_traitement += nb_photons; } while(*pcont2 >= 0); } } } } droplet->I_traitement *= droplet->ADU_per_photon; } /* * Cette fonction rempli le tableau gtt pour un niveau de trigger donn. Le * principe est simplement de remplir par le bas le tableau avec les * indice_ui32s des pixels appartenant aux diffrentes gouttes. On les spare * en multipliant l'indice_ui32 du dernier pixel par -1. On a ainsi un * enchainement de gouttes separes par un indice_ui32 ngatif. * On fait de mme avec les contours correspondant mais cette fois-ci par * le haut du tableau. * Lors de la recherche des gouttes et des contours, on utilise le tableau * indic qui a les mmes dimensions que l'image traiter et qui indique si * un pixel appartient dj une goutte, ou s'il s'agit d'un contour, combien * de gouttes voisines il appartient. */ static void find_droplets(XRaysDroplet *droplet, unsigned short int const *data, size_t size) { int i; size_t j; int nb_pixels; int *pgtt1_i32; int *pgtt2_i32; int *pcont; int intensite; int indice_ui32; int *indic; unsigned short int const *imgs; unsigned short int const *dark; indic = droplet->indic->data; dark = droplet->dark->data; imgs = data; nb_pixels = droplet->dark->width * droplet->dark->height; for(j=0; jindic); droplet->nb_gouttes = 0; pgtt1_i32 = pgtt2_i32 = pcont = droplet->gtt->data; pcont += droplet->gtt->len; for(i=0; itrigger) continue; // si oui on met l'indice_ui32 du pixel dans le tableau gtt *pgtt1_i32 = i + 1; droplet->nb_gouttes += 1; // on marque le pixel comme appartenant la goutte. indic[i] = droplet->nb_gouttes; // on explore les environs du pixel: attention on // inverse l'axe des y et on stock dans gtt les indice_ui32s numrot // partir de 1 et pas zro. pgtt2_i32 = pgtt1_i32; do { //x,y+1 indice_ui32 = *pgtt1_i32 - droplet->dark->width - 1; if (indice_ui32 < 0 ) goto _pixel_2; if (indic[indice_ui32] > 0) goto _pixel_2; intensite = imgs[indice_ui32] - dark[indice_ui32]; if (intensite < droplet->trigger) { pcont -= 1; *pcont = indice_ui32 + 1; indic[indice_ui32] -= 1; } else { pgtt2_i32 += 1; *pgtt2_i32 = indice_ui32 + 1; indic[indice_ui32] = droplet->nb_gouttes; } _pixel_2: //x+1,y indice_ui32 = *pgtt1_i32 + 1 - 1; if (!(indice_ui32 % droplet->dark->width)) goto _pixel_3; if (indic[indice_ui32] > 0) goto _pixel_3; intensite = imgs[indice_ui32] - dark[indice_ui32]; if (intensite < droplet->trigger) { pcont -= 1; *pcont = indice_ui32 + 1; indic[indice_ui32] -= 1; } else { pgtt2_i32 += 1; *pgtt2_i32 = indice_ui32 + 1; indic[indice_ui32] = droplet->nb_gouttes; } _pixel_3: //x,y-1 indice_ui32 = *pgtt1_i32 + droplet->dark->width - 1; if (indice_ui32 >= nb_pixels) goto _pixel_4; if (*(indic + indice_ui32) > 0) goto _pixel_4; intensite = imgs[indice_ui32] - dark[indice_ui32]; if (intensite < droplet->trigger) { pcont -= 1; *pcont = indice_ui32 + 1; indic[indice_ui32] -= 1; } else { pgtt2_i32 += 1; *pgtt2_i32 = indice_ui32 + 1; indic[indice_ui32] = droplet->nb_gouttes; } _pixel_4: //x-1,y indice_ui32 = *pgtt1_i32 - 1 - 1; if (*pgtt1_i32 % droplet->dark->width == 1) goto _last; if (*(indic + indice_ui32) > 0) goto _last; intensite = imgs[indice_ui32] - dark[indice_ui32]; if (intensite < droplet->trigger) { pcont -= 1; *pcont = indice_ui32 + 1; indic[indice_ui32] -= 1; } else { pgtt2_i32 += 1; *pgtt2_i32 = indice_ui32 + 1; indic[indice_ui32] = droplet->nb_gouttes; } _last: pgtt1_i32 += 1; } while(pgtt1_i32 <= pgtt2_i32); // on inverse la valeur des indice_ui32 dans le tableau // gtt pour marquer la fin d'une goutte et du // contour. *pgtt2_i32 *= -1; *pcont *= -1; } droplet_treatment(droplet, imgs); //droplet_treatment_fast(droplet, data); imgs += nb_pixels; } } int xrays_droplet_add_images(XRaysDroplet *droplet, XRaysImage const *imgs) { int res; if (imgs->type != XRAYS_IMAGE_USHORT) res = -1; else { find_droplets(droplet, imgs->data, imgs->len); res = 0; } return res; } void xrays_droplet_save_hdf5(const char *fn, const XRaysDroplet *droplet) { hid_t file_id; hid_t groupe_id; hid_t dataset_id; hid_t dataspace_id; herr_t status; hsize_t dims[2]; file_id = H5Fcreate(fn, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); groupe_id = H5Gcreate(file_id, "droplet", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); // create histogram dataset dims[0] = droplet->histogram->width; dataspace_id = H5Screate_simple(1, dims, NULL); dataset_id = H5Dcreate(groupe_id, "histogram", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, droplet->histogram->data); status = H5Dclose(dataset_id); status = H5Sclose(dataspace_id); // create dark dark dims[0] = droplet->dark->width; dims[1] = droplet->dark->height; dataspace_id = H5Screate_simple(2, dims, NULL); dataset_id = H5Dcreate(groupe_id, "dark", H5T_NATIVE_UINT16, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); status = H5Dwrite(dataset_id, H5T_NATIVE_UINT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, droplet->dark->data); status = H5Dclose(dataset_id); status = H5Sclose(dataspace_id); // create image dataset dims[0] = droplet->img->width; dims[1] = droplet->img->height; dataspace_id = H5Screate_simple(2, dims, NULL); dataset_id = H5Dcreate(groupe_id, "image", H5T_NATIVE_UINT32, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); status = H5Dwrite(dataset_id, H5T_NATIVE_UINT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, droplet->img->data); status = H5Dclose(dataset_id); status = H5Sclose(dataspace_id); // terminate access and free identifiers status = H5Gclose(groupe_id); status = H5Fclose(file_id); assert(status >= 0); } hkl-5.1.7/contrib/cristal/xrays/xrays-macros.h0000664000175000017500000000323014677222567020354 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #pragma once /* Guard C code in headers, while including them from C++ */ #ifdef __cplusplus # define XRAYS_BEGIN_DECLS extern "C" { # define XRAYS_END_DECLS } #else # define XRAYS_BEGIN_DECLS # define XRAYS_END_DECLS #endif // add the win32 portability part #if _MSC_VER && _MSC_VER <= 1200 # include # define INFINITY DBL_MAX # define M_PI 3.14159265358979323846264338328 # define M_PI_2 1.57079632679489661923132169164 #endif // common part #ifdef __GNUC__ # define NORETURN __attribute__((__noreturn__)) #else # define NORETURN # ifndef __attribute__ # define __attribute__(x) # endif #endif XRAYS_BEGIN_DECLS extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2))); XRAYS_END_DECLS hkl-5.1.7/contrib/cristal/xrays/usage.c0000664000175000017500000000344714677222567017035 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* * Copyright (C) Linus Torvalds, 2005-2006. * Copyright (C) Synchrotron Soleil 2007. */ #include #include #include #include "xrays-macros.h" static void report(const char *prefix, const char *err, va_list params) { fputs(prefix, stderr); vfprintf(stderr, err, params); fputs("\n", stderr); } static NORETURN void die_builtin(const char *err, va_list params) { report("fatal: ", err, params); exit(128); } /* If we are in a dlopen()ed .so write to a global variable would segfault * (ugh), so keep things static. */ static void (*die_routine)(const char *err, va_list params) NORETURN = die_builtin; void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN) { die_routine = routine; } void die(const char *err, ...) { va_list params; va_start(params, err); die_routine(err, params); va_end(params); } hkl-5.1.7/contrib/cristal/xrays/Makefile.in0000664000175000017500000005241415144640451017612 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to produce Makefile.in VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib/cristal/xrays ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libhkl_xrays_la_LIBADD = am_libhkl_xrays_la_OBJECTS = usage.lo xrays-droplet.lo xrays-image.lo \ xrays-image-spe.lo xrays-image-dat.lo libhkl_xrays_la_OBJECTS = $(am_libhkl_xrays_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/usage.Plo \ ./$(DEPDIR)/xrays-droplet.Plo ./$(DEPDIR)/xrays-image-dat.Plo \ ./$(DEPDIR)/xrays-image-spe.Plo ./$(DEPDIR)/xrays-image.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libhkl_xrays_la_SOURCES) DIST_SOURCES = $(libhkl_xrays_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -I.. \ -DPKGDATA=\""$(pkgdatadir)"\" \ -fPIC -DPIC \ $(CGLM_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = -version-info 0:0:0 \ $(CGLM_LIBS) \ $(GLIB_LIBS) \ $(HDF5_LIBS) -lm noinst_LTLIBRARIES = libhkl-xrays.la libhkl_xrays_la_SOURCES = \ usage.c \ xrays-droplet.c \ xrays-droplet.h \ xrays-image.c \ xrays-image.h \ xrays-image-spe.c \ xrays-image-spe.h \ xrays-image-dat.c \ xrays-macros.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/cristal/xrays/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/cristal/xrays/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libhkl-xrays.la: $(libhkl_xrays_la_OBJECTS) $(libhkl_xrays_la_DEPENDENCIES) $(EXTRA_libhkl_xrays_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libhkl_xrays_la_OBJECTS) $(libhkl_xrays_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usage.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xrays-droplet.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xrays-image-dat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xrays-image-spe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xrays-image.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/usage.Plo -rm -f ./$(DEPDIR)/xrays-droplet.Plo -rm -f ./$(DEPDIR)/xrays-image-dat.Plo -rm -f ./$(DEPDIR)/xrays-image-spe.Plo -rm -f ./$(DEPDIR)/xrays-image.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/usage.Plo -rm -f ./$(DEPDIR)/xrays-droplet.Plo -rm -f ./$(DEPDIR)/xrays-image-dat.Plo -rm -f ./$(DEPDIR)/xrays-image-spe.Plo -rm -f ./$(DEPDIR)/xrays-image.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/contrib/cristal/xrays/xrays-image.h0000664000175000017500000000513714677222567020162 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #pragma once #include #include "xrays-macros.h" XRAYS_BEGIN_DECLS typedef struct _XRaysImage XRaysImage; enum _XRaysImageFileType { XRAYS_IMAGE_FILE_SPE, XRAYS_IMAGE_FILE_DAT, XRAYS_IMAGE_FILE_UNKNOWN, }; enum _XRaysImageType { XRAYS_IMAGE_SHORT, XRAYS_IMAGE_USHORT, XRAYS_IMAGE_UINT, XRAYS_IMAGE_INT, XRAYS_IMAGE_FLOAT, XRAYS_IMAGE_LONG, }; typedef enum _XRaysImageType XRaysImageType; typedef enum _XRaysImageFileType XRaysImageFileType; struct _XRaysImage { XRaysImageType type; size_t width; size_t height; size_t len; size_t elem_size; void *data; }; extern XRaysImage* xrays_image_new(XRaysImageType type, size_t width, size_t height, size_t len); extern XRaysImage* xrays_image_new_copy(XRaysImage const *img); extern XRaysImage* xrays_image_from_file(char const *filename, size_t width, size_t height); extern XRaysImage* xrays_image_from_file_dat(FILE *f, size_t width, size_t height); extern void xrays_image_free(XRaysImage *img); extern void xrays_image_copy(XRaysImage *dst, XRaysImage const *src); extern int xrays_image_cmp(XRaysImage const *img1, XRaysImage const *img2); extern XRaysImage* xrays_image_attach(XRaysImageType type, size_t width, size_t height, size_t len, void* data); extern void xrays_image_detach(XRaysImage *img); extern void xrays_image_clear(XRaysImage *img); extern double xrays_image_rms(XRaysImage const *img); extern void xrays_image_min_max(XRaysImage const *img, double *min, double *max); extern void xrays_image_add(XRaysImage *img1, XRaysImage const *img2); extern void xrays_image_div(XRaysImage *img, double d); extern void xrays_image_convert(XRaysImage *dst, XRaysImage const *src); XRAYS_END_DECLS hkl-5.1.7/contrib/cristal/xrays/Makefile.am0000664000175000017500000000134014677222567017607 0ustar00piccapicca# Process this file with automake to produce Makefile.in AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -I.. \ -DPKGDATA=\""$(pkgdatadir)"\" \ -fPIC -DPIC \ $(CGLM_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = -version-info 0:0:0 \ $(CGLM_LIBS) \ $(GLIB_LIBS) \ $(HDF5_LIBS) -lm noinst_LTLIBRARIES = libhkl-xrays.la libhkl_xrays_la_SOURCES = \ usage.c \ xrays-droplet.c \ xrays-droplet.h \ xrays-image.c \ xrays-image.h \ xrays-image-spe.c \ xrays-image-spe.h \ xrays-image-dat.c \ xrays-macros.h # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/contrib/cristal/xrays/xrays-image-spe.h0000664000175000017500000002714514677222567020752 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #pragma once #include #include "xrays/xrays-image.h" XRAYS_BEGIN_DECLS #pragma pack(1) typedef struct { unsigned short int dioden; // 0 num of physical pixels (X axis) short int avgexp; // 2 number of accumulations per scan // if > 32767, set to -1 and // see lavgexp below (668) short int exposure; // 4 exposure time (in milliseconds) // if > 32767, set to -1 and unsigned short int xDimDet; // 6 Detector x dimension of chip short int mode; // 8 timing mode float exp_sec; // 10 alternative exposure, in secs. short int asyavg; // 14 number of asynchron averages short int asyseq; // 16 number of asynchron sequential unsigned short int yDimDet; // 18 y dimension of CCD or detector. char date[10]; // 20 date as MM/DD/YY short int ehour; // 30 Experiment Time: Hours (as binary) short int eminute; // 32 Experiment Time: Minutes(as binary) short int noscan; // 34 number of multiple scans // if noscan == -1 use lnoscan short int fastacc; // 36 short int seconds; // 38 Experiment Time: Seconds(as binary) short int DetType; // 40 CCD/DiodeArray type unsigned short int xdim; // 42 actual # of pixels on x axis short int stdiode; // 44 trigger diode float nanox; // 46 float calibdio[10]; // 50 calibration diodes char fastfile[16]; // 90 name of pixel control file short int asynen; // 106 asynchron enable flag 0 = off short int datatype; // 108 experiment data type // 0= FLOATING POINT // 1= LONG INTEGER // 2= INTEGER // 3= UNSIGNED INTEGER float calibnan[10]; // 110 calibration nanometer short int BackGrndApplied; // 150 set to 1 if background sub done short int astdiode; // 152 unsigned short int minblk; // 154 min. # of strips per skips unsigned short int numminblk; // 156 # of min-blocks before geo skps double calibpol[4]; // 158 calibration coefficients unsigned short int ADCrate; // 190 ADC rate unsigned short int ADCtype; // 192 ADC type unsigned short int ADCresolution; // 194 ADC resolution unsigned short int ADCbitAdjust; // 196 ADC bit adjust unsigned short int gain; // 198 gain char exprem[5][80]; // 200 experiment remarks unsigned short int geometric; // 600 geometric operations rotate 0x01 // reverse 0x02, flip 0x04 char xlabel[16]; // 602 Intensity display string unsigned short int cleans; // 618 cleans unsigned short int NumSkpPerCln; // 620 number of skips per clean. char califile[16]; // 622 calibration file name (CSMA) char bkgdfile[16]; // 638 background file name short int srccmp; // 654 number of source comp. diodes unsigned short int ydim; // 656 y dimension of raw data. short int scramble; // 658 0 = scrambled, 1 = unscrambled long lexpos; // 660 long exposure in milliseconds // used if exposure set to -1 long lnoscan; // 664 long num of scans // used if noscan set to -1 long lavgexp; // 668 long num of accumulations // used if avgexp set to -1 char stripfil[16]; // 672 stripe file (st130) char version[16]; // 688 version & date:"01.000 02/01/90" short int type; // 704 1 = new120 (Type II) // 2 = old120 (Type I ) // 3 = ST130 // 4 = ST121 // 5 = ST138 // 6 = DC131 (PentaMAX) // 7 = ST133 (MicroMAX/SpectroMax), // 8 = ST135 (GPIB) // 9 = VICCD // 10 = ST116 (GPIB) // 11 = OMA3 (GPIB) // 12 = OMA4 short int flatFieldApplied; // 706 Set to 1 if flat field was applied short int spare[8]; // 708 reserved short int kin_trig_mode; // 724 Kinetics Trigger Mode char empty[702]; // 726 EMPTY BLOCK FOR EXPANSION float clkspd_us; // 1428 Vert Clock Speed in micro-sec short int HWaccumFlag; // 1432 set to 1 if accum done by Hardware short int StoreSync; // 1434 set to 1 if store sync used. short int BlemishApplied; // 1436 set to 1 if blemish removal applied short int CosmicApplied; // 1438 set to 1 if cosmic ray removal done short int CosmicType; // 1440 if cosmic ray applied, this is type float CosmicThreshold; // 1442 Threshold of cosmic ray removal. long NumFrames; // 1446 number of frames in file. float MaxIntensity; // 1450 max short intensity of data (future) float MinIntensity; // 1454 min short intensity of data (future) char ylabel[16]; // 1458 y axis label. unsigned short int ShutterType; // 1474 shutter type. float shutterComp; // 1476 shutter compensation time. unsigned short int readoutMode; // 1480 Readout mode, full, kinetics, etc. unsigned short int WindowSize; // 1482 window size for kinetics only. unsigned short int clkspd; // 1484 clock speed for kinetics & // frame transfer. unsigned short int interface_type; // 1486 computer short interface (isa-taxi, // pci, eisa, etc.) unsigned long ioAdd1; // 1488 I/O address of short interface card. unsigned long ioAdd2; // 1492 if more than one address for card. unsigned long ioAdd3; // 1496 unsigned short int intLevel; // 1500 short interrupt level short interface card unsigned short int GPIBadd; // 1502 GPIB address (if used) unsigned short int ControlAdd; // 1504 GPIB controller address (if used) unsigned short int controllerNum; // 1506 if multiple controller system will // have controller # data came from. // (Future Item) unsigned short int SWmade; // 1508 Software which created this file short int NumROI; // 1510 number of ROIs used. if 0 assume 1 // 1512 - 1630 ROI information struct ROIinfo { // unsigned short int startx; // left x start value. unsigned short int endx; // right x value. unsigned short int groupx; // amount x is binned/grouped in hw. unsigned short int starty; // top y start value. unsigned short int endy; // bottom y value. unsigned short int groupy; // amount y is binned/grouped in hw. } ROIinfoblk[10]; // ROI Starting Offsets: // ROI 1 = 1512 // ROI 2 = 1524 // ROI 3 = 1536 // ROI 4 = 1548 // ROI 5 = 1560 // ROI 6 = 1572 // ROI 7 = 1584 // ROI 8 = 1596 // ROI 9 = 1608 // ROI 10 = 1620 char FlatField[120]; // 1632 Flat field file name. char background[120]; // 1752 Background sub. file name. char blemish[120]; // 1872 Blemish file name. float software_ver; // 1992 Software version. char UserInfo[1000]; // 1996-2995 user data. long WinView_id; // 2996 Set to 0x01234567L if file was // created by WinX struct xCalibration { double offset; // 3000 offset for absolute data scaling double factor; // 3008 factor for absolute data scaling char current_unit; // 3016 selected scaling unit char reserved1; // 3017 reserved char string[40]; // 3018 special string for scaling char reserved2[40]; // 3058 reserved char calib_valid; // 3098 flag if calibration is valid char input_unit; // 3099 current input units for // "calib_value" char polynom_unit; // 3100 linear UNIT and used // in the "polynom_coeff" char polynom_order; // 3101 ORDER of calibration POLYNOM char calib_count; // 3102 valid calibration data pairs double pixel_position[10]; // 3103 pixel pos. of calibration data double calib_value[10]; // 3183 calibration VALUE at above pos double polynom_coeff[6]; // 3263 polynom COEFFICIENTS double laser_position; // 3311 laser wavenumber for relativ WN char reserved3; // 3319 reserved unsigned char new_calib_flag; // 3320 If set to 200, valid label below char calib_label[81]; // 3321 Calibration label (NULL term'd) char expansion[87]; // 3402 Calibration Expansion area } xcalibration; struct yCalibration { double offset; // 3489 offset for absolute data scaling double factor; // 3497 factor for absolute data scaling char current_unit; // 3505 selected scaling unit char reserved1; // 3506 reserved char string[40]; // 3507 special string for scaling char reserved2[40]; // 3547 reserved char calib_valid; // 3587 flag if calibration is valid char input_unit; // 3588 current input units for // "calib_value" char polynom_unit; // 3589 linear UNIT and used // in the "polynom_coeff" char polynom_order; // 3590 ORDER of calibration POLYNOM char calib_count; // 3591 valid calibration data pairs double pixel_position[10]; // 3592 pixel pos. of calibration data double calib_value[10]; // 3672 calibration VALUE at above pos double polynom_coeff[6]; // 3752 polynom COEFFICIENTS double laser_position; // 3800 laser wavenumber for relativ WN char reserved3; // 3808 reserved unsigned char new_calib_flag; // 3809 If set to 200, valid label below char calib_label[81]; // 3810 Calibration label (NULL term'd) char expansion[87]; // 3891 Calibration Expansion area } ycalibration; char Istring[40]; // 3978 special Intensity scaling string char empty3[80]; // 4018 empty block to reach 4100 bytes short int lastvalue; // 4098 Always the LAST value in the header } WINXHEAD; #pragma pack() XRaysImage* xrays_image_spe_read(FILE *file); void xrays_image_spe_write(XRaysImage *img, FILE *file); XRAYS_END_DECLS hkl-5.1.7/contrib/cristal/xrays/xrays-droplet.h0000664000175000017500000000517414677222567020552 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frdric-Emmanuel */ #pragma once #include #include "xrays-image.h" XRAYS_BEGIN_DECLS typedef struct _XRaysDroplet XRaysDroplet; struct _XRaysDroplet { unsigned int nb_gouttes; float I_max; float I_tot; int I_traitement; XRaysImage const *dark; XRaysImage *gtt; XRaysImage *indic; XRaysImage *img; short int trigger; short int seuil; short int ADU_per_photon; int cosmic; int hist; int contour; int nb_images; int nb_pixels; XRaysImage *histogram; }; /* * Allocate the memory for the Gtt structure of data_size */ extern XRaysDroplet* xrays_droplet_new(XRaysImage const *dark, double trigger, double seuil, double ADU_per_photon, int cosmic, int contour); /* * destroy the Gtt structure */ extern void xrays_droplet_free(XRaysDroplet *droplet); /* * Cette fonction rempli le tableau gtt pour un niveau de trigger donn. Le * principe est simplement de remplir par le bas le tableau avec les * indice_ui32s des pixels appartenant aux diffrentes gouttes. On les spare * en multipliant l'indice_ui32 du dernier pixel par -1. On a ainsi un * enchainement de gouttes separes par un indice_ui32 ngatif. * On fait de mme avec les contours correspondant mais cette fois-ci par * le haut du tableau. * Lors de la recherche des gouttes et des contours, on utilise le tableau * indic qui a les mmes dimensions que l'image traiter et qui indique si * un pixel appartient dj une goutte, ou s'il s'agit d'un contour, combien * de gouttes voisines il appartient. */ extern int xrays_droplet_add_images(XRaysDroplet *droplet, XRaysImage const *img); extern void xrays_droplet_reset(XRaysDroplet *droplet); extern void xrays_droplet_save_hdf5(const char* filename, const XRaysDroplet *droplet); XRAYS_END_DECLS hkl-5.1.7/contrib/cristal/xrays/xrays-image-spe.c0000664000175000017500000000322514677222567020736 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frdric-Emmanuel */ #include "xrays-image-spe.h" XRaysImage* xrays_image_spe_read(FILE *file) { WINXHEAD header; XRaysImage *img; XRaysImageType type; rewind(file); fread(&header, sizeof(header), 1, file); switch (header.datatype){ case 0: type = XRAYS_IMAGE_FLOAT; break; case 1: type = XRAYS_IMAGE_INT; break; case 2: type = XRAYS_IMAGE_SHORT; break; case 3: type = XRAYS_IMAGE_USHORT; break; default: printf("mauvais format de donnes\n"); exit(0); break; } img = xrays_image_new(type, header.xdim, header.ydim, header.NumFrames); if (img) fread(img->data, img->elem_size, header.xdim * header.ydim * header.NumFrames, file); return img; } void xrays_image_spe_write(XRaysImage *img, FILE *file) {} hkl-5.1.7/contrib/cristal/Makefile.in0000664000175000017500000006045415144640451016447 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = little-data$(EXEEXT) subdir = contrib/cristal ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) little_data_SOURCES = little-data.c little_data_OBJECTS = little-data.$(OBJEXT) little_data_DEPENDENCIES = xrays/libhkl-xrays.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/little-data.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = little-data.c DIST_SOURCES = little-data.c RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ SUBDIRS = xrays . # Process this file with automake to produce Makefile.in AM_CFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -DPKGDATA=\""$(pkgdatadir)"\" \ -fPIC -DPIC \ $(CGLM_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(HDF5_CFLAGS) AM_LDFLAGS = \ $(CGLM_LIBS) \ $(GLIB_LIBS) \ $(HDF5_LIBS) little_data_LDADD = xrays/libhkl-xrays.la all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/cristal/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/cristal/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: $(am__rm_f) $(noinst_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) little-data$(EXEEXT): $(little_data_OBJECTS) $(little_data_DEPENDENCIES) $(EXTRA_little_data_DEPENDENCIES) @rm -f little-data$(EXEEXT) $(AM_V_CCLD)$(LINK) $(little_data_OBJECTS) $(little_data_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/little-data.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/little-data.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/little-data.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/contrib/cristal/little-data.c0000664000175000017500000001141314677222567016757 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2023 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include "xrays/xrays-droplet.h" #define FILENAME "/home/experiences/instrumentation/picca/Clair/scan-22046_andor3_balor.h5" #define DARK_PATH "/home/experiences/instrumentation/picca/Clair/RefDarkImage.dat" #define OUTPUT "/home/experiences/instrumentation/picca/Clair/droplet.hdf5" #define IMAGEPATH "/entry/instrument/balor/data" #define DIM0 3100 /* 3100 */ #define DIM1 4104 #define DIM2 4128 int main_1() { size_t i; const char *fn = FILENAME; const char *images_path = IMAGEPATH; herr_t err; hsize_t dims[] = {DIM0, DIM1, DIM2}; hsize_t start[] = {0, 0, 0}; hsize_t stride[] = {1, 1, 1}; hsize_t count[3] = {1, DIM1, DIM2}; hsize_t block[3] = {1, 1, 1};; uint16_t *arr; hid_t file_id; hid_t dataset_id; hid_t file_space_id; hid_t mem_space_id; XRaysDroplet *droplet; XRaysImage *dark = NULL; XRaysImage *img; XRaysImage *tmp; arr = malloc(dims[1] * dims[2] * sizeof(*arr)); if(arr == NULL){ fprintf(stdout, "Can not allocate array\n"); goto exit; } img = xrays_image_attach(XRAYS_IMAGE_USHORT, DIM2, DIM1, 1, arr); file_id = H5Fopen(fn, H5F_ACC_RDONLY, H5P_DEFAULT); if(file_id < 0){ fprintf(stdout, "Can not open file\n"); goto release_arr; } dataset_id = H5Dopen(file_id, images_path, H5P_DEFAULT); if(dataset_id < 0){ fprintf(stdout, "can not open dataset\n"); goto close_file; } mem_space_id = H5Screate_simple(2, &dims[1], &dims[1]); if(mem_space_id < 0){ fprintf(stdout, "Can not create memory dataspace\n"); goto close_dataset; } file_space_id = H5Dget_space(dataset_id); if(file_space_id<0){ fprintf(stdout, "Can not get dataset dataspace\n"); goto close_mem_space; } /* load the dark */ tmp = xrays_image_from_file(DARK_PATH, DIM1, DIM2); if (NULL == tmp){ fprintf(stdout, "Can no read the dark image!\n"); goto free_dark; } dark = xrays_image_new(XRAYS_IMAGE_USHORT, DIM1, DIM2, 1); xrays_image_convert(dark, tmp); xrays_image_free(tmp); droplet = xrays_droplet_new(dark, 23, 430, 645, 7000, 1); if(NULL == droplet){ fprintf(stdout, "Can not create the droplet\n"); goto free_droplet; } for(i=0; i. * * Copyright (C) 2010, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include #include "hkl3d-private.h" #include "hkl-geometry-private.h" #include "hkl-parameter-private.h" #include "btBulletCollisionCommon.h" #include "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h" /**************/ /* Hkl3DStats */ /**************/ double hkl3d_stats_get_collision_ms(const Hkl3DStats *self) { return self->collision.tv_sec*1000. + self->collision.tv_usec/1000.; } void hkl3d_stats_fprintf(FILE *f, const Hkl3DStats *self) { fprintf(f, "Hkl3DStats (transformation=%f ms, collision=%f ms)", self->transformation.tv_sec*1000. + self->transformation.tv_usec/1000., hkl3d_stats_get_collision_ms(self)); } /*************/ /* Hkl3DAxis */ /*************/ static Hkl3DAxis *hkl3d_axis_new(struct aiNode *node, const HklParameter *mparameter, const Hkl3DModel *model) { g_return_val_if_fail (nullptr != node, nullptr); size_t i; Hkl3DObject **object; Hkl3DAxis *self = g_new0 (Hkl3DAxis, 1); self->node = node; self->mparameter = mparameter; darray_init(self->objects); /* dos not own the objects */ for(i=0; imNumMeshes; ++i){ size_t idx = node->mMeshes[i]; darray_foreach(object, model->objects){ if ((*object)->mesh == idx){ darray_append(self->objects, *object); break; } } } return self; } static void hkl3d_axis_free(Hkl3DAxis *self) { if(!self) return; darray_free(self->objects); free(self); } void hkl3d_axis_fprintf(FILE *f, const Hkl3DAxis *self) { g_return_if_fail (nullptr != f); g_return_if_fail (nullptr != self); fprintf(f, "Hkl3DAxis (node=%p, mparameter=%p, objects=[", self->node, self->mparameter); for(size_t i=0; iobjects); ++i){ if(i) fprintf (f, ", "); fprintf (f, "%p", darray_item(self->objects, i)); } fprintf(f, "])"); } /*****************/ /* Hkl3DGeometry */ /*****************/ Hkl3DAxis *hkl3d_geometry_axis_get(Hkl3DGeometry *self, const char *name) { for(size_t i=0; igeometry->axes); ++i){ if (!strcmp(hkl_parameter_name_get(darray_item(self->geometry->axes, i)), name)) return darray_item(self->axes, i); } return nullptr; } static void add_axis_from_node(Hkl3DGeometry *self, const Hkl3DModel *model, const HklGeometry *geometry, struct aiNode *node) { size_t i; const HklParameter *parameter = hkl_geometry_axis_get(geometry, node->mName.data, NULL); darray_append(self->axes, hkl3d_axis_new(node, parameter, model)); for(i=0; imNumChildren; ++i){ add_axis_from_node(self, model, geometry, node->mChildren[i]); } } Hkl3DGeometry *hkl3d_geometry_new(const Hkl3DConfig *config, HklGeometry *geometry) { HklParameter **axis; Hkl3DGeometry *self = nullptr; Hkl3DModel **model; self = g_new0 (Hkl3DGeometry, 1); self->geometry = geometry; darray_init(self->axes); darray_foreach(model, config->models){ add_axis_from_node(self, *model, geometry, (*model)->scene->mRootNode); } return self; } void hkl3d_geometry_free(Hkl3DGeometry *self) { g_return_if_fail (NULL != self); Hkl3DAxis **axis; darray_foreach(axis, self->axes){ hkl3d_axis_free(*axis); } darray_free(self->axes); free(self); } static mat4s hkl_parameter_transformation_get(const HklParameter *self) { CGLM_ALIGN_MAT mat4s r = GLMS_MAT4_IDENTITY_INIT; HklParameterType type = hkl_parameter_type_get(self); match(type){ of(Parameter) { }; of(Rotation, axis_v) { CGLM_ALIGN_MAT vec3s axis = {{ (float)axis_v->data[0], (float)axis_v->data[1], (float)axis_v->data[2] }}; r = glms_rotate_make(self->_value, axis); }; of(RotationWithOrigin, axis_v, pivot_v) { CGLM_ALIGN_MAT vec3s pivot = {{ (float)pivot_v->data[0], (float)pivot_v->data[1], (float)pivot_v->data[2] }}; float angle = self->_value; CGLM_ALIGN_MAT vec3s axis = {{ (float)axis_v->data[0], (float)axis_v->data[1], (float)axis_v->data[2] }}; r = glms_rotate_atm(pivot, angle, axis); }; of(Translation, v_v) { CGLM_ALIGN_MAT vec3s v = {{ (float)v_v->data[0], (float)v_v->data[1], (float)v_v->data[2] }}; v = glms_vec3_scale(v, self->_value); r = glms_translate_make(v); }; } return r; } static mat4s hkl3d_axis_get_local_transformation(const Hkl3DAxis *self) { mat4s transformation; memcpy (transformation.raw, &self->node->mTransformation.a1, 16 * sizeof(float)); if (self->mparameter){ transformation = glms_mat4_mul (transformation, hkl_parameter_transformation_get(self->mparameter)); } return transformation; } static Hkl3DAxis *hkl3d_geometry_axis_get_by_node(const Hkl3DGeometry *self, const aiNode *node) { Hkl3DAxis **axis = nullptr; darray_foreach(axis, self->axes){ if ((*axis)->node == node) break; } return (*axis); } static mat4s hkl3d_axis_get_world_transformation(const Hkl3DAxis *self, const Hkl3DGeometry *geometry) { aiNode *node; mat4s transformation = hkl3d_axis_get_local_transformation(self); node = self->node->mParent; while (node){ Hkl3DAxis *pAxis = hkl3d_geometry_axis_get_by_node(geometry, node); if (nullptr != pAxis) transformation = glms_mat4_mul (hkl3d_axis_get_local_transformation(pAxis), transformation); node = node->mParent; } return transformation; } static void hkl3d_axis_apply_transformation_to_objects(Hkl3DAxis *self, const Hkl3DGeometry *geometry) { Hkl3DObject **object; mat4s transformation = hkl3d_axis_get_world_transformation (self, geometry); darray_foreach(object, self->objects){ (*object)->transformation = transformation; } } void hkl3d_geometry_apply_transformations(Hkl3DGeometry *self) { Hkl3DAxis **axis; darray_foreach(axis, self->axes){ hkl3d_axis_apply_transformation_to_objects(*axis, self); } } void hkl3d_geometry_fprintf(FILE *f, const Hkl3DGeometry *self) { g_return_if_fail (NULL != f); g_return_if_fail (NULL != self); fprintf(f, "Hkl3DGeometry (geometry=%p, axes=[", self->geometry); // TODO hkl_geometry_fprintf(f, self->geometry); for(size_t i=0; iaxes); ++i){ if(i) fprintf(f, ", "); hkl3d_axis_fprintf(f, darray_item(self->axes, i)); } fprintf(f, "])"); } hkl-5.1.7/hkl3d/hkl3d-object.cpp0000664000175000017500000001137415133711150015251 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include "hkl3d-private.h" #include "btBulletCollisionCommon.h" #include "BulletCollision/Gimpact/btGImpactShape.h" void ai_mesh_fprintf(FILE *f, const struct aiMesh *mesh, int i) { fprintf(f, "\n meshe %d \"%s\" (%p) (type %d) (%d vertices) (%d faces) (normales %p)", i, mesh->mName.data, mesh, mesh->mPrimitiveTypes, mesh->mNumVertices, mesh->mNumFaces, mesh->mNormals); } void ai_node_fprintf(FILE *f, const struct aiNode *node, int level) { unsigned int i; fprintf(f, "\n%*s - (node) %s (%d meshes) (%d child)", level, "", node->mName.data, node->mNumMeshes, node->mNumChildren); fprintf(f, "\n%*s transformation: %f %f %f %f", level, "", node->mTransformation.a1, node->mTransformation.a2, node->mTransformation.a3, node->mTransformation.a4); fprintf(f, "\n%*s %f %f %f %f", level, "", node->mTransformation.b1, node->mTransformation.b2, node->mTransformation.b3, node->mTransformation.b4); fprintf(f, "\n%*s %f %f %f %f", level, "", node->mTransformation.c1, node->mTransformation.c2, node->mTransformation.c3, node->mTransformation.c4); fprintf(f, "\n%*s %f %f %f %f", level, "", node->mTransformation.d1, node->mTransformation.d2, node->mTransformation.d3, node->mTransformation.d4); for(i=0; imNumMeshes; ++i){ fprintf(f, "\n%*s meshes %d", level, "", node->mMeshes[i]); } for(i=0; imNumChildren; ++i){ ai_node_fprintf(f, node->mChildren[i], level+2); } } void ai_scene_fprintf(FILE *f, const struct aiScene *scene) { unsigned int i; fprintf(f, "\nscene: (%p)", scene); fprintf(f, "\n%d animations", scene->mNumAnimations); fprintf(f, "\n%d cameras", scene->mNumCameras); fprintf(f, "\n%d lights", scene->mNumLights); fprintf(f, "\n%d materials", scene->mNumMaterials); fprintf(f, "\n%d meshes", scene->mNumMeshes); fprintf(f, "\n%d skeletons", scene->mNumSkeletons); fprintf(f, "\n%d textures", scene->mNumTextures); /* nodes */ ai_node_fprintf(f, scene->mRootNode, 0); /* models */ for(i=0; imNumMeshes; ++i){ const struct aiMesh *mesh = scene->mMeshes[i]; ai_mesh_fprintf(f, mesh, i); } } /***************/ /* Hkl3DObject */ /***************/ Hkl3DObject *hkl3d_object_new(Hkl3DModel *model, unsigned int mesh) { int i; GSList *faces; Hkl3DObject *self = nullptr; self = g_new0 (Hkl3DObject, 1); /* fill the hkl3d object structure. */ self->added = false; self->hide = false; self->is_colliding = false; self->mesh = mesh; self->model = model; self->movable = false; self->selected = false; self->transformation = GLMS_MAT4_IDENTITY; /* todo importe from the node */ /* OpenGL */ self->vao = 0; return self; } void hkl3d_object_free(Hkl3DObject *self) { if(!self) return; free(self); } static void matrix_fprintf(FILE *f, const float matrix[]) { for(uint i=0; i<4; ++i){ fprintf(f, "\n "); for(uint j=0; j<4; ++j){ fprintf(f, " %6.3f", matrix[4 * i + j]); } } } void hkl3d_object_transformation_set(Hkl3DObject *self, mat4s transformation) { g_return_if_fail (NULL != self); self->transformation = transformation; } bool hkl3d_object_hide_get(const Hkl3DObject *self) { return self->hide; } void hkl3d_object_hide_set(Hkl3DObject *self, bool hide) { g_return_if_fail (nullptr != self); self->hide = hide; } void hkl3d_object_fprintf(FILE *f, const Hkl3DObject *self) { GSList *faces; fprintf(f, "Hkl3dObject (", self); fprintf(f, "model=%p, ", self->model); fprintf(f, "mesh=%d, ", self->mesh); fprintf(f, "transformation=[TODO], "); /* glms_mat4_print (self->transformation, f); */ fprintf(f, "is_colliding=%d, ", self->is_colliding); fprintf(f, "hide=%d, ", self->hide); fprintf(f, "added=%d, ", self->added); fprintf(f, "selected=%d)", self->selected); } hkl-5.1.7/hkl3d/model.glsl0000664000175000017500000000613615133711150014257 0ustar00piccapiccaSHADER_VERSION_STRING #define NR_POINT_LIGHTS 4 #if defined(VERT_SHADER) S( out vec3 FragPos; out vec3 Normal; layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aNormal; uniform mat4 projection; uniform mat4 view; uniform mat4 model; void main() { gl_Position = projection * view * model * vec4(aPos, 1.0); FragPos = vec3(model * vec4(aPos, 1.0)); Normal = mat3(transpose(inverse(model))) * aNormal; } ); #elif defined(FRAG_SHADER) S( precision mediump float; out vec4 FragColor; struct Material { vec3 ambient; vec3 diffuse; vec3 specular; float shininess; }; struct DirLight { vec3 direction; vec3 ambient; vec3 diffuse; vec3 specular; }; struct PointLight { vec3 position; float constant; float linear; float quadratic; vec3 ambient; vec3 diffuse; vec3 specular; }; in vec3 FragPos; in vec3 Normal; uniform float alpha; uniform vec3 viewPos; uniform DirLight dirLight; uniform PointLight pointLights[NR_POINT_LIGHTS]; uniform Material material; // function prototypes vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir); vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir); void main() { // properties vec3 norm = normalize(Normal); vec3 viewDir = normalize(viewPos - FragPos); // phase 1: Directional lighting vec3 result = CalcDirLight(dirLight, norm, viewDir); // phase 2: Point lights for(int i = 0; i < NR_POINT_LIGHTS; i++) result += CalcPointLight(pointLights[i], norm, FragPos, viewDir); // phase 3: Spot light //result += CalcSpotLight(spotLight, norm, FragPos, viewDir); FragColor = vec4(result, alpha); } vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir) { vec3 lightDir = normalize(light.position - fragPos); // diffuse shading float diff = max(dot(normal, lightDir), 0.0); // specular shading vec3 reflectDir = reflect(-lightDir, normal); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); // attenuation float distance = length(light.position - fragPos); float attenuation = 1.0 / (light.constant + light.linear * distance + light.quadratic * (distance * distance)); // combine results vec3 ambient = light.ambient * material.ambient; vec3 diffuse = light.diffuse * diff * material.diffuse; vec3 specular = light.specular * spec * material.specular; ambient *= attenuation; diffuse *= attenuation; specular *= attenuation; return (ambient + diffuse + specular); } vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir) { vec3 lightDir = normalize(-light.direction); // diffuse shading float diff = max(dot(normal, lightDir), 0.0); // specular shading vec3 reflectDir = reflect(-lightDir, normal); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); // combine results vec3 ambient = light.ambient * material.ambient; vec3 diffuse = light.diffuse * diff * material.diffuse; vec3 specular = light.specular * spec * material.specular; return (ambient + diffuse + specular); }; ); #endif #undef VERT_SHADER #undef FRAG_SHADER hkl-5.1.7/hkl3d/hkl3d.cpp0000664000175000017500000000641215143160757014016 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include #include "hkl3d-private.h" #include "hkl-geometry-private.h" /*********/ /* HKL3D */ /*********/ static void hkl3d_apply_transformations(Hkl3D *self) { struct timeval debut, fin; /* set the right transformation of each objects and get numbers */ gettimeofday(&debut, nullptr); hkl3d_geometry_apply_transformations (self->geometry); hkl3d_bullet_apply_transformations (self->bullet); gettimeofday(&fin, nullptr); timersub(&fin, &debut, &self->stats.transformation); } /** * Hkl3D::Hkl3D: * @filename: * @geometry: * * * * Returns: **/ Hkl3D *hkl3d_new(const char *filename, HklGeometry *geometry) { g_return_val_if_fail (nullptr != filename, nullptr); g_return_val_if_fail (nullptr != geometry, nullptr); Hkl3D *self = nullptr; self = g_new0 (Hkl3D, 1); g_return_val_if_fail (nullptr != self, nullptr); self->config = hkl3d_config_new(filename); self->geometry = hkl3d_geometry_new(self->config, geometry); self->bullet = hkl3d_bullet_new(self->geometry); return self; } void hkl3d_free(Hkl3D *self) { hkl3d_bullet_free (self->bullet); hkl3d_geometry_free (self->geometry); hkl3d_config_free (self->config); free (self); } int hkl3d_is_colliding(Hkl3D *self) { bool res; int numManifolds; struct timeval debut, fin; Hkl3DModel **model; Hkl3DObject **object; /* apply geometry transformation */ hkl3d_apply_transformations(self); /* perform the collision detection and get numbers */ gettimeofday(&debut, nullptr); res = hkl3d_bullet_perform_collision(self->bullet, self->config); gettimeofday(&fin, nullptr); timersub(&fin, &debut, &self->stats.collision); return res; } void hkl3d_get_collision_coordinates(Hkl3D *self, int manifold, int contact, double *xa, double *ya, double *za, double *xb, double *yb, double *zb) { return hkl3d_bullet_get_collision_coordinates(self->bullet, manifold, contact, xa, ya, za, xb, yb, zb); } void hkl3d_fprintf(FILE *f, const Hkl3D *self) { fprintf(f, "Hkl3d ("); fprintf(f, "geometry="); hkl3d_geometry_fprintf(f, self->geometry); fprintf(f, ", stats="); hkl3d_stats_fprintf(f, &self->stats); fprintf(f, ", config="); hkl3d_config_fprintf(f, self->config); fprintf(f, ", bullet="); hkl3d_bullet_fprintf(f, self->bullet); fprintf(f, ")"); } hkl-5.1.7/hkl3d/hkl3d-bullet.cpp0000664000175000017500000002520015143160757015277 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include "hkl3d-private.h" #include "btBulletCollisionCommon.h" #include "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h" #include "BulletCollision/Gimpact/btGImpactShape.h" class Hkl3DDebug : public btIDebugDraw { void drawLine(const btVector3& from, const btVector3& to, const btVector3& color) { GLfloat vertexes[] = { from.x(), from.y(), from.z(), color.x(), color.y(), color.z(), to.x(), to.y(), to.z(), color.x(), color.y(), color.z(), }; GLuint vbo = 0; glGenBuffers( 1, &vbo ); glBindBuffer( GL_ARRAY_BUFFER, vbo ); glBufferData( GL_ARRAY_BUFFER, (6 * 2) * sizeof( float ), vertexes, GL_STATIC_DRAW ); GLuint vao = 0; glGenVertexArrays( 1, &vao ); glBindVertexArray( vao ); glVertexAttribPointer (0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof (GLfloat), NULL ); glEnableVertexAttribArray( 0 ); glVertexAttribPointer (1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof (GLfloat), (void *)(3 * sizeof(GLfloat)) ); glEnableVertexAttribArray( 1 ); glDrawArrays (GL_LINES, 0, 2 * 1); glDeleteBuffers(1, &vbo); glDeleteVertexArrays(1, &vao); } void reportErrorWarning(const char* warningString) { fprintf (stdout, "%s\n", warningString); }; void draw3dText(const btVector3& location, const char* textString) { fprintf (stdout, "%s\n", textString); }; void setDebugMode(int debugMode) {}; int getDebugMode() const { return DBG_DrawWireframe | DBG_DrawAabb | DBG_DrawContactPoints | DBG_NoDeactivation; } void drawContactPoint(const btVector3& PointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime, const btVector3& color) { drawSphere (PointOnB, 0.02, color); drawLine (PointOnB, PointOnB + normalOnB * distance, color); }; }; void hkl3d_bullet_gl_draw_debug (Hkl3DBullet *self) { self->_btWorld->debugDrawWorld(); } /*********************/ /* Hkl3DBulletObject */ /*********************/ static btTriangleMesh *trimesh_from_axis(Hkl3DAxis *axis) { unsigned int i; Hkl3DObject **object; btTriangleMesh *trimesh; trimesh = new btTriangleMesh(); int mNumVertices = 0; darray_foreach (object, axis->objects){ const struct aiMesh *mesh = (*object)->model->scene->mMeshes[(*object)->mesh]; mNumVertices += mesh->mNumVertices; } trimesh->preallocateVertices(mNumVertices); darray_foreach (object, axis->objects){ const struct aiMesh *mesh = (*object)->model->scene->mMeshes[(*object)->mesh]; for(i=0; imNumFaces; ++i){ btVector3 vertex0 (mesh->mVertices[mesh->mFaces[i].mIndices[0]].x, mesh->mVertices[mesh->mFaces[i].mIndices[0]].y, mesh->mVertices[mesh->mFaces[i].mIndices[0]].z); btVector3 vertex1 (mesh->mVertices[mesh->mFaces[i].mIndices[1]].x, mesh->mVertices[mesh->mFaces[i].mIndices[1]].y, mesh->mVertices[mesh->mFaces[i].mIndices[1]].z); btVector3 vertex2 (mesh->mVertices[mesh->mFaces[i].mIndices[2]].x, mesh->mVertices[mesh->mFaces[i].mIndices[2]].y, mesh->mVertices[mesh->mFaces[i].mIndices[2]].z); trimesh->addTriangle(vertex0, vertex1, vertex2, false); } } return trimesh; } static btCollisionShape* shape_from_trimesh(btTriangleMesh *trimesh, int movable) { btCollisionShape* shape; /* * create the bullet shape depending on the static status or not of the piece * static : do not move * movable : connected to a HklGeometry axis. */ if (movable >= 0){ shape = dynamic_cast(new btGImpactMeshShape(trimesh)); shape->setMargin(btScalar(0)); shape->setLocalScaling(btVector3(1,1,1)); /* maybe usefull for softbodies (useless for now) */ (dynamic_cast(shape))->postUpdate(); /* needed for the collision and must be call after the postUpdate (doc) */ (dynamic_cast(shape))->updateBound(); }else{ shape = dynamic_cast(new btBvhTriangleMeshShape (trimesh, true)); shape->setMargin(btScalar(0)); shape->setLocalScaling(btVector3(1,1,1)); } return shape; } static btCollisionObject * btObject_from_shape(btCollisionShape* shape) { btCollisionObject *btObject; /* create the Object and add the shape */ btObject = new btCollisionObject(); btObject->setCollisionShape(shape); btObject->activate(true); return btObject; } static Hkl3DBulletObject * hkl3d_bullet_object_new(Hkl3DAxis *axis) { Hkl3DBulletObject *self = nullptr; if (darray_size(axis->objects) > 0){ self = g_new0 (Hkl3DBulletObject, 1); self->axis = axis; self->object = darray_item(axis->objects, 0); self->meshes = trimesh_from_axis(axis); self->btShape = shape_from_trimesh(self->meshes, false); self->btObject = btObject_from_shape(self->btShape); } return self; } void hkl3d_bullet_object_free(Hkl3DBulletObject *self) { if(self->btObject){ delete self->btObject; } if(self->btShape){ delete self->btShape; } if(self->meshes){ delete self->meshes; } } void hkl3d_bullet_object_fprintf(FILE *f, const Hkl3DBulletObject *self) { GSList *faces; fprintf (f, "Hkl3dBulletObject (", self); fprintf (f, "axis=%p, ", self->axis); fprintf (f, "object=%p, ", self->object); fprintf (f, "object->is_colliding=%d, ", self->object->is_colliding); fprintf (f, "btObject=%p, ", self->btObject); fprintf (f, "btShape=%p, ", self->btShape); fprintf (f, "meshes=%p)", self->meshes); } /***************/ /* Hkl3DBullet */ /***************/ Hkl3DBullet *hkl3d_bullet_new(const Hkl3DGeometry *geometry) { Hkl3DBullet *self = g_new0 (Hkl3DBullet, 1); Hkl3DAxis **axis; Hkl3DObject **object; /* initialize the bullet part */ self->_btCollisionConfiguration = new btDefaultCollisionConfiguration(); self->_btDispatcher = new btCollisionDispatcher(self->_btCollisionConfiguration); btGImpactCollisionAlgorithm::registerAlgorithm(self->_btDispatcher); btVector3 worldAabbMin(-1000,-1000,-1000); btVector3 worldAabbMax( 1000, 1000, 1000); self->_btBroadphase = new btAxisSweep3(worldAabbMin, worldAabbMax); self->_btWorld = new btCollisionWorld(self->_btDispatcher, self->_btBroadphase, self->_btCollisionConfiguration); auto debug = new Hkl3DDebug(); self->_btWorld->setDebugDrawer (debug); /* populate the collision world with all objects of the geometry */ darray_init(self->bobjects); darray_foreach(axis, geometry->axes){ Hkl3DBulletObject *bobject = hkl3d_bullet_object_new(*axis); if (nullptr != bobject){ darray_append(self->bobjects, bobject); self->_btWorld->addCollisionObject(bobject->btObject); } } return self; } void hkl3d_bullet_free(Hkl3DBullet *self) { Hkl3DBulletObject **bobject; darray_foreach(bobject, self->bobjects){ self->_btWorld->removeCollisionObject((*bobject)->btObject); hkl3d_bullet_object_free (*bobject); } darray_free(self->bobjects); if (self->_btWorld) delete self->_btWorld; if (self->_btBroadphase) delete self->_btBroadphase; if (self->_btDispatcher) delete self->_btDispatcher; if (self->_btCollisionConfiguration) delete self->_btCollisionConfiguration; } void hkl3d_bullet_apply_transformations(Hkl3DBullet *self) { Hkl3DBulletObject **bobject; darray_foreach(bobject, self->bobjects){ (*bobject)->btObject->getWorldTransform().setFromOpenGLMatrix( &(*bobject)->object->transformation.raw[0][0] ); } } bool hkl3d_bullet_perform_collision (Hkl3DBullet *self, Hkl3DConfig *config) { int i; int numManifolds; Hkl3DObject **object; Hkl3DBulletObject **bobject; self->_btWorld->performDiscreteCollisionDetection(); self->_btWorld->updateAabbs(); numManifolds = self->_btDispatcher->getNumManifolds(); fprintf (stdout, "numManifolds=%d\n", numManifolds); /* update Hkl3DObject collision from manifolds */ darray_foreach(bobject, self->bobjects){ int is_colliding = FALSE; for(i=0; i_btDispatcher->getManifoldByIndexInternal(i); is_colliding |= (*bobject)->btObject == manifold->getBody0(); is_colliding |= (*bobject)->btObject == manifold->getBody1(); } darray_foreach (object, (*bobject)->axis->objects) { (*object)->is_colliding = is_colliding; } } for(i=0; i_btDispatcher->getManifoldByIndexInternal(i); darray_foreach(bobject, self->bobjects){ if (manifold->getBody0() == (*bobject)->btObject) break; } Hkl3DAxis *axis0 = (*bobject)->axis; darray_foreach(bobject, self->bobjects){ if (manifold->getBody1() == (*bobject)->btObject) break; } Hkl3DAxis *axis1 = (*bobject)->axis; fprintf (stdout, "manifold %d: obj0=\"%s\" vs obj1=\"%s\"\n", i, axis0->node->mName.data, axis1->node->mName.data); } // hkl3d_bullet_fprintf(stdout, self); return numManifolds != 0; } void hkl3d_bullet_get_collision_coordinates(const Hkl3DBullet *self, int manifold, int contact, double *xa, double *ya, double *za, double *xb, double *yb, double *zb) { btPersistentManifold *contactManifold; contactManifold = self->_btDispatcher->getManifoldByIndexInternal(manifold); btManifoldPoint & pt = contactManifold->getContactPoint(contact); btVector3 ptA = pt.getPositionWorldOnA(); btVector3 ptB = pt.getPositionWorldOnB(); *xa = ptA.x(); *ya = ptA.y(); *za = ptA.z(); *xb = ptB.x(); *yb = ptB.y(); *zb = ptB.z(); } void hkl3d_bullet_fprintf(FILE *f, const Hkl3DBullet *self) { int i = 0; Hkl3DBulletObject **bobject; fprintf(f, "Hkl3DBullet ("); fprintf(f, "btCollisionConfiguration=%p", self->_btCollisionConfiguration); fprintf(f, ", btBroadphase=%p", self->_btBroadphase); fprintf(f, ", btWorld=%p", self->_btWorld); fprintf(f, ", btDispatcher=%p)", self->_btDispatcher); fprintf(f, ", bobjects=["); darray_foreach(bobject, self->bobjects){ if (i++) fprintf(f, ", "); hkl3d_bullet_object_fprintf(f, *bobject); } fprintf(f , "])\n"); } hkl-5.1.7/hkl3d/Makefile.in0000664000175000017500000005374315144640451014356 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to produce Makefile.in VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = hkl3d ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libhkl3d_la_DEPENDENCIES = $(top_builddir)/hkl/libhkl-private.la am_libhkl3d_la_OBJECTS = hkl3d.lo hkl3d-bullet.lo hkl3d-config.lo \ hkl3d-geometry.lo hkl3d-gl.lo hkl3d-model.lo hkl3d-object.lo libhkl3d_la_OBJECTS = $(am_libhkl3d_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/hkl3d-bullet.Plo \ ./$(DEPDIR)/hkl3d-config.Plo ./$(DEPDIR)/hkl3d-geometry.Plo \ ./$(DEPDIR)/hkl3d-gl.Plo ./$(DEPDIR)/hkl3d-model.Plo \ ./$(DEPDIR)/hkl3d-object.Plo ./$(DEPDIR)/hkl3d.Plo am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libhkl3d_la_SOURCES) DIST_SOURCES = $(libhkl3d_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ AM_CFLAGS = \ -DPKGDATA=\""$(pkgdatadir)"\" \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -I$(top_srcdir)/hkl3d \ -I$(top_srcdir)/hkl3d/bullet/src\ $(ASSIMP_CFLAGS) \ $(BULLET_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(EPOXY_CFLAGS) \ $(GLIB_CFLAGS) \ $(YAML_CFLAGS) AM_CXXFLAGS = $(AM_CFLAGS) AM_LDFLAGS = -version-info 0:0:0 \ $(ASSIMP_LIBS) \ $(BULLET_LIBS) \ $(EPOXY_LIBS) \ $(GLIB_LIBS) \ $(YAML_LIBS) noinst_LTLIBRARIES = libhkl3d.la libhkl3d_la_SOURCES = \ hkl3d.cpp \ hkl3d-bullet.cpp \ hkl3d-config.cpp \ hkl3d-geometry.cpp \ hkl3d-gl.cpp \ hkl3d-model.cpp \ hkl3d-object.cpp libhkl3d_la_LIBADD = \ $(top_builddir)/hkl/libhkl-private.la noinst_HEADERS = hkl3d.h hkl3d-private.h bullet.glsl model.glsl all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hkl3d/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu hkl3d/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -$(am__rm_f) $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libhkl3d.la: $(libhkl3d_la_OBJECTS) $(libhkl3d_la_DEPENDENCIES) $(EXTRA_libhkl3d_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libhkl3d_la_OBJECTS) $(libhkl3d_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-bullet.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-config.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-geometry.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-gl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-model.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d-object.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl3d.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/hkl3d-bullet.Plo -rm -f ./$(DEPDIR)/hkl3d-config.Plo -rm -f ./$(DEPDIR)/hkl3d-geometry.Plo -rm -f ./$(DEPDIR)/hkl3d-gl.Plo -rm -f ./$(DEPDIR)/hkl3d-model.Plo -rm -f ./$(DEPDIR)/hkl3d-object.Plo -rm -f ./$(DEPDIR)/hkl3d.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/hkl3d-bullet.Plo -rm -f ./$(DEPDIR)/hkl3d-config.Plo -rm -f ./$(DEPDIR)/hkl3d-geometry.Plo -rm -f ./$(DEPDIR)/hkl3d-gl.Plo -rm -f ./$(DEPDIR)/hkl3d-model.Plo -rm -f ./$(DEPDIR)/hkl3d-object.Plo -rm -f ./$(DEPDIR)/hkl3d.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(CXXCOMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/hkl3d/hkl3d-gl.cpp0000664000175000017500000002741515143160757014424 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include #include #include #include #include #include #include #include #include #include "hkl3d-private.h" #include "hkl-geometry-private.h" #define SHADER_VERSION_STRING "#version 300 es\n" #define _STRINGIFY(...) #__VA_ARGS__ #define S(...) _STRINGIFY(__VA_ARGS__) #define VIEWPOS_DEFAULT {{0, 0.5, 0}} /**********/ /* Shader */ /**********/ static void set_uniform_mat4s (Shader *s, const char *name, mat4s m) { GLuint loc = glGetUniformLocation (s->program, name); glUniformMatrix4fv(loc, 1, GL_FALSE, m.raw[0]); } static void set_uniform_vec3sv (Shader *s, const char *name, vec3s v) { GLuint loc = glGetUniformLocation (s->program, name); glUniform3fv(loc, 1, v.raw); } static void set_uniform_make_vec3s (Shader *s, const char *name, float x, float y, float z) { CGLM_ALIGN_MAT vec3s v = {{x, y, z}}; set_uniform_vec3sv(s, name, v); } static void set_uniform_float(Shader *s, const char *name, float x) { GLuint loc = glGetUniformLocation (s->program, name); glUniform1f(loc, x); } static Shader init_shader(const char *vert_src, const char *frag_src) { GLuint p; GLuint vs = glCreateShader (GL_VERTEX_SHADER); glShaderSource (vs, 1, &vert_src, NULL ); glCompileShader (vs); GLuint fs = glCreateShader (GL_FRAGMENT_SHADER); glShaderSource (fs, 1, &frag_src, NULL ); glCompileShader (fs); p = glCreateProgram(); glAttachShader (p, vs); glAttachShader (p, fs); glLinkProgram (p); Shader shader = { .program = p }; glDeleteShader (fs); glDeleteShader (vs); return shader; } static Shader init_shader_bullet() { static const char* bullet_vert = #define VERT_SHADER #include "bullet.glsl" ; static const char* bullet_frag = #define FRAG_SHADER #include "bullet.glsl" ; Shader shader = init_shader (bullet_vert, bullet_frag); glUseProgram (shader.program); /* projection */ CGLM_ALIGN_MAT mat4s projection = GLMS_MAT4_IDENTITY_INIT; set_uniform_mat4s(&shader, "projection", projection); /* view */ CGLM_ALIGN_MAT vec3s viewPos = VIEWPOS_DEFAULT; CGLM_ALIGN_MAT mat4s view = GLMS_MAT4_IDENTITY_INIT; CGLM_ALIGN_MAT vec3s center = GLMS_VEC3_ZERO_INIT; CGLM_ALIGN_MAT vec3s up = {{0, 0, 1}}; view = glms_lookat(viewPos, center, up); set_uniform_mat4s(&shader, "view", view); glUseProgram (0); return shader; } static Shader init_shader_model() { static const char* model_vert = #define VERT_SHADER #include "model.glsl" ; static const char* model_frag = #define FRAG_SHADER #include "model.glsl" ; Shader shader = init_shader (model_vert, model_frag); glUseProgram (shader.program); /* projection */ CGLM_ALIGN_MAT mat4s projection = GLMS_MAT4_IDENTITY_INIT; /* projection = glms_perspective (glm_rad(45), 1, 0.1, 100); */ set_uniform_mat4s(&shader, "projection", projection); /* view position */ CGLM_ALIGN_MAT vec3s viewPos = VIEWPOS_DEFAULT; set_uniform_vec3sv(&shader, "viewPos", viewPos); /* view */ CGLM_ALIGN_MAT mat4s view = GLMS_MAT4_IDENTITY_INIT; CGLM_ALIGN_MAT vec3s center = GLMS_VEC3_ZERO_INIT; CGLM_ALIGN_MAT vec3s up = {{0, 0, 1}}; view = glms_lookat(viewPos, center, up); set_uniform_mat4s(&shader, "view", view); /* default model */ CGLM_ALIGN_MAT mat4s model = GLMS_MAT4_IDENTITY_INIT; set_uniform_mat4s(&shader, "model", model); /* dir light */ set_uniform_make_vec3s(&shader, "dirLight.direction", -0.2, -1.0, -0.3); set_uniform_make_vec3s(&shader, "dirLight.ambient", 0.05, 0.05, 0.05); set_uniform_make_vec3s(&shader, "dirLight.diffuse", 0.4, 0.4, 0.4); set_uniform_make_vec3s(&shader, "dirLight.specular", 0.5, 0.5, 0.5); /* point light 0 */ set_uniform_make_vec3s(&shader, "pointLights[0].position", 5, 5, 0); set_uniform_make_vec3s(&shader, "pointLights[0].ambient", 0.05, 0.05, 0.05); set_uniform_make_vec3s(&shader, "pointLights[0].diffuse", 0.8, 0.8, 0.8); set_uniform_make_vec3s(&shader, "pointLights[0].specular", 1.0, 1.0, 1.0); set_uniform_float(&shader, "pointLights[0].constant", 1.0); set_uniform_float(&shader, "pointLights[0].linear", 0.09); set_uniform_float(&shader, "pointLights[0].quadratic", 0.032); /* point light 1 */ set_uniform_make_vec3s(&shader, "pointLights[1].position", -5, 5, 0); set_uniform_make_vec3s(&shader, "pointLights[1].ambient", 0.05, 0.05, 0.05); set_uniform_make_vec3s(&shader, "pointLights[1].diffuse", 0.8, 0.8, 0.8); set_uniform_make_vec3s(&shader, "pointLights[1].specular", 1.0, 1.0, 1.0); set_uniform_float(&shader, "pointLights[1].constant", 1.0); set_uniform_float(&shader, "pointLights[1].linear", 0.09); set_uniform_float(&shader, "pointLights[1].quadratic", 0.032); /* point light 2 */ set_uniform_make_vec3s(&shader, "pointLights[2].position", 5, -5, 0); set_uniform_make_vec3s(&shader, "pointLights[2].ambient", 0.05, 0.05, 0.05); set_uniform_make_vec3s(&shader, "pointLights[2].diffuse", 0.8, 0.8, 0.8); set_uniform_make_vec3s(&shader, "pointLights[2].specular", 1.0, 1.0, 1.0); set_uniform_float(&shader, "pointLights[2].constant", 1.0); set_uniform_float(&shader, "pointLights[2].linear", 0.09); set_uniform_float(&shader, "pointLights[2].quadratic", 0.032); /* point light 3 */ set_uniform_make_vec3s(&shader, "pointLights[3].position", -5, -5, 0); set_uniform_make_vec3s(&shader, "pointLights[3].ambient", 0.05, 0.05, 0.05); set_uniform_make_vec3s(&shader, "pointLights[3].diffuse", 0.8, 0.8, 0.8); set_uniform_make_vec3s(&shader, "pointLights[3].specular", 1.0, 1.0, 1.0); set_uniform_float(&shader, "pointLights[3].constant", 1.0); set_uniform_float(&shader, "pointLights[3].linear", 0.09); set_uniform_float(&shader, "pointLights[3].quadratic", 0.032); glUseProgram (0); return shader; } /***********************/ /* Hkl3D OpenGL model */ /***********************/ static void hkl3d_gl_draw_object(const Hkl3DObject *object, Shader *shader) { static unsigned int n_vec3 = 3; const struct aiScene *scene = object->model->scene; const struct aiMesh *mesh = scene->mMeshes[object->mesh]; CGLM_ALIGN_MAT vec3s ambient = GLM_VEC3_ZERO_INIT; CGLM_ALIGN_MAT vec3s diffuse = GLM_VEC3_ZERO_INIT; CGLM_ALIGN_MAT vec3s specular = GLM_VEC3_ZERO_INIT; GLfloat shininess = 12; GLfloat alpha = object->is_colliding == 0 ? 1.0 : 0.5;; const struct aiMaterial *material = scene->mMaterials[mesh->mMaterialIndex]; aiGetMaterialFloatArray(material, AI_MATKEY_COLOR_AMBIENT, ambient.raw, &n_vec3); aiGetMaterialFloatArray(material, AI_MATKEY_COLOR_DIFFUSE, diffuse.raw, &n_vec3); aiGetMaterialFloatArray(material, AI_MATKEY_COLOR_SPECULAR, specular.raw, &n_vec3); aiGetMaterialFloat(material, AI_MATKEY_SHININESS_STRENGTH, &shininess); /* set the uniforms */ set_uniform_mat4s(shader, "model", object->transformation); set_uniform_vec3sv(shader, "material.ambient", ambient); set_uniform_vec3sv(shader, "material.diffuse", diffuse); set_uniform_vec3sv(shader, "material.specular", specular); set_uniform_float(shader, "material.shininess", shininess); set_uniform_float(shader, "alpha", alpha); glBindVertexArray (object->vao); glDrawElements (GL_TRIANGLES, mesh->mNumFaces * 3, GL_UNSIGNED_INT, 0); glBindVertexArray (0); } static void hkl3d_gl_draw_models(Hkl3D *self, gboolean draw) { Hkl3DModel **model; Hkl3DObject **object; if (!draw) return; glUseProgram (self->shader.program); /* remove all objects from the collision world */ darray_foreach(model, self->config->models){ darray_foreach(object, (*model)->objects){ hkl3d_gl_draw_object(*object, &self->shader); } } glUseProgram (0); } static void hkl3d_gl_draw_bullet (Hkl3D *self, gboolean draw) { CGLM_ALIGN_MAT mat4s identity = GLMS_MAT4_IDENTITY_INIT; if (!draw) return; glUseProgram (self->shader_bullet.program); hkl3d_bullet_gl_draw_debug (self->bullet); glUseProgram (0); } void hkl3d_gl_draw(Hkl3D *self, gboolean draw_bullet, gboolean draw_model) { hkl3d_gl_draw_bullet (self, draw_bullet); hkl3d_gl_draw_models (self, draw_model); } void hkl3d_gl_resize(Hkl3D *self, gint width, gint height) { /* TODO store the lovation in the class */ CGLM_ALIGN_MAT mat4s projection = GLMS_MAT4_IDENTITY_INIT; projection = glms_perspective (glm_rad(45), (GLfloat)width / (GLfloat)height, 0.1, 100); glUseProgram (self->shader.program); glViewport(0, 0, width, height); set_uniform_mat4s(&self->shader, "projection", projection); glUseProgram (0); glUseProgram (self->shader_bullet.program); glViewport(0, 0, width, height); set_uniform_mat4s(&self->shader_bullet, "projection", projection); glUseProgram (0); } void hkl3d_gl_init(Hkl3D *self) { Hkl3DModel **model; Hkl3DObject **object; self->shader = init_shader_model(); self->shader_bullet = init_shader_bullet(); /* initialize all OpenGL buffers */ darray_foreach(model, self->config->models){ darray_foreach(object, (*model)->objects){ /* skip already initialized buffer */ if ((*object)->vao) continue; int k; const struct aiScene *scene = (*model)->scene; const struct aiMesh *mesh = scene->mMeshes[(*object)->mesh]; GLuint vao = 0; glGenVertexArrays (1, &vao); glBindVertexArray (vao); /* positions */ GLuint vbo = 0; size_t size_vertex = mesh->mNumVertices * 3 * sizeof (float); GLfloat *vertices = g_new(GLfloat, mesh->mNumVertices * 3); for(k=0; kmNumVertices; ++k){ vertices[k * 3 + 0] = mesh->mVertices[k].x; vertices[k * 3 + 1] = mesh->mVertices[k].y; vertices[k * 3 + 2] = mesh->mVertices[k].z; } glGenBuffers (1, &vbo ); glBindBuffer (GL_ARRAY_BUFFER, vbo ); glBufferData (GL_ARRAY_BUFFER, size_vertex, vertices, GL_STATIC_DRAW); glVertexAttribPointer (0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof (GLfloat), NULL); glEnableVertexAttribArray (0); /* normals */ GLuint vbo_normals = 0; size_t size_normals = mesh->mNumVertices * 3 * sizeof (float); glGenBuffers (1, &vbo_normals ); glBindBuffer (GL_ARRAY_BUFFER, vbo_normals ); glBufferData (GL_ARRAY_BUFFER, size_normals, mesh->mNormals, GL_STATIC_DRAW); glVertexAttribPointer (1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof (GLfloat), NULL); glEnableVertexAttribArray (1); /* indices */ GLuint ebo = 0; size_t size_indices = mesh->mNumFaces * 3 * sizeof(unsigned int); unsigned int *indices = g_new(unsigned int, mesh->mNumFaces * 3); unsigned int idx=0; for(k=0; kmNumFaces; ++k){ const struct aiFace face = mesh->mFaces[k]; indices[idx++] = face.mIndices[0]; indices[idx++] = face.mIndices[1]; indices[idx++] = face.mIndices[2]; } glGenBuffers (1, &ebo); glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, ebo); glBufferData (GL_ELEMENT_ARRAY_BUFFER, size_indices, indices, GL_STATIC_DRAW); (*object)->vao = vao; } } } hkl-5.1.7/hkl3d/bullet.glsl0000664000175000017500000000100215133711150014431 0ustar00piccapiccaSHADER_VERSION_STRING #if defined(VERT_SHADER) S( out vec3 oColors; layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aColors; uniform mat4 projection; uniform mat4 view; void main() { gl_Position = projection * view * vec4(aPos, 1.0); oColors = aColors; } ); #elif defined(FRAG_SHADER) S( precision mediump float; out vec4 FragColor; in vec3 oColors; void main() { FragColor = vec4(oColors, 1.0); } ); #endif #undef VERT_SHADER #undef FRAG_SHADER hkl-5.1.7/hkl3d/Makefile.am0000664000175000017500000000170115133711150014321 0ustar00piccapicca# Process this file with automake to produce Makefile.in AM_CFLAGS = \ -DPKGDATA=\""$(pkgdatadir)"\" \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -I$(top_srcdir)/hkl3d \ -I$(top_srcdir)/hkl3d/bullet/src\ $(ASSIMP_CFLAGS) \ $(BULLET_CFLAGS) \ $(DATATYPE99_CFLAGS) \ $(EPOXY_CFLAGS) \ $(GLIB_CFLAGS) \ $(YAML_CFLAGS) AM_CXXFLAGS=$(AM_CFLAGS) AM_LDFLAGS = -version-info 0:0:0 \ $(ASSIMP_LIBS) \ $(BULLET_LIBS) \ $(EPOXY_LIBS) \ $(GLIB_LIBS) \ $(YAML_LIBS) noinst_LTLIBRARIES = libhkl3d.la libhkl3d_la_SOURCES = \ hkl3d.cpp \ hkl3d-bullet.cpp \ hkl3d-config.cpp \ hkl3d-geometry.cpp \ hkl3d-gl.cpp \ hkl3d-model.cpp \ hkl3d-object.cpp libhkl3d_la_LIBADD = \ $(top_builddir)/hkl/libhkl-private.la noinst_HEADERS = hkl3d.h hkl3d-private.h bullet.glsl model.glsl # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(CXXCOMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/hkl3d/hkl3d-private.h0000664000175000017500000001215015143160757015127 0ustar00piccapicca#pragma once /* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010-2019, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama SBOUI */ #include #include #include #include "hkl.h" #include "hkl3d.h" // forward declaration due to bullet static linking struct btCollisionObject; struct btCollisionWorld; struct btCollisionConfiguration; struct btBroadphaseInterface; struct btCollisionDispatcher; struct btCollisionShape; struct btVector3; struct btTriangleMesh; #ifdef __cplusplus extern "C" { #endif typedef struct _Shader { GLuint program; } Shader; /**************/ /* Hkl3DStats */ /**************/ struct _Hkl3DStats { struct timeval collision; struct timeval transformation; }; /*********************/ /* Hkl3DBulletObject */ /*********************/ typedef darray(Hkl3DBulletObject *) darray_bobject; struct _Hkl3DBulletObject { Hkl3DAxis *axis; Hkl3DObject *object; /* for the transformation */ struct btCollisionObject *btObject; struct btCollisionShape *btShape; struct btTriangleMesh *meshes; }; void hkl3d_bullet_object_free(Hkl3DBulletObject *self); void hkl3d_bullet_object_fprintf(FILE *f, const Hkl3DBulletObject *self); /***************/ /* Hkl3DObject */ /***************/ typedef darray(Hkl3DObject *) darray_object; struct _Hkl3DObject { Hkl3DModel *model; /* weak reference */ unsigned int mesh; int is_colliding; int hide; int added; int selected; int movable; GLuint vao; CGLM_ALIGN_MAT mat4s transformation; }; Hkl3DObject *hkl3d_object_new(Hkl3DModel *self, unsigned int mesh); void hkl3d_object_set_movable(Hkl3DObject *self, int movable); void hkl3d_object_free(Hkl3DObject *self); /**************/ /* Hkl3DModel */ /**************/ typedef darray(Hkl3DModel *) darray_model; struct _Hkl3DModel { char *filename; const struct aiScene *scene; darray_object objects; /* owner of the objects */ }; Hkl3DModel *hkl3d_model_new_from_file(const char *filename); /***************/ /* Hkl3DConfig */ /***************/ struct _Hkl3DConfig { char const *filename; /* config filename */ darray_model models; }; /*************/ /* Hkl3DAxis */ /*************/ typedef darray(Hkl3DAxis *) darray_axis; struct _Hkl3DAxis { struct aiNode *node; const HklParameter *mparameter; darray_object objects; /* connected object */ }; void hkl3d_axis_attach_object(Hkl3DAxis *self, Hkl3DObject *object); void hkl3d_axis_detach_object(Hkl3DAxis *self, Hkl3DObject *object); /*****************/ /* HKL3DGeometry */ /*****************/ struct _Hkl3DGeometry { HklGeometry *geometry; /* weak reference */ darray_axis axes; }; Hkl3DGeometry *hkl3d_geometry_new(const Hkl3DConfig *config, HklGeometry *geometry); void hkl3d_geometry_free(Hkl3DGeometry *self); Hkl3DAxis *hkl3d_geometry_axis_get(Hkl3DGeometry *self, const char *name); void hkl3d_geometry_apply_transformations(Hkl3DGeometry *self); /***************/ /* Hkl3DBullet */ /***************/ struct _Hkl3DBullet { struct btCollisionConfiguration *_btCollisionConfiguration; struct btBroadphaseInterface *_btBroadphase; struct btCollisionWorld *_btWorld; struct btCollisionDispatcher *_btDispatcher; darray_bobject bobjects; }; Hkl3DBullet *hkl3d_bullet_new (const Hkl3DGeometry *geometry); void hkl3d_bullet_free (Hkl3DBullet *self); void hkl3d_bullet_apply_transformations(Hkl3DBullet *self); void hkl3d_bullet_get_collision_coordinates(const Hkl3DBullet *self, int manifold, int contact, double *xa, double *ya, double *za, double *xb, double *yb, double *zb); void hkl3d_bullet_gl_draw_debug (Hkl3DBullet *self); bool hkl3d_bullet_perform_collision (Hkl3DBullet *self, Hkl3DConfig *config); void hkl3d_bullet_remove_all_objects (Hkl3DBullet *self, const Hkl3DConfig *config); void hkl3d_bullet_fprintf(FILE *f, const Hkl3DBullet *self); /*********/ /* HKL3D */ /*********/ struct _Hkl3D { Hkl3DGeometry *geometry; Hkl3DStats stats; Hkl3DConfig *config; Hkl3DBullet *bullet; Shader shader; Shader shader_bullet; }; bool hkl3d_contains_model(const Hkl3D *self, const char * filename); Hkl3DObject *hkl3d_get_object_by_id(const Hkl3D *self, const char *filename, int id); #ifdef __cplusplus } #endif hkl-5.1.7/hkl3d/hkl3d-config.cpp0000664000175000017500000006746115133711150015260 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include #include #include "hkl3d-private.h" /* Set environment variable DEBUG=1 to enable debug output. */ int debug = 0; /* yaml_* functions return 1 on success and 0 on failure. */ enum status { SUCCESS = 1, FAILURE = 0 }; /***************/ /* Hkl3DConfig */ /***************/ void hkl3d_config_free(Hkl3DConfig *self) { g_return_if_fail(NULL != self); Hkl3DModel **model; darray_foreach(model, self->models){ hkl3d_model_free(*model); } darray_free(self->models); g_free(self); } void hkl3d_config_fprintf(FILE *f, const Hkl3DConfig *self) { Hkl3DModel **model; fprintf(f, "Hkl3DConfig (models=["); darray_foreach(model, self->models){ fprintf (f, " "); hkl3d_model_fprintf(f, *model); } fprintf (f, "])"); } static bool hkl3d_config_contains_model(const Hkl3DConfig *self, const char *filename) { g_return_val_if_fail(nullptr != self, false); g_return_val_if_fail(nullptr != filename, false); Hkl3DModel **model; darray_foreach(model, self->models){ if (0 == strcmp(filename, (*model)->filename)) return true; } return false; } static Hkl3DObject * hkl3d_config_get_object_by_id(const Hkl3DConfig *self, const char *filename, int id) { g_return_val_if_fail(nullptr != self, nullptr); g_return_val_if_fail(nullptr != filename, nullptr); Hkl3DModel **model; darray_foreach (model, self->models){ if (id < darray_size((*model)->objects) && 0 == strcmp((*model)->filename, filename)){ return darray_item((*model)->objects, id); } } return nullptr; } static Hkl3DModel * hkl3d_config_add_model_from_file(Hkl3DConfig *self, const char *filename, const char *directory) { int current; int res; const aiScene *scene = nullptr; Hkl3DModel *model = nullptr; /* first set the current directory using the directory * parameter. Maybe using openat should be a better solution * in the hkl3d_model_new_from_file */ current = open(".", O_RDONLY); if (current < 0) return nullptr; res = chdir(directory); if(res < 0) goto close_current; model = hkl3d_model_new_from_file(filename); if(model) darray_append(self->models, model); /* restore the current directory */ res = fchdir(current); return model; close_current: close(current); return nullptr; } #define INDENT " " #define STRVAL(x) ((x) ? (char*)(x) : "") static void indent(int level) { int i; for (i = 0; i < level; i++) { printf("%s", INDENT); } } static void print_event(yaml_event_t *event) { static int level = 0; switch (event->type) { case YAML_NO_EVENT: indent(level); printf("no-event (%d)\n", event->type); break; case YAML_STREAM_START_EVENT: indent(level++); printf("stream-start-event (%d)\n", event->type); break; case YAML_STREAM_END_EVENT: indent(--level); printf("stream-end-event (%d)\n", event->type); break; case YAML_DOCUMENT_START_EVENT: indent(level++); printf("document-start-event (%d)\n", event->type); break; case YAML_DOCUMENT_END_EVENT: indent(--level); printf("document-end-event (%d)\n", event->type); break; case YAML_ALIAS_EVENT: indent(level); printf("alias-event (%d)\n", event->type); break; case YAML_SCALAR_EVENT: indent(level); printf("scalar-event (%d) = {value=\"%s\", length=%d}\n", event->type, STRVAL(event->data.scalar.value), (int)event->data.scalar.length); break; case YAML_SEQUENCE_START_EVENT: indent(level++); printf("sequence-start-event (%d)\n", event->type); break; case YAML_SEQUENCE_END_EVENT: indent(--level); printf("sequence-end-event (%d)\n", event->type); break; case YAML_MAPPING_START_EVENT: indent(level++); printf("mapping-start-event (%d)\n", event->type); break; case YAML_MAPPING_END_EVENT: indent(--level); printf("mapping-end-event (%d)\n", event->type); break; } if (level < 0) { fprintf(stderr, "indentation underflow!\n"); level = 0; } } // --- ! // - FileName: diffabs.glb // Objects: // - Id: 0 // Name: base // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 1 // Name: delta // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 2 // Name: gamma // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 3 // Name: kappa // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 4 // Name: komega // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 5 // Name: kphi // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // - Id: 6 // Name: mu // Transformation: [1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, // 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, // 1.000000] // Hide: no // ... // * The sequence of yaml events supported is: // * // * ::= STREAM-START STREAM-END // * ::= DOCUMENT-START DOCUMENT-END // * ::= SEQUENCE-START SEQUENCE-END // * ::= MAPPING-START * MAPPING-END // * ::= "FileName" | // * "Objects" // * ::= SEQUENCE-START SEQUENCE-END // * ::= MAPPING-START * MAPPING-END // * ::= "Id" | // * "Name" | // * "Transformation" | // * "Hide" | // * ::= SEQUENCE-START SEQUENCE-END // stream-start-event (1) // document-start-event (3) // sequence-start-event (7) // mapping-start-event (9) // scalar-event (6) = {value="FileName", length=8} // scalar-event (6) = {value="diffabs.glb", length=11} // scalar-event (6) = {value="Objects", length=7} // sequence-start-event (7) // mapping-start-event (9) // scalar-event (6) = {value="Id", length=2} // scalar-event (6) = {value="0", length=1} // scalar-event (6) = {value="Name", length=4} // scalar-event (6) = {value="base", length=4} // scalar-event (6) = {value="Transformation", length=14} // sequence-start-event (7) // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // sequence-end-event (8) // scalar-event (6) = {value="Hide", length=4} // scalar-event (6) = {value="no", length=2} // mapping-end-event (10) // mapping-start-event (9) // scalar-event (6) = {value="Id", length=2} // scalar-event (6) = {value="1", length=1} // scalar-event (6) = {value="Name", length=4} // scalar-event (6) = {value="delta", length=5} // scalar-event (6) = {value="Transformation", length=14} // sequence-start-event (7) // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="0.000000", length=8} // scalar-event (6) = {value="1.000000", length=8} // sequence-end-event (8) // scalar-event (6) = {value="Hide", length=4} // scalar-event (6) = {value="no", length=2} // mapping-end-event (10) // [...] // sequence-end-event (...) // mapping-end-event (10) // sequence-end-event (...) // document-end-sequence (...) // stream-end-sequence (...) // https://github.com/meffie/libyaml-examples/blob/master/parse.c // * The sequence of yaml events supported is: // * // * ::= STREAM-START STREAM-END // * ::= DOCUMENT-START DOCUMENT-END // * ::= SEQUENCE-START SEQUENCE-END // * ::= MAPPING-START * MAPPING-END // * ::= "FileName" | // * "Objects" // * ::= SEQUENCE-START SEQUENCE-END // * ::= MAPPING-START * MAPPING-END // * ::= "Id" | // * "Name" | // * "Transformation" | // * "Hide" | // * ::= SEQUENCE-START SEQUENCE-END enum state { STATE_START, /* start state */ STATE_STREAM, /* start/end stream */ STATE_DOCUMENT, /* start/end document */ STATE_FLIST, /* file list */ STATE_FVALUES, /* file key-value pairs */ STATE_FKEY, /* file key */ STATE_FNAME, /* file name value */ STATE_FOBJECTS, /* file color value */ STATE_OLIST, /* object list */ STATE_OVALUES, /* object key-value pairs */ STATE_OKEY, /* object key */ STATE_OID, /* object Id */ STATE_ONAME, /* object Name */ STATE_OTRANSFORMATION, /* object Transformation */ STATE_OHIDE, /* object Hide */ STATE_TLIST, /* transformation list */ STATE_TVALUES, /* transformation value */ STATE_STOP /* end state */ }; static const char *state_name[] = { "start", "stream", "document", "flist", "fvalues", "fkey", "fname", "fobjects", "olist", "ovalues", "okey", "oid", "oname", "otransformation", "ohide", "tlist", "tvalues", "stop", }; /* * Our application parser state data. */ struct parser_state { enum state state; /* The current parse state */ Hkl3DConfig *config; Hkl3DModel *model; /* not owned */ char *dir; char *fname; int oid; int n_objects; char *oname; mat4s otransformation; bool ohide; int tindex; }; void state_fprintf(FILE *f, const parser_state *state) { fprintf(f, "parser_state->state (%d)\n", state->state); fprintf(f, "parser_state->config (%p)\n", state->config); fprintf(f, "parser_state->dir \"(%s)\"\n", state->dir); } /* * Convert a yaml boolean string to a boolean value (true|false). */ static int get_boolean(const char *string, bool *value) { const char *t[] = {"y", "Y", "yes", "Yes", "YES", "true", "True", "TRUE", "on", "On", "ON", NULL}; const char *f[] = {"n", "N", "no", "No", "NO", "false", "False", "FALSE", "off", "Off", "OFF", NULL}; const char **p; for (p = t; *p; p++) { if (strcmp(string, *p) == 0) { *value = true; return 0; } } for (p = f; *p; p++) { if (strcmp(string, *p) == 0) { *value = false; return 0; } } return EINVAL; } /* * Consume yaml events generated by the libyaml parser to * import our data into raw c data structures. Error processing * is keep to a mimimum since this is just an example. */ static int consume_event(struct parser_state *s, yaml_event_t *event) { char *value; Hkl3DObject *object; if (debug) { printf("state=%d (%s) event=%d\n", s->state, state_name[s->state], event->type); } switch (s->state) { case STATE_START: switch (event->type) { case YAML_STREAM_START_EVENT: s->state = STATE_STREAM; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_STREAM: switch (event->type) { case YAML_DOCUMENT_START_EVENT: s->state = STATE_DOCUMENT; break; case YAML_STREAM_END_EVENT: s->state = STATE_STOP; /* All done. */ break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_DOCUMENT: switch (event->type) { case YAML_SEQUENCE_START_EVENT: s->state = STATE_FLIST; break; case YAML_DOCUMENT_END_EVENT: s->state = STATE_STREAM; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_FLIST: switch (event->type) { case YAML_MAPPING_START_EVENT: s->state = STATE_FKEY; break; case YAML_SEQUENCE_END_EVENT: s->state = STATE_DOCUMENT; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_FKEY: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; if (debug){ fprintf(stderr, "Fkey: [%s]\n", value); } if (strcmp(value, "FileName") == 0) { s->state = STATE_FNAME; } else if (strcmp(value, "Objects") == 0) { s->state = STATE_FOBJECTS; } else { fprintf(stderr, "Unexpected key: %s\n", value); return FAILURE; } break; case YAML_MAPPING_END_EVENT: if (NULL != s->model) { size_t n_expected = darray_size(s->model->objects); if (s->n_objects != n_expected){ fprintf(stderr, "Warning: [%s] contains %d objects, only %d configured inthe config file.\n", s->fname, n_expected, s->n_objects); } } s->n_objects = 0; g_clear_pointer (&s->fname, g_free); s->state = STATE_FLIST; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_FNAME: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; if (hkl3d_config_contains_model(s->config, value)) { fprintf(stderr, "Warning: [%s] already loaded previously.\n", value); }else{ if (s->fname) { fprintf(stderr, "Warning: duplicate 'FileName' key.\n"); free(s->fname); } s->fname = strdup(value); if (debug){ fprintf (stdout, "Adding [%s] model.\n", value); } s->model = hkl3d_config_add_model_from_file(s->config, value, s->dir); } s->state = STATE_FKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_FOBJECTS: switch (event->type) { case YAML_SEQUENCE_START_EVENT: s->state = STATE_OVALUES; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_OVALUES: switch (event->type) { case YAML_MAPPING_START_EVENT: s->state = STATE_OKEY; break; case YAML_SEQUENCE_END_EVENT: s->state = STATE_FKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_OKEY: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; if (debug){ fprintf(stderr, "Okey: [%s]\n", value); } if (strcmp(value, "Id") == 0) { s->state = STATE_OID; } else if (strcmp(value, "Name") == 0) { s->state = STATE_ONAME; } else if (strcmp(value, "Transformation") == 0) { s->state = STATE_OTRANSFORMATION; } else if (strcmp(value, "Hide") == 0) { s->state = STATE_OHIDE; } else { fprintf(stderr, "Unexpected key: %s\n", value); return FAILURE; } break; case YAML_MAPPING_END_EVENT: object = hkl3d_config_get_object_by_id(s->config, s->fname, s->oid); if (nullptr != object){ s->n_objects++; /* one more object */ //hkl3d_object_axis_name_set(object, s->oname); hkl3d_object_transformation_set(object, s->otransformation); hkl3d_object_hide_set(object, s->ohide); } else { fprintf(stderr, "Can not find the Hkl3DObject in [%s] with Id: %d\n", s->fname, s->oid); } g_clear_pointer(&s->oname, g_free); s->state = STATE_OVALUES; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_OID: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; s->oid = atoi (value); if (debug){ fprintf (stderr, "OID: [%d]\n", s->oid); } s->state = STATE_OKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_ONAME: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; if (debug){ fprintf (stderr, "OName: [%s]\n", value); } if (s->oname) { fprintf(stderr, "Warning: duplicate 'Name' key.\n"); free(s->oname); } s->oname = strdup(value); s->state = STATE_OKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_OTRANSFORMATION: switch (event->type) { case YAML_SEQUENCE_START_EVENT: s->tindex = 0; /* start the sequence */ s->state = STATE_TVALUES; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_TVALUES: switch (event->type) { case YAML_SCALAR_EVENT: if (s->tindex >= 16){ fprintf(stderr, "Warning: Skip extra transfromation value (16 values expected).\n"); }else{ value = (char *)event->data.scalar.value; ((float *)(s->otransformation.raw))[s->tindex++] = atof(value); if (debug){ fprintf (stderr, "TValue: [%f][%d]\n", atof(value), s->tindex-1); } } s->state = STATE_TVALUES; break; case YAML_SEQUENCE_END_EVENT: /* TODO check 16 values */ s->state = STATE_OKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_OHIDE: switch (event->type) { case YAML_SCALAR_EVENT: value = (char *)event->data.scalar.value; if (get_boolean(value, &s->ohide)) { fprintf(stderr, "Invalid boolean string value: %s\n", value); return FAILURE; } if (debug){ fprintf (stderr, "Ohide: [%d]\n", s->ohide); } s->state = STATE_OKEY; break; default: fprintf(stderr, "Unexpected event %d in state %d.\n", event->type, s->state); return FAILURE; } break; case STATE_STOP: break; } return SUCCESS; } static int hkl3d_load_config(Hkl3DConfig *self, const char *filename) { int code = EXIT_FAILURE; int status; FILE *file = nullptr; struct parser_state state; yaml_parser_t parser; memset(&state, 0, sizeof(state)); state.config = self; state.dir = g_path_get_dirname(filename); state.state = STATE_START; if (debug){ state_fprintf(stderr, &state); } file = fopen(filename, "rb"); if (!file){ fprintf(stderr, "Could not open the %s config file\n", filename); goto out_release_dir; } if (!yaml_parser_initialize(&parser)){ fprintf(stderr, "Could not initialize the parser object\n"); goto out_close_file; } yaml_parser_set_input_file(&parser, file); do { yaml_event_t event; status = yaml_parser_parse(&parser, &event); if (status == FAILURE) { fprintf(stderr, "yaml_parser_parse error\n"); goto out_release_parser; } status = consume_event(&state, &event); yaml_event_delete(&event); if (status == FAILURE) { fprintf(stderr, "consume_event error\n"); goto out_release_parser; } } while (state.state != STATE_STOP); if (debug){ hkl3d_config_fprintf(stdout, self); } code = EXIT_SUCCESS; out_release_parser: g_clear_pointer(&state.oname, g_free); g_clear_pointer(&state.fname, g_free); yaml_parser_delete(&parser); out_close_file: fclose (file); out_release_dir: g_clear_pointer (&state.dir, g_free); return code; } void hkl3d_save_config(Hkl3DConfig *self, const char *filename) { Hkl3DModel **model; darray_foreach(model, self->models){ char number[64]; int properties1, key1, value1,seq0; int root; time_t now; yaml_emitter_t emitter; yaml_document_t output_document; yaml_event_t output_event; FILE * file; Hkl3DObject **object; memset(&emitter, 0, sizeof(emitter)); memset(&output_document, 0, sizeof(output_document)); memset(&output_event, 0, sizeof(output_event)); if (!yaml_emitter_initialize(&emitter)) fprintf(stderr, "Could not inialize the emitter object\n"); /* Set the emitter parameters */ file = fopen(filename, "a+"); if(!file){ fprintf(stderr, "Could not open the config file %s to save\n", filename); return; } yaml_emitter_set_output_file(&emitter, file); yaml_emitter_open(&emitter); /* Create an output_document object */ if (!yaml_document_initialize(&output_document, nullptr, nullptr, nullptr, 0, 0)) fprintf(stderr, "Could not create a output_document object\n"); /* Create the root of the config file */ time(&now); root = yaml_document_add_sequence(&output_document, (yaml_char_t *)ctime(&now), YAML_BLOCK_SEQUENCE_STYLE); /* create the property of the root sequence */ properties1 = yaml_document_add_mapping(&output_document, (yaml_char_t *)YAML_MAP_TAG, YAML_BLOCK_MAPPING_STYLE); yaml_document_append_sequence_item(&output_document, root, properties1); /* add the map key1 : value1 to the property */ key1 = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"FileName", -1, YAML_PLAIN_SCALAR_STYLE); value1 = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)(*model)->filename, -1, YAML_PLAIN_SCALAR_STYLE); yaml_document_append_mapping_pair(&output_document, properties1, key1, value1); /* add the map key1 : seq0 to the first property */ key1 = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"Objects", -1, YAML_PLAIN_SCALAR_STYLE); /* create the sequence of objects */ seq0 = yaml_document_add_sequence(&output_document, (yaml_char_t *)YAML_SEQ_TAG, YAML_BLOCK_SEQUENCE_STYLE); darray_foreach(object, (*model)->objects){ int k; int l; int properties; int key; int value; int seq1; properties = yaml_document_add_mapping(&output_document, (yaml_char_t *)YAML_MAP_TAG, YAML_BLOCK_MAPPING_STYLE); yaml_document_append_sequence_item(&output_document,seq0, properties); key = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"Id", -1, YAML_PLAIN_SCALAR_STYLE); sprintf(number, "%d", (*object)->mesh); value = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE); yaml_document_append_mapping_pair(&output_document,properties,key,value); key = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"Name", -1, YAML_PLAIN_SCALAR_STYLE); value = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"", -1, YAML_PLAIN_SCALAR_STYLE); yaml_document_append_mapping_pair(&output_document,properties,key,value); key = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"Transformation", -1, YAML_PLAIN_SCALAR_STYLE); seq1 = yaml_document_add_sequence(&output_document, (yaml_char_t *)YAML_SEQ_TAG, YAML_FLOW_SEQUENCE_STYLE); yaml_document_append_mapping_pair(&output_document,properties, key, seq1); for(k=0; k<4; k++){ for(l=0; l<4; l++){ sprintf(number, "%f", (*object)->transformation.raw[k][l]); value = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE); yaml_document_append_sequence_item(&output_document,seq1,value); } } key = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"Hide", -1, YAML_PLAIN_SCALAR_STYLE); if((*object)->hide) value = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"yes", -1, YAML_PLAIN_SCALAR_STYLE); else value = yaml_document_add_scalar(&output_document, nullptr, (yaml_char_t *)"no", -1, YAML_PLAIN_SCALAR_STYLE); yaml_document_append_mapping_pair(&output_document,properties,key,value); } yaml_document_append_mapping_pair(&output_document, properties1, key1, seq0); /* flush the document */ yaml_emitter_dump(&emitter, &output_document); fclose(file); yaml_document_delete(&output_document); yaml_emitter_delete(&emitter); } } Hkl3DConfig* hkl3d_config_new(const char *filename) { Hkl3DConfig* self = nullptr; self = g_new(Hkl3DConfig, 1); if(!self) return nullptr; self->filename = filename; darray_init(self->models); hkl3d_load_config(self, filename); return self; } hkl-5.1.7/hkl3d/hkl3d-model.cpp0000664000175000017500000000645315133711150015105 0ustar00piccapicca/* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include // #include #include #include #include "hkl3d-private.h" /**************/ /* Hkl3DModel */ /**************/ /* * Initialize the bullet collision environment. * create the Hkl3DObjects * create the Hkl3DConfig */ Hkl3DModel *hkl3d_model_new_from_file(const char *filename) { g_return_val_if_fail(NULL != filename, nullptr); unsigned int i; Hkl3DModel *self; const struct aiScene *scene; scene = aiImportFile(filename, aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType); if (nullptr == scene) { fprintf(stdout, "\n%s", aiGetErrorString()); goto out; } /* aiExportScene(scene, "glb2", g_strdup_printf("%s.glb", filename), 0); */ self = g_new0 (Hkl3DModel, 1); self->filename = g_strdup(filename); self->scene = scene; darray_init(self->objects); /* keep only the mesh with triangles */ for(i=0; imNumMeshes; ++i){ const struct aiMesh *mesh = scene->mMeshes[i]; if (mesh->mPrimitiveTypes == aiPrimitiveType_TRIANGLE){ Hkl3DObject *object = hkl3d_object_new(self, i); if (nullptr != object) darray_append(self->objects, object); } } return self; out: return nullptr; } const char * hkl3d_model_filename_get(const Hkl3DModel *self) { g_return_val_if_fail(nullptr != self, nullptr); return self->filename; } void hkl3d_model_free(Hkl3DModel *self) { g_return_if_fail (nullptr != self); Hkl3DObject **object; darray_foreach (object, self->objects){ hkl3d_object_free (*object); } darray_free (self->objects); aiReleaseImport (self->scene); free (self->filename); free (self); } static void hkl3d_model_delete_object(Hkl3DModel *self, Hkl3DObject *object) { size_t i; if(!self || !object) return; if(self != object->model) return; /* find the index of the object */ for(i=0; darray_item(self->objects, i) != object; ++i); hkl3d_object_free(object); darray_remove(self->objects, i); } void hkl3d_model_fprintf(FILE *f, const Hkl3DModel *self) { fprintf(f,"Hkl3DModel (filename=[%s], scene=%p, objects[", self->filename, self->scene); for(size_t i=0; iobjects); ++i){ if(i) fprintf(f, ", "); hkl3d_object_fprintf(f, darray_item(self->objects, i)); } fprintf(f, "])"); } hkl-5.1.7/hkl3d/hkl3d.h0000664000175000017500000001161215143160757013461 0ustar00piccapicca#pragma once /* This file is part of the hkl3d library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2010-2019, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama SBOUI */ #include #include #include "hkl.h" #define SOLEIL_DIFFABS_MODEL "soleil-diffabs.yaml" #define SOLEIL_CRISTAL_K4C_MODEL "soleil-cristal-4c.yaml" // forward declaration due to bullet static linking struct btVector3; #ifdef __cplusplus extern "C" { #endif typedef struct _Hkl3D Hkl3D; typedef struct _Hkl3DAxis Hkl3DAxis; typedef struct _Hkl3DBullet Hkl3DBullet; typedef struct _Hkl3DBulletObject Hkl3DBulletObject; typedef struct _Hkl3DConfig Hkl3DConfig; typedef struct _Hkl3DGeometry Hkl3DGeometry; typedef struct _Hkl3DModel Hkl3DModel; typedef struct _Hkl3DObject Hkl3DObject; typedef struct _Hkl3DStats Hkl3DStats; /**************/ /* Hkl3DStats */ /**************/ HKLAPI extern double hkl3d_stats_get_collision_ms(const Hkl3DStats *self); HKLAPI extern void hkl3d_stats_fprintf(FILE *f, const Hkl3DStats *self); /***************/ /* Hkl3DObject */ /***************/ HKLAPI extern void hkl3d_object_axis_name_set(Hkl3DObject *self, const char *axis_name); /* TODO remove not a good idea */ HKLAPI extern bool hkl3d_object_hide_get(const Hkl3DObject *self); HKLAPI extern void hkl3d_object_hide_set(Hkl3DObject *self, bool hide); HKLAPI extern void hkl3d_object_transformation_set(Hkl3DObject *self, mat4s transformation); HKLAPI extern void hkl3d_object_fprintf(FILE *f, const Hkl3DObject *self); /**************/ /* Hkl3DModel */ /**************/ HKLAPI extern void hkl3d_model_free(Hkl3DModel *self); HKLAPI extern void hkl3d_model_fprintf(FILE *f, const Hkl3DModel *self); /***************/ /* Hkl3DConfig */ /***************/ HKLAPI extern void hkl3d_config_free(Hkl3DConfig *self); // TODO private HKLAPI extern Hkl3DConfig *hkl3d_config_new(const char *filename); // TODO private HKLAPI extern void hkl3d_config_fprintf(FILE *f, const Hkl3DConfig *self); /*************/ /* Hkl3DAxis */ /*************/ HKLAPI extern void hkl3d_axis_fprintf(FILE *f, const Hkl3DAxis *self); /*****************/ /* HKL3DGeometry */ /*****************/ HKLAPI extern void hkl3d_geometry_fprintf(FILE *f, const Hkl3DGeometry *self); /*********/ /* HKL3D */ /*********/ HKLAPI extern Hkl3D* hkl3d_new(const char *filename, HklGeometry *geometry) HKL_ARG_NONNULL(2); HKLAPI extern void hkl3d_free(Hkl3D *self) HKL_ARG_NONNULL(1); HKLAPI extern void hkl3d_fprintf(FILE *f, const Hkl3D *self) HKL_ARG_NONNULL(1, 2); HKLAPI extern Hkl3DModel *hkl3d_add_model_from_file(Hkl3D *self, const char *filename, const char *directory) HKL_ARG_NONNULL(1, 2, 3); HKLAPI extern void hkl3d_connect_all_axes(Hkl3D *self) HKL_ARG_NONNULL(1); HKLAPI extern void hkl3d_connect_object_to_axis(Hkl3D *self, Hkl3DObject *object, const char *name) HKL_ARG_NONNULL(1, 2); HKLAPI void hkl3d_draw_model_set(Hkl3D *self, bool draw_model); HKLAPI extern void hkl3d_get_bounding_boxes(Hkl3D *self, struct btVector3 *min, struct btVector3 *max) HKL_ARG_NONNULL(1, 2, 3); HKLAPI extern void hkl3d_get_collision_coordinates(Hkl3D *self, int manifold, int contact, double *xa, double *ya, double *za, double *xb, double *yb, double *zb) HKL_ARG_NONNULL(1); HKLAPI extern int hkl3d_get_nb_manifolds(Hkl3D *self) HKL_ARG_NONNULL(1); HKLAPI extern int hkl3d_get_nb_contacts(Hkl3D *self, int manifold) HKL_ARG_NONNULL(1); HKLAPI extern void hkl3d_hide_object(Hkl3D *self, Hkl3DObject *object, int hide) HKL_ARG_NONNULL(1, 2); HKLAPI extern int hkl3d_is_colliding(Hkl3D *self) HKL_ARG_NONNULL(1); HKLAPI extern void hkl3d_remove_object(Hkl3D *self, Hkl3DObject *object) HKL_ARG_NONNULL(1, 2); HKLAPI extern void hkl3d_save_config(Hkl3D *self, const char *filename) HKL_ARG_NONNULL(1, 2); /* Opengl */ HKLAPI void hkl3d_gl_draw (Hkl3D *self, gboolean draw_bullet, gboolean draw_model); HKLAPI void hkl3d_gl_init (Hkl3D *self); HKLAPI void hkl3d_gl_resize (Hkl3D *self, gint width, gint height); #ifdef __cplusplus } #endif hkl-5.1.7/README0000664000175000017500000000073714677222567012175 0ustar00piccapiccaTo build you need -PREREQUIRED gsl >= 1.12 (lib -- required) http://www.gnu.org/software/gsl/ gtkmm >= 2.18 (gui -- optional) http://www.gtkmm.org libg3d (gui -- optional) http://automagically.de/g3dviewer/ libyaml (gui -- optional) http://pyyaml.org/wiki/LibYAML gtk-doc >= 1.9 (doc -- required) http://www.gtk.org/gtk-doc/ povray (doc -- optional) http://www.povray.org/ asymptote (doc -- optional) http://asymptote.sourceforge.net/hkl-5.1.7/gtk-doc.make0000644000175000017500000002506315144640443013464 0ustar00piccapicca# -*- mode: makefile -*- # # gtk-doc.make - make rules for gtk-doc # Copyright (C) 2003 James Henstridge # 2004-2007 Damon Chaplin # 2007-2017 Stefan Sauer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).actions \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc if ENABLE_GTK_DOC all-local: all-gtk-doc endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_@AM_V@) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp #### scan #### GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_@AM_V@) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_@AM_V@) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### xml #### GTK_DOC_V_XML=$(GTK_DOC_V_XML_@AM_V@) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true $(DOC_MAIN_SGML_FILE): sgml-build.stamp @true xml/gtkdocentities.ent: Makefile $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ ) > $@ #### html #### GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_@AM_V@) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_@AM_V@) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\--path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ test -f $$file && cp $$file $(abs_builddir)/html; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_@AM_V@) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_@AM_DEFAULT_V@) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\--verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\--imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\--rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\--rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if HAVE_GTK_DOC dist-check-gtkdoc: docs else dist-check-gtkdoc: @echo "*** gtk-doc is needed to run 'make dist'. ***" @echo "*** gtk-doc was not found when 'configure' ran. ***" @echo "*** please install gtk-doc and rerun 'configure'. ***" @false endif dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs hkl-5.1.7/third-party/0000775000175000017500000000000015144640565013545 5ustar00piccapiccahkl-5.1.7/third-party/datatype99.h0000664000175000017500000005437514677222567015741 0ustar00piccapicca/* MIT License Copyright (c) 2020-2023 Hirrolot Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // The official repository: . #ifndef DATATYPE99_H #define DATATYPE99_H #include #if !ML99_VERSION_COMPATIBLE(1, 13, 2) #error Please, update Metalang99 to v1.13.2 or later. #endif #ifndef DATATYPE99_NO_ALIASES #define datatype(...) datatype99(__VA_ARGS__) #define derive(...) derive99(__VA_ARGS__) #define record(...) record99(__VA_ARGS__) #define match(val) match99(val) #define MATCHES(val, tag) MATCHES99(val, tag) /// @deprecated Use `MATCHES` instead. #define matches(val, tag) \ DATATYPE99_PRIV_PRAGMA_WARN("GCC warning \"`matches` is deprecated, use `MATCHES` instead\"") \ MATCHES(val, tag) #define ifLet(val, tag, ...) ifLet99(val, tag, __VA_ARGS__) #define of(...) of99(__VA_ARGS__) #define otherwise otherwise99 #define UnitT UnitT99 #define unit_v unit_v99 #endif // DATATYPE99_NO_ALIASES // Public stuff { // Metalang99-compliant macros { #define DATATYPE99_datatype(...) ML99_call(DATATYPE99_datatype, __VA_ARGS__) #define DATATYPE99_record(...) ML99_call(DATATYPE99_record, __VA_ARGS__) #define DATATYPE99_of(...) ML99_call(DATATYPE99_of, __VA_ARGS__) #define DATATYPE99_ifLet(val, tag, ...) ML99_call(DATATYPE99_ifLet, val, tag, __VA_ARGS__) #define datatype99(...) ML99_EVAL(DATATYPE99_datatype_IMPL(__VA_ARGS__)) #define record99(...) ML99_EVAL(DATATYPE99_record_IMPL(__VA_ARGS__)) #define of99(...) ML99_EVAL(DATATYPE99_of_IMPL(__VA_ARGS__)) #define ifLet99(val, tag, ...) ML99_EVAL(DATATYPE99_ifLet_IMPL(val, tag, __VA_ARGS__)) // } (Metalang99-compliant macros) // Attributes manipulation { #define DATATYPE99_attrIsPresent(attr) ML99_call(DATATYPE99_attrIsPresent, attr) #define DATATYPE99_attrValue(attr) ML99_call(DATATYPE99_attrValue, attr) #define DATATYPE99_assertAttrIsPresent(attr) ML99_call(DATATYPE99_assertAttrIsPresent, attr) #define DATATYPE99_attrIsPresent_IMPL(attr) v(DATATYPE99_ATTR_IS_PRESENT(attr)) #define DATATYPE99_attrValue_IMPL(attr) v(DATATYPE99_ATTR_VALUE(attr)) #define DATATYPE99_assertAttrIsPresent_IMPL(attr) \ ML99_IF( \ DATATYPE99_ATTR_IS_PRESENT(attr), \ ML99_empty(), \ ML99_fatal(DATATYPE99_assertAttrIsPresent, attr must be defined)) #define DATATYPE99_ATTR_IS_PRESENT(attr) \ ML99_IS_TUPLE(ML99_CAT(DATATYPE99_PRIV_ATTR_IS_PRESENT_, attr)) #define DATATYPE99_PRIV_ATTR_IS_PRESENT_attr(...) () #define DATATYPE99_ATTR_VALUE(attr) ML99_CAT(DATATYPE99_PRIV_ATTR_VALUE_, attr) #define DATATYPE99_PRIV_ATTR_VALUE_attr(...) __VA_ARGS__ // } (Attributes manipulation) #define DATATYPE99_DERIVE_dummy_IMPL(...) ML99_empty() #define DATATYPE99_RECORD_DERIVE_dummy_IMPL(...) ML99_empty() #define derive99(...) \ 0derive(__VA_ARGS__) /* 0 is used as a prefix to cancel macro expansion; see \ . */ #define DATATYPE99_MAJOR 1 #define DATATYPE99_MINOR 6 #define DATATYPE99_PATCH 4 #define DATATYPE99_VERSION_COMPATIBLE(x, y, z) \ (DATATYPE99_MAJOR == (x) && \ ((DATATYPE99_MINOR == (y) && DATATYPE99_PATCH >= (z)) || (DATATYPE99_MINOR > (y)))) #define DATATYPE99_VERSION_EQ(x, y, z) \ (DATATYPE99_MAJOR == (x) && DATATYPE99_MINOR == (y) && DATATYPE99_PATCH == (z)) // } (Public stuff) // Unit type { typedef char UnitT99; static const UnitT99 unit_v99 = '\0'; // } (Unit type) // Sum type generation { #define DATATYPE99_datatype_IMPL(x, ...) \ ML99_TERMS( \ ML99_CAT(DATATYPE99_PRIV_withDerive_, DATATYPE99_PRIV_IS_DERIVE(x))(x, __VA_ARGS__), \ v(ML99_TRAILING_SEMICOLON())) #define DATATYPE99_PRIV_withDerive_0(name, ...) \ DATATYPE99_PRIV_withDerive_1(derive99(dummy), name, __VA_ARGS__) #define DATATYPE99_PRIV_withDerive_1(derivers, name, ...) \ ML99_call( \ DATATYPE99_PRIV_genDatatype, \ v(name), \ DATATYPE99_PRIV_parseVariants(__VA_ARGS__), \ v(ML99_CAT(DATATYPE99_PRIV_ELIM_, derivers))) #define DATATYPE99_PRIV_genDatatype_IMPL(name, variants, ...) \ ML99_TERMS( \ v(typedef struct name name;), \ DATATYPE99_PRIV_genVariantTypedefsForEach(name, variants), \ ML99_typedef( \ v(name##Tag), \ ML99_enum(v(name##Tag), DATATYPE99_PRIV_genTagForEach(variants))), \ ML99_typedef( \ v(name##Variants), \ ML99_union(v(name##Variants), DATATYPE99_PRIV_genUnionFieldForEach(name, variants))), \ v(struct name { \ name##Tag tag; \ name##Variants data; \ };), \ DATATYPE99_PRIV_genCtorForEach(name, variants), \ DATATYPE99_PRIV_invokeDeriverForEach(DATATYPE99_DERIVE_, name, variants, __VA_ARGS__)) // } (Sum type generation) // Record type generation { #define DATATYPE99_record_IMPL(...) \ ML99_TERMS( \ ML99_CAT( \ DATATYPE99_PRIV_recordWithDerive_, \ DATATYPE99_PRIV_IS_DERIVE(ML99_VARIADICS_GET(0)(__VA_ARGS__)))(__VA_ARGS__), \ v(ML99_TRAILING_SEMICOLON())) #define DATATYPE99_PRIV_recordWithDerive_0(...) \ DATATYPE99_PRIV_recordWithDerive_1(derive99(dummy), __VA_ARGS__) #define DATATYPE99_PRIV_recordWithDerive_1(derivers, ...) \ ML99_call( \ DATATYPE99_PRIV_genRecord, \ DATATYPE99_PRIV_recordName(__VA_ARGS__), \ DATATYPE99_PRIV_recordFields(__VA_ARGS__), \ v(ML99_CAT(DATATYPE99_PRIV_ELIM_, derivers))) #define DATATYPE99_PRIV_recordName(...) v(ML99_VARIADICS_GET(0)(__VA_ARGS__)) #define DATATYPE99_PRIV_recordFields(...) \ ML99_CAT(DATATYPE99_PRIV_recordFields_, ML99_VARIADICS_IS_SINGLE(__VA_ARGS__))(__VA_ARGS__) #define DATATYPE99_PRIV_recordFields_1(_name) ML99_list(v((char, dummy))) #define DATATYPE99_PRIV_recordFields_0(_name, ...) DATATYPE99_PRIV_parseFields(__VA_ARGS__) #define DATATYPE99_PRIV_genRecord_IMPL(name, fields, ...) \ ML99_TERMS( \ ML99_typedef( \ v(name), \ ML99_struct(v(name), DATATYPE99_PRIV_genRecordFieldForEach(fields))), \ DATATYPE99_PRIV_invokeDeriverForEach( \ DATATYPE99_RECORD_DERIVE_, \ name, \ fields, \ __VA_ARGS__)) // } (Record type generation) // Parse variants { #define DATATYPE99_PRIV_parseVariants(...) \ ML99_listFromTuples(v(DATATYPE99_PRIV_parseVariant), v(__VA_ARGS__)) #define DATATYPE99_PRIV_parseVariant_IMPL(...) \ ML99_CAT(DATATYPE99_PRIV_parseVariantIsEmpty_, ML99_VARIADICS_IS_SINGLE(__VA_ARGS__)) \ (__VA_ARGS__) #define DATATYPE99_PRIV_parseVariantIsEmpty_1(tag) DATATYPE99_PRIV_variant(v(tag), ML99_nil()) #define DATATYPE99_PRIV_parseVariantIsEmpty_0(tag, ...) \ DATATYPE99_PRIV_variant(v(tag), ML99_list(v(__VA_ARGS__))) // } (Parse variants) // Parse fields { #define DATATYPE99_PRIV_parseFields(...) \ ML99_listFromTuples(v(DATATYPE99_PRIV_parseField), v(__VA_ARGS__)) #define DATATYPE99_PRIV_parseField_IMPL(ty, ident) v((ty, ident)) // } (Parse fields) // Variant { #define DATATYPE99_PRIV_variant(tag, sig) ML99_tuple(tag, sig) #define DATATYPE99_PRIV_forEachVariant(f, variants) \ ML99_listMapInPlace(ML99_compose(f, v(ML99_untuple)), variants) // } (Variant) // Derivation { #define DATATYPE99_PRIV_IS_DERIVE(x) ML99_IS_TUPLE(ML99_CAT(DATATYPE99_PRIV_IS_DERIVE_, x)) #define DATATYPE99_PRIV_IS_DERIVE_0derive(...) () #define DATATYPE99_PRIV_ELIM_0derive(...) __VA_ARGS__ #define DATATYPE99_PRIV_invokeDeriverForEach(prefix, name, repr, ...) \ ML99_variadicsForEach( \ ML99_appl(v(DATATYPE99_PRIV_invokeDeriver), v(prefix, name, repr)), \ v(__VA_ARGS__)) #define DATATYPE99_PRIV_invokeDeriver_IMPL(prefix, name, repr, deriver) \ ML99_callUneval(prefix##deriver, name, repr) // } (Derivation) // Pattern matching { // clang-format off #define match99(val) \ ML99_CLANG_PRAGMA("clang diagnostic push") \ ML99_CLANG_PRAGMA("clang diagnostic ignored \"-Wcast-qual\"") \ ML99_INTRODUCE_NON_NULL_PTR_TO_STMT(void, datatype99_priv_matched_val, (void *)&(val)) \ ML99_CLANG_PRAGMA("clang diagnostic pop") \ switch ((val).tag) #define DATATYPE99_of_IMPL(...) \ ML99_TERMS( \ v(break; case ML99_CAT(ML99_VARIADICS_GET(0)(__VA_ARGS__), Tag):), \ ML99_IF( \ ML99_VARIADICS_IS_SINGLE(__VA_ARGS__), \ ML99_empty(), \ DATATYPE99_PRIV_genBindingForEach(v(__VA_ARGS__)))) // clang-format on #define otherwise99 \ break; \ default: // clang-format off #define DATATYPE99_ifLet_IMPL(val, tag_, ...) \ ML99_TERMS( \ v(if (tag_##Tag == (val).tag) \ ML99_CLANG_PRAGMA("clang diagnostic push") \ ML99_CLANG_PRAGMA("clang diagnostic ignored \"-Wcast-qual\"") \ ML99_INTRODUCE_NON_NULL_PTR_TO_STMT(void, datatype99_priv_matched_val, (void *)&(val)) \ ML99_CLANG_PRAGMA("clang diagnostic pop")), \ DATATYPE99_PRIV_genBindingForEach(v(tag_, __VA_ARGS__))) // clang-format on #define DATATYPE99_PRIV_genBindingForEach(...) \ ML99_call(DATATYPE99_PRIV_genBindingForEach, __VA_ARGS__) #define DATATYPE99_PRIV_genBindingForEach_IMPL(tag, ...) \ ML99_variadicsForEachI(ML99_appl(v(DATATYPE99_PRIV_genBinding), v(tag)), v(__VA_ARGS__)) #define DATATYPE99_PRIV_genBinding_IMPL(tag_, x, i) \ ML99_IF( \ ML99_DETECT_IDENT(ML99_UNDERSCORE_DETECTOR, x), \ ML99_empty(), \ v(ML99_INTRODUCE_VAR_TO_STMT( \ tag_##_##i *x = &((tag_##SumT *)datatype99_priv_matched_val)->data.tag_._##i))) #define MATCHES99(val, tag_) ((val).tag == tag_##Tag) /// @deprecated Use `MATCHES99` instead. #define matches99(val, tag) \ DATATYPE99_PRIV_PRAGMA_WARN( \ "GCC warning \"`matches99` is deprecated, use `MATCHES99` instead\"") \ MATCHES99(val, tag) // } (Pattern matching) /* * For each variant: * * typedef struct SumT; * * (For a non-empty variant:) * typedef struct { * 0 _0; * ... * N _N; * } ; * * typedef 0 _0; * ... * typedef N _N; */ #define DATATYPE99_PRIV_genVariantTypedefsForEach(name, variants) \ DATATYPE99_PRIV_forEachVariant( \ ML99_appl(v(DATATYPE99_PRIV_genVariantTypedefs), v(name)), \ v(variants)) #define DATATYPE99_PRIV_genVariantTypedefs_IMPL(name, tag, sig) \ ML99_TERMS( \ v(typedef struct name tag##SumT;), \ ML99_IF( \ ML99_IS_CONS(sig), \ DATATYPE99_PRIV_genVariantStruct(name, tag, sig), \ ML99_empty()), \ DATATYPE99_PRIV_genParamTypedefForEach(tag, sig)) /* * typedef struct { * 0 _0; * ... * N _N; * } ; */ #define DATATYPE99_PRIV_genVariantStruct(name, tag, sig) \ ML99_typedef(v(name##tag), ML99_struct(v(name##tag), ML99_indexedFields(v(sig)))) /* * typedef 0 _0; * ... * typedef N _N; */ #define DATATYPE99_PRIV_genParamTypedefForEach(tag, sig) \ ML99_listMapInPlaceI(ML99_appl(v(DATATYPE99_PRIV_genParamTypedef), v(tag)), v(sig)) #define DATATYPE99_PRIV_genParamTypedef_IMPL(tag, type, i) v(typedef type tag##_##i;) /* * 0Tag, ..., NTag */ #define DATATYPE99_PRIV_genTagForEach(variants) \ DATATYPE99_PRIV_forEachVariant(v(DATATYPE99_PRIV_genTag), v(variants)) #define DATATYPE99_PRIV_genTag_IMPL(tag, _sig) v(tag##Tag, ) /* * 0 0; * ... * N N; */ #define DATATYPE99_PRIV_genUnionFieldForEach(name, variants) \ ML99_uncomma(ML99_QUOTE( \ v(char dummy;), \ DATATYPE99_PRIV_forEachVariant( \ ML99_appl(v(DATATYPE99_PRIV_genUnionField), v(name)), \ v(variants)))) #define DATATYPE99_PRIV_genUnionField_IMPL(name, tag, sig) \ ML99_IF(ML99_IS_CONS(sig), v(name##tag tag;), ML99_empty()) /* * inline static 0(...) { ... } * ... * inline static N(...) { ... } */ #define DATATYPE99_PRIV_genCtorForEach(name, variants) \ DATATYPE99_PRIV_forEachVariant(ML99_appl(v(DATATYPE99_PRIV_genCtor), v(name)), v(variants)) #define DATATYPE99_PRIV_genCtor_IMPL(name, tag, sig) \ ML99_call( \ DATATYPE99_PRIV_genCtorTemplate, \ v(name, tag), \ ML99_indexedParams(v(sig)), \ ML99_repeat(ML99_listLen(v(sig)), ML99_appl(v(DATATYPE99_PRIV_assignResult), v(tag)))) #define DATATYPE99_PRIV_assignResult_IMPL(tag, i) v(result.data.tag._##i = _##i;) #define DATATYPE99_PRIV_genCtorTemplate_IMPL(name, tag_, params, assigned_fields) \ v(inline static DATATYPE99_PRIV_CTOR_ATTRS name tag_ params { \ name result; \ result.tag = tag_##Tag; \ result.data.dummy = '\0'; /* Ensure that we always initialise memory (even if the variant \ has no parameters). */ \ { assigned_fields } \ return result; \ }) /* * 0 0; * ... * N N; */ #define DATATYPE99_PRIV_genRecordFieldForEach(fields) \ ML99_listMapInPlace(ML99_compose(v(DATATYPE99_PRIV_genRecordField), v(ML99_untuple)), v(fields)) #define DATATYPE99_PRIV_genRecordField_IMPL(ty, ident) v(ty ident;) // Compiler-specific stuff { #define DATATYPE99_PRIV_CTOR_ATTRS DATATYPE99_PRIV_WARN_UNUSED_RESULT DATATYPE99_PRIV_CONST #if defined(__GNUC__) #define DATATYPE99_PRIV_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else #define DATATYPE99_PRIV_WARN_UNUSED_RESULT #endif #if defined(__GNUC__) && !defined(__clang__) #define DATATYPE99_PRIV_CONST __attribute__((const)) #else #define DATATYPE99_PRIV_CONST #endif #define DATATYPE99_PRIV_IS_GCC_4_8_1_OR_HIGHER \ ((__GNUC__ == 4 && \ (__GNUC_MINOR__ >= 8 && __GNUC_PATCHLEVEL__ >= 1 || __GNUC_MINOR__ >= 9)) || \ __GNUC__ >= 5) #if defined(__clang__) || DATATYPE99_PRIV_IS_GCC_4_8_1_OR_HIGHER #define DATATYPE99_PRIV_PRAGMA_WARN _Pragma #else #define DATATYPE99_PRIV_PRAGMA_WARN ML99_EMPTY #endif // } (Compiler-specific stuff) // Arity specifiers { #define DATATYPE99_PRIV_parseVariant_ARITY 1 #define DATATYPE99_PRIV_parseField_ARITY 1 #define DATATYPE99_PRIV_invokeDeriver_ARITY 2 #define DATATYPE99_PRIV_genBinding_ARITY 3 #define DATATYPE99_PRIV_genVariantTypedefs_ARITY 2 #define DATATYPE99_PRIV_genParamTypedef_ARITY 3 #define DATATYPE99_PRIV_genTag_ARITY 1 #define DATATYPE99_PRIV_genUnionField_ARITY 2 #define DATATYPE99_PRIV_genCtor_ARITY 2 #define DATATYPE99_PRIV_assignResult_ARITY 2 #define DATATYPE99_PRIV_genRecordField_ARITY 1 // Public: #define DATATYPE99_datatype_ARITY 1 #define DATATYPE99_record_ARITY 1 #define DATATYPE99_of_ARITY 1 #define DATATYPE99_ifLet_ARITY 3 #define DATATYPE99_attrIsPresent_ARITY 1 #define DATATYPE99_attrValue_ARITY 1 #define DATATYPE99_assertAttrIsPresent_ARITY 1 // } (Arity specifiers) #endif // DATATYPE99_H hkl-5.1.7/third-party/metalang99/0000775000175000017500000000000015144640565015517 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/logical.h0000664000175000017500000000030214677222567017305 0ustar00piccapicca/** * @file * This module is deprecated and exists only for backwards compatibility. */ #ifndef ML99_LOGICAL_H #define ML99_LOGICAL_H #include #endif // ML99_LOGICAL_H hkl-5.1.7/third-party/metalang99/nat.h0000664000175000017500000003116414677222567016467 0ustar00piccapicca/** * @file * Natural numbers: [0; 255]. * * Most of the time, natural numbers are used for iteration; they are not meant for CPU-bound tasks * such as Fibonacci numbers or factorials. */ #ifndef ML99_NAT_H #define ML99_NAT_H #include #include #include #include #include #include /** * \f$x + 1\f$ * * # Examples * * @code * #include * * // 6 * ML99_inc(v(5)) * @endcode * * @note If @p x is #ML99_NAT_MAX, the result is 0. */ #define ML99_inc(x) ML99_call(ML99_inc, x) /** * \f$x - 1\f$ * * # Examples * * @code * #include * * // 4 * ML99_dec(v(5)) * @endcode * * @note If @p x is 0, the result is #ML99_NAT_MAX. */ #define ML99_dec(x) ML99_call(ML99_dec, x) /** * Matches @p x against the two cases: if it is zero or positive. * * # Examples * * @code * #include * * #define MATCH_Z_IMPL() v(Billie) * #define MATCH_S_IMPL(x) v(Jean ~ x) * * // Billie * ML99_natMatch(v(0), v(MATCH_)) * * // Jean ~ 122 * ML99_natMatch(v(123), v(MATCH_)) * @endcode * * @note This function calls @p f with #ML99_call, so no partial application occurs, and so * arity specifiers are not needed. */ #define ML99_natMatch(x, matcher) ML99_call(ML99_natMatch, x, matcher) /** * The same as #ML99_natMatch but provides additional arguments to all branches. * * # Examples * * @code * #include * * #define MATCH_Z_IMPL(x, y, z) v(Billie ~ x y z) * #define MATCH_S_IMPL(n, x, y, z) v(Jean ~ n ~ x y z) * * // Billie ~ 1 2 3 * ML99_natMatchWithArgs(v(0), v(MATCH_), v(1, 2, 3)) * * // Jean ~ 122 ~ 1 2 3 * ML99_natMatchWithArgs(v(123), v(MATCH_), v(1, 2, 3)) * @endcode */ #define ML99_natMatchWithArgs(x, matcher, ...) \ ML99_call(ML99_natMatchWithArgs, x, matcher, __VA_ARGS__) /** * \f$x = y\f$ * * # Examples * * @code * #include * * // 1 * ML99_natEq(v(5), v(5)) * * // 0 * ML99_natEq(v(3), v(8)) * @endcode */ #define ML99_natEq(x, y) ML99_call(ML99_natEq, x, y) /** * \f$x \neq y\f$ * * # Examples * * @code * #include * * // 0 * ML99_natNeq(v(5), v(5)) * * // 1 * ML99_natNeq(v(3), v(8)) * @endcode */ #define ML99_natNeq(x, y) ML99_call(ML99_natNeq, x, y) /** * \f$x > y\f$ * * # Examples * * @code * #include * * // 1 * ML99_greater(v(8), v(3)) * * // 0 * ML99_greater(v(3), v(8)) * @endcode */ #define ML99_greater(x, y) ML99_call(ML99_greater, x, y) /** * \f$x \geq y\f$ * * # Examples * * @code * #include * * // 1 * ML99_greaterEq(v(8), v(8)) * * // 0 * ML99_greaterEq(v(3), v(8)) * @endcode */ #define ML99_greaterEq(x, y) ML99_call(ML99_greaterEq, x, y) /** * \f$x < y\f$ * * # Examples * * @code * #include * * // 1 * ML99_lesser(v(3), v(8)) * * // 0 * ML99_lesser(v(8), v(3)) * @endcode */ #define ML99_lesser(x, y) ML99_call(ML99_lesser, x, y) /** * \f$x \leq y\f$ * * # Examples * * @code * #include * * // 1 * ML99_lesserEq(v(8), v(8)) * * // 0 * ML99_lesserEq(v(8), v(3)) * @endcode */ #define ML99_lesserEq(x, y) ML99_call(ML99_lesserEq, x, y) /** * \f$x + y\f$ * * # Examples * * @code * #include * * // 11 * ML99_add(v(5), v(6)) * @endcode */ #define ML99_add(x, y) ML99_call(ML99_add, x, y) /** * \f$x - y\f$ * * # Examples * * @code * #include * * // 6 * ML99_sub(v(11), v(5)) * @endcode */ #define ML99_sub(x, y) ML99_call(ML99_sub, x, y) /** * \f$x * y\f$ * * # Examples * * @code * #include * * // 12 * ML99_mul(v(3), v(4)) * @endcode */ #define ML99_mul(x, y) ML99_call(ML99_mul, x, y) /** * \f$\frac{x}{y}\f$ * * # Examples * * @code * #include * * // 3 * ML99_div(v(12), v(4)) * @endcode * * @note A compile-time error if \f$\frac{x}{y}\f$ is not a natural number. */ #define ML99_div(x, y) ML99_call(ML99_div, x, y) /** * Like #ML99_div but returns `ML99_nothing()` is @p x is not divisible by @p y, * otherwise `ML99_just(result)`. * * # Examples * * @code * #include * * // ML99_just(3) * ML99_divChecked(v(12), v(4)) * * // ML99_nothing() * ML99_divChecked(v(14), v(5)) * * // ML99_nothing() * ML99_divChecked(v(1), v(0)) * @endcode */ #define ML99_divChecked(x, y) ML99_call(ML99_divChecked, x, y) /** * Computes the remainder of division. * * # Examples * * @code * #include * * // 2 * ML99_mod(v(8), v(3)) * @endcode * * @note A compile-time error if @p y is 0. */ #define ML99_mod(x, y) ML99_call(ML99_mod, x, y) /** * \f$x + y + z\f$ * * # Examples * * @code * #include * * // 15 * ML99_add3(v(1), v(6), v(8)) * @endcode */ #define ML99_add3(x, y, z) ML99_call(ML99_add3, x, y, z) /** * \f$x - y - z\f$ * * # Examples * * @code * #include * * // 3 * ML99_sub3(v(8), v(2), v(3)) * @endcode */ #define ML99_sub3(x, y, z) ML99_call(ML99_sub3, x, y, z) /** * \f$x * y * z\f$ * * # Examples * * @code * #include * * // 24 * ML99_mul3(v(2), v(3), v(4)) * @endcode */ #define ML99_mul3(x, y, z) ML99_call(ML99_mul3, x, y, z) /** * \f$\frac{(\frac{x}{y})}{z}\f$ * * # Examples * * @code * #include * * // 5 * ML99_div(v(30), v(3), v(2)) * @endcode * * @note A compile-time error if \f$\frac{(\frac{x}{y})}{z}\f$ is not a natural number. */ #define ML99_div3(x, y, z) ML99_call(ML99_div3, x, y, z) /** * \f$min(x, y)\f$ * * # Examples * * @code * #include * * // 5 * ML99_min(v(5), v(7)) * @endcode */ #define ML99_min(x, y) ML99_call(ML99_min, x, y) /** * \f$max(x, y)\f$ * * # Examples * * @code * #include * * // 7 * ML99_max(v(5), v(7)) * @endcode */ #define ML99_max(x, y) ML99_call(ML99_max, x, y) /** * Emits a fatal error if @p x is not a natural number, otherwise results in emptiness. * * # Examples * * @code * #include * * #define F_IMPL(x) ML99_TERMS(ML99_assertIsNat(v(x)), ML99_inc(v(x))) * * // 6 * ML99_call(F, v(5)) * * // A compile-time number mismatch error. * ML99_call(F, v(blah)) * @endcode */ #define ML99_assertIsNat(x) ML99_call(ML99_assertIsNat, x) #define ML99_INC(x) ML99_PRIV_INC(x) #define ML99_DEC(x) ML99_PRIV_DEC(x) #define ML99_NAT_EQ(x, y) ML99_PRIV_NAT_EQ(x, y) #define ML99_NAT_NEQ(x, y) ML99_PRIV_NOT(ML99_NAT_EQ(x, y)) #define ML99_DIV_CHECKED(x, y) ML99_PRIV_DIV_CHECKED(x, y) /** * The maximum value of a natural number, currently 255. */ #define ML99_NAT_MAX 255 #ifndef DOXYGEN_IGNORE // Pattern matching { #define ML99_natMatch_IMPL(x, matcher) \ ML99_PRIV_IF( \ ML99_NAT_EQ(x, 0), \ ML99_callUneval(matcher##Z, ), \ ML99_callUneval(matcher##S, ML99_DEC(x))) #define ML99_natMatchWithArgs_IMPL(x, matcher, ...) \ ML99_PRIV_IF( \ ML99_NAT_EQ(x, 0), \ ML99_callUneval(matcher##Z, __VA_ARGS__), \ ML99_callUneval(matcher##S, ML99_DEC(x), __VA_ARGS__)) // } (Pattern matching) // Comparison operators { #define ML99_natEq_IMPL(x, y) v(ML99_NAT_EQ(x, y)) #define ML99_natNeq_IMPL(x, y) v(ML99_NAT_NEQ(x, y)) #define ML99_lesser_IMPL(x, y) \ ML99_PRIV_IF( \ ML99_NAT_EQ(y, 0), \ v(ML99_PRIV_FALSE()), \ ML99_PRIV_IF( \ ML99_NAT_EQ(x, ML99_DEC(y)), \ v(ML99_PRIV_TRUE()), \ ML99_callUneval(ML99_lesser, x, ML99_DEC(y)))) #define ML99_lesserEq_IMPL(x, y) ML99_greaterEq_IMPL(y, x) #define ML99_greater_IMPL(x, y) ML99_lesser_IMPL(y, x) #define ML99_greaterEq_IMPL(x, y) \ ML99_PRIV_IF(ML99_NAT_EQ(x, y), v(ML99_PRIV_TRUE()), ML99_greater_IMPL(x, y)) // } (Comparison operators) // Arithmetical operators { #define ML99_inc_IMPL(x) v(ML99_INC(x)) #define ML99_dec_IMPL(x) v(ML99_DEC(x)) #define ML99_add_IMPL(x, y) \ ML99_PRIV_IF(ML99_NAT_EQ(y, 0), v(x), ML99_callUneval(ML99_add, ML99_INC(x), ML99_DEC(y))) #define ML99_sub_IMPL(x, y) \ ML99_PRIV_IF(ML99_NAT_EQ(y, 0), v(x), ML99_callUneval(ML99_sub, ML99_DEC(x), ML99_DEC(y))) #define ML99_mul_IMPL(x, y) \ ML99_PRIV_IF(ML99_NAT_EQ(y, 0), v(0), ML99_add(v(x), ML99_callUneval(ML99_mul, x, ML99_DEC(y)))) #define ML99_add3_IMPL(x, y, z) ML99_add(ML99_add_IMPL(x, y), v(z)) #define ML99_sub3_IMPL(x, y, z) ML99_sub(ML99_sub_IMPL(x, y), v(z)) #define ML99_mul3_IMPL(x, y, z) ML99_mul(ML99_mul_IMPL(x, y), v(z)) #define ML99_div3_IMPL(x, y, z) ML99_div(ML99_div_IMPL(x, y), v(z)) #define ML99_min_IMPL(x, y) ML99_call(ML99_if, ML99_lesser_IMPL(x, y), v(x, y)) #define ML99_max_IMPL(x, y) ML99_call(ML99_if, ML99_lesser_IMPL(x, y), v(y, x)) #define ML99_divChecked_IMPL(x, y) v(ML99_DIV_CHECKED(x, y)) // ML99_mod_IMPL { #define ML99_mod_IMPL(x, y) \ ML99_PRIV_IF( \ ML99_NAT_EQ(y, 0), \ ML99_fatal(ML99_mod, modulo by 0), \ ML99_PRIV_modAux_IMPL(x, y, 0)) #define ML99_PRIV_modAux_IMPL(x, y, acc) \ ML99_PRIV_IF( \ ML99_PRIV_OR(ML99_NAT_EQ(x, 0), ML99_IS_JUST(ML99_DIV_CHECKED(x, y))), \ v(acc), \ ML99_callUneval(ML99_PRIV_modAux, ML99_DEC(x), y, ML99_INC(acc))) // } (ML99_mod_IMPL) // } (Arithmetical operators) #define ML99_assertIsNat_IMPL(x) \ ML99_PRIV_IF( \ ML99_PRIV_NAT_EQ(x, x), \ v(ML99_PRIV_EMPTY()), \ ML99_PRIV_ASSERT_IS_NAT_FATAL(x, ML99_NAT_MAX)) // clang-format off #define ML99_PRIV_ASSERT_IS_NAT_FATAL(x, max) ML99_fatal(ML99_assertIsNat, x must be within [0; max]) // clang-format on // Arity specifiers { #define ML99_inc_ARITY 1 #define ML99_dec_ARITY 1 #define ML99_natMatch_ARITY 2 #define ML99_natMatchWithArgs_ARITY 3 #define ML99_natEq_ARITY 2 #define ML99_natNeq_ARITY 2 #define ML99_greater_ARITY 2 #define ML99_greaterEq_ARITY 2 #define ML99_lesser_ARITY 2 #define ML99_lesserEq_ARITY 2 #define ML99_add_ARITY 2 #define ML99_sub_ARITY 2 #define ML99_mul_ARITY 2 #define ML99_div_ARITY 2 #define ML99_divChecked_ARITY 2 #define ML99_mod_ARITY 2 #define ML99_add3_ARITY 3 #define ML99_sub3_ARITY 3 #define ML99_mul3_ARITY 3 #define ML99_div3_ARITY 3 #define ML99_min_ARITY 2 #define ML99_max_ARITY 2 #define ML99_assertIsNat_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_NAT_H hkl-5.1.7/third-party/metalang99/ident.h0000664000175000017500000003627614677222567017021 0ustar00piccapicca/** * @file * Identifiers: `[a-zA-Z0-9_]+`. * * An identifier is a sequence of characters. A character is one of: * * - digits (`0123456789`), * - lowercase letters (`abcdefghijklmnopqrstuvwxyz`), * - uppercase letters (`ABCDEFGHIJKLMNOPQRSTUVWXYZ`), * - the underscore character (`_`). * * For example, here are identifiers: `_ak39A`, `192_iAjP_2`, `r9`. But these are **not** * identifiers: `~18nA`, `o78*`, `3i#^hdd`. */ #ifndef ML99_IDENT_H #define ML99_IDENT_H #include #include #include #include /** * Tells whether @p ident belongs to a set of identifiers defined by @p prefix. * * If `ML99_cat(prefix, ident)` exists, it must be an object-like macro which expands to `()`. If * so, `ML99_detectIdent(prefix, ident)` will expand to truth, otherwise (`ML99_cat(prefix, ident)` * does **not** exist), `ML99_detectIdent(prefix, ident)` will expand to falsehood. * * # Predefined detectors * * - `ML99_UNDERSCORE_DETECTOR` detects the underscore character (`_`). * * # Examples * * @code * #include * * #define FOO_x () * #define FOO_y () * * // 1 * ML99_detectIdent(v(FOO_), v(x)) * * // 1 * ML99_detectIdent(v(FOO_), v(y)) * * // 0 * ML99_detectIdent(v(FOO_), v(z)) * * // 1 * ML99_detectIdent(v(ML99_UNDERSCORE_DETECTOR), v(_)) * @endcode */ #define ML99_detectIdent(prefix, ident) ML99_call(ML99_detectIdent, prefix, ident) /** * Compares two identifiers @p x and @p y for equality. * * This macro is a shortcut to `ML99_detectIdent(ML99_cat3(prefix, x, v(_)), y)`. * * # Predefined detectors * * - `ML99_C_KEYWORD_DETECTOR` detects all the [C11 * keywords](https://en.cppreference.com/w/c/keyword). * - `ML99_LOWERCASE_DETECTOR` detects lowercase letters (`abcdefghijklmnopqrstuvwxyz`). * - `ML99_UPPERCASE_DETECTOR` detects uppercase letters (`ABCDEFGHIJKLMNOPQRSTUVWXYZ`). * - `ML99_DIGIT_DETECTOR` detects digits (`0123456789`). * * # Examples * * @code * #include * * #define FOO_x_x () * #define FOO_y_y () * * // 1 * ML99_identEq(v(FOO_), v(x), v(x)) * * // 1 * ML99_identEq(v(FOO_), v(y), v(y)) * * // 0 * ML99_identEq(v(FOO_), v(x), v(y)) * * // 1 * ML99_identEq(v(ML99_C_KEYWORD_DETECTOR), v(while), v(while)) * ML99_identEq(v(ML99_LOWERCASE_DETECTOR), v(x), v(x)) * ML99_identEq(v(ML99_UPPERCASE_DETECTOR), v(X), v(X)) * ML99_identEq(v(ML99_DIGIT_DETECTOR), v(5), v(5)) * @endcode */ #define ML99_identEq(prefix, x, y) ML99_call(ML99_identEq, prefix, x, y) /** * Compares two characters @p x and @p y for equality. * * @p x and @p y can be any identifiers, though this function evaluates to true only for characters. * * # Examples * * @code * #include * * // 1 * ML99_charEq(v(t), v(t)) * * // 0 * ML99_charEq(v(9), v(A)) * * // 0 * ML99_charEq(v(9), v(abcd)) * @endcode */ #define ML99_charEq(x, y) ML99_call(ML99_charEq, x, y) /** * Tells whether the identifier @p x is a lowercase letter. */ #define ML99_isLowercase(x) ML99_call(ML99_isLowercase, x) /** * Tells whether the identifier @p x is an uppercase letter. */ #define ML99_isUppercase(x) ML99_call(ML99_isUppercase, x) /** * Tells whether the identifier @p x is a digit. */ #define ML99_isDigit(x) ML99_call(ML99_isDigit, x) /** * Tells whether the identifier @p x is a character. */ #define ML99_isChar(x) ML99_call(ML99_isChar, x) /** * Converts the Metalang99 character @p x to a C character literal. * * # Examples * * @code * #include * * // 't' * ML99_charLit(v(t)) * * // '9' * ML99_charLit(v(9)) * * // '_' * ML99_charLit(v(_)) * @endcode * * @note The inverse of this function is impossible, i.e., you cannot get `q` from `'q'`. */ #define ML99_charLit(x) ML99_call(ML99_charLit, x) /** * Expands to all comma-separated lowercase letters. * * This macro consumes all arguments. * * # Examples * * @code * #include * #include * * #define F_IMPL(x) v([x]) * #define F_ARITY 1 * * // [a] [b] [c] ... [x] [y] [z] * ML99_variadicsForEach(v(F), v(ML99_LOWERCASE_CHARS())) * @endcode */ #define ML99_LOWERCASE_CHARS(...) \ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z /** * The same as #ML99_LOWERCASE_CHARS but for uppercase characters. */ #define ML99_UPPERCASE_CHARS(...) \ A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z /** * The same as #ML99_LOWERCASE_CHARS but for digits. */ #define ML99_DIGITS(...) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 #define ML99_DETECT_IDENT(prefix, ident) ML99_PRIV_IS_TUPLE_FAST(ML99_PRIV_CAT(prefix, ident)) #define ML99_IDENT_EQ(prefix, x, y) ML99_DETECT_IDENT(ML99_PRIV_CAT3(prefix, x, _), y) #define ML99_CHAR_EQ(x, y) \ ML99_PRIV_IF( \ ML99_DETECT_IDENT(ML99_UNDERSCORE_DETECTOR, x), \ ML99_DETECT_IDENT(ML99_UNDERSCORE_DETECTOR, y), \ ML99_PRIV_OR3( \ ML99_IDENT_EQ(ML99_LOWERCASE_DETECTOR, x, y), \ ML99_IDENT_EQ(ML99_UPPERCASE_DETECTOR, x, y), \ ML99_IDENT_EQ(ML99_DIGIT_DETECTOR, x, y))) #define ML99_IS_LOWERCASE(x) ML99_IDENT_EQ(ML99_LOWERCASE_DETECTOR, x, x) #define ML99_IS_UPPERCASE(x) ML99_IDENT_EQ(ML99_UPPERCASE_DETECTOR, x, x) #define ML99_IS_DIGIT(x) ML99_IDENT_EQ(ML99_DIGIT_DETECTOR, x, x) #define ML99_IS_CHAR(x) \ ML99_PRIV_OR4( \ ML99_IS_LOWERCASE(x), \ ML99_IS_UPPERCASE(x), \ ML99_IS_DIGIT(x), \ ML99_DETECT_IDENT(ML99_UNDERSCORE_DETECTOR, x)) #define ML99_CHAR_LIT(x) ML99_PRIV_CAT(ML99_PRIV_CHAR_LIT_, x) #ifndef DOXYGEN_IGNORE #define ML99_detectIdent_IMPL(prefix, ident) v(ML99_DETECT_IDENT(prefix, ident)) #define ML99_identEq_IMPL(prefix, x, y) v(ML99_IDENT_EQ(prefix, x, y)) #define ML99_charEq_IMPL(x, y) v(ML99_CHAR_EQ(x, y)) #define ML99_isLowercase_IMPL(x) v(ML99_IS_LOWERCASE(x)) #define ML99_isUppercase_IMPL(x) v(ML99_IS_UPPERCASE(x)) #define ML99_isDigit_IMPL(x) v(ML99_IS_DIGIT(x)) #define ML99_isChar_IMPL(x) v(ML99_IS_CHAR(x)) #define ML99_charLit_IMPL(x) v(ML99_CHAR_LIT(x)) #define ML99_UNDERSCORE_DETECTOR ML99_PRIV_UNDERSCORE_DETECTOR_ #define ML99_C_KEYWORD_DETECTOR ML99_PRIV_C_KEYWORD_DETECTOR_ #define ML99_LOWERCASE_DETECTOR ML99_PRIV_LOWER_DETECTOR_ #define ML99_UPPERCASE_DETECTOR ML99_PRIV_UPPER_DETECTOR_ #define ML99_DIGIT_DETECTOR ML99_PRIV_DIGIT_DETECTOR_ #define ML99_PRIV_C_KEYWORD_DETECTOR_auto_auto () #define ML99_PRIV_C_KEYWORD_DETECTOR_break_break () #define ML99_PRIV_C_KEYWORD_DETECTOR_case_case () #define ML99_PRIV_C_KEYWORD_DETECTOR_char_char () #define ML99_PRIV_C_KEYWORD_DETECTOR_const_const () #define ML99_PRIV_C_KEYWORD_DETECTOR_continue_continue () #define ML99_PRIV_C_KEYWORD_DETECTOR_default_default () #define ML99_PRIV_C_KEYWORD_DETECTOR_do_do () #define ML99_PRIV_C_KEYWORD_DETECTOR_double_double () #define ML99_PRIV_C_KEYWORD_DETECTOR_else_else () #define ML99_PRIV_C_KEYWORD_DETECTOR_enum_enum () #define ML99_PRIV_C_KEYWORD_DETECTOR_extern_extern () #define ML99_PRIV_C_KEYWORD_DETECTOR_float_float () #define ML99_PRIV_C_KEYWORD_DETECTOR_for_for () #define ML99_PRIV_C_KEYWORD_DETECTOR_goto_goto () #define ML99_PRIV_C_KEYWORD_DETECTOR_if_if () #define ML99_PRIV_C_KEYWORD_DETECTOR_inline_inline () #define ML99_PRIV_C_KEYWORD_DETECTOR_int_int () #define ML99_PRIV_C_KEYWORD_DETECTOR_long_long () #define ML99_PRIV_C_KEYWORD_DETECTOR_register_register () #define ML99_PRIV_C_KEYWORD_DETECTOR_restrict_restrict () #define ML99_PRIV_C_KEYWORD_DETECTOR_return_return () #define ML99_PRIV_C_KEYWORD_DETECTOR_short_short () #define ML99_PRIV_C_KEYWORD_DETECTOR_signed_signed () #define ML99_PRIV_C_KEYWORD_DETECTOR_sizeof_sizeof () #define ML99_PRIV_C_KEYWORD_DETECTOR_static_static () #define ML99_PRIV_C_KEYWORD_DETECTOR_struct_struct () #define ML99_PRIV_C_KEYWORD_DETECTOR_switch_switch () #define ML99_PRIV_C_KEYWORD_DETECTOR_typedef_typedef () #define ML99_PRIV_C_KEYWORD_DETECTOR_union_union () #define ML99_PRIV_C_KEYWORD_DETECTOR_unsigned_unsigned () #define ML99_PRIV_C_KEYWORD_DETECTOR_void_void () #define ML99_PRIV_C_KEYWORD_DETECTOR_volatile_volatile () #define ML99_PRIV_C_KEYWORD_DETECTOR_while_while () #define ML99_PRIV_C_KEYWORD_DETECTOR__Alignas__Alignas () #define ML99_PRIV_C_KEYWORD_DETECTOR__Alignof__Alignof () #define ML99_PRIV_C_KEYWORD_DETECTOR__Atomic__Atomic () #define ML99_PRIV_C_KEYWORD_DETECTOR__Bool__Bool () #define ML99_PRIV_C_KEYWORD_DETECTOR__Complex__Complex () #define ML99_PRIV_C_KEYWORD_DETECTOR__Generic__Generic () #define ML99_PRIV_C_KEYWORD_DETECTOR__Imaginary__Imaginary () #define ML99_PRIV_C_KEYWORD_DETECTOR__Noreturn__Noreturn () #define ML99_PRIV_C_KEYWORD_DETECTOR__Static_assert__Static_assert () #define ML99_PRIV_C_KEYWORD_DETECTOR__Thread_local__Thread_local () #define ML99_PRIV_UNDERSCORE_DETECTOR__ () #define ML99_PRIV_LOWER_DETECTOR_a_a () #define ML99_PRIV_LOWER_DETECTOR_b_b () #define ML99_PRIV_LOWER_DETECTOR_c_c () #define ML99_PRIV_LOWER_DETECTOR_d_d () #define ML99_PRIV_LOWER_DETECTOR_e_e () #define ML99_PRIV_LOWER_DETECTOR_f_f () #define ML99_PRIV_LOWER_DETECTOR_g_g () #define ML99_PRIV_LOWER_DETECTOR_h_h () #define ML99_PRIV_LOWER_DETECTOR_i_i () #define ML99_PRIV_LOWER_DETECTOR_j_j () #define ML99_PRIV_LOWER_DETECTOR_k_k () #define ML99_PRIV_LOWER_DETECTOR_l_l () #define ML99_PRIV_LOWER_DETECTOR_m_m () #define ML99_PRIV_LOWER_DETECTOR_n_n () #define ML99_PRIV_LOWER_DETECTOR_o_o () #define ML99_PRIV_LOWER_DETECTOR_p_p () #define ML99_PRIV_LOWER_DETECTOR_q_q () #define ML99_PRIV_LOWER_DETECTOR_r_r () #define ML99_PRIV_LOWER_DETECTOR_s_s () #define ML99_PRIV_LOWER_DETECTOR_t_t () #define ML99_PRIV_LOWER_DETECTOR_u_u () #define ML99_PRIV_LOWER_DETECTOR_v_v () #define ML99_PRIV_LOWER_DETECTOR_w_w () #define ML99_PRIV_LOWER_DETECTOR_x_x () #define ML99_PRIV_LOWER_DETECTOR_y_y () #define ML99_PRIV_LOWER_DETECTOR_z_z () #define ML99_PRIV_UPPER_DETECTOR_A_A () #define ML99_PRIV_UPPER_DETECTOR_B_B () #define ML99_PRIV_UPPER_DETECTOR_C_C () #define ML99_PRIV_UPPER_DETECTOR_D_D () #define ML99_PRIV_UPPER_DETECTOR_E_E () #define ML99_PRIV_UPPER_DETECTOR_F_F () #define ML99_PRIV_UPPER_DETECTOR_G_G () #define ML99_PRIV_UPPER_DETECTOR_H_H () #define ML99_PRIV_UPPER_DETECTOR_I_I () #define ML99_PRIV_UPPER_DETECTOR_J_J () #define ML99_PRIV_UPPER_DETECTOR_K_K () #define ML99_PRIV_UPPER_DETECTOR_L_L () #define ML99_PRIV_UPPER_DETECTOR_M_M () #define ML99_PRIV_UPPER_DETECTOR_N_N () #define ML99_PRIV_UPPER_DETECTOR_O_O () #define ML99_PRIV_UPPER_DETECTOR_P_P () #define ML99_PRIV_UPPER_DETECTOR_Q_Q () #define ML99_PRIV_UPPER_DETECTOR_R_R () #define ML99_PRIV_UPPER_DETECTOR_S_S () #define ML99_PRIV_UPPER_DETECTOR_T_T () #define ML99_PRIV_UPPER_DETECTOR_U_U () #define ML99_PRIV_UPPER_DETECTOR_V_V () #define ML99_PRIV_UPPER_DETECTOR_W_W () #define ML99_PRIV_UPPER_DETECTOR_X_X () #define ML99_PRIV_UPPER_DETECTOR_Y_Y () #define ML99_PRIV_UPPER_DETECTOR_Z_Z () #define ML99_PRIV_DIGIT_DETECTOR_0_0 () #define ML99_PRIV_DIGIT_DETECTOR_1_1 () #define ML99_PRIV_DIGIT_DETECTOR_2_2 () #define ML99_PRIV_DIGIT_DETECTOR_3_3 () #define ML99_PRIV_DIGIT_DETECTOR_4_4 () #define ML99_PRIV_DIGIT_DETECTOR_5_5 () #define ML99_PRIV_DIGIT_DETECTOR_6_6 () #define ML99_PRIV_DIGIT_DETECTOR_7_7 () #define ML99_PRIV_DIGIT_DETECTOR_8_8 () #define ML99_PRIV_DIGIT_DETECTOR_9_9 () #define ML99_PRIV_CHAR_LIT_a 'a' #define ML99_PRIV_CHAR_LIT_b 'b' #define ML99_PRIV_CHAR_LIT_c 'c' #define ML99_PRIV_CHAR_LIT_d 'd' #define ML99_PRIV_CHAR_LIT_e 'e' #define ML99_PRIV_CHAR_LIT_f 'f' #define ML99_PRIV_CHAR_LIT_g 'g' #define ML99_PRIV_CHAR_LIT_h 'h' #define ML99_PRIV_CHAR_LIT_i 'i' #define ML99_PRIV_CHAR_LIT_j 'j' #define ML99_PRIV_CHAR_LIT_k 'k' #define ML99_PRIV_CHAR_LIT_l 'l' #define ML99_PRIV_CHAR_LIT_m 'm' #define ML99_PRIV_CHAR_LIT_n 'n' #define ML99_PRIV_CHAR_LIT_o 'o' #define ML99_PRIV_CHAR_LIT_p 'p' #define ML99_PRIV_CHAR_LIT_q 'q' #define ML99_PRIV_CHAR_LIT_r 'r' #define ML99_PRIV_CHAR_LIT_s 's' #define ML99_PRIV_CHAR_LIT_t 't' #define ML99_PRIV_CHAR_LIT_u 'u' #define ML99_PRIV_CHAR_LIT_v 'v' #define ML99_PRIV_CHAR_LIT_w 'w' #define ML99_PRIV_CHAR_LIT_x 'x' #define ML99_PRIV_CHAR_LIT_y 'y' #define ML99_PRIV_CHAR_LIT_z 'z' #define ML99_PRIV_CHAR_LIT_A 'A' #define ML99_PRIV_CHAR_LIT_B 'B' #define ML99_PRIV_CHAR_LIT_C 'C' #define ML99_PRIV_CHAR_LIT_D 'D' #define ML99_PRIV_CHAR_LIT_E 'E' #define ML99_PRIV_CHAR_LIT_F 'F' #define ML99_PRIV_CHAR_LIT_G 'G' #define ML99_PRIV_CHAR_LIT_H 'H' #define ML99_PRIV_CHAR_LIT_I 'I' #define ML99_PRIV_CHAR_LIT_J 'J' #define ML99_PRIV_CHAR_LIT_K 'K' #define ML99_PRIV_CHAR_LIT_L 'L' #define ML99_PRIV_CHAR_LIT_M 'M' #define ML99_PRIV_CHAR_LIT_N 'N' #define ML99_PRIV_CHAR_LIT_O 'O' #define ML99_PRIV_CHAR_LIT_P 'P' #define ML99_PRIV_CHAR_LIT_Q 'Q' #define ML99_PRIV_CHAR_LIT_R 'R' #define ML99_PRIV_CHAR_LIT_S 'S' #define ML99_PRIV_CHAR_LIT_T 'T' #define ML99_PRIV_CHAR_LIT_U 'U' #define ML99_PRIV_CHAR_LIT_V 'V' #define ML99_PRIV_CHAR_LIT_W 'W' #define ML99_PRIV_CHAR_LIT_X 'X' #define ML99_PRIV_CHAR_LIT_Y 'Y' #define ML99_PRIV_CHAR_LIT_Z 'Z' #define ML99_PRIV_CHAR_LIT_0 '0' #define ML99_PRIV_CHAR_LIT_1 '1' #define ML99_PRIV_CHAR_LIT_2 '2' #define ML99_PRIV_CHAR_LIT_3 '3' #define ML99_PRIV_CHAR_LIT_4 '4' #define ML99_PRIV_CHAR_LIT_5 '5' #define ML99_PRIV_CHAR_LIT_6 '6' #define ML99_PRIV_CHAR_LIT_7 '7' #define ML99_PRIV_CHAR_LIT_8 '8' #define ML99_PRIV_CHAR_LIT_9 '9' #define ML99_PRIV_CHAR_LIT__ '_' // Arity specifiers { #define ML99_detectIdent_ARITY 2 #define ML99_identEq_ARITY 3 #define ML99_charEq_ARITY 2 #define ML99_isLowercase_ARITY 1 #define ML99_isUppercase_ARITY 1 #define ML99_isDigit_ARITY 1 #define ML99_isChar_ARITY 1 #define ML99_charLit_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_IDENT_H hkl-5.1.7/third-party/metalang99/choice.h0000664000175000017500000000735614677222567017145 0ustar00piccapicca/** * @file * Choice types: `(tag, ...)`. * * A choice type, also known as [tagged union], is represented as `(tag, ...)`, where `tag` is the * type of a value and `...` is the value. Perhaps the most common example of a choice type is a * binary tree: * * [[examples/binary_tree.c](https://github.com/Hirrolot/metalang99/blob/master/examples/binary_tree.c)] * @include binary_tree.c * * [tagged union]: https://en.wikipedia.org/wiki/Tagged_union */ #ifndef ML99_CHOICE_H #define ML99_CHOICE_H #include #include /** * Constructs an instance of a choice type. * * # Examples * * See * [examples/binary_tree.c](https://github.com/Hirrolot/metalang99/blob/master/examples/binary_tree.c). * * @note Specify `~` if you do not want to supply data; then, to match it, write a `_` parameter to * ignore. */ #define ML99_choice(tag, ...) ML99_call(ML99_choice, tag, __VA_ARGS__) /** * Evaluates to the tag of @p choice. * * This macro is essentially the same as `ML99_tupleGet(0)`. * * # Examples * * @code * #include * * // foo * ML99_choiceTag(ML99_choice(v(foo), v(1, 2, 3))) * @endcode */ #define ML99_choiceTag(choice) ML99_call(ML99_choiceTag, choice) /** * Evaluates to the data of @p choice. * * This macro is essentially the same as #ML99_tupleTail. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_choiceData(ML99_choice(v(foo), v(1, 2, 3))) * @endcode */ #define ML99_choiceData(choice) ML99_call(ML99_choiceData, choice) /** * Matches the instance @p choice of a choice type. * * This macro results in `ML99_call(ML99_cat(matcher, ML99_choiceTag(choice)), )`. * * # Examples * * See * [examples/binary_tree.c](https://github.com/Hirrolot/metalang99/blob/master/examples/binary_tree.c). */ #define ML99_match(choice, matcher) ML99_call(ML99_match, choice, matcher) /** * The same as #ML99_match but supplies additional arguments to all branches. * * This macro results in `ML99_call(ML99_cat(matcher, ML99_choiceTag(choice)), , * args...)`. * * # Examples * * @code * #include * * #define MATCH_A_IMPL(x, y, z) v(x ~ y ~ z) * * // 123 ~ 456 ~ 789 * ML99_matchWithArgs(ML99_choice(v(A), v(123)), v(MATCH_), v(456, 789)) * @endcode */ #define ML99_matchWithArgs(choice, matcher, ...) \ ML99_call(ML99_matchWithArgs, choice, matcher, __VA_ARGS__) #define ML99_CHOICE(tag, ...) (tag, __VA_ARGS__) #define ML99_CHOICE_TAG(choice) ML99_PRIV_HEAD_AUX choice #define ML99_CHOICE_DATA(choice) ML99_PRIV_TAIL_AUX choice #ifndef DOXYGEN_IGNORE #define ML99_choice_IMPL(tag, ...) v(ML99_CHOICE(tag, __VA_ARGS__)) #define ML99_choiceTag_IMPL(choice) v(ML99_CHOICE_TAG(choice)) #define ML99_choiceData_IMPL(choice) v(ML99_CHOICE_DATA(choice)) #define ML99_match_IMPL(choice, matcher) \ ML99_callUneval(ML99_PRIV_CAT(matcher, ML99_PRIV_HEAD_AUX choice), ML99_PRIV_TAIL_AUX choice) #define ML99_matchWithArgs_IMPL(choice, matcher, ...) \ ML99_callUneval( \ ML99_PRIV_CAT(matcher, ML99_PRIV_HEAD_AUX choice), \ ML99_PRIV_TAIL_AUX choice, \ __VA_ARGS__) // Arity specifiers { #define ML99_choice_ARITY 2 #define ML99_choiceTag_ARITY 1 #define ML99_choiceData_ARITY 1 #define ML99_match_ARITY 2 #define ML99_matchWithArgs_ARITY 3 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_CHOICE_H hkl-5.1.7/third-party/metalang99/either.h0000664000175000017500000001066114677222567017164 0ustar00piccapicca/** * @file * A choice type with two cases. */ #ifndef ML99_EITHER_H #define ML99_EITHER_H #include #include #include #include /** * The left value @p x. */ #define ML99_left(x) ML99_call(ML99_left, x) /** * The right value @p x. */ #define ML99_right(x) ML99_call(ML99_right, x) /** * `ML99_true()` if @p either contains a left value, otherwise `ML99_false()`. * * # Examples * * @code * #include * * // 1 * ML99_isLeft(ML99_left(v(123))) * * // 0 * ML99_isLeft(ML99_right(v(123))) * @endcode */ #define ML99_isLeft(either) ML99_call(ML99_isLeft, either) /** * The inverse of #ML99_isLeft. * * # Examples * * @code * #include * * // 1 * ML99_isRight(ML99_right(v(123))) * * // 0 * ML99_isRight(ML99_left(v(123))) * @endcode */ #define ML99_isRight(either) ML99_call(ML99_isRight, either) /** * Tests @p either and @p other for equality. * * # Examples * * @code * #include * #include * * // 1 * ML99_eitherEq(v(ML99_natEq), ML99_left(v(123)), ML99_left(v(123))) * * // 0 * ML99_eitherEq(v(ML99_natEq), ML99_right(v(123)), ML99_left(v(8))) * * // 0 * ML99_eitherEq(v(ML99_natEq), ML99_right(v(123)), ML99_left(v(123))) * @endcode */ #define ML99_eitherEq(cmp, either, other) ML99_call(ML99_eitherEq, cmp, either, other) /** * Returns the left value on `ML99_left(x)` or emits a fatal error on `ML99_right(y)`. * * # Examples * * @code * #include * * // 123 * ML99_unwrapLeft(ML99_left(v(123))) * * // Emits a fatal error. * ML99_unwrapLeft(ML99_right(v(123))) * @endcode */ #define ML99_unwrapLeft(either) ML99_call(ML99_unwrapLeft, either) /** * The inverse of #ML99_unwrapLeft. * * # Examples * * @code * #include * * // 123 * ML99_unwrapRight(ML99_right(v(123))) * * // Emits a fatal error. * ML99_unwrapRight(ML99_left(v(123))) * @endcode */ #define ML99_unwrapRight(either) ML99_call(ML99_unwrapRight, either) #define ML99_LEFT(x) ML99_CHOICE(left, x) #define ML99_RIGHT(x) ML99_CHOICE(right, x) #define ML99_IS_LEFT(either) ML99_PRIV_IS_LEFT(either) #define ML99_IS_RIGHT(either) ML99_NOT(ML99_IS_LEFT(either)) #ifndef DOXYGEN_IGNORE #define ML99_left_IMPL(x) v(ML99_LEFT(x)) #define ML99_right_IMPL(x) v(ML99_RIGHT(x)) #define ML99_isLeft_IMPL(either) v(ML99_IS_LEFT(either)) #define ML99_isRight_IMPL(either) v(ML99_IS_RIGHT(either)) // ML99_eitherEq_IMPL { #define ML99_eitherEq_IMPL(cmp, either, other) \ ML99_matchWithArgs_IMPL(either, ML99_PRIV_eitherEq_, cmp, other) #define ML99_PRIV_eitherEq_left_IMPL(x, cmp, other) \ ML99_matchWithArgs_IMPL(other, ML99_PRIV_eitherEq_left_, cmp, x) #define ML99_PRIV_eitherEq_right_IMPL(x, cmp, other) \ ML99_matchWithArgs_IMPL(other, ML99_PRIV_eitherEq_right_, cmp, x) #define ML99_PRIV_eitherEq_left_left_IMPL(y, cmp, x) ML99_appl2_IMPL(cmp, x, y) #define ML99_PRIV_eitherEq_left_right_IMPL ML99_false_IMPL #define ML99_PRIV_eitherEq_right_left_IMPL ML99_false_IMPL #define ML99_PRIV_eitherEq_right_right_IMPL(y, cmp, x) ML99_appl2_IMPL(cmp, x, y) // } (ML99_eitherEq_IMPL) #define ML99_unwrapLeft_IMPL(either) ML99_match_IMPL(either, ML99_PRIV_unwrapLeft_) #define ML99_PRIV_unwrapLeft_left_IMPL(x) v(x) #define ML99_PRIV_unwrapLeft_right_IMPL(_x) \ ML99_fatal(ML99_unwrapLeft, expected ML99_left but found ML99_right) #define ML99_unwrapRight_IMPL(either) ML99_match_IMPL(either, ML99_PRIV_unwrapRight_) #define ML99_PRIV_unwrapRight_left_IMPL(_x) \ ML99_fatal(ML99_unwrapRight, expected ML99_right but found ML99_left) #define ML99_PRIV_unwrapRight_right_IMPL(x) v(x) #define ML99_PRIV_IS_LEFT(either) ML99_DETECT_IDENT(ML99_PRIV_IS_LEFT_, ML99_CHOICE_TAG(either)) #define ML99_PRIV_IS_LEFT_left () // Arity specifiers { #define ML99_left_ARITY 1 #define ML99_right_ARITY 1 #define ML99_isLeft_ARITY 1 #define ML99_isRight_ARITY 1 #define ML99_eitherEq_ARITY 3 #define ML99_unwrapLeft_ARITY 1 #define ML99_unwrapRight_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_EITHER_H hkl-5.1.7/third-party/metalang99/misc.h0000664000175000017500000001350014677222567016632 0ustar00piccapicca/** * @file * Miscellaneous stuff. */ #ifndef METALANG99_MISC_H #define METALANG99_MISC_H #include #include #include #include #include #include #include // Desugaring { /** * Invokes @p f @p n times, providing an iteration index each time. * * # Examples * * @code * #include * #include * * // _0 _1 _2 * M_repeat(M_appl(v(M_cat), v(_)), v(3)) * @endcode */ #define METALANG99_repeat(f, n) METALANG99_call(METALANG99_repeat, f, n) /** * Generates \f$(T_0 \ \_0, ..., T_n \ \_n)\f$. * * If @p type_list is empty, this macro results in `(void)`. * * # Examples * * @code * #include * * // (int _0, long long _1, const char * _2) * M_indexedParams(M_list(v(int, long long, const char *))) * * // (void) * M_indexedParams(M_nil()) * @endcode */ #define METALANG99_indexedParams(type_list) METALANG99_call(METALANG99_indexedParams, type_list) /** * Generates \f$T_0 \ \_0; ...; T_n \ \_n\f$. * * If @p type_list is empty, this macro results in emptiness. * * # Examples * * @code * #include * * // int _0; long long _1; const char * _2; * M_indexedFields(M_list(v(int, long long, const char *))) * * // M_empty() * M_indexedFields(M_nil()) * @endcode */ #define METALANG99_indexedFields(type_list) METALANG99_call(METALANG99_indexedFields, type_list) /** * Generates \f$\{ \_0, ..., \_{n - 1} \}\f$. * * If @p n is 0, this macro results in `{ 0 }`. * * # Examples * * @code * #include * * // { _0, _1, _2 } * M_indexedInitializerList(v(3)) * * // { 0 } * M_indexedInitializerList(v(0)) * @endcode */ #define METALANG99_indexedInitializerList(n) METALANG99_call(METALANG99_indexedInitializerList, n) /** * Generates \f$\_0, ..., \_{n - 1}\f$. * * If @p n is 0, this macro results in emptiness. * * # Examples * * @code * #include * * // _0, _1, _2 * M_indexedArgs(v(3)) * * // M_empty() * M_indexedArgs(v(0)) * @endcode */ #define METALANG99_indexedArgs(n) METALANG99_call(METALANG99_indexedArgs, n) // } #ifndef DOXYGEN_IGNORE // Implementation { // METALANG99_repeat_IMPL { #define METALANG99_repeat_IMPL(f, n) METALANG99_natMatchWithArgs_IMPL(n, METALANG99_PRIV_repeat_, f) #define METALANG99_PRIV_repeat_Z_IMPL(_f) METALANG99_empty() #define METALANG99_PRIV_repeat_S_IMPL(i, f) \ METALANG99_terms(METALANG99_repeat_IMPL(f, i), METALANG99_appl_IMPL(f, i)) // } // METALANG99_indexedParams_IMPL { #define METALANG99_indexedParams_IMPL(type_list) \ METALANG99_tuple(METALANG99_ifPlain( \ METALANG99_isNilPlain(type_list), \ v(void), \ METALANG99_variadicsTail(METALANG99_PRIV_indexedParamsAux_IMPL(type_list, 0)))) #define METALANG99_PRIV_indexedParamsAux_IMPL(type_list, i) \ METALANG99_matchWithArgs_IMPL(type_list, METALANG99_PRIV_indexedParamsAux_, i) #define METALANG99_PRIV_indexedParamsAux_nil_IMPL(_, _i) METALANG99_empty() #define METALANG99_PRIV_indexedParamsAux_cons_IMPL(x, xs, i) \ METALANG99_terms(v(, x _##i), METALANG99_PRIV_indexedParamsAux_IMPL(xs, METALANG99_incPlain(i))) // } // METALANG99_indexedFields_IMPL { #define METALANG99_indexedFields_IMPL(type_list) METALANG99_PRIV_indexedFieldsAux_IMPL(type_list, 0) #define METALANG99_PRIV_indexedFieldsAux_IMPL(type_list, i) \ METALANG99_matchWithArgs_IMPL(type_list, METALANG99_PRIV_indexedFields_, i) #define METALANG99_PRIV_indexedFields_nil_IMPL(_, _i) METALANG99_empty() #define METALANG99_PRIV_indexedFields_cons_IMPL(x, xs, i) \ METALANG99_terms(v(x _##i;), METALANG99_PRIV_indexedFieldsAux_IMPL(xs, METALANG99_incPlain(i))) // } // METALANG99_indexedInitializerList_IMPL { #define METALANG99_indexedInitializerList_IMPL(n) \ METALANG99_braced(METALANG99_PRIV_indexedItems(n, v(0))) // } // METALANG99_indexedArgs_IMPL { #define METALANG99_indexedArgs_IMPL(n) METALANG99_PRIV_indexedItems(n, METALANG99_empty()) // } #define METALANG99_PRIV_indexedItems(n, empty_case) \ METALANG99_ifPlain( \ METALANG99_natEqPlain(n, 0), \ empty_case, \ METALANG99_variadicsTail(METALANG99_repeat_IMPL(METALANG99_PRIV_indexedItem, n))) #define METALANG99_PRIV_indexedItem_IMPL(i) v(, _##i) // } (Implementation) // Arity specifiers { #define METALANG99_repeat_ARITY 2 #define METALANG99_indexedParams_ARITY 1 #define METALANG99_indexedFields_ARITY 1 #define METALANG99_indexedInitializerList_ARITY 1 #define METALANG99_indexedArgs_ARITY 1 #define METALANG99_PRIV_indexedItem_ARITY 1 // } // Aliases { #ifndef METALANG99_FULL_PREFIX_ONLY #define M_repeat METALANG99_repeat #define M_indexedParams METALANG99_indexedParams #define M_indexedFields METALANG99_indexedFields #define M_indexedInitializerList METALANG99_indexedInitializerList #define M_indexedArgs METALANG99_indexedArgs #endif // METALANG99_FULL_PREFIX_ONLY // } #endif // DOXYGEN_IGNORE #endif // METALANG99_MISC_H hkl-5.1.7/third-party/metalang99/list.h0000664000175000017500000011424514677222567016662 0ustar00piccapicca/** * @file * Cons-lists. */ #ifndef ML99_LIST_H #define ML99_LIST_H #include #include #include #include #include #include #include #include /** * Prepends @p x to @p xs. * * # Examples * * @code * #include * * ML99_cons(v(1), ML99_cons(v(2), ML99_nil())) * @endcode */ #define ML99_cons(x, xs) ML99_call(ML99_cons, x, xs) /** * The empty list. */ #define ML99_nil(...) ML99_callUneval(ML99_nil, ) /** * Checks @p list for non-emptiness. * * # Examples * * @code * #include * * // 1 * ML99_isCons(ML99_list(v(1, 2, 3))) * * // 0 * ML99_isCons(ML99_nil()) * @endcode */ #define ML99_isCons(list) ML99_call(ML99_isCons, list) /** * Checks @p list for emptiness. * * # Examples * * @code * #include * * // 0 * ML99_isNil(ML99_list(v(1, 2, 3))) * * // 1 * ML99_isNil(ML99_nil()) * @endcode */ #define ML99_isNil(list) ML99_call(ML99_isNil, list) /** * Extracts the head from the non-empty list @p list. * * # Examples * * @code * #include * * // 1 * ML99_listHead(ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listHead(list) ML99_call(ML99_listHead, list) /** * Extracts the tail from the non-empty list @p list. * * # Examples * * @code * #include * * // 2, 3 * ML99_listTail(ML99_list(v(1, 2, 3))) * * // ML99_nil() * ML99_listTail(ML99_list(v(1))) * @endcode */ #define ML99_listTail(list) ML99_call(ML99_listTail, list) /** * Extracts the last element from the non-empty list @p list. * * # Examples * * @code * #include * * // 3 * ML99_listLast(ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listLast(list) ML99_call(ML99_listLast, list) /** * Extracts all the elements of the non-empty list @p list except the last one. * * # Examples * * @code * #include * * // 1, 2 * ML99_listInit(ML99_list(v(1, 2, 3))) * * // ML99_nil() * ML99_listInit(ML99_list(v(1))) * @endcode */ #define ML99_listInit(list) ML99_call(ML99_listInit, list) /** * Constructs a list from its arguments. * * At most 63 arguments are acceptable. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_list(v(1, 2, 3)) * @endcode */ #define ML99_list(...) ML99_call(ML99_list, __VA_ARGS__) /** * Constructs a list from comma-separated [tuples](tuple.html). * * It sequentially applies @p f to each untupled argument, thus forming the resulting list. If some * argument is not a tuple, a fatal error is emitted. * * The result is `ML99_list(ML99_appl(f, ML99_untuple(x1)), ..., ML99_appl(f, ML99_untuple(xN)))`. * * Each variadic argument inherits all the preconditions of #ML99_isUntuple. * * # Examples * * @code * #include * * #define F_IMPL(x, y) v(x + y) * #define F_ARITY 1 * * // ML99_list(v(1 + 2, 3 + 4, 5 + 6)) * ML99_listFromTuples(v(F), v((1, 2), (3, 4), (5, 6))) * @endcode */ #define ML99_listFromTuples(f, ...) ML99_call(ML99_listFromTuples, f, __VA_ARGS__) /** * Constructs a list from the [sequence](seq.html) @p seq. * * Note that @p seq items must **not** contain commas. If you want commas in items, such as `(+, -, * *, /)`, consider wrapping an item in parentheses: `((+, -, *, /))`. * * # Examples * * @code * #include * * // ML99_nil() * ML99_listFromSeq(v()) * * // ML99_list(v(1, 2, 3)) * ML99_listFromSeq(v((1)(2)(3))) * @endcode */ #define ML99_listFromSeq(seq) ML99_call(ML99_listFromSeq, seq) /** * Computes the length of @p list. * * # Examples * * @code * #include * * // 0 * ML99_listLen(ML99_nil()) * * // 3 * ML99_listLen(ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listLen(list) ML99_call(ML99_listLen, list) /** * Evaluates a metaprogram that reduces to a list, then unwraps it. * * It behaves the same as the composition of #ML99_EVAL and #ML99_listUnwrap. * * # Examples * * @code * #include * * // Literally 1 2 3 * ML99_LIST_EVAL(ML99_list(v(1, 2, 3))) * @endcode * * @note This macro does not result in a Metalang99 term; it literally pastes list elements into a * source file. */ #define ML99_LIST_EVAL(...) ML99_EVAL(ML99_call(ML99_listUnwrap, __VA_ARGS__)) /** * The same as #ML99_LIST_EVAL but intersperses a comma between list items. * * # Examples * * @code * #include * * // Literally 1, 2, 3 * ML99_LIST_EVAL_COMMA_SEP(ML99_list(v(1, 2, 3))) * @endcode * * @note This macro does not result in a Metalang99 term; it literally pastes comma-separated list * elements into a source file. */ #define ML99_LIST_EVAL_COMMA_SEP(...) ML99_EVAL(ML99_call(ML99_listUnwrapCommaSep, __VA_ARGS__)) /** * Appends the list @p other to @p list. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_listAppend(ML99_list(v(1)), ML99_list(v(2, 3))) * @endcode */ #define ML99_listAppend(list, other) ML99_call(ML99_listAppend, list, other) /** * Appends the item @p item to @p list. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_listAppendItem(v(3), ML99_list(v(1, 2))) * @endcode */ #define ML99_listAppendItem(item, list) ML99_call(ML99_listAppendItem, item, list) /** * Places all the items in @p list as-is. * * # Examples * * @code * #include * * // Literally 1 2 3 * ML99_listUnwrap(ML99_list(v(1, 2, 3))) * @endcode * * @note The resulting value is still a valid Metalang99 term that need to be evaluated further. * @see #ML99_LIST_EVAL * @see #ML99_LIST_EVAL_COMMA_SEP */ #define ML99_listUnwrap(list) ML99_call(ML99_listUnwrap, list) /** * Places all the items in @p list as-is, separated by commas. * * # Examples * * @code * #include * * // Literally 1, 2, 3 * ML99_listUnwrapCommaSep(ML99_list(v(1, 2, 3))) * @endcode * * @note The resulting value is still a valid Metalang99 term that need to be evaluated further. * @see #ML99_LIST_EVAL * @see #ML99_LIST_EVAL_COMMA_SEP */ #define ML99_listUnwrapCommaSep(list) ML99_call(ML99_listUnwrapCommaSep, list) /** * Reverses the order of items in @p list. * * # Examples * * @code * #include * * // 3, 2, 1 * ML99_listReverse(ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listReverse(list) ML99_call(ML99_listReverse, list) /** * Extracts the @p i -indexed element. * * # Examples * * @code * #include * * // 2 * ML99_listGet(v(1), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listGet(i, list) ML99_call(ML99_listGet, i, list) /** * A right-associative fold over @p list. * * # Examples * * @code * #include * * #define ABCDEFG 123 * * // 7 * ML99_listFoldr(v(ML99_cat), v(7), ML99_nil()) * * // 123 * ML99_listFoldr(ML99_appl(v(ML99_flip), v(ML99_cat)), v(A), ML99_list(v(G, DEF, BC))) * @endcode */ #define ML99_listFoldr(f, init, list) ML99_call(ML99_listFoldr, f, init, list) /** * A left-associative fold over @p list. * * # Examples * * @code * #include * * #define ABCDEFG 123 * * // 7 * ML99_listFoldl(v(ML99_cat), v(7), ML99_nil()) * * // 123 * ML99_listFoldl(v(ML99_cat), v(A), ML99_list(v(BC, DEF, G))) * @endcode */ #define ML99_listFoldl(f, init, list) ML99_call(ML99_listFoldl, f, init, list) /** * The same as #ML99_listFoldl but treats the first element of @p list as the initial value. * * # Examples * * @code * #include * * #define ABCDEFG 123 * * // 123 * ML99_listFoldl1(v(ML99_cat), ML99_list(v(AB, CDEF, G))) * @endcode */ #define ML99_listFoldl1(f, list) ML99_call(ML99_listFoldl1, f, list) /** * Intersperses @p item between the items in @p list. * * # Examples * * @code * #include * * // 1, +, 2, +, 3 * ML99_listIntersperse(v(+), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listIntersperse(item, list) ML99_call(ML99_listIntersperse, item, list) /** * Prepends @p item to all items in @p list. * * # Examples * * @code * #include * * // +, 1, +, 2, +, 3 * ML99_listPrependToAll(v(+), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listPrependToAll(item, list) ML99_call(ML99_listPrependToAll, item, list) /** * Maps all the elements in @p list with @p f. * * # Examples * * @code * #include * #include * * // 4, 5, 6 * ML99_listMap(ML99_appl(v(ML99_add), v(3)), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listMap(f, list) ML99_call(ML99_listMap, f, list) /** * The same as #ML99_listMap but provides an index of an element to @p f. * * # Examples * * @code * #include * * #define F_IMPL(x, i) v(x[i]) * #define F_ARITY 2 * * // a[0], b[1], c[2] * ML99_listMapI(v(F), ML99_list(v(a, b, c))) * @endcode */ #define ML99_listMapI(f, list) ML99_call(ML99_listMapI, f, list) /** * A more efficient version of `ML99_listUnwrap(ML99_listMap(f, list))`. * * @note Unlike #ML99_listMap, @p f can evaluate to many terms. */ #define ML99_listMapInPlace(f, list) ML99_call(ML99_listMapInPlace, f, list) /** * A more efficient version of `ML99_listUnwrap(ML99_listMapI(f, list))`. * * @note Unlike #ML99_listMapI, @p f can evaluate to many terms. */ #define ML99_listMapInPlaceI(f, list) ML99_call(ML99_listMapInPlaceI, f, list) /** * The same as #ML99_listMap but with the reversed order of arguments. * * # Examples * * @code * #include * #include * * // 4, 5, 6 * ML99_listFor(ML99_list(v(1, 2, 3)), ML99_appl(v(ML99_add), v(3))) * @endcode */ #define ML99_listFor(list, f) ML99_call(ML99_listFor, list, f) /** * Maps the initial elements of the non-empty list @p list with @p f_init and the last element with * @p f_last. * * # Examples * * @code * // 4, 5, 10 * ML99_listMapInitLast(ML99_appl(v(ML99_add), v(3)), ML99_appl(v(ML99_add), v(7)), ML99_list(v(1, * 2, 3))) * @endcode */ #define ML99_listMapInitLast(f_init, f_last, list) \ ML99_call(ML99_listMapInitLast, f_init, f_last, list) /** * The same as #ML99_listMapInitLast but accepts @p list as the first parameter. * * # Examples * * @code * // 4, 5, 10 * ML99_listForInitLast(ML99_list(v(1, 2, 3)), ML99_appl(v(ML99_add), v(3)), ML99_appl(v(ML99_add), * v(7))) * @endcode */ #define ML99_listForInitLast(list, f_init, f_last) \ ML99_call(ML99_listForInitLast, list, f_init, f_last) /** * Filters @p list with @p f. * * # Examples * * @code * #include * #include * * // 9, 11, 6 * ML99_listFilter(ML99_appl(v(ML99_lesser), v(5)), ML99_list(v(9, 1, 11, 6, 0, 4))) * @endcode */ #define ML99_listFilter(f, list) ML99_call(ML99_listFilter, f, list) /** * A combination of #ML99_listFilter and #ML99_listMap. * * It builds a new list by applying @p f to each element in @p list: if @p f yields `ML99_just(x)`, * `x` is passed to the new list, otherwise (`ML99_nothing()`), the value is neglected. * * # Examples * * @code * #include * #include * * #define MAYBE_LIST ML99_list(ML99_just(v(5)), ML99_nothing(), ML99_just(v(7))) * * // 5, 7 * ML99_listFilterMap(v(ML99_id), MAYBE_LIST) * @endcode */ #define ML99_listFilterMap(f, list) ML99_call(ML99_listFilterMap, f, list) /** * Tests @p list and @p other for equality. * * # Examples * * @code * #include * #include * * // 0 * ML99_listEq(v(ML99_natEq), ML99_list(v(1, 2, 3)), ML99_list(v(4, 5, 6))) * * // 1 * ML99_listEq(v(ML99_natEq), ML99_list(v(1, 2, 3)), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listEq(cmp, list, other) ML99_call(ML99_listEq, cmp, list, other) /** * Checks whether @p item resides in @p list. * * # Examples * * @code * #include * #include * * // 1 * ML99_listContains(v(ML99_natEq), v(3), ML99_list(v(1, 2, 3))) * * // 0 * ML99_listContains(v(ML99_natEq), v(456), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listContains(cmp, item, list) ML99_call(ML99_listContains, cmp, item, list) /** * Extracts the prefix of @p list of the length @p n. If @p n is greater than the length of @p list, * the whole @p list is returned. * * # Examples * * @code * #include * * // 1, 2 * ML99_listTake(v(2), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listTake(n, list) ML99_call(ML99_listTake, n, list) /** * Extracts the items from @p list as long as @p f evaluates to `ML99_true()`. * * # Examples * * @code * #include * #include * * // 1, 2, 3 * ML99_listTakeWhile(ML99_appl(v(ML99_greater), v(4)), ML99_list(v(1, 2, 3, 4, 5, 6))) * @endcode */ #define ML99_listTakeWhile(f, list) ML99_call(ML99_listTakeWhile, f, list) /** * Removes the prefix of @p list of the length @p n. If @p n is greater than the length of @p list, * `ML99_nil()` is returned. * * # Examples * * @code * #include * * // 2, 3 * ML99_listDrop(v(1), ML99_list(v(1, 2, 3))) * @endcode */ #define ML99_listDrop(n, list) ML99_call(ML99_listDrop, n, list) /** * Removes the items from @p list as long as @p f evaluates to `ML99_true()`. * * # Examples * * @code * #include * #include * * // 4, 5, 6 * ML99_listDropWhile(ML99_appl(v(ML99_lesser), v(4)), ML99_list(v(1, 2, 3, 4, 5, 6))) * @endcode */ #define ML99_listDropWhile(f, list) ML99_call(ML99_listDropWhile, f, list) /** * Computes a list of two-place tuples of the corresponding items from @p list and @p other. * * # Examples * * @code * #include * * // (1, 4), (2, 5), (3, 6) * ML99_listZip(ML99_list(v(1, 2, 3)), ML99_list(v(4, 5, 6))) * @endcode */ #define ML99_listZip(list, other) ML99_call(ML99_listZip, list, other) /** * Transforms a list of two-place tuples into a tuple of a list of the first components and a list * of the second components. * * # Examples * * @code * #include * #include * * // ML99_tuple(ML99_list(v(1, 2, 3)), ML99_list(v(4, 5, 6))) * ML99_listUnzip(ML99_list(ML99_tuple(v(1, 4)), ML99_tuple(v(2, 5)), ML99_tuple(v(3, 6)))) * @endcode */ #define ML99_listUnzip(list) ML99_call(ML99_listUnzip, list) /** * Computes a list of length @p n with each element @p item. * * # Examples * * @code * #include * * // ~, ~, ~, ~, ~ * ML99_listReplicate(v(5), v(~)) * * // ML99_nil() * ML99_listReplicate(v(0), v(~)) * @endcode */ #define ML99_listReplicate(n, item) ML99_call(ML99_listReplicate, n, item) /** * Returns a two-place tuple of lists: those items of @p list the do and do not satisfy the * predicate @p f, respectively. * * # Examples * * @code * #include * #include * * // ML99_tuple(ML99_list(v(4, 7)), ML99_list(v(11, 12, 13))) * ML99_listPartition(ML99_appl(v(ML99_greater), v(10)), ML99_list(v(11, 4, 12, 13, 7))) * @endcode */ #define ML99_listPartition(f, list) ML99_call(ML99_listPartition, f, list) /** * Applies all the items in @p list to @p f. * * If the list is empty, results in @p f as-is. * * # Examples * * @code * #include * #include * * // ML99_add * ML99_listAppl(v(ML99_add), ML99_nil()) * * // ML99_appl(v(ML99_add), v(1)) * ML99_listAppl(v(ML99_add), ML99_list(v(1))) * * // ML99_appl2(v(ML99_add), v(1), v(2)) * ML99_listAppl(v(ML99_add), ML99_list(v(1, 2))) * @endcode */ #define ML99_listAppl(f, list) ML99_call(ML99_listAppl, f, list) #define ML99_CONS(x, xs) ML99_CHOICE(cons, x, xs) #define ML99_NIL(...) ML99_CHOICE(nil, ~) #define ML99_IS_CONS(list) ML99_NOT(ML99_IS_NIL(list)) #define ML99_IS_NIL(list) ML99_PRIV_IS_NIL(list) #ifndef DOXYGEN_IGNORE #define ML99_cons_IMPL(x, xs) v(ML99_CONS(x, xs)) #define ML99_nil_IMPL(...) v(ML99_NIL()) #define ML99_isCons_IMPL(list) v(ML99_IS_CONS(list)) #define ML99_isNil_IMPL(list) v(ML99_IS_NIL(list)) #define ML99_listHead_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listHead_) #define ML99_PRIV_listHead_nil_IMPL(_) ML99_PRIV_EMPTY_LIST_ERROR(listHead) #define ML99_PRIV_listHead_cons_IMPL(x, _xs) v(x) #define ML99_listTail_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listTail_) #define ML99_PRIV_listTail_nil_IMPL(_) ML99_PRIV_EMPTY_LIST_ERROR(listTail) #define ML99_PRIV_listTail_cons_IMPL(_x, xs) v(xs) #define ML99_listLast_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listLast_) #define ML99_PRIV_listLast_nil_IMPL(_) ML99_PRIV_EMPTY_LIST_ERROR(listLast) #define ML99_PRIV_listLast_cons_IMPL(x, xs) \ ML99_PRIV_IF(ML99_IS_NIL(xs), v(x), ML99_listLast_IMPL(xs)) #define ML99_listInit_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listInit_) #define ML99_PRIV_listInit_nil_IMPL(_) ML99_PRIV_EMPTY_LIST_ERROR(listInit) #define ML99_PRIV_listInit_cons_IMPL(x, xs) \ ML99_PRIV_IF(ML99_IS_NIL(xs), v(ML99_NIL()), ML99_cons(v(x), ML99_listInit_IMPL(xs))) // ML99_list_IMPL { #define ML99_list_IMPL(...) \ ML99_PRIV_listProgress_IMPL(ML99_VARIADICS_COUNT(__VA_ARGS__), __VA_ARGS__, ~) // Last 4 recursion steps unrolled. #define ML99_PRIV_listProgress_IMPL(count, ...) \ ML99_PRIV_IF( \ ML99_NAT_EQ(count, 4), \ ML99_PRIV_listDone_4, \ ML99_PRIV_IF( \ ML99_NAT_EQ(count, 3), \ ML99_PRIV_listDone_3, \ ML99_PRIV_IF( \ ML99_NAT_EQ(count, 2), \ ML99_PRIV_listDone_2, \ ML99_PRIV_IF( \ ML99_NAT_EQ(count, 1), \ ML99_PRIV_listDone_1, \ ML99_PRIV_IF( \ ML99_NAT_EQ(count, 0), \ ML99_PRIV_listDone_0, \ ML99_PRIV_listProgressAux))))) \ (count, __VA_ARGS__) #define ML99_PRIV_listProgressAux(count, x, ...) \ ML99_cons(v(x), ML99_callUneval(ML99_PRIV_listProgress, ML99_DEC(count), __VA_ARGS__)) #define ML99_PRIV_listDone_0(_count, _) v(ML99_NIL()) #define ML99_PRIV_listDone_1(_count, a, _) v(ML99_CONS(a, ML99_NIL())) #define ML99_PRIV_listDone_2(_count, a, b, _) v(ML99_CONS(a, ML99_CONS(b, ML99_NIL()))) #define ML99_PRIV_listDone_3(_count, a, b, c, _) \ v(ML99_CONS(a, ML99_CONS(b, ML99_CONS(c, ML99_NIL())))) #define ML99_PRIV_listDone_4(_count, a, b, c, d, _) \ v(ML99_CONS(a, ML99_CONS(b, ML99_CONS(c, ML99_CONS(d, ML99_NIL()))))) // } (ML99_list_IMPL) // ML99_listFromTuples_IMPL { #define ML99_listFromTuples_IMPL(f, ...) ML99_PRIV_listFromTuplesAux_IMPL(f, __VA_ARGS__, ~) #define ML99_PRIV_listFromTuplesAux_IMPL(f, x, ...) \ ML99_PRIV_CAT(ML99_PRIV_listFromTuples_, ML99_IS_UNTUPLE(x))(f, x, __VA_ARGS__) #define ML99_PRIV_listFromTuples_1(_f, x, ...) ML99_PRIV_NOT_TUPLE_ERROR(x) #define ML99_PRIV_listFromTuples_0(f, x, ...) \ ML99_cons( \ ML99_appl_IMPL(f, ML99_UNTUPLE(x)), \ ML99_PRIV_IF( \ ML99_VARIADICS_IS_SINGLE(__VA_ARGS__), \ v(ML99_NIL()), \ ML99_callUneval(ML99_PRIV_listFromTuplesAux, f, __VA_ARGS__))) // } (ML99_listFromTuples_IMPL) #define ML99_listFromSeq_IMPL(seq) \ ML99_PRIV_CAT(ML99_PRIV_listFromSeq_, ML99_SEQ_IS_EMPTY(seq))(seq) #define ML99_PRIV_listFromSeq_1 ML99_nil_IMPL #define ML99_PRIV_listFromSeq_0(seq) \ ML99_cons(v(ML99_SEQ_GET(0)(seq)), ML99_callUneval(ML99_listFromSeq, ML99_SEQ_TAIL(seq))) #define ML99_listLen_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listLen_) #define ML99_PRIV_listLen_nil_IMPL(_) v(0) #define ML99_PRIV_listLen_cons_IMPL(_x, xs) ML99_inc(ML99_listLen_IMPL(xs)) #define ML99_listAppend_IMPL(list, other) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listAppend_, other) #define ML99_PRIV_listAppend_nil_IMPL(_, other) v(other) #define ML99_PRIV_listAppend_cons_IMPL(x, xs, other) \ ML99_cons(v(x), ML99_listAppend_IMPL(xs, other)) #define ML99_listAppendItem_IMPL(item, list) ML99_listAppend_IMPL(list, ML99_CONS(item, ML99_NIL())) #define ML99_listUnwrap_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listUnwrap_) #define ML99_PRIV_listUnwrap_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_listUnwrap_cons_IMPL(x, xs) ML99_TERMS(v(x), ML99_listUnwrap_IMPL(xs)) #define ML99_listReverse_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listReverse_) #define ML99_PRIV_listReverse_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listReverse_cons_IMPL(x, xs) ML99_listAppendItem(v(x), ML99_listReverse_IMPL(xs)) #define ML99_listGet_IMPL(i, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listGet_, i) #define ML99_PRIV_listGet_nil_IMPL(_, i) ML99_PRIV_EMPTY_LIST_ERROR(ML99_listGet) #define ML99_PRIV_listGet_cons_IMPL(x, xs, i) \ ML99_PRIV_IF(ML99_NAT_EQ(i, 0), v(x), ML99_listGet_IMPL(ML99_DEC(i), xs)) #define ML99_listFoldr_IMPL(f, init, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listFoldr_, f, init) #define ML99_PRIV_listFoldr_nil_IMPL(_, _f, acc) v(acc) #define ML99_PRIV_listFoldr_cons_IMPL(x, xs, f, acc) \ ML99_call(ML99_appl2, v(f, x), ML99_listFoldr_IMPL(f, acc, xs)) #define ML99_listFoldl_IMPL(f, init, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listFoldl_, f, init) #define ML99_PRIV_listFoldl_nil_IMPL(_, _f, acc) v(acc) #define ML99_PRIV_listFoldl_cons_IMPL(x, xs, f, acc) \ ML99_listFoldl(v(f), ML99_appl2_IMPL(f, acc, x), v(xs)) #define ML99_listFoldl1_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listFoldl1_, f) #define ML99_PRIV_listFoldl1_nil_IMPL(_, _f) ML99_PRIV_EMPTY_LIST_ERROR(ML99_listFoldl1) #define ML99_PRIV_listFoldl1_cons_IMPL(x, xs, f) ML99_listFoldl_IMPL(f, x, xs) #define ML99_listIntersperse_IMPL(item, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listIntersperse_, item) #define ML99_PRIV_listIntersperse_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listIntersperse_cons_IMPL(x, xs, item) \ ML99_cons(v(x), ML99_listPrependToAll_IMPL(item, xs)) #define ML99_listPrependToAll_IMPL(item, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listPrependToAll_, item) #define ML99_PRIV_listPrependToAll_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listPrependToAll_cons_IMPL(x, xs, item) \ ML99_cons(v(item), ML99_cons(v(x), ML99_listPrependToAll_IMPL(item, xs))) #define ML99_listMap_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listMap_, f) #define ML99_PRIV_listMap_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listMap_cons_IMPL(x, xs, f) \ ML99_cons(ML99_appl_IMPL(f, x), ML99_listMap_IMPL(f, xs)) #define ML99_listMapI_IMPL(f, list) ML99_PRIV_listMapIAux_IMPL(f, list, 0) #define ML99_PRIV_listMapIAux_IMPL(f, list, i) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listMapI_, f, i) #define ML99_PRIV_listMapI_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listMapI_cons_IMPL(x, xs, f, i) \ ML99_cons(ML99_appl2_IMPL(f, x, i), ML99_PRIV_listMapIAux_IMPL(f, xs, ML99_INC(i))) #define ML99_listMapInPlace_IMPL(f, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listMapInPlace_, f) #define ML99_PRIV_listMapInPlace_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_listMapInPlace_cons_IMPL(x, xs, f) \ ML99_TERMS(ML99_appl_IMPL(f, x), ML99_listMapInPlace_IMPL(f, xs)) #define ML99_listMapInPlaceI_IMPL(f, list) ML99_PRIV_listMapInPlaceIAux_IMPL(f, list, 0) #define ML99_PRIV_listMapInPlaceIAux_IMPL(f, list, i) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listMapInPlaceI_, f, i) #define ML99_PRIV_listMapInPlaceI_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_listMapInPlaceI_cons_IMPL(x, xs, f, i) \ ML99_TERMS(ML99_appl2_IMPL(f, x, i), ML99_PRIV_listMapInPlaceIAux_IMPL(f, xs, ML99_INC(i))) #define ML99_listFor_IMPL(list, f) ML99_listMap_IMPL(f, list) #define ML99_listMapInitLast_IMPL(f_init, f_last, list) \ ML99_listAppendItem( \ ML99_appl(v(f_last), ML99_listLast_IMPL(list)), \ ML99_listMap(v(f_init), ML99_listInit_IMPL(list))) #define ML99_listForInitLast_IMPL(list, f_init, f_last) \ ML99_listMapInitLast_IMPL(f_init, f_last, list) // ML99_listFilter_IMPL { #define ML99_listFilter_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listFilter_, f) #define ML99_PRIV_listFilter_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listFilter_cons_IMPL(x, xs, f) \ ML99_call( \ ML99_boolMatchWithArgs, \ ML99_appl_IMPL(f, x), \ v(ML99_PRIV_listFilter_cons_, x), \ ML99_listFilter_IMPL(f, xs)) #define ML99_PRIV_listFilter_cons_1_IMPL(x, rest) v(ML99_CONS(x, rest)) #define ML99_PRIV_listFilter_cons_0_IMPL(_x, rest) v(rest) // } (ML99_listFilter_IMPL) // ML99_listFilterMap_IMPL { #define ML99_listFilterMap_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listFilterMap_, f) #define ML99_PRIV_listFilterMap_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listFilterMap_cons_IMPL(x, xs, f) \ ML99_call(ML99_matchWithArgs, ML99_appl_IMPL(f, x), v(ML99_PRIV_listFilterMap_cons_, f, xs)) #define ML99_PRIV_listFilterMap_cons_just_IMPL(y, f, xs) \ ML99_cons(v(y), ML99_listFilterMap_IMPL(f, xs)) #define ML99_PRIV_listFilterMap_cons_nothing_IMPL(_, f, xs) ML99_listFilterMap_IMPL(f, xs) // } (ML99_listFilterMap_IMPL) // ML99_listEq_IMPL { #define ML99_listEq_IMPL(cmp, list, other) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listEq_, other, cmp) #define ML99_PRIV_listEq_nil_IMPL(_, other, _cmp) v(ML99_IS_NIL(other)) #define ML99_PRIV_listEq_cons_IMPL(x, xs, other, cmp) \ ML99_matchWithArgs_IMPL(other, ML99_PRIV_listEq_cons_, x, xs, cmp) #define ML99_PRIV_listEq_cons_nil_IMPL ML99_false_IMPL #define ML99_PRIV_listEq_cons_cons_IMPL(other_x, other_xs, x, xs, cmp) \ ML99_call( \ ML99_call(ML99_if, ML99_appl2_IMPL(cmp, x, other_x), v(ML99_listEq, ML99_false)), \ v(cmp, xs, other_xs)) // } (ML99_listEq_IMPL) #define ML99_listContains_IMPL(cmp, item, list) \ ML99_matchWithArgs_IMPL(list, ML99_PRIV_listContains_, item, cmp) #define ML99_PRIV_listContains_nil_IMPL ML99_false_IMPL #define ML99_PRIV_listContains_cons_IMPL(x, xs, item, cmp) \ ML99_call( \ ML99_call(ML99_if, ML99_appl2_IMPL(cmp, x, item), v(ML99_true, ML99_listContains)), \ v(cmp, item, xs)) #define ML99_listTake_IMPL(n, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listTake_, n) #define ML99_PRIV_listTake_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listTake_cons_IMPL(x, xs, i) \ ML99_PRIV_IF( \ ML99_NAT_EQ(i, 0), \ v(ML99_NIL()), \ ML99_cons(v(x), ML99_listTake_IMPL(ML99_DEC(i), xs))) // ML99_listTakeWhile_IMPL { #define ML99_listTakeWhile_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listTakeWhile_, f) #define ML99_PRIV_listTakeWhile_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listTakeWhile_cons_IMPL(x, xs, f) \ ML99_call( \ ML99_boolMatchWithArgs, \ ML99_appl_IMPL(f, x), \ v(ML99_PRIV_listTakeWhile_cons_, x, xs, f)) #define ML99_PRIV_listTakeWhile_cons_1_IMPL(x, xs, f) \ ML99_cons(v(x), ML99_listTakeWhile_IMPL(f, xs)) #define ML99_PRIV_listTakeWhile_cons_0_IMPL ML99_nil_IMPL // } (ML99_listTakeWhile_IMPL) #define ML99_listDrop_IMPL(n, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listDrop_, n) #define ML99_PRIV_listDrop_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listDrop_cons_IMPL(x, xs, i) \ ML99_PRIV_IF(ML99_NAT_EQ(i, 0), v(ML99_CONS(x, xs)), ML99_listDrop_IMPL(ML99_DEC(i), xs)) // ML99_listDropWhile_IMPL { #define ML99_listDropWhile_IMPL(f, list) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listDropWhile_, f) #define ML99_PRIV_listDropWhile_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listDropWhile_cons_IMPL(x, xs, f) \ ML99_call( \ ML99_boolMatchWithArgs, \ ML99_appl_IMPL(f, x), \ v(ML99_PRIV_listDropWhile_cons_, x, xs, f)) #define ML99_PRIV_listDropWhile_cons_0_IMPL(x, xs, _f) v(ML99_CONS(x, xs)) #define ML99_PRIV_listDropWhile_cons_1_IMPL(_x, xs, f) ML99_listDropWhile_IMPL(f, xs) // } (ML99_listDropWhile_IMPL) // ML99_listZip_IMPL { #define ML99_listZip_IMPL(list, other) ML99_matchWithArgs_IMPL(list, ML99_PRIV_listZip_, other) #define ML99_PRIV_listZip_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listZip_cons_IMPL(x, xs, other) \ ML99_matchWithArgs_IMPL(other, ML99_PRIV_listZip_cons_, x, xs) #define ML99_PRIV_listZip_cons_nil_IMPL ML99_nil_IMPL #define ML99_PRIV_listZip_cons_cons_IMPL(other_x, other_xs, x, xs) \ ML99_cons(v(ML99_TUPLE(x, other_x)), ML99_listZip_IMPL(xs, other_xs)) // } (ML99_listZip_IMPL) // ML99_listUnzip_IMPL { #define ML99_listUnzip_IMPL(list) ML99_match_IMPL(list, ML99_PRIV_listUnzip_) #define ML99_PRIV_listUnzip_nil_IMPL(_) v(ML99_TUPLE(ML99_NIL(), ML99_NIL())) #define ML99_PRIV_listUnzip_cons_IMPL(x, xs) \ ML99_call(ML99_PRIV_listUnzipProgress, v(x), ML99_listUnzip_IMPL(xs)) #define ML99_PRIV_listUnzipProgress_IMPL(x, rest) \ v(ML99_TUPLE(ML99_PRIV_LIST_UNZIP_EXTEND(x, rest, 0), ML99_PRIV_LIST_UNZIP_EXTEND(x, rest, 1))) #define ML99_PRIV_LIST_UNZIP_EXTEND(x, rest, i) \ ML99_CONS(ML99_TUPLE_GET(i)(x), ML99_TUPLE_GET(i)(rest)) // } (ML99_listUnzip_IMPL) #define ML99_listReplicate_IMPL(n, item) \ ML99_natMatchWithArgs_IMPL(n, ML99_PRIV_listReplicate_, item) #define ML99_PRIV_listReplicate_Z_IMPL ML99_nil_IMPL #define ML99_PRIV_listReplicate_S_IMPL(n, item) ML99_cons(v(item), ML99_listReplicate_IMPL(n, item)) // ML99_listPartition_IMPL { #define ML99_listPartition_IMPL(f, list) \ ML99_listFoldr( \ ML99_appl_IMPL(ML99_PRIV_listPartitionAux, f), \ v(ML99_TUPLE(ML99_NIL(), ML99_NIL())), \ v(list)) #define ML99_PRIV_listPartitionAux_IMPL(f, x, acc) \ ML99_call( \ ML99_boolMatchWithArgs, \ ML99_appl_IMPL(f, x), \ v(ML99_PRIV_listPartition_, x, ML99_UNTUPLE(acc))) #define ML99_PRIV_listPartition_1_IMPL(x, fst, snd) v(ML99_TUPLE(ML99_CONS(x, fst), snd)) #define ML99_PRIV_listPartition_0_IMPL(x, fst, snd) v(ML99_TUPLE(fst, ML99_CONS(x, snd))) // } (ML99_listPartition_IMPL) #define ML99_listAppl_IMPL(f, list) ML99_listFoldl_IMPL(ML99_appl, f, list) // ML99_listUnwrapCommaSep_IMPL { #define ML99_listUnwrapCommaSep_IMPL(list) \ ML99_PRIV_IF( \ ML99_IS_NIL(list), \ v(ML99_EMPTY()), \ ML99_variadicsTail(ML99_PRIV_listUnwrapCommaSepAux_IMPL(list))) #define ML99_PRIV_listUnwrapCommaSepAux_IMPL(xs) ML99_match_IMPL(xs, ML99_PRIV_listUnwrapCommaSep_) #define ML99_PRIV_listUnwrapCommaSep_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_listUnwrapCommaSep_cons_IMPL(x, xs) \ ML99_TERMS(v(, x), ML99_PRIV_listUnwrapCommaSepAux_IMPL(xs)) // } (ML99_listUnwrapCommaSep_IMPL) // clang-format off #define ML99_PRIV_EMPTY_LIST_ERROR(f) ML99_fatal(ML99_##f, expected a non-empty list) // clang-format on #define ML99_PRIV_IS_NIL(list) ML99_DETECT_IDENT(ML99_PRIV_IS_NIL_, ML99_CHOICE_TAG(list)) #define ML99_PRIV_IS_NIL_nil () // Arity specifiers { #define ML99_cons_ARITY 2 #define ML99_nil_ARITY 1 #define ML99_isCons_ARITY 1 #define ML99_isNil_ARITY 1 #define ML99_listHead_ARITY 1 #define ML99_listTail_ARITY 1 #define ML99_listLast_ARITY 1 #define ML99_listInit_ARITY 1 #define ML99_list_ARITY 1 #define ML99_listFromTuples_ARITY 2 #define ML99_listFromSeq_ARITY 1 #define ML99_listLen_ARITY 1 #define ML99_listAppend_ARITY 2 #define ML99_listAppendItem_ARITY 2 #define ML99_listUnwrap_ARITY 1 #define ML99_listUnwrapCommaSep_ARITY 1 #define ML99_listReverse_ARITY 1 #define ML99_listGet_ARITY 2 #define ML99_listFoldr_ARITY 3 #define ML99_listFoldl_ARITY 3 #define ML99_listFoldl1_ARITY 2 #define ML99_listIntersperse_ARITY 2 #define ML99_listPrependToAll_ARITY 2 #define ML99_listMap_ARITY 2 #define ML99_listMapI_ARITY 2 #define ML99_listMapInPlace_ARITY 2 #define ML99_listMapInPlaceI_ARITY 2 #define ML99_listFor_ARITY 2 #define ML99_listMapInitLast_ARITY 3 #define ML99_listForInitLast_ARITY 3 #define ML99_listFilter_ARITY 2 #define ML99_listFilterMap_ARITY 2 #define ML99_listEq_ARITY 3 #define ML99_listContains_ARITY 3 #define ML99_listTake_ARITY 2 #define ML99_listTakeWhile_ARITY 2 #define ML99_listDrop_ARITY 2 #define ML99_listDropWhile_ARITY 2 #define ML99_listZip_ARITY 2 #define ML99_listUnzip_ARITY 1 #define ML99_listReplicate_ARITY 2 #define ML99_listPartition_ARITY 2 #define ML99_listAppl_ARITY 2 #define ML99_PRIV_listPartitionAux_ARITY 3 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_LIST_H hkl-5.1.7/third-party/metalang99/stmt.h0000664000175000017500000001433614677222567016676 0ustar00piccapicca/** * @file * Statement chaining. * * This module exports a bunch of so-called _statement chaining macros_: they expect a statement * right after their invocation, and moreover, an invocation of such a macro with a statement * afterwards altogether form a single statement. * * How can this be helpful? Imagine you are writing a macro with the following syntax: * * @code * MY_MACRO(...) { bla bla bla } * @endcode * * Then `MY_MACRO` must expand to a _statement prefix_, i.e., something that expects a statement * after itself. One possible solution is to make `MY_MACRO` expand to a sequence of statement * chaining macros like this: * * @code * #define MY_MACRO(...) \ * ML99_INTRODUCE_VAR_TO_STMT(int x = 5) \ * ML99_CHAIN_EXPR_STMT(printf("%d\n", x)) \ * // and so on... * @endcode * * Here #ML99_INTRODUCE_VAR_TO_STMT accepts the statement formed by #ML99_CHAIN_EXPR_STMT, which, in * turn, accepts the next statement and so on, until a caller of `MY_MACRO` specifies the final * statement, thus completing the chain. * * @see https://www.chiark.greenend.org.uk/~sgtatham/mp/ for a more involved explanation. */ #ifndef ML99_STMT_H #define ML99_STMT_H #include /** * A statement chaining macro that introduces several variable definitions to a statement right * after its invocation. * * Variable definitions must be specified as in the first clause of the for-loop. * * Top-level `break`/`continue` inside a user-provided statement are prohibited. * * # Example * * @code * #include * * for (int i = 0; i < 10; i++) * ML99_INTRODUCE_VAR_TO_STMT(double x = 5.0, y = 7.0) * if (i % 2 == 0) * printf("i = %d, x = %f, y = %f\n", i, x, y); * @endcode */ #define ML99_INTRODUCE_VAR_TO_STMT(...) ML99_PRIV_INTRODUCE_VAR_TO_STMT_INNER(__VA_ARGS__) /** * The same as #ML99_INTRODUCE_VAR_TO_STMT but deals with a single non-`NULL` pointer. * * In comparison with #ML99_INTRODUCE_VAR_TO_STMT, this macro generates a little less code. It * introduces a pointer to @p ty identified by @p name and initialised to @p init. * * Top-level `break`/`continue` inside a user-provided statement are prohibited. * * # Example * * @code * #include * * double x = 5.0, y = 7.0; * * for (int i = 0; i < 10; i++) * ML99_INTRODUCE_NON_NULL_PTR_TO_STMT(double, x_ptr, &x) * ML99_INTRODUCE_NON_NULL_PTR_TO_STMT(double, y_ptr, &y) * printf("i = %d, x = %f, y = %f\n", i, *x_ptr, *y_ptr); * @endcode * * @note Unlike #ML99_INTRODUCE_VAR_TO_STMT, the generated pointer is guaranteed to be used at least * once, meaning that you do not need to suppress the unused variable warning. * @note @p init is guaranteed to be executed only once. */ #define ML99_INTRODUCE_NON_NULL_PTR_TO_STMT(ty, name, init) \ ML99_PRIV_SHADOWS(for (ty *name = (init); name != 0; name = 0)) /** * A statement chaining macro that executes an expression statement derived from @p expr right * before the next statement. * * Top-level `break`/`continue` inside a user-provided statement are prohibited. * * # Example * * @code * #include * * int x; * * for(;;) * ML99_CHAIN_EXPR_STMT(x = 5) * ML99_CHAIN_EXPR_STMT(printf("%d\n", x)) * puts("abc"); * @endcode */ #define ML99_CHAIN_EXPR_STMT(expr) \ ML99_PRIV_SHADOWS(for (int ml99_priv_expr_stmt_break = ((expr), 0); \ ml99_priv_expr_stmt_break != 1; \ ml99_priv_expr_stmt_break = 1)) /** * The same as #ML99_CHAIN_EXPR_STMT but executes @p expr **after** the next statement. */ #define ML99_CHAIN_EXPR_STMT_AFTER(expr) \ ML99_PRIV_SHADOWS(for (int ml99_priv_expr_stmt_after_break = 0; \ ml99_priv_expr_stmt_after_break != 1; \ ((expr), ml99_priv_expr_stmt_after_break = 1))) /** * A statement chaining macro that suppresses the "unused X" warning right before a statement after * its invocation. * * Top-level `break`/`continue` inside a user-provided statement are prohibited. * * # Example * * @code * #include * * int x, y; * * for(;;) * ML99_SUPPRESS_UNUSED_BEFORE_STMT(x) * ML99_SUPPRESS_UNUSED_BEFORE_STMT(y) * puts("abc"); * @endcode * * @deprecated Use `ML99_CHAIN_EXPR_STMT((void)expr)` instead. */ #define ML99_SUPPRESS_UNUSED_BEFORE_STMT(expr) ML99_CHAIN_EXPR_STMT((void)expr) #ifndef DOXYGEN_IGNORE // See . #ifdef __cplusplus #define ML99_PRIV_INTRODUCE_VAR_TO_STMT_INNER(...) \ ML99_PRIV_SHADOWS(for (__VA_ARGS__, \ *ml99_priv_break_arr[] = {0, 0}, \ **ml99_priv_break = &ml99_priv_break_arr[0]; \ ml99_priv_break == &ml99_priv_break_arr[0]; \ ml99_priv_break++)) #else #define ML99_PRIV_INTRODUCE_VAR_TO_STMT_INNER(...) \ ML99_PRIV_SHADOWS(for (__VA_ARGS__, *ml99_priv_break = (void *)0; \ ml99_priv_break != (void *)1; \ ml99_priv_break = (void *)1)) #endif #define ML99_PRIV_SHADOWS(...) \ ML99_CLANG_PRAGMA("clang diagnostic push") \ ML99_CLANG_PRAGMA("clang diagnostic ignored \"-Wshadow\"") \ __VA_ARGS__ \ ML99_CLANG_PRAGMA("clang diagnostic pop") #endif // DOXYGEN_IGNORE #endif // ML99_STMT_H hkl-5.1.7/third-party/metalang99/eval/0000775000175000017500000000000015144640565016446 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/eval/rec/0000775000175000017500000000000015144640565017217 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/eval/rec/unroll.h0000664000175000017500000615247514677222567020737 0ustar00piccapicca #ifndef METALANG99_EVAL_REC_UNROLL_H #define METALANG99_EVAL_REC_UNROLL_H #include #define METALANG99_PRIV_REC_0(choice, ...) METALANG99_PRIV_REC_NEXT(1, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1(choice, ...) METALANG99_PRIV_REC_NEXT(2, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2(choice, ...) METALANG99_PRIV_REC_NEXT(3, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3(choice, ...) METALANG99_PRIV_REC_NEXT(4, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4(choice, ...) METALANG99_PRIV_REC_NEXT(5, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5(choice, ...) METALANG99_PRIV_REC_NEXT(6, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6(choice, ...) METALANG99_PRIV_REC_NEXT(7, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7(choice, ...) METALANG99_PRIV_REC_NEXT(8, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8(choice, ...) METALANG99_PRIV_REC_NEXT(9, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9(choice, ...) METALANG99_PRIV_REC_NEXT(10, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10(choice, ...) METALANG99_PRIV_REC_NEXT(11, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11(choice, ...) METALANG99_PRIV_REC_NEXT(12, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12(choice, ...) METALANG99_PRIV_REC_NEXT(13, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13(choice, ...) METALANG99_PRIV_REC_NEXT(14, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14(choice, ...) METALANG99_PRIV_REC_NEXT(15, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15(choice, ...) METALANG99_PRIV_REC_NEXT(16, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16(choice, ...) METALANG99_PRIV_REC_NEXT(17, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_17(choice, ...) METALANG99_PRIV_REC_NEXT(18, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_18(choice, ...) METALANG99_PRIV_REC_NEXT(19, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_19(choice, ...) METALANG99_PRIV_REC_NEXT(20, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_20(choice, ...) METALANG99_PRIV_REC_NEXT(21, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_21(choice, ...) METALANG99_PRIV_REC_NEXT(22, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_22(choice, ...) METALANG99_PRIV_REC_NEXT(23, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_23(choice, ...) METALANG99_PRIV_REC_NEXT(24, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_24(choice, ...) METALANG99_PRIV_REC_NEXT(25, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_25(choice, ...) METALANG99_PRIV_REC_NEXT(26, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_26(choice, ...) METALANG99_PRIV_REC_NEXT(27, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_27(choice, ...) METALANG99_PRIV_REC_NEXT(28, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_28(choice, ...) METALANG99_PRIV_REC_NEXT(29, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_29(choice, ...) METALANG99_PRIV_REC_NEXT(30, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_30(choice, ...) METALANG99_PRIV_REC_NEXT(31, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_31(choice, ...) METALANG99_PRIV_REC_NEXT(32, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_32(choice, ...) METALANG99_PRIV_REC_NEXT(33, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_33(choice, ...) METALANG99_PRIV_REC_NEXT(34, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_34(choice, ...) METALANG99_PRIV_REC_NEXT(35, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_35(choice, ...) METALANG99_PRIV_REC_NEXT(36, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_36(choice, ...) METALANG99_PRIV_REC_NEXT(37, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_37(choice, ...) METALANG99_PRIV_REC_NEXT(38, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_38(choice, ...) METALANG99_PRIV_REC_NEXT(39, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_39(choice, ...) METALANG99_PRIV_REC_NEXT(40, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_40(choice, ...) METALANG99_PRIV_REC_NEXT(41, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_41(choice, ...) METALANG99_PRIV_REC_NEXT(42, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_42(choice, ...) METALANG99_PRIV_REC_NEXT(43, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_43(choice, ...) METALANG99_PRIV_REC_NEXT(44, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_44(choice, ...) METALANG99_PRIV_REC_NEXT(45, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_45(choice, ...) METALANG99_PRIV_REC_NEXT(46, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_46(choice, ...) METALANG99_PRIV_REC_NEXT(47, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_47(choice, ...) METALANG99_PRIV_REC_NEXT(48, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_48(choice, ...) METALANG99_PRIV_REC_NEXT(49, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_49(choice, ...) METALANG99_PRIV_REC_NEXT(50, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_50(choice, ...) METALANG99_PRIV_REC_NEXT(51, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_51(choice, ...) METALANG99_PRIV_REC_NEXT(52, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_52(choice, ...) METALANG99_PRIV_REC_NEXT(53, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_53(choice, ...) METALANG99_PRIV_REC_NEXT(54, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_54(choice, ...) METALANG99_PRIV_REC_NEXT(55, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_55(choice, ...) METALANG99_PRIV_REC_NEXT(56, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_56(choice, ...) METALANG99_PRIV_REC_NEXT(57, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_57(choice, ...) METALANG99_PRIV_REC_NEXT(58, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_58(choice, ...) METALANG99_PRIV_REC_NEXT(59, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_59(choice, ...) METALANG99_PRIV_REC_NEXT(60, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_60(choice, ...) METALANG99_PRIV_REC_NEXT(61, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_61(choice, ...) METALANG99_PRIV_REC_NEXT(62, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_62(choice, ...) METALANG99_PRIV_REC_NEXT(63, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_63(choice, ...) METALANG99_PRIV_REC_NEXT(64, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_64(choice, ...) METALANG99_PRIV_REC_NEXT(65, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_65(choice, ...) METALANG99_PRIV_REC_NEXT(66, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_66(choice, ...) METALANG99_PRIV_REC_NEXT(67, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_67(choice, ...) METALANG99_PRIV_REC_NEXT(68, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_68(choice, ...) METALANG99_PRIV_REC_NEXT(69, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_69(choice, ...) METALANG99_PRIV_REC_NEXT(70, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_70(choice, ...) METALANG99_PRIV_REC_NEXT(71, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_71(choice, ...) METALANG99_PRIV_REC_NEXT(72, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_72(choice, ...) METALANG99_PRIV_REC_NEXT(73, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_73(choice, ...) METALANG99_PRIV_REC_NEXT(74, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_74(choice, ...) METALANG99_PRIV_REC_NEXT(75, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_75(choice, ...) METALANG99_PRIV_REC_NEXT(76, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_76(choice, ...) METALANG99_PRIV_REC_NEXT(77, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_77(choice, ...) METALANG99_PRIV_REC_NEXT(78, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_78(choice, ...) METALANG99_PRIV_REC_NEXT(79, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_79(choice, ...) METALANG99_PRIV_REC_NEXT(80, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_80(choice, ...) METALANG99_PRIV_REC_NEXT(81, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_81(choice, ...) METALANG99_PRIV_REC_NEXT(82, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_82(choice, ...) METALANG99_PRIV_REC_NEXT(83, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_83(choice, ...) METALANG99_PRIV_REC_NEXT(84, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_84(choice, ...) METALANG99_PRIV_REC_NEXT(85, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_85(choice, ...) METALANG99_PRIV_REC_NEXT(86, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_86(choice, ...) METALANG99_PRIV_REC_NEXT(87, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_87(choice, ...) METALANG99_PRIV_REC_NEXT(88, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_88(choice, ...) METALANG99_PRIV_REC_NEXT(89, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_89(choice, ...) METALANG99_PRIV_REC_NEXT(90, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_90(choice, ...) METALANG99_PRIV_REC_NEXT(91, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_91(choice, ...) METALANG99_PRIV_REC_NEXT(92, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_92(choice, ...) METALANG99_PRIV_REC_NEXT(93, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_93(choice, ...) METALANG99_PRIV_REC_NEXT(94, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_94(choice, ...) METALANG99_PRIV_REC_NEXT(95, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_95(choice, ...) METALANG99_PRIV_REC_NEXT(96, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_96(choice, ...) METALANG99_PRIV_REC_NEXT(97, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_97(choice, ...) METALANG99_PRIV_REC_NEXT(98, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_98(choice, ...) METALANG99_PRIV_REC_NEXT(99, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_99(choice, ...) METALANG99_PRIV_REC_NEXT(100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_100(choice, ...) METALANG99_PRIV_REC_NEXT(101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_101(choice, ...) METALANG99_PRIV_REC_NEXT(102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_102(choice, ...) METALANG99_PRIV_REC_NEXT(103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_103(choice, ...) METALANG99_PRIV_REC_NEXT(104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_104(choice, ...) METALANG99_PRIV_REC_NEXT(105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_105(choice, ...) METALANG99_PRIV_REC_NEXT(106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_106(choice, ...) METALANG99_PRIV_REC_NEXT(107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_107(choice, ...) METALANG99_PRIV_REC_NEXT(108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_108(choice, ...) METALANG99_PRIV_REC_NEXT(109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_109(choice, ...) METALANG99_PRIV_REC_NEXT(110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_110(choice, ...) METALANG99_PRIV_REC_NEXT(111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_111(choice, ...) METALANG99_PRIV_REC_NEXT(112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_112(choice, ...) METALANG99_PRIV_REC_NEXT(113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_113(choice, ...) METALANG99_PRIV_REC_NEXT(114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_114(choice, ...) METALANG99_PRIV_REC_NEXT(115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_115(choice, ...) METALANG99_PRIV_REC_NEXT(116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_116(choice, ...) METALANG99_PRIV_REC_NEXT(117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_117(choice, ...) METALANG99_PRIV_REC_NEXT(118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_118(choice, ...) METALANG99_PRIV_REC_NEXT(119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_119(choice, ...) METALANG99_PRIV_REC_NEXT(120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_120(choice, ...) METALANG99_PRIV_REC_NEXT(121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_121(choice, ...) METALANG99_PRIV_REC_NEXT(122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_122(choice, ...) METALANG99_PRIV_REC_NEXT(123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_123(choice, ...) METALANG99_PRIV_REC_NEXT(124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_124(choice, ...) METALANG99_PRIV_REC_NEXT(125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_125(choice, ...) METALANG99_PRIV_REC_NEXT(126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_126(choice, ...) METALANG99_PRIV_REC_NEXT(127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_127(choice, ...) METALANG99_PRIV_REC_NEXT(128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_128(choice, ...) METALANG99_PRIV_REC_NEXT(129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_129(choice, ...) METALANG99_PRIV_REC_NEXT(130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_130(choice, ...) METALANG99_PRIV_REC_NEXT(131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_131(choice, ...) METALANG99_PRIV_REC_NEXT(132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_132(choice, ...) METALANG99_PRIV_REC_NEXT(133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_133(choice, ...) METALANG99_PRIV_REC_NEXT(134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_134(choice, ...) METALANG99_PRIV_REC_NEXT(135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_135(choice, ...) METALANG99_PRIV_REC_NEXT(136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_136(choice, ...) METALANG99_PRIV_REC_NEXT(137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_137(choice, ...) METALANG99_PRIV_REC_NEXT(138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_138(choice, ...) METALANG99_PRIV_REC_NEXT(139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_139(choice, ...) METALANG99_PRIV_REC_NEXT(140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_140(choice, ...) METALANG99_PRIV_REC_NEXT(141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_141(choice, ...) METALANG99_PRIV_REC_NEXT(142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_142(choice, ...) METALANG99_PRIV_REC_NEXT(143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_143(choice, ...) METALANG99_PRIV_REC_NEXT(144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_144(choice, ...) METALANG99_PRIV_REC_NEXT(145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_145(choice, ...) METALANG99_PRIV_REC_NEXT(146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_146(choice, ...) METALANG99_PRIV_REC_NEXT(147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_147(choice, ...) METALANG99_PRIV_REC_NEXT(148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_148(choice, ...) METALANG99_PRIV_REC_NEXT(149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_149(choice, ...) METALANG99_PRIV_REC_NEXT(150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_150(choice, ...) METALANG99_PRIV_REC_NEXT(151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_151(choice, ...) METALANG99_PRIV_REC_NEXT(152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_152(choice, ...) METALANG99_PRIV_REC_NEXT(153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_153(choice, ...) METALANG99_PRIV_REC_NEXT(154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_154(choice, ...) METALANG99_PRIV_REC_NEXT(155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_155(choice, ...) METALANG99_PRIV_REC_NEXT(156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_156(choice, ...) METALANG99_PRIV_REC_NEXT(157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_157(choice, ...) METALANG99_PRIV_REC_NEXT(158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_158(choice, ...) METALANG99_PRIV_REC_NEXT(159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_159(choice, ...) METALANG99_PRIV_REC_NEXT(160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_160(choice, ...) METALANG99_PRIV_REC_NEXT(161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_161(choice, ...) METALANG99_PRIV_REC_NEXT(162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_162(choice, ...) METALANG99_PRIV_REC_NEXT(163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_163(choice, ...) METALANG99_PRIV_REC_NEXT(164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_164(choice, ...) METALANG99_PRIV_REC_NEXT(165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_165(choice, ...) METALANG99_PRIV_REC_NEXT(166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_166(choice, ...) METALANG99_PRIV_REC_NEXT(167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_167(choice, ...) METALANG99_PRIV_REC_NEXT(168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_168(choice, ...) METALANG99_PRIV_REC_NEXT(169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_169(choice, ...) METALANG99_PRIV_REC_NEXT(170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_170(choice, ...) METALANG99_PRIV_REC_NEXT(171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_171(choice, ...) METALANG99_PRIV_REC_NEXT(172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_172(choice, ...) METALANG99_PRIV_REC_NEXT(173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_173(choice, ...) METALANG99_PRIV_REC_NEXT(174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_174(choice, ...) METALANG99_PRIV_REC_NEXT(175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_175(choice, ...) METALANG99_PRIV_REC_NEXT(176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_176(choice, ...) METALANG99_PRIV_REC_NEXT(177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_177(choice, ...) METALANG99_PRIV_REC_NEXT(178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_178(choice, ...) METALANG99_PRIV_REC_NEXT(179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_179(choice, ...) METALANG99_PRIV_REC_NEXT(180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_180(choice, ...) METALANG99_PRIV_REC_NEXT(181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_181(choice, ...) METALANG99_PRIV_REC_NEXT(182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_182(choice, ...) METALANG99_PRIV_REC_NEXT(183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_183(choice, ...) METALANG99_PRIV_REC_NEXT(184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_184(choice, ...) METALANG99_PRIV_REC_NEXT(185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_185(choice, ...) METALANG99_PRIV_REC_NEXT(186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_186(choice, ...) METALANG99_PRIV_REC_NEXT(187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_187(choice, ...) METALANG99_PRIV_REC_NEXT(188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_188(choice, ...) METALANG99_PRIV_REC_NEXT(189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_189(choice, ...) METALANG99_PRIV_REC_NEXT(190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_190(choice, ...) METALANG99_PRIV_REC_NEXT(191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_191(choice, ...) METALANG99_PRIV_REC_NEXT(192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_192(choice, ...) METALANG99_PRIV_REC_NEXT(193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_193(choice, ...) METALANG99_PRIV_REC_NEXT(194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_194(choice, ...) METALANG99_PRIV_REC_NEXT(195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_195(choice, ...) METALANG99_PRIV_REC_NEXT(196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_196(choice, ...) METALANG99_PRIV_REC_NEXT(197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_197(choice, ...) METALANG99_PRIV_REC_NEXT(198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_198(choice, ...) METALANG99_PRIV_REC_NEXT(199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_199(choice, ...) METALANG99_PRIV_REC_NEXT(200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_200(choice, ...) METALANG99_PRIV_REC_NEXT(201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_201(choice, ...) METALANG99_PRIV_REC_NEXT(202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_202(choice, ...) METALANG99_PRIV_REC_NEXT(203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_203(choice, ...) METALANG99_PRIV_REC_NEXT(204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_204(choice, ...) METALANG99_PRIV_REC_NEXT(205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_205(choice, ...) METALANG99_PRIV_REC_NEXT(206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_206(choice, ...) METALANG99_PRIV_REC_NEXT(207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_207(choice, ...) METALANG99_PRIV_REC_NEXT(208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_208(choice, ...) METALANG99_PRIV_REC_NEXT(209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_209(choice, ...) METALANG99_PRIV_REC_NEXT(210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_210(choice, ...) METALANG99_PRIV_REC_NEXT(211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_211(choice, ...) METALANG99_PRIV_REC_NEXT(212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_212(choice, ...) METALANG99_PRIV_REC_NEXT(213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_213(choice, ...) METALANG99_PRIV_REC_NEXT(214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_214(choice, ...) METALANG99_PRIV_REC_NEXT(215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_215(choice, ...) METALANG99_PRIV_REC_NEXT(216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_216(choice, ...) METALANG99_PRIV_REC_NEXT(217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_217(choice, ...) METALANG99_PRIV_REC_NEXT(218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_218(choice, ...) METALANG99_PRIV_REC_NEXT(219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_219(choice, ...) METALANG99_PRIV_REC_NEXT(220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_220(choice, ...) METALANG99_PRIV_REC_NEXT(221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_221(choice, ...) METALANG99_PRIV_REC_NEXT(222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_222(choice, ...) METALANG99_PRIV_REC_NEXT(223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_223(choice, ...) METALANG99_PRIV_REC_NEXT(224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_224(choice, ...) METALANG99_PRIV_REC_NEXT(225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_225(choice, ...) METALANG99_PRIV_REC_NEXT(226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_226(choice, ...) METALANG99_PRIV_REC_NEXT(227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_227(choice, ...) METALANG99_PRIV_REC_NEXT(228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_228(choice, ...) METALANG99_PRIV_REC_NEXT(229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_229(choice, ...) METALANG99_PRIV_REC_NEXT(230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_230(choice, ...) METALANG99_PRIV_REC_NEXT(231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_231(choice, ...) METALANG99_PRIV_REC_NEXT(232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_232(choice, ...) METALANG99_PRIV_REC_NEXT(233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_233(choice, ...) METALANG99_PRIV_REC_NEXT(234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_234(choice, ...) METALANG99_PRIV_REC_NEXT(235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_235(choice, ...) METALANG99_PRIV_REC_NEXT(236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_236(choice, ...) METALANG99_PRIV_REC_NEXT(237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_237(choice, ...) METALANG99_PRIV_REC_NEXT(238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_238(choice, ...) METALANG99_PRIV_REC_NEXT(239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_239(choice, ...) METALANG99_PRIV_REC_NEXT(240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_240(choice, ...) METALANG99_PRIV_REC_NEXT(241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_241(choice, ...) METALANG99_PRIV_REC_NEXT(242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_242(choice, ...) METALANG99_PRIV_REC_NEXT(243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_243(choice, ...) METALANG99_PRIV_REC_NEXT(244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_244(choice, ...) METALANG99_PRIV_REC_NEXT(245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_245(choice, ...) METALANG99_PRIV_REC_NEXT(246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_246(choice, ...) METALANG99_PRIV_REC_NEXT(247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_247(choice, ...) METALANG99_PRIV_REC_NEXT(248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_248(choice, ...) METALANG99_PRIV_REC_NEXT(249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_249(choice, ...) METALANG99_PRIV_REC_NEXT(250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_250(choice, ...) METALANG99_PRIV_REC_NEXT(251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_251(choice, ...) METALANG99_PRIV_REC_NEXT(252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_252(choice, ...) METALANG99_PRIV_REC_NEXT(253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_253(choice, ...) METALANG99_PRIV_REC_NEXT(254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_254(choice, ...) METALANG99_PRIV_REC_NEXT(255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_255(choice, ...) METALANG99_PRIV_REC_NEXT(256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_256(choice, ...) METALANG99_PRIV_REC_NEXT(257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_257(choice, ...) METALANG99_PRIV_REC_NEXT(258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_258(choice, ...) METALANG99_PRIV_REC_NEXT(259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_259(choice, ...) METALANG99_PRIV_REC_NEXT(260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_260(choice, ...) METALANG99_PRIV_REC_NEXT(261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_261(choice, ...) METALANG99_PRIV_REC_NEXT(262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_262(choice, ...) METALANG99_PRIV_REC_NEXT(263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_263(choice, ...) METALANG99_PRIV_REC_NEXT(264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_264(choice, ...) METALANG99_PRIV_REC_NEXT(265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_265(choice, ...) METALANG99_PRIV_REC_NEXT(266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_266(choice, ...) METALANG99_PRIV_REC_NEXT(267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_267(choice, ...) METALANG99_PRIV_REC_NEXT(268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_268(choice, ...) METALANG99_PRIV_REC_NEXT(269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_269(choice, ...) METALANG99_PRIV_REC_NEXT(270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_270(choice, ...) METALANG99_PRIV_REC_NEXT(271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_271(choice, ...) METALANG99_PRIV_REC_NEXT(272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_272(choice, ...) METALANG99_PRIV_REC_NEXT(273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_273(choice, ...) METALANG99_PRIV_REC_NEXT(274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_274(choice, ...) METALANG99_PRIV_REC_NEXT(275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_275(choice, ...) METALANG99_PRIV_REC_NEXT(276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_276(choice, ...) METALANG99_PRIV_REC_NEXT(277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_277(choice, ...) METALANG99_PRIV_REC_NEXT(278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_278(choice, ...) METALANG99_PRIV_REC_NEXT(279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_279(choice, ...) METALANG99_PRIV_REC_NEXT(280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_280(choice, ...) METALANG99_PRIV_REC_NEXT(281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_281(choice, ...) METALANG99_PRIV_REC_NEXT(282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_282(choice, ...) METALANG99_PRIV_REC_NEXT(283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_283(choice, ...) METALANG99_PRIV_REC_NEXT(284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_284(choice, ...) METALANG99_PRIV_REC_NEXT(285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_285(choice, ...) METALANG99_PRIV_REC_NEXT(286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_286(choice, ...) METALANG99_PRIV_REC_NEXT(287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_287(choice, ...) METALANG99_PRIV_REC_NEXT(288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_288(choice, ...) METALANG99_PRIV_REC_NEXT(289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_289(choice, ...) METALANG99_PRIV_REC_NEXT(290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_290(choice, ...) METALANG99_PRIV_REC_NEXT(291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_291(choice, ...) METALANG99_PRIV_REC_NEXT(292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_292(choice, ...) METALANG99_PRIV_REC_NEXT(293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_293(choice, ...) METALANG99_PRIV_REC_NEXT(294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_294(choice, ...) METALANG99_PRIV_REC_NEXT(295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_295(choice, ...) METALANG99_PRIV_REC_NEXT(296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_296(choice, ...) METALANG99_PRIV_REC_NEXT(297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_297(choice, ...) METALANG99_PRIV_REC_NEXT(298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_298(choice, ...) METALANG99_PRIV_REC_NEXT(299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_299(choice, ...) METALANG99_PRIV_REC_NEXT(300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_300(choice, ...) METALANG99_PRIV_REC_NEXT(301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_301(choice, ...) METALANG99_PRIV_REC_NEXT(302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_302(choice, ...) METALANG99_PRIV_REC_NEXT(303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_303(choice, ...) METALANG99_PRIV_REC_NEXT(304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_304(choice, ...) METALANG99_PRIV_REC_NEXT(305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_305(choice, ...) METALANG99_PRIV_REC_NEXT(306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_306(choice, ...) METALANG99_PRIV_REC_NEXT(307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_307(choice, ...) METALANG99_PRIV_REC_NEXT(308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_308(choice, ...) METALANG99_PRIV_REC_NEXT(309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_309(choice, ...) METALANG99_PRIV_REC_NEXT(310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_310(choice, ...) METALANG99_PRIV_REC_NEXT(311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_311(choice, ...) METALANG99_PRIV_REC_NEXT(312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_312(choice, ...) METALANG99_PRIV_REC_NEXT(313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_313(choice, ...) METALANG99_PRIV_REC_NEXT(314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_314(choice, ...) METALANG99_PRIV_REC_NEXT(315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_315(choice, ...) METALANG99_PRIV_REC_NEXT(316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_316(choice, ...) METALANG99_PRIV_REC_NEXT(317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_317(choice, ...) METALANG99_PRIV_REC_NEXT(318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_318(choice, ...) METALANG99_PRIV_REC_NEXT(319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_319(choice, ...) METALANG99_PRIV_REC_NEXT(320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_320(choice, ...) METALANG99_PRIV_REC_NEXT(321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_321(choice, ...) METALANG99_PRIV_REC_NEXT(322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_322(choice, ...) METALANG99_PRIV_REC_NEXT(323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_323(choice, ...) METALANG99_PRIV_REC_NEXT(324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_324(choice, ...) METALANG99_PRIV_REC_NEXT(325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_325(choice, ...) METALANG99_PRIV_REC_NEXT(326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_326(choice, ...) METALANG99_PRIV_REC_NEXT(327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_327(choice, ...) METALANG99_PRIV_REC_NEXT(328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_328(choice, ...) METALANG99_PRIV_REC_NEXT(329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_329(choice, ...) METALANG99_PRIV_REC_NEXT(330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_330(choice, ...) METALANG99_PRIV_REC_NEXT(331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_331(choice, ...) METALANG99_PRIV_REC_NEXT(332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_332(choice, ...) METALANG99_PRIV_REC_NEXT(333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_333(choice, ...) METALANG99_PRIV_REC_NEXT(334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_334(choice, ...) METALANG99_PRIV_REC_NEXT(335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_335(choice, ...) METALANG99_PRIV_REC_NEXT(336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_336(choice, ...) METALANG99_PRIV_REC_NEXT(337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_337(choice, ...) METALANG99_PRIV_REC_NEXT(338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_338(choice, ...) METALANG99_PRIV_REC_NEXT(339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_339(choice, ...) METALANG99_PRIV_REC_NEXT(340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_340(choice, ...) METALANG99_PRIV_REC_NEXT(341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_341(choice, ...) METALANG99_PRIV_REC_NEXT(342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_342(choice, ...) METALANG99_PRIV_REC_NEXT(343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_343(choice, ...) METALANG99_PRIV_REC_NEXT(344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_344(choice, ...) METALANG99_PRIV_REC_NEXT(345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_345(choice, ...) METALANG99_PRIV_REC_NEXT(346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_346(choice, ...) METALANG99_PRIV_REC_NEXT(347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_347(choice, ...) METALANG99_PRIV_REC_NEXT(348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_348(choice, ...) METALANG99_PRIV_REC_NEXT(349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_349(choice, ...) METALANG99_PRIV_REC_NEXT(350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_350(choice, ...) METALANG99_PRIV_REC_NEXT(351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_351(choice, ...) METALANG99_PRIV_REC_NEXT(352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_352(choice, ...) METALANG99_PRIV_REC_NEXT(353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_353(choice, ...) METALANG99_PRIV_REC_NEXT(354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_354(choice, ...) METALANG99_PRIV_REC_NEXT(355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_355(choice, ...) METALANG99_PRIV_REC_NEXT(356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_356(choice, ...) METALANG99_PRIV_REC_NEXT(357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_357(choice, ...) METALANG99_PRIV_REC_NEXT(358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_358(choice, ...) METALANG99_PRIV_REC_NEXT(359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_359(choice, ...) METALANG99_PRIV_REC_NEXT(360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_360(choice, ...) METALANG99_PRIV_REC_NEXT(361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_361(choice, ...) METALANG99_PRIV_REC_NEXT(362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_362(choice, ...) METALANG99_PRIV_REC_NEXT(363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_363(choice, ...) METALANG99_PRIV_REC_NEXT(364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_364(choice, ...) METALANG99_PRIV_REC_NEXT(365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_365(choice, ...) METALANG99_PRIV_REC_NEXT(366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_366(choice, ...) METALANG99_PRIV_REC_NEXT(367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_367(choice, ...) METALANG99_PRIV_REC_NEXT(368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_368(choice, ...) METALANG99_PRIV_REC_NEXT(369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_369(choice, ...) METALANG99_PRIV_REC_NEXT(370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_370(choice, ...) METALANG99_PRIV_REC_NEXT(371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_371(choice, ...) METALANG99_PRIV_REC_NEXT(372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_372(choice, ...) METALANG99_PRIV_REC_NEXT(373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_373(choice, ...) METALANG99_PRIV_REC_NEXT(374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_374(choice, ...) METALANG99_PRIV_REC_NEXT(375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_375(choice, ...) METALANG99_PRIV_REC_NEXT(376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_376(choice, ...) METALANG99_PRIV_REC_NEXT(377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_377(choice, ...) METALANG99_PRIV_REC_NEXT(378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_378(choice, ...) METALANG99_PRIV_REC_NEXT(379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_379(choice, ...) METALANG99_PRIV_REC_NEXT(380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_380(choice, ...) METALANG99_PRIV_REC_NEXT(381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_381(choice, ...) METALANG99_PRIV_REC_NEXT(382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_382(choice, ...) METALANG99_PRIV_REC_NEXT(383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_383(choice, ...) METALANG99_PRIV_REC_NEXT(384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_384(choice, ...) METALANG99_PRIV_REC_NEXT(385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_385(choice, ...) METALANG99_PRIV_REC_NEXT(386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_386(choice, ...) METALANG99_PRIV_REC_NEXT(387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_387(choice, ...) METALANG99_PRIV_REC_NEXT(388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_388(choice, ...) METALANG99_PRIV_REC_NEXT(389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_389(choice, ...) METALANG99_PRIV_REC_NEXT(390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_390(choice, ...) METALANG99_PRIV_REC_NEXT(391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_391(choice, ...) METALANG99_PRIV_REC_NEXT(392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_392(choice, ...) METALANG99_PRIV_REC_NEXT(393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_393(choice, ...) METALANG99_PRIV_REC_NEXT(394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_394(choice, ...) METALANG99_PRIV_REC_NEXT(395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_395(choice, ...) METALANG99_PRIV_REC_NEXT(396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_396(choice, ...) METALANG99_PRIV_REC_NEXT(397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_397(choice, ...) METALANG99_PRIV_REC_NEXT(398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_398(choice, ...) METALANG99_PRIV_REC_NEXT(399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_399(choice, ...) METALANG99_PRIV_REC_NEXT(400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_400(choice, ...) METALANG99_PRIV_REC_NEXT(401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_401(choice, ...) METALANG99_PRIV_REC_NEXT(402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_402(choice, ...) METALANG99_PRIV_REC_NEXT(403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_403(choice, ...) METALANG99_PRIV_REC_NEXT(404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_404(choice, ...) METALANG99_PRIV_REC_NEXT(405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_405(choice, ...) METALANG99_PRIV_REC_NEXT(406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_406(choice, ...) METALANG99_PRIV_REC_NEXT(407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_407(choice, ...) METALANG99_PRIV_REC_NEXT(408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_408(choice, ...) METALANG99_PRIV_REC_NEXT(409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_409(choice, ...) METALANG99_PRIV_REC_NEXT(410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_410(choice, ...) METALANG99_PRIV_REC_NEXT(411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_411(choice, ...) METALANG99_PRIV_REC_NEXT(412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_412(choice, ...) METALANG99_PRIV_REC_NEXT(413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_413(choice, ...) METALANG99_PRIV_REC_NEXT(414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_414(choice, ...) METALANG99_PRIV_REC_NEXT(415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_415(choice, ...) METALANG99_PRIV_REC_NEXT(416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_416(choice, ...) METALANG99_PRIV_REC_NEXT(417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_417(choice, ...) METALANG99_PRIV_REC_NEXT(418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_418(choice, ...) METALANG99_PRIV_REC_NEXT(419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_419(choice, ...) METALANG99_PRIV_REC_NEXT(420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_420(choice, ...) METALANG99_PRIV_REC_NEXT(421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_421(choice, ...) METALANG99_PRIV_REC_NEXT(422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_422(choice, ...) METALANG99_PRIV_REC_NEXT(423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_423(choice, ...) METALANG99_PRIV_REC_NEXT(424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_424(choice, ...) METALANG99_PRIV_REC_NEXT(425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_425(choice, ...) METALANG99_PRIV_REC_NEXT(426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_426(choice, ...) METALANG99_PRIV_REC_NEXT(427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_427(choice, ...) METALANG99_PRIV_REC_NEXT(428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_428(choice, ...) METALANG99_PRIV_REC_NEXT(429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_429(choice, ...) METALANG99_PRIV_REC_NEXT(430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_430(choice, ...) METALANG99_PRIV_REC_NEXT(431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_431(choice, ...) METALANG99_PRIV_REC_NEXT(432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_432(choice, ...) METALANG99_PRIV_REC_NEXT(433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_433(choice, ...) METALANG99_PRIV_REC_NEXT(434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_434(choice, ...) METALANG99_PRIV_REC_NEXT(435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_435(choice, ...) METALANG99_PRIV_REC_NEXT(436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_436(choice, ...) METALANG99_PRIV_REC_NEXT(437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_437(choice, ...) METALANG99_PRIV_REC_NEXT(438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_438(choice, ...) METALANG99_PRIV_REC_NEXT(439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_439(choice, ...) METALANG99_PRIV_REC_NEXT(440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_440(choice, ...) METALANG99_PRIV_REC_NEXT(441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_441(choice, ...) METALANG99_PRIV_REC_NEXT(442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_442(choice, ...) METALANG99_PRIV_REC_NEXT(443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_443(choice, ...) METALANG99_PRIV_REC_NEXT(444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_444(choice, ...) METALANG99_PRIV_REC_NEXT(445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_445(choice, ...) METALANG99_PRIV_REC_NEXT(446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_446(choice, ...) METALANG99_PRIV_REC_NEXT(447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_447(choice, ...) METALANG99_PRIV_REC_NEXT(448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_448(choice, ...) METALANG99_PRIV_REC_NEXT(449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_449(choice, ...) METALANG99_PRIV_REC_NEXT(450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_450(choice, ...) METALANG99_PRIV_REC_NEXT(451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_451(choice, ...) METALANG99_PRIV_REC_NEXT(452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_452(choice, ...) METALANG99_PRIV_REC_NEXT(453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_453(choice, ...) METALANG99_PRIV_REC_NEXT(454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_454(choice, ...) METALANG99_PRIV_REC_NEXT(455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_455(choice, ...) METALANG99_PRIV_REC_NEXT(456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_456(choice, ...) METALANG99_PRIV_REC_NEXT(457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_457(choice, ...) METALANG99_PRIV_REC_NEXT(458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_458(choice, ...) METALANG99_PRIV_REC_NEXT(459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_459(choice, ...) METALANG99_PRIV_REC_NEXT(460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_460(choice, ...) METALANG99_PRIV_REC_NEXT(461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_461(choice, ...) METALANG99_PRIV_REC_NEXT(462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_462(choice, ...) METALANG99_PRIV_REC_NEXT(463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_463(choice, ...) METALANG99_PRIV_REC_NEXT(464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_464(choice, ...) METALANG99_PRIV_REC_NEXT(465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_465(choice, ...) METALANG99_PRIV_REC_NEXT(466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_466(choice, ...) METALANG99_PRIV_REC_NEXT(467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_467(choice, ...) METALANG99_PRIV_REC_NEXT(468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_468(choice, ...) METALANG99_PRIV_REC_NEXT(469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_469(choice, ...) METALANG99_PRIV_REC_NEXT(470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_470(choice, ...) METALANG99_PRIV_REC_NEXT(471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_471(choice, ...) METALANG99_PRIV_REC_NEXT(472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_472(choice, ...) METALANG99_PRIV_REC_NEXT(473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_473(choice, ...) METALANG99_PRIV_REC_NEXT(474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_474(choice, ...) METALANG99_PRIV_REC_NEXT(475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_475(choice, ...) METALANG99_PRIV_REC_NEXT(476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_476(choice, ...) METALANG99_PRIV_REC_NEXT(477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_477(choice, ...) METALANG99_PRIV_REC_NEXT(478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_478(choice, ...) METALANG99_PRIV_REC_NEXT(479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_479(choice, ...) METALANG99_PRIV_REC_NEXT(480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_480(choice, ...) METALANG99_PRIV_REC_NEXT(481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_481(choice, ...) METALANG99_PRIV_REC_NEXT(482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_482(choice, ...) METALANG99_PRIV_REC_NEXT(483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_483(choice, ...) METALANG99_PRIV_REC_NEXT(484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_484(choice, ...) METALANG99_PRIV_REC_NEXT(485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_485(choice, ...) METALANG99_PRIV_REC_NEXT(486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_486(choice, ...) METALANG99_PRIV_REC_NEXT(487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_487(choice, ...) METALANG99_PRIV_REC_NEXT(488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_488(choice, ...) METALANG99_PRIV_REC_NEXT(489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_489(choice, ...) METALANG99_PRIV_REC_NEXT(490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_490(choice, ...) METALANG99_PRIV_REC_NEXT(491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_491(choice, ...) METALANG99_PRIV_REC_NEXT(492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_492(choice, ...) METALANG99_PRIV_REC_NEXT(493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_493(choice, ...) METALANG99_PRIV_REC_NEXT(494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_494(choice, ...) METALANG99_PRIV_REC_NEXT(495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_495(choice, ...) METALANG99_PRIV_REC_NEXT(496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_496(choice, ...) METALANG99_PRIV_REC_NEXT(497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_497(choice, ...) METALANG99_PRIV_REC_NEXT(498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_498(choice, ...) METALANG99_PRIV_REC_NEXT(499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_499(choice, ...) METALANG99_PRIV_REC_NEXT(500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_500(choice, ...) METALANG99_PRIV_REC_NEXT(501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_501(choice, ...) METALANG99_PRIV_REC_NEXT(502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_502(choice, ...) METALANG99_PRIV_REC_NEXT(503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_503(choice, ...) METALANG99_PRIV_REC_NEXT(504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_504(choice, ...) METALANG99_PRIV_REC_NEXT(505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_505(choice, ...) METALANG99_PRIV_REC_NEXT(506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_506(choice, ...) METALANG99_PRIV_REC_NEXT(507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_507(choice, ...) METALANG99_PRIV_REC_NEXT(508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_508(choice, ...) METALANG99_PRIV_REC_NEXT(509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_509(choice, ...) METALANG99_PRIV_REC_NEXT(510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_510(choice, ...) METALANG99_PRIV_REC_NEXT(511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_511(choice, ...) METALANG99_PRIV_REC_NEXT(512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_512(choice, ...) METALANG99_PRIV_REC_NEXT(513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_513(choice, ...) METALANG99_PRIV_REC_NEXT(514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_514(choice, ...) METALANG99_PRIV_REC_NEXT(515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_515(choice, ...) METALANG99_PRIV_REC_NEXT(516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_516(choice, ...) METALANG99_PRIV_REC_NEXT(517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_517(choice, ...) METALANG99_PRIV_REC_NEXT(518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_518(choice, ...) METALANG99_PRIV_REC_NEXT(519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_519(choice, ...) METALANG99_PRIV_REC_NEXT(520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_520(choice, ...) METALANG99_PRIV_REC_NEXT(521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_521(choice, ...) METALANG99_PRIV_REC_NEXT(522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_522(choice, ...) METALANG99_PRIV_REC_NEXT(523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_523(choice, ...) METALANG99_PRIV_REC_NEXT(524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_524(choice, ...) METALANG99_PRIV_REC_NEXT(525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_525(choice, ...) METALANG99_PRIV_REC_NEXT(526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_526(choice, ...) METALANG99_PRIV_REC_NEXT(527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_527(choice, ...) METALANG99_PRIV_REC_NEXT(528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_528(choice, ...) METALANG99_PRIV_REC_NEXT(529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_529(choice, ...) METALANG99_PRIV_REC_NEXT(530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_530(choice, ...) METALANG99_PRIV_REC_NEXT(531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_531(choice, ...) METALANG99_PRIV_REC_NEXT(532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_532(choice, ...) METALANG99_PRIV_REC_NEXT(533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_533(choice, ...) METALANG99_PRIV_REC_NEXT(534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_534(choice, ...) METALANG99_PRIV_REC_NEXT(535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_535(choice, ...) METALANG99_PRIV_REC_NEXT(536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_536(choice, ...) METALANG99_PRIV_REC_NEXT(537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_537(choice, ...) METALANG99_PRIV_REC_NEXT(538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_538(choice, ...) METALANG99_PRIV_REC_NEXT(539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_539(choice, ...) METALANG99_PRIV_REC_NEXT(540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_540(choice, ...) METALANG99_PRIV_REC_NEXT(541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_541(choice, ...) METALANG99_PRIV_REC_NEXT(542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_542(choice, ...) METALANG99_PRIV_REC_NEXT(543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_543(choice, ...) METALANG99_PRIV_REC_NEXT(544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_544(choice, ...) METALANG99_PRIV_REC_NEXT(545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_545(choice, ...) METALANG99_PRIV_REC_NEXT(546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_546(choice, ...) METALANG99_PRIV_REC_NEXT(547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_547(choice, ...) METALANG99_PRIV_REC_NEXT(548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_548(choice, ...) METALANG99_PRIV_REC_NEXT(549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_549(choice, ...) METALANG99_PRIV_REC_NEXT(550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_550(choice, ...) METALANG99_PRIV_REC_NEXT(551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_551(choice, ...) METALANG99_PRIV_REC_NEXT(552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_552(choice, ...) METALANG99_PRIV_REC_NEXT(553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_553(choice, ...) METALANG99_PRIV_REC_NEXT(554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_554(choice, ...) METALANG99_PRIV_REC_NEXT(555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_555(choice, ...) METALANG99_PRIV_REC_NEXT(556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_556(choice, ...) METALANG99_PRIV_REC_NEXT(557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_557(choice, ...) METALANG99_PRIV_REC_NEXT(558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_558(choice, ...) METALANG99_PRIV_REC_NEXT(559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_559(choice, ...) METALANG99_PRIV_REC_NEXT(560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_560(choice, ...) METALANG99_PRIV_REC_NEXT(561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_561(choice, ...) METALANG99_PRIV_REC_NEXT(562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_562(choice, ...) METALANG99_PRIV_REC_NEXT(563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_563(choice, ...) METALANG99_PRIV_REC_NEXT(564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_564(choice, ...) METALANG99_PRIV_REC_NEXT(565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_565(choice, ...) METALANG99_PRIV_REC_NEXT(566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_566(choice, ...) METALANG99_PRIV_REC_NEXT(567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_567(choice, ...) METALANG99_PRIV_REC_NEXT(568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_568(choice, ...) METALANG99_PRIV_REC_NEXT(569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_569(choice, ...) METALANG99_PRIV_REC_NEXT(570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_570(choice, ...) METALANG99_PRIV_REC_NEXT(571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_571(choice, ...) METALANG99_PRIV_REC_NEXT(572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_572(choice, ...) METALANG99_PRIV_REC_NEXT(573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_573(choice, ...) METALANG99_PRIV_REC_NEXT(574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_574(choice, ...) METALANG99_PRIV_REC_NEXT(575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_575(choice, ...) METALANG99_PRIV_REC_NEXT(576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_576(choice, ...) METALANG99_PRIV_REC_NEXT(577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_577(choice, ...) METALANG99_PRIV_REC_NEXT(578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_578(choice, ...) METALANG99_PRIV_REC_NEXT(579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_579(choice, ...) METALANG99_PRIV_REC_NEXT(580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_580(choice, ...) METALANG99_PRIV_REC_NEXT(581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_581(choice, ...) METALANG99_PRIV_REC_NEXT(582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_582(choice, ...) METALANG99_PRIV_REC_NEXT(583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_583(choice, ...) METALANG99_PRIV_REC_NEXT(584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_584(choice, ...) METALANG99_PRIV_REC_NEXT(585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_585(choice, ...) METALANG99_PRIV_REC_NEXT(586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_586(choice, ...) METALANG99_PRIV_REC_NEXT(587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_587(choice, ...) METALANG99_PRIV_REC_NEXT(588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_588(choice, ...) METALANG99_PRIV_REC_NEXT(589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_589(choice, ...) METALANG99_PRIV_REC_NEXT(590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_590(choice, ...) METALANG99_PRIV_REC_NEXT(591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_591(choice, ...) METALANG99_PRIV_REC_NEXT(592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_592(choice, ...) METALANG99_PRIV_REC_NEXT(593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_593(choice, ...) METALANG99_PRIV_REC_NEXT(594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_594(choice, ...) METALANG99_PRIV_REC_NEXT(595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_595(choice, ...) METALANG99_PRIV_REC_NEXT(596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_596(choice, ...) METALANG99_PRIV_REC_NEXT(597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_597(choice, ...) METALANG99_PRIV_REC_NEXT(598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_598(choice, ...) METALANG99_PRIV_REC_NEXT(599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_599(choice, ...) METALANG99_PRIV_REC_NEXT(600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_600(choice, ...) METALANG99_PRIV_REC_NEXT(601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_601(choice, ...) METALANG99_PRIV_REC_NEXT(602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_602(choice, ...) METALANG99_PRIV_REC_NEXT(603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_603(choice, ...) METALANG99_PRIV_REC_NEXT(604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_604(choice, ...) METALANG99_PRIV_REC_NEXT(605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_605(choice, ...) METALANG99_PRIV_REC_NEXT(606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_606(choice, ...) METALANG99_PRIV_REC_NEXT(607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_607(choice, ...) METALANG99_PRIV_REC_NEXT(608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_608(choice, ...) METALANG99_PRIV_REC_NEXT(609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_609(choice, ...) METALANG99_PRIV_REC_NEXT(610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_610(choice, ...) METALANG99_PRIV_REC_NEXT(611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_611(choice, ...) METALANG99_PRIV_REC_NEXT(612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_612(choice, ...) METALANG99_PRIV_REC_NEXT(613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_613(choice, ...) METALANG99_PRIV_REC_NEXT(614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_614(choice, ...) METALANG99_PRIV_REC_NEXT(615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_615(choice, ...) METALANG99_PRIV_REC_NEXT(616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_616(choice, ...) METALANG99_PRIV_REC_NEXT(617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_617(choice, ...) METALANG99_PRIV_REC_NEXT(618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_618(choice, ...) METALANG99_PRIV_REC_NEXT(619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_619(choice, ...) METALANG99_PRIV_REC_NEXT(620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_620(choice, ...) METALANG99_PRIV_REC_NEXT(621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_621(choice, ...) METALANG99_PRIV_REC_NEXT(622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_622(choice, ...) METALANG99_PRIV_REC_NEXT(623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_623(choice, ...) METALANG99_PRIV_REC_NEXT(624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_624(choice, ...) METALANG99_PRIV_REC_NEXT(625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_625(choice, ...) METALANG99_PRIV_REC_NEXT(626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_626(choice, ...) METALANG99_PRIV_REC_NEXT(627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_627(choice, ...) METALANG99_PRIV_REC_NEXT(628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_628(choice, ...) METALANG99_PRIV_REC_NEXT(629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_629(choice, ...) METALANG99_PRIV_REC_NEXT(630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_630(choice, ...) METALANG99_PRIV_REC_NEXT(631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_631(choice, ...) METALANG99_PRIV_REC_NEXT(632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_632(choice, ...) METALANG99_PRIV_REC_NEXT(633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_633(choice, ...) METALANG99_PRIV_REC_NEXT(634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_634(choice, ...) METALANG99_PRIV_REC_NEXT(635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_635(choice, ...) METALANG99_PRIV_REC_NEXT(636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_636(choice, ...) METALANG99_PRIV_REC_NEXT(637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_637(choice, ...) METALANG99_PRIV_REC_NEXT(638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_638(choice, ...) METALANG99_PRIV_REC_NEXT(639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_639(choice, ...) METALANG99_PRIV_REC_NEXT(640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_640(choice, ...) METALANG99_PRIV_REC_NEXT(641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_641(choice, ...) METALANG99_PRIV_REC_NEXT(642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_642(choice, ...) METALANG99_PRIV_REC_NEXT(643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_643(choice, ...) METALANG99_PRIV_REC_NEXT(644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_644(choice, ...) METALANG99_PRIV_REC_NEXT(645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_645(choice, ...) METALANG99_PRIV_REC_NEXT(646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_646(choice, ...) METALANG99_PRIV_REC_NEXT(647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_647(choice, ...) METALANG99_PRIV_REC_NEXT(648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_648(choice, ...) METALANG99_PRIV_REC_NEXT(649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_649(choice, ...) METALANG99_PRIV_REC_NEXT(650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_650(choice, ...) METALANG99_PRIV_REC_NEXT(651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_651(choice, ...) METALANG99_PRIV_REC_NEXT(652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_652(choice, ...) METALANG99_PRIV_REC_NEXT(653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_653(choice, ...) METALANG99_PRIV_REC_NEXT(654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_654(choice, ...) METALANG99_PRIV_REC_NEXT(655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_655(choice, ...) METALANG99_PRIV_REC_NEXT(656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_656(choice, ...) METALANG99_PRIV_REC_NEXT(657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_657(choice, ...) METALANG99_PRIV_REC_NEXT(658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_658(choice, ...) METALANG99_PRIV_REC_NEXT(659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_659(choice, ...) METALANG99_PRIV_REC_NEXT(660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_660(choice, ...) METALANG99_PRIV_REC_NEXT(661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_661(choice, ...) METALANG99_PRIV_REC_NEXT(662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_662(choice, ...) METALANG99_PRIV_REC_NEXT(663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_663(choice, ...) METALANG99_PRIV_REC_NEXT(664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_664(choice, ...) METALANG99_PRIV_REC_NEXT(665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_665(choice, ...) METALANG99_PRIV_REC_NEXT(666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_666(choice, ...) METALANG99_PRIV_REC_NEXT(667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_667(choice, ...) METALANG99_PRIV_REC_NEXT(668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_668(choice, ...) METALANG99_PRIV_REC_NEXT(669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_669(choice, ...) METALANG99_PRIV_REC_NEXT(670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_670(choice, ...) METALANG99_PRIV_REC_NEXT(671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_671(choice, ...) METALANG99_PRIV_REC_NEXT(672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_672(choice, ...) METALANG99_PRIV_REC_NEXT(673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_673(choice, ...) METALANG99_PRIV_REC_NEXT(674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_674(choice, ...) METALANG99_PRIV_REC_NEXT(675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_675(choice, ...) METALANG99_PRIV_REC_NEXT(676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_676(choice, ...) METALANG99_PRIV_REC_NEXT(677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_677(choice, ...) METALANG99_PRIV_REC_NEXT(678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_678(choice, ...) METALANG99_PRIV_REC_NEXT(679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_679(choice, ...) METALANG99_PRIV_REC_NEXT(680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_680(choice, ...) METALANG99_PRIV_REC_NEXT(681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_681(choice, ...) METALANG99_PRIV_REC_NEXT(682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_682(choice, ...) METALANG99_PRIV_REC_NEXT(683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_683(choice, ...) METALANG99_PRIV_REC_NEXT(684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_684(choice, ...) METALANG99_PRIV_REC_NEXT(685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_685(choice, ...) METALANG99_PRIV_REC_NEXT(686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_686(choice, ...) METALANG99_PRIV_REC_NEXT(687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_687(choice, ...) METALANG99_PRIV_REC_NEXT(688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_688(choice, ...) METALANG99_PRIV_REC_NEXT(689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_689(choice, ...) METALANG99_PRIV_REC_NEXT(690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_690(choice, ...) METALANG99_PRIV_REC_NEXT(691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_691(choice, ...) METALANG99_PRIV_REC_NEXT(692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_692(choice, ...) METALANG99_PRIV_REC_NEXT(693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_693(choice, ...) METALANG99_PRIV_REC_NEXT(694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_694(choice, ...) METALANG99_PRIV_REC_NEXT(695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_695(choice, ...) METALANG99_PRIV_REC_NEXT(696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_696(choice, ...) METALANG99_PRIV_REC_NEXT(697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_697(choice, ...) METALANG99_PRIV_REC_NEXT(698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_698(choice, ...) METALANG99_PRIV_REC_NEXT(699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_699(choice, ...) METALANG99_PRIV_REC_NEXT(700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_700(choice, ...) METALANG99_PRIV_REC_NEXT(701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_701(choice, ...) METALANG99_PRIV_REC_NEXT(702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_702(choice, ...) METALANG99_PRIV_REC_NEXT(703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_703(choice, ...) METALANG99_PRIV_REC_NEXT(704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_704(choice, ...) METALANG99_PRIV_REC_NEXT(705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_705(choice, ...) METALANG99_PRIV_REC_NEXT(706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_706(choice, ...) METALANG99_PRIV_REC_NEXT(707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_707(choice, ...) METALANG99_PRIV_REC_NEXT(708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_708(choice, ...) METALANG99_PRIV_REC_NEXT(709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_709(choice, ...) METALANG99_PRIV_REC_NEXT(710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_710(choice, ...) METALANG99_PRIV_REC_NEXT(711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_711(choice, ...) METALANG99_PRIV_REC_NEXT(712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_712(choice, ...) METALANG99_PRIV_REC_NEXT(713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_713(choice, ...) METALANG99_PRIV_REC_NEXT(714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_714(choice, ...) METALANG99_PRIV_REC_NEXT(715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_715(choice, ...) METALANG99_PRIV_REC_NEXT(716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_716(choice, ...) METALANG99_PRIV_REC_NEXT(717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_717(choice, ...) METALANG99_PRIV_REC_NEXT(718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_718(choice, ...) METALANG99_PRIV_REC_NEXT(719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_719(choice, ...) METALANG99_PRIV_REC_NEXT(720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_720(choice, ...) METALANG99_PRIV_REC_NEXT(721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_721(choice, ...) METALANG99_PRIV_REC_NEXT(722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_722(choice, ...) METALANG99_PRIV_REC_NEXT(723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_723(choice, ...) METALANG99_PRIV_REC_NEXT(724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_724(choice, ...) METALANG99_PRIV_REC_NEXT(725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_725(choice, ...) METALANG99_PRIV_REC_NEXT(726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_726(choice, ...) METALANG99_PRIV_REC_NEXT(727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_727(choice, ...) METALANG99_PRIV_REC_NEXT(728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_728(choice, ...) METALANG99_PRIV_REC_NEXT(729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_729(choice, ...) METALANG99_PRIV_REC_NEXT(730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_730(choice, ...) METALANG99_PRIV_REC_NEXT(731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_731(choice, ...) METALANG99_PRIV_REC_NEXT(732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_732(choice, ...) METALANG99_PRIV_REC_NEXT(733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_733(choice, ...) METALANG99_PRIV_REC_NEXT(734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_734(choice, ...) METALANG99_PRIV_REC_NEXT(735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_735(choice, ...) METALANG99_PRIV_REC_NEXT(736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_736(choice, ...) METALANG99_PRIV_REC_NEXT(737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_737(choice, ...) METALANG99_PRIV_REC_NEXT(738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_738(choice, ...) METALANG99_PRIV_REC_NEXT(739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_739(choice, ...) METALANG99_PRIV_REC_NEXT(740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_740(choice, ...) METALANG99_PRIV_REC_NEXT(741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_741(choice, ...) METALANG99_PRIV_REC_NEXT(742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_742(choice, ...) METALANG99_PRIV_REC_NEXT(743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_743(choice, ...) METALANG99_PRIV_REC_NEXT(744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_744(choice, ...) METALANG99_PRIV_REC_NEXT(745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_745(choice, ...) METALANG99_PRIV_REC_NEXT(746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_746(choice, ...) METALANG99_PRIV_REC_NEXT(747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_747(choice, ...) METALANG99_PRIV_REC_NEXT(748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_748(choice, ...) METALANG99_PRIV_REC_NEXT(749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_749(choice, ...) METALANG99_PRIV_REC_NEXT(750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_750(choice, ...) METALANG99_PRIV_REC_NEXT(751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_751(choice, ...) METALANG99_PRIV_REC_NEXT(752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_752(choice, ...) METALANG99_PRIV_REC_NEXT(753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_753(choice, ...) METALANG99_PRIV_REC_NEXT(754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_754(choice, ...) METALANG99_PRIV_REC_NEXT(755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_755(choice, ...) METALANG99_PRIV_REC_NEXT(756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_756(choice, ...) METALANG99_PRIV_REC_NEXT(757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_757(choice, ...) METALANG99_PRIV_REC_NEXT(758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_758(choice, ...) METALANG99_PRIV_REC_NEXT(759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_759(choice, ...) METALANG99_PRIV_REC_NEXT(760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_760(choice, ...) METALANG99_PRIV_REC_NEXT(761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_761(choice, ...) METALANG99_PRIV_REC_NEXT(762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_762(choice, ...) METALANG99_PRIV_REC_NEXT(763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_763(choice, ...) METALANG99_PRIV_REC_NEXT(764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_764(choice, ...) METALANG99_PRIV_REC_NEXT(765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_765(choice, ...) METALANG99_PRIV_REC_NEXT(766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_766(choice, ...) METALANG99_PRIV_REC_NEXT(767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_767(choice, ...) METALANG99_PRIV_REC_NEXT(768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_768(choice, ...) METALANG99_PRIV_REC_NEXT(769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_769(choice, ...) METALANG99_PRIV_REC_NEXT(770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_770(choice, ...) METALANG99_PRIV_REC_NEXT(771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_771(choice, ...) METALANG99_PRIV_REC_NEXT(772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_772(choice, ...) METALANG99_PRIV_REC_NEXT(773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_773(choice, ...) METALANG99_PRIV_REC_NEXT(774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_774(choice, ...) METALANG99_PRIV_REC_NEXT(775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_775(choice, ...) METALANG99_PRIV_REC_NEXT(776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_776(choice, ...) METALANG99_PRIV_REC_NEXT(777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_777(choice, ...) METALANG99_PRIV_REC_NEXT(778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_778(choice, ...) METALANG99_PRIV_REC_NEXT(779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_779(choice, ...) METALANG99_PRIV_REC_NEXT(780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_780(choice, ...) METALANG99_PRIV_REC_NEXT(781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_781(choice, ...) METALANG99_PRIV_REC_NEXT(782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_782(choice, ...) METALANG99_PRIV_REC_NEXT(783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_783(choice, ...) METALANG99_PRIV_REC_NEXT(784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_784(choice, ...) METALANG99_PRIV_REC_NEXT(785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_785(choice, ...) METALANG99_PRIV_REC_NEXT(786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_786(choice, ...) METALANG99_PRIV_REC_NEXT(787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_787(choice, ...) METALANG99_PRIV_REC_NEXT(788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_788(choice, ...) METALANG99_PRIV_REC_NEXT(789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_789(choice, ...) METALANG99_PRIV_REC_NEXT(790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_790(choice, ...) METALANG99_PRIV_REC_NEXT(791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_791(choice, ...) METALANG99_PRIV_REC_NEXT(792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_792(choice, ...) METALANG99_PRIV_REC_NEXT(793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_793(choice, ...) METALANG99_PRIV_REC_NEXT(794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_794(choice, ...) METALANG99_PRIV_REC_NEXT(795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_795(choice, ...) METALANG99_PRIV_REC_NEXT(796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_796(choice, ...) METALANG99_PRIV_REC_NEXT(797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_797(choice, ...) METALANG99_PRIV_REC_NEXT(798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_798(choice, ...) METALANG99_PRIV_REC_NEXT(799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_799(choice, ...) METALANG99_PRIV_REC_NEXT(800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_800(choice, ...) METALANG99_PRIV_REC_NEXT(801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_801(choice, ...) METALANG99_PRIV_REC_NEXT(802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_802(choice, ...) METALANG99_PRIV_REC_NEXT(803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_803(choice, ...) METALANG99_PRIV_REC_NEXT(804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_804(choice, ...) METALANG99_PRIV_REC_NEXT(805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_805(choice, ...) METALANG99_PRIV_REC_NEXT(806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_806(choice, ...) METALANG99_PRIV_REC_NEXT(807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_807(choice, ...) METALANG99_PRIV_REC_NEXT(808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_808(choice, ...) METALANG99_PRIV_REC_NEXT(809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_809(choice, ...) METALANG99_PRIV_REC_NEXT(810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_810(choice, ...) METALANG99_PRIV_REC_NEXT(811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_811(choice, ...) METALANG99_PRIV_REC_NEXT(812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_812(choice, ...) METALANG99_PRIV_REC_NEXT(813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_813(choice, ...) METALANG99_PRIV_REC_NEXT(814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_814(choice, ...) METALANG99_PRIV_REC_NEXT(815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_815(choice, ...) METALANG99_PRIV_REC_NEXT(816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_816(choice, ...) METALANG99_PRIV_REC_NEXT(817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_817(choice, ...) METALANG99_PRIV_REC_NEXT(818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_818(choice, ...) METALANG99_PRIV_REC_NEXT(819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_819(choice, ...) METALANG99_PRIV_REC_NEXT(820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_820(choice, ...) METALANG99_PRIV_REC_NEXT(821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_821(choice, ...) METALANG99_PRIV_REC_NEXT(822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_822(choice, ...) METALANG99_PRIV_REC_NEXT(823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_823(choice, ...) METALANG99_PRIV_REC_NEXT(824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_824(choice, ...) METALANG99_PRIV_REC_NEXT(825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_825(choice, ...) METALANG99_PRIV_REC_NEXT(826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_826(choice, ...) METALANG99_PRIV_REC_NEXT(827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_827(choice, ...) METALANG99_PRIV_REC_NEXT(828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_828(choice, ...) METALANG99_PRIV_REC_NEXT(829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_829(choice, ...) METALANG99_PRIV_REC_NEXT(830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_830(choice, ...) METALANG99_PRIV_REC_NEXT(831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_831(choice, ...) METALANG99_PRIV_REC_NEXT(832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_832(choice, ...) METALANG99_PRIV_REC_NEXT(833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_833(choice, ...) METALANG99_PRIV_REC_NEXT(834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_834(choice, ...) METALANG99_PRIV_REC_NEXT(835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_835(choice, ...) METALANG99_PRIV_REC_NEXT(836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_836(choice, ...) METALANG99_PRIV_REC_NEXT(837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_837(choice, ...) METALANG99_PRIV_REC_NEXT(838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_838(choice, ...) METALANG99_PRIV_REC_NEXT(839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_839(choice, ...) METALANG99_PRIV_REC_NEXT(840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_840(choice, ...) METALANG99_PRIV_REC_NEXT(841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_841(choice, ...) METALANG99_PRIV_REC_NEXT(842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_842(choice, ...) METALANG99_PRIV_REC_NEXT(843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_843(choice, ...) METALANG99_PRIV_REC_NEXT(844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_844(choice, ...) METALANG99_PRIV_REC_NEXT(845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_845(choice, ...) METALANG99_PRIV_REC_NEXT(846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_846(choice, ...) METALANG99_PRIV_REC_NEXT(847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_847(choice, ...) METALANG99_PRIV_REC_NEXT(848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_848(choice, ...) METALANG99_PRIV_REC_NEXT(849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_849(choice, ...) METALANG99_PRIV_REC_NEXT(850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_850(choice, ...) METALANG99_PRIV_REC_NEXT(851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_851(choice, ...) METALANG99_PRIV_REC_NEXT(852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_852(choice, ...) METALANG99_PRIV_REC_NEXT(853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_853(choice, ...) METALANG99_PRIV_REC_NEXT(854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_854(choice, ...) METALANG99_PRIV_REC_NEXT(855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_855(choice, ...) METALANG99_PRIV_REC_NEXT(856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_856(choice, ...) METALANG99_PRIV_REC_NEXT(857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_857(choice, ...) METALANG99_PRIV_REC_NEXT(858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_858(choice, ...) METALANG99_PRIV_REC_NEXT(859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_859(choice, ...) METALANG99_PRIV_REC_NEXT(860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_860(choice, ...) METALANG99_PRIV_REC_NEXT(861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_861(choice, ...) METALANG99_PRIV_REC_NEXT(862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_862(choice, ...) METALANG99_PRIV_REC_NEXT(863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_863(choice, ...) METALANG99_PRIV_REC_NEXT(864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_864(choice, ...) METALANG99_PRIV_REC_NEXT(865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_865(choice, ...) METALANG99_PRIV_REC_NEXT(866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_866(choice, ...) METALANG99_PRIV_REC_NEXT(867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_867(choice, ...) METALANG99_PRIV_REC_NEXT(868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_868(choice, ...) METALANG99_PRIV_REC_NEXT(869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_869(choice, ...) METALANG99_PRIV_REC_NEXT(870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_870(choice, ...) METALANG99_PRIV_REC_NEXT(871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_871(choice, ...) METALANG99_PRIV_REC_NEXT(872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_872(choice, ...) METALANG99_PRIV_REC_NEXT(873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_873(choice, ...) METALANG99_PRIV_REC_NEXT(874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_874(choice, ...) METALANG99_PRIV_REC_NEXT(875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_875(choice, ...) METALANG99_PRIV_REC_NEXT(876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_876(choice, ...) METALANG99_PRIV_REC_NEXT(877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_877(choice, ...) METALANG99_PRIV_REC_NEXT(878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_878(choice, ...) METALANG99_PRIV_REC_NEXT(879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_879(choice, ...) METALANG99_PRIV_REC_NEXT(880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_880(choice, ...) METALANG99_PRIV_REC_NEXT(881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_881(choice, ...) METALANG99_PRIV_REC_NEXT(882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_882(choice, ...) METALANG99_PRIV_REC_NEXT(883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_883(choice, ...) METALANG99_PRIV_REC_NEXT(884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_884(choice, ...) METALANG99_PRIV_REC_NEXT(885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_885(choice, ...) METALANG99_PRIV_REC_NEXT(886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_886(choice, ...) METALANG99_PRIV_REC_NEXT(887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_887(choice, ...) METALANG99_PRIV_REC_NEXT(888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_888(choice, ...) METALANG99_PRIV_REC_NEXT(889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_889(choice, ...) METALANG99_PRIV_REC_NEXT(890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_890(choice, ...) METALANG99_PRIV_REC_NEXT(891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_891(choice, ...) METALANG99_PRIV_REC_NEXT(892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_892(choice, ...) METALANG99_PRIV_REC_NEXT(893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_893(choice, ...) METALANG99_PRIV_REC_NEXT(894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_894(choice, ...) METALANG99_PRIV_REC_NEXT(895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_895(choice, ...) METALANG99_PRIV_REC_NEXT(896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_896(choice, ...) METALANG99_PRIV_REC_NEXT(897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_897(choice, ...) METALANG99_PRIV_REC_NEXT(898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_898(choice, ...) METALANG99_PRIV_REC_NEXT(899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_899(choice, ...) METALANG99_PRIV_REC_NEXT(900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_900(choice, ...) METALANG99_PRIV_REC_NEXT(901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_901(choice, ...) METALANG99_PRIV_REC_NEXT(902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_902(choice, ...) METALANG99_PRIV_REC_NEXT(903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_903(choice, ...) METALANG99_PRIV_REC_NEXT(904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_904(choice, ...) METALANG99_PRIV_REC_NEXT(905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_905(choice, ...) METALANG99_PRIV_REC_NEXT(906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_906(choice, ...) METALANG99_PRIV_REC_NEXT(907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_907(choice, ...) METALANG99_PRIV_REC_NEXT(908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_908(choice, ...) METALANG99_PRIV_REC_NEXT(909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_909(choice, ...) METALANG99_PRIV_REC_NEXT(910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_910(choice, ...) METALANG99_PRIV_REC_NEXT(911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_911(choice, ...) METALANG99_PRIV_REC_NEXT(912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_912(choice, ...) METALANG99_PRIV_REC_NEXT(913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_913(choice, ...) METALANG99_PRIV_REC_NEXT(914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_914(choice, ...) METALANG99_PRIV_REC_NEXT(915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_915(choice, ...) METALANG99_PRIV_REC_NEXT(916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_916(choice, ...) METALANG99_PRIV_REC_NEXT(917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_917(choice, ...) METALANG99_PRIV_REC_NEXT(918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_918(choice, ...) METALANG99_PRIV_REC_NEXT(919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_919(choice, ...) METALANG99_PRIV_REC_NEXT(920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_920(choice, ...) METALANG99_PRIV_REC_NEXT(921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_921(choice, ...) METALANG99_PRIV_REC_NEXT(922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_922(choice, ...) METALANG99_PRIV_REC_NEXT(923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_923(choice, ...) METALANG99_PRIV_REC_NEXT(924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_924(choice, ...) METALANG99_PRIV_REC_NEXT(925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_925(choice, ...) METALANG99_PRIV_REC_NEXT(926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_926(choice, ...) METALANG99_PRIV_REC_NEXT(927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_927(choice, ...) METALANG99_PRIV_REC_NEXT(928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_928(choice, ...) METALANG99_PRIV_REC_NEXT(929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_929(choice, ...) METALANG99_PRIV_REC_NEXT(930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_930(choice, ...) METALANG99_PRIV_REC_NEXT(931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_931(choice, ...) METALANG99_PRIV_REC_NEXT(932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_932(choice, ...) METALANG99_PRIV_REC_NEXT(933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_933(choice, ...) METALANG99_PRIV_REC_NEXT(934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_934(choice, ...) METALANG99_PRIV_REC_NEXT(935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_935(choice, ...) METALANG99_PRIV_REC_NEXT(936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_936(choice, ...) METALANG99_PRIV_REC_NEXT(937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_937(choice, ...) METALANG99_PRIV_REC_NEXT(938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_938(choice, ...) METALANG99_PRIV_REC_NEXT(939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_939(choice, ...) METALANG99_PRIV_REC_NEXT(940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_940(choice, ...) METALANG99_PRIV_REC_NEXT(941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_941(choice, ...) METALANG99_PRIV_REC_NEXT(942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_942(choice, ...) METALANG99_PRIV_REC_NEXT(943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_943(choice, ...) METALANG99_PRIV_REC_NEXT(944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_944(choice, ...) METALANG99_PRIV_REC_NEXT(945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_945(choice, ...) METALANG99_PRIV_REC_NEXT(946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_946(choice, ...) METALANG99_PRIV_REC_NEXT(947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_947(choice, ...) METALANG99_PRIV_REC_NEXT(948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_948(choice, ...) METALANG99_PRIV_REC_NEXT(949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_949(choice, ...) METALANG99_PRIV_REC_NEXT(950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_950(choice, ...) METALANG99_PRIV_REC_NEXT(951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_951(choice, ...) METALANG99_PRIV_REC_NEXT(952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_952(choice, ...) METALANG99_PRIV_REC_NEXT(953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_953(choice, ...) METALANG99_PRIV_REC_NEXT(954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_954(choice, ...) METALANG99_PRIV_REC_NEXT(955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_955(choice, ...) METALANG99_PRIV_REC_NEXT(956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_956(choice, ...) METALANG99_PRIV_REC_NEXT(957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_957(choice, ...) METALANG99_PRIV_REC_NEXT(958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_958(choice, ...) METALANG99_PRIV_REC_NEXT(959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_959(choice, ...) METALANG99_PRIV_REC_NEXT(960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_960(choice, ...) METALANG99_PRIV_REC_NEXT(961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_961(choice, ...) METALANG99_PRIV_REC_NEXT(962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_962(choice, ...) METALANG99_PRIV_REC_NEXT(963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_963(choice, ...) METALANG99_PRIV_REC_NEXT(964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_964(choice, ...) METALANG99_PRIV_REC_NEXT(965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_965(choice, ...) METALANG99_PRIV_REC_NEXT(966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_966(choice, ...) METALANG99_PRIV_REC_NEXT(967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_967(choice, ...) METALANG99_PRIV_REC_NEXT(968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_968(choice, ...) METALANG99_PRIV_REC_NEXT(969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_969(choice, ...) METALANG99_PRIV_REC_NEXT(970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_970(choice, ...) METALANG99_PRIV_REC_NEXT(971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_971(choice, ...) METALANG99_PRIV_REC_NEXT(972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_972(choice, ...) METALANG99_PRIV_REC_NEXT(973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_973(choice, ...) METALANG99_PRIV_REC_NEXT(974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_974(choice, ...) METALANG99_PRIV_REC_NEXT(975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_975(choice, ...) METALANG99_PRIV_REC_NEXT(976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_976(choice, ...) METALANG99_PRIV_REC_NEXT(977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_977(choice, ...) METALANG99_PRIV_REC_NEXT(978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_978(choice, ...) METALANG99_PRIV_REC_NEXT(979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_979(choice, ...) METALANG99_PRIV_REC_NEXT(980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_980(choice, ...) METALANG99_PRIV_REC_NEXT(981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_981(choice, ...) METALANG99_PRIV_REC_NEXT(982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_982(choice, ...) METALANG99_PRIV_REC_NEXT(983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_983(choice, ...) METALANG99_PRIV_REC_NEXT(984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_984(choice, ...) METALANG99_PRIV_REC_NEXT(985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_985(choice, ...) METALANG99_PRIV_REC_NEXT(986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_986(choice, ...) METALANG99_PRIV_REC_NEXT(987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_987(choice, ...) METALANG99_PRIV_REC_NEXT(988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_988(choice, ...) METALANG99_PRIV_REC_NEXT(989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_989(choice, ...) METALANG99_PRIV_REC_NEXT(990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_990(choice, ...) METALANG99_PRIV_REC_NEXT(991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_991(choice, ...) METALANG99_PRIV_REC_NEXT(992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_992(choice, ...) METALANG99_PRIV_REC_NEXT(993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_993(choice, ...) METALANG99_PRIV_REC_NEXT(994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_994(choice, ...) METALANG99_PRIV_REC_NEXT(995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_995(choice, ...) METALANG99_PRIV_REC_NEXT(996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_996(choice, ...) METALANG99_PRIV_REC_NEXT(997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_997(choice, ...) METALANG99_PRIV_REC_NEXT(998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_998(choice, ...) METALANG99_PRIV_REC_NEXT(999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_999(choice, ...) METALANG99_PRIV_REC_NEXT(1000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1000(choice, ...) METALANG99_PRIV_REC_NEXT(1001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1001(choice, ...) METALANG99_PRIV_REC_NEXT(1002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1002(choice, ...) METALANG99_PRIV_REC_NEXT(1003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1003(choice, ...) METALANG99_PRIV_REC_NEXT(1004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1004(choice, ...) METALANG99_PRIV_REC_NEXT(1005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1005(choice, ...) METALANG99_PRIV_REC_NEXT(1006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1006(choice, ...) METALANG99_PRIV_REC_NEXT(1007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1007(choice, ...) METALANG99_PRIV_REC_NEXT(1008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1008(choice, ...) METALANG99_PRIV_REC_NEXT(1009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1009(choice, ...) METALANG99_PRIV_REC_NEXT(1010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1010(choice, ...) METALANG99_PRIV_REC_NEXT(1011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1011(choice, ...) METALANG99_PRIV_REC_NEXT(1012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1012(choice, ...) METALANG99_PRIV_REC_NEXT(1013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1013(choice, ...) METALANG99_PRIV_REC_NEXT(1014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1014(choice, ...) METALANG99_PRIV_REC_NEXT(1015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1015(choice, ...) METALANG99_PRIV_REC_NEXT(1016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1016(choice, ...) METALANG99_PRIV_REC_NEXT(1017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1017(choice, ...) METALANG99_PRIV_REC_NEXT(1018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1018(choice, ...) METALANG99_PRIV_REC_NEXT(1019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1019(choice, ...) METALANG99_PRIV_REC_NEXT(1020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1020(choice, ...) METALANG99_PRIV_REC_NEXT(1021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1021(choice, ...) METALANG99_PRIV_REC_NEXT(1022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1022(choice, ...) METALANG99_PRIV_REC_NEXT(1023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1023(choice, ...) METALANG99_PRIV_REC_NEXT(1024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1024(choice, ...) METALANG99_PRIV_REC_NEXT(1025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1025(choice, ...) METALANG99_PRIV_REC_NEXT(1026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1026(choice, ...) METALANG99_PRIV_REC_NEXT(1027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1027(choice, ...) METALANG99_PRIV_REC_NEXT(1028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1028(choice, ...) METALANG99_PRIV_REC_NEXT(1029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1029(choice, ...) METALANG99_PRIV_REC_NEXT(1030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1030(choice, ...) METALANG99_PRIV_REC_NEXT(1031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1031(choice, ...) METALANG99_PRIV_REC_NEXT(1032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1032(choice, ...) METALANG99_PRIV_REC_NEXT(1033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1033(choice, ...) METALANG99_PRIV_REC_NEXT(1034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1034(choice, ...) METALANG99_PRIV_REC_NEXT(1035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1035(choice, ...) METALANG99_PRIV_REC_NEXT(1036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1036(choice, ...) METALANG99_PRIV_REC_NEXT(1037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1037(choice, ...) METALANG99_PRIV_REC_NEXT(1038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1038(choice, ...) METALANG99_PRIV_REC_NEXT(1039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1039(choice, ...) METALANG99_PRIV_REC_NEXT(1040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1040(choice, ...) METALANG99_PRIV_REC_NEXT(1041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1041(choice, ...) METALANG99_PRIV_REC_NEXT(1042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1042(choice, ...) METALANG99_PRIV_REC_NEXT(1043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1043(choice, ...) METALANG99_PRIV_REC_NEXT(1044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1044(choice, ...) METALANG99_PRIV_REC_NEXT(1045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1045(choice, ...) METALANG99_PRIV_REC_NEXT(1046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1046(choice, ...) METALANG99_PRIV_REC_NEXT(1047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1047(choice, ...) METALANG99_PRIV_REC_NEXT(1048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1048(choice, ...) METALANG99_PRIV_REC_NEXT(1049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1049(choice, ...) METALANG99_PRIV_REC_NEXT(1050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1050(choice, ...) METALANG99_PRIV_REC_NEXT(1051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1051(choice, ...) METALANG99_PRIV_REC_NEXT(1052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1052(choice, ...) METALANG99_PRIV_REC_NEXT(1053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1053(choice, ...) METALANG99_PRIV_REC_NEXT(1054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1054(choice, ...) METALANG99_PRIV_REC_NEXT(1055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1055(choice, ...) METALANG99_PRIV_REC_NEXT(1056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1056(choice, ...) METALANG99_PRIV_REC_NEXT(1057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1057(choice, ...) METALANG99_PRIV_REC_NEXT(1058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1058(choice, ...) METALANG99_PRIV_REC_NEXT(1059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1059(choice, ...) METALANG99_PRIV_REC_NEXT(1060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1060(choice, ...) METALANG99_PRIV_REC_NEXT(1061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1061(choice, ...) METALANG99_PRIV_REC_NEXT(1062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1062(choice, ...) METALANG99_PRIV_REC_NEXT(1063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1063(choice, ...) METALANG99_PRIV_REC_NEXT(1064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1064(choice, ...) METALANG99_PRIV_REC_NEXT(1065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1065(choice, ...) METALANG99_PRIV_REC_NEXT(1066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1066(choice, ...) METALANG99_PRIV_REC_NEXT(1067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1067(choice, ...) METALANG99_PRIV_REC_NEXT(1068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1068(choice, ...) METALANG99_PRIV_REC_NEXT(1069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1069(choice, ...) METALANG99_PRIV_REC_NEXT(1070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1070(choice, ...) METALANG99_PRIV_REC_NEXT(1071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1071(choice, ...) METALANG99_PRIV_REC_NEXT(1072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1072(choice, ...) METALANG99_PRIV_REC_NEXT(1073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1073(choice, ...) METALANG99_PRIV_REC_NEXT(1074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1074(choice, ...) METALANG99_PRIV_REC_NEXT(1075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1075(choice, ...) METALANG99_PRIV_REC_NEXT(1076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1076(choice, ...) METALANG99_PRIV_REC_NEXT(1077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1077(choice, ...) METALANG99_PRIV_REC_NEXT(1078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1078(choice, ...) METALANG99_PRIV_REC_NEXT(1079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1079(choice, ...) METALANG99_PRIV_REC_NEXT(1080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1080(choice, ...) METALANG99_PRIV_REC_NEXT(1081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1081(choice, ...) METALANG99_PRIV_REC_NEXT(1082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1082(choice, ...) METALANG99_PRIV_REC_NEXT(1083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1083(choice, ...) METALANG99_PRIV_REC_NEXT(1084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1084(choice, ...) METALANG99_PRIV_REC_NEXT(1085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1085(choice, ...) METALANG99_PRIV_REC_NEXT(1086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1086(choice, ...) METALANG99_PRIV_REC_NEXT(1087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1087(choice, ...) METALANG99_PRIV_REC_NEXT(1088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1088(choice, ...) METALANG99_PRIV_REC_NEXT(1089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1089(choice, ...) METALANG99_PRIV_REC_NEXT(1090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1090(choice, ...) METALANG99_PRIV_REC_NEXT(1091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1091(choice, ...) METALANG99_PRIV_REC_NEXT(1092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1092(choice, ...) METALANG99_PRIV_REC_NEXT(1093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1093(choice, ...) METALANG99_PRIV_REC_NEXT(1094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1094(choice, ...) METALANG99_PRIV_REC_NEXT(1095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1095(choice, ...) METALANG99_PRIV_REC_NEXT(1096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1096(choice, ...) METALANG99_PRIV_REC_NEXT(1097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1097(choice, ...) METALANG99_PRIV_REC_NEXT(1098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1098(choice, ...) METALANG99_PRIV_REC_NEXT(1099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1099(choice, ...) METALANG99_PRIV_REC_NEXT(1100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1100(choice, ...) METALANG99_PRIV_REC_NEXT(1101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1101(choice, ...) METALANG99_PRIV_REC_NEXT(1102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1102(choice, ...) METALANG99_PRIV_REC_NEXT(1103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1103(choice, ...) METALANG99_PRIV_REC_NEXT(1104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1104(choice, ...) METALANG99_PRIV_REC_NEXT(1105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1105(choice, ...) METALANG99_PRIV_REC_NEXT(1106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1106(choice, ...) METALANG99_PRIV_REC_NEXT(1107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1107(choice, ...) METALANG99_PRIV_REC_NEXT(1108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1108(choice, ...) METALANG99_PRIV_REC_NEXT(1109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1109(choice, ...) METALANG99_PRIV_REC_NEXT(1110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1110(choice, ...) METALANG99_PRIV_REC_NEXT(1111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1111(choice, ...) METALANG99_PRIV_REC_NEXT(1112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1112(choice, ...) METALANG99_PRIV_REC_NEXT(1113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1113(choice, ...) METALANG99_PRIV_REC_NEXT(1114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1114(choice, ...) METALANG99_PRIV_REC_NEXT(1115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1115(choice, ...) METALANG99_PRIV_REC_NEXT(1116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1116(choice, ...) METALANG99_PRIV_REC_NEXT(1117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1117(choice, ...) METALANG99_PRIV_REC_NEXT(1118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1118(choice, ...) METALANG99_PRIV_REC_NEXT(1119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1119(choice, ...) METALANG99_PRIV_REC_NEXT(1120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1120(choice, ...) METALANG99_PRIV_REC_NEXT(1121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1121(choice, ...) METALANG99_PRIV_REC_NEXT(1122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1122(choice, ...) METALANG99_PRIV_REC_NEXT(1123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1123(choice, ...) METALANG99_PRIV_REC_NEXT(1124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1124(choice, ...) METALANG99_PRIV_REC_NEXT(1125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1125(choice, ...) METALANG99_PRIV_REC_NEXT(1126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1126(choice, ...) METALANG99_PRIV_REC_NEXT(1127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1127(choice, ...) METALANG99_PRIV_REC_NEXT(1128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1128(choice, ...) METALANG99_PRIV_REC_NEXT(1129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1129(choice, ...) METALANG99_PRIV_REC_NEXT(1130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1130(choice, ...) METALANG99_PRIV_REC_NEXT(1131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1131(choice, ...) METALANG99_PRIV_REC_NEXT(1132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1132(choice, ...) METALANG99_PRIV_REC_NEXT(1133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1133(choice, ...) METALANG99_PRIV_REC_NEXT(1134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1134(choice, ...) METALANG99_PRIV_REC_NEXT(1135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1135(choice, ...) METALANG99_PRIV_REC_NEXT(1136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1136(choice, ...) METALANG99_PRIV_REC_NEXT(1137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1137(choice, ...) METALANG99_PRIV_REC_NEXT(1138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1138(choice, ...) METALANG99_PRIV_REC_NEXT(1139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1139(choice, ...) METALANG99_PRIV_REC_NEXT(1140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1140(choice, ...) METALANG99_PRIV_REC_NEXT(1141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1141(choice, ...) METALANG99_PRIV_REC_NEXT(1142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1142(choice, ...) METALANG99_PRIV_REC_NEXT(1143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1143(choice, ...) METALANG99_PRIV_REC_NEXT(1144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1144(choice, ...) METALANG99_PRIV_REC_NEXT(1145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1145(choice, ...) METALANG99_PRIV_REC_NEXT(1146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1146(choice, ...) METALANG99_PRIV_REC_NEXT(1147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1147(choice, ...) METALANG99_PRIV_REC_NEXT(1148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1148(choice, ...) METALANG99_PRIV_REC_NEXT(1149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1149(choice, ...) METALANG99_PRIV_REC_NEXT(1150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1150(choice, ...) METALANG99_PRIV_REC_NEXT(1151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1151(choice, ...) METALANG99_PRIV_REC_NEXT(1152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1152(choice, ...) METALANG99_PRIV_REC_NEXT(1153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1153(choice, ...) METALANG99_PRIV_REC_NEXT(1154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1154(choice, ...) METALANG99_PRIV_REC_NEXT(1155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1155(choice, ...) METALANG99_PRIV_REC_NEXT(1156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1156(choice, ...) METALANG99_PRIV_REC_NEXT(1157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1157(choice, ...) METALANG99_PRIV_REC_NEXT(1158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1158(choice, ...) METALANG99_PRIV_REC_NEXT(1159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1159(choice, ...) METALANG99_PRIV_REC_NEXT(1160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1160(choice, ...) METALANG99_PRIV_REC_NEXT(1161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1161(choice, ...) METALANG99_PRIV_REC_NEXT(1162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1162(choice, ...) METALANG99_PRIV_REC_NEXT(1163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1163(choice, ...) METALANG99_PRIV_REC_NEXT(1164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1164(choice, ...) METALANG99_PRIV_REC_NEXT(1165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1165(choice, ...) METALANG99_PRIV_REC_NEXT(1166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1166(choice, ...) METALANG99_PRIV_REC_NEXT(1167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1167(choice, ...) METALANG99_PRIV_REC_NEXT(1168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1168(choice, ...) METALANG99_PRIV_REC_NEXT(1169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1169(choice, ...) METALANG99_PRIV_REC_NEXT(1170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1170(choice, ...) METALANG99_PRIV_REC_NEXT(1171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1171(choice, ...) METALANG99_PRIV_REC_NEXT(1172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1172(choice, ...) METALANG99_PRIV_REC_NEXT(1173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1173(choice, ...) METALANG99_PRIV_REC_NEXT(1174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1174(choice, ...) METALANG99_PRIV_REC_NEXT(1175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1175(choice, ...) METALANG99_PRIV_REC_NEXT(1176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1176(choice, ...) METALANG99_PRIV_REC_NEXT(1177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1177(choice, ...) METALANG99_PRIV_REC_NEXT(1178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1178(choice, ...) METALANG99_PRIV_REC_NEXT(1179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1179(choice, ...) METALANG99_PRIV_REC_NEXT(1180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1180(choice, ...) METALANG99_PRIV_REC_NEXT(1181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1181(choice, ...) METALANG99_PRIV_REC_NEXT(1182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1182(choice, ...) METALANG99_PRIV_REC_NEXT(1183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1183(choice, ...) METALANG99_PRIV_REC_NEXT(1184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1184(choice, ...) METALANG99_PRIV_REC_NEXT(1185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1185(choice, ...) METALANG99_PRIV_REC_NEXT(1186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1186(choice, ...) METALANG99_PRIV_REC_NEXT(1187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1187(choice, ...) METALANG99_PRIV_REC_NEXT(1188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1188(choice, ...) METALANG99_PRIV_REC_NEXT(1189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1189(choice, ...) METALANG99_PRIV_REC_NEXT(1190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1190(choice, ...) METALANG99_PRIV_REC_NEXT(1191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1191(choice, ...) METALANG99_PRIV_REC_NEXT(1192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1192(choice, ...) METALANG99_PRIV_REC_NEXT(1193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1193(choice, ...) METALANG99_PRIV_REC_NEXT(1194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1194(choice, ...) METALANG99_PRIV_REC_NEXT(1195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1195(choice, ...) METALANG99_PRIV_REC_NEXT(1196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1196(choice, ...) METALANG99_PRIV_REC_NEXT(1197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1197(choice, ...) METALANG99_PRIV_REC_NEXT(1198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1198(choice, ...) METALANG99_PRIV_REC_NEXT(1199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1199(choice, ...) METALANG99_PRIV_REC_NEXT(1200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1200(choice, ...) METALANG99_PRIV_REC_NEXT(1201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1201(choice, ...) METALANG99_PRIV_REC_NEXT(1202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1202(choice, ...) METALANG99_PRIV_REC_NEXT(1203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1203(choice, ...) METALANG99_PRIV_REC_NEXT(1204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1204(choice, ...) METALANG99_PRIV_REC_NEXT(1205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1205(choice, ...) METALANG99_PRIV_REC_NEXT(1206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1206(choice, ...) METALANG99_PRIV_REC_NEXT(1207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1207(choice, ...) METALANG99_PRIV_REC_NEXT(1208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1208(choice, ...) METALANG99_PRIV_REC_NEXT(1209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1209(choice, ...) METALANG99_PRIV_REC_NEXT(1210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1210(choice, ...) METALANG99_PRIV_REC_NEXT(1211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1211(choice, ...) METALANG99_PRIV_REC_NEXT(1212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1212(choice, ...) METALANG99_PRIV_REC_NEXT(1213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1213(choice, ...) METALANG99_PRIV_REC_NEXT(1214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1214(choice, ...) METALANG99_PRIV_REC_NEXT(1215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1215(choice, ...) METALANG99_PRIV_REC_NEXT(1216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1216(choice, ...) METALANG99_PRIV_REC_NEXT(1217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1217(choice, ...) METALANG99_PRIV_REC_NEXT(1218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1218(choice, ...) METALANG99_PRIV_REC_NEXT(1219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1219(choice, ...) METALANG99_PRIV_REC_NEXT(1220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1220(choice, ...) METALANG99_PRIV_REC_NEXT(1221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1221(choice, ...) METALANG99_PRIV_REC_NEXT(1222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1222(choice, ...) METALANG99_PRIV_REC_NEXT(1223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1223(choice, ...) METALANG99_PRIV_REC_NEXT(1224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1224(choice, ...) METALANG99_PRIV_REC_NEXT(1225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1225(choice, ...) METALANG99_PRIV_REC_NEXT(1226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1226(choice, ...) METALANG99_PRIV_REC_NEXT(1227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1227(choice, ...) METALANG99_PRIV_REC_NEXT(1228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1228(choice, ...) METALANG99_PRIV_REC_NEXT(1229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1229(choice, ...) METALANG99_PRIV_REC_NEXT(1230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1230(choice, ...) METALANG99_PRIV_REC_NEXT(1231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1231(choice, ...) METALANG99_PRIV_REC_NEXT(1232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1232(choice, ...) METALANG99_PRIV_REC_NEXT(1233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1233(choice, ...) METALANG99_PRIV_REC_NEXT(1234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1234(choice, ...) METALANG99_PRIV_REC_NEXT(1235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1235(choice, ...) METALANG99_PRIV_REC_NEXT(1236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1236(choice, ...) METALANG99_PRIV_REC_NEXT(1237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1237(choice, ...) METALANG99_PRIV_REC_NEXT(1238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1238(choice, ...) METALANG99_PRIV_REC_NEXT(1239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1239(choice, ...) METALANG99_PRIV_REC_NEXT(1240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1240(choice, ...) METALANG99_PRIV_REC_NEXT(1241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1241(choice, ...) METALANG99_PRIV_REC_NEXT(1242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1242(choice, ...) METALANG99_PRIV_REC_NEXT(1243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1243(choice, ...) METALANG99_PRIV_REC_NEXT(1244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1244(choice, ...) METALANG99_PRIV_REC_NEXT(1245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1245(choice, ...) METALANG99_PRIV_REC_NEXT(1246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1246(choice, ...) METALANG99_PRIV_REC_NEXT(1247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1247(choice, ...) METALANG99_PRIV_REC_NEXT(1248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1248(choice, ...) METALANG99_PRIV_REC_NEXT(1249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1249(choice, ...) METALANG99_PRIV_REC_NEXT(1250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1250(choice, ...) METALANG99_PRIV_REC_NEXT(1251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1251(choice, ...) METALANG99_PRIV_REC_NEXT(1252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1252(choice, ...) METALANG99_PRIV_REC_NEXT(1253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1253(choice, ...) METALANG99_PRIV_REC_NEXT(1254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1254(choice, ...) METALANG99_PRIV_REC_NEXT(1255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1255(choice, ...) METALANG99_PRIV_REC_NEXT(1256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1256(choice, ...) METALANG99_PRIV_REC_NEXT(1257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1257(choice, ...) METALANG99_PRIV_REC_NEXT(1258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1258(choice, ...) METALANG99_PRIV_REC_NEXT(1259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1259(choice, ...) METALANG99_PRIV_REC_NEXT(1260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1260(choice, ...) METALANG99_PRIV_REC_NEXT(1261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1261(choice, ...) METALANG99_PRIV_REC_NEXT(1262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1262(choice, ...) METALANG99_PRIV_REC_NEXT(1263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1263(choice, ...) METALANG99_PRIV_REC_NEXT(1264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1264(choice, ...) METALANG99_PRIV_REC_NEXT(1265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1265(choice, ...) METALANG99_PRIV_REC_NEXT(1266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1266(choice, ...) METALANG99_PRIV_REC_NEXT(1267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1267(choice, ...) METALANG99_PRIV_REC_NEXT(1268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1268(choice, ...) METALANG99_PRIV_REC_NEXT(1269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1269(choice, ...) METALANG99_PRIV_REC_NEXT(1270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1270(choice, ...) METALANG99_PRIV_REC_NEXT(1271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1271(choice, ...) METALANG99_PRIV_REC_NEXT(1272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1272(choice, ...) METALANG99_PRIV_REC_NEXT(1273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1273(choice, ...) METALANG99_PRIV_REC_NEXT(1274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1274(choice, ...) METALANG99_PRIV_REC_NEXT(1275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1275(choice, ...) METALANG99_PRIV_REC_NEXT(1276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1276(choice, ...) METALANG99_PRIV_REC_NEXT(1277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1277(choice, ...) METALANG99_PRIV_REC_NEXT(1278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1278(choice, ...) METALANG99_PRIV_REC_NEXT(1279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1279(choice, ...) METALANG99_PRIV_REC_NEXT(1280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1280(choice, ...) METALANG99_PRIV_REC_NEXT(1281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1281(choice, ...) METALANG99_PRIV_REC_NEXT(1282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1282(choice, ...) METALANG99_PRIV_REC_NEXT(1283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1283(choice, ...) METALANG99_PRIV_REC_NEXT(1284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1284(choice, ...) METALANG99_PRIV_REC_NEXT(1285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1285(choice, ...) METALANG99_PRIV_REC_NEXT(1286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1286(choice, ...) METALANG99_PRIV_REC_NEXT(1287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1287(choice, ...) METALANG99_PRIV_REC_NEXT(1288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1288(choice, ...) METALANG99_PRIV_REC_NEXT(1289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1289(choice, ...) METALANG99_PRIV_REC_NEXT(1290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1290(choice, ...) METALANG99_PRIV_REC_NEXT(1291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1291(choice, ...) METALANG99_PRIV_REC_NEXT(1292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1292(choice, ...) METALANG99_PRIV_REC_NEXT(1293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1293(choice, ...) METALANG99_PRIV_REC_NEXT(1294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1294(choice, ...) METALANG99_PRIV_REC_NEXT(1295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1295(choice, ...) METALANG99_PRIV_REC_NEXT(1296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1296(choice, ...) METALANG99_PRIV_REC_NEXT(1297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1297(choice, ...) METALANG99_PRIV_REC_NEXT(1298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1298(choice, ...) METALANG99_PRIV_REC_NEXT(1299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1299(choice, ...) METALANG99_PRIV_REC_NEXT(1300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1300(choice, ...) METALANG99_PRIV_REC_NEXT(1301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1301(choice, ...) METALANG99_PRIV_REC_NEXT(1302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1302(choice, ...) METALANG99_PRIV_REC_NEXT(1303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1303(choice, ...) METALANG99_PRIV_REC_NEXT(1304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1304(choice, ...) METALANG99_PRIV_REC_NEXT(1305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1305(choice, ...) METALANG99_PRIV_REC_NEXT(1306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1306(choice, ...) METALANG99_PRIV_REC_NEXT(1307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1307(choice, ...) METALANG99_PRIV_REC_NEXT(1308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1308(choice, ...) METALANG99_PRIV_REC_NEXT(1309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1309(choice, ...) METALANG99_PRIV_REC_NEXT(1310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1310(choice, ...) METALANG99_PRIV_REC_NEXT(1311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1311(choice, ...) METALANG99_PRIV_REC_NEXT(1312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1312(choice, ...) METALANG99_PRIV_REC_NEXT(1313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1313(choice, ...) METALANG99_PRIV_REC_NEXT(1314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1314(choice, ...) METALANG99_PRIV_REC_NEXT(1315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1315(choice, ...) METALANG99_PRIV_REC_NEXT(1316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1316(choice, ...) METALANG99_PRIV_REC_NEXT(1317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1317(choice, ...) METALANG99_PRIV_REC_NEXT(1318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1318(choice, ...) METALANG99_PRIV_REC_NEXT(1319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1319(choice, ...) METALANG99_PRIV_REC_NEXT(1320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1320(choice, ...) METALANG99_PRIV_REC_NEXT(1321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1321(choice, ...) METALANG99_PRIV_REC_NEXT(1322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1322(choice, ...) METALANG99_PRIV_REC_NEXT(1323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1323(choice, ...) METALANG99_PRIV_REC_NEXT(1324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1324(choice, ...) METALANG99_PRIV_REC_NEXT(1325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1325(choice, ...) METALANG99_PRIV_REC_NEXT(1326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1326(choice, ...) METALANG99_PRIV_REC_NEXT(1327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1327(choice, ...) METALANG99_PRIV_REC_NEXT(1328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1328(choice, ...) METALANG99_PRIV_REC_NEXT(1329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1329(choice, ...) METALANG99_PRIV_REC_NEXT(1330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1330(choice, ...) METALANG99_PRIV_REC_NEXT(1331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1331(choice, ...) METALANG99_PRIV_REC_NEXT(1332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1332(choice, ...) METALANG99_PRIV_REC_NEXT(1333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1333(choice, ...) METALANG99_PRIV_REC_NEXT(1334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1334(choice, ...) METALANG99_PRIV_REC_NEXT(1335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1335(choice, ...) METALANG99_PRIV_REC_NEXT(1336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1336(choice, ...) METALANG99_PRIV_REC_NEXT(1337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1337(choice, ...) METALANG99_PRIV_REC_NEXT(1338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1338(choice, ...) METALANG99_PRIV_REC_NEXT(1339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1339(choice, ...) METALANG99_PRIV_REC_NEXT(1340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1340(choice, ...) METALANG99_PRIV_REC_NEXT(1341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1341(choice, ...) METALANG99_PRIV_REC_NEXT(1342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1342(choice, ...) METALANG99_PRIV_REC_NEXT(1343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1343(choice, ...) METALANG99_PRIV_REC_NEXT(1344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1344(choice, ...) METALANG99_PRIV_REC_NEXT(1345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1345(choice, ...) METALANG99_PRIV_REC_NEXT(1346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1346(choice, ...) METALANG99_PRIV_REC_NEXT(1347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1347(choice, ...) METALANG99_PRIV_REC_NEXT(1348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1348(choice, ...) METALANG99_PRIV_REC_NEXT(1349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1349(choice, ...) METALANG99_PRIV_REC_NEXT(1350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1350(choice, ...) METALANG99_PRIV_REC_NEXT(1351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1351(choice, ...) METALANG99_PRIV_REC_NEXT(1352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1352(choice, ...) METALANG99_PRIV_REC_NEXT(1353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1353(choice, ...) METALANG99_PRIV_REC_NEXT(1354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1354(choice, ...) METALANG99_PRIV_REC_NEXT(1355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1355(choice, ...) METALANG99_PRIV_REC_NEXT(1356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1356(choice, ...) METALANG99_PRIV_REC_NEXT(1357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1357(choice, ...) METALANG99_PRIV_REC_NEXT(1358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1358(choice, ...) METALANG99_PRIV_REC_NEXT(1359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1359(choice, ...) METALANG99_PRIV_REC_NEXT(1360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1360(choice, ...) METALANG99_PRIV_REC_NEXT(1361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1361(choice, ...) METALANG99_PRIV_REC_NEXT(1362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1362(choice, ...) METALANG99_PRIV_REC_NEXT(1363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1363(choice, ...) METALANG99_PRIV_REC_NEXT(1364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1364(choice, ...) METALANG99_PRIV_REC_NEXT(1365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1365(choice, ...) METALANG99_PRIV_REC_NEXT(1366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1366(choice, ...) METALANG99_PRIV_REC_NEXT(1367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1367(choice, ...) METALANG99_PRIV_REC_NEXT(1368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1368(choice, ...) METALANG99_PRIV_REC_NEXT(1369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1369(choice, ...) METALANG99_PRIV_REC_NEXT(1370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1370(choice, ...) METALANG99_PRIV_REC_NEXT(1371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1371(choice, ...) METALANG99_PRIV_REC_NEXT(1372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1372(choice, ...) METALANG99_PRIV_REC_NEXT(1373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1373(choice, ...) METALANG99_PRIV_REC_NEXT(1374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1374(choice, ...) METALANG99_PRIV_REC_NEXT(1375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1375(choice, ...) METALANG99_PRIV_REC_NEXT(1376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1376(choice, ...) METALANG99_PRIV_REC_NEXT(1377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1377(choice, ...) METALANG99_PRIV_REC_NEXT(1378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1378(choice, ...) METALANG99_PRIV_REC_NEXT(1379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1379(choice, ...) METALANG99_PRIV_REC_NEXT(1380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1380(choice, ...) METALANG99_PRIV_REC_NEXT(1381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1381(choice, ...) METALANG99_PRIV_REC_NEXT(1382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1382(choice, ...) METALANG99_PRIV_REC_NEXT(1383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1383(choice, ...) METALANG99_PRIV_REC_NEXT(1384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1384(choice, ...) METALANG99_PRIV_REC_NEXT(1385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1385(choice, ...) METALANG99_PRIV_REC_NEXT(1386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1386(choice, ...) METALANG99_PRIV_REC_NEXT(1387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1387(choice, ...) METALANG99_PRIV_REC_NEXT(1388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1388(choice, ...) METALANG99_PRIV_REC_NEXT(1389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1389(choice, ...) METALANG99_PRIV_REC_NEXT(1390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1390(choice, ...) METALANG99_PRIV_REC_NEXT(1391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1391(choice, ...) METALANG99_PRIV_REC_NEXT(1392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1392(choice, ...) METALANG99_PRIV_REC_NEXT(1393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1393(choice, ...) METALANG99_PRIV_REC_NEXT(1394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1394(choice, ...) METALANG99_PRIV_REC_NEXT(1395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1395(choice, ...) METALANG99_PRIV_REC_NEXT(1396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1396(choice, ...) METALANG99_PRIV_REC_NEXT(1397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1397(choice, ...) METALANG99_PRIV_REC_NEXT(1398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1398(choice, ...) METALANG99_PRIV_REC_NEXT(1399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1399(choice, ...) METALANG99_PRIV_REC_NEXT(1400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1400(choice, ...) METALANG99_PRIV_REC_NEXT(1401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1401(choice, ...) METALANG99_PRIV_REC_NEXT(1402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1402(choice, ...) METALANG99_PRIV_REC_NEXT(1403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1403(choice, ...) METALANG99_PRIV_REC_NEXT(1404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1404(choice, ...) METALANG99_PRIV_REC_NEXT(1405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1405(choice, ...) METALANG99_PRIV_REC_NEXT(1406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1406(choice, ...) METALANG99_PRIV_REC_NEXT(1407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1407(choice, ...) METALANG99_PRIV_REC_NEXT(1408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1408(choice, ...) METALANG99_PRIV_REC_NEXT(1409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1409(choice, ...) METALANG99_PRIV_REC_NEXT(1410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1410(choice, ...) METALANG99_PRIV_REC_NEXT(1411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1411(choice, ...) METALANG99_PRIV_REC_NEXT(1412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1412(choice, ...) METALANG99_PRIV_REC_NEXT(1413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1413(choice, ...) METALANG99_PRIV_REC_NEXT(1414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1414(choice, ...) METALANG99_PRIV_REC_NEXT(1415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1415(choice, ...) METALANG99_PRIV_REC_NEXT(1416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1416(choice, ...) METALANG99_PRIV_REC_NEXT(1417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1417(choice, ...) METALANG99_PRIV_REC_NEXT(1418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1418(choice, ...) METALANG99_PRIV_REC_NEXT(1419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1419(choice, ...) METALANG99_PRIV_REC_NEXT(1420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1420(choice, ...) METALANG99_PRIV_REC_NEXT(1421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1421(choice, ...) METALANG99_PRIV_REC_NEXT(1422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1422(choice, ...) METALANG99_PRIV_REC_NEXT(1423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1423(choice, ...) METALANG99_PRIV_REC_NEXT(1424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1424(choice, ...) METALANG99_PRIV_REC_NEXT(1425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1425(choice, ...) METALANG99_PRIV_REC_NEXT(1426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1426(choice, ...) METALANG99_PRIV_REC_NEXT(1427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1427(choice, ...) METALANG99_PRIV_REC_NEXT(1428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1428(choice, ...) METALANG99_PRIV_REC_NEXT(1429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1429(choice, ...) METALANG99_PRIV_REC_NEXT(1430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1430(choice, ...) METALANG99_PRIV_REC_NEXT(1431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1431(choice, ...) METALANG99_PRIV_REC_NEXT(1432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1432(choice, ...) METALANG99_PRIV_REC_NEXT(1433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1433(choice, ...) METALANG99_PRIV_REC_NEXT(1434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1434(choice, ...) METALANG99_PRIV_REC_NEXT(1435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1435(choice, ...) METALANG99_PRIV_REC_NEXT(1436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1436(choice, ...) METALANG99_PRIV_REC_NEXT(1437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1437(choice, ...) METALANG99_PRIV_REC_NEXT(1438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1438(choice, ...) METALANG99_PRIV_REC_NEXT(1439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1439(choice, ...) METALANG99_PRIV_REC_NEXT(1440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1440(choice, ...) METALANG99_PRIV_REC_NEXT(1441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1441(choice, ...) METALANG99_PRIV_REC_NEXT(1442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1442(choice, ...) METALANG99_PRIV_REC_NEXT(1443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1443(choice, ...) METALANG99_PRIV_REC_NEXT(1444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1444(choice, ...) METALANG99_PRIV_REC_NEXT(1445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1445(choice, ...) METALANG99_PRIV_REC_NEXT(1446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1446(choice, ...) METALANG99_PRIV_REC_NEXT(1447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1447(choice, ...) METALANG99_PRIV_REC_NEXT(1448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1448(choice, ...) METALANG99_PRIV_REC_NEXT(1449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1449(choice, ...) METALANG99_PRIV_REC_NEXT(1450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1450(choice, ...) METALANG99_PRIV_REC_NEXT(1451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1451(choice, ...) METALANG99_PRIV_REC_NEXT(1452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1452(choice, ...) METALANG99_PRIV_REC_NEXT(1453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1453(choice, ...) METALANG99_PRIV_REC_NEXT(1454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1454(choice, ...) METALANG99_PRIV_REC_NEXT(1455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1455(choice, ...) METALANG99_PRIV_REC_NEXT(1456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1456(choice, ...) METALANG99_PRIV_REC_NEXT(1457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1457(choice, ...) METALANG99_PRIV_REC_NEXT(1458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1458(choice, ...) METALANG99_PRIV_REC_NEXT(1459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1459(choice, ...) METALANG99_PRIV_REC_NEXT(1460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1460(choice, ...) METALANG99_PRIV_REC_NEXT(1461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1461(choice, ...) METALANG99_PRIV_REC_NEXT(1462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1462(choice, ...) METALANG99_PRIV_REC_NEXT(1463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1463(choice, ...) METALANG99_PRIV_REC_NEXT(1464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1464(choice, ...) METALANG99_PRIV_REC_NEXT(1465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1465(choice, ...) METALANG99_PRIV_REC_NEXT(1466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1466(choice, ...) METALANG99_PRIV_REC_NEXT(1467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1467(choice, ...) METALANG99_PRIV_REC_NEXT(1468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1468(choice, ...) METALANG99_PRIV_REC_NEXT(1469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1469(choice, ...) METALANG99_PRIV_REC_NEXT(1470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1470(choice, ...) METALANG99_PRIV_REC_NEXT(1471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1471(choice, ...) METALANG99_PRIV_REC_NEXT(1472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1472(choice, ...) METALANG99_PRIV_REC_NEXT(1473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1473(choice, ...) METALANG99_PRIV_REC_NEXT(1474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1474(choice, ...) METALANG99_PRIV_REC_NEXT(1475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1475(choice, ...) METALANG99_PRIV_REC_NEXT(1476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1476(choice, ...) METALANG99_PRIV_REC_NEXT(1477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1477(choice, ...) METALANG99_PRIV_REC_NEXT(1478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1478(choice, ...) METALANG99_PRIV_REC_NEXT(1479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1479(choice, ...) METALANG99_PRIV_REC_NEXT(1480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1480(choice, ...) METALANG99_PRIV_REC_NEXT(1481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1481(choice, ...) METALANG99_PRIV_REC_NEXT(1482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1482(choice, ...) METALANG99_PRIV_REC_NEXT(1483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1483(choice, ...) METALANG99_PRIV_REC_NEXT(1484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1484(choice, ...) METALANG99_PRIV_REC_NEXT(1485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1485(choice, ...) METALANG99_PRIV_REC_NEXT(1486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1486(choice, ...) METALANG99_PRIV_REC_NEXT(1487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1487(choice, ...) METALANG99_PRIV_REC_NEXT(1488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1488(choice, ...) METALANG99_PRIV_REC_NEXT(1489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1489(choice, ...) METALANG99_PRIV_REC_NEXT(1490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1490(choice, ...) METALANG99_PRIV_REC_NEXT(1491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1491(choice, ...) METALANG99_PRIV_REC_NEXT(1492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1492(choice, ...) METALANG99_PRIV_REC_NEXT(1493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1493(choice, ...) METALANG99_PRIV_REC_NEXT(1494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1494(choice, ...) METALANG99_PRIV_REC_NEXT(1495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1495(choice, ...) METALANG99_PRIV_REC_NEXT(1496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1496(choice, ...) METALANG99_PRIV_REC_NEXT(1497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1497(choice, ...) METALANG99_PRIV_REC_NEXT(1498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1498(choice, ...) METALANG99_PRIV_REC_NEXT(1499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1499(choice, ...) METALANG99_PRIV_REC_NEXT(1500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1500(choice, ...) METALANG99_PRIV_REC_NEXT(1501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1501(choice, ...) METALANG99_PRIV_REC_NEXT(1502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1502(choice, ...) METALANG99_PRIV_REC_NEXT(1503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1503(choice, ...) METALANG99_PRIV_REC_NEXT(1504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1504(choice, ...) METALANG99_PRIV_REC_NEXT(1505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1505(choice, ...) METALANG99_PRIV_REC_NEXT(1506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1506(choice, ...) METALANG99_PRIV_REC_NEXT(1507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1507(choice, ...) METALANG99_PRIV_REC_NEXT(1508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1508(choice, ...) METALANG99_PRIV_REC_NEXT(1509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1509(choice, ...) METALANG99_PRIV_REC_NEXT(1510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1510(choice, ...) METALANG99_PRIV_REC_NEXT(1511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1511(choice, ...) METALANG99_PRIV_REC_NEXT(1512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1512(choice, ...) METALANG99_PRIV_REC_NEXT(1513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1513(choice, ...) METALANG99_PRIV_REC_NEXT(1514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1514(choice, ...) METALANG99_PRIV_REC_NEXT(1515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1515(choice, ...) METALANG99_PRIV_REC_NEXT(1516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1516(choice, ...) METALANG99_PRIV_REC_NEXT(1517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1517(choice, ...) METALANG99_PRIV_REC_NEXT(1518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1518(choice, ...) METALANG99_PRIV_REC_NEXT(1519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1519(choice, ...) METALANG99_PRIV_REC_NEXT(1520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1520(choice, ...) METALANG99_PRIV_REC_NEXT(1521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1521(choice, ...) METALANG99_PRIV_REC_NEXT(1522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1522(choice, ...) METALANG99_PRIV_REC_NEXT(1523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1523(choice, ...) METALANG99_PRIV_REC_NEXT(1524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1524(choice, ...) METALANG99_PRIV_REC_NEXT(1525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1525(choice, ...) METALANG99_PRIV_REC_NEXT(1526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1526(choice, ...) METALANG99_PRIV_REC_NEXT(1527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1527(choice, ...) METALANG99_PRIV_REC_NEXT(1528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1528(choice, ...) METALANG99_PRIV_REC_NEXT(1529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1529(choice, ...) METALANG99_PRIV_REC_NEXT(1530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1530(choice, ...) METALANG99_PRIV_REC_NEXT(1531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1531(choice, ...) METALANG99_PRIV_REC_NEXT(1532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1532(choice, ...) METALANG99_PRIV_REC_NEXT(1533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1533(choice, ...) METALANG99_PRIV_REC_NEXT(1534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1534(choice, ...) METALANG99_PRIV_REC_NEXT(1535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1535(choice, ...) METALANG99_PRIV_REC_NEXT(1536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1536(choice, ...) METALANG99_PRIV_REC_NEXT(1537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1537(choice, ...) METALANG99_PRIV_REC_NEXT(1538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1538(choice, ...) METALANG99_PRIV_REC_NEXT(1539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1539(choice, ...) METALANG99_PRIV_REC_NEXT(1540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1540(choice, ...) METALANG99_PRIV_REC_NEXT(1541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1541(choice, ...) METALANG99_PRIV_REC_NEXT(1542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1542(choice, ...) METALANG99_PRIV_REC_NEXT(1543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1543(choice, ...) METALANG99_PRIV_REC_NEXT(1544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1544(choice, ...) METALANG99_PRIV_REC_NEXT(1545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1545(choice, ...) METALANG99_PRIV_REC_NEXT(1546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1546(choice, ...) METALANG99_PRIV_REC_NEXT(1547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1547(choice, ...) METALANG99_PRIV_REC_NEXT(1548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1548(choice, ...) METALANG99_PRIV_REC_NEXT(1549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1549(choice, ...) METALANG99_PRIV_REC_NEXT(1550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1550(choice, ...) METALANG99_PRIV_REC_NEXT(1551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1551(choice, ...) METALANG99_PRIV_REC_NEXT(1552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1552(choice, ...) METALANG99_PRIV_REC_NEXT(1553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1553(choice, ...) METALANG99_PRIV_REC_NEXT(1554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1554(choice, ...) METALANG99_PRIV_REC_NEXT(1555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1555(choice, ...) METALANG99_PRIV_REC_NEXT(1556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1556(choice, ...) METALANG99_PRIV_REC_NEXT(1557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1557(choice, ...) METALANG99_PRIV_REC_NEXT(1558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1558(choice, ...) METALANG99_PRIV_REC_NEXT(1559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1559(choice, ...) METALANG99_PRIV_REC_NEXT(1560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1560(choice, ...) METALANG99_PRIV_REC_NEXT(1561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1561(choice, ...) METALANG99_PRIV_REC_NEXT(1562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1562(choice, ...) METALANG99_PRIV_REC_NEXT(1563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1563(choice, ...) METALANG99_PRIV_REC_NEXT(1564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1564(choice, ...) METALANG99_PRIV_REC_NEXT(1565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1565(choice, ...) METALANG99_PRIV_REC_NEXT(1566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1566(choice, ...) METALANG99_PRIV_REC_NEXT(1567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1567(choice, ...) METALANG99_PRIV_REC_NEXT(1568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1568(choice, ...) METALANG99_PRIV_REC_NEXT(1569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1569(choice, ...) METALANG99_PRIV_REC_NEXT(1570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1570(choice, ...) METALANG99_PRIV_REC_NEXT(1571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1571(choice, ...) METALANG99_PRIV_REC_NEXT(1572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1572(choice, ...) METALANG99_PRIV_REC_NEXT(1573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1573(choice, ...) METALANG99_PRIV_REC_NEXT(1574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1574(choice, ...) METALANG99_PRIV_REC_NEXT(1575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1575(choice, ...) METALANG99_PRIV_REC_NEXT(1576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1576(choice, ...) METALANG99_PRIV_REC_NEXT(1577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1577(choice, ...) METALANG99_PRIV_REC_NEXT(1578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1578(choice, ...) METALANG99_PRIV_REC_NEXT(1579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1579(choice, ...) METALANG99_PRIV_REC_NEXT(1580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1580(choice, ...) METALANG99_PRIV_REC_NEXT(1581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1581(choice, ...) METALANG99_PRIV_REC_NEXT(1582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1582(choice, ...) METALANG99_PRIV_REC_NEXT(1583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1583(choice, ...) METALANG99_PRIV_REC_NEXT(1584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1584(choice, ...) METALANG99_PRIV_REC_NEXT(1585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1585(choice, ...) METALANG99_PRIV_REC_NEXT(1586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1586(choice, ...) METALANG99_PRIV_REC_NEXT(1587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1587(choice, ...) METALANG99_PRIV_REC_NEXT(1588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1588(choice, ...) METALANG99_PRIV_REC_NEXT(1589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1589(choice, ...) METALANG99_PRIV_REC_NEXT(1590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1590(choice, ...) METALANG99_PRIV_REC_NEXT(1591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1591(choice, ...) METALANG99_PRIV_REC_NEXT(1592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1592(choice, ...) METALANG99_PRIV_REC_NEXT(1593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1593(choice, ...) METALANG99_PRIV_REC_NEXT(1594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1594(choice, ...) METALANG99_PRIV_REC_NEXT(1595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1595(choice, ...) METALANG99_PRIV_REC_NEXT(1596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1596(choice, ...) METALANG99_PRIV_REC_NEXT(1597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1597(choice, ...) METALANG99_PRIV_REC_NEXT(1598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1598(choice, ...) METALANG99_PRIV_REC_NEXT(1599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1599(choice, ...) METALANG99_PRIV_REC_NEXT(1600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1600(choice, ...) METALANG99_PRIV_REC_NEXT(1601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1601(choice, ...) METALANG99_PRIV_REC_NEXT(1602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1602(choice, ...) METALANG99_PRIV_REC_NEXT(1603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1603(choice, ...) METALANG99_PRIV_REC_NEXT(1604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1604(choice, ...) METALANG99_PRIV_REC_NEXT(1605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1605(choice, ...) METALANG99_PRIV_REC_NEXT(1606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1606(choice, ...) METALANG99_PRIV_REC_NEXT(1607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1607(choice, ...) METALANG99_PRIV_REC_NEXT(1608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1608(choice, ...) METALANG99_PRIV_REC_NEXT(1609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1609(choice, ...) METALANG99_PRIV_REC_NEXT(1610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1610(choice, ...) METALANG99_PRIV_REC_NEXT(1611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1611(choice, ...) METALANG99_PRIV_REC_NEXT(1612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1612(choice, ...) METALANG99_PRIV_REC_NEXT(1613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1613(choice, ...) METALANG99_PRIV_REC_NEXT(1614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1614(choice, ...) METALANG99_PRIV_REC_NEXT(1615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1615(choice, ...) METALANG99_PRIV_REC_NEXT(1616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1616(choice, ...) METALANG99_PRIV_REC_NEXT(1617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1617(choice, ...) METALANG99_PRIV_REC_NEXT(1618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1618(choice, ...) METALANG99_PRIV_REC_NEXT(1619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1619(choice, ...) METALANG99_PRIV_REC_NEXT(1620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1620(choice, ...) METALANG99_PRIV_REC_NEXT(1621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1621(choice, ...) METALANG99_PRIV_REC_NEXT(1622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1622(choice, ...) METALANG99_PRIV_REC_NEXT(1623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1623(choice, ...) METALANG99_PRIV_REC_NEXT(1624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1624(choice, ...) METALANG99_PRIV_REC_NEXT(1625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1625(choice, ...) METALANG99_PRIV_REC_NEXT(1626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1626(choice, ...) METALANG99_PRIV_REC_NEXT(1627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1627(choice, ...) METALANG99_PRIV_REC_NEXT(1628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1628(choice, ...) METALANG99_PRIV_REC_NEXT(1629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1629(choice, ...) METALANG99_PRIV_REC_NEXT(1630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1630(choice, ...) METALANG99_PRIV_REC_NEXT(1631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1631(choice, ...) METALANG99_PRIV_REC_NEXT(1632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1632(choice, ...) METALANG99_PRIV_REC_NEXT(1633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1633(choice, ...) METALANG99_PRIV_REC_NEXT(1634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1634(choice, ...) METALANG99_PRIV_REC_NEXT(1635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1635(choice, ...) METALANG99_PRIV_REC_NEXT(1636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1636(choice, ...) METALANG99_PRIV_REC_NEXT(1637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1637(choice, ...) METALANG99_PRIV_REC_NEXT(1638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1638(choice, ...) METALANG99_PRIV_REC_NEXT(1639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1639(choice, ...) METALANG99_PRIV_REC_NEXT(1640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1640(choice, ...) METALANG99_PRIV_REC_NEXT(1641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1641(choice, ...) METALANG99_PRIV_REC_NEXT(1642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1642(choice, ...) METALANG99_PRIV_REC_NEXT(1643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1643(choice, ...) METALANG99_PRIV_REC_NEXT(1644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1644(choice, ...) METALANG99_PRIV_REC_NEXT(1645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1645(choice, ...) METALANG99_PRIV_REC_NEXT(1646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1646(choice, ...) METALANG99_PRIV_REC_NEXT(1647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1647(choice, ...) METALANG99_PRIV_REC_NEXT(1648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1648(choice, ...) METALANG99_PRIV_REC_NEXT(1649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1649(choice, ...) METALANG99_PRIV_REC_NEXT(1650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1650(choice, ...) METALANG99_PRIV_REC_NEXT(1651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1651(choice, ...) METALANG99_PRIV_REC_NEXT(1652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1652(choice, ...) METALANG99_PRIV_REC_NEXT(1653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1653(choice, ...) METALANG99_PRIV_REC_NEXT(1654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1654(choice, ...) METALANG99_PRIV_REC_NEXT(1655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1655(choice, ...) METALANG99_PRIV_REC_NEXT(1656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1656(choice, ...) METALANG99_PRIV_REC_NEXT(1657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1657(choice, ...) METALANG99_PRIV_REC_NEXT(1658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1658(choice, ...) METALANG99_PRIV_REC_NEXT(1659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1659(choice, ...) METALANG99_PRIV_REC_NEXT(1660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1660(choice, ...) METALANG99_PRIV_REC_NEXT(1661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1661(choice, ...) METALANG99_PRIV_REC_NEXT(1662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1662(choice, ...) METALANG99_PRIV_REC_NEXT(1663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1663(choice, ...) METALANG99_PRIV_REC_NEXT(1664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1664(choice, ...) METALANG99_PRIV_REC_NEXT(1665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1665(choice, ...) METALANG99_PRIV_REC_NEXT(1666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1666(choice, ...) METALANG99_PRIV_REC_NEXT(1667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1667(choice, ...) METALANG99_PRIV_REC_NEXT(1668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1668(choice, ...) METALANG99_PRIV_REC_NEXT(1669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1669(choice, ...) METALANG99_PRIV_REC_NEXT(1670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1670(choice, ...) METALANG99_PRIV_REC_NEXT(1671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1671(choice, ...) METALANG99_PRIV_REC_NEXT(1672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1672(choice, ...) METALANG99_PRIV_REC_NEXT(1673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1673(choice, ...) METALANG99_PRIV_REC_NEXT(1674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1674(choice, ...) METALANG99_PRIV_REC_NEXT(1675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1675(choice, ...) METALANG99_PRIV_REC_NEXT(1676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1676(choice, ...) METALANG99_PRIV_REC_NEXT(1677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1677(choice, ...) METALANG99_PRIV_REC_NEXT(1678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1678(choice, ...) METALANG99_PRIV_REC_NEXT(1679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1679(choice, ...) METALANG99_PRIV_REC_NEXT(1680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1680(choice, ...) METALANG99_PRIV_REC_NEXT(1681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1681(choice, ...) METALANG99_PRIV_REC_NEXT(1682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1682(choice, ...) METALANG99_PRIV_REC_NEXT(1683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1683(choice, ...) METALANG99_PRIV_REC_NEXT(1684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1684(choice, ...) METALANG99_PRIV_REC_NEXT(1685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1685(choice, ...) METALANG99_PRIV_REC_NEXT(1686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1686(choice, ...) METALANG99_PRIV_REC_NEXT(1687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1687(choice, ...) METALANG99_PRIV_REC_NEXT(1688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1688(choice, ...) METALANG99_PRIV_REC_NEXT(1689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1689(choice, ...) METALANG99_PRIV_REC_NEXT(1690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1690(choice, ...) METALANG99_PRIV_REC_NEXT(1691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1691(choice, ...) METALANG99_PRIV_REC_NEXT(1692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1692(choice, ...) METALANG99_PRIV_REC_NEXT(1693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1693(choice, ...) METALANG99_PRIV_REC_NEXT(1694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1694(choice, ...) METALANG99_PRIV_REC_NEXT(1695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1695(choice, ...) METALANG99_PRIV_REC_NEXT(1696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1696(choice, ...) METALANG99_PRIV_REC_NEXT(1697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1697(choice, ...) METALANG99_PRIV_REC_NEXT(1698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1698(choice, ...) METALANG99_PRIV_REC_NEXT(1699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1699(choice, ...) METALANG99_PRIV_REC_NEXT(1700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1700(choice, ...) METALANG99_PRIV_REC_NEXT(1701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1701(choice, ...) METALANG99_PRIV_REC_NEXT(1702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1702(choice, ...) METALANG99_PRIV_REC_NEXT(1703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1703(choice, ...) METALANG99_PRIV_REC_NEXT(1704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1704(choice, ...) METALANG99_PRIV_REC_NEXT(1705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1705(choice, ...) METALANG99_PRIV_REC_NEXT(1706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1706(choice, ...) METALANG99_PRIV_REC_NEXT(1707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1707(choice, ...) METALANG99_PRIV_REC_NEXT(1708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1708(choice, ...) METALANG99_PRIV_REC_NEXT(1709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1709(choice, ...) METALANG99_PRIV_REC_NEXT(1710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1710(choice, ...) METALANG99_PRIV_REC_NEXT(1711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1711(choice, ...) METALANG99_PRIV_REC_NEXT(1712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1712(choice, ...) METALANG99_PRIV_REC_NEXT(1713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1713(choice, ...) METALANG99_PRIV_REC_NEXT(1714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1714(choice, ...) METALANG99_PRIV_REC_NEXT(1715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1715(choice, ...) METALANG99_PRIV_REC_NEXT(1716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1716(choice, ...) METALANG99_PRIV_REC_NEXT(1717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1717(choice, ...) METALANG99_PRIV_REC_NEXT(1718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1718(choice, ...) METALANG99_PRIV_REC_NEXT(1719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1719(choice, ...) METALANG99_PRIV_REC_NEXT(1720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1720(choice, ...) METALANG99_PRIV_REC_NEXT(1721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1721(choice, ...) METALANG99_PRIV_REC_NEXT(1722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1722(choice, ...) METALANG99_PRIV_REC_NEXT(1723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1723(choice, ...) METALANG99_PRIV_REC_NEXT(1724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1724(choice, ...) METALANG99_PRIV_REC_NEXT(1725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1725(choice, ...) METALANG99_PRIV_REC_NEXT(1726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1726(choice, ...) METALANG99_PRIV_REC_NEXT(1727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1727(choice, ...) METALANG99_PRIV_REC_NEXT(1728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1728(choice, ...) METALANG99_PRIV_REC_NEXT(1729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1729(choice, ...) METALANG99_PRIV_REC_NEXT(1730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1730(choice, ...) METALANG99_PRIV_REC_NEXT(1731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1731(choice, ...) METALANG99_PRIV_REC_NEXT(1732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1732(choice, ...) METALANG99_PRIV_REC_NEXT(1733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1733(choice, ...) METALANG99_PRIV_REC_NEXT(1734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1734(choice, ...) METALANG99_PRIV_REC_NEXT(1735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1735(choice, ...) METALANG99_PRIV_REC_NEXT(1736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1736(choice, ...) METALANG99_PRIV_REC_NEXT(1737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1737(choice, ...) METALANG99_PRIV_REC_NEXT(1738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1738(choice, ...) METALANG99_PRIV_REC_NEXT(1739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1739(choice, ...) METALANG99_PRIV_REC_NEXT(1740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1740(choice, ...) METALANG99_PRIV_REC_NEXT(1741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1741(choice, ...) METALANG99_PRIV_REC_NEXT(1742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1742(choice, ...) METALANG99_PRIV_REC_NEXT(1743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1743(choice, ...) METALANG99_PRIV_REC_NEXT(1744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1744(choice, ...) METALANG99_PRIV_REC_NEXT(1745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1745(choice, ...) METALANG99_PRIV_REC_NEXT(1746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1746(choice, ...) METALANG99_PRIV_REC_NEXT(1747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1747(choice, ...) METALANG99_PRIV_REC_NEXT(1748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1748(choice, ...) METALANG99_PRIV_REC_NEXT(1749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1749(choice, ...) METALANG99_PRIV_REC_NEXT(1750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1750(choice, ...) METALANG99_PRIV_REC_NEXT(1751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1751(choice, ...) METALANG99_PRIV_REC_NEXT(1752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1752(choice, ...) METALANG99_PRIV_REC_NEXT(1753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1753(choice, ...) METALANG99_PRIV_REC_NEXT(1754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1754(choice, ...) METALANG99_PRIV_REC_NEXT(1755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1755(choice, ...) METALANG99_PRIV_REC_NEXT(1756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1756(choice, ...) METALANG99_PRIV_REC_NEXT(1757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1757(choice, ...) METALANG99_PRIV_REC_NEXT(1758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1758(choice, ...) METALANG99_PRIV_REC_NEXT(1759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1759(choice, ...) METALANG99_PRIV_REC_NEXT(1760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1760(choice, ...) METALANG99_PRIV_REC_NEXT(1761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1761(choice, ...) METALANG99_PRIV_REC_NEXT(1762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1762(choice, ...) METALANG99_PRIV_REC_NEXT(1763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1763(choice, ...) METALANG99_PRIV_REC_NEXT(1764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1764(choice, ...) METALANG99_PRIV_REC_NEXT(1765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1765(choice, ...) METALANG99_PRIV_REC_NEXT(1766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1766(choice, ...) METALANG99_PRIV_REC_NEXT(1767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1767(choice, ...) METALANG99_PRIV_REC_NEXT(1768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1768(choice, ...) METALANG99_PRIV_REC_NEXT(1769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1769(choice, ...) METALANG99_PRIV_REC_NEXT(1770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1770(choice, ...) METALANG99_PRIV_REC_NEXT(1771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1771(choice, ...) METALANG99_PRIV_REC_NEXT(1772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1772(choice, ...) METALANG99_PRIV_REC_NEXT(1773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1773(choice, ...) METALANG99_PRIV_REC_NEXT(1774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1774(choice, ...) METALANG99_PRIV_REC_NEXT(1775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1775(choice, ...) METALANG99_PRIV_REC_NEXT(1776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1776(choice, ...) METALANG99_PRIV_REC_NEXT(1777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1777(choice, ...) METALANG99_PRIV_REC_NEXT(1778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1778(choice, ...) METALANG99_PRIV_REC_NEXT(1779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1779(choice, ...) METALANG99_PRIV_REC_NEXT(1780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1780(choice, ...) METALANG99_PRIV_REC_NEXT(1781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1781(choice, ...) METALANG99_PRIV_REC_NEXT(1782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1782(choice, ...) METALANG99_PRIV_REC_NEXT(1783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1783(choice, ...) METALANG99_PRIV_REC_NEXT(1784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1784(choice, ...) METALANG99_PRIV_REC_NEXT(1785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1785(choice, ...) METALANG99_PRIV_REC_NEXT(1786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1786(choice, ...) METALANG99_PRIV_REC_NEXT(1787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1787(choice, ...) METALANG99_PRIV_REC_NEXT(1788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1788(choice, ...) METALANG99_PRIV_REC_NEXT(1789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1789(choice, ...) METALANG99_PRIV_REC_NEXT(1790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1790(choice, ...) METALANG99_PRIV_REC_NEXT(1791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1791(choice, ...) METALANG99_PRIV_REC_NEXT(1792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1792(choice, ...) METALANG99_PRIV_REC_NEXT(1793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1793(choice, ...) METALANG99_PRIV_REC_NEXT(1794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1794(choice, ...) METALANG99_PRIV_REC_NEXT(1795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1795(choice, ...) METALANG99_PRIV_REC_NEXT(1796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1796(choice, ...) METALANG99_PRIV_REC_NEXT(1797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1797(choice, ...) METALANG99_PRIV_REC_NEXT(1798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1798(choice, ...) METALANG99_PRIV_REC_NEXT(1799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1799(choice, ...) METALANG99_PRIV_REC_NEXT(1800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1800(choice, ...) METALANG99_PRIV_REC_NEXT(1801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1801(choice, ...) METALANG99_PRIV_REC_NEXT(1802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1802(choice, ...) METALANG99_PRIV_REC_NEXT(1803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1803(choice, ...) METALANG99_PRIV_REC_NEXT(1804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1804(choice, ...) METALANG99_PRIV_REC_NEXT(1805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1805(choice, ...) METALANG99_PRIV_REC_NEXT(1806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1806(choice, ...) METALANG99_PRIV_REC_NEXT(1807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1807(choice, ...) METALANG99_PRIV_REC_NEXT(1808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1808(choice, ...) METALANG99_PRIV_REC_NEXT(1809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1809(choice, ...) METALANG99_PRIV_REC_NEXT(1810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1810(choice, ...) METALANG99_PRIV_REC_NEXT(1811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1811(choice, ...) METALANG99_PRIV_REC_NEXT(1812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1812(choice, ...) METALANG99_PRIV_REC_NEXT(1813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1813(choice, ...) METALANG99_PRIV_REC_NEXT(1814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1814(choice, ...) METALANG99_PRIV_REC_NEXT(1815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1815(choice, ...) METALANG99_PRIV_REC_NEXT(1816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1816(choice, ...) METALANG99_PRIV_REC_NEXT(1817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1817(choice, ...) METALANG99_PRIV_REC_NEXT(1818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1818(choice, ...) METALANG99_PRIV_REC_NEXT(1819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1819(choice, ...) METALANG99_PRIV_REC_NEXT(1820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1820(choice, ...) METALANG99_PRIV_REC_NEXT(1821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1821(choice, ...) METALANG99_PRIV_REC_NEXT(1822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1822(choice, ...) METALANG99_PRIV_REC_NEXT(1823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1823(choice, ...) METALANG99_PRIV_REC_NEXT(1824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1824(choice, ...) METALANG99_PRIV_REC_NEXT(1825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1825(choice, ...) METALANG99_PRIV_REC_NEXT(1826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1826(choice, ...) METALANG99_PRIV_REC_NEXT(1827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1827(choice, ...) METALANG99_PRIV_REC_NEXT(1828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1828(choice, ...) METALANG99_PRIV_REC_NEXT(1829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1829(choice, ...) METALANG99_PRIV_REC_NEXT(1830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1830(choice, ...) METALANG99_PRIV_REC_NEXT(1831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1831(choice, ...) METALANG99_PRIV_REC_NEXT(1832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1832(choice, ...) METALANG99_PRIV_REC_NEXT(1833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1833(choice, ...) METALANG99_PRIV_REC_NEXT(1834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1834(choice, ...) METALANG99_PRIV_REC_NEXT(1835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1835(choice, ...) METALANG99_PRIV_REC_NEXT(1836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1836(choice, ...) METALANG99_PRIV_REC_NEXT(1837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1837(choice, ...) METALANG99_PRIV_REC_NEXT(1838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1838(choice, ...) METALANG99_PRIV_REC_NEXT(1839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1839(choice, ...) METALANG99_PRIV_REC_NEXT(1840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1840(choice, ...) METALANG99_PRIV_REC_NEXT(1841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1841(choice, ...) METALANG99_PRIV_REC_NEXT(1842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1842(choice, ...) METALANG99_PRIV_REC_NEXT(1843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1843(choice, ...) METALANG99_PRIV_REC_NEXT(1844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1844(choice, ...) METALANG99_PRIV_REC_NEXT(1845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1845(choice, ...) METALANG99_PRIV_REC_NEXT(1846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1846(choice, ...) METALANG99_PRIV_REC_NEXT(1847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1847(choice, ...) METALANG99_PRIV_REC_NEXT(1848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1848(choice, ...) METALANG99_PRIV_REC_NEXT(1849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1849(choice, ...) METALANG99_PRIV_REC_NEXT(1850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1850(choice, ...) METALANG99_PRIV_REC_NEXT(1851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1851(choice, ...) METALANG99_PRIV_REC_NEXT(1852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1852(choice, ...) METALANG99_PRIV_REC_NEXT(1853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1853(choice, ...) METALANG99_PRIV_REC_NEXT(1854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1854(choice, ...) METALANG99_PRIV_REC_NEXT(1855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1855(choice, ...) METALANG99_PRIV_REC_NEXT(1856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1856(choice, ...) METALANG99_PRIV_REC_NEXT(1857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1857(choice, ...) METALANG99_PRIV_REC_NEXT(1858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1858(choice, ...) METALANG99_PRIV_REC_NEXT(1859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1859(choice, ...) METALANG99_PRIV_REC_NEXT(1860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1860(choice, ...) METALANG99_PRIV_REC_NEXT(1861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1861(choice, ...) METALANG99_PRIV_REC_NEXT(1862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1862(choice, ...) METALANG99_PRIV_REC_NEXT(1863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1863(choice, ...) METALANG99_PRIV_REC_NEXT(1864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1864(choice, ...) METALANG99_PRIV_REC_NEXT(1865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1865(choice, ...) METALANG99_PRIV_REC_NEXT(1866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1866(choice, ...) METALANG99_PRIV_REC_NEXT(1867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1867(choice, ...) METALANG99_PRIV_REC_NEXT(1868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1868(choice, ...) METALANG99_PRIV_REC_NEXT(1869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1869(choice, ...) METALANG99_PRIV_REC_NEXT(1870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1870(choice, ...) METALANG99_PRIV_REC_NEXT(1871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1871(choice, ...) METALANG99_PRIV_REC_NEXT(1872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1872(choice, ...) METALANG99_PRIV_REC_NEXT(1873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1873(choice, ...) METALANG99_PRIV_REC_NEXT(1874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1874(choice, ...) METALANG99_PRIV_REC_NEXT(1875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1875(choice, ...) METALANG99_PRIV_REC_NEXT(1876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1876(choice, ...) METALANG99_PRIV_REC_NEXT(1877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1877(choice, ...) METALANG99_PRIV_REC_NEXT(1878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1878(choice, ...) METALANG99_PRIV_REC_NEXT(1879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1879(choice, ...) METALANG99_PRIV_REC_NEXT(1880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1880(choice, ...) METALANG99_PRIV_REC_NEXT(1881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1881(choice, ...) METALANG99_PRIV_REC_NEXT(1882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1882(choice, ...) METALANG99_PRIV_REC_NEXT(1883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1883(choice, ...) METALANG99_PRIV_REC_NEXT(1884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1884(choice, ...) METALANG99_PRIV_REC_NEXT(1885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1885(choice, ...) METALANG99_PRIV_REC_NEXT(1886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1886(choice, ...) METALANG99_PRIV_REC_NEXT(1887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1887(choice, ...) METALANG99_PRIV_REC_NEXT(1888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1888(choice, ...) METALANG99_PRIV_REC_NEXT(1889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1889(choice, ...) METALANG99_PRIV_REC_NEXT(1890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1890(choice, ...) METALANG99_PRIV_REC_NEXT(1891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1891(choice, ...) METALANG99_PRIV_REC_NEXT(1892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1892(choice, ...) METALANG99_PRIV_REC_NEXT(1893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1893(choice, ...) METALANG99_PRIV_REC_NEXT(1894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1894(choice, ...) METALANG99_PRIV_REC_NEXT(1895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1895(choice, ...) METALANG99_PRIV_REC_NEXT(1896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1896(choice, ...) METALANG99_PRIV_REC_NEXT(1897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1897(choice, ...) METALANG99_PRIV_REC_NEXT(1898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1898(choice, ...) METALANG99_PRIV_REC_NEXT(1899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1899(choice, ...) METALANG99_PRIV_REC_NEXT(1900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1900(choice, ...) METALANG99_PRIV_REC_NEXT(1901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1901(choice, ...) METALANG99_PRIV_REC_NEXT(1902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1902(choice, ...) METALANG99_PRIV_REC_NEXT(1903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1903(choice, ...) METALANG99_PRIV_REC_NEXT(1904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1904(choice, ...) METALANG99_PRIV_REC_NEXT(1905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1905(choice, ...) METALANG99_PRIV_REC_NEXT(1906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1906(choice, ...) METALANG99_PRIV_REC_NEXT(1907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1907(choice, ...) METALANG99_PRIV_REC_NEXT(1908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1908(choice, ...) METALANG99_PRIV_REC_NEXT(1909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1909(choice, ...) METALANG99_PRIV_REC_NEXT(1910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1910(choice, ...) METALANG99_PRIV_REC_NEXT(1911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1911(choice, ...) METALANG99_PRIV_REC_NEXT(1912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1912(choice, ...) METALANG99_PRIV_REC_NEXT(1913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1913(choice, ...) METALANG99_PRIV_REC_NEXT(1914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1914(choice, ...) METALANG99_PRIV_REC_NEXT(1915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1915(choice, ...) METALANG99_PRIV_REC_NEXT(1916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1916(choice, ...) METALANG99_PRIV_REC_NEXT(1917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1917(choice, ...) METALANG99_PRIV_REC_NEXT(1918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1918(choice, ...) METALANG99_PRIV_REC_NEXT(1919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1919(choice, ...) METALANG99_PRIV_REC_NEXT(1920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1920(choice, ...) METALANG99_PRIV_REC_NEXT(1921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1921(choice, ...) METALANG99_PRIV_REC_NEXT(1922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1922(choice, ...) METALANG99_PRIV_REC_NEXT(1923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1923(choice, ...) METALANG99_PRIV_REC_NEXT(1924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1924(choice, ...) METALANG99_PRIV_REC_NEXT(1925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1925(choice, ...) METALANG99_PRIV_REC_NEXT(1926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1926(choice, ...) METALANG99_PRIV_REC_NEXT(1927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1927(choice, ...) METALANG99_PRIV_REC_NEXT(1928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1928(choice, ...) METALANG99_PRIV_REC_NEXT(1929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1929(choice, ...) METALANG99_PRIV_REC_NEXT(1930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1930(choice, ...) METALANG99_PRIV_REC_NEXT(1931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1931(choice, ...) METALANG99_PRIV_REC_NEXT(1932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1932(choice, ...) METALANG99_PRIV_REC_NEXT(1933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1933(choice, ...) METALANG99_PRIV_REC_NEXT(1934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1934(choice, ...) METALANG99_PRIV_REC_NEXT(1935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1935(choice, ...) METALANG99_PRIV_REC_NEXT(1936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1936(choice, ...) METALANG99_PRIV_REC_NEXT(1937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1937(choice, ...) METALANG99_PRIV_REC_NEXT(1938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1938(choice, ...) METALANG99_PRIV_REC_NEXT(1939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1939(choice, ...) METALANG99_PRIV_REC_NEXT(1940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1940(choice, ...) METALANG99_PRIV_REC_NEXT(1941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1941(choice, ...) METALANG99_PRIV_REC_NEXT(1942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1942(choice, ...) METALANG99_PRIV_REC_NEXT(1943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1943(choice, ...) METALANG99_PRIV_REC_NEXT(1944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1944(choice, ...) METALANG99_PRIV_REC_NEXT(1945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1945(choice, ...) METALANG99_PRIV_REC_NEXT(1946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1946(choice, ...) METALANG99_PRIV_REC_NEXT(1947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1947(choice, ...) METALANG99_PRIV_REC_NEXT(1948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1948(choice, ...) METALANG99_PRIV_REC_NEXT(1949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1949(choice, ...) METALANG99_PRIV_REC_NEXT(1950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1950(choice, ...) METALANG99_PRIV_REC_NEXT(1951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1951(choice, ...) METALANG99_PRIV_REC_NEXT(1952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1952(choice, ...) METALANG99_PRIV_REC_NEXT(1953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1953(choice, ...) METALANG99_PRIV_REC_NEXT(1954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1954(choice, ...) METALANG99_PRIV_REC_NEXT(1955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1955(choice, ...) METALANG99_PRIV_REC_NEXT(1956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1956(choice, ...) METALANG99_PRIV_REC_NEXT(1957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1957(choice, ...) METALANG99_PRIV_REC_NEXT(1958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1958(choice, ...) METALANG99_PRIV_REC_NEXT(1959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1959(choice, ...) METALANG99_PRIV_REC_NEXT(1960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1960(choice, ...) METALANG99_PRIV_REC_NEXT(1961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1961(choice, ...) METALANG99_PRIV_REC_NEXT(1962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1962(choice, ...) METALANG99_PRIV_REC_NEXT(1963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1963(choice, ...) METALANG99_PRIV_REC_NEXT(1964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1964(choice, ...) METALANG99_PRIV_REC_NEXT(1965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1965(choice, ...) METALANG99_PRIV_REC_NEXT(1966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1966(choice, ...) METALANG99_PRIV_REC_NEXT(1967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1967(choice, ...) METALANG99_PRIV_REC_NEXT(1968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1968(choice, ...) METALANG99_PRIV_REC_NEXT(1969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1969(choice, ...) METALANG99_PRIV_REC_NEXT(1970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1970(choice, ...) METALANG99_PRIV_REC_NEXT(1971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1971(choice, ...) METALANG99_PRIV_REC_NEXT(1972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1972(choice, ...) METALANG99_PRIV_REC_NEXT(1973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1973(choice, ...) METALANG99_PRIV_REC_NEXT(1974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1974(choice, ...) METALANG99_PRIV_REC_NEXT(1975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1975(choice, ...) METALANG99_PRIV_REC_NEXT(1976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1976(choice, ...) METALANG99_PRIV_REC_NEXT(1977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1977(choice, ...) METALANG99_PRIV_REC_NEXT(1978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1978(choice, ...) METALANG99_PRIV_REC_NEXT(1979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1979(choice, ...) METALANG99_PRIV_REC_NEXT(1980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1980(choice, ...) METALANG99_PRIV_REC_NEXT(1981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1981(choice, ...) METALANG99_PRIV_REC_NEXT(1982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1982(choice, ...) METALANG99_PRIV_REC_NEXT(1983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1983(choice, ...) METALANG99_PRIV_REC_NEXT(1984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1984(choice, ...) METALANG99_PRIV_REC_NEXT(1985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1985(choice, ...) METALANG99_PRIV_REC_NEXT(1986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1986(choice, ...) METALANG99_PRIV_REC_NEXT(1987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1987(choice, ...) METALANG99_PRIV_REC_NEXT(1988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1988(choice, ...) METALANG99_PRIV_REC_NEXT(1989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1989(choice, ...) METALANG99_PRIV_REC_NEXT(1990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1990(choice, ...) METALANG99_PRIV_REC_NEXT(1991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1991(choice, ...) METALANG99_PRIV_REC_NEXT(1992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1992(choice, ...) METALANG99_PRIV_REC_NEXT(1993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1993(choice, ...) METALANG99_PRIV_REC_NEXT(1994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1994(choice, ...) METALANG99_PRIV_REC_NEXT(1995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1995(choice, ...) METALANG99_PRIV_REC_NEXT(1996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1996(choice, ...) METALANG99_PRIV_REC_NEXT(1997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1997(choice, ...) METALANG99_PRIV_REC_NEXT(1998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1998(choice, ...) METALANG99_PRIV_REC_NEXT(1999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_1999(choice, ...) METALANG99_PRIV_REC_NEXT(2000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2000(choice, ...) METALANG99_PRIV_REC_NEXT(2001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2001(choice, ...) METALANG99_PRIV_REC_NEXT(2002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2002(choice, ...) METALANG99_PRIV_REC_NEXT(2003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2003(choice, ...) METALANG99_PRIV_REC_NEXT(2004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2004(choice, ...) METALANG99_PRIV_REC_NEXT(2005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2005(choice, ...) METALANG99_PRIV_REC_NEXT(2006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2006(choice, ...) METALANG99_PRIV_REC_NEXT(2007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2007(choice, ...) METALANG99_PRIV_REC_NEXT(2008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2008(choice, ...) METALANG99_PRIV_REC_NEXT(2009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2009(choice, ...) METALANG99_PRIV_REC_NEXT(2010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2010(choice, ...) METALANG99_PRIV_REC_NEXT(2011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2011(choice, ...) METALANG99_PRIV_REC_NEXT(2012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2012(choice, ...) METALANG99_PRIV_REC_NEXT(2013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2013(choice, ...) METALANG99_PRIV_REC_NEXT(2014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2014(choice, ...) METALANG99_PRIV_REC_NEXT(2015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2015(choice, ...) METALANG99_PRIV_REC_NEXT(2016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2016(choice, ...) METALANG99_PRIV_REC_NEXT(2017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2017(choice, ...) METALANG99_PRIV_REC_NEXT(2018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2018(choice, ...) METALANG99_PRIV_REC_NEXT(2019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2019(choice, ...) METALANG99_PRIV_REC_NEXT(2020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2020(choice, ...) METALANG99_PRIV_REC_NEXT(2021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2021(choice, ...) METALANG99_PRIV_REC_NEXT(2022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2022(choice, ...) METALANG99_PRIV_REC_NEXT(2023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2023(choice, ...) METALANG99_PRIV_REC_NEXT(2024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2024(choice, ...) METALANG99_PRIV_REC_NEXT(2025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2025(choice, ...) METALANG99_PRIV_REC_NEXT(2026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2026(choice, ...) METALANG99_PRIV_REC_NEXT(2027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2027(choice, ...) METALANG99_PRIV_REC_NEXT(2028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2028(choice, ...) METALANG99_PRIV_REC_NEXT(2029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2029(choice, ...) METALANG99_PRIV_REC_NEXT(2030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2030(choice, ...) METALANG99_PRIV_REC_NEXT(2031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2031(choice, ...) METALANG99_PRIV_REC_NEXT(2032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2032(choice, ...) METALANG99_PRIV_REC_NEXT(2033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2033(choice, ...) METALANG99_PRIV_REC_NEXT(2034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2034(choice, ...) METALANG99_PRIV_REC_NEXT(2035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2035(choice, ...) METALANG99_PRIV_REC_NEXT(2036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2036(choice, ...) METALANG99_PRIV_REC_NEXT(2037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2037(choice, ...) METALANG99_PRIV_REC_NEXT(2038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2038(choice, ...) METALANG99_PRIV_REC_NEXT(2039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2039(choice, ...) METALANG99_PRIV_REC_NEXT(2040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2040(choice, ...) METALANG99_PRIV_REC_NEXT(2041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2041(choice, ...) METALANG99_PRIV_REC_NEXT(2042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2042(choice, ...) METALANG99_PRIV_REC_NEXT(2043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2043(choice, ...) METALANG99_PRIV_REC_NEXT(2044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2044(choice, ...) METALANG99_PRIV_REC_NEXT(2045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2045(choice, ...) METALANG99_PRIV_REC_NEXT(2046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2046(choice, ...) METALANG99_PRIV_REC_NEXT(2047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2047(choice, ...) METALANG99_PRIV_REC_NEXT(2048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2048(choice, ...) METALANG99_PRIV_REC_NEXT(2049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2049(choice, ...) METALANG99_PRIV_REC_NEXT(2050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2050(choice, ...) METALANG99_PRIV_REC_NEXT(2051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2051(choice, ...) METALANG99_PRIV_REC_NEXT(2052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2052(choice, ...) METALANG99_PRIV_REC_NEXT(2053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2053(choice, ...) METALANG99_PRIV_REC_NEXT(2054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2054(choice, ...) METALANG99_PRIV_REC_NEXT(2055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2055(choice, ...) METALANG99_PRIV_REC_NEXT(2056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2056(choice, ...) METALANG99_PRIV_REC_NEXT(2057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2057(choice, ...) METALANG99_PRIV_REC_NEXT(2058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2058(choice, ...) METALANG99_PRIV_REC_NEXT(2059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2059(choice, ...) METALANG99_PRIV_REC_NEXT(2060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2060(choice, ...) METALANG99_PRIV_REC_NEXT(2061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2061(choice, ...) METALANG99_PRIV_REC_NEXT(2062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2062(choice, ...) METALANG99_PRIV_REC_NEXT(2063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2063(choice, ...) METALANG99_PRIV_REC_NEXT(2064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2064(choice, ...) METALANG99_PRIV_REC_NEXT(2065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2065(choice, ...) METALANG99_PRIV_REC_NEXT(2066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2066(choice, ...) METALANG99_PRIV_REC_NEXT(2067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2067(choice, ...) METALANG99_PRIV_REC_NEXT(2068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2068(choice, ...) METALANG99_PRIV_REC_NEXT(2069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2069(choice, ...) METALANG99_PRIV_REC_NEXT(2070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2070(choice, ...) METALANG99_PRIV_REC_NEXT(2071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2071(choice, ...) METALANG99_PRIV_REC_NEXT(2072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2072(choice, ...) METALANG99_PRIV_REC_NEXT(2073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2073(choice, ...) METALANG99_PRIV_REC_NEXT(2074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2074(choice, ...) METALANG99_PRIV_REC_NEXT(2075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2075(choice, ...) METALANG99_PRIV_REC_NEXT(2076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2076(choice, ...) METALANG99_PRIV_REC_NEXT(2077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2077(choice, ...) METALANG99_PRIV_REC_NEXT(2078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2078(choice, ...) METALANG99_PRIV_REC_NEXT(2079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2079(choice, ...) METALANG99_PRIV_REC_NEXT(2080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2080(choice, ...) METALANG99_PRIV_REC_NEXT(2081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2081(choice, ...) METALANG99_PRIV_REC_NEXT(2082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2082(choice, ...) METALANG99_PRIV_REC_NEXT(2083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2083(choice, ...) METALANG99_PRIV_REC_NEXT(2084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2084(choice, ...) METALANG99_PRIV_REC_NEXT(2085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2085(choice, ...) METALANG99_PRIV_REC_NEXT(2086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2086(choice, ...) METALANG99_PRIV_REC_NEXT(2087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2087(choice, ...) METALANG99_PRIV_REC_NEXT(2088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2088(choice, ...) METALANG99_PRIV_REC_NEXT(2089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2089(choice, ...) METALANG99_PRIV_REC_NEXT(2090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2090(choice, ...) METALANG99_PRIV_REC_NEXT(2091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2091(choice, ...) METALANG99_PRIV_REC_NEXT(2092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2092(choice, ...) METALANG99_PRIV_REC_NEXT(2093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2093(choice, ...) METALANG99_PRIV_REC_NEXT(2094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2094(choice, ...) METALANG99_PRIV_REC_NEXT(2095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2095(choice, ...) METALANG99_PRIV_REC_NEXT(2096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2096(choice, ...) METALANG99_PRIV_REC_NEXT(2097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2097(choice, ...) METALANG99_PRIV_REC_NEXT(2098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2098(choice, ...) METALANG99_PRIV_REC_NEXT(2099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2099(choice, ...) METALANG99_PRIV_REC_NEXT(2100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2100(choice, ...) METALANG99_PRIV_REC_NEXT(2101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2101(choice, ...) METALANG99_PRIV_REC_NEXT(2102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2102(choice, ...) METALANG99_PRIV_REC_NEXT(2103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2103(choice, ...) METALANG99_PRIV_REC_NEXT(2104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2104(choice, ...) METALANG99_PRIV_REC_NEXT(2105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2105(choice, ...) METALANG99_PRIV_REC_NEXT(2106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2106(choice, ...) METALANG99_PRIV_REC_NEXT(2107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2107(choice, ...) METALANG99_PRIV_REC_NEXT(2108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2108(choice, ...) METALANG99_PRIV_REC_NEXT(2109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2109(choice, ...) METALANG99_PRIV_REC_NEXT(2110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2110(choice, ...) METALANG99_PRIV_REC_NEXT(2111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2111(choice, ...) METALANG99_PRIV_REC_NEXT(2112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2112(choice, ...) METALANG99_PRIV_REC_NEXT(2113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2113(choice, ...) METALANG99_PRIV_REC_NEXT(2114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2114(choice, ...) METALANG99_PRIV_REC_NEXT(2115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2115(choice, ...) METALANG99_PRIV_REC_NEXT(2116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2116(choice, ...) METALANG99_PRIV_REC_NEXT(2117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2117(choice, ...) METALANG99_PRIV_REC_NEXT(2118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2118(choice, ...) METALANG99_PRIV_REC_NEXT(2119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2119(choice, ...) METALANG99_PRIV_REC_NEXT(2120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2120(choice, ...) METALANG99_PRIV_REC_NEXT(2121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2121(choice, ...) METALANG99_PRIV_REC_NEXT(2122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2122(choice, ...) METALANG99_PRIV_REC_NEXT(2123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2123(choice, ...) METALANG99_PRIV_REC_NEXT(2124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2124(choice, ...) METALANG99_PRIV_REC_NEXT(2125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2125(choice, ...) METALANG99_PRIV_REC_NEXT(2126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2126(choice, ...) METALANG99_PRIV_REC_NEXT(2127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2127(choice, ...) METALANG99_PRIV_REC_NEXT(2128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2128(choice, ...) METALANG99_PRIV_REC_NEXT(2129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2129(choice, ...) METALANG99_PRIV_REC_NEXT(2130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2130(choice, ...) METALANG99_PRIV_REC_NEXT(2131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2131(choice, ...) METALANG99_PRIV_REC_NEXT(2132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2132(choice, ...) METALANG99_PRIV_REC_NEXT(2133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2133(choice, ...) METALANG99_PRIV_REC_NEXT(2134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2134(choice, ...) METALANG99_PRIV_REC_NEXT(2135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2135(choice, ...) METALANG99_PRIV_REC_NEXT(2136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2136(choice, ...) METALANG99_PRIV_REC_NEXT(2137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2137(choice, ...) METALANG99_PRIV_REC_NEXT(2138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2138(choice, ...) METALANG99_PRIV_REC_NEXT(2139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2139(choice, ...) METALANG99_PRIV_REC_NEXT(2140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2140(choice, ...) METALANG99_PRIV_REC_NEXT(2141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2141(choice, ...) METALANG99_PRIV_REC_NEXT(2142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2142(choice, ...) METALANG99_PRIV_REC_NEXT(2143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2143(choice, ...) METALANG99_PRIV_REC_NEXT(2144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2144(choice, ...) METALANG99_PRIV_REC_NEXT(2145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2145(choice, ...) METALANG99_PRIV_REC_NEXT(2146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2146(choice, ...) METALANG99_PRIV_REC_NEXT(2147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2147(choice, ...) METALANG99_PRIV_REC_NEXT(2148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2148(choice, ...) METALANG99_PRIV_REC_NEXT(2149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2149(choice, ...) METALANG99_PRIV_REC_NEXT(2150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2150(choice, ...) METALANG99_PRIV_REC_NEXT(2151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2151(choice, ...) METALANG99_PRIV_REC_NEXT(2152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2152(choice, ...) METALANG99_PRIV_REC_NEXT(2153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2153(choice, ...) METALANG99_PRIV_REC_NEXT(2154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2154(choice, ...) METALANG99_PRIV_REC_NEXT(2155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2155(choice, ...) METALANG99_PRIV_REC_NEXT(2156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2156(choice, ...) METALANG99_PRIV_REC_NEXT(2157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2157(choice, ...) METALANG99_PRIV_REC_NEXT(2158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2158(choice, ...) METALANG99_PRIV_REC_NEXT(2159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2159(choice, ...) METALANG99_PRIV_REC_NEXT(2160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2160(choice, ...) METALANG99_PRIV_REC_NEXT(2161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2161(choice, ...) METALANG99_PRIV_REC_NEXT(2162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2162(choice, ...) METALANG99_PRIV_REC_NEXT(2163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2163(choice, ...) METALANG99_PRIV_REC_NEXT(2164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2164(choice, ...) METALANG99_PRIV_REC_NEXT(2165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2165(choice, ...) METALANG99_PRIV_REC_NEXT(2166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2166(choice, ...) METALANG99_PRIV_REC_NEXT(2167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2167(choice, ...) METALANG99_PRIV_REC_NEXT(2168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2168(choice, ...) METALANG99_PRIV_REC_NEXT(2169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2169(choice, ...) METALANG99_PRIV_REC_NEXT(2170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2170(choice, ...) METALANG99_PRIV_REC_NEXT(2171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2171(choice, ...) METALANG99_PRIV_REC_NEXT(2172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2172(choice, ...) METALANG99_PRIV_REC_NEXT(2173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2173(choice, ...) METALANG99_PRIV_REC_NEXT(2174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2174(choice, ...) METALANG99_PRIV_REC_NEXT(2175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2175(choice, ...) METALANG99_PRIV_REC_NEXT(2176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2176(choice, ...) METALANG99_PRIV_REC_NEXT(2177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2177(choice, ...) METALANG99_PRIV_REC_NEXT(2178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2178(choice, ...) METALANG99_PRIV_REC_NEXT(2179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2179(choice, ...) METALANG99_PRIV_REC_NEXT(2180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2180(choice, ...) METALANG99_PRIV_REC_NEXT(2181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2181(choice, ...) METALANG99_PRIV_REC_NEXT(2182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2182(choice, ...) METALANG99_PRIV_REC_NEXT(2183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2183(choice, ...) METALANG99_PRIV_REC_NEXT(2184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2184(choice, ...) METALANG99_PRIV_REC_NEXT(2185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2185(choice, ...) METALANG99_PRIV_REC_NEXT(2186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2186(choice, ...) METALANG99_PRIV_REC_NEXT(2187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2187(choice, ...) METALANG99_PRIV_REC_NEXT(2188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2188(choice, ...) METALANG99_PRIV_REC_NEXT(2189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2189(choice, ...) METALANG99_PRIV_REC_NEXT(2190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2190(choice, ...) METALANG99_PRIV_REC_NEXT(2191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2191(choice, ...) METALANG99_PRIV_REC_NEXT(2192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2192(choice, ...) METALANG99_PRIV_REC_NEXT(2193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2193(choice, ...) METALANG99_PRIV_REC_NEXT(2194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2194(choice, ...) METALANG99_PRIV_REC_NEXT(2195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2195(choice, ...) METALANG99_PRIV_REC_NEXT(2196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2196(choice, ...) METALANG99_PRIV_REC_NEXT(2197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2197(choice, ...) METALANG99_PRIV_REC_NEXT(2198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2198(choice, ...) METALANG99_PRIV_REC_NEXT(2199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2199(choice, ...) METALANG99_PRIV_REC_NEXT(2200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2200(choice, ...) METALANG99_PRIV_REC_NEXT(2201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2201(choice, ...) METALANG99_PRIV_REC_NEXT(2202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2202(choice, ...) METALANG99_PRIV_REC_NEXT(2203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2203(choice, ...) METALANG99_PRIV_REC_NEXT(2204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2204(choice, ...) METALANG99_PRIV_REC_NEXT(2205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2205(choice, ...) METALANG99_PRIV_REC_NEXT(2206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2206(choice, ...) METALANG99_PRIV_REC_NEXT(2207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2207(choice, ...) METALANG99_PRIV_REC_NEXT(2208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2208(choice, ...) METALANG99_PRIV_REC_NEXT(2209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2209(choice, ...) METALANG99_PRIV_REC_NEXT(2210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2210(choice, ...) METALANG99_PRIV_REC_NEXT(2211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2211(choice, ...) METALANG99_PRIV_REC_NEXT(2212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2212(choice, ...) METALANG99_PRIV_REC_NEXT(2213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2213(choice, ...) METALANG99_PRIV_REC_NEXT(2214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2214(choice, ...) METALANG99_PRIV_REC_NEXT(2215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2215(choice, ...) METALANG99_PRIV_REC_NEXT(2216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2216(choice, ...) METALANG99_PRIV_REC_NEXT(2217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2217(choice, ...) METALANG99_PRIV_REC_NEXT(2218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2218(choice, ...) METALANG99_PRIV_REC_NEXT(2219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2219(choice, ...) METALANG99_PRIV_REC_NEXT(2220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2220(choice, ...) METALANG99_PRIV_REC_NEXT(2221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2221(choice, ...) METALANG99_PRIV_REC_NEXT(2222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2222(choice, ...) METALANG99_PRIV_REC_NEXT(2223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2223(choice, ...) METALANG99_PRIV_REC_NEXT(2224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2224(choice, ...) METALANG99_PRIV_REC_NEXT(2225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2225(choice, ...) METALANG99_PRIV_REC_NEXT(2226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2226(choice, ...) METALANG99_PRIV_REC_NEXT(2227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2227(choice, ...) METALANG99_PRIV_REC_NEXT(2228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2228(choice, ...) METALANG99_PRIV_REC_NEXT(2229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2229(choice, ...) METALANG99_PRIV_REC_NEXT(2230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2230(choice, ...) METALANG99_PRIV_REC_NEXT(2231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2231(choice, ...) METALANG99_PRIV_REC_NEXT(2232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2232(choice, ...) METALANG99_PRIV_REC_NEXT(2233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2233(choice, ...) METALANG99_PRIV_REC_NEXT(2234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2234(choice, ...) METALANG99_PRIV_REC_NEXT(2235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2235(choice, ...) METALANG99_PRIV_REC_NEXT(2236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2236(choice, ...) METALANG99_PRIV_REC_NEXT(2237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2237(choice, ...) METALANG99_PRIV_REC_NEXT(2238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2238(choice, ...) METALANG99_PRIV_REC_NEXT(2239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2239(choice, ...) METALANG99_PRIV_REC_NEXT(2240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2240(choice, ...) METALANG99_PRIV_REC_NEXT(2241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2241(choice, ...) METALANG99_PRIV_REC_NEXT(2242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2242(choice, ...) METALANG99_PRIV_REC_NEXT(2243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2243(choice, ...) METALANG99_PRIV_REC_NEXT(2244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2244(choice, ...) METALANG99_PRIV_REC_NEXT(2245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2245(choice, ...) METALANG99_PRIV_REC_NEXT(2246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2246(choice, ...) METALANG99_PRIV_REC_NEXT(2247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2247(choice, ...) METALANG99_PRIV_REC_NEXT(2248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2248(choice, ...) METALANG99_PRIV_REC_NEXT(2249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2249(choice, ...) METALANG99_PRIV_REC_NEXT(2250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2250(choice, ...) METALANG99_PRIV_REC_NEXT(2251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2251(choice, ...) METALANG99_PRIV_REC_NEXT(2252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2252(choice, ...) METALANG99_PRIV_REC_NEXT(2253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2253(choice, ...) METALANG99_PRIV_REC_NEXT(2254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2254(choice, ...) METALANG99_PRIV_REC_NEXT(2255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2255(choice, ...) METALANG99_PRIV_REC_NEXT(2256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2256(choice, ...) METALANG99_PRIV_REC_NEXT(2257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2257(choice, ...) METALANG99_PRIV_REC_NEXT(2258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2258(choice, ...) METALANG99_PRIV_REC_NEXT(2259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2259(choice, ...) METALANG99_PRIV_REC_NEXT(2260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2260(choice, ...) METALANG99_PRIV_REC_NEXT(2261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2261(choice, ...) METALANG99_PRIV_REC_NEXT(2262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2262(choice, ...) METALANG99_PRIV_REC_NEXT(2263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2263(choice, ...) METALANG99_PRIV_REC_NEXT(2264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2264(choice, ...) METALANG99_PRIV_REC_NEXT(2265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2265(choice, ...) METALANG99_PRIV_REC_NEXT(2266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2266(choice, ...) METALANG99_PRIV_REC_NEXT(2267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2267(choice, ...) METALANG99_PRIV_REC_NEXT(2268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2268(choice, ...) METALANG99_PRIV_REC_NEXT(2269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2269(choice, ...) METALANG99_PRIV_REC_NEXT(2270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2270(choice, ...) METALANG99_PRIV_REC_NEXT(2271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2271(choice, ...) METALANG99_PRIV_REC_NEXT(2272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2272(choice, ...) METALANG99_PRIV_REC_NEXT(2273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2273(choice, ...) METALANG99_PRIV_REC_NEXT(2274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2274(choice, ...) METALANG99_PRIV_REC_NEXT(2275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2275(choice, ...) METALANG99_PRIV_REC_NEXT(2276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2276(choice, ...) METALANG99_PRIV_REC_NEXT(2277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2277(choice, ...) METALANG99_PRIV_REC_NEXT(2278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2278(choice, ...) METALANG99_PRIV_REC_NEXT(2279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2279(choice, ...) METALANG99_PRIV_REC_NEXT(2280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2280(choice, ...) METALANG99_PRIV_REC_NEXT(2281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2281(choice, ...) METALANG99_PRIV_REC_NEXT(2282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2282(choice, ...) METALANG99_PRIV_REC_NEXT(2283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2283(choice, ...) METALANG99_PRIV_REC_NEXT(2284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2284(choice, ...) METALANG99_PRIV_REC_NEXT(2285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2285(choice, ...) METALANG99_PRIV_REC_NEXT(2286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2286(choice, ...) METALANG99_PRIV_REC_NEXT(2287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2287(choice, ...) METALANG99_PRIV_REC_NEXT(2288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2288(choice, ...) METALANG99_PRIV_REC_NEXT(2289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2289(choice, ...) METALANG99_PRIV_REC_NEXT(2290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2290(choice, ...) METALANG99_PRIV_REC_NEXT(2291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2291(choice, ...) METALANG99_PRIV_REC_NEXT(2292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2292(choice, ...) METALANG99_PRIV_REC_NEXT(2293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2293(choice, ...) METALANG99_PRIV_REC_NEXT(2294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2294(choice, ...) METALANG99_PRIV_REC_NEXT(2295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2295(choice, ...) METALANG99_PRIV_REC_NEXT(2296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2296(choice, ...) METALANG99_PRIV_REC_NEXT(2297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2297(choice, ...) METALANG99_PRIV_REC_NEXT(2298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2298(choice, ...) METALANG99_PRIV_REC_NEXT(2299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2299(choice, ...) METALANG99_PRIV_REC_NEXT(2300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2300(choice, ...) METALANG99_PRIV_REC_NEXT(2301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2301(choice, ...) METALANG99_PRIV_REC_NEXT(2302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2302(choice, ...) METALANG99_PRIV_REC_NEXT(2303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2303(choice, ...) METALANG99_PRIV_REC_NEXT(2304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2304(choice, ...) METALANG99_PRIV_REC_NEXT(2305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2305(choice, ...) METALANG99_PRIV_REC_NEXT(2306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2306(choice, ...) METALANG99_PRIV_REC_NEXT(2307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2307(choice, ...) METALANG99_PRIV_REC_NEXT(2308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2308(choice, ...) METALANG99_PRIV_REC_NEXT(2309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2309(choice, ...) METALANG99_PRIV_REC_NEXT(2310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2310(choice, ...) METALANG99_PRIV_REC_NEXT(2311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2311(choice, ...) METALANG99_PRIV_REC_NEXT(2312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2312(choice, ...) METALANG99_PRIV_REC_NEXT(2313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2313(choice, ...) METALANG99_PRIV_REC_NEXT(2314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2314(choice, ...) METALANG99_PRIV_REC_NEXT(2315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2315(choice, ...) METALANG99_PRIV_REC_NEXT(2316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2316(choice, ...) METALANG99_PRIV_REC_NEXT(2317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2317(choice, ...) METALANG99_PRIV_REC_NEXT(2318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2318(choice, ...) METALANG99_PRIV_REC_NEXT(2319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2319(choice, ...) METALANG99_PRIV_REC_NEXT(2320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2320(choice, ...) METALANG99_PRIV_REC_NEXT(2321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2321(choice, ...) METALANG99_PRIV_REC_NEXT(2322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2322(choice, ...) METALANG99_PRIV_REC_NEXT(2323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2323(choice, ...) METALANG99_PRIV_REC_NEXT(2324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2324(choice, ...) METALANG99_PRIV_REC_NEXT(2325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2325(choice, ...) METALANG99_PRIV_REC_NEXT(2326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2326(choice, ...) METALANG99_PRIV_REC_NEXT(2327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2327(choice, ...) METALANG99_PRIV_REC_NEXT(2328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2328(choice, ...) METALANG99_PRIV_REC_NEXT(2329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2329(choice, ...) METALANG99_PRIV_REC_NEXT(2330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2330(choice, ...) METALANG99_PRIV_REC_NEXT(2331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2331(choice, ...) METALANG99_PRIV_REC_NEXT(2332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2332(choice, ...) METALANG99_PRIV_REC_NEXT(2333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2333(choice, ...) METALANG99_PRIV_REC_NEXT(2334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2334(choice, ...) METALANG99_PRIV_REC_NEXT(2335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2335(choice, ...) METALANG99_PRIV_REC_NEXT(2336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2336(choice, ...) METALANG99_PRIV_REC_NEXT(2337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2337(choice, ...) METALANG99_PRIV_REC_NEXT(2338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2338(choice, ...) METALANG99_PRIV_REC_NEXT(2339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2339(choice, ...) METALANG99_PRIV_REC_NEXT(2340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2340(choice, ...) METALANG99_PRIV_REC_NEXT(2341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2341(choice, ...) METALANG99_PRIV_REC_NEXT(2342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2342(choice, ...) METALANG99_PRIV_REC_NEXT(2343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2343(choice, ...) METALANG99_PRIV_REC_NEXT(2344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2344(choice, ...) METALANG99_PRIV_REC_NEXT(2345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2345(choice, ...) METALANG99_PRIV_REC_NEXT(2346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2346(choice, ...) METALANG99_PRIV_REC_NEXT(2347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2347(choice, ...) METALANG99_PRIV_REC_NEXT(2348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2348(choice, ...) METALANG99_PRIV_REC_NEXT(2349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2349(choice, ...) METALANG99_PRIV_REC_NEXT(2350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2350(choice, ...) METALANG99_PRIV_REC_NEXT(2351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2351(choice, ...) METALANG99_PRIV_REC_NEXT(2352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2352(choice, ...) METALANG99_PRIV_REC_NEXT(2353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2353(choice, ...) METALANG99_PRIV_REC_NEXT(2354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2354(choice, ...) METALANG99_PRIV_REC_NEXT(2355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2355(choice, ...) METALANG99_PRIV_REC_NEXT(2356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2356(choice, ...) METALANG99_PRIV_REC_NEXT(2357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2357(choice, ...) METALANG99_PRIV_REC_NEXT(2358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2358(choice, ...) METALANG99_PRIV_REC_NEXT(2359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2359(choice, ...) METALANG99_PRIV_REC_NEXT(2360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2360(choice, ...) METALANG99_PRIV_REC_NEXT(2361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2361(choice, ...) METALANG99_PRIV_REC_NEXT(2362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2362(choice, ...) METALANG99_PRIV_REC_NEXT(2363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2363(choice, ...) METALANG99_PRIV_REC_NEXT(2364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2364(choice, ...) METALANG99_PRIV_REC_NEXT(2365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2365(choice, ...) METALANG99_PRIV_REC_NEXT(2366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2366(choice, ...) METALANG99_PRIV_REC_NEXT(2367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2367(choice, ...) METALANG99_PRIV_REC_NEXT(2368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2368(choice, ...) METALANG99_PRIV_REC_NEXT(2369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2369(choice, ...) METALANG99_PRIV_REC_NEXT(2370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2370(choice, ...) METALANG99_PRIV_REC_NEXT(2371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2371(choice, ...) METALANG99_PRIV_REC_NEXT(2372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2372(choice, ...) METALANG99_PRIV_REC_NEXT(2373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2373(choice, ...) METALANG99_PRIV_REC_NEXT(2374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2374(choice, ...) METALANG99_PRIV_REC_NEXT(2375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2375(choice, ...) METALANG99_PRIV_REC_NEXT(2376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2376(choice, ...) METALANG99_PRIV_REC_NEXT(2377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2377(choice, ...) METALANG99_PRIV_REC_NEXT(2378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2378(choice, ...) METALANG99_PRIV_REC_NEXT(2379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2379(choice, ...) METALANG99_PRIV_REC_NEXT(2380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2380(choice, ...) METALANG99_PRIV_REC_NEXT(2381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2381(choice, ...) METALANG99_PRIV_REC_NEXT(2382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2382(choice, ...) METALANG99_PRIV_REC_NEXT(2383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2383(choice, ...) METALANG99_PRIV_REC_NEXT(2384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2384(choice, ...) METALANG99_PRIV_REC_NEXT(2385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2385(choice, ...) METALANG99_PRIV_REC_NEXT(2386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2386(choice, ...) METALANG99_PRIV_REC_NEXT(2387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2387(choice, ...) METALANG99_PRIV_REC_NEXT(2388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2388(choice, ...) METALANG99_PRIV_REC_NEXT(2389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2389(choice, ...) METALANG99_PRIV_REC_NEXT(2390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2390(choice, ...) METALANG99_PRIV_REC_NEXT(2391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2391(choice, ...) METALANG99_PRIV_REC_NEXT(2392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2392(choice, ...) METALANG99_PRIV_REC_NEXT(2393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2393(choice, ...) METALANG99_PRIV_REC_NEXT(2394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2394(choice, ...) METALANG99_PRIV_REC_NEXT(2395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2395(choice, ...) METALANG99_PRIV_REC_NEXT(2396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2396(choice, ...) METALANG99_PRIV_REC_NEXT(2397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2397(choice, ...) METALANG99_PRIV_REC_NEXT(2398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2398(choice, ...) METALANG99_PRIV_REC_NEXT(2399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2399(choice, ...) METALANG99_PRIV_REC_NEXT(2400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2400(choice, ...) METALANG99_PRIV_REC_NEXT(2401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2401(choice, ...) METALANG99_PRIV_REC_NEXT(2402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2402(choice, ...) METALANG99_PRIV_REC_NEXT(2403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2403(choice, ...) METALANG99_PRIV_REC_NEXT(2404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2404(choice, ...) METALANG99_PRIV_REC_NEXT(2405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2405(choice, ...) METALANG99_PRIV_REC_NEXT(2406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2406(choice, ...) METALANG99_PRIV_REC_NEXT(2407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2407(choice, ...) METALANG99_PRIV_REC_NEXT(2408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2408(choice, ...) METALANG99_PRIV_REC_NEXT(2409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2409(choice, ...) METALANG99_PRIV_REC_NEXT(2410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2410(choice, ...) METALANG99_PRIV_REC_NEXT(2411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2411(choice, ...) METALANG99_PRIV_REC_NEXT(2412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2412(choice, ...) METALANG99_PRIV_REC_NEXT(2413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2413(choice, ...) METALANG99_PRIV_REC_NEXT(2414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2414(choice, ...) METALANG99_PRIV_REC_NEXT(2415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2415(choice, ...) METALANG99_PRIV_REC_NEXT(2416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2416(choice, ...) METALANG99_PRIV_REC_NEXT(2417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2417(choice, ...) METALANG99_PRIV_REC_NEXT(2418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2418(choice, ...) METALANG99_PRIV_REC_NEXT(2419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2419(choice, ...) METALANG99_PRIV_REC_NEXT(2420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2420(choice, ...) METALANG99_PRIV_REC_NEXT(2421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2421(choice, ...) METALANG99_PRIV_REC_NEXT(2422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2422(choice, ...) METALANG99_PRIV_REC_NEXT(2423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2423(choice, ...) METALANG99_PRIV_REC_NEXT(2424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2424(choice, ...) METALANG99_PRIV_REC_NEXT(2425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2425(choice, ...) METALANG99_PRIV_REC_NEXT(2426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2426(choice, ...) METALANG99_PRIV_REC_NEXT(2427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2427(choice, ...) METALANG99_PRIV_REC_NEXT(2428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2428(choice, ...) METALANG99_PRIV_REC_NEXT(2429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2429(choice, ...) METALANG99_PRIV_REC_NEXT(2430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2430(choice, ...) METALANG99_PRIV_REC_NEXT(2431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2431(choice, ...) METALANG99_PRIV_REC_NEXT(2432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2432(choice, ...) METALANG99_PRIV_REC_NEXT(2433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2433(choice, ...) METALANG99_PRIV_REC_NEXT(2434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2434(choice, ...) METALANG99_PRIV_REC_NEXT(2435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2435(choice, ...) METALANG99_PRIV_REC_NEXT(2436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2436(choice, ...) METALANG99_PRIV_REC_NEXT(2437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2437(choice, ...) METALANG99_PRIV_REC_NEXT(2438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2438(choice, ...) METALANG99_PRIV_REC_NEXT(2439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2439(choice, ...) METALANG99_PRIV_REC_NEXT(2440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2440(choice, ...) METALANG99_PRIV_REC_NEXT(2441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2441(choice, ...) METALANG99_PRIV_REC_NEXT(2442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2442(choice, ...) METALANG99_PRIV_REC_NEXT(2443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2443(choice, ...) METALANG99_PRIV_REC_NEXT(2444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2444(choice, ...) METALANG99_PRIV_REC_NEXT(2445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2445(choice, ...) METALANG99_PRIV_REC_NEXT(2446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2446(choice, ...) METALANG99_PRIV_REC_NEXT(2447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2447(choice, ...) METALANG99_PRIV_REC_NEXT(2448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2448(choice, ...) METALANG99_PRIV_REC_NEXT(2449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2449(choice, ...) METALANG99_PRIV_REC_NEXT(2450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2450(choice, ...) METALANG99_PRIV_REC_NEXT(2451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2451(choice, ...) METALANG99_PRIV_REC_NEXT(2452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2452(choice, ...) METALANG99_PRIV_REC_NEXT(2453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2453(choice, ...) METALANG99_PRIV_REC_NEXT(2454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2454(choice, ...) METALANG99_PRIV_REC_NEXT(2455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2455(choice, ...) METALANG99_PRIV_REC_NEXT(2456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2456(choice, ...) METALANG99_PRIV_REC_NEXT(2457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2457(choice, ...) METALANG99_PRIV_REC_NEXT(2458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2458(choice, ...) METALANG99_PRIV_REC_NEXT(2459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2459(choice, ...) METALANG99_PRIV_REC_NEXT(2460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2460(choice, ...) METALANG99_PRIV_REC_NEXT(2461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2461(choice, ...) METALANG99_PRIV_REC_NEXT(2462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2462(choice, ...) METALANG99_PRIV_REC_NEXT(2463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2463(choice, ...) METALANG99_PRIV_REC_NEXT(2464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2464(choice, ...) METALANG99_PRIV_REC_NEXT(2465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2465(choice, ...) METALANG99_PRIV_REC_NEXT(2466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2466(choice, ...) METALANG99_PRIV_REC_NEXT(2467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2467(choice, ...) METALANG99_PRIV_REC_NEXT(2468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2468(choice, ...) METALANG99_PRIV_REC_NEXT(2469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2469(choice, ...) METALANG99_PRIV_REC_NEXT(2470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2470(choice, ...) METALANG99_PRIV_REC_NEXT(2471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2471(choice, ...) METALANG99_PRIV_REC_NEXT(2472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2472(choice, ...) METALANG99_PRIV_REC_NEXT(2473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2473(choice, ...) METALANG99_PRIV_REC_NEXT(2474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2474(choice, ...) METALANG99_PRIV_REC_NEXT(2475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2475(choice, ...) METALANG99_PRIV_REC_NEXT(2476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2476(choice, ...) METALANG99_PRIV_REC_NEXT(2477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2477(choice, ...) METALANG99_PRIV_REC_NEXT(2478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2478(choice, ...) METALANG99_PRIV_REC_NEXT(2479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2479(choice, ...) METALANG99_PRIV_REC_NEXT(2480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2480(choice, ...) METALANG99_PRIV_REC_NEXT(2481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2481(choice, ...) METALANG99_PRIV_REC_NEXT(2482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2482(choice, ...) METALANG99_PRIV_REC_NEXT(2483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2483(choice, ...) METALANG99_PRIV_REC_NEXT(2484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2484(choice, ...) METALANG99_PRIV_REC_NEXT(2485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2485(choice, ...) METALANG99_PRIV_REC_NEXT(2486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2486(choice, ...) METALANG99_PRIV_REC_NEXT(2487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2487(choice, ...) METALANG99_PRIV_REC_NEXT(2488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2488(choice, ...) METALANG99_PRIV_REC_NEXT(2489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2489(choice, ...) METALANG99_PRIV_REC_NEXT(2490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2490(choice, ...) METALANG99_PRIV_REC_NEXT(2491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2491(choice, ...) METALANG99_PRIV_REC_NEXT(2492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2492(choice, ...) METALANG99_PRIV_REC_NEXT(2493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2493(choice, ...) METALANG99_PRIV_REC_NEXT(2494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2494(choice, ...) METALANG99_PRIV_REC_NEXT(2495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2495(choice, ...) METALANG99_PRIV_REC_NEXT(2496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2496(choice, ...) METALANG99_PRIV_REC_NEXT(2497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2497(choice, ...) METALANG99_PRIV_REC_NEXT(2498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2498(choice, ...) METALANG99_PRIV_REC_NEXT(2499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2499(choice, ...) METALANG99_PRIV_REC_NEXT(2500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2500(choice, ...) METALANG99_PRIV_REC_NEXT(2501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2501(choice, ...) METALANG99_PRIV_REC_NEXT(2502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2502(choice, ...) METALANG99_PRIV_REC_NEXT(2503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2503(choice, ...) METALANG99_PRIV_REC_NEXT(2504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2504(choice, ...) METALANG99_PRIV_REC_NEXT(2505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2505(choice, ...) METALANG99_PRIV_REC_NEXT(2506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2506(choice, ...) METALANG99_PRIV_REC_NEXT(2507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2507(choice, ...) METALANG99_PRIV_REC_NEXT(2508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2508(choice, ...) METALANG99_PRIV_REC_NEXT(2509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2509(choice, ...) METALANG99_PRIV_REC_NEXT(2510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2510(choice, ...) METALANG99_PRIV_REC_NEXT(2511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2511(choice, ...) METALANG99_PRIV_REC_NEXT(2512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2512(choice, ...) METALANG99_PRIV_REC_NEXT(2513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2513(choice, ...) METALANG99_PRIV_REC_NEXT(2514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2514(choice, ...) METALANG99_PRIV_REC_NEXT(2515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2515(choice, ...) METALANG99_PRIV_REC_NEXT(2516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2516(choice, ...) METALANG99_PRIV_REC_NEXT(2517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2517(choice, ...) METALANG99_PRIV_REC_NEXT(2518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2518(choice, ...) METALANG99_PRIV_REC_NEXT(2519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2519(choice, ...) METALANG99_PRIV_REC_NEXT(2520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2520(choice, ...) METALANG99_PRIV_REC_NEXT(2521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2521(choice, ...) METALANG99_PRIV_REC_NEXT(2522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2522(choice, ...) METALANG99_PRIV_REC_NEXT(2523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2523(choice, ...) METALANG99_PRIV_REC_NEXT(2524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2524(choice, ...) METALANG99_PRIV_REC_NEXT(2525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2525(choice, ...) METALANG99_PRIV_REC_NEXT(2526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2526(choice, ...) METALANG99_PRIV_REC_NEXT(2527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2527(choice, ...) METALANG99_PRIV_REC_NEXT(2528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2528(choice, ...) METALANG99_PRIV_REC_NEXT(2529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2529(choice, ...) METALANG99_PRIV_REC_NEXT(2530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2530(choice, ...) METALANG99_PRIV_REC_NEXT(2531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2531(choice, ...) METALANG99_PRIV_REC_NEXT(2532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2532(choice, ...) METALANG99_PRIV_REC_NEXT(2533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2533(choice, ...) METALANG99_PRIV_REC_NEXT(2534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2534(choice, ...) METALANG99_PRIV_REC_NEXT(2535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2535(choice, ...) METALANG99_PRIV_REC_NEXT(2536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2536(choice, ...) METALANG99_PRIV_REC_NEXT(2537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2537(choice, ...) METALANG99_PRIV_REC_NEXT(2538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2538(choice, ...) METALANG99_PRIV_REC_NEXT(2539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2539(choice, ...) METALANG99_PRIV_REC_NEXT(2540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2540(choice, ...) METALANG99_PRIV_REC_NEXT(2541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2541(choice, ...) METALANG99_PRIV_REC_NEXT(2542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2542(choice, ...) METALANG99_PRIV_REC_NEXT(2543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2543(choice, ...) METALANG99_PRIV_REC_NEXT(2544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2544(choice, ...) METALANG99_PRIV_REC_NEXT(2545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2545(choice, ...) METALANG99_PRIV_REC_NEXT(2546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2546(choice, ...) METALANG99_PRIV_REC_NEXT(2547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2547(choice, ...) METALANG99_PRIV_REC_NEXT(2548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2548(choice, ...) METALANG99_PRIV_REC_NEXT(2549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2549(choice, ...) METALANG99_PRIV_REC_NEXT(2550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2550(choice, ...) METALANG99_PRIV_REC_NEXT(2551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2551(choice, ...) METALANG99_PRIV_REC_NEXT(2552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2552(choice, ...) METALANG99_PRIV_REC_NEXT(2553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2553(choice, ...) METALANG99_PRIV_REC_NEXT(2554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2554(choice, ...) METALANG99_PRIV_REC_NEXT(2555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2555(choice, ...) METALANG99_PRIV_REC_NEXT(2556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2556(choice, ...) METALANG99_PRIV_REC_NEXT(2557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2557(choice, ...) METALANG99_PRIV_REC_NEXT(2558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2558(choice, ...) METALANG99_PRIV_REC_NEXT(2559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2559(choice, ...) METALANG99_PRIV_REC_NEXT(2560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2560(choice, ...) METALANG99_PRIV_REC_NEXT(2561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2561(choice, ...) METALANG99_PRIV_REC_NEXT(2562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2562(choice, ...) METALANG99_PRIV_REC_NEXT(2563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2563(choice, ...) METALANG99_PRIV_REC_NEXT(2564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2564(choice, ...) METALANG99_PRIV_REC_NEXT(2565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2565(choice, ...) METALANG99_PRIV_REC_NEXT(2566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2566(choice, ...) METALANG99_PRIV_REC_NEXT(2567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2567(choice, ...) METALANG99_PRIV_REC_NEXT(2568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2568(choice, ...) METALANG99_PRIV_REC_NEXT(2569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2569(choice, ...) METALANG99_PRIV_REC_NEXT(2570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2570(choice, ...) METALANG99_PRIV_REC_NEXT(2571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2571(choice, ...) METALANG99_PRIV_REC_NEXT(2572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2572(choice, ...) METALANG99_PRIV_REC_NEXT(2573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2573(choice, ...) METALANG99_PRIV_REC_NEXT(2574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2574(choice, ...) METALANG99_PRIV_REC_NEXT(2575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2575(choice, ...) METALANG99_PRIV_REC_NEXT(2576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2576(choice, ...) METALANG99_PRIV_REC_NEXT(2577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2577(choice, ...) METALANG99_PRIV_REC_NEXT(2578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2578(choice, ...) METALANG99_PRIV_REC_NEXT(2579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2579(choice, ...) METALANG99_PRIV_REC_NEXT(2580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2580(choice, ...) METALANG99_PRIV_REC_NEXT(2581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2581(choice, ...) METALANG99_PRIV_REC_NEXT(2582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2582(choice, ...) METALANG99_PRIV_REC_NEXT(2583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2583(choice, ...) METALANG99_PRIV_REC_NEXT(2584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2584(choice, ...) METALANG99_PRIV_REC_NEXT(2585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2585(choice, ...) METALANG99_PRIV_REC_NEXT(2586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2586(choice, ...) METALANG99_PRIV_REC_NEXT(2587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2587(choice, ...) METALANG99_PRIV_REC_NEXT(2588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2588(choice, ...) METALANG99_PRIV_REC_NEXT(2589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2589(choice, ...) METALANG99_PRIV_REC_NEXT(2590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2590(choice, ...) METALANG99_PRIV_REC_NEXT(2591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2591(choice, ...) METALANG99_PRIV_REC_NEXT(2592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2592(choice, ...) METALANG99_PRIV_REC_NEXT(2593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2593(choice, ...) METALANG99_PRIV_REC_NEXT(2594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2594(choice, ...) METALANG99_PRIV_REC_NEXT(2595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2595(choice, ...) METALANG99_PRIV_REC_NEXT(2596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2596(choice, ...) METALANG99_PRIV_REC_NEXT(2597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2597(choice, ...) METALANG99_PRIV_REC_NEXT(2598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2598(choice, ...) METALANG99_PRIV_REC_NEXT(2599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2599(choice, ...) METALANG99_PRIV_REC_NEXT(2600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2600(choice, ...) METALANG99_PRIV_REC_NEXT(2601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2601(choice, ...) METALANG99_PRIV_REC_NEXT(2602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2602(choice, ...) METALANG99_PRIV_REC_NEXT(2603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2603(choice, ...) METALANG99_PRIV_REC_NEXT(2604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2604(choice, ...) METALANG99_PRIV_REC_NEXT(2605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2605(choice, ...) METALANG99_PRIV_REC_NEXT(2606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2606(choice, ...) METALANG99_PRIV_REC_NEXT(2607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2607(choice, ...) METALANG99_PRIV_REC_NEXT(2608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2608(choice, ...) METALANG99_PRIV_REC_NEXT(2609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2609(choice, ...) METALANG99_PRIV_REC_NEXT(2610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2610(choice, ...) METALANG99_PRIV_REC_NEXT(2611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2611(choice, ...) METALANG99_PRIV_REC_NEXT(2612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2612(choice, ...) METALANG99_PRIV_REC_NEXT(2613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2613(choice, ...) METALANG99_PRIV_REC_NEXT(2614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2614(choice, ...) METALANG99_PRIV_REC_NEXT(2615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2615(choice, ...) METALANG99_PRIV_REC_NEXT(2616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2616(choice, ...) METALANG99_PRIV_REC_NEXT(2617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2617(choice, ...) METALANG99_PRIV_REC_NEXT(2618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2618(choice, ...) METALANG99_PRIV_REC_NEXT(2619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2619(choice, ...) METALANG99_PRIV_REC_NEXT(2620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2620(choice, ...) METALANG99_PRIV_REC_NEXT(2621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2621(choice, ...) METALANG99_PRIV_REC_NEXT(2622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2622(choice, ...) METALANG99_PRIV_REC_NEXT(2623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2623(choice, ...) METALANG99_PRIV_REC_NEXT(2624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2624(choice, ...) METALANG99_PRIV_REC_NEXT(2625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2625(choice, ...) METALANG99_PRIV_REC_NEXT(2626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2626(choice, ...) METALANG99_PRIV_REC_NEXT(2627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2627(choice, ...) METALANG99_PRIV_REC_NEXT(2628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2628(choice, ...) METALANG99_PRIV_REC_NEXT(2629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2629(choice, ...) METALANG99_PRIV_REC_NEXT(2630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2630(choice, ...) METALANG99_PRIV_REC_NEXT(2631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2631(choice, ...) METALANG99_PRIV_REC_NEXT(2632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2632(choice, ...) METALANG99_PRIV_REC_NEXT(2633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2633(choice, ...) METALANG99_PRIV_REC_NEXT(2634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2634(choice, ...) METALANG99_PRIV_REC_NEXT(2635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2635(choice, ...) METALANG99_PRIV_REC_NEXT(2636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2636(choice, ...) METALANG99_PRIV_REC_NEXT(2637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2637(choice, ...) METALANG99_PRIV_REC_NEXT(2638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2638(choice, ...) METALANG99_PRIV_REC_NEXT(2639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2639(choice, ...) METALANG99_PRIV_REC_NEXT(2640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2640(choice, ...) METALANG99_PRIV_REC_NEXT(2641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2641(choice, ...) METALANG99_PRIV_REC_NEXT(2642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2642(choice, ...) METALANG99_PRIV_REC_NEXT(2643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2643(choice, ...) METALANG99_PRIV_REC_NEXT(2644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2644(choice, ...) METALANG99_PRIV_REC_NEXT(2645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2645(choice, ...) METALANG99_PRIV_REC_NEXT(2646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2646(choice, ...) METALANG99_PRIV_REC_NEXT(2647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2647(choice, ...) METALANG99_PRIV_REC_NEXT(2648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2648(choice, ...) METALANG99_PRIV_REC_NEXT(2649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2649(choice, ...) METALANG99_PRIV_REC_NEXT(2650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2650(choice, ...) METALANG99_PRIV_REC_NEXT(2651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2651(choice, ...) METALANG99_PRIV_REC_NEXT(2652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2652(choice, ...) METALANG99_PRIV_REC_NEXT(2653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2653(choice, ...) METALANG99_PRIV_REC_NEXT(2654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2654(choice, ...) METALANG99_PRIV_REC_NEXT(2655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2655(choice, ...) METALANG99_PRIV_REC_NEXT(2656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2656(choice, ...) METALANG99_PRIV_REC_NEXT(2657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2657(choice, ...) METALANG99_PRIV_REC_NEXT(2658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2658(choice, ...) METALANG99_PRIV_REC_NEXT(2659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2659(choice, ...) METALANG99_PRIV_REC_NEXT(2660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2660(choice, ...) METALANG99_PRIV_REC_NEXT(2661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2661(choice, ...) METALANG99_PRIV_REC_NEXT(2662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2662(choice, ...) METALANG99_PRIV_REC_NEXT(2663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2663(choice, ...) METALANG99_PRIV_REC_NEXT(2664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2664(choice, ...) METALANG99_PRIV_REC_NEXT(2665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2665(choice, ...) METALANG99_PRIV_REC_NEXT(2666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2666(choice, ...) METALANG99_PRIV_REC_NEXT(2667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2667(choice, ...) METALANG99_PRIV_REC_NEXT(2668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2668(choice, ...) METALANG99_PRIV_REC_NEXT(2669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2669(choice, ...) METALANG99_PRIV_REC_NEXT(2670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2670(choice, ...) METALANG99_PRIV_REC_NEXT(2671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2671(choice, ...) METALANG99_PRIV_REC_NEXT(2672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2672(choice, ...) METALANG99_PRIV_REC_NEXT(2673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2673(choice, ...) METALANG99_PRIV_REC_NEXT(2674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2674(choice, ...) METALANG99_PRIV_REC_NEXT(2675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2675(choice, ...) METALANG99_PRIV_REC_NEXT(2676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2676(choice, ...) METALANG99_PRIV_REC_NEXT(2677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2677(choice, ...) METALANG99_PRIV_REC_NEXT(2678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2678(choice, ...) METALANG99_PRIV_REC_NEXT(2679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2679(choice, ...) METALANG99_PRIV_REC_NEXT(2680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2680(choice, ...) METALANG99_PRIV_REC_NEXT(2681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2681(choice, ...) METALANG99_PRIV_REC_NEXT(2682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2682(choice, ...) METALANG99_PRIV_REC_NEXT(2683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2683(choice, ...) METALANG99_PRIV_REC_NEXT(2684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2684(choice, ...) METALANG99_PRIV_REC_NEXT(2685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2685(choice, ...) METALANG99_PRIV_REC_NEXT(2686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2686(choice, ...) METALANG99_PRIV_REC_NEXT(2687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2687(choice, ...) METALANG99_PRIV_REC_NEXT(2688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2688(choice, ...) METALANG99_PRIV_REC_NEXT(2689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2689(choice, ...) METALANG99_PRIV_REC_NEXT(2690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2690(choice, ...) METALANG99_PRIV_REC_NEXT(2691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2691(choice, ...) METALANG99_PRIV_REC_NEXT(2692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2692(choice, ...) METALANG99_PRIV_REC_NEXT(2693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2693(choice, ...) METALANG99_PRIV_REC_NEXT(2694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2694(choice, ...) METALANG99_PRIV_REC_NEXT(2695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2695(choice, ...) METALANG99_PRIV_REC_NEXT(2696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2696(choice, ...) METALANG99_PRIV_REC_NEXT(2697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2697(choice, ...) METALANG99_PRIV_REC_NEXT(2698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2698(choice, ...) METALANG99_PRIV_REC_NEXT(2699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2699(choice, ...) METALANG99_PRIV_REC_NEXT(2700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2700(choice, ...) METALANG99_PRIV_REC_NEXT(2701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2701(choice, ...) METALANG99_PRIV_REC_NEXT(2702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2702(choice, ...) METALANG99_PRIV_REC_NEXT(2703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2703(choice, ...) METALANG99_PRIV_REC_NEXT(2704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2704(choice, ...) METALANG99_PRIV_REC_NEXT(2705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2705(choice, ...) METALANG99_PRIV_REC_NEXT(2706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2706(choice, ...) METALANG99_PRIV_REC_NEXT(2707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2707(choice, ...) METALANG99_PRIV_REC_NEXT(2708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2708(choice, ...) METALANG99_PRIV_REC_NEXT(2709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2709(choice, ...) METALANG99_PRIV_REC_NEXT(2710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2710(choice, ...) METALANG99_PRIV_REC_NEXT(2711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2711(choice, ...) METALANG99_PRIV_REC_NEXT(2712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2712(choice, ...) METALANG99_PRIV_REC_NEXT(2713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2713(choice, ...) METALANG99_PRIV_REC_NEXT(2714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2714(choice, ...) METALANG99_PRIV_REC_NEXT(2715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2715(choice, ...) METALANG99_PRIV_REC_NEXT(2716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2716(choice, ...) METALANG99_PRIV_REC_NEXT(2717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2717(choice, ...) METALANG99_PRIV_REC_NEXT(2718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2718(choice, ...) METALANG99_PRIV_REC_NEXT(2719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2719(choice, ...) METALANG99_PRIV_REC_NEXT(2720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2720(choice, ...) METALANG99_PRIV_REC_NEXT(2721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2721(choice, ...) METALANG99_PRIV_REC_NEXT(2722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2722(choice, ...) METALANG99_PRIV_REC_NEXT(2723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2723(choice, ...) METALANG99_PRIV_REC_NEXT(2724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2724(choice, ...) METALANG99_PRIV_REC_NEXT(2725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2725(choice, ...) METALANG99_PRIV_REC_NEXT(2726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2726(choice, ...) METALANG99_PRIV_REC_NEXT(2727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2727(choice, ...) METALANG99_PRIV_REC_NEXT(2728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2728(choice, ...) METALANG99_PRIV_REC_NEXT(2729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2729(choice, ...) METALANG99_PRIV_REC_NEXT(2730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2730(choice, ...) METALANG99_PRIV_REC_NEXT(2731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2731(choice, ...) METALANG99_PRIV_REC_NEXT(2732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2732(choice, ...) METALANG99_PRIV_REC_NEXT(2733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2733(choice, ...) METALANG99_PRIV_REC_NEXT(2734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2734(choice, ...) METALANG99_PRIV_REC_NEXT(2735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2735(choice, ...) METALANG99_PRIV_REC_NEXT(2736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2736(choice, ...) METALANG99_PRIV_REC_NEXT(2737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2737(choice, ...) METALANG99_PRIV_REC_NEXT(2738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2738(choice, ...) METALANG99_PRIV_REC_NEXT(2739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2739(choice, ...) METALANG99_PRIV_REC_NEXT(2740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2740(choice, ...) METALANG99_PRIV_REC_NEXT(2741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2741(choice, ...) METALANG99_PRIV_REC_NEXT(2742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2742(choice, ...) METALANG99_PRIV_REC_NEXT(2743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2743(choice, ...) METALANG99_PRIV_REC_NEXT(2744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2744(choice, ...) METALANG99_PRIV_REC_NEXT(2745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2745(choice, ...) METALANG99_PRIV_REC_NEXT(2746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2746(choice, ...) METALANG99_PRIV_REC_NEXT(2747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2747(choice, ...) METALANG99_PRIV_REC_NEXT(2748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2748(choice, ...) METALANG99_PRIV_REC_NEXT(2749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2749(choice, ...) METALANG99_PRIV_REC_NEXT(2750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2750(choice, ...) METALANG99_PRIV_REC_NEXT(2751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2751(choice, ...) METALANG99_PRIV_REC_NEXT(2752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2752(choice, ...) METALANG99_PRIV_REC_NEXT(2753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2753(choice, ...) METALANG99_PRIV_REC_NEXT(2754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2754(choice, ...) METALANG99_PRIV_REC_NEXT(2755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2755(choice, ...) METALANG99_PRIV_REC_NEXT(2756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2756(choice, ...) METALANG99_PRIV_REC_NEXT(2757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2757(choice, ...) METALANG99_PRIV_REC_NEXT(2758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2758(choice, ...) METALANG99_PRIV_REC_NEXT(2759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2759(choice, ...) METALANG99_PRIV_REC_NEXT(2760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2760(choice, ...) METALANG99_PRIV_REC_NEXT(2761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2761(choice, ...) METALANG99_PRIV_REC_NEXT(2762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2762(choice, ...) METALANG99_PRIV_REC_NEXT(2763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2763(choice, ...) METALANG99_PRIV_REC_NEXT(2764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2764(choice, ...) METALANG99_PRIV_REC_NEXT(2765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2765(choice, ...) METALANG99_PRIV_REC_NEXT(2766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2766(choice, ...) METALANG99_PRIV_REC_NEXT(2767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2767(choice, ...) METALANG99_PRIV_REC_NEXT(2768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2768(choice, ...) METALANG99_PRIV_REC_NEXT(2769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2769(choice, ...) METALANG99_PRIV_REC_NEXT(2770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2770(choice, ...) METALANG99_PRIV_REC_NEXT(2771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2771(choice, ...) METALANG99_PRIV_REC_NEXT(2772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2772(choice, ...) METALANG99_PRIV_REC_NEXT(2773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2773(choice, ...) METALANG99_PRIV_REC_NEXT(2774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2774(choice, ...) METALANG99_PRIV_REC_NEXT(2775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2775(choice, ...) METALANG99_PRIV_REC_NEXT(2776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2776(choice, ...) METALANG99_PRIV_REC_NEXT(2777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2777(choice, ...) METALANG99_PRIV_REC_NEXT(2778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2778(choice, ...) METALANG99_PRIV_REC_NEXT(2779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2779(choice, ...) METALANG99_PRIV_REC_NEXT(2780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2780(choice, ...) METALANG99_PRIV_REC_NEXT(2781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2781(choice, ...) METALANG99_PRIV_REC_NEXT(2782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2782(choice, ...) METALANG99_PRIV_REC_NEXT(2783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2783(choice, ...) METALANG99_PRIV_REC_NEXT(2784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2784(choice, ...) METALANG99_PRIV_REC_NEXT(2785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2785(choice, ...) METALANG99_PRIV_REC_NEXT(2786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2786(choice, ...) METALANG99_PRIV_REC_NEXT(2787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2787(choice, ...) METALANG99_PRIV_REC_NEXT(2788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2788(choice, ...) METALANG99_PRIV_REC_NEXT(2789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2789(choice, ...) METALANG99_PRIV_REC_NEXT(2790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2790(choice, ...) METALANG99_PRIV_REC_NEXT(2791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2791(choice, ...) METALANG99_PRIV_REC_NEXT(2792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2792(choice, ...) METALANG99_PRIV_REC_NEXT(2793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2793(choice, ...) METALANG99_PRIV_REC_NEXT(2794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2794(choice, ...) METALANG99_PRIV_REC_NEXT(2795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2795(choice, ...) METALANG99_PRIV_REC_NEXT(2796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2796(choice, ...) METALANG99_PRIV_REC_NEXT(2797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2797(choice, ...) METALANG99_PRIV_REC_NEXT(2798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2798(choice, ...) METALANG99_PRIV_REC_NEXT(2799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2799(choice, ...) METALANG99_PRIV_REC_NEXT(2800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2800(choice, ...) METALANG99_PRIV_REC_NEXT(2801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2801(choice, ...) METALANG99_PRIV_REC_NEXT(2802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2802(choice, ...) METALANG99_PRIV_REC_NEXT(2803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2803(choice, ...) METALANG99_PRIV_REC_NEXT(2804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2804(choice, ...) METALANG99_PRIV_REC_NEXT(2805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2805(choice, ...) METALANG99_PRIV_REC_NEXT(2806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2806(choice, ...) METALANG99_PRIV_REC_NEXT(2807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2807(choice, ...) METALANG99_PRIV_REC_NEXT(2808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2808(choice, ...) METALANG99_PRIV_REC_NEXT(2809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2809(choice, ...) METALANG99_PRIV_REC_NEXT(2810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2810(choice, ...) METALANG99_PRIV_REC_NEXT(2811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2811(choice, ...) METALANG99_PRIV_REC_NEXT(2812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2812(choice, ...) METALANG99_PRIV_REC_NEXT(2813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2813(choice, ...) METALANG99_PRIV_REC_NEXT(2814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2814(choice, ...) METALANG99_PRIV_REC_NEXT(2815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2815(choice, ...) METALANG99_PRIV_REC_NEXT(2816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2816(choice, ...) METALANG99_PRIV_REC_NEXT(2817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2817(choice, ...) METALANG99_PRIV_REC_NEXT(2818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2818(choice, ...) METALANG99_PRIV_REC_NEXT(2819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2819(choice, ...) METALANG99_PRIV_REC_NEXT(2820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2820(choice, ...) METALANG99_PRIV_REC_NEXT(2821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2821(choice, ...) METALANG99_PRIV_REC_NEXT(2822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2822(choice, ...) METALANG99_PRIV_REC_NEXT(2823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2823(choice, ...) METALANG99_PRIV_REC_NEXT(2824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2824(choice, ...) METALANG99_PRIV_REC_NEXT(2825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2825(choice, ...) METALANG99_PRIV_REC_NEXT(2826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2826(choice, ...) METALANG99_PRIV_REC_NEXT(2827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2827(choice, ...) METALANG99_PRIV_REC_NEXT(2828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2828(choice, ...) METALANG99_PRIV_REC_NEXT(2829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2829(choice, ...) METALANG99_PRIV_REC_NEXT(2830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2830(choice, ...) METALANG99_PRIV_REC_NEXT(2831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2831(choice, ...) METALANG99_PRIV_REC_NEXT(2832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2832(choice, ...) METALANG99_PRIV_REC_NEXT(2833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2833(choice, ...) METALANG99_PRIV_REC_NEXT(2834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2834(choice, ...) METALANG99_PRIV_REC_NEXT(2835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2835(choice, ...) METALANG99_PRIV_REC_NEXT(2836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2836(choice, ...) METALANG99_PRIV_REC_NEXT(2837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2837(choice, ...) METALANG99_PRIV_REC_NEXT(2838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2838(choice, ...) METALANG99_PRIV_REC_NEXT(2839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2839(choice, ...) METALANG99_PRIV_REC_NEXT(2840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2840(choice, ...) METALANG99_PRIV_REC_NEXT(2841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2841(choice, ...) METALANG99_PRIV_REC_NEXT(2842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2842(choice, ...) METALANG99_PRIV_REC_NEXT(2843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2843(choice, ...) METALANG99_PRIV_REC_NEXT(2844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2844(choice, ...) METALANG99_PRIV_REC_NEXT(2845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2845(choice, ...) METALANG99_PRIV_REC_NEXT(2846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2846(choice, ...) METALANG99_PRIV_REC_NEXT(2847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2847(choice, ...) METALANG99_PRIV_REC_NEXT(2848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2848(choice, ...) METALANG99_PRIV_REC_NEXT(2849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2849(choice, ...) METALANG99_PRIV_REC_NEXT(2850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2850(choice, ...) METALANG99_PRIV_REC_NEXT(2851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2851(choice, ...) METALANG99_PRIV_REC_NEXT(2852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2852(choice, ...) METALANG99_PRIV_REC_NEXT(2853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2853(choice, ...) METALANG99_PRIV_REC_NEXT(2854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2854(choice, ...) METALANG99_PRIV_REC_NEXT(2855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2855(choice, ...) METALANG99_PRIV_REC_NEXT(2856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2856(choice, ...) METALANG99_PRIV_REC_NEXT(2857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2857(choice, ...) METALANG99_PRIV_REC_NEXT(2858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2858(choice, ...) METALANG99_PRIV_REC_NEXT(2859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2859(choice, ...) METALANG99_PRIV_REC_NEXT(2860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2860(choice, ...) METALANG99_PRIV_REC_NEXT(2861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2861(choice, ...) METALANG99_PRIV_REC_NEXT(2862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2862(choice, ...) METALANG99_PRIV_REC_NEXT(2863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2863(choice, ...) METALANG99_PRIV_REC_NEXT(2864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2864(choice, ...) METALANG99_PRIV_REC_NEXT(2865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2865(choice, ...) METALANG99_PRIV_REC_NEXT(2866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2866(choice, ...) METALANG99_PRIV_REC_NEXT(2867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2867(choice, ...) METALANG99_PRIV_REC_NEXT(2868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2868(choice, ...) METALANG99_PRIV_REC_NEXT(2869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2869(choice, ...) METALANG99_PRIV_REC_NEXT(2870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2870(choice, ...) METALANG99_PRIV_REC_NEXT(2871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2871(choice, ...) METALANG99_PRIV_REC_NEXT(2872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2872(choice, ...) METALANG99_PRIV_REC_NEXT(2873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2873(choice, ...) METALANG99_PRIV_REC_NEXT(2874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2874(choice, ...) METALANG99_PRIV_REC_NEXT(2875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2875(choice, ...) METALANG99_PRIV_REC_NEXT(2876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2876(choice, ...) METALANG99_PRIV_REC_NEXT(2877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2877(choice, ...) METALANG99_PRIV_REC_NEXT(2878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2878(choice, ...) METALANG99_PRIV_REC_NEXT(2879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2879(choice, ...) METALANG99_PRIV_REC_NEXT(2880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2880(choice, ...) METALANG99_PRIV_REC_NEXT(2881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2881(choice, ...) METALANG99_PRIV_REC_NEXT(2882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2882(choice, ...) METALANG99_PRIV_REC_NEXT(2883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2883(choice, ...) METALANG99_PRIV_REC_NEXT(2884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2884(choice, ...) METALANG99_PRIV_REC_NEXT(2885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2885(choice, ...) METALANG99_PRIV_REC_NEXT(2886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2886(choice, ...) METALANG99_PRIV_REC_NEXT(2887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2887(choice, ...) METALANG99_PRIV_REC_NEXT(2888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2888(choice, ...) METALANG99_PRIV_REC_NEXT(2889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2889(choice, ...) METALANG99_PRIV_REC_NEXT(2890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2890(choice, ...) METALANG99_PRIV_REC_NEXT(2891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2891(choice, ...) METALANG99_PRIV_REC_NEXT(2892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2892(choice, ...) METALANG99_PRIV_REC_NEXT(2893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2893(choice, ...) METALANG99_PRIV_REC_NEXT(2894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2894(choice, ...) METALANG99_PRIV_REC_NEXT(2895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2895(choice, ...) METALANG99_PRIV_REC_NEXT(2896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2896(choice, ...) METALANG99_PRIV_REC_NEXT(2897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2897(choice, ...) METALANG99_PRIV_REC_NEXT(2898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2898(choice, ...) METALANG99_PRIV_REC_NEXT(2899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2899(choice, ...) METALANG99_PRIV_REC_NEXT(2900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2900(choice, ...) METALANG99_PRIV_REC_NEXT(2901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2901(choice, ...) METALANG99_PRIV_REC_NEXT(2902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2902(choice, ...) METALANG99_PRIV_REC_NEXT(2903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2903(choice, ...) METALANG99_PRIV_REC_NEXT(2904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2904(choice, ...) METALANG99_PRIV_REC_NEXT(2905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2905(choice, ...) METALANG99_PRIV_REC_NEXT(2906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2906(choice, ...) METALANG99_PRIV_REC_NEXT(2907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2907(choice, ...) METALANG99_PRIV_REC_NEXT(2908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2908(choice, ...) METALANG99_PRIV_REC_NEXT(2909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2909(choice, ...) METALANG99_PRIV_REC_NEXT(2910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2910(choice, ...) METALANG99_PRIV_REC_NEXT(2911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2911(choice, ...) METALANG99_PRIV_REC_NEXT(2912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2912(choice, ...) METALANG99_PRIV_REC_NEXT(2913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2913(choice, ...) METALANG99_PRIV_REC_NEXT(2914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2914(choice, ...) METALANG99_PRIV_REC_NEXT(2915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2915(choice, ...) METALANG99_PRIV_REC_NEXT(2916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2916(choice, ...) METALANG99_PRIV_REC_NEXT(2917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2917(choice, ...) METALANG99_PRIV_REC_NEXT(2918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2918(choice, ...) METALANG99_PRIV_REC_NEXT(2919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2919(choice, ...) METALANG99_PRIV_REC_NEXT(2920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2920(choice, ...) METALANG99_PRIV_REC_NEXT(2921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2921(choice, ...) METALANG99_PRIV_REC_NEXT(2922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2922(choice, ...) METALANG99_PRIV_REC_NEXT(2923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2923(choice, ...) METALANG99_PRIV_REC_NEXT(2924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2924(choice, ...) METALANG99_PRIV_REC_NEXT(2925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2925(choice, ...) METALANG99_PRIV_REC_NEXT(2926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2926(choice, ...) METALANG99_PRIV_REC_NEXT(2927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2927(choice, ...) METALANG99_PRIV_REC_NEXT(2928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2928(choice, ...) METALANG99_PRIV_REC_NEXT(2929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2929(choice, ...) METALANG99_PRIV_REC_NEXT(2930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2930(choice, ...) METALANG99_PRIV_REC_NEXT(2931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2931(choice, ...) METALANG99_PRIV_REC_NEXT(2932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2932(choice, ...) METALANG99_PRIV_REC_NEXT(2933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2933(choice, ...) METALANG99_PRIV_REC_NEXT(2934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2934(choice, ...) METALANG99_PRIV_REC_NEXT(2935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2935(choice, ...) METALANG99_PRIV_REC_NEXT(2936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2936(choice, ...) METALANG99_PRIV_REC_NEXT(2937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2937(choice, ...) METALANG99_PRIV_REC_NEXT(2938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2938(choice, ...) METALANG99_PRIV_REC_NEXT(2939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2939(choice, ...) METALANG99_PRIV_REC_NEXT(2940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2940(choice, ...) METALANG99_PRIV_REC_NEXT(2941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2941(choice, ...) METALANG99_PRIV_REC_NEXT(2942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2942(choice, ...) METALANG99_PRIV_REC_NEXT(2943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2943(choice, ...) METALANG99_PRIV_REC_NEXT(2944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2944(choice, ...) METALANG99_PRIV_REC_NEXT(2945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2945(choice, ...) METALANG99_PRIV_REC_NEXT(2946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2946(choice, ...) METALANG99_PRIV_REC_NEXT(2947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2947(choice, ...) METALANG99_PRIV_REC_NEXT(2948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2948(choice, ...) METALANG99_PRIV_REC_NEXT(2949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2949(choice, ...) METALANG99_PRIV_REC_NEXT(2950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2950(choice, ...) METALANG99_PRIV_REC_NEXT(2951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2951(choice, ...) METALANG99_PRIV_REC_NEXT(2952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2952(choice, ...) METALANG99_PRIV_REC_NEXT(2953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2953(choice, ...) METALANG99_PRIV_REC_NEXT(2954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2954(choice, ...) METALANG99_PRIV_REC_NEXT(2955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2955(choice, ...) METALANG99_PRIV_REC_NEXT(2956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2956(choice, ...) METALANG99_PRIV_REC_NEXT(2957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2957(choice, ...) METALANG99_PRIV_REC_NEXT(2958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2958(choice, ...) METALANG99_PRIV_REC_NEXT(2959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2959(choice, ...) METALANG99_PRIV_REC_NEXT(2960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2960(choice, ...) METALANG99_PRIV_REC_NEXT(2961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2961(choice, ...) METALANG99_PRIV_REC_NEXT(2962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2962(choice, ...) METALANG99_PRIV_REC_NEXT(2963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2963(choice, ...) METALANG99_PRIV_REC_NEXT(2964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2964(choice, ...) METALANG99_PRIV_REC_NEXT(2965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2965(choice, ...) METALANG99_PRIV_REC_NEXT(2966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2966(choice, ...) METALANG99_PRIV_REC_NEXT(2967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2967(choice, ...) METALANG99_PRIV_REC_NEXT(2968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2968(choice, ...) METALANG99_PRIV_REC_NEXT(2969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2969(choice, ...) METALANG99_PRIV_REC_NEXT(2970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2970(choice, ...) METALANG99_PRIV_REC_NEXT(2971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2971(choice, ...) METALANG99_PRIV_REC_NEXT(2972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2972(choice, ...) METALANG99_PRIV_REC_NEXT(2973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2973(choice, ...) METALANG99_PRIV_REC_NEXT(2974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2974(choice, ...) METALANG99_PRIV_REC_NEXT(2975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2975(choice, ...) METALANG99_PRIV_REC_NEXT(2976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2976(choice, ...) METALANG99_PRIV_REC_NEXT(2977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2977(choice, ...) METALANG99_PRIV_REC_NEXT(2978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2978(choice, ...) METALANG99_PRIV_REC_NEXT(2979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2979(choice, ...) METALANG99_PRIV_REC_NEXT(2980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2980(choice, ...) METALANG99_PRIV_REC_NEXT(2981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2981(choice, ...) METALANG99_PRIV_REC_NEXT(2982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2982(choice, ...) METALANG99_PRIV_REC_NEXT(2983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2983(choice, ...) METALANG99_PRIV_REC_NEXT(2984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2984(choice, ...) METALANG99_PRIV_REC_NEXT(2985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2985(choice, ...) METALANG99_PRIV_REC_NEXT(2986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2986(choice, ...) METALANG99_PRIV_REC_NEXT(2987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2987(choice, ...) METALANG99_PRIV_REC_NEXT(2988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2988(choice, ...) METALANG99_PRIV_REC_NEXT(2989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2989(choice, ...) METALANG99_PRIV_REC_NEXT(2990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2990(choice, ...) METALANG99_PRIV_REC_NEXT(2991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2991(choice, ...) METALANG99_PRIV_REC_NEXT(2992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2992(choice, ...) METALANG99_PRIV_REC_NEXT(2993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2993(choice, ...) METALANG99_PRIV_REC_NEXT(2994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2994(choice, ...) METALANG99_PRIV_REC_NEXT(2995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2995(choice, ...) METALANG99_PRIV_REC_NEXT(2996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2996(choice, ...) METALANG99_PRIV_REC_NEXT(2997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2997(choice, ...) METALANG99_PRIV_REC_NEXT(2998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2998(choice, ...) METALANG99_PRIV_REC_NEXT(2999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_2999(choice, ...) METALANG99_PRIV_REC_NEXT(3000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3000(choice, ...) METALANG99_PRIV_REC_NEXT(3001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3001(choice, ...) METALANG99_PRIV_REC_NEXT(3002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3002(choice, ...) METALANG99_PRIV_REC_NEXT(3003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3003(choice, ...) METALANG99_PRIV_REC_NEXT(3004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3004(choice, ...) METALANG99_PRIV_REC_NEXT(3005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3005(choice, ...) METALANG99_PRIV_REC_NEXT(3006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3006(choice, ...) METALANG99_PRIV_REC_NEXT(3007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3007(choice, ...) METALANG99_PRIV_REC_NEXT(3008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3008(choice, ...) METALANG99_PRIV_REC_NEXT(3009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3009(choice, ...) METALANG99_PRIV_REC_NEXT(3010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3010(choice, ...) METALANG99_PRIV_REC_NEXT(3011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3011(choice, ...) METALANG99_PRIV_REC_NEXT(3012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3012(choice, ...) METALANG99_PRIV_REC_NEXT(3013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3013(choice, ...) METALANG99_PRIV_REC_NEXT(3014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3014(choice, ...) METALANG99_PRIV_REC_NEXT(3015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3015(choice, ...) METALANG99_PRIV_REC_NEXT(3016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3016(choice, ...) METALANG99_PRIV_REC_NEXT(3017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3017(choice, ...) METALANG99_PRIV_REC_NEXT(3018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3018(choice, ...) METALANG99_PRIV_REC_NEXT(3019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3019(choice, ...) METALANG99_PRIV_REC_NEXT(3020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3020(choice, ...) METALANG99_PRIV_REC_NEXT(3021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3021(choice, ...) METALANG99_PRIV_REC_NEXT(3022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3022(choice, ...) METALANG99_PRIV_REC_NEXT(3023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3023(choice, ...) METALANG99_PRIV_REC_NEXT(3024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3024(choice, ...) METALANG99_PRIV_REC_NEXT(3025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3025(choice, ...) METALANG99_PRIV_REC_NEXT(3026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3026(choice, ...) METALANG99_PRIV_REC_NEXT(3027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3027(choice, ...) METALANG99_PRIV_REC_NEXT(3028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3028(choice, ...) METALANG99_PRIV_REC_NEXT(3029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3029(choice, ...) METALANG99_PRIV_REC_NEXT(3030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3030(choice, ...) METALANG99_PRIV_REC_NEXT(3031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3031(choice, ...) METALANG99_PRIV_REC_NEXT(3032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3032(choice, ...) METALANG99_PRIV_REC_NEXT(3033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3033(choice, ...) METALANG99_PRIV_REC_NEXT(3034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3034(choice, ...) METALANG99_PRIV_REC_NEXT(3035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3035(choice, ...) METALANG99_PRIV_REC_NEXT(3036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3036(choice, ...) METALANG99_PRIV_REC_NEXT(3037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3037(choice, ...) METALANG99_PRIV_REC_NEXT(3038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3038(choice, ...) METALANG99_PRIV_REC_NEXT(3039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3039(choice, ...) METALANG99_PRIV_REC_NEXT(3040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3040(choice, ...) METALANG99_PRIV_REC_NEXT(3041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3041(choice, ...) METALANG99_PRIV_REC_NEXT(3042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3042(choice, ...) METALANG99_PRIV_REC_NEXT(3043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3043(choice, ...) METALANG99_PRIV_REC_NEXT(3044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3044(choice, ...) METALANG99_PRIV_REC_NEXT(3045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3045(choice, ...) METALANG99_PRIV_REC_NEXT(3046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3046(choice, ...) METALANG99_PRIV_REC_NEXT(3047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3047(choice, ...) METALANG99_PRIV_REC_NEXT(3048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3048(choice, ...) METALANG99_PRIV_REC_NEXT(3049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3049(choice, ...) METALANG99_PRIV_REC_NEXT(3050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3050(choice, ...) METALANG99_PRIV_REC_NEXT(3051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3051(choice, ...) METALANG99_PRIV_REC_NEXT(3052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3052(choice, ...) METALANG99_PRIV_REC_NEXT(3053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3053(choice, ...) METALANG99_PRIV_REC_NEXT(3054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3054(choice, ...) METALANG99_PRIV_REC_NEXT(3055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3055(choice, ...) METALANG99_PRIV_REC_NEXT(3056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3056(choice, ...) METALANG99_PRIV_REC_NEXT(3057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3057(choice, ...) METALANG99_PRIV_REC_NEXT(3058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3058(choice, ...) METALANG99_PRIV_REC_NEXT(3059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3059(choice, ...) METALANG99_PRIV_REC_NEXT(3060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3060(choice, ...) METALANG99_PRIV_REC_NEXT(3061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3061(choice, ...) METALANG99_PRIV_REC_NEXT(3062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3062(choice, ...) METALANG99_PRIV_REC_NEXT(3063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3063(choice, ...) METALANG99_PRIV_REC_NEXT(3064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3064(choice, ...) METALANG99_PRIV_REC_NEXT(3065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3065(choice, ...) METALANG99_PRIV_REC_NEXT(3066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3066(choice, ...) METALANG99_PRIV_REC_NEXT(3067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3067(choice, ...) METALANG99_PRIV_REC_NEXT(3068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3068(choice, ...) METALANG99_PRIV_REC_NEXT(3069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3069(choice, ...) METALANG99_PRIV_REC_NEXT(3070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3070(choice, ...) METALANG99_PRIV_REC_NEXT(3071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3071(choice, ...) METALANG99_PRIV_REC_NEXT(3072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3072(choice, ...) METALANG99_PRIV_REC_NEXT(3073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3073(choice, ...) METALANG99_PRIV_REC_NEXT(3074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3074(choice, ...) METALANG99_PRIV_REC_NEXT(3075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3075(choice, ...) METALANG99_PRIV_REC_NEXT(3076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3076(choice, ...) METALANG99_PRIV_REC_NEXT(3077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3077(choice, ...) METALANG99_PRIV_REC_NEXT(3078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3078(choice, ...) METALANG99_PRIV_REC_NEXT(3079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3079(choice, ...) METALANG99_PRIV_REC_NEXT(3080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3080(choice, ...) METALANG99_PRIV_REC_NEXT(3081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3081(choice, ...) METALANG99_PRIV_REC_NEXT(3082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3082(choice, ...) METALANG99_PRIV_REC_NEXT(3083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3083(choice, ...) METALANG99_PRIV_REC_NEXT(3084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3084(choice, ...) METALANG99_PRIV_REC_NEXT(3085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3085(choice, ...) METALANG99_PRIV_REC_NEXT(3086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3086(choice, ...) METALANG99_PRIV_REC_NEXT(3087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3087(choice, ...) METALANG99_PRIV_REC_NEXT(3088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3088(choice, ...) METALANG99_PRIV_REC_NEXT(3089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3089(choice, ...) METALANG99_PRIV_REC_NEXT(3090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3090(choice, ...) METALANG99_PRIV_REC_NEXT(3091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3091(choice, ...) METALANG99_PRIV_REC_NEXT(3092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3092(choice, ...) METALANG99_PRIV_REC_NEXT(3093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3093(choice, ...) METALANG99_PRIV_REC_NEXT(3094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3094(choice, ...) METALANG99_PRIV_REC_NEXT(3095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3095(choice, ...) METALANG99_PRIV_REC_NEXT(3096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3096(choice, ...) METALANG99_PRIV_REC_NEXT(3097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3097(choice, ...) METALANG99_PRIV_REC_NEXT(3098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3098(choice, ...) METALANG99_PRIV_REC_NEXT(3099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3099(choice, ...) METALANG99_PRIV_REC_NEXT(3100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3100(choice, ...) METALANG99_PRIV_REC_NEXT(3101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3101(choice, ...) METALANG99_PRIV_REC_NEXT(3102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3102(choice, ...) METALANG99_PRIV_REC_NEXT(3103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3103(choice, ...) METALANG99_PRIV_REC_NEXT(3104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3104(choice, ...) METALANG99_PRIV_REC_NEXT(3105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3105(choice, ...) METALANG99_PRIV_REC_NEXT(3106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3106(choice, ...) METALANG99_PRIV_REC_NEXT(3107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3107(choice, ...) METALANG99_PRIV_REC_NEXT(3108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3108(choice, ...) METALANG99_PRIV_REC_NEXT(3109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3109(choice, ...) METALANG99_PRIV_REC_NEXT(3110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3110(choice, ...) METALANG99_PRIV_REC_NEXT(3111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3111(choice, ...) METALANG99_PRIV_REC_NEXT(3112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3112(choice, ...) METALANG99_PRIV_REC_NEXT(3113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3113(choice, ...) METALANG99_PRIV_REC_NEXT(3114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3114(choice, ...) METALANG99_PRIV_REC_NEXT(3115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3115(choice, ...) METALANG99_PRIV_REC_NEXT(3116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3116(choice, ...) METALANG99_PRIV_REC_NEXT(3117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3117(choice, ...) METALANG99_PRIV_REC_NEXT(3118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3118(choice, ...) METALANG99_PRIV_REC_NEXT(3119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3119(choice, ...) METALANG99_PRIV_REC_NEXT(3120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3120(choice, ...) METALANG99_PRIV_REC_NEXT(3121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3121(choice, ...) METALANG99_PRIV_REC_NEXT(3122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3122(choice, ...) METALANG99_PRIV_REC_NEXT(3123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3123(choice, ...) METALANG99_PRIV_REC_NEXT(3124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3124(choice, ...) METALANG99_PRIV_REC_NEXT(3125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3125(choice, ...) METALANG99_PRIV_REC_NEXT(3126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3126(choice, ...) METALANG99_PRIV_REC_NEXT(3127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3127(choice, ...) METALANG99_PRIV_REC_NEXT(3128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3128(choice, ...) METALANG99_PRIV_REC_NEXT(3129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3129(choice, ...) METALANG99_PRIV_REC_NEXT(3130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3130(choice, ...) METALANG99_PRIV_REC_NEXT(3131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3131(choice, ...) METALANG99_PRIV_REC_NEXT(3132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3132(choice, ...) METALANG99_PRIV_REC_NEXT(3133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3133(choice, ...) METALANG99_PRIV_REC_NEXT(3134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3134(choice, ...) METALANG99_PRIV_REC_NEXT(3135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3135(choice, ...) METALANG99_PRIV_REC_NEXT(3136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3136(choice, ...) METALANG99_PRIV_REC_NEXT(3137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3137(choice, ...) METALANG99_PRIV_REC_NEXT(3138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3138(choice, ...) METALANG99_PRIV_REC_NEXT(3139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3139(choice, ...) METALANG99_PRIV_REC_NEXT(3140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3140(choice, ...) METALANG99_PRIV_REC_NEXT(3141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3141(choice, ...) METALANG99_PRIV_REC_NEXT(3142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3142(choice, ...) METALANG99_PRIV_REC_NEXT(3143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3143(choice, ...) METALANG99_PRIV_REC_NEXT(3144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3144(choice, ...) METALANG99_PRIV_REC_NEXT(3145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3145(choice, ...) METALANG99_PRIV_REC_NEXT(3146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3146(choice, ...) METALANG99_PRIV_REC_NEXT(3147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3147(choice, ...) METALANG99_PRIV_REC_NEXT(3148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3148(choice, ...) METALANG99_PRIV_REC_NEXT(3149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3149(choice, ...) METALANG99_PRIV_REC_NEXT(3150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3150(choice, ...) METALANG99_PRIV_REC_NEXT(3151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3151(choice, ...) METALANG99_PRIV_REC_NEXT(3152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3152(choice, ...) METALANG99_PRIV_REC_NEXT(3153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3153(choice, ...) METALANG99_PRIV_REC_NEXT(3154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3154(choice, ...) METALANG99_PRIV_REC_NEXT(3155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3155(choice, ...) METALANG99_PRIV_REC_NEXT(3156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3156(choice, ...) METALANG99_PRIV_REC_NEXT(3157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3157(choice, ...) METALANG99_PRIV_REC_NEXT(3158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3158(choice, ...) METALANG99_PRIV_REC_NEXT(3159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3159(choice, ...) METALANG99_PRIV_REC_NEXT(3160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3160(choice, ...) METALANG99_PRIV_REC_NEXT(3161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3161(choice, ...) METALANG99_PRIV_REC_NEXT(3162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3162(choice, ...) METALANG99_PRIV_REC_NEXT(3163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3163(choice, ...) METALANG99_PRIV_REC_NEXT(3164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3164(choice, ...) METALANG99_PRIV_REC_NEXT(3165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3165(choice, ...) METALANG99_PRIV_REC_NEXT(3166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3166(choice, ...) METALANG99_PRIV_REC_NEXT(3167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3167(choice, ...) METALANG99_PRIV_REC_NEXT(3168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3168(choice, ...) METALANG99_PRIV_REC_NEXT(3169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3169(choice, ...) METALANG99_PRIV_REC_NEXT(3170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3170(choice, ...) METALANG99_PRIV_REC_NEXT(3171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3171(choice, ...) METALANG99_PRIV_REC_NEXT(3172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3172(choice, ...) METALANG99_PRIV_REC_NEXT(3173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3173(choice, ...) METALANG99_PRIV_REC_NEXT(3174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3174(choice, ...) METALANG99_PRIV_REC_NEXT(3175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3175(choice, ...) METALANG99_PRIV_REC_NEXT(3176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3176(choice, ...) METALANG99_PRIV_REC_NEXT(3177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3177(choice, ...) METALANG99_PRIV_REC_NEXT(3178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3178(choice, ...) METALANG99_PRIV_REC_NEXT(3179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3179(choice, ...) METALANG99_PRIV_REC_NEXT(3180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3180(choice, ...) METALANG99_PRIV_REC_NEXT(3181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3181(choice, ...) METALANG99_PRIV_REC_NEXT(3182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3182(choice, ...) METALANG99_PRIV_REC_NEXT(3183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3183(choice, ...) METALANG99_PRIV_REC_NEXT(3184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3184(choice, ...) METALANG99_PRIV_REC_NEXT(3185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3185(choice, ...) METALANG99_PRIV_REC_NEXT(3186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3186(choice, ...) METALANG99_PRIV_REC_NEXT(3187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3187(choice, ...) METALANG99_PRIV_REC_NEXT(3188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3188(choice, ...) METALANG99_PRIV_REC_NEXT(3189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3189(choice, ...) METALANG99_PRIV_REC_NEXT(3190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3190(choice, ...) METALANG99_PRIV_REC_NEXT(3191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3191(choice, ...) METALANG99_PRIV_REC_NEXT(3192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3192(choice, ...) METALANG99_PRIV_REC_NEXT(3193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3193(choice, ...) METALANG99_PRIV_REC_NEXT(3194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3194(choice, ...) METALANG99_PRIV_REC_NEXT(3195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3195(choice, ...) METALANG99_PRIV_REC_NEXT(3196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3196(choice, ...) METALANG99_PRIV_REC_NEXT(3197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3197(choice, ...) METALANG99_PRIV_REC_NEXT(3198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3198(choice, ...) METALANG99_PRIV_REC_NEXT(3199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3199(choice, ...) METALANG99_PRIV_REC_NEXT(3200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3200(choice, ...) METALANG99_PRIV_REC_NEXT(3201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3201(choice, ...) METALANG99_PRIV_REC_NEXT(3202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3202(choice, ...) METALANG99_PRIV_REC_NEXT(3203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3203(choice, ...) METALANG99_PRIV_REC_NEXT(3204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3204(choice, ...) METALANG99_PRIV_REC_NEXT(3205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3205(choice, ...) METALANG99_PRIV_REC_NEXT(3206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3206(choice, ...) METALANG99_PRIV_REC_NEXT(3207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3207(choice, ...) METALANG99_PRIV_REC_NEXT(3208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3208(choice, ...) METALANG99_PRIV_REC_NEXT(3209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3209(choice, ...) METALANG99_PRIV_REC_NEXT(3210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3210(choice, ...) METALANG99_PRIV_REC_NEXT(3211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3211(choice, ...) METALANG99_PRIV_REC_NEXT(3212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3212(choice, ...) METALANG99_PRIV_REC_NEXT(3213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3213(choice, ...) METALANG99_PRIV_REC_NEXT(3214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3214(choice, ...) METALANG99_PRIV_REC_NEXT(3215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3215(choice, ...) METALANG99_PRIV_REC_NEXT(3216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3216(choice, ...) METALANG99_PRIV_REC_NEXT(3217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3217(choice, ...) METALANG99_PRIV_REC_NEXT(3218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3218(choice, ...) METALANG99_PRIV_REC_NEXT(3219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3219(choice, ...) METALANG99_PRIV_REC_NEXT(3220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3220(choice, ...) METALANG99_PRIV_REC_NEXT(3221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3221(choice, ...) METALANG99_PRIV_REC_NEXT(3222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3222(choice, ...) METALANG99_PRIV_REC_NEXT(3223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3223(choice, ...) METALANG99_PRIV_REC_NEXT(3224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3224(choice, ...) METALANG99_PRIV_REC_NEXT(3225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3225(choice, ...) METALANG99_PRIV_REC_NEXT(3226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3226(choice, ...) METALANG99_PRIV_REC_NEXT(3227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3227(choice, ...) METALANG99_PRIV_REC_NEXT(3228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3228(choice, ...) METALANG99_PRIV_REC_NEXT(3229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3229(choice, ...) METALANG99_PRIV_REC_NEXT(3230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3230(choice, ...) METALANG99_PRIV_REC_NEXT(3231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3231(choice, ...) METALANG99_PRIV_REC_NEXT(3232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3232(choice, ...) METALANG99_PRIV_REC_NEXT(3233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3233(choice, ...) METALANG99_PRIV_REC_NEXT(3234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3234(choice, ...) METALANG99_PRIV_REC_NEXT(3235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3235(choice, ...) METALANG99_PRIV_REC_NEXT(3236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3236(choice, ...) METALANG99_PRIV_REC_NEXT(3237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3237(choice, ...) METALANG99_PRIV_REC_NEXT(3238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3238(choice, ...) METALANG99_PRIV_REC_NEXT(3239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3239(choice, ...) METALANG99_PRIV_REC_NEXT(3240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3240(choice, ...) METALANG99_PRIV_REC_NEXT(3241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3241(choice, ...) METALANG99_PRIV_REC_NEXT(3242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3242(choice, ...) METALANG99_PRIV_REC_NEXT(3243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3243(choice, ...) METALANG99_PRIV_REC_NEXT(3244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3244(choice, ...) METALANG99_PRIV_REC_NEXT(3245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3245(choice, ...) METALANG99_PRIV_REC_NEXT(3246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3246(choice, ...) METALANG99_PRIV_REC_NEXT(3247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3247(choice, ...) METALANG99_PRIV_REC_NEXT(3248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3248(choice, ...) METALANG99_PRIV_REC_NEXT(3249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3249(choice, ...) METALANG99_PRIV_REC_NEXT(3250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3250(choice, ...) METALANG99_PRIV_REC_NEXT(3251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3251(choice, ...) METALANG99_PRIV_REC_NEXT(3252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3252(choice, ...) METALANG99_PRIV_REC_NEXT(3253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3253(choice, ...) METALANG99_PRIV_REC_NEXT(3254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3254(choice, ...) METALANG99_PRIV_REC_NEXT(3255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3255(choice, ...) METALANG99_PRIV_REC_NEXT(3256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3256(choice, ...) METALANG99_PRIV_REC_NEXT(3257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3257(choice, ...) METALANG99_PRIV_REC_NEXT(3258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3258(choice, ...) METALANG99_PRIV_REC_NEXT(3259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3259(choice, ...) METALANG99_PRIV_REC_NEXT(3260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3260(choice, ...) METALANG99_PRIV_REC_NEXT(3261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3261(choice, ...) METALANG99_PRIV_REC_NEXT(3262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3262(choice, ...) METALANG99_PRIV_REC_NEXT(3263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3263(choice, ...) METALANG99_PRIV_REC_NEXT(3264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3264(choice, ...) METALANG99_PRIV_REC_NEXT(3265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3265(choice, ...) METALANG99_PRIV_REC_NEXT(3266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3266(choice, ...) METALANG99_PRIV_REC_NEXT(3267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3267(choice, ...) METALANG99_PRIV_REC_NEXT(3268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3268(choice, ...) METALANG99_PRIV_REC_NEXT(3269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3269(choice, ...) METALANG99_PRIV_REC_NEXT(3270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3270(choice, ...) METALANG99_PRIV_REC_NEXT(3271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3271(choice, ...) METALANG99_PRIV_REC_NEXT(3272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3272(choice, ...) METALANG99_PRIV_REC_NEXT(3273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3273(choice, ...) METALANG99_PRIV_REC_NEXT(3274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3274(choice, ...) METALANG99_PRIV_REC_NEXT(3275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3275(choice, ...) METALANG99_PRIV_REC_NEXT(3276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3276(choice, ...) METALANG99_PRIV_REC_NEXT(3277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3277(choice, ...) METALANG99_PRIV_REC_NEXT(3278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3278(choice, ...) METALANG99_PRIV_REC_NEXT(3279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3279(choice, ...) METALANG99_PRIV_REC_NEXT(3280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3280(choice, ...) METALANG99_PRIV_REC_NEXT(3281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3281(choice, ...) METALANG99_PRIV_REC_NEXT(3282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3282(choice, ...) METALANG99_PRIV_REC_NEXT(3283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3283(choice, ...) METALANG99_PRIV_REC_NEXT(3284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3284(choice, ...) METALANG99_PRIV_REC_NEXT(3285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3285(choice, ...) METALANG99_PRIV_REC_NEXT(3286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3286(choice, ...) METALANG99_PRIV_REC_NEXT(3287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3287(choice, ...) METALANG99_PRIV_REC_NEXT(3288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3288(choice, ...) METALANG99_PRIV_REC_NEXT(3289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3289(choice, ...) METALANG99_PRIV_REC_NEXT(3290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3290(choice, ...) METALANG99_PRIV_REC_NEXT(3291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3291(choice, ...) METALANG99_PRIV_REC_NEXT(3292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3292(choice, ...) METALANG99_PRIV_REC_NEXT(3293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3293(choice, ...) METALANG99_PRIV_REC_NEXT(3294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3294(choice, ...) METALANG99_PRIV_REC_NEXT(3295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3295(choice, ...) METALANG99_PRIV_REC_NEXT(3296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3296(choice, ...) METALANG99_PRIV_REC_NEXT(3297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3297(choice, ...) METALANG99_PRIV_REC_NEXT(3298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3298(choice, ...) METALANG99_PRIV_REC_NEXT(3299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3299(choice, ...) METALANG99_PRIV_REC_NEXT(3300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3300(choice, ...) METALANG99_PRIV_REC_NEXT(3301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3301(choice, ...) METALANG99_PRIV_REC_NEXT(3302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3302(choice, ...) METALANG99_PRIV_REC_NEXT(3303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3303(choice, ...) METALANG99_PRIV_REC_NEXT(3304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3304(choice, ...) METALANG99_PRIV_REC_NEXT(3305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3305(choice, ...) METALANG99_PRIV_REC_NEXT(3306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3306(choice, ...) METALANG99_PRIV_REC_NEXT(3307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3307(choice, ...) METALANG99_PRIV_REC_NEXT(3308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3308(choice, ...) METALANG99_PRIV_REC_NEXT(3309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3309(choice, ...) METALANG99_PRIV_REC_NEXT(3310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3310(choice, ...) METALANG99_PRIV_REC_NEXT(3311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3311(choice, ...) METALANG99_PRIV_REC_NEXT(3312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3312(choice, ...) METALANG99_PRIV_REC_NEXT(3313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3313(choice, ...) METALANG99_PRIV_REC_NEXT(3314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3314(choice, ...) METALANG99_PRIV_REC_NEXT(3315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3315(choice, ...) METALANG99_PRIV_REC_NEXT(3316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3316(choice, ...) METALANG99_PRIV_REC_NEXT(3317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3317(choice, ...) METALANG99_PRIV_REC_NEXT(3318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3318(choice, ...) METALANG99_PRIV_REC_NEXT(3319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3319(choice, ...) METALANG99_PRIV_REC_NEXT(3320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3320(choice, ...) METALANG99_PRIV_REC_NEXT(3321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3321(choice, ...) METALANG99_PRIV_REC_NEXT(3322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3322(choice, ...) METALANG99_PRIV_REC_NEXT(3323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3323(choice, ...) METALANG99_PRIV_REC_NEXT(3324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3324(choice, ...) METALANG99_PRIV_REC_NEXT(3325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3325(choice, ...) METALANG99_PRIV_REC_NEXT(3326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3326(choice, ...) METALANG99_PRIV_REC_NEXT(3327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3327(choice, ...) METALANG99_PRIV_REC_NEXT(3328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3328(choice, ...) METALANG99_PRIV_REC_NEXT(3329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3329(choice, ...) METALANG99_PRIV_REC_NEXT(3330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3330(choice, ...) METALANG99_PRIV_REC_NEXT(3331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3331(choice, ...) METALANG99_PRIV_REC_NEXT(3332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3332(choice, ...) METALANG99_PRIV_REC_NEXT(3333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3333(choice, ...) METALANG99_PRIV_REC_NEXT(3334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3334(choice, ...) METALANG99_PRIV_REC_NEXT(3335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3335(choice, ...) METALANG99_PRIV_REC_NEXT(3336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3336(choice, ...) METALANG99_PRIV_REC_NEXT(3337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3337(choice, ...) METALANG99_PRIV_REC_NEXT(3338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3338(choice, ...) METALANG99_PRIV_REC_NEXT(3339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3339(choice, ...) METALANG99_PRIV_REC_NEXT(3340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3340(choice, ...) METALANG99_PRIV_REC_NEXT(3341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3341(choice, ...) METALANG99_PRIV_REC_NEXT(3342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3342(choice, ...) METALANG99_PRIV_REC_NEXT(3343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3343(choice, ...) METALANG99_PRIV_REC_NEXT(3344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3344(choice, ...) METALANG99_PRIV_REC_NEXT(3345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3345(choice, ...) METALANG99_PRIV_REC_NEXT(3346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3346(choice, ...) METALANG99_PRIV_REC_NEXT(3347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3347(choice, ...) METALANG99_PRIV_REC_NEXT(3348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3348(choice, ...) METALANG99_PRIV_REC_NEXT(3349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3349(choice, ...) METALANG99_PRIV_REC_NEXT(3350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3350(choice, ...) METALANG99_PRIV_REC_NEXT(3351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3351(choice, ...) METALANG99_PRIV_REC_NEXT(3352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3352(choice, ...) METALANG99_PRIV_REC_NEXT(3353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3353(choice, ...) METALANG99_PRIV_REC_NEXT(3354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3354(choice, ...) METALANG99_PRIV_REC_NEXT(3355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3355(choice, ...) METALANG99_PRIV_REC_NEXT(3356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3356(choice, ...) METALANG99_PRIV_REC_NEXT(3357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3357(choice, ...) METALANG99_PRIV_REC_NEXT(3358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3358(choice, ...) METALANG99_PRIV_REC_NEXT(3359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3359(choice, ...) METALANG99_PRIV_REC_NEXT(3360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3360(choice, ...) METALANG99_PRIV_REC_NEXT(3361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3361(choice, ...) METALANG99_PRIV_REC_NEXT(3362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3362(choice, ...) METALANG99_PRIV_REC_NEXT(3363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3363(choice, ...) METALANG99_PRIV_REC_NEXT(3364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3364(choice, ...) METALANG99_PRIV_REC_NEXT(3365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3365(choice, ...) METALANG99_PRIV_REC_NEXT(3366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3366(choice, ...) METALANG99_PRIV_REC_NEXT(3367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3367(choice, ...) METALANG99_PRIV_REC_NEXT(3368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3368(choice, ...) METALANG99_PRIV_REC_NEXT(3369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3369(choice, ...) METALANG99_PRIV_REC_NEXT(3370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3370(choice, ...) METALANG99_PRIV_REC_NEXT(3371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3371(choice, ...) METALANG99_PRIV_REC_NEXT(3372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3372(choice, ...) METALANG99_PRIV_REC_NEXT(3373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3373(choice, ...) METALANG99_PRIV_REC_NEXT(3374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3374(choice, ...) METALANG99_PRIV_REC_NEXT(3375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3375(choice, ...) METALANG99_PRIV_REC_NEXT(3376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3376(choice, ...) METALANG99_PRIV_REC_NEXT(3377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3377(choice, ...) METALANG99_PRIV_REC_NEXT(3378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3378(choice, ...) METALANG99_PRIV_REC_NEXT(3379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3379(choice, ...) METALANG99_PRIV_REC_NEXT(3380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3380(choice, ...) METALANG99_PRIV_REC_NEXT(3381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3381(choice, ...) METALANG99_PRIV_REC_NEXT(3382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3382(choice, ...) METALANG99_PRIV_REC_NEXT(3383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3383(choice, ...) METALANG99_PRIV_REC_NEXT(3384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3384(choice, ...) METALANG99_PRIV_REC_NEXT(3385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3385(choice, ...) METALANG99_PRIV_REC_NEXT(3386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3386(choice, ...) METALANG99_PRIV_REC_NEXT(3387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3387(choice, ...) METALANG99_PRIV_REC_NEXT(3388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3388(choice, ...) METALANG99_PRIV_REC_NEXT(3389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3389(choice, ...) METALANG99_PRIV_REC_NEXT(3390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3390(choice, ...) METALANG99_PRIV_REC_NEXT(3391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3391(choice, ...) METALANG99_PRIV_REC_NEXT(3392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3392(choice, ...) METALANG99_PRIV_REC_NEXT(3393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3393(choice, ...) METALANG99_PRIV_REC_NEXT(3394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3394(choice, ...) METALANG99_PRIV_REC_NEXT(3395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3395(choice, ...) METALANG99_PRIV_REC_NEXT(3396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3396(choice, ...) METALANG99_PRIV_REC_NEXT(3397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3397(choice, ...) METALANG99_PRIV_REC_NEXT(3398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3398(choice, ...) METALANG99_PRIV_REC_NEXT(3399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3399(choice, ...) METALANG99_PRIV_REC_NEXT(3400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3400(choice, ...) METALANG99_PRIV_REC_NEXT(3401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3401(choice, ...) METALANG99_PRIV_REC_NEXT(3402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3402(choice, ...) METALANG99_PRIV_REC_NEXT(3403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3403(choice, ...) METALANG99_PRIV_REC_NEXT(3404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3404(choice, ...) METALANG99_PRIV_REC_NEXT(3405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3405(choice, ...) METALANG99_PRIV_REC_NEXT(3406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3406(choice, ...) METALANG99_PRIV_REC_NEXT(3407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3407(choice, ...) METALANG99_PRIV_REC_NEXT(3408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3408(choice, ...) METALANG99_PRIV_REC_NEXT(3409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3409(choice, ...) METALANG99_PRIV_REC_NEXT(3410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3410(choice, ...) METALANG99_PRIV_REC_NEXT(3411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3411(choice, ...) METALANG99_PRIV_REC_NEXT(3412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3412(choice, ...) METALANG99_PRIV_REC_NEXT(3413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3413(choice, ...) METALANG99_PRIV_REC_NEXT(3414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3414(choice, ...) METALANG99_PRIV_REC_NEXT(3415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3415(choice, ...) METALANG99_PRIV_REC_NEXT(3416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3416(choice, ...) METALANG99_PRIV_REC_NEXT(3417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3417(choice, ...) METALANG99_PRIV_REC_NEXT(3418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3418(choice, ...) METALANG99_PRIV_REC_NEXT(3419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3419(choice, ...) METALANG99_PRIV_REC_NEXT(3420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3420(choice, ...) METALANG99_PRIV_REC_NEXT(3421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3421(choice, ...) METALANG99_PRIV_REC_NEXT(3422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3422(choice, ...) METALANG99_PRIV_REC_NEXT(3423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3423(choice, ...) METALANG99_PRIV_REC_NEXT(3424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3424(choice, ...) METALANG99_PRIV_REC_NEXT(3425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3425(choice, ...) METALANG99_PRIV_REC_NEXT(3426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3426(choice, ...) METALANG99_PRIV_REC_NEXT(3427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3427(choice, ...) METALANG99_PRIV_REC_NEXT(3428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3428(choice, ...) METALANG99_PRIV_REC_NEXT(3429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3429(choice, ...) METALANG99_PRIV_REC_NEXT(3430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3430(choice, ...) METALANG99_PRIV_REC_NEXT(3431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3431(choice, ...) METALANG99_PRIV_REC_NEXT(3432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3432(choice, ...) METALANG99_PRIV_REC_NEXT(3433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3433(choice, ...) METALANG99_PRIV_REC_NEXT(3434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3434(choice, ...) METALANG99_PRIV_REC_NEXT(3435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3435(choice, ...) METALANG99_PRIV_REC_NEXT(3436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3436(choice, ...) METALANG99_PRIV_REC_NEXT(3437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3437(choice, ...) METALANG99_PRIV_REC_NEXT(3438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3438(choice, ...) METALANG99_PRIV_REC_NEXT(3439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3439(choice, ...) METALANG99_PRIV_REC_NEXT(3440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3440(choice, ...) METALANG99_PRIV_REC_NEXT(3441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3441(choice, ...) METALANG99_PRIV_REC_NEXT(3442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3442(choice, ...) METALANG99_PRIV_REC_NEXT(3443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3443(choice, ...) METALANG99_PRIV_REC_NEXT(3444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3444(choice, ...) METALANG99_PRIV_REC_NEXT(3445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3445(choice, ...) METALANG99_PRIV_REC_NEXT(3446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3446(choice, ...) METALANG99_PRIV_REC_NEXT(3447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3447(choice, ...) METALANG99_PRIV_REC_NEXT(3448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3448(choice, ...) METALANG99_PRIV_REC_NEXT(3449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3449(choice, ...) METALANG99_PRIV_REC_NEXT(3450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3450(choice, ...) METALANG99_PRIV_REC_NEXT(3451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3451(choice, ...) METALANG99_PRIV_REC_NEXT(3452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3452(choice, ...) METALANG99_PRIV_REC_NEXT(3453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3453(choice, ...) METALANG99_PRIV_REC_NEXT(3454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3454(choice, ...) METALANG99_PRIV_REC_NEXT(3455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3455(choice, ...) METALANG99_PRIV_REC_NEXT(3456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3456(choice, ...) METALANG99_PRIV_REC_NEXT(3457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3457(choice, ...) METALANG99_PRIV_REC_NEXT(3458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3458(choice, ...) METALANG99_PRIV_REC_NEXT(3459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3459(choice, ...) METALANG99_PRIV_REC_NEXT(3460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3460(choice, ...) METALANG99_PRIV_REC_NEXT(3461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3461(choice, ...) METALANG99_PRIV_REC_NEXT(3462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3462(choice, ...) METALANG99_PRIV_REC_NEXT(3463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3463(choice, ...) METALANG99_PRIV_REC_NEXT(3464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3464(choice, ...) METALANG99_PRIV_REC_NEXT(3465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3465(choice, ...) METALANG99_PRIV_REC_NEXT(3466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3466(choice, ...) METALANG99_PRIV_REC_NEXT(3467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3467(choice, ...) METALANG99_PRIV_REC_NEXT(3468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3468(choice, ...) METALANG99_PRIV_REC_NEXT(3469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3469(choice, ...) METALANG99_PRIV_REC_NEXT(3470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3470(choice, ...) METALANG99_PRIV_REC_NEXT(3471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3471(choice, ...) METALANG99_PRIV_REC_NEXT(3472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3472(choice, ...) METALANG99_PRIV_REC_NEXT(3473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3473(choice, ...) METALANG99_PRIV_REC_NEXT(3474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3474(choice, ...) METALANG99_PRIV_REC_NEXT(3475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3475(choice, ...) METALANG99_PRIV_REC_NEXT(3476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3476(choice, ...) METALANG99_PRIV_REC_NEXT(3477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3477(choice, ...) METALANG99_PRIV_REC_NEXT(3478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3478(choice, ...) METALANG99_PRIV_REC_NEXT(3479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3479(choice, ...) METALANG99_PRIV_REC_NEXT(3480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3480(choice, ...) METALANG99_PRIV_REC_NEXT(3481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3481(choice, ...) METALANG99_PRIV_REC_NEXT(3482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3482(choice, ...) METALANG99_PRIV_REC_NEXT(3483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3483(choice, ...) METALANG99_PRIV_REC_NEXT(3484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3484(choice, ...) METALANG99_PRIV_REC_NEXT(3485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3485(choice, ...) METALANG99_PRIV_REC_NEXT(3486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3486(choice, ...) METALANG99_PRIV_REC_NEXT(3487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3487(choice, ...) METALANG99_PRIV_REC_NEXT(3488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3488(choice, ...) METALANG99_PRIV_REC_NEXT(3489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3489(choice, ...) METALANG99_PRIV_REC_NEXT(3490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3490(choice, ...) METALANG99_PRIV_REC_NEXT(3491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3491(choice, ...) METALANG99_PRIV_REC_NEXT(3492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3492(choice, ...) METALANG99_PRIV_REC_NEXT(3493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3493(choice, ...) METALANG99_PRIV_REC_NEXT(3494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3494(choice, ...) METALANG99_PRIV_REC_NEXT(3495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3495(choice, ...) METALANG99_PRIV_REC_NEXT(3496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3496(choice, ...) METALANG99_PRIV_REC_NEXT(3497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3497(choice, ...) METALANG99_PRIV_REC_NEXT(3498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3498(choice, ...) METALANG99_PRIV_REC_NEXT(3499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3499(choice, ...) METALANG99_PRIV_REC_NEXT(3500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3500(choice, ...) METALANG99_PRIV_REC_NEXT(3501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3501(choice, ...) METALANG99_PRIV_REC_NEXT(3502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3502(choice, ...) METALANG99_PRIV_REC_NEXT(3503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3503(choice, ...) METALANG99_PRIV_REC_NEXT(3504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3504(choice, ...) METALANG99_PRIV_REC_NEXT(3505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3505(choice, ...) METALANG99_PRIV_REC_NEXT(3506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3506(choice, ...) METALANG99_PRIV_REC_NEXT(3507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3507(choice, ...) METALANG99_PRIV_REC_NEXT(3508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3508(choice, ...) METALANG99_PRIV_REC_NEXT(3509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3509(choice, ...) METALANG99_PRIV_REC_NEXT(3510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3510(choice, ...) METALANG99_PRIV_REC_NEXT(3511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3511(choice, ...) METALANG99_PRIV_REC_NEXT(3512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3512(choice, ...) METALANG99_PRIV_REC_NEXT(3513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3513(choice, ...) METALANG99_PRIV_REC_NEXT(3514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3514(choice, ...) METALANG99_PRIV_REC_NEXT(3515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3515(choice, ...) METALANG99_PRIV_REC_NEXT(3516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3516(choice, ...) METALANG99_PRIV_REC_NEXT(3517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3517(choice, ...) METALANG99_PRIV_REC_NEXT(3518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3518(choice, ...) METALANG99_PRIV_REC_NEXT(3519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3519(choice, ...) METALANG99_PRIV_REC_NEXT(3520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3520(choice, ...) METALANG99_PRIV_REC_NEXT(3521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3521(choice, ...) METALANG99_PRIV_REC_NEXT(3522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3522(choice, ...) METALANG99_PRIV_REC_NEXT(3523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3523(choice, ...) METALANG99_PRIV_REC_NEXT(3524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3524(choice, ...) METALANG99_PRIV_REC_NEXT(3525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3525(choice, ...) METALANG99_PRIV_REC_NEXT(3526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3526(choice, ...) METALANG99_PRIV_REC_NEXT(3527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3527(choice, ...) METALANG99_PRIV_REC_NEXT(3528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3528(choice, ...) METALANG99_PRIV_REC_NEXT(3529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3529(choice, ...) METALANG99_PRIV_REC_NEXT(3530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3530(choice, ...) METALANG99_PRIV_REC_NEXT(3531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3531(choice, ...) METALANG99_PRIV_REC_NEXT(3532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3532(choice, ...) METALANG99_PRIV_REC_NEXT(3533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3533(choice, ...) METALANG99_PRIV_REC_NEXT(3534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3534(choice, ...) METALANG99_PRIV_REC_NEXT(3535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3535(choice, ...) METALANG99_PRIV_REC_NEXT(3536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3536(choice, ...) METALANG99_PRIV_REC_NEXT(3537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3537(choice, ...) METALANG99_PRIV_REC_NEXT(3538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3538(choice, ...) METALANG99_PRIV_REC_NEXT(3539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3539(choice, ...) METALANG99_PRIV_REC_NEXT(3540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3540(choice, ...) METALANG99_PRIV_REC_NEXT(3541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3541(choice, ...) METALANG99_PRIV_REC_NEXT(3542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3542(choice, ...) METALANG99_PRIV_REC_NEXT(3543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3543(choice, ...) METALANG99_PRIV_REC_NEXT(3544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3544(choice, ...) METALANG99_PRIV_REC_NEXT(3545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3545(choice, ...) METALANG99_PRIV_REC_NEXT(3546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3546(choice, ...) METALANG99_PRIV_REC_NEXT(3547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3547(choice, ...) METALANG99_PRIV_REC_NEXT(3548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3548(choice, ...) METALANG99_PRIV_REC_NEXT(3549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3549(choice, ...) METALANG99_PRIV_REC_NEXT(3550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3550(choice, ...) METALANG99_PRIV_REC_NEXT(3551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3551(choice, ...) METALANG99_PRIV_REC_NEXT(3552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3552(choice, ...) METALANG99_PRIV_REC_NEXT(3553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3553(choice, ...) METALANG99_PRIV_REC_NEXT(3554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3554(choice, ...) METALANG99_PRIV_REC_NEXT(3555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3555(choice, ...) METALANG99_PRIV_REC_NEXT(3556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3556(choice, ...) METALANG99_PRIV_REC_NEXT(3557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3557(choice, ...) METALANG99_PRIV_REC_NEXT(3558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3558(choice, ...) METALANG99_PRIV_REC_NEXT(3559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3559(choice, ...) METALANG99_PRIV_REC_NEXT(3560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3560(choice, ...) METALANG99_PRIV_REC_NEXT(3561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3561(choice, ...) METALANG99_PRIV_REC_NEXT(3562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3562(choice, ...) METALANG99_PRIV_REC_NEXT(3563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3563(choice, ...) METALANG99_PRIV_REC_NEXT(3564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3564(choice, ...) METALANG99_PRIV_REC_NEXT(3565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3565(choice, ...) METALANG99_PRIV_REC_NEXT(3566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3566(choice, ...) METALANG99_PRIV_REC_NEXT(3567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3567(choice, ...) METALANG99_PRIV_REC_NEXT(3568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3568(choice, ...) METALANG99_PRIV_REC_NEXT(3569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3569(choice, ...) METALANG99_PRIV_REC_NEXT(3570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3570(choice, ...) METALANG99_PRIV_REC_NEXT(3571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3571(choice, ...) METALANG99_PRIV_REC_NEXT(3572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3572(choice, ...) METALANG99_PRIV_REC_NEXT(3573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3573(choice, ...) METALANG99_PRIV_REC_NEXT(3574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3574(choice, ...) METALANG99_PRIV_REC_NEXT(3575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3575(choice, ...) METALANG99_PRIV_REC_NEXT(3576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3576(choice, ...) METALANG99_PRIV_REC_NEXT(3577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3577(choice, ...) METALANG99_PRIV_REC_NEXT(3578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3578(choice, ...) METALANG99_PRIV_REC_NEXT(3579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3579(choice, ...) METALANG99_PRIV_REC_NEXT(3580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3580(choice, ...) METALANG99_PRIV_REC_NEXT(3581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3581(choice, ...) METALANG99_PRIV_REC_NEXT(3582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3582(choice, ...) METALANG99_PRIV_REC_NEXT(3583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3583(choice, ...) METALANG99_PRIV_REC_NEXT(3584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3584(choice, ...) METALANG99_PRIV_REC_NEXT(3585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3585(choice, ...) METALANG99_PRIV_REC_NEXT(3586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3586(choice, ...) METALANG99_PRIV_REC_NEXT(3587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3587(choice, ...) METALANG99_PRIV_REC_NEXT(3588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3588(choice, ...) METALANG99_PRIV_REC_NEXT(3589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3589(choice, ...) METALANG99_PRIV_REC_NEXT(3590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3590(choice, ...) METALANG99_PRIV_REC_NEXT(3591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3591(choice, ...) METALANG99_PRIV_REC_NEXT(3592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3592(choice, ...) METALANG99_PRIV_REC_NEXT(3593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3593(choice, ...) METALANG99_PRIV_REC_NEXT(3594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3594(choice, ...) METALANG99_PRIV_REC_NEXT(3595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3595(choice, ...) METALANG99_PRIV_REC_NEXT(3596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3596(choice, ...) METALANG99_PRIV_REC_NEXT(3597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3597(choice, ...) METALANG99_PRIV_REC_NEXT(3598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3598(choice, ...) METALANG99_PRIV_REC_NEXT(3599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3599(choice, ...) METALANG99_PRIV_REC_NEXT(3600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3600(choice, ...) METALANG99_PRIV_REC_NEXT(3601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3601(choice, ...) METALANG99_PRIV_REC_NEXT(3602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3602(choice, ...) METALANG99_PRIV_REC_NEXT(3603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3603(choice, ...) METALANG99_PRIV_REC_NEXT(3604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3604(choice, ...) METALANG99_PRIV_REC_NEXT(3605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3605(choice, ...) METALANG99_PRIV_REC_NEXT(3606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3606(choice, ...) METALANG99_PRIV_REC_NEXT(3607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3607(choice, ...) METALANG99_PRIV_REC_NEXT(3608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3608(choice, ...) METALANG99_PRIV_REC_NEXT(3609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3609(choice, ...) METALANG99_PRIV_REC_NEXT(3610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3610(choice, ...) METALANG99_PRIV_REC_NEXT(3611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3611(choice, ...) METALANG99_PRIV_REC_NEXT(3612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3612(choice, ...) METALANG99_PRIV_REC_NEXT(3613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3613(choice, ...) METALANG99_PRIV_REC_NEXT(3614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3614(choice, ...) METALANG99_PRIV_REC_NEXT(3615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3615(choice, ...) METALANG99_PRIV_REC_NEXT(3616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3616(choice, ...) METALANG99_PRIV_REC_NEXT(3617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3617(choice, ...) METALANG99_PRIV_REC_NEXT(3618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3618(choice, ...) METALANG99_PRIV_REC_NEXT(3619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3619(choice, ...) METALANG99_PRIV_REC_NEXT(3620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3620(choice, ...) METALANG99_PRIV_REC_NEXT(3621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3621(choice, ...) METALANG99_PRIV_REC_NEXT(3622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3622(choice, ...) METALANG99_PRIV_REC_NEXT(3623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3623(choice, ...) METALANG99_PRIV_REC_NEXT(3624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3624(choice, ...) METALANG99_PRIV_REC_NEXT(3625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3625(choice, ...) METALANG99_PRIV_REC_NEXT(3626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3626(choice, ...) METALANG99_PRIV_REC_NEXT(3627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3627(choice, ...) METALANG99_PRIV_REC_NEXT(3628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3628(choice, ...) METALANG99_PRIV_REC_NEXT(3629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3629(choice, ...) METALANG99_PRIV_REC_NEXT(3630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3630(choice, ...) METALANG99_PRIV_REC_NEXT(3631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3631(choice, ...) METALANG99_PRIV_REC_NEXT(3632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3632(choice, ...) METALANG99_PRIV_REC_NEXT(3633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3633(choice, ...) METALANG99_PRIV_REC_NEXT(3634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3634(choice, ...) METALANG99_PRIV_REC_NEXT(3635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3635(choice, ...) METALANG99_PRIV_REC_NEXT(3636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3636(choice, ...) METALANG99_PRIV_REC_NEXT(3637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3637(choice, ...) METALANG99_PRIV_REC_NEXT(3638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3638(choice, ...) METALANG99_PRIV_REC_NEXT(3639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3639(choice, ...) METALANG99_PRIV_REC_NEXT(3640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3640(choice, ...) METALANG99_PRIV_REC_NEXT(3641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3641(choice, ...) METALANG99_PRIV_REC_NEXT(3642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3642(choice, ...) METALANG99_PRIV_REC_NEXT(3643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3643(choice, ...) METALANG99_PRIV_REC_NEXT(3644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3644(choice, ...) METALANG99_PRIV_REC_NEXT(3645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3645(choice, ...) METALANG99_PRIV_REC_NEXT(3646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3646(choice, ...) METALANG99_PRIV_REC_NEXT(3647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3647(choice, ...) METALANG99_PRIV_REC_NEXT(3648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3648(choice, ...) METALANG99_PRIV_REC_NEXT(3649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3649(choice, ...) METALANG99_PRIV_REC_NEXT(3650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3650(choice, ...) METALANG99_PRIV_REC_NEXT(3651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3651(choice, ...) METALANG99_PRIV_REC_NEXT(3652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3652(choice, ...) METALANG99_PRIV_REC_NEXT(3653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3653(choice, ...) METALANG99_PRIV_REC_NEXT(3654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3654(choice, ...) METALANG99_PRIV_REC_NEXT(3655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3655(choice, ...) METALANG99_PRIV_REC_NEXT(3656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3656(choice, ...) METALANG99_PRIV_REC_NEXT(3657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3657(choice, ...) METALANG99_PRIV_REC_NEXT(3658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3658(choice, ...) METALANG99_PRIV_REC_NEXT(3659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3659(choice, ...) METALANG99_PRIV_REC_NEXT(3660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3660(choice, ...) METALANG99_PRIV_REC_NEXT(3661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3661(choice, ...) METALANG99_PRIV_REC_NEXT(3662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3662(choice, ...) METALANG99_PRIV_REC_NEXT(3663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3663(choice, ...) METALANG99_PRIV_REC_NEXT(3664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3664(choice, ...) METALANG99_PRIV_REC_NEXT(3665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3665(choice, ...) METALANG99_PRIV_REC_NEXT(3666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3666(choice, ...) METALANG99_PRIV_REC_NEXT(3667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3667(choice, ...) METALANG99_PRIV_REC_NEXT(3668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3668(choice, ...) METALANG99_PRIV_REC_NEXT(3669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3669(choice, ...) METALANG99_PRIV_REC_NEXT(3670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3670(choice, ...) METALANG99_PRIV_REC_NEXT(3671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3671(choice, ...) METALANG99_PRIV_REC_NEXT(3672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3672(choice, ...) METALANG99_PRIV_REC_NEXT(3673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3673(choice, ...) METALANG99_PRIV_REC_NEXT(3674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3674(choice, ...) METALANG99_PRIV_REC_NEXT(3675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3675(choice, ...) METALANG99_PRIV_REC_NEXT(3676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3676(choice, ...) METALANG99_PRIV_REC_NEXT(3677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3677(choice, ...) METALANG99_PRIV_REC_NEXT(3678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3678(choice, ...) METALANG99_PRIV_REC_NEXT(3679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3679(choice, ...) METALANG99_PRIV_REC_NEXT(3680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3680(choice, ...) METALANG99_PRIV_REC_NEXT(3681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3681(choice, ...) METALANG99_PRIV_REC_NEXT(3682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3682(choice, ...) METALANG99_PRIV_REC_NEXT(3683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3683(choice, ...) METALANG99_PRIV_REC_NEXT(3684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3684(choice, ...) METALANG99_PRIV_REC_NEXT(3685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3685(choice, ...) METALANG99_PRIV_REC_NEXT(3686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3686(choice, ...) METALANG99_PRIV_REC_NEXT(3687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3687(choice, ...) METALANG99_PRIV_REC_NEXT(3688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3688(choice, ...) METALANG99_PRIV_REC_NEXT(3689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3689(choice, ...) METALANG99_PRIV_REC_NEXT(3690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3690(choice, ...) METALANG99_PRIV_REC_NEXT(3691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3691(choice, ...) METALANG99_PRIV_REC_NEXT(3692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3692(choice, ...) METALANG99_PRIV_REC_NEXT(3693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3693(choice, ...) METALANG99_PRIV_REC_NEXT(3694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3694(choice, ...) METALANG99_PRIV_REC_NEXT(3695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3695(choice, ...) METALANG99_PRIV_REC_NEXT(3696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3696(choice, ...) METALANG99_PRIV_REC_NEXT(3697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3697(choice, ...) METALANG99_PRIV_REC_NEXT(3698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3698(choice, ...) METALANG99_PRIV_REC_NEXT(3699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3699(choice, ...) METALANG99_PRIV_REC_NEXT(3700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3700(choice, ...) METALANG99_PRIV_REC_NEXT(3701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3701(choice, ...) METALANG99_PRIV_REC_NEXT(3702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3702(choice, ...) METALANG99_PRIV_REC_NEXT(3703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3703(choice, ...) METALANG99_PRIV_REC_NEXT(3704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3704(choice, ...) METALANG99_PRIV_REC_NEXT(3705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3705(choice, ...) METALANG99_PRIV_REC_NEXT(3706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3706(choice, ...) METALANG99_PRIV_REC_NEXT(3707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3707(choice, ...) METALANG99_PRIV_REC_NEXT(3708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3708(choice, ...) METALANG99_PRIV_REC_NEXT(3709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3709(choice, ...) METALANG99_PRIV_REC_NEXT(3710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3710(choice, ...) METALANG99_PRIV_REC_NEXT(3711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3711(choice, ...) METALANG99_PRIV_REC_NEXT(3712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3712(choice, ...) METALANG99_PRIV_REC_NEXT(3713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3713(choice, ...) METALANG99_PRIV_REC_NEXT(3714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3714(choice, ...) METALANG99_PRIV_REC_NEXT(3715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3715(choice, ...) METALANG99_PRIV_REC_NEXT(3716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3716(choice, ...) METALANG99_PRIV_REC_NEXT(3717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3717(choice, ...) METALANG99_PRIV_REC_NEXT(3718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3718(choice, ...) METALANG99_PRIV_REC_NEXT(3719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3719(choice, ...) METALANG99_PRIV_REC_NEXT(3720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3720(choice, ...) METALANG99_PRIV_REC_NEXT(3721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3721(choice, ...) METALANG99_PRIV_REC_NEXT(3722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3722(choice, ...) METALANG99_PRIV_REC_NEXT(3723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3723(choice, ...) METALANG99_PRIV_REC_NEXT(3724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3724(choice, ...) METALANG99_PRIV_REC_NEXT(3725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3725(choice, ...) METALANG99_PRIV_REC_NEXT(3726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3726(choice, ...) METALANG99_PRIV_REC_NEXT(3727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3727(choice, ...) METALANG99_PRIV_REC_NEXT(3728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3728(choice, ...) METALANG99_PRIV_REC_NEXT(3729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3729(choice, ...) METALANG99_PRIV_REC_NEXT(3730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3730(choice, ...) METALANG99_PRIV_REC_NEXT(3731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3731(choice, ...) METALANG99_PRIV_REC_NEXT(3732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3732(choice, ...) METALANG99_PRIV_REC_NEXT(3733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3733(choice, ...) METALANG99_PRIV_REC_NEXT(3734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3734(choice, ...) METALANG99_PRIV_REC_NEXT(3735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3735(choice, ...) METALANG99_PRIV_REC_NEXT(3736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3736(choice, ...) METALANG99_PRIV_REC_NEXT(3737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3737(choice, ...) METALANG99_PRIV_REC_NEXT(3738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3738(choice, ...) METALANG99_PRIV_REC_NEXT(3739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3739(choice, ...) METALANG99_PRIV_REC_NEXT(3740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3740(choice, ...) METALANG99_PRIV_REC_NEXT(3741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3741(choice, ...) METALANG99_PRIV_REC_NEXT(3742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3742(choice, ...) METALANG99_PRIV_REC_NEXT(3743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3743(choice, ...) METALANG99_PRIV_REC_NEXT(3744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3744(choice, ...) METALANG99_PRIV_REC_NEXT(3745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3745(choice, ...) METALANG99_PRIV_REC_NEXT(3746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3746(choice, ...) METALANG99_PRIV_REC_NEXT(3747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3747(choice, ...) METALANG99_PRIV_REC_NEXT(3748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3748(choice, ...) METALANG99_PRIV_REC_NEXT(3749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3749(choice, ...) METALANG99_PRIV_REC_NEXT(3750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3750(choice, ...) METALANG99_PRIV_REC_NEXT(3751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3751(choice, ...) METALANG99_PRIV_REC_NEXT(3752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3752(choice, ...) METALANG99_PRIV_REC_NEXT(3753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3753(choice, ...) METALANG99_PRIV_REC_NEXT(3754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3754(choice, ...) METALANG99_PRIV_REC_NEXT(3755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3755(choice, ...) METALANG99_PRIV_REC_NEXT(3756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3756(choice, ...) METALANG99_PRIV_REC_NEXT(3757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3757(choice, ...) METALANG99_PRIV_REC_NEXT(3758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3758(choice, ...) METALANG99_PRIV_REC_NEXT(3759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3759(choice, ...) METALANG99_PRIV_REC_NEXT(3760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3760(choice, ...) METALANG99_PRIV_REC_NEXT(3761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3761(choice, ...) METALANG99_PRIV_REC_NEXT(3762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3762(choice, ...) METALANG99_PRIV_REC_NEXT(3763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3763(choice, ...) METALANG99_PRIV_REC_NEXT(3764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3764(choice, ...) METALANG99_PRIV_REC_NEXT(3765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3765(choice, ...) METALANG99_PRIV_REC_NEXT(3766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3766(choice, ...) METALANG99_PRIV_REC_NEXT(3767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3767(choice, ...) METALANG99_PRIV_REC_NEXT(3768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3768(choice, ...) METALANG99_PRIV_REC_NEXT(3769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3769(choice, ...) METALANG99_PRIV_REC_NEXT(3770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3770(choice, ...) METALANG99_PRIV_REC_NEXT(3771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3771(choice, ...) METALANG99_PRIV_REC_NEXT(3772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3772(choice, ...) METALANG99_PRIV_REC_NEXT(3773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3773(choice, ...) METALANG99_PRIV_REC_NEXT(3774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3774(choice, ...) METALANG99_PRIV_REC_NEXT(3775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3775(choice, ...) METALANG99_PRIV_REC_NEXT(3776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3776(choice, ...) METALANG99_PRIV_REC_NEXT(3777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3777(choice, ...) METALANG99_PRIV_REC_NEXT(3778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3778(choice, ...) METALANG99_PRIV_REC_NEXT(3779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3779(choice, ...) METALANG99_PRIV_REC_NEXT(3780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3780(choice, ...) METALANG99_PRIV_REC_NEXT(3781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3781(choice, ...) METALANG99_PRIV_REC_NEXT(3782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3782(choice, ...) METALANG99_PRIV_REC_NEXT(3783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3783(choice, ...) METALANG99_PRIV_REC_NEXT(3784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3784(choice, ...) METALANG99_PRIV_REC_NEXT(3785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3785(choice, ...) METALANG99_PRIV_REC_NEXT(3786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3786(choice, ...) METALANG99_PRIV_REC_NEXT(3787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3787(choice, ...) METALANG99_PRIV_REC_NEXT(3788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3788(choice, ...) METALANG99_PRIV_REC_NEXT(3789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3789(choice, ...) METALANG99_PRIV_REC_NEXT(3790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3790(choice, ...) METALANG99_PRIV_REC_NEXT(3791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3791(choice, ...) METALANG99_PRIV_REC_NEXT(3792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3792(choice, ...) METALANG99_PRIV_REC_NEXT(3793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3793(choice, ...) METALANG99_PRIV_REC_NEXT(3794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3794(choice, ...) METALANG99_PRIV_REC_NEXT(3795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3795(choice, ...) METALANG99_PRIV_REC_NEXT(3796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3796(choice, ...) METALANG99_PRIV_REC_NEXT(3797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3797(choice, ...) METALANG99_PRIV_REC_NEXT(3798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3798(choice, ...) METALANG99_PRIV_REC_NEXT(3799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3799(choice, ...) METALANG99_PRIV_REC_NEXT(3800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3800(choice, ...) METALANG99_PRIV_REC_NEXT(3801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3801(choice, ...) METALANG99_PRIV_REC_NEXT(3802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3802(choice, ...) METALANG99_PRIV_REC_NEXT(3803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3803(choice, ...) METALANG99_PRIV_REC_NEXT(3804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3804(choice, ...) METALANG99_PRIV_REC_NEXT(3805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3805(choice, ...) METALANG99_PRIV_REC_NEXT(3806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3806(choice, ...) METALANG99_PRIV_REC_NEXT(3807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3807(choice, ...) METALANG99_PRIV_REC_NEXT(3808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3808(choice, ...) METALANG99_PRIV_REC_NEXT(3809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3809(choice, ...) METALANG99_PRIV_REC_NEXT(3810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3810(choice, ...) METALANG99_PRIV_REC_NEXT(3811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3811(choice, ...) METALANG99_PRIV_REC_NEXT(3812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3812(choice, ...) METALANG99_PRIV_REC_NEXT(3813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3813(choice, ...) METALANG99_PRIV_REC_NEXT(3814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3814(choice, ...) METALANG99_PRIV_REC_NEXT(3815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3815(choice, ...) METALANG99_PRIV_REC_NEXT(3816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3816(choice, ...) METALANG99_PRIV_REC_NEXT(3817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3817(choice, ...) METALANG99_PRIV_REC_NEXT(3818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3818(choice, ...) METALANG99_PRIV_REC_NEXT(3819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3819(choice, ...) METALANG99_PRIV_REC_NEXT(3820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3820(choice, ...) METALANG99_PRIV_REC_NEXT(3821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3821(choice, ...) METALANG99_PRIV_REC_NEXT(3822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3822(choice, ...) METALANG99_PRIV_REC_NEXT(3823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3823(choice, ...) METALANG99_PRIV_REC_NEXT(3824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3824(choice, ...) METALANG99_PRIV_REC_NEXT(3825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3825(choice, ...) METALANG99_PRIV_REC_NEXT(3826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3826(choice, ...) METALANG99_PRIV_REC_NEXT(3827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3827(choice, ...) METALANG99_PRIV_REC_NEXT(3828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3828(choice, ...) METALANG99_PRIV_REC_NEXT(3829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3829(choice, ...) METALANG99_PRIV_REC_NEXT(3830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3830(choice, ...) METALANG99_PRIV_REC_NEXT(3831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3831(choice, ...) METALANG99_PRIV_REC_NEXT(3832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3832(choice, ...) METALANG99_PRIV_REC_NEXT(3833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3833(choice, ...) METALANG99_PRIV_REC_NEXT(3834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3834(choice, ...) METALANG99_PRIV_REC_NEXT(3835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3835(choice, ...) METALANG99_PRIV_REC_NEXT(3836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3836(choice, ...) METALANG99_PRIV_REC_NEXT(3837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3837(choice, ...) METALANG99_PRIV_REC_NEXT(3838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3838(choice, ...) METALANG99_PRIV_REC_NEXT(3839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3839(choice, ...) METALANG99_PRIV_REC_NEXT(3840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3840(choice, ...) METALANG99_PRIV_REC_NEXT(3841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3841(choice, ...) METALANG99_PRIV_REC_NEXT(3842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3842(choice, ...) METALANG99_PRIV_REC_NEXT(3843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3843(choice, ...) METALANG99_PRIV_REC_NEXT(3844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3844(choice, ...) METALANG99_PRIV_REC_NEXT(3845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3845(choice, ...) METALANG99_PRIV_REC_NEXT(3846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3846(choice, ...) METALANG99_PRIV_REC_NEXT(3847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3847(choice, ...) METALANG99_PRIV_REC_NEXT(3848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3848(choice, ...) METALANG99_PRIV_REC_NEXT(3849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3849(choice, ...) METALANG99_PRIV_REC_NEXT(3850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3850(choice, ...) METALANG99_PRIV_REC_NEXT(3851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3851(choice, ...) METALANG99_PRIV_REC_NEXT(3852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3852(choice, ...) METALANG99_PRIV_REC_NEXT(3853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3853(choice, ...) METALANG99_PRIV_REC_NEXT(3854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3854(choice, ...) METALANG99_PRIV_REC_NEXT(3855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3855(choice, ...) METALANG99_PRIV_REC_NEXT(3856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3856(choice, ...) METALANG99_PRIV_REC_NEXT(3857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3857(choice, ...) METALANG99_PRIV_REC_NEXT(3858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3858(choice, ...) METALANG99_PRIV_REC_NEXT(3859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3859(choice, ...) METALANG99_PRIV_REC_NEXT(3860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3860(choice, ...) METALANG99_PRIV_REC_NEXT(3861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3861(choice, ...) METALANG99_PRIV_REC_NEXT(3862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3862(choice, ...) METALANG99_PRIV_REC_NEXT(3863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3863(choice, ...) METALANG99_PRIV_REC_NEXT(3864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3864(choice, ...) METALANG99_PRIV_REC_NEXT(3865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3865(choice, ...) METALANG99_PRIV_REC_NEXT(3866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3866(choice, ...) METALANG99_PRIV_REC_NEXT(3867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3867(choice, ...) METALANG99_PRIV_REC_NEXT(3868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3868(choice, ...) METALANG99_PRIV_REC_NEXT(3869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3869(choice, ...) METALANG99_PRIV_REC_NEXT(3870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3870(choice, ...) METALANG99_PRIV_REC_NEXT(3871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3871(choice, ...) METALANG99_PRIV_REC_NEXT(3872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3872(choice, ...) METALANG99_PRIV_REC_NEXT(3873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3873(choice, ...) METALANG99_PRIV_REC_NEXT(3874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3874(choice, ...) METALANG99_PRIV_REC_NEXT(3875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3875(choice, ...) METALANG99_PRIV_REC_NEXT(3876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3876(choice, ...) METALANG99_PRIV_REC_NEXT(3877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3877(choice, ...) METALANG99_PRIV_REC_NEXT(3878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3878(choice, ...) METALANG99_PRIV_REC_NEXT(3879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3879(choice, ...) METALANG99_PRIV_REC_NEXT(3880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3880(choice, ...) METALANG99_PRIV_REC_NEXT(3881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3881(choice, ...) METALANG99_PRIV_REC_NEXT(3882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3882(choice, ...) METALANG99_PRIV_REC_NEXT(3883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3883(choice, ...) METALANG99_PRIV_REC_NEXT(3884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3884(choice, ...) METALANG99_PRIV_REC_NEXT(3885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3885(choice, ...) METALANG99_PRIV_REC_NEXT(3886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3886(choice, ...) METALANG99_PRIV_REC_NEXT(3887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3887(choice, ...) METALANG99_PRIV_REC_NEXT(3888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3888(choice, ...) METALANG99_PRIV_REC_NEXT(3889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3889(choice, ...) METALANG99_PRIV_REC_NEXT(3890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3890(choice, ...) METALANG99_PRIV_REC_NEXT(3891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3891(choice, ...) METALANG99_PRIV_REC_NEXT(3892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3892(choice, ...) METALANG99_PRIV_REC_NEXT(3893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3893(choice, ...) METALANG99_PRIV_REC_NEXT(3894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3894(choice, ...) METALANG99_PRIV_REC_NEXT(3895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3895(choice, ...) METALANG99_PRIV_REC_NEXT(3896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3896(choice, ...) METALANG99_PRIV_REC_NEXT(3897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3897(choice, ...) METALANG99_PRIV_REC_NEXT(3898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3898(choice, ...) METALANG99_PRIV_REC_NEXT(3899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3899(choice, ...) METALANG99_PRIV_REC_NEXT(3900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3900(choice, ...) METALANG99_PRIV_REC_NEXT(3901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3901(choice, ...) METALANG99_PRIV_REC_NEXT(3902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3902(choice, ...) METALANG99_PRIV_REC_NEXT(3903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3903(choice, ...) METALANG99_PRIV_REC_NEXT(3904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3904(choice, ...) METALANG99_PRIV_REC_NEXT(3905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3905(choice, ...) METALANG99_PRIV_REC_NEXT(3906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3906(choice, ...) METALANG99_PRIV_REC_NEXT(3907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3907(choice, ...) METALANG99_PRIV_REC_NEXT(3908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3908(choice, ...) METALANG99_PRIV_REC_NEXT(3909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3909(choice, ...) METALANG99_PRIV_REC_NEXT(3910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3910(choice, ...) METALANG99_PRIV_REC_NEXT(3911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3911(choice, ...) METALANG99_PRIV_REC_NEXT(3912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3912(choice, ...) METALANG99_PRIV_REC_NEXT(3913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3913(choice, ...) METALANG99_PRIV_REC_NEXT(3914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3914(choice, ...) METALANG99_PRIV_REC_NEXT(3915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3915(choice, ...) METALANG99_PRIV_REC_NEXT(3916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3916(choice, ...) METALANG99_PRIV_REC_NEXT(3917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3917(choice, ...) METALANG99_PRIV_REC_NEXT(3918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3918(choice, ...) METALANG99_PRIV_REC_NEXT(3919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3919(choice, ...) METALANG99_PRIV_REC_NEXT(3920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3920(choice, ...) METALANG99_PRIV_REC_NEXT(3921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3921(choice, ...) METALANG99_PRIV_REC_NEXT(3922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3922(choice, ...) METALANG99_PRIV_REC_NEXT(3923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3923(choice, ...) METALANG99_PRIV_REC_NEXT(3924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3924(choice, ...) METALANG99_PRIV_REC_NEXT(3925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3925(choice, ...) METALANG99_PRIV_REC_NEXT(3926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3926(choice, ...) METALANG99_PRIV_REC_NEXT(3927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3927(choice, ...) METALANG99_PRIV_REC_NEXT(3928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3928(choice, ...) METALANG99_PRIV_REC_NEXT(3929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3929(choice, ...) METALANG99_PRIV_REC_NEXT(3930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3930(choice, ...) METALANG99_PRIV_REC_NEXT(3931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3931(choice, ...) METALANG99_PRIV_REC_NEXT(3932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3932(choice, ...) METALANG99_PRIV_REC_NEXT(3933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3933(choice, ...) METALANG99_PRIV_REC_NEXT(3934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3934(choice, ...) METALANG99_PRIV_REC_NEXT(3935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3935(choice, ...) METALANG99_PRIV_REC_NEXT(3936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3936(choice, ...) METALANG99_PRIV_REC_NEXT(3937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3937(choice, ...) METALANG99_PRIV_REC_NEXT(3938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3938(choice, ...) METALANG99_PRIV_REC_NEXT(3939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3939(choice, ...) METALANG99_PRIV_REC_NEXT(3940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3940(choice, ...) METALANG99_PRIV_REC_NEXT(3941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3941(choice, ...) METALANG99_PRIV_REC_NEXT(3942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3942(choice, ...) METALANG99_PRIV_REC_NEXT(3943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3943(choice, ...) METALANG99_PRIV_REC_NEXT(3944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3944(choice, ...) METALANG99_PRIV_REC_NEXT(3945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3945(choice, ...) METALANG99_PRIV_REC_NEXT(3946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3946(choice, ...) METALANG99_PRIV_REC_NEXT(3947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3947(choice, ...) METALANG99_PRIV_REC_NEXT(3948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3948(choice, ...) METALANG99_PRIV_REC_NEXT(3949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3949(choice, ...) METALANG99_PRIV_REC_NEXT(3950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3950(choice, ...) METALANG99_PRIV_REC_NEXT(3951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3951(choice, ...) METALANG99_PRIV_REC_NEXT(3952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3952(choice, ...) METALANG99_PRIV_REC_NEXT(3953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3953(choice, ...) METALANG99_PRIV_REC_NEXT(3954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3954(choice, ...) METALANG99_PRIV_REC_NEXT(3955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3955(choice, ...) METALANG99_PRIV_REC_NEXT(3956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3956(choice, ...) METALANG99_PRIV_REC_NEXT(3957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3957(choice, ...) METALANG99_PRIV_REC_NEXT(3958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3958(choice, ...) METALANG99_PRIV_REC_NEXT(3959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3959(choice, ...) METALANG99_PRIV_REC_NEXT(3960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3960(choice, ...) METALANG99_PRIV_REC_NEXT(3961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3961(choice, ...) METALANG99_PRIV_REC_NEXT(3962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3962(choice, ...) METALANG99_PRIV_REC_NEXT(3963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3963(choice, ...) METALANG99_PRIV_REC_NEXT(3964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3964(choice, ...) METALANG99_PRIV_REC_NEXT(3965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3965(choice, ...) METALANG99_PRIV_REC_NEXT(3966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3966(choice, ...) METALANG99_PRIV_REC_NEXT(3967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3967(choice, ...) METALANG99_PRIV_REC_NEXT(3968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3968(choice, ...) METALANG99_PRIV_REC_NEXT(3969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3969(choice, ...) METALANG99_PRIV_REC_NEXT(3970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3970(choice, ...) METALANG99_PRIV_REC_NEXT(3971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3971(choice, ...) METALANG99_PRIV_REC_NEXT(3972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3972(choice, ...) METALANG99_PRIV_REC_NEXT(3973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3973(choice, ...) METALANG99_PRIV_REC_NEXT(3974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3974(choice, ...) METALANG99_PRIV_REC_NEXT(3975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3975(choice, ...) METALANG99_PRIV_REC_NEXT(3976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3976(choice, ...) METALANG99_PRIV_REC_NEXT(3977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3977(choice, ...) METALANG99_PRIV_REC_NEXT(3978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3978(choice, ...) METALANG99_PRIV_REC_NEXT(3979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3979(choice, ...) METALANG99_PRIV_REC_NEXT(3980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3980(choice, ...) METALANG99_PRIV_REC_NEXT(3981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3981(choice, ...) METALANG99_PRIV_REC_NEXT(3982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3982(choice, ...) METALANG99_PRIV_REC_NEXT(3983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3983(choice, ...) METALANG99_PRIV_REC_NEXT(3984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3984(choice, ...) METALANG99_PRIV_REC_NEXT(3985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3985(choice, ...) METALANG99_PRIV_REC_NEXT(3986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3986(choice, ...) METALANG99_PRIV_REC_NEXT(3987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3987(choice, ...) METALANG99_PRIV_REC_NEXT(3988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3988(choice, ...) METALANG99_PRIV_REC_NEXT(3989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3989(choice, ...) METALANG99_PRIV_REC_NEXT(3990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3990(choice, ...) METALANG99_PRIV_REC_NEXT(3991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3991(choice, ...) METALANG99_PRIV_REC_NEXT(3992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3992(choice, ...) METALANG99_PRIV_REC_NEXT(3993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3993(choice, ...) METALANG99_PRIV_REC_NEXT(3994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3994(choice, ...) METALANG99_PRIV_REC_NEXT(3995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3995(choice, ...) METALANG99_PRIV_REC_NEXT(3996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3996(choice, ...) METALANG99_PRIV_REC_NEXT(3997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3997(choice, ...) METALANG99_PRIV_REC_NEXT(3998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3998(choice, ...) METALANG99_PRIV_REC_NEXT(3999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_3999(choice, ...) METALANG99_PRIV_REC_NEXT(4000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4000(choice, ...) METALANG99_PRIV_REC_NEXT(4001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4001(choice, ...) METALANG99_PRIV_REC_NEXT(4002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4002(choice, ...) METALANG99_PRIV_REC_NEXT(4003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4003(choice, ...) METALANG99_PRIV_REC_NEXT(4004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4004(choice, ...) METALANG99_PRIV_REC_NEXT(4005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4005(choice, ...) METALANG99_PRIV_REC_NEXT(4006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4006(choice, ...) METALANG99_PRIV_REC_NEXT(4007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4007(choice, ...) METALANG99_PRIV_REC_NEXT(4008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4008(choice, ...) METALANG99_PRIV_REC_NEXT(4009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4009(choice, ...) METALANG99_PRIV_REC_NEXT(4010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4010(choice, ...) METALANG99_PRIV_REC_NEXT(4011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4011(choice, ...) METALANG99_PRIV_REC_NEXT(4012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4012(choice, ...) METALANG99_PRIV_REC_NEXT(4013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4013(choice, ...) METALANG99_PRIV_REC_NEXT(4014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4014(choice, ...) METALANG99_PRIV_REC_NEXT(4015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4015(choice, ...) METALANG99_PRIV_REC_NEXT(4016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4016(choice, ...) METALANG99_PRIV_REC_NEXT(4017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4017(choice, ...) METALANG99_PRIV_REC_NEXT(4018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4018(choice, ...) METALANG99_PRIV_REC_NEXT(4019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4019(choice, ...) METALANG99_PRIV_REC_NEXT(4020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4020(choice, ...) METALANG99_PRIV_REC_NEXT(4021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4021(choice, ...) METALANG99_PRIV_REC_NEXT(4022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4022(choice, ...) METALANG99_PRIV_REC_NEXT(4023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4023(choice, ...) METALANG99_PRIV_REC_NEXT(4024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4024(choice, ...) METALANG99_PRIV_REC_NEXT(4025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4025(choice, ...) METALANG99_PRIV_REC_NEXT(4026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4026(choice, ...) METALANG99_PRIV_REC_NEXT(4027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4027(choice, ...) METALANG99_PRIV_REC_NEXT(4028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4028(choice, ...) METALANG99_PRIV_REC_NEXT(4029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4029(choice, ...) METALANG99_PRIV_REC_NEXT(4030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4030(choice, ...) METALANG99_PRIV_REC_NEXT(4031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4031(choice, ...) METALANG99_PRIV_REC_NEXT(4032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4032(choice, ...) METALANG99_PRIV_REC_NEXT(4033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4033(choice, ...) METALANG99_PRIV_REC_NEXT(4034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4034(choice, ...) METALANG99_PRIV_REC_NEXT(4035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4035(choice, ...) METALANG99_PRIV_REC_NEXT(4036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4036(choice, ...) METALANG99_PRIV_REC_NEXT(4037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4037(choice, ...) METALANG99_PRIV_REC_NEXT(4038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4038(choice, ...) METALANG99_PRIV_REC_NEXT(4039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4039(choice, ...) METALANG99_PRIV_REC_NEXT(4040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4040(choice, ...) METALANG99_PRIV_REC_NEXT(4041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4041(choice, ...) METALANG99_PRIV_REC_NEXT(4042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4042(choice, ...) METALANG99_PRIV_REC_NEXT(4043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4043(choice, ...) METALANG99_PRIV_REC_NEXT(4044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4044(choice, ...) METALANG99_PRIV_REC_NEXT(4045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4045(choice, ...) METALANG99_PRIV_REC_NEXT(4046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4046(choice, ...) METALANG99_PRIV_REC_NEXT(4047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4047(choice, ...) METALANG99_PRIV_REC_NEXT(4048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4048(choice, ...) METALANG99_PRIV_REC_NEXT(4049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4049(choice, ...) METALANG99_PRIV_REC_NEXT(4050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4050(choice, ...) METALANG99_PRIV_REC_NEXT(4051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4051(choice, ...) METALANG99_PRIV_REC_NEXT(4052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4052(choice, ...) METALANG99_PRIV_REC_NEXT(4053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4053(choice, ...) METALANG99_PRIV_REC_NEXT(4054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4054(choice, ...) METALANG99_PRIV_REC_NEXT(4055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4055(choice, ...) METALANG99_PRIV_REC_NEXT(4056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4056(choice, ...) METALANG99_PRIV_REC_NEXT(4057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4057(choice, ...) METALANG99_PRIV_REC_NEXT(4058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4058(choice, ...) METALANG99_PRIV_REC_NEXT(4059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4059(choice, ...) METALANG99_PRIV_REC_NEXT(4060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4060(choice, ...) METALANG99_PRIV_REC_NEXT(4061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4061(choice, ...) METALANG99_PRIV_REC_NEXT(4062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4062(choice, ...) METALANG99_PRIV_REC_NEXT(4063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4063(choice, ...) METALANG99_PRIV_REC_NEXT(4064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4064(choice, ...) METALANG99_PRIV_REC_NEXT(4065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4065(choice, ...) METALANG99_PRIV_REC_NEXT(4066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4066(choice, ...) METALANG99_PRIV_REC_NEXT(4067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4067(choice, ...) METALANG99_PRIV_REC_NEXT(4068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4068(choice, ...) METALANG99_PRIV_REC_NEXT(4069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4069(choice, ...) METALANG99_PRIV_REC_NEXT(4070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4070(choice, ...) METALANG99_PRIV_REC_NEXT(4071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4071(choice, ...) METALANG99_PRIV_REC_NEXT(4072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4072(choice, ...) METALANG99_PRIV_REC_NEXT(4073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4073(choice, ...) METALANG99_PRIV_REC_NEXT(4074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4074(choice, ...) METALANG99_PRIV_REC_NEXT(4075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4075(choice, ...) METALANG99_PRIV_REC_NEXT(4076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4076(choice, ...) METALANG99_PRIV_REC_NEXT(4077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4077(choice, ...) METALANG99_PRIV_REC_NEXT(4078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4078(choice, ...) METALANG99_PRIV_REC_NEXT(4079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4079(choice, ...) METALANG99_PRIV_REC_NEXT(4080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4080(choice, ...) METALANG99_PRIV_REC_NEXT(4081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4081(choice, ...) METALANG99_PRIV_REC_NEXT(4082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4082(choice, ...) METALANG99_PRIV_REC_NEXT(4083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4083(choice, ...) METALANG99_PRIV_REC_NEXT(4084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4084(choice, ...) METALANG99_PRIV_REC_NEXT(4085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4085(choice, ...) METALANG99_PRIV_REC_NEXT(4086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4086(choice, ...) METALANG99_PRIV_REC_NEXT(4087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4087(choice, ...) METALANG99_PRIV_REC_NEXT(4088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4088(choice, ...) METALANG99_PRIV_REC_NEXT(4089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4089(choice, ...) METALANG99_PRIV_REC_NEXT(4090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4090(choice, ...) METALANG99_PRIV_REC_NEXT(4091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4091(choice, ...) METALANG99_PRIV_REC_NEXT(4092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4092(choice, ...) METALANG99_PRIV_REC_NEXT(4093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4093(choice, ...) METALANG99_PRIV_REC_NEXT(4094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4094(choice, ...) METALANG99_PRIV_REC_NEXT(4095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4095(choice, ...) METALANG99_PRIV_REC_NEXT(4096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4096(choice, ...) METALANG99_PRIV_REC_NEXT(4097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4097(choice, ...) METALANG99_PRIV_REC_NEXT(4098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4098(choice, ...) METALANG99_PRIV_REC_NEXT(4099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4099(choice, ...) METALANG99_PRIV_REC_NEXT(4100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4100(choice, ...) METALANG99_PRIV_REC_NEXT(4101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4101(choice, ...) METALANG99_PRIV_REC_NEXT(4102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4102(choice, ...) METALANG99_PRIV_REC_NEXT(4103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4103(choice, ...) METALANG99_PRIV_REC_NEXT(4104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4104(choice, ...) METALANG99_PRIV_REC_NEXT(4105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4105(choice, ...) METALANG99_PRIV_REC_NEXT(4106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4106(choice, ...) METALANG99_PRIV_REC_NEXT(4107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4107(choice, ...) METALANG99_PRIV_REC_NEXT(4108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4108(choice, ...) METALANG99_PRIV_REC_NEXT(4109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4109(choice, ...) METALANG99_PRIV_REC_NEXT(4110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4110(choice, ...) METALANG99_PRIV_REC_NEXT(4111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4111(choice, ...) METALANG99_PRIV_REC_NEXT(4112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4112(choice, ...) METALANG99_PRIV_REC_NEXT(4113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4113(choice, ...) METALANG99_PRIV_REC_NEXT(4114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4114(choice, ...) METALANG99_PRIV_REC_NEXT(4115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4115(choice, ...) METALANG99_PRIV_REC_NEXT(4116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4116(choice, ...) METALANG99_PRIV_REC_NEXT(4117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4117(choice, ...) METALANG99_PRIV_REC_NEXT(4118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4118(choice, ...) METALANG99_PRIV_REC_NEXT(4119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4119(choice, ...) METALANG99_PRIV_REC_NEXT(4120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4120(choice, ...) METALANG99_PRIV_REC_NEXT(4121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4121(choice, ...) METALANG99_PRIV_REC_NEXT(4122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4122(choice, ...) METALANG99_PRIV_REC_NEXT(4123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4123(choice, ...) METALANG99_PRIV_REC_NEXT(4124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4124(choice, ...) METALANG99_PRIV_REC_NEXT(4125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4125(choice, ...) METALANG99_PRIV_REC_NEXT(4126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4126(choice, ...) METALANG99_PRIV_REC_NEXT(4127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4127(choice, ...) METALANG99_PRIV_REC_NEXT(4128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4128(choice, ...) METALANG99_PRIV_REC_NEXT(4129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4129(choice, ...) METALANG99_PRIV_REC_NEXT(4130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4130(choice, ...) METALANG99_PRIV_REC_NEXT(4131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4131(choice, ...) METALANG99_PRIV_REC_NEXT(4132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4132(choice, ...) METALANG99_PRIV_REC_NEXT(4133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4133(choice, ...) METALANG99_PRIV_REC_NEXT(4134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4134(choice, ...) METALANG99_PRIV_REC_NEXT(4135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4135(choice, ...) METALANG99_PRIV_REC_NEXT(4136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4136(choice, ...) METALANG99_PRIV_REC_NEXT(4137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4137(choice, ...) METALANG99_PRIV_REC_NEXT(4138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4138(choice, ...) METALANG99_PRIV_REC_NEXT(4139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4139(choice, ...) METALANG99_PRIV_REC_NEXT(4140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4140(choice, ...) METALANG99_PRIV_REC_NEXT(4141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4141(choice, ...) METALANG99_PRIV_REC_NEXT(4142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4142(choice, ...) METALANG99_PRIV_REC_NEXT(4143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4143(choice, ...) METALANG99_PRIV_REC_NEXT(4144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4144(choice, ...) METALANG99_PRIV_REC_NEXT(4145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4145(choice, ...) METALANG99_PRIV_REC_NEXT(4146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4146(choice, ...) METALANG99_PRIV_REC_NEXT(4147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4147(choice, ...) METALANG99_PRIV_REC_NEXT(4148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4148(choice, ...) METALANG99_PRIV_REC_NEXT(4149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4149(choice, ...) METALANG99_PRIV_REC_NEXT(4150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4150(choice, ...) METALANG99_PRIV_REC_NEXT(4151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4151(choice, ...) METALANG99_PRIV_REC_NEXT(4152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4152(choice, ...) METALANG99_PRIV_REC_NEXT(4153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4153(choice, ...) METALANG99_PRIV_REC_NEXT(4154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4154(choice, ...) METALANG99_PRIV_REC_NEXT(4155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4155(choice, ...) METALANG99_PRIV_REC_NEXT(4156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4156(choice, ...) METALANG99_PRIV_REC_NEXT(4157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4157(choice, ...) METALANG99_PRIV_REC_NEXT(4158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4158(choice, ...) METALANG99_PRIV_REC_NEXT(4159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4159(choice, ...) METALANG99_PRIV_REC_NEXT(4160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4160(choice, ...) METALANG99_PRIV_REC_NEXT(4161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4161(choice, ...) METALANG99_PRIV_REC_NEXT(4162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4162(choice, ...) METALANG99_PRIV_REC_NEXT(4163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4163(choice, ...) METALANG99_PRIV_REC_NEXT(4164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4164(choice, ...) METALANG99_PRIV_REC_NEXT(4165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4165(choice, ...) METALANG99_PRIV_REC_NEXT(4166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4166(choice, ...) METALANG99_PRIV_REC_NEXT(4167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4167(choice, ...) METALANG99_PRIV_REC_NEXT(4168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4168(choice, ...) METALANG99_PRIV_REC_NEXT(4169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4169(choice, ...) METALANG99_PRIV_REC_NEXT(4170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4170(choice, ...) METALANG99_PRIV_REC_NEXT(4171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4171(choice, ...) METALANG99_PRIV_REC_NEXT(4172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4172(choice, ...) METALANG99_PRIV_REC_NEXT(4173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4173(choice, ...) METALANG99_PRIV_REC_NEXT(4174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4174(choice, ...) METALANG99_PRIV_REC_NEXT(4175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4175(choice, ...) METALANG99_PRIV_REC_NEXT(4176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4176(choice, ...) METALANG99_PRIV_REC_NEXT(4177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4177(choice, ...) METALANG99_PRIV_REC_NEXT(4178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4178(choice, ...) METALANG99_PRIV_REC_NEXT(4179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4179(choice, ...) METALANG99_PRIV_REC_NEXT(4180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4180(choice, ...) METALANG99_PRIV_REC_NEXT(4181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4181(choice, ...) METALANG99_PRIV_REC_NEXT(4182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4182(choice, ...) METALANG99_PRIV_REC_NEXT(4183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4183(choice, ...) METALANG99_PRIV_REC_NEXT(4184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4184(choice, ...) METALANG99_PRIV_REC_NEXT(4185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4185(choice, ...) METALANG99_PRIV_REC_NEXT(4186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4186(choice, ...) METALANG99_PRIV_REC_NEXT(4187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4187(choice, ...) METALANG99_PRIV_REC_NEXT(4188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4188(choice, ...) METALANG99_PRIV_REC_NEXT(4189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4189(choice, ...) METALANG99_PRIV_REC_NEXT(4190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4190(choice, ...) METALANG99_PRIV_REC_NEXT(4191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4191(choice, ...) METALANG99_PRIV_REC_NEXT(4192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4192(choice, ...) METALANG99_PRIV_REC_NEXT(4193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4193(choice, ...) METALANG99_PRIV_REC_NEXT(4194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4194(choice, ...) METALANG99_PRIV_REC_NEXT(4195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4195(choice, ...) METALANG99_PRIV_REC_NEXT(4196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4196(choice, ...) METALANG99_PRIV_REC_NEXT(4197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4197(choice, ...) METALANG99_PRIV_REC_NEXT(4198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4198(choice, ...) METALANG99_PRIV_REC_NEXT(4199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4199(choice, ...) METALANG99_PRIV_REC_NEXT(4200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4200(choice, ...) METALANG99_PRIV_REC_NEXT(4201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4201(choice, ...) METALANG99_PRIV_REC_NEXT(4202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4202(choice, ...) METALANG99_PRIV_REC_NEXT(4203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4203(choice, ...) METALANG99_PRIV_REC_NEXT(4204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4204(choice, ...) METALANG99_PRIV_REC_NEXT(4205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4205(choice, ...) METALANG99_PRIV_REC_NEXT(4206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4206(choice, ...) METALANG99_PRIV_REC_NEXT(4207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4207(choice, ...) METALANG99_PRIV_REC_NEXT(4208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4208(choice, ...) METALANG99_PRIV_REC_NEXT(4209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4209(choice, ...) METALANG99_PRIV_REC_NEXT(4210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4210(choice, ...) METALANG99_PRIV_REC_NEXT(4211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4211(choice, ...) METALANG99_PRIV_REC_NEXT(4212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4212(choice, ...) METALANG99_PRIV_REC_NEXT(4213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4213(choice, ...) METALANG99_PRIV_REC_NEXT(4214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4214(choice, ...) METALANG99_PRIV_REC_NEXT(4215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4215(choice, ...) METALANG99_PRIV_REC_NEXT(4216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4216(choice, ...) METALANG99_PRIV_REC_NEXT(4217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4217(choice, ...) METALANG99_PRIV_REC_NEXT(4218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4218(choice, ...) METALANG99_PRIV_REC_NEXT(4219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4219(choice, ...) METALANG99_PRIV_REC_NEXT(4220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4220(choice, ...) METALANG99_PRIV_REC_NEXT(4221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4221(choice, ...) METALANG99_PRIV_REC_NEXT(4222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4222(choice, ...) METALANG99_PRIV_REC_NEXT(4223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4223(choice, ...) METALANG99_PRIV_REC_NEXT(4224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4224(choice, ...) METALANG99_PRIV_REC_NEXT(4225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4225(choice, ...) METALANG99_PRIV_REC_NEXT(4226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4226(choice, ...) METALANG99_PRIV_REC_NEXT(4227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4227(choice, ...) METALANG99_PRIV_REC_NEXT(4228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4228(choice, ...) METALANG99_PRIV_REC_NEXT(4229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4229(choice, ...) METALANG99_PRIV_REC_NEXT(4230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4230(choice, ...) METALANG99_PRIV_REC_NEXT(4231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4231(choice, ...) METALANG99_PRIV_REC_NEXT(4232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4232(choice, ...) METALANG99_PRIV_REC_NEXT(4233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4233(choice, ...) METALANG99_PRIV_REC_NEXT(4234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4234(choice, ...) METALANG99_PRIV_REC_NEXT(4235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4235(choice, ...) METALANG99_PRIV_REC_NEXT(4236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4236(choice, ...) METALANG99_PRIV_REC_NEXT(4237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4237(choice, ...) METALANG99_PRIV_REC_NEXT(4238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4238(choice, ...) METALANG99_PRIV_REC_NEXT(4239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4239(choice, ...) METALANG99_PRIV_REC_NEXT(4240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4240(choice, ...) METALANG99_PRIV_REC_NEXT(4241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4241(choice, ...) METALANG99_PRIV_REC_NEXT(4242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4242(choice, ...) METALANG99_PRIV_REC_NEXT(4243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4243(choice, ...) METALANG99_PRIV_REC_NEXT(4244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4244(choice, ...) METALANG99_PRIV_REC_NEXT(4245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4245(choice, ...) METALANG99_PRIV_REC_NEXT(4246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4246(choice, ...) METALANG99_PRIV_REC_NEXT(4247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4247(choice, ...) METALANG99_PRIV_REC_NEXT(4248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4248(choice, ...) METALANG99_PRIV_REC_NEXT(4249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4249(choice, ...) METALANG99_PRIV_REC_NEXT(4250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4250(choice, ...) METALANG99_PRIV_REC_NEXT(4251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4251(choice, ...) METALANG99_PRIV_REC_NEXT(4252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4252(choice, ...) METALANG99_PRIV_REC_NEXT(4253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4253(choice, ...) METALANG99_PRIV_REC_NEXT(4254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4254(choice, ...) METALANG99_PRIV_REC_NEXT(4255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4255(choice, ...) METALANG99_PRIV_REC_NEXT(4256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4256(choice, ...) METALANG99_PRIV_REC_NEXT(4257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4257(choice, ...) METALANG99_PRIV_REC_NEXT(4258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4258(choice, ...) METALANG99_PRIV_REC_NEXT(4259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4259(choice, ...) METALANG99_PRIV_REC_NEXT(4260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4260(choice, ...) METALANG99_PRIV_REC_NEXT(4261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4261(choice, ...) METALANG99_PRIV_REC_NEXT(4262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4262(choice, ...) METALANG99_PRIV_REC_NEXT(4263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4263(choice, ...) METALANG99_PRIV_REC_NEXT(4264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4264(choice, ...) METALANG99_PRIV_REC_NEXT(4265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4265(choice, ...) METALANG99_PRIV_REC_NEXT(4266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4266(choice, ...) METALANG99_PRIV_REC_NEXT(4267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4267(choice, ...) METALANG99_PRIV_REC_NEXT(4268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4268(choice, ...) METALANG99_PRIV_REC_NEXT(4269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4269(choice, ...) METALANG99_PRIV_REC_NEXT(4270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4270(choice, ...) METALANG99_PRIV_REC_NEXT(4271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4271(choice, ...) METALANG99_PRIV_REC_NEXT(4272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4272(choice, ...) METALANG99_PRIV_REC_NEXT(4273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4273(choice, ...) METALANG99_PRIV_REC_NEXT(4274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4274(choice, ...) METALANG99_PRIV_REC_NEXT(4275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4275(choice, ...) METALANG99_PRIV_REC_NEXT(4276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4276(choice, ...) METALANG99_PRIV_REC_NEXT(4277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4277(choice, ...) METALANG99_PRIV_REC_NEXT(4278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4278(choice, ...) METALANG99_PRIV_REC_NEXT(4279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4279(choice, ...) METALANG99_PRIV_REC_NEXT(4280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4280(choice, ...) METALANG99_PRIV_REC_NEXT(4281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4281(choice, ...) METALANG99_PRIV_REC_NEXT(4282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4282(choice, ...) METALANG99_PRIV_REC_NEXT(4283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4283(choice, ...) METALANG99_PRIV_REC_NEXT(4284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4284(choice, ...) METALANG99_PRIV_REC_NEXT(4285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4285(choice, ...) METALANG99_PRIV_REC_NEXT(4286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4286(choice, ...) METALANG99_PRIV_REC_NEXT(4287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4287(choice, ...) METALANG99_PRIV_REC_NEXT(4288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4288(choice, ...) METALANG99_PRIV_REC_NEXT(4289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4289(choice, ...) METALANG99_PRIV_REC_NEXT(4290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4290(choice, ...) METALANG99_PRIV_REC_NEXT(4291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4291(choice, ...) METALANG99_PRIV_REC_NEXT(4292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4292(choice, ...) METALANG99_PRIV_REC_NEXT(4293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4293(choice, ...) METALANG99_PRIV_REC_NEXT(4294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4294(choice, ...) METALANG99_PRIV_REC_NEXT(4295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4295(choice, ...) METALANG99_PRIV_REC_NEXT(4296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4296(choice, ...) METALANG99_PRIV_REC_NEXT(4297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4297(choice, ...) METALANG99_PRIV_REC_NEXT(4298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4298(choice, ...) METALANG99_PRIV_REC_NEXT(4299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4299(choice, ...) METALANG99_PRIV_REC_NEXT(4300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4300(choice, ...) METALANG99_PRIV_REC_NEXT(4301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4301(choice, ...) METALANG99_PRIV_REC_NEXT(4302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4302(choice, ...) METALANG99_PRIV_REC_NEXT(4303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4303(choice, ...) METALANG99_PRIV_REC_NEXT(4304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4304(choice, ...) METALANG99_PRIV_REC_NEXT(4305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4305(choice, ...) METALANG99_PRIV_REC_NEXT(4306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4306(choice, ...) METALANG99_PRIV_REC_NEXT(4307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4307(choice, ...) METALANG99_PRIV_REC_NEXT(4308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4308(choice, ...) METALANG99_PRIV_REC_NEXT(4309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4309(choice, ...) METALANG99_PRIV_REC_NEXT(4310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4310(choice, ...) METALANG99_PRIV_REC_NEXT(4311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4311(choice, ...) METALANG99_PRIV_REC_NEXT(4312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4312(choice, ...) METALANG99_PRIV_REC_NEXT(4313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4313(choice, ...) METALANG99_PRIV_REC_NEXT(4314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4314(choice, ...) METALANG99_PRIV_REC_NEXT(4315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4315(choice, ...) METALANG99_PRIV_REC_NEXT(4316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4316(choice, ...) METALANG99_PRIV_REC_NEXT(4317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4317(choice, ...) METALANG99_PRIV_REC_NEXT(4318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4318(choice, ...) METALANG99_PRIV_REC_NEXT(4319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4319(choice, ...) METALANG99_PRIV_REC_NEXT(4320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4320(choice, ...) METALANG99_PRIV_REC_NEXT(4321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4321(choice, ...) METALANG99_PRIV_REC_NEXT(4322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4322(choice, ...) METALANG99_PRIV_REC_NEXT(4323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4323(choice, ...) METALANG99_PRIV_REC_NEXT(4324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4324(choice, ...) METALANG99_PRIV_REC_NEXT(4325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4325(choice, ...) METALANG99_PRIV_REC_NEXT(4326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4326(choice, ...) METALANG99_PRIV_REC_NEXT(4327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4327(choice, ...) METALANG99_PRIV_REC_NEXT(4328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4328(choice, ...) METALANG99_PRIV_REC_NEXT(4329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4329(choice, ...) METALANG99_PRIV_REC_NEXT(4330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4330(choice, ...) METALANG99_PRIV_REC_NEXT(4331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4331(choice, ...) METALANG99_PRIV_REC_NEXT(4332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4332(choice, ...) METALANG99_PRIV_REC_NEXT(4333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4333(choice, ...) METALANG99_PRIV_REC_NEXT(4334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4334(choice, ...) METALANG99_PRIV_REC_NEXT(4335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4335(choice, ...) METALANG99_PRIV_REC_NEXT(4336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4336(choice, ...) METALANG99_PRIV_REC_NEXT(4337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4337(choice, ...) METALANG99_PRIV_REC_NEXT(4338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4338(choice, ...) METALANG99_PRIV_REC_NEXT(4339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4339(choice, ...) METALANG99_PRIV_REC_NEXT(4340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4340(choice, ...) METALANG99_PRIV_REC_NEXT(4341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4341(choice, ...) METALANG99_PRIV_REC_NEXT(4342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4342(choice, ...) METALANG99_PRIV_REC_NEXT(4343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4343(choice, ...) METALANG99_PRIV_REC_NEXT(4344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4344(choice, ...) METALANG99_PRIV_REC_NEXT(4345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4345(choice, ...) METALANG99_PRIV_REC_NEXT(4346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4346(choice, ...) METALANG99_PRIV_REC_NEXT(4347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4347(choice, ...) METALANG99_PRIV_REC_NEXT(4348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4348(choice, ...) METALANG99_PRIV_REC_NEXT(4349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4349(choice, ...) METALANG99_PRIV_REC_NEXT(4350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4350(choice, ...) METALANG99_PRIV_REC_NEXT(4351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4351(choice, ...) METALANG99_PRIV_REC_NEXT(4352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4352(choice, ...) METALANG99_PRIV_REC_NEXT(4353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4353(choice, ...) METALANG99_PRIV_REC_NEXT(4354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4354(choice, ...) METALANG99_PRIV_REC_NEXT(4355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4355(choice, ...) METALANG99_PRIV_REC_NEXT(4356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4356(choice, ...) METALANG99_PRIV_REC_NEXT(4357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4357(choice, ...) METALANG99_PRIV_REC_NEXT(4358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4358(choice, ...) METALANG99_PRIV_REC_NEXT(4359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4359(choice, ...) METALANG99_PRIV_REC_NEXT(4360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4360(choice, ...) METALANG99_PRIV_REC_NEXT(4361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4361(choice, ...) METALANG99_PRIV_REC_NEXT(4362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4362(choice, ...) METALANG99_PRIV_REC_NEXT(4363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4363(choice, ...) METALANG99_PRIV_REC_NEXT(4364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4364(choice, ...) METALANG99_PRIV_REC_NEXT(4365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4365(choice, ...) METALANG99_PRIV_REC_NEXT(4366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4366(choice, ...) METALANG99_PRIV_REC_NEXT(4367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4367(choice, ...) METALANG99_PRIV_REC_NEXT(4368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4368(choice, ...) METALANG99_PRIV_REC_NEXT(4369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4369(choice, ...) METALANG99_PRIV_REC_NEXT(4370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4370(choice, ...) METALANG99_PRIV_REC_NEXT(4371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4371(choice, ...) METALANG99_PRIV_REC_NEXT(4372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4372(choice, ...) METALANG99_PRIV_REC_NEXT(4373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4373(choice, ...) METALANG99_PRIV_REC_NEXT(4374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4374(choice, ...) METALANG99_PRIV_REC_NEXT(4375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4375(choice, ...) METALANG99_PRIV_REC_NEXT(4376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4376(choice, ...) METALANG99_PRIV_REC_NEXT(4377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4377(choice, ...) METALANG99_PRIV_REC_NEXT(4378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4378(choice, ...) METALANG99_PRIV_REC_NEXT(4379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4379(choice, ...) METALANG99_PRIV_REC_NEXT(4380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4380(choice, ...) METALANG99_PRIV_REC_NEXT(4381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4381(choice, ...) METALANG99_PRIV_REC_NEXT(4382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4382(choice, ...) METALANG99_PRIV_REC_NEXT(4383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4383(choice, ...) METALANG99_PRIV_REC_NEXT(4384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4384(choice, ...) METALANG99_PRIV_REC_NEXT(4385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4385(choice, ...) METALANG99_PRIV_REC_NEXT(4386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4386(choice, ...) METALANG99_PRIV_REC_NEXT(4387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4387(choice, ...) METALANG99_PRIV_REC_NEXT(4388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4388(choice, ...) METALANG99_PRIV_REC_NEXT(4389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4389(choice, ...) METALANG99_PRIV_REC_NEXT(4390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4390(choice, ...) METALANG99_PRIV_REC_NEXT(4391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4391(choice, ...) METALANG99_PRIV_REC_NEXT(4392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4392(choice, ...) METALANG99_PRIV_REC_NEXT(4393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4393(choice, ...) METALANG99_PRIV_REC_NEXT(4394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4394(choice, ...) METALANG99_PRIV_REC_NEXT(4395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4395(choice, ...) METALANG99_PRIV_REC_NEXT(4396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4396(choice, ...) METALANG99_PRIV_REC_NEXT(4397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4397(choice, ...) METALANG99_PRIV_REC_NEXT(4398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4398(choice, ...) METALANG99_PRIV_REC_NEXT(4399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4399(choice, ...) METALANG99_PRIV_REC_NEXT(4400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4400(choice, ...) METALANG99_PRIV_REC_NEXT(4401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4401(choice, ...) METALANG99_PRIV_REC_NEXT(4402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4402(choice, ...) METALANG99_PRIV_REC_NEXT(4403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4403(choice, ...) METALANG99_PRIV_REC_NEXT(4404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4404(choice, ...) METALANG99_PRIV_REC_NEXT(4405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4405(choice, ...) METALANG99_PRIV_REC_NEXT(4406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4406(choice, ...) METALANG99_PRIV_REC_NEXT(4407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4407(choice, ...) METALANG99_PRIV_REC_NEXT(4408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4408(choice, ...) METALANG99_PRIV_REC_NEXT(4409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4409(choice, ...) METALANG99_PRIV_REC_NEXT(4410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4410(choice, ...) METALANG99_PRIV_REC_NEXT(4411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4411(choice, ...) METALANG99_PRIV_REC_NEXT(4412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4412(choice, ...) METALANG99_PRIV_REC_NEXT(4413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4413(choice, ...) METALANG99_PRIV_REC_NEXT(4414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4414(choice, ...) METALANG99_PRIV_REC_NEXT(4415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4415(choice, ...) METALANG99_PRIV_REC_NEXT(4416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4416(choice, ...) METALANG99_PRIV_REC_NEXT(4417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4417(choice, ...) METALANG99_PRIV_REC_NEXT(4418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4418(choice, ...) METALANG99_PRIV_REC_NEXT(4419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4419(choice, ...) METALANG99_PRIV_REC_NEXT(4420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4420(choice, ...) METALANG99_PRIV_REC_NEXT(4421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4421(choice, ...) METALANG99_PRIV_REC_NEXT(4422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4422(choice, ...) METALANG99_PRIV_REC_NEXT(4423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4423(choice, ...) METALANG99_PRIV_REC_NEXT(4424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4424(choice, ...) METALANG99_PRIV_REC_NEXT(4425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4425(choice, ...) METALANG99_PRIV_REC_NEXT(4426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4426(choice, ...) METALANG99_PRIV_REC_NEXT(4427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4427(choice, ...) METALANG99_PRIV_REC_NEXT(4428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4428(choice, ...) METALANG99_PRIV_REC_NEXT(4429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4429(choice, ...) METALANG99_PRIV_REC_NEXT(4430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4430(choice, ...) METALANG99_PRIV_REC_NEXT(4431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4431(choice, ...) METALANG99_PRIV_REC_NEXT(4432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4432(choice, ...) METALANG99_PRIV_REC_NEXT(4433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4433(choice, ...) METALANG99_PRIV_REC_NEXT(4434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4434(choice, ...) METALANG99_PRIV_REC_NEXT(4435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4435(choice, ...) METALANG99_PRIV_REC_NEXT(4436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4436(choice, ...) METALANG99_PRIV_REC_NEXT(4437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4437(choice, ...) METALANG99_PRIV_REC_NEXT(4438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4438(choice, ...) METALANG99_PRIV_REC_NEXT(4439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4439(choice, ...) METALANG99_PRIV_REC_NEXT(4440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4440(choice, ...) METALANG99_PRIV_REC_NEXT(4441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4441(choice, ...) METALANG99_PRIV_REC_NEXT(4442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4442(choice, ...) METALANG99_PRIV_REC_NEXT(4443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4443(choice, ...) METALANG99_PRIV_REC_NEXT(4444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4444(choice, ...) METALANG99_PRIV_REC_NEXT(4445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4445(choice, ...) METALANG99_PRIV_REC_NEXT(4446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4446(choice, ...) METALANG99_PRIV_REC_NEXT(4447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4447(choice, ...) METALANG99_PRIV_REC_NEXT(4448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4448(choice, ...) METALANG99_PRIV_REC_NEXT(4449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4449(choice, ...) METALANG99_PRIV_REC_NEXT(4450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4450(choice, ...) METALANG99_PRIV_REC_NEXT(4451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4451(choice, ...) METALANG99_PRIV_REC_NEXT(4452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4452(choice, ...) METALANG99_PRIV_REC_NEXT(4453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4453(choice, ...) METALANG99_PRIV_REC_NEXT(4454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4454(choice, ...) METALANG99_PRIV_REC_NEXT(4455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4455(choice, ...) METALANG99_PRIV_REC_NEXT(4456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4456(choice, ...) METALANG99_PRIV_REC_NEXT(4457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4457(choice, ...) METALANG99_PRIV_REC_NEXT(4458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4458(choice, ...) METALANG99_PRIV_REC_NEXT(4459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4459(choice, ...) METALANG99_PRIV_REC_NEXT(4460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4460(choice, ...) METALANG99_PRIV_REC_NEXT(4461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4461(choice, ...) METALANG99_PRIV_REC_NEXT(4462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4462(choice, ...) METALANG99_PRIV_REC_NEXT(4463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4463(choice, ...) METALANG99_PRIV_REC_NEXT(4464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4464(choice, ...) METALANG99_PRIV_REC_NEXT(4465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4465(choice, ...) METALANG99_PRIV_REC_NEXT(4466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4466(choice, ...) METALANG99_PRIV_REC_NEXT(4467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4467(choice, ...) METALANG99_PRIV_REC_NEXT(4468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4468(choice, ...) METALANG99_PRIV_REC_NEXT(4469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4469(choice, ...) METALANG99_PRIV_REC_NEXT(4470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4470(choice, ...) METALANG99_PRIV_REC_NEXT(4471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4471(choice, ...) METALANG99_PRIV_REC_NEXT(4472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4472(choice, ...) METALANG99_PRIV_REC_NEXT(4473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4473(choice, ...) METALANG99_PRIV_REC_NEXT(4474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4474(choice, ...) METALANG99_PRIV_REC_NEXT(4475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4475(choice, ...) METALANG99_PRIV_REC_NEXT(4476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4476(choice, ...) METALANG99_PRIV_REC_NEXT(4477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4477(choice, ...) METALANG99_PRIV_REC_NEXT(4478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4478(choice, ...) METALANG99_PRIV_REC_NEXT(4479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4479(choice, ...) METALANG99_PRIV_REC_NEXT(4480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4480(choice, ...) METALANG99_PRIV_REC_NEXT(4481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4481(choice, ...) METALANG99_PRIV_REC_NEXT(4482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4482(choice, ...) METALANG99_PRIV_REC_NEXT(4483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4483(choice, ...) METALANG99_PRIV_REC_NEXT(4484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4484(choice, ...) METALANG99_PRIV_REC_NEXT(4485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4485(choice, ...) METALANG99_PRIV_REC_NEXT(4486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4486(choice, ...) METALANG99_PRIV_REC_NEXT(4487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4487(choice, ...) METALANG99_PRIV_REC_NEXT(4488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4488(choice, ...) METALANG99_PRIV_REC_NEXT(4489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4489(choice, ...) METALANG99_PRIV_REC_NEXT(4490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4490(choice, ...) METALANG99_PRIV_REC_NEXT(4491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4491(choice, ...) METALANG99_PRIV_REC_NEXT(4492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4492(choice, ...) METALANG99_PRIV_REC_NEXT(4493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4493(choice, ...) METALANG99_PRIV_REC_NEXT(4494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4494(choice, ...) METALANG99_PRIV_REC_NEXT(4495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4495(choice, ...) METALANG99_PRIV_REC_NEXT(4496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4496(choice, ...) METALANG99_PRIV_REC_NEXT(4497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4497(choice, ...) METALANG99_PRIV_REC_NEXT(4498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4498(choice, ...) METALANG99_PRIV_REC_NEXT(4499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4499(choice, ...) METALANG99_PRIV_REC_NEXT(4500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4500(choice, ...) METALANG99_PRIV_REC_NEXT(4501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4501(choice, ...) METALANG99_PRIV_REC_NEXT(4502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4502(choice, ...) METALANG99_PRIV_REC_NEXT(4503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4503(choice, ...) METALANG99_PRIV_REC_NEXT(4504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4504(choice, ...) METALANG99_PRIV_REC_NEXT(4505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4505(choice, ...) METALANG99_PRIV_REC_NEXT(4506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4506(choice, ...) METALANG99_PRIV_REC_NEXT(4507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4507(choice, ...) METALANG99_PRIV_REC_NEXT(4508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4508(choice, ...) METALANG99_PRIV_REC_NEXT(4509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4509(choice, ...) METALANG99_PRIV_REC_NEXT(4510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4510(choice, ...) METALANG99_PRIV_REC_NEXT(4511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4511(choice, ...) METALANG99_PRIV_REC_NEXT(4512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4512(choice, ...) METALANG99_PRIV_REC_NEXT(4513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4513(choice, ...) METALANG99_PRIV_REC_NEXT(4514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4514(choice, ...) METALANG99_PRIV_REC_NEXT(4515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4515(choice, ...) METALANG99_PRIV_REC_NEXT(4516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4516(choice, ...) METALANG99_PRIV_REC_NEXT(4517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4517(choice, ...) METALANG99_PRIV_REC_NEXT(4518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4518(choice, ...) METALANG99_PRIV_REC_NEXT(4519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4519(choice, ...) METALANG99_PRIV_REC_NEXT(4520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4520(choice, ...) METALANG99_PRIV_REC_NEXT(4521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4521(choice, ...) METALANG99_PRIV_REC_NEXT(4522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4522(choice, ...) METALANG99_PRIV_REC_NEXT(4523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4523(choice, ...) METALANG99_PRIV_REC_NEXT(4524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4524(choice, ...) METALANG99_PRIV_REC_NEXT(4525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4525(choice, ...) METALANG99_PRIV_REC_NEXT(4526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4526(choice, ...) METALANG99_PRIV_REC_NEXT(4527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4527(choice, ...) METALANG99_PRIV_REC_NEXT(4528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4528(choice, ...) METALANG99_PRIV_REC_NEXT(4529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4529(choice, ...) METALANG99_PRIV_REC_NEXT(4530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4530(choice, ...) METALANG99_PRIV_REC_NEXT(4531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4531(choice, ...) METALANG99_PRIV_REC_NEXT(4532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4532(choice, ...) METALANG99_PRIV_REC_NEXT(4533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4533(choice, ...) METALANG99_PRIV_REC_NEXT(4534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4534(choice, ...) METALANG99_PRIV_REC_NEXT(4535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4535(choice, ...) METALANG99_PRIV_REC_NEXT(4536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4536(choice, ...) METALANG99_PRIV_REC_NEXT(4537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4537(choice, ...) METALANG99_PRIV_REC_NEXT(4538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4538(choice, ...) METALANG99_PRIV_REC_NEXT(4539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4539(choice, ...) METALANG99_PRIV_REC_NEXT(4540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4540(choice, ...) METALANG99_PRIV_REC_NEXT(4541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4541(choice, ...) METALANG99_PRIV_REC_NEXT(4542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4542(choice, ...) METALANG99_PRIV_REC_NEXT(4543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4543(choice, ...) METALANG99_PRIV_REC_NEXT(4544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4544(choice, ...) METALANG99_PRIV_REC_NEXT(4545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4545(choice, ...) METALANG99_PRIV_REC_NEXT(4546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4546(choice, ...) METALANG99_PRIV_REC_NEXT(4547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4547(choice, ...) METALANG99_PRIV_REC_NEXT(4548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4548(choice, ...) METALANG99_PRIV_REC_NEXT(4549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4549(choice, ...) METALANG99_PRIV_REC_NEXT(4550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4550(choice, ...) METALANG99_PRIV_REC_NEXT(4551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4551(choice, ...) METALANG99_PRIV_REC_NEXT(4552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4552(choice, ...) METALANG99_PRIV_REC_NEXT(4553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4553(choice, ...) METALANG99_PRIV_REC_NEXT(4554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4554(choice, ...) METALANG99_PRIV_REC_NEXT(4555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4555(choice, ...) METALANG99_PRIV_REC_NEXT(4556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4556(choice, ...) METALANG99_PRIV_REC_NEXT(4557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4557(choice, ...) METALANG99_PRIV_REC_NEXT(4558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4558(choice, ...) METALANG99_PRIV_REC_NEXT(4559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4559(choice, ...) METALANG99_PRIV_REC_NEXT(4560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4560(choice, ...) METALANG99_PRIV_REC_NEXT(4561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4561(choice, ...) METALANG99_PRIV_REC_NEXT(4562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4562(choice, ...) METALANG99_PRIV_REC_NEXT(4563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4563(choice, ...) METALANG99_PRIV_REC_NEXT(4564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4564(choice, ...) METALANG99_PRIV_REC_NEXT(4565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4565(choice, ...) METALANG99_PRIV_REC_NEXT(4566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4566(choice, ...) METALANG99_PRIV_REC_NEXT(4567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4567(choice, ...) METALANG99_PRIV_REC_NEXT(4568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4568(choice, ...) METALANG99_PRIV_REC_NEXT(4569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4569(choice, ...) METALANG99_PRIV_REC_NEXT(4570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4570(choice, ...) METALANG99_PRIV_REC_NEXT(4571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4571(choice, ...) METALANG99_PRIV_REC_NEXT(4572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4572(choice, ...) METALANG99_PRIV_REC_NEXT(4573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4573(choice, ...) METALANG99_PRIV_REC_NEXT(4574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4574(choice, ...) METALANG99_PRIV_REC_NEXT(4575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4575(choice, ...) METALANG99_PRIV_REC_NEXT(4576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4576(choice, ...) METALANG99_PRIV_REC_NEXT(4577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4577(choice, ...) METALANG99_PRIV_REC_NEXT(4578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4578(choice, ...) METALANG99_PRIV_REC_NEXT(4579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4579(choice, ...) METALANG99_PRIV_REC_NEXT(4580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4580(choice, ...) METALANG99_PRIV_REC_NEXT(4581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4581(choice, ...) METALANG99_PRIV_REC_NEXT(4582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4582(choice, ...) METALANG99_PRIV_REC_NEXT(4583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4583(choice, ...) METALANG99_PRIV_REC_NEXT(4584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4584(choice, ...) METALANG99_PRIV_REC_NEXT(4585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4585(choice, ...) METALANG99_PRIV_REC_NEXT(4586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4586(choice, ...) METALANG99_PRIV_REC_NEXT(4587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4587(choice, ...) METALANG99_PRIV_REC_NEXT(4588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4588(choice, ...) METALANG99_PRIV_REC_NEXT(4589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4589(choice, ...) METALANG99_PRIV_REC_NEXT(4590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4590(choice, ...) METALANG99_PRIV_REC_NEXT(4591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4591(choice, ...) METALANG99_PRIV_REC_NEXT(4592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4592(choice, ...) METALANG99_PRIV_REC_NEXT(4593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4593(choice, ...) METALANG99_PRIV_REC_NEXT(4594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4594(choice, ...) METALANG99_PRIV_REC_NEXT(4595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4595(choice, ...) METALANG99_PRIV_REC_NEXT(4596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4596(choice, ...) METALANG99_PRIV_REC_NEXT(4597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4597(choice, ...) METALANG99_PRIV_REC_NEXT(4598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4598(choice, ...) METALANG99_PRIV_REC_NEXT(4599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4599(choice, ...) METALANG99_PRIV_REC_NEXT(4600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4600(choice, ...) METALANG99_PRIV_REC_NEXT(4601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4601(choice, ...) METALANG99_PRIV_REC_NEXT(4602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4602(choice, ...) METALANG99_PRIV_REC_NEXT(4603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4603(choice, ...) METALANG99_PRIV_REC_NEXT(4604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4604(choice, ...) METALANG99_PRIV_REC_NEXT(4605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4605(choice, ...) METALANG99_PRIV_REC_NEXT(4606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4606(choice, ...) METALANG99_PRIV_REC_NEXT(4607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4607(choice, ...) METALANG99_PRIV_REC_NEXT(4608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4608(choice, ...) METALANG99_PRIV_REC_NEXT(4609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4609(choice, ...) METALANG99_PRIV_REC_NEXT(4610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4610(choice, ...) METALANG99_PRIV_REC_NEXT(4611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4611(choice, ...) METALANG99_PRIV_REC_NEXT(4612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4612(choice, ...) METALANG99_PRIV_REC_NEXT(4613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4613(choice, ...) METALANG99_PRIV_REC_NEXT(4614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4614(choice, ...) METALANG99_PRIV_REC_NEXT(4615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4615(choice, ...) METALANG99_PRIV_REC_NEXT(4616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4616(choice, ...) METALANG99_PRIV_REC_NEXT(4617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4617(choice, ...) METALANG99_PRIV_REC_NEXT(4618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4618(choice, ...) METALANG99_PRIV_REC_NEXT(4619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4619(choice, ...) METALANG99_PRIV_REC_NEXT(4620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4620(choice, ...) METALANG99_PRIV_REC_NEXT(4621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4621(choice, ...) METALANG99_PRIV_REC_NEXT(4622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4622(choice, ...) METALANG99_PRIV_REC_NEXT(4623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4623(choice, ...) METALANG99_PRIV_REC_NEXT(4624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4624(choice, ...) METALANG99_PRIV_REC_NEXT(4625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4625(choice, ...) METALANG99_PRIV_REC_NEXT(4626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4626(choice, ...) METALANG99_PRIV_REC_NEXT(4627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4627(choice, ...) METALANG99_PRIV_REC_NEXT(4628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4628(choice, ...) METALANG99_PRIV_REC_NEXT(4629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4629(choice, ...) METALANG99_PRIV_REC_NEXT(4630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4630(choice, ...) METALANG99_PRIV_REC_NEXT(4631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4631(choice, ...) METALANG99_PRIV_REC_NEXT(4632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4632(choice, ...) METALANG99_PRIV_REC_NEXT(4633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4633(choice, ...) METALANG99_PRIV_REC_NEXT(4634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4634(choice, ...) METALANG99_PRIV_REC_NEXT(4635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4635(choice, ...) METALANG99_PRIV_REC_NEXT(4636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4636(choice, ...) METALANG99_PRIV_REC_NEXT(4637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4637(choice, ...) METALANG99_PRIV_REC_NEXT(4638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4638(choice, ...) METALANG99_PRIV_REC_NEXT(4639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4639(choice, ...) METALANG99_PRIV_REC_NEXT(4640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4640(choice, ...) METALANG99_PRIV_REC_NEXT(4641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4641(choice, ...) METALANG99_PRIV_REC_NEXT(4642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4642(choice, ...) METALANG99_PRIV_REC_NEXT(4643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4643(choice, ...) METALANG99_PRIV_REC_NEXT(4644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4644(choice, ...) METALANG99_PRIV_REC_NEXT(4645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4645(choice, ...) METALANG99_PRIV_REC_NEXT(4646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4646(choice, ...) METALANG99_PRIV_REC_NEXT(4647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4647(choice, ...) METALANG99_PRIV_REC_NEXT(4648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4648(choice, ...) METALANG99_PRIV_REC_NEXT(4649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4649(choice, ...) METALANG99_PRIV_REC_NEXT(4650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4650(choice, ...) METALANG99_PRIV_REC_NEXT(4651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4651(choice, ...) METALANG99_PRIV_REC_NEXT(4652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4652(choice, ...) METALANG99_PRIV_REC_NEXT(4653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4653(choice, ...) METALANG99_PRIV_REC_NEXT(4654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4654(choice, ...) METALANG99_PRIV_REC_NEXT(4655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4655(choice, ...) METALANG99_PRIV_REC_NEXT(4656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4656(choice, ...) METALANG99_PRIV_REC_NEXT(4657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4657(choice, ...) METALANG99_PRIV_REC_NEXT(4658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4658(choice, ...) METALANG99_PRIV_REC_NEXT(4659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4659(choice, ...) METALANG99_PRIV_REC_NEXT(4660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4660(choice, ...) METALANG99_PRIV_REC_NEXT(4661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4661(choice, ...) METALANG99_PRIV_REC_NEXT(4662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4662(choice, ...) METALANG99_PRIV_REC_NEXT(4663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4663(choice, ...) METALANG99_PRIV_REC_NEXT(4664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4664(choice, ...) METALANG99_PRIV_REC_NEXT(4665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4665(choice, ...) METALANG99_PRIV_REC_NEXT(4666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4666(choice, ...) METALANG99_PRIV_REC_NEXT(4667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4667(choice, ...) METALANG99_PRIV_REC_NEXT(4668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4668(choice, ...) METALANG99_PRIV_REC_NEXT(4669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4669(choice, ...) METALANG99_PRIV_REC_NEXT(4670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4670(choice, ...) METALANG99_PRIV_REC_NEXT(4671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4671(choice, ...) METALANG99_PRIV_REC_NEXT(4672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4672(choice, ...) METALANG99_PRIV_REC_NEXT(4673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4673(choice, ...) METALANG99_PRIV_REC_NEXT(4674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4674(choice, ...) METALANG99_PRIV_REC_NEXT(4675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4675(choice, ...) METALANG99_PRIV_REC_NEXT(4676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4676(choice, ...) METALANG99_PRIV_REC_NEXT(4677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4677(choice, ...) METALANG99_PRIV_REC_NEXT(4678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4678(choice, ...) METALANG99_PRIV_REC_NEXT(4679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4679(choice, ...) METALANG99_PRIV_REC_NEXT(4680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4680(choice, ...) METALANG99_PRIV_REC_NEXT(4681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4681(choice, ...) METALANG99_PRIV_REC_NEXT(4682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4682(choice, ...) METALANG99_PRIV_REC_NEXT(4683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4683(choice, ...) METALANG99_PRIV_REC_NEXT(4684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4684(choice, ...) METALANG99_PRIV_REC_NEXT(4685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4685(choice, ...) METALANG99_PRIV_REC_NEXT(4686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4686(choice, ...) METALANG99_PRIV_REC_NEXT(4687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4687(choice, ...) METALANG99_PRIV_REC_NEXT(4688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4688(choice, ...) METALANG99_PRIV_REC_NEXT(4689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4689(choice, ...) METALANG99_PRIV_REC_NEXT(4690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4690(choice, ...) METALANG99_PRIV_REC_NEXT(4691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4691(choice, ...) METALANG99_PRIV_REC_NEXT(4692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4692(choice, ...) METALANG99_PRIV_REC_NEXT(4693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4693(choice, ...) METALANG99_PRIV_REC_NEXT(4694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4694(choice, ...) METALANG99_PRIV_REC_NEXT(4695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4695(choice, ...) METALANG99_PRIV_REC_NEXT(4696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4696(choice, ...) METALANG99_PRIV_REC_NEXT(4697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4697(choice, ...) METALANG99_PRIV_REC_NEXT(4698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4698(choice, ...) METALANG99_PRIV_REC_NEXT(4699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4699(choice, ...) METALANG99_PRIV_REC_NEXT(4700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4700(choice, ...) METALANG99_PRIV_REC_NEXT(4701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4701(choice, ...) METALANG99_PRIV_REC_NEXT(4702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4702(choice, ...) METALANG99_PRIV_REC_NEXT(4703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4703(choice, ...) METALANG99_PRIV_REC_NEXT(4704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4704(choice, ...) METALANG99_PRIV_REC_NEXT(4705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4705(choice, ...) METALANG99_PRIV_REC_NEXT(4706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4706(choice, ...) METALANG99_PRIV_REC_NEXT(4707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4707(choice, ...) METALANG99_PRIV_REC_NEXT(4708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4708(choice, ...) METALANG99_PRIV_REC_NEXT(4709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4709(choice, ...) METALANG99_PRIV_REC_NEXT(4710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4710(choice, ...) METALANG99_PRIV_REC_NEXT(4711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4711(choice, ...) METALANG99_PRIV_REC_NEXT(4712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4712(choice, ...) METALANG99_PRIV_REC_NEXT(4713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4713(choice, ...) METALANG99_PRIV_REC_NEXT(4714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4714(choice, ...) METALANG99_PRIV_REC_NEXT(4715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4715(choice, ...) METALANG99_PRIV_REC_NEXT(4716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4716(choice, ...) METALANG99_PRIV_REC_NEXT(4717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4717(choice, ...) METALANG99_PRIV_REC_NEXT(4718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4718(choice, ...) METALANG99_PRIV_REC_NEXT(4719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4719(choice, ...) METALANG99_PRIV_REC_NEXT(4720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4720(choice, ...) METALANG99_PRIV_REC_NEXT(4721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4721(choice, ...) METALANG99_PRIV_REC_NEXT(4722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4722(choice, ...) METALANG99_PRIV_REC_NEXT(4723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4723(choice, ...) METALANG99_PRIV_REC_NEXT(4724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4724(choice, ...) METALANG99_PRIV_REC_NEXT(4725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4725(choice, ...) METALANG99_PRIV_REC_NEXT(4726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4726(choice, ...) METALANG99_PRIV_REC_NEXT(4727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4727(choice, ...) METALANG99_PRIV_REC_NEXT(4728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4728(choice, ...) METALANG99_PRIV_REC_NEXT(4729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4729(choice, ...) METALANG99_PRIV_REC_NEXT(4730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4730(choice, ...) METALANG99_PRIV_REC_NEXT(4731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4731(choice, ...) METALANG99_PRIV_REC_NEXT(4732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4732(choice, ...) METALANG99_PRIV_REC_NEXT(4733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4733(choice, ...) METALANG99_PRIV_REC_NEXT(4734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4734(choice, ...) METALANG99_PRIV_REC_NEXT(4735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4735(choice, ...) METALANG99_PRIV_REC_NEXT(4736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4736(choice, ...) METALANG99_PRIV_REC_NEXT(4737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4737(choice, ...) METALANG99_PRIV_REC_NEXT(4738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4738(choice, ...) METALANG99_PRIV_REC_NEXT(4739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4739(choice, ...) METALANG99_PRIV_REC_NEXT(4740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4740(choice, ...) METALANG99_PRIV_REC_NEXT(4741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4741(choice, ...) METALANG99_PRIV_REC_NEXT(4742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4742(choice, ...) METALANG99_PRIV_REC_NEXT(4743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4743(choice, ...) METALANG99_PRIV_REC_NEXT(4744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4744(choice, ...) METALANG99_PRIV_REC_NEXT(4745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4745(choice, ...) METALANG99_PRIV_REC_NEXT(4746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4746(choice, ...) METALANG99_PRIV_REC_NEXT(4747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4747(choice, ...) METALANG99_PRIV_REC_NEXT(4748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4748(choice, ...) METALANG99_PRIV_REC_NEXT(4749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4749(choice, ...) METALANG99_PRIV_REC_NEXT(4750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4750(choice, ...) METALANG99_PRIV_REC_NEXT(4751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4751(choice, ...) METALANG99_PRIV_REC_NEXT(4752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4752(choice, ...) METALANG99_PRIV_REC_NEXT(4753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4753(choice, ...) METALANG99_PRIV_REC_NEXT(4754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4754(choice, ...) METALANG99_PRIV_REC_NEXT(4755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4755(choice, ...) METALANG99_PRIV_REC_NEXT(4756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4756(choice, ...) METALANG99_PRIV_REC_NEXT(4757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4757(choice, ...) METALANG99_PRIV_REC_NEXT(4758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4758(choice, ...) METALANG99_PRIV_REC_NEXT(4759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4759(choice, ...) METALANG99_PRIV_REC_NEXT(4760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4760(choice, ...) METALANG99_PRIV_REC_NEXT(4761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4761(choice, ...) METALANG99_PRIV_REC_NEXT(4762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4762(choice, ...) METALANG99_PRIV_REC_NEXT(4763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4763(choice, ...) METALANG99_PRIV_REC_NEXT(4764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4764(choice, ...) METALANG99_PRIV_REC_NEXT(4765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4765(choice, ...) METALANG99_PRIV_REC_NEXT(4766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4766(choice, ...) METALANG99_PRIV_REC_NEXT(4767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4767(choice, ...) METALANG99_PRIV_REC_NEXT(4768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4768(choice, ...) METALANG99_PRIV_REC_NEXT(4769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4769(choice, ...) METALANG99_PRIV_REC_NEXT(4770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4770(choice, ...) METALANG99_PRIV_REC_NEXT(4771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4771(choice, ...) METALANG99_PRIV_REC_NEXT(4772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4772(choice, ...) METALANG99_PRIV_REC_NEXT(4773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4773(choice, ...) METALANG99_PRIV_REC_NEXT(4774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4774(choice, ...) METALANG99_PRIV_REC_NEXT(4775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4775(choice, ...) METALANG99_PRIV_REC_NEXT(4776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4776(choice, ...) METALANG99_PRIV_REC_NEXT(4777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4777(choice, ...) METALANG99_PRIV_REC_NEXT(4778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4778(choice, ...) METALANG99_PRIV_REC_NEXT(4779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4779(choice, ...) METALANG99_PRIV_REC_NEXT(4780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4780(choice, ...) METALANG99_PRIV_REC_NEXT(4781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4781(choice, ...) METALANG99_PRIV_REC_NEXT(4782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4782(choice, ...) METALANG99_PRIV_REC_NEXT(4783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4783(choice, ...) METALANG99_PRIV_REC_NEXT(4784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4784(choice, ...) METALANG99_PRIV_REC_NEXT(4785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4785(choice, ...) METALANG99_PRIV_REC_NEXT(4786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4786(choice, ...) METALANG99_PRIV_REC_NEXT(4787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4787(choice, ...) METALANG99_PRIV_REC_NEXT(4788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4788(choice, ...) METALANG99_PRIV_REC_NEXT(4789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4789(choice, ...) METALANG99_PRIV_REC_NEXT(4790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4790(choice, ...) METALANG99_PRIV_REC_NEXT(4791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4791(choice, ...) METALANG99_PRIV_REC_NEXT(4792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4792(choice, ...) METALANG99_PRIV_REC_NEXT(4793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4793(choice, ...) METALANG99_PRIV_REC_NEXT(4794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4794(choice, ...) METALANG99_PRIV_REC_NEXT(4795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4795(choice, ...) METALANG99_PRIV_REC_NEXT(4796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4796(choice, ...) METALANG99_PRIV_REC_NEXT(4797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4797(choice, ...) METALANG99_PRIV_REC_NEXT(4798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4798(choice, ...) METALANG99_PRIV_REC_NEXT(4799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4799(choice, ...) METALANG99_PRIV_REC_NEXT(4800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4800(choice, ...) METALANG99_PRIV_REC_NEXT(4801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4801(choice, ...) METALANG99_PRIV_REC_NEXT(4802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4802(choice, ...) METALANG99_PRIV_REC_NEXT(4803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4803(choice, ...) METALANG99_PRIV_REC_NEXT(4804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4804(choice, ...) METALANG99_PRIV_REC_NEXT(4805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4805(choice, ...) METALANG99_PRIV_REC_NEXT(4806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4806(choice, ...) METALANG99_PRIV_REC_NEXT(4807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4807(choice, ...) METALANG99_PRIV_REC_NEXT(4808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4808(choice, ...) METALANG99_PRIV_REC_NEXT(4809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4809(choice, ...) METALANG99_PRIV_REC_NEXT(4810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4810(choice, ...) METALANG99_PRIV_REC_NEXT(4811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4811(choice, ...) METALANG99_PRIV_REC_NEXT(4812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4812(choice, ...) METALANG99_PRIV_REC_NEXT(4813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4813(choice, ...) METALANG99_PRIV_REC_NEXT(4814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4814(choice, ...) METALANG99_PRIV_REC_NEXT(4815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4815(choice, ...) METALANG99_PRIV_REC_NEXT(4816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4816(choice, ...) METALANG99_PRIV_REC_NEXT(4817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4817(choice, ...) METALANG99_PRIV_REC_NEXT(4818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4818(choice, ...) METALANG99_PRIV_REC_NEXT(4819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4819(choice, ...) METALANG99_PRIV_REC_NEXT(4820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4820(choice, ...) METALANG99_PRIV_REC_NEXT(4821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4821(choice, ...) METALANG99_PRIV_REC_NEXT(4822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4822(choice, ...) METALANG99_PRIV_REC_NEXT(4823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4823(choice, ...) METALANG99_PRIV_REC_NEXT(4824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4824(choice, ...) METALANG99_PRIV_REC_NEXT(4825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4825(choice, ...) METALANG99_PRIV_REC_NEXT(4826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4826(choice, ...) METALANG99_PRIV_REC_NEXT(4827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4827(choice, ...) METALANG99_PRIV_REC_NEXT(4828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4828(choice, ...) METALANG99_PRIV_REC_NEXT(4829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4829(choice, ...) METALANG99_PRIV_REC_NEXT(4830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4830(choice, ...) METALANG99_PRIV_REC_NEXT(4831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4831(choice, ...) METALANG99_PRIV_REC_NEXT(4832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4832(choice, ...) METALANG99_PRIV_REC_NEXT(4833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4833(choice, ...) METALANG99_PRIV_REC_NEXT(4834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4834(choice, ...) METALANG99_PRIV_REC_NEXT(4835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4835(choice, ...) METALANG99_PRIV_REC_NEXT(4836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4836(choice, ...) METALANG99_PRIV_REC_NEXT(4837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4837(choice, ...) METALANG99_PRIV_REC_NEXT(4838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4838(choice, ...) METALANG99_PRIV_REC_NEXT(4839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4839(choice, ...) METALANG99_PRIV_REC_NEXT(4840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4840(choice, ...) METALANG99_PRIV_REC_NEXT(4841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4841(choice, ...) METALANG99_PRIV_REC_NEXT(4842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4842(choice, ...) METALANG99_PRIV_REC_NEXT(4843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4843(choice, ...) METALANG99_PRIV_REC_NEXT(4844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4844(choice, ...) METALANG99_PRIV_REC_NEXT(4845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4845(choice, ...) METALANG99_PRIV_REC_NEXT(4846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4846(choice, ...) METALANG99_PRIV_REC_NEXT(4847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4847(choice, ...) METALANG99_PRIV_REC_NEXT(4848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4848(choice, ...) METALANG99_PRIV_REC_NEXT(4849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4849(choice, ...) METALANG99_PRIV_REC_NEXT(4850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4850(choice, ...) METALANG99_PRIV_REC_NEXT(4851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4851(choice, ...) METALANG99_PRIV_REC_NEXT(4852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4852(choice, ...) METALANG99_PRIV_REC_NEXT(4853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4853(choice, ...) METALANG99_PRIV_REC_NEXT(4854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4854(choice, ...) METALANG99_PRIV_REC_NEXT(4855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4855(choice, ...) METALANG99_PRIV_REC_NEXT(4856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4856(choice, ...) METALANG99_PRIV_REC_NEXT(4857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4857(choice, ...) METALANG99_PRIV_REC_NEXT(4858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4858(choice, ...) METALANG99_PRIV_REC_NEXT(4859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4859(choice, ...) METALANG99_PRIV_REC_NEXT(4860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4860(choice, ...) METALANG99_PRIV_REC_NEXT(4861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4861(choice, ...) METALANG99_PRIV_REC_NEXT(4862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4862(choice, ...) METALANG99_PRIV_REC_NEXT(4863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4863(choice, ...) METALANG99_PRIV_REC_NEXT(4864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4864(choice, ...) METALANG99_PRIV_REC_NEXT(4865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4865(choice, ...) METALANG99_PRIV_REC_NEXT(4866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4866(choice, ...) METALANG99_PRIV_REC_NEXT(4867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4867(choice, ...) METALANG99_PRIV_REC_NEXT(4868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4868(choice, ...) METALANG99_PRIV_REC_NEXT(4869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4869(choice, ...) METALANG99_PRIV_REC_NEXT(4870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4870(choice, ...) METALANG99_PRIV_REC_NEXT(4871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4871(choice, ...) METALANG99_PRIV_REC_NEXT(4872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4872(choice, ...) METALANG99_PRIV_REC_NEXT(4873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4873(choice, ...) METALANG99_PRIV_REC_NEXT(4874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4874(choice, ...) METALANG99_PRIV_REC_NEXT(4875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4875(choice, ...) METALANG99_PRIV_REC_NEXT(4876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4876(choice, ...) METALANG99_PRIV_REC_NEXT(4877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4877(choice, ...) METALANG99_PRIV_REC_NEXT(4878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4878(choice, ...) METALANG99_PRIV_REC_NEXT(4879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4879(choice, ...) METALANG99_PRIV_REC_NEXT(4880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4880(choice, ...) METALANG99_PRIV_REC_NEXT(4881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4881(choice, ...) METALANG99_PRIV_REC_NEXT(4882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4882(choice, ...) METALANG99_PRIV_REC_NEXT(4883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4883(choice, ...) METALANG99_PRIV_REC_NEXT(4884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4884(choice, ...) METALANG99_PRIV_REC_NEXT(4885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4885(choice, ...) METALANG99_PRIV_REC_NEXT(4886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4886(choice, ...) METALANG99_PRIV_REC_NEXT(4887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4887(choice, ...) METALANG99_PRIV_REC_NEXT(4888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4888(choice, ...) METALANG99_PRIV_REC_NEXT(4889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4889(choice, ...) METALANG99_PRIV_REC_NEXT(4890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4890(choice, ...) METALANG99_PRIV_REC_NEXT(4891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4891(choice, ...) METALANG99_PRIV_REC_NEXT(4892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4892(choice, ...) METALANG99_PRIV_REC_NEXT(4893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4893(choice, ...) METALANG99_PRIV_REC_NEXT(4894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4894(choice, ...) METALANG99_PRIV_REC_NEXT(4895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4895(choice, ...) METALANG99_PRIV_REC_NEXT(4896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4896(choice, ...) METALANG99_PRIV_REC_NEXT(4897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4897(choice, ...) METALANG99_PRIV_REC_NEXT(4898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4898(choice, ...) METALANG99_PRIV_REC_NEXT(4899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4899(choice, ...) METALANG99_PRIV_REC_NEXT(4900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4900(choice, ...) METALANG99_PRIV_REC_NEXT(4901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4901(choice, ...) METALANG99_PRIV_REC_NEXT(4902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4902(choice, ...) METALANG99_PRIV_REC_NEXT(4903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4903(choice, ...) METALANG99_PRIV_REC_NEXT(4904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4904(choice, ...) METALANG99_PRIV_REC_NEXT(4905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4905(choice, ...) METALANG99_PRIV_REC_NEXT(4906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4906(choice, ...) METALANG99_PRIV_REC_NEXT(4907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4907(choice, ...) METALANG99_PRIV_REC_NEXT(4908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4908(choice, ...) METALANG99_PRIV_REC_NEXT(4909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4909(choice, ...) METALANG99_PRIV_REC_NEXT(4910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4910(choice, ...) METALANG99_PRIV_REC_NEXT(4911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4911(choice, ...) METALANG99_PRIV_REC_NEXT(4912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4912(choice, ...) METALANG99_PRIV_REC_NEXT(4913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4913(choice, ...) METALANG99_PRIV_REC_NEXT(4914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4914(choice, ...) METALANG99_PRIV_REC_NEXT(4915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4915(choice, ...) METALANG99_PRIV_REC_NEXT(4916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4916(choice, ...) METALANG99_PRIV_REC_NEXT(4917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4917(choice, ...) METALANG99_PRIV_REC_NEXT(4918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4918(choice, ...) METALANG99_PRIV_REC_NEXT(4919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4919(choice, ...) METALANG99_PRIV_REC_NEXT(4920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4920(choice, ...) METALANG99_PRIV_REC_NEXT(4921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4921(choice, ...) METALANG99_PRIV_REC_NEXT(4922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4922(choice, ...) METALANG99_PRIV_REC_NEXT(4923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4923(choice, ...) METALANG99_PRIV_REC_NEXT(4924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4924(choice, ...) METALANG99_PRIV_REC_NEXT(4925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4925(choice, ...) METALANG99_PRIV_REC_NEXT(4926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4926(choice, ...) METALANG99_PRIV_REC_NEXT(4927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4927(choice, ...) METALANG99_PRIV_REC_NEXT(4928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4928(choice, ...) METALANG99_PRIV_REC_NEXT(4929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4929(choice, ...) METALANG99_PRIV_REC_NEXT(4930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4930(choice, ...) METALANG99_PRIV_REC_NEXT(4931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4931(choice, ...) METALANG99_PRIV_REC_NEXT(4932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4932(choice, ...) METALANG99_PRIV_REC_NEXT(4933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4933(choice, ...) METALANG99_PRIV_REC_NEXT(4934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4934(choice, ...) METALANG99_PRIV_REC_NEXT(4935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4935(choice, ...) METALANG99_PRIV_REC_NEXT(4936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4936(choice, ...) METALANG99_PRIV_REC_NEXT(4937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4937(choice, ...) METALANG99_PRIV_REC_NEXT(4938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4938(choice, ...) METALANG99_PRIV_REC_NEXT(4939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4939(choice, ...) METALANG99_PRIV_REC_NEXT(4940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4940(choice, ...) METALANG99_PRIV_REC_NEXT(4941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4941(choice, ...) METALANG99_PRIV_REC_NEXT(4942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4942(choice, ...) METALANG99_PRIV_REC_NEXT(4943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4943(choice, ...) METALANG99_PRIV_REC_NEXT(4944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4944(choice, ...) METALANG99_PRIV_REC_NEXT(4945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4945(choice, ...) METALANG99_PRIV_REC_NEXT(4946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4946(choice, ...) METALANG99_PRIV_REC_NEXT(4947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4947(choice, ...) METALANG99_PRIV_REC_NEXT(4948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4948(choice, ...) METALANG99_PRIV_REC_NEXT(4949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4949(choice, ...) METALANG99_PRIV_REC_NEXT(4950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4950(choice, ...) METALANG99_PRIV_REC_NEXT(4951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4951(choice, ...) METALANG99_PRIV_REC_NEXT(4952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4952(choice, ...) METALANG99_PRIV_REC_NEXT(4953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4953(choice, ...) METALANG99_PRIV_REC_NEXT(4954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4954(choice, ...) METALANG99_PRIV_REC_NEXT(4955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4955(choice, ...) METALANG99_PRIV_REC_NEXT(4956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4956(choice, ...) METALANG99_PRIV_REC_NEXT(4957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4957(choice, ...) METALANG99_PRIV_REC_NEXT(4958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4958(choice, ...) METALANG99_PRIV_REC_NEXT(4959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4959(choice, ...) METALANG99_PRIV_REC_NEXT(4960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4960(choice, ...) METALANG99_PRIV_REC_NEXT(4961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4961(choice, ...) METALANG99_PRIV_REC_NEXT(4962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4962(choice, ...) METALANG99_PRIV_REC_NEXT(4963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4963(choice, ...) METALANG99_PRIV_REC_NEXT(4964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4964(choice, ...) METALANG99_PRIV_REC_NEXT(4965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4965(choice, ...) METALANG99_PRIV_REC_NEXT(4966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4966(choice, ...) METALANG99_PRIV_REC_NEXT(4967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4967(choice, ...) METALANG99_PRIV_REC_NEXT(4968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4968(choice, ...) METALANG99_PRIV_REC_NEXT(4969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4969(choice, ...) METALANG99_PRIV_REC_NEXT(4970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4970(choice, ...) METALANG99_PRIV_REC_NEXT(4971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4971(choice, ...) METALANG99_PRIV_REC_NEXT(4972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4972(choice, ...) METALANG99_PRIV_REC_NEXT(4973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4973(choice, ...) METALANG99_PRIV_REC_NEXT(4974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4974(choice, ...) METALANG99_PRIV_REC_NEXT(4975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4975(choice, ...) METALANG99_PRIV_REC_NEXT(4976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4976(choice, ...) METALANG99_PRIV_REC_NEXT(4977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4977(choice, ...) METALANG99_PRIV_REC_NEXT(4978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4978(choice, ...) METALANG99_PRIV_REC_NEXT(4979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4979(choice, ...) METALANG99_PRIV_REC_NEXT(4980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4980(choice, ...) METALANG99_PRIV_REC_NEXT(4981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4981(choice, ...) METALANG99_PRIV_REC_NEXT(4982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4982(choice, ...) METALANG99_PRIV_REC_NEXT(4983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4983(choice, ...) METALANG99_PRIV_REC_NEXT(4984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4984(choice, ...) METALANG99_PRIV_REC_NEXT(4985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4985(choice, ...) METALANG99_PRIV_REC_NEXT(4986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4986(choice, ...) METALANG99_PRIV_REC_NEXT(4987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4987(choice, ...) METALANG99_PRIV_REC_NEXT(4988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4988(choice, ...) METALANG99_PRIV_REC_NEXT(4989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4989(choice, ...) METALANG99_PRIV_REC_NEXT(4990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4990(choice, ...) METALANG99_PRIV_REC_NEXT(4991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4991(choice, ...) METALANG99_PRIV_REC_NEXT(4992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4992(choice, ...) METALANG99_PRIV_REC_NEXT(4993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4993(choice, ...) METALANG99_PRIV_REC_NEXT(4994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4994(choice, ...) METALANG99_PRIV_REC_NEXT(4995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4995(choice, ...) METALANG99_PRIV_REC_NEXT(4996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4996(choice, ...) METALANG99_PRIV_REC_NEXT(4997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4997(choice, ...) METALANG99_PRIV_REC_NEXT(4998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4998(choice, ...) METALANG99_PRIV_REC_NEXT(4999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_4999(choice, ...) METALANG99_PRIV_REC_NEXT(5000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5000(choice, ...) METALANG99_PRIV_REC_NEXT(5001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5001(choice, ...) METALANG99_PRIV_REC_NEXT(5002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5002(choice, ...) METALANG99_PRIV_REC_NEXT(5003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5003(choice, ...) METALANG99_PRIV_REC_NEXT(5004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5004(choice, ...) METALANG99_PRIV_REC_NEXT(5005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5005(choice, ...) METALANG99_PRIV_REC_NEXT(5006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5006(choice, ...) METALANG99_PRIV_REC_NEXT(5007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5007(choice, ...) METALANG99_PRIV_REC_NEXT(5008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5008(choice, ...) METALANG99_PRIV_REC_NEXT(5009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5009(choice, ...) METALANG99_PRIV_REC_NEXT(5010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5010(choice, ...) METALANG99_PRIV_REC_NEXT(5011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5011(choice, ...) METALANG99_PRIV_REC_NEXT(5012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5012(choice, ...) METALANG99_PRIV_REC_NEXT(5013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5013(choice, ...) METALANG99_PRIV_REC_NEXT(5014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5014(choice, ...) METALANG99_PRIV_REC_NEXT(5015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5015(choice, ...) METALANG99_PRIV_REC_NEXT(5016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5016(choice, ...) METALANG99_PRIV_REC_NEXT(5017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5017(choice, ...) METALANG99_PRIV_REC_NEXT(5018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5018(choice, ...) METALANG99_PRIV_REC_NEXT(5019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5019(choice, ...) METALANG99_PRIV_REC_NEXT(5020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5020(choice, ...) METALANG99_PRIV_REC_NEXT(5021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5021(choice, ...) METALANG99_PRIV_REC_NEXT(5022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5022(choice, ...) METALANG99_PRIV_REC_NEXT(5023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5023(choice, ...) METALANG99_PRIV_REC_NEXT(5024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5024(choice, ...) METALANG99_PRIV_REC_NEXT(5025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5025(choice, ...) METALANG99_PRIV_REC_NEXT(5026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5026(choice, ...) METALANG99_PRIV_REC_NEXT(5027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5027(choice, ...) METALANG99_PRIV_REC_NEXT(5028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5028(choice, ...) METALANG99_PRIV_REC_NEXT(5029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5029(choice, ...) METALANG99_PRIV_REC_NEXT(5030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5030(choice, ...) METALANG99_PRIV_REC_NEXT(5031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5031(choice, ...) METALANG99_PRIV_REC_NEXT(5032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5032(choice, ...) METALANG99_PRIV_REC_NEXT(5033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5033(choice, ...) METALANG99_PRIV_REC_NEXT(5034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5034(choice, ...) METALANG99_PRIV_REC_NEXT(5035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5035(choice, ...) METALANG99_PRIV_REC_NEXT(5036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5036(choice, ...) METALANG99_PRIV_REC_NEXT(5037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5037(choice, ...) METALANG99_PRIV_REC_NEXT(5038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5038(choice, ...) METALANG99_PRIV_REC_NEXT(5039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5039(choice, ...) METALANG99_PRIV_REC_NEXT(5040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5040(choice, ...) METALANG99_PRIV_REC_NEXT(5041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5041(choice, ...) METALANG99_PRIV_REC_NEXT(5042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5042(choice, ...) METALANG99_PRIV_REC_NEXT(5043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5043(choice, ...) METALANG99_PRIV_REC_NEXT(5044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5044(choice, ...) METALANG99_PRIV_REC_NEXT(5045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5045(choice, ...) METALANG99_PRIV_REC_NEXT(5046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5046(choice, ...) METALANG99_PRIV_REC_NEXT(5047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5047(choice, ...) METALANG99_PRIV_REC_NEXT(5048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5048(choice, ...) METALANG99_PRIV_REC_NEXT(5049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5049(choice, ...) METALANG99_PRIV_REC_NEXT(5050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5050(choice, ...) METALANG99_PRIV_REC_NEXT(5051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5051(choice, ...) METALANG99_PRIV_REC_NEXT(5052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5052(choice, ...) METALANG99_PRIV_REC_NEXT(5053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5053(choice, ...) METALANG99_PRIV_REC_NEXT(5054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5054(choice, ...) METALANG99_PRIV_REC_NEXT(5055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5055(choice, ...) METALANG99_PRIV_REC_NEXT(5056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5056(choice, ...) METALANG99_PRIV_REC_NEXT(5057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5057(choice, ...) METALANG99_PRIV_REC_NEXT(5058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5058(choice, ...) METALANG99_PRIV_REC_NEXT(5059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5059(choice, ...) METALANG99_PRIV_REC_NEXT(5060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5060(choice, ...) METALANG99_PRIV_REC_NEXT(5061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5061(choice, ...) METALANG99_PRIV_REC_NEXT(5062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5062(choice, ...) METALANG99_PRIV_REC_NEXT(5063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5063(choice, ...) METALANG99_PRIV_REC_NEXT(5064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5064(choice, ...) METALANG99_PRIV_REC_NEXT(5065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5065(choice, ...) METALANG99_PRIV_REC_NEXT(5066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5066(choice, ...) METALANG99_PRIV_REC_NEXT(5067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5067(choice, ...) METALANG99_PRIV_REC_NEXT(5068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5068(choice, ...) METALANG99_PRIV_REC_NEXT(5069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5069(choice, ...) METALANG99_PRIV_REC_NEXT(5070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5070(choice, ...) METALANG99_PRIV_REC_NEXT(5071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5071(choice, ...) METALANG99_PRIV_REC_NEXT(5072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5072(choice, ...) METALANG99_PRIV_REC_NEXT(5073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5073(choice, ...) METALANG99_PRIV_REC_NEXT(5074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5074(choice, ...) METALANG99_PRIV_REC_NEXT(5075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5075(choice, ...) METALANG99_PRIV_REC_NEXT(5076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5076(choice, ...) METALANG99_PRIV_REC_NEXT(5077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5077(choice, ...) METALANG99_PRIV_REC_NEXT(5078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5078(choice, ...) METALANG99_PRIV_REC_NEXT(5079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5079(choice, ...) METALANG99_PRIV_REC_NEXT(5080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5080(choice, ...) METALANG99_PRIV_REC_NEXT(5081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5081(choice, ...) METALANG99_PRIV_REC_NEXT(5082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5082(choice, ...) METALANG99_PRIV_REC_NEXT(5083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5083(choice, ...) METALANG99_PRIV_REC_NEXT(5084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5084(choice, ...) METALANG99_PRIV_REC_NEXT(5085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5085(choice, ...) METALANG99_PRIV_REC_NEXT(5086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5086(choice, ...) METALANG99_PRIV_REC_NEXT(5087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5087(choice, ...) METALANG99_PRIV_REC_NEXT(5088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5088(choice, ...) METALANG99_PRIV_REC_NEXT(5089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5089(choice, ...) METALANG99_PRIV_REC_NEXT(5090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5090(choice, ...) METALANG99_PRIV_REC_NEXT(5091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5091(choice, ...) METALANG99_PRIV_REC_NEXT(5092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5092(choice, ...) METALANG99_PRIV_REC_NEXT(5093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5093(choice, ...) METALANG99_PRIV_REC_NEXT(5094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5094(choice, ...) METALANG99_PRIV_REC_NEXT(5095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5095(choice, ...) METALANG99_PRIV_REC_NEXT(5096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5096(choice, ...) METALANG99_PRIV_REC_NEXT(5097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5097(choice, ...) METALANG99_PRIV_REC_NEXT(5098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5098(choice, ...) METALANG99_PRIV_REC_NEXT(5099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5099(choice, ...) METALANG99_PRIV_REC_NEXT(5100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5100(choice, ...) METALANG99_PRIV_REC_NEXT(5101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5101(choice, ...) METALANG99_PRIV_REC_NEXT(5102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5102(choice, ...) METALANG99_PRIV_REC_NEXT(5103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5103(choice, ...) METALANG99_PRIV_REC_NEXT(5104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5104(choice, ...) METALANG99_PRIV_REC_NEXT(5105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5105(choice, ...) METALANG99_PRIV_REC_NEXT(5106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5106(choice, ...) METALANG99_PRIV_REC_NEXT(5107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5107(choice, ...) METALANG99_PRIV_REC_NEXT(5108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5108(choice, ...) METALANG99_PRIV_REC_NEXT(5109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5109(choice, ...) METALANG99_PRIV_REC_NEXT(5110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5110(choice, ...) METALANG99_PRIV_REC_NEXT(5111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5111(choice, ...) METALANG99_PRIV_REC_NEXT(5112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5112(choice, ...) METALANG99_PRIV_REC_NEXT(5113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5113(choice, ...) METALANG99_PRIV_REC_NEXT(5114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5114(choice, ...) METALANG99_PRIV_REC_NEXT(5115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5115(choice, ...) METALANG99_PRIV_REC_NEXT(5116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5116(choice, ...) METALANG99_PRIV_REC_NEXT(5117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5117(choice, ...) METALANG99_PRIV_REC_NEXT(5118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5118(choice, ...) METALANG99_PRIV_REC_NEXT(5119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5119(choice, ...) METALANG99_PRIV_REC_NEXT(5120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5120(choice, ...) METALANG99_PRIV_REC_NEXT(5121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5121(choice, ...) METALANG99_PRIV_REC_NEXT(5122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5122(choice, ...) METALANG99_PRIV_REC_NEXT(5123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5123(choice, ...) METALANG99_PRIV_REC_NEXT(5124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5124(choice, ...) METALANG99_PRIV_REC_NEXT(5125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5125(choice, ...) METALANG99_PRIV_REC_NEXT(5126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5126(choice, ...) METALANG99_PRIV_REC_NEXT(5127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5127(choice, ...) METALANG99_PRIV_REC_NEXT(5128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5128(choice, ...) METALANG99_PRIV_REC_NEXT(5129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5129(choice, ...) METALANG99_PRIV_REC_NEXT(5130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5130(choice, ...) METALANG99_PRIV_REC_NEXT(5131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5131(choice, ...) METALANG99_PRIV_REC_NEXT(5132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5132(choice, ...) METALANG99_PRIV_REC_NEXT(5133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5133(choice, ...) METALANG99_PRIV_REC_NEXT(5134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5134(choice, ...) METALANG99_PRIV_REC_NEXT(5135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5135(choice, ...) METALANG99_PRIV_REC_NEXT(5136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5136(choice, ...) METALANG99_PRIV_REC_NEXT(5137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5137(choice, ...) METALANG99_PRIV_REC_NEXT(5138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5138(choice, ...) METALANG99_PRIV_REC_NEXT(5139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5139(choice, ...) METALANG99_PRIV_REC_NEXT(5140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5140(choice, ...) METALANG99_PRIV_REC_NEXT(5141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5141(choice, ...) METALANG99_PRIV_REC_NEXT(5142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5142(choice, ...) METALANG99_PRIV_REC_NEXT(5143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5143(choice, ...) METALANG99_PRIV_REC_NEXT(5144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5144(choice, ...) METALANG99_PRIV_REC_NEXT(5145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5145(choice, ...) METALANG99_PRIV_REC_NEXT(5146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5146(choice, ...) METALANG99_PRIV_REC_NEXT(5147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5147(choice, ...) METALANG99_PRIV_REC_NEXT(5148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5148(choice, ...) METALANG99_PRIV_REC_NEXT(5149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5149(choice, ...) METALANG99_PRIV_REC_NEXT(5150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5150(choice, ...) METALANG99_PRIV_REC_NEXT(5151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5151(choice, ...) METALANG99_PRIV_REC_NEXT(5152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5152(choice, ...) METALANG99_PRIV_REC_NEXT(5153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5153(choice, ...) METALANG99_PRIV_REC_NEXT(5154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5154(choice, ...) METALANG99_PRIV_REC_NEXT(5155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5155(choice, ...) METALANG99_PRIV_REC_NEXT(5156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5156(choice, ...) METALANG99_PRIV_REC_NEXT(5157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5157(choice, ...) METALANG99_PRIV_REC_NEXT(5158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5158(choice, ...) METALANG99_PRIV_REC_NEXT(5159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5159(choice, ...) METALANG99_PRIV_REC_NEXT(5160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5160(choice, ...) METALANG99_PRIV_REC_NEXT(5161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5161(choice, ...) METALANG99_PRIV_REC_NEXT(5162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5162(choice, ...) METALANG99_PRIV_REC_NEXT(5163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5163(choice, ...) METALANG99_PRIV_REC_NEXT(5164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5164(choice, ...) METALANG99_PRIV_REC_NEXT(5165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5165(choice, ...) METALANG99_PRIV_REC_NEXT(5166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5166(choice, ...) METALANG99_PRIV_REC_NEXT(5167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5167(choice, ...) METALANG99_PRIV_REC_NEXT(5168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5168(choice, ...) METALANG99_PRIV_REC_NEXT(5169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5169(choice, ...) METALANG99_PRIV_REC_NEXT(5170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5170(choice, ...) METALANG99_PRIV_REC_NEXT(5171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5171(choice, ...) METALANG99_PRIV_REC_NEXT(5172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5172(choice, ...) METALANG99_PRIV_REC_NEXT(5173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5173(choice, ...) METALANG99_PRIV_REC_NEXT(5174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5174(choice, ...) METALANG99_PRIV_REC_NEXT(5175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5175(choice, ...) METALANG99_PRIV_REC_NEXT(5176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5176(choice, ...) METALANG99_PRIV_REC_NEXT(5177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5177(choice, ...) METALANG99_PRIV_REC_NEXT(5178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5178(choice, ...) METALANG99_PRIV_REC_NEXT(5179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5179(choice, ...) METALANG99_PRIV_REC_NEXT(5180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5180(choice, ...) METALANG99_PRIV_REC_NEXT(5181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5181(choice, ...) METALANG99_PRIV_REC_NEXT(5182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5182(choice, ...) METALANG99_PRIV_REC_NEXT(5183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5183(choice, ...) METALANG99_PRIV_REC_NEXT(5184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5184(choice, ...) METALANG99_PRIV_REC_NEXT(5185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5185(choice, ...) METALANG99_PRIV_REC_NEXT(5186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5186(choice, ...) METALANG99_PRIV_REC_NEXT(5187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5187(choice, ...) METALANG99_PRIV_REC_NEXT(5188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5188(choice, ...) METALANG99_PRIV_REC_NEXT(5189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5189(choice, ...) METALANG99_PRIV_REC_NEXT(5190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5190(choice, ...) METALANG99_PRIV_REC_NEXT(5191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5191(choice, ...) METALANG99_PRIV_REC_NEXT(5192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5192(choice, ...) METALANG99_PRIV_REC_NEXT(5193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5193(choice, ...) METALANG99_PRIV_REC_NEXT(5194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5194(choice, ...) METALANG99_PRIV_REC_NEXT(5195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5195(choice, ...) METALANG99_PRIV_REC_NEXT(5196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5196(choice, ...) METALANG99_PRIV_REC_NEXT(5197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5197(choice, ...) METALANG99_PRIV_REC_NEXT(5198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5198(choice, ...) METALANG99_PRIV_REC_NEXT(5199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5199(choice, ...) METALANG99_PRIV_REC_NEXT(5200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5200(choice, ...) METALANG99_PRIV_REC_NEXT(5201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5201(choice, ...) METALANG99_PRIV_REC_NEXT(5202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5202(choice, ...) METALANG99_PRIV_REC_NEXT(5203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5203(choice, ...) METALANG99_PRIV_REC_NEXT(5204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5204(choice, ...) METALANG99_PRIV_REC_NEXT(5205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5205(choice, ...) METALANG99_PRIV_REC_NEXT(5206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5206(choice, ...) METALANG99_PRIV_REC_NEXT(5207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5207(choice, ...) METALANG99_PRIV_REC_NEXT(5208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5208(choice, ...) METALANG99_PRIV_REC_NEXT(5209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5209(choice, ...) METALANG99_PRIV_REC_NEXT(5210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5210(choice, ...) METALANG99_PRIV_REC_NEXT(5211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5211(choice, ...) METALANG99_PRIV_REC_NEXT(5212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5212(choice, ...) METALANG99_PRIV_REC_NEXT(5213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5213(choice, ...) METALANG99_PRIV_REC_NEXT(5214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5214(choice, ...) METALANG99_PRIV_REC_NEXT(5215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5215(choice, ...) METALANG99_PRIV_REC_NEXT(5216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5216(choice, ...) METALANG99_PRIV_REC_NEXT(5217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5217(choice, ...) METALANG99_PRIV_REC_NEXT(5218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5218(choice, ...) METALANG99_PRIV_REC_NEXT(5219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5219(choice, ...) METALANG99_PRIV_REC_NEXT(5220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5220(choice, ...) METALANG99_PRIV_REC_NEXT(5221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5221(choice, ...) METALANG99_PRIV_REC_NEXT(5222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5222(choice, ...) METALANG99_PRIV_REC_NEXT(5223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5223(choice, ...) METALANG99_PRIV_REC_NEXT(5224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5224(choice, ...) METALANG99_PRIV_REC_NEXT(5225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5225(choice, ...) METALANG99_PRIV_REC_NEXT(5226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5226(choice, ...) METALANG99_PRIV_REC_NEXT(5227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5227(choice, ...) METALANG99_PRIV_REC_NEXT(5228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5228(choice, ...) METALANG99_PRIV_REC_NEXT(5229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5229(choice, ...) METALANG99_PRIV_REC_NEXT(5230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5230(choice, ...) METALANG99_PRIV_REC_NEXT(5231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5231(choice, ...) METALANG99_PRIV_REC_NEXT(5232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5232(choice, ...) METALANG99_PRIV_REC_NEXT(5233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5233(choice, ...) METALANG99_PRIV_REC_NEXT(5234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5234(choice, ...) METALANG99_PRIV_REC_NEXT(5235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5235(choice, ...) METALANG99_PRIV_REC_NEXT(5236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5236(choice, ...) METALANG99_PRIV_REC_NEXT(5237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5237(choice, ...) METALANG99_PRIV_REC_NEXT(5238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5238(choice, ...) METALANG99_PRIV_REC_NEXT(5239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5239(choice, ...) METALANG99_PRIV_REC_NEXT(5240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5240(choice, ...) METALANG99_PRIV_REC_NEXT(5241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5241(choice, ...) METALANG99_PRIV_REC_NEXT(5242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5242(choice, ...) METALANG99_PRIV_REC_NEXT(5243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5243(choice, ...) METALANG99_PRIV_REC_NEXT(5244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5244(choice, ...) METALANG99_PRIV_REC_NEXT(5245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5245(choice, ...) METALANG99_PRIV_REC_NEXT(5246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5246(choice, ...) METALANG99_PRIV_REC_NEXT(5247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5247(choice, ...) METALANG99_PRIV_REC_NEXT(5248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5248(choice, ...) METALANG99_PRIV_REC_NEXT(5249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5249(choice, ...) METALANG99_PRIV_REC_NEXT(5250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5250(choice, ...) METALANG99_PRIV_REC_NEXT(5251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5251(choice, ...) METALANG99_PRIV_REC_NEXT(5252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5252(choice, ...) METALANG99_PRIV_REC_NEXT(5253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5253(choice, ...) METALANG99_PRIV_REC_NEXT(5254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5254(choice, ...) METALANG99_PRIV_REC_NEXT(5255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5255(choice, ...) METALANG99_PRIV_REC_NEXT(5256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5256(choice, ...) METALANG99_PRIV_REC_NEXT(5257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5257(choice, ...) METALANG99_PRIV_REC_NEXT(5258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5258(choice, ...) METALANG99_PRIV_REC_NEXT(5259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5259(choice, ...) METALANG99_PRIV_REC_NEXT(5260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5260(choice, ...) METALANG99_PRIV_REC_NEXT(5261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5261(choice, ...) METALANG99_PRIV_REC_NEXT(5262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5262(choice, ...) METALANG99_PRIV_REC_NEXT(5263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5263(choice, ...) METALANG99_PRIV_REC_NEXT(5264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5264(choice, ...) METALANG99_PRIV_REC_NEXT(5265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5265(choice, ...) METALANG99_PRIV_REC_NEXT(5266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5266(choice, ...) METALANG99_PRIV_REC_NEXT(5267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5267(choice, ...) METALANG99_PRIV_REC_NEXT(5268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5268(choice, ...) METALANG99_PRIV_REC_NEXT(5269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5269(choice, ...) METALANG99_PRIV_REC_NEXT(5270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5270(choice, ...) METALANG99_PRIV_REC_NEXT(5271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5271(choice, ...) METALANG99_PRIV_REC_NEXT(5272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5272(choice, ...) METALANG99_PRIV_REC_NEXT(5273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5273(choice, ...) METALANG99_PRIV_REC_NEXT(5274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5274(choice, ...) METALANG99_PRIV_REC_NEXT(5275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5275(choice, ...) METALANG99_PRIV_REC_NEXT(5276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5276(choice, ...) METALANG99_PRIV_REC_NEXT(5277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5277(choice, ...) METALANG99_PRIV_REC_NEXT(5278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5278(choice, ...) METALANG99_PRIV_REC_NEXT(5279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5279(choice, ...) METALANG99_PRIV_REC_NEXT(5280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5280(choice, ...) METALANG99_PRIV_REC_NEXT(5281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5281(choice, ...) METALANG99_PRIV_REC_NEXT(5282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5282(choice, ...) METALANG99_PRIV_REC_NEXT(5283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5283(choice, ...) METALANG99_PRIV_REC_NEXT(5284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5284(choice, ...) METALANG99_PRIV_REC_NEXT(5285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5285(choice, ...) METALANG99_PRIV_REC_NEXT(5286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5286(choice, ...) METALANG99_PRIV_REC_NEXT(5287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5287(choice, ...) METALANG99_PRIV_REC_NEXT(5288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5288(choice, ...) METALANG99_PRIV_REC_NEXT(5289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5289(choice, ...) METALANG99_PRIV_REC_NEXT(5290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5290(choice, ...) METALANG99_PRIV_REC_NEXT(5291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5291(choice, ...) METALANG99_PRIV_REC_NEXT(5292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5292(choice, ...) METALANG99_PRIV_REC_NEXT(5293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5293(choice, ...) METALANG99_PRIV_REC_NEXT(5294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5294(choice, ...) METALANG99_PRIV_REC_NEXT(5295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5295(choice, ...) METALANG99_PRIV_REC_NEXT(5296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5296(choice, ...) METALANG99_PRIV_REC_NEXT(5297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5297(choice, ...) METALANG99_PRIV_REC_NEXT(5298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5298(choice, ...) METALANG99_PRIV_REC_NEXT(5299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5299(choice, ...) METALANG99_PRIV_REC_NEXT(5300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5300(choice, ...) METALANG99_PRIV_REC_NEXT(5301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5301(choice, ...) METALANG99_PRIV_REC_NEXT(5302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5302(choice, ...) METALANG99_PRIV_REC_NEXT(5303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5303(choice, ...) METALANG99_PRIV_REC_NEXT(5304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5304(choice, ...) METALANG99_PRIV_REC_NEXT(5305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5305(choice, ...) METALANG99_PRIV_REC_NEXT(5306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5306(choice, ...) METALANG99_PRIV_REC_NEXT(5307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5307(choice, ...) METALANG99_PRIV_REC_NEXT(5308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5308(choice, ...) METALANG99_PRIV_REC_NEXT(5309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5309(choice, ...) METALANG99_PRIV_REC_NEXT(5310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5310(choice, ...) METALANG99_PRIV_REC_NEXT(5311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5311(choice, ...) METALANG99_PRIV_REC_NEXT(5312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5312(choice, ...) METALANG99_PRIV_REC_NEXT(5313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5313(choice, ...) METALANG99_PRIV_REC_NEXT(5314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5314(choice, ...) METALANG99_PRIV_REC_NEXT(5315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5315(choice, ...) METALANG99_PRIV_REC_NEXT(5316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5316(choice, ...) METALANG99_PRIV_REC_NEXT(5317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5317(choice, ...) METALANG99_PRIV_REC_NEXT(5318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5318(choice, ...) METALANG99_PRIV_REC_NEXT(5319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5319(choice, ...) METALANG99_PRIV_REC_NEXT(5320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5320(choice, ...) METALANG99_PRIV_REC_NEXT(5321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5321(choice, ...) METALANG99_PRIV_REC_NEXT(5322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5322(choice, ...) METALANG99_PRIV_REC_NEXT(5323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5323(choice, ...) METALANG99_PRIV_REC_NEXT(5324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5324(choice, ...) METALANG99_PRIV_REC_NEXT(5325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5325(choice, ...) METALANG99_PRIV_REC_NEXT(5326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5326(choice, ...) METALANG99_PRIV_REC_NEXT(5327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5327(choice, ...) METALANG99_PRIV_REC_NEXT(5328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5328(choice, ...) METALANG99_PRIV_REC_NEXT(5329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5329(choice, ...) METALANG99_PRIV_REC_NEXT(5330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5330(choice, ...) METALANG99_PRIV_REC_NEXT(5331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5331(choice, ...) METALANG99_PRIV_REC_NEXT(5332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5332(choice, ...) METALANG99_PRIV_REC_NEXT(5333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5333(choice, ...) METALANG99_PRIV_REC_NEXT(5334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5334(choice, ...) METALANG99_PRIV_REC_NEXT(5335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5335(choice, ...) METALANG99_PRIV_REC_NEXT(5336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5336(choice, ...) METALANG99_PRIV_REC_NEXT(5337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5337(choice, ...) METALANG99_PRIV_REC_NEXT(5338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5338(choice, ...) METALANG99_PRIV_REC_NEXT(5339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5339(choice, ...) METALANG99_PRIV_REC_NEXT(5340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5340(choice, ...) METALANG99_PRIV_REC_NEXT(5341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5341(choice, ...) METALANG99_PRIV_REC_NEXT(5342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5342(choice, ...) METALANG99_PRIV_REC_NEXT(5343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5343(choice, ...) METALANG99_PRIV_REC_NEXT(5344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5344(choice, ...) METALANG99_PRIV_REC_NEXT(5345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5345(choice, ...) METALANG99_PRIV_REC_NEXT(5346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5346(choice, ...) METALANG99_PRIV_REC_NEXT(5347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5347(choice, ...) METALANG99_PRIV_REC_NEXT(5348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5348(choice, ...) METALANG99_PRIV_REC_NEXT(5349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5349(choice, ...) METALANG99_PRIV_REC_NEXT(5350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5350(choice, ...) METALANG99_PRIV_REC_NEXT(5351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5351(choice, ...) METALANG99_PRIV_REC_NEXT(5352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5352(choice, ...) METALANG99_PRIV_REC_NEXT(5353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5353(choice, ...) METALANG99_PRIV_REC_NEXT(5354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5354(choice, ...) METALANG99_PRIV_REC_NEXT(5355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5355(choice, ...) METALANG99_PRIV_REC_NEXT(5356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5356(choice, ...) METALANG99_PRIV_REC_NEXT(5357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5357(choice, ...) METALANG99_PRIV_REC_NEXT(5358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5358(choice, ...) METALANG99_PRIV_REC_NEXT(5359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5359(choice, ...) METALANG99_PRIV_REC_NEXT(5360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5360(choice, ...) METALANG99_PRIV_REC_NEXT(5361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5361(choice, ...) METALANG99_PRIV_REC_NEXT(5362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5362(choice, ...) METALANG99_PRIV_REC_NEXT(5363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5363(choice, ...) METALANG99_PRIV_REC_NEXT(5364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5364(choice, ...) METALANG99_PRIV_REC_NEXT(5365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5365(choice, ...) METALANG99_PRIV_REC_NEXT(5366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5366(choice, ...) METALANG99_PRIV_REC_NEXT(5367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5367(choice, ...) METALANG99_PRIV_REC_NEXT(5368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5368(choice, ...) METALANG99_PRIV_REC_NEXT(5369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5369(choice, ...) METALANG99_PRIV_REC_NEXT(5370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5370(choice, ...) METALANG99_PRIV_REC_NEXT(5371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5371(choice, ...) METALANG99_PRIV_REC_NEXT(5372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5372(choice, ...) METALANG99_PRIV_REC_NEXT(5373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5373(choice, ...) METALANG99_PRIV_REC_NEXT(5374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5374(choice, ...) METALANG99_PRIV_REC_NEXT(5375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5375(choice, ...) METALANG99_PRIV_REC_NEXT(5376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5376(choice, ...) METALANG99_PRIV_REC_NEXT(5377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5377(choice, ...) METALANG99_PRIV_REC_NEXT(5378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5378(choice, ...) METALANG99_PRIV_REC_NEXT(5379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5379(choice, ...) METALANG99_PRIV_REC_NEXT(5380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5380(choice, ...) METALANG99_PRIV_REC_NEXT(5381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5381(choice, ...) METALANG99_PRIV_REC_NEXT(5382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5382(choice, ...) METALANG99_PRIV_REC_NEXT(5383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5383(choice, ...) METALANG99_PRIV_REC_NEXT(5384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5384(choice, ...) METALANG99_PRIV_REC_NEXT(5385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5385(choice, ...) METALANG99_PRIV_REC_NEXT(5386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5386(choice, ...) METALANG99_PRIV_REC_NEXT(5387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5387(choice, ...) METALANG99_PRIV_REC_NEXT(5388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5388(choice, ...) METALANG99_PRIV_REC_NEXT(5389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5389(choice, ...) METALANG99_PRIV_REC_NEXT(5390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5390(choice, ...) METALANG99_PRIV_REC_NEXT(5391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5391(choice, ...) METALANG99_PRIV_REC_NEXT(5392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5392(choice, ...) METALANG99_PRIV_REC_NEXT(5393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5393(choice, ...) METALANG99_PRIV_REC_NEXT(5394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5394(choice, ...) METALANG99_PRIV_REC_NEXT(5395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5395(choice, ...) METALANG99_PRIV_REC_NEXT(5396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5396(choice, ...) METALANG99_PRIV_REC_NEXT(5397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5397(choice, ...) METALANG99_PRIV_REC_NEXT(5398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5398(choice, ...) METALANG99_PRIV_REC_NEXT(5399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5399(choice, ...) METALANG99_PRIV_REC_NEXT(5400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5400(choice, ...) METALANG99_PRIV_REC_NEXT(5401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5401(choice, ...) METALANG99_PRIV_REC_NEXT(5402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5402(choice, ...) METALANG99_PRIV_REC_NEXT(5403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5403(choice, ...) METALANG99_PRIV_REC_NEXT(5404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5404(choice, ...) METALANG99_PRIV_REC_NEXT(5405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5405(choice, ...) METALANG99_PRIV_REC_NEXT(5406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5406(choice, ...) METALANG99_PRIV_REC_NEXT(5407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5407(choice, ...) METALANG99_PRIV_REC_NEXT(5408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5408(choice, ...) METALANG99_PRIV_REC_NEXT(5409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5409(choice, ...) METALANG99_PRIV_REC_NEXT(5410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5410(choice, ...) METALANG99_PRIV_REC_NEXT(5411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5411(choice, ...) METALANG99_PRIV_REC_NEXT(5412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5412(choice, ...) METALANG99_PRIV_REC_NEXT(5413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5413(choice, ...) METALANG99_PRIV_REC_NEXT(5414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5414(choice, ...) METALANG99_PRIV_REC_NEXT(5415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5415(choice, ...) METALANG99_PRIV_REC_NEXT(5416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5416(choice, ...) METALANG99_PRIV_REC_NEXT(5417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5417(choice, ...) METALANG99_PRIV_REC_NEXT(5418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5418(choice, ...) METALANG99_PRIV_REC_NEXT(5419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5419(choice, ...) METALANG99_PRIV_REC_NEXT(5420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5420(choice, ...) METALANG99_PRIV_REC_NEXT(5421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5421(choice, ...) METALANG99_PRIV_REC_NEXT(5422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5422(choice, ...) METALANG99_PRIV_REC_NEXT(5423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5423(choice, ...) METALANG99_PRIV_REC_NEXT(5424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5424(choice, ...) METALANG99_PRIV_REC_NEXT(5425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5425(choice, ...) METALANG99_PRIV_REC_NEXT(5426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5426(choice, ...) METALANG99_PRIV_REC_NEXT(5427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5427(choice, ...) METALANG99_PRIV_REC_NEXT(5428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5428(choice, ...) METALANG99_PRIV_REC_NEXT(5429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5429(choice, ...) METALANG99_PRIV_REC_NEXT(5430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5430(choice, ...) METALANG99_PRIV_REC_NEXT(5431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5431(choice, ...) METALANG99_PRIV_REC_NEXT(5432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5432(choice, ...) METALANG99_PRIV_REC_NEXT(5433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5433(choice, ...) METALANG99_PRIV_REC_NEXT(5434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5434(choice, ...) METALANG99_PRIV_REC_NEXT(5435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5435(choice, ...) METALANG99_PRIV_REC_NEXT(5436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5436(choice, ...) METALANG99_PRIV_REC_NEXT(5437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5437(choice, ...) METALANG99_PRIV_REC_NEXT(5438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5438(choice, ...) METALANG99_PRIV_REC_NEXT(5439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5439(choice, ...) METALANG99_PRIV_REC_NEXT(5440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5440(choice, ...) METALANG99_PRIV_REC_NEXT(5441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5441(choice, ...) METALANG99_PRIV_REC_NEXT(5442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5442(choice, ...) METALANG99_PRIV_REC_NEXT(5443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5443(choice, ...) METALANG99_PRIV_REC_NEXT(5444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5444(choice, ...) METALANG99_PRIV_REC_NEXT(5445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5445(choice, ...) METALANG99_PRIV_REC_NEXT(5446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5446(choice, ...) METALANG99_PRIV_REC_NEXT(5447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5447(choice, ...) METALANG99_PRIV_REC_NEXT(5448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5448(choice, ...) METALANG99_PRIV_REC_NEXT(5449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5449(choice, ...) METALANG99_PRIV_REC_NEXT(5450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5450(choice, ...) METALANG99_PRIV_REC_NEXT(5451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5451(choice, ...) METALANG99_PRIV_REC_NEXT(5452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5452(choice, ...) METALANG99_PRIV_REC_NEXT(5453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5453(choice, ...) METALANG99_PRIV_REC_NEXT(5454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5454(choice, ...) METALANG99_PRIV_REC_NEXT(5455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5455(choice, ...) METALANG99_PRIV_REC_NEXT(5456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5456(choice, ...) METALANG99_PRIV_REC_NEXT(5457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5457(choice, ...) METALANG99_PRIV_REC_NEXT(5458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5458(choice, ...) METALANG99_PRIV_REC_NEXT(5459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5459(choice, ...) METALANG99_PRIV_REC_NEXT(5460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5460(choice, ...) METALANG99_PRIV_REC_NEXT(5461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5461(choice, ...) METALANG99_PRIV_REC_NEXT(5462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5462(choice, ...) METALANG99_PRIV_REC_NEXT(5463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5463(choice, ...) METALANG99_PRIV_REC_NEXT(5464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5464(choice, ...) METALANG99_PRIV_REC_NEXT(5465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5465(choice, ...) METALANG99_PRIV_REC_NEXT(5466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5466(choice, ...) METALANG99_PRIV_REC_NEXT(5467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5467(choice, ...) METALANG99_PRIV_REC_NEXT(5468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5468(choice, ...) METALANG99_PRIV_REC_NEXT(5469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5469(choice, ...) METALANG99_PRIV_REC_NEXT(5470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5470(choice, ...) METALANG99_PRIV_REC_NEXT(5471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5471(choice, ...) METALANG99_PRIV_REC_NEXT(5472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5472(choice, ...) METALANG99_PRIV_REC_NEXT(5473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5473(choice, ...) METALANG99_PRIV_REC_NEXT(5474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5474(choice, ...) METALANG99_PRIV_REC_NEXT(5475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5475(choice, ...) METALANG99_PRIV_REC_NEXT(5476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5476(choice, ...) METALANG99_PRIV_REC_NEXT(5477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5477(choice, ...) METALANG99_PRIV_REC_NEXT(5478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5478(choice, ...) METALANG99_PRIV_REC_NEXT(5479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5479(choice, ...) METALANG99_PRIV_REC_NEXT(5480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5480(choice, ...) METALANG99_PRIV_REC_NEXT(5481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5481(choice, ...) METALANG99_PRIV_REC_NEXT(5482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5482(choice, ...) METALANG99_PRIV_REC_NEXT(5483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5483(choice, ...) METALANG99_PRIV_REC_NEXT(5484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5484(choice, ...) METALANG99_PRIV_REC_NEXT(5485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5485(choice, ...) METALANG99_PRIV_REC_NEXT(5486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5486(choice, ...) METALANG99_PRIV_REC_NEXT(5487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5487(choice, ...) METALANG99_PRIV_REC_NEXT(5488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5488(choice, ...) METALANG99_PRIV_REC_NEXT(5489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5489(choice, ...) METALANG99_PRIV_REC_NEXT(5490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5490(choice, ...) METALANG99_PRIV_REC_NEXT(5491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5491(choice, ...) METALANG99_PRIV_REC_NEXT(5492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5492(choice, ...) METALANG99_PRIV_REC_NEXT(5493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5493(choice, ...) METALANG99_PRIV_REC_NEXT(5494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5494(choice, ...) METALANG99_PRIV_REC_NEXT(5495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5495(choice, ...) METALANG99_PRIV_REC_NEXT(5496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5496(choice, ...) METALANG99_PRIV_REC_NEXT(5497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5497(choice, ...) METALANG99_PRIV_REC_NEXT(5498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5498(choice, ...) METALANG99_PRIV_REC_NEXT(5499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5499(choice, ...) METALANG99_PRIV_REC_NEXT(5500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5500(choice, ...) METALANG99_PRIV_REC_NEXT(5501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5501(choice, ...) METALANG99_PRIV_REC_NEXT(5502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5502(choice, ...) METALANG99_PRIV_REC_NEXT(5503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5503(choice, ...) METALANG99_PRIV_REC_NEXT(5504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5504(choice, ...) METALANG99_PRIV_REC_NEXT(5505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5505(choice, ...) METALANG99_PRIV_REC_NEXT(5506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5506(choice, ...) METALANG99_PRIV_REC_NEXT(5507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5507(choice, ...) METALANG99_PRIV_REC_NEXT(5508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5508(choice, ...) METALANG99_PRIV_REC_NEXT(5509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5509(choice, ...) METALANG99_PRIV_REC_NEXT(5510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5510(choice, ...) METALANG99_PRIV_REC_NEXT(5511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5511(choice, ...) METALANG99_PRIV_REC_NEXT(5512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5512(choice, ...) METALANG99_PRIV_REC_NEXT(5513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5513(choice, ...) METALANG99_PRIV_REC_NEXT(5514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5514(choice, ...) METALANG99_PRIV_REC_NEXT(5515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5515(choice, ...) METALANG99_PRIV_REC_NEXT(5516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5516(choice, ...) METALANG99_PRIV_REC_NEXT(5517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5517(choice, ...) METALANG99_PRIV_REC_NEXT(5518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5518(choice, ...) METALANG99_PRIV_REC_NEXT(5519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5519(choice, ...) METALANG99_PRIV_REC_NEXT(5520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5520(choice, ...) METALANG99_PRIV_REC_NEXT(5521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5521(choice, ...) METALANG99_PRIV_REC_NEXT(5522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5522(choice, ...) METALANG99_PRIV_REC_NEXT(5523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5523(choice, ...) METALANG99_PRIV_REC_NEXT(5524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5524(choice, ...) METALANG99_PRIV_REC_NEXT(5525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5525(choice, ...) METALANG99_PRIV_REC_NEXT(5526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5526(choice, ...) METALANG99_PRIV_REC_NEXT(5527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5527(choice, ...) METALANG99_PRIV_REC_NEXT(5528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5528(choice, ...) METALANG99_PRIV_REC_NEXT(5529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5529(choice, ...) METALANG99_PRIV_REC_NEXT(5530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5530(choice, ...) METALANG99_PRIV_REC_NEXT(5531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5531(choice, ...) METALANG99_PRIV_REC_NEXT(5532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5532(choice, ...) METALANG99_PRIV_REC_NEXT(5533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5533(choice, ...) METALANG99_PRIV_REC_NEXT(5534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5534(choice, ...) METALANG99_PRIV_REC_NEXT(5535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5535(choice, ...) METALANG99_PRIV_REC_NEXT(5536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5536(choice, ...) METALANG99_PRIV_REC_NEXT(5537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5537(choice, ...) METALANG99_PRIV_REC_NEXT(5538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5538(choice, ...) METALANG99_PRIV_REC_NEXT(5539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5539(choice, ...) METALANG99_PRIV_REC_NEXT(5540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5540(choice, ...) METALANG99_PRIV_REC_NEXT(5541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5541(choice, ...) METALANG99_PRIV_REC_NEXT(5542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5542(choice, ...) METALANG99_PRIV_REC_NEXT(5543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5543(choice, ...) METALANG99_PRIV_REC_NEXT(5544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5544(choice, ...) METALANG99_PRIV_REC_NEXT(5545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5545(choice, ...) METALANG99_PRIV_REC_NEXT(5546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5546(choice, ...) METALANG99_PRIV_REC_NEXT(5547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5547(choice, ...) METALANG99_PRIV_REC_NEXT(5548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5548(choice, ...) METALANG99_PRIV_REC_NEXT(5549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5549(choice, ...) METALANG99_PRIV_REC_NEXT(5550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5550(choice, ...) METALANG99_PRIV_REC_NEXT(5551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5551(choice, ...) METALANG99_PRIV_REC_NEXT(5552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5552(choice, ...) METALANG99_PRIV_REC_NEXT(5553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5553(choice, ...) METALANG99_PRIV_REC_NEXT(5554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5554(choice, ...) METALANG99_PRIV_REC_NEXT(5555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5555(choice, ...) METALANG99_PRIV_REC_NEXT(5556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5556(choice, ...) METALANG99_PRIV_REC_NEXT(5557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5557(choice, ...) METALANG99_PRIV_REC_NEXT(5558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5558(choice, ...) METALANG99_PRIV_REC_NEXT(5559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5559(choice, ...) METALANG99_PRIV_REC_NEXT(5560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5560(choice, ...) METALANG99_PRIV_REC_NEXT(5561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5561(choice, ...) METALANG99_PRIV_REC_NEXT(5562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5562(choice, ...) METALANG99_PRIV_REC_NEXT(5563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5563(choice, ...) METALANG99_PRIV_REC_NEXT(5564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5564(choice, ...) METALANG99_PRIV_REC_NEXT(5565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5565(choice, ...) METALANG99_PRIV_REC_NEXT(5566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5566(choice, ...) METALANG99_PRIV_REC_NEXT(5567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5567(choice, ...) METALANG99_PRIV_REC_NEXT(5568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5568(choice, ...) METALANG99_PRIV_REC_NEXT(5569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5569(choice, ...) METALANG99_PRIV_REC_NEXT(5570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5570(choice, ...) METALANG99_PRIV_REC_NEXT(5571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5571(choice, ...) METALANG99_PRIV_REC_NEXT(5572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5572(choice, ...) METALANG99_PRIV_REC_NEXT(5573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5573(choice, ...) METALANG99_PRIV_REC_NEXT(5574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5574(choice, ...) METALANG99_PRIV_REC_NEXT(5575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5575(choice, ...) METALANG99_PRIV_REC_NEXT(5576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5576(choice, ...) METALANG99_PRIV_REC_NEXT(5577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5577(choice, ...) METALANG99_PRIV_REC_NEXT(5578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5578(choice, ...) METALANG99_PRIV_REC_NEXT(5579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5579(choice, ...) METALANG99_PRIV_REC_NEXT(5580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5580(choice, ...) METALANG99_PRIV_REC_NEXT(5581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5581(choice, ...) METALANG99_PRIV_REC_NEXT(5582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5582(choice, ...) METALANG99_PRIV_REC_NEXT(5583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5583(choice, ...) METALANG99_PRIV_REC_NEXT(5584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5584(choice, ...) METALANG99_PRIV_REC_NEXT(5585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5585(choice, ...) METALANG99_PRIV_REC_NEXT(5586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5586(choice, ...) METALANG99_PRIV_REC_NEXT(5587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5587(choice, ...) METALANG99_PRIV_REC_NEXT(5588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5588(choice, ...) METALANG99_PRIV_REC_NEXT(5589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5589(choice, ...) METALANG99_PRIV_REC_NEXT(5590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5590(choice, ...) METALANG99_PRIV_REC_NEXT(5591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5591(choice, ...) METALANG99_PRIV_REC_NEXT(5592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5592(choice, ...) METALANG99_PRIV_REC_NEXT(5593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5593(choice, ...) METALANG99_PRIV_REC_NEXT(5594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5594(choice, ...) METALANG99_PRIV_REC_NEXT(5595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5595(choice, ...) METALANG99_PRIV_REC_NEXT(5596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5596(choice, ...) METALANG99_PRIV_REC_NEXT(5597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5597(choice, ...) METALANG99_PRIV_REC_NEXT(5598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5598(choice, ...) METALANG99_PRIV_REC_NEXT(5599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5599(choice, ...) METALANG99_PRIV_REC_NEXT(5600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5600(choice, ...) METALANG99_PRIV_REC_NEXT(5601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5601(choice, ...) METALANG99_PRIV_REC_NEXT(5602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5602(choice, ...) METALANG99_PRIV_REC_NEXT(5603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5603(choice, ...) METALANG99_PRIV_REC_NEXT(5604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5604(choice, ...) METALANG99_PRIV_REC_NEXT(5605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5605(choice, ...) METALANG99_PRIV_REC_NEXT(5606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5606(choice, ...) METALANG99_PRIV_REC_NEXT(5607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5607(choice, ...) METALANG99_PRIV_REC_NEXT(5608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5608(choice, ...) METALANG99_PRIV_REC_NEXT(5609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5609(choice, ...) METALANG99_PRIV_REC_NEXT(5610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5610(choice, ...) METALANG99_PRIV_REC_NEXT(5611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5611(choice, ...) METALANG99_PRIV_REC_NEXT(5612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5612(choice, ...) METALANG99_PRIV_REC_NEXT(5613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5613(choice, ...) METALANG99_PRIV_REC_NEXT(5614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5614(choice, ...) METALANG99_PRIV_REC_NEXT(5615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5615(choice, ...) METALANG99_PRIV_REC_NEXT(5616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5616(choice, ...) METALANG99_PRIV_REC_NEXT(5617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5617(choice, ...) METALANG99_PRIV_REC_NEXT(5618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5618(choice, ...) METALANG99_PRIV_REC_NEXT(5619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5619(choice, ...) METALANG99_PRIV_REC_NEXT(5620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5620(choice, ...) METALANG99_PRIV_REC_NEXT(5621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5621(choice, ...) METALANG99_PRIV_REC_NEXT(5622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5622(choice, ...) METALANG99_PRIV_REC_NEXT(5623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5623(choice, ...) METALANG99_PRIV_REC_NEXT(5624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5624(choice, ...) METALANG99_PRIV_REC_NEXT(5625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5625(choice, ...) METALANG99_PRIV_REC_NEXT(5626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5626(choice, ...) METALANG99_PRIV_REC_NEXT(5627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5627(choice, ...) METALANG99_PRIV_REC_NEXT(5628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5628(choice, ...) METALANG99_PRIV_REC_NEXT(5629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5629(choice, ...) METALANG99_PRIV_REC_NEXT(5630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5630(choice, ...) METALANG99_PRIV_REC_NEXT(5631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5631(choice, ...) METALANG99_PRIV_REC_NEXT(5632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5632(choice, ...) METALANG99_PRIV_REC_NEXT(5633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5633(choice, ...) METALANG99_PRIV_REC_NEXT(5634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5634(choice, ...) METALANG99_PRIV_REC_NEXT(5635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5635(choice, ...) METALANG99_PRIV_REC_NEXT(5636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5636(choice, ...) METALANG99_PRIV_REC_NEXT(5637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5637(choice, ...) METALANG99_PRIV_REC_NEXT(5638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5638(choice, ...) METALANG99_PRIV_REC_NEXT(5639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5639(choice, ...) METALANG99_PRIV_REC_NEXT(5640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5640(choice, ...) METALANG99_PRIV_REC_NEXT(5641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5641(choice, ...) METALANG99_PRIV_REC_NEXT(5642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5642(choice, ...) METALANG99_PRIV_REC_NEXT(5643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5643(choice, ...) METALANG99_PRIV_REC_NEXT(5644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5644(choice, ...) METALANG99_PRIV_REC_NEXT(5645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5645(choice, ...) METALANG99_PRIV_REC_NEXT(5646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5646(choice, ...) METALANG99_PRIV_REC_NEXT(5647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5647(choice, ...) METALANG99_PRIV_REC_NEXT(5648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5648(choice, ...) METALANG99_PRIV_REC_NEXT(5649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5649(choice, ...) METALANG99_PRIV_REC_NEXT(5650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5650(choice, ...) METALANG99_PRIV_REC_NEXT(5651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5651(choice, ...) METALANG99_PRIV_REC_NEXT(5652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5652(choice, ...) METALANG99_PRIV_REC_NEXT(5653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5653(choice, ...) METALANG99_PRIV_REC_NEXT(5654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5654(choice, ...) METALANG99_PRIV_REC_NEXT(5655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5655(choice, ...) METALANG99_PRIV_REC_NEXT(5656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5656(choice, ...) METALANG99_PRIV_REC_NEXT(5657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5657(choice, ...) METALANG99_PRIV_REC_NEXT(5658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5658(choice, ...) METALANG99_PRIV_REC_NEXT(5659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5659(choice, ...) METALANG99_PRIV_REC_NEXT(5660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5660(choice, ...) METALANG99_PRIV_REC_NEXT(5661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5661(choice, ...) METALANG99_PRIV_REC_NEXT(5662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5662(choice, ...) METALANG99_PRIV_REC_NEXT(5663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5663(choice, ...) METALANG99_PRIV_REC_NEXT(5664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5664(choice, ...) METALANG99_PRIV_REC_NEXT(5665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5665(choice, ...) METALANG99_PRIV_REC_NEXT(5666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5666(choice, ...) METALANG99_PRIV_REC_NEXT(5667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5667(choice, ...) METALANG99_PRIV_REC_NEXT(5668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5668(choice, ...) METALANG99_PRIV_REC_NEXT(5669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5669(choice, ...) METALANG99_PRIV_REC_NEXT(5670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5670(choice, ...) METALANG99_PRIV_REC_NEXT(5671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5671(choice, ...) METALANG99_PRIV_REC_NEXT(5672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5672(choice, ...) METALANG99_PRIV_REC_NEXT(5673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5673(choice, ...) METALANG99_PRIV_REC_NEXT(5674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5674(choice, ...) METALANG99_PRIV_REC_NEXT(5675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5675(choice, ...) METALANG99_PRIV_REC_NEXT(5676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5676(choice, ...) METALANG99_PRIV_REC_NEXT(5677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5677(choice, ...) METALANG99_PRIV_REC_NEXT(5678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5678(choice, ...) METALANG99_PRIV_REC_NEXT(5679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5679(choice, ...) METALANG99_PRIV_REC_NEXT(5680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5680(choice, ...) METALANG99_PRIV_REC_NEXT(5681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5681(choice, ...) METALANG99_PRIV_REC_NEXT(5682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5682(choice, ...) METALANG99_PRIV_REC_NEXT(5683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5683(choice, ...) METALANG99_PRIV_REC_NEXT(5684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5684(choice, ...) METALANG99_PRIV_REC_NEXT(5685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5685(choice, ...) METALANG99_PRIV_REC_NEXT(5686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5686(choice, ...) METALANG99_PRIV_REC_NEXT(5687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5687(choice, ...) METALANG99_PRIV_REC_NEXT(5688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5688(choice, ...) METALANG99_PRIV_REC_NEXT(5689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5689(choice, ...) METALANG99_PRIV_REC_NEXT(5690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5690(choice, ...) METALANG99_PRIV_REC_NEXT(5691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5691(choice, ...) METALANG99_PRIV_REC_NEXT(5692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5692(choice, ...) METALANG99_PRIV_REC_NEXT(5693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5693(choice, ...) METALANG99_PRIV_REC_NEXT(5694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5694(choice, ...) METALANG99_PRIV_REC_NEXT(5695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5695(choice, ...) METALANG99_PRIV_REC_NEXT(5696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5696(choice, ...) METALANG99_PRIV_REC_NEXT(5697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5697(choice, ...) METALANG99_PRIV_REC_NEXT(5698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5698(choice, ...) METALANG99_PRIV_REC_NEXT(5699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5699(choice, ...) METALANG99_PRIV_REC_NEXT(5700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5700(choice, ...) METALANG99_PRIV_REC_NEXT(5701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5701(choice, ...) METALANG99_PRIV_REC_NEXT(5702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5702(choice, ...) METALANG99_PRIV_REC_NEXT(5703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5703(choice, ...) METALANG99_PRIV_REC_NEXT(5704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5704(choice, ...) METALANG99_PRIV_REC_NEXT(5705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5705(choice, ...) METALANG99_PRIV_REC_NEXT(5706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5706(choice, ...) METALANG99_PRIV_REC_NEXT(5707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5707(choice, ...) METALANG99_PRIV_REC_NEXT(5708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5708(choice, ...) METALANG99_PRIV_REC_NEXT(5709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5709(choice, ...) METALANG99_PRIV_REC_NEXT(5710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5710(choice, ...) METALANG99_PRIV_REC_NEXT(5711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5711(choice, ...) METALANG99_PRIV_REC_NEXT(5712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5712(choice, ...) METALANG99_PRIV_REC_NEXT(5713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5713(choice, ...) METALANG99_PRIV_REC_NEXT(5714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5714(choice, ...) METALANG99_PRIV_REC_NEXT(5715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5715(choice, ...) METALANG99_PRIV_REC_NEXT(5716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5716(choice, ...) METALANG99_PRIV_REC_NEXT(5717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5717(choice, ...) METALANG99_PRIV_REC_NEXT(5718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5718(choice, ...) METALANG99_PRIV_REC_NEXT(5719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5719(choice, ...) METALANG99_PRIV_REC_NEXT(5720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5720(choice, ...) METALANG99_PRIV_REC_NEXT(5721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5721(choice, ...) METALANG99_PRIV_REC_NEXT(5722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5722(choice, ...) METALANG99_PRIV_REC_NEXT(5723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5723(choice, ...) METALANG99_PRIV_REC_NEXT(5724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5724(choice, ...) METALANG99_PRIV_REC_NEXT(5725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5725(choice, ...) METALANG99_PRIV_REC_NEXT(5726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5726(choice, ...) METALANG99_PRIV_REC_NEXT(5727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5727(choice, ...) METALANG99_PRIV_REC_NEXT(5728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5728(choice, ...) METALANG99_PRIV_REC_NEXT(5729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5729(choice, ...) METALANG99_PRIV_REC_NEXT(5730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5730(choice, ...) METALANG99_PRIV_REC_NEXT(5731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5731(choice, ...) METALANG99_PRIV_REC_NEXT(5732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5732(choice, ...) METALANG99_PRIV_REC_NEXT(5733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5733(choice, ...) METALANG99_PRIV_REC_NEXT(5734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5734(choice, ...) METALANG99_PRIV_REC_NEXT(5735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5735(choice, ...) METALANG99_PRIV_REC_NEXT(5736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5736(choice, ...) METALANG99_PRIV_REC_NEXT(5737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5737(choice, ...) METALANG99_PRIV_REC_NEXT(5738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5738(choice, ...) METALANG99_PRIV_REC_NEXT(5739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5739(choice, ...) METALANG99_PRIV_REC_NEXT(5740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5740(choice, ...) METALANG99_PRIV_REC_NEXT(5741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5741(choice, ...) METALANG99_PRIV_REC_NEXT(5742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5742(choice, ...) METALANG99_PRIV_REC_NEXT(5743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5743(choice, ...) METALANG99_PRIV_REC_NEXT(5744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5744(choice, ...) METALANG99_PRIV_REC_NEXT(5745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5745(choice, ...) METALANG99_PRIV_REC_NEXT(5746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5746(choice, ...) METALANG99_PRIV_REC_NEXT(5747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5747(choice, ...) METALANG99_PRIV_REC_NEXT(5748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5748(choice, ...) METALANG99_PRIV_REC_NEXT(5749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5749(choice, ...) METALANG99_PRIV_REC_NEXT(5750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5750(choice, ...) METALANG99_PRIV_REC_NEXT(5751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5751(choice, ...) METALANG99_PRIV_REC_NEXT(5752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5752(choice, ...) METALANG99_PRIV_REC_NEXT(5753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5753(choice, ...) METALANG99_PRIV_REC_NEXT(5754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5754(choice, ...) METALANG99_PRIV_REC_NEXT(5755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5755(choice, ...) METALANG99_PRIV_REC_NEXT(5756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5756(choice, ...) METALANG99_PRIV_REC_NEXT(5757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5757(choice, ...) METALANG99_PRIV_REC_NEXT(5758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5758(choice, ...) METALANG99_PRIV_REC_NEXT(5759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5759(choice, ...) METALANG99_PRIV_REC_NEXT(5760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5760(choice, ...) METALANG99_PRIV_REC_NEXT(5761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5761(choice, ...) METALANG99_PRIV_REC_NEXT(5762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5762(choice, ...) METALANG99_PRIV_REC_NEXT(5763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5763(choice, ...) METALANG99_PRIV_REC_NEXT(5764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5764(choice, ...) METALANG99_PRIV_REC_NEXT(5765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5765(choice, ...) METALANG99_PRIV_REC_NEXT(5766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5766(choice, ...) METALANG99_PRIV_REC_NEXT(5767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5767(choice, ...) METALANG99_PRIV_REC_NEXT(5768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5768(choice, ...) METALANG99_PRIV_REC_NEXT(5769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5769(choice, ...) METALANG99_PRIV_REC_NEXT(5770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5770(choice, ...) METALANG99_PRIV_REC_NEXT(5771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5771(choice, ...) METALANG99_PRIV_REC_NEXT(5772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5772(choice, ...) METALANG99_PRIV_REC_NEXT(5773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5773(choice, ...) METALANG99_PRIV_REC_NEXT(5774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5774(choice, ...) METALANG99_PRIV_REC_NEXT(5775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5775(choice, ...) METALANG99_PRIV_REC_NEXT(5776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5776(choice, ...) METALANG99_PRIV_REC_NEXT(5777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5777(choice, ...) METALANG99_PRIV_REC_NEXT(5778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5778(choice, ...) METALANG99_PRIV_REC_NEXT(5779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5779(choice, ...) METALANG99_PRIV_REC_NEXT(5780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5780(choice, ...) METALANG99_PRIV_REC_NEXT(5781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5781(choice, ...) METALANG99_PRIV_REC_NEXT(5782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5782(choice, ...) METALANG99_PRIV_REC_NEXT(5783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5783(choice, ...) METALANG99_PRIV_REC_NEXT(5784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5784(choice, ...) METALANG99_PRIV_REC_NEXT(5785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5785(choice, ...) METALANG99_PRIV_REC_NEXT(5786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5786(choice, ...) METALANG99_PRIV_REC_NEXT(5787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5787(choice, ...) METALANG99_PRIV_REC_NEXT(5788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5788(choice, ...) METALANG99_PRIV_REC_NEXT(5789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5789(choice, ...) METALANG99_PRIV_REC_NEXT(5790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5790(choice, ...) METALANG99_PRIV_REC_NEXT(5791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5791(choice, ...) METALANG99_PRIV_REC_NEXT(5792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5792(choice, ...) METALANG99_PRIV_REC_NEXT(5793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5793(choice, ...) METALANG99_PRIV_REC_NEXT(5794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5794(choice, ...) METALANG99_PRIV_REC_NEXT(5795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5795(choice, ...) METALANG99_PRIV_REC_NEXT(5796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5796(choice, ...) METALANG99_PRIV_REC_NEXT(5797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5797(choice, ...) METALANG99_PRIV_REC_NEXT(5798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5798(choice, ...) METALANG99_PRIV_REC_NEXT(5799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5799(choice, ...) METALANG99_PRIV_REC_NEXT(5800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5800(choice, ...) METALANG99_PRIV_REC_NEXT(5801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5801(choice, ...) METALANG99_PRIV_REC_NEXT(5802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5802(choice, ...) METALANG99_PRIV_REC_NEXT(5803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5803(choice, ...) METALANG99_PRIV_REC_NEXT(5804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5804(choice, ...) METALANG99_PRIV_REC_NEXT(5805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5805(choice, ...) METALANG99_PRIV_REC_NEXT(5806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5806(choice, ...) METALANG99_PRIV_REC_NEXT(5807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5807(choice, ...) METALANG99_PRIV_REC_NEXT(5808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5808(choice, ...) METALANG99_PRIV_REC_NEXT(5809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5809(choice, ...) METALANG99_PRIV_REC_NEXT(5810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5810(choice, ...) METALANG99_PRIV_REC_NEXT(5811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5811(choice, ...) METALANG99_PRIV_REC_NEXT(5812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5812(choice, ...) METALANG99_PRIV_REC_NEXT(5813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5813(choice, ...) METALANG99_PRIV_REC_NEXT(5814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5814(choice, ...) METALANG99_PRIV_REC_NEXT(5815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5815(choice, ...) METALANG99_PRIV_REC_NEXT(5816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5816(choice, ...) METALANG99_PRIV_REC_NEXT(5817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5817(choice, ...) METALANG99_PRIV_REC_NEXT(5818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5818(choice, ...) METALANG99_PRIV_REC_NEXT(5819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5819(choice, ...) METALANG99_PRIV_REC_NEXT(5820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5820(choice, ...) METALANG99_PRIV_REC_NEXT(5821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5821(choice, ...) METALANG99_PRIV_REC_NEXT(5822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5822(choice, ...) METALANG99_PRIV_REC_NEXT(5823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5823(choice, ...) METALANG99_PRIV_REC_NEXT(5824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5824(choice, ...) METALANG99_PRIV_REC_NEXT(5825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5825(choice, ...) METALANG99_PRIV_REC_NEXT(5826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5826(choice, ...) METALANG99_PRIV_REC_NEXT(5827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5827(choice, ...) METALANG99_PRIV_REC_NEXT(5828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5828(choice, ...) METALANG99_PRIV_REC_NEXT(5829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5829(choice, ...) METALANG99_PRIV_REC_NEXT(5830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5830(choice, ...) METALANG99_PRIV_REC_NEXT(5831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5831(choice, ...) METALANG99_PRIV_REC_NEXT(5832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5832(choice, ...) METALANG99_PRIV_REC_NEXT(5833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5833(choice, ...) METALANG99_PRIV_REC_NEXT(5834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5834(choice, ...) METALANG99_PRIV_REC_NEXT(5835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5835(choice, ...) METALANG99_PRIV_REC_NEXT(5836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5836(choice, ...) METALANG99_PRIV_REC_NEXT(5837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5837(choice, ...) METALANG99_PRIV_REC_NEXT(5838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5838(choice, ...) METALANG99_PRIV_REC_NEXT(5839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5839(choice, ...) METALANG99_PRIV_REC_NEXT(5840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5840(choice, ...) METALANG99_PRIV_REC_NEXT(5841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5841(choice, ...) METALANG99_PRIV_REC_NEXT(5842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5842(choice, ...) METALANG99_PRIV_REC_NEXT(5843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5843(choice, ...) METALANG99_PRIV_REC_NEXT(5844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5844(choice, ...) METALANG99_PRIV_REC_NEXT(5845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5845(choice, ...) METALANG99_PRIV_REC_NEXT(5846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5846(choice, ...) METALANG99_PRIV_REC_NEXT(5847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5847(choice, ...) METALANG99_PRIV_REC_NEXT(5848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5848(choice, ...) METALANG99_PRIV_REC_NEXT(5849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5849(choice, ...) METALANG99_PRIV_REC_NEXT(5850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5850(choice, ...) METALANG99_PRIV_REC_NEXT(5851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5851(choice, ...) METALANG99_PRIV_REC_NEXT(5852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5852(choice, ...) METALANG99_PRIV_REC_NEXT(5853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5853(choice, ...) METALANG99_PRIV_REC_NEXT(5854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5854(choice, ...) METALANG99_PRIV_REC_NEXT(5855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5855(choice, ...) METALANG99_PRIV_REC_NEXT(5856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5856(choice, ...) METALANG99_PRIV_REC_NEXT(5857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5857(choice, ...) METALANG99_PRIV_REC_NEXT(5858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5858(choice, ...) METALANG99_PRIV_REC_NEXT(5859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5859(choice, ...) METALANG99_PRIV_REC_NEXT(5860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5860(choice, ...) METALANG99_PRIV_REC_NEXT(5861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5861(choice, ...) METALANG99_PRIV_REC_NEXT(5862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5862(choice, ...) METALANG99_PRIV_REC_NEXT(5863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5863(choice, ...) METALANG99_PRIV_REC_NEXT(5864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5864(choice, ...) METALANG99_PRIV_REC_NEXT(5865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5865(choice, ...) METALANG99_PRIV_REC_NEXT(5866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5866(choice, ...) METALANG99_PRIV_REC_NEXT(5867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5867(choice, ...) METALANG99_PRIV_REC_NEXT(5868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5868(choice, ...) METALANG99_PRIV_REC_NEXT(5869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5869(choice, ...) METALANG99_PRIV_REC_NEXT(5870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5870(choice, ...) METALANG99_PRIV_REC_NEXT(5871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5871(choice, ...) METALANG99_PRIV_REC_NEXT(5872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5872(choice, ...) METALANG99_PRIV_REC_NEXT(5873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5873(choice, ...) METALANG99_PRIV_REC_NEXT(5874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5874(choice, ...) METALANG99_PRIV_REC_NEXT(5875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5875(choice, ...) METALANG99_PRIV_REC_NEXT(5876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5876(choice, ...) METALANG99_PRIV_REC_NEXT(5877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5877(choice, ...) METALANG99_PRIV_REC_NEXT(5878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5878(choice, ...) METALANG99_PRIV_REC_NEXT(5879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5879(choice, ...) METALANG99_PRIV_REC_NEXT(5880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5880(choice, ...) METALANG99_PRIV_REC_NEXT(5881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5881(choice, ...) METALANG99_PRIV_REC_NEXT(5882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5882(choice, ...) METALANG99_PRIV_REC_NEXT(5883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5883(choice, ...) METALANG99_PRIV_REC_NEXT(5884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5884(choice, ...) METALANG99_PRIV_REC_NEXT(5885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5885(choice, ...) METALANG99_PRIV_REC_NEXT(5886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5886(choice, ...) METALANG99_PRIV_REC_NEXT(5887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5887(choice, ...) METALANG99_PRIV_REC_NEXT(5888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5888(choice, ...) METALANG99_PRIV_REC_NEXT(5889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5889(choice, ...) METALANG99_PRIV_REC_NEXT(5890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5890(choice, ...) METALANG99_PRIV_REC_NEXT(5891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5891(choice, ...) METALANG99_PRIV_REC_NEXT(5892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5892(choice, ...) METALANG99_PRIV_REC_NEXT(5893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5893(choice, ...) METALANG99_PRIV_REC_NEXT(5894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5894(choice, ...) METALANG99_PRIV_REC_NEXT(5895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5895(choice, ...) METALANG99_PRIV_REC_NEXT(5896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5896(choice, ...) METALANG99_PRIV_REC_NEXT(5897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5897(choice, ...) METALANG99_PRIV_REC_NEXT(5898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5898(choice, ...) METALANG99_PRIV_REC_NEXT(5899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5899(choice, ...) METALANG99_PRIV_REC_NEXT(5900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5900(choice, ...) METALANG99_PRIV_REC_NEXT(5901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5901(choice, ...) METALANG99_PRIV_REC_NEXT(5902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5902(choice, ...) METALANG99_PRIV_REC_NEXT(5903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5903(choice, ...) METALANG99_PRIV_REC_NEXT(5904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5904(choice, ...) METALANG99_PRIV_REC_NEXT(5905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5905(choice, ...) METALANG99_PRIV_REC_NEXT(5906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5906(choice, ...) METALANG99_PRIV_REC_NEXT(5907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5907(choice, ...) METALANG99_PRIV_REC_NEXT(5908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5908(choice, ...) METALANG99_PRIV_REC_NEXT(5909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5909(choice, ...) METALANG99_PRIV_REC_NEXT(5910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5910(choice, ...) METALANG99_PRIV_REC_NEXT(5911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5911(choice, ...) METALANG99_PRIV_REC_NEXT(5912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5912(choice, ...) METALANG99_PRIV_REC_NEXT(5913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5913(choice, ...) METALANG99_PRIV_REC_NEXT(5914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5914(choice, ...) METALANG99_PRIV_REC_NEXT(5915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5915(choice, ...) METALANG99_PRIV_REC_NEXT(5916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5916(choice, ...) METALANG99_PRIV_REC_NEXT(5917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5917(choice, ...) METALANG99_PRIV_REC_NEXT(5918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5918(choice, ...) METALANG99_PRIV_REC_NEXT(5919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5919(choice, ...) METALANG99_PRIV_REC_NEXT(5920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5920(choice, ...) METALANG99_PRIV_REC_NEXT(5921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5921(choice, ...) METALANG99_PRIV_REC_NEXT(5922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5922(choice, ...) METALANG99_PRIV_REC_NEXT(5923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5923(choice, ...) METALANG99_PRIV_REC_NEXT(5924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5924(choice, ...) METALANG99_PRIV_REC_NEXT(5925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5925(choice, ...) METALANG99_PRIV_REC_NEXT(5926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5926(choice, ...) METALANG99_PRIV_REC_NEXT(5927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5927(choice, ...) METALANG99_PRIV_REC_NEXT(5928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5928(choice, ...) METALANG99_PRIV_REC_NEXT(5929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5929(choice, ...) METALANG99_PRIV_REC_NEXT(5930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5930(choice, ...) METALANG99_PRIV_REC_NEXT(5931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5931(choice, ...) METALANG99_PRIV_REC_NEXT(5932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5932(choice, ...) METALANG99_PRIV_REC_NEXT(5933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5933(choice, ...) METALANG99_PRIV_REC_NEXT(5934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5934(choice, ...) METALANG99_PRIV_REC_NEXT(5935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5935(choice, ...) METALANG99_PRIV_REC_NEXT(5936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5936(choice, ...) METALANG99_PRIV_REC_NEXT(5937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5937(choice, ...) METALANG99_PRIV_REC_NEXT(5938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5938(choice, ...) METALANG99_PRIV_REC_NEXT(5939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5939(choice, ...) METALANG99_PRIV_REC_NEXT(5940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5940(choice, ...) METALANG99_PRIV_REC_NEXT(5941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5941(choice, ...) METALANG99_PRIV_REC_NEXT(5942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5942(choice, ...) METALANG99_PRIV_REC_NEXT(5943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5943(choice, ...) METALANG99_PRIV_REC_NEXT(5944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5944(choice, ...) METALANG99_PRIV_REC_NEXT(5945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5945(choice, ...) METALANG99_PRIV_REC_NEXT(5946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5946(choice, ...) METALANG99_PRIV_REC_NEXT(5947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5947(choice, ...) METALANG99_PRIV_REC_NEXT(5948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5948(choice, ...) METALANG99_PRIV_REC_NEXT(5949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5949(choice, ...) METALANG99_PRIV_REC_NEXT(5950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5950(choice, ...) METALANG99_PRIV_REC_NEXT(5951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5951(choice, ...) METALANG99_PRIV_REC_NEXT(5952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5952(choice, ...) METALANG99_PRIV_REC_NEXT(5953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5953(choice, ...) METALANG99_PRIV_REC_NEXT(5954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5954(choice, ...) METALANG99_PRIV_REC_NEXT(5955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5955(choice, ...) METALANG99_PRIV_REC_NEXT(5956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5956(choice, ...) METALANG99_PRIV_REC_NEXT(5957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5957(choice, ...) METALANG99_PRIV_REC_NEXT(5958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5958(choice, ...) METALANG99_PRIV_REC_NEXT(5959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5959(choice, ...) METALANG99_PRIV_REC_NEXT(5960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5960(choice, ...) METALANG99_PRIV_REC_NEXT(5961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5961(choice, ...) METALANG99_PRIV_REC_NEXT(5962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5962(choice, ...) METALANG99_PRIV_REC_NEXT(5963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5963(choice, ...) METALANG99_PRIV_REC_NEXT(5964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5964(choice, ...) METALANG99_PRIV_REC_NEXT(5965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5965(choice, ...) METALANG99_PRIV_REC_NEXT(5966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5966(choice, ...) METALANG99_PRIV_REC_NEXT(5967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5967(choice, ...) METALANG99_PRIV_REC_NEXT(5968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5968(choice, ...) METALANG99_PRIV_REC_NEXT(5969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5969(choice, ...) METALANG99_PRIV_REC_NEXT(5970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5970(choice, ...) METALANG99_PRIV_REC_NEXT(5971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5971(choice, ...) METALANG99_PRIV_REC_NEXT(5972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5972(choice, ...) METALANG99_PRIV_REC_NEXT(5973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5973(choice, ...) METALANG99_PRIV_REC_NEXT(5974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5974(choice, ...) METALANG99_PRIV_REC_NEXT(5975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5975(choice, ...) METALANG99_PRIV_REC_NEXT(5976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5976(choice, ...) METALANG99_PRIV_REC_NEXT(5977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5977(choice, ...) METALANG99_PRIV_REC_NEXT(5978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5978(choice, ...) METALANG99_PRIV_REC_NEXT(5979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5979(choice, ...) METALANG99_PRIV_REC_NEXT(5980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5980(choice, ...) METALANG99_PRIV_REC_NEXT(5981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5981(choice, ...) METALANG99_PRIV_REC_NEXT(5982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5982(choice, ...) METALANG99_PRIV_REC_NEXT(5983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5983(choice, ...) METALANG99_PRIV_REC_NEXT(5984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5984(choice, ...) METALANG99_PRIV_REC_NEXT(5985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5985(choice, ...) METALANG99_PRIV_REC_NEXT(5986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5986(choice, ...) METALANG99_PRIV_REC_NEXT(5987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5987(choice, ...) METALANG99_PRIV_REC_NEXT(5988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5988(choice, ...) METALANG99_PRIV_REC_NEXT(5989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5989(choice, ...) METALANG99_PRIV_REC_NEXT(5990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5990(choice, ...) METALANG99_PRIV_REC_NEXT(5991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5991(choice, ...) METALANG99_PRIV_REC_NEXT(5992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5992(choice, ...) METALANG99_PRIV_REC_NEXT(5993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5993(choice, ...) METALANG99_PRIV_REC_NEXT(5994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5994(choice, ...) METALANG99_PRIV_REC_NEXT(5995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5995(choice, ...) METALANG99_PRIV_REC_NEXT(5996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5996(choice, ...) METALANG99_PRIV_REC_NEXT(5997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5997(choice, ...) METALANG99_PRIV_REC_NEXT(5998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5998(choice, ...) METALANG99_PRIV_REC_NEXT(5999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_5999(choice, ...) METALANG99_PRIV_REC_NEXT(6000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6000(choice, ...) METALANG99_PRIV_REC_NEXT(6001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6001(choice, ...) METALANG99_PRIV_REC_NEXT(6002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6002(choice, ...) METALANG99_PRIV_REC_NEXT(6003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6003(choice, ...) METALANG99_PRIV_REC_NEXT(6004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6004(choice, ...) METALANG99_PRIV_REC_NEXT(6005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6005(choice, ...) METALANG99_PRIV_REC_NEXT(6006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6006(choice, ...) METALANG99_PRIV_REC_NEXT(6007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6007(choice, ...) METALANG99_PRIV_REC_NEXT(6008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6008(choice, ...) METALANG99_PRIV_REC_NEXT(6009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6009(choice, ...) METALANG99_PRIV_REC_NEXT(6010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6010(choice, ...) METALANG99_PRIV_REC_NEXT(6011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6011(choice, ...) METALANG99_PRIV_REC_NEXT(6012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6012(choice, ...) METALANG99_PRIV_REC_NEXT(6013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6013(choice, ...) METALANG99_PRIV_REC_NEXT(6014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6014(choice, ...) METALANG99_PRIV_REC_NEXT(6015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6015(choice, ...) METALANG99_PRIV_REC_NEXT(6016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6016(choice, ...) METALANG99_PRIV_REC_NEXT(6017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6017(choice, ...) METALANG99_PRIV_REC_NEXT(6018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6018(choice, ...) METALANG99_PRIV_REC_NEXT(6019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6019(choice, ...) METALANG99_PRIV_REC_NEXT(6020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6020(choice, ...) METALANG99_PRIV_REC_NEXT(6021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6021(choice, ...) METALANG99_PRIV_REC_NEXT(6022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6022(choice, ...) METALANG99_PRIV_REC_NEXT(6023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6023(choice, ...) METALANG99_PRIV_REC_NEXT(6024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6024(choice, ...) METALANG99_PRIV_REC_NEXT(6025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6025(choice, ...) METALANG99_PRIV_REC_NEXT(6026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6026(choice, ...) METALANG99_PRIV_REC_NEXT(6027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6027(choice, ...) METALANG99_PRIV_REC_NEXT(6028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6028(choice, ...) METALANG99_PRIV_REC_NEXT(6029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6029(choice, ...) METALANG99_PRIV_REC_NEXT(6030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6030(choice, ...) METALANG99_PRIV_REC_NEXT(6031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6031(choice, ...) METALANG99_PRIV_REC_NEXT(6032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6032(choice, ...) METALANG99_PRIV_REC_NEXT(6033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6033(choice, ...) METALANG99_PRIV_REC_NEXT(6034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6034(choice, ...) METALANG99_PRIV_REC_NEXT(6035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6035(choice, ...) METALANG99_PRIV_REC_NEXT(6036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6036(choice, ...) METALANG99_PRIV_REC_NEXT(6037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6037(choice, ...) METALANG99_PRIV_REC_NEXT(6038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6038(choice, ...) METALANG99_PRIV_REC_NEXT(6039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6039(choice, ...) METALANG99_PRIV_REC_NEXT(6040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6040(choice, ...) METALANG99_PRIV_REC_NEXT(6041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6041(choice, ...) METALANG99_PRIV_REC_NEXT(6042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6042(choice, ...) METALANG99_PRIV_REC_NEXT(6043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6043(choice, ...) METALANG99_PRIV_REC_NEXT(6044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6044(choice, ...) METALANG99_PRIV_REC_NEXT(6045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6045(choice, ...) METALANG99_PRIV_REC_NEXT(6046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6046(choice, ...) METALANG99_PRIV_REC_NEXT(6047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6047(choice, ...) METALANG99_PRIV_REC_NEXT(6048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6048(choice, ...) METALANG99_PRIV_REC_NEXT(6049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6049(choice, ...) METALANG99_PRIV_REC_NEXT(6050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6050(choice, ...) METALANG99_PRIV_REC_NEXT(6051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6051(choice, ...) METALANG99_PRIV_REC_NEXT(6052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6052(choice, ...) METALANG99_PRIV_REC_NEXT(6053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6053(choice, ...) METALANG99_PRIV_REC_NEXT(6054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6054(choice, ...) METALANG99_PRIV_REC_NEXT(6055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6055(choice, ...) METALANG99_PRIV_REC_NEXT(6056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6056(choice, ...) METALANG99_PRIV_REC_NEXT(6057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6057(choice, ...) METALANG99_PRIV_REC_NEXT(6058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6058(choice, ...) METALANG99_PRIV_REC_NEXT(6059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6059(choice, ...) METALANG99_PRIV_REC_NEXT(6060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6060(choice, ...) METALANG99_PRIV_REC_NEXT(6061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6061(choice, ...) METALANG99_PRIV_REC_NEXT(6062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6062(choice, ...) METALANG99_PRIV_REC_NEXT(6063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6063(choice, ...) METALANG99_PRIV_REC_NEXT(6064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6064(choice, ...) METALANG99_PRIV_REC_NEXT(6065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6065(choice, ...) METALANG99_PRIV_REC_NEXT(6066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6066(choice, ...) METALANG99_PRIV_REC_NEXT(6067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6067(choice, ...) METALANG99_PRIV_REC_NEXT(6068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6068(choice, ...) METALANG99_PRIV_REC_NEXT(6069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6069(choice, ...) METALANG99_PRIV_REC_NEXT(6070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6070(choice, ...) METALANG99_PRIV_REC_NEXT(6071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6071(choice, ...) METALANG99_PRIV_REC_NEXT(6072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6072(choice, ...) METALANG99_PRIV_REC_NEXT(6073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6073(choice, ...) METALANG99_PRIV_REC_NEXT(6074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6074(choice, ...) METALANG99_PRIV_REC_NEXT(6075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6075(choice, ...) METALANG99_PRIV_REC_NEXT(6076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6076(choice, ...) METALANG99_PRIV_REC_NEXT(6077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6077(choice, ...) METALANG99_PRIV_REC_NEXT(6078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6078(choice, ...) METALANG99_PRIV_REC_NEXT(6079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6079(choice, ...) METALANG99_PRIV_REC_NEXT(6080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6080(choice, ...) METALANG99_PRIV_REC_NEXT(6081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6081(choice, ...) METALANG99_PRIV_REC_NEXT(6082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6082(choice, ...) METALANG99_PRIV_REC_NEXT(6083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6083(choice, ...) METALANG99_PRIV_REC_NEXT(6084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6084(choice, ...) METALANG99_PRIV_REC_NEXT(6085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6085(choice, ...) METALANG99_PRIV_REC_NEXT(6086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6086(choice, ...) METALANG99_PRIV_REC_NEXT(6087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6087(choice, ...) METALANG99_PRIV_REC_NEXT(6088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6088(choice, ...) METALANG99_PRIV_REC_NEXT(6089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6089(choice, ...) METALANG99_PRIV_REC_NEXT(6090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6090(choice, ...) METALANG99_PRIV_REC_NEXT(6091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6091(choice, ...) METALANG99_PRIV_REC_NEXT(6092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6092(choice, ...) METALANG99_PRIV_REC_NEXT(6093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6093(choice, ...) METALANG99_PRIV_REC_NEXT(6094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6094(choice, ...) METALANG99_PRIV_REC_NEXT(6095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6095(choice, ...) METALANG99_PRIV_REC_NEXT(6096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6096(choice, ...) METALANG99_PRIV_REC_NEXT(6097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6097(choice, ...) METALANG99_PRIV_REC_NEXT(6098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6098(choice, ...) METALANG99_PRIV_REC_NEXT(6099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6099(choice, ...) METALANG99_PRIV_REC_NEXT(6100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6100(choice, ...) METALANG99_PRIV_REC_NEXT(6101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6101(choice, ...) METALANG99_PRIV_REC_NEXT(6102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6102(choice, ...) METALANG99_PRIV_REC_NEXT(6103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6103(choice, ...) METALANG99_PRIV_REC_NEXT(6104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6104(choice, ...) METALANG99_PRIV_REC_NEXT(6105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6105(choice, ...) METALANG99_PRIV_REC_NEXT(6106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6106(choice, ...) METALANG99_PRIV_REC_NEXT(6107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6107(choice, ...) METALANG99_PRIV_REC_NEXT(6108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6108(choice, ...) METALANG99_PRIV_REC_NEXT(6109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6109(choice, ...) METALANG99_PRIV_REC_NEXT(6110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6110(choice, ...) METALANG99_PRIV_REC_NEXT(6111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6111(choice, ...) METALANG99_PRIV_REC_NEXT(6112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6112(choice, ...) METALANG99_PRIV_REC_NEXT(6113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6113(choice, ...) METALANG99_PRIV_REC_NEXT(6114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6114(choice, ...) METALANG99_PRIV_REC_NEXT(6115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6115(choice, ...) METALANG99_PRIV_REC_NEXT(6116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6116(choice, ...) METALANG99_PRIV_REC_NEXT(6117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6117(choice, ...) METALANG99_PRIV_REC_NEXT(6118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6118(choice, ...) METALANG99_PRIV_REC_NEXT(6119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6119(choice, ...) METALANG99_PRIV_REC_NEXT(6120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6120(choice, ...) METALANG99_PRIV_REC_NEXT(6121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6121(choice, ...) METALANG99_PRIV_REC_NEXT(6122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6122(choice, ...) METALANG99_PRIV_REC_NEXT(6123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6123(choice, ...) METALANG99_PRIV_REC_NEXT(6124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6124(choice, ...) METALANG99_PRIV_REC_NEXT(6125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6125(choice, ...) METALANG99_PRIV_REC_NEXT(6126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6126(choice, ...) METALANG99_PRIV_REC_NEXT(6127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6127(choice, ...) METALANG99_PRIV_REC_NEXT(6128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6128(choice, ...) METALANG99_PRIV_REC_NEXT(6129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6129(choice, ...) METALANG99_PRIV_REC_NEXT(6130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6130(choice, ...) METALANG99_PRIV_REC_NEXT(6131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6131(choice, ...) METALANG99_PRIV_REC_NEXT(6132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6132(choice, ...) METALANG99_PRIV_REC_NEXT(6133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6133(choice, ...) METALANG99_PRIV_REC_NEXT(6134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6134(choice, ...) METALANG99_PRIV_REC_NEXT(6135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6135(choice, ...) METALANG99_PRIV_REC_NEXT(6136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6136(choice, ...) METALANG99_PRIV_REC_NEXT(6137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6137(choice, ...) METALANG99_PRIV_REC_NEXT(6138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6138(choice, ...) METALANG99_PRIV_REC_NEXT(6139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6139(choice, ...) METALANG99_PRIV_REC_NEXT(6140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6140(choice, ...) METALANG99_PRIV_REC_NEXT(6141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6141(choice, ...) METALANG99_PRIV_REC_NEXT(6142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6142(choice, ...) METALANG99_PRIV_REC_NEXT(6143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6143(choice, ...) METALANG99_PRIV_REC_NEXT(6144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6144(choice, ...) METALANG99_PRIV_REC_NEXT(6145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6145(choice, ...) METALANG99_PRIV_REC_NEXT(6146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6146(choice, ...) METALANG99_PRIV_REC_NEXT(6147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6147(choice, ...) METALANG99_PRIV_REC_NEXT(6148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6148(choice, ...) METALANG99_PRIV_REC_NEXT(6149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6149(choice, ...) METALANG99_PRIV_REC_NEXT(6150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6150(choice, ...) METALANG99_PRIV_REC_NEXT(6151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6151(choice, ...) METALANG99_PRIV_REC_NEXT(6152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6152(choice, ...) METALANG99_PRIV_REC_NEXT(6153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6153(choice, ...) METALANG99_PRIV_REC_NEXT(6154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6154(choice, ...) METALANG99_PRIV_REC_NEXT(6155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6155(choice, ...) METALANG99_PRIV_REC_NEXT(6156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6156(choice, ...) METALANG99_PRIV_REC_NEXT(6157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6157(choice, ...) METALANG99_PRIV_REC_NEXT(6158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6158(choice, ...) METALANG99_PRIV_REC_NEXT(6159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6159(choice, ...) METALANG99_PRIV_REC_NEXT(6160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6160(choice, ...) METALANG99_PRIV_REC_NEXT(6161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6161(choice, ...) METALANG99_PRIV_REC_NEXT(6162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6162(choice, ...) METALANG99_PRIV_REC_NEXT(6163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6163(choice, ...) METALANG99_PRIV_REC_NEXT(6164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6164(choice, ...) METALANG99_PRIV_REC_NEXT(6165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6165(choice, ...) METALANG99_PRIV_REC_NEXT(6166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6166(choice, ...) METALANG99_PRIV_REC_NEXT(6167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6167(choice, ...) METALANG99_PRIV_REC_NEXT(6168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6168(choice, ...) METALANG99_PRIV_REC_NEXT(6169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6169(choice, ...) METALANG99_PRIV_REC_NEXT(6170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6170(choice, ...) METALANG99_PRIV_REC_NEXT(6171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6171(choice, ...) METALANG99_PRIV_REC_NEXT(6172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6172(choice, ...) METALANG99_PRIV_REC_NEXT(6173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6173(choice, ...) METALANG99_PRIV_REC_NEXT(6174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6174(choice, ...) METALANG99_PRIV_REC_NEXT(6175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6175(choice, ...) METALANG99_PRIV_REC_NEXT(6176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6176(choice, ...) METALANG99_PRIV_REC_NEXT(6177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6177(choice, ...) METALANG99_PRIV_REC_NEXT(6178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6178(choice, ...) METALANG99_PRIV_REC_NEXT(6179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6179(choice, ...) METALANG99_PRIV_REC_NEXT(6180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6180(choice, ...) METALANG99_PRIV_REC_NEXT(6181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6181(choice, ...) METALANG99_PRIV_REC_NEXT(6182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6182(choice, ...) METALANG99_PRIV_REC_NEXT(6183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6183(choice, ...) METALANG99_PRIV_REC_NEXT(6184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6184(choice, ...) METALANG99_PRIV_REC_NEXT(6185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6185(choice, ...) METALANG99_PRIV_REC_NEXT(6186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6186(choice, ...) METALANG99_PRIV_REC_NEXT(6187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6187(choice, ...) METALANG99_PRIV_REC_NEXT(6188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6188(choice, ...) METALANG99_PRIV_REC_NEXT(6189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6189(choice, ...) METALANG99_PRIV_REC_NEXT(6190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6190(choice, ...) METALANG99_PRIV_REC_NEXT(6191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6191(choice, ...) METALANG99_PRIV_REC_NEXT(6192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6192(choice, ...) METALANG99_PRIV_REC_NEXT(6193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6193(choice, ...) METALANG99_PRIV_REC_NEXT(6194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6194(choice, ...) METALANG99_PRIV_REC_NEXT(6195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6195(choice, ...) METALANG99_PRIV_REC_NEXT(6196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6196(choice, ...) METALANG99_PRIV_REC_NEXT(6197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6197(choice, ...) METALANG99_PRIV_REC_NEXT(6198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6198(choice, ...) METALANG99_PRIV_REC_NEXT(6199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6199(choice, ...) METALANG99_PRIV_REC_NEXT(6200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6200(choice, ...) METALANG99_PRIV_REC_NEXT(6201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6201(choice, ...) METALANG99_PRIV_REC_NEXT(6202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6202(choice, ...) METALANG99_PRIV_REC_NEXT(6203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6203(choice, ...) METALANG99_PRIV_REC_NEXT(6204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6204(choice, ...) METALANG99_PRIV_REC_NEXT(6205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6205(choice, ...) METALANG99_PRIV_REC_NEXT(6206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6206(choice, ...) METALANG99_PRIV_REC_NEXT(6207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6207(choice, ...) METALANG99_PRIV_REC_NEXT(6208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6208(choice, ...) METALANG99_PRIV_REC_NEXT(6209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6209(choice, ...) METALANG99_PRIV_REC_NEXT(6210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6210(choice, ...) METALANG99_PRIV_REC_NEXT(6211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6211(choice, ...) METALANG99_PRIV_REC_NEXT(6212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6212(choice, ...) METALANG99_PRIV_REC_NEXT(6213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6213(choice, ...) METALANG99_PRIV_REC_NEXT(6214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6214(choice, ...) METALANG99_PRIV_REC_NEXT(6215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6215(choice, ...) METALANG99_PRIV_REC_NEXT(6216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6216(choice, ...) METALANG99_PRIV_REC_NEXT(6217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6217(choice, ...) METALANG99_PRIV_REC_NEXT(6218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6218(choice, ...) METALANG99_PRIV_REC_NEXT(6219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6219(choice, ...) METALANG99_PRIV_REC_NEXT(6220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6220(choice, ...) METALANG99_PRIV_REC_NEXT(6221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6221(choice, ...) METALANG99_PRIV_REC_NEXT(6222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6222(choice, ...) METALANG99_PRIV_REC_NEXT(6223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6223(choice, ...) METALANG99_PRIV_REC_NEXT(6224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6224(choice, ...) METALANG99_PRIV_REC_NEXT(6225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6225(choice, ...) METALANG99_PRIV_REC_NEXT(6226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6226(choice, ...) METALANG99_PRIV_REC_NEXT(6227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6227(choice, ...) METALANG99_PRIV_REC_NEXT(6228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6228(choice, ...) METALANG99_PRIV_REC_NEXT(6229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6229(choice, ...) METALANG99_PRIV_REC_NEXT(6230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6230(choice, ...) METALANG99_PRIV_REC_NEXT(6231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6231(choice, ...) METALANG99_PRIV_REC_NEXT(6232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6232(choice, ...) METALANG99_PRIV_REC_NEXT(6233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6233(choice, ...) METALANG99_PRIV_REC_NEXT(6234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6234(choice, ...) METALANG99_PRIV_REC_NEXT(6235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6235(choice, ...) METALANG99_PRIV_REC_NEXT(6236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6236(choice, ...) METALANG99_PRIV_REC_NEXT(6237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6237(choice, ...) METALANG99_PRIV_REC_NEXT(6238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6238(choice, ...) METALANG99_PRIV_REC_NEXT(6239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6239(choice, ...) METALANG99_PRIV_REC_NEXT(6240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6240(choice, ...) METALANG99_PRIV_REC_NEXT(6241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6241(choice, ...) METALANG99_PRIV_REC_NEXT(6242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6242(choice, ...) METALANG99_PRIV_REC_NEXT(6243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6243(choice, ...) METALANG99_PRIV_REC_NEXT(6244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6244(choice, ...) METALANG99_PRIV_REC_NEXT(6245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6245(choice, ...) METALANG99_PRIV_REC_NEXT(6246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6246(choice, ...) METALANG99_PRIV_REC_NEXT(6247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6247(choice, ...) METALANG99_PRIV_REC_NEXT(6248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6248(choice, ...) METALANG99_PRIV_REC_NEXT(6249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6249(choice, ...) METALANG99_PRIV_REC_NEXT(6250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6250(choice, ...) METALANG99_PRIV_REC_NEXT(6251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6251(choice, ...) METALANG99_PRIV_REC_NEXT(6252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6252(choice, ...) METALANG99_PRIV_REC_NEXT(6253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6253(choice, ...) METALANG99_PRIV_REC_NEXT(6254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6254(choice, ...) METALANG99_PRIV_REC_NEXT(6255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6255(choice, ...) METALANG99_PRIV_REC_NEXT(6256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6256(choice, ...) METALANG99_PRIV_REC_NEXT(6257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6257(choice, ...) METALANG99_PRIV_REC_NEXT(6258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6258(choice, ...) METALANG99_PRIV_REC_NEXT(6259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6259(choice, ...) METALANG99_PRIV_REC_NEXT(6260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6260(choice, ...) METALANG99_PRIV_REC_NEXT(6261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6261(choice, ...) METALANG99_PRIV_REC_NEXT(6262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6262(choice, ...) METALANG99_PRIV_REC_NEXT(6263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6263(choice, ...) METALANG99_PRIV_REC_NEXT(6264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6264(choice, ...) METALANG99_PRIV_REC_NEXT(6265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6265(choice, ...) METALANG99_PRIV_REC_NEXT(6266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6266(choice, ...) METALANG99_PRIV_REC_NEXT(6267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6267(choice, ...) METALANG99_PRIV_REC_NEXT(6268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6268(choice, ...) METALANG99_PRIV_REC_NEXT(6269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6269(choice, ...) METALANG99_PRIV_REC_NEXT(6270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6270(choice, ...) METALANG99_PRIV_REC_NEXT(6271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6271(choice, ...) METALANG99_PRIV_REC_NEXT(6272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6272(choice, ...) METALANG99_PRIV_REC_NEXT(6273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6273(choice, ...) METALANG99_PRIV_REC_NEXT(6274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6274(choice, ...) METALANG99_PRIV_REC_NEXT(6275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6275(choice, ...) METALANG99_PRIV_REC_NEXT(6276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6276(choice, ...) METALANG99_PRIV_REC_NEXT(6277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6277(choice, ...) METALANG99_PRIV_REC_NEXT(6278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6278(choice, ...) METALANG99_PRIV_REC_NEXT(6279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6279(choice, ...) METALANG99_PRIV_REC_NEXT(6280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6280(choice, ...) METALANG99_PRIV_REC_NEXT(6281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6281(choice, ...) METALANG99_PRIV_REC_NEXT(6282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6282(choice, ...) METALANG99_PRIV_REC_NEXT(6283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6283(choice, ...) METALANG99_PRIV_REC_NEXT(6284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6284(choice, ...) METALANG99_PRIV_REC_NEXT(6285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6285(choice, ...) METALANG99_PRIV_REC_NEXT(6286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6286(choice, ...) METALANG99_PRIV_REC_NEXT(6287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6287(choice, ...) METALANG99_PRIV_REC_NEXT(6288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6288(choice, ...) METALANG99_PRIV_REC_NEXT(6289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6289(choice, ...) METALANG99_PRIV_REC_NEXT(6290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6290(choice, ...) METALANG99_PRIV_REC_NEXT(6291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6291(choice, ...) METALANG99_PRIV_REC_NEXT(6292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6292(choice, ...) METALANG99_PRIV_REC_NEXT(6293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6293(choice, ...) METALANG99_PRIV_REC_NEXT(6294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6294(choice, ...) METALANG99_PRIV_REC_NEXT(6295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6295(choice, ...) METALANG99_PRIV_REC_NEXT(6296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6296(choice, ...) METALANG99_PRIV_REC_NEXT(6297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6297(choice, ...) METALANG99_PRIV_REC_NEXT(6298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6298(choice, ...) METALANG99_PRIV_REC_NEXT(6299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6299(choice, ...) METALANG99_PRIV_REC_NEXT(6300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6300(choice, ...) METALANG99_PRIV_REC_NEXT(6301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6301(choice, ...) METALANG99_PRIV_REC_NEXT(6302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6302(choice, ...) METALANG99_PRIV_REC_NEXT(6303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6303(choice, ...) METALANG99_PRIV_REC_NEXT(6304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6304(choice, ...) METALANG99_PRIV_REC_NEXT(6305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6305(choice, ...) METALANG99_PRIV_REC_NEXT(6306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6306(choice, ...) METALANG99_PRIV_REC_NEXT(6307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6307(choice, ...) METALANG99_PRIV_REC_NEXT(6308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6308(choice, ...) METALANG99_PRIV_REC_NEXT(6309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6309(choice, ...) METALANG99_PRIV_REC_NEXT(6310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6310(choice, ...) METALANG99_PRIV_REC_NEXT(6311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6311(choice, ...) METALANG99_PRIV_REC_NEXT(6312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6312(choice, ...) METALANG99_PRIV_REC_NEXT(6313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6313(choice, ...) METALANG99_PRIV_REC_NEXT(6314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6314(choice, ...) METALANG99_PRIV_REC_NEXT(6315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6315(choice, ...) METALANG99_PRIV_REC_NEXT(6316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6316(choice, ...) METALANG99_PRIV_REC_NEXT(6317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6317(choice, ...) METALANG99_PRIV_REC_NEXT(6318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6318(choice, ...) METALANG99_PRIV_REC_NEXT(6319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6319(choice, ...) METALANG99_PRIV_REC_NEXT(6320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6320(choice, ...) METALANG99_PRIV_REC_NEXT(6321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6321(choice, ...) METALANG99_PRIV_REC_NEXT(6322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6322(choice, ...) METALANG99_PRIV_REC_NEXT(6323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6323(choice, ...) METALANG99_PRIV_REC_NEXT(6324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6324(choice, ...) METALANG99_PRIV_REC_NEXT(6325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6325(choice, ...) METALANG99_PRIV_REC_NEXT(6326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6326(choice, ...) METALANG99_PRIV_REC_NEXT(6327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6327(choice, ...) METALANG99_PRIV_REC_NEXT(6328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6328(choice, ...) METALANG99_PRIV_REC_NEXT(6329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6329(choice, ...) METALANG99_PRIV_REC_NEXT(6330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6330(choice, ...) METALANG99_PRIV_REC_NEXT(6331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6331(choice, ...) METALANG99_PRIV_REC_NEXT(6332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6332(choice, ...) METALANG99_PRIV_REC_NEXT(6333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6333(choice, ...) METALANG99_PRIV_REC_NEXT(6334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6334(choice, ...) METALANG99_PRIV_REC_NEXT(6335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6335(choice, ...) METALANG99_PRIV_REC_NEXT(6336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6336(choice, ...) METALANG99_PRIV_REC_NEXT(6337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6337(choice, ...) METALANG99_PRIV_REC_NEXT(6338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6338(choice, ...) METALANG99_PRIV_REC_NEXT(6339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6339(choice, ...) METALANG99_PRIV_REC_NEXT(6340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6340(choice, ...) METALANG99_PRIV_REC_NEXT(6341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6341(choice, ...) METALANG99_PRIV_REC_NEXT(6342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6342(choice, ...) METALANG99_PRIV_REC_NEXT(6343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6343(choice, ...) METALANG99_PRIV_REC_NEXT(6344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6344(choice, ...) METALANG99_PRIV_REC_NEXT(6345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6345(choice, ...) METALANG99_PRIV_REC_NEXT(6346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6346(choice, ...) METALANG99_PRIV_REC_NEXT(6347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6347(choice, ...) METALANG99_PRIV_REC_NEXT(6348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6348(choice, ...) METALANG99_PRIV_REC_NEXT(6349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6349(choice, ...) METALANG99_PRIV_REC_NEXT(6350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6350(choice, ...) METALANG99_PRIV_REC_NEXT(6351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6351(choice, ...) METALANG99_PRIV_REC_NEXT(6352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6352(choice, ...) METALANG99_PRIV_REC_NEXT(6353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6353(choice, ...) METALANG99_PRIV_REC_NEXT(6354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6354(choice, ...) METALANG99_PRIV_REC_NEXT(6355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6355(choice, ...) METALANG99_PRIV_REC_NEXT(6356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6356(choice, ...) METALANG99_PRIV_REC_NEXT(6357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6357(choice, ...) METALANG99_PRIV_REC_NEXT(6358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6358(choice, ...) METALANG99_PRIV_REC_NEXT(6359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6359(choice, ...) METALANG99_PRIV_REC_NEXT(6360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6360(choice, ...) METALANG99_PRIV_REC_NEXT(6361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6361(choice, ...) METALANG99_PRIV_REC_NEXT(6362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6362(choice, ...) METALANG99_PRIV_REC_NEXT(6363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6363(choice, ...) METALANG99_PRIV_REC_NEXT(6364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6364(choice, ...) METALANG99_PRIV_REC_NEXT(6365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6365(choice, ...) METALANG99_PRIV_REC_NEXT(6366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6366(choice, ...) METALANG99_PRIV_REC_NEXT(6367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6367(choice, ...) METALANG99_PRIV_REC_NEXT(6368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6368(choice, ...) METALANG99_PRIV_REC_NEXT(6369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6369(choice, ...) METALANG99_PRIV_REC_NEXT(6370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6370(choice, ...) METALANG99_PRIV_REC_NEXT(6371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6371(choice, ...) METALANG99_PRIV_REC_NEXT(6372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6372(choice, ...) METALANG99_PRIV_REC_NEXT(6373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6373(choice, ...) METALANG99_PRIV_REC_NEXT(6374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6374(choice, ...) METALANG99_PRIV_REC_NEXT(6375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6375(choice, ...) METALANG99_PRIV_REC_NEXT(6376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6376(choice, ...) METALANG99_PRIV_REC_NEXT(6377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6377(choice, ...) METALANG99_PRIV_REC_NEXT(6378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6378(choice, ...) METALANG99_PRIV_REC_NEXT(6379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6379(choice, ...) METALANG99_PRIV_REC_NEXT(6380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6380(choice, ...) METALANG99_PRIV_REC_NEXT(6381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6381(choice, ...) METALANG99_PRIV_REC_NEXT(6382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6382(choice, ...) METALANG99_PRIV_REC_NEXT(6383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6383(choice, ...) METALANG99_PRIV_REC_NEXT(6384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6384(choice, ...) METALANG99_PRIV_REC_NEXT(6385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6385(choice, ...) METALANG99_PRIV_REC_NEXT(6386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6386(choice, ...) METALANG99_PRIV_REC_NEXT(6387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6387(choice, ...) METALANG99_PRIV_REC_NEXT(6388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6388(choice, ...) METALANG99_PRIV_REC_NEXT(6389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6389(choice, ...) METALANG99_PRIV_REC_NEXT(6390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6390(choice, ...) METALANG99_PRIV_REC_NEXT(6391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6391(choice, ...) METALANG99_PRIV_REC_NEXT(6392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6392(choice, ...) METALANG99_PRIV_REC_NEXT(6393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6393(choice, ...) METALANG99_PRIV_REC_NEXT(6394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6394(choice, ...) METALANG99_PRIV_REC_NEXT(6395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6395(choice, ...) METALANG99_PRIV_REC_NEXT(6396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6396(choice, ...) METALANG99_PRIV_REC_NEXT(6397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6397(choice, ...) METALANG99_PRIV_REC_NEXT(6398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6398(choice, ...) METALANG99_PRIV_REC_NEXT(6399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6399(choice, ...) METALANG99_PRIV_REC_NEXT(6400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6400(choice, ...) METALANG99_PRIV_REC_NEXT(6401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6401(choice, ...) METALANG99_PRIV_REC_NEXT(6402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6402(choice, ...) METALANG99_PRIV_REC_NEXT(6403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6403(choice, ...) METALANG99_PRIV_REC_NEXT(6404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6404(choice, ...) METALANG99_PRIV_REC_NEXT(6405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6405(choice, ...) METALANG99_PRIV_REC_NEXT(6406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6406(choice, ...) METALANG99_PRIV_REC_NEXT(6407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6407(choice, ...) METALANG99_PRIV_REC_NEXT(6408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6408(choice, ...) METALANG99_PRIV_REC_NEXT(6409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6409(choice, ...) METALANG99_PRIV_REC_NEXT(6410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6410(choice, ...) METALANG99_PRIV_REC_NEXT(6411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6411(choice, ...) METALANG99_PRIV_REC_NEXT(6412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6412(choice, ...) METALANG99_PRIV_REC_NEXT(6413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6413(choice, ...) METALANG99_PRIV_REC_NEXT(6414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6414(choice, ...) METALANG99_PRIV_REC_NEXT(6415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6415(choice, ...) METALANG99_PRIV_REC_NEXT(6416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6416(choice, ...) METALANG99_PRIV_REC_NEXT(6417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6417(choice, ...) METALANG99_PRIV_REC_NEXT(6418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6418(choice, ...) METALANG99_PRIV_REC_NEXT(6419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6419(choice, ...) METALANG99_PRIV_REC_NEXT(6420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6420(choice, ...) METALANG99_PRIV_REC_NEXT(6421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6421(choice, ...) METALANG99_PRIV_REC_NEXT(6422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6422(choice, ...) METALANG99_PRIV_REC_NEXT(6423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6423(choice, ...) METALANG99_PRIV_REC_NEXT(6424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6424(choice, ...) METALANG99_PRIV_REC_NEXT(6425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6425(choice, ...) METALANG99_PRIV_REC_NEXT(6426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6426(choice, ...) METALANG99_PRIV_REC_NEXT(6427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6427(choice, ...) METALANG99_PRIV_REC_NEXT(6428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6428(choice, ...) METALANG99_PRIV_REC_NEXT(6429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6429(choice, ...) METALANG99_PRIV_REC_NEXT(6430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6430(choice, ...) METALANG99_PRIV_REC_NEXT(6431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6431(choice, ...) METALANG99_PRIV_REC_NEXT(6432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6432(choice, ...) METALANG99_PRIV_REC_NEXT(6433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6433(choice, ...) METALANG99_PRIV_REC_NEXT(6434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6434(choice, ...) METALANG99_PRIV_REC_NEXT(6435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6435(choice, ...) METALANG99_PRIV_REC_NEXT(6436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6436(choice, ...) METALANG99_PRIV_REC_NEXT(6437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6437(choice, ...) METALANG99_PRIV_REC_NEXT(6438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6438(choice, ...) METALANG99_PRIV_REC_NEXT(6439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6439(choice, ...) METALANG99_PRIV_REC_NEXT(6440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6440(choice, ...) METALANG99_PRIV_REC_NEXT(6441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6441(choice, ...) METALANG99_PRIV_REC_NEXT(6442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6442(choice, ...) METALANG99_PRIV_REC_NEXT(6443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6443(choice, ...) METALANG99_PRIV_REC_NEXT(6444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6444(choice, ...) METALANG99_PRIV_REC_NEXT(6445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6445(choice, ...) METALANG99_PRIV_REC_NEXT(6446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6446(choice, ...) METALANG99_PRIV_REC_NEXT(6447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6447(choice, ...) METALANG99_PRIV_REC_NEXT(6448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6448(choice, ...) METALANG99_PRIV_REC_NEXT(6449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6449(choice, ...) METALANG99_PRIV_REC_NEXT(6450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6450(choice, ...) METALANG99_PRIV_REC_NEXT(6451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6451(choice, ...) METALANG99_PRIV_REC_NEXT(6452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6452(choice, ...) METALANG99_PRIV_REC_NEXT(6453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6453(choice, ...) METALANG99_PRIV_REC_NEXT(6454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6454(choice, ...) METALANG99_PRIV_REC_NEXT(6455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6455(choice, ...) METALANG99_PRIV_REC_NEXT(6456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6456(choice, ...) METALANG99_PRIV_REC_NEXT(6457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6457(choice, ...) METALANG99_PRIV_REC_NEXT(6458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6458(choice, ...) METALANG99_PRIV_REC_NEXT(6459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6459(choice, ...) METALANG99_PRIV_REC_NEXT(6460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6460(choice, ...) METALANG99_PRIV_REC_NEXT(6461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6461(choice, ...) METALANG99_PRIV_REC_NEXT(6462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6462(choice, ...) METALANG99_PRIV_REC_NEXT(6463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6463(choice, ...) METALANG99_PRIV_REC_NEXT(6464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6464(choice, ...) METALANG99_PRIV_REC_NEXT(6465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6465(choice, ...) METALANG99_PRIV_REC_NEXT(6466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6466(choice, ...) METALANG99_PRIV_REC_NEXT(6467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6467(choice, ...) METALANG99_PRIV_REC_NEXT(6468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6468(choice, ...) METALANG99_PRIV_REC_NEXT(6469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6469(choice, ...) METALANG99_PRIV_REC_NEXT(6470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6470(choice, ...) METALANG99_PRIV_REC_NEXT(6471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6471(choice, ...) METALANG99_PRIV_REC_NEXT(6472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6472(choice, ...) METALANG99_PRIV_REC_NEXT(6473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6473(choice, ...) METALANG99_PRIV_REC_NEXT(6474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6474(choice, ...) METALANG99_PRIV_REC_NEXT(6475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6475(choice, ...) METALANG99_PRIV_REC_NEXT(6476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6476(choice, ...) METALANG99_PRIV_REC_NEXT(6477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6477(choice, ...) METALANG99_PRIV_REC_NEXT(6478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6478(choice, ...) METALANG99_PRIV_REC_NEXT(6479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6479(choice, ...) METALANG99_PRIV_REC_NEXT(6480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6480(choice, ...) METALANG99_PRIV_REC_NEXT(6481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6481(choice, ...) METALANG99_PRIV_REC_NEXT(6482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6482(choice, ...) METALANG99_PRIV_REC_NEXT(6483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6483(choice, ...) METALANG99_PRIV_REC_NEXT(6484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6484(choice, ...) METALANG99_PRIV_REC_NEXT(6485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6485(choice, ...) METALANG99_PRIV_REC_NEXT(6486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6486(choice, ...) METALANG99_PRIV_REC_NEXT(6487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6487(choice, ...) METALANG99_PRIV_REC_NEXT(6488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6488(choice, ...) METALANG99_PRIV_REC_NEXT(6489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6489(choice, ...) METALANG99_PRIV_REC_NEXT(6490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6490(choice, ...) METALANG99_PRIV_REC_NEXT(6491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6491(choice, ...) METALANG99_PRIV_REC_NEXT(6492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6492(choice, ...) METALANG99_PRIV_REC_NEXT(6493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6493(choice, ...) METALANG99_PRIV_REC_NEXT(6494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6494(choice, ...) METALANG99_PRIV_REC_NEXT(6495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6495(choice, ...) METALANG99_PRIV_REC_NEXT(6496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6496(choice, ...) METALANG99_PRIV_REC_NEXT(6497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6497(choice, ...) METALANG99_PRIV_REC_NEXT(6498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6498(choice, ...) METALANG99_PRIV_REC_NEXT(6499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6499(choice, ...) METALANG99_PRIV_REC_NEXT(6500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6500(choice, ...) METALANG99_PRIV_REC_NEXT(6501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6501(choice, ...) METALANG99_PRIV_REC_NEXT(6502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6502(choice, ...) METALANG99_PRIV_REC_NEXT(6503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6503(choice, ...) METALANG99_PRIV_REC_NEXT(6504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6504(choice, ...) METALANG99_PRIV_REC_NEXT(6505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6505(choice, ...) METALANG99_PRIV_REC_NEXT(6506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6506(choice, ...) METALANG99_PRIV_REC_NEXT(6507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6507(choice, ...) METALANG99_PRIV_REC_NEXT(6508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6508(choice, ...) METALANG99_PRIV_REC_NEXT(6509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6509(choice, ...) METALANG99_PRIV_REC_NEXT(6510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6510(choice, ...) METALANG99_PRIV_REC_NEXT(6511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6511(choice, ...) METALANG99_PRIV_REC_NEXT(6512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6512(choice, ...) METALANG99_PRIV_REC_NEXT(6513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6513(choice, ...) METALANG99_PRIV_REC_NEXT(6514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6514(choice, ...) METALANG99_PRIV_REC_NEXT(6515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6515(choice, ...) METALANG99_PRIV_REC_NEXT(6516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6516(choice, ...) METALANG99_PRIV_REC_NEXT(6517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6517(choice, ...) METALANG99_PRIV_REC_NEXT(6518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6518(choice, ...) METALANG99_PRIV_REC_NEXT(6519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6519(choice, ...) METALANG99_PRIV_REC_NEXT(6520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6520(choice, ...) METALANG99_PRIV_REC_NEXT(6521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6521(choice, ...) METALANG99_PRIV_REC_NEXT(6522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6522(choice, ...) METALANG99_PRIV_REC_NEXT(6523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6523(choice, ...) METALANG99_PRIV_REC_NEXT(6524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6524(choice, ...) METALANG99_PRIV_REC_NEXT(6525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6525(choice, ...) METALANG99_PRIV_REC_NEXT(6526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6526(choice, ...) METALANG99_PRIV_REC_NEXT(6527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6527(choice, ...) METALANG99_PRIV_REC_NEXT(6528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6528(choice, ...) METALANG99_PRIV_REC_NEXT(6529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6529(choice, ...) METALANG99_PRIV_REC_NEXT(6530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6530(choice, ...) METALANG99_PRIV_REC_NEXT(6531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6531(choice, ...) METALANG99_PRIV_REC_NEXT(6532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6532(choice, ...) METALANG99_PRIV_REC_NEXT(6533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6533(choice, ...) METALANG99_PRIV_REC_NEXT(6534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6534(choice, ...) METALANG99_PRIV_REC_NEXT(6535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6535(choice, ...) METALANG99_PRIV_REC_NEXT(6536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6536(choice, ...) METALANG99_PRIV_REC_NEXT(6537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6537(choice, ...) METALANG99_PRIV_REC_NEXT(6538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6538(choice, ...) METALANG99_PRIV_REC_NEXT(6539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6539(choice, ...) METALANG99_PRIV_REC_NEXT(6540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6540(choice, ...) METALANG99_PRIV_REC_NEXT(6541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6541(choice, ...) METALANG99_PRIV_REC_NEXT(6542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6542(choice, ...) METALANG99_PRIV_REC_NEXT(6543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6543(choice, ...) METALANG99_PRIV_REC_NEXT(6544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6544(choice, ...) METALANG99_PRIV_REC_NEXT(6545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6545(choice, ...) METALANG99_PRIV_REC_NEXT(6546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6546(choice, ...) METALANG99_PRIV_REC_NEXT(6547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6547(choice, ...) METALANG99_PRIV_REC_NEXT(6548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6548(choice, ...) METALANG99_PRIV_REC_NEXT(6549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6549(choice, ...) METALANG99_PRIV_REC_NEXT(6550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6550(choice, ...) METALANG99_PRIV_REC_NEXT(6551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6551(choice, ...) METALANG99_PRIV_REC_NEXT(6552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6552(choice, ...) METALANG99_PRIV_REC_NEXT(6553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6553(choice, ...) METALANG99_PRIV_REC_NEXT(6554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6554(choice, ...) METALANG99_PRIV_REC_NEXT(6555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6555(choice, ...) METALANG99_PRIV_REC_NEXT(6556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6556(choice, ...) METALANG99_PRIV_REC_NEXT(6557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6557(choice, ...) METALANG99_PRIV_REC_NEXT(6558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6558(choice, ...) METALANG99_PRIV_REC_NEXT(6559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6559(choice, ...) METALANG99_PRIV_REC_NEXT(6560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6560(choice, ...) METALANG99_PRIV_REC_NEXT(6561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6561(choice, ...) METALANG99_PRIV_REC_NEXT(6562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6562(choice, ...) METALANG99_PRIV_REC_NEXT(6563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6563(choice, ...) METALANG99_PRIV_REC_NEXT(6564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6564(choice, ...) METALANG99_PRIV_REC_NEXT(6565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6565(choice, ...) METALANG99_PRIV_REC_NEXT(6566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6566(choice, ...) METALANG99_PRIV_REC_NEXT(6567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6567(choice, ...) METALANG99_PRIV_REC_NEXT(6568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6568(choice, ...) METALANG99_PRIV_REC_NEXT(6569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6569(choice, ...) METALANG99_PRIV_REC_NEXT(6570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6570(choice, ...) METALANG99_PRIV_REC_NEXT(6571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6571(choice, ...) METALANG99_PRIV_REC_NEXT(6572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6572(choice, ...) METALANG99_PRIV_REC_NEXT(6573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6573(choice, ...) METALANG99_PRIV_REC_NEXT(6574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6574(choice, ...) METALANG99_PRIV_REC_NEXT(6575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6575(choice, ...) METALANG99_PRIV_REC_NEXT(6576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6576(choice, ...) METALANG99_PRIV_REC_NEXT(6577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6577(choice, ...) METALANG99_PRIV_REC_NEXT(6578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6578(choice, ...) METALANG99_PRIV_REC_NEXT(6579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6579(choice, ...) METALANG99_PRIV_REC_NEXT(6580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6580(choice, ...) METALANG99_PRIV_REC_NEXT(6581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6581(choice, ...) METALANG99_PRIV_REC_NEXT(6582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6582(choice, ...) METALANG99_PRIV_REC_NEXT(6583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6583(choice, ...) METALANG99_PRIV_REC_NEXT(6584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6584(choice, ...) METALANG99_PRIV_REC_NEXT(6585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6585(choice, ...) METALANG99_PRIV_REC_NEXT(6586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6586(choice, ...) METALANG99_PRIV_REC_NEXT(6587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6587(choice, ...) METALANG99_PRIV_REC_NEXT(6588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6588(choice, ...) METALANG99_PRIV_REC_NEXT(6589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6589(choice, ...) METALANG99_PRIV_REC_NEXT(6590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6590(choice, ...) METALANG99_PRIV_REC_NEXT(6591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6591(choice, ...) METALANG99_PRIV_REC_NEXT(6592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6592(choice, ...) METALANG99_PRIV_REC_NEXT(6593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6593(choice, ...) METALANG99_PRIV_REC_NEXT(6594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6594(choice, ...) METALANG99_PRIV_REC_NEXT(6595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6595(choice, ...) METALANG99_PRIV_REC_NEXT(6596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6596(choice, ...) METALANG99_PRIV_REC_NEXT(6597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6597(choice, ...) METALANG99_PRIV_REC_NEXT(6598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6598(choice, ...) METALANG99_PRIV_REC_NEXT(6599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6599(choice, ...) METALANG99_PRIV_REC_NEXT(6600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6600(choice, ...) METALANG99_PRIV_REC_NEXT(6601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6601(choice, ...) METALANG99_PRIV_REC_NEXT(6602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6602(choice, ...) METALANG99_PRIV_REC_NEXT(6603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6603(choice, ...) METALANG99_PRIV_REC_NEXT(6604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6604(choice, ...) METALANG99_PRIV_REC_NEXT(6605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6605(choice, ...) METALANG99_PRIV_REC_NEXT(6606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6606(choice, ...) METALANG99_PRIV_REC_NEXT(6607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6607(choice, ...) METALANG99_PRIV_REC_NEXT(6608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6608(choice, ...) METALANG99_PRIV_REC_NEXT(6609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6609(choice, ...) METALANG99_PRIV_REC_NEXT(6610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6610(choice, ...) METALANG99_PRIV_REC_NEXT(6611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6611(choice, ...) METALANG99_PRIV_REC_NEXT(6612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6612(choice, ...) METALANG99_PRIV_REC_NEXT(6613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6613(choice, ...) METALANG99_PRIV_REC_NEXT(6614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6614(choice, ...) METALANG99_PRIV_REC_NEXT(6615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6615(choice, ...) METALANG99_PRIV_REC_NEXT(6616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6616(choice, ...) METALANG99_PRIV_REC_NEXT(6617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6617(choice, ...) METALANG99_PRIV_REC_NEXT(6618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6618(choice, ...) METALANG99_PRIV_REC_NEXT(6619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6619(choice, ...) METALANG99_PRIV_REC_NEXT(6620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6620(choice, ...) METALANG99_PRIV_REC_NEXT(6621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6621(choice, ...) METALANG99_PRIV_REC_NEXT(6622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6622(choice, ...) METALANG99_PRIV_REC_NEXT(6623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6623(choice, ...) METALANG99_PRIV_REC_NEXT(6624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6624(choice, ...) METALANG99_PRIV_REC_NEXT(6625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6625(choice, ...) METALANG99_PRIV_REC_NEXT(6626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6626(choice, ...) METALANG99_PRIV_REC_NEXT(6627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6627(choice, ...) METALANG99_PRIV_REC_NEXT(6628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6628(choice, ...) METALANG99_PRIV_REC_NEXT(6629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6629(choice, ...) METALANG99_PRIV_REC_NEXT(6630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6630(choice, ...) METALANG99_PRIV_REC_NEXT(6631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6631(choice, ...) METALANG99_PRIV_REC_NEXT(6632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6632(choice, ...) METALANG99_PRIV_REC_NEXT(6633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6633(choice, ...) METALANG99_PRIV_REC_NEXT(6634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6634(choice, ...) METALANG99_PRIV_REC_NEXT(6635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6635(choice, ...) METALANG99_PRIV_REC_NEXT(6636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6636(choice, ...) METALANG99_PRIV_REC_NEXT(6637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6637(choice, ...) METALANG99_PRIV_REC_NEXT(6638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6638(choice, ...) METALANG99_PRIV_REC_NEXT(6639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6639(choice, ...) METALANG99_PRIV_REC_NEXT(6640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6640(choice, ...) METALANG99_PRIV_REC_NEXT(6641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6641(choice, ...) METALANG99_PRIV_REC_NEXT(6642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6642(choice, ...) METALANG99_PRIV_REC_NEXT(6643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6643(choice, ...) METALANG99_PRIV_REC_NEXT(6644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6644(choice, ...) METALANG99_PRIV_REC_NEXT(6645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6645(choice, ...) METALANG99_PRIV_REC_NEXT(6646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6646(choice, ...) METALANG99_PRIV_REC_NEXT(6647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6647(choice, ...) METALANG99_PRIV_REC_NEXT(6648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6648(choice, ...) METALANG99_PRIV_REC_NEXT(6649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6649(choice, ...) METALANG99_PRIV_REC_NEXT(6650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6650(choice, ...) METALANG99_PRIV_REC_NEXT(6651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6651(choice, ...) METALANG99_PRIV_REC_NEXT(6652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6652(choice, ...) METALANG99_PRIV_REC_NEXT(6653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6653(choice, ...) METALANG99_PRIV_REC_NEXT(6654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6654(choice, ...) METALANG99_PRIV_REC_NEXT(6655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6655(choice, ...) METALANG99_PRIV_REC_NEXT(6656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6656(choice, ...) METALANG99_PRIV_REC_NEXT(6657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6657(choice, ...) METALANG99_PRIV_REC_NEXT(6658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6658(choice, ...) METALANG99_PRIV_REC_NEXT(6659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6659(choice, ...) METALANG99_PRIV_REC_NEXT(6660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6660(choice, ...) METALANG99_PRIV_REC_NEXT(6661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6661(choice, ...) METALANG99_PRIV_REC_NEXT(6662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6662(choice, ...) METALANG99_PRIV_REC_NEXT(6663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6663(choice, ...) METALANG99_PRIV_REC_NEXT(6664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6664(choice, ...) METALANG99_PRIV_REC_NEXT(6665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6665(choice, ...) METALANG99_PRIV_REC_NEXT(6666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6666(choice, ...) METALANG99_PRIV_REC_NEXT(6667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6667(choice, ...) METALANG99_PRIV_REC_NEXT(6668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6668(choice, ...) METALANG99_PRIV_REC_NEXT(6669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6669(choice, ...) METALANG99_PRIV_REC_NEXT(6670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6670(choice, ...) METALANG99_PRIV_REC_NEXT(6671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6671(choice, ...) METALANG99_PRIV_REC_NEXT(6672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6672(choice, ...) METALANG99_PRIV_REC_NEXT(6673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6673(choice, ...) METALANG99_PRIV_REC_NEXT(6674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6674(choice, ...) METALANG99_PRIV_REC_NEXT(6675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6675(choice, ...) METALANG99_PRIV_REC_NEXT(6676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6676(choice, ...) METALANG99_PRIV_REC_NEXT(6677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6677(choice, ...) METALANG99_PRIV_REC_NEXT(6678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6678(choice, ...) METALANG99_PRIV_REC_NEXT(6679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6679(choice, ...) METALANG99_PRIV_REC_NEXT(6680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6680(choice, ...) METALANG99_PRIV_REC_NEXT(6681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6681(choice, ...) METALANG99_PRIV_REC_NEXT(6682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6682(choice, ...) METALANG99_PRIV_REC_NEXT(6683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6683(choice, ...) METALANG99_PRIV_REC_NEXT(6684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6684(choice, ...) METALANG99_PRIV_REC_NEXT(6685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6685(choice, ...) METALANG99_PRIV_REC_NEXT(6686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6686(choice, ...) METALANG99_PRIV_REC_NEXT(6687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6687(choice, ...) METALANG99_PRIV_REC_NEXT(6688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6688(choice, ...) METALANG99_PRIV_REC_NEXT(6689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6689(choice, ...) METALANG99_PRIV_REC_NEXT(6690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6690(choice, ...) METALANG99_PRIV_REC_NEXT(6691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6691(choice, ...) METALANG99_PRIV_REC_NEXT(6692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6692(choice, ...) METALANG99_PRIV_REC_NEXT(6693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6693(choice, ...) METALANG99_PRIV_REC_NEXT(6694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6694(choice, ...) METALANG99_PRIV_REC_NEXT(6695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6695(choice, ...) METALANG99_PRIV_REC_NEXT(6696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6696(choice, ...) METALANG99_PRIV_REC_NEXT(6697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6697(choice, ...) METALANG99_PRIV_REC_NEXT(6698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6698(choice, ...) METALANG99_PRIV_REC_NEXT(6699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6699(choice, ...) METALANG99_PRIV_REC_NEXT(6700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6700(choice, ...) METALANG99_PRIV_REC_NEXT(6701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6701(choice, ...) METALANG99_PRIV_REC_NEXT(6702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6702(choice, ...) METALANG99_PRIV_REC_NEXT(6703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6703(choice, ...) METALANG99_PRIV_REC_NEXT(6704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6704(choice, ...) METALANG99_PRIV_REC_NEXT(6705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6705(choice, ...) METALANG99_PRIV_REC_NEXT(6706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6706(choice, ...) METALANG99_PRIV_REC_NEXT(6707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6707(choice, ...) METALANG99_PRIV_REC_NEXT(6708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6708(choice, ...) METALANG99_PRIV_REC_NEXT(6709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6709(choice, ...) METALANG99_PRIV_REC_NEXT(6710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6710(choice, ...) METALANG99_PRIV_REC_NEXT(6711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6711(choice, ...) METALANG99_PRIV_REC_NEXT(6712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6712(choice, ...) METALANG99_PRIV_REC_NEXT(6713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6713(choice, ...) METALANG99_PRIV_REC_NEXT(6714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6714(choice, ...) METALANG99_PRIV_REC_NEXT(6715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6715(choice, ...) METALANG99_PRIV_REC_NEXT(6716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6716(choice, ...) METALANG99_PRIV_REC_NEXT(6717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6717(choice, ...) METALANG99_PRIV_REC_NEXT(6718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6718(choice, ...) METALANG99_PRIV_REC_NEXT(6719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6719(choice, ...) METALANG99_PRIV_REC_NEXT(6720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6720(choice, ...) METALANG99_PRIV_REC_NEXT(6721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6721(choice, ...) METALANG99_PRIV_REC_NEXT(6722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6722(choice, ...) METALANG99_PRIV_REC_NEXT(6723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6723(choice, ...) METALANG99_PRIV_REC_NEXT(6724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6724(choice, ...) METALANG99_PRIV_REC_NEXT(6725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6725(choice, ...) METALANG99_PRIV_REC_NEXT(6726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6726(choice, ...) METALANG99_PRIV_REC_NEXT(6727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6727(choice, ...) METALANG99_PRIV_REC_NEXT(6728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6728(choice, ...) METALANG99_PRIV_REC_NEXT(6729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6729(choice, ...) METALANG99_PRIV_REC_NEXT(6730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6730(choice, ...) METALANG99_PRIV_REC_NEXT(6731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6731(choice, ...) METALANG99_PRIV_REC_NEXT(6732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6732(choice, ...) METALANG99_PRIV_REC_NEXT(6733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6733(choice, ...) METALANG99_PRIV_REC_NEXT(6734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6734(choice, ...) METALANG99_PRIV_REC_NEXT(6735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6735(choice, ...) METALANG99_PRIV_REC_NEXT(6736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6736(choice, ...) METALANG99_PRIV_REC_NEXT(6737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6737(choice, ...) METALANG99_PRIV_REC_NEXT(6738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6738(choice, ...) METALANG99_PRIV_REC_NEXT(6739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6739(choice, ...) METALANG99_PRIV_REC_NEXT(6740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6740(choice, ...) METALANG99_PRIV_REC_NEXT(6741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6741(choice, ...) METALANG99_PRIV_REC_NEXT(6742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6742(choice, ...) METALANG99_PRIV_REC_NEXT(6743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6743(choice, ...) METALANG99_PRIV_REC_NEXT(6744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6744(choice, ...) METALANG99_PRIV_REC_NEXT(6745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6745(choice, ...) METALANG99_PRIV_REC_NEXT(6746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6746(choice, ...) METALANG99_PRIV_REC_NEXT(6747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6747(choice, ...) METALANG99_PRIV_REC_NEXT(6748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6748(choice, ...) METALANG99_PRIV_REC_NEXT(6749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6749(choice, ...) METALANG99_PRIV_REC_NEXT(6750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6750(choice, ...) METALANG99_PRIV_REC_NEXT(6751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6751(choice, ...) METALANG99_PRIV_REC_NEXT(6752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6752(choice, ...) METALANG99_PRIV_REC_NEXT(6753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6753(choice, ...) METALANG99_PRIV_REC_NEXT(6754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6754(choice, ...) METALANG99_PRIV_REC_NEXT(6755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6755(choice, ...) METALANG99_PRIV_REC_NEXT(6756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6756(choice, ...) METALANG99_PRIV_REC_NEXT(6757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6757(choice, ...) METALANG99_PRIV_REC_NEXT(6758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6758(choice, ...) METALANG99_PRIV_REC_NEXT(6759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6759(choice, ...) METALANG99_PRIV_REC_NEXT(6760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6760(choice, ...) METALANG99_PRIV_REC_NEXT(6761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6761(choice, ...) METALANG99_PRIV_REC_NEXT(6762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6762(choice, ...) METALANG99_PRIV_REC_NEXT(6763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6763(choice, ...) METALANG99_PRIV_REC_NEXT(6764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6764(choice, ...) METALANG99_PRIV_REC_NEXT(6765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6765(choice, ...) METALANG99_PRIV_REC_NEXT(6766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6766(choice, ...) METALANG99_PRIV_REC_NEXT(6767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6767(choice, ...) METALANG99_PRIV_REC_NEXT(6768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6768(choice, ...) METALANG99_PRIV_REC_NEXT(6769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6769(choice, ...) METALANG99_PRIV_REC_NEXT(6770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6770(choice, ...) METALANG99_PRIV_REC_NEXT(6771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6771(choice, ...) METALANG99_PRIV_REC_NEXT(6772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6772(choice, ...) METALANG99_PRIV_REC_NEXT(6773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6773(choice, ...) METALANG99_PRIV_REC_NEXT(6774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6774(choice, ...) METALANG99_PRIV_REC_NEXT(6775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6775(choice, ...) METALANG99_PRIV_REC_NEXT(6776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6776(choice, ...) METALANG99_PRIV_REC_NEXT(6777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6777(choice, ...) METALANG99_PRIV_REC_NEXT(6778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6778(choice, ...) METALANG99_PRIV_REC_NEXT(6779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6779(choice, ...) METALANG99_PRIV_REC_NEXT(6780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6780(choice, ...) METALANG99_PRIV_REC_NEXT(6781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6781(choice, ...) METALANG99_PRIV_REC_NEXT(6782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6782(choice, ...) METALANG99_PRIV_REC_NEXT(6783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6783(choice, ...) METALANG99_PRIV_REC_NEXT(6784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6784(choice, ...) METALANG99_PRIV_REC_NEXT(6785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6785(choice, ...) METALANG99_PRIV_REC_NEXT(6786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6786(choice, ...) METALANG99_PRIV_REC_NEXT(6787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6787(choice, ...) METALANG99_PRIV_REC_NEXT(6788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6788(choice, ...) METALANG99_PRIV_REC_NEXT(6789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6789(choice, ...) METALANG99_PRIV_REC_NEXT(6790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6790(choice, ...) METALANG99_PRIV_REC_NEXT(6791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6791(choice, ...) METALANG99_PRIV_REC_NEXT(6792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6792(choice, ...) METALANG99_PRIV_REC_NEXT(6793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6793(choice, ...) METALANG99_PRIV_REC_NEXT(6794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6794(choice, ...) METALANG99_PRIV_REC_NEXT(6795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6795(choice, ...) METALANG99_PRIV_REC_NEXT(6796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6796(choice, ...) METALANG99_PRIV_REC_NEXT(6797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6797(choice, ...) METALANG99_PRIV_REC_NEXT(6798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6798(choice, ...) METALANG99_PRIV_REC_NEXT(6799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6799(choice, ...) METALANG99_PRIV_REC_NEXT(6800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6800(choice, ...) METALANG99_PRIV_REC_NEXT(6801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6801(choice, ...) METALANG99_PRIV_REC_NEXT(6802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6802(choice, ...) METALANG99_PRIV_REC_NEXT(6803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6803(choice, ...) METALANG99_PRIV_REC_NEXT(6804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6804(choice, ...) METALANG99_PRIV_REC_NEXT(6805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6805(choice, ...) METALANG99_PRIV_REC_NEXT(6806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6806(choice, ...) METALANG99_PRIV_REC_NEXT(6807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6807(choice, ...) METALANG99_PRIV_REC_NEXT(6808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6808(choice, ...) METALANG99_PRIV_REC_NEXT(6809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6809(choice, ...) METALANG99_PRIV_REC_NEXT(6810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6810(choice, ...) METALANG99_PRIV_REC_NEXT(6811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6811(choice, ...) METALANG99_PRIV_REC_NEXT(6812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6812(choice, ...) METALANG99_PRIV_REC_NEXT(6813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6813(choice, ...) METALANG99_PRIV_REC_NEXT(6814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6814(choice, ...) METALANG99_PRIV_REC_NEXT(6815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6815(choice, ...) METALANG99_PRIV_REC_NEXT(6816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6816(choice, ...) METALANG99_PRIV_REC_NEXT(6817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6817(choice, ...) METALANG99_PRIV_REC_NEXT(6818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6818(choice, ...) METALANG99_PRIV_REC_NEXT(6819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6819(choice, ...) METALANG99_PRIV_REC_NEXT(6820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6820(choice, ...) METALANG99_PRIV_REC_NEXT(6821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6821(choice, ...) METALANG99_PRIV_REC_NEXT(6822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6822(choice, ...) METALANG99_PRIV_REC_NEXT(6823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6823(choice, ...) METALANG99_PRIV_REC_NEXT(6824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6824(choice, ...) METALANG99_PRIV_REC_NEXT(6825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6825(choice, ...) METALANG99_PRIV_REC_NEXT(6826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6826(choice, ...) METALANG99_PRIV_REC_NEXT(6827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6827(choice, ...) METALANG99_PRIV_REC_NEXT(6828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6828(choice, ...) METALANG99_PRIV_REC_NEXT(6829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6829(choice, ...) METALANG99_PRIV_REC_NEXT(6830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6830(choice, ...) METALANG99_PRIV_REC_NEXT(6831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6831(choice, ...) METALANG99_PRIV_REC_NEXT(6832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6832(choice, ...) METALANG99_PRIV_REC_NEXT(6833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6833(choice, ...) METALANG99_PRIV_REC_NEXT(6834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6834(choice, ...) METALANG99_PRIV_REC_NEXT(6835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6835(choice, ...) METALANG99_PRIV_REC_NEXT(6836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6836(choice, ...) METALANG99_PRIV_REC_NEXT(6837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6837(choice, ...) METALANG99_PRIV_REC_NEXT(6838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6838(choice, ...) METALANG99_PRIV_REC_NEXT(6839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6839(choice, ...) METALANG99_PRIV_REC_NEXT(6840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6840(choice, ...) METALANG99_PRIV_REC_NEXT(6841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6841(choice, ...) METALANG99_PRIV_REC_NEXT(6842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6842(choice, ...) METALANG99_PRIV_REC_NEXT(6843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6843(choice, ...) METALANG99_PRIV_REC_NEXT(6844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6844(choice, ...) METALANG99_PRIV_REC_NEXT(6845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6845(choice, ...) METALANG99_PRIV_REC_NEXT(6846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6846(choice, ...) METALANG99_PRIV_REC_NEXT(6847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6847(choice, ...) METALANG99_PRIV_REC_NEXT(6848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6848(choice, ...) METALANG99_PRIV_REC_NEXT(6849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6849(choice, ...) METALANG99_PRIV_REC_NEXT(6850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6850(choice, ...) METALANG99_PRIV_REC_NEXT(6851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6851(choice, ...) METALANG99_PRIV_REC_NEXT(6852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6852(choice, ...) METALANG99_PRIV_REC_NEXT(6853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6853(choice, ...) METALANG99_PRIV_REC_NEXT(6854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6854(choice, ...) METALANG99_PRIV_REC_NEXT(6855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6855(choice, ...) METALANG99_PRIV_REC_NEXT(6856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6856(choice, ...) METALANG99_PRIV_REC_NEXT(6857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6857(choice, ...) METALANG99_PRIV_REC_NEXT(6858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6858(choice, ...) METALANG99_PRIV_REC_NEXT(6859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6859(choice, ...) METALANG99_PRIV_REC_NEXT(6860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6860(choice, ...) METALANG99_PRIV_REC_NEXT(6861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6861(choice, ...) METALANG99_PRIV_REC_NEXT(6862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6862(choice, ...) METALANG99_PRIV_REC_NEXT(6863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6863(choice, ...) METALANG99_PRIV_REC_NEXT(6864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6864(choice, ...) METALANG99_PRIV_REC_NEXT(6865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6865(choice, ...) METALANG99_PRIV_REC_NEXT(6866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6866(choice, ...) METALANG99_PRIV_REC_NEXT(6867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6867(choice, ...) METALANG99_PRIV_REC_NEXT(6868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6868(choice, ...) METALANG99_PRIV_REC_NEXT(6869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6869(choice, ...) METALANG99_PRIV_REC_NEXT(6870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6870(choice, ...) METALANG99_PRIV_REC_NEXT(6871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6871(choice, ...) METALANG99_PRIV_REC_NEXT(6872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6872(choice, ...) METALANG99_PRIV_REC_NEXT(6873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6873(choice, ...) METALANG99_PRIV_REC_NEXT(6874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6874(choice, ...) METALANG99_PRIV_REC_NEXT(6875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6875(choice, ...) METALANG99_PRIV_REC_NEXT(6876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6876(choice, ...) METALANG99_PRIV_REC_NEXT(6877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6877(choice, ...) METALANG99_PRIV_REC_NEXT(6878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6878(choice, ...) METALANG99_PRIV_REC_NEXT(6879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6879(choice, ...) METALANG99_PRIV_REC_NEXT(6880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6880(choice, ...) METALANG99_PRIV_REC_NEXT(6881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6881(choice, ...) METALANG99_PRIV_REC_NEXT(6882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6882(choice, ...) METALANG99_PRIV_REC_NEXT(6883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6883(choice, ...) METALANG99_PRIV_REC_NEXT(6884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6884(choice, ...) METALANG99_PRIV_REC_NEXT(6885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6885(choice, ...) METALANG99_PRIV_REC_NEXT(6886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6886(choice, ...) METALANG99_PRIV_REC_NEXT(6887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6887(choice, ...) METALANG99_PRIV_REC_NEXT(6888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6888(choice, ...) METALANG99_PRIV_REC_NEXT(6889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6889(choice, ...) METALANG99_PRIV_REC_NEXT(6890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6890(choice, ...) METALANG99_PRIV_REC_NEXT(6891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6891(choice, ...) METALANG99_PRIV_REC_NEXT(6892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6892(choice, ...) METALANG99_PRIV_REC_NEXT(6893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6893(choice, ...) METALANG99_PRIV_REC_NEXT(6894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6894(choice, ...) METALANG99_PRIV_REC_NEXT(6895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6895(choice, ...) METALANG99_PRIV_REC_NEXT(6896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6896(choice, ...) METALANG99_PRIV_REC_NEXT(6897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6897(choice, ...) METALANG99_PRIV_REC_NEXT(6898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6898(choice, ...) METALANG99_PRIV_REC_NEXT(6899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6899(choice, ...) METALANG99_PRIV_REC_NEXT(6900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6900(choice, ...) METALANG99_PRIV_REC_NEXT(6901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6901(choice, ...) METALANG99_PRIV_REC_NEXT(6902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6902(choice, ...) METALANG99_PRIV_REC_NEXT(6903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6903(choice, ...) METALANG99_PRIV_REC_NEXT(6904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6904(choice, ...) METALANG99_PRIV_REC_NEXT(6905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6905(choice, ...) METALANG99_PRIV_REC_NEXT(6906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6906(choice, ...) METALANG99_PRIV_REC_NEXT(6907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6907(choice, ...) METALANG99_PRIV_REC_NEXT(6908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6908(choice, ...) METALANG99_PRIV_REC_NEXT(6909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6909(choice, ...) METALANG99_PRIV_REC_NEXT(6910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6910(choice, ...) METALANG99_PRIV_REC_NEXT(6911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6911(choice, ...) METALANG99_PRIV_REC_NEXT(6912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6912(choice, ...) METALANG99_PRIV_REC_NEXT(6913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6913(choice, ...) METALANG99_PRIV_REC_NEXT(6914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6914(choice, ...) METALANG99_PRIV_REC_NEXT(6915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6915(choice, ...) METALANG99_PRIV_REC_NEXT(6916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6916(choice, ...) METALANG99_PRIV_REC_NEXT(6917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6917(choice, ...) METALANG99_PRIV_REC_NEXT(6918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6918(choice, ...) METALANG99_PRIV_REC_NEXT(6919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6919(choice, ...) METALANG99_PRIV_REC_NEXT(6920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6920(choice, ...) METALANG99_PRIV_REC_NEXT(6921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6921(choice, ...) METALANG99_PRIV_REC_NEXT(6922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6922(choice, ...) METALANG99_PRIV_REC_NEXT(6923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6923(choice, ...) METALANG99_PRIV_REC_NEXT(6924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6924(choice, ...) METALANG99_PRIV_REC_NEXT(6925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6925(choice, ...) METALANG99_PRIV_REC_NEXT(6926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6926(choice, ...) METALANG99_PRIV_REC_NEXT(6927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6927(choice, ...) METALANG99_PRIV_REC_NEXT(6928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6928(choice, ...) METALANG99_PRIV_REC_NEXT(6929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6929(choice, ...) METALANG99_PRIV_REC_NEXT(6930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6930(choice, ...) METALANG99_PRIV_REC_NEXT(6931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6931(choice, ...) METALANG99_PRIV_REC_NEXT(6932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6932(choice, ...) METALANG99_PRIV_REC_NEXT(6933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6933(choice, ...) METALANG99_PRIV_REC_NEXT(6934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6934(choice, ...) METALANG99_PRIV_REC_NEXT(6935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6935(choice, ...) METALANG99_PRIV_REC_NEXT(6936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6936(choice, ...) METALANG99_PRIV_REC_NEXT(6937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6937(choice, ...) METALANG99_PRIV_REC_NEXT(6938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6938(choice, ...) METALANG99_PRIV_REC_NEXT(6939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6939(choice, ...) METALANG99_PRIV_REC_NEXT(6940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6940(choice, ...) METALANG99_PRIV_REC_NEXT(6941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6941(choice, ...) METALANG99_PRIV_REC_NEXT(6942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6942(choice, ...) METALANG99_PRIV_REC_NEXT(6943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6943(choice, ...) METALANG99_PRIV_REC_NEXT(6944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6944(choice, ...) METALANG99_PRIV_REC_NEXT(6945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6945(choice, ...) METALANG99_PRIV_REC_NEXT(6946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6946(choice, ...) METALANG99_PRIV_REC_NEXT(6947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6947(choice, ...) METALANG99_PRIV_REC_NEXT(6948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6948(choice, ...) METALANG99_PRIV_REC_NEXT(6949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6949(choice, ...) METALANG99_PRIV_REC_NEXT(6950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6950(choice, ...) METALANG99_PRIV_REC_NEXT(6951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6951(choice, ...) METALANG99_PRIV_REC_NEXT(6952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6952(choice, ...) METALANG99_PRIV_REC_NEXT(6953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6953(choice, ...) METALANG99_PRIV_REC_NEXT(6954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6954(choice, ...) METALANG99_PRIV_REC_NEXT(6955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6955(choice, ...) METALANG99_PRIV_REC_NEXT(6956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6956(choice, ...) METALANG99_PRIV_REC_NEXT(6957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6957(choice, ...) METALANG99_PRIV_REC_NEXT(6958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6958(choice, ...) METALANG99_PRIV_REC_NEXT(6959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6959(choice, ...) METALANG99_PRIV_REC_NEXT(6960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6960(choice, ...) METALANG99_PRIV_REC_NEXT(6961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6961(choice, ...) METALANG99_PRIV_REC_NEXT(6962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6962(choice, ...) METALANG99_PRIV_REC_NEXT(6963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6963(choice, ...) METALANG99_PRIV_REC_NEXT(6964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6964(choice, ...) METALANG99_PRIV_REC_NEXT(6965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6965(choice, ...) METALANG99_PRIV_REC_NEXT(6966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6966(choice, ...) METALANG99_PRIV_REC_NEXT(6967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6967(choice, ...) METALANG99_PRIV_REC_NEXT(6968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6968(choice, ...) METALANG99_PRIV_REC_NEXT(6969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6969(choice, ...) METALANG99_PRIV_REC_NEXT(6970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6970(choice, ...) METALANG99_PRIV_REC_NEXT(6971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6971(choice, ...) METALANG99_PRIV_REC_NEXT(6972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6972(choice, ...) METALANG99_PRIV_REC_NEXT(6973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6973(choice, ...) METALANG99_PRIV_REC_NEXT(6974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6974(choice, ...) METALANG99_PRIV_REC_NEXT(6975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6975(choice, ...) METALANG99_PRIV_REC_NEXT(6976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6976(choice, ...) METALANG99_PRIV_REC_NEXT(6977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6977(choice, ...) METALANG99_PRIV_REC_NEXT(6978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6978(choice, ...) METALANG99_PRIV_REC_NEXT(6979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6979(choice, ...) METALANG99_PRIV_REC_NEXT(6980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6980(choice, ...) METALANG99_PRIV_REC_NEXT(6981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6981(choice, ...) METALANG99_PRIV_REC_NEXT(6982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6982(choice, ...) METALANG99_PRIV_REC_NEXT(6983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6983(choice, ...) METALANG99_PRIV_REC_NEXT(6984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6984(choice, ...) METALANG99_PRIV_REC_NEXT(6985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6985(choice, ...) METALANG99_PRIV_REC_NEXT(6986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6986(choice, ...) METALANG99_PRIV_REC_NEXT(6987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6987(choice, ...) METALANG99_PRIV_REC_NEXT(6988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6988(choice, ...) METALANG99_PRIV_REC_NEXT(6989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6989(choice, ...) METALANG99_PRIV_REC_NEXT(6990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6990(choice, ...) METALANG99_PRIV_REC_NEXT(6991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6991(choice, ...) METALANG99_PRIV_REC_NEXT(6992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6992(choice, ...) METALANG99_PRIV_REC_NEXT(6993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6993(choice, ...) METALANG99_PRIV_REC_NEXT(6994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6994(choice, ...) METALANG99_PRIV_REC_NEXT(6995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6995(choice, ...) METALANG99_PRIV_REC_NEXT(6996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6996(choice, ...) METALANG99_PRIV_REC_NEXT(6997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6997(choice, ...) METALANG99_PRIV_REC_NEXT(6998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6998(choice, ...) METALANG99_PRIV_REC_NEXT(6999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_6999(choice, ...) METALANG99_PRIV_REC_NEXT(7000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7000(choice, ...) METALANG99_PRIV_REC_NEXT(7001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7001(choice, ...) METALANG99_PRIV_REC_NEXT(7002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7002(choice, ...) METALANG99_PRIV_REC_NEXT(7003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7003(choice, ...) METALANG99_PRIV_REC_NEXT(7004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7004(choice, ...) METALANG99_PRIV_REC_NEXT(7005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7005(choice, ...) METALANG99_PRIV_REC_NEXT(7006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7006(choice, ...) METALANG99_PRIV_REC_NEXT(7007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7007(choice, ...) METALANG99_PRIV_REC_NEXT(7008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7008(choice, ...) METALANG99_PRIV_REC_NEXT(7009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7009(choice, ...) METALANG99_PRIV_REC_NEXT(7010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7010(choice, ...) METALANG99_PRIV_REC_NEXT(7011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7011(choice, ...) METALANG99_PRIV_REC_NEXT(7012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7012(choice, ...) METALANG99_PRIV_REC_NEXT(7013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7013(choice, ...) METALANG99_PRIV_REC_NEXT(7014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7014(choice, ...) METALANG99_PRIV_REC_NEXT(7015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7015(choice, ...) METALANG99_PRIV_REC_NEXT(7016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7016(choice, ...) METALANG99_PRIV_REC_NEXT(7017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7017(choice, ...) METALANG99_PRIV_REC_NEXT(7018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7018(choice, ...) METALANG99_PRIV_REC_NEXT(7019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7019(choice, ...) METALANG99_PRIV_REC_NEXT(7020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7020(choice, ...) METALANG99_PRIV_REC_NEXT(7021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7021(choice, ...) METALANG99_PRIV_REC_NEXT(7022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7022(choice, ...) METALANG99_PRIV_REC_NEXT(7023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7023(choice, ...) METALANG99_PRIV_REC_NEXT(7024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7024(choice, ...) METALANG99_PRIV_REC_NEXT(7025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7025(choice, ...) METALANG99_PRIV_REC_NEXT(7026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7026(choice, ...) METALANG99_PRIV_REC_NEXT(7027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7027(choice, ...) METALANG99_PRIV_REC_NEXT(7028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7028(choice, ...) METALANG99_PRIV_REC_NEXT(7029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7029(choice, ...) METALANG99_PRIV_REC_NEXT(7030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7030(choice, ...) METALANG99_PRIV_REC_NEXT(7031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7031(choice, ...) METALANG99_PRIV_REC_NEXT(7032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7032(choice, ...) METALANG99_PRIV_REC_NEXT(7033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7033(choice, ...) METALANG99_PRIV_REC_NEXT(7034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7034(choice, ...) METALANG99_PRIV_REC_NEXT(7035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7035(choice, ...) METALANG99_PRIV_REC_NEXT(7036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7036(choice, ...) METALANG99_PRIV_REC_NEXT(7037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7037(choice, ...) METALANG99_PRIV_REC_NEXT(7038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7038(choice, ...) METALANG99_PRIV_REC_NEXT(7039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7039(choice, ...) METALANG99_PRIV_REC_NEXT(7040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7040(choice, ...) METALANG99_PRIV_REC_NEXT(7041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7041(choice, ...) METALANG99_PRIV_REC_NEXT(7042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7042(choice, ...) METALANG99_PRIV_REC_NEXT(7043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7043(choice, ...) METALANG99_PRIV_REC_NEXT(7044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7044(choice, ...) METALANG99_PRIV_REC_NEXT(7045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7045(choice, ...) METALANG99_PRIV_REC_NEXT(7046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7046(choice, ...) METALANG99_PRIV_REC_NEXT(7047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7047(choice, ...) METALANG99_PRIV_REC_NEXT(7048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7048(choice, ...) METALANG99_PRIV_REC_NEXT(7049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7049(choice, ...) METALANG99_PRIV_REC_NEXT(7050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7050(choice, ...) METALANG99_PRIV_REC_NEXT(7051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7051(choice, ...) METALANG99_PRIV_REC_NEXT(7052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7052(choice, ...) METALANG99_PRIV_REC_NEXT(7053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7053(choice, ...) METALANG99_PRIV_REC_NEXT(7054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7054(choice, ...) METALANG99_PRIV_REC_NEXT(7055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7055(choice, ...) METALANG99_PRIV_REC_NEXT(7056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7056(choice, ...) METALANG99_PRIV_REC_NEXT(7057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7057(choice, ...) METALANG99_PRIV_REC_NEXT(7058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7058(choice, ...) METALANG99_PRIV_REC_NEXT(7059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7059(choice, ...) METALANG99_PRIV_REC_NEXT(7060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7060(choice, ...) METALANG99_PRIV_REC_NEXT(7061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7061(choice, ...) METALANG99_PRIV_REC_NEXT(7062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7062(choice, ...) METALANG99_PRIV_REC_NEXT(7063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7063(choice, ...) METALANG99_PRIV_REC_NEXT(7064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7064(choice, ...) METALANG99_PRIV_REC_NEXT(7065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7065(choice, ...) METALANG99_PRIV_REC_NEXT(7066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7066(choice, ...) METALANG99_PRIV_REC_NEXT(7067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7067(choice, ...) METALANG99_PRIV_REC_NEXT(7068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7068(choice, ...) METALANG99_PRIV_REC_NEXT(7069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7069(choice, ...) METALANG99_PRIV_REC_NEXT(7070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7070(choice, ...) METALANG99_PRIV_REC_NEXT(7071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7071(choice, ...) METALANG99_PRIV_REC_NEXT(7072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7072(choice, ...) METALANG99_PRIV_REC_NEXT(7073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7073(choice, ...) METALANG99_PRIV_REC_NEXT(7074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7074(choice, ...) METALANG99_PRIV_REC_NEXT(7075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7075(choice, ...) METALANG99_PRIV_REC_NEXT(7076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7076(choice, ...) METALANG99_PRIV_REC_NEXT(7077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7077(choice, ...) METALANG99_PRIV_REC_NEXT(7078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7078(choice, ...) METALANG99_PRIV_REC_NEXT(7079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7079(choice, ...) METALANG99_PRIV_REC_NEXT(7080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7080(choice, ...) METALANG99_PRIV_REC_NEXT(7081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7081(choice, ...) METALANG99_PRIV_REC_NEXT(7082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7082(choice, ...) METALANG99_PRIV_REC_NEXT(7083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7083(choice, ...) METALANG99_PRIV_REC_NEXT(7084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7084(choice, ...) METALANG99_PRIV_REC_NEXT(7085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7085(choice, ...) METALANG99_PRIV_REC_NEXT(7086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7086(choice, ...) METALANG99_PRIV_REC_NEXT(7087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7087(choice, ...) METALANG99_PRIV_REC_NEXT(7088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7088(choice, ...) METALANG99_PRIV_REC_NEXT(7089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7089(choice, ...) METALANG99_PRIV_REC_NEXT(7090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7090(choice, ...) METALANG99_PRIV_REC_NEXT(7091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7091(choice, ...) METALANG99_PRIV_REC_NEXT(7092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7092(choice, ...) METALANG99_PRIV_REC_NEXT(7093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7093(choice, ...) METALANG99_PRIV_REC_NEXT(7094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7094(choice, ...) METALANG99_PRIV_REC_NEXT(7095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7095(choice, ...) METALANG99_PRIV_REC_NEXT(7096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7096(choice, ...) METALANG99_PRIV_REC_NEXT(7097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7097(choice, ...) METALANG99_PRIV_REC_NEXT(7098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7098(choice, ...) METALANG99_PRIV_REC_NEXT(7099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7099(choice, ...) METALANG99_PRIV_REC_NEXT(7100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7100(choice, ...) METALANG99_PRIV_REC_NEXT(7101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7101(choice, ...) METALANG99_PRIV_REC_NEXT(7102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7102(choice, ...) METALANG99_PRIV_REC_NEXT(7103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7103(choice, ...) METALANG99_PRIV_REC_NEXT(7104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7104(choice, ...) METALANG99_PRIV_REC_NEXT(7105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7105(choice, ...) METALANG99_PRIV_REC_NEXT(7106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7106(choice, ...) METALANG99_PRIV_REC_NEXT(7107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7107(choice, ...) METALANG99_PRIV_REC_NEXT(7108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7108(choice, ...) METALANG99_PRIV_REC_NEXT(7109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7109(choice, ...) METALANG99_PRIV_REC_NEXT(7110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7110(choice, ...) METALANG99_PRIV_REC_NEXT(7111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7111(choice, ...) METALANG99_PRIV_REC_NEXT(7112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7112(choice, ...) METALANG99_PRIV_REC_NEXT(7113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7113(choice, ...) METALANG99_PRIV_REC_NEXT(7114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7114(choice, ...) METALANG99_PRIV_REC_NEXT(7115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7115(choice, ...) METALANG99_PRIV_REC_NEXT(7116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7116(choice, ...) METALANG99_PRIV_REC_NEXT(7117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7117(choice, ...) METALANG99_PRIV_REC_NEXT(7118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7118(choice, ...) METALANG99_PRIV_REC_NEXT(7119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7119(choice, ...) METALANG99_PRIV_REC_NEXT(7120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7120(choice, ...) METALANG99_PRIV_REC_NEXT(7121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7121(choice, ...) METALANG99_PRIV_REC_NEXT(7122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7122(choice, ...) METALANG99_PRIV_REC_NEXT(7123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7123(choice, ...) METALANG99_PRIV_REC_NEXT(7124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7124(choice, ...) METALANG99_PRIV_REC_NEXT(7125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7125(choice, ...) METALANG99_PRIV_REC_NEXT(7126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7126(choice, ...) METALANG99_PRIV_REC_NEXT(7127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7127(choice, ...) METALANG99_PRIV_REC_NEXT(7128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7128(choice, ...) METALANG99_PRIV_REC_NEXT(7129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7129(choice, ...) METALANG99_PRIV_REC_NEXT(7130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7130(choice, ...) METALANG99_PRIV_REC_NEXT(7131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7131(choice, ...) METALANG99_PRIV_REC_NEXT(7132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7132(choice, ...) METALANG99_PRIV_REC_NEXT(7133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7133(choice, ...) METALANG99_PRIV_REC_NEXT(7134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7134(choice, ...) METALANG99_PRIV_REC_NEXT(7135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7135(choice, ...) METALANG99_PRIV_REC_NEXT(7136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7136(choice, ...) METALANG99_PRIV_REC_NEXT(7137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7137(choice, ...) METALANG99_PRIV_REC_NEXT(7138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7138(choice, ...) METALANG99_PRIV_REC_NEXT(7139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7139(choice, ...) METALANG99_PRIV_REC_NEXT(7140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7140(choice, ...) METALANG99_PRIV_REC_NEXT(7141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7141(choice, ...) METALANG99_PRIV_REC_NEXT(7142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7142(choice, ...) METALANG99_PRIV_REC_NEXT(7143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7143(choice, ...) METALANG99_PRIV_REC_NEXT(7144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7144(choice, ...) METALANG99_PRIV_REC_NEXT(7145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7145(choice, ...) METALANG99_PRIV_REC_NEXT(7146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7146(choice, ...) METALANG99_PRIV_REC_NEXT(7147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7147(choice, ...) METALANG99_PRIV_REC_NEXT(7148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7148(choice, ...) METALANG99_PRIV_REC_NEXT(7149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7149(choice, ...) METALANG99_PRIV_REC_NEXT(7150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7150(choice, ...) METALANG99_PRIV_REC_NEXT(7151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7151(choice, ...) METALANG99_PRIV_REC_NEXT(7152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7152(choice, ...) METALANG99_PRIV_REC_NEXT(7153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7153(choice, ...) METALANG99_PRIV_REC_NEXT(7154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7154(choice, ...) METALANG99_PRIV_REC_NEXT(7155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7155(choice, ...) METALANG99_PRIV_REC_NEXT(7156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7156(choice, ...) METALANG99_PRIV_REC_NEXT(7157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7157(choice, ...) METALANG99_PRIV_REC_NEXT(7158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7158(choice, ...) METALANG99_PRIV_REC_NEXT(7159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7159(choice, ...) METALANG99_PRIV_REC_NEXT(7160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7160(choice, ...) METALANG99_PRIV_REC_NEXT(7161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7161(choice, ...) METALANG99_PRIV_REC_NEXT(7162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7162(choice, ...) METALANG99_PRIV_REC_NEXT(7163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7163(choice, ...) METALANG99_PRIV_REC_NEXT(7164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7164(choice, ...) METALANG99_PRIV_REC_NEXT(7165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7165(choice, ...) METALANG99_PRIV_REC_NEXT(7166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7166(choice, ...) METALANG99_PRIV_REC_NEXT(7167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7167(choice, ...) METALANG99_PRIV_REC_NEXT(7168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7168(choice, ...) METALANG99_PRIV_REC_NEXT(7169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7169(choice, ...) METALANG99_PRIV_REC_NEXT(7170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7170(choice, ...) METALANG99_PRIV_REC_NEXT(7171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7171(choice, ...) METALANG99_PRIV_REC_NEXT(7172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7172(choice, ...) METALANG99_PRIV_REC_NEXT(7173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7173(choice, ...) METALANG99_PRIV_REC_NEXT(7174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7174(choice, ...) METALANG99_PRIV_REC_NEXT(7175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7175(choice, ...) METALANG99_PRIV_REC_NEXT(7176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7176(choice, ...) METALANG99_PRIV_REC_NEXT(7177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7177(choice, ...) METALANG99_PRIV_REC_NEXT(7178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7178(choice, ...) METALANG99_PRIV_REC_NEXT(7179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7179(choice, ...) METALANG99_PRIV_REC_NEXT(7180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7180(choice, ...) METALANG99_PRIV_REC_NEXT(7181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7181(choice, ...) METALANG99_PRIV_REC_NEXT(7182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7182(choice, ...) METALANG99_PRIV_REC_NEXT(7183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7183(choice, ...) METALANG99_PRIV_REC_NEXT(7184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7184(choice, ...) METALANG99_PRIV_REC_NEXT(7185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7185(choice, ...) METALANG99_PRIV_REC_NEXT(7186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7186(choice, ...) METALANG99_PRIV_REC_NEXT(7187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7187(choice, ...) METALANG99_PRIV_REC_NEXT(7188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7188(choice, ...) METALANG99_PRIV_REC_NEXT(7189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7189(choice, ...) METALANG99_PRIV_REC_NEXT(7190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7190(choice, ...) METALANG99_PRIV_REC_NEXT(7191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7191(choice, ...) METALANG99_PRIV_REC_NEXT(7192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7192(choice, ...) METALANG99_PRIV_REC_NEXT(7193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7193(choice, ...) METALANG99_PRIV_REC_NEXT(7194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7194(choice, ...) METALANG99_PRIV_REC_NEXT(7195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7195(choice, ...) METALANG99_PRIV_REC_NEXT(7196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7196(choice, ...) METALANG99_PRIV_REC_NEXT(7197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7197(choice, ...) METALANG99_PRIV_REC_NEXT(7198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7198(choice, ...) METALANG99_PRIV_REC_NEXT(7199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7199(choice, ...) METALANG99_PRIV_REC_NEXT(7200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7200(choice, ...) METALANG99_PRIV_REC_NEXT(7201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7201(choice, ...) METALANG99_PRIV_REC_NEXT(7202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7202(choice, ...) METALANG99_PRIV_REC_NEXT(7203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7203(choice, ...) METALANG99_PRIV_REC_NEXT(7204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7204(choice, ...) METALANG99_PRIV_REC_NEXT(7205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7205(choice, ...) METALANG99_PRIV_REC_NEXT(7206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7206(choice, ...) METALANG99_PRIV_REC_NEXT(7207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7207(choice, ...) METALANG99_PRIV_REC_NEXT(7208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7208(choice, ...) METALANG99_PRIV_REC_NEXT(7209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7209(choice, ...) METALANG99_PRIV_REC_NEXT(7210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7210(choice, ...) METALANG99_PRIV_REC_NEXT(7211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7211(choice, ...) METALANG99_PRIV_REC_NEXT(7212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7212(choice, ...) METALANG99_PRIV_REC_NEXT(7213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7213(choice, ...) METALANG99_PRIV_REC_NEXT(7214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7214(choice, ...) METALANG99_PRIV_REC_NEXT(7215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7215(choice, ...) METALANG99_PRIV_REC_NEXT(7216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7216(choice, ...) METALANG99_PRIV_REC_NEXT(7217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7217(choice, ...) METALANG99_PRIV_REC_NEXT(7218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7218(choice, ...) METALANG99_PRIV_REC_NEXT(7219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7219(choice, ...) METALANG99_PRIV_REC_NEXT(7220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7220(choice, ...) METALANG99_PRIV_REC_NEXT(7221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7221(choice, ...) METALANG99_PRIV_REC_NEXT(7222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7222(choice, ...) METALANG99_PRIV_REC_NEXT(7223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7223(choice, ...) METALANG99_PRIV_REC_NEXT(7224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7224(choice, ...) METALANG99_PRIV_REC_NEXT(7225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7225(choice, ...) METALANG99_PRIV_REC_NEXT(7226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7226(choice, ...) METALANG99_PRIV_REC_NEXT(7227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7227(choice, ...) METALANG99_PRIV_REC_NEXT(7228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7228(choice, ...) METALANG99_PRIV_REC_NEXT(7229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7229(choice, ...) METALANG99_PRIV_REC_NEXT(7230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7230(choice, ...) METALANG99_PRIV_REC_NEXT(7231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7231(choice, ...) METALANG99_PRIV_REC_NEXT(7232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7232(choice, ...) METALANG99_PRIV_REC_NEXT(7233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7233(choice, ...) METALANG99_PRIV_REC_NEXT(7234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7234(choice, ...) METALANG99_PRIV_REC_NEXT(7235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7235(choice, ...) METALANG99_PRIV_REC_NEXT(7236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7236(choice, ...) METALANG99_PRIV_REC_NEXT(7237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7237(choice, ...) METALANG99_PRIV_REC_NEXT(7238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7238(choice, ...) METALANG99_PRIV_REC_NEXT(7239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7239(choice, ...) METALANG99_PRIV_REC_NEXT(7240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7240(choice, ...) METALANG99_PRIV_REC_NEXT(7241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7241(choice, ...) METALANG99_PRIV_REC_NEXT(7242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7242(choice, ...) METALANG99_PRIV_REC_NEXT(7243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7243(choice, ...) METALANG99_PRIV_REC_NEXT(7244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7244(choice, ...) METALANG99_PRIV_REC_NEXT(7245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7245(choice, ...) METALANG99_PRIV_REC_NEXT(7246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7246(choice, ...) METALANG99_PRIV_REC_NEXT(7247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7247(choice, ...) METALANG99_PRIV_REC_NEXT(7248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7248(choice, ...) METALANG99_PRIV_REC_NEXT(7249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7249(choice, ...) METALANG99_PRIV_REC_NEXT(7250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7250(choice, ...) METALANG99_PRIV_REC_NEXT(7251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7251(choice, ...) METALANG99_PRIV_REC_NEXT(7252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7252(choice, ...) METALANG99_PRIV_REC_NEXT(7253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7253(choice, ...) METALANG99_PRIV_REC_NEXT(7254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7254(choice, ...) METALANG99_PRIV_REC_NEXT(7255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7255(choice, ...) METALANG99_PRIV_REC_NEXT(7256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7256(choice, ...) METALANG99_PRIV_REC_NEXT(7257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7257(choice, ...) METALANG99_PRIV_REC_NEXT(7258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7258(choice, ...) METALANG99_PRIV_REC_NEXT(7259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7259(choice, ...) METALANG99_PRIV_REC_NEXT(7260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7260(choice, ...) METALANG99_PRIV_REC_NEXT(7261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7261(choice, ...) METALANG99_PRIV_REC_NEXT(7262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7262(choice, ...) METALANG99_PRIV_REC_NEXT(7263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7263(choice, ...) METALANG99_PRIV_REC_NEXT(7264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7264(choice, ...) METALANG99_PRIV_REC_NEXT(7265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7265(choice, ...) METALANG99_PRIV_REC_NEXT(7266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7266(choice, ...) METALANG99_PRIV_REC_NEXT(7267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7267(choice, ...) METALANG99_PRIV_REC_NEXT(7268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7268(choice, ...) METALANG99_PRIV_REC_NEXT(7269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7269(choice, ...) METALANG99_PRIV_REC_NEXT(7270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7270(choice, ...) METALANG99_PRIV_REC_NEXT(7271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7271(choice, ...) METALANG99_PRIV_REC_NEXT(7272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7272(choice, ...) METALANG99_PRIV_REC_NEXT(7273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7273(choice, ...) METALANG99_PRIV_REC_NEXT(7274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7274(choice, ...) METALANG99_PRIV_REC_NEXT(7275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7275(choice, ...) METALANG99_PRIV_REC_NEXT(7276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7276(choice, ...) METALANG99_PRIV_REC_NEXT(7277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7277(choice, ...) METALANG99_PRIV_REC_NEXT(7278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7278(choice, ...) METALANG99_PRIV_REC_NEXT(7279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7279(choice, ...) METALANG99_PRIV_REC_NEXT(7280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7280(choice, ...) METALANG99_PRIV_REC_NEXT(7281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7281(choice, ...) METALANG99_PRIV_REC_NEXT(7282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7282(choice, ...) METALANG99_PRIV_REC_NEXT(7283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7283(choice, ...) METALANG99_PRIV_REC_NEXT(7284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7284(choice, ...) METALANG99_PRIV_REC_NEXT(7285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7285(choice, ...) METALANG99_PRIV_REC_NEXT(7286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7286(choice, ...) METALANG99_PRIV_REC_NEXT(7287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7287(choice, ...) METALANG99_PRIV_REC_NEXT(7288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7288(choice, ...) METALANG99_PRIV_REC_NEXT(7289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7289(choice, ...) METALANG99_PRIV_REC_NEXT(7290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7290(choice, ...) METALANG99_PRIV_REC_NEXT(7291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7291(choice, ...) METALANG99_PRIV_REC_NEXT(7292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7292(choice, ...) METALANG99_PRIV_REC_NEXT(7293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7293(choice, ...) METALANG99_PRIV_REC_NEXT(7294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7294(choice, ...) METALANG99_PRIV_REC_NEXT(7295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7295(choice, ...) METALANG99_PRIV_REC_NEXT(7296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7296(choice, ...) METALANG99_PRIV_REC_NEXT(7297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7297(choice, ...) METALANG99_PRIV_REC_NEXT(7298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7298(choice, ...) METALANG99_PRIV_REC_NEXT(7299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7299(choice, ...) METALANG99_PRIV_REC_NEXT(7300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7300(choice, ...) METALANG99_PRIV_REC_NEXT(7301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7301(choice, ...) METALANG99_PRIV_REC_NEXT(7302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7302(choice, ...) METALANG99_PRIV_REC_NEXT(7303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7303(choice, ...) METALANG99_PRIV_REC_NEXT(7304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7304(choice, ...) METALANG99_PRIV_REC_NEXT(7305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7305(choice, ...) METALANG99_PRIV_REC_NEXT(7306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7306(choice, ...) METALANG99_PRIV_REC_NEXT(7307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7307(choice, ...) METALANG99_PRIV_REC_NEXT(7308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7308(choice, ...) METALANG99_PRIV_REC_NEXT(7309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7309(choice, ...) METALANG99_PRIV_REC_NEXT(7310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7310(choice, ...) METALANG99_PRIV_REC_NEXT(7311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7311(choice, ...) METALANG99_PRIV_REC_NEXT(7312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7312(choice, ...) METALANG99_PRIV_REC_NEXT(7313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7313(choice, ...) METALANG99_PRIV_REC_NEXT(7314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7314(choice, ...) METALANG99_PRIV_REC_NEXT(7315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7315(choice, ...) METALANG99_PRIV_REC_NEXT(7316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7316(choice, ...) METALANG99_PRIV_REC_NEXT(7317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7317(choice, ...) METALANG99_PRIV_REC_NEXT(7318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7318(choice, ...) METALANG99_PRIV_REC_NEXT(7319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7319(choice, ...) METALANG99_PRIV_REC_NEXT(7320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7320(choice, ...) METALANG99_PRIV_REC_NEXT(7321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7321(choice, ...) METALANG99_PRIV_REC_NEXT(7322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7322(choice, ...) METALANG99_PRIV_REC_NEXT(7323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7323(choice, ...) METALANG99_PRIV_REC_NEXT(7324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7324(choice, ...) METALANG99_PRIV_REC_NEXT(7325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7325(choice, ...) METALANG99_PRIV_REC_NEXT(7326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7326(choice, ...) METALANG99_PRIV_REC_NEXT(7327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7327(choice, ...) METALANG99_PRIV_REC_NEXT(7328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7328(choice, ...) METALANG99_PRIV_REC_NEXT(7329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7329(choice, ...) METALANG99_PRIV_REC_NEXT(7330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7330(choice, ...) METALANG99_PRIV_REC_NEXT(7331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7331(choice, ...) METALANG99_PRIV_REC_NEXT(7332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7332(choice, ...) METALANG99_PRIV_REC_NEXT(7333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7333(choice, ...) METALANG99_PRIV_REC_NEXT(7334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7334(choice, ...) METALANG99_PRIV_REC_NEXT(7335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7335(choice, ...) METALANG99_PRIV_REC_NEXT(7336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7336(choice, ...) METALANG99_PRIV_REC_NEXT(7337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7337(choice, ...) METALANG99_PRIV_REC_NEXT(7338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7338(choice, ...) METALANG99_PRIV_REC_NEXT(7339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7339(choice, ...) METALANG99_PRIV_REC_NEXT(7340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7340(choice, ...) METALANG99_PRIV_REC_NEXT(7341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7341(choice, ...) METALANG99_PRIV_REC_NEXT(7342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7342(choice, ...) METALANG99_PRIV_REC_NEXT(7343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7343(choice, ...) METALANG99_PRIV_REC_NEXT(7344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7344(choice, ...) METALANG99_PRIV_REC_NEXT(7345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7345(choice, ...) METALANG99_PRIV_REC_NEXT(7346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7346(choice, ...) METALANG99_PRIV_REC_NEXT(7347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7347(choice, ...) METALANG99_PRIV_REC_NEXT(7348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7348(choice, ...) METALANG99_PRIV_REC_NEXT(7349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7349(choice, ...) METALANG99_PRIV_REC_NEXT(7350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7350(choice, ...) METALANG99_PRIV_REC_NEXT(7351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7351(choice, ...) METALANG99_PRIV_REC_NEXT(7352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7352(choice, ...) METALANG99_PRIV_REC_NEXT(7353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7353(choice, ...) METALANG99_PRIV_REC_NEXT(7354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7354(choice, ...) METALANG99_PRIV_REC_NEXT(7355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7355(choice, ...) METALANG99_PRIV_REC_NEXT(7356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7356(choice, ...) METALANG99_PRIV_REC_NEXT(7357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7357(choice, ...) METALANG99_PRIV_REC_NEXT(7358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7358(choice, ...) METALANG99_PRIV_REC_NEXT(7359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7359(choice, ...) METALANG99_PRIV_REC_NEXT(7360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7360(choice, ...) METALANG99_PRIV_REC_NEXT(7361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7361(choice, ...) METALANG99_PRIV_REC_NEXT(7362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7362(choice, ...) METALANG99_PRIV_REC_NEXT(7363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7363(choice, ...) METALANG99_PRIV_REC_NEXT(7364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7364(choice, ...) METALANG99_PRIV_REC_NEXT(7365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7365(choice, ...) METALANG99_PRIV_REC_NEXT(7366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7366(choice, ...) METALANG99_PRIV_REC_NEXT(7367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7367(choice, ...) METALANG99_PRIV_REC_NEXT(7368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7368(choice, ...) METALANG99_PRIV_REC_NEXT(7369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7369(choice, ...) METALANG99_PRIV_REC_NEXT(7370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7370(choice, ...) METALANG99_PRIV_REC_NEXT(7371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7371(choice, ...) METALANG99_PRIV_REC_NEXT(7372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7372(choice, ...) METALANG99_PRIV_REC_NEXT(7373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7373(choice, ...) METALANG99_PRIV_REC_NEXT(7374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7374(choice, ...) METALANG99_PRIV_REC_NEXT(7375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7375(choice, ...) METALANG99_PRIV_REC_NEXT(7376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7376(choice, ...) METALANG99_PRIV_REC_NEXT(7377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7377(choice, ...) METALANG99_PRIV_REC_NEXT(7378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7378(choice, ...) METALANG99_PRIV_REC_NEXT(7379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7379(choice, ...) METALANG99_PRIV_REC_NEXT(7380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7380(choice, ...) METALANG99_PRIV_REC_NEXT(7381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7381(choice, ...) METALANG99_PRIV_REC_NEXT(7382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7382(choice, ...) METALANG99_PRIV_REC_NEXT(7383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7383(choice, ...) METALANG99_PRIV_REC_NEXT(7384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7384(choice, ...) METALANG99_PRIV_REC_NEXT(7385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7385(choice, ...) METALANG99_PRIV_REC_NEXT(7386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7386(choice, ...) METALANG99_PRIV_REC_NEXT(7387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7387(choice, ...) METALANG99_PRIV_REC_NEXT(7388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7388(choice, ...) METALANG99_PRIV_REC_NEXT(7389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7389(choice, ...) METALANG99_PRIV_REC_NEXT(7390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7390(choice, ...) METALANG99_PRIV_REC_NEXT(7391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7391(choice, ...) METALANG99_PRIV_REC_NEXT(7392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7392(choice, ...) METALANG99_PRIV_REC_NEXT(7393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7393(choice, ...) METALANG99_PRIV_REC_NEXT(7394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7394(choice, ...) METALANG99_PRIV_REC_NEXT(7395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7395(choice, ...) METALANG99_PRIV_REC_NEXT(7396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7396(choice, ...) METALANG99_PRIV_REC_NEXT(7397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7397(choice, ...) METALANG99_PRIV_REC_NEXT(7398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7398(choice, ...) METALANG99_PRIV_REC_NEXT(7399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7399(choice, ...) METALANG99_PRIV_REC_NEXT(7400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7400(choice, ...) METALANG99_PRIV_REC_NEXT(7401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7401(choice, ...) METALANG99_PRIV_REC_NEXT(7402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7402(choice, ...) METALANG99_PRIV_REC_NEXT(7403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7403(choice, ...) METALANG99_PRIV_REC_NEXT(7404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7404(choice, ...) METALANG99_PRIV_REC_NEXT(7405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7405(choice, ...) METALANG99_PRIV_REC_NEXT(7406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7406(choice, ...) METALANG99_PRIV_REC_NEXT(7407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7407(choice, ...) METALANG99_PRIV_REC_NEXT(7408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7408(choice, ...) METALANG99_PRIV_REC_NEXT(7409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7409(choice, ...) METALANG99_PRIV_REC_NEXT(7410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7410(choice, ...) METALANG99_PRIV_REC_NEXT(7411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7411(choice, ...) METALANG99_PRIV_REC_NEXT(7412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7412(choice, ...) METALANG99_PRIV_REC_NEXT(7413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7413(choice, ...) METALANG99_PRIV_REC_NEXT(7414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7414(choice, ...) METALANG99_PRIV_REC_NEXT(7415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7415(choice, ...) METALANG99_PRIV_REC_NEXT(7416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7416(choice, ...) METALANG99_PRIV_REC_NEXT(7417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7417(choice, ...) METALANG99_PRIV_REC_NEXT(7418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7418(choice, ...) METALANG99_PRIV_REC_NEXT(7419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7419(choice, ...) METALANG99_PRIV_REC_NEXT(7420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7420(choice, ...) METALANG99_PRIV_REC_NEXT(7421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7421(choice, ...) METALANG99_PRIV_REC_NEXT(7422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7422(choice, ...) METALANG99_PRIV_REC_NEXT(7423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7423(choice, ...) METALANG99_PRIV_REC_NEXT(7424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7424(choice, ...) METALANG99_PRIV_REC_NEXT(7425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7425(choice, ...) METALANG99_PRIV_REC_NEXT(7426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7426(choice, ...) METALANG99_PRIV_REC_NEXT(7427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7427(choice, ...) METALANG99_PRIV_REC_NEXT(7428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7428(choice, ...) METALANG99_PRIV_REC_NEXT(7429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7429(choice, ...) METALANG99_PRIV_REC_NEXT(7430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7430(choice, ...) METALANG99_PRIV_REC_NEXT(7431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7431(choice, ...) METALANG99_PRIV_REC_NEXT(7432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7432(choice, ...) METALANG99_PRIV_REC_NEXT(7433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7433(choice, ...) METALANG99_PRIV_REC_NEXT(7434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7434(choice, ...) METALANG99_PRIV_REC_NEXT(7435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7435(choice, ...) METALANG99_PRIV_REC_NEXT(7436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7436(choice, ...) METALANG99_PRIV_REC_NEXT(7437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7437(choice, ...) METALANG99_PRIV_REC_NEXT(7438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7438(choice, ...) METALANG99_PRIV_REC_NEXT(7439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7439(choice, ...) METALANG99_PRIV_REC_NEXT(7440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7440(choice, ...) METALANG99_PRIV_REC_NEXT(7441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7441(choice, ...) METALANG99_PRIV_REC_NEXT(7442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7442(choice, ...) METALANG99_PRIV_REC_NEXT(7443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7443(choice, ...) METALANG99_PRIV_REC_NEXT(7444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7444(choice, ...) METALANG99_PRIV_REC_NEXT(7445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7445(choice, ...) METALANG99_PRIV_REC_NEXT(7446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7446(choice, ...) METALANG99_PRIV_REC_NEXT(7447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7447(choice, ...) METALANG99_PRIV_REC_NEXT(7448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7448(choice, ...) METALANG99_PRIV_REC_NEXT(7449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7449(choice, ...) METALANG99_PRIV_REC_NEXT(7450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7450(choice, ...) METALANG99_PRIV_REC_NEXT(7451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7451(choice, ...) METALANG99_PRIV_REC_NEXT(7452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7452(choice, ...) METALANG99_PRIV_REC_NEXT(7453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7453(choice, ...) METALANG99_PRIV_REC_NEXT(7454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7454(choice, ...) METALANG99_PRIV_REC_NEXT(7455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7455(choice, ...) METALANG99_PRIV_REC_NEXT(7456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7456(choice, ...) METALANG99_PRIV_REC_NEXT(7457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7457(choice, ...) METALANG99_PRIV_REC_NEXT(7458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7458(choice, ...) METALANG99_PRIV_REC_NEXT(7459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7459(choice, ...) METALANG99_PRIV_REC_NEXT(7460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7460(choice, ...) METALANG99_PRIV_REC_NEXT(7461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7461(choice, ...) METALANG99_PRIV_REC_NEXT(7462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7462(choice, ...) METALANG99_PRIV_REC_NEXT(7463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7463(choice, ...) METALANG99_PRIV_REC_NEXT(7464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7464(choice, ...) METALANG99_PRIV_REC_NEXT(7465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7465(choice, ...) METALANG99_PRIV_REC_NEXT(7466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7466(choice, ...) METALANG99_PRIV_REC_NEXT(7467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7467(choice, ...) METALANG99_PRIV_REC_NEXT(7468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7468(choice, ...) METALANG99_PRIV_REC_NEXT(7469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7469(choice, ...) METALANG99_PRIV_REC_NEXT(7470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7470(choice, ...) METALANG99_PRIV_REC_NEXT(7471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7471(choice, ...) METALANG99_PRIV_REC_NEXT(7472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7472(choice, ...) METALANG99_PRIV_REC_NEXT(7473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7473(choice, ...) METALANG99_PRIV_REC_NEXT(7474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7474(choice, ...) METALANG99_PRIV_REC_NEXT(7475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7475(choice, ...) METALANG99_PRIV_REC_NEXT(7476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7476(choice, ...) METALANG99_PRIV_REC_NEXT(7477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7477(choice, ...) METALANG99_PRIV_REC_NEXT(7478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7478(choice, ...) METALANG99_PRIV_REC_NEXT(7479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7479(choice, ...) METALANG99_PRIV_REC_NEXT(7480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7480(choice, ...) METALANG99_PRIV_REC_NEXT(7481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7481(choice, ...) METALANG99_PRIV_REC_NEXT(7482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7482(choice, ...) METALANG99_PRIV_REC_NEXT(7483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7483(choice, ...) METALANG99_PRIV_REC_NEXT(7484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7484(choice, ...) METALANG99_PRIV_REC_NEXT(7485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7485(choice, ...) METALANG99_PRIV_REC_NEXT(7486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7486(choice, ...) METALANG99_PRIV_REC_NEXT(7487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7487(choice, ...) METALANG99_PRIV_REC_NEXT(7488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7488(choice, ...) METALANG99_PRIV_REC_NEXT(7489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7489(choice, ...) METALANG99_PRIV_REC_NEXT(7490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7490(choice, ...) METALANG99_PRIV_REC_NEXT(7491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7491(choice, ...) METALANG99_PRIV_REC_NEXT(7492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7492(choice, ...) METALANG99_PRIV_REC_NEXT(7493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7493(choice, ...) METALANG99_PRIV_REC_NEXT(7494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7494(choice, ...) METALANG99_PRIV_REC_NEXT(7495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7495(choice, ...) METALANG99_PRIV_REC_NEXT(7496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7496(choice, ...) METALANG99_PRIV_REC_NEXT(7497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7497(choice, ...) METALANG99_PRIV_REC_NEXT(7498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7498(choice, ...) METALANG99_PRIV_REC_NEXT(7499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7499(choice, ...) METALANG99_PRIV_REC_NEXT(7500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7500(choice, ...) METALANG99_PRIV_REC_NEXT(7501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7501(choice, ...) METALANG99_PRIV_REC_NEXT(7502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7502(choice, ...) METALANG99_PRIV_REC_NEXT(7503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7503(choice, ...) METALANG99_PRIV_REC_NEXT(7504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7504(choice, ...) METALANG99_PRIV_REC_NEXT(7505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7505(choice, ...) METALANG99_PRIV_REC_NEXT(7506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7506(choice, ...) METALANG99_PRIV_REC_NEXT(7507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7507(choice, ...) METALANG99_PRIV_REC_NEXT(7508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7508(choice, ...) METALANG99_PRIV_REC_NEXT(7509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7509(choice, ...) METALANG99_PRIV_REC_NEXT(7510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7510(choice, ...) METALANG99_PRIV_REC_NEXT(7511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7511(choice, ...) METALANG99_PRIV_REC_NEXT(7512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7512(choice, ...) METALANG99_PRIV_REC_NEXT(7513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7513(choice, ...) METALANG99_PRIV_REC_NEXT(7514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7514(choice, ...) METALANG99_PRIV_REC_NEXT(7515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7515(choice, ...) METALANG99_PRIV_REC_NEXT(7516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7516(choice, ...) METALANG99_PRIV_REC_NEXT(7517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7517(choice, ...) METALANG99_PRIV_REC_NEXT(7518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7518(choice, ...) METALANG99_PRIV_REC_NEXT(7519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7519(choice, ...) METALANG99_PRIV_REC_NEXT(7520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7520(choice, ...) METALANG99_PRIV_REC_NEXT(7521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7521(choice, ...) METALANG99_PRIV_REC_NEXT(7522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7522(choice, ...) METALANG99_PRIV_REC_NEXT(7523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7523(choice, ...) METALANG99_PRIV_REC_NEXT(7524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7524(choice, ...) METALANG99_PRIV_REC_NEXT(7525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7525(choice, ...) METALANG99_PRIV_REC_NEXT(7526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7526(choice, ...) METALANG99_PRIV_REC_NEXT(7527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7527(choice, ...) METALANG99_PRIV_REC_NEXT(7528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7528(choice, ...) METALANG99_PRIV_REC_NEXT(7529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7529(choice, ...) METALANG99_PRIV_REC_NEXT(7530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7530(choice, ...) METALANG99_PRIV_REC_NEXT(7531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7531(choice, ...) METALANG99_PRIV_REC_NEXT(7532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7532(choice, ...) METALANG99_PRIV_REC_NEXT(7533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7533(choice, ...) METALANG99_PRIV_REC_NEXT(7534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7534(choice, ...) METALANG99_PRIV_REC_NEXT(7535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7535(choice, ...) METALANG99_PRIV_REC_NEXT(7536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7536(choice, ...) METALANG99_PRIV_REC_NEXT(7537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7537(choice, ...) METALANG99_PRIV_REC_NEXT(7538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7538(choice, ...) METALANG99_PRIV_REC_NEXT(7539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7539(choice, ...) METALANG99_PRIV_REC_NEXT(7540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7540(choice, ...) METALANG99_PRIV_REC_NEXT(7541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7541(choice, ...) METALANG99_PRIV_REC_NEXT(7542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7542(choice, ...) METALANG99_PRIV_REC_NEXT(7543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7543(choice, ...) METALANG99_PRIV_REC_NEXT(7544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7544(choice, ...) METALANG99_PRIV_REC_NEXT(7545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7545(choice, ...) METALANG99_PRIV_REC_NEXT(7546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7546(choice, ...) METALANG99_PRIV_REC_NEXT(7547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7547(choice, ...) METALANG99_PRIV_REC_NEXT(7548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7548(choice, ...) METALANG99_PRIV_REC_NEXT(7549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7549(choice, ...) METALANG99_PRIV_REC_NEXT(7550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7550(choice, ...) METALANG99_PRIV_REC_NEXT(7551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7551(choice, ...) METALANG99_PRIV_REC_NEXT(7552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7552(choice, ...) METALANG99_PRIV_REC_NEXT(7553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7553(choice, ...) METALANG99_PRIV_REC_NEXT(7554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7554(choice, ...) METALANG99_PRIV_REC_NEXT(7555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7555(choice, ...) METALANG99_PRIV_REC_NEXT(7556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7556(choice, ...) METALANG99_PRIV_REC_NEXT(7557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7557(choice, ...) METALANG99_PRIV_REC_NEXT(7558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7558(choice, ...) METALANG99_PRIV_REC_NEXT(7559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7559(choice, ...) METALANG99_PRIV_REC_NEXT(7560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7560(choice, ...) METALANG99_PRIV_REC_NEXT(7561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7561(choice, ...) METALANG99_PRIV_REC_NEXT(7562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7562(choice, ...) METALANG99_PRIV_REC_NEXT(7563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7563(choice, ...) METALANG99_PRIV_REC_NEXT(7564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7564(choice, ...) METALANG99_PRIV_REC_NEXT(7565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7565(choice, ...) METALANG99_PRIV_REC_NEXT(7566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7566(choice, ...) METALANG99_PRIV_REC_NEXT(7567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7567(choice, ...) METALANG99_PRIV_REC_NEXT(7568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7568(choice, ...) METALANG99_PRIV_REC_NEXT(7569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7569(choice, ...) METALANG99_PRIV_REC_NEXT(7570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7570(choice, ...) METALANG99_PRIV_REC_NEXT(7571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7571(choice, ...) METALANG99_PRIV_REC_NEXT(7572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7572(choice, ...) METALANG99_PRIV_REC_NEXT(7573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7573(choice, ...) METALANG99_PRIV_REC_NEXT(7574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7574(choice, ...) METALANG99_PRIV_REC_NEXT(7575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7575(choice, ...) METALANG99_PRIV_REC_NEXT(7576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7576(choice, ...) METALANG99_PRIV_REC_NEXT(7577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7577(choice, ...) METALANG99_PRIV_REC_NEXT(7578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7578(choice, ...) METALANG99_PRIV_REC_NEXT(7579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7579(choice, ...) METALANG99_PRIV_REC_NEXT(7580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7580(choice, ...) METALANG99_PRIV_REC_NEXT(7581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7581(choice, ...) METALANG99_PRIV_REC_NEXT(7582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7582(choice, ...) METALANG99_PRIV_REC_NEXT(7583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7583(choice, ...) METALANG99_PRIV_REC_NEXT(7584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7584(choice, ...) METALANG99_PRIV_REC_NEXT(7585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7585(choice, ...) METALANG99_PRIV_REC_NEXT(7586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7586(choice, ...) METALANG99_PRIV_REC_NEXT(7587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7587(choice, ...) METALANG99_PRIV_REC_NEXT(7588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7588(choice, ...) METALANG99_PRIV_REC_NEXT(7589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7589(choice, ...) METALANG99_PRIV_REC_NEXT(7590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7590(choice, ...) METALANG99_PRIV_REC_NEXT(7591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7591(choice, ...) METALANG99_PRIV_REC_NEXT(7592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7592(choice, ...) METALANG99_PRIV_REC_NEXT(7593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7593(choice, ...) METALANG99_PRIV_REC_NEXT(7594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7594(choice, ...) METALANG99_PRIV_REC_NEXT(7595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7595(choice, ...) METALANG99_PRIV_REC_NEXT(7596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7596(choice, ...) METALANG99_PRIV_REC_NEXT(7597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7597(choice, ...) METALANG99_PRIV_REC_NEXT(7598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7598(choice, ...) METALANG99_PRIV_REC_NEXT(7599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7599(choice, ...) METALANG99_PRIV_REC_NEXT(7600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7600(choice, ...) METALANG99_PRIV_REC_NEXT(7601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7601(choice, ...) METALANG99_PRIV_REC_NEXT(7602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7602(choice, ...) METALANG99_PRIV_REC_NEXT(7603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7603(choice, ...) METALANG99_PRIV_REC_NEXT(7604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7604(choice, ...) METALANG99_PRIV_REC_NEXT(7605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7605(choice, ...) METALANG99_PRIV_REC_NEXT(7606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7606(choice, ...) METALANG99_PRIV_REC_NEXT(7607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7607(choice, ...) METALANG99_PRIV_REC_NEXT(7608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7608(choice, ...) METALANG99_PRIV_REC_NEXT(7609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7609(choice, ...) METALANG99_PRIV_REC_NEXT(7610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7610(choice, ...) METALANG99_PRIV_REC_NEXT(7611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7611(choice, ...) METALANG99_PRIV_REC_NEXT(7612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7612(choice, ...) METALANG99_PRIV_REC_NEXT(7613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7613(choice, ...) METALANG99_PRIV_REC_NEXT(7614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7614(choice, ...) METALANG99_PRIV_REC_NEXT(7615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7615(choice, ...) METALANG99_PRIV_REC_NEXT(7616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7616(choice, ...) METALANG99_PRIV_REC_NEXT(7617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7617(choice, ...) METALANG99_PRIV_REC_NEXT(7618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7618(choice, ...) METALANG99_PRIV_REC_NEXT(7619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7619(choice, ...) METALANG99_PRIV_REC_NEXT(7620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7620(choice, ...) METALANG99_PRIV_REC_NEXT(7621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7621(choice, ...) METALANG99_PRIV_REC_NEXT(7622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7622(choice, ...) METALANG99_PRIV_REC_NEXT(7623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7623(choice, ...) METALANG99_PRIV_REC_NEXT(7624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7624(choice, ...) METALANG99_PRIV_REC_NEXT(7625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7625(choice, ...) METALANG99_PRIV_REC_NEXT(7626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7626(choice, ...) METALANG99_PRIV_REC_NEXT(7627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7627(choice, ...) METALANG99_PRIV_REC_NEXT(7628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7628(choice, ...) METALANG99_PRIV_REC_NEXT(7629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7629(choice, ...) METALANG99_PRIV_REC_NEXT(7630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7630(choice, ...) METALANG99_PRIV_REC_NEXT(7631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7631(choice, ...) METALANG99_PRIV_REC_NEXT(7632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7632(choice, ...) METALANG99_PRIV_REC_NEXT(7633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7633(choice, ...) METALANG99_PRIV_REC_NEXT(7634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7634(choice, ...) METALANG99_PRIV_REC_NEXT(7635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7635(choice, ...) METALANG99_PRIV_REC_NEXT(7636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7636(choice, ...) METALANG99_PRIV_REC_NEXT(7637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7637(choice, ...) METALANG99_PRIV_REC_NEXT(7638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7638(choice, ...) METALANG99_PRIV_REC_NEXT(7639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7639(choice, ...) METALANG99_PRIV_REC_NEXT(7640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7640(choice, ...) METALANG99_PRIV_REC_NEXT(7641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7641(choice, ...) METALANG99_PRIV_REC_NEXT(7642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7642(choice, ...) METALANG99_PRIV_REC_NEXT(7643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7643(choice, ...) METALANG99_PRIV_REC_NEXT(7644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7644(choice, ...) METALANG99_PRIV_REC_NEXT(7645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7645(choice, ...) METALANG99_PRIV_REC_NEXT(7646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7646(choice, ...) METALANG99_PRIV_REC_NEXT(7647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7647(choice, ...) METALANG99_PRIV_REC_NEXT(7648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7648(choice, ...) METALANG99_PRIV_REC_NEXT(7649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7649(choice, ...) METALANG99_PRIV_REC_NEXT(7650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7650(choice, ...) METALANG99_PRIV_REC_NEXT(7651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7651(choice, ...) METALANG99_PRIV_REC_NEXT(7652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7652(choice, ...) METALANG99_PRIV_REC_NEXT(7653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7653(choice, ...) METALANG99_PRIV_REC_NEXT(7654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7654(choice, ...) METALANG99_PRIV_REC_NEXT(7655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7655(choice, ...) METALANG99_PRIV_REC_NEXT(7656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7656(choice, ...) METALANG99_PRIV_REC_NEXT(7657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7657(choice, ...) METALANG99_PRIV_REC_NEXT(7658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7658(choice, ...) METALANG99_PRIV_REC_NEXT(7659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7659(choice, ...) METALANG99_PRIV_REC_NEXT(7660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7660(choice, ...) METALANG99_PRIV_REC_NEXT(7661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7661(choice, ...) METALANG99_PRIV_REC_NEXT(7662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7662(choice, ...) METALANG99_PRIV_REC_NEXT(7663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7663(choice, ...) METALANG99_PRIV_REC_NEXT(7664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7664(choice, ...) METALANG99_PRIV_REC_NEXT(7665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7665(choice, ...) METALANG99_PRIV_REC_NEXT(7666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7666(choice, ...) METALANG99_PRIV_REC_NEXT(7667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7667(choice, ...) METALANG99_PRIV_REC_NEXT(7668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7668(choice, ...) METALANG99_PRIV_REC_NEXT(7669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7669(choice, ...) METALANG99_PRIV_REC_NEXT(7670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7670(choice, ...) METALANG99_PRIV_REC_NEXT(7671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7671(choice, ...) METALANG99_PRIV_REC_NEXT(7672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7672(choice, ...) METALANG99_PRIV_REC_NEXT(7673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7673(choice, ...) METALANG99_PRIV_REC_NEXT(7674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7674(choice, ...) METALANG99_PRIV_REC_NEXT(7675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7675(choice, ...) METALANG99_PRIV_REC_NEXT(7676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7676(choice, ...) METALANG99_PRIV_REC_NEXT(7677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7677(choice, ...) METALANG99_PRIV_REC_NEXT(7678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7678(choice, ...) METALANG99_PRIV_REC_NEXT(7679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7679(choice, ...) METALANG99_PRIV_REC_NEXT(7680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7680(choice, ...) METALANG99_PRIV_REC_NEXT(7681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7681(choice, ...) METALANG99_PRIV_REC_NEXT(7682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7682(choice, ...) METALANG99_PRIV_REC_NEXT(7683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7683(choice, ...) METALANG99_PRIV_REC_NEXT(7684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7684(choice, ...) METALANG99_PRIV_REC_NEXT(7685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7685(choice, ...) METALANG99_PRIV_REC_NEXT(7686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7686(choice, ...) METALANG99_PRIV_REC_NEXT(7687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7687(choice, ...) METALANG99_PRIV_REC_NEXT(7688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7688(choice, ...) METALANG99_PRIV_REC_NEXT(7689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7689(choice, ...) METALANG99_PRIV_REC_NEXT(7690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7690(choice, ...) METALANG99_PRIV_REC_NEXT(7691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7691(choice, ...) METALANG99_PRIV_REC_NEXT(7692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7692(choice, ...) METALANG99_PRIV_REC_NEXT(7693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7693(choice, ...) METALANG99_PRIV_REC_NEXT(7694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7694(choice, ...) METALANG99_PRIV_REC_NEXT(7695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7695(choice, ...) METALANG99_PRIV_REC_NEXT(7696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7696(choice, ...) METALANG99_PRIV_REC_NEXT(7697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7697(choice, ...) METALANG99_PRIV_REC_NEXT(7698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7698(choice, ...) METALANG99_PRIV_REC_NEXT(7699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7699(choice, ...) METALANG99_PRIV_REC_NEXT(7700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7700(choice, ...) METALANG99_PRIV_REC_NEXT(7701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7701(choice, ...) METALANG99_PRIV_REC_NEXT(7702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7702(choice, ...) METALANG99_PRIV_REC_NEXT(7703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7703(choice, ...) METALANG99_PRIV_REC_NEXT(7704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7704(choice, ...) METALANG99_PRIV_REC_NEXT(7705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7705(choice, ...) METALANG99_PRIV_REC_NEXT(7706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7706(choice, ...) METALANG99_PRIV_REC_NEXT(7707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7707(choice, ...) METALANG99_PRIV_REC_NEXT(7708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7708(choice, ...) METALANG99_PRIV_REC_NEXT(7709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7709(choice, ...) METALANG99_PRIV_REC_NEXT(7710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7710(choice, ...) METALANG99_PRIV_REC_NEXT(7711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7711(choice, ...) METALANG99_PRIV_REC_NEXT(7712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7712(choice, ...) METALANG99_PRIV_REC_NEXT(7713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7713(choice, ...) METALANG99_PRIV_REC_NEXT(7714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7714(choice, ...) METALANG99_PRIV_REC_NEXT(7715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7715(choice, ...) METALANG99_PRIV_REC_NEXT(7716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7716(choice, ...) METALANG99_PRIV_REC_NEXT(7717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7717(choice, ...) METALANG99_PRIV_REC_NEXT(7718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7718(choice, ...) METALANG99_PRIV_REC_NEXT(7719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7719(choice, ...) METALANG99_PRIV_REC_NEXT(7720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7720(choice, ...) METALANG99_PRIV_REC_NEXT(7721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7721(choice, ...) METALANG99_PRIV_REC_NEXT(7722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7722(choice, ...) METALANG99_PRIV_REC_NEXT(7723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7723(choice, ...) METALANG99_PRIV_REC_NEXT(7724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7724(choice, ...) METALANG99_PRIV_REC_NEXT(7725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7725(choice, ...) METALANG99_PRIV_REC_NEXT(7726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7726(choice, ...) METALANG99_PRIV_REC_NEXT(7727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7727(choice, ...) METALANG99_PRIV_REC_NEXT(7728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7728(choice, ...) METALANG99_PRIV_REC_NEXT(7729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7729(choice, ...) METALANG99_PRIV_REC_NEXT(7730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7730(choice, ...) METALANG99_PRIV_REC_NEXT(7731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7731(choice, ...) METALANG99_PRIV_REC_NEXT(7732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7732(choice, ...) METALANG99_PRIV_REC_NEXT(7733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7733(choice, ...) METALANG99_PRIV_REC_NEXT(7734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7734(choice, ...) METALANG99_PRIV_REC_NEXT(7735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7735(choice, ...) METALANG99_PRIV_REC_NEXT(7736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7736(choice, ...) METALANG99_PRIV_REC_NEXT(7737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7737(choice, ...) METALANG99_PRIV_REC_NEXT(7738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7738(choice, ...) METALANG99_PRIV_REC_NEXT(7739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7739(choice, ...) METALANG99_PRIV_REC_NEXT(7740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7740(choice, ...) METALANG99_PRIV_REC_NEXT(7741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7741(choice, ...) METALANG99_PRIV_REC_NEXT(7742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7742(choice, ...) METALANG99_PRIV_REC_NEXT(7743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7743(choice, ...) METALANG99_PRIV_REC_NEXT(7744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7744(choice, ...) METALANG99_PRIV_REC_NEXT(7745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7745(choice, ...) METALANG99_PRIV_REC_NEXT(7746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7746(choice, ...) METALANG99_PRIV_REC_NEXT(7747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7747(choice, ...) METALANG99_PRIV_REC_NEXT(7748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7748(choice, ...) METALANG99_PRIV_REC_NEXT(7749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7749(choice, ...) METALANG99_PRIV_REC_NEXT(7750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7750(choice, ...) METALANG99_PRIV_REC_NEXT(7751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7751(choice, ...) METALANG99_PRIV_REC_NEXT(7752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7752(choice, ...) METALANG99_PRIV_REC_NEXT(7753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7753(choice, ...) METALANG99_PRIV_REC_NEXT(7754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7754(choice, ...) METALANG99_PRIV_REC_NEXT(7755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7755(choice, ...) METALANG99_PRIV_REC_NEXT(7756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7756(choice, ...) METALANG99_PRIV_REC_NEXT(7757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7757(choice, ...) METALANG99_PRIV_REC_NEXT(7758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7758(choice, ...) METALANG99_PRIV_REC_NEXT(7759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7759(choice, ...) METALANG99_PRIV_REC_NEXT(7760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7760(choice, ...) METALANG99_PRIV_REC_NEXT(7761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7761(choice, ...) METALANG99_PRIV_REC_NEXT(7762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7762(choice, ...) METALANG99_PRIV_REC_NEXT(7763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7763(choice, ...) METALANG99_PRIV_REC_NEXT(7764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7764(choice, ...) METALANG99_PRIV_REC_NEXT(7765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7765(choice, ...) METALANG99_PRIV_REC_NEXT(7766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7766(choice, ...) METALANG99_PRIV_REC_NEXT(7767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7767(choice, ...) METALANG99_PRIV_REC_NEXT(7768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7768(choice, ...) METALANG99_PRIV_REC_NEXT(7769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7769(choice, ...) METALANG99_PRIV_REC_NEXT(7770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7770(choice, ...) METALANG99_PRIV_REC_NEXT(7771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7771(choice, ...) METALANG99_PRIV_REC_NEXT(7772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7772(choice, ...) METALANG99_PRIV_REC_NEXT(7773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7773(choice, ...) METALANG99_PRIV_REC_NEXT(7774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7774(choice, ...) METALANG99_PRIV_REC_NEXT(7775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7775(choice, ...) METALANG99_PRIV_REC_NEXT(7776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7776(choice, ...) METALANG99_PRIV_REC_NEXT(7777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7777(choice, ...) METALANG99_PRIV_REC_NEXT(7778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7778(choice, ...) METALANG99_PRIV_REC_NEXT(7779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7779(choice, ...) METALANG99_PRIV_REC_NEXT(7780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7780(choice, ...) METALANG99_PRIV_REC_NEXT(7781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7781(choice, ...) METALANG99_PRIV_REC_NEXT(7782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7782(choice, ...) METALANG99_PRIV_REC_NEXT(7783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7783(choice, ...) METALANG99_PRIV_REC_NEXT(7784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7784(choice, ...) METALANG99_PRIV_REC_NEXT(7785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7785(choice, ...) METALANG99_PRIV_REC_NEXT(7786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7786(choice, ...) METALANG99_PRIV_REC_NEXT(7787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7787(choice, ...) METALANG99_PRIV_REC_NEXT(7788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7788(choice, ...) METALANG99_PRIV_REC_NEXT(7789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7789(choice, ...) METALANG99_PRIV_REC_NEXT(7790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7790(choice, ...) METALANG99_PRIV_REC_NEXT(7791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7791(choice, ...) METALANG99_PRIV_REC_NEXT(7792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7792(choice, ...) METALANG99_PRIV_REC_NEXT(7793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7793(choice, ...) METALANG99_PRIV_REC_NEXT(7794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7794(choice, ...) METALANG99_PRIV_REC_NEXT(7795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7795(choice, ...) METALANG99_PRIV_REC_NEXT(7796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7796(choice, ...) METALANG99_PRIV_REC_NEXT(7797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7797(choice, ...) METALANG99_PRIV_REC_NEXT(7798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7798(choice, ...) METALANG99_PRIV_REC_NEXT(7799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7799(choice, ...) METALANG99_PRIV_REC_NEXT(7800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7800(choice, ...) METALANG99_PRIV_REC_NEXT(7801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7801(choice, ...) METALANG99_PRIV_REC_NEXT(7802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7802(choice, ...) METALANG99_PRIV_REC_NEXT(7803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7803(choice, ...) METALANG99_PRIV_REC_NEXT(7804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7804(choice, ...) METALANG99_PRIV_REC_NEXT(7805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7805(choice, ...) METALANG99_PRIV_REC_NEXT(7806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7806(choice, ...) METALANG99_PRIV_REC_NEXT(7807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7807(choice, ...) METALANG99_PRIV_REC_NEXT(7808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7808(choice, ...) METALANG99_PRIV_REC_NEXT(7809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7809(choice, ...) METALANG99_PRIV_REC_NEXT(7810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7810(choice, ...) METALANG99_PRIV_REC_NEXT(7811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7811(choice, ...) METALANG99_PRIV_REC_NEXT(7812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7812(choice, ...) METALANG99_PRIV_REC_NEXT(7813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7813(choice, ...) METALANG99_PRIV_REC_NEXT(7814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7814(choice, ...) METALANG99_PRIV_REC_NEXT(7815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7815(choice, ...) METALANG99_PRIV_REC_NEXT(7816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7816(choice, ...) METALANG99_PRIV_REC_NEXT(7817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7817(choice, ...) METALANG99_PRIV_REC_NEXT(7818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7818(choice, ...) METALANG99_PRIV_REC_NEXT(7819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7819(choice, ...) METALANG99_PRIV_REC_NEXT(7820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7820(choice, ...) METALANG99_PRIV_REC_NEXT(7821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7821(choice, ...) METALANG99_PRIV_REC_NEXT(7822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7822(choice, ...) METALANG99_PRIV_REC_NEXT(7823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7823(choice, ...) METALANG99_PRIV_REC_NEXT(7824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7824(choice, ...) METALANG99_PRIV_REC_NEXT(7825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7825(choice, ...) METALANG99_PRIV_REC_NEXT(7826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7826(choice, ...) METALANG99_PRIV_REC_NEXT(7827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7827(choice, ...) METALANG99_PRIV_REC_NEXT(7828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7828(choice, ...) METALANG99_PRIV_REC_NEXT(7829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7829(choice, ...) METALANG99_PRIV_REC_NEXT(7830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7830(choice, ...) METALANG99_PRIV_REC_NEXT(7831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7831(choice, ...) METALANG99_PRIV_REC_NEXT(7832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7832(choice, ...) METALANG99_PRIV_REC_NEXT(7833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7833(choice, ...) METALANG99_PRIV_REC_NEXT(7834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7834(choice, ...) METALANG99_PRIV_REC_NEXT(7835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7835(choice, ...) METALANG99_PRIV_REC_NEXT(7836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7836(choice, ...) METALANG99_PRIV_REC_NEXT(7837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7837(choice, ...) METALANG99_PRIV_REC_NEXT(7838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7838(choice, ...) METALANG99_PRIV_REC_NEXT(7839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7839(choice, ...) METALANG99_PRIV_REC_NEXT(7840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7840(choice, ...) METALANG99_PRIV_REC_NEXT(7841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7841(choice, ...) METALANG99_PRIV_REC_NEXT(7842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7842(choice, ...) METALANG99_PRIV_REC_NEXT(7843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7843(choice, ...) METALANG99_PRIV_REC_NEXT(7844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7844(choice, ...) METALANG99_PRIV_REC_NEXT(7845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7845(choice, ...) METALANG99_PRIV_REC_NEXT(7846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7846(choice, ...) METALANG99_PRIV_REC_NEXT(7847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7847(choice, ...) METALANG99_PRIV_REC_NEXT(7848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7848(choice, ...) METALANG99_PRIV_REC_NEXT(7849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7849(choice, ...) METALANG99_PRIV_REC_NEXT(7850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7850(choice, ...) METALANG99_PRIV_REC_NEXT(7851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7851(choice, ...) METALANG99_PRIV_REC_NEXT(7852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7852(choice, ...) METALANG99_PRIV_REC_NEXT(7853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7853(choice, ...) METALANG99_PRIV_REC_NEXT(7854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7854(choice, ...) METALANG99_PRIV_REC_NEXT(7855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7855(choice, ...) METALANG99_PRIV_REC_NEXT(7856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7856(choice, ...) METALANG99_PRIV_REC_NEXT(7857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7857(choice, ...) METALANG99_PRIV_REC_NEXT(7858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7858(choice, ...) METALANG99_PRIV_REC_NEXT(7859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7859(choice, ...) METALANG99_PRIV_REC_NEXT(7860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7860(choice, ...) METALANG99_PRIV_REC_NEXT(7861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7861(choice, ...) METALANG99_PRIV_REC_NEXT(7862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7862(choice, ...) METALANG99_PRIV_REC_NEXT(7863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7863(choice, ...) METALANG99_PRIV_REC_NEXT(7864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7864(choice, ...) METALANG99_PRIV_REC_NEXT(7865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7865(choice, ...) METALANG99_PRIV_REC_NEXT(7866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7866(choice, ...) METALANG99_PRIV_REC_NEXT(7867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7867(choice, ...) METALANG99_PRIV_REC_NEXT(7868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7868(choice, ...) METALANG99_PRIV_REC_NEXT(7869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7869(choice, ...) METALANG99_PRIV_REC_NEXT(7870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7870(choice, ...) METALANG99_PRIV_REC_NEXT(7871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7871(choice, ...) METALANG99_PRIV_REC_NEXT(7872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7872(choice, ...) METALANG99_PRIV_REC_NEXT(7873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7873(choice, ...) METALANG99_PRIV_REC_NEXT(7874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7874(choice, ...) METALANG99_PRIV_REC_NEXT(7875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7875(choice, ...) METALANG99_PRIV_REC_NEXT(7876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7876(choice, ...) METALANG99_PRIV_REC_NEXT(7877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7877(choice, ...) METALANG99_PRIV_REC_NEXT(7878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7878(choice, ...) METALANG99_PRIV_REC_NEXT(7879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7879(choice, ...) METALANG99_PRIV_REC_NEXT(7880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7880(choice, ...) METALANG99_PRIV_REC_NEXT(7881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7881(choice, ...) METALANG99_PRIV_REC_NEXT(7882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7882(choice, ...) METALANG99_PRIV_REC_NEXT(7883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7883(choice, ...) METALANG99_PRIV_REC_NEXT(7884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7884(choice, ...) METALANG99_PRIV_REC_NEXT(7885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7885(choice, ...) METALANG99_PRIV_REC_NEXT(7886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7886(choice, ...) METALANG99_PRIV_REC_NEXT(7887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7887(choice, ...) METALANG99_PRIV_REC_NEXT(7888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7888(choice, ...) METALANG99_PRIV_REC_NEXT(7889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7889(choice, ...) METALANG99_PRIV_REC_NEXT(7890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7890(choice, ...) METALANG99_PRIV_REC_NEXT(7891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7891(choice, ...) METALANG99_PRIV_REC_NEXT(7892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7892(choice, ...) METALANG99_PRIV_REC_NEXT(7893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7893(choice, ...) METALANG99_PRIV_REC_NEXT(7894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7894(choice, ...) METALANG99_PRIV_REC_NEXT(7895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7895(choice, ...) METALANG99_PRIV_REC_NEXT(7896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7896(choice, ...) METALANG99_PRIV_REC_NEXT(7897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7897(choice, ...) METALANG99_PRIV_REC_NEXT(7898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7898(choice, ...) METALANG99_PRIV_REC_NEXT(7899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7899(choice, ...) METALANG99_PRIV_REC_NEXT(7900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7900(choice, ...) METALANG99_PRIV_REC_NEXT(7901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7901(choice, ...) METALANG99_PRIV_REC_NEXT(7902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7902(choice, ...) METALANG99_PRIV_REC_NEXT(7903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7903(choice, ...) METALANG99_PRIV_REC_NEXT(7904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7904(choice, ...) METALANG99_PRIV_REC_NEXT(7905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7905(choice, ...) METALANG99_PRIV_REC_NEXT(7906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7906(choice, ...) METALANG99_PRIV_REC_NEXT(7907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7907(choice, ...) METALANG99_PRIV_REC_NEXT(7908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7908(choice, ...) METALANG99_PRIV_REC_NEXT(7909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7909(choice, ...) METALANG99_PRIV_REC_NEXT(7910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7910(choice, ...) METALANG99_PRIV_REC_NEXT(7911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7911(choice, ...) METALANG99_PRIV_REC_NEXT(7912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7912(choice, ...) METALANG99_PRIV_REC_NEXT(7913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7913(choice, ...) METALANG99_PRIV_REC_NEXT(7914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7914(choice, ...) METALANG99_PRIV_REC_NEXT(7915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7915(choice, ...) METALANG99_PRIV_REC_NEXT(7916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7916(choice, ...) METALANG99_PRIV_REC_NEXT(7917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7917(choice, ...) METALANG99_PRIV_REC_NEXT(7918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7918(choice, ...) METALANG99_PRIV_REC_NEXT(7919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7919(choice, ...) METALANG99_PRIV_REC_NEXT(7920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7920(choice, ...) METALANG99_PRIV_REC_NEXT(7921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7921(choice, ...) METALANG99_PRIV_REC_NEXT(7922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7922(choice, ...) METALANG99_PRIV_REC_NEXT(7923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7923(choice, ...) METALANG99_PRIV_REC_NEXT(7924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7924(choice, ...) METALANG99_PRIV_REC_NEXT(7925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7925(choice, ...) METALANG99_PRIV_REC_NEXT(7926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7926(choice, ...) METALANG99_PRIV_REC_NEXT(7927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7927(choice, ...) METALANG99_PRIV_REC_NEXT(7928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7928(choice, ...) METALANG99_PRIV_REC_NEXT(7929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7929(choice, ...) METALANG99_PRIV_REC_NEXT(7930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7930(choice, ...) METALANG99_PRIV_REC_NEXT(7931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7931(choice, ...) METALANG99_PRIV_REC_NEXT(7932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7932(choice, ...) METALANG99_PRIV_REC_NEXT(7933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7933(choice, ...) METALANG99_PRIV_REC_NEXT(7934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7934(choice, ...) METALANG99_PRIV_REC_NEXT(7935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7935(choice, ...) METALANG99_PRIV_REC_NEXT(7936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7936(choice, ...) METALANG99_PRIV_REC_NEXT(7937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7937(choice, ...) METALANG99_PRIV_REC_NEXT(7938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7938(choice, ...) METALANG99_PRIV_REC_NEXT(7939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7939(choice, ...) METALANG99_PRIV_REC_NEXT(7940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7940(choice, ...) METALANG99_PRIV_REC_NEXT(7941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7941(choice, ...) METALANG99_PRIV_REC_NEXT(7942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7942(choice, ...) METALANG99_PRIV_REC_NEXT(7943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7943(choice, ...) METALANG99_PRIV_REC_NEXT(7944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7944(choice, ...) METALANG99_PRIV_REC_NEXT(7945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7945(choice, ...) METALANG99_PRIV_REC_NEXT(7946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7946(choice, ...) METALANG99_PRIV_REC_NEXT(7947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7947(choice, ...) METALANG99_PRIV_REC_NEXT(7948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7948(choice, ...) METALANG99_PRIV_REC_NEXT(7949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7949(choice, ...) METALANG99_PRIV_REC_NEXT(7950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7950(choice, ...) METALANG99_PRIV_REC_NEXT(7951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7951(choice, ...) METALANG99_PRIV_REC_NEXT(7952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7952(choice, ...) METALANG99_PRIV_REC_NEXT(7953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7953(choice, ...) METALANG99_PRIV_REC_NEXT(7954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7954(choice, ...) METALANG99_PRIV_REC_NEXT(7955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7955(choice, ...) METALANG99_PRIV_REC_NEXT(7956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7956(choice, ...) METALANG99_PRIV_REC_NEXT(7957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7957(choice, ...) METALANG99_PRIV_REC_NEXT(7958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7958(choice, ...) METALANG99_PRIV_REC_NEXT(7959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7959(choice, ...) METALANG99_PRIV_REC_NEXT(7960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7960(choice, ...) METALANG99_PRIV_REC_NEXT(7961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7961(choice, ...) METALANG99_PRIV_REC_NEXT(7962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7962(choice, ...) METALANG99_PRIV_REC_NEXT(7963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7963(choice, ...) METALANG99_PRIV_REC_NEXT(7964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7964(choice, ...) METALANG99_PRIV_REC_NEXT(7965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7965(choice, ...) METALANG99_PRIV_REC_NEXT(7966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7966(choice, ...) METALANG99_PRIV_REC_NEXT(7967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7967(choice, ...) METALANG99_PRIV_REC_NEXT(7968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7968(choice, ...) METALANG99_PRIV_REC_NEXT(7969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7969(choice, ...) METALANG99_PRIV_REC_NEXT(7970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7970(choice, ...) METALANG99_PRIV_REC_NEXT(7971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7971(choice, ...) METALANG99_PRIV_REC_NEXT(7972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7972(choice, ...) METALANG99_PRIV_REC_NEXT(7973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7973(choice, ...) METALANG99_PRIV_REC_NEXT(7974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7974(choice, ...) METALANG99_PRIV_REC_NEXT(7975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7975(choice, ...) METALANG99_PRIV_REC_NEXT(7976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7976(choice, ...) METALANG99_PRIV_REC_NEXT(7977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7977(choice, ...) METALANG99_PRIV_REC_NEXT(7978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7978(choice, ...) METALANG99_PRIV_REC_NEXT(7979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7979(choice, ...) METALANG99_PRIV_REC_NEXT(7980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7980(choice, ...) METALANG99_PRIV_REC_NEXT(7981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7981(choice, ...) METALANG99_PRIV_REC_NEXT(7982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7982(choice, ...) METALANG99_PRIV_REC_NEXT(7983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7983(choice, ...) METALANG99_PRIV_REC_NEXT(7984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7984(choice, ...) METALANG99_PRIV_REC_NEXT(7985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7985(choice, ...) METALANG99_PRIV_REC_NEXT(7986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7986(choice, ...) METALANG99_PRIV_REC_NEXT(7987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7987(choice, ...) METALANG99_PRIV_REC_NEXT(7988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7988(choice, ...) METALANG99_PRIV_REC_NEXT(7989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7989(choice, ...) METALANG99_PRIV_REC_NEXT(7990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7990(choice, ...) METALANG99_PRIV_REC_NEXT(7991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7991(choice, ...) METALANG99_PRIV_REC_NEXT(7992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7992(choice, ...) METALANG99_PRIV_REC_NEXT(7993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7993(choice, ...) METALANG99_PRIV_REC_NEXT(7994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7994(choice, ...) METALANG99_PRIV_REC_NEXT(7995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7995(choice, ...) METALANG99_PRIV_REC_NEXT(7996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7996(choice, ...) METALANG99_PRIV_REC_NEXT(7997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7997(choice, ...) METALANG99_PRIV_REC_NEXT(7998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7998(choice, ...) METALANG99_PRIV_REC_NEXT(7999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_7999(choice, ...) METALANG99_PRIV_REC_NEXT(8000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8000(choice, ...) METALANG99_PRIV_REC_NEXT(8001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8001(choice, ...) METALANG99_PRIV_REC_NEXT(8002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8002(choice, ...) METALANG99_PRIV_REC_NEXT(8003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8003(choice, ...) METALANG99_PRIV_REC_NEXT(8004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8004(choice, ...) METALANG99_PRIV_REC_NEXT(8005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8005(choice, ...) METALANG99_PRIV_REC_NEXT(8006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8006(choice, ...) METALANG99_PRIV_REC_NEXT(8007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8007(choice, ...) METALANG99_PRIV_REC_NEXT(8008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8008(choice, ...) METALANG99_PRIV_REC_NEXT(8009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8009(choice, ...) METALANG99_PRIV_REC_NEXT(8010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8010(choice, ...) METALANG99_PRIV_REC_NEXT(8011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8011(choice, ...) METALANG99_PRIV_REC_NEXT(8012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8012(choice, ...) METALANG99_PRIV_REC_NEXT(8013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8013(choice, ...) METALANG99_PRIV_REC_NEXT(8014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8014(choice, ...) METALANG99_PRIV_REC_NEXT(8015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8015(choice, ...) METALANG99_PRIV_REC_NEXT(8016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8016(choice, ...) METALANG99_PRIV_REC_NEXT(8017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8017(choice, ...) METALANG99_PRIV_REC_NEXT(8018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8018(choice, ...) METALANG99_PRIV_REC_NEXT(8019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8019(choice, ...) METALANG99_PRIV_REC_NEXT(8020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8020(choice, ...) METALANG99_PRIV_REC_NEXT(8021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8021(choice, ...) METALANG99_PRIV_REC_NEXT(8022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8022(choice, ...) METALANG99_PRIV_REC_NEXT(8023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8023(choice, ...) METALANG99_PRIV_REC_NEXT(8024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8024(choice, ...) METALANG99_PRIV_REC_NEXT(8025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8025(choice, ...) METALANG99_PRIV_REC_NEXT(8026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8026(choice, ...) METALANG99_PRIV_REC_NEXT(8027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8027(choice, ...) METALANG99_PRIV_REC_NEXT(8028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8028(choice, ...) METALANG99_PRIV_REC_NEXT(8029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8029(choice, ...) METALANG99_PRIV_REC_NEXT(8030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8030(choice, ...) METALANG99_PRIV_REC_NEXT(8031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8031(choice, ...) METALANG99_PRIV_REC_NEXT(8032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8032(choice, ...) METALANG99_PRIV_REC_NEXT(8033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8033(choice, ...) METALANG99_PRIV_REC_NEXT(8034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8034(choice, ...) METALANG99_PRIV_REC_NEXT(8035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8035(choice, ...) METALANG99_PRIV_REC_NEXT(8036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8036(choice, ...) METALANG99_PRIV_REC_NEXT(8037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8037(choice, ...) METALANG99_PRIV_REC_NEXT(8038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8038(choice, ...) METALANG99_PRIV_REC_NEXT(8039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8039(choice, ...) METALANG99_PRIV_REC_NEXT(8040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8040(choice, ...) METALANG99_PRIV_REC_NEXT(8041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8041(choice, ...) METALANG99_PRIV_REC_NEXT(8042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8042(choice, ...) METALANG99_PRIV_REC_NEXT(8043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8043(choice, ...) METALANG99_PRIV_REC_NEXT(8044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8044(choice, ...) METALANG99_PRIV_REC_NEXT(8045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8045(choice, ...) METALANG99_PRIV_REC_NEXT(8046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8046(choice, ...) METALANG99_PRIV_REC_NEXT(8047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8047(choice, ...) METALANG99_PRIV_REC_NEXT(8048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8048(choice, ...) METALANG99_PRIV_REC_NEXT(8049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8049(choice, ...) METALANG99_PRIV_REC_NEXT(8050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8050(choice, ...) METALANG99_PRIV_REC_NEXT(8051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8051(choice, ...) METALANG99_PRIV_REC_NEXT(8052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8052(choice, ...) METALANG99_PRIV_REC_NEXT(8053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8053(choice, ...) METALANG99_PRIV_REC_NEXT(8054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8054(choice, ...) METALANG99_PRIV_REC_NEXT(8055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8055(choice, ...) METALANG99_PRIV_REC_NEXT(8056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8056(choice, ...) METALANG99_PRIV_REC_NEXT(8057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8057(choice, ...) METALANG99_PRIV_REC_NEXT(8058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8058(choice, ...) METALANG99_PRIV_REC_NEXT(8059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8059(choice, ...) METALANG99_PRIV_REC_NEXT(8060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8060(choice, ...) METALANG99_PRIV_REC_NEXT(8061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8061(choice, ...) METALANG99_PRIV_REC_NEXT(8062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8062(choice, ...) METALANG99_PRIV_REC_NEXT(8063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8063(choice, ...) METALANG99_PRIV_REC_NEXT(8064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8064(choice, ...) METALANG99_PRIV_REC_NEXT(8065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8065(choice, ...) METALANG99_PRIV_REC_NEXT(8066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8066(choice, ...) METALANG99_PRIV_REC_NEXT(8067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8067(choice, ...) METALANG99_PRIV_REC_NEXT(8068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8068(choice, ...) METALANG99_PRIV_REC_NEXT(8069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8069(choice, ...) METALANG99_PRIV_REC_NEXT(8070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8070(choice, ...) METALANG99_PRIV_REC_NEXT(8071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8071(choice, ...) METALANG99_PRIV_REC_NEXT(8072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8072(choice, ...) METALANG99_PRIV_REC_NEXT(8073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8073(choice, ...) METALANG99_PRIV_REC_NEXT(8074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8074(choice, ...) METALANG99_PRIV_REC_NEXT(8075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8075(choice, ...) METALANG99_PRIV_REC_NEXT(8076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8076(choice, ...) METALANG99_PRIV_REC_NEXT(8077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8077(choice, ...) METALANG99_PRIV_REC_NEXT(8078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8078(choice, ...) METALANG99_PRIV_REC_NEXT(8079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8079(choice, ...) METALANG99_PRIV_REC_NEXT(8080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8080(choice, ...) METALANG99_PRIV_REC_NEXT(8081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8081(choice, ...) METALANG99_PRIV_REC_NEXT(8082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8082(choice, ...) METALANG99_PRIV_REC_NEXT(8083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8083(choice, ...) METALANG99_PRIV_REC_NEXT(8084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8084(choice, ...) METALANG99_PRIV_REC_NEXT(8085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8085(choice, ...) METALANG99_PRIV_REC_NEXT(8086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8086(choice, ...) METALANG99_PRIV_REC_NEXT(8087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8087(choice, ...) METALANG99_PRIV_REC_NEXT(8088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8088(choice, ...) METALANG99_PRIV_REC_NEXT(8089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8089(choice, ...) METALANG99_PRIV_REC_NEXT(8090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8090(choice, ...) METALANG99_PRIV_REC_NEXT(8091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8091(choice, ...) METALANG99_PRIV_REC_NEXT(8092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8092(choice, ...) METALANG99_PRIV_REC_NEXT(8093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8093(choice, ...) METALANG99_PRIV_REC_NEXT(8094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8094(choice, ...) METALANG99_PRIV_REC_NEXT(8095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8095(choice, ...) METALANG99_PRIV_REC_NEXT(8096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8096(choice, ...) METALANG99_PRIV_REC_NEXT(8097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8097(choice, ...) METALANG99_PRIV_REC_NEXT(8098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8098(choice, ...) METALANG99_PRIV_REC_NEXT(8099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8099(choice, ...) METALANG99_PRIV_REC_NEXT(8100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8100(choice, ...) METALANG99_PRIV_REC_NEXT(8101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8101(choice, ...) METALANG99_PRIV_REC_NEXT(8102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8102(choice, ...) METALANG99_PRIV_REC_NEXT(8103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8103(choice, ...) METALANG99_PRIV_REC_NEXT(8104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8104(choice, ...) METALANG99_PRIV_REC_NEXT(8105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8105(choice, ...) METALANG99_PRIV_REC_NEXT(8106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8106(choice, ...) METALANG99_PRIV_REC_NEXT(8107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8107(choice, ...) METALANG99_PRIV_REC_NEXT(8108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8108(choice, ...) METALANG99_PRIV_REC_NEXT(8109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8109(choice, ...) METALANG99_PRIV_REC_NEXT(8110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8110(choice, ...) METALANG99_PRIV_REC_NEXT(8111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8111(choice, ...) METALANG99_PRIV_REC_NEXT(8112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8112(choice, ...) METALANG99_PRIV_REC_NEXT(8113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8113(choice, ...) METALANG99_PRIV_REC_NEXT(8114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8114(choice, ...) METALANG99_PRIV_REC_NEXT(8115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8115(choice, ...) METALANG99_PRIV_REC_NEXT(8116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8116(choice, ...) METALANG99_PRIV_REC_NEXT(8117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8117(choice, ...) METALANG99_PRIV_REC_NEXT(8118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8118(choice, ...) METALANG99_PRIV_REC_NEXT(8119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8119(choice, ...) METALANG99_PRIV_REC_NEXT(8120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8120(choice, ...) METALANG99_PRIV_REC_NEXT(8121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8121(choice, ...) METALANG99_PRIV_REC_NEXT(8122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8122(choice, ...) METALANG99_PRIV_REC_NEXT(8123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8123(choice, ...) METALANG99_PRIV_REC_NEXT(8124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8124(choice, ...) METALANG99_PRIV_REC_NEXT(8125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8125(choice, ...) METALANG99_PRIV_REC_NEXT(8126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8126(choice, ...) METALANG99_PRIV_REC_NEXT(8127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8127(choice, ...) METALANG99_PRIV_REC_NEXT(8128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8128(choice, ...) METALANG99_PRIV_REC_NEXT(8129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8129(choice, ...) METALANG99_PRIV_REC_NEXT(8130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8130(choice, ...) METALANG99_PRIV_REC_NEXT(8131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8131(choice, ...) METALANG99_PRIV_REC_NEXT(8132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8132(choice, ...) METALANG99_PRIV_REC_NEXT(8133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8133(choice, ...) METALANG99_PRIV_REC_NEXT(8134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8134(choice, ...) METALANG99_PRIV_REC_NEXT(8135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8135(choice, ...) METALANG99_PRIV_REC_NEXT(8136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8136(choice, ...) METALANG99_PRIV_REC_NEXT(8137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8137(choice, ...) METALANG99_PRIV_REC_NEXT(8138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8138(choice, ...) METALANG99_PRIV_REC_NEXT(8139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8139(choice, ...) METALANG99_PRIV_REC_NEXT(8140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8140(choice, ...) METALANG99_PRIV_REC_NEXT(8141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8141(choice, ...) METALANG99_PRIV_REC_NEXT(8142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8142(choice, ...) METALANG99_PRIV_REC_NEXT(8143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8143(choice, ...) METALANG99_PRIV_REC_NEXT(8144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8144(choice, ...) METALANG99_PRIV_REC_NEXT(8145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8145(choice, ...) METALANG99_PRIV_REC_NEXT(8146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8146(choice, ...) METALANG99_PRIV_REC_NEXT(8147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8147(choice, ...) METALANG99_PRIV_REC_NEXT(8148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8148(choice, ...) METALANG99_PRIV_REC_NEXT(8149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8149(choice, ...) METALANG99_PRIV_REC_NEXT(8150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8150(choice, ...) METALANG99_PRIV_REC_NEXT(8151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8151(choice, ...) METALANG99_PRIV_REC_NEXT(8152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8152(choice, ...) METALANG99_PRIV_REC_NEXT(8153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8153(choice, ...) METALANG99_PRIV_REC_NEXT(8154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8154(choice, ...) METALANG99_PRIV_REC_NEXT(8155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8155(choice, ...) METALANG99_PRIV_REC_NEXT(8156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8156(choice, ...) METALANG99_PRIV_REC_NEXT(8157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8157(choice, ...) METALANG99_PRIV_REC_NEXT(8158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8158(choice, ...) METALANG99_PRIV_REC_NEXT(8159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8159(choice, ...) METALANG99_PRIV_REC_NEXT(8160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8160(choice, ...) METALANG99_PRIV_REC_NEXT(8161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8161(choice, ...) METALANG99_PRIV_REC_NEXT(8162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8162(choice, ...) METALANG99_PRIV_REC_NEXT(8163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8163(choice, ...) METALANG99_PRIV_REC_NEXT(8164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8164(choice, ...) METALANG99_PRIV_REC_NEXT(8165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8165(choice, ...) METALANG99_PRIV_REC_NEXT(8166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8166(choice, ...) METALANG99_PRIV_REC_NEXT(8167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8167(choice, ...) METALANG99_PRIV_REC_NEXT(8168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8168(choice, ...) METALANG99_PRIV_REC_NEXT(8169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8169(choice, ...) METALANG99_PRIV_REC_NEXT(8170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8170(choice, ...) METALANG99_PRIV_REC_NEXT(8171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8171(choice, ...) METALANG99_PRIV_REC_NEXT(8172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8172(choice, ...) METALANG99_PRIV_REC_NEXT(8173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8173(choice, ...) METALANG99_PRIV_REC_NEXT(8174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8174(choice, ...) METALANG99_PRIV_REC_NEXT(8175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8175(choice, ...) METALANG99_PRIV_REC_NEXT(8176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8176(choice, ...) METALANG99_PRIV_REC_NEXT(8177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8177(choice, ...) METALANG99_PRIV_REC_NEXT(8178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8178(choice, ...) METALANG99_PRIV_REC_NEXT(8179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8179(choice, ...) METALANG99_PRIV_REC_NEXT(8180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8180(choice, ...) METALANG99_PRIV_REC_NEXT(8181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8181(choice, ...) METALANG99_PRIV_REC_NEXT(8182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8182(choice, ...) METALANG99_PRIV_REC_NEXT(8183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8183(choice, ...) METALANG99_PRIV_REC_NEXT(8184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8184(choice, ...) METALANG99_PRIV_REC_NEXT(8185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8185(choice, ...) METALANG99_PRIV_REC_NEXT(8186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8186(choice, ...) METALANG99_PRIV_REC_NEXT(8187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8187(choice, ...) METALANG99_PRIV_REC_NEXT(8188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8188(choice, ...) METALANG99_PRIV_REC_NEXT(8189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8189(choice, ...) METALANG99_PRIV_REC_NEXT(8190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8190(choice, ...) METALANG99_PRIV_REC_NEXT(8191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8191(choice, ...) METALANG99_PRIV_REC_NEXT(8192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8192(choice, ...) METALANG99_PRIV_REC_NEXT(8193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8193(choice, ...) METALANG99_PRIV_REC_NEXT(8194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8194(choice, ...) METALANG99_PRIV_REC_NEXT(8195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8195(choice, ...) METALANG99_PRIV_REC_NEXT(8196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8196(choice, ...) METALANG99_PRIV_REC_NEXT(8197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8197(choice, ...) METALANG99_PRIV_REC_NEXT(8198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8198(choice, ...) METALANG99_PRIV_REC_NEXT(8199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8199(choice, ...) METALANG99_PRIV_REC_NEXT(8200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8200(choice, ...) METALANG99_PRIV_REC_NEXT(8201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8201(choice, ...) METALANG99_PRIV_REC_NEXT(8202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8202(choice, ...) METALANG99_PRIV_REC_NEXT(8203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8203(choice, ...) METALANG99_PRIV_REC_NEXT(8204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8204(choice, ...) METALANG99_PRIV_REC_NEXT(8205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8205(choice, ...) METALANG99_PRIV_REC_NEXT(8206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8206(choice, ...) METALANG99_PRIV_REC_NEXT(8207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8207(choice, ...) METALANG99_PRIV_REC_NEXT(8208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8208(choice, ...) METALANG99_PRIV_REC_NEXT(8209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8209(choice, ...) METALANG99_PRIV_REC_NEXT(8210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8210(choice, ...) METALANG99_PRIV_REC_NEXT(8211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8211(choice, ...) METALANG99_PRIV_REC_NEXT(8212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8212(choice, ...) METALANG99_PRIV_REC_NEXT(8213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8213(choice, ...) METALANG99_PRIV_REC_NEXT(8214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8214(choice, ...) METALANG99_PRIV_REC_NEXT(8215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8215(choice, ...) METALANG99_PRIV_REC_NEXT(8216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8216(choice, ...) METALANG99_PRIV_REC_NEXT(8217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8217(choice, ...) METALANG99_PRIV_REC_NEXT(8218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8218(choice, ...) METALANG99_PRIV_REC_NEXT(8219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8219(choice, ...) METALANG99_PRIV_REC_NEXT(8220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8220(choice, ...) METALANG99_PRIV_REC_NEXT(8221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8221(choice, ...) METALANG99_PRIV_REC_NEXT(8222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8222(choice, ...) METALANG99_PRIV_REC_NEXT(8223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8223(choice, ...) METALANG99_PRIV_REC_NEXT(8224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8224(choice, ...) METALANG99_PRIV_REC_NEXT(8225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8225(choice, ...) METALANG99_PRIV_REC_NEXT(8226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8226(choice, ...) METALANG99_PRIV_REC_NEXT(8227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8227(choice, ...) METALANG99_PRIV_REC_NEXT(8228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8228(choice, ...) METALANG99_PRIV_REC_NEXT(8229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8229(choice, ...) METALANG99_PRIV_REC_NEXT(8230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8230(choice, ...) METALANG99_PRIV_REC_NEXT(8231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8231(choice, ...) METALANG99_PRIV_REC_NEXT(8232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8232(choice, ...) METALANG99_PRIV_REC_NEXT(8233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8233(choice, ...) METALANG99_PRIV_REC_NEXT(8234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8234(choice, ...) METALANG99_PRIV_REC_NEXT(8235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8235(choice, ...) METALANG99_PRIV_REC_NEXT(8236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8236(choice, ...) METALANG99_PRIV_REC_NEXT(8237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8237(choice, ...) METALANG99_PRIV_REC_NEXT(8238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8238(choice, ...) METALANG99_PRIV_REC_NEXT(8239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8239(choice, ...) METALANG99_PRIV_REC_NEXT(8240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8240(choice, ...) METALANG99_PRIV_REC_NEXT(8241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8241(choice, ...) METALANG99_PRIV_REC_NEXT(8242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8242(choice, ...) METALANG99_PRIV_REC_NEXT(8243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8243(choice, ...) METALANG99_PRIV_REC_NEXT(8244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8244(choice, ...) METALANG99_PRIV_REC_NEXT(8245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8245(choice, ...) METALANG99_PRIV_REC_NEXT(8246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8246(choice, ...) METALANG99_PRIV_REC_NEXT(8247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8247(choice, ...) METALANG99_PRIV_REC_NEXT(8248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8248(choice, ...) METALANG99_PRIV_REC_NEXT(8249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8249(choice, ...) METALANG99_PRIV_REC_NEXT(8250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8250(choice, ...) METALANG99_PRIV_REC_NEXT(8251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8251(choice, ...) METALANG99_PRIV_REC_NEXT(8252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8252(choice, ...) METALANG99_PRIV_REC_NEXT(8253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8253(choice, ...) METALANG99_PRIV_REC_NEXT(8254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8254(choice, ...) METALANG99_PRIV_REC_NEXT(8255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8255(choice, ...) METALANG99_PRIV_REC_NEXT(8256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8256(choice, ...) METALANG99_PRIV_REC_NEXT(8257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8257(choice, ...) METALANG99_PRIV_REC_NEXT(8258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8258(choice, ...) METALANG99_PRIV_REC_NEXT(8259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8259(choice, ...) METALANG99_PRIV_REC_NEXT(8260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8260(choice, ...) METALANG99_PRIV_REC_NEXT(8261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8261(choice, ...) METALANG99_PRIV_REC_NEXT(8262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8262(choice, ...) METALANG99_PRIV_REC_NEXT(8263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8263(choice, ...) METALANG99_PRIV_REC_NEXT(8264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8264(choice, ...) METALANG99_PRIV_REC_NEXT(8265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8265(choice, ...) METALANG99_PRIV_REC_NEXT(8266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8266(choice, ...) METALANG99_PRIV_REC_NEXT(8267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8267(choice, ...) METALANG99_PRIV_REC_NEXT(8268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8268(choice, ...) METALANG99_PRIV_REC_NEXT(8269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8269(choice, ...) METALANG99_PRIV_REC_NEXT(8270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8270(choice, ...) METALANG99_PRIV_REC_NEXT(8271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8271(choice, ...) METALANG99_PRIV_REC_NEXT(8272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8272(choice, ...) METALANG99_PRIV_REC_NEXT(8273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8273(choice, ...) METALANG99_PRIV_REC_NEXT(8274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8274(choice, ...) METALANG99_PRIV_REC_NEXT(8275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8275(choice, ...) METALANG99_PRIV_REC_NEXT(8276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8276(choice, ...) METALANG99_PRIV_REC_NEXT(8277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8277(choice, ...) METALANG99_PRIV_REC_NEXT(8278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8278(choice, ...) METALANG99_PRIV_REC_NEXT(8279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8279(choice, ...) METALANG99_PRIV_REC_NEXT(8280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8280(choice, ...) METALANG99_PRIV_REC_NEXT(8281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8281(choice, ...) METALANG99_PRIV_REC_NEXT(8282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8282(choice, ...) METALANG99_PRIV_REC_NEXT(8283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8283(choice, ...) METALANG99_PRIV_REC_NEXT(8284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8284(choice, ...) METALANG99_PRIV_REC_NEXT(8285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8285(choice, ...) METALANG99_PRIV_REC_NEXT(8286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8286(choice, ...) METALANG99_PRIV_REC_NEXT(8287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8287(choice, ...) METALANG99_PRIV_REC_NEXT(8288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8288(choice, ...) METALANG99_PRIV_REC_NEXT(8289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8289(choice, ...) METALANG99_PRIV_REC_NEXT(8290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8290(choice, ...) METALANG99_PRIV_REC_NEXT(8291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8291(choice, ...) METALANG99_PRIV_REC_NEXT(8292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8292(choice, ...) METALANG99_PRIV_REC_NEXT(8293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8293(choice, ...) METALANG99_PRIV_REC_NEXT(8294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8294(choice, ...) METALANG99_PRIV_REC_NEXT(8295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8295(choice, ...) METALANG99_PRIV_REC_NEXT(8296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8296(choice, ...) METALANG99_PRIV_REC_NEXT(8297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8297(choice, ...) METALANG99_PRIV_REC_NEXT(8298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8298(choice, ...) METALANG99_PRIV_REC_NEXT(8299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8299(choice, ...) METALANG99_PRIV_REC_NEXT(8300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8300(choice, ...) METALANG99_PRIV_REC_NEXT(8301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8301(choice, ...) METALANG99_PRIV_REC_NEXT(8302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8302(choice, ...) METALANG99_PRIV_REC_NEXT(8303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8303(choice, ...) METALANG99_PRIV_REC_NEXT(8304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8304(choice, ...) METALANG99_PRIV_REC_NEXT(8305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8305(choice, ...) METALANG99_PRIV_REC_NEXT(8306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8306(choice, ...) METALANG99_PRIV_REC_NEXT(8307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8307(choice, ...) METALANG99_PRIV_REC_NEXT(8308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8308(choice, ...) METALANG99_PRIV_REC_NEXT(8309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8309(choice, ...) METALANG99_PRIV_REC_NEXT(8310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8310(choice, ...) METALANG99_PRIV_REC_NEXT(8311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8311(choice, ...) METALANG99_PRIV_REC_NEXT(8312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8312(choice, ...) METALANG99_PRIV_REC_NEXT(8313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8313(choice, ...) METALANG99_PRIV_REC_NEXT(8314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8314(choice, ...) METALANG99_PRIV_REC_NEXT(8315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8315(choice, ...) METALANG99_PRIV_REC_NEXT(8316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8316(choice, ...) METALANG99_PRIV_REC_NEXT(8317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8317(choice, ...) METALANG99_PRIV_REC_NEXT(8318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8318(choice, ...) METALANG99_PRIV_REC_NEXT(8319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8319(choice, ...) METALANG99_PRIV_REC_NEXT(8320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8320(choice, ...) METALANG99_PRIV_REC_NEXT(8321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8321(choice, ...) METALANG99_PRIV_REC_NEXT(8322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8322(choice, ...) METALANG99_PRIV_REC_NEXT(8323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8323(choice, ...) METALANG99_PRIV_REC_NEXT(8324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8324(choice, ...) METALANG99_PRIV_REC_NEXT(8325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8325(choice, ...) METALANG99_PRIV_REC_NEXT(8326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8326(choice, ...) METALANG99_PRIV_REC_NEXT(8327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8327(choice, ...) METALANG99_PRIV_REC_NEXT(8328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8328(choice, ...) METALANG99_PRIV_REC_NEXT(8329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8329(choice, ...) METALANG99_PRIV_REC_NEXT(8330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8330(choice, ...) METALANG99_PRIV_REC_NEXT(8331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8331(choice, ...) METALANG99_PRIV_REC_NEXT(8332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8332(choice, ...) METALANG99_PRIV_REC_NEXT(8333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8333(choice, ...) METALANG99_PRIV_REC_NEXT(8334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8334(choice, ...) METALANG99_PRIV_REC_NEXT(8335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8335(choice, ...) METALANG99_PRIV_REC_NEXT(8336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8336(choice, ...) METALANG99_PRIV_REC_NEXT(8337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8337(choice, ...) METALANG99_PRIV_REC_NEXT(8338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8338(choice, ...) METALANG99_PRIV_REC_NEXT(8339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8339(choice, ...) METALANG99_PRIV_REC_NEXT(8340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8340(choice, ...) METALANG99_PRIV_REC_NEXT(8341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8341(choice, ...) METALANG99_PRIV_REC_NEXT(8342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8342(choice, ...) METALANG99_PRIV_REC_NEXT(8343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8343(choice, ...) METALANG99_PRIV_REC_NEXT(8344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8344(choice, ...) METALANG99_PRIV_REC_NEXT(8345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8345(choice, ...) METALANG99_PRIV_REC_NEXT(8346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8346(choice, ...) METALANG99_PRIV_REC_NEXT(8347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8347(choice, ...) METALANG99_PRIV_REC_NEXT(8348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8348(choice, ...) METALANG99_PRIV_REC_NEXT(8349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8349(choice, ...) METALANG99_PRIV_REC_NEXT(8350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8350(choice, ...) METALANG99_PRIV_REC_NEXT(8351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8351(choice, ...) METALANG99_PRIV_REC_NEXT(8352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8352(choice, ...) METALANG99_PRIV_REC_NEXT(8353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8353(choice, ...) METALANG99_PRIV_REC_NEXT(8354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8354(choice, ...) METALANG99_PRIV_REC_NEXT(8355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8355(choice, ...) METALANG99_PRIV_REC_NEXT(8356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8356(choice, ...) METALANG99_PRIV_REC_NEXT(8357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8357(choice, ...) METALANG99_PRIV_REC_NEXT(8358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8358(choice, ...) METALANG99_PRIV_REC_NEXT(8359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8359(choice, ...) METALANG99_PRIV_REC_NEXT(8360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8360(choice, ...) METALANG99_PRIV_REC_NEXT(8361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8361(choice, ...) METALANG99_PRIV_REC_NEXT(8362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8362(choice, ...) METALANG99_PRIV_REC_NEXT(8363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8363(choice, ...) METALANG99_PRIV_REC_NEXT(8364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8364(choice, ...) METALANG99_PRIV_REC_NEXT(8365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8365(choice, ...) METALANG99_PRIV_REC_NEXT(8366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8366(choice, ...) METALANG99_PRIV_REC_NEXT(8367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8367(choice, ...) METALANG99_PRIV_REC_NEXT(8368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8368(choice, ...) METALANG99_PRIV_REC_NEXT(8369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8369(choice, ...) METALANG99_PRIV_REC_NEXT(8370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8370(choice, ...) METALANG99_PRIV_REC_NEXT(8371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8371(choice, ...) METALANG99_PRIV_REC_NEXT(8372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8372(choice, ...) METALANG99_PRIV_REC_NEXT(8373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8373(choice, ...) METALANG99_PRIV_REC_NEXT(8374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8374(choice, ...) METALANG99_PRIV_REC_NEXT(8375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8375(choice, ...) METALANG99_PRIV_REC_NEXT(8376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8376(choice, ...) METALANG99_PRIV_REC_NEXT(8377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8377(choice, ...) METALANG99_PRIV_REC_NEXT(8378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8378(choice, ...) METALANG99_PRIV_REC_NEXT(8379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8379(choice, ...) METALANG99_PRIV_REC_NEXT(8380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8380(choice, ...) METALANG99_PRIV_REC_NEXT(8381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8381(choice, ...) METALANG99_PRIV_REC_NEXT(8382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8382(choice, ...) METALANG99_PRIV_REC_NEXT(8383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8383(choice, ...) METALANG99_PRIV_REC_NEXT(8384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8384(choice, ...) METALANG99_PRIV_REC_NEXT(8385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8385(choice, ...) METALANG99_PRIV_REC_NEXT(8386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8386(choice, ...) METALANG99_PRIV_REC_NEXT(8387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8387(choice, ...) METALANG99_PRIV_REC_NEXT(8388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8388(choice, ...) METALANG99_PRIV_REC_NEXT(8389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8389(choice, ...) METALANG99_PRIV_REC_NEXT(8390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8390(choice, ...) METALANG99_PRIV_REC_NEXT(8391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8391(choice, ...) METALANG99_PRIV_REC_NEXT(8392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8392(choice, ...) METALANG99_PRIV_REC_NEXT(8393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8393(choice, ...) METALANG99_PRIV_REC_NEXT(8394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8394(choice, ...) METALANG99_PRIV_REC_NEXT(8395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8395(choice, ...) METALANG99_PRIV_REC_NEXT(8396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8396(choice, ...) METALANG99_PRIV_REC_NEXT(8397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8397(choice, ...) METALANG99_PRIV_REC_NEXT(8398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8398(choice, ...) METALANG99_PRIV_REC_NEXT(8399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8399(choice, ...) METALANG99_PRIV_REC_NEXT(8400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8400(choice, ...) METALANG99_PRIV_REC_NEXT(8401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8401(choice, ...) METALANG99_PRIV_REC_NEXT(8402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8402(choice, ...) METALANG99_PRIV_REC_NEXT(8403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8403(choice, ...) METALANG99_PRIV_REC_NEXT(8404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8404(choice, ...) METALANG99_PRIV_REC_NEXT(8405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8405(choice, ...) METALANG99_PRIV_REC_NEXT(8406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8406(choice, ...) METALANG99_PRIV_REC_NEXT(8407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8407(choice, ...) METALANG99_PRIV_REC_NEXT(8408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8408(choice, ...) METALANG99_PRIV_REC_NEXT(8409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8409(choice, ...) METALANG99_PRIV_REC_NEXT(8410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8410(choice, ...) METALANG99_PRIV_REC_NEXT(8411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8411(choice, ...) METALANG99_PRIV_REC_NEXT(8412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8412(choice, ...) METALANG99_PRIV_REC_NEXT(8413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8413(choice, ...) METALANG99_PRIV_REC_NEXT(8414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8414(choice, ...) METALANG99_PRIV_REC_NEXT(8415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8415(choice, ...) METALANG99_PRIV_REC_NEXT(8416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8416(choice, ...) METALANG99_PRIV_REC_NEXT(8417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8417(choice, ...) METALANG99_PRIV_REC_NEXT(8418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8418(choice, ...) METALANG99_PRIV_REC_NEXT(8419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8419(choice, ...) METALANG99_PRIV_REC_NEXT(8420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8420(choice, ...) METALANG99_PRIV_REC_NEXT(8421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8421(choice, ...) METALANG99_PRIV_REC_NEXT(8422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8422(choice, ...) METALANG99_PRIV_REC_NEXT(8423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8423(choice, ...) METALANG99_PRIV_REC_NEXT(8424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8424(choice, ...) METALANG99_PRIV_REC_NEXT(8425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8425(choice, ...) METALANG99_PRIV_REC_NEXT(8426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8426(choice, ...) METALANG99_PRIV_REC_NEXT(8427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8427(choice, ...) METALANG99_PRIV_REC_NEXT(8428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8428(choice, ...) METALANG99_PRIV_REC_NEXT(8429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8429(choice, ...) METALANG99_PRIV_REC_NEXT(8430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8430(choice, ...) METALANG99_PRIV_REC_NEXT(8431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8431(choice, ...) METALANG99_PRIV_REC_NEXT(8432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8432(choice, ...) METALANG99_PRIV_REC_NEXT(8433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8433(choice, ...) METALANG99_PRIV_REC_NEXT(8434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8434(choice, ...) METALANG99_PRIV_REC_NEXT(8435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8435(choice, ...) METALANG99_PRIV_REC_NEXT(8436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8436(choice, ...) METALANG99_PRIV_REC_NEXT(8437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8437(choice, ...) METALANG99_PRIV_REC_NEXT(8438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8438(choice, ...) METALANG99_PRIV_REC_NEXT(8439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8439(choice, ...) METALANG99_PRIV_REC_NEXT(8440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8440(choice, ...) METALANG99_PRIV_REC_NEXT(8441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8441(choice, ...) METALANG99_PRIV_REC_NEXT(8442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8442(choice, ...) METALANG99_PRIV_REC_NEXT(8443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8443(choice, ...) METALANG99_PRIV_REC_NEXT(8444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8444(choice, ...) METALANG99_PRIV_REC_NEXT(8445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8445(choice, ...) METALANG99_PRIV_REC_NEXT(8446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8446(choice, ...) METALANG99_PRIV_REC_NEXT(8447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8447(choice, ...) METALANG99_PRIV_REC_NEXT(8448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8448(choice, ...) METALANG99_PRIV_REC_NEXT(8449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8449(choice, ...) METALANG99_PRIV_REC_NEXT(8450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8450(choice, ...) METALANG99_PRIV_REC_NEXT(8451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8451(choice, ...) METALANG99_PRIV_REC_NEXT(8452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8452(choice, ...) METALANG99_PRIV_REC_NEXT(8453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8453(choice, ...) METALANG99_PRIV_REC_NEXT(8454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8454(choice, ...) METALANG99_PRIV_REC_NEXT(8455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8455(choice, ...) METALANG99_PRIV_REC_NEXT(8456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8456(choice, ...) METALANG99_PRIV_REC_NEXT(8457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8457(choice, ...) METALANG99_PRIV_REC_NEXT(8458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8458(choice, ...) METALANG99_PRIV_REC_NEXT(8459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8459(choice, ...) METALANG99_PRIV_REC_NEXT(8460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8460(choice, ...) METALANG99_PRIV_REC_NEXT(8461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8461(choice, ...) METALANG99_PRIV_REC_NEXT(8462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8462(choice, ...) METALANG99_PRIV_REC_NEXT(8463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8463(choice, ...) METALANG99_PRIV_REC_NEXT(8464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8464(choice, ...) METALANG99_PRIV_REC_NEXT(8465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8465(choice, ...) METALANG99_PRIV_REC_NEXT(8466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8466(choice, ...) METALANG99_PRIV_REC_NEXT(8467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8467(choice, ...) METALANG99_PRIV_REC_NEXT(8468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8468(choice, ...) METALANG99_PRIV_REC_NEXT(8469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8469(choice, ...) METALANG99_PRIV_REC_NEXT(8470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8470(choice, ...) METALANG99_PRIV_REC_NEXT(8471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8471(choice, ...) METALANG99_PRIV_REC_NEXT(8472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8472(choice, ...) METALANG99_PRIV_REC_NEXT(8473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8473(choice, ...) METALANG99_PRIV_REC_NEXT(8474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8474(choice, ...) METALANG99_PRIV_REC_NEXT(8475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8475(choice, ...) METALANG99_PRIV_REC_NEXT(8476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8476(choice, ...) METALANG99_PRIV_REC_NEXT(8477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8477(choice, ...) METALANG99_PRIV_REC_NEXT(8478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8478(choice, ...) METALANG99_PRIV_REC_NEXT(8479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8479(choice, ...) METALANG99_PRIV_REC_NEXT(8480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8480(choice, ...) METALANG99_PRIV_REC_NEXT(8481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8481(choice, ...) METALANG99_PRIV_REC_NEXT(8482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8482(choice, ...) METALANG99_PRIV_REC_NEXT(8483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8483(choice, ...) METALANG99_PRIV_REC_NEXT(8484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8484(choice, ...) METALANG99_PRIV_REC_NEXT(8485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8485(choice, ...) METALANG99_PRIV_REC_NEXT(8486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8486(choice, ...) METALANG99_PRIV_REC_NEXT(8487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8487(choice, ...) METALANG99_PRIV_REC_NEXT(8488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8488(choice, ...) METALANG99_PRIV_REC_NEXT(8489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8489(choice, ...) METALANG99_PRIV_REC_NEXT(8490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8490(choice, ...) METALANG99_PRIV_REC_NEXT(8491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8491(choice, ...) METALANG99_PRIV_REC_NEXT(8492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8492(choice, ...) METALANG99_PRIV_REC_NEXT(8493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8493(choice, ...) METALANG99_PRIV_REC_NEXT(8494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8494(choice, ...) METALANG99_PRIV_REC_NEXT(8495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8495(choice, ...) METALANG99_PRIV_REC_NEXT(8496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8496(choice, ...) METALANG99_PRIV_REC_NEXT(8497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8497(choice, ...) METALANG99_PRIV_REC_NEXT(8498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8498(choice, ...) METALANG99_PRIV_REC_NEXT(8499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8499(choice, ...) METALANG99_PRIV_REC_NEXT(8500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8500(choice, ...) METALANG99_PRIV_REC_NEXT(8501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8501(choice, ...) METALANG99_PRIV_REC_NEXT(8502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8502(choice, ...) METALANG99_PRIV_REC_NEXT(8503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8503(choice, ...) METALANG99_PRIV_REC_NEXT(8504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8504(choice, ...) METALANG99_PRIV_REC_NEXT(8505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8505(choice, ...) METALANG99_PRIV_REC_NEXT(8506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8506(choice, ...) METALANG99_PRIV_REC_NEXT(8507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8507(choice, ...) METALANG99_PRIV_REC_NEXT(8508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8508(choice, ...) METALANG99_PRIV_REC_NEXT(8509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8509(choice, ...) METALANG99_PRIV_REC_NEXT(8510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8510(choice, ...) METALANG99_PRIV_REC_NEXT(8511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8511(choice, ...) METALANG99_PRIV_REC_NEXT(8512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8512(choice, ...) METALANG99_PRIV_REC_NEXT(8513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8513(choice, ...) METALANG99_PRIV_REC_NEXT(8514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8514(choice, ...) METALANG99_PRIV_REC_NEXT(8515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8515(choice, ...) METALANG99_PRIV_REC_NEXT(8516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8516(choice, ...) METALANG99_PRIV_REC_NEXT(8517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8517(choice, ...) METALANG99_PRIV_REC_NEXT(8518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8518(choice, ...) METALANG99_PRIV_REC_NEXT(8519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8519(choice, ...) METALANG99_PRIV_REC_NEXT(8520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8520(choice, ...) METALANG99_PRIV_REC_NEXT(8521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8521(choice, ...) METALANG99_PRIV_REC_NEXT(8522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8522(choice, ...) METALANG99_PRIV_REC_NEXT(8523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8523(choice, ...) METALANG99_PRIV_REC_NEXT(8524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8524(choice, ...) METALANG99_PRIV_REC_NEXT(8525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8525(choice, ...) METALANG99_PRIV_REC_NEXT(8526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8526(choice, ...) METALANG99_PRIV_REC_NEXT(8527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8527(choice, ...) METALANG99_PRIV_REC_NEXT(8528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8528(choice, ...) METALANG99_PRIV_REC_NEXT(8529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8529(choice, ...) METALANG99_PRIV_REC_NEXT(8530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8530(choice, ...) METALANG99_PRIV_REC_NEXT(8531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8531(choice, ...) METALANG99_PRIV_REC_NEXT(8532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8532(choice, ...) METALANG99_PRIV_REC_NEXT(8533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8533(choice, ...) METALANG99_PRIV_REC_NEXT(8534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8534(choice, ...) METALANG99_PRIV_REC_NEXT(8535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8535(choice, ...) METALANG99_PRIV_REC_NEXT(8536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8536(choice, ...) METALANG99_PRIV_REC_NEXT(8537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8537(choice, ...) METALANG99_PRIV_REC_NEXT(8538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8538(choice, ...) METALANG99_PRIV_REC_NEXT(8539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8539(choice, ...) METALANG99_PRIV_REC_NEXT(8540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8540(choice, ...) METALANG99_PRIV_REC_NEXT(8541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8541(choice, ...) METALANG99_PRIV_REC_NEXT(8542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8542(choice, ...) METALANG99_PRIV_REC_NEXT(8543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8543(choice, ...) METALANG99_PRIV_REC_NEXT(8544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8544(choice, ...) METALANG99_PRIV_REC_NEXT(8545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8545(choice, ...) METALANG99_PRIV_REC_NEXT(8546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8546(choice, ...) METALANG99_PRIV_REC_NEXT(8547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8547(choice, ...) METALANG99_PRIV_REC_NEXT(8548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8548(choice, ...) METALANG99_PRIV_REC_NEXT(8549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8549(choice, ...) METALANG99_PRIV_REC_NEXT(8550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8550(choice, ...) METALANG99_PRIV_REC_NEXT(8551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8551(choice, ...) METALANG99_PRIV_REC_NEXT(8552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8552(choice, ...) METALANG99_PRIV_REC_NEXT(8553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8553(choice, ...) METALANG99_PRIV_REC_NEXT(8554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8554(choice, ...) METALANG99_PRIV_REC_NEXT(8555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8555(choice, ...) METALANG99_PRIV_REC_NEXT(8556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8556(choice, ...) METALANG99_PRIV_REC_NEXT(8557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8557(choice, ...) METALANG99_PRIV_REC_NEXT(8558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8558(choice, ...) METALANG99_PRIV_REC_NEXT(8559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8559(choice, ...) METALANG99_PRIV_REC_NEXT(8560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8560(choice, ...) METALANG99_PRIV_REC_NEXT(8561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8561(choice, ...) METALANG99_PRIV_REC_NEXT(8562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8562(choice, ...) METALANG99_PRIV_REC_NEXT(8563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8563(choice, ...) METALANG99_PRIV_REC_NEXT(8564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8564(choice, ...) METALANG99_PRIV_REC_NEXT(8565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8565(choice, ...) METALANG99_PRIV_REC_NEXT(8566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8566(choice, ...) METALANG99_PRIV_REC_NEXT(8567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8567(choice, ...) METALANG99_PRIV_REC_NEXT(8568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8568(choice, ...) METALANG99_PRIV_REC_NEXT(8569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8569(choice, ...) METALANG99_PRIV_REC_NEXT(8570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8570(choice, ...) METALANG99_PRIV_REC_NEXT(8571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8571(choice, ...) METALANG99_PRIV_REC_NEXT(8572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8572(choice, ...) METALANG99_PRIV_REC_NEXT(8573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8573(choice, ...) METALANG99_PRIV_REC_NEXT(8574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8574(choice, ...) METALANG99_PRIV_REC_NEXT(8575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8575(choice, ...) METALANG99_PRIV_REC_NEXT(8576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8576(choice, ...) METALANG99_PRIV_REC_NEXT(8577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8577(choice, ...) METALANG99_PRIV_REC_NEXT(8578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8578(choice, ...) METALANG99_PRIV_REC_NEXT(8579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8579(choice, ...) METALANG99_PRIV_REC_NEXT(8580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8580(choice, ...) METALANG99_PRIV_REC_NEXT(8581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8581(choice, ...) METALANG99_PRIV_REC_NEXT(8582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8582(choice, ...) METALANG99_PRIV_REC_NEXT(8583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8583(choice, ...) METALANG99_PRIV_REC_NEXT(8584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8584(choice, ...) METALANG99_PRIV_REC_NEXT(8585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8585(choice, ...) METALANG99_PRIV_REC_NEXT(8586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8586(choice, ...) METALANG99_PRIV_REC_NEXT(8587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8587(choice, ...) METALANG99_PRIV_REC_NEXT(8588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8588(choice, ...) METALANG99_PRIV_REC_NEXT(8589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8589(choice, ...) METALANG99_PRIV_REC_NEXT(8590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8590(choice, ...) METALANG99_PRIV_REC_NEXT(8591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8591(choice, ...) METALANG99_PRIV_REC_NEXT(8592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8592(choice, ...) METALANG99_PRIV_REC_NEXT(8593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8593(choice, ...) METALANG99_PRIV_REC_NEXT(8594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8594(choice, ...) METALANG99_PRIV_REC_NEXT(8595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8595(choice, ...) METALANG99_PRIV_REC_NEXT(8596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8596(choice, ...) METALANG99_PRIV_REC_NEXT(8597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8597(choice, ...) METALANG99_PRIV_REC_NEXT(8598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8598(choice, ...) METALANG99_PRIV_REC_NEXT(8599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8599(choice, ...) METALANG99_PRIV_REC_NEXT(8600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8600(choice, ...) METALANG99_PRIV_REC_NEXT(8601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8601(choice, ...) METALANG99_PRIV_REC_NEXT(8602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8602(choice, ...) METALANG99_PRIV_REC_NEXT(8603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8603(choice, ...) METALANG99_PRIV_REC_NEXT(8604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8604(choice, ...) METALANG99_PRIV_REC_NEXT(8605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8605(choice, ...) METALANG99_PRIV_REC_NEXT(8606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8606(choice, ...) METALANG99_PRIV_REC_NEXT(8607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8607(choice, ...) METALANG99_PRIV_REC_NEXT(8608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8608(choice, ...) METALANG99_PRIV_REC_NEXT(8609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8609(choice, ...) METALANG99_PRIV_REC_NEXT(8610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8610(choice, ...) METALANG99_PRIV_REC_NEXT(8611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8611(choice, ...) METALANG99_PRIV_REC_NEXT(8612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8612(choice, ...) METALANG99_PRIV_REC_NEXT(8613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8613(choice, ...) METALANG99_PRIV_REC_NEXT(8614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8614(choice, ...) METALANG99_PRIV_REC_NEXT(8615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8615(choice, ...) METALANG99_PRIV_REC_NEXT(8616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8616(choice, ...) METALANG99_PRIV_REC_NEXT(8617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8617(choice, ...) METALANG99_PRIV_REC_NEXT(8618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8618(choice, ...) METALANG99_PRIV_REC_NEXT(8619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8619(choice, ...) METALANG99_PRIV_REC_NEXT(8620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8620(choice, ...) METALANG99_PRIV_REC_NEXT(8621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8621(choice, ...) METALANG99_PRIV_REC_NEXT(8622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8622(choice, ...) METALANG99_PRIV_REC_NEXT(8623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8623(choice, ...) METALANG99_PRIV_REC_NEXT(8624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8624(choice, ...) METALANG99_PRIV_REC_NEXT(8625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8625(choice, ...) METALANG99_PRIV_REC_NEXT(8626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8626(choice, ...) METALANG99_PRIV_REC_NEXT(8627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8627(choice, ...) METALANG99_PRIV_REC_NEXT(8628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8628(choice, ...) METALANG99_PRIV_REC_NEXT(8629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8629(choice, ...) METALANG99_PRIV_REC_NEXT(8630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8630(choice, ...) METALANG99_PRIV_REC_NEXT(8631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8631(choice, ...) METALANG99_PRIV_REC_NEXT(8632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8632(choice, ...) METALANG99_PRIV_REC_NEXT(8633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8633(choice, ...) METALANG99_PRIV_REC_NEXT(8634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8634(choice, ...) METALANG99_PRIV_REC_NEXT(8635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8635(choice, ...) METALANG99_PRIV_REC_NEXT(8636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8636(choice, ...) METALANG99_PRIV_REC_NEXT(8637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8637(choice, ...) METALANG99_PRIV_REC_NEXT(8638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8638(choice, ...) METALANG99_PRIV_REC_NEXT(8639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8639(choice, ...) METALANG99_PRIV_REC_NEXT(8640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8640(choice, ...) METALANG99_PRIV_REC_NEXT(8641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8641(choice, ...) METALANG99_PRIV_REC_NEXT(8642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8642(choice, ...) METALANG99_PRIV_REC_NEXT(8643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8643(choice, ...) METALANG99_PRIV_REC_NEXT(8644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8644(choice, ...) METALANG99_PRIV_REC_NEXT(8645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8645(choice, ...) METALANG99_PRIV_REC_NEXT(8646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8646(choice, ...) METALANG99_PRIV_REC_NEXT(8647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8647(choice, ...) METALANG99_PRIV_REC_NEXT(8648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8648(choice, ...) METALANG99_PRIV_REC_NEXT(8649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8649(choice, ...) METALANG99_PRIV_REC_NEXT(8650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8650(choice, ...) METALANG99_PRIV_REC_NEXT(8651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8651(choice, ...) METALANG99_PRIV_REC_NEXT(8652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8652(choice, ...) METALANG99_PRIV_REC_NEXT(8653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8653(choice, ...) METALANG99_PRIV_REC_NEXT(8654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8654(choice, ...) METALANG99_PRIV_REC_NEXT(8655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8655(choice, ...) METALANG99_PRIV_REC_NEXT(8656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8656(choice, ...) METALANG99_PRIV_REC_NEXT(8657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8657(choice, ...) METALANG99_PRIV_REC_NEXT(8658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8658(choice, ...) METALANG99_PRIV_REC_NEXT(8659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8659(choice, ...) METALANG99_PRIV_REC_NEXT(8660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8660(choice, ...) METALANG99_PRIV_REC_NEXT(8661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8661(choice, ...) METALANG99_PRIV_REC_NEXT(8662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8662(choice, ...) METALANG99_PRIV_REC_NEXT(8663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8663(choice, ...) METALANG99_PRIV_REC_NEXT(8664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8664(choice, ...) METALANG99_PRIV_REC_NEXT(8665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8665(choice, ...) METALANG99_PRIV_REC_NEXT(8666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8666(choice, ...) METALANG99_PRIV_REC_NEXT(8667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8667(choice, ...) METALANG99_PRIV_REC_NEXT(8668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8668(choice, ...) METALANG99_PRIV_REC_NEXT(8669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8669(choice, ...) METALANG99_PRIV_REC_NEXT(8670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8670(choice, ...) METALANG99_PRIV_REC_NEXT(8671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8671(choice, ...) METALANG99_PRIV_REC_NEXT(8672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8672(choice, ...) METALANG99_PRIV_REC_NEXT(8673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8673(choice, ...) METALANG99_PRIV_REC_NEXT(8674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8674(choice, ...) METALANG99_PRIV_REC_NEXT(8675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8675(choice, ...) METALANG99_PRIV_REC_NEXT(8676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8676(choice, ...) METALANG99_PRIV_REC_NEXT(8677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8677(choice, ...) METALANG99_PRIV_REC_NEXT(8678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8678(choice, ...) METALANG99_PRIV_REC_NEXT(8679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8679(choice, ...) METALANG99_PRIV_REC_NEXT(8680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8680(choice, ...) METALANG99_PRIV_REC_NEXT(8681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8681(choice, ...) METALANG99_PRIV_REC_NEXT(8682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8682(choice, ...) METALANG99_PRIV_REC_NEXT(8683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8683(choice, ...) METALANG99_PRIV_REC_NEXT(8684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8684(choice, ...) METALANG99_PRIV_REC_NEXT(8685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8685(choice, ...) METALANG99_PRIV_REC_NEXT(8686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8686(choice, ...) METALANG99_PRIV_REC_NEXT(8687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8687(choice, ...) METALANG99_PRIV_REC_NEXT(8688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8688(choice, ...) METALANG99_PRIV_REC_NEXT(8689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8689(choice, ...) METALANG99_PRIV_REC_NEXT(8690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8690(choice, ...) METALANG99_PRIV_REC_NEXT(8691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8691(choice, ...) METALANG99_PRIV_REC_NEXT(8692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8692(choice, ...) METALANG99_PRIV_REC_NEXT(8693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8693(choice, ...) METALANG99_PRIV_REC_NEXT(8694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8694(choice, ...) METALANG99_PRIV_REC_NEXT(8695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8695(choice, ...) METALANG99_PRIV_REC_NEXT(8696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8696(choice, ...) METALANG99_PRIV_REC_NEXT(8697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8697(choice, ...) METALANG99_PRIV_REC_NEXT(8698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8698(choice, ...) METALANG99_PRIV_REC_NEXT(8699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8699(choice, ...) METALANG99_PRIV_REC_NEXT(8700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8700(choice, ...) METALANG99_PRIV_REC_NEXT(8701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8701(choice, ...) METALANG99_PRIV_REC_NEXT(8702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8702(choice, ...) METALANG99_PRIV_REC_NEXT(8703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8703(choice, ...) METALANG99_PRIV_REC_NEXT(8704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8704(choice, ...) METALANG99_PRIV_REC_NEXT(8705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8705(choice, ...) METALANG99_PRIV_REC_NEXT(8706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8706(choice, ...) METALANG99_PRIV_REC_NEXT(8707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8707(choice, ...) METALANG99_PRIV_REC_NEXT(8708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8708(choice, ...) METALANG99_PRIV_REC_NEXT(8709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8709(choice, ...) METALANG99_PRIV_REC_NEXT(8710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8710(choice, ...) METALANG99_PRIV_REC_NEXT(8711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8711(choice, ...) METALANG99_PRIV_REC_NEXT(8712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8712(choice, ...) METALANG99_PRIV_REC_NEXT(8713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8713(choice, ...) METALANG99_PRIV_REC_NEXT(8714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8714(choice, ...) METALANG99_PRIV_REC_NEXT(8715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8715(choice, ...) METALANG99_PRIV_REC_NEXT(8716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8716(choice, ...) METALANG99_PRIV_REC_NEXT(8717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8717(choice, ...) METALANG99_PRIV_REC_NEXT(8718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8718(choice, ...) METALANG99_PRIV_REC_NEXT(8719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8719(choice, ...) METALANG99_PRIV_REC_NEXT(8720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8720(choice, ...) METALANG99_PRIV_REC_NEXT(8721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8721(choice, ...) METALANG99_PRIV_REC_NEXT(8722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8722(choice, ...) METALANG99_PRIV_REC_NEXT(8723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8723(choice, ...) METALANG99_PRIV_REC_NEXT(8724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8724(choice, ...) METALANG99_PRIV_REC_NEXT(8725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8725(choice, ...) METALANG99_PRIV_REC_NEXT(8726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8726(choice, ...) METALANG99_PRIV_REC_NEXT(8727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8727(choice, ...) METALANG99_PRIV_REC_NEXT(8728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8728(choice, ...) METALANG99_PRIV_REC_NEXT(8729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8729(choice, ...) METALANG99_PRIV_REC_NEXT(8730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8730(choice, ...) METALANG99_PRIV_REC_NEXT(8731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8731(choice, ...) METALANG99_PRIV_REC_NEXT(8732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8732(choice, ...) METALANG99_PRIV_REC_NEXT(8733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8733(choice, ...) METALANG99_PRIV_REC_NEXT(8734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8734(choice, ...) METALANG99_PRIV_REC_NEXT(8735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8735(choice, ...) METALANG99_PRIV_REC_NEXT(8736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8736(choice, ...) METALANG99_PRIV_REC_NEXT(8737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8737(choice, ...) METALANG99_PRIV_REC_NEXT(8738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8738(choice, ...) METALANG99_PRIV_REC_NEXT(8739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8739(choice, ...) METALANG99_PRIV_REC_NEXT(8740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8740(choice, ...) METALANG99_PRIV_REC_NEXT(8741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8741(choice, ...) METALANG99_PRIV_REC_NEXT(8742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8742(choice, ...) METALANG99_PRIV_REC_NEXT(8743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8743(choice, ...) METALANG99_PRIV_REC_NEXT(8744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8744(choice, ...) METALANG99_PRIV_REC_NEXT(8745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8745(choice, ...) METALANG99_PRIV_REC_NEXT(8746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8746(choice, ...) METALANG99_PRIV_REC_NEXT(8747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8747(choice, ...) METALANG99_PRIV_REC_NEXT(8748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8748(choice, ...) METALANG99_PRIV_REC_NEXT(8749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8749(choice, ...) METALANG99_PRIV_REC_NEXT(8750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8750(choice, ...) METALANG99_PRIV_REC_NEXT(8751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8751(choice, ...) METALANG99_PRIV_REC_NEXT(8752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8752(choice, ...) METALANG99_PRIV_REC_NEXT(8753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8753(choice, ...) METALANG99_PRIV_REC_NEXT(8754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8754(choice, ...) METALANG99_PRIV_REC_NEXT(8755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8755(choice, ...) METALANG99_PRIV_REC_NEXT(8756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8756(choice, ...) METALANG99_PRIV_REC_NEXT(8757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8757(choice, ...) METALANG99_PRIV_REC_NEXT(8758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8758(choice, ...) METALANG99_PRIV_REC_NEXT(8759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8759(choice, ...) METALANG99_PRIV_REC_NEXT(8760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8760(choice, ...) METALANG99_PRIV_REC_NEXT(8761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8761(choice, ...) METALANG99_PRIV_REC_NEXT(8762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8762(choice, ...) METALANG99_PRIV_REC_NEXT(8763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8763(choice, ...) METALANG99_PRIV_REC_NEXT(8764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8764(choice, ...) METALANG99_PRIV_REC_NEXT(8765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8765(choice, ...) METALANG99_PRIV_REC_NEXT(8766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8766(choice, ...) METALANG99_PRIV_REC_NEXT(8767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8767(choice, ...) METALANG99_PRIV_REC_NEXT(8768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8768(choice, ...) METALANG99_PRIV_REC_NEXT(8769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8769(choice, ...) METALANG99_PRIV_REC_NEXT(8770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8770(choice, ...) METALANG99_PRIV_REC_NEXT(8771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8771(choice, ...) METALANG99_PRIV_REC_NEXT(8772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8772(choice, ...) METALANG99_PRIV_REC_NEXT(8773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8773(choice, ...) METALANG99_PRIV_REC_NEXT(8774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8774(choice, ...) METALANG99_PRIV_REC_NEXT(8775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8775(choice, ...) METALANG99_PRIV_REC_NEXT(8776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8776(choice, ...) METALANG99_PRIV_REC_NEXT(8777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8777(choice, ...) METALANG99_PRIV_REC_NEXT(8778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8778(choice, ...) METALANG99_PRIV_REC_NEXT(8779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8779(choice, ...) METALANG99_PRIV_REC_NEXT(8780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8780(choice, ...) METALANG99_PRIV_REC_NEXT(8781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8781(choice, ...) METALANG99_PRIV_REC_NEXT(8782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8782(choice, ...) METALANG99_PRIV_REC_NEXT(8783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8783(choice, ...) METALANG99_PRIV_REC_NEXT(8784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8784(choice, ...) METALANG99_PRIV_REC_NEXT(8785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8785(choice, ...) METALANG99_PRIV_REC_NEXT(8786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8786(choice, ...) METALANG99_PRIV_REC_NEXT(8787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8787(choice, ...) METALANG99_PRIV_REC_NEXT(8788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8788(choice, ...) METALANG99_PRIV_REC_NEXT(8789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8789(choice, ...) METALANG99_PRIV_REC_NEXT(8790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8790(choice, ...) METALANG99_PRIV_REC_NEXT(8791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8791(choice, ...) METALANG99_PRIV_REC_NEXT(8792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8792(choice, ...) METALANG99_PRIV_REC_NEXT(8793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8793(choice, ...) METALANG99_PRIV_REC_NEXT(8794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8794(choice, ...) METALANG99_PRIV_REC_NEXT(8795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8795(choice, ...) METALANG99_PRIV_REC_NEXT(8796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8796(choice, ...) METALANG99_PRIV_REC_NEXT(8797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8797(choice, ...) METALANG99_PRIV_REC_NEXT(8798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8798(choice, ...) METALANG99_PRIV_REC_NEXT(8799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8799(choice, ...) METALANG99_PRIV_REC_NEXT(8800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8800(choice, ...) METALANG99_PRIV_REC_NEXT(8801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8801(choice, ...) METALANG99_PRIV_REC_NEXT(8802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8802(choice, ...) METALANG99_PRIV_REC_NEXT(8803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8803(choice, ...) METALANG99_PRIV_REC_NEXT(8804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8804(choice, ...) METALANG99_PRIV_REC_NEXT(8805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8805(choice, ...) METALANG99_PRIV_REC_NEXT(8806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8806(choice, ...) METALANG99_PRIV_REC_NEXT(8807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8807(choice, ...) METALANG99_PRIV_REC_NEXT(8808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8808(choice, ...) METALANG99_PRIV_REC_NEXT(8809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8809(choice, ...) METALANG99_PRIV_REC_NEXT(8810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8810(choice, ...) METALANG99_PRIV_REC_NEXT(8811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8811(choice, ...) METALANG99_PRIV_REC_NEXT(8812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8812(choice, ...) METALANG99_PRIV_REC_NEXT(8813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8813(choice, ...) METALANG99_PRIV_REC_NEXT(8814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8814(choice, ...) METALANG99_PRIV_REC_NEXT(8815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8815(choice, ...) METALANG99_PRIV_REC_NEXT(8816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8816(choice, ...) METALANG99_PRIV_REC_NEXT(8817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8817(choice, ...) METALANG99_PRIV_REC_NEXT(8818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8818(choice, ...) METALANG99_PRIV_REC_NEXT(8819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8819(choice, ...) METALANG99_PRIV_REC_NEXT(8820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8820(choice, ...) METALANG99_PRIV_REC_NEXT(8821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8821(choice, ...) METALANG99_PRIV_REC_NEXT(8822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8822(choice, ...) METALANG99_PRIV_REC_NEXT(8823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8823(choice, ...) METALANG99_PRIV_REC_NEXT(8824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8824(choice, ...) METALANG99_PRIV_REC_NEXT(8825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8825(choice, ...) METALANG99_PRIV_REC_NEXT(8826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8826(choice, ...) METALANG99_PRIV_REC_NEXT(8827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8827(choice, ...) METALANG99_PRIV_REC_NEXT(8828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8828(choice, ...) METALANG99_PRIV_REC_NEXT(8829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8829(choice, ...) METALANG99_PRIV_REC_NEXT(8830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8830(choice, ...) METALANG99_PRIV_REC_NEXT(8831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8831(choice, ...) METALANG99_PRIV_REC_NEXT(8832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8832(choice, ...) METALANG99_PRIV_REC_NEXT(8833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8833(choice, ...) METALANG99_PRIV_REC_NEXT(8834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8834(choice, ...) METALANG99_PRIV_REC_NEXT(8835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8835(choice, ...) METALANG99_PRIV_REC_NEXT(8836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8836(choice, ...) METALANG99_PRIV_REC_NEXT(8837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8837(choice, ...) METALANG99_PRIV_REC_NEXT(8838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8838(choice, ...) METALANG99_PRIV_REC_NEXT(8839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8839(choice, ...) METALANG99_PRIV_REC_NEXT(8840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8840(choice, ...) METALANG99_PRIV_REC_NEXT(8841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8841(choice, ...) METALANG99_PRIV_REC_NEXT(8842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8842(choice, ...) METALANG99_PRIV_REC_NEXT(8843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8843(choice, ...) METALANG99_PRIV_REC_NEXT(8844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8844(choice, ...) METALANG99_PRIV_REC_NEXT(8845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8845(choice, ...) METALANG99_PRIV_REC_NEXT(8846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8846(choice, ...) METALANG99_PRIV_REC_NEXT(8847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8847(choice, ...) METALANG99_PRIV_REC_NEXT(8848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8848(choice, ...) METALANG99_PRIV_REC_NEXT(8849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8849(choice, ...) METALANG99_PRIV_REC_NEXT(8850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8850(choice, ...) METALANG99_PRIV_REC_NEXT(8851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8851(choice, ...) METALANG99_PRIV_REC_NEXT(8852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8852(choice, ...) METALANG99_PRIV_REC_NEXT(8853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8853(choice, ...) METALANG99_PRIV_REC_NEXT(8854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8854(choice, ...) METALANG99_PRIV_REC_NEXT(8855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8855(choice, ...) METALANG99_PRIV_REC_NEXT(8856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8856(choice, ...) METALANG99_PRIV_REC_NEXT(8857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8857(choice, ...) METALANG99_PRIV_REC_NEXT(8858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8858(choice, ...) METALANG99_PRIV_REC_NEXT(8859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8859(choice, ...) METALANG99_PRIV_REC_NEXT(8860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8860(choice, ...) METALANG99_PRIV_REC_NEXT(8861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8861(choice, ...) METALANG99_PRIV_REC_NEXT(8862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8862(choice, ...) METALANG99_PRIV_REC_NEXT(8863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8863(choice, ...) METALANG99_PRIV_REC_NEXT(8864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8864(choice, ...) METALANG99_PRIV_REC_NEXT(8865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8865(choice, ...) METALANG99_PRIV_REC_NEXT(8866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8866(choice, ...) METALANG99_PRIV_REC_NEXT(8867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8867(choice, ...) METALANG99_PRIV_REC_NEXT(8868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8868(choice, ...) METALANG99_PRIV_REC_NEXT(8869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8869(choice, ...) METALANG99_PRIV_REC_NEXT(8870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8870(choice, ...) METALANG99_PRIV_REC_NEXT(8871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8871(choice, ...) METALANG99_PRIV_REC_NEXT(8872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8872(choice, ...) METALANG99_PRIV_REC_NEXT(8873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8873(choice, ...) METALANG99_PRIV_REC_NEXT(8874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8874(choice, ...) METALANG99_PRIV_REC_NEXT(8875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8875(choice, ...) METALANG99_PRIV_REC_NEXT(8876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8876(choice, ...) METALANG99_PRIV_REC_NEXT(8877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8877(choice, ...) METALANG99_PRIV_REC_NEXT(8878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8878(choice, ...) METALANG99_PRIV_REC_NEXT(8879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8879(choice, ...) METALANG99_PRIV_REC_NEXT(8880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8880(choice, ...) METALANG99_PRIV_REC_NEXT(8881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8881(choice, ...) METALANG99_PRIV_REC_NEXT(8882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8882(choice, ...) METALANG99_PRIV_REC_NEXT(8883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8883(choice, ...) METALANG99_PRIV_REC_NEXT(8884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8884(choice, ...) METALANG99_PRIV_REC_NEXT(8885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8885(choice, ...) METALANG99_PRIV_REC_NEXT(8886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8886(choice, ...) METALANG99_PRIV_REC_NEXT(8887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8887(choice, ...) METALANG99_PRIV_REC_NEXT(8888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8888(choice, ...) METALANG99_PRIV_REC_NEXT(8889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8889(choice, ...) METALANG99_PRIV_REC_NEXT(8890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8890(choice, ...) METALANG99_PRIV_REC_NEXT(8891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8891(choice, ...) METALANG99_PRIV_REC_NEXT(8892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8892(choice, ...) METALANG99_PRIV_REC_NEXT(8893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8893(choice, ...) METALANG99_PRIV_REC_NEXT(8894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8894(choice, ...) METALANG99_PRIV_REC_NEXT(8895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8895(choice, ...) METALANG99_PRIV_REC_NEXT(8896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8896(choice, ...) METALANG99_PRIV_REC_NEXT(8897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8897(choice, ...) METALANG99_PRIV_REC_NEXT(8898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8898(choice, ...) METALANG99_PRIV_REC_NEXT(8899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8899(choice, ...) METALANG99_PRIV_REC_NEXT(8900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8900(choice, ...) METALANG99_PRIV_REC_NEXT(8901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8901(choice, ...) METALANG99_PRIV_REC_NEXT(8902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8902(choice, ...) METALANG99_PRIV_REC_NEXT(8903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8903(choice, ...) METALANG99_PRIV_REC_NEXT(8904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8904(choice, ...) METALANG99_PRIV_REC_NEXT(8905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8905(choice, ...) METALANG99_PRIV_REC_NEXT(8906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8906(choice, ...) METALANG99_PRIV_REC_NEXT(8907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8907(choice, ...) METALANG99_PRIV_REC_NEXT(8908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8908(choice, ...) METALANG99_PRIV_REC_NEXT(8909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8909(choice, ...) METALANG99_PRIV_REC_NEXT(8910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8910(choice, ...) METALANG99_PRIV_REC_NEXT(8911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8911(choice, ...) METALANG99_PRIV_REC_NEXT(8912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8912(choice, ...) METALANG99_PRIV_REC_NEXT(8913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8913(choice, ...) METALANG99_PRIV_REC_NEXT(8914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8914(choice, ...) METALANG99_PRIV_REC_NEXT(8915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8915(choice, ...) METALANG99_PRIV_REC_NEXT(8916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8916(choice, ...) METALANG99_PRIV_REC_NEXT(8917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8917(choice, ...) METALANG99_PRIV_REC_NEXT(8918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8918(choice, ...) METALANG99_PRIV_REC_NEXT(8919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8919(choice, ...) METALANG99_PRIV_REC_NEXT(8920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8920(choice, ...) METALANG99_PRIV_REC_NEXT(8921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8921(choice, ...) METALANG99_PRIV_REC_NEXT(8922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8922(choice, ...) METALANG99_PRIV_REC_NEXT(8923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8923(choice, ...) METALANG99_PRIV_REC_NEXT(8924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8924(choice, ...) METALANG99_PRIV_REC_NEXT(8925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8925(choice, ...) METALANG99_PRIV_REC_NEXT(8926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8926(choice, ...) METALANG99_PRIV_REC_NEXT(8927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8927(choice, ...) METALANG99_PRIV_REC_NEXT(8928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8928(choice, ...) METALANG99_PRIV_REC_NEXT(8929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8929(choice, ...) METALANG99_PRIV_REC_NEXT(8930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8930(choice, ...) METALANG99_PRIV_REC_NEXT(8931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8931(choice, ...) METALANG99_PRIV_REC_NEXT(8932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8932(choice, ...) METALANG99_PRIV_REC_NEXT(8933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8933(choice, ...) METALANG99_PRIV_REC_NEXT(8934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8934(choice, ...) METALANG99_PRIV_REC_NEXT(8935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8935(choice, ...) METALANG99_PRIV_REC_NEXT(8936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8936(choice, ...) METALANG99_PRIV_REC_NEXT(8937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8937(choice, ...) METALANG99_PRIV_REC_NEXT(8938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8938(choice, ...) METALANG99_PRIV_REC_NEXT(8939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8939(choice, ...) METALANG99_PRIV_REC_NEXT(8940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8940(choice, ...) METALANG99_PRIV_REC_NEXT(8941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8941(choice, ...) METALANG99_PRIV_REC_NEXT(8942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8942(choice, ...) METALANG99_PRIV_REC_NEXT(8943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8943(choice, ...) METALANG99_PRIV_REC_NEXT(8944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8944(choice, ...) METALANG99_PRIV_REC_NEXT(8945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8945(choice, ...) METALANG99_PRIV_REC_NEXT(8946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8946(choice, ...) METALANG99_PRIV_REC_NEXT(8947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8947(choice, ...) METALANG99_PRIV_REC_NEXT(8948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8948(choice, ...) METALANG99_PRIV_REC_NEXT(8949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8949(choice, ...) METALANG99_PRIV_REC_NEXT(8950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8950(choice, ...) METALANG99_PRIV_REC_NEXT(8951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8951(choice, ...) METALANG99_PRIV_REC_NEXT(8952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8952(choice, ...) METALANG99_PRIV_REC_NEXT(8953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8953(choice, ...) METALANG99_PRIV_REC_NEXT(8954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8954(choice, ...) METALANG99_PRIV_REC_NEXT(8955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8955(choice, ...) METALANG99_PRIV_REC_NEXT(8956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8956(choice, ...) METALANG99_PRIV_REC_NEXT(8957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8957(choice, ...) METALANG99_PRIV_REC_NEXT(8958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8958(choice, ...) METALANG99_PRIV_REC_NEXT(8959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8959(choice, ...) METALANG99_PRIV_REC_NEXT(8960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8960(choice, ...) METALANG99_PRIV_REC_NEXT(8961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8961(choice, ...) METALANG99_PRIV_REC_NEXT(8962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8962(choice, ...) METALANG99_PRIV_REC_NEXT(8963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8963(choice, ...) METALANG99_PRIV_REC_NEXT(8964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8964(choice, ...) METALANG99_PRIV_REC_NEXT(8965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8965(choice, ...) METALANG99_PRIV_REC_NEXT(8966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8966(choice, ...) METALANG99_PRIV_REC_NEXT(8967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8967(choice, ...) METALANG99_PRIV_REC_NEXT(8968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8968(choice, ...) METALANG99_PRIV_REC_NEXT(8969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8969(choice, ...) METALANG99_PRIV_REC_NEXT(8970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8970(choice, ...) METALANG99_PRIV_REC_NEXT(8971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8971(choice, ...) METALANG99_PRIV_REC_NEXT(8972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8972(choice, ...) METALANG99_PRIV_REC_NEXT(8973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8973(choice, ...) METALANG99_PRIV_REC_NEXT(8974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8974(choice, ...) METALANG99_PRIV_REC_NEXT(8975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8975(choice, ...) METALANG99_PRIV_REC_NEXT(8976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8976(choice, ...) METALANG99_PRIV_REC_NEXT(8977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8977(choice, ...) METALANG99_PRIV_REC_NEXT(8978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8978(choice, ...) METALANG99_PRIV_REC_NEXT(8979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8979(choice, ...) METALANG99_PRIV_REC_NEXT(8980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8980(choice, ...) METALANG99_PRIV_REC_NEXT(8981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8981(choice, ...) METALANG99_PRIV_REC_NEXT(8982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8982(choice, ...) METALANG99_PRIV_REC_NEXT(8983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8983(choice, ...) METALANG99_PRIV_REC_NEXT(8984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8984(choice, ...) METALANG99_PRIV_REC_NEXT(8985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8985(choice, ...) METALANG99_PRIV_REC_NEXT(8986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8986(choice, ...) METALANG99_PRIV_REC_NEXT(8987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8987(choice, ...) METALANG99_PRIV_REC_NEXT(8988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8988(choice, ...) METALANG99_PRIV_REC_NEXT(8989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8989(choice, ...) METALANG99_PRIV_REC_NEXT(8990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8990(choice, ...) METALANG99_PRIV_REC_NEXT(8991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8991(choice, ...) METALANG99_PRIV_REC_NEXT(8992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8992(choice, ...) METALANG99_PRIV_REC_NEXT(8993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8993(choice, ...) METALANG99_PRIV_REC_NEXT(8994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8994(choice, ...) METALANG99_PRIV_REC_NEXT(8995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8995(choice, ...) METALANG99_PRIV_REC_NEXT(8996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8996(choice, ...) METALANG99_PRIV_REC_NEXT(8997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8997(choice, ...) METALANG99_PRIV_REC_NEXT(8998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8998(choice, ...) METALANG99_PRIV_REC_NEXT(8999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_8999(choice, ...) METALANG99_PRIV_REC_NEXT(9000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9000(choice, ...) METALANG99_PRIV_REC_NEXT(9001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9001(choice, ...) METALANG99_PRIV_REC_NEXT(9002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9002(choice, ...) METALANG99_PRIV_REC_NEXT(9003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9003(choice, ...) METALANG99_PRIV_REC_NEXT(9004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9004(choice, ...) METALANG99_PRIV_REC_NEXT(9005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9005(choice, ...) METALANG99_PRIV_REC_NEXT(9006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9006(choice, ...) METALANG99_PRIV_REC_NEXT(9007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9007(choice, ...) METALANG99_PRIV_REC_NEXT(9008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9008(choice, ...) METALANG99_PRIV_REC_NEXT(9009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9009(choice, ...) METALANG99_PRIV_REC_NEXT(9010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9010(choice, ...) METALANG99_PRIV_REC_NEXT(9011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9011(choice, ...) METALANG99_PRIV_REC_NEXT(9012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9012(choice, ...) METALANG99_PRIV_REC_NEXT(9013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9013(choice, ...) METALANG99_PRIV_REC_NEXT(9014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9014(choice, ...) METALANG99_PRIV_REC_NEXT(9015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9015(choice, ...) METALANG99_PRIV_REC_NEXT(9016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9016(choice, ...) METALANG99_PRIV_REC_NEXT(9017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9017(choice, ...) METALANG99_PRIV_REC_NEXT(9018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9018(choice, ...) METALANG99_PRIV_REC_NEXT(9019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9019(choice, ...) METALANG99_PRIV_REC_NEXT(9020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9020(choice, ...) METALANG99_PRIV_REC_NEXT(9021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9021(choice, ...) METALANG99_PRIV_REC_NEXT(9022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9022(choice, ...) METALANG99_PRIV_REC_NEXT(9023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9023(choice, ...) METALANG99_PRIV_REC_NEXT(9024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9024(choice, ...) METALANG99_PRIV_REC_NEXT(9025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9025(choice, ...) METALANG99_PRIV_REC_NEXT(9026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9026(choice, ...) METALANG99_PRIV_REC_NEXT(9027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9027(choice, ...) METALANG99_PRIV_REC_NEXT(9028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9028(choice, ...) METALANG99_PRIV_REC_NEXT(9029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9029(choice, ...) METALANG99_PRIV_REC_NEXT(9030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9030(choice, ...) METALANG99_PRIV_REC_NEXT(9031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9031(choice, ...) METALANG99_PRIV_REC_NEXT(9032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9032(choice, ...) METALANG99_PRIV_REC_NEXT(9033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9033(choice, ...) METALANG99_PRIV_REC_NEXT(9034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9034(choice, ...) METALANG99_PRIV_REC_NEXT(9035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9035(choice, ...) METALANG99_PRIV_REC_NEXT(9036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9036(choice, ...) METALANG99_PRIV_REC_NEXT(9037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9037(choice, ...) METALANG99_PRIV_REC_NEXT(9038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9038(choice, ...) METALANG99_PRIV_REC_NEXT(9039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9039(choice, ...) METALANG99_PRIV_REC_NEXT(9040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9040(choice, ...) METALANG99_PRIV_REC_NEXT(9041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9041(choice, ...) METALANG99_PRIV_REC_NEXT(9042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9042(choice, ...) METALANG99_PRIV_REC_NEXT(9043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9043(choice, ...) METALANG99_PRIV_REC_NEXT(9044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9044(choice, ...) METALANG99_PRIV_REC_NEXT(9045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9045(choice, ...) METALANG99_PRIV_REC_NEXT(9046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9046(choice, ...) METALANG99_PRIV_REC_NEXT(9047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9047(choice, ...) METALANG99_PRIV_REC_NEXT(9048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9048(choice, ...) METALANG99_PRIV_REC_NEXT(9049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9049(choice, ...) METALANG99_PRIV_REC_NEXT(9050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9050(choice, ...) METALANG99_PRIV_REC_NEXT(9051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9051(choice, ...) METALANG99_PRIV_REC_NEXT(9052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9052(choice, ...) METALANG99_PRIV_REC_NEXT(9053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9053(choice, ...) METALANG99_PRIV_REC_NEXT(9054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9054(choice, ...) METALANG99_PRIV_REC_NEXT(9055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9055(choice, ...) METALANG99_PRIV_REC_NEXT(9056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9056(choice, ...) METALANG99_PRIV_REC_NEXT(9057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9057(choice, ...) METALANG99_PRIV_REC_NEXT(9058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9058(choice, ...) METALANG99_PRIV_REC_NEXT(9059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9059(choice, ...) METALANG99_PRIV_REC_NEXT(9060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9060(choice, ...) METALANG99_PRIV_REC_NEXT(9061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9061(choice, ...) METALANG99_PRIV_REC_NEXT(9062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9062(choice, ...) METALANG99_PRIV_REC_NEXT(9063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9063(choice, ...) METALANG99_PRIV_REC_NEXT(9064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9064(choice, ...) METALANG99_PRIV_REC_NEXT(9065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9065(choice, ...) METALANG99_PRIV_REC_NEXT(9066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9066(choice, ...) METALANG99_PRIV_REC_NEXT(9067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9067(choice, ...) METALANG99_PRIV_REC_NEXT(9068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9068(choice, ...) METALANG99_PRIV_REC_NEXT(9069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9069(choice, ...) METALANG99_PRIV_REC_NEXT(9070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9070(choice, ...) METALANG99_PRIV_REC_NEXT(9071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9071(choice, ...) METALANG99_PRIV_REC_NEXT(9072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9072(choice, ...) METALANG99_PRIV_REC_NEXT(9073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9073(choice, ...) METALANG99_PRIV_REC_NEXT(9074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9074(choice, ...) METALANG99_PRIV_REC_NEXT(9075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9075(choice, ...) METALANG99_PRIV_REC_NEXT(9076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9076(choice, ...) METALANG99_PRIV_REC_NEXT(9077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9077(choice, ...) METALANG99_PRIV_REC_NEXT(9078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9078(choice, ...) METALANG99_PRIV_REC_NEXT(9079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9079(choice, ...) METALANG99_PRIV_REC_NEXT(9080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9080(choice, ...) METALANG99_PRIV_REC_NEXT(9081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9081(choice, ...) METALANG99_PRIV_REC_NEXT(9082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9082(choice, ...) METALANG99_PRIV_REC_NEXT(9083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9083(choice, ...) METALANG99_PRIV_REC_NEXT(9084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9084(choice, ...) METALANG99_PRIV_REC_NEXT(9085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9085(choice, ...) METALANG99_PRIV_REC_NEXT(9086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9086(choice, ...) METALANG99_PRIV_REC_NEXT(9087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9087(choice, ...) METALANG99_PRIV_REC_NEXT(9088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9088(choice, ...) METALANG99_PRIV_REC_NEXT(9089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9089(choice, ...) METALANG99_PRIV_REC_NEXT(9090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9090(choice, ...) METALANG99_PRIV_REC_NEXT(9091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9091(choice, ...) METALANG99_PRIV_REC_NEXT(9092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9092(choice, ...) METALANG99_PRIV_REC_NEXT(9093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9093(choice, ...) METALANG99_PRIV_REC_NEXT(9094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9094(choice, ...) METALANG99_PRIV_REC_NEXT(9095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9095(choice, ...) METALANG99_PRIV_REC_NEXT(9096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9096(choice, ...) METALANG99_PRIV_REC_NEXT(9097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9097(choice, ...) METALANG99_PRIV_REC_NEXT(9098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9098(choice, ...) METALANG99_PRIV_REC_NEXT(9099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9099(choice, ...) METALANG99_PRIV_REC_NEXT(9100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9100(choice, ...) METALANG99_PRIV_REC_NEXT(9101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9101(choice, ...) METALANG99_PRIV_REC_NEXT(9102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9102(choice, ...) METALANG99_PRIV_REC_NEXT(9103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9103(choice, ...) METALANG99_PRIV_REC_NEXT(9104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9104(choice, ...) METALANG99_PRIV_REC_NEXT(9105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9105(choice, ...) METALANG99_PRIV_REC_NEXT(9106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9106(choice, ...) METALANG99_PRIV_REC_NEXT(9107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9107(choice, ...) METALANG99_PRIV_REC_NEXT(9108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9108(choice, ...) METALANG99_PRIV_REC_NEXT(9109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9109(choice, ...) METALANG99_PRIV_REC_NEXT(9110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9110(choice, ...) METALANG99_PRIV_REC_NEXT(9111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9111(choice, ...) METALANG99_PRIV_REC_NEXT(9112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9112(choice, ...) METALANG99_PRIV_REC_NEXT(9113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9113(choice, ...) METALANG99_PRIV_REC_NEXT(9114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9114(choice, ...) METALANG99_PRIV_REC_NEXT(9115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9115(choice, ...) METALANG99_PRIV_REC_NEXT(9116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9116(choice, ...) METALANG99_PRIV_REC_NEXT(9117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9117(choice, ...) METALANG99_PRIV_REC_NEXT(9118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9118(choice, ...) METALANG99_PRIV_REC_NEXT(9119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9119(choice, ...) METALANG99_PRIV_REC_NEXT(9120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9120(choice, ...) METALANG99_PRIV_REC_NEXT(9121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9121(choice, ...) METALANG99_PRIV_REC_NEXT(9122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9122(choice, ...) METALANG99_PRIV_REC_NEXT(9123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9123(choice, ...) METALANG99_PRIV_REC_NEXT(9124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9124(choice, ...) METALANG99_PRIV_REC_NEXT(9125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9125(choice, ...) METALANG99_PRIV_REC_NEXT(9126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9126(choice, ...) METALANG99_PRIV_REC_NEXT(9127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9127(choice, ...) METALANG99_PRIV_REC_NEXT(9128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9128(choice, ...) METALANG99_PRIV_REC_NEXT(9129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9129(choice, ...) METALANG99_PRIV_REC_NEXT(9130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9130(choice, ...) METALANG99_PRIV_REC_NEXT(9131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9131(choice, ...) METALANG99_PRIV_REC_NEXT(9132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9132(choice, ...) METALANG99_PRIV_REC_NEXT(9133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9133(choice, ...) METALANG99_PRIV_REC_NEXT(9134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9134(choice, ...) METALANG99_PRIV_REC_NEXT(9135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9135(choice, ...) METALANG99_PRIV_REC_NEXT(9136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9136(choice, ...) METALANG99_PRIV_REC_NEXT(9137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9137(choice, ...) METALANG99_PRIV_REC_NEXT(9138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9138(choice, ...) METALANG99_PRIV_REC_NEXT(9139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9139(choice, ...) METALANG99_PRIV_REC_NEXT(9140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9140(choice, ...) METALANG99_PRIV_REC_NEXT(9141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9141(choice, ...) METALANG99_PRIV_REC_NEXT(9142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9142(choice, ...) METALANG99_PRIV_REC_NEXT(9143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9143(choice, ...) METALANG99_PRIV_REC_NEXT(9144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9144(choice, ...) METALANG99_PRIV_REC_NEXT(9145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9145(choice, ...) METALANG99_PRIV_REC_NEXT(9146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9146(choice, ...) METALANG99_PRIV_REC_NEXT(9147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9147(choice, ...) METALANG99_PRIV_REC_NEXT(9148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9148(choice, ...) METALANG99_PRIV_REC_NEXT(9149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9149(choice, ...) METALANG99_PRIV_REC_NEXT(9150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9150(choice, ...) METALANG99_PRIV_REC_NEXT(9151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9151(choice, ...) METALANG99_PRIV_REC_NEXT(9152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9152(choice, ...) METALANG99_PRIV_REC_NEXT(9153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9153(choice, ...) METALANG99_PRIV_REC_NEXT(9154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9154(choice, ...) METALANG99_PRIV_REC_NEXT(9155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9155(choice, ...) METALANG99_PRIV_REC_NEXT(9156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9156(choice, ...) METALANG99_PRIV_REC_NEXT(9157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9157(choice, ...) METALANG99_PRIV_REC_NEXT(9158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9158(choice, ...) METALANG99_PRIV_REC_NEXT(9159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9159(choice, ...) METALANG99_PRIV_REC_NEXT(9160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9160(choice, ...) METALANG99_PRIV_REC_NEXT(9161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9161(choice, ...) METALANG99_PRIV_REC_NEXT(9162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9162(choice, ...) METALANG99_PRIV_REC_NEXT(9163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9163(choice, ...) METALANG99_PRIV_REC_NEXT(9164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9164(choice, ...) METALANG99_PRIV_REC_NEXT(9165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9165(choice, ...) METALANG99_PRIV_REC_NEXT(9166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9166(choice, ...) METALANG99_PRIV_REC_NEXT(9167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9167(choice, ...) METALANG99_PRIV_REC_NEXT(9168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9168(choice, ...) METALANG99_PRIV_REC_NEXT(9169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9169(choice, ...) METALANG99_PRIV_REC_NEXT(9170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9170(choice, ...) METALANG99_PRIV_REC_NEXT(9171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9171(choice, ...) METALANG99_PRIV_REC_NEXT(9172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9172(choice, ...) METALANG99_PRIV_REC_NEXT(9173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9173(choice, ...) METALANG99_PRIV_REC_NEXT(9174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9174(choice, ...) METALANG99_PRIV_REC_NEXT(9175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9175(choice, ...) METALANG99_PRIV_REC_NEXT(9176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9176(choice, ...) METALANG99_PRIV_REC_NEXT(9177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9177(choice, ...) METALANG99_PRIV_REC_NEXT(9178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9178(choice, ...) METALANG99_PRIV_REC_NEXT(9179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9179(choice, ...) METALANG99_PRIV_REC_NEXT(9180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9180(choice, ...) METALANG99_PRIV_REC_NEXT(9181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9181(choice, ...) METALANG99_PRIV_REC_NEXT(9182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9182(choice, ...) METALANG99_PRIV_REC_NEXT(9183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9183(choice, ...) METALANG99_PRIV_REC_NEXT(9184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9184(choice, ...) METALANG99_PRIV_REC_NEXT(9185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9185(choice, ...) METALANG99_PRIV_REC_NEXT(9186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9186(choice, ...) METALANG99_PRIV_REC_NEXT(9187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9187(choice, ...) METALANG99_PRIV_REC_NEXT(9188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9188(choice, ...) METALANG99_PRIV_REC_NEXT(9189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9189(choice, ...) METALANG99_PRIV_REC_NEXT(9190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9190(choice, ...) METALANG99_PRIV_REC_NEXT(9191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9191(choice, ...) METALANG99_PRIV_REC_NEXT(9192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9192(choice, ...) METALANG99_PRIV_REC_NEXT(9193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9193(choice, ...) METALANG99_PRIV_REC_NEXT(9194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9194(choice, ...) METALANG99_PRIV_REC_NEXT(9195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9195(choice, ...) METALANG99_PRIV_REC_NEXT(9196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9196(choice, ...) METALANG99_PRIV_REC_NEXT(9197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9197(choice, ...) METALANG99_PRIV_REC_NEXT(9198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9198(choice, ...) METALANG99_PRIV_REC_NEXT(9199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9199(choice, ...) METALANG99_PRIV_REC_NEXT(9200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9200(choice, ...) METALANG99_PRIV_REC_NEXT(9201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9201(choice, ...) METALANG99_PRIV_REC_NEXT(9202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9202(choice, ...) METALANG99_PRIV_REC_NEXT(9203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9203(choice, ...) METALANG99_PRIV_REC_NEXT(9204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9204(choice, ...) METALANG99_PRIV_REC_NEXT(9205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9205(choice, ...) METALANG99_PRIV_REC_NEXT(9206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9206(choice, ...) METALANG99_PRIV_REC_NEXT(9207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9207(choice, ...) METALANG99_PRIV_REC_NEXT(9208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9208(choice, ...) METALANG99_PRIV_REC_NEXT(9209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9209(choice, ...) METALANG99_PRIV_REC_NEXT(9210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9210(choice, ...) METALANG99_PRIV_REC_NEXT(9211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9211(choice, ...) METALANG99_PRIV_REC_NEXT(9212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9212(choice, ...) METALANG99_PRIV_REC_NEXT(9213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9213(choice, ...) METALANG99_PRIV_REC_NEXT(9214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9214(choice, ...) METALANG99_PRIV_REC_NEXT(9215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9215(choice, ...) METALANG99_PRIV_REC_NEXT(9216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9216(choice, ...) METALANG99_PRIV_REC_NEXT(9217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9217(choice, ...) METALANG99_PRIV_REC_NEXT(9218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9218(choice, ...) METALANG99_PRIV_REC_NEXT(9219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9219(choice, ...) METALANG99_PRIV_REC_NEXT(9220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9220(choice, ...) METALANG99_PRIV_REC_NEXT(9221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9221(choice, ...) METALANG99_PRIV_REC_NEXT(9222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9222(choice, ...) METALANG99_PRIV_REC_NEXT(9223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9223(choice, ...) METALANG99_PRIV_REC_NEXT(9224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9224(choice, ...) METALANG99_PRIV_REC_NEXT(9225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9225(choice, ...) METALANG99_PRIV_REC_NEXT(9226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9226(choice, ...) METALANG99_PRIV_REC_NEXT(9227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9227(choice, ...) METALANG99_PRIV_REC_NEXT(9228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9228(choice, ...) METALANG99_PRIV_REC_NEXT(9229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9229(choice, ...) METALANG99_PRIV_REC_NEXT(9230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9230(choice, ...) METALANG99_PRIV_REC_NEXT(9231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9231(choice, ...) METALANG99_PRIV_REC_NEXT(9232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9232(choice, ...) METALANG99_PRIV_REC_NEXT(9233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9233(choice, ...) METALANG99_PRIV_REC_NEXT(9234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9234(choice, ...) METALANG99_PRIV_REC_NEXT(9235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9235(choice, ...) METALANG99_PRIV_REC_NEXT(9236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9236(choice, ...) METALANG99_PRIV_REC_NEXT(9237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9237(choice, ...) METALANG99_PRIV_REC_NEXT(9238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9238(choice, ...) METALANG99_PRIV_REC_NEXT(9239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9239(choice, ...) METALANG99_PRIV_REC_NEXT(9240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9240(choice, ...) METALANG99_PRIV_REC_NEXT(9241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9241(choice, ...) METALANG99_PRIV_REC_NEXT(9242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9242(choice, ...) METALANG99_PRIV_REC_NEXT(9243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9243(choice, ...) METALANG99_PRIV_REC_NEXT(9244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9244(choice, ...) METALANG99_PRIV_REC_NEXT(9245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9245(choice, ...) METALANG99_PRIV_REC_NEXT(9246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9246(choice, ...) METALANG99_PRIV_REC_NEXT(9247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9247(choice, ...) METALANG99_PRIV_REC_NEXT(9248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9248(choice, ...) METALANG99_PRIV_REC_NEXT(9249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9249(choice, ...) METALANG99_PRIV_REC_NEXT(9250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9250(choice, ...) METALANG99_PRIV_REC_NEXT(9251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9251(choice, ...) METALANG99_PRIV_REC_NEXT(9252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9252(choice, ...) METALANG99_PRIV_REC_NEXT(9253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9253(choice, ...) METALANG99_PRIV_REC_NEXT(9254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9254(choice, ...) METALANG99_PRIV_REC_NEXT(9255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9255(choice, ...) METALANG99_PRIV_REC_NEXT(9256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9256(choice, ...) METALANG99_PRIV_REC_NEXT(9257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9257(choice, ...) METALANG99_PRIV_REC_NEXT(9258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9258(choice, ...) METALANG99_PRIV_REC_NEXT(9259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9259(choice, ...) METALANG99_PRIV_REC_NEXT(9260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9260(choice, ...) METALANG99_PRIV_REC_NEXT(9261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9261(choice, ...) METALANG99_PRIV_REC_NEXT(9262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9262(choice, ...) METALANG99_PRIV_REC_NEXT(9263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9263(choice, ...) METALANG99_PRIV_REC_NEXT(9264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9264(choice, ...) METALANG99_PRIV_REC_NEXT(9265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9265(choice, ...) METALANG99_PRIV_REC_NEXT(9266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9266(choice, ...) METALANG99_PRIV_REC_NEXT(9267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9267(choice, ...) METALANG99_PRIV_REC_NEXT(9268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9268(choice, ...) METALANG99_PRIV_REC_NEXT(9269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9269(choice, ...) METALANG99_PRIV_REC_NEXT(9270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9270(choice, ...) METALANG99_PRIV_REC_NEXT(9271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9271(choice, ...) METALANG99_PRIV_REC_NEXT(9272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9272(choice, ...) METALANG99_PRIV_REC_NEXT(9273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9273(choice, ...) METALANG99_PRIV_REC_NEXT(9274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9274(choice, ...) METALANG99_PRIV_REC_NEXT(9275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9275(choice, ...) METALANG99_PRIV_REC_NEXT(9276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9276(choice, ...) METALANG99_PRIV_REC_NEXT(9277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9277(choice, ...) METALANG99_PRIV_REC_NEXT(9278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9278(choice, ...) METALANG99_PRIV_REC_NEXT(9279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9279(choice, ...) METALANG99_PRIV_REC_NEXT(9280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9280(choice, ...) METALANG99_PRIV_REC_NEXT(9281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9281(choice, ...) METALANG99_PRIV_REC_NEXT(9282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9282(choice, ...) METALANG99_PRIV_REC_NEXT(9283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9283(choice, ...) METALANG99_PRIV_REC_NEXT(9284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9284(choice, ...) METALANG99_PRIV_REC_NEXT(9285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9285(choice, ...) METALANG99_PRIV_REC_NEXT(9286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9286(choice, ...) METALANG99_PRIV_REC_NEXT(9287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9287(choice, ...) METALANG99_PRIV_REC_NEXT(9288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9288(choice, ...) METALANG99_PRIV_REC_NEXT(9289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9289(choice, ...) METALANG99_PRIV_REC_NEXT(9290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9290(choice, ...) METALANG99_PRIV_REC_NEXT(9291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9291(choice, ...) METALANG99_PRIV_REC_NEXT(9292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9292(choice, ...) METALANG99_PRIV_REC_NEXT(9293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9293(choice, ...) METALANG99_PRIV_REC_NEXT(9294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9294(choice, ...) METALANG99_PRIV_REC_NEXT(9295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9295(choice, ...) METALANG99_PRIV_REC_NEXT(9296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9296(choice, ...) METALANG99_PRIV_REC_NEXT(9297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9297(choice, ...) METALANG99_PRIV_REC_NEXT(9298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9298(choice, ...) METALANG99_PRIV_REC_NEXT(9299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9299(choice, ...) METALANG99_PRIV_REC_NEXT(9300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9300(choice, ...) METALANG99_PRIV_REC_NEXT(9301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9301(choice, ...) METALANG99_PRIV_REC_NEXT(9302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9302(choice, ...) METALANG99_PRIV_REC_NEXT(9303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9303(choice, ...) METALANG99_PRIV_REC_NEXT(9304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9304(choice, ...) METALANG99_PRIV_REC_NEXT(9305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9305(choice, ...) METALANG99_PRIV_REC_NEXT(9306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9306(choice, ...) METALANG99_PRIV_REC_NEXT(9307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9307(choice, ...) METALANG99_PRIV_REC_NEXT(9308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9308(choice, ...) METALANG99_PRIV_REC_NEXT(9309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9309(choice, ...) METALANG99_PRIV_REC_NEXT(9310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9310(choice, ...) METALANG99_PRIV_REC_NEXT(9311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9311(choice, ...) METALANG99_PRIV_REC_NEXT(9312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9312(choice, ...) METALANG99_PRIV_REC_NEXT(9313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9313(choice, ...) METALANG99_PRIV_REC_NEXT(9314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9314(choice, ...) METALANG99_PRIV_REC_NEXT(9315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9315(choice, ...) METALANG99_PRIV_REC_NEXT(9316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9316(choice, ...) METALANG99_PRIV_REC_NEXT(9317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9317(choice, ...) METALANG99_PRIV_REC_NEXT(9318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9318(choice, ...) METALANG99_PRIV_REC_NEXT(9319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9319(choice, ...) METALANG99_PRIV_REC_NEXT(9320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9320(choice, ...) METALANG99_PRIV_REC_NEXT(9321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9321(choice, ...) METALANG99_PRIV_REC_NEXT(9322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9322(choice, ...) METALANG99_PRIV_REC_NEXT(9323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9323(choice, ...) METALANG99_PRIV_REC_NEXT(9324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9324(choice, ...) METALANG99_PRIV_REC_NEXT(9325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9325(choice, ...) METALANG99_PRIV_REC_NEXT(9326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9326(choice, ...) METALANG99_PRIV_REC_NEXT(9327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9327(choice, ...) METALANG99_PRIV_REC_NEXT(9328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9328(choice, ...) METALANG99_PRIV_REC_NEXT(9329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9329(choice, ...) METALANG99_PRIV_REC_NEXT(9330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9330(choice, ...) METALANG99_PRIV_REC_NEXT(9331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9331(choice, ...) METALANG99_PRIV_REC_NEXT(9332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9332(choice, ...) METALANG99_PRIV_REC_NEXT(9333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9333(choice, ...) METALANG99_PRIV_REC_NEXT(9334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9334(choice, ...) METALANG99_PRIV_REC_NEXT(9335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9335(choice, ...) METALANG99_PRIV_REC_NEXT(9336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9336(choice, ...) METALANG99_PRIV_REC_NEXT(9337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9337(choice, ...) METALANG99_PRIV_REC_NEXT(9338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9338(choice, ...) METALANG99_PRIV_REC_NEXT(9339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9339(choice, ...) METALANG99_PRIV_REC_NEXT(9340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9340(choice, ...) METALANG99_PRIV_REC_NEXT(9341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9341(choice, ...) METALANG99_PRIV_REC_NEXT(9342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9342(choice, ...) METALANG99_PRIV_REC_NEXT(9343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9343(choice, ...) METALANG99_PRIV_REC_NEXT(9344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9344(choice, ...) METALANG99_PRIV_REC_NEXT(9345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9345(choice, ...) METALANG99_PRIV_REC_NEXT(9346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9346(choice, ...) METALANG99_PRIV_REC_NEXT(9347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9347(choice, ...) METALANG99_PRIV_REC_NEXT(9348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9348(choice, ...) METALANG99_PRIV_REC_NEXT(9349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9349(choice, ...) METALANG99_PRIV_REC_NEXT(9350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9350(choice, ...) METALANG99_PRIV_REC_NEXT(9351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9351(choice, ...) METALANG99_PRIV_REC_NEXT(9352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9352(choice, ...) METALANG99_PRIV_REC_NEXT(9353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9353(choice, ...) METALANG99_PRIV_REC_NEXT(9354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9354(choice, ...) METALANG99_PRIV_REC_NEXT(9355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9355(choice, ...) METALANG99_PRIV_REC_NEXT(9356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9356(choice, ...) METALANG99_PRIV_REC_NEXT(9357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9357(choice, ...) METALANG99_PRIV_REC_NEXT(9358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9358(choice, ...) METALANG99_PRIV_REC_NEXT(9359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9359(choice, ...) METALANG99_PRIV_REC_NEXT(9360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9360(choice, ...) METALANG99_PRIV_REC_NEXT(9361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9361(choice, ...) METALANG99_PRIV_REC_NEXT(9362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9362(choice, ...) METALANG99_PRIV_REC_NEXT(9363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9363(choice, ...) METALANG99_PRIV_REC_NEXT(9364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9364(choice, ...) METALANG99_PRIV_REC_NEXT(9365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9365(choice, ...) METALANG99_PRIV_REC_NEXT(9366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9366(choice, ...) METALANG99_PRIV_REC_NEXT(9367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9367(choice, ...) METALANG99_PRIV_REC_NEXT(9368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9368(choice, ...) METALANG99_PRIV_REC_NEXT(9369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9369(choice, ...) METALANG99_PRIV_REC_NEXT(9370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9370(choice, ...) METALANG99_PRIV_REC_NEXT(9371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9371(choice, ...) METALANG99_PRIV_REC_NEXT(9372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9372(choice, ...) METALANG99_PRIV_REC_NEXT(9373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9373(choice, ...) METALANG99_PRIV_REC_NEXT(9374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9374(choice, ...) METALANG99_PRIV_REC_NEXT(9375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9375(choice, ...) METALANG99_PRIV_REC_NEXT(9376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9376(choice, ...) METALANG99_PRIV_REC_NEXT(9377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9377(choice, ...) METALANG99_PRIV_REC_NEXT(9378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9378(choice, ...) METALANG99_PRIV_REC_NEXT(9379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9379(choice, ...) METALANG99_PRIV_REC_NEXT(9380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9380(choice, ...) METALANG99_PRIV_REC_NEXT(9381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9381(choice, ...) METALANG99_PRIV_REC_NEXT(9382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9382(choice, ...) METALANG99_PRIV_REC_NEXT(9383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9383(choice, ...) METALANG99_PRIV_REC_NEXT(9384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9384(choice, ...) METALANG99_PRIV_REC_NEXT(9385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9385(choice, ...) METALANG99_PRIV_REC_NEXT(9386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9386(choice, ...) METALANG99_PRIV_REC_NEXT(9387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9387(choice, ...) METALANG99_PRIV_REC_NEXT(9388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9388(choice, ...) METALANG99_PRIV_REC_NEXT(9389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9389(choice, ...) METALANG99_PRIV_REC_NEXT(9390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9390(choice, ...) METALANG99_PRIV_REC_NEXT(9391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9391(choice, ...) METALANG99_PRIV_REC_NEXT(9392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9392(choice, ...) METALANG99_PRIV_REC_NEXT(9393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9393(choice, ...) METALANG99_PRIV_REC_NEXT(9394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9394(choice, ...) METALANG99_PRIV_REC_NEXT(9395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9395(choice, ...) METALANG99_PRIV_REC_NEXT(9396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9396(choice, ...) METALANG99_PRIV_REC_NEXT(9397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9397(choice, ...) METALANG99_PRIV_REC_NEXT(9398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9398(choice, ...) METALANG99_PRIV_REC_NEXT(9399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9399(choice, ...) METALANG99_PRIV_REC_NEXT(9400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9400(choice, ...) METALANG99_PRIV_REC_NEXT(9401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9401(choice, ...) METALANG99_PRIV_REC_NEXT(9402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9402(choice, ...) METALANG99_PRIV_REC_NEXT(9403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9403(choice, ...) METALANG99_PRIV_REC_NEXT(9404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9404(choice, ...) METALANG99_PRIV_REC_NEXT(9405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9405(choice, ...) METALANG99_PRIV_REC_NEXT(9406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9406(choice, ...) METALANG99_PRIV_REC_NEXT(9407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9407(choice, ...) METALANG99_PRIV_REC_NEXT(9408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9408(choice, ...) METALANG99_PRIV_REC_NEXT(9409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9409(choice, ...) METALANG99_PRIV_REC_NEXT(9410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9410(choice, ...) METALANG99_PRIV_REC_NEXT(9411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9411(choice, ...) METALANG99_PRIV_REC_NEXT(9412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9412(choice, ...) METALANG99_PRIV_REC_NEXT(9413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9413(choice, ...) METALANG99_PRIV_REC_NEXT(9414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9414(choice, ...) METALANG99_PRIV_REC_NEXT(9415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9415(choice, ...) METALANG99_PRIV_REC_NEXT(9416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9416(choice, ...) METALANG99_PRIV_REC_NEXT(9417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9417(choice, ...) METALANG99_PRIV_REC_NEXT(9418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9418(choice, ...) METALANG99_PRIV_REC_NEXT(9419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9419(choice, ...) METALANG99_PRIV_REC_NEXT(9420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9420(choice, ...) METALANG99_PRIV_REC_NEXT(9421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9421(choice, ...) METALANG99_PRIV_REC_NEXT(9422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9422(choice, ...) METALANG99_PRIV_REC_NEXT(9423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9423(choice, ...) METALANG99_PRIV_REC_NEXT(9424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9424(choice, ...) METALANG99_PRIV_REC_NEXT(9425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9425(choice, ...) METALANG99_PRIV_REC_NEXT(9426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9426(choice, ...) METALANG99_PRIV_REC_NEXT(9427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9427(choice, ...) METALANG99_PRIV_REC_NEXT(9428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9428(choice, ...) METALANG99_PRIV_REC_NEXT(9429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9429(choice, ...) METALANG99_PRIV_REC_NEXT(9430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9430(choice, ...) METALANG99_PRIV_REC_NEXT(9431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9431(choice, ...) METALANG99_PRIV_REC_NEXT(9432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9432(choice, ...) METALANG99_PRIV_REC_NEXT(9433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9433(choice, ...) METALANG99_PRIV_REC_NEXT(9434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9434(choice, ...) METALANG99_PRIV_REC_NEXT(9435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9435(choice, ...) METALANG99_PRIV_REC_NEXT(9436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9436(choice, ...) METALANG99_PRIV_REC_NEXT(9437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9437(choice, ...) METALANG99_PRIV_REC_NEXT(9438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9438(choice, ...) METALANG99_PRIV_REC_NEXT(9439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9439(choice, ...) METALANG99_PRIV_REC_NEXT(9440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9440(choice, ...) METALANG99_PRIV_REC_NEXT(9441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9441(choice, ...) METALANG99_PRIV_REC_NEXT(9442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9442(choice, ...) METALANG99_PRIV_REC_NEXT(9443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9443(choice, ...) METALANG99_PRIV_REC_NEXT(9444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9444(choice, ...) METALANG99_PRIV_REC_NEXT(9445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9445(choice, ...) METALANG99_PRIV_REC_NEXT(9446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9446(choice, ...) METALANG99_PRIV_REC_NEXT(9447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9447(choice, ...) METALANG99_PRIV_REC_NEXT(9448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9448(choice, ...) METALANG99_PRIV_REC_NEXT(9449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9449(choice, ...) METALANG99_PRIV_REC_NEXT(9450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9450(choice, ...) METALANG99_PRIV_REC_NEXT(9451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9451(choice, ...) METALANG99_PRIV_REC_NEXT(9452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9452(choice, ...) METALANG99_PRIV_REC_NEXT(9453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9453(choice, ...) METALANG99_PRIV_REC_NEXT(9454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9454(choice, ...) METALANG99_PRIV_REC_NEXT(9455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9455(choice, ...) METALANG99_PRIV_REC_NEXT(9456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9456(choice, ...) METALANG99_PRIV_REC_NEXT(9457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9457(choice, ...) METALANG99_PRIV_REC_NEXT(9458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9458(choice, ...) METALANG99_PRIV_REC_NEXT(9459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9459(choice, ...) METALANG99_PRIV_REC_NEXT(9460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9460(choice, ...) METALANG99_PRIV_REC_NEXT(9461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9461(choice, ...) METALANG99_PRIV_REC_NEXT(9462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9462(choice, ...) METALANG99_PRIV_REC_NEXT(9463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9463(choice, ...) METALANG99_PRIV_REC_NEXT(9464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9464(choice, ...) METALANG99_PRIV_REC_NEXT(9465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9465(choice, ...) METALANG99_PRIV_REC_NEXT(9466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9466(choice, ...) METALANG99_PRIV_REC_NEXT(9467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9467(choice, ...) METALANG99_PRIV_REC_NEXT(9468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9468(choice, ...) METALANG99_PRIV_REC_NEXT(9469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9469(choice, ...) METALANG99_PRIV_REC_NEXT(9470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9470(choice, ...) METALANG99_PRIV_REC_NEXT(9471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9471(choice, ...) METALANG99_PRIV_REC_NEXT(9472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9472(choice, ...) METALANG99_PRIV_REC_NEXT(9473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9473(choice, ...) METALANG99_PRIV_REC_NEXT(9474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9474(choice, ...) METALANG99_PRIV_REC_NEXT(9475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9475(choice, ...) METALANG99_PRIV_REC_NEXT(9476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9476(choice, ...) METALANG99_PRIV_REC_NEXT(9477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9477(choice, ...) METALANG99_PRIV_REC_NEXT(9478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9478(choice, ...) METALANG99_PRIV_REC_NEXT(9479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9479(choice, ...) METALANG99_PRIV_REC_NEXT(9480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9480(choice, ...) METALANG99_PRIV_REC_NEXT(9481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9481(choice, ...) METALANG99_PRIV_REC_NEXT(9482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9482(choice, ...) METALANG99_PRIV_REC_NEXT(9483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9483(choice, ...) METALANG99_PRIV_REC_NEXT(9484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9484(choice, ...) METALANG99_PRIV_REC_NEXT(9485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9485(choice, ...) METALANG99_PRIV_REC_NEXT(9486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9486(choice, ...) METALANG99_PRIV_REC_NEXT(9487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9487(choice, ...) METALANG99_PRIV_REC_NEXT(9488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9488(choice, ...) METALANG99_PRIV_REC_NEXT(9489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9489(choice, ...) METALANG99_PRIV_REC_NEXT(9490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9490(choice, ...) METALANG99_PRIV_REC_NEXT(9491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9491(choice, ...) METALANG99_PRIV_REC_NEXT(9492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9492(choice, ...) METALANG99_PRIV_REC_NEXT(9493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9493(choice, ...) METALANG99_PRIV_REC_NEXT(9494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9494(choice, ...) METALANG99_PRIV_REC_NEXT(9495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9495(choice, ...) METALANG99_PRIV_REC_NEXT(9496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9496(choice, ...) METALANG99_PRIV_REC_NEXT(9497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9497(choice, ...) METALANG99_PRIV_REC_NEXT(9498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9498(choice, ...) METALANG99_PRIV_REC_NEXT(9499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9499(choice, ...) METALANG99_PRIV_REC_NEXT(9500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9500(choice, ...) METALANG99_PRIV_REC_NEXT(9501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9501(choice, ...) METALANG99_PRIV_REC_NEXT(9502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9502(choice, ...) METALANG99_PRIV_REC_NEXT(9503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9503(choice, ...) METALANG99_PRIV_REC_NEXT(9504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9504(choice, ...) METALANG99_PRIV_REC_NEXT(9505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9505(choice, ...) METALANG99_PRIV_REC_NEXT(9506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9506(choice, ...) METALANG99_PRIV_REC_NEXT(9507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9507(choice, ...) METALANG99_PRIV_REC_NEXT(9508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9508(choice, ...) METALANG99_PRIV_REC_NEXT(9509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9509(choice, ...) METALANG99_PRIV_REC_NEXT(9510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9510(choice, ...) METALANG99_PRIV_REC_NEXT(9511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9511(choice, ...) METALANG99_PRIV_REC_NEXT(9512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9512(choice, ...) METALANG99_PRIV_REC_NEXT(9513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9513(choice, ...) METALANG99_PRIV_REC_NEXT(9514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9514(choice, ...) METALANG99_PRIV_REC_NEXT(9515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9515(choice, ...) METALANG99_PRIV_REC_NEXT(9516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9516(choice, ...) METALANG99_PRIV_REC_NEXT(9517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9517(choice, ...) METALANG99_PRIV_REC_NEXT(9518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9518(choice, ...) METALANG99_PRIV_REC_NEXT(9519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9519(choice, ...) METALANG99_PRIV_REC_NEXT(9520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9520(choice, ...) METALANG99_PRIV_REC_NEXT(9521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9521(choice, ...) METALANG99_PRIV_REC_NEXT(9522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9522(choice, ...) METALANG99_PRIV_REC_NEXT(9523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9523(choice, ...) METALANG99_PRIV_REC_NEXT(9524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9524(choice, ...) METALANG99_PRIV_REC_NEXT(9525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9525(choice, ...) METALANG99_PRIV_REC_NEXT(9526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9526(choice, ...) METALANG99_PRIV_REC_NEXT(9527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9527(choice, ...) METALANG99_PRIV_REC_NEXT(9528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9528(choice, ...) METALANG99_PRIV_REC_NEXT(9529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9529(choice, ...) METALANG99_PRIV_REC_NEXT(9530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9530(choice, ...) METALANG99_PRIV_REC_NEXT(9531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9531(choice, ...) METALANG99_PRIV_REC_NEXT(9532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9532(choice, ...) METALANG99_PRIV_REC_NEXT(9533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9533(choice, ...) METALANG99_PRIV_REC_NEXT(9534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9534(choice, ...) METALANG99_PRIV_REC_NEXT(9535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9535(choice, ...) METALANG99_PRIV_REC_NEXT(9536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9536(choice, ...) METALANG99_PRIV_REC_NEXT(9537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9537(choice, ...) METALANG99_PRIV_REC_NEXT(9538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9538(choice, ...) METALANG99_PRIV_REC_NEXT(9539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9539(choice, ...) METALANG99_PRIV_REC_NEXT(9540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9540(choice, ...) METALANG99_PRIV_REC_NEXT(9541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9541(choice, ...) METALANG99_PRIV_REC_NEXT(9542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9542(choice, ...) METALANG99_PRIV_REC_NEXT(9543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9543(choice, ...) METALANG99_PRIV_REC_NEXT(9544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9544(choice, ...) METALANG99_PRIV_REC_NEXT(9545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9545(choice, ...) METALANG99_PRIV_REC_NEXT(9546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9546(choice, ...) METALANG99_PRIV_REC_NEXT(9547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9547(choice, ...) METALANG99_PRIV_REC_NEXT(9548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9548(choice, ...) METALANG99_PRIV_REC_NEXT(9549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9549(choice, ...) METALANG99_PRIV_REC_NEXT(9550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9550(choice, ...) METALANG99_PRIV_REC_NEXT(9551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9551(choice, ...) METALANG99_PRIV_REC_NEXT(9552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9552(choice, ...) METALANG99_PRIV_REC_NEXT(9553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9553(choice, ...) METALANG99_PRIV_REC_NEXT(9554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9554(choice, ...) METALANG99_PRIV_REC_NEXT(9555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9555(choice, ...) METALANG99_PRIV_REC_NEXT(9556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9556(choice, ...) METALANG99_PRIV_REC_NEXT(9557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9557(choice, ...) METALANG99_PRIV_REC_NEXT(9558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9558(choice, ...) METALANG99_PRIV_REC_NEXT(9559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9559(choice, ...) METALANG99_PRIV_REC_NEXT(9560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9560(choice, ...) METALANG99_PRIV_REC_NEXT(9561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9561(choice, ...) METALANG99_PRIV_REC_NEXT(9562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9562(choice, ...) METALANG99_PRIV_REC_NEXT(9563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9563(choice, ...) METALANG99_PRIV_REC_NEXT(9564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9564(choice, ...) METALANG99_PRIV_REC_NEXT(9565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9565(choice, ...) METALANG99_PRIV_REC_NEXT(9566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9566(choice, ...) METALANG99_PRIV_REC_NEXT(9567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9567(choice, ...) METALANG99_PRIV_REC_NEXT(9568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9568(choice, ...) METALANG99_PRIV_REC_NEXT(9569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9569(choice, ...) METALANG99_PRIV_REC_NEXT(9570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9570(choice, ...) METALANG99_PRIV_REC_NEXT(9571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9571(choice, ...) METALANG99_PRIV_REC_NEXT(9572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9572(choice, ...) METALANG99_PRIV_REC_NEXT(9573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9573(choice, ...) METALANG99_PRIV_REC_NEXT(9574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9574(choice, ...) METALANG99_PRIV_REC_NEXT(9575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9575(choice, ...) METALANG99_PRIV_REC_NEXT(9576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9576(choice, ...) METALANG99_PRIV_REC_NEXT(9577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9577(choice, ...) METALANG99_PRIV_REC_NEXT(9578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9578(choice, ...) METALANG99_PRIV_REC_NEXT(9579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9579(choice, ...) METALANG99_PRIV_REC_NEXT(9580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9580(choice, ...) METALANG99_PRIV_REC_NEXT(9581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9581(choice, ...) METALANG99_PRIV_REC_NEXT(9582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9582(choice, ...) METALANG99_PRIV_REC_NEXT(9583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9583(choice, ...) METALANG99_PRIV_REC_NEXT(9584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9584(choice, ...) METALANG99_PRIV_REC_NEXT(9585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9585(choice, ...) METALANG99_PRIV_REC_NEXT(9586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9586(choice, ...) METALANG99_PRIV_REC_NEXT(9587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9587(choice, ...) METALANG99_PRIV_REC_NEXT(9588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9588(choice, ...) METALANG99_PRIV_REC_NEXT(9589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9589(choice, ...) METALANG99_PRIV_REC_NEXT(9590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9590(choice, ...) METALANG99_PRIV_REC_NEXT(9591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9591(choice, ...) METALANG99_PRIV_REC_NEXT(9592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9592(choice, ...) METALANG99_PRIV_REC_NEXT(9593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9593(choice, ...) METALANG99_PRIV_REC_NEXT(9594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9594(choice, ...) METALANG99_PRIV_REC_NEXT(9595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9595(choice, ...) METALANG99_PRIV_REC_NEXT(9596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9596(choice, ...) METALANG99_PRIV_REC_NEXT(9597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9597(choice, ...) METALANG99_PRIV_REC_NEXT(9598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9598(choice, ...) METALANG99_PRIV_REC_NEXT(9599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9599(choice, ...) METALANG99_PRIV_REC_NEXT(9600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9600(choice, ...) METALANG99_PRIV_REC_NEXT(9601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9601(choice, ...) METALANG99_PRIV_REC_NEXT(9602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9602(choice, ...) METALANG99_PRIV_REC_NEXT(9603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9603(choice, ...) METALANG99_PRIV_REC_NEXT(9604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9604(choice, ...) METALANG99_PRIV_REC_NEXT(9605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9605(choice, ...) METALANG99_PRIV_REC_NEXT(9606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9606(choice, ...) METALANG99_PRIV_REC_NEXT(9607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9607(choice, ...) METALANG99_PRIV_REC_NEXT(9608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9608(choice, ...) METALANG99_PRIV_REC_NEXT(9609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9609(choice, ...) METALANG99_PRIV_REC_NEXT(9610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9610(choice, ...) METALANG99_PRIV_REC_NEXT(9611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9611(choice, ...) METALANG99_PRIV_REC_NEXT(9612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9612(choice, ...) METALANG99_PRIV_REC_NEXT(9613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9613(choice, ...) METALANG99_PRIV_REC_NEXT(9614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9614(choice, ...) METALANG99_PRIV_REC_NEXT(9615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9615(choice, ...) METALANG99_PRIV_REC_NEXT(9616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9616(choice, ...) METALANG99_PRIV_REC_NEXT(9617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9617(choice, ...) METALANG99_PRIV_REC_NEXT(9618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9618(choice, ...) METALANG99_PRIV_REC_NEXT(9619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9619(choice, ...) METALANG99_PRIV_REC_NEXT(9620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9620(choice, ...) METALANG99_PRIV_REC_NEXT(9621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9621(choice, ...) METALANG99_PRIV_REC_NEXT(9622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9622(choice, ...) METALANG99_PRIV_REC_NEXT(9623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9623(choice, ...) METALANG99_PRIV_REC_NEXT(9624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9624(choice, ...) METALANG99_PRIV_REC_NEXT(9625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9625(choice, ...) METALANG99_PRIV_REC_NEXT(9626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9626(choice, ...) METALANG99_PRIV_REC_NEXT(9627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9627(choice, ...) METALANG99_PRIV_REC_NEXT(9628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9628(choice, ...) METALANG99_PRIV_REC_NEXT(9629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9629(choice, ...) METALANG99_PRIV_REC_NEXT(9630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9630(choice, ...) METALANG99_PRIV_REC_NEXT(9631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9631(choice, ...) METALANG99_PRIV_REC_NEXT(9632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9632(choice, ...) METALANG99_PRIV_REC_NEXT(9633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9633(choice, ...) METALANG99_PRIV_REC_NEXT(9634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9634(choice, ...) METALANG99_PRIV_REC_NEXT(9635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9635(choice, ...) METALANG99_PRIV_REC_NEXT(9636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9636(choice, ...) METALANG99_PRIV_REC_NEXT(9637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9637(choice, ...) METALANG99_PRIV_REC_NEXT(9638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9638(choice, ...) METALANG99_PRIV_REC_NEXT(9639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9639(choice, ...) METALANG99_PRIV_REC_NEXT(9640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9640(choice, ...) METALANG99_PRIV_REC_NEXT(9641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9641(choice, ...) METALANG99_PRIV_REC_NEXT(9642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9642(choice, ...) METALANG99_PRIV_REC_NEXT(9643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9643(choice, ...) METALANG99_PRIV_REC_NEXT(9644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9644(choice, ...) METALANG99_PRIV_REC_NEXT(9645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9645(choice, ...) METALANG99_PRIV_REC_NEXT(9646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9646(choice, ...) METALANG99_PRIV_REC_NEXT(9647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9647(choice, ...) METALANG99_PRIV_REC_NEXT(9648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9648(choice, ...) METALANG99_PRIV_REC_NEXT(9649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9649(choice, ...) METALANG99_PRIV_REC_NEXT(9650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9650(choice, ...) METALANG99_PRIV_REC_NEXT(9651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9651(choice, ...) METALANG99_PRIV_REC_NEXT(9652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9652(choice, ...) METALANG99_PRIV_REC_NEXT(9653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9653(choice, ...) METALANG99_PRIV_REC_NEXT(9654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9654(choice, ...) METALANG99_PRIV_REC_NEXT(9655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9655(choice, ...) METALANG99_PRIV_REC_NEXT(9656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9656(choice, ...) METALANG99_PRIV_REC_NEXT(9657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9657(choice, ...) METALANG99_PRIV_REC_NEXT(9658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9658(choice, ...) METALANG99_PRIV_REC_NEXT(9659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9659(choice, ...) METALANG99_PRIV_REC_NEXT(9660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9660(choice, ...) METALANG99_PRIV_REC_NEXT(9661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9661(choice, ...) METALANG99_PRIV_REC_NEXT(9662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9662(choice, ...) METALANG99_PRIV_REC_NEXT(9663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9663(choice, ...) METALANG99_PRIV_REC_NEXT(9664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9664(choice, ...) METALANG99_PRIV_REC_NEXT(9665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9665(choice, ...) METALANG99_PRIV_REC_NEXT(9666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9666(choice, ...) METALANG99_PRIV_REC_NEXT(9667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9667(choice, ...) METALANG99_PRIV_REC_NEXT(9668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9668(choice, ...) METALANG99_PRIV_REC_NEXT(9669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9669(choice, ...) METALANG99_PRIV_REC_NEXT(9670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9670(choice, ...) METALANG99_PRIV_REC_NEXT(9671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9671(choice, ...) METALANG99_PRIV_REC_NEXT(9672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9672(choice, ...) METALANG99_PRIV_REC_NEXT(9673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9673(choice, ...) METALANG99_PRIV_REC_NEXT(9674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9674(choice, ...) METALANG99_PRIV_REC_NEXT(9675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9675(choice, ...) METALANG99_PRIV_REC_NEXT(9676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9676(choice, ...) METALANG99_PRIV_REC_NEXT(9677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9677(choice, ...) METALANG99_PRIV_REC_NEXT(9678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9678(choice, ...) METALANG99_PRIV_REC_NEXT(9679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9679(choice, ...) METALANG99_PRIV_REC_NEXT(9680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9680(choice, ...) METALANG99_PRIV_REC_NEXT(9681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9681(choice, ...) METALANG99_PRIV_REC_NEXT(9682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9682(choice, ...) METALANG99_PRIV_REC_NEXT(9683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9683(choice, ...) METALANG99_PRIV_REC_NEXT(9684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9684(choice, ...) METALANG99_PRIV_REC_NEXT(9685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9685(choice, ...) METALANG99_PRIV_REC_NEXT(9686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9686(choice, ...) METALANG99_PRIV_REC_NEXT(9687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9687(choice, ...) METALANG99_PRIV_REC_NEXT(9688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9688(choice, ...) METALANG99_PRIV_REC_NEXT(9689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9689(choice, ...) METALANG99_PRIV_REC_NEXT(9690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9690(choice, ...) METALANG99_PRIV_REC_NEXT(9691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9691(choice, ...) METALANG99_PRIV_REC_NEXT(9692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9692(choice, ...) METALANG99_PRIV_REC_NEXT(9693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9693(choice, ...) METALANG99_PRIV_REC_NEXT(9694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9694(choice, ...) METALANG99_PRIV_REC_NEXT(9695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9695(choice, ...) METALANG99_PRIV_REC_NEXT(9696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9696(choice, ...) METALANG99_PRIV_REC_NEXT(9697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9697(choice, ...) METALANG99_PRIV_REC_NEXT(9698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9698(choice, ...) METALANG99_PRIV_REC_NEXT(9699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9699(choice, ...) METALANG99_PRIV_REC_NEXT(9700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9700(choice, ...) METALANG99_PRIV_REC_NEXT(9701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9701(choice, ...) METALANG99_PRIV_REC_NEXT(9702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9702(choice, ...) METALANG99_PRIV_REC_NEXT(9703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9703(choice, ...) METALANG99_PRIV_REC_NEXT(9704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9704(choice, ...) METALANG99_PRIV_REC_NEXT(9705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9705(choice, ...) METALANG99_PRIV_REC_NEXT(9706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9706(choice, ...) METALANG99_PRIV_REC_NEXT(9707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9707(choice, ...) METALANG99_PRIV_REC_NEXT(9708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9708(choice, ...) METALANG99_PRIV_REC_NEXT(9709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9709(choice, ...) METALANG99_PRIV_REC_NEXT(9710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9710(choice, ...) METALANG99_PRIV_REC_NEXT(9711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9711(choice, ...) METALANG99_PRIV_REC_NEXT(9712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9712(choice, ...) METALANG99_PRIV_REC_NEXT(9713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9713(choice, ...) METALANG99_PRIV_REC_NEXT(9714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9714(choice, ...) METALANG99_PRIV_REC_NEXT(9715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9715(choice, ...) METALANG99_PRIV_REC_NEXT(9716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9716(choice, ...) METALANG99_PRIV_REC_NEXT(9717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9717(choice, ...) METALANG99_PRIV_REC_NEXT(9718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9718(choice, ...) METALANG99_PRIV_REC_NEXT(9719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9719(choice, ...) METALANG99_PRIV_REC_NEXT(9720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9720(choice, ...) METALANG99_PRIV_REC_NEXT(9721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9721(choice, ...) METALANG99_PRIV_REC_NEXT(9722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9722(choice, ...) METALANG99_PRIV_REC_NEXT(9723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9723(choice, ...) METALANG99_PRIV_REC_NEXT(9724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9724(choice, ...) METALANG99_PRIV_REC_NEXT(9725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9725(choice, ...) METALANG99_PRIV_REC_NEXT(9726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9726(choice, ...) METALANG99_PRIV_REC_NEXT(9727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9727(choice, ...) METALANG99_PRIV_REC_NEXT(9728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9728(choice, ...) METALANG99_PRIV_REC_NEXT(9729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9729(choice, ...) METALANG99_PRIV_REC_NEXT(9730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9730(choice, ...) METALANG99_PRIV_REC_NEXT(9731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9731(choice, ...) METALANG99_PRIV_REC_NEXT(9732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9732(choice, ...) METALANG99_PRIV_REC_NEXT(9733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9733(choice, ...) METALANG99_PRIV_REC_NEXT(9734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9734(choice, ...) METALANG99_PRIV_REC_NEXT(9735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9735(choice, ...) METALANG99_PRIV_REC_NEXT(9736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9736(choice, ...) METALANG99_PRIV_REC_NEXT(9737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9737(choice, ...) METALANG99_PRIV_REC_NEXT(9738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9738(choice, ...) METALANG99_PRIV_REC_NEXT(9739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9739(choice, ...) METALANG99_PRIV_REC_NEXT(9740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9740(choice, ...) METALANG99_PRIV_REC_NEXT(9741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9741(choice, ...) METALANG99_PRIV_REC_NEXT(9742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9742(choice, ...) METALANG99_PRIV_REC_NEXT(9743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9743(choice, ...) METALANG99_PRIV_REC_NEXT(9744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9744(choice, ...) METALANG99_PRIV_REC_NEXT(9745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9745(choice, ...) METALANG99_PRIV_REC_NEXT(9746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9746(choice, ...) METALANG99_PRIV_REC_NEXT(9747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9747(choice, ...) METALANG99_PRIV_REC_NEXT(9748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9748(choice, ...) METALANG99_PRIV_REC_NEXT(9749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9749(choice, ...) METALANG99_PRIV_REC_NEXT(9750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9750(choice, ...) METALANG99_PRIV_REC_NEXT(9751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9751(choice, ...) METALANG99_PRIV_REC_NEXT(9752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9752(choice, ...) METALANG99_PRIV_REC_NEXT(9753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9753(choice, ...) METALANG99_PRIV_REC_NEXT(9754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9754(choice, ...) METALANG99_PRIV_REC_NEXT(9755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9755(choice, ...) METALANG99_PRIV_REC_NEXT(9756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9756(choice, ...) METALANG99_PRIV_REC_NEXT(9757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9757(choice, ...) METALANG99_PRIV_REC_NEXT(9758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9758(choice, ...) METALANG99_PRIV_REC_NEXT(9759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9759(choice, ...) METALANG99_PRIV_REC_NEXT(9760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9760(choice, ...) METALANG99_PRIV_REC_NEXT(9761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9761(choice, ...) METALANG99_PRIV_REC_NEXT(9762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9762(choice, ...) METALANG99_PRIV_REC_NEXT(9763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9763(choice, ...) METALANG99_PRIV_REC_NEXT(9764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9764(choice, ...) METALANG99_PRIV_REC_NEXT(9765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9765(choice, ...) METALANG99_PRIV_REC_NEXT(9766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9766(choice, ...) METALANG99_PRIV_REC_NEXT(9767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9767(choice, ...) METALANG99_PRIV_REC_NEXT(9768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9768(choice, ...) METALANG99_PRIV_REC_NEXT(9769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9769(choice, ...) METALANG99_PRIV_REC_NEXT(9770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9770(choice, ...) METALANG99_PRIV_REC_NEXT(9771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9771(choice, ...) METALANG99_PRIV_REC_NEXT(9772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9772(choice, ...) METALANG99_PRIV_REC_NEXT(9773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9773(choice, ...) METALANG99_PRIV_REC_NEXT(9774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9774(choice, ...) METALANG99_PRIV_REC_NEXT(9775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9775(choice, ...) METALANG99_PRIV_REC_NEXT(9776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9776(choice, ...) METALANG99_PRIV_REC_NEXT(9777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9777(choice, ...) METALANG99_PRIV_REC_NEXT(9778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9778(choice, ...) METALANG99_PRIV_REC_NEXT(9779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9779(choice, ...) METALANG99_PRIV_REC_NEXT(9780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9780(choice, ...) METALANG99_PRIV_REC_NEXT(9781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9781(choice, ...) METALANG99_PRIV_REC_NEXT(9782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9782(choice, ...) METALANG99_PRIV_REC_NEXT(9783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9783(choice, ...) METALANG99_PRIV_REC_NEXT(9784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9784(choice, ...) METALANG99_PRIV_REC_NEXT(9785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9785(choice, ...) METALANG99_PRIV_REC_NEXT(9786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9786(choice, ...) METALANG99_PRIV_REC_NEXT(9787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9787(choice, ...) METALANG99_PRIV_REC_NEXT(9788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9788(choice, ...) METALANG99_PRIV_REC_NEXT(9789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9789(choice, ...) METALANG99_PRIV_REC_NEXT(9790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9790(choice, ...) METALANG99_PRIV_REC_NEXT(9791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9791(choice, ...) METALANG99_PRIV_REC_NEXT(9792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9792(choice, ...) METALANG99_PRIV_REC_NEXT(9793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9793(choice, ...) METALANG99_PRIV_REC_NEXT(9794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9794(choice, ...) METALANG99_PRIV_REC_NEXT(9795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9795(choice, ...) METALANG99_PRIV_REC_NEXT(9796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9796(choice, ...) METALANG99_PRIV_REC_NEXT(9797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9797(choice, ...) METALANG99_PRIV_REC_NEXT(9798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9798(choice, ...) METALANG99_PRIV_REC_NEXT(9799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9799(choice, ...) METALANG99_PRIV_REC_NEXT(9800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9800(choice, ...) METALANG99_PRIV_REC_NEXT(9801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9801(choice, ...) METALANG99_PRIV_REC_NEXT(9802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9802(choice, ...) METALANG99_PRIV_REC_NEXT(9803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9803(choice, ...) METALANG99_PRIV_REC_NEXT(9804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9804(choice, ...) METALANG99_PRIV_REC_NEXT(9805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9805(choice, ...) METALANG99_PRIV_REC_NEXT(9806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9806(choice, ...) METALANG99_PRIV_REC_NEXT(9807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9807(choice, ...) METALANG99_PRIV_REC_NEXT(9808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9808(choice, ...) METALANG99_PRIV_REC_NEXT(9809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9809(choice, ...) METALANG99_PRIV_REC_NEXT(9810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9810(choice, ...) METALANG99_PRIV_REC_NEXT(9811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9811(choice, ...) METALANG99_PRIV_REC_NEXT(9812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9812(choice, ...) METALANG99_PRIV_REC_NEXT(9813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9813(choice, ...) METALANG99_PRIV_REC_NEXT(9814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9814(choice, ...) METALANG99_PRIV_REC_NEXT(9815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9815(choice, ...) METALANG99_PRIV_REC_NEXT(9816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9816(choice, ...) METALANG99_PRIV_REC_NEXT(9817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9817(choice, ...) METALANG99_PRIV_REC_NEXT(9818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9818(choice, ...) METALANG99_PRIV_REC_NEXT(9819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9819(choice, ...) METALANG99_PRIV_REC_NEXT(9820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9820(choice, ...) METALANG99_PRIV_REC_NEXT(9821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9821(choice, ...) METALANG99_PRIV_REC_NEXT(9822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9822(choice, ...) METALANG99_PRIV_REC_NEXT(9823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9823(choice, ...) METALANG99_PRIV_REC_NEXT(9824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9824(choice, ...) METALANG99_PRIV_REC_NEXT(9825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9825(choice, ...) METALANG99_PRIV_REC_NEXT(9826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9826(choice, ...) METALANG99_PRIV_REC_NEXT(9827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9827(choice, ...) METALANG99_PRIV_REC_NEXT(9828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9828(choice, ...) METALANG99_PRIV_REC_NEXT(9829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9829(choice, ...) METALANG99_PRIV_REC_NEXT(9830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9830(choice, ...) METALANG99_PRIV_REC_NEXT(9831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9831(choice, ...) METALANG99_PRIV_REC_NEXT(9832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9832(choice, ...) METALANG99_PRIV_REC_NEXT(9833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9833(choice, ...) METALANG99_PRIV_REC_NEXT(9834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9834(choice, ...) METALANG99_PRIV_REC_NEXT(9835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9835(choice, ...) METALANG99_PRIV_REC_NEXT(9836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9836(choice, ...) METALANG99_PRIV_REC_NEXT(9837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9837(choice, ...) METALANG99_PRIV_REC_NEXT(9838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9838(choice, ...) METALANG99_PRIV_REC_NEXT(9839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9839(choice, ...) METALANG99_PRIV_REC_NEXT(9840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9840(choice, ...) METALANG99_PRIV_REC_NEXT(9841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9841(choice, ...) METALANG99_PRIV_REC_NEXT(9842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9842(choice, ...) METALANG99_PRIV_REC_NEXT(9843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9843(choice, ...) METALANG99_PRIV_REC_NEXT(9844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9844(choice, ...) METALANG99_PRIV_REC_NEXT(9845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9845(choice, ...) METALANG99_PRIV_REC_NEXT(9846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9846(choice, ...) METALANG99_PRIV_REC_NEXT(9847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9847(choice, ...) METALANG99_PRIV_REC_NEXT(9848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9848(choice, ...) METALANG99_PRIV_REC_NEXT(9849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9849(choice, ...) METALANG99_PRIV_REC_NEXT(9850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9850(choice, ...) METALANG99_PRIV_REC_NEXT(9851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9851(choice, ...) METALANG99_PRIV_REC_NEXT(9852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9852(choice, ...) METALANG99_PRIV_REC_NEXT(9853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9853(choice, ...) METALANG99_PRIV_REC_NEXT(9854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9854(choice, ...) METALANG99_PRIV_REC_NEXT(9855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9855(choice, ...) METALANG99_PRIV_REC_NEXT(9856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9856(choice, ...) METALANG99_PRIV_REC_NEXT(9857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9857(choice, ...) METALANG99_PRIV_REC_NEXT(9858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9858(choice, ...) METALANG99_PRIV_REC_NEXT(9859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9859(choice, ...) METALANG99_PRIV_REC_NEXT(9860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9860(choice, ...) METALANG99_PRIV_REC_NEXT(9861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9861(choice, ...) METALANG99_PRIV_REC_NEXT(9862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9862(choice, ...) METALANG99_PRIV_REC_NEXT(9863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9863(choice, ...) METALANG99_PRIV_REC_NEXT(9864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9864(choice, ...) METALANG99_PRIV_REC_NEXT(9865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9865(choice, ...) METALANG99_PRIV_REC_NEXT(9866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9866(choice, ...) METALANG99_PRIV_REC_NEXT(9867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9867(choice, ...) METALANG99_PRIV_REC_NEXT(9868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9868(choice, ...) METALANG99_PRIV_REC_NEXT(9869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9869(choice, ...) METALANG99_PRIV_REC_NEXT(9870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9870(choice, ...) METALANG99_PRIV_REC_NEXT(9871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9871(choice, ...) METALANG99_PRIV_REC_NEXT(9872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9872(choice, ...) METALANG99_PRIV_REC_NEXT(9873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9873(choice, ...) METALANG99_PRIV_REC_NEXT(9874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9874(choice, ...) METALANG99_PRIV_REC_NEXT(9875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9875(choice, ...) METALANG99_PRIV_REC_NEXT(9876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9876(choice, ...) METALANG99_PRIV_REC_NEXT(9877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9877(choice, ...) METALANG99_PRIV_REC_NEXT(9878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9878(choice, ...) METALANG99_PRIV_REC_NEXT(9879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9879(choice, ...) METALANG99_PRIV_REC_NEXT(9880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9880(choice, ...) METALANG99_PRIV_REC_NEXT(9881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9881(choice, ...) METALANG99_PRIV_REC_NEXT(9882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9882(choice, ...) METALANG99_PRIV_REC_NEXT(9883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9883(choice, ...) METALANG99_PRIV_REC_NEXT(9884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9884(choice, ...) METALANG99_PRIV_REC_NEXT(9885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9885(choice, ...) METALANG99_PRIV_REC_NEXT(9886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9886(choice, ...) METALANG99_PRIV_REC_NEXT(9887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9887(choice, ...) METALANG99_PRIV_REC_NEXT(9888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9888(choice, ...) METALANG99_PRIV_REC_NEXT(9889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9889(choice, ...) METALANG99_PRIV_REC_NEXT(9890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9890(choice, ...) METALANG99_PRIV_REC_NEXT(9891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9891(choice, ...) METALANG99_PRIV_REC_NEXT(9892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9892(choice, ...) METALANG99_PRIV_REC_NEXT(9893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9893(choice, ...) METALANG99_PRIV_REC_NEXT(9894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9894(choice, ...) METALANG99_PRIV_REC_NEXT(9895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9895(choice, ...) METALANG99_PRIV_REC_NEXT(9896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9896(choice, ...) METALANG99_PRIV_REC_NEXT(9897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9897(choice, ...) METALANG99_PRIV_REC_NEXT(9898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9898(choice, ...) METALANG99_PRIV_REC_NEXT(9899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9899(choice, ...) METALANG99_PRIV_REC_NEXT(9900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9900(choice, ...) METALANG99_PRIV_REC_NEXT(9901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9901(choice, ...) METALANG99_PRIV_REC_NEXT(9902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9902(choice, ...) METALANG99_PRIV_REC_NEXT(9903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9903(choice, ...) METALANG99_PRIV_REC_NEXT(9904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9904(choice, ...) METALANG99_PRIV_REC_NEXT(9905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9905(choice, ...) METALANG99_PRIV_REC_NEXT(9906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9906(choice, ...) METALANG99_PRIV_REC_NEXT(9907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9907(choice, ...) METALANG99_PRIV_REC_NEXT(9908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9908(choice, ...) METALANG99_PRIV_REC_NEXT(9909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9909(choice, ...) METALANG99_PRIV_REC_NEXT(9910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9910(choice, ...) METALANG99_PRIV_REC_NEXT(9911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9911(choice, ...) METALANG99_PRIV_REC_NEXT(9912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9912(choice, ...) METALANG99_PRIV_REC_NEXT(9913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9913(choice, ...) METALANG99_PRIV_REC_NEXT(9914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9914(choice, ...) METALANG99_PRIV_REC_NEXT(9915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9915(choice, ...) METALANG99_PRIV_REC_NEXT(9916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9916(choice, ...) METALANG99_PRIV_REC_NEXT(9917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9917(choice, ...) METALANG99_PRIV_REC_NEXT(9918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9918(choice, ...) METALANG99_PRIV_REC_NEXT(9919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9919(choice, ...) METALANG99_PRIV_REC_NEXT(9920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9920(choice, ...) METALANG99_PRIV_REC_NEXT(9921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9921(choice, ...) METALANG99_PRIV_REC_NEXT(9922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9922(choice, ...) METALANG99_PRIV_REC_NEXT(9923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9923(choice, ...) METALANG99_PRIV_REC_NEXT(9924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9924(choice, ...) METALANG99_PRIV_REC_NEXT(9925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9925(choice, ...) METALANG99_PRIV_REC_NEXT(9926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9926(choice, ...) METALANG99_PRIV_REC_NEXT(9927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9927(choice, ...) METALANG99_PRIV_REC_NEXT(9928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9928(choice, ...) METALANG99_PRIV_REC_NEXT(9929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9929(choice, ...) METALANG99_PRIV_REC_NEXT(9930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9930(choice, ...) METALANG99_PRIV_REC_NEXT(9931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9931(choice, ...) METALANG99_PRIV_REC_NEXT(9932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9932(choice, ...) METALANG99_PRIV_REC_NEXT(9933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9933(choice, ...) METALANG99_PRIV_REC_NEXT(9934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9934(choice, ...) METALANG99_PRIV_REC_NEXT(9935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9935(choice, ...) METALANG99_PRIV_REC_NEXT(9936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9936(choice, ...) METALANG99_PRIV_REC_NEXT(9937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9937(choice, ...) METALANG99_PRIV_REC_NEXT(9938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9938(choice, ...) METALANG99_PRIV_REC_NEXT(9939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9939(choice, ...) METALANG99_PRIV_REC_NEXT(9940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9940(choice, ...) METALANG99_PRIV_REC_NEXT(9941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9941(choice, ...) METALANG99_PRIV_REC_NEXT(9942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9942(choice, ...) METALANG99_PRIV_REC_NEXT(9943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9943(choice, ...) METALANG99_PRIV_REC_NEXT(9944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9944(choice, ...) METALANG99_PRIV_REC_NEXT(9945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9945(choice, ...) METALANG99_PRIV_REC_NEXT(9946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9946(choice, ...) METALANG99_PRIV_REC_NEXT(9947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9947(choice, ...) METALANG99_PRIV_REC_NEXT(9948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9948(choice, ...) METALANG99_PRIV_REC_NEXT(9949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9949(choice, ...) METALANG99_PRIV_REC_NEXT(9950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9950(choice, ...) METALANG99_PRIV_REC_NEXT(9951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9951(choice, ...) METALANG99_PRIV_REC_NEXT(9952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9952(choice, ...) METALANG99_PRIV_REC_NEXT(9953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9953(choice, ...) METALANG99_PRIV_REC_NEXT(9954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9954(choice, ...) METALANG99_PRIV_REC_NEXT(9955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9955(choice, ...) METALANG99_PRIV_REC_NEXT(9956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9956(choice, ...) METALANG99_PRIV_REC_NEXT(9957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9957(choice, ...) METALANG99_PRIV_REC_NEXT(9958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9958(choice, ...) METALANG99_PRIV_REC_NEXT(9959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9959(choice, ...) METALANG99_PRIV_REC_NEXT(9960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9960(choice, ...) METALANG99_PRIV_REC_NEXT(9961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9961(choice, ...) METALANG99_PRIV_REC_NEXT(9962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9962(choice, ...) METALANG99_PRIV_REC_NEXT(9963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9963(choice, ...) METALANG99_PRIV_REC_NEXT(9964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9964(choice, ...) METALANG99_PRIV_REC_NEXT(9965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9965(choice, ...) METALANG99_PRIV_REC_NEXT(9966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9966(choice, ...) METALANG99_PRIV_REC_NEXT(9967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9967(choice, ...) METALANG99_PRIV_REC_NEXT(9968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9968(choice, ...) METALANG99_PRIV_REC_NEXT(9969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9969(choice, ...) METALANG99_PRIV_REC_NEXT(9970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9970(choice, ...) METALANG99_PRIV_REC_NEXT(9971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9971(choice, ...) METALANG99_PRIV_REC_NEXT(9972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9972(choice, ...) METALANG99_PRIV_REC_NEXT(9973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9973(choice, ...) METALANG99_PRIV_REC_NEXT(9974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9974(choice, ...) METALANG99_PRIV_REC_NEXT(9975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9975(choice, ...) METALANG99_PRIV_REC_NEXT(9976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9976(choice, ...) METALANG99_PRIV_REC_NEXT(9977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9977(choice, ...) METALANG99_PRIV_REC_NEXT(9978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9978(choice, ...) METALANG99_PRIV_REC_NEXT(9979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9979(choice, ...) METALANG99_PRIV_REC_NEXT(9980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9980(choice, ...) METALANG99_PRIV_REC_NEXT(9981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9981(choice, ...) METALANG99_PRIV_REC_NEXT(9982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9982(choice, ...) METALANG99_PRIV_REC_NEXT(9983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9983(choice, ...) METALANG99_PRIV_REC_NEXT(9984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9984(choice, ...) METALANG99_PRIV_REC_NEXT(9985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9985(choice, ...) METALANG99_PRIV_REC_NEXT(9986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9986(choice, ...) METALANG99_PRIV_REC_NEXT(9987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9987(choice, ...) METALANG99_PRIV_REC_NEXT(9988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9988(choice, ...) METALANG99_PRIV_REC_NEXT(9989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9989(choice, ...) METALANG99_PRIV_REC_NEXT(9990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9990(choice, ...) METALANG99_PRIV_REC_NEXT(9991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9991(choice, ...) METALANG99_PRIV_REC_NEXT(9992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9992(choice, ...) METALANG99_PRIV_REC_NEXT(9993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9993(choice, ...) METALANG99_PRIV_REC_NEXT(9994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9994(choice, ...) METALANG99_PRIV_REC_NEXT(9995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9995(choice, ...) METALANG99_PRIV_REC_NEXT(9996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9996(choice, ...) METALANG99_PRIV_REC_NEXT(9997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9997(choice, ...) METALANG99_PRIV_REC_NEXT(9998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9998(choice, ...) METALANG99_PRIV_REC_NEXT(9999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_9999(choice, ...) METALANG99_PRIV_REC_NEXT(10000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10000(choice, ...) METALANG99_PRIV_REC_NEXT(10001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10001(choice, ...) METALANG99_PRIV_REC_NEXT(10002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10002(choice, ...) METALANG99_PRIV_REC_NEXT(10003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10003(choice, ...) METALANG99_PRIV_REC_NEXT(10004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10004(choice, ...) METALANG99_PRIV_REC_NEXT(10005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10005(choice, ...) METALANG99_PRIV_REC_NEXT(10006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10006(choice, ...) METALANG99_PRIV_REC_NEXT(10007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10007(choice, ...) METALANG99_PRIV_REC_NEXT(10008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10008(choice, ...) METALANG99_PRIV_REC_NEXT(10009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10009(choice, ...) METALANG99_PRIV_REC_NEXT(10010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10010(choice, ...) METALANG99_PRIV_REC_NEXT(10011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10011(choice, ...) METALANG99_PRIV_REC_NEXT(10012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10012(choice, ...) METALANG99_PRIV_REC_NEXT(10013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10013(choice, ...) METALANG99_PRIV_REC_NEXT(10014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10014(choice, ...) METALANG99_PRIV_REC_NEXT(10015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10015(choice, ...) METALANG99_PRIV_REC_NEXT(10016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10016(choice, ...) METALANG99_PRIV_REC_NEXT(10017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10017(choice, ...) METALANG99_PRIV_REC_NEXT(10018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10018(choice, ...) METALANG99_PRIV_REC_NEXT(10019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10019(choice, ...) METALANG99_PRIV_REC_NEXT(10020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10020(choice, ...) METALANG99_PRIV_REC_NEXT(10021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10021(choice, ...) METALANG99_PRIV_REC_NEXT(10022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10022(choice, ...) METALANG99_PRIV_REC_NEXT(10023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10023(choice, ...) METALANG99_PRIV_REC_NEXT(10024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10024(choice, ...) METALANG99_PRIV_REC_NEXT(10025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10025(choice, ...) METALANG99_PRIV_REC_NEXT(10026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10026(choice, ...) METALANG99_PRIV_REC_NEXT(10027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10027(choice, ...) METALANG99_PRIV_REC_NEXT(10028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10028(choice, ...) METALANG99_PRIV_REC_NEXT(10029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10029(choice, ...) METALANG99_PRIV_REC_NEXT(10030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10030(choice, ...) METALANG99_PRIV_REC_NEXT(10031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10031(choice, ...) METALANG99_PRIV_REC_NEXT(10032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10032(choice, ...) METALANG99_PRIV_REC_NEXT(10033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10033(choice, ...) METALANG99_PRIV_REC_NEXT(10034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10034(choice, ...) METALANG99_PRIV_REC_NEXT(10035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10035(choice, ...) METALANG99_PRIV_REC_NEXT(10036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10036(choice, ...) METALANG99_PRIV_REC_NEXT(10037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10037(choice, ...) METALANG99_PRIV_REC_NEXT(10038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10038(choice, ...) METALANG99_PRIV_REC_NEXT(10039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10039(choice, ...) METALANG99_PRIV_REC_NEXT(10040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10040(choice, ...) METALANG99_PRIV_REC_NEXT(10041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10041(choice, ...) METALANG99_PRIV_REC_NEXT(10042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10042(choice, ...) METALANG99_PRIV_REC_NEXT(10043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10043(choice, ...) METALANG99_PRIV_REC_NEXT(10044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10044(choice, ...) METALANG99_PRIV_REC_NEXT(10045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10045(choice, ...) METALANG99_PRIV_REC_NEXT(10046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10046(choice, ...) METALANG99_PRIV_REC_NEXT(10047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10047(choice, ...) METALANG99_PRIV_REC_NEXT(10048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10048(choice, ...) METALANG99_PRIV_REC_NEXT(10049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10049(choice, ...) METALANG99_PRIV_REC_NEXT(10050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10050(choice, ...) METALANG99_PRIV_REC_NEXT(10051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10051(choice, ...) METALANG99_PRIV_REC_NEXT(10052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10052(choice, ...) METALANG99_PRIV_REC_NEXT(10053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10053(choice, ...) METALANG99_PRIV_REC_NEXT(10054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10054(choice, ...) METALANG99_PRIV_REC_NEXT(10055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10055(choice, ...) METALANG99_PRIV_REC_NEXT(10056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10056(choice, ...) METALANG99_PRIV_REC_NEXT(10057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10057(choice, ...) METALANG99_PRIV_REC_NEXT(10058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10058(choice, ...) METALANG99_PRIV_REC_NEXT(10059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10059(choice, ...) METALANG99_PRIV_REC_NEXT(10060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10060(choice, ...) METALANG99_PRIV_REC_NEXT(10061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10061(choice, ...) METALANG99_PRIV_REC_NEXT(10062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10062(choice, ...) METALANG99_PRIV_REC_NEXT(10063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10063(choice, ...) METALANG99_PRIV_REC_NEXT(10064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10064(choice, ...) METALANG99_PRIV_REC_NEXT(10065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10065(choice, ...) METALANG99_PRIV_REC_NEXT(10066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10066(choice, ...) METALANG99_PRIV_REC_NEXT(10067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10067(choice, ...) METALANG99_PRIV_REC_NEXT(10068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10068(choice, ...) METALANG99_PRIV_REC_NEXT(10069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10069(choice, ...) METALANG99_PRIV_REC_NEXT(10070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10070(choice, ...) METALANG99_PRIV_REC_NEXT(10071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10071(choice, ...) METALANG99_PRIV_REC_NEXT(10072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10072(choice, ...) METALANG99_PRIV_REC_NEXT(10073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10073(choice, ...) METALANG99_PRIV_REC_NEXT(10074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10074(choice, ...) METALANG99_PRIV_REC_NEXT(10075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10075(choice, ...) METALANG99_PRIV_REC_NEXT(10076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10076(choice, ...) METALANG99_PRIV_REC_NEXT(10077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10077(choice, ...) METALANG99_PRIV_REC_NEXT(10078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10078(choice, ...) METALANG99_PRIV_REC_NEXT(10079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10079(choice, ...) METALANG99_PRIV_REC_NEXT(10080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10080(choice, ...) METALANG99_PRIV_REC_NEXT(10081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10081(choice, ...) METALANG99_PRIV_REC_NEXT(10082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10082(choice, ...) METALANG99_PRIV_REC_NEXT(10083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10083(choice, ...) METALANG99_PRIV_REC_NEXT(10084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10084(choice, ...) METALANG99_PRIV_REC_NEXT(10085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10085(choice, ...) METALANG99_PRIV_REC_NEXT(10086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10086(choice, ...) METALANG99_PRIV_REC_NEXT(10087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10087(choice, ...) METALANG99_PRIV_REC_NEXT(10088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10088(choice, ...) METALANG99_PRIV_REC_NEXT(10089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10089(choice, ...) METALANG99_PRIV_REC_NEXT(10090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10090(choice, ...) METALANG99_PRIV_REC_NEXT(10091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10091(choice, ...) METALANG99_PRIV_REC_NEXT(10092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10092(choice, ...) METALANG99_PRIV_REC_NEXT(10093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10093(choice, ...) METALANG99_PRIV_REC_NEXT(10094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10094(choice, ...) METALANG99_PRIV_REC_NEXT(10095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10095(choice, ...) METALANG99_PRIV_REC_NEXT(10096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10096(choice, ...) METALANG99_PRIV_REC_NEXT(10097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10097(choice, ...) METALANG99_PRIV_REC_NEXT(10098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10098(choice, ...) METALANG99_PRIV_REC_NEXT(10099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10099(choice, ...) METALANG99_PRIV_REC_NEXT(10100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10100(choice, ...) METALANG99_PRIV_REC_NEXT(10101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10101(choice, ...) METALANG99_PRIV_REC_NEXT(10102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10102(choice, ...) METALANG99_PRIV_REC_NEXT(10103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10103(choice, ...) METALANG99_PRIV_REC_NEXT(10104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10104(choice, ...) METALANG99_PRIV_REC_NEXT(10105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10105(choice, ...) METALANG99_PRIV_REC_NEXT(10106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10106(choice, ...) METALANG99_PRIV_REC_NEXT(10107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10107(choice, ...) METALANG99_PRIV_REC_NEXT(10108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10108(choice, ...) METALANG99_PRIV_REC_NEXT(10109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10109(choice, ...) METALANG99_PRIV_REC_NEXT(10110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10110(choice, ...) METALANG99_PRIV_REC_NEXT(10111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10111(choice, ...) METALANG99_PRIV_REC_NEXT(10112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10112(choice, ...) METALANG99_PRIV_REC_NEXT(10113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10113(choice, ...) METALANG99_PRIV_REC_NEXT(10114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10114(choice, ...) METALANG99_PRIV_REC_NEXT(10115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10115(choice, ...) METALANG99_PRIV_REC_NEXT(10116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10116(choice, ...) METALANG99_PRIV_REC_NEXT(10117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10117(choice, ...) METALANG99_PRIV_REC_NEXT(10118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10118(choice, ...) METALANG99_PRIV_REC_NEXT(10119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10119(choice, ...) METALANG99_PRIV_REC_NEXT(10120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10120(choice, ...) METALANG99_PRIV_REC_NEXT(10121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10121(choice, ...) METALANG99_PRIV_REC_NEXT(10122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10122(choice, ...) METALANG99_PRIV_REC_NEXT(10123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10123(choice, ...) METALANG99_PRIV_REC_NEXT(10124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10124(choice, ...) METALANG99_PRIV_REC_NEXT(10125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10125(choice, ...) METALANG99_PRIV_REC_NEXT(10126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10126(choice, ...) METALANG99_PRIV_REC_NEXT(10127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10127(choice, ...) METALANG99_PRIV_REC_NEXT(10128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10128(choice, ...) METALANG99_PRIV_REC_NEXT(10129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10129(choice, ...) METALANG99_PRIV_REC_NEXT(10130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10130(choice, ...) METALANG99_PRIV_REC_NEXT(10131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10131(choice, ...) METALANG99_PRIV_REC_NEXT(10132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10132(choice, ...) METALANG99_PRIV_REC_NEXT(10133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10133(choice, ...) METALANG99_PRIV_REC_NEXT(10134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10134(choice, ...) METALANG99_PRIV_REC_NEXT(10135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10135(choice, ...) METALANG99_PRIV_REC_NEXT(10136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10136(choice, ...) METALANG99_PRIV_REC_NEXT(10137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10137(choice, ...) METALANG99_PRIV_REC_NEXT(10138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10138(choice, ...) METALANG99_PRIV_REC_NEXT(10139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10139(choice, ...) METALANG99_PRIV_REC_NEXT(10140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10140(choice, ...) METALANG99_PRIV_REC_NEXT(10141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10141(choice, ...) METALANG99_PRIV_REC_NEXT(10142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10142(choice, ...) METALANG99_PRIV_REC_NEXT(10143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10143(choice, ...) METALANG99_PRIV_REC_NEXT(10144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10144(choice, ...) METALANG99_PRIV_REC_NEXT(10145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10145(choice, ...) METALANG99_PRIV_REC_NEXT(10146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10146(choice, ...) METALANG99_PRIV_REC_NEXT(10147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10147(choice, ...) METALANG99_PRIV_REC_NEXT(10148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10148(choice, ...) METALANG99_PRIV_REC_NEXT(10149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10149(choice, ...) METALANG99_PRIV_REC_NEXT(10150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10150(choice, ...) METALANG99_PRIV_REC_NEXT(10151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10151(choice, ...) METALANG99_PRIV_REC_NEXT(10152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10152(choice, ...) METALANG99_PRIV_REC_NEXT(10153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10153(choice, ...) METALANG99_PRIV_REC_NEXT(10154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10154(choice, ...) METALANG99_PRIV_REC_NEXT(10155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10155(choice, ...) METALANG99_PRIV_REC_NEXT(10156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10156(choice, ...) METALANG99_PRIV_REC_NEXT(10157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10157(choice, ...) METALANG99_PRIV_REC_NEXT(10158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10158(choice, ...) METALANG99_PRIV_REC_NEXT(10159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10159(choice, ...) METALANG99_PRIV_REC_NEXT(10160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10160(choice, ...) METALANG99_PRIV_REC_NEXT(10161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10161(choice, ...) METALANG99_PRIV_REC_NEXT(10162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10162(choice, ...) METALANG99_PRIV_REC_NEXT(10163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10163(choice, ...) METALANG99_PRIV_REC_NEXT(10164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10164(choice, ...) METALANG99_PRIV_REC_NEXT(10165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10165(choice, ...) METALANG99_PRIV_REC_NEXT(10166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10166(choice, ...) METALANG99_PRIV_REC_NEXT(10167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10167(choice, ...) METALANG99_PRIV_REC_NEXT(10168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10168(choice, ...) METALANG99_PRIV_REC_NEXT(10169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10169(choice, ...) METALANG99_PRIV_REC_NEXT(10170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10170(choice, ...) METALANG99_PRIV_REC_NEXT(10171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10171(choice, ...) METALANG99_PRIV_REC_NEXT(10172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10172(choice, ...) METALANG99_PRIV_REC_NEXT(10173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10173(choice, ...) METALANG99_PRIV_REC_NEXT(10174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10174(choice, ...) METALANG99_PRIV_REC_NEXT(10175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10175(choice, ...) METALANG99_PRIV_REC_NEXT(10176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10176(choice, ...) METALANG99_PRIV_REC_NEXT(10177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10177(choice, ...) METALANG99_PRIV_REC_NEXT(10178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10178(choice, ...) METALANG99_PRIV_REC_NEXT(10179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10179(choice, ...) METALANG99_PRIV_REC_NEXT(10180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10180(choice, ...) METALANG99_PRIV_REC_NEXT(10181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10181(choice, ...) METALANG99_PRIV_REC_NEXT(10182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10182(choice, ...) METALANG99_PRIV_REC_NEXT(10183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10183(choice, ...) METALANG99_PRIV_REC_NEXT(10184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10184(choice, ...) METALANG99_PRIV_REC_NEXT(10185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10185(choice, ...) METALANG99_PRIV_REC_NEXT(10186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10186(choice, ...) METALANG99_PRIV_REC_NEXT(10187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10187(choice, ...) METALANG99_PRIV_REC_NEXT(10188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10188(choice, ...) METALANG99_PRIV_REC_NEXT(10189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10189(choice, ...) METALANG99_PRIV_REC_NEXT(10190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10190(choice, ...) METALANG99_PRIV_REC_NEXT(10191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10191(choice, ...) METALANG99_PRIV_REC_NEXT(10192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10192(choice, ...) METALANG99_PRIV_REC_NEXT(10193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10193(choice, ...) METALANG99_PRIV_REC_NEXT(10194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10194(choice, ...) METALANG99_PRIV_REC_NEXT(10195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10195(choice, ...) METALANG99_PRIV_REC_NEXT(10196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10196(choice, ...) METALANG99_PRIV_REC_NEXT(10197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10197(choice, ...) METALANG99_PRIV_REC_NEXT(10198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10198(choice, ...) METALANG99_PRIV_REC_NEXT(10199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10199(choice, ...) METALANG99_PRIV_REC_NEXT(10200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10200(choice, ...) METALANG99_PRIV_REC_NEXT(10201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10201(choice, ...) METALANG99_PRIV_REC_NEXT(10202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10202(choice, ...) METALANG99_PRIV_REC_NEXT(10203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10203(choice, ...) METALANG99_PRIV_REC_NEXT(10204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10204(choice, ...) METALANG99_PRIV_REC_NEXT(10205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10205(choice, ...) METALANG99_PRIV_REC_NEXT(10206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10206(choice, ...) METALANG99_PRIV_REC_NEXT(10207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10207(choice, ...) METALANG99_PRIV_REC_NEXT(10208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10208(choice, ...) METALANG99_PRIV_REC_NEXT(10209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10209(choice, ...) METALANG99_PRIV_REC_NEXT(10210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10210(choice, ...) METALANG99_PRIV_REC_NEXT(10211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10211(choice, ...) METALANG99_PRIV_REC_NEXT(10212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10212(choice, ...) METALANG99_PRIV_REC_NEXT(10213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10213(choice, ...) METALANG99_PRIV_REC_NEXT(10214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10214(choice, ...) METALANG99_PRIV_REC_NEXT(10215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10215(choice, ...) METALANG99_PRIV_REC_NEXT(10216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10216(choice, ...) METALANG99_PRIV_REC_NEXT(10217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10217(choice, ...) METALANG99_PRIV_REC_NEXT(10218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10218(choice, ...) METALANG99_PRIV_REC_NEXT(10219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10219(choice, ...) METALANG99_PRIV_REC_NEXT(10220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10220(choice, ...) METALANG99_PRIV_REC_NEXT(10221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10221(choice, ...) METALANG99_PRIV_REC_NEXT(10222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10222(choice, ...) METALANG99_PRIV_REC_NEXT(10223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10223(choice, ...) METALANG99_PRIV_REC_NEXT(10224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10224(choice, ...) METALANG99_PRIV_REC_NEXT(10225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10225(choice, ...) METALANG99_PRIV_REC_NEXT(10226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10226(choice, ...) METALANG99_PRIV_REC_NEXT(10227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10227(choice, ...) METALANG99_PRIV_REC_NEXT(10228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10228(choice, ...) METALANG99_PRIV_REC_NEXT(10229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10229(choice, ...) METALANG99_PRIV_REC_NEXT(10230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10230(choice, ...) METALANG99_PRIV_REC_NEXT(10231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10231(choice, ...) METALANG99_PRIV_REC_NEXT(10232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10232(choice, ...) METALANG99_PRIV_REC_NEXT(10233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10233(choice, ...) METALANG99_PRIV_REC_NEXT(10234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10234(choice, ...) METALANG99_PRIV_REC_NEXT(10235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10235(choice, ...) METALANG99_PRIV_REC_NEXT(10236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10236(choice, ...) METALANG99_PRIV_REC_NEXT(10237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10237(choice, ...) METALANG99_PRIV_REC_NEXT(10238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10238(choice, ...) METALANG99_PRIV_REC_NEXT(10239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10239(choice, ...) METALANG99_PRIV_REC_NEXT(10240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10240(choice, ...) METALANG99_PRIV_REC_NEXT(10241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10241(choice, ...) METALANG99_PRIV_REC_NEXT(10242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10242(choice, ...) METALANG99_PRIV_REC_NEXT(10243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10243(choice, ...) METALANG99_PRIV_REC_NEXT(10244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10244(choice, ...) METALANG99_PRIV_REC_NEXT(10245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10245(choice, ...) METALANG99_PRIV_REC_NEXT(10246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10246(choice, ...) METALANG99_PRIV_REC_NEXT(10247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10247(choice, ...) METALANG99_PRIV_REC_NEXT(10248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10248(choice, ...) METALANG99_PRIV_REC_NEXT(10249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10249(choice, ...) METALANG99_PRIV_REC_NEXT(10250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10250(choice, ...) METALANG99_PRIV_REC_NEXT(10251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10251(choice, ...) METALANG99_PRIV_REC_NEXT(10252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10252(choice, ...) METALANG99_PRIV_REC_NEXT(10253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10253(choice, ...) METALANG99_PRIV_REC_NEXT(10254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10254(choice, ...) METALANG99_PRIV_REC_NEXT(10255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10255(choice, ...) METALANG99_PRIV_REC_NEXT(10256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10256(choice, ...) METALANG99_PRIV_REC_NEXT(10257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10257(choice, ...) METALANG99_PRIV_REC_NEXT(10258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10258(choice, ...) METALANG99_PRIV_REC_NEXT(10259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10259(choice, ...) METALANG99_PRIV_REC_NEXT(10260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10260(choice, ...) METALANG99_PRIV_REC_NEXT(10261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10261(choice, ...) METALANG99_PRIV_REC_NEXT(10262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10262(choice, ...) METALANG99_PRIV_REC_NEXT(10263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10263(choice, ...) METALANG99_PRIV_REC_NEXT(10264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10264(choice, ...) METALANG99_PRIV_REC_NEXT(10265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10265(choice, ...) METALANG99_PRIV_REC_NEXT(10266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10266(choice, ...) METALANG99_PRIV_REC_NEXT(10267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10267(choice, ...) METALANG99_PRIV_REC_NEXT(10268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10268(choice, ...) METALANG99_PRIV_REC_NEXT(10269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10269(choice, ...) METALANG99_PRIV_REC_NEXT(10270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10270(choice, ...) METALANG99_PRIV_REC_NEXT(10271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10271(choice, ...) METALANG99_PRIV_REC_NEXT(10272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10272(choice, ...) METALANG99_PRIV_REC_NEXT(10273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10273(choice, ...) METALANG99_PRIV_REC_NEXT(10274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10274(choice, ...) METALANG99_PRIV_REC_NEXT(10275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10275(choice, ...) METALANG99_PRIV_REC_NEXT(10276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10276(choice, ...) METALANG99_PRIV_REC_NEXT(10277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10277(choice, ...) METALANG99_PRIV_REC_NEXT(10278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10278(choice, ...) METALANG99_PRIV_REC_NEXT(10279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10279(choice, ...) METALANG99_PRIV_REC_NEXT(10280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10280(choice, ...) METALANG99_PRIV_REC_NEXT(10281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10281(choice, ...) METALANG99_PRIV_REC_NEXT(10282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10282(choice, ...) METALANG99_PRIV_REC_NEXT(10283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10283(choice, ...) METALANG99_PRIV_REC_NEXT(10284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10284(choice, ...) METALANG99_PRIV_REC_NEXT(10285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10285(choice, ...) METALANG99_PRIV_REC_NEXT(10286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10286(choice, ...) METALANG99_PRIV_REC_NEXT(10287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10287(choice, ...) METALANG99_PRIV_REC_NEXT(10288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10288(choice, ...) METALANG99_PRIV_REC_NEXT(10289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10289(choice, ...) METALANG99_PRIV_REC_NEXT(10290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10290(choice, ...) METALANG99_PRIV_REC_NEXT(10291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10291(choice, ...) METALANG99_PRIV_REC_NEXT(10292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10292(choice, ...) METALANG99_PRIV_REC_NEXT(10293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10293(choice, ...) METALANG99_PRIV_REC_NEXT(10294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10294(choice, ...) METALANG99_PRIV_REC_NEXT(10295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10295(choice, ...) METALANG99_PRIV_REC_NEXT(10296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10296(choice, ...) METALANG99_PRIV_REC_NEXT(10297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10297(choice, ...) METALANG99_PRIV_REC_NEXT(10298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10298(choice, ...) METALANG99_PRIV_REC_NEXT(10299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10299(choice, ...) METALANG99_PRIV_REC_NEXT(10300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10300(choice, ...) METALANG99_PRIV_REC_NEXT(10301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10301(choice, ...) METALANG99_PRIV_REC_NEXT(10302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10302(choice, ...) METALANG99_PRIV_REC_NEXT(10303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10303(choice, ...) METALANG99_PRIV_REC_NEXT(10304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10304(choice, ...) METALANG99_PRIV_REC_NEXT(10305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10305(choice, ...) METALANG99_PRIV_REC_NEXT(10306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10306(choice, ...) METALANG99_PRIV_REC_NEXT(10307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10307(choice, ...) METALANG99_PRIV_REC_NEXT(10308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10308(choice, ...) METALANG99_PRIV_REC_NEXT(10309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10309(choice, ...) METALANG99_PRIV_REC_NEXT(10310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10310(choice, ...) METALANG99_PRIV_REC_NEXT(10311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10311(choice, ...) METALANG99_PRIV_REC_NEXT(10312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10312(choice, ...) METALANG99_PRIV_REC_NEXT(10313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10313(choice, ...) METALANG99_PRIV_REC_NEXT(10314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10314(choice, ...) METALANG99_PRIV_REC_NEXT(10315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10315(choice, ...) METALANG99_PRIV_REC_NEXT(10316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10316(choice, ...) METALANG99_PRIV_REC_NEXT(10317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10317(choice, ...) METALANG99_PRIV_REC_NEXT(10318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10318(choice, ...) METALANG99_PRIV_REC_NEXT(10319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10319(choice, ...) METALANG99_PRIV_REC_NEXT(10320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10320(choice, ...) METALANG99_PRIV_REC_NEXT(10321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10321(choice, ...) METALANG99_PRIV_REC_NEXT(10322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10322(choice, ...) METALANG99_PRIV_REC_NEXT(10323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10323(choice, ...) METALANG99_PRIV_REC_NEXT(10324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10324(choice, ...) METALANG99_PRIV_REC_NEXT(10325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10325(choice, ...) METALANG99_PRIV_REC_NEXT(10326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10326(choice, ...) METALANG99_PRIV_REC_NEXT(10327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10327(choice, ...) METALANG99_PRIV_REC_NEXT(10328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10328(choice, ...) METALANG99_PRIV_REC_NEXT(10329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10329(choice, ...) METALANG99_PRIV_REC_NEXT(10330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10330(choice, ...) METALANG99_PRIV_REC_NEXT(10331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10331(choice, ...) METALANG99_PRIV_REC_NEXT(10332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10332(choice, ...) METALANG99_PRIV_REC_NEXT(10333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10333(choice, ...) METALANG99_PRIV_REC_NEXT(10334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10334(choice, ...) METALANG99_PRIV_REC_NEXT(10335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10335(choice, ...) METALANG99_PRIV_REC_NEXT(10336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10336(choice, ...) METALANG99_PRIV_REC_NEXT(10337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10337(choice, ...) METALANG99_PRIV_REC_NEXT(10338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10338(choice, ...) METALANG99_PRIV_REC_NEXT(10339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10339(choice, ...) METALANG99_PRIV_REC_NEXT(10340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10340(choice, ...) METALANG99_PRIV_REC_NEXT(10341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10341(choice, ...) METALANG99_PRIV_REC_NEXT(10342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10342(choice, ...) METALANG99_PRIV_REC_NEXT(10343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10343(choice, ...) METALANG99_PRIV_REC_NEXT(10344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10344(choice, ...) METALANG99_PRIV_REC_NEXT(10345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10345(choice, ...) METALANG99_PRIV_REC_NEXT(10346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10346(choice, ...) METALANG99_PRIV_REC_NEXT(10347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10347(choice, ...) METALANG99_PRIV_REC_NEXT(10348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10348(choice, ...) METALANG99_PRIV_REC_NEXT(10349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10349(choice, ...) METALANG99_PRIV_REC_NEXT(10350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10350(choice, ...) METALANG99_PRIV_REC_NEXT(10351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10351(choice, ...) METALANG99_PRIV_REC_NEXT(10352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10352(choice, ...) METALANG99_PRIV_REC_NEXT(10353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10353(choice, ...) METALANG99_PRIV_REC_NEXT(10354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10354(choice, ...) METALANG99_PRIV_REC_NEXT(10355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10355(choice, ...) METALANG99_PRIV_REC_NEXT(10356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10356(choice, ...) METALANG99_PRIV_REC_NEXT(10357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10357(choice, ...) METALANG99_PRIV_REC_NEXT(10358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10358(choice, ...) METALANG99_PRIV_REC_NEXT(10359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10359(choice, ...) METALANG99_PRIV_REC_NEXT(10360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10360(choice, ...) METALANG99_PRIV_REC_NEXT(10361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10361(choice, ...) METALANG99_PRIV_REC_NEXT(10362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10362(choice, ...) METALANG99_PRIV_REC_NEXT(10363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10363(choice, ...) METALANG99_PRIV_REC_NEXT(10364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10364(choice, ...) METALANG99_PRIV_REC_NEXT(10365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10365(choice, ...) METALANG99_PRIV_REC_NEXT(10366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10366(choice, ...) METALANG99_PRIV_REC_NEXT(10367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10367(choice, ...) METALANG99_PRIV_REC_NEXT(10368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10368(choice, ...) METALANG99_PRIV_REC_NEXT(10369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10369(choice, ...) METALANG99_PRIV_REC_NEXT(10370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10370(choice, ...) METALANG99_PRIV_REC_NEXT(10371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10371(choice, ...) METALANG99_PRIV_REC_NEXT(10372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10372(choice, ...) METALANG99_PRIV_REC_NEXT(10373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10373(choice, ...) METALANG99_PRIV_REC_NEXT(10374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10374(choice, ...) METALANG99_PRIV_REC_NEXT(10375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10375(choice, ...) METALANG99_PRIV_REC_NEXT(10376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10376(choice, ...) METALANG99_PRIV_REC_NEXT(10377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10377(choice, ...) METALANG99_PRIV_REC_NEXT(10378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10378(choice, ...) METALANG99_PRIV_REC_NEXT(10379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10379(choice, ...) METALANG99_PRIV_REC_NEXT(10380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10380(choice, ...) METALANG99_PRIV_REC_NEXT(10381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10381(choice, ...) METALANG99_PRIV_REC_NEXT(10382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10382(choice, ...) METALANG99_PRIV_REC_NEXT(10383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10383(choice, ...) METALANG99_PRIV_REC_NEXT(10384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10384(choice, ...) METALANG99_PRIV_REC_NEXT(10385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10385(choice, ...) METALANG99_PRIV_REC_NEXT(10386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10386(choice, ...) METALANG99_PRIV_REC_NEXT(10387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10387(choice, ...) METALANG99_PRIV_REC_NEXT(10388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10388(choice, ...) METALANG99_PRIV_REC_NEXT(10389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10389(choice, ...) METALANG99_PRIV_REC_NEXT(10390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10390(choice, ...) METALANG99_PRIV_REC_NEXT(10391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10391(choice, ...) METALANG99_PRIV_REC_NEXT(10392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10392(choice, ...) METALANG99_PRIV_REC_NEXT(10393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10393(choice, ...) METALANG99_PRIV_REC_NEXT(10394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10394(choice, ...) METALANG99_PRIV_REC_NEXT(10395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10395(choice, ...) METALANG99_PRIV_REC_NEXT(10396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10396(choice, ...) METALANG99_PRIV_REC_NEXT(10397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10397(choice, ...) METALANG99_PRIV_REC_NEXT(10398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10398(choice, ...) METALANG99_PRIV_REC_NEXT(10399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10399(choice, ...) METALANG99_PRIV_REC_NEXT(10400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10400(choice, ...) METALANG99_PRIV_REC_NEXT(10401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10401(choice, ...) METALANG99_PRIV_REC_NEXT(10402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10402(choice, ...) METALANG99_PRIV_REC_NEXT(10403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10403(choice, ...) METALANG99_PRIV_REC_NEXT(10404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10404(choice, ...) METALANG99_PRIV_REC_NEXT(10405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10405(choice, ...) METALANG99_PRIV_REC_NEXT(10406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10406(choice, ...) METALANG99_PRIV_REC_NEXT(10407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10407(choice, ...) METALANG99_PRIV_REC_NEXT(10408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10408(choice, ...) METALANG99_PRIV_REC_NEXT(10409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10409(choice, ...) METALANG99_PRIV_REC_NEXT(10410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10410(choice, ...) METALANG99_PRIV_REC_NEXT(10411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10411(choice, ...) METALANG99_PRIV_REC_NEXT(10412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10412(choice, ...) METALANG99_PRIV_REC_NEXT(10413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10413(choice, ...) METALANG99_PRIV_REC_NEXT(10414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10414(choice, ...) METALANG99_PRIV_REC_NEXT(10415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10415(choice, ...) METALANG99_PRIV_REC_NEXT(10416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10416(choice, ...) METALANG99_PRIV_REC_NEXT(10417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10417(choice, ...) METALANG99_PRIV_REC_NEXT(10418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10418(choice, ...) METALANG99_PRIV_REC_NEXT(10419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10419(choice, ...) METALANG99_PRIV_REC_NEXT(10420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10420(choice, ...) METALANG99_PRIV_REC_NEXT(10421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10421(choice, ...) METALANG99_PRIV_REC_NEXT(10422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10422(choice, ...) METALANG99_PRIV_REC_NEXT(10423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10423(choice, ...) METALANG99_PRIV_REC_NEXT(10424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10424(choice, ...) METALANG99_PRIV_REC_NEXT(10425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10425(choice, ...) METALANG99_PRIV_REC_NEXT(10426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10426(choice, ...) METALANG99_PRIV_REC_NEXT(10427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10427(choice, ...) METALANG99_PRIV_REC_NEXT(10428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10428(choice, ...) METALANG99_PRIV_REC_NEXT(10429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10429(choice, ...) METALANG99_PRIV_REC_NEXT(10430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10430(choice, ...) METALANG99_PRIV_REC_NEXT(10431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10431(choice, ...) METALANG99_PRIV_REC_NEXT(10432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10432(choice, ...) METALANG99_PRIV_REC_NEXT(10433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10433(choice, ...) METALANG99_PRIV_REC_NEXT(10434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10434(choice, ...) METALANG99_PRIV_REC_NEXT(10435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10435(choice, ...) METALANG99_PRIV_REC_NEXT(10436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10436(choice, ...) METALANG99_PRIV_REC_NEXT(10437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10437(choice, ...) METALANG99_PRIV_REC_NEXT(10438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10438(choice, ...) METALANG99_PRIV_REC_NEXT(10439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10439(choice, ...) METALANG99_PRIV_REC_NEXT(10440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10440(choice, ...) METALANG99_PRIV_REC_NEXT(10441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10441(choice, ...) METALANG99_PRIV_REC_NEXT(10442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10442(choice, ...) METALANG99_PRIV_REC_NEXT(10443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10443(choice, ...) METALANG99_PRIV_REC_NEXT(10444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10444(choice, ...) METALANG99_PRIV_REC_NEXT(10445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10445(choice, ...) METALANG99_PRIV_REC_NEXT(10446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10446(choice, ...) METALANG99_PRIV_REC_NEXT(10447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10447(choice, ...) METALANG99_PRIV_REC_NEXT(10448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10448(choice, ...) METALANG99_PRIV_REC_NEXT(10449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10449(choice, ...) METALANG99_PRIV_REC_NEXT(10450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10450(choice, ...) METALANG99_PRIV_REC_NEXT(10451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10451(choice, ...) METALANG99_PRIV_REC_NEXT(10452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10452(choice, ...) METALANG99_PRIV_REC_NEXT(10453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10453(choice, ...) METALANG99_PRIV_REC_NEXT(10454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10454(choice, ...) METALANG99_PRIV_REC_NEXT(10455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10455(choice, ...) METALANG99_PRIV_REC_NEXT(10456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10456(choice, ...) METALANG99_PRIV_REC_NEXT(10457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10457(choice, ...) METALANG99_PRIV_REC_NEXT(10458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10458(choice, ...) METALANG99_PRIV_REC_NEXT(10459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10459(choice, ...) METALANG99_PRIV_REC_NEXT(10460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10460(choice, ...) METALANG99_PRIV_REC_NEXT(10461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10461(choice, ...) METALANG99_PRIV_REC_NEXT(10462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10462(choice, ...) METALANG99_PRIV_REC_NEXT(10463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10463(choice, ...) METALANG99_PRIV_REC_NEXT(10464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10464(choice, ...) METALANG99_PRIV_REC_NEXT(10465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10465(choice, ...) METALANG99_PRIV_REC_NEXT(10466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10466(choice, ...) METALANG99_PRIV_REC_NEXT(10467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10467(choice, ...) METALANG99_PRIV_REC_NEXT(10468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10468(choice, ...) METALANG99_PRIV_REC_NEXT(10469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10469(choice, ...) METALANG99_PRIV_REC_NEXT(10470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10470(choice, ...) METALANG99_PRIV_REC_NEXT(10471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10471(choice, ...) METALANG99_PRIV_REC_NEXT(10472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10472(choice, ...) METALANG99_PRIV_REC_NEXT(10473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10473(choice, ...) METALANG99_PRIV_REC_NEXT(10474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10474(choice, ...) METALANG99_PRIV_REC_NEXT(10475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10475(choice, ...) METALANG99_PRIV_REC_NEXT(10476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10476(choice, ...) METALANG99_PRIV_REC_NEXT(10477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10477(choice, ...) METALANG99_PRIV_REC_NEXT(10478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10478(choice, ...) METALANG99_PRIV_REC_NEXT(10479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10479(choice, ...) METALANG99_PRIV_REC_NEXT(10480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10480(choice, ...) METALANG99_PRIV_REC_NEXT(10481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10481(choice, ...) METALANG99_PRIV_REC_NEXT(10482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10482(choice, ...) METALANG99_PRIV_REC_NEXT(10483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10483(choice, ...) METALANG99_PRIV_REC_NEXT(10484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10484(choice, ...) METALANG99_PRIV_REC_NEXT(10485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10485(choice, ...) METALANG99_PRIV_REC_NEXT(10486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10486(choice, ...) METALANG99_PRIV_REC_NEXT(10487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10487(choice, ...) METALANG99_PRIV_REC_NEXT(10488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10488(choice, ...) METALANG99_PRIV_REC_NEXT(10489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10489(choice, ...) METALANG99_PRIV_REC_NEXT(10490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10490(choice, ...) METALANG99_PRIV_REC_NEXT(10491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10491(choice, ...) METALANG99_PRIV_REC_NEXT(10492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10492(choice, ...) METALANG99_PRIV_REC_NEXT(10493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10493(choice, ...) METALANG99_PRIV_REC_NEXT(10494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10494(choice, ...) METALANG99_PRIV_REC_NEXT(10495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10495(choice, ...) METALANG99_PRIV_REC_NEXT(10496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10496(choice, ...) METALANG99_PRIV_REC_NEXT(10497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10497(choice, ...) METALANG99_PRIV_REC_NEXT(10498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10498(choice, ...) METALANG99_PRIV_REC_NEXT(10499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10499(choice, ...) METALANG99_PRIV_REC_NEXT(10500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10500(choice, ...) METALANG99_PRIV_REC_NEXT(10501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10501(choice, ...) METALANG99_PRIV_REC_NEXT(10502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10502(choice, ...) METALANG99_PRIV_REC_NEXT(10503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10503(choice, ...) METALANG99_PRIV_REC_NEXT(10504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10504(choice, ...) METALANG99_PRIV_REC_NEXT(10505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10505(choice, ...) METALANG99_PRIV_REC_NEXT(10506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10506(choice, ...) METALANG99_PRIV_REC_NEXT(10507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10507(choice, ...) METALANG99_PRIV_REC_NEXT(10508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10508(choice, ...) METALANG99_PRIV_REC_NEXT(10509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10509(choice, ...) METALANG99_PRIV_REC_NEXT(10510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10510(choice, ...) METALANG99_PRIV_REC_NEXT(10511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10511(choice, ...) METALANG99_PRIV_REC_NEXT(10512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10512(choice, ...) METALANG99_PRIV_REC_NEXT(10513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10513(choice, ...) METALANG99_PRIV_REC_NEXT(10514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10514(choice, ...) METALANG99_PRIV_REC_NEXT(10515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10515(choice, ...) METALANG99_PRIV_REC_NEXT(10516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10516(choice, ...) METALANG99_PRIV_REC_NEXT(10517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10517(choice, ...) METALANG99_PRIV_REC_NEXT(10518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10518(choice, ...) METALANG99_PRIV_REC_NEXT(10519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10519(choice, ...) METALANG99_PRIV_REC_NEXT(10520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10520(choice, ...) METALANG99_PRIV_REC_NEXT(10521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10521(choice, ...) METALANG99_PRIV_REC_NEXT(10522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10522(choice, ...) METALANG99_PRIV_REC_NEXT(10523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10523(choice, ...) METALANG99_PRIV_REC_NEXT(10524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10524(choice, ...) METALANG99_PRIV_REC_NEXT(10525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10525(choice, ...) METALANG99_PRIV_REC_NEXT(10526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10526(choice, ...) METALANG99_PRIV_REC_NEXT(10527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10527(choice, ...) METALANG99_PRIV_REC_NEXT(10528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10528(choice, ...) METALANG99_PRIV_REC_NEXT(10529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10529(choice, ...) METALANG99_PRIV_REC_NEXT(10530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10530(choice, ...) METALANG99_PRIV_REC_NEXT(10531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10531(choice, ...) METALANG99_PRIV_REC_NEXT(10532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10532(choice, ...) METALANG99_PRIV_REC_NEXT(10533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10533(choice, ...) METALANG99_PRIV_REC_NEXT(10534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10534(choice, ...) METALANG99_PRIV_REC_NEXT(10535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10535(choice, ...) METALANG99_PRIV_REC_NEXT(10536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10536(choice, ...) METALANG99_PRIV_REC_NEXT(10537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10537(choice, ...) METALANG99_PRIV_REC_NEXT(10538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10538(choice, ...) METALANG99_PRIV_REC_NEXT(10539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10539(choice, ...) METALANG99_PRIV_REC_NEXT(10540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10540(choice, ...) METALANG99_PRIV_REC_NEXT(10541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10541(choice, ...) METALANG99_PRIV_REC_NEXT(10542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10542(choice, ...) METALANG99_PRIV_REC_NEXT(10543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10543(choice, ...) METALANG99_PRIV_REC_NEXT(10544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10544(choice, ...) METALANG99_PRIV_REC_NEXT(10545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10545(choice, ...) METALANG99_PRIV_REC_NEXT(10546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10546(choice, ...) METALANG99_PRIV_REC_NEXT(10547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10547(choice, ...) METALANG99_PRIV_REC_NEXT(10548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10548(choice, ...) METALANG99_PRIV_REC_NEXT(10549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10549(choice, ...) METALANG99_PRIV_REC_NEXT(10550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10550(choice, ...) METALANG99_PRIV_REC_NEXT(10551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10551(choice, ...) METALANG99_PRIV_REC_NEXT(10552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10552(choice, ...) METALANG99_PRIV_REC_NEXT(10553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10553(choice, ...) METALANG99_PRIV_REC_NEXT(10554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10554(choice, ...) METALANG99_PRIV_REC_NEXT(10555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10555(choice, ...) METALANG99_PRIV_REC_NEXT(10556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10556(choice, ...) METALANG99_PRIV_REC_NEXT(10557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10557(choice, ...) METALANG99_PRIV_REC_NEXT(10558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10558(choice, ...) METALANG99_PRIV_REC_NEXT(10559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10559(choice, ...) METALANG99_PRIV_REC_NEXT(10560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10560(choice, ...) METALANG99_PRIV_REC_NEXT(10561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10561(choice, ...) METALANG99_PRIV_REC_NEXT(10562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10562(choice, ...) METALANG99_PRIV_REC_NEXT(10563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10563(choice, ...) METALANG99_PRIV_REC_NEXT(10564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10564(choice, ...) METALANG99_PRIV_REC_NEXT(10565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10565(choice, ...) METALANG99_PRIV_REC_NEXT(10566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10566(choice, ...) METALANG99_PRIV_REC_NEXT(10567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10567(choice, ...) METALANG99_PRIV_REC_NEXT(10568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10568(choice, ...) METALANG99_PRIV_REC_NEXT(10569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10569(choice, ...) METALANG99_PRIV_REC_NEXT(10570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10570(choice, ...) METALANG99_PRIV_REC_NEXT(10571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10571(choice, ...) METALANG99_PRIV_REC_NEXT(10572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10572(choice, ...) METALANG99_PRIV_REC_NEXT(10573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10573(choice, ...) METALANG99_PRIV_REC_NEXT(10574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10574(choice, ...) METALANG99_PRIV_REC_NEXT(10575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10575(choice, ...) METALANG99_PRIV_REC_NEXT(10576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10576(choice, ...) METALANG99_PRIV_REC_NEXT(10577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10577(choice, ...) METALANG99_PRIV_REC_NEXT(10578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10578(choice, ...) METALANG99_PRIV_REC_NEXT(10579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10579(choice, ...) METALANG99_PRIV_REC_NEXT(10580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10580(choice, ...) METALANG99_PRIV_REC_NEXT(10581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10581(choice, ...) METALANG99_PRIV_REC_NEXT(10582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10582(choice, ...) METALANG99_PRIV_REC_NEXT(10583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10583(choice, ...) METALANG99_PRIV_REC_NEXT(10584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10584(choice, ...) METALANG99_PRIV_REC_NEXT(10585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10585(choice, ...) METALANG99_PRIV_REC_NEXT(10586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10586(choice, ...) METALANG99_PRIV_REC_NEXT(10587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10587(choice, ...) METALANG99_PRIV_REC_NEXT(10588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10588(choice, ...) METALANG99_PRIV_REC_NEXT(10589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10589(choice, ...) METALANG99_PRIV_REC_NEXT(10590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10590(choice, ...) METALANG99_PRIV_REC_NEXT(10591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10591(choice, ...) METALANG99_PRIV_REC_NEXT(10592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10592(choice, ...) METALANG99_PRIV_REC_NEXT(10593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10593(choice, ...) METALANG99_PRIV_REC_NEXT(10594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10594(choice, ...) METALANG99_PRIV_REC_NEXT(10595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10595(choice, ...) METALANG99_PRIV_REC_NEXT(10596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10596(choice, ...) METALANG99_PRIV_REC_NEXT(10597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10597(choice, ...) METALANG99_PRIV_REC_NEXT(10598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10598(choice, ...) METALANG99_PRIV_REC_NEXT(10599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10599(choice, ...) METALANG99_PRIV_REC_NEXT(10600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10600(choice, ...) METALANG99_PRIV_REC_NEXT(10601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10601(choice, ...) METALANG99_PRIV_REC_NEXT(10602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10602(choice, ...) METALANG99_PRIV_REC_NEXT(10603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10603(choice, ...) METALANG99_PRIV_REC_NEXT(10604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10604(choice, ...) METALANG99_PRIV_REC_NEXT(10605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10605(choice, ...) METALANG99_PRIV_REC_NEXT(10606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10606(choice, ...) METALANG99_PRIV_REC_NEXT(10607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10607(choice, ...) METALANG99_PRIV_REC_NEXT(10608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10608(choice, ...) METALANG99_PRIV_REC_NEXT(10609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10609(choice, ...) METALANG99_PRIV_REC_NEXT(10610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10610(choice, ...) METALANG99_PRIV_REC_NEXT(10611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10611(choice, ...) METALANG99_PRIV_REC_NEXT(10612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10612(choice, ...) METALANG99_PRIV_REC_NEXT(10613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10613(choice, ...) METALANG99_PRIV_REC_NEXT(10614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10614(choice, ...) METALANG99_PRIV_REC_NEXT(10615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10615(choice, ...) METALANG99_PRIV_REC_NEXT(10616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10616(choice, ...) METALANG99_PRIV_REC_NEXT(10617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10617(choice, ...) METALANG99_PRIV_REC_NEXT(10618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10618(choice, ...) METALANG99_PRIV_REC_NEXT(10619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10619(choice, ...) METALANG99_PRIV_REC_NEXT(10620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10620(choice, ...) METALANG99_PRIV_REC_NEXT(10621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10621(choice, ...) METALANG99_PRIV_REC_NEXT(10622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10622(choice, ...) METALANG99_PRIV_REC_NEXT(10623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10623(choice, ...) METALANG99_PRIV_REC_NEXT(10624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10624(choice, ...) METALANG99_PRIV_REC_NEXT(10625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10625(choice, ...) METALANG99_PRIV_REC_NEXT(10626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10626(choice, ...) METALANG99_PRIV_REC_NEXT(10627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10627(choice, ...) METALANG99_PRIV_REC_NEXT(10628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10628(choice, ...) METALANG99_PRIV_REC_NEXT(10629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10629(choice, ...) METALANG99_PRIV_REC_NEXT(10630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10630(choice, ...) METALANG99_PRIV_REC_NEXT(10631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10631(choice, ...) METALANG99_PRIV_REC_NEXT(10632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10632(choice, ...) METALANG99_PRIV_REC_NEXT(10633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10633(choice, ...) METALANG99_PRIV_REC_NEXT(10634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10634(choice, ...) METALANG99_PRIV_REC_NEXT(10635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10635(choice, ...) METALANG99_PRIV_REC_NEXT(10636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10636(choice, ...) METALANG99_PRIV_REC_NEXT(10637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10637(choice, ...) METALANG99_PRIV_REC_NEXT(10638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10638(choice, ...) METALANG99_PRIV_REC_NEXT(10639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10639(choice, ...) METALANG99_PRIV_REC_NEXT(10640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10640(choice, ...) METALANG99_PRIV_REC_NEXT(10641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10641(choice, ...) METALANG99_PRIV_REC_NEXT(10642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10642(choice, ...) METALANG99_PRIV_REC_NEXT(10643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10643(choice, ...) METALANG99_PRIV_REC_NEXT(10644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10644(choice, ...) METALANG99_PRIV_REC_NEXT(10645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10645(choice, ...) METALANG99_PRIV_REC_NEXT(10646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10646(choice, ...) METALANG99_PRIV_REC_NEXT(10647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10647(choice, ...) METALANG99_PRIV_REC_NEXT(10648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10648(choice, ...) METALANG99_PRIV_REC_NEXT(10649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10649(choice, ...) METALANG99_PRIV_REC_NEXT(10650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10650(choice, ...) METALANG99_PRIV_REC_NEXT(10651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10651(choice, ...) METALANG99_PRIV_REC_NEXT(10652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10652(choice, ...) METALANG99_PRIV_REC_NEXT(10653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10653(choice, ...) METALANG99_PRIV_REC_NEXT(10654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10654(choice, ...) METALANG99_PRIV_REC_NEXT(10655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10655(choice, ...) METALANG99_PRIV_REC_NEXT(10656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10656(choice, ...) METALANG99_PRIV_REC_NEXT(10657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10657(choice, ...) METALANG99_PRIV_REC_NEXT(10658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10658(choice, ...) METALANG99_PRIV_REC_NEXT(10659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10659(choice, ...) METALANG99_PRIV_REC_NEXT(10660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10660(choice, ...) METALANG99_PRIV_REC_NEXT(10661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10661(choice, ...) METALANG99_PRIV_REC_NEXT(10662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10662(choice, ...) METALANG99_PRIV_REC_NEXT(10663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10663(choice, ...) METALANG99_PRIV_REC_NEXT(10664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10664(choice, ...) METALANG99_PRIV_REC_NEXT(10665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10665(choice, ...) METALANG99_PRIV_REC_NEXT(10666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10666(choice, ...) METALANG99_PRIV_REC_NEXT(10667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10667(choice, ...) METALANG99_PRIV_REC_NEXT(10668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10668(choice, ...) METALANG99_PRIV_REC_NEXT(10669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10669(choice, ...) METALANG99_PRIV_REC_NEXT(10670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10670(choice, ...) METALANG99_PRIV_REC_NEXT(10671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10671(choice, ...) METALANG99_PRIV_REC_NEXT(10672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10672(choice, ...) METALANG99_PRIV_REC_NEXT(10673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10673(choice, ...) METALANG99_PRIV_REC_NEXT(10674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10674(choice, ...) METALANG99_PRIV_REC_NEXT(10675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10675(choice, ...) METALANG99_PRIV_REC_NEXT(10676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10676(choice, ...) METALANG99_PRIV_REC_NEXT(10677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10677(choice, ...) METALANG99_PRIV_REC_NEXT(10678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10678(choice, ...) METALANG99_PRIV_REC_NEXT(10679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10679(choice, ...) METALANG99_PRIV_REC_NEXT(10680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10680(choice, ...) METALANG99_PRIV_REC_NEXT(10681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10681(choice, ...) METALANG99_PRIV_REC_NEXT(10682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10682(choice, ...) METALANG99_PRIV_REC_NEXT(10683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10683(choice, ...) METALANG99_PRIV_REC_NEXT(10684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10684(choice, ...) METALANG99_PRIV_REC_NEXT(10685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10685(choice, ...) METALANG99_PRIV_REC_NEXT(10686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10686(choice, ...) METALANG99_PRIV_REC_NEXT(10687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10687(choice, ...) METALANG99_PRIV_REC_NEXT(10688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10688(choice, ...) METALANG99_PRIV_REC_NEXT(10689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10689(choice, ...) METALANG99_PRIV_REC_NEXT(10690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10690(choice, ...) METALANG99_PRIV_REC_NEXT(10691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10691(choice, ...) METALANG99_PRIV_REC_NEXT(10692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10692(choice, ...) METALANG99_PRIV_REC_NEXT(10693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10693(choice, ...) METALANG99_PRIV_REC_NEXT(10694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10694(choice, ...) METALANG99_PRIV_REC_NEXT(10695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10695(choice, ...) METALANG99_PRIV_REC_NEXT(10696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10696(choice, ...) METALANG99_PRIV_REC_NEXT(10697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10697(choice, ...) METALANG99_PRIV_REC_NEXT(10698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10698(choice, ...) METALANG99_PRIV_REC_NEXT(10699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10699(choice, ...) METALANG99_PRIV_REC_NEXT(10700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10700(choice, ...) METALANG99_PRIV_REC_NEXT(10701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10701(choice, ...) METALANG99_PRIV_REC_NEXT(10702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10702(choice, ...) METALANG99_PRIV_REC_NEXT(10703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10703(choice, ...) METALANG99_PRIV_REC_NEXT(10704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10704(choice, ...) METALANG99_PRIV_REC_NEXT(10705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10705(choice, ...) METALANG99_PRIV_REC_NEXT(10706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10706(choice, ...) METALANG99_PRIV_REC_NEXT(10707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10707(choice, ...) METALANG99_PRIV_REC_NEXT(10708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10708(choice, ...) METALANG99_PRIV_REC_NEXT(10709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10709(choice, ...) METALANG99_PRIV_REC_NEXT(10710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10710(choice, ...) METALANG99_PRIV_REC_NEXT(10711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10711(choice, ...) METALANG99_PRIV_REC_NEXT(10712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10712(choice, ...) METALANG99_PRIV_REC_NEXT(10713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10713(choice, ...) METALANG99_PRIV_REC_NEXT(10714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10714(choice, ...) METALANG99_PRIV_REC_NEXT(10715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10715(choice, ...) METALANG99_PRIV_REC_NEXT(10716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10716(choice, ...) METALANG99_PRIV_REC_NEXT(10717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10717(choice, ...) METALANG99_PRIV_REC_NEXT(10718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10718(choice, ...) METALANG99_PRIV_REC_NEXT(10719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10719(choice, ...) METALANG99_PRIV_REC_NEXT(10720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10720(choice, ...) METALANG99_PRIV_REC_NEXT(10721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10721(choice, ...) METALANG99_PRIV_REC_NEXT(10722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10722(choice, ...) METALANG99_PRIV_REC_NEXT(10723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10723(choice, ...) METALANG99_PRIV_REC_NEXT(10724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10724(choice, ...) METALANG99_PRIV_REC_NEXT(10725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10725(choice, ...) METALANG99_PRIV_REC_NEXT(10726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10726(choice, ...) METALANG99_PRIV_REC_NEXT(10727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10727(choice, ...) METALANG99_PRIV_REC_NEXT(10728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10728(choice, ...) METALANG99_PRIV_REC_NEXT(10729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10729(choice, ...) METALANG99_PRIV_REC_NEXT(10730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10730(choice, ...) METALANG99_PRIV_REC_NEXT(10731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10731(choice, ...) METALANG99_PRIV_REC_NEXT(10732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10732(choice, ...) METALANG99_PRIV_REC_NEXT(10733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10733(choice, ...) METALANG99_PRIV_REC_NEXT(10734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10734(choice, ...) METALANG99_PRIV_REC_NEXT(10735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10735(choice, ...) METALANG99_PRIV_REC_NEXT(10736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10736(choice, ...) METALANG99_PRIV_REC_NEXT(10737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10737(choice, ...) METALANG99_PRIV_REC_NEXT(10738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10738(choice, ...) METALANG99_PRIV_REC_NEXT(10739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10739(choice, ...) METALANG99_PRIV_REC_NEXT(10740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10740(choice, ...) METALANG99_PRIV_REC_NEXT(10741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10741(choice, ...) METALANG99_PRIV_REC_NEXT(10742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10742(choice, ...) METALANG99_PRIV_REC_NEXT(10743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10743(choice, ...) METALANG99_PRIV_REC_NEXT(10744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10744(choice, ...) METALANG99_PRIV_REC_NEXT(10745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10745(choice, ...) METALANG99_PRIV_REC_NEXT(10746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10746(choice, ...) METALANG99_PRIV_REC_NEXT(10747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10747(choice, ...) METALANG99_PRIV_REC_NEXT(10748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10748(choice, ...) METALANG99_PRIV_REC_NEXT(10749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10749(choice, ...) METALANG99_PRIV_REC_NEXT(10750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10750(choice, ...) METALANG99_PRIV_REC_NEXT(10751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10751(choice, ...) METALANG99_PRIV_REC_NEXT(10752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10752(choice, ...) METALANG99_PRIV_REC_NEXT(10753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10753(choice, ...) METALANG99_PRIV_REC_NEXT(10754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10754(choice, ...) METALANG99_PRIV_REC_NEXT(10755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10755(choice, ...) METALANG99_PRIV_REC_NEXT(10756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10756(choice, ...) METALANG99_PRIV_REC_NEXT(10757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10757(choice, ...) METALANG99_PRIV_REC_NEXT(10758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10758(choice, ...) METALANG99_PRIV_REC_NEXT(10759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10759(choice, ...) METALANG99_PRIV_REC_NEXT(10760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10760(choice, ...) METALANG99_PRIV_REC_NEXT(10761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10761(choice, ...) METALANG99_PRIV_REC_NEXT(10762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10762(choice, ...) METALANG99_PRIV_REC_NEXT(10763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10763(choice, ...) METALANG99_PRIV_REC_NEXT(10764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10764(choice, ...) METALANG99_PRIV_REC_NEXT(10765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10765(choice, ...) METALANG99_PRIV_REC_NEXT(10766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10766(choice, ...) METALANG99_PRIV_REC_NEXT(10767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10767(choice, ...) METALANG99_PRIV_REC_NEXT(10768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10768(choice, ...) METALANG99_PRIV_REC_NEXT(10769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10769(choice, ...) METALANG99_PRIV_REC_NEXT(10770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10770(choice, ...) METALANG99_PRIV_REC_NEXT(10771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10771(choice, ...) METALANG99_PRIV_REC_NEXT(10772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10772(choice, ...) METALANG99_PRIV_REC_NEXT(10773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10773(choice, ...) METALANG99_PRIV_REC_NEXT(10774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10774(choice, ...) METALANG99_PRIV_REC_NEXT(10775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10775(choice, ...) METALANG99_PRIV_REC_NEXT(10776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10776(choice, ...) METALANG99_PRIV_REC_NEXT(10777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10777(choice, ...) METALANG99_PRIV_REC_NEXT(10778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10778(choice, ...) METALANG99_PRIV_REC_NEXT(10779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10779(choice, ...) METALANG99_PRIV_REC_NEXT(10780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10780(choice, ...) METALANG99_PRIV_REC_NEXT(10781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10781(choice, ...) METALANG99_PRIV_REC_NEXT(10782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10782(choice, ...) METALANG99_PRIV_REC_NEXT(10783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10783(choice, ...) METALANG99_PRIV_REC_NEXT(10784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10784(choice, ...) METALANG99_PRIV_REC_NEXT(10785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10785(choice, ...) METALANG99_PRIV_REC_NEXT(10786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10786(choice, ...) METALANG99_PRIV_REC_NEXT(10787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10787(choice, ...) METALANG99_PRIV_REC_NEXT(10788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10788(choice, ...) METALANG99_PRIV_REC_NEXT(10789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10789(choice, ...) METALANG99_PRIV_REC_NEXT(10790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10790(choice, ...) METALANG99_PRIV_REC_NEXT(10791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10791(choice, ...) METALANG99_PRIV_REC_NEXT(10792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10792(choice, ...) METALANG99_PRIV_REC_NEXT(10793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10793(choice, ...) METALANG99_PRIV_REC_NEXT(10794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10794(choice, ...) METALANG99_PRIV_REC_NEXT(10795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10795(choice, ...) METALANG99_PRIV_REC_NEXT(10796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10796(choice, ...) METALANG99_PRIV_REC_NEXT(10797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10797(choice, ...) METALANG99_PRIV_REC_NEXT(10798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10798(choice, ...) METALANG99_PRIV_REC_NEXT(10799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10799(choice, ...) METALANG99_PRIV_REC_NEXT(10800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10800(choice, ...) METALANG99_PRIV_REC_NEXT(10801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10801(choice, ...) METALANG99_PRIV_REC_NEXT(10802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10802(choice, ...) METALANG99_PRIV_REC_NEXT(10803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10803(choice, ...) METALANG99_PRIV_REC_NEXT(10804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10804(choice, ...) METALANG99_PRIV_REC_NEXT(10805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10805(choice, ...) METALANG99_PRIV_REC_NEXT(10806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10806(choice, ...) METALANG99_PRIV_REC_NEXT(10807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10807(choice, ...) METALANG99_PRIV_REC_NEXT(10808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10808(choice, ...) METALANG99_PRIV_REC_NEXT(10809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10809(choice, ...) METALANG99_PRIV_REC_NEXT(10810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10810(choice, ...) METALANG99_PRIV_REC_NEXT(10811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10811(choice, ...) METALANG99_PRIV_REC_NEXT(10812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10812(choice, ...) METALANG99_PRIV_REC_NEXT(10813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10813(choice, ...) METALANG99_PRIV_REC_NEXT(10814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10814(choice, ...) METALANG99_PRIV_REC_NEXT(10815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10815(choice, ...) METALANG99_PRIV_REC_NEXT(10816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10816(choice, ...) METALANG99_PRIV_REC_NEXT(10817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10817(choice, ...) METALANG99_PRIV_REC_NEXT(10818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10818(choice, ...) METALANG99_PRIV_REC_NEXT(10819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10819(choice, ...) METALANG99_PRIV_REC_NEXT(10820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10820(choice, ...) METALANG99_PRIV_REC_NEXT(10821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10821(choice, ...) METALANG99_PRIV_REC_NEXT(10822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10822(choice, ...) METALANG99_PRIV_REC_NEXT(10823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10823(choice, ...) METALANG99_PRIV_REC_NEXT(10824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10824(choice, ...) METALANG99_PRIV_REC_NEXT(10825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10825(choice, ...) METALANG99_PRIV_REC_NEXT(10826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10826(choice, ...) METALANG99_PRIV_REC_NEXT(10827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10827(choice, ...) METALANG99_PRIV_REC_NEXT(10828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10828(choice, ...) METALANG99_PRIV_REC_NEXT(10829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10829(choice, ...) METALANG99_PRIV_REC_NEXT(10830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10830(choice, ...) METALANG99_PRIV_REC_NEXT(10831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10831(choice, ...) METALANG99_PRIV_REC_NEXT(10832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10832(choice, ...) METALANG99_PRIV_REC_NEXT(10833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10833(choice, ...) METALANG99_PRIV_REC_NEXT(10834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10834(choice, ...) METALANG99_PRIV_REC_NEXT(10835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10835(choice, ...) METALANG99_PRIV_REC_NEXT(10836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10836(choice, ...) METALANG99_PRIV_REC_NEXT(10837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10837(choice, ...) METALANG99_PRIV_REC_NEXT(10838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10838(choice, ...) METALANG99_PRIV_REC_NEXT(10839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10839(choice, ...) METALANG99_PRIV_REC_NEXT(10840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10840(choice, ...) METALANG99_PRIV_REC_NEXT(10841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10841(choice, ...) METALANG99_PRIV_REC_NEXT(10842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10842(choice, ...) METALANG99_PRIV_REC_NEXT(10843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10843(choice, ...) METALANG99_PRIV_REC_NEXT(10844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10844(choice, ...) METALANG99_PRIV_REC_NEXT(10845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10845(choice, ...) METALANG99_PRIV_REC_NEXT(10846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10846(choice, ...) METALANG99_PRIV_REC_NEXT(10847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10847(choice, ...) METALANG99_PRIV_REC_NEXT(10848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10848(choice, ...) METALANG99_PRIV_REC_NEXT(10849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10849(choice, ...) METALANG99_PRIV_REC_NEXT(10850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10850(choice, ...) METALANG99_PRIV_REC_NEXT(10851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10851(choice, ...) METALANG99_PRIV_REC_NEXT(10852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10852(choice, ...) METALANG99_PRIV_REC_NEXT(10853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10853(choice, ...) METALANG99_PRIV_REC_NEXT(10854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10854(choice, ...) METALANG99_PRIV_REC_NEXT(10855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10855(choice, ...) METALANG99_PRIV_REC_NEXT(10856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10856(choice, ...) METALANG99_PRIV_REC_NEXT(10857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10857(choice, ...) METALANG99_PRIV_REC_NEXT(10858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10858(choice, ...) METALANG99_PRIV_REC_NEXT(10859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10859(choice, ...) METALANG99_PRIV_REC_NEXT(10860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10860(choice, ...) METALANG99_PRIV_REC_NEXT(10861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10861(choice, ...) METALANG99_PRIV_REC_NEXT(10862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10862(choice, ...) METALANG99_PRIV_REC_NEXT(10863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10863(choice, ...) METALANG99_PRIV_REC_NEXT(10864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10864(choice, ...) METALANG99_PRIV_REC_NEXT(10865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10865(choice, ...) METALANG99_PRIV_REC_NEXT(10866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10866(choice, ...) METALANG99_PRIV_REC_NEXT(10867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10867(choice, ...) METALANG99_PRIV_REC_NEXT(10868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10868(choice, ...) METALANG99_PRIV_REC_NEXT(10869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10869(choice, ...) METALANG99_PRIV_REC_NEXT(10870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10870(choice, ...) METALANG99_PRIV_REC_NEXT(10871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10871(choice, ...) METALANG99_PRIV_REC_NEXT(10872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10872(choice, ...) METALANG99_PRIV_REC_NEXT(10873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10873(choice, ...) METALANG99_PRIV_REC_NEXT(10874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10874(choice, ...) METALANG99_PRIV_REC_NEXT(10875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10875(choice, ...) METALANG99_PRIV_REC_NEXT(10876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10876(choice, ...) METALANG99_PRIV_REC_NEXT(10877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10877(choice, ...) METALANG99_PRIV_REC_NEXT(10878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10878(choice, ...) METALANG99_PRIV_REC_NEXT(10879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10879(choice, ...) METALANG99_PRIV_REC_NEXT(10880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10880(choice, ...) METALANG99_PRIV_REC_NEXT(10881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10881(choice, ...) METALANG99_PRIV_REC_NEXT(10882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10882(choice, ...) METALANG99_PRIV_REC_NEXT(10883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10883(choice, ...) METALANG99_PRIV_REC_NEXT(10884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10884(choice, ...) METALANG99_PRIV_REC_NEXT(10885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10885(choice, ...) METALANG99_PRIV_REC_NEXT(10886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10886(choice, ...) METALANG99_PRIV_REC_NEXT(10887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10887(choice, ...) METALANG99_PRIV_REC_NEXT(10888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10888(choice, ...) METALANG99_PRIV_REC_NEXT(10889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10889(choice, ...) METALANG99_PRIV_REC_NEXT(10890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10890(choice, ...) METALANG99_PRIV_REC_NEXT(10891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10891(choice, ...) METALANG99_PRIV_REC_NEXT(10892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10892(choice, ...) METALANG99_PRIV_REC_NEXT(10893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10893(choice, ...) METALANG99_PRIV_REC_NEXT(10894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10894(choice, ...) METALANG99_PRIV_REC_NEXT(10895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10895(choice, ...) METALANG99_PRIV_REC_NEXT(10896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10896(choice, ...) METALANG99_PRIV_REC_NEXT(10897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10897(choice, ...) METALANG99_PRIV_REC_NEXT(10898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10898(choice, ...) METALANG99_PRIV_REC_NEXT(10899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10899(choice, ...) METALANG99_PRIV_REC_NEXT(10900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10900(choice, ...) METALANG99_PRIV_REC_NEXT(10901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10901(choice, ...) METALANG99_PRIV_REC_NEXT(10902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10902(choice, ...) METALANG99_PRIV_REC_NEXT(10903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10903(choice, ...) METALANG99_PRIV_REC_NEXT(10904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10904(choice, ...) METALANG99_PRIV_REC_NEXT(10905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10905(choice, ...) METALANG99_PRIV_REC_NEXT(10906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10906(choice, ...) METALANG99_PRIV_REC_NEXT(10907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10907(choice, ...) METALANG99_PRIV_REC_NEXT(10908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10908(choice, ...) METALANG99_PRIV_REC_NEXT(10909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10909(choice, ...) METALANG99_PRIV_REC_NEXT(10910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10910(choice, ...) METALANG99_PRIV_REC_NEXT(10911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10911(choice, ...) METALANG99_PRIV_REC_NEXT(10912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10912(choice, ...) METALANG99_PRIV_REC_NEXT(10913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10913(choice, ...) METALANG99_PRIV_REC_NEXT(10914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10914(choice, ...) METALANG99_PRIV_REC_NEXT(10915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10915(choice, ...) METALANG99_PRIV_REC_NEXT(10916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10916(choice, ...) METALANG99_PRIV_REC_NEXT(10917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10917(choice, ...) METALANG99_PRIV_REC_NEXT(10918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10918(choice, ...) METALANG99_PRIV_REC_NEXT(10919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10919(choice, ...) METALANG99_PRIV_REC_NEXT(10920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10920(choice, ...) METALANG99_PRIV_REC_NEXT(10921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10921(choice, ...) METALANG99_PRIV_REC_NEXT(10922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10922(choice, ...) METALANG99_PRIV_REC_NEXT(10923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10923(choice, ...) METALANG99_PRIV_REC_NEXT(10924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10924(choice, ...) METALANG99_PRIV_REC_NEXT(10925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10925(choice, ...) METALANG99_PRIV_REC_NEXT(10926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10926(choice, ...) METALANG99_PRIV_REC_NEXT(10927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10927(choice, ...) METALANG99_PRIV_REC_NEXT(10928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10928(choice, ...) METALANG99_PRIV_REC_NEXT(10929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10929(choice, ...) METALANG99_PRIV_REC_NEXT(10930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10930(choice, ...) METALANG99_PRIV_REC_NEXT(10931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10931(choice, ...) METALANG99_PRIV_REC_NEXT(10932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10932(choice, ...) METALANG99_PRIV_REC_NEXT(10933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10933(choice, ...) METALANG99_PRIV_REC_NEXT(10934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10934(choice, ...) METALANG99_PRIV_REC_NEXT(10935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10935(choice, ...) METALANG99_PRIV_REC_NEXT(10936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10936(choice, ...) METALANG99_PRIV_REC_NEXT(10937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10937(choice, ...) METALANG99_PRIV_REC_NEXT(10938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10938(choice, ...) METALANG99_PRIV_REC_NEXT(10939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10939(choice, ...) METALANG99_PRIV_REC_NEXT(10940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10940(choice, ...) METALANG99_PRIV_REC_NEXT(10941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10941(choice, ...) METALANG99_PRIV_REC_NEXT(10942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10942(choice, ...) METALANG99_PRIV_REC_NEXT(10943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10943(choice, ...) METALANG99_PRIV_REC_NEXT(10944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10944(choice, ...) METALANG99_PRIV_REC_NEXT(10945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10945(choice, ...) METALANG99_PRIV_REC_NEXT(10946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10946(choice, ...) METALANG99_PRIV_REC_NEXT(10947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10947(choice, ...) METALANG99_PRIV_REC_NEXT(10948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10948(choice, ...) METALANG99_PRIV_REC_NEXT(10949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10949(choice, ...) METALANG99_PRIV_REC_NEXT(10950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10950(choice, ...) METALANG99_PRIV_REC_NEXT(10951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10951(choice, ...) METALANG99_PRIV_REC_NEXT(10952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10952(choice, ...) METALANG99_PRIV_REC_NEXT(10953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10953(choice, ...) METALANG99_PRIV_REC_NEXT(10954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10954(choice, ...) METALANG99_PRIV_REC_NEXT(10955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10955(choice, ...) METALANG99_PRIV_REC_NEXT(10956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10956(choice, ...) METALANG99_PRIV_REC_NEXT(10957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10957(choice, ...) METALANG99_PRIV_REC_NEXT(10958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10958(choice, ...) METALANG99_PRIV_REC_NEXT(10959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10959(choice, ...) METALANG99_PRIV_REC_NEXT(10960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10960(choice, ...) METALANG99_PRIV_REC_NEXT(10961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10961(choice, ...) METALANG99_PRIV_REC_NEXT(10962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10962(choice, ...) METALANG99_PRIV_REC_NEXT(10963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10963(choice, ...) METALANG99_PRIV_REC_NEXT(10964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10964(choice, ...) METALANG99_PRIV_REC_NEXT(10965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10965(choice, ...) METALANG99_PRIV_REC_NEXT(10966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10966(choice, ...) METALANG99_PRIV_REC_NEXT(10967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10967(choice, ...) METALANG99_PRIV_REC_NEXT(10968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10968(choice, ...) METALANG99_PRIV_REC_NEXT(10969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10969(choice, ...) METALANG99_PRIV_REC_NEXT(10970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10970(choice, ...) METALANG99_PRIV_REC_NEXT(10971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10971(choice, ...) METALANG99_PRIV_REC_NEXT(10972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10972(choice, ...) METALANG99_PRIV_REC_NEXT(10973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10973(choice, ...) METALANG99_PRIV_REC_NEXT(10974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10974(choice, ...) METALANG99_PRIV_REC_NEXT(10975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10975(choice, ...) METALANG99_PRIV_REC_NEXT(10976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10976(choice, ...) METALANG99_PRIV_REC_NEXT(10977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10977(choice, ...) METALANG99_PRIV_REC_NEXT(10978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10978(choice, ...) METALANG99_PRIV_REC_NEXT(10979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10979(choice, ...) METALANG99_PRIV_REC_NEXT(10980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10980(choice, ...) METALANG99_PRIV_REC_NEXT(10981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10981(choice, ...) METALANG99_PRIV_REC_NEXT(10982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10982(choice, ...) METALANG99_PRIV_REC_NEXT(10983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10983(choice, ...) METALANG99_PRIV_REC_NEXT(10984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10984(choice, ...) METALANG99_PRIV_REC_NEXT(10985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10985(choice, ...) METALANG99_PRIV_REC_NEXT(10986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10986(choice, ...) METALANG99_PRIV_REC_NEXT(10987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10987(choice, ...) METALANG99_PRIV_REC_NEXT(10988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10988(choice, ...) METALANG99_PRIV_REC_NEXT(10989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10989(choice, ...) METALANG99_PRIV_REC_NEXT(10990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10990(choice, ...) METALANG99_PRIV_REC_NEXT(10991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10991(choice, ...) METALANG99_PRIV_REC_NEXT(10992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10992(choice, ...) METALANG99_PRIV_REC_NEXT(10993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10993(choice, ...) METALANG99_PRIV_REC_NEXT(10994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10994(choice, ...) METALANG99_PRIV_REC_NEXT(10995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10995(choice, ...) METALANG99_PRIV_REC_NEXT(10996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10996(choice, ...) METALANG99_PRIV_REC_NEXT(10997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10997(choice, ...) METALANG99_PRIV_REC_NEXT(10998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10998(choice, ...) METALANG99_PRIV_REC_NEXT(10999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_10999(choice, ...) METALANG99_PRIV_REC_NEXT(11000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11000(choice, ...) METALANG99_PRIV_REC_NEXT(11001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11001(choice, ...) METALANG99_PRIV_REC_NEXT(11002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11002(choice, ...) METALANG99_PRIV_REC_NEXT(11003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11003(choice, ...) METALANG99_PRIV_REC_NEXT(11004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11004(choice, ...) METALANG99_PRIV_REC_NEXT(11005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11005(choice, ...) METALANG99_PRIV_REC_NEXT(11006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11006(choice, ...) METALANG99_PRIV_REC_NEXT(11007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11007(choice, ...) METALANG99_PRIV_REC_NEXT(11008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11008(choice, ...) METALANG99_PRIV_REC_NEXT(11009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11009(choice, ...) METALANG99_PRIV_REC_NEXT(11010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11010(choice, ...) METALANG99_PRIV_REC_NEXT(11011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11011(choice, ...) METALANG99_PRIV_REC_NEXT(11012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11012(choice, ...) METALANG99_PRIV_REC_NEXT(11013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11013(choice, ...) METALANG99_PRIV_REC_NEXT(11014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11014(choice, ...) METALANG99_PRIV_REC_NEXT(11015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11015(choice, ...) METALANG99_PRIV_REC_NEXT(11016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11016(choice, ...) METALANG99_PRIV_REC_NEXT(11017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11017(choice, ...) METALANG99_PRIV_REC_NEXT(11018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11018(choice, ...) METALANG99_PRIV_REC_NEXT(11019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11019(choice, ...) METALANG99_PRIV_REC_NEXT(11020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11020(choice, ...) METALANG99_PRIV_REC_NEXT(11021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11021(choice, ...) METALANG99_PRIV_REC_NEXT(11022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11022(choice, ...) METALANG99_PRIV_REC_NEXT(11023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11023(choice, ...) METALANG99_PRIV_REC_NEXT(11024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11024(choice, ...) METALANG99_PRIV_REC_NEXT(11025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11025(choice, ...) METALANG99_PRIV_REC_NEXT(11026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11026(choice, ...) METALANG99_PRIV_REC_NEXT(11027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11027(choice, ...) METALANG99_PRIV_REC_NEXT(11028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11028(choice, ...) METALANG99_PRIV_REC_NEXT(11029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11029(choice, ...) METALANG99_PRIV_REC_NEXT(11030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11030(choice, ...) METALANG99_PRIV_REC_NEXT(11031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11031(choice, ...) METALANG99_PRIV_REC_NEXT(11032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11032(choice, ...) METALANG99_PRIV_REC_NEXT(11033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11033(choice, ...) METALANG99_PRIV_REC_NEXT(11034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11034(choice, ...) METALANG99_PRIV_REC_NEXT(11035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11035(choice, ...) METALANG99_PRIV_REC_NEXT(11036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11036(choice, ...) METALANG99_PRIV_REC_NEXT(11037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11037(choice, ...) METALANG99_PRIV_REC_NEXT(11038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11038(choice, ...) METALANG99_PRIV_REC_NEXT(11039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11039(choice, ...) METALANG99_PRIV_REC_NEXT(11040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11040(choice, ...) METALANG99_PRIV_REC_NEXT(11041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11041(choice, ...) METALANG99_PRIV_REC_NEXT(11042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11042(choice, ...) METALANG99_PRIV_REC_NEXT(11043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11043(choice, ...) METALANG99_PRIV_REC_NEXT(11044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11044(choice, ...) METALANG99_PRIV_REC_NEXT(11045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11045(choice, ...) METALANG99_PRIV_REC_NEXT(11046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11046(choice, ...) METALANG99_PRIV_REC_NEXT(11047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11047(choice, ...) METALANG99_PRIV_REC_NEXT(11048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11048(choice, ...) METALANG99_PRIV_REC_NEXT(11049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11049(choice, ...) METALANG99_PRIV_REC_NEXT(11050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11050(choice, ...) METALANG99_PRIV_REC_NEXT(11051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11051(choice, ...) METALANG99_PRIV_REC_NEXT(11052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11052(choice, ...) METALANG99_PRIV_REC_NEXT(11053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11053(choice, ...) METALANG99_PRIV_REC_NEXT(11054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11054(choice, ...) METALANG99_PRIV_REC_NEXT(11055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11055(choice, ...) METALANG99_PRIV_REC_NEXT(11056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11056(choice, ...) METALANG99_PRIV_REC_NEXT(11057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11057(choice, ...) METALANG99_PRIV_REC_NEXT(11058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11058(choice, ...) METALANG99_PRIV_REC_NEXT(11059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11059(choice, ...) METALANG99_PRIV_REC_NEXT(11060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11060(choice, ...) METALANG99_PRIV_REC_NEXT(11061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11061(choice, ...) METALANG99_PRIV_REC_NEXT(11062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11062(choice, ...) METALANG99_PRIV_REC_NEXT(11063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11063(choice, ...) METALANG99_PRIV_REC_NEXT(11064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11064(choice, ...) METALANG99_PRIV_REC_NEXT(11065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11065(choice, ...) METALANG99_PRIV_REC_NEXT(11066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11066(choice, ...) METALANG99_PRIV_REC_NEXT(11067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11067(choice, ...) METALANG99_PRIV_REC_NEXT(11068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11068(choice, ...) METALANG99_PRIV_REC_NEXT(11069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11069(choice, ...) METALANG99_PRIV_REC_NEXT(11070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11070(choice, ...) METALANG99_PRIV_REC_NEXT(11071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11071(choice, ...) METALANG99_PRIV_REC_NEXT(11072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11072(choice, ...) METALANG99_PRIV_REC_NEXT(11073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11073(choice, ...) METALANG99_PRIV_REC_NEXT(11074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11074(choice, ...) METALANG99_PRIV_REC_NEXT(11075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11075(choice, ...) METALANG99_PRIV_REC_NEXT(11076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11076(choice, ...) METALANG99_PRIV_REC_NEXT(11077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11077(choice, ...) METALANG99_PRIV_REC_NEXT(11078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11078(choice, ...) METALANG99_PRIV_REC_NEXT(11079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11079(choice, ...) METALANG99_PRIV_REC_NEXT(11080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11080(choice, ...) METALANG99_PRIV_REC_NEXT(11081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11081(choice, ...) METALANG99_PRIV_REC_NEXT(11082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11082(choice, ...) METALANG99_PRIV_REC_NEXT(11083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11083(choice, ...) METALANG99_PRIV_REC_NEXT(11084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11084(choice, ...) METALANG99_PRIV_REC_NEXT(11085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11085(choice, ...) METALANG99_PRIV_REC_NEXT(11086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11086(choice, ...) METALANG99_PRIV_REC_NEXT(11087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11087(choice, ...) METALANG99_PRIV_REC_NEXT(11088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11088(choice, ...) METALANG99_PRIV_REC_NEXT(11089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11089(choice, ...) METALANG99_PRIV_REC_NEXT(11090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11090(choice, ...) METALANG99_PRIV_REC_NEXT(11091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11091(choice, ...) METALANG99_PRIV_REC_NEXT(11092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11092(choice, ...) METALANG99_PRIV_REC_NEXT(11093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11093(choice, ...) METALANG99_PRIV_REC_NEXT(11094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11094(choice, ...) METALANG99_PRIV_REC_NEXT(11095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11095(choice, ...) METALANG99_PRIV_REC_NEXT(11096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11096(choice, ...) METALANG99_PRIV_REC_NEXT(11097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11097(choice, ...) METALANG99_PRIV_REC_NEXT(11098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11098(choice, ...) METALANG99_PRIV_REC_NEXT(11099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11099(choice, ...) METALANG99_PRIV_REC_NEXT(11100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11100(choice, ...) METALANG99_PRIV_REC_NEXT(11101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11101(choice, ...) METALANG99_PRIV_REC_NEXT(11102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11102(choice, ...) METALANG99_PRIV_REC_NEXT(11103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11103(choice, ...) METALANG99_PRIV_REC_NEXT(11104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11104(choice, ...) METALANG99_PRIV_REC_NEXT(11105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11105(choice, ...) METALANG99_PRIV_REC_NEXT(11106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11106(choice, ...) METALANG99_PRIV_REC_NEXT(11107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11107(choice, ...) METALANG99_PRIV_REC_NEXT(11108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11108(choice, ...) METALANG99_PRIV_REC_NEXT(11109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11109(choice, ...) METALANG99_PRIV_REC_NEXT(11110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11110(choice, ...) METALANG99_PRIV_REC_NEXT(11111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11111(choice, ...) METALANG99_PRIV_REC_NEXT(11112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11112(choice, ...) METALANG99_PRIV_REC_NEXT(11113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11113(choice, ...) METALANG99_PRIV_REC_NEXT(11114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11114(choice, ...) METALANG99_PRIV_REC_NEXT(11115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11115(choice, ...) METALANG99_PRIV_REC_NEXT(11116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11116(choice, ...) METALANG99_PRIV_REC_NEXT(11117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11117(choice, ...) METALANG99_PRIV_REC_NEXT(11118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11118(choice, ...) METALANG99_PRIV_REC_NEXT(11119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11119(choice, ...) METALANG99_PRIV_REC_NEXT(11120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11120(choice, ...) METALANG99_PRIV_REC_NEXT(11121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11121(choice, ...) METALANG99_PRIV_REC_NEXT(11122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11122(choice, ...) METALANG99_PRIV_REC_NEXT(11123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11123(choice, ...) METALANG99_PRIV_REC_NEXT(11124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11124(choice, ...) METALANG99_PRIV_REC_NEXT(11125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11125(choice, ...) METALANG99_PRIV_REC_NEXT(11126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11126(choice, ...) METALANG99_PRIV_REC_NEXT(11127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11127(choice, ...) METALANG99_PRIV_REC_NEXT(11128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11128(choice, ...) METALANG99_PRIV_REC_NEXT(11129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11129(choice, ...) METALANG99_PRIV_REC_NEXT(11130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11130(choice, ...) METALANG99_PRIV_REC_NEXT(11131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11131(choice, ...) METALANG99_PRIV_REC_NEXT(11132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11132(choice, ...) METALANG99_PRIV_REC_NEXT(11133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11133(choice, ...) METALANG99_PRIV_REC_NEXT(11134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11134(choice, ...) METALANG99_PRIV_REC_NEXT(11135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11135(choice, ...) METALANG99_PRIV_REC_NEXT(11136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11136(choice, ...) METALANG99_PRIV_REC_NEXT(11137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11137(choice, ...) METALANG99_PRIV_REC_NEXT(11138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11138(choice, ...) METALANG99_PRIV_REC_NEXT(11139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11139(choice, ...) METALANG99_PRIV_REC_NEXT(11140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11140(choice, ...) METALANG99_PRIV_REC_NEXT(11141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11141(choice, ...) METALANG99_PRIV_REC_NEXT(11142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11142(choice, ...) METALANG99_PRIV_REC_NEXT(11143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11143(choice, ...) METALANG99_PRIV_REC_NEXT(11144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11144(choice, ...) METALANG99_PRIV_REC_NEXT(11145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11145(choice, ...) METALANG99_PRIV_REC_NEXT(11146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11146(choice, ...) METALANG99_PRIV_REC_NEXT(11147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11147(choice, ...) METALANG99_PRIV_REC_NEXT(11148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11148(choice, ...) METALANG99_PRIV_REC_NEXT(11149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11149(choice, ...) METALANG99_PRIV_REC_NEXT(11150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11150(choice, ...) METALANG99_PRIV_REC_NEXT(11151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11151(choice, ...) METALANG99_PRIV_REC_NEXT(11152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11152(choice, ...) METALANG99_PRIV_REC_NEXT(11153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11153(choice, ...) METALANG99_PRIV_REC_NEXT(11154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11154(choice, ...) METALANG99_PRIV_REC_NEXT(11155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11155(choice, ...) METALANG99_PRIV_REC_NEXT(11156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11156(choice, ...) METALANG99_PRIV_REC_NEXT(11157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11157(choice, ...) METALANG99_PRIV_REC_NEXT(11158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11158(choice, ...) METALANG99_PRIV_REC_NEXT(11159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11159(choice, ...) METALANG99_PRIV_REC_NEXT(11160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11160(choice, ...) METALANG99_PRIV_REC_NEXT(11161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11161(choice, ...) METALANG99_PRIV_REC_NEXT(11162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11162(choice, ...) METALANG99_PRIV_REC_NEXT(11163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11163(choice, ...) METALANG99_PRIV_REC_NEXT(11164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11164(choice, ...) METALANG99_PRIV_REC_NEXT(11165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11165(choice, ...) METALANG99_PRIV_REC_NEXT(11166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11166(choice, ...) METALANG99_PRIV_REC_NEXT(11167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11167(choice, ...) METALANG99_PRIV_REC_NEXT(11168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11168(choice, ...) METALANG99_PRIV_REC_NEXT(11169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11169(choice, ...) METALANG99_PRIV_REC_NEXT(11170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11170(choice, ...) METALANG99_PRIV_REC_NEXT(11171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11171(choice, ...) METALANG99_PRIV_REC_NEXT(11172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11172(choice, ...) METALANG99_PRIV_REC_NEXT(11173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11173(choice, ...) METALANG99_PRIV_REC_NEXT(11174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11174(choice, ...) METALANG99_PRIV_REC_NEXT(11175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11175(choice, ...) METALANG99_PRIV_REC_NEXT(11176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11176(choice, ...) METALANG99_PRIV_REC_NEXT(11177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11177(choice, ...) METALANG99_PRIV_REC_NEXT(11178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11178(choice, ...) METALANG99_PRIV_REC_NEXT(11179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11179(choice, ...) METALANG99_PRIV_REC_NEXT(11180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11180(choice, ...) METALANG99_PRIV_REC_NEXT(11181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11181(choice, ...) METALANG99_PRIV_REC_NEXT(11182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11182(choice, ...) METALANG99_PRIV_REC_NEXT(11183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11183(choice, ...) METALANG99_PRIV_REC_NEXT(11184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11184(choice, ...) METALANG99_PRIV_REC_NEXT(11185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11185(choice, ...) METALANG99_PRIV_REC_NEXT(11186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11186(choice, ...) METALANG99_PRIV_REC_NEXT(11187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11187(choice, ...) METALANG99_PRIV_REC_NEXT(11188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11188(choice, ...) METALANG99_PRIV_REC_NEXT(11189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11189(choice, ...) METALANG99_PRIV_REC_NEXT(11190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11190(choice, ...) METALANG99_PRIV_REC_NEXT(11191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11191(choice, ...) METALANG99_PRIV_REC_NEXT(11192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11192(choice, ...) METALANG99_PRIV_REC_NEXT(11193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11193(choice, ...) METALANG99_PRIV_REC_NEXT(11194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11194(choice, ...) METALANG99_PRIV_REC_NEXT(11195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11195(choice, ...) METALANG99_PRIV_REC_NEXT(11196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11196(choice, ...) METALANG99_PRIV_REC_NEXT(11197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11197(choice, ...) METALANG99_PRIV_REC_NEXT(11198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11198(choice, ...) METALANG99_PRIV_REC_NEXT(11199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11199(choice, ...) METALANG99_PRIV_REC_NEXT(11200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11200(choice, ...) METALANG99_PRIV_REC_NEXT(11201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11201(choice, ...) METALANG99_PRIV_REC_NEXT(11202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11202(choice, ...) METALANG99_PRIV_REC_NEXT(11203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11203(choice, ...) METALANG99_PRIV_REC_NEXT(11204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11204(choice, ...) METALANG99_PRIV_REC_NEXT(11205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11205(choice, ...) METALANG99_PRIV_REC_NEXT(11206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11206(choice, ...) METALANG99_PRIV_REC_NEXT(11207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11207(choice, ...) METALANG99_PRIV_REC_NEXT(11208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11208(choice, ...) METALANG99_PRIV_REC_NEXT(11209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11209(choice, ...) METALANG99_PRIV_REC_NEXT(11210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11210(choice, ...) METALANG99_PRIV_REC_NEXT(11211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11211(choice, ...) METALANG99_PRIV_REC_NEXT(11212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11212(choice, ...) METALANG99_PRIV_REC_NEXT(11213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11213(choice, ...) METALANG99_PRIV_REC_NEXT(11214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11214(choice, ...) METALANG99_PRIV_REC_NEXT(11215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11215(choice, ...) METALANG99_PRIV_REC_NEXT(11216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11216(choice, ...) METALANG99_PRIV_REC_NEXT(11217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11217(choice, ...) METALANG99_PRIV_REC_NEXT(11218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11218(choice, ...) METALANG99_PRIV_REC_NEXT(11219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11219(choice, ...) METALANG99_PRIV_REC_NEXT(11220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11220(choice, ...) METALANG99_PRIV_REC_NEXT(11221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11221(choice, ...) METALANG99_PRIV_REC_NEXT(11222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11222(choice, ...) METALANG99_PRIV_REC_NEXT(11223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11223(choice, ...) METALANG99_PRIV_REC_NEXT(11224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11224(choice, ...) METALANG99_PRIV_REC_NEXT(11225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11225(choice, ...) METALANG99_PRIV_REC_NEXT(11226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11226(choice, ...) METALANG99_PRIV_REC_NEXT(11227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11227(choice, ...) METALANG99_PRIV_REC_NEXT(11228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11228(choice, ...) METALANG99_PRIV_REC_NEXT(11229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11229(choice, ...) METALANG99_PRIV_REC_NEXT(11230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11230(choice, ...) METALANG99_PRIV_REC_NEXT(11231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11231(choice, ...) METALANG99_PRIV_REC_NEXT(11232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11232(choice, ...) METALANG99_PRIV_REC_NEXT(11233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11233(choice, ...) METALANG99_PRIV_REC_NEXT(11234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11234(choice, ...) METALANG99_PRIV_REC_NEXT(11235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11235(choice, ...) METALANG99_PRIV_REC_NEXT(11236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11236(choice, ...) METALANG99_PRIV_REC_NEXT(11237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11237(choice, ...) METALANG99_PRIV_REC_NEXT(11238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11238(choice, ...) METALANG99_PRIV_REC_NEXT(11239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11239(choice, ...) METALANG99_PRIV_REC_NEXT(11240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11240(choice, ...) METALANG99_PRIV_REC_NEXT(11241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11241(choice, ...) METALANG99_PRIV_REC_NEXT(11242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11242(choice, ...) METALANG99_PRIV_REC_NEXT(11243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11243(choice, ...) METALANG99_PRIV_REC_NEXT(11244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11244(choice, ...) METALANG99_PRIV_REC_NEXT(11245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11245(choice, ...) METALANG99_PRIV_REC_NEXT(11246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11246(choice, ...) METALANG99_PRIV_REC_NEXT(11247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11247(choice, ...) METALANG99_PRIV_REC_NEXT(11248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11248(choice, ...) METALANG99_PRIV_REC_NEXT(11249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11249(choice, ...) METALANG99_PRIV_REC_NEXT(11250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11250(choice, ...) METALANG99_PRIV_REC_NEXT(11251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11251(choice, ...) METALANG99_PRIV_REC_NEXT(11252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11252(choice, ...) METALANG99_PRIV_REC_NEXT(11253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11253(choice, ...) METALANG99_PRIV_REC_NEXT(11254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11254(choice, ...) METALANG99_PRIV_REC_NEXT(11255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11255(choice, ...) METALANG99_PRIV_REC_NEXT(11256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11256(choice, ...) METALANG99_PRIV_REC_NEXT(11257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11257(choice, ...) METALANG99_PRIV_REC_NEXT(11258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11258(choice, ...) METALANG99_PRIV_REC_NEXT(11259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11259(choice, ...) METALANG99_PRIV_REC_NEXT(11260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11260(choice, ...) METALANG99_PRIV_REC_NEXT(11261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11261(choice, ...) METALANG99_PRIV_REC_NEXT(11262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11262(choice, ...) METALANG99_PRIV_REC_NEXT(11263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11263(choice, ...) METALANG99_PRIV_REC_NEXT(11264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11264(choice, ...) METALANG99_PRIV_REC_NEXT(11265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11265(choice, ...) METALANG99_PRIV_REC_NEXT(11266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11266(choice, ...) METALANG99_PRIV_REC_NEXT(11267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11267(choice, ...) METALANG99_PRIV_REC_NEXT(11268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11268(choice, ...) METALANG99_PRIV_REC_NEXT(11269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11269(choice, ...) METALANG99_PRIV_REC_NEXT(11270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11270(choice, ...) METALANG99_PRIV_REC_NEXT(11271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11271(choice, ...) METALANG99_PRIV_REC_NEXT(11272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11272(choice, ...) METALANG99_PRIV_REC_NEXT(11273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11273(choice, ...) METALANG99_PRIV_REC_NEXT(11274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11274(choice, ...) METALANG99_PRIV_REC_NEXT(11275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11275(choice, ...) METALANG99_PRIV_REC_NEXT(11276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11276(choice, ...) METALANG99_PRIV_REC_NEXT(11277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11277(choice, ...) METALANG99_PRIV_REC_NEXT(11278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11278(choice, ...) METALANG99_PRIV_REC_NEXT(11279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11279(choice, ...) METALANG99_PRIV_REC_NEXT(11280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11280(choice, ...) METALANG99_PRIV_REC_NEXT(11281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11281(choice, ...) METALANG99_PRIV_REC_NEXT(11282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11282(choice, ...) METALANG99_PRIV_REC_NEXT(11283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11283(choice, ...) METALANG99_PRIV_REC_NEXT(11284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11284(choice, ...) METALANG99_PRIV_REC_NEXT(11285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11285(choice, ...) METALANG99_PRIV_REC_NEXT(11286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11286(choice, ...) METALANG99_PRIV_REC_NEXT(11287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11287(choice, ...) METALANG99_PRIV_REC_NEXT(11288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11288(choice, ...) METALANG99_PRIV_REC_NEXT(11289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11289(choice, ...) METALANG99_PRIV_REC_NEXT(11290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11290(choice, ...) METALANG99_PRIV_REC_NEXT(11291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11291(choice, ...) METALANG99_PRIV_REC_NEXT(11292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11292(choice, ...) METALANG99_PRIV_REC_NEXT(11293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11293(choice, ...) METALANG99_PRIV_REC_NEXT(11294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11294(choice, ...) METALANG99_PRIV_REC_NEXT(11295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11295(choice, ...) METALANG99_PRIV_REC_NEXT(11296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11296(choice, ...) METALANG99_PRIV_REC_NEXT(11297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11297(choice, ...) METALANG99_PRIV_REC_NEXT(11298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11298(choice, ...) METALANG99_PRIV_REC_NEXT(11299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11299(choice, ...) METALANG99_PRIV_REC_NEXT(11300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11300(choice, ...) METALANG99_PRIV_REC_NEXT(11301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11301(choice, ...) METALANG99_PRIV_REC_NEXT(11302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11302(choice, ...) METALANG99_PRIV_REC_NEXT(11303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11303(choice, ...) METALANG99_PRIV_REC_NEXT(11304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11304(choice, ...) METALANG99_PRIV_REC_NEXT(11305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11305(choice, ...) METALANG99_PRIV_REC_NEXT(11306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11306(choice, ...) METALANG99_PRIV_REC_NEXT(11307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11307(choice, ...) METALANG99_PRIV_REC_NEXT(11308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11308(choice, ...) METALANG99_PRIV_REC_NEXT(11309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11309(choice, ...) METALANG99_PRIV_REC_NEXT(11310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11310(choice, ...) METALANG99_PRIV_REC_NEXT(11311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11311(choice, ...) METALANG99_PRIV_REC_NEXT(11312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11312(choice, ...) METALANG99_PRIV_REC_NEXT(11313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11313(choice, ...) METALANG99_PRIV_REC_NEXT(11314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11314(choice, ...) METALANG99_PRIV_REC_NEXT(11315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11315(choice, ...) METALANG99_PRIV_REC_NEXT(11316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11316(choice, ...) METALANG99_PRIV_REC_NEXT(11317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11317(choice, ...) METALANG99_PRIV_REC_NEXT(11318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11318(choice, ...) METALANG99_PRIV_REC_NEXT(11319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11319(choice, ...) METALANG99_PRIV_REC_NEXT(11320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11320(choice, ...) METALANG99_PRIV_REC_NEXT(11321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11321(choice, ...) METALANG99_PRIV_REC_NEXT(11322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11322(choice, ...) METALANG99_PRIV_REC_NEXT(11323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11323(choice, ...) METALANG99_PRIV_REC_NEXT(11324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11324(choice, ...) METALANG99_PRIV_REC_NEXT(11325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11325(choice, ...) METALANG99_PRIV_REC_NEXT(11326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11326(choice, ...) METALANG99_PRIV_REC_NEXT(11327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11327(choice, ...) METALANG99_PRIV_REC_NEXT(11328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11328(choice, ...) METALANG99_PRIV_REC_NEXT(11329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11329(choice, ...) METALANG99_PRIV_REC_NEXT(11330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11330(choice, ...) METALANG99_PRIV_REC_NEXT(11331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11331(choice, ...) METALANG99_PRIV_REC_NEXT(11332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11332(choice, ...) METALANG99_PRIV_REC_NEXT(11333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11333(choice, ...) METALANG99_PRIV_REC_NEXT(11334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11334(choice, ...) METALANG99_PRIV_REC_NEXT(11335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11335(choice, ...) METALANG99_PRIV_REC_NEXT(11336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11336(choice, ...) METALANG99_PRIV_REC_NEXT(11337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11337(choice, ...) METALANG99_PRIV_REC_NEXT(11338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11338(choice, ...) METALANG99_PRIV_REC_NEXT(11339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11339(choice, ...) METALANG99_PRIV_REC_NEXT(11340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11340(choice, ...) METALANG99_PRIV_REC_NEXT(11341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11341(choice, ...) METALANG99_PRIV_REC_NEXT(11342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11342(choice, ...) METALANG99_PRIV_REC_NEXT(11343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11343(choice, ...) METALANG99_PRIV_REC_NEXT(11344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11344(choice, ...) METALANG99_PRIV_REC_NEXT(11345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11345(choice, ...) METALANG99_PRIV_REC_NEXT(11346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11346(choice, ...) METALANG99_PRIV_REC_NEXT(11347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11347(choice, ...) METALANG99_PRIV_REC_NEXT(11348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11348(choice, ...) METALANG99_PRIV_REC_NEXT(11349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11349(choice, ...) METALANG99_PRIV_REC_NEXT(11350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11350(choice, ...) METALANG99_PRIV_REC_NEXT(11351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11351(choice, ...) METALANG99_PRIV_REC_NEXT(11352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11352(choice, ...) METALANG99_PRIV_REC_NEXT(11353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11353(choice, ...) METALANG99_PRIV_REC_NEXT(11354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11354(choice, ...) METALANG99_PRIV_REC_NEXT(11355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11355(choice, ...) METALANG99_PRIV_REC_NEXT(11356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11356(choice, ...) METALANG99_PRIV_REC_NEXT(11357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11357(choice, ...) METALANG99_PRIV_REC_NEXT(11358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11358(choice, ...) METALANG99_PRIV_REC_NEXT(11359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11359(choice, ...) METALANG99_PRIV_REC_NEXT(11360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11360(choice, ...) METALANG99_PRIV_REC_NEXT(11361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11361(choice, ...) METALANG99_PRIV_REC_NEXT(11362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11362(choice, ...) METALANG99_PRIV_REC_NEXT(11363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11363(choice, ...) METALANG99_PRIV_REC_NEXT(11364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11364(choice, ...) METALANG99_PRIV_REC_NEXT(11365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11365(choice, ...) METALANG99_PRIV_REC_NEXT(11366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11366(choice, ...) METALANG99_PRIV_REC_NEXT(11367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11367(choice, ...) METALANG99_PRIV_REC_NEXT(11368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11368(choice, ...) METALANG99_PRIV_REC_NEXT(11369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11369(choice, ...) METALANG99_PRIV_REC_NEXT(11370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11370(choice, ...) METALANG99_PRIV_REC_NEXT(11371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11371(choice, ...) METALANG99_PRIV_REC_NEXT(11372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11372(choice, ...) METALANG99_PRIV_REC_NEXT(11373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11373(choice, ...) METALANG99_PRIV_REC_NEXT(11374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11374(choice, ...) METALANG99_PRIV_REC_NEXT(11375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11375(choice, ...) METALANG99_PRIV_REC_NEXT(11376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11376(choice, ...) METALANG99_PRIV_REC_NEXT(11377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11377(choice, ...) METALANG99_PRIV_REC_NEXT(11378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11378(choice, ...) METALANG99_PRIV_REC_NEXT(11379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11379(choice, ...) METALANG99_PRIV_REC_NEXT(11380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11380(choice, ...) METALANG99_PRIV_REC_NEXT(11381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11381(choice, ...) METALANG99_PRIV_REC_NEXT(11382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11382(choice, ...) METALANG99_PRIV_REC_NEXT(11383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11383(choice, ...) METALANG99_PRIV_REC_NEXT(11384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11384(choice, ...) METALANG99_PRIV_REC_NEXT(11385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11385(choice, ...) METALANG99_PRIV_REC_NEXT(11386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11386(choice, ...) METALANG99_PRIV_REC_NEXT(11387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11387(choice, ...) METALANG99_PRIV_REC_NEXT(11388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11388(choice, ...) METALANG99_PRIV_REC_NEXT(11389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11389(choice, ...) METALANG99_PRIV_REC_NEXT(11390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11390(choice, ...) METALANG99_PRIV_REC_NEXT(11391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11391(choice, ...) METALANG99_PRIV_REC_NEXT(11392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11392(choice, ...) METALANG99_PRIV_REC_NEXT(11393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11393(choice, ...) METALANG99_PRIV_REC_NEXT(11394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11394(choice, ...) METALANG99_PRIV_REC_NEXT(11395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11395(choice, ...) METALANG99_PRIV_REC_NEXT(11396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11396(choice, ...) METALANG99_PRIV_REC_NEXT(11397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11397(choice, ...) METALANG99_PRIV_REC_NEXT(11398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11398(choice, ...) METALANG99_PRIV_REC_NEXT(11399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11399(choice, ...) METALANG99_PRIV_REC_NEXT(11400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11400(choice, ...) METALANG99_PRIV_REC_NEXT(11401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11401(choice, ...) METALANG99_PRIV_REC_NEXT(11402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11402(choice, ...) METALANG99_PRIV_REC_NEXT(11403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11403(choice, ...) METALANG99_PRIV_REC_NEXT(11404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11404(choice, ...) METALANG99_PRIV_REC_NEXT(11405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11405(choice, ...) METALANG99_PRIV_REC_NEXT(11406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11406(choice, ...) METALANG99_PRIV_REC_NEXT(11407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11407(choice, ...) METALANG99_PRIV_REC_NEXT(11408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11408(choice, ...) METALANG99_PRIV_REC_NEXT(11409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11409(choice, ...) METALANG99_PRIV_REC_NEXT(11410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11410(choice, ...) METALANG99_PRIV_REC_NEXT(11411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11411(choice, ...) METALANG99_PRIV_REC_NEXT(11412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11412(choice, ...) METALANG99_PRIV_REC_NEXT(11413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11413(choice, ...) METALANG99_PRIV_REC_NEXT(11414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11414(choice, ...) METALANG99_PRIV_REC_NEXT(11415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11415(choice, ...) METALANG99_PRIV_REC_NEXT(11416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11416(choice, ...) METALANG99_PRIV_REC_NEXT(11417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11417(choice, ...) METALANG99_PRIV_REC_NEXT(11418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11418(choice, ...) METALANG99_PRIV_REC_NEXT(11419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11419(choice, ...) METALANG99_PRIV_REC_NEXT(11420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11420(choice, ...) METALANG99_PRIV_REC_NEXT(11421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11421(choice, ...) METALANG99_PRIV_REC_NEXT(11422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11422(choice, ...) METALANG99_PRIV_REC_NEXT(11423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11423(choice, ...) METALANG99_PRIV_REC_NEXT(11424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11424(choice, ...) METALANG99_PRIV_REC_NEXT(11425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11425(choice, ...) METALANG99_PRIV_REC_NEXT(11426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11426(choice, ...) METALANG99_PRIV_REC_NEXT(11427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11427(choice, ...) METALANG99_PRIV_REC_NEXT(11428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11428(choice, ...) METALANG99_PRIV_REC_NEXT(11429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11429(choice, ...) METALANG99_PRIV_REC_NEXT(11430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11430(choice, ...) METALANG99_PRIV_REC_NEXT(11431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11431(choice, ...) METALANG99_PRIV_REC_NEXT(11432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11432(choice, ...) METALANG99_PRIV_REC_NEXT(11433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11433(choice, ...) METALANG99_PRIV_REC_NEXT(11434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11434(choice, ...) METALANG99_PRIV_REC_NEXT(11435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11435(choice, ...) METALANG99_PRIV_REC_NEXT(11436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11436(choice, ...) METALANG99_PRIV_REC_NEXT(11437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11437(choice, ...) METALANG99_PRIV_REC_NEXT(11438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11438(choice, ...) METALANG99_PRIV_REC_NEXT(11439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11439(choice, ...) METALANG99_PRIV_REC_NEXT(11440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11440(choice, ...) METALANG99_PRIV_REC_NEXT(11441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11441(choice, ...) METALANG99_PRIV_REC_NEXT(11442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11442(choice, ...) METALANG99_PRIV_REC_NEXT(11443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11443(choice, ...) METALANG99_PRIV_REC_NEXT(11444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11444(choice, ...) METALANG99_PRIV_REC_NEXT(11445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11445(choice, ...) METALANG99_PRIV_REC_NEXT(11446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11446(choice, ...) METALANG99_PRIV_REC_NEXT(11447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11447(choice, ...) METALANG99_PRIV_REC_NEXT(11448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11448(choice, ...) METALANG99_PRIV_REC_NEXT(11449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11449(choice, ...) METALANG99_PRIV_REC_NEXT(11450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11450(choice, ...) METALANG99_PRIV_REC_NEXT(11451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11451(choice, ...) METALANG99_PRIV_REC_NEXT(11452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11452(choice, ...) METALANG99_PRIV_REC_NEXT(11453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11453(choice, ...) METALANG99_PRIV_REC_NEXT(11454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11454(choice, ...) METALANG99_PRIV_REC_NEXT(11455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11455(choice, ...) METALANG99_PRIV_REC_NEXT(11456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11456(choice, ...) METALANG99_PRIV_REC_NEXT(11457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11457(choice, ...) METALANG99_PRIV_REC_NEXT(11458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11458(choice, ...) METALANG99_PRIV_REC_NEXT(11459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11459(choice, ...) METALANG99_PRIV_REC_NEXT(11460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11460(choice, ...) METALANG99_PRIV_REC_NEXT(11461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11461(choice, ...) METALANG99_PRIV_REC_NEXT(11462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11462(choice, ...) METALANG99_PRIV_REC_NEXT(11463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11463(choice, ...) METALANG99_PRIV_REC_NEXT(11464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11464(choice, ...) METALANG99_PRIV_REC_NEXT(11465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11465(choice, ...) METALANG99_PRIV_REC_NEXT(11466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11466(choice, ...) METALANG99_PRIV_REC_NEXT(11467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11467(choice, ...) METALANG99_PRIV_REC_NEXT(11468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11468(choice, ...) METALANG99_PRIV_REC_NEXT(11469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11469(choice, ...) METALANG99_PRIV_REC_NEXT(11470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11470(choice, ...) METALANG99_PRIV_REC_NEXT(11471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11471(choice, ...) METALANG99_PRIV_REC_NEXT(11472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11472(choice, ...) METALANG99_PRIV_REC_NEXT(11473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11473(choice, ...) METALANG99_PRIV_REC_NEXT(11474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11474(choice, ...) METALANG99_PRIV_REC_NEXT(11475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11475(choice, ...) METALANG99_PRIV_REC_NEXT(11476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11476(choice, ...) METALANG99_PRIV_REC_NEXT(11477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11477(choice, ...) METALANG99_PRIV_REC_NEXT(11478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11478(choice, ...) METALANG99_PRIV_REC_NEXT(11479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11479(choice, ...) METALANG99_PRIV_REC_NEXT(11480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11480(choice, ...) METALANG99_PRIV_REC_NEXT(11481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11481(choice, ...) METALANG99_PRIV_REC_NEXT(11482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11482(choice, ...) METALANG99_PRIV_REC_NEXT(11483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11483(choice, ...) METALANG99_PRIV_REC_NEXT(11484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11484(choice, ...) METALANG99_PRIV_REC_NEXT(11485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11485(choice, ...) METALANG99_PRIV_REC_NEXT(11486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11486(choice, ...) METALANG99_PRIV_REC_NEXT(11487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11487(choice, ...) METALANG99_PRIV_REC_NEXT(11488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11488(choice, ...) METALANG99_PRIV_REC_NEXT(11489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11489(choice, ...) METALANG99_PRIV_REC_NEXT(11490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11490(choice, ...) METALANG99_PRIV_REC_NEXT(11491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11491(choice, ...) METALANG99_PRIV_REC_NEXT(11492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11492(choice, ...) METALANG99_PRIV_REC_NEXT(11493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11493(choice, ...) METALANG99_PRIV_REC_NEXT(11494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11494(choice, ...) METALANG99_PRIV_REC_NEXT(11495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11495(choice, ...) METALANG99_PRIV_REC_NEXT(11496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11496(choice, ...) METALANG99_PRIV_REC_NEXT(11497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11497(choice, ...) METALANG99_PRIV_REC_NEXT(11498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11498(choice, ...) METALANG99_PRIV_REC_NEXT(11499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11499(choice, ...) METALANG99_PRIV_REC_NEXT(11500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11500(choice, ...) METALANG99_PRIV_REC_NEXT(11501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11501(choice, ...) METALANG99_PRIV_REC_NEXT(11502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11502(choice, ...) METALANG99_PRIV_REC_NEXT(11503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11503(choice, ...) METALANG99_PRIV_REC_NEXT(11504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11504(choice, ...) METALANG99_PRIV_REC_NEXT(11505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11505(choice, ...) METALANG99_PRIV_REC_NEXT(11506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11506(choice, ...) METALANG99_PRIV_REC_NEXT(11507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11507(choice, ...) METALANG99_PRIV_REC_NEXT(11508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11508(choice, ...) METALANG99_PRIV_REC_NEXT(11509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11509(choice, ...) METALANG99_PRIV_REC_NEXT(11510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11510(choice, ...) METALANG99_PRIV_REC_NEXT(11511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11511(choice, ...) METALANG99_PRIV_REC_NEXT(11512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11512(choice, ...) METALANG99_PRIV_REC_NEXT(11513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11513(choice, ...) METALANG99_PRIV_REC_NEXT(11514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11514(choice, ...) METALANG99_PRIV_REC_NEXT(11515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11515(choice, ...) METALANG99_PRIV_REC_NEXT(11516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11516(choice, ...) METALANG99_PRIV_REC_NEXT(11517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11517(choice, ...) METALANG99_PRIV_REC_NEXT(11518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11518(choice, ...) METALANG99_PRIV_REC_NEXT(11519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11519(choice, ...) METALANG99_PRIV_REC_NEXT(11520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11520(choice, ...) METALANG99_PRIV_REC_NEXT(11521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11521(choice, ...) METALANG99_PRIV_REC_NEXT(11522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11522(choice, ...) METALANG99_PRIV_REC_NEXT(11523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11523(choice, ...) METALANG99_PRIV_REC_NEXT(11524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11524(choice, ...) METALANG99_PRIV_REC_NEXT(11525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11525(choice, ...) METALANG99_PRIV_REC_NEXT(11526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11526(choice, ...) METALANG99_PRIV_REC_NEXT(11527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11527(choice, ...) METALANG99_PRIV_REC_NEXT(11528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11528(choice, ...) METALANG99_PRIV_REC_NEXT(11529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11529(choice, ...) METALANG99_PRIV_REC_NEXT(11530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11530(choice, ...) METALANG99_PRIV_REC_NEXT(11531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11531(choice, ...) METALANG99_PRIV_REC_NEXT(11532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11532(choice, ...) METALANG99_PRIV_REC_NEXT(11533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11533(choice, ...) METALANG99_PRIV_REC_NEXT(11534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11534(choice, ...) METALANG99_PRIV_REC_NEXT(11535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11535(choice, ...) METALANG99_PRIV_REC_NEXT(11536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11536(choice, ...) METALANG99_PRIV_REC_NEXT(11537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11537(choice, ...) METALANG99_PRIV_REC_NEXT(11538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11538(choice, ...) METALANG99_PRIV_REC_NEXT(11539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11539(choice, ...) METALANG99_PRIV_REC_NEXT(11540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11540(choice, ...) METALANG99_PRIV_REC_NEXT(11541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11541(choice, ...) METALANG99_PRIV_REC_NEXT(11542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11542(choice, ...) METALANG99_PRIV_REC_NEXT(11543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11543(choice, ...) METALANG99_PRIV_REC_NEXT(11544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11544(choice, ...) METALANG99_PRIV_REC_NEXT(11545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11545(choice, ...) METALANG99_PRIV_REC_NEXT(11546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11546(choice, ...) METALANG99_PRIV_REC_NEXT(11547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11547(choice, ...) METALANG99_PRIV_REC_NEXT(11548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11548(choice, ...) METALANG99_PRIV_REC_NEXT(11549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11549(choice, ...) METALANG99_PRIV_REC_NEXT(11550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11550(choice, ...) METALANG99_PRIV_REC_NEXT(11551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11551(choice, ...) METALANG99_PRIV_REC_NEXT(11552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11552(choice, ...) METALANG99_PRIV_REC_NEXT(11553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11553(choice, ...) METALANG99_PRIV_REC_NEXT(11554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11554(choice, ...) METALANG99_PRIV_REC_NEXT(11555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11555(choice, ...) METALANG99_PRIV_REC_NEXT(11556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11556(choice, ...) METALANG99_PRIV_REC_NEXT(11557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11557(choice, ...) METALANG99_PRIV_REC_NEXT(11558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11558(choice, ...) METALANG99_PRIV_REC_NEXT(11559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11559(choice, ...) METALANG99_PRIV_REC_NEXT(11560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11560(choice, ...) METALANG99_PRIV_REC_NEXT(11561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11561(choice, ...) METALANG99_PRIV_REC_NEXT(11562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11562(choice, ...) METALANG99_PRIV_REC_NEXT(11563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11563(choice, ...) METALANG99_PRIV_REC_NEXT(11564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11564(choice, ...) METALANG99_PRIV_REC_NEXT(11565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11565(choice, ...) METALANG99_PRIV_REC_NEXT(11566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11566(choice, ...) METALANG99_PRIV_REC_NEXT(11567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11567(choice, ...) METALANG99_PRIV_REC_NEXT(11568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11568(choice, ...) METALANG99_PRIV_REC_NEXT(11569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11569(choice, ...) METALANG99_PRIV_REC_NEXT(11570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11570(choice, ...) METALANG99_PRIV_REC_NEXT(11571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11571(choice, ...) METALANG99_PRIV_REC_NEXT(11572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11572(choice, ...) METALANG99_PRIV_REC_NEXT(11573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11573(choice, ...) METALANG99_PRIV_REC_NEXT(11574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11574(choice, ...) METALANG99_PRIV_REC_NEXT(11575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11575(choice, ...) METALANG99_PRIV_REC_NEXT(11576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11576(choice, ...) METALANG99_PRIV_REC_NEXT(11577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11577(choice, ...) METALANG99_PRIV_REC_NEXT(11578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11578(choice, ...) METALANG99_PRIV_REC_NEXT(11579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11579(choice, ...) METALANG99_PRIV_REC_NEXT(11580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11580(choice, ...) METALANG99_PRIV_REC_NEXT(11581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11581(choice, ...) METALANG99_PRIV_REC_NEXT(11582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11582(choice, ...) METALANG99_PRIV_REC_NEXT(11583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11583(choice, ...) METALANG99_PRIV_REC_NEXT(11584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11584(choice, ...) METALANG99_PRIV_REC_NEXT(11585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11585(choice, ...) METALANG99_PRIV_REC_NEXT(11586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11586(choice, ...) METALANG99_PRIV_REC_NEXT(11587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11587(choice, ...) METALANG99_PRIV_REC_NEXT(11588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11588(choice, ...) METALANG99_PRIV_REC_NEXT(11589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11589(choice, ...) METALANG99_PRIV_REC_NEXT(11590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11590(choice, ...) METALANG99_PRIV_REC_NEXT(11591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11591(choice, ...) METALANG99_PRIV_REC_NEXT(11592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11592(choice, ...) METALANG99_PRIV_REC_NEXT(11593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11593(choice, ...) METALANG99_PRIV_REC_NEXT(11594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11594(choice, ...) METALANG99_PRIV_REC_NEXT(11595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11595(choice, ...) METALANG99_PRIV_REC_NEXT(11596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11596(choice, ...) METALANG99_PRIV_REC_NEXT(11597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11597(choice, ...) METALANG99_PRIV_REC_NEXT(11598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11598(choice, ...) METALANG99_PRIV_REC_NEXT(11599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11599(choice, ...) METALANG99_PRIV_REC_NEXT(11600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11600(choice, ...) METALANG99_PRIV_REC_NEXT(11601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11601(choice, ...) METALANG99_PRIV_REC_NEXT(11602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11602(choice, ...) METALANG99_PRIV_REC_NEXT(11603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11603(choice, ...) METALANG99_PRIV_REC_NEXT(11604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11604(choice, ...) METALANG99_PRIV_REC_NEXT(11605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11605(choice, ...) METALANG99_PRIV_REC_NEXT(11606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11606(choice, ...) METALANG99_PRIV_REC_NEXT(11607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11607(choice, ...) METALANG99_PRIV_REC_NEXT(11608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11608(choice, ...) METALANG99_PRIV_REC_NEXT(11609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11609(choice, ...) METALANG99_PRIV_REC_NEXT(11610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11610(choice, ...) METALANG99_PRIV_REC_NEXT(11611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11611(choice, ...) METALANG99_PRIV_REC_NEXT(11612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11612(choice, ...) METALANG99_PRIV_REC_NEXT(11613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11613(choice, ...) METALANG99_PRIV_REC_NEXT(11614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11614(choice, ...) METALANG99_PRIV_REC_NEXT(11615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11615(choice, ...) METALANG99_PRIV_REC_NEXT(11616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11616(choice, ...) METALANG99_PRIV_REC_NEXT(11617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11617(choice, ...) METALANG99_PRIV_REC_NEXT(11618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11618(choice, ...) METALANG99_PRIV_REC_NEXT(11619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11619(choice, ...) METALANG99_PRIV_REC_NEXT(11620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11620(choice, ...) METALANG99_PRIV_REC_NEXT(11621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11621(choice, ...) METALANG99_PRIV_REC_NEXT(11622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11622(choice, ...) METALANG99_PRIV_REC_NEXT(11623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11623(choice, ...) METALANG99_PRIV_REC_NEXT(11624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11624(choice, ...) METALANG99_PRIV_REC_NEXT(11625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11625(choice, ...) METALANG99_PRIV_REC_NEXT(11626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11626(choice, ...) METALANG99_PRIV_REC_NEXT(11627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11627(choice, ...) METALANG99_PRIV_REC_NEXT(11628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11628(choice, ...) METALANG99_PRIV_REC_NEXT(11629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11629(choice, ...) METALANG99_PRIV_REC_NEXT(11630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11630(choice, ...) METALANG99_PRIV_REC_NEXT(11631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11631(choice, ...) METALANG99_PRIV_REC_NEXT(11632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11632(choice, ...) METALANG99_PRIV_REC_NEXT(11633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11633(choice, ...) METALANG99_PRIV_REC_NEXT(11634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11634(choice, ...) METALANG99_PRIV_REC_NEXT(11635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11635(choice, ...) METALANG99_PRIV_REC_NEXT(11636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11636(choice, ...) METALANG99_PRIV_REC_NEXT(11637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11637(choice, ...) METALANG99_PRIV_REC_NEXT(11638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11638(choice, ...) METALANG99_PRIV_REC_NEXT(11639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11639(choice, ...) METALANG99_PRIV_REC_NEXT(11640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11640(choice, ...) METALANG99_PRIV_REC_NEXT(11641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11641(choice, ...) METALANG99_PRIV_REC_NEXT(11642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11642(choice, ...) METALANG99_PRIV_REC_NEXT(11643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11643(choice, ...) METALANG99_PRIV_REC_NEXT(11644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11644(choice, ...) METALANG99_PRIV_REC_NEXT(11645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11645(choice, ...) METALANG99_PRIV_REC_NEXT(11646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11646(choice, ...) METALANG99_PRIV_REC_NEXT(11647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11647(choice, ...) METALANG99_PRIV_REC_NEXT(11648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11648(choice, ...) METALANG99_PRIV_REC_NEXT(11649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11649(choice, ...) METALANG99_PRIV_REC_NEXT(11650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11650(choice, ...) METALANG99_PRIV_REC_NEXT(11651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11651(choice, ...) METALANG99_PRIV_REC_NEXT(11652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11652(choice, ...) METALANG99_PRIV_REC_NEXT(11653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11653(choice, ...) METALANG99_PRIV_REC_NEXT(11654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11654(choice, ...) METALANG99_PRIV_REC_NEXT(11655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11655(choice, ...) METALANG99_PRIV_REC_NEXT(11656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11656(choice, ...) METALANG99_PRIV_REC_NEXT(11657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11657(choice, ...) METALANG99_PRIV_REC_NEXT(11658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11658(choice, ...) METALANG99_PRIV_REC_NEXT(11659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11659(choice, ...) METALANG99_PRIV_REC_NEXT(11660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11660(choice, ...) METALANG99_PRIV_REC_NEXT(11661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11661(choice, ...) METALANG99_PRIV_REC_NEXT(11662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11662(choice, ...) METALANG99_PRIV_REC_NEXT(11663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11663(choice, ...) METALANG99_PRIV_REC_NEXT(11664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11664(choice, ...) METALANG99_PRIV_REC_NEXT(11665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11665(choice, ...) METALANG99_PRIV_REC_NEXT(11666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11666(choice, ...) METALANG99_PRIV_REC_NEXT(11667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11667(choice, ...) METALANG99_PRIV_REC_NEXT(11668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11668(choice, ...) METALANG99_PRIV_REC_NEXT(11669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11669(choice, ...) METALANG99_PRIV_REC_NEXT(11670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11670(choice, ...) METALANG99_PRIV_REC_NEXT(11671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11671(choice, ...) METALANG99_PRIV_REC_NEXT(11672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11672(choice, ...) METALANG99_PRIV_REC_NEXT(11673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11673(choice, ...) METALANG99_PRIV_REC_NEXT(11674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11674(choice, ...) METALANG99_PRIV_REC_NEXT(11675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11675(choice, ...) METALANG99_PRIV_REC_NEXT(11676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11676(choice, ...) METALANG99_PRIV_REC_NEXT(11677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11677(choice, ...) METALANG99_PRIV_REC_NEXT(11678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11678(choice, ...) METALANG99_PRIV_REC_NEXT(11679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11679(choice, ...) METALANG99_PRIV_REC_NEXT(11680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11680(choice, ...) METALANG99_PRIV_REC_NEXT(11681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11681(choice, ...) METALANG99_PRIV_REC_NEXT(11682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11682(choice, ...) METALANG99_PRIV_REC_NEXT(11683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11683(choice, ...) METALANG99_PRIV_REC_NEXT(11684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11684(choice, ...) METALANG99_PRIV_REC_NEXT(11685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11685(choice, ...) METALANG99_PRIV_REC_NEXT(11686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11686(choice, ...) METALANG99_PRIV_REC_NEXT(11687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11687(choice, ...) METALANG99_PRIV_REC_NEXT(11688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11688(choice, ...) METALANG99_PRIV_REC_NEXT(11689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11689(choice, ...) METALANG99_PRIV_REC_NEXT(11690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11690(choice, ...) METALANG99_PRIV_REC_NEXT(11691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11691(choice, ...) METALANG99_PRIV_REC_NEXT(11692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11692(choice, ...) METALANG99_PRIV_REC_NEXT(11693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11693(choice, ...) METALANG99_PRIV_REC_NEXT(11694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11694(choice, ...) METALANG99_PRIV_REC_NEXT(11695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11695(choice, ...) METALANG99_PRIV_REC_NEXT(11696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11696(choice, ...) METALANG99_PRIV_REC_NEXT(11697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11697(choice, ...) METALANG99_PRIV_REC_NEXT(11698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11698(choice, ...) METALANG99_PRIV_REC_NEXT(11699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11699(choice, ...) METALANG99_PRIV_REC_NEXT(11700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11700(choice, ...) METALANG99_PRIV_REC_NEXT(11701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11701(choice, ...) METALANG99_PRIV_REC_NEXT(11702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11702(choice, ...) METALANG99_PRIV_REC_NEXT(11703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11703(choice, ...) METALANG99_PRIV_REC_NEXT(11704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11704(choice, ...) METALANG99_PRIV_REC_NEXT(11705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11705(choice, ...) METALANG99_PRIV_REC_NEXT(11706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11706(choice, ...) METALANG99_PRIV_REC_NEXT(11707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11707(choice, ...) METALANG99_PRIV_REC_NEXT(11708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11708(choice, ...) METALANG99_PRIV_REC_NEXT(11709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11709(choice, ...) METALANG99_PRIV_REC_NEXT(11710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11710(choice, ...) METALANG99_PRIV_REC_NEXT(11711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11711(choice, ...) METALANG99_PRIV_REC_NEXT(11712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11712(choice, ...) METALANG99_PRIV_REC_NEXT(11713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11713(choice, ...) METALANG99_PRIV_REC_NEXT(11714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11714(choice, ...) METALANG99_PRIV_REC_NEXT(11715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11715(choice, ...) METALANG99_PRIV_REC_NEXT(11716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11716(choice, ...) METALANG99_PRIV_REC_NEXT(11717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11717(choice, ...) METALANG99_PRIV_REC_NEXT(11718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11718(choice, ...) METALANG99_PRIV_REC_NEXT(11719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11719(choice, ...) METALANG99_PRIV_REC_NEXT(11720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11720(choice, ...) METALANG99_PRIV_REC_NEXT(11721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11721(choice, ...) METALANG99_PRIV_REC_NEXT(11722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11722(choice, ...) METALANG99_PRIV_REC_NEXT(11723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11723(choice, ...) METALANG99_PRIV_REC_NEXT(11724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11724(choice, ...) METALANG99_PRIV_REC_NEXT(11725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11725(choice, ...) METALANG99_PRIV_REC_NEXT(11726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11726(choice, ...) METALANG99_PRIV_REC_NEXT(11727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11727(choice, ...) METALANG99_PRIV_REC_NEXT(11728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11728(choice, ...) METALANG99_PRIV_REC_NEXT(11729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11729(choice, ...) METALANG99_PRIV_REC_NEXT(11730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11730(choice, ...) METALANG99_PRIV_REC_NEXT(11731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11731(choice, ...) METALANG99_PRIV_REC_NEXT(11732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11732(choice, ...) METALANG99_PRIV_REC_NEXT(11733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11733(choice, ...) METALANG99_PRIV_REC_NEXT(11734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11734(choice, ...) METALANG99_PRIV_REC_NEXT(11735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11735(choice, ...) METALANG99_PRIV_REC_NEXT(11736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11736(choice, ...) METALANG99_PRIV_REC_NEXT(11737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11737(choice, ...) METALANG99_PRIV_REC_NEXT(11738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11738(choice, ...) METALANG99_PRIV_REC_NEXT(11739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11739(choice, ...) METALANG99_PRIV_REC_NEXT(11740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11740(choice, ...) METALANG99_PRIV_REC_NEXT(11741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11741(choice, ...) METALANG99_PRIV_REC_NEXT(11742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11742(choice, ...) METALANG99_PRIV_REC_NEXT(11743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11743(choice, ...) METALANG99_PRIV_REC_NEXT(11744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11744(choice, ...) METALANG99_PRIV_REC_NEXT(11745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11745(choice, ...) METALANG99_PRIV_REC_NEXT(11746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11746(choice, ...) METALANG99_PRIV_REC_NEXT(11747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11747(choice, ...) METALANG99_PRIV_REC_NEXT(11748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11748(choice, ...) METALANG99_PRIV_REC_NEXT(11749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11749(choice, ...) METALANG99_PRIV_REC_NEXT(11750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11750(choice, ...) METALANG99_PRIV_REC_NEXT(11751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11751(choice, ...) METALANG99_PRIV_REC_NEXT(11752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11752(choice, ...) METALANG99_PRIV_REC_NEXT(11753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11753(choice, ...) METALANG99_PRIV_REC_NEXT(11754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11754(choice, ...) METALANG99_PRIV_REC_NEXT(11755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11755(choice, ...) METALANG99_PRIV_REC_NEXT(11756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11756(choice, ...) METALANG99_PRIV_REC_NEXT(11757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11757(choice, ...) METALANG99_PRIV_REC_NEXT(11758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11758(choice, ...) METALANG99_PRIV_REC_NEXT(11759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11759(choice, ...) METALANG99_PRIV_REC_NEXT(11760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11760(choice, ...) METALANG99_PRIV_REC_NEXT(11761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11761(choice, ...) METALANG99_PRIV_REC_NEXT(11762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11762(choice, ...) METALANG99_PRIV_REC_NEXT(11763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11763(choice, ...) METALANG99_PRIV_REC_NEXT(11764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11764(choice, ...) METALANG99_PRIV_REC_NEXT(11765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11765(choice, ...) METALANG99_PRIV_REC_NEXT(11766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11766(choice, ...) METALANG99_PRIV_REC_NEXT(11767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11767(choice, ...) METALANG99_PRIV_REC_NEXT(11768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11768(choice, ...) METALANG99_PRIV_REC_NEXT(11769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11769(choice, ...) METALANG99_PRIV_REC_NEXT(11770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11770(choice, ...) METALANG99_PRIV_REC_NEXT(11771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11771(choice, ...) METALANG99_PRIV_REC_NEXT(11772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11772(choice, ...) METALANG99_PRIV_REC_NEXT(11773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11773(choice, ...) METALANG99_PRIV_REC_NEXT(11774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11774(choice, ...) METALANG99_PRIV_REC_NEXT(11775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11775(choice, ...) METALANG99_PRIV_REC_NEXT(11776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11776(choice, ...) METALANG99_PRIV_REC_NEXT(11777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11777(choice, ...) METALANG99_PRIV_REC_NEXT(11778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11778(choice, ...) METALANG99_PRIV_REC_NEXT(11779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11779(choice, ...) METALANG99_PRIV_REC_NEXT(11780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11780(choice, ...) METALANG99_PRIV_REC_NEXT(11781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11781(choice, ...) METALANG99_PRIV_REC_NEXT(11782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11782(choice, ...) METALANG99_PRIV_REC_NEXT(11783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11783(choice, ...) METALANG99_PRIV_REC_NEXT(11784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11784(choice, ...) METALANG99_PRIV_REC_NEXT(11785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11785(choice, ...) METALANG99_PRIV_REC_NEXT(11786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11786(choice, ...) METALANG99_PRIV_REC_NEXT(11787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11787(choice, ...) METALANG99_PRIV_REC_NEXT(11788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11788(choice, ...) METALANG99_PRIV_REC_NEXT(11789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11789(choice, ...) METALANG99_PRIV_REC_NEXT(11790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11790(choice, ...) METALANG99_PRIV_REC_NEXT(11791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11791(choice, ...) METALANG99_PRIV_REC_NEXT(11792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11792(choice, ...) METALANG99_PRIV_REC_NEXT(11793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11793(choice, ...) METALANG99_PRIV_REC_NEXT(11794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11794(choice, ...) METALANG99_PRIV_REC_NEXT(11795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11795(choice, ...) METALANG99_PRIV_REC_NEXT(11796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11796(choice, ...) METALANG99_PRIV_REC_NEXT(11797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11797(choice, ...) METALANG99_PRIV_REC_NEXT(11798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11798(choice, ...) METALANG99_PRIV_REC_NEXT(11799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11799(choice, ...) METALANG99_PRIV_REC_NEXT(11800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11800(choice, ...) METALANG99_PRIV_REC_NEXT(11801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11801(choice, ...) METALANG99_PRIV_REC_NEXT(11802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11802(choice, ...) METALANG99_PRIV_REC_NEXT(11803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11803(choice, ...) METALANG99_PRIV_REC_NEXT(11804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11804(choice, ...) METALANG99_PRIV_REC_NEXT(11805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11805(choice, ...) METALANG99_PRIV_REC_NEXT(11806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11806(choice, ...) METALANG99_PRIV_REC_NEXT(11807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11807(choice, ...) METALANG99_PRIV_REC_NEXT(11808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11808(choice, ...) METALANG99_PRIV_REC_NEXT(11809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11809(choice, ...) METALANG99_PRIV_REC_NEXT(11810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11810(choice, ...) METALANG99_PRIV_REC_NEXT(11811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11811(choice, ...) METALANG99_PRIV_REC_NEXT(11812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11812(choice, ...) METALANG99_PRIV_REC_NEXT(11813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11813(choice, ...) METALANG99_PRIV_REC_NEXT(11814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11814(choice, ...) METALANG99_PRIV_REC_NEXT(11815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11815(choice, ...) METALANG99_PRIV_REC_NEXT(11816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11816(choice, ...) METALANG99_PRIV_REC_NEXT(11817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11817(choice, ...) METALANG99_PRIV_REC_NEXT(11818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11818(choice, ...) METALANG99_PRIV_REC_NEXT(11819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11819(choice, ...) METALANG99_PRIV_REC_NEXT(11820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11820(choice, ...) METALANG99_PRIV_REC_NEXT(11821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11821(choice, ...) METALANG99_PRIV_REC_NEXT(11822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11822(choice, ...) METALANG99_PRIV_REC_NEXT(11823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11823(choice, ...) METALANG99_PRIV_REC_NEXT(11824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11824(choice, ...) METALANG99_PRIV_REC_NEXT(11825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11825(choice, ...) METALANG99_PRIV_REC_NEXT(11826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11826(choice, ...) METALANG99_PRIV_REC_NEXT(11827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11827(choice, ...) METALANG99_PRIV_REC_NEXT(11828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11828(choice, ...) METALANG99_PRIV_REC_NEXT(11829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11829(choice, ...) METALANG99_PRIV_REC_NEXT(11830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11830(choice, ...) METALANG99_PRIV_REC_NEXT(11831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11831(choice, ...) METALANG99_PRIV_REC_NEXT(11832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11832(choice, ...) METALANG99_PRIV_REC_NEXT(11833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11833(choice, ...) METALANG99_PRIV_REC_NEXT(11834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11834(choice, ...) METALANG99_PRIV_REC_NEXT(11835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11835(choice, ...) METALANG99_PRIV_REC_NEXT(11836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11836(choice, ...) METALANG99_PRIV_REC_NEXT(11837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11837(choice, ...) METALANG99_PRIV_REC_NEXT(11838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11838(choice, ...) METALANG99_PRIV_REC_NEXT(11839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11839(choice, ...) METALANG99_PRIV_REC_NEXT(11840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11840(choice, ...) METALANG99_PRIV_REC_NEXT(11841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11841(choice, ...) METALANG99_PRIV_REC_NEXT(11842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11842(choice, ...) METALANG99_PRIV_REC_NEXT(11843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11843(choice, ...) METALANG99_PRIV_REC_NEXT(11844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11844(choice, ...) METALANG99_PRIV_REC_NEXT(11845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11845(choice, ...) METALANG99_PRIV_REC_NEXT(11846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11846(choice, ...) METALANG99_PRIV_REC_NEXT(11847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11847(choice, ...) METALANG99_PRIV_REC_NEXT(11848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11848(choice, ...) METALANG99_PRIV_REC_NEXT(11849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11849(choice, ...) METALANG99_PRIV_REC_NEXT(11850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11850(choice, ...) METALANG99_PRIV_REC_NEXT(11851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11851(choice, ...) METALANG99_PRIV_REC_NEXT(11852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11852(choice, ...) METALANG99_PRIV_REC_NEXT(11853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11853(choice, ...) METALANG99_PRIV_REC_NEXT(11854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11854(choice, ...) METALANG99_PRIV_REC_NEXT(11855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11855(choice, ...) METALANG99_PRIV_REC_NEXT(11856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11856(choice, ...) METALANG99_PRIV_REC_NEXT(11857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11857(choice, ...) METALANG99_PRIV_REC_NEXT(11858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11858(choice, ...) METALANG99_PRIV_REC_NEXT(11859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11859(choice, ...) METALANG99_PRIV_REC_NEXT(11860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11860(choice, ...) METALANG99_PRIV_REC_NEXT(11861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11861(choice, ...) METALANG99_PRIV_REC_NEXT(11862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11862(choice, ...) METALANG99_PRIV_REC_NEXT(11863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11863(choice, ...) METALANG99_PRIV_REC_NEXT(11864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11864(choice, ...) METALANG99_PRIV_REC_NEXT(11865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11865(choice, ...) METALANG99_PRIV_REC_NEXT(11866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11866(choice, ...) METALANG99_PRIV_REC_NEXT(11867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11867(choice, ...) METALANG99_PRIV_REC_NEXT(11868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11868(choice, ...) METALANG99_PRIV_REC_NEXT(11869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11869(choice, ...) METALANG99_PRIV_REC_NEXT(11870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11870(choice, ...) METALANG99_PRIV_REC_NEXT(11871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11871(choice, ...) METALANG99_PRIV_REC_NEXT(11872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11872(choice, ...) METALANG99_PRIV_REC_NEXT(11873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11873(choice, ...) METALANG99_PRIV_REC_NEXT(11874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11874(choice, ...) METALANG99_PRIV_REC_NEXT(11875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11875(choice, ...) METALANG99_PRIV_REC_NEXT(11876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11876(choice, ...) METALANG99_PRIV_REC_NEXT(11877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11877(choice, ...) METALANG99_PRIV_REC_NEXT(11878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11878(choice, ...) METALANG99_PRIV_REC_NEXT(11879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11879(choice, ...) METALANG99_PRIV_REC_NEXT(11880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11880(choice, ...) METALANG99_PRIV_REC_NEXT(11881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11881(choice, ...) METALANG99_PRIV_REC_NEXT(11882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11882(choice, ...) METALANG99_PRIV_REC_NEXT(11883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11883(choice, ...) METALANG99_PRIV_REC_NEXT(11884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11884(choice, ...) METALANG99_PRIV_REC_NEXT(11885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11885(choice, ...) METALANG99_PRIV_REC_NEXT(11886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11886(choice, ...) METALANG99_PRIV_REC_NEXT(11887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11887(choice, ...) METALANG99_PRIV_REC_NEXT(11888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11888(choice, ...) METALANG99_PRIV_REC_NEXT(11889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11889(choice, ...) METALANG99_PRIV_REC_NEXT(11890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11890(choice, ...) METALANG99_PRIV_REC_NEXT(11891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11891(choice, ...) METALANG99_PRIV_REC_NEXT(11892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11892(choice, ...) METALANG99_PRIV_REC_NEXT(11893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11893(choice, ...) METALANG99_PRIV_REC_NEXT(11894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11894(choice, ...) METALANG99_PRIV_REC_NEXT(11895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11895(choice, ...) METALANG99_PRIV_REC_NEXT(11896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11896(choice, ...) METALANG99_PRIV_REC_NEXT(11897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11897(choice, ...) METALANG99_PRIV_REC_NEXT(11898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11898(choice, ...) METALANG99_PRIV_REC_NEXT(11899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11899(choice, ...) METALANG99_PRIV_REC_NEXT(11900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11900(choice, ...) METALANG99_PRIV_REC_NEXT(11901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11901(choice, ...) METALANG99_PRIV_REC_NEXT(11902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11902(choice, ...) METALANG99_PRIV_REC_NEXT(11903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11903(choice, ...) METALANG99_PRIV_REC_NEXT(11904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11904(choice, ...) METALANG99_PRIV_REC_NEXT(11905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11905(choice, ...) METALANG99_PRIV_REC_NEXT(11906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11906(choice, ...) METALANG99_PRIV_REC_NEXT(11907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11907(choice, ...) METALANG99_PRIV_REC_NEXT(11908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11908(choice, ...) METALANG99_PRIV_REC_NEXT(11909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11909(choice, ...) METALANG99_PRIV_REC_NEXT(11910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11910(choice, ...) METALANG99_PRIV_REC_NEXT(11911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11911(choice, ...) METALANG99_PRIV_REC_NEXT(11912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11912(choice, ...) METALANG99_PRIV_REC_NEXT(11913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11913(choice, ...) METALANG99_PRIV_REC_NEXT(11914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11914(choice, ...) METALANG99_PRIV_REC_NEXT(11915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11915(choice, ...) METALANG99_PRIV_REC_NEXT(11916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11916(choice, ...) METALANG99_PRIV_REC_NEXT(11917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11917(choice, ...) METALANG99_PRIV_REC_NEXT(11918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11918(choice, ...) METALANG99_PRIV_REC_NEXT(11919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11919(choice, ...) METALANG99_PRIV_REC_NEXT(11920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11920(choice, ...) METALANG99_PRIV_REC_NEXT(11921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11921(choice, ...) METALANG99_PRIV_REC_NEXT(11922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11922(choice, ...) METALANG99_PRIV_REC_NEXT(11923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11923(choice, ...) METALANG99_PRIV_REC_NEXT(11924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11924(choice, ...) METALANG99_PRIV_REC_NEXT(11925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11925(choice, ...) METALANG99_PRIV_REC_NEXT(11926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11926(choice, ...) METALANG99_PRIV_REC_NEXT(11927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11927(choice, ...) METALANG99_PRIV_REC_NEXT(11928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11928(choice, ...) METALANG99_PRIV_REC_NEXT(11929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11929(choice, ...) METALANG99_PRIV_REC_NEXT(11930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11930(choice, ...) METALANG99_PRIV_REC_NEXT(11931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11931(choice, ...) METALANG99_PRIV_REC_NEXT(11932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11932(choice, ...) METALANG99_PRIV_REC_NEXT(11933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11933(choice, ...) METALANG99_PRIV_REC_NEXT(11934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11934(choice, ...) METALANG99_PRIV_REC_NEXT(11935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11935(choice, ...) METALANG99_PRIV_REC_NEXT(11936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11936(choice, ...) METALANG99_PRIV_REC_NEXT(11937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11937(choice, ...) METALANG99_PRIV_REC_NEXT(11938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11938(choice, ...) METALANG99_PRIV_REC_NEXT(11939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11939(choice, ...) METALANG99_PRIV_REC_NEXT(11940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11940(choice, ...) METALANG99_PRIV_REC_NEXT(11941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11941(choice, ...) METALANG99_PRIV_REC_NEXT(11942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11942(choice, ...) METALANG99_PRIV_REC_NEXT(11943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11943(choice, ...) METALANG99_PRIV_REC_NEXT(11944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11944(choice, ...) METALANG99_PRIV_REC_NEXT(11945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11945(choice, ...) METALANG99_PRIV_REC_NEXT(11946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11946(choice, ...) METALANG99_PRIV_REC_NEXT(11947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11947(choice, ...) METALANG99_PRIV_REC_NEXT(11948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11948(choice, ...) METALANG99_PRIV_REC_NEXT(11949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11949(choice, ...) METALANG99_PRIV_REC_NEXT(11950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11950(choice, ...) METALANG99_PRIV_REC_NEXT(11951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11951(choice, ...) METALANG99_PRIV_REC_NEXT(11952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11952(choice, ...) METALANG99_PRIV_REC_NEXT(11953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11953(choice, ...) METALANG99_PRIV_REC_NEXT(11954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11954(choice, ...) METALANG99_PRIV_REC_NEXT(11955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11955(choice, ...) METALANG99_PRIV_REC_NEXT(11956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11956(choice, ...) METALANG99_PRIV_REC_NEXT(11957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11957(choice, ...) METALANG99_PRIV_REC_NEXT(11958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11958(choice, ...) METALANG99_PRIV_REC_NEXT(11959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11959(choice, ...) METALANG99_PRIV_REC_NEXT(11960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11960(choice, ...) METALANG99_PRIV_REC_NEXT(11961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11961(choice, ...) METALANG99_PRIV_REC_NEXT(11962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11962(choice, ...) METALANG99_PRIV_REC_NEXT(11963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11963(choice, ...) METALANG99_PRIV_REC_NEXT(11964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11964(choice, ...) METALANG99_PRIV_REC_NEXT(11965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11965(choice, ...) METALANG99_PRIV_REC_NEXT(11966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11966(choice, ...) METALANG99_PRIV_REC_NEXT(11967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11967(choice, ...) METALANG99_PRIV_REC_NEXT(11968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11968(choice, ...) METALANG99_PRIV_REC_NEXT(11969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11969(choice, ...) METALANG99_PRIV_REC_NEXT(11970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11970(choice, ...) METALANG99_PRIV_REC_NEXT(11971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11971(choice, ...) METALANG99_PRIV_REC_NEXT(11972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11972(choice, ...) METALANG99_PRIV_REC_NEXT(11973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11973(choice, ...) METALANG99_PRIV_REC_NEXT(11974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11974(choice, ...) METALANG99_PRIV_REC_NEXT(11975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11975(choice, ...) METALANG99_PRIV_REC_NEXT(11976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11976(choice, ...) METALANG99_PRIV_REC_NEXT(11977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11977(choice, ...) METALANG99_PRIV_REC_NEXT(11978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11978(choice, ...) METALANG99_PRIV_REC_NEXT(11979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11979(choice, ...) METALANG99_PRIV_REC_NEXT(11980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11980(choice, ...) METALANG99_PRIV_REC_NEXT(11981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11981(choice, ...) METALANG99_PRIV_REC_NEXT(11982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11982(choice, ...) METALANG99_PRIV_REC_NEXT(11983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11983(choice, ...) METALANG99_PRIV_REC_NEXT(11984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11984(choice, ...) METALANG99_PRIV_REC_NEXT(11985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11985(choice, ...) METALANG99_PRIV_REC_NEXT(11986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11986(choice, ...) METALANG99_PRIV_REC_NEXT(11987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11987(choice, ...) METALANG99_PRIV_REC_NEXT(11988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11988(choice, ...) METALANG99_PRIV_REC_NEXT(11989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11989(choice, ...) METALANG99_PRIV_REC_NEXT(11990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11990(choice, ...) METALANG99_PRIV_REC_NEXT(11991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11991(choice, ...) METALANG99_PRIV_REC_NEXT(11992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11992(choice, ...) METALANG99_PRIV_REC_NEXT(11993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11993(choice, ...) METALANG99_PRIV_REC_NEXT(11994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11994(choice, ...) METALANG99_PRIV_REC_NEXT(11995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11995(choice, ...) METALANG99_PRIV_REC_NEXT(11996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11996(choice, ...) METALANG99_PRIV_REC_NEXT(11997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11997(choice, ...) METALANG99_PRIV_REC_NEXT(11998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11998(choice, ...) METALANG99_PRIV_REC_NEXT(11999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_11999(choice, ...) METALANG99_PRIV_REC_NEXT(12000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12000(choice, ...) METALANG99_PRIV_REC_NEXT(12001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12001(choice, ...) METALANG99_PRIV_REC_NEXT(12002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12002(choice, ...) METALANG99_PRIV_REC_NEXT(12003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12003(choice, ...) METALANG99_PRIV_REC_NEXT(12004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12004(choice, ...) METALANG99_PRIV_REC_NEXT(12005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12005(choice, ...) METALANG99_PRIV_REC_NEXT(12006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12006(choice, ...) METALANG99_PRIV_REC_NEXT(12007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12007(choice, ...) METALANG99_PRIV_REC_NEXT(12008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12008(choice, ...) METALANG99_PRIV_REC_NEXT(12009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12009(choice, ...) METALANG99_PRIV_REC_NEXT(12010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12010(choice, ...) METALANG99_PRIV_REC_NEXT(12011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12011(choice, ...) METALANG99_PRIV_REC_NEXT(12012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12012(choice, ...) METALANG99_PRIV_REC_NEXT(12013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12013(choice, ...) METALANG99_PRIV_REC_NEXT(12014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12014(choice, ...) METALANG99_PRIV_REC_NEXT(12015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12015(choice, ...) METALANG99_PRIV_REC_NEXT(12016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12016(choice, ...) METALANG99_PRIV_REC_NEXT(12017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12017(choice, ...) METALANG99_PRIV_REC_NEXT(12018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12018(choice, ...) METALANG99_PRIV_REC_NEXT(12019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12019(choice, ...) METALANG99_PRIV_REC_NEXT(12020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12020(choice, ...) METALANG99_PRIV_REC_NEXT(12021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12021(choice, ...) METALANG99_PRIV_REC_NEXT(12022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12022(choice, ...) METALANG99_PRIV_REC_NEXT(12023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12023(choice, ...) METALANG99_PRIV_REC_NEXT(12024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12024(choice, ...) METALANG99_PRIV_REC_NEXT(12025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12025(choice, ...) METALANG99_PRIV_REC_NEXT(12026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12026(choice, ...) METALANG99_PRIV_REC_NEXT(12027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12027(choice, ...) METALANG99_PRIV_REC_NEXT(12028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12028(choice, ...) METALANG99_PRIV_REC_NEXT(12029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12029(choice, ...) METALANG99_PRIV_REC_NEXT(12030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12030(choice, ...) METALANG99_PRIV_REC_NEXT(12031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12031(choice, ...) METALANG99_PRIV_REC_NEXT(12032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12032(choice, ...) METALANG99_PRIV_REC_NEXT(12033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12033(choice, ...) METALANG99_PRIV_REC_NEXT(12034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12034(choice, ...) METALANG99_PRIV_REC_NEXT(12035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12035(choice, ...) METALANG99_PRIV_REC_NEXT(12036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12036(choice, ...) METALANG99_PRIV_REC_NEXT(12037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12037(choice, ...) METALANG99_PRIV_REC_NEXT(12038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12038(choice, ...) METALANG99_PRIV_REC_NEXT(12039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12039(choice, ...) METALANG99_PRIV_REC_NEXT(12040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12040(choice, ...) METALANG99_PRIV_REC_NEXT(12041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12041(choice, ...) METALANG99_PRIV_REC_NEXT(12042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12042(choice, ...) METALANG99_PRIV_REC_NEXT(12043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12043(choice, ...) METALANG99_PRIV_REC_NEXT(12044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12044(choice, ...) METALANG99_PRIV_REC_NEXT(12045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12045(choice, ...) METALANG99_PRIV_REC_NEXT(12046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12046(choice, ...) METALANG99_PRIV_REC_NEXT(12047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12047(choice, ...) METALANG99_PRIV_REC_NEXT(12048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12048(choice, ...) METALANG99_PRIV_REC_NEXT(12049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12049(choice, ...) METALANG99_PRIV_REC_NEXT(12050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12050(choice, ...) METALANG99_PRIV_REC_NEXT(12051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12051(choice, ...) METALANG99_PRIV_REC_NEXT(12052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12052(choice, ...) METALANG99_PRIV_REC_NEXT(12053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12053(choice, ...) METALANG99_PRIV_REC_NEXT(12054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12054(choice, ...) METALANG99_PRIV_REC_NEXT(12055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12055(choice, ...) METALANG99_PRIV_REC_NEXT(12056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12056(choice, ...) METALANG99_PRIV_REC_NEXT(12057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12057(choice, ...) METALANG99_PRIV_REC_NEXT(12058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12058(choice, ...) METALANG99_PRIV_REC_NEXT(12059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12059(choice, ...) METALANG99_PRIV_REC_NEXT(12060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12060(choice, ...) METALANG99_PRIV_REC_NEXT(12061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12061(choice, ...) METALANG99_PRIV_REC_NEXT(12062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12062(choice, ...) METALANG99_PRIV_REC_NEXT(12063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12063(choice, ...) METALANG99_PRIV_REC_NEXT(12064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12064(choice, ...) METALANG99_PRIV_REC_NEXT(12065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12065(choice, ...) METALANG99_PRIV_REC_NEXT(12066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12066(choice, ...) METALANG99_PRIV_REC_NEXT(12067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12067(choice, ...) METALANG99_PRIV_REC_NEXT(12068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12068(choice, ...) METALANG99_PRIV_REC_NEXT(12069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12069(choice, ...) METALANG99_PRIV_REC_NEXT(12070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12070(choice, ...) METALANG99_PRIV_REC_NEXT(12071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12071(choice, ...) METALANG99_PRIV_REC_NEXT(12072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12072(choice, ...) METALANG99_PRIV_REC_NEXT(12073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12073(choice, ...) METALANG99_PRIV_REC_NEXT(12074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12074(choice, ...) METALANG99_PRIV_REC_NEXT(12075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12075(choice, ...) METALANG99_PRIV_REC_NEXT(12076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12076(choice, ...) METALANG99_PRIV_REC_NEXT(12077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12077(choice, ...) METALANG99_PRIV_REC_NEXT(12078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12078(choice, ...) METALANG99_PRIV_REC_NEXT(12079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12079(choice, ...) METALANG99_PRIV_REC_NEXT(12080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12080(choice, ...) METALANG99_PRIV_REC_NEXT(12081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12081(choice, ...) METALANG99_PRIV_REC_NEXT(12082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12082(choice, ...) METALANG99_PRIV_REC_NEXT(12083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12083(choice, ...) METALANG99_PRIV_REC_NEXT(12084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12084(choice, ...) METALANG99_PRIV_REC_NEXT(12085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12085(choice, ...) METALANG99_PRIV_REC_NEXT(12086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12086(choice, ...) METALANG99_PRIV_REC_NEXT(12087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12087(choice, ...) METALANG99_PRIV_REC_NEXT(12088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12088(choice, ...) METALANG99_PRIV_REC_NEXT(12089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12089(choice, ...) METALANG99_PRIV_REC_NEXT(12090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12090(choice, ...) METALANG99_PRIV_REC_NEXT(12091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12091(choice, ...) METALANG99_PRIV_REC_NEXT(12092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12092(choice, ...) METALANG99_PRIV_REC_NEXT(12093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12093(choice, ...) METALANG99_PRIV_REC_NEXT(12094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12094(choice, ...) METALANG99_PRIV_REC_NEXT(12095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12095(choice, ...) METALANG99_PRIV_REC_NEXT(12096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12096(choice, ...) METALANG99_PRIV_REC_NEXT(12097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12097(choice, ...) METALANG99_PRIV_REC_NEXT(12098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12098(choice, ...) METALANG99_PRIV_REC_NEXT(12099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12099(choice, ...) METALANG99_PRIV_REC_NEXT(12100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12100(choice, ...) METALANG99_PRIV_REC_NEXT(12101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12101(choice, ...) METALANG99_PRIV_REC_NEXT(12102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12102(choice, ...) METALANG99_PRIV_REC_NEXT(12103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12103(choice, ...) METALANG99_PRIV_REC_NEXT(12104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12104(choice, ...) METALANG99_PRIV_REC_NEXT(12105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12105(choice, ...) METALANG99_PRIV_REC_NEXT(12106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12106(choice, ...) METALANG99_PRIV_REC_NEXT(12107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12107(choice, ...) METALANG99_PRIV_REC_NEXT(12108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12108(choice, ...) METALANG99_PRIV_REC_NEXT(12109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12109(choice, ...) METALANG99_PRIV_REC_NEXT(12110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12110(choice, ...) METALANG99_PRIV_REC_NEXT(12111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12111(choice, ...) METALANG99_PRIV_REC_NEXT(12112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12112(choice, ...) METALANG99_PRIV_REC_NEXT(12113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12113(choice, ...) METALANG99_PRIV_REC_NEXT(12114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12114(choice, ...) METALANG99_PRIV_REC_NEXT(12115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12115(choice, ...) METALANG99_PRIV_REC_NEXT(12116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12116(choice, ...) METALANG99_PRIV_REC_NEXT(12117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12117(choice, ...) METALANG99_PRIV_REC_NEXT(12118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12118(choice, ...) METALANG99_PRIV_REC_NEXT(12119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12119(choice, ...) METALANG99_PRIV_REC_NEXT(12120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12120(choice, ...) METALANG99_PRIV_REC_NEXT(12121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12121(choice, ...) METALANG99_PRIV_REC_NEXT(12122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12122(choice, ...) METALANG99_PRIV_REC_NEXT(12123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12123(choice, ...) METALANG99_PRIV_REC_NEXT(12124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12124(choice, ...) METALANG99_PRIV_REC_NEXT(12125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12125(choice, ...) METALANG99_PRIV_REC_NEXT(12126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12126(choice, ...) METALANG99_PRIV_REC_NEXT(12127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12127(choice, ...) METALANG99_PRIV_REC_NEXT(12128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12128(choice, ...) METALANG99_PRIV_REC_NEXT(12129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12129(choice, ...) METALANG99_PRIV_REC_NEXT(12130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12130(choice, ...) METALANG99_PRIV_REC_NEXT(12131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12131(choice, ...) METALANG99_PRIV_REC_NEXT(12132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12132(choice, ...) METALANG99_PRIV_REC_NEXT(12133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12133(choice, ...) METALANG99_PRIV_REC_NEXT(12134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12134(choice, ...) METALANG99_PRIV_REC_NEXT(12135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12135(choice, ...) METALANG99_PRIV_REC_NEXT(12136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12136(choice, ...) METALANG99_PRIV_REC_NEXT(12137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12137(choice, ...) METALANG99_PRIV_REC_NEXT(12138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12138(choice, ...) METALANG99_PRIV_REC_NEXT(12139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12139(choice, ...) METALANG99_PRIV_REC_NEXT(12140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12140(choice, ...) METALANG99_PRIV_REC_NEXT(12141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12141(choice, ...) METALANG99_PRIV_REC_NEXT(12142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12142(choice, ...) METALANG99_PRIV_REC_NEXT(12143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12143(choice, ...) METALANG99_PRIV_REC_NEXT(12144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12144(choice, ...) METALANG99_PRIV_REC_NEXT(12145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12145(choice, ...) METALANG99_PRIV_REC_NEXT(12146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12146(choice, ...) METALANG99_PRIV_REC_NEXT(12147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12147(choice, ...) METALANG99_PRIV_REC_NEXT(12148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12148(choice, ...) METALANG99_PRIV_REC_NEXT(12149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12149(choice, ...) METALANG99_PRIV_REC_NEXT(12150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12150(choice, ...) METALANG99_PRIV_REC_NEXT(12151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12151(choice, ...) METALANG99_PRIV_REC_NEXT(12152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12152(choice, ...) METALANG99_PRIV_REC_NEXT(12153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12153(choice, ...) METALANG99_PRIV_REC_NEXT(12154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12154(choice, ...) METALANG99_PRIV_REC_NEXT(12155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12155(choice, ...) METALANG99_PRIV_REC_NEXT(12156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12156(choice, ...) METALANG99_PRIV_REC_NEXT(12157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12157(choice, ...) METALANG99_PRIV_REC_NEXT(12158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12158(choice, ...) METALANG99_PRIV_REC_NEXT(12159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12159(choice, ...) METALANG99_PRIV_REC_NEXT(12160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12160(choice, ...) METALANG99_PRIV_REC_NEXT(12161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12161(choice, ...) METALANG99_PRIV_REC_NEXT(12162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12162(choice, ...) METALANG99_PRIV_REC_NEXT(12163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12163(choice, ...) METALANG99_PRIV_REC_NEXT(12164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12164(choice, ...) METALANG99_PRIV_REC_NEXT(12165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12165(choice, ...) METALANG99_PRIV_REC_NEXT(12166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12166(choice, ...) METALANG99_PRIV_REC_NEXT(12167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12167(choice, ...) METALANG99_PRIV_REC_NEXT(12168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12168(choice, ...) METALANG99_PRIV_REC_NEXT(12169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12169(choice, ...) METALANG99_PRIV_REC_NEXT(12170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12170(choice, ...) METALANG99_PRIV_REC_NEXT(12171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12171(choice, ...) METALANG99_PRIV_REC_NEXT(12172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12172(choice, ...) METALANG99_PRIV_REC_NEXT(12173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12173(choice, ...) METALANG99_PRIV_REC_NEXT(12174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12174(choice, ...) METALANG99_PRIV_REC_NEXT(12175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12175(choice, ...) METALANG99_PRIV_REC_NEXT(12176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12176(choice, ...) METALANG99_PRIV_REC_NEXT(12177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12177(choice, ...) METALANG99_PRIV_REC_NEXT(12178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12178(choice, ...) METALANG99_PRIV_REC_NEXT(12179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12179(choice, ...) METALANG99_PRIV_REC_NEXT(12180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12180(choice, ...) METALANG99_PRIV_REC_NEXT(12181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12181(choice, ...) METALANG99_PRIV_REC_NEXT(12182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12182(choice, ...) METALANG99_PRIV_REC_NEXT(12183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12183(choice, ...) METALANG99_PRIV_REC_NEXT(12184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12184(choice, ...) METALANG99_PRIV_REC_NEXT(12185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12185(choice, ...) METALANG99_PRIV_REC_NEXT(12186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12186(choice, ...) METALANG99_PRIV_REC_NEXT(12187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12187(choice, ...) METALANG99_PRIV_REC_NEXT(12188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12188(choice, ...) METALANG99_PRIV_REC_NEXT(12189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12189(choice, ...) METALANG99_PRIV_REC_NEXT(12190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12190(choice, ...) METALANG99_PRIV_REC_NEXT(12191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12191(choice, ...) METALANG99_PRIV_REC_NEXT(12192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12192(choice, ...) METALANG99_PRIV_REC_NEXT(12193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12193(choice, ...) METALANG99_PRIV_REC_NEXT(12194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12194(choice, ...) METALANG99_PRIV_REC_NEXT(12195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12195(choice, ...) METALANG99_PRIV_REC_NEXT(12196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12196(choice, ...) METALANG99_PRIV_REC_NEXT(12197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12197(choice, ...) METALANG99_PRIV_REC_NEXT(12198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12198(choice, ...) METALANG99_PRIV_REC_NEXT(12199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12199(choice, ...) METALANG99_PRIV_REC_NEXT(12200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12200(choice, ...) METALANG99_PRIV_REC_NEXT(12201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12201(choice, ...) METALANG99_PRIV_REC_NEXT(12202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12202(choice, ...) METALANG99_PRIV_REC_NEXT(12203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12203(choice, ...) METALANG99_PRIV_REC_NEXT(12204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12204(choice, ...) METALANG99_PRIV_REC_NEXT(12205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12205(choice, ...) METALANG99_PRIV_REC_NEXT(12206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12206(choice, ...) METALANG99_PRIV_REC_NEXT(12207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12207(choice, ...) METALANG99_PRIV_REC_NEXT(12208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12208(choice, ...) METALANG99_PRIV_REC_NEXT(12209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12209(choice, ...) METALANG99_PRIV_REC_NEXT(12210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12210(choice, ...) METALANG99_PRIV_REC_NEXT(12211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12211(choice, ...) METALANG99_PRIV_REC_NEXT(12212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12212(choice, ...) METALANG99_PRIV_REC_NEXT(12213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12213(choice, ...) METALANG99_PRIV_REC_NEXT(12214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12214(choice, ...) METALANG99_PRIV_REC_NEXT(12215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12215(choice, ...) METALANG99_PRIV_REC_NEXT(12216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12216(choice, ...) METALANG99_PRIV_REC_NEXT(12217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12217(choice, ...) METALANG99_PRIV_REC_NEXT(12218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12218(choice, ...) METALANG99_PRIV_REC_NEXT(12219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12219(choice, ...) METALANG99_PRIV_REC_NEXT(12220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12220(choice, ...) METALANG99_PRIV_REC_NEXT(12221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12221(choice, ...) METALANG99_PRIV_REC_NEXT(12222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12222(choice, ...) METALANG99_PRIV_REC_NEXT(12223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12223(choice, ...) METALANG99_PRIV_REC_NEXT(12224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12224(choice, ...) METALANG99_PRIV_REC_NEXT(12225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12225(choice, ...) METALANG99_PRIV_REC_NEXT(12226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12226(choice, ...) METALANG99_PRIV_REC_NEXT(12227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12227(choice, ...) METALANG99_PRIV_REC_NEXT(12228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12228(choice, ...) METALANG99_PRIV_REC_NEXT(12229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12229(choice, ...) METALANG99_PRIV_REC_NEXT(12230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12230(choice, ...) METALANG99_PRIV_REC_NEXT(12231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12231(choice, ...) METALANG99_PRIV_REC_NEXT(12232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12232(choice, ...) METALANG99_PRIV_REC_NEXT(12233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12233(choice, ...) METALANG99_PRIV_REC_NEXT(12234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12234(choice, ...) METALANG99_PRIV_REC_NEXT(12235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12235(choice, ...) METALANG99_PRIV_REC_NEXT(12236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12236(choice, ...) METALANG99_PRIV_REC_NEXT(12237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12237(choice, ...) METALANG99_PRIV_REC_NEXT(12238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12238(choice, ...) METALANG99_PRIV_REC_NEXT(12239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12239(choice, ...) METALANG99_PRIV_REC_NEXT(12240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12240(choice, ...) METALANG99_PRIV_REC_NEXT(12241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12241(choice, ...) METALANG99_PRIV_REC_NEXT(12242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12242(choice, ...) METALANG99_PRIV_REC_NEXT(12243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12243(choice, ...) METALANG99_PRIV_REC_NEXT(12244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12244(choice, ...) METALANG99_PRIV_REC_NEXT(12245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12245(choice, ...) METALANG99_PRIV_REC_NEXT(12246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12246(choice, ...) METALANG99_PRIV_REC_NEXT(12247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12247(choice, ...) METALANG99_PRIV_REC_NEXT(12248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12248(choice, ...) METALANG99_PRIV_REC_NEXT(12249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12249(choice, ...) METALANG99_PRIV_REC_NEXT(12250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12250(choice, ...) METALANG99_PRIV_REC_NEXT(12251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12251(choice, ...) METALANG99_PRIV_REC_NEXT(12252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12252(choice, ...) METALANG99_PRIV_REC_NEXT(12253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12253(choice, ...) METALANG99_PRIV_REC_NEXT(12254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12254(choice, ...) METALANG99_PRIV_REC_NEXT(12255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12255(choice, ...) METALANG99_PRIV_REC_NEXT(12256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12256(choice, ...) METALANG99_PRIV_REC_NEXT(12257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12257(choice, ...) METALANG99_PRIV_REC_NEXT(12258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12258(choice, ...) METALANG99_PRIV_REC_NEXT(12259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12259(choice, ...) METALANG99_PRIV_REC_NEXT(12260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12260(choice, ...) METALANG99_PRIV_REC_NEXT(12261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12261(choice, ...) METALANG99_PRIV_REC_NEXT(12262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12262(choice, ...) METALANG99_PRIV_REC_NEXT(12263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12263(choice, ...) METALANG99_PRIV_REC_NEXT(12264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12264(choice, ...) METALANG99_PRIV_REC_NEXT(12265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12265(choice, ...) METALANG99_PRIV_REC_NEXT(12266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12266(choice, ...) METALANG99_PRIV_REC_NEXT(12267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12267(choice, ...) METALANG99_PRIV_REC_NEXT(12268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12268(choice, ...) METALANG99_PRIV_REC_NEXT(12269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12269(choice, ...) METALANG99_PRIV_REC_NEXT(12270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12270(choice, ...) METALANG99_PRIV_REC_NEXT(12271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12271(choice, ...) METALANG99_PRIV_REC_NEXT(12272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12272(choice, ...) METALANG99_PRIV_REC_NEXT(12273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12273(choice, ...) METALANG99_PRIV_REC_NEXT(12274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12274(choice, ...) METALANG99_PRIV_REC_NEXT(12275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12275(choice, ...) METALANG99_PRIV_REC_NEXT(12276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12276(choice, ...) METALANG99_PRIV_REC_NEXT(12277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12277(choice, ...) METALANG99_PRIV_REC_NEXT(12278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12278(choice, ...) METALANG99_PRIV_REC_NEXT(12279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12279(choice, ...) METALANG99_PRIV_REC_NEXT(12280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12280(choice, ...) METALANG99_PRIV_REC_NEXT(12281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12281(choice, ...) METALANG99_PRIV_REC_NEXT(12282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12282(choice, ...) METALANG99_PRIV_REC_NEXT(12283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12283(choice, ...) METALANG99_PRIV_REC_NEXT(12284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12284(choice, ...) METALANG99_PRIV_REC_NEXT(12285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12285(choice, ...) METALANG99_PRIV_REC_NEXT(12286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12286(choice, ...) METALANG99_PRIV_REC_NEXT(12287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12287(choice, ...) METALANG99_PRIV_REC_NEXT(12288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12288(choice, ...) METALANG99_PRIV_REC_NEXT(12289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12289(choice, ...) METALANG99_PRIV_REC_NEXT(12290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12290(choice, ...) METALANG99_PRIV_REC_NEXT(12291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12291(choice, ...) METALANG99_PRIV_REC_NEXT(12292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12292(choice, ...) METALANG99_PRIV_REC_NEXT(12293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12293(choice, ...) METALANG99_PRIV_REC_NEXT(12294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12294(choice, ...) METALANG99_PRIV_REC_NEXT(12295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12295(choice, ...) METALANG99_PRIV_REC_NEXT(12296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12296(choice, ...) METALANG99_PRIV_REC_NEXT(12297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12297(choice, ...) METALANG99_PRIV_REC_NEXT(12298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12298(choice, ...) METALANG99_PRIV_REC_NEXT(12299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12299(choice, ...) METALANG99_PRIV_REC_NEXT(12300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12300(choice, ...) METALANG99_PRIV_REC_NEXT(12301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12301(choice, ...) METALANG99_PRIV_REC_NEXT(12302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12302(choice, ...) METALANG99_PRIV_REC_NEXT(12303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12303(choice, ...) METALANG99_PRIV_REC_NEXT(12304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12304(choice, ...) METALANG99_PRIV_REC_NEXT(12305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12305(choice, ...) METALANG99_PRIV_REC_NEXT(12306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12306(choice, ...) METALANG99_PRIV_REC_NEXT(12307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12307(choice, ...) METALANG99_PRIV_REC_NEXT(12308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12308(choice, ...) METALANG99_PRIV_REC_NEXT(12309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12309(choice, ...) METALANG99_PRIV_REC_NEXT(12310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12310(choice, ...) METALANG99_PRIV_REC_NEXT(12311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12311(choice, ...) METALANG99_PRIV_REC_NEXT(12312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12312(choice, ...) METALANG99_PRIV_REC_NEXT(12313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12313(choice, ...) METALANG99_PRIV_REC_NEXT(12314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12314(choice, ...) METALANG99_PRIV_REC_NEXT(12315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12315(choice, ...) METALANG99_PRIV_REC_NEXT(12316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12316(choice, ...) METALANG99_PRIV_REC_NEXT(12317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12317(choice, ...) METALANG99_PRIV_REC_NEXT(12318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12318(choice, ...) METALANG99_PRIV_REC_NEXT(12319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12319(choice, ...) METALANG99_PRIV_REC_NEXT(12320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12320(choice, ...) METALANG99_PRIV_REC_NEXT(12321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12321(choice, ...) METALANG99_PRIV_REC_NEXT(12322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12322(choice, ...) METALANG99_PRIV_REC_NEXT(12323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12323(choice, ...) METALANG99_PRIV_REC_NEXT(12324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12324(choice, ...) METALANG99_PRIV_REC_NEXT(12325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12325(choice, ...) METALANG99_PRIV_REC_NEXT(12326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12326(choice, ...) METALANG99_PRIV_REC_NEXT(12327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12327(choice, ...) METALANG99_PRIV_REC_NEXT(12328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12328(choice, ...) METALANG99_PRIV_REC_NEXT(12329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12329(choice, ...) METALANG99_PRIV_REC_NEXT(12330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12330(choice, ...) METALANG99_PRIV_REC_NEXT(12331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12331(choice, ...) METALANG99_PRIV_REC_NEXT(12332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12332(choice, ...) METALANG99_PRIV_REC_NEXT(12333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12333(choice, ...) METALANG99_PRIV_REC_NEXT(12334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12334(choice, ...) METALANG99_PRIV_REC_NEXT(12335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12335(choice, ...) METALANG99_PRIV_REC_NEXT(12336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12336(choice, ...) METALANG99_PRIV_REC_NEXT(12337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12337(choice, ...) METALANG99_PRIV_REC_NEXT(12338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12338(choice, ...) METALANG99_PRIV_REC_NEXT(12339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12339(choice, ...) METALANG99_PRIV_REC_NEXT(12340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12340(choice, ...) METALANG99_PRIV_REC_NEXT(12341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12341(choice, ...) METALANG99_PRIV_REC_NEXT(12342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12342(choice, ...) METALANG99_PRIV_REC_NEXT(12343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12343(choice, ...) METALANG99_PRIV_REC_NEXT(12344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12344(choice, ...) METALANG99_PRIV_REC_NEXT(12345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12345(choice, ...) METALANG99_PRIV_REC_NEXT(12346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12346(choice, ...) METALANG99_PRIV_REC_NEXT(12347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12347(choice, ...) METALANG99_PRIV_REC_NEXT(12348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12348(choice, ...) METALANG99_PRIV_REC_NEXT(12349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12349(choice, ...) METALANG99_PRIV_REC_NEXT(12350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12350(choice, ...) METALANG99_PRIV_REC_NEXT(12351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12351(choice, ...) METALANG99_PRIV_REC_NEXT(12352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12352(choice, ...) METALANG99_PRIV_REC_NEXT(12353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12353(choice, ...) METALANG99_PRIV_REC_NEXT(12354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12354(choice, ...) METALANG99_PRIV_REC_NEXT(12355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12355(choice, ...) METALANG99_PRIV_REC_NEXT(12356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12356(choice, ...) METALANG99_PRIV_REC_NEXT(12357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12357(choice, ...) METALANG99_PRIV_REC_NEXT(12358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12358(choice, ...) METALANG99_PRIV_REC_NEXT(12359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12359(choice, ...) METALANG99_PRIV_REC_NEXT(12360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12360(choice, ...) METALANG99_PRIV_REC_NEXT(12361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12361(choice, ...) METALANG99_PRIV_REC_NEXT(12362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12362(choice, ...) METALANG99_PRIV_REC_NEXT(12363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12363(choice, ...) METALANG99_PRIV_REC_NEXT(12364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12364(choice, ...) METALANG99_PRIV_REC_NEXT(12365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12365(choice, ...) METALANG99_PRIV_REC_NEXT(12366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12366(choice, ...) METALANG99_PRIV_REC_NEXT(12367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12367(choice, ...) METALANG99_PRIV_REC_NEXT(12368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12368(choice, ...) METALANG99_PRIV_REC_NEXT(12369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12369(choice, ...) METALANG99_PRIV_REC_NEXT(12370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12370(choice, ...) METALANG99_PRIV_REC_NEXT(12371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12371(choice, ...) METALANG99_PRIV_REC_NEXT(12372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12372(choice, ...) METALANG99_PRIV_REC_NEXT(12373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12373(choice, ...) METALANG99_PRIV_REC_NEXT(12374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12374(choice, ...) METALANG99_PRIV_REC_NEXT(12375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12375(choice, ...) METALANG99_PRIV_REC_NEXT(12376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12376(choice, ...) METALANG99_PRIV_REC_NEXT(12377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12377(choice, ...) METALANG99_PRIV_REC_NEXT(12378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12378(choice, ...) METALANG99_PRIV_REC_NEXT(12379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12379(choice, ...) METALANG99_PRIV_REC_NEXT(12380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12380(choice, ...) METALANG99_PRIV_REC_NEXT(12381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12381(choice, ...) METALANG99_PRIV_REC_NEXT(12382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12382(choice, ...) METALANG99_PRIV_REC_NEXT(12383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12383(choice, ...) METALANG99_PRIV_REC_NEXT(12384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12384(choice, ...) METALANG99_PRIV_REC_NEXT(12385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12385(choice, ...) METALANG99_PRIV_REC_NEXT(12386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12386(choice, ...) METALANG99_PRIV_REC_NEXT(12387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12387(choice, ...) METALANG99_PRIV_REC_NEXT(12388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12388(choice, ...) METALANG99_PRIV_REC_NEXT(12389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12389(choice, ...) METALANG99_PRIV_REC_NEXT(12390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12390(choice, ...) METALANG99_PRIV_REC_NEXT(12391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12391(choice, ...) METALANG99_PRIV_REC_NEXT(12392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12392(choice, ...) METALANG99_PRIV_REC_NEXT(12393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12393(choice, ...) METALANG99_PRIV_REC_NEXT(12394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12394(choice, ...) METALANG99_PRIV_REC_NEXT(12395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12395(choice, ...) METALANG99_PRIV_REC_NEXT(12396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12396(choice, ...) METALANG99_PRIV_REC_NEXT(12397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12397(choice, ...) METALANG99_PRIV_REC_NEXT(12398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12398(choice, ...) METALANG99_PRIV_REC_NEXT(12399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12399(choice, ...) METALANG99_PRIV_REC_NEXT(12400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12400(choice, ...) METALANG99_PRIV_REC_NEXT(12401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12401(choice, ...) METALANG99_PRIV_REC_NEXT(12402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12402(choice, ...) METALANG99_PRIV_REC_NEXT(12403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12403(choice, ...) METALANG99_PRIV_REC_NEXT(12404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12404(choice, ...) METALANG99_PRIV_REC_NEXT(12405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12405(choice, ...) METALANG99_PRIV_REC_NEXT(12406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12406(choice, ...) METALANG99_PRIV_REC_NEXT(12407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12407(choice, ...) METALANG99_PRIV_REC_NEXT(12408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12408(choice, ...) METALANG99_PRIV_REC_NEXT(12409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12409(choice, ...) METALANG99_PRIV_REC_NEXT(12410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12410(choice, ...) METALANG99_PRIV_REC_NEXT(12411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12411(choice, ...) METALANG99_PRIV_REC_NEXT(12412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12412(choice, ...) METALANG99_PRIV_REC_NEXT(12413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12413(choice, ...) METALANG99_PRIV_REC_NEXT(12414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12414(choice, ...) METALANG99_PRIV_REC_NEXT(12415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12415(choice, ...) METALANG99_PRIV_REC_NEXT(12416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12416(choice, ...) METALANG99_PRIV_REC_NEXT(12417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12417(choice, ...) METALANG99_PRIV_REC_NEXT(12418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12418(choice, ...) METALANG99_PRIV_REC_NEXT(12419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12419(choice, ...) METALANG99_PRIV_REC_NEXT(12420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12420(choice, ...) METALANG99_PRIV_REC_NEXT(12421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12421(choice, ...) METALANG99_PRIV_REC_NEXT(12422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12422(choice, ...) METALANG99_PRIV_REC_NEXT(12423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12423(choice, ...) METALANG99_PRIV_REC_NEXT(12424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12424(choice, ...) METALANG99_PRIV_REC_NEXT(12425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12425(choice, ...) METALANG99_PRIV_REC_NEXT(12426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12426(choice, ...) METALANG99_PRIV_REC_NEXT(12427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12427(choice, ...) METALANG99_PRIV_REC_NEXT(12428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12428(choice, ...) METALANG99_PRIV_REC_NEXT(12429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12429(choice, ...) METALANG99_PRIV_REC_NEXT(12430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12430(choice, ...) METALANG99_PRIV_REC_NEXT(12431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12431(choice, ...) METALANG99_PRIV_REC_NEXT(12432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12432(choice, ...) METALANG99_PRIV_REC_NEXT(12433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12433(choice, ...) METALANG99_PRIV_REC_NEXT(12434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12434(choice, ...) METALANG99_PRIV_REC_NEXT(12435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12435(choice, ...) METALANG99_PRIV_REC_NEXT(12436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12436(choice, ...) METALANG99_PRIV_REC_NEXT(12437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12437(choice, ...) METALANG99_PRIV_REC_NEXT(12438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12438(choice, ...) METALANG99_PRIV_REC_NEXT(12439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12439(choice, ...) METALANG99_PRIV_REC_NEXT(12440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12440(choice, ...) METALANG99_PRIV_REC_NEXT(12441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12441(choice, ...) METALANG99_PRIV_REC_NEXT(12442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12442(choice, ...) METALANG99_PRIV_REC_NEXT(12443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12443(choice, ...) METALANG99_PRIV_REC_NEXT(12444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12444(choice, ...) METALANG99_PRIV_REC_NEXT(12445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12445(choice, ...) METALANG99_PRIV_REC_NEXT(12446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12446(choice, ...) METALANG99_PRIV_REC_NEXT(12447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12447(choice, ...) METALANG99_PRIV_REC_NEXT(12448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12448(choice, ...) METALANG99_PRIV_REC_NEXT(12449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12449(choice, ...) METALANG99_PRIV_REC_NEXT(12450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12450(choice, ...) METALANG99_PRIV_REC_NEXT(12451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12451(choice, ...) METALANG99_PRIV_REC_NEXT(12452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12452(choice, ...) METALANG99_PRIV_REC_NEXT(12453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12453(choice, ...) METALANG99_PRIV_REC_NEXT(12454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12454(choice, ...) METALANG99_PRIV_REC_NEXT(12455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12455(choice, ...) METALANG99_PRIV_REC_NEXT(12456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12456(choice, ...) METALANG99_PRIV_REC_NEXT(12457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12457(choice, ...) METALANG99_PRIV_REC_NEXT(12458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12458(choice, ...) METALANG99_PRIV_REC_NEXT(12459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12459(choice, ...) METALANG99_PRIV_REC_NEXT(12460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12460(choice, ...) METALANG99_PRIV_REC_NEXT(12461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12461(choice, ...) METALANG99_PRIV_REC_NEXT(12462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12462(choice, ...) METALANG99_PRIV_REC_NEXT(12463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12463(choice, ...) METALANG99_PRIV_REC_NEXT(12464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12464(choice, ...) METALANG99_PRIV_REC_NEXT(12465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12465(choice, ...) METALANG99_PRIV_REC_NEXT(12466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12466(choice, ...) METALANG99_PRIV_REC_NEXT(12467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12467(choice, ...) METALANG99_PRIV_REC_NEXT(12468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12468(choice, ...) METALANG99_PRIV_REC_NEXT(12469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12469(choice, ...) METALANG99_PRIV_REC_NEXT(12470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12470(choice, ...) METALANG99_PRIV_REC_NEXT(12471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12471(choice, ...) METALANG99_PRIV_REC_NEXT(12472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12472(choice, ...) METALANG99_PRIV_REC_NEXT(12473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12473(choice, ...) METALANG99_PRIV_REC_NEXT(12474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12474(choice, ...) METALANG99_PRIV_REC_NEXT(12475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12475(choice, ...) METALANG99_PRIV_REC_NEXT(12476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12476(choice, ...) METALANG99_PRIV_REC_NEXT(12477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12477(choice, ...) METALANG99_PRIV_REC_NEXT(12478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12478(choice, ...) METALANG99_PRIV_REC_NEXT(12479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12479(choice, ...) METALANG99_PRIV_REC_NEXT(12480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12480(choice, ...) METALANG99_PRIV_REC_NEXT(12481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12481(choice, ...) METALANG99_PRIV_REC_NEXT(12482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12482(choice, ...) METALANG99_PRIV_REC_NEXT(12483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12483(choice, ...) METALANG99_PRIV_REC_NEXT(12484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12484(choice, ...) METALANG99_PRIV_REC_NEXT(12485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12485(choice, ...) METALANG99_PRIV_REC_NEXT(12486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12486(choice, ...) METALANG99_PRIV_REC_NEXT(12487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12487(choice, ...) METALANG99_PRIV_REC_NEXT(12488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12488(choice, ...) METALANG99_PRIV_REC_NEXT(12489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12489(choice, ...) METALANG99_PRIV_REC_NEXT(12490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12490(choice, ...) METALANG99_PRIV_REC_NEXT(12491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12491(choice, ...) METALANG99_PRIV_REC_NEXT(12492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12492(choice, ...) METALANG99_PRIV_REC_NEXT(12493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12493(choice, ...) METALANG99_PRIV_REC_NEXT(12494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12494(choice, ...) METALANG99_PRIV_REC_NEXT(12495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12495(choice, ...) METALANG99_PRIV_REC_NEXT(12496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12496(choice, ...) METALANG99_PRIV_REC_NEXT(12497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12497(choice, ...) METALANG99_PRIV_REC_NEXT(12498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12498(choice, ...) METALANG99_PRIV_REC_NEXT(12499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12499(choice, ...) METALANG99_PRIV_REC_NEXT(12500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12500(choice, ...) METALANG99_PRIV_REC_NEXT(12501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12501(choice, ...) METALANG99_PRIV_REC_NEXT(12502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12502(choice, ...) METALANG99_PRIV_REC_NEXT(12503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12503(choice, ...) METALANG99_PRIV_REC_NEXT(12504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12504(choice, ...) METALANG99_PRIV_REC_NEXT(12505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12505(choice, ...) METALANG99_PRIV_REC_NEXT(12506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12506(choice, ...) METALANG99_PRIV_REC_NEXT(12507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12507(choice, ...) METALANG99_PRIV_REC_NEXT(12508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12508(choice, ...) METALANG99_PRIV_REC_NEXT(12509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12509(choice, ...) METALANG99_PRIV_REC_NEXT(12510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12510(choice, ...) METALANG99_PRIV_REC_NEXT(12511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12511(choice, ...) METALANG99_PRIV_REC_NEXT(12512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12512(choice, ...) METALANG99_PRIV_REC_NEXT(12513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12513(choice, ...) METALANG99_PRIV_REC_NEXT(12514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12514(choice, ...) METALANG99_PRIV_REC_NEXT(12515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12515(choice, ...) METALANG99_PRIV_REC_NEXT(12516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12516(choice, ...) METALANG99_PRIV_REC_NEXT(12517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12517(choice, ...) METALANG99_PRIV_REC_NEXT(12518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12518(choice, ...) METALANG99_PRIV_REC_NEXT(12519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12519(choice, ...) METALANG99_PRIV_REC_NEXT(12520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12520(choice, ...) METALANG99_PRIV_REC_NEXT(12521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12521(choice, ...) METALANG99_PRIV_REC_NEXT(12522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12522(choice, ...) METALANG99_PRIV_REC_NEXT(12523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12523(choice, ...) METALANG99_PRIV_REC_NEXT(12524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12524(choice, ...) METALANG99_PRIV_REC_NEXT(12525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12525(choice, ...) METALANG99_PRIV_REC_NEXT(12526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12526(choice, ...) METALANG99_PRIV_REC_NEXT(12527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12527(choice, ...) METALANG99_PRIV_REC_NEXT(12528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12528(choice, ...) METALANG99_PRIV_REC_NEXT(12529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12529(choice, ...) METALANG99_PRIV_REC_NEXT(12530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12530(choice, ...) METALANG99_PRIV_REC_NEXT(12531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12531(choice, ...) METALANG99_PRIV_REC_NEXT(12532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12532(choice, ...) METALANG99_PRIV_REC_NEXT(12533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12533(choice, ...) METALANG99_PRIV_REC_NEXT(12534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12534(choice, ...) METALANG99_PRIV_REC_NEXT(12535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12535(choice, ...) METALANG99_PRIV_REC_NEXT(12536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12536(choice, ...) METALANG99_PRIV_REC_NEXT(12537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12537(choice, ...) METALANG99_PRIV_REC_NEXT(12538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12538(choice, ...) METALANG99_PRIV_REC_NEXT(12539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12539(choice, ...) METALANG99_PRIV_REC_NEXT(12540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12540(choice, ...) METALANG99_PRIV_REC_NEXT(12541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12541(choice, ...) METALANG99_PRIV_REC_NEXT(12542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12542(choice, ...) METALANG99_PRIV_REC_NEXT(12543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12543(choice, ...) METALANG99_PRIV_REC_NEXT(12544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12544(choice, ...) METALANG99_PRIV_REC_NEXT(12545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12545(choice, ...) METALANG99_PRIV_REC_NEXT(12546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12546(choice, ...) METALANG99_PRIV_REC_NEXT(12547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12547(choice, ...) METALANG99_PRIV_REC_NEXT(12548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12548(choice, ...) METALANG99_PRIV_REC_NEXT(12549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12549(choice, ...) METALANG99_PRIV_REC_NEXT(12550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12550(choice, ...) METALANG99_PRIV_REC_NEXT(12551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12551(choice, ...) METALANG99_PRIV_REC_NEXT(12552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12552(choice, ...) METALANG99_PRIV_REC_NEXT(12553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12553(choice, ...) METALANG99_PRIV_REC_NEXT(12554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12554(choice, ...) METALANG99_PRIV_REC_NEXT(12555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12555(choice, ...) METALANG99_PRIV_REC_NEXT(12556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12556(choice, ...) METALANG99_PRIV_REC_NEXT(12557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12557(choice, ...) METALANG99_PRIV_REC_NEXT(12558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12558(choice, ...) METALANG99_PRIV_REC_NEXT(12559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12559(choice, ...) METALANG99_PRIV_REC_NEXT(12560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12560(choice, ...) METALANG99_PRIV_REC_NEXT(12561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12561(choice, ...) METALANG99_PRIV_REC_NEXT(12562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12562(choice, ...) METALANG99_PRIV_REC_NEXT(12563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12563(choice, ...) METALANG99_PRIV_REC_NEXT(12564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12564(choice, ...) METALANG99_PRIV_REC_NEXT(12565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12565(choice, ...) METALANG99_PRIV_REC_NEXT(12566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12566(choice, ...) METALANG99_PRIV_REC_NEXT(12567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12567(choice, ...) METALANG99_PRIV_REC_NEXT(12568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12568(choice, ...) METALANG99_PRIV_REC_NEXT(12569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12569(choice, ...) METALANG99_PRIV_REC_NEXT(12570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12570(choice, ...) METALANG99_PRIV_REC_NEXT(12571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12571(choice, ...) METALANG99_PRIV_REC_NEXT(12572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12572(choice, ...) METALANG99_PRIV_REC_NEXT(12573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12573(choice, ...) METALANG99_PRIV_REC_NEXT(12574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12574(choice, ...) METALANG99_PRIV_REC_NEXT(12575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12575(choice, ...) METALANG99_PRIV_REC_NEXT(12576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12576(choice, ...) METALANG99_PRIV_REC_NEXT(12577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12577(choice, ...) METALANG99_PRIV_REC_NEXT(12578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12578(choice, ...) METALANG99_PRIV_REC_NEXT(12579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12579(choice, ...) METALANG99_PRIV_REC_NEXT(12580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12580(choice, ...) METALANG99_PRIV_REC_NEXT(12581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12581(choice, ...) METALANG99_PRIV_REC_NEXT(12582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12582(choice, ...) METALANG99_PRIV_REC_NEXT(12583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12583(choice, ...) METALANG99_PRIV_REC_NEXT(12584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12584(choice, ...) METALANG99_PRIV_REC_NEXT(12585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12585(choice, ...) METALANG99_PRIV_REC_NEXT(12586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12586(choice, ...) METALANG99_PRIV_REC_NEXT(12587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12587(choice, ...) METALANG99_PRIV_REC_NEXT(12588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12588(choice, ...) METALANG99_PRIV_REC_NEXT(12589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12589(choice, ...) METALANG99_PRIV_REC_NEXT(12590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12590(choice, ...) METALANG99_PRIV_REC_NEXT(12591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12591(choice, ...) METALANG99_PRIV_REC_NEXT(12592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12592(choice, ...) METALANG99_PRIV_REC_NEXT(12593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12593(choice, ...) METALANG99_PRIV_REC_NEXT(12594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12594(choice, ...) METALANG99_PRIV_REC_NEXT(12595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12595(choice, ...) METALANG99_PRIV_REC_NEXT(12596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12596(choice, ...) METALANG99_PRIV_REC_NEXT(12597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12597(choice, ...) METALANG99_PRIV_REC_NEXT(12598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12598(choice, ...) METALANG99_PRIV_REC_NEXT(12599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12599(choice, ...) METALANG99_PRIV_REC_NEXT(12600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12600(choice, ...) METALANG99_PRIV_REC_NEXT(12601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12601(choice, ...) METALANG99_PRIV_REC_NEXT(12602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12602(choice, ...) METALANG99_PRIV_REC_NEXT(12603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12603(choice, ...) METALANG99_PRIV_REC_NEXT(12604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12604(choice, ...) METALANG99_PRIV_REC_NEXT(12605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12605(choice, ...) METALANG99_PRIV_REC_NEXT(12606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12606(choice, ...) METALANG99_PRIV_REC_NEXT(12607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12607(choice, ...) METALANG99_PRIV_REC_NEXT(12608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12608(choice, ...) METALANG99_PRIV_REC_NEXT(12609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12609(choice, ...) METALANG99_PRIV_REC_NEXT(12610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12610(choice, ...) METALANG99_PRIV_REC_NEXT(12611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12611(choice, ...) METALANG99_PRIV_REC_NEXT(12612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12612(choice, ...) METALANG99_PRIV_REC_NEXT(12613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12613(choice, ...) METALANG99_PRIV_REC_NEXT(12614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12614(choice, ...) METALANG99_PRIV_REC_NEXT(12615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12615(choice, ...) METALANG99_PRIV_REC_NEXT(12616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12616(choice, ...) METALANG99_PRIV_REC_NEXT(12617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12617(choice, ...) METALANG99_PRIV_REC_NEXT(12618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12618(choice, ...) METALANG99_PRIV_REC_NEXT(12619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12619(choice, ...) METALANG99_PRIV_REC_NEXT(12620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12620(choice, ...) METALANG99_PRIV_REC_NEXT(12621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12621(choice, ...) METALANG99_PRIV_REC_NEXT(12622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12622(choice, ...) METALANG99_PRIV_REC_NEXT(12623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12623(choice, ...) METALANG99_PRIV_REC_NEXT(12624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12624(choice, ...) METALANG99_PRIV_REC_NEXT(12625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12625(choice, ...) METALANG99_PRIV_REC_NEXT(12626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12626(choice, ...) METALANG99_PRIV_REC_NEXT(12627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12627(choice, ...) METALANG99_PRIV_REC_NEXT(12628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12628(choice, ...) METALANG99_PRIV_REC_NEXT(12629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12629(choice, ...) METALANG99_PRIV_REC_NEXT(12630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12630(choice, ...) METALANG99_PRIV_REC_NEXT(12631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12631(choice, ...) METALANG99_PRIV_REC_NEXT(12632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12632(choice, ...) METALANG99_PRIV_REC_NEXT(12633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12633(choice, ...) METALANG99_PRIV_REC_NEXT(12634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12634(choice, ...) METALANG99_PRIV_REC_NEXT(12635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12635(choice, ...) METALANG99_PRIV_REC_NEXT(12636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12636(choice, ...) METALANG99_PRIV_REC_NEXT(12637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12637(choice, ...) METALANG99_PRIV_REC_NEXT(12638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12638(choice, ...) METALANG99_PRIV_REC_NEXT(12639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12639(choice, ...) METALANG99_PRIV_REC_NEXT(12640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12640(choice, ...) METALANG99_PRIV_REC_NEXT(12641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12641(choice, ...) METALANG99_PRIV_REC_NEXT(12642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12642(choice, ...) METALANG99_PRIV_REC_NEXT(12643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12643(choice, ...) METALANG99_PRIV_REC_NEXT(12644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12644(choice, ...) METALANG99_PRIV_REC_NEXT(12645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12645(choice, ...) METALANG99_PRIV_REC_NEXT(12646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12646(choice, ...) METALANG99_PRIV_REC_NEXT(12647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12647(choice, ...) METALANG99_PRIV_REC_NEXT(12648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12648(choice, ...) METALANG99_PRIV_REC_NEXT(12649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12649(choice, ...) METALANG99_PRIV_REC_NEXT(12650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12650(choice, ...) METALANG99_PRIV_REC_NEXT(12651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12651(choice, ...) METALANG99_PRIV_REC_NEXT(12652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12652(choice, ...) METALANG99_PRIV_REC_NEXT(12653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12653(choice, ...) METALANG99_PRIV_REC_NEXT(12654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12654(choice, ...) METALANG99_PRIV_REC_NEXT(12655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12655(choice, ...) METALANG99_PRIV_REC_NEXT(12656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12656(choice, ...) METALANG99_PRIV_REC_NEXT(12657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12657(choice, ...) METALANG99_PRIV_REC_NEXT(12658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12658(choice, ...) METALANG99_PRIV_REC_NEXT(12659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12659(choice, ...) METALANG99_PRIV_REC_NEXT(12660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12660(choice, ...) METALANG99_PRIV_REC_NEXT(12661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12661(choice, ...) METALANG99_PRIV_REC_NEXT(12662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12662(choice, ...) METALANG99_PRIV_REC_NEXT(12663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12663(choice, ...) METALANG99_PRIV_REC_NEXT(12664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12664(choice, ...) METALANG99_PRIV_REC_NEXT(12665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12665(choice, ...) METALANG99_PRIV_REC_NEXT(12666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12666(choice, ...) METALANG99_PRIV_REC_NEXT(12667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12667(choice, ...) METALANG99_PRIV_REC_NEXT(12668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12668(choice, ...) METALANG99_PRIV_REC_NEXT(12669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12669(choice, ...) METALANG99_PRIV_REC_NEXT(12670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12670(choice, ...) METALANG99_PRIV_REC_NEXT(12671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12671(choice, ...) METALANG99_PRIV_REC_NEXT(12672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12672(choice, ...) METALANG99_PRIV_REC_NEXT(12673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12673(choice, ...) METALANG99_PRIV_REC_NEXT(12674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12674(choice, ...) METALANG99_PRIV_REC_NEXT(12675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12675(choice, ...) METALANG99_PRIV_REC_NEXT(12676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12676(choice, ...) METALANG99_PRIV_REC_NEXT(12677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12677(choice, ...) METALANG99_PRIV_REC_NEXT(12678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12678(choice, ...) METALANG99_PRIV_REC_NEXT(12679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12679(choice, ...) METALANG99_PRIV_REC_NEXT(12680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12680(choice, ...) METALANG99_PRIV_REC_NEXT(12681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12681(choice, ...) METALANG99_PRIV_REC_NEXT(12682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12682(choice, ...) METALANG99_PRIV_REC_NEXT(12683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12683(choice, ...) METALANG99_PRIV_REC_NEXT(12684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12684(choice, ...) METALANG99_PRIV_REC_NEXT(12685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12685(choice, ...) METALANG99_PRIV_REC_NEXT(12686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12686(choice, ...) METALANG99_PRIV_REC_NEXT(12687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12687(choice, ...) METALANG99_PRIV_REC_NEXT(12688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12688(choice, ...) METALANG99_PRIV_REC_NEXT(12689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12689(choice, ...) METALANG99_PRIV_REC_NEXT(12690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12690(choice, ...) METALANG99_PRIV_REC_NEXT(12691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12691(choice, ...) METALANG99_PRIV_REC_NEXT(12692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12692(choice, ...) METALANG99_PRIV_REC_NEXT(12693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12693(choice, ...) METALANG99_PRIV_REC_NEXT(12694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12694(choice, ...) METALANG99_PRIV_REC_NEXT(12695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12695(choice, ...) METALANG99_PRIV_REC_NEXT(12696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12696(choice, ...) METALANG99_PRIV_REC_NEXT(12697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12697(choice, ...) METALANG99_PRIV_REC_NEXT(12698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12698(choice, ...) METALANG99_PRIV_REC_NEXT(12699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12699(choice, ...) METALANG99_PRIV_REC_NEXT(12700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12700(choice, ...) METALANG99_PRIV_REC_NEXT(12701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12701(choice, ...) METALANG99_PRIV_REC_NEXT(12702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12702(choice, ...) METALANG99_PRIV_REC_NEXT(12703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12703(choice, ...) METALANG99_PRIV_REC_NEXT(12704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12704(choice, ...) METALANG99_PRIV_REC_NEXT(12705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12705(choice, ...) METALANG99_PRIV_REC_NEXT(12706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12706(choice, ...) METALANG99_PRIV_REC_NEXT(12707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12707(choice, ...) METALANG99_PRIV_REC_NEXT(12708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12708(choice, ...) METALANG99_PRIV_REC_NEXT(12709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12709(choice, ...) METALANG99_PRIV_REC_NEXT(12710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12710(choice, ...) METALANG99_PRIV_REC_NEXT(12711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12711(choice, ...) METALANG99_PRIV_REC_NEXT(12712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12712(choice, ...) METALANG99_PRIV_REC_NEXT(12713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12713(choice, ...) METALANG99_PRIV_REC_NEXT(12714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12714(choice, ...) METALANG99_PRIV_REC_NEXT(12715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12715(choice, ...) METALANG99_PRIV_REC_NEXT(12716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12716(choice, ...) METALANG99_PRIV_REC_NEXT(12717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12717(choice, ...) METALANG99_PRIV_REC_NEXT(12718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12718(choice, ...) METALANG99_PRIV_REC_NEXT(12719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12719(choice, ...) METALANG99_PRIV_REC_NEXT(12720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12720(choice, ...) METALANG99_PRIV_REC_NEXT(12721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12721(choice, ...) METALANG99_PRIV_REC_NEXT(12722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12722(choice, ...) METALANG99_PRIV_REC_NEXT(12723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12723(choice, ...) METALANG99_PRIV_REC_NEXT(12724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12724(choice, ...) METALANG99_PRIV_REC_NEXT(12725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12725(choice, ...) METALANG99_PRIV_REC_NEXT(12726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12726(choice, ...) METALANG99_PRIV_REC_NEXT(12727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12727(choice, ...) METALANG99_PRIV_REC_NEXT(12728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12728(choice, ...) METALANG99_PRIV_REC_NEXT(12729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12729(choice, ...) METALANG99_PRIV_REC_NEXT(12730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12730(choice, ...) METALANG99_PRIV_REC_NEXT(12731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12731(choice, ...) METALANG99_PRIV_REC_NEXT(12732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12732(choice, ...) METALANG99_PRIV_REC_NEXT(12733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12733(choice, ...) METALANG99_PRIV_REC_NEXT(12734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12734(choice, ...) METALANG99_PRIV_REC_NEXT(12735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12735(choice, ...) METALANG99_PRIV_REC_NEXT(12736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12736(choice, ...) METALANG99_PRIV_REC_NEXT(12737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12737(choice, ...) METALANG99_PRIV_REC_NEXT(12738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12738(choice, ...) METALANG99_PRIV_REC_NEXT(12739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12739(choice, ...) METALANG99_PRIV_REC_NEXT(12740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12740(choice, ...) METALANG99_PRIV_REC_NEXT(12741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12741(choice, ...) METALANG99_PRIV_REC_NEXT(12742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12742(choice, ...) METALANG99_PRIV_REC_NEXT(12743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12743(choice, ...) METALANG99_PRIV_REC_NEXT(12744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12744(choice, ...) METALANG99_PRIV_REC_NEXT(12745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12745(choice, ...) METALANG99_PRIV_REC_NEXT(12746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12746(choice, ...) METALANG99_PRIV_REC_NEXT(12747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12747(choice, ...) METALANG99_PRIV_REC_NEXT(12748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12748(choice, ...) METALANG99_PRIV_REC_NEXT(12749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12749(choice, ...) METALANG99_PRIV_REC_NEXT(12750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12750(choice, ...) METALANG99_PRIV_REC_NEXT(12751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12751(choice, ...) METALANG99_PRIV_REC_NEXT(12752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12752(choice, ...) METALANG99_PRIV_REC_NEXT(12753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12753(choice, ...) METALANG99_PRIV_REC_NEXT(12754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12754(choice, ...) METALANG99_PRIV_REC_NEXT(12755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12755(choice, ...) METALANG99_PRIV_REC_NEXT(12756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12756(choice, ...) METALANG99_PRIV_REC_NEXT(12757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12757(choice, ...) METALANG99_PRIV_REC_NEXT(12758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12758(choice, ...) METALANG99_PRIV_REC_NEXT(12759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12759(choice, ...) METALANG99_PRIV_REC_NEXT(12760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12760(choice, ...) METALANG99_PRIV_REC_NEXT(12761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12761(choice, ...) METALANG99_PRIV_REC_NEXT(12762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12762(choice, ...) METALANG99_PRIV_REC_NEXT(12763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12763(choice, ...) METALANG99_PRIV_REC_NEXT(12764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12764(choice, ...) METALANG99_PRIV_REC_NEXT(12765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12765(choice, ...) METALANG99_PRIV_REC_NEXT(12766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12766(choice, ...) METALANG99_PRIV_REC_NEXT(12767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12767(choice, ...) METALANG99_PRIV_REC_NEXT(12768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12768(choice, ...) METALANG99_PRIV_REC_NEXT(12769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12769(choice, ...) METALANG99_PRIV_REC_NEXT(12770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12770(choice, ...) METALANG99_PRIV_REC_NEXT(12771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12771(choice, ...) METALANG99_PRIV_REC_NEXT(12772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12772(choice, ...) METALANG99_PRIV_REC_NEXT(12773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12773(choice, ...) METALANG99_PRIV_REC_NEXT(12774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12774(choice, ...) METALANG99_PRIV_REC_NEXT(12775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12775(choice, ...) METALANG99_PRIV_REC_NEXT(12776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12776(choice, ...) METALANG99_PRIV_REC_NEXT(12777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12777(choice, ...) METALANG99_PRIV_REC_NEXT(12778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12778(choice, ...) METALANG99_PRIV_REC_NEXT(12779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12779(choice, ...) METALANG99_PRIV_REC_NEXT(12780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12780(choice, ...) METALANG99_PRIV_REC_NEXT(12781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12781(choice, ...) METALANG99_PRIV_REC_NEXT(12782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12782(choice, ...) METALANG99_PRIV_REC_NEXT(12783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12783(choice, ...) METALANG99_PRIV_REC_NEXT(12784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12784(choice, ...) METALANG99_PRIV_REC_NEXT(12785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12785(choice, ...) METALANG99_PRIV_REC_NEXT(12786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12786(choice, ...) METALANG99_PRIV_REC_NEXT(12787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12787(choice, ...) METALANG99_PRIV_REC_NEXT(12788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12788(choice, ...) METALANG99_PRIV_REC_NEXT(12789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12789(choice, ...) METALANG99_PRIV_REC_NEXT(12790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12790(choice, ...) METALANG99_PRIV_REC_NEXT(12791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12791(choice, ...) METALANG99_PRIV_REC_NEXT(12792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12792(choice, ...) METALANG99_PRIV_REC_NEXT(12793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12793(choice, ...) METALANG99_PRIV_REC_NEXT(12794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12794(choice, ...) METALANG99_PRIV_REC_NEXT(12795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12795(choice, ...) METALANG99_PRIV_REC_NEXT(12796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12796(choice, ...) METALANG99_PRIV_REC_NEXT(12797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12797(choice, ...) METALANG99_PRIV_REC_NEXT(12798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12798(choice, ...) METALANG99_PRIV_REC_NEXT(12799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12799(choice, ...) METALANG99_PRIV_REC_NEXT(12800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12800(choice, ...) METALANG99_PRIV_REC_NEXT(12801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12801(choice, ...) METALANG99_PRIV_REC_NEXT(12802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12802(choice, ...) METALANG99_PRIV_REC_NEXT(12803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12803(choice, ...) METALANG99_PRIV_REC_NEXT(12804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12804(choice, ...) METALANG99_PRIV_REC_NEXT(12805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12805(choice, ...) METALANG99_PRIV_REC_NEXT(12806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12806(choice, ...) METALANG99_PRIV_REC_NEXT(12807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12807(choice, ...) METALANG99_PRIV_REC_NEXT(12808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12808(choice, ...) METALANG99_PRIV_REC_NEXT(12809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12809(choice, ...) METALANG99_PRIV_REC_NEXT(12810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12810(choice, ...) METALANG99_PRIV_REC_NEXT(12811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12811(choice, ...) METALANG99_PRIV_REC_NEXT(12812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12812(choice, ...) METALANG99_PRIV_REC_NEXT(12813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12813(choice, ...) METALANG99_PRIV_REC_NEXT(12814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12814(choice, ...) METALANG99_PRIV_REC_NEXT(12815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12815(choice, ...) METALANG99_PRIV_REC_NEXT(12816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12816(choice, ...) METALANG99_PRIV_REC_NEXT(12817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12817(choice, ...) METALANG99_PRIV_REC_NEXT(12818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12818(choice, ...) METALANG99_PRIV_REC_NEXT(12819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12819(choice, ...) METALANG99_PRIV_REC_NEXT(12820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12820(choice, ...) METALANG99_PRIV_REC_NEXT(12821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12821(choice, ...) METALANG99_PRIV_REC_NEXT(12822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12822(choice, ...) METALANG99_PRIV_REC_NEXT(12823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12823(choice, ...) METALANG99_PRIV_REC_NEXT(12824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12824(choice, ...) METALANG99_PRIV_REC_NEXT(12825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12825(choice, ...) METALANG99_PRIV_REC_NEXT(12826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12826(choice, ...) METALANG99_PRIV_REC_NEXT(12827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12827(choice, ...) METALANG99_PRIV_REC_NEXT(12828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12828(choice, ...) METALANG99_PRIV_REC_NEXT(12829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12829(choice, ...) METALANG99_PRIV_REC_NEXT(12830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12830(choice, ...) METALANG99_PRIV_REC_NEXT(12831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12831(choice, ...) METALANG99_PRIV_REC_NEXT(12832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12832(choice, ...) METALANG99_PRIV_REC_NEXT(12833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12833(choice, ...) METALANG99_PRIV_REC_NEXT(12834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12834(choice, ...) METALANG99_PRIV_REC_NEXT(12835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12835(choice, ...) METALANG99_PRIV_REC_NEXT(12836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12836(choice, ...) METALANG99_PRIV_REC_NEXT(12837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12837(choice, ...) METALANG99_PRIV_REC_NEXT(12838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12838(choice, ...) METALANG99_PRIV_REC_NEXT(12839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12839(choice, ...) METALANG99_PRIV_REC_NEXT(12840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12840(choice, ...) METALANG99_PRIV_REC_NEXT(12841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12841(choice, ...) METALANG99_PRIV_REC_NEXT(12842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12842(choice, ...) METALANG99_PRIV_REC_NEXT(12843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12843(choice, ...) METALANG99_PRIV_REC_NEXT(12844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12844(choice, ...) METALANG99_PRIV_REC_NEXT(12845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12845(choice, ...) METALANG99_PRIV_REC_NEXT(12846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12846(choice, ...) METALANG99_PRIV_REC_NEXT(12847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12847(choice, ...) METALANG99_PRIV_REC_NEXT(12848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12848(choice, ...) METALANG99_PRIV_REC_NEXT(12849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12849(choice, ...) METALANG99_PRIV_REC_NEXT(12850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12850(choice, ...) METALANG99_PRIV_REC_NEXT(12851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12851(choice, ...) METALANG99_PRIV_REC_NEXT(12852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12852(choice, ...) METALANG99_PRIV_REC_NEXT(12853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12853(choice, ...) METALANG99_PRIV_REC_NEXT(12854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12854(choice, ...) METALANG99_PRIV_REC_NEXT(12855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12855(choice, ...) METALANG99_PRIV_REC_NEXT(12856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12856(choice, ...) METALANG99_PRIV_REC_NEXT(12857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12857(choice, ...) METALANG99_PRIV_REC_NEXT(12858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12858(choice, ...) METALANG99_PRIV_REC_NEXT(12859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12859(choice, ...) METALANG99_PRIV_REC_NEXT(12860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12860(choice, ...) METALANG99_PRIV_REC_NEXT(12861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12861(choice, ...) METALANG99_PRIV_REC_NEXT(12862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12862(choice, ...) METALANG99_PRIV_REC_NEXT(12863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12863(choice, ...) METALANG99_PRIV_REC_NEXT(12864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12864(choice, ...) METALANG99_PRIV_REC_NEXT(12865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12865(choice, ...) METALANG99_PRIV_REC_NEXT(12866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12866(choice, ...) METALANG99_PRIV_REC_NEXT(12867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12867(choice, ...) METALANG99_PRIV_REC_NEXT(12868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12868(choice, ...) METALANG99_PRIV_REC_NEXT(12869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12869(choice, ...) METALANG99_PRIV_REC_NEXT(12870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12870(choice, ...) METALANG99_PRIV_REC_NEXT(12871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12871(choice, ...) METALANG99_PRIV_REC_NEXT(12872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12872(choice, ...) METALANG99_PRIV_REC_NEXT(12873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12873(choice, ...) METALANG99_PRIV_REC_NEXT(12874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12874(choice, ...) METALANG99_PRIV_REC_NEXT(12875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12875(choice, ...) METALANG99_PRIV_REC_NEXT(12876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12876(choice, ...) METALANG99_PRIV_REC_NEXT(12877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12877(choice, ...) METALANG99_PRIV_REC_NEXT(12878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12878(choice, ...) METALANG99_PRIV_REC_NEXT(12879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12879(choice, ...) METALANG99_PRIV_REC_NEXT(12880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12880(choice, ...) METALANG99_PRIV_REC_NEXT(12881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12881(choice, ...) METALANG99_PRIV_REC_NEXT(12882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12882(choice, ...) METALANG99_PRIV_REC_NEXT(12883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12883(choice, ...) METALANG99_PRIV_REC_NEXT(12884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12884(choice, ...) METALANG99_PRIV_REC_NEXT(12885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12885(choice, ...) METALANG99_PRIV_REC_NEXT(12886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12886(choice, ...) METALANG99_PRIV_REC_NEXT(12887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12887(choice, ...) METALANG99_PRIV_REC_NEXT(12888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12888(choice, ...) METALANG99_PRIV_REC_NEXT(12889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12889(choice, ...) METALANG99_PRIV_REC_NEXT(12890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12890(choice, ...) METALANG99_PRIV_REC_NEXT(12891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12891(choice, ...) METALANG99_PRIV_REC_NEXT(12892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12892(choice, ...) METALANG99_PRIV_REC_NEXT(12893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12893(choice, ...) METALANG99_PRIV_REC_NEXT(12894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12894(choice, ...) METALANG99_PRIV_REC_NEXT(12895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12895(choice, ...) METALANG99_PRIV_REC_NEXT(12896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12896(choice, ...) METALANG99_PRIV_REC_NEXT(12897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12897(choice, ...) METALANG99_PRIV_REC_NEXT(12898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12898(choice, ...) METALANG99_PRIV_REC_NEXT(12899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12899(choice, ...) METALANG99_PRIV_REC_NEXT(12900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12900(choice, ...) METALANG99_PRIV_REC_NEXT(12901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12901(choice, ...) METALANG99_PRIV_REC_NEXT(12902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12902(choice, ...) METALANG99_PRIV_REC_NEXT(12903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12903(choice, ...) METALANG99_PRIV_REC_NEXT(12904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12904(choice, ...) METALANG99_PRIV_REC_NEXT(12905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12905(choice, ...) METALANG99_PRIV_REC_NEXT(12906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12906(choice, ...) METALANG99_PRIV_REC_NEXT(12907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12907(choice, ...) METALANG99_PRIV_REC_NEXT(12908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12908(choice, ...) METALANG99_PRIV_REC_NEXT(12909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12909(choice, ...) METALANG99_PRIV_REC_NEXT(12910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12910(choice, ...) METALANG99_PRIV_REC_NEXT(12911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12911(choice, ...) METALANG99_PRIV_REC_NEXT(12912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12912(choice, ...) METALANG99_PRIV_REC_NEXT(12913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12913(choice, ...) METALANG99_PRIV_REC_NEXT(12914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12914(choice, ...) METALANG99_PRIV_REC_NEXT(12915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12915(choice, ...) METALANG99_PRIV_REC_NEXT(12916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12916(choice, ...) METALANG99_PRIV_REC_NEXT(12917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12917(choice, ...) METALANG99_PRIV_REC_NEXT(12918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12918(choice, ...) METALANG99_PRIV_REC_NEXT(12919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12919(choice, ...) METALANG99_PRIV_REC_NEXT(12920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12920(choice, ...) METALANG99_PRIV_REC_NEXT(12921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12921(choice, ...) METALANG99_PRIV_REC_NEXT(12922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12922(choice, ...) METALANG99_PRIV_REC_NEXT(12923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12923(choice, ...) METALANG99_PRIV_REC_NEXT(12924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12924(choice, ...) METALANG99_PRIV_REC_NEXT(12925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12925(choice, ...) METALANG99_PRIV_REC_NEXT(12926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12926(choice, ...) METALANG99_PRIV_REC_NEXT(12927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12927(choice, ...) METALANG99_PRIV_REC_NEXT(12928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12928(choice, ...) METALANG99_PRIV_REC_NEXT(12929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12929(choice, ...) METALANG99_PRIV_REC_NEXT(12930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12930(choice, ...) METALANG99_PRIV_REC_NEXT(12931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12931(choice, ...) METALANG99_PRIV_REC_NEXT(12932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12932(choice, ...) METALANG99_PRIV_REC_NEXT(12933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12933(choice, ...) METALANG99_PRIV_REC_NEXT(12934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12934(choice, ...) METALANG99_PRIV_REC_NEXT(12935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12935(choice, ...) METALANG99_PRIV_REC_NEXT(12936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12936(choice, ...) METALANG99_PRIV_REC_NEXT(12937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12937(choice, ...) METALANG99_PRIV_REC_NEXT(12938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12938(choice, ...) METALANG99_PRIV_REC_NEXT(12939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12939(choice, ...) METALANG99_PRIV_REC_NEXT(12940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12940(choice, ...) METALANG99_PRIV_REC_NEXT(12941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12941(choice, ...) METALANG99_PRIV_REC_NEXT(12942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12942(choice, ...) METALANG99_PRIV_REC_NEXT(12943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12943(choice, ...) METALANG99_PRIV_REC_NEXT(12944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12944(choice, ...) METALANG99_PRIV_REC_NEXT(12945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12945(choice, ...) METALANG99_PRIV_REC_NEXT(12946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12946(choice, ...) METALANG99_PRIV_REC_NEXT(12947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12947(choice, ...) METALANG99_PRIV_REC_NEXT(12948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12948(choice, ...) METALANG99_PRIV_REC_NEXT(12949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12949(choice, ...) METALANG99_PRIV_REC_NEXT(12950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12950(choice, ...) METALANG99_PRIV_REC_NEXT(12951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12951(choice, ...) METALANG99_PRIV_REC_NEXT(12952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12952(choice, ...) METALANG99_PRIV_REC_NEXT(12953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12953(choice, ...) METALANG99_PRIV_REC_NEXT(12954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12954(choice, ...) METALANG99_PRIV_REC_NEXT(12955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12955(choice, ...) METALANG99_PRIV_REC_NEXT(12956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12956(choice, ...) METALANG99_PRIV_REC_NEXT(12957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12957(choice, ...) METALANG99_PRIV_REC_NEXT(12958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12958(choice, ...) METALANG99_PRIV_REC_NEXT(12959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12959(choice, ...) METALANG99_PRIV_REC_NEXT(12960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12960(choice, ...) METALANG99_PRIV_REC_NEXT(12961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12961(choice, ...) METALANG99_PRIV_REC_NEXT(12962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12962(choice, ...) METALANG99_PRIV_REC_NEXT(12963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12963(choice, ...) METALANG99_PRIV_REC_NEXT(12964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12964(choice, ...) METALANG99_PRIV_REC_NEXT(12965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12965(choice, ...) METALANG99_PRIV_REC_NEXT(12966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12966(choice, ...) METALANG99_PRIV_REC_NEXT(12967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12967(choice, ...) METALANG99_PRIV_REC_NEXT(12968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12968(choice, ...) METALANG99_PRIV_REC_NEXT(12969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12969(choice, ...) METALANG99_PRIV_REC_NEXT(12970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12970(choice, ...) METALANG99_PRIV_REC_NEXT(12971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12971(choice, ...) METALANG99_PRIV_REC_NEXT(12972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12972(choice, ...) METALANG99_PRIV_REC_NEXT(12973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12973(choice, ...) METALANG99_PRIV_REC_NEXT(12974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12974(choice, ...) METALANG99_PRIV_REC_NEXT(12975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12975(choice, ...) METALANG99_PRIV_REC_NEXT(12976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12976(choice, ...) METALANG99_PRIV_REC_NEXT(12977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12977(choice, ...) METALANG99_PRIV_REC_NEXT(12978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12978(choice, ...) METALANG99_PRIV_REC_NEXT(12979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12979(choice, ...) METALANG99_PRIV_REC_NEXT(12980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12980(choice, ...) METALANG99_PRIV_REC_NEXT(12981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12981(choice, ...) METALANG99_PRIV_REC_NEXT(12982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12982(choice, ...) METALANG99_PRIV_REC_NEXT(12983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12983(choice, ...) METALANG99_PRIV_REC_NEXT(12984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12984(choice, ...) METALANG99_PRIV_REC_NEXT(12985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12985(choice, ...) METALANG99_PRIV_REC_NEXT(12986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12986(choice, ...) METALANG99_PRIV_REC_NEXT(12987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12987(choice, ...) METALANG99_PRIV_REC_NEXT(12988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12988(choice, ...) METALANG99_PRIV_REC_NEXT(12989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12989(choice, ...) METALANG99_PRIV_REC_NEXT(12990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12990(choice, ...) METALANG99_PRIV_REC_NEXT(12991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12991(choice, ...) METALANG99_PRIV_REC_NEXT(12992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12992(choice, ...) METALANG99_PRIV_REC_NEXT(12993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12993(choice, ...) METALANG99_PRIV_REC_NEXT(12994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12994(choice, ...) METALANG99_PRIV_REC_NEXT(12995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12995(choice, ...) METALANG99_PRIV_REC_NEXT(12996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12996(choice, ...) METALANG99_PRIV_REC_NEXT(12997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12997(choice, ...) METALANG99_PRIV_REC_NEXT(12998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12998(choice, ...) METALANG99_PRIV_REC_NEXT(12999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_12999(choice, ...) METALANG99_PRIV_REC_NEXT(13000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13000(choice, ...) METALANG99_PRIV_REC_NEXT(13001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13001(choice, ...) METALANG99_PRIV_REC_NEXT(13002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13002(choice, ...) METALANG99_PRIV_REC_NEXT(13003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13003(choice, ...) METALANG99_PRIV_REC_NEXT(13004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13004(choice, ...) METALANG99_PRIV_REC_NEXT(13005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13005(choice, ...) METALANG99_PRIV_REC_NEXT(13006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13006(choice, ...) METALANG99_PRIV_REC_NEXT(13007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13007(choice, ...) METALANG99_PRIV_REC_NEXT(13008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13008(choice, ...) METALANG99_PRIV_REC_NEXT(13009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13009(choice, ...) METALANG99_PRIV_REC_NEXT(13010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13010(choice, ...) METALANG99_PRIV_REC_NEXT(13011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13011(choice, ...) METALANG99_PRIV_REC_NEXT(13012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13012(choice, ...) METALANG99_PRIV_REC_NEXT(13013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13013(choice, ...) METALANG99_PRIV_REC_NEXT(13014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13014(choice, ...) METALANG99_PRIV_REC_NEXT(13015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13015(choice, ...) METALANG99_PRIV_REC_NEXT(13016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13016(choice, ...) METALANG99_PRIV_REC_NEXT(13017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13017(choice, ...) METALANG99_PRIV_REC_NEXT(13018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13018(choice, ...) METALANG99_PRIV_REC_NEXT(13019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13019(choice, ...) METALANG99_PRIV_REC_NEXT(13020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13020(choice, ...) METALANG99_PRIV_REC_NEXT(13021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13021(choice, ...) METALANG99_PRIV_REC_NEXT(13022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13022(choice, ...) METALANG99_PRIV_REC_NEXT(13023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13023(choice, ...) METALANG99_PRIV_REC_NEXT(13024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13024(choice, ...) METALANG99_PRIV_REC_NEXT(13025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13025(choice, ...) METALANG99_PRIV_REC_NEXT(13026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13026(choice, ...) METALANG99_PRIV_REC_NEXT(13027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13027(choice, ...) METALANG99_PRIV_REC_NEXT(13028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13028(choice, ...) METALANG99_PRIV_REC_NEXT(13029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13029(choice, ...) METALANG99_PRIV_REC_NEXT(13030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13030(choice, ...) METALANG99_PRIV_REC_NEXT(13031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13031(choice, ...) METALANG99_PRIV_REC_NEXT(13032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13032(choice, ...) METALANG99_PRIV_REC_NEXT(13033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13033(choice, ...) METALANG99_PRIV_REC_NEXT(13034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13034(choice, ...) METALANG99_PRIV_REC_NEXT(13035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13035(choice, ...) METALANG99_PRIV_REC_NEXT(13036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13036(choice, ...) METALANG99_PRIV_REC_NEXT(13037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13037(choice, ...) METALANG99_PRIV_REC_NEXT(13038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13038(choice, ...) METALANG99_PRIV_REC_NEXT(13039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13039(choice, ...) METALANG99_PRIV_REC_NEXT(13040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13040(choice, ...) METALANG99_PRIV_REC_NEXT(13041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13041(choice, ...) METALANG99_PRIV_REC_NEXT(13042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13042(choice, ...) METALANG99_PRIV_REC_NEXT(13043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13043(choice, ...) METALANG99_PRIV_REC_NEXT(13044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13044(choice, ...) METALANG99_PRIV_REC_NEXT(13045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13045(choice, ...) METALANG99_PRIV_REC_NEXT(13046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13046(choice, ...) METALANG99_PRIV_REC_NEXT(13047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13047(choice, ...) METALANG99_PRIV_REC_NEXT(13048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13048(choice, ...) METALANG99_PRIV_REC_NEXT(13049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13049(choice, ...) METALANG99_PRIV_REC_NEXT(13050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13050(choice, ...) METALANG99_PRIV_REC_NEXT(13051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13051(choice, ...) METALANG99_PRIV_REC_NEXT(13052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13052(choice, ...) METALANG99_PRIV_REC_NEXT(13053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13053(choice, ...) METALANG99_PRIV_REC_NEXT(13054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13054(choice, ...) METALANG99_PRIV_REC_NEXT(13055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13055(choice, ...) METALANG99_PRIV_REC_NEXT(13056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13056(choice, ...) METALANG99_PRIV_REC_NEXT(13057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13057(choice, ...) METALANG99_PRIV_REC_NEXT(13058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13058(choice, ...) METALANG99_PRIV_REC_NEXT(13059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13059(choice, ...) METALANG99_PRIV_REC_NEXT(13060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13060(choice, ...) METALANG99_PRIV_REC_NEXT(13061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13061(choice, ...) METALANG99_PRIV_REC_NEXT(13062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13062(choice, ...) METALANG99_PRIV_REC_NEXT(13063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13063(choice, ...) METALANG99_PRIV_REC_NEXT(13064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13064(choice, ...) METALANG99_PRIV_REC_NEXT(13065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13065(choice, ...) METALANG99_PRIV_REC_NEXT(13066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13066(choice, ...) METALANG99_PRIV_REC_NEXT(13067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13067(choice, ...) METALANG99_PRIV_REC_NEXT(13068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13068(choice, ...) METALANG99_PRIV_REC_NEXT(13069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13069(choice, ...) METALANG99_PRIV_REC_NEXT(13070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13070(choice, ...) METALANG99_PRIV_REC_NEXT(13071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13071(choice, ...) METALANG99_PRIV_REC_NEXT(13072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13072(choice, ...) METALANG99_PRIV_REC_NEXT(13073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13073(choice, ...) METALANG99_PRIV_REC_NEXT(13074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13074(choice, ...) METALANG99_PRIV_REC_NEXT(13075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13075(choice, ...) METALANG99_PRIV_REC_NEXT(13076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13076(choice, ...) METALANG99_PRIV_REC_NEXT(13077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13077(choice, ...) METALANG99_PRIV_REC_NEXT(13078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13078(choice, ...) METALANG99_PRIV_REC_NEXT(13079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13079(choice, ...) METALANG99_PRIV_REC_NEXT(13080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13080(choice, ...) METALANG99_PRIV_REC_NEXT(13081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13081(choice, ...) METALANG99_PRIV_REC_NEXT(13082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13082(choice, ...) METALANG99_PRIV_REC_NEXT(13083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13083(choice, ...) METALANG99_PRIV_REC_NEXT(13084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13084(choice, ...) METALANG99_PRIV_REC_NEXT(13085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13085(choice, ...) METALANG99_PRIV_REC_NEXT(13086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13086(choice, ...) METALANG99_PRIV_REC_NEXT(13087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13087(choice, ...) METALANG99_PRIV_REC_NEXT(13088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13088(choice, ...) METALANG99_PRIV_REC_NEXT(13089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13089(choice, ...) METALANG99_PRIV_REC_NEXT(13090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13090(choice, ...) METALANG99_PRIV_REC_NEXT(13091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13091(choice, ...) METALANG99_PRIV_REC_NEXT(13092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13092(choice, ...) METALANG99_PRIV_REC_NEXT(13093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13093(choice, ...) METALANG99_PRIV_REC_NEXT(13094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13094(choice, ...) METALANG99_PRIV_REC_NEXT(13095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13095(choice, ...) METALANG99_PRIV_REC_NEXT(13096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13096(choice, ...) METALANG99_PRIV_REC_NEXT(13097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13097(choice, ...) METALANG99_PRIV_REC_NEXT(13098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13098(choice, ...) METALANG99_PRIV_REC_NEXT(13099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13099(choice, ...) METALANG99_PRIV_REC_NEXT(13100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13100(choice, ...) METALANG99_PRIV_REC_NEXT(13101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13101(choice, ...) METALANG99_PRIV_REC_NEXT(13102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13102(choice, ...) METALANG99_PRIV_REC_NEXT(13103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13103(choice, ...) METALANG99_PRIV_REC_NEXT(13104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13104(choice, ...) METALANG99_PRIV_REC_NEXT(13105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13105(choice, ...) METALANG99_PRIV_REC_NEXT(13106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13106(choice, ...) METALANG99_PRIV_REC_NEXT(13107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13107(choice, ...) METALANG99_PRIV_REC_NEXT(13108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13108(choice, ...) METALANG99_PRIV_REC_NEXT(13109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13109(choice, ...) METALANG99_PRIV_REC_NEXT(13110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13110(choice, ...) METALANG99_PRIV_REC_NEXT(13111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13111(choice, ...) METALANG99_PRIV_REC_NEXT(13112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13112(choice, ...) METALANG99_PRIV_REC_NEXT(13113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13113(choice, ...) METALANG99_PRIV_REC_NEXT(13114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13114(choice, ...) METALANG99_PRIV_REC_NEXT(13115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13115(choice, ...) METALANG99_PRIV_REC_NEXT(13116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13116(choice, ...) METALANG99_PRIV_REC_NEXT(13117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13117(choice, ...) METALANG99_PRIV_REC_NEXT(13118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13118(choice, ...) METALANG99_PRIV_REC_NEXT(13119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13119(choice, ...) METALANG99_PRIV_REC_NEXT(13120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13120(choice, ...) METALANG99_PRIV_REC_NEXT(13121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13121(choice, ...) METALANG99_PRIV_REC_NEXT(13122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13122(choice, ...) METALANG99_PRIV_REC_NEXT(13123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13123(choice, ...) METALANG99_PRIV_REC_NEXT(13124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13124(choice, ...) METALANG99_PRIV_REC_NEXT(13125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13125(choice, ...) METALANG99_PRIV_REC_NEXT(13126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13126(choice, ...) METALANG99_PRIV_REC_NEXT(13127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13127(choice, ...) METALANG99_PRIV_REC_NEXT(13128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13128(choice, ...) METALANG99_PRIV_REC_NEXT(13129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13129(choice, ...) METALANG99_PRIV_REC_NEXT(13130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13130(choice, ...) METALANG99_PRIV_REC_NEXT(13131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13131(choice, ...) METALANG99_PRIV_REC_NEXT(13132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13132(choice, ...) METALANG99_PRIV_REC_NEXT(13133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13133(choice, ...) METALANG99_PRIV_REC_NEXT(13134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13134(choice, ...) METALANG99_PRIV_REC_NEXT(13135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13135(choice, ...) METALANG99_PRIV_REC_NEXT(13136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13136(choice, ...) METALANG99_PRIV_REC_NEXT(13137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13137(choice, ...) METALANG99_PRIV_REC_NEXT(13138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13138(choice, ...) METALANG99_PRIV_REC_NEXT(13139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13139(choice, ...) METALANG99_PRIV_REC_NEXT(13140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13140(choice, ...) METALANG99_PRIV_REC_NEXT(13141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13141(choice, ...) METALANG99_PRIV_REC_NEXT(13142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13142(choice, ...) METALANG99_PRIV_REC_NEXT(13143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13143(choice, ...) METALANG99_PRIV_REC_NEXT(13144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13144(choice, ...) METALANG99_PRIV_REC_NEXT(13145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13145(choice, ...) METALANG99_PRIV_REC_NEXT(13146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13146(choice, ...) METALANG99_PRIV_REC_NEXT(13147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13147(choice, ...) METALANG99_PRIV_REC_NEXT(13148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13148(choice, ...) METALANG99_PRIV_REC_NEXT(13149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13149(choice, ...) METALANG99_PRIV_REC_NEXT(13150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13150(choice, ...) METALANG99_PRIV_REC_NEXT(13151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13151(choice, ...) METALANG99_PRIV_REC_NEXT(13152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13152(choice, ...) METALANG99_PRIV_REC_NEXT(13153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13153(choice, ...) METALANG99_PRIV_REC_NEXT(13154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13154(choice, ...) METALANG99_PRIV_REC_NEXT(13155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13155(choice, ...) METALANG99_PRIV_REC_NEXT(13156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13156(choice, ...) METALANG99_PRIV_REC_NEXT(13157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13157(choice, ...) METALANG99_PRIV_REC_NEXT(13158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13158(choice, ...) METALANG99_PRIV_REC_NEXT(13159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13159(choice, ...) METALANG99_PRIV_REC_NEXT(13160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13160(choice, ...) METALANG99_PRIV_REC_NEXT(13161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13161(choice, ...) METALANG99_PRIV_REC_NEXT(13162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13162(choice, ...) METALANG99_PRIV_REC_NEXT(13163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13163(choice, ...) METALANG99_PRIV_REC_NEXT(13164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13164(choice, ...) METALANG99_PRIV_REC_NEXT(13165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13165(choice, ...) METALANG99_PRIV_REC_NEXT(13166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13166(choice, ...) METALANG99_PRIV_REC_NEXT(13167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13167(choice, ...) METALANG99_PRIV_REC_NEXT(13168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13168(choice, ...) METALANG99_PRIV_REC_NEXT(13169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13169(choice, ...) METALANG99_PRIV_REC_NEXT(13170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13170(choice, ...) METALANG99_PRIV_REC_NEXT(13171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13171(choice, ...) METALANG99_PRIV_REC_NEXT(13172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13172(choice, ...) METALANG99_PRIV_REC_NEXT(13173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13173(choice, ...) METALANG99_PRIV_REC_NEXT(13174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13174(choice, ...) METALANG99_PRIV_REC_NEXT(13175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13175(choice, ...) METALANG99_PRIV_REC_NEXT(13176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13176(choice, ...) METALANG99_PRIV_REC_NEXT(13177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13177(choice, ...) METALANG99_PRIV_REC_NEXT(13178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13178(choice, ...) METALANG99_PRIV_REC_NEXT(13179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13179(choice, ...) METALANG99_PRIV_REC_NEXT(13180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13180(choice, ...) METALANG99_PRIV_REC_NEXT(13181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13181(choice, ...) METALANG99_PRIV_REC_NEXT(13182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13182(choice, ...) METALANG99_PRIV_REC_NEXT(13183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13183(choice, ...) METALANG99_PRIV_REC_NEXT(13184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13184(choice, ...) METALANG99_PRIV_REC_NEXT(13185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13185(choice, ...) METALANG99_PRIV_REC_NEXT(13186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13186(choice, ...) METALANG99_PRIV_REC_NEXT(13187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13187(choice, ...) METALANG99_PRIV_REC_NEXT(13188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13188(choice, ...) METALANG99_PRIV_REC_NEXT(13189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13189(choice, ...) METALANG99_PRIV_REC_NEXT(13190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13190(choice, ...) METALANG99_PRIV_REC_NEXT(13191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13191(choice, ...) METALANG99_PRIV_REC_NEXT(13192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13192(choice, ...) METALANG99_PRIV_REC_NEXT(13193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13193(choice, ...) METALANG99_PRIV_REC_NEXT(13194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13194(choice, ...) METALANG99_PRIV_REC_NEXT(13195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13195(choice, ...) METALANG99_PRIV_REC_NEXT(13196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13196(choice, ...) METALANG99_PRIV_REC_NEXT(13197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13197(choice, ...) METALANG99_PRIV_REC_NEXT(13198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13198(choice, ...) METALANG99_PRIV_REC_NEXT(13199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13199(choice, ...) METALANG99_PRIV_REC_NEXT(13200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13200(choice, ...) METALANG99_PRIV_REC_NEXT(13201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13201(choice, ...) METALANG99_PRIV_REC_NEXT(13202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13202(choice, ...) METALANG99_PRIV_REC_NEXT(13203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13203(choice, ...) METALANG99_PRIV_REC_NEXT(13204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13204(choice, ...) METALANG99_PRIV_REC_NEXT(13205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13205(choice, ...) METALANG99_PRIV_REC_NEXT(13206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13206(choice, ...) METALANG99_PRIV_REC_NEXT(13207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13207(choice, ...) METALANG99_PRIV_REC_NEXT(13208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13208(choice, ...) METALANG99_PRIV_REC_NEXT(13209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13209(choice, ...) METALANG99_PRIV_REC_NEXT(13210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13210(choice, ...) METALANG99_PRIV_REC_NEXT(13211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13211(choice, ...) METALANG99_PRIV_REC_NEXT(13212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13212(choice, ...) METALANG99_PRIV_REC_NEXT(13213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13213(choice, ...) METALANG99_PRIV_REC_NEXT(13214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13214(choice, ...) METALANG99_PRIV_REC_NEXT(13215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13215(choice, ...) METALANG99_PRIV_REC_NEXT(13216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13216(choice, ...) METALANG99_PRIV_REC_NEXT(13217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13217(choice, ...) METALANG99_PRIV_REC_NEXT(13218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13218(choice, ...) METALANG99_PRIV_REC_NEXT(13219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13219(choice, ...) METALANG99_PRIV_REC_NEXT(13220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13220(choice, ...) METALANG99_PRIV_REC_NEXT(13221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13221(choice, ...) METALANG99_PRIV_REC_NEXT(13222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13222(choice, ...) METALANG99_PRIV_REC_NEXT(13223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13223(choice, ...) METALANG99_PRIV_REC_NEXT(13224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13224(choice, ...) METALANG99_PRIV_REC_NEXT(13225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13225(choice, ...) METALANG99_PRIV_REC_NEXT(13226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13226(choice, ...) METALANG99_PRIV_REC_NEXT(13227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13227(choice, ...) METALANG99_PRIV_REC_NEXT(13228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13228(choice, ...) METALANG99_PRIV_REC_NEXT(13229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13229(choice, ...) METALANG99_PRIV_REC_NEXT(13230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13230(choice, ...) METALANG99_PRIV_REC_NEXT(13231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13231(choice, ...) METALANG99_PRIV_REC_NEXT(13232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13232(choice, ...) METALANG99_PRIV_REC_NEXT(13233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13233(choice, ...) METALANG99_PRIV_REC_NEXT(13234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13234(choice, ...) METALANG99_PRIV_REC_NEXT(13235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13235(choice, ...) METALANG99_PRIV_REC_NEXT(13236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13236(choice, ...) METALANG99_PRIV_REC_NEXT(13237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13237(choice, ...) METALANG99_PRIV_REC_NEXT(13238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13238(choice, ...) METALANG99_PRIV_REC_NEXT(13239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13239(choice, ...) METALANG99_PRIV_REC_NEXT(13240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13240(choice, ...) METALANG99_PRIV_REC_NEXT(13241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13241(choice, ...) METALANG99_PRIV_REC_NEXT(13242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13242(choice, ...) METALANG99_PRIV_REC_NEXT(13243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13243(choice, ...) METALANG99_PRIV_REC_NEXT(13244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13244(choice, ...) METALANG99_PRIV_REC_NEXT(13245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13245(choice, ...) METALANG99_PRIV_REC_NEXT(13246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13246(choice, ...) METALANG99_PRIV_REC_NEXT(13247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13247(choice, ...) METALANG99_PRIV_REC_NEXT(13248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13248(choice, ...) METALANG99_PRIV_REC_NEXT(13249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13249(choice, ...) METALANG99_PRIV_REC_NEXT(13250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13250(choice, ...) METALANG99_PRIV_REC_NEXT(13251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13251(choice, ...) METALANG99_PRIV_REC_NEXT(13252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13252(choice, ...) METALANG99_PRIV_REC_NEXT(13253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13253(choice, ...) METALANG99_PRIV_REC_NEXT(13254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13254(choice, ...) METALANG99_PRIV_REC_NEXT(13255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13255(choice, ...) METALANG99_PRIV_REC_NEXT(13256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13256(choice, ...) METALANG99_PRIV_REC_NEXT(13257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13257(choice, ...) METALANG99_PRIV_REC_NEXT(13258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13258(choice, ...) METALANG99_PRIV_REC_NEXT(13259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13259(choice, ...) METALANG99_PRIV_REC_NEXT(13260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13260(choice, ...) METALANG99_PRIV_REC_NEXT(13261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13261(choice, ...) METALANG99_PRIV_REC_NEXT(13262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13262(choice, ...) METALANG99_PRIV_REC_NEXT(13263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13263(choice, ...) METALANG99_PRIV_REC_NEXT(13264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13264(choice, ...) METALANG99_PRIV_REC_NEXT(13265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13265(choice, ...) METALANG99_PRIV_REC_NEXT(13266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13266(choice, ...) METALANG99_PRIV_REC_NEXT(13267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13267(choice, ...) METALANG99_PRIV_REC_NEXT(13268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13268(choice, ...) METALANG99_PRIV_REC_NEXT(13269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13269(choice, ...) METALANG99_PRIV_REC_NEXT(13270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13270(choice, ...) METALANG99_PRIV_REC_NEXT(13271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13271(choice, ...) METALANG99_PRIV_REC_NEXT(13272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13272(choice, ...) METALANG99_PRIV_REC_NEXT(13273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13273(choice, ...) METALANG99_PRIV_REC_NEXT(13274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13274(choice, ...) METALANG99_PRIV_REC_NEXT(13275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13275(choice, ...) METALANG99_PRIV_REC_NEXT(13276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13276(choice, ...) METALANG99_PRIV_REC_NEXT(13277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13277(choice, ...) METALANG99_PRIV_REC_NEXT(13278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13278(choice, ...) METALANG99_PRIV_REC_NEXT(13279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13279(choice, ...) METALANG99_PRIV_REC_NEXT(13280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13280(choice, ...) METALANG99_PRIV_REC_NEXT(13281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13281(choice, ...) METALANG99_PRIV_REC_NEXT(13282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13282(choice, ...) METALANG99_PRIV_REC_NEXT(13283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13283(choice, ...) METALANG99_PRIV_REC_NEXT(13284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13284(choice, ...) METALANG99_PRIV_REC_NEXT(13285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13285(choice, ...) METALANG99_PRIV_REC_NEXT(13286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13286(choice, ...) METALANG99_PRIV_REC_NEXT(13287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13287(choice, ...) METALANG99_PRIV_REC_NEXT(13288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13288(choice, ...) METALANG99_PRIV_REC_NEXT(13289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13289(choice, ...) METALANG99_PRIV_REC_NEXT(13290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13290(choice, ...) METALANG99_PRIV_REC_NEXT(13291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13291(choice, ...) METALANG99_PRIV_REC_NEXT(13292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13292(choice, ...) METALANG99_PRIV_REC_NEXT(13293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13293(choice, ...) METALANG99_PRIV_REC_NEXT(13294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13294(choice, ...) METALANG99_PRIV_REC_NEXT(13295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13295(choice, ...) METALANG99_PRIV_REC_NEXT(13296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13296(choice, ...) METALANG99_PRIV_REC_NEXT(13297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13297(choice, ...) METALANG99_PRIV_REC_NEXT(13298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13298(choice, ...) METALANG99_PRIV_REC_NEXT(13299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13299(choice, ...) METALANG99_PRIV_REC_NEXT(13300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13300(choice, ...) METALANG99_PRIV_REC_NEXT(13301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13301(choice, ...) METALANG99_PRIV_REC_NEXT(13302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13302(choice, ...) METALANG99_PRIV_REC_NEXT(13303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13303(choice, ...) METALANG99_PRIV_REC_NEXT(13304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13304(choice, ...) METALANG99_PRIV_REC_NEXT(13305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13305(choice, ...) METALANG99_PRIV_REC_NEXT(13306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13306(choice, ...) METALANG99_PRIV_REC_NEXT(13307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13307(choice, ...) METALANG99_PRIV_REC_NEXT(13308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13308(choice, ...) METALANG99_PRIV_REC_NEXT(13309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13309(choice, ...) METALANG99_PRIV_REC_NEXT(13310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13310(choice, ...) METALANG99_PRIV_REC_NEXT(13311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13311(choice, ...) METALANG99_PRIV_REC_NEXT(13312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13312(choice, ...) METALANG99_PRIV_REC_NEXT(13313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13313(choice, ...) METALANG99_PRIV_REC_NEXT(13314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13314(choice, ...) METALANG99_PRIV_REC_NEXT(13315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13315(choice, ...) METALANG99_PRIV_REC_NEXT(13316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13316(choice, ...) METALANG99_PRIV_REC_NEXT(13317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13317(choice, ...) METALANG99_PRIV_REC_NEXT(13318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13318(choice, ...) METALANG99_PRIV_REC_NEXT(13319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13319(choice, ...) METALANG99_PRIV_REC_NEXT(13320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13320(choice, ...) METALANG99_PRIV_REC_NEXT(13321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13321(choice, ...) METALANG99_PRIV_REC_NEXT(13322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13322(choice, ...) METALANG99_PRIV_REC_NEXT(13323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13323(choice, ...) METALANG99_PRIV_REC_NEXT(13324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13324(choice, ...) METALANG99_PRIV_REC_NEXT(13325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13325(choice, ...) METALANG99_PRIV_REC_NEXT(13326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13326(choice, ...) METALANG99_PRIV_REC_NEXT(13327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13327(choice, ...) METALANG99_PRIV_REC_NEXT(13328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13328(choice, ...) METALANG99_PRIV_REC_NEXT(13329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13329(choice, ...) METALANG99_PRIV_REC_NEXT(13330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13330(choice, ...) METALANG99_PRIV_REC_NEXT(13331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13331(choice, ...) METALANG99_PRIV_REC_NEXT(13332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13332(choice, ...) METALANG99_PRIV_REC_NEXT(13333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13333(choice, ...) METALANG99_PRIV_REC_NEXT(13334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13334(choice, ...) METALANG99_PRIV_REC_NEXT(13335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13335(choice, ...) METALANG99_PRIV_REC_NEXT(13336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13336(choice, ...) METALANG99_PRIV_REC_NEXT(13337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13337(choice, ...) METALANG99_PRIV_REC_NEXT(13338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13338(choice, ...) METALANG99_PRIV_REC_NEXT(13339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13339(choice, ...) METALANG99_PRIV_REC_NEXT(13340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13340(choice, ...) METALANG99_PRIV_REC_NEXT(13341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13341(choice, ...) METALANG99_PRIV_REC_NEXT(13342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13342(choice, ...) METALANG99_PRIV_REC_NEXT(13343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13343(choice, ...) METALANG99_PRIV_REC_NEXT(13344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13344(choice, ...) METALANG99_PRIV_REC_NEXT(13345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13345(choice, ...) METALANG99_PRIV_REC_NEXT(13346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13346(choice, ...) METALANG99_PRIV_REC_NEXT(13347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13347(choice, ...) METALANG99_PRIV_REC_NEXT(13348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13348(choice, ...) METALANG99_PRIV_REC_NEXT(13349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13349(choice, ...) METALANG99_PRIV_REC_NEXT(13350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13350(choice, ...) METALANG99_PRIV_REC_NEXT(13351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13351(choice, ...) METALANG99_PRIV_REC_NEXT(13352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13352(choice, ...) METALANG99_PRIV_REC_NEXT(13353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13353(choice, ...) METALANG99_PRIV_REC_NEXT(13354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13354(choice, ...) METALANG99_PRIV_REC_NEXT(13355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13355(choice, ...) METALANG99_PRIV_REC_NEXT(13356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13356(choice, ...) METALANG99_PRIV_REC_NEXT(13357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13357(choice, ...) METALANG99_PRIV_REC_NEXT(13358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13358(choice, ...) METALANG99_PRIV_REC_NEXT(13359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13359(choice, ...) METALANG99_PRIV_REC_NEXT(13360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13360(choice, ...) METALANG99_PRIV_REC_NEXT(13361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13361(choice, ...) METALANG99_PRIV_REC_NEXT(13362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13362(choice, ...) METALANG99_PRIV_REC_NEXT(13363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13363(choice, ...) METALANG99_PRIV_REC_NEXT(13364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13364(choice, ...) METALANG99_PRIV_REC_NEXT(13365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13365(choice, ...) METALANG99_PRIV_REC_NEXT(13366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13366(choice, ...) METALANG99_PRIV_REC_NEXT(13367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13367(choice, ...) METALANG99_PRIV_REC_NEXT(13368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13368(choice, ...) METALANG99_PRIV_REC_NEXT(13369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13369(choice, ...) METALANG99_PRIV_REC_NEXT(13370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13370(choice, ...) METALANG99_PRIV_REC_NEXT(13371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13371(choice, ...) METALANG99_PRIV_REC_NEXT(13372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13372(choice, ...) METALANG99_PRIV_REC_NEXT(13373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13373(choice, ...) METALANG99_PRIV_REC_NEXT(13374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13374(choice, ...) METALANG99_PRIV_REC_NEXT(13375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13375(choice, ...) METALANG99_PRIV_REC_NEXT(13376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13376(choice, ...) METALANG99_PRIV_REC_NEXT(13377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13377(choice, ...) METALANG99_PRIV_REC_NEXT(13378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13378(choice, ...) METALANG99_PRIV_REC_NEXT(13379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13379(choice, ...) METALANG99_PRIV_REC_NEXT(13380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13380(choice, ...) METALANG99_PRIV_REC_NEXT(13381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13381(choice, ...) METALANG99_PRIV_REC_NEXT(13382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13382(choice, ...) METALANG99_PRIV_REC_NEXT(13383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13383(choice, ...) METALANG99_PRIV_REC_NEXT(13384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13384(choice, ...) METALANG99_PRIV_REC_NEXT(13385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13385(choice, ...) METALANG99_PRIV_REC_NEXT(13386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13386(choice, ...) METALANG99_PRIV_REC_NEXT(13387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13387(choice, ...) METALANG99_PRIV_REC_NEXT(13388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13388(choice, ...) METALANG99_PRIV_REC_NEXT(13389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13389(choice, ...) METALANG99_PRIV_REC_NEXT(13390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13390(choice, ...) METALANG99_PRIV_REC_NEXT(13391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13391(choice, ...) METALANG99_PRIV_REC_NEXT(13392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13392(choice, ...) METALANG99_PRIV_REC_NEXT(13393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13393(choice, ...) METALANG99_PRIV_REC_NEXT(13394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13394(choice, ...) METALANG99_PRIV_REC_NEXT(13395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13395(choice, ...) METALANG99_PRIV_REC_NEXT(13396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13396(choice, ...) METALANG99_PRIV_REC_NEXT(13397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13397(choice, ...) METALANG99_PRIV_REC_NEXT(13398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13398(choice, ...) METALANG99_PRIV_REC_NEXT(13399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13399(choice, ...) METALANG99_PRIV_REC_NEXT(13400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13400(choice, ...) METALANG99_PRIV_REC_NEXT(13401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13401(choice, ...) METALANG99_PRIV_REC_NEXT(13402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13402(choice, ...) METALANG99_PRIV_REC_NEXT(13403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13403(choice, ...) METALANG99_PRIV_REC_NEXT(13404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13404(choice, ...) METALANG99_PRIV_REC_NEXT(13405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13405(choice, ...) METALANG99_PRIV_REC_NEXT(13406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13406(choice, ...) METALANG99_PRIV_REC_NEXT(13407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13407(choice, ...) METALANG99_PRIV_REC_NEXT(13408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13408(choice, ...) METALANG99_PRIV_REC_NEXT(13409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13409(choice, ...) METALANG99_PRIV_REC_NEXT(13410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13410(choice, ...) METALANG99_PRIV_REC_NEXT(13411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13411(choice, ...) METALANG99_PRIV_REC_NEXT(13412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13412(choice, ...) METALANG99_PRIV_REC_NEXT(13413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13413(choice, ...) METALANG99_PRIV_REC_NEXT(13414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13414(choice, ...) METALANG99_PRIV_REC_NEXT(13415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13415(choice, ...) METALANG99_PRIV_REC_NEXT(13416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13416(choice, ...) METALANG99_PRIV_REC_NEXT(13417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13417(choice, ...) METALANG99_PRIV_REC_NEXT(13418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13418(choice, ...) METALANG99_PRIV_REC_NEXT(13419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13419(choice, ...) METALANG99_PRIV_REC_NEXT(13420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13420(choice, ...) METALANG99_PRIV_REC_NEXT(13421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13421(choice, ...) METALANG99_PRIV_REC_NEXT(13422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13422(choice, ...) METALANG99_PRIV_REC_NEXT(13423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13423(choice, ...) METALANG99_PRIV_REC_NEXT(13424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13424(choice, ...) METALANG99_PRIV_REC_NEXT(13425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13425(choice, ...) METALANG99_PRIV_REC_NEXT(13426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13426(choice, ...) METALANG99_PRIV_REC_NEXT(13427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13427(choice, ...) METALANG99_PRIV_REC_NEXT(13428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13428(choice, ...) METALANG99_PRIV_REC_NEXT(13429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13429(choice, ...) METALANG99_PRIV_REC_NEXT(13430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13430(choice, ...) METALANG99_PRIV_REC_NEXT(13431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13431(choice, ...) METALANG99_PRIV_REC_NEXT(13432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13432(choice, ...) METALANG99_PRIV_REC_NEXT(13433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13433(choice, ...) METALANG99_PRIV_REC_NEXT(13434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13434(choice, ...) METALANG99_PRIV_REC_NEXT(13435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13435(choice, ...) METALANG99_PRIV_REC_NEXT(13436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13436(choice, ...) METALANG99_PRIV_REC_NEXT(13437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13437(choice, ...) METALANG99_PRIV_REC_NEXT(13438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13438(choice, ...) METALANG99_PRIV_REC_NEXT(13439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13439(choice, ...) METALANG99_PRIV_REC_NEXT(13440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13440(choice, ...) METALANG99_PRIV_REC_NEXT(13441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13441(choice, ...) METALANG99_PRIV_REC_NEXT(13442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13442(choice, ...) METALANG99_PRIV_REC_NEXT(13443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13443(choice, ...) METALANG99_PRIV_REC_NEXT(13444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13444(choice, ...) METALANG99_PRIV_REC_NEXT(13445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13445(choice, ...) METALANG99_PRIV_REC_NEXT(13446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13446(choice, ...) METALANG99_PRIV_REC_NEXT(13447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13447(choice, ...) METALANG99_PRIV_REC_NEXT(13448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13448(choice, ...) METALANG99_PRIV_REC_NEXT(13449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13449(choice, ...) METALANG99_PRIV_REC_NEXT(13450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13450(choice, ...) METALANG99_PRIV_REC_NEXT(13451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13451(choice, ...) METALANG99_PRIV_REC_NEXT(13452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13452(choice, ...) METALANG99_PRIV_REC_NEXT(13453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13453(choice, ...) METALANG99_PRIV_REC_NEXT(13454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13454(choice, ...) METALANG99_PRIV_REC_NEXT(13455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13455(choice, ...) METALANG99_PRIV_REC_NEXT(13456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13456(choice, ...) METALANG99_PRIV_REC_NEXT(13457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13457(choice, ...) METALANG99_PRIV_REC_NEXT(13458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13458(choice, ...) METALANG99_PRIV_REC_NEXT(13459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13459(choice, ...) METALANG99_PRIV_REC_NEXT(13460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13460(choice, ...) METALANG99_PRIV_REC_NEXT(13461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13461(choice, ...) METALANG99_PRIV_REC_NEXT(13462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13462(choice, ...) METALANG99_PRIV_REC_NEXT(13463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13463(choice, ...) METALANG99_PRIV_REC_NEXT(13464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13464(choice, ...) METALANG99_PRIV_REC_NEXT(13465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13465(choice, ...) METALANG99_PRIV_REC_NEXT(13466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13466(choice, ...) METALANG99_PRIV_REC_NEXT(13467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13467(choice, ...) METALANG99_PRIV_REC_NEXT(13468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13468(choice, ...) METALANG99_PRIV_REC_NEXT(13469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13469(choice, ...) METALANG99_PRIV_REC_NEXT(13470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13470(choice, ...) METALANG99_PRIV_REC_NEXT(13471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13471(choice, ...) METALANG99_PRIV_REC_NEXT(13472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13472(choice, ...) METALANG99_PRIV_REC_NEXT(13473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13473(choice, ...) METALANG99_PRIV_REC_NEXT(13474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13474(choice, ...) METALANG99_PRIV_REC_NEXT(13475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13475(choice, ...) METALANG99_PRIV_REC_NEXT(13476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13476(choice, ...) METALANG99_PRIV_REC_NEXT(13477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13477(choice, ...) METALANG99_PRIV_REC_NEXT(13478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13478(choice, ...) METALANG99_PRIV_REC_NEXT(13479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13479(choice, ...) METALANG99_PRIV_REC_NEXT(13480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13480(choice, ...) METALANG99_PRIV_REC_NEXT(13481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13481(choice, ...) METALANG99_PRIV_REC_NEXT(13482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13482(choice, ...) METALANG99_PRIV_REC_NEXT(13483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13483(choice, ...) METALANG99_PRIV_REC_NEXT(13484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13484(choice, ...) METALANG99_PRIV_REC_NEXT(13485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13485(choice, ...) METALANG99_PRIV_REC_NEXT(13486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13486(choice, ...) METALANG99_PRIV_REC_NEXT(13487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13487(choice, ...) METALANG99_PRIV_REC_NEXT(13488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13488(choice, ...) METALANG99_PRIV_REC_NEXT(13489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13489(choice, ...) METALANG99_PRIV_REC_NEXT(13490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13490(choice, ...) METALANG99_PRIV_REC_NEXT(13491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13491(choice, ...) METALANG99_PRIV_REC_NEXT(13492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13492(choice, ...) METALANG99_PRIV_REC_NEXT(13493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13493(choice, ...) METALANG99_PRIV_REC_NEXT(13494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13494(choice, ...) METALANG99_PRIV_REC_NEXT(13495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13495(choice, ...) METALANG99_PRIV_REC_NEXT(13496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13496(choice, ...) METALANG99_PRIV_REC_NEXT(13497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13497(choice, ...) METALANG99_PRIV_REC_NEXT(13498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13498(choice, ...) METALANG99_PRIV_REC_NEXT(13499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13499(choice, ...) METALANG99_PRIV_REC_NEXT(13500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13500(choice, ...) METALANG99_PRIV_REC_NEXT(13501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13501(choice, ...) METALANG99_PRIV_REC_NEXT(13502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13502(choice, ...) METALANG99_PRIV_REC_NEXT(13503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13503(choice, ...) METALANG99_PRIV_REC_NEXT(13504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13504(choice, ...) METALANG99_PRIV_REC_NEXT(13505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13505(choice, ...) METALANG99_PRIV_REC_NEXT(13506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13506(choice, ...) METALANG99_PRIV_REC_NEXT(13507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13507(choice, ...) METALANG99_PRIV_REC_NEXT(13508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13508(choice, ...) METALANG99_PRIV_REC_NEXT(13509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13509(choice, ...) METALANG99_PRIV_REC_NEXT(13510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13510(choice, ...) METALANG99_PRIV_REC_NEXT(13511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13511(choice, ...) METALANG99_PRIV_REC_NEXT(13512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13512(choice, ...) METALANG99_PRIV_REC_NEXT(13513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13513(choice, ...) METALANG99_PRIV_REC_NEXT(13514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13514(choice, ...) METALANG99_PRIV_REC_NEXT(13515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13515(choice, ...) METALANG99_PRIV_REC_NEXT(13516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13516(choice, ...) METALANG99_PRIV_REC_NEXT(13517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13517(choice, ...) METALANG99_PRIV_REC_NEXT(13518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13518(choice, ...) METALANG99_PRIV_REC_NEXT(13519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13519(choice, ...) METALANG99_PRIV_REC_NEXT(13520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13520(choice, ...) METALANG99_PRIV_REC_NEXT(13521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13521(choice, ...) METALANG99_PRIV_REC_NEXT(13522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13522(choice, ...) METALANG99_PRIV_REC_NEXT(13523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13523(choice, ...) METALANG99_PRIV_REC_NEXT(13524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13524(choice, ...) METALANG99_PRIV_REC_NEXT(13525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13525(choice, ...) METALANG99_PRIV_REC_NEXT(13526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13526(choice, ...) METALANG99_PRIV_REC_NEXT(13527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13527(choice, ...) METALANG99_PRIV_REC_NEXT(13528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13528(choice, ...) METALANG99_PRIV_REC_NEXT(13529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13529(choice, ...) METALANG99_PRIV_REC_NEXT(13530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13530(choice, ...) METALANG99_PRIV_REC_NEXT(13531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13531(choice, ...) METALANG99_PRIV_REC_NEXT(13532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13532(choice, ...) METALANG99_PRIV_REC_NEXT(13533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13533(choice, ...) METALANG99_PRIV_REC_NEXT(13534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13534(choice, ...) METALANG99_PRIV_REC_NEXT(13535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13535(choice, ...) METALANG99_PRIV_REC_NEXT(13536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13536(choice, ...) METALANG99_PRIV_REC_NEXT(13537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13537(choice, ...) METALANG99_PRIV_REC_NEXT(13538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13538(choice, ...) METALANG99_PRIV_REC_NEXT(13539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13539(choice, ...) METALANG99_PRIV_REC_NEXT(13540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13540(choice, ...) METALANG99_PRIV_REC_NEXT(13541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13541(choice, ...) METALANG99_PRIV_REC_NEXT(13542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13542(choice, ...) METALANG99_PRIV_REC_NEXT(13543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13543(choice, ...) METALANG99_PRIV_REC_NEXT(13544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13544(choice, ...) METALANG99_PRIV_REC_NEXT(13545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13545(choice, ...) METALANG99_PRIV_REC_NEXT(13546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13546(choice, ...) METALANG99_PRIV_REC_NEXT(13547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13547(choice, ...) METALANG99_PRIV_REC_NEXT(13548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13548(choice, ...) METALANG99_PRIV_REC_NEXT(13549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13549(choice, ...) METALANG99_PRIV_REC_NEXT(13550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13550(choice, ...) METALANG99_PRIV_REC_NEXT(13551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13551(choice, ...) METALANG99_PRIV_REC_NEXT(13552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13552(choice, ...) METALANG99_PRIV_REC_NEXT(13553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13553(choice, ...) METALANG99_PRIV_REC_NEXT(13554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13554(choice, ...) METALANG99_PRIV_REC_NEXT(13555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13555(choice, ...) METALANG99_PRIV_REC_NEXT(13556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13556(choice, ...) METALANG99_PRIV_REC_NEXT(13557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13557(choice, ...) METALANG99_PRIV_REC_NEXT(13558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13558(choice, ...) METALANG99_PRIV_REC_NEXT(13559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13559(choice, ...) METALANG99_PRIV_REC_NEXT(13560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13560(choice, ...) METALANG99_PRIV_REC_NEXT(13561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13561(choice, ...) METALANG99_PRIV_REC_NEXT(13562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13562(choice, ...) METALANG99_PRIV_REC_NEXT(13563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13563(choice, ...) METALANG99_PRIV_REC_NEXT(13564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13564(choice, ...) METALANG99_PRIV_REC_NEXT(13565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13565(choice, ...) METALANG99_PRIV_REC_NEXT(13566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13566(choice, ...) METALANG99_PRIV_REC_NEXT(13567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13567(choice, ...) METALANG99_PRIV_REC_NEXT(13568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13568(choice, ...) METALANG99_PRIV_REC_NEXT(13569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13569(choice, ...) METALANG99_PRIV_REC_NEXT(13570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13570(choice, ...) METALANG99_PRIV_REC_NEXT(13571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13571(choice, ...) METALANG99_PRIV_REC_NEXT(13572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13572(choice, ...) METALANG99_PRIV_REC_NEXT(13573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13573(choice, ...) METALANG99_PRIV_REC_NEXT(13574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13574(choice, ...) METALANG99_PRIV_REC_NEXT(13575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13575(choice, ...) METALANG99_PRIV_REC_NEXT(13576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13576(choice, ...) METALANG99_PRIV_REC_NEXT(13577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13577(choice, ...) METALANG99_PRIV_REC_NEXT(13578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13578(choice, ...) METALANG99_PRIV_REC_NEXT(13579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13579(choice, ...) METALANG99_PRIV_REC_NEXT(13580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13580(choice, ...) METALANG99_PRIV_REC_NEXT(13581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13581(choice, ...) METALANG99_PRIV_REC_NEXT(13582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13582(choice, ...) METALANG99_PRIV_REC_NEXT(13583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13583(choice, ...) METALANG99_PRIV_REC_NEXT(13584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13584(choice, ...) METALANG99_PRIV_REC_NEXT(13585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13585(choice, ...) METALANG99_PRIV_REC_NEXT(13586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13586(choice, ...) METALANG99_PRIV_REC_NEXT(13587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13587(choice, ...) METALANG99_PRIV_REC_NEXT(13588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13588(choice, ...) METALANG99_PRIV_REC_NEXT(13589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13589(choice, ...) METALANG99_PRIV_REC_NEXT(13590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13590(choice, ...) METALANG99_PRIV_REC_NEXT(13591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13591(choice, ...) METALANG99_PRIV_REC_NEXT(13592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13592(choice, ...) METALANG99_PRIV_REC_NEXT(13593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13593(choice, ...) METALANG99_PRIV_REC_NEXT(13594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13594(choice, ...) METALANG99_PRIV_REC_NEXT(13595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13595(choice, ...) METALANG99_PRIV_REC_NEXT(13596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13596(choice, ...) METALANG99_PRIV_REC_NEXT(13597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13597(choice, ...) METALANG99_PRIV_REC_NEXT(13598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13598(choice, ...) METALANG99_PRIV_REC_NEXT(13599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13599(choice, ...) METALANG99_PRIV_REC_NEXT(13600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13600(choice, ...) METALANG99_PRIV_REC_NEXT(13601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13601(choice, ...) METALANG99_PRIV_REC_NEXT(13602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13602(choice, ...) METALANG99_PRIV_REC_NEXT(13603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13603(choice, ...) METALANG99_PRIV_REC_NEXT(13604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13604(choice, ...) METALANG99_PRIV_REC_NEXT(13605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13605(choice, ...) METALANG99_PRIV_REC_NEXT(13606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13606(choice, ...) METALANG99_PRIV_REC_NEXT(13607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13607(choice, ...) METALANG99_PRIV_REC_NEXT(13608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13608(choice, ...) METALANG99_PRIV_REC_NEXT(13609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13609(choice, ...) METALANG99_PRIV_REC_NEXT(13610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13610(choice, ...) METALANG99_PRIV_REC_NEXT(13611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13611(choice, ...) METALANG99_PRIV_REC_NEXT(13612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13612(choice, ...) METALANG99_PRIV_REC_NEXT(13613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13613(choice, ...) METALANG99_PRIV_REC_NEXT(13614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13614(choice, ...) METALANG99_PRIV_REC_NEXT(13615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13615(choice, ...) METALANG99_PRIV_REC_NEXT(13616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13616(choice, ...) METALANG99_PRIV_REC_NEXT(13617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13617(choice, ...) METALANG99_PRIV_REC_NEXT(13618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13618(choice, ...) METALANG99_PRIV_REC_NEXT(13619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13619(choice, ...) METALANG99_PRIV_REC_NEXT(13620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13620(choice, ...) METALANG99_PRIV_REC_NEXT(13621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13621(choice, ...) METALANG99_PRIV_REC_NEXT(13622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13622(choice, ...) METALANG99_PRIV_REC_NEXT(13623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13623(choice, ...) METALANG99_PRIV_REC_NEXT(13624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13624(choice, ...) METALANG99_PRIV_REC_NEXT(13625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13625(choice, ...) METALANG99_PRIV_REC_NEXT(13626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13626(choice, ...) METALANG99_PRIV_REC_NEXT(13627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13627(choice, ...) METALANG99_PRIV_REC_NEXT(13628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13628(choice, ...) METALANG99_PRIV_REC_NEXT(13629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13629(choice, ...) METALANG99_PRIV_REC_NEXT(13630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13630(choice, ...) METALANG99_PRIV_REC_NEXT(13631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13631(choice, ...) METALANG99_PRIV_REC_NEXT(13632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13632(choice, ...) METALANG99_PRIV_REC_NEXT(13633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13633(choice, ...) METALANG99_PRIV_REC_NEXT(13634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13634(choice, ...) METALANG99_PRIV_REC_NEXT(13635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13635(choice, ...) METALANG99_PRIV_REC_NEXT(13636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13636(choice, ...) METALANG99_PRIV_REC_NEXT(13637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13637(choice, ...) METALANG99_PRIV_REC_NEXT(13638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13638(choice, ...) METALANG99_PRIV_REC_NEXT(13639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13639(choice, ...) METALANG99_PRIV_REC_NEXT(13640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13640(choice, ...) METALANG99_PRIV_REC_NEXT(13641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13641(choice, ...) METALANG99_PRIV_REC_NEXT(13642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13642(choice, ...) METALANG99_PRIV_REC_NEXT(13643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13643(choice, ...) METALANG99_PRIV_REC_NEXT(13644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13644(choice, ...) METALANG99_PRIV_REC_NEXT(13645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13645(choice, ...) METALANG99_PRIV_REC_NEXT(13646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13646(choice, ...) METALANG99_PRIV_REC_NEXT(13647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13647(choice, ...) METALANG99_PRIV_REC_NEXT(13648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13648(choice, ...) METALANG99_PRIV_REC_NEXT(13649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13649(choice, ...) METALANG99_PRIV_REC_NEXT(13650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13650(choice, ...) METALANG99_PRIV_REC_NEXT(13651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13651(choice, ...) METALANG99_PRIV_REC_NEXT(13652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13652(choice, ...) METALANG99_PRIV_REC_NEXT(13653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13653(choice, ...) METALANG99_PRIV_REC_NEXT(13654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13654(choice, ...) METALANG99_PRIV_REC_NEXT(13655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13655(choice, ...) METALANG99_PRIV_REC_NEXT(13656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13656(choice, ...) METALANG99_PRIV_REC_NEXT(13657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13657(choice, ...) METALANG99_PRIV_REC_NEXT(13658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13658(choice, ...) METALANG99_PRIV_REC_NEXT(13659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13659(choice, ...) METALANG99_PRIV_REC_NEXT(13660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13660(choice, ...) METALANG99_PRIV_REC_NEXT(13661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13661(choice, ...) METALANG99_PRIV_REC_NEXT(13662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13662(choice, ...) METALANG99_PRIV_REC_NEXT(13663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13663(choice, ...) METALANG99_PRIV_REC_NEXT(13664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13664(choice, ...) METALANG99_PRIV_REC_NEXT(13665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13665(choice, ...) METALANG99_PRIV_REC_NEXT(13666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13666(choice, ...) METALANG99_PRIV_REC_NEXT(13667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13667(choice, ...) METALANG99_PRIV_REC_NEXT(13668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13668(choice, ...) METALANG99_PRIV_REC_NEXT(13669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13669(choice, ...) METALANG99_PRIV_REC_NEXT(13670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13670(choice, ...) METALANG99_PRIV_REC_NEXT(13671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13671(choice, ...) METALANG99_PRIV_REC_NEXT(13672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13672(choice, ...) METALANG99_PRIV_REC_NEXT(13673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13673(choice, ...) METALANG99_PRIV_REC_NEXT(13674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13674(choice, ...) METALANG99_PRIV_REC_NEXT(13675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13675(choice, ...) METALANG99_PRIV_REC_NEXT(13676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13676(choice, ...) METALANG99_PRIV_REC_NEXT(13677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13677(choice, ...) METALANG99_PRIV_REC_NEXT(13678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13678(choice, ...) METALANG99_PRIV_REC_NEXT(13679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13679(choice, ...) METALANG99_PRIV_REC_NEXT(13680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13680(choice, ...) METALANG99_PRIV_REC_NEXT(13681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13681(choice, ...) METALANG99_PRIV_REC_NEXT(13682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13682(choice, ...) METALANG99_PRIV_REC_NEXT(13683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13683(choice, ...) METALANG99_PRIV_REC_NEXT(13684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13684(choice, ...) METALANG99_PRIV_REC_NEXT(13685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13685(choice, ...) METALANG99_PRIV_REC_NEXT(13686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13686(choice, ...) METALANG99_PRIV_REC_NEXT(13687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13687(choice, ...) METALANG99_PRIV_REC_NEXT(13688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13688(choice, ...) METALANG99_PRIV_REC_NEXT(13689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13689(choice, ...) METALANG99_PRIV_REC_NEXT(13690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13690(choice, ...) METALANG99_PRIV_REC_NEXT(13691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13691(choice, ...) METALANG99_PRIV_REC_NEXT(13692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13692(choice, ...) METALANG99_PRIV_REC_NEXT(13693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13693(choice, ...) METALANG99_PRIV_REC_NEXT(13694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13694(choice, ...) METALANG99_PRIV_REC_NEXT(13695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13695(choice, ...) METALANG99_PRIV_REC_NEXT(13696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13696(choice, ...) METALANG99_PRIV_REC_NEXT(13697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13697(choice, ...) METALANG99_PRIV_REC_NEXT(13698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13698(choice, ...) METALANG99_PRIV_REC_NEXT(13699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13699(choice, ...) METALANG99_PRIV_REC_NEXT(13700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13700(choice, ...) METALANG99_PRIV_REC_NEXT(13701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13701(choice, ...) METALANG99_PRIV_REC_NEXT(13702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13702(choice, ...) METALANG99_PRIV_REC_NEXT(13703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13703(choice, ...) METALANG99_PRIV_REC_NEXT(13704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13704(choice, ...) METALANG99_PRIV_REC_NEXT(13705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13705(choice, ...) METALANG99_PRIV_REC_NEXT(13706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13706(choice, ...) METALANG99_PRIV_REC_NEXT(13707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13707(choice, ...) METALANG99_PRIV_REC_NEXT(13708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13708(choice, ...) METALANG99_PRIV_REC_NEXT(13709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13709(choice, ...) METALANG99_PRIV_REC_NEXT(13710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13710(choice, ...) METALANG99_PRIV_REC_NEXT(13711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13711(choice, ...) METALANG99_PRIV_REC_NEXT(13712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13712(choice, ...) METALANG99_PRIV_REC_NEXT(13713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13713(choice, ...) METALANG99_PRIV_REC_NEXT(13714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13714(choice, ...) METALANG99_PRIV_REC_NEXT(13715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13715(choice, ...) METALANG99_PRIV_REC_NEXT(13716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13716(choice, ...) METALANG99_PRIV_REC_NEXT(13717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13717(choice, ...) METALANG99_PRIV_REC_NEXT(13718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13718(choice, ...) METALANG99_PRIV_REC_NEXT(13719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13719(choice, ...) METALANG99_PRIV_REC_NEXT(13720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13720(choice, ...) METALANG99_PRIV_REC_NEXT(13721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13721(choice, ...) METALANG99_PRIV_REC_NEXT(13722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13722(choice, ...) METALANG99_PRIV_REC_NEXT(13723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13723(choice, ...) METALANG99_PRIV_REC_NEXT(13724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13724(choice, ...) METALANG99_PRIV_REC_NEXT(13725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13725(choice, ...) METALANG99_PRIV_REC_NEXT(13726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13726(choice, ...) METALANG99_PRIV_REC_NEXT(13727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13727(choice, ...) METALANG99_PRIV_REC_NEXT(13728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13728(choice, ...) METALANG99_PRIV_REC_NEXT(13729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13729(choice, ...) METALANG99_PRIV_REC_NEXT(13730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13730(choice, ...) METALANG99_PRIV_REC_NEXT(13731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13731(choice, ...) METALANG99_PRIV_REC_NEXT(13732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13732(choice, ...) METALANG99_PRIV_REC_NEXT(13733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13733(choice, ...) METALANG99_PRIV_REC_NEXT(13734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13734(choice, ...) METALANG99_PRIV_REC_NEXT(13735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13735(choice, ...) METALANG99_PRIV_REC_NEXT(13736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13736(choice, ...) METALANG99_PRIV_REC_NEXT(13737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13737(choice, ...) METALANG99_PRIV_REC_NEXT(13738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13738(choice, ...) METALANG99_PRIV_REC_NEXT(13739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13739(choice, ...) METALANG99_PRIV_REC_NEXT(13740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13740(choice, ...) METALANG99_PRIV_REC_NEXT(13741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13741(choice, ...) METALANG99_PRIV_REC_NEXT(13742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13742(choice, ...) METALANG99_PRIV_REC_NEXT(13743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13743(choice, ...) METALANG99_PRIV_REC_NEXT(13744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13744(choice, ...) METALANG99_PRIV_REC_NEXT(13745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13745(choice, ...) METALANG99_PRIV_REC_NEXT(13746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13746(choice, ...) METALANG99_PRIV_REC_NEXT(13747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13747(choice, ...) METALANG99_PRIV_REC_NEXT(13748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13748(choice, ...) METALANG99_PRIV_REC_NEXT(13749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13749(choice, ...) METALANG99_PRIV_REC_NEXT(13750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13750(choice, ...) METALANG99_PRIV_REC_NEXT(13751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13751(choice, ...) METALANG99_PRIV_REC_NEXT(13752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13752(choice, ...) METALANG99_PRIV_REC_NEXT(13753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13753(choice, ...) METALANG99_PRIV_REC_NEXT(13754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13754(choice, ...) METALANG99_PRIV_REC_NEXT(13755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13755(choice, ...) METALANG99_PRIV_REC_NEXT(13756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13756(choice, ...) METALANG99_PRIV_REC_NEXT(13757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13757(choice, ...) METALANG99_PRIV_REC_NEXT(13758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13758(choice, ...) METALANG99_PRIV_REC_NEXT(13759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13759(choice, ...) METALANG99_PRIV_REC_NEXT(13760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13760(choice, ...) METALANG99_PRIV_REC_NEXT(13761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13761(choice, ...) METALANG99_PRIV_REC_NEXT(13762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13762(choice, ...) METALANG99_PRIV_REC_NEXT(13763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13763(choice, ...) METALANG99_PRIV_REC_NEXT(13764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13764(choice, ...) METALANG99_PRIV_REC_NEXT(13765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13765(choice, ...) METALANG99_PRIV_REC_NEXT(13766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13766(choice, ...) METALANG99_PRIV_REC_NEXT(13767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13767(choice, ...) METALANG99_PRIV_REC_NEXT(13768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13768(choice, ...) METALANG99_PRIV_REC_NEXT(13769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13769(choice, ...) METALANG99_PRIV_REC_NEXT(13770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13770(choice, ...) METALANG99_PRIV_REC_NEXT(13771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13771(choice, ...) METALANG99_PRIV_REC_NEXT(13772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13772(choice, ...) METALANG99_PRIV_REC_NEXT(13773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13773(choice, ...) METALANG99_PRIV_REC_NEXT(13774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13774(choice, ...) METALANG99_PRIV_REC_NEXT(13775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13775(choice, ...) METALANG99_PRIV_REC_NEXT(13776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13776(choice, ...) METALANG99_PRIV_REC_NEXT(13777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13777(choice, ...) METALANG99_PRIV_REC_NEXT(13778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13778(choice, ...) METALANG99_PRIV_REC_NEXT(13779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13779(choice, ...) METALANG99_PRIV_REC_NEXT(13780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13780(choice, ...) METALANG99_PRIV_REC_NEXT(13781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13781(choice, ...) METALANG99_PRIV_REC_NEXT(13782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13782(choice, ...) METALANG99_PRIV_REC_NEXT(13783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13783(choice, ...) METALANG99_PRIV_REC_NEXT(13784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13784(choice, ...) METALANG99_PRIV_REC_NEXT(13785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13785(choice, ...) METALANG99_PRIV_REC_NEXT(13786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13786(choice, ...) METALANG99_PRIV_REC_NEXT(13787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13787(choice, ...) METALANG99_PRIV_REC_NEXT(13788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13788(choice, ...) METALANG99_PRIV_REC_NEXT(13789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13789(choice, ...) METALANG99_PRIV_REC_NEXT(13790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13790(choice, ...) METALANG99_PRIV_REC_NEXT(13791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13791(choice, ...) METALANG99_PRIV_REC_NEXT(13792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13792(choice, ...) METALANG99_PRIV_REC_NEXT(13793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13793(choice, ...) METALANG99_PRIV_REC_NEXT(13794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13794(choice, ...) METALANG99_PRIV_REC_NEXT(13795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13795(choice, ...) METALANG99_PRIV_REC_NEXT(13796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13796(choice, ...) METALANG99_PRIV_REC_NEXT(13797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13797(choice, ...) METALANG99_PRIV_REC_NEXT(13798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13798(choice, ...) METALANG99_PRIV_REC_NEXT(13799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13799(choice, ...) METALANG99_PRIV_REC_NEXT(13800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13800(choice, ...) METALANG99_PRIV_REC_NEXT(13801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13801(choice, ...) METALANG99_PRIV_REC_NEXT(13802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13802(choice, ...) METALANG99_PRIV_REC_NEXT(13803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13803(choice, ...) METALANG99_PRIV_REC_NEXT(13804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13804(choice, ...) METALANG99_PRIV_REC_NEXT(13805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13805(choice, ...) METALANG99_PRIV_REC_NEXT(13806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13806(choice, ...) METALANG99_PRIV_REC_NEXT(13807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13807(choice, ...) METALANG99_PRIV_REC_NEXT(13808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13808(choice, ...) METALANG99_PRIV_REC_NEXT(13809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13809(choice, ...) METALANG99_PRIV_REC_NEXT(13810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13810(choice, ...) METALANG99_PRIV_REC_NEXT(13811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13811(choice, ...) METALANG99_PRIV_REC_NEXT(13812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13812(choice, ...) METALANG99_PRIV_REC_NEXT(13813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13813(choice, ...) METALANG99_PRIV_REC_NEXT(13814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13814(choice, ...) METALANG99_PRIV_REC_NEXT(13815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13815(choice, ...) METALANG99_PRIV_REC_NEXT(13816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13816(choice, ...) METALANG99_PRIV_REC_NEXT(13817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13817(choice, ...) METALANG99_PRIV_REC_NEXT(13818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13818(choice, ...) METALANG99_PRIV_REC_NEXT(13819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13819(choice, ...) METALANG99_PRIV_REC_NEXT(13820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13820(choice, ...) METALANG99_PRIV_REC_NEXT(13821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13821(choice, ...) METALANG99_PRIV_REC_NEXT(13822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13822(choice, ...) METALANG99_PRIV_REC_NEXT(13823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13823(choice, ...) METALANG99_PRIV_REC_NEXT(13824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13824(choice, ...) METALANG99_PRIV_REC_NEXT(13825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13825(choice, ...) METALANG99_PRIV_REC_NEXT(13826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13826(choice, ...) METALANG99_PRIV_REC_NEXT(13827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13827(choice, ...) METALANG99_PRIV_REC_NEXT(13828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13828(choice, ...) METALANG99_PRIV_REC_NEXT(13829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13829(choice, ...) METALANG99_PRIV_REC_NEXT(13830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13830(choice, ...) METALANG99_PRIV_REC_NEXT(13831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13831(choice, ...) METALANG99_PRIV_REC_NEXT(13832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13832(choice, ...) METALANG99_PRIV_REC_NEXT(13833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13833(choice, ...) METALANG99_PRIV_REC_NEXT(13834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13834(choice, ...) METALANG99_PRIV_REC_NEXT(13835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13835(choice, ...) METALANG99_PRIV_REC_NEXT(13836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13836(choice, ...) METALANG99_PRIV_REC_NEXT(13837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13837(choice, ...) METALANG99_PRIV_REC_NEXT(13838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13838(choice, ...) METALANG99_PRIV_REC_NEXT(13839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13839(choice, ...) METALANG99_PRIV_REC_NEXT(13840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13840(choice, ...) METALANG99_PRIV_REC_NEXT(13841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13841(choice, ...) METALANG99_PRIV_REC_NEXT(13842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13842(choice, ...) METALANG99_PRIV_REC_NEXT(13843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13843(choice, ...) METALANG99_PRIV_REC_NEXT(13844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13844(choice, ...) METALANG99_PRIV_REC_NEXT(13845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13845(choice, ...) METALANG99_PRIV_REC_NEXT(13846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13846(choice, ...) METALANG99_PRIV_REC_NEXT(13847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13847(choice, ...) METALANG99_PRIV_REC_NEXT(13848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13848(choice, ...) METALANG99_PRIV_REC_NEXT(13849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13849(choice, ...) METALANG99_PRIV_REC_NEXT(13850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13850(choice, ...) METALANG99_PRIV_REC_NEXT(13851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13851(choice, ...) METALANG99_PRIV_REC_NEXT(13852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13852(choice, ...) METALANG99_PRIV_REC_NEXT(13853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13853(choice, ...) METALANG99_PRIV_REC_NEXT(13854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13854(choice, ...) METALANG99_PRIV_REC_NEXT(13855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13855(choice, ...) METALANG99_PRIV_REC_NEXT(13856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13856(choice, ...) METALANG99_PRIV_REC_NEXT(13857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13857(choice, ...) METALANG99_PRIV_REC_NEXT(13858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13858(choice, ...) METALANG99_PRIV_REC_NEXT(13859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13859(choice, ...) METALANG99_PRIV_REC_NEXT(13860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13860(choice, ...) METALANG99_PRIV_REC_NEXT(13861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13861(choice, ...) METALANG99_PRIV_REC_NEXT(13862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13862(choice, ...) METALANG99_PRIV_REC_NEXT(13863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13863(choice, ...) METALANG99_PRIV_REC_NEXT(13864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13864(choice, ...) METALANG99_PRIV_REC_NEXT(13865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13865(choice, ...) METALANG99_PRIV_REC_NEXT(13866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13866(choice, ...) METALANG99_PRIV_REC_NEXT(13867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13867(choice, ...) METALANG99_PRIV_REC_NEXT(13868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13868(choice, ...) METALANG99_PRIV_REC_NEXT(13869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13869(choice, ...) METALANG99_PRIV_REC_NEXT(13870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13870(choice, ...) METALANG99_PRIV_REC_NEXT(13871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13871(choice, ...) METALANG99_PRIV_REC_NEXT(13872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13872(choice, ...) METALANG99_PRIV_REC_NEXT(13873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13873(choice, ...) METALANG99_PRIV_REC_NEXT(13874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13874(choice, ...) METALANG99_PRIV_REC_NEXT(13875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13875(choice, ...) METALANG99_PRIV_REC_NEXT(13876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13876(choice, ...) METALANG99_PRIV_REC_NEXT(13877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13877(choice, ...) METALANG99_PRIV_REC_NEXT(13878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13878(choice, ...) METALANG99_PRIV_REC_NEXT(13879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13879(choice, ...) METALANG99_PRIV_REC_NEXT(13880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13880(choice, ...) METALANG99_PRIV_REC_NEXT(13881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13881(choice, ...) METALANG99_PRIV_REC_NEXT(13882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13882(choice, ...) METALANG99_PRIV_REC_NEXT(13883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13883(choice, ...) METALANG99_PRIV_REC_NEXT(13884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13884(choice, ...) METALANG99_PRIV_REC_NEXT(13885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13885(choice, ...) METALANG99_PRIV_REC_NEXT(13886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13886(choice, ...) METALANG99_PRIV_REC_NEXT(13887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13887(choice, ...) METALANG99_PRIV_REC_NEXT(13888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13888(choice, ...) METALANG99_PRIV_REC_NEXT(13889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13889(choice, ...) METALANG99_PRIV_REC_NEXT(13890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13890(choice, ...) METALANG99_PRIV_REC_NEXT(13891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13891(choice, ...) METALANG99_PRIV_REC_NEXT(13892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13892(choice, ...) METALANG99_PRIV_REC_NEXT(13893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13893(choice, ...) METALANG99_PRIV_REC_NEXT(13894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13894(choice, ...) METALANG99_PRIV_REC_NEXT(13895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13895(choice, ...) METALANG99_PRIV_REC_NEXT(13896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13896(choice, ...) METALANG99_PRIV_REC_NEXT(13897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13897(choice, ...) METALANG99_PRIV_REC_NEXT(13898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13898(choice, ...) METALANG99_PRIV_REC_NEXT(13899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13899(choice, ...) METALANG99_PRIV_REC_NEXT(13900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13900(choice, ...) METALANG99_PRIV_REC_NEXT(13901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13901(choice, ...) METALANG99_PRIV_REC_NEXT(13902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13902(choice, ...) METALANG99_PRIV_REC_NEXT(13903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13903(choice, ...) METALANG99_PRIV_REC_NEXT(13904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13904(choice, ...) METALANG99_PRIV_REC_NEXT(13905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13905(choice, ...) METALANG99_PRIV_REC_NEXT(13906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13906(choice, ...) METALANG99_PRIV_REC_NEXT(13907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13907(choice, ...) METALANG99_PRIV_REC_NEXT(13908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13908(choice, ...) METALANG99_PRIV_REC_NEXT(13909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13909(choice, ...) METALANG99_PRIV_REC_NEXT(13910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13910(choice, ...) METALANG99_PRIV_REC_NEXT(13911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13911(choice, ...) METALANG99_PRIV_REC_NEXT(13912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13912(choice, ...) METALANG99_PRIV_REC_NEXT(13913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13913(choice, ...) METALANG99_PRIV_REC_NEXT(13914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13914(choice, ...) METALANG99_PRIV_REC_NEXT(13915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13915(choice, ...) METALANG99_PRIV_REC_NEXT(13916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13916(choice, ...) METALANG99_PRIV_REC_NEXT(13917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13917(choice, ...) METALANG99_PRIV_REC_NEXT(13918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13918(choice, ...) METALANG99_PRIV_REC_NEXT(13919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13919(choice, ...) METALANG99_PRIV_REC_NEXT(13920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13920(choice, ...) METALANG99_PRIV_REC_NEXT(13921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13921(choice, ...) METALANG99_PRIV_REC_NEXT(13922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13922(choice, ...) METALANG99_PRIV_REC_NEXT(13923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13923(choice, ...) METALANG99_PRIV_REC_NEXT(13924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13924(choice, ...) METALANG99_PRIV_REC_NEXT(13925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13925(choice, ...) METALANG99_PRIV_REC_NEXT(13926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13926(choice, ...) METALANG99_PRIV_REC_NEXT(13927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13927(choice, ...) METALANG99_PRIV_REC_NEXT(13928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13928(choice, ...) METALANG99_PRIV_REC_NEXT(13929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13929(choice, ...) METALANG99_PRIV_REC_NEXT(13930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13930(choice, ...) METALANG99_PRIV_REC_NEXT(13931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13931(choice, ...) METALANG99_PRIV_REC_NEXT(13932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13932(choice, ...) METALANG99_PRIV_REC_NEXT(13933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13933(choice, ...) METALANG99_PRIV_REC_NEXT(13934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13934(choice, ...) METALANG99_PRIV_REC_NEXT(13935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13935(choice, ...) METALANG99_PRIV_REC_NEXT(13936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13936(choice, ...) METALANG99_PRIV_REC_NEXT(13937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13937(choice, ...) METALANG99_PRIV_REC_NEXT(13938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13938(choice, ...) METALANG99_PRIV_REC_NEXT(13939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13939(choice, ...) METALANG99_PRIV_REC_NEXT(13940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13940(choice, ...) METALANG99_PRIV_REC_NEXT(13941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13941(choice, ...) METALANG99_PRIV_REC_NEXT(13942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13942(choice, ...) METALANG99_PRIV_REC_NEXT(13943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13943(choice, ...) METALANG99_PRIV_REC_NEXT(13944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13944(choice, ...) METALANG99_PRIV_REC_NEXT(13945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13945(choice, ...) METALANG99_PRIV_REC_NEXT(13946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13946(choice, ...) METALANG99_PRIV_REC_NEXT(13947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13947(choice, ...) METALANG99_PRIV_REC_NEXT(13948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13948(choice, ...) METALANG99_PRIV_REC_NEXT(13949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13949(choice, ...) METALANG99_PRIV_REC_NEXT(13950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13950(choice, ...) METALANG99_PRIV_REC_NEXT(13951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13951(choice, ...) METALANG99_PRIV_REC_NEXT(13952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13952(choice, ...) METALANG99_PRIV_REC_NEXT(13953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13953(choice, ...) METALANG99_PRIV_REC_NEXT(13954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13954(choice, ...) METALANG99_PRIV_REC_NEXT(13955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13955(choice, ...) METALANG99_PRIV_REC_NEXT(13956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13956(choice, ...) METALANG99_PRIV_REC_NEXT(13957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13957(choice, ...) METALANG99_PRIV_REC_NEXT(13958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13958(choice, ...) METALANG99_PRIV_REC_NEXT(13959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13959(choice, ...) METALANG99_PRIV_REC_NEXT(13960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13960(choice, ...) METALANG99_PRIV_REC_NEXT(13961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13961(choice, ...) METALANG99_PRIV_REC_NEXT(13962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13962(choice, ...) METALANG99_PRIV_REC_NEXT(13963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13963(choice, ...) METALANG99_PRIV_REC_NEXT(13964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13964(choice, ...) METALANG99_PRIV_REC_NEXT(13965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13965(choice, ...) METALANG99_PRIV_REC_NEXT(13966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13966(choice, ...) METALANG99_PRIV_REC_NEXT(13967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13967(choice, ...) METALANG99_PRIV_REC_NEXT(13968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13968(choice, ...) METALANG99_PRIV_REC_NEXT(13969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13969(choice, ...) METALANG99_PRIV_REC_NEXT(13970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13970(choice, ...) METALANG99_PRIV_REC_NEXT(13971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13971(choice, ...) METALANG99_PRIV_REC_NEXT(13972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13972(choice, ...) METALANG99_PRIV_REC_NEXT(13973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13973(choice, ...) METALANG99_PRIV_REC_NEXT(13974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13974(choice, ...) METALANG99_PRIV_REC_NEXT(13975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13975(choice, ...) METALANG99_PRIV_REC_NEXT(13976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13976(choice, ...) METALANG99_PRIV_REC_NEXT(13977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13977(choice, ...) METALANG99_PRIV_REC_NEXT(13978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13978(choice, ...) METALANG99_PRIV_REC_NEXT(13979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13979(choice, ...) METALANG99_PRIV_REC_NEXT(13980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13980(choice, ...) METALANG99_PRIV_REC_NEXT(13981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13981(choice, ...) METALANG99_PRIV_REC_NEXT(13982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13982(choice, ...) METALANG99_PRIV_REC_NEXT(13983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13983(choice, ...) METALANG99_PRIV_REC_NEXT(13984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13984(choice, ...) METALANG99_PRIV_REC_NEXT(13985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13985(choice, ...) METALANG99_PRIV_REC_NEXT(13986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13986(choice, ...) METALANG99_PRIV_REC_NEXT(13987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13987(choice, ...) METALANG99_PRIV_REC_NEXT(13988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13988(choice, ...) METALANG99_PRIV_REC_NEXT(13989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13989(choice, ...) METALANG99_PRIV_REC_NEXT(13990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13990(choice, ...) METALANG99_PRIV_REC_NEXT(13991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13991(choice, ...) METALANG99_PRIV_REC_NEXT(13992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13992(choice, ...) METALANG99_PRIV_REC_NEXT(13993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13993(choice, ...) METALANG99_PRIV_REC_NEXT(13994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13994(choice, ...) METALANG99_PRIV_REC_NEXT(13995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13995(choice, ...) METALANG99_PRIV_REC_NEXT(13996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13996(choice, ...) METALANG99_PRIV_REC_NEXT(13997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13997(choice, ...) METALANG99_PRIV_REC_NEXT(13998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13998(choice, ...) METALANG99_PRIV_REC_NEXT(13999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_13999(choice, ...) METALANG99_PRIV_REC_NEXT(14000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14000(choice, ...) METALANG99_PRIV_REC_NEXT(14001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14001(choice, ...) METALANG99_PRIV_REC_NEXT(14002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14002(choice, ...) METALANG99_PRIV_REC_NEXT(14003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14003(choice, ...) METALANG99_PRIV_REC_NEXT(14004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14004(choice, ...) METALANG99_PRIV_REC_NEXT(14005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14005(choice, ...) METALANG99_PRIV_REC_NEXT(14006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14006(choice, ...) METALANG99_PRIV_REC_NEXT(14007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14007(choice, ...) METALANG99_PRIV_REC_NEXT(14008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14008(choice, ...) METALANG99_PRIV_REC_NEXT(14009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14009(choice, ...) METALANG99_PRIV_REC_NEXT(14010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14010(choice, ...) METALANG99_PRIV_REC_NEXT(14011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14011(choice, ...) METALANG99_PRIV_REC_NEXT(14012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14012(choice, ...) METALANG99_PRIV_REC_NEXT(14013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14013(choice, ...) METALANG99_PRIV_REC_NEXT(14014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14014(choice, ...) METALANG99_PRIV_REC_NEXT(14015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14015(choice, ...) METALANG99_PRIV_REC_NEXT(14016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14016(choice, ...) METALANG99_PRIV_REC_NEXT(14017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14017(choice, ...) METALANG99_PRIV_REC_NEXT(14018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14018(choice, ...) METALANG99_PRIV_REC_NEXT(14019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14019(choice, ...) METALANG99_PRIV_REC_NEXT(14020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14020(choice, ...) METALANG99_PRIV_REC_NEXT(14021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14021(choice, ...) METALANG99_PRIV_REC_NEXT(14022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14022(choice, ...) METALANG99_PRIV_REC_NEXT(14023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14023(choice, ...) METALANG99_PRIV_REC_NEXT(14024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14024(choice, ...) METALANG99_PRIV_REC_NEXT(14025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14025(choice, ...) METALANG99_PRIV_REC_NEXT(14026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14026(choice, ...) METALANG99_PRIV_REC_NEXT(14027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14027(choice, ...) METALANG99_PRIV_REC_NEXT(14028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14028(choice, ...) METALANG99_PRIV_REC_NEXT(14029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14029(choice, ...) METALANG99_PRIV_REC_NEXT(14030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14030(choice, ...) METALANG99_PRIV_REC_NEXT(14031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14031(choice, ...) METALANG99_PRIV_REC_NEXT(14032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14032(choice, ...) METALANG99_PRIV_REC_NEXT(14033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14033(choice, ...) METALANG99_PRIV_REC_NEXT(14034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14034(choice, ...) METALANG99_PRIV_REC_NEXT(14035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14035(choice, ...) METALANG99_PRIV_REC_NEXT(14036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14036(choice, ...) METALANG99_PRIV_REC_NEXT(14037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14037(choice, ...) METALANG99_PRIV_REC_NEXT(14038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14038(choice, ...) METALANG99_PRIV_REC_NEXT(14039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14039(choice, ...) METALANG99_PRIV_REC_NEXT(14040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14040(choice, ...) METALANG99_PRIV_REC_NEXT(14041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14041(choice, ...) METALANG99_PRIV_REC_NEXT(14042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14042(choice, ...) METALANG99_PRIV_REC_NEXT(14043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14043(choice, ...) METALANG99_PRIV_REC_NEXT(14044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14044(choice, ...) METALANG99_PRIV_REC_NEXT(14045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14045(choice, ...) METALANG99_PRIV_REC_NEXT(14046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14046(choice, ...) METALANG99_PRIV_REC_NEXT(14047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14047(choice, ...) METALANG99_PRIV_REC_NEXT(14048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14048(choice, ...) METALANG99_PRIV_REC_NEXT(14049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14049(choice, ...) METALANG99_PRIV_REC_NEXT(14050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14050(choice, ...) METALANG99_PRIV_REC_NEXT(14051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14051(choice, ...) METALANG99_PRIV_REC_NEXT(14052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14052(choice, ...) METALANG99_PRIV_REC_NEXT(14053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14053(choice, ...) METALANG99_PRIV_REC_NEXT(14054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14054(choice, ...) METALANG99_PRIV_REC_NEXT(14055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14055(choice, ...) METALANG99_PRIV_REC_NEXT(14056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14056(choice, ...) METALANG99_PRIV_REC_NEXT(14057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14057(choice, ...) METALANG99_PRIV_REC_NEXT(14058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14058(choice, ...) METALANG99_PRIV_REC_NEXT(14059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14059(choice, ...) METALANG99_PRIV_REC_NEXT(14060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14060(choice, ...) METALANG99_PRIV_REC_NEXT(14061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14061(choice, ...) METALANG99_PRIV_REC_NEXT(14062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14062(choice, ...) METALANG99_PRIV_REC_NEXT(14063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14063(choice, ...) METALANG99_PRIV_REC_NEXT(14064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14064(choice, ...) METALANG99_PRIV_REC_NEXT(14065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14065(choice, ...) METALANG99_PRIV_REC_NEXT(14066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14066(choice, ...) METALANG99_PRIV_REC_NEXT(14067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14067(choice, ...) METALANG99_PRIV_REC_NEXT(14068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14068(choice, ...) METALANG99_PRIV_REC_NEXT(14069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14069(choice, ...) METALANG99_PRIV_REC_NEXT(14070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14070(choice, ...) METALANG99_PRIV_REC_NEXT(14071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14071(choice, ...) METALANG99_PRIV_REC_NEXT(14072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14072(choice, ...) METALANG99_PRIV_REC_NEXT(14073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14073(choice, ...) METALANG99_PRIV_REC_NEXT(14074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14074(choice, ...) METALANG99_PRIV_REC_NEXT(14075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14075(choice, ...) METALANG99_PRIV_REC_NEXT(14076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14076(choice, ...) METALANG99_PRIV_REC_NEXT(14077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14077(choice, ...) METALANG99_PRIV_REC_NEXT(14078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14078(choice, ...) METALANG99_PRIV_REC_NEXT(14079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14079(choice, ...) METALANG99_PRIV_REC_NEXT(14080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14080(choice, ...) METALANG99_PRIV_REC_NEXT(14081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14081(choice, ...) METALANG99_PRIV_REC_NEXT(14082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14082(choice, ...) METALANG99_PRIV_REC_NEXT(14083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14083(choice, ...) METALANG99_PRIV_REC_NEXT(14084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14084(choice, ...) METALANG99_PRIV_REC_NEXT(14085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14085(choice, ...) METALANG99_PRIV_REC_NEXT(14086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14086(choice, ...) METALANG99_PRIV_REC_NEXT(14087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14087(choice, ...) METALANG99_PRIV_REC_NEXT(14088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14088(choice, ...) METALANG99_PRIV_REC_NEXT(14089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14089(choice, ...) METALANG99_PRIV_REC_NEXT(14090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14090(choice, ...) METALANG99_PRIV_REC_NEXT(14091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14091(choice, ...) METALANG99_PRIV_REC_NEXT(14092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14092(choice, ...) METALANG99_PRIV_REC_NEXT(14093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14093(choice, ...) METALANG99_PRIV_REC_NEXT(14094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14094(choice, ...) METALANG99_PRIV_REC_NEXT(14095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14095(choice, ...) METALANG99_PRIV_REC_NEXT(14096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14096(choice, ...) METALANG99_PRIV_REC_NEXT(14097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14097(choice, ...) METALANG99_PRIV_REC_NEXT(14098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14098(choice, ...) METALANG99_PRIV_REC_NEXT(14099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14099(choice, ...) METALANG99_PRIV_REC_NEXT(14100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14100(choice, ...) METALANG99_PRIV_REC_NEXT(14101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14101(choice, ...) METALANG99_PRIV_REC_NEXT(14102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14102(choice, ...) METALANG99_PRIV_REC_NEXT(14103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14103(choice, ...) METALANG99_PRIV_REC_NEXT(14104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14104(choice, ...) METALANG99_PRIV_REC_NEXT(14105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14105(choice, ...) METALANG99_PRIV_REC_NEXT(14106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14106(choice, ...) METALANG99_PRIV_REC_NEXT(14107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14107(choice, ...) METALANG99_PRIV_REC_NEXT(14108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14108(choice, ...) METALANG99_PRIV_REC_NEXT(14109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14109(choice, ...) METALANG99_PRIV_REC_NEXT(14110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14110(choice, ...) METALANG99_PRIV_REC_NEXT(14111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14111(choice, ...) METALANG99_PRIV_REC_NEXT(14112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14112(choice, ...) METALANG99_PRIV_REC_NEXT(14113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14113(choice, ...) METALANG99_PRIV_REC_NEXT(14114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14114(choice, ...) METALANG99_PRIV_REC_NEXT(14115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14115(choice, ...) METALANG99_PRIV_REC_NEXT(14116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14116(choice, ...) METALANG99_PRIV_REC_NEXT(14117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14117(choice, ...) METALANG99_PRIV_REC_NEXT(14118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14118(choice, ...) METALANG99_PRIV_REC_NEXT(14119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14119(choice, ...) METALANG99_PRIV_REC_NEXT(14120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14120(choice, ...) METALANG99_PRIV_REC_NEXT(14121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14121(choice, ...) METALANG99_PRIV_REC_NEXT(14122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14122(choice, ...) METALANG99_PRIV_REC_NEXT(14123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14123(choice, ...) METALANG99_PRIV_REC_NEXT(14124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14124(choice, ...) METALANG99_PRIV_REC_NEXT(14125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14125(choice, ...) METALANG99_PRIV_REC_NEXT(14126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14126(choice, ...) METALANG99_PRIV_REC_NEXT(14127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14127(choice, ...) METALANG99_PRIV_REC_NEXT(14128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14128(choice, ...) METALANG99_PRIV_REC_NEXT(14129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14129(choice, ...) METALANG99_PRIV_REC_NEXT(14130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14130(choice, ...) METALANG99_PRIV_REC_NEXT(14131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14131(choice, ...) METALANG99_PRIV_REC_NEXT(14132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14132(choice, ...) METALANG99_PRIV_REC_NEXT(14133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14133(choice, ...) METALANG99_PRIV_REC_NEXT(14134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14134(choice, ...) METALANG99_PRIV_REC_NEXT(14135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14135(choice, ...) METALANG99_PRIV_REC_NEXT(14136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14136(choice, ...) METALANG99_PRIV_REC_NEXT(14137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14137(choice, ...) METALANG99_PRIV_REC_NEXT(14138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14138(choice, ...) METALANG99_PRIV_REC_NEXT(14139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14139(choice, ...) METALANG99_PRIV_REC_NEXT(14140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14140(choice, ...) METALANG99_PRIV_REC_NEXT(14141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14141(choice, ...) METALANG99_PRIV_REC_NEXT(14142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14142(choice, ...) METALANG99_PRIV_REC_NEXT(14143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14143(choice, ...) METALANG99_PRIV_REC_NEXT(14144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14144(choice, ...) METALANG99_PRIV_REC_NEXT(14145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14145(choice, ...) METALANG99_PRIV_REC_NEXT(14146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14146(choice, ...) METALANG99_PRIV_REC_NEXT(14147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14147(choice, ...) METALANG99_PRIV_REC_NEXT(14148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14148(choice, ...) METALANG99_PRIV_REC_NEXT(14149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14149(choice, ...) METALANG99_PRIV_REC_NEXT(14150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14150(choice, ...) METALANG99_PRIV_REC_NEXT(14151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14151(choice, ...) METALANG99_PRIV_REC_NEXT(14152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14152(choice, ...) METALANG99_PRIV_REC_NEXT(14153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14153(choice, ...) METALANG99_PRIV_REC_NEXT(14154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14154(choice, ...) METALANG99_PRIV_REC_NEXT(14155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14155(choice, ...) METALANG99_PRIV_REC_NEXT(14156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14156(choice, ...) METALANG99_PRIV_REC_NEXT(14157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14157(choice, ...) METALANG99_PRIV_REC_NEXT(14158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14158(choice, ...) METALANG99_PRIV_REC_NEXT(14159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14159(choice, ...) METALANG99_PRIV_REC_NEXT(14160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14160(choice, ...) METALANG99_PRIV_REC_NEXT(14161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14161(choice, ...) METALANG99_PRIV_REC_NEXT(14162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14162(choice, ...) METALANG99_PRIV_REC_NEXT(14163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14163(choice, ...) METALANG99_PRIV_REC_NEXT(14164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14164(choice, ...) METALANG99_PRIV_REC_NEXT(14165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14165(choice, ...) METALANG99_PRIV_REC_NEXT(14166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14166(choice, ...) METALANG99_PRIV_REC_NEXT(14167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14167(choice, ...) METALANG99_PRIV_REC_NEXT(14168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14168(choice, ...) METALANG99_PRIV_REC_NEXT(14169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14169(choice, ...) METALANG99_PRIV_REC_NEXT(14170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14170(choice, ...) METALANG99_PRIV_REC_NEXT(14171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14171(choice, ...) METALANG99_PRIV_REC_NEXT(14172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14172(choice, ...) METALANG99_PRIV_REC_NEXT(14173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14173(choice, ...) METALANG99_PRIV_REC_NEXT(14174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14174(choice, ...) METALANG99_PRIV_REC_NEXT(14175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14175(choice, ...) METALANG99_PRIV_REC_NEXT(14176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14176(choice, ...) METALANG99_PRIV_REC_NEXT(14177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14177(choice, ...) METALANG99_PRIV_REC_NEXT(14178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14178(choice, ...) METALANG99_PRIV_REC_NEXT(14179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14179(choice, ...) METALANG99_PRIV_REC_NEXT(14180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14180(choice, ...) METALANG99_PRIV_REC_NEXT(14181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14181(choice, ...) METALANG99_PRIV_REC_NEXT(14182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14182(choice, ...) METALANG99_PRIV_REC_NEXT(14183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14183(choice, ...) METALANG99_PRIV_REC_NEXT(14184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14184(choice, ...) METALANG99_PRIV_REC_NEXT(14185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14185(choice, ...) METALANG99_PRIV_REC_NEXT(14186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14186(choice, ...) METALANG99_PRIV_REC_NEXT(14187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14187(choice, ...) METALANG99_PRIV_REC_NEXT(14188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14188(choice, ...) METALANG99_PRIV_REC_NEXT(14189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14189(choice, ...) METALANG99_PRIV_REC_NEXT(14190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14190(choice, ...) METALANG99_PRIV_REC_NEXT(14191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14191(choice, ...) METALANG99_PRIV_REC_NEXT(14192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14192(choice, ...) METALANG99_PRIV_REC_NEXT(14193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14193(choice, ...) METALANG99_PRIV_REC_NEXT(14194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14194(choice, ...) METALANG99_PRIV_REC_NEXT(14195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14195(choice, ...) METALANG99_PRIV_REC_NEXT(14196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14196(choice, ...) METALANG99_PRIV_REC_NEXT(14197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14197(choice, ...) METALANG99_PRIV_REC_NEXT(14198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14198(choice, ...) METALANG99_PRIV_REC_NEXT(14199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14199(choice, ...) METALANG99_PRIV_REC_NEXT(14200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14200(choice, ...) METALANG99_PRIV_REC_NEXT(14201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14201(choice, ...) METALANG99_PRIV_REC_NEXT(14202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14202(choice, ...) METALANG99_PRIV_REC_NEXT(14203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14203(choice, ...) METALANG99_PRIV_REC_NEXT(14204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14204(choice, ...) METALANG99_PRIV_REC_NEXT(14205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14205(choice, ...) METALANG99_PRIV_REC_NEXT(14206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14206(choice, ...) METALANG99_PRIV_REC_NEXT(14207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14207(choice, ...) METALANG99_PRIV_REC_NEXT(14208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14208(choice, ...) METALANG99_PRIV_REC_NEXT(14209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14209(choice, ...) METALANG99_PRIV_REC_NEXT(14210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14210(choice, ...) METALANG99_PRIV_REC_NEXT(14211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14211(choice, ...) METALANG99_PRIV_REC_NEXT(14212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14212(choice, ...) METALANG99_PRIV_REC_NEXT(14213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14213(choice, ...) METALANG99_PRIV_REC_NEXT(14214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14214(choice, ...) METALANG99_PRIV_REC_NEXT(14215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14215(choice, ...) METALANG99_PRIV_REC_NEXT(14216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14216(choice, ...) METALANG99_PRIV_REC_NEXT(14217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14217(choice, ...) METALANG99_PRIV_REC_NEXT(14218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14218(choice, ...) METALANG99_PRIV_REC_NEXT(14219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14219(choice, ...) METALANG99_PRIV_REC_NEXT(14220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14220(choice, ...) METALANG99_PRIV_REC_NEXT(14221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14221(choice, ...) METALANG99_PRIV_REC_NEXT(14222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14222(choice, ...) METALANG99_PRIV_REC_NEXT(14223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14223(choice, ...) METALANG99_PRIV_REC_NEXT(14224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14224(choice, ...) METALANG99_PRIV_REC_NEXT(14225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14225(choice, ...) METALANG99_PRIV_REC_NEXT(14226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14226(choice, ...) METALANG99_PRIV_REC_NEXT(14227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14227(choice, ...) METALANG99_PRIV_REC_NEXT(14228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14228(choice, ...) METALANG99_PRIV_REC_NEXT(14229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14229(choice, ...) METALANG99_PRIV_REC_NEXT(14230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14230(choice, ...) METALANG99_PRIV_REC_NEXT(14231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14231(choice, ...) METALANG99_PRIV_REC_NEXT(14232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14232(choice, ...) METALANG99_PRIV_REC_NEXT(14233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14233(choice, ...) METALANG99_PRIV_REC_NEXT(14234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14234(choice, ...) METALANG99_PRIV_REC_NEXT(14235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14235(choice, ...) METALANG99_PRIV_REC_NEXT(14236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14236(choice, ...) METALANG99_PRIV_REC_NEXT(14237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14237(choice, ...) METALANG99_PRIV_REC_NEXT(14238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14238(choice, ...) METALANG99_PRIV_REC_NEXT(14239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14239(choice, ...) METALANG99_PRIV_REC_NEXT(14240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14240(choice, ...) METALANG99_PRIV_REC_NEXT(14241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14241(choice, ...) METALANG99_PRIV_REC_NEXT(14242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14242(choice, ...) METALANG99_PRIV_REC_NEXT(14243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14243(choice, ...) METALANG99_PRIV_REC_NEXT(14244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14244(choice, ...) METALANG99_PRIV_REC_NEXT(14245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14245(choice, ...) METALANG99_PRIV_REC_NEXT(14246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14246(choice, ...) METALANG99_PRIV_REC_NEXT(14247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14247(choice, ...) METALANG99_PRIV_REC_NEXT(14248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14248(choice, ...) METALANG99_PRIV_REC_NEXT(14249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14249(choice, ...) METALANG99_PRIV_REC_NEXT(14250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14250(choice, ...) METALANG99_PRIV_REC_NEXT(14251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14251(choice, ...) METALANG99_PRIV_REC_NEXT(14252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14252(choice, ...) METALANG99_PRIV_REC_NEXT(14253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14253(choice, ...) METALANG99_PRIV_REC_NEXT(14254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14254(choice, ...) METALANG99_PRIV_REC_NEXT(14255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14255(choice, ...) METALANG99_PRIV_REC_NEXT(14256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14256(choice, ...) METALANG99_PRIV_REC_NEXT(14257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14257(choice, ...) METALANG99_PRIV_REC_NEXT(14258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14258(choice, ...) METALANG99_PRIV_REC_NEXT(14259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14259(choice, ...) METALANG99_PRIV_REC_NEXT(14260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14260(choice, ...) METALANG99_PRIV_REC_NEXT(14261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14261(choice, ...) METALANG99_PRIV_REC_NEXT(14262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14262(choice, ...) METALANG99_PRIV_REC_NEXT(14263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14263(choice, ...) METALANG99_PRIV_REC_NEXT(14264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14264(choice, ...) METALANG99_PRIV_REC_NEXT(14265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14265(choice, ...) METALANG99_PRIV_REC_NEXT(14266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14266(choice, ...) METALANG99_PRIV_REC_NEXT(14267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14267(choice, ...) METALANG99_PRIV_REC_NEXT(14268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14268(choice, ...) METALANG99_PRIV_REC_NEXT(14269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14269(choice, ...) METALANG99_PRIV_REC_NEXT(14270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14270(choice, ...) METALANG99_PRIV_REC_NEXT(14271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14271(choice, ...) METALANG99_PRIV_REC_NEXT(14272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14272(choice, ...) METALANG99_PRIV_REC_NEXT(14273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14273(choice, ...) METALANG99_PRIV_REC_NEXT(14274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14274(choice, ...) METALANG99_PRIV_REC_NEXT(14275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14275(choice, ...) METALANG99_PRIV_REC_NEXT(14276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14276(choice, ...) METALANG99_PRIV_REC_NEXT(14277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14277(choice, ...) METALANG99_PRIV_REC_NEXT(14278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14278(choice, ...) METALANG99_PRIV_REC_NEXT(14279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14279(choice, ...) METALANG99_PRIV_REC_NEXT(14280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14280(choice, ...) METALANG99_PRIV_REC_NEXT(14281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14281(choice, ...) METALANG99_PRIV_REC_NEXT(14282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14282(choice, ...) METALANG99_PRIV_REC_NEXT(14283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14283(choice, ...) METALANG99_PRIV_REC_NEXT(14284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14284(choice, ...) METALANG99_PRIV_REC_NEXT(14285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14285(choice, ...) METALANG99_PRIV_REC_NEXT(14286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14286(choice, ...) METALANG99_PRIV_REC_NEXT(14287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14287(choice, ...) METALANG99_PRIV_REC_NEXT(14288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14288(choice, ...) METALANG99_PRIV_REC_NEXT(14289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14289(choice, ...) METALANG99_PRIV_REC_NEXT(14290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14290(choice, ...) METALANG99_PRIV_REC_NEXT(14291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14291(choice, ...) METALANG99_PRIV_REC_NEXT(14292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14292(choice, ...) METALANG99_PRIV_REC_NEXT(14293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14293(choice, ...) METALANG99_PRIV_REC_NEXT(14294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14294(choice, ...) METALANG99_PRIV_REC_NEXT(14295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14295(choice, ...) METALANG99_PRIV_REC_NEXT(14296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14296(choice, ...) METALANG99_PRIV_REC_NEXT(14297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14297(choice, ...) METALANG99_PRIV_REC_NEXT(14298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14298(choice, ...) METALANG99_PRIV_REC_NEXT(14299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14299(choice, ...) METALANG99_PRIV_REC_NEXT(14300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14300(choice, ...) METALANG99_PRIV_REC_NEXT(14301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14301(choice, ...) METALANG99_PRIV_REC_NEXT(14302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14302(choice, ...) METALANG99_PRIV_REC_NEXT(14303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14303(choice, ...) METALANG99_PRIV_REC_NEXT(14304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14304(choice, ...) METALANG99_PRIV_REC_NEXT(14305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14305(choice, ...) METALANG99_PRIV_REC_NEXT(14306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14306(choice, ...) METALANG99_PRIV_REC_NEXT(14307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14307(choice, ...) METALANG99_PRIV_REC_NEXT(14308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14308(choice, ...) METALANG99_PRIV_REC_NEXT(14309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14309(choice, ...) METALANG99_PRIV_REC_NEXT(14310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14310(choice, ...) METALANG99_PRIV_REC_NEXT(14311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14311(choice, ...) METALANG99_PRIV_REC_NEXT(14312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14312(choice, ...) METALANG99_PRIV_REC_NEXT(14313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14313(choice, ...) METALANG99_PRIV_REC_NEXT(14314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14314(choice, ...) METALANG99_PRIV_REC_NEXT(14315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14315(choice, ...) METALANG99_PRIV_REC_NEXT(14316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14316(choice, ...) METALANG99_PRIV_REC_NEXT(14317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14317(choice, ...) METALANG99_PRIV_REC_NEXT(14318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14318(choice, ...) METALANG99_PRIV_REC_NEXT(14319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14319(choice, ...) METALANG99_PRIV_REC_NEXT(14320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14320(choice, ...) METALANG99_PRIV_REC_NEXT(14321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14321(choice, ...) METALANG99_PRIV_REC_NEXT(14322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14322(choice, ...) METALANG99_PRIV_REC_NEXT(14323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14323(choice, ...) METALANG99_PRIV_REC_NEXT(14324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14324(choice, ...) METALANG99_PRIV_REC_NEXT(14325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14325(choice, ...) METALANG99_PRIV_REC_NEXT(14326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14326(choice, ...) METALANG99_PRIV_REC_NEXT(14327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14327(choice, ...) METALANG99_PRIV_REC_NEXT(14328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14328(choice, ...) METALANG99_PRIV_REC_NEXT(14329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14329(choice, ...) METALANG99_PRIV_REC_NEXT(14330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14330(choice, ...) METALANG99_PRIV_REC_NEXT(14331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14331(choice, ...) METALANG99_PRIV_REC_NEXT(14332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14332(choice, ...) METALANG99_PRIV_REC_NEXT(14333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14333(choice, ...) METALANG99_PRIV_REC_NEXT(14334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14334(choice, ...) METALANG99_PRIV_REC_NEXT(14335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14335(choice, ...) METALANG99_PRIV_REC_NEXT(14336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14336(choice, ...) METALANG99_PRIV_REC_NEXT(14337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14337(choice, ...) METALANG99_PRIV_REC_NEXT(14338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14338(choice, ...) METALANG99_PRIV_REC_NEXT(14339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14339(choice, ...) METALANG99_PRIV_REC_NEXT(14340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14340(choice, ...) METALANG99_PRIV_REC_NEXT(14341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14341(choice, ...) METALANG99_PRIV_REC_NEXT(14342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14342(choice, ...) METALANG99_PRIV_REC_NEXT(14343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14343(choice, ...) METALANG99_PRIV_REC_NEXT(14344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14344(choice, ...) METALANG99_PRIV_REC_NEXT(14345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14345(choice, ...) METALANG99_PRIV_REC_NEXT(14346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14346(choice, ...) METALANG99_PRIV_REC_NEXT(14347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14347(choice, ...) METALANG99_PRIV_REC_NEXT(14348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14348(choice, ...) METALANG99_PRIV_REC_NEXT(14349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14349(choice, ...) METALANG99_PRIV_REC_NEXT(14350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14350(choice, ...) METALANG99_PRIV_REC_NEXT(14351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14351(choice, ...) METALANG99_PRIV_REC_NEXT(14352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14352(choice, ...) METALANG99_PRIV_REC_NEXT(14353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14353(choice, ...) METALANG99_PRIV_REC_NEXT(14354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14354(choice, ...) METALANG99_PRIV_REC_NEXT(14355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14355(choice, ...) METALANG99_PRIV_REC_NEXT(14356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14356(choice, ...) METALANG99_PRIV_REC_NEXT(14357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14357(choice, ...) METALANG99_PRIV_REC_NEXT(14358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14358(choice, ...) METALANG99_PRIV_REC_NEXT(14359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14359(choice, ...) METALANG99_PRIV_REC_NEXT(14360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14360(choice, ...) METALANG99_PRIV_REC_NEXT(14361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14361(choice, ...) METALANG99_PRIV_REC_NEXT(14362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14362(choice, ...) METALANG99_PRIV_REC_NEXT(14363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14363(choice, ...) METALANG99_PRIV_REC_NEXT(14364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14364(choice, ...) METALANG99_PRIV_REC_NEXT(14365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14365(choice, ...) METALANG99_PRIV_REC_NEXT(14366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14366(choice, ...) METALANG99_PRIV_REC_NEXT(14367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14367(choice, ...) METALANG99_PRIV_REC_NEXT(14368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14368(choice, ...) METALANG99_PRIV_REC_NEXT(14369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14369(choice, ...) METALANG99_PRIV_REC_NEXT(14370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14370(choice, ...) METALANG99_PRIV_REC_NEXT(14371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14371(choice, ...) METALANG99_PRIV_REC_NEXT(14372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14372(choice, ...) METALANG99_PRIV_REC_NEXT(14373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14373(choice, ...) METALANG99_PRIV_REC_NEXT(14374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14374(choice, ...) METALANG99_PRIV_REC_NEXT(14375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14375(choice, ...) METALANG99_PRIV_REC_NEXT(14376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14376(choice, ...) METALANG99_PRIV_REC_NEXT(14377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14377(choice, ...) METALANG99_PRIV_REC_NEXT(14378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14378(choice, ...) METALANG99_PRIV_REC_NEXT(14379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14379(choice, ...) METALANG99_PRIV_REC_NEXT(14380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14380(choice, ...) METALANG99_PRIV_REC_NEXT(14381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14381(choice, ...) METALANG99_PRIV_REC_NEXT(14382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14382(choice, ...) METALANG99_PRIV_REC_NEXT(14383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14383(choice, ...) METALANG99_PRIV_REC_NEXT(14384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14384(choice, ...) METALANG99_PRIV_REC_NEXT(14385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14385(choice, ...) METALANG99_PRIV_REC_NEXT(14386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14386(choice, ...) METALANG99_PRIV_REC_NEXT(14387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14387(choice, ...) METALANG99_PRIV_REC_NEXT(14388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14388(choice, ...) METALANG99_PRIV_REC_NEXT(14389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14389(choice, ...) METALANG99_PRIV_REC_NEXT(14390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14390(choice, ...) METALANG99_PRIV_REC_NEXT(14391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14391(choice, ...) METALANG99_PRIV_REC_NEXT(14392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14392(choice, ...) METALANG99_PRIV_REC_NEXT(14393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14393(choice, ...) METALANG99_PRIV_REC_NEXT(14394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14394(choice, ...) METALANG99_PRIV_REC_NEXT(14395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14395(choice, ...) METALANG99_PRIV_REC_NEXT(14396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14396(choice, ...) METALANG99_PRIV_REC_NEXT(14397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14397(choice, ...) METALANG99_PRIV_REC_NEXT(14398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14398(choice, ...) METALANG99_PRIV_REC_NEXT(14399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14399(choice, ...) METALANG99_PRIV_REC_NEXT(14400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14400(choice, ...) METALANG99_PRIV_REC_NEXT(14401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14401(choice, ...) METALANG99_PRIV_REC_NEXT(14402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14402(choice, ...) METALANG99_PRIV_REC_NEXT(14403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14403(choice, ...) METALANG99_PRIV_REC_NEXT(14404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14404(choice, ...) METALANG99_PRIV_REC_NEXT(14405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14405(choice, ...) METALANG99_PRIV_REC_NEXT(14406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14406(choice, ...) METALANG99_PRIV_REC_NEXT(14407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14407(choice, ...) METALANG99_PRIV_REC_NEXT(14408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14408(choice, ...) METALANG99_PRIV_REC_NEXT(14409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14409(choice, ...) METALANG99_PRIV_REC_NEXT(14410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14410(choice, ...) METALANG99_PRIV_REC_NEXT(14411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14411(choice, ...) METALANG99_PRIV_REC_NEXT(14412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14412(choice, ...) METALANG99_PRIV_REC_NEXT(14413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14413(choice, ...) METALANG99_PRIV_REC_NEXT(14414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14414(choice, ...) METALANG99_PRIV_REC_NEXT(14415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14415(choice, ...) METALANG99_PRIV_REC_NEXT(14416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14416(choice, ...) METALANG99_PRIV_REC_NEXT(14417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14417(choice, ...) METALANG99_PRIV_REC_NEXT(14418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14418(choice, ...) METALANG99_PRIV_REC_NEXT(14419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14419(choice, ...) METALANG99_PRIV_REC_NEXT(14420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14420(choice, ...) METALANG99_PRIV_REC_NEXT(14421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14421(choice, ...) METALANG99_PRIV_REC_NEXT(14422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14422(choice, ...) METALANG99_PRIV_REC_NEXT(14423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14423(choice, ...) METALANG99_PRIV_REC_NEXT(14424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14424(choice, ...) METALANG99_PRIV_REC_NEXT(14425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14425(choice, ...) METALANG99_PRIV_REC_NEXT(14426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14426(choice, ...) METALANG99_PRIV_REC_NEXT(14427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14427(choice, ...) METALANG99_PRIV_REC_NEXT(14428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14428(choice, ...) METALANG99_PRIV_REC_NEXT(14429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14429(choice, ...) METALANG99_PRIV_REC_NEXT(14430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14430(choice, ...) METALANG99_PRIV_REC_NEXT(14431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14431(choice, ...) METALANG99_PRIV_REC_NEXT(14432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14432(choice, ...) METALANG99_PRIV_REC_NEXT(14433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14433(choice, ...) METALANG99_PRIV_REC_NEXT(14434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14434(choice, ...) METALANG99_PRIV_REC_NEXT(14435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14435(choice, ...) METALANG99_PRIV_REC_NEXT(14436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14436(choice, ...) METALANG99_PRIV_REC_NEXT(14437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14437(choice, ...) METALANG99_PRIV_REC_NEXT(14438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14438(choice, ...) METALANG99_PRIV_REC_NEXT(14439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14439(choice, ...) METALANG99_PRIV_REC_NEXT(14440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14440(choice, ...) METALANG99_PRIV_REC_NEXT(14441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14441(choice, ...) METALANG99_PRIV_REC_NEXT(14442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14442(choice, ...) METALANG99_PRIV_REC_NEXT(14443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14443(choice, ...) METALANG99_PRIV_REC_NEXT(14444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14444(choice, ...) METALANG99_PRIV_REC_NEXT(14445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14445(choice, ...) METALANG99_PRIV_REC_NEXT(14446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14446(choice, ...) METALANG99_PRIV_REC_NEXT(14447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14447(choice, ...) METALANG99_PRIV_REC_NEXT(14448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14448(choice, ...) METALANG99_PRIV_REC_NEXT(14449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14449(choice, ...) METALANG99_PRIV_REC_NEXT(14450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14450(choice, ...) METALANG99_PRIV_REC_NEXT(14451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14451(choice, ...) METALANG99_PRIV_REC_NEXT(14452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14452(choice, ...) METALANG99_PRIV_REC_NEXT(14453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14453(choice, ...) METALANG99_PRIV_REC_NEXT(14454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14454(choice, ...) METALANG99_PRIV_REC_NEXT(14455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14455(choice, ...) METALANG99_PRIV_REC_NEXT(14456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14456(choice, ...) METALANG99_PRIV_REC_NEXT(14457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14457(choice, ...) METALANG99_PRIV_REC_NEXT(14458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14458(choice, ...) METALANG99_PRIV_REC_NEXT(14459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14459(choice, ...) METALANG99_PRIV_REC_NEXT(14460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14460(choice, ...) METALANG99_PRIV_REC_NEXT(14461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14461(choice, ...) METALANG99_PRIV_REC_NEXT(14462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14462(choice, ...) METALANG99_PRIV_REC_NEXT(14463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14463(choice, ...) METALANG99_PRIV_REC_NEXT(14464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14464(choice, ...) METALANG99_PRIV_REC_NEXT(14465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14465(choice, ...) METALANG99_PRIV_REC_NEXT(14466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14466(choice, ...) METALANG99_PRIV_REC_NEXT(14467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14467(choice, ...) METALANG99_PRIV_REC_NEXT(14468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14468(choice, ...) METALANG99_PRIV_REC_NEXT(14469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14469(choice, ...) METALANG99_PRIV_REC_NEXT(14470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14470(choice, ...) METALANG99_PRIV_REC_NEXT(14471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14471(choice, ...) METALANG99_PRIV_REC_NEXT(14472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14472(choice, ...) METALANG99_PRIV_REC_NEXT(14473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14473(choice, ...) METALANG99_PRIV_REC_NEXT(14474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14474(choice, ...) METALANG99_PRIV_REC_NEXT(14475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14475(choice, ...) METALANG99_PRIV_REC_NEXT(14476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14476(choice, ...) METALANG99_PRIV_REC_NEXT(14477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14477(choice, ...) METALANG99_PRIV_REC_NEXT(14478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14478(choice, ...) METALANG99_PRIV_REC_NEXT(14479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14479(choice, ...) METALANG99_PRIV_REC_NEXT(14480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14480(choice, ...) METALANG99_PRIV_REC_NEXT(14481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14481(choice, ...) METALANG99_PRIV_REC_NEXT(14482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14482(choice, ...) METALANG99_PRIV_REC_NEXT(14483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14483(choice, ...) METALANG99_PRIV_REC_NEXT(14484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14484(choice, ...) METALANG99_PRIV_REC_NEXT(14485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14485(choice, ...) METALANG99_PRIV_REC_NEXT(14486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14486(choice, ...) METALANG99_PRIV_REC_NEXT(14487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14487(choice, ...) METALANG99_PRIV_REC_NEXT(14488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14488(choice, ...) METALANG99_PRIV_REC_NEXT(14489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14489(choice, ...) METALANG99_PRIV_REC_NEXT(14490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14490(choice, ...) METALANG99_PRIV_REC_NEXT(14491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14491(choice, ...) METALANG99_PRIV_REC_NEXT(14492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14492(choice, ...) METALANG99_PRIV_REC_NEXT(14493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14493(choice, ...) METALANG99_PRIV_REC_NEXT(14494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14494(choice, ...) METALANG99_PRIV_REC_NEXT(14495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14495(choice, ...) METALANG99_PRIV_REC_NEXT(14496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14496(choice, ...) METALANG99_PRIV_REC_NEXT(14497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14497(choice, ...) METALANG99_PRIV_REC_NEXT(14498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14498(choice, ...) METALANG99_PRIV_REC_NEXT(14499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14499(choice, ...) METALANG99_PRIV_REC_NEXT(14500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14500(choice, ...) METALANG99_PRIV_REC_NEXT(14501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14501(choice, ...) METALANG99_PRIV_REC_NEXT(14502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14502(choice, ...) METALANG99_PRIV_REC_NEXT(14503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14503(choice, ...) METALANG99_PRIV_REC_NEXT(14504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14504(choice, ...) METALANG99_PRIV_REC_NEXT(14505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14505(choice, ...) METALANG99_PRIV_REC_NEXT(14506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14506(choice, ...) METALANG99_PRIV_REC_NEXT(14507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14507(choice, ...) METALANG99_PRIV_REC_NEXT(14508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14508(choice, ...) METALANG99_PRIV_REC_NEXT(14509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14509(choice, ...) METALANG99_PRIV_REC_NEXT(14510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14510(choice, ...) METALANG99_PRIV_REC_NEXT(14511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14511(choice, ...) METALANG99_PRIV_REC_NEXT(14512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14512(choice, ...) METALANG99_PRIV_REC_NEXT(14513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14513(choice, ...) METALANG99_PRIV_REC_NEXT(14514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14514(choice, ...) METALANG99_PRIV_REC_NEXT(14515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14515(choice, ...) METALANG99_PRIV_REC_NEXT(14516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14516(choice, ...) METALANG99_PRIV_REC_NEXT(14517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14517(choice, ...) METALANG99_PRIV_REC_NEXT(14518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14518(choice, ...) METALANG99_PRIV_REC_NEXT(14519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14519(choice, ...) METALANG99_PRIV_REC_NEXT(14520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14520(choice, ...) METALANG99_PRIV_REC_NEXT(14521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14521(choice, ...) METALANG99_PRIV_REC_NEXT(14522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14522(choice, ...) METALANG99_PRIV_REC_NEXT(14523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14523(choice, ...) METALANG99_PRIV_REC_NEXT(14524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14524(choice, ...) METALANG99_PRIV_REC_NEXT(14525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14525(choice, ...) METALANG99_PRIV_REC_NEXT(14526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14526(choice, ...) METALANG99_PRIV_REC_NEXT(14527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14527(choice, ...) METALANG99_PRIV_REC_NEXT(14528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14528(choice, ...) METALANG99_PRIV_REC_NEXT(14529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14529(choice, ...) METALANG99_PRIV_REC_NEXT(14530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14530(choice, ...) METALANG99_PRIV_REC_NEXT(14531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14531(choice, ...) METALANG99_PRIV_REC_NEXT(14532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14532(choice, ...) METALANG99_PRIV_REC_NEXT(14533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14533(choice, ...) METALANG99_PRIV_REC_NEXT(14534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14534(choice, ...) METALANG99_PRIV_REC_NEXT(14535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14535(choice, ...) METALANG99_PRIV_REC_NEXT(14536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14536(choice, ...) METALANG99_PRIV_REC_NEXT(14537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14537(choice, ...) METALANG99_PRIV_REC_NEXT(14538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14538(choice, ...) METALANG99_PRIV_REC_NEXT(14539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14539(choice, ...) METALANG99_PRIV_REC_NEXT(14540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14540(choice, ...) METALANG99_PRIV_REC_NEXT(14541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14541(choice, ...) METALANG99_PRIV_REC_NEXT(14542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14542(choice, ...) METALANG99_PRIV_REC_NEXT(14543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14543(choice, ...) METALANG99_PRIV_REC_NEXT(14544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14544(choice, ...) METALANG99_PRIV_REC_NEXT(14545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14545(choice, ...) METALANG99_PRIV_REC_NEXT(14546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14546(choice, ...) METALANG99_PRIV_REC_NEXT(14547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14547(choice, ...) METALANG99_PRIV_REC_NEXT(14548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14548(choice, ...) METALANG99_PRIV_REC_NEXT(14549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14549(choice, ...) METALANG99_PRIV_REC_NEXT(14550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14550(choice, ...) METALANG99_PRIV_REC_NEXT(14551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14551(choice, ...) METALANG99_PRIV_REC_NEXT(14552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14552(choice, ...) METALANG99_PRIV_REC_NEXT(14553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14553(choice, ...) METALANG99_PRIV_REC_NEXT(14554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14554(choice, ...) METALANG99_PRIV_REC_NEXT(14555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14555(choice, ...) METALANG99_PRIV_REC_NEXT(14556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14556(choice, ...) METALANG99_PRIV_REC_NEXT(14557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14557(choice, ...) METALANG99_PRIV_REC_NEXT(14558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14558(choice, ...) METALANG99_PRIV_REC_NEXT(14559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14559(choice, ...) METALANG99_PRIV_REC_NEXT(14560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14560(choice, ...) METALANG99_PRIV_REC_NEXT(14561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14561(choice, ...) METALANG99_PRIV_REC_NEXT(14562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14562(choice, ...) METALANG99_PRIV_REC_NEXT(14563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14563(choice, ...) METALANG99_PRIV_REC_NEXT(14564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14564(choice, ...) METALANG99_PRIV_REC_NEXT(14565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14565(choice, ...) METALANG99_PRIV_REC_NEXT(14566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14566(choice, ...) METALANG99_PRIV_REC_NEXT(14567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14567(choice, ...) METALANG99_PRIV_REC_NEXT(14568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14568(choice, ...) METALANG99_PRIV_REC_NEXT(14569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14569(choice, ...) METALANG99_PRIV_REC_NEXT(14570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14570(choice, ...) METALANG99_PRIV_REC_NEXT(14571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14571(choice, ...) METALANG99_PRIV_REC_NEXT(14572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14572(choice, ...) METALANG99_PRIV_REC_NEXT(14573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14573(choice, ...) METALANG99_PRIV_REC_NEXT(14574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14574(choice, ...) METALANG99_PRIV_REC_NEXT(14575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14575(choice, ...) METALANG99_PRIV_REC_NEXT(14576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14576(choice, ...) METALANG99_PRIV_REC_NEXT(14577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14577(choice, ...) METALANG99_PRIV_REC_NEXT(14578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14578(choice, ...) METALANG99_PRIV_REC_NEXT(14579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14579(choice, ...) METALANG99_PRIV_REC_NEXT(14580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14580(choice, ...) METALANG99_PRIV_REC_NEXT(14581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14581(choice, ...) METALANG99_PRIV_REC_NEXT(14582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14582(choice, ...) METALANG99_PRIV_REC_NEXT(14583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14583(choice, ...) METALANG99_PRIV_REC_NEXT(14584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14584(choice, ...) METALANG99_PRIV_REC_NEXT(14585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14585(choice, ...) METALANG99_PRIV_REC_NEXT(14586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14586(choice, ...) METALANG99_PRIV_REC_NEXT(14587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14587(choice, ...) METALANG99_PRIV_REC_NEXT(14588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14588(choice, ...) METALANG99_PRIV_REC_NEXT(14589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14589(choice, ...) METALANG99_PRIV_REC_NEXT(14590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14590(choice, ...) METALANG99_PRIV_REC_NEXT(14591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14591(choice, ...) METALANG99_PRIV_REC_NEXT(14592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14592(choice, ...) METALANG99_PRIV_REC_NEXT(14593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14593(choice, ...) METALANG99_PRIV_REC_NEXT(14594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14594(choice, ...) METALANG99_PRIV_REC_NEXT(14595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14595(choice, ...) METALANG99_PRIV_REC_NEXT(14596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14596(choice, ...) METALANG99_PRIV_REC_NEXT(14597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14597(choice, ...) METALANG99_PRIV_REC_NEXT(14598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14598(choice, ...) METALANG99_PRIV_REC_NEXT(14599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14599(choice, ...) METALANG99_PRIV_REC_NEXT(14600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14600(choice, ...) METALANG99_PRIV_REC_NEXT(14601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14601(choice, ...) METALANG99_PRIV_REC_NEXT(14602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14602(choice, ...) METALANG99_PRIV_REC_NEXT(14603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14603(choice, ...) METALANG99_PRIV_REC_NEXT(14604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14604(choice, ...) METALANG99_PRIV_REC_NEXT(14605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14605(choice, ...) METALANG99_PRIV_REC_NEXT(14606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14606(choice, ...) METALANG99_PRIV_REC_NEXT(14607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14607(choice, ...) METALANG99_PRIV_REC_NEXT(14608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14608(choice, ...) METALANG99_PRIV_REC_NEXT(14609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14609(choice, ...) METALANG99_PRIV_REC_NEXT(14610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14610(choice, ...) METALANG99_PRIV_REC_NEXT(14611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14611(choice, ...) METALANG99_PRIV_REC_NEXT(14612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14612(choice, ...) METALANG99_PRIV_REC_NEXT(14613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14613(choice, ...) METALANG99_PRIV_REC_NEXT(14614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14614(choice, ...) METALANG99_PRIV_REC_NEXT(14615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14615(choice, ...) METALANG99_PRIV_REC_NEXT(14616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14616(choice, ...) METALANG99_PRIV_REC_NEXT(14617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14617(choice, ...) METALANG99_PRIV_REC_NEXT(14618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14618(choice, ...) METALANG99_PRIV_REC_NEXT(14619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14619(choice, ...) METALANG99_PRIV_REC_NEXT(14620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14620(choice, ...) METALANG99_PRIV_REC_NEXT(14621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14621(choice, ...) METALANG99_PRIV_REC_NEXT(14622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14622(choice, ...) METALANG99_PRIV_REC_NEXT(14623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14623(choice, ...) METALANG99_PRIV_REC_NEXT(14624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14624(choice, ...) METALANG99_PRIV_REC_NEXT(14625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14625(choice, ...) METALANG99_PRIV_REC_NEXT(14626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14626(choice, ...) METALANG99_PRIV_REC_NEXT(14627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14627(choice, ...) METALANG99_PRIV_REC_NEXT(14628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14628(choice, ...) METALANG99_PRIV_REC_NEXT(14629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14629(choice, ...) METALANG99_PRIV_REC_NEXT(14630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14630(choice, ...) METALANG99_PRIV_REC_NEXT(14631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14631(choice, ...) METALANG99_PRIV_REC_NEXT(14632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14632(choice, ...) METALANG99_PRIV_REC_NEXT(14633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14633(choice, ...) METALANG99_PRIV_REC_NEXT(14634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14634(choice, ...) METALANG99_PRIV_REC_NEXT(14635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14635(choice, ...) METALANG99_PRIV_REC_NEXT(14636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14636(choice, ...) METALANG99_PRIV_REC_NEXT(14637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14637(choice, ...) METALANG99_PRIV_REC_NEXT(14638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14638(choice, ...) METALANG99_PRIV_REC_NEXT(14639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14639(choice, ...) METALANG99_PRIV_REC_NEXT(14640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14640(choice, ...) METALANG99_PRIV_REC_NEXT(14641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14641(choice, ...) METALANG99_PRIV_REC_NEXT(14642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14642(choice, ...) METALANG99_PRIV_REC_NEXT(14643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14643(choice, ...) METALANG99_PRIV_REC_NEXT(14644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14644(choice, ...) METALANG99_PRIV_REC_NEXT(14645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14645(choice, ...) METALANG99_PRIV_REC_NEXT(14646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14646(choice, ...) METALANG99_PRIV_REC_NEXT(14647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14647(choice, ...) METALANG99_PRIV_REC_NEXT(14648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14648(choice, ...) METALANG99_PRIV_REC_NEXT(14649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14649(choice, ...) METALANG99_PRIV_REC_NEXT(14650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14650(choice, ...) METALANG99_PRIV_REC_NEXT(14651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14651(choice, ...) METALANG99_PRIV_REC_NEXT(14652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14652(choice, ...) METALANG99_PRIV_REC_NEXT(14653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14653(choice, ...) METALANG99_PRIV_REC_NEXT(14654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14654(choice, ...) METALANG99_PRIV_REC_NEXT(14655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14655(choice, ...) METALANG99_PRIV_REC_NEXT(14656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14656(choice, ...) METALANG99_PRIV_REC_NEXT(14657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14657(choice, ...) METALANG99_PRIV_REC_NEXT(14658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14658(choice, ...) METALANG99_PRIV_REC_NEXT(14659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14659(choice, ...) METALANG99_PRIV_REC_NEXT(14660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14660(choice, ...) METALANG99_PRIV_REC_NEXT(14661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14661(choice, ...) METALANG99_PRIV_REC_NEXT(14662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14662(choice, ...) METALANG99_PRIV_REC_NEXT(14663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14663(choice, ...) METALANG99_PRIV_REC_NEXT(14664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14664(choice, ...) METALANG99_PRIV_REC_NEXT(14665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14665(choice, ...) METALANG99_PRIV_REC_NEXT(14666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14666(choice, ...) METALANG99_PRIV_REC_NEXT(14667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14667(choice, ...) METALANG99_PRIV_REC_NEXT(14668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14668(choice, ...) METALANG99_PRIV_REC_NEXT(14669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14669(choice, ...) METALANG99_PRIV_REC_NEXT(14670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14670(choice, ...) METALANG99_PRIV_REC_NEXT(14671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14671(choice, ...) METALANG99_PRIV_REC_NEXT(14672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14672(choice, ...) METALANG99_PRIV_REC_NEXT(14673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14673(choice, ...) METALANG99_PRIV_REC_NEXT(14674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14674(choice, ...) METALANG99_PRIV_REC_NEXT(14675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14675(choice, ...) METALANG99_PRIV_REC_NEXT(14676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14676(choice, ...) METALANG99_PRIV_REC_NEXT(14677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14677(choice, ...) METALANG99_PRIV_REC_NEXT(14678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14678(choice, ...) METALANG99_PRIV_REC_NEXT(14679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14679(choice, ...) METALANG99_PRIV_REC_NEXT(14680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14680(choice, ...) METALANG99_PRIV_REC_NEXT(14681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14681(choice, ...) METALANG99_PRIV_REC_NEXT(14682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14682(choice, ...) METALANG99_PRIV_REC_NEXT(14683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14683(choice, ...) METALANG99_PRIV_REC_NEXT(14684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14684(choice, ...) METALANG99_PRIV_REC_NEXT(14685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14685(choice, ...) METALANG99_PRIV_REC_NEXT(14686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14686(choice, ...) METALANG99_PRIV_REC_NEXT(14687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14687(choice, ...) METALANG99_PRIV_REC_NEXT(14688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14688(choice, ...) METALANG99_PRIV_REC_NEXT(14689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14689(choice, ...) METALANG99_PRIV_REC_NEXT(14690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14690(choice, ...) METALANG99_PRIV_REC_NEXT(14691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14691(choice, ...) METALANG99_PRIV_REC_NEXT(14692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14692(choice, ...) METALANG99_PRIV_REC_NEXT(14693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14693(choice, ...) METALANG99_PRIV_REC_NEXT(14694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14694(choice, ...) METALANG99_PRIV_REC_NEXT(14695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14695(choice, ...) METALANG99_PRIV_REC_NEXT(14696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14696(choice, ...) METALANG99_PRIV_REC_NEXT(14697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14697(choice, ...) METALANG99_PRIV_REC_NEXT(14698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14698(choice, ...) METALANG99_PRIV_REC_NEXT(14699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14699(choice, ...) METALANG99_PRIV_REC_NEXT(14700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14700(choice, ...) METALANG99_PRIV_REC_NEXT(14701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14701(choice, ...) METALANG99_PRIV_REC_NEXT(14702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14702(choice, ...) METALANG99_PRIV_REC_NEXT(14703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14703(choice, ...) METALANG99_PRIV_REC_NEXT(14704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14704(choice, ...) METALANG99_PRIV_REC_NEXT(14705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14705(choice, ...) METALANG99_PRIV_REC_NEXT(14706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14706(choice, ...) METALANG99_PRIV_REC_NEXT(14707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14707(choice, ...) METALANG99_PRIV_REC_NEXT(14708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14708(choice, ...) METALANG99_PRIV_REC_NEXT(14709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14709(choice, ...) METALANG99_PRIV_REC_NEXT(14710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14710(choice, ...) METALANG99_PRIV_REC_NEXT(14711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14711(choice, ...) METALANG99_PRIV_REC_NEXT(14712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14712(choice, ...) METALANG99_PRIV_REC_NEXT(14713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14713(choice, ...) METALANG99_PRIV_REC_NEXT(14714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14714(choice, ...) METALANG99_PRIV_REC_NEXT(14715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14715(choice, ...) METALANG99_PRIV_REC_NEXT(14716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14716(choice, ...) METALANG99_PRIV_REC_NEXT(14717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14717(choice, ...) METALANG99_PRIV_REC_NEXT(14718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14718(choice, ...) METALANG99_PRIV_REC_NEXT(14719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14719(choice, ...) METALANG99_PRIV_REC_NEXT(14720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14720(choice, ...) METALANG99_PRIV_REC_NEXT(14721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14721(choice, ...) METALANG99_PRIV_REC_NEXT(14722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14722(choice, ...) METALANG99_PRIV_REC_NEXT(14723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14723(choice, ...) METALANG99_PRIV_REC_NEXT(14724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14724(choice, ...) METALANG99_PRIV_REC_NEXT(14725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14725(choice, ...) METALANG99_PRIV_REC_NEXT(14726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14726(choice, ...) METALANG99_PRIV_REC_NEXT(14727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14727(choice, ...) METALANG99_PRIV_REC_NEXT(14728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14728(choice, ...) METALANG99_PRIV_REC_NEXT(14729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14729(choice, ...) METALANG99_PRIV_REC_NEXT(14730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14730(choice, ...) METALANG99_PRIV_REC_NEXT(14731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14731(choice, ...) METALANG99_PRIV_REC_NEXT(14732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14732(choice, ...) METALANG99_PRIV_REC_NEXT(14733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14733(choice, ...) METALANG99_PRIV_REC_NEXT(14734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14734(choice, ...) METALANG99_PRIV_REC_NEXT(14735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14735(choice, ...) METALANG99_PRIV_REC_NEXT(14736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14736(choice, ...) METALANG99_PRIV_REC_NEXT(14737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14737(choice, ...) METALANG99_PRIV_REC_NEXT(14738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14738(choice, ...) METALANG99_PRIV_REC_NEXT(14739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14739(choice, ...) METALANG99_PRIV_REC_NEXT(14740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14740(choice, ...) METALANG99_PRIV_REC_NEXT(14741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14741(choice, ...) METALANG99_PRIV_REC_NEXT(14742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14742(choice, ...) METALANG99_PRIV_REC_NEXT(14743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14743(choice, ...) METALANG99_PRIV_REC_NEXT(14744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14744(choice, ...) METALANG99_PRIV_REC_NEXT(14745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14745(choice, ...) METALANG99_PRIV_REC_NEXT(14746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14746(choice, ...) METALANG99_PRIV_REC_NEXT(14747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14747(choice, ...) METALANG99_PRIV_REC_NEXT(14748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14748(choice, ...) METALANG99_PRIV_REC_NEXT(14749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14749(choice, ...) METALANG99_PRIV_REC_NEXT(14750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14750(choice, ...) METALANG99_PRIV_REC_NEXT(14751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14751(choice, ...) METALANG99_PRIV_REC_NEXT(14752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14752(choice, ...) METALANG99_PRIV_REC_NEXT(14753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14753(choice, ...) METALANG99_PRIV_REC_NEXT(14754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14754(choice, ...) METALANG99_PRIV_REC_NEXT(14755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14755(choice, ...) METALANG99_PRIV_REC_NEXT(14756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14756(choice, ...) METALANG99_PRIV_REC_NEXT(14757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14757(choice, ...) METALANG99_PRIV_REC_NEXT(14758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14758(choice, ...) METALANG99_PRIV_REC_NEXT(14759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14759(choice, ...) METALANG99_PRIV_REC_NEXT(14760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14760(choice, ...) METALANG99_PRIV_REC_NEXT(14761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14761(choice, ...) METALANG99_PRIV_REC_NEXT(14762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14762(choice, ...) METALANG99_PRIV_REC_NEXT(14763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14763(choice, ...) METALANG99_PRIV_REC_NEXT(14764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14764(choice, ...) METALANG99_PRIV_REC_NEXT(14765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14765(choice, ...) METALANG99_PRIV_REC_NEXT(14766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14766(choice, ...) METALANG99_PRIV_REC_NEXT(14767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14767(choice, ...) METALANG99_PRIV_REC_NEXT(14768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14768(choice, ...) METALANG99_PRIV_REC_NEXT(14769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14769(choice, ...) METALANG99_PRIV_REC_NEXT(14770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14770(choice, ...) METALANG99_PRIV_REC_NEXT(14771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14771(choice, ...) METALANG99_PRIV_REC_NEXT(14772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14772(choice, ...) METALANG99_PRIV_REC_NEXT(14773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14773(choice, ...) METALANG99_PRIV_REC_NEXT(14774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14774(choice, ...) METALANG99_PRIV_REC_NEXT(14775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14775(choice, ...) METALANG99_PRIV_REC_NEXT(14776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14776(choice, ...) METALANG99_PRIV_REC_NEXT(14777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14777(choice, ...) METALANG99_PRIV_REC_NEXT(14778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14778(choice, ...) METALANG99_PRIV_REC_NEXT(14779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14779(choice, ...) METALANG99_PRIV_REC_NEXT(14780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14780(choice, ...) METALANG99_PRIV_REC_NEXT(14781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14781(choice, ...) METALANG99_PRIV_REC_NEXT(14782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14782(choice, ...) METALANG99_PRIV_REC_NEXT(14783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14783(choice, ...) METALANG99_PRIV_REC_NEXT(14784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14784(choice, ...) METALANG99_PRIV_REC_NEXT(14785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14785(choice, ...) METALANG99_PRIV_REC_NEXT(14786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14786(choice, ...) METALANG99_PRIV_REC_NEXT(14787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14787(choice, ...) METALANG99_PRIV_REC_NEXT(14788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14788(choice, ...) METALANG99_PRIV_REC_NEXT(14789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14789(choice, ...) METALANG99_PRIV_REC_NEXT(14790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14790(choice, ...) METALANG99_PRIV_REC_NEXT(14791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14791(choice, ...) METALANG99_PRIV_REC_NEXT(14792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14792(choice, ...) METALANG99_PRIV_REC_NEXT(14793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14793(choice, ...) METALANG99_PRIV_REC_NEXT(14794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14794(choice, ...) METALANG99_PRIV_REC_NEXT(14795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14795(choice, ...) METALANG99_PRIV_REC_NEXT(14796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14796(choice, ...) METALANG99_PRIV_REC_NEXT(14797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14797(choice, ...) METALANG99_PRIV_REC_NEXT(14798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14798(choice, ...) METALANG99_PRIV_REC_NEXT(14799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14799(choice, ...) METALANG99_PRIV_REC_NEXT(14800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14800(choice, ...) METALANG99_PRIV_REC_NEXT(14801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14801(choice, ...) METALANG99_PRIV_REC_NEXT(14802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14802(choice, ...) METALANG99_PRIV_REC_NEXT(14803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14803(choice, ...) METALANG99_PRIV_REC_NEXT(14804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14804(choice, ...) METALANG99_PRIV_REC_NEXT(14805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14805(choice, ...) METALANG99_PRIV_REC_NEXT(14806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14806(choice, ...) METALANG99_PRIV_REC_NEXT(14807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14807(choice, ...) METALANG99_PRIV_REC_NEXT(14808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14808(choice, ...) METALANG99_PRIV_REC_NEXT(14809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14809(choice, ...) METALANG99_PRIV_REC_NEXT(14810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14810(choice, ...) METALANG99_PRIV_REC_NEXT(14811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14811(choice, ...) METALANG99_PRIV_REC_NEXT(14812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14812(choice, ...) METALANG99_PRIV_REC_NEXT(14813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14813(choice, ...) METALANG99_PRIV_REC_NEXT(14814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14814(choice, ...) METALANG99_PRIV_REC_NEXT(14815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14815(choice, ...) METALANG99_PRIV_REC_NEXT(14816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14816(choice, ...) METALANG99_PRIV_REC_NEXT(14817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14817(choice, ...) METALANG99_PRIV_REC_NEXT(14818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14818(choice, ...) METALANG99_PRIV_REC_NEXT(14819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14819(choice, ...) METALANG99_PRIV_REC_NEXT(14820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14820(choice, ...) METALANG99_PRIV_REC_NEXT(14821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14821(choice, ...) METALANG99_PRIV_REC_NEXT(14822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14822(choice, ...) METALANG99_PRIV_REC_NEXT(14823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14823(choice, ...) METALANG99_PRIV_REC_NEXT(14824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14824(choice, ...) METALANG99_PRIV_REC_NEXT(14825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14825(choice, ...) METALANG99_PRIV_REC_NEXT(14826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14826(choice, ...) METALANG99_PRIV_REC_NEXT(14827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14827(choice, ...) METALANG99_PRIV_REC_NEXT(14828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14828(choice, ...) METALANG99_PRIV_REC_NEXT(14829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14829(choice, ...) METALANG99_PRIV_REC_NEXT(14830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14830(choice, ...) METALANG99_PRIV_REC_NEXT(14831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14831(choice, ...) METALANG99_PRIV_REC_NEXT(14832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14832(choice, ...) METALANG99_PRIV_REC_NEXT(14833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14833(choice, ...) METALANG99_PRIV_REC_NEXT(14834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14834(choice, ...) METALANG99_PRIV_REC_NEXT(14835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14835(choice, ...) METALANG99_PRIV_REC_NEXT(14836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14836(choice, ...) METALANG99_PRIV_REC_NEXT(14837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14837(choice, ...) METALANG99_PRIV_REC_NEXT(14838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14838(choice, ...) METALANG99_PRIV_REC_NEXT(14839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14839(choice, ...) METALANG99_PRIV_REC_NEXT(14840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14840(choice, ...) METALANG99_PRIV_REC_NEXT(14841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14841(choice, ...) METALANG99_PRIV_REC_NEXT(14842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14842(choice, ...) METALANG99_PRIV_REC_NEXT(14843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14843(choice, ...) METALANG99_PRIV_REC_NEXT(14844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14844(choice, ...) METALANG99_PRIV_REC_NEXT(14845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14845(choice, ...) METALANG99_PRIV_REC_NEXT(14846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14846(choice, ...) METALANG99_PRIV_REC_NEXT(14847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14847(choice, ...) METALANG99_PRIV_REC_NEXT(14848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14848(choice, ...) METALANG99_PRIV_REC_NEXT(14849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14849(choice, ...) METALANG99_PRIV_REC_NEXT(14850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14850(choice, ...) METALANG99_PRIV_REC_NEXT(14851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14851(choice, ...) METALANG99_PRIV_REC_NEXT(14852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14852(choice, ...) METALANG99_PRIV_REC_NEXT(14853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14853(choice, ...) METALANG99_PRIV_REC_NEXT(14854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14854(choice, ...) METALANG99_PRIV_REC_NEXT(14855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14855(choice, ...) METALANG99_PRIV_REC_NEXT(14856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14856(choice, ...) METALANG99_PRIV_REC_NEXT(14857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14857(choice, ...) METALANG99_PRIV_REC_NEXT(14858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14858(choice, ...) METALANG99_PRIV_REC_NEXT(14859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14859(choice, ...) METALANG99_PRIV_REC_NEXT(14860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14860(choice, ...) METALANG99_PRIV_REC_NEXT(14861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14861(choice, ...) METALANG99_PRIV_REC_NEXT(14862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14862(choice, ...) METALANG99_PRIV_REC_NEXT(14863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14863(choice, ...) METALANG99_PRIV_REC_NEXT(14864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14864(choice, ...) METALANG99_PRIV_REC_NEXT(14865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14865(choice, ...) METALANG99_PRIV_REC_NEXT(14866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14866(choice, ...) METALANG99_PRIV_REC_NEXT(14867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14867(choice, ...) METALANG99_PRIV_REC_NEXT(14868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14868(choice, ...) METALANG99_PRIV_REC_NEXT(14869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14869(choice, ...) METALANG99_PRIV_REC_NEXT(14870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14870(choice, ...) METALANG99_PRIV_REC_NEXT(14871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14871(choice, ...) METALANG99_PRIV_REC_NEXT(14872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14872(choice, ...) METALANG99_PRIV_REC_NEXT(14873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14873(choice, ...) METALANG99_PRIV_REC_NEXT(14874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14874(choice, ...) METALANG99_PRIV_REC_NEXT(14875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14875(choice, ...) METALANG99_PRIV_REC_NEXT(14876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14876(choice, ...) METALANG99_PRIV_REC_NEXT(14877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14877(choice, ...) METALANG99_PRIV_REC_NEXT(14878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14878(choice, ...) METALANG99_PRIV_REC_NEXT(14879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14879(choice, ...) METALANG99_PRIV_REC_NEXT(14880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14880(choice, ...) METALANG99_PRIV_REC_NEXT(14881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14881(choice, ...) METALANG99_PRIV_REC_NEXT(14882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14882(choice, ...) METALANG99_PRIV_REC_NEXT(14883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14883(choice, ...) METALANG99_PRIV_REC_NEXT(14884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14884(choice, ...) METALANG99_PRIV_REC_NEXT(14885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14885(choice, ...) METALANG99_PRIV_REC_NEXT(14886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14886(choice, ...) METALANG99_PRIV_REC_NEXT(14887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14887(choice, ...) METALANG99_PRIV_REC_NEXT(14888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14888(choice, ...) METALANG99_PRIV_REC_NEXT(14889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14889(choice, ...) METALANG99_PRIV_REC_NEXT(14890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14890(choice, ...) METALANG99_PRIV_REC_NEXT(14891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14891(choice, ...) METALANG99_PRIV_REC_NEXT(14892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14892(choice, ...) METALANG99_PRIV_REC_NEXT(14893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14893(choice, ...) METALANG99_PRIV_REC_NEXT(14894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14894(choice, ...) METALANG99_PRIV_REC_NEXT(14895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14895(choice, ...) METALANG99_PRIV_REC_NEXT(14896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14896(choice, ...) METALANG99_PRIV_REC_NEXT(14897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14897(choice, ...) METALANG99_PRIV_REC_NEXT(14898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14898(choice, ...) METALANG99_PRIV_REC_NEXT(14899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14899(choice, ...) METALANG99_PRIV_REC_NEXT(14900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14900(choice, ...) METALANG99_PRIV_REC_NEXT(14901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14901(choice, ...) METALANG99_PRIV_REC_NEXT(14902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14902(choice, ...) METALANG99_PRIV_REC_NEXT(14903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14903(choice, ...) METALANG99_PRIV_REC_NEXT(14904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14904(choice, ...) METALANG99_PRIV_REC_NEXT(14905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14905(choice, ...) METALANG99_PRIV_REC_NEXT(14906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14906(choice, ...) METALANG99_PRIV_REC_NEXT(14907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14907(choice, ...) METALANG99_PRIV_REC_NEXT(14908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14908(choice, ...) METALANG99_PRIV_REC_NEXT(14909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14909(choice, ...) METALANG99_PRIV_REC_NEXT(14910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14910(choice, ...) METALANG99_PRIV_REC_NEXT(14911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14911(choice, ...) METALANG99_PRIV_REC_NEXT(14912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14912(choice, ...) METALANG99_PRIV_REC_NEXT(14913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14913(choice, ...) METALANG99_PRIV_REC_NEXT(14914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14914(choice, ...) METALANG99_PRIV_REC_NEXT(14915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14915(choice, ...) METALANG99_PRIV_REC_NEXT(14916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14916(choice, ...) METALANG99_PRIV_REC_NEXT(14917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14917(choice, ...) METALANG99_PRIV_REC_NEXT(14918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14918(choice, ...) METALANG99_PRIV_REC_NEXT(14919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14919(choice, ...) METALANG99_PRIV_REC_NEXT(14920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14920(choice, ...) METALANG99_PRIV_REC_NEXT(14921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14921(choice, ...) METALANG99_PRIV_REC_NEXT(14922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14922(choice, ...) METALANG99_PRIV_REC_NEXT(14923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14923(choice, ...) METALANG99_PRIV_REC_NEXT(14924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14924(choice, ...) METALANG99_PRIV_REC_NEXT(14925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14925(choice, ...) METALANG99_PRIV_REC_NEXT(14926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14926(choice, ...) METALANG99_PRIV_REC_NEXT(14927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14927(choice, ...) METALANG99_PRIV_REC_NEXT(14928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14928(choice, ...) METALANG99_PRIV_REC_NEXT(14929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14929(choice, ...) METALANG99_PRIV_REC_NEXT(14930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14930(choice, ...) METALANG99_PRIV_REC_NEXT(14931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14931(choice, ...) METALANG99_PRIV_REC_NEXT(14932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14932(choice, ...) METALANG99_PRIV_REC_NEXT(14933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14933(choice, ...) METALANG99_PRIV_REC_NEXT(14934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14934(choice, ...) METALANG99_PRIV_REC_NEXT(14935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14935(choice, ...) METALANG99_PRIV_REC_NEXT(14936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14936(choice, ...) METALANG99_PRIV_REC_NEXT(14937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14937(choice, ...) METALANG99_PRIV_REC_NEXT(14938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14938(choice, ...) METALANG99_PRIV_REC_NEXT(14939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14939(choice, ...) METALANG99_PRIV_REC_NEXT(14940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14940(choice, ...) METALANG99_PRIV_REC_NEXT(14941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14941(choice, ...) METALANG99_PRIV_REC_NEXT(14942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14942(choice, ...) METALANG99_PRIV_REC_NEXT(14943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14943(choice, ...) METALANG99_PRIV_REC_NEXT(14944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14944(choice, ...) METALANG99_PRIV_REC_NEXT(14945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14945(choice, ...) METALANG99_PRIV_REC_NEXT(14946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14946(choice, ...) METALANG99_PRIV_REC_NEXT(14947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14947(choice, ...) METALANG99_PRIV_REC_NEXT(14948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14948(choice, ...) METALANG99_PRIV_REC_NEXT(14949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14949(choice, ...) METALANG99_PRIV_REC_NEXT(14950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14950(choice, ...) METALANG99_PRIV_REC_NEXT(14951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14951(choice, ...) METALANG99_PRIV_REC_NEXT(14952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14952(choice, ...) METALANG99_PRIV_REC_NEXT(14953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14953(choice, ...) METALANG99_PRIV_REC_NEXT(14954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14954(choice, ...) METALANG99_PRIV_REC_NEXT(14955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14955(choice, ...) METALANG99_PRIV_REC_NEXT(14956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14956(choice, ...) METALANG99_PRIV_REC_NEXT(14957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14957(choice, ...) METALANG99_PRIV_REC_NEXT(14958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14958(choice, ...) METALANG99_PRIV_REC_NEXT(14959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14959(choice, ...) METALANG99_PRIV_REC_NEXT(14960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14960(choice, ...) METALANG99_PRIV_REC_NEXT(14961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14961(choice, ...) METALANG99_PRIV_REC_NEXT(14962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14962(choice, ...) METALANG99_PRIV_REC_NEXT(14963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14963(choice, ...) METALANG99_PRIV_REC_NEXT(14964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14964(choice, ...) METALANG99_PRIV_REC_NEXT(14965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14965(choice, ...) METALANG99_PRIV_REC_NEXT(14966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14966(choice, ...) METALANG99_PRIV_REC_NEXT(14967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14967(choice, ...) METALANG99_PRIV_REC_NEXT(14968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14968(choice, ...) METALANG99_PRIV_REC_NEXT(14969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14969(choice, ...) METALANG99_PRIV_REC_NEXT(14970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14970(choice, ...) METALANG99_PRIV_REC_NEXT(14971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14971(choice, ...) METALANG99_PRIV_REC_NEXT(14972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14972(choice, ...) METALANG99_PRIV_REC_NEXT(14973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14973(choice, ...) METALANG99_PRIV_REC_NEXT(14974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14974(choice, ...) METALANG99_PRIV_REC_NEXT(14975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14975(choice, ...) METALANG99_PRIV_REC_NEXT(14976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14976(choice, ...) METALANG99_PRIV_REC_NEXT(14977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14977(choice, ...) METALANG99_PRIV_REC_NEXT(14978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14978(choice, ...) METALANG99_PRIV_REC_NEXT(14979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14979(choice, ...) METALANG99_PRIV_REC_NEXT(14980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14980(choice, ...) METALANG99_PRIV_REC_NEXT(14981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14981(choice, ...) METALANG99_PRIV_REC_NEXT(14982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14982(choice, ...) METALANG99_PRIV_REC_NEXT(14983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14983(choice, ...) METALANG99_PRIV_REC_NEXT(14984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14984(choice, ...) METALANG99_PRIV_REC_NEXT(14985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14985(choice, ...) METALANG99_PRIV_REC_NEXT(14986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14986(choice, ...) METALANG99_PRIV_REC_NEXT(14987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14987(choice, ...) METALANG99_PRIV_REC_NEXT(14988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14988(choice, ...) METALANG99_PRIV_REC_NEXT(14989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14989(choice, ...) METALANG99_PRIV_REC_NEXT(14990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14990(choice, ...) METALANG99_PRIV_REC_NEXT(14991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14991(choice, ...) METALANG99_PRIV_REC_NEXT(14992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14992(choice, ...) METALANG99_PRIV_REC_NEXT(14993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14993(choice, ...) METALANG99_PRIV_REC_NEXT(14994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14994(choice, ...) METALANG99_PRIV_REC_NEXT(14995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14995(choice, ...) METALANG99_PRIV_REC_NEXT(14996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14996(choice, ...) METALANG99_PRIV_REC_NEXT(14997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14997(choice, ...) METALANG99_PRIV_REC_NEXT(14998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14998(choice, ...) METALANG99_PRIV_REC_NEXT(14999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_14999(choice, ...) METALANG99_PRIV_REC_NEXT(15000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15000(choice, ...) METALANG99_PRIV_REC_NEXT(15001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15001(choice, ...) METALANG99_PRIV_REC_NEXT(15002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15002(choice, ...) METALANG99_PRIV_REC_NEXT(15003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15003(choice, ...) METALANG99_PRIV_REC_NEXT(15004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15004(choice, ...) METALANG99_PRIV_REC_NEXT(15005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15005(choice, ...) METALANG99_PRIV_REC_NEXT(15006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15006(choice, ...) METALANG99_PRIV_REC_NEXT(15007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15007(choice, ...) METALANG99_PRIV_REC_NEXT(15008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15008(choice, ...) METALANG99_PRIV_REC_NEXT(15009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15009(choice, ...) METALANG99_PRIV_REC_NEXT(15010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15010(choice, ...) METALANG99_PRIV_REC_NEXT(15011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15011(choice, ...) METALANG99_PRIV_REC_NEXT(15012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15012(choice, ...) METALANG99_PRIV_REC_NEXT(15013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15013(choice, ...) METALANG99_PRIV_REC_NEXT(15014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15014(choice, ...) METALANG99_PRIV_REC_NEXT(15015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15015(choice, ...) METALANG99_PRIV_REC_NEXT(15016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15016(choice, ...) METALANG99_PRIV_REC_NEXT(15017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15017(choice, ...) METALANG99_PRIV_REC_NEXT(15018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15018(choice, ...) METALANG99_PRIV_REC_NEXT(15019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15019(choice, ...) METALANG99_PRIV_REC_NEXT(15020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15020(choice, ...) METALANG99_PRIV_REC_NEXT(15021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15021(choice, ...) METALANG99_PRIV_REC_NEXT(15022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15022(choice, ...) METALANG99_PRIV_REC_NEXT(15023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15023(choice, ...) METALANG99_PRIV_REC_NEXT(15024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15024(choice, ...) METALANG99_PRIV_REC_NEXT(15025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15025(choice, ...) METALANG99_PRIV_REC_NEXT(15026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15026(choice, ...) METALANG99_PRIV_REC_NEXT(15027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15027(choice, ...) METALANG99_PRIV_REC_NEXT(15028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15028(choice, ...) METALANG99_PRIV_REC_NEXT(15029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15029(choice, ...) METALANG99_PRIV_REC_NEXT(15030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15030(choice, ...) METALANG99_PRIV_REC_NEXT(15031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15031(choice, ...) METALANG99_PRIV_REC_NEXT(15032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15032(choice, ...) METALANG99_PRIV_REC_NEXT(15033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15033(choice, ...) METALANG99_PRIV_REC_NEXT(15034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15034(choice, ...) METALANG99_PRIV_REC_NEXT(15035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15035(choice, ...) METALANG99_PRIV_REC_NEXT(15036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15036(choice, ...) METALANG99_PRIV_REC_NEXT(15037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15037(choice, ...) METALANG99_PRIV_REC_NEXT(15038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15038(choice, ...) METALANG99_PRIV_REC_NEXT(15039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15039(choice, ...) METALANG99_PRIV_REC_NEXT(15040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15040(choice, ...) METALANG99_PRIV_REC_NEXT(15041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15041(choice, ...) METALANG99_PRIV_REC_NEXT(15042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15042(choice, ...) METALANG99_PRIV_REC_NEXT(15043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15043(choice, ...) METALANG99_PRIV_REC_NEXT(15044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15044(choice, ...) METALANG99_PRIV_REC_NEXT(15045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15045(choice, ...) METALANG99_PRIV_REC_NEXT(15046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15046(choice, ...) METALANG99_PRIV_REC_NEXT(15047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15047(choice, ...) METALANG99_PRIV_REC_NEXT(15048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15048(choice, ...) METALANG99_PRIV_REC_NEXT(15049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15049(choice, ...) METALANG99_PRIV_REC_NEXT(15050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15050(choice, ...) METALANG99_PRIV_REC_NEXT(15051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15051(choice, ...) METALANG99_PRIV_REC_NEXT(15052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15052(choice, ...) METALANG99_PRIV_REC_NEXT(15053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15053(choice, ...) METALANG99_PRIV_REC_NEXT(15054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15054(choice, ...) METALANG99_PRIV_REC_NEXT(15055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15055(choice, ...) METALANG99_PRIV_REC_NEXT(15056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15056(choice, ...) METALANG99_PRIV_REC_NEXT(15057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15057(choice, ...) METALANG99_PRIV_REC_NEXT(15058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15058(choice, ...) METALANG99_PRIV_REC_NEXT(15059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15059(choice, ...) METALANG99_PRIV_REC_NEXT(15060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15060(choice, ...) METALANG99_PRIV_REC_NEXT(15061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15061(choice, ...) METALANG99_PRIV_REC_NEXT(15062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15062(choice, ...) METALANG99_PRIV_REC_NEXT(15063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15063(choice, ...) METALANG99_PRIV_REC_NEXT(15064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15064(choice, ...) METALANG99_PRIV_REC_NEXT(15065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15065(choice, ...) METALANG99_PRIV_REC_NEXT(15066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15066(choice, ...) METALANG99_PRIV_REC_NEXT(15067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15067(choice, ...) METALANG99_PRIV_REC_NEXT(15068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15068(choice, ...) METALANG99_PRIV_REC_NEXT(15069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15069(choice, ...) METALANG99_PRIV_REC_NEXT(15070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15070(choice, ...) METALANG99_PRIV_REC_NEXT(15071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15071(choice, ...) METALANG99_PRIV_REC_NEXT(15072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15072(choice, ...) METALANG99_PRIV_REC_NEXT(15073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15073(choice, ...) METALANG99_PRIV_REC_NEXT(15074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15074(choice, ...) METALANG99_PRIV_REC_NEXT(15075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15075(choice, ...) METALANG99_PRIV_REC_NEXT(15076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15076(choice, ...) METALANG99_PRIV_REC_NEXT(15077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15077(choice, ...) METALANG99_PRIV_REC_NEXT(15078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15078(choice, ...) METALANG99_PRIV_REC_NEXT(15079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15079(choice, ...) METALANG99_PRIV_REC_NEXT(15080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15080(choice, ...) METALANG99_PRIV_REC_NEXT(15081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15081(choice, ...) METALANG99_PRIV_REC_NEXT(15082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15082(choice, ...) METALANG99_PRIV_REC_NEXT(15083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15083(choice, ...) METALANG99_PRIV_REC_NEXT(15084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15084(choice, ...) METALANG99_PRIV_REC_NEXT(15085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15085(choice, ...) METALANG99_PRIV_REC_NEXT(15086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15086(choice, ...) METALANG99_PRIV_REC_NEXT(15087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15087(choice, ...) METALANG99_PRIV_REC_NEXT(15088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15088(choice, ...) METALANG99_PRIV_REC_NEXT(15089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15089(choice, ...) METALANG99_PRIV_REC_NEXT(15090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15090(choice, ...) METALANG99_PRIV_REC_NEXT(15091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15091(choice, ...) METALANG99_PRIV_REC_NEXT(15092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15092(choice, ...) METALANG99_PRIV_REC_NEXT(15093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15093(choice, ...) METALANG99_PRIV_REC_NEXT(15094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15094(choice, ...) METALANG99_PRIV_REC_NEXT(15095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15095(choice, ...) METALANG99_PRIV_REC_NEXT(15096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15096(choice, ...) METALANG99_PRIV_REC_NEXT(15097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15097(choice, ...) METALANG99_PRIV_REC_NEXT(15098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15098(choice, ...) METALANG99_PRIV_REC_NEXT(15099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15099(choice, ...) METALANG99_PRIV_REC_NEXT(15100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15100(choice, ...) METALANG99_PRIV_REC_NEXT(15101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15101(choice, ...) METALANG99_PRIV_REC_NEXT(15102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15102(choice, ...) METALANG99_PRIV_REC_NEXT(15103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15103(choice, ...) METALANG99_PRIV_REC_NEXT(15104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15104(choice, ...) METALANG99_PRIV_REC_NEXT(15105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15105(choice, ...) METALANG99_PRIV_REC_NEXT(15106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15106(choice, ...) METALANG99_PRIV_REC_NEXT(15107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15107(choice, ...) METALANG99_PRIV_REC_NEXT(15108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15108(choice, ...) METALANG99_PRIV_REC_NEXT(15109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15109(choice, ...) METALANG99_PRIV_REC_NEXT(15110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15110(choice, ...) METALANG99_PRIV_REC_NEXT(15111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15111(choice, ...) METALANG99_PRIV_REC_NEXT(15112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15112(choice, ...) METALANG99_PRIV_REC_NEXT(15113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15113(choice, ...) METALANG99_PRIV_REC_NEXT(15114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15114(choice, ...) METALANG99_PRIV_REC_NEXT(15115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15115(choice, ...) METALANG99_PRIV_REC_NEXT(15116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15116(choice, ...) METALANG99_PRIV_REC_NEXT(15117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15117(choice, ...) METALANG99_PRIV_REC_NEXT(15118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15118(choice, ...) METALANG99_PRIV_REC_NEXT(15119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15119(choice, ...) METALANG99_PRIV_REC_NEXT(15120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15120(choice, ...) METALANG99_PRIV_REC_NEXT(15121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15121(choice, ...) METALANG99_PRIV_REC_NEXT(15122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15122(choice, ...) METALANG99_PRIV_REC_NEXT(15123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15123(choice, ...) METALANG99_PRIV_REC_NEXT(15124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15124(choice, ...) METALANG99_PRIV_REC_NEXT(15125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15125(choice, ...) METALANG99_PRIV_REC_NEXT(15126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15126(choice, ...) METALANG99_PRIV_REC_NEXT(15127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15127(choice, ...) METALANG99_PRIV_REC_NEXT(15128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15128(choice, ...) METALANG99_PRIV_REC_NEXT(15129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15129(choice, ...) METALANG99_PRIV_REC_NEXT(15130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15130(choice, ...) METALANG99_PRIV_REC_NEXT(15131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15131(choice, ...) METALANG99_PRIV_REC_NEXT(15132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15132(choice, ...) METALANG99_PRIV_REC_NEXT(15133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15133(choice, ...) METALANG99_PRIV_REC_NEXT(15134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15134(choice, ...) METALANG99_PRIV_REC_NEXT(15135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15135(choice, ...) METALANG99_PRIV_REC_NEXT(15136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15136(choice, ...) METALANG99_PRIV_REC_NEXT(15137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15137(choice, ...) METALANG99_PRIV_REC_NEXT(15138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15138(choice, ...) METALANG99_PRIV_REC_NEXT(15139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15139(choice, ...) METALANG99_PRIV_REC_NEXT(15140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15140(choice, ...) METALANG99_PRIV_REC_NEXT(15141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15141(choice, ...) METALANG99_PRIV_REC_NEXT(15142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15142(choice, ...) METALANG99_PRIV_REC_NEXT(15143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15143(choice, ...) METALANG99_PRIV_REC_NEXT(15144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15144(choice, ...) METALANG99_PRIV_REC_NEXT(15145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15145(choice, ...) METALANG99_PRIV_REC_NEXT(15146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15146(choice, ...) METALANG99_PRIV_REC_NEXT(15147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15147(choice, ...) METALANG99_PRIV_REC_NEXT(15148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15148(choice, ...) METALANG99_PRIV_REC_NEXT(15149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15149(choice, ...) METALANG99_PRIV_REC_NEXT(15150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15150(choice, ...) METALANG99_PRIV_REC_NEXT(15151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15151(choice, ...) METALANG99_PRIV_REC_NEXT(15152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15152(choice, ...) METALANG99_PRIV_REC_NEXT(15153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15153(choice, ...) METALANG99_PRIV_REC_NEXT(15154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15154(choice, ...) METALANG99_PRIV_REC_NEXT(15155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15155(choice, ...) METALANG99_PRIV_REC_NEXT(15156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15156(choice, ...) METALANG99_PRIV_REC_NEXT(15157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15157(choice, ...) METALANG99_PRIV_REC_NEXT(15158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15158(choice, ...) METALANG99_PRIV_REC_NEXT(15159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15159(choice, ...) METALANG99_PRIV_REC_NEXT(15160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15160(choice, ...) METALANG99_PRIV_REC_NEXT(15161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15161(choice, ...) METALANG99_PRIV_REC_NEXT(15162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15162(choice, ...) METALANG99_PRIV_REC_NEXT(15163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15163(choice, ...) METALANG99_PRIV_REC_NEXT(15164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15164(choice, ...) METALANG99_PRIV_REC_NEXT(15165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15165(choice, ...) METALANG99_PRIV_REC_NEXT(15166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15166(choice, ...) METALANG99_PRIV_REC_NEXT(15167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15167(choice, ...) METALANG99_PRIV_REC_NEXT(15168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15168(choice, ...) METALANG99_PRIV_REC_NEXT(15169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15169(choice, ...) METALANG99_PRIV_REC_NEXT(15170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15170(choice, ...) METALANG99_PRIV_REC_NEXT(15171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15171(choice, ...) METALANG99_PRIV_REC_NEXT(15172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15172(choice, ...) METALANG99_PRIV_REC_NEXT(15173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15173(choice, ...) METALANG99_PRIV_REC_NEXT(15174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15174(choice, ...) METALANG99_PRIV_REC_NEXT(15175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15175(choice, ...) METALANG99_PRIV_REC_NEXT(15176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15176(choice, ...) METALANG99_PRIV_REC_NEXT(15177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15177(choice, ...) METALANG99_PRIV_REC_NEXT(15178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15178(choice, ...) METALANG99_PRIV_REC_NEXT(15179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15179(choice, ...) METALANG99_PRIV_REC_NEXT(15180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15180(choice, ...) METALANG99_PRIV_REC_NEXT(15181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15181(choice, ...) METALANG99_PRIV_REC_NEXT(15182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15182(choice, ...) METALANG99_PRIV_REC_NEXT(15183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15183(choice, ...) METALANG99_PRIV_REC_NEXT(15184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15184(choice, ...) METALANG99_PRIV_REC_NEXT(15185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15185(choice, ...) METALANG99_PRIV_REC_NEXT(15186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15186(choice, ...) METALANG99_PRIV_REC_NEXT(15187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15187(choice, ...) METALANG99_PRIV_REC_NEXT(15188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15188(choice, ...) METALANG99_PRIV_REC_NEXT(15189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15189(choice, ...) METALANG99_PRIV_REC_NEXT(15190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15190(choice, ...) METALANG99_PRIV_REC_NEXT(15191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15191(choice, ...) METALANG99_PRIV_REC_NEXT(15192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15192(choice, ...) METALANG99_PRIV_REC_NEXT(15193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15193(choice, ...) METALANG99_PRIV_REC_NEXT(15194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15194(choice, ...) METALANG99_PRIV_REC_NEXT(15195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15195(choice, ...) METALANG99_PRIV_REC_NEXT(15196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15196(choice, ...) METALANG99_PRIV_REC_NEXT(15197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15197(choice, ...) METALANG99_PRIV_REC_NEXT(15198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15198(choice, ...) METALANG99_PRIV_REC_NEXT(15199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15199(choice, ...) METALANG99_PRIV_REC_NEXT(15200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15200(choice, ...) METALANG99_PRIV_REC_NEXT(15201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15201(choice, ...) METALANG99_PRIV_REC_NEXT(15202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15202(choice, ...) METALANG99_PRIV_REC_NEXT(15203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15203(choice, ...) METALANG99_PRIV_REC_NEXT(15204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15204(choice, ...) METALANG99_PRIV_REC_NEXT(15205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15205(choice, ...) METALANG99_PRIV_REC_NEXT(15206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15206(choice, ...) METALANG99_PRIV_REC_NEXT(15207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15207(choice, ...) METALANG99_PRIV_REC_NEXT(15208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15208(choice, ...) METALANG99_PRIV_REC_NEXT(15209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15209(choice, ...) METALANG99_PRIV_REC_NEXT(15210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15210(choice, ...) METALANG99_PRIV_REC_NEXT(15211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15211(choice, ...) METALANG99_PRIV_REC_NEXT(15212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15212(choice, ...) METALANG99_PRIV_REC_NEXT(15213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15213(choice, ...) METALANG99_PRIV_REC_NEXT(15214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15214(choice, ...) METALANG99_PRIV_REC_NEXT(15215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15215(choice, ...) METALANG99_PRIV_REC_NEXT(15216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15216(choice, ...) METALANG99_PRIV_REC_NEXT(15217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15217(choice, ...) METALANG99_PRIV_REC_NEXT(15218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15218(choice, ...) METALANG99_PRIV_REC_NEXT(15219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15219(choice, ...) METALANG99_PRIV_REC_NEXT(15220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15220(choice, ...) METALANG99_PRIV_REC_NEXT(15221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15221(choice, ...) METALANG99_PRIV_REC_NEXT(15222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15222(choice, ...) METALANG99_PRIV_REC_NEXT(15223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15223(choice, ...) METALANG99_PRIV_REC_NEXT(15224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15224(choice, ...) METALANG99_PRIV_REC_NEXT(15225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15225(choice, ...) METALANG99_PRIV_REC_NEXT(15226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15226(choice, ...) METALANG99_PRIV_REC_NEXT(15227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15227(choice, ...) METALANG99_PRIV_REC_NEXT(15228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15228(choice, ...) METALANG99_PRIV_REC_NEXT(15229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15229(choice, ...) METALANG99_PRIV_REC_NEXT(15230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15230(choice, ...) METALANG99_PRIV_REC_NEXT(15231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15231(choice, ...) METALANG99_PRIV_REC_NEXT(15232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15232(choice, ...) METALANG99_PRIV_REC_NEXT(15233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15233(choice, ...) METALANG99_PRIV_REC_NEXT(15234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15234(choice, ...) METALANG99_PRIV_REC_NEXT(15235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15235(choice, ...) METALANG99_PRIV_REC_NEXT(15236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15236(choice, ...) METALANG99_PRIV_REC_NEXT(15237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15237(choice, ...) METALANG99_PRIV_REC_NEXT(15238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15238(choice, ...) METALANG99_PRIV_REC_NEXT(15239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15239(choice, ...) METALANG99_PRIV_REC_NEXT(15240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15240(choice, ...) METALANG99_PRIV_REC_NEXT(15241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15241(choice, ...) METALANG99_PRIV_REC_NEXT(15242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15242(choice, ...) METALANG99_PRIV_REC_NEXT(15243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15243(choice, ...) METALANG99_PRIV_REC_NEXT(15244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15244(choice, ...) METALANG99_PRIV_REC_NEXT(15245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15245(choice, ...) METALANG99_PRIV_REC_NEXT(15246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15246(choice, ...) METALANG99_PRIV_REC_NEXT(15247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15247(choice, ...) METALANG99_PRIV_REC_NEXT(15248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15248(choice, ...) METALANG99_PRIV_REC_NEXT(15249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15249(choice, ...) METALANG99_PRIV_REC_NEXT(15250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15250(choice, ...) METALANG99_PRIV_REC_NEXT(15251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15251(choice, ...) METALANG99_PRIV_REC_NEXT(15252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15252(choice, ...) METALANG99_PRIV_REC_NEXT(15253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15253(choice, ...) METALANG99_PRIV_REC_NEXT(15254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15254(choice, ...) METALANG99_PRIV_REC_NEXT(15255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15255(choice, ...) METALANG99_PRIV_REC_NEXT(15256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15256(choice, ...) METALANG99_PRIV_REC_NEXT(15257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15257(choice, ...) METALANG99_PRIV_REC_NEXT(15258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15258(choice, ...) METALANG99_PRIV_REC_NEXT(15259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15259(choice, ...) METALANG99_PRIV_REC_NEXT(15260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15260(choice, ...) METALANG99_PRIV_REC_NEXT(15261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15261(choice, ...) METALANG99_PRIV_REC_NEXT(15262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15262(choice, ...) METALANG99_PRIV_REC_NEXT(15263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15263(choice, ...) METALANG99_PRIV_REC_NEXT(15264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15264(choice, ...) METALANG99_PRIV_REC_NEXT(15265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15265(choice, ...) METALANG99_PRIV_REC_NEXT(15266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15266(choice, ...) METALANG99_PRIV_REC_NEXT(15267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15267(choice, ...) METALANG99_PRIV_REC_NEXT(15268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15268(choice, ...) METALANG99_PRIV_REC_NEXT(15269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15269(choice, ...) METALANG99_PRIV_REC_NEXT(15270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15270(choice, ...) METALANG99_PRIV_REC_NEXT(15271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15271(choice, ...) METALANG99_PRIV_REC_NEXT(15272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15272(choice, ...) METALANG99_PRIV_REC_NEXT(15273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15273(choice, ...) METALANG99_PRIV_REC_NEXT(15274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15274(choice, ...) METALANG99_PRIV_REC_NEXT(15275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15275(choice, ...) METALANG99_PRIV_REC_NEXT(15276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15276(choice, ...) METALANG99_PRIV_REC_NEXT(15277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15277(choice, ...) METALANG99_PRIV_REC_NEXT(15278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15278(choice, ...) METALANG99_PRIV_REC_NEXT(15279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15279(choice, ...) METALANG99_PRIV_REC_NEXT(15280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15280(choice, ...) METALANG99_PRIV_REC_NEXT(15281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15281(choice, ...) METALANG99_PRIV_REC_NEXT(15282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15282(choice, ...) METALANG99_PRIV_REC_NEXT(15283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15283(choice, ...) METALANG99_PRIV_REC_NEXT(15284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15284(choice, ...) METALANG99_PRIV_REC_NEXT(15285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15285(choice, ...) METALANG99_PRIV_REC_NEXT(15286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15286(choice, ...) METALANG99_PRIV_REC_NEXT(15287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15287(choice, ...) METALANG99_PRIV_REC_NEXT(15288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15288(choice, ...) METALANG99_PRIV_REC_NEXT(15289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15289(choice, ...) METALANG99_PRIV_REC_NEXT(15290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15290(choice, ...) METALANG99_PRIV_REC_NEXT(15291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15291(choice, ...) METALANG99_PRIV_REC_NEXT(15292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15292(choice, ...) METALANG99_PRIV_REC_NEXT(15293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15293(choice, ...) METALANG99_PRIV_REC_NEXT(15294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15294(choice, ...) METALANG99_PRIV_REC_NEXT(15295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15295(choice, ...) METALANG99_PRIV_REC_NEXT(15296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15296(choice, ...) METALANG99_PRIV_REC_NEXT(15297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15297(choice, ...) METALANG99_PRIV_REC_NEXT(15298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15298(choice, ...) METALANG99_PRIV_REC_NEXT(15299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15299(choice, ...) METALANG99_PRIV_REC_NEXT(15300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15300(choice, ...) METALANG99_PRIV_REC_NEXT(15301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15301(choice, ...) METALANG99_PRIV_REC_NEXT(15302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15302(choice, ...) METALANG99_PRIV_REC_NEXT(15303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15303(choice, ...) METALANG99_PRIV_REC_NEXT(15304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15304(choice, ...) METALANG99_PRIV_REC_NEXT(15305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15305(choice, ...) METALANG99_PRIV_REC_NEXT(15306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15306(choice, ...) METALANG99_PRIV_REC_NEXT(15307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15307(choice, ...) METALANG99_PRIV_REC_NEXT(15308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15308(choice, ...) METALANG99_PRIV_REC_NEXT(15309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15309(choice, ...) METALANG99_PRIV_REC_NEXT(15310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15310(choice, ...) METALANG99_PRIV_REC_NEXT(15311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15311(choice, ...) METALANG99_PRIV_REC_NEXT(15312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15312(choice, ...) METALANG99_PRIV_REC_NEXT(15313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15313(choice, ...) METALANG99_PRIV_REC_NEXT(15314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15314(choice, ...) METALANG99_PRIV_REC_NEXT(15315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15315(choice, ...) METALANG99_PRIV_REC_NEXT(15316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15316(choice, ...) METALANG99_PRIV_REC_NEXT(15317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15317(choice, ...) METALANG99_PRIV_REC_NEXT(15318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15318(choice, ...) METALANG99_PRIV_REC_NEXT(15319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15319(choice, ...) METALANG99_PRIV_REC_NEXT(15320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15320(choice, ...) METALANG99_PRIV_REC_NEXT(15321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15321(choice, ...) METALANG99_PRIV_REC_NEXT(15322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15322(choice, ...) METALANG99_PRIV_REC_NEXT(15323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15323(choice, ...) METALANG99_PRIV_REC_NEXT(15324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15324(choice, ...) METALANG99_PRIV_REC_NEXT(15325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15325(choice, ...) METALANG99_PRIV_REC_NEXT(15326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15326(choice, ...) METALANG99_PRIV_REC_NEXT(15327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15327(choice, ...) METALANG99_PRIV_REC_NEXT(15328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15328(choice, ...) METALANG99_PRIV_REC_NEXT(15329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15329(choice, ...) METALANG99_PRIV_REC_NEXT(15330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15330(choice, ...) METALANG99_PRIV_REC_NEXT(15331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15331(choice, ...) METALANG99_PRIV_REC_NEXT(15332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15332(choice, ...) METALANG99_PRIV_REC_NEXT(15333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15333(choice, ...) METALANG99_PRIV_REC_NEXT(15334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15334(choice, ...) METALANG99_PRIV_REC_NEXT(15335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15335(choice, ...) METALANG99_PRIV_REC_NEXT(15336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15336(choice, ...) METALANG99_PRIV_REC_NEXT(15337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15337(choice, ...) METALANG99_PRIV_REC_NEXT(15338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15338(choice, ...) METALANG99_PRIV_REC_NEXT(15339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15339(choice, ...) METALANG99_PRIV_REC_NEXT(15340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15340(choice, ...) METALANG99_PRIV_REC_NEXT(15341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15341(choice, ...) METALANG99_PRIV_REC_NEXT(15342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15342(choice, ...) METALANG99_PRIV_REC_NEXT(15343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15343(choice, ...) METALANG99_PRIV_REC_NEXT(15344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15344(choice, ...) METALANG99_PRIV_REC_NEXT(15345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15345(choice, ...) METALANG99_PRIV_REC_NEXT(15346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15346(choice, ...) METALANG99_PRIV_REC_NEXT(15347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15347(choice, ...) METALANG99_PRIV_REC_NEXT(15348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15348(choice, ...) METALANG99_PRIV_REC_NEXT(15349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15349(choice, ...) METALANG99_PRIV_REC_NEXT(15350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15350(choice, ...) METALANG99_PRIV_REC_NEXT(15351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15351(choice, ...) METALANG99_PRIV_REC_NEXT(15352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15352(choice, ...) METALANG99_PRIV_REC_NEXT(15353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15353(choice, ...) METALANG99_PRIV_REC_NEXT(15354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15354(choice, ...) METALANG99_PRIV_REC_NEXT(15355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15355(choice, ...) METALANG99_PRIV_REC_NEXT(15356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15356(choice, ...) METALANG99_PRIV_REC_NEXT(15357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15357(choice, ...) METALANG99_PRIV_REC_NEXT(15358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15358(choice, ...) METALANG99_PRIV_REC_NEXT(15359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15359(choice, ...) METALANG99_PRIV_REC_NEXT(15360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15360(choice, ...) METALANG99_PRIV_REC_NEXT(15361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15361(choice, ...) METALANG99_PRIV_REC_NEXT(15362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15362(choice, ...) METALANG99_PRIV_REC_NEXT(15363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15363(choice, ...) METALANG99_PRIV_REC_NEXT(15364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15364(choice, ...) METALANG99_PRIV_REC_NEXT(15365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15365(choice, ...) METALANG99_PRIV_REC_NEXT(15366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15366(choice, ...) METALANG99_PRIV_REC_NEXT(15367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15367(choice, ...) METALANG99_PRIV_REC_NEXT(15368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15368(choice, ...) METALANG99_PRIV_REC_NEXT(15369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15369(choice, ...) METALANG99_PRIV_REC_NEXT(15370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15370(choice, ...) METALANG99_PRIV_REC_NEXT(15371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15371(choice, ...) METALANG99_PRIV_REC_NEXT(15372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15372(choice, ...) METALANG99_PRIV_REC_NEXT(15373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15373(choice, ...) METALANG99_PRIV_REC_NEXT(15374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15374(choice, ...) METALANG99_PRIV_REC_NEXT(15375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15375(choice, ...) METALANG99_PRIV_REC_NEXT(15376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15376(choice, ...) METALANG99_PRIV_REC_NEXT(15377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15377(choice, ...) METALANG99_PRIV_REC_NEXT(15378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15378(choice, ...) METALANG99_PRIV_REC_NEXT(15379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15379(choice, ...) METALANG99_PRIV_REC_NEXT(15380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15380(choice, ...) METALANG99_PRIV_REC_NEXT(15381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15381(choice, ...) METALANG99_PRIV_REC_NEXT(15382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15382(choice, ...) METALANG99_PRIV_REC_NEXT(15383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15383(choice, ...) METALANG99_PRIV_REC_NEXT(15384, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15384(choice, ...) METALANG99_PRIV_REC_NEXT(15385, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15385(choice, ...) METALANG99_PRIV_REC_NEXT(15386, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15386(choice, ...) METALANG99_PRIV_REC_NEXT(15387, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15387(choice, ...) METALANG99_PRIV_REC_NEXT(15388, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15388(choice, ...) METALANG99_PRIV_REC_NEXT(15389, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15389(choice, ...) METALANG99_PRIV_REC_NEXT(15390, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15390(choice, ...) METALANG99_PRIV_REC_NEXT(15391, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15391(choice, ...) METALANG99_PRIV_REC_NEXT(15392, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15392(choice, ...) METALANG99_PRIV_REC_NEXT(15393, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15393(choice, ...) METALANG99_PRIV_REC_NEXT(15394, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15394(choice, ...) METALANG99_PRIV_REC_NEXT(15395, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15395(choice, ...) METALANG99_PRIV_REC_NEXT(15396, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15396(choice, ...) METALANG99_PRIV_REC_NEXT(15397, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15397(choice, ...) METALANG99_PRIV_REC_NEXT(15398, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15398(choice, ...) METALANG99_PRIV_REC_NEXT(15399, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15399(choice, ...) METALANG99_PRIV_REC_NEXT(15400, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15400(choice, ...) METALANG99_PRIV_REC_NEXT(15401, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15401(choice, ...) METALANG99_PRIV_REC_NEXT(15402, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15402(choice, ...) METALANG99_PRIV_REC_NEXT(15403, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15403(choice, ...) METALANG99_PRIV_REC_NEXT(15404, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15404(choice, ...) METALANG99_PRIV_REC_NEXT(15405, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15405(choice, ...) METALANG99_PRIV_REC_NEXT(15406, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15406(choice, ...) METALANG99_PRIV_REC_NEXT(15407, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15407(choice, ...) METALANG99_PRIV_REC_NEXT(15408, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15408(choice, ...) METALANG99_PRIV_REC_NEXT(15409, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15409(choice, ...) METALANG99_PRIV_REC_NEXT(15410, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15410(choice, ...) METALANG99_PRIV_REC_NEXT(15411, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15411(choice, ...) METALANG99_PRIV_REC_NEXT(15412, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15412(choice, ...) METALANG99_PRIV_REC_NEXT(15413, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15413(choice, ...) METALANG99_PRIV_REC_NEXT(15414, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15414(choice, ...) METALANG99_PRIV_REC_NEXT(15415, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15415(choice, ...) METALANG99_PRIV_REC_NEXT(15416, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15416(choice, ...) METALANG99_PRIV_REC_NEXT(15417, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15417(choice, ...) METALANG99_PRIV_REC_NEXT(15418, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15418(choice, ...) METALANG99_PRIV_REC_NEXT(15419, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15419(choice, ...) METALANG99_PRIV_REC_NEXT(15420, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15420(choice, ...) METALANG99_PRIV_REC_NEXT(15421, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15421(choice, ...) METALANG99_PRIV_REC_NEXT(15422, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15422(choice, ...) METALANG99_PRIV_REC_NEXT(15423, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15423(choice, ...) METALANG99_PRIV_REC_NEXT(15424, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15424(choice, ...) METALANG99_PRIV_REC_NEXT(15425, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15425(choice, ...) METALANG99_PRIV_REC_NEXT(15426, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15426(choice, ...) METALANG99_PRIV_REC_NEXT(15427, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15427(choice, ...) METALANG99_PRIV_REC_NEXT(15428, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15428(choice, ...) METALANG99_PRIV_REC_NEXT(15429, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15429(choice, ...) METALANG99_PRIV_REC_NEXT(15430, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15430(choice, ...) METALANG99_PRIV_REC_NEXT(15431, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15431(choice, ...) METALANG99_PRIV_REC_NEXT(15432, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15432(choice, ...) METALANG99_PRIV_REC_NEXT(15433, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15433(choice, ...) METALANG99_PRIV_REC_NEXT(15434, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15434(choice, ...) METALANG99_PRIV_REC_NEXT(15435, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15435(choice, ...) METALANG99_PRIV_REC_NEXT(15436, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15436(choice, ...) METALANG99_PRIV_REC_NEXT(15437, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15437(choice, ...) METALANG99_PRIV_REC_NEXT(15438, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15438(choice, ...) METALANG99_PRIV_REC_NEXT(15439, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15439(choice, ...) METALANG99_PRIV_REC_NEXT(15440, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15440(choice, ...) METALANG99_PRIV_REC_NEXT(15441, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15441(choice, ...) METALANG99_PRIV_REC_NEXT(15442, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15442(choice, ...) METALANG99_PRIV_REC_NEXT(15443, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15443(choice, ...) METALANG99_PRIV_REC_NEXT(15444, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15444(choice, ...) METALANG99_PRIV_REC_NEXT(15445, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15445(choice, ...) METALANG99_PRIV_REC_NEXT(15446, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15446(choice, ...) METALANG99_PRIV_REC_NEXT(15447, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15447(choice, ...) METALANG99_PRIV_REC_NEXT(15448, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15448(choice, ...) METALANG99_PRIV_REC_NEXT(15449, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15449(choice, ...) METALANG99_PRIV_REC_NEXT(15450, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15450(choice, ...) METALANG99_PRIV_REC_NEXT(15451, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15451(choice, ...) METALANG99_PRIV_REC_NEXT(15452, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15452(choice, ...) METALANG99_PRIV_REC_NEXT(15453, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15453(choice, ...) METALANG99_PRIV_REC_NEXT(15454, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15454(choice, ...) METALANG99_PRIV_REC_NEXT(15455, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15455(choice, ...) METALANG99_PRIV_REC_NEXT(15456, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15456(choice, ...) METALANG99_PRIV_REC_NEXT(15457, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15457(choice, ...) METALANG99_PRIV_REC_NEXT(15458, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15458(choice, ...) METALANG99_PRIV_REC_NEXT(15459, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15459(choice, ...) METALANG99_PRIV_REC_NEXT(15460, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15460(choice, ...) METALANG99_PRIV_REC_NEXT(15461, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15461(choice, ...) METALANG99_PRIV_REC_NEXT(15462, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15462(choice, ...) METALANG99_PRIV_REC_NEXT(15463, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15463(choice, ...) METALANG99_PRIV_REC_NEXT(15464, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15464(choice, ...) METALANG99_PRIV_REC_NEXT(15465, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15465(choice, ...) METALANG99_PRIV_REC_NEXT(15466, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15466(choice, ...) METALANG99_PRIV_REC_NEXT(15467, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15467(choice, ...) METALANG99_PRIV_REC_NEXT(15468, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15468(choice, ...) METALANG99_PRIV_REC_NEXT(15469, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15469(choice, ...) METALANG99_PRIV_REC_NEXT(15470, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15470(choice, ...) METALANG99_PRIV_REC_NEXT(15471, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15471(choice, ...) METALANG99_PRIV_REC_NEXT(15472, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15472(choice, ...) METALANG99_PRIV_REC_NEXT(15473, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15473(choice, ...) METALANG99_PRIV_REC_NEXT(15474, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15474(choice, ...) METALANG99_PRIV_REC_NEXT(15475, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15475(choice, ...) METALANG99_PRIV_REC_NEXT(15476, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15476(choice, ...) METALANG99_PRIV_REC_NEXT(15477, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15477(choice, ...) METALANG99_PRIV_REC_NEXT(15478, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15478(choice, ...) METALANG99_PRIV_REC_NEXT(15479, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15479(choice, ...) METALANG99_PRIV_REC_NEXT(15480, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15480(choice, ...) METALANG99_PRIV_REC_NEXT(15481, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15481(choice, ...) METALANG99_PRIV_REC_NEXT(15482, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15482(choice, ...) METALANG99_PRIV_REC_NEXT(15483, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15483(choice, ...) METALANG99_PRIV_REC_NEXT(15484, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15484(choice, ...) METALANG99_PRIV_REC_NEXT(15485, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15485(choice, ...) METALANG99_PRIV_REC_NEXT(15486, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15486(choice, ...) METALANG99_PRIV_REC_NEXT(15487, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15487(choice, ...) METALANG99_PRIV_REC_NEXT(15488, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15488(choice, ...) METALANG99_PRIV_REC_NEXT(15489, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15489(choice, ...) METALANG99_PRIV_REC_NEXT(15490, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15490(choice, ...) METALANG99_PRIV_REC_NEXT(15491, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15491(choice, ...) METALANG99_PRIV_REC_NEXT(15492, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15492(choice, ...) METALANG99_PRIV_REC_NEXT(15493, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15493(choice, ...) METALANG99_PRIV_REC_NEXT(15494, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15494(choice, ...) METALANG99_PRIV_REC_NEXT(15495, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15495(choice, ...) METALANG99_PRIV_REC_NEXT(15496, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15496(choice, ...) METALANG99_PRIV_REC_NEXT(15497, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15497(choice, ...) METALANG99_PRIV_REC_NEXT(15498, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15498(choice, ...) METALANG99_PRIV_REC_NEXT(15499, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15499(choice, ...) METALANG99_PRIV_REC_NEXT(15500, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15500(choice, ...) METALANG99_PRIV_REC_NEXT(15501, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15501(choice, ...) METALANG99_PRIV_REC_NEXT(15502, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15502(choice, ...) METALANG99_PRIV_REC_NEXT(15503, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15503(choice, ...) METALANG99_PRIV_REC_NEXT(15504, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15504(choice, ...) METALANG99_PRIV_REC_NEXT(15505, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15505(choice, ...) METALANG99_PRIV_REC_NEXT(15506, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15506(choice, ...) METALANG99_PRIV_REC_NEXT(15507, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15507(choice, ...) METALANG99_PRIV_REC_NEXT(15508, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15508(choice, ...) METALANG99_PRIV_REC_NEXT(15509, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15509(choice, ...) METALANG99_PRIV_REC_NEXT(15510, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15510(choice, ...) METALANG99_PRIV_REC_NEXT(15511, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15511(choice, ...) METALANG99_PRIV_REC_NEXT(15512, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15512(choice, ...) METALANG99_PRIV_REC_NEXT(15513, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15513(choice, ...) METALANG99_PRIV_REC_NEXT(15514, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15514(choice, ...) METALANG99_PRIV_REC_NEXT(15515, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15515(choice, ...) METALANG99_PRIV_REC_NEXT(15516, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15516(choice, ...) METALANG99_PRIV_REC_NEXT(15517, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15517(choice, ...) METALANG99_PRIV_REC_NEXT(15518, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15518(choice, ...) METALANG99_PRIV_REC_NEXT(15519, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15519(choice, ...) METALANG99_PRIV_REC_NEXT(15520, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15520(choice, ...) METALANG99_PRIV_REC_NEXT(15521, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15521(choice, ...) METALANG99_PRIV_REC_NEXT(15522, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15522(choice, ...) METALANG99_PRIV_REC_NEXT(15523, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15523(choice, ...) METALANG99_PRIV_REC_NEXT(15524, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15524(choice, ...) METALANG99_PRIV_REC_NEXT(15525, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15525(choice, ...) METALANG99_PRIV_REC_NEXT(15526, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15526(choice, ...) METALANG99_PRIV_REC_NEXT(15527, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15527(choice, ...) METALANG99_PRIV_REC_NEXT(15528, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15528(choice, ...) METALANG99_PRIV_REC_NEXT(15529, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15529(choice, ...) METALANG99_PRIV_REC_NEXT(15530, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15530(choice, ...) METALANG99_PRIV_REC_NEXT(15531, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15531(choice, ...) METALANG99_PRIV_REC_NEXT(15532, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15532(choice, ...) METALANG99_PRIV_REC_NEXT(15533, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15533(choice, ...) METALANG99_PRIV_REC_NEXT(15534, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15534(choice, ...) METALANG99_PRIV_REC_NEXT(15535, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15535(choice, ...) METALANG99_PRIV_REC_NEXT(15536, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15536(choice, ...) METALANG99_PRIV_REC_NEXT(15537, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15537(choice, ...) METALANG99_PRIV_REC_NEXT(15538, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15538(choice, ...) METALANG99_PRIV_REC_NEXT(15539, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15539(choice, ...) METALANG99_PRIV_REC_NEXT(15540, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15540(choice, ...) METALANG99_PRIV_REC_NEXT(15541, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15541(choice, ...) METALANG99_PRIV_REC_NEXT(15542, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15542(choice, ...) METALANG99_PRIV_REC_NEXT(15543, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15543(choice, ...) METALANG99_PRIV_REC_NEXT(15544, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15544(choice, ...) METALANG99_PRIV_REC_NEXT(15545, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15545(choice, ...) METALANG99_PRIV_REC_NEXT(15546, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15546(choice, ...) METALANG99_PRIV_REC_NEXT(15547, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15547(choice, ...) METALANG99_PRIV_REC_NEXT(15548, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15548(choice, ...) METALANG99_PRIV_REC_NEXT(15549, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15549(choice, ...) METALANG99_PRIV_REC_NEXT(15550, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15550(choice, ...) METALANG99_PRIV_REC_NEXT(15551, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15551(choice, ...) METALANG99_PRIV_REC_NEXT(15552, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15552(choice, ...) METALANG99_PRIV_REC_NEXT(15553, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15553(choice, ...) METALANG99_PRIV_REC_NEXT(15554, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15554(choice, ...) METALANG99_PRIV_REC_NEXT(15555, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15555(choice, ...) METALANG99_PRIV_REC_NEXT(15556, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15556(choice, ...) METALANG99_PRIV_REC_NEXT(15557, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15557(choice, ...) METALANG99_PRIV_REC_NEXT(15558, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15558(choice, ...) METALANG99_PRIV_REC_NEXT(15559, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15559(choice, ...) METALANG99_PRIV_REC_NEXT(15560, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15560(choice, ...) METALANG99_PRIV_REC_NEXT(15561, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15561(choice, ...) METALANG99_PRIV_REC_NEXT(15562, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15562(choice, ...) METALANG99_PRIV_REC_NEXT(15563, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15563(choice, ...) METALANG99_PRIV_REC_NEXT(15564, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15564(choice, ...) METALANG99_PRIV_REC_NEXT(15565, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15565(choice, ...) METALANG99_PRIV_REC_NEXT(15566, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15566(choice, ...) METALANG99_PRIV_REC_NEXT(15567, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15567(choice, ...) METALANG99_PRIV_REC_NEXT(15568, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15568(choice, ...) METALANG99_PRIV_REC_NEXT(15569, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15569(choice, ...) METALANG99_PRIV_REC_NEXT(15570, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15570(choice, ...) METALANG99_PRIV_REC_NEXT(15571, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15571(choice, ...) METALANG99_PRIV_REC_NEXT(15572, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15572(choice, ...) METALANG99_PRIV_REC_NEXT(15573, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15573(choice, ...) METALANG99_PRIV_REC_NEXT(15574, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15574(choice, ...) METALANG99_PRIV_REC_NEXT(15575, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15575(choice, ...) METALANG99_PRIV_REC_NEXT(15576, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15576(choice, ...) METALANG99_PRIV_REC_NEXT(15577, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15577(choice, ...) METALANG99_PRIV_REC_NEXT(15578, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15578(choice, ...) METALANG99_PRIV_REC_NEXT(15579, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15579(choice, ...) METALANG99_PRIV_REC_NEXT(15580, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15580(choice, ...) METALANG99_PRIV_REC_NEXT(15581, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15581(choice, ...) METALANG99_PRIV_REC_NEXT(15582, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15582(choice, ...) METALANG99_PRIV_REC_NEXT(15583, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15583(choice, ...) METALANG99_PRIV_REC_NEXT(15584, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15584(choice, ...) METALANG99_PRIV_REC_NEXT(15585, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15585(choice, ...) METALANG99_PRIV_REC_NEXT(15586, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15586(choice, ...) METALANG99_PRIV_REC_NEXT(15587, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15587(choice, ...) METALANG99_PRIV_REC_NEXT(15588, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15588(choice, ...) METALANG99_PRIV_REC_NEXT(15589, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15589(choice, ...) METALANG99_PRIV_REC_NEXT(15590, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15590(choice, ...) METALANG99_PRIV_REC_NEXT(15591, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15591(choice, ...) METALANG99_PRIV_REC_NEXT(15592, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15592(choice, ...) METALANG99_PRIV_REC_NEXT(15593, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15593(choice, ...) METALANG99_PRIV_REC_NEXT(15594, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15594(choice, ...) METALANG99_PRIV_REC_NEXT(15595, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15595(choice, ...) METALANG99_PRIV_REC_NEXT(15596, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15596(choice, ...) METALANG99_PRIV_REC_NEXT(15597, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15597(choice, ...) METALANG99_PRIV_REC_NEXT(15598, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15598(choice, ...) METALANG99_PRIV_REC_NEXT(15599, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15599(choice, ...) METALANG99_PRIV_REC_NEXT(15600, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15600(choice, ...) METALANG99_PRIV_REC_NEXT(15601, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15601(choice, ...) METALANG99_PRIV_REC_NEXT(15602, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15602(choice, ...) METALANG99_PRIV_REC_NEXT(15603, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15603(choice, ...) METALANG99_PRIV_REC_NEXT(15604, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15604(choice, ...) METALANG99_PRIV_REC_NEXT(15605, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15605(choice, ...) METALANG99_PRIV_REC_NEXT(15606, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15606(choice, ...) METALANG99_PRIV_REC_NEXT(15607, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15607(choice, ...) METALANG99_PRIV_REC_NEXT(15608, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15608(choice, ...) METALANG99_PRIV_REC_NEXT(15609, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15609(choice, ...) METALANG99_PRIV_REC_NEXT(15610, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15610(choice, ...) METALANG99_PRIV_REC_NEXT(15611, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15611(choice, ...) METALANG99_PRIV_REC_NEXT(15612, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15612(choice, ...) METALANG99_PRIV_REC_NEXT(15613, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15613(choice, ...) METALANG99_PRIV_REC_NEXT(15614, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15614(choice, ...) METALANG99_PRIV_REC_NEXT(15615, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15615(choice, ...) METALANG99_PRIV_REC_NEXT(15616, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15616(choice, ...) METALANG99_PRIV_REC_NEXT(15617, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15617(choice, ...) METALANG99_PRIV_REC_NEXT(15618, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15618(choice, ...) METALANG99_PRIV_REC_NEXT(15619, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15619(choice, ...) METALANG99_PRIV_REC_NEXT(15620, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15620(choice, ...) METALANG99_PRIV_REC_NEXT(15621, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15621(choice, ...) METALANG99_PRIV_REC_NEXT(15622, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15622(choice, ...) METALANG99_PRIV_REC_NEXT(15623, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15623(choice, ...) METALANG99_PRIV_REC_NEXT(15624, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15624(choice, ...) METALANG99_PRIV_REC_NEXT(15625, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15625(choice, ...) METALANG99_PRIV_REC_NEXT(15626, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15626(choice, ...) METALANG99_PRIV_REC_NEXT(15627, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15627(choice, ...) METALANG99_PRIV_REC_NEXT(15628, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15628(choice, ...) METALANG99_PRIV_REC_NEXT(15629, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15629(choice, ...) METALANG99_PRIV_REC_NEXT(15630, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15630(choice, ...) METALANG99_PRIV_REC_NEXT(15631, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15631(choice, ...) METALANG99_PRIV_REC_NEXT(15632, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15632(choice, ...) METALANG99_PRIV_REC_NEXT(15633, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15633(choice, ...) METALANG99_PRIV_REC_NEXT(15634, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15634(choice, ...) METALANG99_PRIV_REC_NEXT(15635, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15635(choice, ...) METALANG99_PRIV_REC_NEXT(15636, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15636(choice, ...) METALANG99_PRIV_REC_NEXT(15637, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15637(choice, ...) METALANG99_PRIV_REC_NEXT(15638, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15638(choice, ...) METALANG99_PRIV_REC_NEXT(15639, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15639(choice, ...) METALANG99_PRIV_REC_NEXT(15640, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15640(choice, ...) METALANG99_PRIV_REC_NEXT(15641, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15641(choice, ...) METALANG99_PRIV_REC_NEXT(15642, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15642(choice, ...) METALANG99_PRIV_REC_NEXT(15643, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15643(choice, ...) METALANG99_PRIV_REC_NEXT(15644, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15644(choice, ...) METALANG99_PRIV_REC_NEXT(15645, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15645(choice, ...) METALANG99_PRIV_REC_NEXT(15646, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15646(choice, ...) METALANG99_PRIV_REC_NEXT(15647, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15647(choice, ...) METALANG99_PRIV_REC_NEXT(15648, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15648(choice, ...) METALANG99_PRIV_REC_NEXT(15649, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15649(choice, ...) METALANG99_PRIV_REC_NEXT(15650, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15650(choice, ...) METALANG99_PRIV_REC_NEXT(15651, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15651(choice, ...) METALANG99_PRIV_REC_NEXT(15652, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15652(choice, ...) METALANG99_PRIV_REC_NEXT(15653, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15653(choice, ...) METALANG99_PRIV_REC_NEXT(15654, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15654(choice, ...) METALANG99_PRIV_REC_NEXT(15655, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15655(choice, ...) METALANG99_PRIV_REC_NEXT(15656, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15656(choice, ...) METALANG99_PRIV_REC_NEXT(15657, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15657(choice, ...) METALANG99_PRIV_REC_NEXT(15658, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15658(choice, ...) METALANG99_PRIV_REC_NEXT(15659, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15659(choice, ...) METALANG99_PRIV_REC_NEXT(15660, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15660(choice, ...) METALANG99_PRIV_REC_NEXT(15661, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15661(choice, ...) METALANG99_PRIV_REC_NEXT(15662, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15662(choice, ...) METALANG99_PRIV_REC_NEXT(15663, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15663(choice, ...) METALANG99_PRIV_REC_NEXT(15664, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15664(choice, ...) METALANG99_PRIV_REC_NEXT(15665, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15665(choice, ...) METALANG99_PRIV_REC_NEXT(15666, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15666(choice, ...) METALANG99_PRIV_REC_NEXT(15667, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15667(choice, ...) METALANG99_PRIV_REC_NEXT(15668, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15668(choice, ...) METALANG99_PRIV_REC_NEXT(15669, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15669(choice, ...) METALANG99_PRIV_REC_NEXT(15670, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15670(choice, ...) METALANG99_PRIV_REC_NEXT(15671, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15671(choice, ...) METALANG99_PRIV_REC_NEXT(15672, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15672(choice, ...) METALANG99_PRIV_REC_NEXT(15673, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15673(choice, ...) METALANG99_PRIV_REC_NEXT(15674, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15674(choice, ...) METALANG99_PRIV_REC_NEXT(15675, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15675(choice, ...) METALANG99_PRIV_REC_NEXT(15676, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15676(choice, ...) METALANG99_PRIV_REC_NEXT(15677, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15677(choice, ...) METALANG99_PRIV_REC_NEXT(15678, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15678(choice, ...) METALANG99_PRIV_REC_NEXT(15679, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15679(choice, ...) METALANG99_PRIV_REC_NEXT(15680, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15680(choice, ...) METALANG99_PRIV_REC_NEXT(15681, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15681(choice, ...) METALANG99_PRIV_REC_NEXT(15682, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15682(choice, ...) METALANG99_PRIV_REC_NEXT(15683, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15683(choice, ...) METALANG99_PRIV_REC_NEXT(15684, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15684(choice, ...) METALANG99_PRIV_REC_NEXT(15685, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15685(choice, ...) METALANG99_PRIV_REC_NEXT(15686, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15686(choice, ...) METALANG99_PRIV_REC_NEXT(15687, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15687(choice, ...) METALANG99_PRIV_REC_NEXT(15688, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15688(choice, ...) METALANG99_PRIV_REC_NEXT(15689, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15689(choice, ...) METALANG99_PRIV_REC_NEXT(15690, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15690(choice, ...) METALANG99_PRIV_REC_NEXT(15691, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15691(choice, ...) METALANG99_PRIV_REC_NEXT(15692, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15692(choice, ...) METALANG99_PRIV_REC_NEXT(15693, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15693(choice, ...) METALANG99_PRIV_REC_NEXT(15694, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15694(choice, ...) METALANG99_PRIV_REC_NEXT(15695, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15695(choice, ...) METALANG99_PRIV_REC_NEXT(15696, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15696(choice, ...) METALANG99_PRIV_REC_NEXT(15697, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15697(choice, ...) METALANG99_PRIV_REC_NEXT(15698, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15698(choice, ...) METALANG99_PRIV_REC_NEXT(15699, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15699(choice, ...) METALANG99_PRIV_REC_NEXT(15700, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15700(choice, ...) METALANG99_PRIV_REC_NEXT(15701, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15701(choice, ...) METALANG99_PRIV_REC_NEXT(15702, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15702(choice, ...) METALANG99_PRIV_REC_NEXT(15703, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15703(choice, ...) METALANG99_PRIV_REC_NEXT(15704, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15704(choice, ...) METALANG99_PRIV_REC_NEXT(15705, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15705(choice, ...) METALANG99_PRIV_REC_NEXT(15706, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15706(choice, ...) METALANG99_PRIV_REC_NEXT(15707, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15707(choice, ...) METALANG99_PRIV_REC_NEXT(15708, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15708(choice, ...) METALANG99_PRIV_REC_NEXT(15709, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15709(choice, ...) METALANG99_PRIV_REC_NEXT(15710, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15710(choice, ...) METALANG99_PRIV_REC_NEXT(15711, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15711(choice, ...) METALANG99_PRIV_REC_NEXT(15712, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15712(choice, ...) METALANG99_PRIV_REC_NEXT(15713, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15713(choice, ...) METALANG99_PRIV_REC_NEXT(15714, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15714(choice, ...) METALANG99_PRIV_REC_NEXT(15715, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15715(choice, ...) METALANG99_PRIV_REC_NEXT(15716, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15716(choice, ...) METALANG99_PRIV_REC_NEXT(15717, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15717(choice, ...) METALANG99_PRIV_REC_NEXT(15718, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15718(choice, ...) METALANG99_PRIV_REC_NEXT(15719, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15719(choice, ...) METALANG99_PRIV_REC_NEXT(15720, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15720(choice, ...) METALANG99_PRIV_REC_NEXT(15721, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15721(choice, ...) METALANG99_PRIV_REC_NEXT(15722, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15722(choice, ...) METALANG99_PRIV_REC_NEXT(15723, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15723(choice, ...) METALANG99_PRIV_REC_NEXT(15724, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15724(choice, ...) METALANG99_PRIV_REC_NEXT(15725, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15725(choice, ...) METALANG99_PRIV_REC_NEXT(15726, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15726(choice, ...) METALANG99_PRIV_REC_NEXT(15727, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15727(choice, ...) METALANG99_PRIV_REC_NEXT(15728, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15728(choice, ...) METALANG99_PRIV_REC_NEXT(15729, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15729(choice, ...) METALANG99_PRIV_REC_NEXT(15730, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15730(choice, ...) METALANG99_PRIV_REC_NEXT(15731, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15731(choice, ...) METALANG99_PRIV_REC_NEXT(15732, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15732(choice, ...) METALANG99_PRIV_REC_NEXT(15733, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15733(choice, ...) METALANG99_PRIV_REC_NEXT(15734, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15734(choice, ...) METALANG99_PRIV_REC_NEXT(15735, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15735(choice, ...) METALANG99_PRIV_REC_NEXT(15736, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15736(choice, ...) METALANG99_PRIV_REC_NEXT(15737, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15737(choice, ...) METALANG99_PRIV_REC_NEXT(15738, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15738(choice, ...) METALANG99_PRIV_REC_NEXT(15739, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15739(choice, ...) METALANG99_PRIV_REC_NEXT(15740, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15740(choice, ...) METALANG99_PRIV_REC_NEXT(15741, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15741(choice, ...) METALANG99_PRIV_REC_NEXT(15742, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15742(choice, ...) METALANG99_PRIV_REC_NEXT(15743, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15743(choice, ...) METALANG99_PRIV_REC_NEXT(15744, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15744(choice, ...) METALANG99_PRIV_REC_NEXT(15745, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15745(choice, ...) METALANG99_PRIV_REC_NEXT(15746, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15746(choice, ...) METALANG99_PRIV_REC_NEXT(15747, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15747(choice, ...) METALANG99_PRIV_REC_NEXT(15748, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15748(choice, ...) METALANG99_PRIV_REC_NEXT(15749, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15749(choice, ...) METALANG99_PRIV_REC_NEXT(15750, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15750(choice, ...) METALANG99_PRIV_REC_NEXT(15751, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15751(choice, ...) METALANG99_PRIV_REC_NEXT(15752, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15752(choice, ...) METALANG99_PRIV_REC_NEXT(15753, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15753(choice, ...) METALANG99_PRIV_REC_NEXT(15754, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15754(choice, ...) METALANG99_PRIV_REC_NEXT(15755, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15755(choice, ...) METALANG99_PRIV_REC_NEXT(15756, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15756(choice, ...) METALANG99_PRIV_REC_NEXT(15757, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15757(choice, ...) METALANG99_PRIV_REC_NEXT(15758, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15758(choice, ...) METALANG99_PRIV_REC_NEXT(15759, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15759(choice, ...) METALANG99_PRIV_REC_NEXT(15760, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15760(choice, ...) METALANG99_PRIV_REC_NEXT(15761, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15761(choice, ...) METALANG99_PRIV_REC_NEXT(15762, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15762(choice, ...) METALANG99_PRIV_REC_NEXT(15763, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15763(choice, ...) METALANG99_PRIV_REC_NEXT(15764, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15764(choice, ...) METALANG99_PRIV_REC_NEXT(15765, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15765(choice, ...) METALANG99_PRIV_REC_NEXT(15766, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15766(choice, ...) METALANG99_PRIV_REC_NEXT(15767, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15767(choice, ...) METALANG99_PRIV_REC_NEXT(15768, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15768(choice, ...) METALANG99_PRIV_REC_NEXT(15769, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15769(choice, ...) METALANG99_PRIV_REC_NEXT(15770, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15770(choice, ...) METALANG99_PRIV_REC_NEXT(15771, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15771(choice, ...) METALANG99_PRIV_REC_NEXT(15772, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15772(choice, ...) METALANG99_PRIV_REC_NEXT(15773, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15773(choice, ...) METALANG99_PRIV_REC_NEXT(15774, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15774(choice, ...) METALANG99_PRIV_REC_NEXT(15775, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15775(choice, ...) METALANG99_PRIV_REC_NEXT(15776, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15776(choice, ...) METALANG99_PRIV_REC_NEXT(15777, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15777(choice, ...) METALANG99_PRIV_REC_NEXT(15778, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15778(choice, ...) METALANG99_PRIV_REC_NEXT(15779, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15779(choice, ...) METALANG99_PRIV_REC_NEXT(15780, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15780(choice, ...) METALANG99_PRIV_REC_NEXT(15781, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15781(choice, ...) METALANG99_PRIV_REC_NEXT(15782, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15782(choice, ...) METALANG99_PRIV_REC_NEXT(15783, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15783(choice, ...) METALANG99_PRIV_REC_NEXT(15784, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15784(choice, ...) METALANG99_PRIV_REC_NEXT(15785, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15785(choice, ...) METALANG99_PRIV_REC_NEXT(15786, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15786(choice, ...) METALANG99_PRIV_REC_NEXT(15787, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15787(choice, ...) METALANG99_PRIV_REC_NEXT(15788, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15788(choice, ...) METALANG99_PRIV_REC_NEXT(15789, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15789(choice, ...) METALANG99_PRIV_REC_NEXT(15790, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15790(choice, ...) METALANG99_PRIV_REC_NEXT(15791, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15791(choice, ...) METALANG99_PRIV_REC_NEXT(15792, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15792(choice, ...) METALANG99_PRIV_REC_NEXT(15793, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15793(choice, ...) METALANG99_PRIV_REC_NEXT(15794, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15794(choice, ...) METALANG99_PRIV_REC_NEXT(15795, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15795(choice, ...) METALANG99_PRIV_REC_NEXT(15796, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15796(choice, ...) METALANG99_PRIV_REC_NEXT(15797, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15797(choice, ...) METALANG99_PRIV_REC_NEXT(15798, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15798(choice, ...) METALANG99_PRIV_REC_NEXT(15799, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15799(choice, ...) METALANG99_PRIV_REC_NEXT(15800, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15800(choice, ...) METALANG99_PRIV_REC_NEXT(15801, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15801(choice, ...) METALANG99_PRIV_REC_NEXT(15802, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15802(choice, ...) METALANG99_PRIV_REC_NEXT(15803, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15803(choice, ...) METALANG99_PRIV_REC_NEXT(15804, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15804(choice, ...) METALANG99_PRIV_REC_NEXT(15805, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15805(choice, ...) METALANG99_PRIV_REC_NEXT(15806, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15806(choice, ...) METALANG99_PRIV_REC_NEXT(15807, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15807(choice, ...) METALANG99_PRIV_REC_NEXT(15808, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15808(choice, ...) METALANG99_PRIV_REC_NEXT(15809, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15809(choice, ...) METALANG99_PRIV_REC_NEXT(15810, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15810(choice, ...) METALANG99_PRIV_REC_NEXT(15811, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15811(choice, ...) METALANG99_PRIV_REC_NEXT(15812, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15812(choice, ...) METALANG99_PRIV_REC_NEXT(15813, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15813(choice, ...) METALANG99_PRIV_REC_NEXT(15814, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15814(choice, ...) METALANG99_PRIV_REC_NEXT(15815, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15815(choice, ...) METALANG99_PRIV_REC_NEXT(15816, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15816(choice, ...) METALANG99_PRIV_REC_NEXT(15817, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15817(choice, ...) METALANG99_PRIV_REC_NEXT(15818, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15818(choice, ...) METALANG99_PRIV_REC_NEXT(15819, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15819(choice, ...) METALANG99_PRIV_REC_NEXT(15820, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15820(choice, ...) METALANG99_PRIV_REC_NEXT(15821, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15821(choice, ...) METALANG99_PRIV_REC_NEXT(15822, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15822(choice, ...) METALANG99_PRIV_REC_NEXT(15823, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15823(choice, ...) METALANG99_PRIV_REC_NEXT(15824, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15824(choice, ...) METALANG99_PRIV_REC_NEXT(15825, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15825(choice, ...) METALANG99_PRIV_REC_NEXT(15826, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15826(choice, ...) METALANG99_PRIV_REC_NEXT(15827, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15827(choice, ...) METALANG99_PRIV_REC_NEXT(15828, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15828(choice, ...) METALANG99_PRIV_REC_NEXT(15829, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15829(choice, ...) METALANG99_PRIV_REC_NEXT(15830, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15830(choice, ...) METALANG99_PRIV_REC_NEXT(15831, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15831(choice, ...) METALANG99_PRIV_REC_NEXT(15832, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15832(choice, ...) METALANG99_PRIV_REC_NEXT(15833, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15833(choice, ...) METALANG99_PRIV_REC_NEXT(15834, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15834(choice, ...) METALANG99_PRIV_REC_NEXT(15835, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15835(choice, ...) METALANG99_PRIV_REC_NEXT(15836, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15836(choice, ...) METALANG99_PRIV_REC_NEXT(15837, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15837(choice, ...) METALANG99_PRIV_REC_NEXT(15838, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15838(choice, ...) METALANG99_PRIV_REC_NEXT(15839, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15839(choice, ...) METALANG99_PRIV_REC_NEXT(15840, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15840(choice, ...) METALANG99_PRIV_REC_NEXT(15841, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15841(choice, ...) METALANG99_PRIV_REC_NEXT(15842, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15842(choice, ...) METALANG99_PRIV_REC_NEXT(15843, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15843(choice, ...) METALANG99_PRIV_REC_NEXT(15844, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15844(choice, ...) METALANG99_PRIV_REC_NEXT(15845, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15845(choice, ...) METALANG99_PRIV_REC_NEXT(15846, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15846(choice, ...) METALANG99_PRIV_REC_NEXT(15847, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15847(choice, ...) METALANG99_PRIV_REC_NEXT(15848, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15848(choice, ...) METALANG99_PRIV_REC_NEXT(15849, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15849(choice, ...) METALANG99_PRIV_REC_NEXT(15850, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15850(choice, ...) METALANG99_PRIV_REC_NEXT(15851, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15851(choice, ...) METALANG99_PRIV_REC_NEXT(15852, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15852(choice, ...) METALANG99_PRIV_REC_NEXT(15853, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15853(choice, ...) METALANG99_PRIV_REC_NEXT(15854, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15854(choice, ...) METALANG99_PRIV_REC_NEXT(15855, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15855(choice, ...) METALANG99_PRIV_REC_NEXT(15856, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15856(choice, ...) METALANG99_PRIV_REC_NEXT(15857, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15857(choice, ...) METALANG99_PRIV_REC_NEXT(15858, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15858(choice, ...) METALANG99_PRIV_REC_NEXT(15859, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15859(choice, ...) METALANG99_PRIV_REC_NEXT(15860, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15860(choice, ...) METALANG99_PRIV_REC_NEXT(15861, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15861(choice, ...) METALANG99_PRIV_REC_NEXT(15862, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15862(choice, ...) METALANG99_PRIV_REC_NEXT(15863, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15863(choice, ...) METALANG99_PRIV_REC_NEXT(15864, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15864(choice, ...) METALANG99_PRIV_REC_NEXT(15865, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15865(choice, ...) METALANG99_PRIV_REC_NEXT(15866, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15866(choice, ...) METALANG99_PRIV_REC_NEXT(15867, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15867(choice, ...) METALANG99_PRIV_REC_NEXT(15868, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15868(choice, ...) METALANG99_PRIV_REC_NEXT(15869, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15869(choice, ...) METALANG99_PRIV_REC_NEXT(15870, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15870(choice, ...) METALANG99_PRIV_REC_NEXT(15871, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15871(choice, ...) METALANG99_PRIV_REC_NEXT(15872, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15872(choice, ...) METALANG99_PRIV_REC_NEXT(15873, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15873(choice, ...) METALANG99_PRIV_REC_NEXT(15874, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15874(choice, ...) METALANG99_PRIV_REC_NEXT(15875, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15875(choice, ...) METALANG99_PRIV_REC_NEXT(15876, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15876(choice, ...) METALANG99_PRIV_REC_NEXT(15877, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15877(choice, ...) METALANG99_PRIV_REC_NEXT(15878, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15878(choice, ...) METALANG99_PRIV_REC_NEXT(15879, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15879(choice, ...) METALANG99_PRIV_REC_NEXT(15880, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15880(choice, ...) METALANG99_PRIV_REC_NEXT(15881, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15881(choice, ...) METALANG99_PRIV_REC_NEXT(15882, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15882(choice, ...) METALANG99_PRIV_REC_NEXT(15883, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15883(choice, ...) METALANG99_PRIV_REC_NEXT(15884, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15884(choice, ...) METALANG99_PRIV_REC_NEXT(15885, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15885(choice, ...) METALANG99_PRIV_REC_NEXT(15886, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15886(choice, ...) METALANG99_PRIV_REC_NEXT(15887, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15887(choice, ...) METALANG99_PRIV_REC_NEXT(15888, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15888(choice, ...) METALANG99_PRIV_REC_NEXT(15889, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15889(choice, ...) METALANG99_PRIV_REC_NEXT(15890, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15890(choice, ...) METALANG99_PRIV_REC_NEXT(15891, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15891(choice, ...) METALANG99_PRIV_REC_NEXT(15892, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15892(choice, ...) METALANG99_PRIV_REC_NEXT(15893, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15893(choice, ...) METALANG99_PRIV_REC_NEXT(15894, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15894(choice, ...) METALANG99_PRIV_REC_NEXT(15895, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15895(choice, ...) METALANG99_PRIV_REC_NEXT(15896, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15896(choice, ...) METALANG99_PRIV_REC_NEXT(15897, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15897(choice, ...) METALANG99_PRIV_REC_NEXT(15898, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15898(choice, ...) METALANG99_PRIV_REC_NEXT(15899, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15899(choice, ...) METALANG99_PRIV_REC_NEXT(15900, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15900(choice, ...) METALANG99_PRIV_REC_NEXT(15901, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15901(choice, ...) METALANG99_PRIV_REC_NEXT(15902, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15902(choice, ...) METALANG99_PRIV_REC_NEXT(15903, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15903(choice, ...) METALANG99_PRIV_REC_NEXT(15904, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15904(choice, ...) METALANG99_PRIV_REC_NEXT(15905, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15905(choice, ...) METALANG99_PRIV_REC_NEXT(15906, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15906(choice, ...) METALANG99_PRIV_REC_NEXT(15907, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15907(choice, ...) METALANG99_PRIV_REC_NEXT(15908, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15908(choice, ...) METALANG99_PRIV_REC_NEXT(15909, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15909(choice, ...) METALANG99_PRIV_REC_NEXT(15910, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15910(choice, ...) METALANG99_PRIV_REC_NEXT(15911, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15911(choice, ...) METALANG99_PRIV_REC_NEXT(15912, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15912(choice, ...) METALANG99_PRIV_REC_NEXT(15913, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15913(choice, ...) METALANG99_PRIV_REC_NEXT(15914, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15914(choice, ...) METALANG99_PRIV_REC_NEXT(15915, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15915(choice, ...) METALANG99_PRIV_REC_NEXT(15916, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15916(choice, ...) METALANG99_PRIV_REC_NEXT(15917, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15917(choice, ...) METALANG99_PRIV_REC_NEXT(15918, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15918(choice, ...) METALANG99_PRIV_REC_NEXT(15919, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15919(choice, ...) METALANG99_PRIV_REC_NEXT(15920, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15920(choice, ...) METALANG99_PRIV_REC_NEXT(15921, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15921(choice, ...) METALANG99_PRIV_REC_NEXT(15922, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15922(choice, ...) METALANG99_PRIV_REC_NEXT(15923, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15923(choice, ...) METALANG99_PRIV_REC_NEXT(15924, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15924(choice, ...) METALANG99_PRIV_REC_NEXT(15925, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15925(choice, ...) METALANG99_PRIV_REC_NEXT(15926, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15926(choice, ...) METALANG99_PRIV_REC_NEXT(15927, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15927(choice, ...) METALANG99_PRIV_REC_NEXT(15928, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15928(choice, ...) METALANG99_PRIV_REC_NEXT(15929, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15929(choice, ...) METALANG99_PRIV_REC_NEXT(15930, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15930(choice, ...) METALANG99_PRIV_REC_NEXT(15931, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15931(choice, ...) METALANG99_PRIV_REC_NEXT(15932, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15932(choice, ...) METALANG99_PRIV_REC_NEXT(15933, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15933(choice, ...) METALANG99_PRIV_REC_NEXT(15934, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15934(choice, ...) METALANG99_PRIV_REC_NEXT(15935, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15935(choice, ...) METALANG99_PRIV_REC_NEXT(15936, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15936(choice, ...) METALANG99_PRIV_REC_NEXT(15937, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15937(choice, ...) METALANG99_PRIV_REC_NEXT(15938, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15938(choice, ...) METALANG99_PRIV_REC_NEXT(15939, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15939(choice, ...) METALANG99_PRIV_REC_NEXT(15940, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15940(choice, ...) METALANG99_PRIV_REC_NEXT(15941, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15941(choice, ...) METALANG99_PRIV_REC_NEXT(15942, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15942(choice, ...) METALANG99_PRIV_REC_NEXT(15943, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15943(choice, ...) METALANG99_PRIV_REC_NEXT(15944, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15944(choice, ...) METALANG99_PRIV_REC_NEXT(15945, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15945(choice, ...) METALANG99_PRIV_REC_NEXT(15946, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15946(choice, ...) METALANG99_PRIV_REC_NEXT(15947, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15947(choice, ...) METALANG99_PRIV_REC_NEXT(15948, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15948(choice, ...) METALANG99_PRIV_REC_NEXT(15949, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15949(choice, ...) METALANG99_PRIV_REC_NEXT(15950, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15950(choice, ...) METALANG99_PRIV_REC_NEXT(15951, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15951(choice, ...) METALANG99_PRIV_REC_NEXT(15952, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15952(choice, ...) METALANG99_PRIV_REC_NEXT(15953, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15953(choice, ...) METALANG99_PRIV_REC_NEXT(15954, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15954(choice, ...) METALANG99_PRIV_REC_NEXT(15955, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15955(choice, ...) METALANG99_PRIV_REC_NEXT(15956, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15956(choice, ...) METALANG99_PRIV_REC_NEXT(15957, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15957(choice, ...) METALANG99_PRIV_REC_NEXT(15958, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15958(choice, ...) METALANG99_PRIV_REC_NEXT(15959, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15959(choice, ...) METALANG99_PRIV_REC_NEXT(15960, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15960(choice, ...) METALANG99_PRIV_REC_NEXT(15961, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15961(choice, ...) METALANG99_PRIV_REC_NEXT(15962, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15962(choice, ...) METALANG99_PRIV_REC_NEXT(15963, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15963(choice, ...) METALANG99_PRIV_REC_NEXT(15964, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15964(choice, ...) METALANG99_PRIV_REC_NEXT(15965, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15965(choice, ...) METALANG99_PRIV_REC_NEXT(15966, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15966(choice, ...) METALANG99_PRIV_REC_NEXT(15967, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15967(choice, ...) METALANG99_PRIV_REC_NEXT(15968, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15968(choice, ...) METALANG99_PRIV_REC_NEXT(15969, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15969(choice, ...) METALANG99_PRIV_REC_NEXT(15970, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15970(choice, ...) METALANG99_PRIV_REC_NEXT(15971, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15971(choice, ...) METALANG99_PRIV_REC_NEXT(15972, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15972(choice, ...) METALANG99_PRIV_REC_NEXT(15973, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15973(choice, ...) METALANG99_PRIV_REC_NEXT(15974, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15974(choice, ...) METALANG99_PRIV_REC_NEXT(15975, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15975(choice, ...) METALANG99_PRIV_REC_NEXT(15976, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15976(choice, ...) METALANG99_PRIV_REC_NEXT(15977, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15977(choice, ...) METALANG99_PRIV_REC_NEXT(15978, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15978(choice, ...) METALANG99_PRIV_REC_NEXT(15979, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15979(choice, ...) METALANG99_PRIV_REC_NEXT(15980, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15980(choice, ...) METALANG99_PRIV_REC_NEXT(15981, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15981(choice, ...) METALANG99_PRIV_REC_NEXT(15982, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15982(choice, ...) METALANG99_PRIV_REC_NEXT(15983, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15983(choice, ...) METALANG99_PRIV_REC_NEXT(15984, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15984(choice, ...) METALANG99_PRIV_REC_NEXT(15985, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15985(choice, ...) METALANG99_PRIV_REC_NEXT(15986, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15986(choice, ...) METALANG99_PRIV_REC_NEXT(15987, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15987(choice, ...) METALANG99_PRIV_REC_NEXT(15988, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15988(choice, ...) METALANG99_PRIV_REC_NEXT(15989, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15989(choice, ...) METALANG99_PRIV_REC_NEXT(15990, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15990(choice, ...) METALANG99_PRIV_REC_NEXT(15991, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15991(choice, ...) METALANG99_PRIV_REC_NEXT(15992, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15992(choice, ...) METALANG99_PRIV_REC_NEXT(15993, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15993(choice, ...) METALANG99_PRIV_REC_NEXT(15994, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15994(choice, ...) METALANG99_PRIV_REC_NEXT(15995, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15995(choice, ...) METALANG99_PRIV_REC_NEXT(15996, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15996(choice, ...) METALANG99_PRIV_REC_NEXT(15997, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15997(choice, ...) METALANG99_PRIV_REC_NEXT(15998, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15998(choice, ...) METALANG99_PRIV_REC_NEXT(15999, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_15999(choice, ...) METALANG99_PRIV_REC_NEXT(16000, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16000(choice, ...) METALANG99_PRIV_REC_NEXT(16001, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16001(choice, ...) METALANG99_PRIV_REC_NEXT(16002, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16002(choice, ...) METALANG99_PRIV_REC_NEXT(16003, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16003(choice, ...) METALANG99_PRIV_REC_NEXT(16004, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16004(choice, ...) METALANG99_PRIV_REC_NEXT(16005, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16005(choice, ...) METALANG99_PRIV_REC_NEXT(16006, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16006(choice, ...) METALANG99_PRIV_REC_NEXT(16007, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16007(choice, ...) METALANG99_PRIV_REC_NEXT(16008, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16008(choice, ...) METALANG99_PRIV_REC_NEXT(16009, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16009(choice, ...) METALANG99_PRIV_REC_NEXT(16010, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16010(choice, ...) METALANG99_PRIV_REC_NEXT(16011, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16011(choice, ...) METALANG99_PRIV_REC_NEXT(16012, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16012(choice, ...) METALANG99_PRIV_REC_NEXT(16013, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16013(choice, ...) METALANG99_PRIV_REC_NEXT(16014, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16014(choice, ...) METALANG99_PRIV_REC_NEXT(16015, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16015(choice, ...) METALANG99_PRIV_REC_NEXT(16016, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16016(choice, ...) METALANG99_PRIV_REC_NEXT(16017, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16017(choice, ...) METALANG99_PRIV_REC_NEXT(16018, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16018(choice, ...) METALANG99_PRIV_REC_NEXT(16019, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16019(choice, ...) METALANG99_PRIV_REC_NEXT(16020, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16020(choice, ...) METALANG99_PRIV_REC_NEXT(16021, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16021(choice, ...) METALANG99_PRIV_REC_NEXT(16022, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16022(choice, ...) METALANG99_PRIV_REC_NEXT(16023, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16023(choice, ...) METALANG99_PRIV_REC_NEXT(16024, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16024(choice, ...) METALANG99_PRIV_REC_NEXT(16025, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16025(choice, ...) METALANG99_PRIV_REC_NEXT(16026, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16026(choice, ...) METALANG99_PRIV_REC_NEXT(16027, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16027(choice, ...) METALANG99_PRIV_REC_NEXT(16028, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16028(choice, ...) METALANG99_PRIV_REC_NEXT(16029, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16029(choice, ...) METALANG99_PRIV_REC_NEXT(16030, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16030(choice, ...) METALANG99_PRIV_REC_NEXT(16031, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16031(choice, ...) METALANG99_PRIV_REC_NEXT(16032, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16032(choice, ...) METALANG99_PRIV_REC_NEXT(16033, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16033(choice, ...) METALANG99_PRIV_REC_NEXT(16034, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16034(choice, ...) METALANG99_PRIV_REC_NEXT(16035, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16035(choice, ...) METALANG99_PRIV_REC_NEXT(16036, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16036(choice, ...) METALANG99_PRIV_REC_NEXT(16037, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16037(choice, ...) METALANG99_PRIV_REC_NEXT(16038, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16038(choice, ...) METALANG99_PRIV_REC_NEXT(16039, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16039(choice, ...) METALANG99_PRIV_REC_NEXT(16040, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16040(choice, ...) METALANG99_PRIV_REC_NEXT(16041, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16041(choice, ...) METALANG99_PRIV_REC_NEXT(16042, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16042(choice, ...) METALANG99_PRIV_REC_NEXT(16043, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16043(choice, ...) METALANG99_PRIV_REC_NEXT(16044, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16044(choice, ...) METALANG99_PRIV_REC_NEXT(16045, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16045(choice, ...) METALANG99_PRIV_REC_NEXT(16046, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16046(choice, ...) METALANG99_PRIV_REC_NEXT(16047, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16047(choice, ...) METALANG99_PRIV_REC_NEXT(16048, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16048(choice, ...) METALANG99_PRIV_REC_NEXT(16049, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16049(choice, ...) METALANG99_PRIV_REC_NEXT(16050, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16050(choice, ...) METALANG99_PRIV_REC_NEXT(16051, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16051(choice, ...) METALANG99_PRIV_REC_NEXT(16052, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16052(choice, ...) METALANG99_PRIV_REC_NEXT(16053, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16053(choice, ...) METALANG99_PRIV_REC_NEXT(16054, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16054(choice, ...) METALANG99_PRIV_REC_NEXT(16055, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16055(choice, ...) METALANG99_PRIV_REC_NEXT(16056, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16056(choice, ...) METALANG99_PRIV_REC_NEXT(16057, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16057(choice, ...) METALANG99_PRIV_REC_NEXT(16058, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16058(choice, ...) METALANG99_PRIV_REC_NEXT(16059, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16059(choice, ...) METALANG99_PRIV_REC_NEXT(16060, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16060(choice, ...) METALANG99_PRIV_REC_NEXT(16061, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16061(choice, ...) METALANG99_PRIV_REC_NEXT(16062, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16062(choice, ...) METALANG99_PRIV_REC_NEXT(16063, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16063(choice, ...) METALANG99_PRIV_REC_NEXT(16064, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16064(choice, ...) METALANG99_PRIV_REC_NEXT(16065, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16065(choice, ...) METALANG99_PRIV_REC_NEXT(16066, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16066(choice, ...) METALANG99_PRIV_REC_NEXT(16067, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16067(choice, ...) METALANG99_PRIV_REC_NEXT(16068, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16068(choice, ...) METALANG99_PRIV_REC_NEXT(16069, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16069(choice, ...) METALANG99_PRIV_REC_NEXT(16070, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16070(choice, ...) METALANG99_PRIV_REC_NEXT(16071, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16071(choice, ...) METALANG99_PRIV_REC_NEXT(16072, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16072(choice, ...) METALANG99_PRIV_REC_NEXT(16073, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16073(choice, ...) METALANG99_PRIV_REC_NEXT(16074, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16074(choice, ...) METALANG99_PRIV_REC_NEXT(16075, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16075(choice, ...) METALANG99_PRIV_REC_NEXT(16076, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16076(choice, ...) METALANG99_PRIV_REC_NEXT(16077, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16077(choice, ...) METALANG99_PRIV_REC_NEXT(16078, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16078(choice, ...) METALANG99_PRIV_REC_NEXT(16079, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16079(choice, ...) METALANG99_PRIV_REC_NEXT(16080, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16080(choice, ...) METALANG99_PRIV_REC_NEXT(16081, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16081(choice, ...) METALANG99_PRIV_REC_NEXT(16082, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16082(choice, ...) METALANG99_PRIV_REC_NEXT(16083, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16083(choice, ...) METALANG99_PRIV_REC_NEXT(16084, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16084(choice, ...) METALANG99_PRIV_REC_NEXT(16085, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16085(choice, ...) METALANG99_PRIV_REC_NEXT(16086, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16086(choice, ...) METALANG99_PRIV_REC_NEXT(16087, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16087(choice, ...) METALANG99_PRIV_REC_NEXT(16088, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16088(choice, ...) METALANG99_PRIV_REC_NEXT(16089, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16089(choice, ...) METALANG99_PRIV_REC_NEXT(16090, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16090(choice, ...) METALANG99_PRIV_REC_NEXT(16091, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16091(choice, ...) METALANG99_PRIV_REC_NEXT(16092, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16092(choice, ...) METALANG99_PRIV_REC_NEXT(16093, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16093(choice, ...) METALANG99_PRIV_REC_NEXT(16094, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16094(choice, ...) METALANG99_PRIV_REC_NEXT(16095, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16095(choice, ...) METALANG99_PRIV_REC_NEXT(16096, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16096(choice, ...) METALANG99_PRIV_REC_NEXT(16097, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16097(choice, ...) METALANG99_PRIV_REC_NEXT(16098, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16098(choice, ...) METALANG99_PRIV_REC_NEXT(16099, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16099(choice, ...) METALANG99_PRIV_REC_NEXT(16100, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16100(choice, ...) METALANG99_PRIV_REC_NEXT(16101, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16101(choice, ...) METALANG99_PRIV_REC_NEXT(16102, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16102(choice, ...) METALANG99_PRIV_REC_NEXT(16103, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16103(choice, ...) METALANG99_PRIV_REC_NEXT(16104, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16104(choice, ...) METALANG99_PRIV_REC_NEXT(16105, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16105(choice, ...) METALANG99_PRIV_REC_NEXT(16106, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16106(choice, ...) METALANG99_PRIV_REC_NEXT(16107, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16107(choice, ...) METALANG99_PRIV_REC_NEXT(16108, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16108(choice, ...) METALANG99_PRIV_REC_NEXT(16109, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16109(choice, ...) METALANG99_PRIV_REC_NEXT(16110, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16110(choice, ...) METALANG99_PRIV_REC_NEXT(16111, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16111(choice, ...) METALANG99_PRIV_REC_NEXT(16112, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16112(choice, ...) METALANG99_PRIV_REC_NEXT(16113, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16113(choice, ...) METALANG99_PRIV_REC_NEXT(16114, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16114(choice, ...) METALANG99_PRIV_REC_NEXT(16115, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16115(choice, ...) METALANG99_PRIV_REC_NEXT(16116, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16116(choice, ...) METALANG99_PRIV_REC_NEXT(16117, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16117(choice, ...) METALANG99_PRIV_REC_NEXT(16118, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16118(choice, ...) METALANG99_PRIV_REC_NEXT(16119, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16119(choice, ...) METALANG99_PRIV_REC_NEXT(16120, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16120(choice, ...) METALANG99_PRIV_REC_NEXT(16121, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16121(choice, ...) METALANG99_PRIV_REC_NEXT(16122, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16122(choice, ...) METALANG99_PRIV_REC_NEXT(16123, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16123(choice, ...) METALANG99_PRIV_REC_NEXT(16124, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16124(choice, ...) METALANG99_PRIV_REC_NEXT(16125, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16125(choice, ...) METALANG99_PRIV_REC_NEXT(16126, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16126(choice, ...) METALANG99_PRIV_REC_NEXT(16127, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16127(choice, ...) METALANG99_PRIV_REC_NEXT(16128, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16128(choice, ...) METALANG99_PRIV_REC_NEXT(16129, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16129(choice, ...) METALANG99_PRIV_REC_NEXT(16130, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16130(choice, ...) METALANG99_PRIV_REC_NEXT(16131, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16131(choice, ...) METALANG99_PRIV_REC_NEXT(16132, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16132(choice, ...) METALANG99_PRIV_REC_NEXT(16133, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16133(choice, ...) METALANG99_PRIV_REC_NEXT(16134, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16134(choice, ...) METALANG99_PRIV_REC_NEXT(16135, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16135(choice, ...) METALANG99_PRIV_REC_NEXT(16136, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16136(choice, ...) METALANG99_PRIV_REC_NEXT(16137, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16137(choice, ...) METALANG99_PRIV_REC_NEXT(16138, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16138(choice, ...) METALANG99_PRIV_REC_NEXT(16139, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16139(choice, ...) METALANG99_PRIV_REC_NEXT(16140, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16140(choice, ...) METALANG99_PRIV_REC_NEXT(16141, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16141(choice, ...) METALANG99_PRIV_REC_NEXT(16142, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16142(choice, ...) METALANG99_PRIV_REC_NEXT(16143, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16143(choice, ...) METALANG99_PRIV_REC_NEXT(16144, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16144(choice, ...) METALANG99_PRIV_REC_NEXT(16145, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16145(choice, ...) METALANG99_PRIV_REC_NEXT(16146, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16146(choice, ...) METALANG99_PRIV_REC_NEXT(16147, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16147(choice, ...) METALANG99_PRIV_REC_NEXT(16148, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16148(choice, ...) METALANG99_PRIV_REC_NEXT(16149, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16149(choice, ...) METALANG99_PRIV_REC_NEXT(16150, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16150(choice, ...) METALANG99_PRIV_REC_NEXT(16151, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16151(choice, ...) METALANG99_PRIV_REC_NEXT(16152, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16152(choice, ...) METALANG99_PRIV_REC_NEXT(16153, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16153(choice, ...) METALANG99_PRIV_REC_NEXT(16154, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16154(choice, ...) METALANG99_PRIV_REC_NEXT(16155, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16155(choice, ...) METALANG99_PRIV_REC_NEXT(16156, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16156(choice, ...) METALANG99_PRIV_REC_NEXT(16157, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16157(choice, ...) METALANG99_PRIV_REC_NEXT(16158, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16158(choice, ...) METALANG99_PRIV_REC_NEXT(16159, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16159(choice, ...) METALANG99_PRIV_REC_NEXT(16160, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16160(choice, ...) METALANG99_PRIV_REC_NEXT(16161, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16161(choice, ...) METALANG99_PRIV_REC_NEXT(16162, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16162(choice, ...) METALANG99_PRIV_REC_NEXT(16163, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16163(choice, ...) METALANG99_PRIV_REC_NEXT(16164, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16164(choice, ...) METALANG99_PRIV_REC_NEXT(16165, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16165(choice, ...) METALANG99_PRIV_REC_NEXT(16166, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16166(choice, ...) METALANG99_PRIV_REC_NEXT(16167, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16167(choice, ...) METALANG99_PRIV_REC_NEXT(16168, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16168(choice, ...) METALANG99_PRIV_REC_NEXT(16169, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16169(choice, ...) METALANG99_PRIV_REC_NEXT(16170, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16170(choice, ...) METALANG99_PRIV_REC_NEXT(16171, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16171(choice, ...) METALANG99_PRIV_REC_NEXT(16172, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16172(choice, ...) METALANG99_PRIV_REC_NEXT(16173, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16173(choice, ...) METALANG99_PRIV_REC_NEXT(16174, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16174(choice, ...) METALANG99_PRIV_REC_NEXT(16175, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16175(choice, ...) METALANG99_PRIV_REC_NEXT(16176, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16176(choice, ...) METALANG99_PRIV_REC_NEXT(16177, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16177(choice, ...) METALANG99_PRIV_REC_NEXT(16178, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16178(choice, ...) METALANG99_PRIV_REC_NEXT(16179, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16179(choice, ...) METALANG99_PRIV_REC_NEXT(16180, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16180(choice, ...) METALANG99_PRIV_REC_NEXT(16181, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16181(choice, ...) METALANG99_PRIV_REC_NEXT(16182, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16182(choice, ...) METALANG99_PRIV_REC_NEXT(16183, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16183(choice, ...) METALANG99_PRIV_REC_NEXT(16184, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16184(choice, ...) METALANG99_PRIV_REC_NEXT(16185, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16185(choice, ...) METALANG99_PRIV_REC_NEXT(16186, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16186(choice, ...) METALANG99_PRIV_REC_NEXT(16187, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16187(choice, ...) METALANG99_PRIV_REC_NEXT(16188, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16188(choice, ...) METALANG99_PRIV_REC_NEXT(16189, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16189(choice, ...) METALANG99_PRIV_REC_NEXT(16190, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16190(choice, ...) METALANG99_PRIV_REC_NEXT(16191, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16191(choice, ...) METALANG99_PRIV_REC_NEXT(16192, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16192(choice, ...) METALANG99_PRIV_REC_NEXT(16193, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16193(choice, ...) METALANG99_PRIV_REC_NEXT(16194, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16194(choice, ...) METALANG99_PRIV_REC_NEXT(16195, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16195(choice, ...) METALANG99_PRIV_REC_NEXT(16196, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16196(choice, ...) METALANG99_PRIV_REC_NEXT(16197, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16197(choice, ...) METALANG99_PRIV_REC_NEXT(16198, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16198(choice, ...) METALANG99_PRIV_REC_NEXT(16199, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16199(choice, ...) METALANG99_PRIV_REC_NEXT(16200, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16200(choice, ...) METALANG99_PRIV_REC_NEXT(16201, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16201(choice, ...) METALANG99_PRIV_REC_NEXT(16202, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16202(choice, ...) METALANG99_PRIV_REC_NEXT(16203, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16203(choice, ...) METALANG99_PRIV_REC_NEXT(16204, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16204(choice, ...) METALANG99_PRIV_REC_NEXT(16205, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16205(choice, ...) METALANG99_PRIV_REC_NEXT(16206, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16206(choice, ...) METALANG99_PRIV_REC_NEXT(16207, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16207(choice, ...) METALANG99_PRIV_REC_NEXT(16208, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16208(choice, ...) METALANG99_PRIV_REC_NEXT(16209, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16209(choice, ...) METALANG99_PRIV_REC_NEXT(16210, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16210(choice, ...) METALANG99_PRIV_REC_NEXT(16211, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16211(choice, ...) METALANG99_PRIV_REC_NEXT(16212, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16212(choice, ...) METALANG99_PRIV_REC_NEXT(16213, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16213(choice, ...) METALANG99_PRIV_REC_NEXT(16214, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16214(choice, ...) METALANG99_PRIV_REC_NEXT(16215, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16215(choice, ...) METALANG99_PRIV_REC_NEXT(16216, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16216(choice, ...) METALANG99_PRIV_REC_NEXT(16217, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16217(choice, ...) METALANG99_PRIV_REC_NEXT(16218, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16218(choice, ...) METALANG99_PRIV_REC_NEXT(16219, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16219(choice, ...) METALANG99_PRIV_REC_NEXT(16220, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16220(choice, ...) METALANG99_PRIV_REC_NEXT(16221, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16221(choice, ...) METALANG99_PRIV_REC_NEXT(16222, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16222(choice, ...) METALANG99_PRIV_REC_NEXT(16223, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16223(choice, ...) METALANG99_PRIV_REC_NEXT(16224, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16224(choice, ...) METALANG99_PRIV_REC_NEXT(16225, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16225(choice, ...) METALANG99_PRIV_REC_NEXT(16226, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16226(choice, ...) METALANG99_PRIV_REC_NEXT(16227, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16227(choice, ...) METALANG99_PRIV_REC_NEXT(16228, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16228(choice, ...) METALANG99_PRIV_REC_NEXT(16229, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16229(choice, ...) METALANG99_PRIV_REC_NEXT(16230, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16230(choice, ...) METALANG99_PRIV_REC_NEXT(16231, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16231(choice, ...) METALANG99_PRIV_REC_NEXT(16232, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16232(choice, ...) METALANG99_PRIV_REC_NEXT(16233, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16233(choice, ...) METALANG99_PRIV_REC_NEXT(16234, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16234(choice, ...) METALANG99_PRIV_REC_NEXT(16235, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16235(choice, ...) METALANG99_PRIV_REC_NEXT(16236, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16236(choice, ...) METALANG99_PRIV_REC_NEXT(16237, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16237(choice, ...) METALANG99_PRIV_REC_NEXT(16238, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16238(choice, ...) METALANG99_PRIV_REC_NEXT(16239, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16239(choice, ...) METALANG99_PRIV_REC_NEXT(16240, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16240(choice, ...) METALANG99_PRIV_REC_NEXT(16241, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16241(choice, ...) METALANG99_PRIV_REC_NEXT(16242, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16242(choice, ...) METALANG99_PRIV_REC_NEXT(16243, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16243(choice, ...) METALANG99_PRIV_REC_NEXT(16244, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16244(choice, ...) METALANG99_PRIV_REC_NEXT(16245, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16245(choice, ...) METALANG99_PRIV_REC_NEXT(16246, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16246(choice, ...) METALANG99_PRIV_REC_NEXT(16247, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16247(choice, ...) METALANG99_PRIV_REC_NEXT(16248, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16248(choice, ...) METALANG99_PRIV_REC_NEXT(16249, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16249(choice, ...) METALANG99_PRIV_REC_NEXT(16250, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16250(choice, ...) METALANG99_PRIV_REC_NEXT(16251, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16251(choice, ...) METALANG99_PRIV_REC_NEXT(16252, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16252(choice, ...) METALANG99_PRIV_REC_NEXT(16253, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16253(choice, ...) METALANG99_PRIV_REC_NEXT(16254, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16254(choice, ...) METALANG99_PRIV_REC_NEXT(16255, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16255(choice, ...) METALANG99_PRIV_REC_NEXT(16256, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16256(choice, ...) METALANG99_PRIV_REC_NEXT(16257, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16257(choice, ...) METALANG99_PRIV_REC_NEXT(16258, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16258(choice, ...) METALANG99_PRIV_REC_NEXT(16259, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16259(choice, ...) METALANG99_PRIV_REC_NEXT(16260, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16260(choice, ...) METALANG99_PRIV_REC_NEXT(16261, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16261(choice, ...) METALANG99_PRIV_REC_NEXT(16262, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16262(choice, ...) METALANG99_PRIV_REC_NEXT(16263, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16263(choice, ...) METALANG99_PRIV_REC_NEXT(16264, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16264(choice, ...) METALANG99_PRIV_REC_NEXT(16265, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16265(choice, ...) METALANG99_PRIV_REC_NEXT(16266, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16266(choice, ...) METALANG99_PRIV_REC_NEXT(16267, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16267(choice, ...) METALANG99_PRIV_REC_NEXT(16268, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16268(choice, ...) METALANG99_PRIV_REC_NEXT(16269, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16269(choice, ...) METALANG99_PRIV_REC_NEXT(16270, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16270(choice, ...) METALANG99_PRIV_REC_NEXT(16271, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16271(choice, ...) METALANG99_PRIV_REC_NEXT(16272, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16272(choice, ...) METALANG99_PRIV_REC_NEXT(16273, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16273(choice, ...) METALANG99_PRIV_REC_NEXT(16274, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16274(choice, ...) METALANG99_PRIV_REC_NEXT(16275, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16275(choice, ...) METALANG99_PRIV_REC_NEXT(16276, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16276(choice, ...) METALANG99_PRIV_REC_NEXT(16277, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16277(choice, ...) METALANG99_PRIV_REC_NEXT(16278, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16278(choice, ...) METALANG99_PRIV_REC_NEXT(16279, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16279(choice, ...) METALANG99_PRIV_REC_NEXT(16280, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16280(choice, ...) METALANG99_PRIV_REC_NEXT(16281, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16281(choice, ...) METALANG99_PRIV_REC_NEXT(16282, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16282(choice, ...) METALANG99_PRIV_REC_NEXT(16283, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16283(choice, ...) METALANG99_PRIV_REC_NEXT(16284, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16284(choice, ...) METALANG99_PRIV_REC_NEXT(16285, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16285(choice, ...) METALANG99_PRIV_REC_NEXT(16286, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16286(choice, ...) METALANG99_PRIV_REC_NEXT(16287, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16287(choice, ...) METALANG99_PRIV_REC_NEXT(16288, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16288(choice, ...) METALANG99_PRIV_REC_NEXT(16289, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16289(choice, ...) METALANG99_PRIV_REC_NEXT(16290, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16290(choice, ...) METALANG99_PRIV_REC_NEXT(16291, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16291(choice, ...) METALANG99_PRIV_REC_NEXT(16292, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16292(choice, ...) METALANG99_PRIV_REC_NEXT(16293, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16293(choice, ...) METALANG99_PRIV_REC_NEXT(16294, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16294(choice, ...) METALANG99_PRIV_REC_NEXT(16295, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16295(choice, ...) METALANG99_PRIV_REC_NEXT(16296, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16296(choice, ...) METALANG99_PRIV_REC_NEXT(16297, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16297(choice, ...) METALANG99_PRIV_REC_NEXT(16298, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16298(choice, ...) METALANG99_PRIV_REC_NEXT(16299, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16299(choice, ...) METALANG99_PRIV_REC_NEXT(16300, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16300(choice, ...) METALANG99_PRIV_REC_NEXT(16301, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16301(choice, ...) METALANG99_PRIV_REC_NEXT(16302, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16302(choice, ...) METALANG99_PRIV_REC_NEXT(16303, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16303(choice, ...) METALANG99_PRIV_REC_NEXT(16304, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16304(choice, ...) METALANG99_PRIV_REC_NEXT(16305, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16305(choice, ...) METALANG99_PRIV_REC_NEXT(16306, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16306(choice, ...) METALANG99_PRIV_REC_NEXT(16307, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16307(choice, ...) METALANG99_PRIV_REC_NEXT(16308, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16308(choice, ...) METALANG99_PRIV_REC_NEXT(16309, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16309(choice, ...) METALANG99_PRIV_REC_NEXT(16310, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16310(choice, ...) METALANG99_PRIV_REC_NEXT(16311, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16311(choice, ...) METALANG99_PRIV_REC_NEXT(16312, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16312(choice, ...) METALANG99_PRIV_REC_NEXT(16313, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16313(choice, ...) METALANG99_PRIV_REC_NEXT(16314, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16314(choice, ...) METALANG99_PRIV_REC_NEXT(16315, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16315(choice, ...) METALANG99_PRIV_REC_NEXT(16316, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16316(choice, ...) METALANG99_PRIV_REC_NEXT(16317, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16317(choice, ...) METALANG99_PRIV_REC_NEXT(16318, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16318(choice, ...) METALANG99_PRIV_REC_NEXT(16319, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16319(choice, ...) METALANG99_PRIV_REC_NEXT(16320, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16320(choice, ...) METALANG99_PRIV_REC_NEXT(16321, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16321(choice, ...) METALANG99_PRIV_REC_NEXT(16322, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16322(choice, ...) METALANG99_PRIV_REC_NEXT(16323, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16323(choice, ...) METALANG99_PRIV_REC_NEXT(16324, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16324(choice, ...) METALANG99_PRIV_REC_NEXT(16325, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16325(choice, ...) METALANG99_PRIV_REC_NEXT(16326, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16326(choice, ...) METALANG99_PRIV_REC_NEXT(16327, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16327(choice, ...) METALANG99_PRIV_REC_NEXT(16328, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16328(choice, ...) METALANG99_PRIV_REC_NEXT(16329, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16329(choice, ...) METALANG99_PRIV_REC_NEXT(16330, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16330(choice, ...) METALANG99_PRIV_REC_NEXT(16331, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16331(choice, ...) METALANG99_PRIV_REC_NEXT(16332, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16332(choice, ...) METALANG99_PRIV_REC_NEXT(16333, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16333(choice, ...) METALANG99_PRIV_REC_NEXT(16334, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16334(choice, ...) METALANG99_PRIV_REC_NEXT(16335, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16335(choice, ...) METALANG99_PRIV_REC_NEXT(16336, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16336(choice, ...) METALANG99_PRIV_REC_NEXT(16337, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16337(choice, ...) METALANG99_PRIV_REC_NEXT(16338, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16338(choice, ...) METALANG99_PRIV_REC_NEXT(16339, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16339(choice, ...) METALANG99_PRIV_REC_NEXT(16340, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16340(choice, ...) METALANG99_PRIV_REC_NEXT(16341, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16341(choice, ...) METALANG99_PRIV_REC_NEXT(16342, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16342(choice, ...) METALANG99_PRIV_REC_NEXT(16343, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16343(choice, ...) METALANG99_PRIV_REC_NEXT(16344, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16344(choice, ...) METALANG99_PRIV_REC_NEXT(16345, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16345(choice, ...) METALANG99_PRIV_REC_NEXT(16346, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16346(choice, ...) METALANG99_PRIV_REC_NEXT(16347, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16347(choice, ...) METALANG99_PRIV_REC_NEXT(16348, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16348(choice, ...) METALANG99_PRIV_REC_NEXT(16349, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16349(choice, ...) METALANG99_PRIV_REC_NEXT(16350, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16350(choice, ...) METALANG99_PRIV_REC_NEXT(16351, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16351(choice, ...) METALANG99_PRIV_REC_NEXT(16352, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16352(choice, ...) METALANG99_PRIV_REC_NEXT(16353, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16353(choice, ...) METALANG99_PRIV_REC_NEXT(16354, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16354(choice, ...) METALANG99_PRIV_REC_NEXT(16355, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16355(choice, ...) METALANG99_PRIV_REC_NEXT(16356, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16356(choice, ...) METALANG99_PRIV_REC_NEXT(16357, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16357(choice, ...) METALANG99_PRIV_REC_NEXT(16358, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16358(choice, ...) METALANG99_PRIV_REC_NEXT(16359, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16359(choice, ...) METALANG99_PRIV_REC_NEXT(16360, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16360(choice, ...) METALANG99_PRIV_REC_NEXT(16361, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16361(choice, ...) METALANG99_PRIV_REC_NEXT(16362, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16362(choice, ...) METALANG99_PRIV_REC_NEXT(16363, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16363(choice, ...) METALANG99_PRIV_REC_NEXT(16364, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16364(choice, ...) METALANG99_PRIV_REC_NEXT(16365, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16365(choice, ...) METALANG99_PRIV_REC_NEXT(16366, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16366(choice, ...) METALANG99_PRIV_REC_NEXT(16367, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16367(choice, ...) METALANG99_PRIV_REC_NEXT(16368, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16368(choice, ...) METALANG99_PRIV_REC_NEXT(16369, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16369(choice, ...) METALANG99_PRIV_REC_NEXT(16370, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16370(choice, ...) METALANG99_PRIV_REC_NEXT(16371, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16371(choice, ...) METALANG99_PRIV_REC_NEXT(16372, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16372(choice, ...) METALANG99_PRIV_REC_NEXT(16373, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16373(choice, ...) METALANG99_PRIV_REC_NEXT(16374, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16374(choice, ...) METALANG99_PRIV_REC_NEXT(16375, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16375(choice, ...) METALANG99_PRIV_REC_NEXT(16376, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16376(choice, ...) METALANG99_PRIV_REC_NEXT(16377, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16377(choice, ...) METALANG99_PRIV_REC_NEXT(16378, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16378(choice, ...) METALANG99_PRIV_REC_NEXT(16379, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16379(choice, ...) METALANG99_PRIV_REC_NEXT(16380, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16380(choice, ...) METALANG99_PRIV_REC_NEXT(16381, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16381(choice, ...) METALANG99_PRIV_REC_NEXT(16382, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16382(choice, ...) METALANG99_PRIV_REC_NEXT(16383, choice)(__VA_ARGS__) #define METALANG99_PRIV_REC_16383(choice, ...) METALANG99_PRIV_REC_NEXT(16384, choice)(__VA_ARGS__) #endif // METALANG99_EVAL_REC_UNROLL_H hkl-5.1.7/third-party/metalang99/eval/rec/control.h0000664000175000017500000000070014677222567021055 0ustar00piccapicca#ifndef METALANG99_EVAL_REC_CONTROL_H #define METALANG99_EVAL_REC_CONTROL_H #define METALANG99_PRIV_REC_STOP_HOOK() METALANG99_PRIV_REC_STOP #define METALANG99_PRIV_REC_STOP(_k_cx, ...) 0stop, __VA_ARGS__ #define METALANG99_PRIV_REC_CONTINUE(k) 0continue, METALANG99_PRIV_REC_DEFER(k##_HOOK)() #define METALANG99_PRIV_REC_DEFER(op) op METALANG99_PRIV_REC_EMPTY() #define METALANG99_PRIV_REC_EMPTY() #endif // METALANG99_EVAL_REC_CONTROL_H hkl-5.1.7/third-party/metalang99/eval/rec/progress.h0000664000175000017500000000065714677222567021254 0ustar00piccapicca#ifndef METALANG99_EVAL_REC_PROGRESS_H #define METALANG99_EVAL_REC_PROGRESS_H #define METALANG99_PRIV_REC_NEXT(next_lvl, choice) METALANG99_PRIV_REC_NEXT_##choice(next_lvl) #define METALANG99_PRIV_REC_NEXT_0continue(next_lvl) METALANG99_PRIV_REC_##next_lvl #define METALANG99_PRIV_REC_NEXT_0stop(_next_lvl) METALANG99_PRIV_REC_HALT #define METALANG99_PRIV_REC_HALT(...) __VA_ARGS__ #endif // METALANG99_EVAL_REC_PROGRESS_H hkl-5.1.7/third-party/metalang99/eval/fold.h0000664000175000017500000000143514677222567017556 0ustar00piccapicca#ifndef METALANG99_EVAL_FOLD_H #define METALANG99_EVAL_FOLD_H #include #include #define METALANG99_PRIV_EVAL_FAPPEND(acc, ...) \ 0non_empty(METALANG99_PRIV_EVAL_ACC_UNWRAP(acc) __VA_ARGS__) #define METALANG99_PRIV_EVAL_FCOMMA(acc, ...) \ 0non_empty METALANG99_PRIV_IF( \ METALANG99_PRIV_EVAL_ACC_IS_EMPTY(acc), \ (__VA_ARGS__), \ (METALANG99_PRIV_EVAL_ACC_UNWRAP(acc), __VA_ARGS__)) #endif // METALANG99_EVAL_FOLD_H hkl-5.1.7/third-party/metalang99/eval/rec.h0000664000175000017500000025737414677222567017422 0ustar00piccapicca/* * This recursion engine takes its roots from map-macro [1] and Cloak [2], with a few improvements: * * - It can do many more expansions (roughly 1024 * 16 or 2^14). * * - The expansion chain is linear: `ML99_PRIV_REC_0` invokes `ML99_PRIV_REC_1`, `ML99_PRIV_REC_1` * invokes `ML99_PRIV_REC_2`, and so on. * * - If a given metaprogram does not require more expansions, then it will stop expanding. I.e., * perform only as many expansions as needed. This is controlled by `ML99_PRIV_REC_NEXT`: if * `choice` is `0stop`, then just terminate the expansion chain. * * - The last expander `ML99_PRIV_REC_1023` really results in a deferred `ML99_PRIV_REC_0`, not to * make it painted blue. Then, in `ML99_PRIV_REC_UNROLL_AUX`, this `ML99_PRIV_REC_0` is expanded * once again 16 times. * * - It requires recursive macros to be written in CPS, continuation-passing style [3]. This is * controlled by `ML99_PRIV_REC_CONTINUE`: the `k` parameter stands for "continuation". `k` must * eventually expand to yet another `ML99_PRIV_REC_CONTINUE`. Also, there is a special continuation * called `ML99_PRIV_REC_STOP` -- it terminates the engine. * * The minimal usage example is located at `tests/eval/rec.c`. * * [1]: https://github.com/swansontec/map-macro * [2]: https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms#recursion * [3]: https://en.wikipedia.org/wiki/Continuation-passing_style */ #ifndef ML99_EVAL_REC_H #define ML99_EVAL_REC_H #define ML99_PRIV_REC_CONTINUE(k) 0continue, ML99_PRIV_REC_DEFER(k##_HOOK)() #define ML99_PRIV_REC_STOP(_k_cx, ...) 0stop, __VA_ARGS__ #define ML99_PRIV_REC_STOP_HOOK() ML99_PRIV_REC_STOP #define ML99_PRIV_REC_DEFER(op) op ML99_PRIV_REC_EMPTY #define ML99_PRIV_REC_EMPTY #define ML99_PRIV_REC_EXPAND(...) __VA_ARGS__ #define ML99_PRIV_REC_NEXT(next_lvl, choice) ML99_PRIV_REC_NEXT_##choice(next_lvl) #define ML99_PRIV_REC_NEXT_0continue(next_lvl) ML99_PRIV_REC_##next_lvl #define ML99_PRIV_REC_NEXT_0stop(_next_lvl) ML99_PRIV_REC_HALT #define ML99_PRIV_REC_HALT(...) __VA_ARGS__ #define ML99_PRIV_REC_UNROLL(...) ML99_PRIV_REC_UNROLL_AUX(__VA_ARGS__) // clang-format off #define ML99_PRIV_REC_UNROLL_AUX(choice, ...) \ /* Approximately 1024 * 16 reduction steps. */ \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_EXPAND( \ ML99_PRIV_REC_NEXT(0, choice)(__VA_ARGS__) \ )))))))))))))))) // clang-format on #define ML99_PRIV_REC_0(choice, ...) ML99_PRIV_REC_NEXT(1, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1(choice, ...) ML99_PRIV_REC_NEXT(2, choice)(__VA_ARGS__) #define ML99_PRIV_REC_2(choice, ...) ML99_PRIV_REC_NEXT(3, choice)(__VA_ARGS__) #define ML99_PRIV_REC_3(choice, ...) ML99_PRIV_REC_NEXT(4, choice)(__VA_ARGS__) #define ML99_PRIV_REC_4(choice, ...) ML99_PRIV_REC_NEXT(5, choice)(__VA_ARGS__) #define ML99_PRIV_REC_5(choice, ...) ML99_PRIV_REC_NEXT(6, choice)(__VA_ARGS__) #define ML99_PRIV_REC_6(choice, ...) ML99_PRIV_REC_NEXT(7, choice)(__VA_ARGS__) #define ML99_PRIV_REC_7(choice, ...) ML99_PRIV_REC_NEXT(8, choice)(__VA_ARGS__) #define ML99_PRIV_REC_8(choice, ...) ML99_PRIV_REC_NEXT(9, choice)(__VA_ARGS__) #define ML99_PRIV_REC_9(choice, ...) ML99_PRIV_REC_NEXT(10, choice)(__VA_ARGS__) #define ML99_PRIV_REC_10(choice, ...) ML99_PRIV_REC_NEXT(11, choice)(__VA_ARGS__) #define ML99_PRIV_REC_11(choice, ...) ML99_PRIV_REC_NEXT(12, choice)(__VA_ARGS__) #define ML99_PRIV_REC_12(choice, ...) ML99_PRIV_REC_NEXT(13, choice)(__VA_ARGS__) #define ML99_PRIV_REC_13(choice, ...) ML99_PRIV_REC_NEXT(14, choice)(__VA_ARGS__) #define ML99_PRIV_REC_14(choice, ...) ML99_PRIV_REC_NEXT(15, choice)(__VA_ARGS__) #define ML99_PRIV_REC_15(choice, ...) ML99_PRIV_REC_NEXT(16, choice)(__VA_ARGS__) #define ML99_PRIV_REC_16(choice, ...) ML99_PRIV_REC_NEXT(17, choice)(__VA_ARGS__) #define ML99_PRIV_REC_17(choice, ...) ML99_PRIV_REC_NEXT(18, choice)(__VA_ARGS__) #define ML99_PRIV_REC_18(choice, ...) ML99_PRIV_REC_NEXT(19, choice)(__VA_ARGS__) #define ML99_PRIV_REC_19(choice, ...) ML99_PRIV_REC_NEXT(20, choice)(__VA_ARGS__) #define ML99_PRIV_REC_20(choice, ...) ML99_PRIV_REC_NEXT(21, choice)(__VA_ARGS__) #define ML99_PRIV_REC_21(choice, ...) ML99_PRIV_REC_NEXT(22, choice)(__VA_ARGS__) #define ML99_PRIV_REC_22(choice, ...) ML99_PRIV_REC_NEXT(23, choice)(__VA_ARGS__) #define ML99_PRIV_REC_23(choice, ...) ML99_PRIV_REC_NEXT(24, choice)(__VA_ARGS__) #define ML99_PRIV_REC_24(choice, ...) ML99_PRIV_REC_NEXT(25, choice)(__VA_ARGS__) #define ML99_PRIV_REC_25(choice, ...) ML99_PRIV_REC_NEXT(26, choice)(__VA_ARGS__) #define ML99_PRIV_REC_26(choice, ...) ML99_PRIV_REC_NEXT(27, choice)(__VA_ARGS__) #define ML99_PRIV_REC_27(choice, ...) ML99_PRIV_REC_NEXT(28, choice)(__VA_ARGS__) #define ML99_PRIV_REC_28(choice, ...) ML99_PRIV_REC_NEXT(29, choice)(__VA_ARGS__) #define ML99_PRIV_REC_29(choice, ...) ML99_PRIV_REC_NEXT(30, choice)(__VA_ARGS__) #define ML99_PRIV_REC_30(choice, ...) ML99_PRIV_REC_NEXT(31, choice)(__VA_ARGS__) #define ML99_PRIV_REC_31(choice, ...) ML99_PRIV_REC_NEXT(32, choice)(__VA_ARGS__) #define ML99_PRIV_REC_32(choice, ...) ML99_PRIV_REC_NEXT(33, choice)(__VA_ARGS__) #define ML99_PRIV_REC_33(choice, ...) ML99_PRIV_REC_NEXT(34, choice)(__VA_ARGS__) #define ML99_PRIV_REC_34(choice, ...) ML99_PRIV_REC_NEXT(35, choice)(__VA_ARGS__) #define ML99_PRIV_REC_35(choice, ...) ML99_PRIV_REC_NEXT(36, choice)(__VA_ARGS__) #define ML99_PRIV_REC_36(choice, ...) ML99_PRIV_REC_NEXT(37, choice)(__VA_ARGS__) #define ML99_PRIV_REC_37(choice, ...) ML99_PRIV_REC_NEXT(38, choice)(__VA_ARGS__) #define ML99_PRIV_REC_38(choice, ...) ML99_PRIV_REC_NEXT(39, choice)(__VA_ARGS__) #define ML99_PRIV_REC_39(choice, ...) ML99_PRIV_REC_NEXT(40, choice)(__VA_ARGS__) #define ML99_PRIV_REC_40(choice, ...) ML99_PRIV_REC_NEXT(41, choice)(__VA_ARGS__) #define ML99_PRIV_REC_41(choice, ...) ML99_PRIV_REC_NEXT(42, choice)(__VA_ARGS__) #define ML99_PRIV_REC_42(choice, ...) ML99_PRIV_REC_NEXT(43, choice)(__VA_ARGS__) #define ML99_PRIV_REC_43(choice, ...) ML99_PRIV_REC_NEXT(44, choice)(__VA_ARGS__) #define ML99_PRIV_REC_44(choice, ...) ML99_PRIV_REC_NEXT(45, choice)(__VA_ARGS__) #define ML99_PRIV_REC_45(choice, ...) ML99_PRIV_REC_NEXT(46, choice)(__VA_ARGS__) #define ML99_PRIV_REC_46(choice, ...) ML99_PRIV_REC_NEXT(47, choice)(__VA_ARGS__) #define ML99_PRIV_REC_47(choice, ...) ML99_PRIV_REC_NEXT(48, choice)(__VA_ARGS__) #define ML99_PRIV_REC_48(choice, ...) ML99_PRIV_REC_NEXT(49, choice)(__VA_ARGS__) #define ML99_PRIV_REC_49(choice, ...) ML99_PRIV_REC_NEXT(50, choice)(__VA_ARGS__) #define ML99_PRIV_REC_50(choice, ...) ML99_PRIV_REC_NEXT(51, choice)(__VA_ARGS__) #define ML99_PRIV_REC_51(choice, ...) ML99_PRIV_REC_NEXT(52, choice)(__VA_ARGS__) #define ML99_PRIV_REC_52(choice, ...) ML99_PRIV_REC_NEXT(53, choice)(__VA_ARGS__) #define ML99_PRIV_REC_53(choice, ...) ML99_PRIV_REC_NEXT(54, choice)(__VA_ARGS__) #define ML99_PRIV_REC_54(choice, ...) ML99_PRIV_REC_NEXT(55, choice)(__VA_ARGS__) #define ML99_PRIV_REC_55(choice, ...) ML99_PRIV_REC_NEXT(56, choice)(__VA_ARGS__) #define ML99_PRIV_REC_56(choice, ...) ML99_PRIV_REC_NEXT(57, choice)(__VA_ARGS__) #define ML99_PRIV_REC_57(choice, ...) ML99_PRIV_REC_NEXT(58, choice)(__VA_ARGS__) #define ML99_PRIV_REC_58(choice, ...) ML99_PRIV_REC_NEXT(59, choice)(__VA_ARGS__) #define ML99_PRIV_REC_59(choice, ...) ML99_PRIV_REC_NEXT(60, choice)(__VA_ARGS__) #define ML99_PRIV_REC_60(choice, ...) ML99_PRIV_REC_NEXT(61, choice)(__VA_ARGS__) #define ML99_PRIV_REC_61(choice, ...) ML99_PRIV_REC_NEXT(62, choice)(__VA_ARGS__) #define ML99_PRIV_REC_62(choice, ...) ML99_PRIV_REC_NEXT(63, choice)(__VA_ARGS__) #define ML99_PRIV_REC_63(choice, ...) ML99_PRIV_REC_NEXT(64, choice)(__VA_ARGS__) #define ML99_PRIV_REC_64(choice, ...) ML99_PRIV_REC_NEXT(65, choice)(__VA_ARGS__) #define ML99_PRIV_REC_65(choice, ...) ML99_PRIV_REC_NEXT(66, choice)(__VA_ARGS__) #define ML99_PRIV_REC_66(choice, ...) ML99_PRIV_REC_NEXT(67, choice)(__VA_ARGS__) #define ML99_PRIV_REC_67(choice, ...) ML99_PRIV_REC_NEXT(68, choice)(__VA_ARGS__) #define ML99_PRIV_REC_68(choice, ...) ML99_PRIV_REC_NEXT(69, choice)(__VA_ARGS__) #define ML99_PRIV_REC_69(choice, ...) ML99_PRIV_REC_NEXT(70, choice)(__VA_ARGS__) #define ML99_PRIV_REC_70(choice, ...) ML99_PRIV_REC_NEXT(71, choice)(__VA_ARGS__) #define ML99_PRIV_REC_71(choice, ...) ML99_PRIV_REC_NEXT(72, choice)(__VA_ARGS__) #define ML99_PRIV_REC_72(choice, ...) ML99_PRIV_REC_NEXT(73, choice)(__VA_ARGS__) #define ML99_PRIV_REC_73(choice, ...) ML99_PRIV_REC_NEXT(74, choice)(__VA_ARGS__) #define ML99_PRIV_REC_74(choice, ...) ML99_PRIV_REC_NEXT(75, choice)(__VA_ARGS__) #define ML99_PRIV_REC_75(choice, ...) ML99_PRIV_REC_NEXT(76, choice)(__VA_ARGS__) #define ML99_PRIV_REC_76(choice, ...) ML99_PRIV_REC_NEXT(77, choice)(__VA_ARGS__) #define ML99_PRIV_REC_77(choice, ...) ML99_PRIV_REC_NEXT(78, choice)(__VA_ARGS__) #define ML99_PRIV_REC_78(choice, ...) ML99_PRIV_REC_NEXT(79, choice)(__VA_ARGS__) #define ML99_PRIV_REC_79(choice, ...) ML99_PRIV_REC_NEXT(80, choice)(__VA_ARGS__) #define ML99_PRIV_REC_80(choice, ...) ML99_PRIV_REC_NEXT(81, choice)(__VA_ARGS__) #define ML99_PRIV_REC_81(choice, ...) ML99_PRIV_REC_NEXT(82, choice)(__VA_ARGS__) #define ML99_PRIV_REC_82(choice, ...) ML99_PRIV_REC_NEXT(83, choice)(__VA_ARGS__) #define ML99_PRIV_REC_83(choice, ...) ML99_PRIV_REC_NEXT(84, choice)(__VA_ARGS__) #define ML99_PRIV_REC_84(choice, ...) ML99_PRIV_REC_NEXT(85, choice)(__VA_ARGS__) #define ML99_PRIV_REC_85(choice, ...) ML99_PRIV_REC_NEXT(86, choice)(__VA_ARGS__) #define ML99_PRIV_REC_86(choice, ...) ML99_PRIV_REC_NEXT(87, choice)(__VA_ARGS__) #define ML99_PRIV_REC_87(choice, ...) ML99_PRIV_REC_NEXT(88, choice)(__VA_ARGS__) #define ML99_PRIV_REC_88(choice, ...) ML99_PRIV_REC_NEXT(89, choice)(__VA_ARGS__) #define ML99_PRIV_REC_89(choice, ...) ML99_PRIV_REC_NEXT(90, choice)(__VA_ARGS__) #define ML99_PRIV_REC_90(choice, ...) ML99_PRIV_REC_NEXT(91, choice)(__VA_ARGS__) #define ML99_PRIV_REC_91(choice, ...) ML99_PRIV_REC_NEXT(92, choice)(__VA_ARGS__) #define ML99_PRIV_REC_92(choice, ...) ML99_PRIV_REC_NEXT(93, choice)(__VA_ARGS__) #define ML99_PRIV_REC_93(choice, ...) ML99_PRIV_REC_NEXT(94, choice)(__VA_ARGS__) #define ML99_PRIV_REC_94(choice, ...) ML99_PRIV_REC_NEXT(95, choice)(__VA_ARGS__) #define ML99_PRIV_REC_95(choice, ...) ML99_PRIV_REC_NEXT(96, choice)(__VA_ARGS__) #define ML99_PRIV_REC_96(choice, ...) ML99_PRIV_REC_NEXT(97, choice)(__VA_ARGS__) #define ML99_PRIV_REC_97(choice, ...) ML99_PRIV_REC_NEXT(98, choice)(__VA_ARGS__) #define ML99_PRIV_REC_98(choice, ...) ML99_PRIV_REC_NEXT(99, choice)(__VA_ARGS__) #define ML99_PRIV_REC_99(choice, ...) ML99_PRIV_REC_NEXT(100, choice)(__VA_ARGS__) #define ML99_PRIV_REC_100(choice, ...) ML99_PRIV_REC_NEXT(101, choice)(__VA_ARGS__) #define ML99_PRIV_REC_101(choice, ...) ML99_PRIV_REC_NEXT(102, choice)(__VA_ARGS__) #define ML99_PRIV_REC_102(choice, ...) ML99_PRIV_REC_NEXT(103, choice)(__VA_ARGS__) #define ML99_PRIV_REC_103(choice, ...) ML99_PRIV_REC_NEXT(104, choice)(__VA_ARGS__) #define ML99_PRIV_REC_104(choice, ...) ML99_PRIV_REC_NEXT(105, choice)(__VA_ARGS__) #define ML99_PRIV_REC_105(choice, ...) ML99_PRIV_REC_NEXT(106, choice)(__VA_ARGS__) #define ML99_PRIV_REC_106(choice, ...) ML99_PRIV_REC_NEXT(107, choice)(__VA_ARGS__) #define ML99_PRIV_REC_107(choice, ...) ML99_PRIV_REC_NEXT(108, choice)(__VA_ARGS__) #define ML99_PRIV_REC_108(choice, ...) ML99_PRIV_REC_NEXT(109, choice)(__VA_ARGS__) #define ML99_PRIV_REC_109(choice, ...) ML99_PRIV_REC_NEXT(110, choice)(__VA_ARGS__) #define ML99_PRIV_REC_110(choice, ...) ML99_PRIV_REC_NEXT(111, choice)(__VA_ARGS__) #define ML99_PRIV_REC_111(choice, ...) ML99_PRIV_REC_NEXT(112, choice)(__VA_ARGS__) #define ML99_PRIV_REC_112(choice, ...) ML99_PRIV_REC_NEXT(113, choice)(__VA_ARGS__) #define ML99_PRIV_REC_113(choice, ...) ML99_PRIV_REC_NEXT(114, choice)(__VA_ARGS__) #define ML99_PRIV_REC_114(choice, ...) ML99_PRIV_REC_NEXT(115, choice)(__VA_ARGS__) #define ML99_PRIV_REC_115(choice, ...) ML99_PRIV_REC_NEXT(116, choice)(__VA_ARGS__) #define ML99_PRIV_REC_116(choice, ...) ML99_PRIV_REC_NEXT(117, choice)(__VA_ARGS__) #define ML99_PRIV_REC_117(choice, ...) ML99_PRIV_REC_NEXT(118, choice)(__VA_ARGS__) #define ML99_PRIV_REC_118(choice, ...) ML99_PRIV_REC_NEXT(119, choice)(__VA_ARGS__) #define ML99_PRIV_REC_119(choice, ...) ML99_PRIV_REC_NEXT(120, choice)(__VA_ARGS__) #define ML99_PRIV_REC_120(choice, ...) ML99_PRIV_REC_NEXT(121, choice)(__VA_ARGS__) #define ML99_PRIV_REC_121(choice, ...) ML99_PRIV_REC_NEXT(122, choice)(__VA_ARGS__) #define ML99_PRIV_REC_122(choice, ...) ML99_PRIV_REC_NEXT(123, choice)(__VA_ARGS__) #define ML99_PRIV_REC_123(choice, ...) ML99_PRIV_REC_NEXT(124, choice)(__VA_ARGS__) #define ML99_PRIV_REC_124(choice, ...) ML99_PRIV_REC_NEXT(125, choice)(__VA_ARGS__) #define ML99_PRIV_REC_125(choice, ...) ML99_PRIV_REC_NEXT(126, choice)(__VA_ARGS__) #define ML99_PRIV_REC_126(choice, ...) ML99_PRIV_REC_NEXT(127, choice)(__VA_ARGS__) #define ML99_PRIV_REC_127(choice, ...) ML99_PRIV_REC_NEXT(128, choice)(__VA_ARGS__) #define ML99_PRIV_REC_128(choice, ...) ML99_PRIV_REC_NEXT(129, choice)(__VA_ARGS__) #define ML99_PRIV_REC_129(choice, ...) ML99_PRIV_REC_NEXT(130, choice)(__VA_ARGS__) #define ML99_PRIV_REC_130(choice, ...) ML99_PRIV_REC_NEXT(131, choice)(__VA_ARGS__) #define ML99_PRIV_REC_131(choice, ...) ML99_PRIV_REC_NEXT(132, choice)(__VA_ARGS__) #define ML99_PRIV_REC_132(choice, ...) ML99_PRIV_REC_NEXT(133, choice)(__VA_ARGS__) #define ML99_PRIV_REC_133(choice, ...) ML99_PRIV_REC_NEXT(134, choice)(__VA_ARGS__) #define ML99_PRIV_REC_134(choice, ...) ML99_PRIV_REC_NEXT(135, choice)(__VA_ARGS__) #define ML99_PRIV_REC_135(choice, ...) ML99_PRIV_REC_NEXT(136, choice)(__VA_ARGS__) #define ML99_PRIV_REC_136(choice, ...) ML99_PRIV_REC_NEXT(137, choice)(__VA_ARGS__) #define ML99_PRIV_REC_137(choice, ...) ML99_PRIV_REC_NEXT(138, choice)(__VA_ARGS__) #define ML99_PRIV_REC_138(choice, ...) ML99_PRIV_REC_NEXT(139, choice)(__VA_ARGS__) #define ML99_PRIV_REC_139(choice, ...) ML99_PRIV_REC_NEXT(140, choice)(__VA_ARGS__) #define ML99_PRIV_REC_140(choice, ...) ML99_PRIV_REC_NEXT(141, choice)(__VA_ARGS__) #define ML99_PRIV_REC_141(choice, ...) ML99_PRIV_REC_NEXT(142, choice)(__VA_ARGS__) #define ML99_PRIV_REC_142(choice, ...) ML99_PRIV_REC_NEXT(143, choice)(__VA_ARGS__) #define ML99_PRIV_REC_143(choice, ...) ML99_PRIV_REC_NEXT(144, choice)(__VA_ARGS__) #define ML99_PRIV_REC_144(choice, ...) ML99_PRIV_REC_NEXT(145, choice)(__VA_ARGS__) #define ML99_PRIV_REC_145(choice, ...) ML99_PRIV_REC_NEXT(146, choice)(__VA_ARGS__) #define ML99_PRIV_REC_146(choice, ...) ML99_PRIV_REC_NEXT(147, choice)(__VA_ARGS__) #define ML99_PRIV_REC_147(choice, ...) ML99_PRIV_REC_NEXT(148, choice)(__VA_ARGS__) #define ML99_PRIV_REC_148(choice, ...) ML99_PRIV_REC_NEXT(149, choice)(__VA_ARGS__) #define ML99_PRIV_REC_149(choice, ...) ML99_PRIV_REC_NEXT(150, choice)(__VA_ARGS__) #define ML99_PRIV_REC_150(choice, ...) ML99_PRIV_REC_NEXT(151, choice)(__VA_ARGS__) #define ML99_PRIV_REC_151(choice, ...) ML99_PRIV_REC_NEXT(152, choice)(__VA_ARGS__) #define ML99_PRIV_REC_152(choice, ...) ML99_PRIV_REC_NEXT(153, choice)(__VA_ARGS__) #define ML99_PRIV_REC_153(choice, ...) ML99_PRIV_REC_NEXT(154, choice)(__VA_ARGS__) #define ML99_PRIV_REC_154(choice, ...) ML99_PRIV_REC_NEXT(155, choice)(__VA_ARGS__) #define ML99_PRIV_REC_155(choice, ...) ML99_PRIV_REC_NEXT(156, choice)(__VA_ARGS__) #define ML99_PRIV_REC_156(choice, ...) ML99_PRIV_REC_NEXT(157, choice)(__VA_ARGS__) #define ML99_PRIV_REC_157(choice, ...) ML99_PRIV_REC_NEXT(158, choice)(__VA_ARGS__) #define ML99_PRIV_REC_158(choice, ...) ML99_PRIV_REC_NEXT(159, choice)(__VA_ARGS__) #define ML99_PRIV_REC_159(choice, ...) ML99_PRIV_REC_NEXT(160, choice)(__VA_ARGS__) #define ML99_PRIV_REC_160(choice, ...) ML99_PRIV_REC_NEXT(161, choice)(__VA_ARGS__) #define ML99_PRIV_REC_161(choice, ...) ML99_PRIV_REC_NEXT(162, choice)(__VA_ARGS__) #define ML99_PRIV_REC_162(choice, ...) ML99_PRIV_REC_NEXT(163, choice)(__VA_ARGS__) #define ML99_PRIV_REC_163(choice, ...) ML99_PRIV_REC_NEXT(164, choice)(__VA_ARGS__) #define ML99_PRIV_REC_164(choice, ...) ML99_PRIV_REC_NEXT(165, choice)(__VA_ARGS__) #define ML99_PRIV_REC_165(choice, ...) ML99_PRIV_REC_NEXT(166, choice)(__VA_ARGS__) #define ML99_PRIV_REC_166(choice, ...) ML99_PRIV_REC_NEXT(167, choice)(__VA_ARGS__) #define ML99_PRIV_REC_167(choice, ...) ML99_PRIV_REC_NEXT(168, choice)(__VA_ARGS__) #define ML99_PRIV_REC_168(choice, ...) ML99_PRIV_REC_NEXT(169, choice)(__VA_ARGS__) #define ML99_PRIV_REC_169(choice, ...) ML99_PRIV_REC_NEXT(170, choice)(__VA_ARGS__) #define ML99_PRIV_REC_170(choice, ...) ML99_PRIV_REC_NEXT(171, choice)(__VA_ARGS__) #define ML99_PRIV_REC_171(choice, ...) ML99_PRIV_REC_NEXT(172, choice)(__VA_ARGS__) #define ML99_PRIV_REC_172(choice, ...) ML99_PRIV_REC_NEXT(173, choice)(__VA_ARGS__) #define ML99_PRIV_REC_173(choice, ...) ML99_PRIV_REC_NEXT(174, choice)(__VA_ARGS__) #define ML99_PRIV_REC_174(choice, ...) ML99_PRIV_REC_NEXT(175, choice)(__VA_ARGS__) #define ML99_PRIV_REC_175(choice, ...) ML99_PRIV_REC_NEXT(176, choice)(__VA_ARGS__) #define ML99_PRIV_REC_176(choice, ...) ML99_PRIV_REC_NEXT(177, choice)(__VA_ARGS__) #define ML99_PRIV_REC_177(choice, ...) ML99_PRIV_REC_NEXT(178, choice)(__VA_ARGS__) #define ML99_PRIV_REC_178(choice, ...) ML99_PRIV_REC_NEXT(179, choice)(__VA_ARGS__) #define ML99_PRIV_REC_179(choice, ...) ML99_PRIV_REC_NEXT(180, choice)(__VA_ARGS__) #define ML99_PRIV_REC_180(choice, ...) ML99_PRIV_REC_NEXT(181, choice)(__VA_ARGS__) #define ML99_PRIV_REC_181(choice, ...) ML99_PRIV_REC_NEXT(182, choice)(__VA_ARGS__) #define ML99_PRIV_REC_182(choice, ...) ML99_PRIV_REC_NEXT(183, choice)(__VA_ARGS__) #define ML99_PRIV_REC_183(choice, ...) ML99_PRIV_REC_NEXT(184, choice)(__VA_ARGS__) #define ML99_PRIV_REC_184(choice, ...) ML99_PRIV_REC_NEXT(185, choice)(__VA_ARGS__) #define ML99_PRIV_REC_185(choice, ...) ML99_PRIV_REC_NEXT(186, choice)(__VA_ARGS__) #define ML99_PRIV_REC_186(choice, ...) ML99_PRIV_REC_NEXT(187, choice)(__VA_ARGS__) #define ML99_PRIV_REC_187(choice, ...) ML99_PRIV_REC_NEXT(188, choice)(__VA_ARGS__) #define ML99_PRIV_REC_188(choice, ...) ML99_PRIV_REC_NEXT(189, choice)(__VA_ARGS__) #define ML99_PRIV_REC_189(choice, ...) ML99_PRIV_REC_NEXT(190, choice)(__VA_ARGS__) #define ML99_PRIV_REC_190(choice, ...) ML99_PRIV_REC_NEXT(191, choice)(__VA_ARGS__) #define ML99_PRIV_REC_191(choice, ...) ML99_PRIV_REC_NEXT(192, choice)(__VA_ARGS__) #define ML99_PRIV_REC_192(choice, ...) ML99_PRIV_REC_NEXT(193, choice)(__VA_ARGS__) #define ML99_PRIV_REC_193(choice, ...) ML99_PRIV_REC_NEXT(194, choice)(__VA_ARGS__) #define ML99_PRIV_REC_194(choice, ...) ML99_PRIV_REC_NEXT(195, choice)(__VA_ARGS__) #define ML99_PRIV_REC_195(choice, ...) ML99_PRIV_REC_NEXT(196, choice)(__VA_ARGS__) #define ML99_PRIV_REC_196(choice, ...) ML99_PRIV_REC_NEXT(197, choice)(__VA_ARGS__) #define ML99_PRIV_REC_197(choice, ...) ML99_PRIV_REC_NEXT(198, choice)(__VA_ARGS__) #define ML99_PRIV_REC_198(choice, ...) ML99_PRIV_REC_NEXT(199, choice)(__VA_ARGS__) #define ML99_PRIV_REC_199(choice, ...) ML99_PRIV_REC_NEXT(200, choice)(__VA_ARGS__) #define ML99_PRIV_REC_200(choice, ...) ML99_PRIV_REC_NEXT(201, choice)(__VA_ARGS__) #define ML99_PRIV_REC_201(choice, ...) ML99_PRIV_REC_NEXT(202, choice)(__VA_ARGS__) #define ML99_PRIV_REC_202(choice, ...) ML99_PRIV_REC_NEXT(203, choice)(__VA_ARGS__) #define ML99_PRIV_REC_203(choice, ...) ML99_PRIV_REC_NEXT(204, choice)(__VA_ARGS__) #define ML99_PRIV_REC_204(choice, ...) ML99_PRIV_REC_NEXT(205, choice)(__VA_ARGS__) #define ML99_PRIV_REC_205(choice, ...) ML99_PRIV_REC_NEXT(206, choice)(__VA_ARGS__) #define ML99_PRIV_REC_206(choice, ...) ML99_PRIV_REC_NEXT(207, choice)(__VA_ARGS__) #define ML99_PRIV_REC_207(choice, ...) ML99_PRIV_REC_NEXT(208, choice)(__VA_ARGS__) #define ML99_PRIV_REC_208(choice, ...) ML99_PRIV_REC_NEXT(209, choice)(__VA_ARGS__) #define ML99_PRIV_REC_209(choice, ...) ML99_PRIV_REC_NEXT(210, choice)(__VA_ARGS__) #define ML99_PRIV_REC_210(choice, ...) ML99_PRIV_REC_NEXT(211, choice)(__VA_ARGS__) #define ML99_PRIV_REC_211(choice, ...) ML99_PRIV_REC_NEXT(212, choice)(__VA_ARGS__) #define ML99_PRIV_REC_212(choice, ...) ML99_PRIV_REC_NEXT(213, choice)(__VA_ARGS__) #define ML99_PRIV_REC_213(choice, ...) ML99_PRIV_REC_NEXT(214, choice)(__VA_ARGS__) #define ML99_PRIV_REC_214(choice, ...) ML99_PRIV_REC_NEXT(215, choice)(__VA_ARGS__) #define ML99_PRIV_REC_215(choice, ...) ML99_PRIV_REC_NEXT(216, choice)(__VA_ARGS__) #define ML99_PRIV_REC_216(choice, ...) ML99_PRIV_REC_NEXT(217, choice)(__VA_ARGS__) #define ML99_PRIV_REC_217(choice, ...) ML99_PRIV_REC_NEXT(218, choice)(__VA_ARGS__) #define ML99_PRIV_REC_218(choice, ...) ML99_PRIV_REC_NEXT(219, choice)(__VA_ARGS__) #define ML99_PRIV_REC_219(choice, ...) ML99_PRIV_REC_NEXT(220, choice)(__VA_ARGS__) #define ML99_PRIV_REC_220(choice, ...) ML99_PRIV_REC_NEXT(221, choice)(__VA_ARGS__) #define ML99_PRIV_REC_221(choice, ...) ML99_PRIV_REC_NEXT(222, choice)(__VA_ARGS__) #define ML99_PRIV_REC_222(choice, ...) ML99_PRIV_REC_NEXT(223, choice)(__VA_ARGS__) #define ML99_PRIV_REC_223(choice, ...) ML99_PRIV_REC_NEXT(224, choice)(__VA_ARGS__) #define ML99_PRIV_REC_224(choice, ...) ML99_PRIV_REC_NEXT(225, choice)(__VA_ARGS__) #define ML99_PRIV_REC_225(choice, ...) ML99_PRIV_REC_NEXT(226, choice)(__VA_ARGS__) #define ML99_PRIV_REC_226(choice, ...) ML99_PRIV_REC_NEXT(227, choice)(__VA_ARGS__) #define ML99_PRIV_REC_227(choice, ...) ML99_PRIV_REC_NEXT(228, choice)(__VA_ARGS__) #define ML99_PRIV_REC_228(choice, ...) ML99_PRIV_REC_NEXT(229, choice)(__VA_ARGS__) #define ML99_PRIV_REC_229(choice, ...) ML99_PRIV_REC_NEXT(230, choice)(__VA_ARGS__) #define ML99_PRIV_REC_230(choice, ...) ML99_PRIV_REC_NEXT(231, choice)(__VA_ARGS__) #define ML99_PRIV_REC_231(choice, ...) ML99_PRIV_REC_NEXT(232, choice)(__VA_ARGS__) #define ML99_PRIV_REC_232(choice, ...) ML99_PRIV_REC_NEXT(233, choice)(__VA_ARGS__) #define ML99_PRIV_REC_233(choice, ...) ML99_PRIV_REC_NEXT(234, choice)(__VA_ARGS__) #define ML99_PRIV_REC_234(choice, ...) ML99_PRIV_REC_NEXT(235, choice)(__VA_ARGS__) #define ML99_PRIV_REC_235(choice, ...) ML99_PRIV_REC_NEXT(236, choice)(__VA_ARGS__) #define ML99_PRIV_REC_236(choice, ...) ML99_PRIV_REC_NEXT(237, choice)(__VA_ARGS__) #define ML99_PRIV_REC_237(choice, ...) ML99_PRIV_REC_NEXT(238, choice)(__VA_ARGS__) #define ML99_PRIV_REC_238(choice, ...) ML99_PRIV_REC_NEXT(239, choice)(__VA_ARGS__) #define ML99_PRIV_REC_239(choice, ...) ML99_PRIV_REC_NEXT(240, choice)(__VA_ARGS__) #define ML99_PRIV_REC_240(choice, ...) ML99_PRIV_REC_NEXT(241, choice)(__VA_ARGS__) #define ML99_PRIV_REC_241(choice, ...) ML99_PRIV_REC_NEXT(242, choice)(__VA_ARGS__) #define ML99_PRIV_REC_242(choice, ...) ML99_PRIV_REC_NEXT(243, choice)(__VA_ARGS__) #define ML99_PRIV_REC_243(choice, ...) ML99_PRIV_REC_NEXT(244, choice)(__VA_ARGS__) #define ML99_PRIV_REC_244(choice, ...) ML99_PRIV_REC_NEXT(245, choice)(__VA_ARGS__) #define ML99_PRIV_REC_245(choice, ...) ML99_PRIV_REC_NEXT(246, choice)(__VA_ARGS__) #define ML99_PRIV_REC_246(choice, ...) ML99_PRIV_REC_NEXT(247, choice)(__VA_ARGS__) #define ML99_PRIV_REC_247(choice, ...) ML99_PRIV_REC_NEXT(248, choice)(__VA_ARGS__) #define ML99_PRIV_REC_248(choice, ...) ML99_PRIV_REC_NEXT(249, choice)(__VA_ARGS__) #define ML99_PRIV_REC_249(choice, ...) ML99_PRIV_REC_NEXT(250, choice)(__VA_ARGS__) #define ML99_PRIV_REC_250(choice, ...) ML99_PRIV_REC_NEXT(251, choice)(__VA_ARGS__) #define ML99_PRIV_REC_251(choice, ...) ML99_PRIV_REC_NEXT(252, choice)(__VA_ARGS__) #define ML99_PRIV_REC_252(choice, ...) ML99_PRIV_REC_NEXT(253, choice)(__VA_ARGS__) #define ML99_PRIV_REC_253(choice, ...) ML99_PRIV_REC_NEXT(254, choice)(__VA_ARGS__) #define ML99_PRIV_REC_254(choice, ...) ML99_PRIV_REC_NEXT(255, choice)(__VA_ARGS__) #define ML99_PRIV_REC_255(choice, ...) ML99_PRIV_REC_NEXT(256, choice)(__VA_ARGS__) #define ML99_PRIV_REC_256(choice, ...) ML99_PRIV_REC_NEXT(257, choice)(__VA_ARGS__) #define ML99_PRIV_REC_257(choice, ...) ML99_PRIV_REC_NEXT(258, choice)(__VA_ARGS__) #define ML99_PRIV_REC_258(choice, ...) ML99_PRIV_REC_NEXT(259, choice)(__VA_ARGS__) #define ML99_PRIV_REC_259(choice, ...) ML99_PRIV_REC_NEXT(260, choice)(__VA_ARGS__) #define ML99_PRIV_REC_260(choice, ...) ML99_PRIV_REC_NEXT(261, choice)(__VA_ARGS__) #define ML99_PRIV_REC_261(choice, ...) ML99_PRIV_REC_NEXT(262, choice)(__VA_ARGS__) #define ML99_PRIV_REC_262(choice, ...) ML99_PRIV_REC_NEXT(263, choice)(__VA_ARGS__) #define ML99_PRIV_REC_263(choice, ...) ML99_PRIV_REC_NEXT(264, choice)(__VA_ARGS__) #define ML99_PRIV_REC_264(choice, ...) ML99_PRIV_REC_NEXT(265, choice)(__VA_ARGS__) #define ML99_PRIV_REC_265(choice, ...) ML99_PRIV_REC_NEXT(266, choice)(__VA_ARGS__) #define ML99_PRIV_REC_266(choice, ...) ML99_PRIV_REC_NEXT(267, choice)(__VA_ARGS__) #define ML99_PRIV_REC_267(choice, ...) ML99_PRIV_REC_NEXT(268, choice)(__VA_ARGS__) #define ML99_PRIV_REC_268(choice, ...) ML99_PRIV_REC_NEXT(269, choice)(__VA_ARGS__) #define ML99_PRIV_REC_269(choice, ...) ML99_PRIV_REC_NEXT(270, choice)(__VA_ARGS__) #define ML99_PRIV_REC_270(choice, ...) ML99_PRIV_REC_NEXT(271, choice)(__VA_ARGS__) #define ML99_PRIV_REC_271(choice, ...) ML99_PRIV_REC_NEXT(272, choice)(__VA_ARGS__) #define ML99_PRIV_REC_272(choice, ...) ML99_PRIV_REC_NEXT(273, choice)(__VA_ARGS__) #define ML99_PRIV_REC_273(choice, ...) ML99_PRIV_REC_NEXT(274, choice)(__VA_ARGS__) #define ML99_PRIV_REC_274(choice, ...) ML99_PRIV_REC_NEXT(275, choice)(__VA_ARGS__) #define ML99_PRIV_REC_275(choice, ...) ML99_PRIV_REC_NEXT(276, choice)(__VA_ARGS__) #define ML99_PRIV_REC_276(choice, ...) ML99_PRIV_REC_NEXT(277, choice)(__VA_ARGS__) #define ML99_PRIV_REC_277(choice, ...) ML99_PRIV_REC_NEXT(278, choice)(__VA_ARGS__) #define ML99_PRIV_REC_278(choice, ...) ML99_PRIV_REC_NEXT(279, choice)(__VA_ARGS__) #define ML99_PRIV_REC_279(choice, ...) ML99_PRIV_REC_NEXT(280, choice)(__VA_ARGS__) #define ML99_PRIV_REC_280(choice, ...) ML99_PRIV_REC_NEXT(281, choice)(__VA_ARGS__) #define ML99_PRIV_REC_281(choice, ...) ML99_PRIV_REC_NEXT(282, choice)(__VA_ARGS__) #define ML99_PRIV_REC_282(choice, ...) ML99_PRIV_REC_NEXT(283, choice)(__VA_ARGS__) #define ML99_PRIV_REC_283(choice, ...) ML99_PRIV_REC_NEXT(284, choice)(__VA_ARGS__) #define ML99_PRIV_REC_284(choice, ...) ML99_PRIV_REC_NEXT(285, choice)(__VA_ARGS__) #define ML99_PRIV_REC_285(choice, ...) ML99_PRIV_REC_NEXT(286, choice)(__VA_ARGS__) #define ML99_PRIV_REC_286(choice, ...) ML99_PRIV_REC_NEXT(287, choice)(__VA_ARGS__) #define ML99_PRIV_REC_287(choice, ...) ML99_PRIV_REC_NEXT(288, choice)(__VA_ARGS__) #define ML99_PRIV_REC_288(choice, ...) ML99_PRIV_REC_NEXT(289, choice)(__VA_ARGS__) #define ML99_PRIV_REC_289(choice, ...) ML99_PRIV_REC_NEXT(290, choice)(__VA_ARGS__) #define ML99_PRIV_REC_290(choice, ...) ML99_PRIV_REC_NEXT(291, choice)(__VA_ARGS__) #define ML99_PRIV_REC_291(choice, ...) ML99_PRIV_REC_NEXT(292, choice)(__VA_ARGS__) #define ML99_PRIV_REC_292(choice, ...) ML99_PRIV_REC_NEXT(293, choice)(__VA_ARGS__) #define ML99_PRIV_REC_293(choice, ...) ML99_PRIV_REC_NEXT(294, choice)(__VA_ARGS__) #define ML99_PRIV_REC_294(choice, ...) ML99_PRIV_REC_NEXT(295, choice)(__VA_ARGS__) #define ML99_PRIV_REC_295(choice, ...) ML99_PRIV_REC_NEXT(296, choice)(__VA_ARGS__) #define ML99_PRIV_REC_296(choice, ...) ML99_PRIV_REC_NEXT(297, choice)(__VA_ARGS__) #define ML99_PRIV_REC_297(choice, ...) ML99_PRIV_REC_NEXT(298, choice)(__VA_ARGS__) #define ML99_PRIV_REC_298(choice, ...) ML99_PRIV_REC_NEXT(299, choice)(__VA_ARGS__) #define ML99_PRIV_REC_299(choice, ...) ML99_PRIV_REC_NEXT(300, choice)(__VA_ARGS__) #define ML99_PRIV_REC_300(choice, ...) ML99_PRIV_REC_NEXT(301, choice)(__VA_ARGS__) #define ML99_PRIV_REC_301(choice, ...) ML99_PRIV_REC_NEXT(302, choice)(__VA_ARGS__) #define ML99_PRIV_REC_302(choice, ...) ML99_PRIV_REC_NEXT(303, choice)(__VA_ARGS__) #define ML99_PRIV_REC_303(choice, ...) ML99_PRIV_REC_NEXT(304, choice)(__VA_ARGS__) #define ML99_PRIV_REC_304(choice, ...) ML99_PRIV_REC_NEXT(305, choice)(__VA_ARGS__) #define ML99_PRIV_REC_305(choice, ...) ML99_PRIV_REC_NEXT(306, choice)(__VA_ARGS__) #define ML99_PRIV_REC_306(choice, ...) ML99_PRIV_REC_NEXT(307, choice)(__VA_ARGS__) #define ML99_PRIV_REC_307(choice, ...) ML99_PRIV_REC_NEXT(308, choice)(__VA_ARGS__) #define ML99_PRIV_REC_308(choice, ...) ML99_PRIV_REC_NEXT(309, choice)(__VA_ARGS__) #define ML99_PRIV_REC_309(choice, ...) ML99_PRIV_REC_NEXT(310, choice)(__VA_ARGS__) #define ML99_PRIV_REC_310(choice, ...) ML99_PRIV_REC_NEXT(311, choice)(__VA_ARGS__) #define ML99_PRIV_REC_311(choice, ...) ML99_PRIV_REC_NEXT(312, choice)(__VA_ARGS__) #define ML99_PRIV_REC_312(choice, ...) ML99_PRIV_REC_NEXT(313, choice)(__VA_ARGS__) #define ML99_PRIV_REC_313(choice, ...) ML99_PRIV_REC_NEXT(314, choice)(__VA_ARGS__) #define ML99_PRIV_REC_314(choice, ...) ML99_PRIV_REC_NEXT(315, choice)(__VA_ARGS__) #define ML99_PRIV_REC_315(choice, ...) ML99_PRIV_REC_NEXT(316, choice)(__VA_ARGS__) #define ML99_PRIV_REC_316(choice, ...) ML99_PRIV_REC_NEXT(317, choice)(__VA_ARGS__) #define ML99_PRIV_REC_317(choice, ...) ML99_PRIV_REC_NEXT(318, choice)(__VA_ARGS__) #define ML99_PRIV_REC_318(choice, ...) ML99_PRIV_REC_NEXT(319, choice)(__VA_ARGS__) #define ML99_PRIV_REC_319(choice, ...) ML99_PRIV_REC_NEXT(320, choice)(__VA_ARGS__) #define ML99_PRIV_REC_320(choice, ...) ML99_PRIV_REC_NEXT(321, choice)(__VA_ARGS__) #define ML99_PRIV_REC_321(choice, ...) ML99_PRIV_REC_NEXT(322, choice)(__VA_ARGS__) #define ML99_PRIV_REC_322(choice, ...) ML99_PRIV_REC_NEXT(323, choice)(__VA_ARGS__) #define ML99_PRIV_REC_323(choice, ...) ML99_PRIV_REC_NEXT(324, choice)(__VA_ARGS__) #define ML99_PRIV_REC_324(choice, ...) ML99_PRIV_REC_NEXT(325, choice)(__VA_ARGS__) #define ML99_PRIV_REC_325(choice, ...) ML99_PRIV_REC_NEXT(326, choice)(__VA_ARGS__) #define ML99_PRIV_REC_326(choice, ...) ML99_PRIV_REC_NEXT(327, choice)(__VA_ARGS__) #define ML99_PRIV_REC_327(choice, ...) ML99_PRIV_REC_NEXT(328, choice)(__VA_ARGS__) #define ML99_PRIV_REC_328(choice, ...) ML99_PRIV_REC_NEXT(329, choice)(__VA_ARGS__) #define ML99_PRIV_REC_329(choice, ...) ML99_PRIV_REC_NEXT(330, choice)(__VA_ARGS__) #define ML99_PRIV_REC_330(choice, ...) ML99_PRIV_REC_NEXT(331, choice)(__VA_ARGS__) #define ML99_PRIV_REC_331(choice, ...) ML99_PRIV_REC_NEXT(332, choice)(__VA_ARGS__) #define ML99_PRIV_REC_332(choice, ...) ML99_PRIV_REC_NEXT(333, choice)(__VA_ARGS__) #define ML99_PRIV_REC_333(choice, ...) ML99_PRIV_REC_NEXT(334, choice)(__VA_ARGS__) #define ML99_PRIV_REC_334(choice, ...) ML99_PRIV_REC_NEXT(335, choice)(__VA_ARGS__) #define ML99_PRIV_REC_335(choice, ...) ML99_PRIV_REC_NEXT(336, choice)(__VA_ARGS__) #define ML99_PRIV_REC_336(choice, ...) ML99_PRIV_REC_NEXT(337, choice)(__VA_ARGS__) #define ML99_PRIV_REC_337(choice, ...) ML99_PRIV_REC_NEXT(338, choice)(__VA_ARGS__) #define ML99_PRIV_REC_338(choice, ...) ML99_PRIV_REC_NEXT(339, choice)(__VA_ARGS__) #define ML99_PRIV_REC_339(choice, ...) ML99_PRIV_REC_NEXT(340, choice)(__VA_ARGS__) #define ML99_PRIV_REC_340(choice, ...) ML99_PRIV_REC_NEXT(341, choice)(__VA_ARGS__) #define ML99_PRIV_REC_341(choice, ...) ML99_PRIV_REC_NEXT(342, choice)(__VA_ARGS__) #define ML99_PRIV_REC_342(choice, ...) ML99_PRIV_REC_NEXT(343, choice)(__VA_ARGS__) #define ML99_PRIV_REC_343(choice, ...) ML99_PRIV_REC_NEXT(344, choice)(__VA_ARGS__) #define ML99_PRIV_REC_344(choice, ...) ML99_PRIV_REC_NEXT(345, choice)(__VA_ARGS__) #define ML99_PRIV_REC_345(choice, ...) ML99_PRIV_REC_NEXT(346, choice)(__VA_ARGS__) #define ML99_PRIV_REC_346(choice, ...) ML99_PRIV_REC_NEXT(347, choice)(__VA_ARGS__) #define ML99_PRIV_REC_347(choice, ...) ML99_PRIV_REC_NEXT(348, choice)(__VA_ARGS__) #define ML99_PRIV_REC_348(choice, ...) ML99_PRIV_REC_NEXT(349, choice)(__VA_ARGS__) #define ML99_PRIV_REC_349(choice, ...) ML99_PRIV_REC_NEXT(350, choice)(__VA_ARGS__) #define ML99_PRIV_REC_350(choice, ...) ML99_PRIV_REC_NEXT(351, choice)(__VA_ARGS__) #define ML99_PRIV_REC_351(choice, ...) ML99_PRIV_REC_NEXT(352, choice)(__VA_ARGS__) #define ML99_PRIV_REC_352(choice, ...) ML99_PRIV_REC_NEXT(353, choice)(__VA_ARGS__) #define ML99_PRIV_REC_353(choice, ...) ML99_PRIV_REC_NEXT(354, choice)(__VA_ARGS__) #define ML99_PRIV_REC_354(choice, ...) ML99_PRIV_REC_NEXT(355, choice)(__VA_ARGS__) #define ML99_PRIV_REC_355(choice, ...) ML99_PRIV_REC_NEXT(356, choice)(__VA_ARGS__) #define ML99_PRIV_REC_356(choice, ...) ML99_PRIV_REC_NEXT(357, choice)(__VA_ARGS__) #define ML99_PRIV_REC_357(choice, ...) ML99_PRIV_REC_NEXT(358, choice)(__VA_ARGS__) #define ML99_PRIV_REC_358(choice, ...) ML99_PRIV_REC_NEXT(359, choice)(__VA_ARGS__) #define ML99_PRIV_REC_359(choice, ...) ML99_PRIV_REC_NEXT(360, choice)(__VA_ARGS__) #define ML99_PRIV_REC_360(choice, ...) ML99_PRIV_REC_NEXT(361, choice)(__VA_ARGS__) #define ML99_PRIV_REC_361(choice, ...) ML99_PRIV_REC_NEXT(362, choice)(__VA_ARGS__) #define ML99_PRIV_REC_362(choice, ...) ML99_PRIV_REC_NEXT(363, choice)(__VA_ARGS__) #define ML99_PRIV_REC_363(choice, ...) ML99_PRIV_REC_NEXT(364, choice)(__VA_ARGS__) #define ML99_PRIV_REC_364(choice, ...) ML99_PRIV_REC_NEXT(365, choice)(__VA_ARGS__) #define ML99_PRIV_REC_365(choice, ...) ML99_PRIV_REC_NEXT(366, choice)(__VA_ARGS__) #define ML99_PRIV_REC_366(choice, ...) ML99_PRIV_REC_NEXT(367, choice)(__VA_ARGS__) #define ML99_PRIV_REC_367(choice, ...) ML99_PRIV_REC_NEXT(368, choice)(__VA_ARGS__) #define ML99_PRIV_REC_368(choice, ...) ML99_PRIV_REC_NEXT(369, choice)(__VA_ARGS__) #define ML99_PRIV_REC_369(choice, ...) ML99_PRIV_REC_NEXT(370, choice)(__VA_ARGS__) #define ML99_PRIV_REC_370(choice, ...) ML99_PRIV_REC_NEXT(371, choice)(__VA_ARGS__) #define ML99_PRIV_REC_371(choice, ...) ML99_PRIV_REC_NEXT(372, choice)(__VA_ARGS__) #define ML99_PRIV_REC_372(choice, ...) ML99_PRIV_REC_NEXT(373, choice)(__VA_ARGS__) #define ML99_PRIV_REC_373(choice, ...) ML99_PRIV_REC_NEXT(374, choice)(__VA_ARGS__) #define ML99_PRIV_REC_374(choice, ...) ML99_PRIV_REC_NEXT(375, choice)(__VA_ARGS__) #define ML99_PRIV_REC_375(choice, ...) ML99_PRIV_REC_NEXT(376, choice)(__VA_ARGS__) #define ML99_PRIV_REC_376(choice, ...) ML99_PRIV_REC_NEXT(377, choice)(__VA_ARGS__) #define ML99_PRIV_REC_377(choice, ...) ML99_PRIV_REC_NEXT(378, choice)(__VA_ARGS__) #define ML99_PRIV_REC_378(choice, ...) ML99_PRIV_REC_NEXT(379, choice)(__VA_ARGS__) #define ML99_PRIV_REC_379(choice, ...) ML99_PRIV_REC_NEXT(380, choice)(__VA_ARGS__) #define ML99_PRIV_REC_380(choice, ...) ML99_PRIV_REC_NEXT(381, choice)(__VA_ARGS__) #define ML99_PRIV_REC_381(choice, ...) ML99_PRIV_REC_NEXT(382, choice)(__VA_ARGS__) #define ML99_PRIV_REC_382(choice, ...) ML99_PRIV_REC_NEXT(383, choice)(__VA_ARGS__) #define ML99_PRIV_REC_383(choice, ...) ML99_PRIV_REC_NEXT(384, choice)(__VA_ARGS__) #define ML99_PRIV_REC_384(choice, ...) ML99_PRIV_REC_NEXT(385, choice)(__VA_ARGS__) #define ML99_PRIV_REC_385(choice, ...) ML99_PRIV_REC_NEXT(386, choice)(__VA_ARGS__) #define ML99_PRIV_REC_386(choice, ...) ML99_PRIV_REC_NEXT(387, choice)(__VA_ARGS__) #define ML99_PRIV_REC_387(choice, ...) ML99_PRIV_REC_NEXT(388, choice)(__VA_ARGS__) #define ML99_PRIV_REC_388(choice, ...) ML99_PRIV_REC_NEXT(389, choice)(__VA_ARGS__) #define ML99_PRIV_REC_389(choice, ...) ML99_PRIV_REC_NEXT(390, choice)(__VA_ARGS__) #define ML99_PRIV_REC_390(choice, ...) ML99_PRIV_REC_NEXT(391, choice)(__VA_ARGS__) #define ML99_PRIV_REC_391(choice, ...) ML99_PRIV_REC_NEXT(392, choice)(__VA_ARGS__) #define ML99_PRIV_REC_392(choice, ...) ML99_PRIV_REC_NEXT(393, choice)(__VA_ARGS__) #define ML99_PRIV_REC_393(choice, ...) ML99_PRIV_REC_NEXT(394, choice)(__VA_ARGS__) #define ML99_PRIV_REC_394(choice, ...) ML99_PRIV_REC_NEXT(395, choice)(__VA_ARGS__) #define ML99_PRIV_REC_395(choice, ...) ML99_PRIV_REC_NEXT(396, choice)(__VA_ARGS__) #define ML99_PRIV_REC_396(choice, ...) ML99_PRIV_REC_NEXT(397, choice)(__VA_ARGS__) #define ML99_PRIV_REC_397(choice, ...) ML99_PRIV_REC_NEXT(398, choice)(__VA_ARGS__) #define ML99_PRIV_REC_398(choice, ...) ML99_PRIV_REC_NEXT(399, choice)(__VA_ARGS__) #define ML99_PRIV_REC_399(choice, ...) ML99_PRIV_REC_NEXT(400, choice)(__VA_ARGS__) #define ML99_PRIV_REC_400(choice, ...) ML99_PRIV_REC_NEXT(401, choice)(__VA_ARGS__) #define ML99_PRIV_REC_401(choice, ...) ML99_PRIV_REC_NEXT(402, choice)(__VA_ARGS__) #define ML99_PRIV_REC_402(choice, ...) ML99_PRIV_REC_NEXT(403, choice)(__VA_ARGS__) #define ML99_PRIV_REC_403(choice, ...) ML99_PRIV_REC_NEXT(404, choice)(__VA_ARGS__) #define ML99_PRIV_REC_404(choice, ...) ML99_PRIV_REC_NEXT(405, choice)(__VA_ARGS__) #define ML99_PRIV_REC_405(choice, ...) ML99_PRIV_REC_NEXT(406, choice)(__VA_ARGS__) #define ML99_PRIV_REC_406(choice, ...) ML99_PRIV_REC_NEXT(407, choice)(__VA_ARGS__) #define ML99_PRIV_REC_407(choice, ...) ML99_PRIV_REC_NEXT(408, choice)(__VA_ARGS__) #define ML99_PRIV_REC_408(choice, ...) ML99_PRIV_REC_NEXT(409, choice)(__VA_ARGS__) #define ML99_PRIV_REC_409(choice, ...) ML99_PRIV_REC_NEXT(410, choice)(__VA_ARGS__) #define ML99_PRIV_REC_410(choice, ...) ML99_PRIV_REC_NEXT(411, choice)(__VA_ARGS__) #define ML99_PRIV_REC_411(choice, ...) ML99_PRIV_REC_NEXT(412, choice)(__VA_ARGS__) #define ML99_PRIV_REC_412(choice, ...) ML99_PRIV_REC_NEXT(413, choice)(__VA_ARGS__) #define ML99_PRIV_REC_413(choice, ...) ML99_PRIV_REC_NEXT(414, choice)(__VA_ARGS__) #define ML99_PRIV_REC_414(choice, ...) ML99_PRIV_REC_NEXT(415, choice)(__VA_ARGS__) #define ML99_PRIV_REC_415(choice, ...) ML99_PRIV_REC_NEXT(416, choice)(__VA_ARGS__) #define ML99_PRIV_REC_416(choice, ...) ML99_PRIV_REC_NEXT(417, choice)(__VA_ARGS__) #define ML99_PRIV_REC_417(choice, ...) ML99_PRIV_REC_NEXT(418, choice)(__VA_ARGS__) #define ML99_PRIV_REC_418(choice, ...) ML99_PRIV_REC_NEXT(419, choice)(__VA_ARGS__) #define ML99_PRIV_REC_419(choice, ...) ML99_PRIV_REC_NEXT(420, choice)(__VA_ARGS__) #define ML99_PRIV_REC_420(choice, ...) ML99_PRIV_REC_NEXT(421, choice)(__VA_ARGS__) #define ML99_PRIV_REC_421(choice, ...) ML99_PRIV_REC_NEXT(422, choice)(__VA_ARGS__) #define ML99_PRIV_REC_422(choice, ...) ML99_PRIV_REC_NEXT(423, choice)(__VA_ARGS__) #define ML99_PRIV_REC_423(choice, ...) ML99_PRIV_REC_NEXT(424, choice)(__VA_ARGS__) #define ML99_PRIV_REC_424(choice, ...) ML99_PRIV_REC_NEXT(425, choice)(__VA_ARGS__) #define ML99_PRIV_REC_425(choice, ...) ML99_PRIV_REC_NEXT(426, choice)(__VA_ARGS__) #define ML99_PRIV_REC_426(choice, ...) ML99_PRIV_REC_NEXT(427, choice)(__VA_ARGS__) #define ML99_PRIV_REC_427(choice, ...) ML99_PRIV_REC_NEXT(428, choice)(__VA_ARGS__) #define ML99_PRIV_REC_428(choice, ...) ML99_PRIV_REC_NEXT(429, choice)(__VA_ARGS__) #define ML99_PRIV_REC_429(choice, ...) ML99_PRIV_REC_NEXT(430, choice)(__VA_ARGS__) #define ML99_PRIV_REC_430(choice, ...) ML99_PRIV_REC_NEXT(431, choice)(__VA_ARGS__) #define ML99_PRIV_REC_431(choice, ...) ML99_PRIV_REC_NEXT(432, choice)(__VA_ARGS__) #define ML99_PRIV_REC_432(choice, ...) ML99_PRIV_REC_NEXT(433, choice)(__VA_ARGS__) #define ML99_PRIV_REC_433(choice, ...) ML99_PRIV_REC_NEXT(434, choice)(__VA_ARGS__) #define ML99_PRIV_REC_434(choice, ...) ML99_PRIV_REC_NEXT(435, choice)(__VA_ARGS__) #define ML99_PRIV_REC_435(choice, ...) ML99_PRIV_REC_NEXT(436, choice)(__VA_ARGS__) #define ML99_PRIV_REC_436(choice, ...) ML99_PRIV_REC_NEXT(437, choice)(__VA_ARGS__) #define ML99_PRIV_REC_437(choice, ...) ML99_PRIV_REC_NEXT(438, choice)(__VA_ARGS__) #define ML99_PRIV_REC_438(choice, ...) ML99_PRIV_REC_NEXT(439, choice)(__VA_ARGS__) #define ML99_PRIV_REC_439(choice, ...) ML99_PRIV_REC_NEXT(440, choice)(__VA_ARGS__) #define ML99_PRIV_REC_440(choice, ...) ML99_PRIV_REC_NEXT(441, choice)(__VA_ARGS__) #define ML99_PRIV_REC_441(choice, ...) ML99_PRIV_REC_NEXT(442, choice)(__VA_ARGS__) #define ML99_PRIV_REC_442(choice, ...) ML99_PRIV_REC_NEXT(443, choice)(__VA_ARGS__) #define ML99_PRIV_REC_443(choice, ...) ML99_PRIV_REC_NEXT(444, choice)(__VA_ARGS__) #define ML99_PRIV_REC_444(choice, ...) ML99_PRIV_REC_NEXT(445, choice)(__VA_ARGS__) #define ML99_PRIV_REC_445(choice, ...) ML99_PRIV_REC_NEXT(446, choice)(__VA_ARGS__) #define ML99_PRIV_REC_446(choice, ...) ML99_PRIV_REC_NEXT(447, choice)(__VA_ARGS__) #define ML99_PRIV_REC_447(choice, ...) ML99_PRIV_REC_NEXT(448, choice)(__VA_ARGS__) #define ML99_PRIV_REC_448(choice, ...) ML99_PRIV_REC_NEXT(449, choice)(__VA_ARGS__) #define ML99_PRIV_REC_449(choice, ...) ML99_PRIV_REC_NEXT(450, choice)(__VA_ARGS__) #define ML99_PRIV_REC_450(choice, ...) ML99_PRIV_REC_NEXT(451, choice)(__VA_ARGS__) #define ML99_PRIV_REC_451(choice, ...) ML99_PRIV_REC_NEXT(452, choice)(__VA_ARGS__) #define ML99_PRIV_REC_452(choice, ...) ML99_PRIV_REC_NEXT(453, choice)(__VA_ARGS__) #define ML99_PRIV_REC_453(choice, ...) ML99_PRIV_REC_NEXT(454, choice)(__VA_ARGS__) #define ML99_PRIV_REC_454(choice, ...) ML99_PRIV_REC_NEXT(455, choice)(__VA_ARGS__) #define ML99_PRIV_REC_455(choice, ...) ML99_PRIV_REC_NEXT(456, choice)(__VA_ARGS__) #define ML99_PRIV_REC_456(choice, ...) ML99_PRIV_REC_NEXT(457, choice)(__VA_ARGS__) #define ML99_PRIV_REC_457(choice, ...) ML99_PRIV_REC_NEXT(458, choice)(__VA_ARGS__) #define ML99_PRIV_REC_458(choice, ...) ML99_PRIV_REC_NEXT(459, choice)(__VA_ARGS__) #define ML99_PRIV_REC_459(choice, ...) ML99_PRIV_REC_NEXT(460, choice)(__VA_ARGS__) #define ML99_PRIV_REC_460(choice, ...) ML99_PRIV_REC_NEXT(461, choice)(__VA_ARGS__) #define ML99_PRIV_REC_461(choice, ...) ML99_PRIV_REC_NEXT(462, choice)(__VA_ARGS__) #define ML99_PRIV_REC_462(choice, ...) ML99_PRIV_REC_NEXT(463, choice)(__VA_ARGS__) #define ML99_PRIV_REC_463(choice, ...) ML99_PRIV_REC_NEXT(464, choice)(__VA_ARGS__) #define ML99_PRIV_REC_464(choice, ...) ML99_PRIV_REC_NEXT(465, choice)(__VA_ARGS__) #define ML99_PRIV_REC_465(choice, ...) ML99_PRIV_REC_NEXT(466, choice)(__VA_ARGS__) #define ML99_PRIV_REC_466(choice, ...) ML99_PRIV_REC_NEXT(467, choice)(__VA_ARGS__) #define ML99_PRIV_REC_467(choice, ...) ML99_PRIV_REC_NEXT(468, choice)(__VA_ARGS__) #define ML99_PRIV_REC_468(choice, ...) ML99_PRIV_REC_NEXT(469, choice)(__VA_ARGS__) #define ML99_PRIV_REC_469(choice, ...) ML99_PRIV_REC_NEXT(470, choice)(__VA_ARGS__) #define ML99_PRIV_REC_470(choice, ...) ML99_PRIV_REC_NEXT(471, choice)(__VA_ARGS__) #define ML99_PRIV_REC_471(choice, ...) ML99_PRIV_REC_NEXT(472, choice)(__VA_ARGS__) #define ML99_PRIV_REC_472(choice, ...) ML99_PRIV_REC_NEXT(473, choice)(__VA_ARGS__) #define ML99_PRIV_REC_473(choice, ...) ML99_PRIV_REC_NEXT(474, choice)(__VA_ARGS__) #define ML99_PRIV_REC_474(choice, ...) ML99_PRIV_REC_NEXT(475, choice)(__VA_ARGS__) #define ML99_PRIV_REC_475(choice, ...) ML99_PRIV_REC_NEXT(476, choice)(__VA_ARGS__) #define ML99_PRIV_REC_476(choice, ...) ML99_PRIV_REC_NEXT(477, choice)(__VA_ARGS__) #define ML99_PRIV_REC_477(choice, ...) ML99_PRIV_REC_NEXT(478, choice)(__VA_ARGS__) #define ML99_PRIV_REC_478(choice, ...) ML99_PRIV_REC_NEXT(479, choice)(__VA_ARGS__) #define ML99_PRIV_REC_479(choice, ...) ML99_PRIV_REC_NEXT(480, choice)(__VA_ARGS__) #define ML99_PRIV_REC_480(choice, ...) ML99_PRIV_REC_NEXT(481, choice)(__VA_ARGS__) #define ML99_PRIV_REC_481(choice, ...) ML99_PRIV_REC_NEXT(482, choice)(__VA_ARGS__) #define ML99_PRIV_REC_482(choice, ...) ML99_PRIV_REC_NEXT(483, choice)(__VA_ARGS__) #define ML99_PRIV_REC_483(choice, ...) ML99_PRIV_REC_NEXT(484, choice)(__VA_ARGS__) #define ML99_PRIV_REC_484(choice, ...) ML99_PRIV_REC_NEXT(485, choice)(__VA_ARGS__) #define ML99_PRIV_REC_485(choice, ...) ML99_PRIV_REC_NEXT(486, choice)(__VA_ARGS__) #define ML99_PRIV_REC_486(choice, ...) ML99_PRIV_REC_NEXT(487, choice)(__VA_ARGS__) #define ML99_PRIV_REC_487(choice, ...) ML99_PRIV_REC_NEXT(488, choice)(__VA_ARGS__) #define ML99_PRIV_REC_488(choice, ...) ML99_PRIV_REC_NEXT(489, choice)(__VA_ARGS__) #define ML99_PRIV_REC_489(choice, ...) ML99_PRIV_REC_NEXT(490, choice)(__VA_ARGS__) #define ML99_PRIV_REC_490(choice, ...) ML99_PRIV_REC_NEXT(491, choice)(__VA_ARGS__) #define ML99_PRIV_REC_491(choice, ...) ML99_PRIV_REC_NEXT(492, choice)(__VA_ARGS__) #define ML99_PRIV_REC_492(choice, ...) ML99_PRIV_REC_NEXT(493, choice)(__VA_ARGS__) #define ML99_PRIV_REC_493(choice, ...) ML99_PRIV_REC_NEXT(494, choice)(__VA_ARGS__) #define ML99_PRIV_REC_494(choice, ...) ML99_PRIV_REC_NEXT(495, choice)(__VA_ARGS__) #define ML99_PRIV_REC_495(choice, ...) ML99_PRIV_REC_NEXT(496, choice)(__VA_ARGS__) #define ML99_PRIV_REC_496(choice, ...) ML99_PRIV_REC_NEXT(497, choice)(__VA_ARGS__) #define ML99_PRIV_REC_497(choice, ...) ML99_PRIV_REC_NEXT(498, choice)(__VA_ARGS__) #define ML99_PRIV_REC_498(choice, ...) ML99_PRIV_REC_NEXT(499, choice)(__VA_ARGS__) #define ML99_PRIV_REC_499(choice, ...) ML99_PRIV_REC_NEXT(500, choice)(__VA_ARGS__) #define ML99_PRIV_REC_500(choice, ...) ML99_PRIV_REC_NEXT(501, choice)(__VA_ARGS__) #define ML99_PRIV_REC_501(choice, ...) ML99_PRIV_REC_NEXT(502, choice)(__VA_ARGS__) #define ML99_PRIV_REC_502(choice, ...) ML99_PRIV_REC_NEXT(503, choice)(__VA_ARGS__) #define ML99_PRIV_REC_503(choice, ...) ML99_PRIV_REC_NEXT(504, choice)(__VA_ARGS__) #define ML99_PRIV_REC_504(choice, ...) ML99_PRIV_REC_NEXT(505, choice)(__VA_ARGS__) #define ML99_PRIV_REC_505(choice, ...) ML99_PRIV_REC_NEXT(506, choice)(__VA_ARGS__) #define ML99_PRIV_REC_506(choice, ...) ML99_PRIV_REC_NEXT(507, choice)(__VA_ARGS__) #define ML99_PRIV_REC_507(choice, ...) ML99_PRIV_REC_NEXT(508, choice)(__VA_ARGS__) #define ML99_PRIV_REC_508(choice, ...) ML99_PRIV_REC_NEXT(509, choice)(__VA_ARGS__) #define ML99_PRIV_REC_509(choice, ...) ML99_PRIV_REC_NEXT(510, choice)(__VA_ARGS__) #define ML99_PRIV_REC_510(choice, ...) ML99_PRIV_REC_NEXT(511, choice)(__VA_ARGS__) #define ML99_PRIV_REC_511(choice, ...) ML99_PRIV_REC_NEXT(512, choice)(__VA_ARGS__) #define ML99_PRIV_REC_512(choice, ...) ML99_PRIV_REC_NEXT(513, choice)(__VA_ARGS__) #define ML99_PRIV_REC_513(choice, ...) ML99_PRIV_REC_NEXT(514, choice)(__VA_ARGS__) #define ML99_PRIV_REC_514(choice, ...) ML99_PRIV_REC_NEXT(515, choice)(__VA_ARGS__) #define ML99_PRIV_REC_515(choice, ...) ML99_PRIV_REC_NEXT(516, choice)(__VA_ARGS__) #define ML99_PRIV_REC_516(choice, ...) ML99_PRIV_REC_NEXT(517, choice)(__VA_ARGS__) #define ML99_PRIV_REC_517(choice, ...) ML99_PRIV_REC_NEXT(518, choice)(__VA_ARGS__) #define ML99_PRIV_REC_518(choice, ...) ML99_PRIV_REC_NEXT(519, choice)(__VA_ARGS__) #define ML99_PRIV_REC_519(choice, ...) ML99_PRIV_REC_NEXT(520, choice)(__VA_ARGS__) #define ML99_PRIV_REC_520(choice, ...) ML99_PRIV_REC_NEXT(521, choice)(__VA_ARGS__) #define ML99_PRIV_REC_521(choice, ...) ML99_PRIV_REC_NEXT(522, choice)(__VA_ARGS__) #define ML99_PRIV_REC_522(choice, ...) ML99_PRIV_REC_NEXT(523, choice)(__VA_ARGS__) #define ML99_PRIV_REC_523(choice, ...) ML99_PRIV_REC_NEXT(524, choice)(__VA_ARGS__) #define ML99_PRIV_REC_524(choice, ...) ML99_PRIV_REC_NEXT(525, choice)(__VA_ARGS__) #define ML99_PRIV_REC_525(choice, ...) ML99_PRIV_REC_NEXT(526, choice)(__VA_ARGS__) #define ML99_PRIV_REC_526(choice, ...) ML99_PRIV_REC_NEXT(527, choice)(__VA_ARGS__) #define ML99_PRIV_REC_527(choice, ...) ML99_PRIV_REC_NEXT(528, choice)(__VA_ARGS__) #define ML99_PRIV_REC_528(choice, ...) ML99_PRIV_REC_NEXT(529, choice)(__VA_ARGS__) #define ML99_PRIV_REC_529(choice, ...) ML99_PRIV_REC_NEXT(530, choice)(__VA_ARGS__) #define ML99_PRIV_REC_530(choice, ...) ML99_PRIV_REC_NEXT(531, choice)(__VA_ARGS__) #define ML99_PRIV_REC_531(choice, ...) ML99_PRIV_REC_NEXT(532, choice)(__VA_ARGS__) #define ML99_PRIV_REC_532(choice, ...) ML99_PRIV_REC_NEXT(533, choice)(__VA_ARGS__) #define ML99_PRIV_REC_533(choice, ...) ML99_PRIV_REC_NEXT(534, choice)(__VA_ARGS__) #define ML99_PRIV_REC_534(choice, ...) ML99_PRIV_REC_NEXT(535, choice)(__VA_ARGS__) #define ML99_PRIV_REC_535(choice, ...) ML99_PRIV_REC_NEXT(536, choice)(__VA_ARGS__) #define ML99_PRIV_REC_536(choice, ...) ML99_PRIV_REC_NEXT(537, choice)(__VA_ARGS__) #define ML99_PRIV_REC_537(choice, ...) ML99_PRIV_REC_NEXT(538, choice)(__VA_ARGS__) #define ML99_PRIV_REC_538(choice, ...) ML99_PRIV_REC_NEXT(539, choice)(__VA_ARGS__) #define ML99_PRIV_REC_539(choice, ...) ML99_PRIV_REC_NEXT(540, choice)(__VA_ARGS__) #define ML99_PRIV_REC_540(choice, ...) ML99_PRIV_REC_NEXT(541, choice)(__VA_ARGS__) #define ML99_PRIV_REC_541(choice, ...) ML99_PRIV_REC_NEXT(542, choice)(__VA_ARGS__) #define ML99_PRIV_REC_542(choice, ...) ML99_PRIV_REC_NEXT(543, choice)(__VA_ARGS__) #define ML99_PRIV_REC_543(choice, ...) ML99_PRIV_REC_NEXT(544, choice)(__VA_ARGS__) #define ML99_PRIV_REC_544(choice, ...) ML99_PRIV_REC_NEXT(545, choice)(__VA_ARGS__) #define ML99_PRIV_REC_545(choice, ...) ML99_PRIV_REC_NEXT(546, choice)(__VA_ARGS__) #define ML99_PRIV_REC_546(choice, ...) ML99_PRIV_REC_NEXT(547, choice)(__VA_ARGS__) #define ML99_PRIV_REC_547(choice, ...) ML99_PRIV_REC_NEXT(548, choice)(__VA_ARGS__) #define ML99_PRIV_REC_548(choice, ...) ML99_PRIV_REC_NEXT(549, choice)(__VA_ARGS__) #define ML99_PRIV_REC_549(choice, ...) ML99_PRIV_REC_NEXT(550, choice)(__VA_ARGS__) #define ML99_PRIV_REC_550(choice, ...) ML99_PRIV_REC_NEXT(551, choice)(__VA_ARGS__) #define ML99_PRIV_REC_551(choice, ...) ML99_PRIV_REC_NEXT(552, choice)(__VA_ARGS__) #define ML99_PRIV_REC_552(choice, ...) ML99_PRIV_REC_NEXT(553, choice)(__VA_ARGS__) #define ML99_PRIV_REC_553(choice, ...) ML99_PRIV_REC_NEXT(554, choice)(__VA_ARGS__) #define ML99_PRIV_REC_554(choice, ...) ML99_PRIV_REC_NEXT(555, choice)(__VA_ARGS__) #define ML99_PRIV_REC_555(choice, ...) ML99_PRIV_REC_NEXT(556, choice)(__VA_ARGS__) #define ML99_PRIV_REC_556(choice, ...) ML99_PRIV_REC_NEXT(557, choice)(__VA_ARGS__) #define ML99_PRIV_REC_557(choice, ...) ML99_PRIV_REC_NEXT(558, choice)(__VA_ARGS__) #define ML99_PRIV_REC_558(choice, ...) ML99_PRIV_REC_NEXT(559, choice)(__VA_ARGS__) #define ML99_PRIV_REC_559(choice, ...) ML99_PRIV_REC_NEXT(560, choice)(__VA_ARGS__) #define ML99_PRIV_REC_560(choice, ...) ML99_PRIV_REC_NEXT(561, choice)(__VA_ARGS__) #define ML99_PRIV_REC_561(choice, ...) ML99_PRIV_REC_NEXT(562, choice)(__VA_ARGS__) #define ML99_PRIV_REC_562(choice, ...) ML99_PRIV_REC_NEXT(563, choice)(__VA_ARGS__) #define ML99_PRIV_REC_563(choice, ...) ML99_PRIV_REC_NEXT(564, choice)(__VA_ARGS__) #define ML99_PRIV_REC_564(choice, ...) ML99_PRIV_REC_NEXT(565, choice)(__VA_ARGS__) #define ML99_PRIV_REC_565(choice, ...) ML99_PRIV_REC_NEXT(566, choice)(__VA_ARGS__) #define ML99_PRIV_REC_566(choice, ...) ML99_PRIV_REC_NEXT(567, choice)(__VA_ARGS__) #define ML99_PRIV_REC_567(choice, ...) ML99_PRIV_REC_NEXT(568, choice)(__VA_ARGS__) #define ML99_PRIV_REC_568(choice, ...) ML99_PRIV_REC_NEXT(569, choice)(__VA_ARGS__) #define ML99_PRIV_REC_569(choice, ...) ML99_PRIV_REC_NEXT(570, choice)(__VA_ARGS__) #define ML99_PRIV_REC_570(choice, ...) ML99_PRIV_REC_NEXT(571, choice)(__VA_ARGS__) #define ML99_PRIV_REC_571(choice, ...) ML99_PRIV_REC_NEXT(572, choice)(__VA_ARGS__) #define ML99_PRIV_REC_572(choice, ...) ML99_PRIV_REC_NEXT(573, choice)(__VA_ARGS__) #define ML99_PRIV_REC_573(choice, ...) ML99_PRIV_REC_NEXT(574, choice)(__VA_ARGS__) #define ML99_PRIV_REC_574(choice, ...) ML99_PRIV_REC_NEXT(575, choice)(__VA_ARGS__) #define ML99_PRIV_REC_575(choice, ...) ML99_PRIV_REC_NEXT(576, choice)(__VA_ARGS__) #define ML99_PRIV_REC_576(choice, ...) ML99_PRIV_REC_NEXT(577, choice)(__VA_ARGS__) #define ML99_PRIV_REC_577(choice, ...) ML99_PRIV_REC_NEXT(578, choice)(__VA_ARGS__) #define ML99_PRIV_REC_578(choice, ...) ML99_PRIV_REC_NEXT(579, choice)(__VA_ARGS__) #define ML99_PRIV_REC_579(choice, ...) ML99_PRIV_REC_NEXT(580, choice)(__VA_ARGS__) #define ML99_PRIV_REC_580(choice, ...) ML99_PRIV_REC_NEXT(581, choice)(__VA_ARGS__) #define ML99_PRIV_REC_581(choice, ...) ML99_PRIV_REC_NEXT(582, choice)(__VA_ARGS__) #define ML99_PRIV_REC_582(choice, ...) ML99_PRIV_REC_NEXT(583, choice)(__VA_ARGS__) #define ML99_PRIV_REC_583(choice, ...) ML99_PRIV_REC_NEXT(584, choice)(__VA_ARGS__) #define ML99_PRIV_REC_584(choice, ...) ML99_PRIV_REC_NEXT(585, choice)(__VA_ARGS__) #define ML99_PRIV_REC_585(choice, ...) ML99_PRIV_REC_NEXT(586, choice)(__VA_ARGS__) #define ML99_PRIV_REC_586(choice, ...) ML99_PRIV_REC_NEXT(587, choice)(__VA_ARGS__) #define ML99_PRIV_REC_587(choice, ...) ML99_PRIV_REC_NEXT(588, choice)(__VA_ARGS__) #define ML99_PRIV_REC_588(choice, ...) ML99_PRIV_REC_NEXT(589, choice)(__VA_ARGS__) #define ML99_PRIV_REC_589(choice, ...) ML99_PRIV_REC_NEXT(590, choice)(__VA_ARGS__) #define ML99_PRIV_REC_590(choice, ...) ML99_PRIV_REC_NEXT(591, choice)(__VA_ARGS__) #define ML99_PRIV_REC_591(choice, ...) ML99_PRIV_REC_NEXT(592, choice)(__VA_ARGS__) #define ML99_PRIV_REC_592(choice, ...) ML99_PRIV_REC_NEXT(593, choice)(__VA_ARGS__) #define ML99_PRIV_REC_593(choice, ...) ML99_PRIV_REC_NEXT(594, choice)(__VA_ARGS__) #define ML99_PRIV_REC_594(choice, ...) ML99_PRIV_REC_NEXT(595, choice)(__VA_ARGS__) #define ML99_PRIV_REC_595(choice, ...) ML99_PRIV_REC_NEXT(596, choice)(__VA_ARGS__) #define ML99_PRIV_REC_596(choice, ...) ML99_PRIV_REC_NEXT(597, choice)(__VA_ARGS__) #define ML99_PRIV_REC_597(choice, ...) ML99_PRIV_REC_NEXT(598, choice)(__VA_ARGS__) #define ML99_PRIV_REC_598(choice, ...) ML99_PRIV_REC_NEXT(599, choice)(__VA_ARGS__) #define ML99_PRIV_REC_599(choice, ...) ML99_PRIV_REC_NEXT(600, choice)(__VA_ARGS__) #define ML99_PRIV_REC_600(choice, ...) ML99_PRIV_REC_NEXT(601, choice)(__VA_ARGS__) #define ML99_PRIV_REC_601(choice, ...) ML99_PRIV_REC_NEXT(602, choice)(__VA_ARGS__) #define ML99_PRIV_REC_602(choice, ...) ML99_PRIV_REC_NEXT(603, choice)(__VA_ARGS__) #define ML99_PRIV_REC_603(choice, ...) ML99_PRIV_REC_NEXT(604, choice)(__VA_ARGS__) #define ML99_PRIV_REC_604(choice, ...) ML99_PRIV_REC_NEXT(605, choice)(__VA_ARGS__) #define ML99_PRIV_REC_605(choice, ...) ML99_PRIV_REC_NEXT(606, choice)(__VA_ARGS__) #define ML99_PRIV_REC_606(choice, ...) ML99_PRIV_REC_NEXT(607, choice)(__VA_ARGS__) #define ML99_PRIV_REC_607(choice, ...) ML99_PRIV_REC_NEXT(608, choice)(__VA_ARGS__) #define ML99_PRIV_REC_608(choice, ...) ML99_PRIV_REC_NEXT(609, choice)(__VA_ARGS__) #define ML99_PRIV_REC_609(choice, ...) ML99_PRIV_REC_NEXT(610, choice)(__VA_ARGS__) #define ML99_PRIV_REC_610(choice, ...) ML99_PRIV_REC_NEXT(611, choice)(__VA_ARGS__) #define ML99_PRIV_REC_611(choice, ...) ML99_PRIV_REC_NEXT(612, choice)(__VA_ARGS__) #define ML99_PRIV_REC_612(choice, ...) ML99_PRIV_REC_NEXT(613, choice)(__VA_ARGS__) #define ML99_PRIV_REC_613(choice, ...) ML99_PRIV_REC_NEXT(614, choice)(__VA_ARGS__) #define ML99_PRIV_REC_614(choice, ...) ML99_PRIV_REC_NEXT(615, choice)(__VA_ARGS__) #define ML99_PRIV_REC_615(choice, ...) ML99_PRIV_REC_NEXT(616, choice)(__VA_ARGS__) #define ML99_PRIV_REC_616(choice, ...) ML99_PRIV_REC_NEXT(617, choice)(__VA_ARGS__) #define ML99_PRIV_REC_617(choice, ...) ML99_PRIV_REC_NEXT(618, choice)(__VA_ARGS__) #define ML99_PRIV_REC_618(choice, ...) ML99_PRIV_REC_NEXT(619, choice)(__VA_ARGS__) #define ML99_PRIV_REC_619(choice, ...) ML99_PRIV_REC_NEXT(620, choice)(__VA_ARGS__) #define ML99_PRIV_REC_620(choice, ...) ML99_PRIV_REC_NEXT(621, choice)(__VA_ARGS__) #define ML99_PRIV_REC_621(choice, ...) ML99_PRIV_REC_NEXT(622, choice)(__VA_ARGS__) #define ML99_PRIV_REC_622(choice, ...) ML99_PRIV_REC_NEXT(623, choice)(__VA_ARGS__) #define ML99_PRIV_REC_623(choice, ...) ML99_PRIV_REC_NEXT(624, choice)(__VA_ARGS__) #define ML99_PRIV_REC_624(choice, ...) ML99_PRIV_REC_NEXT(625, choice)(__VA_ARGS__) #define ML99_PRIV_REC_625(choice, ...) ML99_PRIV_REC_NEXT(626, choice)(__VA_ARGS__) #define ML99_PRIV_REC_626(choice, ...) ML99_PRIV_REC_NEXT(627, choice)(__VA_ARGS__) #define ML99_PRIV_REC_627(choice, ...) ML99_PRIV_REC_NEXT(628, choice)(__VA_ARGS__) #define ML99_PRIV_REC_628(choice, ...) ML99_PRIV_REC_NEXT(629, choice)(__VA_ARGS__) #define ML99_PRIV_REC_629(choice, ...) ML99_PRIV_REC_NEXT(630, choice)(__VA_ARGS__) #define ML99_PRIV_REC_630(choice, ...) ML99_PRIV_REC_NEXT(631, choice)(__VA_ARGS__) #define ML99_PRIV_REC_631(choice, ...) ML99_PRIV_REC_NEXT(632, choice)(__VA_ARGS__) #define ML99_PRIV_REC_632(choice, ...) ML99_PRIV_REC_NEXT(633, choice)(__VA_ARGS__) #define ML99_PRIV_REC_633(choice, ...) ML99_PRIV_REC_NEXT(634, choice)(__VA_ARGS__) #define ML99_PRIV_REC_634(choice, ...) ML99_PRIV_REC_NEXT(635, choice)(__VA_ARGS__) #define ML99_PRIV_REC_635(choice, ...) ML99_PRIV_REC_NEXT(636, choice)(__VA_ARGS__) #define ML99_PRIV_REC_636(choice, ...) ML99_PRIV_REC_NEXT(637, choice)(__VA_ARGS__) #define ML99_PRIV_REC_637(choice, ...) ML99_PRIV_REC_NEXT(638, choice)(__VA_ARGS__) #define ML99_PRIV_REC_638(choice, ...) ML99_PRIV_REC_NEXT(639, choice)(__VA_ARGS__) #define ML99_PRIV_REC_639(choice, ...) ML99_PRIV_REC_NEXT(640, choice)(__VA_ARGS__) #define ML99_PRIV_REC_640(choice, ...) ML99_PRIV_REC_NEXT(641, choice)(__VA_ARGS__) #define ML99_PRIV_REC_641(choice, ...) ML99_PRIV_REC_NEXT(642, choice)(__VA_ARGS__) #define ML99_PRIV_REC_642(choice, ...) ML99_PRIV_REC_NEXT(643, choice)(__VA_ARGS__) #define ML99_PRIV_REC_643(choice, ...) ML99_PRIV_REC_NEXT(644, choice)(__VA_ARGS__) #define ML99_PRIV_REC_644(choice, ...) ML99_PRIV_REC_NEXT(645, choice)(__VA_ARGS__) #define ML99_PRIV_REC_645(choice, ...) ML99_PRIV_REC_NEXT(646, choice)(__VA_ARGS__) #define ML99_PRIV_REC_646(choice, ...) ML99_PRIV_REC_NEXT(647, choice)(__VA_ARGS__) #define ML99_PRIV_REC_647(choice, ...) ML99_PRIV_REC_NEXT(648, choice)(__VA_ARGS__) #define ML99_PRIV_REC_648(choice, ...) ML99_PRIV_REC_NEXT(649, choice)(__VA_ARGS__) #define ML99_PRIV_REC_649(choice, ...) ML99_PRIV_REC_NEXT(650, choice)(__VA_ARGS__) #define ML99_PRIV_REC_650(choice, ...) ML99_PRIV_REC_NEXT(651, choice)(__VA_ARGS__) #define ML99_PRIV_REC_651(choice, ...) ML99_PRIV_REC_NEXT(652, choice)(__VA_ARGS__) #define ML99_PRIV_REC_652(choice, ...) ML99_PRIV_REC_NEXT(653, choice)(__VA_ARGS__) #define ML99_PRIV_REC_653(choice, ...) ML99_PRIV_REC_NEXT(654, choice)(__VA_ARGS__) #define ML99_PRIV_REC_654(choice, ...) ML99_PRIV_REC_NEXT(655, choice)(__VA_ARGS__) #define ML99_PRIV_REC_655(choice, ...) ML99_PRIV_REC_NEXT(656, choice)(__VA_ARGS__) #define ML99_PRIV_REC_656(choice, ...) ML99_PRIV_REC_NEXT(657, choice)(__VA_ARGS__) #define ML99_PRIV_REC_657(choice, ...) ML99_PRIV_REC_NEXT(658, choice)(__VA_ARGS__) #define ML99_PRIV_REC_658(choice, ...) ML99_PRIV_REC_NEXT(659, choice)(__VA_ARGS__) #define ML99_PRIV_REC_659(choice, ...) ML99_PRIV_REC_NEXT(660, choice)(__VA_ARGS__) #define ML99_PRIV_REC_660(choice, ...) ML99_PRIV_REC_NEXT(661, choice)(__VA_ARGS__) #define ML99_PRIV_REC_661(choice, ...) ML99_PRIV_REC_NEXT(662, choice)(__VA_ARGS__) #define ML99_PRIV_REC_662(choice, ...) ML99_PRIV_REC_NEXT(663, choice)(__VA_ARGS__) #define ML99_PRIV_REC_663(choice, ...) ML99_PRIV_REC_NEXT(664, choice)(__VA_ARGS__) #define ML99_PRIV_REC_664(choice, ...) ML99_PRIV_REC_NEXT(665, choice)(__VA_ARGS__) #define ML99_PRIV_REC_665(choice, ...) ML99_PRIV_REC_NEXT(666, choice)(__VA_ARGS__) #define ML99_PRIV_REC_666(choice, ...) ML99_PRIV_REC_NEXT(667, choice)(__VA_ARGS__) #define ML99_PRIV_REC_667(choice, ...) ML99_PRIV_REC_NEXT(668, choice)(__VA_ARGS__) #define ML99_PRIV_REC_668(choice, ...) ML99_PRIV_REC_NEXT(669, choice)(__VA_ARGS__) #define ML99_PRIV_REC_669(choice, ...) ML99_PRIV_REC_NEXT(670, choice)(__VA_ARGS__) #define ML99_PRIV_REC_670(choice, ...) ML99_PRIV_REC_NEXT(671, choice)(__VA_ARGS__) #define ML99_PRIV_REC_671(choice, ...) ML99_PRIV_REC_NEXT(672, choice)(__VA_ARGS__) #define ML99_PRIV_REC_672(choice, ...) ML99_PRIV_REC_NEXT(673, choice)(__VA_ARGS__) #define ML99_PRIV_REC_673(choice, ...) ML99_PRIV_REC_NEXT(674, choice)(__VA_ARGS__) #define ML99_PRIV_REC_674(choice, ...) ML99_PRIV_REC_NEXT(675, choice)(__VA_ARGS__) #define ML99_PRIV_REC_675(choice, ...) ML99_PRIV_REC_NEXT(676, choice)(__VA_ARGS__) #define ML99_PRIV_REC_676(choice, ...) ML99_PRIV_REC_NEXT(677, choice)(__VA_ARGS__) #define ML99_PRIV_REC_677(choice, ...) ML99_PRIV_REC_NEXT(678, choice)(__VA_ARGS__) #define ML99_PRIV_REC_678(choice, ...) ML99_PRIV_REC_NEXT(679, choice)(__VA_ARGS__) #define ML99_PRIV_REC_679(choice, ...) ML99_PRIV_REC_NEXT(680, choice)(__VA_ARGS__) #define ML99_PRIV_REC_680(choice, ...) ML99_PRIV_REC_NEXT(681, choice)(__VA_ARGS__) #define ML99_PRIV_REC_681(choice, ...) ML99_PRIV_REC_NEXT(682, choice)(__VA_ARGS__) #define ML99_PRIV_REC_682(choice, ...) ML99_PRIV_REC_NEXT(683, choice)(__VA_ARGS__) #define ML99_PRIV_REC_683(choice, ...) ML99_PRIV_REC_NEXT(684, choice)(__VA_ARGS__) #define ML99_PRIV_REC_684(choice, ...) ML99_PRIV_REC_NEXT(685, choice)(__VA_ARGS__) #define ML99_PRIV_REC_685(choice, ...) ML99_PRIV_REC_NEXT(686, choice)(__VA_ARGS__) #define ML99_PRIV_REC_686(choice, ...) ML99_PRIV_REC_NEXT(687, choice)(__VA_ARGS__) #define ML99_PRIV_REC_687(choice, ...) ML99_PRIV_REC_NEXT(688, choice)(__VA_ARGS__) #define ML99_PRIV_REC_688(choice, ...) ML99_PRIV_REC_NEXT(689, choice)(__VA_ARGS__) #define ML99_PRIV_REC_689(choice, ...) ML99_PRIV_REC_NEXT(690, choice)(__VA_ARGS__) #define ML99_PRIV_REC_690(choice, ...) ML99_PRIV_REC_NEXT(691, choice)(__VA_ARGS__) #define ML99_PRIV_REC_691(choice, ...) ML99_PRIV_REC_NEXT(692, choice)(__VA_ARGS__) #define ML99_PRIV_REC_692(choice, ...) ML99_PRIV_REC_NEXT(693, choice)(__VA_ARGS__) #define ML99_PRIV_REC_693(choice, ...) ML99_PRIV_REC_NEXT(694, choice)(__VA_ARGS__) #define ML99_PRIV_REC_694(choice, ...) ML99_PRIV_REC_NEXT(695, choice)(__VA_ARGS__) #define ML99_PRIV_REC_695(choice, ...) ML99_PRIV_REC_NEXT(696, choice)(__VA_ARGS__) #define ML99_PRIV_REC_696(choice, ...) ML99_PRIV_REC_NEXT(697, choice)(__VA_ARGS__) #define ML99_PRIV_REC_697(choice, ...) ML99_PRIV_REC_NEXT(698, choice)(__VA_ARGS__) #define ML99_PRIV_REC_698(choice, ...) ML99_PRIV_REC_NEXT(699, choice)(__VA_ARGS__) #define ML99_PRIV_REC_699(choice, ...) ML99_PRIV_REC_NEXT(700, choice)(__VA_ARGS__) #define ML99_PRIV_REC_700(choice, ...) ML99_PRIV_REC_NEXT(701, choice)(__VA_ARGS__) #define ML99_PRIV_REC_701(choice, ...) ML99_PRIV_REC_NEXT(702, choice)(__VA_ARGS__) #define ML99_PRIV_REC_702(choice, ...) ML99_PRIV_REC_NEXT(703, choice)(__VA_ARGS__) #define ML99_PRIV_REC_703(choice, ...) ML99_PRIV_REC_NEXT(704, choice)(__VA_ARGS__) #define ML99_PRIV_REC_704(choice, ...) ML99_PRIV_REC_NEXT(705, choice)(__VA_ARGS__) #define ML99_PRIV_REC_705(choice, ...) ML99_PRIV_REC_NEXT(706, choice)(__VA_ARGS__) #define ML99_PRIV_REC_706(choice, ...) ML99_PRIV_REC_NEXT(707, choice)(__VA_ARGS__) #define ML99_PRIV_REC_707(choice, ...) ML99_PRIV_REC_NEXT(708, choice)(__VA_ARGS__) #define ML99_PRIV_REC_708(choice, ...) ML99_PRIV_REC_NEXT(709, choice)(__VA_ARGS__) #define ML99_PRIV_REC_709(choice, ...) ML99_PRIV_REC_NEXT(710, choice)(__VA_ARGS__) #define ML99_PRIV_REC_710(choice, ...) ML99_PRIV_REC_NEXT(711, choice)(__VA_ARGS__) #define ML99_PRIV_REC_711(choice, ...) ML99_PRIV_REC_NEXT(712, choice)(__VA_ARGS__) #define ML99_PRIV_REC_712(choice, ...) ML99_PRIV_REC_NEXT(713, choice)(__VA_ARGS__) #define ML99_PRIV_REC_713(choice, ...) ML99_PRIV_REC_NEXT(714, choice)(__VA_ARGS__) #define ML99_PRIV_REC_714(choice, ...) ML99_PRIV_REC_NEXT(715, choice)(__VA_ARGS__) #define ML99_PRIV_REC_715(choice, ...) ML99_PRIV_REC_NEXT(716, choice)(__VA_ARGS__) #define ML99_PRIV_REC_716(choice, ...) ML99_PRIV_REC_NEXT(717, choice)(__VA_ARGS__) #define ML99_PRIV_REC_717(choice, ...) ML99_PRIV_REC_NEXT(718, choice)(__VA_ARGS__) #define ML99_PRIV_REC_718(choice, ...) ML99_PRIV_REC_NEXT(719, choice)(__VA_ARGS__) #define ML99_PRIV_REC_719(choice, ...) ML99_PRIV_REC_NEXT(720, choice)(__VA_ARGS__) #define ML99_PRIV_REC_720(choice, ...) ML99_PRIV_REC_NEXT(721, choice)(__VA_ARGS__) #define ML99_PRIV_REC_721(choice, ...) ML99_PRIV_REC_NEXT(722, choice)(__VA_ARGS__) #define ML99_PRIV_REC_722(choice, ...) ML99_PRIV_REC_NEXT(723, choice)(__VA_ARGS__) #define ML99_PRIV_REC_723(choice, ...) ML99_PRIV_REC_NEXT(724, choice)(__VA_ARGS__) #define ML99_PRIV_REC_724(choice, ...) ML99_PRIV_REC_NEXT(725, choice)(__VA_ARGS__) #define ML99_PRIV_REC_725(choice, ...) ML99_PRIV_REC_NEXT(726, choice)(__VA_ARGS__) #define ML99_PRIV_REC_726(choice, ...) ML99_PRIV_REC_NEXT(727, choice)(__VA_ARGS__) #define ML99_PRIV_REC_727(choice, ...) ML99_PRIV_REC_NEXT(728, choice)(__VA_ARGS__) #define ML99_PRIV_REC_728(choice, ...) ML99_PRIV_REC_NEXT(729, choice)(__VA_ARGS__) #define ML99_PRIV_REC_729(choice, ...) ML99_PRIV_REC_NEXT(730, choice)(__VA_ARGS__) #define ML99_PRIV_REC_730(choice, ...) ML99_PRIV_REC_NEXT(731, choice)(__VA_ARGS__) #define ML99_PRIV_REC_731(choice, ...) ML99_PRIV_REC_NEXT(732, choice)(__VA_ARGS__) #define ML99_PRIV_REC_732(choice, ...) ML99_PRIV_REC_NEXT(733, choice)(__VA_ARGS__) #define ML99_PRIV_REC_733(choice, ...) ML99_PRIV_REC_NEXT(734, choice)(__VA_ARGS__) #define ML99_PRIV_REC_734(choice, ...) ML99_PRIV_REC_NEXT(735, choice)(__VA_ARGS__) #define ML99_PRIV_REC_735(choice, ...) ML99_PRIV_REC_NEXT(736, choice)(__VA_ARGS__) #define ML99_PRIV_REC_736(choice, ...) ML99_PRIV_REC_NEXT(737, choice)(__VA_ARGS__) #define ML99_PRIV_REC_737(choice, ...) ML99_PRIV_REC_NEXT(738, choice)(__VA_ARGS__) #define ML99_PRIV_REC_738(choice, ...) ML99_PRIV_REC_NEXT(739, choice)(__VA_ARGS__) #define ML99_PRIV_REC_739(choice, ...) ML99_PRIV_REC_NEXT(740, choice)(__VA_ARGS__) #define ML99_PRIV_REC_740(choice, ...) ML99_PRIV_REC_NEXT(741, choice)(__VA_ARGS__) #define ML99_PRIV_REC_741(choice, ...) ML99_PRIV_REC_NEXT(742, choice)(__VA_ARGS__) #define ML99_PRIV_REC_742(choice, ...) ML99_PRIV_REC_NEXT(743, choice)(__VA_ARGS__) #define ML99_PRIV_REC_743(choice, ...) ML99_PRIV_REC_NEXT(744, choice)(__VA_ARGS__) #define ML99_PRIV_REC_744(choice, ...) ML99_PRIV_REC_NEXT(745, choice)(__VA_ARGS__) #define ML99_PRIV_REC_745(choice, ...) ML99_PRIV_REC_NEXT(746, choice)(__VA_ARGS__) #define ML99_PRIV_REC_746(choice, ...) ML99_PRIV_REC_NEXT(747, choice)(__VA_ARGS__) #define ML99_PRIV_REC_747(choice, ...) ML99_PRIV_REC_NEXT(748, choice)(__VA_ARGS__) #define ML99_PRIV_REC_748(choice, ...) ML99_PRIV_REC_NEXT(749, choice)(__VA_ARGS__) #define ML99_PRIV_REC_749(choice, ...) ML99_PRIV_REC_NEXT(750, choice)(__VA_ARGS__) #define ML99_PRIV_REC_750(choice, ...) ML99_PRIV_REC_NEXT(751, choice)(__VA_ARGS__) #define ML99_PRIV_REC_751(choice, ...) ML99_PRIV_REC_NEXT(752, choice)(__VA_ARGS__) #define ML99_PRIV_REC_752(choice, ...) ML99_PRIV_REC_NEXT(753, choice)(__VA_ARGS__) #define ML99_PRIV_REC_753(choice, ...) ML99_PRIV_REC_NEXT(754, choice)(__VA_ARGS__) #define ML99_PRIV_REC_754(choice, ...) ML99_PRIV_REC_NEXT(755, choice)(__VA_ARGS__) #define ML99_PRIV_REC_755(choice, ...) ML99_PRIV_REC_NEXT(756, choice)(__VA_ARGS__) #define ML99_PRIV_REC_756(choice, ...) ML99_PRIV_REC_NEXT(757, choice)(__VA_ARGS__) #define ML99_PRIV_REC_757(choice, ...) ML99_PRIV_REC_NEXT(758, choice)(__VA_ARGS__) #define ML99_PRIV_REC_758(choice, ...) ML99_PRIV_REC_NEXT(759, choice)(__VA_ARGS__) #define ML99_PRIV_REC_759(choice, ...) ML99_PRIV_REC_NEXT(760, choice)(__VA_ARGS__) #define ML99_PRIV_REC_760(choice, ...) ML99_PRIV_REC_NEXT(761, choice)(__VA_ARGS__) #define ML99_PRIV_REC_761(choice, ...) ML99_PRIV_REC_NEXT(762, choice)(__VA_ARGS__) #define ML99_PRIV_REC_762(choice, ...) ML99_PRIV_REC_NEXT(763, choice)(__VA_ARGS__) #define ML99_PRIV_REC_763(choice, ...) ML99_PRIV_REC_NEXT(764, choice)(__VA_ARGS__) #define ML99_PRIV_REC_764(choice, ...) ML99_PRIV_REC_NEXT(765, choice)(__VA_ARGS__) #define ML99_PRIV_REC_765(choice, ...) ML99_PRIV_REC_NEXT(766, choice)(__VA_ARGS__) #define ML99_PRIV_REC_766(choice, ...) ML99_PRIV_REC_NEXT(767, choice)(__VA_ARGS__) #define ML99_PRIV_REC_767(choice, ...) ML99_PRIV_REC_NEXT(768, choice)(__VA_ARGS__) #define ML99_PRIV_REC_768(choice, ...) ML99_PRIV_REC_NEXT(769, choice)(__VA_ARGS__) #define ML99_PRIV_REC_769(choice, ...) ML99_PRIV_REC_NEXT(770, choice)(__VA_ARGS__) #define ML99_PRIV_REC_770(choice, ...) ML99_PRIV_REC_NEXT(771, choice)(__VA_ARGS__) #define ML99_PRIV_REC_771(choice, ...) ML99_PRIV_REC_NEXT(772, choice)(__VA_ARGS__) #define ML99_PRIV_REC_772(choice, ...) ML99_PRIV_REC_NEXT(773, choice)(__VA_ARGS__) #define ML99_PRIV_REC_773(choice, ...) ML99_PRIV_REC_NEXT(774, choice)(__VA_ARGS__) #define ML99_PRIV_REC_774(choice, ...) ML99_PRIV_REC_NEXT(775, choice)(__VA_ARGS__) #define ML99_PRIV_REC_775(choice, ...) ML99_PRIV_REC_NEXT(776, choice)(__VA_ARGS__) #define ML99_PRIV_REC_776(choice, ...) ML99_PRIV_REC_NEXT(777, choice)(__VA_ARGS__) #define ML99_PRIV_REC_777(choice, ...) ML99_PRIV_REC_NEXT(778, choice)(__VA_ARGS__) #define ML99_PRIV_REC_778(choice, ...) ML99_PRIV_REC_NEXT(779, choice)(__VA_ARGS__) #define ML99_PRIV_REC_779(choice, ...) ML99_PRIV_REC_NEXT(780, choice)(__VA_ARGS__) #define ML99_PRIV_REC_780(choice, ...) ML99_PRIV_REC_NEXT(781, choice)(__VA_ARGS__) #define ML99_PRIV_REC_781(choice, ...) ML99_PRIV_REC_NEXT(782, choice)(__VA_ARGS__) #define ML99_PRIV_REC_782(choice, ...) ML99_PRIV_REC_NEXT(783, choice)(__VA_ARGS__) #define ML99_PRIV_REC_783(choice, ...) ML99_PRIV_REC_NEXT(784, choice)(__VA_ARGS__) #define ML99_PRIV_REC_784(choice, ...) ML99_PRIV_REC_NEXT(785, choice)(__VA_ARGS__) #define ML99_PRIV_REC_785(choice, ...) ML99_PRIV_REC_NEXT(786, choice)(__VA_ARGS__) #define ML99_PRIV_REC_786(choice, ...) ML99_PRIV_REC_NEXT(787, choice)(__VA_ARGS__) #define ML99_PRIV_REC_787(choice, ...) ML99_PRIV_REC_NEXT(788, choice)(__VA_ARGS__) #define ML99_PRIV_REC_788(choice, ...) ML99_PRIV_REC_NEXT(789, choice)(__VA_ARGS__) #define ML99_PRIV_REC_789(choice, ...) ML99_PRIV_REC_NEXT(790, choice)(__VA_ARGS__) #define ML99_PRIV_REC_790(choice, ...) ML99_PRIV_REC_NEXT(791, choice)(__VA_ARGS__) #define ML99_PRIV_REC_791(choice, ...) ML99_PRIV_REC_NEXT(792, choice)(__VA_ARGS__) #define ML99_PRIV_REC_792(choice, ...) ML99_PRIV_REC_NEXT(793, choice)(__VA_ARGS__) #define ML99_PRIV_REC_793(choice, ...) ML99_PRIV_REC_NEXT(794, choice)(__VA_ARGS__) #define ML99_PRIV_REC_794(choice, ...) ML99_PRIV_REC_NEXT(795, choice)(__VA_ARGS__) #define ML99_PRIV_REC_795(choice, ...) ML99_PRIV_REC_NEXT(796, choice)(__VA_ARGS__) #define ML99_PRIV_REC_796(choice, ...) ML99_PRIV_REC_NEXT(797, choice)(__VA_ARGS__) #define ML99_PRIV_REC_797(choice, ...) ML99_PRIV_REC_NEXT(798, choice)(__VA_ARGS__) #define ML99_PRIV_REC_798(choice, ...) ML99_PRIV_REC_NEXT(799, choice)(__VA_ARGS__) #define ML99_PRIV_REC_799(choice, ...) ML99_PRIV_REC_NEXT(800, choice)(__VA_ARGS__) #define ML99_PRIV_REC_800(choice, ...) ML99_PRIV_REC_NEXT(801, choice)(__VA_ARGS__) #define ML99_PRIV_REC_801(choice, ...) ML99_PRIV_REC_NEXT(802, choice)(__VA_ARGS__) #define ML99_PRIV_REC_802(choice, ...) ML99_PRIV_REC_NEXT(803, choice)(__VA_ARGS__) #define ML99_PRIV_REC_803(choice, ...) ML99_PRIV_REC_NEXT(804, choice)(__VA_ARGS__) #define ML99_PRIV_REC_804(choice, ...) ML99_PRIV_REC_NEXT(805, choice)(__VA_ARGS__) #define ML99_PRIV_REC_805(choice, ...) ML99_PRIV_REC_NEXT(806, choice)(__VA_ARGS__) #define ML99_PRIV_REC_806(choice, ...) ML99_PRIV_REC_NEXT(807, choice)(__VA_ARGS__) #define ML99_PRIV_REC_807(choice, ...) ML99_PRIV_REC_NEXT(808, choice)(__VA_ARGS__) #define ML99_PRIV_REC_808(choice, ...) ML99_PRIV_REC_NEXT(809, choice)(__VA_ARGS__) #define ML99_PRIV_REC_809(choice, ...) ML99_PRIV_REC_NEXT(810, choice)(__VA_ARGS__) #define ML99_PRIV_REC_810(choice, ...) ML99_PRIV_REC_NEXT(811, choice)(__VA_ARGS__) #define ML99_PRIV_REC_811(choice, ...) ML99_PRIV_REC_NEXT(812, choice)(__VA_ARGS__) #define ML99_PRIV_REC_812(choice, ...) ML99_PRIV_REC_NEXT(813, choice)(__VA_ARGS__) #define ML99_PRIV_REC_813(choice, ...) ML99_PRIV_REC_NEXT(814, choice)(__VA_ARGS__) #define ML99_PRIV_REC_814(choice, ...) ML99_PRIV_REC_NEXT(815, choice)(__VA_ARGS__) #define ML99_PRIV_REC_815(choice, ...) ML99_PRIV_REC_NEXT(816, choice)(__VA_ARGS__) #define ML99_PRIV_REC_816(choice, ...) ML99_PRIV_REC_NEXT(817, choice)(__VA_ARGS__) #define ML99_PRIV_REC_817(choice, ...) ML99_PRIV_REC_NEXT(818, choice)(__VA_ARGS__) #define ML99_PRIV_REC_818(choice, ...) ML99_PRIV_REC_NEXT(819, choice)(__VA_ARGS__) #define ML99_PRIV_REC_819(choice, ...) ML99_PRIV_REC_NEXT(820, choice)(__VA_ARGS__) #define ML99_PRIV_REC_820(choice, ...) ML99_PRIV_REC_NEXT(821, choice)(__VA_ARGS__) #define ML99_PRIV_REC_821(choice, ...) ML99_PRIV_REC_NEXT(822, choice)(__VA_ARGS__) #define ML99_PRIV_REC_822(choice, ...) ML99_PRIV_REC_NEXT(823, choice)(__VA_ARGS__) #define ML99_PRIV_REC_823(choice, ...) ML99_PRIV_REC_NEXT(824, choice)(__VA_ARGS__) #define ML99_PRIV_REC_824(choice, ...) ML99_PRIV_REC_NEXT(825, choice)(__VA_ARGS__) #define ML99_PRIV_REC_825(choice, ...) ML99_PRIV_REC_NEXT(826, choice)(__VA_ARGS__) #define ML99_PRIV_REC_826(choice, ...) ML99_PRIV_REC_NEXT(827, choice)(__VA_ARGS__) #define ML99_PRIV_REC_827(choice, ...) ML99_PRIV_REC_NEXT(828, choice)(__VA_ARGS__) #define ML99_PRIV_REC_828(choice, ...) ML99_PRIV_REC_NEXT(829, choice)(__VA_ARGS__) #define ML99_PRIV_REC_829(choice, ...) ML99_PRIV_REC_NEXT(830, choice)(__VA_ARGS__) #define ML99_PRIV_REC_830(choice, ...) ML99_PRIV_REC_NEXT(831, choice)(__VA_ARGS__) #define ML99_PRIV_REC_831(choice, ...) ML99_PRIV_REC_NEXT(832, choice)(__VA_ARGS__) #define ML99_PRIV_REC_832(choice, ...) ML99_PRIV_REC_NEXT(833, choice)(__VA_ARGS__) #define ML99_PRIV_REC_833(choice, ...) ML99_PRIV_REC_NEXT(834, choice)(__VA_ARGS__) #define ML99_PRIV_REC_834(choice, ...) ML99_PRIV_REC_NEXT(835, choice)(__VA_ARGS__) #define ML99_PRIV_REC_835(choice, ...) ML99_PRIV_REC_NEXT(836, choice)(__VA_ARGS__) #define ML99_PRIV_REC_836(choice, ...) ML99_PRIV_REC_NEXT(837, choice)(__VA_ARGS__) #define ML99_PRIV_REC_837(choice, ...) ML99_PRIV_REC_NEXT(838, choice)(__VA_ARGS__) #define ML99_PRIV_REC_838(choice, ...) ML99_PRIV_REC_NEXT(839, choice)(__VA_ARGS__) #define ML99_PRIV_REC_839(choice, ...) ML99_PRIV_REC_NEXT(840, choice)(__VA_ARGS__) #define ML99_PRIV_REC_840(choice, ...) ML99_PRIV_REC_NEXT(841, choice)(__VA_ARGS__) #define ML99_PRIV_REC_841(choice, ...) ML99_PRIV_REC_NEXT(842, choice)(__VA_ARGS__) #define ML99_PRIV_REC_842(choice, ...) ML99_PRIV_REC_NEXT(843, choice)(__VA_ARGS__) #define ML99_PRIV_REC_843(choice, ...) ML99_PRIV_REC_NEXT(844, choice)(__VA_ARGS__) #define ML99_PRIV_REC_844(choice, ...) ML99_PRIV_REC_NEXT(845, choice)(__VA_ARGS__) #define ML99_PRIV_REC_845(choice, ...) ML99_PRIV_REC_NEXT(846, choice)(__VA_ARGS__) #define ML99_PRIV_REC_846(choice, ...) ML99_PRIV_REC_NEXT(847, choice)(__VA_ARGS__) #define ML99_PRIV_REC_847(choice, ...) ML99_PRIV_REC_NEXT(848, choice)(__VA_ARGS__) #define ML99_PRIV_REC_848(choice, ...) ML99_PRIV_REC_NEXT(849, choice)(__VA_ARGS__) #define ML99_PRIV_REC_849(choice, ...) ML99_PRIV_REC_NEXT(850, choice)(__VA_ARGS__) #define ML99_PRIV_REC_850(choice, ...) ML99_PRIV_REC_NEXT(851, choice)(__VA_ARGS__) #define ML99_PRIV_REC_851(choice, ...) ML99_PRIV_REC_NEXT(852, choice)(__VA_ARGS__) #define ML99_PRIV_REC_852(choice, ...) ML99_PRIV_REC_NEXT(853, choice)(__VA_ARGS__) #define ML99_PRIV_REC_853(choice, ...) ML99_PRIV_REC_NEXT(854, choice)(__VA_ARGS__) #define ML99_PRIV_REC_854(choice, ...) ML99_PRIV_REC_NEXT(855, choice)(__VA_ARGS__) #define ML99_PRIV_REC_855(choice, ...) ML99_PRIV_REC_NEXT(856, choice)(__VA_ARGS__) #define ML99_PRIV_REC_856(choice, ...) ML99_PRIV_REC_NEXT(857, choice)(__VA_ARGS__) #define ML99_PRIV_REC_857(choice, ...) ML99_PRIV_REC_NEXT(858, choice)(__VA_ARGS__) #define ML99_PRIV_REC_858(choice, ...) ML99_PRIV_REC_NEXT(859, choice)(__VA_ARGS__) #define ML99_PRIV_REC_859(choice, ...) ML99_PRIV_REC_NEXT(860, choice)(__VA_ARGS__) #define ML99_PRIV_REC_860(choice, ...) ML99_PRIV_REC_NEXT(861, choice)(__VA_ARGS__) #define ML99_PRIV_REC_861(choice, ...) ML99_PRIV_REC_NEXT(862, choice)(__VA_ARGS__) #define ML99_PRIV_REC_862(choice, ...) ML99_PRIV_REC_NEXT(863, choice)(__VA_ARGS__) #define ML99_PRIV_REC_863(choice, ...) ML99_PRIV_REC_NEXT(864, choice)(__VA_ARGS__) #define ML99_PRIV_REC_864(choice, ...) ML99_PRIV_REC_NEXT(865, choice)(__VA_ARGS__) #define ML99_PRIV_REC_865(choice, ...) ML99_PRIV_REC_NEXT(866, choice)(__VA_ARGS__) #define ML99_PRIV_REC_866(choice, ...) ML99_PRIV_REC_NEXT(867, choice)(__VA_ARGS__) #define ML99_PRIV_REC_867(choice, ...) ML99_PRIV_REC_NEXT(868, choice)(__VA_ARGS__) #define ML99_PRIV_REC_868(choice, ...) ML99_PRIV_REC_NEXT(869, choice)(__VA_ARGS__) #define ML99_PRIV_REC_869(choice, ...) ML99_PRIV_REC_NEXT(870, choice)(__VA_ARGS__) #define ML99_PRIV_REC_870(choice, ...) ML99_PRIV_REC_NEXT(871, choice)(__VA_ARGS__) #define ML99_PRIV_REC_871(choice, ...) ML99_PRIV_REC_NEXT(872, choice)(__VA_ARGS__) #define ML99_PRIV_REC_872(choice, ...) ML99_PRIV_REC_NEXT(873, choice)(__VA_ARGS__) #define ML99_PRIV_REC_873(choice, ...) ML99_PRIV_REC_NEXT(874, choice)(__VA_ARGS__) #define ML99_PRIV_REC_874(choice, ...) ML99_PRIV_REC_NEXT(875, choice)(__VA_ARGS__) #define ML99_PRIV_REC_875(choice, ...) ML99_PRIV_REC_NEXT(876, choice)(__VA_ARGS__) #define ML99_PRIV_REC_876(choice, ...) ML99_PRIV_REC_NEXT(877, choice)(__VA_ARGS__) #define ML99_PRIV_REC_877(choice, ...) ML99_PRIV_REC_NEXT(878, choice)(__VA_ARGS__) #define ML99_PRIV_REC_878(choice, ...) ML99_PRIV_REC_NEXT(879, choice)(__VA_ARGS__) #define ML99_PRIV_REC_879(choice, ...) ML99_PRIV_REC_NEXT(880, choice)(__VA_ARGS__) #define ML99_PRIV_REC_880(choice, ...) ML99_PRIV_REC_NEXT(881, choice)(__VA_ARGS__) #define ML99_PRIV_REC_881(choice, ...) ML99_PRIV_REC_NEXT(882, choice)(__VA_ARGS__) #define ML99_PRIV_REC_882(choice, ...) ML99_PRIV_REC_NEXT(883, choice)(__VA_ARGS__) #define ML99_PRIV_REC_883(choice, ...) ML99_PRIV_REC_NEXT(884, choice)(__VA_ARGS__) #define ML99_PRIV_REC_884(choice, ...) ML99_PRIV_REC_NEXT(885, choice)(__VA_ARGS__) #define ML99_PRIV_REC_885(choice, ...) ML99_PRIV_REC_NEXT(886, choice)(__VA_ARGS__) #define ML99_PRIV_REC_886(choice, ...) ML99_PRIV_REC_NEXT(887, choice)(__VA_ARGS__) #define ML99_PRIV_REC_887(choice, ...) ML99_PRIV_REC_NEXT(888, choice)(__VA_ARGS__) #define ML99_PRIV_REC_888(choice, ...) ML99_PRIV_REC_NEXT(889, choice)(__VA_ARGS__) #define ML99_PRIV_REC_889(choice, ...) ML99_PRIV_REC_NEXT(890, choice)(__VA_ARGS__) #define ML99_PRIV_REC_890(choice, ...) ML99_PRIV_REC_NEXT(891, choice)(__VA_ARGS__) #define ML99_PRIV_REC_891(choice, ...) ML99_PRIV_REC_NEXT(892, choice)(__VA_ARGS__) #define ML99_PRIV_REC_892(choice, ...) ML99_PRIV_REC_NEXT(893, choice)(__VA_ARGS__) #define ML99_PRIV_REC_893(choice, ...) ML99_PRIV_REC_NEXT(894, choice)(__VA_ARGS__) #define ML99_PRIV_REC_894(choice, ...) ML99_PRIV_REC_NEXT(895, choice)(__VA_ARGS__) #define ML99_PRIV_REC_895(choice, ...) ML99_PRIV_REC_NEXT(896, choice)(__VA_ARGS__) #define ML99_PRIV_REC_896(choice, ...) ML99_PRIV_REC_NEXT(897, choice)(__VA_ARGS__) #define ML99_PRIV_REC_897(choice, ...) ML99_PRIV_REC_NEXT(898, choice)(__VA_ARGS__) #define ML99_PRIV_REC_898(choice, ...) ML99_PRIV_REC_NEXT(899, choice)(__VA_ARGS__) #define ML99_PRIV_REC_899(choice, ...) ML99_PRIV_REC_NEXT(900, choice)(__VA_ARGS__) #define ML99_PRIV_REC_900(choice, ...) ML99_PRIV_REC_NEXT(901, choice)(__VA_ARGS__) #define ML99_PRIV_REC_901(choice, ...) ML99_PRIV_REC_NEXT(902, choice)(__VA_ARGS__) #define ML99_PRIV_REC_902(choice, ...) ML99_PRIV_REC_NEXT(903, choice)(__VA_ARGS__) #define ML99_PRIV_REC_903(choice, ...) ML99_PRIV_REC_NEXT(904, choice)(__VA_ARGS__) #define ML99_PRIV_REC_904(choice, ...) ML99_PRIV_REC_NEXT(905, choice)(__VA_ARGS__) #define ML99_PRIV_REC_905(choice, ...) ML99_PRIV_REC_NEXT(906, choice)(__VA_ARGS__) #define ML99_PRIV_REC_906(choice, ...) ML99_PRIV_REC_NEXT(907, choice)(__VA_ARGS__) #define ML99_PRIV_REC_907(choice, ...) ML99_PRIV_REC_NEXT(908, choice)(__VA_ARGS__) #define ML99_PRIV_REC_908(choice, ...) ML99_PRIV_REC_NEXT(909, choice)(__VA_ARGS__) #define ML99_PRIV_REC_909(choice, ...) ML99_PRIV_REC_NEXT(910, choice)(__VA_ARGS__) #define ML99_PRIV_REC_910(choice, ...) ML99_PRIV_REC_NEXT(911, choice)(__VA_ARGS__) #define ML99_PRIV_REC_911(choice, ...) ML99_PRIV_REC_NEXT(912, choice)(__VA_ARGS__) #define ML99_PRIV_REC_912(choice, ...) ML99_PRIV_REC_NEXT(913, choice)(__VA_ARGS__) #define ML99_PRIV_REC_913(choice, ...) ML99_PRIV_REC_NEXT(914, choice)(__VA_ARGS__) #define ML99_PRIV_REC_914(choice, ...) ML99_PRIV_REC_NEXT(915, choice)(__VA_ARGS__) #define ML99_PRIV_REC_915(choice, ...) ML99_PRIV_REC_NEXT(916, choice)(__VA_ARGS__) #define ML99_PRIV_REC_916(choice, ...) ML99_PRIV_REC_NEXT(917, choice)(__VA_ARGS__) #define ML99_PRIV_REC_917(choice, ...) ML99_PRIV_REC_NEXT(918, choice)(__VA_ARGS__) #define ML99_PRIV_REC_918(choice, ...) ML99_PRIV_REC_NEXT(919, choice)(__VA_ARGS__) #define ML99_PRIV_REC_919(choice, ...) ML99_PRIV_REC_NEXT(920, choice)(__VA_ARGS__) #define ML99_PRIV_REC_920(choice, ...) ML99_PRIV_REC_NEXT(921, choice)(__VA_ARGS__) #define ML99_PRIV_REC_921(choice, ...) ML99_PRIV_REC_NEXT(922, choice)(__VA_ARGS__) #define ML99_PRIV_REC_922(choice, ...) ML99_PRIV_REC_NEXT(923, choice)(__VA_ARGS__) #define ML99_PRIV_REC_923(choice, ...) ML99_PRIV_REC_NEXT(924, choice)(__VA_ARGS__) #define ML99_PRIV_REC_924(choice, ...) ML99_PRIV_REC_NEXT(925, choice)(__VA_ARGS__) #define ML99_PRIV_REC_925(choice, ...) ML99_PRIV_REC_NEXT(926, choice)(__VA_ARGS__) #define ML99_PRIV_REC_926(choice, ...) ML99_PRIV_REC_NEXT(927, choice)(__VA_ARGS__) #define ML99_PRIV_REC_927(choice, ...) ML99_PRIV_REC_NEXT(928, choice)(__VA_ARGS__) #define ML99_PRIV_REC_928(choice, ...) ML99_PRIV_REC_NEXT(929, choice)(__VA_ARGS__) #define ML99_PRIV_REC_929(choice, ...) ML99_PRIV_REC_NEXT(930, choice)(__VA_ARGS__) #define ML99_PRIV_REC_930(choice, ...) ML99_PRIV_REC_NEXT(931, choice)(__VA_ARGS__) #define ML99_PRIV_REC_931(choice, ...) ML99_PRIV_REC_NEXT(932, choice)(__VA_ARGS__) #define ML99_PRIV_REC_932(choice, ...) ML99_PRIV_REC_NEXT(933, choice)(__VA_ARGS__) #define ML99_PRIV_REC_933(choice, ...) ML99_PRIV_REC_NEXT(934, choice)(__VA_ARGS__) #define ML99_PRIV_REC_934(choice, ...) ML99_PRIV_REC_NEXT(935, choice)(__VA_ARGS__) #define ML99_PRIV_REC_935(choice, ...) ML99_PRIV_REC_NEXT(936, choice)(__VA_ARGS__) #define ML99_PRIV_REC_936(choice, ...) ML99_PRIV_REC_NEXT(937, choice)(__VA_ARGS__) #define ML99_PRIV_REC_937(choice, ...) ML99_PRIV_REC_NEXT(938, choice)(__VA_ARGS__) #define ML99_PRIV_REC_938(choice, ...) ML99_PRIV_REC_NEXT(939, choice)(__VA_ARGS__) #define ML99_PRIV_REC_939(choice, ...) ML99_PRIV_REC_NEXT(940, choice)(__VA_ARGS__) #define ML99_PRIV_REC_940(choice, ...) ML99_PRIV_REC_NEXT(941, choice)(__VA_ARGS__) #define ML99_PRIV_REC_941(choice, ...) ML99_PRIV_REC_NEXT(942, choice)(__VA_ARGS__) #define ML99_PRIV_REC_942(choice, ...) ML99_PRIV_REC_NEXT(943, choice)(__VA_ARGS__) #define ML99_PRIV_REC_943(choice, ...) ML99_PRIV_REC_NEXT(944, choice)(__VA_ARGS__) #define ML99_PRIV_REC_944(choice, ...) ML99_PRIV_REC_NEXT(945, choice)(__VA_ARGS__) #define ML99_PRIV_REC_945(choice, ...) ML99_PRIV_REC_NEXT(946, choice)(__VA_ARGS__) #define ML99_PRIV_REC_946(choice, ...) ML99_PRIV_REC_NEXT(947, choice)(__VA_ARGS__) #define ML99_PRIV_REC_947(choice, ...) ML99_PRIV_REC_NEXT(948, choice)(__VA_ARGS__) #define ML99_PRIV_REC_948(choice, ...) ML99_PRIV_REC_NEXT(949, choice)(__VA_ARGS__) #define ML99_PRIV_REC_949(choice, ...) ML99_PRIV_REC_NEXT(950, choice)(__VA_ARGS__) #define ML99_PRIV_REC_950(choice, ...) ML99_PRIV_REC_NEXT(951, choice)(__VA_ARGS__) #define ML99_PRIV_REC_951(choice, ...) ML99_PRIV_REC_NEXT(952, choice)(__VA_ARGS__) #define ML99_PRIV_REC_952(choice, ...) ML99_PRIV_REC_NEXT(953, choice)(__VA_ARGS__) #define ML99_PRIV_REC_953(choice, ...) ML99_PRIV_REC_NEXT(954, choice)(__VA_ARGS__) #define ML99_PRIV_REC_954(choice, ...) ML99_PRIV_REC_NEXT(955, choice)(__VA_ARGS__) #define ML99_PRIV_REC_955(choice, ...) ML99_PRIV_REC_NEXT(956, choice)(__VA_ARGS__) #define ML99_PRIV_REC_956(choice, ...) ML99_PRIV_REC_NEXT(957, choice)(__VA_ARGS__) #define ML99_PRIV_REC_957(choice, ...) ML99_PRIV_REC_NEXT(958, choice)(__VA_ARGS__) #define ML99_PRIV_REC_958(choice, ...) ML99_PRIV_REC_NEXT(959, choice)(__VA_ARGS__) #define ML99_PRIV_REC_959(choice, ...) ML99_PRIV_REC_NEXT(960, choice)(__VA_ARGS__) #define ML99_PRIV_REC_960(choice, ...) ML99_PRIV_REC_NEXT(961, choice)(__VA_ARGS__) #define ML99_PRIV_REC_961(choice, ...) ML99_PRIV_REC_NEXT(962, choice)(__VA_ARGS__) #define ML99_PRIV_REC_962(choice, ...) ML99_PRIV_REC_NEXT(963, choice)(__VA_ARGS__) #define ML99_PRIV_REC_963(choice, ...) ML99_PRIV_REC_NEXT(964, choice)(__VA_ARGS__) #define ML99_PRIV_REC_964(choice, ...) ML99_PRIV_REC_NEXT(965, choice)(__VA_ARGS__) #define ML99_PRIV_REC_965(choice, ...) ML99_PRIV_REC_NEXT(966, choice)(__VA_ARGS__) #define ML99_PRIV_REC_966(choice, ...) ML99_PRIV_REC_NEXT(967, choice)(__VA_ARGS__) #define ML99_PRIV_REC_967(choice, ...) ML99_PRIV_REC_NEXT(968, choice)(__VA_ARGS__) #define ML99_PRIV_REC_968(choice, ...) ML99_PRIV_REC_NEXT(969, choice)(__VA_ARGS__) #define ML99_PRIV_REC_969(choice, ...) ML99_PRIV_REC_NEXT(970, choice)(__VA_ARGS__) #define ML99_PRIV_REC_970(choice, ...) ML99_PRIV_REC_NEXT(971, choice)(__VA_ARGS__) #define ML99_PRIV_REC_971(choice, ...) ML99_PRIV_REC_NEXT(972, choice)(__VA_ARGS__) #define ML99_PRIV_REC_972(choice, ...) ML99_PRIV_REC_NEXT(973, choice)(__VA_ARGS__) #define ML99_PRIV_REC_973(choice, ...) ML99_PRIV_REC_NEXT(974, choice)(__VA_ARGS__) #define ML99_PRIV_REC_974(choice, ...) ML99_PRIV_REC_NEXT(975, choice)(__VA_ARGS__) #define ML99_PRIV_REC_975(choice, ...) ML99_PRIV_REC_NEXT(976, choice)(__VA_ARGS__) #define ML99_PRIV_REC_976(choice, ...) ML99_PRIV_REC_NEXT(977, choice)(__VA_ARGS__) #define ML99_PRIV_REC_977(choice, ...) ML99_PRIV_REC_NEXT(978, choice)(__VA_ARGS__) #define ML99_PRIV_REC_978(choice, ...) ML99_PRIV_REC_NEXT(979, choice)(__VA_ARGS__) #define ML99_PRIV_REC_979(choice, ...) ML99_PRIV_REC_NEXT(980, choice)(__VA_ARGS__) #define ML99_PRIV_REC_980(choice, ...) ML99_PRIV_REC_NEXT(981, choice)(__VA_ARGS__) #define ML99_PRIV_REC_981(choice, ...) ML99_PRIV_REC_NEXT(982, choice)(__VA_ARGS__) #define ML99_PRIV_REC_982(choice, ...) ML99_PRIV_REC_NEXT(983, choice)(__VA_ARGS__) #define ML99_PRIV_REC_983(choice, ...) ML99_PRIV_REC_NEXT(984, choice)(__VA_ARGS__) #define ML99_PRIV_REC_984(choice, ...) ML99_PRIV_REC_NEXT(985, choice)(__VA_ARGS__) #define ML99_PRIV_REC_985(choice, ...) ML99_PRIV_REC_NEXT(986, choice)(__VA_ARGS__) #define ML99_PRIV_REC_986(choice, ...) ML99_PRIV_REC_NEXT(987, choice)(__VA_ARGS__) #define ML99_PRIV_REC_987(choice, ...) ML99_PRIV_REC_NEXT(988, choice)(__VA_ARGS__) #define ML99_PRIV_REC_988(choice, ...) ML99_PRIV_REC_NEXT(989, choice)(__VA_ARGS__) #define ML99_PRIV_REC_989(choice, ...) ML99_PRIV_REC_NEXT(990, choice)(__VA_ARGS__) #define ML99_PRIV_REC_990(choice, ...) ML99_PRIV_REC_NEXT(991, choice)(__VA_ARGS__) #define ML99_PRIV_REC_991(choice, ...) ML99_PRIV_REC_NEXT(992, choice)(__VA_ARGS__) #define ML99_PRIV_REC_992(choice, ...) ML99_PRIV_REC_NEXT(993, choice)(__VA_ARGS__) #define ML99_PRIV_REC_993(choice, ...) ML99_PRIV_REC_NEXT(994, choice)(__VA_ARGS__) #define ML99_PRIV_REC_994(choice, ...) ML99_PRIV_REC_NEXT(995, choice)(__VA_ARGS__) #define ML99_PRIV_REC_995(choice, ...) ML99_PRIV_REC_NEXT(996, choice)(__VA_ARGS__) #define ML99_PRIV_REC_996(choice, ...) ML99_PRIV_REC_NEXT(997, choice)(__VA_ARGS__) #define ML99_PRIV_REC_997(choice, ...) ML99_PRIV_REC_NEXT(998, choice)(__VA_ARGS__) #define ML99_PRIV_REC_998(choice, ...) ML99_PRIV_REC_NEXT(999, choice)(__VA_ARGS__) #define ML99_PRIV_REC_999(choice, ...) ML99_PRIV_REC_NEXT(1000, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1000(choice, ...) ML99_PRIV_REC_NEXT(1001, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1001(choice, ...) ML99_PRIV_REC_NEXT(1002, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1002(choice, ...) ML99_PRIV_REC_NEXT(1003, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1003(choice, ...) ML99_PRIV_REC_NEXT(1004, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1004(choice, ...) ML99_PRIV_REC_NEXT(1005, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1005(choice, ...) ML99_PRIV_REC_NEXT(1006, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1006(choice, ...) ML99_PRIV_REC_NEXT(1007, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1007(choice, ...) ML99_PRIV_REC_NEXT(1008, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1008(choice, ...) ML99_PRIV_REC_NEXT(1009, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1009(choice, ...) ML99_PRIV_REC_NEXT(1010, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1010(choice, ...) ML99_PRIV_REC_NEXT(1011, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1011(choice, ...) ML99_PRIV_REC_NEXT(1012, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1012(choice, ...) ML99_PRIV_REC_NEXT(1013, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1013(choice, ...) ML99_PRIV_REC_NEXT(1014, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1014(choice, ...) ML99_PRIV_REC_NEXT(1015, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1015(choice, ...) ML99_PRIV_REC_NEXT(1016, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1016(choice, ...) ML99_PRIV_REC_NEXT(1017, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1017(choice, ...) ML99_PRIV_REC_NEXT(1018, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1018(choice, ...) ML99_PRIV_REC_NEXT(1019, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1019(choice, ...) ML99_PRIV_REC_NEXT(1020, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1020(choice, ...) ML99_PRIV_REC_NEXT(1021, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1021(choice, ...) ML99_PRIV_REC_NEXT(1022, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1022(choice, ...) ML99_PRIV_REC_NEXT(1023, choice)(__VA_ARGS__) #define ML99_PRIV_REC_1023 ML99_PRIV_REC_DEFER(ML99_PRIV_REC_0_HOOK)() #define ML99_PRIV_REC_0_HOOK() ML99_PRIV_REC_0 #endif // ML99_EVAL_REC_H hkl-5.1.7/third-party/metalang99/eval/diagnostics.h0000664000175000017500000000065414677222567021143 0ustar00piccapicca#ifndef METALANG99_EVAL_DIAGNOSTICS_H #define METALANG99_EVAL_DIAGNOSTICS_H #include // clang-format off #define METALANG99_PRIV_DIAGNOSTICS_SYNTAX_ERROR(invalid_term) \ METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_REC_STOP)((~), !Metalang99 syntax error: `invalid_term` is not a valid term) // clang-format on #endif // METALANG99_EVAL_DIAGNOSTICS_H hkl-5.1.7/third-party/metalang99/eval/syntax_checker.h0000664000175000017500000000310614677222567021641 0ustar00piccapicca#ifndef ML99_EVAL_SYNTAX_CHECKER_H #define ML99_EVAL_SYNTAX_CHECKER_H #include #include #include #include #include #define ML99_PRIV_CHECK_TERM(term, default) \ ML99_PRIV_IF(ML99_PRIV_IS_UNTUPLE(term), ML99_PRIV_EMIT_SYNTAX_ERROR, default) // clang-format off #define ML99_PRIV_EMIT_SYNTAX_ERROR(term) \ ML99_PRIV_REC_CONTINUE(ML99_PRIV_REC_STOP)((~), ML99_PRIV_SYNTAX_ERROR(term)) \ /* Consume arguments passed to ML99_PRIV_TERM_MATCH, see eval.h. */ \ ML99_PRIV_EMPTY // clang-format on #define ML99_PRIV_SYNTAX_ERROR(invalid_term) \ ML99_PRIV_CAT(ML99_PRIV_SYNTAX_ERROR_, ML99_PRIV_IS_DOUBLE_TUPLE_BEGINNING(invalid_term)) \ (invalid_term) #ifdef ML99_PRIV_EMIT_ERROR #define ML99_PRIV_SYNTAX_ERROR_0(invalid_term) \ ML99_PRIV_EMIT_ERROR("invalid term `" #invalid_term "`"); #define ML99_PRIV_SYNTAX_ERROR_1(invalid_term) \ ML99_PRIV_EMIT_ERROR("invalid term `" #invalid_term "`, did you miss a comma?"); #else // clang-format off #define ML99_PRIV_SYNTAX_ERROR_0(invalid_term) !"Metalang99 syntax error": {invalid_term} #define ML99_PRIV_SYNTAX_ERROR_1(invalid_term) \ !"Metalang99 syntax error (did you miss a comma?)": {invalid_term} // clang-format on #endif #endif // ML99_EVAL_SYNTAX_CHECKER_H hkl-5.1.7/third-party/metalang99/eval/eval.h0000664000175000017500000001706414677222567017566 0ustar00piccapicca#ifndef ML99_EVAL_EVAL_H #define ML99_EVAL_EVAL_H // Explanation is in the spec: . #include #include #include #include #include #define ML99_PRIV_EVAL(...) \ ML99_PRIV_REC_UNROLL(ML99_PRIV_EVAL_MATCH( \ ML99_PRIV_REC_STOP, \ (~), \ 0fspace, \ ML99_PRIV_EVAL_ACC, \ __VA_ARGS__, \ (0end, ~), \ ~)) // Recursion hooks { #define ML99_PRIV_EVAL_MATCH_HOOK() ML99_PRIV_EVAL_MATCH #define ML99_PRIV_EVAL_0v_K_HOOK() ML99_PRIV_EVAL_0v_K #define ML99_PRIV_EVAL_0args_K_HOOK() ML99_PRIV_EVAL_0args_K #define ML99_PRIV_EVAL_0op_K_HOOK() ML99_PRIV_EVAL_0op_K #define ML99_PRIV_EVAL_0callUneval_K_HOOK() ML99_PRIV_EVAL_0callUneval_K // } (Recursion hooks) #define ML99_PRIV_EVAL_MATCH(k, k_cx, folder, acc, head, ...) \ ML99_PRIV_CHECK_TERM(head, ML99_PRIV_TERM_MATCH) \ (head)(k, k_cx, folder, acc, (__VA_ARGS__), ML99_PRIV_TERM_DATA head) #define ML99_PRIV_TERM_MATCH(term) ML99_PRIV_CAT(ML99_PRIV_EVAL_, ML99_PRIV_TERM_KIND term) #define ML99_PRIV_TERM_KIND(kind, ...) kind #define ML99_PRIV_TERM_DATA(_kind, ...) __VA_ARGS__ // Reduction rules { #define ML99_PRIV_EVAL_0v ML99_PRIV_REC_CONTINUE(ML99_PRIV_EVAL_0v_K) #define ML99_PRIV_EVAL_0args ML99_PRIV_REC_CONTINUE(ML99_PRIV_EVAL_0args_K) #define ML99_PRIV_EVAL_0op ML99_PRIV_REC_CONTINUE(ML99_PRIV_EVAL_0op_K) #define ML99_PRIV_EVAL_0callUneval ML99_PRIV_REC_CONTINUE(ML99_PRIV_EVAL_0callUneval_K) #define ML99_PRIV_EVAL_0fatal(...) ML99_PRIV_EVAL_0fatal_AUX(__VA_ARGS__) #define ML99_PRIV_EVAL_0fatal_AUX(_k, _k_cx, _folder, _acc, _tail, f, message) \ ML99_PRIV_REC_CONTINUE(ML99_PRIV_REC_STOP)((~), ML99_PRIV_FATAL_ERROR(f, message)) #ifdef ML99_PRIV_EMIT_ERROR #define ML99_PRIV_FATAL_ERROR(f, message) ML99_PRIV_EMIT_ERROR(#f ": " message); #else // clang-format off #define ML99_PRIV_FATAL_ERROR(f, message) !"Metalang99 error" (f): message // clang-format on #endif #define ML99_PRIV_EVAL_0abort(_k, k_cx, folder, acc, _tail, ...) \ ML99_PRIV_REC_CONTINUE(ML99_PRIV_EVAL_MATCH) \ (ML99_PRIV_REC_STOP, (~), 0fspace, ML99_PRIV_EVAL_ACC, __VA_ARGS__, (0end, ~), ~) #define ML99_PRIV_EVAL_0end(k, k_cx, _folder, acc, _tail, _) \ ML99_PRIV_REC_CONTINUE(k) \ (ML99_PRIV_EXPAND k_cx, ML99_PRIV_EVAL_ACC_UNWRAP acc) // } (Reduction rules) // Continuations { #define ML99_PRIV_EVAL_0v_K(k, k_cx, folder, acc, tail, ...) \ ML99_PRIV_MACHINE_REDUCE( \ k, \ k_cx, \ folder, \ ML99_PRIV_EVAL_##folder(acc, __VA_ARGS__), \ ML99_PRIV_EXPAND tail) #define ML99_PRIV_EVAL_0args_K(k, k_cx, folder, acc, tail, op, ...) \ ML99_PRIV_MACHINE_REDUCE( \ ML99_PRIV_EVAL_0callUneval_K, \ (k, k_cx, folder, acc, tail, op), \ 0fcomma, \ ML99_PRIV_EVAL_ACC_COMMA_SEP, \ __VA_ARGS__, \ (0end, ~), \ ~) #define ML99_PRIV_EVAL_0op_K(k, k_cx, folder, acc, tail, op, ...) \ ML99_PRIV_MACHINE_REDUCE( \ ML99_PRIV_EVAL_0callUneval_K, \ (k, k_cx, folder, acc, tail), \ 0fcomma, \ ML99_PRIV_EVAL_ACC_COMMA_SEP, \ op, \ __VA_ARGS__, \ (0end, ~), \ ~) /* * In this subroutine, we employ the following optimisation: * * - If `evaluated_op` expands to many terms, we first evaluate these terms and accumulate them * (`ML99_PRIV_EVAL_0callUneval_K_1`). * - Otherwise, we just paste a single term with the rest of the tail * (`ML99_PRIV_EVAL_0callUneval_K_0`). */ #define ML99_PRIV_EVAL_0callUneval_K(k, k_cx, folder, acc, tail, evaluated_op, ...) \ ML99_PRIV_EVAL_0callUneval_K_AUX(k, k_cx, folder, acc, tail, evaluated_op##_IMPL(__VA_ARGS__)) #define ML99_PRIV_EVAL_0callUneval_K_AUX(k, k_cx, folder, acc, tail, ...) \ ML99_PRIV_CAT(ML99_PRIV_EVAL_0callUneval_K_, ML99_PRIV_CONTAINS_COMMA(__VA_ARGS__)) \ (k, k_cx, folder, acc, tail, __VA_ARGS__) #define ML99_PRIV_EVAL_0callUneval_K_0(k, k_cx, folder, acc, tail, body) \ ML99_PRIV_MACHINE_REDUCE(k, k_cx, folder, acc, body, ML99_PRIV_EXPAND tail) #define ML99_PRIV_EVAL_0callUneval_K_1(k, k_cx, folder, acc, tail, ...) \ ML99_PRIV_MACHINE_REDUCE( \ ML99_PRIV_EVAL_0v_K, \ (k, k_cx, folder, acc, tail), \ 0fspace, \ ML99_PRIV_EVAL_ACC, \ __VA_ARGS__, \ (0end, ~), \ ~) #define ML99_PRIV_MACHINE_REDUCE(...) ML99_PRIV_EVAL_MATCH(__VA_ARGS__) // } (Continuations) #endif // ML99_EVAL_EVAL_H hkl-5.1.7/third-party/metalang99/eval/term.h0000664000175000017500000000046614677222567017604 0ustar00piccapicca#ifndef ML99_EVAL_TERM_H #define ML99_EVAL_TERM_H #include #define ML99_PRIV_EVAL_TERM_KIND(kind, ...) kind #define ML99_PRIV_EVAL_TERM_DATA(_kind, ...) __VA_ARGS__ #define ML99_PRIV_TERM_MATCH(term, op) ML99_PRIV_CAT(op, ML99_PRIV_EVAL_TERM_KIND term) #endif // ML99_EVAL_TERM_H hkl-5.1.7/third-party/metalang99/eval/control.h0000664000175000017500000000044114677222567020306 0ustar00piccapicca#ifndef METALANG99_EVAL_CONTROL_H #define METALANG99_EVAL_CONTROL_H #include #define METALANG99_PRIV_EVAL_CONTROL METALANG99_PRIV_PARENTHESISE #define METALANG99_PRIV_EVAL_CONTROL_UNWRAP METALANG99_PRIV_UNPARENTHESISE #endif // METALANG99_EVAL_CONTROL_H hkl-5.1.7/third-party/metalang99/eval/acc.h0000664000175000017500000000063314677222567017357 0ustar00piccapicca#ifndef ML99_EVAL_ACC_H #define ML99_EVAL_ACC_H #include #define ML99_PRIV_EVAL_ACC (, ) #define ML99_PRIV_EVAL_ACC_COMMA_SEP () #define ML99_PRIV_EVAL_0fspace(acc, ...) (ML99_PRIV_EXPAND acc __VA_ARGS__) #define ML99_PRIV_EVAL_0fcomma(acc, ...) (ML99_PRIV_EXPAND acc, __VA_ARGS__) #define ML99_PRIV_EVAL_ACC_UNWRAP(_emptiness, ...) __VA_ARGS__ #endif // ML99_EVAL_ACC_H hkl-5.1.7/third-party/metalang99/assert.h0000664000175000017500000000662014677222567017205 0ustar00piccapicca/** * @file * Static assertions. * * For the sake of convenience, this header automatically includes `metalang99/bool.h`. * * @note [C99] Any of the following assertion macros must **not** appear on the same line number * twice with itself as well as with any other Metalang99 assertion macro. * @note [C11] The following assertion macros expand to `_Static_assert` and, therefore, can be used * on the same line twice. */ #ifndef ML99_ASSERT_H #define ML99_ASSERT_H #include #include #include /** * The same as #ML99_ASSERT but results in a Metalang99 term. * * It can be used inside other Metalang99-compliant macros, unlike #ML99_ASSERT, which uses * #ML99_EVAL internally. */ #define ML99_assert(expr) ML99_call(ML99_assert, expr) /** * Like #ML99_assert but compares @p lhs with @p rhs for equality (`==`). */ #define ML99_assertEq(lhs, rhs) ML99_call(ML99_assertEq, lhs, rhs) /** * Asserts `ML99_EVAL(expr)` at compile-time. * * # Examples * * @code * #include * * ML99_ASSERT(v(123 == 123)); * @endcode */ #define ML99_ASSERT(expr) ML99_ASSERT_EQ(expr, ML99_true()) /** * Asserts `ML99_EVAL(lhs) == ML99_EVAL(rhs)` at compile-time. * * # Examples * * @code * #include * * ML99_ASSERT_EQ(v(123), v(123)); * @endcode */ #define ML99_ASSERT_EQ(lhs, rhs) ML99_ASSERT_UNEVAL((ML99_EVAL(lhs)) == (ML99_EVAL(rhs))) /** * Asserts the C constant expression @p expr; * [static_assert](https://en.cppreference.com/w/c/error/static_assert) in pure C99. * * # Examples * * @code * #include * * ML99_ASSERT_UNEVAL(123 == 123); * @endcode */ #define ML99_ASSERT_UNEVAL(expr) ML99_PRIV_ASSERT_UNEVAL_INNER(expr) /** * Asserts that `ML99_EVAL(expr)` is emptiness. * * # Examples * * @code * #include * * // Passes: * ML99_ASSERT_EMPTY(v()); * * // Fails: * ML99_ASSERT_EMPTY(v(123)); * @endcode */ #define ML99_ASSERT_EMPTY(expr) ML99_ASSERT_EMPTY_UNEVAL(ML99_EVAL(expr)) /** * Asserts that @p expr is emptiness. * * # Examples * * @code * #include * * // Passes: * ML99_ASSERT_EMPTY_UNEVAL(); * * // Fails: * ML99_ASSERT_EMPTY_UNEVAL(123); * @endcode */ #define ML99_ASSERT_EMPTY_UNEVAL(expr) \ ML99_ASSERT_UNEVAL(ML99_PRIV_CAT(ML99_PRIV_ASSERT_EMPTY_, expr)) #ifndef DOXYGEN_IGNORE #define ML99_assert_IMPL(expr) v(ML99_ASSERT_UNEVAL(expr)) #define ML99_assertEq_IMPL(lhs, rhs) v(ML99_ASSERT_UNEVAL((lhs) == (rhs))) #ifdef ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE #define ML99_PRIV_ASSERT_UNEVAL_INNER(expr) _Static_assert((expr), "Metalang99 assertion failed") #else // How to imitate static assertions in C99: . #define ML99_PRIV_ASSERT_UNEVAL_INNER(expr) \ static const char ML99_PRIV_CAT( \ ml99_assert_, \ __LINE__)[(expr) ? 1 : -1] ML99_PRIV_COMPILER_ATTR_UNUSED = {0} #endif #define ML99_PRIV_ASSERT_EMPTY_ 1 // Arity specifiers { #define ML99_assert_ARITY 1 #define ML99_assertEq_ARITY 2 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_ASSERT_H hkl-5.1.7/third-party/metalang99/maybe.h0000664000175000017500000000702014677222567016774 0ustar00piccapicca/** * @file * An optional value. */ #ifndef ML99_MAYBE_H #define ML99_MAYBE_H #include #include #include #include /** * Some value @p x. */ #define ML99_just(x) ML99_call(ML99_just, x) /** * No value. */ #define ML99_nothing(...) ML99_callUneval(ML99_nothing, ) /** * `ML99_true()` if @p maybe contains some value, otherwise `ML99_false()`. * * # Examples * * @code * #include * * // 1 * ML99_isJust(ML99_just(v(123))) * * // 0 * ML99_isJust(ML99_nothing()) * @endcode */ #define ML99_isJust(maybe) ML99_call(ML99_isJust, maybe) /** * The inverse of #ML99_isJust. * * # Examples * * @code * #include * * // 1 * ML99_isNothing(ML99_nothing()) * * // 0 * ML99_isNothing(ML99_just(v(123))) * @endcode */ #define ML99_isNothing(maybe) ML99_call(ML99_isNothing, maybe) /** * Tests @p maybe and @p other for equality. * * # Examples * * @code * #include * #include * * // 1 * ML99_maybeEq(v(ML99_natEq), ML99_just(v(123)), ML99_just(v(123))); * * // 0 * ML99_maybeEq(v(ML99_natEq), ML99_just(v(4)), ML99_just(v(6))); * * // 0 * ML99_maybeEq(v(ML99_natEq), ML99_just(v(4)), ML99_nothing()); * @endcode */ #define ML99_maybeEq(cmp, maybe, other) ML99_call(ML99_maybeEq, cmp, maybe, other) /** * Returns the contained value on `ML99_just(x)` or emits a fatal error on `ML99_nothing()`. * * # Examples * * @code * #include * * // 123 * ML99_maybeUnwrap(ML99_just(v(123))) * * // Emits a fatal error. * ML99_maybeUnwrap(ML99_nothing()) * @endcode */ #define ML99_maybeUnwrap(maybe) ML99_call(ML99_maybeUnwrap, maybe) #define ML99_JUST(x) ML99_CHOICE(just, x) #define ML99_NOTHING(...) ML99_CHOICE(nothing, ~) #define ML99_IS_JUST(maybe) ML99_PRIV_IS_JUST(maybe) #define ML99_IS_NOTHING(maybe) ML99_NOT(ML99_IS_JUST(maybe)) #ifndef DOXYGEN_IGNORE #define ML99_just_IMPL(x) v(ML99_JUST(x)) #define ML99_nothing_IMPL(...) v(ML99_NOTHING()) #define ML99_isJust_IMPL(maybe) v(ML99_IS_JUST(maybe)) #define ML99_isNothing_IMPL(maybe) v(ML99_IS_NOTHING(maybe)) // ML99_maybeEq_IMPL { #define ML99_maybeEq_IMPL(cmp, maybe, other) \ ML99_matchWithArgs_IMPL(maybe, ML99_PRIV_maybeEq_, cmp, other) #define ML99_PRIV_maybeEq_just_IMPL(x, cmp, other) \ ML99_matchWithArgs_IMPL(other, ML99_PRIV_maybeEq_just_, cmp, x) #define ML99_PRIV_maybeEq_nothing_IMPL(_, _cmp, other) v(ML99_IS_NOTHING(other)) #define ML99_PRIV_maybeEq_just_just_IMPL(y, cmp, x) ML99_appl2_IMPL(cmp, x, y) #define ML99_PRIV_maybeEq_just_nothing_IMPL ML99_false_IMPL // } (ML99_maybeEq_IMPL) #define ML99_maybeUnwrap_IMPL(maybe) ML99_match_IMPL(maybe, ML99_PRIV_maybeUnwrap_) #define ML99_PRIV_maybeUnwrap_just_IMPL(x) v(x) #define ML99_PRIV_maybeUnwrap_nothing_IMPL(_) \ ML99_fatal(ML99_maybeUnwrap, expected ML99_just but found ML99_nothing) #define ML99_PRIV_IS_JUST(maybe) ML99_DETECT_IDENT(ML99_PRIV_IS_JUST_, ML99_CHOICE_TAG(maybe)) #define ML99_PRIV_IS_JUST_just () // Arity specifiers { #define ML99_just_ARITY 1 #define ML99_nothing_ARITY 1 #define ML99_isJust_ARITY 1 #define ML99_isNothing_ARITY 1 #define ML99_maybeEq_ARITY 3 #define ML99_maybeUnwrap_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_MAYBE_H hkl-5.1.7/third-party/metalang99/tuple.h0000664000175000017500000002423114677222567017033 0ustar00piccapicca/** * @file * Tuples: `(x, y, z)`. * * A tuple is represented as `(x1, ..., xN)`. Tuples are a convenient way to deal with product * types. For example: * * [[examples/rectangle.c](https://github.com/Hirrolot/metalang99/blob/master/examples/rectangle.c)] * @include rectangle.c * * @note Tuples are more time and space-efficient than lists, but export less functionality; if a * needed function is missed, invoking #ML99_list and then manipulating with the resulting Cons-list * might be helpful. */ #ifndef ML99_TUPLE_H #define ML99_TUPLE_H #include #include #include #include #include /** * Transforms a sequence of arguments into `(...)`. * * # Examples * * @code * #include * * // (1, 2, 3) * ML99_tuple(v(1, 2, 3)) * @endcode */ #define ML99_tuple(...) ML99_call(ML99_tuple, __VA_ARGS__) /** * Transforms a sequence of arguments into `(v(...))`. * * # Examples * * @code * #include * * // (v(1, 2, 3)) * ML99_tupleEval(v(1, 2, 3)) * @endcode * * @deprecated I have seen no single use case over time. Please, [open an * issue](https://github.com/Hirrolot/metalang99/issues/new/choose) if you need this function. */ #define ML99_tupleEval(...) ML99_call(ML99_tupleEval, __VA_ARGS__) /** * Untuples the tuple @p x, leaving the result unevaluated. * * If @p x is not a tuple, it emits a fatal error. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_untuple(v((1, 2, 3))) * @endcode */ #define ML99_untuple(x) ML99_call(ML99_untuple, x) /** * The same as #ML99_untuple. * * @deprecated Use #ML99_untuple instead. */ #define ML99_untupleChecked(x) ML99_call(ML99_untupleChecked, x) /** * Untuples the tuple @p x and evaluates the result. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_untupleEval(v((v(1, 2, 3)))) * @endcode * * @deprecated For the same reason as #ML99_tupleEval. */ #define ML99_untupleEval(x) ML99_call(ML99_untupleEval, x) /** * Tests whether @p x is inside parentheses or not. * * The preconditions are the same as of #ML99_isUntuple. * * # Examples * * @code * #include * * // 0 * ML99_isTuple(v(123)) * * // 1 * ML99_isTuple(v((123))) * @endcode */ #define ML99_isTuple(x) ML99_call(ML99_isTuple, x) /** * The inverse of #ML99_isTuple. * * @p x must be either of these forms: * - `(...)` (reported as non-untupled) * - `(...) (...) ...` (reported as untupled) * - anything else not beginning with `(...)` (reported as untupled) * * For example (respectively): * - `(~, ~, ~)` (non-untupled) * - `(~, ~, ~) (~, ~, ~)` or `(~, ~, ~) (~, ~, ~) abc` (untupled) * - `123` or `123 (~, ~, ~)` (untupled) * * # Examples * * @code * #include * * // 1 * ML99_isUntuple(v(123)) * * // 0 * ML99_isUntuple(v((123))) * * // 1 * ML99_isUntuple(v((123) (456) (789))) * @endcode */ #define ML99_isUntuple(x) ML99_call(ML99_isUntuple, x) /** * Computes the count of items in the tuple @p x. * * At most 63 items can be contained in @p x. * * # Examples * * @code * #include * * // 3 * ML99_tupleCount(v((~, ~, ~))) * * // 1 * ML99_tupleCount(v(())) * @endcode */ #define ML99_tupleCount(x) ML99_call(ML99_tupleCount, x) /** * Tells if the tuple @p x contains only one item or not. * * # Examples * * @code * #include * * // 1 * ML99_tupleIsSingle(v((~))) * * // 0 * ML99_tupleIsSingle(v((~, ~, ~))) * @endcode */ #define ML99_tupleIsSingle(x) ML99_call(ML99_tupleIsSingle, x) /** * Expands to a metafunction extracting the @p i -indexed element of a tuple. * * @p i can range from 0 to 7, inclusively. * * # Examples * * @code * #include * * // 2 * ML99_tupleGet(1)(v((1, 2, 3))) * @endcode */ #define ML99_tupleGet(i) ML99_PRIV_CAT(ML99_PRIV_tupleGet_, i) /** * Extracts the tuple's tail. * * @p x must contain at least two elements. * * # Examples * * @code * #include * * // 2, 3 * ML99_tupleTail(v((1, 2, 3))) * @endcode */ #define ML99_tupleTail(x) ML99_call(ML99_tupleTail, x) /** * Appends provided variadic arguments to the tuple @p x. * * # Examples * * @code * #include * * // (1, 2, 3) * ML99_tupleAppend(ML99_tuple(v(1)), v(2, 3)) * @endcode */ #define ML99_tupleAppend(x, ...) ML99_call(ML99_tupleAppend, x, __VA_ARGS__) /** * Prepends provided variadic arguments to the tuple @p x. * * # Examples * * @code * #include * * // (1, 2, 3) * ML99_tuplePrepend(ML99_tuple(v(3)), v(1, 2)) * @endcode */ #define ML99_tuplePrepend(x, ...) ML99_call(ML99_tuplePrepend, x, __VA_ARGS__) /** * A shortcut for `ML99_variadicsForEach(f, ML99_untuple(x))`. */ #define ML99_tupleForEach(f, x) ML99_call(ML99_tupleForEach, f, x) /** * A shortcut for `ML99_variadicsForEachI(f, ML99_untuple(x))`. */ #define ML99_tupleForEachI(f, x) ML99_call(ML99_tupleForEachI, f, x) /** * Emits a fatal error if @p x is not a tuple, otherwise results in emptiness. * * # Examples * * @code * #include * * #define F_IMPL(x) ML99_TERMS(ML99_assertIsTuple(v(x)), ML99_untuple(v(x))) * * // 1, 2, 3 * ML99_call(F, v((1, 2, 3))) * * // A compile-time tuple mismatch error. * ML99_call(F, v(123)) * @endcode */ #define ML99_assertIsTuple(x) ML99_call(ML99_assertIsTuple, x) #define ML99_TUPLE(...) (__VA_ARGS__) #define ML99_UNTUPLE(x) ML99_PRIV_EXPAND x #define ML99_IS_TUPLE(x) ML99_PRIV_IS_TUPLE(x) #define ML99_IS_UNTUPLE(x) ML99_PRIV_IS_UNTUPLE(x) #define ML99_TUPLE_COUNT(x) ML99_VARIADICS_COUNT(ML99_UNTUPLE(x)) #define ML99_TUPLE_IS_SINGLE(x) ML99_VARIADICS_IS_SINGLE(ML99_UNTUPLE(x)) #define ML99_TUPLE_GET(i) ML99_PRIV_CAT(ML99_PRIV_TUPLE_GET_, i) #define ML99_TUPLE_TAIL(x) ML99_VARIADICS_TAIL(ML99_UNTUPLE(x)) #define ML99_TUPLE_APPEND(x, ...) (ML99_UNTUPLE(x), __VA_ARGS__) #define ML99_TUPLE_PREPEND(x, ...) (__VA_ARGS__, ML99_UNTUPLE(x)) #ifndef DOXYGEN_IGNORE #define ML99_tuple_IMPL(...) v(ML99_TUPLE(__VA_ARGS__)) #define ML99_tupleEval_IMPL(...) v((v(__VA_ARGS__))) #define ML99_untuple_IMPL(x) \ ML99_PRIV_IF(ML99_IS_TUPLE(x), ML99_PRIV_UNTUPLE_TERM, ML99_PRIV_NOT_TUPLE_ERROR)(x) #define ML99_untupleChecked_IMPL(x) ML99_untuple_IMPL(x) #define ML99_untupleEval_IMPL(x) ML99_PRIV_EXPAND x #define ML99_isTuple_IMPL(x) v(ML99_IS_TUPLE(x)) #define ML99_isUntuple_IMPL(x) v(ML99_IS_UNTUPLE(x)) #define ML99_tupleCount_IMPL(x) v(ML99_TUPLE_COUNT(x)) #define ML99_tupleIsSingle_IMPL(x) v(ML99_TUPLE_IS_SINGLE(x)) #define ML99_PRIV_UNTUPLE_TERM(x) v(ML99_UNTUPLE(x)) #define ML99_PRIV_tupleGet_0(x) ML99_call(ML99_PRIV_tupleGet_0, x) #define ML99_PRIV_tupleGet_1(x) ML99_call(ML99_PRIV_tupleGet_1, x) #define ML99_PRIV_tupleGet_2(x) ML99_call(ML99_PRIV_tupleGet_2, x) #define ML99_PRIV_tupleGet_3(x) ML99_call(ML99_PRIV_tupleGet_3, x) #define ML99_PRIV_tupleGet_4(x) ML99_call(ML99_PRIV_tupleGet_4, x) #define ML99_PRIV_tupleGet_5(x) ML99_call(ML99_PRIV_tupleGet_5, x) #define ML99_PRIV_tupleGet_6(x) ML99_call(ML99_PRIV_tupleGet_6, x) #define ML99_PRIV_tupleGet_7(x) ML99_call(ML99_PRIV_tupleGet_7, x) #define ML99_PRIV_tupleGet_0_IMPL(x) v(ML99_TUPLE_GET(0)(x)) #define ML99_PRIV_tupleGet_1_IMPL(x) v(ML99_TUPLE_GET(1)(x)) #define ML99_PRIV_tupleGet_2_IMPL(x) v(ML99_TUPLE_GET(2)(x)) #define ML99_PRIV_tupleGet_3_IMPL(x) v(ML99_TUPLE_GET(3)(x)) #define ML99_PRIV_tupleGet_4_IMPL(x) v(ML99_TUPLE_GET(4)(x)) #define ML99_PRIV_tupleGet_5_IMPL(x) v(ML99_TUPLE_GET(5)(x)) #define ML99_PRIV_tupleGet_6_IMPL(x) v(ML99_TUPLE_GET(6)(x)) #define ML99_PRIV_tupleGet_7_IMPL(x) v(ML99_TUPLE_GET(7)(x)) #define ML99_PRIV_TUPLE_GET_0(x) ML99_VARIADICS_GET(0)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_1(x) ML99_VARIADICS_GET(1)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_2(x) ML99_VARIADICS_GET(2)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_3(x) ML99_VARIADICS_GET(3)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_4(x) ML99_VARIADICS_GET(4)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_5(x) ML99_VARIADICS_GET(5)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_6(x) ML99_VARIADICS_GET(6)(ML99_UNTUPLE(x)) #define ML99_PRIV_TUPLE_GET_7(x) ML99_VARIADICS_GET(7)(ML99_UNTUPLE(x)) #define ML99_tupleTail_IMPL(x) v(ML99_TUPLE_TAIL(x)) #define ML99_tupleAppend_IMPL(x, ...) v(ML99_TUPLE_APPEND(x, __VA_ARGS__)) #define ML99_tuplePrepend_IMPL(x, ...) v(ML99_TUPLE_PREPEND(x, __VA_ARGS__)) #define ML99_tupleForEach_IMPL(f, x) ML99_variadicsForEach_IMPL(f, ML99_UNTUPLE(x)) #define ML99_tupleForEachI_IMPL(f, x) ML99_variadicsForEachI_IMPL(f, ML99_UNTUPLE(x)) #define ML99_assertIsTuple_IMPL(x) \ ML99_PRIV_IF(ML99_IS_UNTUPLE(x), ML99_PRIV_NOT_TUPLE_ERROR(x), v(ML99_PRIV_EMPTY())) // clang-format off #define ML99_PRIV_NOT_TUPLE_ERROR(x) \ ML99_PRIV_IF( \ ML99_PRIV_IS_DOUBLE_TUPLE_BEGINNING(x), \ ML99_fatal(ML99_assertIsTuple, x must be (x1, ..., xN), did you miss a comma?), \ ML99_fatal(ML99_assertIsTuple, x must be (x1, ..., xN))) // clang-format on // Arity specifiers { #define ML99_tuple_ARITY 1 #define ML99_tupleEval_ARITY 1 #define ML99_untuple_ARITY 1 #define ML99_untupleChecked_ARITY 1 #define ML99_untupleEval_ARITY 1 #define ML99_isTuple_ARITY 1 #define ML99_isUntuple_ARITY 1 #define ML99_tupleCount_ARITY 1 #define ML99_tupleIsSingle_ARITY 1 #define ML99_tupleTail_ARITY 1 #define ML99_tupleAppend_ARITY 2 #define ML99_tuplePrepend_ARITY 2 #define ML99_tupleForEach_ARITY 2 #define ML99_tupleForEachI_ARITY 2 #define ML99_assertIsTuple_ARITY 1 #define ML99_PRIV_tupleGet_0_ARITY 1 #define ML99_PRIV_tupleGet_1_ARITY 1 #define ML99_PRIV_tupleGet_2_ARITY 1 #define ML99_PRIV_tupleGet_3_ARITY 1 #define ML99_PRIV_tupleGet_4_ARITY 1 #define ML99_PRIV_tupleGet_5_ARITY 1 #define ML99_PRIV_tupleGet_6_ARITY 1 #define ML99_PRIV_tupleGet_7_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_TUPLE_H hkl-5.1.7/third-party/metalang99/priv/0000775000175000017500000000000015144640565016477 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/priv/logical.h0000664000175000017500000000217014677222567020272 0ustar00piccapicca#ifndef ML99_PRIV_LOGICAL_H #define ML99_PRIV_LOGICAL_H #define ML99_PRIV_NOT(b) ML99_PRIV_LOGICAL_OVERLOAD_SINGLE(ML99_PRIV_NOT_, b) #define ML99_PRIV_NOT_0 1 #define ML99_PRIV_NOT_1 0 #define ML99_PRIV_AND(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_AND_, x, y) #define ML99_PRIV_AND_00 0 #define ML99_PRIV_AND_01 0 #define ML99_PRIV_AND_10 0 #define ML99_PRIV_AND_11 1 #define ML99_PRIV_OR(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_OR_, x, y) #define ML99_PRIV_OR_00 0 #define ML99_PRIV_OR_01 1 #define ML99_PRIV_OR_10 1 #define ML99_PRIV_OR_11 1 #define ML99_PRIV_XOR(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_XOR_, x, y) #define ML99_PRIV_XOR_00 0 #define ML99_PRIV_XOR_01 1 #define ML99_PRIV_XOR_10 1 #define ML99_PRIV_XOR_11 0 #define ML99_PRIV_BOOL_EQ(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_BOOL_EQ_, x, y) #define ML99_PRIV_BOOL_EQ_00 1 #define ML99_PRIV_BOOL_EQ_01 0 #define ML99_PRIV_BOOL_EQ_10 0 #define ML99_PRIV_BOOL_EQ_11 1 #define ML99_PRIV_LOGICAL_OVERLOAD(op, x, y) op##x##y #define ML99_PRIV_LOGICAL_OVERLOAD_SINGLE(op, b) op##b #endif // ML99_PRIV_LOGICAL_H hkl-5.1.7/third-party/metalang99/priv/compiler_attr.h0000664000175000017500000000041314677222567021522 0ustar00piccapicca#ifndef METALANG99_PRIV_COMPILER_ATTR_H #define METALANG99_PRIV_COMPILER_ATTR_H #ifdef __GNUC__ #define METALANG99_PRIV_COMPILER_ATTR_UNUSED __attribute__((unused)) #else #define METALANG99_PRIV_COMPILER_ATTR_UNUSED #endif #endif // METALANG99_PRIV_COMPILER_ATTR_H hkl-5.1.7/third-party/metalang99/priv/tuple.h0000664000175000017500000000257514677222567020022 0ustar00piccapicca#ifndef ML99_PRIV_TUPLE_H #define ML99_PRIV_TUPLE_H #include #include #define ML99_PRIV_IS_TUPLE(x) ML99_PRIV_NOT(ML99_PRIV_IS_UNTUPLE(x)) #define ML99_PRIV_IS_TUPLE_FAST(x) ML99_PRIV_NOT(ML99_PRIV_IS_UNTUPLE_FAST(x)) #define ML99_PRIV_IS_UNTUPLE(x) \ ML99_PRIV_IF( \ ML99_PRIV_IS_DOUBLE_TUPLE_BEGINNING(x), \ ML99_PRIV_TRUE, \ ML99_PRIV_IS_UNTUPLE_FAST) \ (x) #define ML99_PRIV_IS_UNTUPLE_FAST(x) ML99_PRIV_SND(ML99_PRIV_IS_UNTUPLE_FAST_TEST x, 1) #define ML99_PRIV_IS_UNTUPLE_FAST_TEST(...) ~, 0 #define ML99_PRIV_UNTUPLE(x) ML99_PRIV_EXPAND x /** * Checks whether @p x takes the form `(...) (...) ...`. * * This often happens when you miss a comma between items: * - `v(123) v(456)` * - `(Foo, int) (Bar, int)` (as in Datatype99) * - etc. */ #define ML99_PRIV_IS_DOUBLE_TUPLE_BEGINNING(x) \ ML99_PRIV_CONTAINS_COMMA(ML99_PRIV_EXPAND(ML99_PRIV_COMMA ML99_PRIV_EMPTY x)) #endif // ML99_PRIV_TUPLE_H hkl-5.1.7/third-party/metalang99/priv/aux.h0000664000175000017500000000240014677222567017451 0ustar00piccapicca#ifndef METALANG99_PRIV_AUX_H #define METALANG99_PRIV_AUX_H #include #define METALANG99_PRIV_CAT(x, y) METALANG99_PRIV_PRIMITIVE_CAT(x, y) #define METALANG99_PRIV_PRIMITIVE_CAT(x, y) x##y #define METALANG99_PRIV_EXPAND(...) __VA_ARGS__ #define METALANG99_PRIV_CONSUME(...) #define METALANG99_PRIV_INVOKE(f, ...) f(__VA_ARGS__) #define METALANG99_PRIV_PARENTHESISE(...) (__VA_ARGS__) #define METALANG99_PRIV_UNPARENTHESISE(x) METALANG99_PRIV_EXPAND(METALANG99_PRIV_EXPAND x) #define METALANG99_PRIV_IF(cond, x, y) METALANG99_PRIV_CAT(METALANG99_PRIV_IF_, cond)((x), (y)) #define METALANG99_PRIV_IF_0(_x, y) METALANG99_PRIV_UNPARENTHESISE(y) #define METALANG99_PRIV_IF_1(x, _y) METALANG99_PRIV_UNPARENTHESISE(x) #define METALANG99_PRIV_IS_UNPARENTHESISED(x) \ METALANG99_PRIV_VARIADICS_SND(METALANG99_PRIV_IS_UNPARENTHESISED_TEST x, 1, ~) #define METALANG99_PRIV_IS_UNPARENTHESISED_TEST(...) ~, 0 #define METALANG99_PRIV_IS_PARENTHESISED(x) \ METALANG99_PRIV_VARIADICS_SND(METALANG99_PRIV_IS_PARENTHESISED_TEST x, 0, ~) #define METALANG99_PRIV_IS_PARENTHESISED_TEST(...) ~, 1 #endif // METALANG99_PRIV_AUX_H hkl-5.1.7/third-party/metalang99/priv/variadics/0000775000175000017500000000000015144640565020444 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/priv/variadics/get.h0000664000175000017500000000102514677222567021402 0ustar00piccapicca#ifndef ML99_PRIV_VARIADICS_GET_H #define ML99_PRIV_VARIADICS_GET_H #define ML99_PRIV_VARIADICS_HEAD(...) ML99_PRIV_VARIADICS_HEAD_AUX(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_HEAD_AUX(x, ...) x #define ML99_PRIV_VARIADICS_TAIL(...) ML99_PRIV_VARIADICS_TAIL_AUX(__VA_ARGS__) #define ML99_PRIV_VARIADICS_TAIL_AUX(_x, ...) __VA_ARGS__ #define ML99_PRIV_VARIADICS_SND(...) ML99_PRIV_VARIADICS_SND_AUX(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_SND_AUX(_x, y, ...) y #endif // ML99_PRIV_VARIADICS_GET_H hkl-5.1.7/third-party/metalang99/priv/variadics/count.h0000664000175000017500000003331414677222567021761 0ustar00piccapicca#ifndef ML99_PRIV_VARIADICS_COUNT_H #define ML99_PRIV_VARIADICS_COUNT_H /* * Proposition: The count of arguments of `ML99_variadicsCount_IMPL` is `x`, which is * returned from `ML99_variadicsCount_IMPL_AUX`. * * Proof: * 1) Let N be the length of __VA_ARGS__. * 2) Let (args...) ---> (params...) mean that (params...) are initialised by (args...). * * Then * ({~ N times}, {63, ..., 1}, ~) ---> ({_1, ..., _63}, x, ...) * * And since N belongs to [1; 63]: * ({63, ..., 1}, ~) ---> ({_(N + 1), ..., _63}, x, ...) * * (N, ..., 1, ~) ---> (x, ...) * (N) ---> (x) */ #define ML99_PRIV_VARIADICS_COUNT(...) \ ML99_PRIV_VARIADICS_COUNT_AUX( \ __VA_ARGS__, \ 63, \ 62, \ 61, \ 60, \ 59, \ 58, \ 57, \ 56, \ 55, \ 54, \ 53, \ 52, \ 51, \ 50, \ 49, \ 48, \ 47, \ 46, \ 45, \ 44, \ 43, \ 42, \ 41, \ 40, \ 39, \ 38, \ 37, \ 36, \ 35, \ 34, \ 33, \ 32, \ 31, \ 30, \ 29, \ 28, \ 27, \ 26, \ 25, \ 24, \ 23, \ 22, \ 21, \ 20, \ 19, \ 18, \ 17, \ 16, \ 15, \ 14, \ 13, \ 12, \ 11, \ 10, \ 9, \ 8, \ 7, \ 6, \ 5, \ 4, \ 3, \ 2, \ 1, \ ~) #define ML99_PRIV_VARIADICS_COUNT_AUX( \ _1, \ _2, \ _3, \ _4, \ _5, \ _6, \ _7, \ _8, \ _9, \ _10, \ _11, \ _12, \ _13, \ _14, \ _15, \ _16, \ _17, \ _18, \ _19, \ _20, \ _21, \ _22, \ _23, \ _24, \ _25, \ _26, \ _27, \ _28, \ _29, \ _30, \ _31, \ _32, \ _33, \ _34, \ _35, \ _36, \ _37, \ _38, \ _39, \ _40, \ _41, \ _42, \ _43, \ _44, \ _45, \ _46, \ _47, \ _48, \ _49, \ _50, \ _51, \ _52, \ _53, \ _54, \ _55, \ _56, \ _57, \ _58, \ _59, \ _60, \ _61, \ _62, \ _63, \ x, \ ...) \ x #endif // ML99_PRIV_VARIADICS_COUNT_H hkl-5.1.7/third-party/metalang99/priv/pair.h0000664000175000017500000000113414677222567017612 0ustar00piccapicca#ifndef METALANG99_PRIV_PAIR_H #define METALANG99_PRIV_PAIR_H #include #define METALANG99_PRIV_PAIR_FST(pair) \ METALANG99_PRIV_PAIR_FST_EXPAND(METALANG99_PRIV_VARIADICS_HEAD pair) #define METALANG99_PRIV_PAIR_FST_EXPAND(...) __VA_ARGS__ #define METALANG99_PRIV_PAIR_SND(pair) \ METALANG99_PRIV_PAIR_SND_EXPAND(METALANG99_PRIV_VARIADICS_TAIL pair) #define METALANG99_PRIV_PAIR_SND_EXPAND(...) __VA_ARGS__ #endif // METALANG99_PRIV_PAIR_H hkl-5.1.7/third-party/metalang99/priv/bool.h0000664000175000017500000000301214677222567017607 0ustar00piccapicca#ifndef ML99_PRIV_BOOL_H #define ML99_PRIV_BOOL_H #define ML99_PRIV_TRUE(...) 1 #define ML99_PRIV_FALSE(...) 0 #define ML99_PRIV_NOT(b) ML99_PRIV_LOGICAL_OVERLOAD_SINGLE(ML99_PRIV_NOT_, b) #define ML99_PRIV_NOT_0 1 #define ML99_PRIV_NOT_1 0 #define ML99_PRIV_AND(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_AND_, x, y) #define ML99_PRIV_AND_00 0 #define ML99_PRIV_AND_01 0 #define ML99_PRIV_AND_10 0 #define ML99_PRIV_AND_11 1 #define ML99_PRIV_OR(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_OR_, x, y) #define ML99_PRIV_OR_00 0 #define ML99_PRIV_OR_01 1 #define ML99_PRIV_OR_10 1 #define ML99_PRIV_OR_11 1 #define ML99_PRIV_OR3(a, b, c) ML99_PRIV_OR(a, ML99_PRIV_OR(b, c)) #define ML99_PRIV_OR4(a, b, c, d) ML99_PRIV_OR3(a, b, ML99_PRIV_OR(c, d)) #define ML99_PRIV_XOR(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_XOR_, x, y) #define ML99_PRIV_XOR_00 0 #define ML99_PRIV_XOR_01 1 #define ML99_PRIV_XOR_10 1 #define ML99_PRIV_XOR_11 0 #define ML99_PRIV_BOOL_EQ(x, y) ML99_PRIV_LOGICAL_OVERLOAD(ML99_PRIV_BOOL_EQ_, x, y) #define ML99_PRIV_BOOL_EQ_00 1 #define ML99_PRIV_BOOL_EQ_01 0 #define ML99_PRIV_BOOL_EQ_10 0 #define ML99_PRIV_BOOL_EQ_11 1 #define ML99_PRIV_LOGICAL_OVERLOAD(op, x, y) op##x##y #define ML99_PRIV_LOGICAL_OVERLOAD_SINGLE(op, b) op##b #define ML99_PRIV_IF(cond, x, y) ML99_PRIV_IF_OVERLOAD(cond)(x, y) #define ML99_PRIV_IF_OVERLOAD(cond) ML99_PRIV_IF_##cond #define ML99_PRIV_IF_0(_x, y) y #define ML99_PRIV_IF_1(x, _y) x #endif // ML99_PRIV_BOOL_H hkl-5.1.7/third-party/metalang99/priv/util.h0000664000175000017500000000202314677222567017632 0ustar00piccapicca#ifndef ML99_PRIV_UTIL_H #define ML99_PRIV_UTIL_H #define ML99_PRIV_CAT(x, y) ML99_PRIV_PRIMITIVE_CAT(x, y) #define ML99_PRIV_PRIMITIVE_CAT(x, y) x##y #define ML99_PRIV_CAT3(x, y, z) ML99_PRIV_PRIMITIVE_CAT3(x, y, z) #define ML99_PRIV_PRIMITIVE_CAT3(x, y, z) x##y##z #define ML99_PRIV_EXPAND(...) __VA_ARGS__ #define ML99_PRIV_EMPTY(...) #define ML99_PRIV_COMMA(...) , #define ML99_PRIV_HEAD(...) ML99_PRIV_HEAD_AUX(__VA_ARGS__, ~) #define ML99_PRIV_HEAD_AUX(x, ...) x #define ML99_PRIV_TAIL(...) ML99_PRIV_TAIL_AUX(__VA_ARGS__) #define ML99_PRIV_TAIL_AUX(_x, ...) __VA_ARGS__ #define ML99_PRIV_SND(...) ML99_PRIV_SND_AUX(__VA_ARGS__, ~) #define ML99_PRIV_SND_AUX(_x, y, ...) y #define ML99_PRIV_CONTAINS_COMMA(...) ML99_PRIV_X_AS_COMMA(__VA_ARGS__, ML99_PRIV_COMMA(), ~) #define ML99_PRIV_X_AS_COMMA(_head, x, ...) ML99_PRIV_CONTAINS_COMMA_RESULT(x, 0, 1, ~) #define ML99_PRIV_CONTAINS_COMMA_RESULT(x, _, result, ...) result #endif // ML99_PRIV_UTIL_H hkl-5.1.7/third-party/metalang99/priv/compiler_specific.h0000664000175000017500000000437314677222567022346 0ustar00piccapicca#ifndef ML99_PRIV_COMPILER_SPECIFIC_H #define ML99_PRIV_COMPILER_SPECIFIC_H #define ML99_PRIV_C11_VERSION 201112L // GCC 4.6 Release Series: . #define ML99_PRIV_IS_GCC_4_6_OR_HIGHER ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || (__GNUC__ >= 5)) #ifdef __GNUC__ #define ML99_PRIV_COMPILER_ATTR_UNUSED __attribute__((unused)) #else #define ML99_PRIV_COMPILER_ATTR_UNUSED #endif // ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE { #if __STDC__ && __STDC_VERSION__ >= ML99_PRIV_C11_VERSION #define ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE /* * On MSVC, `__STDC__` expands to 0 if the `\Za` option was not specified, but the thing is that it * nevertheless supports C11's `_Static_assert`. * * MSVC Standard predefined macros: * . */ #elif defined(_MSC_VER) && __STDC_VERSION__ >= ML99_PRIV_C11_VERSION #define ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE #endif // } (ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE) // ML99_PRIV_EMIT_ERROR { #ifdef ML99_PRIV_C11_STATIC_ASSERT_AVAILABLE #define ML99_PRIV_EMIT_ERROR ML99_PRIV_STATIC_ASSERT_ERROR #elif defined(__clang__) #if __has_extension(c_static_assert) #define ML99_PRIV_EMIT_ERROR ML99_PRIV_STATIC_ASSERT_ERROR #endif #elif defined(__GNUC__) #if ML99_PRIV_IS_GCC_4_6_OR_HIGHER #define ML99_PRIV_EMIT_ERROR ML99_PRIV_STATIC_ASSERT_ERROR #else // GCC Common Function Attributes: // . #define ML99_PRIV_EMIT_ERROR(message) \ void __attribute__((constructor, error(message))) ML99_CAT(ml99_error_, __LINE__)(void) { \ ML99_CAT(ml99_error_, __LINE__)(); \ } #endif #endif #if !defined(ML99_PRIV_EMIT_ERROR) && !defined(ML99_ALLOW_POOR_DIAGNOSTICS) #error Your compiler doesn't support decent diagnostic messages. \ You'll have to search for Metalang99 errors in a preprocessed-only file (-E) by yourself. \ Define ML99_ALLOW_POOR_DIAGNOSTICS to suppress this error. #endif #define ML99_PRIV_STATIC_ASSERT_ERROR(message) _Static_assert(0, message) // } (ML99_PRIV_EMIT_ERROR) #endif // ML99_PRIV_COMPILER_SPECIFIC_H hkl-5.1.7/third-party/metalang99/nat/0000775000175000017500000000000015144640565016301 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/nat/dec.h0000664000175000017500000001707514677222567017227 0ustar00piccapicca#ifndef ML99_NAT_DEC_H #define ML99_NAT_DEC_H #define ML99_PRIV_DEC(x) ML99_PRIV_DEC_AUX(x) #define ML99_PRIV_DEC_AUX(x) ML99_PRIV_DEC_##x #define ML99_PRIV_DEC_0 255 #define ML99_PRIV_DEC_1 0 #define ML99_PRIV_DEC_2 1 #define ML99_PRIV_DEC_3 2 #define ML99_PRIV_DEC_4 3 #define ML99_PRIV_DEC_5 4 #define ML99_PRIV_DEC_6 5 #define ML99_PRIV_DEC_7 6 #define ML99_PRIV_DEC_8 7 #define ML99_PRIV_DEC_9 8 #define ML99_PRIV_DEC_10 9 #define ML99_PRIV_DEC_11 10 #define ML99_PRIV_DEC_12 11 #define ML99_PRIV_DEC_13 12 #define ML99_PRIV_DEC_14 13 #define ML99_PRIV_DEC_15 14 #define ML99_PRIV_DEC_16 15 #define ML99_PRIV_DEC_17 16 #define ML99_PRIV_DEC_18 17 #define ML99_PRIV_DEC_19 18 #define ML99_PRIV_DEC_20 19 #define ML99_PRIV_DEC_21 20 #define ML99_PRIV_DEC_22 21 #define ML99_PRIV_DEC_23 22 #define ML99_PRIV_DEC_24 23 #define ML99_PRIV_DEC_25 24 #define ML99_PRIV_DEC_26 25 #define ML99_PRIV_DEC_27 26 #define ML99_PRIV_DEC_28 27 #define ML99_PRIV_DEC_29 28 #define ML99_PRIV_DEC_30 29 #define ML99_PRIV_DEC_31 30 #define ML99_PRIV_DEC_32 31 #define ML99_PRIV_DEC_33 32 #define ML99_PRIV_DEC_34 33 #define ML99_PRIV_DEC_35 34 #define ML99_PRIV_DEC_36 35 #define ML99_PRIV_DEC_37 36 #define ML99_PRIV_DEC_38 37 #define ML99_PRIV_DEC_39 38 #define ML99_PRIV_DEC_40 39 #define ML99_PRIV_DEC_41 40 #define ML99_PRIV_DEC_42 41 #define ML99_PRIV_DEC_43 42 #define ML99_PRIV_DEC_44 43 #define ML99_PRIV_DEC_45 44 #define ML99_PRIV_DEC_46 45 #define ML99_PRIV_DEC_47 46 #define ML99_PRIV_DEC_48 47 #define ML99_PRIV_DEC_49 48 #define ML99_PRIV_DEC_50 49 #define ML99_PRIV_DEC_51 50 #define ML99_PRIV_DEC_52 51 #define ML99_PRIV_DEC_53 52 #define ML99_PRIV_DEC_54 53 #define ML99_PRIV_DEC_55 54 #define ML99_PRIV_DEC_56 55 #define ML99_PRIV_DEC_57 56 #define ML99_PRIV_DEC_58 57 #define ML99_PRIV_DEC_59 58 #define ML99_PRIV_DEC_60 59 #define ML99_PRIV_DEC_61 60 #define ML99_PRIV_DEC_62 61 #define ML99_PRIV_DEC_63 62 #define ML99_PRIV_DEC_64 63 #define ML99_PRIV_DEC_65 64 #define ML99_PRIV_DEC_66 65 #define ML99_PRIV_DEC_67 66 #define ML99_PRIV_DEC_68 67 #define ML99_PRIV_DEC_69 68 #define ML99_PRIV_DEC_70 69 #define ML99_PRIV_DEC_71 70 #define ML99_PRIV_DEC_72 71 #define ML99_PRIV_DEC_73 72 #define ML99_PRIV_DEC_74 73 #define ML99_PRIV_DEC_75 74 #define ML99_PRIV_DEC_76 75 #define ML99_PRIV_DEC_77 76 #define ML99_PRIV_DEC_78 77 #define ML99_PRIV_DEC_79 78 #define ML99_PRIV_DEC_80 79 #define ML99_PRIV_DEC_81 80 #define ML99_PRIV_DEC_82 81 #define ML99_PRIV_DEC_83 82 #define ML99_PRIV_DEC_84 83 #define ML99_PRIV_DEC_85 84 #define ML99_PRIV_DEC_86 85 #define ML99_PRIV_DEC_87 86 #define ML99_PRIV_DEC_88 87 #define ML99_PRIV_DEC_89 88 #define ML99_PRIV_DEC_90 89 #define ML99_PRIV_DEC_91 90 #define ML99_PRIV_DEC_92 91 #define ML99_PRIV_DEC_93 92 #define ML99_PRIV_DEC_94 93 #define ML99_PRIV_DEC_95 94 #define ML99_PRIV_DEC_96 95 #define ML99_PRIV_DEC_97 96 #define ML99_PRIV_DEC_98 97 #define ML99_PRIV_DEC_99 98 #define ML99_PRIV_DEC_100 99 #define ML99_PRIV_DEC_101 100 #define ML99_PRIV_DEC_102 101 #define ML99_PRIV_DEC_103 102 #define ML99_PRIV_DEC_104 103 #define ML99_PRIV_DEC_105 104 #define ML99_PRIV_DEC_106 105 #define ML99_PRIV_DEC_107 106 #define ML99_PRIV_DEC_108 107 #define ML99_PRIV_DEC_109 108 #define ML99_PRIV_DEC_110 109 #define ML99_PRIV_DEC_111 110 #define ML99_PRIV_DEC_112 111 #define ML99_PRIV_DEC_113 112 #define ML99_PRIV_DEC_114 113 #define ML99_PRIV_DEC_115 114 #define ML99_PRIV_DEC_116 115 #define ML99_PRIV_DEC_117 116 #define ML99_PRIV_DEC_118 117 #define ML99_PRIV_DEC_119 118 #define ML99_PRIV_DEC_120 119 #define ML99_PRIV_DEC_121 120 #define ML99_PRIV_DEC_122 121 #define ML99_PRIV_DEC_123 122 #define ML99_PRIV_DEC_124 123 #define ML99_PRIV_DEC_125 124 #define ML99_PRIV_DEC_126 125 #define ML99_PRIV_DEC_127 126 #define ML99_PRIV_DEC_128 127 #define ML99_PRIV_DEC_129 128 #define ML99_PRIV_DEC_130 129 #define ML99_PRIV_DEC_131 130 #define ML99_PRIV_DEC_132 131 #define ML99_PRIV_DEC_133 132 #define ML99_PRIV_DEC_134 133 #define ML99_PRIV_DEC_135 134 #define ML99_PRIV_DEC_136 135 #define ML99_PRIV_DEC_137 136 #define ML99_PRIV_DEC_138 137 #define ML99_PRIV_DEC_139 138 #define ML99_PRIV_DEC_140 139 #define ML99_PRIV_DEC_141 140 #define ML99_PRIV_DEC_142 141 #define ML99_PRIV_DEC_143 142 #define ML99_PRIV_DEC_144 143 #define ML99_PRIV_DEC_145 144 #define ML99_PRIV_DEC_146 145 #define ML99_PRIV_DEC_147 146 #define ML99_PRIV_DEC_148 147 #define ML99_PRIV_DEC_149 148 #define ML99_PRIV_DEC_150 149 #define ML99_PRIV_DEC_151 150 #define ML99_PRIV_DEC_152 151 #define ML99_PRIV_DEC_153 152 #define ML99_PRIV_DEC_154 153 #define ML99_PRIV_DEC_155 154 #define ML99_PRIV_DEC_156 155 #define ML99_PRIV_DEC_157 156 #define ML99_PRIV_DEC_158 157 #define ML99_PRIV_DEC_159 158 #define ML99_PRIV_DEC_160 159 #define ML99_PRIV_DEC_161 160 #define ML99_PRIV_DEC_162 161 #define ML99_PRIV_DEC_163 162 #define ML99_PRIV_DEC_164 163 #define ML99_PRIV_DEC_165 164 #define ML99_PRIV_DEC_166 165 #define ML99_PRIV_DEC_167 166 #define ML99_PRIV_DEC_168 167 #define ML99_PRIV_DEC_169 168 #define ML99_PRIV_DEC_170 169 #define ML99_PRIV_DEC_171 170 #define ML99_PRIV_DEC_172 171 #define ML99_PRIV_DEC_173 172 #define ML99_PRIV_DEC_174 173 #define ML99_PRIV_DEC_175 174 #define ML99_PRIV_DEC_176 175 #define ML99_PRIV_DEC_177 176 #define ML99_PRIV_DEC_178 177 #define ML99_PRIV_DEC_179 178 #define ML99_PRIV_DEC_180 179 #define ML99_PRIV_DEC_181 180 #define ML99_PRIV_DEC_182 181 #define ML99_PRIV_DEC_183 182 #define ML99_PRIV_DEC_184 183 #define ML99_PRIV_DEC_185 184 #define ML99_PRIV_DEC_186 185 #define ML99_PRIV_DEC_187 186 #define ML99_PRIV_DEC_188 187 #define ML99_PRIV_DEC_189 188 #define ML99_PRIV_DEC_190 189 #define ML99_PRIV_DEC_191 190 #define ML99_PRIV_DEC_192 191 #define ML99_PRIV_DEC_193 192 #define ML99_PRIV_DEC_194 193 #define ML99_PRIV_DEC_195 194 #define ML99_PRIV_DEC_196 195 #define ML99_PRIV_DEC_197 196 #define ML99_PRIV_DEC_198 197 #define ML99_PRIV_DEC_199 198 #define ML99_PRIV_DEC_200 199 #define ML99_PRIV_DEC_201 200 #define ML99_PRIV_DEC_202 201 #define ML99_PRIV_DEC_203 202 #define ML99_PRIV_DEC_204 203 #define ML99_PRIV_DEC_205 204 #define ML99_PRIV_DEC_206 205 #define ML99_PRIV_DEC_207 206 #define ML99_PRIV_DEC_208 207 #define ML99_PRIV_DEC_209 208 #define ML99_PRIV_DEC_210 209 #define ML99_PRIV_DEC_211 210 #define ML99_PRIV_DEC_212 211 #define ML99_PRIV_DEC_213 212 #define ML99_PRIV_DEC_214 213 #define ML99_PRIV_DEC_215 214 #define ML99_PRIV_DEC_216 215 #define ML99_PRIV_DEC_217 216 #define ML99_PRIV_DEC_218 217 #define ML99_PRIV_DEC_219 218 #define ML99_PRIV_DEC_220 219 #define ML99_PRIV_DEC_221 220 #define ML99_PRIV_DEC_222 221 #define ML99_PRIV_DEC_223 222 #define ML99_PRIV_DEC_224 223 #define ML99_PRIV_DEC_225 224 #define ML99_PRIV_DEC_226 225 #define ML99_PRIV_DEC_227 226 #define ML99_PRIV_DEC_228 227 #define ML99_PRIV_DEC_229 228 #define ML99_PRIV_DEC_230 229 #define ML99_PRIV_DEC_231 230 #define ML99_PRIV_DEC_232 231 #define ML99_PRIV_DEC_233 232 #define ML99_PRIV_DEC_234 233 #define ML99_PRIV_DEC_235 234 #define ML99_PRIV_DEC_236 235 #define ML99_PRIV_DEC_237 236 #define ML99_PRIV_DEC_238 237 #define ML99_PRIV_DEC_239 238 #define ML99_PRIV_DEC_240 239 #define ML99_PRIV_DEC_241 240 #define ML99_PRIV_DEC_242 241 #define ML99_PRIV_DEC_243 242 #define ML99_PRIV_DEC_244 243 #define ML99_PRIV_DEC_245 244 #define ML99_PRIV_DEC_246 245 #define ML99_PRIV_DEC_247 246 #define ML99_PRIV_DEC_248 247 #define ML99_PRIV_DEC_249 248 #define ML99_PRIV_DEC_250 249 #define ML99_PRIV_DEC_251 250 #define ML99_PRIV_DEC_252 251 #define ML99_PRIV_DEC_253 252 #define ML99_PRIV_DEC_254 253 #define ML99_PRIV_DEC_255 254 #endif // ML99_NAT_DEC_H hkl-5.1.7/third-party/metalang99/nat/inc.h0000664000175000017500000001707514677222567017245 0ustar00piccapicca#ifndef ML99_NAT_INC_H #define ML99_NAT_INC_H #define ML99_PRIV_INC(x) ML99_PRIV_INC_AUX(x) #define ML99_PRIV_INC_AUX(x) ML99_PRIV_INC_##x #define ML99_PRIV_INC_0 1 #define ML99_PRIV_INC_1 2 #define ML99_PRIV_INC_2 3 #define ML99_PRIV_INC_3 4 #define ML99_PRIV_INC_4 5 #define ML99_PRIV_INC_5 6 #define ML99_PRIV_INC_6 7 #define ML99_PRIV_INC_7 8 #define ML99_PRIV_INC_8 9 #define ML99_PRIV_INC_9 10 #define ML99_PRIV_INC_10 11 #define ML99_PRIV_INC_11 12 #define ML99_PRIV_INC_12 13 #define ML99_PRIV_INC_13 14 #define ML99_PRIV_INC_14 15 #define ML99_PRIV_INC_15 16 #define ML99_PRIV_INC_16 17 #define ML99_PRIV_INC_17 18 #define ML99_PRIV_INC_18 19 #define ML99_PRIV_INC_19 20 #define ML99_PRIV_INC_20 21 #define ML99_PRIV_INC_21 22 #define ML99_PRIV_INC_22 23 #define ML99_PRIV_INC_23 24 #define ML99_PRIV_INC_24 25 #define ML99_PRIV_INC_25 26 #define ML99_PRIV_INC_26 27 #define ML99_PRIV_INC_27 28 #define ML99_PRIV_INC_28 29 #define ML99_PRIV_INC_29 30 #define ML99_PRIV_INC_30 31 #define ML99_PRIV_INC_31 32 #define ML99_PRIV_INC_32 33 #define ML99_PRIV_INC_33 34 #define ML99_PRIV_INC_34 35 #define ML99_PRIV_INC_35 36 #define ML99_PRIV_INC_36 37 #define ML99_PRIV_INC_37 38 #define ML99_PRIV_INC_38 39 #define ML99_PRIV_INC_39 40 #define ML99_PRIV_INC_40 41 #define ML99_PRIV_INC_41 42 #define ML99_PRIV_INC_42 43 #define ML99_PRIV_INC_43 44 #define ML99_PRIV_INC_44 45 #define ML99_PRIV_INC_45 46 #define ML99_PRIV_INC_46 47 #define ML99_PRIV_INC_47 48 #define ML99_PRIV_INC_48 49 #define ML99_PRIV_INC_49 50 #define ML99_PRIV_INC_50 51 #define ML99_PRIV_INC_51 52 #define ML99_PRIV_INC_52 53 #define ML99_PRIV_INC_53 54 #define ML99_PRIV_INC_54 55 #define ML99_PRIV_INC_55 56 #define ML99_PRIV_INC_56 57 #define ML99_PRIV_INC_57 58 #define ML99_PRIV_INC_58 59 #define ML99_PRIV_INC_59 60 #define ML99_PRIV_INC_60 61 #define ML99_PRIV_INC_61 62 #define ML99_PRIV_INC_62 63 #define ML99_PRIV_INC_63 64 #define ML99_PRIV_INC_64 65 #define ML99_PRIV_INC_65 66 #define ML99_PRIV_INC_66 67 #define ML99_PRIV_INC_67 68 #define ML99_PRIV_INC_68 69 #define ML99_PRIV_INC_69 70 #define ML99_PRIV_INC_70 71 #define ML99_PRIV_INC_71 72 #define ML99_PRIV_INC_72 73 #define ML99_PRIV_INC_73 74 #define ML99_PRIV_INC_74 75 #define ML99_PRIV_INC_75 76 #define ML99_PRIV_INC_76 77 #define ML99_PRIV_INC_77 78 #define ML99_PRIV_INC_78 79 #define ML99_PRIV_INC_79 80 #define ML99_PRIV_INC_80 81 #define ML99_PRIV_INC_81 82 #define ML99_PRIV_INC_82 83 #define ML99_PRIV_INC_83 84 #define ML99_PRIV_INC_84 85 #define ML99_PRIV_INC_85 86 #define ML99_PRIV_INC_86 87 #define ML99_PRIV_INC_87 88 #define ML99_PRIV_INC_88 89 #define ML99_PRIV_INC_89 90 #define ML99_PRIV_INC_90 91 #define ML99_PRIV_INC_91 92 #define ML99_PRIV_INC_92 93 #define ML99_PRIV_INC_93 94 #define ML99_PRIV_INC_94 95 #define ML99_PRIV_INC_95 96 #define ML99_PRIV_INC_96 97 #define ML99_PRIV_INC_97 98 #define ML99_PRIV_INC_98 99 #define ML99_PRIV_INC_99 100 #define ML99_PRIV_INC_100 101 #define ML99_PRIV_INC_101 102 #define ML99_PRIV_INC_102 103 #define ML99_PRIV_INC_103 104 #define ML99_PRIV_INC_104 105 #define ML99_PRIV_INC_105 106 #define ML99_PRIV_INC_106 107 #define ML99_PRIV_INC_107 108 #define ML99_PRIV_INC_108 109 #define ML99_PRIV_INC_109 110 #define ML99_PRIV_INC_110 111 #define ML99_PRIV_INC_111 112 #define ML99_PRIV_INC_112 113 #define ML99_PRIV_INC_113 114 #define ML99_PRIV_INC_114 115 #define ML99_PRIV_INC_115 116 #define ML99_PRIV_INC_116 117 #define ML99_PRIV_INC_117 118 #define ML99_PRIV_INC_118 119 #define ML99_PRIV_INC_119 120 #define ML99_PRIV_INC_120 121 #define ML99_PRIV_INC_121 122 #define ML99_PRIV_INC_122 123 #define ML99_PRIV_INC_123 124 #define ML99_PRIV_INC_124 125 #define ML99_PRIV_INC_125 126 #define ML99_PRIV_INC_126 127 #define ML99_PRIV_INC_127 128 #define ML99_PRIV_INC_128 129 #define ML99_PRIV_INC_129 130 #define ML99_PRIV_INC_130 131 #define ML99_PRIV_INC_131 132 #define ML99_PRIV_INC_132 133 #define ML99_PRIV_INC_133 134 #define ML99_PRIV_INC_134 135 #define ML99_PRIV_INC_135 136 #define ML99_PRIV_INC_136 137 #define ML99_PRIV_INC_137 138 #define ML99_PRIV_INC_138 139 #define ML99_PRIV_INC_139 140 #define ML99_PRIV_INC_140 141 #define ML99_PRIV_INC_141 142 #define ML99_PRIV_INC_142 143 #define ML99_PRIV_INC_143 144 #define ML99_PRIV_INC_144 145 #define ML99_PRIV_INC_145 146 #define ML99_PRIV_INC_146 147 #define ML99_PRIV_INC_147 148 #define ML99_PRIV_INC_148 149 #define ML99_PRIV_INC_149 150 #define ML99_PRIV_INC_150 151 #define ML99_PRIV_INC_151 152 #define ML99_PRIV_INC_152 153 #define ML99_PRIV_INC_153 154 #define ML99_PRIV_INC_154 155 #define ML99_PRIV_INC_155 156 #define ML99_PRIV_INC_156 157 #define ML99_PRIV_INC_157 158 #define ML99_PRIV_INC_158 159 #define ML99_PRIV_INC_159 160 #define ML99_PRIV_INC_160 161 #define ML99_PRIV_INC_161 162 #define ML99_PRIV_INC_162 163 #define ML99_PRIV_INC_163 164 #define ML99_PRIV_INC_164 165 #define ML99_PRIV_INC_165 166 #define ML99_PRIV_INC_166 167 #define ML99_PRIV_INC_167 168 #define ML99_PRIV_INC_168 169 #define ML99_PRIV_INC_169 170 #define ML99_PRIV_INC_170 171 #define ML99_PRIV_INC_171 172 #define ML99_PRIV_INC_172 173 #define ML99_PRIV_INC_173 174 #define ML99_PRIV_INC_174 175 #define ML99_PRIV_INC_175 176 #define ML99_PRIV_INC_176 177 #define ML99_PRIV_INC_177 178 #define ML99_PRIV_INC_178 179 #define ML99_PRIV_INC_179 180 #define ML99_PRIV_INC_180 181 #define ML99_PRIV_INC_181 182 #define ML99_PRIV_INC_182 183 #define ML99_PRIV_INC_183 184 #define ML99_PRIV_INC_184 185 #define ML99_PRIV_INC_185 186 #define ML99_PRIV_INC_186 187 #define ML99_PRIV_INC_187 188 #define ML99_PRIV_INC_188 189 #define ML99_PRIV_INC_189 190 #define ML99_PRIV_INC_190 191 #define ML99_PRIV_INC_191 192 #define ML99_PRIV_INC_192 193 #define ML99_PRIV_INC_193 194 #define ML99_PRIV_INC_194 195 #define ML99_PRIV_INC_195 196 #define ML99_PRIV_INC_196 197 #define ML99_PRIV_INC_197 198 #define ML99_PRIV_INC_198 199 #define ML99_PRIV_INC_199 200 #define ML99_PRIV_INC_200 201 #define ML99_PRIV_INC_201 202 #define ML99_PRIV_INC_202 203 #define ML99_PRIV_INC_203 204 #define ML99_PRIV_INC_204 205 #define ML99_PRIV_INC_205 206 #define ML99_PRIV_INC_206 207 #define ML99_PRIV_INC_207 208 #define ML99_PRIV_INC_208 209 #define ML99_PRIV_INC_209 210 #define ML99_PRIV_INC_210 211 #define ML99_PRIV_INC_211 212 #define ML99_PRIV_INC_212 213 #define ML99_PRIV_INC_213 214 #define ML99_PRIV_INC_214 215 #define ML99_PRIV_INC_215 216 #define ML99_PRIV_INC_216 217 #define ML99_PRIV_INC_217 218 #define ML99_PRIV_INC_218 219 #define ML99_PRIV_INC_219 220 #define ML99_PRIV_INC_220 221 #define ML99_PRIV_INC_221 222 #define ML99_PRIV_INC_222 223 #define ML99_PRIV_INC_223 224 #define ML99_PRIV_INC_224 225 #define ML99_PRIV_INC_225 226 #define ML99_PRIV_INC_226 227 #define ML99_PRIV_INC_227 228 #define ML99_PRIV_INC_228 229 #define ML99_PRIV_INC_229 230 #define ML99_PRIV_INC_230 231 #define ML99_PRIV_INC_231 232 #define ML99_PRIV_INC_232 233 #define ML99_PRIV_INC_233 234 #define ML99_PRIV_INC_234 235 #define ML99_PRIV_INC_235 236 #define ML99_PRIV_INC_236 237 #define ML99_PRIV_INC_237 238 #define ML99_PRIV_INC_238 239 #define ML99_PRIV_INC_239 240 #define ML99_PRIV_INC_240 241 #define ML99_PRIV_INC_241 242 #define ML99_PRIV_INC_242 243 #define ML99_PRIV_INC_243 244 #define ML99_PRIV_INC_244 245 #define ML99_PRIV_INC_245 246 #define ML99_PRIV_INC_246 247 #define ML99_PRIV_INC_247 248 #define ML99_PRIV_INC_248 249 #define ML99_PRIV_INC_249 250 #define ML99_PRIV_INC_250 251 #define ML99_PRIV_INC_251 252 #define ML99_PRIV_INC_252 253 #define ML99_PRIV_INC_253 254 #define ML99_PRIV_INC_254 255 #define ML99_PRIV_INC_255 0 #endif // ML99_NAT_INC_H hkl-5.1.7/third-party/metalang99/nat/div.h0000664000175000017500000013261714677222567017256 0ustar00piccapicca#ifndef ML99_NAT_DIV_H #define ML99_NAT_DIV_H #include #include #include #include #define ML99_div_IMPL(x, y) \ ML99_matchWithArgs_IMPL(ML99_PRIV_DIV_CHECKED(x, y), ML99_PRIV_DIV_, x, y) #define ML99_PRIV_DIV_nothing_IMPL(_, x, y) ML99_fatal(ML99_div, x is not divisible by y) #define ML99_PRIV_DIV_just_IMPL(n, _x, _y) v(n) #define ML99_PRIV_DIV_CHECKED(x, y) \ ML99_PRIV_IF( \ ML99_PRIV_NAT_EQ(y, 1), \ ML99_JUST(x), \ ML99_PRIV_IF( \ ML99_PRIV_NAT_EQ(x, y), \ ML99_JUST(1), \ ML99_UNTUPLE(ML99_PRIV_SND(ML99_PRIV_DIV_##x##_##y, (ML99_NOTHING()))))) #define ML99_PRIV_DIV_4_2 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_6_2 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_6_3 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_8_2 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_8_4 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_9_3 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_10_2 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_10_5 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_12_2 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_12_3 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_12_4 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_12_6 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_14_2 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_14_7 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_15_3 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_15_5 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_16_2 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_16_4 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_16_8 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_18_2 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_18_3 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_18_6 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_18_9 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_20_2 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_20_4 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_20_5 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_20_10 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_21_3 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_21_7 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_22_2 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_22_11 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_24_2 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_24_3 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_24_4 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_24_6 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_24_8 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_24_12 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_25_5 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_26_2 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_26_13 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_27_3 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_27_9 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_28_2 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_28_4 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_28_7 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_28_14 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_30_2 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_30_3 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_30_5 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_30_6 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_30_10 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_30_15 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_32_2 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_32_4 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_32_8 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_32_16 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_33_3 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_33_11 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_34_2 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_34_17 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_35_5 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_35_7 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_36_2 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_36_3 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_36_4 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_36_6 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_36_9 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_36_12 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_36_18 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_38_2 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_38_19 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_39_3 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_39_13 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_40_2 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_40_4 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_40_5 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_40_8 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_40_10 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_40_20 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_42_2 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_42_3 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_42_6 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_42_7 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_42_14 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_42_21 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_44_2 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_44_4 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_44_11 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_44_22 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_45_3 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_45_5 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_45_9 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_45_15 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_46_2 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_46_23 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_48_2 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_48_3 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_48_4 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_48_6 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_48_8 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_48_12 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_48_16 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_48_24 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_49_7 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_50_2 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_50_5 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_50_10 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_50_25 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_51_3 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_51_17 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_52_2 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_52_4 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_52_13 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_52_26 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_54_2 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_54_3 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_54_6 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_54_9 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_54_18 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_54_27 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_55_5 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_55_11 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_56_2 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_56_4 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_56_7 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_56_8 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_56_14 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_56_28 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_57_3 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_57_19 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_58_2 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_58_29 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_60_2 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_60_3 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_60_4 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_60_5 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_60_6 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_60_10 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_60_12 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_60_15 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_60_20 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_60_30 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_62_2 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_62_31 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_63_3 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_63_7 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_63_9 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_63_21 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_64_2 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_64_4 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_64_8 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_64_16 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_64_32 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_65_5 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_65_13 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_66_2 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_66_3 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_66_6 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_66_11 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_66_22 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_66_33 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_68_2 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_68_4 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_68_17 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_68_34 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_69_3 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_69_23 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_70_2 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_70_5 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_70_7 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_70_10 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_70_14 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_70_35 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_72_2 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_72_3 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_72_4 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_72_6 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_72_8 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_72_9 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_72_12 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_72_18 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_72_24 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_72_36 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_74_2 ~, (ML99_JUST(37)) #define ML99_PRIV_DIV_74_37 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_75_3 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_75_5 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_75_15 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_75_25 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_76_2 ~, (ML99_JUST(38)) #define ML99_PRIV_DIV_76_4 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_76_19 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_76_38 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_77_7 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_77_11 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_78_2 ~, (ML99_JUST(39)) #define ML99_PRIV_DIV_78_3 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_78_6 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_78_13 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_78_26 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_78_39 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_80_2 ~, (ML99_JUST(40)) #define ML99_PRIV_DIV_80_4 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_80_5 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_80_8 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_80_10 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_80_16 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_80_20 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_80_40 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_81_3 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_81_9 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_81_27 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_82_2 ~, (ML99_JUST(41)) #define ML99_PRIV_DIV_82_41 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_84_2 ~, (ML99_JUST(42)) #define ML99_PRIV_DIV_84_3 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_84_4 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_84_6 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_84_7 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_84_12 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_84_14 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_84_21 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_84_28 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_84_42 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_85_5 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_85_17 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_86_2 ~, (ML99_JUST(43)) #define ML99_PRIV_DIV_86_43 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_87_3 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_87_29 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_88_2 ~, (ML99_JUST(44)) #define ML99_PRIV_DIV_88_4 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_88_8 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_88_11 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_88_22 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_88_44 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_90_2 ~, (ML99_JUST(45)) #define ML99_PRIV_DIV_90_3 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_90_5 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_90_6 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_90_9 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_90_10 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_90_15 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_90_18 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_90_30 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_90_45 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_91_7 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_91_13 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_92_2 ~, (ML99_JUST(46)) #define ML99_PRIV_DIV_92_4 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_92_23 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_92_46 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_93_3 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_93_31 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_94_2 ~, (ML99_JUST(47)) #define ML99_PRIV_DIV_94_47 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_95_5 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_95_19 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_96_2 ~, (ML99_JUST(48)) #define ML99_PRIV_DIV_96_3 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_96_4 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_96_6 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_96_8 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_96_12 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_96_16 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_96_24 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_96_32 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_96_48 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_98_2 ~, (ML99_JUST(49)) #define ML99_PRIV_DIV_98_7 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_98_14 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_98_49 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_99_3 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_99_9 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_99_11 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_99_33 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_100_2 ~, (ML99_JUST(50)) #define ML99_PRIV_DIV_100_4 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_100_5 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_100_10 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_100_20 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_100_25 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_100_50 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_102_2 ~, (ML99_JUST(51)) #define ML99_PRIV_DIV_102_3 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_102_6 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_102_17 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_102_34 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_102_51 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_104_2 ~, (ML99_JUST(52)) #define ML99_PRIV_DIV_104_4 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_104_8 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_104_13 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_104_26 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_104_52 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_105_3 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_105_5 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_105_7 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_105_15 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_105_21 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_105_35 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_106_2 ~, (ML99_JUST(53)) #define ML99_PRIV_DIV_106_53 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_108_2 ~, (ML99_JUST(54)) #define ML99_PRIV_DIV_108_3 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_108_4 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_108_6 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_108_9 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_108_12 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_108_18 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_108_27 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_108_36 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_108_54 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_110_2 ~, (ML99_JUST(55)) #define ML99_PRIV_DIV_110_5 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_110_10 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_110_11 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_110_22 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_110_55 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_111_3 ~, (ML99_JUST(37)) #define ML99_PRIV_DIV_111_37 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_112_2 ~, (ML99_JUST(56)) #define ML99_PRIV_DIV_112_4 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_112_7 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_112_8 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_112_14 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_112_16 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_112_28 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_112_56 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_114_2 ~, (ML99_JUST(57)) #define ML99_PRIV_DIV_114_3 ~, (ML99_JUST(38)) #define ML99_PRIV_DIV_114_6 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_114_19 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_114_38 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_114_57 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_115_5 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_115_23 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_116_2 ~, (ML99_JUST(58)) #define ML99_PRIV_DIV_116_4 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_116_29 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_116_58 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_117_3 ~, (ML99_JUST(39)) #define ML99_PRIV_DIV_117_9 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_117_13 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_117_39 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_118_2 ~, (ML99_JUST(59)) #define ML99_PRIV_DIV_118_59 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_119_7 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_119_17 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_120_2 ~, (ML99_JUST(60)) #define ML99_PRIV_DIV_120_3 ~, (ML99_JUST(40)) #define ML99_PRIV_DIV_120_4 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_120_5 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_120_6 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_120_8 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_120_10 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_120_12 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_120_15 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_120_20 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_120_24 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_120_30 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_120_40 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_120_60 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_121_11 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_122_2 ~, (ML99_JUST(61)) #define ML99_PRIV_DIV_122_61 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_123_3 ~, (ML99_JUST(41)) #define ML99_PRIV_DIV_123_41 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_124_2 ~, (ML99_JUST(62)) #define ML99_PRIV_DIV_124_4 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_124_31 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_124_62 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_125_5 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_125_25 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_126_2 ~, (ML99_JUST(63)) #define ML99_PRIV_DIV_126_3 ~, (ML99_JUST(42)) #define ML99_PRIV_DIV_126_6 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_126_7 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_126_9 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_126_14 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_126_18 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_126_21 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_126_42 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_126_63 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_128_2 ~, (ML99_JUST(64)) #define ML99_PRIV_DIV_128_4 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_128_8 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_128_16 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_128_32 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_128_64 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_129_3 ~, (ML99_JUST(43)) #define ML99_PRIV_DIV_129_43 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_130_2 ~, (ML99_JUST(65)) #define ML99_PRIV_DIV_130_5 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_130_10 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_130_13 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_130_26 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_130_65 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_132_2 ~, (ML99_JUST(66)) #define ML99_PRIV_DIV_132_3 ~, (ML99_JUST(44)) #define ML99_PRIV_DIV_132_4 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_132_6 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_132_11 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_132_12 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_132_22 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_132_33 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_132_44 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_132_66 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_133_7 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_133_19 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_134_2 ~, (ML99_JUST(67)) #define ML99_PRIV_DIV_134_67 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_135_3 ~, (ML99_JUST(45)) #define ML99_PRIV_DIV_135_5 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_135_9 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_135_15 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_135_27 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_135_45 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_136_2 ~, (ML99_JUST(68)) #define ML99_PRIV_DIV_136_4 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_136_8 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_136_17 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_136_34 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_136_68 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_138_2 ~, (ML99_JUST(69)) #define ML99_PRIV_DIV_138_3 ~, (ML99_JUST(46)) #define ML99_PRIV_DIV_138_6 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_138_23 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_138_46 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_138_69 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_140_2 ~, (ML99_JUST(70)) #define ML99_PRIV_DIV_140_4 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_140_5 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_140_7 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_140_10 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_140_14 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_140_20 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_140_28 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_140_35 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_140_70 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_141_3 ~, (ML99_JUST(47)) #define ML99_PRIV_DIV_141_47 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_142_2 ~, (ML99_JUST(71)) #define ML99_PRIV_DIV_142_71 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_143_11 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_143_13 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_144_2 ~, (ML99_JUST(72)) #define ML99_PRIV_DIV_144_3 ~, (ML99_JUST(48)) #define ML99_PRIV_DIV_144_4 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_144_6 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_144_8 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_144_9 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_144_12 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_144_16 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_144_18 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_144_24 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_144_36 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_144_48 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_144_72 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_145_5 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_145_29 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_146_2 ~, (ML99_JUST(73)) #define ML99_PRIV_DIV_146_73 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_147_3 ~, (ML99_JUST(49)) #define ML99_PRIV_DIV_147_7 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_147_21 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_147_49 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_148_2 ~, (ML99_JUST(74)) #define ML99_PRIV_DIV_148_4 ~, (ML99_JUST(37)) #define ML99_PRIV_DIV_148_37 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_148_74 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_150_2 ~, (ML99_JUST(75)) #define ML99_PRIV_DIV_150_3 ~, (ML99_JUST(50)) #define ML99_PRIV_DIV_150_5 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_150_6 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_150_10 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_150_15 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_150_25 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_150_30 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_150_50 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_150_75 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_152_2 ~, (ML99_JUST(76)) #define ML99_PRIV_DIV_152_4 ~, (ML99_JUST(38)) #define ML99_PRIV_DIV_152_8 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_152_19 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_152_38 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_152_76 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_153_3 ~, (ML99_JUST(51)) #define ML99_PRIV_DIV_153_9 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_153_17 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_153_51 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_154_2 ~, (ML99_JUST(77)) #define ML99_PRIV_DIV_154_7 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_154_11 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_154_14 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_154_22 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_154_77 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_155_5 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_155_31 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_156_2 ~, (ML99_JUST(78)) #define ML99_PRIV_DIV_156_3 ~, (ML99_JUST(52)) #define ML99_PRIV_DIV_156_4 ~, (ML99_JUST(39)) #define ML99_PRIV_DIV_156_6 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_156_12 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_156_13 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_156_26 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_156_39 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_156_52 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_156_78 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_158_2 ~, (ML99_JUST(79)) #define ML99_PRIV_DIV_158_79 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_159_3 ~, (ML99_JUST(53)) #define ML99_PRIV_DIV_159_53 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_160_2 ~, (ML99_JUST(80)) #define ML99_PRIV_DIV_160_4 ~, (ML99_JUST(40)) #define ML99_PRIV_DIV_160_5 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_160_8 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_160_10 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_160_16 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_160_20 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_160_32 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_160_40 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_160_80 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_161_7 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_161_23 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_162_2 ~, (ML99_JUST(81)) #define ML99_PRIV_DIV_162_3 ~, (ML99_JUST(54)) #define ML99_PRIV_DIV_162_6 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_162_9 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_162_18 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_162_27 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_162_54 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_162_81 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_164_2 ~, (ML99_JUST(82)) #define ML99_PRIV_DIV_164_4 ~, (ML99_JUST(41)) #define ML99_PRIV_DIV_164_41 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_164_82 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_165_3 ~, (ML99_JUST(55)) #define ML99_PRIV_DIV_165_5 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_165_11 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_165_15 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_165_33 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_165_55 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_166_2 ~, (ML99_JUST(83)) #define ML99_PRIV_DIV_166_83 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_168_2 ~, (ML99_JUST(84)) #define ML99_PRIV_DIV_168_3 ~, (ML99_JUST(56)) #define ML99_PRIV_DIV_168_4 ~, (ML99_JUST(42)) #define ML99_PRIV_DIV_168_6 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_168_7 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_168_8 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_168_12 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_168_14 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_168_21 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_168_24 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_168_28 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_168_42 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_168_56 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_168_84 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_169_13 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_170_2 ~, (ML99_JUST(85)) #define ML99_PRIV_DIV_170_5 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_170_10 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_170_17 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_170_34 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_170_85 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_171_3 ~, (ML99_JUST(57)) #define ML99_PRIV_DIV_171_9 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_171_19 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_171_57 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_172_2 ~, (ML99_JUST(86)) #define ML99_PRIV_DIV_172_4 ~, (ML99_JUST(43)) #define ML99_PRIV_DIV_172_43 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_172_86 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_174_2 ~, (ML99_JUST(87)) #define ML99_PRIV_DIV_174_3 ~, (ML99_JUST(58)) #define ML99_PRIV_DIV_174_6 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_174_29 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_174_58 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_174_87 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_175_5 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_175_7 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_175_25 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_175_35 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_176_2 ~, (ML99_JUST(88)) #define ML99_PRIV_DIV_176_4 ~, (ML99_JUST(44)) #define ML99_PRIV_DIV_176_8 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_176_11 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_176_16 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_176_22 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_176_44 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_176_88 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_177_3 ~, (ML99_JUST(59)) #define ML99_PRIV_DIV_177_59 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_178_2 ~, (ML99_JUST(89)) #define ML99_PRIV_DIV_178_89 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_180_2 ~, (ML99_JUST(90)) #define ML99_PRIV_DIV_180_3 ~, (ML99_JUST(60)) #define ML99_PRIV_DIV_180_4 ~, (ML99_JUST(45)) #define ML99_PRIV_DIV_180_5 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_180_6 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_180_9 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_180_10 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_180_12 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_180_15 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_180_18 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_180_20 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_180_30 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_180_36 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_180_45 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_180_60 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_180_90 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_182_2 ~, (ML99_JUST(91)) #define ML99_PRIV_DIV_182_7 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_182_13 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_182_14 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_182_26 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_182_91 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_183_3 ~, (ML99_JUST(61)) #define ML99_PRIV_DIV_183_61 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_184_2 ~, (ML99_JUST(92)) #define ML99_PRIV_DIV_184_4 ~, (ML99_JUST(46)) #define ML99_PRIV_DIV_184_8 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_184_23 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_184_46 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_184_92 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_185_5 ~, (ML99_JUST(37)) #define ML99_PRIV_DIV_185_37 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_186_2 ~, (ML99_JUST(93)) #define ML99_PRIV_DIV_186_3 ~, (ML99_JUST(62)) #define ML99_PRIV_DIV_186_6 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_186_31 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_186_62 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_186_93 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_187_11 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_187_17 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_188_2 ~, (ML99_JUST(94)) #define ML99_PRIV_DIV_188_4 ~, (ML99_JUST(47)) #define ML99_PRIV_DIV_188_47 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_188_94 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_189_3 ~, (ML99_JUST(63)) #define ML99_PRIV_DIV_189_7 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_189_9 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_189_21 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_189_27 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_189_63 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_190_2 ~, (ML99_JUST(95)) #define ML99_PRIV_DIV_190_5 ~, (ML99_JUST(38)) #define ML99_PRIV_DIV_190_10 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_190_19 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_190_38 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_190_95 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_192_2 ~, (ML99_JUST(96)) #define ML99_PRIV_DIV_192_3 ~, (ML99_JUST(64)) #define ML99_PRIV_DIV_192_4 ~, (ML99_JUST(48)) #define ML99_PRIV_DIV_192_6 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_192_8 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_192_12 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_192_16 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_192_24 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_192_32 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_192_48 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_192_64 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_192_96 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_194_2 ~, (ML99_JUST(97)) #define ML99_PRIV_DIV_194_97 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_195_3 ~, (ML99_JUST(65)) #define ML99_PRIV_DIV_195_5 ~, (ML99_JUST(39)) #define ML99_PRIV_DIV_195_13 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_195_15 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_195_39 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_195_65 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_196_2 ~, (ML99_JUST(98)) #define ML99_PRIV_DIV_196_4 ~, (ML99_JUST(49)) #define ML99_PRIV_DIV_196_7 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_196_14 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_196_28 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_196_49 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_196_98 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_198_2 ~, (ML99_JUST(99)) #define ML99_PRIV_DIV_198_3 ~, (ML99_JUST(66)) #define ML99_PRIV_DIV_198_6 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_198_9 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_198_11 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_198_18 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_198_22 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_198_33 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_198_66 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_198_99 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_200_2 ~, (ML99_JUST(100)) #define ML99_PRIV_DIV_200_4 ~, (ML99_JUST(50)) #define ML99_PRIV_DIV_200_5 ~, (ML99_JUST(40)) #define ML99_PRIV_DIV_200_8 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_200_10 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_200_20 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_200_25 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_200_40 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_200_50 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_200_100 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_201_3 ~, (ML99_JUST(67)) #define ML99_PRIV_DIV_201_67 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_202_2 ~, (ML99_JUST(101)) #define ML99_PRIV_DIV_202_101 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_203_7 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_203_29 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_204_2 ~, (ML99_JUST(102)) #define ML99_PRIV_DIV_204_3 ~, (ML99_JUST(68)) #define ML99_PRIV_DIV_204_4 ~, (ML99_JUST(51)) #define ML99_PRIV_DIV_204_6 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_204_12 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_204_17 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_204_34 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_204_51 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_204_68 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_204_102 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_205_5 ~, (ML99_JUST(41)) #define ML99_PRIV_DIV_205_41 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_206_2 ~, (ML99_JUST(103)) #define ML99_PRIV_DIV_206_103 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_207_3 ~, (ML99_JUST(69)) #define ML99_PRIV_DIV_207_9 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_207_23 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_207_69 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_208_2 ~, (ML99_JUST(104)) #define ML99_PRIV_DIV_208_4 ~, (ML99_JUST(52)) #define ML99_PRIV_DIV_208_8 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_208_13 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_208_16 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_208_26 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_208_52 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_208_104 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_209_11 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_209_19 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_210_2 ~, (ML99_JUST(105)) #define ML99_PRIV_DIV_210_3 ~, (ML99_JUST(70)) #define ML99_PRIV_DIV_210_5 ~, (ML99_JUST(42)) #define ML99_PRIV_DIV_210_6 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_210_7 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_210_10 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_210_14 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_210_15 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_210_21 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_210_30 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_210_35 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_210_42 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_210_70 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_210_105 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_212_2 ~, (ML99_JUST(106)) #define ML99_PRIV_DIV_212_4 ~, (ML99_JUST(53)) #define ML99_PRIV_DIV_212_53 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_212_106 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_213_3 ~, (ML99_JUST(71)) #define ML99_PRIV_DIV_213_71 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_214_2 ~, (ML99_JUST(107)) #define ML99_PRIV_DIV_214_107 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_215_5 ~, (ML99_JUST(43)) #define ML99_PRIV_DIV_215_43 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_216_2 ~, (ML99_JUST(108)) #define ML99_PRIV_DIV_216_3 ~, (ML99_JUST(72)) #define ML99_PRIV_DIV_216_4 ~, (ML99_JUST(54)) #define ML99_PRIV_DIV_216_6 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_216_8 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_216_9 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_216_12 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_216_18 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_216_24 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_216_27 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_216_36 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_216_54 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_216_72 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_216_108 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_217_7 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_217_31 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_218_2 ~, (ML99_JUST(109)) #define ML99_PRIV_DIV_218_109 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_219_3 ~, (ML99_JUST(73)) #define ML99_PRIV_DIV_219_73 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_220_2 ~, (ML99_JUST(110)) #define ML99_PRIV_DIV_220_4 ~, (ML99_JUST(55)) #define ML99_PRIV_DIV_220_5 ~, (ML99_JUST(44)) #define ML99_PRIV_DIV_220_10 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_220_11 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_220_20 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_220_22 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_220_44 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_220_55 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_220_110 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_221_13 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_221_17 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_222_2 ~, (ML99_JUST(111)) #define ML99_PRIV_DIV_222_3 ~, (ML99_JUST(74)) #define ML99_PRIV_DIV_222_6 ~, (ML99_JUST(37)) #define ML99_PRIV_DIV_222_37 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_222_74 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_222_111 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_224_2 ~, (ML99_JUST(112)) #define ML99_PRIV_DIV_224_4 ~, (ML99_JUST(56)) #define ML99_PRIV_DIV_224_7 ~, (ML99_JUST(32)) #define ML99_PRIV_DIV_224_8 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_224_14 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_224_16 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_224_28 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_224_32 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_224_56 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_224_112 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_225_3 ~, (ML99_JUST(75)) #define ML99_PRIV_DIV_225_5 ~, (ML99_JUST(45)) #define ML99_PRIV_DIV_225_9 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_225_15 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_225_25 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_225_45 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_225_75 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_226_2 ~, (ML99_JUST(113)) #define ML99_PRIV_DIV_226_113 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_228_2 ~, (ML99_JUST(114)) #define ML99_PRIV_DIV_228_3 ~, (ML99_JUST(76)) #define ML99_PRIV_DIV_228_4 ~, (ML99_JUST(57)) #define ML99_PRIV_DIV_228_6 ~, (ML99_JUST(38)) #define ML99_PRIV_DIV_228_12 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_228_19 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_228_38 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_228_57 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_228_76 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_228_114 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_230_2 ~, (ML99_JUST(115)) #define ML99_PRIV_DIV_230_5 ~, (ML99_JUST(46)) #define ML99_PRIV_DIV_230_10 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_230_23 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_230_46 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_230_115 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_231_3 ~, (ML99_JUST(77)) #define ML99_PRIV_DIV_231_7 ~, (ML99_JUST(33)) #define ML99_PRIV_DIV_231_11 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_231_21 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_231_33 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_231_77 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_232_2 ~, (ML99_JUST(116)) #define ML99_PRIV_DIV_232_4 ~, (ML99_JUST(58)) #define ML99_PRIV_DIV_232_8 ~, (ML99_JUST(29)) #define ML99_PRIV_DIV_232_29 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_232_58 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_232_116 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_234_2 ~, (ML99_JUST(117)) #define ML99_PRIV_DIV_234_3 ~, (ML99_JUST(78)) #define ML99_PRIV_DIV_234_6 ~, (ML99_JUST(39)) #define ML99_PRIV_DIV_234_9 ~, (ML99_JUST(26)) #define ML99_PRIV_DIV_234_13 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_234_18 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_234_26 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_234_39 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_234_78 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_234_117 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_235_5 ~, (ML99_JUST(47)) #define ML99_PRIV_DIV_235_47 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_236_2 ~, (ML99_JUST(118)) #define ML99_PRIV_DIV_236_4 ~, (ML99_JUST(59)) #define ML99_PRIV_DIV_236_59 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_236_118 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_237_3 ~, (ML99_JUST(79)) #define ML99_PRIV_DIV_237_79 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_238_2 ~, (ML99_JUST(119)) #define ML99_PRIV_DIV_238_7 ~, (ML99_JUST(34)) #define ML99_PRIV_DIV_238_14 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_238_17 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_238_34 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_238_119 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_240_2 ~, (ML99_JUST(120)) #define ML99_PRIV_DIV_240_3 ~, (ML99_JUST(80)) #define ML99_PRIV_DIV_240_4 ~, (ML99_JUST(60)) #define ML99_PRIV_DIV_240_5 ~, (ML99_JUST(48)) #define ML99_PRIV_DIV_240_6 ~, (ML99_JUST(40)) #define ML99_PRIV_DIV_240_8 ~, (ML99_JUST(30)) #define ML99_PRIV_DIV_240_10 ~, (ML99_JUST(24)) #define ML99_PRIV_DIV_240_12 ~, (ML99_JUST(20)) #define ML99_PRIV_DIV_240_15 ~, (ML99_JUST(16)) #define ML99_PRIV_DIV_240_16 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_240_20 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_240_24 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_240_30 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_240_40 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_240_48 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_240_60 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_240_80 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_240_120 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_242_2 ~, (ML99_JUST(121)) #define ML99_PRIV_DIV_242_11 ~, (ML99_JUST(22)) #define ML99_PRIV_DIV_242_22 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_242_121 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_243_3 ~, (ML99_JUST(81)) #define ML99_PRIV_DIV_243_9 ~, (ML99_JUST(27)) #define ML99_PRIV_DIV_243_27 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_243_81 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_244_2 ~, (ML99_JUST(122)) #define ML99_PRIV_DIV_244_4 ~, (ML99_JUST(61)) #define ML99_PRIV_DIV_244_61 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_244_122 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_245_5 ~, (ML99_JUST(49)) #define ML99_PRIV_DIV_245_7 ~, (ML99_JUST(35)) #define ML99_PRIV_DIV_245_35 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_245_49 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_246_2 ~, (ML99_JUST(123)) #define ML99_PRIV_DIV_246_3 ~, (ML99_JUST(82)) #define ML99_PRIV_DIV_246_6 ~, (ML99_JUST(41)) #define ML99_PRIV_DIV_246_41 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_246_82 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_246_123 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_247_13 ~, (ML99_JUST(19)) #define ML99_PRIV_DIV_247_19 ~, (ML99_JUST(13)) #define ML99_PRIV_DIV_248_2 ~, (ML99_JUST(124)) #define ML99_PRIV_DIV_248_4 ~, (ML99_JUST(62)) #define ML99_PRIV_DIV_248_8 ~, (ML99_JUST(31)) #define ML99_PRIV_DIV_248_31 ~, (ML99_JUST(8)) #define ML99_PRIV_DIV_248_62 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_248_124 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_249_3 ~, (ML99_JUST(83)) #define ML99_PRIV_DIV_249_83 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_250_2 ~, (ML99_JUST(125)) #define ML99_PRIV_DIV_250_5 ~, (ML99_JUST(50)) #define ML99_PRIV_DIV_250_10 ~, (ML99_JUST(25)) #define ML99_PRIV_DIV_250_25 ~, (ML99_JUST(10)) #define ML99_PRIV_DIV_250_50 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_250_125 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_252_2 ~, (ML99_JUST(126)) #define ML99_PRIV_DIV_252_3 ~, (ML99_JUST(84)) #define ML99_PRIV_DIV_252_4 ~, (ML99_JUST(63)) #define ML99_PRIV_DIV_252_6 ~, (ML99_JUST(42)) #define ML99_PRIV_DIV_252_7 ~, (ML99_JUST(36)) #define ML99_PRIV_DIV_252_9 ~, (ML99_JUST(28)) #define ML99_PRIV_DIV_252_12 ~, (ML99_JUST(21)) #define ML99_PRIV_DIV_252_14 ~, (ML99_JUST(18)) #define ML99_PRIV_DIV_252_18 ~, (ML99_JUST(14)) #define ML99_PRIV_DIV_252_21 ~, (ML99_JUST(12)) #define ML99_PRIV_DIV_252_28 ~, (ML99_JUST(9)) #define ML99_PRIV_DIV_252_36 ~, (ML99_JUST(7)) #define ML99_PRIV_DIV_252_42 ~, (ML99_JUST(6)) #define ML99_PRIV_DIV_252_63 ~, (ML99_JUST(4)) #define ML99_PRIV_DIV_252_84 ~, (ML99_JUST(3)) #define ML99_PRIV_DIV_252_126 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_253_11 ~, (ML99_JUST(23)) #define ML99_PRIV_DIV_253_23 ~, (ML99_JUST(11)) #define ML99_PRIV_DIV_254_2 ~, (ML99_JUST(127)) #define ML99_PRIV_DIV_254_127 ~, (ML99_JUST(2)) #define ML99_PRIV_DIV_255_3 ~, (ML99_JUST(85)) #define ML99_PRIV_DIV_255_5 ~, (ML99_JUST(51)) #define ML99_PRIV_DIV_255_15 ~, (ML99_JUST(17)) #define ML99_PRIV_DIV_255_17 ~, (ML99_JUST(15)) #define ML99_PRIV_DIV_255_51 ~, (ML99_JUST(5)) #define ML99_PRIV_DIV_255_85 ~, (ML99_JUST(3)) #endif // ML99_NAT_DIV_H hkl-5.1.7/third-party/metalang99/nat/eq.h0000664000175000017500000002240014677222567017065 0ustar00piccapicca#ifndef ML99_NAT_EQ_H #define ML99_NAT_EQ_H #include #define ML99_PRIV_NAT_EQ(x, y) ML99_PRIV_NAT_EQ_AUX(x, y) #define ML99_PRIV_NAT_EQ_AUX(x, y) ML99_PRIV_IS_TUPLE_FAST(ML99_PRIV_NAT_EQ_##x##_##y) #define ML99_PRIV_NAT_EQ_0_0 () #define ML99_PRIV_NAT_EQ_1_1 () #define ML99_PRIV_NAT_EQ_2_2 () #define ML99_PRIV_NAT_EQ_3_3 () #define ML99_PRIV_NAT_EQ_4_4 () #define ML99_PRIV_NAT_EQ_5_5 () #define ML99_PRIV_NAT_EQ_6_6 () #define ML99_PRIV_NAT_EQ_7_7 () #define ML99_PRIV_NAT_EQ_8_8 () #define ML99_PRIV_NAT_EQ_9_9 () #define ML99_PRIV_NAT_EQ_10_10 () #define ML99_PRIV_NAT_EQ_11_11 () #define ML99_PRIV_NAT_EQ_12_12 () #define ML99_PRIV_NAT_EQ_13_13 () #define ML99_PRIV_NAT_EQ_14_14 () #define ML99_PRIV_NAT_EQ_15_15 () #define ML99_PRIV_NAT_EQ_16_16 () #define ML99_PRIV_NAT_EQ_17_17 () #define ML99_PRIV_NAT_EQ_18_18 () #define ML99_PRIV_NAT_EQ_19_19 () #define ML99_PRIV_NAT_EQ_20_20 () #define ML99_PRIV_NAT_EQ_21_21 () #define ML99_PRIV_NAT_EQ_22_22 () #define ML99_PRIV_NAT_EQ_23_23 () #define ML99_PRIV_NAT_EQ_24_24 () #define ML99_PRIV_NAT_EQ_25_25 () #define ML99_PRIV_NAT_EQ_26_26 () #define ML99_PRIV_NAT_EQ_27_27 () #define ML99_PRIV_NAT_EQ_28_28 () #define ML99_PRIV_NAT_EQ_29_29 () #define ML99_PRIV_NAT_EQ_30_30 () #define ML99_PRIV_NAT_EQ_31_31 () #define ML99_PRIV_NAT_EQ_32_32 () #define ML99_PRIV_NAT_EQ_33_33 () #define ML99_PRIV_NAT_EQ_34_34 () #define ML99_PRIV_NAT_EQ_35_35 () #define ML99_PRIV_NAT_EQ_36_36 () #define ML99_PRIV_NAT_EQ_37_37 () #define ML99_PRIV_NAT_EQ_38_38 () #define ML99_PRIV_NAT_EQ_39_39 () #define ML99_PRIV_NAT_EQ_40_40 () #define ML99_PRIV_NAT_EQ_41_41 () #define ML99_PRIV_NAT_EQ_42_42 () #define ML99_PRIV_NAT_EQ_43_43 () #define ML99_PRIV_NAT_EQ_44_44 () #define ML99_PRIV_NAT_EQ_45_45 () #define ML99_PRIV_NAT_EQ_46_46 () #define ML99_PRIV_NAT_EQ_47_47 () #define ML99_PRIV_NAT_EQ_48_48 () #define ML99_PRIV_NAT_EQ_49_49 () #define ML99_PRIV_NAT_EQ_50_50 () #define ML99_PRIV_NAT_EQ_51_51 () #define ML99_PRIV_NAT_EQ_52_52 () #define ML99_PRIV_NAT_EQ_53_53 () #define ML99_PRIV_NAT_EQ_54_54 () #define ML99_PRIV_NAT_EQ_55_55 () #define ML99_PRIV_NAT_EQ_56_56 () #define ML99_PRIV_NAT_EQ_57_57 () #define ML99_PRIV_NAT_EQ_58_58 () #define ML99_PRIV_NAT_EQ_59_59 () #define ML99_PRIV_NAT_EQ_60_60 () #define ML99_PRIV_NAT_EQ_61_61 () #define ML99_PRIV_NAT_EQ_62_62 () #define ML99_PRIV_NAT_EQ_63_63 () #define ML99_PRIV_NAT_EQ_64_64 () #define ML99_PRIV_NAT_EQ_65_65 () #define ML99_PRIV_NAT_EQ_66_66 () #define ML99_PRIV_NAT_EQ_67_67 () #define ML99_PRIV_NAT_EQ_68_68 () #define ML99_PRIV_NAT_EQ_69_69 () #define ML99_PRIV_NAT_EQ_70_70 () #define ML99_PRIV_NAT_EQ_71_71 () #define ML99_PRIV_NAT_EQ_72_72 () #define ML99_PRIV_NAT_EQ_73_73 () #define ML99_PRIV_NAT_EQ_74_74 () #define ML99_PRIV_NAT_EQ_75_75 () #define ML99_PRIV_NAT_EQ_76_76 () #define ML99_PRIV_NAT_EQ_77_77 () #define ML99_PRIV_NAT_EQ_78_78 () #define ML99_PRIV_NAT_EQ_79_79 () #define ML99_PRIV_NAT_EQ_80_80 () #define ML99_PRIV_NAT_EQ_81_81 () #define ML99_PRIV_NAT_EQ_82_82 () #define ML99_PRIV_NAT_EQ_83_83 () #define ML99_PRIV_NAT_EQ_84_84 () #define ML99_PRIV_NAT_EQ_85_85 () #define ML99_PRIV_NAT_EQ_86_86 () #define ML99_PRIV_NAT_EQ_87_87 () #define ML99_PRIV_NAT_EQ_88_88 () #define ML99_PRIV_NAT_EQ_89_89 () #define ML99_PRIV_NAT_EQ_90_90 () #define ML99_PRIV_NAT_EQ_91_91 () #define ML99_PRIV_NAT_EQ_92_92 () #define ML99_PRIV_NAT_EQ_93_93 () #define ML99_PRIV_NAT_EQ_94_94 () #define ML99_PRIV_NAT_EQ_95_95 () #define ML99_PRIV_NAT_EQ_96_96 () #define ML99_PRIV_NAT_EQ_97_97 () #define ML99_PRIV_NAT_EQ_98_98 () #define ML99_PRIV_NAT_EQ_99_99 () #define ML99_PRIV_NAT_EQ_100_100 () #define ML99_PRIV_NAT_EQ_101_101 () #define ML99_PRIV_NAT_EQ_102_102 () #define ML99_PRIV_NAT_EQ_103_103 () #define ML99_PRIV_NAT_EQ_104_104 () #define ML99_PRIV_NAT_EQ_105_105 () #define ML99_PRIV_NAT_EQ_106_106 () #define ML99_PRIV_NAT_EQ_107_107 () #define ML99_PRIV_NAT_EQ_108_108 () #define ML99_PRIV_NAT_EQ_109_109 () #define ML99_PRIV_NAT_EQ_110_110 () #define ML99_PRIV_NAT_EQ_111_111 () #define ML99_PRIV_NAT_EQ_112_112 () #define ML99_PRIV_NAT_EQ_113_113 () #define ML99_PRIV_NAT_EQ_114_114 () #define ML99_PRIV_NAT_EQ_115_115 () #define ML99_PRIV_NAT_EQ_116_116 () #define ML99_PRIV_NAT_EQ_117_117 () #define ML99_PRIV_NAT_EQ_118_118 () #define ML99_PRIV_NAT_EQ_119_119 () #define ML99_PRIV_NAT_EQ_120_120 () #define ML99_PRIV_NAT_EQ_121_121 () #define ML99_PRIV_NAT_EQ_122_122 () #define ML99_PRIV_NAT_EQ_123_123 () #define ML99_PRIV_NAT_EQ_124_124 () #define ML99_PRIV_NAT_EQ_125_125 () #define ML99_PRIV_NAT_EQ_126_126 () #define ML99_PRIV_NAT_EQ_127_127 () #define ML99_PRIV_NAT_EQ_128_128 () #define ML99_PRIV_NAT_EQ_129_129 () #define ML99_PRIV_NAT_EQ_130_130 () #define ML99_PRIV_NAT_EQ_131_131 () #define ML99_PRIV_NAT_EQ_132_132 () #define ML99_PRIV_NAT_EQ_133_133 () #define ML99_PRIV_NAT_EQ_134_134 () #define ML99_PRIV_NAT_EQ_135_135 () #define ML99_PRIV_NAT_EQ_136_136 () #define ML99_PRIV_NAT_EQ_137_137 () #define ML99_PRIV_NAT_EQ_138_138 () #define ML99_PRIV_NAT_EQ_139_139 () #define ML99_PRIV_NAT_EQ_140_140 () #define ML99_PRIV_NAT_EQ_141_141 () #define ML99_PRIV_NAT_EQ_142_142 () #define ML99_PRIV_NAT_EQ_143_143 () #define ML99_PRIV_NAT_EQ_144_144 () #define ML99_PRIV_NAT_EQ_145_145 () #define ML99_PRIV_NAT_EQ_146_146 () #define ML99_PRIV_NAT_EQ_147_147 () #define ML99_PRIV_NAT_EQ_148_148 () #define ML99_PRIV_NAT_EQ_149_149 () #define ML99_PRIV_NAT_EQ_150_150 () #define ML99_PRIV_NAT_EQ_151_151 () #define ML99_PRIV_NAT_EQ_152_152 () #define ML99_PRIV_NAT_EQ_153_153 () #define ML99_PRIV_NAT_EQ_154_154 () #define ML99_PRIV_NAT_EQ_155_155 () #define ML99_PRIV_NAT_EQ_156_156 () #define ML99_PRIV_NAT_EQ_157_157 () #define ML99_PRIV_NAT_EQ_158_158 () #define ML99_PRIV_NAT_EQ_159_159 () #define ML99_PRIV_NAT_EQ_160_160 () #define ML99_PRIV_NAT_EQ_161_161 () #define ML99_PRIV_NAT_EQ_162_162 () #define ML99_PRIV_NAT_EQ_163_163 () #define ML99_PRIV_NAT_EQ_164_164 () #define ML99_PRIV_NAT_EQ_165_165 () #define ML99_PRIV_NAT_EQ_166_166 () #define ML99_PRIV_NAT_EQ_167_167 () #define ML99_PRIV_NAT_EQ_168_168 () #define ML99_PRIV_NAT_EQ_169_169 () #define ML99_PRIV_NAT_EQ_170_170 () #define ML99_PRIV_NAT_EQ_171_171 () #define ML99_PRIV_NAT_EQ_172_172 () #define ML99_PRIV_NAT_EQ_173_173 () #define ML99_PRIV_NAT_EQ_174_174 () #define ML99_PRIV_NAT_EQ_175_175 () #define ML99_PRIV_NAT_EQ_176_176 () #define ML99_PRIV_NAT_EQ_177_177 () #define ML99_PRIV_NAT_EQ_178_178 () #define ML99_PRIV_NAT_EQ_179_179 () #define ML99_PRIV_NAT_EQ_180_180 () #define ML99_PRIV_NAT_EQ_181_181 () #define ML99_PRIV_NAT_EQ_182_182 () #define ML99_PRIV_NAT_EQ_183_183 () #define ML99_PRIV_NAT_EQ_184_184 () #define ML99_PRIV_NAT_EQ_185_185 () #define ML99_PRIV_NAT_EQ_186_186 () #define ML99_PRIV_NAT_EQ_187_187 () #define ML99_PRIV_NAT_EQ_188_188 () #define ML99_PRIV_NAT_EQ_189_189 () #define ML99_PRIV_NAT_EQ_190_190 () #define ML99_PRIV_NAT_EQ_191_191 () #define ML99_PRIV_NAT_EQ_192_192 () #define ML99_PRIV_NAT_EQ_193_193 () #define ML99_PRIV_NAT_EQ_194_194 () #define ML99_PRIV_NAT_EQ_195_195 () #define ML99_PRIV_NAT_EQ_196_196 () #define ML99_PRIV_NAT_EQ_197_197 () #define ML99_PRIV_NAT_EQ_198_198 () #define ML99_PRIV_NAT_EQ_199_199 () #define ML99_PRIV_NAT_EQ_200_200 () #define ML99_PRIV_NAT_EQ_201_201 () #define ML99_PRIV_NAT_EQ_202_202 () #define ML99_PRIV_NAT_EQ_203_203 () #define ML99_PRIV_NAT_EQ_204_204 () #define ML99_PRIV_NAT_EQ_205_205 () #define ML99_PRIV_NAT_EQ_206_206 () #define ML99_PRIV_NAT_EQ_207_207 () #define ML99_PRIV_NAT_EQ_208_208 () #define ML99_PRIV_NAT_EQ_209_209 () #define ML99_PRIV_NAT_EQ_210_210 () #define ML99_PRIV_NAT_EQ_211_211 () #define ML99_PRIV_NAT_EQ_212_212 () #define ML99_PRIV_NAT_EQ_213_213 () #define ML99_PRIV_NAT_EQ_214_214 () #define ML99_PRIV_NAT_EQ_215_215 () #define ML99_PRIV_NAT_EQ_216_216 () #define ML99_PRIV_NAT_EQ_217_217 () #define ML99_PRIV_NAT_EQ_218_218 () #define ML99_PRIV_NAT_EQ_219_219 () #define ML99_PRIV_NAT_EQ_220_220 () #define ML99_PRIV_NAT_EQ_221_221 () #define ML99_PRIV_NAT_EQ_222_222 () #define ML99_PRIV_NAT_EQ_223_223 () #define ML99_PRIV_NAT_EQ_224_224 () #define ML99_PRIV_NAT_EQ_225_225 () #define ML99_PRIV_NAT_EQ_226_226 () #define ML99_PRIV_NAT_EQ_227_227 () #define ML99_PRIV_NAT_EQ_228_228 () #define ML99_PRIV_NAT_EQ_229_229 () #define ML99_PRIV_NAT_EQ_230_230 () #define ML99_PRIV_NAT_EQ_231_231 () #define ML99_PRIV_NAT_EQ_232_232 () #define ML99_PRIV_NAT_EQ_233_233 () #define ML99_PRIV_NAT_EQ_234_234 () #define ML99_PRIV_NAT_EQ_235_235 () #define ML99_PRIV_NAT_EQ_236_236 () #define ML99_PRIV_NAT_EQ_237_237 () #define ML99_PRIV_NAT_EQ_238_238 () #define ML99_PRIV_NAT_EQ_239_239 () #define ML99_PRIV_NAT_EQ_240_240 () #define ML99_PRIV_NAT_EQ_241_241 () #define ML99_PRIV_NAT_EQ_242_242 () #define ML99_PRIV_NAT_EQ_243_243 () #define ML99_PRIV_NAT_EQ_244_244 () #define ML99_PRIV_NAT_EQ_245_245 () #define ML99_PRIV_NAT_EQ_246_246 () #define ML99_PRIV_NAT_EQ_247_247 () #define ML99_PRIV_NAT_EQ_248_248 () #define ML99_PRIV_NAT_EQ_249_249 () #define ML99_PRIV_NAT_EQ_250_250 () #define ML99_PRIV_NAT_EQ_251_251 () #define ML99_PRIV_NAT_EQ_252_252 () #define ML99_PRIV_NAT_EQ_253_253 () #define ML99_PRIV_NAT_EQ_254_254 () #define ML99_PRIV_NAT_EQ_255_255 () #endif // ML99_NAT_EQ_H hkl-5.1.7/third-party/metalang99/aux.h0000664000175000017500000003241514677222567016502 0ustar00piccapicca/** * @file * Auxiliary macros. */ #ifndef METALANG99_AUX_H #define METALANG99_AUX_H #include #include // Desugaring { /** * Concatenates @p x with @p y and evaluates the result. * * # Examples * * @code * #include * * #define ABC123 v(Billie Jean) * * // Billie Jean * M_catEval(v(ABC), v(123)) * * // ERROR: 123ABC is not a valid Metalang99 term. * M_catEval(v(123), v(ABC)) * @endcode */ #define METALANG99_catEval(x, y) METALANG99_call(METALANG99_catEval, x y) /** * Concatenates @p x with @p y, leaving the result unevaluated. * * # Examples * * @code * #include * * #define ABC123 Billie Jean * * // Billie Jean * M_cat(v(ABC), v(123)) * * // 123ABC * M_cat(v(123), v(ABC)) * @endcode */ #define METALANG99_cat(x, y) METALANG99_call(METALANG99_cat, x y) /** * Stringifies provided arguments. * * # Examples * * @code * #include * * // "Billie Jean" * M_stringify(v(Billie Jean)) * @endcode */ #define METALANG99_stringify(...) METALANG99_call(METALANG99_stringify, __VA_ARGS__) /** * Evaluates to nothing. */ #define METALANG99_empty() METALANG99_call(METALANG99_empty, ) /** * Evaluates to its arguments. * * # Examples * * @code * #include * * // 1, 2, 3 * M_id(v(1, 2, 3)) * @endcode */ #define METALANG99_id(...) METALANG99_call(METALANG99_id, __VA_ARGS__) /** * Transforms a sequence of arguments into a parenthesised normal form. * * # Examples * * @code * #include * * // (v(1, 2, 3)) * M_parenthesiseEval(v(1, 2, 3)) * @endcode */ #define METALANG99_parenthesiseEval(...) METALANG99_call(METALANG99_parenthesiseEval, __VA_ARGS__) /** * Parenthesises a sequence of arguments. * * # Examples * * @code * #include * * // (1, 2, 3) * M_parenthesise(v(1, 2, 3)) * @endcode */ #define METALANG99_parenthesise(...) METALANG99_call(METALANG99_parenthesise, __VA_ARGS__) /** * Unparenthesises a sequence of arguments and evaluates the result. * * If @p x begins with an opening parenthesis, it must also end with a closing parenthesis, e.g. `() * 123` is disallowed. * * # Examples * * @code * #include * * // 1, 2, 3 * M_unparenthesiseEval(v((v(1, 2, 3)))) * @endcode */ #define METALANG99_unparenthesiseEval(x) METALANG99_call(METALANG99_unparenthesiseEval, x) /** * Unparenthesises a sequence of arguments, leaving the result unevaluated. * * If @p x begins with an opening parenthesis, it must also end with a closing parenthesis, e.g. `() * 123` is disallowed. * * # Examples * * @code * #include * * // 1, 2, 3 * M_unparenthesise(v((1, 2, 3))) * @endcode */ #define METALANG99_unparenthesise(x) METALANG99_call(METALANG99_unparenthesise, x) /** * Tests whether @p x is inside parentheses or not. * * If @p x begins with an opening parenthesis, it must also end with a closing parenthesis, e.g. `() * 123` is disallowed. * * # Examples * * @code * #include * * // 0 * M_isParenthesised(v(123)) * * // 1 * M_isParenthesised(v((123))) * @endcode */ #define METALANG99_isParenthesised(x) METALANG99_call(METALANG99_isParenthesised, x) /** * The inverse of #METALANG99_isParenthesised. * * If @p x begins with an opening parenthesis, it must also end with a closing parenthesis, e.g. `() * 123` is disallowed. * * # Examples * * @code * #include * * // 1 * M_isUnparenthesised(v(123)) * * // 0 * M_isUnparenthesised(v((123))) * @endcode */ #define METALANG99_isUnparenthesised(x) METALANG99_call(METALANG99_isUnparenthesised, x) /** * Evaluates to @p x, skipping @p a. * * # Examples * * @code * #include * * // 123 * M_const(v(123), v(5)) * @endcode */ #define METALANG99_const(x, a) METALANG99_call(METALANG99_const, x a) /** * Evaluates to @p x, skipping @p a, and @p b. * * # Examples * * @code * #include * * // 123 * M_const2(v(123), v(5), v(6)) * @endcode */ #define METALANG99_const2(x, a, b) METALANG99_call(METALANG99_const2, x a b) /** * Evaluates to @p x, skipping @p a, @p b, and @p c. * * # Examples * * @code * #include * * // 123 * M_const3(v(123), v(5), v(6), v(7)) * @endcode */ #define METALANG99_const3(x, a, b, c) METALANG99_call(METALANG99_const3, x a b c) /** * Reverses the order of arguments of the binary function @p f. * * # Examples * * @code * #include * * // ABC123 * M_appl2(M_flip(v(M_catUnevaluated)), v(123), v(ABC)) * @endcode */ #define METALANG99_flip(f) METALANG99_call(METALANG99_flip, f) /** * Puts @p x before @p right. * * # Examples * * @code * #include * * // ! 0 * M_putBefore(v(0), v(!)) * @endcode */ #define METALANG99_putBefore(right, x) METALANG99_call(METALANG99_putBefore, right x) /** * Puts @p x after @p left. * * # Examples * * @code * #include * * // ! 0 * M_putAfter(v(!), v(0)) * @endcode */ #define METALANG99_putAfter(left, x) METALANG99_call(METALANG99_putAfter, left x) /** * Puts @p x between @p left and @p right. * * # Examples * * @code * #include * * // 16 + 9 * M_putBetween(v(16), v(9), v(+)) * @endcode */ #define METALANG99_putBetween(left, right, x) METALANG99_call(METALANG99_putBetween, left right x) /** * Consumes all its arguments and expands to emptiness. * * # Examples * * @code * #include * * // M_empty() * M_consume(v(1, 2, 3)) * @endcode */ #define METALANG99_consume(...) METALANG99_call(METALANG99_consume, __VA_ARGS__) /** * Puts provided arguments into braces. * * Some code formatters behave strangely when encounter braces in macros (in different places) -- * this is why this macro exists. * * # Examples * * @code * #include * * // { int a, b, c; } * M_braced(v(int a, b, c;)) * @endcode */ #define METALANG99_braced(...) METALANG99_call(METALANG99_braced, __VA_ARGS__) /** * Concatenates @p x with @p y as-is, without expanding them. * * # Examples * * @code * #include * * // This macro will not be expanded. * #define ABC 7 * * // ABC123 * M_catPrimitive(ABC, 123) * @endcode * * @note This macro does not expand to an Metalang99 term: it is rather an ordinary preprocessor * macro. */ #define METALANG99_catPrimitive(x, y) x##y /** * Stringifies @p x as-is, without expanding it. * * # Examples * * @code * #include * * // This macro will not be expanded. * #define ABC 7 * * // "ABC" * M_stringifyPrimitive(ABC) * @endcode * * @note This macro does not expand to an Metalang99 term: it is rather an ordinary preprocessor * macro. */ #define METALANG99_stringifyPrimitive(...) #__VA_ARGS__ /** * Forces to put a semicolon after itself. * * # Examples * * @code * #include * * M_semicolon(); * @endcode * * This macro is often useful when you want a user to put a semicolon after invocation of your * macro: * * @code * #include * * #define WHEN(command, handler, ...) \ * if (incoming_command == command) { handler(__VA_ARGS__); } M_semicolon() * * WHEN(SomeCommand, handler, 1, 2, 3); * @endcode * * @note This macro does not expand to an Metalang99 term: it is rather an ordinary preprocessor * macro. * @note This macro can be used both inside and outside of function bodies, in contrast to the `do { * ... } while(0)` idiom. Technically, this macro just expands to an unused static variable * declaration. */ #define METALANG99_semicolon() \ static const char METALANG99_PRIV_CAT(metalang99_semicolon_, __LINE__) \ METALANG99_PRIV_COMPILER_ATTR_UNUSED /** * The plain version of #METALANG99_cat. */ #define METALANG99_catPlain(x, y) METALANG99_catPrimitive(x, y) /** * The plain version of #METALANG99_stringify. */ #define METALANG99_stringifyPlain(...) METALANG99_stringifyPrimitive(__VA_ARGS__) /** * The plain version of #METALANG99_empty. */ #define METALANG99_emptyPlain() /** * The plain version of #METALANG99_id. */ #define METALANG99_idPlain(...) __VA_ARGS__ /** * The plain version of #METALANG99_parenthesise. */ #define METALANG99_parenthesisePlain(...) (__VA_ARGS__) /** * The plain version of #METALANG99_unparenthesise. */ #define METALANG99_unparenthesisePlain(x) METALANG99_PRIV_UNPARENTHESISE(x) /** * The plain version of #METALANG99_isParenthesised. */ #define METALANG99_isParenthesisedPlain(x) METALANG99_PRIV_IS_PARENTHESISED(x) /** * The plain version of #METALANG99_isUnparenthesised. */ #define METALANG99_isUnparenthesisedPlain(x) METALANG99_PRIV_IS_UNPARENTHESISED(x) /** * The plain version of #METALANG99_consume. */ #define METALANG99_consumePlain(...) // } #ifndef DOXYGEN_IGNORE // Implementation { #define METALANG99_catEval_IMPL(x, y) x##y #define METALANG99_cat_IMPL(x, y) v(METALANG99_catPlain(x, y)) #define METALANG99_stringify_IMPL(...) v(METALANG99_stringifyPlain(__VA_ARGS__)) #define METALANG99_empty_IMPL() v(METALANG99_emptyPlain()) #define METALANG99_id_IMPL(...) v(METALANG99_idPlain(__VA_ARGS__)) #define METALANG99_parenthesiseEval_IMPL(...) v((v(__VA_ARGS__))) #define METALANG99_parenthesise_IMPL(...) v(METALANG99_parenthesisePlain(__VA_ARGS__)) #define METALANG99_unparenthesiseEval_IMPL(x) METALANG99_PRIV_UNPARENTHESISE(x) #define METALANG99_unparenthesise_IMPL(x) v(METALANG99_unparenthesisePlain(x)) #define METALANG99_isParenthesised_IMPL(x) v(METALANG99_isParenthesisedPlain(x)) #define METALANG99_isUnparenthesised_IMPL(x) v(METALANG99_isUnparenthesisedPlain(x)) #define METALANG99_const_IMPL(x, _a) v(x) #define METALANG99_const2_IMPL(x, _a, _b) v(x) #define METALANG99_const3_IMPL(x, _a, _b, _c) v(x) #define METALANG99_flip_IMPL(f) METALANG99_callTrivial(METALANG99_appl, METALANG99_PRIV_flip, f) #define METALANG99_PRIV_flip_IMPL(f, a, b) METALANG99_callTrivial(METALANG99_appl2, f, b, a) #define METALANG99_putBefore_IMPL(right, x) v(x right) #define METALANG99_putAfter_IMPL(left, x) v(left x) #define METALANG99_putBetween_IMPL(left, right, x) v(left x right) #define METALANG99_consume_IMPL(...) v(METALANG99_consumePlain(__VA_ARGS__)) #define METALANG99_braced_IMPL(...) v({__VA_ARGS__}) // } // Arity specifiers { #define METALANG99_catEval_ARITY 2 #define METALANG99_cat_ARITY 2 #define METALANG99_stringify_ARITY 1 #define METALANG99_empty_ARITY 1 #define METALANG99_id_ARITY 1 #define METALANG99_parenthesise_ARITY 1 #define METALANG99_unparenthesise_ARITY 1 #define METALANG99_unparenthesiseEval_ARITY 1 #define METALANG99_parenthesiseEval_ARITY 1 #define METALANG99_isUnparenthesised_ARITY 1 #define METALANG99_isParenthesised_ARITY 1 #define METALANG99_const_ARITY 2 #define METALANG99_const2_ARITY 3 #define METALANG99_const3_ARITY 4 #define METALANG99_flip_ARITY 1 #define METALANG99_putBefore_ARITY 2 #define METALANG99_putAfter_ARITY 2 #define METALANG99_putBetween_ARITY 3 #define METALANG99_consume_ARITY 1 #define METALANG99_braced_ARITY 1 #define METALANG99_PRIV_flip_ARITY 3 // } // Aliases { #ifndef METALANG99_NO_SMALL_PREFIX #define M_catEval METALANG99_catEval #define M_cat METALANG99_cat #define M_stringify METALANG99_stringify #define M_empty METALANG99_empty #define M_id METALANG99_id #define M_parenthesiseEval METALANG99_parenthesiseEval #define M_parenthesise METALANG99_parenthesise #define M_unparenthesiseEval METALANG99_unparenthesiseEval #define M_unparenthesise METALANG99_unparenthesise #define M_isParenthesised METALANG99_isParenthesised #define M_isUnparenthesised METALANG99_isUnparenthesised #define M_const METALANG99_const #define M_const2 METALANG99_const2 #define M_const3 METALANG99_const3 #define M_flip METALANG99_flip #define M_putBefore METALANG99_putBefore #define M_putAfter METALANG99_putAfter #define M_putBetween METALANG99_putBetween #define M_consume METALANG99_consume #define M_braced METALANG99_braced #define M_catPrimitive METALANG99_catPrimitive #define M_stringifyPrimitive METALANG99_stringifyPrimitive #define M_semicolon METALANG99_semicolon #define M_catPlain METALANG99_catPlain #define M_stringifyPlain METALANG99_stringifyPlain #define M_emptyPlain METALANG99_emptyPlain #define M_idPlain METALANG99_idPlain #define M_parenthesisePlain METALANG99_parenthesisePlain #define M_unparenthesisePlain METALANG99_unparenthesisePlain #define M_isParenthesisedPlain METALANG99_isParenthesisedPlain #define M_isUnparenthesisedPlain METALANG99_isUnparenthesisedPlain #define M_consumePlain METALANG99_consumePlain #endif // METALANG99_NO_SMALL_PREFIX // } #endif // DOXYGEN_IGNORE #endif // METALANG99_AUX_H hkl-5.1.7/third-party/metalang99/seq.h0000664000175000017500000001526514677222567016501 0ustar00piccapicca/** * @file * Sequences: `(x)(y)(z)`. * * A sequence is represented as `(...) (...) ...`. For example, these are sequences: * - `(~, ~, ~)` * - `(1)(2)(3)` * - `(+, -, *, /)(123)(~)` * * Sequences can represent syntax like `X(...) Y(...) Z(...)`, where `X`, `Y`, and `Z` expand to a * [tuple](tuple.html), thereby forming a sequence. A perfect example is * [Interface99](https://github.com/Hirrolot/interface99), which allows a user to define a software * interface via a number of `vfunc(...)` macro invocations: * * @code * #define Shape_IFACE \ * vfunc( int, perim, const VSelf) \ * vfunc(void, scale, VSelf, int factor) * * interface(Shape); * @endcode * * With `vfunc` being defined as follows (simplified): * * @code * #define vfunc(ret_ty, name, ...) (ret_ty, name, __VA_ARGS__) * @endcode * * @note Sequences are more time and space-efficient than lists, but export less functionality; if a * needed function is missed, invoking #ML99_listFromSeq and then manipulating with the resulting * Cons-list might be helpful. */ #ifndef ML99_SEQ_H #define ML99_SEQ_H #include #include #include #include /** * True iff @p seq contains no elements (which means an empty preprocessing lexeme). * * # Examples * * @code * #include * * // 1 * ML99_seqIsEmpty(v()) * * // 0 * ML99_seqIsEmpty(v((~)(~)(~))) * @endcode */ #define ML99_seqIsEmpty(seq) ML99_call(ML99_seqIsEmpty, seq) /** * Expands to a metafunction extracting the @p i -indexed element of @p seq. * * @p i can range from 0 to 7, inclusively. * * # Examples * * @code * #include * * // 2 * ML99_seqGet(1)(v((1)(2)(3))) * @endcode */ #define ML99_seqGet(i) ML99_PRIV_CAT(ML99_PRIV_seqGet_, i) /** * Extracts the tail of @p seq. * * @p seq must contain at least one element. If @p seq contains **only** one element, the result is * `ML99_empty()`. * * # Examples * * @code * #include * * // (2)(3) * ML99_seqTail(v((1)(2)(3))) * @endcode */ #define ML99_seqTail(seq) ML99_call(ML99_seqTail, seq) /** * Applies @p f to each element in @p seq. * * The result is `ML99_appl(f, x1) ... ML99_appl(f, xN)`. * * # Examples * * @code * #include * * #define F_IMPL(x) v(@x) * #define F_ARITY 1 * * // @x @y @z * ML99_seqForEach(v(F), v((x)(y)(z))) * @endcode */ #define ML99_seqForEach(f, seq) ML99_call(ML99_seqForEach, f, seq) /** * Applies @p f to each element in @p seq with an index. * * The result is `ML99_appl2(f, 0, x1) ... ML99_appl2(f, N - 1, xN)`. * * @code * #include * * #define F_IMPL(i, x) v(@x##i) * #define F_ARITY 2 * * // @x0 @y1 @z2 * ML99_seqForEachI(v(F), v((x)(y)(z))) * @endcode */ #define ML99_seqForEachI(f, seq) ML99_call(ML99_seqForEachI, f, seq) #define ML99_SEQ_IS_EMPTY(seq) ML99_PRIV_NOT(ML99_PRIV_CONTAINS_COMMA(ML99_PRIV_COMMA seq)) #define ML99_SEQ_GET(i) ML99_PRIV_CAT(ML99_PRIV_SEQ_GET_, i) #define ML99_SEQ_TAIL(seq) ML99_PRIV_TAIL(ML99_PRIV_COMMA seq) #ifndef DOXYGEN_IGNORE #define ML99_seqIsEmpty_IMPL(seq) v(ML99_SEQ_IS_EMPTY(seq)) #define ML99_PRIV_seqGet_0(seq) ML99_call(ML99_PRIV_seqGet_0, seq) #define ML99_PRIV_seqGet_1(seq) ML99_call(ML99_PRIV_seqGet_1, seq) #define ML99_PRIV_seqGet_2(seq) ML99_call(ML99_PRIV_seqGet_2, seq) #define ML99_PRIV_seqGet_3(seq) ML99_call(ML99_PRIV_seqGet_3, seq) #define ML99_PRIV_seqGet_4(seq) ML99_call(ML99_PRIV_seqGet_4, seq) #define ML99_PRIV_seqGet_5(seq) ML99_call(ML99_PRIV_seqGet_5, seq) #define ML99_PRIV_seqGet_6(seq) ML99_call(ML99_PRIV_seqGet_6, seq) #define ML99_PRIV_seqGet_7(seq) ML99_call(ML99_PRIV_seqGet_7, seq) #define ML99_PRIV_seqGet_0_IMPL(seq) v(ML99_SEQ_GET(0)(seq)) #define ML99_PRIV_seqGet_1_IMPL(seq) v(ML99_SEQ_GET(1)(seq)) #define ML99_PRIV_seqGet_2_IMPL(seq) v(ML99_SEQ_GET(2)(seq)) #define ML99_PRIV_seqGet_3_IMPL(seq) v(ML99_SEQ_GET(3)(seq)) #define ML99_PRIV_seqGet_4_IMPL(seq) v(ML99_SEQ_GET(4)(seq)) #define ML99_PRIV_seqGet_5_IMPL(seq) v(ML99_SEQ_GET(5)(seq)) #define ML99_PRIV_seqGet_6_IMPL(seq) v(ML99_SEQ_GET(6)(seq)) #define ML99_PRIV_seqGet_7_IMPL(seq) v(ML99_SEQ_GET(7)(seq)) #define ML99_PRIV_SEQ_GET_0(seq) ML99_PRIV_UNTUPLE(ML99_PRIV_HEAD(ML99_PRIV_SEQ_SEPARATE seq)) #define ML99_PRIV_SEQ_GET_1(seq) ML99_PRIV_SEQ_GET_0(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_2(seq) ML99_PRIV_SEQ_GET_1(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_3(seq) ML99_PRIV_SEQ_GET_2(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_4(seq) ML99_PRIV_SEQ_GET_3(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_5(seq) ML99_PRIV_SEQ_GET_4(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_6(seq) ML99_PRIV_SEQ_GET_5(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_GET_7(seq) ML99_PRIV_SEQ_GET_6(ML99_SEQ_TAIL(seq)) #define ML99_PRIV_SEQ_SEPARATE(...) (__VA_ARGS__), #define ML99_seqTail_IMPL(seq) v(ML99_SEQ_TAIL(seq)) #define ML99_seqForEach_IMPL(f, seq) \ ML99_PRIV_CAT(ML99_PRIV_seqForEach_, ML99_SEQ_IS_EMPTY(seq))(f, seq) #define ML99_PRIV_seqForEach_1(...) v(ML99_PRIV_EMPTY()) #define ML99_PRIV_seqForEach_0(f, seq) \ ML99_TERMS( \ ML99_appl_IMPL(f, ML99_SEQ_GET(0)(seq)), \ ML99_callUneval(ML99_seqForEach, f, ML99_SEQ_TAIL(seq))) #define ML99_seqForEachI_IMPL(f, seq) ML99_PRIV_seqForEachIAux_IMPL(f, 0, seq) #define ML99_PRIV_seqForEachIAux_IMPL(f, i, seq) \ ML99_PRIV_CAT(ML99_PRIV_seqForEachI_, ML99_SEQ_IS_EMPTY(seq))(f, i, seq) #define ML99_PRIV_seqForEachI_1(...) v(ML99_PRIV_EMPTY()) #define ML99_PRIV_seqForEachI_0(f, i, seq) \ ML99_TERMS( \ ML99_appl2_IMPL(f, i, ML99_SEQ_GET(0)(seq)), \ ML99_callUneval(ML99_PRIV_seqForEachIAux, f, ML99_PRIV_INC(i), ML99_SEQ_TAIL(seq))) // Arity specifiers { #define ML99_seqIsEmpty_ARITY 1 #define ML99_seqTail_ARITY 1 #define ML99_seqForEach_ARITY 2 #define ML99_seqForEachI_ARITY 2 #define ML99_PRIV_seqGet_0_ARITY 1 #define ML99_PRIV_seqGet_1_ARITY 1 #define ML99_PRIV_seqGet_2_ARITY 1 #define ML99_PRIV_seqGet_3_ARITY 1 #define ML99_PRIV_seqGet_4_ARITY 1 #define ML99_PRIV_seqGet_5_ARITY 1 #define ML99_PRIV_seqGet_6_ARITY 1 #define ML99_PRIV_seqGet_7_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_SEQ_H hkl-5.1.7/third-party/metalang99/uint.h0000664000175000017500000004264414677222567016671 0ustar00piccapicca/** * @file * Unsigned integers. * * @note Currently, unsigned integers can range only from 0 to 255, inclusively. */ #ifndef METALANG99_UINT_H #define METALANG99_UINT_H #include #include #include #include #include #include #include #include // Desugaring { /** * \f$x + 1\f$ * * # Examples * * @code * #include * * // 6 * M_inc(v(5)) * @endcode * * @note If @p x is 255, the result is 0. */ #define METALANG99_inc(x) METALANG99_call(METALANG99_inc, x) /** * \f$x - 1\f$ * * # Examples * * @code * #include * * // 4 * M_dec(v(5)) * @endcode * * @note If @p x is 0, the result is 255. */ #define METALANG99_dec(x) METALANG99_call(METALANG99_dec, x) /** * Matches @p x to the two cases: if it is zero or positive. * * # Examples * * @code * #include * * #define MATCH_Z_IMPL() v(Billie) * #define MATCH_S_IMPL(x) v(Jean ~ x) * * // Billie * M_uintMatch(v(0), v(MATCH_)) * * // Jean ~ 122 * M_uintMatch(v(123), v(MATCH_)) * @endcode * * @note This function calls @p f with #METALANG99_call, so no partial application occurs, and so * arity specifiers are not needed. */ #define METALANG99_uintMatch(x, matcher) METALANG99_call(METALANG99_uintMatch, x, matcher) /** * The same as #METALANG99_uintMatch but provides additional arguments to all branches. * * # Examples * * @code * #include * * #define MATCH_Z_IMPL(x, y, z) v(Billie ~ x y z) * #define MATCH_S_IMPL(n, x, y, z) v(Jean ~ n ~ x y z) * * // Billie ~ 1 2 3 * M_uintMatchWithArgs(v(0), v(MATCH_), v(1, 2, 3)) * * // Jean ~ 122 ~ 1 2 3 * M_uintMatchWithArgs(v(123), v(MATCH_), v(1, 2, 3)) * @endcode * * @note This function calls @p f with #METALANG99_call, so no partial application occurs, and so * arity specifiers are not needed. */ #define METALANG99_uintMatchWithArgs(x, matcher, ...) \ METALANG99_call(METALANG99_uintMatchWithArgs, x, matcher, __VA_ARGS__) /** * \f$x = y\f$ * * # Examples * * @code * #include * * // 1 * M_uintEq(v(5), v(5)) * * // 0 * M_uintEq(v(3), v(8)) * @endcode */ #define METALANG99_uintEq(x, y) METALANG99_call(METALANG99_uintEq, x, y) /** * \f$x \neq y\f$ * * # Examples * * @code * #include * * // 0 * M_uintNeq(v(5), v(5)) * * // 1 * M_uintNeq(v(3), v(8)) * @endcode */ #define METALANG99_uintNeq(x, y) METALANG99_call(METALANG99_uintNeq, x, y) /** * \f$x > y\f$ * * # Examples * * @code * #include * * // 1 * M_greater(v(8), v(3)) * * // 0 * M_greater(v(3), v(8)) * @endcode */ #define METALANG99_greater(x, y) METALANG99_call(METALANG99_greater, x, y) /** * \f$x \geq y\f$ * * # Examples * * @code * #include * * // 1 * M_greaterEq(v(8), v(8)) * * // 0 * M_greaterEq(v(3), v(8)) * @endcode */ #define METALANG99_greaterEq(x, y) METALANG99_call(METALANG99_greaterEq, x, y) /** * \f$x < y\f$ * * # Examples * * @code * #include * * // 1 * M_lesser(v(3), v(8)) * * // 0 * M_lesser(v(8), v(3)) * @endcode */ #define METALANG99_lesser(x, y) METALANG99_call(METALANG99_lesser, x, y) /** * \f$x \leq y\f$ * * # Examples * * @code * #include * * // 1 * M_lesserEq(v(8), v(8)) * * // 0 * M_lesserEq(v(8), v(3)) * @endcode */ #define METALANG99_lesserEq(x, y) METALANG99_call(METALANG99_lesserEq, x, y) /** * \f$x + y\f$ * * # Examples * * @code * #include * * // 11 * M_add(v(5), v(6)) * @endcode */ #define METALANG99_add(x, y) METALANG99_call(METALANG99_add, x, y) /** * \f$x - y\f$ * * # Examples * * @code * #include * * // 6 * M_sub(v(11), v(5)) * @endcode */ #define METALANG99_sub(x, y) METALANG99_call(METALANG99_sub, x, y) /** * \f$x * y\f$ * * # Examples * * @code * #include * * // 12 * M_mul(v(3), v(4)) * @endcode */ #define METALANG99_mul(x, y) METALANG99_call(METALANG99_mul, x, y) /** * \f$\frac{x}{y}\f$ * * # Examples * * @code * #include * * // 3 * M_div(v(12), v(4)) * @endcode * * @note A compile-time error if \f$\frac{x}{y}\f$ is not an unsigned integer. */ #define METALANG99_div(x, y) METALANG99_call(METALANG99_div, x, y) /** * Like #METALANG99_div but returns #METALANG99_nothing is @p x is not divisible by @p y, * otherwise, #METALANG99_just. * * # Examples * * @code * #include * * // M_just(3) * M_divChecked(v(12), v(4)) * * // M_nothing() * M_divChecked(v(14), v(5)) * * // M_nothing() * M_divChecked(v(1), v(0)) * @endcode */ #define METALANG99_divChecked(x, y) METALANG99_call(METALANG99_divChecked, x, y) /** * Computes the remainder of division. * * # Examples * * @code * #include * * // 2 * M_mod(v(8), v(3)) * @endcode * * @note A compile-time error if @p y is 0. */ #define METALANG99_mod(x, y) METALANG99_call(METALANG99_mod, x, y) /** * \f$x + y + z\f$ * * # Examples * * @code * #include * * // 15 * M_add3(v(1), v(6), v(8)) * @endcode */ #define METALANG99_add3(x, y, z) METALANG99_call(METALANG99_add3, x, y, z) /** * \f$x - y - z\f$ * * # Examples * * @code * #include * * // 3 * M_sub3(v(8), v(2), v(3)) * @endcode */ #define METALANG99_sub3(x, y, z) METALANG99_call(METALANG99_sub3, x, y, z) /** * \f$x * y * z\f$ * * # Examples * * @code * #include * * // 24 * M_mul3(v(2), v(3), v(4)) * @endcode */ #define METALANG99_mul3(x, y, z) METALANG99_call(METALANG99_mul3, x, y, z) /** * \f$\frac{(\frac{x}{y})}{z}\f$ * * # Examples * * @code * #include * * // 5 * M_div(v(30), v(3), v(2)) * @endcode * * @note A compile-time error if \f$\frac{(\frac{x}{y})}{z}\f$ is not an unsigned integer. */ #define METALANG99_div3(x, y, z) METALANG99_call(METALANG99_div3, x, y, z) /** * \f$min(x, y)\f$ * * # Examples * * @code * #include * * // 5 * M_min(v(5), v(7)) * @endcode */ #define METALANG99_min(x, y) METALANG99_call(METALANG99_min, x, y) /** * \f$max(x, y)\f$ * * # Examples * * @code * #include * * // 7 * M_max(v(5), v(7)) * @endcode */ #define METALANG99_max(x, y) METALANG99_call(METALANG99_max, x, y) /** * The plain version of #METALANG99_uintEq. */ #define METALANG99_uintEqPlain(x, y) METALANG99_PRIV_uintEq(x, y) /** * The plain version of #METALANG99_uintNeq. */ #define METALANG99_uintNeqPlain(x, y) METALANG99_notPlain(METALANG99_uintEqPlain(x, y)) /** * The plain version of #METALANG99_incPlain. */ #define METALANG99_incPlain(x) METALANG99_PRIV_inc(x) /** * The plain version of #METALANG99_decPlain. */ #define METALANG99_decPlain(x) METALANG99_PRIV_dec(x) // } #ifndef DOXYGEN_IGNORE // Implementation { #define METALANG99_uintMatch_IMPL(x, matcher) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(x, 0), \ METALANG99_callTrivial(matcher##Z, ), \ METALANG99_callTrivial(matcher##S, METALANG99_PRIV_dec(x))) #define METALANG99_uintMatchWithArgs_IMPL(x, matcher, ...) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(x, 0), \ METALANG99_callTrivial(matcher##Z, __VA_ARGS__), \ METALANG99_callTrivial(matcher##S, METALANG99_PRIV_dec(x), __VA_ARGS__)) #define METALANG99_uintEq_IMPL(x, y) v(METALANG99_uintEqPlain(x, y)) #define METALANG99_uintNeq_IMPL(x, y) v(METALANG99_uintNeqPlain(x, y)) #define METALANG99_inc_IMPL(x) v(METALANG99_incPlain(x)) #define METALANG99_dec_IMPL(x) v(METALANG99_decPlain(x)) #define METALANG99_greater_IMPL(x, y) METALANG99_lesser_IMPL(y, x) #define METALANG99_lesserEq_IMPL(x, y) METALANG99_greaterEq_IMPL(y, x) #define METALANG99_greaterEq_IMPL(x, y) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(x, y), \ v(METALANG99_true), \ METALANG99_greater_IMPL(x, y)) // METALANG99_lesser_IMPL { #define METALANG99_lesser_IMPL(x, y) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(y, 0), \ v(METALANG99_false), \ METALANG99_callTrivial(METALANG99_PRIV_lesserProgress, x, y)) #define METALANG99_PRIV_lesserProgress_IMPL(x, y) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(x, METALANG99_PRIV_dec(y)), \ v(METALANG99_true), \ METALANG99_callTrivial(METALANG99_lesser, x, METALANG99_PRIV_dec(y))) \ // } // METALANG99_add_IMPL { #define METALANG99_add_IMPL(x, y) \ METALANG99_callTrivial( \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(y, 0), \ METALANG99_const, \ METALANG99_PRIV_addProgress), \ x, \ y) #define METALANG99_PRIV_addProgress_IMPL(x, y) \ METALANG99_add_IMPL(METALANG99_PRIV_inc(x), METALANG99_PRIV_dec(y)) // } // METALANG99_sub_IMPL { #define METALANG99_sub_IMPL(x, y) \ METALANG99_callTrivial( \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(y, 0), \ METALANG99_const, \ METALANG99_PRIV_subProgress), \ x, \ y) #define METALANG99_PRIV_subProgress_IMPL(x, y) \ METALANG99_sub_IMPL(METALANG99_PRIV_dec(x), METALANG99_PRIV_dec(y)) // } // METALANG99_mul_IMPL { #define METALANG99_mul_IMPL(x, y) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(y, 0), \ v(0), \ METALANG99_callTrivial(METALANG99_PRIV_mulProgress, x, y)) #define METALANG99_PRIV_mulProgress_IMPL(x, y) \ METALANG99_add(v(x), METALANG99_mul_IMPL(x, METALANG99_PRIV_dec(y))) // } // METALANG99_mod_IMPL { #define METALANG99_mod_IMPL(x, y) \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(y, 0), \ METALANG99_fatal(METALANG99_mod, modulo by 0), \ METALANG99_callTrivial(METALANG99_PRIV_modAux, x, y, 0)) #define METALANG99_PRIV_modAux_IMPL(x, y, acc) \ METALANG99_appl( \ METALANG99_if( \ METALANG99_isJust(METALANG99_divChecked_IMPL(x, y)), \ METALANG99_appl_IMPL(METALANG99_const, acc), \ METALANG99_appl2_IMPL(METALANG99_PRIV_modProgress, x, y)), \ v(acc)) #define METALANG99_PRIV_modProgress_IMPL(x, y, acc) \ METALANG99_appl( \ METALANG99_PRIV_IF( \ METALANG99_PRIV_uintEq(x, 0), \ METALANG99_appl_IMPL(METALANG99_const, acc), \ METALANG99_appl2_IMPL(METALANG99_PRIV_modProgressAux, x, y)), \ v(acc)) #define METALANG99_PRIV_modProgressAux_IMPL(x, y, acc) \ METALANG99_PRIV_modAux_IMPL(METALANG99_PRIV_dec(x), y, METALANG99_PRIV_inc(acc)) // } #define METALANG99_add3_IMPL(x, y, z) METALANG99_add(METALANG99_add_IMPL(x, y), v(z)) #define METALANG99_sub3_IMPL(x, y, z) METALANG99_sub(METALANG99_sub_IMPL(x, y), v(z)) #define METALANG99_mul3_IMPL(x, y, z) METALANG99_mul(METALANG99_mul_IMPL(x, y), v(z)) #define METALANG99_div3_IMPL(x, y, z) METALANG99_div(METALANG99_div_IMPL(x, y), v(z)) #define METALANG99_min_IMPL(x, y) \ METALANG99_call(METALANG99_if, METALANG99_lesser_IMPL(x, y), v(x, y)) #define METALANG99_max_IMPL(x, y) \ METALANG99_call(METALANG99_if, METALANG99_lesser_IMPL(x, y), v(y, x)) #define METALANG99_PRIV_uintConst0_IMPL(...) v(0) // } // Arity specifiers { #define METALANG99_inc_ARITY 1 #define METALANG99_dec_ARITY 1 #define METALANG99_uintMatch_ARITY 2 #define METALANG99_uintMatchWithArgs_ARITY 3 #define METALANG99_uintEq_ARITY 2 #define METALANG99_uintNeq_ARITY 2 #define METALANG99_greater_ARITY 2 #define METALANG99_greaterEq_ARITY 2 #define METALANG99_lesser_ARITY 2 #define METALANG99_lesserEq_ARITY 2 #define METALANG99_add_ARITY 2 #define METALANG99_sub_ARITY 2 #define METALANG99_mul_ARITY 2 #define METALANG99_div_ARITY 2 #define METALANG99_divChecked_ARITY 2 #define METALANG99_mod_ARITY 2 #define METALANG99_add3_ARITY 3 #define METALANG99_sub3_ARITY 3 #define METALANG99_mul3_ARITY 3 #define METALANG99_div3_ARITY 3 #define METALANG99_min_ARITY 2 #define METALANG99_max_ARITY 2 #define METALANG99_PRIV_lesserProgress_ARITY 2 #define METALANG99_PRIV_addProgress_ARITY 2 #define METALANG99_PRIV_subProgress_ARITY 2 #define METALANG99_PRIV_mulProgress_ARITY 2 #define METALANG99_PRIV_modProgress_ARITY 3 #define METALANG99_PRIV_modProgressAux_ARITY 3 // } // Aliases { #ifndef METALANG99_NO_SMALL_PREFIX #define M_inc METALANG99_inc #define M_dec METALANG99_dec #define M_uintMatch METALANG99_uintMatch #define M_uintMatchWithArgs METALANG99_uintMatchWithArgs #define M_uintEq METALANG99_uintEq #define M_uintNeq METALANG99_uintNeq #define M_greater METALANG99_greater #define M_greaterEq METALANG99_greaterEq #define M_lesser METALANG99_lesser #define M_lesserEq METALANG99_lesserEq #define M_add METALANG99_add #define M_sub METALANG99_sub #define M_mul METALANG99_mul #define M_div METALANG99_div #define M_divChecked METALANG99_divChecked #define M_mod METALANG99_mod #define M_add3 METALANG99_add3 #define M_sub3 METALANG99_sub3 #define M_mul3 METALANG99_mul3 #define M_div3 METALANG99_div3 #define M_min METALANG99_min #define M_max METALANG99_max #define M_uintEqPlain METALANG99_uintEqPlain #define M_uintNeqPlain METALANG99_uintNeqPlain #define M_incPlain METALANG99_incPlain #define M_decPlain METALANG99_decPlain #endif // METALANG99_NO_SMALL_PREFIX // } #endif // DOXYGEN_IGNORE #endif // METALANG99_UINT_H hkl-5.1.7/third-party/metalang99/gen.h0000664000175000017500000002733514677222567016463 0ustar00piccapicca/** * @file * Support for C language constructions. * * Some decent usage examples can be found in * [datatype99/examples/derive](https://github.com/Hirrolot/datatype99/tree/master/examples/derive). */ #ifndef ML99_GEN_H #define ML99_GEN_H #include #include #include #include #include #include #include #include // For backwards compatibility. #include // For backwards compatibility: ML99_GEN_SYM, ML99_TRAILING_SEMICOLON. /** * Puts a semicolon after provided arguments. * * # Examples * * @code * #include * * // int x = 5; * ML99_semicoloned(v(int x = 5)) * @endcode */ #define ML99_semicoloned(...) ML99_call(ML99_semicoloned, __VA_ARGS__) /** * Puts provided arguments into braces. * * # Examples * * @code * #include * * // { int a, b, c; } * ML99_braced(v(int a, b, c;)) * @endcode */ #define ML99_braced(...) ML99_call(ML99_braced, __VA_ARGS__) /** * Generates an assignment of provided variadic arguments to @p lhs. * * # Examples * * @code * #include * * // x = 5, 6, 7 * ML99_assign(v(x), v(5, 6, 7)) * @endcode */ #define ML99_assign(lhs, ...) ML99_call(ML99_assign, lhs, __VA_ARGS__) /** * A shortcut for `ML99_assign(lhs, ML99_braced(...))`. */ #define ML99_assignInitializerList(lhs, ...) ML99_call(ML99_assignInitializerList, lhs, __VA_ARGS__) /** * A shortcut for `ML99_semicoloned(ML99_assign(lhs, ...))`. */ #define ML99_assignStmt(lhs, ...) ML99_call(ML99_assignStmt, lhs, __VA_ARGS__) /** * A shortcut for `ML99_assignStmt(lhs, ML99_braced(...))`. */ #define ML99_assignInitializerListStmt(lhs, ...) \ ML99_call(ML99_assignInitializerListStmt, lhs, __VA_ARGS__) /** * Generates a function/macro invocation. * * # Examples * * @code * #include * * // If you are on C11. * ML99_invoke(v(_Static_assert), v(1 == 1, "Must be true")) * @endcode */ #define ML99_invoke(f, ...) ML99_call(ML99_invoke, f, __VA_ARGS__) /** * A shortcut for `ML99_semicoloned(ML99_invoke(f, ...))`. */ #define ML99_invokeStmt(f, ...) ML99_call(ML99_invokeStmt, f, __VA_ARGS__) /** * Generates `prefix { code }`. * * # Examples * * @code * #include * * // if (1 == 1) { * // printf("x = %d\n", x); * // } * ML99_prefixedBlock(v(if (1 == 1)), v(printf("x = %d\n", x);)) * @endcode */ #define ML99_prefixedBlock(prefix, ...) ML99_call(ML99_prefixedBlock, prefix, __VA_ARGS__) /** * Generates a type definition. * * # Examples * * @code * #include * * // typedef struct { int x, y; } Point; * ML99_typedef(v(Point), v(struct { int x, y; })) * @endcode */ #define ML99_typedef(ident, ...) ML99_call(ML99_typedef, ident, __VA_ARGS__) /** * Generates a C structure. * * # Examples * * @code * #include * * // struct Point { int x, y; } * ML99_struct(v(Point), v(int x, y;)) * @endcode */ #define ML99_struct(ident, ...) ML99_call(ML99_struct, ident, __VA_ARGS__) /** * Generates an anonymous C structure. * * # Examples * * @code * #include * * // struct { int x, y; } * ML99_struct(v(int x, y;)) * @endcode */ #define ML99_anonStruct(...) ML99_call(ML99_anonStruct, __VA_ARGS__) /** * The same as #ML99_struct but generates a union. */ #define ML99_union(ident, ...) ML99_call(ML99_union, ident, __VA_ARGS__) /** * The same as #ML99_anonStruct but generates a union. */ #define ML99_anonUnion(...) ML99_call(ML99_anonUnion, __VA_ARGS__) /** * The same as #ML99_struct but generates an enumeration. */ #define ML99_enum(ident, ...) ML99_call(ML99_enum, ident, __VA_ARGS__) /** * The same as #ML99_anonStruct but generates an enumeration. */ #define ML99_anonEnum(...) ML99_call(ML99_anonEnum, __VA_ARGS__) /** * Generates a function pointer. * * # Examples * * @code * #include * * // int (*add)(int x, int y) * ML99_fnPtr(v(int), v(add), v(int x), v(int y)) * * // const char *(*title)(void) * ML99_fnPtr(v(const char *), v(title), v(void)) * @endcode */ #define ML99_fnPtr(ret_ty, name, ...) ML99_call(ML99_fnPtr, ret_ty, name, __VA_ARGS__) /** * A shortcut for `ML99_semicoloned(ML99_fnPtr(ret_ty, name, ...))`. */ #define ML99_fnPtrStmt(ret_ty, name, ...) ML99_call(ML99_fnPtrStmt, ret_ty, name, __VA_ARGS__) /** * Pastes provided arguments @p n times. * * # Examples * * @code * #include * * // ~ ~ ~ ~ ~ * ML99_times(v(5), v(~)) * @endcode */ #define ML99_times(n, ...) ML99_call(ML99_times, n, __VA_ARGS__) /** * Invokes @p f @p n times, providing an iteration index each time. * * # Examples * * @code * #include * #include * * // _0 _1 _2 * ML99_repeat(v(3), ML99_appl(v(ML99_cat), v(_))) * @endcode */ #define ML99_repeat(n, f) ML99_call(ML99_repeat, n, f) /** * Generates \f$(T_0 \ \_0, ..., T_n \ \_n)\f$. * * If @p type_list is empty, this macro results in `(void)`. * * # Examples * * @code * #include * * // (int _0, long long _1, const char * _2) * ML99_indexedParams(ML99_list(v(int, long long, const char *))) * * // (void) * ML99_indexedParams(ML99_nil()) * @endcode */ #define ML99_indexedParams(type_list) ML99_call(ML99_indexedParams, type_list) /** * Generates \f$T_0 \ \_0; ...; T_n \ \_n\f$. * * If @p type_list is empty, this macro results in emptiness. * * # Examples * * @code * #include * * // int _0; long long _1; const char * _2; * ML99_indexedFields(ML99_list(v(int, long long, const char *))) * * // ML99_empty() * ML99_indexedFields(ML99_nil()) * @endcode */ #define ML99_indexedFields(type_list) ML99_call(ML99_indexedFields, type_list) /** * Generates \f$\{ \_0, ..., \_{n - 1} \}\f$. * * If @p n is 0, this macro results in `{ 0 }`. * * # Examples * * @code * #include * * // { _0, _1, _2 } * ML99_indexedInitializerList(v(3)) * * // { 0 } * ML99_indexedInitializerList(v(0)) * @endcode */ #define ML99_indexedInitializerList(n) ML99_call(ML99_indexedInitializerList, n) /** * Generates \f$\_0, ..., \_{n - 1}\f$. * * If @p n is 0, this macro results in emptiness. * * # Examples * * @code * #include * * // _0, _1, _2 * ML99_indexedArgs(v(3)) * * // ML99_empty() * ML99_indexedArgs(v(0)) * @endcode */ #define ML99_indexedArgs(n) ML99_call(ML99_indexedArgs, n) #ifndef DOXYGEN_IGNORE #define ML99_semicoloned_IMPL(...) v(__VA_ARGS__;) #define ML99_braced_IMPL(...) v({__VA_ARGS__}) #define ML99_assign_IMPL(lhs, ...) v(lhs = __VA_ARGS__) #define ML99_assignStmt_IMPL(lhs, ...) v(lhs = __VA_ARGS__;) #define ML99_assignInitializerList_IMPL(lhs, ...) v(lhs = {__VA_ARGS__}) #define ML99_assignInitializerListStmt_IMPL(lhs, ...) v(lhs = {__VA_ARGS__};) #define ML99_invoke_IMPL(f, ...) v(f(__VA_ARGS__)) #define ML99_invokeStmt_IMPL(f, ...) v(f(__VA_ARGS__);) #define ML99_typedef_IMPL(ident, ...) v(typedef __VA_ARGS__ ident;) #define ML99_fnPtr_IMPL(ret_ty, name, ...) v(ret_ty (*name)(__VA_ARGS__)) #define ML99_fnPtrStmt_IMPL(ret_ty, name, ...) v(ret_ty (*name)(__VA_ARGS__);) // clang-format off #define ML99_prefixedBlock_IMPL(prefix, ...) v(prefix {__VA_ARGS__}) #define ML99_struct_IMPL(ident, ...) v(struct ident {__VA_ARGS__}) #define ML99_anonStruct_IMPL(...) v(struct {__VA_ARGS__}) #define ML99_union_IMPL(ident, ...) v(union ident {__VA_ARGS__}) #define ML99_anonUnion_IMPL(...) v(union {__VA_ARGS__}) #define ML99_enum_IMPL(ident, ...) v(enum ident {__VA_ARGS__}) #define ML99_anonEnum_IMPL(...) v(enum {__VA_ARGS__}) // clang-format on #define ML99_times_IMPL(n, ...) ML99_natMatchWithArgs_IMPL(n, ML99_PRIV_times_, __VA_ARGS__) #define ML99_PRIV_times_Z_IMPL ML99_empty_IMPL #define ML99_PRIV_times_S_IMPL(i, ...) ML99_TERMS(v(__VA_ARGS__), ML99_times_IMPL(i, __VA_ARGS__)) #define ML99_repeat_IMPL(n, f) ML99_natMatchWithArgs_IMPL(n, ML99_PRIV_repeat_, f) #define ML99_PRIV_repeat_Z_IMPL ML99_empty_IMPL #define ML99_PRIV_repeat_S_IMPL(i, f) ML99_TERMS(ML99_repeat_IMPL(i, f), ML99_appl_IMPL(f, i)) // ML99_indexedParams_IMPL { #define ML99_indexedParams_IMPL(type_list) \ ML99_tuple(ML99_PRIV_IF( \ ML99_IS_NIL(type_list), \ v(void), \ ML99_variadicsTail(ML99_PRIV_indexedParamsAux_IMPL(type_list, 0)))) #define ML99_PRIV_indexedParamsAux_IMPL(type_list, i) \ ML99_matchWithArgs_IMPL(type_list, ML99_PRIV_indexedParams_, i) #define ML99_PRIV_indexedParams_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_indexedParams_cons_IMPL(x, xs, i) \ ML99_TERMS(v(, x _##i), ML99_PRIV_indexedParamsAux_IMPL(xs, ML99_INC(i))) // } (ML99_indexedParams_IMPL) // ML99_indexedFields_IMPL { #define ML99_indexedFields_IMPL(type_list) ML99_PRIV_indexedFieldsAux_IMPL(type_list, 0) #define ML99_PRIV_indexedFieldsAux_IMPL(type_list, i) \ ML99_matchWithArgs_IMPL(type_list, ML99_PRIV_indexedFields_, i) #define ML99_PRIV_indexedFields_nil_IMPL ML99_empty_IMPL #define ML99_PRIV_indexedFields_cons_IMPL(x, xs, i) \ ML99_TERMS(v(x _##i;), ML99_PRIV_indexedFieldsAux_IMPL(xs, ML99_INC(i))) // } (ML99_indexedFields_IMPL) #define ML99_indexedInitializerList_IMPL(n) ML99_braced(ML99_PRIV_INDEXED_ITEMS(n, v(0))) #define ML99_indexedArgs_IMPL(n) ML99_PRIV_INDEXED_ITEMS(n, v(ML99_EMPTY())) #define ML99_PRIV_INDEXED_ITEMS(n, empty_case) \ ML99_PRIV_IF( \ ML99_NAT_EQ(n, 0), \ empty_case, \ ML99_variadicsTail(ML99_repeat_IMPL(n, ML99_PRIV_indexedItem))) #define ML99_PRIV_indexedItem_IMPL(i) v(, _##i) // Arity specifiers { #define ML99_semicoloned_ARITY 1 #define ML99_braced_ARITY 1 #define ML99_assign_ARITY 2 #define ML99_assignStmt_ARITY 2 #define ML99_assignInitializerList_ARITY 2 #define ML99_assignInitializerListStmt_ARITY 2 #define ML99_invoke_ARITY 2 #define ML99_invokeStmt_ARITY 2 #define ML99_prefixedBlock_ARITY 2 #define ML99_typedef_ARITY 2 #define ML99_struct_ARITY 2 #define ML99_anonStruct_ARITY 1 #define ML99_union_ARITY 2 #define ML99_anonUnion_ARITY 1 #define ML99_enum_ARITY 2 #define ML99_anonEnum_ARITY 1 #define ML99_fnPtr_ARITY 3 #define ML99_fnPtrStmt_ARITY 3 #define ML99_repeat_ARITY 2 #define ML99_times_ARITY 2 #define ML99_indexedParams_ARITY 1 #define ML99_indexedFields_ARITY 1 #define ML99_indexedInitializerList_ARITY 1 #define ML99_indexedArgs_ARITY 1 #define ML99_PRIV_indexedItem_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_GEN_H hkl-5.1.7/third-party/metalang99/lang/0000775000175000017500000000000015144640565016440 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/lang/curry.h0000664000175000017500000000545314677222567017774 0ustar00piccapicca#ifndef METALANG99_LANG_CURRY_H #define METALANG99_LANG_CURRY_H #include #define METALANG99_PRIV_CURRY(f, ...) \ (METALANG99_PRIV_CAT(METALANG99_PRIV_CAT(METALANG99_PRIV_CURRY_, f##_ARITY), _CLOSURE), \ (f, __VA_ARGS__)) #define METALANG99_PRIV_CURRY_1_CLOSURE_IMPL(f, ...) METALANG99_callTrivial(f, __VA_ARGS__) #define METALANG99_PRIV_CURRY_2_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_1_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_3_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_2_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_4_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_3_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_5_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_4_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_6_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_5_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_7_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_6_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_8_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_7_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_9_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_8_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_10_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_9_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_11_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_10_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_12_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_11_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_13_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_12_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_14_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_13_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_15_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_14_CLOSURE, (f, __VA_ARGS__))) #define METALANG99_PRIV_CURRY_16_CLOSURE_IMPL(f, ...) \ v((METALANG99_PRIV_CURRY_15_CLOSURE, (f, __VA_ARGS__))) #endif // METALANG99_LANG_CURRY_H hkl-5.1.7/third-party/metalang99/lang/closure.h0000664000175000017500000000512014677222567020273 0ustar00piccapicca#ifndef ML99_LANG_CLOSURE_H #define ML99_LANG_CLOSURE_H #include #include #include #include /* * A closure has the form `(arity, f, ...)`, where `arity` is how many times `ML99_appl` can * be called for this closure, and `...` denotes the closure's environment. * * `ML99_appl` is described by the following algorithm: * - If `f` is an identifier (like `FOO`): * - If `f##_ARITY` is 1, then just call this function with provided arguments. * - Otherwise, return `(f##_ARITY - 1, f, provided args...)`. * - Otherwise (`f` is a closure): * - If `arity` is 1, then just call `f` with its environment and provided arguments. * - Otherwise, return `(arity - 1, f, env..., provided args...)`. * * Thus, each time except the last, `ML99_appl` extends a closure's environment with new * arguments; the last time, it calls `f` with its environment. */ #define ML99_appl_IMPL(f, ...) \ ML99_PRIV_IF(ML99_PRIV_IS_UNTUPLE_FAST(f), ML99_PRIV_APPL_F, ML99_PRIV_APPL_CLOSURE) \ (f, __VA_ARGS__) #define ML99_PRIV_APPL_F(f, ...) \ ML99_PRIV_IF( \ ML99_PRIV_NAT_EQ(f##_ARITY, 1), \ ML99_callUneval(f, __VA_ARGS__), \ v((ML99_PRIV_DEC(f##_ARITY), f, __VA_ARGS__))) #define ML99_PRIV_APPL_CLOSURE(closure, ...) \ ML99_PRIV_APPL_CLOSURE_AUX(ML99_PRIV_EXPAND closure, __VA_ARGS__) #define ML99_PRIV_APPL_CLOSURE_AUX(...) ML99_PRIV_APPL_CLOSURE_AUX_AUX(__VA_ARGS__) #define ML99_PRIV_APPL_CLOSURE_AUX_AUX(arity, f, ...) \ ML99_PRIV_IF( \ ML99_PRIV_NAT_EQ(arity, 1), \ ML99_callUneval(f, __VA_ARGS__), \ v((ML99_PRIV_DEC(arity), f, __VA_ARGS__))) #define ML99_appl2_IMPL(f, a, b) ML99_appl(ML99_appl_IMPL(f, a), v(b)) #define ML99_appl3_IMPL(f, a, b, c) ML99_appl(ML99_appl2_IMPL(f, a, b), v(c)) #define ML99_appl4_IMPL(f, a, b, c, d) ML99_appl(ML99_appl3_IMPL(f, a, b, c), v(d)) #endif // ML99_LANG_CLOSURE_H hkl-5.1.7/third-party/metalang99/uint/0000775000175000017500000000000015144640565016476 5ustar00piccapiccahkl-5.1.7/third-party/metalang99/uint/dec.h0000664000175000017500000002315414677222567017417 0ustar00piccapicca#ifndef METALANG99_UINT_DEC_H #define METALANG99_UINT_DEC_H #include #define METALANG99_PRIV_dec(x) METALANG99_PRIV_PRIMITIVE_CAT(METALANG99_PRIV_dec_, x)() #define METALANG99_PRIV_dec_0() 255 #define METALANG99_PRIV_dec_1() 0 #define METALANG99_PRIV_dec_2() 1 #define METALANG99_PRIV_dec_3() 2 #define METALANG99_PRIV_dec_4() 3 #define METALANG99_PRIV_dec_5() 4 #define METALANG99_PRIV_dec_6() 5 #define METALANG99_PRIV_dec_7() 6 #define METALANG99_PRIV_dec_8() 7 #define METALANG99_PRIV_dec_9() 8 #define METALANG99_PRIV_dec_10() 9 #define METALANG99_PRIV_dec_11() 10 #define METALANG99_PRIV_dec_12() 11 #define METALANG99_PRIV_dec_13() 12 #define METALANG99_PRIV_dec_14() 13 #define METALANG99_PRIV_dec_15() 14 #define METALANG99_PRIV_dec_16() 15 #define METALANG99_PRIV_dec_17() 16 #define METALANG99_PRIV_dec_18() 17 #define METALANG99_PRIV_dec_19() 18 #define METALANG99_PRIV_dec_20() 19 #define METALANG99_PRIV_dec_21() 20 #define METALANG99_PRIV_dec_22() 21 #define METALANG99_PRIV_dec_23() 22 #define METALANG99_PRIV_dec_24() 23 #define METALANG99_PRIV_dec_25() 24 #define METALANG99_PRIV_dec_26() 25 #define METALANG99_PRIV_dec_27() 26 #define METALANG99_PRIV_dec_28() 27 #define METALANG99_PRIV_dec_29() 28 #define METALANG99_PRIV_dec_30() 29 #define METALANG99_PRIV_dec_31() 30 #define METALANG99_PRIV_dec_32() 31 #define METALANG99_PRIV_dec_33() 32 #define METALANG99_PRIV_dec_34() 33 #define METALANG99_PRIV_dec_35() 34 #define METALANG99_PRIV_dec_36() 35 #define METALANG99_PRIV_dec_37() 36 #define METALANG99_PRIV_dec_38() 37 #define METALANG99_PRIV_dec_39() 38 #define METALANG99_PRIV_dec_40() 39 #define METALANG99_PRIV_dec_41() 40 #define METALANG99_PRIV_dec_42() 41 #define METALANG99_PRIV_dec_43() 42 #define METALANG99_PRIV_dec_44() 43 #define METALANG99_PRIV_dec_45() 44 #define METALANG99_PRIV_dec_46() 45 #define METALANG99_PRIV_dec_47() 46 #define METALANG99_PRIV_dec_48() 47 #define METALANG99_PRIV_dec_49() 48 #define METALANG99_PRIV_dec_50() 49 #define METALANG99_PRIV_dec_51() 50 #define METALANG99_PRIV_dec_52() 51 #define METALANG99_PRIV_dec_53() 52 #define METALANG99_PRIV_dec_54() 53 #define METALANG99_PRIV_dec_55() 54 #define METALANG99_PRIV_dec_56() 55 #define METALANG99_PRIV_dec_57() 56 #define METALANG99_PRIV_dec_58() 57 #define METALANG99_PRIV_dec_59() 58 #define METALANG99_PRIV_dec_60() 59 #define METALANG99_PRIV_dec_61() 60 #define METALANG99_PRIV_dec_62() 61 #define METALANG99_PRIV_dec_63() 62 #define METALANG99_PRIV_dec_64() 63 #define METALANG99_PRIV_dec_65() 64 #define METALANG99_PRIV_dec_66() 65 #define METALANG99_PRIV_dec_67() 66 #define METALANG99_PRIV_dec_68() 67 #define METALANG99_PRIV_dec_69() 68 #define METALANG99_PRIV_dec_70() 69 #define METALANG99_PRIV_dec_71() 70 #define METALANG99_PRIV_dec_72() 71 #define METALANG99_PRIV_dec_73() 72 #define METALANG99_PRIV_dec_74() 73 #define METALANG99_PRIV_dec_75() 74 #define METALANG99_PRIV_dec_76() 75 #define METALANG99_PRIV_dec_77() 76 #define METALANG99_PRIV_dec_78() 77 #define METALANG99_PRIV_dec_79() 78 #define METALANG99_PRIV_dec_80() 79 #define METALANG99_PRIV_dec_81() 80 #define METALANG99_PRIV_dec_82() 81 #define METALANG99_PRIV_dec_83() 82 #define METALANG99_PRIV_dec_84() 83 #define METALANG99_PRIV_dec_85() 84 #define METALANG99_PRIV_dec_86() 85 #define METALANG99_PRIV_dec_87() 86 #define METALANG99_PRIV_dec_88() 87 #define METALANG99_PRIV_dec_89() 88 #define METALANG99_PRIV_dec_90() 89 #define METALANG99_PRIV_dec_91() 90 #define METALANG99_PRIV_dec_92() 91 #define METALANG99_PRIV_dec_93() 92 #define METALANG99_PRIV_dec_94() 93 #define METALANG99_PRIV_dec_95() 94 #define METALANG99_PRIV_dec_96() 95 #define METALANG99_PRIV_dec_97() 96 #define METALANG99_PRIV_dec_98() 97 #define METALANG99_PRIV_dec_99() 98 #define METALANG99_PRIV_dec_100() 99 #define METALANG99_PRIV_dec_101() 100 #define METALANG99_PRIV_dec_102() 101 #define METALANG99_PRIV_dec_103() 102 #define METALANG99_PRIV_dec_104() 103 #define METALANG99_PRIV_dec_105() 104 #define METALANG99_PRIV_dec_106() 105 #define METALANG99_PRIV_dec_107() 106 #define METALANG99_PRIV_dec_108() 107 #define METALANG99_PRIV_dec_109() 108 #define METALANG99_PRIV_dec_110() 109 #define METALANG99_PRIV_dec_111() 110 #define METALANG99_PRIV_dec_112() 111 #define METALANG99_PRIV_dec_113() 112 #define METALANG99_PRIV_dec_114() 113 #define METALANG99_PRIV_dec_115() 114 #define METALANG99_PRIV_dec_116() 115 #define METALANG99_PRIV_dec_117() 116 #define METALANG99_PRIV_dec_118() 117 #define METALANG99_PRIV_dec_119() 118 #define METALANG99_PRIV_dec_120() 119 #define METALANG99_PRIV_dec_121() 120 #define METALANG99_PRIV_dec_122() 121 #define METALANG99_PRIV_dec_123() 122 #define METALANG99_PRIV_dec_124() 123 #define METALANG99_PRIV_dec_125() 124 #define METALANG99_PRIV_dec_126() 125 #define METALANG99_PRIV_dec_127() 126 #define METALANG99_PRIV_dec_128() 127 #define METALANG99_PRIV_dec_129() 128 #define METALANG99_PRIV_dec_130() 129 #define METALANG99_PRIV_dec_131() 130 #define METALANG99_PRIV_dec_132() 131 #define METALANG99_PRIV_dec_133() 132 #define METALANG99_PRIV_dec_134() 133 #define METALANG99_PRIV_dec_135() 134 #define METALANG99_PRIV_dec_136() 135 #define METALANG99_PRIV_dec_137() 136 #define METALANG99_PRIV_dec_138() 137 #define METALANG99_PRIV_dec_139() 138 #define METALANG99_PRIV_dec_140() 139 #define METALANG99_PRIV_dec_141() 140 #define METALANG99_PRIV_dec_142() 141 #define METALANG99_PRIV_dec_143() 142 #define METALANG99_PRIV_dec_144() 143 #define METALANG99_PRIV_dec_145() 144 #define METALANG99_PRIV_dec_146() 145 #define METALANG99_PRIV_dec_147() 146 #define METALANG99_PRIV_dec_148() 147 #define METALANG99_PRIV_dec_149() 148 #define METALANG99_PRIV_dec_150() 149 #define METALANG99_PRIV_dec_151() 150 #define METALANG99_PRIV_dec_152() 151 #define METALANG99_PRIV_dec_153() 152 #define METALANG99_PRIV_dec_154() 153 #define METALANG99_PRIV_dec_155() 154 #define METALANG99_PRIV_dec_156() 155 #define METALANG99_PRIV_dec_157() 156 #define METALANG99_PRIV_dec_158() 157 #define METALANG99_PRIV_dec_159() 158 #define METALANG99_PRIV_dec_160() 159 #define METALANG99_PRIV_dec_161() 160 #define METALANG99_PRIV_dec_162() 161 #define METALANG99_PRIV_dec_163() 162 #define METALANG99_PRIV_dec_164() 163 #define METALANG99_PRIV_dec_165() 164 #define METALANG99_PRIV_dec_166() 165 #define METALANG99_PRIV_dec_167() 166 #define METALANG99_PRIV_dec_168() 167 #define METALANG99_PRIV_dec_169() 168 #define METALANG99_PRIV_dec_170() 169 #define METALANG99_PRIV_dec_171() 170 #define METALANG99_PRIV_dec_172() 171 #define METALANG99_PRIV_dec_173() 172 #define METALANG99_PRIV_dec_174() 173 #define METALANG99_PRIV_dec_175() 174 #define METALANG99_PRIV_dec_176() 175 #define METALANG99_PRIV_dec_177() 176 #define METALANG99_PRIV_dec_178() 177 #define METALANG99_PRIV_dec_179() 178 #define METALANG99_PRIV_dec_180() 179 #define METALANG99_PRIV_dec_181() 180 #define METALANG99_PRIV_dec_182() 181 #define METALANG99_PRIV_dec_183() 182 #define METALANG99_PRIV_dec_184() 183 #define METALANG99_PRIV_dec_185() 184 #define METALANG99_PRIV_dec_186() 185 #define METALANG99_PRIV_dec_187() 186 #define METALANG99_PRIV_dec_188() 187 #define METALANG99_PRIV_dec_189() 188 #define METALANG99_PRIV_dec_190() 189 #define METALANG99_PRIV_dec_191() 190 #define METALANG99_PRIV_dec_192() 191 #define METALANG99_PRIV_dec_193() 192 #define METALANG99_PRIV_dec_194() 193 #define METALANG99_PRIV_dec_195() 194 #define METALANG99_PRIV_dec_196() 195 #define METALANG99_PRIV_dec_197() 196 #define METALANG99_PRIV_dec_198() 197 #define METALANG99_PRIV_dec_199() 198 #define METALANG99_PRIV_dec_200() 199 #define METALANG99_PRIV_dec_201() 200 #define METALANG99_PRIV_dec_202() 201 #define METALANG99_PRIV_dec_203() 202 #define METALANG99_PRIV_dec_204() 203 #define METALANG99_PRIV_dec_205() 204 #define METALANG99_PRIV_dec_206() 205 #define METALANG99_PRIV_dec_207() 206 #define METALANG99_PRIV_dec_208() 207 #define METALANG99_PRIV_dec_209() 208 #define METALANG99_PRIV_dec_210() 209 #define METALANG99_PRIV_dec_211() 210 #define METALANG99_PRIV_dec_212() 211 #define METALANG99_PRIV_dec_213() 212 #define METALANG99_PRIV_dec_214() 213 #define METALANG99_PRIV_dec_215() 214 #define METALANG99_PRIV_dec_216() 215 #define METALANG99_PRIV_dec_217() 216 #define METALANG99_PRIV_dec_218() 217 #define METALANG99_PRIV_dec_219() 218 #define METALANG99_PRIV_dec_220() 219 #define METALANG99_PRIV_dec_221() 220 #define METALANG99_PRIV_dec_222() 221 #define METALANG99_PRIV_dec_223() 222 #define METALANG99_PRIV_dec_224() 223 #define METALANG99_PRIV_dec_225() 224 #define METALANG99_PRIV_dec_226() 225 #define METALANG99_PRIV_dec_227() 226 #define METALANG99_PRIV_dec_228() 227 #define METALANG99_PRIV_dec_229() 228 #define METALANG99_PRIV_dec_230() 229 #define METALANG99_PRIV_dec_231() 230 #define METALANG99_PRIV_dec_232() 231 #define METALANG99_PRIV_dec_233() 232 #define METALANG99_PRIV_dec_234() 233 #define METALANG99_PRIV_dec_235() 234 #define METALANG99_PRIV_dec_236() 235 #define METALANG99_PRIV_dec_237() 236 #define METALANG99_PRIV_dec_238() 237 #define METALANG99_PRIV_dec_239() 238 #define METALANG99_PRIV_dec_240() 239 #define METALANG99_PRIV_dec_241() 240 #define METALANG99_PRIV_dec_242() 241 #define METALANG99_PRIV_dec_243() 242 #define METALANG99_PRIV_dec_244() 243 #define METALANG99_PRIV_dec_245() 244 #define METALANG99_PRIV_dec_246() 245 #define METALANG99_PRIV_dec_247() 246 #define METALANG99_PRIV_dec_248() 247 #define METALANG99_PRIV_dec_249() 248 #define METALANG99_PRIV_dec_250() 249 #define METALANG99_PRIV_dec_251() 250 #define METALANG99_PRIV_dec_252() 251 #define METALANG99_PRIV_dec_253() 252 #define METALANG99_PRIV_dec_254() 253 #define METALANG99_PRIV_dec_255() 254 #endif // METALANG99_UINT_DEC_H hkl-5.1.7/third-party/metalang99/uint/inc.h0000664000175000017500000002315414677222567017435 0ustar00piccapicca#ifndef METALANG99_UINT_INC_H #define METALANG99_UINT_INC_H #include #define METALANG99_PRIV_inc(x) METALANG99_PRIV_PRIMITIVE_CAT(METALANG99_PRIV_inc_, x)() #define METALANG99_PRIV_inc_0() 1 #define METALANG99_PRIV_inc_1() 2 #define METALANG99_PRIV_inc_2() 3 #define METALANG99_PRIV_inc_3() 4 #define METALANG99_PRIV_inc_4() 5 #define METALANG99_PRIV_inc_5() 6 #define METALANG99_PRIV_inc_6() 7 #define METALANG99_PRIV_inc_7() 8 #define METALANG99_PRIV_inc_8() 9 #define METALANG99_PRIV_inc_9() 10 #define METALANG99_PRIV_inc_10() 11 #define METALANG99_PRIV_inc_11() 12 #define METALANG99_PRIV_inc_12() 13 #define METALANG99_PRIV_inc_13() 14 #define METALANG99_PRIV_inc_14() 15 #define METALANG99_PRIV_inc_15() 16 #define METALANG99_PRIV_inc_16() 17 #define METALANG99_PRIV_inc_17() 18 #define METALANG99_PRIV_inc_18() 19 #define METALANG99_PRIV_inc_19() 20 #define METALANG99_PRIV_inc_20() 21 #define METALANG99_PRIV_inc_21() 22 #define METALANG99_PRIV_inc_22() 23 #define METALANG99_PRIV_inc_23() 24 #define METALANG99_PRIV_inc_24() 25 #define METALANG99_PRIV_inc_25() 26 #define METALANG99_PRIV_inc_26() 27 #define METALANG99_PRIV_inc_27() 28 #define METALANG99_PRIV_inc_28() 29 #define METALANG99_PRIV_inc_29() 30 #define METALANG99_PRIV_inc_30() 31 #define METALANG99_PRIV_inc_31() 32 #define METALANG99_PRIV_inc_32() 33 #define METALANG99_PRIV_inc_33() 34 #define METALANG99_PRIV_inc_34() 35 #define METALANG99_PRIV_inc_35() 36 #define METALANG99_PRIV_inc_36() 37 #define METALANG99_PRIV_inc_37() 38 #define METALANG99_PRIV_inc_38() 39 #define METALANG99_PRIV_inc_39() 40 #define METALANG99_PRIV_inc_40() 41 #define METALANG99_PRIV_inc_41() 42 #define METALANG99_PRIV_inc_42() 43 #define METALANG99_PRIV_inc_43() 44 #define METALANG99_PRIV_inc_44() 45 #define METALANG99_PRIV_inc_45() 46 #define METALANG99_PRIV_inc_46() 47 #define METALANG99_PRIV_inc_47() 48 #define METALANG99_PRIV_inc_48() 49 #define METALANG99_PRIV_inc_49() 50 #define METALANG99_PRIV_inc_50() 51 #define METALANG99_PRIV_inc_51() 52 #define METALANG99_PRIV_inc_52() 53 #define METALANG99_PRIV_inc_53() 54 #define METALANG99_PRIV_inc_54() 55 #define METALANG99_PRIV_inc_55() 56 #define METALANG99_PRIV_inc_56() 57 #define METALANG99_PRIV_inc_57() 58 #define METALANG99_PRIV_inc_58() 59 #define METALANG99_PRIV_inc_59() 60 #define METALANG99_PRIV_inc_60() 61 #define METALANG99_PRIV_inc_61() 62 #define METALANG99_PRIV_inc_62() 63 #define METALANG99_PRIV_inc_63() 64 #define METALANG99_PRIV_inc_64() 65 #define METALANG99_PRIV_inc_65() 66 #define METALANG99_PRIV_inc_66() 67 #define METALANG99_PRIV_inc_67() 68 #define METALANG99_PRIV_inc_68() 69 #define METALANG99_PRIV_inc_69() 70 #define METALANG99_PRIV_inc_70() 71 #define METALANG99_PRIV_inc_71() 72 #define METALANG99_PRIV_inc_72() 73 #define METALANG99_PRIV_inc_73() 74 #define METALANG99_PRIV_inc_74() 75 #define METALANG99_PRIV_inc_75() 76 #define METALANG99_PRIV_inc_76() 77 #define METALANG99_PRIV_inc_77() 78 #define METALANG99_PRIV_inc_78() 79 #define METALANG99_PRIV_inc_79() 80 #define METALANG99_PRIV_inc_80() 81 #define METALANG99_PRIV_inc_81() 82 #define METALANG99_PRIV_inc_82() 83 #define METALANG99_PRIV_inc_83() 84 #define METALANG99_PRIV_inc_84() 85 #define METALANG99_PRIV_inc_85() 86 #define METALANG99_PRIV_inc_86() 87 #define METALANG99_PRIV_inc_87() 88 #define METALANG99_PRIV_inc_88() 89 #define METALANG99_PRIV_inc_89() 90 #define METALANG99_PRIV_inc_90() 91 #define METALANG99_PRIV_inc_91() 92 #define METALANG99_PRIV_inc_92() 93 #define METALANG99_PRIV_inc_93() 94 #define METALANG99_PRIV_inc_94() 95 #define METALANG99_PRIV_inc_95() 96 #define METALANG99_PRIV_inc_96() 97 #define METALANG99_PRIV_inc_97() 98 #define METALANG99_PRIV_inc_98() 99 #define METALANG99_PRIV_inc_99() 100 #define METALANG99_PRIV_inc_100() 101 #define METALANG99_PRIV_inc_101() 102 #define METALANG99_PRIV_inc_102() 103 #define METALANG99_PRIV_inc_103() 104 #define METALANG99_PRIV_inc_104() 105 #define METALANG99_PRIV_inc_105() 106 #define METALANG99_PRIV_inc_106() 107 #define METALANG99_PRIV_inc_107() 108 #define METALANG99_PRIV_inc_108() 109 #define METALANG99_PRIV_inc_109() 110 #define METALANG99_PRIV_inc_110() 111 #define METALANG99_PRIV_inc_111() 112 #define METALANG99_PRIV_inc_112() 113 #define METALANG99_PRIV_inc_113() 114 #define METALANG99_PRIV_inc_114() 115 #define METALANG99_PRIV_inc_115() 116 #define METALANG99_PRIV_inc_116() 117 #define METALANG99_PRIV_inc_117() 118 #define METALANG99_PRIV_inc_118() 119 #define METALANG99_PRIV_inc_119() 120 #define METALANG99_PRIV_inc_120() 121 #define METALANG99_PRIV_inc_121() 122 #define METALANG99_PRIV_inc_122() 123 #define METALANG99_PRIV_inc_123() 124 #define METALANG99_PRIV_inc_124() 125 #define METALANG99_PRIV_inc_125() 126 #define METALANG99_PRIV_inc_126() 127 #define METALANG99_PRIV_inc_127() 128 #define METALANG99_PRIV_inc_128() 129 #define METALANG99_PRIV_inc_129() 130 #define METALANG99_PRIV_inc_130() 131 #define METALANG99_PRIV_inc_131() 132 #define METALANG99_PRIV_inc_132() 133 #define METALANG99_PRIV_inc_133() 134 #define METALANG99_PRIV_inc_134() 135 #define METALANG99_PRIV_inc_135() 136 #define METALANG99_PRIV_inc_136() 137 #define METALANG99_PRIV_inc_137() 138 #define METALANG99_PRIV_inc_138() 139 #define METALANG99_PRIV_inc_139() 140 #define METALANG99_PRIV_inc_140() 141 #define METALANG99_PRIV_inc_141() 142 #define METALANG99_PRIV_inc_142() 143 #define METALANG99_PRIV_inc_143() 144 #define METALANG99_PRIV_inc_144() 145 #define METALANG99_PRIV_inc_145() 146 #define METALANG99_PRIV_inc_146() 147 #define METALANG99_PRIV_inc_147() 148 #define METALANG99_PRIV_inc_148() 149 #define METALANG99_PRIV_inc_149() 150 #define METALANG99_PRIV_inc_150() 151 #define METALANG99_PRIV_inc_151() 152 #define METALANG99_PRIV_inc_152() 153 #define METALANG99_PRIV_inc_153() 154 #define METALANG99_PRIV_inc_154() 155 #define METALANG99_PRIV_inc_155() 156 #define METALANG99_PRIV_inc_156() 157 #define METALANG99_PRIV_inc_157() 158 #define METALANG99_PRIV_inc_158() 159 #define METALANG99_PRIV_inc_159() 160 #define METALANG99_PRIV_inc_160() 161 #define METALANG99_PRIV_inc_161() 162 #define METALANG99_PRIV_inc_162() 163 #define METALANG99_PRIV_inc_163() 164 #define METALANG99_PRIV_inc_164() 165 #define METALANG99_PRIV_inc_165() 166 #define METALANG99_PRIV_inc_166() 167 #define METALANG99_PRIV_inc_167() 168 #define METALANG99_PRIV_inc_168() 169 #define METALANG99_PRIV_inc_169() 170 #define METALANG99_PRIV_inc_170() 171 #define METALANG99_PRIV_inc_171() 172 #define METALANG99_PRIV_inc_172() 173 #define METALANG99_PRIV_inc_173() 174 #define METALANG99_PRIV_inc_174() 175 #define METALANG99_PRIV_inc_175() 176 #define METALANG99_PRIV_inc_176() 177 #define METALANG99_PRIV_inc_177() 178 #define METALANG99_PRIV_inc_178() 179 #define METALANG99_PRIV_inc_179() 180 #define METALANG99_PRIV_inc_180() 181 #define METALANG99_PRIV_inc_181() 182 #define METALANG99_PRIV_inc_182() 183 #define METALANG99_PRIV_inc_183() 184 #define METALANG99_PRIV_inc_184() 185 #define METALANG99_PRIV_inc_185() 186 #define METALANG99_PRIV_inc_186() 187 #define METALANG99_PRIV_inc_187() 188 #define METALANG99_PRIV_inc_188() 189 #define METALANG99_PRIV_inc_189() 190 #define METALANG99_PRIV_inc_190() 191 #define METALANG99_PRIV_inc_191() 192 #define METALANG99_PRIV_inc_192() 193 #define METALANG99_PRIV_inc_193() 194 #define METALANG99_PRIV_inc_194() 195 #define METALANG99_PRIV_inc_195() 196 #define METALANG99_PRIV_inc_196() 197 #define METALANG99_PRIV_inc_197() 198 #define METALANG99_PRIV_inc_198() 199 #define METALANG99_PRIV_inc_199() 200 #define METALANG99_PRIV_inc_200() 201 #define METALANG99_PRIV_inc_201() 202 #define METALANG99_PRIV_inc_202() 203 #define METALANG99_PRIV_inc_203() 204 #define METALANG99_PRIV_inc_204() 205 #define METALANG99_PRIV_inc_205() 206 #define METALANG99_PRIV_inc_206() 207 #define METALANG99_PRIV_inc_207() 208 #define METALANG99_PRIV_inc_208() 209 #define METALANG99_PRIV_inc_209() 210 #define METALANG99_PRIV_inc_210() 211 #define METALANG99_PRIV_inc_211() 212 #define METALANG99_PRIV_inc_212() 213 #define METALANG99_PRIV_inc_213() 214 #define METALANG99_PRIV_inc_214() 215 #define METALANG99_PRIV_inc_215() 216 #define METALANG99_PRIV_inc_216() 217 #define METALANG99_PRIV_inc_217() 218 #define METALANG99_PRIV_inc_218() 219 #define METALANG99_PRIV_inc_219() 220 #define METALANG99_PRIV_inc_220() 221 #define METALANG99_PRIV_inc_221() 222 #define METALANG99_PRIV_inc_222() 223 #define METALANG99_PRIV_inc_223() 224 #define METALANG99_PRIV_inc_224() 225 #define METALANG99_PRIV_inc_225() 226 #define METALANG99_PRIV_inc_226() 227 #define METALANG99_PRIV_inc_227() 228 #define METALANG99_PRIV_inc_228() 229 #define METALANG99_PRIV_inc_229() 230 #define METALANG99_PRIV_inc_230() 231 #define METALANG99_PRIV_inc_231() 232 #define METALANG99_PRIV_inc_232() 233 #define METALANG99_PRIV_inc_233() 234 #define METALANG99_PRIV_inc_234() 235 #define METALANG99_PRIV_inc_235() 236 #define METALANG99_PRIV_inc_236() 237 #define METALANG99_PRIV_inc_237() 238 #define METALANG99_PRIV_inc_238() 239 #define METALANG99_PRIV_inc_239() 240 #define METALANG99_PRIV_inc_240() 241 #define METALANG99_PRIV_inc_241() 242 #define METALANG99_PRIV_inc_242() 243 #define METALANG99_PRIV_inc_243() 244 #define METALANG99_PRIV_inc_244() 245 #define METALANG99_PRIV_inc_245() 246 #define METALANG99_PRIV_inc_246() 247 #define METALANG99_PRIV_inc_247() 248 #define METALANG99_PRIV_inc_248() 249 #define METALANG99_PRIV_inc_249() 250 #define METALANG99_PRIV_inc_250() 251 #define METALANG99_PRIV_inc_251() 252 #define METALANG99_PRIV_inc_252() 253 #define METALANG99_PRIV_inc_253() 254 #define METALANG99_PRIV_inc_254() 255 #define METALANG99_PRIV_inc_255() 0 #endif // METALANG99_UINT_INC_H hkl-5.1.7/third-party/metalang99/uint/div.h0000664000175000017500000027477114677222567017463 0ustar00piccapicca#ifndef METALANG99_UINT_DIV_H #define METALANG99_UINT_DIV_H #include #include #include #include #define METALANG99_div_IMPL(x, y) \ METALANG99_call( \ METALANG99_matchWithArgs, \ METALANG99_divChecked_IMPL(x, y), \ v(METALANG99_PRIV_div_, x, y)) #define METALANG99_PRIV_div_nothing_IMPL(x, y) METALANG99_PRIV_div_ERROR(x, y) #define METALANG99_PRIV_div_just_IMPL(n, _x, _y) v(n) #define METALANG99_PRIV_div_ERROR(x, y) METALANG99_fatal(METALANG99_div, x is not divisible by y) #define METALANG99_divChecked_IMPL(x, y) \ METALANG99_PRIV_UNPARENTHESIZE( \ METALANG99_PRIV_VARIADICS_SND(METALANG99_PRIV_div_##x##_##y(), (METALANG99_nothing()))) #define METALANG99_PRIV_div_0_1() ~, (METALANG99_just(v(0))) #define METALANG99_PRIV_div_1_1() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_2_1() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_2_2() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_3_1() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_3_3() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_4_1() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_4_2() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_4_4() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_5_1() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_5_5() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_6_1() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_6_3() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_6_2() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_6_6() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_7_1() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_7_7() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_8_1() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_8_4() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_8_2() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_8_8() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_9_1() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_9_3() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_9_9() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_10_1() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_10_5() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_10_2() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_10_10() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_11_1() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_11_11() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_12_1() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_12_6() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_12_4() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_12_3() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_12_2() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_12_12() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_13_1() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_13_13() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_14_1() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_14_7() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_14_2() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_14_14() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_15_1() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_15_5() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_15_3() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_15_15() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_16_1() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_16_8() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_16_4() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_16_2() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_16_16() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_17_1() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_17_17() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_18_1() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_18_9() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_18_6() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_18_3() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_18_2() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_18_18() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_19_1() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_19_19() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_20_1() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_20_10() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_20_5() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_20_4() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_20_2() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_20_20() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_21_1() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_21_7() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_21_3() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_21_21() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_22_1() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_22_11() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_22_2() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_22_22() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_23_1() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_23_23() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_24_1() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_24_12() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_24_8() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_24_6() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_24_4() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_24_3() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_24_2() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_24_24() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_25_1() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_25_5() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_25_25() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_26_1() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_26_13() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_26_2() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_26_26() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_27_1() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_27_9() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_27_3() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_27_27() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_28_1() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_28_14() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_28_7() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_28_4() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_28_2() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_28_28() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_29_1() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_29_29() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_30_1() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_30_15() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_30_10() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_30_6() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_30_5() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_30_3() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_30_2() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_30_30() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_31_1() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_31_31() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_32_1() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_32_16() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_32_8() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_32_4() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_32_2() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_32_32() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_33_1() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_33_11() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_33_3() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_33_33() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_34_1() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_34_17() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_34_2() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_34_34() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_35_1() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_35_7() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_35_5() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_35_35() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_36_1() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_36_18() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_36_12() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_36_9() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_36_6() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_36_4() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_36_3() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_36_2() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_36_36() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_37_1() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_37_37() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_38_1() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_38_19() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_38_2() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_38_38() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_39_1() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_39_13() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_39_3() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_39_39() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_40_1() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_40_20() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_40_10() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_40_8() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_40_5() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_40_4() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_40_2() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_40_40() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_41_1() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_41_41() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_42_1() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_42_21() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_42_14() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_42_7() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_42_6() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_42_3() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_42_2() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_42_42() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_43_1() ~, (METALANG99_just(v(43))) #define METALANG99_PRIV_div_43_43() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_44_1() ~, (METALANG99_just(v(44))) #define METALANG99_PRIV_div_44_22() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_44_11() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_44_4() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_44_2() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_44_44() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_45_1() ~, (METALANG99_just(v(45))) #define METALANG99_PRIV_div_45_15() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_45_9() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_45_5() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_45_3() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_45_45() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_46_1() ~, (METALANG99_just(v(46))) #define METALANG99_PRIV_div_46_23() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_46_2() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_46_46() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_47_1() ~, (METALANG99_just(v(47))) #define METALANG99_PRIV_div_47_47() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_48_1() ~, (METALANG99_just(v(48))) #define METALANG99_PRIV_div_48_24() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_48_16() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_48_12() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_48_8() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_48_6() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_48_4() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_48_3() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_48_2() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_48_48() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_49_1() ~, (METALANG99_just(v(49))) #define METALANG99_PRIV_div_49_7() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_49_49() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_50_1() ~, (METALANG99_just(v(50))) #define METALANG99_PRIV_div_50_25() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_50_10() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_50_5() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_50_2() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_50_50() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_51_1() ~, (METALANG99_just(v(51))) #define METALANG99_PRIV_div_51_17() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_51_3() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_51_51() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_52_1() ~, (METALANG99_just(v(52))) #define METALANG99_PRIV_div_52_26() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_52_13() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_52_4() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_52_2() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_52_52() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_53_1() ~, (METALANG99_just(v(53))) #define METALANG99_PRIV_div_53_53() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_54_1() ~, (METALANG99_just(v(54))) #define METALANG99_PRIV_div_54_27() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_54_18() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_54_9() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_54_6() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_54_3() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_54_2() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_54_54() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_55_1() ~, (METALANG99_just(v(55))) #define METALANG99_PRIV_div_55_11() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_55_5() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_55_55() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_56_1() ~, (METALANG99_just(v(56))) #define METALANG99_PRIV_div_56_28() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_56_14() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_56_8() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_56_7() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_56_4() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_56_2() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_56_56() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_57_1() ~, (METALANG99_just(v(57))) #define METALANG99_PRIV_div_57_19() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_57_3() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_57_57() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_58_1() ~, (METALANG99_just(v(58))) #define METALANG99_PRIV_div_58_29() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_58_2() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_58_58() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_59_1() ~, (METALANG99_just(v(59))) #define METALANG99_PRIV_div_59_59() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_60_1() ~, (METALANG99_just(v(60))) #define METALANG99_PRIV_div_60_30() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_60_20() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_60_15() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_60_12() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_60_10() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_60_6() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_60_5() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_60_4() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_60_3() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_60_2() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_60_60() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_61_1() ~, (METALANG99_just(v(61))) #define METALANG99_PRIV_div_61_61() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_62_1() ~, (METALANG99_just(v(62))) #define METALANG99_PRIV_div_62_31() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_62_2() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_62_62() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_63_1() ~, (METALANG99_just(v(63))) #define METALANG99_PRIV_div_63_21() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_63_9() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_63_7() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_63_3() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_63_63() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_64_1() ~, (METALANG99_just(v(64))) #define METALANG99_PRIV_div_64_32() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_64_16() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_64_8() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_64_4() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_64_2() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_64_64() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_65_1() ~, (METALANG99_just(v(65))) #define METALANG99_PRIV_div_65_13() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_65_5() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_65_65() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_66_1() ~, (METALANG99_just(v(66))) #define METALANG99_PRIV_div_66_33() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_66_22() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_66_11() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_66_6() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_66_3() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_66_2() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_66_66() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_67_1() ~, (METALANG99_just(v(67))) #define METALANG99_PRIV_div_67_67() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_68_1() ~, (METALANG99_just(v(68))) #define METALANG99_PRIV_div_68_34() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_68_17() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_68_4() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_68_2() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_68_68() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_69_1() ~, (METALANG99_just(v(69))) #define METALANG99_PRIV_div_69_23() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_69_3() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_69_69() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_70_1() ~, (METALANG99_just(v(70))) #define METALANG99_PRIV_div_70_35() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_70_14() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_70_10() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_70_7() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_70_5() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_70_2() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_70_70() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_71_1() ~, (METALANG99_just(v(71))) #define METALANG99_PRIV_div_71_71() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_72_1() ~, (METALANG99_just(v(72))) #define METALANG99_PRIV_div_72_36() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_72_24() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_72_18() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_72_12() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_72_9() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_72_8() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_72_6() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_72_4() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_72_3() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_72_2() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_72_72() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_73_1() ~, (METALANG99_just(v(73))) #define METALANG99_PRIV_div_73_73() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_74_1() ~, (METALANG99_just(v(74))) #define METALANG99_PRIV_div_74_37() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_74_2() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_74_74() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_75_1() ~, (METALANG99_just(v(75))) #define METALANG99_PRIV_div_75_25() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_75_15() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_75_5() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_75_3() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_75_75() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_76_1() ~, (METALANG99_just(v(76))) #define METALANG99_PRIV_div_76_38() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_76_19() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_76_4() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_76_2() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_76_76() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_77_1() ~, (METALANG99_just(v(77))) #define METALANG99_PRIV_div_77_11() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_77_7() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_77_77() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_78_1() ~, (METALANG99_just(v(78))) #define METALANG99_PRIV_div_78_39() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_78_26() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_78_13() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_78_6() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_78_3() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_78_2() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_78_78() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_79_1() ~, (METALANG99_just(v(79))) #define METALANG99_PRIV_div_79_79() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_80_1() ~, (METALANG99_just(v(80))) #define METALANG99_PRIV_div_80_40() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_80_20() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_80_16() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_80_10() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_80_8() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_80_5() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_80_4() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_80_2() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_80_80() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_81_1() ~, (METALANG99_just(v(81))) #define METALANG99_PRIV_div_81_27() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_81_9() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_81_3() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_81_81() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_82_1() ~, (METALANG99_just(v(82))) #define METALANG99_PRIV_div_82_41() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_82_2() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_82_82() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_83_1() ~, (METALANG99_just(v(83))) #define METALANG99_PRIV_div_83_83() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_84_1() ~, (METALANG99_just(v(84))) #define METALANG99_PRIV_div_84_42() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_84_28() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_84_21() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_84_14() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_84_12() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_84_7() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_84_6() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_84_4() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_84_3() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_84_2() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_84_84() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_85_1() ~, (METALANG99_just(v(85))) #define METALANG99_PRIV_div_85_17() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_85_5() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_85_85() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_86_1() ~, (METALANG99_just(v(86))) #define METALANG99_PRIV_div_86_43() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_86_2() ~, (METALANG99_just(v(43))) #define METALANG99_PRIV_div_86_86() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_87_1() ~, (METALANG99_just(v(87))) #define METALANG99_PRIV_div_87_29() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_87_3() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_87_87() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_88_1() ~, (METALANG99_just(v(88))) #define METALANG99_PRIV_div_88_44() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_88_22() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_88_11() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_88_8() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_88_4() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_88_2() ~, (METALANG99_just(v(44))) #define METALANG99_PRIV_div_88_88() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_89_1() ~, (METALANG99_just(v(89))) #define METALANG99_PRIV_div_89_89() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_90_1() ~, (METALANG99_just(v(90))) #define METALANG99_PRIV_div_90_45() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_90_30() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_90_18() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_90_15() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_90_10() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_90_9() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_90_6() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_90_5() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_90_3() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_90_2() ~, (METALANG99_just(v(45))) #define METALANG99_PRIV_div_90_90() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_91_1() ~, (METALANG99_just(v(91))) #define METALANG99_PRIV_div_91_13() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_91_7() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_91_91() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_92_1() ~, (METALANG99_just(v(92))) #define METALANG99_PRIV_div_92_46() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_92_23() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_92_4() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_92_2() ~, (METALANG99_just(v(46))) #define METALANG99_PRIV_div_92_92() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_93_1() ~, (METALANG99_just(v(93))) #define METALANG99_PRIV_div_93_31() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_93_3() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_93_93() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_94_1() ~, (METALANG99_just(v(94))) #define METALANG99_PRIV_div_94_47() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_94_2() ~, (METALANG99_just(v(47))) #define METALANG99_PRIV_div_94_94() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_95_1() ~, (METALANG99_just(v(95))) #define METALANG99_PRIV_div_95_19() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_95_5() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_95_95() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_96_1() ~, (METALANG99_just(v(96))) #define METALANG99_PRIV_div_96_48() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_96_32() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_96_24() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_96_16() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_96_12() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_96_8() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_96_6() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_96_4() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_96_3() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_96_2() ~, (METALANG99_just(v(48))) #define METALANG99_PRIV_div_96_96() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_97_1() ~, (METALANG99_just(v(97))) #define METALANG99_PRIV_div_97_97() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_98_1() ~, (METALANG99_just(v(98))) #define METALANG99_PRIV_div_98_49() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_98_14() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_98_7() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_98_2() ~, (METALANG99_just(v(49))) #define METALANG99_PRIV_div_98_98() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_99_1() ~, (METALANG99_just(v(99))) #define METALANG99_PRIV_div_99_33() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_99_11() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_99_9() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_99_3() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_99_99() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_100_1() ~, (METALANG99_just(v(100))) #define METALANG99_PRIV_div_100_50() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_100_25() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_100_20() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_100_10() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_100_5() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_100_4() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_100_2() ~, (METALANG99_just(v(50))) #define METALANG99_PRIV_div_100_100() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_101_1() ~, (METALANG99_just(v(101))) #define METALANG99_PRIV_div_101_101() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_102_1() ~, (METALANG99_just(v(102))) #define METALANG99_PRIV_div_102_51() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_102_34() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_102_17() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_102_6() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_102_3() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_102_2() ~, (METALANG99_just(v(51))) #define METALANG99_PRIV_div_102_102() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_103_1() ~, (METALANG99_just(v(103))) #define METALANG99_PRIV_div_103_103() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_104_1() ~, (METALANG99_just(v(104))) #define METALANG99_PRIV_div_104_52() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_104_26() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_104_13() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_104_8() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_104_4() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_104_2() ~, (METALANG99_just(v(52))) #define METALANG99_PRIV_div_104_104() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_105_1() ~, (METALANG99_just(v(105))) #define METALANG99_PRIV_div_105_35() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_105_21() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_105_15() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_105_7() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_105_5() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_105_3() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_105_105() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_106_1() ~, (METALANG99_just(v(106))) #define METALANG99_PRIV_div_106_53() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_106_2() ~, (METALANG99_just(v(53))) #define METALANG99_PRIV_div_106_106() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_107_1() ~, (METALANG99_just(v(107))) #define METALANG99_PRIV_div_107_107() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_108_1() ~, (METALANG99_just(v(108))) #define METALANG99_PRIV_div_108_54() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_108_36() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_108_27() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_108_18() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_108_12() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_108_9() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_108_6() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_108_4() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_108_3() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_108_2() ~, (METALANG99_just(v(54))) #define METALANG99_PRIV_div_108_108() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_109_1() ~, (METALANG99_just(v(109))) #define METALANG99_PRIV_div_109_109() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_110_1() ~, (METALANG99_just(v(110))) #define METALANG99_PRIV_div_110_55() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_110_22() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_110_11() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_110_10() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_110_5() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_110_2() ~, (METALANG99_just(v(55))) #define METALANG99_PRIV_div_110_110() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_111_1() ~, (METALANG99_just(v(111))) #define METALANG99_PRIV_div_111_37() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_111_3() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_111_111() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_112_1() ~, (METALANG99_just(v(112))) #define METALANG99_PRIV_div_112_56() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_112_28() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_112_16() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_112_14() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_112_8() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_112_7() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_112_4() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_112_2() ~, (METALANG99_just(v(56))) #define METALANG99_PRIV_div_112_112() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_113_1() ~, (METALANG99_just(v(113))) #define METALANG99_PRIV_div_113_113() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_114_1() ~, (METALANG99_just(v(114))) #define METALANG99_PRIV_div_114_57() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_114_38() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_114_19() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_114_6() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_114_3() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_114_2() ~, (METALANG99_just(v(57))) #define METALANG99_PRIV_div_114_114() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_115_1() ~, (METALANG99_just(v(115))) #define METALANG99_PRIV_div_115_23() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_115_5() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_115_115() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_116_1() ~, (METALANG99_just(v(116))) #define METALANG99_PRIV_div_116_58() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_116_29() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_116_4() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_116_2() ~, (METALANG99_just(v(58))) #define METALANG99_PRIV_div_116_116() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_117_1() ~, (METALANG99_just(v(117))) #define METALANG99_PRIV_div_117_39() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_117_13() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_117_9() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_117_3() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_117_117() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_118_1() ~, (METALANG99_just(v(118))) #define METALANG99_PRIV_div_118_59() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_118_2() ~, (METALANG99_just(v(59))) #define METALANG99_PRIV_div_118_118() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_119_1() ~, (METALANG99_just(v(119))) #define METALANG99_PRIV_div_119_17() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_119_7() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_119_119() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_120_1() ~, (METALANG99_just(v(120))) #define METALANG99_PRIV_div_120_60() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_120_40() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_120_30() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_120_24() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_120_20() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_120_15() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_120_12() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_120_10() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_120_8() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_120_6() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_120_5() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_120_4() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_120_3() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_120_2() ~, (METALANG99_just(v(60))) #define METALANG99_PRIV_div_120_120() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_121_1() ~, (METALANG99_just(v(121))) #define METALANG99_PRIV_div_121_11() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_121_121() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_122_1() ~, (METALANG99_just(v(122))) #define METALANG99_PRIV_div_122_61() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_122_2() ~, (METALANG99_just(v(61))) #define METALANG99_PRIV_div_122_122() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_123_1() ~, (METALANG99_just(v(123))) #define METALANG99_PRIV_div_123_41() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_123_3() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_123_123() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_124_1() ~, (METALANG99_just(v(124))) #define METALANG99_PRIV_div_124_62() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_124_31() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_124_4() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_124_2() ~, (METALANG99_just(v(62))) #define METALANG99_PRIV_div_124_124() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_125_1() ~, (METALANG99_just(v(125))) #define METALANG99_PRIV_div_125_25() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_125_5() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_125_125() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_126_1() ~, (METALANG99_just(v(126))) #define METALANG99_PRIV_div_126_63() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_126_42() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_126_21() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_126_18() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_126_14() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_126_9() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_126_7() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_126_6() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_126_3() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_126_2() ~, (METALANG99_just(v(63))) #define METALANG99_PRIV_div_126_126() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_127_1() ~, (METALANG99_just(v(127))) #define METALANG99_PRIV_div_127_127() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_128_1() ~, (METALANG99_just(v(128))) #define METALANG99_PRIV_div_128_64() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_128_32() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_128_16() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_128_8() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_128_4() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_128_2() ~, (METALANG99_just(v(64))) #define METALANG99_PRIV_div_128_128() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_129_1() ~, (METALANG99_just(v(129))) #define METALANG99_PRIV_div_129_43() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_129_3() ~, (METALANG99_just(v(43))) #define METALANG99_PRIV_div_129_129() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_130_1() ~, (METALANG99_just(v(130))) #define METALANG99_PRIV_div_130_65() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_130_26() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_130_13() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_130_10() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_130_5() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_130_2() ~, (METALANG99_just(v(65))) #define METALANG99_PRIV_div_130_130() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_131_1() ~, (METALANG99_just(v(131))) #define METALANG99_PRIV_div_131_131() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_132_1() ~, (METALANG99_just(v(132))) #define METALANG99_PRIV_div_132_66() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_132_44() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_132_33() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_132_22() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_132_12() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_132_11() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_132_6() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_132_4() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_132_3() ~, (METALANG99_just(v(44))) #define METALANG99_PRIV_div_132_2() ~, (METALANG99_just(v(66))) #define METALANG99_PRIV_div_132_132() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_133_1() ~, (METALANG99_just(v(133))) #define METALANG99_PRIV_div_133_19() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_133_7() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_133_133() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_134_1() ~, (METALANG99_just(v(134))) #define METALANG99_PRIV_div_134_67() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_134_2() ~, (METALANG99_just(v(67))) #define METALANG99_PRIV_div_134_134() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_135_1() ~, (METALANG99_just(v(135))) #define METALANG99_PRIV_div_135_45() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_135_27() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_135_15() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_135_9() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_135_5() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_135_3() ~, (METALANG99_just(v(45))) #define METALANG99_PRIV_div_135_135() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_136_1() ~, (METALANG99_just(v(136))) #define METALANG99_PRIV_div_136_68() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_136_34() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_136_17() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_136_8() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_136_4() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_136_2() ~, (METALANG99_just(v(68))) #define METALANG99_PRIV_div_136_136() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_137_1() ~, (METALANG99_just(v(137))) #define METALANG99_PRIV_div_137_137() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_138_1() ~, (METALANG99_just(v(138))) #define METALANG99_PRIV_div_138_69() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_138_46() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_138_23() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_138_6() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_138_3() ~, (METALANG99_just(v(46))) #define METALANG99_PRIV_div_138_2() ~, (METALANG99_just(v(69))) #define METALANG99_PRIV_div_138_138() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_139_1() ~, (METALANG99_just(v(139))) #define METALANG99_PRIV_div_139_139() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_140_1() ~, (METALANG99_just(v(140))) #define METALANG99_PRIV_div_140_70() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_140_35() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_140_28() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_140_20() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_140_14() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_140_10() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_140_7() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_140_5() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_140_4() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_140_2() ~, (METALANG99_just(v(70))) #define METALANG99_PRIV_div_140_140() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_141_1() ~, (METALANG99_just(v(141))) #define METALANG99_PRIV_div_141_47() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_141_3() ~, (METALANG99_just(v(47))) #define METALANG99_PRIV_div_141_141() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_142_1() ~, (METALANG99_just(v(142))) #define METALANG99_PRIV_div_142_71() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_142_2() ~, (METALANG99_just(v(71))) #define METALANG99_PRIV_div_142_142() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_143_1() ~, (METALANG99_just(v(143))) #define METALANG99_PRIV_div_143_13() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_143_11() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_143_143() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_144_1() ~, (METALANG99_just(v(144))) #define METALANG99_PRIV_div_144_72() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_144_48() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_144_36() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_144_24() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_144_18() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_144_16() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_144_12() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_144_9() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_144_8() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_144_6() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_144_4() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_144_3() ~, (METALANG99_just(v(48))) #define METALANG99_PRIV_div_144_2() ~, (METALANG99_just(v(72))) #define METALANG99_PRIV_div_144_144() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_145_1() ~, (METALANG99_just(v(145))) #define METALANG99_PRIV_div_145_29() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_145_5() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_145_145() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_146_1() ~, (METALANG99_just(v(146))) #define METALANG99_PRIV_div_146_73() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_146_2() ~, (METALANG99_just(v(73))) #define METALANG99_PRIV_div_146_146() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_147_1() ~, (METALANG99_just(v(147))) #define METALANG99_PRIV_div_147_49() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_147_21() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_147_7() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_147_3() ~, (METALANG99_just(v(49))) #define METALANG99_PRIV_div_147_147() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_148_1() ~, (METALANG99_just(v(148))) #define METALANG99_PRIV_div_148_74() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_148_37() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_148_4() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_148_2() ~, (METALANG99_just(v(74))) #define METALANG99_PRIV_div_148_148() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_149_1() ~, (METALANG99_just(v(149))) #define METALANG99_PRIV_div_149_149() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_150_1() ~, (METALANG99_just(v(150))) #define METALANG99_PRIV_div_150_75() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_150_50() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_150_30() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_150_25() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_150_15() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_150_10() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_150_6() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_150_5() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_150_3() ~, (METALANG99_just(v(50))) #define METALANG99_PRIV_div_150_2() ~, (METALANG99_just(v(75))) #define METALANG99_PRIV_div_150_150() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_151_1() ~, (METALANG99_just(v(151))) #define METALANG99_PRIV_div_151_151() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_152_1() ~, (METALANG99_just(v(152))) #define METALANG99_PRIV_div_152_76() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_152_38() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_152_19() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_152_8() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_152_4() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_152_2() ~, (METALANG99_just(v(76))) #define METALANG99_PRIV_div_152_152() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_153_1() ~, (METALANG99_just(v(153))) #define METALANG99_PRIV_div_153_51() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_153_17() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_153_9() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_153_3() ~, (METALANG99_just(v(51))) #define METALANG99_PRIV_div_153_153() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_154_1() ~, (METALANG99_just(v(154))) #define METALANG99_PRIV_div_154_77() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_154_22() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_154_14() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_154_11() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_154_7() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_154_2() ~, (METALANG99_just(v(77))) #define METALANG99_PRIV_div_154_154() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_155_1() ~, (METALANG99_just(v(155))) #define METALANG99_PRIV_div_155_31() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_155_5() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_155_155() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_156_1() ~, (METALANG99_just(v(156))) #define METALANG99_PRIV_div_156_78() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_156_52() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_156_39() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_156_26() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_156_13() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_156_12() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_156_6() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_156_4() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_156_3() ~, (METALANG99_just(v(52))) #define METALANG99_PRIV_div_156_2() ~, (METALANG99_just(v(78))) #define METALANG99_PRIV_div_156_156() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_157_1() ~, (METALANG99_just(v(157))) #define METALANG99_PRIV_div_157_157() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_158_1() ~, (METALANG99_just(v(158))) #define METALANG99_PRIV_div_158_79() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_158_2() ~, (METALANG99_just(v(79))) #define METALANG99_PRIV_div_158_158() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_159_1() ~, (METALANG99_just(v(159))) #define METALANG99_PRIV_div_159_53() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_159_3() ~, (METALANG99_just(v(53))) #define METALANG99_PRIV_div_159_159() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_160_1() ~, (METALANG99_just(v(160))) #define METALANG99_PRIV_div_160_80() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_160_40() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_160_32() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_160_20() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_160_16() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_160_10() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_160_8() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_160_5() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_160_4() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_160_2() ~, (METALANG99_just(v(80))) #define METALANG99_PRIV_div_160_160() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_161_1() ~, (METALANG99_just(v(161))) #define METALANG99_PRIV_div_161_23() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_161_7() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_161_161() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_162_1() ~, (METALANG99_just(v(162))) #define METALANG99_PRIV_div_162_81() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_162_54() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_162_27() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_162_18() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_162_9() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_162_6() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_162_3() ~, (METALANG99_just(v(54))) #define METALANG99_PRIV_div_162_2() ~, (METALANG99_just(v(81))) #define METALANG99_PRIV_div_162_162() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_163_1() ~, (METALANG99_just(v(163))) #define METALANG99_PRIV_div_163_163() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_164_1() ~, (METALANG99_just(v(164))) #define METALANG99_PRIV_div_164_82() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_164_41() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_164_4() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_164_2() ~, (METALANG99_just(v(82))) #define METALANG99_PRIV_div_164_164() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_165_1() ~, (METALANG99_just(v(165))) #define METALANG99_PRIV_div_165_55() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_165_33() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_165_15() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_165_11() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_165_5() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_165_3() ~, (METALANG99_just(v(55))) #define METALANG99_PRIV_div_165_165() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_166_1() ~, (METALANG99_just(v(166))) #define METALANG99_PRIV_div_166_83() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_166_2() ~, (METALANG99_just(v(83))) #define METALANG99_PRIV_div_166_166() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_167_1() ~, (METALANG99_just(v(167))) #define METALANG99_PRIV_div_167_167() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_168_1() ~, (METALANG99_just(v(168))) #define METALANG99_PRIV_div_168_84() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_168_56() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_168_42() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_168_28() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_168_24() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_168_21() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_168_14() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_168_12() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_168_8() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_168_7() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_168_6() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_168_4() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_168_3() ~, (METALANG99_just(v(56))) #define METALANG99_PRIV_div_168_2() ~, (METALANG99_just(v(84))) #define METALANG99_PRIV_div_168_168() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_169_1() ~, (METALANG99_just(v(169))) #define METALANG99_PRIV_div_169_13() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_169_169() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_170_1() ~, (METALANG99_just(v(170))) #define METALANG99_PRIV_div_170_85() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_170_34() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_170_17() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_170_10() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_170_5() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_170_2() ~, (METALANG99_just(v(85))) #define METALANG99_PRIV_div_170_170() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_171_1() ~, (METALANG99_just(v(171))) #define METALANG99_PRIV_div_171_57() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_171_19() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_171_9() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_171_3() ~, (METALANG99_just(v(57))) #define METALANG99_PRIV_div_171_171() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_172_1() ~, (METALANG99_just(v(172))) #define METALANG99_PRIV_div_172_86() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_172_43() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_172_4() ~, (METALANG99_just(v(43))) #define METALANG99_PRIV_div_172_2() ~, (METALANG99_just(v(86))) #define METALANG99_PRIV_div_172_172() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_173_1() ~, (METALANG99_just(v(173))) #define METALANG99_PRIV_div_173_173() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_174_1() ~, (METALANG99_just(v(174))) #define METALANG99_PRIV_div_174_87() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_174_58() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_174_29() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_174_6() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_174_3() ~, (METALANG99_just(v(58))) #define METALANG99_PRIV_div_174_2() ~, (METALANG99_just(v(87))) #define METALANG99_PRIV_div_174_174() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_175_1() ~, (METALANG99_just(v(175))) #define METALANG99_PRIV_div_175_35() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_175_25() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_175_7() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_175_5() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_175_175() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_176_1() ~, (METALANG99_just(v(176))) #define METALANG99_PRIV_div_176_88() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_176_44() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_176_22() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_176_16() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_176_11() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_176_8() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_176_4() ~, (METALANG99_just(v(44))) #define METALANG99_PRIV_div_176_2() ~, (METALANG99_just(v(88))) #define METALANG99_PRIV_div_176_176() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_177_1() ~, (METALANG99_just(v(177))) #define METALANG99_PRIV_div_177_59() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_177_3() ~, (METALANG99_just(v(59))) #define METALANG99_PRIV_div_177_177() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_178_1() ~, (METALANG99_just(v(178))) #define METALANG99_PRIV_div_178_89() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_178_2() ~, (METALANG99_just(v(89))) #define METALANG99_PRIV_div_178_178() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_179_1() ~, (METALANG99_just(v(179))) #define METALANG99_PRIV_div_179_179() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_180_1() ~, (METALANG99_just(v(180))) #define METALANG99_PRIV_div_180_90() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_180_60() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_180_45() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_180_36() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_180_30() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_180_20() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_180_18() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_180_15() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_180_12() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_180_10() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_180_9() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_180_6() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_180_5() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_180_4() ~, (METALANG99_just(v(45))) #define METALANG99_PRIV_div_180_3() ~, (METALANG99_just(v(60))) #define METALANG99_PRIV_div_180_2() ~, (METALANG99_just(v(90))) #define METALANG99_PRIV_div_180_180() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_181_1() ~, (METALANG99_just(v(181))) #define METALANG99_PRIV_div_181_181() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_182_1() ~, (METALANG99_just(v(182))) #define METALANG99_PRIV_div_182_91() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_182_26() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_182_14() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_182_13() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_182_7() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_182_2() ~, (METALANG99_just(v(91))) #define METALANG99_PRIV_div_182_182() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_183_1() ~, (METALANG99_just(v(183))) #define METALANG99_PRIV_div_183_61() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_183_3() ~, (METALANG99_just(v(61))) #define METALANG99_PRIV_div_183_183() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_184_1() ~, (METALANG99_just(v(184))) #define METALANG99_PRIV_div_184_92() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_184_46() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_184_23() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_184_8() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_184_4() ~, (METALANG99_just(v(46))) #define METALANG99_PRIV_div_184_2() ~, (METALANG99_just(v(92))) #define METALANG99_PRIV_div_184_184() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_185_1() ~, (METALANG99_just(v(185))) #define METALANG99_PRIV_div_185_37() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_185_5() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_185_185() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_186_1() ~, (METALANG99_just(v(186))) #define METALANG99_PRIV_div_186_93() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_186_62() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_186_31() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_186_6() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_186_3() ~, (METALANG99_just(v(62))) #define METALANG99_PRIV_div_186_2() ~, (METALANG99_just(v(93))) #define METALANG99_PRIV_div_186_186() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_187_1() ~, (METALANG99_just(v(187))) #define METALANG99_PRIV_div_187_17() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_187_11() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_187_187() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_188_1() ~, (METALANG99_just(v(188))) #define METALANG99_PRIV_div_188_94() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_188_47() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_188_4() ~, (METALANG99_just(v(47))) #define METALANG99_PRIV_div_188_2() ~, (METALANG99_just(v(94))) #define METALANG99_PRIV_div_188_188() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_189_1() ~, (METALANG99_just(v(189))) #define METALANG99_PRIV_div_189_63() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_189_27() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_189_21() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_189_9() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_189_7() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_189_3() ~, (METALANG99_just(v(63))) #define METALANG99_PRIV_div_189_189() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_190_1() ~, (METALANG99_just(v(190))) #define METALANG99_PRIV_div_190_95() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_190_38() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_190_19() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_190_10() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_190_5() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_190_2() ~, (METALANG99_just(v(95))) #define METALANG99_PRIV_div_190_190() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_191_1() ~, (METALANG99_just(v(191))) #define METALANG99_PRIV_div_191_191() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_192_1() ~, (METALANG99_just(v(192))) #define METALANG99_PRIV_div_192_96() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_192_64() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_192_48() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_192_32() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_192_24() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_192_16() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_192_12() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_192_8() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_192_6() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_192_4() ~, (METALANG99_just(v(48))) #define METALANG99_PRIV_div_192_3() ~, (METALANG99_just(v(64))) #define METALANG99_PRIV_div_192_2() ~, (METALANG99_just(v(96))) #define METALANG99_PRIV_div_192_192() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_193_1() ~, (METALANG99_just(v(193))) #define METALANG99_PRIV_div_193_193() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_194_1() ~, (METALANG99_just(v(194))) #define METALANG99_PRIV_div_194_97() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_194_2() ~, (METALANG99_just(v(97))) #define METALANG99_PRIV_div_194_194() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_195_1() ~, (METALANG99_just(v(195))) #define METALANG99_PRIV_div_195_65() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_195_39() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_195_15() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_195_13() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_195_5() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_195_3() ~, (METALANG99_just(v(65))) #define METALANG99_PRIV_div_195_195() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_196_1() ~, (METALANG99_just(v(196))) #define METALANG99_PRIV_div_196_98() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_196_49() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_196_28() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_196_14() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_196_7() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_196_4() ~, (METALANG99_just(v(49))) #define METALANG99_PRIV_div_196_2() ~, (METALANG99_just(v(98))) #define METALANG99_PRIV_div_196_196() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_197_1() ~, (METALANG99_just(v(197))) #define METALANG99_PRIV_div_197_197() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_198_1() ~, (METALANG99_just(v(198))) #define METALANG99_PRIV_div_198_99() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_198_66() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_198_33() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_198_22() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_198_18() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_198_11() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_198_9() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_198_6() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_198_3() ~, (METALANG99_just(v(66))) #define METALANG99_PRIV_div_198_2() ~, (METALANG99_just(v(99))) #define METALANG99_PRIV_div_198_198() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_199_1() ~, (METALANG99_just(v(199))) #define METALANG99_PRIV_div_199_199() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_200_1() ~, (METALANG99_just(v(200))) #define METALANG99_PRIV_div_200_100() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_200_50() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_200_40() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_200_25() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_200_20() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_200_10() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_200_8() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_200_5() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_200_4() ~, (METALANG99_just(v(50))) #define METALANG99_PRIV_div_200_2() ~, (METALANG99_just(v(100))) #define METALANG99_PRIV_div_200_200() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_201_1() ~, (METALANG99_just(v(201))) #define METALANG99_PRIV_div_201_67() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_201_3() ~, (METALANG99_just(v(67))) #define METALANG99_PRIV_div_201_201() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_202_1() ~, (METALANG99_just(v(202))) #define METALANG99_PRIV_div_202_101() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_202_2() ~, (METALANG99_just(v(101))) #define METALANG99_PRIV_div_202_202() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_203_1() ~, (METALANG99_just(v(203))) #define METALANG99_PRIV_div_203_29() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_203_7() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_203_203() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_204_1() ~, (METALANG99_just(v(204))) #define METALANG99_PRIV_div_204_102() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_204_68() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_204_51() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_204_34() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_204_17() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_204_12() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_204_6() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_204_4() ~, (METALANG99_just(v(51))) #define METALANG99_PRIV_div_204_3() ~, (METALANG99_just(v(68))) #define METALANG99_PRIV_div_204_2() ~, (METALANG99_just(v(102))) #define METALANG99_PRIV_div_204_204() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_205_1() ~, (METALANG99_just(v(205))) #define METALANG99_PRIV_div_205_41() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_205_5() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_205_205() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_206_1() ~, (METALANG99_just(v(206))) #define METALANG99_PRIV_div_206_103() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_206_2() ~, (METALANG99_just(v(103))) #define METALANG99_PRIV_div_206_206() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_207_1() ~, (METALANG99_just(v(207))) #define METALANG99_PRIV_div_207_69() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_207_23() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_207_9() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_207_3() ~, (METALANG99_just(v(69))) #define METALANG99_PRIV_div_207_207() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_208_1() ~, (METALANG99_just(v(208))) #define METALANG99_PRIV_div_208_104() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_208_52() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_208_26() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_208_16() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_208_13() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_208_8() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_208_4() ~, (METALANG99_just(v(52))) #define METALANG99_PRIV_div_208_2() ~, (METALANG99_just(v(104))) #define METALANG99_PRIV_div_208_208() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_209_1() ~, (METALANG99_just(v(209))) #define METALANG99_PRIV_div_209_19() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_209_11() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_209_209() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_210_1() ~, (METALANG99_just(v(210))) #define METALANG99_PRIV_div_210_105() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_210_70() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_210_42() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_210_35() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_210_30() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_210_21() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_210_15() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_210_14() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_210_10() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_210_7() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_210_6() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_210_5() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_210_3() ~, (METALANG99_just(v(70))) #define METALANG99_PRIV_div_210_2() ~, (METALANG99_just(v(105))) #define METALANG99_PRIV_div_210_210() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_211_1() ~, (METALANG99_just(v(211))) #define METALANG99_PRIV_div_211_211() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_212_1() ~, (METALANG99_just(v(212))) #define METALANG99_PRIV_div_212_106() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_212_53() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_212_4() ~, (METALANG99_just(v(53))) #define METALANG99_PRIV_div_212_2() ~, (METALANG99_just(v(106))) #define METALANG99_PRIV_div_212_212() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_213_1() ~, (METALANG99_just(v(213))) #define METALANG99_PRIV_div_213_71() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_213_3() ~, (METALANG99_just(v(71))) #define METALANG99_PRIV_div_213_213() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_214_1() ~, (METALANG99_just(v(214))) #define METALANG99_PRIV_div_214_107() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_214_2() ~, (METALANG99_just(v(107))) #define METALANG99_PRIV_div_214_214() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_215_1() ~, (METALANG99_just(v(215))) #define METALANG99_PRIV_div_215_43() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_215_5() ~, (METALANG99_just(v(43))) #define METALANG99_PRIV_div_215_215() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_216_1() ~, (METALANG99_just(v(216))) #define METALANG99_PRIV_div_216_108() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_216_72() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_216_54() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_216_36() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_216_27() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_216_24() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_216_18() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_216_12() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_216_9() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_216_8() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_216_6() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_216_4() ~, (METALANG99_just(v(54))) #define METALANG99_PRIV_div_216_3() ~, (METALANG99_just(v(72))) #define METALANG99_PRIV_div_216_2() ~, (METALANG99_just(v(108))) #define METALANG99_PRIV_div_216_216() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_217_1() ~, (METALANG99_just(v(217))) #define METALANG99_PRIV_div_217_31() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_217_7() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_217_217() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_218_1() ~, (METALANG99_just(v(218))) #define METALANG99_PRIV_div_218_109() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_218_2() ~, (METALANG99_just(v(109))) #define METALANG99_PRIV_div_218_218() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_219_1() ~, (METALANG99_just(v(219))) #define METALANG99_PRIV_div_219_73() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_219_3() ~, (METALANG99_just(v(73))) #define METALANG99_PRIV_div_219_219() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_220_1() ~, (METALANG99_just(v(220))) #define METALANG99_PRIV_div_220_110() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_220_55() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_220_44() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_220_22() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_220_20() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_220_11() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_220_10() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_220_5() ~, (METALANG99_just(v(44))) #define METALANG99_PRIV_div_220_4() ~, (METALANG99_just(v(55))) #define METALANG99_PRIV_div_220_2() ~, (METALANG99_just(v(110))) #define METALANG99_PRIV_div_220_220() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_221_1() ~, (METALANG99_just(v(221))) #define METALANG99_PRIV_div_221_17() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_221_13() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_221_221() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_222_1() ~, (METALANG99_just(v(222))) #define METALANG99_PRIV_div_222_111() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_222_74() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_222_37() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_222_6() ~, (METALANG99_just(v(37))) #define METALANG99_PRIV_div_222_3() ~, (METALANG99_just(v(74))) #define METALANG99_PRIV_div_222_2() ~, (METALANG99_just(v(111))) #define METALANG99_PRIV_div_222_222() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_223_1() ~, (METALANG99_just(v(223))) #define METALANG99_PRIV_div_223_223() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_224_1() ~, (METALANG99_just(v(224))) #define METALANG99_PRIV_div_224_112() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_224_56() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_224_32() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_224_28() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_224_16() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_224_14() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_224_8() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_224_7() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_224_4() ~, (METALANG99_just(v(56))) #define METALANG99_PRIV_div_224_2() ~, (METALANG99_just(v(112))) #define METALANG99_PRIV_div_224_224() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_225_1() ~, (METALANG99_just(v(225))) #define METALANG99_PRIV_div_225_75() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_225_45() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_225_25() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_225_15() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_225_9() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_225_5() ~, (METALANG99_just(v(45))) #define METALANG99_PRIV_div_225_3() ~, (METALANG99_just(v(75))) #define METALANG99_PRIV_div_225_225() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_226_1() ~, (METALANG99_just(v(226))) #define METALANG99_PRIV_div_226_113() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_226_2() ~, (METALANG99_just(v(113))) #define METALANG99_PRIV_div_226_226() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_227_1() ~, (METALANG99_just(v(227))) #define METALANG99_PRIV_div_227_227() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_228_1() ~, (METALANG99_just(v(228))) #define METALANG99_PRIV_div_228_114() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_228_76() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_228_57() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_228_38() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_228_19() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_228_12() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_228_6() ~, (METALANG99_just(v(38))) #define METALANG99_PRIV_div_228_4() ~, (METALANG99_just(v(57))) #define METALANG99_PRIV_div_228_3() ~, (METALANG99_just(v(76))) #define METALANG99_PRIV_div_228_2() ~, (METALANG99_just(v(114))) #define METALANG99_PRIV_div_228_228() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_229_1() ~, (METALANG99_just(v(229))) #define METALANG99_PRIV_div_229_229() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_230_1() ~, (METALANG99_just(v(230))) #define METALANG99_PRIV_div_230_115() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_230_46() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_230_23() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_230_10() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_230_5() ~, (METALANG99_just(v(46))) #define METALANG99_PRIV_div_230_2() ~, (METALANG99_just(v(115))) #define METALANG99_PRIV_div_230_230() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_231_1() ~, (METALANG99_just(v(231))) #define METALANG99_PRIV_div_231_77() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_231_33() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_231_21() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_231_11() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_231_7() ~, (METALANG99_just(v(33))) #define METALANG99_PRIV_div_231_3() ~, (METALANG99_just(v(77))) #define METALANG99_PRIV_div_231_231() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_232_1() ~, (METALANG99_just(v(232))) #define METALANG99_PRIV_div_232_116() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_232_58() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_232_29() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_232_8() ~, (METALANG99_just(v(29))) #define METALANG99_PRIV_div_232_4() ~, (METALANG99_just(v(58))) #define METALANG99_PRIV_div_232_2() ~, (METALANG99_just(v(116))) #define METALANG99_PRIV_div_232_232() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_233_1() ~, (METALANG99_just(v(233))) #define METALANG99_PRIV_div_233_233() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_234_1() ~, (METALANG99_just(v(234))) #define METALANG99_PRIV_div_234_117() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_234_78() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_234_39() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_234_26() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_234_18() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_234_13() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_234_9() ~, (METALANG99_just(v(26))) #define METALANG99_PRIV_div_234_6() ~, (METALANG99_just(v(39))) #define METALANG99_PRIV_div_234_3() ~, (METALANG99_just(v(78))) #define METALANG99_PRIV_div_234_2() ~, (METALANG99_just(v(117))) #define METALANG99_PRIV_div_234_234() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_235_1() ~, (METALANG99_just(v(235))) #define METALANG99_PRIV_div_235_47() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_235_5() ~, (METALANG99_just(v(47))) #define METALANG99_PRIV_div_235_235() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_236_1() ~, (METALANG99_just(v(236))) #define METALANG99_PRIV_div_236_118() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_236_59() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_236_4() ~, (METALANG99_just(v(59))) #define METALANG99_PRIV_div_236_2() ~, (METALANG99_just(v(118))) #define METALANG99_PRIV_div_236_236() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_237_1() ~, (METALANG99_just(v(237))) #define METALANG99_PRIV_div_237_79() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_237_3() ~, (METALANG99_just(v(79))) #define METALANG99_PRIV_div_237_237() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_238_1() ~, (METALANG99_just(v(238))) #define METALANG99_PRIV_div_238_119() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_238_34() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_238_17() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_238_14() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_238_7() ~, (METALANG99_just(v(34))) #define METALANG99_PRIV_div_238_2() ~, (METALANG99_just(v(119))) #define METALANG99_PRIV_div_238_238() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_239_1() ~, (METALANG99_just(v(239))) #define METALANG99_PRIV_div_239_239() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_240_1() ~, (METALANG99_just(v(240))) #define METALANG99_PRIV_div_240_120() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_240_80() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_240_60() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_240_48() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_240_40() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_240_30() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_240_24() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_240_20() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_240_16() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_240_15() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_240_12() ~, (METALANG99_just(v(20))) #define METALANG99_PRIV_div_240_10() ~, (METALANG99_just(v(24))) #define METALANG99_PRIV_div_240_8() ~, (METALANG99_just(v(30))) #define METALANG99_PRIV_div_240_6() ~, (METALANG99_just(v(40))) #define METALANG99_PRIV_div_240_5() ~, (METALANG99_just(v(48))) #define METALANG99_PRIV_div_240_4() ~, (METALANG99_just(v(60))) #define METALANG99_PRIV_div_240_3() ~, (METALANG99_just(v(80))) #define METALANG99_PRIV_div_240_2() ~, (METALANG99_just(v(120))) #define METALANG99_PRIV_div_240_240() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_241_1() ~, (METALANG99_just(v(241))) #define METALANG99_PRIV_div_241_241() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_242_1() ~, (METALANG99_just(v(242))) #define METALANG99_PRIV_div_242_121() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_242_22() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_242_11() ~, (METALANG99_just(v(22))) #define METALANG99_PRIV_div_242_2() ~, (METALANG99_just(v(121))) #define METALANG99_PRIV_div_242_242() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_243_1() ~, (METALANG99_just(v(243))) #define METALANG99_PRIV_div_243_81() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_243_27() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_243_9() ~, (METALANG99_just(v(27))) #define METALANG99_PRIV_div_243_3() ~, (METALANG99_just(v(81))) #define METALANG99_PRIV_div_243_243() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_244_1() ~, (METALANG99_just(v(244))) #define METALANG99_PRIV_div_244_122() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_244_61() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_244_4() ~, (METALANG99_just(v(61))) #define METALANG99_PRIV_div_244_2() ~, (METALANG99_just(v(122))) #define METALANG99_PRIV_div_244_244() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_245_1() ~, (METALANG99_just(v(245))) #define METALANG99_PRIV_div_245_49() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_245_35() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_245_7() ~, (METALANG99_just(v(35))) #define METALANG99_PRIV_div_245_5() ~, (METALANG99_just(v(49))) #define METALANG99_PRIV_div_245_245() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_246_1() ~, (METALANG99_just(v(246))) #define METALANG99_PRIV_div_246_123() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_246_82() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_246_41() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_246_6() ~, (METALANG99_just(v(41))) #define METALANG99_PRIV_div_246_3() ~, (METALANG99_just(v(82))) #define METALANG99_PRIV_div_246_2() ~, (METALANG99_just(v(123))) #define METALANG99_PRIV_div_246_246() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_247_1() ~, (METALANG99_just(v(247))) #define METALANG99_PRIV_div_247_19() ~, (METALANG99_just(v(13))) #define METALANG99_PRIV_div_247_13() ~, (METALANG99_just(v(19))) #define METALANG99_PRIV_div_247_247() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_248_1() ~, (METALANG99_just(v(248))) #define METALANG99_PRIV_div_248_124() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_248_62() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_248_31() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_248_8() ~, (METALANG99_just(v(31))) #define METALANG99_PRIV_div_248_4() ~, (METALANG99_just(v(62))) #define METALANG99_PRIV_div_248_2() ~, (METALANG99_just(v(124))) #define METALANG99_PRIV_div_248_248() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_249_1() ~, (METALANG99_just(v(249))) #define METALANG99_PRIV_div_249_83() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_249_3() ~, (METALANG99_just(v(83))) #define METALANG99_PRIV_div_249_249() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_250_1() ~, (METALANG99_just(v(250))) #define METALANG99_PRIV_div_250_125() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_250_50() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_250_25() ~, (METALANG99_just(v(10))) #define METALANG99_PRIV_div_250_10() ~, (METALANG99_just(v(25))) #define METALANG99_PRIV_div_250_5() ~, (METALANG99_just(v(50))) #define METALANG99_PRIV_div_250_2() ~, (METALANG99_just(v(125))) #define METALANG99_PRIV_div_250_250() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_251_1() ~, (METALANG99_just(v(251))) #define METALANG99_PRIV_div_251_251() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_252_1() ~, (METALANG99_just(v(252))) #define METALANG99_PRIV_div_252_126() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_252_84() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_252_63() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_252_42() ~, (METALANG99_just(v(6))) #define METALANG99_PRIV_div_252_36() ~, (METALANG99_just(v(7))) #define METALANG99_PRIV_div_252_28() ~, (METALANG99_just(v(9))) #define METALANG99_PRIV_div_252_21() ~, (METALANG99_just(v(12))) #define METALANG99_PRIV_div_252_18() ~, (METALANG99_just(v(14))) #define METALANG99_PRIV_div_252_14() ~, (METALANG99_just(v(18))) #define METALANG99_PRIV_div_252_12() ~, (METALANG99_just(v(21))) #define METALANG99_PRIV_div_252_9() ~, (METALANG99_just(v(28))) #define METALANG99_PRIV_div_252_7() ~, (METALANG99_just(v(36))) #define METALANG99_PRIV_div_252_6() ~, (METALANG99_just(v(42))) #define METALANG99_PRIV_div_252_4() ~, (METALANG99_just(v(63))) #define METALANG99_PRIV_div_252_3() ~, (METALANG99_just(v(84))) #define METALANG99_PRIV_div_252_2() ~, (METALANG99_just(v(126))) #define METALANG99_PRIV_div_252_252() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_253_1() ~, (METALANG99_just(v(253))) #define METALANG99_PRIV_div_253_23() ~, (METALANG99_just(v(11))) #define METALANG99_PRIV_div_253_11() ~, (METALANG99_just(v(23))) #define METALANG99_PRIV_div_253_253() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_254_1() ~, (METALANG99_just(v(254))) #define METALANG99_PRIV_div_254_127() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_254_2() ~, (METALANG99_just(v(127))) #define METALANG99_PRIV_div_254_254() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_255_1() ~, (METALANG99_just(v(255))) #define METALANG99_PRIV_div_255_85() ~, (METALANG99_just(v(3))) #define METALANG99_PRIV_div_255_51() ~, (METALANG99_just(v(5))) #define METALANG99_PRIV_div_255_17() ~, (METALANG99_just(v(15))) #define METALANG99_PRIV_div_255_15() ~, (METALANG99_just(v(17))) #define METALANG99_PRIV_div_255_5() ~, (METALANG99_just(v(51))) #define METALANG99_PRIV_div_255_3() ~, (METALANG99_just(v(85))) #define METALANG99_PRIV_div_255_255() ~, (METALANG99_just(v(1))) #define METALANG99_PRIV_div_256_1() ~, (METALANG99_just(v(256))) #define METALANG99_PRIV_div_256_128() ~, (METALANG99_just(v(2))) #define METALANG99_PRIV_div_256_64() ~, (METALANG99_just(v(4))) #define METALANG99_PRIV_div_256_32() ~, (METALANG99_just(v(8))) #define METALANG99_PRIV_div_256_16() ~, (METALANG99_just(v(16))) #define METALANG99_PRIV_div_256_8() ~, (METALANG99_just(v(32))) #define METALANG99_PRIV_div_256_4() ~, (METALANG99_just(v(64))) #define METALANG99_PRIV_div_256_2() ~, (METALANG99_just(v(128))) #define METALANG99_PRIV_div_256_256() ~, (METALANG99_just(v(1))) #endif // METALANG99_UINT_DIV_H hkl-5.1.7/third-party/metalang99/uint/eq.h0000664000175000017500000002757414677222567017303 0ustar00piccapicca#ifndef METALANG99_UINT_EQ_H #define METALANG99_UINT_EQ_H #include #define METALANG99_PRIV_uintEq(x, y) METALANG99_PRIV_uintEq_AUX(x, y) #define METALANG99_PRIV_uintEq_AUX(x, y) \ METALANG99_PRIV_VARIADICS_SND(METALANG99_PRIV_uintEq_##x##_##y(), 0) #define METALANG99_PRIV_uintEq_0_0() ~, 1 #define METALANG99_PRIV_uintEq_1_1() ~, 1 #define METALANG99_PRIV_uintEq_2_2() ~, 1 #define METALANG99_PRIV_uintEq_3_3() ~, 1 #define METALANG99_PRIV_uintEq_4_4() ~, 1 #define METALANG99_PRIV_uintEq_5_5() ~, 1 #define METALANG99_PRIV_uintEq_6_6() ~, 1 #define METALANG99_PRIV_uintEq_7_7() ~, 1 #define METALANG99_PRIV_uintEq_8_8() ~, 1 #define METALANG99_PRIV_uintEq_9_9() ~, 1 #define METALANG99_PRIV_uintEq_10_10() ~, 1 #define METALANG99_PRIV_uintEq_11_11() ~, 1 #define METALANG99_PRIV_uintEq_12_12() ~, 1 #define METALANG99_PRIV_uintEq_13_13() ~, 1 #define METALANG99_PRIV_uintEq_14_14() ~, 1 #define METALANG99_PRIV_uintEq_15_15() ~, 1 #define METALANG99_PRIV_uintEq_16_16() ~, 1 #define METALANG99_PRIV_uintEq_17_17() ~, 1 #define METALANG99_PRIV_uintEq_18_18() ~, 1 #define METALANG99_PRIV_uintEq_19_19() ~, 1 #define METALANG99_PRIV_uintEq_20_20() ~, 1 #define METALANG99_PRIV_uintEq_21_21() ~, 1 #define METALANG99_PRIV_uintEq_22_22() ~, 1 #define METALANG99_PRIV_uintEq_23_23() ~, 1 #define METALANG99_PRIV_uintEq_24_24() ~, 1 #define METALANG99_PRIV_uintEq_25_25() ~, 1 #define METALANG99_PRIV_uintEq_26_26() ~, 1 #define METALANG99_PRIV_uintEq_27_27() ~, 1 #define METALANG99_PRIV_uintEq_28_28() ~, 1 #define METALANG99_PRIV_uintEq_29_29() ~, 1 #define METALANG99_PRIV_uintEq_30_30() ~, 1 #define METALANG99_PRIV_uintEq_31_31() ~, 1 #define METALANG99_PRIV_uintEq_32_32() ~, 1 #define METALANG99_PRIV_uintEq_33_33() ~, 1 #define METALANG99_PRIV_uintEq_34_34() ~, 1 #define METALANG99_PRIV_uintEq_35_35() ~, 1 #define METALANG99_PRIV_uintEq_36_36() ~, 1 #define METALANG99_PRIV_uintEq_37_37() ~, 1 #define METALANG99_PRIV_uintEq_38_38() ~, 1 #define METALANG99_PRIV_uintEq_39_39() ~, 1 #define METALANG99_PRIV_uintEq_40_40() ~, 1 #define METALANG99_PRIV_uintEq_41_41() ~, 1 #define METALANG99_PRIV_uintEq_42_42() ~, 1 #define METALANG99_PRIV_uintEq_43_43() ~, 1 #define METALANG99_PRIV_uintEq_44_44() ~, 1 #define METALANG99_PRIV_uintEq_45_45() ~, 1 #define METALANG99_PRIV_uintEq_46_46() ~, 1 #define METALANG99_PRIV_uintEq_47_47() ~, 1 #define METALANG99_PRIV_uintEq_48_48() ~, 1 #define METALANG99_PRIV_uintEq_49_49() ~, 1 #define METALANG99_PRIV_uintEq_50_50() ~, 1 #define METALANG99_PRIV_uintEq_51_51() ~, 1 #define METALANG99_PRIV_uintEq_52_52() ~, 1 #define METALANG99_PRIV_uintEq_53_53() ~, 1 #define METALANG99_PRIV_uintEq_54_54() ~, 1 #define METALANG99_PRIV_uintEq_55_55() ~, 1 #define METALANG99_PRIV_uintEq_56_56() ~, 1 #define METALANG99_PRIV_uintEq_57_57() ~, 1 #define METALANG99_PRIV_uintEq_58_58() ~, 1 #define METALANG99_PRIV_uintEq_59_59() ~, 1 #define METALANG99_PRIV_uintEq_60_60() ~, 1 #define METALANG99_PRIV_uintEq_61_61() ~, 1 #define METALANG99_PRIV_uintEq_62_62() ~, 1 #define METALANG99_PRIV_uintEq_63_63() ~, 1 #define METALANG99_PRIV_uintEq_64_64() ~, 1 #define METALANG99_PRIV_uintEq_65_65() ~, 1 #define METALANG99_PRIV_uintEq_66_66() ~, 1 #define METALANG99_PRIV_uintEq_67_67() ~, 1 #define METALANG99_PRIV_uintEq_68_68() ~, 1 #define METALANG99_PRIV_uintEq_69_69() ~, 1 #define METALANG99_PRIV_uintEq_70_70() ~, 1 #define METALANG99_PRIV_uintEq_71_71() ~, 1 #define METALANG99_PRIV_uintEq_72_72() ~, 1 #define METALANG99_PRIV_uintEq_73_73() ~, 1 #define METALANG99_PRIV_uintEq_74_74() ~, 1 #define METALANG99_PRIV_uintEq_75_75() ~, 1 #define METALANG99_PRIV_uintEq_76_76() ~, 1 #define METALANG99_PRIV_uintEq_77_77() ~, 1 #define METALANG99_PRIV_uintEq_78_78() ~, 1 #define METALANG99_PRIV_uintEq_79_79() ~, 1 #define METALANG99_PRIV_uintEq_80_80() ~, 1 #define METALANG99_PRIV_uintEq_81_81() ~, 1 #define METALANG99_PRIV_uintEq_82_82() ~, 1 #define METALANG99_PRIV_uintEq_83_83() ~, 1 #define METALANG99_PRIV_uintEq_84_84() ~, 1 #define METALANG99_PRIV_uintEq_85_85() ~, 1 #define METALANG99_PRIV_uintEq_86_86() ~, 1 #define METALANG99_PRIV_uintEq_87_87() ~, 1 #define METALANG99_PRIV_uintEq_88_88() ~, 1 #define METALANG99_PRIV_uintEq_89_89() ~, 1 #define METALANG99_PRIV_uintEq_90_90() ~, 1 #define METALANG99_PRIV_uintEq_91_91() ~, 1 #define METALANG99_PRIV_uintEq_92_92() ~, 1 #define METALANG99_PRIV_uintEq_93_93() ~, 1 #define METALANG99_PRIV_uintEq_94_94() ~, 1 #define METALANG99_PRIV_uintEq_95_95() ~, 1 #define METALANG99_PRIV_uintEq_96_96() ~, 1 #define METALANG99_PRIV_uintEq_97_97() ~, 1 #define METALANG99_PRIV_uintEq_98_98() ~, 1 #define METALANG99_PRIV_uintEq_99_99() ~, 1 #define METALANG99_PRIV_uintEq_100_100() ~, 1 #define METALANG99_PRIV_uintEq_101_101() ~, 1 #define METALANG99_PRIV_uintEq_102_102() ~, 1 #define METALANG99_PRIV_uintEq_103_103() ~, 1 #define METALANG99_PRIV_uintEq_104_104() ~, 1 #define METALANG99_PRIV_uintEq_105_105() ~, 1 #define METALANG99_PRIV_uintEq_106_106() ~, 1 #define METALANG99_PRIV_uintEq_107_107() ~, 1 #define METALANG99_PRIV_uintEq_108_108() ~, 1 #define METALANG99_PRIV_uintEq_109_109() ~, 1 #define METALANG99_PRIV_uintEq_110_110() ~, 1 #define METALANG99_PRIV_uintEq_111_111() ~, 1 #define METALANG99_PRIV_uintEq_112_112() ~, 1 #define METALANG99_PRIV_uintEq_113_113() ~, 1 #define METALANG99_PRIV_uintEq_114_114() ~, 1 #define METALANG99_PRIV_uintEq_115_115() ~, 1 #define METALANG99_PRIV_uintEq_116_116() ~, 1 #define METALANG99_PRIV_uintEq_117_117() ~, 1 #define METALANG99_PRIV_uintEq_118_118() ~, 1 #define METALANG99_PRIV_uintEq_119_119() ~, 1 #define METALANG99_PRIV_uintEq_120_120() ~, 1 #define METALANG99_PRIV_uintEq_121_121() ~, 1 #define METALANG99_PRIV_uintEq_122_122() ~, 1 #define METALANG99_PRIV_uintEq_123_123() ~, 1 #define METALANG99_PRIV_uintEq_124_124() ~, 1 #define METALANG99_PRIV_uintEq_125_125() ~, 1 #define METALANG99_PRIV_uintEq_126_126() ~, 1 #define METALANG99_PRIV_uintEq_127_127() ~, 1 #define METALANG99_PRIV_uintEq_128_128() ~, 1 #define METALANG99_PRIV_uintEq_129_129() ~, 1 #define METALANG99_PRIV_uintEq_130_130() ~, 1 #define METALANG99_PRIV_uintEq_131_131() ~, 1 #define METALANG99_PRIV_uintEq_132_132() ~, 1 #define METALANG99_PRIV_uintEq_133_133() ~, 1 #define METALANG99_PRIV_uintEq_134_134() ~, 1 #define METALANG99_PRIV_uintEq_135_135() ~, 1 #define METALANG99_PRIV_uintEq_136_136() ~, 1 #define METALANG99_PRIV_uintEq_137_137() ~, 1 #define METALANG99_PRIV_uintEq_138_138() ~, 1 #define METALANG99_PRIV_uintEq_139_139() ~, 1 #define METALANG99_PRIV_uintEq_140_140() ~, 1 #define METALANG99_PRIV_uintEq_141_141() ~, 1 #define METALANG99_PRIV_uintEq_142_142() ~, 1 #define METALANG99_PRIV_uintEq_143_143() ~, 1 #define METALANG99_PRIV_uintEq_144_144() ~, 1 #define METALANG99_PRIV_uintEq_145_145() ~, 1 #define METALANG99_PRIV_uintEq_146_146() ~, 1 #define METALANG99_PRIV_uintEq_147_147() ~, 1 #define METALANG99_PRIV_uintEq_148_148() ~, 1 #define METALANG99_PRIV_uintEq_149_149() ~, 1 #define METALANG99_PRIV_uintEq_150_150() ~, 1 #define METALANG99_PRIV_uintEq_151_151() ~, 1 #define METALANG99_PRIV_uintEq_152_152() ~, 1 #define METALANG99_PRIV_uintEq_153_153() ~, 1 #define METALANG99_PRIV_uintEq_154_154() ~, 1 #define METALANG99_PRIV_uintEq_155_155() ~, 1 #define METALANG99_PRIV_uintEq_156_156() ~, 1 #define METALANG99_PRIV_uintEq_157_157() ~, 1 #define METALANG99_PRIV_uintEq_158_158() ~, 1 #define METALANG99_PRIV_uintEq_159_159() ~, 1 #define METALANG99_PRIV_uintEq_160_160() ~, 1 #define METALANG99_PRIV_uintEq_161_161() ~, 1 #define METALANG99_PRIV_uintEq_162_162() ~, 1 #define METALANG99_PRIV_uintEq_163_163() ~, 1 #define METALANG99_PRIV_uintEq_164_164() ~, 1 #define METALANG99_PRIV_uintEq_165_165() ~, 1 #define METALANG99_PRIV_uintEq_166_166() ~, 1 #define METALANG99_PRIV_uintEq_167_167() ~, 1 #define METALANG99_PRIV_uintEq_168_168() ~, 1 #define METALANG99_PRIV_uintEq_169_169() ~, 1 #define METALANG99_PRIV_uintEq_170_170() ~, 1 #define METALANG99_PRIV_uintEq_171_171() ~, 1 #define METALANG99_PRIV_uintEq_172_172() ~, 1 #define METALANG99_PRIV_uintEq_173_173() ~, 1 #define METALANG99_PRIV_uintEq_174_174() ~, 1 #define METALANG99_PRIV_uintEq_175_175() ~, 1 #define METALANG99_PRIV_uintEq_176_176() ~, 1 #define METALANG99_PRIV_uintEq_177_177() ~, 1 #define METALANG99_PRIV_uintEq_178_178() ~, 1 #define METALANG99_PRIV_uintEq_179_179() ~, 1 #define METALANG99_PRIV_uintEq_180_180() ~, 1 #define METALANG99_PRIV_uintEq_181_181() ~, 1 #define METALANG99_PRIV_uintEq_182_182() ~, 1 #define METALANG99_PRIV_uintEq_183_183() ~, 1 #define METALANG99_PRIV_uintEq_184_184() ~, 1 #define METALANG99_PRIV_uintEq_185_185() ~, 1 #define METALANG99_PRIV_uintEq_186_186() ~, 1 #define METALANG99_PRIV_uintEq_187_187() ~, 1 #define METALANG99_PRIV_uintEq_188_188() ~, 1 #define METALANG99_PRIV_uintEq_189_189() ~, 1 #define METALANG99_PRIV_uintEq_190_190() ~, 1 #define METALANG99_PRIV_uintEq_191_191() ~, 1 #define METALANG99_PRIV_uintEq_192_192() ~, 1 #define METALANG99_PRIV_uintEq_193_193() ~, 1 #define METALANG99_PRIV_uintEq_194_194() ~, 1 #define METALANG99_PRIV_uintEq_195_195() ~, 1 #define METALANG99_PRIV_uintEq_196_196() ~, 1 #define METALANG99_PRIV_uintEq_197_197() ~, 1 #define METALANG99_PRIV_uintEq_198_198() ~, 1 #define METALANG99_PRIV_uintEq_199_199() ~, 1 #define METALANG99_PRIV_uintEq_200_200() ~, 1 #define METALANG99_PRIV_uintEq_201_201() ~, 1 #define METALANG99_PRIV_uintEq_202_202() ~, 1 #define METALANG99_PRIV_uintEq_203_203() ~, 1 #define METALANG99_PRIV_uintEq_204_204() ~, 1 #define METALANG99_PRIV_uintEq_205_205() ~, 1 #define METALANG99_PRIV_uintEq_206_206() ~, 1 #define METALANG99_PRIV_uintEq_207_207() ~, 1 #define METALANG99_PRIV_uintEq_208_208() ~, 1 #define METALANG99_PRIV_uintEq_209_209() ~, 1 #define METALANG99_PRIV_uintEq_210_210() ~, 1 #define METALANG99_PRIV_uintEq_211_211() ~, 1 #define METALANG99_PRIV_uintEq_212_212() ~, 1 #define METALANG99_PRIV_uintEq_213_213() ~, 1 #define METALANG99_PRIV_uintEq_214_214() ~, 1 #define METALANG99_PRIV_uintEq_215_215() ~, 1 #define METALANG99_PRIV_uintEq_216_216() ~, 1 #define METALANG99_PRIV_uintEq_217_217() ~, 1 #define METALANG99_PRIV_uintEq_218_218() ~, 1 #define METALANG99_PRIV_uintEq_219_219() ~, 1 #define METALANG99_PRIV_uintEq_220_220() ~, 1 #define METALANG99_PRIV_uintEq_221_221() ~, 1 #define METALANG99_PRIV_uintEq_222_222() ~, 1 #define METALANG99_PRIV_uintEq_223_223() ~, 1 #define METALANG99_PRIV_uintEq_224_224() ~, 1 #define METALANG99_PRIV_uintEq_225_225() ~, 1 #define METALANG99_PRIV_uintEq_226_226() ~, 1 #define METALANG99_PRIV_uintEq_227_227() ~, 1 #define METALANG99_PRIV_uintEq_228_228() ~, 1 #define METALANG99_PRIV_uintEq_229_229() ~, 1 #define METALANG99_PRIV_uintEq_230_230() ~, 1 #define METALANG99_PRIV_uintEq_231_231() ~, 1 #define METALANG99_PRIV_uintEq_232_232() ~, 1 #define METALANG99_PRIV_uintEq_233_233() ~, 1 #define METALANG99_PRIV_uintEq_234_234() ~, 1 #define METALANG99_PRIV_uintEq_235_235() ~, 1 #define METALANG99_PRIV_uintEq_236_236() ~, 1 #define METALANG99_PRIV_uintEq_237_237() ~, 1 #define METALANG99_PRIV_uintEq_238_238() ~, 1 #define METALANG99_PRIV_uintEq_239_239() ~, 1 #define METALANG99_PRIV_uintEq_240_240() ~, 1 #define METALANG99_PRIV_uintEq_241_241() ~, 1 #define METALANG99_PRIV_uintEq_242_242() ~, 1 #define METALANG99_PRIV_uintEq_243_243() ~, 1 #define METALANG99_PRIV_uintEq_244_244() ~, 1 #define METALANG99_PRIV_uintEq_245_245() ~, 1 #define METALANG99_PRIV_uintEq_246_246() ~, 1 #define METALANG99_PRIV_uintEq_247_247() ~, 1 #define METALANG99_PRIV_uintEq_248_248() ~, 1 #define METALANG99_PRIV_uintEq_249_249() ~, 1 #define METALANG99_PRIV_uintEq_250_250() ~, 1 #define METALANG99_PRIV_uintEq_251_251() ~, 1 #define METALANG99_PRIV_uintEq_252_252() ~, 1 #define METALANG99_PRIV_uintEq_253_253() ~, 1 #define METALANG99_PRIV_uintEq_254_254() ~, 1 #define METALANG99_PRIV_uintEq_255_255() ~, 1 #endif // METALANG99_UINT_EQ_H hkl-5.1.7/third-party/metalang99/eval.h0000664000175000017500000002070714677222567016635 0ustar00piccapicca/** * @file * The metaprogram evaluator. */ #ifndef METALANG99_EVAL_H #define METALANG99_EVAL_H #include #include #include #include #include #include /** * Evaluates a metaprogram. * * # Examples * * @code * #include * #include * * #define F_IMPL(x, y) v(x + y) * * M_eval(v(abc ~ 123), M_call(F, v(1, 2))) * @endcode */ #define METALANG99_eval(...) \ METALANG99_PRIV_REC_UNROLL(METALANG99_PRIV_EVAL_MATCH( \ METALANG99_PRIV_REC_STOP, \ (~), \ 0fappend, \ METALANG99_PRIV_EVAL_ACC(), \ __VA_ARGS__, \ (0end, ~), \ ~)) #ifndef DOXYGEN_IGNORE #define METALANG99_PRIV_REC_UNROLL(...) METALANG99_PRIV_REC_0(__VA_ARGS__) // Recursion hooks { #define METALANG99_PRIV_EVAL_MATCH_HOOK() METALANG99_PRIV_EVAL_MATCH #define METALANG99_PRIV_EVAL_0v_K_HOOK() METALANG99_PRIV_EVAL_0v_K #define METALANG99_PRIV_EVAL_0args_K_HOOK() METALANG99_PRIV_EVAL_0args_K #define METALANG99_PRIV_EVAL_0op_K_HOOK() METALANG99_PRIV_EVAL_0op_K #define METALANG99_PRIV_EVAL_0callTr_K_HOOK() METALANG99_PRIV_EVAL_0callTr_K // } #define METALANG99_PRIV_EVAL_MATCH(k, k_cx, folder, acc, head, ...) \ METALANG99_PRIV_CHECK_TERM(head, METALANG99_PRIV_TERM_MATCH) \ (head, METALANG99_PRIV_EVAL_)( \ k, \ k_cx, \ folder, \ acc, \ (__VA_ARGS__), \ METALANG99_PRIV_EVAL_TERM_DATA head) // Reduction rules { #define METALANG99_PRIV_EVAL_0v METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_EVAL_0v_K) #define METALANG99_PRIV_EVAL_0args METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_EVAL_0args_K) #define METALANG99_PRIV_EVAL_0op METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_EVAL_0op_K) #define METALANG99_PRIV_EVAL_0callTr METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_EVAL_0callTr_K) #define METALANG99_PRIV_EVAL_0fatal(...) METALANG99_PRIV_EVAL_0fatal_EXPANDED(__VA_ARGS__) // clang-format off #define METALANG99_PRIV_EVAL_0fatal_EXPANDED(_k, _k_cx, _folder, _acc, _tail, f, message) \ METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_REC_STOP)((~), !"Metalang99 error" (f): message) // clang-format on #define METALANG99_PRIV_EVAL_0abort(_k, k_cx, folder, acc, _tail, ...) \ METALANG99_PRIV_REC_CONTINUE(METALANG99_PRIV_EVAL_MATCH) \ (METALANG99_PRIV_REC_STOP, (~), 0fappend, METALANG99_PRIV_EVAL_ACC(), __VA_ARGS__, (0end, ~), ~) #define METALANG99_PRIV_EVAL_0end(k, k_cx, _folder, acc, _tail, _) \ METALANG99_PRIV_REC_CONTINUE(k) \ (METALANG99_PRIV_EXPAND k_cx, METALANG99_PRIV_EVAL_ACC_UNWRAP acc) // } (Reduction rules) // Continuations { #define METALANG99_PRIV_EVAL_0v_K(k, k_cx, folder, acc, tail, ...) \ METALANG99_PRIV_MACHINE_REDUCE( \ k, \ k_cx, \ folder, \ METALANG99_PRIV_EVAL_##folder(acc, __VA_ARGS__), \ METALANG99_PRIV_EXPAND tail) #define METALANG99_PRIV_EVAL_0args_K(k, k_cx, folder, acc, tail, op, ...) \ METALANG99_PRIV_MACHINE_REDUCE( \ METALANG99_PRIV_EVAL_0callTr_K, \ (k, k_cx, folder, acc, tail, op), \ 0fcomma, \ METALANG99_PRIV_EVAL_ACC_COMMA_SEP(), \ __VA_ARGS__, \ (0end, ~), \ ~) #define METALANG99_PRIV_EVAL_0op_K(k, k_cx, folder, acc, tail, op, ...) \ METALANG99_PRIV_MACHINE_REDUCE( \ METALANG99_PRIV_EVAL_0callTr_K, \ (k, k_cx, folder, acc, tail), \ 0fcomma, \ METALANG99_PRIV_EVAL_ACC_COMMA_SEP(), \ op, \ __VA_ARGS__, \ (0end, ~), \ ~) #define METALANG99_PRIV_EVAL_0callTr_K(k, k_cx, folder, acc, tail, evaluated_op, ...) \ /* If the metafunction `evaluated_op` expands to many terms, we first evaluate these terms and \ * accumulate them, otherwise, we just paste the single term with the rest of the tail. This \ * optimisation results in a huge performance improvement. */ \ METALANG99_PRIV_IF( \ METALANG99_PRIV_CONTAINS_COMMA(evaluated_op##_IMPL(__VA_ARGS__)), \ METALANG99_PRIV_EVAL_0callTr_K_REGULAR, \ METALANG99_PRIV_EVAL_0callTr_K_OPTIMIZED) \ (k, k_cx, folder, acc, tail, evaluated_op##_IMPL(__VA_ARGS__)) #define METALANG99_PRIV_EVAL_0callTr_K_OPTIMIZED(k, k_cx, folder, acc, tail, ...) \ METALANG99_PRIV_MACHINE_REDUCE(k, k_cx, folder, acc, __VA_ARGS__, METALANG99_PRIV_EXPAND tail) #define METALANG99_PRIV_EVAL_0callTr_K_REGULAR(k, k_cx, folder, acc, tail, ...) \ METALANG99_PRIV_MACHINE_REDUCE( \ METALANG99_PRIV_EVAL_0v_K, \ (k, k_cx, folder, acc, tail), \ 0fappend, \ METALANG99_PRIV_EVAL_ACC(), \ __VA_ARGS__, \ (0end, ~), \ ~) #define METALANG99_PRIV_MACHINE_REDUCE(...) METALANG99_PRIV_EVAL_MATCH(__VA_ARGS__) // } (Continuations) // Aliases { #ifndef METALANG99_FULL_PREFIX_ONLY #define M_eval METALANG99_eval #endif // METALANG99_FULL_PREFIX_ONLY // } #endif // DOXYGEN_IGNORE #endif // METALANG99_EVAL_H hkl-5.1.7/third-party/metalang99/bool.h0000664000175000017500000001162214677222567016635 0ustar00piccapicca/** * @file * Boolean algebra. */ #ifndef ML99_BOOL_H #define ML99_BOOL_H #include #include #include /** * Truth. */ #define ML99_true(...) ML99_callUneval(ML99_true, ) /** * Falsehood. */ #define ML99_false(...) ML99_callUneval(ML99_false, ) /** * Logical negation. * * # Examples * * @code * #include * * // 1 * ML99_not(v(0)) * * // 0 * ML99_not(v(1)) * @endcode */ #define ML99_not(x) ML99_call(ML99_not, x) /** * Logical conjunction. * * # Examples * * @code * #include * * // 0 * ML99_and(v(0), v(0)) * * // 0 * ML99_and(v(0), v(1)) * * // 0 * ML99_and(v(1), v(0)) * * // 1 * ML99_and(v(1), v(1)) * @endcode */ #define ML99_and(x, y) ML99_call(ML99_and, x, y) /** * Logical inclusive OR. * * # Examples * @code * #include * * // 0 * ML99_or(v(0), v(0)) * * // 1 * ML99_or(v(0), v(1)) * * // 1 * ML99_or(v(1), v(0)) * * // 1 * ML99_or(v(1), v(1)) * @endcode */ #define ML99_or(x, y) ML99_call(ML99_or, x, y) /** * Logical exclusive OR. * * # Examples * * @code * #include * * // 0 * ML99_xor(v(0), v(0)) * * // 1 * ML99_xor(v(0), v(1)) * * // 1 * ML99_xor(v(1), v(0)) * * // 0 * ML99_xor(v(1), v(1)) * @endcode */ #define ML99_xor(x, y) ML99_call(ML99_xor, x, y) /** * Tests @p x and @p y for equality. * * # Examples * * @code * #include * * // 1 * ML99_boolEq(v(0), v(0)) * * // 0 * ML99_boolEq(v(0), v(1)) * * // 0 * ML99_boolEq(v(1), v(0)) * * // 1 * ML99_boolEq(v(1), v(1)) * @endcode */ #define ML99_boolEq(x, y) ML99_call(ML99_boolEq, x, y) /** * Matches @p x against the two cases: if it is 0 or 1. * * # Examples * * @code * #include * * #define MATCH_1_IMPL() v(Billie) * #define MATCH_0_IMPL() v(Jean) * * // Billie * ML99_boolMatch(v(1), v(MATCH_)) * * // Jean * ML99_boolMatch(v(0), v(MATCH_)) * @endcode * * @note This function calls @p f with #ML99_call, so no partial application occurs, and so * arity specifiers are not needed. */ #define ML99_boolMatch(x, matcher) ML99_call(ML99_boolMatch, x, matcher) /** * The same as #ML99_boolMatch but provides additional arguments to all branches. * * # Examples * * @code * #include * * #define MATCH_1_IMPL(x, y, z) v(Billie ~ x y z) * #define MATCH_0_IMPL(x, y, z) v(Jean ~ x y z) * * // Billie ~ 1 2 3 * ML99_boolMatchWithArgs(v(1), v(MATCH_), v(1, 2, 3)) * * // Jean ~ 1 2 3 * ML99_boolMatchWithArgs(v(0), v(MATCH_), v(1, 2, 3)) * @endcode */ #define ML99_boolMatchWithArgs(x, matcher, ...) \ ML99_call(ML99_boolMatchWithArgs, x, matcher, __VA_ARGS__) /** * If @p cond is true, evaluates to @p x, otherwise @p y. * * # Examples * * @code * #include * * // 123 * ML99_if(v(1), v(123), v(18)) * * // 18 * ML99_if(v(0), v(123), v(18)) * @endcode */ #define ML99_if(cond, x, y) ML99_call(ML99_if, cond, x, y) /** * The plain version of #ML99_if. * * This macro can imitate lazy evaluation: `ML99_IF(, , )` will expand to * one of the two terms, which can be evaluated further; if `` is 0, then `` will * **not** be evaluated, and the same with ``. * * @note @p x and @p y can possibly expand to commas. It means that you can supply `ML99_TERMS(...)` * as a branch, for example. */ #define ML99_IF(cond, x, y) ML99_PRIV_UNTUPLE(ML99_PRIV_IF(cond, (x), (y))) #define ML99_TRUE(...) 1 #define ML99_FALSE(...) 0 #define ML99_NOT(x) ML99_PRIV_NOT(x) #define ML99_AND(x, y) ML99_PRIV_AND(x, y) #define ML99_OR(x, y) ML99_PRIV_OR(x, y) #define ML99_XOR(x, y) ML99_PRIV_XOR(x, y) #define ML99_BOOL_EQ(x, y) ML99_PRIV_BOOL_EQ(x, y) #ifndef DOXYGEN_IGNORE #define ML99_true_IMPL(...) v(ML99_TRUE()) #define ML99_false_IMPL(...) v(ML99_FALSE()) #define ML99_not_IMPL(x) v(ML99_NOT(x)) #define ML99_and_IMPL(x, y) v(ML99_AND(x, y)) #define ML99_or_IMPL(x, y) v(ML99_OR(x, y)) #define ML99_xor_IMPL(x, y) v(ML99_XOR(x, y)) #define ML99_boolEq_IMPL(x, y) v(ML99_BOOL_EQ(x, y)) #define ML99_boolMatch_IMPL(x, matcher) ML99_callUneval(matcher##x, ) #define ML99_boolMatchWithArgs_IMPL(x, matcher, ...) ML99_callUneval(matcher##x, __VA_ARGS__) #define ML99_if_IMPL(cond, x, y) v(ML99_PRIV_IF(cond, x, y)) // Arity specifiers { #define ML99_true_ARITY 1 #define ML99_false_ARITY 1 #define ML99_not_ARITY 1 #define ML99_and_ARITY 2 #define ML99_or_ARITY 2 #define ML99_xor_ARITY 2 #define ML99_boolEq_ARITY 2 #define ML99_boolMatch_ARITY 2 #define ML99_boolMatchWithArgs_ARITY 3 #define ML99_if_ARITY 3 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_BOOL_H hkl-5.1.7/third-party/metalang99/lang.h0000664000175000017500000001464614677222567016634 0ustar00piccapicca/** * @file * The core metalanguage. */ #ifndef ML99_LANG_H #define ML99_LANG_H #include #include #include #include /** * Evaluates a metaprogram. * * # Examples * * @code * #include * * #define F_IMPL(x, y) v(x + y) * * ML99_EVAL(v(abc ~ 123), ML99_call(F, v(1, 2))) * @endcode */ #define ML99_EVAL(...) ML99_PRIV_EVAL(__VA_ARGS__) /** * Invokes a metafunction with arguments. */ #define ML99_call(op, ...) \ (ML99_PRIV_IF(ML99_PRIV_IS_UNTUPLE_FAST(op), 0args, 0op), op, __VA_ARGS__) /** * Invokes a metafunction @p ident with unevaluated arguments. * * It is semantically the same as `ML99_call(ident, v(...))` but performs one less reduction * steps. */ #define ML99_callUneval(ident, ...) (0callUneval, ident, __VA_ARGS__) /** * Applies arguments to @p f. * * This function implements [partial * application](https://en.wikipedia.org/wiki/Partial_application): instead of invoking a * metafunction with all arguments at once, you specify each argument separately. This concept * allows better re-use of metafunctions by specifying some arguments immediately, and the other * arguments later, even in different execution contexts (for example, see this [SO * answer](https://stackoverflow.com/a/12414292/13166656)). * * @p f must be either a term reducing to a macro name or a term obtained via another call to * #ML99_appl. If @p f is a macro name, then a macro named `_ARITY` (its arity specifier) * must denote how many times @p f will be applied to its arguments. (In Metalang99, an arity is an * intentionally more flexible concept than just a number of parameters, see below.) Each time * #ML99_appl is invoked, it accumulates provided variadic arguments and decrements the arity * of @p f; when the arity of @p f is already 1, it eventually calls the initial @p f with all the * accumulated arguments and provided variadic arguments. * * Most often, an arity specifier denotes a count of all named parameters plus 1 if a macro is * variadic (all the functions in the standard library follow this pattern). However, feel free to * specify arities as you wish, with regard to the aforementioned semantics; for example, you can * have a macro accepting `x, y, z` with an arity specifier `2`, then you must invoke * #ML99_appl exactly 2 times (either `x` + `y, z` or `x, y` + `z`). One common pattern is to * match a head and a tail of variadic arguments: * * @code * #include * * #define F_IMPL(x, y, z, head, ...) // ... * #define F_ARITY 4 * @endcode * * In this case, `x`, `y`, and `z` can be specified separately but other arguments all at once. * * # Examples * * @code * #include * * #define F_IMPL(x, y) v(x##y) * #define F_ARITY 2 * * // ab * ML99_appl(ML99_appl(v(F), v(a)), v(b)) * @endcode * * @note Currently, the maximum arity is #ML99_NAT_MAX. However, some compilers might not support * more than 127 macro parameters. */ #define ML99_appl(f, ...) ML99_call(ML99_appl, f, __VA_ARGS__) /** * Applies @p a and @p b to @p f. * * # Examples * * @code * #include * * #define F_IMPL(x, y) v(x##y) * #define F_ARITY 2 * * // ab * ML99_appl2(v(F), v(a), v(b)) * @endcode */ #define ML99_appl2(f, a, b) ML99_call(ML99_appl2, f, a, b) /** * Applies @p a, @p b, and @p c to @p f. */ #define ML99_appl3(f, a, b, c) ML99_call(ML99_appl3, f, a, b, c) /** * Applies @p a, @p b, @p c, and @p d to @p f. */ #define ML99_appl4(f, a, b, c, d) ML99_call(ML99_appl4, f, a, b, c, d) /** * Functional composition of @p f and @p g. * * # Examples * * @code * #include * * #define F_IMPL(x) v((x + 1)) * #define G_IMPL(x) v((x * 8)) * * #define F_ARITY 1 * #define G_ARITY 1 * * // ((3 * 8) + 1) * ML99_appl(ML99_compose(v(F), v(G)), v(3)) * @endcode */ #define ML99_compose(f, g) ML99_call(ML99_compose, f, g) /** * A value that is pasted as-is; no evaluation occurs on provided arguments. */ #define v(...) (0v, __VA_ARGS__) // clang-format off /** * Emits a fatal error. * * @p f must be a macro name that has caused the error and the rest of arguments comprise the error * message. * * #ML99_fatal interprets its variadic arguments without preprocessor expansion -- i.e., they are * pasted as-is. This is intended because otherwise identifiers located in an error message may * stand for other macros that will be unintentionally expanded. * * # Examples * * [`playground.c`] * @code * #include * * ML99_EVAL(ML99_fatal(F, the description of your error)) * @endcode * * [`/bin/sh`] * @code{.txt} * playground.c:3:1: error: static assertion failed: "F: the description of your error" * 3 | ML99_EVAL(ML99_fatal(F, the description of your error)) * | ^~~~~~~~~ * @endcode */ #define ML99_fatal(f, ...) (0fatal, f, #__VA_ARGS__) // clang-format on /** * Immediately aborts the interpretation with evaluated arguments. * * # Examples * * @code * #include * * #define F_IMPL(x) v(~) * * // 123 * ML99_call(F, ML99_abort(v(123))) * @endcode */ #define ML99_abort(...) (0abort, __VA_ARGS__) /** * A convenience macro to emphasise that your metafunction expands to more than one term. * * This macro just expands to provided arguments. * * # Examples * * @code * #include * * #define F_IMPL(x) ML99_TERMS(v(1), v(x), v(2)) * @endcode */ #define ML99_TERMS(...) __VA_ARGS__ /** * Delays evaluation for provided terms. * * `ML99_QUOTE(...)` is functionally equivalent to `v(...)`. * * # Examples * * @code * #include * * #define F_IMPL(x) v(~x) * * #define PROG ML99_TERMS(v(1), v(2), ML99_call(F, v(7))) * * // The same as `PROG` pasted into a source file. * ML99_EVAL(ML99_QUOTE(PROG)) * @endcode */ #define ML99_QUOTE(...) v(__VA_ARGS__) #ifndef DOXYGEN_IGNORE #define ML99_compose_IMPL(f, g) ML99_appl2_IMPL(ML99_PRIV_compose, f, g) #define ML99_PRIV_compose_IMPL(f, g, x) ML99_appl(v(f), ML99_appl_IMPL(g, x)) // Arity specifiers { #define ML99_appl_ARITY 2 #define ML99_appl2_ARITY 3 #define ML99_appl3_ARITY 4 #define ML99_appl4_ARITY 5 #define ML99_compose_ARITY 2 #define ML99_PRIV_compose_ARITY 3 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_LANG_H hkl-5.1.7/third-party/metalang99/variadics.h0000664000175000017500000002273614677222567017657 0ustar00piccapicca/** * @file * Variadic arguments: `x, y, z`. * * @note Variadics are more time and space-efficient than lists, but export less functionality; if a * needed function is missed, invoking #ML99_list and then manipulating with the resulting Cons-list * might be helpful. */ #ifndef ML99_VARIADICS_H #define ML99_VARIADICS_H #include #include #include /** * Computes a count of its arguments. * * At most 63 arguments are acceptable. * * # Examples * * @code * #include * * // 3 * ML99_variadicsCount(v(~, ~, ~)) * * // 1 * ML99_variadicsCount() * @endcode */ #define ML99_variadicsCount(...) ML99_call(ML99_variadicsCount, __VA_ARGS__) /** * Tells if it received only one argument or not. * * # Examples * * @code * #include * * // 1 * ML99_variadicsIsSingle(v(~)) * * // 0 * ML99_variadicsIsSingle(v(~, ~, ~)) * @endcode */ #define ML99_variadicsIsSingle(...) ML99_call(ML99_variadicsIsSingle, __VA_ARGS__) /** * Expands to a metafunction extracting the @p i -indexed argument. * * @p i can range from 0 to 7, inclusively. * * # Examples * * @code * #include * * // 2 * ML99_variadicsGet(1)(v(1, 2, 3)) * @endcode */ #define ML99_variadicsGet(i) ML99_PRIV_CAT(ML99_PRIV_variadicsGet_, i) /** * Extracts the tail of its arguments. * * At least two arguments must be specified. * * # Examples * * @code * #include * * // 2, 3 * ML99_variadicsTail(v(1, 2, 3)) * @endcode */ #define ML99_variadicsTail(...) ML99_call(ML99_variadicsTail, __VA_ARGS__) /** * Applies @p f to each argument. * * The result is `ML99_appl(f, x1) ... ML99_appl(f, xN)`. * * # Examples * * @code * #include * * #define F_IMPL(x) v(@x) * #define F_ARITY 1 * * // @x @y @z * ML99_variadicsForEach(v(F), v(x, y, z)) * @endcode */ #define ML99_variadicsForEach(f, ...) ML99_call(ML99_variadicsForEach, f, __VA_ARGS__) /** * Applies @p f to each argument with an index. * * The result is `ML99_appl2(f, x1, 0) ... ML99_appl2(f, xN, N - 1)`. * * @code * #include * * #define F_IMPL(x, i) v(@x##i) * #define F_ARITY 2 * * // @x0 @y1 @z2 * ML99_variadicsForEachI(v(F), v(x, y, z)) * @endcode */ #define ML99_variadicsForEachI(f, ...) ML99_call(ML99_variadicsForEachI, f, __VA_ARGS__) /** * Overloads @p f on a number of arguments. * * This function counts the number of provided arguments, appends it to @p f and calls the resulting * macro identifier with provided arguments. * * At most 63 variadic arguments are acceptable. * * # Examples * * @code * #include * * #define X(...) ML99_OVERLOAD(X_, __VA_ARGS__) * #define X_1(a) Billie & a * #define X_2(a, b) Jean & a & b * * // Billie & 4 * X(4) * * // Jean & 5 & 6 * X(5, 6) * @endcode * * @note @p f need not be postfixed with `_IMPL`. It is literally invoked as `ML99_CAT(f, * ML99_VARIADICS_COUNT(...))(...)`. */ #define ML99_OVERLOAD(f, ...) ML99_PRIV_CAT(f, ML99_PRIV_VARIADICS_COUNT(__VA_ARGS__))(__VA_ARGS__) #define ML99_VARIADICS_COUNT(...) ML99_PRIV_VARIADICS_COUNT(__VA_ARGS__) #define ML99_VARIADICS_IS_SINGLE(...) ML99_PRIV_NOT(ML99_PRIV_CONTAINS_COMMA(__VA_ARGS__)) #define ML99_VARIADICS_GET(i) ML99_PRIV_CAT(ML99_PRIV_VARIADICS_GET_, i) #define ML99_VARIADICS_TAIL(...) ML99_PRIV_TAIL(__VA_ARGS__) #ifndef DOXYGEN_IGNORE #define ML99_variadicsCount_IMPL(...) v(ML99_VARIADICS_COUNT(__VA_ARGS__)) #define ML99_variadicsIsSingle_IMPL(...) v(ML99_VARIADICS_IS_SINGLE(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_0(...) ML99_call(ML99_PRIV_variadicsGet_0, __VA_ARGS__) #define ML99_PRIV_variadicsGet_1(...) ML99_call(ML99_PRIV_variadicsGet_1, __VA_ARGS__) #define ML99_PRIV_variadicsGet_2(...) ML99_call(ML99_PRIV_variadicsGet_2, __VA_ARGS__) #define ML99_PRIV_variadicsGet_3(...) ML99_call(ML99_PRIV_variadicsGet_3, __VA_ARGS__) #define ML99_PRIV_variadicsGet_4(...) ML99_call(ML99_PRIV_variadicsGet_4, __VA_ARGS__) #define ML99_PRIV_variadicsGet_5(...) ML99_call(ML99_PRIV_variadicsGet_5, __VA_ARGS__) #define ML99_PRIV_variadicsGet_6(...) ML99_call(ML99_PRIV_variadicsGet_6, __VA_ARGS__) #define ML99_PRIV_variadicsGet_7(...) ML99_call(ML99_PRIV_variadicsGet_7, __VA_ARGS__) #define ML99_PRIV_variadicsGet_0_IMPL(...) v(ML99_VARIADICS_GET(0)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_1_IMPL(...) v(ML99_VARIADICS_GET(1)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_2_IMPL(...) v(ML99_VARIADICS_GET(2)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_3_IMPL(...) v(ML99_VARIADICS_GET(3)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_4_IMPL(...) v(ML99_VARIADICS_GET(4)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_5_IMPL(...) v(ML99_VARIADICS_GET(5)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_6_IMPL(...) v(ML99_VARIADICS_GET(6)(__VA_ARGS__)) #define ML99_PRIV_variadicsGet_7_IMPL(...) v(ML99_VARIADICS_GET(7)(__VA_ARGS__)) #define ML99_PRIV_VARIADICS_GET_0(...) ML99_PRIV_VARIADICS_GET_AUX_0(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_1(...) ML99_PRIV_VARIADICS_GET_AUX_1(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_2(...) ML99_PRIV_VARIADICS_GET_AUX_2(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_3(...) ML99_PRIV_VARIADICS_GET_AUX_3(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_4(...) ML99_PRIV_VARIADICS_GET_AUX_4(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_5(...) ML99_PRIV_VARIADICS_GET_AUX_5(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_6(...) ML99_PRIV_VARIADICS_GET_AUX_6(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_7(...) ML99_PRIV_VARIADICS_GET_AUX_7(__VA_ARGS__, ~) #define ML99_PRIV_VARIADICS_GET_AUX_0(a, ...) a #define ML99_PRIV_VARIADICS_GET_AUX_1(_a, b, ...) b #define ML99_PRIV_VARIADICS_GET_AUX_2(_a, _b, c, ...) c #define ML99_PRIV_VARIADICS_GET_AUX_3(_a, _b, _c, d, ...) d #define ML99_PRIV_VARIADICS_GET_AUX_4(_a, _b, _c, _d, e, ...) e #define ML99_PRIV_VARIADICS_GET_AUX_5(_a, _b, _c, _d, _e, f, ...) f #define ML99_PRIV_VARIADICS_GET_AUX_6(_a, _b, _c, _d, _e, _f, g, ...) g #define ML99_PRIV_VARIADICS_GET_AUX_7(_a, _b, _c, _d, _e, _f, _g, h, ...) h #define ML99_variadicsTail_IMPL(...) v(ML99_VARIADICS_TAIL(__VA_ARGS__)) // ML99_variadicsForEach_IMPL { #define ML99_variadicsForEach_IMPL(f, ...) \ ML99_PRIV_CAT(ML99_PRIV_variadicsForEach_, ML99_VARIADICS_IS_SINGLE(__VA_ARGS__)) \ (f, __VA_ARGS__) #define ML99_PRIV_variadicsForEach_1(f, x) ML99_appl_IMPL(f, x) #define ML99_PRIV_variadicsForEach_0(f, x, ...) \ ML99_TERMS(ML99_appl_IMPL(f, x), ML99_callUneval(ML99_variadicsForEach, f, __VA_ARGS__)) // } (ML99_variadicsForEach_IMPL) // ML99_variadicsForEachI_IMPL { #define ML99_variadicsForEachI_IMPL(f, ...) ML99_PRIV_variadicsForEachIAux_IMPL(f, 0, __VA_ARGS__) #define ML99_PRIV_variadicsForEachIAux_IMPL(f, i, ...) \ ML99_PRIV_CAT(ML99_PRIV_variadicsForEachI_, ML99_VARIADICS_IS_SINGLE(__VA_ARGS__)) \ (f, i, __VA_ARGS__) #define ML99_PRIV_variadicsForEachI_1(f, i, x) ML99_appl2_IMPL(f, x, i) #define ML99_PRIV_variadicsForEachI_0(f, i, x, ...) \ ML99_TERMS( \ ML99_appl2_IMPL(f, x, i), \ ML99_callUneval(ML99_PRIV_variadicsForEachIAux, f, ML99_PRIV_INC(i), __VA_ARGS__)) // } (ML99_variadicsForEachI_IMPL) /* * The StackOverflow solution: . * * This macro supports at most 63 arguments because C99 allows implementations to handle only 127 * parameters/arguments per macro definition/invocation (C99 | 5.2.4 Environmental limits), and * `ML99_PRIV_VARIADICS_COUNT_AUX` already accepts 64 arguments. */ // clang-format off #define ML99_PRIV_VARIADICS_COUNT(...) \ ML99_PRIV_VARIADICS_COUNT_AUX( \ __VA_ARGS__, \ 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, \ 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, \ 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, \ 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, \ 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, \ 3, 2, 1, ~) #define ML99_PRIV_VARIADICS_COUNT_AUX( \ _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \ _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ _61, _62, _63, x, ...) \ x // clang-format on // Arity specifiers { #define ML99_variadicsCount_ARITY 1 #define ML99_variadicsIsSingle_ARITY 1 #define ML99_variadicsTail_ARITY 1 #define ML99_variadicsForEach_ARITY 2 #define ML99_variadicsForEachI_ARITY 2 #define ML99_PRIV_variadicsGet_0_ARITY 1 #define ML99_PRIV_variadicsGet_1_ARITY 1 #define ML99_PRIV_variadicsGet_2_ARITY 1 #define ML99_PRIV_variadicsGet_3_ARITY 1 #define ML99_PRIV_variadicsGet_4_ARITY 1 #define ML99_PRIV_variadicsGet_5_ARITY 1 #define ML99_PRIV_variadicsGet_6_ARITY 1 #define ML99_PRIV_variadicsGet_7_ARITY 1 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_VARIADICS_H hkl-5.1.7/third-party/metalang99/control.h0000664000175000017500000000051314677222567017357 0ustar00piccapicca/** * @file * This module is deprecated and exists only for backwards compatibility. */ #ifndef ML99_CONTROL_H #define ML99_CONTROL_H #include // ML99_if, ML99_IF #include // ML99_times, ML99_repeat #include // ML99_OVERLOAD #endif // ML99_CONTROL_H hkl-5.1.7/third-party/metalang99/util.h0000664000175000017500000002565014677222567016665 0ustar00piccapicca/** * @file * Utilitary stuff. */ #ifndef ML99_UTIL_H #define ML99_UTIL_H #include #include // For backwards compatibility. #include /** * Concatenates @p a with @p b and evaluates the result. * * # Examples * * @code * #include * * #define ABC123 v(Billie Jean) * * // Billie Jean * ML99_catEval(v(ABC), v(123)) * * // ERROR: 123ABC is not a valid Metalang99 term. * ML99_catEval(v(123), v(ABC)) * @endcode * * @deprecated I have seen no single use case over time. Please, [open an * issue](https://github.com/Hirrolot/metalang99/issues/new/choose) if you need this function. */ #define ML99_catEval(a, b) ML99_call(ML99_catEval, a, b) /** * Concatenates @p a with @p b, leaving the result unevaluated. * * # Examples * * @code * #include * * #define ABC123 Billie Jean * * // Billie Jean * ML99_cat(v(ABC), v(123)) * * // 123ABC * ML99_cat(v(123), v(ABC)) * @endcode */ #define ML99_cat(a, b) ML99_call(ML99_cat, a, b) /** * The same as #ML99_cat but deals with 3 parameters. */ #define ML99_cat3(a, b, c) ML99_call(ML99_cat3, a, b, c) /** * The same as #ML99_cat but deals with 4 parameters. */ #define ML99_cat4(a, b, c, d) ML99_call(ML99_cat4, a, b, c, d) /** * Stringifies provided arguments. * * # Examples * * @code * #include * * // "Billie Jean" * ML99_stringify(v(Billie Jean)) * @endcode */ #define ML99_stringify(...) ML99_call(ML99_stringify, __VA_ARGS__) /** * Evaluates to nothing. */ #define ML99_empty(...) ML99_callUneval(ML99_empty, ) /** * Evaluates to its arguments. * * # Examples * * @code * #include * * // 1, 2, 3 * ML99_id(v(1, 2, 3)) * @endcode */ #define ML99_id(...) ML99_call(ML99_id, __VA_ARGS__) /** * Evaluates to @p x, skipping @p a. * * # Examples * * @code * #include * * // 123 * ML99_const(v(123), v(5)) * @endcode */ #define ML99_const(x, a) ML99_call(ML99_const, x, a) /** * Reverses the order of arguments of the binary function @p f. * * # Examples * * @code * #include * * // ABC123 * ML99_appl2(ML99_flip(v(ML99_catUnevaluated)), v(123), v(ABC)) * @endcode */ #define ML99_flip(f) ML99_call(ML99_flip, f) /** * Accepts terms and evaluates them with the space-separator. * * # Examples * * @code * #include * * // 1 2 3 * ML99_uncomma(ML99_QUOTE(v(1), v(2), v(3))) * @endcode */ #define ML99_uncomma(...) ML99_call(ML99_uncomma, __VA_ARGS__) /** * Turns @p f into a Metalang99-compliant metafunction with the arity of 1, which can be then called * by #ML99_appl. * * @p f can be any C function or function-like macro. * * # Examples * * @code * #include * #include * * #define F(x) @x * * // @1 @2 @3 * ML99_variadicsForEach(ML99_reify(v(F)), v(1, 2, 3)) * @endcode * * Without #ML99_reify, you would need to write some additional boilerplate: * * @code * #define F_IMPL(x) v(@x) * #define F_ARITY 1 * @endcode */ #define ML99_reify(f) ML99_call(ML99_reify, f) /** * Indicates not yet implemented functionality of the macro @p f. * * #ML99_todo is the same as #ML99_unimplemented except that the former conveys an intent that the * functionality is to be implemented later but #ML99_unimplemented makes no such claims. * * # Examples * * @code * #include * * // A not-yet implemented error. * ML99_todo(v(F)) * @endcode * * @see [Rust's std::todo\!](https://doc.rust-lang.org/core/macro.todo.html) (thanks for the idea!) */ #define ML99_todo(f) ML99_call(ML99_todo, f) /** * The same as #ML99_todo but emits a caller-supplied message. * * @p message must be a string literal. * * # Examples * * @code * #include * * // A not-yet-implemented error. * ML99_todoWithMsg(v(F), v("your message")) * @endcode */ #define ML99_todoWithMsg(f, message) ML99_call(ML99_todoWithMsg, f, message) /** * Indicates unimplemented functionality of the macro @p f. * * #ML99_unimplemented is the same as #ML99_todo except that the latter conveys an intent that the * functionality is to be implemented later but #ML99_unimplemented makes no such claims. * * # Examples * * @code * #include * * // A not-implemented error. * ML99_unimplemented(v(F)) * @endcode * * @see [Rust's std::unimplemented\!](https://doc.rust-lang.org/core/macro.unimplemented.html) * (thanks for the idea!) */ #define ML99_unimplemented(f) ML99_call(ML99_unimplemented, f) /** * The same as #ML99_unimplemented but emits a caller-supplied message. * * @p message must be a string literal. * * # Examples * * @code * #include * * // A not-implemented error. * ML99_unimplementedWithMsg(v(F), v("your message")) * @endcode */ #define ML99_unimplementedWithMsg(f, message) ML99_call(ML99_unimplementedWithMsg, f, message) #ifdef __COUNTER__ /** * Generates a unique identifier @p id in the namespace @p prefix. * * Let `FOO` be the name of an enclosing macro. Then `FOO_` must be specified for @p prefix, and @p * id should be given any meaningful name (this makes debugging easier). * * # Examples * * @code * #include * * #define FOO(...) FOO_NAMED(ML99_GEN_SYM(FOO_, x), __VA_ARGS__) * #define FOO_NAMED(x_sym, ...) \ * do { int x_sym = 5; __VA_ARGS__ } while (0) * * // `x` here will not conflict with the `x` inside `FOO`. * FOO({ * int x = 7; * printf("x is %d\n", x); // x is 7 * }); * @endcode * * @note Two identical calls to #ML99_GEN_SYM will yield different identifiers, therefore, to refer * to the result later, you must save it in an auxiliary macro's parameter, as shown in the example * above. * @note #ML99_GEN_SYM is defined only if `__COUNTER__` is defined, which must be a macro yielding * integral literals starting from 0 incremented by 1 each time it is called. Currently, it is * supported at least by Clang, GCC, TCC, and MSVC. * @see https://en.wikipedia.org/wiki/Hygienic_macro */ #define ML99_GEN_SYM(prefix, id) ML99_CAT4(prefix, id, _, __COUNTER__) #endif // __COUNTER__ /** * Forces a caller to put a trailing semicolon. * * It is useful when defining macros, to make them formatted as complete statements. * * # Examples * * @code * #include * * #define MY_MACRO(fn_name, val_ty, val) \ * inline static val_ty fn_name(void) { return val; } \ * ML99_TRAILING_SEMICOLON() * * // Defines a function that always returns 0. * MY_MACRO(zero, int, 0); * @endcode * * @note #ML99_TRAILING_SEMICOLON is to be used outside of functions: unlike the `do { ... } while * (0)` idiom, this macro expands to a C declaration. */ #define ML99_TRAILING_SEMICOLON(...) struct ml99_priv_trailing_semicolon /** * Concatenates @p a with @p b as-is, without expanding them. * * # Examples * * @code * #include * * // This macro will not be expanded. * #define ABC 7 * * // ABC123 * ML99_CAT_PRIMITIVE(ABC, 123) * @endcode */ #define ML99_CAT_PRIMITIVE(a, b) a##b /** * The same as #ML99_CAT_PRIMITIVE but deals with 3 parameters. */ #define ML99_CAT3_PRIMITIVE(a, b, c) a##b##c /** * The same as #ML99_CAT_PRIMITIVE but deals with 4 parameters. */ #define ML99_CAT4_PRIMITIVE(a, b, c, d) a##b##c##d /** * Stringifies @p x as-is, without expanding it. * * # Examples * * @code * #include * * // This macro will not be expanded. * #define ABC 7 * * // "ABC" * ML99_STRINGIFY_PRIMITIVE(ABC) * @endcode */ #define ML99_STRINGIFY_PRIMITIVE(...) #__VA_ARGS__ /** * Expands to an opening parenthesis (`(`). * * This is helpful when you want to delay macro arguments passing: just type `BAR ML99_LPAREN() * initial args...` at the end of some macro `FOO` and complete the invocation of `BAR` with * `the rest of args...)` in future. * * This macro consumes all its arguments. * * @deprecated This macro results in code that is difficult to reason about. */ #define ML99_LPAREN(...) ( /** * The same as #ML99_LPAREN but emits a closing parenthesis. * * @deprecated For the same reason as #ML99_LPAREN. */ #define ML99_RPAREN(...) ) /** * Expands to a single comma, consuming all arguments. */ #define ML99_COMMA(...) , /** * If you are compiling on GCC, this macro expands to `_Pragma(str)`, otherwise to emptiness. */ #define ML99_GCC_PRAGMA(str) ML99_PRIV_GCC_PRAGMA(str) /** * The same as #ML99_GCC_PRAGMA but for Clang. */ #define ML99_CLANG_PRAGMA(str) ML99_PRIV_CLANG_PRAGMA(str) #define ML99_CAT(a, b) ML99_CAT_PRIMITIVE(a, b) #define ML99_CAT3(a, b, c) ML99_CAT3_PRIMITIVE(a, b, c) #define ML99_CAT4(a, b, c, d) ML99_CAT4_PRIMITIVE(a, b, c, d) #define ML99_STRINGIFY(...) ML99_STRINGIFY_PRIMITIVE(__VA_ARGS__) #define ML99_EMPTY(...) #define ML99_ID(...) __VA_ARGS__ #ifndef DOXYGEN_IGNORE #define ML99_catEval_IMPL(a, b) a##b #define ML99_cat_IMPL(a, b) v(a##b) #define ML99_cat3_IMPL(a, b, c) v(a##b##c) #define ML99_cat4_IMPL(a, b, c, d) v(a##b##c##d) #define ML99_stringify_IMPL(...) v(ML99_STRINGIFY(__VA_ARGS__)) #define ML99_empty_IMPL(...) v(ML99_EMPTY()) #define ML99_id_IMPL(...) v(ML99_ID(__VA_ARGS__)) #define ML99_const_IMPL(x, _a) v(x) #define ML99_flip_IMPL(f) ML99_appl_IMPL(ML99_PRIV_flip, f) #define ML99_PRIV_flip_IMPL(f, a, b) ML99_appl2_IMPL(f, b, a) #define ML99_uncomma_IMPL(...) __VA_ARGS__ #define ML99_reify_IMPL(f) ML99_appl_IMPL(ML99_PRIV_reify, f) #define ML99_PRIV_reify_IMPL(f, ...) v(f(__VA_ARGS__)) // clang-format off #define ML99_todo_IMPL(f) ML99_fatal(f, not yet implemented) #define ML99_todoWithMsg_IMPL(f, message) ML99_fatal(f, not yet implemented: message) #define ML99_unimplemented_IMPL(f) ML99_fatal(f, not implemented) #define ML99_unimplementedWithMsg_IMPL(f, message) ML99_fatal(f, not implemented: message) // clang-format on #if defined(__GNUC__) && !defined(__clang__) #define ML99_PRIV_GCC_PRAGMA(str) _Pragma(str) #else #define ML99_PRIV_GCC_PRAGMA(str) #endif #if defined(__clang__) #define ML99_PRIV_CLANG_PRAGMA(str) _Pragma(str) #else #define ML99_PRIV_CLANG_PRAGMA(str) #endif // Arity specifiers { #define ML99_catEval_ARITY 2 #define ML99_cat_ARITY 2 #define ML99_cat3_ARITY 3 #define ML99_cat4_ARITY 4 #define ML99_stringify_ARITY 1 #define ML99_empty_ARITY 1 #define ML99_id_ARITY 1 #define ML99_const_ARITY 2 #define ML99_flip_ARITY 1 #define ML99_uncomma_ARITY 1 #define ML99_reify_ARITY 1 #define ML99_todo_ARITY 1 #define ML99_todoWithMsg_ARITY 2 #define ML99_unimplemented_ARITY 1 #define ML99_unimplementedWithMsg_ARITY 2 #define ML99_PRIV_flip_ARITY 3 #define ML99_PRIV_reify_ARITY 2 // } (Arity specifiers) #endif // DOXYGEN_IGNORE #endif // ML99_UTIL_H hkl-5.1.7/third-party/metalang99.h0000664000175000017500000000175514677222567015710 0ustar00piccapicca#ifndef ML99_H #define ML99_H #if defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL #error Please, specify /Zc:preprocessor to enable a standard-compliant C99/C++11 preprocessor. #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ML99_MAJOR 1 #define ML99_MINOR 13 #define ML99_PATCH 3 #define ML99_VERSION_COMPATIBLE(x, y, z) \ (ML99_MAJOR == (x) && ((ML99_MINOR == (y) && ML99_PATCH >= (z)) || (ML99_MINOR > (y)))) #define ML99_VERSION_EQ(x, y, z) (ML99_MAJOR == (x) && ML99_MINOR == (y) && ML99_PATCH == (z)) #endif // ML99_H hkl-5.1.7/third-party/Makefile.in0000664000175000017500000003651415144640451015615 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = third-party ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ EXTRA_DIST = \ datatype99.h \ metalang99/assert.h \ metalang99/aux.h \ metalang99/bool.h \ metalang99/choice.h \ metalang99/control.h \ metalang99/either.h \ metalang99/eval/acc.h \ metalang99/eval/control.h \ metalang99/eval/diagnostics.h \ metalang99/eval/eval.h \ metalang99/eval/fold.h \ metalang99/eval.h \ metalang99/eval/rec/control.h \ metalang99/eval/rec.h \ metalang99/eval/rec/progress.h \ metalang99/eval/rec/unroll.h \ metalang99/eval/syntax_checker.h \ metalang99/eval/term.h \ metalang99/gen.h \ metalang99.h \ metalang99/ident.h \ metalang99/lang/closure.h \ metalang99/lang/curry.h \ metalang99/lang.h \ metalang99/list.h \ metalang99/logical.h \ metalang99/maybe.h \ metalang99/misc.h \ metalang99/nat/dec.h \ metalang99/nat/div.h \ metalang99/nat/eq.h \ metalang99/nat.h \ metalang99/nat/inc.h \ metalang99/priv/aux.h \ metalang99/priv/bool.h \ metalang99/priv/compiler_attr.h \ metalang99/priv/compiler_specific.h \ metalang99/priv/logical.h \ metalang99/priv/pair.h \ metalang99/priv/tuple.h \ metalang99/priv/util.h \ metalang99/priv/variadics/count.h \ metalang99/priv/variadics/get.h \ metalang99/seq.h \ metalang99/stmt.h \ metalang99/tuple.h \ metalang99/uint/dec.h \ metalang99/uint/div.h \ metalang99/uint/eq.h \ metalang99/uint.h \ metalang99/uint/inc.h \ metalang99/util.h \ metalang99/variadics.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu third-party/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu third-party/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/third-party/Makefile.am0000664000175000017500000000254514677222567015617 0ustar00piccapiccaEXTRA_DIST= \ datatype99.h \ metalang99/assert.h \ metalang99/aux.h \ metalang99/bool.h \ metalang99/choice.h \ metalang99/control.h \ metalang99/either.h \ metalang99/eval/acc.h \ metalang99/eval/control.h \ metalang99/eval/diagnostics.h \ metalang99/eval/eval.h \ metalang99/eval/fold.h \ metalang99/eval.h \ metalang99/eval/rec/control.h \ metalang99/eval/rec.h \ metalang99/eval/rec/progress.h \ metalang99/eval/rec/unroll.h \ metalang99/eval/syntax_checker.h \ metalang99/eval/term.h \ metalang99/gen.h \ metalang99.h \ metalang99/ident.h \ metalang99/lang/closure.h \ metalang99/lang/curry.h \ metalang99/lang.h \ metalang99/list.h \ metalang99/logical.h \ metalang99/maybe.h \ metalang99/misc.h \ metalang99/nat/dec.h \ metalang99/nat/div.h \ metalang99/nat/eq.h \ metalang99/nat.h \ metalang99/nat/inc.h \ metalang99/priv/aux.h \ metalang99/priv/bool.h \ metalang99/priv/compiler_attr.h \ metalang99/priv/compiler_specific.h \ metalang99/priv/logical.h \ metalang99/priv/pair.h \ metalang99/priv/tuple.h \ metalang99/priv/util.h \ metalang99/priv/variadics/count.h \ metalang99/priv/variadics/get.h \ metalang99/seq.h \ metalang99/stmt.h \ metalang99/tuple.h \ metalang99/uint/dec.h \ metalang99/uint/div.h \ metalang99/uint/eq.h \ metalang99/uint.h \ metalang99/uint/inc.h \ metalang99/util.h \ metalang99/variadics.h hkl-5.1.7/hkl.h0000664000175000017500000006152215144640472012230 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2023, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_H__ #define __HKL_H__ #include // for M_PI #include // for size_t #include // for FILE #include // for g_set_error, GError etc #include // for darray /* deprecated */ #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) # define HKL_DEPRECATED __attribute__((__deprecated__)) #elif defined(_MSC_VER) && (_MSC_VER >= 1300) # define HKL_DEPRECATED __declspec(deprecated) #else # define HKL_DEPRECATED #endif #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) # define HKL_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) # define HKL_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) #else # define HKL_DEPRECATED_FOR(f) HKL_DEPRECATED #endif #define HKL_TINY 1e-7 #define HKL_EPSILON 1e-6 #define HKL_DEGTORAD (M_PI/180.) #define HKL_RADTODEG (180./M_PI) /** * HKL_VERSION: (type utf8) */ #define HKL_VERSION "5.1.7" /* tau = 2pi or 1 */ #define HKL_TAU (2. * M_PI) /* #define HKL_TAU 1 */ #ifdef HKLAPI # undef HKLAPI #endif #ifdef __GNUC__ # if __GNUC__ >= 4 # define HKLAPI __attribute__ ((visibility("default"))) # else # define HKLAPI # endif #else /** * @def HKLAPI * @brief Used to export functions(by changing visibility). */ # define HKLAPI #endif #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) # define HKL_ARG_NONNULL(...) __attribute__ ((__nonnull__(__VA_ARGS__))) #else # define HKL_ARG_NONNULL(...) #endif # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define HKL_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) # else # define HKL_WARN_UNUSED_RESULT # endif #define _darray(type) type *item; size_t size; size_t alloc G_BEGIN_DECLS /**********/ /* Vector */ /**********/ typedef struct _HklVector HklVector; struct _HklVector { double data[3]; }; #define HKL_VECTOR_X {{1, 0, 0}} #define HKL_VECTOR_Y {{0, 1, 0}} #define HKL_VECTOR_Z {{0, 0, 1}} HKLAPI void hkl_vector_init(HklVector *self, double x, double y, double z); /**************/ /* Quaternion */ /**************/ typedef struct _HklQuaternion HklQuaternion; typedef struct _HklMatrix HklMatrix; /* forwarded declaration */ struct _HklQuaternion { double data[4]; }; typedef darray(const char *) darray_string; HKLAPI void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m) HKL_ARG_NONNULL(1, 2); /**********/ /* Matrix */ /**********/ HKLAPI HklMatrix *hkl_matrix_new(void) HKL_WARN_UNUSED_RESULT; HKLAPI HklMatrix *hkl_matrix_new_full(double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) HKL_WARN_UNUSED_RESULT; HKLAPI HklMatrix *hkl_matrix_new_euler(double euler_x, double euler_y, double euler_z) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_matrix_get(const HklMatrix *self, unsigned int i, unsigned int j) HKL_ARG_NONNULL(1); HKLAPI void hkl_matrix_free(HklMatrix *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_matrix_init(HklMatrix *self, double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) HKL_ARG_NONNULL(1); HKLAPI int hkl_matrix_cmp(const HklMatrix *self, const HklMatrix *m) HKL_ARG_NONNULL(1, 2); HKLAPI void hkl_matrix_times_matrix(HklMatrix *self, const HklMatrix *m) HKL_ARG_NONNULL(1, 2); /********/ /* Unit */ /********/ typedef struct _HklUnitDimension HklUnitDimension; struct _HklUnitDimension { int l; /* Length */ int m; /* Mass */ int t; /* Time */ int i; /* Electric current */ int th; /* Thermodynamic temperature */ int n; /* Amount of substance */ int j; /* Luminous intensity */ }; #define HklDPlaneAngle {0, 0, 0, 0, 0, 0, 0} #define HklDLength {1, 0, 0, 0, 0, 0, 0} typedef enum _HklUnitEnum { HKL_UNIT_DEFAULT, HKL_UNIT_USER } HklUnitEnum; typedef struct _HklUnit HklUnit; struct _HklUnit { HklUnitDimension dimension; double factor; char const *name; char const *repr; }; extern const HklUnit hkl_unit_angle_deg; extern const HklUnit hkl_unit_angle_rad; extern const HklUnit hkl_unit_length_nm; extern const HklUnit hkl_unit_angle_mrad; extern const HklUnit hkl_unit_length_mm; extern const HklUnit hkl_unit_length_meter; /*************/ /* Parameter */ /*************/ typedef struct _HklParameter HklParameter; /* HklParameter */ HKLAPI HklParameter *hkl_parameter_new_copy(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_free(HklParameter *self) HKL_ARG_NONNULL(1); HKLAPI const char *hkl_parameter_name_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_default_unit_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_user_unit_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_parameter_value_get(const HklParameter *self, HklUnitEnum unit_type) HKL_ARG_NONNULL(1); HKLAPI int hkl_parameter_value_set(HklParameter *self, double value, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_min_max_get(const HklParameter *self, double *min, double *max, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2, 3); HKLAPI int hkl_parameter_min_max_set(HklParameter *self, double min, double max, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_parameter_fit_get(const HklParameter *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_parameter_fit_set(HklParameter *self, int fit) HKL_ARG_NONNULL(1); HKLAPI void hkl_parameter_randomize(HklParameter *self) HKL_ARG_NONNULL(1); /* getter and setter specific to certain type of HklParameter */ HKLAPI const HklVector *hkl_parameter_axis_v_get(const HklParameter *self) HKL_ARG_NONNULL(1)HKL_WARN_UNUSED_RESULT; HKLAPI const HklQuaternion *hkl_parameter_quaternion_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_description_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_fprintf(FILE *f, const HklParameter *self) HKL_ARG_NONNULL(1, 2); /************/ /* Detector */ /************/ typedef struct _HklDetector HklDetector; typedef enum _HklDetectorType { HKL_DETECTOR_TYPE_0D } HklDetectorType; HKLAPI HklDetector *hkl_detector_factory_new(HklDetectorType type) HKL_WARN_UNUSED_RESULT; HKLAPI HklDetector *hkl_detector_new_copy(const HklDetector *src) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_detector_free(HklDetector *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_detector_fprintf(FILE *f, const HklDetector *self) HKL_ARG_NONNULL(1, 2); /************/ /* Geometry */ /************/ typedef struct _HklGeometry HklGeometry; typedef struct _HklGeometryList HklGeometryList; typedef struct _HklGeometryListItem HklGeometryListItem; typedef struct _HklSample HklSample; /* forwarded declaration */ /* HklGeometry */ HKLAPI HklGeometry *hkl_geometry_new_copy(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_free(HklGeometry *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_geometry_set(HklGeometry *self, const HklGeometry *src) HKL_ARG_NONNULL(1, 2); HKLAPI const darray_string *hkl_geometry_axis_names_get(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_geometry_axis_get(const HklGeometry *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_geometry_axis_set(HklGeometry *self, const char *name, const HklParameter *axis, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_axis_values_get(const HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_geometry_axis_values_set(HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_geometry_name_get(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_geometry_wavelength_get(const HklGeometry *self, HklUnitEnum unit_type) HKL_ARG_NONNULL(1); HKLAPI int hkl_geometry_wavelength_set(HklGeometry *self, double wavelength, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_randomize(HklGeometry *self) HKL_ARG_NONNULL(1); /* TODO after bissecting it seems that this method is slow (to replace) */ HKLAPI int hkl_geometry_set_values_v(HklGeometry *self, HklUnitEnum unit_type, GError **error, ...) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklQuaternion hkl_geometry_sample_rotation_get(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); HKLAPI HklQuaternion hkl_geometry_detector_rotation_get(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_ki_get(const HklGeometry *self) HKL_ARG_NONNULL(1); HKLAPI HklVector hkl_geometry_ki_abc_get(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_kf_get(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_kf_abc_get(const HklGeometry *self, const HklDetector *detector, const HklSample *sample) HKL_ARG_NONNULL(1, 2, 3); HKLAPI void hkl_geometry_fprintf(FILE *file, const HklGeometry *self) HKL_ARG_NONNULL(1, 2); /* HklGeometryList */ #define HKL_GEOMETRY_LIST_FOREACH(item, list) for((item)=hkl_geometry_list_items_first_get((list)); \ (item); \ (item)=hkl_geometry_list_items_next_get((list), (item))) HKLAPI void hkl_geometry_list_free(HklGeometryList *self) HKL_ARG_NONNULL(1); HKLAPI size_t hkl_geometry_list_n_items_get(const HklGeometryList *self) HKL_ARG_NONNULL(1); HKLAPI const HklGeometryListItem *hkl_geometry_list_items_first_get(const HklGeometryList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklGeometryListItem *hkl_geometry_list_items_next_get(const HklGeometryList *self, const HklGeometryListItem *item) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; /* HklGeometryListItem */ HKLAPI const HklGeometry *hkl_geometry_list_item_geometry_get(const HklGeometryListItem *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; /**********/ /* Sample */ /**********/ typedef struct _HklLattice HklLattice; typedef struct _HklSampleReflection HklSampleReflection; /* Lattice */ HKLAPI HklLattice *hkl_lattice_new(double a, double b, double c, double alpha, double beta, double gamma, GError **error) HKL_WARN_UNUSED_RESULT; HKLAPI HklLattice *hkl_lattice_new_copy(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklLattice *hkl_lattice_new_default(void) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_lattice_free(HklLattice *self) HKL_ARG_NONNULL(1); HKLAPI const HklParameter *hkl_lattice_a_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_a_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_b_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_b_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_c_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_c_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_alpha_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_alpha_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_beta_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_beta_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_gamma_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_gamma_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_volume_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_set(HklLattice *self, double a, double b, double c, double alpha, double beta, double gamma, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_lattice_get(const HklLattice *self, double *a, double *b, double *c, double *alpha, double *beta, double *gamma, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2, 3, 4, 5, 6, 7); HKLAPI int hkl_lattice_get_B(const HklLattice *self, HklMatrix *B) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_lattice_get_1_B(const HklLattice *self, HklMatrix *B) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_lattice_reciprocal(const HklLattice *self, HklLattice *reciprocal) HKL_ARG_NONNULL(1, 2); /* HklSample */ HKLAPI HklSample *hkl_sample_new(const char *name) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklSample *hkl_sample_new_copy(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_free(HklSample *self) HKL_ARG_NONNULL(1); HKLAPI const char *hkl_sample_name_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_name_set(HklSample *self, const char *name) HKL_ARG_NONNULL(1, 2); HKLAPI const HklLattice *hkl_sample_lattice_get(HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_lattice_set(HklSample *self, const HklLattice *lattice) HKL_ARG_NONNULL(1, 2); HKLAPI const HklParameter *hkl_sample_ux_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_ux_set(HklSample *self, const HklParameter *ux, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_sample_uy_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_uy_set(HklSample *self, const HklParameter *uy, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_sample_uz_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_uz_set(HklSample *self, const HklParameter *uz, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklMatrix *hkl_sample_U_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_U_set(HklSample *self, const HklMatrix *U, GError **error) HKL_ARG_NONNULL(1); HKLAPI const HklMatrix *hkl_sample_UB_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_UB_set(HklSample *self, const HklMatrix *UB, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI size_t hkl_sample_n_reflections_get(const HklSample *self) HKL_ARG_NONNULL(1); #define HKL_SAMPLE_REFLECTIONS_FOREACH(_item, _list) for((_item)=hkl_sample_reflections_first_get((_list)); \ (_item); \ (_item)=hkl_sample_reflections_next_get((_list), (_item))) HKLAPI HklSampleReflection *hkl_sample_reflections_first_get(HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklSampleReflection *hkl_sample_reflections_next_get(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_del_reflection(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2); HKLAPI void hkl_sample_add_reflection(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_sample_compute_UB_busing_levy(HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_sample_get_reflection_measured_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) HKL_ARG_NONNULL(1, 2, 3); HKLAPI double hkl_sample_get_reflection_theoretical_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) HKL_ARG_NONNULL(1, 2, 3); HKLAPI int hkl_sample_affine(HklSample *self, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; /* HklSampleReflection */ HKLAPI HklSampleReflection *hkl_sample_reflection_new(const HklGeometry *geometry, const HklDetector *detector, double h, double k, double l, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_reflection_hkl_get(const HklSampleReflection *self, double *h, double *k, double *l) HKL_ARG_NONNULL(1, 2, 3, 4); HKLAPI int hkl_sample_reflection_hkl_set(HklSampleReflection *self, double h, double k, double l, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_reflection_flag_get(const HklSampleReflection *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_sample_reflection_flag_set(HklSampleReflection *self, int flag) HKL_ARG_NONNULL(1); HKLAPI const HklGeometry *hkl_sample_reflection_geometry_get(HklSampleReflection *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_reflection_geometry_set(HklSampleReflection *self, const HklGeometry *geometry) HKL_ARG_NONNULL(1, 2); /**************/ /* PseudoAxis */ /**************/ typedef struct _HklEngine HklEngine; typedef struct _HklEngineList HklEngineList; typedef darray(HklEngine *) darray_engine; /* HklEngine */ HKLAPI const char *hkl_engine_name_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI unsigned int hkl_engine_len(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI const darray_string *hkl_engine_pseudo_axis_names_get(HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_pseudo_axis_values_get(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometryList *hkl_engine_pseudo_axis_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_pseudo_axis_get(const HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineCapabilities { HKL_ENGINE_CAPABILITIES_READABLE = 1u << 0, HKL_ENGINE_CAPABILITIES_WRITABLE = 1u << 1, HKL_ENGINE_CAPABILITIES_INITIALIZABLE = 1u << 2, } HklEngineCapabilities; HKLAPI unsigned int hkl_engine_capabilities_get(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_engine_initialized_get(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_engine_initialized_set(HklEngine *self, int initialized, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_fprintf(FILE *f, const HklEngine *self) HKL_ARG_NONNULL(1, 2); /* mode */ HKLAPI const darray_string *hkl_engine_modes_names_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_engine_current_mode_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_current_mode_set(HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineAxisNamesGet { HKL_ENGINE_AXIS_NAMES_GET_READ, HKL_ENGINE_AXIS_NAMES_GET_WRITE, } HklEngineAxisNamesGet; HKLAPI const darray_string *hkl_engine_axis_names_get(const HklEngine *self, HklEngineAxisNamesGet mode) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const darray_string *hkl_engine_parameters_names_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_parameter_get(const HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_parameter_set(HklEngine *self, const char *name, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_parameters_values_get(const HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_parameters_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineDependencies { HKL_ENGINE_DEPENDENCIES_AXES = 1u << 0, HKL_ENGINE_DEPENDENCIES_ENERGY = 1u << 1, HKL_ENGINE_DEPENDENCIES_SAMPLE = 1u << 2, } HklEngineDependencies; HKLAPI unsigned int hkl_engine_dependencies_get(const HklEngine *self) HKL_ARG_NONNULL(1); /* HklEngineList */ HKLAPI void hkl_engine_list_free(HklEngineList *self) HKL_ARG_NONNULL(1); HKLAPI darray_engine *hkl_engine_list_engines_get(HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometry *hkl_engine_list_geometry_get(HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_list_geometry_set(HklEngineList *self, const HklGeometry *geometry) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_list_select_solution(HklEngineList *self, const HklGeometryListItem *item) HKL_ARG_NONNULL(1); HKLAPI HklEngine *hkl_engine_list_engine_get_by_name(HklEngineList *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_init(HklEngineList *self, HklGeometry *geometry, HklDetector *detector, HklSample *sample) HKL_ARG_NONNULL(1, 2, 3, 4); HKLAPI int hkl_engine_list_get(HklEngineList *self) HKL_ARG_NONNULL(1); HKLAPI const darray_string *hkl_engine_list_parameters_names_get(const HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_list_parameter_get(const HklEngineList *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_list_parameter_set(HklEngineList *self, const char *name, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_parameters_values_get(const HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_list_parameters_values_set(HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_fprintf(FILE *f, const HklEngineList *self) HKL_ARG_NONNULL(1, 2); /***********/ /* Factory */ /***********/ typedef struct _HklFactory HklFactory; HKLAPI HklFactory **hkl_factory_get_all(size_t *n) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklFactory *hkl_factory_get_by_name(const char *name, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_factory_name_get(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometry *hkl_factory_create_new_geometry(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklEngineList *hkl_factory_create_new_engine_list(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; G_END_DECLS #endif hkl-5.1.7/Makefile.in0000664000175000017500000011516515144640450013345 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @BINOCULARS_TRUE@am__append_1 = binoculars-ng @HKL3D_TRUE@am__append_2 = hkl3d data @GUI_TRUE@am__append_3 = gui @HKL_DOC_TRUE@am__append_4 = Documentation @CONTRIB_TRUE@am__append_5 = contrib subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_installed_mainheader_DATA) \ $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = hkl.h hkl.pc hkl3d.pc \ Documentation/sphinx/source/conf.py CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(installed_mainheaderdir)" \ "$(DESTDIR)$(pkgconfigdir)" DATA = $(dist_installed_mainheader_DATA) $(noinst_DATA) \ $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = . hkl third-party binoculars-ng hkl3d data tests gui \ Documentation contrib am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/hkl.h.in $(srcdir)/hkl.pc.in $(srcdir)/hkl3d.pc.in \ $(top_srcdir)/Documentation/sphinx/source/conf.py.in \ $(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \ $(top_srcdir)/config/config.sub \ $(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \ $(top_srcdir)/config/missing AUTHORS COPYING ChangeLog INSTALL \ NEWS README config/compile config/config.guess \ config/config.sub config/depcomp config/install-sh \ config/ltmain.sh config/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ ; rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = -9 DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = \ find . \( -type f -a \! \ \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ ACLOCAL_AMFLAGS = -I m4 AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection --enable-hkl3d --enable-binoculars SUBDIRS = . hkl third-party $(am__append_1) $(am__append_2) tests \ $(am__append_3) $(am__append_4) $(am__append_5) EXTRA_DIST = hkl.pc.in hkl3d.pc.in installed_mainheaderdir = $(includedir)/hkl-@VMAJ@ dist_installed_mainheader_DATA = hkl.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hkl.pc #for not do not install @HKL3D_TRUE@noinst_DATA = hkl3d.pc CCAN_PUBLIC_MODULES = darray CCAN_PRIVATE_MODULES = array_size container_of autodata list generator CCAN_LOCAL_REPO = /tmp/ccan CCAN_LOCAL_EXTRACT = /tmp/ccan.tmp CCAN_URL = https://github.com/rustyrussell/ccan.git CCAN_CREATE_TREE = rm -rf $(CCAN_LOCAL_EXTRACT) && cd $(CCAN_LOCAL_REPO) && tools/create-ccan-tree -b automake $(CCAN_LOCAL_EXTRACT) CCAN_DEST = $(top_srcdir)/hkl/ CCAN_TMP_DEST = /tmp/ccan.next METALANG99_LOCAL_REPO = /tmp/metalang99 METALANG99_URL = https://github.com/Hirrolot/metalang99 METALANG99_DEST = $(top_srcdir)/third-party DATATYPE99_LOCAL_REPO = /tmp/datatype99 DATATYPE99_URL = https://github.com/Hirrolot/datatype99 DATATYPE99_DEST = $(top_srcdir)/third-party all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status $(AM_V_at)rm -f stamp-h1 $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) $(AM_V_at)rm -f stamp-h1 $(AM_V_at)touch $@ distclean-hdr: -rm -f config.h stamp-h1 hkl.h: $(top_builddir)/config.status $(srcdir)/hkl.h.in cd $(top_builddir) && $(SHELL) ./config.status $@ hkl.pc: $(top_builddir)/config.status $(srcdir)/hkl.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ hkl3d.pc: $(top_builddir)/config.status $(srcdir)/hkl3d.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ Documentation/sphinx/source/conf.py: $(top_builddir)/config.status $(top_srcdir)/Documentation/sphinx/source/conf.py.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-dist_installed_mainheaderDATA: $(dist_installed_mainheader_DATA) @$(NORMAL_INSTALL) @list='$(dist_installed_mainheader_DATA)'; test -n "$(installed_mainheaderdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(installed_mainheaderdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(installed_mainheaderdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_mainheaderdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_mainheaderdir)" || exit $$?; \ done uninstall-dist_installed_mainheaderDATA: @$(NORMAL_UNINSTALL) @list='$(dist_installed_mainheader_DATA)'; test -n "$(installed_mainheaderdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(installed_mainheaderdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) $(AM_V_at)$(MKDIR_P) "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-bzip3: distdir tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.bz3*) \ bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(installed_mainheaderdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_installed_mainheaderDATA \ install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_installed_mainheaderDATA \ uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-bzip3 dist-gzip dist-hook dist-lzip \ dist-shar dist-tarZ dist-xz dist-zip dist-zstd distcheck \ distclean distclean-generic distclean-hdr distclean-libtool \ distclean-local distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_installed_mainheaderDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-dist_installed_mainheaderDATA \ uninstall-pkgconfigDATA .PRECIOUS: Makefile release: # cd scripts && ./clean-all # -git commit -a -m "pre-release" sed -i -e "s,dnl m4_undefine(\[v_rev\]),m4_undefine(\[v_rev\]),g" configure.ac ./autogen.sh ./configure $(AM_DISTCHECK_CONFIGURE_FLAGS) $(MAKE) -j $(MAKE) distcheck git commit -a -m "released $(./configure -V | head -n 1 | awk '{print $$3}')" git tag v`./configure -V | head -n 1 | awk '{print $$3}'` sed -i -e "s,m4_undefine(\[v_rev\]),dnl m4_undefine(\[v_rev\]),g" configure.ac git commit -a -m "post-release" tag: git tag v`./configure -V | head -n 1 | awk '{print $$3}'` .PHONY: lcov genlcov lcov-clean release tag # use recursive makes in order to ignore errors during check lcov: -$(MAKE) $(AM_MAKEFLAGS) -k check $(MAKE) $(AM_MAKEFLAGS) genlcov # we have to massage the lcov.info file slightly to hide the effect of libtool # placing the objects files in the .libs/ directory separate from the *.c # we also have to delete tests/.libs/*.gcda genlcov: rm -f $(top_builddir)/test/hkl/.libs/*.gcda $(LTP) --directory $(top_builddir) --capture --output-file hkl-lcov.info --test-name hkl-lcov --no-checksum --compat-libtool LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory hkl-lcov --title "hkl Code Coverage" --legend --show-details hkl-lcov.info lcov-clean: -$(LTP) --directory $(top_builddir) -z -rm -rf hkl-lcov.info hkl-lcov -find -name '*.gcda' -print | xargs rm -find -name '*.gcno' -print | xargs rm distclean-local: lcov-clean dist-hook: @if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/config/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fi ccan-update: @if test -d $(CCAN_LOCAL_REPO); \ then \ cd $(CCAN_LOCAL_REPO) && git pull; \ else \ git clone $(CCAN_URL) $(CCAN_LOCAL_REPO); \ fi @echo Extracting all the modules @$(CCAN_CREATE_TREE) $(CCAN_PUBLIC_MODULES) $(CCAN_PRIVATE_MODULES) @rm -rf $(CCAN_TMP_DEST) && mkdir -p $(CCAN_TMP_DEST) @rsync -av --exclude=Makefile.am $(CCAN_LOCAL_EXTRACT)/* $(CCAN_TMP_DEST) @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '*.[ch]' | xargs sed -i -e 's,ccan/,hkl/ccan/,' @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '*.[ch]' | xargs sed -i -e 's,"config.h",,' @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '_info' | xargs rm -f @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name 'test' | xargs rm -rf @$(CCAN_CREATE_TREE) $(CCAN_PUBLIC_MODULES) @echo Generating the Makefile.am @(\ echo "AM_CFLAGS=-I\$$(top_srcdir)"; echo;\ echo "noinst_PROGRAMS=configurator";\ echo "BUILT_SOURCES=ccan_config.h";\ echo "ccan_config.h: configurator";\ (\ echo -e "\t\$$(builddir)/configurator \$$(CC) \$$(CCAN_CFLAGS) > \$$@.tmp && mv \$$@.tmp \$$@";\ );\ echo "noinst_LTLIBRARIES=libccan.la";\ echo "libccan_la_SOURCES = \\";\ (\ echo -e "\tccan_config.h \\";\ cd $(CCAN_TMP_DEST)/ccan && find . -maxdepth 2 -name '*.[ch]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,'; echo;\ );\ echo "ccanincludedir=\$$(includedir)/hkl-@""VMAJ@/hkl/ccan";\ echo "nobase_ccaninclude_HEADERS= \\";\ (\ cd $(CCAN_LOCAL_EXTRACT)/ccan && find . -maxdepth 2 -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ echo "nodist_ccaninclude_HEADERS=ccan_config.h";\ echo "EXTRA_DIST=configurator.c";\ echo "CLEANFILES=configurator ccan_config.h";\ ) > $(CCAN_TMP_DEST)/ccan/Makefile.am @echo Extracting the configurator @rsync -av $(CCAN_LOCAL_REPO)/tools/configurator/configurator.c $(CCAN_TMP_DEST)/ccan @echo purge the previous ccan directory cd $(CCAN_DEST) && rm -rf licenses && find ccan -mindepth 1 -type d \! -name ".*" | xargs rm -rf rsync -av $(CCAN_TMP_DEST)/* $(top_srcdir)/hkl metalang99-update: @if [ -d $(METALANG99_LOCAL_REPO) ]; \ then \ cd $(METALANG99_LOCAL_REPO) && git pull; \ else \ git clone $(METALANG99_URL) $(METALANG99_LOCAL_REPO); \ fi @echo Extracting all the modules @rsync -av $(METALANG99_LOCAL_REPO)/include/* $(METALANG99_DEST) @echo Generating the Makefile.am @(\ echo "EXTRA_DIST= \\";\ (\ cd $(METALANG99_DEST) && find . -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ ) > $(METALANG99_DEST)/Makefile.am @echo Added all files to git git add $(METALANG99_DEST) datatype99-update: @if [ -d $(DATATYPE99_LOCAL_REPO) ]; \ then \ cd $(DATATYPE99_LOCAL_REPO) && git pull; \ else \ git clone $(DATATYPE99_URL) $(DATATYPE99_LOCAL_REPO); \ fi @echo Extracting all the modules @rsync -av $(DATATYPE99_LOCAL_REPO)/*.h $(DATATYPE99_DEST) @echo Generating the Makefile.am @(\ echo "EXTRA_DIST= \\";\ (\ cd $(METALANG99_DEST) && find . -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ ) > $(METALANG99_DEST)/Makefile.am @echo Added all files to git git add $(METALANG99_DEST) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/AUTHORS0000664000175000017500000000030314677222567012352 0ustar00piccapiccaPicca Frédéric-Emmanuel Maria-Teresa Nunez-Pardo-de-Verra Jens Krüger Oussama Sboui hkl-5.1.7/Makefile.am0000664000175000017500000001504415144614732013333 0ustar00piccapicca## Process this file with automake to produce Makefile.in ACLOCAL_AMFLAGS = -I m4 AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection --enable-hkl3d --enable-binoculars SUBDIRS = . hkl third-party if BINOCULARS SUBDIRS += binoculars-ng endif if HKL3D SUBDIRS += hkl3d data endif SUBDIRS += tests if GUI SUBDIRS += gui endif if HKL_DOC SUBDIRS += Documentation endif if CONTRIB SUBDIRS += contrib endif EXTRA_DIST = hkl.pc.in hkl3d.pc.in installed_mainheaderdir = $(includedir)/hkl-@VMAJ@ dist_installed_mainheader_DATA = hkl.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hkl.pc if HKL3D #for not do not install noinst_DATA = hkl3d.pc endif release: # cd scripts && ./clean-all # -git commit -a -m "pre-release" sed -i -e "s,dnl m4_undefine(\[v_rev\]),m4_undefine(\[v_rev\]),g" configure.ac ./autogen.sh ./configure $(AM_DISTCHECK_CONFIGURE_FLAGS) $(MAKE) -j $(MAKE) distcheck git commit -a -m "released $(./configure -V | head -n 1 | awk '{print $$3}')" git tag v`./configure -V | head -n 1 | awk '{print $$3}'` sed -i -e "s,m4_undefine(\[v_rev\]),dnl m4_undefine(\[v_rev\]),g" configure.ac git commit -a -m "post-release" tag: git tag v`./configure -V | head -n 1 | awk '{print $$3}'` ## lcov part .PHONY: lcov genlcov lcov-clean release tag # use recursive makes in order to ignore errors during check lcov: -$(MAKE) $(AM_MAKEFLAGS) -k check $(MAKE) $(AM_MAKEFLAGS) genlcov # we have to massage the lcov.info file slightly to hide the effect of libtool # placing the objects files in the .libs/ directory separate from the *.c # we also have to delete tests/.libs/*.gcda genlcov: rm -f $(top_builddir)/test/hkl/.libs/*.gcda $(LTP) --directory $(top_builddir) --capture --output-file hkl-lcov.info --test-name hkl-lcov --no-checksum --compat-libtool LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory hkl-lcov --title "hkl Code Coverage" --legend --show-details hkl-lcov.info lcov-clean: -$(LTP) --directory $(top_builddir) -z -rm -rf hkl-lcov.info hkl-lcov -find -name '*.gcda' -print | xargs rm -find -name '*.gcno' -print | xargs rm distclean-local: lcov-clean ## Generate the Changelog file for the distribution. dist-hook: @if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/config/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fi ## Update the ccan library CCAN_PUBLIC_MODULES=darray CCAN_PRIVATE_MODULES=array_size container_of autodata list generator CCAN_LOCAL_REPO=/tmp/ccan CCAN_LOCAL_EXTRACT=/tmp/ccan.tmp CCAN_URL=https://github.com/rustyrussell/ccan.git CCAN_CREATE_TREE=rm -rf $(CCAN_LOCAL_EXTRACT) && cd $(CCAN_LOCAL_REPO) && tools/create-ccan-tree -b automake $(CCAN_LOCAL_EXTRACT) CCAN_DEST=$(top_srcdir)/hkl/ CCAN_TMP_DEST=/tmp/ccan.next ccan-update: @if test -d $(CCAN_LOCAL_REPO); \ then \ cd $(CCAN_LOCAL_REPO) && git pull; \ else \ git clone $(CCAN_URL) $(CCAN_LOCAL_REPO); \ fi @echo Extracting all the modules @$(CCAN_CREATE_TREE) $(CCAN_PUBLIC_MODULES) $(CCAN_PRIVATE_MODULES) @rm -rf $(CCAN_TMP_DEST) && mkdir -p $(CCAN_TMP_DEST) @rsync -av --exclude=Makefile.am $(CCAN_LOCAL_EXTRACT)/* $(CCAN_TMP_DEST) @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '*.[ch]' | xargs sed -i -e 's,ccan/,hkl/ccan/,' @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '*.[ch]' | xargs sed -i -e 's,"config.h",,' @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name '_info' | xargs rm -f @find $(CCAN_TMP_DEST)/ccan -maxdepth 2 -name 'test' | xargs rm -rf @$(CCAN_CREATE_TREE) $(CCAN_PUBLIC_MODULES) @echo Generating the Makefile.am @(\ echo "AM_CFLAGS=-I\$$(top_srcdir)"; echo;\ echo "noinst_PROGRAMS=configurator";\ echo "BUILT_SOURCES=ccan_config.h";\ echo "ccan_config.h: configurator";\ (\ echo -e "\t\$$(builddir)/configurator \$$(CC) \$$(CCAN_CFLAGS) > \$$@.tmp && mv \$$@.tmp \$$@";\ );\ echo "noinst_LTLIBRARIES=libccan.la";\ echo "libccan_la_SOURCES = \\";\ (\ echo -e "\tccan_config.h \\";\ cd $(CCAN_TMP_DEST)/ccan && find . -maxdepth 2 -name '*.[ch]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,'; echo;\ );\ echo "ccanincludedir=\$$(includedir)/hkl-@""VMAJ@/hkl/ccan";\ echo "nobase_ccaninclude_HEADERS= \\";\ (\ cd $(CCAN_LOCAL_EXTRACT)/ccan && find . -maxdepth 2 -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ echo "nodist_ccaninclude_HEADERS=ccan_config.h";\ echo "EXTRA_DIST=configurator.c";\ echo "CLEANFILES=configurator ccan_config.h";\ ) > $(CCAN_TMP_DEST)/ccan/Makefile.am @echo Extracting the configurator @rsync -av $(CCAN_LOCAL_REPO)/tools/configurator/configurator.c $(CCAN_TMP_DEST)/ccan @echo purge the previous ccan directory cd $(CCAN_DEST) && rm -rf licenses && find ccan -mindepth 1 -type d \! -name ".*" | xargs rm -rf rsync -av $(CCAN_TMP_DEST)/* $(top_srcdir)/hkl ## Update the metalang99 library METALANG99_LOCAL_REPO=/tmp/metalang99 METALANG99_URL=https://github.com/Hirrolot/metalang99 METALANG99_DEST=$(top_srcdir)/third-party metalang99-update: @if [ -d $(METALANG99_LOCAL_REPO) ]; \ then \ cd $(METALANG99_LOCAL_REPO) && git pull; \ else \ git clone $(METALANG99_URL) $(METALANG99_LOCAL_REPO); \ fi @echo Extracting all the modules @rsync -av $(METALANG99_LOCAL_REPO)/include/* $(METALANG99_DEST) @echo Generating the Makefile.am @(\ echo "EXTRA_DIST= \\";\ (\ cd $(METALANG99_DEST) && find . -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ ) > $(METALANG99_DEST)/Makefile.am @echo Added all files to git git add $(METALANG99_DEST) ## Update the datatype99 library DATATYPE99_LOCAL_REPO=/tmp/datatype99 DATATYPE99_URL=https://github.com/Hirrolot/datatype99 DATATYPE99_DEST=$(top_srcdir)/third-party datatype99-update: @if [ -d $(DATATYPE99_LOCAL_REPO) ]; \ then \ cd $(DATATYPE99_LOCAL_REPO) && git pull; \ else \ git clone $(DATATYPE99_URL) $(DATATYPE99_LOCAL_REPO); \ fi @echo Extracting all the modules @rsync -av $(DATATYPE99_LOCAL_REPO)/*.h $(DATATYPE99_DEST) @echo Generating the Makefile.am @(\ echo "EXTRA_DIST= \\";\ (\ cd $(METALANG99_DEST) && find . -name '*.[h]'\ | sort\ | sed -e 's,^./,\t,;$$!s,$$, \\,';\ );\ ) > $(METALANG99_DEST)/Makefile.am @echo Added all files to git git add $(METALANG99_DEST) hkl-5.1.7/hkl.h.in0000664000175000017500000006153615133711150012630 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2023, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_H__ #define __HKL_H__ #include // for M_PI #include // for size_t #include // for FILE #include // for g_set_error, GError etc #include // for darray /* deprecated */ #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) # define HKL_DEPRECATED __attribute__((__deprecated__)) #elif defined(_MSC_VER) && (_MSC_VER >= 1300) # define HKL_DEPRECATED __declspec(deprecated) #else # define HKL_DEPRECATED #endif #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) # define HKL_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) # define HKL_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) #else # define HKL_DEPRECATED_FOR(f) HKL_DEPRECATED #endif #define HKL_TINY 1e-7 #define HKL_EPSILON 1e-6 #define HKL_DEGTORAD (M_PI/180.) #define HKL_RADTODEG (180./M_PI) /** * HKL_VERSION: (type utf8) */ #define HKL_VERSION "@PACKAGE_VERSION@" /* tau = 2pi or 1 */ #define HKL_TAU (2. * M_PI) /* #define HKL_TAU 1 */ #ifdef HKLAPI # undef HKLAPI #endif #ifdef __GNUC__ # if __GNUC__ >= 4 # define HKLAPI __attribute__ ((visibility("default"))) # else # define HKLAPI # endif #else /** * @def HKLAPI * @brief Used to export functions(by changing visibility). */ # define HKLAPI #endif #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) # define HKL_ARG_NONNULL(...) __attribute__ ((__nonnull__(__VA_ARGS__))) #else # define HKL_ARG_NONNULL(...) #endif # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define HKL_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) # else # define HKL_WARN_UNUSED_RESULT # endif #define _darray(type) type *item; size_t size; size_t alloc G_BEGIN_DECLS /**********/ /* Vector */ /**********/ typedef struct _HklVector HklVector; struct _HklVector { double data[3]; }; #define HKL_VECTOR_X {{1, 0, 0}} #define HKL_VECTOR_Y {{0, 1, 0}} #define HKL_VECTOR_Z {{0, 0, 1}} HKLAPI void hkl_vector_init(HklVector *self, double x, double y, double z); /**************/ /* Quaternion */ /**************/ typedef struct _HklQuaternion HklQuaternion; typedef struct _HklMatrix HklMatrix; /* forwarded declaration */ struct _HklQuaternion { double data[4]; }; typedef darray(const char *) darray_string; HKLAPI void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m) HKL_ARG_NONNULL(1, 2); /**********/ /* Matrix */ /**********/ HKLAPI HklMatrix *hkl_matrix_new(void) HKL_WARN_UNUSED_RESULT; HKLAPI HklMatrix *hkl_matrix_new_full(double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) HKL_WARN_UNUSED_RESULT; HKLAPI HklMatrix *hkl_matrix_new_euler(double euler_x, double euler_y, double euler_z) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_matrix_get(const HklMatrix *self, unsigned int i, unsigned int j) HKL_ARG_NONNULL(1); HKLAPI void hkl_matrix_free(HklMatrix *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_matrix_init(HklMatrix *self, double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) HKL_ARG_NONNULL(1); HKLAPI int hkl_matrix_cmp(const HklMatrix *self, const HklMatrix *m) HKL_ARG_NONNULL(1, 2); HKLAPI void hkl_matrix_times_matrix(HklMatrix *self, const HklMatrix *m) HKL_ARG_NONNULL(1, 2); /********/ /* Unit */ /********/ typedef struct _HklUnitDimension HklUnitDimension; struct _HklUnitDimension { int l; /* Length */ int m; /* Mass */ int t; /* Time */ int i; /* Electric current */ int th; /* Thermodynamic temperature */ int n; /* Amount of substance */ int j; /* Luminous intensity */ }; #define HklDPlaneAngle {0, 0, 0, 0, 0, 0, 0} #define HklDLength {1, 0, 0, 0, 0, 0, 0} typedef enum _HklUnitEnum { HKL_UNIT_DEFAULT, HKL_UNIT_USER } HklUnitEnum; typedef struct _HklUnit HklUnit; struct _HklUnit { HklUnitDimension dimension; double factor; char const *name; char const *repr; }; extern const HklUnit hkl_unit_angle_deg; extern const HklUnit hkl_unit_angle_rad; extern const HklUnit hkl_unit_length_nm; extern const HklUnit hkl_unit_angle_mrad; extern const HklUnit hkl_unit_length_mm; extern const HklUnit hkl_unit_length_meter; /*************/ /* Parameter */ /*************/ typedef struct _HklParameter HklParameter; /* HklParameter */ HKLAPI HklParameter *hkl_parameter_new_copy(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_free(HklParameter *self) HKL_ARG_NONNULL(1); HKLAPI const char *hkl_parameter_name_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_default_unit_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_user_unit_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_parameter_value_get(const HklParameter *self, HklUnitEnum unit_type) HKL_ARG_NONNULL(1); HKLAPI int hkl_parameter_value_set(HklParameter *self, double value, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_min_max_get(const HklParameter *self, double *min, double *max, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2, 3); HKLAPI int hkl_parameter_min_max_set(HklParameter *self, double min, double max, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_parameter_fit_get(const HklParameter *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_parameter_fit_set(HklParameter *self, int fit) HKL_ARG_NONNULL(1); HKLAPI void hkl_parameter_randomize(HklParameter *self) HKL_ARG_NONNULL(1); /* getter and setter specific to certain type of HklParameter */ HKLAPI const HklVector *hkl_parameter_axis_v_get(const HklParameter *self) HKL_ARG_NONNULL(1)HKL_WARN_UNUSED_RESULT; HKLAPI const HklQuaternion *hkl_parameter_quaternion_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_parameter_description_get(const HklParameter *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_parameter_fprintf(FILE *f, const HklParameter *self) HKL_ARG_NONNULL(1, 2); /************/ /* Detector */ /************/ typedef struct _HklDetector HklDetector; typedef enum _HklDetectorType { HKL_DETECTOR_TYPE_0D } HklDetectorType; HKLAPI HklDetector *hkl_detector_factory_new(HklDetectorType type) HKL_WARN_UNUSED_RESULT; HKLAPI HklDetector *hkl_detector_new_copy(const HklDetector *src) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_detector_free(HklDetector *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_detector_fprintf(FILE *f, const HklDetector *self) HKL_ARG_NONNULL(1, 2); /************/ /* Geometry */ /************/ typedef struct _HklGeometry HklGeometry; typedef struct _HklGeometryList HklGeometryList; typedef struct _HklGeometryListItem HklGeometryListItem; typedef struct _HklSample HklSample; /* forwarded declaration */ /* HklGeometry */ HKLAPI HklGeometry *hkl_geometry_new_copy(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_free(HklGeometry *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_geometry_set(HklGeometry *self, const HklGeometry *src) HKL_ARG_NONNULL(1, 2); HKLAPI const darray_string *hkl_geometry_axis_names_get(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_geometry_axis_get(const HklGeometry *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_geometry_axis_set(HklGeometry *self, const char *name, const HklParameter *axis, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_axis_values_get(const HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_geometry_axis_values_set(HklGeometry *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_geometry_name_get(const HklGeometry *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_geometry_wavelength_get(const HklGeometry *self, HklUnitEnum unit_type) HKL_ARG_NONNULL(1); HKLAPI int hkl_geometry_wavelength_set(HklGeometry *self, double wavelength, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_geometry_randomize(HklGeometry *self) HKL_ARG_NONNULL(1); /* TODO after bissecting it seems that this method is slow (to replace) */ HKLAPI int hkl_geometry_set_values_v(HklGeometry *self, HklUnitEnum unit_type, GError **error, ...) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklQuaternion hkl_geometry_sample_rotation_get(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); HKLAPI HklQuaternion hkl_geometry_detector_rotation_get(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_ki_get(const HklGeometry *self) HKL_ARG_NONNULL(1); HKLAPI HklVector hkl_geometry_ki_abc_get(const HklGeometry *self, const HklSample *sample) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_kf_get(const HklGeometry *self, const HklDetector *detector) HKL_ARG_NONNULL(1, 2); HKLAPI HklVector hkl_geometry_kf_abc_get(const HklGeometry *self, const HklDetector *detector, const HklSample *sample) HKL_ARG_NONNULL(1, 2, 3); HKLAPI void hkl_geometry_fprintf(FILE *file, const HklGeometry *self) HKL_ARG_NONNULL(1, 2); /* HklGeometryList */ #define HKL_GEOMETRY_LIST_FOREACH(item, list) for((item)=hkl_geometry_list_items_first_get((list)); \ (item); \ (item)=hkl_geometry_list_items_next_get((list), (item))) HKLAPI void hkl_geometry_list_free(HklGeometryList *self) HKL_ARG_NONNULL(1); HKLAPI size_t hkl_geometry_list_n_items_get(const HklGeometryList *self) HKL_ARG_NONNULL(1); HKLAPI const HklGeometryListItem *hkl_geometry_list_items_first_get(const HklGeometryList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklGeometryListItem *hkl_geometry_list_items_next_get(const HklGeometryList *self, const HklGeometryListItem *item) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; /* HklGeometryListItem */ HKLAPI const HklGeometry *hkl_geometry_list_item_geometry_get(const HklGeometryListItem *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; /**********/ /* Sample */ /**********/ typedef struct _HklLattice HklLattice; typedef struct _HklSampleReflection HklSampleReflection; /* Lattice */ HKLAPI HklLattice *hkl_lattice_new(double a, double b, double c, double alpha, double beta, double gamma, GError **error) HKL_WARN_UNUSED_RESULT; HKLAPI HklLattice *hkl_lattice_new_copy(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklLattice *hkl_lattice_new_default(void) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_lattice_free(HklLattice *self) HKL_ARG_NONNULL(1); HKLAPI const HklParameter *hkl_lattice_a_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_a_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_b_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_b_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_c_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_c_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_alpha_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_alpha_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_beta_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_beta_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_gamma_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_gamma_set(HklLattice *self, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_lattice_volume_get(const HklLattice *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_lattice_set(HklLattice *self, double a, double b, double c, double alpha, double beta, double gamma, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_lattice_get(const HklLattice *self, double *a, double *b, double *c, double *alpha, double *beta, double *gamma, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2, 3, 4, 5, 6, 7); HKLAPI int hkl_lattice_get_B(const HklLattice *self, HklMatrix *B) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_lattice_get_1_B(const HklLattice *self, HklMatrix *B) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_lattice_reciprocal(const HklLattice *self, HklLattice *reciprocal) HKL_ARG_NONNULL(1, 2); /* HklSample */ HKLAPI HklSample *hkl_sample_new(const char *name) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklSample *hkl_sample_new_copy(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_free(HklSample *self) HKL_ARG_NONNULL(1); HKLAPI const char *hkl_sample_name_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_name_set(HklSample *self, const char *name) HKL_ARG_NONNULL(1, 2); HKLAPI const HklLattice *hkl_sample_lattice_get(HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_lattice_set(HklSample *self, const HklLattice *lattice) HKL_ARG_NONNULL(1, 2); HKLAPI const HklParameter *hkl_sample_ux_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_ux_set(HklSample *self, const HklParameter *ux, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_sample_uy_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_uy_set(HklSample *self, const HklParameter *uy, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_sample_uz_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_uz_set(HklSample *self, const HklParameter *uz, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI const HklMatrix *hkl_sample_U_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_U_set(HklSample *self, const HklMatrix *U, GError **error) HKL_ARG_NONNULL(1); HKLAPI const HklMatrix *hkl_sample_UB_get(const HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_UB_set(HklSample *self, const HklMatrix *UB, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI size_t hkl_sample_n_reflections_get(const HklSample *self) HKL_ARG_NONNULL(1); #define HKL_SAMPLE_REFLECTIONS_FOREACH(_item, _list) for((_item)=hkl_sample_reflections_first_get((_list)); \ (_item); \ (_item)=hkl_sample_reflections_next_get((_list), (_item))) HKLAPI HklSampleReflection *hkl_sample_reflections_first_get(HklSample *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklSampleReflection *hkl_sample_reflections_next_get(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_del_reflection(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2); HKLAPI void hkl_sample_add_reflection(HklSample *self, HklSampleReflection *reflection) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_sample_compute_UB_busing_levy(HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI double hkl_sample_get_reflection_measured_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) HKL_ARG_NONNULL(1, 2, 3); HKLAPI double hkl_sample_get_reflection_theoretical_angle(const HklSample *self, const HklSampleReflection *r1, const HklSampleReflection *r2) HKL_ARG_NONNULL(1, 2, 3); HKLAPI int hkl_sample_affine(HklSample *self, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; /* HklSampleReflection */ HKLAPI HklSampleReflection *hkl_sample_reflection_new(const HklGeometry *geometry, const HklDetector *detector, double h, double k, double l, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_reflection_hkl_get(const HklSampleReflection *self, double *h, double *k, double *l) HKL_ARG_NONNULL(1, 2, 3, 4); HKLAPI int hkl_sample_reflection_hkl_set(HklSampleReflection *self, double h, double k, double l, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_sample_reflection_flag_get(const HklSampleReflection *self) HKL_ARG_NONNULL(1); HKLAPI void hkl_sample_reflection_flag_set(HklSampleReflection *self, int flag) HKL_ARG_NONNULL(1); HKLAPI const HklGeometry *hkl_sample_reflection_geometry_get(HklSampleReflection *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_sample_reflection_geometry_set(HklSampleReflection *self, const HklGeometry *geometry) HKL_ARG_NONNULL(1, 2); /**************/ /* PseudoAxis */ /**************/ typedef struct _HklEngine HklEngine; typedef struct _HklEngineList HklEngineList; typedef darray(HklEngine *) darray_engine; /* HklEngine */ HKLAPI const char *hkl_engine_name_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI unsigned int hkl_engine_len(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI const darray_string *hkl_engine_pseudo_axis_names_get(HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_pseudo_axis_values_get(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometryList *hkl_engine_pseudo_axis_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_pseudo_axis_get(const HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineCapabilities { HKL_ENGINE_CAPABILITIES_READABLE = 1u << 0, HKL_ENGINE_CAPABILITIES_WRITABLE = 1u << 1, HKL_ENGINE_CAPABILITIES_INITIALIZABLE = 1u << 2, } HklEngineCapabilities; HKLAPI unsigned int hkl_engine_capabilities_get(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_engine_initialized_get(const HklEngine *self) HKL_ARG_NONNULL(1); HKLAPI int hkl_engine_initialized_set(HklEngine *self, int initialized, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_fprintf(FILE *f, const HklEngine *self) HKL_ARG_NONNULL(1, 2); /* mode */ HKLAPI const darray_string *hkl_engine_modes_names_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_engine_current_mode_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_current_mode_set(HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineAxisNamesGet { HKL_ENGINE_AXIS_NAMES_GET_READ, HKL_ENGINE_AXIS_NAMES_GET_WRITE, } HklEngineAxisNamesGet; HKLAPI const darray_string *hkl_engine_axis_names_get(const HklEngine *self, HklEngineAxisNamesGet mode) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const darray_string *hkl_engine_parameters_names_get(const HklEngine *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_parameter_get(const HklEngine *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_parameter_set(HklEngine *self, const char *name, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_parameters_values_get(const HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_parameters_values_set(HklEngine *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; typedef enum _HklEngineDependencies { HKL_ENGINE_DEPENDENCIES_AXES = 1u << 0, HKL_ENGINE_DEPENDENCIES_ENERGY = 1u << 1, HKL_ENGINE_DEPENDENCIES_SAMPLE = 1u << 2, } HklEngineDependencies; HKLAPI unsigned int hkl_engine_dependencies_get(const HklEngine *self) HKL_ARG_NONNULL(1); /* HklEngineList */ HKLAPI void hkl_engine_list_free(HklEngineList *self) HKL_ARG_NONNULL(1); HKLAPI darray_engine *hkl_engine_list_engines_get(HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometry *hkl_engine_list_geometry_get(HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_list_geometry_set(HklEngineList *self, const HklGeometry *geometry) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_list_select_solution(HklEngineList *self, const HklGeometryListItem *item) HKL_ARG_NONNULL(1); HKLAPI HklEngine *hkl_engine_list_engine_get_by_name(HklEngineList *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_init(HklEngineList *self, HklGeometry *geometry, HklDetector *detector, HklSample *sample) HKL_ARG_NONNULL(1, 2, 3, 4); HKLAPI int hkl_engine_list_get(HklEngineList *self) HKL_ARG_NONNULL(1); HKLAPI const darray_string *hkl_engine_list_parameters_names_get(const HklEngineList *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const HklParameter *hkl_engine_list_parameter_get(const HklEngineList *self, const char *name, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI int hkl_engine_list_parameter_set(HklEngineList *self, const char *name, const HklParameter *parameter, GError **error) HKL_ARG_NONNULL(1, 2, 3) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_parameters_values_get(const HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type) HKL_ARG_NONNULL(1, 2); HKLAPI int hkl_engine_list_parameters_values_set(HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error) HKL_ARG_NONNULL(1, 2) HKL_WARN_UNUSED_RESULT; HKLAPI void hkl_engine_list_fprintf(FILE *f, const HklEngineList *self) HKL_ARG_NONNULL(1, 2); /***********/ /* Factory */ /***********/ typedef struct _HklFactory HklFactory; HKLAPI HklFactory **hkl_factory_get_all(size_t *n) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklFactory *hkl_factory_get_by_name(const char *name, GError **error) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI const char *hkl_factory_name_get(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklGeometry *hkl_factory_create_new_geometry(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; HKLAPI HklEngineList *hkl_factory_create_new_engine_list(const HklFactory *self) HKL_ARG_NONNULL(1) HKL_WARN_UNUSED_RESULT; G_END_DECLS #endif hkl-5.1.7/COPYING0000664000175000017500000010451414677222567012346 0ustar00piccapicca GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . hkl-5.1.7/hkl3d.pc.in0000664000175000017500000000044114677222567013243 0ustar00piccapiccaprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: hkl3d Description: Library for hkl Diffractometer computation Version: @VERSION@ Requires: hkl libg3d URL: http://repo.or.cz/w/hkl3d.git Libs: -L${libdir} -lhkl3d Cflags: -I${includedir}/hkl3d-@VMAJ@ hkl-5.1.7/ChangeLog0000664000175000017500001031733215144640572013060 0ustar00piccapicca# Generated by Makefile. Do not edit. commit 82fdfd1970a9d0221d8dc3cab072f370f53bc013 Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 17:08:25 2026 +0100 pre-release NEWS | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6269cdc496719bd973b96aa19b03cf9c8bf1bed6 Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 14:41:43 2026 +0100 [tests] typo for arm64 and ppc64el NEWS | 3 +++ tests/hkl-binoculars-t.c | 9 ++++----- 2 files changed, 7 insertions(+), 5 deletions(-) commit 78271cb7a3bb7072af15574139a3e89b69e25e87 Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 10:41:49 2026 +0100 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3bc5dc3e7f8be6e55f8064f164acedec11a4e13b Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 10:41:49 2026 +0100 released configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 74d868de1311a4c5261f14f4b73eca0dc4f6a6da Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 10:32:31 2026 +0100 pre-release NEWS | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 45feb026590243adcb72dd35840ca7a9b60032b7 Author: Picca Frédéric-Emmanuel Date: Mon Feb 16 10:26:23 2026 +0100 fix FTBFS on multiple architectures. NEWS | 5 +++++ tests/hkl-binoculars-t.c | 31 +++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) commit a624ca68f85f423e7276458d37c1fc99480982a1 Author: Picca Frédéric-Emmanuel Date: Fri Feb 13 14:55:19 2026 +0100 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 514e371aa54ab87a612dbb93d2f1df00ef525fa0 Author: Picca Frédéric-Emmanuel Date: Fri Feb 13 14:55:19 2026 +0100 released configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 13166adbcb934f96490eda962ac9b849575e858d Author: Picca Frédéric-Emmanuel Date: Fri Feb 13 14:45:13 2026 +0100 pre-release 5.1.5 NEWS | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit f665fcf30fe380bd7f10014f151c438f7fdc6427 Author: Picca Frédéric-Emmanuel Date: Fri Feb 13 13:40:27 2026 +0100 clean all the files with clean-all .../hkl-binoculars-detectors-2d-private.h | 24 +- binoculars-ng/binoculars/hkl-binoculars.c | 6 +- gui/hkl-gui-3d.c | 744 ++++++++++----------- gui/hkl-gui-engine.c | 16 +- gui/hkl-gui-factory.c | 6 +- gui/hkl-gui-geometry.c | 12 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui-parameter.c | 6 +- gui/hkl-gui-sample.c | 4 +- gui/hkl-gui.c | 478 ++++++------- gui/hkl-gui.h | 4 +- hkl/hkl-trajectory-private.h | 18 +- tests/hkl-binoculars-t.c | 2 +- tests/tap/basic.h | 18 +- 14 files changed, 670 insertions(+), 670 deletions(-) commit e7411e8dada1120a8a9891f4a0c746f4f4eb52e0 Author: Picca Frédéric-Emmanuel Date: Fri Feb 13 12:59:37 2026 +0100 [binoculars-ng] build with ghc 9.10 NEWS | 3 ++- binoculars-ng/hkl.cabal.in | 2 +- binoculars-ng/src/Hkl/Binoculars/Config.hs | 19 ++++++++++--------- binoculars-ng/src/Hkl/DataSource.hs | 6 +++--- binoculars-ng/src/Hkl/Image.hs | 5 +++++ 5 files changed, 21 insertions(+), 14 deletions(-) commit db5bbd37b379e9c746e499b459cc8279bd825a44 Author: Picca Frédéric-Emmanuel Date: Wed Feb 4 16:44:54 2026 +0100 [gui] toggled button to display bullet and/or models NEWS | 10 +++-- gui/hkl-gui-3d.c | 110 ++++++++++++++++++++++++++++++++----------------- hkl3d/hkl3d-bullet.cpp | 29 +++++-------- hkl3d/hkl3d-gl.cpp | 20 ++++----- hkl3d/hkl3d-private.h | 4 +- hkl3d/hkl3d.cpp | 2 +- hkl3d/hkl3d.h | 26 ++++++------ 7 files changed, 114 insertions(+), 87 deletions(-) commit fb3f0057d451f29e1ce065518fca254a4132ce3b Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 09:56:17 2026 +0100 [hkl3d] enable GL_BLEND for better collision model display gui/hkl-gui-3d.c | 3 +++ 1 file changed, 3 insertions(+) commit 9ed53b071045ff908d153ecfd4e3e747198598d6 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 09:55:25 2026 +0100 [hkl3d] do not use CullFace (better model looking) gui/hkl-gui-3d.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 70d356349feac2f89f54dab63cff6b20196a4197 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 09:53:39 2026 +0100 [hkl3d] draw a smaller sphere at the contact point hkl3d/hkl3d-bullet.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 025bb2f414d5e8494176d9e56f92b6a0fbd122d4 Author: Picca Frédéric-Emmanuel Date: Thu Jan 29 20:28:05 2026 +0100 [hkl3d] factorize the default viewPos hkl3d/hkl3d-gl.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 8f764a51b1d8bc8f4a4fa2cb60141501a01a0052 Author: Picca Frédéric-Emmanuel Date: Tue Jan 27 11:28:10 2026 +0100 [hkl] added Soleil Cristal K4C diffractometer gui/hkl-gui-factory.c | 6 +- hkl/Makefile.am | 1 + hkl/hkl-engine-soleil-cristal-k4c.c | 422 ++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d.h | 4 +- 4 files changed, 428 insertions(+), 5 deletions(-) commit d3f3a6edb9b7f3d42598d113b61e2835b0a976a0 Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 18:56:03 2026 +0100 [doc] include the News file in the Documentation Documentation/hkl.org.in | 197 +++++---------------------------------------- NEWS | 203 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 207 insertions(+), 193 deletions(-) commit 5a5b0c7477d3d93099de8b0f877efe52446e979f Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 18:06:27 2026 +0100 [doc] restore a working doc-publish target Documentation/Makefile.am | 6 +++--- Documentation/hkl-default.el | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) commit 5e686a0b9a341dd426e4805b517347a7035a2df1 Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 10:35:17 2026 +0100 [buildsystem] autoupdate binoculars-ng/Makefile.am | 2 +- configure.ac | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) commit c2e456ad2ca20ef934e3cb34e8e3e5423edafc4f Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 16:03:17 2026 +0100 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e4de11fc75583bee7bbac661bb6488eb95d210aa Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 16:03:16 2026 +0100 released INSTALL | 498 +++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 255 insertions(+), 243 deletions(-) commit 02a960823606deba7e2b109ec577046d4c78eaef Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 15:44:32 2026 +0100 prepare release NEWS | 2 +- configure.ac | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 356f86b42c25d006e417e94c42c2c59d9f2de87d Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 22:10:32 2025 +0100 [hkl3d] display the colliding object names for debugging models... data/blender_gltf_converter.py | 6 ++++-- hkl3d/hkl3d-bullet.cpp | 25 +++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) commit 6a8db51c511c49fcc2f0ca74050e9aef94eb6fa0 Author: Picca Frédéric-Emmanuel Date: Tue Dec 16 17:14:10 2025 +0100 [hkl3d] display bullet only in debug mode. hkl3d/Makefile.am | 2 +- hkl3d/hkl3d-bullet.cpp | 30 ++++++++---------------------- hkl3d/hkl3d-gl.cpp | 9 ++++----- hkl3d/hkl3d-private.h | 6 ++---- 4 files changed, 15 insertions(+), 32 deletions(-) commit 172431acd9b48a45512f5e66edfc4ddba3071b3b Author: Picca Frédéric-Emmanuel Date: Tue Dec 16 16:41:02 2025 +0100 [hkl3d] dedicated shader for the bullet part. hkl3d/bullet.glsl | 34 ++++++++++++++++ hkl3d/hkl3d-bullet.cpp | 3 ++ hkl3d/hkl3d-gl.cpp | 108 +++++++++++++++++++++++++++++++++++-------------- hkl3d/hkl3d-private.h | 1 + 4 files changed, 115 insertions(+), 31 deletions(-) commit bfc6e13f4b55c52e8dc22a9dd1b241def89140cb Author: Picca Frédéric-Emmanuel Date: Tue Dec 16 13:44:39 2025 +0100 [hkl3d] rework the shader part with C macros hkl3d/Makefile.am | 4 +- hkl3d/hkl3d-gl.cpp | 125 +++++----------------------------------------------- hkl3d/model.glsl | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 116 deletions(-) commit 4c6a5894aefbaad305926fd2d4932a45b3a24ce0 Author: Picca Frédéric-Emmanuel Date: Tue Dec 16 13:43:59 2025 +0100 [hkl3d] added a bullet debug drawer hkl3d/hkl3d-bullet.cpp | 61 +++++++++++++++++++++++- hkl3d/hkl3d-gl.cpp | 123 ++++++------------------------------------------- hkl3d/hkl3d-private.h | 1 + 3 files changed, 74 insertions(+), 111 deletions(-) commit 1b8dde9d5afe89d6d8db657bc973f00b524848a6 Author: Picca Frédéric-Emmanuel Date: Mon Dec 15 14:10:13 2025 +0100 [hkl3d] reactivate the aabb draw gui/hkl-gui-3d.c | 2 +- hkl3d/hkl3d-bullet.cpp | 23 +++++++++++++++++++++- hkl3d/hkl3d-gl.cpp | 53 +++++++++++++++++++++++++++----------------------- hkl3d/hkl3d-object.cpp | 21 -------------------- hkl3d/hkl3d-private.h | 5 ++++- hkl3d/hkl3d.h | 8 +++----- 6 files changed, 59 insertions(+), 53 deletions(-) commit 088ddf052a6439429dde8a2ea824d0ea30b0376f Author: Picca Frédéric-Emmanuel Date: Mon Dec 15 11:00:57 2025 +0100 [hkl3d] fix color errors... sometimes the ambiant is not available in the materials.... the shininess was wrong... hkl3d/hkl3d-gl.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit d13e1e68d3f04abf479a8a18f3f9c7752444e0fb Author: Picca Frédéric-Emmanuel Date: Fri Dec 12 17:12:47 2025 +0100 [hkl3] create only one mesh for an axis in the collision system. this does not work yet... data/Makefile.am | 4 -- hkl3d/hkl3d-bullet.cpp | 118 ++++++++++++++++++++++++++++++++----------------- hkl3d/hkl3d-private.h | 4 +- 3 files changed, 79 insertions(+), 47 deletions(-) commit 323693fe90204925ce4a951493a42f03b2094836 Author: Picca Frédéric-Emmanuel Date: Wed Dec 10 17:35:51 2025 +0100 [hkl3d] move the bullet part out of the Hkl3DObject. the next step will be to merge all mesh of a dedicated axis. Let see if this make the cristal-4C geometry usable as it. hkl3d/hkl3d-bullet.cpp | 55 +++++++++++++++++++++++++++++------------------- hkl3d/hkl3d-geometry.cpp | 1 - hkl3d/hkl3d-object.cpp | 7 +----- hkl3d/hkl3d-private.h | 11 +++++----- hkl3d/hkl3d.cpp | 25 ++-------------------- 5 files changed, 42 insertions(+), 57 deletions(-) commit df6406cf0bb25cf0d76b473a0f22c143f45359df Author: Picca Frédéric-Emmanuel Date: Tue Nov 25 11:11:42 2025 +0100 [hkl3d] generate Hkl3DGeometry from the Hkl3DConfig and Hkl3DBullet The idea is to simplify the code as much has possible binoculars-ng/binoculars/Makefile.am | 16 +- data/Makefile.am | 5 +- hkl/Makefile.am | 31 +- hkl3d/Makefile.am | 17 +- hkl3d/hkl3d-bullet.cpp | 251 +++++++++++ hkl3d/hkl3d-config.cpp | 127 ++++-- hkl3d/hkl3d-geometry.cpp | 278 ++++++++++++ hkl3d/hkl3d-model.cpp | 133 ++++++ hkl3d/hkl3d-object.cpp | 216 +++++++++ hkl3d/hkl3d-private.h | 70 ++- hkl3d/hkl3d.cpp | 835 +---------------------------------- hkl3d/hkl3d.h | 15 +- tests/Makefile.am | 2 +- tests/hkl3d-test-t.c | 62 ++- 14 files changed, 1121 insertions(+), 937 deletions(-) commit 366b0330557d54a76280d5c7898611aebc8a55b3 Author: Picca Frédéric-Emmanuel Date: Tue Nov 25 10:39:46 2025 +0100 [hkl3d] remove useless empty constructor hkl3d/hkl3d.cpp | 93 ++++++++++++++++++++++++--------------------------------- 1 file changed, 39 insertions(+), 54 deletions(-) commit 29b04366e9149d701ae959732cdf0c2e91cf73d1 Author: Picca Frédéric-Emmanuel Date: Tue Nov 25 10:19:39 2025 +0100 [hkl3d] fix model filename for cristal data/soleil-cristal-4c.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b26ce1882f2081380262c9ec43fe526d83d55938 Author: Picca Frédéric-Emmanuel Date: Tue Nov 25 09:20:07 2025 +0100 [hkl3d] use a private darray_axis in the Hkl3DGeometry hkl3d/hkl3d-private.h | 11 ++++++++--- hkl3d/hkl3d.cpp | 31 +++++++++++++++---------------- hkl3d/hkl3d.h | 3 --- tests/hkl3d-test-t.c | 6 ++++-- 4 files changed, 27 insertions(+), 24 deletions(-) commit 3b4c3496c4f687038b0961f9823f585ef784933f Author: Picca Frédéric-Emmanuel Date: Tue Nov 25 09:02:35 2025 +0100 [hkl3d] use darra_object in the Hkl3DAxis hkl/ccan/darray/darray.h | 15 +++++++++++---- hkl3d/hkl3d-private.h | 3 +-- hkl3d/hkl3d.cpp | 45 ++++++++++++++++++++------------------------- tests/hkl3d-test-t.c | 2 +- 4 files changed, 33 insertions(+), 32 deletions(-) commit 1891492e73cd6f370f989affcc66b99d52acac36 Author: Picca Frédéric-Emmanuel Date: Sun Nov 23 17:58:32 2025 +0100 [hkl3d] fix C++ warning via update of ccan hkl/ccan/darray/darray.h | 20 +++++++------------- hkl3d/Makefile.am | 1 - 2 files changed, 7 insertions(+), 14 deletions(-) commit fd52a271b3ac6854a426683449c27b00216d0583 Author: Picca Frédéric-Emmanuel Date: Sun Nov 23 14:21:44 2025 +0100 [hkl3d] factorize the models name in an uniq place (hkl3d.h) gui/hkl-gui-factory.c | 5 +++-- hkl3d/hkl3d.h | 3 +++ tests/hkl3d-test-t.c | 4 +--- 3 files changed, 7 insertions(+), 5 deletions(-) commit bd7479d7967a3950e4fa6458bb75b45edc868e81 Author: Picca Frédéric-Emmanuel Date: Fri Nov 21 16:01:41 2025 +0100 [hkl3d] rework the diffabs model and update the file accordingly. Now the blender scene graph node reflect the physical transformations data/soleil-diffabs.yaml | 6 +++--- hkl3d/hkl3d.cpp | 2 +- tests/hkl3d-test-t.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) commit f937932b26f1dd3da5e792f14d55e4b0a65a61b2 Author: Picca Frédéric-Emmanuel Date: Fri Nov 21 15:46:27 2025 +0100 [hkl3d] do not pre transform mesh when loading the model This destroy the scene structure. We will use this structure to connect mesh with hkl axes. data/soleil-cristal-4c.yaml | 820 +------------------------------------------- gui/hkl-gui-3d.c | 79 ----- hkl3d/hkl3d.cpp | 85 ++++- 3 files changed, 92 insertions(+), 892 deletions(-) commit 7cb355f158561b89a76cd0e9fc51318ff31ac08d Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 16:07:35 2025 +0100 [hkl3d] rename the models data/Makefile.am | 9 +- data/{cristal4C.yaml => soleil-cristal-4c.yaml} | 226 ++++++++++++++++++++++++ data/{diffabs.yaml => soleil-diffabs.yaml} | 2 +- gui/hkl-gui-factory.c | 4 +- hkl3d/hkl3d.cpp | 2 +- 5 files changed, 236 insertions(+), 7 deletions(-) commit 96eb9d8a29ae2d815cd8569538bd660da94cc7e4 Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 14:18:08 2025 +0100 [hkl3d] now loading a model file complain if all the mesh are not configured data/cristal4C.yaml | 1074 ++++++++---------------------------------------- hkl3d/hkl3d-config.cpp | 18 +- 2 files changed, 181 insertions(+), 911 deletions(-) commit 0f60599911b8c0742d2af6a23d9b81dde056e625 Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 13:28:45 2025 +0100 [hkl3d] fix issue in the model loader when connecting axes hkl3d/hkl3d.cpp | 49 +++++++++++++++++++++++++++++-------------------- hkl3d/hkl3d.h | 2 +- 2 files changed, 30 insertions(+), 21 deletions(-) commit 8e7b99be69d04100b870922e1ef5e6f0ddc2f778 Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 11:47:42 2025 +0100 [hkl3d] import all the 3ds file for cristal4 The object is to prepare a blend file for Cristal. data/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 2730089456acfe136bcfa7358ce79e2c18189d6b Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 10:15:09 2025 +0100 [hkl3d] clean also the pngs data/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 10782b657026221ef1f3b03521ab42aeaae7cddf Author: Picca Frédéric-Emmanuel Date: Wed Nov 19 17:37:47 2025 +0100 [hkl3d] prepare for hkl3d_load_config -> hkl3d_config_new hkl3d/hkl3d-config.cpp | 2 -- hkl3d/hkl3d.cpp | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) commit 0bd2fe3b6edee69d94f0d56fec1bc2fee84b87ae Author: Picca Frédéric-Emmanuel Date: Wed Nov 19 17:23:19 2025 +0100 [hkl3d] move the config filename in Hkl3DConfig hkl3d/hkl3d-config.cpp | 3 ++- hkl3d/hkl3d-private.h | 2 +- hkl3d/hkl3d.cpp | 12 ++++++++---- hkl3d/hkl3d.h | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) commit ed9321368cfb23adae9ec32e77997cabfca879f8 Author: Picca Frédéric-Emmanuel Date: Wed Nov 19 16:59:09 2025 +0100 [doc] news updated NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit be7fa53b1462359eebe8b550adab368861c840df Author: Picca Frédéric-Emmanuel Date: Tue Nov 18 15:07:06 2025 +0100 [hkl3d] rework the yaml parser It is now a lot more resistant to errors. hkl3d/Makefile.am | 2 +- hkl3d/hkl3d-config.cpp | 893 +++++++++++++++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d-private.h | 5 +- hkl3d/hkl3d.cpp | 484 ++++++--------------------- hkl3d/hkl3d.h | 12 +- 5 files changed, 1015 insertions(+), 381 deletions(-) commit e7b31b13414a246fcc7a0c8449a6674f66c40794 Author: Picca Frédéric-Emmanuel Date: Tue Nov 18 14:06:51 2025 +0100 [doc] updated to reflect the current build process .gitignore | 1 + Documentation/figures/Makefile.am | 4 +++ Documentation/figures/ghkl-collision.png | Bin 0 -> 147144 bytes Documentation/figures/ghkl.png | Bin 0 -> 146558 bytes Documentation/hkl.org.in | 52 +++++++++++++++++-------------- 5 files changed, 34 insertions(+), 23 deletions(-) commit 6911f8035a8dde583b8c34d2987b0d480868f30e Author: Picca Frédéric-Emmanuel Date: Tue Nov 18 10:47:17 2025 +0100 [gui] move the OpenGL part into the hkl3d library NEWS | 5 +- configure.ac | 1 + data/Makefile.am | 27 ++- gui/hkl-gui-3d.c | 515 +----------------------------------------------- hkl3d/Makefile.am | 4 +- hkl3d/hkl3d-gl.cpp | 529 ++++++++++++++++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d-private.h | 144 ++++++++++++++ hkl3d/hkl3d.cpp | 179 +++++++++-------- hkl3d/hkl3d.h | 109 +++-------- tests/hkl3d-test-t.c | 24 ++- 10 files changed, 836 insertions(+), 701 deletions(-) commit f8ca9c470e1ae803f1a497c7cb5fbdf1544de6c5 Author: Picca Frédéric-Emmanuel Date: Wed Nov 5 17:51:15 2025 +0100 [hkl3d] migrates from g3d to assimp configure.ac | 98 +++--- data/Makefile.am | 17 +- data/blender_gltf_converter.py | 67 ++++ data/diffabs.dae | 701 ----------------------------------------- data/diffabs.yaml | 30 +- gui/hkl-gui-3d.c | 299 +++++++++++++----- gui/hkl-gui.c | 1 - hkl3d/Makefile.am | 6 +- hkl3d/hkl3d.cpp | 427 ++++++++++--------------- hkl3d/hkl3d.h | 19 +- 10 files changed, 550 insertions(+), 1115 deletions(-) commit 27b55c9c61a4b6603235b232e808160bcd90ad0c Author: Picca Frédéric-Emmanuel Date: Tue Nov 4 22:28:43 2025 +0100 [hkl3d] use g_new0 instead of home made... hkl3d/hkl3d.cpp | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) commit f1a82658066cbb8761a5317637ab95945fecad4b Author: Picca Frédéric-Emmanuel Date: Tue Nov 4 22:18:13 2025 +0100 [ghkl] better light gui/hkl-gui-3d.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 598d8ea737dcd80fd81478e157f5b038f89cd6fc Author: Picca Frédéric-Emmanuel Date: Tue Oct 14 14:39:41 2025 +0200 [ghkl] first working 3d frame configure.ac | 5 +- gui/3d-4.ui | 146 --- gui/3d.ui | 218 ---- gui/Makefile.am | 12 +- gui/ghkl-4.ui | 1836 -------------------------------- gui/ghkl.ui | 2359 ------------------------------------------ gui/hkl-gui-3d-gl.c | 803 -------------- gui/hkl-gui-3d-gl.h | 64 -- gui/hkl-gui-3d.c | 1183 +++++++++++++-------- gui/hkl-gui-3d.h | 16 +- gui/hkl-gui-diffractometer.c | 1 - gui/hkl-gui-factory.c | 63 +- gui/hkl-gui-item-factories.c | 2 + gui/hkl-gui.c | 51 +- gui/hkl-gui.h | 2 + hkl3d/hkl3d.cpp | 55 +- 16 files changed, 845 insertions(+), 5971 deletions(-) commit 32af5430a3b1854d23981efcdb1ec7a2c5a66dab Author: Picca Frédéric-Emmanuel Date: Tue Oct 14 14:03:52 2025 +0200 [ghkl] implement for real the compute UB action gui/hkl-gui-factory.c | 6 ++---- gui/hkl-gui-sample.c | 50 ++++++++++++++++++++++++++++++++++++++++++++------ gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 4 +++- 4 files changed, 50 insertions(+), 12 deletions(-) commit e22667260be109240c35bbcafe0aef5fe5b72436 Author: Picca Frédéric-Emmanuel Date: Mon Oct 13 11:04:10 2025 +0200 [ghkl] added check buttons in order to define the or0 and or1 reflections gui/hkl-gui-factory.c | 11 ++-- gui/hkl-gui-item-factories.c | 15 +++++ gui/hkl-gui-sample.c | 139 +++++++++++++++++++++++++++++-------------- gui/hkl-gui.c | 1 + gui/hkl-gui.h | 10 +++- 5 files changed, 125 insertions(+), 51 deletions(-) commit 406eb3932707f0453e7588c8377addb751579eaf Author: Picca Frédéric-Emmanuel Date: Sun Oct 12 14:41:36 2025 +0200 [ghkl] added the or0 and or1 to the HklGuiSample The next step is to find a way to defines theses reflection in the sample. gui/hkl-gui-factory.c | 21 +++++++++++++ gui/hkl-gui-sample.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui.c | 81 +++++++++++++++------------------------------------ gui/hkl-gui.h | 8 +++++ 4 files changed, 128 insertions(+), 58 deletions(-) commit 55b0904b2abd7133f9f4225b9fdfe4d790a0ba65 Author: Picca Frédéric-Emmanuel Date: Sun Oct 12 09:49:52 2025 +0200 [ghkl] fix a segfault when modifying a list store while itering It seems that modifying a liststore as an effect on the bitset iterator... gui/hkl-gui-sample.c | 15 ++++++++++++--- gui/hkl-gui.h | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) commit 5e943870e6e0368eaa95664033286309aecbbe05 Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 14:04:52 2025 +0200 [ghkl] store the selection model in the HklGuiWindow struct gui/hkl-gui.c | 74 ++++++++++++++++++++++++++--------------------------------- 1 file changed, 33 insertions(+), 41 deletions(-) commit 0881639bdab69ece20613b2d87c3d51ef4dddf56 Author: Picca Frédéric-Emmanuel Date: Fri Oct 10 17:12:47 2025 +0200 [ghkl] column_view_axes_single_selection gui/hkl-gui.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 92cf09e9730d15a964d959aad729966dd7c171b2 Author: Picca Frédéric-Emmanuel Date: Fri Oct 10 17:03:13 2025 +0200 [ghkl] use a multi selection for the reflections gui/hkl-gui-factory.c | 4 ++-- gui/hkl-gui-sample.c | 20 +++++++++++++------- gui/hkl-gui.c | 32 ++++++++++++++++++++------------ gui/hkl-gui.h | 4 ++-- 4 files changed, 37 insertions(+), 23 deletions(-) commit 6df6f6d02daa42ad7be6776461e64210327ad684 Author: Picca Frédéric-Emmanuel Date: Thu Oct 9 17:50:02 2025 +0200 [ghkl] avoid a seg fault... gui/hkl-gui-sample.c | 2 ++ 1 file changed, 2 insertions(+) commit e72e1349b6bb990900cb2fb590fac51067fcd3a8 Author: Picca Frédéric-Emmanuel Date: Thu Oct 9 17:31:03 2025 +0200 [ghkl] change reflections when selecting a sample in the column view gui/hkl-gui-factory.c | 9 ++++----- gui/hkl-gui.c | 47 ++++++++++++++++++++++++++++++++++++++++++----- gui/hkl-gui.h | 4 ++-- 3 files changed, 48 insertions(+), 12 deletions(-) commit 63f28efdefe82778d036e4681e9ad3f463566d37 Author: Picca Frédéric-Emmanuel Date: Thu Oct 9 15:23:22 2025 +0200 [ghkl] added the add and del sample reflection. gui/hkl-gui-factory.c | 6 ++ gui/hkl-gui-sample.c | 14 +++ gui/hkl-gui.c | 255 ++------------------------------------------------ gui/hkl-gui.h | 2 + 4 files changed, 31 insertions(+), 246 deletions(-) commit 12e93aca743362884462b09267c3f4881556b720 Author: Picca Frédéric-Emmanuel Date: Thu Oct 9 14:33:07 2025 +0200 [ghkl] setup an entry for numerics and use it for reflection and samples gui/hkl-gui-factory.c | 2 +- gui/hkl-gui-geometry.c | 38 ++++++++++-------- gui/hkl-gui-item-factories.c | 86 +++++++++++++++++++++++++++++++++++++++-- gui/hkl-gui-macros.h | 6 +++ gui/hkl-gui-sample-reflection.c | 28 +++++--------- gui/hkl-gui.c | 18 ++++----- gui/hkl-gui.h | 12 +++++- 7 files changed, 140 insertions(+), 50 deletions(-) commit 6aaf792f3bca65ea5d4a13faa38fbd6d287fe053 Author: Picca Frédéric-Emmanuel Date: Fri Oct 3 17:36:55 2025 +0200 wip gui/hkl-gui-factory.c | 32 ++++---- gui/hkl-gui-item-factories.c | 183 ++++++++++++++++++++++++++++++++----------- gui/hkl-gui.h | 1 + 3 files changed, 152 insertions(+), 64 deletions(-) commit 476c62738ececc4fd89f14af5c30b211cd4c6aa8 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 16:06:18 2025 +0200 [ghkl] vertical spin box. gui/hkl-gui-sample-reflection.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6f31406a3d17c2e98afa47dd8e34817100ee9c78 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 15:50:05 2025 +0200 [ghkl] implement the add reflection action gui/hkl-gui-factory.c | 14 ++++++++++++++ gui/hkl-gui-sample.c | 22 ++++++++++++++++++++++ gui/hkl-gui.c | 47 ++--------------------------------------------- gui/hkl-gui.h | 14 +++++++++++--- 4 files changed, 49 insertions(+), 48 deletions(-) commit 6f346a91f40c8844e12ceae43d8a537a41c4bc68 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 15:27:12 2025 +0200 [ghkl] added the h, k ,l properties to HklGuiSampleReflection gui/hkl-gui-sample-reflection.c | 111 ++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui.h | 6 +++ 2 files changed, 117 insertions(+) commit 9f9eea18e8d8c917bfd6239de1cef8f7d7fb0fd9 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 15:03:54 2025 +0200 [ghkl] prepare the column_view for sample reflections gui/hkl-gui-factory.c | 32 ++++++++++++++++++++++++++++ gui/hkl-gui-sample-reflection.c | 46 +++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui-sample.c | 17 +++++++++++++++ gui/hkl-gui.c | 10 +++++++++ gui/hkl-gui.h | 8 +++++++ 5 files changed, 113 insertions(+) commit 26bf7d9c71deb9823fa78ffb0d0b031afed9ea23 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 12:32:31 2025 +0200 [ghkl] prepare the gui part for reflections. need to implement the action now. gui/hkl-gui.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 129 insertions(+), 8 deletions(-) commit f851a832b6698ff1ab208f932888734e4d6eba1a Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 11:57:30 2025 +0200 [ghkl] added a HklGuiSampleReflection type gui/Makefile.am | 1 + gui/hkl-gui-sample-reflection.c | 185 ++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui-sample.c | 11 +-- gui/hkl-gui.h | 15 +++- 4 files changed, 201 insertions(+), 11 deletions(-) commit 1f7e821c5da3573d2ecd09bfaa908dd08b7e4fc2 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 11:09:08 2025 +0200 [ghkl] added a scrolled windo for the samples configurations gui/hkl-gui.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) commit 4f0eec9bd628906fd4a9ba48e705c61486de9c6f Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 10:54:25 2025 +0200 [ghkl] frame_samples -> frame_sample gui/hkl-gui.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 80bebceb21555f20106e9c130388aa860d191c60 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 10:40:55 2025 +0200 [ghkl] added a bunch of tooltip and reoganize the sample part gui/hkl-gui.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) commit d7e9cf99740734d017513a2da71296d6994e6861 Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 10:20:17 2025 +0200 [ghkl] unsensitive the delete button when it remains only one sample gui/hkl-gui.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) commit 8f547b4255d67fc28c0aecc7206b6c54294dc158 Author: Picca Frédéric-Emmanuel Date: Wed Oct 1 17:20:53 2025 +0200 [ghkl] selection the new added sample in the list gui/hkl-gui.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit f34bf457a0b28aa22eb50b43018769d9ea93b4f1 Author: Picca Frédéric-Emmanuel Date: Wed Oct 1 15:53:29 2025 +0200 [ghkl] Added button to deal with samples add/copy/delete gui/hkl-gui-sample.c | 18 +++ gui/hkl-gui.c | 336 +++++++++++++-------------------------------------- gui/hkl-gui.h | 1 + 3 files changed, 105 insertions(+), 250 deletions(-) commit d6fec7ee90e72c8ec870c123116fe672648b1232 Author: Picca Frédéric-Emmanuel Date: Tue Sep 30 18:08:38 2025 +0200 [ghkl] new way to deal with column_view item factories gui/hkl-gui-engine.c | 17 ++++------- gui/hkl-gui-item-factories.c | 37 +++++++++++++++++++++++ gui/hkl-gui-macros.h | 10 ++++++ gui/hkl-gui-parameter.c | 51 ++----------------------------- gui/hkl-gui.c | 72 ++++++++++---------------------------------- gui/hkl-gui.h | 21 +++++++++---- 6 files changed, 87 insertions(+), 121 deletions(-) commit ce7387f68b0f09d94c8ccf7fce6db700117468c2 Author: Picca Frédéric-Emmanuel Date: Tue Sep 30 16:59:20 2025 +0200 [ghkl] factorize the code for the column item_factory gui/hkl-gui-factory.c | 24 +++++++++++++++++++ gui/hkl-gui-item-factories.c | 57 ++++++++++++++++++++++++++++++++++++++++---- gui/hkl-gui.c | 48 ++++++++++++++++++++++++------------- gui/hkl-gui.h | 7 ++++++ 4 files changed, 115 insertions(+), 21 deletions(-) commit 3e6b9113348c59cda96d0a5d2854baf5f0b50867 Author: Picca Frédéric-Emmanuel Date: Tue Sep 30 12:58:19 2025 +0200 [ghkl] use a GtkEntry to edit the sample parameters. gui/hkl-gui-item-factories.c | 33 +++++++++++++++++++++++++++++++++ gui/hkl-gui.c | 30 +++++++++++++++--------------- gui/hkl-gui.h | 7 +++++++ 3 files changed, 55 insertions(+), 15 deletions(-) commit 3d22f8604ef70ff858a2a04004367ec68b0cfa96 Author: Picca Frédéric-Emmanuel Date: Tue Sep 30 12:01:00 2025 +0200 [ghkl] remove useless code gui/hkl-gui.c | 467 ---------------------------------------------------------- 1 file changed, 467 deletions(-) commit 3bfefbdee5cb0c55454ac45e901362f407b443a5 Author: Picca Frédéric-Emmanuel Date: Tue Sep 30 10:32:56 2025 +0200 [ghkl] Added a column view for the samples gui/hkl-gui-sample.c | 377 ++++++++++++++++++++++++++++++++++++++++++++++++++- gui/hkl-gui.c | 69 ++++++---- gui/hkl-gui.h | 20 +++ 3 files changed, 431 insertions(+), 35 deletions(-) commit 47b62904e341859a85cd75f5d5e02aa0832448d8 Author: Picca Frédéric-Emmanuel Date: Mon Sep 29 16:17:07 2025 +0200 [ghkl] Added an empty frame for the crystal configuration gui/hkl-gui-sample.c | 9 +++++++++ gui/hkl-gui.c | 52 +++++++++++++++++++++++++++++++++++++++++++--------- gui/hkl-gui.h | 2 ++ 3 files changed, 54 insertions(+), 9 deletions(-) commit 34cf74ce98e89f9c8a18e3cb7fccfd7505da05f6 Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 18:15:04 2025 +0200 [ghkl] connect the drop down sample to the HklGuiFactory. gui/hkl-gui-factory.c | 38 ++++++++++++++++++++++++++++++++++---- gui/hkl-gui-sample.c | 6 ++++++ gui/hkl-gui.c | 11 +++++++---- gui/hkl-gui.h | 6 +++++- 4 files changed, 52 insertions(+), 9 deletions(-) commit 04e97976abf02cd8f7ceb1d503ebdc63d57655de Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 15:32:16 2025 +0200 [ghkl] move the drop down item factory code in hkl-gui.c gui/hkl-gui-factory.c | 10 ---------- gui/hkl-gui.c | 12 ++++++++---- gui/hkl-gui.h | 2 -- 3 files changed, 8 insertions(+), 16 deletions(-) commit 8aad76df79174cc4d33afc54a4b9655b662b5b1a Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 15:16:27 2025 +0200 [ghkl] factorise the hkl_gui_bind_item_factory_label_property_cb It is easier to create a dropdown displaying list. gui/hkl-gui-factory.c | 46 ++++++++++++++++++++++---------------------- gui/hkl-gui-item-factories.c | 17 ++++++++++++++++ gui/hkl-gui-parameter.c | 18 +---------------- gui/hkl-gui.c | 15 +-------------- gui/hkl-gui.h | 6 ++++++ 5 files changed, 48 insertions(+), 54 deletions(-) commit a6b7de87506181f01948696f6f07e51359f5b83a Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 14:48:52 2025 +0200 [ghkl] added a name property to the HklGuiEngine gui/hkl-gui-parameter.c | 125 +++++++++++++++++++++++++++++++----------------- gui/hkl-gui.h | 1 + 2 files changed, 81 insertions(+), 45 deletions(-) commit aebda65d7e07c5ed3cf9dd777ad5777fa99d06de Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 12:54:48 2025 +0200 [ghkl] factorize the item factory setup part. gui/Makefile.am | 1 + gui/hkl-gui-engine.c | 5 +++-- gui/hkl-gui-factory.c | 12 +----------- gui/hkl-gui-geometry.c | 13 +------------ gui/hkl-gui-item-factories.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui-macros.h | 12 ------------ gui/hkl-gui-parameter.c | 31 ++++++------------------------- gui/hkl-gui.h | 10 +++++----- 8 files changed, 61 insertions(+), 67 deletions(-) commit da40afaedcbf43f48c6e3acd0dbddbd3613c1a28 Author: Picca Frédéric-Emmanuel Date: Sun Sep 28 12:03:31 2025 +0200 [ghkl] setup the samples drop down widget gui/hkl-gui-macros.h | 12 ++++++++++ gui/hkl-gui-sample.c | 64 +++++++++++++++++++++++++++++++--------------------- gui/hkl-gui.c | 52 +++++++++++++++++++++++++++++++++++++++--- gui/hkl-gui.h | 9 ++++++++ 4 files changed, 108 insertions(+), 29 deletions(-) commit 5cd7367479d5dc772b70e810c96756b909b51dfc Author: Picca Frédéric-Emmanuel Date: Fri Sep 26 16:47:13 2025 +0200 [ghkl] remove all deprecated code in the 3d part. the next step is to replace this by gtk4 code. gui/hkl-gui-3d.c | 696 +++++++++++++++++++++++++++---------------------------- 1 file changed, 348 insertions(+), 348 deletions(-) commit 0cb14bf2f0a869fbadfc227109d76dcf0fa55fca Author: Picca Frédéric-Emmanuel Date: Fri Sep 26 15:56:38 2025 +0200 [ghkl] added the first HklGuiSample type gui/Makefile.am | 1 + gui/hkl-gui-sample.c | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui.h | 3 + 3 files changed, 235 insertions(+) commit 101bd2b0db8f17dc635fe340c2c7908740cf1400 Author: Picca Frédéric-Emmanuel Date: Fri Sep 26 15:24:37 2025 +0200 [ghkl] remove diffractometer from the hkl-gui.c code gui/hkl-gui-factory.c | 10 ++++++++++ gui/hkl-gui.c | 11 ++--------- gui/hkl-gui.h | 2 ++ 3 files changed, 14 insertions(+), 9 deletions(-) commit 71ef7ca763df78ef69eed70a41abf77f0b00eca7 Author: Picca Frédéric-Emmanuel Date: Fri Sep 26 14:51:56 2025 +0200 [ghkl] do not allow mode selection w Date: Fri Sep 26 14:30:06 2025 +0200 [ghkl] better layout gui/hkl-gui.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit 5fab27b5dc5ac1c494e744c52948dd139a63a852 Author: Picca Frédéric-Emmanuel Date: Thu Sep 25 17:52:21 2025 +0200 [ghkl] added (Read Only) in the HklGuiEngine Frame This way it is a lot easyer to discriminate read only engines from others. gui/hkl-gui-engine.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit 4da9542e07705ba9dcc8678fbe241bf45f22f3fa Author: Picca Frédéric-Emmanuel Date: Thu Sep 25 15:42:23 2025 +0200 [ghkl] deal with read only engines. gui/hkl-gui-engine.c | 43 ++++++++++++++++++++++++++++++++- gui/hkl-gui-parameter.c | 64 ++++++++++++++++++++++++++----------------------- gui/hkl-gui.h | 20 ++++++++++++++++ 3 files changed, 96 insertions(+), 31 deletions(-) commit 7709dfa3862dbb1a57ae747e531d821061644b34 Author: Picca Frédéric-Emmanuel Date: Thu Sep 25 12:17:08 2025 +0200 [ghkl] refactoring of the HklGuiFactory class gui/hkl-gui-factory.c | 195 +++++++++++++++++++++++++++----------------------- gui/hkl-gui.h | 6 ++ 2 files changed, 113 insertions(+), 88 deletions(-) commit 91efa3663320a0da9ab85199c9ae61b6d3c510e0 Author: Picca Frédéric-Emmanuel Date: Wed Sep 24 17:02:34 2025 +0200 [ghkl] reorganisation of the ui gui/hkl-gui.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) commit bb121960ccad56232e602eb133a28470a8d456da Author: Picca Frédéric-Emmanuel Date: Wed Sep 24 12:44:09 2025 +0200 [ghkl] Added an alert dialogue for errors. gui/hkl-gui-engine.c | 32 ++++++++++++++++-------- gui/hkl-gui-factory.c | 69 +++++++++++++++++++++++++++++++++------------------ gui/hkl-gui.c | 68 +++++++++++++++++++++++++++++++------------------- gui/hkl-gui.h | 26 +++++++++++-------- 4 files changed, 124 insertions(+), 71 deletions(-) commit 1f0445cd1f78f5799c07d40296d74716f6db87c3 Author: Picca Frédéric-Emmanuel Date: Sun Sep 21 12:03:23 2025 +0200 [ghkl] added a mode and initialized property to HklGuiEngine This allow to centralise the code when setting the mode. gui/hkl-gui-engine.c | 126 +++++++++++++++++++++++++++++++++++++++++++-------- gui/hkl-gui.h | 12 ++++- 2 files changed, 118 insertions(+), 20 deletions(-) commit 002a1477e326941b22d6d52b537566a044c5fb4d Author: Picca Frédéric-Emmanuel Date: Sat Sep 20 16:22:13 2025 +0200 [ghkl] more compact PseudoAxes list (spinbutton > label) gui/hkl-gui-parameter.c | 40 ++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) commit d0f87f354d63ab49d9a5b705d55909738790951a Author: Picca Frédéric-Emmanuel Date: Fri Sep 19 16:09:57 2025 +0200 [ghkl] use a Label to describe the dropdown Maybe just an hint would be enought gui/hkl-gui-engine.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 45cb669c8422de99353e89d2c5955ff1f9005c80 Author: Picca Frédéric-Emmanuel Date: Fri Sep 19 15:00:12 2025 +0200 [ghkl] no more selection in the pseudo axes. this makes the GUI nicer. gui/hkl-gui-engine.c | 4 ++-- gui/hkl-gui.c | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) commit ebca46318d367f0f129d0702ac1e628eeb9d343e Author: Picca Frédéric-Emmanuel Date: Fri Sep 19 14:41:10 2025 +0200 [ghkl] unbind the spinbutton_wavelength when changing from one diffractometer to another, a property binding was created each time. When switching back to an already selected diffractometer, we got two binding and this cause an infinit loop when updating the spn button. gui/hkl-gui.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 131c03c2f1ed75c7199fd031269b4f5aae8317cf Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 19:54:42 2025 +0200 [ghkl] avoid double free when computing solutions gui/hkl-gui-diffractometer-private.h | 2 +- gui/hkl-gui-diffractometer.c | 6 ------ gui/hkl-gui-engine.c | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) commit d716c1dbd194b1007a536552b2c5145ce403818a Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 18:48:56 2025 +0200 [ghkl] update the right store when modifyng the wavelength gui/hkl-gui-factory.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit adc0220f3fd9368be0320a61b0e3a99aa06a2028 Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 18:21:20 2025 +0200 [ghkl] remove useless code. gui/hkl-gui.c | 111 ---------------------------------------------------------- 1 file changed, 111 deletions(-) commit 2a0e7375409e6c1f5d1bd97bc156230e0fe82e50 Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 17:24:13 2025 +0200 [ghkl] remove the column_view creation from the Factory class Lets deal with the widgets in hkl-gui.c gui/hkl-gui-diffractometer.c | 10 ----- gui/hkl-gui-engine.c | 2 +- gui/hkl-gui-factory.c | 103 ++++++++++--------------------------------- gui/hkl-gui.c | 90 +++++++++++++++++++++++++------------ gui/hkl-gui.h | 22 +++------ 5 files changed, 93 insertions(+), 134 deletions(-) commit 09349171945eb3449381d17aad6d983269705784 Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 16:09:15 2025 +0200 [ghkl] use a flow box for all pseudo axes frames gui/hkl-gui-factory.c | 15 ++++----------- gui/hkl-gui.c | 8 ++++---- gui/hkl-gui.h | 2 +- 3 files changed, 9 insertions(+), 16 deletions(-) commit 2aeaad5fcca62b1412233162993392b7fb84a31d Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 10:51:17 2025 +0200 [ghkl] implement the pseudo axes apply methode gui/hkl-gui-diffractometer.c | 3 ++- gui/hkl-gui-engine.c | 19 +++++++++++++++++++ gui/hkl-gui-factory.c | 32 +++++++++++++++++++++++--------- gui/hkl-gui.h | 39 ++++++++++++++++++++------------------- hkl.h.in | 4 ++-- hkl/hkl-pseudoaxis.c | 7 ++++++- 6 files changed, 72 insertions(+), 32 deletions(-) commit bbc359a86992f314b5f8cdfe8278228174c837e7 Author: Picca Frédéric-Emmanuel Date: Thu Sep 18 09:51:28 2025 +0200 [ghkl] use the HklGuiEngine changed signal in the HklGuiFactory gui/hkl-gui-engine.c | 18 +++++++++++------- gui/hkl-gui-factory.c | 28 ++++++++++++++++++---------- 2 files changed, 29 insertions(+), 17 deletions(-) commit fbe74a5b832f2a5d3070419619f75a9ea5d1db41 Author: Picca Frédéric-Emmanuel Date: Tue Sep 16 16:36:18 2025 +0200 [ghkl] prepare an HklGuiEngine class gui/Makefile.am | 5 +- gui/hkl-gui-engine.c | 326 +++++++++++++++++++++++++++++++ gui/hkl-gui-factory.c | 84 ++++++-- gui/hkl-gui-macros.h | 22 +-- gui/hkl-gui-parameter.c | 2 + gui/hkl-gui-pseudoaxes.c | 490 ----------------------------------------------- gui/hkl-gui-pseudoaxes.h | 64 ------- gui/hkl-gui.c | 48 +++-- gui/hkl-gui.h | 19 ++ gui/pseudo-4.ui | 175 ----------------- gui/pseudo.ui | 221 --------------------- 11 files changed, 448 insertions(+), 1008 deletions(-) commit 3eef53f798a9aa664ee7da122621c933fcfd35d4 Author: Picca Frédéric-Emmanuel Date: Tue Sep 16 14:08:15 2025 +0200 [ghkl] remove useless code gui/hkl-gui.c | 435 ---------------------------------------------------------- 1 file changed, 435 deletions(-) commit a0890a5a35f68cc94b41cf5359768c4f08c18ab4 Author: Picca Frédéric-Emmanuel Date: Thu Sep 11 11:21:29 2025 +0200 [ghkl] added the solutions logic back It is now possible to select a solution by double-clicking on a solution row. gui/Makefile.am | 1 + gui/hkl-gui-diffractometer-private.h | 4 +- gui/hkl-gui-diffractometer.c | 20 ++- gui/hkl-gui-factory.c | 102 +++++++++++++++- gui/hkl-gui-geometry.c | 229 +++++++++++++++++++++++++++++++++++ gui/hkl-gui.c | 88 +++++++++----- gui/hkl-gui.h | 39 ++++-- 7 files changed, 432 insertions(+), 51 deletions(-) commit 179539a090b4f73b327dfcd4cbf9f656f63ecbeb Author: Picca Frédéric-Emmanuel Date: Wed Sep 10 09:34:08 2025 +0200 [ghkl] re-added the pseudo axes gui/hkl-gui-diffractometer-private.h | 6 +- gui/hkl-gui-diffractometer.c | 75 ++++++++++++----- gui/hkl-gui-factory.c | 157 ++++++++++++++++++++++++++++++----- gui/hkl-gui-parameter.c | 130 +++++++++++++++++------------ gui/hkl-gui.c | 43 ++++------ gui/hkl-gui.h | 10 +++ 6 files changed, 299 insertions(+), 122 deletions(-) commit 978a10f15bc3b493113c3c70ea507ecb96b9119b Author: Picca Frédéric-Emmanuel Date: Wed Sep 10 09:32:13 2025 +0200 [ghkl] consistency in diffractometer function names gui/hkl-gui-diffractometer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 29539d30cdbbec9300db2f2f4d930958fb0217a9 Author: Picca Frédéric-Emmanuel Date: Tue Sep 9 15:41:56 2025 +0200 [ghkl] remove useless callback we are now using directly the wavelength property. gui/hkl-gui.c | 27 --------------------------- gui/hkl-gui.h | 4 ++++ 2 files changed, 4 insertions(+), 27 deletions(-) commit 3c2eb5cfcee347f5ff56b81d1da9d511c119b036 Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 16:00:24 2025 +0200 [ghkl] column view axes gui/Makefile.am | 4 + gui/hkl-gui-diffractometer-private.h | 59 +++++ gui/hkl-gui-diffractometer.c | 117 ++++++++++ gui/hkl-gui-factory.c | 260 +++++++++++++++++++++ gui/hkl-gui-parameter.c | 354 +++++++++++++++++++++++++++++ gui/hkl-gui.c | 428 ++--------------------------------- gui/hkl-gui.h | 30 ++- 7 files changed, 845 insertions(+), 407 deletions(-) commit c4e85f99000cd9e5301144e78731f4decdbad189 Author: Picca Frédéric-Emmanuel Date: Thu Sep 4 17:05:55 2025 +0200 [ghkl] build the wavelength ui part only via code (no more ui). gui/hkl-gui.c | 463 ++++++++++++++++++++++++++++------------------------------ gui/hkl-gui.h | 1 - 2 files changed, 220 insertions(+), 244 deletions(-) commit eba6603de2d2c2435da90df3fb3020b7189eacdb Author: Picca Frédéric-Emmanuel Date: Thu Sep 4 15:37:54 2025 +0200 [ghkl] now the factory contain an instance of the diffractometer_t. gui/hkl-gui.c | 259 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 136 insertions(+), 123 deletions(-) commit c4b8fa417ba3968409d208aeef547794f3dc02a9 Author: Picca Frédéric-Emmanuel Date: Thu Sep 4 14:40:48 2025 +0200 [ghkl] comment all unneeded code gui/hkl-gui.c | 4162 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 2067 insertions(+), 2095 deletions(-) commit c7d87358af130d7056f80ba60b04824d0d08a1eb Author: Picca Frédéric-Emmanuel Date: Wed Sep 3 14:29:35 2025 +0200 [ghkl] setup the first working GListStore with the gtk4 paradigm. gui/hkl-gui.c | 242 ++++++++++++++++++++++++++++++++++++++++++++++------------ gui/hkl-gui.h | 6 +- 2 files changed, 198 insertions(+), 50 deletions(-) commit f44c08e96b6f175873df68496a1e5a6362fde9e0 Author: Picca Frédéric-Emmanuel Date: Thu Sep 26 13:32:15 2024 +0200 switch build from gtk3 to gtk4 configure.ac | 2 +- gui/3d-4.ui | 146 ++++ gui/Makefile.am | 4 +- gui/ghkl-4.ui | 1836 ++++++++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui-3d.c | 4 +- gui/hkl-gui-pseudoaxes.c | 6 +- gui/hkl-gui.c | 383 ++++++++-- gui/hkl-gui.h | 6 +- gui/pseudo-4.ui | 175 +++++ 9 files changed, 2470 insertions(+), 92 deletions(-) commit ee81f7bd7f72f4a1d10810db18beb752227c3dfb Author: Picca Frédéric-Emmanuel Date: Thu Sep 26 11:10:58 2024 +0200 [hkl] strange error triggered by the gtk4 migration make CFLAGS+="-DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" binoculars-ng/binoculars/hkl-binoculars-io-cnpy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f06ca55f228d2dc832fa40aa98a4355e3679b51e Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 15:10:55 2026 +0100 [ccan] updated hkl/ccan/configurator.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 35394607cb8cb17b9b8d6b3edebdb636a6ec5b65 Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 15:04:39 2026 +0100 [hkl] avoid DDoS when loading npy files (detected via analyzer) binoculars-ng/binoculars/hkl-binoculars-io-cnpy.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 7dc3ae4eafa0cd2d3244f040508e087adda34d1d Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 15:04:03 2026 +0100 [hkl] remove useless code (never released). binoculars-ng/Makefile.am | 1 - binoculars-ng/binoculars/Makefile.am | 16 +- binoculars-ng/binoculars/binoculars-hkl | 210 -------- binoculars-ng/binoculars/binoculars-hkl.c | 407 --------------- .../binoculars/hkl-binoculars-config-private.h | 61 --- binoculars-ng/binoculars/hkl-binoculars-config.c | 580 --------------------- binoculars-ng/hkl.cabal.in | 1 - configure.ac | 1 - 8 files changed, 2 insertions(+), 1275 deletions(-) commit f74034bff4100a3cc08152ba6414dcc4508500d3 Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 14:18:40 2026 +0100 [hkl][petra3-p08-lisa] is unused for now hkl/hkl-engine-petra3-p08-lisa.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit ebd90aaa80de7c88a5acc4cf38a7d85054d9c069 Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 14:18:19 2026 +0100 [hkl][esrf-id01-psic] remove unused readonly engines. hkl/hkl-engine-esrf-id01-psic.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) commit 624e21bb6edefd6ef5f41cc1878e5e834bd6ed4f Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 14:17:39 2026 +0100 [hkl][aps-04id-polar] use the right parameters list hkl/hkl-engine-aps-04id-polar.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4559b9725fc9fbbc0f5d0efc4df0a854a0b3e5a3 Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 13:57:42 2026 +0100 [gkl] once more analyzer warning hkl/hkl-pseudoaxis-common-hkl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c56288bfbf6f642c8c2daa8f68bd036a455ba0cf Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 13:31:26 2026 +0100 [hkl] one more analyzer warning hkl/hkl-pseudoaxis-auto.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) commit 9a7031b58f9b4bf91ca8e18a94e086f0c49a146d Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 12:42:21 2026 +0100 [hkl] one more sanitizer fix hkl/hkl-engine-soleil-sixs-med.c | 6 ++++-- hkl/hkl-pseudoaxis-private.h | 12 +++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) commit 8793053102b991cf84a23c374afc84e5481a4674 Author: Picca Frédéric-Emmanuel Date: Tue Jan 20 10:41:06 2026 +0100 [hkl] fix a sanitizer warning Documentation/figures/sirius.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) commit 0dedb8bff8002dfbf602b678a6a8bbd86a58992d Author: Picca Frédéric-Emmanuel Date: Mon Dec 8 16:12:25 2025 +0100 [binoculars-ng] wip one more test binoculars-ng/Makefile.am | 4 +++- .../data/test/config_sixs_ruche_20241687.ini | 6 +++--- binoculars-ng/src/Hkl/DataSource.hs | 21 +++++++++++++-------- binoculars-ng/src/Hkl/Exception.hs | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) commit c9ab74e0e0f509703c8e33a53ba13208e4f8551a Author: Picca Frédéric-Emmanuel Date: Thu Nov 20 11:01:20 2025 +0100 [binoculars-ng] added more test files for sixs binoculars-ng/Makefile.am | 4 +- .../data/test/config_sixs_ruche_20241687.ini | 132 +++++++++++++++++++++ .../test/config_sixs_ruche_20241687_gisaxs.ini | 132 +++++++++++++++++++++ 3 files changed, 267 insertions(+), 1 deletion(-) commit 0a13771a7c94ad2ea7e746d0c84f3785adc9e8ca Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 15:55:13 2025 +0200 [binoculars-ng] hlint binoculars-ng/src/Hkl/Binoculars/Config.hs | 8 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 9 ++- .../Hkl/Binoculars/Projections/Config/Sample.hs | 59 +++++++------- .../src/Hkl/Binoculars/Projections/Hkl.hs | 14 ++-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 92 ++++++++++------------ .../src/Hkl/Binoculars/Projections/Test.hs | 14 ++-- binoculars-ng/src/Hkl/DataSource.hs | 28 +++---- binoculars-ng/src/Hkl/Detector.hs | 5 +- binoculars-ng/src/Hkl/Exception.hs | 2 - binoculars-ng/src/Hkl/H5.hs | 4 +- binoculars-ng/src/Hkl/HKD.hs | 4 - binoculars-ng/src/Hkl/Image.hs | 6 +- binoculars-ng/src/Hkl/Repa.hs | 8 +- 13 files changed, 122 insertions(+), 131 deletions(-) commit 29fa1578841ce4190124a37c878bc7f882d5a487 Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 15:24:03 2025 +0200 news NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit ed528a3275078ba38f36a8ea1e62a04d32a769c5 Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 15:23:48 2025 +0200 [binoculars-ng] remove an useless print binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 1 - 1 file changed, 1 deletion(-) commit 44b76c2068e3b2dec67fa17265bc43edee42b7df Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 14:57:54 2025 +0200 [binoculars-ng] better error formating hide the DataSet source and shw Hdf5Path in a compact way. binoculars-ng/src/Hkl/DataSource.hs | 5 ++++- binoculars-ng/src/Hkl/H5.hs | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) commit ed863eed57ddb8c40a874640867866dfc5e49584 Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 14:36:26 2025 +0200 [binoculars] no more H5Or the concept was wrong..., it is equivalent to a list of data sources. .../src/Hkl/Binoculars/Projections/QCustom.hs | 42 +++++++++++----------- binoculars-ng/src/Hkl/DataSource.hs | 40 +++++++++++---------- binoculars-ng/src/Hkl/H5.hs | 6 +--- binoculars-ng/src/Hkl/Pipes.hs | 8 +---- 4 files changed, 44 insertions(+), 52 deletions(-) commit a86f995f47cea28f72c0bf3e8bf67a30608a4694 Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 13:59:47 2025 +0200 [binoculars-ng] better error message when data are missing It stops at the first error and return the faulty DataSource. binoculars-ng/src/Hkl/DataSource.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 230e30f1f58258af028265a79d13b0b6d5f39beb Author: Picca Frédéric-Emmanuel Date: Tue Oct 7 18:54:21 2025 +0200 [binoculars-ng] print errors when opening datasources. binoculars-ng/Makefile.am | 4 +++- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 8 +++++--- binoculars-ng/src/Hkl/DataSource.hs | 11 ++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) commit 6e180d36611402565cc227f39f61e5c101a8b466 Author: Picca Frédéric-Emmanuel Date: Tue Oct 7 13:52:28 2025 +0200 [binoculars-ng] added the selected DataSourcePath in withDataSourceP The idea is to print the real opened DataSource in order to find the missing pieces. .../src/Hkl/Binoculars/Projections/Hkl.hs | 8 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 10 +- .../src/Hkl/Binoculars/Projections/Test.hs | 8 +- binoculars-ng/src/Hkl/DataSource.hs | 119 ++++++++++----------- 4 files changed, 72 insertions(+), 73 deletions(-) commit 095c4c14cbf373f0137035f55c3823df962980cf Author: Picca Frédéric-Emmanuel Date: Tue Sep 16 09:31:12 2025 +0200 [hkl] relax constrains on the hkl parameters. use the full double range. The [-1, 1] was artificial. TODO compute the real full parameter range depending on the wavelength. hkl/hkl-pseudoaxis-common-eulerians.c | 4 ++-- hkl/hkl-pseudoaxis-common-hkl-private.h | 8 +------- hkl/hkl-pseudoaxis-common-hkl.c | 5 +---- hkl/hkl-pseudoaxis-common-psi-private.h | 5 +---- hkl/hkl-pseudoaxis-common-q.c | 5 +---- hkl/hkl-pseudoaxis-common-readonly-private.h | 5 +---- tests/hkl-pseudoaxis-t.c | 6 +++--- 7 files changed, 10 insertions(+), 28 deletions(-) commit 44957b2c95fbca4b6ff91c7ae920c89dadff72e9 Author: Picca Frédéric-Emmanuel Date: Mon Sep 1 16:51:31 2025 +0200 [hkl] added the first implementation of the ESRF BM28 psic geometry hkl/Makefile.am | 1 + hkl/hkl-engine-esrf-bm28-psic.c | 181 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) commit a5bb121ea051de8b1803a3a973f052a42c216e94 Author: Picca Frédéric-Emmanuel Date: Thu Jul 17 17:48:50 2025 +0200 [binoculars-ng] Added mars test binoculars-ng/Makefile.am | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit 493069eeef4766c95fba30c63640f164372f1874 Author: Picca Frédéric-Emmanuel Date: Tue May 20 15:05:06 2025 +0200 [Documentation] Added ESRF BM28 PSIC infos Documentation/hkl.org.in | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) commit e90f88ce1f9eafa854a28e5f3be6f5b540e052b5 Author: Picca Frédéric-Emmanuel Date: Wed May 14 10:00:51 2025 +0200 [binoculars-ng] document the stereo projection limitations NEWS | 1 + 1 file changed, 1 insertion(+) commit fa1591d4b4f35d76c1c7dbbb529b886c4fca66cb Author: Picca Frédéric-Emmanuel Date: Wed May 14 09:44:22 2025 +0200 [binoculars-ng] do not call sqrt in polarisation correction. NEWS | 3 ++- binoculars-ng/binoculars/hkl-binoculars.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) commit 06853c3633b2d5805b66bb150e4825d0c1e95f8f Author: Picca Frédéric-Emmanuel Date: Tue May 13 14:37:48 2025 +0200 [binoculars-ng] stereo only where qz > 0.0. binoculars-ng/Makefile.am | 4 ++-- binoculars-ng/binoculars/hkl-binoculars.c | 1 + binoculars-ng/data/test/config_sixs_ruche_rigaku.ini | 4 ++-- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) commit 519b1a6669c37ece88219da17e79ba1047809748 Author: Picca Frédéric-Emmanuel Date: Tue May 13 14:02:02 2025 +0200 [binoculars-ng] now photons are floats and correct polarization binoculars-ng/Makefile.am | 3 +- binoculars-ng/binoculars/hkl-binoculars-io-hdf5.c | 8 +-- binoculars-ng/binoculars/hkl-binoculars-private.h | 29 +++++---- binoculars-ng/binoculars/hkl-binoculars.c | 70 ++++++++++++---------- .../data/test/config_sixs_polarisation.ini | 18 +++--- 5 files changed, 66 insertions(+), 62 deletions(-) commit 777797fd47caf6c92005140754bb7bd90b72312c Author: Picca Frédéric-Emmanuel Date: Fri Apr 25 17:13:44 2025 +0200 [buildsys] fix distcheck target binoculars-ng/Makefile.am | 1 + binoculars-ng/binoculars/Makefile.am | 1 - binoculars-ng/hkl.cabal.in | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) commit 2bbaa7d8a33584b07062e36882e2d5852daf0d05 Author: Picca Frédéric-Emmanuel Date: Fri Apr 25 16:46:36 2025 +0200 [binoculars-ng] Added inspection-testing check that generated code hasNoTypeClasses and hasNoGenerics binoculars-ng/Makefile.am | 2 +- binoculars-ng/hkl.cabal.in | 1 + binoculars-ng/test/BinocularsSpec.hs | 24 +++++++++++++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) commit 28453c95307364cf1c9c903e2872289f8a47638d Author: Picca Frédéric-Emmanuel Date: Fri Apr 25 10:46:53 2025 +0200 [binoculars-ng] new class GDSAK1 to provide ds'Shape with a default of shape1 This class allows to define the default implementation of ds'Shape which is shape1. just by deriving an instance for the non datatsource types. binoculars-ng/src/Hkl/DataSource.hs | 60 +++++++++++++++---------------------- 1 file changed, 24 insertions(+), 36 deletions(-) commit 0ad3e5b9a6040d68c402b2301f5c7aaa3b8a8217 Author: Picca Frédéric-Emmanuel Date: Thu Apr 24 16:27:41 2025 +0200 [binoculars-ng] use pure instead of returnIO binoculars-ng/src/Hkl/DataSource.hs | 38 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 25 deletions(-) commit 772a85f1ca353c20d2c24d91d695b8a1d6caf699 Author: Picca Frédéric-Emmanuel Date: Thu Apr 24 16:05:46 2025 +0200 [binoculars-ng] use the default ds'Shape as much as possible binoculars-ng/src/Hkl/DataSource.hs | 114 ++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 50 deletions(-) commit fd4a896792e1ad7304ff7414fec17f892a7c54fa Author: Picca Frédéric-Emmanuel Date: Thu Apr 24 15:12:01 2025 +0200 [binoculars-ng] format and remove useless instances binoculars-ng/src/Hkl/DataSource.hs | 62 +++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 34 deletions(-) commit 5efcf7d4413642b3297a521e138c6fab1aeb8bb6 Author: Picca Frédéric-Emmanuel Date: Thu Apr 24 15:06:33 2025 +0200 [binoculars-ng] Added a shape to the DSDataset binoculars-ng/src/Hkl/DataSource.hs | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) commit 2c288501562cfec2994a1e1ccdfc70a2048ecffe Author: Picca Frédéric-Emmanuel Date: Wed Apr 23 17:42:19 2025 +0200 [binoculars-ng] more DSDataset .../Hkl/Binoculars/Projections/Config/Sample.hs | 18 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 273 +++++++++------------ binoculars-ng/src/Hkl/DataSource.hs | 81 +++--- 3 files changed, 176 insertions(+), 196 deletions(-) commit de12d5553a86469343f1309babfd0cbd5ed24b7b Author: Picca Frédéric-Emmanuel Date: Wed Apr 23 17:01:52 2025 +0200 [binocualrs-ng] use DSDataset in Degree .../Hkl/Binoculars/Projections/Config/Sample.hs | 49 ++++++++++------------ binoculars-ng/src/Hkl/DataSource.hs | 18 ++------ 2 files changed, 26 insertions(+), 41 deletions(-) commit 34cc4dfed30948333ea8292c1394c0124e216271 Author: Picca Frédéric-Emmanuel Date: Wed Apr 23 17:01:32 2025 +0200 [binoculars-ng] remove an useless import binoculars-ng/src/Hkl/Binoculars/Projections/Config/Common.hs | 1 - 1 file changed, 1 deletion(-) commit 12a3e4671b3f042920971a0c08c96eb7d806dae7 Author: Picca Frédéric-Emmanuel Date: Wed Apr 23 16:23:01 2025 +0200 [binoculars-ng] added a new constructor in Degree for this hdf5 dataset binoculars-ng/src/Hkl/DataSource.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit 9455f2b1d6422d55c00cc161b6c48181ebb963d3 Author: Picca Frédéric-Emmanuel Date: Wed Apr 23 16:01:08 2025 +0200 [binoculars-ng] Added a datasource for an hdf5 dataset. binoculars-ng/src/Hkl/DataSource.hs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 44eeda9b4af37862d6ddbc5c73c054b2962bdb70 Author: Picca Frédéric-Emmanuel Date: Fri Apr 11 12:17:58 2025 +0200 [binoculars-ng] refactoring with HKD Datasource. the idea is to generate the ds'Shape and withDatasource method via Generics .../data/test/config_sixs_polarisation.ini | 2 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 10 +- .../Hkl/Binoculars/Projections/Config/Common.hs | 2 +- .../Hkl/Binoculars/Projections/Config/Sample.hs | 194 ++-- .../src/Hkl/Binoculars/Projections/Hkl.hs | 105 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 1105 ++++++++++---------- .../src/Hkl/Binoculars/Projections/Test.hs | 104 +- binoculars-ng/src/Hkl/DataSource.hs | 378 +++---- binoculars-ng/src/Hkl/Exception.hs | 1 + binoculars-ng/test/BinocularsSpec.hs | 10 +- 10 files changed, 999 insertions(+), 912 deletions(-) commit fa7495b1a1a6187299067f0505b99241d4c41e03 Author: Picca Frédéric-Emmanuel Date: Thu Apr 10 10:16:06 2025 +0200 [binoculars-ng] Added generic'withDataSourceP and make it default This way it is not necessary to defined it for a type. .../Hkl/Binoculars/Projections/Config/Sample.hs | 2 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 11 ----- binoculars-ng/src/Hkl/DataSource.hs | 55 ++++++++++++++++++++-- 3 files changed, 52 insertions(+), 16 deletions(-) commit 6f8a642b9b21991c3771a7af694ba365996149c8 Author: Picca Frédéric-Emmanuel Date: Wed Apr 9 18:18:29 2025 +0200 [binoculars-ng] Added a generic ds'Shape method and use it .../Hkl/Binoculars/Projections/Config/Sample.hs | 13 ++------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 11 ++------ binoculars-ng/src/Hkl/DataSource.hs | 32 ++++++++++++++++++++-- 3 files changed, 34 insertions(+), 22 deletions(-) commit fc6f745720cd8055e6fb8579c7bc238c3bb9ac6c Author: Picca Frédéric-Emmanuel Date: Tue Apr 8 15:57:14 2025 +0200 [binoculars-ng] DataSourcePath and DataSourceAcq into DataSourceT k where k is DSKind .../src/Hkl/Binoculars/Projections/Angles.hs | 3 +- .../Hkl/Binoculars/Projections/Config/Common.hs | 2 +- .../Hkl/Binoculars/Projections/Config/Sample.hs | 52 ++++---- .../src/Hkl/Binoculars/Projections/Hkl.hs | 24 ++-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 110 ++++++++--------- .../src/Hkl/Binoculars/Projections/Test.hs | 24 ++-- binoculars-ng/src/Hkl/DataSource.hs | 132 +++++++++++---------- binoculars-ng/test/BinocularsSpec.hs | 5 +- 8 files changed, 179 insertions(+), 173 deletions(-) commit 5d087604be9b6a23b38dbbf5a22035eb15375a63 Author: Picca Frédéric-Emmanuel Date: Tue Apr 8 12:33:18 2025 +0200 [binoculars-ng] move the attenuation offset at the right place binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 17 ++++++----------- binoculars-ng/src/Hkl/DataSource.hs | 7 +++++-- 2 files changed, 11 insertions(+), 13 deletions(-) commit f815197494d068192a10083df97c4baa36402383 Author: Picca Frédéric-Emmanuel Date: Mon Apr 7 16:28:09 2025 +0200 [binoculars-ng] new way to compute the shape of a dataframe Now we combine all shape of the data soruce in order to compute the final dataframe size. We broadcast all element with a size of 1. so it dos not affect the final size. 1 value + 100 values -> 100 values but 2 values + 100 values -> 2 values. .../data/test/config_sixs_polarisation.ini | 4 +- .../Hkl/Binoculars/Projections/Config/Sample.hs | 12 ++++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 31 +++++--- binoculars-ng/src/Hkl/DataSource.hs | 82 +++++++++++++++++----- binoculars-ng/src/Hkl/Repa.hs | 6 +- binoculars-ng/test/BinocularsSpec.hs | 15 ++-- 6 files changed, 107 insertions(+), 43 deletions(-) commit cce5beb243f8f9fe435071ce1365a4dbf47379eb Author: Picca Frédéric-Emmanuel Date: Thu Apr 3 16:58:26 2025 +0200 [binoculars-ng] type -> data for DataSourceShape binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- binoculars-ng/src/Hkl/DataSource.hs | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) commit 5d5e8788e0ab5ce02a53e8aebbb38061c89f68ab Author: Picca Frédéric-Emmanuel Date: Thu Apr 3 16:20:19 2025 +0200 [binocualrs-ng] start to reworks the shape logic... In order to allow dummy data, it should be easy to describe a shape with no effect on the finale shape of a stream. the dataframe shape should be defines from all it's component and not only from the image shape... binoculars-ng/src/Hkl/DataSource.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit ed447d425b359ef460cea2a4005633351557e894 Author: Picca Frédéric-Emmanuel Date: Wed Apr 2 13:29:04 2025 +0200 [binoculars-ng] add a bunche of test for the image datasourcepath .../data/test/config_sixs_polarisation.ini | 5 +- binoculars-ng/test/BinocularsSpec.hs | 54 ++++++-- tests/hkl-binoculars-t.c | 139 ++++++++++++++++++++- 3 files changed, 189 insertions(+), 9 deletions(-) commit 41f906b160ed2d42b4ffdce100299dfc29c08ba6 Author: Picca Frédéric-Emmanuel Date: Wed Apr 2 11:38:39 2025 +0200 [binoculars-ng] better error message when parsing ini file binoculars-ng/data/test/config_sixs_polarisation.ini | 14 ++++++++++++-- binoculars-ng/src/Hkl/Binoculars/Config.hs | 11 +++++++++-- .../src/Hkl/Binoculars/Projections/Config/Common.hs | 4 ++-- 3 files changed, 23 insertions(+), 6 deletions(-) commit a577e3438ca91c1ab5d9ac25102c0b0c9f35e6f1 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:46:21 2025 +0200 [binoculars-ng] overloadMaskPath -> overload'DataSourcePath'Mask binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 5c387ca8ffac4de81c6b24d73cde37ee41a13e79 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:43:49 2025 +0200 [binoculars-ng] overload'ImagePath -> overload'DataSourcePath'Image .../src/Hkl/Binoculars/Projections/QCustom.hs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit da40e032b0b541a0623ea95e094bce8025da0a02 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:42:08 2025 +0200 [binoculars-ng] overloadGeometryPath -> overload'DataSourcePath'Geometry binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 73dc89f9d7ac4f5e2deb9ca33df561ef8615dbe3 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:40:46 2025 +0200 [binoculars-ng] overloadWaveLength -> overload'DataSourcePath'Double .../src/Hkl/Binoculars/Projections/QCustom.hs | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 28b33616f5384701479f2ef90c5c7d79e22087b0 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:37:24 2025 +0200 [binoculars-ng] averloadTimescan0Path -> +overload'DataSourcePath'Timescan0 binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 191c686e36d37870d2d7f9ade1ba935fcd026930 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:35:14 2025 +0200 [binoculars-ng] overloadTimestampPath -> overload'DataSourcePath'Timestamp binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit aad0020902970b22347353d8e0ccf58b687280b3 Author: Picca Frédéric-Emmanuel Date: Tue Apr 1 15:32:26 2025 +0200 [binoculars-ng] overloadAttenuationPath -> overload'DataSourcePath'Attenuation binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 04497df2e1e871ae1494e8b0c527cd9d56ca9a2a Author: Picca Frédéric-Emmanuel Date: Mon Mar 31 17:25:57 2025 +0200 [binoculars-ng] overload the image path with the config parsed value .../Hkl/Binoculars/Projections/Config/Common.hs | 2 ++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 40 +++++++++++++--------- 2 files changed, 26 insertions(+), 16 deletions(-) commit 92d90d03327a575fecfbdbcc82b39c36ec0c454f Author: Picca Frédéric-Emmanuel Date: Mon Mar 31 15:46:21 2025 +0200 [binoculars-ng] factorize the serialisation of FieldValue via JSON binoculars-ng/src/Hkl/Binoculars/Config.hs | 13 ++++++++++++- binoculars-ng/src/Hkl/Binoculars/Projections/Hkl.hs | 11 ++--------- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 11 ++--------- binoculars-ng/src/Hkl/Binoculars/Projections/Test.hs | 11 ++--------- binoculars-ng/src/Hkl/DataSource.hs | 11 ++--------- 5 files changed, 20 insertions(+), 37 deletions(-) commit af8a080fbfe90487a6c57e8f4db419d6ef11a2cb Author: Picca Frédéric-Emmanuel Date: Mon Mar 31 15:15:32 2025 +0200 [binoculars-ng] lets start to add an image_path parsing using JSON We will let user provide the info in order to select the source of the data for the images under [input] image = ... here ... = json of DataSourcePath Image binoculars-ng/src/Hkl/Binoculars/Config.hs | 2 +- .../src/Hkl/Binoculars/Projections/Config/Common.hs | 5 +++++ binoculars-ng/src/Hkl/DataSource.hs | 18 ++++++++++++++---- binoculars-ng/src/Hkl/Types.hs | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) commit 3fd2953a5fe05131f557c40c9d6c41ea7c66b2a1 Author: Picca Frédéric-Emmanuel Date: Fri Mar 28 12:03:54 2025 +0100 [binoculars-ng] put the file template in the imgage datasource. this way it will be possible to give this template via the config file. NEWS | 28 ++++++++++++---------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 6 ++--- binoculars-ng/src/Hkl/DataSource.hs | 18 +++++++------- 3 files changed, 29 insertions(+), 23 deletions(-) commit 64e75fe5f23c57feb473a54d1a6b4a9d6b531b8c Author: Picca Frédéric-Emmanuel Date: Fri Mar 28 11:27:39 2025 +0100 [binoculars-ng] support for dummy images. NEWS | 18 ++++++++--- binoculars-ng/binoculars/hkl-binoculars.c | 4 +++ binoculars-ng/binoculars/hkl-binoculars.h | 4 +++ .../src/Hkl/Binoculars/Projections/Angles.hs | 2 ++ .../src/Hkl/Binoculars/Projections/Hkl.hs | 2 ++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 ++ .../src/Hkl/Binoculars/Projections/Test.hs | 2 ++ binoculars-ng/src/Hkl/C/Binoculars.hsc | 12 +++++++ binoculars-ng/src/Hkl/DataSource.hs | 37 ++++++++++++++++------ binoculars-ng/src/Hkl/Image.hs | 16 ++++++---- 10 files changed, 80 insertions(+), 20 deletions(-) commit bca3c293d7046291cdf92df512844458b3cc41cf Author: Picca Frédéric-Emmanuel Date: Fri Mar 28 09:45:08 2025 +0100 [binoculars-ng] switch detector and path this way all image constructor are designed the same with detector first .../src/Hkl/Binoculars/Projections/QCustom.hs | 38 +++++++++++----------- binoculars-ng/src/Hkl/DataSource.hs | 28 ++++++++-------- 2 files changed, 33 insertions(+), 33 deletions(-) commit 415aa7b2f4da5c847cdd0ff312b113e8e91091de Author: Picca Frédéric-Emmanuel Date: Fri Mar 28 09:32:55 2025 +0100 [binoculars-ng] DataSourcePath'Image -> DataSourcePath'Image'Hdf5 .../src/Hkl/Binoculars/Projections/QCustom.hs | 28 +++++++++++----------- binoculars-ng/src/Hkl/DataSource.hs | 28 +++++++++++----------- 2 files changed, 28 insertions(+), 28 deletions(-) commit 0b9f3e603a1f83876c61c7f3d2954c015e428c6c Author: Picca Frédéric-Emmanuel Date: Wed Mar 26 12:49:16 2025 +0100 [binoculars-ng] Added sixs test for polarisation binoculars-ng/Makefile.am | 3 +- .../data/test/config_sixs_polarisation.ini | 134 +++++++++++++++++++++ 2 files changed, 136 insertions(+), 1 deletion(-) commit 2ab473df4d760b0a7ead73ab2128f57444dd0c95 Author: Picca Frédéric-Emmanuel Date: Wed Mar 26 12:07:49 2025 +0100 [buildsys] remove useless ICA (Soleil) files NEWS | 1 + hkl/pom.xml | 92 -------------------------------------- ica/centos6/hkl/ccan/ccan_config.h | 78 -------------------------------- ica/rhel4/hkl/ccan/ccan_config.h | 67 --------------------------- 4 files changed, 1 insertion(+), 237 deletions(-) commit f505399c9ff662a7c9e126126da3309e9afc3546 Author: Picca Frédéric-Emmanuel Date: Wed Mar 26 11:52:37 2025 +0100 [doc] updated the NEWs file for the documentation update NEWS | 2 ++ 1 file changed, 2 insertions(+) commit a53ba6be709c11ae210b2f33c5cdb15005ccbdc8 Author: Picca Frédéric-Emmanuel Date: Wed Mar 26 11:40:44 2025 +0100 [doc] thanks Wermeille Didier from the ESRF for this patch Documentation/hkl.org.in | 286 ++++++++++++++++++++++++----------------------- 1 file changed, 144 insertions(+), 142 deletions(-) commit ecdf4fc614c4b4fa01a7deb4702cf88c8e6969b3 Author: Picca Frédéric-Emmanuel Date: Tue Mar 25 17:24:27 2025 +0100 [ghkl] gtk-builder-tool simplify on bookworm gui/3d.ui | 140 ++--- gui/ghkl.ui | 1672 +++++++++++++++++++++++++-------------------------------- gui/pseudo.ui | 105 ++-- 3 files changed, 808 insertions(+), 1109 deletions(-) commit 51cabdc5f55d35ab9a9dac3e63493333bb2921d4 Author: Picca Frédéric-Emmanuel Date: Fri Mar 21 13:47:37 2025 +0100 [binoculars-ng] added test for the noetaa geometry binoculars-ng/Makefile.am | 5 ++- .../data/test/config_sixs_ruche_medv_noetaa.ini | 43 ++++++++++++++++++++++ .../Hkl/Binoculars/Projections/Config/Sample.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 25 ++++++++++--- 4 files changed, 69 insertions(+), 6 deletions(-) commit f6545f778148c7d42dc3fd6eedb8697e226c34fe Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 10:57:15 2025 +0100 [binoculars-ng] wip rigaku test binoculars-ng/Makefile.am | 9 +- .../hkl-binoculars-detectors-2d-private.h | 4 +- .../binoculars/hkl-binoculars-detectors-2d.c | 5 +- binoculars-ng/binoculars/hkl-binoculars-io-cnpy.c | 49 +- binoculars-ng/binoculars/hkl-binoculars-io-img.c | 59 ++- .../binoculars/hkl-binoculars-io-private.h | 1 + binoculars-ng/binoculars/hkl-binoculars.h | 6 +- .../data/test/config_sixs_ruche_rigaku.ini | 542 +++++++++++++++++++++ binoculars-ng/src/Hkl/Binoculars/Config.hs | 16 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 95 ++-- binoculars-ng/src/Hkl/C/Binoculars.hsc | 5 + binoculars-ng/src/Hkl/DataSource.hs | 30 +- binoculars-ng/src/Hkl/Image.hs | 20 +- binoculars-ng/src/Hkl/Types.hs | 2 +- tests/hkl-binoculars-t.c | 30 +- 15 files changed, 761 insertions(+), 112 deletions(-) commit b63a65e955ef1cb4456ae69af787bb8063555913 Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 10:23:34 2025 +0100 [buildsystem] factorize the cabal flag part binoculars-ng/Makefile.am | 50 +++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 36 deletions(-) commit 107482457e14cc4101f27953154edeccceb47554 Author: Picca Frédéric-Emmanuel Date: Tue Feb 11 15:35:03 2025 +0100 [binoculars-ng] factorize a bunch of methodes in the cnpy file binoculars-ng/binoculars/hkl-binoculars-io-cnpy.c | 83 ++++++----------------- 1 file changed, 20 insertions(+), 63 deletions(-) commit 37cf0d7fead4928443bc06fbaea828028be4f2d7 Author: Picca Frédéric-Emmanuel Date: Tue Feb 11 14:35:04 2025 +0100 [binoculars-ng] rename a few file for consistency binoculars-ng/Makefile.am | 4 +-- binoculars-ng/binoculars/Makefile.am | 4 +-- .../binoculars/hkl-binoculars-cnpy-private.h | 35 ---------------------- .../hkl-binoculars-detectors-2d-private.h | 2 +- .../binoculars/hkl-binoculars-detectors-2d.c | 1 - ...-binoculars-cnpy.c => hkl-binoculars-io-cnpy.c} | 11 +++---- ...-binoculars-hdf5.c => hkl-binoculars-io-hdf5.c} | 0 binoculars-ng/binoculars/hkl-binoculars-io-img.c | 2 +- .../binoculars/hkl-binoculars-io-private.h | 33 +++++++++++++++++--- binoculars-ng/hkl.cabal.in | 7 +++-- 10 files changed, 45 insertions(+), 54 deletions(-) commit 7febfcd304d6db3f7eff258eee879cf2985da797 Author: Picca Frédéric-Emmanuel Date: Mon Feb 10 17:57:54 2025 +0100 [binoculars-ng] add a method to load the rigaku img files NEWS | 3 + binoculars-ng/Makefile.am | 3 +- binoculars-ng/binoculars/Makefile.am | 3 + .../binoculars/hkl-binoculars-cnpy-private.h | 8 +- binoculars-ng/binoculars/hkl-binoculars-cnpy.c | 73 ++++++- .../hkl-binoculars-detectors-2d-private.h | 233 +++++++++++++++++++++ .../binoculars/hkl-binoculars-detectors-2d.c | 232 ++------------------ binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 8 +- binoculars-ng/binoculars/hkl-binoculars-io-img.c | 182 ++++++++++++++++ .../binoculars/hkl-binoculars-io-private.h | 30 +++ binoculars-ng/binoculars/hkl-binoculars-private.h | 1 + binoculars-ng/binoculars/hkl-binoculars.h | 3 + tests/hkl-binoculars-t.c | 17 ++ 13 files changed, 574 insertions(+), 222 deletions(-) commit be61e5bd724986f41dfddf31878e09a247fa628b Author: Picca Frédéric-Emmanuel Date: Mon Feb 10 15:16:27 2025 +0100 [binoculars-ng] rename the RIGAKU_XSPA into RIGAKU_XSPA_1M binoculars-ng/binoculars/hkl-binoculars-detectors-2d.c | 12 ++++++------ binoculars-ng/binoculars/hkl-binoculars.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) commit 49e98d9581d6831ba357992bd916aa7f4f40f602 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 14:06:04 2025 +0100 [binoculars-ng] Added phi_q_theta projections NEWS | 4 + binoculars-ng/binoculars/hkl-binoculars.c | 141 +++++++++++++++++++-- binoculars-ng/binoculars/hkl-binoculars.h | 9 +- binoculars-ng/src/Hkl/Binoculars/Config.hs | 5 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 9 ++ binoculars-ng/src/Hkl/C/Binoculars.hsc | 32 +++-- 6 files changed, 173 insertions(+), 27 deletions(-) commit 6e17396909849c5f6e9cee10355066371938ae5f Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 17:17:00 2025 +0100 c-style .../binoculars/hkl-binoculars-detectors-2d.c | 92 +++++++++++----------- 1 file changed, 47 insertions(+), 45 deletions(-) commit 8e831623c384aa519e6957fc6baa9db8d571a42d Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 16:37:52 2025 +0100 [binoculars-ng] use the new mask_add_ strip to defines masks .../binoculars/hkl-binoculars-detectors-2d.c | 122 ++++++++------------- 1 file changed, 48 insertions(+), 74 deletions(-) commit b427e3d201c644d0a802302dba4328f3c3d93937 Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 15:46:11 2025 +0100 [binoculars-ng] added rigaku XSPA detector to lib binoculars NEWS | 10 ++ binoculars-ng/Makefile.am | 4 +- .../binoculars/hkl-binoculars-detectors-2d.c | 73 +++++++-- binoculars-ng/binoculars/hkl-binoculars.h | 1 + configure.ac | 7 + tests/Makefile.am | 6 +- tests/hkl-binoculars-t.c | 167 +++++++++++++++------ 7 files changed, 210 insertions(+), 58 deletions(-) commit 39ce790b3fcd4cd26f497d96bb1b545447dd5b8e Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 10:10:24 2025 +0100 [binoculars-ng] todo for the Soleil sixs beamline. binoculars-ng/binoculars/hkl-binoculars.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4d7c44b27526037c3a2fefb416deb1f8432f339d Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 14:29:29 2025 +0100 [binoculars-ng] really read the geometry from the ini file binoculars-ng/data/test/config_geometry_custom.ini | 12 ++++++------ .../src/Hkl/Binoculars/Projections/Config/Common.hs | 7 ++++++- 2 files changed, 12 insertions(+), 7 deletions(-) commit d0cd69400a57f9d734d5ac1596695f1509f6085c Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 12:13:53 2025 +0100 [binoculars] created an HasIniParser class for everythings which can be extracted from the ini file. binoculars-ng/src/Hkl/Binoculars/Config.hs | 56 +++++++++++++++++------------- binoculars-ng/test/BinocularsSpec.hs | 4 +-- 2 files changed, 33 insertions(+), 27 deletions(-) commit fd9e98f9a1469fc1f380335580ae3a286a01b96c Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 11:35:15 2025 +0100 [binoculars-ng] hlint binoculars-ng/src/Hkl/Binoculars/Config.hs | 16 +++++++--------- .../src/Hkl/Binoculars/Projections/Config/Common.hs | 1 - binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- binoculars-ng/src/Hkl/Geometry.hs | 10 +++++----- binoculars-ng/test/BinocularsSpec.hs | 9 ++++----- 5 files changed, 18 insertions(+), 22 deletions(-) commit 3bd629568f771b3424705ea72e14c07704b70fcd Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 11:15:34 2025 +0100 [binoculars-ng] instanciate geometry during test binoculars-ng/test/BinocularsSpec.hs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit 814a4f4a2d99fffb0eb0ae262ecde77deb83174b Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 10:24:25 2025 +0100 [binoculars-ng] the detector part is optional binoculars-ng/src/Hkl/Binoculars/Config.hs | 8 +++++--- binoculars-ng/test/BinocularsSpec.hs | 11 ++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) commit 7b14035eb723a72174ffcfc7568e7f04e6d08957 Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 10:02:47 2025 +0100 [binoculars-ng] better error handling when parsing geometry binoculars-ng/src/Hkl/Binoculars/Config.hs | 70 +++++++------ .../Hkl/Binoculars/Projections/Config/Common.hs | 2 +- binoculars-ng/src/Hkl/Lattice.hs | 2 +- binoculars-ng/test/BinocularsSpec.hs | 116 +++++++++++++++------ 4 files changed, 123 insertions(+), 67 deletions(-) commit 6a1f5eaa1d0f84e791fc1c01898f9456eb7ef534 Author: Picca Frédéric-Emmanuel Date: Wed Feb 5 07:35:15 2025 +0100 [binoculars-ng] Added a configure-cabal target This way it will be easyer to develop with emacs and haskell-mode binoculars-ng/Makefile.am | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit ccc11f383682ba02cb709751bd610c63d99fa25b Author: Picca Frédéric-Emmanuel Date: Tue Feb 4 18:51:41 2025 +0100 [binoculars] parse the geometry from the ini file. binoculars-ng/data/test/config_geometry_custom.ini | 12 ++-- binoculars-ng/hkl.cabal.in | 1 + binoculars-ng/src/Hkl/Binoculars/Config.hs | 43 +++++++---- binoculars-ng/src/Hkl/Geometry.hs | 27 ++++++- binoculars-ng/test/BinocularsSpec.hs | 84 ++++++---------------- 5 files changed, 84 insertions(+), 83 deletions(-) commit d8d987b172fe83d0aae98a3b94162b6860904d12 Author: Picca Frédéric-Emmanuel Date: Tue Feb 4 09:06:23 2025 +0100 [binoclars-ng] consume space before parsing. binoculars-ng/src/Hkl/Binoculars/Config.hs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 73c8f991dd47b78f8411c38043ed830ca7f551b7 Author: Picca Frédéric-Emmanuel Date: Mon Feb 3 17:57:45 2025 +0100 [binoculars-ng] parse transformation binoculars-ng/src/Hkl/Binoculars/Config.hs | 23 +++++++++++++++-------- binoculars-ng/test/BinocularsSpec.hs | 27 ++++++++++++++++++--------- 2 files changed, 33 insertions(+), 17 deletions(-) commit 53ad708a43f013312ddb83e35c9cb54df505e3a8 Author: Picca Frédéric-Emmanuel Date: Mon Feb 3 17:32:17 2025 +0100 [binoculars-ng] parse unit binoculars-ng/src/Hkl/Binoculars/Config.hs | 108 ++++++++++++++++++++- .../src/Hkl/Binoculars/Projections/Angles.hs | 3 +- .../Hkl/Binoculars/Projections/Config/Common.hs | 7 +- .../Hkl/Binoculars/Projections/Config/Sample.hs | 1 + .../src/Hkl/Binoculars/Projections/Hkl.hs | 3 +- .../src/Hkl/Binoculars/Projections/Test.hs | 3 +- binoculars-ng/src/Hkl/Geometry.hs | 18 ++-- binoculars-ng/src/Hkl/Lattice.hs | 2 +- binoculars-ng/test/BinocularsSpec.hs | 11 +++ 9 files changed, 141 insertions(+), 15 deletions(-) commit 4288cc74b913197ceaadb68212dd48a56628b331 Author: Picca Frédéric-Emmanuel Date: Thu Jan 30 16:32:58 2025 +0100 [binoculars] add a new config with geometry definition. binoculars-ng/data/test/config_geometry_custom.ini | 121 +++++++++++++++++++++ binoculars-ng/src/Hkl/Binoculars/Config.hs | 6 +- .../Hkl/Binoculars/Projections/Config/Common.hs | 1 + .../Hkl/Binoculars/Projections/Config/Sample.hs | 3 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 +- binoculars-ng/test/BinocularsSpec.hs | 1 + 6 files changed, 131 insertions(+), 4 deletions(-) commit cb38d01f6e499b085142579b5688a0a32d9b2eb5 Author: Picca Frédéric-Emmanuel Date: Wed Jan 29 16:59:44 2025 +0100 [binocualrs-ng] dispatcher.ncores = 0 means all cores. NEWS | 7 ++++++- binoculars-ng/Makefile.am | 1 + binoculars-ng/data/test/config_mars_ruche_20232102.ini | 2 +- .../src/Hkl/Binoculars/Projections/Config/Common.hs | 15 ++++++++++----- 4 files changed, 18 insertions(+), 7 deletions(-) commit 7e9bc8fbe6b8f6b8689569099971bcc975f8adf8 Author: Picca Frédéric-Emmanuel Date: Wed Jan 29 14:03:00 2025 +0100 [binoculars-ng] allow to pass CABALFLAGS during configuration NEWS | 10 ++++++++++ binoculars-ng/Makefile.am | 3 +++ binoculars-ng/hkl.cabal.in | 14 ++++++++++---- configure.ac | 4 +++- 4 files changed, 26 insertions(+), 5 deletions(-) commit 14c6aba8e8b30f07c9d2043eb1fa1d39bbb88e09 Author: Picca Frédéric-Emmanuel Date: Wed Jan 29 11:46:46 2025 +0100 [binoculars-ng] fix the new mars data location binoculars-ng/data/test/config_grades_ruche_20232102.ini | 4 ++-- binoculars-ng/data/test/config_mars_ruche_20232102.ini | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 4e6cd5ca12458a3f65869db1643a82772c94e7bf Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 18:13:43 2025 +0100 [binoculars-ng] added a script to convert from binoculars to maud esg file binoculars-ng/data/bino2esg.py | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) commit 36a5363779e5413a31cb0d427d4fbd5d60adaeab Author: Picca Frédéric-Emmanuel Date: Wed Jan 15 17:32:50 2025 +0100 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 90c8704b08238a74f7ad4c9f7bf2692231eb60ad Author: Picca Frédéric-Emmanuel Date: Wed Jan 15 16:39:47 2025 +0100 release 5.1.3 NEWS | 7 +++++-- configure.ac | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) commit cfd88cdadd65300586976c80532811ef2f901ba9 Author: Picca Frédéric-Emmanuel Date: Thu Dec 5 17:53:44 2024 +0100 [binoculars-ng] no more multiplot. All detector's figures are gnuplot canvas terminal generated. Thus we can zoom in and out. Documentation/figures/detectors-gnuplot.py | 120 +++++++---------------------- 1 file changed, 29 insertions(+), 91 deletions(-) commit c75b91aedbc2156df233a4e1d7dd37bc3eeb0878 Author: Picca Frédéric-Emmanuel Date: Thu Dec 5 16:23:38 2024 +0100 [binoculars-ng] fix an issue with the stero view the computation was wrong... binoculars-ng/binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 856156109759b73e819541973851cb9de44f6413 Author: Picca Frédéric-Emmanuel Date: Tue Dec 3 18:12:49 2024 +0100 [binoculars-ng] Added a gnuplot version for the detectors Documentation/figures/detectors-gnuplot.py | 119 +++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) commit f5a2a868fd86e9114c1dab5822a458d361a495ce Author: Picca Frédéric-Emmanuel Date: Mon Dec 2 11:55:26 2024 +0100 [binoculars-ng] set the first cirpad transformations Added also detector.py script in order to explore the detector geometry. Documentation/figures/detectors.py | 79 ++++++++++++ .../binoculars/hkl-binoculars-detectors-2d.c | 140 +++++++-------------- tests/hkl-binoculars-t.c | 32 ++--- 3 files changed, 139 insertions(+), 112 deletions(-) commit 8dca30dfd64caef6a101123a24fcfb668d4aa870 Author: Picca Frédéric-Emmanuel Date: Mon Dec 2 10:25:03 2024 +0100 [binoculars-ng] Added diffabs calibration and dataset binoculars-ng/Makefile.am | 1 + .../binoculars/hkl-binoculars-detectors-2d.c | 46 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) commit c627c693f93cc94f93245448cc7e94db811e1d34 Author: Picca Frédéric-Emmanuel Date: Fri Nov 29 15:34:56 2024 +0100 [binoculars-ng] implement the cirpad detector geometry. .../binoculars/hkl-binoculars-detectors-2d.c | 191 +++++++++++++-------- tests/hkl-binoculars-t.c | 4 +- 2 files changed, 118 insertions(+), 77 deletions(-) commit 73c735fd080d8c4048dfe56467fd6bdb7246b170 Author: Picca Frédéric-Emmanuel Date: Fri Nov 29 13:45:38 2024 +0100 [binoculars-ng] Added cirpad parameters (tx, ty, tz, rx, ry, rz) the cirpad contains 20 modules. each module will be oriented thanks to 6 parameters. .../binoculars/hkl-binoculars-detectors-2d.c | 70 ++++++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) commit 17c2c189ed348bd1fe64a171262027b8393c547a Author: Picca Frédéric-Emmanuel Date: Thu Nov 28 15:38:35 2024 +0100 [binoculars-ng] added the diffabs data sources for the cirpad .../binoculars/hkl-binoculars-detectors-2d.c | 10 ++++---- binoculars-ng/binoculars/hkl-binoculars.h | 2 +- .../data/test/config_diffabs_ruche_cirpad.ini | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 28 +++++++++++++++++++--- binoculars-ng/src/Hkl/C/Binoculars.hsc | 6 ++--- tests/hkl-binoculars-t.c | 23 ++++++++++++++---- 6 files changed, 54 insertions(+), 17 deletions(-) commit e0c1ab0ea646bc5d5282145bc21192ff3d9d4238 Author: Picca Frédéric-Emmanuel Date: Fri Nov 22 13:54:06 2024 +0100 [binoculars-ng] No need to return a Maybe Mask in getMask binoculars-ng/data/test/config_mars_ruche_20232102.ini | 5 +++-- binoculars-ng/src/Hkl/Binoculars/Config.hs | 18 ++++++------------ binoculars-ng/src/Hkl/DataSource.hs | 6 ++---- binoculars-ng/src/Hkl/Detector.hs | 8 ++++---- 4 files changed, 15 insertions(+), 22 deletions(-) commit 8d11b84761ffa7ea91e8d80ef40ae6cd0dbf0d67 Author: Picca Frédéric-Emmanuel Date: Fri Nov 22 11:46:01 2024 +0100 [binoculars-ng] use the right mask for mars binoculars-ng/data/test/config_mars_ruche_20232102.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 388c8d28feb7c0d226015e65305d0a5087175db5 Author: Picca Frédéric-Emmanuel Date: Fri Nov 22 11:11:14 2024 +0100 [binoculars-ng] no need of a Maybe MaskLocation binoculars-ng/src/Hkl/Binoculars/Config.hs | 21 ++++++++++----------- binoculars-ng/src/Hkl/DataSource.hs | 7 +------ 2 files changed, 11 insertions(+), 17 deletions(-) commit a2c257f37ea8a4246f81ab382e6f288541332a9b Author: Picca Frédéric-Emmanuel Date: Thu Nov 21 14:51:05 2024 +0100 [binoculars-ng] move Hkl.Binoculars.Config.Sample into Config This simplify the import binoculars-ng/Makefile.am | 1 - binoculars-ng/hkl.cabal.in | 1 - binoculars-ng/src/Hkl/Binoculars/Config.hs | 89 ++++++++++++++++- binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 110 --------------------- .../src/Hkl/Binoculars/Projections/Angles.hs | 1 - .../Hkl/Binoculars/Projections/Config/Common.hs | 1 - .../Hkl/Binoculars/Projections/Config/Sample.hs | 1 - .../src/Hkl/Binoculars/Projections/Hkl.hs | 1 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 - .../src/Hkl/Binoculars/Projections/Test.hs | 1 - binoculars-ng/src/Hkl/DataSource.hs | 1 - binoculars-ng/test/BinocularsSpec.hs | 2 +- 12 files changed, 86 insertions(+), 124 deletions(-) commit 95179b5731119456c019956ddb5fa99da35e542b Author: Picca Frédéric-Emmanuel Date: Thu Nov 21 14:18:15 2024 +0100 [binoculars-ng] move configs under Projections.Config module binoculars-ng/Makefile.am | 3 +- binoculars-ng/hkl.cabal.in | 3 +- .../src/Hkl/Binoculars/Projections/Config.hs | 373 +------------------- .../Hkl/Binoculars/Projections/Config/Common.hs | 381 +++++++++++++++++++++ .../Binoculars/Projections/{ => Config}/Sample.hs | 12 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 1 - .../src/Hkl/Binoculars/Projections/Test.hs | 1 - binoculars-ng/test/BinocularsSpec.hs | 31 +- 8 files changed, 411 insertions(+), 394 deletions(-) commit 292c95f224e8fea220c69990093e9257387fa6a5 Author: Picca Frédéric-Emmanuel Date: Thu Nov 21 12:28:22 2024 +0100 [binoculars-ng] move the Sample Config in Projections binoculars-ng/Makefile.am | 2 +- binoculars-ng/hkl.cabal.in | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/{Config => Projections}/Sample.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/Test.hs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) commit 9f3197e9d8dfef2aa4c7642dfcb474907f52c037 Author: Picca Frédéric-Emmanuel Date: Thu Nov 21 12:04:02 2024 +0100 [binoculars-ng] move the Common config under projections binoculars-ng/Makefile.am | 1 + binoculars-ng/hkl.cabal.in | 1 + binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 359 +------------------ binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 9 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 1 + .../src/Hkl/Binoculars/Projections/Config.hs | 381 +++++++++++++++++++++ .../src/Hkl/Binoculars/Projections/Hkl.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 + .../src/Hkl/Binoculars/Projections/Test.hs | 1 + 9 files changed, 398 insertions(+), 357 deletions(-) commit ca276b703be9dff8314151afb8b012cb88ef7ca3 Author: Picca Frédéric-Emmanuel Date: Wed Nov 20 17:23:59 2024 +0100 [binoculars-ng] implement the mask or method. Now we can combine mask with the '|' (or) operator mask.npy | default binoculars-ng/binoculars/hkl-binoculars-detectors-2d.c | 14 ++++++++++++++ binoculars-ng/data/test/config_grades_ruche_20232102.ini | 2 +- binoculars-ng/src/Hkl/Binoculars/Config.hs | 13 ++++++++----- binoculars-ng/src/Hkl/C/Binoculars.hsc | 1 + binoculars-ng/src/Hkl/Detector.hs | 9 +++++++++ binoculars-ng/src/Hkl/Exception.hs | 8 +++++--- 6 files changed, 38 insertions(+), 9 deletions(-) commit 109500aa2a7e438cc61dc4ee45ce00010977cb5f Author: Picca Frédéric-Emmanuel Date: Mon Nov 18 16:07:52 2024 +0100 [binoculars-ng] refactor the MaskOr logic Now we just need to implement the maskOr function and implement the Or logic. binoculars-ng/src/Hkl/Binoculars/Config.hs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 599b918ca36b3f6e3cfe2a054f027d1ef6ca6b2e Author: Picca Frédéric-Emmanuel Date: Mon Nov 18 15:35:31 2024 +0100 [binoculars-ng] rename before refactorting binoculars-ng/src/Hkl/Binoculars/Config.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 79a5af695f717b3d7245aec885ca2c110eec14bc Author: Picca Frédéric-Emmanuel Date: Mon Nov 18 14:54:52 2024 +0100 [binoculars-ng] implement the parsing of mask binoculars-ng/src/Hkl/Binoculars/Config.hs | 26 +++++++++++++++-------- binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 8 +++++-- binoculars-ng/test/BinocularsSpec.hs | 18 ++++++---------- 3 files changed, 30 insertions(+), 22 deletions(-) commit 638cbd32a5a2f1bd1a0fad5cd27b2baf1f99de6f Author: Picca Frédéric-Emmanuel Date: Fri Nov 15 12:00:20 2024 +0100 [binoculars-ng] refactor with hspec-attoparsec binoculars-ng/hkl.cabal.in | 1 + binoculars-ng/test/BinocularsSpec.hs | 42 ++++++++++++++++-------------------- 2 files changed, 19 insertions(+), 24 deletions(-) commit 27426536952c370771dcc1acbde068fbdb8a5308 Author: Picca Frédéric-Emmanuel Date: Fri Nov 15 10:37:26 2024 +0100 [binoculars-ng] TODO binoculars-ng/binoculars/hkl-binoculars-detectors-2d.c | 1 + 1 file changed, 1 insertion(+) commit dd883b8e4840164d911636c3c131f8524dc77369 Author: Picca Frédéric-Emmanuel Date: Fri Nov 15 10:30:38 2024 +0100 [binoculars-ng] remove superfluous fprintf binoculars-ng/binoculars/hkl-binoculars-cnpy.c | 2 -- 1 file changed, 2 deletions(-) commit 1db93f04739210af74770f06e05569b159741144 Author: Picca Frédéric-Emmanuel Date: Thu Nov 14 16:10:12 2024 +0100 [binoculars-ng] Added a border to the tilling detector it is now possible to mask a ring of n pixels around each module. Most of the times these pixels statistics are bad. .../binoculars/hkl-binoculars-detectors-2d.c | 50 ++++++++++++++++++---- 1 file changed, 42 insertions(+), 8 deletions(-) commit 118de7dd48e3dea714856c09e5f605472a0546fc Author: Picca Frédéric-Emmanuel Date: Thu Nov 14 11:57:52 2024 +0100 [binoculars-ng] hard code for now the mask or contructor binoculars-ng/src/Hkl/Binoculars/Config.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit a935169f7f17bf8b28423eaf56ab428f94a983e3 Author: Picca Frédéric-Emmanuel Date: Tue Nov 12 14:02:36 2024 +0100 [binoclars-ng] better resolution for the mars test binoculars-ng/data/test/config_mars_ruche_20232102.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4679dc564c57877810f3fdcd875a53bf0ab49edb Author: Picca Frédéric-Emmanuel Date: Wed Nov 13 14:58:08 2024 +0100 [binoculars-ng] Added MaskLocation'Or MaskLocation MaskLocation this way it is possible to define a fallback MaskLocation Now we need to add the parsing. NEWS | 2 ++ binoculars-ng/src/Hkl/Binoculars/Config.hs | 35 ++++++++++++++++++++---------- binoculars-ng/src/Hkl/DataSource.hs | 2 ++ binoculars-ng/test/BinocularsSpec.hs | 14 ++++++++++++ 4 files changed, 41 insertions(+), 12 deletions(-) commit 78dfc7d8af5c49c17e3f723baea179664e5e0e03 Author: Picca Frédéric-Emmanuel Date: Fri Oct 18 14:33:20 2024 +0200 [binoculars-ng] deal with mask as float64 for mars NEWS | 4 ++ binoculars-ng/binoculars/hkl-binoculars-cnpy.c | 66 +++++++++++++++++++--- .../data/test/config_grades_ruche_20232102.ini | 2 +- 3 files changed, 63 insertions(+), 9 deletions(-) commit 2cbf773126174ab8cb4c01de343a1a7fa6618ee4 Author: Picca Frédéric-Emmanuel Date: Fri Oct 18 07:21:25 2024 +0200 [binoculars-ng] addded the mars tests on grades binoculars-ng/Makefile.am | 14 +++++++++++++- binoculars-ng/data/test/config_grades_ruche_20232102.ini | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) commit edf96228e0b35621f328b3601d5fa0ba7fead6be Author: Picca Frédéric-Emmanuel Date: Thu Oct 17 14:16:51 2024 +0200 [binoculars-ng] tests on mars binoculars-ng/Makefile.am | 29 +++++++++++----------- .../data/test/config_mars_ruche_20232102.ini | 4 +-- 2 files changed, 17 insertions(+), 16 deletions(-) commit 527604d989567ec4b725b9a9ee5a805d2388d94e Author: Picca Frédéric-Emmanuel Date: Wed Oct 16 11:05:05 2024 +0200 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f766ae40b7c1cdccf47c9ef5deae6a1534dc7f2a Author: Picca Frédéric-Emmanuel Date: Wed Oct 16 10:54:40 2024 +0200 new version number configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 505dca7662e72239e2741ebbcae3655e37b3d3ec Author: Picca Frédéric-Emmanuel Date: Wed Oct 16 10:52:51 2024 +0200 released configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c929641e652015442bffd38f121d2a388b32e843 Author: Picca Frédéric-Emmanuel Date: Wed Oct 16 10:24:03 2024 +0200 [binoculars-ng] run the test with the libtool wrapper binoculars-ng/Makefile.am | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit eb947edca11a41e0b9e40af72cb7e9c330f08ef1 Author: Picca Frédéric-Emmanuel Date: Wed Oct 16 09:19:35 2024 +0200 [binoculars-ng] now cabal request --enable-test to build the tests binoculars-ng/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 3b700783410268a92887ccd5ca4a1dc236125abc Author: Picca Frédéric-Emmanuel Date: Tue Oct 15 12:39:58 2024 +0200 post-release configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5c58ceb2be41a860ed8705ae1ea6a16d6b65d0ba Author: Picca Frédéric-Emmanuel Date: Tue Oct 15 12:39:58 2024 +0200 released Makefile.am | 4 ++++ configure.ac | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) commit 2ef9755d9bea619b27b23885389e2427a8d1ebf4 Author: Picca Frédéric-Emmanuel Date: Tue Oct 15 10:49:22 2024 +0200 release 5.1.0 NEWS | 9 ++++++++- configure.ac | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) commit a59dd93afe55c1dc7ec38cc93ac04fd96a82e137 Author: Picca Frédéric-Emmanuel Date: Tue Oct 15 10:40:05 2024 +0200 [binoculars-ng] compiles with ghc 9.6 binoculars-ng/Makefile.am | 3 --- 1 file changed, 3 deletions(-) commit e5ddf13c302c9c5212fea89a4dd76994b698436c Author: Picca Frédéric-Emmanuel Date: Wed Oct 9 12:57:48 2024 +0200 [binoculars-ng] fix compilation with ghc 9.6 binoculars-ng/src/Hkl/Binoculars/Projections/Hkl.hs | 4 ++-- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- binoculars-ng/src/Hkl/Binoculars/Projections/Test.hs | 4 ++-- binoculars-ng/src/Hkl/C/Binoculars.hsc | 1 - 4 files changed, 6 insertions(+), 7 deletions(-) commit 508b4543df1aa7ef5168b41ab8ecb5530fce8ab6 Author: Picca Frédéric-Emmanuel Date: Tue Oct 8 14:29:04 2024 +0200 [binoculars] support a new way to read mask with the scannumber. .../data/test/config_grades_ruche_20232102.ini | 2 +- binoculars-ng/src/Hkl/Binoculars/Common.hs | 12 ++++---- binoculars-ng/src/Hkl/Binoculars/Config.hs | 34 +++++++++++++++------- binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 10 ++++++- binoculars-ng/src/Hkl/DataSource.hs | 4 +-- 5 files changed, 41 insertions(+), 21 deletions(-) commit 31d2e2db09e34bdad46ee5b67b32ee65e64b7e3a Author: Picca Frédéric-Emmanuel Date: Tue Oct 8 09:17:05 2024 +0200 [binoculars] do not expose the CIRPAD for now. binoculars-ng/binoculars/hkl-binoculars.h | 3 ++- binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- binoculars-ng/src/Hkl/C/Binoculars.hsc | 8 ++++---- 4 files changed, 9 insertions(+), 8 deletions(-) commit 8953ecfbcdf6e4e14e2bea3fa9794572366f6d95 Author: Picca Frédéric-Emmanuel Date: Mon Oct 7 17:09:13 2024 +0200 [binoculars] doc binoculars-ng/binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f5c79d911057f29cc5dc97998743a4a36bea7a1e Author: Picca Frédéric-Emmanuel Date: Mon Oct 7 17:08:00 2024 +0200 [binoculars-mg] Added the mars test with maskes on grades binoculars-ng/Makefile.am | 5 +++- .../data/test/config_grades_ruche_20232102.ini | 28 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) commit 103dc0d108fd3a073965e937f6d2a1d0e6c70c54 Author: Picca Frédéric-Emmanuel Date: Fri Oct 4 14:54:02 2024 +0200 [binoculars-ng] added q_scannumber and tth_scannumber projections binoculars-ng/Makefile.am | 4 +- binoculars-ng/binoculars/hkl-binoculars.c | 64 +++++++++++ binoculars-ng/binoculars/hkl-binoculars.h | 7 +- binoculars-ng/src/Hkl/Binoculars/Common.hs | 17 ++- binoculars-ng/src/Hkl/Binoculars/Config.hs | 104 ++++++++++-------- binoculars-ng/src/Hkl/Binoculars/Pipes.hs | 17 ++- .../src/Hkl/Binoculars/Projections/Angles.hs | 6 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 10 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 61 +++++++---- .../src/Hkl/Binoculars/Projections/Test.hs | 10 +- binoculars-ng/src/Hkl/C/Binoculars.hsc | 9 ++ binoculars-ng/src/Hkl/DataSource.hs | 32 ++++-- binoculars-ng/src/Hkl/Types.hs | 18 ++++ hkl/hkl-engine-aps-04id-polar.c | 68 ++++++------ tests/hkl-binoculars-t.c | 120 +++++++++++++-------- 15 files changed, 368 insertions(+), 179 deletions(-) commit 189939068d85a9756a473efd6314b692a68c8cc1 Author: Picca Frédéric-Emmanuel Date: Thu Oct 3 10:36:44 2024 +0200 [hkl] fix a typo in the aps-04id-polar lifting detector tau mode. hkl/hkl-engine-aps-04id-polar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit aff76d736ca14cbbf8cd390c51aa25aa908019ec Author: Picca Frédéric-Emmanuel Date: Wed Sep 11 12:05:25 2024 +0200 [binoculars-ng] support the MerlinMedipix3rxQuad512 on sixs binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 0929a9bf10ff9bddaa96451427b37f599490b5af Author: Picca Frédéric-Emmanuel Date: Fri Sep 6 16:12:01 2024 +0200 [binoculars-ng] remove the IsString instance for MaskLocation Still working on the MaskLocation evolution... binoculars-ng/src/Hkl/Binoculars/Config.hs | 8 ++------ binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) commit f69b5a1930c1fe29bf804ce3b3591b1618e42e07 Author: Picca Frédéric-Emmanuel Date: Fri Sep 6 14:50:10 2024 +0200 [binoculars-ng] MaskLocation now use the FieldParsable typeclass the idea is to add new MaskLocation constructors. binoculars-ng/Makefile.am | 4 ++-- binoculars-ng/src/Hkl/Binoculars/Config.hs | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) commit bf2988852daa907badd8495fe18f8261c565c828 Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 12:04:01 2024 +0200 [gui] remove warnings gui/hkl-gui.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit b33ee7ed15a1fdb108e0bcf6951025e68f2e3379 Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 10:29:14 2024 +0200 NEWS: updated NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 377e4e7bf1cb0761bef3ecbc53716e635cc77bc4 Author: Pete R Jemian Date: Fri Aug 2 10:35:41 2024 -0500 APS POLAR hkl/Makefile.am | 1 + hkl/hkl-engine-aps-04id-polar.c | 398 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 399 insertions(+) commit 183a0cd3b3fbc0157f6e8c20f03798f812eea01b Author: Picca Frédéric-Emmanuel Date: Wed Jul 31 11:19:57 2024 +0200 [binoculars-ng] deal with hdf5 errors the right way. binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 424 ++++++++++++++-------- binoculars-ng/binoculars/hkl-binoculars-private.h | 2 + binoculars-ng/binoculars/hkl-binoculars.h | 6 +- binoculars-ng/src/Hkl/Binoculars/Projections.hs | 17 +- binoculars-ng/src/Hkl/C/Binoculars.hsc | 2 +- binoculars-ng/src/Hkl/Exception.hs | 7 + 6 files changed, 293 insertions(+), 165 deletions(-) commit 595f0d2becbf6777d79ab16629db692c7bebcd1b Author: Picca Frédéric-Emmanuel Date: Wed Jul 31 09:15:08 2024 +0200 [binoculars-ng] create_dataspace_from_axes -> dataspace_new_from_axes binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit f6370f8fe676dacdcd8bd3edf1b4f12b0d69341f Author: Pete R Jemian Date: Fri Aug 2 09:04:36 2024 -0500 DOC gtk-doc is required for autoreconf README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0f8cc959188983f54b521c111358ca247cf81ac2 Author: Picca Frédéric-Emmanuel Date: Tue Jul 30 17:35:14 2024 +0200 [binoculars-ng] deal with most of hdf5 error when saving a cube binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 230 ++++++++++++++++++------- 1 file changed, 165 insertions(+), 65 deletions(-) commit 6f18a6137e120da49045c9bf8a806a4093bdc0b1 Author: Picca Frédéric-Emmanuel Date: Tue Jul 30 14:59:43 2024 +0200 [binoculars-ng] Added config files to test when the ruch is down. It use a local copy of the ruche data binoculars-ng/Makefile.am | 3 ++ .../data/test/config_grades_local_20231857.ini | 46 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) commit e27c6135550ff2f9539515af6085f2562180224b Author: Picca Frédéric-Emmanuel Date: Thu Jul 25 11:21:10 2024 +0200 [binoculars-ng] now the mask is part of the Dataframe. We can change the mask during the scan. binoculars-ng/src/Hkl/Binoculars/Config.hs | 10 +++- .../src/Hkl/Binoculars/Projections/Angles.hs | 14 +++-- .../src/Hkl/Binoculars/Projections/Hkl.hs | 14 +++-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 60 ++++++++++++++++------ .../src/Hkl/Binoculars/Projections/Test.hs | 14 +++-- binoculars-ng/src/Hkl/DataSource.hs | 29 +++++++++++ binoculars-ng/src/Hkl/Detector.hs | 1 - 7 files changed, 98 insertions(+), 44 deletions(-) commit c94003ba9b962289e14adac7b4ca85936569ad13 Author: Picca Frédéric-Emmanuel Date: Thu Jul 25 10:23:28 2024 +0200 [binoculars-ng] proposition for mask f-string style naming binoculars-ng/data/test/config_mars_ruche_20232102.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3a22fd65433c7271fd59387bc521c4ed2d33fa08 Author: Picca Frédéric-Emmanuel Date: Mon Jul 22 11:59:41 2024 +0200 [binoculars] implement the merge method binoculars-ng/Makefile.am | 4 +-- binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 29 +++++++++++++++++ binoculars-ng/binoculars/hkl-binoculars.c | 44 ++++++++++++++++++++++++++ binoculars-ng/binoculars/hkl-binoculars.h | 8 +++++ binoculars-ng/src/Hkl/Binoculars/Command.hs | 3 +- binoculars-ng/src/Hkl/C/Binoculars.hsc | 16 +++++++--- 6 files changed, 96 insertions(+), 8 deletions(-) commit f9cc9052ea38864a0be9b96aa6aa2ed97268f16d Author: Picca Frédéric-Emmanuel Date: Sat Jul 20 10:49:53 2024 +0200 [binoculars] reading the hdf5 binoculars file is ok For now there is no check during the read. If the binoculars file is malformed, it can crash. binoculars-ng/Makefile.am | 7 +- binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 313 +++++++++---------------- 2 files changed, 119 insertions(+), 201 deletions(-) commit 5ed90319c544564883932248ef03464c8b2f82c2 Author: Picca Frédéric-Emmanuel Date: Sat Jul 20 10:42:22 2024 +0200 [binoculars-ng] wrong axis values extracted from the array when deserializing the axies values fromt the hdf5 file, I used the wrong axes. This is now fixed. binoculars-ng/binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 14bc59044de394e31445743db5654e88685954f6 Author: Picca Frédéric-Emmanuel Date: Thu Jul 18 17:54:12 2024 +0200 [doc] fixed to build with Python3 on Debian system Documentation/hkl-default.el | 3 ++- Documentation/hkl.org.in | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 43a3671b976072c2e59a49990e9ba5efc9aca759 Author: Picca Frédéric-Emmanuel Date: Thu Jul 18 17:18:17 2024 +0200 [build] build hkl.h before everythings Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dce253506a65b30cf68e491a784172a03e010cd6 Author: Picca Frédéric-Emmanuel Date: Thu Jul 18 11:17:27 2024 +0200 [hkl] Added Hkl.VERSION in the binding configure.ac | 1 + hkl.h => hkl.h.in | 7 ++++++- tests/bindings/python.py | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) commit c3efda9e82b4b9b334afd74848c75c51ef7871a1 Author: Picca Frédéric-Emmanuel Date: Thu Jul 11 11:30:22 2024 +0200 [binoculars-ng] start to work on the cirpad binoculars-ng/Makefile.am | 10 +- .../binoculars/hkl-binoculars-detectors-2d.c | 11 +- binoculars-ng/binoculars/hkl-binoculars.h | 1 + .../data/test/config_diffabs_ruche_cirpad.ini | 520 +++++++++++++++++++++ binoculars-ng/src/Hkl/Binoculars/Config.hs | 2 + binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 1 + binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 + binoculars-ng/src/Hkl/C/Binoculars.hsc | 4 + binoculars-ng/src/Hkl/Geometry.hs | 10 + 10 files changed, 558 insertions(+), 5 deletions(-) commit 8798650c36eeea197d8a6114f4d2c4cd6127b0cd Author: Picca Frédéric-Emmanuel Date: Wed Jul 10 17:20:58 2024 +0200 wip # Conflicts: # binoculars-ng/binoculars/hkl-binoculars-hdf5.c # binoculars-ng/binoculars/hkl-binoculars-private.h # binoculars-ng/binoculars/hkl-binoculars.c binoculars-ng/Makefile.am | 29 ++- binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 236 ++++++++++++++++++++++ binoculars-ng/binoculars/hkl-binoculars-private.h | 6 + binoculars-ng/binoculars/hkl-binoculars.c | 10 +- binoculars-ng/binoculars/hkl-binoculars.h | 4 + binoculars-ng/hkl.cabal.in | 28 ++- binoculars-ng/src/Hkl/Binoculars/Command.hs | 3 + binoculars-ng/src/Hkl/C/Binoculars.hsc | 8 +- 8 files changed, 319 insertions(+), 5 deletions(-) commit 157ef1c8abe414c63c3c4cf54387e85b3fafc727 Author: Picca Frédéric-Emmanuel Date: Wed Jul 10 17:05:09 2024 +0200 [binoculars-ng] use GQuark to deal with dynamic strings binoculars-ng/binoculars/hkl-binoculars-hdf5.c | 4 ++-- binoculars-ng/binoculars/hkl-binoculars-private.h | 4 ++-- binoculars-ng/binoculars/hkl-binoculars.c | 7 ++++--- binoculars-ng/data/test/config_sixs_ruche_20231857.ini | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) commit 332bc989bbd4b8ed92d95a7138f8936508830867 Author: Picca Frédéric-Emmanuel Date: Thu Jun 27 15:42:30 2024 +0200 [binoculars-ng] start to implement a merge method. binoculars-ng merge -o merge.h5 files... binoculars-ng/Makefile.am | 28 +++++++++++++++------------- binoculars-ng/app/Main.hs | 19 +++++++++++++++---- binoculars-ng/src/Hkl/Binoculars/Command.hs | 9 ++++++++- 3 files changed, 38 insertions(+), 18 deletions(-) commit 4fd152c1181e758e512dbe3cc40bc96337b2782c Author: Picca Frédéric-Emmanuel Date: Thu Jun 27 11:58:18 2024 +0200 [binoculars-ng] added a specific mask for mars. The idea is to add a template in the mask name in order to select a different mask for each scanidx. binoculars-ng/data/test/config_mars_ruche_20232102.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5d81849c5ddf770d29e483bf0f5d813d5f08104b Author: Picca Frédéric-Emmanuel Date: Sat Jun 15 08:35:55 2024 +0200 [binoculars-ng] tagets depends on hkl.cabal binoculars-ng/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 42ed80407e8f3a1597d3af0f93ad6e31f3acf3d8 Author: Picca Frédéric-Emmanuel Date: Sat Jun 15 08:16:57 2024 +0200 format the python code with ruff format scripts/clean-all | 1 + scripts/indent-python | 11 +++++++++++ 2 files changed, 12 insertions(+) commit aa11e4809f67ab166cad189f7a10331450335d9a Author: Picca Frédéric-Emmanuel Date: Sat Jun 15 08:06:24 2024 +0200 pyupgrade --py37-plus tests/bindings/polarisation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5a20e852030a90f6920f4040fc437395bec3b532 Author: Picca Frédéric-Emmanuel Date: Sat Jun 15 08:03:54 2024 +0200 ruff on python code tests/bindings/polarisation.py | 263 +++++++++++++++++++++++++---------------- tests/bindings/python.py | 58 ++++----- tests/bindings/trajectory.py | 70 ++++++----- 3 files changed, 227 insertions(+), 164 deletions(-) commit 2be597ae7ce3a24564781be43a210f9ea84d1980 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:34:35 2024 +0200 [binoculars-ng] defaultConfig for all projections .../src/Hkl/Binoculars/Projections/Angles.hs | 37 ++++++------ .../src/Hkl/Binoculars/Projections/Hkl.hs | 35 ++++++----- .../src/Hkl/Binoculars/Projections/QCustom.hs | 67 +++++++++++----------- .../src/Hkl/Binoculars/Projections/Test.hs | 35 ++++++----- 4 files changed, 85 insertions(+), 89 deletions(-) commit bfbc633cf51b02d770d696e7148eea12873a2d32 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:26:16 2024 +0200 [binoculars-ng] idem for the Sample part binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 46 +++++++++++----------- .../src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../src/Hkl/Binoculars/Projections/Test.hs | 2 +- 3 files changed, 24 insertions(+), 26 deletions(-) commit 9a241cc871d002e4179f848e41747e29ff1cb59a Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:22:55 2024 +0200 [binoculars-ng] Added a defaultConfig in HasIniConfig binoculars-ng/src/Hkl/Binoculars/Config.hs | 2 + binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 129 ++++++++++----------- .../src/Hkl/Binoculars/Projections/Angles.hs | 4 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +- .../src/Hkl/Binoculars/Projections/Test.hs | 4 +- 6 files changed, 73 insertions(+), 74 deletions(-) commit 348976e4cd6940f3541866f2dfd9ef651bc104f4 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:14:56 2024 +0200 [binoculars-ng] hlint binoculars-ng/src/Hkl/Binoculars/Config.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 9b3b1f8844ff654cdb3c17aa41db74d4fb1353d9 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:07:43 2024 +0200 put the serializeConfig in the HasIniConfig typeclass binoculars-ng/src/Hkl/Binoculars/Config.hs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 05e9e6310a18f625a0c78fbbf70694f3d3e224f9 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 15:02:03 2024 +0200 [binoculars-ng] implemented the getConfig for the Sample part binoculars-ng/Makefile.am | 2 +- binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 31 +++++++++++----------- .../src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../src/Hkl/Binoculars/Projections/Test.hs | 2 +- 4 files changed, 19 insertions(+), 18 deletions(-) commit 971b6b0b49cdc78b450361cb0293860c728b9d51 Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 14:55:02 2024 +0200 [binoculars-ng] implement getConfig for the common config binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 13 +++++++------ binoculars-ng/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/Test.hs | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) commit 58bc81153c20673b6a0e41188028a947825c2a6d Author: Picca Frédéric-Emmanuel Date: Fri Jun 14 14:24:59 2024 +0200 [binoculars] move the toIni method into the HasConfig typeclass binoculars-ng/src/Hkl/Binoculars/Config.hs | 11 ++-- binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 65 +++++++++++----------- binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 43 +++++++------- binoculars-ng/src/Hkl/Binoculars/Projections.hs | 5 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 3 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 13 ++--- .../src/Hkl/Binoculars/Projections/QCustom.hs | 9 ++- .../src/Hkl/Binoculars/Projections/Test.hs | 22 ++++---- 8 files changed, 82 insertions(+), 89 deletions(-) commit 539238f1c7d2c3f4063057e36fb6186006661735 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 15:38:18 2024 +0200 one more .../src/Hkl/Binoculars/Projections/Hkl.hs | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) commit 2a20040b654e9f9afbb913814a99d60f688b0d31 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 15:32:12 2024 +0200 one more .../src/Hkl/Binoculars/Projections/Angles.hs | 46 +++++++++++----------- 1 file changed, 22 insertions(+), 24 deletions(-) commit 9f1a61f7bbd690a982cf3908338cc297f39fe199 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 15:24:41 2024 +0200 one more .../src/Hkl/Binoculars/Projections/Test.hs | 25 +++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) commit f1edbe208f0049109fbd237886884c19fb564cc4 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 15:19:14 2024 +0200 [binoculars-ng] more applicative -> do notation .../src/Hkl/Binoculars/Projections/QCustom.hs | 125 ++++++++++----------- 1 file changed, 62 insertions(+), 63 deletions(-) commit 157fbdd492807898d37e9c4e3f7a1165c82276c6 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 14:57:55 2024 +0200 [binoculars-ng] more applicative -> do notation binoculars-ng/src/Hkl/Binoculars/Config/Common.hs | 137 +++++++++++----------- 1 file changed, 69 insertions(+), 68 deletions(-) commit 7b1f473fb9059b511d091a4889fa0c803781c227 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 14:02:18 2024 +0200 [binoculars] use do notation instead of Applicative. following these advices https://www.haskellforall.com/2024/05/prefer-do-notation-over-applicative.html binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit 49f353286b0c23f10ce381d4b280e3a81251c856 Author: Picca Frédéric-Emmanuel Date: Thu Jun 13 11:57:39 2024 +0200 [binoculars-ng] embede the type fammily in HasIniConfig binoculars-ng/src/Hkl/Binoculars/Command.hs | 2 +- binoculars-ng/src/Hkl/Binoculars/Config.hs | 10 ++----- .../src/Hkl/Binoculars/Projections/Angles.hs | 24 +++++++-------- .../src/Hkl/Binoculars/Projections/Hkl.hs | 24 +++++++-------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 35 +++++++++++----------- .../src/Hkl/Binoculars/Projections/Test.hs | 23 +++++++------- 6 files changed, 55 insertions(+), 63 deletions(-) commit 6ec619d6a0aabad22e5c331ae898ce4f0100a0bf Author: Picca Frédéric-Emmanuel Date: Wed Jun 12 19:01:03 2024 +0200 [binoculars-ng] created an App monad for three layer applications binoculars-ng/app/Main.hs | 52 ++++++++++++++++++++++++++++++++-------------- binoculars-ng/hkl.cabal.in | 1 + 2 files changed, 37 insertions(+), 16 deletions(-) commit f6b019816e372e3d705fc147498c35d2d6c5969c Author: Picca Frédéric-Emmanuel Date: Wed Jun 12 14:22:41 2024 +0200 [binoculars-ng] fixed eix eiz for the med diffractometers binoculars-ng/src/Hkl/Geometry.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit cf7ac95e258f9c057feb89617528ab657da50db1 Author: Picca Frédéric-Emmanuel Date: Wed Jun 12 11:20:40 2024 +0200 [build] better dependencies for the haskell generated binaries binoculars-ng/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 35a2b6904e2d5e8b801e2dcb1334751b4381459f Author: Picca Frédéric-Emmanuel Date: Mon Jun 10 14:38:38 2024 +0200 [build] use the automake infrastructure in order to run tests binoculars-ng/Makefile.am | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) commit dca88cb48c410a0a7c4c7ab9600dd97b3096d348 Author: Picca Frédéric-Emmanuel Date: Mon Jun 10 14:24:03 2024 +0200 [binoculars-ng] fix local compilation binoculars-ng/hkl.cabal.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 68d47c326495db8ad867897abde686840a0ec22a Author: Picca Frédéric-Emmanuel Date: Fri Jun 7 10:32:37 2024 +0200 [binoculars-ng] added the haskell tests to make check binoculars-ng/Makefile.am | 33 ++++++++++++++++++++++++++------- binoculars-ng/hkl.cabal.in | 11 ++++++++++- binoculars-ng/test/BinocularsSpec.hs | 2 +- 3 files changed, 37 insertions(+), 9 deletions(-) commit 41adabc569a05a75c350c1fbf98090ebaf813a01 Author: Picca Frédéric-Emmanuel Date: Fri Jun 7 10:23:05 2024 +0200 [binoculars-ng] put the application under the app directory binoculars-ng/{src => app}/Main.hs | 0 binoculars-ng/hkl.cabal.in | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) commit 46e5df130785199249583c5495be27520c6251e0 Author: Picca Frédéric-Emmanuel Date: Fri Jun 7 10:17:25 2024 +0200 [binoculars-ng] not needed anymore binoculars-ng/debian/changelog | 5 - binoculars-ng/debian/compat | 1 - binoculars-ng/debian/control | 164 ------ binoculars-ng/debian/copyright | 688 ------------------------- binoculars-ng/debian/gbp.conf | 2 - binoculars-ng/debian/haskell-hkl-utils.install | 5 - binoculars-ng/debian/rules | 13 - binoculars-ng/debian/source/format | 1 - binoculars-ng/debian/watch.tmpl | 2 - 9 files changed, 881 deletions(-) commit 74984e5bb16c23f072dce2cf5343f9d5258d8a0f Author: Picca Frédéric-Emmanuel Date: Fri Jun 7 10:15:48 2024 +0200 [binoculars-ng] now that we build with cabal remove this autogenerated file binoculars-ng/src/Paths_hkl.hs | 74 ------------------------------------------ 1 file changed, 74 deletions(-) commit ff43ac8497df838f8364d50814ab008ea80c51e2 Author: Picca Frédéric-Emmanuel Date: Sun Jun 2 12:09:31 2024 +0200 [build] restore distcheck in the release target Makefile.am | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit c5fe18a6ffca9578cba73487bec66a78df5334ab Author: Picca Frédéric-Emmanuel Date: Sat Jun 1 16:09:04 2024 +0200 [build] PASS make distcheck binoculars-ng/Makefile.am | 21 ++++++++++++++++----- binoculars-ng/{hkl.cabal => hkl.cabal.in} | 6 +++--- configure.ac | 1 + 3 files changed, 20 insertions(+), 8 deletions(-) commit 80d656d5b7d15b34030e87225e410a2f5f62eeb6 Author: Picca Frédéric-Emmanuel Date: Fri May 31 16:52:20 2024 +0200 [build] add a tga target to tag the project Makefile.am | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit fabe65a7d7a7a80882514bddc1373f2e40639b25 Author: Picca Frédéric-Emmanuel Date: Fri May 31 16:47:26 2024 +0200 [binoculars] deal with the new cglm library it use NDEBUG to remove print call. binoculars-ng/binoculars/hkl-binoculars.c | 2 ++ 1 file changed, 2 insertions(+) commit 90bb3fd972a78a859f7a85cfe6dbc7f7d1d1fc6b Author: Picca Frédéric-Emmanuel Date: Fri May 31 15:58:07 2024 +0200 [build] check for cabal in configure.ac binoculars-ng/Makefile.am | 4 ++-- configure.ac | 14 +++----------- 2 files changed, 5 insertions(+), 13 deletions(-) commit 186ccfa7f45cee016405ba22455d1a2eb52faf08 Author: Picca Frédéric-Emmanuel Date: Fri May 31 15:54:27 2024 +0200 [binoculars-ng] fix an enum warning binoculars-ng/binoculars/hkl-binoculars.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit de678ce2755a93f59d1d7ac21aa09e8f97478f02 Author: Picca Frédéric-Emmanuel Date: Fri May 31 11:03:25 2024 +0200 [build] utilise cabal pour générer binculars-ng it is cleaner and should solve most of the build issues. for now distcheck does not work... binoculars-ng/Makefile.am | 146 ++++++++-------------------------------------- binoculars-ng/Setup.hs | 2 - 2 files changed, 23 insertions(+), 125 deletions(-) commit e146b62d0bf8e133d41aefde920c02a341145154 Author: Picca Frédéric-Emmanuel Date: Fri May 31 09:53:22 2024 +0200 pre-release binoculars-ng/binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fc38af478bd9db1fe9aa43df92b4db1ee9358bd9 Author: Picca Frédéric-Emmanuel Date: Fri May 31 09:46:35 2024 +0200 [build] do not run distcheck but check since we distribute the hsc2hs code, it seems that distcheck failed due to the hsc2hs command. the out of tree build is not supported... Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 2f14482d402fa9b54e8c06e0fc92c0cdfd076a80 Author: Picca Frédéric-Emmanuel Date: Thu May 30 10:59:35 2024 +0200 [binoculars-ng] added timescan0 to the projections binoculars-ng/Makefile.am | 5 +- binoculars-ng/binoculars/hkl-binoculars.c | 33 +++++++++- binoculars-ng/binoculars/hkl-binoculars.h | 2 + .../data/test/config_sixs_ruche_20231857.ini | 45 +++++++++++++ binoculars-ng/src/Hkl/Binoculars/Config.hs | 3 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 4 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 73 ++++++++++++++++++---- .../src/Hkl/Binoculars/Projections/Test.hs | 4 +- binoculars-ng/src/Hkl/C/Binoculars.hsc | 7 ++- binoculars-ng/src/Hkl/DataSource.hs | 18 ++++++ binoculars-ng/src/Hkl/Types.hs | 6 ++ tests/hkl-binoculars-t.c | 3 + 13 files changed, 184 insertions(+), 23 deletions(-) commit e0e89ba898f72a01a658417e8575d0bcb1c688b4 Author: Roland Mas Date: Fri May 24 16:01:50 2024 +0200 Remove -pthread from hsc2hs invocation binoculars-ng/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28ea78c9de2f8c886895e2352f579d774fa30ba3 Author: Picca Frédéric-Emmanuel Date: Wed May 29 14:21:53 2024 +0200 [binoculars-ng] added todo's for mars binoculars-ng/Makefile.am | 27 +++++++++++----------- .../data/test/config_mars_ruche_20232102.ini | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) commit d1e87443bc2ee60844737a1570c72d2bfd0df2df Author: Picca Frédéric-Emmanuel Date: Wed May 22 18:26:37 2024 +0200 [binoclars-ng] added the tth_azimuth projection for mars. binoculars-ng/Makefile.am | 2 +- binoculars-ng/binoculars/hkl-binoculars.c | 159 +++++++++++++++------ binoculars-ng/binoculars/hkl-binoculars.h | 1 + .../data/test/config_mars_ruche_20232102.ini | 4 +- binoculars-ng/src/Hkl/Binoculars/Config.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 + binoculars-ng/src/Hkl/C/Binoculars.hsc | 4 + 7 files changed, 130 insertions(+), 43 deletions(-) commit 496c7a2e2cca5ae22f6ad0eb153078e97d3d6a12 Author: Picca Frédéric-Emmanuel Date: Wed May 22 16:56:05 2024 +0200 [binoculars-ng] factotize the projection axes generation. use a macro in order to replicate the subprojection logic. binoculars-ng/binoculars/hkl-binoculars.c | 269 +++++++----------------------- 1 file changed, 56 insertions(+), 213 deletions(-) commit 792dea32472eb39e86cd2c425e634c83b526cc33 Author: Picca Frédéric-Emmanuel Date: Wed May 22 13:24:23 2024 +0200 [binoculars-ng] add description to the HklBinocularsProjectionAxis binoculars-ng/binoculars/hkl-binoculars.c | 115 +++++++++++++++++++++++++----- 1 file changed, 96 insertions(+), 19 deletions(-) commit b1d95b48651bf0666e66e23e25cda736568925c5 Author: Picca Frédéric-Emmanuel Date: Wed May 22 12:14:19 2024 +0200 [binoculars-ng] prepare cod ein order to split all projections axes for now I harcode combinations of projections. The idea is to let the user define his own combinqtion from individuql possibilities. binoculars-ng/binoculars/hkl-binoculars.c | 327 +++++++++++++++------ .../data/test/config_mars_ruche_20232102.ini | 3 +- 2 files changed, 244 insertions(+), 86 deletions(-) commit 0ad736e4733d57dc704fab8fa093d336596b550a Author: Picca Frédéric-Emmanuel Date: Tue May 21 15:29:56 2024 +0200 [binoculars-ng] test all the qcustom subprojections. tests/hkl-binoculars-t.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) commit 7ef91f6cadab1d5ae49bb845a7ab513f556662b4 Author: Picca Frédéric-Emmanuel Date: Tue May 21 14:01:26 2024 +0200 [binoculars-ng] Added the test file for the mars 20232102 project. .../data/test/config_mars_ruche_20232102.ini | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit 906517a30079145cbe3573aa5c4198330aa6c9f0 Author: Picca Frédéric-Emmanuel Date: Fri May 17 15:21:15 2024 +0200 [binoculars-ng] use Geometry in the dataframe. This is less efficient but a lot more readable when debugging... .../src/Hkl/Binoculars/Projections/Angles.hs | 3 +- .../src/Hkl/Binoculars/Projections/Hkl.hs | 3 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 21 +++--- .../src/Hkl/Binoculars/Projections/Test.hs | 3 +- binoculars-ng/src/Hkl/DataSource.hs | 25 +++---- binoculars-ng/src/Hkl/Geometry.hs | 85 +++++++++++++--------- 6 files changed, 77 insertions(+), 63 deletions(-) commit 7a7d1032b19b13f228be9f86f324ac4c8687a061 Author: Picca Frédéric-Emmanuel Date: Fri May 17 14:39:15 2024 +0200 [binoculars-ng] removed the useless DataSourceAcq'Geometry'MedVEiger binoculars-ng/src/Hkl/DataSource.hs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit ad20e5d551f3752d61f21bb19c92b9995064bf61 Author: Picca Frédéric-Emmanuel Date: Sat May 11 12:29:36 2024 +0200 [binoculars-ng] created a GeometryState this will integrate the Geometry Class and we will avoir exposing the C'HklGeometry pointer in the futur. binoculars-ng/src/Hkl/DataSource.hs | 2 +- binoculars-ng/src/Hkl/Geometry.hs | 9 +++++++-- binoculars-ng/src/Hkl/Orphan.hs | 8 ++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) commit 62284c41bc344380007c3539e8a452b14cbe1805 Author: Picca Frédéric-Emmanuel Date: Fri May 10 15:42:57 2024 +0200 [binoculars-ng] uniformize the DataSourcePath for [Double] .../src/Hkl/Binoculars/Projections/QCustom.hs | 105 ++++++++++++--------- binoculars-ng/src/Hkl/DataSource.hs | 43 +++++---- binoculars-ng/src/Hkl/Exception.hs | 3 +- 3 files changed, 84 insertions(+), 67 deletions(-) commit 8167409c148363ee29c907edf4a47ce9d9ec18fd Author: Picca Frédéric-Emmanuel Date: Fri May 10 14:36:09 2024 +0200 [binoculars-ng] specify deriving via DerivingStrategies binoculars-ng/src/Hkl/DataSource.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c7c28fa6bf1596407248b32c5a60533a2156e760 Author: Picca Frédéric-Emmanuel Date: Fri May 10 14:35:37 2024 +0200 [binoculars-ng] removed Arbitrary instances binoculars-ng/Makefile.am | 2 -- binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 8 ----- .../src/Hkl/Binoculars/Projections/Hkl.hs | 4 --- .../src/Hkl/Binoculars/Projections/QCustom.hs | 8 ----- .../src/Hkl/Binoculars/Projections/Test.hs | 4 --- binoculars-ng/src/Hkl/DataSource.hs | 37 ---------------------- 6 files changed, 63 deletions(-) commit 72961c750dbc39afde5c7addee9296a6055f3d3f Author: Picca Frédéric-Emmanuel Date: Fri May 10 14:17:17 2024 +0200 [binoculars-ng] factorize the withDataSourcePOr method binoculars-ng/src/Hkl/Binoculars/Config/Sample.hs | 10 ++-------- binoculars-ng/src/Hkl/DataSource.hs | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 14 deletions(-) commit d1f372a90b245678a812b0fd39af86130aeac6b0 Author: Picca Frédéric-Emmanuel Date: Mon May 6 13:39:41 2024 +0200 [binoculars-ng] Added all the mars test files binoculars-ng/Makefile.am | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit 513467583436ae1ff95f98247030b4a518c2210f Author: Picca Frédéric-Emmanuel Date: Mon Apr 22 15:35:18 2024 +0200 [binoculars-ng] added an old sixs test file binoculars-ng/Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 9ff4616b2e000e1925f63c263b842a1f0c57f70d Author: Picca Frédéric-Emmanuel Date: Fri Apr 19 12:27:45 2024 +0200 [binoculars-ng] fix the build dependencies added the .o and .hs has dependencies to allow rebuild when modifyng the sources binoculars-ng/Makefile.am | 7 ++++--- binoculars-ng/data/test/Makefile | 2 +- binoculars-ng/src/Hkl/Binoculars/Projections/QCustom.hs | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) commit 98f56b3fb9156324aebc86cee22986ff31cdb6ee Author: Picca Frédéric-Emmanuel Date: Fri Apr 19 12:03:36 2024 +0200 [buildsystem] Added the mars target for testing purpose binoculars-ng/Makefile.am | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) commit 011c95505c1db6871b85532e8ebd7a582632176d Author: Picca Frédéric-Emmanuel Date: Thu Apr 18 17:42:25 2024 +0200 [buildsystem] declare dependencies in order to allow parallel build binoculars-ng/Makefile.am | 4 ++++ 1 file changed, 4 insertions(+) commit 5699442dc566f0e5446ee426c6712a216d3c95e2 Author: Picca Frédéric-Emmanuel Date: Thu Apr 18 14:45:09 2024 +0200 [buildsystem] use xvfb-run in order to build the docu without DISPLAY Documentation/figures/Makefile.am | 6 ++++-- configure.ac | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) commit 37a956453d14b864f8e58783bfed21ad39fb134a Author: Picca Frédéric-Emmanuel Date: Thu Apr 18 11:30:22 2024 +0200 [build] allow to build hkl with the system datatype99 --enable-datatype99 check that the system library is available. if not it fallback automatically to the embeded version, in order to support debian bookworm-backports. Documentation/figures/Makefile.am | 3 +-- binoculars-ng/Makefile.am | 3 ++- binoculars-ng/binoculars/Makefile.am | 5 ++--- configure.ac | 17 +++++++++++++++++ contrib/cristal/Makefile.am | 3 +-- contrib/cristal/xrays/Makefile.am | 3 +-- gui/Makefile.am | 3 +-- hkl/Makefile.am | 3 +-- hkl/api2/Makefile.am | 3 +-- hkl3d/Makefile.am | 3 +-- tests/Makefile.am | 3 +-- tests/tap/Makefile.am | 2 +- 12 files changed, 30 insertions(+), 21 deletions(-) commit 80030731add5faeb0651c7be7d05a0b066700aea Author: Picca Frédéric-Emmanuel Date: Wed Apr 17 16:47:41 2024 +0200 [build] make distcheck works again. binoculars-ng/Makefile.am | 26 +++++++------------------- binoculars-ng/hkl.cabal | 2 +- binoculars-ng/{app => src}/Main.hs | 0 3 files changed, 8 insertions(+), 20 deletions(-) commit 5ed2b1284dfd10d89ff8204cacab8f244f8b7137 Author: Picca Frédéric-Emmanuel Date: Wed Apr 17 15:12:30 2024 +0200 [build] do not use LDFLAGS and CFLAGS with ghc. this avoid build failure. Documentation/figures/Makefile.am | 4 +- binoculars-ng/Makefile.am | 117 ++++++++++++++++++-------------------- 2 files changed, 57 insertions(+), 64 deletions(-) commit c2359440baeb38f5acbee91507d1aacf36f1b5bb Author: Picca Frédéric-Emmanuel Date: Fri Apr 5 10:16:25 2024 +0200 pre-release .../binoculars/hkl-binoculars-config-private.h | 34 +- binoculars-ng/binoculars/hkl-binoculars-config.c | 32 +- binoculars-ng/binoculars/hkl-binoculars-private.h | 24 +- binoculars-ng/binoculars/hkl-binoculars.c | 6 +- binoculars-ng/binoculars/hkl-binoculars.h | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.h | 2 +- hkl/hkl-engine-esrf-id01-psic.c | 6 +- hkl/hkl-trajectory-private.h | 18 +- tests/runtests.c | 2246 ++++++++++---------- tests/tap/basic.h | 18 +- 11 files changed, 1195 insertions(+), 1195 deletions(-) commit a99a0dfc7fda7260c95a0e7dc0f6eb68520321f6 Author: Picca Frédéric-Emmanuel Date: Fri Apr 5 10:15:46 2024 +0200 [scripts] fixed clean-all due to the binoculars move scripts/clean-all | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 632e891631db8e858f6527647c36c9e9ba2602be Author: Picca Frédéric-Emmanuel Date: Thu Apr 4 14:38:46 2024 +0200 [third-party] updated datatype99 and metalang99 third-party/datatype99.h | 10 ++++++---- third-party/metalang99.h | 2 +- third-party/metalang99/lang/closure.h | 2 +- third-party/metalang99/list.h | 3 +++ third-party/metalang99/stmt.h | 22 +++++++++++++++++----- 5 files changed, 28 insertions(+), 11 deletions(-) commit 602e7fb481b7219d610575853a6ddddeda43449f Author: Picca Frédéric-Emmanuel Date: Thu Apr 4 14:15:55 2024 +0200 [binoculars-ng] move binoculars into binoculars-ng Makefile.am | 6 +- binoculars-ng/Makefile.am | 10 +- .../binoculars}/Makefile.am | 0 binoculars-ng/binoculars/binoculars-hkl | 210 +++++++++++++++++++++ .../binoculars}/binoculars-hkl.c | 0 .../binoculars}/hkl-binoculars-cnpy-private.h | 0 .../binoculars}/hkl-binoculars-cnpy.c | 0 .../binoculars}/hkl-binoculars-config-private.h | 0 .../binoculars}/hkl-binoculars-config.c | 0 .../binoculars}/hkl-binoculars-detectors-2d.c | 0 .../binoculars}/hkl-binoculars-geometry.c | 0 .../binoculars}/hkl-binoculars-hdf5.c | 0 .../binoculars}/hkl-binoculars-private.h | 0 .../binoculars}/hkl-binoculars.c | 0 .../binoculars}/hkl-binoculars.h | 0 configure.ac | 3 +- hkl-binoculars.pc.in | 14 -- tests/Makefile.am | 14 +- 18 files changed, 231 insertions(+), 26 deletions(-) commit 9caa7d27d7cc2730b163aaff0bcfbeb10279da94 Author: Picca Frédéric-Emmanuel Date: Wed Mar 27 08:37:27 2024 +0100 [binoculars] added a cabal target to build the project with cabal. This is for development purpose binoculars-ng/Makefile.am | 24 ++++++++++++++++++++++++ binoculars-ng/bootstrap | 1 - binoculars-ng/devel | 1 - binoculars-ng/release | 1 - 4 files changed, 24 insertions(+), 3 deletions(-) commit e18342d6c3665f5d1a6ff90ea85671c3d7a71b59 Author: Picca Frédéric-Emmanuel Date: Tue Mar 19 15:14:49 2024 +0100 [build] simplify the CLEANFILES binoculars-ng/Makefile.am | 107 +++++----------------------------------------- 1 file changed, 11 insertions(+), 96 deletions(-) commit a1eae7a7c7c3124c68908fb2fcaa75e11d633398 Author: Picca Frédéric-Emmanuel Date: Tue Mar 19 14:37:28 2024 +0100 [binoculars] remove all files in order to make distcheck works. On Debian stable the ghc behaviour is different. So remove more files binoculars-ng/Makefile.am | 66 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 11 deletions(-) commit 9ced98a1fc59fe4afa9d29d17291d03dfee8fe5e Author: Picca Frédéric-Emmanuel Date: Tue Mar 19 11:11:32 2024 +0100 [binoculars-ng] rework the Makefile use as mucg as possible of the automake infrastructure to deal with generated files. binoculars-ng/Makefile.am | 126 +++++++++++++++++---------- binoculars-ng/app/{Binoculars.hs => Main.hs} | 0 binoculars-ng/hkl.cabal | 2 +- configure.ac | 12 +++ 4 files changed, 91 insertions(+), 49 deletions(-) commit 764736022d85e8e124f5e09d542eb2c7d88cfa9e Author: Picca Frédéric-Emmanuel Date: Tue Mar 19 09:49:14 2024 +0100 [contrib/haskell] move into binoculars-ng now we build binoculars-ng from the hkl sources. Makefile.am | 2 +- {contrib/haskell => binoculars-ng}/LICENSE | 0 {contrib/haskell => binoculars-ng}/Makefile.am | 0 {contrib/haskell => binoculars-ng}/Setup.hs | 0 {contrib/haskell => binoculars-ng}/app/Binoculars.hs | 0 {contrib/haskell => binoculars-ng}/bootstrap | 0 {contrib/haskell => binoculars-ng}/data/3d3.ui | 0 {contrib/haskell => binoculars-ng}/data/ghkl3.ui | 0 {contrib/haskell => binoculars-ng}/data/gprof2dot.py | 0 {contrib/haskell => binoculars-ng}/data/pseudo3.ui | 0 {contrib/haskell => binoculars-ng}/data/test/Makefile | 0 {contrib/haskell => binoculars-ng}/data/test/binoculars-mode.el | 0 {contrib/haskell => binoculars-ng}/data/test/config_ech6eiger.txt | 0 {contrib/haskell => binoculars-ng}/data/test/config_manip1.cfg | 0 {contrib/haskell => binoculars-ng}/data/test/config_manip2.cfg | 0 {contrib/haskell => binoculars-ng}/data/test/config_map.txt | 0 .../data/test/config_mars_ruche_rel_flyscan.ini | 0 .../data/test/config_ord05133_110_m1018_32h_Qxyz_Vhkl.ini | 0 .../haskell => binoculars-ng}/data/test/config_ord05133_flymedv.ini | 0 {contrib/haskell => binoculars-ng}/data/test/config_ord05133_int32.cfg | 0 .../data/test/config_ord05133_ruche_limit_18KeV.ini | 0 .../data/test/config_ord05133_ruche_mars_flyscan.ini | 0 .../data/test/config_ord05133_ruche_uhv_big.ini | 0 .../haskell => binoculars-ng}/data/test/config_ord05133_sbsmedv.ini | 0 {contrib/haskell => binoculars-ng}/data/test/config_sixs_biggest.ini | 0 {contrib/haskell => binoculars-ng}/data/test/config_sixs_local.ini | 0 .../data/test/config_sixs_ruche_110_m1018_32h_Qxyz_Vhkl.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_angles.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_flymedv.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_flymedv_2.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_flymedv_3.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_limits.txt | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_parsing.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_qcustom.ini | 0 .../haskell => binoculars-ng}/data/test/config_sixs_ruche_qcustom2.ini | 0 .../data/test/config_sixs_ruche_qcustom2_1.ini | 0 .../data/test/config_sixs_ruche_qcustom2_2.ini | 0 .../data/test/config_sixs_ruche_qcustom2_20220739.ini | 0 .../data/test/config_sixs_ruche_qcustom2_3.ini | 0 .../data/test/config_sixs_ruche_qcustom_20220739.ini | 0 .../data/test/config_sixs_ruche_qcustom_sbsuhv.ini | 0 {contrib/haskell => binoculars-ng}/data/test/config_sixs_ruche_uhv.ini | 0 {contrib/haskell => binoculars-ng}/data/test/config_ssd_cristal.ini | 0 .../haskell => binoculars-ng}/data/test/config_ssd_cristal_limits.ini | 0 .../haskell => binoculars-ng}/data/test/config_ssd_cristal_qparqper.ini | 0 .../haskell => binoculars-ng}/data/test/config_ssd_sixs_flymedv.txt | 0 .../haskell => binoculars-ng}/data/test/config_ssd_sixs_flymedv_v2.txt | 0 {contrib/haskell => binoculars-ng}/data/test/test.sh | 0 {contrib/haskell => binoculars-ng}/debian/changelog | 0 {contrib/haskell => binoculars-ng}/debian/compat | 0 {contrib/haskell => binoculars-ng}/debian/control | 0 {contrib/haskell => binoculars-ng}/debian/copyright | 0 {contrib/haskell => binoculars-ng}/debian/gbp.conf | 0 {contrib/haskell => binoculars-ng}/debian/haskell-hkl-utils.install | 0 {contrib/haskell => binoculars-ng}/debian/rules | 0 {contrib/haskell => binoculars-ng}/debian/source/format | 0 {contrib/haskell => binoculars-ng}/debian/watch.tmpl | 0 {contrib/haskell => binoculars-ng}/devel | 0 {contrib/haskell => binoculars-ng}/doc/TODO.org | 0 {contrib/haskell => binoculars-ng}/hkl.cabal | 0 {contrib/haskell => binoculars-ng}/release | 0 {contrib/haskell => binoculars-ng}/src/Hkl.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Command.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Common.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Conduit.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Config.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Config/Common.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Config/Sample.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Pipes.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Binoculars/Projections.hs | 0 .../haskell => binoculars-ng}/src/Hkl/Binoculars/Projections/Angles.hs | 0 .../haskell => binoculars-ng}/src/Hkl/Binoculars/Projections/Hkl.hs | 0 .../haskell => binoculars-ng}/src/Hkl/Binoculars/Projections/QCustom.hs | 0 .../haskell => binoculars-ng}/src/Hkl/Binoculars/Projections/Test.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/C.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/C/Binoculars.hsc | 0 {contrib/haskell => binoculars-ng}/src/Hkl/C/Hkl.hsc | 0 {contrib/haskell => binoculars-ng}/src/Hkl/DArray.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/DataSource.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Detector.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Engine.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Exception.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Geometry.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/H5.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/HKD.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Image.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Lattice.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/MyMatrix.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Orphan.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Parameter.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Pipes.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Repa.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Sample.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Types.hs | 0 {contrib/haskell => binoculars-ng}/src/Hkl/Utils.hs | 0 {contrib/haskell => binoculars-ng}/src/Paths_hkl.hs | 0 {contrib/haskell => binoculars-ng}/src/ghkl.hs | 0 {contrib/haskell => binoculars-ng}/src/hkl.hs | 0 {contrib/haskell => binoculars-ng}/test/BinocularsSpec.hs | 0 {contrib/haskell => binoculars-ng}/test/Spec.hs | 0 configure.ac | 2 +- 102 files changed, 2 insertions(+), 2 deletions(-) commit acb92b156448afebbcfe0ac6c989d1430581aa38 Author: Picca Frédéric-Emmanuel Date: Fri Mar 15 13:30:08 2024 +0100 [contrib/haskell] build binoculars-ng with autotools This way we link with the local dev libraries. Makefile.am | 2 +- binoculars/Makefile.am | 17 ++--- contrib/Makefile.am | 2 +- contrib/cristal/Makefile.am | 2 +- contrib/cristal/xrays/Makefile.am | 2 +- contrib/haskell/Makefile.am | 156 ++++++++++++++++++++++++++++++++++++-- contrib/haskell/src/Paths_hkl.hs | 74 ++++++++++++++++++ tests/Makefile.am | 2 +- 8 files changed, 235 insertions(+), 22 deletions(-) commit a22bd56cd710eaf4708ac996aaa1c32f43648314 Author: Picca Frédéric-Emmanuel Date: Fri Mar 15 09:52:59 2024 +0100 [hkl] save the previous values when setting lattice parameters the previous code, was setting undefined values!!! hkl/hkl-lattice.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) commit b696cd43b7d36777c6c2a5197b9d0ffe8dcd73f1 Author: Picca Frédéric-Emmanuel Date: Thu Mar 14 19:00:19 2024 +0100 [binoculars] rename a bunch of types binoculars/binoculars-hkl.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) commit e1ee83bf9728a79571d831d2e3c1fe6ea99591b4 Author: Picca Frédéric-Emmanuel Date: Thu Mar 14 10:12:55 2024 +0100 [contrib/haskell] embed the Repa part in order to remove the dependency Repa was removed from the Debian repository. binoculars/Makefile.am | 1 + contrib/haskell/Makefile.am | 6 +- contrib/haskell/debian/control | 3 - contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 +- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 5 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 47 ++- .../src/Hkl/Binoculars/Projections/Angles.hs | 6 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +- .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 6 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- contrib/haskell/src/Hkl/DataSource.hs | 5 +- contrib/haskell/src/Hkl/Detector.hs | 5 +- contrib/haskell/src/Hkl/H5.hs | 7 +- contrib/haskell/src/Hkl/Orphan.hs | 23 +- contrib/haskell/src/Hkl/Repa.hs | 333 +++++++++++++++++++++ 19 files changed, 393 insertions(+), 81 deletions(-) commit c31cd4d8ef348f12d88f134468701753dadc8cdc Author: Picca Frédéric-Emmanuel Date: Fri Feb 9 16:38:01 2024 +0100 [binoculars] simplify the SubCmd parsing We associated the subcommand name and the parser in the SubCmd type. binoculars/binoculars-hkl.c | 65 ++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 28 deletions(-) commit 4090b933165f0e5332c54402d06d40b431158683 Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 15:31:27 2024 +0100 [binoculars] play with datatype device clause. In order to implement an Option_fprintf method... binoculars/binoculars-hkl.c | 60 ++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 33 deletions(-) commit b54c521504f079ef40832f875e16c595939161b9 Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 13:30:20 2024 +0100 [binoculars] almost implement the process arg parsing binoculars/binoculars-hkl.c | 115 +++++++++++++++++++++-------- binoculars/hkl-binoculars-config-private.h | 21 +++--- binoculars/hkl-binoculars-config.c | 72 +++++++++++++++--- 3 files changed, 161 insertions(+), 47 deletions(-) commit f6b169edab887c5854a7d90530ba5ebfb870808b Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 10:26:45 2024 +0100 [binoculars] setup all the argp infrastructure. binoculars/binoculars-hkl.c | 315 ++++++++++++++++++++++++++++- binoculars/hkl-binoculars-config-private.h | 32 +++ 2 files changed, 344 insertions(+), 3 deletions(-) commit 3506cdf7e98201e983b6a4c017f927260df15ebf Author: Picca Frédéric-Emmanuel Date: Wed Feb 7 16:00:43 2024 +0100 [binoculars] Added the first arg_parse for the command line binoculars/binoculars-hkl.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 69546832283c70ba11392c0e6bb62d231b18bdb2 Author: Picca Frédéric-Emmanuel Date: Tue Feb 6 15:40:13 2024 +0100 [binoculars] correct for real the cglm version check binoculars/hkl-binoculars-geometry.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 9c998a8d21053d3a39aceea7e12f092364ddb646 Author: Picca Frédéric-Emmanuel Date: Tue Feb 6 10:40:14 2024 +0100 [binoculars] Added the Sample configuration there is no implementation for now binoculars/hkl-binoculars-config.c | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) commit 4c03101d901e3a105d3993d32aa5501765761589 Author: Picca Frédéric-Emmanuel Date: Tue Feb 6 10:24:56 2024 +0100 [binoculars] put the config in its own files binoculars/Makefile.am | 13 +- binoculars/binoculars-hkl.c | 462 +--------------------------- binoculars/hkl-binoculars-config-private.h | 26 ++ binoculars/hkl-binoculars-config.c | 468 +++++++++++++++++++++++++++++ 4 files changed, 505 insertions(+), 464 deletions(-) commit a0eb007477c7982c9e755750c000eadc5a597270 Author: Picca Frédéric-Emmanuel Date: Tue Feb 6 09:51:13 2024 +0100 [binoculars] rename into binoculars-hkl binoculars/Makefile.am | 5 ++++- binoculars/{binoculars.c => binoculars-hkl.c} | 0 2 files changed, 4 insertions(+), 1 deletion(-) commit 8800bcf14213fd7be8078d92c4987e68bc6a3574 Author: Picca Frédéric-Emmanuel Date: Tue Feb 6 09:45:01 2024 +0100 [binoculars] fixed the version comparison for cglm binoculars/hkl-binoculars-geometry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 750ba76f97bad41e6fbb5de64e78054f45a3f9c3 Author: Picca Frédéric-Emmanuel Date: Sun Feb 4 16:11:55 2024 +0100 [documentation] Added the macbook pro bug informations Documentation/hkl.org.in | 140 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) commit c3badf0779a70f1666ccf8241d144ebb01897a0e Author: Picca Frédéric-Emmanuel Date: Sun Feb 4 15:46:28 2024 +0100 [hkl] support cglm 0.9.2 whcih just arrive in Debian unstable binoculars/hkl-binoculars-geometry.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit c3e80b23637258d4f13719d7ed3bfccd6a707617 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 22:49:53 2024 +0100 [binoculars] add data necessary to parse the common config part. binoculars/binoculars.c | 165 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 153 insertions(+), 12 deletions(-) commit 12d8c2d3cb90b42d1d75cb3191a3f0123b9ae008 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 22:30:15 2024 +0100 [binoculars] start to migrate the common configuration to C binoculars/binoculars.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) commit fe9a3074efdc60c00f81ca72e1fdb1f95d75068c Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 21:39:23 2024 +0100 [binoculars] add more input.type binoculars/Makefile.am | 2 +- binoculars/{readhdf5.c => binoculars.c} | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) commit 13c8551f0fd78a51149def29bb6146e7e8e26be2 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 16:11:49 2024 +0100 [binoculars] simplify input.type parsing binoculars/readhdf5.c | 245 +++++++++++++++++++++++--------------------------- 1 file changed, 112 insertions(+), 133 deletions(-) commit 5b49483d3e967bc9d1eac0626179e21978318d06 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 14:09:45 2024 +0100 [doc] Added TODO's for binoculars-ng Documentation/hkl.org.in | 7 +++++++ 1 file changed, 7 insertions(+) commit a4895575c40f50a09c5bf7b9cd69b153a81077fb Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 13:58:11 2024 +0100 [contrib/haskell] Added the MerlinMedipix3rxQuad512 to binoculars-ng contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 ++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) commit f5a4592baa147e5b2cc0910318d556181484ea55 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 11:29:17 2024 +0100 [contrib/haskell] Added the MerlinMedipix3RXQuad512 detector this is the MerlinMedipix3RXQuad with no gap filling binoculars/Makefile.am | 4 +- binoculars/hkl-binoculars-detectors-2d.c | 189 +++++++++++++++++++++---------- binoculars/hkl-binoculars.h | 3 +- tests/hkl-binoculars-t.c | 18 +-- 4 files changed, 145 insertions(+), 69 deletions(-) commit 1258613d92b7fb77618a85b7633ca6c3c50eb1d7 Author: Picca Frédéric-Emmanuel Date: Fri Feb 2 09:56:18 2024 +0100 [contrib/haskell] added the new Mars data access. .../src/Hkl/Binoculars/Projections/QCustom.hs | 27 ++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) commit c9093fb26e6cc8a163c09ae2ed72ad48bec78e3c Author: Picca Frédéric-Emmanuel Date: Thu Feb 1 19:01:41 2024 +0100 [binoculars] better version of the input.type parser. binoculars/readhdf5.c | 73 ++++++++++------------------ contrib/haskell/data/test/binoculars-mode.el | 2 +- 2 files changed, 27 insertions(+), 48 deletions(-) commit 731ea9a9286a1ae7b2af66b2069085cee21aef67 Author: Picca Frédéric-Emmanuel Date: Thu Feb 1 14:46:39 2024 +0100 [binoculars] now I can parse the input.type parameter. binoculars/readhdf5.c | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) commit 6b7864b1f102553c111fd46b5f25d503c09b9c16 Author: Picca Frédéric-Emmanuel Date: Wed Jan 31 18:13:03 2024 +0100 [binoculars] work on the input.type parsing. binoculars/readhdf5.c | 122 +++++++++++++++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 46 deletions(-) commit 6d81376b6270e691cb53da83ed098d7f36bcdd2d Author: Picca Frédéric-Emmanuel Date: Wed Jan 31 12:02:46 2024 +0100 [contrib/haskell] added a binoculars-mode.el This will allow to edit nicely the config.ini files and run binoculars from emacs. contrib/haskell/data/test/binoculars-mode.el | 69 ++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) commit cf28c829c2af85dc843494f38e463bb49b033d91 Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 18:02:24 2024 +0100 [binoculars] start implementing the pre-ini parsing binoculars/readhdf5.c | 144 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 118 insertions(+), 26 deletions(-) commit 661805147a13ad3933f26cde5c3489843fae52e5 Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 15:41:04 2024 +0100 [binoculars] start implementing the ini file parsing. The idea is to switch to C code the haskell code. binoculars/Makefile.am | 6 ++++-- binoculars/readhdf5.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) commit b2bb932583f79564e5912baa613028ffb5344870 Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 15:30:10 2024 +0100 [binoculars] added inih library for the C version of binoculars configure.ac | 1 + 1 file changed, 1 insertion(+) commit a3c3b573f4e06f4480233949d1914582a308c77f Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 15:13:19 2024 +0100 [hkl] set the pom.xml version number for Soleil hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bfb6ef3eb3f524cf30b59dbe66c247ef258a1ec1 Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 15:00:51 2024 +0100 [hkl] fix the hkl_lattice_set method Now it restore the original lattice if something goes wrong. hkl/hkl-lattice.c | 94 +++++++++++++++++++++++++++++++++++++++++---------- tests/hkl-lattice-t.c | 9 +++-- 2 files changed, 84 insertions(+), 19 deletions(-) commit cd41ed023a8b6038b2d095d6baf45d580a3aa2a3 Author: Picca Frédéric-Emmanuel Date: Tue Jan 30 11:55:23 2024 +0100 [hkl] use linux style spaces -> tabs. use also goto in order to deal with failure. It avoid repeating ourself. hkl/hkl-lattice.c | 230 ++++++++++++++++++++++++++---------------------------- 1 file changed, 112 insertions(+), 118 deletions(-) commit c734927c47fca3b15196e7e2623b04e3cc730492 Author: Picca Frédéric-Emmanuel Date: Mon Jan 29 17:33:11 2024 +0100 [contrib/haskell] updated MarsFlyscan to read the new files contrib/haskell/data/test/Makefile | 5 +++-- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) commit 5381436c6b74c43257cdba07b89f9fe2003feb64 Author: Picca Frédéric-Emmanuel Date: Mon Jan 29 16:46:42 2024 +0100 [contrib/haskell] added the mars test data's contrib/haskell/data/test/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 05f80273c48cfa475065bd8396d34ee8e5f88e68 Author: Picca Frédéric-Emmanuel Date: Wed Nov 22 09:52:02 2023 +0100 [haskell] increase the version number. contrib/haskell/debian/changelog | 2 +- contrib/haskell/hkl.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 703f1ba346ef0a8a066d53c01c0bcdccb080ea18 Author: Picca Frédéric-Emmanuel Date: Wed Nov 22 09:30:55 2023 +0100 [haskell] use the right version of the hkl library >= 5.0.0.3381-1~ contrib/haskell/debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 78b5547a0aef7b5cf6ac90cec2f0281968afd053 Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 14:39:51 2023 +0100 post-release bump Documentation/hkl.org.in | 1 + 1 file changed, 1 insertion(+) commit 742a5f856ae8369256dc8dfadcbeb7b6ed857706 Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 14:30:39 2023 +0100 pre-release INSTALL | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 231468e6c1124ccdb94afe170d10f327908c7aa6 Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 11:07:26 2023 +0100 [doc] update changelog Documentation/hkl.org.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 0893c87414e3921a373f3c8a7fa4fa15800c78ad Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 11:00:09 2023 +0100 [hkl] fix hkl_parameter_new error handling the test check that *erro was NULL instead of verifying the inverse when an error is raised. hkl/hkl-lattice.c | 14 +++++++------- hkl/hkl-parameter.c | 4 ++-- tests/hkl-lattice-t.c | 29 +++++++++++++++++++---------- tests/hkl-parameter-t.c | 2 +- 4 files changed, 29 insertions(+), 20 deletions(-) commit 089d709602acb262700b30fc33909d647833a34e Author: Picca Frédéric-Emmanuel Date: Mon Nov 20 11:01:44 2023 +0100 [binoculars] added the [qx_qy|qx_qz|qy_qz]_timestamp custom projection Documentation/hkl.org.in | 1 + binoculars/hkl-binoculars.c | 95 +++++++++++++++++++++- binoculars/hkl-binoculars.h | 3 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 6 ++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 12 +++ 6 files changed, 119 insertions(+), 1 deletion(-) commit c8de88ee72b4ab1072b7fa6bafec094e054ea566 Author: Picca Frédéric-Emmanuel Date: Fri Nov 17 17:25:06 2023 +0100 update documentation Documentation/hkl.org.in | 2 ++ 1 file changed, 2 insertions(+) commit a4aa8af10db43eb67af1670c57d6f83794c5cbc7 Author: Picca Frédéric-Emmanuel Date: Fri Nov 17 16:55:08 2023 +0100 [hkl] deal with invalid lattice parameters. hkl/hkl-lattice.c | 173 ++++++++++++++++++++++++++++++++------------ hkl/hkl-parameter-private.h | 4 +- hkl/hkl-parameter.c | 97 ++++++++++++++++++------- hkl/hkl-sample.c | 8 +- tests/hkl-parameter-t.c | 138 ++++++++++++++++++++++------------- 5 files changed, 291 insertions(+), 129 deletions(-) commit b775b58e48ad35dcf1c37cdb6eff49bf7611e7b0 Author: Picca Frédéric-Emmanuel Date: Fri Nov 17 11:09:01 2023 +0100 [binoculars] Added a q_sampleaxis_timestamp binoculars/hkl-binoculars.c | 36 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 ++++---- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 ++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 +++ 5 files changed, 50 insertions(+), 6 deletions(-) commit 9e1835335e8d3a7b7b269c1bcd64bd55bf7f307b Author: Picca Frédéric-Emmanuel Date: Fri Sep 29 15:14:47 2023 +0200 [contrib/haskell] Added missing B-D libghc-lens-dev contrib/haskell/debian/control | 3 +++ 1 file changed, 3 insertions(+) commit 0b2d4a0e4156e3ff2ecc239587108a812a13562e Author: Picca Frédéric-Emmanuel Date: Fri Sep 29 14:33:42 2023 +0200 [contrib/haskell] release 0.1.0.1 contrib/haskell/debian/changelog | 2 +- contrib/haskell/debian/control | 4 ++-- contrib/haskell/hkl.cabal | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) commit 9f2084375ee391a5f307f6b2a5e3815331291565 Author: Picca Frédéric-Emmanuel Date: Fri Sep 29 14:10:36 2023 +0200 [hkl] fix the test suite due to binoculars new projection signature. binoculars/hkl-binoculars.h | 2 ++ tests/hkl-binoculars-t.c | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) commit fcba240fc2c42dc062e7e0ff84a46c1e0286b829 Author: Picca Frédéric-Emmanuel Date: Thu Sep 28 14:46:19 2023 +0200 [binoculars] correct the polarization correction. do not modify the weight, it should be a constant for all pixels. binoculars/hkl-binoculars.c | 79 +++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 38 deletions(-) commit 0e4a2734d8fee3d453ffde89d491eaa96bc69034 Author: Picca Frédéric-Emmanuel Date: Thu Sep 28 14:10:34 2023 +0200 [contrib/haskell] added a config with polarization contrib/haskell/data/test/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 5e23e4ee5cbbfd0387b5ca54e3fcce5ef1513bb9 Author: Picca Frédéric-Emmanuel Date: Tue Sep 26 11:57:06 2023 +0200 [binoculars] Added the polarisation correction. for now a very simple version only for horizontal polarisation binoculars/hkl-binoculars.c | 28 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 11 ++++++--- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 8 +++++++ .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 15 ++++++------ .../src/Hkl/Binoculars/Projections/QCustom.hs | 14 ++++++----- .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 15 ++++++------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 ++ 7 files changed, 70 insertions(+), 23 deletions(-) commit 45cb98136d3075f3dc09536ee132e3e744568d06 Author: Picca Frédéric-Emmanuel Date: Mon Sep 25 15:21:11 2023 +0200 [binoculars] todo add the polarization correction. binoculars/hkl-binoculars.h | 4 ++++ 1 file changed, 4 insertions(+) commit 4e0be9a979ddb677b915d99936b1855d8d3fd28b Author: Picca Frédéric-Emmanuel Date: Fri Sep 15 10:27:40 2023 +0200 [contrib/haskell] Added an ini file for testing the config-ini parsing .../data/test/config_sixs_ruche_parsing.ini | 112 +++++++++++++++++++++ contrib/haskell/hkl.cabal | 5 +- contrib/haskell/test/BinocularsSpec.hs | 32 ++---- 3 files changed, 124 insertions(+), 25 deletions(-) commit cbe174ca70b1bf3596f894a50546f2bb43876e3e Author: Picca Frédéric-Emmanuel Date: Fri Sep 15 10:16:14 2023 +0200 Revert "[contrib/haskell] simplify getPreConfig and use only ini instead of config-ini" This reverts commit c9d5a4ec14e8b48d1a52b646c966250955e1ba3f. contrib/haskell/src/Hkl/Binoculars/Config.hs | 38 ++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) commit 390d2b0e96c7841061b95d1a580b919c8a4f5d27 Author: Picca Frédéric-Emmanuel Date: Thu Sep 14 17:22:57 2023 +0200 [contrib/haskell] Added a test for the ini parser (failed for now)... contrib/haskell/hkl.cabal | 2 ++ contrib/haskell/test/BinocularsSpec.hs | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) commit 8284f0ef84fe0a00c9a4fd502b32bed2a6e73c9c Author: leake Date: Tue Feb 14 16:24:36 2023 +0100 diffractometer: added id01 geometry hkl/Makefile.am | 1 + hkl/hkl-engine-esrf-id01-psic.c | 177 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) commit 03c70eb0b263752a2958da684776a73689a44fab Author: Picca Frédéric-Emmanuel Date: Tue Jul 11 13:52:40 2023 +0200 [contrib/haskell] limit test to 4 threads contrib/haskell/hkl.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ad7a3bca22dcf1fd87021a4b61a9bfe8557c5b01 Author: Picca Frédéric-Emmanuel Date: Mon Jul 10 14:15:28 2023 +0200 [contrib/haskell] FTBFS on computer with lot's of cores. File exhaustion when test runs on 100> cores computer. contrib/haskell/data/test/Makefile | 1 + contrib/haskell/debian/rules | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit a7e0f8f2d90f5f99246d821860b14fde022e2da1 Author: Picca Frédéric-Emmanuel Date: Mon Jul 10 13:34:50 2023 +0200 [contrib/haskell] depends on libhdf5-dev to avoid a link error contrib/haskell/debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4a8cb5f7d357ed7eebdd637e5373ec48c3edb4b3 Author: Picca Frédéric-Emmanuel Date: Fri Jul 7 15:33:33 2023 +0200 [contrib/haskell] version the hkl library dependency contrib/haskell/debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f11c66878ebb1063c3ac1747a5ee0b2d1a704bf2 Author: Picca Frédéric-Emmanuel Date: Mon Jun 26 15:30:22 2023 +0200 [contrib/haskell] deal with uniq value when opening a dataset contrib/haskell/src/Hkl/DataSource.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit 94bcfc6fccdb7088a5aab426c5ab9b7c850634b0 Author: Picca Frédéric-Emmanuel Date: Mon Jun 26 14:30:50 2023 +0200 [contrib/haskell] added the attenuation_shift contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 16 ++++++++++++++++ .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) commit ffc4fa08d9f9539a8c3e809bfd85738e4d54e01f Author: Picca Frédéric-Emmanuel Date: Thu Jun 22 15:56:49 2023 +0200 [build] we need sample1.txt for tests tests/bindings/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 77edf74b5c6b0949cdb725f646b7eb05b63e3de1 Author: Picca Frédéric-Emmanuel Date: Thu Jun 22 15:41:35 2023 +0200 [contrib/haskell] cabal-debian contrib/haskell/debian/control | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4d705ccbffb0ba8c167b52069f04657abe071b9b Author: Picca Frédéric-Emmanuel Date: Thu Jun 22 11:39:17 2023 +0200 [contrib/cristal] todo contrib/cristal/little-data.c | 2 +- contrib/cristal/todo | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) commit f4270b190e11b0b775f4bd9d6091d46a55a46f07 Author: Picca Frédéric-Emmanuel Date: Wed Jun 21 11:54:56 2023 +0200 [tests] on more -fanalyzer set the number of values in the variadic list tests/hkl-bench-t.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 5d78965d54a2fa115d29636c7c8216237157d848 Author: Picca Frédéric-Emmanuel Date: Wed Jun 21 11:06:33 2023 +0200 [contrib/cristal] -fanalyzer contrib/cristal/xrays/xrays-image-spe.c | 13 +++++-------- contrib/cristal/xrays/xrays-image.c | 4 ++++ 2 files changed, 9 insertions(+), 8 deletions(-) commit a6b4824dfcd936f7bce3dd83da6084bd098213a1 Author: Picca Frédéric-Emmanuel Date: Wed Jun 21 10:59:30 2023 +0200 [contrib/cristal] make it compile out of the box previously we got /bin/bash ../../libtool --tag=CC --mode=link gcc -I../.. -I../../hkl -I../../third-party -DPKGDATA=\""/usr/local/share/hkl"\" -fPIC -DPIC -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/hdf5/serial -Wall -g -O2 -lcglm -lglib-2.0 -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lhdf5 -o little-data little-data.o xrays/libhkl-xrays.la libtool: link: gcc -I../.. -I../../hkl -I../../third-party -DPKGDATA=\"/usr/local/share/hkl\" -fPIC -DPIC -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/hdf5/serial -Wall -g -O2 -o little-data little-data.o -L/usr/lib/x86_64-linux-gnu/hdf5/serial xrays/.libs/libhkl-xrays.a -lcglm -lglib-2.0 -lhdf5 /usr/bin/ld: xrays/.libs/libhkl-xrays.a(xrays-image.o): undefined reference to symbol 'sqrt@@GLIBC_2.2.5' /usr/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line contrib/cristal/Makefile.am | 2 +- contrib/cristal/xrays/Makefile.am | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 41c5b78e52ba5fae08b2b1bdd071230c57a3d80e Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 17:42:41 2023 +0200 [contrib/cristal] int is int... contrib/cristal/little-data.c | 2 +- contrib/cristal/xrays/xrays-droplet.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) commit aaa28b10e9b4c58eec658912bec5f53af3c8830c Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 17:29:13 2023 +0200 [contrib/cristal] use the right type for the histogram contrib/cristal/xrays/xrays-droplet.c | 6 +++--- contrib/cristal/xrays/xrays-image.c | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) commit ba21907bf76471ffd34a20a41a173ad5bba3d507 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 17:12:28 2023 +0200 [contrib/cristal] save the droplet into an hdf5 contrib/cristal/little-data.c | 8 ++-- contrib/cristal/xrays/xrays-droplet.c | 69 ++++++++++++++++++++++++++++++++- contrib/cristal/xrays/xrays-droplet.h | 2 + contrib/cristal/xrays/xrays-image-dat.c | 51 ++++++++++++++++++++++++ contrib/cristal/xrays/xrays-image.c | 1 + 5 files changed, 126 insertions(+), 5 deletions(-) commit 84e527d374500bfe62626aba14fcc97e09f30296 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 15:29:46 2023 +0200 [contrib/cristal] style contrib/cristal/little-data.c | 3 +- contrib/cristal/xrays/xrays-droplet.c | 622 +++++++++++++++++----------------- 2 files changed, 315 insertions(+), 310 deletions(-) commit 13fe33799a18c4b9883c3d2f0e4aa919d3e94742 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 14:42:11 2023 +0200 [contrib/cristal] extract the dark from the .dat file contrib/cristal/little-data.c | 17 ++++++++++++++++- contrib/cristal/xrays/Makefile.am | 1 + contrib/cristal/xrays/xrays-droplet.c | 2 +- contrib/cristal/xrays/xrays-image.c | 18 ++++++++++++------ contrib/cristal/xrays/xrays-image.h | 4 +++- 5 files changed, 33 insertions(+), 9 deletions(-) commit 22e6b67fab2b4455cd1510c9a24b142bdbe3029c Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 13:49:51 2023 +0200 [contrib/cristal] run droplet for each image. contrib/cristal/Makefile.am | 4 +++- contrib/cristal/little-data.c | 20 ++++++++++++++++++-- contrib/cristal/xrays/Makefile.am | 4 ++-- 3 files changed, 23 insertions(+), 5 deletions(-) commit 6a6e7131602b814f938424ee190ed0fc8f961379 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 11:50:33 2023 +0200 [contrib/cristal] remove useless variable contrib/cristal/xrays/xrays-image-spe.c | 5 ----- 1 file changed, 5 deletions(-) commit 5e8d517639c26e0ca31d795388cd01bf8f726964 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 11:50:13 2023 +0200 [contrib/cristal] use #pragma once contrib/cristal/xrays/xrays-droplet.h | 5 +- contrib/cristal/xrays/xrays-image-spe.h | 381 +++++++++++++++++--------------- contrib/cristal/xrays/xrays-image.h | 5 +- contrib/cristal/xrays/xrays-macros.h | 5 +- 4 files changed, 203 insertions(+), 193 deletions(-) commit 384551c882d43a7a53137a1ef66c17ee18069c17 Author: Picca Frédéric-Emmanuel Date: Tue Jun 20 10:40:55 2023 +0200 [contrib/cristal] compile the xrays lib configure.ac | 1 + contrib/cristal/Makefile.am | 1 + contrib/cristal/xrays/Makefile.am | 36 +++++++++++++++++++++++++++++++++ contrib/cristal/xrays/usage.c | 21 +++++++++++++++++++ contrib/cristal/xrays/xrays-droplet.c | 35 ++++++++++++++++++++++++-------- contrib/cristal/xrays/xrays-droplet.h | 23 ++++++++++++++++++++- contrib/cristal/xrays/xrays-image-spe.c | 24 +++++++++++++++++++++- contrib/cristal/xrays/xrays-image.c | 28 ++++++++++++++++++++++--- contrib/cristal/xrays/xrays-image.h | 22 ++++++++++++++++++++ contrib/cristal/xrays/xrays-macros.h | 22 ++++++++++++++++++++ 10 files changed, 200 insertions(+), 13 deletions(-) commit 71dc5f59a5fd86134dda38a5d1ddda5ba91e6850 Author: Picca Frédéric-Emmanuel Date: Mon Jun 19 16:59:56 2023 +0200 [contrib/cristal] added the old xray library the idea is to use as-is this library in the little-data program. contrib/cristal/xrays/usage.c | 41 +++ contrib/cristal/xrays/xrays-droplet.c | 379 ++++++++++++++++++++++ contrib/cristal/xrays/xrays-droplet.h | 62 ++++ contrib/cristal/xrays/xrays-image-spe.c | 47 +++ contrib/cristal/xrays/xrays-image-spe.h | 205 ++++++++++++ contrib/cristal/xrays/xrays-image.c | 551 ++++++++++++++++++++++++++++++++ contrib/cristal/xrays/xrays-image.h | 73 +++++ contrib/cristal/xrays/xrays-macros.h | 37 +++ 8 files changed, 1395 insertions(+) commit 43a717b99c47a76ee85df2b7ff50de0532493d02 Author: Picca Frédéric-Emmanuel Date: Mon Jun 19 16:45:17 2023 +0200 [contrib/cristal] added binary to compute little data. configure.ac | 1 + contrib/Makefile.am | 2 +- contrib/cristal/Makefile.am | 26 +++++++++ contrib/cristal/little-data.c | 120 ++++++++++++++++++++++++++++++++++++++++++ contrib/cristal/todo | 17 ++++++ 5 files changed, 165 insertions(+), 1 deletion(-) commit 978cdef75805334f370aa37a5892f68459ac8cde Author: Picca Frédéric-Emmanuel Date: Mon Jun 19 15:34:10 2023 +0200 [contrib/haskell] added a cristal test contrib/haskell/data/test/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 1e84eaaac9605d1c2ec9739f51341314e88d572a Author: Picca Frédéric-Emmanuel Date: Wed Jun 7 10:36:18 2023 +0200 [contrib/haskell] added the timestamp test contrib/haskell/data/test/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6c6a8b682625a29634e6ae27e2be64f2bc49af2b Author: Picca Frédéric-Emmanuel Date: Thu Jun 15 14:48:45 2023 +0200 [contrib/haskell] todo... contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +++ 1 file changed, 3 insertions(+) commit 23a1ad49964bc4cfb6aaa49c35401d1ae4fa35dc Author: Picca Frédéric-Emmanuel Date: Thu Jun 15 14:48:35 2023 +0200 [tests] fix for the new projection function tests/hkl-binoculars-t.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 7342bb37f60418d10e69817d2feaabb02365b36b Author: Picca Frédéric-Emmanuel Date: Thu Jun 15 14:14:32 2023 +0200 [contrib/haskell] fix access to eix and eiz data's for SBS scans contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +++++ contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) commit fe4db319b26c5164e2915ba805eff6969a6e2a0c Author: Picca Frédéric-Emmanuel Date: Wed Jun 14 08:45:12 2023 +0200 [contrib] remove a bunch of gcc warnings contrib/petra3/hkl_calculations.c | 607 +++++++++++++++++++------------------- contrib/sixs/hkl3d.c | 84 +++--- 2 files changed, 346 insertions(+), 345 deletions(-) commit a30319fe17ecded1af6fb723c80965c2521cda7f Author: Picca Frédéric-Emmanuel Date: Fri Jun 9 11:25:22 2023 +0200 Added a target to build binoculars-ng from autotools configure.ac | 1 + contrib/Makefile.am | 2 +- contrib/haskell/Makefile.am | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) commit 5578800ea8fcd04a3f4cee6c6762aad8897d7a23 Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 17:00:33 2023 +0200 [contrib/haskell] remove useless lens depends contrib/haskell/hkl.cabal | 1 - 1 file changed, 1 deletion(-) commit c9d5a4ec14e8b48d1a52b646c966250955e1ba3f Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 16:55:32 2023 +0200 [contrib/haskell] simplify getPreConfig and use only ini instead of config-ini contrib/haskell/src/Hkl/Binoculars/Config.hs | 38 ++++++++++------------------ 1 file changed, 13 insertions(+), 25 deletions(-) commit a427712c4f7ee62b4b86a539dcc883698d3cea3e Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 16:42:01 2023 +0200 [contrib/haskell] prepare for ini migration... contrib/haskell/src/Hkl/Binoculars/Config.hs | 45 +++++++++++++--------------- 1 file changed, 21 insertions(+), 24 deletions(-) commit aa341eda8d01c5abb5fe13ac3b8a93d63399e294 Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 13:49:46 2023 +0200 [contrib/haskell] remove useless code contrib/haskell/hkl.cabal | 1 - contrib/haskell/src/Hkl/Binoculars/Bidir.hs | 175 ---------------------------- 2 files changed, 176 deletions(-) commit 5a998c5aecf99fe9718e8e9b23965346484633a1 Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 11:14:37 2023 +0200 todo contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 - 1 file changed, 1 deletion(-) commit 5d6b04e39c038988a66718f41ad2d46d8b274f41 Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 11:06:01 2023 +0200 [binoculars] fix the deltalab_gammalab_sampleaxis geometry binoculars/hkl-binoculars.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 678df1cf3c13c692d83ddff7bee415269fd74d8f Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 10:49:45 2023 +0200 [contrib/haskell] deal with the missing SampleAxis parameter .../src/Hkl/Binoculars/Projections/QCustom.hs | 64 ++++++++++++++-------- 1 file changed, 42 insertions(+), 22 deletions(-) commit 1758e4a4581f87c460fc2c15c3b7bc417f9cda2f Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 10:24:51 2023 +0200 [contrib/haskell] ANGLES_ZAXIS_OMEGA -> DELTALAB_GAMMALAB_SAMPLEAXIS - binoculars/hkl-binoculars.c | 79 ++++++++-------------- binoculars/hkl-binoculars.h | 3 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 12 ++-- 5 files changed, 36 insertions(+), 66 deletions(-) commit b2c7880068094f103df3fc82dfdaa3d753a61cae Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 09:39:52 2023 +0200 [contrib/haskell] todo contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit a7b573a59bc14f2f88caea54455663a6105c6f97 Author: Picca Frédéric-Emmanuel Date: Tue Jun 13 09:34:15 2023 +0200 typo binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fed49e025c7690bb9ec44fb2af001513fad8d116 Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 15:12:07 2023 +0200 [binoculars] reorganise the axes in order to contourn a binoculars-gui bug all axes must be in alphabetic order... binoculars/hkl-binoculars.c | 34 +++++++++++----------- binoculars/hkl-binoculars.h | 4 +-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 +-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 16 +++++----- 5 files changed, 31 insertions(+), 31 deletions(-) commit f8dbd50982e9aab49f0a6e184092467fdda91200 Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 14:47:36 2023 +0200 [binoculars] fix all the projection of rank 2 binoculars/hkl-binoculars.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 22423f3e22e1475c7ac4f94a35e189802db97480 Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 14:34:41 2023 +0200 [contrib/haskell] added the SAMPLEAXIS_Q_TTH projection binoculars/hkl-binoculars.c | 35 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 +++ 5 files changed, 42 insertions(+), 1 deletion(-) commit e5e8f4bc20a72366daa8b6ea4612fa17b959f6cc Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 14:16:03 2023 +0200 [contrib/haskell] Added SAMPLEAXIS_QPAR_QPER projection use the 'sampleaxis' key in the 'projection' section of the config file. to select an axis. binoculars/hkl-binoculars.c | 35 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 5 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 +++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 5 ++++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 25 ++++++++++++---- contrib/haskell/src/Hkl/C/Binoculars.hsc | 5 ++++ 6 files changed, 71 insertions(+), 8 deletions(-) commit 4c10ae0135d00fcb5ee56df98f59d3911bd6ac4d Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 11:02:28 2023 +0200 [binoculars] add the qpars qper timestamp projection this projection provide a qpars (qpar signed) for gisaxs experiments binoculars/hkl-binoculars.c | 39 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 4 +-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 5 ++- 5 files changed, 47 insertions(+), 3 deletions(-) commit 7b764b698d3053ce76f9f47e0e52430d28830938 Author: Picca Frédéric-Emmanuel Date: Mon Jun 12 10:28:08 2023 +0200 [contrib/haskell] hlint .../src/Hkl/Binoculars/Projections/QCustom.hs | 37 +++++++++++----------- 1 file changed, 19 insertions(+), 18 deletions(-) commit a4eea326a3c8f9383e892ebc841dfbd1c5bc3337 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 17:13:36 2023 +0200 todo contrib/haskell/src/Hkl/Binoculars/Config.hs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit eecc53bda9f2a2a4f967c8111b942be6c889efb7 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 16:46:12 2023 +0200 typo contrib/haskell/src/Hkl/Geometry.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c98f352870124ea66018d92c1905df40932d1ed2 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 16:46:05 2023 +0200 [contrib/haskell] added all axes in the geometry.values .../src/Hkl/Binoculars/Projections/QCustom.hs | 67 ++++++++++++++-------- 1 file changed, 43 insertions(+), 24 deletions(-) commit 2571433d20a0df631ef75e950c0863f087e6eb7c Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 15:01:06 2023 +0200 [contrib/haskell] use this new DataSource for test in medh beta .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 6 +++--- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 11 ++++++----- .../src/Hkl/Binoculars/Projections/QCustom.hs | 20 +++++++++++--------- .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 11 ++++++----- 4 files changed, 26 insertions(+), 22 deletions(-) commit ebe147dd2d84417803a15dc4dfa9bd2c6ffdac87 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 14:44:22 2023 +0200 [contrib/haskell] Added DataSourcePath'Double'Ini ConfigContent Section Key this allow to extract a value from a config file. We will use this in order to provide the diffractometer axes in the ini file. contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +--- contrib/haskell/src/Hkl/DataSource.hs | 7 +++++ contrib/haskell/src/Hkl/Exception.hs | 5 +++- contrib/haskell/src/Hkl/Types.hs | 39 ++++++++++++++++++++++------ 4 files changed, 43 insertions(+), 13 deletions(-) commit 6b7059164f4724fa957508da4a7de486aaa989ba Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 13:57:12 2023 +0200 [contrib/haskell] more data to test contrib/haskell/data/test/Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit fd0e166cf3f7acb87b330a751c3b7151ae2d1946 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 11:45:19 2023 +0200 [contrib/haskell] fix a segfault when cube is empty do not return NULL, instread allocate an empty cube binoculars/hkl-binoculars.c | 4 ++++ 1 file changed, 4 insertions(+) commit 88266d39c54ce5e4a07d59bc93e40c5ce30d48f9 Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 11:03:25 2023 +0200 [contrib/haskell] TODO binoculars/hkl-binoculars.h | 17 ++--------------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 ++++ 2 files changed, 6 insertions(+), 15 deletions(-) commit 8c22de97ec6be57397d033c8c269054a0a328bdd Author: Picca Frédéric-Emmanuel Date: Thu Jun 8 11:02:32 2023 +0200 [contrib/haskell] find the beta when it is not in the scan data's contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit c0a83cf97b476171cd9e2ffe82880ac81f280a6e Author: Picca Frédéric-Emmanuel Date: Mon Jun 5 14:21:15 2023 +0200 [contrib/haskell] skip points in the test contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/data/test/config_ech6eiger.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) commit 2a7912028a0af21923392c869a14e235f5660696 Author: Picca Frédéric-Emmanuel Date: Sun Jun 4 16:28:35 2023 +0200 [contrib/haskell] skip the first and last points contrib/haskell/src/Hkl/Binoculars/Common.hs | 7 +++++++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 -- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 4 +++- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 ++++-- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 17 +++++++++++------ contrib/haskell/src/Hkl/Binoculars/Projections/Test.hs | 6 ++++-- 7 files changed, 30 insertions(+), 14 deletions(-) commit 403f0471119abd80c2f162b53a4249c1c25730b0 Author: Picca Frédéric-Emmanuel Date: Sun Jun 4 14:46:06 2023 +0200 [contrib/haskell] unify the FramesXXXP class contrib/haskell/data/test/Makefile | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 12 ++++++------ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 10 ++++++++-- .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 4 ++-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 20 +++++++------------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 20 ++++++++------------ .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 20 +++++++------------- 7 files changed, 40 insertions(+), 50 deletions(-) commit d63c14423879862b7876df45551a9bee5aa6645f Author: Picca Frédéric-Emmanuel Date: Sun Jun 4 11:12:57 2023 +0200 [contrib/haskell] Added unit test for the inputtype deprecated contrib/haskell/data/test/config_ech6eiger.txt | 41 ++++++++++++++++++++++ .../haskell/src/Hkl/Binoculars/Config/Common.hs | 18 ++++------ contrib/haskell/test/BinocularsSpec.hs | 9 +++++ 3 files changed, 57 insertions(+), 11 deletions(-) commit de5aa5714d086e58789b8acb24a71597376406f7 Author: Picca Frédéric-Emmanuel Date: Fri Jun 2 11:20:56 2023 +0200 [hkl] Added the hkl_geometry_[ki/kf]_abc_get for petraIII hkl.h | 8 ++++++ hkl/hkl-binding-private.h | 7 +++++ hkl/hkl-binding.c | 38 ++++++++++++++++++++++++++ hkl/hkl-geometry.c | 62 ++++++++++++++++++++++++++++++++++++++++-- tests/bindings/polarisation.py | 33 ++++++++++++++++++++++ 5 files changed, 146 insertions(+), 2 deletions(-) commit 350d13c286683d02a1517e7e4c465f65709d98b4 Author: Picca Frédéric-Emmanuel Date: Wed May 31 12:37:26 2023 +0200 [contrib/haskell] indent contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e20b1ad7e266ecf3cd3e2fdf5ce97e976cc5df90 Author: Picca Frédéric-Emmanuel Date: Wed May 31 12:37:05 2023 +0200 [contrib/haskell] use Applicative in the Test projection .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 35 ++++++++-------------- 1 file changed, 12 insertions(+), 23 deletions(-) commit 1eed8c213b22066391393e010ee4657064ebe4a1 Author: Picca Frédéric-Emmanuel Date: Wed May 31 12:22:55 2023 +0200 [contrib/haskell] use Applicative in the Angles projection .../src/Hkl/Binoculars/Projections/Angles.hs | 55 +++++++++------------- 1 file changed, 22 insertions(+), 33 deletions(-) commit 3e26760064a5562b04dabe20041ad4ab34348fe3 Author: Picca Frédéric-Emmanuel Date: Wed May 31 11:02:43 2023 +0200 [contrib/haskell] use applicative of the hkl configuration .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 35 ++++++++-------------- 1 file changed, 13 insertions(+), 22 deletions(-) commit 489359532df9d70cb1652905d75ea36706cf6100 Author: Picca Frédéric-Emmanuel Date: Tue May 30 17:37:10 2023 +0200 [contrib/haskell] use applicative also for the QCustom configuration .../haskell/src/Hkl/Binoculars/Config/Common.hs | 2 ++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 31 +++++++++++----------- 2 files changed, 17 insertions(+), 16 deletions(-) commit 0ace5c83fcbdc262dc62c00befc874f2727f071e Author: Picca Frédéric-Emmanuel Date: Tue May 30 16:57:52 2023 +0200 [contrib/haskell] hlint .../haskell/src/Hkl/Binoculars/Config/Common.hs | 42 ++++++++++++---------- 1 file changed, 23 insertions(+), 19 deletions(-) commit 090c51ef5eee0262f1741687d2bac7e63b51790a Author: Picca Frédéric-Emmanuel Date: Tue May 30 16:43:33 2023 +0200 [contrib/haskell] use applicative to parse binoculars config .../haskell/src/Hkl/Binoculars/Config/Common.hs | 134 ++++++++++----------- 1 file changed, 65 insertions(+), 69 deletions(-) commit 394330b1c393760de04a2d60c9e3c29c9b0395d7 Author: Picca Frédéric-Emmanuel Date: Tue May 30 16:17:09 2023 +0200 [contrib/haskell] Added skip_first_points and skip_last_points parameters contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) commit c1b895e51fc50d4b0f55864ab6fb81625ef445a4 Author: Picca Frédéric-Emmanuel Date: Tue May 30 15:18:24 2023 +0200 [binoculars] switch the hkl engine to use cglm binoculars/hkl-binoculars.c | 52 +++++++++++-------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 - .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- tests/hkl-binoculars-t.c | 60 ++++++++++++++++++---- 4 files changed, 83 insertions(+), 32 deletions(-) commit 252d059b4fa2b75dfcfb429057fe287e75736fa9 Author: Picca Frédéric-Emmanuel Date: Tue May 30 15:10:51 2023 +0200 [contrib/haskell] updated todo's contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 08cc46497f554a675e2212a2ec7189c41610a447 Author: Picca Frédéric-Emmanuel Date: Tue May 30 15:10:36 2023 +0200 [contrib/haskell] typo contrib/haskell/src/Hkl/Binoculars/Projections/Test.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 08999fdd275460260a4867c8d608eae7bfa66325 Author: Picca Frédéric-Emmanuel Date: Tue May 30 11:08:41 2023 +0200 [contrib/haskell] fix for real the input deprecated parsing contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit e2cc145a3fce8c1eb76fe32d8579ebc3550cc71c Author: Picca Frédéric-Emmanuel Date: Fri May 26 15:11:03 2023 +0200 [binoculars] fixed the test aka hkl projection the ub matrix was transposed... binoculars/hkl-binoculars.c | 8 +++++--- tests/hkl-binoculars-t.c | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 34 insertions(+), 17 deletions(-) commit 942c885d2115720cf4dcacd204cd83d0af6d8ca2 Author: Picca Frédéric-Emmanuel Date: Thu May 25 16:20:22 2023 +0200 [tests] fix tests tests/hkl-binoculars-t.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit b73dee2384c3ac635480ab3bf9cff947f8baec21 Author: Picca Frédéric-Emmanuel Date: Thu May 25 16:09:39 2023 +0200 [contrib/haskell] TODO contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 ++ 1 file changed, 2 insertions(+) commit fe5649e84a02773c336e6c173bd6c6f1c1387c13 Author: Picca Frédéric-Emmanuel Date: Thu May 25 15:01:41 2023 +0200 [contrib/haskell] added uqx uqy uqz binoculars/hkl-binoculars.c | 4 + binoculars/hkl-binoculars.h | 6 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 142 +++++++++++++++------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 3 + 5 files changed, 112 insertions(+), 45 deletions(-) commit 24bca31a4d65f367e7e10a1e81e8dbd49b012fd6 Author: Picca Frédéric-Emmanuel Date: Thu May 25 11:15:27 2023 +0200 [contrib/haskell] remove extra () contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 971695ab812b209689ea38be99a37e1b50fe5c13 Author: Picca Frédéric-Emmanuel Date: Thu May 25 11:11:38 2023 +0200 [contrib/haskell] factorize all the sixs inputtype contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 104 +++++++-------------- 2 files changed, 36 insertions(+), 69 deletions(-) commit 5f9feb8a4276e72ca7f390bc98b6417723ad5dc9 Author: Picca Frédéric-Emmanuel Date: Thu May 25 10:59:00 2023 +0200 [contrib/haskell] SixsFlyMedHGisaxs SixsFlyMedVGisaxs SixsSbsUhvGisaxs Added these three missing inputtype contrib/haskell/src/Hkl/Binoculars/Config.hs | 10 ++- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 3 + .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 3 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 78 +++++++++++++++------- 4 files changed, 67 insertions(+), 27 deletions(-) commit 79b19660407615f84839f0c5f1cae23c1ed745e6 Author: Picca Frédéric-Emmanuel Date: Thu May 25 10:30:23 2023 +0200 [contrib/haskell] fix when reading a non existing minputtypedeprecated contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 6887c53fb181417e2393d4879b97f5181fdbbf84 Author: Picca Frédéric-Emmanuel Date: Thu May 25 10:11:38 2023 +0200 [contrib/haskell] idem for sixs uhv .../src/Hkl/Binoculars/Projections/QCustom.hs | 87 ++++++++++------------ contrib/haskell/src/Hkl/Geometry.hs | 7 -- 2 files changed, 40 insertions(+), 54 deletions(-) commit 007c65dc158bdcbedc90554afca609835b4140a3 Author: Picca Frédéric-Emmanuel Date: Thu May 25 10:00:53 2023 +0200 [contrib/haskell] only one space to define medv and medh axes .../src/Hkl/Binoculars/Projections/QCustom.hs | 132 +++++++++++---------- 1 file changed, 69 insertions(+), 63 deletions(-) commit d9a56794b4518723954a91d4011c5aa5fe536573 Author: Picca Frédéric-Emmanuel Date: Wed May 24 14:55:53 2023 +0200 [contrib/haskell] renamed SixsGisaxs for consistency contrib/haskell/src/Hkl/Binoculars/Config.hs | 42 ++++++------- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 4 +- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 24 ++++---- .../src/Hkl/Binoculars/Projections/QCustom.hs | 68 +++++++++++----------- 4 files changed, 70 insertions(+), 68 deletions(-) commit 3ebf416920ff92cb52841ef9ebe049071b3be8fa Author: Picca Frédéric-Emmanuel Date: Wed May 24 14:46:18 2023 +0200 [contrib/haskell] deals with deprecated inputtype contrib/haskell/src/Hkl/Binoculars/Config.hs | 63 +++++++++++----- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 49 +++++++----- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 31 ++++---- .../src/Hkl/Binoculars/Projections/QCustom.hs | 88 ++++++---------------- contrib/haskell/src/Hkl/DataSource.hs | 10 +-- 5 files changed, 116 insertions(+), 125 deletions(-) commit 422ffc2efa278ac153baf25a31437763dd41d2d4 Author: Picca Frédéric-Emmanuel Date: Wed May 24 10:44:36 2023 +0200 [contrib/haskell] removed SixsSbsFixedDetector contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 -- contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 1 - contrib/haskell/src/Hkl/Binoculars/Config/Sample.hs | 1 - contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 6 ------ 4 files changed, 10 deletions(-) commit 38eb401e0b3a28dc9b1f5060154d683421cae680 Author: Picca Frédéric-Emmanuel Date: Wed May 24 10:39:16 2023 +0200 [contrib/haskell] removed SixsFlyScanUhvTest contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +-- contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 1 - contrib/haskell/src/Hkl/Binoculars/Config/Sample.hs | 1 - contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 8 -------- 4 files changed, 1 insertion(+), 12 deletions(-) commit 78c687cbf67177213abb4b0c7d5e2a71bb6c1c9f Author: Picca Frédéric-Emmanuel Date: Wed May 24 10:34:26 2023 +0200 [contrib/haskell] merged SixFlyScanUhv and SixsFlyScanUhv2 into SixsFlyUhv contrib/haskell/src/Hkl/Binoculars/Config.hs | 59 ++++++++++++---------- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 5 +- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 16 +++++- .../src/Hkl/Binoculars/Projections/QCustom.hs | 7 +-- contrib/haskell/src/Hkl/Exception.hs | 1 + 5 files changed, 51 insertions(+), 37 deletions(-) commit d5dba743c76cbff5bcfb445854ca6db849673c50 Author: Picca Frédéric-Emmanuel Date: Tue May 23 16:58:25 2023 +0200 [binoculars] test_projection will be perenized later. It seems that the intensity is not identical between the hkl and new hkl projections. binoculars/hkl-binoculars-cnpy.c | 4 +-- binoculars/hkl-binoculars.c | 14 ++++++++-- tests/hkl-binoculars-t.c | 55 +++++++++++++++++++++++----------------- 3 files changed, 46 insertions(+), 27 deletions(-) commit 6f7268a7c835e346a37f594012b0ed141a1d15dd Author: Picca Frédéric-Emmanuel Date: Mon May 22 16:57:48 2023 +0200 [binoculars] test and fix the new hkl projection binoculars/hkl-binoculars.c | 72 ++++++++++++++++++-------- tests/hkl-binoculars-t.c | 120 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 169 insertions(+), 23 deletions(-) commit 59292d9fa4fa8bb209634f62e8343698a168fe0a Author: Picca Frédéric-Emmanuel Date: Mon May 22 11:37:59 2023 +0200 [binoculars] implement the new hkl projection binoculars/hkl-binoculars.c | 65 ++++++++++++++-------- .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 2 +- 2 files changed, 43 insertions(+), 24 deletions(-) commit 0841001669e22d43a73af79ccf5e010d727b39aa Author: Picca Frédéric-Emmanuel Date: Thu May 18 09:32:42 2023 +0200 [contrib/haskell] the new engine required NoNormalisation of the pixels coordinates contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc403d7998127f4195b47d73da33380711051984 Author: Picca Frédéric-Emmanuel Date: Tue May 16 17:42:30 2023 +0200 [contrib/haskell] todo contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) commit ef6fbe6199651aea05d3b1fe4c67117e08ec4424 Author: Picca Frédéric-Emmanuel Date: Tue May 16 17:32:21 2023 +0200 [binoculars] move QCustom2 -> Test - remove the qcustom2 C code and replace it with some test code. - implement the hkl projection in the test code in order to prepare the cglm migration. binoculars/hkl-binoculars.c | 398 +++------------------ binoculars/hkl-binoculars.h | 49 ++- contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Binoculars/Command.hs | 20 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 288 --------------- .../haskell/src/Hkl/Binoculars/Projections/Test.hs | 354 ++++++++++++++++++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 21 +- tests/hkl-binoculars-t.c | 120 +------ 11 files changed, 453 insertions(+), 808 deletions(-) commit fb3505b32bf4f2e3360c60d8d03ab3a51eb84408 Author: Picca Frédéric-Emmanuel Date: Tue May 16 17:00:11 2023 +0200 [contrib/haskell] use Qcustom for Realspace and pixels contrib/haskell/src/Hkl/Binoculars/Command.hs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 9b95d37f6209e0376bbd7aecce3123b6f148986b Author: Picca Frédéric-Emmanuel Date: Tue May 16 16:51:17 2023 +0200 [binoculars] switch qcustom to use the cglm library binoculars/hkl-binoculars.c | 240 +++++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 115 deletions(-) commit 4700d6f70e989bef5f922ca6d0567d5cc92b6a0a Author: Picca Frédéric-Emmanuel Date: Tue May 16 16:39:58 2023 +0200 [contrib/haskell] forgot a bunch of hardcoded default values contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 --------------- 1 file changed, 15 deletions(-) commit 89331dddea6b1d554cc41cd6ec1c70b8874ecbd8 Author: Picca Frédéric-Emmanuel Date: Tue May 16 16:24:31 2023 +0200 [contrib/haskell] more tests for sixs contrib/haskell/data/test/Makefile | 5 ++- .../test/config_sixs_ruche_qcustom2_20220739.ini | 43 ++++++++++++++++++++++ .../data/test/config_sixs_ruche_qcustom2_3.ini | 41 +++++++++++++++++++++ .../test/config_sixs_ruche_qcustom_20220739.ini | 43 ++++++++++++++++++++++ 4 files changed, 131 insertions(+), 1 deletion(-) commit 2ca14ae4b1c09a67f4481da7b2474cd70b657037 Author: Picca Frédéric-Emmanuel Date: Tue May 16 16:23:41 2023 +0200 [binoculars] format binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bf4701cbde1391c88dce19d700f31d95d096a8cd Author: Picca Frédéric-Emmanuel Date: Tue May 16 16:23:02 2023 +0200 [contrib/haskell] use the default value in the documentation .../haskell/src/Hkl/Binoculars/Config/Common.hs | 135 ++++++++------------- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 36 ++---- .../src/Hkl/Binoculars/Projections/Angles.hs | 10 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 8 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 12 +- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 12 +- 6 files changed, 83 insertions(+), 130 deletions(-) commit 31066bb177d7d5c6c898aed3d1cf47c16bdf5d74 Author: Picca Frédéric-Emmanuel Date: Tue May 16 12:34:04 2023 +0200 [contrib/haskell] use the default SixsFlyScanUhv2 InputType contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit f2a3493674b827121a0cec67621a7945add1e321 Author: Picca Frédéric-Emmanuel Date: Tue May 16 11:51:43 2023 +0200 [contrib/haskell] replace projection by subprojection for relevant projections contrib/haskell/src/Hkl/Binoculars/Config.hs | 16 +++++++++------- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) commit ab5bf2d23cd756f6ce4b79edd023ff43e5e1ab85 Author: Picca Frédéric-Emmanuel Date: Tue May 16 11:38:17 2023 +0200 [contrib/haskell] better explaination of the destination template contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit fbcfa2d55a65a1184f6a7b46d0b43a6373055212 Author: Picca Frédéric-Emmanuel Date: Tue May 16 11:33:17 2023 +0200 [contrib/haskell] simplify elemFMb' do not call elemF'', the syntax is more explicite about the fact that the doc is generate independently if the Maybe value contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 612a36c7993987a37cc1f068a205972fa0a01aaf Author: Picca Frédéric-Emmanuel Date: Tue May 16 10:43:50 2023 +0200 [contrib/haskell] new elemF' which use also the undefine trick contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 16 +++++++++++----- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 12 ++++++++---- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +++--- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 8 ++++---- .../haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 8 ++++---- 5 files changed, 30 insertions(+), 20 deletions(-) commit 6d86a5d5d2e797f010d5906a60ca18e0ea16380b Author: Picca Frédéric-Emmanuel Date: Tue May 16 10:14:17 2023 +0200 [contrib/haskell] use undefined to provide a fake value for documentation contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 8 ++++++++ contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 4 ++-- 5 files changed, 14 insertions(+), 6 deletions(-) commit a3c1d00834a376931b3f2f28c05589e47c70a7eb Author: Picca Frédéric-Emmanuel Date: Mon May 15 14:05:26 2023 +0200 [contrib/haskell] remove useless elemF' and elemFMb' .../haskell/src/Hkl/Binoculars/Config/Common.hs | 52 +++++++++------------- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 18 ++++---- .../src/Hkl/Binoculars/Projections/Angles.hs | 10 ++--- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 8 ++-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 12 ++--- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 12 ++--- 6 files changed, 52 insertions(+), 60 deletions(-) commit 2326166fe4baa63e015613800b676c7e85b619ad Author: Picca Frédéric-Emmanuel Date: Mon May 15 13:56:12 2023 +0200 [contrib/haskell] fake documentation of the sample_axis parameter contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit aff1724ec62b02aeaa009d8531119cf622613b40 Author: Picca Frédéric-Emmanuel Date: Mon May 15 13:55:31 2023 +0200 [contrib/haskell] document the sub-projections contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 +++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) commit ce1743955c8caa44fde9e2fd240a3b26ffadc3d0 Author: Picca Frédéric-Emmanuel Date: Mon May 15 13:49:20 2023 +0200 [contrib/haskell] document the limits parameters contrib/haskell/src/Hkl/Binoculars/Config.hs | 64 ++++++++++++++++++++++ .../src/Hkl/Binoculars/Projections/Angles.hs | 4 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 4 +- 5 files changed, 72 insertions(+), 8 deletions(-) commit afe1f9d9baafada3b2311f5e736e256099f2723c Author: Picca Frédéric-Emmanuel Date: Mon May 15 11:25:13 2023 +0200 [contrib/haskell] comment the HklBinocularsSurfaceOrientationEnum contrib/haskell/src/Hkl/Binoculars/Config.hs | 14 ++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) commit 97b475d9a49ef615beea1aff50cace4014066868 Author: Picca Frédéric-Emmanuel Date: Mon May 15 11:11:59 2023 +0200 [contrib/haskell] document the ProjectionType contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 +++++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) commit 1c93e8cf04b730faee14dfddc56f1f38bd8d0bb4 Author: Picca Frédéric-Emmanuel Date: Mon May 15 10:59:04 2023 +0200 [contrib/haskell] comment the dataPath with HasFieldComment class contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 ++++++--------- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 10 +++++++++- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++++++- .../haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- 5 files changed, 26 insertions(+), 13 deletions(-) commit f71c598b6f7e12ff8188ec5d600b7ad3e2fac0be Author: Picca Frédéric-Emmanuel Date: Fri May 12 14:34:20 2023 +0200 [contrib/haskell] document the datapath contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 8 +++++--- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 6 +++++- 4 files changed, 12 insertions(+), 6 deletions(-) commit 73256abfb5af9906c4fd4e0077332d6c897f936c Author: Picca Frédéric-Emmanuel Date: Fri May 12 14:32:25 2023 +0200 [contrib/haskell] TODO for yves contrib/haskell/src/Hkl/Binoculars/Config.hs | 39 +++++++++++++++++----------- 1 file changed, 24 insertions(+), 15 deletions(-) commit b224504142c87bf77cd2d2c807cb7d060210fb3a Author: Picca Frédéric-Emmanuel Date: Fri May 12 14:14:10 2023 +0200 [binoculars] fix the qcustome2 computation with translation binoculars/hkl-binoculars.c | 24 ++++++++++++------------ contrib/haskell/data/test/Makefile | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) commit 625111b081a67e459da9ac9fb2efae2be2b4402f Author: Picca Frédéric-Emmanuel Date: Fri May 12 13:41:25 2023 +0200 [binoculars] fix the eiger1M detector orientation. binoculars/hkl-binoculars-detectors-2d.c | 10 +++++ contrib/haskell/data/test/Makefile | 8 +++- .../data/test/config_sixs_ruche_qcustom2.ini | 44 ++++++++++++++++++++++ .../data/test/config_sixs_ruche_qcustom2_1.ini | 41 ++++++++++++++++++++ .../data/test/config_sixs_ruche_qcustom2_2.ini | 42 +++++++++++++++++++++ contrib/haskell/src/Hkl/Geometry.hs | 2 +- 6 files changed, 144 insertions(+), 3 deletions(-) commit 490cf5ca88fc565d08cde547451fb0f6a69039d9 Author: Picca Frédéric-Emmanuel Date: Fri May 12 09:43:47 2023 +0200 [contrib/haskell] document all the sample parameters .../haskell/src/Hkl/Binoculars/Config/Common.hs | 2 + .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 123 +++++++++++++++++++-- 2 files changed, 116 insertions(+), 9 deletions(-) commit cbb48955ed4db354c58b566b9d7c98db08fba92f Author: Picca Frédéric-Emmanuel Date: Thu May 11 16:55:27 2023 +0200 [contrib/haskell] comment maskmatrix and wavelength and image_sum_max .../haskell/src/Hkl/Binoculars/Config/Common.hs | 33 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) commit 388bab5a778c642312fb56c03620bdc57eb8fa85 Author: Picca Frédéric-Emmanuel Date: Thu May 11 16:39:25 2023 +0200 [contrib/haskell] document the attenuation_max parameter contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit 44682ada26cfa9b6f5b9c06d6a59688a35b1cd35 Author: Picca Frédéric-Emmanuel Date: Thu May 11 16:27:50 2023 +0200 [contrib/haskell] document the attenuation_coefficient .../haskell/src/Hkl/Binoculars/Config/Common.hs | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) commit 1b104bd079f0f107f0486d0307fa786182c45f8b Author: Picca Frédéric-Emmanuel Date: Thu May 11 15:45:17 2023 +0200 [contrib/haskell] document sdd and detrot contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) commit a10dc9b34be9b4af9f7252a15f1b00764ca99df4 Author: Picca Frédéric-Emmanuel Date: Thu May 11 15:13:02 2023 +0200 [contrib/haskell] document the centralpixel contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 0fab698c372b6bf4c4af09cda467d2dbe4d587b3 Author: Picca Frédéric-Emmanuel Date: Thu May 11 14:57:57 2023 +0200 [contrib/haskell] document the detector parameter contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 21 ++++++++++++++++++--- contrib/haskell/src/Hkl/Detector.hs | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) commit 5582040301de66ebc97af125c638206082338654 Author: Picca Frédéric-Emmanuel Date: Thu May 11 14:29:41 2023 +0200 [contrib/haskell] document the inputrange .../haskell/src/Hkl/Binoculars/Config/Common.hs | 46 ++++++++++++++-------- 1 file changed, 30 insertions(+), 16 deletions(-) commit 8cf4ec935f7456826cf60791420c071bd7796dce Author: Picca Frédéric-Emmanuel Date: Thu May 11 12:00:09 2023 +0200 [contrib/haskell] document the inputtmpl parameter .../haskell/src/Hkl/Binoculars/Config/Common.hs | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) commit 957998e71fe3990124a167e662586419d2155524 Author: Picca Frédéric-Emmanuel Date: Thu May 11 11:27:11 2023 +0200 [contrib/haskell] document the nexusdir parameter .../haskell/src/Hkl/Binoculars/Config/Common.hs | 31 ++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) commit 726ce4c2abcbda8f65c2dfbd55cfffb1736b140d Author: Picca Frédéric-Emmanuel Date: Thu May 11 11:04:11 2023 +0200 [contrib/haskell] document the inputType parameter .../haskell/src/Hkl/Binoculars/Config/Common.hs | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) commit 9ea6717514ea1326f7153ab1f80e32d07a9b802d Author: Picca Frédéric-Emmanuel Date: Wed May 10 17:05:12 2023 +0200 [contrib/haskell] start to document the config file this will makes the programm easier to use for our extenal users. .../haskell/src/Hkl/Binoculars/Config/Common.hs | 38 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) commit 1d98f218237e7e05880651d65bd9971b2106bd82 Author: Picca Frédéric-Emmanuel Date: Wed May 10 10:48:27 2023 +0200 [binoculars] use by default the first detector. binoculars/hkl-binoculars-detectors-2d.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit c6f2a59d7437d2b1e47c7547a2436ea89265c66e Author: Picca Frédéric-Emmanuel Date: Tue May 9 18:02:31 2023 +0200 [binoculars] todo pour yves binoculars/hkl-binoculars.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7f53ffd53641e85774ab238d7a4f298cfccf30ba Author: Picca Frédéric-Emmanuel Date: Tue May 9 14:12:45 2023 +0200 [readhdf5] first test with real data's ruche 480 Mio / s binoculars/readhdf5.c | 74 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 12 deletions(-) commit 8c150b0227d8c90f1ea08eb82a81a374691df850 Author: Picca Frédéric-Emmanuel Date: Tue May 9 11:34:23 2023 +0200 [readhedf5] select data via hyperslab This version of the software read image per images all the dataset. binoculars/readhdf5.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) commit 59aaf0ee852a1f0fcd5f819df8e3349c03160fb3 Author: Picca Frédéric-Emmanuel Date: Tue May 9 00:23:57 2023 +0200 [binoculars] added a C programme in order to test IO read from hdf5 this will allow to check that speed is optimal from the haskell code. binoculars/Makefile.am | 2 ++ binoculars/readhdf5.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) commit c6af677a00bd886813fc6ffdd53795efdb94e2bf Author: Picca Frédéric-Emmanuel Date: Fri May 5 16:27:56 2023 +0200 [contrib/haskell] deal with the q_index -> q_timestamp rename we keep the old name in order to process the old configurations contrib/haskell/src/Hkl/Binoculars/Config.hs | 56 ++++++++++++++++------------ 1 file changed, 32 insertions(+), 24 deletions(-) commit ab928bd0d9a48c476296e6f6f8538dfb4fb3fd70 Author: Picca Frédéric-Emmanuel Date: Fri May 5 16:16:22 2023 +0200 [contrib/haskell] reorganize the Orphan.hs just a few comments and code moved contrib/haskell/src/Hkl/Orphan.hs | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) commit 5e374b910926d4c1e7e42a0a19f3f2cc14732edc Author: Picca Frédéric-Emmanuel Date: Fri May 5 16:12:52 2023 +0200 [contrib/haskell] move some code around move HklBinocularsSurfaceOrientationEnum and HklBinocularsQCustomSubProjectionEnum into Config.hs instead of te Orphan.hs contrib/haskell/src/Hkl/Binoculars/Config.hs | 51 ++++++++++++++++++++++++++-- contrib/haskell/src/Hkl/Orphan.hs | 47 ------------------------- 2 files changed, 49 insertions(+), 49 deletions(-) commit b44c558631438e5bd2a00afc0ac8c51f9220a202 Author: Picca Frédéric-Emmanuel Date: Fri May 5 16:07:29 2023 +0200 [contrib/haskell] move the Index out of the way for the future Index the current Index was in fact a Timestamp. Next projections will be real Index. So make everythings coherant. binoculars/hkl-binoculars.c | 14 +++--- binoculars/hkl-binoculars.h | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 56 +++++++++++----------- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 8 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 ++-- contrib/haskell/src/Hkl/DataSource.hs | 40 ++++++++-------- contrib/haskell/src/Hkl/Orphan.hs | 2 +- contrib/haskell/src/Hkl/Types.hs | 4 +- 8 files changed, 67 insertions(+), 67 deletions(-) commit c8ab679e2a96f5306263a55e7bcce1c858cf7fcc Author: Picca Frédéric-Emmanuel Date: Fri May 5 15:21:07 2023 +0200 [contrib/haskell] CInt -> CSize for n_limits contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 3d2600ab57c3896fbe0a6b171c1861746c8f1272 Author: Picca Frédéric-Emmanuel Date: Fri May 5 15:14:23 2023 +0200 [contrib/haskell] Added the q_qpar_qper projection binoculars/hkl-binoculars.c | 52 ++++++++++++++++++++++ binoculars/hkl-binoculars.h | 3 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 ++ contrib/haskell/src/Hkl/Orphan.hs | 1 + 5 files changed, 59 insertions(+), 2 deletions(-) commit b8c41c68832922f925874426e1a8852238354cc8 Author: Picca Frédéric-Emmanuel Date: Fri May 5 14:55:47 2023 +0200 [contrib/haskell] HklBinocularsQCustomSubProjectionEnum contrib/haskell/src/Hkl/Binoculars/Config.hs | 48 ---------------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 52 ++++++++--------- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 16 +++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 66 +++++++++++++++++++++- contrib/haskell/src/Hkl/Orphan.hs | 32 +++++++++++ 5 files changed, 131 insertions(+), 83 deletions(-) commit fde5c82031b03e528ef1ca1c27905bbad5a03eae Author: Picca Frédéric-Emmanuel Date: Fri May 5 14:08:21 2023 +0200 [contrib/haskell] new HklBinocularsSurfaceOrientationEnum use it instead of SurfaceOrientation. It is cleaner to use the C type. contrib/haskell/src/Hkl/Binoculars/Config.hs | 28 ++--------------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 12 ++++---- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 12 ++++---- contrib/haskell/src/Hkl/C/Binoculars.hsc | 22 ++++++++++++- contrib/haskell/src/Hkl/Orphan.hs | 36 ++++++++++++++++++++-- 5 files changed, 69 insertions(+), 41 deletions(-) commit 7cf7e9054d46d4436322e8a65aa428415d6c6737 Author: Picca Frédéric-Emmanuel Date: Fri May 5 13:32:34 2023 +0200 [contrib/haskell] added the HklUnitEnum data type It is useless for now but who knows... contrib/haskell/src/Hkl/C/Hkl.hsc | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) commit 764a1e2c191d8a1b0f43ea6d6efb2af347631b3e Author: Picca Frédéric-Emmanuel Date: Fri May 5 10:04:38 2023 +0200 [contrib/haskell] use the new Enum in the code .../haskell/src/Hkl/Binoculars/Config/Common.hs | 14 ++-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 86 +++++++++++----------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 1 + contrib/haskell/src/Hkl/Detector.hs | 41 ++++++----- 4 files changed, 73 insertions(+), 69 deletions(-) commit 58f120ef53cc89bd0d51087ed5233ecbc5e153ea Author: Picca Frédéric-Emmanuel Date: Fri May 5 08:53:31 2023 +0200 [contrib/haskell] Created an HklBinocularsDetectorEnum data type Deal with Enum's the haskell way. It will be more work when adding a new detector to the binoculars library. We need to add it also in the haskell code, but this will be more reliable when refactoring the code. contrib/haskell/src/Hkl/C/Binoculars.hsc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit 3c619191081b5363d5c6fa97ca4fc5af65ad4753 Author: Picca Frédéric-Emmanuel Date: Thu May 4 16:49:21 2023 +0200 [hkl] added a valgrind target for testing tests/Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 7230973d84bc2f5292aa1b2725ba3fbaece28fe3 Author: Picca Frédéric-Emmanuel Date: Thu May 4 16:49:01 2023 +0200 [hkl] deal with wrong mode parameter registration hkl/hkl-pseudoaxis-private.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 2e2cf4057399a4159502f5ae9d2822104e13fb20 Author: Picca Frédéric-Emmanuel Date: Thu May 4 09:07:39 2023 +0200 [binoculars] avoir memory leak detected by -fanalyzer binoculars/hkl-binoculars-hdf5.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit dafc6ae72fe1c4f42bc28815dd1207db02b86b5c Author: Picca Frédéric-Emmanuel Date: Thu May 4 09:01:29 2023 +0200 [hkl] -f analyzer in the sirius.c Documentation/figures/sirius.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit dc9158136ce1ef596623002f2cc5ccd26d3ef68e Author: Picca Frédéric-Emmanuel Date: Thu May 4 09:00:50 2023 +0200 [hkl] avoid an memory leak detected by -fanalyzer hkl/ccan/darray/darray.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit f39d0527a0d3417ed2c82a2c7e62d80a75706c92 Author: Picca Frédéric-Emmanuel Date: Wed May 3 15:54:58 2023 +0200 [hkl] better for loop stop condition. hkl/hkl-geometry.c | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) commit 73ca162bb850ca6895c380c2a45378394664f7cf Author: Picca Frédéric-Emmanuel Date: Wed May 3 11:17:13 2023 +0200 [hkl] abort if realloc failed in darray_append This make the gcc analyser less verbose about NULL deferencement. Usually a library should not use abort or exit, but in that case I considere that a memory issue is critical enought to abort the program. this position could be revised later. hkl/ccan/darray/darray.h | 3 +++ 1 file changed, 3 insertions(+) commit 07adc3e034b68dcf35617700c9139b65124e39b6 Author: Picca Frédéric-Emmanuel Date: Tue May 2 17:37:09 2023 +0200 [hkl] ccan update hkl/ccan/configurator.c | 12 ++++++------ hkl/ccan/darray/darray.h | 14 ++++++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) commit 472dcc2e5dd8d68a1c889b62746a151c2bf724c6 Author: Picca Frédéric-Emmanuel Date: Tue May 2 17:18:36 2023 +0200 [hkl] instrument the geometry method to avoid NULL pointers hkl/hkl-geometry-private.h | 56 +++++++++++++++++++++++----------------------- hkl/hkl-geometry.c | 37 +++--------------------------- 2 files changed, 31 insertions(+), 62 deletions(-) commit cad41451bf90c0c9eae254c9b221cba59e246ea7 Author: Picca Frédéric-Emmanuel Date: Mon Apr 24 10:11:22 2023 +0200 [binoculars] removed TODO's realspace and pixels binoculars/hkl-binoculars.h | 35 ----------------------------------- 1 file changed, 35 deletions(-) commit a3cf136925d6347bff80cb11d3510158fd15785a Author: Picca Frédéric-Emmanuel Date: Fri Apr 21 18:33:26 2023 +0200 [contrib/haskell] HklH5Exception derive from HklDataSourceException match only the HklDataSourceException instead of using the catchAll hammer. contrib/haskell/src/Hkl/DataSource.hs | 6 +++--- contrib/haskell/src/Hkl/Exception.hs | 35 ++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 16 deletions(-) commit ee71215036ba2fb78ee9bf8eecb154871f70989a Author: Picca Frédéric-Emmanuel Date: Fri Apr 21 14:36:04 2023 +0200 [contrib/haskell] forgot an Exception from DataSource It would be great to unify the Datasource one with the H5. Or create a hyerarchie of thoses two Exceptions contrib/haskell/src/Hkl/DataSource.hs | 9 +-------- contrib/haskell/src/Hkl/Exception.hs | 8 +++++++- 2 files changed, 8 insertions(+), 9 deletions(-) commit f6e68c70bcf3715b605b066ddea60b8041baa408 Author: Picca Frédéric-Emmanuel Date: Wed Apr 19 11:16:07 2023 +0200 [contrib/haskell] Added a few test for sixs contrib/haskell/data/test/Makefile | 2 ++ 1 file changed, 2 insertions(+) commit 7a383423e44070cae6a5b7bed6727ae378c47dd9 Author: Picca Frédéric-Emmanuel Date: Thu Apr 20 11:33:44 2023 +0200 [contrib/haskell] solve an issue when using the H5Or contructor due to the different type of HklPipesException and HklH5Exception, the CanNotOpenH5OrP was not catched and the fallback mechanism in DataSourcePath was not working. contrib/haskell/src/Hkl/Exception.hs | 7 +------ contrib/haskell/src/Hkl/Pipes.hs | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) commit e8cc57844b0dd030564fd20eff9a2a96057f0b2b Author: Picca Frédéric-Emmanuel Date: Thu Apr 20 11:01:18 2023 +0200 [contrib/haskell] put all Exceptions in their own file reorganise them in order to avoid issue when catching them... This is the first step contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 +---- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 13 ----- .../src/Hkl/Binoculars/Projections/Angles.hs | 10 +--- .../src/Hkl/Binoculars/Projections/QCustom.hs | 10 +--- contrib/haskell/src/Hkl/DataSource.hs | 7 +-- contrib/haskell/src/Hkl/Detector.hs | 9 +--- contrib/haskell/src/Hkl/Exception.hs | 55 ++++++++++++++++++++++ contrib/haskell/src/Hkl/H5.hs | 15 +----- contrib/haskell/src/Hkl/Pipes.hs | 9 +--- 10 files changed, 67 insertions(+), 75 deletions(-) commit 8127062422716ba87d8ec35fa8bd6ac21aa3664b Author: Picca Frédéric-Emmanuel Date: Mon Apr 17 10:47:02 2023 +0200 [contrib/haskell] no more Sixs -> Command contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Binoculars.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/{Sixs.hs => Command.hs} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) commit fdd827d5221ec75fc049cf245efbff9fe3906698 Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 16:43:36 2023 +0200 [contrib/haskell] SixsSbsMedHFixDetector is working contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 6f113e884d564595d2695332575c554504ba8c25 Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 16:17:19 2023 +0200 [contrib/haskell] memory leak introduced !!! hkl expect a const char* but we can not create it from haskell For now malloc the string and forgot to free it... contrib/haskell/src/Hkl/Geometry.hs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) commit 7e7135d51e69697601f7d020c965fb2f8e5dda81 Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 14:45:27 2023 +0200 [hkl] create a customisable readonly geometry when the factory is NULL contrib/haskell/src/Hkl/Geometry.hs | 3 +-- hkl/hkl-geometry.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) commit 2b363b474af4e525641da9f12df91af2bcf11eae Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 14:05:18 2023 +0200 [contrib/haskell] added an sixs:sbsmedhfixdetector input type This is for Alina contrib/haskell/data/test/Makefile | 5 +++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 ++ .../haskell/src/Hkl/Binoculars/Config/Common.hs | 1 + .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 22 +++++++++++++++++- contrib/haskell/src/Hkl/Geometry.hs | 26 ++++++++++++++++------ 6 files changed, 47 insertions(+), 10 deletions(-) commit ca8d3a3df248df03e71262801e550c8028aa18bb Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 10:20:33 2023 +0200 [contrib/haskell] DatasourcePath'Double'Or to have a fallback .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++++--- contrib/haskell/src/Hkl/DataSource.hs | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) commit 47865fc7b40dd323e5ff0f219d6d420931dd5c39 Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 19:13:07 2023 +0200 [binoculars] fix the translation using 1 instead of 0 as last value of vec4 binoculars/hkl-binoculars-geometry.c | 14 +++++++++++--- binoculars/hkl-binoculars.c | 12 +++++++++--- contrib/haskell/src/Hkl/Geometry.hs | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) commit 5222c0ba255b4917ac011aaa7b82ef272d37daf0 Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 11:55:27 2023 +0200 [contrib/haskell] use DataSourceDouble instead of Degree this way it is possible to deal with the axis unit in the hkl library .../src/Hkl/Binoculars/Projections/QCustom.hs | 197 ++++++++++----------- contrib/haskell/src/Hkl/DataSource.hs | 29 +-- 2 files changed, 114 insertions(+), 112 deletions(-) commit 7c75288fc651acf5fe271563bfc7830b181d2d7e Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 11:30:11 2023 +0200 [contrib/haskell] now we can set the unit for each geometry axis contrib/haskell/src/Hkl/C/Hkl.hsc | 9 ++------- contrib/haskell/src/Hkl/Geometry.hs | 30 ++++++++++++++++-------------- contrib/haskell/src/Hkl/Lattice.hs | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 21 deletions(-) commit 0410a212ae77cc684138545ebad1c0c9e4c71b9f Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 10:34:49 2023 +0200 [contrib/haskell] use the HklUnitEnum values instead of hard coding it makes the code easier to read. contrib/haskell/src/Hkl/C/Hkl.hsc | 7 +++++++ contrib/haskell/src/Hkl/Geometry.hs | 5 ++--- contrib/haskell/src/Hkl/Parameter.hs | 14 +++++--------- 3 files changed, 14 insertions(+), 12 deletions(-) commit d6f7ac5b44f3b83f210891220a3dc44bae1f06c4 Author: Picca Frédéric-Emmanuel Date: Tue Apr 11 16:39:19 2023 +0200 [binoculars] wip on the translation part it does not work yet due to an axis unit issue. We need to embed the unit in the axis definition and use this to produce the right axis transformation. .gitignore | 2 +- binoculars/hkl-binoculars-geometry.c | 2 + binoculars/hkl-binoculars.c | 40 +++++++------- binoculars/hkl-binoculars.h | 2 +- contrib/haskell/devel | 4 +- contrib/haskell/release | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 61 ++++++++++++---------- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 22 +++++++- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 34 ++++++------ .../src/Hkl/Binoculars/Projections/QCustom.hs | 40 +++++++------- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 4 +- contrib/haskell/src/Hkl/Detector.hs | 27 +++++----- contrib/haskell/src/Hkl/Geometry.hs | 2 +- 13 files changed, 135 insertions(+), 106 deletions(-) commit 13e19e0590a84dfe088f7d59cb17f0d98b083703 Author: Picca Frédéric-Emmanuel Date: Tue Apr 11 15:54:48 2023 +0200 [contrib/haskell] added the SixsFlyScanUhvGisaxs input type this does not work yet, but is necessary to do the Andreazza data treatment. contrib/haskell/data/test/Makefile | 4 ++-- contrib/haskell/devel | 4 +++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config/Sample.hs | 1 + .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 16 ++++++++++++++++ contrib/haskell/src/Hkl/Geometry.hs | 19 +++++++++++++++---- 6 files changed, 39 insertions(+), 8 deletions(-) commit a8142249a15fe8bf19436b644794292ac2a5e9e3 Author: Picca Frédéric-Emmanuel Date: Fri Apr 7 19:20:29 2023 +0200 [contrib/haskell] implement the projection part for realspace and pixels contrib/haskell/src/Hkl/Binoculars/Config.hs | 26 +++++++---- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 8 +++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 54 ++++++++++++---------- 5 files changed, 66 insertions(+), 34 deletions(-) commit b17eec2dd93d63af9291807b124284d526abc7a6 Author: Picca Frédéric-Emmanuel Date: Fri Apr 7 18:56:33 2023 +0200 [binoculars] implement realspace and pixels for the qcustom2 engine binoculars/hkl-binoculars.c | 338 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 263 insertions(+), 75 deletions(-) commit f4b08542d67893eb5f767b98e0e8209cced4a733 Author: Picca Frédéric-Emmanuel Date: Fri Apr 7 15:33:32 2023 +0200 [binoculars] implement realspace and pixels for the qcustom projection binoculars/hkl-binoculars.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit 8cd3d4dc06736b86d1060c29038ae5b05aafd935 Author: Picca Frédéric-Emmanuel Date: Fri Apr 7 15:18:17 2023 +0200 [binoculars] Added two news projection realspace and pixels not yet implemented but reorganise the qcustom code in order to make it easier to implement. binoculars/hkl-binoculars.c | 293 +++++++++++++++++++++++++++++++++++--------- binoculars/hkl-binoculars.h | 2 + 2 files changed, 234 insertions(+), 61 deletions(-) commit cfc7b51a9f321f962f6d0f262236d506521bc851 Author: Picca Frédéric-Emmanuel Date: Thu Apr 6 11:20:49 2023 +0200 [contrib/haskell] Added a medVTranslation geometry This geometry was designed in order to put a detector on a translation table on the medV diffractometer. Added also the dta in order to test all this... contrib/haskell/data/test/Makefile | 5 +++-- contrib/haskell/src/Hkl/Geometry.hs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) commit 98f474f277d2a0ac3f075c5e9d9261b2a80d7f72 Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 11:47:52 2023 +0200 [binoculars] implement the new qcustom2 engine with cglm binoculars/hkl-binoculars.c | 346 ++---- contrib/haskell/data/test/Makefile | 1 + tests/hkl-binoculars-t.c | 200 ++- tests/runtests.c | 2338 ++++++++++++++++++++---------------- 4 files changed, 1612 insertions(+), 1273 deletions(-) commit e17da02bff3037cd3f877e0ecc3009c308861560 Author: Picca Frédéric-Emmanuel Date: Tue Apr 4 16:55:11 2023 +0200 [binoculars] add the cglm method for holder's geometries. binoculars/Makefile.am | 1 + binoculars/hkl-binoculars-geometry.c | 67 ++++++++++++++++++++++++++ binoculars/hkl-binoculars-private.h | 14 +++++- binoculars/hkl-binoculars.c | 91 ++++++++++++++++++------------------ 4 files changed, 127 insertions(+), 46 deletions(-) commit 9c9e1823924b22264edff9dc172be3dfbe6c436e Author: Picca Frédéric-Emmanuel Date: Tue Apr 4 15:31:31 2023 +0200 indentation binoculars/hkl-binoculars-hdf5.c | 2 +- binoculars/hkl-binoculars.c | 898 +++++++++++++++++++-------------------- 2 files changed, 450 insertions(+), 450 deletions(-) commit 7822bfa2f4acbad25d65f21a8ac765ae352d42c7 Author: Picca Frédéric-Emmanuel Date: Tue Apr 4 14:23:05 2023 +0200 [hkl] Added the HklParameterType in order to compute 3d transformation. hkl/hkl-axis.c | 5 ++++- hkl/hkl-parameter-private.h | 19 ++++++++++++++++--- hkl/hkl-parameter.c | 21 ++++++++++++++++++--- 3 files changed, 38 insertions(+), 7 deletions(-) commit a89bf2e344e0249e8814d2126f82c2301a6b054a Author: Picca Frédéric-Emmanuel Date: Tue Apr 4 14:08:48 2023 +0200 [todo] new subprojection for Yves binoculars/hkl-binoculars.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 9f3d3296c1920bc15657df278a2047384825fd48 Author: Picca Frédéric-Emmanuel Date: Mon Apr 3 13:31:50 2023 +0200 [binding] fix for Python3.9 tests/bindings/polarisation.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4f489a24c6a7ca28c1fdcff9b562f341d80c6eb7 Author: Picca Frédéric-Emmanuel Date: Fri Mar 31 15:18:26 2023 +0200 [binoculars] remove a bunch of analyzer warnings binoculars/hkl-binoculars-cnpy.c | 10 ++++++++++ binoculars/hkl-binoculars.c | 19 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) commit 5a8bbb1b9395279b9401b8fdb0d6bc34db50fc45 Author: Picca Frédéric-Emmanuel Date: Wed Mar 29 11:22:43 2023 +0200 [contrib/haskell] save the config in the hdf5 file binoculars/hkl-binoculars-hdf5.c | 77 +++++++++------------- binoculars/hkl-binoculars.h | 1 + contrib/haskell/src/Hkl/Binoculars/Projections.hs | 11 ++-- .../src/Hkl/Binoculars/Projections/Angles.hs | 4 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +- .../src/Hkl/Binoculars/Projections/QCustom2.hs | 4 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- 8 files changed, 46 insertions(+), 61 deletions(-) commit 3e065eec4924e62b08733e692d74b9e5f76058dd Author: Picca Frédéric-Emmanuel Date: Mon Mar 27 16:59:40 2023 +0200 [contrib/haskell] prepare the config in the hdf5 file binoculars/hkl-binoculars-hdf5.c | 48 ++++++++++++++++++++++++++++++++++++++ contrib/haskell/data/test/Makefile | 4 ++-- 2 files changed, 50 insertions(+), 2 deletions(-) commit b192e1d4aea1e9b7c247919ae31e380a2cdbe272 Author: Picca Frédéric-Emmanuel Date: Mon Mar 27 15:56:50 2023 +0200 [contrib/haskell] fix for 'number of images' < 'number of Core' contrib/haskell/src/Hkl/Binoculars/Common.hs | 5 +++-- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) commit 7bf6a376ea7cd20c4a6d34c4ebbbf32d8a2461f2 Author: Picca Frédéric-Emmanuel Date: Mon Mar 27 14:23:43 2023 +0200 [binoculars] generate hdf5 files with the right axis index axis are 0-indexes, so compute the right index when saving the data. binoculars/hkl-binoculars-hdf5.c | 8 ++++++++ contrib/haskell/data/test/Makefile | 1 + 2 files changed, 9 insertions(+) commit 188f94684224de764d2d2363b2d8d384f0b31e23 Author: Picca Frédéric-Emmanuel Date: Mon Mar 27 12:22:57 2023 +0200 [contrib/haskell] skip Nan value when reading hdf5 files some files are not complete. the acauisition was stopped before the end of the acquisition. In that case the doubles values are filed with Nann values. So stop data extraction when we find one of these Nan Value. contrib/haskell/data/test/Makefile | 5 +++-- contrib/haskell/src/Hkl/H5.hs | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) commit 3b27dc895091ba71afd38dccd329a2e6a82e0ff6 Author: Picca Frédéric-Emmanuel Date: Thu Mar 23 11:27:17 2023 +0100 [binoculars] use static for the axes names. this remove a warning from the compilator binoculars/hkl-binoculars.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit 9f76ad951420c9c4d3c97f965bc025ece77a2687 Author: Picca Frédéric-Emmanuel Date: Thu Mar 23 10:31:52 2023 +0100 [contrib/haskell] fix medh data sources contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit fd7385067d5f2845ced40c2059051ca0f3527c9d Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 19:47:35 2023 +0100 [binding] unit test for the petraIII polarisation script tests/bindings/polarisation.py | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) commit 841da631fc40275ff1eb675a6deb0c52d54ba26a Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 19:17:58 2023 +0100 typo hkl/hkl-binding.c | 8 ++++---- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) commit 511ccc77aae7238c218747f9ea862af992acb939 Author: Picca Frédéric-Emmanuel Date: Mon Mar 20 17:41:16 2023 +0100 [hkl] expose the ki/kf_get method in the python API hkl.h | 5 +++++ hkl/hkl-binding-private.h | 7 ++++++- hkl/hkl-binding.c | 36 +++++++++++++++++++++++++++++++++++- hkl/hkl-geometry-private.h | 7 +------ hkl/hkl-geometry.c | 21 ++++++++++++++++++++- tests/bindings/polarisation.py | 8 ++++++++ tests/bindings/python.py | 8 +++++++- 7 files changed, 82 insertions(+), 10 deletions(-) commit 3b306e2b76e3108d2dc96456d720504a2299561c Author: Picca Frédéric-Emmanuel Date: Wed Mar 15 11:45:04 2023 +0100 [binfing] use NamedTuple where possible tests/bindings/polarisation.py | 68 ++++++++++++++++++++++++++++++++---------- tests/bindings/sample1.txt | 29 ++++++++++++++++++ 2 files changed, 82 insertions(+), 15 deletions(-) commit 471b4c1372b05d915520b11d4ee433fa997bc1db Author: Picca Frédéric-Emmanuel Date: Wed Mar 15 10:56:28 2023 +0100 [binding] added the petraIII ki kf unittest which failed for now tests/bindings/polarisation.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) commit d8e7271f7b24a2550c265debaaa4cc587728d0c5 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 14:39:01 2023 +0100 [binoculars] prepare for cglm implementation of affine transformations Makefile.am | 7 +- binoculars/Makefile.am | 2 + binoculars/hkl-binoculars.c | 789 +++++++++++++++++++++++--------------------- configure.ac | 13 +- tests/hkl-binoculars-t.c | 62 ++-- 5 files changed, 462 insertions(+), 411 deletions(-) commit 16fcf96b04ec43b5011ac610282927f520811aef Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 11:46:30 2023 +0100 [contrib/haskell] Added a test with qcustom2 contrib/haskell/data/test/Makefile | 5 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 4 +- contrib/haskell/test/BinocularsSpec.hs | 99 ++++++++++++---------- 3 files changed, 59 insertions(+), 49 deletions(-) commit e371ecfc587ea28b1538b7e9a2b3c655059fe1d6 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 11:46:06 2023 +0100 [contrib/haskell] reading input range from config file was wrong wrong key/values. contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1f65edd3b8031f4bda709c6b0e82d7e48fc75b81 Author: Picca Frédéric-Emmanuel Date: Sat Feb 25 12:38:46 2023 +0100 [contrib/haskell] implement the C part of the Qcustom2 this version require the real detector coordinates, instead of the normalisez one. binoculars/hkl-binoculars-detectors-2d.c | 7 ++++--- binoculars/hkl-binoculars.c | 14 ++++++++------ binoculars/hkl-binoculars.h | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom2.hs | 2 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- contrib/haskell/src/Hkl/Detector.hs | 10 +++++++--- 9 files changed, 25 insertions(+), 18 deletions(-) commit 3824366f67e46c84546ae2472d548a9abcb0e5c4 Author: Picca Frédéric-Emmanuel Date: Fri Feb 24 11:12:51 2023 +0100 [contrib/haskell] Added a QCustome 2 projection for custom geometries the idea is to work on this specific projection for the custom geometries. This way these is no impact on the already developed projections. binoculars/hkl-binoculars.c | 217 ++++++++++++++++ binoculars/hkl-binoculars.h | 24 ++ contrib/haskell/hkl.cabal | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 + .../src/Hkl/Binoculars/Projections/Angles.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom2.hs | 278 +++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 16 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 9 + 8 files changed, 542 insertions(+), 9 deletions(-) commit df7a7b5f60591c546f85782499bc9d39e546f6e9 Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 19:21:18 2023 +0100 [contrib/haskell] stylish contrib/haskell/src/Hkl/Geometry.hs | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) commit 49c0fd71327728e11730f69671c13825e1b2c9d9 Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 19:11:54 2023 +0100 [contrib/haskell] removed -p from RTS in release mode contrib/haskell/data/test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d50fe7e806b39490c8424e699b577e51458dcf0f Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 18:54:24 2023 +0100 [contrib/haskell] remove most of the DataSourcePath'Geometry constructor .../src/Hkl/Binoculars/Projections/QCustom.hs | 106 ++++++++++++--------- contrib/haskell/src/Hkl/DataSource.hs | 57 +---------- 2 files changed, 61 insertions(+), 102 deletions(-) commit a27ca4abc079ce23e565b2711d9fb93398cd5db0 Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 18:47:33 2023 +0100 [contrib/haskell] Added DataSourcePath'Geometry for custom geometries the next step is to remove all other constructors. .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 + contrib/haskell/src/Hkl/DataSource.hs | 25 +++++++++++++++------- contrib/haskell/src/Hkl/Geometry.hs | 11 +++++++--- 3 files changed, 26 insertions(+), 11 deletions(-) commit 8f9f193e69274839f71c5d2e12acbaff8d5ce480 Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 17:31:07 2023 +0100 [contrib/haskell] simplify the DataSourceAcq'Geometry type now that we can build HklGeometry from haskell, we can reduce the number of constructor of this type. At the end only on will remain. contrib/haskell/src/Hkl/Binoculars/Projections.hs | 2 - .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 14 +- contrib/haskell/src/Hkl/DataSource.hs | 118 ++++--------- contrib/haskell/src/Hkl/Geometry.hs | 193 ++++----------------- 6 files changed, 75 insertions(+), 256 deletions(-) commit e5140d27d8504b9408907aaeddadd1f2e703cede Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 15:19:00 2023 +0100 [contrib/haskell] typo PHONI -> PHONY in the Makefile contrib/haskell/data/test/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c98852493f59e7554e280e5ec9488a5e9bbf24b9 Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 14:53:28 2023 +0100 [contrib/haskell] forgotten a liftIO contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 623c55daa046a5fecde70a6b54967730772591a0 Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 14:45:27 2023 +0100 [contrib/haskell] specialize a bunch of methods contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 +++- contrib/haskell/src/Hkl/Utils.hs | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) commit ecfc889f74981f45ae8ccffc7035ee4646c3589f Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 14:43:28 2023 +0100 [contrib/haskell] add profiling to the devel script contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/devel | 2 +- contrib/haskell/hkl.cabal | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) commit c4079457be7dd0e87dc928d183fd2cfa8bdfc265 Author: Picca Frédéric-Emmanuel Date: Wed Feb 22 14:42:35 2023 +0100 [contrib/haskell] removed useless code and call the newGeometry' method .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 +-- contrib/haskell/src/Hkl/Geometry.hs | 29 +++++++++------------- 2 files changed, 13 insertions(+), 19 deletions(-) commit 8d74b03a35eedf1200301974574eba06d1a7bf86 Author: Picca Frédéric-Emmanuel Date: Tue Feb 21 13:26:19 2023 +0100 [contrib/haskell] Added a newGeometry' to build custom geometries contrib/haskell/devel | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 + contrib/haskell/src/Hkl/C/Hkl.hsc | 20 +++++ contrib/haskell/src/Hkl/Geometry.hs | 100 ++++++++++++++++++--- contrib/haskell/src/Hkl/Utils.hs | 27 ++++-- hkl.h | 35 +++++++- hkl/hkl-unit-private.h | 35 +------- hkl/hkl-unit.c | 9 +- 9 files changed, 180 insertions(+), 53 deletions(-) commit cd2db60d4b506de1d82f17e52eb7f95a3346e5a1 Author: Picca Frédéric-Emmanuel Date: Fri Feb 10 10:34:25 2023 +0100 [contrib/haskell] put the HKD in its own module contrib/haskell/hkl.cabal | 1 + .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +--- contrib/haskell/src/Hkl/HKD.hs | 33 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) commit c7ccd04669c90e9042a414efb034806bd1786f91 Author: Picca Frédéric-Emmanuel Date: Tue Feb 14 17:05:48 2023 +0100 [contrib/haskell] use DataFrameHkl' * instead of dedicated type .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 31 ++++++++++------------ 1 file changed, 14 insertions(+), 17 deletions(-) commit 6b5f8bc7d4824fb199437c956729ed5e773ef8a3 Author: Picca Frédéric-Emmanuel Date: Tue Feb 14 15:50:31 2023 +0100 [contrib/haskell] move the data type into the DataSource Class .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 26 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 35 ++- contrib/haskell/src/Hkl/DataSource.hs | 323 +++++++++++---------- 3 files changed, 199 insertions(+), 185 deletions(-) commit 1ef467ad0f7a4e190efec617bcd358ac37581b3d Author: Picca Frédéric-Emmanuel Date: Tue Feb 14 13:49:22 2023 +0100 [contrib/haskell] no more NanoMeter or Angstrom .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 - contrib/haskell/src/Hkl/DataSource.hs | 38 ----------- contrib/haskell/src/Hkl/Lattice.hs | 76 +++++++++------------- 3 files changed, 31 insertions(+), 84 deletions(-) commit 22e28e2271a160a3cdfadff9efecaba00414a81f Author: Picca Frédéric-Emmanuel Date: Thu Feb 9 16:39:20 2023 +0100 [contrib/haskell] do not export for now private functions contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit adca7b271155521dd1b97efaee6f9b9495687fc6 Author: Picca Frédéric-Emmanuel Date: Mon Feb 13 11:38:47 2023 +0100 [contrib/haskell] removed Source/Wavelength types We are using pure Double, the user decide which unit is used for the wavelength and the cells parameters. (angstrom or nanometer or what else). binoculars/hkl-binoculars.c | 34 ++++---- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 2 +- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 44 +++++----- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 24 +++--- contrib/haskell/src/Hkl/DataSource.hs | 93 ++++++++++------------ contrib/haskell/src/Hkl/Geometry.hs | 12 +-- contrib/haskell/src/Hkl/Lattice.hs | 14 ++-- 8 files changed, 103 insertions(+), 122 deletions(-) commit 85d0d70b7330c82d26772aab859a040cafa5ea6e Author: Picca Frédéric-Emmanuel Date: Mon Feb 13 10:35:03 2023 +0100 [binoculars] wrong resolution index for QIndex projection. binoculars/hkl-binoculars.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3058bc2148bca1d4b00088e7734edd9aaaef7b5c Author: Picca Frédéric-Emmanuel Date: Thu Feb 9 16:30:10 2023 +0100 [contrib/haskell] use HKD for the DataFrame Path this simplify and avoid double entries to generate datapath for a given dataframe. .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 67 ++++++++++++---------- 1 file changed, 38 insertions(+), 29 deletions(-) commit c5a908b5b59c39fa462e08e07f29699090934d4c Author: Picca Frédéric-Emmanuel Date: Thu Feb 9 13:29:23 2023 +0100 [contrib/haskell] remove useless content contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) commit e3eaeee6806edb1cc49c4fddeae4aa7261a0f52f Author: Picca Frédéric-Emmanuel Date: Thu Feb 9 11:28:52 2023 +0100 [contrib/haskell] factorize the projection cmd no need for cmdXXX method, we can factorize all this in one cmd function. contrib/haskell/src/Hkl/Binoculars/Projections.hs | 27 ++++++++++++++++++++-- .../src/Hkl/Binoculars/Projections/Angles.hs | 18 ++------------- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 19 ++------------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 18 ++------------- 4 files changed, 31 insertions(+), 51 deletions(-) commit 66dae5dd76c430cec3619b95797d9b0d24f69fdf Author: Picca Frédéric-Emmanuel Date: Wed Feb 8 16:14:53 2023 +0100 [contrib/haskell] use a dedicated type for Capabilities contrib/haskell/src/Hkl/Binoculars/Config.hs | 17 +++++++++++++++-- contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 14 ++------------ contrib/haskell/src/Hkl/Binoculars/Config/Sample.hs | 3 --- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) commit d42d3ec32c806e91da9953f53252e83720f1bd38 Author: Picca Frédéric-Emmanuel Date: Wed Feb 8 11:09:39 2023 +0100 [contrib/haskell] parse ini file with a maximum of pure methods contrib/haskell/app/Binoculars.hs | 12 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 42 ++- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 10 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 40 +-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 48 +-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 385 ++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 18 +- 8 files changed, 279 insertions(+), 282 deletions(-) commit 8b2826cbc8194f44976557eae84e8e0f7f2c1e7c Author: Picca Frédéric-Emmanuel Date: Tue Feb 7 11:37:25 2023 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 2 -- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 3 --- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 1 - 3 files changed, 6 deletions(-) commit 32bd0f29e85d8b4b97e1aa8f0f6a4468217c5fc7 Author: Picca Frédéric-Emmanuel Date: Mon Feb 6 17:37:17 2023 +0100 [contrib/haskell] merge properly the Ini files contrib/haskell/debian/control | 9 ++++++++ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 26 +++++++++++++++++----- .../haskell/src/Hkl/Binoculars/Config/Common.hs | 4 ++-- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 ++--- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 7 files changed, 37 insertions(+), 13 deletions(-) commit d326da6b3c86512ba758e4e8fad19b2b7eb1fcf0 Author: Picca Frédéric-Emmanuel Date: Mon Feb 6 16:28:32 2023 +0100 [contrib/haskell] factorize the ToIni methods .../haskell/src/Hkl/Binoculars/Config/Common.hs | 26 ++++++++++ .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 55 +++++++--------------- .../src/Hkl/Binoculars/Projections/Angles.hs | 25 ++-------- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 31 ++++-------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 25 ++-------- 5 files changed, 60 insertions(+), 102 deletions(-) commit c424ed483ed805fa15b6c5cb237ce5b38c1dab11 Author: Picca Frédéric-Emmanuel Date: Mon Feb 6 16:07:53 2023 +0100 [contrib/haskell] split the HasInitConfig class into uniq methods contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 +++++++---- .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 2 ++ contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 ++ .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 ++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 17 +++++++---------- 5 files changed, 20 insertions(+), 14 deletions(-) commit 0cf4ad01ab0efaa645300afa90238d895d2017dd Author: Picca Frédéric-Emmanuel Date: Mon Feb 6 14:44:19 2023 +0100 [contrib/haskell] removed the old BIDIR API contrib/haskell/src/Hkl/Binoculars/Config.hs | 26 ++++------------------ .../src/Hkl/Binoculars/Projections/Angles.hs | 10 ++++----- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 10 ++++----- .../src/Hkl/Binoculars/Projections/QCustom.hs | 10 ++++----- 4 files changed, 19 insertions(+), 37 deletions(-) commit ca50ccdca4c3834d6f6d33396934234939a2b5a3 Author: Picca Frédéric-Emmanuel Date: Thu Feb 2 17:19:17 2023 +0100 [contrib/haskll] migrates all projections to the new config system contrib/haskell/hkl.cabal | 1 + .../haskell/src/Hkl/Binoculars/Config/Common.hs | 28 +- .../haskell/src/Hkl/Binoculars/Config/Sample.hs | 282 ++++++++++ .../src/Hkl/Binoculars/Projections/Angles.hs | 376 ++++++------- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 603 +++++++-------------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 77 ++- contrib/haskell/src/Hkl/DataSource.hs | 55 +- contrib/haskell/src/Hkl/Lattice.hs | 3 + 8 files changed, 747 insertions(+), 678 deletions(-) commit 86fbb55e8a8b1598200b498d59a07e1931417ed3 Author: Picca Frédéric-Emmanuel Date: Wed Feb 1 10:17:59 2023 +0100 [contrib/haskell] Added config in order to work on my ssd contrib/haskell/data/test/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f5799a55babcc25b425f7beac0cc89486ebcb79b Author: Picca Frédéric-Emmanuel Date: Thu Feb 2 10:53:13 2023 +0100 [contrib/haskell] merged QparQper in QCustom binoculars/hkl-binoculars.c | 86 ++---- binoculars/hkl-binoculars.h | 23 +- contrib/haskell/hkl.cabal | 1 - contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 4 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 304 --------------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 23 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 25 -- 8 files changed, 33 insertions(+), 435 deletions(-) commit 858c9ca563e559170c364d606cb5137a7d42cb22 Author: Picca Frédéric-Emmanuel Date: Thu Feb 2 10:38:58 2023 +0100 [contrib/haskell] merge QIndex into QCustom binoculars/hkl-binoculars.c | 69 +---- binoculars/hkl-binoculars.h | 22 +- contrib/haskell/data/test/Makefile | 4 +- contrib/haskell/hkl.cabal | 1 - contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 + .../src/Hkl/Binoculars/Projections/QIndex.hs | 302 --------------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 7 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 26 -- 9 files changed, 23 insertions(+), 412 deletions(-) commit 91b2de600759c2d200db05966fa8be89c4ab00e6 Author: Picca Frédéric-Emmanuel Date: Mon Jan 30 14:26:25 2023 +0100 [contrib/haskell] Added {projection} in the destination template :) contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 +++++++------ contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 7 ++++--- contrib/haskell/src/Hkl/Binoculars/Projections/QIndex.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 3 ++- 7 files changed, 20 insertions(+), 14 deletions(-) commit 85c4aad312f089b6a402487c8077d5b5e70de5e8 Author: Picca Frédéric-Emmanuel Date: Mon Jan 30 13:52:30 2023 +0100 [contrib/haskell] check central_pixel detector compatibility if the coordinates of the central pixel is outside the detector shape, stop with an error. contrib/haskell/src/Hkl/Binoculars/Config/Common.hs | 7 ++++++- contrib/haskell/src/Hkl/Detector.hs | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) commit 31256044aec95430afac38b688abffa083adc4e3 Author: Picca Frédéric-Emmanuel Date: Fri Jan 27 15:55:50 2023 +0100 [contrib/haskell] remove useless comments contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit 7e85fdacabb05f3b92d3025dd90f9e6004e0d300 Author: Picca Frédéric-Emmanuel Date: Fri Jan 27 15:55:17 2023 +0100 [contrib/haskell] Added two (wip) subprojection for test binoculars/hkl-binoculars.c | 35 ++++++++++++++++++---- binoculars/hkl-binoculars.h | 3 +- contrib/haskell/data/test/Makefile | 3 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 +++ .../haskell/src/Hkl/Binoculars/Config/Common.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 ++ 6 files changed, 41 insertions(+), 8 deletions(-) commit d45f6460ba48454acf803e5d928c5b44af40fd37 Author: Picca Frédéric-Emmanuel Date: Fri Jan 27 15:53:51 2023 +0100 [binoculars] remove the empty axes when saving the data's binoculars/hkl-binoculars-hdf5.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) commit b05b550ea1d7a56be4f337cbc1893835ae7b8910 Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 17:32:03 2023 +0100 [contrib/haskell] no more template haskell in QCustom .../src/Hkl/Binoculars/Projections/QCustom.hs | 36 ++++++++++------------ contrib/haskell/src/Hkl/Utils.hs | 21 +++++++++---- 2 files changed, 32 insertions(+), 25 deletions(-) commit cab2713c82f8fa113b4084130488816b7e505ebe Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 17:13:31 2023 +0100 [contrib/haskell] extract common values before using them contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 38 ++++++++++++---------- 2 files changed, 20 insertions(+), 19 deletions(-) commit 4ec1a4ba20ae062c1562eb2864bac8cc8ab906de Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 16:48:46 2023 +0100 [contrib/haskell] deal with the overwrite option contrib/haskell/src/Hkl/Binoculars/Config.hs | 94 +++++++++++++--------- .../src/Hkl/Binoculars/Projections/Angles.hs | 6 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- .../src/Hkl/Binoculars/Projections/QIndex.hs | 6 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 6 +- 6 files changed, 71 insertions(+), 49 deletions(-) commit 5185181f3c8396085899317fece3363aa8a712c6 Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 14:30:47 2023 +0100 [binoculars] TODO for yves binoculars/hkl-binoculars.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 12c396bd7a1f27e559575043063df5f3d1e1460b Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 14:04:38 2023 +0100 [contrib/haskell] put BinocularsConfig'Common in its own file contrib/haskell/hkl.cabal | 1 + .../haskell/src/Hkl/Binoculars/Config/Common.hs | 182 +++++++++++++++++++++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 124 +------------- 3 files changed, 185 insertions(+), 122 deletions(-) commit a08488f1e7d36fb7d0a5a0550f1088af532c5adb Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 13:20:20 2023 +0100 [contrib/haskell] split the QCustom configuration This is to share the common part of the configuration between the projections. .../src/Hkl/Binoculars/Projections/QCustom.hs | 607 +++++++++++---------- 1 file changed, 325 insertions(+), 282 deletions(-) commit 0152f5cd0bb9d52c627aea73e7e652961186d097 Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 10:40:48 2023 +0100 [contrib/haskell] reorganize for readability .../src/Hkl/Binoculars/Projections/QCustom.hs | 78 ++++++++++------------ 1 file changed, 35 insertions(+), 43 deletions(-) commit 64527d246a1a2cac82b97c495d82ebe5a7f16c06 Author: Picca Frédéric-Emmanuel Date: Tue Jan 24 17:58:40 2023 +0100 [contrib/haskell] overload also the max attenuation in datapath .../src/Hkl/Binoculars/Projections/QCustom.hs | 80 ++++++++++++++++------ contrib/haskell/src/Hkl/DataSource.hs | 18 ++--- 2 files changed, 67 insertions(+), 31 deletions(-) commit 0b9387fcea4fdff77546811d5032257257692a48 Author: Picca Frédéric-Emmanuel Date: Tue Jan 24 11:17:36 2023 +0100 [contrib/haskell] compute the number of thread using the number of cores the number of thread can be set directly in the binary via compile time +RTS -N -RTS options, or on the command line. The user can select a maximum number of core from the config file, which is constrained by the real hardware number of cores. so set the number of threads with the minimum of the these three possibilities. contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit ad4f968bb43e672717ab973d5d1330e46648891a Author: Picca Frédéric-Emmanuel Date: Mon Jan 23 17:27:30 2023 +0100 [contrib/haskell] better message when using H5Or contrib/haskell/src/Hkl/H5.hs | 1 + contrib/haskell/src/Hkl/Pipes.hs | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) commit 8398849bf58490133941a27a00ddede70c91d559 Author: Picca Frédéric-Emmanuel Date: Mon Jan 23 16:01:10 2023 +0100 [contrib/haskell] use try also when opening hdf5 files contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 4 ++-- contrib/haskell/src/Hkl/H5.hs | 15 ++++++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) commit 8a869e6e243502225038f2b4c54ad2fc9ce09ea8 Author: Picca Frédéric-Emmanuel Date: Mon Jan 23 15:29:25 2023 +0100 [contrib/haskell] use try instead of catch it makes the code nicer (to my opinion :) contrib/haskell/src/Hkl/H5.hs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) commit e794835abd2734a3903d2ee5a23ee742048b28a3 Author: Picca Frédéric-Emmanuel Date: Mon Jan 23 13:16:40 2023 +0100 [contrib/haskell] better error message by catching the HDF5Exception convert this exception into our own HklH5Exception which are simpler to understand for humans. contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/H5.hs | 23 +++++++++++++++++++---- contrib/haskell/src/Hkl/Pipes.hs | 6 +++--- 3 files changed, 24 insertions(+), 8 deletions(-) commit 10fcb1d32b8aefb63e4a9d6447718c6b91da7706 Author: Picca Frédéric-Emmanuel Date: Wed Jan 18 09:42:26 2023 +0100 [contrib/haskell] no more Maybe ConfigRange -> ConfigRange or error we check for the right values during the configuration parsing, to stop early and avoid to check for values during the rest of the process. .../src/Hkl/Binoculars/Projections/QCustom.hs | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) commit 76b153538c402d0245a4156d1738a3e21869594e Author: Picca Frédéric-Emmanuel Date: Wed Jan 18 09:11:43 2023 +0100 [contrib/haskell] no more Maybe for the DataPath .../src/Hkl/Binoculars/Projections/QCustom.hs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) commit 7684222edf8dd3458af80dfadc405072db17bc9b Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 18:37:53 2023 +0100 [contrib/haskell] idem for the surface orientation contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit c7bc8c168b823c893d58532a529c8db9b88e1f6e Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 18:32:16 2023 +0100 [contrib/haskell] detrot is not anymore a Maybe Degree but a Degree contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 9bb0a599556804b9b49b8b0e121ea4253aef62fa Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 18:28:14 2023 +0100 [contrib/haskell] the detector part is no more a Maybe .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 4 ++-- .../haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 19 +++++++++---------- .../haskell/src/Hkl/Binoculars/Projections/QIndex.hs | 4 ++-- .../src/Hkl/Binoculars/Projections/QparQper.hs | 4 ++-- 5 files changed, 17 insertions(+), 18 deletions(-) commit 87aae3cb8de32334eef2b2f6c6355764720c9d74 Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 17:46:53 2023 +0100 [contrib/haskell] use the defaultConfig' when computing the config .../src/Hkl/Binoculars/Projections/QCustom.hs | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) commit e3bbad487067602e7296b3a202bad95335e9ff9f Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 17:33:00 2023 +0100 [contrib/haskell] create the parseFDef helper method This allow to set a default value for a field when there is no field defined in the config file .../src/Hkl/Binoculars/Projections/QCustom.hs | 26 ++++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) commit e44261fe1a407ed265c59db42cea25b69433e853 Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 17:15:16 2023 +0100 [contrib/haskell] use a dedicated type for the number of cores contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 ++++++++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 41 +++++++++++----------- 2 files changed, 35 insertions(+), 21 deletions(-) commit b174c439954d375aea8b191ed03f2c462ff546bd Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 15:39:29 2023 +0100 [contrib/haskell] remove a warning during the build renamed elem into elemF .../src/Hkl/Binoculars/Projections/QCustom.hs | 54 +++++++++++----------- 1 file changed, 26 insertions(+), 28 deletions(-) commit 470a4b2ac389bb9590008e56d0553d5cfa4f2c8a Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 15:01:17 2023 +0100 [contrib/haskell] hlint .../src/Hkl/Binoculars/Projections/QCustom.hs | 35 +++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) commit 1584c26ac78a626c1a76f6cec6498fde40ea270f Author: Picca Frédéric-Emmanuel Date: Mon Jan 16 22:10:03 2023 +0100 [contrib/haskell] implement the new getConfig' method contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 202 +++++++++------------ 2 files changed, 85 insertions(+), 125 deletions(-) commit 14b0297909cdcae02b851b0154e1dd6781868d6f Author: Picca Frédéric-Emmanuel Date: Fri Jan 13 13:10:00 2023 +0100 [contrib/haskell] refactor the QCuston config parsing contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 80 ++++++++++------------ 2 files changed, 38 insertions(+), 44 deletions(-) commit 19bb83e9eaa266bff72dd1f71fee6b9d61af81b3 Author: Picca Frédéric-Emmanuel Date: Thu Jan 12 12:37:31 2023 +0100 [contrib/haskell] factorize the uhv, medh axes contrib/haskell/data/test/Makefile | 5 +- .../data/test/config_sixs_ruche_qcustom.ini | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 461 +++++++++++---------- 3 files changed, 249 insertions(+), 221 deletions(-) commit e74ce4645a09f5167102b686e931f084af264f00 Author: Picca Frédéric-Emmanuel Date: Thu Jan 12 11:46:15 2023 +0100 [contrib/haskell] print the missing keys in the ini file This is for documentation purpose for the user. contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7bc2008e3d9de4380acb0c577cdded22b2a5996b Author: Picca Frédéric-Emmanuel Date: Tue Jan 10 17:44:05 2023 +0100 [contrib/haskell] read the dataPath from the config file contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 200 ++++++++++----------- 2 files changed, 100 insertions(+), 102 deletions(-) commit 69e54ed5f7d8c77814655cfcd30d116833de3ccc Author: Picca Frédéric-Emmanuel Date: Tue Jan 10 17:10:13 2023 +0100 [contrib/haskell] no more lens in QCustom contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 134 ++++++++++++--------- 2 files changed, 81 insertions(+), 64 deletions(-) commit 599321712a9b561df36e08f43f41f1ba2c59e9b1 Author: Picca Frédéric-Emmanuel Date: Tue Jan 10 13:53:41 2023 +0100 [contrib/haskell] do not use the BiDir API in the QCustom projection contrib/haskell/data/test/Makefile | 4 +- .../data/test/config_sixs_ruche_qcustom.ini | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 38 ++++- .../src/Hkl/Binoculars/Projections/QCustom.hs | 182 ++++++++++----------- contrib/haskell/test/BinocularsSpec.hs | 6 +- 5 files changed, 124 insertions(+), 108 deletions(-) commit 2628f0fc23889f6c7bf44c30463751963c1b7e26 Author: Picca Frédéric-Emmanuel Date: Mon Jan 9 14:25:52 2023 +0100 [contrib/haskell] do not use the BiDir API to read and write config for now this is restrain to the QCustom projections .../data/test/config_ssd_sixs_flymedv_v2.txt | 5 - contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 137 ++++++++++++++------- 4 files changed, 99 insertions(+), 48 deletions(-) commit 143213461dfabc380247e0b4ffc97b4b4042e142 Author: Picca Frédéric-Emmanuel Date: Fri Jan 6 14:02:02 2023 +0100 [contrib/haskell] better error message when writting wrong values .../data/test/config_ssd_sixs_flymedv_v2.txt | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 43 ++++++++++++++++------ 2 files changed, 33 insertions(+), 12 deletions(-) commit 6d7ba66b286f52c0624c18fb5d67dfaf55f584a4 Author: Picca Frédéric-Emmanuel Date: Fri Jan 6 12:02:59 2023 +0100 [contrib/haskell] better error message for enum contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_ssd_sixs_flymedv_v2.txt | 41 ++++++++++++++++++++++ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +++- .../src/Hkl/Binoculars/Projections/QCustom.hs | 13 ++++++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 10 +++--- 6 files changed, 67 insertions(+), 7 deletions(-) commit 126adff433fc3a42987652e28e271ac18735472b Author: Picca Frédéric-Emmanuel Date: Fri Jan 6 10:35:55 2023 +0100 [contrib/haskell] factorize the default overwriting with Lens .../src/Hkl/Binoculars/Projections/QCustom.hs | 46 ++++++++++------------ 1 file changed, 20 insertions(+), 26 deletions(-) commit e44b50133901009bcb6e4a480dc7812e7b708194 Author: Picca Frédéric-Emmanuel Date: Thu Jan 5 18:11:29 2023 +0100 [contrib/haskell] validate the config in only one function contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 6 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 83 +++++++++++++--------- .../src/Hkl/Binoculars/Projections/QIndex.hs | 6 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 6 +- 6 files changed, 65 insertions(+), 45 deletions(-) commit 60bab51217b07ada5f7a6a2be2fa3e2d240d40bd Author: Picca Frédéric-Emmanuel Date: Thu Jan 5 15:34:11 2023 +0100 [contrib/haskell] search recurcively for files under the NexusDir this way we can use only one config file per experiment. this solve also the problem of scans split beetwen at least two different days. contrib/haskell/src/Hkl/Binoculars/Config.hs | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-) commit 83702d72ceb27807e24a5d51a9664b0b0fb2aab6 Author: Picca Frédéric-Emmanuel Date: Thu Jan 5 11:15:53 2023 +0100 [contrib/haskell] use the sixs dedicated attenuation for SixsFlyMedH contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 01d3a3eee128d2055a863dcb0477d8d51509f864 Author: Picca Frédéric-Emmanuel Date: Wed Jan 4 16:41:07 2023 +0100 [contrib/haskell] configuration default outside of the process .../src/Hkl/Binoculars/Projections/QCustom.hs | 53 ++++++++++++++++------ 1 file changed, 40 insertions(+), 13 deletions(-) commit 5c195d134cb6d1a827e81a697a5fe22d72f7e14c Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:41:23 2023 +0100 [contrib/haskell] hlint contrib/haskell/app/Binoculars.hs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit ad9cb94782915cf4cc327ec2aeacd571dc2839e9 Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:36:51 2023 +0100 [contrib/haskell] silent hlint in the arbitrary method contrib/haskell/src/Hkl/H5.hs | 1 + 1 file changed, 1 insertion(+) commit 70aa89a3fac082ebebb932487151086d4252be8c Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:26:22 2023 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Parameter.hs | 9 ++++----- contrib/haskell/src/Hkl/Sample.hs | 2 +- contrib/haskell/src/Hkl/Types.hs | 6 ++---- 3 files changed, 7 insertions(+), 10 deletions(-) commit 5740e281c3a0f8dcffe1b2a06e2d9fb50cda28f8 Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:22:31 2023 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Image.hs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 1b6010582379beaa9c22cdc2105081ba3eb81a45 Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:18:03 2023 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/DataSource.hs | 12 ++++++------ contrib/haskell/src/Hkl/H5.hs | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) commit c86f32c164e9033f5ecf1a938ca5707ca9dd2b09 Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:06:29 2023 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/H5.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit a6297b09bc28dedc7896254155f5d9d70f549367 Author: Picca Frédéric-Emmanuel Date: Tue Jan 3 11:01:20 2023 +0100 [contrib/haskell] hlint CamelCase contrib/haskell/src/Hkl/DArray.hs | 14 +++++++------- contrib/haskell/src/Hkl/Engine.hs | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) commit c58d9d3f180b7bb7ba26b09196977041dbf6ea33 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 18:26:27 2022 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars.hs | 3 +- contrib/haskell/src/Hkl/Binoculars/Bidir.hs | 11 ++--- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 5 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 8 ++-- .../src/Hkl/Binoculars/Projections/Angles.hs | 6 +-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 20 ++++---- .../src/Hkl/Binoculars/Projections/QCustom.hs | 54 +++++++++++----------- .../src/Hkl/Binoculars/Projections/QIndex.hs | 6 +-- .../src/Hkl/Binoculars/Projections/QparQper.hs | 6 +-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 6 +-- contrib/haskell/src/Hkl/DArray.hs | 10 ++-- contrib/haskell/src/Hkl/DataSource.hs | 13 +++--- contrib/haskell/src/Hkl/Detector.hs | 1 - contrib/haskell/src/Hkl/Engine.hs | 2 +- contrib/haskell/src/Hkl/Geometry.hs | 2 +- 16 files changed, 75 insertions(+), 84 deletions(-) commit 55543936178b2795d6d86ae2969cd9f9318f0949 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 16:58:02 2022 +0100 [contrib/haskell] use interval in InputRange contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Common.hs | 10 +++--- contrib/haskell/src/Hkl/Binoculars/Config.hs | 42 +++++++++++----------- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- .../src/Hkl/Binoculars/Projections/QIndex.hs | 2 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- contrib/haskell/test/BinocularsSpec.hs | 21 +++++------ 9 files changed, 43 insertions(+), 41 deletions(-) commit 2dc376a837f65352c38487030e39d69400d4b4e2 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 16:01:31 2022 +0100 [contrib/haskell] moved newLimits at the right place contrib/haskell/src/Hkl/Binoculars/Config.hs | 27 +++-------------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 19 ++++++++++++++++ 2 files changed, 22 insertions(+), 24 deletions(-) commit 37498764f97d35e4ce95ca27eeb640643042884a Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:47:00 2022 +0100 [contrib/haskell] no need to export projectionTypeP contrib/haskell/app/Binoculars.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 30 ++++++++++++---------------- 2 files changed, 14 insertions(+), 18 deletions(-) commit c76732ae98ed247e33c7b82fe79f420f57f77d80 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:38:51 2022 +0100 [contrib/haskell] no need of a dedicated inputRangeP method contrib/haskell/src/Hkl/Binoculars/Config.hs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) commit f452e618ee662240367cd0a5bd714949fb861c0b Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:33:18 2022 +0100 no need to export configRangeP contrib/haskell/app/Binoculars.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 10 +++------- contrib/haskell/test/BinocularsSpec.hs | 14 +++++++------- 3 files changed, 11 insertions(+), 15 deletions(-) commit eba330779369b8e80a5196ec2f63f665146e349d Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:25:26 2022 +0100 [contrib/haskell] simplify destination' using the filedemitter instances contrib/haskell/src/Hkl/Binoculars/Config.hs | 60 ++++++---------------- .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 2 +- .../src/Hkl/Binoculars/Projections/QIndex.hs | 2 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 6 files changed, 22 insertions(+), 48 deletions(-) commit 6469389cc79e69ddcbb231bcd5a3804aff785ee6 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:12:25 2022 +0100 [contrib/haskell] Added FieldEmitter this way it will be easyer to deal with GADT. contrib/haskell/src/Hkl/Binoculars/Config.hs | 46 ++++++++++++++++------------ 1 file changed, 26 insertions(+), 20 deletions(-) commit 55d9e82b14e8f8ee8b6936f1bd27a768c1abf9a8 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 15:00:45 2022 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Config.hs | 40 +++++++++++++++------------- 1 file changed, 21 insertions(+), 19 deletions(-) commit 75d5e5f779ad64b5c20d07fabaac21a83db49241 Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 14:50:09 2022 +0100 [contrib/haskell] reorganisation contrib/haskell/src/Hkl/Binoculars/Config.hs | 789 ++++++++++++++------------- 1 file changed, 398 insertions(+), 391 deletions(-) commit 1efdda78834f64bc958a25e65402a488e557511e Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 13:49:51 2022 +0100 [contrib/haskell] Used IsList instance of RLimits and Resolutions this simplify the code of withResolutions and withMaybeLimits contrib/haskell/src/Hkl/Binoculars/Config.hs | 148 ++++++++++++++-------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 36 ++---- 2 files changed, 101 insertions(+), 83 deletions(-) commit 0bfb4b9f01172592ed6141ab09a0d3f5219c68cc Author: Picca Frédéric-Emmanuel Date: Fri Dec 23 11:29:56 2022 +0100 [contrib/haskell] remove the QxQyQz specific code binoculars/hkl-binoculars.c | 70 ----- binoculars/hkl-binoculars.h | 22 -- contrib/haskell/hkl.cabal | 1 - .../src/Hkl/Binoculars/Projections/QCustom.hs | 14 +- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 314 --------------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 7 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 10 - contrib/haskell/test/BinocularsSpec.hs | 3 - 8 files changed, 16 insertions(+), 425 deletions(-) commit 9cea5a30dabf3a540408b5816dc702ebcaeb5a74 Author: Picca Frédéric-Emmanuel Date: Thu Dec 22 16:03:58 2022 +0100 [contrib/haskell] add types for Limits 2D and 3D now test seems to pass contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 130 ++++++++++++++------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 49 ++++---- .../src/Hkl/Binoculars/Projections/Angles.hs | 12 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 12 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 12 +- .../src/Hkl/Binoculars/Projections/QIndex.hs | 12 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 12 +- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 12 +- contrib/haskell/test/BinocularsSpec.hs | 39 ++++--- 10 files changed, 167 insertions(+), 124 deletions(-) commit 9a7eed0f779cc5a4559fa2f8947e768a78177e34 Author: Picca Frédéric-Emmanuel Date: Thu Dec 22 12:03:57 2022 +0100 [contrib/haskell] use over to overwrite conf with the cmd line contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 9 ++++----- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 9 ++++----- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 12 ++++-------- contrib/haskell/src/Hkl/Binoculars/Projections/QIndex.hs | 9 ++++----- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 9 ++++----- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 10 ++++------ 7 files changed, 25 insertions(+), 35 deletions(-) commit d06a127220c7860c4777bb56c20f496f3ecf3e21 Author: Picca Frédéric-Emmanuel Date: Thu Dec 15 17:38:31 2022 +0100 [contrib/haskell] Added dedicated type for the Resolutions - Resolution2 for 2D projections - Resolution3 for 3D projections contrib/haskell/debian/control | 9 + contrib/haskell/hkl.cabal | 4 + contrib/haskell/src/Hkl/Binoculars/Bidir.hs | 176 +++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 187 +++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 34 ++++ .../src/Hkl/Binoculars/Projections/Angles.hs | 29 ++-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 19 +-- .../src/Hkl/Binoculars/Projections/QCustom.hs | 51 ++---- .../src/Hkl/Binoculars/Projections/QIndex.hs | 29 ++-- .../src/Hkl/Binoculars/Projections/QparQper.hs | 27 +-- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 22 ++- contrib/haskell/src/Hkl/Detector.hs | 4 +- contrib/haskell/test/BinocularsSpec.hs | 31 ++-- 13 files changed, 423 insertions(+), 199 deletions(-) commit 3456cd37062387208f6ad82618df81fbb18d8779 Author: Picca Frédéric-Emmanuel Date: Thu Dec 15 15:49:49 2022 +0100 [contrib/haskell] Added all Arbitrary instances in order to test config contrib/haskell/data/test/Makefile | 4 +- contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 56 +++++++++++++++++----- .../src/Hkl/Binoculars/Projections/QCustom.hs | 6 ++- contrib/haskell/src/Hkl/Orphan.hs | 6 +++ contrib/haskell/test/BinocularsSpec.hs | 4 +- 6 files changed, 59 insertions(+), 18 deletions(-) commit d340d8e8fcb974373105d9e127e4636cdbef0de9 Author: Picca Frédéric-Emmanuel Date: Thu Dec 15 11:31:36 2022 +0100 [contrib/haskell] use the right sample configuration for sixsuhvsbs contrib/haskell/data/test/Makefile | 7 ++++--- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) commit 103b44233dcb2e3f77ad4ad9ee8f71c480f5e6b2 Author: Picca Frédéric-Emmanuel Date: Thu Dec 8 16:18:36 2022 +0100 [contrib/haskell] use binding-dsl and deals detectors dataPath Now the detector type automatically decide of the data path. binoculars/hkl-binoculars.h | 2 +- contrib/haskell/debian/control | 8 +- contrib/haskell/hkl.cabal | 16 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 17 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 30 +++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 34 ++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 26 ++- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 3 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 124 +++++++------ contrib/haskell/src/Hkl/C.hs | 16 ++ contrib/haskell/src/Hkl/C.hsc | 166 ------------------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 140 ++++++--------- contrib/haskell/src/Hkl/C/DArray.hsc | 34 ---- contrib/haskell/src/Hkl/C/Detector.hsc | 41 ----- contrib/haskell/src/Hkl/C/Engine.hsc | 81 --------- contrib/haskell/src/Hkl/C/EngineList.hsc | 60 ------- contrib/haskell/src/Hkl/C/Geometry.hsc | 192 --------------------- contrib/haskell/src/Hkl/C/GeometryList.hsc | 120 ------------- contrib/haskell/src/Hkl/C/Hkl.hsc | 147 ++++++++++++++++ contrib/haskell/src/Hkl/C/Lattice.hsc | 102 ----------- contrib/haskell/src/Hkl/C/Sample.hsc | 87 ---------- contrib/haskell/src/Hkl/DArray.hs | 38 ++++ contrib/haskell/src/Hkl/DataSource.hs | 22 ++- contrib/haskell/src/Hkl/Detector.hs | 94 ++++------ contrib/haskell/src/Hkl/Engine.hs | 187 +++++++++++++++++++- contrib/haskell/src/Hkl/Geometry.hs | 188 ++++++++++++++++++++ contrib/haskell/src/Hkl/Lattice.hs | 68 +++++++- contrib/haskell/src/Hkl/Parameter.hs | 91 ++++++++++ contrib/haskell/src/Hkl/Sample.hs | 57 ++++++ contrib/haskell/src/Hkl/Types.hs | 45 +---- contrib/haskell/src/Hkl/Types/Parameter.hsc | 98 ----------- contrib/haskell/test/BinocularsSpec.hs | 11 +- 32 files changed, 1056 insertions(+), 1289 deletions(-) commit 194136ec4da476671821e6c4906e92f23df8fbe3 Author: Picca Frédéric-Emmanuel Date: Thu Dec 8 14:27:03 2022 +0100 [contrib/haskell] TODO default detector contrib/haskell/src/Hkl/Detector.hs | 1 + 1 file changed, 1 insertion(+) commit dbf1571344205fd807cf9518d5dd61fbcae4c5bd Author: Picca Frédéric-Emmanuel Date: Thu Dec 8 14:17:06 2022 +0100 [contrib/haskell] TODO more projections binoculars/hkl-binoculars.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 1d64e05e46960babd661c3ed0960546d77312a50 Author: Picca Frédéric-Emmanuel Date: Thu Dec 8 12:51:10 2022 +0100 [contrib/haskell] Added more attenuator for the sixs sbs scans contrib/haskell/data/test/Makefile | 4 +++- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) commit ecd428a1bfa3f5dee08d3dafcdfee044ba8f255c Author: Picca Frédéric-Emmanuel Date: Thu Dec 8 11:11:33 2022 +0100 [contrib/haskell] Added attenuator_old for the sixs beamline contrib/haskell/data/test/Makefile | 4 +- .../src/Hkl/Binoculars/Projections/QCustom.hs | 93 ++++++++++------------ 2 files changed, 45 insertions(+), 52 deletions(-) commit e175fbee7b50272e641dcbf5cfa6a42a98a25871 Author: Picca Frédéric-Emmanuel Date: Sun Dec 4 11:49:53 2022 +0100 [contrib/haskell] use DataframeQCsutom in QxQyQz remove most of the redondency :) .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 505 ++------------------- contrib/haskell/test/BinocularsSpec.hs | 8 +- 2 files changed, 44 insertions(+), 469 deletions(-) commit c746fedfd8588776ae865209c7511797c89dcee8 Author: Picca Frédéric-Emmanuel Date: Sun Dec 4 11:35:37 2022 +0100 [contrib/haskell] use DataFrameQCustom in QparQper .../src/Hkl/Binoculars/Projections/QparQper.hs | 142 ++++++--------------- contrib/haskell/test/BinocularsSpec.hs | 2 - 2 files changed, 41 insertions(+), 103 deletions(-) commit 1e2df1029962cf0fd8d33c153ea4419c42e8c022 Author: Picca Frédéric-Emmanuel Date: Sun Dec 4 11:22:28 2022 +0100 [contrib/haskell] use DataFrameQCustom in QIndex this simplify a lot the code .../src/Hkl/Binoculars/Projections/QIndex.hs | 164 ++++++--------------- contrib/haskell/test/BinocularsSpec.hs | 2 - 2 files changed, 41 insertions(+), 125 deletions(-) commit 25f57ad727d6ff712a7a21b1ea9a9b1eb28b134f Author: Picca Frédéric-Emmanuel Date: Sat Dec 3 18:49:32 2022 +0100 [contrib/haskell] simplify the angle projection, No need to create a dedicated DataFrame .../src/Hkl/Binoculars/Projections/Angles.hs | 140 ++++++--------------- contrib/haskell/test/BinocularsSpec.hs | 2 - 2 files changed, 41 insertions(+), 101 deletions(-) commit 31045cca5b6662c7c6fc33b5c235a44c889f2c0b Author: Picca Frédéric-Emmanuel Date: Fri Dec 2 19:13:12 2022 +0100 [contrib/haskell] migrate the HklProjection to the QCustom Dataframe .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 300 +++++++++++---------- .../src/Hkl/Binoculars/Projections/QCustom.hs | 1 - contrib/haskell/test/BinocularsSpec.hs | 20 +- 3 files changed, 170 insertions(+), 151 deletions(-) commit e564a71d3734a99bb5d3c2a55e99149863239a93 Author: Picca Frédéric-Emmanuel Date: Fri Dec 2 15:39:19 2022 +0100 [contrib/haskell] use DataSourcePath instead of DataPath .../src/Hkl/Binoculars/Projections/QCustom.hs | 230 ++++++++++----------- 1 file changed, 105 insertions(+), 125 deletions(-) commit 494a33cef9cbaf88f65108da8fa66a7961d5122e Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 17:11:03 2022 +0100 [contrib/haskell] added the SixsSbsUhv inputtype contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_sixs_ruche_qcustom.ini | 4 +- .../data/test/config_sixs_ruche_qcustom_sbsuhv.ini | 44 ++++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 ++ .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 17 +++++++++ .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 16 ++++++++ 7 files changed, 85 insertions(+), 3 deletions(-) commit 3cb910de4a084db7477df8b4718d19cc233bee93 Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 16:20:51 2022 +0100 [binoculars] added the qcustom q_stereo subprojection binoculars/hkl-binoculars.c | 14 ++++++++++++++ binoculars/hkl-binoculars.h | 14 +------------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +++ contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 1 + 4 files changed, 19 insertions(+), 13 deletions(-) commit 0f2c9b3c52a88ecb0540f80bb1c12ccaabfe714b Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 16:08:49 2022 +0100 [binoculars] added the qcustom q_phi_[qx|qy|qz] subprojection binoculars/hkl-binoculars.c | 40 ++++++++++- binoculars/hkl-binoculars.h | 79 +--------------------- .../data/test/config_sixs_ruche_qcustom.ini | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 9 +++ .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 + 5 files changed, 56 insertions(+), 79 deletions(-) commit 7117e8752934f089b31b9618990862f941fabc34 Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 15:43:10 2022 +0100 [contrib/haskell] added qcustom qpar_qper_timestamp subprojection binoculars/hkl-binoculars.c | 15 +++++++++++++++ binoculars/hkl-binoculars.h | 1 + contrib/haskell/data/test/config_sixs_ruche_qcustom.ini | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 7 +++++-- contrib/haskell/src/Hkl/Binoculars/Projections/QCustom.hs | 1 + 5 files changed, 24 insertions(+), 4 deletions(-) commit 6dae686e8ee43416691f01d52dab4bd81f1083f9 Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 15:25:36 2022 +0100 [binoculars] added the qcustom subprojection q_tth_timestamp binoculars/Makefile.am | 2 +- binoculars/hkl-binoculars.c | 47 +++++++++++++++++----- binoculars/hkl-binoculars.h | 10 ++++- .../data/test/config_sixs_ruche_qcustom.ini | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 ++- .../src/Hkl/Binoculars/Projections/QCustom.hs | 3 +- 6 files changed, 56 insertions(+), 15 deletions(-) commit a997cdaa6fd75818d03b3e6376511276ba59ef09 Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 14:30:53 2022 +0100 [contrib/haskell] added the qcustom projection with qxqyqz subprojection the idea is to have a generic projection for all Q familly. binoculars/hkl-binoculars.c | 70 ++ binoculars/hkl-binoculars.h | 25 + contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_sixs_ruche_qcustom.ini | 44 ++ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 18 + .../src/Hkl/Binoculars/Projections/Angles.hs | 1 + .../src/Hkl/Binoculars/Projections/QCustom.hs | 762 +++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 31 + contrib/haskell/src/Hkl/DataSource.hs | 4 + 11 files changed, 962 insertions(+), 1 deletion(-) commit fab334cb673dfc1d2fda8639dd191ff69578c02e Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 10:51:08 2022 +0100 [contrib/haskell] removed useless comment binoculars/hkl-binoculars.h | 11 ----------- 1 file changed, 11 deletions(-) commit 93fd0aec21df9973ee66fdbe356a574969d296be Author: Picca Frédéric-Emmanuel Date: Thu Dec 1 10:47:15 2022 +0100 [contrib/haskell] cabal-debian --upgrade contrib/haskell/debian/control | 3 +++ 1 file changed, 3 insertions(+) commit 6218c8a308c53026730774feb0870af0f0f5ede2 Author: Picca Frédéric-Emmanuel Date: Tue Nov 29 11:41:26 2022 +0100 [hkl] restore the right asymptote resolution Documentation/figures/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 24edf379910a3993e165eba1d9b0167910d237f4 Author: Picca Frédéric-Emmanuel Date: Mon Nov 28 16:26:40 2022 +0100 [contrib/haskell] quickcheck the From/ToJSON parsing of DataSource the idea is to test the config ini files, whcih seems to be broken for dataPath contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 ++ .../src/Hkl/Binoculars/Projections/Angles.hs | 4 ++ .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 7 ++++ .../src/Hkl/Binoculars/Projections/QIndex.hs | 4 ++ .../src/Hkl/Binoculars/Projections/QparQper.hs | 5 +++ .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 4 ++ contrib/haskell/src/Hkl/DataSource.hs | 45 ++++++++++++++++++++++ contrib/haskell/src/Hkl/Detector.hs | 5 +++ contrib/haskell/src/Hkl/H5.hs | 14 ++++++- contrib/haskell/src/Hkl/Lattice.hs | 4 ++ contrib/haskell/test/BinocularsSpec.hs | 16 +++++++- 12 files changed, 112 insertions(+), 2 deletions(-) commit b45e13b890dcb841c019ab4995d3dd0accd0cf26 Author: Picca Frédéric-Emmanuel Date: Fri Nov 25 14:31:17 2022 +0100 [binoculars] fix the QIndex projection contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections/QIndex.hs | 2 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 +++--- 4 files changed, 7 insertions(+), 6 deletions(-) commit 37d4f6ff16c59fe56d8f3fccea50c0be5ce3f660 Author: Picca Frédéric-Emmanuel Date: Fri Nov 25 13:50:07 2022 +0100 [binoculars] added the qindex projection binoculars/hkl-binoculars.c | 66 +++- binoculars/hkl-binoculars.h | 22 ++ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 24 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 1 + .../src/Hkl/Binoculars/Projections/QIndex.hs | 375 +++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 29 ++ contrib/haskell/src/Hkl/DataSource.hs | 14 + contrib/haskell/src/Hkl/Types.hs | 6 + 10 files changed, 523 insertions(+), 19 deletions(-) commit 7298d7db4aa42c05cc70c098f851aae6d4d4c372 Author: Picca Frédéric-Emmanuel Date: Thu Nov 24 15:07:55 2022 +0100 [binoculars] rework the angles projection which provides delta_lab, gamma_lab and tth binoculars/hkl-binoculars.c | 14 +++++++++----- contrib/haskell/data/test/Makefile | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) commit a074e980275284080f1ecf6dc725f307479720f8 Author: Picca Frédéric-Emmanuel Date: Thu Nov 17 15:25:23 2022 +0100 [contrib/haskell] better error message when parsing the ProjectionType contrib/haskell/src/Hkl/Binoculars/Config.hs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) commit 5fbc045a447e5acb31520a8e5297bba7ad5bd3ad Author: Picca Frédéric-Emmanuel Date: Thu Nov 17 14:21:56 2022 +0100 [contrib/haskell] overload the wavelength from the config file contrib/haskell/data/test/Makefile | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 + .../src/Hkl/Binoculars/Projections/Angles.hs | 2 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 3 +- .../src/Hkl/Binoculars/Projections/QparQper.hs | 6 +- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 261 +++++++++++---------- 6 files changed, 148 insertions(+), 129 deletions(-) commit 0c14baf64c4362cc50f8c19271a53b97189bfa6e Author: Picca Frédéric-Emmanuel Date: Fri Sep 30 15:03:26 2022 +0200 [contrib/haskell] Added s70 to the fluscan unh geometry contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) commit de2d2198f7d7d204f6ed366a4735f7a2d6d35ac0 Author: Picca Frédéric-Emmanuel Date: Fri Sep 30 14:10:31 2022 +0200 [contrib/haskell] fix test contrib/haskell/test/BinocularsSpec.hs | 1 + 1 file changed, 1 insertion(+) commit 1d6aed28c88aa74eae71a68b68064920254c67c3 Author: Picca Frédéric-Emmanuel Date: Thu Sep 22 13:48:56 2022 +0200 [contrib/haskell] Added "max image filter" to Angles, Hkl and QparQper contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 10 +++++++--- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 8 ++++++-- .../haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 8 ++++++-- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 15 +++------------ contrib/haskell/src/Hkl/Image.hs | 10 +++++++++- 5 files changed, 31 insertions(+), 20 deletions(-) commit 482a67689f3e7babfe3658aac3fbbf0dc52d0a63 Author: Picca Frédéric-Emmanuel Date: Fri Sep 16 17:07:02 2022 +0200 [contrib/haskell] worked with yves to filter images on the image sum intensity This is a work in progress contrib/haskell/data/test/Makefile | 3 +- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 27 +++++++-- contrib/haskell/src/Hkl/DataSource.hs | 16 ++++-- contrib/haskell/src/Hkl/Image.hs | 65 +++++++++++++++++++++- 4 files changed, 99 insertions(+), 12 deletions(-) commit 11cc88877cdf8f2dd2a72f23e684338a1364a94a Author: Picca Frédéric-Emmanuel Date: Tue Sep 6 17:32:32 2022 +0200 [contrib/haskell] use Type instead of * contrib/haskell/src/Hkl/DataSource.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 74fe73b3f446ea2da1e225954b97f2927a0946d0 Author: Picca Frédéric-Emmanuel Date: Tue Sep 6 16:56:47 2022 +0200 [binoculars] fix for the mars diffractometer contrib/haskell/data/test/Makefile | 16 ++++++++-------- contrib/haskell/src/Hkl/DataSource.hs | 4 +--- 2 files changed, 9 insertions(+), 11 deletions(-) commit bb53ec977a9393be7ec454390f9e2d3d1abe1b98 Author: Picca Frédéric-Emmanuel Date: Tue Sep 6 13:53:31 2022 +0200 link explicitely with hdf5-serial configure.ac | 2 +- hkl-binoculars.pc.in | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) commit 65fbe2e119dc3ab0918086885dbf99f5992c5f02 Author: Picca Frédéric-Emmanuel Date: Tue Jul 5 18:32:24 2022 +0200 [contrib/haskell] DataSource instance for DataFrameQxQyQz .../haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 20 ++++++++++++++++++++ contrib/haskell/src/Hkl/DataSource.hs | 10 ++++++++++ 2 files changed, 30 insertions(+) commit ee8bf1c6cdca2257db9a3bce92d7ef3ecfb3c21c Author: Picca Frédéric-Emmanuel Date: Tue Jul 5 14:29:04 2022 +0200 [contrib/haskell] use the generic withDataSourceP for dataframes .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 129 ++++++++++----------- contrib/haskell/src/Hkl/DataSource.hs | 17 --- 2 files changed, 64 insertions(+), 82 deletions(-) commit f8879f094b7058558dbdea0de50829cc0a67897f Author: Picca Frédéric-Emmanuel Date: Tue Jul 5 14:28:21 2022 +0200 [contrib/haskell] removed useless method contrib/haskell/src/Hkl/H5.hs | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) commit 0c2ed22a6d1c0f2fa44f42cdb0bc64bb0b6020ad Author: Picca Frédéric-Emmanuel Date: Mon Jul 4 18:00:08 2022 +0200 [contrib/haskell] instance Is1DStreamable (DataSourceAcq Image) Image .../src/Hkl/Binoculars/Projections/Angles.hs | 7 +++-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 7 +++-- .../src/Hkl/Binoculars/Projections/QparQper.hs | 7 +++-- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 7 +++-- contrib/haskell/src/Hkl/DataSource.hs | 35 +++++++++++++++------- contrib/haskell/src/Hkl/H5.hs | 19 ++++++------ contrib/haskell/src/Hkl/Image.hs | 20 ++++++++----- 7 files changed, 61 insertions(+), 41 deletions(-) commit 6715d59891ac6a6d757c77c5ff43daf9eed337b1 Author: Picca Frédéric-Emmanuel Date: Fri Jul 1 12:16:16 2022 +0200 [contrib/haskell] put the Detector in the DataSourcePath Image contrib/haskell/src/Hkl/Binoculars/Projections.hs | 2 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 18 +++--- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 13 ++-- .../src/Hkl/Binoculars/Projections/QparQper.hs | 16 ++--- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 73 +++++++++++++--------- contrib/haskell/src/Hkl/DataSource.hs | 10 +-- contrib/haskell/src/Hkl/Detector.hs | 19 ++++++ 7 files changed, 96 insertions(+), 55 deletions(-) commit 651364a05720250a33d9e584c2dcf21d79330e0f Author: Picca Frédéric-Emmanuel Date: Thu Jun 30 12:52:57 2022 +0200 [contrib/haskell] clean contrib/haskell/src/Hkl/DataSource.hs | 58 +++++++++++++---------------------- 1 file changed, 22 insertions(+), 36 deletions(-) commit 097e2970338cdf19fbe41554fcb064e3e1dcd3fc Author: Picca Frédéric-Emmanuel Date: Thu Jun 30 12:41:38 2022 +0200 [contrib/haskell] create Is1DStreamable instance for attenuation and geometry contrib/haskell/src/Hkl/DataSource.hs | 160 ++++++++++++++++------------------ 1 file changed, 76 insertions(+), 84 deletions(-) commit 76ed0d138e2e917b3fc01176a5d987b0da8ad307 Author: Picca Frédéric-Emmanuel Date: Wed Jun 29 10:17:03 2022 +0200 [contrib/haskell] added the max attenuation it is possible on sixs to skip images if the attenuation is strictly higher than the attenuation_max parameter of the config. contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 ++ .../src/Hkl/Binoculars/Projections/Angles.hs | 11 +++++-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +++- .../src/Hkl/Binoculars/Projections/QparQper.hs | 11 +++++-- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 38 ++++++++++++---------- contrib/haskell/src/Hkl/DataSource.hs | 19 +++++++---- contrib/haskell/test/BinocularsSpec.hs | 3 +- 7 files changed, 62 insertions(+), 29 deletions(-) commit 929d883f2a18b090100d48002fc2b5e034c1341f Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 16:14:05 2022 +0200 [contrib/haskell] switch to DataSourcePath'Image contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 77 +++++----------------- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 36 +++++----- contrib/haskell/src/Hkl/DataSource.hs | 30 ++++++++- 3 files changed, 62 insertions(+), 81 deletions(-) commit 50d9c18746f0dfbeac0aca025f264727a0c3229e Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 15:50:41 2022 +0200 [contrib/haskell] move withGeometryPathP into DataSource contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 61 ---------------------------- contrib/haskell/src/Hkl/DataSource.hs | 63 ++++++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 63 deletions(-) commit 080a879819d4160f94ae4059b87580e65f308d45 Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 15:46:28 2022 +0200 [contrib/haskell] withDataSourceP for the Attenuation contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 21 +--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 26 +---- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 108 ++++++++++----------- contrib/haskell/src/Hkl/DataSource.hs | 71 +++++++++++++- 4 files changed, 126 insertions(+), 100 deletions(-) commit a2894d0d729b5593fe9ce7f6ed127078a435923f Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 14:43:29 2022 +0200 [contrib/haskell] switch to DataSourcePath Geometry contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 111 ++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 42 -------- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 38 +++---- contrib/haskell/src/Hkl/DataSource.hs | 17 ++-- 4 files changed, 82 insertions(+), 126 deletions(-) commit 1bda8e27530b0fe919e2bafb9a9fcfa10e44a0e1 Author: Picca Frédéric-Emmanuel Date: Fri Jun 24 16:23:07 2022 +0200 [contrib/haskell] create a DataSource for the geometry contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 7 -- contrib/haskell/src/Hkl/DataSource.hs | 113 +++++++++++++++++++++++++--- 2 files changed, 104 insertions(+), 16 deletions(-) commit 6c6e7656f31a3dc47652f45f830a50ac06cc374d Author: Picca Frédéric-Emmanuel Date: Fri Jun 24 11:15:07 2022 +0200 [contrib/haskell] use DataSourcePath for all axes contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 6 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 38 +++--- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 144 ++++++++++----------- contrib/haskell/src/Hkl/DataSource.hs | 3 +- 4 files changed, 96 insertions(+), 95 deletions(-) commit e099e4872715e5aa9c0edeabfade756774480294 Author: Picca Frédéric-Emmanuel Date: Wed Jun 22 13:25:46 2022 +0200 [contrib/haskell] more withDataSourceP contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 14 +-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 28 +++--- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 110 ++++++++++----------- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 44 ++++----- contrib/haskell/src/Hkl/DataSource.hs | 71 +++++++++---- 5 files changed, 152 insertions(+), 115 deletions(-) commit a4452f2cccf391fd9d947b29cf32b13048ec8919 Author: Picca Frédéric-Emmanuel Date: Tue Jun 21 16:09:42 2022 +0200 [contrib/haskell] more extract0DStreamValue contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 ++++---- contrib/haskell/src/Hkl/DataSource.hs | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) commit 4284d48705a934e51f9e28ea65281092e334194d Author: Picca Frédéric-Emmanuel Date: Tue Jun 21 15:35:30 2022 +0200 [contrib/haskell] more DataPathDegree contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 12 ++++++------ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 14 +++++++------- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 12 ++++++------ contrib/haskell/src/Hkl/DataSource.hs | 13 ++++++++++++- 4 files changed, 31 insertions(+), 20 deletions(-) commit 55c2eeafcf1bd96557f2bfedacd53b834a530717 Author: Picca Frédéric-Emmanuel Date: Mon Jun 20 18:14:02 2022 +0200 [contrib/haskell] added class Is0DStreamable contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 12 ++++++------ contrib/haskell/src/Hkl/DataSource.hs | 20 ++++++++++++++++---- 2 files changed, 22 insertions(+), 10 deletions(-) commit 3608e36c4a99f0fa6c536b02b2f6a5cc0cc98fde Author: Picca Frédéric-Emmanuel Date: Mon Jun 20 09:37:39 2022 +0200 [contrib/haskell] start to implement the DataSourcePath contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 4 ++- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 3 ++- contrib/haskell/src/Hkl/DataSource.hs | 31 +++++++++++++++++----- contrib/haskell/src/Hkl/Pipes.hs | 5 ---- 5 files changed, 30 insertions(+), 15 deletions(-) commit 91a27ea801f1f68e57f8322d1e9dbd1a00281e83 Author: Picca Frédéric-Emmanuel Date: Thu Jun 9 12:19:55 2022 +0200 [contrib/haskell] use the right amount of axes for GeometryPathMedV contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 7 ++- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 56 +++++++++++----------- 3 files changed, 36 insertions(+), 31 deletions(-) commit 22102fe3c6b39d267782e6e676bece986df8c61c Author: Picca Frédéric-Emmanuel Date: Thu Jun 9 11:05:03 2022 +0200 [haskell/contrib] use the right vector length when setting geometry axes A geometry expect the right number of axes, the given axes lenght should be the length of the given axes values and not the geometry expected one. This way a list with the wrong length could be used for computation. The flymedV computation was wrong due to the missing beta axis. contrib/haskell/src/Hkl/C/Geometry.hsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6b13890db7fe52639f3d1b896783201aaf7ecddf Author: Picca Frédéric-Emmanuel Date: Thu Jun 9 11:02:16 2022 +0200 [contrib/haskell] added MedV (simpler to understand for users) hkl/hkl-engine-soleil-sixs-med.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e0ee8a5b7661c42cf7373b4a089f505e525c6e4e Author: Picca Frédéric-Emmanuel Date: Thu Jun 9 10:04:17 2022 +0200 [contrib/haskell] added ssd tests config for flymedv and cristal beamlines contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_ssd_cristal_qparqper.ini | 27 ++++++++++++++ .../haskell/data/test/config_ssd_sixs_flymedv.txt | 41 ++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) commit 7c08ad26a9c5d3b55fe74530f6ef38cd8e3fde84 Author: Picca Frédéric-Emmanuel Date: Fri Jun 17 16:17:54 2022 +0200 [contrib.haskell] Added the DataSource module the ides is to prepare an easyer configuration for the data sources contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 32 +----- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 2 +- contrib/haskell/src/Hkl/DataSource.hs | 118 +++++++++++++++++++++ contrib/haskell/src/Hkl/H5.hs | 26 +---- contrib/haskell/src/Hkl/Orphan.hs | 14 +++ contrib/haskell/src/Hkl/Pipes.hs | 5 + 7 files changed, 144 insertions(+), 54 deletions(-) commit b2b2f1e89c8fd3c153a096191e38b1389a70c0cb Author: Picca Frédéric-Emmanuel Date: Fri Jun 17 10:54:39 2022 +0200 [contrib/haskell] use a newtype for the Attenuation contrib/haskell/src/Hkl/Binoculars/Common.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 ++++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 9 ++++++--- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 8 ++++---- 7 files changed, 25 insertions(+), 17 deletions(-) commit ad0cffc67911c73792d10a7530424ddd616178dd Author: Picca Frédéric-Emmanuel Date: Thu Jun 16 17:31:28 2022 +0200 [contrib/haskell] new Is1DStreamable instance for geometry axes contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) commit 616f91c63447a0d3f087649a50d7362970fd22e0 Author: Picca Frédéric-Emmanuel Date: Thu Jun 16 16:32:59 2022 +0200 [contrib/haskell] no more getValueWithUnit contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 38 +++++++++++++++------- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 14 ++++---- contrib/haskell/src/Hkl/H5.hs | 5 ++- 3 files changed, 36 insertions(+), 21 deletions(-) commit f7e929269fde64cb1305433bf4c64c2ce2f856ff Author: Picca Frédéric-Emmanuel Date: Thu Jun 16 15:38:45 2022 +0200 [contrib]haskell] rewrite the getValueWithUnit to look like extract1DStreamValue contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 14 +++++++------- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) commit 31ccbbc21e8f1cb0230e958a858d0a9f5500d7c4 Author: Picca Frédéric-Emmanuel Date: Thu Jun 16 15:31:16 2022 +0200 [contrib/haskell] start to implement a Streamable class the ides is to use this class in order to create new streamble objects. contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 28 ++++++++++++++-------------- contrib/haskell/src/Hkl/H5.hs | 11 +++++++++++ 2 files changed, 25 insertions(+), 14 deletions(-) commit 1ec046b24ddce4f256a39a8d601378b7ebf7839c Author: Picca Frédéric-Emmanuel Date: Thu Jun 2 17:17:24 2022 +0200 [contrib/haskell] Added the {limits} in the output name contrib/haskell/src/Hkl/Binoculars/Config.hs | 18 +++++++++++++----- .../haskell/src/Hkl/Binoculars/Projections/Angles.hs | 7 ++++--- contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 7 ++++--- .../haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 7 ++++--- .../haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 7 ++++--- 5 files changed, 29 insertions(+), 17 deletions(-) commit 0be5985a8aa893ab9aaffbfb8dc08fce0e4a2d79 Author: Picca Frédéric-Emmanuel Date: Mon May 23 16:43:01 2022 +0200 [binoculars] fix the angles computation and TODO binoculars/hkl-binoculars.c | 18 ++-------- contrib/haskell/data/test/Makefile | 2 ++ .../haskell/data/test/config_sixs_ruche_angles.ini | 40 ++++++++++++++++++++++ contrib/haskell/doc/TODO.org | 2 ++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 ++ 5 files changed, 48 insertions(+), 16 deletions(-) commit 95f2e3c67bebe80261b74cf78fc344ac17d7468b Author: Picca Frédéric-Emmanuel Date: Fri May 20 09:31:27 2022 +0200 indentation binoculars/hkl-binoculars-cnpy.c | 36 ++++++++++++++++---------------- binoculars/hkl-binoculars-detectors-2d.c | 18 ++++++++-------- binoculars/hkl-binoculars.c | 16 +++++++------- binoculars/hkl-binoculars.h | 8 +++---- 4 files changed, 39 insertions(+), 39 deletions(-) commit 4ec73bb50506bb8688d7aa8a76bb67eb0b1f8754 Author: Picca Frédéric-Emmanuel Date: Fri May 20 09:27:30 2022 +0200 [build] indent also the binoculars part scripts/clean-all | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 68f3aa9bcc00d9f9871891fe438d5218217e5b0d Author: Picca Frédéric-Emmanuel Date: Fri May 20 09:17:00 2022 +0200 [contrib/haskell] test on sixs contrib/haskell/data/test/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 506fa6e1e56ff1d86a25edcfe8375303112da164 Author: Picca Frédéric-Emmanuel Date: Mon May 16 16:26:08 2022 +0200 [binoculars] removed useless doc binoculars/hkl-binoculars.h | 45 --------------------------------------------- 1 file changed, 45 deletions(-) commit c6d744f6a40181d63d9e11f8e4e680b5094185fd Author: Picca Frédéric-Emmanuel Date: Mon May 16 16:24:54 2022 +0200 [contrib/haskell] Added the angle2 projection contrib/haskell/src/Hkl/Binoculars/Config.hs | 12 +++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 8 +++++++- .../src/Hkl/Binoculars/Projections/Angles.hs | 24 ++++++++++++++++------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 3 +++ 4 files changed, 40 insertions(+), 7 deletions(-) commit bbf043c98bc605f98959f8252a081d0d648b1c4c Author: Picca Frédéric-Emmanuel Date: Mon May 16 14:03:50 2022 +0200 [binoculars] select the sample axis for the angle projection Now we can use the same method for zaxis and med diffractometers binoculars/hkl-binoculars.c | 12 ++++++------ binoculars/hkl-binoculars.h | 3 ++- contrib/haskell/src/Hkl/Binoculars/Projections/Angles.hs | 8 +++++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 1 + tests/hkl-binoculars-t.c | 3 ++- 5 files changed, 16 insertions(+), 11 deletions(-) commit 97bc72fce951bdf39a8764c85089c89f987b8120 Author: Picca Frédéric-Emmanuel Date: Fri May 13 11:57:03 2022 +0200 pre-release gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- tests/hkl-binoculars-t.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit d19272f03458debe095c57f0eb1f32b6f9b77829 Author: Picca Frédéric-Emmanuel Date: Thu May 12 15:09:25 2022 +0200 [contrib/haskell] added the angles projection contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +- .../src/Hkl/Binoculars/Projections/Angles.hs | 335 +++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 10 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 29 +- 5 files changed, 376 insertions(+), 5 deletions(-) commit b1de7e3d1f993f603270f6e6598e221dcc7ef4dd Author: Picca Frédéric-Emmanuel Date: Thu May 12 14:41:56 2022 +0200 [binoculars] added the first angles projection binoculars/hkl-binoculars.c | 74 +++++++++++++++++++++++++++++++++- binoculars/hkl-binoculars.h | 98 ++++++++++----------------------------------- tests/hkl-binoculars-t.c | 78 +++++++++++++++++++++++++++++++++++- 3 files changed, 171 insertions(+), 79 deletions(-) commit a10498f5056bd90fc304ab746b36852fa02d8efb Author: Picca Frédéric-Emmanuel Date: Wed May 11 13:22:32 2022 +0200 [binoculars] added all the python code of projections the next step consist in the implementation of these projections. binoculars/hkl-binoculars.h | 257 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) commit 26d65ce915eeabe293efa5e2fa05bd702161f2d9 Author: Picca Frédéric-Emmanuel Date: Mon May 9 16:30:36 2022 +0200 [binoculars] added unit test for qparqper and qxqyqz projections binoculars/hkl-binoculars.h | 4 +- tests/hkl-binoculars-t.c | 170 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 165 insertions(+), 9 deletions(-) commit 6ad17b1bb770b277a3b77d2679f705d9d765d425 Author: Picca Frédéric-Emmanuel Date: Mon May 9 14:19:33 2022 +0200 [binoculars) remove useless code binoculars/hkl-binoculars.c | 5 ----- 1 file changed, 5 deletions(-) commit 19b1418ea6a776ed38e70ee68c2598df731d0d10 Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 18:07:19 2022 +0200 [binoculars] remove debug info binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 35467b436f60b1babc311699942ca48c3cc10db7 Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 18:03:27 2022 +0200 [hkl] -f analyser Documentation/figures/sirius.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit bd5491f7f070cd7a3f82e040f5e5e0553c6d46c1 Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 17:56:45 2022 +0200 [hkl] -fanalyser binoculars/hkl-binoculars-detectors-2d.c | 39 +++++++++++--------------------- 1 file changed, 13 insertions(+), 26 deletions(-) commit 1352b4e5e9f0d3847775368f0a7e3b54b5011cad Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 17:43:44 2022 +0200 [hkl] -fanalyser ... binoculars/hkl-binoculars-cnpy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b7c2914dcac2030a074a1b91686c9a4b562e66b0 Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 17:37:14 2022 +0200 [hkl] more -fanalyser gui/hkl-gui.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 408512d130cec8aa8544a6cfa24ff69731fcb78a Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 17:23:25 2022 +0200 [hkl] a few more -fanalyser hkl/api2/hkl2.c | 13 ++++++++++--- hkl/hkl-trajectory.c | 1 - 2 files changed, 10 insertions(+), 4 deletions(-) commit d45eb52e94da9a7f078e59d329b85e89d13fa5bc Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 16:29:00 2022 +0200 [hkl] more -fanalyzer hkl/hkl-interval.c | 6 +----- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-types.c | 48 ++++++++++++++++---------------------------- 3 files changed, 19 insertions(+), 37 deletions(-) commit 52d0a86ab446a6b593b0c216f756048906957569 Author: Picca Frédéric-Emmanuel Date: Fri Apr 22 11:10:54 2022 +0200 [hkl] remove the HKL_MALLOC macro and use directly g_new from glib binoculars/hkl-binoculars.c | 80 +++++++++++++++-------------------- hkl/hkl-axis.c | 12 +++--- hkl/hkl-binding.c | 10 ++--- hkl/hkl-detector.c | 10 ++--- hkl/hkl-engine-petra3-p08-lisa.c | 4 +- hkl/hkl-geometry.c | 24 ++++------- hkl/hkl-interval.c | 4 +- hkl/hkl-lattice.c | 6 +-- hkl/hkl-macros-private.h | 3 -- hkl/hkl-matrix.c | 9 ++-- hkl/hkl-parameter-private.h | 4 +- hkl/hkl-parameter.c | 6 +-- hkl/hkl-pseudoaxis-auto.c | 4 +- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +-- hkl/hkl-pseudoaxis-common-hkl.c | 6 +-- hkl/hkl-pseudoaxis-common-psi.c | 8 ++-- hkl/hkl-pseudoaxis-common-q.c | 18 +++----- hkl/hkl-pseudoaxis-common-readonly.c | 13 +++--- hkl/hkl-pseudoaxis-common-tth.c | 6 +-- hkl/hkl-pseudoaxis-private.h | 20 ++++----- hkl/hkl-quaternion.c | 7 ++- hkl/hkl-sample.c | 16 ++----- hkl/hkl-source.c | 4 +- hkl/hkl-trajectory.c | 6 +-- hkl/hkl-unit.c | 4 +- hkl/hkl-vector.c | 8 ++-- 26 files changed, 121 insertions(+), 177 deletions(-) commit fea096dd9b85446c9f26c0efa967f7749b20fc97 Author: Picca Frédéric-Emmanuel Date: Thu Apr 21 16:18:12 2022 +0200 [hkl] -fanalyser binoculars/hkl-binoculars-private.h | 6 - binoculars/hkl-binoculars.c | 481 ++++++++++++++-------------------- hkl/hkl-engine-soleil-sixs-med.c | 6 +- hkl/hkl-pseudoaxis-common-eulerians.c | 35 ++- hkl/hkl-pseudoaxis-common-hkl.c | 4 +- hkl/hkl-pseudoaxis-private.h | 18 +- tests/hkl-binoculars-t.c | 2 +- 7 files changed, 240 insertions(+), 312 deletions(-) commit 1519c7bbab9c94d5e75c87ec1b07191143c67eb4 Author: Picca Frédéric-Emmanuel Date: Wed Apr 13 11:38:37 2022 +0200 [binoculars] remove useless HklBinocularsSpaceType binoculars/hkl-binoculars-private.h | 6 ------ 1 file changed, 6 deletions(-) commit 8e79b60ad4f28760f1e06581cc1494bb5d6b8a4e Author: Picca Frédéric-Emmanuel Date: Wed Apr 13 11:08:37 2022 +0200 [binoculars] remove useless inline method empty_cube binoculars/hkl-binoculars.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) commit 046581256d05d930fe537b79bdb3dfd06e181bb1 Author: Picca Frédéric-Emmanuel Date: Wed Apr 13 10:54:48 2022 +0200 [binoculars] remove a bunch of analyzer warnings binoculars/hkl-binoculars.c | 48 +++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 21 deletions(-) commit d4625fd4360b1c8d6b9837f3eeb8133c3a8d1e93 Author: Picca Frédéric-Emmanuel Date: Mon Apr 11 17:59:28 2022 +0200 [binoculars] Added the limits in the test tests/hkl-binoculars-t.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 3f07be2b477c21e241d191b915e83543f75370e3 Author: Picca Frédéric-Emmanuel Date: Mon Apr 11 15:26:39 2022 +0200 [test] Added the mask in the projection. tests/hkl-binoculars-t.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 7585142c26ee77aac069ad6d4c0de2ec6a75eef0 Author: Picca Frédéric-Emmanuel Date: Mon Apr 11 15:16:28 2022 +0200 [tests] added unit test for the projection we are testing the hkl projection of 10 images for each detector. binoculars/hkl-binoculars-detectors-2d.c | 32 +++++++++++++-- binoculars/hkl-binoculars-private.h | 6 +++ binoculars/hkl-binoculars.c | 26 +++++++----- binoculars/hkl-binoculars.h | 3 ++ tests/hkl-binoculars-t.c | 69 +++++++++++++++++++++++++++++++- 5 files changed, 120 insertions(+), 16 deletions(-) commit b38fecec7842d2ca04015c6f20649b45736ba2fd Author: Picca Frédéric-Emmanuel Date: Tue Apr 5 15:25:16 2022 +0200 [binoculars] wip HklBinocularsCubeType binoculars/hkl-binoculars-private.h | 8 ++ binoculars/hkl-binoculars.c | 273 +++++++++++++++++++++++++----------- contrib/haskell/data/test/Makefile | 1 + hkl/hkl-pseudoaxis-private.h | 6 +- 4 files changed, 200 insertions(+), 88 deletions(-) commit e0dd09cbcec2bb04f69d34c0e684a2caa22cdf21 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 10:08:56 2022 +0200 [contrib/haskell] simplify the test code contrib/haskell/test/BinocularsSpec.hs | 69 ++++++++++++++++------------------ 1 file changed, 33 insertions(+), 36 deletions(-) commit f1138bba4a9cb854a5e787b525b101033700a118 Author: Picca Frédéric-Emmanuel Date: Mon Apr 4 10:37:52 2022 +0200 [contrib/haskell] Added a test file whcih seems to failed on sixs contrib/haskell/data/test/Makefile | 3 +- .../test/config_ord05133_ruche_limit_18KeV.ini | 35 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) commit 20c60bbfba2642cefc658e6a961cc6802e9d01fc Author: Picca Frédéric-Emmanuel Date: Sun Apr 3 12:14:13 2022 +0200 [hkl] remove a bunch of analyzer warnings hkl/hkl-geometry.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) commit b195dc4754135c5a12a517b168b3241aa314a5a7 Author: Picca Frédéric-Emmanuel Date: Wed Mar 30 17:43:29 2022 +0200 [contrib/haskell] fix the test suite. .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 3 +- contrib/haskell/test/BinocularsSpec.hs | 57 +++++++++++----------- 2 files changed, 31 insertions(+), 29 deletions(-) commit c786232fe91942174eb8530ffa9fb524edcc2f41 Author: Picca Frédéric-Emmanuel Date: Wed Mar 30 13:36:57 2022 +0200 [binoculars] remove a bunch of warnings binoculars/hkl-binoculars-cnpy.c | 8 ++++++-- binoculars/hkl-binoculars-hdf5.c | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) commit c9c0df6f2f56cccc33e8989bfca67309a1b6710d Author: Picca Frédéric-Emmanuel Date: Wed Mar 30 11:48:04 2022 +0200 [hkl] modernize the gui code (based on deprecated messages) gui/Makefile.am | 1 + gui/hkl-gui-3d.c | 65 +++++++++++++++---------------- gui/hkl-gui-3d.h | 4 +- gui/hkl-gui.c | 116 +++++++++++++++++++++++++++---------------------------- 4 files changed, 91 insertions(+), 95 deletions(-) commit 23fbff2cea53c7c53c2d258163ecb6a51e5e4160 Author: Picca Frédéric-Emmanuel Date: Wed Mar 30 11:28:45 2022 +0200 [hkl] remove another bunch of warning and deprecated constructions binoculars/hkl-binoculars-cnpy.c | 7 +++- gui/hkl-gui-pseudoaxes.c | 33 ++++++++--------- gui/hkl-gui-pseudoaxes.h | 5 ++- hkl/hkl-lattice.c | 80 ++++++++++++++++++++-------------------- hkl/hkl-sample.c | 32 ++++++++-------- 5 files changed, 79 insertions(+), 78 deletions(-) commit 1eb366a443ed3dd7950fca1cfe4f6ecc12a42f64 Author: Picca Frédéric-Emmanuel Date: Wed Mar 30 10:38:09 2022 +0200 [hkl] Added an IGNORE macro and use it this macros allow to remove a warning when you do not check the return value of a function with the warn_unused_result attribute. hkl/hkl-geometry.c | 8 ++++---- hkl/hkl-macros-private.h | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) commit 4b432b5febf91a4b3a7d5704235a3b4004de4817 Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 14:59:09 2022 +0200 fix compilation for ica hkl/pom.xml | 1 + 1 file changed, 1 insertion(+) commit aa4e585760d08686952b04c0cb94b825ca5be679 Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 14:56:39 2022 +0200 use hkl_assert instead of g_assert in order to avoid warning hkl/hkl-axis.c | 6 +++--- hkl/hkl-binding.c | 4 ++-- hkl/hkl-geometry.c | 10 +++++----- hkl/hkl-lattice.c | 12 ++++++------ hkl/hkl-pseudoaxis.c | 16 ++++++++-------- hkl/hkl-sample.c | 14 +++++++------- 6 files changed, 31 insertions(+), 31 deletions(-) commit 999ebe0277e76bff2149690d6e12004bebc6d6f8 Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 15:53:31 2022 +0100 [hkl] a few warnings hkl/api2/hkl2.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) commit dc26e6e342d63159aacc0526774e25b5700db6db Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 15:01:07 2022 +0100 [hkl] sort the ccan headers Makefile.am | 2 ++ hkl/ccan/Makefile.am | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) commit 2096f9f0bddbfee729fdca7cc53b85ec9cbf6224 Author: Picca Frédéric-Emmanuel Date: Tue Mar 22 18:31:56 2022 +0100 [hkl] Added the GL library check configure.ac | 3 ++- gui/Makefile.am | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) commit c05c40a24630761382d7112a96148812eaa23789 Author: Picca Frédéric-Emmanuel Date: Tue Mar 22 17:37:37 2022 +0100 pre-release INSTALL | 6 +-- hkl/hkl-engine-k4c.c | 110 +++++++++++++++++++++++++------------------------- tests/hkl-lattice-t.c | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) commit a1393f331465bfb1648715846e7429d96ad50ada Author: Picca Frédéric-Emmanuel Date: Tue Mar 22 17:35:42 2022 +0100 [hkl] simplify the release Makefile.am | 6 ------ 1 file changed, 6 deletions(-) commit f729456eb7f01b69cf2d7fc33f1862c6c5f55206 Author: Picca Frédéric-Emmanuel Date: Mon Mar 14 11:15:17 2022 +0100 [contrib/haskell] cabal-debian contrib/haskell/debian/control | 8 ++++++++ 1 file changed, 8 insertions(+) commit 8afa1f84de7d3f003ec00f9356eb0339e3899b8d Author: Picca Frédéric-Emmanuel Date: Fri Mar 11 16:21:41 2022 +0100 [contrib/haskell] implement also DataPath for QparQper .../src/Hkl/Binoculars/Projections/QparQper.hs | 35 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) commit 6e2ae3c9bc55b08ee341d10258378fcfa292a9fc Author: Picca Frédéric-Emmanuel Date: Fri Mar 11 14:06:35 2022 +0100 [contrib/haskell] implemente the dataPath for the Hkl projection contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 +- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 88 ++++++++++----- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 15 +-- contrib/haskell/src/Hkl/C.hsc | 14 +-- contrib/haskell/src/Hkl/C/Lattice.hsc | 19 ++-- contrib/haskell/src/Hkl/C/Sample.hsc | 4 +- contrib/haskell/src/Hkl/Lattice.hs | 120 ++++++++++----------- contrib/haskell/src/Hkl/Types.hs | 15 ++- contrib/haskell/src/Hkl/Types/Parameter.hsc | 9 +- contrib/haskell/test/BinocularsSpec.hs | 64 +++++------ 10 files changed, 201 insertions(+), 155 deletions(-) commit cdbf9c400fec8b5bd59649cbc156351aff65291f Author: Picca Frédéric-Emmanuel Date: Fri Mar 11 09:58:37 2022 +0100 [contrib/haskell] Use DeviceAnyClass contrib/haskell/src/Hkl/Binoculars/Projections.hs | 16 ++++------------ contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 6 ++---- contrib/haskell/src/Hkl/H5.hs | 6 ++---- 3 files changed, 8 insertions(+), 20 deletions(-) commit ab3b6f890c0bdd797f4f46d85db749a3edb94ae2 Author: Picca Frédéric-Emmanuel Date: Fri Mar 11 09:51:22 2022 +0100 [contrib/haskell] implement the de-serialize part contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 5d1920ddbb583e5e1a4e7b42eb39d06844dbfdad Author: Picca Frédéric-Emmanuel Date: Thu Mar 10 17:24:54 2022 +0100 [contrib/haskell] implement the JSON serialisation I need to do the decoding part. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 ++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 19 +++++++-- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 48 ++++++++++++++++++---- contrib/haskell/src/Hkl/H5.hs | 20 ++++++++- 5 files changed, 83 insertions(+), 13 deletions(-) commit 9c6d49dbf6fb71ba62b167f746b4574863438e65 Author: Picca Frédéric-Emmanuel Date: Thu Mar 10 14:11:16 2022 +0100 [contrib/haskell] add a datapath in the configuration we need to implement the HasFieldValue instance. The idea is to use JSON serialisation for this. contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 14 ++++++++------ contrib/haskell/src/Hkl/H5.hs | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) commit aecb90854b6736325dc1ea22c8e770d191d5694e Author: Picca Frédéric-Emmanuel Date: Thu Mar 10 11:40:24 2022 +0100 [contrib/haskell] use a type familly for the DataPath at the end this type familly will be serialize and unserialize as json in the config file. contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 + .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 91 ++++++++++++---------- .../src/Hkl/Binoculars/Projections/QparQper.hs | 34 ++++---- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 70 +++++++++-------- 4 files changed, 109 insertions(+), 88 deletions(-) commit a680055bc515e472e3974979ee1d0fd45072c5b3 Author: Picca Frédéric-Emmanuel Date: Tue Mar 8 16:01:08 2022 +0100 [contrib/haskell] added a test input for yves contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 +++++++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 4 ++++ contrib/haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 1 + contrib/haskell/src/Hkl/Binoculars/Projections/QxQyQz.hs | 16 ++++++++++++++++ 6 files changed, 33 insertions(+), 2 deletions(-) commit 3bb197ad1b62ca94fc7330ddb94816e1668a8997 Author: Picca Frédéric-Emmanuel Date: Mon Mar 7 14:41:26 2022 +0100 [contrib/haskell] Added overwriteInputRange in the HasIniConfig class contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 ++ .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 32 ++++++++++++---------- .../src/Hkl/Binoculars/Projections/QparQper.hs | 30 +++++++++++--------- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 31 +++++++++++---------- 4 files changed, 54 insertions(+), 41 deletions(-) commit 946a9375011e7f3ca332b6bb9bc87c75cd28fa04 Author: Picca Frédéric-Emmanuel Date: Mon Mar 7 13:55:30 2022 +0100 [contrib/haskell] created an HasIniConfig for all the configs contrib/haskell/src/Hkl/Binoculars/Config.hs | 47 ++++-- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 179 ++++++++++----------- .../src/Hkl/Binoculars/Projections/QparQper.hs | 131 +++++++-------- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 173 ++++++++++---------- 4 files changed, 260 insertions(+), 270 deletions(-) commit 01c44b705772fd391a0beb855fbffa7dbe190d78 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 18:24:22 2022 +0100 [contrib/haskell] each projetion in its own file. Now we have a dedicated file for each projection. There is more code duplication but at least we can give a beter user feedback depending on the projection type. contrib/haskell/app/Binoculars.hs | 8 +- contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 254 ++-------- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 369 +-------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 154 +----- .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 417 +++++++++++++++- .../src/Hkl/Binoculars/Projections/QparQper.hs | 237 +++++++++- .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 525 ++++++++++++++++++++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 380 ++------------- 9 files changed, 1284 insertions(+), 1062 deletions(-) commit a61c9270fa3c4c353a29761873cb9fde28cb66f8 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 16:09:22 2022 +0100 [contrib/haskell] Added hkl and qxqyqz projection's configurations contrib/haskell/hkl.cabal | 2 + .../haskell/src/Hkl/Binoculars/Projections/Hkl.hs | 124 +++++++++++++++++++++ .../src/Hkl/Binoculars/Projections/QxQyQz.hs | 100 +++++++++++++++++ 3 files changed, 226 insertions(+) commit 4fc95736d41708c8b9f0b2a20ec3750cfc6b6188 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:58:06 2022 +0100 [contrib/haskell] remove useless LANGUAGE extensions contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) commit 59df50876c87d5b2a563855ff0fe59a11cd1db0f Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:43:58 2022 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Config.hs | 27 ++++++++++++++------------- contrib/haskell/src/Hkl/Types/Parameter.hsc | 10 +++++----- 2 files changed, 19 insertions(+), 18 deletions(-) commit f48cfbafcfe19f417eca11ee09c4b4fb34afbd4d Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:28:37 2022 +0100 [contrib/haskell] remove useless code contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) commit 609b740dc85ddd6b27d29bc4d6867271f720b4a8 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:24:51 2022 +0100 [contrib/hasekll] use aulso auto for the wavelength contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) commit fc0060f999f1ada74a3a72838fa098ae5935de41 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:20:02 2022 +0100 [contrib/haskell] a, b, c, alpha, beta, gamma, ux, uy and uz are using Degree contrib/haskell/src/Hkl/Binoculars/Config.hs | 48 ++++++++++++++-------------- contrib/haskell/test/BinocularsSpec.hs | 12 +++---- 2 files changed, 30 insertions(+), 30 deletions(-) commit d6dd9b9edb47a1610a5608150fa873212c887671 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 15:09:48 2022 +0100 [contrib/haskell] created an Angstrom newtype for the config contrib/haskell/src/Hkl/Binoculars/Config.hs | 39 +++++++++++++++++----------- contrib/haskell/test/BinocularsSpec.hs | 6 ++--- 2 files changed, 27 insertions(+), 18 deletions(-) commit a3417f6a60e7d6f4ebbab500bfb3245ebc5ce2d4 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 11:43:05 2022 +0100 [contrib/haskell] created a Meter and Degree newtype for the config contrib/haskell/src/Hkl/Binoculars/Config.hs | 28 ++++++++++++++++++---- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 12 +++++----- .../src/Hkl/Binoculars/Projections/QparQper.hs | 13 +++++----- contrib/haskell/src/Hkl/Detector.hs | 2 +- contrib/haskell/src/Hkl/H5.hs | 2 +- contrib/haskell/test/BinocularsSpec.hs | 4 ++-- 6 files changed, 39 insertions(+), 22 deletions(-) commit 4a6f20f2050d6f03563f88dd78478ea894a0ed38 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 11:42:21 2022 +0100 [contrib/haskell] removed useless code contrib/haskell/src/Hkl/H5.hs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) commit c0807b8dd9832515d441ab672182b82e7f9547e3 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 11:13:29 2022 +0100 [contrib/haskell] Added the HasFieldValue for [Double] contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 5 ++--- 2 files changed, 6 insertions(+), 4 deletions(-) commit 7f0fc26726b92a21b765ccc11933ca794e7c5076 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 11:06:47 2022 +0100 [contrib/haskell] Added the HasFieldValue for Text contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit e5171a7de8f89a620d15e2342ca11034a97f03f5 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 11:03:45 2022 +0100 [contrib/haskell] Added the HasFieldValue for SurfaceOrientation contrib/haskell/src/Hkl/Binoculars/Config.hs | 30 ++++++++++------------ .../src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 2 files changed, 15 insertions(+), 17 deletions(-) commit 8cdfef49247615c65902dbd9d5188bd71375db41 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:55:11 2022 +0100 [contrib/haskell] removed parsable and centralPixel contrib/haskell/src/Hkl/Binoculars/Config.hs | 51 +++++++++++++--------- .../src/Hkl/Binoculars/Projections/QparQper.hs | 8 ++-- 2 files changed, 34 insertions(+), 25 deletions(-) commit 37e0f30282ad20730c0989dc3c7029a3ed0ef9c0 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:42:42 2022 +0100 [contrib/haskell] HasFieldValue for (Path Abs Dir) contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 ++++++------- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) commit 0380a9ddf540c2f798af7c018dc22019d67355ec Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:38:26 2022 +0100 [contrib/haskell] HasFieldValue for InputTmpl and InputType contrib/haskell/src/Hkl/Binoculars/Config.hs | 91 ++++++++++------------ .../src/Hkl/Binoculars/Projections/QparQper.hs | 4 +- 2 files changed, 45 insertions(+), 50 deletions(-) commit 4898326a60f0f56f9486e269c28c1885a77bf9d0 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:31:12 2022 +0100 [contrib/haskell] HasFieldValue for Bool contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) commit db1e64207e9e6b0f0c45212451fa43af00c18ee8 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:28:34 2022 +0100 [contrib/haskell] HasFieldValue for DestinationTmpl contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 +++++---------- .../haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) commit 6522ab7425b0a456fcc88ab45ae7214c64d56cb8 Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:24:16 2022 +0100 [contrib/haskell] use HasFieldValue with Int and Double contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 +++++++++---- contrib/haskell/src/Hkl/Binoculars/Projections/QparQper.hs | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) commit 2af473f9705ea19bcf87dd5ce2ee34a44c09dedf Author: Picca Frédéric-Emmanuel Date: Tue Mar 1 10:12:40 2022 +0100 [contrib/haskell] created an HasFieldValue and use it for detector The idea is to replace all FieldValue specific methods by this typeclass contrib/haskell/src/Hkl/Binoculars/Config.hs | 20 +++++++++++++------- .../src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) commit 29ac18d163a8e31fb0657f3754d1bb7e1656218f Author: Picca Frédéric-Emmanuel Date: Mon Feb 28 18:31:38 2022 +0100 [contrib/haskell] ConfigRange is now FieldParsable contrib/haskell/src/Hkl/Binoculars/Config.hs | 22 ++++++++++------------ .../src/Hkl/Binoculars/Projections/QparQper.hs | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) commit a36b1213062870fa97611ddd8b1d87a32605d75f Author: Picca Frédéric-Emmanuel Date: Mon Feb 28 18:05:18 2022 +0100 [contrib/haskell] Added QparQper dedicated config spec contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 12 +++ .../src/Hkl/Binoculars/Projections/QparQper.hs | 111 +++++++++++++++++++++ 3 files changed, 124 insertions(+) commit 3d7bd36c07af48ad5db635752ffca4dddb7594a3 Author: Picca Frédéric-Emmanuel Date: Mon Feb 28 17:20:16 2022 +0100 [contrib/haskell] BinocularsPreConfig Added for config parsing The idea is to cehck the kind of projection exepected by the user. Then it is possible to adapt the config file to the projection. contrib/haskell/src/Hkl/Binoculars/Config.hs | 62 +++++++++++++++++++--------- 1 file changed, 43 insertions(+), 19 deletions(-) commit 459eba7d57c16d29bd28c73320c718487ff26ca2 Author: Picca Frédéric-Emmanuel Date: Mon Feb 28 16:59:08 2022 +0100 [contrib/haskell] constent use of readConfig contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7ac776fc42eda940c8c1359cbbf45529935f2542 Author: Picca Frédéric-Emmanuel Date: Mon Feb 28 16:55:11 2022 +0100 [contrib/haskell] more pure functions contrib/haskell/src/Hkl/Binoculars/Config.hs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) commit 584e7496e16dead86badef4170efab28053a86ae Author: Picca Frédéric-Emmanuel Date: Sat Feb 26 13:13:43 2022 +0100 [contrib/haskell] tested and fixed the QparQper projection contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) commit 5daba22f1f92916dbbf12828f04d8fc4efe6e9c7 Author: Picca Frédéric-Emmanuel Date: Fri Feb 25 17:39:15 2022 +0100 [contrib/haskell] Fixed the QparQper resolution rank contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c02475e360d60bda1346b64aded45de35ac22c78 Author: Picca Frédéric-Emmanuel Date: Fri Feb 25 16:59:37 2022 +0100 [contrib/haskell] factorize the progressBar contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 90 ++++++++++++++--------------- 1 file changed, 45 insertions(+), 45 deletions(-) commit 9c5fcd2c801e85a5d206979d341d542353c9fc29 Author: Picca Frédéric-Emmanuel Date: Fri Feb 25 16:50:10 2022 +0100 [contrib/haskell] Added the QparQperProjection contrib/haskell/src/Hkl/Binoculars/Config.hs | 9 ++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 92 +++++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 45 ++++++++++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 9 ++- contrib/haskell/src/Hkl/C/Binoculars.hsc | 13 ++++ 5 files changed, 159 insertions(+), 9 deletions(-) commit 0d86514d3108d93670c44258a049977da74f48a3 Author: Picca Frédéric-Emmanuel Date: Fri Feb 25 16:42:52 2022 +0100 fix binoculars/hkl-binoculars.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 381f59dd45f4c8245eda6a035c71337b3b42f968 Author: Picca Frédéric-Emmanuel Date: Fri Feb 25 14:46:15 2022 +0100 [contrib/haskell] fix compilation contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) commit 6c953c5e72f05440f99aa8eb4348d2c7bb5667c9 Author: Picca Frédéric-Emmanuel Date: Fri Feb 11 11:47:29 2022 +0100 wip qperqpar projection binoculars/hkl-binoculars-private.h | 2 + binoculars/hkl-binoculars.c | 143 +++++++++++++++++++++++++++++++++--- binoculars/hkl-binoculars.h | 25 +++++++ 3 files changed, 160 insertions(+), 10 deletions(-) commit 7f94684aed462b4fae6637649d378ffa323c8619 Author: Picca Frédéric-Emmanuel Date: Fri Feb 11 11:42:49 2022 +0100 rename q projection into qxqyqz binoculars/hkl-binoculars.h | 86 ++++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 12 ++-- 3 files changed, 54 insertions(+), 50 deletions(-) commit 53f2fb72dfdacff3414247bb82db9f558692f64a Author: Picca Frédéric-Emmanuel Date: Fri Feb 11 11:08:19 2022 +0100 [contrib/haskell] bindings-DSL for HklBinocularsSpace contrib/haskell/data/test/Makefile | 3 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 6 ++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 8 ++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 39 +++++++++-------------- 4 files changed, 24 insertions(+), 32 deletions(-) commit 7097d1fd337c03796cafbd06e777eaef01e0c3cf Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 13:56:09 2022 +0100 [contrib/haskell] use binding-DSL for HklBinocularsCube contrib/haskell/src/Hkl/Binoculars/Common.hs | 28 +++++++-------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 51 ++++++++++++---------------- 2 files changed, 35 insertions(+), 44 deletions(-) commit 883ba565828edcd6922ddc56c0a8874f7070f336 Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 11:16:25 2022 +0100 [contrib/haskell] use binding-DSL for HklBinocularsAxisLimits contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 43 +++++++++++++++----------------- 2 files changed, 21 insertions(+), 23 deletions(-) commit ddc4d65e1b4fec0170fabfd07938f04e7cffac78 Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 10:45:59 2022 +0100 [contrib/haskell] follow the hsc2hs convention for all binoculars C bindings contrib/haskell/src/Hkl/Binoculars/Common.hs | 9 ++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 12 ++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 64 ++++++++++++----------- 3 files changed, 44 insertions(+), 41 deletions(-) commit 05c6bcc5a4058a85bd942284e4cac32ec36a4dfd Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 10:40:01 2022 +0100 [contrib/haskell] renames Cube' into Cube contrib/haskell/src/Hkl/Binoculars/Common.hs | 16 ++++----- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 6 ++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 44 +++++++++++------------ 4 files changed, 36 insertions(+), 36 deletions(-) commit 24f428f65ec6f3aa2f95a00337e4355da2b79629 Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 10:35:57 2022 +0100 [binoculars] HklBinocularsAxis is now private binoculars/hkl-binoculars-private.h | 15 +++++++++++++++ binoculars/hkl-binoculars.h | 10 ---------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 33 ++------------------------------ 3 files changed, 17 insertions(+), 41 deletions(-) commit ef2d45f7feafd05e14c1e1a7fa2a4f3e81be4744 Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 10:27:02 2022 +0100 [binoculars] HklBinocularsSpace is now private binoculars/hkl-binoculars-private.h | 25 +++++++++++++++++++++++++ binoculars/hkl-binoculars.h | 15 --------------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 ++-- 3 files changed, 27 insertions(+), 17 deletions(-) commit 3246a909db47b2a392445311cc3a31afbc4d75d2 Author: Picca Frédéric-Emmanuel Date: Wed Feb 9 10:21:45 2022 +0100 [binoculars] HklBinocularsCube is private binoculars/hkl-binoculars-private.h | 8 +++ binoculars/hkl-binoculars.c | 7 +-- binoculars/hkl-binoculars.h | 7 --- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 69 ++--------------------- 6 files changed, 18 insertions(+), 83 deletions(-) commit d470e40cf4e18176feffbabf3b7bad3014421c1e Author: Picca Frédéric-Emmanuel Date: Tue Feb 8 23:13:58 2022 +0100 [contrib/haskell] save the cube as hdf5 written in C binoculars/hkl-binoculars-hdf5.c | 88 +++++++++++++++++------ binoculars/hkl-binoculars.h | 3 + contrib/haskell/data/test/Makefile | 4 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 12 ++++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 5 ++ 6 files changed, 90 insertions(+), 26 deletions(-) commit bd2aebdb616eed23473850e225eb49ba3858ad75 Author: Picca Frédéric-Emmanuel Date: Tue Feb 8 17:20:10 2022 +0100 [contrib/haskell] deal with the merlin_quad_image on mars contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 86d316de30df682cb3631af89019200f8fe11986 Author: Picca Frédéric-Emmanuel Date: Tue Feb 8 16:22:44 2022 +0100 [contrib/haskell] added the mars sbs input type contrib/haskell/src/Hkl/Binoculars/Config.hs | 10 ++++++---- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 11 +++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) commit 22929d39d6cb5cece4d11238b6ed175ecc239fb4 Author: Picca Frédéric-Emmanuel Date: Tue Feb 8 15:50:56 2022 +0100 [binoculars] first step with an hdf5 method use to store the Cubes binoculars/Makefile.am | 8 +++-- binoculars/hkl-binoculars-hdf5.c | 62 +++++++++++++++++++++++++++++++++++++ binoculars/hkl-binoculars-private.h | 32 +++++++++++++++++++ configure.ac | 4 +-- contrib/haskell/data/test/Makefile | 3 +- 5 files changed, 103 insertions(+), 6 deletions(-) commit 0f2a560d1b5fca46c0c6d8aeed588b26c602b1bf Author: Picca Frédéric-Emmanuel Date: Mon Feb 7 16:21:17 2022 +0100 wip empty space binoculars/hkl-binoculars.c | 128 ++++++++++++++++++++++++++++++-------------- 1 file changed, 87 insertions(+), 41 deletions(-) commit 6cce4b11015f7deff7b4c93e3e41de2fc16ba994 Author: Picca Frédéric-Emmanuel Date: Fri Feb 4 15:23:41 2022 +0100 [contrib/haskell] config which use all the memory until a crash contrib/haskell/data/test/Makefile | 3 +- .../haskell/data/test/config_sixs_ruche_limits.txt | 51 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) commit 4586687137f00646803574899355ad4fcb7a55dc Author: Picca Frédéric-Emmanuel Date: Fri Feb 4 13:52:28 2022 +0100 [contrib/haskell] cleaner Makefile for the tests contrib/haskell/data/test/Makefile | 59 ++++++++++++---------- .../data/test/config_sixs_ruche_flymedv_3.ini | 2 +- 2 files changed, 33 insertions(+), 28 deletions(-) commit e7fac4975c3eea70266fc7212a0425336b426ad3 Author: Picca Frédéric-Emmanuel Date: Fri Feb 4 13:52:09 2022 +0100 [contrib/haskell] fix wrong list of filenames the filesname where filtered with the full abs path this cause troubles when a directory name contained also the matching scan number example for a range of 2010, the path /nfs/ruche/.../20102010/.../scan_125.nxs was ok due to the 02010 string now we match on the filename and not the full path name contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 ++++++++------- contrib/haskell/test/BinocularsSpec.hs | 8 ++++---- 2 files changed, 12 insertions(+), 11 deletions(-) commit 6b0643bf9ec0c2a7011f6ec2267c5a647f9ea283 Author: Picca Frédéric-Emmanuel Date: Thu Feb 3 17:24:55 2022 +0100 [contrib/haskell] for now use by default only 4 core for computation. if you want to change this use +RTS -N -RTS contrib/haskell/hkl.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 49e70bca0b64bff06a730be4e6afd040214da438 Author: Picca Frédéric-Emmanuel Date: Thu Feb 3 16:40:32 2022 +0100 [contrib/haskell] fix MedV and MedH data extraction contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit d130701542230171d2068523af2229231906be18 Author: Picca Frédéric-Emmanuel Date: Thu Feb 3 12:15:52 2022 +0100 [contrib/haskell] Added a --debug option to binoculars-ng this allow to print the debug level logging messages contrib/haskell/app/Binoculars.hs | 45 ++++++++++++++++++++--------- contrib/haskell/data/test/Makefile | 7 +++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 19 ++++++++++-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 6 ++-- 4 files changed, 56 insertions(+), 21 deletions(-) commit d014fb5c2498717d736db862ce2e6e44dd5a3d52 Author: Picca Frédéric-Emmanuel Date: Wed Feb 2 12:59:17 2022 +0100 [binoculars] Added the MERLIN_MEDIPIX_3RX_QUAD detector binoculars/hkl-binoculars-detectors-2d.c | 47 ++++++++++++++++++++------------ binoculars/hkl-binoculars.h | 1 + 2 files changed, 30 insertions(+), 18 deletions(-) commit 972db6ebaadfe2b8ee1928679c8bf4fa8de84579 Author: Picca Frédéric-Emmanuel Date: Wed Jan 26 10:11:35 2022 +0100 [contrib/haskell] Added a test for the limits :) contrib/haskell/data/test/Makefile | 3 ++- .../data/test/config_ssd_cristal_limits.ini | 28 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) commit fae0290f8212e365a910a5790c6a23f2d172b58b Author: Picca Frédéric-Emmanuel Date: Wed Jan 26 10:04:17 2022 +0100 [contrib/haskell] test on ssd with the limits contrib/haskell/data/test/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 762249151720f70fc6b194ce0718f82f28e485e0 Author: Picca Frédéric-Emmanuel Date: Tue Jan 11 17:34:26 2022 +0100 [hkl] Added limits binoculars/hkl-binoculars.c | 81 ++++++++++++++++++++++- binoculars/hkl-binoculars.h | 26 ++++++-- contrib/haskell/data/test/Makefile | 3 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 9 +-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 28 ++++++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 56 ++++++++++++++-- 6 files changed, 174 insertions(+), 29 deletions(-) commit 007f1ae03931fc57915a85be9b008b90be0c0cc3 Author: Picca Frédéric-Emmanuel Date: Tue Jan 11 17:30:38 2022 +0100 [binoculars] removed warning binoculars/hkl-binoculars-detectors-2d.c | 45 ++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 20 deletions(-) commit 14be535729392391f5bcbee6034ba6b6742953ef Author: Picca Frédéric-Emmanuel Date: Tue Jan 11 15:33:27 2022 +0100 [contrib/haskell] Added the limits in the projection code. contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 15 +++++++++------ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 10 +++++----- 2 files changed, 14 insertions(+), 11 deletions(-) commit 279a13c38f043b793695ad88565c787a1eced8c4 Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 17:31:29 2022 +0100 [contrib/haskell] hardcode the configure command in the devel script to develop binoculars, just run ./devel before cabal build this way I can gives the absolute lib path during the configuration. The problem still remaining is related to LD_LIBRARY_PATH which is not augmented of these given path when executing the script. So I still need to bootstrap ./bootstrap cabal run binoculars-ng ./bootstrap cabal test contrib/haskell/devel | 1 + contrib/haskell/hkl.cabal | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-) commit 7d14e87ec1289acd05eaebe5206cade7f93c25cb Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 17:05:26 2022 +0100 [contrib/haskell] simplify hkl.cabal contrib/haskell/hkl.cabal | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) commit e8dc5b38bc193018e7dbf853f8203c1cca567027 Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 16:58:24 2022 +0100 [contrib/haskell] run cabal via a bootstrap script ./bootstrap cabal run binoculars-ng ./bootstrap cabal test contrib/haskell/bootstrap | 1 + contrib/haskell/hkl.cabal | 11 +++-------- 2 files changed, 4 insertions(+), 8 deletions(-) commit 0d79449a2fefcde4f3d2bd6483d4169dc4c7f9de Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 14:37:24 2022 +0100 [contrib/haskell] Added a new test case for limits contrib/haskell/test/BinocularsSpec.hs | 3 +++ 1 file changed, 3 insertions(+) commit 4e49e3dfae604bbc55801fe85ce24361c1f1966e Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 14:36:40 2022 +0100 [contrib/haskell] removed warnings contrib/haskell/test/BinocularsSpec.hs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit ef9fbca3772ab4ca9840f87b63990cff8c0ba7ca Author: Picca Frédéric-Emmanuel Date: Mon Jan 10 14:31:50 2022 +0100 [contrib/haskell] fix compilation of the test suite. contrib/haskell/hkl.cabal | 221 ++++++++++++++++++++-------------------------- 1 file changed, 94 insertions(+), 127 deletions(-) commit 18ef1c7a1918cbde0818292c4ae323858e2d12d4 Author: Picca Frédéric-Emmanuel Date: Fri Dec 17 14:16:14 2021 +0100 [contrib/haskell] instance for projectionType contrib/haskell/hkl.cabal | 202 +++++++++++++-------------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 24 ++-- contrib/haskell/test/BinocularsSpec.hs | 52 +++++-- 3 files changed, 147 insertions(+), 131 deletions(-) commit 2b21eb4d40e3202561ad3668f5388fe7df1de102 Author: Picca Frédéric-Emmanuel Date: Thu Dec 16 15:12:00 2021 +0100 [contrib/haskell] create a typeclass for config field contrib/haskell/src/Hkl/Binoculars/Config.hs | 38 ++++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) commit 5411c420027f851c0c35ba51442a086cdbe568bb Author: Picca Frédéric-Emmanuel Date: Thu Dec 16 14:19:58 2021 +0100 [contrib/haskell] Added the limits config part contrib/haskell/src/Hkl/Binoculars/Config.hs | 48 ++++++++++++++++++++++++---- contrib/haskell/test/BinocularsSpec.hs | 34 ++++++++++++++------ 2 files changed, 66 insertions(+), 16 deletions(-) commit 85c36016b04a33866ba33f9c9fd19fd1a5334178 Author: Picca Frédéric-Emmanuel Date: Mon Dec 13 17:32:17 2021 +0100 [contrib/haskell] worked on the sixsFlyMedV config contrib/haskell/data/test/Makefile | 4 ++-- .../data/test/config_sixs_ruche_flymedv_2.ini | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 24 +++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 +++- 4 files changed, 19 insertions(+), 17 deletions(-) commit f11e67c80b501b2b4dee57292800e39009b90314 Author: Picca Frédéric-Emmanuel Date: Mon Dec 13 15:50:49 2021 +0100 [contrib/haskell] the detector normalization was wrong binoculars/hkl-binoculars-detectors-2d.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 190f18634e8496e38017609bec8f9c3bee8f7ea6 Author: Picca Frédéric-Emmanuel Date: Mon Dec 13 14:05:23 2021 +0100 [contrib/haskell] read the right Crystal manager for the six uhv diffractometer contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit e5334f8ba386ad209992145691174350e195f39a Author: Picca Frédéric-Emmanuel Date: Mon Dec 13 11:08:37 2021 +0100 [binoculars] corrected the surface_orientation rotation binoculars/hkl-binoculars.c | 4 +++- contrib/haskell/data/test/Makefile | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) commit 8585c16944bc76687b4190cf30ebec8d453a617c Author: Picca Frédéric-Emmanuel Date: Wed Dec 8 10:06:00 2021 +0100 pre-release INSTALL | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f49a45f8103bc9b3fb0e510838f42abcff5981a9 Author: Picca Frédéric-Emmanuel Date: Wed Dec 8 09:57:17 2021 +0100 [hkl] updated ccan hkl/ccan/Makefile.am | 38 +++++++++++++++++------------------ hkl/ccan/compiler/compiler.h | 13 ++++++++++++ hkl/ccan/configurator.c | 48 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 75 insertions(+), 24 deletions(-) commit 7c234e0b62a981148c86c91648b01f34771c7efe Author: Picca Frédéric-Emmanuel Date: Wed Dec 8 09:52:02 2021 +0100 [hkl] updated metalang99 and datatype99 third-party/Makefile.am | 5 + third-party/datatype99.h | 58 +++--- third-party/metalang99.h | 7 +- third-party/metalang99/assert.h | 8 +- third-party/metalang99/bool.h | 246 +++++++++++++++++++++++ third-party/metalang99/choice.h | 59 ++++-- third-party/metalang99/control.h | 121 +----------- third-party/metalang99/either.h | 32 +-- third-party/metalang99/eval/eval.h | 34 ++-- third-party/metalang99/eval/syntax_checker.h | 19 +- third-party/metalang99/gen.h | 285 ++++++++------------------- third-party/metalang99/ident.h | 28 +-- third-party/metalang99/lang.h | 14 +- third-party/metalang99/lang/closure.h | 1 + third-party/metalang99/list.h | 283 +++++++++++++++----------- third-party/metalang99/logical.h | 147 +------------- third-party/metalang99/maybe.h | 34 ++-- third-party/metalang99/nat.h | 59 +++--- third-party/metalang99/nat/div.h | 1 + third-party/metalang99/nat/eq.h | 2 +- third-party/metalang99/priv/bool.h | 46 +++++ third-party/metalang99/priv/tuple.h | 33 ++++ third-party/metalang99/priv/util.h | 33 +--- third-party/metalang99/seq.h | 204 +++++++++++++++++++ third-party/metalang99/stmt.h | 155 +++++++++++++++ third-party/metalang99/tuple.h | 48 +++-- third-party/metalang99/util.h | 94 ++++++--- third-party/metalang99/variadics.h | 170 ++++++++-------- 28 files changed, 1328 insertions(+), 898 deletions(-) commit 09d61fa1a5472845e05cf160006981bdd7122c1a Author: Picca Frédéric-Emmanuel Date: Wed Dec 8 09:41:37 2021 +0100 hlint contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 +------- 3 files changed, 4 insertions(+), 9 deletions(-) commit c4c6be4ed3ca1b10b9495ca706d4222f34f6a5a2 Author: Picca Frédéric-Emmanuel Date: Tue Dec 7 13:14:36 2021 +0100 [contrib/haskell] solve a used after gc bug. now we can save all the data's :)) contrib/haskell/src/Hkl/C/Binoculars.hsc | 59 ++++++++++++-------------------- 1 file changed, 21 insertions(+), 38 deletions(-) commit 70219b816a1b7602020ce561267691f0a416733a Author: Picca Frédéric-Emmanuel Date: Sat Nov 27 13:41:24 2021 +0100 [contrib/haskell] simplify the code contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit e15d4f4fca2412eb340670e47273d9c3a41c3a01 Author: Picca Frédéric-Emmanuel Date: Fri Dec 3 13:15:07 2021 +0100 [contrib/haskell] prepare for REader in the pipes contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) commit 443ae08db64f6a8e72cc31b8fcc999cd5215fde5 Author: Picca Frédéric-Emmanuel Date: Fri Dec 3 10:59:28 2021 +0100 [contrib/haskell] use Pipes.Prelude.mapM when it si relevant contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 5e0fe6ddeb75809f181039e3a8e6d3811f0d8012 Author: Picca Frédéric-Emmanuel Date: Fri Dec 3 10:25:22 2021 +0100 [contrib/haskell] simplify now that we have a MonadReader for the conf contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 459 ++++++++++++++-------------- 2 files changed, 236 insertions(+), 231 deletions(-) commit 5a54c3d8c02815c6ae756b904f8bbda9422641fd Author: Picca Frédéric-Emmanuel Date: Thu Dec 2 14:09:08 2021 +0100 [contrib/haskell] use the MonadReader pattern in order to propagate the configuration everywhere. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 16 ++++++++++------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 23 ++++++++++++++++------- 3 files changed, 27 insertions(+), 13 deletions(-) commit 32f15d56ea7645802ccf4f248a4d89c7e6b19d70 Author: Commissionning MARS Date: Thu Dec 2 18:05:54 2021 +0100 [contrib/haskell] Added the attenuation for mars Hardcoded the wavelength until I found the right way to do this. contrib/haskell/data/test/Makefile | 8 +++++++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 24 ++++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 7 +++++-- 4 files changed, 27 insertions(+), 16 deletions(-) commit 6b80cd67c3973ed1072e5538adcb549a62597889 Author: Picca Frédéric-Emmanuel Date: Thu Dec 2 10:53:11 2021 +0100 [contrib/haskell] Added the wavelength config contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +++ 1 file changed, 3 insertions(+) commit 894b338e578028ceade68570bd395b2af0e9fd06 Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 17:31:30 2021 +0100 [contrib/haskell] Allocate the initial cube in order to improve computation Signed-off-by: Picca Frédéric-Emmanuel binoculars/hkl-binoculars.c | 10 ++++++++++ binoculars/hkl-binoculars.h | 2 ++ contrib/haskell/src/Hkl/Binoculars/Common.hs | 10 ++++++++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 ++++---- contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 ++++ 5 files changed, 28 insertions(+), 6 deletions(-) commit d714a4012a7ced95ef251cad3fb3b750c4d2ba80 Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 16:53:27 2021 +0100 [contrib/haskell] added the guerss part to the hkl projection contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) commit 9995c624bdbb0ddbb5f202e1b9d1c69b4e35b3d2 Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 16:18:59 2021 +0100 [contrib/haskell] tune the configuration for profilling contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/data/test/config_mars_ruche_rel_flyscan.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 167fb7c3f7a184d1a6bd1f194cc85ad061bf66b2 Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 15:08:07 2021 +0100 [contrib/haskell] deal with the different numbering via a template The new "inputtmpl" key was added to the input part of the config, the default value is "%05d". each files of the nexusdir need to match with a `printf tmpl n` where n is the index of the range. .../data/test/config_mars_ruche_rel_flyscan.ini | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 34 ++++++++++++++++------ 2 files changed, 26 insertions(+), 9 deletions(-) commit fe973703dcea346096910246c2d9cb36714124c8 Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 14:29:24 2021 +0100 [contrib/haskell] Added mars config file contrib/haskell/data/test/Makefile | 5 ++++- .../data/test/config_mars_ruche_rel_flyscan.ini | 26 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) commit 8d823226c45cf6487b2045a6b388a2aa2c7265cb Author: Picca Frédéric-Emmanuel Date: Tue Nov 30 09:43:39 2021 +0100 wip binoculars/hkl-binoculars-detectors-2d.c | 18 +++++++++++++++ binoculars/hkl-binoculars.c | 2 -- .../test/config_ord05133_ruche_mars_flyscan.ini | 26 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) commit 6ff4b035ba6c177ef52a7994998790c189171674 Author: Picca Frédéric-Emmanuel Date: Mon Nov 29 14:21:30 2021 +0100 [contrib/haskell] added an new flymedv test file 135k images for an hkl projection. contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_sixs_ruche_flymedv_3.ini | 42 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) commit 77e1aef74980ceb7865987b6f72a413c5145517c Author: Picca Frédéric-Emmanuel Date: Fri Nov 19 18:04:07 2021 +0100 [contrib/haskell] started work on the guess of the final cube size TODO: - extract only the sahep of the space in order to merge it and compute an expected cube size. - allow to start the process with an empty cube already allocated. - optimize the qxqyqz projection by precomputing the pixels normailsation. binoculars/hkl-binoculars.c | 47 ++++++++++++++---- binoculars/hkl-binoculars.h | 12 ++++- contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_ord05133_ruche_uhv_big.ini | 56 ++++++++++++++++++++++ .../haskell/data/test/config_sixs_ruche_uhv.ini | 6 +++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 ++++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 36 ++++++++++---- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 10 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 3 +- 9 files changed, 156 insertions(+), 28 deletions(-) commit 6032af4c7b80d44b995f8a95a6f607e4e5709acc Author: Picca Frédéric-Emmanuel Date: Tue Nov 23 10:26:56 2021 +0100 [contrib/haskell] Added the SurfaceOrientation configuration This is necessary for the qxqyqz projection. contrib/haskell/src/Hkl/Binoculars/Config.hs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit 91155190e43eb4af8853f391df9ae198debc7378 Author: Picca Frédéric-Emmanuel Date: Fri Nov 19 16:04:41 2021 +0100 [contrib/haskell] replace LenP by ChunkP This way we can extract for each file the first and the last usable frame. The idea is to pre-compute the final cube size from the begining in order to speed (a lot ?) the computation. We found that 135000 frame of xpad s140 can be read from the ruche and projected in only 6 minutes. But the complete computation take a lot more du to the malloc of Cube of different size. contrib/haskell/data/test/Makefile | 4 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 9 ++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 68 +++++++++++----------------- 3 files changed, 34 insertions(+), 47 deletions(-) commit 59889fce671a73e6d84f8805c1ea3b39e6f7ed97 Author: Picca Frédéric-Emmanuel Date: Thu Nov 18 18:13:25 2021 +0100 [contrib/haskell] added the yves strange scan contrib/haskell/data/test/Makefile | 3 +- .../data/test/config_sixs_ruche_flymedv_2.ini | 41 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) commit edbf451082385e39523d0a514c6fe09e02d0607e Author: Picca Frédéric-Emmanuel Date: Thu Nov 18 16:07:48 2021 +0100 [contrib/haskell] Added the number of core in the Makefile contrib/haskell/data/test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit abb811d4a16fc726607ee5cd6ae8288eaa933459 Author: Picca Frédéric-Emmanuel Date: Thu Nov 18 14:33:42 2021 +0100 [contrib/haskell ] work on sixs with a big map contrib/haskell/data/test/Makefile | 6 ++- .../haskell/data/test/config_sixs_ruche_uhv.ini | 50 ++++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- 3 files changed, 56 insertions(+), 2 deletions(-) commit 3ca93188030e9383da1b1b3870378ca74ab9ded5 Author: Picca Frédéric-Emmanuel Date: Thu Nov 18 11:45:21 2021 +0100 [contrib/haskell] make it works with the mars datas :)) binoculars/hkl-binoculars-detectors-2d.c | 12 ++++++++- binoculars/hkl-binoculars.h | 1 + contrib/haskell/data/test/Makefile | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 ++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 37 ++++++++++++++++++---------- 5 files changed, 41 insertions(+), 18 deletions(-) commit 0f189b36706af7e021975c3c48255892fbf218de Author: Picca Frédéric-Emmanuel Date: Thu Nov 18 11:04:32 2021 +0100 [contrib/haskell] also log the detector type contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 082662d1503ec1399fed5f631a8a83b9160e9b54 Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 22:20:27 2021 +0100 [contrib/haskell] remove an useless print contrib/haskell/src/Hkl/H5.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5012d6936dc324be668feb900413ad7b2c8bc5af Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 22:15:08 2021 +0100 [contrib/haskell] switch to ssd contrib/haskell/data/test/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 37e0f9e9d1f9cf79a03ad019225b6b8aa1e74a3c Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 14:27:40 2021 +0100 [contrib/haskell] better logging contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) commit 3ecb4a166249da64c79ae88b840e8ebbe382b417 Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 13:52:01 2021 +0100 [contrib/haskell] removed MkJobsHklP a contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 67 +++++++++-------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 50 ++++++----------- 2 files changed, 42 insertions(+), 75 deletions(-) commit 5dc72044c5f8b3617bc032defbaef2a7094d8b4c Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 13:36:20 2021 +0100 [contrib/haskell] removed MkJobsQxQyQzP a contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 53 ++++++++--------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 14 ------ 2 files changed, 19 insertions(+), 48 deletions(-) commit a2488d685ae36120556a6dccfd2abd02198fe7df Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 11:43:22 2021 +0100 [contrib/haskell] call directly mkInputXXXP from processXXXP Signed-off-by: Picca Frédéric-Emmanuel contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 84 ++++++++++++++++------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 15 ++---- 2 files changed, 49 insertions(+), 50 deletions(-) commit d7eb0cff9a9adba62709dff1c50863e1548f988b Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 11:23:52 2021 +0100 [contrib/haskell] merge MkInputXXXP into processXXXP contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) commit 1498da18ac662ea7706e6f2c4c643fd6c924e190 Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 10:42:22 2021 +0100 [contrib/haskell] Added the mars diffractometer contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 ++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 9 ++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 3 ++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 64 ++++++++++++++--------- contrib/haskell/src/Hkl/C/Geometry.hsc | 4 +- 5 files changed, 57 insertions(+), 26 deletions(-) commit b9fda7d359e55d1fa5486b018dbe172536603d56 Author: Picca Frédéric-Emmanuel Date: Wed Nov 17 10:13:00 2021 +0100 [contrib/haskell] added uint32_t images binoculars/hkl-binoculars.c | 6 ++++-- binoculars/hkl-binoculars.h | 6 ++++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 +++++--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 12 ++++++++---- contrib/haskell/src/Hkl/C/Binoculars.hsc | 23 ++++++++++++++++------- contrib/haskell/src/Hkl/Image.hs | 7 ++++--- 6 files changed, 41 insertions(+), 21 deletions(-) commit 48e9b06754961ed0026e3a31a684860ef8bb674c Author: Picca Frédéric-Emmanuel Date: Mon Nov 15 11:46:41 2021 +0100 [contrib/haskell] idem for the projection contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 86 +++++++++++++++-------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 +- 2 files changed, 47 insertions(+), 43 deletions(-) commit 09e606ba35db9b7b23b7c8544191c4a8e0b3b7a8 Author: Picca Frédéric-Emmanuel Date: Mon Nov 15 11:41:16 2021 +0100 [contrib/haskell] idem for the input type contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 102 +++++++++++++++------------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 +- 2 files changed, 56 insertions(+), 50 deletions(-) commit 08e0d128237dce362132ecf8f91e9f236b9f8976 Author: Picca Frédéric-Emmanuel Date: Mon Nov 15 11:20:52 2021 +0100 [contrib/haskell] use typeclass in order to deal with beramlines specificities contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) commit cc0ec0f950e403727ca2f3519d09d1a1301ccbb3 Author: Picca Frédéric-Emmanuel Date: Fri Nov 12 15:48:16 2021 +0100 [contrib/haskell] fix a bug in the hkl_binoculars_axis_contains_axis binoculars/hkl-binoculars.c | 10 ++++++++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) commit 2c2f9b5e97719d8ad38db066073026e825a4448c Author: Picca Frédéric-Emmanuel Date: Tue Nov 9 11:09:53 2021 +0100 [contrib/haskell] add the int32 config contrib/haskell/data/test/Makefile | 8 ++-- .../haskell/data/test/config_ord05133_int32.cfg | 43 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 4 deletions(-) commit 6cac7f110171b146413010b60799ee9acc3669a8 Author: Picca Frédéric-Emmanuel Date: Fri Oct 29 13:34:21 2021 +0200 [contrib/haskell] deal with int32 images binoculars/hkl-binoculars.c | 8 ++- binoculars/hkl-binoculars.h | 2 + contrib/haskell/data/test/Makefile | 3 +- .../config_ord05133_110_m1018_32h_Qxyz_Vhkl.ini | 6 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 6 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 19 +++++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 45 ++++++++------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 64 +++++++++++++--------- contrib/haskell/src/Hkl/H5.hs | 37 ++----------- contrib/haskell/src/Hkl/Image.hs | 2 + 10 files changed, 103 insertions(+), 89 deletions(-) commit 2d9415f3abe72e8935ffc2fd39cd8bcd0ce3f095 Author: Picca Frédéric-Emmanuel Date: Fri Oct 29 11:51:54 2021 +0200 Added an Image type to deal with different image types contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 7 +++---- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 9 +++++---- contrib/haskell/src/Hkl/Image.hs | 11 +++++++++++ contrib/haskell/src/Hkl/Utils.hs | 10 +++++----- 5 files changed, 25 insertions(+), 13 deletions(-) commit 1c524ec29e678cd8136973f1ead839cd72bbc228 Author: Picca Frédéric-Emmanuel Date: Sat Oct 23 22:33:37 2021 +0200 [contrib/haskell] macroify the hkl projection binoculars/hkl-binoculars.c | 112 ++++++++++------------ binoculars/hkl-binoculars.h | 28 +++--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 2 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 30 +++--- 4 files changed, 82 insertions(+), 90 deletions(-) commit 4997cba70bdc6335ddbdcea9c9aaed09ebd29bcb Author: Picca Frédéric-Emmanuel Date: Mon Oct 25 18:24:43 2021 +0200 [contrib/haskell] extract info from the dataset This will allow to deal with the datatype and check shape compatibility. contrib/haskell/src/Hkl/H5.hs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit 2f9cb31a21ab1e7b21b9181f7d6b227f8cf7ed6b Author: Picca Frédéric-Emmanuel Date: Mon Oct 25 16:49:15 2021 +0200 [contrib/haskell] prepare code in order to deal with dataset type contrib/haskell/src/Hkl/H5.hs | 10 +++++++--- contrib/haskell/src/Hkl/Pipes.hs | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) commit e650d89b000a455acbd54514c2a1bd0d7fbf275f Author: Picca Frédéric-Emmanuel Date: Mon Oct 25 14:45:53 2021 +0200 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Common.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 16 +++++++--------- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 6 +++--- contrib/haskell/src/Hkl/H5.hs | 16 ++++++++-------- contrib/haskell/src/Hkl/Pipes.hs | 2 +- 5 files changed, 21 insertions(+), 23 deletions(-) commit 0b5e1b08f51462c6b284ae7eb7fb7424480c975e Author: Picca Frédéric-Emmanuel Date: Mon Oct 25 11:47:00 2021 +0200 [contrib/haskell] remove useless code contrib/haskell/debian/control | 42 -- contrib/haskell/hkl.cabal | 57 +- contrib/haskell/src/Hkl.hs | 11 +- contrib/haskell/src/Hkl/Conduit.hs | 51 -- contrib/haskell/src/Hkl/DataSource.hs | 50 -- contrib/haskell/src/Hkl/Detector.hs | 64 +- contrib/haskell/src/Hkl/Edf.hs | 63 -- contrib/haskell/src/Hkl/Flat.hs | 74 --- contrib/haskell/src/Hkl/Nxs.hs | 237 -------- contrib/haskell/src/Hkl/Projects.hs | 5 - contrib/haskell/src/Hkl/Projects/D2AM.hs | 3 - contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 106 ---- contrib/haskell/src/Hkl/Projects/Diffabs.hs | 9 - .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 165 ------ contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 135 ----- .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 169 ------ contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 159 ----- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 200 ------- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 295 ---------- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 439 -------------- contrib/haskell/src/Hkl/Projects/Mars.hs | 4 - contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 48 -- contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 108 ---- contrib/haskell/src/Hkl/PyFAI.hs | 9 - .../haskell/src/Hkl/PyFAI/AzimuthalIntegrator.hs | 18 - contrib/haskell/src/Hkl/PyFAI/Calib.hs | 29 - contrib/haskell/src/Hkl/PyFAI/Calibrant.hs | 10 - contrib/haskell/src/Hkl/PyFAI/Detector.hs | 23 - contrib/haskell/src/Hkl/PyFAI/Npt.hs | 99 ---- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 245 -------- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 41 -- contrib/haskell/src/Hkl/Python.hs | 29 - contrib/haskell/src/Hkl/Script.hs | 92 --- contrib/haskell/src/Hkl/Tiff.hs | 9 - contrib/haskell/src/Hkl/Xrd.hs | 6 - contrib/haskell/src/Hkl/Xrd/Calibration.hs | 286 --------- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 270 --------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 652 --------------------- contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 117 ---- contrib/haskell/src/Tango/DeviceProxy.hsc | 47 -- contrib/haskell/src/hkl3d.hs | 8 - contrib/haskell/src/xrd.hs | 16 - 42 files changed, 4 insertions(+), 4496 deletions(-) commit 05d7fe0e9db201f590a0020b52d5980bd776e2be Author: Picca Frédéric-Emmanuel Date: Wed Oct 20 21:35:10 2021 +0200 [contrib/haskell] macroify the q projection binoculars/hkl-binoculars.c | 106 ++++++++++------------ binoculars/hkl-binoculars.h | 31 ++++--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 2 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 28 +++--- 4 files changed, 81 insertions(+), 86 deletions(-) commit 18ececfc1715f5098ca2b8bcfe576e67c98e6c4e Author: Picca Frédéric-Emmanuel Date: Wed Oct 20 20:50:19 2021 +0200 [contrib/haskell] use logging instead of print contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8ac2206a6d8384a2552fd9173685b1c2439bd937 Author: Picca Frédéric-Emmanuel Date: Thu Oct 7 14:48:02 2021 +0200 [contrib/haskell] use -N RTS on profiled and non-profiled binaries. contrib/haskell/data/test/Makefile | 10 ++++++++-- contrib/haskell/hkl.cabal | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) commit c4aaf80df919c7e48f54450f2b92e2d6cd7a8ecb Author: Picca Frédéric-Emmanuel Date: Thu Oct 7 13:45:14 2021 +0200 [contrib/haskell] fix for the current user experiment contrib/haskell/data/test/Makefile | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 8 +++++--- contrib/haskell/src/Hkl/C/Geometry.hsc | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) commit 6f025e5651358d9e2ea23ab8f46a749cce0ea56b Author: Picca Frédéric-Emmanuel Date: Thu Oct 7 11:26:23 2021 +0200 [contrib/haskell] fix hdf5 path for the current beamline setup contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 97cee5d2d706dbe78501ed1523a1818f03907f7f Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 09:01:30 2021 +0200 [buildsystem] remove useless lines Makefile.am | 8 -------- 1 file changed, 8 deletions(-) commit 9721c6b747c37230bf52e049a9cf77f35eca7690 Author: Picca Frédéric-Emmanuel Date: Tue Oct 5 15:40:22 2021 +0200 [contrib/haskell] deal with multiple ranges contrib/haskell/app/Binoculars.hs | 2 +- contrib/haskell/data/test/Makefile | 2 +- contrib/haskell/hkl.cabal | 8 +++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 92 ++++++++++++++++++++++------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 3 +- contrib/haskell/test/BinocularsSpec.hs | 26 ++++++-- 6 files changed, 106 insertions(+), 27 deletions(-) commit 00e9c423cb323919c5e6ac7785cfdafc4f3d077d Author: Picca Frédéric-Emmanuel Date: Mon Oct 4 14:53:21 2021 +0200 [contrib/haskell] removed a bunch of buster specificities contrib/haskell/src/Hkl/Binoculars/Config.hs | 34 ++-------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) commit 27729ae3347ad645ca46db08cc6a4ef1d4377d83 Author: Picca Frédéric-Emmanuel Date: Mon Oct 4 14:37:51 2021 +0200 [contrib/haskell] make it work on ord05133 contrib/haskell/data/test/Makefile | 18 ++++++++ .../config_ord05133_110_m1018_32h_Qxyz_Vhkl.ini | 50 ++++++++++++++++++++++ contrib/haskell/data/test/test.sh | 2 +- 3 files changed, 69 insertions(+), 1 deletion(-) commit 7e6fa4f748cc52f8b76fa20d5083544d2c31e152 Author: Picca Frédéric-Emmanuel Date: Mon Oct 4 13:58:19 2021 +0200 [contrib/haskell] Added multiple range config .../config_sixs_ruche_110_m1018_32h_Qxyz_Vhkl.ini | 50 ++++++++++++++++++++++ contrib/haskell/data/test/test.sh | 16 +++++++ 2 files changed, 66 insertions(+) commit 5eb804a6ab45e767ffd8acf037b91a9b40de2055 Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 17:13:52 2021 +0200 [contrib/haskell] fix compilation of binoculars-ng contrib/haskell/hkl.cabal | 20 +++++++++++--------- contrib/haskell/test/BinocularsSpec.hs | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) commit 9f2d2903c23d23f1ac101717826ff8ab5544a441 Author: Picca Frédéric-Emmanuel Date: Thu Sep 16 14:44:55 2021 +0200 pre-release hkl/hkl-axis.c | 18 +++++++++--------- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 6 +++--- hkl3d/hkl3d.cpp | 6 +++--- tests/runtests.c | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) commit 9d54ec68d074d5e68787bdf9d3e462cb5a543ed8 Author: Picca Frédéric-Emmanuel Date: Thu Sep 16 14:40:26 2021 +0200 updated the datalang99 and metalang99 third-party/datatype99.h | 78 +++++++++++++------ third-party/metalang99.h | 9 ++- third-party/metalang99/assert.h | 25 +++++-- third-party/metalang99/choice.h | 3 +- third-party/metalang99/control.h | 3 +- third-party/metalang99/either.h | 9 +-- third-party/metalang99/eval/eval.h | 5 +- third-party/metalang99/gen.h | 74 +++++++++++------- third-party/metalang99/ident.h | 95 +++++++++++++++++++++++- third-party/metalang99/lang.h | 3 +- third-party/metalang99/list.h | 99 +++++++------------------ third-party/metalang99/logical.h | 3 +- third-party/metalang99/maybe.h | 7 +- third-party/metalang99/nat.h | 6 +- third-party/metalang99/priv/compiler_specific.h | 26 ++++--- third-party/metalang99/tuple.h | 67 +++++++++++++++-- third-party/metalang99/util.h | 41 +++++++++- third-party/metalang99/variadics.h | 14 +++- 18 files changed, 389 insertions(+), 178 deletions(-) commit 75ecec1226fce1f248d71188e8533b758027f39e Author: Picca Frédéric-Emmanuel Date: Fri Aug 6 22:32:26 2021 +0200 Added missing files Makefile.am | 6 + third-party/metalang99/ident.h | 332 ++++++++++++++++++++++++++++++++++ third-party/metalang99/priv/logical.h | 35 ++++ 3 files changed, 373 insertions(+) commit 760d6d4092730a9067a7228b30370d7e68cb03f3 Author: Picca Frédéric-Emmanuel Date: Fri Aug 6 21:32:50 2021 +0200 updated metalang99 and datatype99 third-party/Makefile.am | 2 + third-party/datatype99.h | 433 ++++++++++++-------- third-party/metalang99.h | 12 +- third-party/metalang99/assert.h | 38 +- third-party/metalang99/choice.h | 20 +- third-party/metalang99/control.h | 32 +- third-party/metalang99/either.h | 32 +- third-party/metalang99/eval/acc.h | 8 +- third-party/metalang99/eval/eval.h | 27 +- third-party/metalang99/eval/rec.h | 47 ++- third-party/metalang99/eval/syntax_checker.h | 35 +- third-party/metalang99/gen.h | 312 +++++++++++--- third-party/metalang99/lang.h | 30 +- third-party/metalang99/lang/closure.h | 2 +- third-party/metalang99/list.h | 300 +++++++------- third-party/metalang99/logical.h | 58 +-- third-party/metalang99/maybe.h | 33 +- third-party/metalang99/nat.h | 68 +++- third-party/metalang99/nat/dec.h | 5 +- third-party/metalang99/nat/div.h | 5 +- third-party/metalang99/nat/eq.h | 516 ++++++++++++------------ third-party/metalang99/nat/inc.h | 5 +- third-party/metalang99/priv/compiler_specific.h | 53 +++ third-party/metalang99/priv/util.h | 63 ++- third-party/metalang99/tuple.h | 90 ++++- third-party/metalang99/util.h | 233 ++++++++--- third-party/metalang99/variadics.h | 131 ++++-- 27 files changed, 1678 insertions(+), 912 deletions(-) commit 6230aec9cbcf1b90062d7ff357574ebdf3f7d695 Author: Picca Frédéric-Emmanuel Date: Thu Mar 25 10:28:45 2021 +0100 [binoculars] Added the ufxc detector binoculars/hkl-binoculars-detectors-2d.c | 20 +++++++++++++++----- binoculars/hkl-binoculars.h | 1 + 2 files changed, 16 insertions(+), 5 deletions(-) commit 61a5331fa40bccfe570ed3dd844d49f591839536 Author: Picca Frédéric-Emmanuel Date: Thu Mar 25 09:52:01 2021 +0100 updated metalang99 and datatype99 hkl/api2/hkl2.h | 4 +- third-party/Makefile.am | 3 + third-party/datatype99.h | 132 +- third-party/metalang99.h | 19 +- third-party/metalang99/assert.h | 61 +- third-party/metalang99/choice.h | 87 +- third-party/metalang99/control.h | 92 +- third-party/metalang99/either.h | 153 +- third-party/metalang99/eval/acc.h | 16 +- third-party/metalang99/eval/eval.h | 108 + third-party/metalang99/eval/rec.h | 1069 +++++++++ third-party/metalang99/eval/syntax_checker.h | 29 +- third-party/metalang99/eval/term.h | 13 +- third-party/metalang99/gen.h | 298 +++ third-party/metalang99/lang.h | 138 +- third-party/metalang99/lang/closure.h | 50 +- third-party/metalang99/list.h | 1041 ++++---- third-party/metalang99/logical.h | 165 +- third-party/metalang99/maybe.h | 120 +- third-party/metalang99/nat.h | 394 ++- third-party/metalang99/nat/dec.h | 520 ++-- third-party/metalang99/nat/div.h | 2912 +++++++++-------------- third-party/metalang99/nat/eq.h | 523 ++-- third-party/metalang99/nat/inc.h | 520 ++-- third-party/metalang99/priv/compiler_specific.h | 10 +- third-party/metalang99/priv/util.h | 46 +- third-party/metalang99/priv/variadics/count.h | 16 +- third-party/metalang99/priv/variadics/get.h | 18 +- third-party/metalang99/tuple.h | 218 +- third-party/metalang99/util.h | 430 +--- third-party/metalang99/variadics.h | 267 +-- 31 files changed, 4832 insertions(+), 4640 deletions(-) commit eccb80a5a4c12ec7c0ac724aa7479cf1a0907ceb Author: Picca Frédéric-Emmanuel Date: Sun Feb 28 13:27:07 2021 +0100 [third-party] updated metalang99 and datatype99 third-party/Makefile.am | 65 +- third-party/datatype99.h | 410 +- third-party/metalang99.h | 7 +- third-party/metalang99/assert.h | 13 +- third-party/metalang99/choice.h | 87 +- third-party/metalang99/control.h | 102 +- third-party/metalang99/either.h | 69 +- third-party/metalang99/eval.h | 168 +- third-party/metalang99/eval/acc.h | 12 +- third-party/metalang99/eval/rec/control.h | 5 - third-party/metalang99/eval/rec/unroll.h | 49152 ---------------------- third-party/metalang99/eval/syntax_checker.h | 12 +- third-party/metalang99/eval/term.h | 9 +- third-party/metalang99/lang.h | 84 +- third-party/metalang99/lang/closure.h | 68 +- third-party/metalang99/list.h | 714 +- third-party/metalang99/logical.h | 55 +- third-party/metalang99/maybe.h | 67 +- third-party/metalang99/misc.h | 153 +- third-party/metalang99/nat.h | 561 + third-party/metalang99/nat/dec.h | 265 + third-party/metalang99/nat/div.h | 1746 + third-party/metalang99/nat/eq.h | 267 + third-party/metalang99/nat/inc.h | 265 + third-party/metalang99/priv/compiler_specific.h | 10 + third-party/metalang99/priv/util.h | 35 +- third-party/metalang99/tuple.h | 290 + third-party/metalang99/uint.h | 368 +- third-party/metalang99/uint/dec.h | 514 +- third-party/metalang99/uint/div.h | 3475 +- third-party/metalang99/uint/eq.h | 514 +- third-party/metalang99/uint/inc.h | 514 +- third-party/metalang99/util.h | 461 +- third-party/metalang99/variadics.h | 328 +- 34 files changed, 7688 insertions(+), 53177 deletions(-) commit 20e3dd4ecc017ef43b9d9dddf8bbca897013701e Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 09:26:35 2021 +0100 [hkl] wip gui/Makefile.am | 10 ++++++---- hkl/Makefile.am | 4 +++- hkl/hkl-parameter-private.h | 7 +++++++ hkl3d/Makefile.am | 12 +++++++----- 4 files changed, 23 insertions(+), 10 deletions(-) commit 4f15bf787dca53586b6427f0d1d9ecacfb6dfc00 Author: Picca Frédéric-Emmanuel Date: Thu Feb 25 11:28:33 2021 +0100 [binoculars] idem for endianess_e binoculars/hkl-binoculars-cnpy.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit 5e8f9b1082e016a2b374f846bcefdeb59ebf948a Author: Picca Frédéric-Emmanuel Date: Thu Feb 25 10:03:27 2021 +0100 [hkl] wip cnpy with datatype99 binoculars/hkl-binoculars-cnpy-private.h | 15 +++++++------ binoculars/hkl-binoculars-cnpy.c | 36 +++++++++++++------------------- binoculars/hkl-binoculars-detectors-2d.c | 6 +++--- 3 files changed, 27 insertions(+), 30 deletions(-) commit dd6cb5fc2d6e959bcd0455310daa028329cafea9 Author: Picca Frédéric-Emmanuel Date: Thu Feb 25 09:45:07 2021 +0100 [hkl] move around a function for consistency binoculars/hkl-binoculars-detectors-2d.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 69ffa59de33b1d4ffc7821afc844763d826c28b6 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 22:49:11 2021 +0100 [binoculars] rename item_offset -> flat_index binoculars/hkl-binoculars-detectors-2d.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 726fbb47ef6e467eeab38d4e83ab78113f176674 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 22:31:35 2021 +0100 [binoculars] renamed macros detector_[row|col] -> get_[row|col] binoculars/hkl-binoculars-detectors-2d.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit d35aa8c437c24bd2463b12c1af530b0488aa928e Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 22:26:05 2021 +0100 [binoculars] use the x/y/z_coordinates macros binoculars/hkl-binoculars-detectors-2d.c | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) commit 7b86606eb1ae40d2b97334605d7ec6675fdce907 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 22:20:39 2021 +0100 [binoculars] new mask_new method binoculars/hkl-binoculars-detectors-2d.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit bfd3831e38402398bbf3bdb6a1738f7cac5c4f76 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 22:17:07 2021 +0100 [hkl] inline the coordinates_new method binoculars/hkl-binoculars-detectors-2d.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) commit 3f34a1389aaec28b1f29449f1fae2bbbd7c1431a Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 21:50:45 2021 +0100 [hkl] style binoculars/hkl-binoculars-detectors-2d.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit 7fb8a0016b396b82316bccb519f4bce030dc3470 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 21:41:25 2021 +0100 [binoculars] remove the rectangular_t for now binoculars/hkl-binoculars-detectors-2d.c | 59 +++++++++++++------------------- 1 file changed, 23 insertions(+), 36 deletions(-) commit fe45e3b4d9643d68299c13093930659febd3c9e4 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 18:42:36 2021 +0100 [hkl] remove warnings hkl/api2/hkl2.c | 44 +++------- hkl/ccan/coroutine/coroutine.h | 4 +- hkl/hkl-engine-k4c.c | 182 ++++++++++++++++++++--------------------- hkl/hkl-parameter-private.h | 4 +- hkl/hkl-pseudoaxis-private.h | 4 +- tests/hkl-bench-t.c | 4 +- tests/hkl-lattice-t.c | 8 +- 7 files changed, 114 insertions(+), 136 deletions(-) commit 4a6fc7487c1753edbe8305d38225b2b71ba23f00 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 17:30:00 2021 +0100 [hkl] use -ftrack-macro-expansion=0 for tests tests/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit ac054ec544bfdb0845a8f3177e5a46c5e1d7fa66 Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 17:14:55 2021 +0100 [hkl] use -ftrack-macro-expansion=0 Documentation/figures/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 3d5ef48724f6a39d00873174eed846e76aeafecb Author: Picca Frédéric-Emmanuel Date: Sun Feb 14 16:27:51 2021 +0100 [binoculars] use datatype for the Detector (let's try) in order to evaluate the datatype99 library, I will use it for this library binoculars/Makefile.am | 2 + binoculars/hkl-binoculars-detectors-2d.c | 314 ++++++++++++++++--------------- 2 files changed, 163 insertions(+), 153 deletions(-) commit c6652ee9af07a27eb14c57dd28197d6f0224645f Author: Picca Frédéric-Emmanuel Date: Wed Feb 24 17:06:18 2021 +0100 [hkl] sort headers Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit d5caf9030ad4555edce87eb0b25349d116a82948 Author: Picca Frédéric-Emmanuel Date: Thu Aug 5 17:13:23 2021 +0200 [contrib/haskell] renamed findDatasetAttr into openDatasetWithAttr Now it seems to work out of the box. I can read read a test file :) contrib/haskell/src/Hkl/H5.hs | 24 ++++++++++++------------ contrib/haskell/src/Hkl/Pipes.hs | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) commit 1ec239aa07e0c771d8fb7c4f13be771912d1beb5 Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 16:30:13 2021 +0200 [contrib/haskell] identifier the right example in order to test findDatasetAttr contrib/haskell/data/test/config_ord05133_sbsmedv.ini | 1 + contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 5 ++++- contrib/haskell/src/Hkl/H5.hs | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) commit 6831483fc27137f2c4efbd5bfbeb0acba9c8604b Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 14:53:39 2021 +0200 [contrib/haskell] Added logging in order to help users gives advices when something is wrong in the configuration. contrib/haskell/app/Binoculars.hs | 10 +++++--- contrib/haskell/hkl.cabal | 2 ++ contrib/haskell/src/Hkl/Binoculars/Config.hs | 13 ++++++----- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 34 ++++++++++++++++++---------- 5 files changed, 40 insertions(+), 22 deletions(-) commit ca269e3d16ce14bbb5596a8200651390544826ca Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 11:15:12 2021 +0200 [contrib/haskell] style contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 3b88bab3d2c3dbfc1e75f528a67c70cca00e3731 Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 11:14:48 2021 +0200 [contrib/haskell] Added the monad-logger dependency contrib/haskell/debian/control | 3 +++ contrib/haskell/hkl.cabal | 1 + 2 files changed, 4 insertions(+) commit 7599cec87a79ae176b73956aa41f7da9c5ebac3d Author: Picca Frédéric-Emmanuel Date: Tue Aug 3 16:49:40 2021 +0200 [contrib/haskell] better error message contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 40 +++++++++++++++-------------- 1 file changed, 21 insertions(+), 19 deletions(-) commit c92b76ce91a91f7597cc229cf2382face4746133 Author: Picca Frédéric-Emmanuel Date: Tue Aug 3 15:41:49 2021 +0200 [contrib/haskell] add a config to check if datasetpattr is working .../haskell/data/test/config_ord05133_sbsmedv.ini | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) commit 4a52eabbe08cda1a1fbebf6eea4d1dcc5323e363 Author: Picca Frédéric-Emmanuel Date: Tue Aug 3 15:13:37 2021 +0200 [contrib/haskell] remove useless dependecies contrib/haskell/debian/control | 3 --- contrib/haskell/hkl.cabal | 6 ------ 2 files changed, 9 deletions(-) commit 0cf769127835b14e37a271597069c3ae11eafd37 Author: Picca Frédéric-Emmanuel Date: Tue Aug 3 14:26:56 2021 +0200 [contrib/haskell] use throwIO instead of (Maybe Dataset). The code using findDatasetAttr becomes simpler. contrib/haskell/src/Hkl/H5.hs | 18 ++++++++++-------- contrib/haskell/src/Hkl/Pipes.hs | 6 +----- 2 files changed, 11 insertions(+), 13 deletions(-) commit 44fd1212954c21ff3df57909ffa7e6f5bfe54a5a Author: Picca Frédéric-Emmanuel Date: Mon Aug 2 17:55:11 2021 +0200 [contrib/haskell] Added an ord05133 config for test .../haskell/data/test/config_ord05133_flymedv.ini | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) commit 181b0569470bfcde21747515e0ed563a43c0c0a5 Author: Picca Frédéric-Emmanuel Date: Mon Aug 2 15:56:14 2021 +0200 [contrib/haskell] first compiling version with H5DatasetPathAttr contrib/haskell/src/Hkl/Conduit.hs | 2 +- contrib/haskell/src/Hkl/H5.hs | 42 ++++++++++++++++++++++++++++++++++---- contrib/haskell/src/Hkl/Pipes.hs | 6 +++++- 3 files changed, 44 insertions(+), 6 deletions(-) commit 3e832404d0875eaad4ec3ca2cec08146e83684db Author: Picca Frédéric-Emmanuel Date: Mon Aug 2 15:55:55 2021 +0200 [constrib/haskell] Added bytestring-to-vector dependency contrib/haskell/debian/control | 3 +++ contrib/haskell/hkl.cabal | 1 + 2 files changed, 4 insertions(+) commit 596e45145c31b8de7889549b0317cde465b66e8f Author: Picca Frédéric-Emmanuel Date: Thu Jul 29 16:37:16 2021 +0200 [haskell] cabal-debian contrib/haskell/debian/control | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 57fae98233f8934ca56bc42ba03003efd907e557 Author: Picca Frédéric-Emmanuel Date: Thu Jul 29 16:09:21 2021 +0200 [haskell] remove useless file (on bullseye) contrib/haskell/hkl.cabal | 1 - contrib/haskell/src/System/ProgressBar.hs | 726 ------------------------------ 2 files changed, 727 deletions(-) commit e6ced512e09949c18c05eea7ebea84d60b3f487b Author: Picca Frédéric-Emmanuel Date: Tue Jul 27 16:47:52 2021 +0200 [haskell] Added H5Or in order to deal with multipl data sources contrib/haskell/src/Hkl/Binoculars/Config.hs | 47 ++++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 49 ++++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 24 ++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 172 ++++++++++++++++++---- contrib/haskell/src/Hkl/C/Geometry.hsc | 4 +- contrib/haskell/src/Hkl/Conduit.hs | 1 + contrib/haskell/src/Hkl/H5.hs | 27 +++- contrib/haskell/src/Hkl/Pipes.hs | 16 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 3 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 7 +- contrib/haskell/src/System/ProgressBar.hs | 93 ++++++------ 11 files changed, 311 insertions(+), 132 deletions(-) commit f042fff1369ccd4c89427792706cf1fe6cdfbd51 Author: Picca Frédéric-Emmanuel Date: Mon Jul 26 17:24:21 2021 +0200 [haskell] make it buildable on bullseye out of the box contrib/haskell/debian/rules | 2 ++ contrib/haskell/hkl.cabal | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) commit 46b447325b887518ce4a696b85f2289d7e156780 Author: Picca Frédéric-Emmanuel Date: Tue Feb 9 10:45:03 2021 +0100 [hkl] distcheck works now Makefile.am | 61 ++- configure.ac | 1 + third-party/Makefile.am | 38 ++ third-party/datatype99.h | 100 +++-- third-party/metalang99.h | 2 +- third-party/metalang99/assert.h | 4 +- third-party/metalang99/choice.h | 4 +- third-party/metalang99/control.h | 1 + third-party/metalang99/eval.h | 2 +- third-party/metalang99/eval/acc.h | 2 +- third-party/metalang99/eval/control.h | 2 +- third-party/metalang99/eval/fold.h | 2 +- third-party/metalang99/eval/syntax_checker.h | 2 +- third-party/metalang99/eval/term.h | 2 +- third-party/metalang99/lang.h | 2 +- third-party/metalang99/lang/curry.h | 2 +- third-party/metalang99/list.h | 6 +- third-party/metalang99/misc.h | 2 +- third-party/metalang99/priv/util.h | 28 ++ third-party/metalang99/priv/variadics/count.h | 181 +++++++-- third-party/metalang99/priv/variadics/get.h | 2 +- third-party/metalang99/uint.h | 2 +- third-party/metalang99/uint/dec.h | 2 +- third-party/metalang99/uint/div.h | 2 +- third-party/metalang99/uint/inc.h | 2 +- third-party/metalang99/util.h | 527 ++++++++++++++++++++++++++ third-party/metalang99/variadics.h | 10 +- 27 files changed, 881 insertions(+), 110 deletions(-) commit 35497296fccdc3fe4bd1574965b3b317eebc9335 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 18:57:25 2021 +0100 [hkl] move the datalang99 out of the way this cause troubles with gtk-doc. Documentation/api/Makefile.am | 8 +- Documentation/api/hkl-docs.xml | 153 +++++++++++---------- Documentation/figures/Makefile.am | 2 +- hkl/api2/Makefile.am | 1 + tests/Makefile.am | 2 +- tests/tap/Makefile.am | 2 +- {hkl/api2 => third-party}/datatype99.h | 0 {hkl/api2 => third-party}/metalang99.h | 0 {hkl/api2 => third-party}/metalang99/assert.h | 0 {hkl/api2 => third-party}/metalang99/aux.h | 0 {hkl/api2 => third-party}/metalang99/choice.h | 0 {hkl/api2 => third-party}/metalang99/control.h | 0 {hkl/api2 => third-party}/metalang99/either.h | 0 {hkl/api2 => third-party}/metalang99/eval.h | 0 {hkl/api2 => third-party}/metalang99/eval/acc.h | 0 .../api2 => third-party}/metalang99/eval/control.h | 0 .../metalang99/eval/diagnostics.h | 0 {hkl/api2 => third-party}/metalang99/eval/fold.h | 0 .../metalang99/eval/rec/control.h | 0 .../metalang99/eval/rec/progress.h | 0 .../metalang99/eval/rec/unroll.h | 0 .../metalang99/eval/syntax_checker.h | 0 {hkl/api2 => third-party}/metalang99/eval/term.h | 0 {hkl/api2 => third-party}/metalang99/lang.h | 0 .../api2 => third-party}/metalang99/lang/closure.h | 0 {hkl/api2 => third-party}/metalang99/lang/curry.h | 0 {hkl/api2 => third-party}/metalang99/list.h | 0 {hkl/api2 => third-party}/metalang99/logical.h | 0 {hkl/api2 => third-party}/metalang99/maybe.h | 0 {hkl/api2 => third-party}/metalang99/misc.h | 0 {hkl/api2 => third-party}/metalang99/priv/aux.h | 0 .../metalang99/priv/compiler_attr.h | 0 {hkl/api2 => third-party}/metalang99/priv/pair.h | 0 .../metalang99/priv/variadics/count.h | 0 .../metalang99/priv/variadics/get.h | 0 {hkl/api2 => third-party}/metalang99/uint.h | 0 {hkl/api2 => third-party}/metalang99/uint/dec.h | 0 {hkl/api2 => third-party}/metalang99/uint/div.h | 0 {hkl/api2 => third-party}/metalang99/uint/eq.h | 0 {hkl/api2 => third-party}/metalang99/uint/inc.h | 0 {hkl/api2 => third-party}/metalang99/variadics.h | 0 41 files changed, 87 insertions(+), 81 deletions(-) commit 42f67cbe1e7a3b70cca11cd52235d749077521a0 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 10:38:11 2021 +0100 [hkl] used datatype99 for Geometry Documentation/figures/sirius.c | 12 +- hkl/api2/hkl2.c | 103 +++++------ hkl/api2/hkl2.h | 213 ++-------------------- tests/hkl-pseudoaxis-e4ch-t.c | 15 +- tests/hkl-pseudoaxis-e4cv-t.c | 12 +- tests/hkl-pseudoaxis-e6c-t.c | 10 +- tests/hkl-pseudoaxis-k4cv-t.c | 6 +- tests/hkl-pseudoaxis-k6c-t.c | 8 +- tests/hkl-pseudoaxis-soleil-nanoscopium-robot-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 8 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 11 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- 12 files changed, 112 insertions(+), 290 deletions(-) commit 4c72c784de56b10bdd46e41b8a8138ea8ea9ef1b Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 21:26:58 2021 +0100 [hkl] use datatype99 for Trajectory hkl/api2/hkl2.c | 46 ++++++++++++++++++++-------------------------- hkl/api2/hkl2.h | 32 +++++++++++--------------------- 2 files changed, 31 insertions(+), 47 deletions(-) commit d918b0ed5d4246a0c918e4b172d982471f13f73d Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 21:26:25 2021 +0100 fix mode Documentation/figures/sirius.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 8b82bd083e15f25e439d07cb31d9ea645a061d02 Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 19:35:43 2021 +0100 [hkl] use datatype99 for Engine hkl/api2/hkl2.c | 56 ++++++++++++++++++++++++-------------------------------- hkl/api2/hkl2.h | 16 ++++------------ 2 files changed, 28 insertions(+), 44 deletions(-) commit 7065bcbb5efc8d32fe93efd42a35181de643789f Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 19:34:58 2021 +0100 indent hkl/api2/hkl2.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit e97f25ad32db539ba3fc88f9c6d33c702f03d9cd Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 19:24:20 2021 +0100 [hkl] use datatype99 for Mode hkl/api2/hkl2.c | 24 ++++++++---------------- hkl/api2/hkl2.h | 16 +++++----------- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 4 ++-- 4 files changed, 16 insertions(+), 30 deletions(-) commit 90fcf39d25b724f3f88375da661826726d17e7dc Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 18:11:24 2021 +0100 [hkl] use datatype99 for hkl2 api Documentation/figures/Makefile.am | 1 + Documentation/figures/sirius.c | 9 +- hkl/api2/Makefile.am | 1 + hkl/api2/datatype99.h | 248 + hkl/api2/hkl2.c | 76 +- hkl/api2/hkl2.h | 41 +- hkl/api2/metalang99.h | 21 + hkl/api2/metalang99/assert.h | 117 + hkl/api2/metalang99/aux.h | 527 + hkl/api2/metalang99/choice.h | 139 + hkl/api2/metalang99/control.h | 106 + hkl/api2/metalang99/either.h | 199 + hkl/api2/metalang99/eval.h | 165 + hkl/api2/metalang99/eval/acc.h | 16 + hkl/api2/metalang99/eval/control.h | 9 + hkl/api2/metalang99/eval/diagnostics.h | 11 + hkl/api2/metalang99/eval/fold.h | 16 + hkl/api2/metalang99/eval/rec/control.h | 17 + hkl/api2/metalang99/eval/rec/progress.h | 10 + hkl/api2/metalang99/eval/rec/unroll.h | 65544 ++++++++++++++++++++ hkl/api2/metalang99/eval/syntax_checker.h | 17 + hkl/api2/metalang99/eval/term.h | 15 + hkl/api2/metalang99/lang.h | 205 + hkl/api2/metalang99/lang/closure.h | 32 + hkl/api2/metalang99/lang/curry.h | 42 + hkl/api2/metalang99/list.h | 1131 + hkl/api2/metalang99/logical.h | 221 + hkl/api2/metalang99/maybe.h | 166 + hkl/api2/metalang99/misc.h | 53 + hkl/api2/metalang99/priv/aux.h | 28 + hkl/api2/metalang99/priv/compiler_attr.h | 10 + hkl/api2/metalang99/priv/pair.h | 14 + hkl/api2/metalang99/priv/variadics/count.h | 61 + hkl/api2/metalang99/priv/variadics/get.h | 13 + hkl/api2/metalang99/uint.h | 613 + hkl/api2/metalang99/uint/dec.h | 265 + hkl/api2/metalang99/uint/div.h | 1749 + hkl/api2/metalang99/uint/eq.h | 267 + hkl/api2/metalang99/uint/inc.h | 265 + hkl/api2/metalang99/variadics.h | 308 + tests/Makefile.am | 1 + tests/hkl-binoculars-t.c | 4 +- tests/hkl-pseudoaxis-e4ch-t.c | 8 +- tests/hkl-pseudoaxis-e4cv-t.c | 8 +- tests/hkl-pseudoaxis-e6c-t.c | 5 +- tests/hkl-pseudoaxis-k4cv-t.c | 5 +- tests/hkl-pseudoaxis-k6c-t.c | 6 +- tests/hkl-pseudoaxis-soleil-nanoscopium-robot-t.c | 4 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 8 +- tests/hkl-pseudoaxis-t.c | 4 +- tests/hkl-pseudoaxis-zaxis-t.c | 4 +- tests/tap/Makefile.am | 1 + 52 files changed, 72723 insertions(+), 83 deletions(-) commit 4283db44189704dfe463cdf942794e6694375479 Author: Picca Frédéric-Emmanuel Date: Thu Jan 21 15:30:42 2021 +0100 [contrib/haskell] dump a bunch stg contrib/haskell/hkl.cabal | 6 ++++++ 1 file changed, 6 insertions(+) commit 810699abc0f4159176491cf2ab9b20cfc34de8e3 Author: Picca Frédéric-Emmanuel Date: Mon Jan 4 17:28:45 2021 +0100 [contrib/haskell] rework the HklBinocularsSpace internals binoculars/hkl-binoculars.c | 178 +++++++++------------- binoculars/hkl-binoculars.h | 31 ++-- contrib/haskell/src/Hkl/Binoculars/Common.hs | 31 ++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 12 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 9 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 18 +-- 6 files changed, 111 insertions(+), 168 deletions(-) commit 87697352d568d6e82a14eb7705ca54151eb9dfca Author: Picca Frédéric-Emmanuel Date: Fri Dec 25 13:12:27 2020 +0100 [contrib/haskell] use accumulateP for all projections contrib/haskell/src/Hkl/Binoculars/Common.hs | 7 +------ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 18 +++++------------- 2 files changed, 6 insertions(+), 19 deletions(-) commit 15c68aff93338eff00e2a6b021245bb62bb9d736 Author: Picca Frédéric-Emmanuel Date: Fri Dec 25 12:27:52 2020 +0100 [binoculars] compute offset0 only once and store it in the cube this way the add_space method can not be wrong. the offset0 is necessarely the one from the cube and not by mistake another one. the burden is to maintain this offset0 each time we change the cube axes (aka when we merge it with another cube or a space). binoculars/hkl-binoculars.c | 90 +++++++++++++++++++++++---------------------- binoculars/hkl-binoculars.h | 1 + 2 files changed, 48 insertions(+), 43 deletions(-) commit d38c8fb72683c71a30599dcfbd5737d3a405bf69 Author: Picca Frédéric-Emmanuel Date: Thu Dec 24 10:19:23 2020 +0100 [contrib/haskell] do not create new cube when it is not necessary # Conflicts: # binoculars/hkl-binoculars.h # contrib/haskell/hkl.cabal # contrib/haskell/src/Hkl/Binoculars/Pipes.hs # contrib/haskell/src/Hkl/Detector.hs # contrib/haskell/src/Hkl/Python/Pyfi.hs # contrib/haskell/src/Hkl/Python/cdefs.c binoculars/hkl-binoculars.c | 146 ++++++++++++++++++++++----- binoculars/hkl-binoculars.h | 7 ++ contrib/haskell/src/Hkl/Binoculars/Common.hs | 19 ++++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 14 ++- contrib/haskell/src/Hkl/C/Binoculars.hsc | 15 ++- 5 files changed, 168 insertions(+), 33 deletions(-) commit bdce68845a151ddc3ed09fa65ce0e45097fc6b4b Author: Picca Frédéric-Emmanuel Date: Thu Dec 24 09:52:34 2020 +0100 [contrib/haskell] remove useless cabal prof options contrib/haskell/hkl.cabal | 5 ----- 1 file changed, 5 deletions(-) commit f67deb1fceb479d23c3c8f5a8c601e72295e1321 Author: Picca Frédéric-Emmanuel Date: Thu Dec 24 09:52:11 2020 +0100 [contrib/haskell] 'better' progress bar contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 2b2558769eb0fdc88d4f6c801edc10b0ec3d5a50 Author: Picca Frédéric-Emmanuel Date: Wed Dec 23 16:06:02 2020 +0100 [contrib/haskell] Added a progress bar contrib/haskell/debian/control | 3 + contrib/haskell/hkl.cabal | 8 + contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 46 +- contrib/haskell/src/System/ProgressBar.hs | 721 ++++++++++++++++++++++++++++ 4 files changed, 763 insertions(+), 15 deletions(-) commit 7162d0191377138745052d948051de05570d0685 Author: Picca Frédéric-Emmanuel Date: Tue Dec 22 15:58:10 2020 +0100 [contrib/haskell] read the big data at the end read small data first, so we can skip a frame before reading the big data. contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 11 ++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 8 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 109 +++++++++++----------- 3 files changed, 64 insertions(+), 64 deletions(-) commit d3b8db8e5a2841e14c90077969cd25c378f5c1a9 Author: Picca Frédéric-Emmanuel Date: Tue Dec 22 15:25:38 2020 +0100 [contrib/haskell] skip all the frames with the wrong attenuation contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) commit 89a2ace79985845b599db6a4c8e984b9cf314bf9 Author: Picca Frédéric-Emmanuel Date: Tue Dec 22 14:08:36 2020 +0100 [contrib/haskell] set the input range in the config file contrib/haskell/data/test/config_sixs_ruche_flymedv.ini | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit c8196b797045509d683009f23a76cb46ffaa482f Author: Picca Frédéric-Emmanuel Date: Mon Dec 21 20:35:04 2020 +0100 [contrib/haskell] wip skip earlier when attenuation is wrong contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Binoculars.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 57 ++++++++++++----------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 19 +++++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 35 ++++++++------ 5 files changed, 65 insertions(+), 50 deletions(-) commit 9035ca1f604f6c7abbd4683cb76ecab1e1e8b448 Author: Picca Frédéric-Emmanuel Date: Mon Dec 21 09:19:36 2020 +0100 [contrib/haskell] implement the C part and adapted the haskell code This code shows an issue, the DataFrameSpace should contain a Double for the attenuation not a (Maybe Double). This should be dealt before when reading the data. binoculars/hkl-binoculars.c | 16 ++++++++++------ binoculars/hkl-binoculars.h | 6 ++++-- contrib/haskell/src/Hkl/Binoculars/Common.hs | 11 +++++++---- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 5 +++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 19 ++++++++++++------- 5 files changed, 36 insertions(+), 21 deletions(-) commit 704ac73110b2aa876ba418bb521ecd57dc694595 Author: Picca Frédéric-Emmanuel Date: Fri Dec 18 17:03:52 2020 +0100 [contrib/haskell] simplify and make it also for qxqyqz contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) commit 71f40ddd0502f2087116145866b7996a0f964d1d Author: Picca Frédéric-Emmanuel Date: Fri Dec 18 16:56:12 2020 +0100 [contrib/haskell] added a toskip for hkl projection for now this is just a test. I will try to find a better solution. contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 159506032c77580fc600d51962d6833f357203a9 Author: Picca Frédéric-Emmanuel Date: Wed Dec 16 17:00:14 2020 +0100 [contrib/haskell] NoAttenuation -> coefficient 1.0 contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 412f01ed621c4918d759956b0341ee5bd4223fc0 Author: Picca Frédéric-Emmanuel Date: Wed Dec 16 16:44:41 2020 +0100 [contrib/haskell] return Nothing if the value of the attenuation is wrong contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 5 ++++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +++++- contrib/haskell/src/Hkl/H5.hs | 8 ++++---- 4 files changed, 17 insertions(+), 7 deletions(-) commit 2b80b15417f5023e61c238c7ccd9e7397986e08d Author: Picca Frédéric-Emmanuel Date: Wed Dec 16 16:17:22 2020 +0100 [contrib/haskell] read the attenuation from the file contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 11 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 11 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 5 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 151 ++++++++++++---------- 4 files changed, 99 insertions(+), 79 deletions(-) commit 77d6853273d6ab59c9e7c22cbf8fb44aa015fbd8 Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 16:19:16 2020 +0100 [contrib/haskell] removed the HklPathFromQxQyQz constructor move the sample in the SamplePath contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 19 +---------------- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 13 +----------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 26 +++++++++++------------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 3 ++- 4 files changed, 17 insertions(+), 44 deletions(-) commit a360f8b9401ea482abeb329268368f703140197a Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 15:13:15 2020 +0100 [contrib/haskell] factorize DataFrameQxQyQz extraction contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 72 +++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 78 +++++++++++------------ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 9 +-- 3 files changed, 77 insertions(+), 82 deletions(-) commit c5b3419a4d5a081e4ebfa4683360395cbdb078da Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 14:17:21 2020 +0100 [contrib/haskell] Added a way to provide an Attenuation contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 83 +++++++++------ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 106 ++++++++++++------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 21 +++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 119 ++++++++++++---------- 4 files changed, 202 insertions(+), 127 deletions(-) commit cbbf32e6f7c64dc13c534cdd58b1d543654f9e65 Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 13:37:26 2020 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Detector.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9f44eb756ec627a99b6d92a0aa7294b6ee3ad5d2 Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 11:04:50 2020 +0100 [contrib/haskell] remove and #if whcih is useless on buster contrib/haskell/src/Hkl/Xrd/Calibration.hs | 142 ++++++++--------------------- 1 file changed, 37 insertions(+), 105 deletions(-) commit 323d559b24e0c7ad67c551159dc6a6e616df63b2 Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 10:53:57 2020 +0100 [contrib/haskell] use the right check for extra package contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit d60c16cab581bdec0e3d0ed8b14a14191ab990ae Author: Picca Frédéric-Emmanuel Date: Sat Dec 12 08:50:15 2020 +0100 [contrib/haskell] use the right keyword for the attenuation contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6f00a098f23c319714f4b7d09eaaca0bfc4cf90b Author: Picca Frédéric-Emmanuel Date: Wed Dec 9 10:31:50 2020 +0100 [contrib/haskell] the original binoculars use uppercase for the axes names binoculars/hkl-binoculars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2e82766571cf7915987e31b99110e9ae41b42889 Author: Picca Frédéric-Emmanuel Date: Tue Dec 8 15:51:25 2020 +0100 [contrib/haskell] deal with the Resolution correctly. the redoslution emter by the user can be an uniq double or a list of the projection axes length. binoculars/hkl-binoculars.c | 8 ++++++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 14 ++++++++++++-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 9 +++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) commit 8c6905cc739fdd019ab7a410b6094c5a23cd099a Author: Picca Frédéric-Emmanuel Date: Tue Dec 8 14:23:59 2020 +0100 [contrib/haskell] fix an issue with the detector geometry binoculars/hkl-binoculars-cnpy-private.h | 1 + binoculars/hkl-binoculars-cnpy.c | 2 ++ binoculars/hkl-binoculars-detectors-2d.c | 54 +++++++++++++++++++++----------- binoculars/hkl-binoculars.h | 3 ++ tests/hkl-binoculars-t.c | 16 +++++++++- 5 files changed, 56 insertions(+), 20 deletions(-) commit 2da699153afbe99ae24f2f92c934c942aba08d9f Author: Picca Frédéric-Emmanuel Date: Tue Dec 8 11:25:35 2020 +0100 [contrib/haskell] read also malformed ini files the python parser dos not complain about header like this [section]##\n so remove the trailling ##\n by hand. .../data/test/config_sixs_ruche_flymedv.ini | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Config.hs | 22 +++++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) commit b325ee94206c384f228421c673b350fb76796af2 Author: Picca Frédéric-Emmanuel Date: Tue Dec 8 10:50:00 2020 +0100 [contrib/haskell] deal with the fileExtension signature changed between path 0.6.1 and 0.7 the signature of the method changed. This is bad practice but this is like that. so for now deal with this by providing two different implementations. contrib/haskell/src/Hkl/Binoculars/Config.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 4ce5e20f9b684b1e4bef2eb4685303696b337d72 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 17:05:58 2020 +0100 [contrib/haskell] error message when no data files contrib/haskell/src/Hkl/Binoculars/Config.hs | 35 +++++++++++++++++++++------- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 1 - 2 files changed, 26 insertions(+), 10 deletions(-) commit 99933b3094e9182e259eb99d3ec650de4453dfa5 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 12:08:06 2020 +0100 [contrib/haskell] match also number with 4 digits. CRISTAL beamline have numbers with 4 digits. contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1440c77a5eae7557faa952d75a7c09e9b96db482 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 11:40:00 2020 +0100 [contrib/haskell] use the default mùask for cristal contrib/haskell/data/test/config_ssd_cristal.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d18f1123d5f01e5cbf7226c0b259d5a72886dbf7 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 11:36:52 2020 +0100 [contrib/haskell] Added a default mask Detectors can have a default mask. the special "default" maske name can be used in order to select it. contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 + 1 file changed, 1 insertion(+) commit 6086466fe4d377e886ab38125a699a1132522971 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 11:35:15 2020 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Config.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 65fa3de86b1db46c96ad3bc4e5e0c82afa9fc171 Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 11:35:01 2020 +0100 [contrib/haskell] error message when detector and mask are not compatible now the computation failed if the detector mask and the detector does not have the same shape. contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 +++--- contrib/haskell/src/Hkl/Detector.hs | 40 ++++++++++++++++++---------- 2 files changed, 31 insertions(+), 17 deletions(-) commit 7de3b831ec56b120964030f97cc91b512eb75b3b Author: Picca Frédéric-Emmanuel Date: Mon Dec 7 10:14:26 2020 +0100 [contrib/haskell] Added the config_ssd_cristal.ini file this allow to test on the ssd the cristal reconstructions. contrib/haskell/data/test/config_ssd_cristal.ini | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit 1b2c2e9987038cb91665bed0fffe88438bffb822 Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 15:58:38 2020 +0100 [contrib/haskell] factorize the sample part contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 32 +++++++++++------------------- 1 file changed, 12 insertions(+), 20 deletions(-) commit dbd8a7e89fd87ab51573198385cbcc2166a0b9bc Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 15:37:44 2020 +0100 [contrib/haskell] Add a command line parameter for the range. contrib/haskell/app/Binoculars.hs | 27 +++++++++++++++------------ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 14 +++++++++++++- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 9 +++++---- 4 files changed, 34 insertions(+), 17 deletions(-) commit 3e54ba76d2cc60fcc6380c7941c0962e49b624bd Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 09:08:31 2020 +0100 [contrib/haskell] Added a TODO contrib/haskell/src/Hkl/Binoculars/Config.hs | 3 +++ 1 file changed, 3 insertions(+) commit 644cb5bfc8629d7a03dae5a1480abdc4e7293995 Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 09:05:20 2020 +0100 [contrib/haskell] Added a missing pattern in Conduit contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 9 +++++++++ 1 file changed, 9 insertions(+) commit a4e514bfb8e5421bc212de40325a10bda98cfa39 Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 09:04:58 2020 +0100 [contrib/haskell] now it compiles on all Debian targets contrib/haskell/src/Hkl/Binoculars/Config.hs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit c94b2cf08ed8075796805b017d23d808603e5b52 Author: Picca Frédéric-Emmanuel Date: Fri Dec 4 14:50:52 2020 +0100 [binoculars] fix flymake make target binoculars/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1f373b68bb2dd84c376a244e0a32c36032e059b5 Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 17:34:54 2020 +0100 [contrib/haskell] added the MedV diffractometer contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 60 +++++++++++++++-------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 3 ++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 33 +++++++++---- contrib/haskell/src/Hkl/C/Geometry.hsc | 8 +-- 6 files changed, 76 insertions(+), 36 deletions(-) commit b58675b270fe93a590c6dcd796373f7002612a81 Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 14:17:02 2020 +0100 [binoculars] avoid a segfault. the noy struct should be initialized with zeros. binoculars/hkl-binoculars-cnpy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit aa8aa2e1e3060f17dee31b31b5207821a6f78d5a Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 12:10:45 2020 +0100 [contrib/haskell] Added a config file for sixs which is flymedv .../data/test/config_sixs_ruche_flymedv.ini | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit de76a5eb53685734c6dee5b3bd5f3073e966d359 Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 12:05:36 2020 +0100 [contrib/haskell] make it compile on Debian stable contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 1e23276f62e4297d2a2a2c98fb073e7e288024b3 Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 11:31:38 2020 +0100 [contrib/haskell] remove Python from hkl.cabal No need to link with Python, since we decided to use a C implementation. contrib/haskell/hkl.cabal | 11 ----------- 1 file changed, 11 deletions(-) commit c1a8c9d014e1ce0121d0f87da871ee073bcc44af Author: Picca Frédéric-Emmanuel Date: Fri Nov 27 14:40:45 2020 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 50 +++++++++-------------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 50 +++++++++-------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 3 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 1 - 5 files changed, 42 insertions(+), 64 deletions(-) commit 7402abfe0818ada9053582d8f0881f690b4adb33 Author: Picca Frédéric-Emmanuel Date: Thu Nov 26 16:10:46 2020 +0100 [binoculars] added a way to save the default mask into npy file. binoculars/hkl-binoculars-cnpy-private.h | 5 ++ binoculars/hkl-binoculars-cnpy.c | 132 ++++++++++++++++++++++++++++++- binoculars/hkl-binoculars-detectors-2d.c | 17 ++++ binoculars/hkl-binoculars.h | 3 + tests/hkl-binoculars-t.c | 16 +++- 5 files changed, 170 insertions(+), 3 deletions(-) commit eb27b0749903ed32be4aa5f15b2a57296a76540f Author: Picca Frédéric-Emmanuel Date: Wed Nov 25 10:48:24 2020 +0100 [binoculars] Added unit test for binoculars binoculars/Makefile.am | 9 ------- binoculars/test.c | 7 ----- tests/Makefile.am | 3 +++ tests/hkl-binoculars-t.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 16 deletions(-) commit 69835cc11a6eaf62b39f66f22f0b7fe4dbab53f5 Author: Picca Frédéric-Emmanuel Date: Wed Nov 25 10:11:43 2020 +0100 [binoculars] Added the eiger1M detector binoculars/hkl-binoculars-detectors-2d.c | 135 +++++++++++++++++++++++++------ binoculars/hkl-binoculars.h | 5 +- 2 files changed, 114 insertions(+), 26 deletions(-) commit fa93a640448f76dfa8fe53fadaf9e2b0202b6270 Author: Picca Frédéric-Emmanuel Date: Tue Nov 24 15:39:46 2020 +0100 [binoculars] Reorganisation of the detector code. binoculars/hkl-binoculars-detectors-2d.c | 179 ++++++++++++++++--------------- 1 file changed, 92 insertions(+), 87 deletions(-) commit 417aa59dc11eb8fe8522cb5dc5ab32cf275b189e Author: Picca Frédéric-Emmanuel Date: Tue Nov 24 14:44:27 2020 +0100 [binoculars] added the imxpads70 detector binoculars/hkl-binoculars-detectors-2d.c | 9 ++++++--- binoculars/hkl-binoculars.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) commit 9dcc92539c2807848c64c39e151b588ac6550d33 Author: Picca Frédéric-Emmanuel Date: Mon Nov 23 18:44:44 2020 +0100 [contrib/haskell] hlint + remove useless code contrib/haskell/hkl.cabal | 5 - contrib/haskell/src/Hkl/DataSource.hs | 27 +- contrib/haskell/src/Hkl/Detector.hs | 5 +- contrib/haskell/src/Hkl/Flat.hs | 31 +-- contrib/haskell/src/Hkl/Python.hs | 10 +- contrib/haskell/src/Hkl/Python/Pyfi.hs | 484 --------------------------------- contrib/haskell/src/Hkl/Python/QQ.hs | 12 - contrib/haskell/src/Hkl/Python/cdefs.c | 160 ----------- 8 files changed, 31 insertions(+), 703 deletions(-) commit e6099991995862ba9b263cdd30e72f9b4b0bfe34 Author: Picca Frédéric-Emmanuel Date: Mon Nov 23 16:36:15 2020 +0100 [contrib/haskell] better presentation of arrays contrib/haskell/src/Hkl/C/Binoculars.hsc | 9 ++------- contrib/haskell/src/Hkl/Orphan.hs | 8 +++++--- 2 files changed, 7 insertions(+), 10 deletions(-) commit a68096d54b79e86702b2dc7e236df0c65869c7e1 Author: Picca Frédéric-Emmanuel Date: Mon Nov 23 15:32:50 2020 +0100 [binoculars] check the magic part of npy binoculars/hkl-binoculars-cnpy.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 8a3453e12a903804f9c5ba08f537266dc462273a Author: Picca Frédéric-Emmanuel Date: Mon Nov 23 15:19:09 2020 +0100 [contrib/haskell] use hkl_binoculars_detector_2d_mask_load It is now possible to interact with Python via npy files. This way we can avoid bad interaction between haskell and python contrib/haskell/data/test/config_sdd_local.ini | 26 ---------------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 ++++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 4 +-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 27 ++++++++++------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 ++--- contrib/haskell/src/Hkl/Detector.hs | 37 ++++++++++++++++++----- 6 files changed, 57 insertions(+), 51 deletions(-) commit 84a4d60eba394f36f63ff1df2168878cffce0bc0 Author: Picca Frédéric-Emmanuel Date: Fri Nov 20 09:47:48 2020 +0100 [binoculars] add a method to read npy files. binoculars/Makefile.am | 13 +- binoculars/cnpy.cpp | 340 ------------------------------- binoculars/cnpy.h | 268 ------------------------ binoculars/hkl-binoculars-cnpy-private.h | 20 ++ binoculars/hkl-binoculars-cnpy.c | 271 ++++++++++++++++++++++++ binoculars/hkl-binoculars-detectors-2d.c | 18 ++ binoculars/hkl-binoculars.c | 7 +- binoculars/hkl-binoculars.h | 12 ++ binoculars/test.c | 7 + 9 files changed, 343 insertions(+), 613 deletions(-) commit b5014656e1166a067beb1478ce85ac77201edb5e Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 15:46:12 2020 +0100 [binoculars] style binoculars/hkl-binoculars-detectors-2d.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit b0cc17e4c288b92e60b9500efe4eb899da871e81 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 15:27:51 2020 +0100 [binoculars] removed the shape from imxpad_t binoculars/hkl-binoculars-detectors-2d.c | 44 +++++++++++++++----------------- 1 file changed, 21 insertions(+), 23 deletions(-) commit d9eea2c7ec32a34ea121c5284eb0ec893161eefe Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 15:22:43 2020 +0100 [binoculars] removed the shape from the rectangular_t binoculars/hkl-binoculars-detectors-2d.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 7bf386725f7e59bd5a7982b852cb4633bd52d8fe Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 15:16:53 2020 +0100 [binoculars] removed imxpad_s140 and xpad_flat_corrected struct they are useless now that we store eveythings in detectors binoculars/hkl-binoculars-detectors-2d.c | 46 +++++++++++++------------------- 1 file changed, 19 insertions(+), 27 deletions(-) commit 4fa0112ca6de7a2e6784d3331a8399d1758d4ca0 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 14:49:56 2020 +0100 [binoculars] Operations hold a reference to detector type binoculars/hkl-binoculars-detectors-2d.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 3146aca27bdea82011f744969b3835fcc03b64c4 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 14:37:01 2020 +0100 [binoculars] idem for the shape_get binoculars/hkl-binoculars-detectors-2d.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) commit 442c9890cc534918a585d4ae2092db95423ad4d8 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 14:34:26 2020 +0100 [binoculars] remove the specific name_get operation. now we read the name directly from the detectors struct. binoculars/hkl-binoculars-detectors-2d.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) commit b2e64f63147d7dd987cb12dd359734d9d9636767 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 14:31:16 2020 +0100 [binoculars] added the detectors struct with all detectors. binoculars/hkl-binoculars-detectors-2d.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 6030255f2899c5fbbe69bbe77910e1dad3dd5619 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 13:43:33 2020 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Detector.hs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) commit 74b02e935adaa281ba73e406cac00dcfbb7d2279 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 13:43:17 2020 +0100 [binoculars] Embeded the cnpy library to read npy files This way it will be easy to exchange data with numpy. binoculars/Makefile.am | 2 + binoculars/cnpy.cpp | 340 +++++++++++++++++++++++++++++++++++++++++++++++++ binoculars/cnpy.h | 268 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 610 insertions(+) commit ec8501fd29270c1989bce4d760443050994a13dd Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 10:57:55 2020 +0100 [contrib/haskell] reorg contrib/haskell/src/Hkl/Detector.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 977efd961ecdc8606cfb72f5c54b4fc1f994c6f6 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 10:53:44 2020 +0100 [contrib/haskell] the first detector is the default one. contrib/haskell/src/Hkl/Detector.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 63df3b264216810d017a974538b3f993db353c3e Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 10:53:24 2020 +0100 [contrib/haskell] sort the detector list when failling contrib/haskell/src/Hkl/Detector.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 29405a69d8b1b13ea1787678f4949ba936e9f647 Author: Picca Frédéric-Emmanuel Date: Wed Nov 18 19:17:58 2020 +0100 [contrib/haskell] move the shape also in the detector contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Detector.hs | 51 +++++++++++++--------------- 2 files changed, 24 insertions(+), 29 deletions(-) commit 23fbf7df868900118b73a2a02688d569039e8a41 Author: Picca Frédéric-Emmanuel Date: Wed Nov 18 18:40:17 2020 +0100 [contrib/haskell] integrate the name in the Detector2D contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Detector.hs | 45 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 24 deletions(-) commit fc58d14846b76911c251e9fde764621582b2285c Author: Picca Frédéric-Emmanuel Date: Wed Nov 18 18:19:39 2020 +0100 [contrib/haskell] use the new C-API contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 4 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 23 +-- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 21 +-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 8 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 8 +- contrib/haskell/src/Hkl/Detector.hs | 175 ++++++++++------------ 6 files changed, 103 insertions(+), 136 deletions(-) commit 5c072a6114a6a1fb249b901099f977f3d75f6cdb Author: Picca Frédéric-Emmanuel Date: Wed Nov 18 17:43:23 2020 +0100 [binoculars] Added the 2D detector shape method binoculars/hkl-binoculars-detectors-2d.c | 36 +++++++++++++++++++++++++------- binoculars/hkl-binoculars.h | 3 +++ 2 files changed, 32 insertions(+), 7 deletions(-) commit 96e23cd802b2770c154156a5502f5173ca531990 Author: Picca Frédéric-Emmanuel Date: Wed Nov 18 10:55:37 2020 +0100 [binoculars] create a generic API for 2D detectors binoculars/hkl-binoculars-detectors-2d.c | 75 +++++++++++++++++---- binoculars/hkl-binoculars.h | 110 ++++++++++++++++++------------- 2 files changed, 128 insertions(+), 57 deletions(-) commit 5906d62ada0edb527bf2af3dd966b83881b11c3c Author: Picca Frédéric-Emmanuel Date: Tue Nov 17 16:30:03 2020 +0100 [binoculars] Added the imxpad_s140 mask binoculars/hkl-binoculars-detectors-2d.c | 106 ++++++++++++++++++++++++------- 1 file changed, 82 insertions(+), 24 deletions(-) commit 242770cbf96c7a09e65849fb402ca83b0a5760a3 Author: Picca Frédéric-Emmanuel Date: Tue Nov 17 14:23:28 2020 +0100 [binoculars] refactoring of the code. binoculars/hkl-binoculars-detectors-2d.c | 223 ++++++++++++++++--------------- 1 file changed, 116 insertions(+), 107 deletions(-) commit 5e227a8353f9cdf28bd344f39ee8701d05c5c9a2 Author: Picca Frédéric-Emmanuel Date: Tue Nov 17 10:04:05 2020 +0100 [binoculars] defines row_replicate and row_fill macros These macros can be used for arrays with different element type. (for example, pixels coordinates are double and mask array are uint8_t). binoculars/hkl-binoculars-detectors-2d.c | 43 +++++++++++++++----------------- 1 file changed, 20 insertions(+), 23 deletions(-) commit 83ee8f6f31177071272481782fac1146864bc55a Author: Picca Frédéric-Emmanuel Date: Mon Nov 16 18:34:47 2020 +0100 [binoculars] Added the imxpad s170 detector. binoculars/hkl-binoculars-detectors-2d.c | 99 ++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 6 deletions(-) commit d3a880da2852770b4685fcf85fb8dec530263c73 Author: Picca Frédéric-Emmanuel Date: Mon Nov 16 16:42:51 2020 +0100 [contrib/haskell] use the hkl implementation of XpadFlatCorrected contrib/haskell/data/test/config_sdd_local.ini | 2 +- contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Detector.hs | 118 +++++++++---------------- 3 files changed, 44 insertions(+), 77 deletions(-) commit 187b382ee2597a01cdc2ae635c7120c9042a1d40 Author: Picca Frédéric-Emmanuel Date: Mon Nov 16 16:41:40 2020 +0100 [hkl-binoculars] Added the XpadFlatCorrected detector. binoculars/Makefile.am | 1 + binoculars/hkl-binoculars-detectors-2d.c | 159 +++++++++++++++++++++++++++++++ binoculars/hkl-binoculars.h | 10 ++ 3 files changed, 170 insertions(+) commit f2cf141c2011c37c5cb038c4519a72c8f06f1473 Author: Picca Frédéric-Emmanuel Date: Mon Nov 16 16:18:35 2020 +0100 [contrib/haskell] indentation contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7dca3374808aa16238c75fbb1a25e04d392ae3fa Author: Picca Frédéric-Emmanuel Date: Mon Nov 16 16:18:13 2020 +0100 [binoculars] memory leak spotted by valgrind binoculars/hkl-binoculars.c | 1 + 1 file changed, 1 insertion(+) commit 13a4c1611959cba9d5e424b8de8f3aa81f886908 Author: Picca Frédéric-Emmanuel Date: Fri Nov 13 17:35:41 2020 +0100 update cabal to work with local python3.9 contrib/haskell/hkl.cabal | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) commit 0195bec8984ccfc62f65abdd6389568bd7c4f341 Author: Picca Frédéric-Emmanuel Date: Wed Nov 11 11:05:02 2020 +0100 [contrib/haskell] use darray_ptrdiff for spaces indexes. binoculars/hkl-binoculars.c | 36 +++++++++++++++++++++--------------- binoculars/hkl-binoculars.h | 14 ++++++++++++-- 2 files changed, 33 insertions(+), 17 deletions(-) commit 9b5508ee11dc48756e72d0e2ae1d006537fb03e3 Author: Picca Frédéric-Emmanuel Date: Tue Nov 10 16:02:10 2020 +0100 [contrib/haskell] use darray_axis instead of dedicated struct This way we will have a structure for all the axes. binoculars/hkl-binoculars.c | 212 +++++++++++++++++-------------- binoculars/hkl-binoculars.h | 8 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 37 ++++-- 3 files changed, 144 insertions(+), 113 deletions(-) commit 1b3216a17f35fae14d6cf4503f18387aa3440be9 Author: Picca Frédéric-Emmanuel Date: Fri Nov 6 16:20:15 2020 +0100 [contrib/haskell] now project in constant space. binoculars/hkl-binoculars.c | 54 +++++++++++------------ binoculars/hkl-binoculars.h | 43 ++++++++++-------- contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 30 ++++++++++--- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 29 +++++++++--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 25 +++++------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 27 +++++++++--- contrib/haskell/src/Hkl/Pipes.hs | 3 +- 7 files changed, 133 insertions(+), 78 deletions(-) commit 4c038536e9d78bd6992bdd5baecc0eddee118f6b Author: Picca Frédéric-Emmanuel Date: Sun Nov 1 10:28:39 2020 +0100 [contrib/haskell] small reorganisation of the code contrib/haskell/src/Hkl/Detector.hs | 97 ++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 50 deletions(-) commit d6d3bb46bd9faa2410d392fd31cff6bb73abc5b1 Author: Picca Frédéric-Emmanuel Date: Sat Oct 31 10:13:51 2020 +0100 [contrib/haskell] avoid malloc for each frame. we allocate the memory for only one image. this way we reduce the amount of memory allocation. contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 8 +++++--- contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 8 +++++--- contrib/haskell/src/Hkl/Conduit.hs | 8 +++++++- contrib/haskell/src/Hkl/H5.hs | 14 +++++++++++++- contrib/haskell/src/Hkl/Pipes.hs | 9 ++++++++- 5 files changed, 38 insertions(+), 9 deletions(-) commit 0cd7ae9d7e536b79ab96d5248e325b78b82efc86 Author: Picca Frédéric-Emmanuel Date: Fri Oct 23 10:21:34 2020 +0200 [contrib/haskell] Added the sdd local config contrib/haskell/data/test/config_sdd_local.ini | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit 8f92471b031475cfc684a68414964fc8589595fd Author: Picca Frédéric-Emmanuel Date: Fri Oct 23 10:20:56 2020 +0200 [config/haskell] fix compilation on Debian unstable contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1c341a5e38a69eac4056a50ed66629d0d29e7644 Author: Picca Frédéric-Emmanuel Date: Fri Oct 23 09:23:08 2020 +0200 (contrib/haskell] cabal-debian contrib/haskell/debian/compat | 2 +- contrib/haskell/debian/control | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) commit af44259001b9dd5a86afed7e289e38cfbf663c90 Author: Picca Frédéric-Emmanuel Date: Wed Oct 21 14:42:08 2020 +0200 [contrib/haskell] implement also a conduit version of the process contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/Binoculars.hs | 2 + contrib/haskell/src/Hkl/Binoculars/Common.hs | 59 ++--- contrib/haskell/src/Hkl/Binoculars/Conduit.hs | 285 ++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Pipes.hs | 309 ++++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Projections.hs | 156 +++++------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 201 +------------- contrib/haskell/src/Hkl/Conduit.hs | 40 +-- 9 files changed, 699 insertions(+), 356 deletions(-) commit eba8e72c57694b5b687580ee59162159181120aa Author: Picca Frédéric-Emmanuel Date: Tue Oct 20 11:32:11 2020 +0200 [haskell/contrib] added the conduit version of the pipes contrib/haskell/hkl.cabal | 11 ++++++---- contrib/haskell/src/Hkl/Conduit.hs | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) commit 7ad707a6871a0219cc069115ca4dbdb5eaa0069d Author: Picca Frédéric-Emmanuel Date: Wed Oct 14 14:29:28 2020 +0200 [contrib/haskell] renamed the config files ...{config_hkl_facet.cfg => config_sixs_biggest.ini} | 4 ++-- contrib/haskell/data/test/config_sixs_local.ini | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) commit 954b508512ed6a6f717852e1d9878208523e227c Author: Picca Frédéric-Emmanuel Date: Wed Oct 14 13:51:26 2020 +0200 updated config to deal with the biggest map ever made on sixs. binoculars/hkl-binoculars.c | 1 + contrib/haskell/data/test/config_hkl_facet.cfg | 8 +++++--- contrib/haskell/src/Hkl/Binoculars/Common.hs | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 5 +++-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 2 +- 6 files changed, 12 insertions(+), 7 deletions(-) commit b23ed42287fc3eacc287b7d9389dea87635fd959 Author: Picca Frédéric-Emmanuel Date: Tue Oct 13 10:30:18 2020 +0200 [hkl] fix the parallel scripts scripts/clean-all | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 6c35373943fb58c92e28f60a53b819cca900304f Author: Picca Frédéric-Emmanuel Date: Mon Oct 12 15:10:23 2020 +0200 [contrib/haskell] deal with the masked data's. binoculars/hkl-binoculars.c | 123 ++++++++++++++-------- binoculars/hkl-binoculars.h | 6 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 22 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 4 +- contrib/haskell/src/Hkl/Detector.hs | 22 ++-- 5 files changed, 113 insertions(+), 64 deletions(-) commit 546c912a9821d9cc9be5ca340302e5c3c9ecab66 Author: Picca Frédéric-Emmanuel Date: Mon Oct 12 11:10:55 2020 +0200 [contrib/haskell] consistent use of size_t and ptrdiff_t for correct computation of values we use size_t -> only positive values (values whcih can not be negativ). ptrdiff_t -> when computing differences of indexes (the result is signed). binoculars/hkl-binoculars.c | 118 +++++++++++----------- binoculars/hkl-binoculars.h | 44 ++++---- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +- contrib/haskell/src/Hkl/C/Binoculars.hsc | 40 ++++---- 4 files changed, 104 insertions(+), 104 deletions(-) commit 6d73afb17cac0e0bbe7b3d728a0abfe5ec9f9151 Author: Picca Frédéric-Emmanuel Date: Fri Oct 9 14:34:16 2020 +0200 [haskell/contrib] renamed binocularsInputInputrange -> binocularsInputInputRange contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 ++++---- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) commit 92a322f7b8127432b616e4d76de56e1721cd0a2f Author: Picca Frédéric-Emmanuel Date: Fri Oct 9 14:32:44 2020 +0200 [contrib/haskell] deal with the XpadFlatCorrected detector contrib/haskell/src/Hkl/Binoculars/Config.hs | 1 + contrib/haskell/src/Hkl/Detector.hs | 81 +++++++++++++++++++++++++--- 2 files changed, 76 insertions(+), 6 deletions(-) commit cb3a49cf8734c93ac3725679d17656d1b1024e8a Author: Picca Frédéric-Emmanuel Date: Wed Oct 7 14:32:25 2020 +0200 [contrib/haskell] rename the projections. contrib/haskell/src/Hkl/Binoculars/Config.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 1ff82fa32af1bd8be9b2a7b36e28e5b977d33cb5 Author: Picca Frédéric-Emmanuel Date: Wed Oct 7 14:31:35 2020 +0200 [contrib/haskell] we can extract k from the geometry binoculars/hkl-binoculars.c | 4 +-- binoculars/hkl-binoculars.h | 2 -- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 37 +++++++++-------------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 -- 4 files changed, 17 insertions(+), 28 deletions(-) commit d5334bc8b028a86128eeb7d4f7d691bce362b578 Author: Picca Frédéric-Emmanuel Date: Wed Oct 7 13:26:43 2020 +0200 [binoculars] fix the computation of the projection. ki is no more an unit vector, so kf and ki should have the same norm. This is why we multiply by the norm of ki before doing the difference. binoculars/hkl-binoculars.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 81a1b321843c1fddb26ad70beaa4f5919619bbab Author: Picca Frédéric-Emmanuel Date: Tue Oct 6 16:59:41 2020 +0200 [contrib/haskell] link with static hkl library during developpement it is nice to link with the static version of the hkl and hkl-binoculars libraries. contrib/haskell/hkl.cabal | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit ca76df5f049e70f59b28d11edefb9b50511415a2 Author: Picca Frédéric-Emmanuel Date: Fri Oct 2 15:56:11 2020 +0200 release 5.0.0.2661 Documentation/hkl.org.in | 2 +- scripts/clean-all | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) commit 8e782a00792cc3753e76d6d022da8626f9ca00c1 Author: Picca Frédéric-Emmanuel Date: Fri Oct 2 15:48:14 2020 +0200 pre-release hkl/hkl-engine-soleil-nanoscopium-robot.c | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit e1efe6c9a500e86e81f1c9bf11bf5c2f8c750209 Author: Picca Frédéric-Emmanuel Date: Wed Sep 30 18:42:27 2020 +0200 [hkl] wip nanoscopium Documentation/hkl.org.in | 76 +++++------ hkl/Makefile.am | 1 + hkl/api2/hkl2.c | 6 +- hkl/api2/hkl2.h | 20 ++- hkl/hkl-axis.c | 28 ++++- hkl/hkl-engine-soleil-nanoscopium-robot.c | 147 ++++++++++++++++++++++ hkl/hkl-geometry-private.h | 6 +- hkl/hkl-geometry.c | 35 +++--- hkl/hkl-parameter-private.h | 26 +++- hkl/hkl-parameter.c | 28 ++++- hkl/hkl-pseudoaxis-auto.c | 17 ++- tests/Makefile.am | 1 + tests/hkl-pseudoaxis-soleil-nanoscopium-robot-t.c | 87 +++++++++++++ 13 files changed, 413 insertions(+), 65 deletions(-) commit 0f7ab505544203c213c1990623d780432c9f6ff2 Author: Picca Frédéric-Emmanuel Date: Fri Sep 25 10:12:15 2020 +0200 [binoculars] 2nd try to make it a static library for binoculars-ng binoculars/Makefile.am | 5 +++-- contrib/haskell/hkl.cabal | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) commit ce4d79d00a79eab44b129ae66fc19bb05bc09caf Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 16:36:14 2020 +0200 [contrib/haskell] do not install useless bin contrib/haskell/debian/haskell-hkl-utils.install | 2 - contrib/haskell/hkl.cabal | 78 ++++++++++++------------ 2 files changed, 39 insertions(+), 41 deletions(-) commit dd0b86b7d78007ea9ed225e84022daf3e76777df Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 16:29:26 2020 +0200 [contrib/haskell] more comments fixes contrib/haskell/src/Hkl/Binoculars/Common.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 6 +++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 4 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 ++++---- contrib/haskell/src/Hkl/C/Geometry.hsc | 4 ++-- contrib/haskell/src/Hkl/C/GeometryList.hsc | 2 +- contrib/haskell/src/Hkl/Detector.hs | 6 +++--- contrib/haskell/src/Hkl/H5.hs | 12 ++++++------ contrib/haskell/src/Hkl/Lattice.hs | 2 +- contrib/haskell/src/Hkl/Nxs.hs | 4 ++-- contrib/haskell/src/Hkl/Pipes.hs | 2 +- contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 4 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 8 ++++---- contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 10 +++++----- contrib/haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 18 +++++++++--------- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 4 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 18 +++++++++--------- contrib/haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 4 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 14 +++++++------- contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 4 ++-- contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 10 +++++----- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 4 ++-- contrib/haskell/src/Hkl/Python/Pyfi.hs | 4 ++-- contrib/haskell/src/Hkl/Types.hs | 10 +++++----- contrib/haskell/src/Hkl/Types/Parameter.hsc | 4 ++-- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 6 +++--- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 10 +++++----- contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 2 +- 30 files changed, 98 insertions(+), 98 deletions(-) commit e4ffc28470de61e6a7276d9db242017b4f6f914d Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 16:19:40 2020 +0200 [contrib/haskell] more comments fixes contrib/haskell/src/Hkl/C/Geometry.hsc | 14 ++++----- contrib/haskell/src/Hkl/Nxs.hs | 38 +++++++++++------------ contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 6 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 8 ++--- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 2 +- contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 6 ++-- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 34 ++++++++++---------- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 12 +++---- contrib/haskell/src/Hkl/Types.hs | 10 +++--- contrib/haskell/src/Hkl/Types/Parameter.hsc | 12 +++---- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 16 +++++----- 12 files changed, 80 insertions(+), 80 deletions(-) commit c72b447194594281788e8c60606d7f56b42c0f0f Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 16:11:01 2020 +0200 [contrib/haskell] more comments fixes contrib/haskell/src/Hkl/C/Lattice.hsc | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) commit d1107a3bd9cdb8a9ae155ccce66afccd4d10948c Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 16:05:46 2020 +0200 [contrib/haskell] fix comments contrib/haskell/src/Hkl/Lattice.hs | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) commit 229e469ea1d6dabfba54e34dae16299b7b222af7 Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 15:58:34 2020 +0200 [contrib/haskell] skip a test for now contrib/haskell/test/BinocularsSpec.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9e2177e6a7dbdc8ef9537634bcd90fb1d2f0adf5 Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 15:46:06 2020 +0200 [contrib/haskell] rename binoculars binoculars-ng contrib/haskell/debian/haskell-hkl-utils.install | 2 +- contrib/haskell/hkl.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 9d6fa34597244a44e95f0e2a6e158db6517b3ae2 Author: Picca Frédéric-Emmanuel Date: Tue Sep 22 15:08:14 2020 +0200 pre-release contrib/haskell/hkl.cabal | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) commit b410cf60f918f51199414e10ffa879cc0100daea Author: Picca Frédéric-Emmanuel Date: Mon Sep 21 11:16:07 2020 +0200 [binoculars] install the binoculars library binoculars/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0faaa0fa112829c37c14c89fe61cd5ab7c8af9b8 Author: Picca Frédéric-Emmanuel Date: Mon Sep 21 11:07:29 2020 +0200 [binoculars] install the header for the haskell binding Makefile.am | 4 ++-- binoculars/Makefile.am | 3 ++- configure.ac | 1 + hkl-binoculars.pc.in | 13 +++++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) commit c0acc11507268a06738fdc9702c38809ddc9eede Author: Picca Frédéric-Emmanuel Date: Wed Sep 9 16:19:02 2020 +0200 [contrib/haskell] fixed salsa-CI compilation of the haskell part contrib/haskell/debian/gbp.conf | 2 ++ 1 file changed, 2 insertions(+) commit ba376929470a058879ddb50cb35b0872a1262c84 Author: Picca Frédéric-Emmanuel Date: Thu Jul 16 17:47:00 2020 +0200 [contrib/haskell] now thze hkl projection work for Claire binoculars/Makefile.am | 2 ++ binoculars/hkl-binoculars.c | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 4 +--- 3 files changed, 4 insertions(+), 4 deletions(-) commit 12051d1f0412715464979bc98629268c67745b8c Author: Picca Frédéric-Emmanuel Date: Wed Jul 15 17:46:55 2020 +0200 [contrib/haskell] unused contrib/haskell/src/Hkl/Pipes.hs | 2 -- 1 file changed, 2 deletions(-) commit 851c8497586b55612184ae38057ce2d281975404 Author: Picca Frédéric-Emmanuel Date: Wed Jul 15 17:36:48 2020 +0200 [contrib/haskell] read the cristal data's contrib/haskell/src/Hkl/Binoculars/Common.hs | 3 ++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 29 +++++++++++++++------------- contrib/haskell/src/Hkl/H5.hs | 5 +++++ 4 files changed, 24 insertions(+), 15 deletions(-) commit ef4a62b9c4d323aa4cb196c14dc67b1a85a68252 Author: Picca Frédéric-Emmanuel Date: Mon Jul 13 19:04:30 2020 +0200 [contrib/haskell] deal with the cristal diffractometer the CRISTAL experiment, was done with only kphi moving. So the other motors are read only once. Only kphi is a vector of values. contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 62 ++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 16 deletions(-) commit de33242e2342e296f3d5ca1585941a28a1fd0e9a Author: Picca Frédéric-Emmanuel Date: Mon Jul 6 10:42:42 2020 +0200 [contrib/haskell] change the Detector Type signature. data Detector a sh where ... Here a is PyFAI for a Detector available in PyFAI or ZeroD when it is a ponctual. contrib/haskell/src/Hkl/Binoculars/Config.hs | 18 +++++++++-------- contrib/haskell/src/Hkl/Detector.hs | 15 ++++++-------- contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 23 +++++++++++----------- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 17 ++++++++-------- contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 17 ++++++++-------- .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 17 ++++++++-------- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 17 ++++++++-------- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 18 ++++++++--------- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 17 ++++++++-------- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 16 +++++++-------- contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 10 +++++----- 11 files changed, 95 insertions(+), 90 deletions(-) commit 668ca2a087ddb7dc398b7cf563da86cc91b8bf13 Author: Picca Frédéric-Emmanuel Date: Thu Jun 25 14:52:12 2020 +0200 [contrib/haskell] added an cfg-update command contrib/haskell/app/Binoculars.hs | 24 ++++++++++++++++-------- contrib/haskell/src/Hkl/Binoculars/Config.hs | 26 ++++++++++++++++++-------- 2 files changed, 34 insertions(+), 16 deletions(-) commit b5fe2aff768e6f0cf26b98a0b2780c8a21addb4b Author: Picca Frédéric-Emmanuel Date: Tue Jun 23 12:44:42 2020 +0200 [contrib/haskell] added the detector to the binoculars configuration contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 +++++++++++++++ contrib/haskell/src/Hkl/Detector.hs | 12 ++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) commit d32e29a1c18650991ef948f865d6ed49b0ceb151 Author: Picca Frédéric-Emmanuel Date: Fri Jun 19 16:00:33 2020 +0200 [contrib/haskell] rename ADetector -> SomeDetector the SomeX pattern is well known. contrib/haskell/src/Hkl/Detector.hs | 20 ++++++--- contrib/haskell/src/Hkl/PyFAI/Detector.hs | 18 +++++--- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 71 +++++++++++++++---------------- 3 files changed, 60 insertions(+), 49 deletions(-) commit 9142843dc0900270f832a99341e3799287e6be28 Author: Picca Frédéric-Emmanuel Date: Fri Jun 19 14:59:39 2020 +0200 [contrib/haskell] cabal-debian contrib/haskell/debian/control | 6 ++++++ 1 file changed, 6 insertions(+) commit 7edbf6f91e9eb628fdb1559f5056b01d4e6884e3 Author: Picca Frédéric-Emmanuel Date: Fri Jun 12 22:47:32 2020 +0200 [contrib/haskell] todo contrib/haskell/doc/TODO.org | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit c1fdaf4ffcfdbc20e9c3ae1a72e65bba43de58fe Author: Picca Frédéric-Emmanuel Date: Fri Jun 12 21:56:25 2020 +0200 [contrib/haskell] make it compiles on buster contrib/haskell/hkl.cabal | 9 ++++++++- contrib/haskell/src/Hkl/Binoculars/Config.hs | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) commit f33b13d2be525ea1b04f95a14e7d35b40bd9c324 Author: Picca Frédéric-Emmanuel Date: Wed Jun 10 21:06:31 2020 +0200 [contrib/haskell] better name contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 8f47a870b741c9ffa858d73c8eafbe261ab7a502 Author: Picca Frédéric-Emmanuel Date: Wed Jun 10 21:06:17 2020 +0200 [contrib/haskell] add TODO.org for the detector selection. contrib/haskell/doc/TODO.org | 170 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) commit 916b18c99bff8380dd2add3b72376660c8bc4eee Author: Picca Frédéric-Emmanuel Date: Tue Jun 9 19:01:10 2020 +0200 wip cristal implementation contrib/haskell/app/Binoculars.hs | 13 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 54 +++++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 66 ++++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 225 +++++++++++++--------- contrib/haskell/src/Hkl/Detector.hs | 21 +- 5 files changed, 243 insertions(+), 136 deletions(-) commit 7260a82ed09dababb8321b0d648c3b5b4ba59a91 Author: Picca Frédéric-Emmanuel Date: Thu Jun 4 14:25:31 2020 +0200 [contrib/haskell] added TODO contrib/haskell/src/Hkl/H5.hs | 3 +++ 1 file changed, 3 insertions(+) commit 8f6a08ed4b3c0baf03318dfb5917c1eb1d6bdf7f Author: Picca Frédéric-Emmanuel Date: Wed May 27 11:45:49 2020 +0200 [contrib/haskell] read the mask from the configuration contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Projections.hs | 113 ++++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 5 +- contrib/haskell/src/Hkl/Detector.hs | 36 ++++++- contrib/haskell/src/Hkl/Orphan.hs | 10 ++ contrib/haskell/src/Hkl/Python/Pyfi.hs | 78 +++++++-------- contrib/haskell/src/ghkl.hs | 14 +-- 7 files changed, 152 insertions(+), 105 deletions(-) commit c48053ea607d4306d6747c8dee27c32f636e3d00 Author: Picca Frédéric-Emmanuel Date: Mon May 25 13:07:40 2020 +0200 [contrib/haskell] simplify the getDiffractometer part contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) commit 3819efeec2a4f3ad429ad9118f2825af5e4c604e Author: Picca Frédéric-Emmanuel Date: Mon May 25 12:34:21 2020 +0200 [contrib/haskell] bunch of renamed types contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 66 +++++++++++++----------------- 1 file changed, 29 insertions(+), 37 deletions(-) commit c7986dd06b1af0305b2752095d3129a6fbed43a6 Author: Picca Frédéric-Emmanuel Date: Mon May 25 12:19:44 2020 +0200 [contrib/haskell] implement the Hklinput methof for the uhv geometry contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 57 ++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 14 deletions(-) commit f998802d3bfd1260fd18f5f4806b946e46c2eb02 Author: Picca Frédéric-Emmanuel Date: Mon May 25 09:56:48 2020 +0200 [contrib/haskell] switched to the Bidir api to manage the config this way it will be possible to write a default config easily for the users. We can add comments and add (later) a command in order to gnerate these confis. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars/Config.hs | 354 ++++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 34 +-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 30 +- contrib/haskell/test/BinocularsSpec.hs | 27 +- 5 files changed, 243 insertions(+), 203 deletions(-) commit 87bf6e19805a2c146183bad23596d98cd04b30e5 Author: Picca Frédéric-Emmanuel Date: Fri May 22 17:54:43 2020 +0200 [contrib/haskell] overwrite the sample parameters with the config contrib/haskell/src/Hkl/Binoculars/Config.hs | 93 +++++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 48 ++++++------ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 6 +- contrib/haskell/src/Hkl/Types.hs | 12 +-- 4 files changed, 83 insertions(+), 76 deletions(-) commit e2d8b840d12de32d614722e19f8fe7ca40bb8ae3 Author: Picca Frédéric-Emmanuel Date: Thu May 21 16:47:30 2020 +0200 [contrib/haskell] the hkl projection should works binoculars/hkl-binoculars.c | 5 +- binoculars/hkl-binoculars.h | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 59 +++++---- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 153 ++++++++++------------ 4 files changed, 105 insertions(+), 114 deletions(-) commit 8b6216639197cf9f510ef25ebdd7ac8244cccc0f Author: Picca Frédéric-Emmanuel Date: Tue May 19 16:19:23 2020 +0200 [contrib/haskell] make it compiles on Debian unstable binoculars/Makefile.am | 9 +- contrib/haskell/hkl.cabal | 14 +- .../haskell/src/Control/Concurrent/Async/Pool.hs | 130 ---- .../src/Control/Concurrent/Async/Pool/Async.hs | 719 --------------------- .../src/Control/Concurrent/Async/Pool/Internal.hs | 332 ---------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 28 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 139 +++- contrib/haskell/src/Hkl/C/Binoculars.hsc | 9 +- contrib/haskell/src/Hkl/H5.hs | 11 +- contrib/haskell/src/Hkl/Python/cdefs.c | 15 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 8 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 179 +++-- contrib/haskell/src/Pipes/Async.hs | 148 ----- 13 files changed, 259 insertions(+), 1482 deletions(-) commit c0c5ff02b79c2477b7b8dc53dde6e3313c538cb2 Author: Picca Frédéric-Emmanuel Date: Sun May 3 21:32:35 2020 +0200 [build] autoupdate configure.ac | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 79a42721a5e37de5f3e0d2cd21dfbc0ccb6d1cfc Author: Picca Frédéric-Emmanuel Date: Sun May 3 09:50:08 2020 +0200 [build] added -fanalyzer when relevant configure.ac | 10 ++++++++++ 1 file changed, 10 insertions(+) commit b414b107d25346ca3da11b4bc309647ab7c611e7 Author: Picca Frédéric-Emmanuel Date: Sun May 3 09:43:13 2020 +0200 [hkl] use g_new0 it is better to use optimize code ,instead of our own code. hkl/hkl-macros-private.h | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) commit 2e22437cfab0c62618e1416eae61b2d463eaf921 Author: Picca Frédéric-Emmanuel Date: Fri May 1 17:48:39 2020 +0200 [hkl] comment the gtkdoc check Documentation/api/Makefile.am | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit a3b31c700ddf52586415059632f0f3643986c835 Author: Picca Frédéric-Emmanuel Date: Fri May 1 17:29:08 2020 +0200 [hkl] updated the gtk-doc generated documentation. Documentation/api/Makefile.am | 84 +++++++++++++++++++++++------------------ Documentation/api/hkl-docs.sgml | 70 ---------------------------------- Documentation/api/hkl-docs.xml | 82 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 107 deletions(-) commit 44e72da1fc6255792df1d1238f82fda398127f1c Author: Picca Frédéric-Emmanuel Date: Fri May 1 15:22:38 2020 +0200 [hkl] we can customize the mathjax location. this will avoid a privacy breach on Debian, where we will use the system MathJax. Documentation/hkl.org.in | 2 +- configure.ac | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) commit f7569c9b018e0131e674b0df870af8b01026b496 Author: Picca Frédéric-Emmanuel Date: Wed Apr 29 21:18:25 2020 +0200 rename watch in orde to do not interfere with the hkl watch file contrib/haskell/debian/{watch => watch.tmpl} | 0 1 file changed, 0 insertions(+), 0 deletions(-) commit d8d6be63e59e1fafadec59b77c3f42c01a5c4a46 Author: Picca Frédéric-Emmanuel Date: Wed Apr 29 20:51:49 2020 +0200 increase the stack size to fix an ftbfs on arm64 the default stack size is 16M hkl/ccan/generator/generator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eaa91a5883b09936e8fc85989882cda132653915 Author: Picca Frédéric-Emmanuel Date: Wed Apr 29 15:03:38 2020 +0200 pre-release binoculars/hkl-binoculars.c | 12 +++++++----- binoculars/hkl-binoculars.h | 2 +- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 11 +++++------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 3 +-- hkl/ccan/configurator.c | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) commit 1397dcd5cc719701535bb5abbee900af90b49249 Author: Picca Frédéric-Emmanuel Date: Wed Apr 29 14:56:04 2020 +0200 fix FTBFS on arm64 hkl/ccan/configurator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 56cebb0275e3abd2c49d6d3f26eb28525c65f779 Author: Picca Frédéric-Emmanuel Date: Wed Apr 29 14:53:38 2020 +0200 [hkl] updated ccan hkl/ccan/configurator.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) commit 81de4db81cddd49536c3e76df32941df45979445 Author: Picca Frédéric-Emmanuel Date: Thu Feb 20 09:59:24 2020 +0100 [contrib/haskell] move the binoculars C part into its own private library Makefile.am | 2 +- binoculars/Makefile.am | 30 +++ .../haskell/cbits => binoculars}/hkl-binoculars.c | 240 +-------------------- .../haskell/cbits => binoculars}/hkl-binoculars.h | 0 configure.ac | 1 + contrib/haskell/hkl.cabal | 23 +- hkl/hkl-matrix-private.h | 6 +- hkl/hkl-matrix.c | 54 ++++- 8 files changed, 109 insertions(+), 247 deletions(-) commit 40cfe3a1d6bfbabad3324510dcd31842b305698a Author: Picca Frédéric-Emmanuel Date: Mon Feb 17 16:16:04 2020 +0100 home contrib/haskell/data/test/config_manip1.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 44a505bbb1e6bd5cad67f41f013fa2b35b5380f5 Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 19:29:49 2020 +0100 [contrib/haskell] read the sample from the binocularsConfig contrib/haskell/src/Hkl/Binoculars/Config.hs | 19 +++++++++++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 29 +++++++++++++++---- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 35 ++++++++++++++++------- contrib/haskell/src/Hkl/C/Sample.hsc | 24 +++++++--------- contrib/haskell/src/Hkl/Types.hs | 14 ++++----- 5 files changed, 83 insertions(+), 38 deletions(-) commit 9617e89aad2f4ec9ab7e8eb720cdfb8894b65efb Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 17:37:30 2020 +0100 [contrib/haskell] better organisation of the code I moved all the non SIXS related function into the right modules Hkl.Binoculars.Config or Hkl.Binoculars.Projections contrib/haskell/src/Hkl/Binoculars/Config.hs | 52 ++++++++++++++++++-- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 32 +++++++++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 59 ++--------------------- 3 files changed, 75 insertions(+), 68 deletions(-) commit ca4ff111bd392ebc806ece9f408073c9cf2a9ffd Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 17:06:52 2020 +0100 [contrib/haskell] factorize mkJobs now that we have two Projection it is necessary to create jobs for each types. contrib/haskell/src/Hkl/Binoculars/Common.hs | 29 ++++++++- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 79 +++++++++++++---------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 3 +- 3 files changed, 75 insertions(+), 36 deletions(-) commit bf6d160c9200a2065d5f502ec1a510e31abfb595 Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 15:47:38 2020 +0100 [contrib/haskell] simplify the projection method contrib/haskell/cbits/hkl-binoculars.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) commit 0047f9aa0bb7519d56758086f88a78edb691968c Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 15:33:31 2020 +0100 [contrib/haskell] fix the config parser now we can express the expected unit of the length in the config contrib/haskell/src/Hkl/Binoculars/Config.hs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) commit 8818672730c6a41e010d0149ce512be759d769b6 Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 15:04:28 2020 +0100 [contrib/haskell] implement the C code for the hkl projection contrib/haskell/cbits/hkl-binoculars.c | 196 ++++++++++++++++++++-- contrib/haskell/cbits/hkl-binoculars.h | 11 ++ contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/Binoculars/Projections.hs | 85 +++++++--- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 20 +-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 21 ++- 6 files changed, 283 insertions(+), 52 deletions(-) commit 359b12986ce13bae17441a68888fcd5fcdd6bffa Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 11:00:53 2020 +0100 [contrib/haskell] rename DataFrameQxQyQzInput -> SixsQxQyQzUhv contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 53 ++++++++++++++---------------- 1 file changed, 24 insertions(+), 29 deletions(-) commit 25d0d05c9db5a0c734a003c363887047b8a288d2 Author: Picca Frédéric-Emmanuel Date: Wed Feb 12 10:48:09 2020 +0100 [contrib/haskell] move the qxqyqz projection into the Hkl.Binoculars.Projections module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars.hs | 7 +- contrib/haskell/src/Hkl/Binoculars/Common.hs | 137 +++------------------- contrib/haskell/src/Hkl/Binoculars/Projections.hs | 130 ++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 9 +- 5 files changed, 159 insertions(+), 125 deletions(-) commit 77179b07a6d2eb65198fb444d675457e4f04ca8b Author: Picca Frédéric-Emmanuel Date: Tue Feb 11 18:17:00 2020 +0100 [contrib/haskell] add the HklProjection type contrib/haskell/src/Hkl/Binoculars/Config.hs | 2 ++ 1 file changed, 2 insertions(+) commit e2e25e263b6bb70be714b1ab6b2c8ccb90028f70 Author: Picca Frédéric-Emmanuel Date: Tue Feb 11 11:33:00 2020 +0100 [contrib/haskell] prepare for other Projections contrib/haskell/src/Hkl/Binoculars/Common.hs | 20 +++++++----------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 31 +++++++++++++--------------- 2 files changed, 22 insertions(+), 29 deletions(-) commit b73dddf0caf8b6a1e675d9d5b815861c49819819 Author: Picca Frédéric-Emmanuel Date: Tue Feb 11 09:43:42 2020 +0100 [contrib/haskell] deal with the Projection type contrib/haskell/src/Hkl/Binoculars/Config.hs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) commit a123e32e29003348ddccc2de979d684ae6a4fadf Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 23:00:48 2020 +0100 [contrib/haskell] hlint contrib/haskell/app/Binoculars.hs | 4 ++-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 7 +++---- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 9 ++++----- contrib/haskell/src/Hkl/H5.hs | 24 ++++++++++-------------- contrib/haskell/src/Hkl/Pipes.hs | 13 +++++-------- 5 files changed, 24 insertions(+), 33 deletions(-) commit 45059386665db49f8d1b293ddeb434983f8b5653 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 18:13:19 2020 +0100 [contrib/haskell] get the config file from the command line contrib/haskell/app/Binoculars.hs | 16 +++++++++------- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 8 +++++--- 2 files changed, 14 insertions(+), 10 deletions(-) commit 4e6fb167d52a1732755146c6fd55a48950fad585 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 17:45:42 2020 +0100 [contrib/haskell] add the process subcommand contrib/haskell/app/Binoculars.hs | 32 +++++++++++++++++++++++++++++++- contrib/haskell/hkl.cabal | 1 + 2 files changed, 32 insertions(+), 1 deletion(-) commit 911845cb7d749609317e81d1853925c6062d6f58 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 17:34:53 2020 +0100 [contrib/haskell] process from the config files contrib/haskell/data/test/config_manip1.cfg | 7 +- contrib/haskell/data/test/config_manip2.cfg | 20 ++++ contrib/haskell/src/Hkl/Binoculars/Common.hs | 12 +- contrib/haskell/src/Hkl/Binoculars/Config.hs | 62 ++++++++-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 163 ++++++++++++++------------- contrib/haskell/src/Hkl/Detector.hs | 4 +- 6 files changed, 169 insertions(+), 99 deletions(-) commit 8c8f318c40e55a557716e347c408a553a8dff158 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 09:45:30 2020 +0100 cabal-debian contrib/haskell/debian/control | 9 +++++++++ 1 file changed, 9 insertions(+) commit 65c4253668d26b69a12b2b98eec3b507ec26ee85 Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 09:44:53 2020 +0100 [contrib/haskell] use the right path on sixs for manip1 contrib/haskell/data/test/config_manip1.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d333a5840bd9e6444ab8586e1238a5cf937a2fec Author: Picca Frédéric-Emmanuel Date: Fri Feb 7 07:31:38 2020 +0100 [contrib/haskell] use Path in the binoculars config contrib/haskell/src/Hkl/Binoculars/Config.hs | 15 +++++++++++++-- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 13 +++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) commit 32d7a2277a1e46bc7f726a78be4d39a069e06850 Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 15:19:55 2020 +0100 [contrib/haskell] import the input from the config file contrib/haskell/data/test/config_manip1.cfg | 19 ++++++++ contrib/haskell/hkl.cabal | 3 ++ contrib/haskell/src/Hkl/Binoculars/Common.hs | 6 +-- contrib/haskell/src/Hkl/Binoculars/Config.hs | 5 +- contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 68 ++++++++++++++++++++++++---- 5 files changed, 89 insertions(+), 12 deletions(-) commit 226b755e7396e392a6372e386b47de3702cdafc4 Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 10:45:34 2020 +0100 [contrib/haskell] move the computation part into its own module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 3 +- contrib/haskell/src/Hkl/Binoculars.hs | 1 + contrib/haskell/src/Hkl/Binoculars/Common.hs | 207 ++++++++++++++++++++++++ contrib/haskell/src/Hkl/Binoculars/Sixs.hs | 234 +++++---------------------- 5 files changed, 247 insertions(+), 199 deletions(-) commit b96a4b461e844adcde1a8f4464fec3b31324053b Author: Picca Frédéric-Emmanuel Date: Mon Feb 3 21:37:09 2020 +0100 [contrib/haskell] hlint contrib/haskell/app/Binoculars.hs | 7 +--- contrib/haskell/src/Hkl/Binoculars/Config.hs | 61 +++++++++++++--------------- 2 files changed, 31 insertions(+), 37 deletions(-) commit 875c95b3a02e818ec470307a1c35c6231ca84c2f Author: Picca Frédéric-Emmanuel Date: Fri Jan 31 11:38:38 2020 +0100 [contrib/haskell] create the binoculars executable contrib/haskell/app/Binoculars.hs | 21 ++++ contrib/haskell/debian/haskell-hkl-utils.install | 2 +- contrib/haskell/hkl.cabal | 7 +- contrib/haskell/src/Hkl/Binoculars.hs | 110 +------------------ contrib/haskell/src/Hkl/Binoculars/Config.hs | 120 +++++++++++++++++++++ .../src/Hkl/{Projects => Binoculars}/Sixs.hs | 10 +- contrib/haskell/src/Hkl/Projects.hs | 7 +- 7 files changed, 157 insertions(+), 120 deletions(-) commit 1bae587dbdaead8ba37b57d5068691984928f437 Author: Picca Frédéric-Emmanuel Date: Thu Jan 30 14:33:07 2020 +0100 [contrib/haskell] added binoculars .cfg files for tests contrib/haskell/data/test/config_hkl_facet.cfg | 42 ++++ contrib/haskell/data/test/config_map.txt | 38 ++++ contrib/haskell/debian/control | 3 + contrib/haskell/hkl.cabal | 20 +- contrib/haskell/src/Hkl/Binoculars.hs | 279 ++++++++++--------------- contrib/haskell/test/BinocularsSpec.hs | 29 +++ contrib/haskell/test/Spec.hs | 1 + 7 files changed, 233 insertions(+), 179 deletions(-) commit 1d1b58960769ddb1fb6730cd606a629061e5ccdd Author: Picca Frédéric-Emmanuel Date: Thu Jan 30 11:44:40 2020 +0100 [contrib/haskell] added the unit test for parsers contrib/haskell/debian/control | 5 +++++ contrib/haskell/debian/rules | 1 + contrib/haskell/hkl.cabal | 13 ++++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) commit 67c42097d98c27faf706397e709d158c2a7d403a Author: Picca Frédéric-Emmanuel Date: Thu Jan 30 11:17:33 2020 +0100 [contrib/haskell] redIORef should be in withCubeAccumulator this way it is clear that we get back a Cube' at the end of the computation. contrib/haskell/src/Hkl/Projects/Sixs.hs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) commit d508a6d0f98e8bd922ba104c7cc7ada0afd9dd19 Author: Picca Frédéric-Emmanuel Date: Thu Jan 30 11:08:47 2020 +0100 [contrib/haskell] created a cube_add_cube method This simplify the hkl_binoculars_cube_new_merge method. contrib/haskell/cbits/hkl-binoculars.c | 78 +++++++++++++++------------------- 1 file changed, 34 insertions(+), 44 deletions(-) commit c70f761fde8108cc89e7518589738ed8caaee168 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 10:30:41 2020 +0100 [contrib/haskell] cube, photons and contribution allocation contrib/haskell/cbits/hkl-binoculars.c | 62 ++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 26 deletions(-) commit 0457cb228dbf6acea6e2c4857f0a6f87364d3e6c Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 09:51:36 2020 +0100 [contrib/haskell] create a C method to produce an empty_cube contrib/haskell/cbits/hkl-binoculars.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) commit aa7c19904946b997f82065875fe7e271df584945 Author: Picca Frédéric-Emmanuel Date: Sat Jan 25 17:08:39 2020 +0100 [contrib/haskell] prepare the code for a pure C cube accumulator. contrib/haskell/src/Hkl/Projects/Sixs.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit c61eb1fb139b4ab9282afd93384aaddf305aa45f Author: Picca Frédéric-Emmanuel Date: Wed Jan 22 11:42:07 2020 +0100 [contrib/haskell] hlint contrib/haskell/src/Hkl/Projects/Sixs.hs | 25 +++++++++++-------------- contrib/haskell/src/hkl3d.hs | 4 ++-- 2 files changed, 13 insertions(+), 16 deletions(-) commit 7ea004f47d28ee287b2ec8cc8e2bcd469db0a408 Author: Picca Frédéric-Emmanuel Date: Tue Jan 21 00:22:43 2020 +0100 [contrib/haskell] accumulate the cubes in a IORef thi reduce drastically the amount of memory used. contrib/haskell/src/Hkl/Projects/Sixs.hs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) commit 7f4e2c69f146aa03de672a979bbee982c3ad5c22 Author: Picca Frédéric-Emmanuel Date: Mon Jan 20 13:55:18 2020 +0100 [contrib/haskell] split the jobs by the number of available cores contrib/haskell/src/Hkl/Projects/Sixs.hs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) commit 34c5af84a8f98ef57420e6c3a2408f61a250b625 Author: Picca Frédéric-Emmanuel Date: Mon Jan 20 11:04:50 2020 +0100 [contrib/haskell] better chunk method after discussing on haskell-cafe, we end up with this method. contrib/haskell/src/Hkl/Projects/Sixs.hs | 58 +++++++++++++++++--------------- 1 file changed, 31 insertions(+), 27 deletions(-) commit 5f6f7057058bfd612c71ce860b6a2bf3fa048fdd Author: Picca Frédéric-Emmanuel Date: Fri Jan 17 16:41:32 2020 +0100 [contrib/haskell] start to implement the chunk logic contrib/haskell/src/Hkl/Projects/Sixs.hs | 76 +++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 12 deletions(-) commit b335a5607fa5722c8d9463d5aa2e43c7476a9e0b Author: Picca Frédéric-Emmanuel Date: Wed Jan 15 16:49:11 2020 +0100 [contrib/haskell] binoculars work the next step will be to avoid reading all the images in memory. - We will split the flux of frames into n threads. Each thread will process a pipe which will generate a Cube. - then we will merge all these cubes. contrib/haskell/cbits/hkl-binoculars.c | 4 +- contrib/haskell/cbits/hkl-binoculars.h | 2 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 19 +++++++ contrib/haskell/src/Hkl/Projects/Sixs.hs | 92 ++++---------------------------- 4 files changed, 32 insertions(+), 85 deletions(-) commit 637643fcc76220b79052cc78a5ff2982f4513cb9 Author: Picca Frédéric-Emmanuel Date: Wed Jan 15 15:33:25 2020 +0100 [contrib/haskell] fix the cube merge code. contrib/haskell/cbits/hkl-binoculars.c | 43 +++++++++++++++++----------------- 1 file changed, 22 insertions(+), 21 deletions(-) commit ef54d69a56e654b3e8ef3001f393f3a68c80f8e3 Author: Picca Frédéric-Emmanuel Date: Fri Jan 10 18:45:10 2020 +0100 [contrib/haskell] wip perf contrib/haskell/cbits/hkl-binoculars.c | 22 ++++++++++++++++ contrib/haskell/cbits/hkl-binoculars.h | 4 +++ contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 43 ++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Projects/Sixs.hs | 37 +++++++++++++++++++-------- 5 files changed, 97 insertions(+), 10 deletions(-) commit 69de945fd8066151bbc21c2ba30a110aed10b49b Author: Picca Frédéric-Emmanuel Date: Tue Jan 7 14:28:05 2020 +0100 [contrib/haskell] wip contrib/haskell/cbits/hkl-binoculars.c | 4 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 19 +++++++++++-------- 3 files changed, 14 insertions(+), 11 deletions(-) commit 4e9753e16f81274218e3407ce6b579e92de2b6f5 Author: Picca Frédéric-Emmanuel Date: Tue Jan 7 11:20:35 2020 +0100 [contrib/haskell] read each data cube from the file contrib/haskell/src/Hkl/H5.hs | 10 ++-- contrib/haskell/src/Hkl/Projects/Sixs.hs | 79 ++++++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 17 deletions(-) commit 75524286ae8244491de91d4dfb177e4736f18319 Author: Picca Frédéric-Emmanuel Date: Mon Jan 6 17:49:52 2020 +0100 [contrib/haskell] implement in C the cube merge (monoid) contrib/haskell/cbits/hkl-binoculars.c | 95 +++++++++++++++++++++++++------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 2 +- 2 files changed, 77 insertions(+), 20 deletions(-) commit b7799b5350ddfcb234a8093c2bf73563a8caf082 Author: Picca Frédéric-Emmanuel Date: Sun Jan 5 21:24:36 2020 +0100 [contrib/haskell] start implementing the mapReduce contrib/haskell/cbits/hkl-binoculars.c | 40 +++++++++++++++++++++++++- contrib/haskell/cbits/hkl-binoculars.h | 5 +++- contrib/haskell/src/Hkl/C/Binoculars.hsc | 25 +++++++++++++++-- contrib/haskell/src/Hkl/H5.hs | 8 +++++- contrib/haskell/src/Hkl/Projects/Sixs.hs | 48 +++++++++++++------------------- 5 files changed, 91 insertions(+), 35 deletions(-) commit 8d007e4c76cde489ed42fcb5faedda378ce68f43 Author: Picca Frédéric-Emmanuel Date: Wed Dec 11 12:28:41 2019 +0100 [hkl] migrate all python scripts to Python3 Documentation/sphinx/source/bindings/python.py | 24 +++++++++++----------- Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 4 ++-- .../sphinx/source/pyplots/trajectory_simple.py | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) commit c463297882ae00c51ae73d0a34c142432411db26 Author: Picca Frédéric-Emmanuel Date: Wed Dec 11 10:53:40 2019 +0100 pre-release gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.h | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) commit 77a61d2502825592d265e6bacb69f8bb4db9ef5e Author: Picca Frédéric-Emmanuel Date: Sat Nov 23 17:02:10 2019 +0100 [contrib/haskell] Added the mapReduce canvas contrib/haskell/src/Hkl/Projects/Sixs.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit aff3537c3361d541223976cbfd6bfbb5e432ce53 Author: Picca Frédéric-Emmanuel Date: Sat Nov 23 16:59:07 2019 +0100 [contrib/haskell] Added the async-pool in order to mapReduce the next step is to use an async mapReduce function to implement the binoculars process contrib/haskell/debian/control | 3 + contrib/haskell/hkl.cabal | 4 + .../haskell/src/Control/Concurrent/Async/Pool.hs | 130 ++++ .../src/Control/Concurrent/Async/Pool/Async.hs | 719 +++++++++++++++++++++ .../src/Control/Concurrent/Async/Pool/Internal.hs | 332 ++++++++++ 5 files changed, 1188 insertions(+) commit 7ab4755c84ac8ad486e942c96d98dd9d0aedc9c5 Author: Picca Frédéric-Emmanuel Date: Sat Nov 23 16:39:13 2019 +0100 [ccan] update ccan hkl/ccan/Makefile.am | 36 ++++++++++++++++++------------------ hkl/ccan/compiler/compiler.h | 21 ++++++++++++++++++--- hkl/ccan/configurator.c | 18 +++++++++++++----- 3 files changed, 49 insertions(+), 26 deletions(-) commit 5b77f7fadc09df0b0ba506da3a8589e2e130848a Author: Picca Frédéric-Emmanuel Date: Fri Nov 15 16:34:23 2019 +0100 [ccan] fix the ucontex bug ity seems that the default stack size is at least 8000k so increase this size. hkl/ccan/configurator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4a801bd858874961f12141d50587c010c23579dd Author: Picca Frédéric-Emmanuel Date: Fri Nov 8 15:11:22 2019 +0100 [contrib/haskell] put only the image in the DataFrameSpace contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) commit 438061e971f38a9adf3ecd5e71f25a9afea7fe5d Author: Picca Frédéric-Emmanuel Date: Fri Nov 8 10:01:05 2019 +0100 [contrib/haskell] Added manip3 in order to test the biggest map contrib/haskell/src/Hkl/Projects/Sixs.hs | 5 +++++ 1 file changed, 5 insertions(+) commit 1e9a742fd2d486cdffe518db5f651f34577d4f0b Author: Picca Frédéric-Emmanuel Date: Sat Sep 14 13:19:33 2019 +0200 [contrib/haskell] use size_t to adress the cube coordinates. contrib/haskell/cbits/hkl-binoculars.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) commit d3d85537b71409eac1fbbb2577ceebea8601b4be Author: Picca Frédéric-Emmanuel Date: Sun Sep 8 10:49:47 2019 +0200 [contrib/haskell] added the debian files contrib/haskell/debian/changelog | 5 + contrib/haskell/debian/compat | 1 + contrib/haskell/debian/control | 136 +++++ contrib/haskell/debian/copyright | 688 +++++++++++++++++++++++ contrib/haskell/debian/haskell-hkl-utils.install | 7 + contrib/haskell/debian/rules | 10 + contrib/haskell/debian/source/format | 1 + contrib/haskell/debian/watch | 2 + 8 files changed, 850 insertions(+) commit 1764744a02ce67bf8042dd550171430ddd42e41a Author: Pete Jemian Date: Thu Oct 24 12:46:57 2019 -0500 initial support for K4CH hkl/hkl-engine-k4c.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) commit 486ceba7dd299de9ebd678601f306ca784d069b1 Author: Picca Frédéric-Emmanuel Date: Thu Oct 24 15:49:59 2019 +0200 use ForeignPtr instead of Repa array for the images ghc is no more in charge of the image memory directly but via this foreign pointer. This make the profiling a lot easier. contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/H5.hs | 39 ++++++++++++++++++++++++++++---- contrib/haskell/src/Hkl/Projects/Sixs.hs | 17 +++++++------- 3 files changed, 44 insertions(+), 14 deletions(-) commit 4cff5145d095683a40bc93cf8a0c0076f308244b Author: Picca Frédéric-Emmanuel Date: Tue Sep 10 13:54:45 2019 +0200 [contrib/haskell] work on another dataset, multi file contrib/haskell/src/Hkl/Detector.hs | 75 ++++++++++++------ contrib/haskell/src/Hkl/Projects/Sixs.hs | 128 +++++++++++++++++++++---------- contrib/haskell/src/Hkl/Python/Pyfi.hs | 23 ++++++ 3 files changed, 162 insertions(+), 64 deletions(-) commit 527a2614cb5ac14cc63636833b610ff6586dafa2 Author: Picca Frédéric-Emmanuel Date: Tue Sep 10 13:53:45 2019 +0200 [contrib/haskell] -debug is not compatible with profiling (ghc <8.8) contrib/haskell/hkl.cabal | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2f5092afde801576342273c135c81167f4f09598 Author: Picca Frédéric-Emmanuel Date: Fri Sep 6 16:31:21 2019 +0200 [contrib/haskell] wip grouppeat contrib/haskell/src/Hkl/H5.hs | 36 +++++++++++++++++------- contrib/haskell/src/Hkl/Pipes.hs | 6 ++++ contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 15 +++++----- contrib/haskell/src/Hkl/Projects/Sixs.hs | 17 ++++++----- 4 files changed, 48 insertions(+), 26 deletions(-) commit 0acc5c8eb8911a07ceb43d7b0cc8e968e37da9ee Author: Picca Frédéric-Emmanuel Date: Thu Sep 5 17:58:22 2019 +0200 [contrib/haskell] work on a new type in order to read hdf5 files. contrib/haskell/cbits/hkl-binoculars.c | 2 +- contrib/haskell/src/Hkl/H5.hs | 30 ++++++++++++++- contrib/haskell/src/Hkl/Pipes.hs | 26 ++++++++++--- contrib/haskell/src/Hkl/Projects/Sixs.hs | 66 +++++++++++++++----------------- 4 files changed, 82 insertions(+), 42 deletions(-) commit 1af53a868babce81985a7a872000af51610b9dd7 Author: Picca Frédéric-Emmanuel Date: Thu Sep 5 10:36:10 2019 +0200 [contrib/haskell] do the right qxqyqz projection contrib/haskell/cbits/hkl-binoculars.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) commit 552a7b914adfbab284b7b33e131feb30e01b8dcd Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 17:47:51 2019 +0200 [contrib/haskell] use the expecte orientation for binoculars-gui contrib/haskell/cbits/hkl-binoculars.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit f2b7e7045b9e44f58794705b6a9665dbf99df372 Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 16:41:22 2019 +0200 [contrib/haskell] the array c-order is the reverse of the listOfShape contrib/haskell/cbits/hkl-binoculars.c | 3 +-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) commit aa25162c49ac2103a337797bfe3d48c210dc96f3 Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 16:22:53 2019 +0200 [contrib/haskell] use the right sign for variables contrib/haskell/cbits/hkl-binoculars.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 170dc2cda80512711282111e3f8e5e2de94ee7a7 Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 16:22:40 2019 +0200 [contrib/haskell] removed warning and comments contrib/haskell/cbits/hkl-binoculars.c | 337 +-------------------------------- 1 file changed, 2 insertions(+), 335 deletions(-) commit 1a1ff92c724519618a2a98922706914a7030410f Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 16:13:45 2019 +0200 [contrib/haskell] add DEBUG options contrib/haskell/hkl.cabal | 2 ++ 1 file changed, 2 insertions(+) commit d189fab8bd2cc28891709af90c511c6a7aa1e2df Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:49:58 2019 +0200 [contrib/haskell] refractoring in order to remove internal cache compute the index offste in the final cube and git it to the add_space method contrib/haskell/cbits/hkl-binoculars.c | 24 ++++++++++++++++-------- contrib/haskell/cbits/hkl-binoculars.h | 3 --- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) commit 0850bbae3d06456bf8432071216b3556953d3152 Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:33:37 2019 +0200 [contrib/haskell] renamed HklBinocularsCube->(ndim -> n_axes) contrib/haskell/cbits/hkl-binoculars.c | 8 ++++---- contrib/haskell/cbits/hkl-binoculars.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) commit f756276972bf6ad688a4cb708f519bf2f88f0f0c Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:28:42 2019 +0200 [contrib/haskell] removed HklBinocularsSpace->offset_indexes contrib/haskell/cbits/hkl-binoculars.c | 10 ++-------- contrib/haskell/cbits/hkl-binoculars.h | 1 - 2 files changed, 2 insertions(+), 9 deletions(-) commit 9dd46030b9e8f6e6421ef62f84b36f37b8ff37b3 Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:14:02 2019 +0200 [contrib/haskell] rename HklBinocularsSpace->(ndim -> n_axes) contrib/haskell/cbits/hkl-binoculars.c | 32 ++++++++++++++++---------------- contrib/haskell/cbits/hkl-binoculars.h | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) commit 7f046c8e00f781cd6c82ca6fa206dd6a1e67e45e Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:05:36 2019 +0200 [contrib/haskell] coherence contrib/haskell/cbits/hkl-binoculars.c | 10 +++++----- contrib/haskell/cbits/hkl-binoculars.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) commit 0c595aa2ab80d7098dbbfe7e5669e0a78a832a5c Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 10:01:33 2019 +0200 [contrib/haskell] deal with the C-order for dimension. listOfShape return 1, 2, 3 and the c-order (hdf5) expect 3, 2, 1. contrib/haskell/cbits/hkl-binoculars.c | 5 +++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- contrib/haskell/src/Hkl/Detector.hs | 4 ++-- contrib/haskell/src/Hkl/H5.hs | 6 +++--- 4 files changed, 9 insertions(+), 8 deletions(-) commit 28d39a1fd51b8c33bdf8eca5ea605369ef8616cb Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 09:15:26 2019 +0200 [contrib/haskell] comments contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 ++++++ 1 file changed, 6 insertions(+) commit bb2a9b7bfccd21739bf96122d1e2e74198c4a74b Author: Picca Frédéric-Emmanuel Date: Wed Sep 4 09:14:53 2019 +0200 [contrib/haskell] hlint contrib/haskell/src/Hkl/Python/Pyfi.hs | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) commit 7e3822241ef73100b6899d7849dcdb053196b1ba Author: Picca Frédéric-Emmanuel Date: Tue Sep 3 17:36:45 2019 +0200 [contrib/haskell] simplify contrib/haskell/src/Hkl/Projects/Sixs.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 28debc1d50d8b3253b5125a12e5f51ce9c3a390f Author: Picca Frédéric-Emmanuel Date: Tue Sep 3 17:24:20 2019 +0200 [contrib/haskell] remove unsafe Code contrib/haskell/src/Hkl/Projects/Sixs.hs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) commit f87b6d576dac7baeaffb5c318a385cfd9bc2e34a Author: Picca Frédéric-Emmanuel Date: Tue Sep 3 17:10:09 2019 +0200 [contrib/haskell] We can open the generated file with binoculars-gui :)) contrib/haskell/cbits/hkl-binoculars.c | 15 +++++++++++++- contrib/haskell/cbits/hkl-binoculars.h | 2 ++ contrib/haskell/src/Hkl/C/Binoculars.hsc | 34 +++++++++++++++++++++++++++----- 3 files changed, 45 insertions(+), 6 deletions(-) commit 21e22d3b44c3a6a78ababda78d582d61ec0b4a8d Author: Picca Frédéric-Emmanuel Date: Tue Sep 3 16:05:47 2019 +0200 [contrib/haskell] use the HklbinocularsAxis in the C code contrib/haskell/cbits/hkl-binoculars.c | 148 +++++++++++++++---------------- contrib/haskell/cbits/hkl-binoculars.h | 10 +-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 47 +++++----- 3 files changed, 97 insertions(+), 108 deletions(-) commit 0a53b19e56bb8348166f32ca19154d65749715aa Author: Picca Frédéric-Emmanuel Date: Tue Sep 3 10:20:09 2019 +0200 [contrib/haskell] added the HklbinocularsAxis type contrib/haskell/cbits/hkl-binoculars.c | 36 +++++++++++++++++++++++++++++++--- contrib/haskell/cbits/hkl-binoculars.h | 14 +++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) commit b1410ae81229a62d35469b4e9f68c3b9c9b573c1 Author: Picca Frédéric-Emmanuel Date: Mon Sep 2 17:45:28 2019 +0200 [contrib/haskell] better APi in order to create hdf5 files contrib/haskell/src/Hkl/C/Binoculars.hsc | 7 +++ contrib/haskell/src/Hkl/H5.hs | 86 ++++++++++++++++++++++++-------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 19 ++----- 3 files changed, 76 insertions(+), 36 deletions(-) commit 67c78ceca8ad92bd4e9158ff6e974ddb991c76a9 Author: Picca Frédéric-Emmanuel Date: Fri Aug 30 16:14:21 2019 +0200 [contrib/haskell] idem for Space contrib/haskell/src/Hkl/C/Binoculars.hsc | 23 ++++++++++++++--------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 10 +++++----- 2 files changed, 19 insertions(+), 14 deletions(-) commit 24c882583dad9c7815312e1a83ee72412e620f27 Author: Picca Frédéric-Emmanuel Date: Fri Aug 30 15:40:25 2019 +0200 [contrib/haskell] use namedFields in the Cube type This way it is easier to document the code. contrib/haskell/src/Hkl/C/Binoculars.hsc | 16 +++++++++++----- contrib/haskell/src/Hkl/Projects/Sixs.hs | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) commit 68a4423d1f6052e70a8cbc66865b26b15f948d93 Author: Picca Frédéric-Emmanuel Date: Fri Aug 30 15:21:19 2019 +0200 [contrib/haskell] Added a shape to the Cube type. contrib/haskell/src/Hkl/C/Binoculars.hsc | 16 ++++++++++------ contrib/haskell/src/Hkl/Projects/Sixs.hs | 12 ++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) commit e43a35af24dac0f0b44f3f473e6d8dc1f9a505ca Author: Picca Frédéric-Emmanuel Date: Fri Aug 30 14:55:19 2019 +0200 [contrib/haskell] save the cube contrib/haskell/src/Hkl/C/Binoculars.hsc | 8 ++-- contrib/haskell/src/Hkl/H5.hs | 69 ++++++++++++++++++-------------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 24 +++++------ 3 files changed, 52 insertions(+), 49 deletions(-) commit 9cbff198d8cb32bf7441a466053c53210dd1cfea Author: Picca Frédéric-Emmanuel Date: Fri Aug 30 09:04:47 2019 +0200 [contrib/haskell] create the final Cube contrib/haskell/cbits/hkl-binoculars.c | 147 ++++++++++++++++++++++++++++--- contrib/haskell/cbits/hkl-binoculars.h | 42 ++++++--- contrib/haskell/src/Hkl/C/Binoculars.hsc | 65 ++++++++++---- contrib/haskell/src/Hkl/Projects/Sixs.hs | 35 +++++--- 4 files changed, 235 insertions(+), 54 deletions(-) commit 348e1f7e629e4c910441c46aedba0a570f1c3ec8 Author: Picca Frédéric-Emmanuel Date: Fri Aug 9 12:53:40 2019 +0200 [contrib/haskell] remove useless CPP extension contrib/haskell/src/Hkl/Projects/Sixs.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 1d4392c35878f0ebcf2635ea022f5b168cd1a93b Author: Picca Frédéric-Emmanuel Date: Fri Aug 9 11:40:36 2019 +0200 [contrib/haskell] simplify cubeSize contrib/haskell/src/Hkl/Projects/Sixs.hs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) commit 516ee6e011bee40675b869ec973b0ba42bd04cfa Author: Picca Frédéric-Emmanuel Date: Fri Aug 9 11:26:52 2019 +0200 [contrib/haskell] space' -> space contrib/haskell/src/Hkl/Projects/Sixs.hs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 1a4e5114a6e1d204f0c6762ac0d286a3286e535e Author: Picca Frédéric-Emmanuel Date: Fri Aug 9 11:14:50 2019 +0200 [contrib/haskell] hlint contrib/haskell/src/Hkl/H5.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 156f4a147ae3b8b809f8cb29eb911ea1bb3298ba Author: Picca Frédéric-Emmanuel Date: Fri Aug 9 11:14:32 2019 +0200 [contrib/haskell] refactor nxEntries contrib/haskell/src/Hkl/H5.hs | 159 +++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 86 deletions(-) commit 32c0345bf7f480500e2f6ad4b63ca525936f4774 Author: Picca Frédéric-Emmanuel Date: Thu Aug 8 19:51:33 2019 +0200 [contrib/haskell] comments contrib/haskell/cbits/hkl-binoculars.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ea8c61af6191ec42a8454dadf30160b1b3068ad5 Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 17:34:47 2019 +0200 [contrib/haskell] merge the projection and the binning. reduce the amount of memory used by binoculars n_pixels * n_dimensions * (8 -> 4) we store the coordinates in the spaces sliced by the resolution in int32 instead of doubles. side effect, we speed the computation from 30 seconds -> 2 seconds Signed-off-by: Picca Frédéric-Emmanuel contrib/haskell/cbits/hkl-binoculars.c | 188 ++++++++++--------------------- contrib/haskell/cbits/hkl-binoculars.h | 19 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 19 +++- contrib/haskell/src/Hkl/Projects/Sixs.hs | 79 +++++-------- 4 files changed, 109 insertions(+), 196 deletions(-) commit bb069f577ba6bf9fd29bdff13b50edc5f79529d7 Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 10:59:58 2019 +0200 [contrib/haskell] better Show instance for DataFrame contrib/haskell/src/Hkl/Projects/Sixs.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 902fa61e359c34d949fd41aceb12cb1d2bec51b4 Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 10:59:39 2019 +0200 [contrib/haskell] refactoring of cubeSize contrib/haskell/src/Hkl/Projects/Sixs.hs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) commit 87727d18786d6fab6e8049c6342a5a49a3d087ce Author: Picca Frédéric-Emmanuel Date: Wed Aug 7 10:59:11 2019 +0200 [contrib/haskell] parallelize the code using async contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 22 +++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) commit 8e86800ca6c1e1954c04a6b08d080ca17d41fa14 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 18:04:30 2019 +0200 [contrib/haskell] compute the final cube size. contrib/haskell/src/Hkl/Projects/Sixs.hs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) commit f2e182004b178bb2c5f7055a49bae9e0cf189f89 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 16:13:25 2019 +0200 [contrib/haskell] add the resolution in the HklBinocularsSpace struct contrib/haskell/cbits/hkl-binoculars.c | 6 ++++++ contrib/haskell/cbits/hkl-binoculars.h | 1 + contrib/haskell/src/Hkl/C/Binoculars.hsc | 5 +++-- 3 files changed, 10 insertions(+), 2 deletions(-) commit 615065d41121a9658b3cd3a3249dde0939fab410 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 15:59:41 2019 +0200 [contrib/haskell] store the foreignPtr of the space contrib/haskell/src/Hkl/C/Binoculars.hsc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 6c14986cdc55f12daa40d9c6b0fa59f246f26cd0 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 15:27:54 2019 +0200 hli[contrib/haskell] hlint contrib/haskell/src/Hkl/Projects/Sixs.hs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 8d2625b09a805bb843c27423db1096c41721eec8 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 15:10:26 2019 +0200 [contrib/haskell] fix the Space Storable implementation contrib/haskell/cbits/hkl-binoculars.c | 31 +++++++++++++++++++------------ contrib/haskell/src/Hkl/C/Binoculars.hsc | 12 +++++++----- contrib/haskell/src/Hkl/Projects/Sixs.hs | 9 ++++----- 3 files changed, 30 insertions(+), 22 deletions(-) commit cd87555af61c7b92c1d2585b95f796a4a93ac95a Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 14:25:20 2019 +0200 [contrib/haskell] a bunch of warning contrib/haskell/src/Hkl/C/DArray.hsc | 1 + contrib/haskell/src/Hkl/Types/Parameter.hsc | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) commit 215d670c34b95fc489f5d66a5e8ace7bcad4e941 Author: Picca Frédéric-Emmanuel Date: Tue Aug 6 14:24:57 2019 +0200 [contrib/haskell] profilling works with hkl_binoculars_project_q contrib/haskell/cbits/hkl-binoculars.c | 40 +++++++++++++++++++++++++------- contrib/haskell/src/Hkl/C/Binoculars.hsc | 2 +- 2 files changed, 33 insertions(+), 9 deletions(-) commit 462644cbb7acf83b8a96aeb8604852b0572ba0b7 Author: Picca Frédéric-Emmanuel Date: Sun Aug 4 11:10:09 2019 +0200 [contrib/haskell] binoculars c-code in its own files contrib/haskell/cbits/hkl-binoculars.c | 639 +++++++++++++++++++++++++++++++ contrib/haskell/cbits/hkl-binoculars.h | 47 +++ contrib/haskell/hkl.cabal | 3 + contrib/haskell/src/Hkl/Binoculars.hs | 32 +- contrib/haskell/src/Hkl/C.hsc | 66 ++-- contrib/haskell/src/Hkl/C/Binoculars.hsc | 48 +++ contrib/haskell/src/Hkl/C/DArray.hsc | 12 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 74 ++-- contrib/haskell/src/Hkl/Python/Pyfi.hs | 2 +- contrib/haskell/src/Hkl/Python/cdefs.c | 545 -------------------------- 10 files changed, 841 insertions(+), 627 deletions(-) commit b7e760366e92fa48d4c427e76d1238d0752887a8 Author: Picca Frédéric-Emmanuel Date: Fri Aug 2 17:58:59 2019 +0200 hlint contrib/haskell/src/Hkl/Projects/Sixs.hs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 6a71e4e738185e6ee59096dd8d3203e840af72cc Author: Picca Frédéric-Emmanuel Date: Fri Aug 2 17:55:17 2019 +0200 [contrib/haskell] get a list of all the spaces of a scan. contrib/haskell/src/Hkl/Projects/Sixs.hs | 40 ++++++++++++++------------------ 1 file changed, 17 insertions(+), 23 deletions(-) commit 51b1842f6146671f42082fc9d39d4545d201ad38 Author: Picca Frédéric-Emmanuel Date: Fri Aug 2 10:59:32 2019 +0200 [contrib/haskell] copyright headers and stylish-haskell contrib/haskell/src/Hkl.hs | 43 ++++++++++++++++++++------------ contrib/haskell/src/Hkl/Binoculars.hs | 8 +++--- contrib/haskell/src/Hkl/Projects/Sixs.hs | 10 ++++++++ contrib/haskell/src/Hkl/Python/Pyfi.hs | 6 +++-- contrib/haskell/src/ghkl.hs | 33 +++++++++++++++--------- contrib/haskell/src/hkl.hs | 29 ++++++++++----------- 6 files changed, 81 insertions(+), 48 deletions(-) commit 8e3e947304753d83b37fe109d807ded6df12070c Author: Picca Frédéric-Emmanuel Date: Thu Aug 1 14:57:06 2019 +0200 [contrib/haskell] compute a space with the image data binned. contrib/haskell/src/Hkl/Projects/Sixs.hs | 110 ++++++++----- contrib/haskell/src/Hkl/Python/cdefs.c | 260 +++++++++++++++++++++++++++++++ 2 files changed, 334 insertions(+), 36 deletions(-) commit c71281fdfaacbb17ad3e9ce9d16580c52e18ad05 Author: Picca Frédéric-Emmanuel Date: Tue Jun 4 10:02:29 2019 +0200 [contrib/haskell] number of pixels computed from the detector type contrib/haskell/src/Hkl/Projects/Sixs.hs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit c1b9ce60a7b7e58047083f39382bb935d0341c95 Author: Picca Frédéric-Emmanuel Date: Sun Jul 28 11:25:33 2019 +0200 [contrib/haskell] add bincount C methods first we will try to implement this with Repa. contrib/haskell/src/Hkl/Python/cdefs.c | 149 +++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) commit 50ea724c62e86fa9d0ddcf61fbc61162b8405cee Author: Picca Frédéric-Emmanuel Date: Tue Jul 23 11:32:39 2019 +0200 [doc] for contribution it is better to use git-email Documentation/hkl.org.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 2ec09821bbc4e2b972344e34eda732b0da4226a8 Author: Picca Frédéric-Emmanuel Date: Tue Jul 23 11:30:50 2019 +0200 doc Documentation/hkl.org.in | 5 +++++ 1 file changed, 5 insertions(+) commit 8269aa1d546afb2edd84548c48e089ec7ccebf60 Author: Picca Frédéric-Emmanuel Date: Tue Jul 23 11:19:56 2019 +0200 switch from python2 to python3 for binding tests We will remove support for python2 for Debian 11. tests/bindings/Makefile.am | 4 ++-- tests/bindings/polarisation.py | 3 +-- tests/bindings/python.py | 3 +-- tests/bindings/trajectory.py | 3 +-- 4 files changed, 5 insertions(+), 8 deletions(-) commit 3d01b1c4fad3cb81965e4ec0f512deec22751af6 Author: Pete Jemian Date: Mon Jul 22 15:48:08 2019 -0500 translate to py3 tests/bindings/polarisation.py | 78 ++++++++++++++++++++++-------------------- tests/bindings/python.py | 11 +++--- tests/bindings/trajectory.py | 10 +++--- 3 files changed, 53 insertions(+), 46 deletions(-) commit effe340a972badf65c649dfc151557d52ba74d6c Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 09:32:57 2019 +0200 [contrib/haskell] added the method in order to compute bins contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Binoculars.hs | 173 ++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+) commit 89465c7f9480739faf55548bb222c12cfc6c84a8 Author: Picca Frédéric-Emmanuel Date: Fri May 24 16:14:27 2019 +0200 [contrib/haskell] use C-FFi in orde to do the pixel -> q conversion contrib/haskell/hkl.cabal | 10 +- contrib/haskell/src/Hkl/Detector.hs | 2 + contrib/haskell/src/Hkl/Projects/Sixs.hs | 47 +++++++-- contrib/haskell/src/Hkl/Python/Pyfi.hs | 32 ++++--- contrib/haskell/src/Hkl/Python/cdefs.c | 158 +++++++++++++++++++++++++++++++ contrib/haskell/src/Pipes/Async.hs | 148 +++++++++++++++++++++++++++++ 6 files changed, 376 insertions(+), 21 deletions(-) commit c26f551fbfcae58365d3d22f1fda168a5354df15 Author: Picca Frédéric-Emmanuel Date: Wed May 22 17:47:37 2019 +0200 [contrib/haskell] extract numpy array into haskell repa array contrib/haskell/hkl.cabal | 9 ++++-- contrib/haskell/src/Hkl/Detector.hs | 12 ++++---- contrib/haskell/src/Hkl/Projects/Sixs.hs | 14 +++++----- contrib/haskell/src/Hkl/Python/Pyfi.hs | 33 ++++++++++++++++++++-- contrib/haskell/src/Hkl/Python/cdefs.c | 48 ++++++++++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 16 deletions(-) commit 64089fa1d34945b8a3656e69acf883014c0a5a6d Author: Picca Frédéric-Emmanuel Date: Mon May 20 10:27:11 2019 +0200 [contrib/haskell] getPixelsCoordinates signature changed now we use the Detector type in ordert to describe the detector. contrib/haskell/src/Hkl/Detector.hs | 12 ++++++++++-- contrib/haskell/src/Hkl/Projects/Sixs.hs | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) commit 27810927bf9dce2a09d3195b0bac462d1b92a121 Author: Picca Frédéric-Emmanuel Date: Fri May 17 13:38:14 2019 +0200 [contrib/haskell] add a way to execute python code from haskell contrib/haskell/hkl.cabal | 11 +- contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/Detector.hs | 27 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 10 +- contrib/haskell/src/Hkl/Python.hs | 7 +- contrib/haskell/src/Hkl/Python/Pyfi.hs | 426 +++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Python/QQ.hs | 12 + contrib/haskell/src/Hkl/Python/cdefs.c | 93 +++++++ 8 files changed, 577 insertions(+), 10 deletions(-) commit a0a63e17147d6cbfc3c6c7bacedf45ee20692c67 Author: Picca Frédéric-Emmanuel Date: Fri May 10 17:37:52 2019 +0200 [haskell] save a Repa Array into a dataset. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/H5.hs | 20 +++++++- contrib/haskell/src/Hkl/Pipes.hs | 27 +++++++++++ contrib/haskell/src/Hkl/Projects/Sixs.hs | 83 ++++++++++---------------------- 5 files changed, 72 insertions(+), 60 deletions(-) commit 6af35b92d7cba0a0d551c4220efe2d61901c9dd2 Author: Picca Frédéric-Emmanuel Date: Fri May 10 11:12:49 2019 +0200 [haskell] save the data into an hdf5 file contrib/haskell/src/Hkl/Projects/Sixs.hs | 49 +++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 10 deletions(-) commit 32507e30380a64c6f8438e4bd25ee961885b9a01 Author: Picca Frédéric-Emmanuel Date: Thu May 9 14:45:22 2019 +0200 [haskell] hlint contrib/haskell/src/Hkl/H5.hs | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) commit 786c9be9ec7f0182d1d19ef4415c98028d11486a Author: Picca Frédéric-Emmanuel Date: Thu May 9 11:52:36 2019 +0200 [haskell] different semantic for Shape coordinates or range contrib/haskell/src/Hkl/H5.hs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) commit 1e3fa7078d5180313b7b42608cb1e0ba6349d0bc Author: Picca Frédéric-Emmanuel Date: Thu May 9 10:51:34 2019 +0200 [haskell] Detector a -> Detector a sh Added a dimension to the Detector type. This way it is possible to check at compilation, that Detector are compatible with the algorithms. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 12 ++++++------ contrib/haskell/src/Hkl/C/Detector.hsc | 4 ++-- contrib/haskell/src/Hkl/C/GeometryList.hsc | 2 +- contrib/haskell/src/Hkl/Detector.hs | 19 +++++++++++++------ contrib/haskell/src/Hkl/H5.hs | 14 ++++---------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 2 +- contrib/haskell/src/Hkl/PyFAI/Calib.hs | 2 +- contrib/haskell/src/Hkl/PyFAI/Detector.hs | 2 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 2 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 15 ++++++++------- contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 5 +++-- contrib/haskell/src/ghkl.hs | 3 ++- 13 files changed, 44 insertions(+), 39 deletions(-) commit 68f61ee818241cb26bb16fed43f011563bb9d5bb Author: Picca Frédéric-Emmanuel Date: Tue May 7 13:56:53 2019 +0200 [haskell] deal with Detector shape when reading images. beware the size of the final image is not check at compilation time. This will produce a runtime error with the ZeroD detector. contrib/haskell/src/Hkl/H5.hs | 28 ++++++++++++++++------------ contrib/haskell/src/Hkl/Projects/Sixs.hs | 13 +++++++------ 2 files changed, 23 insertions(+), 18 deletions(-) commit f8fea4838913785c591347d1b9c424c25cf4b837 Author: Picca Frédéric-Emmanuel Date: Mon May 6 17:31:20 2019 +0200 [haskell/sixs] read the images for real :)) contrib/haskell/src/Hkl/H5.hs | 21 ++++++++++++--------- contrib/haskell/src/Hkl/Projects/Sixs.hs | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-) commit 09798de5831940ac30df4362797b4f159b63bcbc Author: Picca Frédéric-Emmanuel Date: Mon May 6 14:47:40 2019 +0200 release 5.2.1 for ica hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 21e7b194320205eea0054996fc9a802815de55b1 Author: Picca Frédéric-Emmanuel Date: Mon May 6 14:02:39 2019 +0200 [hkl] only finite values are allowed for HklParameter Documentation/hkl.org.in | 5 ++ hkl/hkl-parameter-private.h | 10 ++++ hkl/hkl-parameter.c | 20 ++++++++ tests/hkl-axis-t.c | 70 +++++++++++++++----------- tests/hkl-parameter-t.c | 120 +++++++++++++++++++++++++++++++++++--------- 5 files changed, 170 insertions(+), 55 deletions(-) commit 04573f182cc7d0d4732fb02740499eb1bc7a8272 Author: Picca Frédéric-Emmanuel Date: Sun Apr 28 11:17:37 2019 +0200 [contrib/haskell] do not expose the DataFrameHklH5 type. better ressources management. contrib/haskell/src/Hkl/Projects/Sixs.hs | 117 +++++++++++-------------------- 1 file changed, 39 insertions(+), 78 deletions(-) commit e109ff564e6c3f3ccef136bb7b2e60742789a0d4 Author: Picca Frédéric-Emmanuel Date: Sat Apr 27 10:29:39 2019 +0200 [contrib/haskell] read an image from the hdf5 file. contrib/haskell/src/Hkl/H5.hs | 21 +++++++++++++++++++-- contrib/haskell/src/Hkl/Projects/Sixs.hs | 13 +++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) commit acda029c6df607b92fa104e1abc23b585b29fc36 Author: Picca Frédéric-Emmanuel Date: Sat Apr 27 08:33:26 2019 +0200 hlint contrib/haskell/hkl.cabal | 18 +---- contrib/haskell/src/Hkl/C.hsc | 16 ++-- contrib/haskell/src/Hkl/Edf.hs | 20 ++--- contrib/haskell/src/Hkl/Lattice.hs | 38 +++++----- contrib/haskell/src/Hkl/Nxs.hs | 86 +++++++++++----------- .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 12 +-- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 70 ++++++++---------- contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 2 - contrib/haskell/src/Hkl/PyFAI/Poni.hs | 45 +++++------ contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 12 +-- contrib/haskell/src/Hkl/Python.hs | 6 +- contrib/haskell/src/Hkl/Script.hs | 21 +----- contrib/haskell/src/Hkl/Tiff.hs | 1 - contrib/haskell/src/Hkl/Types.hs | 3 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 11 ++- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 6 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 33 ++++----- contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 10 +-- contrib/haskell/src/hkl.hs | 3 +- contrib/haskell/src/xrd.hs | 4 +- 21 files changed, 181 insertions(+), 238 deletions(-) commit 60d2703eea07700befe55fe326fde04cc8590570 Author: Picca Frédéric-Emmanuel Date: Fri Apr 26 21:58:53 2019 +0200 [contrib/haskell] make it compile on Debian buster contrib/haskell/hkl.cabal | 10 +++++----- contrib/haskell/src/Hkl/C/Detector.hsc | 6 +++--- contrib/haskell/src/Hkl/C/GeometryList.hsc | 2 +- contrib/haskell/src/Hkl/MyMatrix.hs | 1 + contrib/haskell/src/Hkl/PyFAI/Poni.hs | 1 + contrib/haskell/src/Hkl/Xrd/Calibration.hs | 1 + 6 files changed, 12 insertions(+), 9 deletions(-) commit 9c8eaf50e460dd34c1db39401c492186fa288951 Author: Frédéric-Emmanuel Picca Date: Thu Apr 4 10:59:45 2019 +0200 [contrib] compile with the new hs-hdf5 whcih contain also bindings-hdf5 contrib/haskell/hkl.cabal | 4 ---- 1 file changed, 4 deletions(-) commit 0e1fffb28c0361819dda9eec5050d0d7e1ea6606 Author: Picca Frédéric-Emmanuel Date: Fri Mar 29 14:17:32 2019 +0100 [ica] release for SOLEIL ica hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f9f4cc18d39d57738449e2c533b6ae50b5fb08e3 Author: Picca Frédéric-Emmanuel Date: Fri Mar 29 14:16:44 2019 +0100 indentation gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.h | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) commit 6928e5041eafe8313004c8ccdc39d8b08d073d52 Author: Picca Frédéric-Emmanuel Date: Fri Mar 29 14:13:28 2019 +0100 upgrading copyright year from 2018 to 2019 Documentation/figures/sirius.c | 2 +- Documentation/hkl-default.el | 2 +- contrib/haskell/data/gprof2dot.py | 2 +- contrib/haskell/src/hkl.hs | 2 +- contrib/sixs/hkl3d.c | 2 +- gui/hkl-gui-3d.c | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 2 +- hkl.h | 2 +- hkl/api2/hkl2.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 2 +- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p08-lisa.c | 2 +- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 2 +- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly.c | 2 +- hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-common.c | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-trajectory-private.h | 2 +- hkl/hkl-trajectory.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 100 files changed, 100 insertions(+), 100 deletions(-) commit a912f5acc66060ec69f1ea97dbc5ab6a166ef628 Author: Picca Frédéric-Emmanuel Date: Fri Mar 29 14:12:30 2019 +0100 [hkl] finalize the "SOLEIL SIXS MED2+3 v2" diffractometer Documentation/hkl.org.in | 48 +++++++++++ hkl.h | 17 ++++ hkl/api2/hkl2.c | 4 + hkl/api2/hkl2.h | 17 ++++ hkl/hkl-binding-private.h | 7 ++ hkl/hkl-binding.c | 50 +++++++++++- hkl/hkl-pseudoaxis-private.h | 6 ++ hkl/hkl-pseudoaxis.c | 133 +++++++++++++++++++++++++++++++ tests/bindings/python.py | 21 +++++ tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 77 +++++++++++++++++- tests/hkl-pseudoaxis-t.c | 59 +++++++++++++- 11 files changed, 435 insertions(+), 4 deletions(-) commit 489bdb5bf616a6ca6f2eea2edd622dcd89ce8d26 Author: Picca Frédéric-Emmanuel Date: Tue Mar 26 09:08:25 2019 +0100 [tests] rename parameters -> mode_parameters for engines_list tests tests/hkl-pseudoaxis-t.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 08a5ad85a94f4ee15d89484b76618c65fb5df87b Author: Picca Frédéric-Emmanuel Date: Mon Mar 25 11:43:40 2019 +0100 [buildsystem] fix for real the ica build system ??? hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 70a7f7764f701ba312bd7de6ba27ecf3d4d1b23e Author: Picca Frédéric-Emmanuel Date: Mon Mar 25 11:32:56 2019 +0100 [buildsystem] one more fix for the ica build system hkl/pom.xml | 1 + 1 file changed, 1 insertion(+) commit c5395b2c69ebbabd2412c2ca8c38ec021f169d61 Author: Picca Frédéric-Emmanuel Date: Fri Mar 8 17:46:34 2019 +0100 [buildsystem] try to make it build on the ica buildsystem hkl/pom.xml | 2 +- ica/centos6/hkl/ccan/ccan_config.h | 78 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) commit 9d4c49d24209502bca2baa4eb41ec12800a4367a Author: Picca Frédéric-Emmanuel Date: Fri Mar 8 17:35:45 2019 +0100 [hkl] add the SOLEIL SIXS "MED 2+3 v2" geometry now we just need to provide an API in order to configure the HklEngineList parameters. hkl/hkl-engine-soleil-sixs-med.c | 154 +++++++++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-private.h | 117 ++++++++++++++++++++--------- hkl/hkl-pseudoaxis.c | 4 +- 3 files changed, 239 insertions(+), 36 deletions(-) commit 5d0ad1899a1ebbcaadd9bbbcfb199ab0b0fd8de5 Author: Picca Frédéric-Emmanuel Date: Fri Mar 8 14:05:36 2019 +0100 [hkl] add an HklEngineListInfo whcih will contains common parameters of engines. the idea is to add a parameter eta_a fixed for the SOLEIL sixs med2+3 geometry, and later for other diffracotmeters. hkl/hkl-parameter-private.h | 1 + hkl/hkl-pseudoaxis-private.h | 48 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) commit b482bbb0d0fc0328e0a90e5e0a351061ffbb48dd Author: Picca Frédéric-Emmanuel Date: Wed Feb 20 16:08:11 2019 +0100 [hkl] add a new sirius trajectory Documentation/figures/Makefile.am | 5 ++-- Documentation/figures/sirius-m3-100.gnuplot | 6 ++++ Documentation/figures/sirius.c | 44 ++++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 3 deletions(-) commit 56c3558f460475dec31a8977710ddc5ee14e7d82 Author: Picca Frédéric-Emmanuel Date: Sat Feb 2 11:19:46 2019 +0100 pre-release gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.c | 164 +++++++++++++-------------- gui/hkl-gui.h | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 6 +- hkl/hkl-trajectory-private.h | 18 +-- tests/hkl-lattice-t.c | 14 +-- tests/tap/basic.h | 18 +-- 10 files changed, 115 insertions(+), 115 deletions(-) commit dfb70f581988de013a97c1dae36b1f1173fb070d Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 11:06:01 2017 +0200 [gui] use glade for the info_bar signals gui/ghkl.ui | 2 +- gui/hkl-gui.c | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) commit 3847c005bb4e296c6a8ca508a9ff6af210fefaf9 Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 11:03:52 2017 +0200 [gui] use glade for the info_bar response gui/ghkl.ui | 19 ++++++++++++------- gui/hkl-gui.c | 2 -- 2 files changed, 12 insertions(+), 9 deletions(-) commit 50a62037158e80bae54f9c2b75e0abb3ae76cf9f Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 10:20:10 2017 +0200 [gui] idem for the info_message gui/ghkl.ui | 17 ++++++++++------- gui/hkl-gui.c | 9 ++------- 2 files changed, 12 insertions(+), 14 deletions(-) commit c437a1feb1cee674ff2d7df9a16cff0c31a3df9d Author: Picca Frédéric-Emmanuel Date: Thu Apr 13 10:12:07 2017 +0200 [gui] use glade for the info_bar gui/ghkl.ui | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- gui/hkl-gui.c | 10 +--------- 2 files changed, 57 insertions(+), 13 deletions(-) commit 8c283d52063548283ce1d2c8c95f69f635cf642d Author: Picca Frédéric-Emmanuel Date: Tue Apr 11 15:05:50 2017 +0200 [gui] migration of the 3d code configure.ac | 3 + gui/3d.ui | 37 ++++++++---- gui/Makefile.am | 4 +- gui/hkl-gui-3d-gl.c | 4 +- gui/hkl-gui-3d.c | 166 +++++++++++++++++----------------------------------- gui/hkl-gui.c | 5 +- 6 files changed, 87 insertions(+), 132 deletions(-) commit 41a91485507bed8db35411e6910ed0b80fcfcb84 Author: Picca Frédéric-Emmanuel Date: Mon Apr 10 21:15:58 2017 +0200 [gui] migrate the non-3d code to gtk3 configure.ac | 6 +- gui/3d.ui | 49 +- gui/Makefile.am | 4 + gui/ghkl.ui | 1402 ++++++++++++++++++------------------------------------- gui/hkl-gui.c | 39 +- gui/pseudo.ui | 68 ++- 6 files changed, 526 insertions(+), 1042 deletions(-) commit 4f6439934b1953d3efce1e2f1ad440e9ee1112ab Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 15:32:53 2018 +0100 [gui] removed an useless variable gui/hkl-gui-3d-gl.c | 3 --- 1 file changed, 3 deletions(-) commit 135acdcd31c8ed04f5e3d7e4c5d509e0c2f243a0 Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 15:05:00 2018 +0100 reoved deprecated functions from gobject gui/hkl-gui-3d.c | 22 +++++++--------------- gui/hkl-gui-3d.h | 15 ++------------- gui/hkl-gui-pseudoaxes.c | 16 ++++++++++++---- gui/hkl-gui-pseudoaxes.h | 25 ++----------------------- gui/hkl-gui.c | 24 +++++++++++------------- gui/hkl-gui.h | 21 +-------------------- 6 files changed, 35 insertions(+), 88 deletions(-) commit d87f7e7a95e6ba5c9c6f721f76b53dd434ceadee Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 12:42:46 2018 +0100 fix a warning hkl/hkl-macros-private.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit d7f5a3e9f4c20234769dbe258a25de9dd867d9eb Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 11:35:18 2018 +0100 updated ccan INSTALL | 320 +++++++++++----------- hkl/ccan/autodata/autodata.h | 2 +- hkl/ccan/check_type/check_type.h | 2 +- hkl/ccan/compiler/compiler.h | 58 ++++ hkl/ccan/configurator.c | 542 +++++++++++++++++++++++++++++-------- hkl/ccan/coroutine/coroutine.c | 2 +- hkl/ccan/generator/generator.c | 2 +- hkl/ccan/list/list.h | 8 +- hkl/ccan/ptr_valid/ptr_valid.c | 2 +- hkl/ccan/typesafe_cb/typesafe_cb.h | 2 +- 10 files changed, 655 insertions(+), 285 deletions(-) commit c914126dc36c45264882418763074639c41d9d07 Author: Frédéric-Emmanuel Picca Date: Thu Nov 8 15:28:44 2018 +0100 add the flymake support in contrib/petra3 contrib/petra3/Makefile.am | 7 +++++++ 1 file changed, 7 insertions(+) commit 35a569121ed092ca56eb2f6321b3dc18a69f95e0 Author: Frédéric-Emmanuel Picca Date: Thu Nov 8 15:12:10 2018 +0100 [contrib] add the petraIII work on polarisation configure.ac | 1 + contrib/Makefile.am | 2 +- contrib/petra3/Makefile.am | 18 +++ contrib/petra3/hkl_calculations.c | 303 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 323 insertions(+), 1 deletion(-) commit cd84180caef26fb0d97cbcb7c7a5349c4b1dd502 Author: Frédéric-Emmanuel Picca Date: Thu Nov 8 15:11:40 2018 +0100 [hkl] fix compilation on amd64 hkl/ccan/configurator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8f9f622b1bcec4c6dc8be7519eb2212d09d5c355 Author: Picca Frédéric-Emmanuel Date: Thu Feb 22 13:48:06 2018 +0100 pre-release INSTALL | 320 ++++++++++++++++++++++--------------------- gui/hkl-gui.c | 164 +++++++++++----------- hkl/hkl-trajectory-private.h | 18 +-- tests/hkl-lattice-t.c | 14 +- tests/tap/basic.h | 18 +-- 5 files changed, 268 insertions(+), 266 deletions(-) commit d8f5459ff5dcecff869f1940369b3b1f521bbd28 Author: Picca Frédéric-Emmanuel Date: Thu Feb 22 13:40:18 2018 +0100 [hkl] add the petra3_p23_4c diffractometer hkl/Makefile.am | 1 + hkl/hkl-engine-petra3-p23-4c.c | 189 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+) commit 5399327092af5b049525ec8e3e4377c5fafd2f56 Author: Picca Frédéric-Emmanuel Date: Thu Feb 22 11:21:03 2018 +0100 [hkl] add the petra3_p23_6c diffractometer hkl/Makefile.am | 1 + hkl/hkl-engine-petra3-p23-6c.c | 395 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 396 insertions(+) commit 93a4104d1aa5fb911b09955d03fc892a0c6fb611 Author: Picca Frédéric-Emmanuel Date: Fri Feb 9 08:20:13 2018 +0100 [tests] a few more memory leaks tests/hkl-axis-t.c | 1 + tests/hkl-lattice-t.c | 104 +++++++++++++++++++++--------------------- tests/hkl-pseudoaxis-k4cv-t.c | 5 +- 3 files changed, 54 insertions(+), 56 deletions(-) commit b11949f3fee65e3b88638d867846021c5f2ebeb2 Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 16:28:17 2018 +0100 [hkl] remove a memory leak hkl/hkl-pseudoaxis-common-hkl.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 64ec04362f5194841bc9bb55e2e5280f87291bd5 Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 13:29:01 2018 +0100 [tests] remove useless fprintf tests/hkl-pseudoaxis-e4ch-t.c | 1 - 1 file changed, 1 deletion(-) commit 7d3be47c65f2e43934e3b9890c67880c8eb271e3 Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 13:21:20 2018 +0100 [hkl] remove uninitialized values hkl/hkl-geometry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 07496021022d7948ef5151c4f2e267b7578af22a Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 08:35:55 2018 +0100 [hkl] remove all 64bits warnings gui/hkl-gui-pseudoaxes.c | 14 +++++++------- gui/hkl-gui.c | 3 ++- hkl/hkl-detector.c | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- hkl/hkl-trajectory.c | 4 ++-- hkl3d/hkl3d.cpp | 6 +++--- 6 files changed, 17 insertions(+), 16 deletions(-) commit f0f64a916f49a454f94d8812084c6ebeb18b02ca Author: Picca Frédéric-Emmanuel Date: Thu Feb 8 08:10:36 2018 +0100 [ccan] increase the stack size to fix an FTBFS. hkl/ccan/generator/generator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1459ffb0788becc232a00a953b30005b33492506 Author: Picca Frédéric-Emmanuel Date: Wed Feb 7 14:09:10 2018 +0100 [buildsys] re-activate the script pre-processing Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 269f6aaf60f97d9c15000291319ab9fff3651103 Author: Picca Frédéric-Emmanuel Date: Thu Jan 4 15:10:18 2018 +0100 [hkl] move all the computational functions in their own files hkl/Makefile.am | 2 + hkl/hkl-pseudoaxis-common-hkl.c | 179 ++------------------------------ hkl/hkl-pseudoaxis-common-private.h | 111 ++++++++++++++++++++ hkl/hkl-pseudoaxis-common.c | 202 ++++++++++++++++++++++++++++++++++++ 4 files changed, 326 insertions(+), 168 deletions(-) commit 7fba8c4c7f568470839377170ce52801d3b99b06 Author: Picca Frédéric-Emmanuel Date: Thu Jan 4 14:31:45 2018 +0100 upgrading copyright year from 2017 to 2018 Documentation/figures/sirius.c | 2 +- Documentation/hkl-default.el | 2 +- contrib/haskell/data/gprof2dot.py | 2 +- contrib/haskell/src/hkl.hs | 2 +- contrib/sixs/hkl3d.c | 2 +- gui/hkl-gui-3d.c | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 2 +- hkl.h | 2 +- hkl/api2/hkl2.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 2 +- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p08-lisa.c | 2 +- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 2 +- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly.c | 2 +- hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-trajectory-private.h | 2 +- hkl/hkl-trajectory.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 98 files changed, 98 insertions(+), 98 deletions(-) commit ae5a0004a5ee8335b96b2b16f9d0589bf54ba3b7 Author: Picca Frédéric-Emmanuel Date: Thu Jan 4 08:55:34 2018 +0100 [hk] rename all the internal struct Make them easier to remember. hkl/hkl-pseudoaxis-common-hkl.c | 223 ++++++++++++++++++++-------------------- 1 file changed, 114 insertions(+), 109 deletions(-) commit 00eddf84acbb7e6a4a7a449f7385361ce8f88900 Author: Picca Frédéric-Emmanuel Date: Wed Jan 3 23:08:18 2018 +0100 [hkl] factorization in emergence_fixed hkl/hkl-pseudoaxis-common-hkl.c | 72 +++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 25 deletions(-) commit 12d7eb03c3bc0b0764cc31a8a11793d433357dc9 Author: Picca Frédéric-Emmanuel Date: Wed Jan 3 17:58:55 2018 +0100 [hkl] more factorization... hkl/hkl-pseudoaxis-common-hkl.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) commit a957db970eb011582074c59ac9910c96c23600b3 Author: Picca Frédéric-Emmanuel Date: Wed Jan 3 17:35:12 2018 +0100 [hkl] more factorization in the hkl engines hkl/hkl-pseudoaxis-common-hkl.c | 46 +++++++++++++---------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) commit 5c4e9047aeb5bf48bc9e3191eb4740500858aea4 Author: Picca Frédéric-Emmanuel Date: Wed Jan 3 16:33:42 2018 +0100 [hkl] factorize the psi_constant_vertical method hkl/hkl-pseudoaxis-common-hkl.c | 207 ++++++++++++++++++++++------------------ 1 file changed, 116 insertions(+), 91 deletions(-) commit 8bfbac118eb392ed428b50421e60d0a803b1036e Author: Picca Frédéric-Emmanuel Date: Sun Dec 31 18:30:36 2017 +0100 [hkl] more factorisation in _double_diffraction hkl/hkl-pseudoaxis-common-hkl.c | 112 +++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 54 deletions(-) commit 4f08f5a0234014f3159096604271f89594e14717 Author: Picca Frédéric-Emmanuel Date: Sun Dec 31 10:23:58 2017 +0100 [hkl] created an HklEngineHklInternalW struct and _hklW method This will allow to factorize computation between hkl modes. hkl/hkl-pseudoaxis-common-hkl.c | 64 ++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 20 deletions(-) commit 44ed6f03002d961b93720c4d976fd9c98da1c339 Author: Picca Frédéric-Emmanuel Date: Sat Dec 30 22:08:42 2017 +0100 [hkl] factorize a bit the hkl part hkl/hkl-pseudoaxis-common-hkl.c | 52 +++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 17 deletions(-) commit ece52c007d5a14908b72185929e847ad11c3f869 Author: Picca Frédéric-Emmanuel Date: Sat Dec 30 22:05:00 2017 +0100 [buildsys] fix the unit test hkl/hkl-engine-petra3-p08-lisa.c | 2 +- tests/Makefile.am | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) commit 6cadf4eecafb0ba29c4c482d5fca522529905c0c Author: Picca Frédéric-Emmanuel Date: Sun Dec 24 11:03:39 2017 +0100 [doc] update the documentation. NEWS | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit 9d77a2602bf01218d335cb5ecbd5a6930f8e1ad3 Author: Picca Frédéric-Emmanuel Date: Sat Dec 23 23:37:35 2017 +0100 [buildsys] do not regenerate the .dat files Documentation/figures/Makefile.am | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 151e8365106608e6d0bfaea2cf601d8a61b526ed Author: Picca Frédéric-Emmanuel Date: Sat Dec 23 12:20:50 2017 +0100 [hkl] hyde most symbols Documentation/figures/Makefile.am | 8 +++++++- gui/Makefile.am | 1 - hkl.h | 2 ++ hkl/Makefile.am | 2 +- hkl/api2/Makefile.am | 5 ++++- hkl/hkl-binding.c | 3 ++- hkl/hkl-macros-private.h | 15 ++++++++++++++- hkl/hkl-macros.c | 16 +--------------- hkl/hkl-trajectory.c | 1 + hkl/hkl-unit-private.h | 31 ++++++++++++++++++++++++++++++- hkl/hkl-unit.c | 31 ------------------------------- tests/Makefile.am | 5 +++-- 12 files changed, 65 insertions(+), 55 deletions(-) commit b5f3fa15aa8d165bd5890e2272c03e495223e0a7 Author: Picca Frédéric-Emmanuel Date: Sat Dec 23 12:20:09 2017 +0100 [hkl] typo hkl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e6dbde809c12f725ad48ca86c7267204da26ea87 Author: Picca Frédéric-Emmanuel Date: Mon Dec 4 10:38:34 2017 +0100 [buildsys] add the sirius figures dependencies Documentation/figures/Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 0f84bcae97ca12dbb0f8f40fa4bb8553e6c8a49b Author: Picca Frédéric-Emmanuel Date: Sun Dec 3 10:30:19 2017 +0100 [buildsys] move the ghkl manpages at the right place This way it will be possible to build the documentation independently. This will simplify the Debian packaging. Documentation/Makefile.am | 2 -- gui/Makefile.am | 2 ++ {Documentation => gui}/ghkl.1 | 0 3 files changed, 2 insertions(+), 2 deletions(-) commit 190c20a8abdc19067d36df699645e630ca95359a Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 22:27:32 2017 +0100 [doc] add the gnuplot files. the org-mode gnuplot hang during the sbuild process Documentation/figures/Makefile.am | 16 ++++++++-- Documentation/figures/sirius-m-zoom.gnuplot | 13 ++++++++ Documentation/figures/sirius-m.gnuplot | 10 ++++++ Documentation/figures/sirius-s.gnuplot | 10 ++++++ Documentation/figures/traj_n.gnuplot | 7 +++++ Documentation/hkl.org.in | 48 +++-------------------------- configure.ac | 2 +- 7 files changed, 58 insertions(+), 48 deletions(-) commit fe6aedad472f4fbfc5709619350538f72fdb870f Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 16:18:06 2017 +0100 [doc] fix figure generation with asy Documentation/figures/B_a.asy | 2 ++ Documentation/figures/B_b.asy | 3 +++ Documentation/figures/qper_qpar.asy | 3 +++ Documentation/figures/zaxis.asy | 5 +++-- 4 files changed, 11 insertions(+), 2 deletions(-) commit eb16beb5e964af0dd7f65b0a83e06b092caff539 Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 15:03:29 2017 +0100 [buildsys] fix the release target Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c5f86fd4c795b1dfc99fb120c45f25e25538a7d5 Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 14:24:30 2017 +0100 pre-release gui/hkl-gui.c | 164 ++++++++--------- hkl/hkl-axis.c | 10 +- hkl/hkl-engine-petra3-p08-lisa.c | 386 +++++++++++++++++++-------------------- hkl/hkl-parameter.c | 2 +- tests/hkl-lattice-t.c | 14 +- tests/tap/basic.h | 18 +- 6 files changed, 297 insertions(+), 297 deletions(-) commit b1c0c09be0f119d4b696bb84c1179cf7857d37b6 Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 13:40:02 2017 +0100 [contrib][six] restore at the right place contrib/{python => }/sixs/Makefile.am | 0 contrib/{python => }/sixs/hkl3d.c | 0 2 files changed, 0 insertions(+), 0 deletions(-) commit 59c950a08f70aaa9151a5442abe1da61d072373a Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 12:38:35 2017 +0100 [hkl] updated ccan hkl/ccan/Makefile.am | 34 +++++++++++----------- hkl/ccan/configurator.c | 2 ++ hkl/ccan/darray/darray.h | 76 ++++++++++++++++++++++++++---------------------- 3 files changed, 61 insertions(+), 51 deletions(-) commit 228b4e0cb1849f683be6483707140c31d62756aa Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 12:33:53 2017 +0100 [hkl] updated INSTALL file INSTALL | 320 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 159 insertions(+), 161 deletions(-) commit 7c53552f451edca75fc5635fdd3537d58ed0e46c Author: Picca Frédéric-Emmanuel Date: Sat Dec 2 12:33:37 2017 +0100 [hkl] remove an useless fprintf hkl/api2/hkl2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df37f0e7e9a9dc5fc304195cba74dff3cfa2731b Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 16:35:38 2017 +0100 [contrib][diffabs] add the 20170063 project contrib/python/20170063.py | 254 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) commit 62f28309a5aa1fcf2ced1cf0321dd8a2d4984d31 Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 13:52:54 2017 +0100 [contrib][mars] integrate the samples. contrib/python/mars.py | 218 ++++++++++++++++++++++++++----------------------- 1 file changed, 117 insertions(+), 101 deletions(-) commit dd6e94d2a10ddcd5114b19b4c2c392b6b406f98e Author: Picca Frédéric-Emmanuel Date: Tue Nov 21 10:38:49 2017 +0100 [contrib][python] reorganise with the common part contrib/python/{cristal => }/common.py | 0 contrib/python/{mars/20160800.py => mars.py} | 0 contrib/python/{cristal => }/mythen.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) commit 1e4df1afecf9f05d86bb8b1e89443a926a74f43f Author: akira Date: Thu Nov 16 21:21:56 2017 +0100 [contrib][cristal] add the mythen calibration contrib/python/cristal/common.py | 68 +++++++++ contrib/python/cristal/mythen.py | 306 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 374 insertions(+) commit 1b5cffc92d57c179d575a0ff5d44cd07f16fbf0c Author: akira Date: Thu Nov 16 10:50:22 2017 +0100 [contrib][python] reorganize has a python module contrib/{ => python}/cirpad/blender_pyfai.py | 0 contrib/{ => python}/mars/20160800.py | 0 contrib/{ => python}/sixs/Makefile.am | 0 contrib/{ => python}/sixs/hkl3d.c | 0 contrib/{ => python}/swing/pinhole1.smv | Bin contrib/{ => python}/swing/plot.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) commit 7c4c84036c59ddd28976f8423cd8efd7cacb2a22 Author: Picca Frédéric-Emmanuel Date: Tue Nov 14 15:08:11 2017 +0100 [contrib][mars] more type hinting and create a MultiCalib class contrib/mars/20160800.py | 201 +++++++++++++++++++++++++++-------------------- 1 file changed, 115 insertions(+), 86 deletions(-) commit 30aca20d61aabdc2d07612dbca2045b07ddbdc2d Author: Picca Frédéric-Emmanuel Date: Mon Nov 13 16:32:22 2017 +0100 [contrib][mars] reworked the mars script in order to use H5PathWithAttribute contrib/mars/20160800.py | 129 +++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 66 deletions(-) commit 559df55fa251e09792efa31900ff797aa6cf3872 Author: Picca Frédéric-Emmanuel Date: Wed Oct 18 10:36:56 2017 +0200 [contrib][diffabs] add hamon scripts using pyFAI multicalib contrib/diffabs/hamon.py | 311 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 311 insertions(+) commit 882b2df2cfa30674edff45bc1bb71650ef3df7eb Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 19:20:30 2017 +0200 [contrib][mars] use get_item for tx contrib/mars/20160800.py | 48 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) commit f969a2c0a9721ee25c7f7f12ce336aa801ba3871 Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 19:02:17 2017 +0200 [contrib][mars] rename H5OptionalItemValue -> H5PathOptionalItemValue contrib/mars/20160800.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit 9081ac75a27468872b7c7ef8f71868ac32f5b2ad Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 18:53:52 2017 +0200 [contrib][mars] rework in order to use the DataSource contrib/mars/20160800.py | 52 ++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) commit 40f4c93297f3f12d560b3b91331b52ebef0cedfc Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 18:02:13 2017 +0200 [contrib][mars] wip integrate contrib/mars/20160800.py | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) commit 5e6d45c63ad18920df02b3cc798d0754983885b9 Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 17:15:01 2017 +0200 [contrib][mars] add the first working version for the tx,tz calibration contrib/mars/20160800.py | 54 ++++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 20 deletions(-) commit d7fd84e1b7bd1eb411812f25161b51fc9a6d5d8c Author: Picca Frédéric-Emmanuel Date: Mon Oct 16 16:31:33 2017 +0200 [contrib][mars] add the 20160800 project contrib/mars/20160800.py | 285 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) commit aa14402d9485335904f62970974eaf2afda80769 Author: Picca Frédéric-Emmanuel Date: Tue Aug 15 10:40:21 2017 +0200 [hkl] remove a bunch of warnings hkl/hkl-engine-soleil-sixs-med.c | 4 ---- hkl/hkl-geometry-private.h | 16 ++++++++-------- hkl/hkl-geometry.c | 2 ++ 3 files changed, 10 insertions(+), 12 deletions(-) commit c18ea35f9b8563d521b077cd576dc45515ec8f03 Author: Picca Frédéric-Emmanuel Date: Mon Aug 14 19:05:29 2017 +0200 wip petra3 p01 Documentation/figures/sirius.c | 7 +++-- hkl/api2/hkl2.c | 43 +++++++++++++++++----------- hkl/api2/hkl2.h | 13 +++++++-- hkl/hkl-engine-e4c.c | 10 +++---- tests/hkl-pseudoaxis-e4ch-t.c | 35 +++++++++++++++++++++- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 12 ++++---- 6 files changed, 87 insertions(+), 33 deletions(-) commit eb4d5398e340416f69cbf137cfb75e0ac4cea434 Author: Picca Frédéric-Emmanuel Date: Mon Aug 14 10:52:29 2017 +0200 [doc] update changelog Documentation/hkl.org.in | 7 +++++++ 1 file changed, 7 insertions(+) commit 98573f2933dca2ca2ef5f2973b2ca8c47bdb0cfa Merge: d39a9ed5 568d17d2 Author: Picca Frédéric-Emmanuel Date: Mon Aug 14 10:33:01 2017 +0200 Merge branch 'maint' into next # Conflicts: # Documentation/Makefile.am # hkl/pom.xml commit 568d17d2334c3ac01e6da3c21c95248a65c73fde Author: Picca Frédéric-Emmanuel Date: Tue May 17 19:19:24 2016 +0200 [buildsys] add a publish target for the org-mode documentation Documentation/Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 94f91ddbcd15785c134491ed68adffa389b1fad6 Author: Picca Frédéric-Emmanuel Date: Sun Aug 13 11:03:50 2017 +0200 [hkl3d] fix FTBFS with 2.86.1 hkl3d/hkl3d.cpp | 43 ++++++++++--------------------------------- tests/hkl3d-test-t.c | 33 ++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 46 deletions(-) commit 2a58a31c5f81e23dd97ed10dad5c3284910475d6 Author: Picca Frédéric-Emmanuel Date: Sun Aug 13 10:47:41 2017 +0200 [hkl3d] use HKL_ARG_NONNULL and HKLAPI like for hkl library hkl3d/hkl3d.cpp | 6 ------ hkl3d/hkl3d.h | 51 +++++++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 30 deletions(-) commit d39a9ed5a2985c528fbd3614e95566aa47ee2c73 Author: Picca Frédéric-Emmanuel Date: Thu Jun 29 18:39:50 2017 +0200 [contrib][haskell] use Glob to find all .nxs in a directory. contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 137 ++--------------------- 1 file changed, 8 insertions(+), 129 deletions(-) commit ee31085e466d2c4c76c6a52299e7fa6f876fc551 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 22:46:43 2017 +0200 [contrib][haskell] Hkl.Script contrib/haskell/src/Hkl/Script.hs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit bca44b6c9baeace6904c6d0ac2283be81c3a0000 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 21:54:04 2017 +0200 [contrib][haskell] Hkl.Nxs contrib/haskell/src/Hkl/Nxs.hs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) commit 681717d49e07d9ed4a7a68b8eec8fbd04cdb9bb4 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 21:38:14 2017 +0200 [contrib][haskell] Hkl.Flat contrib/haskell/src/Hkl/Flat.hs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) commit 60afa70dacd29ba8e70b8834fe516d1257d1bc46 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 20:24:14 2017 +0200 [contrib][haskell] Hkl.Edf contrib/haskell/src/Hkl/Edf.hs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) commit 9f28f0872cf07d8e299eeae2ee66e9898b6d5eb8 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 20:13:50 2017 +0200 [contrib][haskell] Hkl.Xrd.Calibration contrib/haskell/src/Hkl/Xrd/Calibration.hs | 66 ++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 8 deletions(-) commit 5dbb21169bb85680ed4c7c5ad91b7966fb750941 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 20:13:35 2017 +0200 [contrib][haskell] Hkl.Xrd.OneD contrib/haskell/src/Hkl/Xrd/OneD.hs | 68 ++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 19 deletions(-) commit 45418c9cf5c5d8c4f09a188b83cf95c8a23e90a2 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:04:42 2017 +0200 [contrib][haskell] Hkl.Xrd.ZeroD contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 39 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 20 deletions(-) commit 87295997e5d4b95e38886b43fb3943f0ceafd10b Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:04:25 2017 +0200 [contrib][haskell] Hkl.Xrd.OneD contrib/haskell/src/Hkl/Xrd/OneD.hs | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) commit 3050d7e1b769938c613a9762802618993d1b0635 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:04:07 2017 +0200 [contrib][haskell] Hkl.Utils contrib/haskell/src/Hkl/Utils.hs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 0222249d79a8ffa6b9c09fe01eba4d4de6232ace Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:03:51 2017 +0200 [contrib][haskell] Hkl.Types.Parameter contrib/haskell/src/Hkl/Types/Parameter.hsc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7f90b886bd626d443c3dacb941f10d30793b95e7 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:03:26 2017 +0200 [contrib][haskell] PyFAI.Detector contrib/haskell/src/Hkl/PyFAI/Detector.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4239c73402e9872416990b6ea683605e7a723fe6 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:03:12 2017 +0200 [contrib][haskell] Calib contrib/haskell/src/Hkl/PyFAI/Calib.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit d5812a81a8024e21b435e26f856e3061565e7ec6 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:02:58 2017 +0200 [contrib][haskell] Sixs contrib/haskell/src/Hkl/Projects/Sixs.hs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) commit 10caaf9554da3836ce690e2bdd61b7db64805870 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:02:41 2017 +0200 [contrib][haskell] H5 contrib/haskell/src/Hkl/H5.hs | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) commit 94d12d8a40a060dcbdde06f71be38e95064f67b6 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:02:26 2017 +0200 [contrib][haskell] Engine contrib/haskell/src/Hkl/Engine.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 0bd92effc2cdcef781d4f5a9381489f66a85c2b8 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 19:02:09 2017 +0200 [contrib][haskell] Detector contrib/haskell/src/Hkl/Detector.hs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 3badbf01ac770b6c8f8e3f42e3c3757c5f83fa77 Author: Picca Frédéric-Emmanuel Date: Sun Jul 30 11:43:13 2017 +0200 [contrib][haskell] use a bunch of other -Wxxx options -Wincomplete-uni-patterns -Wincomplete-record-updates -Wmissing-import-lists contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/C/Sample.hsc | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) commit 882473b16e80188f6fb1b6c0ac49f2f4576fd7ba Author: Picca Frédéric-Emmanuel Date: Fri Jun 30 16:40:24 2017 +0200 [contrib][haskell] better dummy filter for the charlier data's contrib/haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 6 +++++- contrib/haskell/src/Hkl/Xrd/OneD.hs | 4 ++-- contrib/haskell/src/xrd.hs | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) commit 8f5f4b051f7b9b89f7057b96f3cafd3cb2122ac8 Author: Picca Frédéric-Emmanuel Date: Fri Jun 30 15:49:03 2017 +0200 [contrib][haskell] more todo for melle contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 24 ++++++++++++++++------- contrib/haskell/src/xrd.hs | 4 ++-- 2 files changed, 19 insertions(+), 9 deletions(-) commit 8af786da2cf25eb7c321f051111409c31b0f13e0 Author: Picca Frédéric-Emmanuel Date: Thu Jun 29 16:20:29 2017 +0200 [contrib][haskell] add more images for romeden contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) commit 0d2cd9ef6a5b51bfc23b2cab7944d2649ffe0ad2 Author: Picca Frédéric-Emmanuel Date: Thu Jun 29 10:21:22 2017 +0200 [contrib][haskell] simplify romeden using nxEntries function contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 8 +--- contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 50 +++++++++++------------ contrib/haskell/src/xrd.hs | 4 +- 3 files changed, 29 insertions(+), 33 deletions(-) commit 0afaeb821cad4ccc127297852059543a38a47b44 Author: Picca Frédéric-Emmanuel Date: Wed Jun 28 15:33:50 2017 +0200 [contrib][haskell] work on the h5iterate contrib/haskell/src/Hkl/H5.hs | 75 ++++++++++++++++++++--- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 8 ++- 2 files changed, 72 insertions(+), 11 deletions(-) commit 121b90bf82223d60520022285f57241086b237f7 Author: Picca Frédéric-Emmanuel Date: Tue Jun 27 17:46:14 2017 +0200 [contrib][haskell] add the melle session4 calibration. contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 99 ++++++++++++++++++++++- 1 file changed, 96 insertions(+), 3 deletions(-) commit 2c1bbfbcade7d1e096e303778316644b2c5f43ff Author: Picca Frédéric-Emmanuel Date: Tue Jun 27 11:58:20 2017 +0200 [contrib][haskell] add the melle scans contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 101 ++++++++++++---------- 1 file changed, 57 insertions(+), 44 deletions(-) commit 27c20af75ee6f5a7eaee59540437b45102029fb4 Author: Picca Frédéric-Emmanuel Date: Tue Jun 27 11:05:05 2017 +0200 [contrib][haskell] start to work on the melle project contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/H5.hs | 26 ++- contrib/haskell/src/Hkl/Projects/Diffabs.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Melle.hs | 271 ++++++++++++++++++---- contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 16 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 2 +- contrib/haskell/src/xrd.hs | 6 +- 7 files changed, 259 insertions(+), 65 deletions(-) commit 7f33cd9da27e41d6d1461602644e30867f5e48cb Author: Picca Frédéric-Emmanuel Date: Thu Jun 22 16:10:41 2017 +0200 [contrib][haskell] use juicipixels in order to extract file as tiff contrib/haskell/hkl.cabal | 3 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/Nxs.hs | 53 ++++++++++++++++- contrib/haskell/src/Hkl/Projects/Mars.hs | 1 + contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 76 ++++++++++++++++++------ contrib/haskell/src/Hkl/Tiff.hs | 10 ++++ contrib/haskell/src/xrd.hs | 3 +- 7 files changed, 124 insertions(+), 23 deletions(-) commit c4b8b6fd74eb7adb70870c8ff16a4edd90e4f06a Author: Picca Frédéric-Emmanuel Date: Mon Jun 19 10:36:43 2017 +0200 [contrib][haskell] add more todo contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) commit 07dfe473004f6c78c0105a421c574cea91e00b09 Author: Picca Frédéric-Emmanuel Date: Fri Jun 16 15:53:52 2017 +0200 [contrib][haskell] add the Romeden project todo contrib/haskell/src/Hkl/Projects/Mars/Romeden.hs | 116 +++++++++++++++++++++++ 1 file changed, 116 insertions(+) commit 8e1595ade3953526027b71b290c6568d56210d4d Author: Picca Frédéric-Emmanuel Date: Fri Jun 16 15:24:13 2017 +0200 [contrib][haskell] add the Mars Schlegel project contrib/haskell/hkl.cabal | 3 + contrib/haskell/src/Hkl/Edf.hs | 48 +-------- contrib/haskell/src/Hkl/Nxs.hs | 5 + contrib/haskell/src/Hkl/Projects.hs | 1 + contrib/haskell/src/Hkl/Projects/Mars.hs | 3 + contrib/haskell/src/Hkl/Projects/Mars/Schlegel.hs | 110 ++++++++++++++++++++ contrib/haskell/src/Hkl/PyFAI/Calibrant.hs | 3 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 3 + contrib/haskell/src/Hkl/Xrd.hs | 1 + contrib/haskell/src/Hkl/Xrd/Calibration.hs | 27 ++--- contrib/haskell/src/Hkl/Xrd/OneD.hs | 2 +- contrib/haskell/src/Hkl/Xrd/ZeroD.hs | 119 ++++++++++++++++++++++ contrib/haskell/src/xrd.hs | 3 +- 13 files changed, 268 insertions(+), 60 deletions(-) commit cd1852360bfbb3dbda14a2bc42ec8eb4166f6dfb Author: Picca Frédéric-Emmanuel Date: Tue Jun 6 14:08:06 2017 +0200 [contrib][haskell] the calibration function is now customizable contrib/haskell/src/Hkl/Xrd/Calibration.hs | 63 ++++++++++++++++++------------ 1 file changed, 37 insertions(+), 26 deletions(-) commit f4f018f84fe9a13c8b7fc277c0ce294d1c71d538 Author: Picca Frédéric-Emmanuel Date: Tue May 30 12:17:27 2017 +0200 [contrib][haskell] convert the Pose type into a data type contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 2 +- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 2 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 2 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 4 ++-- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 5 +++-- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 17 +++++++++-------- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 12 +++++++----- contrib/haskell/src/Hkl/Xrd/OneD.hs | 21 +++++++++++---------- 11 files changed, 38 insertions(+), 33 deletions(-) commit d2e2f7bbfa32925aaee0cbd8550feb8aa278276a Author: Picca Frédéric-Emmanuel Date: Tue May 30 11:27:49 2017 +0200 [contrib][haskell] rename OutputBaseDir -> AbsDirPath in order to prepare for ghc path module contrib/haskell/src/Hkl/Types.hs | 7 +++---- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 8 ++++---- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 8 ++++---- contrib/haskell/src/Hkl/Xrd/OneD.hs | 18 ++++++++---------- 4 files changed, 19 insertions(+), 22 deletions(-) commit 8dd21dfaccb1d66948da3a5a59bfe8840920b8c2 Author: Picca Frédéric-Emmanuel Date: Tue May 30 11:07:56 2017 +0200 [contrib][haskell] move OutputBaseDir and SampleName into Types.hs contrib/haskell/src/Hkl/Types.hs | 8 ++++++++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 4 ++-- contrib/haskell/src/Hkl/Xrd/OneD.hs | 3 --- 3 files changed, 10 insertions(+), 5 deletions(-) commit 38b675a53309c0496a294fd653d666882718c8a8 Author: Picca Frédéric-Emmanuel Date: Tue May 30 09:26:31 2017 +0200 [contrib][haskell] use applicative where it makes sense contrib/haskell/src/Hkl/Xrd/Calibration.hs | 24 +++++++++++++----------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 16 +++++++++------- 2 files changed, 22 insertions(+), 18 deletions(-) commit 2e6f994e89071f94dc527cb0ce4e86be65e788ff Author: Picca Frédéric-Emmanuel Date: Mon May 29 18:32:27 2017 +0200 [contrib][haskell] remove an useless variable contrib/haskell/src/Hkl/Xrd/OneD.hs | 2 -- 1 file changed, 2 deletions(-) commit afa7fc11a91ce262967a7d47b498aeaf3461f036 Author: Picca Frédéric-Emmanuel Date: Wed May 24 16:03:55 2017 +0200 [control][haskell] todo contrib/haskell/src/Hkl/Xrd/OneD.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 30b36050ea3d5a675c1c3931619f5f7c106841cd Author: Picca Frédéric-Emmanuel Date: Wed May 24 12:02:32 2017 +0200 [contrib][haskell] use an ADetector in the PoniFile contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/PyFAI.hs | 1 + contrib/haskell/src/Hkl/PyFAI/Calib.hs | 5 +-- contrib/haskell/src/Hkl/PyFAI/Detector.hs | 18 +++++++++++ contrib/haskell/src/Hkl/PyFAI/Poni.hs | 51 ++++++++++++++++++++++++------- 5 files changed, 63 insertions(+), 13 deletions(-) commit 743ad246cb4f5dfc290bd66c6489e6f30cffbc5c Author: Picca Frédéric-Emmanuel Date: Wed May 24 09:04:34 2017 +0200 [contrib][haskell] use the WaveLength type in the Poni contrib/haskell/src/Hkl/PyFAI/Poni.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b3fbbf580890cc546d30eb231485cd3eb7138f8a Author: Picca Frédéric-Emmanuel Date: Wed May 24 08:53:46 2017 +0200 [contrib][haskell] typo contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit e870eaad6f96f8c0b11925705c7c7de0c87b1ef4 Author: Picca Frédéric-Emmanuel Date: Tue May 23 16:11:06 2017 +0200 [contrib][haskell] rework a bit the calib script contrib/haskell/src/Hkl/PyFAI/Calib.hs | 3 +++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) commit d8fbd7fdb8536d169711e71a1e6c256cde752b18 Author: Picca Frédéric-Emmanuel Date: Tue May 23 15:44:41 2017 +0200 [contrib][haskell] read the wavelength from the enxus file during calibration contrib/haskell/src/Hkl/PyFAI/Calib.hs | 6 ++++++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 30 ++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) commit 3cf3a1caa2c04bc21182f588c404fe98605aebdc Author: Picca Frédéric-Emmanuel Date: Tue May 23 13:36:38 2017 +0200 [contrib][haskell] add a Calibrant to the XrdCalibration contrib/haskell/hkl.cabal | 3 ++- contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 1 + contrib/haskell/src/Hkl/PyFAI.hs | 3 ++- contrib/haskell/src/Hkl/PyFAI/{Detector.hs => Calib.hs} | 6 +++++- contrib/haskell/src/Hkl/PyFAI/Calibrant.hs | 9 +++++++++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 11 ++++++----- 12 files changed, 31 insertions(+), 8 deletions(-) commit c6003b7916715c741aedc8fb3c976c003701b30a Author: Picca Frédéric-Emmanuel Date: Tue May 23 13:10:51 2017 +0200 [contrib][haskell] put the detector in the XRDCalibration data contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 5 ++-- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 5 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 5 ++-- .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 5 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 5 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 5 ++-- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 5 ++-- contrib/haskell/src/Hkl/PyFAI.hs | 1 + contrib/haskell/src/Hkl/PyFAI/Detector.hs | 15 ++++++++++++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 27 +++++++++++----------- 11 files changed, 52 insertions(+), 27 deletions(-) commit e72e1c7a53d9df9d12d3f92e03f2c5d02a18c30f Author: Picca Frédéric-Emmanuel Date: Tue May 23 11:10:35 2017 +0200 [contrib][haskell] save the scripts with the right FileMode contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Script.hs | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) commit 68b133fe8761147f7b09e827e7619973d934f32f Author: Picca Frédéric-Emmanuel Date: Mon May 22 16:51:29 2017 +0200 [contrib][haskell] add the Hamon project contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Projects/Diffabs.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Hamon.hs | 133 ++++++++++++++++++++++ contrib/haskell/src/Hkl/Script.hs | 6 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 25 +++- contrib/haskell/src/xrd.hs | 3 +- 6 files changed, 162 insertions(+), 7 deletions(-) commit aefcceed718b0b7f28aea73b245d76aee434f5c3 Author: Picca Frédéric-Emmanuel Date: Sat May 20 15:23:21 2017 +0200 [doc] use a simpler css and add the right mathjax cdn in ordert o use an https adress Documentation/Makefile.am | 2 +- Documentation/css/style.css | 445 +++++++++++++++++++++++++++++++++++++++++++ Documentation/hkl-default.el | 18 +- Documentation/hkl.org.in | 10 +- 4 files changed, 462 insertions(+), 13 deletions(-) commit b38e28a8dbef1b859382d2ad32298d762fed9402 Author: Picca Frédéric-Emmanuel Date: Wed May 17 18:42:27 2017 +0200 [hkl] add the hkl_geometry_[ki/kf]_get method The purpose is to factorize the pseudo axes computation for each diffractometers. hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p08-lisa.c | 60 ++++++++++++++++++++++++++---------- hkl/hkl-geometry-private.h | 33 +++++++++++++++++++- hkl/hkl-geometry.c | 11 +++++++ hkl/hkl-pseudoaxis-common-hkl.c | 32 +++++++++---------- hkl/hkl-pseudoaxis-common-psi.c | 22 +++++++------ hkl/hkl-pseudoaxis-common-q.c | 24 ++++++++------- hkl/hkl-pseudoaxis-common-readonly.c | 4 +-- hkl/hkl-pseudoaxis-common-tth.c | 4 +-- 9 files changed, 132 insertions(+), 60 deletions(-) commit 40f6c6aa3532d2f8886e06db23e11d89f6d39d70 Author: Picca Frédéric-Emmanuel Date: Mon May 15 18:42:31 2017 +0200 [hkl] add vtable to HklGeometry and add [sample|detector]_holder_get The idea is to let the geometry declare what is the sample detector and what is the detector holder. hkl/hkl-detector.c | 4 +-- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 6 ++-- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 9 ++--- hkl/hkl-engine-petra3-p08-lisa.c | 27 ++++++++++++--- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 6 ++-- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-geometry-private.h | 38 ++++++++++++++++++++- hkl/hkl-geometry.c | 24 ++++++++++--- hkl/hkl-pseudoaxis-common-hkl.c | 63 +++++++++++++++++++---------------- hkl/hkl-pseudoaxis-common-readonly.c | 6 ++-- hkl/hkl-sample-private.h | 1 + hkl/hkl-sample.c | 15 ++++++--- tests/hkl-detector-t.c | 4 +-- tests/hkl-geometry-t.c | 24 ++++++------- 20 files changed, 162 insertions(+), 79 deletions(-) commit b6e722920a70af0b036ab205e0e6f9c6789801dd Author: Picca Frédéric-Emmanuel Date: Sat May 6 11:34:37 2017 +0200 [hkl] remove a bunch of warning (gcc-6) hkl/hkl-pseudoaxis-private.h | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) commit a1cf790ccfc187a49c5dd91556d146461c4243d0 Author: Picca Frédéric-Emmanuel Date: Fri May 5 16:11:08 2017 +0200 [hkl] add an hkl_translation_transformation_apply This allow to create a generic way to compute geometry transformations. It was necessary to add a new HklRotationWithOrigin HklParameter type hkl/hkl-axis-private.h | 20 ++++- hkl/hkl-axis.c | 159 +++++++++++++++++++++++++++++++++++---- hkl/hkl-engine-petra3-p08-lisa.c | 10 +-- hkl/hkl-geometry-private.h | 9 +++ hkl/hkl-geometry.c | 33 ++++++++ hkl/hkl-parameter-private.h | 13 +++- hkl/hkl-parameter.c | 13 ++++ hkl/hkl-pseudoaxis-common-hkl.c | 1 + 8 files changed, 235 insertions(+), 23 deletions(-) commit 5a742729f9d21ef63c5f6b01359cebd955dc398e Author: Picca Frédéric-Emmanuel Date: Thu May 4 16:07:51 2017 +0200 [hkl] factorize the hkl_geometry_add_[rotation|translation] -> axis hkl/hkl-geometry.c | 77 ++++++++++----------------------------------- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 4 +-- 3 files changed, 20 insertions(+), 63 deletions(-) commit af3e7ff0ebd2627eb7bd39b362e8e31a462b1f98 Author: Picca Frédéric-Emmanuel Date: Thu May 4 15:21:47 2017 +0200 [hkl] add the hkl_parameter_transformation_cmp method this allow to compare the translation rotation and tell if they are compatible hkl/hkl-axis.c | 25 +++++++++++++++++++++++-- hkl/hkl-parameter-private.h | 12 +++++++++++- hkl/hkl-parameter.c | 14 ++++++++++++++ tests/hkl-axis-t.c | 36 ++++++++++++++++++++++++++++++++++-- 4 files changed, 82 insertions(+), 5 deletions(-) commit 8fd6c235cc17b571d4842341c7a6a10403308fd2 Author: Picca Frédéric-Emmanuel Date: Wed May 3 22:27:38 2017 +0200 [hkl] remove a bunch of gcc-6 warnings Documentation/figures/Makefile.am | 3 ++- hkl/hkl-geometry.c | 3 --- hkl/hkl-sample.c | 16 +--------------- 3 files changed, 3 insertions(+), 19 deletions(-) commit 73109f5b5082b96abcdafb1cf50d24a33d21e2eb Author: Picca Frédéric-Emmanuel Date: Mon Apr 17 10:05:08 2017 +0200 [hkl] fix compilator warnings hkl/hkl-lattice.c | 4 ---- hkl/hkl-pseudoaxis.c | 2 -- 2 files changed, 6 deletions(-) commit 8ddf5407fec893c8bdebda2f22a51a651d8cb003 Author: Picca Frédéric-Emmanuel Date: Wed May 3 17:04:17 2017 +0200 [hkl] fix the lisa hkl computation by using SI values. beware the si parameterrs should be compatible with the wavelength value hkl/hkl-engine-petra3-p08-lisa.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit c06414491a3c95b9e1f69bf2d70ec9628766f92f Author: Picca Frédéric-Emmanuel Date: Wed May 3 16:52:51 2017 +0200 [test] add the test for the translations and correct a bunch of errors now the hkl_geometry_update take into account only rotation before a translation. Add an hkl_unit_length_meter unit rename hkl_holder_add_rotation_axis -> hkl_holder_add_rotation and change the signature. Now we need to give the user unit of each axis. hkl.h | 102 ++++++++++----------- hkl/hkl-axis.c | 1 + hkl/hkl-engine-2c.c | 4 +- hkl/hkl-engine-e4c.c | 24 ++--- hkl/hkl-engine-e6c.c | 12 +-- hkl/hkl-engine-k4c.c | 8 +- hkl/hkl-engine-k6c.c | 24 ++--- hkl/hkl-engine-petra3-p08-lisa.c | 10 +-- hkl/hkl-engine-petra3-p09-eh2.c | 14 +-- hkl/hkl-engine-soleil-sirius-turret.c | 14 +-- hkl/hkl-engine-soleil-sixs-med.c | 36 ++++---- hkl/hkl-engine-template.c | 12 +-- hkl/hkl-engine-zaxis.c | 10 +-- hkl/hkl-geometry-private.h | 20 ++--- hkl/hkl-geometry.c | 63 ++++++------- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-unit-private.h | 1 + tests/hkl-axis-t.c | 99 +++++++++++++-------- tests/hkl-detector-t.c | 4 +- tests/hkl-geometry-t.c | 161 ++++++++++++++++++++-------------- 20 files changed, 335 insertions(+), 286 deletions(-) commit d0b47d0b03da3206c7fb61b670154772e1321d79 Author: Picca Frédéric-Emmanuel Date: Tue May 2 15:48:50 2017 +0200 [hkl] factorization of the hkl_holder_add_xxx created a common hkl_holder_add_axis_if_not_present method. hkl/hkl-geometry.c | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) commit 1982ad71107af6bd9bee73e45a4cbb3dba01d90a Author: Picca Frédéric-Emmanuel Date: Tue May 2 15:10:03 2017 +0200 [hkl] nwo the translation should works for the petra3 p08 lisa gonio hkl/hkl-engine-petra3-p08-lisa.c | 2 +- hkl/hkl-geometry-private.h | 6 ++++ hkl/hkl-geometry.c | 64 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) commit ca72d8a283eecf10089b2be17432151c40265a99 Author: Picca Frédéric-Emmanuel Date: Tue May 2 14:53:02 2017 +0200 [hkl] add the HklTranslation parameter type and its constructor hkl_parameter_new_translation hkl/hkl-axis-private.h | 7 +++++ hkl/hkl-axis.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) commit 1a83e5dc1be03ba13dc2f2e04c15d4c3dee06058 Author: Picca Frédéric-Emmanuel Date: Thu Apr 27 17:23:56 2017 +0200 [hkl] rename hkl_parameter_new_axis -> hkl_parameter_new_rotation We will prepare the arrival of translation in the code in order to deal with the p08 lisa setup hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-geometry.c | 8 ++------ tests/hkl-axis-t.c | 14 +++++++------- 4 files changed, 11 insertions(+), 15 deletions(-) commit ca732979bfde95db48b090cb6373281d2d076598 Author: Picca Frédéric-Emmanuel Date: Thu Apr 27 15:35:36 2017 +0200 [hkl] rewrite the unit code and add a milli meter unit for petra3 p08 lisa hkl/hkl-unit-private.h | 38 +++++++++----- hkl/hkl-unit.c | 140 +++++++++++++------------------------------------ 2 files changed, 59 insertions(+), 119 deletions(-) commit b6d13c33fcdcbee0133b0404317dc408dd6d3b7e Author: Picca Frédéric-Emmanuel Date: Thu Apr 27 09:50:17 2017 +0200 [hkl] it is better to get the axis via there names. hkl/hkl-engine-petra3-p08-lisa.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) commit b97aee13b4e8f91ca82dc290094648731204d977 Author: Picca Frédéric-Emmanuel Date: Wed Apr 26 16:40:58 2017 +0200 [hkl] the hkl read part of petra3 p08 lisa should be ok hkl.h | 4 +++ hkl/hkl-engine-petra3-p08-lisa.c | 56 +++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 15 deletions(-) commit 93c0be8496238504d58ede1ad852ab06026bbd2d Author: Picca Frédéric-Emmanuel Date: Wed Apr 26 11:40:56 2017 +0200 [hkl] add mode lisa informations hkl/hkl-engine-petra3-p08-lisa.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit fb9f00cab7d805d9f4522f7063925b8350ad3058 Author: Picca Frédéric-Emmanuel Date: Wed Apr 26 10:43:57 2017 +0200 [hkl] add a few lisa informations hkl/hkl-engine-petra3-p08-lisa.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 2ab09f8e9c70965194dad127e2d4fec2c7eada0d Author: Picca Frédéric-Emmanuel Date: Wed Apr 26 10:16:16 2017 +0200 [doc] fix the sirius starting point for the 2nd solution. Documentation/figures/sirius.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 67d79a55cdaff0cba2117f02601340f0e2fc6684 Author: Picca Frédéric-Emmanuel Date: Tue Apr 25 11:25:59 2017 +0200 [hkl] wip P08 lisa on the hkl read part hkl/Makefile.am | 1 + hkl/hkl-engine-petra3-p08-lisa.c | 298 +++++++++++++++----------------- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 + hkl/hkl-pseudoaxis-common-hkl.c | 2 +- 4 files changed, 144 insertions(+), 159 deletions(-) commit 93c9cd03799a4802518b24cc46e1fda7f4d32057 Author: Picca Frédéric-Emmanuel Date: Mon Apr 24 16:15:09 2017 +0200 [doc] add a plot showing trajectories of different number of steps. Documentation/figures/Makefile.am | 4 +- Documentation/figures/sirius.c | 85 ++++++++++++++++++++++++++++++++++++++- Documentation/hkl.org.in | 13 ++++++ 3 files changed, 98 insertions(+), 4 deletions(-) commit b321fcc07051fa0dba84c64b47fd9de18fe34c6f Author: Picca Frédéric-Emmanuel Date: Mon Apr 24 15:01:29 2017 +0200 [hkl] remove memory leaks hkl/api2/hkl2.c | 3 ++- hkl/hkl-pseudoaxis-common-readonly.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) commit 4303a459783b6891fcfddb98a513ab319a19f3c1 Author: Picca Frédéric-Emmanuel Date: Mon Apr 24 13:58:57 2017 +0200 [doc] put the gnuplot files into the org file Documentation/figures/Makefile.am | 18 ++++----------- Documentation/figures/sirius-m.gnuplot | 10 --------- Documentation/figures/sirius-s.gnuplot | 10 --------- Documentation/hkl-default.el | 3 ++- Documentation/hkl.org.in | 41 ++++++++++++++++++++++++++++++---- 5 files changed, 43 insertions(+), 39 deletions(-) commit bfb2c5d97af94e4cd35bbee74ec083f26d25087b Author: Picca Frédéric-Emmanuel Date: Mon Apr 24 11:14:04 2017 +0200 [hkl] add comments to the petra3 p08 lisa code. hkl/hkl-engine-petra3-p08-lisa.c | 296 +++++++++++++++++++++++++++++++++------ 1 file changed, 255 insertions(+), 41 deletions(-) commit 3e6e1a53d8d002c31bba75a9a7a25a0f945b0fb2 Author: Picca Frédéric-Emmanuel Date: Fri Apr 21 17:11:25 2017 +0200 [hkl] add an api2 and pass the distcheck Documentation/figures/Makefile.am | 49 ++++- Documentation/figures/sirius.c | 126 +++++++++++ configure.ac | 1 + hkl/Makefile.am | 2 +- hkl/api2/Makefile.am | 14 ++ hkl/api2/hkl2.c | 314 +++++++++++++++++++++++++++ hkl/api2/hkl2.h | 299 +++++++++++++++++++++++++ tests/Makefile.am | 1 + tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 237 +------------------- tests/tap/hkl-tap.c | 127 ----------- tests/tap/hkl-tap.h | 207 +----------------- 11 files changed, 805 insertions(+), 572 deletions(-) commit bc140f9935db85cbd199b20f7d4a8ac215498646 Author: Picca Frédéric-Emmanuel Date: Fri Apr 21 14:19:36 2017 +0200 [hkl] It is important to move the diffractometer during a trajectory calculation. Documentation/figures/Makefile.am | 13 +++++--- Documentation/figures/sirius-m.gnuplot | 10 ++++++ .../figures/{sirius.gnuplot => sirius-s.gnuplot} | 6 ++-- Documentation/hkl.org.in | 5 ++- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 37 ++++++++++++++++++---- 5 files changed, 56 insertions(+), 15 deletions(-) commit d75b3d16b25b82036244288699f424394189c4df Author: Picca Frédéric-Emmanuel Date: Fri Apr 21 11:33:34 2017 +0200 [hkl] add the trajectory plot when moving the diffractometer Documentation/figures/Makefile.am | 9 ++- Documentation/figures/sirius.gnuplot | 10 +++ Documentation/hkl.org.in | 6 +- Makefile.am | 2 +- configure.ac | 2 + tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 105 ++++++++++++++++++++++++--- 6 files changed, 120 insertions(+), 14 deletions(-) commit 880e3a1e9c860873e98f6b45562fd7b4ed7982ab Author: Picca Frédéric-Emmanuel Date: Thu Apr 20 11:53:53 2017 +0200 [hkl] use a generator for the trajectory test INSTALL | 12 +- Makefile.am | 8 +- hkl/ccan/Makefile.am | 32 +- hkl/ccan/alignof/LICENSE | 1 + hkl/ccan/alignof/alignof.h | 20 ++ hkl/ccan/coroutine/LICENSE | 1 + hkl/ccan/coroutine/coroutine.c | 229 ++++++++++++ hkl/ccan/coroutine/coroutine.h | 260 ++++++++++++++ hkl/ccan/cppmagic/LICENSE | 1 + hkl/ccan/cppmagic/cppmagic.h | 191 ++++++++++ hkl/ccan/generator/LICENSE | 1 + hkl/ccan/generator/generator.c | 55 +++ hkl/ccan/generator/generator.h | 220 ++++++++++++ hkl/ccan/ptrint/LICENSE | 1 + hkl/ccan/ptrint/ptrint.h | 35 ++ hkl/ccan/typesafe_cb/LICENSE | 1 + hkl/ccan/typesafe_cb/typesafe_cb.h | 134 +++++++ hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/licenses/LGPL-2.1 | 510 +++++++++++++++++++++++++++ tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 148 +++++--- 21 files changed, 1798 insertions(+), 66 deletions(-) commit 50f5e5e2226f7f100bb01b8e8cc00258d9c53621 Author: Picca Frédéric-Emmanuel Date: Fri Mar 24 16:54:29 2017 +0100 [contrib][haskell] work on the sirius bug Documentation/hkl.org.in | 47 ++++++++++---------- contrib/haskell/src/Hkl/Detector.hs | 3 ++ contrib/haskell/src/ghkl.hs | 87 +++++++++++++++++-------------------- 3 files changed, 67 insertions(+), 70 deletions(-) commit 25ec0763ed8c80bb232cb3f5b39dbe5ff810ade0 Author: Picca Frédéric-Emmanuel Date: Fri Mar 24 10:19:19 2017 +0100 [contrib][haskell] comment contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 1 - 1 file changed, 1 deletion(-) commit a0e5eb801509154cbbcac75a4e8e9b8b081986ad Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 15:23:05 2017 +0200 [hkl] simulate the trajectory by moving the diffracotmeter between each step. tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 334b57f6d0e64962957c3835853f2e12a21fe101 Author: Picca Frédéric-Emmanuel Date: Tue Apr 18 10:41:28 2017 +0200 [hkl] put the trajectory code in its own hkl-trajectory files. This API is for now only private. hkl/Makefile.am | 2 + hkl/hkl-trajectory-private.h | 61 ++++++++++++ hkl/hkl-trajectory.c | 139 ++++++++++++++++++++++++++ tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 144 +-------------------------- 4 files changed, 204 insertions(+), 142 deletions(-) commit 1f73a245c770c1deed25c4fce3796d6db359922d Author: teresa Date: Wed Apr 5 11:35:56 2017 +0200 Template for petra3-p08-lisa engine hkl/hkl-engine-petra3-p08-lisa.c | 424 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) commit 2985a2fd2899010b474ca1ebecdb3b99c789f6c8 Author: Picca Frédéric-Emmanuel Date: Thu Apr 6 13:35:04 2017 +0200 [wip] trajectory tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 46 +++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) commit 5a3bfbf98dab2b58914e404be4caa1958bbf081b Author: Picca Frédéric-Emmanuel Date: Fri Mar 31 18:11:31 2017 +0200 [tests] add stats in order to check if a trajectory is ok. tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 113 ++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) commit 6a2381b53026029dd4db2880dd5489f624bdb577 Author: Picca Frédéric-Emmanuel Date: Fri Mar 31 14:53:23 2017 +0200 [tests] add Engine and Mode type tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 77 ++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 11 deletions(-) commit 573b3932e5afd2d424924dd3ac1de7d6152ecbf4 Author: Picca Frédéric-Emmanuel Date: Fri Mar 31 11:16:06 2017 +0200 [ccan] updated hkl/ccan/autodata/autodata.c | 2 +- hkl/ccan/configurator.c | 254 ++++++++++++++++++++++++++--------------- hkl/ccan/list/list.h | 23 +++- hkl/ccan/ptr_valid/ptr_valid.c | 11 +- hkl/ccan/str/str.h | 2 +- 5 files changed, 193 insertions(+), 99 deletions(-) commit 82098a03d934ba73b0b13b18e04e19a728e29e54 Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 18:46:41 2017 +0200 [contrib][haskell] do not expose a bunch of modules contrib/haskell/src/Hkl/C.hsc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit 4171ad7c851760a35b8aaeb40d2707f6263ce709 Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 18:41:42 2017 +0200 [contrib][haskell] add the Hkl.C.EngineList module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 36 +------------------ contrib/haskell/src/Hkl/C/EngineList.hsc | 60 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 35 deletions(-) commit b6bddad8aa9581278b618e2340ac34fc8eca782e Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 17:41:01 2017 +0200 [contrib][haskell] add the Hkl.C.Engine contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 60 ++------------------------ contrib/haskell/src/Hkl/C/Engine.hsc | 81 ++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 57 deletions(-) commit 48c6f17eeb32ad8e580f394609aea5eea6f9e594 Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 17:23:06 2017 +0200 [contrib][haskell] add Hkl.C.Detector and Hkl.C.GeometryList contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/C.hsc | 112 +-------------------------- contrib/haskell/src/Hkl/C/Detector.hsc | 41 ++++++++++ contrib/haskell/src/Hkl/C/Geometry.hsc | 2 - contrib/haskell/src/Hkl/C/GeometryList.hsc | 120 +++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+), 111 deletions(-) commit e5b824cc295476a107bcbe19cb671e3ec008c68a Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 15:27:52 2017 +0200 [contrib][haskell] add the Hkl.C.Sample module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 67 +------------------------- contrib/haskell/src/Hkl/C/Sample.hsc | 93 ++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 65 deletions(-) commit dca88928cc4595dfdd8ea62da45b1f94864ab4e3 Author: Picca Frédéric-Emmanuel Date: Wed Apr 5 14:56:33 2017 +0200 [contrib][haskell] add the Hkl.C.Lattice module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 78 +----------------------- contrib/haskell/src/Hkl/C/Geometry.hsc | 4 +- contrib/haskell/src/Hkl/C/Lattice.hsc | 106 +++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 78 deletions(-) commit d3bcb70c9fdb7622800c8c1502393309dfa57658 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 15:10:29 2017 +0200 [tests] add the hkl-pseudoaxis-soleil-sirius-kappa tests tests/Makefile.am | 15 +++-- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 96 ++++++++++++++++++++++++++++ tests/tap/hkl-tap.c | 16 +++-- tests/tap/hkl-tap.h | 18 ++++++ 4 files changed, 132 insertions(+), 13 deletions(-) commit df1f08dc680fcf1486c77ad39b997378a7704329 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 14:10:11 2017 +0200 [tests] add the Zaxis constructor tests/hkl-pseudoaxis-zaxis-t.c | 16 ++++------------ tests/tap/hkl-tap.c | 4 ++++ tests/tap/hkl-tap.h | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 12 deletions(-) commit ce1ad09520d99cd1562fbb086e1a6ea24ca792d0 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 14:00:47 2017 +0200 [tests] add the K6c constructor tests/hkl-pseudoaxis-k6c-t.c | 30 ++++++++++++------------------ tests/tap/hkl-tap.c | 4 ++++ tests/tap/hkl-tap.h | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 18 deletions(-) commit 47635a274d91938c8b7d0e3b785c9d1716e67505 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 13:48:40 2017 +0200 [tests] add the K4cv and K4ch constructors tests/hkl-pseudoaxis-k4cv-t.c | 21 +++++++++------------ tests/tap/hkl-tap.c | 8 ++++++++ tests/tap/hkl-tap.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 12 deletions(-) commit fb7aa6122863497313703dfe2e223cc2df3aa763 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 13:33:33 2017 +0200 [test] add the E6c constructor tests/hkl-pseudoaxis-e6c-t.c | 39 +++++++++++++++------------------------ tests/tap/hkl-tap.c | 4 ++++ tests/tap/hkl-tap.h | 20 +++++++++++++++++++- 3 files changed, 38 insertions(+), 25 deletions(-) commit 7a2891a0ff780d14f45ed80658e89f3048532350 Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 13:18:03 2017 +0200 [test] add the E4ch and E4cv geometry constructors remove also plenty of uninitialized warnings tests/hkl-pseudoaxis-e4ch-t.c | 47 ++++++++++++------------------ tests/hkl-pseudoaxis-e4cv-t.c | 68 ++++++++++++++++++------------------------- tests/tap/hkl-tap.c | 49 ++++++++++++++++++------------- tests/tap/hkl-tap.h | 51 ++++++++++++++++++++++---------- 4 files changed, 112 insertions(+), 103 deletions(-) commit 263952aeb01cf35f3cefdea7edfc270cb5ed8d2d Author: Picca Frédéric-Emmanuel Date: Thu Mar 30 10:28:30 2017 +0200 [test] add a newEngines method tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 13 ++----------- tests/tap/hkl-tap.c | 13 +++++++++++++ tests/tap/hkl-tap.h | 4 ++++ 3 files changed, 19 insertions(+), 11 deletions(-) commit 94c18d0b5cbe393846b5c8f15d862f3f027d1917 Author: Picca Frédéric-Emmanuel Date: Wed Mar 29 15:05:53 2017 +0200 [tests] add struct Geometry in order to factorize tests. tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 23 +++++++------- tests/tap/hkl-tap.c | 35 +++++++++++++++++---- tests/tap/hkl-tap.h | 53 +++++++++++++++++++++++++++----- 3 files changed, 86 insertions(+), 25 deletions(-) commit 099a5fb4f4a353a912f87265dc18676810ba4d34 Author: Picca Frédéric-Emmanuel Date: Wed Mar 29 09:12:29 2017 +0200 [tests] create a struct Sample in order to setup a sample easily tests/Makefile.am | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 12 +++---- tests/hkl-pseudoaxis-e4cv-t.c | 12 +++---- tests/hkl-pseudoaxis-e6c-t.c | 49 +++++++++++---------------- tests/hkl-pseudoaxis-k4cv-t.c | 6 ++-- tests/hkl-pseudoaxis-k6c-t.c | 8 ++--- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 39 +++++++++++---------- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 21 +++++------- tests/tap/hkl-tap.c | 58 ++++++++++++++++++++++++++++++++ tests/tap/hkl-tap.h | 40 ++++++++++++++++++++++ 11 files changed, 167 insertions(+), 82 deletions(-) commit 02a796458f9fb0ee79078bee7a67672ff577fbe6 Author: Picca Frédéric-Emmanuel Date: Sat Mar 25 12:42:20 2017 +0100 [contrib][haskell] Storable instance for Geometry contrib/haskell/src/Hkl/C.hsc | 4 +- contrib/haskell/src/Hkl/C/Geometry.hsc | 84 +++++++++++++++++----------------- 2 files changed, 45 insertions(+), 43 deletions(-) commit b2c145afd2720f1adf85b4212f2acb7ad6c6cc71 Author: Picca Frédéric-Emmanuel Date: Sat Mar 25 09:02:23 2017 +0100 [contrib][haskell] add a DArray type contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 45 +++++++++++----------------------- contrib/haskell/src/Hkl/C/DArray.hsc | 25 +++++++++++++++++++ contrib/haskell/src/Hkl/C/Geometry.hsc | 38 +++++++++++----------------- 4 files changed, 54 insertions(+), 55 deletions(-) commit 9f024dd0d5fddbb455c067c49f824d8006c67779 Author: Picca Frédéric-Emmanuel Date: Sat Mar 25 08:23:12 2017 +0100 [contrib][haskell] add peek/poke for Source contrib/haskell/src/Hkl/C/Geometry.hsc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit 68c1c2e567b6424e8afcbbe3c4c5561c08f06fc2 Author: Picca Frédéric-Emmanuel Date: Sat Mar 25 08:03:20 2017 +0100 [contrib][haskell] no more HklGeometry type contrib/haskell/src/Hkl/C.hsc | 8 ++++---- contrib/haskell/src/Hkl/C/Geometry.hsc | 28 +++++++++++++--------------- 2 files changed, 17 insertions(+), 19 deletions(-) commit 7441f294128b7244612f1f82e2ec09de2e0653dd Author: Picca Frédéric-Emmanuel Date: Sat Mar 25 07:55:00 2017 +0100 [contrib][haskell] create the Hkl.C.Geometry module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 108 +------------------ contrib/haskell/src/Hkl/C/Geometry.hsc | 189 +++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/PyFAI/Poni.hs | 5 +- contrib/haskell/src/Hkl/Types.hs | 34 ------ 5 files changed, 196 insertions(+), 141 deletions(-) commit 7a5f4b0b1551af6728a2ca9c4b4e23584e1bc5e2 Author: Picca Frédéric-Emmanuel Date: Thu Mar 23 14:13:43 2017 +0100 [contrib][haskell] reduce duplication in Laure.hs contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 70 ++++++++--------------- 1 file changed, 24 insertions(+), 46 deletions(-) commit 2092d944de6b9f3871b0c284ed0d93b11f4a34f3 Author: Picca Frédéric-Emmanuel Date: Thu Mar 23 13:40:17 2017 +0100 [contrib][haskell] set a poni with initial values In order to simplify the xrd calibration. It can be necessary to set the initial values of the reference PoniExt. First time used by the Hercules project. contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 2 +- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 2 +- .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 36 +++++++++++++--------- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 2 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 2 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 31 +++++++++++++++---- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 31 +++++++++++++++---- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 8 ++--- 10 files changed, 81 insertions(+), 37 deletions(-) commit f11944170dfdd65a64a3c99ba3056fbec1309aef Author: Picca Frédéric-Emmanuel Date: Thu Mar 23 10:45:23 2017 +0100 [contrib][haskell] reorganisation of the poni part contrib/haskell/src/Hkl/PyFAI/Poni.hs | 81 ++++++++++++++++++++++++++---- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 56 ++++----------------- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 20 -------- 3 files changed, 81 insertions(+), 76 deletions(-) commit ea745dd71016f58ea726cfd051b370a58ace8b79 Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 15:23:16 2017 +0100 fix all display errors in the documentation Documentation/hkl.org.in | 99 ++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 50 deletions(-) commit f7019a0b3ae8c1338775e0b094c34b98aa307f65 Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 14:47:26 2017 +0100 [contrib][haskell] add missing data's from Hercules contrib/haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 1 + 1 file changed, 1 insertion(+) commit 2fb311babb6f80d901e316b7e39575142ca7cc8b Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 14:46:02 2017 +0100 created a doc-publish target in order to publish the doc Documentation/Makefile.am | 5 +++++ Documentation/hkl-default.el | 22 +++++++++++++++++++++- Documentation/hkl.org.in | 1 - 3 files changed, 26 insertions(+), 2 deletions(-) commit e2d916815f3054124ebf65b5d292c21dc1662302 Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 10:45:32 2017 +0100 [contrib][haskell] factorize beamlineUpper contrib/haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 5 ----- contrib/haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 4 ---- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 4 ---- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 4 ---- contrib/haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 4 ---- contrib/haskell/src/Hkl/Types.hs | 6 ++++++ 6 files changed, 6 insertions(+), 21 deletions(-) commit 9fc2d73c7105f5f31a100b1d1a005479439918ac Author: Picca Frédéric-Emmanuel Date: Wed Mar 22 10:39:41 2017 +0100 [contrib][haskell] add the Hercules project. Add also the script extractEdf used to extract the images for the calibration. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Projects/Diffabs.hs | 1 + .../haskell/src/Hkl/Projects/Diffabs/Hercules.hs | 163 +++++++++++++++++++++ contrib/haskell/src/Hkl/Xrd/Calibration.hs | 56 ++++++- contrib/haskell/src/Hkl/Xrd/OneD.hs | 3 + contrib/haskell/src/xrd.hs | 9 +- 6 files changed, 227 insertions(+), 6 deletions(-) commit c01cffc0aee7d48e1ba585f31e1cc15869830e55 Author: Picca Frédéric-Emmanuel Date: Mon Mar 20 13:44:53 2017 +0100 [contrib][haskell] fix the dummy code contrib/haskell/src/Hkl/Xrd/OneD.hs | 10 +++++----- contrib/haskell/src/xrd.hs | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) commit fae54231ab5dc4eb90866f8df725b3c47df98182 Author: Picca Frédéric-Emmanuel Date: Mon Mar 20 09:50:07 2017 +0100 [contrib][haskell] added an PyVal class in order to simplify python scripting contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Flat.hs | 14 ++++----- contrib/haskell/src/Hkl/Python.hs | 30 +++++++++++++++++++ contrib/haskell/src/Hkl/Xrd/Mesh.hs | 20 ++++++------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 60 ++++++++++++++++++------------------- 5 files changed, 78 insertions(+), 47 deletions(-) commit e04a40ee3ad6390595ea3f79131afc761a0e652f Author: Picca Frédéric-Emmanuel Date: Fri Mar 17 14:13:43 2017 +0100 [contrib][haskell] factorize the mesh python script contrib/haskell/src/Hkl/Xrd/Mesh.hs | 109 ++++++++++++------------------------ 1 file changed, 37 insertions(+), 72 deletions(-) commit 06955450ce2105bbdc03f55618e12b6fa493b090 Author: Picca Frédéric-Emmanuel Date: Fri Mar 17 13:57:10 2017 +0100 [contrib][haskell] use dummies in order to improve speed contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 4 +- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 4 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 6 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 4 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 4 +- .../haskell/src/Hkl/PyFAI/AzimuthalIntegrator.hs | 2 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 32 +++++---- contrib/haskell/src/Hkl/Xrd/OneD.hs | 83 +++++++++++++--------- contrib/haskell/src/xrd.hs | 6 +- 9 files changed, 82 insertions(+), 63 deletions(-) commit a401ce7f4415c6b89664f6abd16c4a3026d6cbdc Author: Picca Frédéric-Emmanuel Date: Thu Mar 16 15:40:46 2017 +0100 [contrib][haskell] add bench for a fly mesh contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 ++ 1 file changed, 2 insertions(+) commit 0ee095b1400790514c94299e59859ed9b2ee420c Author: Picca Frédéric-Emmanuel Date: Thu Mar 16 15:20:48 2017 +0100 [contrib][haskell] fix the mesh python script contrib/haskell/src/Hkl/Xrd/Mesh.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 229166421d867dc02774fb9c5e9f6bb92fef0be7 Author: Picca Frédéric-Emmanuel Date: Thu Mar 16 09:24:38 2017 +0100 add emergence to e4cv diffractometers Documentation/hkl.org.in | 2 ++ hkl/hkl-engine-e4c.c | 2 ++ hkl/pom.xml | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) commit 8996421ff7f4d44d122efd97f5ccf6e2c8f521ac Author: Picca Frédéric-Emmanuel Date: Thu Mar 16 08:41:25 2017 +0100 [contrib][haskell] add the XrdMeshFly (to test) contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 6 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 266 ++++++++++++---------- contrib/haskell/src/xrd.hs | 7 +- 4 files changed, 155 insertions(+), 127 deletions(-) commit 789e8244e6ded09c9557a8565016b67b56143d52 Author: Picca Frédéric-Emmanuel Date: Tue Mar 14 15:26:18 2017 +0100 [contrib][haskell] take into account the length of the lists. contrib/haskell/src/Hkl/Xrd/OneD.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 590424e1b1b4e400dd12db2fa54881ecc07b76a7 Author: Picca Frédéric-Emmanuel Date: Tue Mar 14 14:13:24 2017 +0100 [contrib][haskell] idem for the integrateMesh method contrib/haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 3 +-- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 3 +-- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 16 ++++++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) commit aee1ceb8403dbcd62f30c8ebfd398e35ec39f69f Author: Picca Frédéric-Emmanuel Date: Tue Mar 14 14:00:33 2017 +0100 [contrib][haskell] simplify the user script by hiding the map calls contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 4 +-- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 5 ++-- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 8 +++--- contrib/haskell/src/Hkl/Xrd/OneD.hs | 29 ++++++++++++---------- 4 files changed, 23 insertions(+), 23 deletions(-) commit 4ffe0c18c8c19487906fd34bf2e554c67d726083 Author: Picca Frédéric-Emmanuel Date: Tue Mar 14 13:50:45 2017 +0100 [contrib][haskell] do a profilling of all the python scripts contrib/haskell/data/gprof2dot.py | 3293 +++++++++++++++++++++ contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/Flat.hs | 1 - contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 1 - contrib/haskell/src/Hkl/Script.hs | 29 +- 5 files changed, 3318 insertions(+), 8 deletions(-) commit 4fdb6233e744b3efffa9bbe7c54d1ad674320239 Author: Picca Frédéric-Emmanuel Date: Tue Mar 14 10:19:41 2017 +0100 [contrib][haskell] factorize the substract python script contrib/haskell/src/Hkl/Xrd/OneD.hs | 80 +++++++++++++------------------------ 1 file changed, 27 insertions(+), 53 deletions(-) commit 97f9fea556a160127f4a8991d45a82d61f975a07 Author: Picca Frédéric-Emmanuel Date: Mon Mar 13 16:30:43 2017 +0100 [contrib][haskell] add the substractMulti method contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 7 +-- contrib/haskell/src/Hkl/Xrd/OneD.hs | 66 +++++++++++++++++++++++ 2 files changed, 68 insertions(+), 5 deletions(-) commit 06c856d6af6177e6109608c61e3d468da8ff08e2 Author: Picca Frédéric-Emmanuel Date: Mon Mar 13 15:04:58 2017 +0100 [contrib][haskell] fix the flat correction also for integrate contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) commit 6d6797268a8ea5564fab2396616c1479f4fa3a88 Author: Picca Frédéric-Emmanuel Date: Mon Mar 13 14:05:17 2017 +0100 [contrib][haskell] save a gnuplot file also for the substraction contrib/haskell/src/Hkl/Xrd/OneD.hs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit 8d9b527043c39e51e7f9485d8e12dd939047d23d Author: Picca Frédéric-Emmanuel Date: Mon Mar 13 13:40:23 2017 +0100 [contrib][haskell] implement the substract method contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 6 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 100 +++++++++++++++++++--- 3 files changed, 93 insertions(+), 15 deletions(-) commit ca25897bd5e874952e2ba0c0abeedd0348804156 Author: Picca Frédéric-Emmanuel Date: Sat Mar 11 11:36:48 2017 +0100 [contrib][haskell] use GADTs for the Lattice contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/C.hsc | 27 +++++++++------- contrib/haskell/src/Hkl/Lattice.hs | 63 +++++++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Types.hs | 44 ++++---------------------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 2 +- contrib/haskell/src/ghkl.hs | 2 +- 7 files changed, 88 insertions(+), 52 deletions(-) commit 3ccf125cec5278934b147ef90dba8a6c485e8532 Author: Picca Frédéric-Emmanuel Date: Tue Nov 29 15:56:35 2016 +0100 [contrib][haskell] add test from sirius for numeric stability Documentation/hkl.org.in | 22 +++++++++++++++++ contrib/haskell/src/Hkl/C.hsc | 7 ++++++ contrib/haskell/src/ghkl.hs | 57 ++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 82 insertions(+), 4 deletions(-) commit 87dcf531cdf8051b0a5f8c8002ed6488f000281a Author: Picca Frédéric-Emmanuel Date: Tue Nov 29 15:08:16 2016 +0100 [contib][haskell] add the SoleilSiriusKappa geometry contrib/haskell/src/Hkl/Types.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit b8f28c8adc33de6a4ffeead923c9b1e19e5b53c8 Author: Picca Frédéric-Emmanuel Date: Sun Nov 27 18:07:43 2016 +0100 fix logging hkl/hkl-pseudoaxis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d41c365eb8ceba97d031fa34954afed622727559 Author: Picca Frédéric-Emmanuel Date: Tue Apr 26 16:48:00 2016 +0200 update the pom.xml file with the ICA version hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2621b21dedc84b954c7648c393a44fd969948bf9 Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 17:40:54 2017 +0100 [contrib][haskell] reorg contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 30 ++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) commit 6e2adbe49faa83ed9c8299c982d3dab49783172a Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 16:41:16 2017 +0100 [contrib][haskell] use the Gnuplot script type contrib/haskell/src/Hkl/Xrd/OneD.hs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) commit dc16d8781f492ee05832eae8b5bd605788058362 Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 16:38:50 2017 +0100 [contrib][haskell] add the gnuplot script type contrib/haskell/src/Hkl/Script.hs | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) commit bc57f41c725019383be27d75f270dc461ab5ec0a Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 10:18:12 2017 +0100 [contrib][haskell] prepare for the air substraction contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 95 ++++++++++++----------- 1 file changed, 50 insertions(+), 45 deletions(-) commit 7c2046889b3484cbd836b5a26d6733f156d9d121 Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 09:28:04 2017 +0100 [contrib][haskell] use the XrdMeshParams type .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 27 ++++++++++++---------- 3 files changed, 17 insertions(+), 14 deletions(-) commit ce142bc2bffdc6426b52228219a8dde36fe2dc36 Author: Picca Frédéric-Emmanuel Date: Tue Mar 7 09:21:14 2017 +0100 [contrib][haskell] use the XrdOneDParams contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 7 ++-- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 6 +-- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 46 +++++++++++----------- 4 files changed, 30 insertions(+), 31 deletions(-) commit 6e9a4bef900c89612349b2d684a0d8f7a73527f2 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 17:11:38 2017 +0100 [contrib][haskell] integrate parameters has a type XrdOneDParams contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 3 ++- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 5 ++-- contrib/haskell/src/Hkl/Xrd/OneD.hs | 31 ++++++++++++---------- 3 files changed, 21 insertions(+), 18 deletions(-) commit 1eba2e28c6e7eb2d9f05a35b1ef783b05e0134d8 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 16:51:57 2017 +0100 [contrib][haskell] add the possibility to select the pyFAI integration method contrib/haskell/hkl.cabal | 1 + .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 3 ++- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 3 ++- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 9 ++++++- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 3 ++- contrib/haskell/src/Hkl/PyFAI.hs | 1 + .../haskell/src/Hkl/PyFAI/AzimuthalIntegrator.hs | 18 +++++++++++++ contrib/haskell/src/Hkl/Xrd/Mesh.hs | 30 +++++++++++++--------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 24 ++++++++--------- 9 files changed, 64 insertions(+), 28 deletions(-) commit 97adef304924bdcfa92bdbb8c27821a1084365d4 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 13:11:06 2017 +0100 [contrib][haskell] parallelize integrate contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6ec6a155262ac93d218f8a006071108c79a6579c Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 11:30:54 2017 +0100 [contirb][haskell] update the integrate multi in order to have a list of mask instead of the same mask contrib/haskell/src/Hkl/Xrd/OneD.hs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) commit cd6e8ea5fb327e0d67f3a95a3e011f78ff04a005 Author: Picca Frédéric-Emmanuel Date: Mon Mar 6 10:27:09 2017 +0100 [contrib][haskell] add the flat everywhere contrib/haskell/src/Hkl/Flat.hs | 9 ++- contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 3 +- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 3 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 4 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 31 +++++---- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 6 +- contrib/haskell/src/Hkl/Script.hs | 9 ++- contrib/haskell/src/Hkl/Utils.hs | 2 - contrib/haskell/src/Hkl/Xrd/Mesh.hs | 22 ++++--- contrib/haskell/src/Hkl/Xrd/OneD.hs | 77 ++++++++++++---------- 10 files changed, 98 insertions(+), 68 deletions(-) commit a9be5efacbbc30762a7dd40c40722246bc8aa892 Author: Picca Frédéric-Emmanuel Date: Wed Mar 1 16:18:44 2017 +0100 [contrib][haskell] replace saveScript by hasContent contrib/haskell/src/Hkl/Utils.hs | 44 ++++++------------------------------- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 6 ++--- 3 files changed, 11 insertions(+), 41 deletions(-) commit 65bc38ebf30f99cc1a2e74ee48b32ff6f04be98f Author: Picca Frédéric-Emmanuel Date: Wed Mar 1 16:05:50 2017 +0100 [contrib][haskell] use the SCript type everywhere contrib/haskell/src/Hkl/Flat.hs | 3 +- contrib/haskell/src/Hkl/Script.hs | 6 ++ contrib/haskell/src/Hkl/Xrd/Mesh.hs | 98 ++++++++++++++++---------------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 109 ++++++++++++++++-------------------- 4 files changed, 103 insertions(+), 113 deletions(-) commit 3fe59dd13ab5291b103f9ebf763d287a67d6cf3c Author: Picca Frédéric-Emmanuel Date: Wed Mar 1 13:44:18 2017 +0100 [contrib][haskell] add the Flat computation contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl.hs | 2 + contrib/haskell/src/Hkl/Flat.hs | 71 ++++++++++++++++++++ contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 82 ++++++++++++----------- contrib/haskell/src/Hkl/Script.hs | 61 +++++++++++++++++ 5 files changed, 180 insertions(+), 38 deletions(-) commit 441f2f7615c351fa18c01560c7d09d01f3ccabdb Author: Picca Frédéric-Emmanuel Date: Sun Mar 5 10:24:19 2017 +0100 [contrib][haskell] migrate the glade ui files to Gtk3 contrib/haskell/data/3d3.ui | 251 ++++ contrib/haskell/data/ghkl3.ui | 2537 +++++++++++++++++++++++++++++++++++++++ contrib/haskell/data/pseudo3.ui | 240 ++++ contrib/haskell/hkl.cabal | 3 + 4 files changed, 3031 insertions(+) commit 6b6e5e4d28fb975593d7fcd6fe8cea9405717897 Author: Picca Frédéric-Emmanuel Date: Tue Feb 28 15:10:51 2017 +0100 [contrib][haskell] add the Laure flat informations contrib/haskell/src/Hkl/Nxs.hs | 3 +++ contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 29 ++++++++++++++++------- 2 files changed, 23 insertions(+), 9 deletions(-) commit 2745591df24cc3b794647a7b7a08098e85ed6ba0 Author: Picca Frédéric-Emmanuel Date: Tue Feb 28 13:57:13 2017 +0100 [contrib][haskell] move all the DataFrameH5Path -> H5 managment into Nxs contrib/haskell/src/Hkl/Nxs.hs | 80 +++++++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Xrd/Mesh.hs | 51 ----------------------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 28 +------------ 3 files changed, 81 insertions(+), 78 deletions(-) commit 505bc84b15aab3c39ba1103e1d5e921e3aafea5c Author: Picca Frédéric-Emmanuel Date: Mon Feb 27 16:16:57 2017 +0100 [contrib][haskell] use Nxs in Mesh .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 30 +-- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 8 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 206 +++++++++++---------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 6 +- 4 files changed, 135 insertions(+), 115 deletions(-) commit cb83fb4db387581d42a9c5b06ccf3aa0d64599d9 Author: Picca Frédéric-Emmanuel Date: Sun Feb 26 19:08:06 2017 +0100 [contrib][haskell] prepare for the Nxs migration of the Mesh code contrib/haskell/src/Hkl/Nxs.hs | 35 +++++++++++- .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 4 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 4 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 66 +++++++++++----------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 2 +- 5 files changed, 73 insertions(+), 38 deletions(-) commit ef4735b0d7a071b2f8e1dcd05f7c7f8a14cc4ec5 Author: Picca Frédéric-Emmanuel Date: Fri Feb 24 16:58:14 2017 +0100 [contrib][haskell] create the Hkl.Nxs module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/Nxs.hs | 59 ++++++++++++++++++++++ .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 4 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 4 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 3 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 1 + contrib/haskell/src/Hkl/Xrd/OneD.hs | 52 ++----------------- 10 files changed, 75 insertions(+), 54 deletions(-) commit f686eb5eeacf8859bddc1788a8ebf2ce4ee15177 Author: Picca Frédéric-Emmanuel Date: Fri Feb 24 15:02:54 2017 +0100 [contrib][haskell] prepare the flat calculation. .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 6 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 4 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 4 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 66 ++++++++++++++-------- 6 files changed, 50 insertions(+), 34 deletions(-) commit a15deeaa42e1b5f042c20d205d0876058441e27e Author: Picca Frédéric-Emmanuel Date: Fri Feb 24 13:57:45 2017 +0100 [contrib][haskell] reorg contrib/haskell/src/Hkl/Xrd/OneD.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 0c8d60d6351042d626aa9fa893fb264b23dc2fe5 Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 16:16:13 2017 +0100 [contrib][haskell] remove the NxEntry field in the Nxs type use only the mkNxs "constructor" instead of the default constructor contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 27 ++--- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 8 +- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 124 ++++++++++----------- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 2 +- contrib/haskell/src/Hkl/Xrd/OneD.hs | 16 +-- 5 files changed, 79 insertions(+), 98 deletions(-) commit ada19d628e8424c4a85d251ff6cc4f14036e6219 Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 15:07:02 2017 +0100 [contrib][haskell] merge the withH5File into the withDataFrameH5 contrib/haskell/src/Hkl/H5.hs | 6 ++++ contrib/haskell/src/Hkl/Xrd/OneD.hs | 58 +++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 28 deletions(-) commit aebe23fac90cebdab3a392865883d48022181e1b Author: Picca Frédéric-Emmanuel Date: Thu Feb 23 14:38:25 2017 +0100 [contrib][haskell] put also the File in the DataFrameH5 contrib/haskell/src/Hkl/Xrd/OneD.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit eb24a6e644ca9be1970a8c97a160dd911e9b529c Author: Picca Frédéric-Emmanuel Date: Tue Feb 21 14:51:37 2017 +0100 [contrib][haskell] skip also for multi geometry contrib/haskell/src/Hkl/Xrd/OneD.hs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) commit fabb24463ae9caa56b7e4d6b04443bbbbbb0109b Author: Picca Frédéric-Emmanuel Date: Tue Feb 21 14:25:34 2017 +0100 [contrib][haskell] add the capability to skip frames in integrate' contrib/haskell/src/Hkl/Projects/D2AM/XRD.hs | 5 +++- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 5 +++- contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 7 +++-- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 33 ++++++++++++---------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 29 +++++++++++++------ 5 files changed, 52 insertions(+), 27 deletions(-) commit f0a961e34073720aa6d69e46b0707003b3b90b0d Author: Picca Frédéric-Emmanuel Date: Tue Feb 21 10:11:05 2017 +0100 [contrib][haskell] add all the Laure samples contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 169 +++++++++++----------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 8 +- 2 files changed, 90 insertions(+), 87 deletions(-) commit 10b9544022daca4f5d9d8fe71a1c82ecd229f91f Author: Picca Frédéric-Emmanuel Date: Fri Feb 3 13:52:12 2017 +0100 [contrib][haskell] wip flyscan mesh contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/DataSource.hs | 5 + contrib/haskell/src/Hkl/Projects/Diffabs.hs | 1 + contrib/haskell/src/Hkl/Projects/Diffabs/Laure.hs | 205 ++++++++++++++++++++++ contrib/haskell/src/xrd.hs | 3 +- 5 files changed, 214 insertions(+), 1 deletion(-) commit da4f50c22fc7d1f3e811320d44f43a98b49393a9 Author: Picca Frédéric-Emmanuel Date: Sun Feb 19 14:36:33 2017 +0100 [contrib][haskell] refactor the DataFrameH5Path remove all accessor for now .../haskell/src/Hkl/Projects/Diffabs/Charlier.hs | 10 +++--- contrib/haskell/src/Hkl/Projects/Diffabs/IRDRx.hs | 10 +++--- .../haskell/src/Hkl/Projects/Diffabs/Martinetto.hs | 36 +++++++++++----------- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 10 +++--- contrib/haskell/src/Hkl/Xrd/OneD.hs | 19 ++++++------ 5 files changed, 42 insertions(+), 43 deletions(-) commit 918a6e9c946af6f092350f71f33a1d7c332224ce Author: Picca Frédéric-Emmanuel Date: Sun Feb 19 14:10:51 2017 +0100 [contrib][hakell] use Datasource in Hkl.Xrd.OneD contrib/haskell/src/Hkl/Xrd/OneD.hs | 62 +++++++++++++++---------------------- 1 file changed, 25 insertions(+), 37 deletions(-) commit 8bd13dd94e72c891b63085616a2bc22f459a6aa4 Author: Picca Frédéric-Emmanuel Date: Sun Feb 19 13:45:40 2017 +0100 [contrib][haskell] use Datasource contrib/haskell/src/Hkl/Xrd/Mesh.hs | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) commit 76be94f1497bc9d203bf01e9d129af81b1634e24 Author: Picca Frédéric-Emmanuel Date: Sun Feb 19 13:37:11 2017 +0100 [contrib][haskell] move all projects under the Hkl.Projects module contrib/haskell/hkl.cabal | 16 +-- contrib/haskell/src/Hkl.hs | 6 +- contrib/haskell/src/Hkl/D2AM.hs | 3 - contrib/haskell/src/Hkl/Diffabs.hs | 6 - contrib/haskell/src/Hkl/Projects.hs | 5 + contrib/haskell/src/Hkl/Projects/D2AM.hs | 3 + contrib/haskell/src/Hkl/{ => Projects}/D2AM/XRD.hs | 2 +- contrib/haskell/src/Hkl/Projects/Diffabs.hs | 6 + .../src/Hkl/{ => Projects}/Diffabs/Charlier.hs | 10 +- .../src/Hkl/{ => Projects}/Diffabs/IRDRx.hs | 12 +- .../src/Hkl/{ => Projects}/Diffabs/Martinetto.hs | 9 +- .../src/Hkl/{ => Projects}/Diffabs/Melle.hs | 9 +- contrib/haskell/src/Hkl/Projects/Sixs.hs | 128 ++++++++++++++++++++ contrib/haskell/src/Hkl/PyFAI.hs | 1 + contrib/haskell/src/Hkl/Sixs.hs | 131 --------------------- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 1 - contrib/haskell/src/Hkl/Xrd/Mesh.hs | 1 - contrib/haskell/src/Hkl/Xrd/OneD.hs | 1 - contrib/haskell/src/hkl3d.hs | 2 +- contrib/haskell/src/xrd.hs | 2 +- 20 files changed, 166 insertions(+), 188 deletions(-) commit fef3c94e8a9c28529b95bd74f4791369ff7caea2 Author: Picca Frédéric-Emmanuel Date: Sun Feb 19 09:02:40 2017 +0100 [contrib][haskell] add the DataSource type contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl.hs | 1 - contrib/haskell/src/Hkl/Calibration.hs | 132 -------------------------- contrib/haskell/src/Hkl/DataSource.hs | 46 +++++++++ contrib/haskell/src/Hkl/Diffabs/Charlier.hs | 1 + contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 1 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 1 + contrib/haskell/src/Hkl/H5.hs | 4 + contrib/haskell/src/Hkl/Sixs.hs | 2 + contrib/haskell/src/Hkl/Types.hs | 18 ---- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 1 + contrib/haskell/src/Hkl/Xrd/Mesh.hs | 1 + contrib/haskell/src/Hkl/Xrd/OneD.hs | 21 ++-- 13 files changed, 69 insertions(+), 162 deletions(-) commit d476011bef2cf955ca8c3d67ead9d406483f612d Author: Picca Frédéric-Emmanuel Date: Fri Feb 3 09:44:48 2017 +0100 [contrib][haskell] wip flyscan mesh contrib/haskell/src/Hkl/Calibration.hs | 35 ++-- contrib/haskell/src/Hkl/Diffabs/Charlier.hs | 29 ++-- contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 64 +++++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 16 +- contrib/haskell/src/Hkl/Diffabs/Melle.hs | 2 +- contrib/haskell/src/Hkl/H5.hs | 3 + contrib/haskell/src/Hkl/Sixs.hs | 35 ++-- contrib/haskell/src/Hkl/Types.hs | 17 +- contrib/haskell/src/Hkl/Xrd/Calibration.hs | 5 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 233 ++++++++++++++++++-------- contrib/haskell/src/Hkl/Xrd/OneD.hs | 15 +- contrib/haskell/src/xrd.hs | 4 +- 12 files changed, 300 insertions(+), 158 deletions(-) commit 872af31b5964a6128b478655228f2e9656e0c4d3 Author: Picca Frédéric-Emmanuel Date: Thu Jan 26 15:25:38 2017 +0100 [contrib][haskell] first working mesh contrib/haskell/src/Hkl/Diffabs/Charlier.hs | 34 +++- contrib/haskell/src/Hkl/Types.hs | 7 +- contrib/haskell/src/Hkl/Utils.hs | 38 ++++- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 233 +++++++++++++--------------- 4 files changed, 179 insertions(+), 133 deletions(-) commit be67f14aa56966173857ca05921edccc98aa1472 Author: Picca Frédéric-Emmanuel Date: Tue Jan 24 11:08:50 2017 +0100 [contrib][haskell] rename and reoganise XRD -> Xrd contrib/haskell/hkl.cabal | 6 +- contrib/haskell/src/Hkl/D2AM/XRD.hs | 3 +- contrib/haskell/src/Hkl/Diffabs/Charlier.hs | 5 +- contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 3 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 +- contrib/haskell/src/Hkl/Xrd.hs | 5 + .../haskell/src/Hkl/{XRD => Xrd}/Calibration.hs | 4 +- contrib/haskell/src/Hkl/Xrd/Mesh.hs | 222 +++++++++++++++++++++ contrib/haskell/src/Hkl/{XRD.hs => Xrd/OneD.hs} | 168 +--------------- 9 files changed, 243 insertions(+), 176 deletions(-) commit 6e5056c441cb81f95dc357bf5ebe3bd6d7741e8b Author: Picca Frédéric-Emmanuel Date: Tue Jan 24 10:27:48 2017 +0100 wip mesh contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/Diffabs.hs | 3 +- contrib/haskell/src/Hkl/Diffabs/Charlier.hs | 147 +++++++++++++++ contrib/haskell/src/Hkl/Diffabs/Melle.hs | 65 ++++--- contrib/haskell/src/Hkl/H5.hs | 14 ++ contrib/haskell/src/Hkl/XRD.hs | 277 +++++++++++++++++----------- contrib/haskell/src/xrd.hs | 3 +- 7 files changed, 369 insertions(+), 143 deletions(-) commit 2c173825f5ebf1844c86537f6c61aa5ba5e05644 Author: Picca Frédéric-Emmanuel Date: Tue Jan 17 14:03:42 2017 +0100 [contrib][haskell] start to work on the non aborted scans. these scans contain Nan values at the end. So we just need to break the stream when we encounter a Nan contrib/haskell/hkl.cabal | 12 +++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 7 +-- contrib/haskell/src/Hkl/Diffabs/Melle.hs | 32 +++++++------- contrib/haskell/src/Hkl/XRD.hs | 64 ++++++++++++++++----------- contrib/haskell/src/xrd.hs | 4 +- 5 files changed, 65 insertions(+), 54 deletions(-) commit af91414c7644610d166acbdb8a6c2696bfb02cb9 Author: Picca Frédéric-Emmanuel Date: Mon Jan 2 11:25:15 2017 +0100 upgrading copyright year from 2016 to 2017 Documentation/hkl-default.el | 2 +- contrib/haskell/src/hkl.hs | 2 +- contrib/sixs/hkl3d.c | 2 +- gui/hkl-gui-3d.c | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 2 +- hkl.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 2 +- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 2 +- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly.c | 2 +- hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 91 files changed, 91 insertions(+), 91 deletions(-) commit 81485b556a45c8c8e6f5c30575017e171d28796e Author: Picca Frédéric-Emmanuel Date: Wed Dec 14 18:43:01 2016 +0100 pom.xml 5.1.1 hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e5837cd2a368dce083cf7f4ca42049dc4dffdf1f Author: Picca Frédéric-Emmanuel Date: Wed Dec 14 16:25:49 2016 +0100 [contrib][haskell] create the multi.py script for edf files contrib/haskell/src/Hkl/XRD.hs | 58 +++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) commit 5e6a691789eabfb9710cce4d37dc898aa1092aef Author: Picca Frédéric-Emmanuel Date: Wed Dec 14 15:03:33 2016 +0100 [contrib][haskell] add a generic saveScript method and use it contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/D2AM/XRD.hs | 2 +- contrib/haskell/src/Hkl/Utils.hs | 16 +++++++++++++++ contrib/haskell/src/Hkl/XRD.hs | 39 ++++++++++++++++++++----------------- 4 files changed, 39 insertions(+), 19 deletions(-) commit 779abdc061065ff7205919bf58f67fcfb268f8b7 Author: Picca Frédéric-Emmanuel Date: Tue Dec 13 14:54:10 2016 +0100 wip [contrib][haskell] add the multi integration for Edf contrib/haskell/src/Hkl/D2AM/XRD.hs | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) commit 7035339ee1e2d9f0b499d834079175a7042da768 Author: Picca Frédéric-Emmanuel Date: Tue Dec 13 14:30:05 2016 +0100 [contrib][haskell] prepare for multi integration with edf contrib/haskell/src/Hkl/D2AM/XRD.hs | 12 +++++++++--- contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 15 ++++++++++----- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 15 ++++++++++----- contrib/haskell/src/Hkl/XRD.hs | 25 ++++++++++++++++++------- contrib/haskell/src/Hkl/XRD/Calibration.hs | 1 - 5 files changed, 47 insertions(+), 21 deletions(-) commit f283378db94f69508d2a13e265813a87b7c35ceb Author: Picca Frédéric-Emmanuel Date: Tue Dec 13 13:42:56 2016 +0100 [contrib][haskell] add the xrd calibration with edf files contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/D2AM.hs | 3 + contrib/haskell/src/Hkl/D2AM/XRD.hs | 76 ++++++++ contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 8 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 8 +- contrib/haskell/src/Hkl/Diffabs/Melle.hs | 247 +++++++++++++------------- contrib/haskell/src/Hkl/Edf.hs | 29 ++- contrib/haskell/src/Hkl/XRD.hs | 226 ++++++++++++----------- contrib/haskell/src/Hkl/XRD/Calibration.hs | 30 ++-- contrib/haskell/src/xrd.hs | 3 +- 11 files changed, 372 insertions(+), 261 deletions(-) commit 2e4a099cb2609653f259ce7a4486c80c66e651c2 Author: Picca Frédéric-Emmanuel Date: Fri Dec 9 16:38:57 2016 +0100 [contrib][haskell] wip Signed-off-by: Picca Frédéric-Emmanuel contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/Diffabs.hs | 3 +- contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 8 ++ contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 + contrib/haskell/src/Hkl/Diffabs/Melle.hs | 147 ++++++++++++++++++++++++++ contrib/haskell/src/Hkl/XRD.hs | 105 +++++++++++++++++- contrib/haskell/src/xrd.hs | 5 +- 7 files changed, 269 insertions(+), 6 deletions(-) commit 25a2e7ce845e1adf918ec5955be5dcab0f15061e Author: Picca Frédéric-Emmanuel Date: Tue Dec 6 11:42:57 2016 +0100 [contrib][swing] ccd calibration contrib/swing/pinhole1.smv | Bin 0 -> 33554944 bytes contrib/swing/plot.py | 12 ++++++++++++ 2 files changed, 12 insertions(+) commit 4cc275d37ac63944accc970e83a356aee781517a Author: Picca Frédéric-Emmanuel Date: Mon Dec 5 15:51:12 2016 +0100 [contrib][haskell] reorganisation before XRD mesh work contrib/haskell/src/Hkl/XRD.hs | 131 +++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 65 deletions(-) commit af0df2f97d3c7f700ec12f8c624f7609efafc7ee Author: Picca Frédéric-Emmanuel Date: Mon Dec 5 15:35:48 2016 +0100 [contrib][haskell] no more Bin contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 4 ++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 ++-- contrib/haskell/src/Hkl/XRD.hs | 16 ++++++---------- 3 files changed, 10 insertions(+), 14 deletions(-) commit bd5341b818c2022d8ecb968bcdec5778e5b3aa36 Author: Picca Frédéric-Emmanuel Date: Mon Dec 5 15:31:39 2016 +0100 [contrib][haskell] use DIM1 instead of Bin to express the array size contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 40 ++++--------------------- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 5 ++-- contrib/haskell/src/Hkl/XRD.hs | 42 +++++++++++++-------------- contrib/haskell/src/xrd.hs | 4 +-- 4 files changed, 32 insertions(+), 59 deletions(-) commit 74acd6952297ac150a226fe59f661f603f172c85 Author: Picca Frédéric-Emmanuel Date: Mon Dec 5 14:23:39 2016 +0100 [contrib][haskell] start to use the repa shape In order to prepare the diftomo for multi dimension scans. Start to use the Repa.Shape. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/XRD.hs | 43 +++++++++++++++++++++--------------------- 2 files changed, 23 insertions(+), 21 deletions(-) commit a911d2ad5b34b4944e2eb2843bc4942000a053b3 Author: Picca Frédéric-Emmanuel Date: Sun Dec 11 11:06:06 2016 +0100 [contrib][haskell] add Edf support contrib/haskell/hkl.cabal | 10 ++-- contrib/haskell/src/Hkl/Edf.hs | 106 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 4 deletions(-) commit fbec2c073d3961473ec23921237785cbff3dbd18 Author: Picca Frédéric-Emmanuel Date: Sun Nov 27 18:07:43 2016 +0100 fix logging hkl/hkl-pseudoaxis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f63e22c969450a26e12cf6267118c484a17e442b Author: Picca Frédéric-Emmanuel Date: Tue Nov 22 18:05:29 2016 +0100 [contrib][haskell] TODO deal with the radial_range ??? contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 2 ++ contrib/haskell/src/Hkl/XRD.hs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) commit 6c4e03837ad5675b8172aa1d361182a0676e8577 Author: Picca Frédéric-Emmanuel Date: Tue Nov 22 11:56:01 2016 +0100 [contrib][haskell] add the MultiGeometry support contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 5 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 51 +++++++------ contrib/haskell/src/Hkl/XRD.hs | 104 +++++++++++++++++++++++--- contrib/haskell/src/xrd.hs | 9 ++- 4 files changed, 131 insertions(+), 38 deletions(-) commit ec380a4ab31b619542eb03ad78c9316d9a93ab76 Author: Picca Frédéric-Emmanuel Date: Tue Nov 15 11:23:06 2016 +0100 [contrib][haskell] add the irdrx files contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs.hs | 1 + contrib/haskell/src/Hkl/Diffabs/IRDRx.hs | 144 ++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 +- contrib/haskell/src/Hkl/XRD.hs | 9 +- contrib/haskell/src/xrd.hs | 3 +- 6 files changed, 156 insertions(+), 6 deletions(-) commit 3a3ef8d33abfbdc0409180038fbcce39f3543a51 Author: Picca Frédéric-Emmanuel Date: Thu Nov 3 15:11:20 2016 +0100 [contrib][haskell] use StandAloneDeriving for GADTs contrib/haskell/src/Hkl/Detector.hs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 9728dc969ab58ba0041ccdc7794f5709ea0f83a1 Author: Picca Frédéric-Emmanuel Date: Fri Oct 28 15:45:40 2016 +0200 [contrib][haskell] support hmatrix 0.15 -> 0.17 contrib/haskell/src/Hkl/XRD/Calibration.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7d4d7c4cf70dc3fa49e1051a1f6d474d5edb3340 Author: Picca Frédéric-Emmanuel Date: Tue Oct 25 18:34:38 2016 +0200 [contrib][haskell] add the a26, f30 and r35n1 samples contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 63 ++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 12 deletions(-) commit e87f09bab21f1846bf9505a036be841d67bb9a75 Author: Picca Frédéric-Emmanuel Date: Mon Oct 24 10:43:14 2016 +0200 [contrib][haskell] integrate also the CeO2 sample contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 101 ++++++++++++-------------- 1 file changed, 48 insertions(+), 53 deletions(-) commit 751155d57f917bfecb001e5c04a37537e18b0da2 Author: Picca Frédéric-Emmanuel Date: Mon Oct 24 10:42:57 2016 +0200 [contrib][haskell] simplify xrd contrib/haskell/src/xrd.hs | 62 ---------------------------------------------- 1 file changed, 62 deletions(-) commit 6a239f471c78f095ebd0c1dbf87082c739135966 Author: Picca Frédéric-Emmanuel Date: Mon Oct 24 10:42:15 2016 +0200 [contrib][haskell] open the NeXuS file in read-only mode some files are read-only and opening them in 'rw' failed. contrib/haskell/src/Hkl/XRD.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 36624b707f25bf0d16edcc3a67d22db6964e5209 Author: Picca Frédéric-Emmanuel Date: Mon Oct 24 10:13:03 2016 +0200 [contrib][haskell] fix for ghc < 7.10 contrib/haskell/src/Hkl/XRD.hs | 2 +- contrib/haskell/src/Hkl/XRD/Calibration.hs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) commit 745e98f87183193b97a988f3ec895c6afd9f0c9f Author: Picca Frédéric-Emmanuel Date: Mon Oct 24 10:07:32 2016 +0200 [contrib][haskell] xrf -> xrd contrib/haskell/hkl.cabal | 4 ++-- contrib/haskell/src/{xrf.hs => xrd.hs} | 0 2 files changed, 2 insertions(+), 2 deletions(-) commit ed42a9066637357c31d67842dbd1ac14c072ed57 Author: Picca Frédéric-Emmanuel Date: Mon Oct 10 11:00:08 2016 +0200 [contrib][haskell] fix the gnuplot file generation contrib/haskell/src/Hkl/XRD.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 8b3d5405a8ed7e07c7bf52f422455111058b4415 Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 14:15:13 2016 +0200 [contrib][haskell] add the ZAXIS diffractometer contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/Types.hs | 4 +- contrib/haskell/src/ghkl.hs | 109 +++++++++++++++++---------------------- 3 files changed, 50 insertions(+), 64 deletions(-) commit 99f650d9ccc6160288fa6f3094cc2d99e0591d56 Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 13:44:00 2016 +0200 [contrib][haskell] add the xrf executable contrib/haskell/hkl.cabal | 23 +++++++++++++++ contrib/haskell/src/xrf.hs | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) commit df7a73b03718aaf30a547a8becb316e309c1a87f Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 09:22:31 2016 +0200 [contrib][haskell] compile with hmatrix >= 0.17 contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 ++-- contrib/haskell/src/Hkl/MyMatrix.hs | 2 +- contrib/haskell/src/Hkl/XRD/Calibration.hs | 7 +------ 3 files changed, 4 insertions(+), 9 deletions(-) commit 3b653ae3513f2b0241c848b189b2a2cee40b4b77 Author: Picca Frédéric-Emmanuel Date: Tue Oct 4 18:32:07 2016 +0200 [contrib][haskell] more implicite imports contrib/haskell/src/Hkl/Calibration.hs | 1 + contrib/haskell/src/Hkl/H5.hs | 1 - contrib/haskell/src/Hkl/Sixs.hs | 1 + contrib/haskell/src/Hkl/XRD.hs | 142 +++++++++++++++-------------- contrib/haskell/src/Hkl/XRD/Calibration.hs | 1 + 5 files changed, 79 insertions(+), 67 deletions(-) commit 67a62257ab83daac7cc146db997ee8f7346461d2 Author: Picca Frédéric-Emmanuel Date: Tue Oct 4 18:10:17 2016 +0200 [contrib][haskell] explicite imports contrib/haskell/src/Hkl/XRD/Calibration.hs | 75 ++++++++++++++++++------------ 1 file changed, 44 insertions(+), 31 deletions(-) commit d218c0352b2997f409aa364fae0b4c7136a12457 Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 15:14:15 2016 +0200 [contrib][haskell] comment contrib/haskell/src/Hkl/Detector.hs | 2 ++ 1 file changed, 2 insertions(+) commit 08fff431279373daf2e6911b526160021abbda73 Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 15:09:54 2016 +0200 [contrib][haskell] hlint contrib/haskell/src/Hkl/XRD/Calibration.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit c94c006a9332fe31f75de103c31f366e9d517d77 Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 15:08:56 2016 +0200 [contrib][haskell] Xpad pixels size is always 130e-6 contrib/haskell/src/Hkl/Detector.hs | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) commit 0244df1b114e666dd92086d857e16746e5ead711 Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 13:29:58 2016 +0200 [contrib][haskell] Add the ImXpadS140 detector contrib/haskell/src/Hkl/C.hsc | 6 +-- contrib/haskell/src/Hkl/Detector.hs | 83 ++++++++++++++++++------------------- 2 files changed, 44 insertions(+), 45 deletions(-) commit 9342820d871e70ce50fe993e60b3b88bece64866 Author: Picca Frédéric-Emmanuel Date: Fri Sep 30 20:27:24 2016 +0200 [contrib][haskell] reorganisation of the code contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 46 +++--- contrib/haskell/src/Hkl/XRD.hs | 163 ++-------------------- contrib/haskell/src/Hkl/XRD/Calibration.hs | 194 ++++++++++++++++++++++++++ 5 files changed, 230 insertions(+), 177 deletions(-) commit 7bd8cba87f1ed399592871684762ff6e7caa6acb Author: Picca Frédéric-Emmanuel Date: Fri Sep 30 14:33:59 2016 +0200 [contrib][haskell] doc contrib/haskell/src/Hkl/XRD.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2f1e7bbbc5f82eef1b5d33b210f4e6070ec4eee7 Author: Picca Frédéric-Emmanuel Date: Thu Sep 29 08:43:48 2016 +0200 [contrib][haskell] create types for the calibration optimisation contrib/haskell/src/Hkl/XRD.hs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) commit c2071dfbfa3b1f96a07636ba530289cf0d3858c6 Author: Picca Frédéric-Emmanuel Date: Thu Sep 29 08:31:40 2016 +0200 [contrib][haskll] reduce the number of lines :) contrib/haskell/src/Hkl/PyFAI/Poni.hs | 4 ++-- contrib/haskell/src/Hkl/XRD.hs | 11 ++++------- 2 files changed, 6 insertions(+), 9 deletions(-) commit 0b09c11e8582a420c301c5fc065a3990c101e95e Author: Picca Frédéric-Emmanuel Date: Wed Sep 28 17:59:28 2016 +0200 [contrib][haskell] continu improving the calibration speed contrib/haskell/src/Hkl/XRD.hs | 73 ++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 35 deletions(-) commit 81364da3b04063902a884335b33b6ce658d47bbd Author: Picca Frédéric-Emmanuel Date: Wed Sep 28 16:14:35 2016 +0200 [contrib][haskell] interpolate the detector coordinates contrib/haskell/src/Hkl/Detector.hs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) commit cf1715ee90046452552ccf010ac71221a6ccc6dd Author: Picca Frédéric-Emmanuel Date: Wed Sep 28 14:48:41 2016 +0200 [contrib][haskell] more simplification contrib/haskell/src/Hkl/Detector.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit f3d2d4ab222e2778c7d04c4a7d21f10040a0bb6d Author: Picca Frédéric-Emmanuel Date: Wed Sep 28 14:14:53 2016 +0200 [contrib][haskell] fix the width of the Xpad32 and improve the speed contrib/haskell/src/Hkl/Detector.hs | 76 +++++---------------------- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 2 +- 2 files changed, 13 insertions(+), 65 deletions(-) commit 851124553c77d0fc2e6a99a05648ae064b440820 Author: Picca Frédéric-Emmanuel Date: Tue Sep 27 21:13:09 2016 +0200 [contrib][haskell] add the useHMatrixGsl option and simplify profiling contrib/haskell/hkl.cabal | 72 ++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 44 deletions(-) commit 5a0c86c5231aed06cd97964c1e014cd9a8253731 Author: Picca Frédéric-Emmanuel Date: Tue Sep 27 16:24:30 2016 +0200 [contrib][haskell] improve the calibration time contrib/haskell/hkl.cabal | 31 +++++++++++++++++++++++----- contrib/haskell/src/Hkl/Detector.hs | 40 ++++++++++++++++++++++++++++++++++++- contrib/haskell/src/Hkl/XRD.hs | 9 +++++---- 3 files changed, 70 insertions(+), 10 deletions(-) commit d6398df0643125477d8eede07a1265e67bfc1f56 Author: Picca Frédéric-Emmanuel Date: Tue Sep 27 09:51:04 2016 +0200 [contrib][haskell] optimize the calibration contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 2 +- contrib/haskell/src/Hkl/XRD.hs | 58 ++++++++++++++------------- 2 files changed, 32 insertions(+), 28 deletions(-) commit 293a0c6f0c02db8bf6587bcc7075f5c3e601b5c1 Author: Picca Frédéric-Emmanuel Date: Mon Sep 26 15:55:10 2016 +0200 [contrib][haskell] optimise by using the minimizeV method contrib/haskell/src/Hkl/XRD.hs | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) commit 658c2c199fb2dde48b043071525a0e6a2662fcea Author: Picca Frédéric-Emmanuel Date: Mon Sep 26 14:32:48 2016 +0200 [contrib][haskell] first calibration with all the images. contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 ++- contrib/haskell/src/Hkl/XRD.hs | 10 ++++++++-- contrib/haskell/src/ghkl.hs | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) commit 1ae47f9d369e1c049c29a2da31144e4a7a148564 Author: Picca Frédéric-Emmanuel Date: Mon Sep 26 10:15:14 2016 +0200 [contrib][haskell] fix for hmatrix < 0.17 contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/XRD.hs | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) commit 6bbac0b6df73822023b722002fbf3c9873bb7ad2 Author: Picca Frédéric-Emmanuel Date: Sat Sep 24 16:36:50 2016 +0200 [contrib][haskell] make it compiles on Debian unstable contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Detector.hs | 32 ++++++++++++--------- contrib/haskell/src/Hkl/XRD.hs | 57 +++++++++++++++++++++---------------- 3 files changed, 52 insertions(+), 38 deletions(-) commit a10dde3df1efa8aa2b5d2df5b7e6bda1ac334f21 Author: Picca Frédéric-Emmanuel Date: Fri Sep 23 15:06:52 2016 +0200 [contrib][haskell] generate a gnuplot script for each sample. contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 +- contrib/haskell/src/Hkl/XRD.hs | 164 +++++++++++++++++--------- 2 files changed, 107 insertions(+), 60 deletions(-) commit 9919923416fc99c0cea8ce6646b3394e3b7aefdd Author: Picca Frédéric-Emmanuel Date: Tue Sep 20 13:45:53 2016 +0200 [contrib][haskell] the integration is back to normal. Now that the Xpad_flat was corrected we have very nice spectra contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 ++- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 4 ++-- contrib/haskell/src/ghkl.hs | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) commit e3215664bebb2c37020499c6636ebed4f65566c7 Merge: 764f78d7 8ae5f1fc Author: Picca Frédéric-Emmanuel Date: Mon Sep 19 22:18:12 2016 +0200 release commit 8ae5f1fc5513e890913762937b7e851eae302c29 Author: Picca Frédéric-Emmanuel Date: Mon Sep 19 22:18:12 2016 +0200 pre-release gui/hkl-gui.c | 164 +++--- hkl3d/hkl3d.cpp | 1728 +++++++++++++++++++++++++++---------------------------- hkl3d/hkl3d.h | 272 ++++----- 3 files changed, 1082 insertions(+), 1082 deletions(-) commit 213021ad4a4095a91f07ee686c135c7afa15c598 Author: Picca Frédéric-Emmanuel Date: Mon Sep 19 22:13:47 2016 +0200 [hkl] set the right indentation and use it Documentation/hkl-default.el | 5 +++++ scripts/indent | 2 +- scripts/indent-c++ | 2 +- tests/bindings/Makefile.am | 2 +- tests/bindings/polarisation.py | 18 +++++++++++++++++- 5 files changed, 25 insertions(+), 4 deletions(-) commit 513b6f76e3c706d9bfb9b78444e582e747f95026 Author: Picca Frédéric-Emmanuel Date: Mon Sep 19 20:28:14 2016 +0200 [buildsys] fix python tests in order to find crystal.ini tests/bindings/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e45cc44f20d4395b4503719e3f6c9944e2a0cc5c Author: Picca Frédéric-Emmanuel Date: Mon Sep 19 19:08:19 2016 +0200 [hkl] add lifting_detector for petraIII P09-EH2 hkl/hkl-engine-petra3-p09-eh2.c | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) commit ab9bedf245f3187dcee289532a0ca2315748124b Author: Picca Frédéric-Emmanuel Date: Fri Sep 16 16:44:35 2016 +0200 [contrib][haskell] wip calibration of the xpad32... contrib/haskell/src/Hkl/C.hsc | 4 +- contrib/haskell/src/Hkl/Detector.hs | 58 +++++++++++++++++++++++---- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 12 +++--- contrib/haskell/src/Hkl/MyMatrix.hs | 4 +- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 46 +++++++++------------ contrib/haskell/src/Hkl/XRD.hs | 11 ++--- contrib/haskell/src/ghkl.hs | 4 +- 7 files changed, 89 insertions(+), 50 deletions(-) commit 3ce4df029e350b0cbc8663638b2945099b944796 Author: Picca Frédéric-Emmanuel Date: Fri Sep 16 14:22:06 2016 +0200 [contrib][haskell] fix the pyFAI -> hkl convertion matrix contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 ++-- contrib/haskell/src/Hkl/MyMatrix.hs | 8 ++++---- contrib/haskell/src/ghkl.hs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) commit 1c4a24567e2c5388e9a142651490fef30f1bc021 Author: Picca Frédéric-Emmanuel Date: Thu Sep 15 10:24:59 2016 +0200 [contrib][haskell] style contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 22931b64ccfd9fda689a5ef22e6787702d0f599b Author: Picca Frédéric-Emmanuel Date: Wed Sep 14 16:41:11 2016 +0200 [contrib][haskell] reorg contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 13 +++--- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 57 +++++++++++++-------------- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 5 ++- 3 files changed, 38 insertions(+), 37 deletions(-) commit 50f506e259669e28a0443aec56c68d9812832490 Author: Picca Frédéric-Emmanuel Date: Wed Sep 14 14:32:00 2016 +0200 [cotnrib][haskell] create the Hkl.PyFAI.PoniExt module contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 32 ++++++----- contrib/haskell/src/Hkl/MyMatrix.hs | 18 +++++++ contrib/haskell/src/Hkl/PyFAI/Poni.hs | 78 ++++++++++++--------------- contrib/haskell/src/Hkl/PyFAI/PoniExt.hs | 55 +++++++++++++++++++ contrib/haskell/src/Hkl/Types.hs | 1 - contrib/haskell/src/Hkl/Types/PyFAI.hs | 26 --------- contrib/haskell/src/Hkl/XRD.hs | 30 ++++------- 8 files changed, 138 insertions(+), 104 deletions(-) commit 969818dcdc3d2f584024f16e4e59fab4a6d9f0b9 Author: Picca Frédéric-Emmanuel Date: Tue Sep 13 15:44:19 2016 +0200 [contrib][haskell] add a Detector type for xpad32, zerod contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/C.hsc | 29 ++++++------- contrib/haskell/src/Hkl/Detector.hs | 27 ++++++++++++ contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 10 ++++- contrib/haskell/src/Hkl/PyFAI/Npt.hs | 14 +++--- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 10 +++-- contrib/haskell/src/Hkl/Types.hs | 10 ----- contrib/haskell/src/Hkl/XRD.hs | 62 ++++++++++++++------------- 8 files changed, 95 insertions(+), 68 deletions(-) commit 251ddb8b9704fa6dcc8a7385ea74ff2e1e723030 Author: Picca Frédéric-Emmanuel Date: Fri Sep 9 13:58:33 2016 +0200 [contrib][haskell] first calibration with all images contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 14 ++++--- contrib/haskell/src/Hkl/MyMatrix.hs | 30 ++++++++++++++ contrib/haskell/src/Hkl/PyFAI/Poni.hs | 39 +++++++++---------- contrib/haskell/src/Hkl/Types/PyFAI.hs | 9 +---- contrib/haskell/src/Hkl/XRD.hs | 56 ++++++++++++++++++++++++--- 6 files changed, 111 insertions(+), 38 deletions(-) commit b14acfe494a6b1b7aad018d8d57b55151b994c4a Author: Picca Frédéric-Emmanuel Date: Wed Sep 7 11:09:25 2016 +0200 [contrib][haskell] start to implement the calibration algo contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 43 ++++++++++++++--- contrib/haskell/src/Hkl/XRD.hs | 68 ++++++++++++++++++++++++++- contrib/haskell/src/ghkl.hs | 4 +- 3 files changed, 105 insertions(+), 10 deletions(-) commit 2c75bdebf7543420f62b27a1f445803ea185178c Author: Picca Frédéric-Emmanuel Date: Tue Sep 6 15:57:26 2016 +0200 [contrib][haskell] the right poni entry is the last one. contrib/haskell/src/Hkl/XRD.hs | 2 +- contrib/haskell/src/ghkl.hs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 6e8956aaab3a66c8cf790c4072d3be77aaadd717 Author: Picca Frédéric-Emmanuel Date: Tue Sep 6 09:36:36 2016 +0200 [contrib][haskell] rename a variable contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit d3f23521a117e700da3114e2f3f8e0e7782fb085 Author: Picca Frédéric-Emmanuel Date: Mon Sep 5 16:18:23 2016 +0200 [contrib][haskell] parse all the martinetto npt files contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 4894d8181c70984518f4c295a58879255cb5defa Author: Picca Frédéric-Emmanuel Date: Mon Sep 5 16:02:32 2016 +0200 [contrib][haskell] add the npt parser contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs.hs | 1 - contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 17 +++-- contrib/haskell/src/Hkl/PyFAI.hs | 1 + contrib/haskell/src/Hkl/PyFAI/Npt.hs | 99 +++++++++++++++++++++++++++ contrib/haskell/src/ghkl.hs | 3 +- 6 files changed, 111 insertions(+), 11 deletions(-) commit a75ef8fb03c1d26911be78a788fd6a1c310a9d5c Author: Picca Frédéric-Emmanuel Date: Mon Sep 5 12:22:36 2016 +0200 [contrib][haskell] create a pyFAI module in order to add xy files contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/PyFAI.hs | 160 +--------------------------------- contrib/haskell/src/Hkl/PyFAI/Poni.hs | 159 +++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 159 deletions(-) commit 975aae5b964a9a2af68e6832e17dd888c5205e8a Author: Picca Frédéric-Emmanuel Date: Mon Sep 5 12:11:15 2016 +0200 [contrib][haskell] created an XRD module from the martinetto code contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 275 +----------------------- contrib/haskell/src/Hkl/XRD.hs | 294 ++++++++++++++++++++++++++ 3 files changed, 298 insertions(+), 272 deletions(-) commit 8ab5380092f09480439c720d4b981a43c0446d75 Author: Picca Frédéric-Emmanuel Date: Mon Sep 5 11:42:04 2016 +0200 [contrib][haskell] add the detecteor mask contrib/haskell/hkl.cabal | 4 ++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) commit 41dffb4c7d602c4401260b410f03ea2ae6e0e201 Author: Picca Frédéric-Emmanuel Date: Fri Sep 2 11:40:48 2016 +0200 [contrib][haskell] add a method in order to flip the poni contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 6 ++++-- contrib/haskell/src/Hkl/PyFAI.hs | 13 ++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) commit 0862cdc2fd877f774b09dc98456064dedb5a7a21 Author: Picca Frédéric-Emmanuel Date: Fri Sep 2 11:25:44 2016 +0200 [contirb][haskell] replace all mapM_ by a concurrent version contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 3fdfbc5049a4403ff2070a136899c6a206af6303 Author: Picca Frédéric-Emmanuel Date: Fri Sep 2 11:17:52 2016 +0200 [contrib][haskell] add the threshold and the bins in the new XrdNxs type contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 128 +++++++++++++++++--------- 1 file changed, 82 insertions(+), 46 deletions(-) commit d64be7fae6d666c0982668a9995da6b8ede0acf8 Author: Picca Frédéric-Emmanuel Date: Thu Sep 1 13:54:09 2016 +0200 [contrib][haskell] execute the integration in multiple threads contrib/haskell/hkl.cabal | 7 +++++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 26 +++++++++++++++++--------- 2 files changed, 22 insertions(+), 11 deletions(-) commit 61f0b96e85e6bf000f54f101c18f4fb5c24de3d1 Author: Picca Frédéric-Emmanuel Date: Mon Aug 29 12:00:22 2016 +0200 [contib][haskell] compile on jessie and remove warnings contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/C.hsc | 4 ++-- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 ++-- contrib/haskell/src/Hkl/PyFAI.hs | 15 ++++++++------- 4 files changed, 13 insertions(+), 12 deletions(-) commit f2e2b859598c6b2b658392307ee351f0c074f2f8 Author: Picca Frédéric-Emmanuel Date: Sun Jul 31 14:11:37 2016 +0200 [contrib/haskell] factorize the h5path in Martinetto contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 199 +++----------------------- 1 file changed, 20 insertions(+), 179 deletions(-) commit ed566077b8638fc75c6bd9fc8a43023064be6de3 Author: Picca Frédéric-Emmanuel Date: Sun Jul 31 10:50:06 2016 +0200 [contrib/haskell] XRF -> XRD contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 60 +++++++++++++-------------- 1 file changed, 30 insertions(+), 30 deletions(-) commit ca381e126304ba270f7b7554803a51a250139ee3 Author: Picca Frédéric-Emmanuel Date: Sun Jul 31 10:46:01 2016 +0200 [contrib/haskell] remove all warnings in the library contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 162 ++++++++++---------------- 2 files changed, 60 insertions(+), 104 deletions(-) commit a9dd9e220ef06672cc4ab29c0b6efde7756b7a27 Author: Picca Frédéric-Emmanuel Date: Sat Jul 30 18:59:14 2016 +0200 [contrib/haskell] user pipes(safe in order to manage resources. contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 87 ++++++++++++++------------- 2 files changed, 48 insertions(+), 41 deletions(-) commit cc4dbbc4ac2a88e0d565e338f460d0cc65e39351 Author: Picca Frédéric-Emmanuel Date: Fri Jul 29 14:35:06 2016 +0200 [contrib/haskell] set the right wavelength when integrating with pyFAI contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 3 +++ 1 file changed, 3 insertions(+) commit f72e7591289c1e8fb0ecc5f85202db6be76126bd Author: picca Date: Fri Jul 29 14:12:58 2016 +0200 [contrib/haskell] use OverloadedStrings to simplify code contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit d53c85caf48889ffef0dcacaa17a82a410452907 Author: picca Date: Fri Jul 29 11:13:25 2016 +0200 [contrib/haskell] make it compiles on stretch contrib/haskell/src/Hkl/C.hsc | 2 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 2 +- contrib/haskell/src/Hkl/PyFAI.hs | 26 ++++++++++++++------------ contrib/haskell/src/Hkl/Types/PyFAI.hs | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) commit f9f33109115c6565031ce1c30d24d7979f0e3ddc Author: Picca Frédéric-Emmanuel Date: Wed Jul 27 17:32:51 2016 +0200 [contrib/haskell] pyFAI integrator first version contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 134 ++++++++++++++++++++------ contrib/haskell/src/Hkl/PyFAI.hs | 7 +- 2 files changed, 109 insertions(+), 32 deletions(-) commit 6d27177fd061165ff2ff19b4984575cdf4a8ac23 Author: Picca Frédéric-Emmanuel Date: Wed Jul 27 15:13:05 2016 +0200 [contrib/haskell] hlint + saves consumer -> savePonies Pipe contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) commit 99400dc5ef269cdaa1fcb52fb6faf32a626deadf Author: Picca Frédéric-Emmanuel Date: Wed Jul 27 14:20:38 2016 +0200 [contrib][haskell] fix the getPoniExtRef method contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit dffa6b2f59d0e33a14a2774b1d4fca97393672b3 Author: Picca Frédéric-Emmanuel Date: Tue Jul 26 17:01:16 2016 +0200 [contrib] reorg + code contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 275 +++++++++++++------------- 1 file changed, 141 insertions(+), 134 deletions(-) commit 45d2fd09c2159d0795bdc7c28b40bc3e8b611fdd Author: Picca Frédéric-Emmanuel Date: Tue Jul 26 16:27:50 2016 +0200 [contrib) add all samples and unconnect from ruche contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 227 ++++++++++++++++++++++++-- 1 file changed, 213 insertions(+), 14 deletions(-) commit adaad448a01f0243dd1a66a6b0f106e6a9dbf351 Author: Picca Frédéric-Emmanuel Date: Tue Jul 26 14:46:52 2016 +0200 [contrib] treament of multiple nxs files for samples (difftomo) add XRFRef, XRFSample class in order to deal with this. contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 144 ++++++++++++++++++-------- 2 files changed, 103 insertions(+), 42 deletions(-) commit 36ab23590ab18ca0509036c6af1fa5d3c21dd080 Author: Picca Frédéric-Emmanuel Date: Tue Jul 26 10:52:10 2016 +0200 [contrib] save all ponies in /tmp for now contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 43 ++++++++++++++++----------- 1 file changed, 26 insertions(+), 17 deletions(-) commit c2ed01ea8801f2964218d17bf4a37d531dab44aa Author: Picca Frédéric-Emmanuel Date: Tue Jul 26 09:55:26 2016 +0200 [contrib] use the changeBase in rotatePoniEntry contrib/haskell/src/Hkl/PyFAI.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit b0d56e97727889134e1f9240c74eeca8b4c20940 Author: Picca Frédéric-Emmanuel Date: Mon Jul 25 18:27:05 2016 +0200 [contrib] add a method to write a poni contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 14 +++++++++++--- contrib/haskell/src/Hkl/PyFAI.hs | 24 +++++++++++++++++++++++- 2 files changed, 34 insertions(+), 4 deletions(-) commit 75c21fc6d97206518e4764c9665930d2945fc2f8 Author: Picca Frédéric-Emmanuel Date: Mon Jul 25 15:52:36 2016 +0200 [contrib] compute the poniext for each step of a scan contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 63 +++++++++++++++------------ 1 file changed, 35 insertions(+), 28 deletions(-) commit bda6bb07c181d2a7e6c6c694f6c01f2d96b1e082 Author: Picca Frédéric-Emmanuel Date: Mon Jul 25 14:03:22 2016 +0200 [contrib] treatment of hkl and pyFAI basis when rotating a Poni contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 10 ++++----- contrib/haskell/src/Hkl/PyFAI.hs | 29 ++++++++++++++++++++++----- contrib/haskell/src/Hkl/Types/PyFAI.hs | 9 ++++++++- 3 files changed, 37 insertions(+), 11 deletions(-) commit 706fe2e97f2d6207db6fac91b0a0c0add816ae7e Author: Picca Frédéric-Emmanuel Date: Mon Jul 25 13:24:47 2016 +0200 [contrib] add a computeNewPoni in order to produce a popni for each step of a scan. contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit 4a6468d3a7c0521988e44fedc1b739eac009c0ed Author: Picca Frédéric-Emmanuel Date: Mon Jul 25 11:53:26 2016 +0200 [contrib] read the ref poni for real contrib/haskell/hkl.cabal | 6 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 148 +++++++++++++++----------- contrib/haskell/src/Hkl/PyFAI.hs | 6 +- contrib/haskell/src/Hkl/Types.hs | 5 - 4 files changed, 89 insertions(+), 76 deletions(-) commit e97ee25fc6c6f231ce0a10647c8b117041d29082 Author: Picca Frédéric-Emmanuel Date: Fri Jul 22 16:56:50 2016 +0200 [contrib] put a Factory in the Geometry type contrib/haskell/src/Hkl/C.hsc | 57 ++++++++++++++------------- contrib/haskell/src/Hkl/Calibration.hs | 2 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 4 +- contrib/haskell/src/Hkl/Sixs.hs | 2 +- contrib/haskell/src/Hkl/Types.hs | 11 ++++++ 5 files changed, 45 insertions(+), 31 deletions(-) commit b1d7779c029d8f4a4da86b8d05d99b4085205785 Author: Picca Frédéric-Emmanuel Date: Fri Jul 22 14:09:02 2016 +0200 [contrib] create the poni used for ref. contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 62 ++++++++++++++++----------- contrib/haskell/src/Hkl/Types.hs | 16 ++++++- 2 files changed, 51 insertions(+), 27 deletions(-) commit bb7cc511eb5d351d4a4071383be2288eeb4ab209 Author: Picca Frédéric-Emmanuel Date: Fri Jul 22 10:52:54 2016 +0200 [contrib] hlint contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 16 ++++++---------- contrib/haskell/src/Hkl/PyFAI.hs | 10 +++++----- contrib/haskell/src/Hkl/Types.hs | 2 -- 3 files changed, 11 insertions(+), 17 deletions(-) commit 21db474a297999c8a7bd258f3898bfbc5604a404 Author: Picca Frédéric-Emmanuel Date: Thu Jul 21 17:35:34 2016 +0200 [contrib] wip martinetto contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 69b7fdea4ef9688088ade85b6ab26be2c52cd8b4 Author: Picca Frédéric-Emmanuel Date: Thu Jul 21 14:54:20 2016 +0200 [contrib] detector rotation matrix for each position of the scan Create a type for the factory. contrib/haskell/src/Hkl/C.hsc | 116 +++++++++++++++++--------- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 56 ++++--------- contrib/haskell/src/Hkl/PyFAI.hs | 4 +- contrib/haskell/src/Hkl/Types.hs | 15 ++-- 4 files changed, 106 insertions(+), 85 deletions(-) commit 5b945ba181eb2c0b70c9610d4ded8756b37aaa43 Author: Picca Frédéric-Emmanuel Date: Mon Jul 18 16:26:16 2016 +0200 [contrib] add a way to rotate a poniEntry contrib/haskell/src/Hkl/PyFAI.hs | 58 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) commit 6e7668fb97c4c83c6f9c499276396e3cfe893d09 Author: Picca Frédéric-Emmanuel Date: Wed Jul 6 15:11:34 2016 +0200 [contrib] rework the martinetto main contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 73 ++++++++++---------- contrib/haskell/src/ghkl.hs | 99 ++++++++++++++------------- 2 files changed, 86 insertions(+), 86 deletions(-) commit aff933ce901f621de11df0c523a230c84dbe6ff2 Author: Picca Frédéric-Emmanuel Date: Wed Jul 6 14:04:40 2016 +0200 [contrib] haskell refactoring contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 60 ++++++++++++++------------- 1 file changed, 32 insertions(+), 28 deletions(-) commit 4224a8cee480dab082ba11a8efa22160b986f00a Author: Picca Frédéric-Emmanuel Date: Wed Jul 6 13:48:48 2016 +0200 [contrib] wip martinetto contrib/haskell/src/Hkl/Diffabs.hs | 136 +------------------ contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 182 +++++++++++++++++++++++--- 2 files changed, 166 insertions(+), 152 deletions(-) commit f9442d35bfeb231b813b31e29bc49f011ef315fc Author: Picca Frédéric-Emmanuel Date: Mon Jul 4 15:51:43 2016 +0200 [contrib] put the martinetto code in its own module contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/Diffabs.hs | 4 +- contrib/haskell/src/Hkl/Diffabs/Martinetto.hs | 81 +++++++++++++++++++++++++++ contrib/haskell/src/ghkl.hs | 27 +-------- 4 files changed, 87 insertions(+), 27 deletions(-) commit 77a28ec07e55716b9ed215766c9992e02355f097 Author: Picca Frédéric-Emmanuel Date: Mon Jul 4 11:20:06 2016 +0200 [contrib] parse latest poni files contrib/haskell/hkl.cabal | 2 ++ contrib/haskell/src/Hkl/PyFAI.hs | 4 ++-- contrib/haskell/src/ghkl.hs | 23 ++++++++++++++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) commit 450bccb29ea83816b626cf1d999c93c384dc78ce Author: Picca Frédéric-Emmanuel Date: Sat Jul 2 15:17:29 2016 +0200 [contrib] add units in the poni file contrib/haskell/src/Hkl/PyFAI.hs | 30 ++++++++++++++++++++---------- contrib/haskell/src/Hkl/Types/PyFAI.hs | 20 ++++++++++---------- 2 files changed, 30 insertions(+), 20 deletions(-) commit 017b9b85dc4ee93b6650c19ba9bab79eaa8d231e Author: Picca Frédéric-Emmanuel Date: Sat Jul 2 14:36:24 2016 +0200 [contrib] parse the pyFAI ponifiles contrib/haskell/src/Hkl/PyFAI.hs | 41 +++++++++++++++++----------------- contrib/haskell/src/Hkl/Types/PyFAI.hs | 10 ++++++--- contrib/haskell/src/ghkl.hs | 4 +++- 3 files changed, 31 insertions(+), 24 deletions(-) commit 04d3a68a545e1b18622d692fba2866c4cd0fa8ba Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 17:02:58 2016 +0200 [wip][contrib] parse poni file contrib/haskell/hkl.cabal | 10 +++++++-- contrib/haskell/src/Hkl.hs | 1 + contrib/haskell/src/Hkl/PyFAI.hs | 37 ++++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Types/PyFAI.hs | 21 ++++++++++++------- contrib/haskell/src/ghkl.hs | 16 +++++++++++++-- 5 files changed, 74 insertions(+), 11 deletions(-) commit 1a24786b744fe5ebb2eb9bba5eea385f5c76652b Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 14:41:58 2016 +0200 [contrib] add a PyFAI module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/Types.hs | 1 + contrib/haskell/src/Hkl/Types/PyFAI.hs | 15 +++++++++++++++ 3 files changed, 17 insertions(+) commit 44557a8e56f9fc54ae7da2e4f958ef936b5aa2bc Author: Picca Frédéric-Emmanuel Date: Tue Jun 28 14:32:57 2016 +0200 [contrib] put Parameter into it's own module contrib/haskell/hkl.cabal | 3 +- contrib/haskell/src/Hkl/C.hsc | 44 --------------- contrib/haskell/src/Hkl/Engine.hs | 1 - contrib/haskell/src/Hkl/Types.hs | 44 +++++++-------- contrib/haskell/src/Hkl/Types/Parameter.hsc | 85 +++++++++++++++++++++++++++++ 5 files changed, 108 insertions(+), 69 deletions(-) commit 99cf1a4428fb7b4c843fef605e4e7e6b289ddd79 Author: Picca Frédéric-Emmanuel Date: Mon Jun 27 19:16:42 2016 +0200 [contrib] declare Storable Parameter contrib/haskell/hkl.cabal | 2 +- contrib/haskell/src/Hkl/C.hsc | 119 ++++++++++++++++----------------- contrib/haskell/src/Hkl/Calibration.hs | 2 +- contrib/haskell/src/Hkl/Diffabs.hs | 2 +- contrib/haskell/src/Hkl/Sixs.hs | 2 +- contrib/haskell/src/Hkl/Types.hs | 1 + contrib/haskell/src/ghkl.hs | 4 ++ 7 files changed, 65 insertions(+), 67 deletions(-) commit 21fc182277386cbb9b2a1b78f8d098fe2514f97a Author: Picca Frédéric-Emmanuel Date: Tue Jun 7 18:56:15 2016 +0200 [hkl] update ccan hkl/ccan/list/list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a2681be516abe65a0ba12121cb3b4907f3a5a6ef Author: Picca Frédéric-Emmanuel Date: Tue Jun 7 10:39:39 2016 +0200 [tests] work in progress on the polarisation with petraIII tests/bindings/Makefile.am | 2 +- tests/bindings/crystal.ini | 27 ++++ tests/bindings/polarisation.py | 335 +++++++++++++++++++++++++++++++++++------ 3 files changed, 314 insertions(+), 50 deletions(-) commit 6d1c79a8696f0755e9bd748593cc373732003a29 Author: Picca Frédéric-Emmanuel Date: Tue Jun 7 10:23:46 2016 +0200 [hkl] add hkl_matrix_dup unit test tests/hkl-matrix-t.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) commit 14d53ea3e343aa5e632fa68910d6befbf7a0a3c5 Author: Picca Frédéric-Emmanuel Date: Tue Jun 7 10:22:55 2016 +0200 [hkl] apply clean-all script gui/hkl-gui-3d-gl.c | 76 +- gui/hkl-gui-3d.c | 84 +- gui/hkl-gui-pseudoaxes.c | 8 +- gui/hkl-gui.c | 42 +- hkl.h | 4 +- hkl/hkl-binding.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 4 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 4 +- hkl3d/hkl3d.cpp | 1728 +++++++++++------------ hkl3d/hkl3d.h | 272 ++-- tests/hkl-bench-t.c | 4 +- tests/hkl-lattice-t.c | 104 +- tests/hkl-pseudoaxis-e4ch-t.c | 10 +- tests/hkl-pseudoaxis-e4cv-t.c | 6 +- tests/hkl-pseudoaxis-e6c-t.c | 10 +- tests/hkl-pseudoaxis-k4cv-t.c | 8 +- tests/hkl-pseudoaxis-k6c-t.c | 4 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 4 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-sample-t.c | 8 +- tests/runtests.c | 1960 +++++++++++++------------- tests/tap/basic.c | 930 ++++++------ tests/tap/basic.h | 48 +- tests/tap/float.c | 32 +- tests/tap/float.h | 4 +- tests/tap/hkl-tap.c | 6 +- 26 files changed, 2682 insertions(+), 2682 deletions(-) commit 6c387bf4afa6827874291b1bca562a3c29ec7ce3 Author: Picca Frédéric-Emmanuel Date: Mon Jun 6 13:26:09 2016 +0200 [hkl] updated clean-all script scripts/clean-all | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 46b76d4ef40d7c2333ce74c9be57fb296de8cc47 Author: Picca Frédéric-Emmanuel Date: Mon Jun 6 11:32:13 2016 +0200 [gui] now it is possible to set the mode parameters gui/hkl-gui-pseudoaxes.c | 36 ++++++++++++++++++++++++++++++++++++ gui/pseudo.ui | 1 + 2 files changed, 37 insertions(+) commit b013a18c7f6943968800f65e4a47a7135a4c7002 Author: Picca Frédéric-Emmanuel Date: Thu Jun 2 17:43:43 2016 +0200 [hkl] add the ca method in the polarisation script tests/bindings/polarisation.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) commit d6c5ba1e1defe3d003385b4ba6695617261679f3 Author: Picca Frédéric-Emmanuel Date: Wed Jun 1 15:17:10 2016 +0200 [hkl] add the wavelength in polarisation.py tests/bindings/polarisation.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) commit 363fda9454b58d563f1896be86a7be37fdf98609 Author: Picca Frédéric-Emmanuel Date: Tue May 24 11:26:18 2016 +0200 [hkl] polarisation use reflections in order to compute the UB matrix. tests/bindings/polarisation.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit f3a1b00dd0bd7142c84b0264c579add15092f736 Author: Picca Frédéric-Emmanuel Date: Mon May 23 16:21:54 2016 +0200 [contrib] extract the ub matrix contrib/haskell/src/Hkl/H5.hs | 9 ++++++++- contrib/haskell/src/Hkl/Sixs.hs | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) commit a04d21fb1f6b4f98749555552df1f3fb989db208 Author: Picca Frédéric-Emmanuel Date: Mon May 23 14:55:35 2016 +0200 [contrib] use Data.Vector.Storable in get_position contrib/haskell/hkl.cabal | 2 ++ contrib/haskell/src/Hkl/C.hsc | 17 ++++++++++------- contrib/haskell/src/Hkl/Calibration.hs | 5 +++-- contrib/haskell/src/Hkl/Diffabs.hs | 5 +++-- contrib/haskell/src/Hkl/H5.hs | 13 +++++-------- contrib/haskell/src/Hkl/Sixs.hs | 5 +++-- contrib/haskell/src/Hkl/Types.hs | 3 ++- contrib/haskell/src/ghkl.hs | 4 +++- 8 files changed, 31 insertions(+), 23 deletions(-) commit a8fda906e2e10cd74d565030b00dc7300d8808d0 Author: Picca Frédéric-Emmanuel Date: Mon May 23 12:21:23 2016 +0200 [contrib] style contrib/haskell/src/Hkl/H5.hs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) commit b1001db3866adad2645ebc691533f80c485c88c8 Author: Picca Frédéric-Emmanuel Date: Mon May 23 12:08:48 2016 +0200 [contrib] no more Bindings.HDF5.Raw contrib/haskell/src/Hkl/Calibration.hs | 14 +++++++------- contrib/haskell/src/Hkl/Diffabs.hs | 14 +++++++------- contrib/haskell/src/Hkl/H5.hs | 14 ++------------ contrib/haskell/src/Hkl/Sixs.hs | 10 +++++----- 4 files changed, 21 insertions(+), 31 deletions(-) commit 00912a5c8100d1b4a71cec551a31d9982253ad66 Author: Picca Frédéric-Emmanuel Date: Mon May 23 12:05:23 2016 +0200 [contrib] use readDatasetInto contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl/H5.hs | 58 +++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 33 deletions(-) commit 469c86610a7de617eb45533f1c9d4f96b2caa04e Author: Picca Frédéric-Emmanuel Date: Fri May 20 16:08:58 2016 +0200 [contrib] simplification contrib/haskell/src/Hkl/H5.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit f05ca26f04630214818a9ca454b86b74d7e1f1c8 Author: Picca Frédéric-Emmanuel Date: Fri May 20 16:01:36 2016 +0200 [contrib] remove useless code contrib/haskell/src/Hkl/H5.hs | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) commit aa4f5e497e9e53de866a75d4f55ca399ceb62b38 Author: Picca Frédéric-Emmanuel Date: Fri May 20 16:00:21 2016 +0200 [contrib] use closeTypeID contrib/haskell/src/Hkl/H5.hs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) commit 6fa7f2dbe52fe6a91a2648f8eabbe081bb391b42 Author: Picca Frédéric-Emmanuel Date: Fri May 20 15:51:59 2016 +0200 [contrib] getSimpleDataspaceExtentNPoints contrib/haskell/src/Hkl/H5.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1d1fa47cbea84b06b4b98e857e3bc2f81781d4d8 Author: Picca Frédéric-Emmanuel Date: Fri May 20 15:47:32 2016 +0200 [contrib] use closeDataspace contrib/haskell/src/Hkl/H5.hs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) commit 9615ca67c5e555cefa612703059ed427625151d5 Author: Picca Frédéric-Emmanuel Date: Fri May 20 15:41:32 2016 +0200 [contrib] use createSimpleDataspace contrib/haskell/src/Hkl/H5.hs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 3256c92a991b4a9df0f27b51c94c4d13e888455e Author: Picca Frédéric-Emmanuel Date: Fri May 20 15:27:45 2016 +0200 [contrib) use selectHyperslab contrib/haskell/src/Hkl/H5.hs | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) commit 29766815357b53ba8769b04500000555b36f97f3 Author: Picca Frédéric-Emmanuel Date: Fri May 20 15:15:12 2016 +0200 [contrib] use Dataset methods contrib/haskell/src/Hkl/H5.hs | 44 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 24 deletions(-) commit 6009078289e6e7e33bd05cc93a554819ed70962c Author: Picca Frédéric-Emmanuel Date: Fri May 20 14:36:19 2016 +0200 [contrib] hs-hdf5 use Dataset contrib/haskell/src/Hkl/Calibration.hs | 67 +++++++++++++++---------------- contrib/haskell/src/Hkl/Diffabs.hs | 73 ++++++++++++++++------------------ contrib/haskell/src/Hkl/H5.hs | 61 ++++++++++------------------ contrib/haskell/src/Hkl/Sixs.hs | 63 ++++++++++++++--------------- 4 files changed, 119 insertions(+), 145 deletions(-) commit b78f3e66eca6dc10ef1e748cf3cc5214c39f0e77 Author: Picca Frédéric-Emmanuel Date: Fri May 20 14:07:37 2016 +0200 [contrib] use hdf5 binding (openFile) contrib/haskell/hkl.cabal | 2 ++ contrib/haskell/src/Hkl/Calibration.hs | 4 ++-- contrib/haskell/src/Hkl/Diffabs.hs | 4 ++-- contrib/haskell/src/Hkl/H5.hs | 38 ++++++++++++++-------------------- contrib/haskell/src/Hkl/Sixs.hs | 4 ++-- contrib/haskell/src/hkl3d.hs | 5 +++-- 6 files changed, 27 insertions(+), 30 deletions(-) commit 5e0a35c4929a051872f8d0bd35e61defcd0c1eb4 Author: Picca Frédéric-Emmanuel Date: Thu May 19 13:44:39 2016 +0200 [contrib] remove comments contrib/haskell/src/Hkl/Diffabs.hs | 111 ------------------------------------- contrib/haskell/src/Hkl/H5.hs | 41 -------------- contrib/haskell/src/Hkl/Sixs.hs | 110 ------------------------------------ 3 files changed, 262 deletions(-) commit 81f5b14670d19f9e83ada922d58eccb0b9f33dc1 Author: Picca Frédéric-Emmanuel Date: Thu May 19 13:44:07 2016 +0200 [contrib] add the Calibration module contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 22 ++---- contrib/haskell/src/Hkl/Calibration.hs | 132 +++++++++++++++++++++++++++++++++ contrib/haskell/src/hkl3d.hs | 4 +- 4 files changed, 143 insertions(+), 16 deletions(-) commit 24bb6880e4a184840fd2bc7854bbb6d0db1cbb1d Author: Picca Frédéric-Emmanuel Date: Tue May 17 18:52:30 2016 +0200 [buildsys] add a release target Makefile.am | 15 ++++++++++++++- scripts/clean-all | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) commit 15a128980fa79c1735922b9fb25995aa31113ed4 Author: Picca Frédéric-Emmanuel Date: Wed May 4 16:39:28 2016 +0200 [contrib] simplification of the blender code contrib/cirpad/blender_pyfai.py | 198 ++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 127 deletions(-) commit fd95e64799823057a6360550faf119af5e6e4a68 Author: Picca Frédéric-Emmanuel Date: Wed May 4 13:05:40 2016 +0200 [contrib] first blender script for pyfai detectors contrib/cirpad/blender_pyfai.py | 414 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 414 insertions(+) commit 7f0c7773e15f4d6d78f759127ebc3b01b75fd30b Author: Picca Frédéric-Emmanuel Date: Wed May 4 09:59:47 2016 +0200 [buildsys] fix x.pc.in file for multi-arch headers files Documentation/hkl.org.in | 6 ++++++ hkl.pc.in | 6 +++--- hkl3d.pc.in | 8 ++++---- 3 files changed, 13 insertions(+), 7 deletions(-) commit 0afeeb3e949f58e1bc700ccff6b32314a284cc2b Author: Picca Frédéric-Emmanuel Date: Thu Apr 28 08:59:18 2016 +0200 post release commit Documentation/hkl.org.in | 1 + 1 file changed, 1 insertion(+) commit 764f78d732d5a0181902bc11029fafad80ef1bbd Merge: 37484987 140965b3 Author: Picca Frédéric-Emmanuel Date: Wed Apr 27 09:05:13 2016 +0200 Merge branch 'next' into maint commit 140965b367de780f549a5bde7063284012d6e00c Author: Picca Frédéric-Emmanuel Date: Wed Apr 27 09:04:05 2016 +0200 [todo] fix the q/q2 engines. Documentation/hkl.org.in | 7 +++++++ 1 file changed, 7 insertions(+) commit d2c8bb1a7673c37e6189b396c8b6269858807b49 Author: Picca Frédéric-Emmanuel Date: Wed Apr 27 08:40:31 2016 +0200 [hkl] remove gobject-introspection warnings hkl/hkl-binding.c | 52 +++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 39 deletions(-) commit 9425ab8209f6b92fbcd8251baddc1f8b51f119a5 Author: Picca Frédéric-Emmanuel Date: Wed Apr 27 08:32:11 2016 +0200 [buildsys] reactivate the patch level version number configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 02b7c0e1b5307737d09b6b032845a4f97447daeb Author: Picca Frédéric-Emmanuel Date: Tue Apr 26 19:36:17 2016 +0200 [ccan] update the ccan part hkl/ccan/configurator.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) commit 374849879c0c24a5089a5d30513504130b89f4d3 Author: Picca Frédéric-Emmanuel Date: Tue Apr 26 16:48:00 2016 +0200 update the pom.xml file with the ICA version hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 51a0f1f39aa8ce0d1bafc53c641870788d3c0349 Author: Picca Frédéric-Emmanuel Date: Tue Apr 26 16:25:58 2016 +0200 [hkl] add the soleil sirius turret basepitch axis. Documentation/hkl.org.in | 2 ++ hkl/hkl-axis-private.h | 4 ++-- hkl/hkl-axis.c | 20 +++++++++----------- hkl/hkl-engine-soleil-sirius-turret.c | 17 +++++++++++------ hkl/hkl-geometry-private.h | 3 +++ hkl/hkl-geometry.c | 14 +++++++++++--- tests/hkl-axis-t.c | 21 ++++++++------------- 7 files changed, 46 insertions(+), 35 deletions(-) commit e414c32b4efde13005062115fd5fff128511aca3 Author: Picca Frédéric-Emmanuel Date: Mon Apr 25 16:33:50 2016 +0200 [doc] updated for the sample/detector rotation. Documentation/hkl.org.in | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit eb892077154a86a8524e70cc97762f3cb462a1cd Author: Picca Frédéric-Emmanuel Date: Wed Apr 20 14:49:08 2016 +0200 [binding] add hkl_quaternion_to_matrix in order to convert quaternion to matrix hkl.h | 5 +++-- hkl/Makefile.am | 1 + hkl/hkl-binding-private.h | 6 ++++++ hkl/hkl-binding.c | 22 ++++++++++++++++++++++ hkl/hkl-quaternion.c | 2 +- tests/bindings/polarisation.py | 21 ++++++++++----------- tests/bindings/python.py | 4 ++++ 7 files changed, 47 insertions(+), 14 deletions(-) commit ffbb045aa27270c41b0c782a094e9094d1a77805 Author: Picca Frédéric-Emmanuel Date: Fri Apr 15 18:13:14 2016 +0200 [hkl] add hkl_geometry_[sample/detector]_rotation_get hkl.h | 8 +++- hkl/hkl-binding-private.h | 6 +++ hkl/hkl-binding.c | 38 ++++++++++++++++++ hkl/hkl-geometry.c | 34 +++++++++++++++++ hkl/hkl-types.h | 3 ++ tests/bindings/Makefile.am | 2 +- tests/bindings/polarisation.py | 87 ++++++++++++++++++++++++++++++++++++++++++ tests/bindings/python.py | 11 ++++++ tests/hkl-geometry-t.c | 33 +++++++++++++++- 9 files changed, 219 insertions(+), 3 deletions(-) commit 1901ca074ec3dce4432e99cd9b6c8ac3079ef6c7 Merge: 18999cbd 49fb23d4 Author: System User Date: Tue Apr 12 14:25:13 2016 +0200 Merge branch 'maint' into next Conflicts: Documentation/hkl.org.in commit 18999cbd9d680fbfaeb8f3f296df828f468cd2d3 Author: System User Date: Tue Apr 12 14:23:48 2016 +0200 [contrib] sixs test contrib/haskell/src/ghkl.hs | 56 ++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 26 deletions(-) commit 49fb23d4583014e18fd476ca97a5151b9b95e19c Author: System User Date: Thu Apr 7 10:59:22 2016 +0200 [hkl] add milliradians as unit for the sirius geometries hkl/hkl-unit-private.h | 4 +++- hkl/hkl-unit.c | 36 ++++++++++++++++++++++++++++++++++++ tests/hkl-unit-t.c | 15 ++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) commit e022885edce8016289d2fa9a827d68b17a7c597d Author: System User Date: Thu Apr 7 09:11:22 2016 +0200 [buildsys] fix the tests Makefile.am tests/Makefile.am | 1 - 1 file changed, 1 deletion(-) commit 7412f521b6a615e79a9c40296c7815f4631ff38a Author: Picca Frédéric-Emmanuel Date: Wed Apr 6 14:29:38 2016 +0200 [contrib] remove useless code contrib/haskell/src/Hkl/C.hsc | 5 ----- 1 file changed, 5 deletions(-) commit 6ddb79a651420975623e493cd99ee436bfd1eaa1 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 17:07:07 2016 +0200 [contrib] add the H5Dataspace type contrib/haskell/src/Hkl/H5.hs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) commit bd12befc93a6668bbbd0f7b65e56198599bf9db0 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 16:53:54 2016 +0200 [contrib] reorg contrib/haskell/src/Hkl/H5.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit 0e26a5d49df1acc21be8f31ffe457ae4f776be8f Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 16:53:42 2016 +0200 [contrib] add the H5DataType type contrib/haskell/src/Hkl/H5.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 1eb35bbe94408919a6610e4930edc02dc10180e4 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 16:43:56 2016 +0200 [contrib] add H5Dataset type contrib/haskell/src/Hkl/Diffabs.hs | 19 ++++++------- contrib/haskell/src/Hkl/H5.hs | 56 ++++++++++++++++++++------------------ contrib/haskell/src/Hkl/Sixs.hs | 17 ++++++------ 3 files changed, 47 insertions(+), 45 deletions(-) commit 8debf44835c9ea119db412b728318a19a4503a95 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 16:16:22 2016 +0200 [contrib] start to create types on top of HId_t contrib/haskell/src/Hkl/Diffabs.hs | 32 +++++++++++++------------- contrib/haskell/src/Hkl/H5.hs | 47 +++++++++++++++++++++++++------------- contrib/haskell/src/Hkl/Sixs.hs | 30 ++++++++++++------------ 3 files changed, 62 insertions(+), 47 deletions(-) commit efebfe84c068983d3128d955b8e8fd5856596ab9 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 12:23:36 2016 +0200 [contrib] style contrib/haskell/src/Hkl/Diffabs.hs | 5 +++-- contrib/haskell/src/Hkl/Sixs.hs | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) commit 41879ed55e7e73a5d18d1472ceaa19dedddc4bb0 Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 12:01:39 2016 +0200 [contrib] extract the geometry from hdf5 for Diffabs contrib/haskell/src/Hkl/Diffabs.hs | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) commit 0e760739c1177a18472aa917b781072bd387e51a Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 11:59:26 2016 +0200 [contrib] remove all warnings contrib/haskell/hkl.cabal | 8 +-- contrib/haskell/src/Hkl.hs | 4 ++ contrib/haskell/src/Hkl/C.hsc | 104 +++++++++++++++++++++---------------- contrib/haskell/src/Hkl/Diffabs.hs | 66 ++++++++++++----------- contrib/haskell/src/Hkl/Sixs.hs | 33 +++++++----- contrib/haskell/src/ghkl.hs | 13 +++-- contrib/haskell/src/hkl3d.hs | 3 +- 7 files changed, 131 insertions(+), 100 deletions(-) commit 626b239aeb6e52e1c7ae30d7461dad969d133c1b Author: Picca Frédéric-Emmanuel Date: Thu Mar 31 09:59:46 2016 +0200 [contrib] style, documentation, remove useless code contrib/haskell/hkl.cabal | 85 ++++++------------- contrib/haskell/src/Hkl/Diffractometer.hs | 107 ----------------------- contrib/haskell/src/Hkl/Engine.hs | 29 ++++--- contrib/haskell/src/Hkl/H5.hs | 55 ++++++------ contrib/haskell/src/Hkl/Lattice.hs | 61 -------------- contrib/haskell/src/Hkl/Sixs.hs | 136 +++++++++++++----------------- contrib/haskell/src/Hkl/Source.hs | 24 ------ contrib/haskell/src/Hkl/Transformation.hs | 58 ------------- contrib/haskell/src/Hkl/Types.hs | 131 ++++++++++++++++++---------- 9 files changed, 214 insertions(+), 472 deletions(-) commit ed05942f6d4697ec380498dbc27d94020a739048 Author: System User Date: Wed Mar 30 16:26:46 2016 +0200 [contrib] use maybe instead of defining maybeIO contrib/haskell/src/Hkl/H5.hs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) commit 51598378b38b323cfa6aaaf7dcc968aa7dac5869 Author: System User Date: Wed Mar 30 12:51:36 2016 +0200 [contrib] add the maybeIO contrib/haskell/src/Hkl/H5.hs | 84 +++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 44 deletions(-) commit 983c962980ab1a61033bddd4a0c9c88bec6c0f76 Author: System User Date: Wed Mar 30 10:46:50 2016 +0200 [contrib] factorize the get_position' method contrib/haskell/src/Hkl/Diffabs.hs | 9 --------- contrib/haskell/src/Hkl/H5.hs | 11 +++++++++++ contrib/haskell/src/Hkl/Sixs.hs | 9 --------- 3 files changed, 11 insertions(+), 18 deletions(-) commit b17f5d9dbf3b9806a359437a8a6d00b26b2903b0 Author: System User Date: Wed Mar 30 10:42:37 2016 +0200 [contrib] read the geometry from the h5 file contrib/haskell/src/Hkl/Sixs.hs | 14 ++++++++------ contrib/haskell/src/hkl3d.hs | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) commit 2dad8951098e21c96c2d8286c229475d84399bd9 Author: System User Date: Wed Mar 30 10:26:10 2016 +0200 [contrib] migrate sixs code to the new h5 methods contrib/haskell/hkl.cabal | 1 + contrib/haskell/src/Hkl.hs | 2 + contrib/haskell/src/Hkl/Diffabs.hs | 8 +-- contrib/haskell/src/Hkl/Sixs.hs | 143 +++++++++++++++++++------------------ contrib/haskell/src/Hkl/Types.hs | 6 ++ 5 files changed, 84 insertions(+), 76 deletions(-) commit 6eb582f92b2c22b9b9528248c663a84a301f19ed Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 16:56:39 2016 +0200 [contrib] rework the get_position to managed all the errors contrib/haskell/src/Hkl/H5.hs | 60 ++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 20 deletions(-) commit 5ec55569c62339a7af0663dbb97473d54dc219c9 Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 16:00:40 2016 +0200 [contrib] add withDataspace contrib/haskell/src/Hkl/H5.hs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 572687b06698fd882a1fc396b88ce7f12e23d547 Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 15:04:03 2016 +0200 [contrib] add a lenH5Dataspace contrib/haskell/src/Hkl/Diffabs.hs | 5 +---- contrib/haskell/src/Hkl/H5.hs | 19 ++++++++++++------- contrib/haskell/src/Hkl/Sixs.hs | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) commit 3734649b2cc8d4ac1302a63ae6825a73d40f1edb Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 14:27:14 2016 +0200 [contrib] add a closeH5Dataset contrib/haskell/src/Hkl/Diffabs.hs | 24 ++++++++++------------- contrib/haskell/src/Hkl/H5.hs | 39 ++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 28 deletions(-) commit 33262633367bcba249ae6f026cc5c4b2a9353e21 Author: Picca Frédéric-Emmanuel Date: Tue Mar 29 11:21:11 2016 +0200 [contrib] add an openH5Dataset contrib/haskell/src/Hkl/Diffabs.hs | 23 ++++++++++------------- contrib/haskell/src/Hkl/H5.hs | 7 +++++++ 2 files changed, 17 insertions(+), 13 deletions(-) commit 0176aec8cdd7bcce4266e5e92c460d09e92f9113 Author: Picca Frédéric-Emmanuel Date: Mon Mar 28 11:13:05 2016 +0200 [contrib] deal with the h5 file error contrib/haskell/src/Hkl/H5.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 2a0353e1951584b17edc0cee0ca0544ec7e2b8fe Author: Picca Frédéric-Emmanuel Date: Sat Mar 26 20:15:39 2016 +0100 [contrib] create a withH5File method contrib/haskell/src/Hkl/Diffabs.hs | 41 +++++++++++++++++++------------------- contrib/haskell/src/Hkl/H5.hs | 7 ++++++- 2 files changed, 26 insertions(+), 22 deletions(-) commit 7746ea10aadecefb12a8303c56ab0654457c7e77 Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 21:56:47 2016 +0100 [contrib] deal with the extended dimensions contrib/haskell/src/Hkl/Diffabs.hs | 45 +++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 20 deletions(-) commit 83072a11336762f4000254174c338b89d8f19990 Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 21:23:31 2016 +0100 [contrib] deal with the get_positions errors contrib/haskell/src/Hkl/Diffabs.hs | 18 ++++++++++++------ contrib/haskell/src/Hkl/H5.hs | 11 +++++++---- contrib/haskell/src/Hkl/Sixs.hs | 20 +++++++++++--------- 3 files changed, 30 insertions(+), 19 deletions(-) commit 7b9ec191e7a3075da14c3842f28f94f93be45e36 Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 19:46:19 2016 +0100 [contrib] deal with non existing dataset contrib/haskell/src/Hkl/Diffabs.hs | 83 ++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 35 deletions(-) commit b91c533241e8d785bd3d8b74e915ac2d4798c437 Author: Picca Frédéric-Emmanuel Date: Fri Mar 25 19:45:58 2016 +0100 [contrib] hkl3d on sixs and diffabs contrib/haskell/hkl.cabal | 23 +++- contrib/haskell/src/Hkl/Diffabs.hs | 236 ++++++++++++++++++++++++++++++++++ contrib/haskell/src/Hkl/Engine.hs | 4 +- contrib/haskell/src/Hkl/H5.hs | 88 +++++++++++++ contrib/haskell/src/Hkl/Sixs.hs | 251 +++++++++++++++++++++++++++++++++++++ contrib/haskell/src/ghkl.hs | 2 +- contrib/haskell/src/hkl3d.hs | 8 ++ 7 files changed, 607 insertions(+), 5 deletions(-) commit b1bd169bf361db7318c2ea99146b31f1dba9ac21 Author: System User Date: Thu Feb 25 16:41:21 2016 +0100 [hkl] filter the solution at the end with the real range. Documentation/hkl.org.in | 4 ++++ hkl/hkl-geometry-private.h | 2 ++ hkl/hkl-geometry.c | 23 ++++++++++++++++++++++- hkl/hkl-parameter-private.h | 4 ++++ hkl/hkl-parameter.c | 14 ++++++++++++++ tests/Makefile.am | 1 + tests/hkl-geometry-t.c | 12 ++++++------ 7 files changed, 53 insertions(+), 7 deletions(-) commit d79ed76ede7c8498df45f0e33dbc54a411436198 Author: Picca Frédéric-Emmanuel Date: Thu Feb 25 11:00:41 2016 +0100 [hkl] logging even if there is no error for debugging purpose hkl/hkl-pseudoaxis.c | 6 ++++++ 1 file changed, 6 insertions(+) commit c99f983d6cbbf30cc9c63eb437b7ca7bcc013766 Author: Picca Frédéric-Emmanuel Date: Tue Feb 23 21:36:44 2016 +0100 [contrib] use hmatrix instead of normal list contrib/haskell/hkl.cabal | 3 ++- contrib/haskell/src/Hkl/Engine.hs | 37 ++++++++++++------------------------- contrib/haskell/src/ghkl.hs | 8 ++++++-- 3 files changed, 20 insertions(+), 28 deletions(-) commit 334b1c353eb007db0a03c0eefd0fdd0a9f21aef1 Author: Picca Frédéric-Emmanuel Date: Tue Feb 23 19:14:02 2016 +0100 [contrib] fix the fromToPipe contrib/haskell/src/Hkl/Engine.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 617ef6a4e3514a208aff81667fe86fe44115538d Author: System User Date: Tue Feb 23 16:51:06 2016 +0100 [contrib] add the fromToPipe contrib/haskell/src/Hkl/Engine.hs | 19 ++++++++++++------- contrib/haskell/src/ghkl.hs | 6 ++---- 2 files changed, 14 insertions(+), 11 deletions(-) commit 7904867314d37e94c1f13733991653f3fc61403e Author: System User Date: Tue Feb 23 15:48:50 2016 +0100 [contrib] doc contrib/haskell/src/Hkl/C.hsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8297807d52fb7690087b204365e71498bab71896 Author: System User Date: Tue Feb 23 15:48:41 2016 +0100 [contrib] add an enginesTrajectoryPipe contrib/haskell/src/Hkl/Engine.hs | 8 ++++++++ contrib/haskell/src/ghkl.hs | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) commit 6b2581e680471f3861c51dc7d7e4f98177a648be Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 15:23:23 2016 +0100 [contrib] first working pipe contrib/haskell/hkl.cabal | 4 ++++ contrib/haskell/src/Hkl/C.hsc | 53 +++++++++++++++++++++++++++++++++++++++++-- contrib/haskell/src/ghkl.hs | 13 +++++++---- 3 files changed, 64 insertions(+), 6 deletions(-) commit 5d2e95a2ad037639b2232845afc5113a2557263f Author: System User Date: Wed Feb 17 11:33:41 2016 +0100 [contrib] add the withLAttice method contrib/haskell/src/Hkl/C.hsc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 586ae9996d5cb045028ff236e92d06992c63c5b8 Author: System User Date: Wed Feb 17 11:29:06 2016 +0100 [contrib] add withEngineList contrib/haskell/src/Hkl/C.hsc | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) commit 672262d44a0e547dfb85f14caf9dafcd4ef5c338 Author: System User Date: Wed Feb 17 11:01:39 2016 +0100 [contrib] add withDetector contrib/haskell/src/Hkl/C.hsc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit f9b8b9c76da89080090eee5c297b314d1723926a Author: System User Date: Wed Feb 17 10:56:04 2016 +0100 [contrib] add withSample contrib/haskell/src/Hkl/C.hsc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit e72ca34beff87dfa4dff4d173e0004f502cc092d Author: System User Date: Wed Feb 17 10:54:50 2016 +0100 [contrib] add withGeometry and use it contrib/haskell/src/Hkl/C.hsc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit c50d88fe6893ff8e815c6eb7e5b7c906fdf60e98 Author: System User Date: Wed Feb 17 10:31:06 2016 +0100 [contrib] comment and remove useless part of the cabal file contrib/haskell/hkl.cabal | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit 97d5ab6a19e131d811ecc5534991b359252751d0 Author: Picca Frédéric-Emmanuel Date: Tue Feb 16 22:57:43 2016 +0100 [contrib] less do :) contrib/haskell/src/Hkl/C.hsc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 23c4a43a94e1e95d585fc9dd57ad200326c8a748 Author: System User Date: Tue Feb 16 18:29:00 2016 +0100 [contrib] add a solveTraj method this is much more efficient and better since the computation is done moving from one position to the other. contrib/haskell/src/Hkl/C.hsc | 47 ++++++++++++++++++++++++++++++++----------- contrib/haskell/src/ghkl.hs | 10 ++++----- 2 files changed, 40 insertions(+), 17 deletions(-) commit b990ef03da4e1163e2a4b5f646cce61a230fff4c Author: System User Date: Tue Feb 16 12:34:50 2016 +0100 [contrib] compute a trajectory contrib/haskell/hkl.cabal | 9 +++++++-- contrib/haskell/src/Hkl.hs | 2 ++ contrib/haskell/src/Hkl/C.hsc | 6 ++++++ contrib/haskell/src/Hkl/Engine.hs | 25 +++++++++++++++++++++++++ contrib/haskell/src/Hkl/Types.hs | 3 +++ contrib/haskell/src/ghkl.hs | 13 ++++++++++--- 6 files changed, 53 insertions(+), 5 deletions(-) commit 3228b06e37ecff68c66d6f938229621d33a214cf Author: Picca Frédéric-Emmanuel Date: Mon Feb 15 20:25:34 2016 +0100 [contrib] add the ux uy uz to the sample contrib/haskell/src/Hkl/C.hsc | 147 ++++++++++++++++++++++++++++----------- contrib/haskell/src/Hkl/Types.hs | 2 +- contrib/haskell/src/ghkl.hs | 4 ++ 3 files changed, 110 insertions(+), 43 deletions(-) commit f0bc3b65da908d6cc7978ff48b4935e48f4c09f3 Author: Picca Frédéric-Emmanuel Date: Sun Feb 14 09:24:17 2016 +0100 [contrib] add the solve method. contrib/haskell/hkl.cabal | 2 + contrib/haskell/src/Hkl/C.hsc | 125 +++++++++++++++++++++++++++++++++--------- contrib/haskell/src/ghkl.hs | 9 +++ 3 files changed, 109 insertions(+), 27 deletions(-) commit b6a9d1d2f7d017518c454fab1b6a6276ed44430a Author: Picca Frédéric-Emmanuel Date: Wed Feb 10 09:15:59 2016 +0100 [contrib] make it works with jessie contrib/haskell/hkl.cabal | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 92aaeb60e0e094aba9d87c6a6fbc46f5b87db6c9 Author: Picca Frédéric-Emmanuel Date: Tue Feb 9 15:58:30 2016 +0100 [hkl] hkl_vector_init is now public and usable in the bindings Documentation/hkl.org.in | 2 ++ hkl.h | 2 ++ hkl/Makefile.am | 1 + hkl/hkl-vector-private.h | 2 -- tests/bindings/python.py | 4 ++++ 5 files changed, 9 insertions(+), 2 deletions(-) commit 4a98986e8f3ac77bf46ae82fdc99f3c7b954047f Author: Picca Frédéric-Emmanuel Date: Tue Feb 9 21:45:13 2016 +0100 [contrib] add the Engine and Mode types contrib/haskell/src/Hkl/C.hsc | 41 ++++++++++--- contrib/haskell/src/Hkl/Types.hs | 8 +++ contrib/haskell/src/ghkl.hs | 122 ++------------------------------------- 3 files changed, 46 insertions(+), 125 deletions(-) commit 8c99e66f5c04dfaebbfe2c0b8eb6e353e7298cac Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 22:37:30 2016 +0100 [contrib] hlint contrib/haskell/src/Hkl/C.hsc | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) commit 359e1442a9f6df0f6e6ca7398a5aacd8dcb30476 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 18:05:28 2016 +0100 [contrib] use for real the lattice of Sample contrib/haskell/src/Hkl/C.hsc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit c8e42b69693c0d7de86e32d97711bdbf4144ac1b Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 17:36:32 2016 +0100 [contrib] use dimensional in the Source contrib/haskell/src/Hkl/C.hsc | 4 ++-- contrib/haskell/src/Hkl/Types.hs | 2 +- contrib/haskell/src/ghkl.hs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) commit 91b9af8142a89e3a3cad8476b7d6516dd9750768 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 17:30:20 2016 +0100 [contrib] all Lattice can now be convert to HklLattice contrib/haskell/src/Hkl/C.hsc | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) commit c0b77216d269a564ab0533132913d85a6c19b622 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 16:41:28 2016 +0100 [contrib] hide the Hkl... types except the factory - do not import Hkl qualified - add a lattice to the sample (for now not used) contrib/haskell/src/Hkl/C.hsc | 11 +++++++++- contrib/haskell/src/Hkl/Types.hs | 45 ++++++++++++++++++---------------------- contrib/haskell/src/ghkl.hs | 21 +++++++++---------- 3 files changed, 40 insertions(+), 37 deletions(-) commit f0570a01c2d17a3c8198b0a67bcad576700fa839 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 16:23:08 2016 +0100 [contrib] add the Lattice type contrib/haskell/hkl.cabal | 5 ++++- contrib/haskell/src/Hkl.hs | 6 +++--- contrib/haskell/src/Hkl/Types.hs | 13 +++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) commit cc20d648cb7d959a5c4d7cd74db6cb314e85173c Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 16:11:26 2016 +0100 [contrib] no more foreignptr in the Sample type contrib/haskell/src/Hkl/C.hsc | 22 ++++++++-------------- contrib/haskell/src/Hkl/Types.hs | 3 ++- contrib/haskell/src/ghkl.hs | 27 ++++++++++++--------------- 3 files changed, 22 insertions(+), 30 deletions(-) commit aa1c42e6536e762bdbe6ffc261839e84d4175b9f Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 15:24:19 2016 +0100 [contrib] merge DArray, C -> C contrib/haskell/hkl.cabal | 4 +- contrib/haskell/src/Hkl.hs | 2 - contrib/haskell/src/Hkl/C.hs | 57 --------------------------- contrib/haskell/src/Hkl/{DArray.hsc => C.hsc} | 55 ++++++++++++++++++++++++-- 4 files changed, 54 insertions(+), 64 deletions(-) commit aea6051409f8a54b3178f358a1cd274eb8f436d4 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 15:03:59 2016 +0100 [contrib] remove engineListInit contrib/haskell/src/Hkl/DArray.hsc | 47 ++++++++++++++------------------------ 1 file changed, 17 insertions(+), 30 deletions(-) commit d5c17f384b9321db5d689a9c52ab0a5a473b3e82 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 14:53:56 2016 +0100 [contrib] no more EngineList type for now contrib/haskell/src/Hkl/DArray.hsc | 23 +++++++++++------------ contrib/haskell/src/Hkl/Types.hs | 1 - 2 files changed, 11 insertions(+), 13 deletions(-) commit 9052b1ec29ee89c0a25ece0baadd42218db9cd52 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 14:38:06 2016 +0100 [contrib] no need of an Engine type for now contrib/haskell/src/Hkl/C.hs | 8 -------- contrib/haskell/src/Hkl/DArray.hsc | 25 +++++++++++++++---------- contrib/haskell/src/Hkl/Types.hs | 1 - 3 files changed, 15 insertions(+), 19 deletions(-) commit cf4ddf2f3b7eb7056e64b976e0e9a2daad72e563 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 14:04:49 2016 +0100 [contrib] no more ForeignPtr in the Detector type contrib/haskell/src/Hkl/C.hs | 15 --------------- contrib/haskell/src/Hkl/DArray.hsc | 29 +++++++++++++++++++++++++---- contrib/haskell/src/Hkl/Types.hs | 4 +++- contrib/haskell/src/ghkl.hs | 5 +---- 4 files changed, 29 insertions(+), 24 deletions(-) commit 09b112365a9032d41a4f7ee0877a5ae489d3b397 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 13:36:53 2016 +0100 [contrib] no more ForeignPtr embeded into the Geometry type contrib/haskell/src/Hkl/DArray.hsc | 35 ++++++++++++++++++----------------- contrib/haskell/src/Hkl/Types.hs | 7 ++----- contrib/haskell/src/ghkl.hs | 4 +--- 3 files changed, 21 insertions(+), 25 deletions(-) commit 2d45be210402e3aad9ed3f2d6098700a4553cdb5 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 12:09:38 2016 +0100 [contrib] add a compute method contrib/haskell/src/Hkl/C.hs | 31 ------------------------------- contrib/haskell/src/Hkl/DArray.hsc | 38 +++++++++++++++++++++++++++++++++++++- contrib/haskell/src/ghkl.hs | 8 ++------ 3 files changed, 39 insertions(+), 38 deletions(-) commit 35d2390e330f238c1ac0adfa06de4e7ae20d684f Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 11:51:34 2016 +0100 [contrib] put the axis positions also into the Geometry contrib/haskell/src/Hkl/C.hs | 31 +----------------- contrib/haskell/src/Hkl/DArray.hsc | 65 ++++++++++++++++++++++++++------------ contrib/haskell/src/Hkl/Types.hs | 5 ++- contrib/haskell/src/ghkl.hs | 7 ++-- 4 files changed, 53 insertions(+), 55 deletions(-) commit bca77245d5db5b904683b3e120eef7da221cf868 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 11:26:08 2016 +0100 [contrib] put a source into the Geometry contrib/haskell/src/Hkl/C.hs | 21 ++++++++++++++++----- contrib/haskell/src/Hkl/DArray.hsc | 24 +++++------------------- contrib/haskell/src/Hkl/Types.hs | 6 +++++- contrib/haskell/src/ghkl.hs | 3 +-- 4 files changed, 27 insertions(+), 27 deletions(-) commit 7b5ab3ac5ea8532a7f373697053e332312f9b2ce Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 11:03:36 2016 +0100 [contrib] remove for now the accessor of the Parameter contrib/haskell/src/Hkl/DArray.hsc | 2 +- contrib/haskell/src/Hkl/Types.hs | 10 +++++----- contrib/haskell/src/ghkl.hs | 7 ++++--- 3 files changed, 10 insertions(+), 9 deletions(-) commit 90d93ea2cee9b18846c59b326cf93d163ccea2d8 Author: Picca Frédéric-Emmanuel Date: Sun Feb 7 10:36:34 2016 +0100 [contrib] All C Hkl types are named Hkl... for consistancy contrib/haskell/src/Hkl/C.hs | 33 +++++++++++++++++---------------- contrib/haskell/src/Hkl/DArray.hsc | 25 +++++++++++++------------ contrib/haskell/src/Hkl/Types.hs | 6 ++++-- 3 files changed, 34 insertions(+), 30 deletions(-) commit 4a551464242137b066bd1f6d3c8e2bc840645016 Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 10:36:20 2016 +0100 [contrib] better doc dot eh C binding contrib/haskell/src/Hkl/DArray.hsc | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) commit 07ce5d788f7858038fb14052e73fbbb1a54edecd Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 10:29:20 2016 +0100 [contrib] it is now possible to get and set the wavelength contrib/haskell/src/Hkl/DArray.hsc | 32 ++++++++++++++++++++++++++------ contrib/haskell/src/ghkl.hs | 31 +++++++++++++++---------------- 2 files changed, 41 insertions(+), 22 deletions(-) commit 4c42aee1efb08f24ec2aa3c30ba7e8b2da463bf8 Author: Picca Frédéric-Emmanuel Date: Sat Feb 6 09:30:33 2016 +0100 [contrib] first pseudo axes computation with the haskell binding contrib/haskell/src/Hkl/DArray.hsc | 12 ++++++++++++ contrib/haskell/src/ghkl.hs | 10 +++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) commit 4af21b252954ec405b8637a465a1045b3bf5ca1d Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 16:32:43 2016 +0100 [doc] explain how to test the python binding directly from the sources Documentation/hkl.org.in | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 9a422669005f8d008f68ca9945a562a8f2aac468 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 15:19:09 2016 +0100 [doc] use an external css for now. a local css solution should be a lot better. the look and feel of this org-mode theme is nice, but it use external links. Documentation/hkl.org.in | 8 ++++++++ 1 file changed, 8 insertions(+) commit 85a1f4b2e4784233c4d0480eb8f4b5911b8a3337 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 15:16:52 2016 +0100 [doc] explain better how to contribut via git send-email Documentation/hkl.org.in | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) commit 4ffc095ea83a62c5a88f22f33a0d64c7d724fb14 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 11:18:11 2016 +0100 upgrading copyright year from 2015 to 2016 Documentation/hkl-default.el | 2 +- contrib/haskell/src/Hkl/Diffractometer.hs | 2 +- contrib/haskell/src/Hkl/Lattice.hs | 2 +- contrib/haskell/src/Hkl/Source.hs | 2 +- contrib/haskell/src/Hkl/Transformation.hs | 2 +- contrib/haskell/src/hkl.hs | 2 +- contrib/sixs/hkl3d.c | 2 +- gui/hkl-gui-3d.c | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 2 +- hkl.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 2 +- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 2 +- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 2 +- hkl/hkl-pseudoaxis-common-readonly.c | 2 +- hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 95 files changed, 95 insertions(+), 95 deletions(-) commit 4db315eaf36a6e182773767b86ee1e68605a8c85 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 11:17:49 2016 +0100 [scripts] update the copyright script scripts/update_copyright_year | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1696780e3deca5541c2fa3e441870690164f627d Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 11:10:59 2016 +0100 [doc] rename default.el -> hkl-default.el Add the copyright and inhibit the startup screen. Remove elint warnings Documentation/Makefile.am | 8 +++--- Documentation/default.el | 25 ------------------- Documentation/hkl-default.el | 58 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 29 deletions(-) commit d0ecf7598f1aa6c49f98fa42d95964ad45811aba Merge: d508aab9 0f55f422 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 10:34:55 2016 +0100 Merge branch 'maint' into next commit d508aab92c0338bc573d357848da564e257a6671 Author: Picca Frédéric-Emmanuel Date: Thu Feb 4 10:33:17 2016 +0100 [contrib] make it compiles with ghc >= 7.6 contrib/haskell/src/Hkl/C.hs | 1 + 1 file changed, 1 insertion(+) commit 124edbd6bff8d8f2fb35cbeb67fce8499bd8481e Author: Picca Frédéric-Emmanuel Date: Wed Feb 3 15:51:56 2016 +0100 [contrib] add missing file contrib/haskell/src/Hkl.hs | 9 +++++++++ 1 file changed, 9 insertions(+) commit 069398d5faf8c16a8e4672755044629f96ad8a54 Author: Picca Frédéric-Emmanuel Date: Wed Feb 3 13:26:30 2016 +0100 [contrib] relax the base dependency in order to compile on jessie contrib/haskell/hkl.cabal | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit a86175827cd7c49361bfb4e9ac9e3f57dea80628 Author: Picca Frédéric-Emmanuel Date: Mon Feb 1 20:56:45 2016 +0100 [contrib] add the geometryAxisValuesGet method contrib/haskell/src/Hkl/DArray.hsc | 19 +++++++++++++++++++ contrib/haskell/src/ghkl.hs | 2 ++ 2 files changed, 21 insertions(+) commit e25a90f475ae378905b3ee880e0755199b3e9ed5 Author: Picca Frédéric-Emmanuel Date: Mon Feb 1 19:12:23 2016 +0100 [contrib] add the geometryAxesGet method contrib/haskell/src/Hkl/C.hs | 1 - contrib/haskell/src/Hkl/DArray.hsc | 93 ++++++++++++++++++++++++-------------- contrib/haskell/src/Hkl/Types.hs | 4 ++ contrib/haskell/src/ghkl.hs | 4 +- 4 files changed, 65 insertions(+), 37 deletions(-) commit 96196ea95657d4b80fce55e8ea8ad92aebcbdbbb Author: Picca Frédéric-Emmanuel Date: Mon Feb 1 17:43:58 2016 +0100 [contrib] parameter contain name, value, range contrib/haskell/src/Hkl/DArray.hsc | 44 +++++++++++++++++++++++++------------- contrib/haskell/src/Hkl/Types.hs | 7 +++++- contrib/haskell/src/ghkl.hs | 4 +++- 3 files changed, 38 insertions(+), 17 deletions(-) commit 3484ef0dc9cd2bfb1c66c78e4ef1dbcf53a2e7c4 Author: Picca Frédéric-Emmanuel Date: Mon Feb 1 12:57:52 2016 +0100 [contrib] expose only the engineListPseudoAxesGet method contrib/haskell/src/Hkl/DArray.hsc | 9 ++++++++- contrib/haskell/src/ghkl.hs | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-) commit 458d09eab82ab11b404985cd85decf71f827e341 Author: Picca Frédéric-Emmanuel Date: Mon Feb 1 11:46:54 2016 +0100 [contrib] add the enginePseudoAxesGet method contrib/haskell/src/Hkl/C.hs | 23 ++++++++++++----------- contrib/haskell/src/Hkl/DArray.hsc | 37 +++++++++++++++++++++++++++++++++++-- contrib/haskell/src/Hkl/Types.hs | 14 +++++++++++--- contrib/haskell/src/ghkl.hs | 7 +++---- 4 files changed, 61 insertions(+), 20 deletions(-) commit e21df17b167fdf96739bc93cf2ac5695dbc5674c Author: Picca Frédéric-Emmanuel Date: Sat Jan 30 23:44:42 2016 +0100 [contrib] add the engineListget method contrib/haskell/hkl.cabal | 10 ++++---- contrib/haskell/src/Hkl/C.hs | 49 +++++++++++++++----------------------- contrib/haskell/src/Hkl/DArray.hsc | 22 +++++++++++++++++ contrib/haskell/src/Hkl/Types.hs | 27 +++++++++++++++++++++ contrib/haskell/src/ghkl.hs | 9 ++++++- 5 files changed, 81 insertions(+), 36 deletions(-) commit b75f3d4346340fd50b41d66e72756a73a0a0b972 Author: Picca Frédéric-Emmanuel Date: Sat Jan 30 11:01:36 2016 +0100 [contrib] deal with HklSample null pointer contrib/haskell/src/Hkl/C.hs | 15 +++++++++++---- contrib/haskell/src/ghkl.hs | 27 ++++++++++++++++++--------- 2 files changed, 29 insertions(+), 13 deletions(-) commit 955edb7df66ffdcf1ea8368a946964f365711644 Author: Picca Frédéric-Emmanuel Date: Wed Jan 27 21:50:56 2016 +0100 [contrib] better haskell binding contrib/haskell/src/Hkl/C.hs | 130 +++++++++++++++++++++++++++++++++++++------ contrib/haskell/src/ghkl.hs | 84 ++++++++++++++++------------ 2 files changed, 160 insertions(+), 54 deletions(-) commit 90af1ccd258bbd7406b41f4877b0093a6162ce0e Author: Picca Frédéric-Emmanuel Date: Sun Jan 24 12:22:50 2016 +0100 [contrib] now the gui is contructed using ghkl.ui contrib/haskell/hkl.cabal | 42 ++++++++++++++++++++++++------------------ contrib/haskell/src/ghkl.hs | 12 +++++++++++- 2 files changed, 35 insertions(+), 19 deletions(-) commit b2e2b1aa7b1d6071f31221e3f22afab8f6be2b00 Author: Picca Frédéric-Emmanuel Date: Sun Jan 24 11:41:47 2016 +0100 [contrib] first working haskell binding for the HklFactory class contrib/haskell/hkl.cabal | 23 ++--- contrib/haskell/src/Hkl/C.hs | 37 ++++++++ contrib/haskell/src/ghkl.hs | 195 +++++++++++++++++-------------------------- 3 files changed, 121 insertions(+), 134 deletions(-) commit 0f55f4221c4b9fc5bcf774e2de25464382ac4770 Author: Picca Frédéric-Emmanuel Date: Fri Jan 22 15:27:57 2016 +0100 [hkl] add emergence_fixed to the SOLEIL SIXS MED 2+3 diffractometer hkl/hkl-engine-soleil-sixs-med.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 1615c8e3078f1925a88986b69079816b7b384613 Author: Picca Frédéric-Emmanuel Date: Wed Jan 20 17:03:31 2016 +0100 [changelog] add the emergence_fixed mode Documentation/hkl.org.in | 2 ++ 1 file changed, 2 insertions(+) commit 4851097b74fc8be7ff6c38ab0a67d456ad0a9711 Author: Picca Frédéric-Emmanuel Date: Wed Jan 20 17:00:20 2016 +0100 [hkl] add the emergence_fixed mode to the med2+2 diffractometer hkl/hkl-engine-soleil-sixs-med.c | 18 +++- hkl/hkl-pseudoaxis-common-hkl-private.h | 40 +++++++- hkl/hkl-pseudoaxis-common-hkl.c | 156 +++++++++++++++++++++++++++++++- 3 files changed, 208 insertions(+), 6 deletions(-) commit febfd71dc2a1425590a5ebe2440756358ec63791 Author: Picca Frédéric-Emmanuel Date: Sun Jan 10 17:40:42 2016 +0100 [haskell] reorganise and add a working cabal file contrib/haskell/hkl.cabal | 20 +++++- contrib/haskell/{ => src}/Hkl/Diffractometer.hs | 0 contrib/haskell/{ => src}/Hkl/Lattice.hs | 0 contrib/haskell/{ => src}/Hkl/Source.hs | 0 contrib/haskell/{ => src}/Hkl/Transformation.hs | 0 contrib/haskell/{Hkl => src}/Tango/DeviceProxy.hsc | 2 +- contrib/haskell/{ => src}/ghkl.hs | 0 contrib/haskell/{ => src}/hkl.hs | 0 hkl/ccan/configurator.c | 72 +++++++++++++++++----- hkl/ccan/list/list.h | 4 +- hkl/ccan/noerr/noerr.c | 8 +++ hkl/ccan/noerr/noerr.h | 8 +++ 12 files changed, 94 insertions(+), 20 deletions(-) commit 66ec8f6fefcbb3d9cdfed90e6a5db26164a8b082 Author: Picca Frédéric-Emmanuel Date: Sun Jan 10 17:15:50 2016 +0100 add the ghkl.hs file contrib/haskell/ghkl.hs | 153 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) commit 599e0459638271861fe14012508af9b116d3baae Author: Picca Frédéric-Emmanuel Date: Sun Jan 10 14:28:16 2016 +0100 add htango contrib/haskell/Hkl/Tango/DeviceProxy.hsc | 47 +++ contrib/haskell/LICENSE | 674 ++++++++++++++++++++++++++++++ contrib/haskell/Setup.hs | 2 + contrib/haskell/hkl.cabal | 73 ++++ 4 files changed, 796 insertions(+) commit 1f372068998e8e3a6707b53ec54bbc57c5efa6de Author: System User Date: Tue Dec 8 12:24:07 2015 +0100 add the emergence read-only with the right default values for the surface. hkl/hkl-engine-e4c.c | 6 ++++-- hkl/hkl-engine-e6c.c | 6 ++++-- hkl/hkl-engine-k4c.c | 6 ++++-- hkl/hkl-engine-k6c.c | 6 ++++-- hkl/hkl-engine-soleil-sirius-turret.c | 6 ++++-- hkl/hkl-engine-soleil-sixs-med.c | 22 ++++++++++++++++++++-- hkl/hkl-engine-template.c | 6 ++++-- hkl/hkl-engine-zaxis.c | 6 ++++-- hkl/hkl-pseudoaxis-common-readonly-private.h | 22 +++++++++++++--------- 9 files changed, 61 insertions(+), 25 deletions(-) commit 10835375405580de3d2d7b29ea42b041f8e0107f Author: Picca Frédéric-Emmanuel Date: Thu Dec 3 15:36:22 2015 +0100 [buildsys] update the version number 5.0.0.patch level configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a04b379ce093fa6eb44b939e4b35b3200f234931 Author: Picca Frédéric-Emmanuel Date: Thu Dec 3 15:34:10 2015 +0100 [contrib] read the axes of the diffractometers from the hdf5 file contrib/sixs/hkl3d.c | 106 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 92 insertions(+), 14 deletions(-) commit 3afda3da716d0bae553aca6eb443ae22305bde1c Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 11:39:00 2015 +0100 release 5.0.0 configure.ac | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 75dd633d2ebd6f7a0976d877a5e4dff2c206a495 Author: Picca Frédéric-Emmanuel Date: Wed Dec 2 11:32:42 2015 +0100 [pom] 5.0.0-SNAPSHOT -> 5.0.0 hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 733ebc1870580ec3f11f161e4125618eb87c7bb9 Author: Picca Frédéric-Emmanuel Date: Tue Dec 1 16:21:52 2015 +0100 [sixs] hkl3d in C the idea is to use directly the Hkl objects in order to compute the hkl coordinates of each pixel of 2D detectors. Once implemented in C, I will have my reference implementation, and I will be able to benchmark other implementations. (binocular, pymca, ...) Makefile.am | 3 + configure.ac | 13 +++ contrib/Makefile.am | 1 + contrib/sixs/Makefile.am | 27 +++++ contrib/sixs/hkl3d.c | 266 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 310 insertions(+) commit b91e8bdfacf636ddf3a30492a530dafe10b74653 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 13:19:57 2015 +0100 [buildsys] remove the lcov support configure.ac | 72 ------------------------------------------------------------ 1 file changed, 72 deletions(-) commit 616ce607628b094864570eebb9a955bf0aba2100 Author: Picca Frédéric-Emmanuel Date: Thu Nov 19 13:17:57 2015 +0100 [contrib] move the haskell code into a subdirectory contrib/{ => haskell}/Hkl/Diffractometer.hs | 0 contrib/{ => haskell}/Hkl/Lattice.hs | 0 contrib/{ => haskell}/Hkl/Source.hs | 0 contrib/{ => haskell}/Hkl/Transformation.hs | 0 contrib/{ => haskell}/hkl.hs | 0 5 files changed, 0 insertions(+), 0 deletions(-) commit 2494fd582d3f953473e86ce6fd4ca85940339a9d Author: Picca Frédéric-Emmanuel Date: Tue Nov 17 12:22:18 2015 +0100 [pom] shared library hkl/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit b1276312cfcbeba26caf6a02d795a899623ade07 Author: Picca Frédéric-Emmanuel Date: Tue Nov 17 11:30:51 2015 +0100 [pom] activate logging and remove binding specific file. hkl/pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) commit b5d7930ee6c6b370df60436deec03b57692067b5 Author: Picca Frédéric-Emmanuel Date: Sun Nov 15 09:28:29 2015 +0100 fix the pkg-config file which require glib-2.0 hkl.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d2621ea1ebe5d15a5ee4841949c4e38da8299401 Author: Picca Frédéric-Emmanuel Date: Wed Nov 4 11:30:01 2015 +0100 pom pom pom pom hkl/pom.xml | 7 +++++ ica/rhel4/hkl/ccan/ccan_config.h | 67 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) commit cf2d96018b8501e3c5f07244015addb2e52b79ec Merge: c0e78687 9ddaabb8 Author: System User Date: Wed Oct 7 15:33:02 2015 +0200 Merge branch 'maint' into next Conflicts: hkl/hkl-pseudoaxis-soleil-sixs-med.c hkl/pom.xml commit 9ddaabb8df833cb834b966c65364eba8cda94076 Author: Picca Frédéric-Emmanuel Date: Tue Oct 6 14:59:01 2015 +0200 add two modes for the soleil sixs med diffractometers. hkl/hkl-pseudoaxis-soleil-sixs-med.c | 23 +++++++++++++++++++++++ hkl/pom.xml | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) commit c0e786876229811d66bffa1297141161ceb16b8b Author: Picca Frédéric-Emmanuel Date: Tue Oct 6 14:38:43 2015 +0200 [wip] haskell code with a Tree contrib/Hkl/Diffractometer.hs | 107 +++++++++++++++++++++++++++++ contrib/Hkl/Lattice.hs | 61 +++++++++++++++++ contrib/Hkl/Source.hs | 24 +++++++ contrib/Hkl/Transformation.hs | 58 ++++++++++++++++ contrib/hkl.hs | 153 +++--------------------------------------- 5 files changed, 259 insertions(+), 144 deletions(-) commit e846b2a6e553396e2830434f988e54b55162ef2b Author: Picca Frédéric-Emmanuel Date: Thu Aug 27 21:45:40 2015 +0200 [todo] reflectivity for the q/q2 engine Documentation/hkl.org.in | 3 +++ 1 file changed, 3 insertions(+) commit c9ecb718a50d3b0b98a54c7b969ae1c701c619a5 Author: picca Date: Wed Jul 15 22:01:21 2015 +0200 [buildsys] add the ccan_config.h public header and use it. Documentation/hkl.org.in | 3 + Makefile.am | 16 +- configure.ac | 17 -- hkl/ccan/Makefile.am | 34 ++- hkl/ccan/array_size/array_size.h | 2 +- hkl/ccan/autodata/autodata.h | 2 +- hkl/ccan/check_type/check_type.h | 2 +- hkl/ccan/compiler/compiler.h | 2 +- hkl/ccan/configurator.c | 570 +++++++++++++++++++++++++++++++++++ hkl/ccan/container_of/container_of.h | 38 ++- hkl/ccan/darray/darray.h | 11 +- hkl/ccan/list/list.h | 225 ++++++++++++-- hkl/ccan/ptr_valid/ptr_valid.h | 2 +- hkl/ccan/str/debug.c | 2 +- hkl/ccan/str/str.h | 2 +- 15 files changed, 860 insertions(+), 68 deletions(-) commit 4d42d11689419ad948b68cb9d90735c94acb0175 Author: Picca Frédéric-Emmanuel Date: Fri Jul 10 15:03:42 2015 +0200 [buildsys] use autoscan to add missing checks configure.ac | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 47d2e15cbb535d7d820e965dae912a8ec32f6254 Author: Picca Frédéric-Emmanuel Date: Thu Jul 9 16:05:58 2015 +0200 [hkl] remove a bunch of warnings. this help found a few mistakes in the test suite. configure.ac | 4 + gui/hkl-gui-3d-gl.c | 4 - gui/hkl-gui-3d.c | 14 +--- gui/hkl-gui-pseudoaxes.c | 3 - gui/hkl-gui.c | 88 +++++++++----------- hkl/hkl-engine-soleil-sixs-med.c | 2 - hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 5 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 + hkl/hkl-parameter-private.h | 13 +-- hkl/hkl-parameter.c | 2 + hkl/hkl-pseudoaxis-auto-private.h | 18 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 5 +- hkl/hkl-pseudoaxis-private.h | 6 +- hkl/hkl-pseudoaxis.c | 7 +- hkl/hkl-sample-private.h | 4 +- hkl/hkl-sample.c | 10 ++- hkl3d/hkl3d.cpp | 69 ++++++---------- hkl3d/hkl3d.h | 6 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 25 +++--- tests/hkl-detector-t.c | 14 ++-- tests/hkl-geometry-t.c | 138 ++++++++++++++++++------------- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 9 +- tests/hkl-matrix-t.c | 3 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 66 +++++++-------- tests/hkl-pseudoaxis-e4cv-t.c | 54 ++++++------ tests/hkl-pseudoaxis-e6c-t.c | 90 ++++++++++---------- tests/hkl-pseudoaxis-k4cv-t.c | 16 ++-- tests/hkl-pseudoaxis-k6c-t.c | 33 ++++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 23 +++--- tests/hkl-pseudoaxis-t.c | 21 ++--- tests/hkl-pseudoaxis-zaxis-t.c | 6 +- tests/hkl-quaternion-t.c | 3 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 5 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 41 +++++---- 42 files changed, 401 insertions(+), 424 deletions(-) commit 0d8c857dce96f065f064e08adc4b5a3f6d4eef4a Author: Picca Frédéric-Emmanuel Date: Wed Jul 8 10:23:38 2015 +0200 [hkl3d] chdir -> fchdir hkl3d/hkl3d.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) commit a8b3983979daf871585ecadce7919dbaeeea52cf Author: Picca Frédéric-Emmanuel Date: Tue Jul 7 16:54:11 2015 +0200 [buildsys] update to c-tap-hardness 3.3 this way a verbose mode can be use during the build process. tests/Makefile.am | 2 +- tests/runtests.c | 460 +++++++++++++++++++++++++++++------------ tests/tap/basic.c | 590 +++++++++++++++++++++++++++++++++++++++-------------- tests/tap/basic.h | 81 ++++++-- tests/tap/float.c | 17 +- tests/tap/float.h | 4 +- tests/tap/macros.h | 15 +- 7 files changed, 849 insertions(+), 320 deletions(-) commit 2a343da4d52486f050d3eb40de05d9aa92ebffd2 Author: Picca Frédéric-Emmanuel Date: Tue Jul 7 13:33:57 2015 +0200 [hkl] fix an unit test error triggered on the sparc architecture. Documentation/hkl.org.in | 3 +++ tests/hkl-pseudoaxis-t.c | 2 ++ 2 files changed, 5 insertions(+) commit 827528b7eab8eea02db241c88c883b60149b1872 Author: Picca Frédéric-Emmanuel Date: Fri Jul 3 15:43:48 2015 +0200 [hkl] no more PATH_MAX Documentation/hkl.org.in | 3 +++ hkl3d/hkl3d.cpp | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) commit 1363d413b31233f1c76c8e01269c83a668702595 Author: Picca Frédéric-Emmanuel Date: Fri Jul 3 14:05:19 2015 +0200 [hkl] fix an unit test issue discovered on small endian arch Documentation/hkl.org.in | 4 ++++ hkl/hkl-interval.c | 3 ++- tests/hkl-interval-t.c | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 13 deletions(-) commit 36f1889f95f664c8cfdd3a928f5d2fb1666a3a37 Author: Picca Frédéric-Emmanuel Date: Tue Jun 30 14:47:53 2015 +0200 release Documentation/hkl.org.in | 1 + 1 file changed, 1 insertion(+) commit 026c105555c6ef9de9bb2ae816c8aa28d3c39012 Author: Picca Frédéric-Emmanuel Date: Fri Jun 26 16:10:43 2015 +0200 indentation gui/hkl-gui-3d-gl.h | 26 +++++++++++++------------- gui/hkl-gui-pseudoaxes.h | 2 -- gui/hkl-gui.h | 4 ---- hkl/hkl-engine-k4c.c | 1 - hkl/hkl-engine-template.c | 1 - hkl/hkl-geometry-private.h | 1 + hkl/hkl-interval.c | 2 +- hkl/hkl-lattice.c | 4 ++-- hkl/hkl-pseudoaxis-auto.c | 22 +++++++++++----------- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-readonly-private.h | 4 ++-- hkl/hkl-pseudoaxis-common-tth.c | 12 ++++++------ hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 12 ++++++------ hkl/hkl-sample.c | 4 ++-- hkl/hkl-types.c | 2 +- 17 files changed, 48 insertions(+), 55 deletions(-) commit af0508e561facb7d149665ef4357fcd03af923c2 Author: Picca Frédéric-Emmanuel Date: Tue Jun 23 15:54:57 2015 +0200 [doc] explaination of the pseudo axes calculation. this is a preliminary description. Documentation/hkl.org.in | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 6d6ca23af57014a7ed6ede8606baef6542aa8e72 Author: Picca Frédéric-Emmanuel Date: Tue Jun 23 09:05:26 2015 +0200 [doc] corrections Documentation/hkl.org.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit defa03acf7758f4943022218bf01817df080a2c1 Author: Picca Frédéric-Emmanuel Date: Mon Jun 22 14:46:58 2015 +0200 [hkl] Add the emergence engine Documentation/hkl.org.in | 7 +- hkl/hkl-engine-e4c.c | 15 +-- hkl/hkl-engine-e6c.c | 13 ++- hkl/hkl-engine-k4c.c | 13 ++- hkl/hkl-engine-k6c.c | 14 ++- hkl/hkl-engine-soleil-sirius-turret.c | 13 ++- hkl/hkl-engine-soleil-sixs-med.c | 10 +- hkl/hkl-engine-template.c | 13 ++- hkl/hkl-engine-zaxis.c | 13 ++- hkl/hkl-pseudoaxis-common-readonly-private.h | 36 +++++-- hkl/hkl-pseudoaxis-common-readonly.c | 144 +++++++++++++++++++++++++-- tests/bindings/python.py | 2 +- tests/hkl-pseudoaxis-t.c | 5 +- 13 files changed, 232 insertions(+), 66 deletions(-) commit 05d02559b02e35626fd4932302951b587743ce62 Author: Picca Frédéric-Emmanuel Date: Mon May 4 11:31:47 2015 +0200 [ghkl] fix for real the 3d model access gui/hkl-gui-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 31abe8d63738dfc2c4e69b2635932cf8dbccb75a Author: Picca Frédéric-Emmanuel Date: Mon May 4 11:20:41 2015 +0200 [hkl] post release actions Documentation/hkl.org.in | 1 + 1 file changed, 1 insertion(+) commit 926aabb78c5d91447aa6e7c426f8d6888d866103 Author: Picca Frédéric-Emmanuel Date: Mon May 4 10:38:02 2015 +0200 [doc] spell Documentation/hkl.org.in | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) commit c177b5fcc3c8b7b810bb80db507bd338fc8c23e7 Author: Picca Frédéric-Emmanuel Date: Mon May 4 09:56:58 2015 +0200 [hkl] fix a bug in the hkl_engine_parameter_set method also expose this method in the binding for petraIII Documentation/hkl.org.in | 2 ++ hkl/hkl-pseudoaxis.c | 5 +++-- tests/hkl-pseudoaxis-t.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) commit b8eeb6221e68706e7fa26b54b6e92d37bfd74ddc Author: Picca Frédéric-Emmanuel Date: Fri Apr 24 14:37:43 2015 +0200 [hkl] engine q refactoring this is just to use the n_x, n_y, n_z parameters in the mode methods. This way the compiler catche the parameter error everywhere. The only brittle part is contained in the mode constructor. hkl/hkl-pseudoaxis-common-q-private.h | 4 ---- hkl/hkl-pseudoaxis-common-q.c | 32 ++++++++++++++++++++++------ hkl/hkl-pseudoaxis-common-readonly-private.h | 10 +++++++++ hkl/hkl-pseudoaxis-common-readonly.c | 9 -------- 4 files changed, 36 insertions(+), 19 deletions(-) commit 2156fd6ea7e1c68b7e9d16eae70a55aec9aa209a Author: picca Date: Thu Apr 23 15:41:05 2015 +0200 [hkl] eulerians engine reworked created an HklModeEulerians to expose in the structure the solutions parameter. Use directly this parameter in the code instead of relying on the parameter order available in the parameters vector. this way we will catch mode errors during the build. hkl/hkl-pseudoaxis-common-eulerians-private.h | 11 ----- hkl/hkl-pseudoaxis-common-eulerians.c | 70 ++++++++++++++++----------- 2 files changed, 42 insertions(+), 39 deletions(-) commit 9f6c34321f1be4fd1780dc57006738b79f9eb830 Author: picca Date: Thu Apr 23 10:01:43 2015 +0200 [hkl] use #define AXIS "axis" Documentation/hkl.org.in | 5 +- hkl/hkl-engine-2c.c | 14 +-- hkl/hkl-engine-e4c.c | 74 +++++++-------- hkl/hkl-engine-e6c.c | 82 ++++++++--------- hkl/hkl-engine-k4c.c | 32 +++---- hkl/hkl-engine-k6c.c | 169 ++++++++++++++++++---------------- hkl/hkl-engine-petra3-p09-eh2.c | 65 +++++++------ hkl/hkl-engine-soleil-sirius-turret.c | 34 ++++--- hkl/hkl-engine-soleil-sixs-med.c | 97 +++++++++---------- hkl/hkl-engine-template.c | 12 +-- hkl/hkl-engine-zaxis.c | 30 +++--- 11 files changed, 321 insertions(+), 293 deletions(-) commit 873b91bd76162c06e5394f8612656acf7b8dd292 Author: picca Date: Wed Apr 22 15:32:19 2015 +0200 [hkl] comments hkl/hkl-engine-e4c.c | 8 ++++---- hkl/hkl-engine-e6c.c | 20 ++++++-------------- hkl/hkl-engine-k6c.c | 10 +++++++--- 3 files changed, 17 insertions(+), 21 deletions(-) commit a0d493ba697cc6d075a482a40109db5844355f23 Author: picca Date: Wed Apr 22 15:19:02 2015 +0200 [hkl] add the incidence pseudo axis engine Documentation/Makefile.am | 2 +- Documentation/hkl.org.in | 9 +- hkl/Makefile.am | 2 + hkl/hkl-engine-e4c.c | 21 ++- hkl/hkl-engine-e6c.c | 17 +++ hkl/hkl-engine-k4c.c | 15 ++ hkl/hkl-engine-k6c.c | 197 ++++++++++++++------------- hkl/hkl-engine-soleil-sirius-turret.c | 16 ++- hkl/hkl-engine-soleil-sixs-med.c | 21 +++ hkl/hkl-engine-template.c | 10 ++ hkl/hkl-engine-zaxis.c | 13 ++ hkl/hkl-pseudoaxis-common-hkl-private.h | 22 +-- hkl/hkl-pseudoaxis-common-q.c | 17 +-- hkl/hkl-pseudoaxis-common-readonly-private.h | 78 +++++++++++ hkl/hkl-pseudoaxis-common-readonly.c | 183 +++++++++++++++++++++++++ hkl/hkl-pseudoaxis-private.h | 14 +- tests/bindings/python.py | 3 +- tests/hkl-pseudoaxis-t.c | 7 +- 18 files changed, 506 insertions(+), 141 deletions(-) commit be0c3a16220d6479603422d75f35dce8510273c7 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 19:36:38 2015 +0200 [todo] optimisation idea for the hkl_engine_prepare_internal method Documentation/hkl.org.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 6bbcfc91989957c8cc585a99fdd640e0067dcfd7 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 19:32:46 2015 +0200 [buildsystem] rename editdoc and showdoc -> doc-edit and doc-show Use also the sensible-browser instead of hardcoding iceweasel. Documentation/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit e3b29200acae81876a9beff38ddd027a95b03483 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 19:22:33 2015 +0200 [doc] document the new tth2 engine Documentation/hkl.org.in | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) commit 735565dc1d60b5c98620a279fc044d416d8cdd88 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 18:54:15 2015 +0200 [contrib] generic computeHkl method contrib/hkl.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 39fa20e107043f13e56960707eccbe51fe5a8dfa Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 15:06:07 2015 +0200 [hkl] finale step, pseudo axes are shared between engines. hkl/hkl-pseudoaxis-private.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 81f0582b6f95e2977b1ebc8f6ca693eae4788f8d Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 12:00:41 2015 +0200 [tests] another memory leak tests/hkl-pseudoaxis-t.c | 1 + 1 file changed, 1 insertion(+) commit 030a32b32a821a82d74aa0c94fcd3f8d6912f065 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 11:52:47 2015 +0200 [hkl] transfer the ownership of the pseudo axes into the HklEngineList hkl/hkl-pseudoaxis-private.h | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) commit c0946ae7eb734f0ec8386bbfc42aa821ec9d2726 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 11:42:19 2015 +0200 [tests] memory leak tests/hkl-bench-t.c | 1 + 1 file changed, 1 insertion(+) commit fe9d31105d0e0871b78fb7c672e729775b8e2473 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 10:47:59 2015 +0200 [hkl] no more hkl_engine_list_add method the logic was moved into the hkl_engine_init method. The modification was done with a .cocci file. hkl/hkl-engine-e4c.c | 18 +++++++++--------- hkl/hkl-engine-e6c.c | 10 +++++----- hkl/hkl-engine-k4c.c | 8 ++++---- hkl/hkl-engine-k6c.c | 24 ++++++++++++------------ hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 8 ++++---- hkl/hkl-engine-soleil-sixs-med.c | 24 ++++++++++++------------ hkl/hkl-engine-template.c | 10 +++++----- hkl/hkl-engine-zaxis.c | 8 ++++---- hkl/hkl-pseudoaxis-private.h | 24 ++---------------------- scripts/enginelist.cocci | 6 ++++++ 11 files changed, 64 insertions(+), 78 deletions(-) commit f1faf7aa8f071d76fe1a9022a314ba14aeb58778 Author: Picca Frédéric-Emmanuel Date: Fri Apr 3 10:26:15 2015 +0200 [hkl] set the engines in the hkl_engine_init method. the idea is to remove the hkl_engine_list_add method which is redundant with the HklEngine constructor. the HklEngine is just an internal thing with no existance without an HklEngineList. hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 6 +++--- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-private.h | 10 ++++------ hkl/hkl-pseudoaxis.c | 5 ----- 7 files changed, 11 insertions(+), 18 deletions(-) commit 312125d4a965072d3d01dde79923f9d575bf67df Author: Picca Frédéric-Emmanuel Date: Thu Apr 2 16:42:44 2015 +0200 [hkl] prepare for common storage of pseudo_axes now the engine_list is provided to the HklEngine constructor. This way it will be possible to share pseudo_axies between multiple HklEngine, by storing the peudo axes into the HklEngineList. the modification is not yet done. But this was the first step. hkl/hkl-engine-e4c.c | 26 ++++++++--------- hkl/hkl-engine-e6c.c | 18 ++++++------ hkl/hkl-engine-k4c.c | 16 +++++------ hkl/hkl-engine-k6c.c | 40 +++++++++++++-------------- hkl/hkl-engine-petra3-p09-eh2.c | 6 ++-- hkl/hkl-engine-soleil-sirius-turret.c | 12 ++++---- hkl/hkl-engine-soleil-sixs-med.c | 36 ++++++++++++------------ hkl/hkl-engine-template.c | 18 ++++++------ hkl/hkl-engine-zaxis.c | 12 ++++---- hkl/hkl-pseudoaxis-common-eulerians-private.h | 4 +-- hkl/hkl-pseudoaxis-common-eulerians.c | 8 +++--- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 8 +++--- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +-- hkl/hkl-pseudoaxis-common-q-private.h | 6 ++-- hkl/hkl-pseudoaxis-common-q.c | 16 +++++------ hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 6 ++-- hkl/hkl-pseudoaxis-private.h | 3 ++ 20 files changed, 124 insertions(+), 121 deletions(-) commit 85a010281dedb18132e58a954628d63f4795b468 Author: Picca Frédéric-Emmanuel Date: Thu Apr 2 13:51:33 2015 +0200 upgrading copyright year from 2014 to 2015 gui/hkl-gui-3d.c | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-macros.h | 2 +- gui/hkl-gui.c | 2 +- gui/hkl-gui.h | 2 +- hkl.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-engine-2c.c | 2 +- hkl/hkl-engine-e4c.c | 2 +- hkl/hkl-engine-e6c.c | 2 +- hkl/hkl-engine-k4c.c | 2 +- hkl/hkl-engine-k6c.c | 2 +- hkl/hkl-engine-petra3-p09-eh2.c | 2 +- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 2 +- hkl/hkl-engine-template.c | 2 +- hkl/hkl-engine-zaxis.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-common-tth-private.h | 2 +- hkl/hkl-pseudoaxis-common-tth.c | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 86 files changed, 86 insertions(+), 86 deletions(-) commit cc6bf9537202a2d816039ae519797b5f909056b3 Author: Picca Frédéric-Emmanuel Date: Thu Apr 2 13:49:22 2015 +0200 [hkl] remove the HklPseudoAxis struct HklParameter is enough. hkl/hkl-pseudoaxis-common-eulerians.c | 29 +++++++--------- hkl/hkl-pseudoaxis-common-hkl.c | 35 +++++++++---------- hkl/hkl-pseudoaxis-common-psi.c | 11 +++--- hkl/hkl-pseudoaxis-common-q.c | 50 +++++++++++++-------------- hkl/hkl-pseudoaxis-common-tth.c | 20 +++++------ hkl/hkl-pseudoaxis-private.h | 65 ++--------------------------------- 6 files changed, 68 insertions(+), 142 deletions(-) commit 331d3174a48f1319131bf2c4ac5617d174403152 Author: Picca Frédéric-Emmanuel Date: Thu Apr 2 13:47:53 2015 +0200 add the tth2 engine Documentation/hkl.org.in | 6 +- hkl/Makefile.am | 4 +- hkl/hkl-engine-e6c.c | 4 +- hkl/hkl-engine-k6c.c | 5 +- hkl/hkl-engine-soleil-sirius-turret.c | 4 +- hkl/hkl-engine-soleil-sixs-med.c | 6 +- hkl/hkl-engine-template.c | 4 +- hkl/hkl-engine-zaxis.c | 4 +- hkl/hkl-pseudoaxis-common-tth-private.h | 35 +++++++ hkl/hkl-pseudoaxis-common-tth.c | 175 ++++++++++++++++++++++++++++++++ 10 files changed, 239 insertions(+), 8 deletions(-) commit 333621d583f778d33d6f55deb548f5d968554a27 Author: Picca Frédéric-Emmanuel Date: Tue Mar 24 17:01:04 2015 +0100 [hkl] expose hkl_sample_reflection_flag/geometry_get/set in the bindings Documentation/hkl.org.in | 15 +++++++++++++++ hkl/hkl-sample.c | 28 ++++++++++++++++------------ tests/bindings/python.py | 8 ++++++++ 3 files changed, 39 insertions(+), 12 deletions(-) commit 25a3bdb746bc486c3e88ef2a2f91ddb67e4d2b32 Author: Picca Frédéric-Emmanuel Date: Tue Mar 24 16:29:20 2015 +0100 [hkl] expose hkl_lattice_x_get/set in the bindings Documentation/hkl.org.in | 3 +++ hkl/hkl-lattice.c | 24 ++++++++++++------------ tests/bindings/python.py | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 12 deletions(-) commit b0457c7035737aeca188c31c2ce28931cd1c666b Author: Picca Frédéric-Emmanuel Date: Tue Mar 24 14:39:23 2015 +0100 [hkl] add the hkl_engine_dependencies_get method Documentation/Makefile.am | 4 +++- Documentation/hkl.org.in | 24 ++++++++++++++++--- hkl.h | 10 ++++++++ hkl/hkl-pseudoaxis-common-eulerians.c | 5 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 5 ++-- hkl/hkl-pseudoaxis-common-psi.c | 5 ++-- hkl/hkl-pseudoaxis-common-q.c | 15 +++++++----- hkl/hkl-pseudoaxis-private.h | 4 ++++ hkl/hkl-pseudoaxis.c | 15 ++++++++++++ tests/bindings/python.py | 5 ++++ tests/hkl-pseudoaxis-t.c | 44 +++++++++++++++++++++++++++++++---- 11 files changed, 116 insertions(+), 20 deletions(-) commit b8808b8745f54de2ab524016350a1dc55dbbdbb4 Author: Picca Frédéric-Emmanuel Date: Tue Mar 10 20:34:43 2015 +0100 [contrib] add a commad line now it is possible to compute any hkl coordinates with hkl ca h k l contrib/hkl.hs | 58 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 13 deletions(-) commit 9c2539c8dcb83ce5feada415d70b473982759bd1 Author: Picca Frédéric-Emmanuel Date: Tue Mar 10 17:01:45 2015 +0100 [hkl] add the hkl_lattice_volume_get update also the hkl_lattice_x_set to compute the volume. Documentation/hkl.org.in | 26 ++++++++++++++++-- hkl.h | 2 ++ hkl/hkl-lattice-private.h | 1 + hkl/hkl-lattice.c | 69 +++++++++++++++++++++++++++++++++-------------- tests/bindings/python.py | 3 +++ tests/hkl-lattice-t.c | 27 +++++++++++++++++-- 6 files changed, 104 insertions(+), 24 deletions(-) commit 0d6317eaad135a726cd30005bf64a8182349f06f Author: Picca Frédéric-Emmanuel Date: Mon Mar 9 09:07:32 2015 +0100 [hkl] fix the 3d model access when installed gui/hkl-gui-macros.h | 5 ++++- gui/hkl-gui.c | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) commit 4672c5bae937371ce3d6088a64571ec6d8c38b1b Author: Picca Frédéric-Emmanuel Date: Thu Mar 5 10:03:38 2015 +0100 [hkl] expose the hkl_engine_parameters_values_get/set hkl/hkl-binding-private.h | 3 +++ hkl/hkl-binding.c | 31 +++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis.c | 2 +- tests/bindings/python.py | 13 +++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) commit 0f7a9a6cdba4b2717d61a36c38881eb5fac97652 Author: Picca Frédéric-Emmanuel Date: Tue Mar 3 13:43:16 2015 +0100 [hkl] typo hkl/hkl-pseudoaxis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cb767015602f504d67f8c832b6eab9b6120d27c4 Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 20:38:29 2015 +0100 [contrib] optimisation contrib/hkl.hs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) commit 9c012f1c54fa1926576eef98904b24153bf61652 Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 16:09:33 2015 +0100 [contrib] use (*~~) and (/~~) instead of from/toAngles contrib/hkl.hs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) commit cf55537fc7bdf259ceceb48e317f65a4791c747b Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 16:02:24 2015 +0100 [contrib] start to implement a mode contrib/hkl.hs | 60 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 17 deletions(-) commit 6e799b92f1f547ec95271053cd95b477560e9f2e Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 14:27:08 2015 +0100 [contrib] use splitAt instead of multiple type conversion contrib/hkl.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit fa56fb814a96b300b353e38a81592304f8837a6e Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 12:20:21 2015 +0100 [contrib] factorize the [Double] -> [Angle Double] transformation contrib/hkl.hs | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) commit 07ff156a7cd37c84845448cacf983e7e9a924325 Author: Picca Frédéric-Emmanuel Date: Sun Feb 15 11:21:16 2015 +0100 [contrib] first implementation of the computAngles contrib/hkl.hs | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) commit c3eddeb5a09c3ddf85cff3f96d7c33458b5261e4 Author: Picca Frédéric-Emmanuel Date: Sat Feb 14 22:45:18 2015 +0100 [contrib] a [Transformation] is also a Transformation contrib/hkl.hs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) commit bd5bdea1ac74e74533f915aa56ae4c0e91fbba23 Author: Picca Frédéric-Emmanuel Date: Sat Feb 14 22:21:40 2015 +0100 [contrib] add a computeHkl method and a Diffractometer data type contrib/hkl.hs | 104 +++++++++++++++++++++++++++------------------------------ 1 file changed, 49 insertions(+), 55 deletions(-) commit 8b475de993c7c57624d5250ebad8fe6e353ba981 Author: Picca Frédéric-Emmanuel Date: Sat Feb 14 21:35:21 2015 +0100 [contrib] compute hkl from the angles contrib/hkl.hs | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) commit 46842a74e2348a2d1513157d3c42096b3b62390b Author: Picca Frédéric-Emmanuel Date: Wed Feb 11 09:54:09 2015 +0100 [gui] fix a segfault forgot a NULL termination in g_build_filename gui/hkl-gui-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b1db84c1e4ade71ea77b3f4ff3baf9c01efe612f Author: Picca Frédéric-Emmanuel Date: Sun Feb 1 20:59:01 2015 +0100 [contrib] use directly zipWith instead of a dedicated function contrib/hkl.hs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 28c09e22da66da2b5127857e4a9e66e60b823a20 Author: Picca Frédéric-Emmanuel Date: Sun Feb 1 18:55:10 2015 +0100 [contrib] create an UB Transformation contrib/hkl.hs | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) commit 1dc4292033f4dcc1c9ebbf235b7b2ac80169781d Author: Picca Frédéric-Emmanuel Date: Sun Feb 1 17:02:24 2015 +0100 [contrib] move to amodel where all transfortion are vector-> vector contrib/hkl.hs | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) commit 9caed653799351d27ffb3d782858e431a6a5d353 Author: Picca Frédéric-Emmanuel Date: Sun Feb 1 10:11:17 2015 +0100 [contrib] add units in the haskell code contrib/hkl.hs | 121 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 72 insertions(+), 49 deletions(-) commit e046b25683e11cf0f6838f1d9b6464b1b78ae324 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 16:20:34 2015 +0100 [gui] for now no mime-type gui/ghkl.desktop | 1 - 1 file changed, 1 deletion(-) commit 6da389880f17c0413b29f0912da0fca2849363c7 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 16:05:48 2015 +0100 [tests] fix a bug triggered by stack protection tests/hkl-pseudoaxis-t.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d2d8b3c78cb8356ba59da9f1f5d6a4b841915f69 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 14:32:44 2015 +0100 [buildsystem] force link with g++ when libhkl3d is involved. gui/Makefile.am | 4 ++++ tests/Makefile.am | 3 +++ 2 files changed, 7 insertions(+) commit 75ff100c4a7997f667c57f88914917a419157d34 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 13:55:54 2015 +0100 [hkl3d] do not install the libhkl3d library for now hkl3d/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit af635b1ebdbb04172579035e4974ee499d14bb89 Author: Picca Frédéric-Emmanuel Date: Fri Jan 30 12:15:22 2015 +0100 [tests] fix the tests when no X is available. Documentation/sphinx/source/pyplots/trajectory.py | 2 ++ Documentation/sphinx/source/pyplots/trajectory_full.py | 2 ++ Documentation/sphinx/source/pyplots/trajectory_simple.py | 2 ++ 3 files changed, 6 insertions(+) commit 2b2531c8d01eea14abb3e3912731fc927eba5128 Author: Picca Frédéric-Emmanuel Date: Sun Jan 25 20:16:07 2015 +0100 [contrib] create a transformation type contrib/hkl.hs | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) commit b0e5fc6fa9efa1eb774e0ef8a5b02e9afed8358a Author: Picca Frédéric-Emmanuel Date: Sun Jan 25 17:31:43 2015 +0100 [contrib] create a Lattice type with all the known type contrib/hkl.hs | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) commit 8c7fdf080422b70c58bd7f45fbfc5d1da2664cd1 Author: Picca Frédéric-Emmanuel Date: Sun Jan 25 11:15:40 2015 +0100 [contrib] work a bit on the haskell implementation this long term project will help to produce a better design for the libhkl contrib/hkl.hs | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ contrib/hkl.lhs | 64 ---------------------------------------- 2 files changed, 90 insertions(+), 64 deletions(-) commit bf268fd5c24ea3e753bf831a21a8c6df038c7f2d Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 11:24:03 2015 +0100 [doc] style Documentation/hkl.org.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 73c6c23c0e21411090f7f86a1e03991368821624 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 11:20:02 2015 +0100 [doc] add Howto's to add a diffractometer and work on the documentation Documentation/hkl.org.in | 51 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 15 deletions(-) commit bb5f2aa6bf74cf9941dd5cd88a31f5b67b88276d Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 09:58:57 2015 +0100 [doc] rework the gui todos and add the tooltips. Documentation/hkl.org.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) commit 148575f020e5555d90f64c3c52ccac9c215bb133 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 09:07:53 2015 +0100 [hkl] use M_SQRT1_2 instead of non const expression (clang error) tests/hkl-axis-t.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c945bc432db86904481220c821c3d21b90cd83d0 Author: picca Date: Fri Jan 23 16:34:41 2015 +0100 [todo] add more todo about the petraIII problems Documentation/hkl.org.in | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) commit 6e284614ee0b896529ab9a213ee4408fa56d707f Author: picca Date: Fri Jan 23 16:33:56 2015 +0100 [doc] generate the pseudo axis and parameter description Documentation/Makefile.am | 10 +++++++- Documentation/default.el | 4 ++-- Documentation/hkl.org.in | 41 ++++++++++++++++++++++----------- hkl.h | 6 ++--- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 8 +++---- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 8 +++---- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 12 ++++++---- 11 files changed, 62 insertions(+), 37 deletions(-) commit 241aafccddf9b728d18ba4e5994e972c1fbf3f3c Author: picca Date: Fri Jan 23 15:05:44 2015 +0100 [tests] add better binding check for all lists tests/bindings/python.py | 3 +++ 1 file changed, 3 insertions(+) commit ef00049a9c9cc9a353940ccc810cdee04cb8698a Author: picca Date: Fri Jan 23 13:39:25 2015 +0100 [binding] expose hkl_engine_parameter_get so it is possible to use this to document the engine mode parameters hkl/hkl-pseudoaxis.c | 2 +- tests/bindings/python.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) commit 23b1c1aac8e77778c8a65176df91ad42d98d441a Author: picca Date: Fri Jan 23 11:51:47 2015 +0100 [hkl] factorize the constant_(omega|chi|phi)_parameters hkl/hkl-engine-k4c.c | 18 +++++-------- hkl/hkl-engine-k6c.c | 48 +++++++++++---------------------- hkl/hkl-pseudoaxis-common-hkl-private.h | 48 ++++++++++++++++++++------------- 3 files changed, 52 insertions(+), 62 deletions(-) commit 8c2d67518eb8c75dcee8e1370f3cd6afd39825b8 Author: picca Date: Fri Jan 23 11:46:42 2015 +0100 [hkl] add the constant_incidence parameters description hkl/hkl-engine-k6c.c | 20 ++++---------------- hkl/hkl-pseudoaxis-common-hkl-private.h | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 16 deletions(-) commit 064a793b02f2c8b49e4ae739e1742f16a1f9dcc7 Author: picca Date: Fri Jan 23 10:35:22 2015 +0100 [hkl] factorize also the psi_constant_vertical parameters for e6c hkl/hkl-engine-e6c.c | 7 +---- hkl/hkl-pseudoaxis-common-hkl-private.h | 49 +++++++++++++++++---------------- 2 files changed, 26 insertions(+), 30 deletions(-) commit 17c7a98858f2ad566f46294c926bf3c56eeb4eab Author: picca Date: Fri Jan 23 10:06:30 2015 +0100 [hkl] factorize the psi_parameters for the psi engine. during thie refactoring I renamed the parameters so they match the psi_constant_xxx mode of the hkl engine. It will be easier to understand the these parameters are equivalent. hkl/hkl-engine-e4c.c | 8 ++------ hkl/hkl-engine-e6c.c | 8 ++------ hkl/hkl-engine-k4c.c | 8 ++------ hkl/hkl-engine-k6c.c | 16 ++++------------ hkl/hkl-engine-template.c | 8 ++------ hkl/hkl-pseudoaxis-common-psi-private.h | 18 ++++++++++++++++++ 6 files changed, 30 insertions(+), 36 deletions(-) commit 0dde5c60a89dcd5c235ba2a9153dfe937169bc5d Author: picca Date: Fri Jan 23 09:45:25 2015 +0100 [doc] fix the distcheck target Documentation/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit f3aeac9a287842ae95e4768db398c6fd172455ea Author: picca Date: Fri Jan 23 09:03:50 2015 +0100 [todo] more information about the computing problem of PetraIII Documentation/hkl.org.in | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) commit 2fe29270d6ba59cba2ed2bcaf07c3a35c6953ab2 Author: picca Date: Fri Jan 23 09:03:25 2015 +0100 [hkl] factorize the psi_constant_parameters hkl/hkl-engine-e4c.c | 10 ++-------- hkl/hkl-engine-e6c.c | 9 ++------- hkl/hkl-engine-k4c.c | 9 ++------- hkl/hkl-engine-k6c.c | 18 ++++-------------- hkl/hkl-pseudoaxis-common-hkl-private.h | 22 ++++++++++++++++++++++ 5 files changed, 32 insertions(+), 36 deletions(-) commit 8970375aaae09d71dc0df8648169ef3b9df3e35b Author: picca Date: Thu Jan 22 14:22:23 2015 +0100 [hkl] set the eulerian solutions parameter description hkl/hkl-pseudoaxis-common-eulerians.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 8480f586139f18c74304acb5c298bd5a154064c4 Author: picca Date: Thu Jan 22 14:21:34 2015 +0100 [hkl] factorize the double_diffraction_parameters (with description) hkl/hkl-engine-e4c.c | 9 ++------- hkl/hkl-engine-e6c.c | 17 ++++------------- hkl/hkl-engine-k4c.c | 8 ++------ hkl/hkl-engine-k6c.c | 32 ++++++++------------------------ hkl/hkl-pseudoaxis-common-hkl-private.h | 19 +++++++++++++++++++ 5 files changed, 35 insertions(+), 50 deletions(-) commit 14ea2092422f8d109e77556010c0e4aec609a9c5 Author: picca Date: Thu Jan 22 14:20:04 2015 +0100 [hkl] set the description of all PseudoAxis hkl/hkl-pseudoaxis-common-eulerians.c | 12 +++++++++--- hkl/hkl-pseudoaxis-common-hkl.c | 15 +++++++++++--- hkl/hkl-pseudoaxis-common-psi.c | 4 +++- hkl/hkl-pseudoaxis-common-q.c | 37 ++++++++++++++++++++++++++++------- 4 files changed, 54 insertions(+), 14 deletions(-) commit cd4dca754a9b245763e3380c151fd39d6ddee028 Author: picca Date: Thu Jan 22 13:00:41 2015 +0100 [hkl] add the hkl_parameter_description_get method hkl.h | 2 ++ hkl/hkl-lattice.c | 21 +++++++++++++++------ hkl/hkl-parameter-private.h | 5 +++-- hkl/hkl-parameter.c | 19 +++++++++++++++++-- hkl/hkl-sample.c | 9 ++++++--- tests/hkl-parameter-t.c | 36 +++++++++++++++++++----------------- 6 files changed, 62 insertions(+), 30 deletions(-) commit 83ff394e628177f760b2c5c6e65aad80a5dfdfef Author: picca Date: Thu Jan 22 10:20:31 2015 +0100 [todo] add new informations for the petraIII problem. Documentation/hkl.org.in | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 8701faf27699cdba0c227bc041c82797ce0b5b68 Author: Ken L Date: Thu Jan 22 11:25:02 2015 -0500 axes_(names|values) -> axis_(names|values) Documentation/sphinx/source/bindings/python.py | 18 +++++----- Documentation/sphinx/source/pyplots/trajectory.py | 8 ++--- .../sphinx/source/pyplots/trajectory_full.py | 8 ++--- .../sphinx/source/pyplots/trajectory_simple.py | 14 ++++---- gui/hkl-gui-pseudoaxes.c | 4 +-- gui/hkl-gui.c | 22 ++++++------- hkl.h | 18 +++++----- hkl/hkl-binding-private.h | 10 +++--- hkl/hkl-binding.c | 38 +++++++++++----------- hkl/hkl-geometry.c | 12 +++---- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-private.h | 14 ++++---- hkl/hkl-pseudoaxis.c | 28 ++++++++-------- tests/bindings/python.py | 24 +++++++------- tests/bindings/trajectory.py | 12 +++---- tests/hkl-bench-t.c | 8 ++--- tests/hkl-geometry-t.c | 16 ++++----- tests/hkl-pseudoaxis-e4ch-t.c | 8 ++--- tests/hkl-pseudoaxis-e4cv-t.c | 8 ++--- tests/hkl-pseudoaxis-e6c-t.c | 16 ++++----- tests/hkl-pseudoaxis-k4cv-t.c | 4 +-- tests/hkl-pseudoaxis-k6c-t.c | 4 +-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 8 ++--- tests/hkl-pseudoaxis-t.c | 34 +++++++++---------- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/tap/hkl-tap.c | 4 +-- 26 files changed, 172 insertions(+), 172 deletions(-) commit 91042e9be687fb5343bb9b9ec55ed73633eb8f5b Author: Ken L Date: Thu Jan 22 10:44:53 2015 -0500 mesured -> measured hkl.h | 2 +- hkl/hkl-sample.c | 8 ++++---- tests/bindings/python.py | 4 ++-- tests/hkl-sample-t.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) commit 0d20c51641b9f9c445abf68cc603ae5efeaf6dc9 Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 16:39:52 2015 +0100 [todo] problem with the petraIII diffractometer. Documentation/hkl.org.in | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) commit 5d8b4a1811d2cdf240a89a84b8782a31ab04a7f3 Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 10:11:49 2015 +0100 add --disable-hkl-doc option to no build the documentation Documentation/hkl.org.in | 42 +++++++++++++++++++++++------------------- Makefile.am | 5 ++++- configure.ac | 24 +++++++++++------------- 3 files changed, 38 insertions(+), 33 deletions(-) commit 1185bfae4cd2e407177fd6e13de6822420996286 Author: Picca Frédéric-Emmanuel Date: Wed Jan 21 08:52:11 2015 +0100 expose the hkl_geometry_wavelength_get into the binding thanks Ken Lauer, for the issue. hkl/hkl-geometry.c | 2 +- tests/bindings/python.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) commit 97d290ff3ba4d8325b21b3ab5e3f39869abe914d Author: Picca Frédéric-Emmanuel Date: Sat Jan 17 20:03:51 2015 +0100 [doc] use org-info.js for now org-info is not embeded. Documentation/hkl.org.in | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) commit 6a2025a251e517e0afe1c97985e10ee4baa0d84d Author: Picca Frédéric-Emmanuel Date: Sat Jan 17 20:02:56 2015 +0100 [doc] fix the Makefile rules Documentation/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit be51577505bafb6f5807b808bdb1319fef8fe2e1 Author: Picca Frédéric-Emmanuel Date: Sat Jan 17 12:01:54 2015 +0100 [doc] use mathjax when exporting the org documentation Documentation/Makefile.am | 14 ++-- Documentation/hkl.org.in | 2 +- org-doc.make | 176 ---------------------------------------------- 3 files changed, 7 insertions(+), 185 deletions(-) commit 05a5669a462ab24373c4783760c13f0e932c7815 Author: picca Date: Fri Jan 16 16:38:31 2015 +0100 [todo] add unit test for hkl_sample_affine. Documentation/hkl.org.in | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit 625eac4ec27cf6103fa0537b9902a4ff7c156fe6 Author: picca Date: Fri Jan 16 09:37:02 2015 +0100 [doc] set a correct mailto link for the bug reporting. Documentation/hkl.org.in | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) commit b310fe6b9ccacd185aab96434054cce34976d028 Author: picca Date: Fri Jan 16 09:36:23 2015 +0100 [doc] typo Documentation/hkl.org.in | 1 - 1 file changed, 1 deletion(-) commit c13509bcfaf7aade27cf2153c6cca29f882fee1f Author: picca Date: Fri Jan 16 09:36:11 2015 +0100 [doc] better TODO for the documentation Documentation/hkl.org.in | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) commit c39817295a5a3d87b2873a564e1c35da81b58fcb Author: picca Date: Thu Jan 15 16:49:09 2015 +0100 [doc] reword Documentation/hkl.org.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 04f184e83bea7961444880df867c7401cab4c0e6 Author: picca Date: Thu Jan 15 16:44:42 2015 +0100 TODO HklParameter description. Documentation/hkl.org.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit fa8b02bce12dca123542e4ec8ccae64a6024d9dc Author: picca Date: Thu Jan 15 16:42:47 2015 +0100 use the hkl_parameter_quaternion_get in the hkl3d library this way no need to access the private HklAxis part from hkl3d. hkl3d/hkl3d.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) commit 6bb26914a92a6a5c5320bbce7ae7f551cd3ea925 Author: picca Date: Thu Jan 15 16:34:35 2015 +0100 add hkl_parameter_axis_v_get and hkl_parameter_quaternion_get Documentation/hkl.org.in | 28 +++-- hkl.h | 28 +++++ hkl/hkl-axis.c | 14 ++- hkl/hkl-matrix-private.h | 1 - hkl/hkl-parameter-private.h | 39 ++++-- hkl/hkl-parameter.c | 22 ++++ hkl/hkl-pseudoaxis-common-hkl-private.h | 13 -- hkl/hkl-quaternion-private.h | 6 - hkl/hkl-types.c | 1 + hkl/hkl-vector-private.h | 17 --- tests/bindings/python.py | 26 +++- tests/hkl-axis-t.c | 206 ++++++++++++++++---------------- tests/hkl-parameter-t.c | 18 ++- tests/tap/hkl-tap.c | 17 +++ tests/tap/hkl-tap.h | 3 + 15 files changed, 271 insertions(+), 168 deletions(-) commit c03066355fc358609e3167ca22654d1a1834c57b Author: picca Date: Wed Jan 14 16:02:56 2015 +0100 fix the disctcheck target for the org-mode documentation Documentation/Makefile.am | 16 +++-- org-doc.make | 176 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+), 5 deletions(-) commit f1fe69052cc992f024945a929d2d602bdf55f8d8 Author: picca Date: Tue Jan 13 16:09:57 2015 +0100 add the default.el file to export the hkl.org. Documentation/default.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 4399db59a51f3ace8d5295b39202dd84ed85382b Author: picca Date: Tue Jan 13 16:08:44 2015 +0100 move the TODO file into hkl.org.in Documentation/hkl.org.in | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ TODO | 71 ------------------------------------------------ 2 files changed, 71 insertions(+), 71 deletions(-) commit e5fcc6a1dab01b07b75f7ae6647d56b182265d1f Author: picca Date: Tue Jan 13 15:55:43 2015 +0100 generate the diffractometer description using the python binding we introspect the library to generate the Diffractometers section Documentation/Makefile.am | 4 +- Documentation/hkl.org.in | 1258 ++------------------------------------------- 2 files changed, 50 insertions(+), 1212 deletions(-) commit 18061c91e103522ec4ef9a7cb8ddf2f489d2fbbd Author: picca Date: Tue Jan 13 11:49:57 2015 +0100 fix all the references Documentation/hkl.org.in | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit e948755950f2e2ca74a47652f4b80458546f3bc2 Author: picca Date: Tue Jan 13 11:25:11 2015 +0100 indent hkl.org.in Documentation/hkl.org.in | 1439 +++++++++++++++++++--------------------------- 1 file changed, 581 insertions(+), 858 deletions(-) commit 02f76c5a4588b1be3f82ff198d90efb27b1e6a32 Author: picca Date: Tue Jan 13 11:16:10 2015 +0100 fix all the equations in the org-mode file Documentation/hkl.org.in | 331 +++++++++++++++++++++++++++++++---------------- 1 file changed, 218 insertions(+), 113 deletions(-) commit ed198b9619b9cd6d5cb036c1599e6630c1205fa9 Author: picca Date: Mon Jan 12 16:01:39 2015 +0100 use babel for all the shell scripts Documentation/hkl.org.in | 90 ++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-) commit 8b755cf9eea9b3ab8a2cce9197af266f01dc5524 Author: picca Date: Mon Jan 12 15:57:25 2015 +0100 remove the old lyx code now part of hkl.org Documentation/hkl.lyx | 3402 ------------------------------------------------- 1 file changed, 3402 deletions(-) commit ba7eba6af3d37a890dcd79c97d6472c2f3f53b50 Author: picca Date: Mon Jan 12 15:56:59 2015 +0100 put the hkl.org file at the right place and fix the figure inclusion Documentation/Makefile.am | 6 +-- Documentation/hkl.org.in | 113 +++++++++++++++++++--------------------------- configure.ac | 6 +++ 3 files changed, 55 insertions(+), 70 deletions(-) commit 7733a326c7861e889403f0a50b40b6dc659074ee Author: picca Date: Mon Jan 12 11:11:11 2015 +0100 add the hkl.org file with all the documentation Documentation/Makefile.am | 5 + Documentation/hkl.org.in | 2138 +++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 1 + 3 files changed, 2144 insertions(+) commit 159e2f3f8aa475217c044afb0ffbc3bc73ca2726 Author: Picca Frédéric-Emmanuel Date: Mon Jan 12 07:24:14 2015 +0100 update the NEWS and TODO files NEWS | 4 +++- TODO | 71 +++++++++++++++++++++++++++++++++++++++++++++----------------------- 2 files changed, 50 insertions(+), 25 deletions(-) commit 9fcb33894c5591eca8edd40bc62dd37d9a8cf3c7 Author: picca Date: Fri Jan 9 15:28:25 2015 +0100 typo hkl/hkl-pseudoaxis.c | 3 --- 1 file changed, 3 deletions(-) commit cf635233a0a589f72b1b73379e784d9e4dbc1b64 Author: picca Date: Fri Jan 9 14:47:19 2015 +0100 fix a segfault in the gui gui/hkl-gui.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 70ff43eccd1ce407254c0b2ed921b7bde167727e Author: picca Date: Fri Jan 9 14:31:15 2015 +0100 add an --enable-logging to activate the logging in the hkl library For now this is optional to avoid the perfomance impact. I do not have numbers for now but I prefer to make this optional in a first time. I am not really happy with the implementation of the logging. Only one method is instrumented for now hkl_engine_pseudo_axes_values_set configure.ac | 49 +++++++++++++++++++++++++++++++++---------------- hkl/hkl-pseudoaxis.c | 40 +++++++++++++++++++++++----------------- 2 files changed, 56 insertions(+), 33 deletions(-) commit f09b45ea8bc0733ad37ec3f9ee04ee07096594c9 Author: picca Date: Wed Jan 7 15:20:52 2015 +0100 remove a bunch of warning during the compilation hkl.h | 4 ++-- hkl/hkl-binding.c | 3 +-- hkl/hkl-factory.c | 4 ++-- hkl/hkl-geometry.c | 3 --- hkl/hkl-pseudoaxis.c | 1 - hkl/hkl-types.c | 1 + hkl/hkl-types.h | 37 ++++++++++++++++++++----------------- 7 files changed, 26 insertions(+), 27 deletions(-) commit b1ac77679017c16f00f886ecc9a02abb6a263825 Author: picca Date: Wed Jan 7 11:57:20 2015 +0100 reworks the NEWS file NEWS | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) commit 184629e2b99612c7b99fd6a40417a0612048b2cd Author: picca Date: Wed Jan 7 11:08:32 2015 +0100 fix a segmentation fault with the HklSampleReflection in the binding. - test deletion of objects in the python binding. - rewrite the hkl-type.c with a macro to be a lot more maintainable. - use a fake ref and unref method for the HklSampleReflection type. - fix all the binding test of the documentation Documentation/sphinx/Makefile.am | 6 +- Documentation/sphinx/source/bindings/python.py | 2 +- Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 2 +- .../sphinx/source/pyplots/trajectory_simple.py | 5 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 8 +- hkl/hkl-sample.c | 2 +- hkl/hkl-types.c | 243 +++------------------ hkl/hkl-types.h | 9 - tests/bindings/python.py | 18 +- 11 files changed, 60 insertions(+), 239 deletions(-) commit 2baed83926a1c9520f9c62bea73b614c497fab57 Author: picca Date: Tue Jan 6 09:36:31 2015 +0100 fix the reference manual Documentation/api/hkl-docs.sgml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) commit 4225df2bd442d695dd9fe07caf778eb2cd6b3005 Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 16:53:41 2014 +0100 do not install the hkl3d.pc Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d4f7ed4de1de7e89fd00303f5d545ec58a3befd6 Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 16:49:36 2014 +0100 remove the embeded bullet library. this will reduce the work for the packaging. Documentation/sphinx/source/development.rst | 7 +- Makefile.am | 2 +- configure.ac | 89 +- gui/Makefile.am | 10 +- hkl3d/Makefile.am | 28 +- hkl3d/bullet/AUTHORS | 22 - hkl3d/bullet/BulletLicense.txt | 18 - hkl3d/bullet/COPYING | 674 ----- hkl3d/bullet/ChangeLog | 755 ------ hkl3d/bullet/Doxyfile | 768 ------ hkl3d/bullet/LICENSE | 19 - hkl3d/bullet/Makefile.am | 3 - hkl3d/bullet/NEWS | 4 - hkl3d/bullet/README | 7 - hkl3d/bullet/RELEASING.TXT | 34 - hkl3d/bullet/VERSION | 1 - hkl3d/bullet/bullet.pc | 11 - hkl3d/bullet/src/Bullet-C-Api.h | 176 -- .../BroadphaseCollision/btAxisSweep3.cpp | 37 - .../BroadphaseCollision/btAxisSweep3.h | 1051 -------- .../BroadphaseCollision/btBroadphaseInterface.h | 82 - .../BroadphaseCollision/btBroadphaseProxy.cpp | 17 - .../BroadphaseCollision/btBroadphaseProxy.h | 270 -- .../BroadphaseCollision/btCollisionAlgorithm.cpp | 23 - .../BroadphaseCollision/btCollisionAlgorithm.h | 80 - .../BulletCollision/BroadphaseCollision/btDbvt.cpp | 1295 --------- .../BulletCollision/BroadphaseCollision/btDbvt.h | 1256 --------- .../BroadphaseCollision/btDbvtBroadphase.cpp | 796 ------ .../BroadphaseCollision/btDbvtBroadphase.h | 146 -- .../BroadphaseCollision/btDispatcher.cpp | 22 - .../BroadphaseCollision/btDispatcher.h | 110 - .../BroadphaseCollision/btMultiSapBroadphase.cpp | 489 ---- .../BroadphaseCollision/btMultiSapBroadphase.h | 151 -- .../BroadphaseCollision/btOverlappingPairCache.cpp | 633 ----- .../BroadphaseCollision/btOverlappingPairCache.h | 469 ---- .../btOverlappingPairCallback.h | 40 - .../BroadphaseCollision/btQuantizedBvh.cpp | 1375 ---------- .../BroadphaseCollision/btQuantizedBvh.h | 579 ----- .../BroadphaseCollision/btSimpleBroadphase.cpp | 349 --- .../BroadphaseCollision/btSimpleBroadphase.h | 171 -- .../CollisionDispatch/SphereTriangleDetector.cpp | 201 -- .../CollisionDispatch/SphereTriangleDetector.h | 51 - .../btActivatingCollisionAlgorithm.cpp | 47 - .../btActivatingCollisionAlgorithm.h | 36 - .../btBox2dBox2dCollisionAlgorithm.cpp | 435 ---- .../btBox2dBox2dCollisionAlgorithm.h | 66 - .../btBoxBoxCollisionAlgorithm.cpp | 85 - .../CollisionDispatch/btBoxBoxCollisionAlgorithm.h | 66 - .../CollisionDispatch/btBoxBoxDetector.cpp | 718 ----- .../CollisionDispatch/btBoxBoxDetector.h | 44 - .../CollisionDispatch/btCollisionConfiguration.h | 48 - .../CollisionDispatch/btCollisionCreateFunc.h | 45 - .../CollisionDispatch/btCollisionDispatcher.cpp | 310 --- .../CollisionDispatch/btCollisionDispatcher.h | 172 -- .../CollisionDispatch/btCollisionObject.cpp | 116 - .../CollisionDispatch/btCollisionObject.h | 524 ---- .../CollisionDispatch/btCollisionWorld.cpp | 1513 ----------- .../CollisionDispatch/btCollisionWorld.h | 509 ---- .../btCompoundCollisionAlgorithm.cpp | 353 --- .../btCompoundCollisionAlgorithm.h | 86 - .../btConvex2dConvex2dAlgorithm.cpp | 247 -- .../btConvex2dConvex2dAlgorithm.h | 95 - .../btConvexConcaveCollisionAlgorithm.cpp | 312 --- .../btConvexConcaveCollisionAlgorithm.h | 116 - .../CollisionDispatch/btConvexConvexAlgorithm.cpp | 679 ----- .../CollisionDispatch/btConvexConvexAlgorithm.h | 109 - .../btConvexPlaneCollisionAlgorithm.cpp | 155 -- .../btConvexPlaneCollisionAlgorithm.h | 84 - .../btDefaultCollisionConfiguration.cpp | 298 --- .../btDefaultCollisionConfiguration.h | 135 - .../btEmptyCollisionAlgorithm.cpp | 34 - .../CollisionDispatch/btEmptyCollisionAlgorithm.h | 54 - .../CollisionDispatch/btGhostObject.cpp | 171 -- .../CollisionDispatch/btGhostObject.h | 175 -- .../CollisionDispatch/btInternalEdgeUtility.cpp | 842 ------ .../CollisionDispatch/btInternalEdgeUtility.h | 46 - .../CollisionDispatch/btManifoldResult.cpp | 135 - .../CollisionDispatch/btManifoldResult.h | 128 - .../btSimulationIslandManager.cpp | 443 ---- .../CollisionDispatch/btSimulationIslandManager.h | 81 - .../btSphereBoxCollisionAlgorithm.cpp | 260 -- .../btSphereBoxCollisionAlgorithm.h | 75 - .../btSphereSphereCollisionAlgorithm.cpp | 105 - .../btSphereSphereCollisionAlgorithm.h | 66 - .../btSphereTriangleCollisionAlgorithm.cpp | 84 - .../btSphereTriangleCollisionAlgorithm.h | 69 - .../CollisionDispatch/btUnionFind.cpp | 82 - .../CollisionDispatch/btUnionFind.h | 129 - .../CollisionShapes/btBox2dShape.cpp | 42 - .../BulletCollision/CollisionShapes/btBox2dShape.h | 363 --- .../BulletCollision/CollisionShapes/btBoxShape.cpp | 41 - .../BulletCollision/CollisionShapes/btBoxShape.h | 318 --- .../CollisionShapes/btBvhTriangleMeshShape.cpp | 466 ---- .../CollisionShapes/btBvhTriangleMeshShape.h | 139 - .../CollisionShapes/btCapsuleShape.cpp | 171 -- .../CollisionShapes/btCapsuleShape.h | 173 -- .../CollisionShapes/btCollisionMargin.h | 26 - .../CollisionShapes/btCollisionShape.cpp | 119 - .../CollisionShapes/btCollisionShape.h | 150 -- .../CollisionShapes/btCompoundShape.cpp | 356 --- .../CollisionShapes/btCompoundShape.h | 212 -- .../CollisionShapes/btConcaveShape.cpp | 27 - .../CollisionShapes/btConcaveShape.h | 60 - .../CollisionShapes/btConeShape.cpp | 143 - .../BulletCollision/CollisionShapes/btConeShape.h | 103 - .../CollisionShapes/btConvex2dShape.cpp | 92 - .../CollisionShapes/btConvex2dShape.h | 80 - .../CollisionShapes/btConvexHullShape.cpp | 211 -- .../CollisionShapes/btConvexHullShape.h | 120 - .../CollisionShapes/btConvexInternalShape.cpp | 151 -- .../CollisionShapes/btConvexInternalShape.h | 202 -- .../CollisionShapes/btConvexPointCloudShape.cpp | 157 -- .../CollisionShapes/btConvexPointCloudShape.h | 105 - .../CollisionShapes/btConvexPolyhedron.cpp | 185 -- .../CollisionShapes/btConvexPolyhedron.h | 54 - .../CollisionShapes/btConvexShape.cpp | 429 --- .../CollisionShapes/btConvexShape.h | 82 - .../CollisionShapes/btConvexTriangleMeshShape.cpp | 315 --- .../CollisionShapes/btConvexTriangleMeshShape.h | 75 - .../CollisionShapes/btCylinderShape.cpp | 279 -- .../CollisionShapes/btCylinderShape.h | 200 -- .../CollisionShapes/btEmptyShape.cpp | 50 - .../BulletCollision/CollisionShapes/btEmptyShape.h | 70 - .../CollisionShapes/btHeightfieldTerrainShape.cpp | 411 --- .../CollisionShapes/btHeightfieldTerrainShape.h | 161 -- .../BulletCollision/CollisionShapes/btMaterial.h | 35 - .../CollisionShapes/btMinkowskiSumShape.cpp | 60 - .../CollisionShapes/btMinkowskiSumShape.h | 60 - .../CollisionShapes/btMultiSphereShape.cpp | 167 -- .../CollisionShapes/btMultiSphereShape.h | 99 - .../btMultimaterialTriangleMeshShape.cpp | 45 - .../btMultimaterialTriangleMeshShape.h | 120 - .../CollisionShapes/btOptimizedBvh.cpp | 391 --- .../CollisionShapes/btOptimizedBvh.h | 65 - .../CollisionShapes/btPolyhedralConvexShape.cpp | 338 --- .../CollisionShapes/btPolyhedralConvexShape.h | 112 - .../btScaledBvhTriangleMeshShape.cpp | 123 - .../CollisionShapes/btScaledBvhTriangleMeshShape.h | 93 - .../CollisionShapes/btShapeHull.cpp | 170 -- .../BulletCollision/CollisionShapes/btShapeHull.h | 59 - .../CollisionShapes/btSphereShape.cpp | 71 - .../CollisionShapes/btSphereShape.h | 73 - .../CollisionShapes/btStaticPlaneShape.cpp | 107 - .../CollisionShapes/btStaticPlaneShape.h | 103 - .../CollisionShapes/btStridingMeshInterface.cpp | 379 --- .../CollisionShapes/btStridingMeshInterface.h | 162 -- .../CollisionShapes/btTetrahedronShape.cpp | 218 -- .../CollisionShapes/btTetrahedronShape.h | 74 - .../CollisionShapes/btTriangleBuffer.cpp | 35 - .../CollisionShapes/btTriangleBuffer.h | 69 - .../CollisionShapes/btTriangleCallback.cpp | 28 - .../CollisionShapes/btTriangleCallback.h | 42 - .../CollisionShapes/btTriangleIndexVertexArray.cpp | 95 - .../CollisionShapes/btTriangleIndexVertexArray.h | 131 - .../btTriangleIndexVertexMaterialArray.cpp | 86 - .../btTriangleIndexVertexMaterialArray.h | 84 - .../CollisionShapes/btTriangleInfoMap.h | 240 -- .../CollisionShapes/btTriangleMesh.cpp | 140 - .../CollisionShapes/btTriangleMesh.h | 69 - .../CollisionShapes/btTriangleMeshShape.cpp | 211 -- .../CollisionShapes/btTriangleMeshShape.h | 89 - .../CollisionShapes/btTriangleShape.h | 182 -- .../CollisionShapes/btUniformScalingShape.cpp | 160 -- .../CollisionShapes/btUniformScalingShape.h | 87 - hkl3d/bullet/src/BulletCollision/Doxyfile | 746 ------ .../src/BulletCollision/Gimpact/btBoxCollision.h | 647 ----- .../src/BulletCollision/Gimpact/btClipPolygon.h | 182 -- .../Gimpact/btContactProcessing.cpp | 181 -- .../BulletCollision/Gimpact/btContactProcessing.h | 145 -- .../src/BulletCollision/Gimpact/btGImpactBvh.cpp | 498 ---- .../src/BulletCollision/Gimpact/btGImpactBvh.h | 396 --- .../Gimpact/btGImpactCollisionAlgorithm.cpp | 904 ------- .../Gimpact/btGImpactCollisionAlgorithm.h | 306 --- .../BulletCollision/Gimpact/btGImpactMassUtil.h | 60 - .../Gimpact/btGImpactQuantizedBvh.cpp | 528 ---- .../Gimpact/btGImpactQuantizedBvh.h | 372 --- .../src/BulletCollision/Gimpact/btGImpactShape.cpp | 203 -- .../src/BulletCollision/Gimpact/btGImpactShape.h | 1171 --------- .../Gimpact/btGenericPoolAllocator.cpp | 283 -- .../Gimpact/btGenericPoolAllocator.h | 163 -- .../BulletCollision/Gimpact/btGeometryOperations.h | 212 -- .../src/BulletCollision/Gimpact/btQuantization.h | 88 - .../BulletCollision/Gimpact/btTriangleShapeEx.cpp | 218 -- .../BulletCollision/Gimpact/btTriangleShapeEx.h | 180 -- .../bullet/src/BulletCollision/Gimpact/gim_array.h | 326 --- .../Gimpact/gim_basic_geometry_operations.h | 543 ---- .../src/BulletCollision/Gimpact/gim_bitset.h | 123 - .../BulletCollision/Gimpact/gim_box_collision.h | 590 ----- .../src/BulletCollision/Gimpact/gim_box_set.cpp | 182 -- .../src/BulletCollision/Gimpact/gim_box_set.h | 674 ----- .../src/BulletCollision/Gimpact/gim_clip_polygon.h | 210 -- .../src/BulletCollision/Gimpact/gim_contact.cpp | 146 -- .../src/BulletCollision/Gimpact/gim_contact.h | 164 -- .../src/BulletCollision/Gimpact/gim_geom_types.h | 97 - .../src/BulletCollision/Gimpact/gim_geometry.h | 42 - .../src/BulletCollision/Gimpact/gim_hash_table.h | 902 ------- .../src/BulletCollision/Gimpact/gim_linear_math.h | 1573 ----------- .../bullet/src/BulletCollision/Gimpact/gim_math.h | 157 -- .../src/BulletCollision/Gimpact/gim_memory.cpp | 135 - .../src/BulletCollision/Gimpact/gim_memory.h | 190 -- .../src/BulletCollision/Gimpact/gim_radixsort.h | 406 --- .../BulletCollision/Gimpact/gim_tri_collision.cpp | 640 ----- .../BulletCollision/Gimpact/gim_tri_collision.h | 379 --- .../btContinuousConvexCollision.cpp | 243 -- .../btContinuousConvexCollision.h | 59 - .../NarrowPhaseCollision/btConvexCast.cpp | 20 - .../NarrowPhaseCollision/btConvexCast.h | 73 - .../btConvexPenetrationDepthSolver.h | 42 - .../btDiscreteCollisionDetectorInterface.h | 91 - .../NarrowPhaseCollision/btGjkConvexCast.cpp | 176 -- .../NarrowPhaseCollision/btGjkConvexCast.h | 50 - .../NarrowPhaseCollision/btGjkEpa2.cpp | 989 ------- .../NarrowPhaseCollision/btGjkEpa2.h | 75 - .../btGjkEpaPenetrationDepthSolver.cpp | 66 - .../btGjkEpaPenetrationDepthSolver.h | 43 - .../NarrowPhaseCollision/btGjkPairDetector.cpp | 457 ---- .../NarrowPhaseCollision/btGjkPairDetector.h | 103 - .../NarrowPhaseCollision/btManifoldPoint.h | 158 -- .../btMinkowskiPenetrationDepthSolver.cpp | 362 --- .../btMinkowskiPenetrationDepthSolver.h | 40 - .../NarrowPhaseCollision/btPersistentManifold.cpp | 260 -- .../NarrowPhaseCollision/btPersistentManifold.h | 232 -- .../NarrowPhaseCollision/btPointCollector.h | 64 - .../btPolyhedralContactClipping.cpp | 360 --- .../btPolyhedralContactClipping.h | 46 - .../NarrowPhaseCollision/btRaycastCallback.cpp | 177 -- .../NarrowPhaseCollision/btRaycastCallback.h | 72 - .../btSimplexSolverInterface.h | 63 - .../btSubSimplexConvexCast.cpp | 160 -- .../NarrowPhaseCollision/btSubSimplexConvexCast.h | 50 - .../btVoronoiSimplexSolver.cpp | 609 ----- .../NarrowPhaseCollision/btVoronoiSimplexSolver.h | 179 -- .../Character/btCharacterControllerInterface.h | 46 - .../Character/btKinematicCharacterController.cpp | 641 ----- .../Character/btKinematicCharacterController.h | 162 -- .../ConstraintSolver/btConeTwistConstraint.cpp | 1127 -------- .../ConstraintSolver/btConeTwistConstraint.h | 346 --- .../ConstraintSolver/btConstraintSolver.h | 52 - .../ConstraintSolver/btContactConstraint.cpp | 178 -- .../ConstraintSolver/btContactConstraint.h | 71 - .../ConstraintSolver/btContactSolverInfo.h | 87 - .../ConstraintSolver/btGeneric6DofConstraint.cpp | 1070 -------- .../ConstraintSolver/btGeneric6DofConstraint.h | 614 ----- .../btGeneric6DofSpringConstraint.cpp | 172 -- .../btGeneric6DofSpringConstraint.h | 97 - .../ConstraintSolver/btHinge2Constraint.cpp | 66 - .../ConstraintSolver/btHinge2Constraint.h | 58 - .../ConstraintSolver/btHingeConstraint.cpp | 1033 -------- .../ConstraintSolver/btHingeConstraint.h | 381 --- .../ConstraintSolver/btJacobianEntry.h | 156 -- .../ConstraintSolver/btPoint2PointConstraint.cpp | 230 -- .../ConstraintSolver/btPoint2PointConstraint.h | 161 -- .../btSequentialImpulseConstraintSolver.cpp | 1239 --------- .../btSequentialImpulseConstraintSolver.h | 128 - .../ConstraintSolver/btSliderConstraint.cpp | 857 ------ .../ConstraintSolver/btSliderConstraint.h | 333 --- .../ConstraintSolver/btSolve2LinearConstraint.cpp | 255 -- .../ConstraintSolver/btSolve2LinearConstraint.h | 107 - .../BulletDynamics/ConstraintSolver/btSolverBody.h | 191 -- .../ConstraintSolver/btSolverConstraint.h | 96 - .../ConstraintSolver/btTypedConstraint.cpp | 214 -- .../ConstraintSolver/btTypedConstraint.h | 436 ---- .../ConstraintSolver/btUniversalConstraint.cpp | 87 - .../ConstraintSolver/btUniversalConstraint.h | 62 - .../src/BulletDynamics/Dynamics/Bullet-C-API.cpp | 405 --- .../BulletDynamics/Dynamics/btActionInterface.h | 46 - .../Dynamics/btContinuousDynamicsWorld.cpp | 196 -- .../Dynamics/btContinuousDynamicsWorld.h | 46 - .../Dynamics/btDiscreteDynamicsWorld.cpp | 1348 ---------- .../Dynamics/btDiscreteDynamicsWorld.h | 200 -- .../src/BulletDynamics/Dynamics/btDynamicsWorld.h | 151 -- .../src/BulletDynamics/Dynamics/btRigidBody.cpp | 402 --- .../src/BulletDynamics/Dynamics/btRigidBody.h | 691 ----- .../Dynamics/btSimpleDynamicsWorld.cpp | 280 -- .../Dynamics/btSimpleDynamicsWorld.h | 89 - .../BulletDynamics/Vehicle/btRaycastVehicle.cpp | 771 ------ .../src/BulletDynamics/Vehicle/btRaycastVehicle.h | 236 -- .../BulletDynamics/Vehicle/btVehicleRaycaster.h | 35 - .../src/BulletDynamics/Vehicle/btWheelInfo.cpp | 56 - .../src/BulletDynamics/Vehicle/btWheelInfo.h | 119 - .../GpuSoftBodySolvers/CPU/btSoftBodySolverData.h | 744 ------ .../CPU/btSoftBodySolver_CPU.cpp | 979 ------- .../GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.h | 370 --- hkl3d/bullet/src/BulletMultiThreaded/HeapManager.h | 117 - .../src/BulletMultiThreaded/Makefile.original | 187 -- hkl3d/bullet/src/BulletMultiThreaded/MiniCL.cpp | 517 ---- .../BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp | 74 - .../BulletMultiThreaded/MiniCLTask/MiniCLTask.h | 62 - .../BulletMultiThreaded/MiniCLTaskScheduler.cpp | 519 ---- .../src/BulletMultiThreaded/MiniCLTaskScheduler.h | 194 -- .../src/BulletMultiThreaded/PlatformDefinitions.h | 99 - .../src/BulletMultiThreaded/PosixThreadSupport.cpp | 399 --- .../src/BulletMultiThreaded/PosixThreadSupport.h | 142 - .../src/BulletMultiThreaded/PpuAddressSpace.h | 37 - .../SequentialThreadSupport.cpp | 169 -- .../BulletMultiThreaded/SequentialThreadSupport.h | 96 - .../SpuCollisionObjectWrapper.cpp | 48 - .../SpuCollisionObjectWrapper.h | 40 - .../SpuCollisionTaskProcess.cpp | 317 --- .../BulletMultiThreaded/SpuCollisionTaskProcess.h | 163 -- .../SpuContactManifoldCollisionAlgorithm.cpp | 69 - .../SpuContactManifoldCollisionAlgorithm.h | 120 - .../src/BulletMultiThreaded/SpuDoubleBuffer.h | 126 - .../bullet/src/BulletMultiThreaded/SpuFakeDma.cpp | 215 -- hkl3d/bullet/src/BulletMultiThreaded/SpuFakeDma.h | 135 - .../SpuGatheringCollisionDispatcher.cpp | 275 -- .../SpuGatheringCollisionDispatcher.h | 72 - .../src/BulletMultiThreaded/SpuLibspe2Support.cpp | 257 -- .../src/BulletMultiThreaded/SpuLibspe2Support.h | 180 -- .../SpuNarrowPhaseCollisionTask/Box.h | 167 -- .../SpuCollisionShapes.cpp | 302 --- .../SpuCollisionShapes.h | 128 - .../SpuContactResult.cpp | 248 -- .../SpuNarrowPhaseCollisionTask/SpuContactResult.h | 106 - .../SpuConvexPenetrationDepthSolver.h | 51 - .../SpuGatheringCollisionTask.cpp | 1412 ---------- .../SpuGatheringCollisionTask.h | 140 - .../SpuNarrowPhaseCollisionTask/SpuLocalSupport.h | 19 - .../SpuMinkowskiPenetrationDepthSolver.cpp | 348 --- .../SpuMinkowskiPenetrationDepthSolver.h | 48 - .../SpuPreferredPenetrationDirections.h | 70 - .../SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp | 1160 --------- .../SpuNarrowPhaseCollisionTask/boxBoxDistance.h | 65 - .../SpuNarrowPhaseCollisionTask/readme.txt | 1 - .../SpuSampleTask/SpuSampleTask.cpp | 214 -- .../SpuSampleTask/SpuSampleTask.h | 54 - .../BulletMultiThreaded/SpuSampleTask/readme.txt | 1 - .../BulletMultiThreaded/SpuSampleTaskProcess.cpp | 222 -- .../src/BulletMultiThreaded/SpuSampleTaskProcess.h | 153 -- hkl3d/bullet/src/BulletMultiThreaded/SpuSync.h | 149 -- hkl3d/bullet/src/BulletMultiThreaded/TrbDynBody.h | 79 - hkl3d/bullet/src/BulletMultiThreaded/TrbStateVec.h | 339 --- .../src/BulletMultiThreaded/Win32ThreadSupport.cpp | 446 ---- .../src/BulletMultiThreaded/Win32ThreadSupport.h | 138 - .../BulletMultiThreaded/btGpu3DGridBroadphase.cpp | 590 ----- .../BulletMultiThreaded/btGpu3DGridBroadphase.h | 138 - .../btGpu3DGridBroadphaseSharedCode.h | 430 --- .../btGpu3DGridBroadphaseSharedDefs.h | 61 - .../btGpu3DGridBroadphaseSharedTypes.h | 67 - .../bullet/src/BulletMultiThreaded/btGpuDefines.h | 211 -- .../src/BulletMultiThreaded/btGpuUtilsSharedCode.h | 55 - .../src/BulletMultiThreaded/btGpuUtilsSharedDefs.h | 52 - .../btParallelConstraintSolver.cpp | 1389 ---------- .../btParallelConstraintSolver.h | 285 -- .../btThreadSupportInterface.cpp | 22 - .../BulletMultiThreaded/btThreadSupportInterface.h | 85 - .../vectormath/scalar/cpp/boolInVec.h | 225 -- .../vectormath/scalar/cpp/floatInVec.h | 343 --- .../vectormath/scalar/cpp/mat_aos.h | 1630 ------------ .../vectormath/scalar/cpp/quat_aos.h | 433 --- .../vectormath/scalar/cpp/vec_aos.h | 1426 ---------- .../vectormath/scalar/cpp/vectormath_aos.h | 1872 ------------- .../src/BulletMultiThreaded/vectormath2bullet.h | 73 - hkl3d/bullet/src/LinearMath/btAabbUtil2.h | 236 -- hkl3d/bullet/src/LinearMath/btAlignedAllocator.cpp | 182 -- hkl3d/bullet/src/LinearMath/btAlignedAllocator.h | 107 - hkl3d/bullet/src/LinearMath/btAlignedObjectArray.h | 471 ---- hkl3d/bullet/src/LinearMath/btConvexHull.cpp | 1174 --------- hkl3d/bullet/src/LinearMath/btConvexHull.h | 241 -- .../bullet/src/LinearMath/btConvexHullComputer.cpp | 2749 -------------------- hkl3d/bullet/src/LinearMath/btConvexHullComputer.h | 103 - hkl3d/bullet/src/LinearMath/btDefaultMotionState.h | 40 - hkl3d/bullet/src/LinearMath/btGeometryUtil.cpp | 185 -- hkl3d/bullet/src/LinearMath/btGeometryUtil.h | 42 - hkl3d/bullet/src/LinearMath/btHashMap.h | 450 ---- hkl3d/bullet/src/LinearMath/btIDebugDraw.h | 417 --- hkl3d/bullet/src/LinearMath/btList.h | 73 - hkl3d/bullet/src/LinearMath/btMatrix3x3.h | 771 ------ hkl3d/bullet/src/LinearMath/btMinMax.h | 71 - hkl3d/bullet/src/LinearMath/btMotionState.h | 40 - hkl3d/bullet/src/LinearMath/btPoolAllocator.h | 121 - hkl3d/bullet/src/LinearMath/btQuadWord.h | 180 -- hkl3d/bullet/src/LinearMath/btQuaternion.h | 433 --- hkl3d/bullet/src/LinearMath/btQuickprof.cpp | 565 ---- hkl3d/bullet/src/LinearMath/btQuickprof.h | 196 -- hkl3d/bullet/src/LinearMath/btRandom.h | 42 - hkl3d/bullet/src/LinearMath/btScalar.h | 522 ---- hkl3d/bullet/src/LinearMath/btSerializer.cpp | 832 ------ hkl3d/bullet/src/LinearMath/btSerializer.h | 655 ----- hkl3d/bullet/src/LinearMath/btStackAlloc.h | 116 - hkl3d/bullet/src/LinearMath/btTransform.h | 307 --- hkl3d/bullet/src/LinearMath/btTransformUtil.h | 228 -- hkl3d/bullet/src/LinearMath/btVector3.h | 766 ------ hkl3d/bullet/src/Makefile.am | 358 --- hkl3d/bullet/src/btBulletCollisionCommon.h | 69 - hkl3d/bullet/src/btBulletDynamicsCommon.h | 49 - hkl3d/hkl3d.cpp | 8 +- tests/Makefile.am | 6 +- 388 files changed, 28 insertions(+), 104964 deletions(-) commit e9a43f6129700071fcef8dfb345e70b8d6147b1b Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 15:59:18 2014 +0100 prepare the NEWS file for the release NEWS | 67 ++++++++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 25 deletions(-) commit e2f678644e9af6d578fac2fde590602d45a726f3 Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 13:01:19 2014 +0100 remove an inconsistancy between the C-API and the bindings. Documentation/sphinx/source/bindings/python.py | 2 +- Documentation/sphinx/source/pyplots/trajectory_full.py | 2 +- hkl/hkl-binding-private.h | 6 ------ hkl/hkl-binding.c | 15 --------------- hkl/hkl-geometry.c | 2 +- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 2 +- 7 files changed, 5 insertions(+), 26 deletions(-) commit 367d2097d1b9fedc81a592211b5bc89d14b9f1de Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 12:52:07 2014 +0100 export the pseudo_axes_names in the bindings hkl/hkl-binding-private.h | 3 +++ hkl/hkl-binding.c | 16 ++++++++++++++++ hkl/hkl-pseudoaxis.c | 2 +- tests/bindings/python.py | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) commit 67a98667c8ce8f2f5a8f2ad1cd5ca844a51f8a3f Author: Picca Frédéric-Emmanuel Date: Tue Dec 23 11:47:33 2014 +0100 fix the documentation now the check target verify that the embeded python code is ok Documentation/sphinx/Makefile.am | 21 +- Documentation/sphinx/source/bindings/python.py | 29 +- Documentation/sphinx/source/development.rst | 477 +++------------------ .../sphinx/source/pyplots/trajectory_full.py | 27 +- .../sphinx/source/pyplots/trajectory_simple.py | 27 +- hkl/hkl-engine-template.c | 164 +++---- 6 files changed, 210 insertions(+), 535 deletions(-) commit d00d42f4e40a1791ab8bed61718db5531e799269 Author: Picca Frédéric-Emmanuel Date: Fri Dec 19 16:55:16 2014 +0100 improve the template hkl/hkl-engine-template.c | 235 ++++++---------------------------------------- 1 file changed, 29 insertions(+), 206 deletions(-) commit d58be53dd40166a4d72dd2f286e8ed604eba27a5 Author: Picca Frédéric-Emmanuel Date: Fri Dec 19 16:23:08 2014 +0100 add a diffractometer's template file for documentation this file is also compiled during the build process to ensure that it can be used by users to add a new diffractometer. hkl/Makefile.am | 4 + hkl/hkl-engine-template.c | 399 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 403 insertions(+) commit ecd831108d721bd5ee6b52aa998b9749332029db Author: Picca Frédéric-Emmanuel Date: Thu Dec 18 15:24:14 2014 +0100 dedup the k6c and k4c kappa_2_kappap method hkl/hkl-engine-k4c.c | 17 ----------------- hkl/hkl-engine-k6c.c | 17 ----------------- hkl/hkl-pseudoaxis-common-eulerians-private.h | 3 +++ hkl/hkl-pseudoaxis-common-eulerians.c | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 34 deletions(-) commit fc35217aaedf58b2ca7525a7e3728ecac07b6045 Author: Picca Frédéric-Emmanuel Date: Thu Dec 18 09:43:42 2014 +0100 just reorganisation and add a few missing static hkl/Makefile.am | 2 +- hkl/hkl-engine-e4c.c | 12 +- hkl/hkl-engine-e6c.c | 4 +- hkl/hkl-engine-k4c.c | 129 ++++++++++----------- hkl/hkl-engine-k6c.c | 8 +- ...engine-petra3.c => hkl-engine-petra3-p09-eh2.c} | 84 +++++++------- hkl/hkl-engine-soleil-sirius-turret.c | 2 +- hkl/hkl-engine-soleil-sixs-med.c | 10 +- hkl/hkl-engine-zaxis.c | 38 +++--- 9 files changed, 136 insertions(+), 153 deletions(-) commit 1352e6bf6a24f8aa438469ccbd09ccccc5d0ee5b Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 21:54:58 2014 +0100 put the zaxis diffractometers into it's own file hkl/Makefile.am | 3 +- ...l-pseudoaxis-zaxis-hkl.c => hkl-engine-zaxis.c} | 65 +++++++++++++++++++--- hkl/hkl-factory.c | 62 --------------------- hkl/hkl-pseudoaxis-zaxis-private.h | 33 ----------- 4 files changed, 57 insertions(+), 106 deletions(-) commit 2db9162ac2e2aa1b50879f7649836312cb17bdfa Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 21:30:02 2014 +0100 put the soleil sixs med diffractometers into it's own file hkl/Makefile.am | 3 +- ...eil-sixs-med.c => hkl-engine-soleil-sixs-med.c} | 174 +++++++++++++++++++-- hkl/hkl-factory.c | 156 ------------------ hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 38 ----- 4 files changed, 159 insertions(+), 212 deletions(-) commit e67fbc0262bcc4c94339ee4c247a74ce3c160d55 Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 21:19:02 2014 +0100 put the soleil sirius turret diffractometers into it's own file hkl/Makefile.am | 3 +- hkl/hkl-engine-soleil-sirius-turret.c | 105 ++++++++++++++++++++++ hkl/hkl-factory.c | 51 ----------- hkl/hkl-pseudoaxis-soleil-sirius-turret-private.h | 33 ------- hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 57 ------------ 5 files changed, 106 insertions(+), 143 deletions(-) commit 7c648a7fbe0b3bcc4a14bdee6c03d8ff0463efcc Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 21:06:43 2014 +0100 put the petra3 diffractometers into it's own file hkl/Makefile.am | 3 +- ...pseudoaxis-petra3-hkl.c => hkl-engine-petra3.c} | 62 +++++++++++++++++++--- hkl/hkl-factory.c | 51 ------------------ hkl/hkl-pseudoaxis-petra3-private.h | 33 ------------ 4 files changed, 55 insertions(+), 94 deletions(-) commit 9cf81ca9c2c63c8827e90cc091974c4ab8cc2a79 Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 16:24:57 2014 +0100 put the k6c diffractometer family into it's own file hkl/Makefile.am | 4 +- hkl/{hkl-pseudoaxis-k6c-hkl.c => hkl-engine-k6c.c} | 245 +++++++++++++++++++-- hkl/hkl-factory.c | 157 ------------- hkl/hkl-pseudoaxis-k6c-private.h | 37 ---- hkl/hkl-pseudoaxis-k6c-psi.c | 93 -------- 5 files changed, 229 insertions(+), 307 deletions(-) commit c23090e19788f8cd3eec59414f6203a68c265c31 Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 15:56:15 2014 +0100 put the e6c diffractometer into it's own file hkl/Makefile.am | 4 +- hkl/{hkl-pseudoaxis-e6c-hkl.c => hkl-engine-e6c.c} | 105 +++++++++++++++++++-- hkl/hkl-factory.c | 53 ----------- hkl/hkl-pseudoaxis-e6c-private.h | 34 ------- hkl/hkl-pseudoaxis-e6c-psi.c | 66 ------------- 5 files changed, 96 insertions(+), 166 deletions(-) commit e94032963201554debe6a18715979446e489a504 Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 15:38:05 2014 +0100 put all the k4c diffractometer into it's own file hkl/Makefile.am | 4 +- ...{hkl-pseudoaxis-k4cv-hkl.c => hkl-engine-k4c.c} | 153 +++++++++++++++++++-- hkl/hkl-factory.c | 83 ----------- hkl/hkl-pseudoaxis-k4cv-private.h | 34 ----- hkl/hkl-pseudoaxis-k4cv-psi.c | 65 --------- 5 files changed, 143 insertions(+), 196 deletions(-) commit a6bd565e4bdcc828e3871b28bb0832316718bf76 Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 15:20:58 2014 +0100 put the e4c diffractometer family into it's own file hkl/Makefile.am | 4 +- hkl/hkl-engine-e4c.c | 344 +++++++++++++++++++++++++++++++++++++++ hkl/hkl-factory.c | 141 ---------------- hkl/hkl-pseudoaxis-e4c-hkl.c | 178 -------------------- hkl/hkl-pseudoaxis-e4c-private.h | 34 ---- hkl/hkl-pseudoaxis-e4c-psi.c | 57 ------- 6 files changed, 345 insertions(+), 413 deletions(-) commit cc40715bbacbe6ce1c254b5d6e8ba2d84d9d983e Author: Picca Frédéric-Emmanuel Date: Wed Dec 17 14:50:39 2014 +0100 put the twoC diffractometer into it's own file hkl/Makefile.am | 1 + hkl/hkl-engine-2c.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-factory-private.h | 10 ++++++++ hkl/hkl-factory.c | 50 +------------------------------------ 4 files changed, 75 insertions(+), 49 deletions(-) commit 71cbece4b394829bc2220771e295060c5338f470 Author: Picca Frédéric-Emmanuel Date: Tue Oct 14 21:38:09 2014 +0200 add the begining of an haskell implementation of hkl contrib/hkl.lhs | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) commit 3eddf7c4262bd318d0c48f53f1036ca8dc67afd9 Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 19:11:40 2014 +0200 now the gui can find the .ui files when installed TODO | 4 +- gui/Makefile.am | 1 + gui/hkl-gui-3d.c | 97 +++++------ gui/hkl-gui-macros.h | 52 ++++++ gui/hkl-gui-pseudoaxes.c | 23 +-- gui/hkl-gui.c | 433 ++++++++++++++++++++++++----------------------- gui/hkl-gui.h | 8 - gui/pseudo.ui | 12 +- 8 files changed, 340 insertions(+), 290 deletions(-) commit eead998dafd5f68519ce8652fff7f9c681bef63b Author: Picca Frédéric-Emmanuel Date: Fri Oct 10 16:43:13 2014 +0200 wip logging (unactivated for now) it was just added for a test in the tango devices. TODO | 3 ++- hkl/Makefile.am | 1 + hkl/hkl-geometry.c | 10 +++++----- hkl/hkl-pseudoaxis.c | 42 ++++++++++++++++++++++++++++++++++-------- 4 files changed, 42 insertions(+), 14 deletions(-) commit 1f2928a9a6f3d2c4550bbce6dc3b4763ab6d1a49 Merge: b2c47317 db074524 Author: Picca Frédéric-Emmanuel Date: Wed Oct 8 21:23:52 2014 +0200 Merge branch 'maint' into next commit b2c473171eb9286b8d6e4df5313c9d50cd120680 Author: Picca Frédéric-Emmanuel Date: Tue Oct 7 15:05:13 2014 +0200 editing the pseudo axes panel display the raised errors. gui/hkl-gui-pseudoaxes.c | 63 +++++++++++++++------------------------ gui/hkl-gui-pseudoaxes.h | 2 ++ gui/hkl-gui.c | 77 ++++++++++++++++++++++++++++++++++-------------- 3 files changed, 80 insertions(+), 62 deletions(-) commit a68301e83ceead0cb67d25fa70b90de0daeb6776 Author: Picca Frédéric-Emmanuel Date: Tue Oct 7 14:08:32 2014 +0200 display the error when no computation is done. gui/hkl-gui.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit dacfd2e4e0f4a3ec8ae62b3ea96ed3681eff7b9a Author: Picca Frédéric-Emmanuel Date: Fri Oct 3 16:33:41 2014 +0200 remove all the c++ part of the gui. configure.ac | 3 - gui/Makefile.am | 18 +- gui/{hkl3d/hkl3d-gui-gl.c => hkl-gui-3d-gl.c} | 2 +- gui/{hkl3d/hkl3d-gui-gl.h => hkl-gui-3d-gl.h} | 0 gui/hkl-gui-3d.c | 14 +- gui/hkl-gui-3d.h | 57 -- gui/hkl-gui.c | 12 +- gui/hkl3d/GL_ShapeDrawer.cpp | 805 -------------------------- gui/hkl3d/GL_ShapeDrawer.h | 111 ---- gui/hkl3d/Makefile.am | 47 -- gui/hkl3d/hkl3d-gui-model.cpp | 407 ------------- gui/hkl3d/hkl3d-gui-model.h | 121 ---- gui/hkl3d/hkl3d-gui-scene.cpp | 486 ---------------- gui/hkl3d/hkl3d-gui-scene.h | 120 ---- gui/hkl3d/hkl3d-gui-view.cpp | 222 ------- gui/hkl3d/hkl3d-gui-view.h | 109 ---- gui/hkl3d/texture.c | 42 -- gui/hkl3d/texture.h | 30 - gui/hkl3d/trackball.c | 323 ----------- gui/hkl3d/trackball.h | 77 --- 20 files changed, 22 insertions(+), 2984 deletions(-) commit 49736e293ed32ff36586e13fd89ab98e029b9a93 Author: Picca Frédéric-Emmanuel Date: Fri Oct 3 14:52:02 2014 +0200 add a few togglebutton for the 3d view (reset and aabb) gui/3d.ui | 32 +++++++++++++ gui/hkl-gui-3d.c | 138 +++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 135 insertions(+), 35 deletions(-) commit 57ceace375f76278e23696a0e0b863c114793a4a Author: Picca Frédéric-Emmanuel Date: Thu Oct 2 21:42:28 2014 +0200 draw the aabb boxes gui/hkl-gui-3d.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d.cpp | 14 ++++++++++ hkl3d/hkl3d.h | 1 + 3 files changed, 97 insertions(+) commit 0521911a1a13a46f7ae1a776bb7d6575294325d5 Author: Picca Frédéric-Emmanuel Date: Mon Sep 29 16:48:39 2014 +0200 better 3d shift (should be enhanced) gui/hkl-gui-3d.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 695f4cc3d3006d5ee6b02c74b08758575a20f493 Author: Picca Frédéric-Emmanuel Date: Mon Sep 29 16:38:43 2014 +0200 add draw_collision gui/hkl-gui-3d.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 83 insertions(+), 6 deletions(-) commit 78e8e2c0916e1c2a641108f770f4d01a1a91f3b9 Author: Picca Frédéric-Emmanuel Date: Mon Sep 29 15:42:57 2014 +0200 add the 3d object selection gui/hkl-gui-3d.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 2 deletions(-) commit 3dac7b9288d0d49ec588af6fcd4c036d52941268 Author: Picca Frédéric-Emmanuel Date: Mon Sep 29 15:10:17 2014 +0200 wip migrate 3d scene to C gui/3d.ui | 12 +- gui/Makefile.am | 5 +- gui/hkl-gui-3d.c | 344 ++++++++++++++++++++++++++++++++++++++++++++++- gui/hkl3d/hkl3d-gui-gl.c | 8 +- 4 files changed, 355 insertions(+), 14 deletions(-) commit ecc3f6f0b791b642c1122ddd130d63cc09a708c8 Author: Picca Frédéric-Emmanuel Date: Thu Sep 25 09:49:42 2014 +0200 re-add the c++ 3d part gui/3d.ui | 179 ++-- gui/Makefile.am | 27 +- gui/g3d.vapi | 55 -- gui/gl.vapi | 1402 ---------------------------- gui/glu.vapi | 301 ------ gui/glut.vapi | 611 ------------ gui/glx.vapi | 202 ---- gui/gtkglext-1.0.vapi | 373 -------- gui/hkl-gui-3d.c | 508 ++++++++++ gui/hkl-gui-3d.h | 109 +++ gui/hkl-gui-3d.vala | 271 ------ gui/hkl-gui-pseudoaxes.c | 1 - gui/hkl-gui.c | 339 +++---- gui/hkl-gui.h | 8 + gui/hkl-gui.vala | 2075 ----------------------------------------- gui/hkl.vapi | 190 ---- gui/hkl3d-gui-model.vala | 527 ----------- gui/hkl3d-gui-scene.vala | 373 -------- gui/hkl3d-gui-view.vala | 218 ----- gui/hkl3d.vapi | 110 --- gui/hkl3d/Makefile.am | 24 +- gui/hkl3d/hkl3d-gui-model.cpp | 407 ++++++++ gui/hkl3d/hkl3d-gui-model.h | 121 +++ gui/hkl3d/hkl3d-gui-scene.cpp | 486 ++++++++++ gui/hkl3d/hkl3d-gui-scene.h | 120 +++ gui/hkl3d/hkl3d-gui-view.cpp | 222 +++++ gui/hkl3d/hkl3d-gui-view.h | 109 +++ gui/trackball.vapi | 36 - hkl3d/hkl3d.cpp | 15 + 29 files changed, 2354 insertions(+), 7065 deletions(-) commit db074524dc45608f238add5caf1d0bf2bfdc5c66 Author: Picca Frédéric-Emmanuel Date: Mon Sep 22 14:54:11 2014 +0200 release the 4.0.9 version hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 41a52f52cbbe3345484a99f1d341e7241a19bd16 Author: Picca Frédéric-Emmanuel Date: Mon Sep 22 14:46:00 2014 +0200 fix the SOLEIL sirius kappa géométrie pseudo axes. delta is in the horizontal plan (not the vertical one). hkl/hkl-pseudoaxis-factory.c | 9 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 214 +++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-k6c-psi.c | 17 ++++ hkl/hkl-pseudoaxis-k6c.h | 3 + 4 files changed, 242 insertions(+), 1 deletion(-) commit b3c9d6029fc81d973ae027750a47f1b9f9996bb1 Merge: ce4c831e 79e37666 Author: Picca Frédéric-Emmanuel Date: Mon Sep 15 16:38:07 2014 +0200 wip Merge branch 'next' into gtk Conflicts: gui/hkl-gui-3d.cpp gui/hkl-gui-3d.h gui/hkl-gui-callbacks.cpp gui/hkl-gui-modelcolumns.h gui/hkl-gui-pseudoaxes.cpp gui/hkl-gui-pseudoaxes.h gui/hkl-gui.cpp gui/hkl-gui.h gui/hkl3d/hkl3d-gui-model.cpp gui/hkl3d/hkl3d-gui-model.h gui/hkl3d/hkl3d-gui-scene.cpp gui/hkl3d/hkl3d-gui-scene.h gui/hkl3d/hkl3d-gui-view.cpp gui/hkl3d/hkl3d-gui-view.h hkl.h hkl/hkl-binding-private.h hkl/hkl-pseudoaxis-common-hkl.c hkl/hkl-pseudoaxis.c hkl/hkl-sample.c tests/hkl-sample-t.c commit 79e37666ba17baba279fa000c95fe5c781698e6c Author: Picca Frédéric-Emmanuel Date: Fri Sep 12 14:06:36 2014 +0200 fix the refactoring script scripts/refactoring | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a9b9635ef9331156a24492094d5b0a90eb0df7a3 Author: Picca Frédéric-Emmanuel Date: Thu Sep 11 11:54:57 2014 +0200 refactor using detector.cocci @@ @@ -hkl_detector_idx_set(...); @@ identifier detector; @@ HklDetector *detector; ... - 0 == detector->idx + 1 == detector->idx gui/hkl-gui.cpp | 1 - hkl.h | 2 -- hkl/hkl-detector.c | 14 +------------- scripts/detector.cocci | 14 ++++++++++++++ scripts/refactoring | 6 +++--- tests/bindings/python.py | 6 ------ tests/bindings/trajectory.py | 1 - tests/hkl-bench-t.c | 2 -- tests/hkl-detector-t.c | 9 +++++++-- tests/hkl-pseudoaxis-e4ch-t.c | 6 ------ tests/hkl-pseudoaxis-e4cv-t.c | 6 ------ tests/hkl-pseudoaxis-e6c-t.c | 5 ----- tests/hkl-pseudoaxis-k4cv-t.c | 3 --- tests/hkl-pseudoaxis-k6c-t.c | 4 ---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 -- tests/hkl-pseudoaxis-t.c | 3 --- tests/hkl-pseudoaxis-zaxis-t.c | 1 - tests/hkl-sample-t.c | 7 ------- 18 files changed, 25 insertions(+), 67 deletions(-) commit e9883e5f6082f987ece17721037ba55d6a46eff1 Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 13:29:24 2014 +0200 simplify the axes_names_get unit test and use the TEST_FOREACH_MODE macro tests/hkl-pseudoaxis-t.c | 66 ++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 38 deletions(-) commit a21f43b3711baeed8b786988c5ede352262b7255 Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 13:15:46 2014 +0200 add the HklEngine parameters unit tests hkl/hkl-pseudoaxis.c | 6 +++-- tests/hkl-pseudoaxis-t.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 3 deletions(-) commit c6f5a20a1753f97497419800c0678e05e47a24aa Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 12:09:51 2014 +0200 add the hkl_egnine_current_mode_get/set tests tests/hkl-pseudoaxis-t.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) commit 5f9c48a39607c8e81fcd5492772a64a766bc8795 Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 11:43:25 2014 +0200 refactor using diag.cocci @@ identifier res; expression E; @@ ( res &= DIAG(E); | -res &= E; +res &= DIAG(E); ) scripts/diag.cocci | 13 ++++++++ scripts/refactoring | 6 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 28 ++++++++--------- tests/hkl-pseudoaxis-e4cv-t.c | 30 +++++++++--------- tests/hkl-pseudoaxis-e6c-t.c | 52 ++++++++++++++------------------ tests/hkl-pseudoaxis-k4cv-t.c | 10 +++--- tests/hkl-pseudoaxis-k6c-t.c | 14 ++++----- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-unit-t.c | 9 +++--- tests/hkl3d-test-t.c | 21 +++++++------ 11 files changed, 98 insertions(+), 89 deletions(-) commit ad332d062ff7427fb7e7d908e0855ad1bbb32dde Author: Picca Frédéric-Emmanuel Date: Mon Sep 8 11:24:59 2014 +0200 move the DAIG macro into the hkl-tap.h header. This way it will be possible to use it everywhere in the tests tests/hkl-pseudoaxis-t.c | 10 ---------- tests/tap/hkl-tap.h | 11 +++++++++++ 2 files changed, 11 insertions(+), 10 deletions(-) commit d5614417c569af92e6358f2a9df4a40b979178ba Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 21:40:42 2014 +0200 refactor using OK.cocci @@ identifier res, f; expression E; @@ ( res &= DIAG(E); | -res &= E; +res &= DIAG(E); ) hkl/hkl-pseudoaxis-auto-private.h | 1 + hkl/hkl-pseudoaxis-common-hkl-private.h | 1 + scripts/OK.cocci | 13 ++++ scripts/refactoring | 3 +- tests/hkl-pseudoaxis-t.c | 103 ++++++++++++++++---------------- 5 files changed, 69 insertions(+), 52 deletions(-) commit de7e77691f3d20382b973a24ee53769e118961f2 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 16:24:26 2014 +0200 better diagnostique during test for loop tests/Makefile.am | 2 +- tests/hkl-pseudoaxis-t.c | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 26 insertions(+), 22 deletions(-) commit a610d680e148a1c2d1c547f744081979c1eb8f79 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 13:33:27 2014 +0200 modify the refactoring path to use cocci files scripts/refactoring | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit ceb1f416ce75ee0e1a0ffad6d36a9ff330eb03c4 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 13:25:11 2014 +0200 rewrite the HklEngine check for all mode tests/hkl-pseudoaxis-t.c | 249 +++++++++++++++++++++-------------------------- 1 file changed, 112 insertions(+), 137 deletions(-) commit 6e6f0eb789fe922222c0463c43f129ecf0f2f9a1 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 10:29:52 2014 +0200 add the hkl_engine_initialized unit test tests/hkl-pseudoaxis-t.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) commit 967a5f8d8948b4b4293efbbcd31407fa95802b16 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 10:07:45 2014 +0200 rework the hkl_engine_capabilities unit test tests/hkl-pseudoaxis-t.c | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) commit e272b8bbb7c776b110f0da8aeb8e0d5510a44ef1 Author: Picca Frédéric-Emmanuel Date: Tue Sep 2 09:49:04 2014 +0200 add hkl_engine_pseudo_axis_get GError unit test tests/hkl-pseudoaxis-t.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) commit 10479d607cff479a4936d76777be5b80243dbfdf Author: Picca Frédéric-Emmanuel Date: Mon Sep 1 16:57:43 2014 +0200 rework and add the pseudoaxis GError unit test tests/hkl-pseudoaxis-t.c | 230 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 160 insertions(+), 70 deletions(-) commit 22c69ea33f567b1acc7183d6f8ecfc88c0e90c4e Author: Picca Frédéric-Emmanuel Date: Mon Sep 1 15:32:47 2014 +0200 fix warning in lattice test tests/hkl-lattice-t.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ee1d127dd40ccae39e303d2cf8bcfb6e13de072e Author: Picca Frédéric-Emmanuel Date: Mon Sep 1 15:29:19 2014 +0200 use is_matrix everywhere first use of the coccinelle software to do this change, except the #include addition. scripts/is_matrix.spatch | 14 ++++++++++++++ tests/hkl-lattice-t.c | 5 +++-- tests/hkl-quaternion-t.c | 3 ++- tests/hkl-sample-t.c | 14 +++++++------- 4 files changed, 26 insertions(+), 10 deletions(-) commit 4fc8bf5ec1d9824a242c55ebb7b4114db4a332ac Author: Picca Frédéric-Emmanuel Date: Mon Sep 1 14:40:48 2014 +0200 add hkl-sample unit test with GError hkl/hkl-sample-private.h | 13 +++ hkl/hkl-sample.c | 210 +++++++++++++++++++++++++++++++---------------- tests/hkl-sample-t.c | 161 +++++++++++++++++++++++++----------- tests/tap/hkl-tap.c | 23 ++++++ tests/tap/hkl-tap.h | 3 + 5 files changed, 288 insertions(+), 122 deletions(-) commit 96c7b0eb5ce747b56ac447a25bbedff5c4ff9459 Author: Picca Frédéric-Emmanuel Date: Sat Aug 9 10:32:44 2014 +0200 get rid of all warning generated by unuser-result in hkl-sample-t tests/hkl-sample-t.c | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) commit 6559108a0e7f2e46bd5ad23db2f670e4ef4e288e Author: Picca Frédéric-Emmanuel Date: Fri Aug 8 17:30:04 2014 +0200 add HKL_WARN_UNUSED_RESULT for the public API if an hkl user does not use a return value from a method marked with this attribute, a warning is displayed during the compilation. for now only the method throwing a GError are instrumented. It is a good reminder to deal with the GError. BEWARE this warn is not activated for the libhkl compilation itself using the CFLAGS -Wno-unused-result. hkl.h | 73 +++++++++++++++++++++++++++++++-------------------------- hkl/Makefile.am | 3 ++- 2 files changed, 42 insertions(+), 34 deletions(-) commit a1aed94bc236e6ddcecdd9ea8739bfc2f64765c7 Author: Picca Frédéric-Emmanuel Date: Fri Aug 8 16:46:19 2014 +0200 typo tests/hkl-lattice-t.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 305d3d741e4b8804793f0ac41316b325244a9a64 Author: Picca Frédéric-Emmanuel Date: Fri Aug 8 16:44:32 2014 +0200 Add all the lattice Error check hkl/hkl-parameter-private.h | 1 + tests/hkl-lattice-t.c | 132 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 103 insertions(+), 30 deletions(-) commit 405bc6411a7cb6e5ce3588f7dc5f9db9ae46cadb Author: Picca Frédéric-Emmanuel Date: Fri Aug 8 14:13:02 2014 +0200 replace g_return_val_if_fail by hkl_error when relevant In case of programming error the programm stop with an abort. Using gdb you can obtain a backtrace with 'bt' command. This hkl_error is like assert except that it is not possible to get rid of them with NDEBUG. Recoverable errors (not due to programming error) are reported via the usual GError system. hkl/hkl-axis.c | 4 ++-- hkl/hkl-binding.c | 2 +- hkl/hkl-geometry.c | 12 ++++++------ hkl/hkl-lattice.c | 18 +++++++++--------- hkl/hkl-macros-private.h | 6 ++++++ hkl/hkl-parameter-private.h | 4 ++-- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-private.h | 4 ++-- hkl/hkl-pseudoaxis.c | 24 ++++++++++++------------ hkl/hkl-sample.c | 10 +++++----- tests/hkl-geometry-t.c | 3 +-- 15 files changed, 51 insertions(+), 46 deletions(-) commit 3d3ab4a7358c1b691c0c1bcc1025a8019ab83957 Author: Picca Frédéric-Emmanuel Date: Thu Aug 7 16:48:16 2014 +0200 add all HklGeometry error tests hkl/hkl-geometry.c | 3 ++- tests/hkl-geometry-t.c | 47 +++++++++++++++++++++++++++++------------------ 2 files changed, 31 insertions(+), 19 deletions(-) commit 8d5f2194fe38d13dc4c7928d02bf95d45247b59b Author: Picca Frédéric-Emmanuel Date: Thu Aug 7 16:08:20 2014 +0200 add all HklParameter tests tests/hkl-parameter-t.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 412cbe4a8582de54112ceedafcbeb040188f468e Author: Picca Frédéric-Emmanuel Date: Thu Aug 7 14:37:29 2014 +0200 rename hkl_factory_axes_names_get -> hkl_geometry_axes_names_get gui/hkl-gui-modelcolumns.h | 4 ++-- gui/hkl-gui.cpp | 8 ++++---- hkl.h | 7 ++++--- hkl/hkl-binding-private.h | 7 ++++--- hkl/hkl-binding.c | 18 +++++++++--------- hkl/hkl-factory-private.h | 12 ++++++++++++ hkl/hkl-factory.c | 25 ------------------------- hkl/hkl-geometry.c | 14 ++++++++++++++ tests/bindings/python.py | 8 +------- tests/bindings/trajectory.py | 8 ++++---- tests/hkl-pseudoaxis-t.c | 5 ++++- 11 files changed, 58 insertions(+), 58 deletions(-) commit defdc993693be7c258bfb3b06e2c3d9f499a8043 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 11 16:36:55 2014 +0200 add an unit test for the soleil med 2+3 diffractometer. hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 33 ++++++++++++++- hkl/hkl-pseudoaxis-common-hkl.c | 4 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 12 +++--- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 69 +++++++++++++++++++++++++++++++- 5 files changed, 108 insertions(+), 12 deletions(-) commit 46ca796c6d93bd594389214c07e1a2fbe1e558b1 Author: cristal Date: Thu Jul 10 13:49:20 2014 +0200 remove the hkl_engine_list_pseudo_axis_get_by_name hkl.h | 4 ---- hkl/hkl-pseudoaxis.c | 35 ----------------------------------- 2 files changed, 39 deletions(-) commit a9a85663ed5dd8686b0cd84aa7bd07be4069e482 Author: cristal Date: Thu Jul 10 10:55:09 2014 +0200 hkl_geometry_new_copy is now part of the public API hkl.h | 2 ++ hkl/hkl-geometry-private.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) commit e716485b9b6338c3d004e0a4199879b2d713c1c8 Author: cristal Date: Thu Jul 10 10:47:47 2014 +0200 now the hkl_lattice_get/get take an HklUnitEnum. hkl.h | 5 ++-- hkl/hkl-lattice.c | 53 +++++++++++++++++++++++---------- tests/bindings/python.py | 22 +++++++------- tests/bindings/trajectory.py | 12 ++++---- tests/hkl-lattice-t.c | 70 +++++++++++++++++++++++--------------------- tests/hkl-sample-t.c | 5 ++-- 6 files changed, 96 insertions(+), 71 deletions(-) commit 1b5e517ce4fd7bc0509ed022b525c96aa4b35a4a Author: cristal Date: Wed Jul 9 16:09:40 2014 +0200 change the HklEngineInfo pseudo_axes from const char * -> darray_string hkl/hkl-pseudoaxis-common-eulerians.c | 4 +--- hkl/hkl-pseudoaxis-common-hkl.c | 3 +-- hkl/hkl-pseudoaxis-common-psi.c | 3 +-- hkl/hkl-pseudoaxis-common-q.c | 9 +++------ hkl/hkl-pseudoaxis-private.h | 3 +-- hkl/hkl-pseudoaxis.c | 10 +++++----- 6 files changed, 12 insertions(+), 20 deletions(-) commit ccf4b097757a9a2ddefc6c8f79fe26f290eb5901 Author: cristal Date: Wed Jul 9 15:43:47 2014 +0200 remove hkl_return_val_if_fail by its glib counterpart hkl/hkl-macros-private.h | 2 -- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-private.h | 4 ++-- hkl/hkl-pseudoaxis.c | 2 +- 7 files changed, 7 insertions(+), 9 deletions(-) commit 766277463be6e0c0c25b3a78d5ccfe1bbe523954 Author: cristal Date: Wed Jul 9 15:05:33 2014 +0200 change the signature of the hkl_factory_axes_names_get now it return a darray_string gui/hkl-gui-modelcolumns.h | 8 ++++---- gui/hkl-gui.cpp | 42 +++++++++++++++++++++++------------------- hkl.h | 3 +-- hkl/hkl-binding-private.h | 3 +++ hkl/hkl-binding.c | 21 +++++++++++++++++++++ hkl/hkl-factory.c | 26 +++++++++++--------------- tests/hkl-pseudoaxis-t.c | 16 ++++++++-------- 7 files changed, 71 insertions(+), 48 deletions(-) commit 2acc64c6600646e2d57ddd95736013a5b1a791a8 Author: cristal Date: Wed Jul 9 14:28:21 2014 +0200 rename hkl_factory_name -> hkl_factory_name_get for consistency gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) commit d76ba68747646261b77a6c557cfad50d4aea7f41 Author: cristal Date: Wed Jul 9 14:12:44 2014 +0200 rework the sample reflection part to be similar to HklGeometryList rename hkl_sample_first_reflection_get -> hkl_sample_reflections_first_get rename hkl_sample_next_reflection_get -> hkl_sample_reflections_next_get add hkl_sample_n_reflections_get which return the number of reflection in the list HKL_SAMPLE_REFLECTIONS_FOREACH maxro to iterate over the reflections gui/hkl-gui-callbacks.cpp | 4 ++-- gui/hkl-gui.cpp | 4 ++-- hkl.h | 14 ++++++++++---- hkl/hkl-sample-private.h | 1 + hkl/hkl-sample.c | 27 ++++++++++++++++++++++----- tests/hkl-sample-t.c | 13 +++++++++---- 6 files changed, 46 insertions(+), 17 deletions(-) commit 0e23d738e1d4fbfd7077ca9ee08cdb5ace7d957a Author: cristal Date: Wed Jul 9 13:46:28 2014 +0200 make the HklDetector copy constructor public hkl.h | 6 ++++-- hkl/hkl-detector-private.h | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) commit 95b91bb89bd1ecb3f5fe103566eebd6f254f542a Author: cristal Date: Wed Jul 9 12:39:45 2014 +0200 add hkl_geometry_axes_values_get/set hkl.h | 9 ++++++++ hkl/hkl-binding-private.h | 12 ++++------ hkl/hkl-binding.c | 33 ++++----------------------- hkl/hkl-geometry.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis.c | 6 ++--- tests/hkl-geometry-t.c | 33 ++++++++++++++------------- 6 files changed, 96 insertions(+), 55 deletions(-) commit dd5f6536e6516ed01a0cf9e1dd2872c66932b5e3 Author: cristal Date: Wed Jul 9 10:47:23 2014 +0200 (add hkl_engine_axes_names_get now an HklEngine can return a darray_string of the axes involve where reading or writing on it. hkl.h | 9 +++- hkl/hkl-binding-private.h | 4 ++ hkl/hkl-binding.c | 21 ++++++++++ hkl/hkl-macros-private.h | 2 + hkl/hkl-pseudoaxis-auto-private.h | 9 ++-- hkl/hkl-pseudoaxis-auto.c | 13 +++--- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 26 ++++++------ hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 6 +-- hkl/hkl-pseudoaxis-e4c-hkl.c | 21 ++++++---- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 65 ++++++++++++++++------------ hkl/hkl-pseudoaxis-e6c-psi.c | 5 ++- hkl/hkl-pseudoaxis-k4cv-hkl.c | 12 +++--- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 70 ++++++++++++++++++------------- hkl/hkl-pseudoaxis-k6c-psi.c | 5 ++- hkl/hkl-pseudoaxis-petra3-hkl.c | 35 +++++++++------- hkl/hkl-pseudoaxis-private.h | 32 +++++++------- hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 5 ++- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 52 +++++++++++++---------- hkl/hkl-pseudoaxis-zaxis-hkl.c | 7 ++-- hkl/hkl-pseudoaxis.c | 43 +++++++++++++++---- tests/bindings/python.py | 6 ++- tests/hkl-pseudoaxis-t.c | 59 +++++++++++++++++++++++++- 26 files changed, 344 insertions(+), 171 deletions(-) commit 4553826ef069e20bce620bdd212d5b91b1b63187 Author: cristal Date: Tue Jul 8 14:41:05 2014 +0200 move the HklPseudoAxis class into the hkl-pseudoaxis-private part hkl.h | 1 - hkl/hkl-pseudoaxis-private.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) commit 9abe58b717c585d67e225678233d5eb27f3e1164 Author: Picca Frédéric-Emmanuel Date: Sun Jul 6 22:02:36 2014 +0200 (wip) rework of the pseudo axis part now the set method return the HklGeometryList. It is now the responsability of the API user to release the memory by calling hkl_geometry_list_free on the returned geometries. fix the hkl-pseudoaxis-e6c petra2_3 test by using hkl_method_set_hkl_real for the psi_constant_vertical_mode_operations. This setter compute also a set of solutions by using the z-axis strategie which consist in a rotation of the sample around the latest axis and a fit of the detector position. move the hkl_pseudo...randomize methodes into the hkl tap library instead of the public API. - Add the HklEngine Capabilities you can get them with hkl_engine_capabilities_get this tells you if an HklEngine is READABLE, WRITABLE, INITIALIZABLE - add a new hkl_engine_initialized_get/set if an HklEngine is INITIALIZABLE you can set the value to TRUE. depending on the Mode, this can changes the mode parameters, save the diffractometer current position, ... Documentation/sphinx/source/development.rst | 2 +- Documentation/sphinx/source/test.py | 2 +- gui/hkl-gui-callbacks.cpp | 27 +- gui/hkl-gui-pseudoaxes.cpp | 20 +- gui/hkl-gui.cpp | 19 +- gui/hkl-gui.h | 2 +- hkl.h | 66 +-- hkl/hkl-binding-private.h | 4 - hkl/hkl-binding.c | 59 --- hkl/hkl-geometry-private.h | 2 - hkl/hkl-pseudoaxis-auto-private.h | 89 ++-- hkl/hkl-pseudoaxis-auto.c | 38 +- hkl/hkl-pseudoaxis-common-eulerians.c | 12 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 16 +- hkl/hkl-pseudoaxis-common-hkl.c | 116 +++--- hkl/hkl-pseudoaxis-common-psi.c | 79 ++-- hkl/hkl-pseudoaxis-common-q.c | 12 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 34 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 65 +-- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 30 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 72 ++-- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 35 +- hkl/hkl-pseudoaxis-private.h | 622 +++++++++++++++++++++------- hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 5 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 15 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 10 +- hkl/hkl-pseudoaxis.c | 509 ++++++----------------- tests/bindings/Makefile.am | 2 +- tests/bindings/python.py | 33 +- tests/bindings/trajectory.py | 11 +- tests/hkl-bench-t.c | 55 +-- tests/hkl-pseudoaxis-e4ch-t.c | 108 ++--- tests/hkl-pseudoaxis-e4cv-t.c | 101 ++--- tests/hkl-pseudoaxis-e6c-t.c | 144 +++---- tests/hkl-pseudoaxis-k4cv-t.c | 80 ++-- tests/hkl-pseudoaxis-k6c-t.c | 109 +++-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 19 +- tests/hkl-pseudoaxis-t.c | 70 +++- tests/hkl-pseudoaxis-zaxis-t.c | 15 +- tests/tap/hkl-tap.c | 57 ++- tests/tap/hkl-tap.h | 8 +- 45 files changed, 1442 insertions(+), 1340 deletions(-) commit 54c71cf33c5525b5fec485cc4e05173f7f502f9c Author: Frédéric-Emmanuel PICCA Date: Mon Jun 23 10:36:28 2014 +0200 run ccan-update this is to prepare the inclusion of htable in the futur. hkl/ccan/Makefile.am | 22 ++-- hkl/ccan/autodata/autodata.h | 3 +- hkl/ccan/compiler/compiler.h | 30 +++-- hkl/ccan/container_of/container_of.h | 2 +- hkl/ccan/list/list.h | 91 ++++++++++---- hkl/ccan/str/LICENSE | 1 + hkl/ccan/str/debug.c | 108 +++++++++++++++++ hkl/ccan/str/str.c | 13 ++ hkl/ccan/str/str.h | 228 +++++++++++++++++++++++++++++++++++ hkl/ccan/str/str_debug.h | 30 +++++ 10 files changed, 484 insertions(+), 44 deletions(-) commit 94cb46bab46a187f6a507269f7d31b1906693687 Author: Picca Frédéric-Emmanuel Date: Sun Jun 22 23:32:42 2014 +0200 Rework the unit part of the hkl library Prepare the final API for the inclusion of the udunits library. This will allow to set the user unit prefered output of the instrumented methods. until now this was mostly used for radian to degree convertion. But we can imagine other convertions in the futur. the binding API also changed gui/hkl-gui-callbacks.cpp | 66 ++++++------- gui/hkl-gui-modelcolumns.h | 2 +- gui/hkl-gui-pseudoaxes.cpp | 11 ++- gui/hkl-gui.cpp | 128 +++++++++++++------------ hkl.h | 59 +++++++----- hkl/hkl-axis.c | 25 +---- hkl/hkl-binding-private.h | 17 ++-- hkl/hkl-binding.c | 59 +++++------- hkl/hkl-factory.c | 30 +++--- hkl/hkl-geometry-private.h | 3 - hkl/hkl-geometry.c | 53 +++++------ hkl/hkl-lattice.c | 123 ++++++++++++++---------- hkl/hkl-parameter-private.h | 26 ++---- hkl/hkl-parameter.c | 155 +++++++++++++++---------------- hkl/hkl-pseudoaxis-auto.c | 1 + hkl/hkl-pseudoaxis-common-eulerians.c | 9 +- hkl/hkl-pseudoaxis-common-hkl.c | 20 ++-- hkl/hkl-pseudoaxis-private.h | 3 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 +- hkl/hkl-pseudoaxis.c | 17 ++-- hkl/hkl-sample.c | 86 ++++++++--------- hkl/hkl-unit-private.h | 2 +- tests/bindings/python.py | 31 +++---- tests/bindings/trajectory.py | 18 ++-- tests/hkl-axis-t.c | 64 ++++++------- tests/hkl-bench-t.c | 10 +- tests/hkl-detector-t.c | 4 +- tests/hkl-geometry-t.c | 65 ++++++------- tests/hkl-lattice-t.c | 131 +++++++++++++------------- tests/hkl-parameter-t.c | 12 +-- tests/hkl-pseudoaxis-e4ch-t.c | 62 +++++++------ tests/hkl-pseudoaxis-e4cv-t.c | 52 +++++------ tests/hkl-pseudoaxis-e6c-t.c | 54 +++++------ tests/hkl-pseudoaxis-k4cv-t.c | 12 +-- tests/hkl-pseudoaxis-k6c-t.c | 19 ++-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 12 ++- tests/hkl-pseudoaxis-t.c | 7 +- tests/hkl-pseudoaxis-zaxis-t.c | 10 +- tests/hkl-sample-t.c | 94 ++++++++++++------- tests/hkl3d-test-t.c | 27 +++--- tests/tap/hkl-tap.c | 4 +- 41 files changed, 817 insertions(+), 772 deletions(-) commit 44e92c5c15ab05fd489e47bac08bb7b2527c6f25 Author: Picca Frédéric-Emmanuel Date: Sun Jun 22 08:25:14 2014 +0200 Add all the GError were it can be usefull for the final API also solve two bugs - an wrong #if -> #ifdef for debugging purpose - another ... variadic issue int -> float in the bench test I should really remove this hkl_geometry_set_values_unit_v method for the final API Documentation/api/hkl-docs.sgml | 3 +- gui/hkl-gui-callbacks.cpp | 93 +++++++++------ gui/hkl-gui-pseudoaxes.cpp | 16 +-- gui/hkl-gui.cpp | 12 +- hkl.h | 119 ++++++++++++------- hkl/hkl-axis.c | 31 +++-- hkl/hkl-binding-private.h | 3 +- hkl/hkl-binding.c | 14 ++- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 17 ++- hkl/hkl-geometry.c | 120 ++++++++++++++++--- hkl/hkl-lattice-private.h | 11 ++ hkl/hkl-lattice.c | 168 +++++++++++++++++--------- hkl/hkl-parameter-private.h | 40 +++++-- hkl/hkl-parameter.c | 53 ++++++--- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-private.h | 41 ++++--- hkl/hkl-pseudoaxis.c | 198 ++++++++++++++++++++++--------- hkl/hkl-sample-private.h | 11 ++ hkl/hkl-sample.c | 106 +++++++++++++---- tests/hkl-axis-t.c | 10 +- tests/hkl-bench-t.c | 19 +-- tests/hkl-geometry-t.c | 102 ++++++++++++++-- tests/hkl-lattice-t.c | 57 +++++++-- tests/hkl-parameter-t.c | 33 +++++- tests/hkl-pseudoaxis-e4ch-t.c | 55 ++++----- tests/hkl-pseudoaxis-e4cv-t.c | 55 ++++----- tests/hkl-pseudoaxis-e6c-t.c | 63 +++++----- tests/hkl-pseudoaxis-k4cv-t.c | 30 ++--- tests/hkl-pseudoaxis-k6c-t.c | 43 +++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 8 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 11 +- tests/hkl-sample-t.c | 121 ++++++++++--------- 34 files changed, 1139 insertions(+), 530 deletions(-) commit bb13ab9901ae5f55f360ad01428f7a9192d603ed Author: Frédéric-Emmanuel PICCA Date: Tue Jun 17 16:03:37 2014 +0200 use TRUE/FALSE from Glib instead of HKL_TRUE/FALSE Documentation/sphinx/source/development.rst | 6 ++-- hkl.h | 3 -- hkl/hkl-axis.c | 20 ++++++------ hkl/hkl-detector.c | 4 +-- hkl/hkl-geometry.c | 16 ++++----- hkl/hkl-interval.c | 6 ++-- hkl/hkl-lattice.c | 34 ++++++++++---------- hkl/hkl-matrix.c | 12 +++---- hkl/hkl-parameter-private.h | 16 ++++----- hkl/hkl-parameter.c | 4 +-- hkl/hkl-pseudoaxis-auto-private.h | 4 +-- hkl/hkl-pseudoaxis-auto.c | 24 +++++++------- hkl/hkl-pseudoaxis-common-eulerians.c | 12 +++---- hkl/hkl-pseudoaxis-common-hkl.c | 24 +++++++------- hkl/hkl-pseudoaxis-common-psi.c | 16 ++++----- hkl/hkl-pseudoaxis-common-q.c | 6 ++-- hkl/hkl-pseudoaxis-private.h | 12 +++---- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 ++-- hkl/hkl-pseudoaxis.c | 50 ++++++++++++++--------------- hkl/hkl-quaternion.c | 6 ++-- hkl/hkl-sample.c | 16 ++++----- hkl/hkl-source.c | 6 ++-- hkl/hkl-unit.c | 12 +++---- hkl/hkl-vector.c | 24 +++++++------- tests/hkl-axis-t.c | 22 ++++++------- tests/hkl-bench-t.c | 2 +- tests/hkl-geometry-t.c | 10 +++--- tests/hkl-interval-t.c | 28 ++++++++-------- tests/hkl-lattice-t.c | 16 ++++----- tests/hkl-matrix-t.c | 14 ++++---- tests/hkl-parameter-t.c | 36 ++++++++++----------- tests/hkl-pseudoaxis-e4ch-t.c | 24 +++++++------- tests/hkl-pseudoaxis-e4cv-t.c | 24 +++++++------- tests/hkl-pseudoaxis-e6c-t.c | 24 +++++++------- tests/hkl-pseudoaxis-k4cv-t.c | 12 +++---- tests/hkl-pseudoaxis-k6c-t.c | 16 ++++----- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 4 +-- tests/hkl-pseudoaxis-t.c | 12 +++---- tests/hkl-pseudoaxis-zaxis-t.c | 6 ++-- tests/hkl-quaternion-t.c | 18 +++++------ tests/hkl-sample-t.c | 10 +++--- tests/hkl-source-t.c | 6 ++-- tests/hkl-unit-t.c | 4 +-- tests/hkl-vector-t.c | 4 +-- tests/tap/hkl-tap.c | 2 +- 45 files changed, 315 insertions(+), 318 deletions(-) commit 394a29feb6579a84260d8aef04911c074be3e0a3 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 17 15:57:59 2014 +0200 rename HKL_BEGIN/END_DECLS -> G_BEGIN/END_DECLS Documentation/sphinx/source/development.rst | 4 ++-- hkl.h | 13 ++----------- hkl/hkl-axis-private.h | 4 ++-- hkl/hkl-binding-private.h | 4 ++-- hkl/hkl-detector-private.h | 4 ++-- hkl/hkl-factory-private.h | 4 ++-- hkl/hkl-geometry-private.h | 4 ++-- hkl/hkl-interval-private.h | 6 +++--- hkl/hkl-lattice-private.h | 4 ++-- hkl/hkl-macros-private.h | 6 +++--- hkl/hkl-matrix-private.h | 4 ++-- hkl/hkl-parameter-private.h | 4 ++-- hkl/hkl-pseudoaxis-auto-private.h | 4 ++-- hkl/hkl-pseudoaxis-common-eulerians-private.h | 4 ++-- hkl/hkl-pseudoaxis-common-psi-private.h | 4 ++-- hkl/hkl-pseudoaxis-common-q-private.h | 4 ++-- hkl/hkl-pseudoaxis-e4c-private.h | 6 +++--- hkl/hkl-pseudoaxis-e6c-private.h | 6 +++--- hkl/hkl-pseudoaxis-k4cv-private.h | 6 +++--- hkl/hkl-pseudoaxis-k6c-private.h | 6 +++--- hkl/hkl-pseudoaxis-petra3-private.h | 6 +++--- hkl/hkl-pseudoaxis-private.h | 4 ++-- hkl/hkl-pseudoaxis-soleil-sirius-turret-private.h | 4 ++-- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 6 +++--- hkl/hkl-pseudoaxis-zaxis-private.h | 6 +++--- hkl/hkl-quaternion-private.h | 6 +++--- hkl/hkl-sample-private.h | 4 ++-- hkl/hkl-source-private.h | 6 +++--- hkl/hkl-unit-private.h | 6 +++--- hkl/hkl-vector-private.h | 6 +++--- tests/tap/hkl-tap.h | 4 ++-- 31 files changed, 75 insertions(+), 84 deletions(-) commit 9859742e524517d100451a7da65fb552d0a4165d Author: Frédéric-Emmanuel PICCA Date: Tue Jun 17 15:45:50 2014 +0200 rename HklError -> GError now GLib is a required dependency. It was tested with the RHEL4 version 2.3.4. So this should not be problematic Documentation/sphinx/source/development.rst | 5 +- NEWS | 2 +- configure.ac | 4 +- gui/hkl-gui.cpp | 4 +- gui/hkl-gui.h | 2 +- hkl.h | 25 +-- hkl/Makefile.am | 13 +- hkl/hkl-axis.c | 4 +- hkl/hkl-binding.c | 20 +- hkl/hkl-error-private.h | 72 ------ hkl/hkl-error.c | 335 ---------------------------- hkl/hkl-parameter-private.h | 8 +- hkl/hkl-parameter.c | 4 +- hkl/hkl-pseudoaxis-auto-private.h | 21 +- hkl/hkl-pseudoaxis-auto.c | 24 +- hkl/hkl-pseudoaxis-common-eulerians.c | 25 ++- hkl/hkl-pseudoaxis-common-hkl-private.h | 6 +- hkl/hkl-pseudoaxis-common-hkl.c | 43 +++- hkl/hkl-pseudoaxis-common-psi.c | 48 +++- hkl/hkl-pseudoaxis-common-q.c | 6 +- hkl/hkl-pseudoaxis-private.h | 33 ++- hkl/hkl-pseudoaxis.c | 64 ++++-- hkl/hkl-types.c | 13 -- hkl/hkl-types.h | 4 - tests/Makefile.am | 6 +- tests/hkl-error-t.c | 122 ---------- tests/tap/Makefile.am | 4 +- 27 files changed, 242 insertions(+), 675 deletions(-) commit af5978fce0dc396e8c4a4abefeefacd8b0c8e832 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 12:33:46 2014 +0200 rename hkl_engine_parameters_set -> hkl_engine_parameters_values_set hkl.h | 6 +++--- hkl/hkl-pseudoaxis.c | 8 ++++---- tests/hkl-pseudoaxis-e4ch-t.c | 14 +++++++------- tests/hkl-pseudoaxis-e4cv-t.c | 16 ++++++++-------- tests/hkl-pseudoaxis-e6c-t.c | 16 ++++++++-------- 5 files changed, 30 insertions(+), 30 deletions(-) commit 0ac9e22294c48615e8a817c4c1c646fa8f872c64 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 13:05:27 2014 +0200 add a few test to the python binding for engine parameters hkl/hkl-binding-private.h | 4 ++-- tests/bindings/python.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) commit 5270c9f771f99d620845fa0485256c93c1fcd9c7 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 11:11:58 2014 +0200 fix the refactoring script to work directly form its directory scripts/refactoring | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 3dc6576ac7241752d2b9d8aa42e98801e1fd2a76 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 13:01:03 2014 +0200 rename hkl_engine_modes_get -> hkl_engine_modes_names_get add also a gdb target to the binding test (this way it is easyer to debug segfaut in the python part. gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl.h | 2 +- hkl/hkl-binding-private.h | 4 ++-- hkl/hkl-binding.c | 6 +++--- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/Makefile.am | 5 ++++- tests/bindings/python.py | 8 ++++---- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 6 +++--- tests/hkl-pseudoaxis-e4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-e6c-t.c | 4 ++-- tests/hkl-pseudoaxis-k4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-k6c-t.c | 6 +++--- tests/hkl-pseudoaxis-t.c | 2 +- 15 files changed, 35 insertions(+), 32 deletions(-) commit cccb4c2b169cd3098fd744d1d0774c9f79dfb1a0 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 10:38:24 2014 +0200 fix the distcheck target with a working graphic card it is now possible to regenerate the documentation figures. Documentation/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 442ebce07ded84269838435f847d739b1ad243ff Author: Picca Frédéric-Emmanuel Date: Wed Jun 4 18:59:20 2014 +0200 comment and todo for optimisation on my T40 this todo seems to produce a big increase of time in the bench hkl.h | 1 + 1 file changed, 1 insertion(+) commit 28eac129b2c804d29793722602fa688cd6cc105e Author: Picca Frédéric-Emmanuel Date: Wed Jun 4 12:16:58 2014 +0200 get rid of all the hkl_parameter_list methods hkl/hkl-binding.c | 92 ++++------------------------- hkl/hkl-parameter-private.h | 29 +--------- hkl/hkl-parameter.c | 125 ---------------------------------------- hkl/hkl-pseudoaxis-common-psi.c | 12 ++-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 30 ++-------- hkl/hkl-pseudoaxis-k6c-hkl.c | 29 +++------- hkl/hkl-pseudoaxis-private.h | 14 ++++- hkl/hkl-pseudoaxis.c | 15 ++++- 8 files changed, 57 insertions(+), 289 deletions(-) commit bebff6f4681465f2f96ac10a5d757b159813478e Author: Picca Frédéric-Emmanuel Date: Wed Jun 4 09:48:48 2014 +0200 forgot one file hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 624e2ec04d191c347fa6a69b68c863a91afce8ea Author: Picca Frédéric-Emmanuel Date: Wed Jun 4 09:44:07 2014 +0200 upgrading copyright year from 2013 to 2014 gui/hkl-gui-3d.cpp | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-callbacks.cpp | 2 +- gui/hkl-gui-modelcolumns.h | 2 +- gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.cpp | 2 +- gui/hkl-gui.h | 2 +- gui/hkl3d/GL_ShapeDrawer.cpp | 2 +- gui/hkl3d/GL_ShapeDrawer.h | 2 +- gui/hkl3d/hkl3d-gui-model.cpp | 2 +- gui/hkl3d/hkl3d-gui-model.h | 2 +- gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- gui/hkl3d/hkl3d-gui-scene.h | 2 +- gui/hkl3d/hkl3d-gui-view.cpp | 2 +- gui/hkl3d/hkl3d-gui-view.h | 2 +- gui/main.cpp | 2 +- hkl.h | 2 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-private.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-factory-private.h | 2 +- hkl/hkl-factory.c | 2 +- hkl/hkl-geometry-private.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-lattice-private.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-macros-private.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e4c-private.h | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e6c-private.h | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k4cv-private.h | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-private.h | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 2 +- hkl/hkl-pseudoaxis-petra3-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 2 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-quaternion-private.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-vector-private.h | 2 +- hkl/hkl-vector.c | 2 +- hkl3d/hkl3d.h | 2 +- tests/hkl-axis-t.c | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-error-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 2 +- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl-tap.h | 2 +- 105 files changed, 105 insertions(+), 105 deletions(-) commit c06a86c321e3eef55d63e996bca18b00652c4f38 Author: Picca Frédéric-Emmanuel Date: Wed Jun 4 09:43:49 2014 +0200 add the update_copyright_year script this script set the last copyright year with the current one. scripts/update_copyright_year | 8 ++++++++ 1 file changed, 8 insertions(+) commit 3f2786fd9791eb2aef1cef2c8ae1edfdb04aefc6 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 2 11:29:48 2014 +0200 rename hkl_engine_parameters_get -> hkl_engine_parameters_names_get gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-binding.c | 6 +++--- hkl/hkl-pseudoaxis.c | 4 ++-- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 4 ++-- tests/hkl-pseudoaxis-k6c-t.c | 4 ++-- 11 files changed, 17 insertions(+), 17 deletions(-) commit 6a36918327b8228ef213259bf40cf17d0ed54ec5 Author: Picca Frédéric-Emmanuel Date: Wed May 21 18:41:06 2014 +0200 rename hkl_engine_pseudo_axes_get -> hkl_engine_pseudo_axes_names_get gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/hkl-pseudoaxis-t.c | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) commit 6fb3c8fe217e1db4a457151496027559a3b84732 Author: Picca Frédéric-Emmanuel Date: Wed May 21 18:23:50 2014 +0200 typo hkl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d18d82f2f49405a068c8b5d922ce95cbaa301089 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 15:48:20 2014 +0200 HklParameterList is now private gui/hkl-gui-callbacks.cpp | 10 ++- gui/hkl-gui-modelcolumns.h | 8 +- gui/hkl-gui-pseudoaxes.cpp | 12 +-- gui/hkl-gui.cpp | 26 +++---- gui/hkl-gui.h | 2 +- hkl.h | 38 +++++----- hkl/Makefile.am | 5 +- hkl/hkl-binding-private.h | 12 +-- hkl/hkl-binding.c | 29 +++++++ hkl/hkl-geometry-private.h | 1 + hkl/hkl-parameter-private.h | 21 +++++- hkl/hkl-pseudoaxis-private.h | 5 +- hkl/hkl-pseudoaxis.c | 126 ++++++++++++++++++++++++++++++- tests/bindings/python.py | 9 ++- tests/hkl-bench-t.c | 21 +++--- tests/hkl-pseudoaxis-e4ch-t.c | 34 ++++----- tests/hkl-pseudoaxis-e4cv-t.c | 30 +++----- tests/hkl-pseudoaxis-e6c-t.c | 55 ++++++++------ tests/hkl-pseudoaxis-k4cv-t.c | 19 ++--- tests/hkl-pseudoaxis-k6c-t.c | 26 +++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 17 ++--- tests/hkl-pseudoaxis-t.c | 40 +++++----- tests/hkl-pseudoaxis-zaxis-t.c | 6 +- tests/tap/hkl-tap.c | 17 ++--- 24 files changed, 354 insertions(+), 215 deletions(-) commit 5c5ad1d7c527d46b69322204ee135d34d6eff416 Author: Frédéric-Emmanuel PICCA Date: Thu Apr 17 15:54:35 2014 +0200 now the HklMode struct is a private struct Documentation/Makefile.am | 4 +- Documentation/sphinx/source/development.rst | 1 + gui/hkl-gui-callbacks.cpp | 8 +- gui/hkl-gui-modelcolumns.h | 6 +- gui/hkl-gui-pseudoaxes.cpp | 52 ++++----- gui/hkl-gui-pseudoaxes.h | 32 +++--- gui/hkl-gui.cpp | 18 ++-- hkl.h | 34 +++--- hkl/hkl-binding-private.h | 10 +- hkl/hkl-binding.c | 33 +++--- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 6 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 2 +- hkl/hkl-pseudoaxis-private.h | 19 +++- hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-pseudoaxis.c | 160 ++++++++++++++++++++-------- tests/bindings/python.py | 25 +---- tests/bindings/trajectory.py | 4 +- tests/hkl-bench-t.c | 25 +++-- tests/hkl-pseudoaxis-e4ch-t.c | 55 ++++------ tests/hkl-pseudoaxis-e4cv-t.c | 65 +++++------ tests/hkl-pseudoaxis-e6c-t.c | 101 ++++++++---------- tests/hkl-pseudoaxis-k4cv-t.c | 39 ++++--- tests/hkl-pseudoaxis-k6c-t.c | 49 +++++---- tests/hkl-pseudoaxis-t.c | 10 +- 35 files changed, 434 insertions(+), 352 deletions(-) commit 6ce8ae801e350d525c4e4b9907b58a6bca51851e Author: Frédéric-Emmanuel PICCA Date: Wed Apr 2 10:59:52 2014 +0200 add the reactoring script you can use it to rename a method refactoring scripts/refactoring | 2 ++ 1 file changed, 2 insertions(+) commit fac96a7df303d40bc6bf199907655afa01a23985 Author: Frédéric-Emmanuel PICCA Date: Wed Apr 2 10:58:59 2014 +0200 use list and design an iterator interface for the HklGeometryList no more darray for the HklGeometryLis structure. it was not efficient. now the interface use hkl_geometry_list_n_items_get hkl_geometry_list_items_first_get hkl_geometry_list_items_next_get and a foreach macro HKL_GEOMETRY_LIST_FOREACH gui/hkl-gui.cpp | 9 +- hkl.h | 16 ++- hkl/hkl-binding.c | 7 +- hkl/hkl-geometry-private.h | 5 +- hkl/hkl-geometry.c | 167 ++++++++++++++++++++----------- hkl/hkl-pseudoaxis-common-hkl.c | 15 ++- hkl/hkl-pseudoaxis.c | 16 ++- tests/bindings/trajectory.py | 3 +- tests/hkl-bench-t.c | 7 +- tests/hkl-geometry-t.c | 16 +-- tests/hkl-pseudoaxis-e4ch-t.c | 28 +++--- tests/hkl-pseudoaxis-e4cv-t.c | 28 +++--- tests/hkl-pseudoaxis-e6c-t.c | 48 ++++----- tests/hkl-pseudoaxis-k4cv-t.c | 35 +++---- tests/hkl-pseudoaxis-k6c-t.c | 36 +++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 11 +- tests/hkl-pseudoaxis-t.c | 7 +- tests/hkl-pseudoaxis-zaxis-t.c | 7 +- 18 files changed, 251 insertions(+), 210 deletions(-) commit edeb17ef82ef9f7c27bd827214d0279ee84a5ea8 Author: Picca Frédéric-Emmanuel Date: Thu Mar 20 17:02:09 2014 +0100 remove unsafe hkl_geometry_axes_get method replace it with hkl_factory_axes_get which return a list of axis names. fix also the python.py unit test for the Factory part. gui/hkl-gui-callbacks.cpp | 6 ++-- gui/hkl-gui-modelcolumns.h | 10 +++---- gui/hkl-gui.cpp | 50 ++++++++++++++++++-------------- gui/hkl-gui.h | 1 + hkl.h | 5 ++-- hkl/hkl-factory.c | 48 ++++++++++++++++++++++++++++++ hkl/hkl-geometry.c | 5 ---- tests/Makefile.am | 2 -- tests/bindings/python.py | 25 +++++++++++----- tests/hkl-pseudoaxis-e6c-t.c | 18 +++++++----- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 8 ++--- tests/hkl3d-test-t.c | 4 +-- 12 files changed, 121 insertions(+), 61 deletions(-) commit 76993475c362342c902dd82243ff5804217f2107 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 15:43:52 2014 +0100 remove a bunch of warning const_cast<> arounf the HklSampleReflections gui/hkl-gui-callbacks.cpp | 3 ++- gui/hkl-gui.cpp | 5 +++-- hkl/hkl-binding.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) commit fa784e202ff87b4114d7d952088abe668791eddc Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 13:36:53 2014 +0100 rename hkl_engine_list_get_pseudo_axis_by_name -> hkl_engine_list_pseudo_axis_get_by_name hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 566ef8dc5b0fe30f187392367be4675462c12712 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 12:02:38 2014 +0100 rename hkl_engine_list_get_by_name -> hkl_engine_list_engine_get_by_name hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 4 ++-- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 12 ++++++------ tests/hkl-pseudoaxis-e4cv-t.c | 12 ++++++------ tests/hkl-pseudoaxis-e6c-t.c | 14 +++++++------- tests/hkl-pseudoaxis-k4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-k6c-t.c | 8 ++++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- 12 files changed, 36 insertions(+), 36 deletions(-) commit 71e7da00f8d2c904aa1301d8272a6343110363bb Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 11:56:31 2014 +0100 rename hkl_engine_list_get_geometry -> hkl_engine_list_geometry_get hkl.h | 4 ++-- hkl/hkl-pseudoaxis.c | 4 ++-- tests/hkl-pseudoaxis-t.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) commit b2efda75fdce92d74420ea6eee51c2ee5428ee7a Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 11:48:05 2014 +0100 rename hkl_engine_list_geometries -> hkl_engine_list_geometries_get gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 8 ++++---- tests/hkl-pseudoaxis-e4cv-t.c | 8 ++++---- tests/hkl-pseudoaxis-e6c-t.c | 8 ++++---- tests/hkl-pseudoaxis-k4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-k6c-t.c | 6 +++--- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- 14 files changed, 28 insertions(+), 28 deletions(-) commit a4a8814235f59aab6c2296e5303f2606f712155a Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 11:40:40 2014 +0100 rename hkl_engine_list_engines -> hkl_engine_list_engines_get gui/hkl-gui.cpp | 4 ++-- hkl.h | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 6 +++--- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) commit 227ad3603429fe598968e45e652a14c5981d4a4e Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 11:23:06 2014 +0100 rename hkl_engine_engines -> hkl_engine_engines_get gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/trajectory.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) commit 0858f1dcc42aa53ba42bc8794767ff3601c8ca78 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 11:14:42 2014 +0100 rename hkl_engine_modes -> hkl_engine_modes_get gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl.h | 2 +- hkl/hkl-binding-private.h | 9 ++++----- hkl/hkl-binding.c | 8 ++++---- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 4 ++-- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 6 +++--- tests/hkl-pseudoaxis-e4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-e6c-t.c | 4 ++-- tests/hkl-pseudoaxis-k4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-k6c-t.c | 6 +++--- tests/hkl-pseudoaxis-t.c | 2 +- 14 files changed, 32 insertions(+), 33 deletions(-) commit 7158a6bdf484696589eb7c4e71df0fe039aa41fd Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 10:44:59 2014 +0100 rename hkl_engine_mode -> hkl_engine_mode_get gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 6 +++--- tests/hkl-pseudoaxis-e4cv-t.c | 6 +++--- tests/hkl-pseudoaxis-e6c-t.c | 16 ++++++++-------- 8 files changed, 21 insertions(+), 21 deletions(-) commit 66a7e7f28731c7e778762dd942216a3614c34f06 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 10:36:25 2014 +0100 rename hkl_engine_pseudo_axes -> hkl_engine_pseudo_axes_get gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 8 ++++---- tests/hkl-pseudoaxis-e4cv-t.c | 8 ++++---- tests/hkl-pseudoaxis-e6c-t.c | 8 ++++---- tests/hkl-pseudoaxis-k4cv-t.c | 4 ++-- tests/hkl-pseudoaxis-k6c-t.c | 4 ++-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/tap/hkl-tap.c | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) commit 6a3e4632f9362edf69cb069cedabeec75f8ce5c0 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 10:30:30 2014 +0100 rename hkl_engine_name -> hkl_engine_name_get gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) commit 8ca435103c900ad83eaeeb2a8de9775cf42e9841 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 10:24:06 2014 +0100 rename hkl_mode_parameters -> hkl_mode_parameters_get gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 8 ++++---- tests/hkl-pseudoaxis-e4cv-t.c | 8 ++++---- tests/hkl-pseudoaxis-e6c-t.c | 18 +++++++++--------- tests/hkl-pseudoaxis-k4cv-t.c | 4 ++-- tests/hkl-pseudoaxis-k6c-t.c | 4 ++-- tests/hkl-pseudoaxis-t.c | 2 +- 12 files changed, 29 insertions(+), 29 deletions(-) commit 757c9520625bfe42d2ca845173ba5af9483973fe Author: Frédéric-Emmanuel PICCA Date: Mon Mar 10 10:14:48 2014 +0100 rename hkl_mode_name -> hkl_mode_name_get INSTALL | 12 ++++++------ gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl.h | 2 +- hkl/hkl-pseudoaxis.c | 4 ++-- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 4 ++-- tests/hkl-bench-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 4 ++-- tests/hkl-pseudoaxis-t.c | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) commit 82bcd55e1d7159633be79697f1bf6f001cb1a930 Author: Picca Frédéric-Emmanuel Date: Thu Feb 27 22:04:36 2014 +0100 release the 4.0.8 version configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc01bb4eb17b8e817ab3f930cb2508e1515b7c5c Merge: c66e4376 50622f45 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 27 16:57:24 2014 +0100 Merge branch 'maint' into next Conflicts: TODO hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry-private.h hkl/hkl-pseudoaxis-factory.c hkl/pom.xml commit 50622f450b08645952775ed54ead6bb97c484c96 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 27 14:47:07 2014 +0100 add the SOLEIL SIRIUS KAPPA diffractometer .../source/diffractometers/soleil_sirius_kappa.rst | 179 +++++++++++++++++++++ Documentation/sphinx/source/index.rst | 1 + hkl/hkl-geometry-factory.c | 24 +++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-factory.c | 2 + hkl/pom.xml | 2 +- test/hkl-test-pseudoaxis.c | 9 ++ 9 files changed, 220 insertions(+), 3 deletions(-) commit 0b84fdc2a32c34b7daaa88685f2c58392444b750 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 25 14:55:28 2014 +0100 add the soleil sirius turret documentation .../diffractometers/soleil_sirius_turret.rst | 61 ++++++++++++++++++++++ Documentation/sphinx/source/index.rst | 1 + 2 files changed, 62 insertions(+) commit ce4c831ece2e34b4a2958e149a1f74c8995c8420 Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 14:46:42 2014 +0100 implemente the ux_uy_uz toggled gui/ghkl.ui | 9 ++++ gui/hkl-gui.c | 140 +++++++++++++--------------------------------------------- 2 files changed, 39 insertions(+), 110 deletions(-) commit 3b26c7ad3c470642ec39ee182ed740f3856e4c1b Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 13:46:12 2014 +0100 remove useless code gui/hkl-gui.c | 92 ----------------------------------------------------------- 1 file changed, 92 deletions(-) commit db639e3ab9365f874de19888f5ad7e8cbbd712ed Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 12:58:05 2014 +0100 implemente the checkbutton toggled gui/ghkl.ui | 6 + gui/hkl-gui.c | 382 +++++++--------------------------------------------------- 2 files changed, 49 insertions(+), 339 deletions(-) commit 92d387b720960e1140236d308dc56da66a85c9c7 Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 12:22:25 2014 +0100 add the sample refine callback gui/ghkl.ui | 9 +++++++- gui/hkl-gui.c | 71 +++++++++++++++++------------------------------------------ 2 files changed, 28 insertions(+), 52 deletions(-) commit 9f84769fb2faafa40409a120d4595874c29421cd Author: Picca Frédéric-Emmanuel Date: Thu Feb 6 12:14:18 2014 +0100 add the UB busing et levy computation gui/ghkl.ui | 61 ++++------------------------- gui/hkl-gui.c | 120 ++++++++++++++++++++++++++++++++++------------------------ 2 files changed, 79 insertions(+), 102 deletions(-) commit a5c324989b9ccfbe0b71fa03f430cd7060871adf Author: Frédéric-Emmanuel PICCA Date: Wed Feb 5 16:53:45 2014 +0100 add the error handling to the hkl_sample_UB_set method gui/ghkl.ui | 8 + gui/hkl-gui.c | 354 +++---------------------------- hkl.h | 4 +- hkl/hkl-binding-private.h | 5 + hkl/hkl-binding.c | 50 +++++ hkl/hkl-sample.c | 9 +- tests/hkl-pseudoaxis-e6c-t.c | 4 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-sample-t.c | 5 +- 10 files changed, 108 insertions(+), 335 deletions(-) commit 9bd9e473e26511fd8e565b12ab0146c59dd76dfd Author: Frédéric-Emmanuel PICCA Date: Mon Feb 3 13:51:21 2014 +0100 add callback for ux, uy, uz gui/ghkl.ui | 3 +++ gui/hkl-gui.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) commit faafb652fefadaee926a03a7f6dbc42c77de29ed Author: Frédéric-Emmanuel PICCA Date: Wed Jan 29 16:36:42 2014 +0100 reorganise the UB matrix display gui/ghkl.ui | 1385 +++++++++++++++++++++++++++++++-------------------------- gui/hkl-gui.c | 54 +-- 2 files changed, 765 insertions(+), 674 deletions(-) commit c6f464ffdf3d2902be1fbdc92a704d097946515e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 28 14:58:31 2014 +0100 FitParameters where wrong at the startup. gui/hkl-gui.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) commit 0856572ae0693249207fed095f453adbeea5c058 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 16:37:35 2014 +0100 just ui reorganisation on the notebook gui/ghkl.ui | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) commit f3db2262252d6b9ef6540eba494c3c8ea6fa86e6 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 16:17:01 2014 +0100 add the callback for the wavelength gui/ghkl.ui | 2 ++ gui/hkl-gui.c | 105 ++++++++++++++++++++++++++++------------------------------ 2 files changed, 52 insertions(+), 55 deletions(-) commit 0bb0955b7c266227a65372a2a4419411a318543b Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 15:14:24 2014 +0100 typo gui/hkl-gui.c | 1 - 1 file changed, 1 deletion(-) commit 2193c11031ca52e239ca5b2d0a216a785e57a8ac Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 15:14:14 2014 +0100 for now the wave length does not deserve a dedicated panel gui/ghkl.ui | 171 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 84 insertions(+), 87 deletions(-) commit 57b36313f582f5f37cf74956daa781caf1a74054 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 14:29:20 2014 +0100 fix a bug when selecting a new crystal gui/hkl-gui.c | 82 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 39 deletions(-) commit a7288ae25dd717c89a77ee00d1b128e89da41b88 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 12:43:49 2014 +0100 now the first visible panel is the crystal one. gui/ghkl.ui | 86 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) commit 05be4b8accc35d8b00d2d089d23ccc14e71c1968 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 12:14:03 2014 +0100 remove the pseudo_axes_parameter treeview (useless) gui/ghkl.ui | 146 +++++--------------- gui/hkl-gui.c | 418 ---------------------------------------------------------- 2 files changed, 35 insertions(+), 529 deletions(-) commit 72891529f487fd15bbaf039900d270e462a9aa62 Author: Picca Frédéric-Emmanuel Date: Mon Jan 27 11:30:54 2014 +0100 remove more usless code gui/hkl-gui.c | 2 -- 1 file changed, 2 deletions(-) commit 08fda072487343f89a8147a0b36cf30833675cc4 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 24 14:55:24 2014 +0100 add the set_crystal parameters gui/ghkl.ui | 66 ++++++++++ gui/hkl-gui.c | 398 ++++++++++++++++++++-------------------------------------- 2 files changed, 203 insertions(+), 261 deletions(-) commit 59f71fc5a0a1c30d7836c26b19380969eb02b23b Author: Frédéric-Emmanuel PICCA Date: Fri Jan 24 09:36:20 2014 +0100 typo gui/hkl-gui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 180497ebb698eb02cb46317e324916b0e5aff3ae Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 21:30:23 2014 +0100 remove more useless code gui/hkl-gui.c | 362 ---------------------------------------------------------- 1 file changed, 362 deletions(-) commit c265e5f6fa2599847d6f948f6e153fa9f72a1a63 Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 21:22:27 2014 +0100 update_UB gui/hkl-gui.c | 395 ++++++++-------------------------------------------------- 1 file changed, 52 insertions(+), 343 deletions(-) commit 2d1c7e093f09fcf03c246321ca07298d7d93ae13 Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 20:49:36 2014 +0100 add the update_ux_uy_yz gui/hkl-gui.c | 142 +++++++++++++--------------------------------------------- 1 file changed, 30 insertions(+), 112 deletions(-) commit e59a96f11213ffe305a9a55ccdd4ef7ec38f1070 Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 19:59:19 2014 +0100 add the lattice part gui/hkl-gui.c | 687 ++++++---------------------------------------------------- 1 file changed, 64 insertions(+), 623 deletions(-) commit f5a5de229d7ffc5697e56406029c021dfaee961d Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 15:19:48 2014 +0100 remove useless code gui/hkl-gui.c | 500 ---------------------------------------------------------- 1 file changed, 500 deletions(-) commit 7d39ac5b784b1e468cfbb0f17e942df2ac30e940 Author: Picca Frédéric-Emmanuel Date: Thu Jan 23 11:41:24 2014 +0100 now deleting a reflevion is working gui/ghkl.ui | 64 ++++++++++------------------------------------------------- gui/hkl-gui.c | 4 ++-- 2 files changed, 12 insertions(+), 56 deletions(-) commit 6a766ea943933950ddd1c938e6dbee59da190fdd Author: Picca Frédéric-Emmanuel Date: Wed Jan 22 22:12:42 2014 +0100 fix a bug in the reflection gui/hkl-gui.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit 0a71a0ecf3354cdbc99d990598c67ca22e33d07a Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 16:53:00 2014 +0100 more check gui/hkl-gui.c | 67 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 31 deletions(-) commit e595ae52643b8066ddf5b23becc8885a24e3d80a Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 16:34:05 2014 +0100 add the crystal del gui/ghkl.ui | 1 + gui/hkl-gui.c | 81 ++++++++++++++++++++++++++++++----------------------------- 2 files changed, 42 insertions(+), 40 deletions(-) commit ccbcab403e5211b8492b562164ca4b20a5cd8010 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 15:38:05 2014 +0100 implemente the cursor changed of the crystals gui/ghkl.ui | 1 + gui/hkl-gui.c | 166 +++++++++++++++++++--------------------------------------- 2 files changed, 54 insertions(+), 113 deletions(-) commit 5130c3b2d205251efbd024bc7c3d2507ad429408 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 15:02:48 2014 +0100 copy_crystal is working gui/ghkl.ui | 1 + gui/hkl-gui.c | 168 ++++++++++++---------------------------------------------- 2 files changed, 35 insertions(+), 134 deletions(-) commit 28a091d29564f328e83d8befcc991a07c4c37820 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 11:24:34 2014 +0100 now we can add samples gui/ghkl.ui | 1 + gui/hkl-gui.c | 178 +++++++++++++++++++++++++--------------------------------- 2 files changed, 77 insertions(+), 102 deletions(-) commit 918264ee07650163d63ccb087f852f9c6ee454eb Author: Frédéric-Emmanuel PICCA Date: Wed Jan 22 10:09:02 2014 +0100 add the crystal treeview and liststore gui/ghkl.ui | 161 ++++++++++++++++++++++ gui/hkl-gui.c | 425 +++++++++------------------------------------------------- 2 files changed, 225 insertions(+), 361 deletions(-) commit 28d0ecafda2baa9cd225b2148fc47f6fcdd8b00a Author: Picca Frédéric-Emmanuel Date: Mon Jan 20 21:21:15 2014 +0100 add the hkl_gui_window_toolbutton_del_reflection_clicked_cb gui/ghkl.ui | 1 + gui/hkl-gui.c | 499 +++++++++++++--------------------------------------------- 2 files changed, 108 insertions(+), 392 deletions(-) commit f99f78b706d7e6e0e9803a80de4d95afbe20ca18 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 18:51:37 2014 +0100 add toolbutton_goto_reflection_clicked_cb gui/ghkl.ui | 1 + gui/hkl-gui.c | 256 ++++++++++++++++------------------------------------------ 2 files changed, 70 insertions(+), 187 deletions(-) commit d23fef6565c47226dc8d7014a49033692a94f084 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 17:18:05 2014 +0100 add the toolbutton_add_reflection_clicked_cb callback gui/ghkl.ui | 1 + gui/hkl-gui.c | 93 ++++++++++++++++++++--------------------------------------- 2 files changed, 32 insertions(+), 62 deletions(-) commit 0efdbfb201795264dfe960a528f2e30f078a41be Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 16:37:44 2014 +0100 add the treeview_reflections_key_press_event_cb gui/ghkl.ui | 7 +++++++ gui/hkl-gui.c | 30 +++++++++--------------------- 2 files changed, 16 insertions(+), 21 deletions(-) commit e7c5829cfd5b476b8e363b76e2108c287832d5fc Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 16:04:47 2014 +0100 set up the treeview reflections gui/ghkl.ui | 154 +- gui/hkl-gui.c | 4748 ++++++++++++++++++++++++--------------------------------- 2 files changed, 2109 insertions(+), 2793 deletions(-) commit ce36bebd09bfe05a125fba378d41013aa3e27de5 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 16:04:09 2014 +0100 remove useless code gui/hkl-gui-pseudoaxes.c | 2 -- gui/hkl-gui.c | 55 ------------------------------------------------ 2 files changed, 57 deletions(-) commit 9ca28e992cd8ddffa3eca4665b90d415a85d53ca Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 14:30:18 2014 +0100 reorganization of hkl-gui.c gui/hkl-gui.c | 1099 +++++++++++++++++++++++++++------------------------------ 1 file changed, 529 insertions(+), 570 deletions(-) commit 74ac219a2d19b643793717510c84db250ccaae9b Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 13:39:19 2014 +0100 reorganize the code gui/hkl-gui-pseudoaxes.c | 123 ++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 66 deletions(-) commit 464006aa03613180f6e8d7d27ea8c97217064f23 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 12:09:22 2014 +0100 define HKL_GUI_ENGINE_GET_PRIVATE and use it gui/hkl-gui-pseudoaxes.c | 60 +++++++++++++++--------------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) commit 58a9d31d5a3cafb8b5dce69655e2eb16b215abac Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 11:40:41 2014 +0100 silent for now the diffractometer when the computation is not possible gui/hkl-gui.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit b031e959c9166e189654912b1a60769206d881f1 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 11:40:11 2014 +0100 trailling spaces gui/hkl-gui.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit d4ddb094b8d21e9beac394ac510d6ec24c2c1dc4 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 11:40:00 2014 +0100 forgot an hkl_gui_window_update_pseudo_axes_frames gui/hkl-gui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4cb3879b20b6a905a5a55b7dfe3decac8a7058c1 Author: Picca Frédéric-Emmanuel Date: Sat Jan 18 11:39:23 2014 +0100 rewrite the HklGuiEngine following the GObject tutorial gui/hkl-gui-pseudoaxes.c | 73 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 19 deletions(-) commit 744ddb9a168b4ef1e2b804288a9b2611fca74fbb Author: Picca Frédéric-Emmanuel Date: Mon Jan 13 20:51:56 2014 +0100 fix a bug with the gobject property gui/hkl-gui.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 957892edd5ced8b5ceb68917c482d752930f6b10 Author: Picca Frédéric-Emmanuel Date: Sat Jan 11 16:34:42 2014 +0100 now the computation in the pseudo_frames raise also the error. gui/hkl-gui-pseudoaxes.c | 28 +++++--- gui/hkl-gui.c | 184 +++++++++++++++++++++++++++-------------------- 2 files changed, 125 insertions(+), 87 deletions(-) commit 4af266b313259fe3d8f682cd9fe4a10fa98cbebf Author: Frédéric-Emmanuel PICCA Date: Wed Jan 8 18:02:48 2014 +0100 wip pseudo frames before reorganisation gui/hkl-gui-pseudoaxes.c | 74 ++++++++++++++-------- gui/hkl-gui.c | 156 +++++++++++++++++++++-------------------------- 2 files changed, 115 insertions(+), 115 deletions(-) commit 2d991257432c87f3c827fc7e8ceb3d5047e74180 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 8 10:48:35 2014 +0100 now the mode is well reflected in the combobox gui/hkl-gui-pseudoaxes.c | 329 +++++++++++++++++++++++------------------------ 1 file changed, 159 insertions(+), 170 deletions(-) commit 383fd25602cfab37979a0927253dcd805142b7bc Author: Frédéric-Emmanuel PICCA Date: Wed Jan 8 10:25:11 2014 +0100 format and remove some useless code gui/hkl-gui.c | 323 ++++++---------------------------------------------------- 1 file changed, 30 insertions(+), 293 deletions(-) commit b07c34475a910420ade2556679f7c1f350a0964d Author: Frédéric-Emmanuel PICCA Date: Wed Jan 8 10:11:18 2014 +0100 better error message handling in the gui gui/hkl-gui.c | 54 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 13 deletions(-) commit 24a1ba4c50b583db4eeed2ba6735a0f4bdd4c049 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 8 10:10:45 2014 +0100 better error message when using hkl engine hkl.h | 1 + hkl/hkl-pseudoaxis-common-hkl.c | 39 ++++++++++++++++++++++++++++++----- hkl/hkl-pseudoaxis-common-q-private.h | 2 ++ hkl/hkl-pseudoaxis-common-q.c | 12 ++++++++--- hkl/hkl-pseudoaxis.c | 10 ++++++++- 5 files changed, 55 insertions(+), 9 deletions(-) commit 2910d60245a03849c161134f9faa55b596c2bd0d Author: Frédéric-Emmanuel PICCA Date: Tue Jan 7 11:55:33 2014 +0100 reset the pseudo axis value if the computation failed if the computation failed, the expected value should be restored to allow futur computation. Otherwise the list_tree and the hkl internal are not synchronized. gui/hkl-gui.c | 4 ++++ 1 file changed, 4 insertions(+) commit 7172fa4884764f51546a9aeeab3776829d44b5e8 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 7 11:42:52 2014 +0100 add an içnfor bar to give the user some feddback about the computation gui/ghkl.ui | 39 +++++++++++++++++++++---- gui/hkl-gui.c | 91 +++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 93 insertions(+), 37 deletions(-) commit e3f379b47c7a5243fb258079056306ee66c1aec1 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 7 10:21:31 2014 +0100 cleaner code for hkl_gui_window_update_solutions gui/hkl-gui.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 3ffc5166812e2f763ee8d97d95acee9bd5833b63 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 6 17:05:57 2014 +0100 add the solution part gui/ghkl.ui | 4 +- gui/hkl-gui.c | 735 ++++++++++++++-------------------------------------------- 2 files changed, 180 insertions(+), 559 deletions(-) commit f755789e85f7f863fda6ea93e67c238c01f9e58b Author: Frédéric-Emmanuel PICCA Date: Mon Jan 6 13:34:03 2014 +0100 add the pseudo axes INSTALL | 12 +- configure.ac | 2 +- gui/ghkl.ui | 169 +++++++++--- gui/hkl-gui.c | 840 ++++++++------------------------------------------------ gui/pseudo.ui | 68 ++--- hkl/hkl-types.c | 1 - 6 files changed, 299 insertions(+), 793 deletions(-) commit 0e25b32e79e6c42b0b3d51cad2662503bea453f4 Author: Picca Frédéric-Emmanuel Date: Mon Jan 6 08:42:57 2014 +0100 wip gui/ghkl.ui | 23 +- gui/hkl-gui.c | 1046 +++++++++++++++++---------------------------------------- gui/pseudo.ui | 50 +-- 3 files changed, 366 insertions(+), 753 deletions(-) commit 7311dfb420a77fb0218c7f27c20cc77264b40be9 Merge: 8688c93a c66e4376 Author: Picca Frédéric-Emmanuel Date: Sun Jan 5 15:58:30 2014 +0100 Merge branch 'next' into gtk Conflicts: configure.ac gui/Makefile.am gui/hkl-gui-3d.cpp gui/hkl-gui-3d.h gui/hkl-gui-callbacks.cpp gui/hkl-gui-modelcolumns.h gui/hkl-gui-pseudoaxes.cpp gui/hkl-gui-pseudoaxes.h gui/hkl-gui.cpp gui/hkl-gui.h gui/hkl3d/hkl3d-gui-model.cpp gui/hkl3d/hkl3d-gui-model.h gui/hkl3d/hkl3d-gui-scene.cpp gui/hkl3d/hkl3d-gui-scene.h gui/hkl3d/hkl3d-gui-view.cpp gui/hkl3d/hkl3d-gui-view.h gui/trackball.vapi hkl3d/bullet/src/Makefile.am hkl3d/hkl3d.cpp hkl3d/hkl3d.h test/hkl/axis-t.c test/hkl/lattice-t.c test/hkl/pseudoaxis-e4cv-t.c test/hkl/pseudoaxis-e6c-t.c test/hkl/pseudoaxis-k4cv-t.c test/hkl/pseudoaxis-k6c-t.c test/hkl/pseudoaxis-t.c test/hkl/sample-t.c tests/hkl-geometry-t.c tests/hkl-parameter-t.c tests/hkl-vector-t.c tests/runtests.c tests/tap/basic.c tests/tap/basic.h tests/tap/libtap.sh commit c66e43766d2aaf04eadf2ad2780d5179dba483b5 Author: Picca Frédéric-Emmanuel Date: Sun Dec 29 14:21:45 2013 +0100 clean-all INSTALL | 4 ++-- gui/hkl-gui.h | 2 +- hkl/hkl-binding.c | 1 - hkl/hkl-factory.c | 6 +++--- hkl/hkl-matrix.c | 2 +- hkl/hkl-parameter-private.h | 6 +++--- hkl/hkl-parameter.c | 4 ++-- hkl/hkl-sample.c | 2 +- scripts/clean-all | 6 ++++-- 9 files changed, 17 insertions(+), 16 deletions(-) commit 29dd8a7e44a384ecb01f3f387f764434a90f0202 Merge: f5c116a1 7c302b91 Author: Picca Frédéric-Emmanuel Date: Sun Dec 29 11:31:38 2013 +0100 Merge branch 'maint' into next Conflicts: hkl/Makefile.am hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry-private.h hkl/hkl-pseudoaxis-factory.c hkl/pom.xml commit f5c116a1bdef94ef2d999d4751523dbfda067759 Author: Picca Frédéric-Emmanuel Date: Tue Dec 17 22:27:10 2013 +0100 update ccan hkl/ccan/list/list.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit be3a6967942b5b4eaa73035c05e9fd64dfcf990b Author: Frédéric-Emmanuel PICCA Date: Mon Oct 7 15:34:07 2013 +0200 add the TODO list for sirius TODO | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) commit 7c302b91e2a893cf5e1ba1bb41e37ca45b716480 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 7 15:30:46 2013 +0200 update the pom.xml 4.0.6 -> 4.0.7 hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 94d97c72691021a3ada50cae2df74dbb8759c0e6 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 7 15:09:58 2013 +0200 add the sirius turret geometry hkl/Makefile.am | 8 +++-- hkl/hkl-geometry-factory.c | 19 ++++++++++++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-factory.c | 5 +++ hkl/hkl-pseudoaxis-soleil-sirius-turret.c | 51 +++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-soleil-sirius-turret.h | 33 ++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 9 ++++++ 8 files changed, 125 insertions(+), 4 deletions(-) commit ec683db8d110083cc1e2af1dbac74f5cf709191c Author: Picca Frédéric-Emmanuel Date: Sun Sep 22 19:59:48 2013 +0200 use the new list_next from ccan hkl.h | 6 +++--- hkl/hkl-sample.c | 11 ++++------- 2 files changed, 7 insertions(+), 10 deletions(-) commit d9b07271dee955716e3b6a1e5cbe7ae7632a1eec Author: Picca Frédéric-Emmanuel Date: Sun Sep 22 19:34:44 2013 +0200 update ccan hkl/ccan/list/list.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) commit 04cfaf020898969848adc8383926d8548c036298 Author: Picca Frédéric-Emmanuel Date: Sun Sep 22 18:30:47 2013 +0200 we are using subdir-objects so add the options configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d5d86aae223c857d78c7090c481ad8f3d89f0540 Author: Picca Frédéric-Emmanuel Date: Sun Sep 22 17:26:01 2013 +0200 fix the header with the help of iwyu hkl.h | 9 +++---- hkl/Makefile.am | 9 ++++++- hkl/hkl-axis-private.h | 8 +++--- hkl/hkl-axis.c | 23 ++++++++++------- hkl/hkl-binding-private.h | 6 ++--- hkl/hkl-binding.c | 25 +++++++++++-------- hkl/hkl-detector-factory.c | 6 ++--- hkl/hkl-detector-private.h | 5 +++- hkl/hkl-detector.c | 12 ++++++--- hkl/hkl-error.c | 13 ++++++---- hkl/hkl-factory.c | 32 ++++++++++++------------ hkl/hkl-geometry-private.h | 11 +++++--- hkl/hkl-geometry.c | 35 ++++++++++++++++---------- hkl/hkl-interval-private.h | 2 +- hkl/hkl-interval.c | 9 ++++--- hkl/hkl-lattice.c | 17 +++++++------ hkl/hkl-macros-private.h | 3 ++- hkl/hkl-macros.c | 9 +++---- hkl/hkl-matrix.c | 15 +++++------ hkl/hkl-parameter-private.h | 13 +++++----- hkl/hkl-parameter.c | 13 +++++++--- hkl/hkl-pseudoaxis-auto-private.h | 16 +++++++----- hkl/hkl-pseudoaxis-auto.c | 29 ++++++++++++++------- hkl/hkl-pseudoaxis-common-eulerians-private.h | 3 ++- hkl/hkl-pseudoaxis-common-eulerians.c | 19 +++++++++----- hkl/hkl-pseudoaxis-common-hkl-private.h | 4 ++- hkl/hkl-pseudoaxis-common-hkl.c | 36 +++++++++++++++++++-------- hkl/hkl-pseudoaxis-common-psi-private.h | 10 ++++---- hkl/hkl-pseudoaxis-common-psi.c | 32 ++++++++++++++++-------- hkl/hkl-pseudoaxis-common-q.c | 28 ++++++++++++++------- hkl/hkl-pseudoaxis-e4c-hkl.c | 19 ++++++++------ hkl/hkl-pseudoaxis-e4c-private.h | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 12 ++++----- hkl/hkl-pseudoaxis-e6c-hkl.c | 18 ++++++++------ hkl/hkl-pseudoaxis-e6c-private.h | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 11 ++++---- hkl/hkl-pseudoaxis-k4cv-hkl.c | 17 +++++++------ hkl/hkl-pseudoaxis-k4cv-private.h | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 11 ++++---- hkl/hkl-pseudoaxis-k6c-hkl.c | 26 ++++++++++++------- hkl/hkl-pseudoaxis-k6c-private.h | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 11 ++++---- hkl/hkl-pseudoaxis-petra3-hkl.c | 14 ++++++----- hkl/hkl-pseudoaxis-petra3-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 17 +++++++------ hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 23 ++++++++++++----- hkl/hkl-pseudoaxis-zaxis-hkl.c | 15 +++++------ hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 23 +++++++++-------- hkl/hkl-quaternion-private.h | 8 +++--- hkl/hkl-quaternion.c | 18 +++++++------- hkl/hkl-sample-private.h | 8 +++--- hkl/hkl-sample.c | 34 +++++++++++++++++-------- hkl/hkl-source-private.h | 4 ++- hkl/hkl-source.c | 12 +++++---- hkl/hkl-type-builtins.h.template | 4 ++- hkl/hkl-types.c | 16 ++++++++---- hkl/hkl-types.h | 7 +++--- hkl/hkl-unit-private.h | 2 +- hkl/hkl-unit.c | 12 ++++----- hkl/hkl-vector-private.h | 6 ++--- hkl/hkl-vector.c | 18 +++++++------- 63 files changed, 502 insertions(+), 330 deletions(-) commit 9b3f95021c6f5b591d47768c3d2526c42e96973d Author: Picca Frédéric-Emmanuel Date: Mon Aug 26 11:12:48 2013 +0200 fix the distcheck due to gtk-doc Documentation/api/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 609734e4ce18cc7e2fa46d20ada6f3199e0a8505 Author: Picca Frédéric-Emmanuel Date: Mon Aug 26 09:41:46 2013 +0200 fix the dependencies between hkl-type-builtins.c and hkl-type-builtins.h hkl/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5eaae18bd4203fb67901770f262647cb0ca4d470 Author: Picca Frédéric-Emmanuel Date: Mon Aug 26 09:41:16 2013 +0200 no need to put into git the hkl-type-* autogenerated files hkl/hkl-type-builtins.c | 27 --------------------------- hkl/hkl-type-builtins.h | 19 ------------------- 2 files changed, 46 deletions(-) commit 214b76b0f06e272e7dc4af5aa7de518c6bd8ab72 Author: Picca Frédéric-Emmanuel Date: Mon Aug 26 09:40:38 2013 +0200 remove useless gtk-doc files since we can rebuilt them Documentation/api/Makefile.am | 6 +- Documentation/api/hkl-docs.sgml | 73 ++++--- Documentation/api/hkl-sections.txt | 434 ------------------------------------- Documentation/api/hkl.types | 0 4 files changed, 46 insertions(+), 467 deletions(-) commit 439a7ab96f3f72664b17f1e063603a98c4db54e9 Author: Picca Frédéric-Emmanuel Date: Mon Aug 26 08:58:57 2013 +0200 remove the texinfo documentation Documentation/Makefile.am | 2 - Documentation/hkl.texi | 900 ---------------------------------------------- 2 files changed, 902 deletions(-) commit 4896e99f93044f072ea8a4ce89c8ebbcb06cd20c Author: Picca Frédéric-Emmanuel Date: Wed Jul 17 15:18:22 2013 +0200 export the reciprocal lattice method hkl/hkl-lattice.c | 11 ++++++----- tests/bindings/python.py | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) commit 4fd00ca81dee14f600e3455bd6b17696a45a407f Author: Picca Frédéric-Emmanuel Date: Wed Jul 17 15:02:58 2013 +0200 export a few method into the binding hkl_sample_compute_UB_busing_levy hkl_sample_affine hkl_sample_get_reflection_mesured_angle hkl_sample_get_reflection_theoretical_angle hkl/hkl-sample.c | 38 +++++++++++++++++++------------------- tests/bindings/python.py | 14 +++++++++----- 2 files changed, 28 insertions(+), 24 deletions(-) commit 3907b5835ed03db0b4b4f8ab789c0735a704a420 Author: Picca Frédéric-Emmanuel Date: Wed Jul 17 14:52:52 2013 +0200 check that the sample.copy() method is working tests/bindings/python.py | 7 +++++++ 1 file changed, 7 insertions(+) commit 4d200454b738652d9e2d2fff31e4415cf9c5698a Author: Picca Frédéric-Emmanuel Date: Wed Jul 17 14:41:39 2013 +0200 now the get/set_hkl method of the HklSampleReflection are exposed into the binding hkl/hkl-sample.c | 24 ++++++++++++------------ tests/bindings/python.py | 12 ++++++++++-- 2 files changed, 22 insertions(+), 14 deletions(-) commit 5cd80efd92d2c8747c8c69fa61f8b34f9f8e3fcd Author: Picca Frédéric-Emmanuel Date: Wed Jul 17 14:30:46 2013 +0200 now add_reflection and del_reflection are working gui/hkl-gui-callbacks.cpp | 3 ++- hkl.h | 5 +++-- hkl/hkl-binding-private.h | 5 +++++ hkl/hkl-binding.c | 28 ++++++++++++++++++++++++++++ hkl/hkl-sample.c | 26 +++++++++++++++++--------- tests/bindings/python.py | 10 ++++------ tests/hkl-sample-t.c | 5 ++++- 7 files changed, 63 insertions(+), 19 deletions(-) commit 2b0830e235181c8757a4cd6e64ebebce11565625 Author: Picca Frédéric-Emmanuel Date: Sun Jul 7 22:53:20 2013 +0200 provide a few method for the binding hkl/hkl-binding-private.h | 6 +++++ hkl/hkl-binding.c | 24 +++++++++++++++++++ hkl/hkl-matrix.c | 3 ++- hkl/hkl-parameter.c | 4 ++-- hkl/hkl-sample.c | 59 ++++++++++++++++++++++++++++------------------- tests/bindings/python.py | 33 ++++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 27 deletions(-) commit accefa127aa8da0c70910ef6f383267af45f90c1 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 24 13:15:57 2013 +0200 the geometry stored into the reflection is accessibleo only using the get /set method hkl.h | 2 +- hkl/hkl-sample.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit e0f4cc0ad47d7bf46d4e3ebe7e25a28929f50281 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 24 11:21:44 2013 +0200 remove from git the .gir file hkl/Hkl-5.0.gir | 2490 ------------------------------------------------------- 1 file changed, 2490 deletions(-) commit 0be8b2b3529cf181d6fe55c61e99fca1ca00a25b Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 22:01:57 2013 +0200 fix a few segfault in ghkl gui/hkl-gui-modelcolumns.h | 3 ++- gui/hkl-gui.cpp | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit 59c6e9a5623676953adcc6dc0b4cd55e070d3408 Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 17:36:46 2013 +0200 use the right version number until we release 5.0.0 configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d7fd1980a9a16d46b914d664937d064540c62f70 Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 17:18:50 2013 +0200 typo hkl.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit d8087b837eb17c2a5e4c0dd9cbe3594ce5e2b5e7 Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 17:16:14 2013 +0200 the ux, uy, uz getter are now const it is not possible to modify the sample internal without a setter. gui/ghkl.ui | 6 +++--- gui/hkl-gui-callbacks.cpp | 40 +++++++++++++--------------------------- gui/hkl-gui.cpp | 24 ++++++++++++------------ gui/hkl-gui.h | 12 ++++++------ hkl.h | 6 +++--- hkl/Hkl-5.0.gir | 12 ++++++------ hkl/hkl-sample.c | 18 ++++++------------ 7 files changed, 49 insertions(+), 69 deletions(-) commit e892bc6e17752736987855181f83b77c2ca44912 Author: Picca Frédéric-Emmanuel Date: Sun Jun 23 16:37:59 2013 +0200 use const for the lattice get/set sample method this way it is not possible to modify the sample internals via the getter. the setter is now mendatory. gui/hkl-gui-callbacks.cpp | 111 ++++++++++------------------------------- gui/hkl-gui.cpp | 9 ++-- hkl.h | 8 ++- hkl/Hkl-5.0.gir | 63 +++++++++++++++++++++-- hkl/hkl-lattice.c | 41 ++++++++++++--- hkl/hkl-sample.c | 6 +-- tests/bindings/python.py | 25 ++++++++-- tests/hkl-pseudoaxis-e6c-t.c | 16 +++--- tests/hkl-pseudoaxis-zaxis-t.c | 11 ++-- tests/hkl-sample-t.c | 44 +++++++--------- 10 files changed, 180 insertions(+), 154 deletions(-) commit d1334e203bde1d3d3ace35f623717acd50a62597 Author: Picca Frédéric-Emmanuel Date: Sat Jun 22 11:16:05 2013 +0200 use the local headers instead of the system one where it is relevant hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 2 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-source.c | 3 ++- hkl/hkl-types.c | 5 ++--- tests/hkl-axis-t.c | 4 ++-- tests/hkl-bench-t.c | 2 +- tests/hkl-detector-t.c | 2 +- tests/hkl-error-t.c | 2 +- tests/hkl-geometry-t.c | 2 +- tests/hkl-interval-t.c | 2 +- tests/hkl-lattice-t.c | 2 +- tests/hkl-matrix-t.c | 2 +- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-quaternion-t.c | 2 +- tests/hkl-sample-t.c | 2 +- tests/hkl-source-t.c | 4 ++-- tests/hkl-unit-t.c | 2 +- tests/hkl-vector-t.c | 2 +- 40 files changed, 44 insertions(+), 44 deletions(-) commit ecccaebfde99ac8434e71c1c1e8aac29573b46f1 Author: Picca Frédéric-Emmanuel Date: Sat Jun 22 09:36:59 2013 +0200 remove the bool type this C99 type is unknown of gobject-introspection. hkl.h | 17 ++++++++--------- hkl/Hkl-5.0.gir | 40 ++++++++++++---------------------------- hkl/hkl-parameter.c | 8 ++++---- hkl/hkl-sample.c | 4 ++-- 4 files changed, 26 insertions(+), 43 deletions(-) commit 1a62b3f5a05db0bf1d3a0b318f15811a9098f62b Author: Picca Frédéric-Emmanuel Date: Sat Jun 22 09:06:29 2013 +0200 remove the version number from the hkl.h header once I figured out what is the right way to provide this number, I will add it. hkl.h | 7 ------- 1 file changed, 7 deletions(-) commit c35fee0fcd94739e4bb196f08758909110e414bc Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 19:54:19 2013 +0200 now distcheck is working hkl/Makefile.am | 2 +- tests/Makefile.am | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) commit 52610211fa6df8844204c9ad23d66b5f8fb563d3 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 19:22:22 2013 +0200 install all the headers under hkl- @VMAJ@ this way it will be possible to install in parallel different major version of the hkl library. Makefile.am | 11 ++++++++--- configure.ac | 39 ++++++++++++++++++++++++++++++++++++--- hkl.pc.in | 2 +- hkl/Makefile.am | 25 +++++++++++-------------- hkl/ccan/Makefile.am | 2 +- 5 files changed, 57 insertions(+), 22 deletions(-) commit 15176995943856b7a4be301c66a8c8defd2bfdfa Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 18:12:23 2013 +0200 activtable the -visibility=hiden flag - fix a few method visibility - deactive the hkl3d test since it is broken due to some symbols problem with c++. configure.ac | 8 +++---- hkl.h | 12 +++++----- hkl/Hkl-5.0.gir | 18 +++++++++++++++ hkl/Makefile.am | 1 + hkl/hkl-binding-private.h | 22 +++++++++---------- hkl/hkl-geometry.c | 19 ++++++++++++++++ hkl/hkl-type-builtins.h | 2 +- hkl/hkl-type-builtins.h.template | 2 +- hkl/hkl-types.h | 34 ++++++++++++++--------------- hkl3d/bullet/src/Makefile.am | 2 +- hkl3d/hkl3d.cpp | 47 +++++++++++++++++++++++++++++++--------- hkl3d/hkl3d.h | 4 ++-- tests/Makefile.am | 2 ++ 13 files changed, 121 insertions(+), 52 deletions(-) commit 0a6f96a7020aad5e2ee2cd74a913b8e5375d5988 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 14:31:57 2013 +0200 remove a few method from the public API moves them to the hkl-macros-private.h header hkl.h | 65 ++------------------------------- hkl/Hkl-5.0.gir | 10 ------ hkl/Makefile.am | 1 + hkl/hkl-error-private.h | 1 + hkl/hkl-interval.c | 1 + hkl/hkl-macros-private.h | 88 +++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-macros.c | 1 + hkl/hkl-matrix.c | 1 + hkl/hkl-parameter-private.h | 1 + hkl/hkl-quaternion.c | 1 + hkl/hkl-unit.c | 1 + hkl/hkl-vector.c | 1 + tests/tap/hkl-tap.c | 1 + 13 files changed, 100 insertions(+), 73 deletions(-) commit 78344cffa51dacbae213ad072d4e1cc52fc07a6c Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 14:03:21 2013 +0200 put all the public API into an unit hkl.h header gui/hkl-gui-callbacks.cpp | 4 +- gui/hkl-gui-modelcolumns.h | 2 +- gui/hkl-gui.cpp | 31 +- gui/hkl-gui.h | 2 +- hkl.h | 543 +++++++++++++++++++++++++- hkl/Hkl-5.0.gir | 68 ++++ hkl/Makefile.am | 24 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 3 +- hkl/hkl-detector-factory.c | 3 +- hkl/hkl-detector-factory.h | 38 -- hkl/hkl-detector.h | 41 -- hkl/hkl-error-private.h | 3 +- hkl/hkl-error.h | 38 -- hkl/hkl-factory-private.h | 4 +- hkl/hkl-factory.c | 3 +- hkl/hkl-factory.h | 45 --- hkl/hkl-geometry-private.h | 7 +- hkl/hkl-geometry.h | 76 ---- hkl/hkl-interval-private.h | 2 +- hkl/hkl-lattice-private.h | 4 +- hkl/hkl-lattice.h | 73 ---- hkl/hkl-macros.c | 3 +- hkl/hkl-macros.h | 159 -------- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 3 +- hkl/hkl-matrix.h | 54 --- hkl/hkl-parameter-private.h | 6 +- hkl/hkl-parameter.h | 87 ----- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 4 +- hkl/hkl-pseudoaxis.h | 115 ------ hkl/hkl-quaternion-private.h | 3 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample-private.h | 5 +- hkl/hkl-sample.c | 3 +- hkl/hkl-sample.h | 124 ------ hkl/hkl-type-builtins.c | 2 +- hkl/hkl-type-builtins.h | 2 +- hkl/hkl-unit-private.h | 2 +- hkl/hkl-vector-private.h | 4 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 2 +- tests/hkl-pseudoaxis-k4cv-t.c | 2 +- tests/hkl-pseudoaxis-k6c-t.c | 2 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/tap/Makefile.am | 8 +- tests/tap/{hkl.c => hkl-tap.c} | 4 +- tests/tap/{hkl.h => hkl-tap.h} | 11 +- 53 files changed, 682 insertions(+), 957 deletions(-) commit b88034c233faf4f26de9bc8f3472155e845f6e30 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 12:45:01 2013 +0200 part of the HklError API is now public gui/hkl-gui.cpp | 2 +- hkl/Hkl-5.0.gir | 392 ++++------------------------------ hkl/Makefile.am | 1 + hkl/hkl-binding.c | 1 + hkl/hkl-error-private.h | 72 +++++++ hkl/hkl-error.c | 13 +- hkl/hkl-error.h | 36 +--- hkl/hkl-pseudoaxis-auto-private.h | 1 + hkl/hkl-pseudoaxis-auto.c | 1 + hkl/hkl-pseudoaxis-common-eulerians.c | 1 + hkl/hkl-pseudoaxis-common-hkl.c | 1 + hkl/hkl-pseudoaxis-common-psi.c | 1 + hkl/hkl-pseudoaxis.c | 1 + hkl/hkl-types.c | 1 + tests/hkl-error-t.c | 2 + 15 files changed, 133 insertions(+), 393 deletions(-) commit 611fbae474d69164098866ce0b29156bbd513ab3 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 12:31:00 2013 +0200 fix a missing stdio.h in hkl-geometry.h hkl/hkl-geometry.h | 1 + 1 file changed, 1 insertion(+) commit 291ec10c5c03332eedff84dbd65fd6b1b48143cd Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 12:12:21 2013 +0200 HklVector is private hkl/Hkl-5.0.gir | 633 +---------------------------- hkl/Makefile.am | 8 +- hkl/hkl-axis-private.h | 2 +- hkl/hkl-matrix-private.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-quaternion-private.h | 11 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-source-private.h | 2 +- hkl/{hkl-vector.h => hkl-vector-private.h} | 4 +- hkl/hkl-vector.c | 2 +- tests/hkl-vector-t.c | 2 +- 11 files changed, 23 insertions(+), 647 deletions(-) commit fcafa97c8738d00738d437afbaaf19ef11b76638 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 12:03:32 2013 +0200 HklUnit is private hkl/Hkl-5.0.gir | 98 ++-------------------------------- hkl/Makefile.am | 6 +-- hkl/hkl-lattice.c | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-type-builtins.c | 18 ------- hkl/hkl-type-builtins.c.template | 1 - hkl/hkl-type-builtins.h | 4 -- hkl/{hkl-unit.h => hkl-unit-private.h} | 6 +-- hkl/hkl-unit.c | 3 +- tests/hkl-unit-t.c | 2 +- 10 files changed, 15 insertions(+), 127 deletions(-) commit c685b927c015e7d2625f6c0eaa451ee86413bfd0 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 11:51:46 2013 +0200 HklQuaternion is private hkl/Hkl-5.0.gir | 262 +-------------------- hkl/Makefile.am | 4 +- hkl/hkl-axis-private.h | 7 +- hkl/hkl-geometry-private.h | 3 +- hkl/{hkl-quaternion.h => hkl-quaternion-private.h} | 0 hkl/hkl-quaternion.c | 2 +- hkl/hkl-types.c | 12 - hkl/hkl-types.h | 3 - hkl/hkl-vector.c | 2 +- tests/hkl-quaternion-t.c | 2 +- 10 files changed, 9 insertions(+), 288 deletions(-) commit a72bf8e4aba6b90733bb74604b0058abb4658023 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 11:44:37 2013 +0200 HklInterval is now private hkl/Hkl-5.0.gir | 270 ------------------------- hkl/Makefile.am | 4 +- hkl/{hkl-interval.h => hkl-interval-private.h} | 6 +- hkl/hkl-interval.c | 2 +- hkl/hkl-parameter-private.h | 6 +- hkl/hkl-types.c | 12 -- hkl/hkl-types.h | 3 - tests/hkl-interval-t.c | 2 +- 8 files changed, 9 insertions(+), 296 deletions(-) commit 2e16e91ff4448d4603caa326ee3191bf71715324 Author: Picca Frédéric-Emmanuel Date: Fri Jun 21 11:34:52 2013 +0200 Hklsource is private hkl/Hkl-5.0.gir | 159 +---------------------------- hkl/Makefile.am | 6 +- hkl/hkl-geometry-private.h | 8 +- hkl/{hkl-source.h => hkl-source-private.h} | 8 +- hkl/hkl-types.c | 12 --- hkl/hkl-types.h | 3 - 6 files changed, 15 insertions(+), 181 deletions(-) commit 249f2c9df0fa2677b1273151bd71210d9f611961 Author: Picca Frédéric-Emmanuel Date: Wed Jun 19 22:48:54 2013 +0200 clean the hkl-matrix.h header remove the useless stdio.h and hkl-vector.h hkl/Hkl-5.0.gir | 1278 ++++++++++++++++++++++++++++++++++++--------- hkl/hkl-lattice-private.h | 2 + hkl/hkl-matrix.h | 8 +- tests/hkl-vector-t.c | 2 + 4 files changed, 1045 insertions(+), 245 deletions(-) commit 1c46d77815b3fcb805b48d2558656c0a17eb58b9 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 19 16:09:58 2013 +0200 now the internal of the HklMatrix is completly private gui/hkl-gui-callbacks.cpp | 39 +++-- gui/hkl-gui.cpp | 22 +-- hkl.h | 1 + hkl/Hkl-5.0.gir | 245 ++++++++++--------------------- hkl/Makefile.am | 1 + hkl/hkl-lattice.c | 7 +- hkl/hkl-matrix-private.h | 65 ++++++++ hkl/hkl-matrix.c | 74 +++++++++- hkl/hkl-matrix.h | 50 ++----- hkl/hkl-quaternion.c | 8 +- hkl/hkl-sample-private.h | 1 + hkl/hkl-vector.c | 6 +- tests/hkl-lattice-t.c | 35 +++-- tests/hkl-matrix-t.c | 2 + tests/hkl-pseudoaxis-e6c-t.c | 24 +-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 7 +- tests/hkl-pseudoaxis-zaxis-t.c | 7 +- tests/hkl-quaternion-t.c | 15 +- tests/hkl-sample-t.c | 48 +++--- tests/hkl-vector-t.c | 10 +- 20 files changed, 359 insertions(+), 308 deletions(-) commit abfe3d4ebbbd02e61b69b75ae0887e4cbb95d35c Author: Frédéric-Emmanuel PICCA Date: Tue Jun 18 17:15:31 2013 +0200 struct HklLattice is now private. gui/hkl-gui-callbacks.cpp | 70 ++++++++++++++---- gui/hkl-gui.cpp | 80 +++++++++++++-------- hkl/Hkl-5.0.gir | 180 +++++++++++++++++++++++++++------------------- hkl/Makefile.am | 1 + hkl/hkl-lattice-private.h | 49 +++++++++++++ hkl/hkl-lattice.c | 116 +++++++++++++++++++++++++++++- hkl/hkl-lattice.h | 50 +++++++------ hkl/hkl-sample.c | 1 + hkl/hkl-types.c | 1 + tests/hkl-lattice-t.c | 108 ++++++++++++++-------------- tests/hkl-sample-t.c | 24 +++---- 11 files changed, 474 insertions(+), 206 deletions(-) commit 9c905da584ab939517f1626c31ea892d91a5a23f Author: Frédéric-Emmanuel PICCA Date: Thu Jun 13 13:46:37 2013 +0200 now all the sample API is "clean" gui/hkl-gui-callbacks.cpp | 11 +- hkl/Hkl-5.0.gir | 1360 +++++++++------------------------------------ hkl/hkl-sample-private.h | 4 - hkl/hkl-sample.c | 26 +- hkl/hkl-sample.h | 10 +- tests/hkl-sample-t.c | 72 ++- 6 files changed, 343 insertions(+), 1140 deletions(-) commit cf3915a88c9e59b1764626f58da7c5b24d8327b7 Author: Picca Frédéric-Emmanuel Date: Sun Jun 9 21:09:53 2013 +0200 clean the hkl-sample part hkl/hkl-sample-private.h | 7 ------- hkl/hkl-sample.c | 3 --- hkl/hkl-sample.h | 9 ++------- 3 files changed, 2 insertions(+), 17 deletions(-) commit 813370a42b3604c8377e182cceb7276a143243a8 Author: Picca Frédéric-Emmanuel Date: Sun Jun 9 20:52:27 2013 +0200 use a ccan list for the sample reflections INSTALL | 8 +- Makefile.am | 2 +- gui/hkl-gui-callbacks.cpp | 47 +- gui/hkl-gui-modelcolumns.h | 2 + gui/hkl-gui.cpp | 11 +- hkl/Hkl-5.0.gir | 1372 +++++++++++++++++++++++++++++++++++--------- hkl/ccan/Makefile.am | 2 + hkl/ccan/list/LICENSE | 1 + hkl/ccan/list/list.c | 43 ++ hkl/ccan/list/list.h | 563 ++++++++++++++++++ hkl/hkl-sample-private.h | 19 +- hkl/hkl-sample.c | 165 ++---- hkl/hkl-sample.h | 27 +- tests/hkl-sample-t.c | 42 +- 14 files changed, 1831 insertions(+), 473 deletions(-) commit aa9049686b0eaa577c2228449fd77d75caa21049 Author: Frédéric-Emmanuel PICCA Date: Fri May 31 10:55:01 2013 +0200 move to hkl_sample_UB_get/set gui/hkl-gui-callbacks.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl/Hkl-5.0.gir | 61 ++++++++++++++++++++--------------------------- hkl/hkl-lattice.c | 2 +- hkl/hkl-sample-private.h | 4 ---- hkl/hkl-sample.c | 28 ++++++++-------------- hkl/hkl-sample.h | 4 ++-- tests/hkl-sample-t.c | 2 +- 8 files changed, 42 insertions(+), 63 deletions(-) commit eb0080ad4bb2919e9a689df9c9c6b9a969d1b363 Author: Frédéric-Emmanuel PICCA Date: Thu May 30 13:51:49 2013 +0200 now we have an hkl_sample_U_get/set method remove the hkl_sample_set_U_from_euler, use HklMatrix method then the hkl_sample_U_set method. gui/hkl-gui-callbacks.cpp | 10 ++++--- hkl/Hkl-5.0.gir | 46 +++++++++++++++++--------------- hkl/hkl-matrix.c | 15 +++++++++++ hkl/hkl-matrix.h | 2 ++ hkl/hkl-sample-private.h | 3 --- hkl/hkl-sample.c | 24 +++-------------- hkl/hkl-sample.h | 5 ++-- tests/hkl-pseudoaxis-e6c-t.c | 15 +++++++---- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 4 ++- tests/hkl-pseudoaxis-zaxis-t.c | 4 ++- 10 files changed, 69 insertions(+), 59 deletions(-) commit b056fa1008e62c0ea05d3e84e6ee3bd8b174fc5f Author: Frédéric-Emmanuel PICCA Date: Wed May 29 15:56:22 2013 +0200 create the hkl_sample_lattice_set method Documentation/sphinx/source/bindings/python.py | 10 ++-- Documentation/sphinx/source/pyplots/trajectory.py | 10 ++-- .../sphinx/source/pyplots/trajectory_full.py | 10 ++-- .../sphinx/source/pyplots/trajectory_simple.py | 10 ++-- gui/hkl-gui-callbacks.cpp | 31 ++++++----- hkl/Hkl-5.0.gir | 60 ++++++++++------------ hkl/hkl-lattice.c | 20 +++++++- hkl/hkl-lattice.h | 2 + hkl/hkl-sample-private.h | 12 ----- hkl/hkl-sample.c | 32 +++--------- hkl/hkl-sample.h | 4 +- tests/bindings/python.py | 20 +++++--- tests/bindings/trajectory.py | 10 ++-- tests/hkl-pseudoaxis-e6c-t.c | 18 ++++--- tests/hkl-pseudoaxis-zaxis-t.c | 13 +++-- tests/hkl-sample-t.c | 18 ++++--- 16 files changed, 146 insertions(+), 134 deletions(-) commit c9c5a9bb70ca81abaabd8ba6ee5f4fea92679e00 Author: Frédéric-Emmanuel PICCA Date: Wed May 29 10:45:33 2013 +0200 rename hkl_sample_set_name into hkl_sample_name_set for consistency gui/hkl-gui-callbacks.cpp | 4 ++-- hkl/Hkl-5.0.gir | 26 +++++++++++++------------- hkl/hkl-sample-private.h | 2 +- hkl/hkl-sample.c | 4 ++-- hkl/hkl-sample.h | 17 +++++++++++------ 5 files changed, 29 insertions(+), 24 deletions(-) commit e1efd72e6464b533c7b7b19c46529957f695b2ba Author: Frédéric-Emmanuel PICCA Date: Wed May 29 10:19:36 2013 +0200 remove the HklSampleType enum Documentation/sphinx/source/bindings/python.py | 2 +- Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 2 +- .../sphinx/source/pyplots/trajectory_simple.py | 2 +- Documentation/sphinx/source/test.py | 2 +- gui/hkl-gui-callbacks.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl/Hkl-5.0.gir | 1285 ++++---------------- hkl/hkl-sample-private.h | 3 +- hkl/hkl-sample.c | 4 +- hkl/hkl-sample.h | 6 +- hkl/hkl-type-builtins.c | 15 - hkl/hkl-type-builtins.h | 4 - tests/bindings/python.py | 4 +- tests/bindings/trajectory.py | 2 +- tests/hkl-bench-t.c | 4 +- tests/hkl-pseudoaxis-e4ch-t.c | 12 +- tests/hkl-pseudoaxis-e4cv-t.c | 12 +- tests/hkl-pseudoaxis-e6c-t.c | 10 +- tests/hkl-pseudoaxis-k4cv-t.c | 6 +- tests/hkl-pseudoaxis-k6c-t.c | 8 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-sample-t.c | 18 +- 25 files changed, 304 insertions(+), 1109 deletions(-) commit 027b3fb69eb5f2f81525d66094a6301c33e37332 Author: Picca Frédéric-Emmanuel Date: Tue May 28 22:49:12 2013 +0200 HklSample struct is no more exposed gui/hkl-gui-callbacks.cpp | 97 ++++++++++++------- gui/hkl-gui.cpp | 76 +++++++++------ gui/hkl-gui.h | 1 + hkl/Hkl-5.0.gir | 207 ++++++++++++++++++++++++++++++++++------ hkl/hkl-parameter.c | 25 +++++ hkl/hkl-parameter.h | 4 + hkl/hkl-pseudoaxis-common-hkl.c | 1 + hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-sample-private.h | 13 +++ hkl/hkl-sample.c | 132 +++++++++++++++++++++++++ hkl/hkl-sample.h | 43 ++++----- tests/bindings/python.py | 2 +- tests/hkl-sample-t.c | 82 +++++++++------- 13 files changed, 528 insertions(+), 157 deletions(-) commit 25d135e97c89e2d10f58b0090be499ecdaf24b28 Author: Picca Frédéric-Emmanuel Date: Wed May 22 13:31:08 2013 +0200 HklSampleRection is now an opac struct. gui/hkl-gui-callbacks.cpp | 33 ++++++++-------- gui/hkl-gui.cpp | 11 ++++-- hkl/Hkl-5.0.gir | 98 +++++++++++++++++++---------------------------- hkl/hkl-sample-private.h | 14 ++++--- hkl/hkl-sample.c | 60 ++++++++++++++++++++++------- hkl/hkl-sample.h | 35 +++++++++-------- tests/hkl-sample-t.c | 2 +- 7 files changed, 138 insertions(+), 115 deletions(-) commit e6199cda30aaf0fd2a31456253b34c21c3a0e3ba Author: Picca Frédéric-Emmanuel Date: Tue May 21 17:05:59 2013 +0200 autopep8 Documentation/sphinx/source/pyplots/trajectory.py | 9 +++++---- Documentation/sphinx/source/pyplots/trajectory_full.py | 4 ++-- Documentation/sphinx/source/pyplots/trajectory_simple.py | 3 ++- tests/bindings/python.py | 10 ++++++---- tests/bindings/trajectory.py | 6 ++++-- 5 files changed, 19 insertions(+), 13 deletions(-) commit 7fda3edbbd686c982255ee472c646c34dd3a8e29 Author: Picca Frédéric-Emmanuel Date: Tue May 21 17:05:47 2013 +0200 removed the HklSampleList. users should deal them self with multiple samples, the way they want. I do not want to enforce a way to deal with these mutiple samples. gui/hkl-gui-callbacks.cpp | 189 +++++++++++++------------------- gui/hkl-gui.cpp | 77 +++++++------ gui/hkl-gui.h | 5 +- hkl/Hkl-5.0.gir | 212 ------------------------------------ hkl/Makefile.am | 3 +- hkl/hkl-sample-private.h | 99 +++++++++++++++++ hkl/hkl-sample.c | 267 +--------------------------------------------- hkl/hkl-sample.h | 40 +------ hkl/hkl-types.c | 13 +-- hkl/hkl-types.h | 3 - tests/hkl-sample-t.c | 81 +------------- 11 files changed, 222 insertions(+), 767 deletions(-) commit edf2f6f6b12102edf5f14babeceee1e08b982256 Author: Picca Frédéric-Emmanuel Date: Fri May 17 09:43:48 2013 +0200 move the public API of HklParameterList with the hkl_parameter_list_xxx_get/set hkl/Hkl-5.0.gir | 50 ++++++++++++++++++++--------------------- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 14 ++++++------ hkl/hkl-parameter-private.h | 4 ++-- hkl/hkl-parameter.c | 12 +++++----- hkl/hkl-parameter.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 ++-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 12 +++++----- hkl/hkl-pseudoaxis-k6c-hkl.c | 8 +++---- tests/hkl-bench-t.c | 4 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 30 ++++++++++++------------- tests/hkl-pseudoaxis-e4cv-t.c | 32 +++++++++++++------------- tests/hkl-pseudoaxis-e6c-t.c | 24 ++++++++++---------- tests/hkl-pseudoaxis-k4cv-t.c | 6 ++--- tests/hkl-pseudoaxis-k6c-t.c | 8 +++---- tests/hkl-pseudoaxis-zaxis-t.c | 4 ++-- tests/tap/hkl.c | 2 +- 17 files changed, 109 insertions(+), 109 deletions(-) commit f5d49b594260191c4a6356f23d7a347a1d1abbab Author: Picca Frédéric-Emmanuel Date: Fri May 17 09:09:00 2013 +0200 now HklParameterList is an obscure struct not exposed to the public API. in fact this structure is nothing else than a darray_parameter. But to expose this struct in the binding we need a namespace so we need this Hklxxx name. gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui.cpp | 2 +- hkl/Hkl-5.0.gir | 130 +++++++------------------------ hkl/hkl-geometry.c | 2 +- hkl/hkl-parameter-private.h | 117 ++-------------------------- hkl/hkl-parameter.c | 86 +++++++++++++------- hkl/hkl-parameter.h | 26 ++----- hkl/hkl-pseudoaxis-private.h | 17 ++-- hkl/hkl-pseudoaxis.c | 5 +- hkl/hkl-unit.c | 4 +- hkl/hkl-vector.c | 2 +- hkl/hkl-vector.h | 4 +- tests/bindings/python.py | 2 +- tests/hkl-bench-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 6 +- tests/hkl-pseudoaxis-k4cv-t.c | 4 +- tests/hkl-pseudoaxis-k6c-t.c | 4 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- 20 files changed, 133 insertions(+), 288 deletions(-) commit cfd68467cddf379ec23e449d018898910a925667 Author: Picca Frédéric-Emmanuel Date: Mon May 13 17:59:24 2013 +0200 consistant API for HklParameter hkl_parameter_xxx_get/get gui/hkl-gui-callbacks.cpp | 8 +-- gui/hkl-gui-pseudoaxes.cpp | 8 +-- gui/hkl-gui.cpp | 68 +++++++++---------- hkl/Hkl-5.0.gir | 62 +++++++++--------- hkl/hkl-axis.c | 4 +- hkl/hkl-binding.c | 4 +- hkl/hkl-factory.c | 24 +++---- hkl/hkl-geometry.c | 14 ++-- hkl/hkl-lattice.c | 90 +++++++++++++------------- hkl/hkl-parameter-private.h | 34 ++++++---- hkl/hkl-parameter.c | 24 +++---- hkl/hkl-parameter.h | 12 ++-- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +- hkl/hkl-pseudoaxis-common-hkl.c | 14 ++-- hkl/hkl-pseudoaxis-private.h | 4 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 +- hkl/hkl-sample.c | 68 +++++++++---------- hkl/hkl-type-builtins.c | 1 + hkl/hkl-type-builtins.c.template | 1 + tests/bindings/python.py | 2 +- tests/hkl-axis-t.c | 72 ++++++++++----------- tests/hkl-bench-t.c | 4 +- tests/hkl-detector-t.c | 4 +- tests/hkl-geometry-t.c | 16 ++--- tests/hkl-interval-t.c | 2 + tests/hkl-lattice-t.c | 108 +++++++++++++++---------------- tests/hkl-parameter-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 2 +- tests/hkl-pseudoaxis-e4cv-t.c | 2 +- tests/hkl-pseudoaxis-e6c-t.c | 14 ++-- tests/hkl-pseudoaxis-k4cv-t.c | 4 +- tests/hkl-pseudoaxis-k6c-t.c | 6 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 8 +-- tests/hkl-sample-t.c | 54 ++++++++-------- tests/hkl-unit-t.c | 2 + tests/tap/hkl.c | 2 +- 38 files changed, 382 insertions(+), 378 deletions(-) commit 6c36c712cfe14dfcb10efd713cfb57e1d2b1640c Author: Picca Frédéric-Emmanuel Date: Fri May 17 08:55:42 2013 +0200 start to work on the HklParameter interface. .../sphinx/source/pyplots/trajectory_full.py | 2 +- .../sphinx/source/pyplots/trajectory_simple.py | 4 +- gui/hkl-gui-callbacks.cpp | 44 ++-- gui/hkl-gui-pseudoaxes.cpp | 4 +- gui/hkl-gui.cpp | 16 +- hkl/Hkl-5.0.gir | 256 ++++----------------- hkl/hkl-axis-private.h | 3 +- hkl/hkl-parameter-private.h | 37 +++ hkl/hkl-parameter.c | 31 +-- hkl/hkl-parameter.h | 58 +---- tests/bindings/python.py | 9 +- tests/bindings/trajectory.py | 6 +- tests/hkl-axis-t.c | 10 +- tests/hkl-geometry-t.c | 14 +- tests/hkl-parameter-t.c | 2 + tests/hkl-pseudoaxis-t.c | 4 +- 16 files changed, 180 insertions(+), 320 deletions(-) commit c09c3e53c0b9f9132f95bceacf6430f05e6c04a0 Author: Picca Frédéric-Emmanuel Date: Sat May 4 18:48:18 2013 +0200 the ccan list module is now useless Makefile.am | 2 +- hkl/ccan/Makefile.am | 8 +- hkl/ccan/list/LICENSE | 1 - hkl/ccan/list/list.c | 43 --- hkl/ccan/list/list.h | 563 -------------------------------------- hkl/hkl-axis.c | 1 + hkl/hkl-geometry.c | 1 + hkl/hkl-parameter-private.h | 1 - hkl/hkl-pseudoaxis-auto-private.h | 1 + hkl/hkl-pseudoaxis.c | 1 + tests/hkl-geometry-t.c | 1 + 11 files changed, 7 insertions(+), 616 deletions(-) commit e0f3656f8f7bbe9d555f99028fe043d8ea3f0cdc Author: Picca Frédéric-Emmanuel Date: Sat May 4 18:21:11 2013 +0200 no more hkl-axis.h Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 2 +- .../sphinx/source/pyplots/trajectory_simple.py | 2 +- gui/hkl-gui-callbacks.cpp | 20 +-- gui/hkl-gui-modelcolumns.h | 6 +- gui/hkl-gui.cpp | 26 ++-- hkl/Hkl-5.0.gir | 32 ++--- hkl/Makefile.am | 2 - hkl/hkl-axis-private.h | 5 +- hkl/hkl-axis.c | 4 +- hkl/hkl-axis.h | 41 ------- hkl/hkl-binding.c | 12 +- hkl/hkl-factory.c | 24 ++-- hkl/hkl-geometry-private.h | 9 +- hkl/hkl-geometry.c | 135 ++++++++++----------- hkl/hkl-geometry.h | 7 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.h | 5 +- hkl/hkl-pseudoaxis-common-hkl.c | 20 +-- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 17 +-- hkl/hkl-pseudoaxis.h | 2 +- hkl/hkl-sample.c | 6 +- hkl3d/hkl3d.cpp | 4 +- tests/bindings/python.py | 2 +- tests/bindings/trajectory.py | 6 +- tests/hkl-axis-t.c | 36 +++--- tests/hkl-detector-t.c | 4 +- tests/hkl-geometry-t.c | 16 +-- tests/hkl-pseudoaxis-e6c-t.c | 4 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 4 +- tests/hkl3d-test-t.c | 2 +- tests/tap/hkl.c | 6 +- tests/tap/hkl.h | 4 +- 33 files changed, 214 insertions(+), 255 deletions(-) commit 68a6ee8c30a210480cf464ccce9d1a2945f82aae Author: Picca Frédéric-Emmanuel Date: Fri May 3 23:08:42 2013 +0200 create an hkl-axis-private header this is temporary until we use only HklParameter gui/hkl-gui-callbacks.cpp | 2 ++ gui/hkl-gui.cpp | 2 ++ hkl/Hkl-5.0.gir | 9 ------- hkl/Makefile.am | 1 + hkl/hkl-axis-private.h | 41 ++++++++++++++++++++++++++++++++ hkl/hkl-axis.c | 5 ++-- hkl/hkl-axis.h | 11 +-------- hkl/hkl-binding.c | 1 + hkl/hkl-factory.c | 21 ++++++++-------- hkl/hkl-geometry.c | 1 + hkl/hkl-pseudoaxis-common-hkl.c | 1 + hkl/hkl-pseudoaxis-soleil-sixs-med.c | 1 + hkl/hkl-sample.c | 1 + hkl3d/hkl3d.cpp | 1 + tests/hkl-axis-t.c | 1 + tests/hkl-detector-t.c | 1 + tests/hkl-geometry-t.c | 2 ++ tests/hkl-pseudoaxis-e6c-t.c | 4 ++-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 ++ tests/hkl-quaternion-t.c | 2 ++ 20 files changed, 76 insertions(+), 34 deletions(-) commit fd8f271aa6517b032c56a2b70c3553a35d2d0d7c Author: Picca Frédéric-Emmanuel Date: Fri May 3 22:23:35 2013 +0200 remove hkl_axis_new_copy use hkl_parameter_new_copy instead hkl/Hkl-5.0.gir | 10 ---------- hkl/hkl-axis.c | 12 ------------ hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 4 +++- tests/hkl-axis-t.c | 5 ++++- 5 files changed, 7 insertions(+), 26 deletions(-) commit ea6070d77e12e77b91fd562d2a1f08f222ee1604 Author: Picca Frédéric-Emmanuel Date: Fri May 3 22:07:08 2013 +0200 remove hkl_axis_free hkl/Hkl-5.0.gir | 10 ---------- hkl/hkl-axis.c | 5 ----- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 2 +- 4 files changed, 1 insertion(+), 18 deletions(-) commit f91a329f3ea125e4ef66d028360e3a657e8f50d0 Author: Picca Frédéric-Emmanuel Date: Fri May 3 21:52:56 2013 +0200 remove the hkl_axis_init method hkl/Hkl-5.0.gir | 16 ---------------- hkl/hkl-axis.c | 28 +++++++++++----------------- hkl/hkl-axis.h | 2 -- 3 files changed, 11 insertions(+), 35 deletions(-) commit 4af5a39374f488a0d8e5de67eefb03c3985e6d32 Author: Picca Frédéric-Emmanuel Date: Fri May 3 21:26:32 2013 +0200 create an init_copy method in the HklParameter class hkl/Hkl-5.0.gir | 30 +++++++++++++++++------------- hkl/hkl-axis.c | 15 ++++++++++----- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 7 ++++--- hkl/hkl-parameter-private.h | 8 ++++++++ hkl/hkl-parameter.c | 10 ++++++++++ hkl/hkl-parameter.h | 2 ++ 7 files changed, 51 insertions(+), 23 deletions(-) commit e8970797992533381b09b686840754ecbe1ca04e Author: Picca Frédéric-Emmanuel Date: Fri May 3 18:01:44 2013 +0200 move the set_value_smallest_in_range into the HklParameter interface hkl/Hkl-5.0.gir | 24 +++++++++++++----------- hkl/hkl-axis.c | 35 ++++++++++++++++++----------------- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 2 +- hkl/hkl-parameter-private.h | 23 +++++++++++++++-------- hkl/hkl-parameter.c | 9 +++++++++ hkl/hkl-parameter.h | 2 ++ tests/hkl-axis-t.c | 12 ++++++------ 8 files changed, 64 insertions(+), 45 deletions(-) commit 7655801f8a38d0d455e5ba8f0a2c1852b0bba5ad Author: Picca Frédéric-Emmanuel Date: Tue Apr 30 11:48:32 2013 +0200 remove useless declaration from the public API hkl/Hkl-5.0.gir | 2 -- hkl/hkl-geometry-private.h | 1 + hkl/hkl-geometry.h | 3 --- tests/hkl-source-t.c | 2 ++ 4 files changed, 3 insertions(+), 5 deletions(-) commit ac549a85915c50f37586194b8c1539eb1b52b83d Author: Picca Frédéric-Emmanuel Date: Tue Apr 30 11:35:09 2013 +0200 prepare the code for -fvisibility=hidden hkl/hkl-pseudoaxis.c | 15 +++--------- hkl/hkl-pseudoaxis.h | 64 ++++++++++++++++++++++++++-------------------------- 2 files changed, 35 insertions(+), 44 deletions(-) commit 8aa082dcc50bad799b5360454922bd3e14dc081b Author: Picca Frédéric-Emmanuel Date: Tue Apr 30 11:23:38 2013 +0200 detector struct are now privates. Documentation/sphinx/source/bindings/python.py | 4 +- Documentation/sphinx/source/pyplots/trajectory.py | 4 +- .../sphinx/source/pyplots/trajectory_full.py | 6 +- .../sphinx/source/pyplots/trajectory_simple.py | 4 +- gui/hkl-gui.cpp | 4 +- hkl/Hkl-5.0.gir | 120 ++++++++------------- hkl/Makefile.am | 2 + hkl/hkl-detector-factory.c | 1 + hkl/hkl-detector-private.h | 47 ++++++++ hkl/hkl-detector.c | 29 ++--- hkl/hkl-detector.h | 23 ++-- hkl/hkl-geometry-private.h | 15 +-- hkl/hkl-geometry.c | 9 +- hkl/hkl-geometry.h | 110 ++++--------------- hkl/hkl-pseudoaxis-auto-private.h | 1 + hkl/hkl-pseudoaxis.c | 4 +- hkl/hkl-sample.c | 8 +- hkl/hkl-sample.h | 2 +- hkl/hkl-types.c | 4 +- tests/bindings/python.py | 30 ++---- tests/bindings/trajectory.py | 4 +- tests/hkl-bench-t.c | 5 +- tests/hkl-detector-t.c | 2 +- tests/hkl-pseudoaxis-e4ch-t.c | 12 +-- tests/hkl-pseudoaxis-e4cv-t.c | 12 +-- tests/hkl-pseudoaxis-e6c-t.c | 10 +- tests/hkl-pseudoaxis-k4cv-t.c | 6 +- tests/hkl-pseudoaxis-k6c-t.c | 8 +- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 2 +- tests/hkl-pseudoaxis-t.c | 2 +- tests/hkl-pseudoaxis-zaxis-t.c | 2 +- tests/hkl-sample-t.c | 14 +-- 32 files changed, 217 insertions(+), 289 deletions(-) commit 2389c8c1a93f6bb0266e61f73bcb3004f9606adb Author: Picca Frédéric-Emmanuel Date: Tue May 14 14:45:13 2013 +0200 use only glib.h hkl/Hkl-5.0.gir | 1377 +++++++++++++++++++++++++++++++++++---------- hkl/hkl-binding-private.h | 4 +- 2 files changed, 1069 insertions(+), 312 deletions(-) commit cf25c86450c7ccef6ca7d2f1c37d8d2c67f24d06 Author: Frédéric-Emmanuel PICCA Date: Tue Apr 9 16:54:52 2013 +0200 remove the HklGeometryConfig and use the HklFactory instead gui/hkl-gui.cpp | 17 +++--- hkl/Hkl-5.0.gir | 2 - hkl/hkl-factory.c | 128 +++++++++++++++++++++------------------------ hkl/hkl-factory.h | 4 +- hkl/hkl-geometry-private.h | 27 ++-------- hkl/hkl-geometry.c | 19 +++---- hkl/hkl-geometry.h | 1 - tests/hkl-detector-t.c | 4 +- tests/hkl-geometry-t.c | 20 +++---- 9 files changed, 95 insertions(+), 127 deletions(-) commit 100387fdcf8bd86ba72325289258bee784b96b3c Author: Picca Frédéric-Emmanuel Date: Mon Apr 22 23:27:01 2013 +0200 first step for a private HklGeometry gui/hkl-gui-callbacks.cpp | 64 ++-- gui/hkl-gui-modelcolumns.h | 9 +- gui/hkl-gui.cpp | 59 ++-- hkl/Hkl-5.0.gir | 131 ++++++++- hkl/hkl-axis.c | 22 ++ hkl/hkl-axis.h | 10 +- hkl/hkl-binding-private.h | 6 + hkl/hkl-binding.c | 57 ++-- hkl/hkl-detector.c | 2 +- hkl/hkl-factory.c | 24 +- hkl/hkl-geometry-private.h | 20 +- hkl/hkl-geometry.c | 481 +++++++++++++++++-------------- hkl/hkl-geometry.h | 24 +- hkl/hkl-macros.h | 63 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 61 ++-- hkl/hkl-pseudoaxis-common-psi.c | 16 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 4 +- hkl/hkl-pseudoaxis-private.h | 2 + hkl/hkl-pseudoaxis-soleil-sixs-med.c | 15 +- hkl/hkl-pseudoaxis.c | 27 +- hkl/hkl-pseudoaxis.h | 2 + hkl/hkl-sample.c | 21 +- hkl3d/hkl3d.cpp | 20 +- tests/Makefile.am | 6 +- tests/bindings/trajectory.py | 9 +- tests/hkl-axis-t.c | 28 +- tests/hkl-bench-t.c | 11 +- tests/hkl-detector-t.c | 6 +- tests/hkl-geometry-t.c | 50 ++-- tests/hkl-pseudoaxis-e4ch-t.c | 100 ++++--- tests/hkl-pseudoaxis-e4cv-t.c | 32 +- tests/hkl-pseudoaxis-e6c-t.c | 121 ++++---- tests/hkl-pseudoaxis-k4cv-t.c | 54 ++-- tests/hkl-pseudoaxis-k6c-t.c | 63 ++-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 28 +- tests/hkl-pseudoaxis-t.c | 10 +- tests/hkl-pseudoaxis-zaxis-t.c | 10 +- tests/hkl-sample-t.c | 139 +++++---- tests/hkl3d-test-t.c | 28 +- 40 files changed, 1063 insertions(+), 774 deletions(-) commit d7e4cbd8a052d89921488581ef670b873ebfef76 Author: Picca Frédéric-Emmanuel Date: Wed Apr 17 09:55:39 2013 +0200 to delete hkl/Hkl-5.0.gir | 504 +------------------------------------------ hkl/hkl-detector.c | 2 + hkl/hkl-geometry-private.h | 185 ++++++++++++++++ hkl/hkl-geometry.c | 2 +- hkl/hkl-geometry.h | 159 +++++--------- hkl/hkl-pseudoaxis-private.h | 4 +- hkl/hkl-sample.c | 4 +- hkl/hkl-type-builtins.c | 26 --- hkl/hkl-type-builtins.h | 4 - 9 files changed, 248 insertions(+), 642 deletions(-) commit bc488da1b83aee0ce0b9f27466ade8db3a041e92 Author: Picca Frédéric-Emmanuel Date: Sat Mar 30 18:03:46 2013 +0100 switch to the new factory API and remove the old one Documentation/sphinx/source/bindings/python.py | 7 +- .../sphinx/source/pyplots/trajectory_full.py | 7 +- .../sphinx/source/pyplots/trajectory_simple.py | 7 +- gui/hkl-gui-callbacks.cpp | 11 +- gui/hkl-gui.cpp | 11 +- hkl/Hkl-5.0.gir | 312 ++------------------ hkl/hkl-factory.c | 316 ++++++++++++--------- hkl/hkl-factory.h | 194 +------------ tests/bindings/python.py | 17 +- tests/bindings/trajectory.py | 14 +- tests/hkl-axis-t.c | 1 + tests/hkl-bench-t.c | 18 +- tests/hkl-pseudoaxis-e4ch-t.c | 48 ++-- tests/hkl-pseudoaxis-e4cv-t.c | 48 ++-- tests/hkl-pseudoaxis-e6c-t.c | 40 +-- tests/hkl-pseudoaxis-k4cv-t.c | 24 +- tests/hkl-pseudoaxis-k6c-t.c | 32 +-- tests/hkl-pseudoaxis-soleil-sixs-med-t.c | 8 +- tests/hkl-pseudoaxis-t.c | 122 ++------ tests/hkl-pseudoaxis-zaxis-t.c | 8 +- tests/hkl-sample-t.c | 42 +-- tests/hkl3d-test-t.c | 6 +- 22 files changed, 402 insertions(+), 891 deletions(-) commit f85a7573903e27f1ae9fbab207ee93b8deb7c7e3 Author: Picca Frédéric-Emmanuel Date: Sat Mar 30 17:45:49 2013 +0100 move some code to be more user friendly hkl/hkl-pseudoaxis-auto-private.h | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) commit 68e6229e2499d60cf20236f6e91053ee3e782d0a Author: Picca Frédéric-Emmanuel Date: Sat Mar 30 17:45:03 2013 +0100 fix a bug when DEBUG was set change list -> darray hkl/hkl-pseudoaxis-auto.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2270e73cdaa27a76e1e9c06258f6b8db16774b21 Author: Picca Frédéric-Emmanuel Date: Sat Mar 30 17:44:00 2013 +0100 fix a bug in the constant_incidence K6C mode the .get method was empty. hkl/hkl-pseudoaxis-common-hkl-private.h | 6 ++++++ hkl/hkl-pseudoaxis-k6c-hkl.c | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) commit 6715594ca1cab6b73695874de34a5d33809ff5a8 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 29 13:42:56 2013 +0100 now use constructor for the hkl_engine_list_xxx hkl/hkl-factory.c | 333 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 238 insertions(+), 95 deletions(-) commit feb9e34fa5c0a25b33d410976737fb01e83f9a90 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 29 11:37:43 2013 +0100 remove the CREATE_CONSTRUCTOR in favor of futur hkl_geometry_new_xxx hkl/hkl-factory.c | 167 ++++++++++++++++++++++++------------------------------ hkl/hkl-factory.h | 4 +- 2 files changed, 75 insertions(+), 96 deletions(-) commit 649fa8da98c0b7959af8af970ac4e603db085907 Author: Picca Frédéric-Emmanuel Date: Wed Mar 27 17:31:47 2013 +0100 clean does not remove the figures (it takes time to rebuild) Documentation/figures/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d2a263957909971304b19e5dd0c82225244de31d Author: Frédéric-Emmanuel PICCA Date: Tue Mar 26 18:03:25 2013 +0100 add autodata since it seems to work with gcc and clang Makefile.am | 2 +- configure.ac | 18 ++ hkl/Hkl-5.0.gir | 5 + hkl/Makefile.am | 1 + hkl/ccan/Makefile.am | 7 + hkl/ccan/autodata/LICENSE | 1 + hkl/ccan/autodata/autodata.c | 80 +++++++++ hkl/ccan/autodata/autodata.h | 108 ++++++++++++ hkl/ccan/compiler/LICENSE | 1 + hkl/ccan/compiler/compiler.h | 217 ++++++++++++++++++++++++ hkl/ccan/list/list.h | 90 ++++++++++ hkl/ccan/noerr/LICENSE | 1 + hkl/ccan/noerr/noerr.c | 43 +++++ hkl/ccan/noerr/noerr.h | 33 ++++ hkl/ccan/ptr_valid/LICENSE | 1 + hkl/ccan/ptr_valid/ptr_valid.c | 339 ++++++++++++++++++++++++++++++++++++ hkl/ccan/ptr_valid/ptr_valid.h | 229 +++++++++++++++++++++++++ hkl/hkl-binding.c | 18 +- hkl/hkl-factory-private.h | 34 ++++ hkl/hkl-factory.c | 377 ++++++++++++++++++++++++----------------- hkl/hkl-factory.h | 2 + 21 files changed, 1440 insertions(+), 167 deletions(-) commit a5135f4e8f3923888f6aa89792b38f87ea51fcc2 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 26 15:39:31 2013 +0100 move the geometry-factory and the pseudoaxis-factory inthe same file in order to provide an unifyed factory class, prepare the transition and move all factories in the same hkl-factory unit. hkl.h | 3 +- hkl/Hkl-5.0.gir | 23 ++++ hkl/Makefile.am | 12 +- hkl/hkl-binding-private.h | 7 + hkl/hkl-binding.c | 32 +++++ hkl/{hkl-geometry-factory.c => hkl-factory.c} | 185 +++++++++++++++++++++++++- hkl/{hkl-geometry-factory.h => hkl-factory.h} | 15 ++- hkl/hkl-pseudoaxis-factory.c | 179 ------------------------- hkl/hkl-pseudoaxis-factory.h | 34 ----- tests/bindings/python.py | 15 +++ 10 files changed, 278 insertions(+), 227 deletions(-) commit 90e9dba1f5fed75580b61bbd26ca015c45e66536 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 25 17:43:41 2013 +0100 remove now useless TESTS file tests/Makefile.am | 2 -- tests/TESTS | 22 ---------------------- 2 files changed, 24 deletions(-) commit 90f432f35eae1a8d2ac3fd988457d261b761ca5c Author: Frédéric-Emmanuel PICCA Date: Mon Mar 25 17:38:59 2013 +0100 move the hkl3d test under tests directory configure.ac | 1 - tests/Makefile.am | 16 +++++++++++----- tests/{hkl3d/test-t.c => hkl3d-test-t.c} | 0 tests/hkl3d/Makefile.am | 21 --------------------- 4 files changed, 11 insertions(+), 27 deletions(-) commit 0814b7c21510a9c2059ba050d7fad7f17cc9b943 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 25 14:57:39 2013 +0100 move all hkl tests under tests/ configure.ac | 1 - tests/Makefile.am | 52 +++++++++++++++++++--- tests/{hkl/axis-t.c => hkl-axis-t.c} | 0 tests/{hkl/bench-t.c => hkl-bench-t.c} | 0 tests/{hkl/detector-t.c => hkl-detector-t.c} | 0 tests/{hkl/error-t.c => hkl-error-t.c} | 0 tests/{hkl/geometry-t.c => hkl-geometry-t.c} | 0 tests/{hkl/interval-t.c => hkl-interval-t.c} | 0 tests/{hkl/lattice-t.c => hkl-lattice-t.c} | 0 tests/{hkl/matrix-t.c => hkl-matrix-t.c} | 0 tests/{hkl/parameter-t.c => hkl-parameter-t.c} | 0 ...pseudoaxis-e4ch-t.c => hkl-pseudoaxis-e4ch-t.c} | 0 ...pseudoaxis-e4cv-t.c => hkl-pseudoaxis-e4cv-t.c} | 0 .../pseudoaxis-e6c-t.c => hkl-pseudoaxis-e6c-t.c} | 0 ...pseudoaxis-k4cv-t.c => hkl-pseudoaxis-k4cv-t.c} | 0 .../pseudoaxis-k6c-t.c => hkl-pseudoaxis-k6c-t.c} | 0 ...-med-t.c => hkl-pseudoaxis-soleil-sixs-med-t.c} | 0 tests/{hkl/pseudoaxis-t.c => hkl-pseudoaxis-t.c} | 0 ...eudoaxis-zaxis-t.c => hkl-pseudoaxis-zaxis-t.c} | 0 tests/{hkl/quaternion-t.c => hkl-quaternion-t.c} | 0 tests/{hkl/sample-t.c => hkl-sample-t.c} | 0 tests/{hkl/source-t.c => hkl-source-t.c} | 0 tests/{hkl/unit-t.c => hkl-unit-t.c} | 0 tests/{hkl/vector-t.c => hkl-vector-t.c} | 0 tests/hkl/Makefile.am | 39 ---------------- 25 files changed, 46 insertions(+), 46 deletions(-) commit d200ef67880c145c00d9d65d050220cc887bcf36 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 13 13:36:13 2013 +0100 fix the ccan-update target now the Makefile.in and the Makefile are not erased during an upgrade Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 68df23964052ab3e58466f876bc0bff5320edb82 Author: Picca Frédéric-Emmanuel Date: Sun Mar 24 11:13:34 2013 +0100 switch to c-tap-harness 2.1 Makefile.am | 2 +- configure.ac | 10 +- {test => tests}/Makefile.am | 2 +- {test => tests}/TESTS | 0 {test => tests}/bindings/Makefile.am | 0 {test => tests}/bindings/python.py | 0 {test => tests}/bindings/trajectory.py | 0 {test => tests}/hkl/Makefile.am | 4 +- {test => tests}/hkl/axis-t.c | 0 {test => tests}/hkl/bench-t.c | 0 {test => tests}/hkl/detector-t.c | 0 {test => tests}/hkl/error-t.c | 0 {test => tests}/hkl/geometry-t.c | 1 + {test => tests}/hkl/interval-t.c | 1 + {test => tests}/hkl/lattice-t.c | 1 + {test => tests}/hkl/matrix-t.c | 1 + {test => tests}/hkl/parameter-t.c | 1 + {test => tests}/hkl/pseudoaxis-e4ch-t.c | 0 {test => tests}/hkl/pseudoaxis-e4cv-t.c | 0 {test => tests}/hkl/pseudoaxis-e6c-t.c | 0 {test => tests}/hkl/pseudoaxis-k4cv-t.c | 0 {test => tests}/hkl/pseudoaxis-k6c-t.c | 0 {test => tests}/hkl/pseudoaxis-soleil-sixs-med-t.c | 1 + {test => tests}/hkl/pseudoaxis-t.c | 0 {test => tests}/hkl/pseudoaxis-zaxis-t.c | 0 {test => tests}/hkl/quaternion-t.c | 1 + {test => tests}/hkl/sample-t.c | 1 + {test => tests}/hkl/source-t.c | 1 + {test => tests}/hkl/unit-t.c | 1 + {test => tests}/hkl/vector-t.c | 1 + {test => tests}/hkl3d/Makefile.am | 4 +- {test => tests}/hkl3d/test-t.c | 0 {test => tests}/runtests.c | 479 +++++++++++++++------ {test => tests}/tap/Makefile.am | 5 +- {test => tests}/tap/basic.c | 197 +++++++-- {test => tests}/tap/basic.h | 55 ++- tests/tap/float.c | 67 +++ tests/tap/float.h | 42 ++ {test => tests}/tap/hkl.c | 0 {test => tests}/tap/hkl.h | 0 {test => tests}/tap/libtap.sh | 0 tests/tap/macros.h | 88 ++++ 42 files changed, 740 insertions(+), 226 deletions(-) commit a969372f867880af33f05a25ae7d3c36a41dbd6f Author: Picca Frédéric-Emmanuel Date: Tue Mar 12 11:09:13 2013 +0100 bump the gtk-doc api version to 5 Documentation/api/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 91f3eb5ea2186e2842f8c38fb5f21a53f6a534b3 Author: Picca Frédéric-Emmanuel Date: Tue Mar 12 11:08:04 2013 +0100 do not install the .png thoses png will b einstalled with the sphinx documentation Documentation/figures/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a501bf97cb828617679815c70af288e58a1974de Author: Picca Frédéric-Emmanuel Date: Tue Mar 12 10:54:06 2013 +0100 move ccan library at the right place Makefile.am | 62 ++++++++++++++++++++------ ccan/Makefile.am | 9 ---- configure.ac | 2 +- gui/Makefile.am | 1 - gui/hkl3d/Makefile.am | 1 - hkl/Makefile.am | 4 +- hkl/ccan/Makefile.am | 19 ++++++++ {ccan => hkl}/ccan/array_size/LICENSE | 0 {ccan => hkl}/ccan/array_size/array_size.h | 2 +- {ccan => hkl}/ccan/build_assert/LICENSE | 0 {ccan => hkl}/ccan/build_assert/build_assert.h | 0 {ccan => hkl}/ccan/check_type/LICENSE | 0 {ccan => hkl}/ccan/check_type/check_type.h | 2 +- {ccan => hkl}/ccan/container_of/LICENSE | 0 {ccan => hkl}/ccan/container_of/container_of.h | 2 +- {ccan => hkl}/ccan/darray/LICENSE | 0 {ccan => hkl}/ccan/darray/darray.h | 0 {ccan => hkl}/ccan/list/LICENSE | 0 {ccan => hkl}/ccan/list/list.c | 0 {ccan => hkl}/ccan/list/list.h | 4 +- hkl/hkl-axis.h | 2 +- hkl/hkl-geometry.h | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.h | 4 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 2 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-pseudoaxis.h | 2 +- {ccan => hkl}/licenses/BSD-MIT | 0 {ccan => hkl}/licenses/CC0 | 0 hkl3d/Makefile.am | 1 - test/hkl/Makefile.am | 1 - test/hkl3d/Makefile.am | 1 - test/tap/Makefile.am | 3 +- 46 files changed, 97 insertions(+), 59 deletions(-) commit 42e6cefff257fbf5dba05205c38891ff629176b3 Author: Picca Frédéric-Emmanuel Date: Sun Mar 10 17:08:06 2013 +0100 remove the autodata module for now Makefile.am | 3 +- ccan/Makefile.am | 7 - ccan/ccan/autodata/LICENSE | 1 - ccan/ccan/autodata/autodata.c | 80 ---------- ccan/ccan/autodata/autodata.h | 108 ------------- ccan/ccan/compiler/LICENSE | 1 - ccan/ccan/compiler/compiler.h | 217 ------------------------- ccan/ccan/noerr/LICENSE | 1 - ccan/ccan/noerr/noerr.c | 43 ----- ccan/ccan/noerr/noerr.h | 33 ---- ccan/ccan/ptr_valid/LICENSE | 1 - ccan/ccan/ptr_valid/ptr_valid.c | 339 ---------------------------------------- ccan/ccan/ptr_valid/ptr_valid.h | 229 --------------------------- 13 files changed, 2 insertions(+), 1061 deletions(-) commit a94c4365a7e06f9df0744e0ffa34f36a834107f6 Author: Picca Frédéric-Emmanuel Date: Sun Mar 10 16:55:05 2013 +0100 remove the non working swig binding for now configure.ac | 13 ------------- hkl/Makefile.am | 21 --------------------- 2 files changed, 34 deletions(-) commit d8bef91639330f8f1c7e19474285b5ca6e26d05c Author: Picca Frédéric-Emmanuel Date: Sun Mar 10 16:08:36 2013 +0100 now the ccan part can be updated with the ccan-update target Makefile.am | 15 ++ ccan/Makefile.am | 23 +- ccan/ccan/array_size/LICENSE | 1 + ccan/{ => ccan}/array_size/array_size.h | 1 + ccan/{darray => ccan/autodata}/LICENSE | 0 ccan/ccan/autodata/autodata.c | 80 +++++++ ccan/ccan/autodata/autodata.h | 108 +++++++++ ccan/ccan/build_assert/LICENSE | 1 + ccan/{ => ccan}/build_assert/build_assert.h | 1 + ccan/ccan/check_type/LICENSE | 1 + ccan/{ => ccan}/check_type/check_type.h | 3 +- ccan/ccan/compiler/LICENSE | 1 + ccan/ccan/compiler/compiler.h | 217 ++++++++++++++++++ ccan/ccan/container_of/LICENSE | 1 + ccan/{ => ccan}/container_of/container_of.h | 1 + ccan/ccan/darray/LICENSE | 1 + ccan/{ => ccan}/darray/darray.h | 2 +- ccan/ccan/list/LICENSE | 1 + ccan/{ => ccan}/list/list.c | 2 +- ccan/{ => ccan}/list/list.h | 6 +- ccan/ccan/noerr/LICENSE | 1 + ccan/ccan/noerr/noerr.c | 43 ++++ ccan/ccan/noerr/noerr.h | 33 +++ ccan/ccan/ptr_valid/LICENSE | 1 + ccan/ccan/ptr_valid/ptr_valid.c | 339 ++++++++++++++++++++++++++++ ccan/ccan/ptr_valid/ptr_valid.h | 229 +++++++++++++++++++ ccan/licenses/BSD-MIT | 17 ++ ccan/licenses/CC0 | 28 +++ gui/Makefile.am | 1 + gui/hkl3d/Makefile.am | 1 + hkl/Makefile.am | 1 + hkl/hkl-macros.h | 2 + hkl/hkl-parameter.h | 2 +- hkl3d/Makefile.am | 1 + test/hkl/Makefile.am | 1 + test/hkl3d/Makefile.am | 3 +- test/tap/Makefile.am | 5 +- 37 files changed, 1157 insertions(+), 17 deletions(-) commit 0c9b350b7bd0a2746dc66883e59f1ed6b99a525b Author: Picca Frédéric-Emmanuel Date: Sat Mar 9 19:19:15 2013 +0100 fix the test suite. hkl3d SUBDIRS was built after . which is wrong. So remove . to avoid this. test/Makefile.am | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 93c9f9e6e091b55f8e1832db965432324271b5d1 Author: Picca Frédéric-Emmanuel Date: Wed Feb 6 20:45:59 2013 +0100 add the med2_3_slits figure Documentation/figures/med2_3_slits.asy | 79 ++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) commit c3425266e928836b743c3345afbe76d67c764655 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 17:35:58 2013 +0100 pythn API evolves so the python script of the documentaiton should be fixed Documentation/sphinx/source/pyplots/trajectory_simple.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9dce659205905d1336bb70d73dd497f249177df9 Merge: 86505487 776b3257 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 17:26:13 2013 +0100 Merge branch 'maint' into next Conflicts: hkl/Makefile.am hkl/hkl-pseudoaxis-common-q.c hkl/hkl-pseudoaxis-factory.c hkl/hkl-pseudoaxis-soleil-sixs-med.c hkl/pom.xml test/Makefile.am commit 776b32570079571ce35f7a3afa74d78083c6d30e Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 14:37:24 2013 +0100 add the qper_qpar figure Documentation/figures/Makefile.am | 6 +- Documentation/figures/qper_qpar.asy | 66 ++++++++++++++++++++++ .../sphinx/source/diffractometers/med2_3.rst | 2 +- Documentation/sphinx/source/pseudo.rst | 8 ++- 4 files changed, 77 insertions(+), 5 deletions(-) commit 50df26c679c7f41064b4bd293f3108d93c638f4a Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 16:54:43 2013 +0100 switch to C99 and release the soleil-six-med qper_qpar test constrain configure.ac | 2 +- hkl/Makefile.am | 2 +- test/Makefile.am | 2 +- test/hkl-test-pseudoaxis-soleil-sixs-med.c | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) commit 8650548748a4477cfa862767ceee78338609568d Author: Frédéric-Emmanuel PICCA Date: Fri Jan 25 18:21:11 2013 +0100 add a non working swig binding configure.ac | 27 +++++++++++++++++++++++++++ hkl/Makefile.am | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) commit 370dcd6bed0b708956b2d6fe26987aa0005fa935 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 6 16:06:00 2012 +0100 add the HklGeometryConfig description member populate it from the documentation the idea is to use this memeber to auto-generate the diffractometer part documentation. This way the descption of a geometry will be coherent in the documentation and in the code. hkl/Hkl-5.0.gir | 203 +++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-geometry-factory.h | 189 ++++++++++++++++++++++++++++++++++++++--- hkl/hkl-geometry.h | 1 + 3 files changed, 381 insertions(+), 12 deletions(-) commit 12998fb67fdd6890a2e7ba2b6f0abb22214d5cab Author: Picca Frédéric-Emmanuel Date: Wed Jan 30 22:33:28 2013 +0100 add the missing test file test/Makefile.am | 1 + test/hkl-test-pseudoaxis-soleil-sixs-med.c | 106 +++++++++++++++++++++++++++++ test/main.c | 2 +- 3 files changed, 108 insertions(+), 1 deletion(-) commit 9e8639a3e673d6e831795088963b6b000509240d Author: Frédéric-Emmanuel PICCA Date: Wed Jan 30 09:55:21 2013 +0100 unactive for now the soleil-sixs-med-2+3 test until I commit the missing file test/Makefile.am | 1 - test/main.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) commit 58729510c1a545bce8fa030bbd9273f95cb91b67 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 30 09:46:31 2013 +0100 now all pseudo axes of the soleil-sixs-med-2-3 diffractometer are using the slits hkl/hkl-pseudoaxis-factory.c | 1 + hkl/hkl-pseudoaxis-soleil-sixs-med.c | 86 +++++++++++++----------------------- hkl/hkl-pseudoaxis-soleil-sixs-med.h | 2 + 3 files changed, 34 insertions(+), 55 deletions(-) commit 57054a57fb77236d670e1111f412700323a75367 Author: Picca Frédéric-Emmanuel Date: Sun Jan 27 12:49:31 2013 +0100 add test for soleil-sixs-med2_3 and fix qper_qpar hkl/Makefile.am | 2 +- hkl/hkl-pseudoaxis-common-q.c | 25 +++++++++++++++++++------ test/Makefile.am | 7 ++++--- test/main.c | 1 + 4 files changed, 25 insertions(+), 10 deletions(-) commit c50ba8a06ad495dd63c95722ae3d4c25bf60c48e Author: Picca Frédéric-Emmanuel Date: Tue Jan 15 21:55:23 2013 +0100 update the pom.xml file for the new release hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 43badf8d5a97de4a319a7464b45c5fd2961a4170 Author: Picca Frédéric-Emmanuel Date: Mon Jan 14 17:35:23 2013 +0100 copyright for 2013 Documentation/sphinx/source/conf.py.in | 2 +- gui/hkl-gui-3d.cpp | 2 +- gui/hkl-gui-3d.h | 2 +- gui/hkl-gui-callbacks.cpp | 2 +- gui/hkl-gui-modelcolumns.h | 2 +- gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- gui/hkl-gui.cpp | 2 +- gui/hkl-gui.h | 2 +- gui/hkl3d/GL_ShapeDrawer.cpp | 2 +- gui/hkl3d/GL_ShapeDrawer.h | 2 +- gui/hkl3d/hkl3d-gui-model.cpp | 2 +- gui/hkl3d/hkl3d-gui-model.h | 2 +- gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- gui/hkl3d/hkl3d-gui-scene.h | 2 +- gui/hkl3d/hkl3d-gui-view.cpp | 2 +- gui/hkl3d/hkl3d-gui-view.h | 2 +- gui/main.cpp | 2 +- hkl/hkl-axis.c | 2 +- hkl/hkl-axis.h | 2 +- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-detector-factory.c | 2 +- hkl/hkl-detector-factory.h | 2 +- hkl/hkl-detector.c | 2 +- hkl/hkl-detector.h | 2 +- hkl/hkl-geometry-factory.c | 2 +- hkl/hkl-geometry-factory.h | 2 +- hkl/hkl-geometry.c | 2 +- hkl/hkl-geometry.h | 2 +- hkl/hkl-interval.c | 2 +- hkl/hkl-interval.h | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-lattice.h | 2 +- hkl/hkl-macros.c | 2 +- hkl/hkl-macros.h | 2 +- hkl/hkl-matrix.c | 2 +- hkl/hkl-matrix.h | 2 +- hkl/hkl-parameter-private.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-parameter.h | 2 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi-private.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q-private.h | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e4c-private.h | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-e6c-private.h | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-factory.c | 2 +- hkl/hkl-pseudoaxis-factory.h | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k4cv-private.h | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-private.h | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 2 +- hkl/hkl-pseudoaxis-petra3-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 2 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-pseudoaxis.h | 2 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-quaternion.h | 2 +- hkl/hkl-sample.c | 2 +- hkl/hkl-sample.h | 2 +- hkl/hkl-source.c | 2 +- hkl/hkl-source.h | 2 +- hkl/hkl-types.c | 2 +- hkl/hkl-types.h | 2 +- hkl/hkl-unit.c | 2 +- hkl/hkl-unit.h | 2 +- hkl/hkl-vector.c | 2 +- hkl/hkl-vector.h | 2 +- test/bindings/python.py | 2 +- test/hkl/axis-t.c | 2 +- test/hkl/bench-t.c | 2 +- test/hkl/detector-t.c | 2 +- test/hkl/error-t.c | 2 +- test/hkl/geometry-t.c | 2 +- test/hkl/interval-t.c | 2 +- test/hkl/lattice-t.c | 2 +- test/hkl/main-t.c | 2 +- test/hkl/matrix-t.c | 2 +- test/hkl/parameter-t.c | 2 +- test/hkl/pseudoaxis-e4ch-t.c | 2 +- test/hkl/pseudoaxis-e4cv-t.c | 2 +- test/hkl/pseudoaxis-e6c-t.c | 2 +- test/hkl/pseudoaxis-k4cv-t.c | 2 +- test/hkl/pseudoaxis-k6c-t.c | 2 +- test/hkl/pseudoaxis-t.c | 2 +- test/hkl/pseudoaxis-zaxis-t.c | 2 +- test/hkl/quaternion-t.c | 2 +- test/hkl/sample-t.c | 2 +- test/hkl/source-t.c | 2 +- test/hkl/unit-t.c | 2 +- test/hkl/vector-t.c | 2 +- test/hkl3d/test-t.c | 2 +- 109 files changed, 109 insertions(+), 109 deletions(-) commit 349b0c37f04f1d0253ec135ca4e5f4a67ce45801 Merge: 11247a9d 07205880 Author: Picca Frédéric-Emmanuel Date: Mon Jan 14 12:28:22 2013 +0100 Merge branch 'maint' into next Conflicts: hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry.h hkl/hkl-pseudoaxis-common-q-private.h hkl/hkl-pseudoaxis-factory.c hkl/hkl-pseudoaxis-soleil-sixs-med-private.h hkl/hkl-pseudoaxis-soleil-sixs-med.c test/bench.c commit 11247a9de256db36f2d0c03d18aefa77e8af3ab4 Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 18:26:18 2012 +0100 add the HKL_DEPRECATED macros to mark deprecated members and functions hkl/hkl-macros.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 121b45b6bd424f8b687096879be96ebc13d7d07e Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 16:57:41 2012 +0100 HklEngineOperations is now private hkl/Hkl-5.0.gir | 2 -- hkl/hkl-pseudoaxis-private.h | 1 + hkl/hkl-pseudoaxis.h | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) commit 18f9bf140924ff3fb5ab0bca36b001e126604e9f Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 16:49:34 2012 +0100 HklMode expose only a public API and HklModeInfo in now private gui/hkl-gui-pseudoaxes.cpp | 8 +++++--- gui/hkl-gui.cpp | 5 +++-- hkl/Hkl-5.0.gir | 42 +++++++++++++----------------------------- hkl/hkl-pseudoaxis-private.h | 17 +++++++++++++++++ hkl/hkl-pseudoaxis.c | 22 ++++++++++++++++++++++ hkl/hkl-pseudoaxis.h | 21 ++++----------------- test/bindings/python.py | 20 ++++++++++++++++++++ test/bindings/trajectory.py | 4 ++-- test/hkl/bench-t.c | 8 +++++--- test/hkl/pseudoaxis-e4ch-t.c | 22 +++++++++++++--------- test/hkl/pseudoaxis-e4cv-t.c | 29 ++++++++++++++++++----------- test/hkl/pseudoaxis-e6c-t.c | 23 +++++++++++++---------- test/hkl/pseudoaxis-k4cv-t.c | 13 +++++++++---- test/hkl/pseudoaxis-k6c-t.c | 19 +++++++++++++------ test/hkl/pseudoaxis-t.c | 6 +++--- 15 files changed, 160 insertions(+), 99 deletions(-) commit 18a26a250ced536249feba9671e9995ea24f37d9 Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 13:34:11 2012 +0100 HklEngineInod is now private this is an implementation detail. hkl/Hkl-5.0.gir | 11 ----------- hkl/hkl-pseudoaxis-private.h | 8 ++++++++ hkl/hkl-pseudoaxis.h | 7 ------- 3 files changed, 8 insertions(+), 18 deletions(-) commit dea78b96d506a4f7d973c436a7375fb14a600d1b Author: Picca Frédéric-Emmanuel Date: Sun Dec 30 13:27:07 2012 +0100 now HklEngine and HklEngineList expose only a restrained public API gui/hkl-gui-pseudoaxes.cpp | 19 ++++++---- gui/hkl-gui.cpp | 10 +++-- hkl/Hkl-5.0.gir | 87 +++++++++++++++++++++++++------------------ hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 6 ++- hkl/hkl-parameter.h | 4 +- hkl/hkl-pseudoaxis-private.h | 32 +++++++++++----- hkl/hkl-pseudoaxis.c | 74 ++++++++++++++++++++++++++++++++++-- hkl/hkl-pseudoaxis.h | 26 ++++++------- hkl/hkl-types.c | 22 +++++++++++ hkl/hkl-types.h | 3 ++ test/Makefile.am | 4 +- test/bindings/python.py | 14 ++++--- test/bindings/trajectory.py | 13 +++---- test/hkl/bench-t.c | 36 ++++++++++-------- test/hkl/pseudoaxis-e4ch-t.c | 62 ++++++++++++++++++++---------- test/hkl/pseudoaxis-e4cv-t.c | 57 ++++++++++++++++++---------- test/hkl/pseudoaxis-e6c-t.c | 71 ++++++++++++++++++++++++----------- test/hkl/pseudoaxis-k4cv-t.c | 28 ++++++++++---- test/hkl/pseudoaxis-k6c-t.c | 42 +++++++++++++++------ test/hkl/pseudoaxis-t.c | 47 ++++++++++++----------- test/hkl/pseudoaxis-zaxis-t.c | 6 ++- test/tap/hkl.c | 28 ++++++++------ 23 files changed, 467 insertions(+), 226 deletions(-) commit 2a2c163c8b6ebbf17089a22cfae30658b29c97a8 Author: Picca Frédéric-Emmanuel Date: Fri Nov 2 18:33:02 2012 +0100 be consistant and rename the darray type as explain in the darray exemples hkl/Hkl-5.0.gir | 30 ++++-------------------------- hkl/hkl-pseudoaxis.h | 8 ++++---- 2 files changed, 8 insertions(+), 30 deletions(-) commit 8cfde2224957f5ceae925815a4ab5deae80efbc0 Author: Picca Frédéric-Emmanuel Date: Fri Nov 2 18:16:20 2012 +0100 now the HklEngineList is completely private Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 6 +-- .../sphinx/source/pyplots/trajectory_simple.py | 6 +-- gui/hkl-gui-callbacks.cpp | 3 +- gui/hkl-gui-pseudoaxes.cpp | 6 +-- gui/hkl-gui.cpp | 9 ++-- hkl/Hkl-5.0.gir | 63 ++++++++++++++-------- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 9 ++-- hkl/hkl-pseudoaxis-private.h | 9 ++++ hkl/hkl-pseudoaxis.c | 56 +++++++++++++++++++ hkl/hkl-pseudoaxis.h | 35 ++++++------ test/bindings/python.py | 6 +-- test/bindings/trajectory.py | 7 ++- test/hkl/bench-t.c | 3 +- test/hkl/pseudoaxis-e4ch-t.c | 18 +++++-- test/hkl/pseudoaxis-e4cv-t.c | 63 ++++++++++++---------- test/hkl/pseudoaxis-e6c-t.c | 32 ++++++----- test/hkl/pseudoaxis-k4cv-t.c | 16 ++++-- test/hkl/pseudoaxis-k6c-t.c | 16 ++++-- test/hkl/pseudoaxis-t.c | 18 +++---- test/hkl/pseudoaxis-zaxis-t.c | 4 +- 22 files changed, 252 insertions(+), 137 deletions(-) commit 07205880efe1252cd12d9a12aafc2f956017c9df Author: Picca Frédéric-Emmanuel Date: Mon Oct 15 20:40:27 2012 +0200 invert the eta_a rotation Documentation/sphinx/source/diffractometers/med2_3.rst | 2 +- hkl/hkl-geometry-factory.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 881ba819a44b71084ad7e1037d4f726cdc4eca3c Author: Picca Frédéric-Emmanuel Date: Sun Oct 14 10:35:29 2012 +0200 create a dedicated HklModeAutoWithInit hkl/Hkl-5.0.gir | 9 ----- hkl/hkl-pseudoaxis-auto-private.h | 74 +++++++++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-auto.c | 13 +++++++ hkl/hkl-pseudoaxis-k6c-hkl.c | 11 +++--- hkl/hkl-pseudoaxis-private.h | 55 +++++++++-------------------- hkl/hkl-pseudoaxis.c | 3 -- hkl/hkl-pseudoaxis.h | 3 -- 7 files changed, 110 insertions(+), 58 deletions(-) commit d89ba8350d8ea3920faa72fb980de6f90a2331e5 Author: Picca Frédéric-Emmanuel Date: Sat Oct 13 10:52:42 2012 +0200 rename the HklMode operations op -> ops hkl/Hkl-5.0.gir | 2 +- hkl/hkl-pseudoaxis-private.h | 4 ++-- hkl/hkl-pseudoaxis.c | 46 ++++++++++++++++++++++---------------------- hkl/hkl-pseudoaxis.h | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) commit ac115fb74d63846f13c4903179e1a72b9cd442e5 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 11 16:08:56 2012 +0200 add the SOLEIL SIXS med2+3 geometry .../sphinx/source/diffractometers/med2_3.rst | 64 +++++++ Documentation/sphinx/source/index.rst | 1 + hkl/hkl-geometry-factory.c | 21 +++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-factory.c | 5 + hkl/hkl-pseudoaxis-soleil-sixs-med.c | 183 +++++++++++++++++++++ hkl/hkl-pseudoaxis-soleil-sixs-med.h | 1 + test/hkl-test-pseudoaxis.c | 9 + 9 files changed, 287 insertions(+), 1 deletion(-) commit cf87857bf7f5266de5d00f5728b6b3e66a6930ff Author: Picca Frédéric-Emmanuel Date: Mon Sep 10 22:46:26 2012 +0200 fix a bunch of clang warning hkl/hkl-binding.c | 1 + hkl/hkl-geometry-factory.c | 2 ++ hkl/hkl-pseudoaxis-auto.c | 8 ++++---- hkl/hkl-pseudoaxis-private.h | 2 ++ 4 files changed, 9 insertions(+), 4 deletions(-) commit 4a16c3f755490afb42b20abcfc16543bdcce0204 Author: Picca Frédéric-Emmanuel Date: Mon Sep 10 22:46:42 2012 +0200 use the clean_all script hkl/hkl-binding.c | 4 +-- hkl/hkl-pseudoaxis-auto-private.h | 16 ++++++------ hkl/hkl-pseudoaxis-auto.c | 16 ++++++------ hkl/hkl-pseudoaxis-common-eulerians.c | 20 +++++++-------- hkl/hkl-pseudoaxis-common-hkl-private.h | 24 +++++++++--------- hkl/hkl-pseudoaxis-common-hkl.c | 34 ++++++++++++------------- hkl/hkl-pseudoaxis-common-psi.c | 24 +++++++++--------- hkl/hkl-pseudoaxis-e4c-hkl.c | 12 ++++----- hkl/hkl-pseudoaxis-e6c-hkl.c | 26 +++++++++---------- hkl/hkl-pseudoaxis-k4cv-hkl.c | 12 ++++----- hkl/hkl-pseudoaxis-k6c-hkl.c | 28 ++++++++++----------- hkl/hkl-pseudoaxis-petra3-hkl.c | 14 +++++------ hkl/hkl-pseudoaxis-private.h | 44 ++++++++++++++++----------------- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 ++--- hkl/hkl-pseudoaxis-zaxis-hkl.c | 4 +-- hkl/hkl-pseudoaxis.c | 20 +++++++-------- hkl/hkl-pseudoaxis.h | 14 +++++------ 17 files changed, 159 insertions(+), 159 deletions(-) commit 045a73ba81ab8532c3dc71782fd1a85b6136101c Author: Frédéric-Emmanuel PICCA Date: Mon Sep 10 18:46:50 2012 +0200 use darray in the hkl-pseudoaxis.h gui/hkl-gui-callbacks.cpp | 20 +++++------ gui/hkl-gui-pseudoaxes.cpp | 8 ++--- gui/hkl-gui.cpp | 21 ++++++----- hkl/Hkl-5.0.gir | 57 ++++++++++++++++-------------- hkl/hkl-binding.c | 12 +++---- hkl/hkl-geometry.c | 10 +++--- hkl/hkl-geometry.h | 4 +-- hkl/hkl-pseudoaxis-auto.c | 17 ++++----- hkl/hkl-pseudoaxis-common-eulerians.c | 6 ++-- hkl/hkl-pseudoaxis-private.h | 25 +++++++------- hkl/hkl-pseudoaxis.c | 65 +++++++++++++++++------------------ hkl/hkl-pseudoaxis.h | 22 ++++++------ test/bindings/trajectory.py | 2 +- test/hkl/bench-t.c | 21 +++++------ test/hkl/geometry-t.c | 18 +++++----- test/hkl/pseudoaxis-e4ch-t.c | 25 ++++++-------- test/hkl/pseudoaxis-e4cv-t.c | 25 ++++++-------- test/hkl/pseudoaxis-e6c-t.c | 20 +++++------ test/hkl/pseudoaxis-k4cv-t.c | 34 +++++++----------- test/hkl/pseudoaxis-k6c-t.c | 34 +++++++----------- test/hkl/pseudoaxis-t.c | 13 +++---- 21 files changed, 216 insertions(+), 243 deletions(-) commit d24ca1fd6bbaa0439cbc8c184976db2d91b8b422 Author: Frédéric-Emmanuel PICCA Date: Mon Sep 10 16:08:46 2012 +0200 replace list with darray (nicer) Makefile.am | 2 +- ccan/darray/LICENSE | 1 + ccan/darray/darray.h | 348 +++++++++++++++++++++++++++ configure.ac | 2 +- gui/hkl-gui-pseudoaxes.cpp | 24 +- gui/hkl-gui.cpp | 24 +- hkl/Hkl-5.0.gir | 11 +- hkl/hkl-binding.c | 6 +- hkl/hkl-parameter-private.h | 53 ++-- hkl/hkl-parameter.c | 10 +- hkl/hkl-parameter.h | 6 +- hkl/hkl-pseudoaxis-common-eulerians.c | 7 +- hkl/hkl-pseudoaxis-common-hkl.c | 30 +-- hkl/hkl-pseudoaxis-common-q.c | 6 +- hkl/hkl-pseudoaxis-k4cv-private.h | 4 +- hkl/hkl-pseudoaxis-k6c-private.h | 4 +- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 4 +- hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 12 +- test/hkl/bench-t.c | 6 +- test/hkl/pseudoaxis-e4ch-t.c | 2 +- test/hkl/pseudoaxis-e4cv-t.c | 2 +- test/hkl/pseudoaxis-e6c-t.c | 12 +- test/hkl/pseudoaxis-k4cv-t.c | 4 +- test/hkl/pseudoaxis-k6c-t.c | 4 +- test/hkl/pseudoaxis-t.c | 31 ++- test/tap/hkl.c | 4 +- 27 files changed, 494 insertions(+), 127 deletions(-) commit e310187ac002599e2462ee1433b1fbb2ed6ddbbd Author: Frédéric-Emmanuel PICCA Date: Fri Sep 7 15:23:57 2012 +0200 rename HklPseudoAxisEngine -> HklEngine simplicity Documentation/api/hkl-sections.txt | 50 +-- Documentation/hkl.texi | 60 ++-- Documentation/sphinx/source/bindings/python.py | 2 +- Documentation/sphinx/source/development.rst | 60 ++-- Documentation/sphinx/source/test.py | 18 +- TODO | 6 +- gui/hkl-gui-callbacks.cpp | 4 +- gui/hkl-gui-modelcolumns.h | 2 +- gui/hkl-gui-pseudoaxes.cpp | 8 +- gui/hkl-gui-pseudoaxes.h | 4 +- gui/hkl-gui.cpp | 4 +- hkl/Hkl-5.0.gir | 410 ++++++++++++------------- hkl/hkl-binding-private.h | 8 +- hkl/hkl-binding.c | 34 +- hkl/hkl-pseudoaxis-auto-private.h | 2 +- hkl/hkl-pseudoaxis-auto.c | 14 +- hkl/hkl-pseudoaxis-common-eulerians-private.h | 8 +- hkl/hkl-pseudoaxis-common-eulerians.c | 44 +-- hkl/hkl-pseudoaxis-common-hkl-private.h | 14 +- hkl/hkl-pseudoaxis-common-hkl.c | 42 +-- hkl/hkl-pseudoaxis-common-psi-private.h | 8 +- hkl/hkl-pseudoaxis-common-psi.c | 34 +- hkl/hkl-pseudoaxis-common-q-private.h | 12 +- hkl/hkl-pseudoaxis-common-q.c | 116 +++---- hkl/hkl-pseudoaxis-e4c-hkl.c | 22 +- hkl/hkl-pseudoaxis-e4c-private.h | 4 +- hkl/hkl-pseudoaxis-e4c-psi.c | 10 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 36 +-- hkl/hkl-pseudoaxis-e6c-private.h | 4 +- hkl/hkl-pseudoaxis-e6c-psi.c | 10 +- hkl/hkl-pseudoaxis-factory.c | 52 ++-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 34 +- hkl/hkl-pseudoaxis-k4cv-private.h | 4 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 10 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 46 +-- hkl/hkl-pseudoaxis-k6c-private.h | 4 +- hkl/hkl-pseudoaxis-k6c-psi.c | 10 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 24 +- hkl/hkl-pseudoaxis-petra3-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 54 ++-- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 4 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 22 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 12 +- hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 92 +++--- hkl/hkl-pseudoaxis.h | 32 +- hkl/hkl-types.c | 24 +- hkl/hkl-types.h | 4 +- test/bindings/python.py | 4 +- test/hkl/bench-t.c | 18 +- test/hkl/pseudoaxis-e4ch-t.c | 64 ++-- test/hkl/pseudoaxis-e4cv-t.c | 66 ++-- test/hkl/pseudoaxis-e6c-t.c | 74 ++--- test/hkl/pseudoaxis-k4cv-t.c | 32 +- test/hkl/pseudoaxis-k6c-t.c | 34 +- test/hkl/pseudoaxis-t.c | 16 +- test/hkl/pseudoaxis-zaxis-t.c | 8 +- test/tap/hkl.c | 10 +- test/tap/hkl.h | 6 +- 59 files changed, 903 insertions(+), 911 deletions(-) commit 5a59792a0afce70bc007df3d9985e06f0219f2f2 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 7 13:59:46 2012 +0200 rename HklPseudoAxisEngineMode -> HklMode simplicity :) Documentation/api/hkl-sections.txt | 20 +-- Documentation/hkl.texi | 70 ++++----- Documentation/sphinx/source/development.rst | 70 ++++----- Documentation/sphinx/source/pyplots/trajectory.py | 2 +- .../sphinx/source/pyplots/trajectory_full.py | 2 +- .../sphinx/source/pyplots/trajectory_simple.py | 2 +- gui/hkl-gui-pseudoaxes.cpp | 2 +- gui/hkl-gui-pseudoaxes.h | 2 +- hkl/Hkl-5.0.gir | 169 ++++++++++----------- hkl/hkl-binding.c | 4 +- hkl/hkl-pseudoaxis-auto-private.h | 26 ++-- hkl/hkl-pseudoaxis-auto.c | 20 +-- hkl/hkl-pseudoaxis-common-eulerians.c | 24 +-- hkl/hkl-pseudoaxis-common-hkl-private.h | 28 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 12 +- hkl/hkl-pseudoaxis-common-psi-private.h | 10 +- hkl/hkl-pseudoaxis-common-psi.c | 28 ++-- hkl/hkl-pseudoaxis-common-q.c | 42 ++--- hkl/hkl-pseudoaxis-e4c-hkl.c | 38 ++--- hkl/hkl-pseudoaxis-e4c-private.h | 2 +- hkl/hkl-pseudoaxis-e4c-psi.c | 8 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 80 +++++----- hkl/hkl-pseudoaxis-e6c-private.h | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 8 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 38 ++--- hkl/hkl-pseudoaxis-k4cv-private.h | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 8 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 86 +++++------ hkl/hkl-pseudoaxis-k6c-private.h | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 8 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 44 +++--- hkl/hkl-pseudoaxis-petra3-private.h | 2 +- hkl/hkl-pseudoaxis-private.h | 60 ++++---- hkl/hkl-pseudoaxis-soleil-sixs-med-private.h | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 22 +-- hkl/hkl-pseudoaxis-zaxis-hkl.c | 14 +- hkl/hkl-pseudoaxis-zaxis-private.h | 2 +- hkl/hkl-pseudoaxis.c | 13 +- hkl/hkl-pseudoaxis.h | 22 +-- test/bindings/python.py | 2 +- test/bindings/trajectory.py | 2 +- test/hkl/bench-t.c | 4 +- test/hkl/pseudoaxis-e4ch-t.c | 6 +- test/hkl/pseudoaxis-e4cv-t.c | 6 +- test/hkl/pseudoaxis-e6c-t.c | 4 +- test/hkl/pseudoaxis-k4cv-t.c | 6 +- test/hkl/pseudoaxis-k6c-t.c | 6 +- test/hkl/pseudoaxis-t.c | 2 +- 48 files changed, 514 insertions(+), 520 deletions(-) commit 970809c1b429665dbd7ce0866e24ebe390432aea Author: Frédéric-Emmanuel PICCA Date: Fri Sep 7 13:11:48 2012 +0200 rename HklPseudoAxisEngineList -> HklEngineList for simplicity. Documentation/api/hkl-sections.txt | 22 +- Documentation/hkl.texi | 8 +- Documentation/sphinx/source/development.rst | 8 +- Documentation/sphinx/source/test.py | 56 ++--- gui/hkl-gui-callbacks.cpp | 12 +- gui/hkl-gui.cpp | 4 +- gui/hkl-gui.h | 2 +- hkl/Hkl-5.0.gir | 326 ++++++++++++++-------------- hkl/hkl-binding-private.h | 2 +- hkl/hkl-binding.c | 6 +- hkl/hkl-pseudoaxis-factory.c | 62 +++--- hkl/hkl-pseudoaxis-factory.h | 2 +- hkl/hkl-pseudoaxis-private.h | 10 +- hkl/hkl-pseudoaxis.c | 58 ++--- hkl/hkl-pseudoaxis.h | 26 +-- hkl/hkl-types.c | 20 +- hkl/hkl-types.h | 4 +- test/hkl/bench-t.c | 22 +- test/hkl/pseudoaxis-e4ch-t.c | 60 ++--- test/hkl/pseudoaxis-e4cv-t.c | 60 ++--- test/hkl/pseudoaxis-e6c-t.c | 64 +++--- test/hkl/pseudoaxis-k4cv-t.c | 30 +-- test/hkl/pseudoaxis-k6c-t.c | 40 ++-- test/hkl/pseudoaxis-t.c | 70 +++--- test/hkl/pseudoaxis-zaxis-t.c | 10 +- 25 files changed, 490 insertions(+), 494 deletions(-) commit 11c20a7d4f963ebb92c7ce2c32ba55b92364f747 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 7 11:06:45 2012 +0200 distcheck is working hkl/Makefile.am | 1 + test/bindings/Makefile.am | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) commit 2fcfd93588251009a6a7ec9b17fae0f1fee8bec4 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 6 13:53:24 2012 +0200 add the mode parameters to the qper_qpar engine NEWS | 11 +++++++++-- hkl/hkl-pseudoaxis-common-q.c | 7 +++++-- 2 files changed, 14 insertions(+), 4 deletions(-) commit f6fca348b3f644841a8065b35fb8db984ad161fa Author: Frédéric-Emmanuel PICCA Date: Thu Sep 6 13:04:10 2012 +0200 small bugfix hkl/hkl-pseudoaxis-common-q.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 351a62de880fcaceb9e684cb75f0a7a23e63f167 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 5 17:34:12 2012 +0200 add the qperqpar pseudo axis Conflicts: hkl/hkl-pseudoaxis-common-q.c hkl/hkl-pseudoaxis-common-q.h test/hkl/bench-t.c Documentation/sphinx/source/pseudo.rst | 23 ++++++- hkl/hkl-pseudoaxis-auto.c | 4 +- hkl/hkl-pseudoaxis-common-q.c | 113 +++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-common-q.h | 7 +- hkl/hkl-pseudoaxis-factory.c | 5 ++ test/bench.c | 15 +++++ 6 files changed, 162 insertions(+), 5 deletions(-) commit 777a730f943463f06c71901205e2c294e3e2bb07 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 6 09:44:47 2012 +0200 fix the gui crash gui/hkl-gui-callbacks.cpp | 37 ++++++++++++++++++++----------------- gui/hkl-gui-modelcolumns.h | 2 ++ gui/hkl-gui.cpp | 1 + 3 files changed, 23 insertions(+), 17 deletions(-) commit b22c0755a7765bf2fe6f44beb7078fe4a7bc2f11 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 6 09:26:33 2012 +0200 add the flymake files to .gitignore .gitignore | 1 + 1 file changed, 1 insertion(+) commit a5e8008425fad784ee9622a20c65a521438b274c Author: Picca Frédéric-Emmanuel Date: Wed Sep 5 21:53:29 2012 +0200 fix a few bug in the gui and the qper_qpar engine gui/hkl-gui.cpp | 2 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 10216c012e26dd4ce34b82ccfc1c3d7ed3866eb6 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 5 17:34:12 2012 +0200 add the qperqpar pseudo axis Documentation/sphinx/source/pseudo.rst | 23 +++- hkl/hkl-pseudoaxis-auto.c | 4 +- hkl/hkl-pseudoaxis-common-q-private.h | 12 +- hkl/hkl-pseudoaxis-common-q.c | 205 ++++++++++++++++++++++++++++----- hkl/hkl-pseudoaxis-factory.c | 5 + test/hkl/bench-t.c | 1 + 6 files changed, 214 insertions(+), 36 deletions(-) commit 920776a9778ad1db99e441afcb0c364b17444339 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 4 10:11:06 2012 +0200 plot the trajectories for all availables modes. hkl/Hkl-5.0.gir | 15 +++++-- hkl/hkl-binding-private.h | 2 + hkl/hkl-binding.c | 26 ++++++++++-- hkl/hkl-pseudoaxis.c | 5 +-- test/bindings/trajectory.py | 99 ++++++++++++++++++++++++++++++++------------- 5 files changed, 108 insertions(+), 39 deletions(-) commit 18fb59c724aa5aa4b6839d8e7c856a94b6852c12 Author: Frédéric-Emmanuel PICCA Date: Mon Sep 3 17:30:24 2012 +0200 add the possibility to plot only a reduced number of trajectories test/bindings/trajectory.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) commit 789be6a3273170c8f8096556ed2ce808658397ae Author: Frédéric-Emmanuel PICCA Date: Mon Sep 3 17:19:51 2012 +0200 produce a pdf document with the hkl 001 -> 011 trajectories the added trajectory.py file, generates during the make check target, a pdf document which can be use for testing purpose. By looking at the curve it is easyer to identify a problem with the calculation. test/bindings/Makefile.am | 5 ++- test/bindings/trajectory.py | 94 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) commit 3639fecb337ab27748ca7068c456edf9dc9d474a Author: Picca Frédéric-Emmanuel Date: Sun Sep 2 19:47:28 2012 +0200 add a few const to the HklGeometry methods hkl/hkl-geometry.c | 42 +++++++++++++++++++++--------------------- hkl/hkl-geometry.h | 13 ++++++++----- 2 files changed, 29 insertions(+), 26 deletions(-) commit 03ae598ad2b921409cfc3e9af5f64b9e82eb3827 Author: Picca Frédéric-Emmanuel Date: Sun Sep 2 19:12:51 2012 +0200 remove a memory leak hkl/hkl-geometry-factory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 046fe11af038f3edc0a141ddf51d3f7b18d44e68 Author: Picca Frédéric-Emmanuel Date: Tue Aug 28 20:27:44 2012 +0200 use the HklParameterList for the mode parameters I am not very happy with this transformation, the C API is not convenient enough, when it comes to set individual parameters, like in the test suite. gui/hkl-gui-pseudoaxes.cpp | 21 ++- gui/hkl-gui.cpp | 15 +-- hkl/Hkl-5.0.gir | 36 +++--- hkl/hkl-binding.c | 6 +- hkl/hkl-parameter-private.h | 70 ++++------ hkl/hkl-parameter.c | 22 +++- hkl/hkl-parameter.h | 8 +- hkl/hkl-pseudoaxis-auto-private.h | 22 ++-- hkl/hkl-pseudoaxis-auto.c | 17 +-- hkl/hkl-pseudoaxis-common-eulerians-private.h | 10 ++ hkl/hkl-pseudoaxis-common-eulerians.c | 82 ++++++++---- hkl/hkl-pseudoaxis-common-hkl-private.h | 21 ++- hkl/hkl-pseudoaxis-common-hkl.c | 107 +++++++++++----- hkl/hkl-pseudoaxis-common-psi-private.h | 7 + hkl/hkl-pseudoaxis-common-psi.c | 62 +++++---- hkl/hkl-pseudoaxis-common-q-private.h | 3 + hkl/hkl-pseudoaxis-common-q.c | 97 +++++++++----- hkl/hkl-pseudoaxis-k4cv-hkl.c | 30 ++++- hkl/hkl-pseudoaxis-k6c-hkl.c | 43 +++++-- hkl/hkl-pseudoaxis-private.h | 176 ++++++++++++++++---------- hkl/hkl-pseudoaxis.c | 74 +++++------ hkl/hkl-pseudoaxis.h | 9 +- hkl/hkl-sample.c | 8 +- test/hkl/bench-t.c | 14 +- test/hkl/pseudoaxis-e4ch-t.c | 71 +++++------ test/hkl/pseudoaxis-e4cv-t.c | 68 +++++----- test/hkl/pseudoaxis-e6c-t.c | 94 ++++++++------ test/hkl/pseudoaxis-k4cv-t.c | 16 ++- test/hkl/pseudoaxis-k6c-t.c | 18 ++- test/hkl/pseudoaxis-t.c | 35 +++-- test/hkl/pseudoaxis-zaxis-t.c | 2 + test/tap/hkl.c | 14 +- test/tap/hkl.h | 5 +- 33 files changed, 768 insertions(+), 515 deletions(-) commit 073a9ee4c7f978d9de2c57717a46d88945faf26a Author: Picca Frédéric-Emmanuel Date: Tue Aug 28 08:55:41 2012 +0200 add -fpermissive to the C++ code gui/hkl3d/Makefile.am | 1 + hkl3d/Makefile.am | 1 + 2 files changed, 2 insertions(+) commit bcd48cbe2919e4ec1a48f93bfaf1760459493d59 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 19:07:36 2012 +0200 Add an HklParameterList and use it for the HklPseudoAxisEngine pseudo_axes at the end we will have different kind of thoses list to standardize the interaction with the hkl library, and also to minimize the public API. fix the WIP .../sphinx/source/pyplots/trajectory_full.py | 4 +- .../sphinx/source/pyplots/trajectory_simple.py | 2 +- gui/hkl-gui-callbacks.cpp | 34 +-- gui/hkl-gui-modelcolumns.h | 6 +- gui/hkl-gui-pseudoaxes.cpp | 23 +- gui/hkl-gui-pseudoaxes.h | 4 +- gui/hkl-gui.cpp | 29 +- gui/hkl-gui.h | 3 +- hkl/Hkl-5.0.gir | 324 +++++++++++---------- hkl/hkl-axis.c | 96 +++--- hkl/hkl-axis.h | 7 +- hkl/hkl-binding-private.h | 21 +- hkl/hkl-binding.c | 133 ++++++--- hkl/hkl-geometry.c | 19 +- hkl/hkl-lattice.c | 36 +-- hkl/hkl-parameter-private.h | 206 ++++++++++++- hkl/hkl-parameter.c | 118 +++++++- hkl/hkl-parameter.h | 46 ++- hkl/hkl-pseudoaxis-auto.c | 3 +- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +- hkl/hkl-pseudoaxis-common-hkl.c | 29 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-pseudoaxis-common-q.c | 8 +- hkl/hkl-pseudoaxis-factory.c | 14 +- hkl/hkl-pseudoaxis-private.h | 81 +----- hkl/hkl-pseudoaxis.c | 137 +++++---- hkl/hkl-pseudoaxis.h | 27 +- hkl/hkl-sample.c | 48 +-- hkl/hkl-types.c | 8 +- test/bindings/python.py | 11 +- test/hkl/axis-t.c | 48 +-- test/hkl/bench-t.c | 14 +- test/hkl/detector-t.c | 4 +- test/hkl/geometry-t.c | 2 +- test/hkl/parameter-t.c | 2 +- test/hkl/pseudoaxis-e4ch-t.c | 66 ++--- test/hkl/pseudoaxis-e4cv-t.c | 66 ++--- test/hkl/pseudoaxis-e6c-t.c | 66 ++--- test/hkl/pseudoaxis-k4cv-t.c | 12 +- test/hkl/pseudoaxis-k6c-t.c | 12 +- test/hkl/pseudoaxis-t.c | 20 +- test/hkl/pseudoaxis-zaxis-t.c | 4 +- test/tap/hkl.c | 10 +- 43 files changed, 1067 insertions(+), 746 deletions(-) commit e7c73595075ff6e6eac6d30899067df398b3ce64 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 13:16:37 2012 +0200 remove hkl_axis_is_value_compatible_with_range use hkl_parameter_is_valid instead hkl/Hkl-5.0.gir | 6 ------ hkl/hkl-axis.c | 25 +++++++++++++------------ hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 2 +- hkl/hkl-parameter-private.h | 13 ++++++++++++- hkl/hkl-parameter.c | 6 +----- test/hkl/axis-t.c | 18 +++++++++--------- test/hkl/geometry-t.c | 14 +++++++++----- 8 files changed, 45 insertions(+), 41 deletions(-) commit f77e6e2188fb71e5569eb5d7e64aa368ba86332c Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 11:45:48 2012 +0200 avoid to update the HklParamete rinternal when doing range mutliplication rotation internals are identical for angle += n * 2pi. So we can avoid the HklParameter update for the rotation. hkl/hkl-geometry.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) commit 3e6eddf47443de0703956c57a78b5078c9c9d6d7 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 20:46:01 2012 +0200 remove a useless method hkl/Hkl-5.0.gir | 11 ----------- hkl/hkl-axis.c | 8 -------- hkl/hkl-axis.h | 2 -- 3 files changed, 21 deletions(-) commit e331c4bd068a5cb649800028eb16adc295cf7726 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 20:36:12 2012 +0200 no need to put get_value and get_value_unit in the HklParameterOperations. hkl/hkl-parameter-private.h | 22 +++------------------- hkl/hkl-parameter.c | 7 +++++-- 2 files changed, 8 insertions(+), 21 deletions(-) commit 57fc27236c459010ca55a2d66dfefec5f4ae364c Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 20:19:10 2012 +0200 move hkl_axis_get_value_closest into HklParameter hkl/Hkl-5.0.gir | 25 +++++++------ hkl/hkl-axis.c | 85 +++++++++++++++++++++++---------------------- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 3 +- hkl/hkl-parameter-private.h | 9 +++++ hkl/hkl-parameter.c | 16 +++++++++ hkl/hkl-parameter.h | 3 ++ test/hkl/axis-t.c | 12 +++++-- 8 files changed, 97 insertions(+), 58 deletions(-) commit e39b3fabd2da7aec8e055fb966f999d48ed20f44 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 15:08:53 2012 +0200 remove the useless method in HklAxis hkl/Hkl-5.0.gir | 10 ---------- hkl/hkl-axis.c | 7 ------- hkl/hkl-axis.h | 10 ---------- test/hkl/axis-t.c | 19 ++++++++----------- 4 files changed, 8 insertions(+), 38 deletions(-) commit 6717c79f8aa30a625f220f8403363a7edd6a5389 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 14:54:47 2012 +0200 HklAxis can use the HklParameter internals to avoid the overhead of method call use directly the HklParameter internals. hkl/hkl-axis.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) commit 917d9b1bbf5d2f73cbefdd8bbd6c473af529b068 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 14:41:30 2012 +0200 remove hkl_axis_is_valid use hkl_parameter_is_valid instead hkl/Hkl-5.0.gir | 5 ----- hkl/hkl-axis.c | 5 ----- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 2 +- 4 files changed, 1 insertion(+), 13 deletions(-) commit be2933842dd5b5e46abcf81bb745e40286b11b17 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 14:27:58 2012 +0200 remove hkl_axis_randomize use hkl_parameter_randomize instead hkl/Hkl-5.0.gir | 5 ----- hkl/hkl-axis.c | 27 ++++++++++++++------------- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 2 +- hkl/hkl-parameter-private.h | 17 +++++++++++++++-- hkl/hkl-parameter.c | 7 +------ 6 files changed, 31 insertions(+), 29 deletions(-) commit cd64a99df9932871f0cca720fdfab02e3c7b4f18 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 14:04:04 2012 +0200 remove hkl_axis_set_value_unit now use directly hkl_parameter_set_value_unit gui/hkl-gui-callbacks.cpp | 4 ++-- hkl/Hkl-5.0.gir | 16 +++------------- hkl/hkl-axis.c | 12 ++++++------ hkl/hkl-axis.h | 2 -- hkl/hkl-binding.c | 3 ++- hkl/hkl-geometry.c | 3 ++- hkl/hkl-parameter-private.h | 11 ++++++++++- hkl/hkl-parameter.c | 16 +++++----------- hkl/hkl-parameter.h | 2 +- test/hkl/axis-t.c | 34 +++++++++++++++++----------------- 10 files changed, 48 insertions(+), 55 deletions(-) commit 3b96b0e46bf65aa7c3e90ff5126c2f694615f0ff Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 12:22:19 2012 +0200 remove the hkl_axis_set_value now use directly hkl_parameter_set_value hkl/Hkl-5.0.gir | 10 ---------- hkl/hkl-axis.c | 30 +++++++++++++++++------------- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 10 ++++++---- hkl/hkl-parameter-private.h | 10 +++++++++- hkl/hkl-parameter.c | 3 +-- hkl/hkl-pseudoaxis-auto.c | 3 ++- hkl/hkl-pseudoaxis-common-hkl.c | 7 ++++--- hkl/hkl-pseudoaxis-factory.c | 12 ++++++------ hkl/hkl-pseudoaxis-private.h | 5 +++-- test/hkl/detector-t.c | 4 ++-- test/hkl/geometry-t.c | 2 +- 12 files changed, 51 insertions(+), 47 deletions(-) commit d2d7ea6d32e8ff4763955a31c0d9a1dcf4b099aa Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 11:32:49 2012 +0200 remove all HklAxis method which were in fact HklParameter methods hkl/Hkl-5.0.gir | 44 -------------------------------------------- hkl/hkl-axis.c | 20 -------------------- hkl/hkl-axis.h | 8 -------- hkl/hkl-geometry.c | 2 +- test/hkl/axis-t.c | 10 +++++----- test/hkl/geometry-t.c | 12 ++++++------ 6 files changed, 12 insertions(+), 84 deletions(-) commit 928c6bdc79970da2ed340b8942fae77432c42583 Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 11:21:41 2012 +0200 remove hkl_axis_get/set_changed hkl/Hkl-5.0.gir | 15 --------------- hkl/hkl-axis.c | 10 ---------- hkl/hkl-axis.h | 4 ---- hkl/hkl-geometry.c | 4 ++-- test/hkl/geometry-t.c | 4 ++-- 5 files changed, 4 insertions(+), 33 deletions(-) commit 1bce20b03855514f813afe5017d130f62b6d3f2e Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 10:23:17 2012 +0200 remove hkl_axis_get_name hkl/Hkl-5.0.gir | 5 ----- hkl/hkl-axis.c | 5 ----- hkl/hkl-axis.h | 2 -- hkl/hkl-geometry.c | 8 ++++---- hkl/hkl-sample.c | 2 +- 5 files changed, 5 insertions(+), 17 deletions(-) commit b2d7295407d0aad0b72b9f9168b5ba051e82ad2c Author: Picca Frédéric-Emmanuel Date: Sun Aug 26 10:11:42 2012 +0200 no more hkl_axis_get_value_unit gui/hkl-gui.cpp | 4 ++-- hkl/Hkl-5.0.gir | 31 ++++++++++--------------------- hkl/hkl-axis.c | 7 +------ hkl/hkl-axis.h | 2 -- hkl/hkl-parameter-private.h | 16 +++++++++++++++- hkl/hkl-parameter.c | 33 ++++++++++++++++++++------------- hkl/hkl-parameter.h | 19 +++---------------- test/hkl/axis-t.c | 22 +++++++++++----------- 8 files changed, 62 insertions(+), 72 deletions(-) commit 70485aa23ba94923316ef06727f7def96625acd5 Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 22:15:09 2012 +0200 test get_value hkl/Hkl-5.0.gir | 31 +++++----- hkl/hkl-axis.c | 55 ++++++++--------- hkl/hkl-axis.h | 4 +- hkl/hkl-binding.c | 2 +- hkl/hkl-geometry.c | 19 +++--- hkl/hkl-lattice.c | 106 ++++++++++++++++++--------------- hkl/hkl-parameter-private.h | 8 +-- hkl/hkl-parameter.c | 31 ++++------ hkl/hkl-parameter.h | 19 +++++- hkl/hkl-pseudoaxis-auto.c | 4 +- hkl/hkl-pseudoaxis-common-eulerians.c | 16 +++-- hkl/hkl-pseudoaxis-common-hkl.c | 35 ++++++----- hkl/hkl-pseudoaxis-common-psi.c | 13 ++-- hkl/hkl-pseudoaxis-common-q.c | 1 + hkl/hkl-pseudoaxis-e4c-hkl.c | 13 ++-- hkl/hkl-pseudoaxis-e4c-psi.c | 7 ++- hkl/hkl-pseudoaxis-e6c-hkl.c | 25 ++++---- hkl/hkl-pseudoaxis-e6c-psi.c | 7 ++- hkl/hkl-pseudoaxis-factory.c | 12 ++-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 25 ++++---- hkl/hkl-pseudoaxis-k4cv-psi.c | 7 ++- hkl/hkl-pseudoaxis-k6c-hkl.c | 43 +++++++------- hkl/hkl-pseudoaxis-k6c-psi.c | 7 ++- hkl/hkl-pseudoaxis.c | 4 +- hkl/hkl-sample.c | 65 +++++++++++--------- test/bindings/python.py | 2 +- test/hkl/axis-t.c | 4 +- test/hkl/bench-t.c | 8 +-- test/hkl/geometry-t.c | 14 ++--- test/hkl/lattice-t.c | 108 +++++++++++++++++----------------- test/hkl/parameter-t.c | 11 ++-- test/hkl/pseudoaxis-e4ch-t.c | 68 ++++++++------------- test/hkl/pseudoaxis-e4cv-t.c | 69 ++++++++-------------- test/hkl/pseudoaxis-e6c-t.c | 24 ++++---- test/hkl/pseudoaxis-k4cv-t.c | 4 +- test/hkl/pseudoaxis-k6c-t.c | 4 +- test/hkl/pseudoaxis-t.c | 10 ++-- test/hkl/sample-t.c | 69 +++++++++++----------- test/tap/hkl.c | 7 ++- test/tap/hkl.h | 2 +- 40 files changed, 481 insertions(+), 482 deletions(-) commit b2e0c4f540fcd2f7938a48e8e396252e50468418 Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 12:15:16 2012 +0200 hkl_parameter_init from public -> private hkl/Hkl-5.0.gir | 34 --------------------- hkl/hkl-parameter.c | 76 +++++++++++++++++++--------------------------- hkl/hkl-parameter.h | 5 ---- test/hkl/parameter-t.c | 81 +++++++++++++++++++++++++++----------------------- 4 files changed, 73 insertions(+), 123 deletions(-) commit 384af436c1111750f929c328d28619e4a573eebb Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 11:57:32 2012 +0200 test parameter operations hkl/Hkl-5.0.gir | 15 +++++++++++++++ hkl/hkl-axis.c | 23 ++++++++++++++++------- hkl/hkl-lattice.c | 1 + hkl/hkl-parameter-private.h | 46 +++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-parameter.c | 14 +++++++++++++- hkl/hkl-parameter.h | 4 ++++ hkl/hkl-sample.c | 1 + 7 files changed, 96 insertions(+), 8 deletions(-) commit e0eb3844e761f5873128cceeb733ef23cd43e14f Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 11:54:37 2012 +0200 .gitignore .gitignore | 1 + 1 file changed, 1 insertion(+) commit e6fcea5fd07baa97e196ca86dd0ae3a3aaed457b Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 10:19:43 2012 +0200 remove an introspection warning - inconsistency the second paramater of the hkl_geometry_distance_xxx method is now consider as the reference HklGeometry to compare with . It is easyer to understand in the rest of the code. hkl/Hkl-5.0.gir | 12 ++++++------ hkl/hkl-geometry.c | 14 ++++++-------- hkl/hkl-geometry.h | 4 ++-- 3 files changed, 14 insertions(+), 16 deletions(-) commit dedbd84d83b24c038e88a5e879642a7d05895df0 Author: Picca Frédéric-Emmanuel Date: Sat Aug 25 10:03:05 2012 +0200 rename in HklParameter parent -> parameter Documentation/sphinx/source/pyplots/trajectory.py | 2 +- Documentation/sphinx/source/pyplots/trajectory_simple.py | 2 +- gui/hkl-gui-pseudoaxes.cpp | 4 ++-- gui/hkl-gui.cpp | 2 +- hkl/hkl-binding.c | 4 ++-- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +++--- hkl/hkl-pseudoaxis-common-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 4 ++-- hkl/hkl-pseudoaxis-private.h | 6 +++--- hkl/hkl-pseudoaxis.c | 8 ++++---- hkl/hkl-pseudoaxis.h | 2 +- test/bindings/python.py | 2 +- test/hkl/bench-t.c | 2 +- test/hkl/pseudoaxis-e6c-t.c | 10 +++++----- test/hkl/pseudoaxis-t.c | 10 +++++----- test/tap/hkl.c | 4 ++-- 17 files changed, 38 insertions(+), 38 deletions(-) commit db0a0a9669cae421fd4bc6650833de15fa923f98 Author: Picca Frédéric-Emmanuel Date: Fri Aug 24 23:53:57 2012 +0200 add a few gitignore .gitignore | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 5065229841b3de48f54eee7955927bd61cc1594f Author: Picca Frédéric-Emmanuel Date: Fri Aug 24 23:53:37 2012 +0200 rename HklAxis->parent_instance into parameter Documentation/sphinx/source/bindings/python.py | 2 +- Documentation/sphinx/source/pyplots/trajectory.py | 4 ++-- Documentation/sphinx/source/pyplots/trajectory_full.py | 2 +- Documentation/sphinx/source/pyplots/trajectory_simple.py | 2 +- hkl/Hkl-5.0.gir | 2 +- hkl/hkl-axis.h | 2 +- hkl/hkl-binding.c | 2 +- hkl/hkl-pseudoaxis-auto.c | 4 ++-- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +++--- test/bindings/python.py | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) commit 14486185d6f2610f9eb2b60c65ca238de31e05bb Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 17:25:22 2012 +0200 start to add a few figures for the trajectories explain the problem of the solution 2..n when computing trajectory. It is necessary to use only the first closest solution for now. If we want to provide fully valid trajectory it will be necessary to work on a dedicated trajectory API. Documentation/sphinx/source/bindings/bindings.rst | 109 ++++++++++++++++++++- Documentation/sphinx/source/pyplots/trajectory.py | 40 +++----- .../sphinx/source/pyplots/trajectory_full.py | 66 +++++++++++++ .../sphinx/source/pyplots/trajectory_simple.py | 79 +++++++++++++++ hkl/Hkl-5.0.gir | 1 - hkl/hkl-geometry.c | 8 +- test/bindings/python.py | 3 +- 7 files changed, 270 insertions(+), 36 deletions(-) commit d333c9a934a65e736ca9585a1b6204b95c972714 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 09:23:30 2012 +0200 gives access to the hkl_geometry_distance method to bindings d = geometry.distance(geometry2) Documentation/sphinx/source/pyplots/trajectory.py | 4 ++-- hkl/Hkl-5.0.gir | 10 ++++------ hkl/hkl-geometry.c | 8 ++++---- 3 files changed, 10 insertions(+), 12 deletions(-) commit 3a41b7c6e77cb12930bb508be3aa82ce27e33b30 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 23 17:48:50 2012 +0200 add plots to the documentation. Documentation/sphinx/source/bindings/bindings.rst | 5 ++ Documentation/sphinx/source/conf.py.in | 6 +- Documentation/sphinx/source/pyplots/trajectory.py | 99 +++++++++++++++++++++++ sphinx.make | 4 +- test/bindings/python.py | 5 +- 5 files changed, 114 insertions(+), 5 deletions(-) commit a90e5d5cc34068b3bcf53f797b7fc39aafd8544b Author: Frédéric-Emmanuel PICCA Date: Thu Aug 23 13:31:08 2012 +0200 acces to HklGeometry axes member is possible exemple: axes = geometry.axes() Documentation/sphinx/source/bindings/python.py | 85 +++++++++--------- hkl/Hkl-5.0.gir | 97 ++++++++++++++++---- hkl/hkl-binding-private.h | 11 ++- hkl/hkl-binding.c | 117 +++++++++++++++++++++---- hkl/hkl-geometry.h | 6 +- hkl/hkl-pseudoaxis.h | 13 ++- test/bindings/python.py | 46 +++++++--- 7 files changed, 280 insertions(+), 95 deletions(-) commit db9ac07e164a70270980748f339335da6a1418d0 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 22 16:07:30 2012 +0200 now we can get an array of the pseudo axes values with the units exemple engine.get_values_unit() hkl/Hkl-5.0.gir | 25 ++++++++++++++++++++++--- hkl/hkl-binding-private.h | 3 +++ hkl/hkl-binding.c | 23 +++++++++++++++++++++++ hkl/hkl-pseudoaxis.c | 10 +++++----- test/bindings/python.py | 3 ++- 5 files changed, 55 insertions(+), 9 deletions(-) commit 6a95753a9cec70d14631e8add12e2312e9b76fb6 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 22 15:48:23 2012 +0200 get all values of and engine at a time test/bindings/python.py | 4 ++++ 1 file changed, 4 insertions(+) commit 38c659adfe6736d88adccde7c3cfd70872bf9e39 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 22 14:57:01 2012 +0200 improve the documentaiton about the binding hkl_parameter_get_value_unit (skip) -> binding Documentation/sphinx/source/bindings/python.py | 24 ++++++++++++++++++++++++ hkl/Hkl-5.0.gir | 3 +-- hkl/hkl-parameter.c | 4 ++-- 3 files changed, 27 insertions(+), 4 deletions(-) commit 4a5352a3e42de677f32980924377dee679b68757 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 22 14:55:35 2012 +0200 check that pseudo axis value is reachable from the python binding test/bindings/python.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit bf1918b5fbf5e1561bdb0eb3cf6d520d765d54be Author: Frédéric-Emmanuel PICCA Date: Wed Aug 22 14:54:46 2012 +0200 let use the "rad" instead of "" for the angle radian represeantion hkl/hkl-unit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 52cc6c1c4dd69d74ea63dbe5c0787dad934ccdb3 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 18:16:50 2012 +0200 check also that the geometry member of the geometrylistItem is correct test/bindings/python.py | 1 + 1 file changed, 1 insertion(+) commit 495d876c82040116a4affa7d03110df869ab8bc8 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 18:11:41 2012 +0200 now we can iterate for each pseudo_axis for pseudo_axis in engine.pseudo_axes(): print pseudo_axis hkl/Hkl-5.0.gir | 10 ++++++++++ hkl/hkl-binding-private.h | 6 ++++++ hkl/hkl-binding.c | 19 +++++++++++++++++++ test/bindings/python.py | 2 ++ 4 files changed, 37 insertions(+) commit c4821e27fbd42df4e99674397bcd2145cf1e3586 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 17:10:24 2012 +0200 reorder the python test to follow the alphabetic order test are executed in the alphabetic order. test/bindings/python.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) commit a2b26f0ffac694dab71b615750c9c2f8b433d494 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 17:09:46 2012 +0200 move all the binding method into dedicated files hkl/Hkl-5.0.gir | 31 +++++-------- hkl/Makefile.am | 6 ++- hkl/hkl-binding-private.h | 53 +++++++++++++++++++++++ hkl/hkl-binding.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-geometry.c | 47 -------------------- hkl/hkl-geometry.h | 7 --- hkl/hkl-pseudoaxis.c | 30 ------------- hkl/hkl-pseudoaxis.h | 3 -- test/bindings/python.py | 1 + 9 files changed, 178 insertions(+), 108 deletions(-) commit 42c72141321d43962aaf414b22d4d9e2ee2276c2 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 14:13:24 2012 +0200 add the .gir file even if this fil is generated, it will be easyer to follow binding evolution when tuning the annotations. hkl/Hkl-5.0.gir | 4267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4267 insertions(+) commit 0bb2e3b2cfd726f6c2eb9a007e553a1aaa2c3129 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 14:10:30 2012 +0200 remove a few const in the struct xxxInfo this should solve the "assignment of read-only location" when creating copy constructors. hkl/hkl-pseudoaxis.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a7bac918ce218eb7bff690ad03be7f97fed42946 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 13:47:23 2012 +0200 be clear that binding api will not be public in near futur hkl/hkl-geometry.c | 121 ++++++++++++++++++++------------------------------- hkl/hkl-geometry.h | 2 +- hkl/hkl-pseudoaxis.h | 5 +-- 3 files changed, 49 insertions(+), 79 deletions(-) commit 6f60459c0020f6c24038938a7e784cc1be6cec3f Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 13:46:52 2012 +0200 now it is possible to iterate over HklGeometryListItem exemple: for item in engine.geometries.items(): print item hkl/hkl-geometry.c | 121 +++++++++++++++++++++++++++++------------------- hkl/hkl-geometry.h | 3 ++ test/bindings/python.py | 8 ++-- 3 files changed, 81 insertions(+), 51 deletions(-) commit 6ee47cc9820a93d27a31cce75f80ea95e9fb257c Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 11:33:16 2012 +0200 add a binding dedicated method to the HklPseudoAxisEngineList now it is possible to iterate on each engine like this for engine in engines.engines(): print engine hkl/hkl-pseudoaxis.c | 30 +++++++++++++++++++++++ hkl/hkl-pseudoaxis.h | 7 ++++++ test/bindings/python.py | 65 ++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 93 insertions(+), 9 deletions(-) commit e1b4dd8d610469eee847d754ccd7398f5c43200e Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 09:51:58 2012 +0200 remove the hkl-pseudoaxis-engine-common files (useless) hkl/Makefile.am | 2 - hkl/hkl-pseudoaxis-auto-private.h | 3 ++ hkl/hkl-pseudoaxis-common-eulerians.c | 1 - hkl/hkl-pseudoaxis-common-hkl-private.h | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 3 +- hkl/hkl-pseudoaxis-common-private.h | 47 -------------------- hkl/hkl-pseudoaxis-common-psi.c | 3 +- hkl/hkl-pseudoaxis-common-q.c | 4 +- hkl/hkl-pseudoaxis-common.c | 78 --------------------------------- hkl/hkl-pseudoaxis-private.h | 32 ++++++++++++-- 10 files changed, 36 insertions(+), 139 deletions(-) commit 150541ffc4d1c4fc5bd07ff459833b2d9bd0cdd1 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 09:25:37 2012 +0200 the struc _HklPseudoAxisEngineModeOperations is now part of private hkl/hkl-pseudoaxis-private.h | 22 ++++++++++++++++++++++ hkl/hkl-pseudoaxis.h | 22 ---------------------- 2 files changed, 22 insertions(+), 22 deletions(-) commit 5295ef5f4f7fae295d66d31fb334af251a4c2872 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 19:05:13 2012 +0200 create an HklPseudoAxisEngineModeInfo for the Automatic modes. hkl/hkl-pseudoaxis-auto-private.h | 26 +++++++++- hkl/hkl-pseudoaxis-auto.c | 35 ++++++++++++-- hkl/hkl-pseudoaxis-common-eulerians.c | 6 +-- hkl/hkl-pseudoaxis-common-psi-private.h | 6 +-- hkl/hkl-pseudoaxis-common-psi.c | 12 ++--- hkl/hkl-pseudoaxis-common-q.c | 8 ++-- hkl/hkl-pseudoaxis-e4c-hkl.c | 36 +++++++------- hkl/hkl-pseudoaxis-e4c-psi.c | 4 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 78 +++++++++++++++--------------- hkl/hkl-pseudoaxis-e6c-psi.c | 6 +-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 36 +++++++------- hkl/hkl-pseudoaxis-k4cv-psi.c | 7 +-- hkl/hkl-pseudoaxis-k6c-hkl.c | 84 ++++++++++++++++----------------- hkl/hkl-pseudoaxis-k6c-psi.c | 7 +-- hkl/hkl-pseudoaxis-petra3-hkl.c | 42 ++++++++--------- hkl/hkl-pseudoaxis-private.h | 9 ---- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 18 +++---- hkl/hkl-pseudoaxis-zaxis-hkl.c | 12 ++--- hkl/hkl-pseudoaxis.c | 6 --- hkl/hkl-pseudoaxis.h | 3 -- 20 files changed, 232 insertions(+), 209 deletions(-) commit 50f29b402a36d5ff0dab0764403b0372a6a463b1 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 16:13:55 2012 +0200 reorganisation of the .h files to tighten the dependencies hkl/hkl-pseudoaxis-auto-private.h | 13 ++++++++++++- hkl/hkl-pseudoaxis-common-hkl-private.h | 4 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 9 ++++----- hkl/hkl-pseudoaxis-common-psi.c | 9 +++++---- hkl/hkl-pseudoaxis-common-q.c | 8 +++----- hkl/hkl-pseudoaxis-e4c-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-e4c-psi.c | 6 ++++-- hkl/hkl-pseudoaxis-e6c-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-e6c-psi.c | 5 +++-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-k4cv-psi.c | 5 +++-- hkl/hkl-pseudoaxis-k6c-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-k6c-psi.c | 5 +++-- hkl/hkl-pseudoaxis-petra3-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-private.h | 16 ---------------- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 6 +++--- hkl/hkl-pseudoaxis-zaxis-hkl.c | 6 +++--- 17 files changed, 60 insertions(+), 62 deletions(-) commit 2c73502582fa6312febc83527e37822520e94821 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 14:56:49 2012 +0200 now all code diffractometers specific is private hkl/Makefile.am | 26 +++++++++++----------- ...doaxis-auto.h => hkl-pseudoaxis-auto-private.h} | 0 ...h => hkl-pseudoaxis-common-eulerians-private.h} | 0 ...n-hkl.h => hkl-pseudoaxis-common-hkl-private.h} | 0 ...is-common.h => hkl-pseudoaxis-common-private.h} | 0 ...ommon-q.h => hkl-pseudoaxis-common-q-private.h} | 0 hkl/hkl-pseudoaxis-e4c-hkl.c | 4 ++-- ...eudoaxis-e4c.h => hkl-pseudoaxis-e4c-private.h} | 0 hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 4 ++-- ...eudoaxis-e6c.h => hkl-pseudoaxis-e6c-private.h} | 0 hkl/hkl-pseudoaxis-factory.c | 18 +++++++-------- hkl/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- ...doaxis-k4cv.h => hkl-pseudoaxis-k4cv-private.h} | 0 hkl/hkl-pseudoaxis-k6c-hkl.c | 4 ++-- ...eudoaxis-k6c.h => hkl-pseudoaxis-k6c-private.h} | 0 hkl/hkl-pseudoaxis-petra3-hkl.c | 4 ++-- ...is-petra3.h => hkl-pseudoaxis-petra3-private.h} | 0 ....h => hkl-pseudoaxis-soleil-sixs-med-private.h} | 0 hkl/hkl-pseudoaxis-soleil-sixs-med.c | 4 ++-- hkl/hkl-pseudoaxis-zaxis-hkl.c | 4 ++-- ...axis-zaxis.h => hkl-pseudoaxis-zaxis-private.h} | 0 22 files changed, 37 insertions(+), 37 deletions(-) commit 94b542291a3ab8e396f2d350b3cea7a9541a41cf Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 14:19:40 2012 +0200 reactive tests for the euerlain4c diffractometer test/hkl/pseudoaxis-e4cv-t.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) commit 2190b258bb2ce3a36a0f2c7d301bf865cd2b7038 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 14:19:04 2012 +0200 fix a warning during the introspection hkl/hkl-pseudoaxis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d1b8846ca11884227afd2f1ad7fccba76ad6a024 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 14:18:02 2012 +0200 update the hkl.h files to expose only the factories. hkl.h | 6 +----- test/hkl/pseudoaxis-e4cv-t.c | 10 ---------- 2 files changed, 1 insertion(+), 15 deletions(-) commit 35483be38b7b7582de676b4b137a0f54acff88e3 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 13:55:18 2012 +0200 clean the public header of the pseudo axes. now it is clear to indentify public/private/protected. hkl/hkl-pseudoaxis-auto.c | 1 + hkl/hkl-pseudoaxis-common-eulerians.c | 1 + hkl/hkl-pseudoaxis-common-hkl.c | 1 + hkl/hkl-pseudoaxis-common-q.c | 2 + hkl/hkl-pseudoaxis-private.h | 235 +++++++++++++++++++++++++++ hkl/hkl-pseudoaxis.c | 291 ---------------------------------- hkl/hkl-pseudoaxis.h | 48 +----- test/hkl/pseudoaxis-e4ch-t.c | 13 +- test/hkl/pseudoaxis-e6c-t.c | 13 +- test/hkl/pseudoaxis-k4cv-t.c | 11 +- test/hkl/pseudoaxis-k6c-t.c | 11 +- test/hkl/pseudoaxis-t.c | 25 ++- 12 files changed, 270 insertions(+), 382 deletions(-) commit 71ff328851e5b1ce4cb46c27420a5ec4796f7e65 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 11:33:59 2012 +0200 add the test directory to the clean-all script and use it scripts/clean-all | 4 ++-- test/hkl/pseudoaxis-t.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 8a77425a1b81fc6a9183810748769112da6e5120 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 11:02:47 2012 +0200 use the clean-all script on all relevant files configure.ac | 2 +- gui/hkl-gui-3d.h | 12 +-- gui/hkl-gui-callbacks.cpp | 2 +- gui/hkl-gui-modelcolumns.h | 100 +++++++++++------------ gui/hkl-gui.cpp | 3 +- hkl/hkl-detector-factory.c | 4 +- hkl/hkl-detector.c | 16 ++-- hkl/hkl-geometry-factory.c | 10 +-- hkl/hkl-geometry.c | 96 +++++++++++----------- hkl/hkl-interval.c | 64 +++++++-------- hkl/hkl-lattice.c | 52 ++++++------ hkl/hkl-matrix.c | 10 +-- hkl/hkl-parameter.c | 90 ++++++++++---------- hkl/hkl-pseudoaxis-common-hkl.c | 42 +++++----- hkl/hkl-pseudoaxis-common-hkl.h | 3 +- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- hkl/hkl-pseudoaxis-factory.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 2 +- hkl/hkl-pseudoaxis.c | 37 ++++++--- hkl/hkl-quaternion.c | 10 +-- hkl/hkl-sample.c | 176 ++++++++++++++++++++-------------------- hkl/hkl-sample.h | 3 +- hkl/hkl-source.c | 14 ++-- hkl/hkl-source.h | 2 +- hkl/hkl-unit.c | 4 +- hkl/hkl-vector.c | 6 +- 27 files changed, 388 insertions(+), 378 deletions(-) commit e69c69343c3809ebc0ec13658d9fcb78f14886d6 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 10:49:34 2012 +0200 fix the yaml configure part configure.ac | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 10588f3b1f8f78008612cbb7223dc803e32daedf Author: Frédéric-Emmanuel PICCA Date: Mon Aug 20 09:38:32 2012 +0200 fix for real the introspection Makefile.am part hkl/Makefile.am | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 53b1afcae2ff99637122fa01d65a4dceacba5c35 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 22:25:53 2012 +0200 fix the version of the introspection files hkl/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 5add1f0c67044eef62867050cc59e2dbd3b4ee5e Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 21:04:42 2012 +0200 distcheck is now working ccan/Makefile.am | 10 +++++++++- hkl/Makefile.am | 5 +++-- 2 files changed, 12 insertions(+), 3 deletions(-) commit cc7fe4c59f1e478b1c91ab13e4f5410d6fb7a806 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 20:40:26 2012 +0200 fix an header hkl/hkl-pseudoaxis-common-psi-private.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d46fe890051069fc944229d6d3e6afd37c4e1c44 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 20:40:07 2012 +0200 add the python binding unit test configure.ac | 1 + test/Makefile.am | 3 +++ test/bindings/Makefile.am | 4 +++ test/bindings/python.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+) commit c61a0f03918da703ab5bcfffc4c352176b117923 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 18:27:15 2012 +0200 move a few methods of HklPseudoAxisEngineList in the private header hkl/hkl-pseudoaxis-factory.c | 1 + hkl/hkl-pseudoaxis-private.h | 13 +++++++++++++ hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-pseudoaxis.h | 9 --------- hkl/hkl-types.c | 1 + 5 files changed, 16 insertions(+), 10 deletions(-) commit 02b467184ea41c9dc2ab0bb3e287462da4dbec71 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 16:27:15 2012 +0200 start to create hkl-xxx-private.h files at the end only the non-private header will consist of the hkl public API. hkl/Makefile.am | 4 ++-- ...kl-pseudoaxis-common-psi.h => hkl-pseudoaxis-common-psi-private.h} | 0 hkl/hkl-pseudoaxis-common-psi.c | 3 +-- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) commit e20364a046b6f554f571857a1e97275381160569 Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 16:17:38 2012 +0200 now Hklfunction is private hkl/hkl-pseudoaxis-auto.c | 1 + hkl/hkl-pseudoaxis-common-psi.h | 2 +- hkl/hkl-pseudoaxis-private.h | 14 ++++++++++++++ hkl/hkl-pseudoaxis.h | 7 ------- 4 files changed, 16 insertions(+), 8 deletions(-) commit 8bb19bf76fcdf41824691241e09bfa6d6f07be4c Author: Picca Frédéric-Emmanuel Date: Sun Aug 19 12:00:20 2012 +0200 small optimisation hkl/hkl-pseudoaxis-k6c-hkl.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit 5b0f28cc95893238b2b670411a9c41937920830c Author: Picca Frédéric-Emmanuel Date: Fri Aug 17 21:33:55 2012 +0200 now HklFunction containt the expected number of axes of the method hkl/hkl-pseudoaxis-auto.c | 21 ++++--- hkl/hkl-pseudoaxis-common-hkl.c | 6 +- hkl/hkl-pseudoaxis-common-hkl.h | 22 ++++++- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-psi.h | 7 ++- hkl/hkl-pseudoaxis-common-q.c | 18 ++++-- hkl/hkl-pseudoaxis-e4c-hkl.c | 19 +++--- hkl/hkl-pseudoaxis-e4c-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 40 ++++++++----- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 68 ++++++++++++++++----- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 112 +++++++++++++++++++++++++++-------- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 28 ++++++--- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 13 ++-- hkl/hkl-pseudoaxis-zaxis-hkl.c | 11 +++- hkl/hkl-pseudoaxis.c | 3 + hkl/hkl-pseudoaxis.h | 9 ++- 19 files changed, 280 insertions(+), 107 deletions(-) commit eb978ef6f3a0ce8f1790d2bbba08d82cc2622551 Author: Picca Frédéric-Emmanuel Date: Fri Aug 17 17:07:32 2012 +0200 put also the parameters in the ModeInfo hkl/hkl-pseudoaxis-common-eulerians.c | 15 +-- hkl/hkl-pseudoaxis-common-psi.c | 25 +---- hkl/hkl-pseudoaxis-common-q.c | 4 +- hkl/hkl-pseudoaxis-e4c-hkl.c | 75 ++++--------- hkl/hkl-pseudoaxis-e4c-psi.c | 7 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 145 +++++++------------------- hkl/hkl-pseudoaxis-e6c-psi.c | 7 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 98 ++++++----------- hkl/hkl-pseudoaxis-k4cv-psi.c | 7 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 191 ++++++++++------------------------ hkl/hkl-pseudoaxis-k6c-psi.c | 7 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 21 ++-- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 9 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 6 +- hkl/hkl-pseudoaxis.c | 29 ++---- hkl/hkl-pseudoaxis.h | 10 +- 16 files changed, 204 insertions(+), 452 deletions(-) commit 6f347831706c72d19bdfa2e3cc31d79e40e8409e Author: Picca Frédéric-Emmanuel Date: Fri Aug 17 11:17:41 2012 +0200 use the INFO_xxx methods instead of writing all the time the same thing hkl/hkl-pseudoaxis-common-eulerians.c | 4 +- hkl/hkl-pseudoaxis-common-q.c | 13 +----- hkl/hkl-pseudoaxis-e4c-hkl.c | 36 +++------------ hkl/hkl-pseudoaxis-e4c-psi.c | 6 +-- hkl/hkl-pseudoaxis-e6c-hkl.c | 78 ++++++-------------------------- hkl/hkl-pseudoaxis-e6c-psi.c | 6 +-- hkl/hkl-pseudoaxis-k4cv-hkl.c | 36 +++------------ hkl/hkl-pseudoaxis-k4cv-psi.c | 6 +-- hkl/hkl-pseudoaxis-k6c-hkl.c | 84 ++++++----------------------------- hkl/hkl-pseudoaxis-k6c-psi.c | 6 +-- hkl/hkl-pseudoaxis-petra3-hkl.c | 42 +++--------------- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 18 ++------ hkl/hkl-pseudoaxis-zaxis-hkl.c | 12 +---- hkl/hkl-pseudoaxis.h | 3 ++ 14 files changed, 61 insertions(+), 289 deletions(-) commit 29b7162baf5cea5cc1168da936ce998bc661069e Author: Picca Frédéric-Emmanuel Date: Thu Aug 16 19:08:48 2012 +0200 move the functions in the HklPseudoAxisEngineModeInfo hkl/hkl-pseudoaxis-auto.c | 4 +-- hkl/hkl-pseudoaxis-common-eulerians.c | 1 - hkl/hkl-pseudoaxis-common-psi.c | 8 +++-- hkl/hkl-pseudoaxis-common-psi.h | 2 ++ hkl/hkl-pseudoaxis-common-q.c | 14 +++++---- hkl/hkl-pseudoaxis-e4c-hkl.c | 25 +++++++++++----- hkl/hkl-pseudoaxis-e4c-psi.c | 6 ++-- hkl/hkl-pseudoaxis-e6c-hkl.c | 52 ++++++++++++++++++++++++-------- hkl/hkl-pseudoaxis-e6c-psi.c | 3 ++ hkl/hkl-pseudoaxis-k4cv-hkl.c | 24 +++++++++++---- hkl/hkl-pseudoaxis-k4cv-psi.c | 3 ++ hkl/hkl-pseudoaxis-k6c-hkl.c | 56 ++++++++++++++++++++++++++--------- hkl/hkl-pseudoaxis-k6c-psi.c | 3 ++ hkl/hkl-pseudoaxis-petra3-hkl.c | 28 +++++++++++++----- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 12 ++++++-- hkl/hkl-pseudoaxis-zaxis-hkl.c | 8 +++-- hkl/hkl-pseudoaxis.c | 28 ++++-------------- hkl/hkl-pseudoaxis.h | 9 +++--- 18 files changed, 193 insertions(+), 93 deletions(-) commit b84ec692daefb4e58f440d6e3f251efcd126da04 Author: Picca Frédéric-Emmanuel Date: Thu Aug 16 17:21:20 2012 +0200 add the HklPseudoAxisengineModeInfo structure and use it gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl/hkl-pseudoaxis-auto.c | 4 +- hkl/hkl-pseudoaxis-common-eulerians.c | 43 +-- hkl/hkl-pseudoaxis-common-hkl.c | 51 ++-- hkl/hkl-pseudoaxis-common-hkl.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 12 +- hkl/hkl-pseudoaxis-common-psi.h | 5 +- hkl/hkl-pseudoaxis-common-q.c | 86 +++--- hkl/hkl-pseudoaxis-e4c-hkl.c | 223 ++++++++++----- hkl/hkl-pseudoaxis-e4c-psi.c | 26 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 432 +++++++++++++++++++--------- hkl/hkl-pseudoaxis-e6c-psi.c | 35 ++- hkl/hkl-pseudoaxis-k4cv-hkl.c | 243 ++++++++++------ hkl/hkl-pseudoaxis-k4cv-psi.c | 36 ++- hkl/hkl-pseudoaxis-k6c-hkl.c | 512 ++++++++++++++++++++++------------ hkl/hkl-pseudoaxis-k6c-psi.c | 28 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 197 ++++++++----- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 101 ++++--- hkl/hkl-pseudoaxis-zaxis-hkl.c | 72 +++-- hkl/hkl-pseudoaxis.c | 46 +-- hkl/hkl-pseudoaxis.h | 18 +- test/hkl/bench-t.c | 2 +- test/hkl/pseudoaxis-t.c | 4 +- 23 files changed, 1423 insertions(+), 757 deletions(-) commit 44bdd4954c1c2c90fc1244bd2f34b040e1077c0b Author: Picca Frédéric-Emmanuel Date: Wed Aug 15 21:29:50 2012 +0200 error in the k4cv diffractometer hkl/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2ec7ce27b29b70c33b9adda3712544a9f98cf661 Author: Picca Frédéric-Emmanuel Date: Wed Aug 15 15:24:17 2012 +0200 add a command line option of the number of test in pseudoaxis-t you can define the number of test for each mode with the first command ligne arg test/hkl/pseudoaxis-t 1000 test/hkl/pseudoaxis-t.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) commit e04641576d6bfbbaaca75de3d97f95c8a1367642 Author: Picca Frédéric-Emmanuel Date: Wed Aug 15 15:18:43 2012 +0200 for consistancy use CHECK_NAN in each mode. hkl/hkl-pseudoaxis-common-eulerians.c | 60 ++++---- hkl/hkl-pseudoaxis-common-hkl.c | 74 +++------- hkl/hkl-pseudoaxis-common-hkl.h | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 50 +++---- hkl/hkl-pseudoaxis-common-q.c | 42 +++--- hkl/hkl-pseudoaxis-e4c-hkl.c | 16 +-- hkl/hkl-pseudoaxis-e6c-hkl.c | 41 +++--- hkl/hkl-pseudoaxis-k4cv-hkl.c | 167 ++++++++------------- hkl/hkl-pseudoaxis-k6c-hkl.c | 263 ++++++++++++---------------------- hkl/hkl-pseudoaxis-petra3-hkl.c | 27 ++-- hkl/hkl-pseudoaxis-private.h | 6 + hkl/hkl-pseudoaxis-soleil-sixs-med.c | 20 ++- hkl/hkl-pseudoaxis-zaxis-hkl.c | 14 +- hkl/hkl-pseudoaxis.c | 20 +++ hkl/hkl-pseudoaxis.h | 3 + 15 files changed, 321 insertions(+), 484 deletions(-) commit 05301e70d9d840d8bf41fb1b08a5610eab23a414 Author: Picca Frédéric-Emmanuel Date: Wed Aug 15 09:30:53 2012 +0200 add an HklPseudoAxisEngineinfo struct ccan/array_size/array_size.h | 25 +++++++++++++++++ gui/Makefile.am | 3 +- gui/hkl-gui-pseudoaxes.cpp | 2 +- hkl/hkl-parameter.h | 4 +++ hkl/hkl-pseudoaxis-common-eulerians.c | 51 +++++++++++++++------------------ hkl/hkl-pseudoaxis-common-hkl.c | 45 ++++++++++++----------------- hkl/hkl-pseudoaxis-common-psi.c | 29 ++++++++++--------- hkl/hkl-pseudoaxis-common-q.c | 53 ++++++++++++++++------------------- hkl/hkl-pseudoaxis.c | 37 +++++------------------- hkl/hkl-pseudoaxis.h | 13 ++++++--- test/hkl/bench-t.c | 2 +- test/hkl/pseudoaxis-t.c | 2 +- test/tap/hkl.c | 14 ++++----- 13 files changed, 137 insertions(+), 143 deletions(-) commit 85d69265d4b411ef29dd011812b723a3be8a05c8 Author: Picca Frédéric-Emmanuel Date: Sun Aug 12 15:06:03 2012 +0200 use the list in the pseudo axis engine axes. gui/Makefile.am | 3 +-- hkl/Makefile.am | 5 +++- hkl/hkl-axis.h | 2 ++ hkl/hkl-pseudoaxis-auto.c | 32 ++++++++++++++------------ hkl/hkl-pseudoaxis-common-hkl.c | 17 +++++--------- hkl/hkl-pseudoaxis-common-psi.c | 8 ++----- hkl/hkl-pseudoaxis-common-q.c | 11 +++------ hkl/hkl-pseudoaxis-private.h | 41 +++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis.c | 51 ++++++++++++++++++++--------------------- hkl/hkl-pseudoaxis.h | 5 ++-- 10 files changed, 103 insertions(+), 72 deletions(-) commit 42b6a37d9cd59b1d95046683efd7abc2311f48e9 Author: Picca Frédéric-Emmanuel Date: Sat Aug 11 23:02:05 2012 +0200 use also the list for the PseudoAxes gui/hkl-gui-pseudoaxes.cpp | 10 ++-- gui/hkl-gui.cpp | 16 +++--- hkl/Makefile.am | 3 +- hkl/hkl-pseudoaxis-common-eulerians.c | 32 ++++++++---- hkl/hkl-pseudoaxis-common-hkl.c | 41 +++++++++------ hkl/hkl-pseudoaxis-common-hkl.h | 9 ++-- hkl/hkl-pseudoaxis-common-psi.c | 14 +++-- hkl/hkl-pseudoaxis-common-q.c | 55 ++++++++++---------- hkl/hkl-pseudoaxis.c | 69 +++++++++++++++---------- hkl/hkl-pseudoaxis.h | 16 ++++-- test/hkl/bench-t.c | 97 +++++++++-------------------------- test/hkl/pseudoaxis-e4ch-t.c | 80 ++++++++++------------------- test/hkl/pseudoaxis-e4cv-t.c | 96 +++++++++++++--------------------- test/hkl/pseudoaxis-e6c-t.c | 77 ++++++++++----------------- test/hkl/pseudoaxis-k4cv-t.c | 50 +++++------------- test/hkl/pseudoaxis-k6c-t.c | 49 +++++------------- test/hkl/pseudoaxis-t.c | 30 ++++++----- test/hkl/pseudoaxis-zaxis-t.c | 14 +++-- test/tap/hkl.c | 52 +++++++++++++++---- test/tap/hkl.h | 6 ++- 20 files changed, 365 insertions(+), 451 deletions(-) commit 5ad3ecddc9db48f7153e610290bdb994abc99325 Author: Picca Frédéric-Emmanuel Date: Thu Aug 9 17:56:45 2012 +0200 use the list for the modes in the PseudoAxisEngine gui/hkl-gui-pseudoaxes.cpp | 18 +++++++++--------- gui/hkl-gui-pseudoaxes.h | 2 ++ gui/pseudo.ui | 32 ++++++++++++++++++++++++++++---- hkl/hkl-pseudoaxis-common-eulerians.c | 5 ++--- hkl/hkl-pseudoaxis-common-q.c | 12 ++++-------- hkl/hkl-pseudoaxis-e4c-hkl.c | 5 ++--- hkl/hkl-pseudoaxis-e4c-psi.c | 7 +++---- hkl/hkl-pseudoaxis-e6c-hkl.c | 6 ++---- hkl/hkl-pseudoaxis-e6c-psi.c | 7 +++---- hkl/hkl-pseudoaxis-k4cv-hkl.c | 5 ++--- hkl/hkl-pseudoaxis-k4cv-psi.c | 7 +++---- hkl/hkl-pseudoaxis-k6c-hkl.c | 5 ++--- hkl/hkl-pseudoaxis-k6c-psi.c | 7 +++---- hkl/hkl-pseudoaxis-petra3-hkl.c | 5 ++--- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 11 ++++------- hkl/hkl-pseudoaxis-zaxis-hkl.c | 5 ++--- hkl/hkl-pseudoaxis.c | 34 +++++++++++++++++++++++++--------- hkl/hkl-pseudoaxis.h | 9 ++++++--- test/hkl/bench-t.c | 22 +++++++++++----------- test/hkl/pseudoaxis-e4ch-t.c | 22 +++++++++++++--------- test/hkl/pseudoaxis-e4cv-t.c | 26 +++++++++++++++----------- test/hkl/pseudoaxis-e6c-t.c | 20 +++++++++++--------- test/hkl/pseudoaxis-k4cv-t.c | 28 +++++++++++++++------------- test/hkl/pseudoaxis-k6c-t.c | 25 ++++++++++++++----------- test/hkl/pseudoaxis-t.c | 7 ++++--- 25 files changed, 187 insertions(+), 145 deletions(-) commit 967e1b44ac73dd1fbbb5c77e1d1021876734259f Author: Picca Frédéric-Emmanuel Date: Sat Aug 4 21:01:15 2012 +0200 use the list in the PseudoAxisEngineList gui/hkl-gui.cpp | 14 ++++++------- hkl/hkl-pseudoaxis.c | 55 +++++++++++++++++++++++-------------------------- hkl/hkl-pseudoaxis.h | 5 +++-- test/hkl/pseudoaxis-t.c | 6 +++--- 4 files changed, 38 insertions(+), 42 deletions(-) commit 4c1ca5c6ad87673852967bb4435d14cb40c38655 Author: Picca Frédéric-Emmanuel Date: Tue Jul 24 22:23:31 2012 +0200 test the list.h from ccan Makefile.am | 4 +- ccan/Makefile.am | 3 + ccan/build_assert/build_assert.h | 39 ++++ ccan/check_type/check_type.h | 63 ++++++ ccan/container_of/container_of.h | 108 +++++++++ ccan/list/list.c | 43 ++++ ccan/list/list.h | 469 +++++++++++++++++++++++++++++++++++++++ configure.ac | 1 + gui/Makefile.am | 5 +- gui/hkl-gui-callbacks.cpp | 13 +- gui/hkl-gui-modelcolumns.h | 2 + gui/hkl-gui-pseudoaxes.cpp | 7 +- gui/hkl-gui.cpp | 15 +- hkl/Makefile.am | 5 +- hkl/hkl-geometry.c | 127 ++++++----- hkl/hkl-geometry.h | 14 +- hkl/hkl-pseudoaxis-common-hkl.c | 12 +- hkl/hkl-pseudoaxis-factory.c | 10 +- hkl/hkl-pseudoaxis.c | 4 +- test/hkl/Makefile.am | 2 +- test/hkl/bench-t.c | 7 +- test/hkl/geometry-t.c | 25 +-- test/hkl/pseudoaxis-e4ch-t.c | 40 ++-- test/hkl/pseudoaxis-e4cv-t.c | 40 ++-- test/hkl/pseudoaxis-e6c-t.c | 54 ++--- test/hkl/pseudoaxis-k4cv-t.c | 30 ++- test/hkl/pseudoaxis-k6c-t.c | 29 ++- test/hkl/pseudoaxis-t.c | 12 +- test/hkl/pseudoaxis-zaxis-t.c | 7 +- test/tap/hkl.c | 1 + 30 files changed, 993 insertions(+), 198 deletions(-) commit 84777a74b060d174acc24280256fa215fa92daf4 Author: Picca Frédéric-Emmanuel Date: Tue Jul 24 11:53:12 2012 +0200 now distcheck is working configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit adc13e2193dd6e3322c95502fd6354a4ed0d7c26 Merge: c0ed0cea 50a84fb0 Author: Picca Frédéric-Emmanuel Date: Tue Jul 24 10:54:14 2012 +0200 Merge branch 'maint' into next Conflicts: TODO configure.ac hkl/hkl-pseudoaxis-e6c-hkl.c test/hkl/pseudoaxis-e6c-t.c test/hkl/pseudoaxis-k6c-t.c commit 50a84fb0aef6f9b7f8766592fdafae65f7a4c42c Author: Picca Frédéric-Emmanuel Date: Sat Jul 21 14:35:27 2012 +0200 better resolution for the figures of the documentation Documentation/figures/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5e69c9ad41e54d4eb40a13452b8e031b3c84cc6c Author: Picca Frédéric-Emmanuel Date: Sat Jul 21 14:35:06 2012 +0200 think about prigo TODO | 1 + 1 file changed, 1 insertion(+) commit ce64b0e6db1804ac4521ba1a161d3cecb2eca708 Author: Frédéric-Emmanuel PICCA Date: Thu Jul 19 15:43:55 2012 +0200 new rc3 for petraIII configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e45d7afea744c130ada17b8965c7af910885697a Author: Frédéric-Emmanuel PICCA Date: Tue Jul 17 17:12:17 2012 +0200 fix the psi_constant_vertical issue found by petraIII (thanks Sonia) in fact instead of computing UB . h, it was h . UB (wrong) very bad error which affect only the psi values (read and write). I added an unitary test from the mail sent by Sonia. the UB initialisation was wrong also so now I use hkl_sample_set_U_from_euler hkl/hkl-pseudoaxis-common-hkl.c | 15 ++- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 2 +- test/hkl-test-pseudoaxis-e6c.c | 227 +++++++++++++++++++++++++++++++++++++++- test/hkl-test-pseudoaxis-k6c.c | 3 +- 5 files changed, 238 insertions(+), 13 deletions(-) commit c0ed0cea56675b26ff81ea7c289a5ede9ffff665 Merge: 44502889 86d308a7 Author: Picca Frédéric-Emmanuel Date: Sun Jun 17 23:05:42 2012 +0200 Merge branch 'introspection' into next Conflicts: configure.ac hkl/hkl-geometry-factory.c hkl/hkl-geometry.c hkl/hkl-geometry.h hkl/hkl-pseudoaxis.c hkl/hkl-pseudoaxis.h hkl/hkl-sample.c hkl/hkl-sample.h hkl/hkl-unit.c test/hkl/pseudoaxis-t.c commit 445028891e4d52770bf77d0a798fd32276e95965 Merge: 36c0c659 8c599b9e Author: Picca Frédéric-Emmanuel Date: Sun Jun 17 21:00:31 2012 +0200 Merge branch 'introspection' into next Conflicts: configure.ac gui/hkl-gui-modelcolumns.h gui/hkl-gui.cpp hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry.c hkl/hkl-geometry.h hkl/hkl-lattice.c hkl/hkl-list.h hkl/hkl-pseudoaxis-auto.c hkl/hkl-pseudoaxis-common-hkl.c hkl/hkl-pseudoaxis-common-psi.c hkl/hkl-pseudoaxis-common-q.c hkl/hkl-pseudoaxis.c hkl/hkl-pseudoaxis.h hkl/hkl-sample.c hkl/hkl-sample.h hkl/hkl-unit.c hkl/pom.xml scripts/clean-all test/hkl/pseudoaxis-t.c commit 86d308a76f2aed87bfb96ab8f408814b0cfb20ed Merge: fc27d4da 8c599b9e Author: Picca Frédéric-Emmanuel Date: Sat Jun 16 15:18:12 2012 +0200 Merge branch 'maint' into introspection commit fc27d4dae74ade6618fe5925eefbfc5efc23c619 Author: Picca Frédéric-Emmanuel Date: Thu Jun 7 22:28:10 2012 +0200 add HklPseudoAxisEngineList introspection Documentation/sphinx/source/bindings/python.py | 1 + Documentation/sphinx/source/test.py | 20 ++- hkl/hkl-detector.c | 22 ++- hkl/hkl-detector.h | 2 + hkl/hkl-geometry.c | 9 + hkl/hkl-pseudoaxis-factory.h | 1 - hkl/hkl-pseudoaxis.c | 239 +++++++++++++++++-------- hkl/hkl-pseudoaxis.h | 15 +- hkl/hkl-sample.c | 5 +- hkl/hkl-types.c | 30 +++- hkl/hkl-types.h | 3 + test/hkl-test-pseudoaxis.c | 26 +++ 12 files changed, 284 insertions(+), 89 deletions(-) commit 8c599b9e92d809aac8a040cc8ee236128409bab7 Author: Picca Frédéric-Emmanuel Date: Mon Mar 19 15:14:35 2012 +0100 first version of the constant_incidence mode for K6C .../sphinx/source/diffractometers/k6c.rst | 19 ++++++ NEWS | 2 + hkl/hkl-pseudoaxis-common.c | 29 ++++++++ hkl/hkl-pseudoaxis-common.h | 9 +++ hkl/hkl-pseudoaxis-k6c-hkl.c | 77 ++++++++++++++++++++++ 5 files changed, 136 insertions(+) commit 2b45fbd5dbc046e6445ac3d2106fdebc27a7519a Author: Frédéric-Emmanuel PICCA Date: Thu Mar 15 11:56:11 2012 +0100 WORK IN PROGRESS Documentation/sphinx/source/bindings/python.py | 11 ++++++ hkl/hkl-geometry.c | 51 +++++++++++++++++++++++++- hkl/hkl-geometry.h | 4 ++ 3 files changed, 64 insertions(+), 2 deletions(-) commit 7b738f9e01bbdde3648cf5f6c5b08adb45c2a60e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 31 16:38:49 2012 +0100 typo hkl/hkl-parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6feb14ee6fc0816284b349b4c375a150e7d92bed Author: Frédéric-Emmanuel PICCA Date: Tue Jan 31 16:38:35 2012 +0100 add the HklPseudoAxisEngineList Documentation/sphinx/source/bindings.rst | 34 --------- Documentation/sphinx/source/bindings/bindings.rst | 14 ++++ Documentation/sphinx/source/bindings/python.py | 45 +++++++++++ Documentation/sphinx/source/index.rst | 2 +- INSTALL | 9 ++- hkl/Makefile.am | 2 + hkl/hkl-geometry-factory.c | 4 +- hkl/hkl-pseudoaxis-factory.c | 8 ++ hkl/hkl-pseudoaxis.c | 93 ++++++++++++++++++++++- hkl/hkl-pseudoaxis.h | 14 ++-- hkl/hkl-types.c | 12 +++ hkl/hkl-types.h | 3 + 12 files changed, 191 insertions(+), 49 deletions(-) commit d9757e93042a66a22be4b747efa913a242b6e6ef Author: Frédéric-Emmanuel PICCA Date: Fri Nov 25 16:54:22 2011 +0100 add the HklPseudoAxis struct hkl/Makefile.am | 6 ++++-- hkl/hkl-pseudoaxis.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++-- hkl/hkl-pseudoaxis.h | 37 ++++++++++++++++++++++------------ hkl/hkl-types.c | 12 +++++++++++ hkl/hkl-types.h | 5 ++++- 5 files changed, 99 insertions(+), 18 deletions(-) commit 52b3327bfcf1702bfb6f27f2b66f081798ea1c69 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 15 16:42:31 2011 +0100 add the HklError to the introspection. hkl/Makefile.am | 2 ++ hkl/hkl-error.c | 58 +++++++++++++++++++++++++++------------------------------ hkl/hkl-types.c | 12 ++++++++++++ hkl/hkl-types.h | 3 +++ 4 files changed, 44 insertions(+), 31 deletions(-) commit 72bc4760ac3c40d693ba8bdf46010772934c3209 Author: Picca Frédéric-Emmanuel Date: Sun Nov 13 19:10:18 2011 +0100 add the sample to the introspection Documentation/sphinx/source/bindings.rst | 2 +- hkl/Makefile.am | 2 + hkl/hkl-sample.c | 460 +++++++++++++++++++++++++------ hkl/hkl-sample.h | 37 ++- hkl/hkl-types.c | 36 +++ hkl/hkl-types.h | 9 + 6 files changed, 442 insertions(+), 104 deletions(-) commit 930d24512f0ea00d976cdaa9ee007d9cb6f90e3d Author: Picca Frédéric-Emmanuel Date: Sun Nov 13 18:14:33 2011 +0100 add the HklLattice hkl/Makefile.am | 2 ++ hkl/hkl-lattice.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++----- hkl/hkl-lattice.h | 10 +++--- hkl/hkl-types.c | 12 ++++++++ hkl/hkl-types.h | 3 ++ 5 files changed, 107 insertions(+), 12 deletions(-) commit 9447b54c1e2949810e1ff4a29ff6993e6c7e71ba Author: Picca Frédéric-Emmanuel Date: Sun Nov 13 17:39:16 2011 +0100 add the geometry factory Documentation/sphinx/source/bindings.rst | 10 ++-- hkl/Makefile.am | 2 + hkl/hkl-geometry-factory.c | 86 ++++++++++++++++++++++++-------- hkl/hkl-geometry-factory.h | 3 ++ 4 files changed, 76 insertions(+), 25 deletions(-) commit 421a9aff01ab321a971ca07a128d593e3a6b8610 Author: Picca Frédéric-Emmanuel Date: Sun Nov 13 14:46:55 2011 +0100 add the HklGeoemtry to the introspection hkl/Makefile.am | 2 + hkl/hkl-geometry.c | 293 +++++++++++++++++++++++++++++++++++++++++++++++------ hkl/hkl-geometry.h | 17 ++-- hkl/hkl-types.c | 36 +++++++ hkl/hkl-types.h | 9 ++ 5 files changed, 322 insertions(+), 35 deletions(-) commit 945b75f6fd07cfccc9b7c53cffdc9c4037daf8c6 Author: Picca Frédéric-Emmanuel Date: Wed Nov 9 17:14:27 2011 +0100 add a few more class to the introspection Documentation/sphinx/source/bindings.rst | 19 +++- hkl/Makefile.am | 6 ++ hkl/hkl-interval.c | 163 +++++++++++++++++++++++++++++-- hkl/hkl-interval.h | 18 ++-- hkl/hkl-parameter.c | 154 +++++++++++++++++++++++++---- hkl/hkl-parameter.h | 24 ++--- hkl/hkl-types.c | 36 +++++++ hkl/hkl-types.h | 9 ++ hkl/hkl-unit.c | 57 ++++++++++- hkl/hkl-unit.h | 9 +- 10 files changed, 443 insertions(+), 52 deletions(-) commit c6e861b1204f33d18d985628c3a37c9e753948fd Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 21:18:45 2011 +0200 still working on the introspection hkl/Makefile.am | 3 ++- hkl/hkl-type-builtins.c | 8 +++++--- hkl/hkl-type-builtins.h | 6 +++--- 3 files changed, 10 insertions(+), 7 deletions(-) commit 7ab17d328d6fb0765f4ae731451db0587e7d8f6b Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 18:30:55 2011 +0200 now the introspection infrastructure is there. Documentation/sphinx/source/bindings.rst | 17 +++ Documentation/sphinx/source/index.rst | 1 + Documentation/sphinx/source/test.py | 221 +++++++++++++++++++++++++++++++ configure.ac | 17 +-- hkl/Makefile.am | 51 ++++--- hkl/hkl-detector.c | 38 ++++++ hkl/hkl-sample.h | 10 +- hkl/hkl-source.c | 77 ++++++++++- hkl/hkl-source.h | 6 +- hkl/hkl-type-builtins.c.template | 1 + hkl/hkl-types.c | 24 ++++ hkl/hkl-types.h | 6 + 12 files changed, 432 insertions(+), 37 deletions(-) commit baceddf86f4c2617cb39b43543e7a8ed6c3179b1 Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 11:47:35 2011 +0200 remove the introspection subdirectory hkl/Makefile.am | 23 ++++++------ hkl/hkl-type-builtins.c | 81 ++++++++++++++++++++++++++++++++++++++++ hkl/hkl-type-builtins.c.template | 37 ++++++++++++++++++ hkl/hkl-type-builtins.h | 31 +++++++++++++++ hkl/hkl-type-builtins.h.template | 24 ++++++++++++ hkl/hkl-types.c | 70 ++++++++++++++++++++++++++++++++++ hkl/hkl-types.h | 46 +++++++++++++++++++++++ 7 files changed, 301 insertions(+), 11 deletions(-) commit feaae00ea53b5ac2ca880fc0d0999b27a0c3bdd1 Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 10:36:02 2011 +0200 set up the introspection code configure.ac | 30 +++++++++++--- hkl/Makefile.am | 42 +++++++++++++++---- hkl/hkl-axis.c | 11 +++++ hkl/hkl-axis.h | 2 + hkl/hkl-detector-factory.c | 8 ++++ hkl/hkl-detector-factory.h | 7 +--- hkl/hkl-error.h | 2 +- hkl/hkl-geometry.h | 7 +--- hkl/hkl-matrix.c | 33 +++++++++++++++ hkl/hkl-matrix.h | 4 ++ hkl/hkl-pseudoaxis-common-hkl.c | 46 +++++++++++++++++++-- hkl/hkl-quaternion.c | 31 ++++++++++++++ hkl/hkl-quaternion.h | 4 ++ hkl/hkl-sample.h | 6 +-- hkl/hkl-unit.h | 6 +-- hkl/hkl-vector.c | 90 ++++++++++++++++++++++++++++------------- hkl/hkl-vector.h | 12 +++--- 17 files changed, 273 insertions(+), 68 deletions(-) commit de26b4afc3230599620f32eaa12b25e31b92f732 Author: Picca Frédéric-Emmanuel Date: Sat Oct 8 09:59:57 2011 +0200 start with only the hklVector object hkl/Makefile.am | 10 +++++++--- hkl/hkl-vector.c | 4 ++-- hkl/hkl-vector.h | 10 ++++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) commit 2d8f78270ad4fb6e82556c6a9c4c90425c5535db Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 17:47:36 2011 +0200 fixup! hkl/Makefile.am | 11 +++-------- hkl/hkl-pseudoaxis-common-hkl.c | 10 ++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) commit 606f224e9921d93c6db49663bdbdb49218e7f032 Author: Picca Frédéric-Emmanuel Date: Sat Oct 1 13:10:50 2011 +0200 add the infrastructure for the gobject-introspection. Makefile.am | 2 +- configure.ac | 5 ++++- hkl/Makefile.am | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) commit a672463176025aa0bedc4b3f27ba7cedae12ba44 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 7 16:42:48 2011 +0100 MED2_2 : alpha axis -> beta axis Documentation/sphinx/source/diffractometers/med2_2.rst | 4 ++-- hkl/hkl-geometry-factory.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 7d748e752a99cc1934160783855394f84efc5695 Author: Picca Frédéric-Emmanuel Date: Sun Oct 23 10:47:51 2011 +0200 MED2_2 : pitch axis -> alpha axis Documentation/sphinx/source/diffractometers/med2_2.rst | 2 +- hkl/hkl-geometry-factory.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit f6e93f9fec1ef3584864bc48b00152b9f67e0826 Author: Picca Frédéric-Emmanuel Date: Wed Sep 28 20:48:24 2011 +0200 more traduction Documentation/sphinx/source/introduction.rst | 63 ++++++++++++++-------------- 1 file changed, 31 insertions(+), 32 deletions(-) commit a67c48018678b60970e4345b3daac13dd31bb488 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 11 10:45:58 2011 +0200 * add the reflectivity mode to the MED2+2 .../sphinx/source/diffractometers/med2_2.rst | 8 ++++++ NEWS | 5 ++-- configure.ac | 2 +- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 32 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) commit 69c0694f2e299e9baaa2d71622b0380ece98864b Author: Frédéric-Emmanuel PICCA Date: Thu Oct 6 16:41:29 2011 +0200 the petra3 p09 EH2 phi axis orientation has changed. Documentation/sphinx/source/diffractometers/petra3.rst | 2 +- hkl/hkl-geometry-factory.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 881c7f37c09dc2fffc47b104e4efbf555333d67d Author: Frédéric-Emmanuel PICCA Date: Thu Oct 6 10:28:23 2011 +0200 prepare a rc1 and add a publish target to publish the documentation. Documentation/sphinx/Makefile.am | 3 +++ configure.ac | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) commit 386e83aacb039943a57f8819f07e5784e7886c5a Author: Frédéric-Emmanuel PICCA Date: Thu Oct 6 10:04:38 2011 +0200 add new mode to E6C psi_constant_horizontal and constant_mu_horizontal modes .../sphinx/source/diffractometers/e6c.rst | 22 ++++++++++++++++ NEWS | 2 ++ hkl/hkl-pseudoaxis-e6c-hkl.c | 29 ++++++++++++++++++++++ 3 files changed, 53 insertions(+) commit 9307cd5dcef1a9eb138b903ec6e8653cd4fab1fd Author: Frédéric-Emmanuel PICCA Date: Thu Oct 6 09:47:35 2011 +0200 add the petra3 p09 eh2 diffractometer .../sphinx/source/diffractometers/petra3.rst | 76 +++++++++++ Documentation/sphinx/source/index.rst | 1 + NEWS | 1 + hkl/Makefile.am | 2 + hkl/hkl-geometry-factory.c | 23 +++- hkl/hkl-geometry-factory.h | 3 +- hkl/hkl-geometry.h | 5 +- hkl/hkl-pseudoaxis-factory.c | 6 +- hkl/hkl-pseudoaxis-factory.h | 2 +- hkl/hkl-pseudoaxis-petra3-hkl.c | 151 +++++++++++++++++++++ hkl/hkl-pseudoaxis-petra3.h | 33 +++++ test/hkl-test-pseudoaxis.c | 11 +- 12 files changed, 307 insertions(+), 7 deletions(-) commit bb236948782454e3e3c437c4fae452fb026dab47 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 5 10:29:21 2011 +0200 typo Documentation/figures/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d83aa96675ec60f6d851c75bb8d9ba29c02f2f1c Author: Picca Frédéric-Emmanuel Date: Sun Jul 24 14:28:23 2011 +0200 traduct into english part of the introduction.rst Documentation/sphinx/source/introduction.rst | 101 +++++++++++++-------------- 1 file changed, 49 insertions(+), 52 deletions(-) commit d11d8054dc33d946d4229044c3f769dd1ab60ec8 Author: Picca Frédéric-Emmanuel Date: Sun Jul 17 14:37:10 2011 +0200 add the eulerian to kappa conversion documentation Documentation/figures/Makefile.am | 11 +++- Documentation/figures/e2k_1.asy | 13 +++++ Documentation/figures/e2k_2.asy | 13 +++++ Documentation/figures/e2k_3.asy | 13 +++++ Documentation/figures/e2k_4.asy | 13 +++++ Documentation/figures/eulerians.asy | 36 +++++++++++++ Documentation/sphinx/Makefile.am | 3 +- Documentation/sphinx/source/index.rst | 1 + Documentation/sphinx/source/pseudo.rst | 94 ++++++++++++++++++++++++++++++++++ 9 files changed, 195 insertions(+), 2 deletions(-) commit fe5d7568f600ff56487418a4cdf858e4272a8c12 Author: Frédéric-Emmanuel PICCA Date: Thu Jul 7 14:24:17 2011 +0200 updating the pom.xml for the new version hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 00cb4f82a36e5cfb12a6482f8986eddcfa57fb79 Author: Frédéric-Emmanuel PICCA Date: Thu Jul 7 14:18:53 2011 +0200 add the SOLEIL MED1+2 diffractometer .../sphinx/source/diffractometers/med1_2.rst | 45 ++++++++++++++++++++++ Documentation/sphinx/source/index.rst | 1 + hkl/hkl-geometry-factory.c | 19 +++++++++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-factory.c | 4 ++ hkl/hkl-pseudoaxis-soleil-sixs-med.c | 23 +++++++++++ hkl/hkl-pseudoaxis-soleil-sixs-med.h | 1 + test/hkl-test-pseudoaxis.c | 11 +++++- 9 files changed, 106 insertions(+), 2 deletions(-) commit 2698d170d14c4628234e5e999814b953fc56b18b Author: Frédéric-Emmanuel PICCA Date: Thu Jul 7 14:12:38 2011 +0200 fix a bug in the documentation of the MED2+2 Documentation/sphinx/source/diffractometers/med2_2.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df769a7799fdf197de00f68f55b1154b4e6f02a1 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 14 15:03:00 2011 +0200 add the k6c diffractometer figures also modify the axes's colors to be consistant from one diffractometer to the other. Documentation/figures/3S+1D.asy | 2 +- Documentation/figures/Makefile.am | 2 ++ Documentation/figures/k4cv.asy | 4 +-- Documentation/figures/k6c.asy | 35 ++++++++++++++++++++++ .../sphinx/source/diffractometers/k6c.rst | 6 ++++ 5 files changed, 46 insertions(+), 3 deletions(-) commit 91dfb7100dd156374256de98da3d181dce3c73fa Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 16:45:57 2011 +0200 better crystal figure Documentation/figures/crystal.asy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e1c88da60d42c6f96aff108bda7a23f252521510 Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 16:18:30 2011 +0200 put the diffractometers pictures at the right place. Documentation/sphinx/source/development.rst | 4 ++-- Documentation/sphinx/source/diffractometers/e4cv.rst | 6 +++--- Documentation/sphinx/source/diffractometers/e6c.rst | 6 ++++++ Documentation/sphinx/source/diffractometers/k4cv.rst | 6 +++--- 4 files changed, 14 insertions(+), 8 deletions(-) commit 465d76476821edb8dc9179002d09cb96623a6206 Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 15:30:09 2011 +0200 improve the documentation - document all the diffractomteres geometries and all pseudo axes - document the configure option for the GUI and the documentation Documentation/sphinx/Makefile.am | 8 +- Documentation/sphinx/source/development.rst | 37 ++- Documentation/sphinx/source/diffractometers.rst | 269 --------------------- .../sphinx/source/diffractometers/e4cv.rst | 108 +++++++++ .../sphinx/source/diffractometers/e6c.rst | 138 +++++++++++ .../sphinx/source/diffractometers/k4cv.rst | 127 ++++++++++ .../sphinx/source/diffractometers/k6c.rst | 160 ++++++++++++ .../sphinx/source/diffractometers/mars.rst | 101 ++++++++ .../sphinx/source/diffractometers/med2_2.rst | 46 ++++ .../sphinx/source/diffractometers/zaxis.rst | 55 +++++ Documentation/sphinx/source/index.rst | 8 +- Documentation/sphinx/source/introduction.rst | 47 ++-- 12 files changed, 800 insertions(+), 304 deletions(-) commit 0dea64b3b8457455d31072e0da218b1e4c679a13 Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 11:24:23 2011 +0200 update the doc Documentation/sphinx/source/diffractometers.rst | 104 ++++++++++++------------ 1 file changed, 54 insertions(+), 50 deletions(-) commit 748b2e79c04863ae64b0e8d673f30ccb25acdb9e Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 11:24:08 2011 +0200 add the "pitch" axis to the MED 2_2 diffractometer Documentation/sphinx/source/diffractometers.rst | 11 +++++++---- hkl/hkl-geometry-factory.c | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) commit 53cd30679f2d71581a1da40405a1bb58e5e2bc76 Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 11:00:16 2011 +0200 add the indent-c++ scripts for c++ files ;) and use it. gui/ghkl-callbacks.cpp | 12 +++---- gui/ghkl.cpp | 26 +++++++------- gui/modelcolumns.h | 98 +++++++++++++++++++++++++------------------------- gui/pseudoaxesframe.h | 26 +++++++------- scripts/clean-all | 3 +- scripts/indent-c++ | 13 +++++++ 6 files changed, 96 insertions(+), 82 deletions(-) commit 1ffd3c219f9ed10b9194eaa9039bd1b76bbe09fb Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 10:47:54 2011 +0200 add a few scripts to clean the files and indent using emacs. - cleanfile was taken from the linux scripts directory, it removes the trailling spaces. - indent was adapted from a public domain scripts. it use for now emacs (it is my prefered editor) to indent the files. - clean-all use the two previous script to clean most of the C code for now. it would be nice to modify indent which for now depends on my .emacs file. it would be nice also to adapt the indent script for c++ files. hkl/hkl-axis.c | 2 +- hkl/hkl-axis.h | 8 +- hkl/hkl-detector-factory.c | 6 +- hkl/hkl-error.c | 8 +- hkl/hkl-error.h | 2 +- hkl/hkl-geometry-factory.c | 62 ++++++------ hkl/hkl-geometry-factory.h | 2 +- hkl/hkl-geometry.c | 22 ++--- hkl/hkl-lattice.c | 12 +-- hkl/hkl-list.h | 14 +-- hkl/hkl-macros.c | 2 +- hkl/hkl-macros.h | 22 ++--- hkl/hkl-matrix.c | 4 +- hkl/hkl-pseudoaxis-auto.c | 44 ++++----- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 10 +- hkl/hkl-pseudoaxis-common-hkl.h | 12 +-- hkl/hkl-pseudoaxis-common-psi.c | 12 +-- hkl/hkl-pseudoaxis-common-q.c | 6 +- hkl/hkl-pseudoaxis-common.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 4 +- hkl/hkl-pseudoaxis.c | 6 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample.c | 8 +- hkl/hkl-source.c | 2 +- hkl/hkl-vector.c | 8 +- scripts/clean-all | 3 + scripts/cleanfile | 176 ++++++++++++++++++++++++++++++++++ scripts/indent | 13 +++ 30 files changed, 335 insertions(+), 143 deletions(-) commit 36c0c65936c81222272b8d9e0a1aa09287d0bd72 Author: Picca Frédéric-Emmanuel Date: Sun Jun 12 10:37:28 2011 +0200 reindent all files with the new script scripts/clean-all hkl/hkl-detector-factory.c | 6 +- hkl/hkl-geometry-factory.c | 66 ++++++++--------- hkl/hkl-geometry.c | 6 +- hkl/hkl-macros.h | 20 +++--- scripts/clean-all | 3 + scripts/cleanfile | 176 +++++++++++++++++++++++++++++++++++++++++++++ scripts/indent | 13 ++++ test/hkl/geometry-t.c | 12 ++-- test/hkl/matrix-t.c | 40 +++++------ test/hkl/parameter-t.c | 24 +++---- test/hkl/quaternion-t.c | 4 +- test/hkl/sample-t.c | 16 ++--- 12 files changed, 289 insertions(+), 97 deletions(-) commit 8e5dc042164f977407321d8ac1192d45ad16a901 Author: Picca Frédéric-Emmanuel Date: Sat Jun 11 22:48:07 2011 +0200 remove plenty of trailling space with the linux cleanfile script gui/hkl-gui.cpp | 18 +++--- gui/hkl3d/GL_ShapeDrawer.cpp | 54 ++++++++--------- gui/hkl3d/GL_ShapeDrawer.h | 9 ++- gui/hkl3d/hkl3d-gui-gl.c | 4 +- gui/hkl3d/hkl3d-gui-model.cpp | 50 ++++++++-------- gui/hkl3d/hkl3d-gui-model.h | 6 +- gui/hkl3d/hkl3d-gui-scene.cpp | 14 ++--- gui/hkl3d/hkl3d-gui-scene.h | 2 +- gui/hkl3d/hkl3d-gui-view.cpp | 10 ++-- gui/hkl3d/hkl3d-gui-view.h | 2 +- gui/hkl3d/texture.c | 1 - gui/hkl3d/trackball.c | 1 - gui/hkl3d/trackball.h | 1 - hkl/hkl-axis.c | 2 +- hkl/hkl-axis.h | 8 +-- hkl/hkl-error.c | 8 +-- hkl/hkl-error.h | 2 +- hkl/hkl-geometry-factory.c | 2 +- hkl/hkl-geometry-factory.h | 2 +- hkl/hkl-geometry.c | 10 ++-- hkl/hkl-geometry.h | 2 +- hkl/hkl-lattice.c | 10 ++-- hkl/hkl-macros.c | 2 +- hkl/hkl-macros.h | 2 +- hkl/hkl-matrix.c | 4 +- hkl/hkl-pseudoaxis-auto.c | 44 +++++++------- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 10 ++-- hkl/hkl-pseudoaxis-common-hkl.h | 12 ++-- hkl/hkl-pseudoaxis-common-psi.c | 12 ++-- hkl/hkl-pseudoaxis-common-q.c | 4 +- hkl/hkl-pseudoaxis-common.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 4 +- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample.c | 8 +-- hkl/hkl-source.c | 2 +- hkl/hkl-unit.c | 4 +- hkl/hkl-vector.c | 4 +- hkl3d/hkl3d.cpp | 106 +++++++++++++++++----------------- hkl3d/hkl3d.h | 1 - test/hkl/geometry-t.c | 2 +- test/hkl/pseudoaxis-e4ch-t.c | 12 ++-- test/hkl/pseudoaxis-e4cv-t.c | 14 ++--- test/hkl/pseudoaxis-e6c-t.c | 4 +- test/hkl/pseudoaxis-k4cv-t.c | 4 +- test/hkl/pseudoaxis-k6c-t.c | 10 ++-- test/hkl/pseudoaxis-t.c | 4 +- test/hkl/unit-t.c | 2 +- test/hkl/vector-t.c | 2 +- test/hkl3d/test-t.c | 4 +- 51 files changed, 248 insertions(+), 255 deletions(-) commit eeea735175081608f5b7984f855d06b68f988b93 Author: Picca Frédéric-Emmanuel Date: Sat Jun 11 17:15:13 2011 +0200 rename HklPseudoAxisMode::axes_names -> axes. hkl/hkl-pseudoaxis-common-hkl.c | 6 +++--- hkl/hkl-pseudoaxis.c | 18 +++++++++--------- hkl/hkl-pseudoaxis.h | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) commit 8c534f8b3f67bd1add0aa3cc44c986b60df1381d Author: Picca Frédéric-Emmanuel Date: Sat Jun 11 15:39:33 2011 +0200 typo hkl/hkl-pseudoaxis-common-hkl.c | 1 + 1 file changed, 1 insertion(+) commit b59989e090c9560662c5d97b1a26cb4bf52f9dff Author: Picca Frédéric-Emmanuel Date: Sat Jun 11 15:39:24 2011 +0200 refactor a part of the HklPseudoAxisEngineMode I decided to inspire myself from this article : http://lwn.net/Articles/444910/ configure.ac | 2 +- hkl/Makefile.am | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 9 +++-- hkl/hkl-pseudoaxis-common-hkl.h | 17 ++++++++++ hkl/hkl-pseudoaxis-common-psi.c | 10 ++++-- hkl/hkl-pseudoaxis-common-q.c | 18 ++++++---- hkl/hkl-pseudoaxis-e4c-hkl.c | 24 ++++---------- hkl/hkl-pseudoaxis-e6c-hkl.c | 44 +++++++------------------ hkl/hkl-pseudoaxis-k4cv-hkl.c | 26 ++++----------- hkl/hkl-pseudoaxis-k6c-hkl.c | 52 ++++++++--------------------- hkl/hkl-pseudoaxis-soleil-sixs-med.c | 4 +-- hkl/hkl-pseudoaxis-zaxis-hkl.c | 8 ++--- hkl/hkl-pseudoaxis.c | 62 ++++++++++++++++------------------- hkl/hkl-pseudoaxis.h | 42 +++++++++++++++--------- 14 files changed, 137 insertions(+), 183 deletions(-) commit bc0c76ce06686fc241af6353c1bd43f077cf8011 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 10 14:55:38 2011 +0200 put the diffractometers figures at the right place. Documentation/sphinx/source/diffractometers.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit ca777e0730abee3e6e39bac6e1904bacbc0a0678 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 10 14:42:43 2011 +0200 add the k4cv figure Documentation/figures/Makefile.am | 2 + Documentation/figures/diffractometer.asy | 77 ++++++++++++++++++++++++++------ Documentation/figures/k4cv.asy | 36 +++++++++++++++ 3 files changed, 102 insertions(+), 13 deletions(-) commit a4d3afde63abf984647bef6748542e59b2b6f78e Merge: 31f04fb7 e771ad5e Author: Frédéric-Emmanuel PICCA Date: Thu Jun 9 17:43:24 2011 +0200 Merge branch 'maint' into next Conflicts: Documentation/Makefile.am Documentation/figures/3S+1D.asy Documentation/figures/4S+2D.asy Documentation/figures/Makefile.am Documentation/figures/diffractometer.asy configure.ac commit e771ad5e8de3eaa5cee35e52a1d68baa6f78fa0d Author: Frédéric-Emmanuel PICCA Date: Thu Jun 9 16:38:46 2011 +0200 no more povray figures. Documentation/figures/4S+2D_reciprocal.asy | 58 +++++++++++ Documentation/figures/4S+2D_reciprocal2.asy | 50 ++++++++++ Documentation/figures/4S+2D_reciprocal3.asy | 48 +++++++++ Documentation/figures/4S+2D_reciprocal4.asy | 54 +++++++++++ Documentation/figures/4S+2D_reciproque.pov | 101 ------------------- Documentation/figures/4S+2D_reciproque2.pov | 100 ------------------- Documentation/figures/4S+2D_reciproque3.pov | 112 --------------------- Documentation/figures/4S+2D_reciproque4.pov | 127 ------------------------ Documentation/figures/Makefile.am | 32 +++--- Documentation/figures/arrows.inc | 139 --------------------------- Documentation/figures/bravais.inc | 35 ------- Documentation/figures/cristal.ini | 8 -- Documentation/sphinx/source/introduction.rst | 10 +- configure.ac | 6 -- 14 files changed, 228 insertions(+), 652 deletions(-) commit 81721bafef1e9170b5a211564888e0c747e076a7 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 7 15:32:27 2011 +0200 replace the cristal.pov with crystal.asy Documentation/figures/Makefile.am | 4 +-- Documentation/figures/cristal.pov | 72 --------------------------------------- Documentation/figures/crystal.asy | 52 ++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 74 deletions(-) commit c451c466b477da5d823a25f98f89044a949e51da Author: Frédéric-Emmanuel PICCA Date: Tue Jun 7 14:48:42 2011 +0200 remove useless files Documentation/figures/Makefile.am | 2 -- Documentation/figures/test.pov | 31 ------------------------------- 2 files changed, 33 deletions(-) commit 01f4f42052325703565c861f740246aa5046344d Author: Frédéric-Emmanuel PICCA Date: Tue Jun 7 14:44:23 2011 +0200 add the B_b3_y.asy file Documentation/figures/B_b3_y.asy | 29 ++++++++++++++++ Documentation/figures/B_b3_y.pov | 72 --------------------------------------- Documentation/figures/Makefile.am | 5 +-- 3 files changed, 32 insertions(+), 74 deletions(-) commit e2b421118789ae80c4ce884d5b5a1ca29e01c0d6 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 7 14:18:45 2011 +0200 remove useless povray files Documentation/figures/3S+1D.pov | 164 --------------------------------- Documentation/figures/4S+2D.pov | 187 -------------------------------------- Documentation/figures/Makefile.am | 7 +- 3 files changed, 3 insertions(+), 355 deletions(-) commit 991a69702399dc124e19f0b9ee6301fb7fa05f28 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 7 13:51:51 2011 +0200 now the carrows in the figures are ok Documentation/figures/3S+1D.asy | 30 ++++--- Documentation/figures/4S+2D.asy | 26 +++--- Documentation/figures/diffractometer.asy | 135 +++++++++++-------------------- 3 files changed, 78 insertions(+), 113 deletions(-) commit 245d6389417c346b329aa161c15364b49a4c8d65 Author: Picca Frédéric-Emmanuel Date: Sun Jun 5 21:54:10 2011 +0200 add the arrows to the asymptote figures. Documentation/figures/diffractometer.asy | 54 +++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) commit 98f97399c71aff1fd13faa3b442337ae3091003c Author: Picca Frédéric-Emmanuel Date: Thu Jun 2 16:31:06 2011 +0200 distribute also the sphinx source files. Documentation/sphinx/Makefile.am | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit b2eb707df93ebf662b3eaaeacd8391bf45dc08fa Author: Picca Frédéric-Emmanuel Date: Thu Jun 2 16:16:02 2011 +0200 backport the figures from the next branch Documentation/Makefile.am | 2 +- Documentation/figures/3S+1D.asy | 30 +++++ Documentation/figures/3S+1D.pov | 164 ++++++++++++++++++++++++ Documentation/figures/4S+2D.asy | 30 +++++ Documentation/figures/4S+2D.pov | 187 ++++++++++++++++++++++++++++ Documentation/figures/4S+2D_reciproque.pov | 101 +++++++++++++++ Documentation/figures/4S+2D_reciproque2.pov | 100 +++++++++++++++ Documentation/figures/4S+2D_reciproque3.pov | 112 +++++++++++++++++ Documentation/figures/4S+2D_reciproque4.pov | 127 +++++++++++++++++++ Documentation/figures/B_a.asy | 26 ++++ Documentation/figures/B_b.asy | 23 ++++ Documentation/figures/B_b3_y.pov | 72 +++++++++++ Documentation/figures/Makefile.am | 42 +++++++ Documentation/figures/arrows.inc | 139 +++++++++++++++++++++ Documentation/figures/bravais.inc | 35 ++++++ Documentation/figures/cristal.ini | 8 ++ Documentation/figures/cristal.pov | 72 +++++++++++ Documentation/figures/diffractometer.asy | 120 ++++++++++++++++++ Documentation/figures/test.pov | 31 +++++ Documentation/figures/zaxis.asy | 71 +++++++++++ configure.ac | 13 ++ 21 files changed, 1504 insertions(+), 1 deletion(-) commit fd31a4b7de38b3f41df6bef94d1e5c9f0db028b0 Author: Picca Frédéric-Emmanuel Date: Tue May 31 16:47:31 2011 +0200 update the news file for the sphinx documentation NEWS | 1 + 1 file changed, 1 insertion(+) commit 6d0742d381b5aa143055633bfc238429fb7f5152 Author: Picca Frédéric-Emmanuel Date: Tue May 31 16:03:40 2011 +0200 add the first version of the sphinx documentation at the end it will remain only two systems - api using gtk-doc - html/latex using sphinx Documentation/Makefile.am | 2 +- Documentation/sphinx/Makefile.am | 1 + Documentation/sphinx/source/conf.py.in | 216 +++++++ Documentation/sphinx/source/development.rst | 456 +++++++++++++ Documentation/sphinx/source/diffractometers.rst | 244 +++++++ Documentation/sphinx/source/index.rst | 26 + Documentation/sphinx/source/introduction.rst | 821 ++++++++++++++++++++++++ configure.ac | 2 + sphinx.make | 130 ++++ 9 files changed, 1897 insertions(+), 1 deletion(-) commit 31f04fb7386f340c276f29152460dcbe3590a0c8 Merge: ac1155fa 19fea118 Author: Frédéric-Emmanuel PICCA Date: Tue May 10 11:24:35 2011 +0200 Merge branch 'maint' into next commit 19fea1186e97fa081e427217fcf7238f31e110c2 Author: Frédéric-Emmanuel PICCA Date: Tue May 10 11:24:26 2011 +0200 update the NEWS file for the MARS diffractometer NEWS | 1 + 1 file changed, 1 insertion(+) commit ac1155fac104a7152cfb1f7579eeb72633783624 Merge: 75c01548 bd8933b8 Author: Frédéric-Emmanuel PICCA Date: Tue May 10 11:23:16 2011 +0200 Merge branch 'maint' into next Conflicts: Documentation/hkl.texi hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry.h hkl/hkl-pseudoaxis-factory.c commit bd8933b8f5f5f45d856c7fee812207931a1fa392 Author: Frédéric-Emmanuel PICCA Date: Tue May 10 11:06:28 2011 +0200 * backport the SOLEIL MARS beamline diffractometer from the next branch Conflicts: Documentation/hkl.texi hkl/hkl-geometry-factory.h hkl/hkl-geometry.h hkl/hkl-pseudoaxis-factory.c Documentation/hkl.texi | 30 ++++++++++++++++++++++++------ hkl/hkl-geometry-factory.c | 18 ++++++++++++++++++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 ++- hkl/hkl-pseudoaxis-factory.c | 1 + test/hkl-test-pseudoaxis.c | 9 +++++++++ 6 files changed, 55 insertions(+), 7 deletions(-) commit 75c01548f4e66cb47fca070231e108b081c4bf26 Author: Frédéric-Emmanuel PICCA Date: Mon May 9 16:33:58 2011 +0200 * more statistic in the bench test. test/hkl/bench-t.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 8688c93affc233430accc9e040c91980f7207354 Author: Picca Frédéric-Emmanuel Date: Sun May 1 19:53:40 2011 +0200 remove useless files hkl3d/bullet/src/BulletSoftBody/btSoftBody.cpp | 2931 -------------------- hkl3d/bullet/src/BulletSoftBody/btSoftBody.h | 891 ------ .../btSoftBodyConcaveCollisionAlgorithm.cpp | 368 --- .../btSoftBodyConcaveCollisionAlgorithm.h | 153 - .../src/BulletSoftBody/btSoftBodyHelpers.cpp | 1019 ------- .../bullet/src/BulletSoftBody/btSoftBodyHelpers.h | 143 - .../src/BulletSoftBody/btSoftBodyInternals.h | 931 ------- .../btSoftBodyRigidBodyCollisionConfiguration.cpp | 134 - .../btSoftBodyRigidBodyCollisionConfiguration.h | 48 - .../btSoftRigidCollisionAlgorithm.cpp | 82 - .../BulletSoftBody/btSoftRigidCollisionAlgorithm.h | 75 - .../BulletSoftBody/btSoftRigidDynamicsWorld.cpp | 292 -- .../src/BulletSoftBody/btSoftRigidDynamicsWorld.h | 97 - .../btSoftSoftCollisionAlgorithm.cpp | 46 - .../BulletSoftBody/btSoftSoftCollisionAlgorithm.h | 69 - hkl3d/bullet/src/BulletSoftBody/btSparseSDF.h | 306 -- hkl3d/bullet/src/Makefile.am | 22 +- hkl3d/bullet/src/MiniCL/cl.h | 865 ------ hkl3d/bullet/src/MiniCL/cl_MiniCL_Defs.h | 265 -- hkl3d/bullet/src/MiniCL/cl_gl.h | 113 - hkl3d/bullet/src/MiniCL/cl_platform.h | 254 -- 21 files changed, 2 insertions(+), 9102 deletions(-) commit 5347e4ba57784be8d9024aa0337c4041b7c589d1 Merge: 41c90a4c 2165cc97 Author: Picca Frédéric-Emmanuel Date: Sun May 1 18:41:24 2011 +0200 Merge branch 'maint' into next Conflicts: Documentation/hkl.texi NEWS configure.ac hkl/hkl-geometry-factory.c hkl/hkl-geometry-factory.h hkl/hkl-geometry.c hkl/hkl-geometry.h hkl/hkl-pseudoaxis-common-eulerians.c hkl/hkl-pseudoaxis-common-hkl.c hkl/hkl-pseudoaxis-common-q.c hkl/hkl-sample.c hkl/hkl-vector.c hkl/pom.xml test/hkl/pseudoaxis-t.c commit 41c90a4c60c43787b7c185f1f589116055670ae9 Author: Picca Frédéric-Emmanuel Date: Sun May 1 17:13:10 2011 +0200 * remove the bullet soft body library we are not using this part of bullet, so it reduce a bit the compiling time. .../src/BulletSoftBody/btDefaultSoftBodySolver.cpp | 151 - .../src/BulletSoftBody/btDefaultSoftBodySolver.h | 63 - hkl3d/bullet/src/BulletSoftBody/btSoftBody.cpp | 3409 -------------------- hkl3d/bullet/src/BulletSoftBody/btSoftBody.h | 978 ------ .../btSoftBodyConcaveCollisionAlgorithm.cpp | 368 --- .../btSoftBodyConcaveCollisionAlgorithm.h | 153 - hkl3d/bullet/src/BulletSoftBody/btSoftBodyData.h | 217 -- .../src/BulletSoftBody/btSoftBodyHelpers.cpp | 1055 ------ .../bullet/src/BulletSoftBody/btSoftBodyHelpers.h | 143 - .../src/BulletSoftBody/btSoftBodyInternals.h | 916 ------ .../btSoftBodyRigidBodyCollisionConfiguration.cpp | 134 - .../btSoftBodyRigidBodyCollisionConfiguration.h | 48 - .../BulletSoftBody/btSoftBodySolverVertexBuffer.h | 165 - .../bullet/src/BulletSoftBody/btSoftBodySolvers.h | 154 - .../btSoftRigidCollisionAlgorithm.cpp | 84 - .../BulletSoftBody/btSoftRigidCollisionAlgorithm.h | 75 - .../BulletSoftBody/btSoftRigidDynamicsWorld.cpp | 358 -- .../src/BulletSoftBody/btSoftRigidDynamicsWorld.h | 107 - .../btSoftSoftCollisionAlgorithm.cpp | 47 - .../BulletSoftBody/btSoftSoftCollisionAlgorithm.h | 69 - hkl3d/bullet/src/BulletSoftBody/btSparseSDF.h | 306 -- hkl3d/bullet/src/Makefile.am | 27 +- 22 files changed, 2 insertions(+), 9025 deletions(-) commit ab650f37926fad535fb95c691f16f0059fbe396b Author: Picca Frédéric-Emmanuel Date: Sat Apr 30 22:15:14 2011 +0200 * remove useless files hkl3d/bullet/src/MiniCL/MiniCL.cpp | 720 ------------------ hkl3d/bullet/src/MiniCL/MiniCLTask/MiniCLTask.cpp | 74 -- hkl3d/bullet/src/MiniCL/MiniCLTask/MiniCLTask.h | 62 -- hkl3d/bullet/src/MiniCL/MiniCLTaskScheduler.cpp | 519 ------------- hkl3d/bullet/src/MiniCL/MiniCLTaskScheduler.h | 194 ----- hkl3d/bullet/src/MiniCL/cl.h | 867 ---------------------- hkl3d/bullet/src/MiniCL/cl_MiniCL_Defs.h | 329 -------- hkl3d/bullet/src/MiniCL/cl_gl.h | 113 --- hkl3d/bullet/src/MiniCL/cl_platform.h | 254 ------- 9 files changed, 3132 deletions(-) commit fd1cc1f58d59dd6049ee305a40feb3f7ee300049 Author: Picca Frédéric-Emmanuel Date: Sat Apr 30 22:14:07 2011 +0200 * import bullet 2.78 hkl3d/bullet/src/Bullet-C-Api.h | 8 +- .../BroadphaseCollision/btAxisSweep3.h | 4 +- .../BroadphaseCollision/btBroadphaseInterface.h | 6 +- .../BroadphaseCollision/btBroadphaseProxy.h | 6 +- .../BroadphaseCollision/btCollisionAlgorithm.h | 10 +- .../BulletCollision/BroadphaseCollision/btDbvt.cpp | 2 +- .../BroadphaseCollision/btDispatcher.h | 14 +- .../BroadphaseCollision/btOverlappingPairCache.h | 6 +- .../BroadphaseCollision/btQuantizedBvh.h | 6 +- .../BroadphaseCollision/btSimpleBroadphase.h | 6 +- .../CollisionDispatch/SphereTriangleDetector.cpp | 62 +- .../CollisionDispatch/SphereTriangleDetector.h | 6 +- .../btBox2dBox2dCollisionAlgorithm.cpp | 870 +++---- .../btBox2dBox2dCollisionAlgorithm.h | 132 +- .../CollisionDispatch/btBoxBoxCollisionAlgorithm.h | 6 +- .../CollisionDispatch/btBoxBoxDetector.cpp | 14 + .../CollisionDispatch/btBoxBoxDetector.h | 4 +- .../CollisionDispatch/btCollisionConfiguration.h | 1 + .../CollisionDispatch/btCollisionCreateFunc.h | 6 +- .../CollisionDispatch/btCollisionDispatcher.cpp | 15 +- .../CollisionDispatch/btCollisionDispatcher.h | 29 +- .../CollisionDispatch/btCollisionObject.cpp | 1 + .../CollisionDispatch/btCollisionObject.h | 30 +- .../CollisionDispatch/btCollisionWorld.cpp | 455 ++-- .../CollisionDispatch/btCollisionWorld.h | 45 +- .../btCompoundCollisionAlgorithm.cpp | 32 +- .../btCompoundCollisionAlgorithm.h | 6 +- .../btConvex2dConvex2dAlgorithm.cpp | 494 ++-- .../btConvex2dConvex2dAlgorithm.h | 190 +- .../btConvexConcaveCollisionAlgorithm.cpp | 15 +- .../btConvexConcaveCollisionAlgorithm.h | 6 +- .../CollisionDispatch/btConvexConvexAlgorithm.cpp | 109 +- .../CollisionDispatch/btConvexConvexAlgorithm.h | 6 +- .../btConvexPlaneCollisionAlgorithm.h | 6 +- .../CollisionDispatch/btEmptyCollisionAlgorithm.h | 6 +- .../CollisionDispatch/btGhostObject.h | 2 +- .../CollisionDispatch/btInternalEdgeUtility.cpp | 1614 ++++++------ .../CollisionDispatch/btInternalEdgeUtility.h | 92 +- .../CollisionDispatch/btManifoldResult.cpp | 5 +- .../CollisionDispatch/btManifoldResult.h | 6 +- .../btSimulationIslandManager.cpp | 83 +- .../CollisionDispatch/btSimulationIslandManager.h | 6 +- .../btSphereBoxCollisionAlgorithm.h | 6 +- .../btSphereSphereCollisionAlgorithm.h | 6 +- .../btSphereTriangleCollisionAlgorithm.h | 6 +- .../CollisionDispatch/btUnionFind.cpp | 3 +- .../CollisionDispatch/btUnionFind.h | 11 +- .../CollisionShapes/btBox2dShape.cpp | 84 +- .../BulletCollision/CollisionShapes/btBox2dShape.h | 726 +++--- .../BulletCollision/CollisionShapes/btBoxShape.h | 8 +- .../CollisionShapes/btBvhTriangleMeshShape.cpp | 4 +- .../CollisionShapes/btBvhTriangleMeshShape.h | 8 +- .../CollisionShapes/btCollisionMargin.h | 6 +- .../CollisionShapes/btCollisionShape.h | 6 +- .../CollisionShapes/btCompoundShape.cpp | 41 +- .../CollisionShapes/btCompoundShape.h | 18 +- .../CollisionShapes/btConcaveShape.h | 6 +- .../CollisionShapes/btConeShape.cpp | 10 + .../BulletCollision/CollisionShapes/btConeShape.h | 9 +- .../CollisionShapes/btConvex2dShape.cpp | 184 +- .../CollisionShapes/btConvex2dShape.h | 160 +- .../CollisionShapes/btConvexHullShape.cpp | 14 +- .../CollisionShapes/btConvexHullShape.h | 6 +- .../CollisionShapes/btConvexPolyhedron.cpp | 185 ++ .../CollisionShapes/btConvexPolyhedron.h | 54 + .../CollisionShapes/btConvexShape.h | 6 +- .../CollisionShapes/btConvexTriangleMeshShape.h | 6 +- .../CollisionShapes/btCylinderShape.cpp | 61 +- .../CollisionShapes/btCylinderShape.h | 22 +- .../BulletCollision/CollisionShapes/btEmptyShape.h | 6 +- .../CollisionShapes/btHeightfieldTerrainShape.h | 6 +- .../BulletCollision/CollisionShapes/btMaterial.h | 6 +- .../CollisionShapes/btMinkowskiSumShape.h | 6 +- .../CollisionShapes/btMultiSphereShape.h | 6 +- .../btMultimaterialTriangleMeshShape.h | 7 +- .../CollisionShapes/btOptimizedBvh.h | 6 +- .../CollisionShapes/btPolyhedralConvexShape.cpp | 147 +- .../CollisionShapes/btPolyhedralConvexShape.h | 20 +- .../btScaledBvhTriangleMeshShape.cpp | 2 + .../CollisionShapes/btScaledBvhTriangleMeshShape.h | 37 +- .../BulletCollision/CollisionShapes/btShapeHull.h | 6 +- .../CollisionShapes/btSphereShape.h | 6 +- .../CollisionShapes/btStaticPlaneShape.h | 6 +- .../CollisionShapes/btStridingMeshInterface.cpp | 48 + .../CollisionShapes/btStridingMeshInterface.h | 14 +- .../CollisionShapes/btTetrahedronShape.h | 6 +- .../CollisionShapes/btTriangleCallback.h | 6 +- .../CollisionShapes/btTriangleInfoMap.h | 478 ++-- .../CollisionShapes/btTriangleMesh.h | 6 +- .../CollisionShapes/btTriangleMeshShape.h | 6 +- .../CollisionShapes/btTriangleShape.h | 6 +- .../CollisionShapes/btUniformScalingShape.cpp | 69 +- .../src/BulletCollision/Gimpact/btBoxCollision.h | 2 +- .../src/BulletCollision/Gimpact/btClipPolygon.h | 2 +- .../BulletCollision/Gimpact/btContactProcessing.h | 2 +- .../src/BulletCollision/Gimpact/btGImpactBvh.cpp | 2 +- .../src/BulletCollision/Gimpact/btGImpactBvh.h | 6 +- .../Gimpact/btGImpactCollisionAlgorithm.h | 12 +- .../BulletCollision/Gimpact/btGImpactMassUtil.h | 2 +- .../Gimpact/btGImpactQuantizedBvh.cpp | 2 +- .../Gimpact/btGImpactQuantizedBvh.h | 6 +- .../Gimpact/btGenericPoolAllocator.cpp | 2 +- .../Gimpact/btGenericPoolAllocator.h | 2 +- .../BulletCollision/Gimpact/btGeometryOperations.h | 2 +- .../src/BulletCollision/Gimpact/btQuantization.h | 8 +- .../BulletCollision/Gimpact/btTriangleShapeEx.cpp | 2 +- .../BulletCollision/Gimpact/btTriangleShapeEx.h | 8 +- .../bullet/src/BulletCollision/Gimpact/gim_array.h | 2 +- .../Gimpact/gim_basic_geometry_operations.h | 2 +- .../src/BulletCollision/Gimpact/gim_bitset.h | 2 +- .../BulletCollision/Gimpact/gim_box_collision.h | 2 +- .../src/BulletCollision/Gimpact/gim_box_set.h | 2 +- .../src/BulletCollision/Gimpact/gim_clip_polygon.h | 2 +- .../src/BulletCollision/Gimpact/gim_contact.h | 2 +- .../src/BulletCollision/Gimpact/gim_geom_types.h | 2 +- .../src/BulletCollision/Gimpact/gim_geometry.h | 2 +- .../src/BulletCollision/Gimpact/gim_hash_table.h | 2 +- .../src/BulletCollision/Gimpact/gim_linear_math.h | 2 +- .../bullet/src/BulletCollision/Gimpact/gim_math.h | 2 +- .../src/BulletCollision/Gimpact/gim_memory.h | 2 +- .../src/BulletCollision/Gimpact/gim_radixsort.h | 2 +- .../BulletCollision/Gimpact/gim_tri_collision.cpp | 2 +- .../BulletCollision/Gimpact/gim_tri_collision.h | 2 +- .../btContinuousConvexCollision.cpp | 135 +- .../btContinuousConvexCollision.h | 15 +- .../NarrowPhaseCollision/btConvexCast.h | 8 +- .../btConvexPenetrationDepthSolver.h | 6 +- .../btDiscreteCollisionDetectorInterface.h | 8 +- .../NarrowPhaseCollision/btGjkConvexCast.h | 6 +- .../NarrowPhaseCollision/btGjkEpa2.h | 8 +- .../NarrowPhaseCollision/btGjkPairDetector.cpp | 9 +- .../NarrowPhaseCollision/btGjkPairDetector.h | 6 +- .../NarrowPhaseCollision/btManifoldPoint.h | 32 +- .../btMinkowskiPenetrationDepthSolver.h | 6 +- .../NarrowPhaseCollision/btPersistentManifold.h | 48 +- .../NarrowPhaseCollision/btPointCollector.h | 6 +- .../btPolyhedralContactClipping.cpp | 360 +++ .../btPolyhedralContactClipping.h | 46 + .../NarrowPhaseCollision/btRaycastCallback.cpp | 6 +- .../NarrowPhaseCollision/btRaycastCallback.h | 9 +- .../btSimplexSolverInterface.h | 6 +- .../NarrowPhaseCollision/btSubSimplexConvexCast.h | 6 +- .../NarrowPhaseCollision/btVoronoiSimplexSolver.h | 7 +- .../Character/btCharacterControllerInterface.h | 7 +- .../Character/btKinematicCharacterController.cpp | 166 +- .../Character/btKinematicCharacterController.h | 31 +- .../ConstraintSolver/btConeTwistConstraint.cpp | 10 + .../ConstraintSolver/btConeTwistConstraint.h | 22 +- .../ConstraintSolver/btConstraintSolver.h | 6 +- .../ConstraintSolver/btContactConstraint.cpp | 50 +- .../ConstraintSolver/btContactConstraint.h | 9 +- .../ConstraintSolver/btContactSolverInfo.h | 8 +- .../ConstraintSolver/btGeneric6DofConstraint.cpp | 60 +- .../ConstraintSolver/btGeneric6DofConstraint.h | 40 +- .../btGeneric6DofSpringConstraint.cpp | 318 +-- .../btGeneric6DofSpringConstraint.h | 151 +- .../ConstraintSolver/btHinge2Constraint.cpp | 132 +- .../ConstraintSolver/btHinge2Constraint.h | 116 +- .../ConstraintSolver/btHingeConstraint.cpp | 153 +- .../ConstraintSolver/btHingeConstraint.h | 91 +- .../ConstraintSolver/btJacobianEntry.h | 6 +- .../ConstraintSolver/btPoint2PointConstraint.cpp | 1 + .../ConstraintSolver/btPoint2PointConstraint.h | 6 +- .../btSequentialImpulseConstraintSolver.cpp | 111 +- .../btSequentialImpulseConstraintSolver.h | 14 +- .../ConstraintSolver/btSliderConstraint.cpp | 0 .../ConstraintSolver/btSliderConstraint.h | 20 +- .../ConstraintSolver/btSolve2LinearConstraint.h | 6 +- .../ConstraintSolver/btSolverConstraint.h | 4 +- .../ConstraintSolver/btTypedConstraint.cpp | 82 +- .../ConstraintSolver/btTypedConstraint.h | 168 +- .../ConstraintSolver/btUniversalConstraint.cpp | 150 +- .../ConstraintSolver/btUniversalConstraint.h | 122 +- .../BulletDynamics/Dynamics/btActionInterface.h | 96 +- .../Dynamics/btDiscreteDynamicsWorld.cpp | 205 +- .../Dynamics/btDiscreteDynamicsWorld.h | 2 + .../src/BulletDynamics/Dynamics/btDynamicsWorld.h | 5 +- .../src/BulletDynamics/Dynamics/btRigidBody.cpp | 20 +- .../src/BulletDynamics/Dynamics/btRigidBody.h | 43 +- .../Dynamics/btSimpleDynamicsWorld.cpp | 29 +- .../Dynamics/btSimpleDynamicsWorld.h | 8 + .../BulletDynamics/Vehicle/btRaycastVehicle.cpp | 13 + .../src/BulletDynamics/Vehicle/btRaycastVehicle.h | 472 ++-- .../BulletDynamics/Vehicle/btVehicleRaycaster.h | 8 +- .../src/BulletDynamics/Vehicle/btWheelInfo.h | 6 +- .../GpuSoftBodySolvers/CPU/btSoftBodySolverData.h | 744 ++++++ .../CPU/btSoftBodySolver_CPU.cpp | 979 +++++++ .../GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.h | 370 +++ hkl3d/bullet/src/BulletMultiThreaded/HeapManager.h | 117 + .../src/BulletMultiThreaded/PlatformDefinitions.h | 39 +- .../src/BulletMultiThreaded/PosixThreadSupport.cpp | 164 +- .../src/BulletMultiThreaded/PosixThreadSupport.h | 28 +- .../src/BulletMultiThreaded/PpuAddressSpace.h | 35 +- .../SequentialThreadSupport.cpp | 76 + .../BulletMultiThreaded/SequentialThreadSupport.h | 10 +- .../SpuCollisionObjectWrapper.h | 6 +- .../SpuCollisionTaskProcess.cpp | 1 - .../BulletMultiThreaded/SpuCollisionTaskProcess.h | 6 +- .../SpuContactManifoldCollisionAlgorithm.h | 6 +- .../src/BulletMultiThreaded/SpuDoubleBuffer.h | 20 +- .../bullet/src/BulletMultiThreaded/SpuFakeDma.cpp | 10 +- hkl3d/bullet/src/BulletMultiThreaded/SpuFakeDma.h | 270 +- .../SpuGatheringCollisionDispatcher.cpp | 32 +- .../SpuGatheringCollisionDispatcher.h | 6 +- .../src/BulletMultiThreaded/SpuLibspe2Support.h | 6 +- .../SpuNarrowPhaseCollisionTask/Box.h | 33 +- .../SpuCollisionShapes.h | 8 +- .../SpuContactResult.cpp | 10 +- .../SpuGatheringCollisionTask.cpp | 63 +- .../SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp | 345 +-- .../SpuNarrowPhaseCollisionTask/boxBoxDistance.h | 11 +- .../src/BulletMultiThreaded/SpuSampleTaskProcess.h | 6 +- hkl3d/bullet/src/BulletMultiThreaded/SpuSync.h | 7 +- hkl3d/bullet/src/BulletMultiThreaded/TrbDynBody.h | 79 + hkl3d/bullet/src/BulletMultiThreaded/TrbStateVec.h | 339 +++ .../src/BulletMultiThreaded/Win32ThreadSupport.cpp | 186 +- .../src/BulletMultiThreaded/Win32ThreadSupport.h | 20 +- .../BulletMultiThreaded/btGpu3DGridBroadphase.cpp | 1180 ++++----- .../BulletMultiThreaded/btGpu3DGridBroadphase.h | 276 +- .../btGpu3DGridBroadphaseSharedCode.h | 860 +++--- .../btGpu3DGridBroadphaseSharedDefs.h | 122 +- .../btGpu3DGridBroadphaseSharedTypes.h | 134 +- .../src/BulletMultiThreaded/btGpuUtilsSharedCode.h | 110 +- .../src/BulletMultiThreaded/btGpuUtilsSharedDefs.h | 104 +- .../btParallelConstraintSolver.cpp | 1463 ++++++++++- .../btParallelConstraintSolver.h | 325 ++- .../BulletMultiThreaded/btThreadSupportInterface.h | 43 +- .../src/BulletMultiThreaded/vectormath2bullet.h | 15 +- .../src/BulletSoftBody/btDefaultSoftBodySolver.cpp | 151 ++ .../src/BulletSoftBody/btDefaultSoftBodySolver.h | 63 + hkl3d/bullet/src/BulletSoftBody/btSoftBody.cpp | 704 ++++- hkl3d/bullet/src/BulletSoftBody/btSoftBody.h | 107 +- .../btSoftBodyConcaveCollisionAlgorithm.h | 6 +- hkl3d/bullet/src/BulletSoftBody/btSoftBodyData.h | 217 ++ .../src/BulletSoftBody/btSoftBodyHelpers.cpp | 230 +- .../bullet/src/BulletSoftBody/btSoftBodyHelpers.h | 24 +- .../src/BulletSoftBody/btSoftBodyInternals.h | 31 +- .../BulletSoftBody/btSoftBodySolverVertexBuffer.h | 165 ++ .../bullet/src/BulletSoftBody/btSoftBodySolvers.h | 154 ++ .../btSoftRigidCollisionAlgorithm.cpp | 4 +- .../BulletSoftBody/btSoftRigidCollisionAlgorithm.h | 6 +- .../BulletSoftBody/btSoftRigidDynamicsWorld.cpp | 138 +- .../src/BulletSoftBody/btSoftRigidDynamicsWorld.h | 18 +- .../btSoftSoftCollisionAlgorithm.cpp | 3 +- .../BulletSoftBody/btSoftSoftCollisionAlgorithm.h | 6 +- hkl3d/bullet/src/BulletSoftBody/btSparseSDF.h | 6 +- hkl3d/bullet/src/LinearMath/btAabbUtil2.h | 6 +- hkl3d/bullet/src/LinearMath/btAlignedAllocator.cpp | 25 +- hkl3d/bullet/src/LinearMath/btAlignedObjectArray.h | 9 +- hkl3d/bullet/src/LinearMath/btConvexHull.h | 6 +- .../bullet/src/LinearMath/btConvexHullComputer.cpp | 2749 ++++++++++++++++++++ hkl3d/bullet/src/LinearMath/btConvexHullComputer.h | 103 + hkl3d/bullet/src/LinearMath/btDefaultMotionState.h | 6 +- hkl3d/bullet/src/LinearMath/btHashMap.h | 18 +- hkl3d/bullet/src/LinearMath/btIDebugDraw.h | 109 +- hkl3d/bullet/src/LinearMath/btList.h | 6 +- hkl3d/bullet/src/LinearMath/btMatrix3x3.h | 89 +- hkl3d/bullet/src/LinearMath/btMinMax.h | 12 +- hkl3d/bullet/src/LinearMath/btPoolAllocator.h | 19 + hkl3d/bullet/src/LinearMath/btQuadWord.h | 6 +- hkl3d/bullet/src/LinearMath/btQuaternion.h | 6 +- hkl3d/bullet/src/LinearMath/btQuickprof.cpp | 223 +- hkl3d/bullet/src/LinearMath/btQuickprof.h | 202 +- hkl3d/bullet/src/LinearMath/btRandom.h | 6 +- hkl3d/bullet/src/LinearMath/btScalar.h | 23 +- hkl3d/bullet/src/LinearMath/btSerializer.cpp | 1409 ++++++---- hkl3d/bullet/src/LinearMath/btSerializer.h | 1259 ++++----- hkl3d/bullet/src/LinearMath/btTransform.h | 6 +- hkl3d/bullet/src/LinearMath/btTransformUtil.h | 8 +- hkl3d/bullet/src/LinearMath/btVector3.h | 48 +- hkl3d/bullet/src/Makefile.am | 19 +- hkl3d/bullet/src/MiniCL/MiniCL.cpp | 720 +++++ hkl3d/bullet/src/MiniCL/MiniCLTask/MiniCLTask.cpp | 74 + hkl3d/bullet/src/MiniCL/MiniCLTask/MiniCLTask.h | 62 + hkl3d/bullet/src/MiniCL/MiniCLTaskScheduler.cpp | 519 ++++ hkl3d/bullet/src/MiniCL/MiniCLTaskScheduler.h | 194 ++ hkl3d/bullet/src/MiniCL/cl.h | 2 + hkl3d/bullet/src/MiniCL/cl_MiniCL_Defs.h | 594 +++-- hkl3d/bullet/src/MiniCL/cl_gl.h | 2 +- hkl3d/bullet/src/MiniCL/cl_platform.h | 508 ++-- hkl3d/bullet/src/btBulletCollisionCommon.h | 1 + 281 files changed, 22150 insertions(+), 8371 deletions(-) commit bf1eefe3f020e10d417f1f35cbeb1265e8cf8f18 Author: Picca Frédéric-Emmanuel Date: Fri Apr 29 22:52:51 2011 +0200 * remove a bug triggered by gcc 4.5 test/hkl/unit-t.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 5fcc583f46993de853c522b6095befb5981934d0 Author: Picca Frédéric-Emmanuel Date: Fri Apr 29 22:17:26 2011 +0200 import c-tap-harness 1.7 test/runtests.c | 58 ++++++++++++++++++++++++++++++++++++++++++------------ test/tap/basic.c | 35 ++++++++++++++++---------------- test/tap/basic.h | 35 ++++++++++++++++---------------- test/tap/libtap.sh | 3 ++- 4 files changed, 81 insertions(+), 50 deletions(-) commit 4522007fd73e2aaea30beb226711b879949cb629 Author: Picca Frédéric-Emmanuel Date: Fri Apr 29 22:11:37 2011 +0200 * work in progress gui/Makefile.am | 3 + gui/g3d.vapi | 55 ++++++++++ gui/hkl3d-gui-model.vala | 276 +++++++++++++++++++++-------------------------- gui/hkl3d-gui-scene.vala | 135 +++++++++++------------ gui/hkl3d.vapi | 16 +-- 5 files changed, 251 insertions(+), 234 deletions(-) commit 2165cc97163034a2adaaef5bc4f5f3416a3b5dfe Author: Frédéric-Emmanuel PICCA Date: Fri Apr 29 10:47:18 2011 +0200 * add documentation of the SOLEIL SIXS MED2+2 geometry Documentation/hkl.texi | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-- NEWS | 3 +++ 2 files changed, 55 insertions(+), 2 deletions(-) commit 9a712722c1984b04ea66f3eb516a2825ac366053 Author: Picca Frédéric-Emmanuel Date: Mon Apr 25 12:31:09 2011 +0200 * add the hkl3d-gui-scene.vala configure.ac | 1 + gui/Makefile.am | 17 +- gui/hkl-gui-3d.vala | 17 +- gui/hkl-gui-pseudoaxes.h | 0 gui/hkl-gui-pseudoaxes.vala | 2 +- gui/hkl-gui.vala | 73 ++++-- gui/hkl.vapi | 39 ++- gui/hkl3d-gui-model.vala | 561 ++++++++++++++++++++++++++++++++++++++++++ gui/hkl3d-gui-scene.vala | 382 ++++++++++++++++++++++++++++ gui/hkl3d-gui-view.vala | 218 ++++++++++++++++ gui/hkl3d/Makefile.am | 24 +- gui/hkl3d/hkl3d-gui-model.cpp | 407 ------------------------------ gui/hkl3d/hkl3d-gui-model.h | 121 --------- gui/hkl3d/hkl3d-gui-scene.cpp | 432 -------------------------------- gui/hkl3d/hkl3d-gui-scene.h | 120 --------- gui/hkl3d/hkl3d-gui-view.cpp | 222 ----------------- gui/hkl3d/hkl3d-gui-view.h | 109 -------- gui/trackball.vapi | 36 +++ 18 files changed, 1315 insertions(+), 1466 deletions(-) commit 744156fb0db25b83d18ede8ea249a329351d539f Author: Picca Frédéric-Emmanuel Date: Thu Apr 14 19:54:47 2011 +0200 add also the 4S+2D diffractometer using asymptote. Documentation/figures/3S+1D.asy | 153 ++----------------------------- Documentation/figures/4S+2D.asy | 30 ++++++ Documentation/figures/Makefile.am | 2 + Documentation/figures/diffractometer.asy | 120 ++++++++++++++++++++++++ 4 files changed, 158 insertions(+), 147 deletions(-) commit 2e4cafd68fa149f1d803d7853179be819729768b Author: Picca Frédéric-Emmanuel Date: Thu Apr 14 18:56:47 2011 +0200 add 3S+1D figure implemented with asymptote. Documentation/figures/3S+1D.asy | 171 ++++++++++++++++++++++++++++++++++++++ Documentation/figures/Makefile.am | 2 + 2 files changed, 173 insertions(+) commit 68968287c81e398586c043d612f59d63437e0a36 Author: Picca Frédéric-Emmanuel Date: Mon Apr 11 22:00:37 2011 +0200 convert B_b.pov -> B_b.asy Documentation/figures/B_b.asy | 23 ++++++++++++++++ Documentation/figures/B_b.pov | 58 --------------------------------------- Documentation/figures/Makefile.am | 4 +-- 3 files changed, 25 insertions(+), 60 deletions(-) commit 46a88a65186c2a532d4cd6490ee45c376fdc9610 Author: Picca Frédéric-Emmanuel Date: Mon Apr 11 21:44:47 2011 +0200 * remove useless files Documentation/figures/B_b.py | 25 ----- Documentation/figures/arrows.py | 114 ---------------------- Documentation/figures/bravais.py | 35 ------- Documentation/figures/crystal.py | 36 ------- Documentation/figures/diffractometers.py | 157 ------------------------------- 5 files changed, 367 deletions(-) commit 1d4fa27f537059b2b882054f719e2dda9c5d8b05 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 17 15:03:32 2011 +0100 * when the mode change the geometries list is reset so emit the changed signal. gui/pseudoaxesframe.cpp | 1 + 1 file changed, 1 insertion(+) commit 76e7173875246dc28433bc8b936a477c78d465ed Author: Frédéric-Emmanuel PICCA Date: Thu Mar 17 15:02:50 2011 +0100 * typo hkl/hkl-geometry-factory.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c43cbe14fe44fae630a8e8b07d7ec5f04d73a30c Author: Frédéric-Emmanuel PICCA Date: Thu Mar 17 15:02:43 2011 +0100 * add the MED2+2 geometry for the SOLEIL SIXS beamline hkl/Makefile.am | 2 ++ hkl/hkl-geometry-factory.c | 16 ++++++++++++ hkl/hkl-geometry-factory.h | 3 ++- hkl/hkl-geometry.h | 3 ++- hkl/hkl-pseudoaxis-factory.c | 5 ++++ hkl/hkl-pseudoaxis-soleil-sixs-med.c | 50 ++++++++++++++++++++++++++++++++++++ hkl/hkl-pseudoaxis-soleil-sixs-med.h | 33 ++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 10 ++++++++ 8 files changed, 120 insertions(+), 2 deletions(-) commit 5146fd9cffd7956941595d6ee220ecf4804b9faa Author: Frédéric-Emmanuel PICCA Date: Wed Mar 2 17:36:52 2011 +0100 * set up the error message handling in relevant part of the code. hkl/hkl-macros.h | 2 + hkl/hkl-pseudoaxis-auto.c | 19 +++- hkl/hkl-pseudoaxis-common-eulerians.c | 19 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 188 ++++++++++++++++++---------------- hkl/hkl-pseudoaxis-common-psi.c | 26 +++-- hkl/hkl-pseudoaxis.c | 106 +++++++++---------- 6 files changed, 195 insertions(+), 165 deletions(-) commit 261677bca5893b2b76903178dd044177e21b0d6b Author: Frédéric-Emmanuel PICCA Date: Tue Mar 1 11:36:05 2011 +0100 * remove all references to HKL_SUCCESS and HKL_FAIL now we have only HKL_TRUE and HKL_FALSE. this is less error prone. gui/hkl-gui-callbacks.cpp | 10 +++---- gui/hkl-gui-pseudoaxes.cpp | 4 +-- hkl/hkl-detector.c | 4 +-- hkl/hkl-geometry.c | 18 ++++++------- hkl/hkl-lattice.c | 43 +++++++++++++++-------------- hkl/hkl-macros.h | 3 --- hkl/hkl-parameter.c | 14 +++++----- hkl/hkl-pseudoaxis-auto.c | 20 +++++++------- hkl/hkl-pseudoaxis-common-eulerians.c | 21 +++++++-------- hkl/hkl-pseudoaxis-common-hkl.c | 42 +++++++++++------------------ hkl/hkl-pseudoaxis-common-psi.c | 23 +++++++--------- hkl/hkl-pseudoaxis-common-q.c | 4 +-- hkl/hkl-pseudoaxis-common.c | 4 +-- hkl/hkl-pseudoaxis.c | 21 +++++++-------- hkl/hkl-quaternion.c | 2 +- hkl/hkl-sample.c | 51 ++++++++++++++++------------------- hkl/hkl-source.c | 4 +-- hkl/hkl-vector.c | 15 +++++------ test/hkl/bench-t.c | 2 +- test/hkl/lattice-t.c | 12 ++++----- test/hkl/parameter-t.c | 12 ++++----- test/hkl/pseudoaxis-e4ch-t.c | 37 ++++++++++++------------- test/hkl/pseudoaxis-e4cv-t.c | 36 ++++++++++++------------- test/hkl/pseudoaxis-e6c-t.c | 22 +++++++-------- test/hkl/pseudoaxis-k4cv-t.c | 18 ++++++------- test/hkl/pseudoaxis-k6c-t.c | 22 +++++++-------- test/hkl/pseudoaxis-t.c | 8 +++--- test/hkl/pseudoaxis-zaxis-t.c | 8 +++--- test/hkl/sample-t.c | 4 +-- test/tap/hkl.c | 2 +- 30 files changed, 227 insertions(+), 259 deletions(-) commit 4c11dc3daa28d298eda62c7ea7c74aa41d7708f7 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 28 17:40:50 2011 +0100 * HKL_FAIL = 0 -> HKL_FALSE next step remove the useless HKL_SUCCESS and HKL_FAIL macros. hkl/hkl-macros.h | 2 +- hkl/hkl-sample.c | 18 +++++++++--------- hkl/hkl-sample.h | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) commit e4004b70cf9d7745e93481165cc6c435ddfd5743 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 28 17:01:09 2011 +0100 * HKL_SUCCESS -> HKL_TRUE preparation of the transition. hkl/hkl-lattice.c | 4 +-- hkl/hkl-macros.h | 2 +- hkl/hkl-parameter.c | 2 +- hkl/hkl-pseudoaxis-auto.c | 4 +-- hkl/hkl-pseudoaxis.c | 2 +- hkl/hkl-sample.c | 6 ++--- test/hkl/pseudoaxis-e4ch-t.c | 62 +++++++++++++++++++++---------------------- test/hkl/pseudoaxis-e4cv-t.c | 62 +++++++++++++++++++++---------------------- test/hkl/pseudoaxis-e6c-t.c | 32 +++++++++++----------- test/hkl/pseudoaxis-k4cv-t.c | 22 +++++++-------- test/hkl/pseudoaxis-k6c-t.c | 28 +++++++++---------- test/hkl/pseudoaxis-t.c | 26 +++++++++--------- test/hkl/pseudoaxis-zaxis-t.c | 8 +++--- test/tap/hkl.c | 4 +-- 14 files changed, 132 insertions(+), 132 deletions(-) commit 20fc9d38e3743aa055cbe4c081f3d4a3a596a7bb Author: Frédéric-Emmanuel PICCA Date: Mon Feb 28 15:39:51 2011 +0100 * add the unit test methods test/TESTS | 1 + test/hkl/Makefile.am | 1 + test/hkl/unit-t.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) commit f4dd9bfe29307b7a89a97928658b3566a6c78287 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 14:48:19 2011 +0100 * do not use the tmpl file with gtk-doc configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 45fdea2ff3c2d65c44e700511825b92830827ae5 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 14:47:43 2011 +0100 * document a bug requiring a so bump. hkl/hkl-sample.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) commit 5913fafd64ccd3e378a310d09f8406915861bafa Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 14:46:36 2011 +0100 * remove a few mode warnings hkl/hkl-pseudoaxis-auto.c | 4 ++-- hkl/hkl-pseudoaxis-common-eulerians.c | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 10 +++++----- hkl/hkl-pseudoaxis-common-q.c | 2 +- hkl/hkl-sample.c | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) commit 1192dcc87ecf9f59aa199b9ca78127e7093723ad Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 11:57:13 2011 +0100 * fix most of the vc9 warnings hkl/hkl-geometry.c | 2 +- hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis-common-eulerians.c | 4 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 9 ++++----- 4 files changed, 8 insertions(+), 9 deletions(-) commit fa07e8aef42b69c7ce1b27ee55c7ef248a69b097 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 11:21:07 2011 +0100 * update the pom.xml hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5c052d22953d230bab4cb6d72c9b682960208d3c Author: Frédéric-Emmanuel PICCA Date: Fri Feb 25 11:18:44 2011 +0100 * avoid and API breakage. hkl/hkl-pseudoaxis-common-hkl.c | 8 +++--- hkl/hkl-pseudoaxis-common-psi.c | 4 +-- hkl/hkl-pseudoaxis-common-q.c | 4 +-- hkl/hkl-vector.c | 59 +++++++++++++++++++++++++---------------- hkl/hkl-vector.h | 7 +++-- test/hkl-test-vector.c | 2 +- 6 files changed, 50 insertions(+), 34 deletions(-) commit cd266ff75a1f2d6d1f11cfd1050e3d3151ba5e92 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 17:31:52 2011 +0100 * pom.xml -> SNAPSHOT hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e544e1abad9445e51a738ba9896d9ab171afdc4 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 17:25:38 2011 +0100 * backport the zaxis computation fix from the next branch hkl/hkl-geometry.c | 26 ++++ hkl/hkl-geometry.h | 2 + hkl/hkl-pseudoaxis-common-hkl.c | 298 +++++++++++++++++++++++++++++++++++++++- hkl/hkl-pseudoaxis-common-hkl.h | 7 + hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-pseudoaxis-common-q.c | 4 +- hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- hkl/hkl-vector.c | 94 +++++++++++-- hkl/hkl-vector.h | 11 +- test/hkl-test-vector.c | 2 +- 10 files changed, 430 insertions(+), 20 deletions(-) commit 2ee1e2d7ec73f8c074124e7d4ba69c13e72fc0a9 Merge: a432c89e 33a1243c Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 14:27:52 2011 +0100 Merge branch 'maint' into next Conflicts: hkl/hkl-pseudoaxis-common-hkl.c test/hkl/pseudoaxis-e6c-t.c commit 33a1243c4c40d8f2e3bafdaf4130ba325d48d7ee Author: Picca Frédéric-Emmanuel Date: Wed Feb 16 13:31:16 2011 +0100 * add mode parameters callbacks in ghkl gui/pseudo.ui | 14 ++++++++------ gui/pseudoaxesframe.cpp | 33 ++++++++++++++++++++++++++++----- gui/pseudoaxesframe.h | 19 +++++++++++++++++++ 3 files changed, 55 insertions(+), 11 deletions(-) commit e50499d2a68eb9914328624f9e9165f14a60a349 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 11:32:41 2011 +0100 * better printout for the bench test/bench.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 5a4fefcb69b83b33761b0c0afcddc99ed8766aa4 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 11:32:25 2011 +0100 * typo hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-vector.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit c0005f74fa5e5fcc449a79a0a35e56782c8d0950 Author: Frédéric-Emmanuel PICCA Date: Thu Feb 24 11:32:13 2011 +0100 * proposition of fix for the petra3 psi_constant_vertical problem hkl/hkl-pseudoaxis-common-hkl.c | 43 +++++++++++++++++--------- hkl/hkl-vector.c | 4 +-- test/hkl-test-pseudoaxis-e6c.c | 68 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 17 deletions(-) commit a432c89e28ac0ee41d269a1d00e84e48df23c047 Author: Picca Frédéric-Emmanuel Date: Wed Feb 16 13:31:16 2011 +0100 * add mode parameters callbacks in ghkl gui/hkl-gui-pseudoaxes.cpp | 33 ++++++++++++++++++++++++++++----- gui/hkl-gui-pseudoaxes.h | 19 +++++++++++++++++++ gui/pseudo.ui | 14 ++++++++------ 3 files changed, 55 insertions(+), 11 deletions(-) commit 02f318c9ba5070cb033e4c5ed61662943e578515 Merge: 5cde3bfb e4dae97e Author: Picca Frédéric-Emmanuel Date: Wed Feb 16 11:43:46 2011 +0100 Merge branch 'maint' into next Conflicts: hkl/pom.xml commit 5cde3bfbe96492f599afe967867a609da37fe10b Author: Frédéric-Emmanuel PICCA Date: Mon Jan 31 16:29:36 2011 +0100 * usefull printf when a test fail in the pseudaxis-t method. test/hkl/pseudoaxis-t.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) commit 50baf3426b140b636f68662687505423b6ea60d6 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 31 16:28:58 2011 +0100 * use the set_hkl method also for the reflectivity mode of the zaxis hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f5c81dc798fba1cf01873fcad0fd381bbdc99e3d Author: Frédéric-Emmanuel PICCA Date: Mon Jan 31 16:28:25 2011 +0100 * silent the set_hkl method hkl/hkl-pseudoaxis-common-hkl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc6ff1c1937c9dcf1fcf31f18c559e405dc30c47 Author: Picca Frédéric-Emmanuel Date: Sun Jan 30 21:38:38 2011 +0100 * impreove a bit the set_hkl method hkl/hkl-pseudoaxis-common-hkl.c | 69 ++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 18 deletions(-) commit 5ab51a0172f84b044118de230060c754ab6c1611 Author: Picca Frédéric-Emmanuel Date: Sun Jan 23 14:32:39 2011 -0500 * print information to stderr if the pseudoaxes test is ko. test/hkl/pseudoaxis-t.c | 53 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 18 deletions(-) commit a34af06c51888f8ad10e45919f51e93d0cb8839d Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 16:58:35 2011 +0100 * update the TODO list. TODO | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) commit b172eaca6ed415a1de3b3c360d8822979e54c980 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 16:57:42 2011 +0100 * the detector fit method works on 1 and 2 axes. hkl/hkl-pseudoaxis-common-hkl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f9c085c0cf08090bba24de29d107693c256758b6 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 16:02:59 2011 +0100 * silent pseudoaxis-zaxis-t program test/hkl/pseudoaxis-zaxis-t.c | 1 - 1 file changed, 1 deletion(-) commit e2850cea9fc65fc4856dad0137f2d7418af05282 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 15:37:02 2011 +0100 * typo hkl/hkl-pseudoaxis-common-hkl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 764126e3189e8bb37452148a9ed79db5654d67ed Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 15:36:55 2011 +0100 * I forgot this change. hkl/hkl-pseudoaxis-common-hkl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d0564128efe67761b48ee8605aeebe22dea6b691 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 15:28:53 2011 +0100 * prepare a generalisation of the new hkl set method solver for now this is not yet ready for adoption by all the other geometries. especially for the degenerated case of the k6c geometries. this method do not take into account the degenerated axes which cause troubles. (need more investigation) hkl/hkl-pseudoaxis-common-hkl.c | 268 +++++++++++++++++++++++++++++++++++++++- hkl/hkl-pseudoaxis-common-hkl.h | 7 ++ hkl/hkl-pseudoaxis-zaxis-hkl.c | 262 +-------------------------------------- 3 files changed, 272 insertions(+), 265 deletions(-) commit 03308b0c3cf418edbd1821c6a872fa14853299cf Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 14:47:26 2011 +0100 * better fit of the detector position hkl/hkl-pseudoaxis-zaxis-hkl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 094cf3b362f18caa645d9e49e1d4e6143234cc34 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 14:45:04 2011 +0100 * correction in the DEBUG code hkl/hkl-pseudoaxis-zaxis-hkl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 29cfb476e82d9723a815dc9cf3bec06ea74adcf6 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 13 11:34:20 2011 +0100 * remove useless code hkl/hkl-pseudoaxis-zaxis-hkl.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 7164580ee7c81c78e8afd17fc60dafb8fa1e11b9 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 11 17:11:52 2011 +0100 * update the zaxis figure with the right omega axis orientation Documentation/figures/zaxis.asy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3dab73325902abd598c0db7eb46f1391065f84f2 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 11 17:06:33 2011 +0100 * now the test_engines method has a parameter for the number of tests test/hkl/pseudoaxis-t.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) commit d6a18989e2c249dc9ff44cf7a8122ad525049ca1 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 11 17:05:28 2011 +0100 * update the zaxis mode. now it find more solutions. the idea is to use the ewalds sphere to generate a solution from another one. (see the zaxis figure) hkl/hkl-pseudoaxis-zaxis-hkl.c | 304 ++++++++++++++++++++++++++++++++--------- test/hkl/pseudoaxis-zaxis-t.c | 3 +- 2 files changed, 244 insertions(+), 63 deletions(-) commit e85ca0a6536ccfb33a2e95021356e62c86c2035b Author: Frédéric-Emmanuel PICCA Date: Tue Jan 11 16:59:52 2011 +0100 * add oriented_angle_points, rotated_around_line, modify project_on_plan hkl/hkl-pseudoaxis-common-hkl.c | 4 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-pseudoaxis-common-q.c | 4 +- hkl/hkl-vector.c | 95 ++++++++++++++++++++++++++++++++++++----- hkl/hkl-vector.h | 11 ++++- test/hkl/vector-t.c | 55 +++++++++++++++++++++++- 6 files changed, 153 insertions(+), 20 deletions(-) commit b1e64ea2b35dccdb46905c9a6088c387d29ce24e Author: Picca Frédéric-Emmanuel Date: Sun Jan 9 05:02:06 2011 -0500 * povray -> asymptote figure Documentation/figures/B_a.asy | 26 ++++++++++++++ Documentation/figures/B_a.pov | 73 --------------------------------------- Documentation/figures/B_a.py | 43 ----------------------- Documentation/figures/Makefile.am | 4 +-- 4 files changed, 28 insertions(+), 118 deletions(-) commit 8b87f5cd4cd032a095bff175c813cb86ee97faee Author: Picca Frédéric-Emmanuel Date: Sat Jan 8 07:12:43 2011 -0500 * switch to c-tap-harness 1.6 now they added an epsilon in the is_double check, so we can use it instead of my is_double_epsilon test/hkl/axis-t.c | 40 +++++++++--------- test/hkl/geometry-t.c | 28 ++++++------- test/hkl/interval-t.c | 4 +- test/hkl/lattice-t.c | 108 ++++++++++++++++++++++++------------------------ test/hkl/matrix-t.c | 18 ++++---- test/hkl/parameter-t.c | 12 +++--- test/hkl/quaternion-t.c | 16 +++---- test/hkl/sample-t.c | 62 +++++++++++++-------------- test/hkl/source-t.c | 12 +++--- test/hkl/vector-t.c | 30 +++++++------- test/runtests.c | 66 +++++++++++++++++++---------- test/tap/basic.c | 87 ++++++++++++++++++++++---------------- test/tap/basic.h | 23 +++++++++-- test/tap/libtap.sh | 65 ++++++++++++++++++++++++----- 14 files changed, 334 insertions(+), 237 deletions(-) commit f07df8b98a347c403e4534544b4e5ec73f972ff0 Author: Picca Frédéric-Emmanuel Date: Sat Jan 8 06:55:21 2011 -0500 * update the zaxis figure and generate pdf instead of png the png generated files where ugly and depends of a working X server. This should FTBFS during the debian package build (no X available). Now we have nice vertorial 3D figures. Documentation/figures/Makefile.am | 7 ++++--- Documentation/figures/zaxis.asy | 34 ++++++++++++++-------------------- 2 files changed, 18 insertions(+), 23 deletions(-) commit 585d8e247cc01107f82139d5e6f9611fce76c75f Author: Picca Frédéric-Emmanuel Date: Thu Jan 6 15:48:42 2011 -0500 * TO DELETE test/hkl/axis-t.c | 40 ++++++++-------- test/hkl/geometry-t.c | 34 +++++++------- test/hkl/interval-t.c | 4 +- test/hkl/lattice-t.c | 108 +++++++++++++++++++++---------------------- test/hkl/matrix-t.c | 18 ++++---- test/hkl/parameter-t.c | 12 ++--- test/hkl/pseudoaxis-e4cv-t.c | 30 ++++++------ test/hkl/pseudoaxis-e6c-t.c | 16 +++---- test/hkl/pseudoaxis-k4cv-t.c | 20 ++++---- test/hkl/pseudoaxis-k6c-t.c | 22 ++++----- test/hkl/pseudoaxis-t.c | 6 +-- test/hkl/quaternion-t.c | 16 +++---- test/hkl/sample-t.c | 62 ++++++++++++------------- test/hkl/source-t.c | 12 ++--- test/hkl/vector-t.c | 30 ++++++------ test/runtests.c | 66 +++++++++++++++++--------- test/tap/basic.c | 87 +++++++++++++++++++--------------- test/tap/basic.h | 23 +++++++-- test/tap/libtap.sh | 65 +++++++++++++++++++++----- 19 files changed, 384 insertions(+), 287 deletions(-) commit c49422e6e39413950a4ba176a091ce08534938b6 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 6 14:30:03 2011 +0100 * update the zaxis figure and integrate it to the buildsystem. Documentation/figures/Makefile.am | 8 ++++-- Documentation/figures/zaxis.asy | 59 ++++++++++++++++++++++++--------------- README | 12 ++++---- configure.ac | 6 ++++ 4 files changed, 55 insertions(+), 30 deletions(-) commit a16281324308a4411fe43d2316e33749c00834f4 Author: Picca Frédéric-Emmanuel Date: Fri Dec 31 10:09:32 2010 -0500 * work on the 3d gui part, it seems that it compiles now gui/hkl-gui-3d.vala | 131 +++++++++++++++++++++++++++------------------------- gui/hkl3d.vapi | 9 +++- 2 files changed, 75 insertions(+), 65 deletions(-) commit 56a40497dd8da78c4ef8d53c6d892aa5625d390c Author: Picca Frédéric-Emmanuel Date: Thu Dec 30 09:54:13 2010 -0500 * now the signals are ok gui/Makefile.am | 1 + gui/hkl-gui-3d.vala | 2 +- gui/hkl-gui-pseudoaxes.vala | 21 +- gui/hkl-gui.vala | 550 +++++++++++++++++++++++------------------- gui/hkl3d.vapi | 15 +- gui/hkl3d/hkl3d-gui-model.cpp | 6 +- gui/hkl3d/hkl3d-gui-model.h | 8 +- gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- gui/hkl3d/hkl3d-gui-scene.h | 2 +- hkl3d/hkl3d.cpp | 124 +++++----- hkl3d/hkl3d.h | 78 +++--- 11 files changed, 438 insertions(+), 371 deletions(-) commit 5054481f1af5856b70571f61bbd4030238fe4f3a Author: Picca Frédéric-Emmanuel Date: Mon Dec 13 02:25:57 2010 -0500 * improve the zaxis figure. Documentation/figures/zaxis.asy | 55 ++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) commit 8186328c020d63405689e03dedfc002bbd9e3c79 Author: Picca Frédéric-Emmanuel Date: Sun Nov 28 16:25:08 2010 -0500 * work in progress for the zaxis solver Documentation/figures/zaxis.asy | 43 +++++++++++++++++++++ hkl/hkl-pseudoaxis-zaxis-hkl.c | 83 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 125 insertions(+), 1 deletion(-) commit 329b9f9f3fc9b7f0eb9d49a1f198cef1a7ed22a9 Author: Frédéric-Emmanuel PICCA Date: Thu Nov 25 10:05:29 2010 +0100 * update the TODO TODO | 55 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 21 deletions(-) commit 4cbfc3f564bfdba49d0e3d5ad0692d87acde5559 Author: Frédéric-Emmanuel PICCA Date: Thu Nov 25 09:35:06 2010 +0100 * add the eulerian test in the bench test/hkl/bench-t.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 71d803ba843d2674da40376d1daa132b70f44d32 Author: Frédéric-Emmanuel PICCA Date: Wed Nov 24 11:37:19 2010 +0100 * now lcov works also with the 1.9 version configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 20b16aa131a4252802c9abfcd4437328ec3fcad6 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 23 16:51:54 2010 +0100 * remove a tabulation indentation. it is not allow to use tabulation in the middle of a comment. test/hkl/pseudoaxis-e4ch-t.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6f45b5678f490b7e5f4a8d76603ff07325b877f9 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 23 16:50:25 2010 +0100 * remove useless comments test/hkl/pseudoaxis-e4ch-t.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) commit 64f38716412610eaf93c5209c4822e549ffa605c Author: Jens Krüger Date: Mon Nov 22 11:30:09 2010 +0100 Improve the use of the povray program. If the configure run does not detect the povray program the echo program will be used as povray. Documentation/figures/Makefile.am | 6 ++++-- configure.ac | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) commit 6f592595064b37cbcef394f18576a037e78c3ff2 Author: Jens Krüger Date: Mon Nov 22 11:30:08 2010 +0100 Add a first test for the E4CH. autogen.sh | 2 +- configure.ac | 2 +- test/TESTS | 1 + test/hkl/Makefile.am | 3 +- test/hkl/pseudoaxis-e4ch-t.c | 430 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 435 insertions(+), 3 deletions(-) commit e4dae97e5b495eaf713c24dc5a38aea1884bbe56 Author: Frédéric-Emmanuel PICCA Date: Fri Nov 12 13:50:02 2010 +0100 * reduce the number of iteration before randomizing the starting point When we try to find the first solution, the starting point is the current position of the diffractometer. If after 100 iterations nothing was found. Just randomize the axes of the diffractometer and restart from this new point. hkl/hkl-pseudoaxis-auto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e6693cd3194420c9c481160e9bc8bcc76dac08e4 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 22 11:15:31 2010 +0200 * add a zaxis dedicated test method for the hkl pseudo axis test/TESTS | 1 + test/hkl/Makefile.am | 3 +- test/hkl/pseudoaxis-zaxis-t.c | 99 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) commit b6cf0a892257baaf69a2682bf9c6ebcf15068ee8 Author: Jens Krüger Date: Mon Sep 13 09:21:52 2010 +0200 FIX: error message if m4 directory exists. autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c6f2b24df6b3b32c4605592d3c0f4349e873c24f Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 22:53:35 2010 +0200 * add the --disable-gui and --disable-hkl3d Makefile.am | 2 +- NEWS | 3 ++- configure.ac | 14 +++++++------- 3 files changed, 10 insertions(+), 9 deletions(-) commit 62b405325256f95168478e40d17220307acb68ad Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 22:21:16 2010 +0200 * update the NEWS file NEWS | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit a8206186daf65a1e209d39506aa03710d6574da8 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 22:13:38 2010 +0200 * remove an useless precision problem test/hkl/pseudoaxis-k6c-t.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 5ff08efbb0df64637b5bed41052b7bd37f2a8ec5 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 22:07:34 2010 +0200 * typo hkl/hkl-geometry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f94484394fe7c839f7b809f7b7fa779abadcce9e Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 22:07:28 2010 +0200 * remove useless methodes of the HklGeometryList gui/hkl-gui.cpp | 2 +- hkl/hkl-geometry.c | 12 ------------ hkl/hkl-geometry.h | 4 ---- hkl/hkl-pseudoaxis.c | 4 ++-- test/hkl/pseudoaxis-e4cv-t.c | 2 +- test/hkl/pseudoaxis-e6c-t.c | 4 ++-- test/hkl/pseudoaxis-k4cv-t.c | 4 ++-- test/hkl/pseudoaxis-k6c-t.c | 4 ++-- test/hkl/pseudoaxis-t.c | 6 +----- 9 files changed, 11 insertions(+), 31 deletions(-) commit 4485226ba023255766d959984396a37b60adaf86 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 19:53:32 2010 +0200 * add the SOLEIL MARS beamline diffractometer Documentation/hkl.texi | 111 +++++++++---------------------------------- hkl/hkl-geometry-factory.c | 18 +++++++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-factory.c | 1 + test/hkl/pseudoaxis-t.c | 9 ++++ 6 files changed, 54 insertions(+), 89 deletions(-) commit 98d08f4964aae08879896b401588400e7ee5b961 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 18:08:24 2010 +0200 * remove all SET_AXES macros hkl/hkl-geometry.c | 18 ++++++++++++++++++ hkl/hkl-geometry.h | 2 ++ test/hkl/bench-t.c | 12 +----------- test/hkl/geometry-t.c | 22 +++++++++++++++++++++- test/hkl/pseudoaxis-e4cv-t.c | 26 +++++++++----------------- test/hkl/pseudoaxis-e6c-t.c | 22 ++++++---------------- test/hkl/pseudoaxis-k4cv-t.c | 10 +--------- test/hkl/pseudoaxis-k6c-t.c | 14 ++------------ 8 files changed, 60 insertions(+), 66 deletions(-) commit 35a211876f44923115ee3e79d1fd9f4596900ea3 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 17:07:47 2010 +0200 * fix tests when compiled with something different than gcc. due to rounding errors, the number of valid test in the pseudoaxes part were not always the same from one platform to the other. test/hkl/pseudoaxis-e4cv-t.c | 132 +++++++++++++++---------------------- test/hkl/pseudoaxis-e6c-t.c | 66 +++++++------------ test/hkl/pseudoaxis-k4cv-t.c | 69 +++++++------------- test/hkl/pseudoaxis-k6c-t.c | 152 ++++++++----------------------------------- test/hkl/pseudoaxis-t.c | 46 +++++++------ test/tap/Makefile.am | 7 +- test/tap/hkl.c | 40 ++++++++++++ test/tap/hkl.h | 34 ++++++++++ 8 files changed, 230 insertions(+), 316 deletions(-) commit 330628dcbe352e93c2dd6f717988d3b2c064d9f7 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 14:50:29 2010 +0200 * indentation test/hkl/pseudoaxis-t.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit d3c5fc094557e7d18543a205f2256bbc04546c41 Author: Picca Frédéric-Emmanuel Date: Thu Sep 23 14:49:50 2010 +0200 * remove C++ comment format hkl3d/hkl3d.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 80e405011234893f28948702a239a339214c9929 Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 21:50:33 2010 +0200 * remove the useless Hkl3D _context member. hkl3d/hkl3d.cpp | 4 ---- hkl3d/hkl3d.h | 1 - 2 files changed, 5 deletions(-) commit 067a699d7092b780139168a4b9ce40be85376917 Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 21:46:53 2010 +0200 * only renames gui/hkl-gui-3d.cpp | 30 ++++---- gui/hkl-gui-3d.h | 4 +- gui/hkl3d/hkl3d-gui-model.cpp | 34 ++++----- hkl3d/hkl3d.cpp | 165 +++++++++++++++++++++--------------------- hkl3d/hkl3d.h | 38 +++++----- test/hkl3d/test-t.c | 16 ++-- 6 files changed, 143 insertions(+), 144 deletions(-) commit e47e17e1fa5a0ea639ca05a78eb7e5a6c9880d81 Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 20:53:56 2010 +0200 * put the model in the Hkl3Config. hkl3d/hkl3d.cpp | 39 ++++++++++++++++++++++----------------- hkl3d/hkl3d.h | 1 + 2 files changed, 23 insertions(+), 17 deletions(-) commit c59926b8e20392de4a83b0c57a3378361268401c Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 19:41:21 2010 +0200 * add a config reference in the Hkl3DObject to simplify the code hkl3d/hkl3d.cpp | 35 +++++++++++++++-------------------- hkl3d/hkl3d.h | 2 +- 2 files changed, 16 insertions(+), 21 deletions(-) commit 7029b31556630d19793e34a3b79bf58f22b204c7 Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 19:40:43 2010 +0200 * typo hkl3d/hkl3d.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b4e0b0c91136dfbc82558ab855ab27bf4b6d5a5f Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 19:40:26 2010 +0200 * try to clarify the hkl3d_connect_object_to_axis method. hkl3d/hkl3d.cpp | 47 ++++++++++++++++++++++++----------------------- hkl3d/hkl3d.h | 2 +- 2 files changed, 25 insertions(+), 24 deletions(-) commit 3991d9015f2af9d6ee55495ce46c7cb2b184dadb Author: Picca Frédéric-Emmanuel Date: Tue Sep 21 16:35:39 2010 +0200 * rewrote the hkl3d_axis_detach_object hkl3d/hkl3d.cpp | 31 ++++++++++++------------------- test/hkl3d/test-t.c | 1 + 2 files changed, 13 insertions(+), 19 deletions(-) commit 179d2d73a6ce7d3a499c3f56cbc63c24ba315b66 Author: Picca Frédéric-Emmanuel Date: Mon Sep 20 17:10:14 2010 +0200 * remove the hkl3d_geometry_remove_object method hkl3d/hkl3d.cpp | 34 ++++++++++------------------------ hkl3d/hkl3d.h | 1 + 2 files changed, 11 insertions(+), 24 deletions(-) commit fe9146efc6a007cfa2eaf6e06505b51927e0804b Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 12:31:07 2010 +0200 * remove an useless variable hkl3d/hkl3d.cpp | 9 ++++----- hkl3d/hkl3d.h | 1 - test/hkl3d/test-t.c | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) commit 6510d4a3f3df15e641e473cbcdfeed1f0707fd2e Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 12:11:48 2010 +0200 * better explaination of the apply_transformation algo hkl3d/hkl3d.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 64a485565afe853b49dd526cf873ea2ef2594e9c Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 11:55:15 2010 +0200 * typo hkl3d/hkl3d.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 7efe4c658bdb42d7078bf94d0e2abec615a1da99 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 11:34:06 2010 +0200 * remove useless variable hkl3d/hkl3d.cpp | 1 - hkl3d/hkl3d.h | 1 - 2 files changed, 2 deletions(-) commit 68d2be8dd2dd5e3d0ba6149f9bf253c978eb1c10 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 11:33:56 2010 +0200 * move the apply transformation from Hkl3D to Hkl3DGeometry hkl3d/hkl3d.cpp | 61 +++++++++++++++++++++++++++++++-------------------------- hkl3d/hkl3d.h | 2 +- 2 files changed, 34 insertions(+), 29 deletions(-) commit 134318d0136ff49f00cb34056cec1766796482e6 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 11:18:22 2010 +0200 * move the HklGeometry in the Hkl3DGeometry hkl3d/hkl3d.cpp | 49 ++++++++++++++++++++++++------------------------- hkl3d/hkl3d.h | 4 ++-- test/hkl3d/test-t.c | 14 +++++++------- 3 files changed, 33 insertions(+), 34 deletions(-) commit 986660920a9b54e784945cc83d48b2ff1d819c08 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 10:44:16 2010 +0200 * doc: explain why only one model instead of one per filename hkl3d/hkl3d.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ea97ef1479de60d63e73bc90bd9cf4fd3d9edf11 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 10:35:11 2010 +0200 * replace the meaningless init_internal with a config constructor easier to understand hkl3d/hkl3d.cpp | 91 +++++++++++++++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 51 deletions(-) commit a8d26c6c7812915fc5f1453c262ce698c6b630e9 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 10:02:43 2010 +0200 * declare typedef for all struct and use it. gui/hkl3d/hkl3d-gui-model.cpp | 6 +-- gui/hkl3d/hkl3d-gui-model.h | 8 +-- gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- gui/hkl3d/hkl3d-gui-scene.h | 2 +- hkl3d/hkl3d.cpp | 122 +++++++++++++++++++++--------------------- hkl3d/hkl3d.h | 80 ++++++++++++++------------- test/hkl3d/test-t.c | 12 ++--- 7 files changed, 120 insertions(+), 112 deletions(-) commit b01401357262335aebfe91d6b641bbb03b27e217 Author: Picca Frédéric-Emmanuel Date: Sat Sep 18 09:42:17 2010 +0200 * work in progress configure.ac | 1 + gui/Makefile.am | 14 +- gui/gl.vapi | 1402 ++++++++++++++++++++ gui/glu.vapi | 301 +++++ gui/glut.vapi | 611 +++++++++ gui/glx.vapi | 202 +++ gui/gtkglext-1.0.vapi | 373 ++++++ gui/hkl-gui-3d.cpp | 244 ---- gui/hkl-gui-3d.h | 91 -- gui/hkl-gui-3d.vala | 261 ++++ ...seudoaxesframe.vala => hkl-gui-pseudoaxes.vala} | 0 gui/{ghkl.vala => hkl-gui.vala} | 0 gui/hkl.vapi | 12 +- gui/hkl3d.vapi | 104 ++ hkl3d/hkl3d.h | 6 + 15 files changed, 3274 insertions(+), 348 deletions(-) commit 8e6fc58522ecef974258b508fadf7ba3a20a9f72 Merge: 66cdb7ec 7402e4e7 Author: Picca Frédéric-Emmanuel Date: Thu Sep 16 23:03:21 2010 +0200 Merge branch 'next' into gtk Conflicts: configure.ac gui/Makefile.am gui/hkl-gui-callbacks.cpp gui/hkl-gui-modelcolumns.h gui/hkl-gui-pseudoaxes.cpp gui/hkl-gui-pseudoaxes.h gui/hkl-gui.cpp gui/hkl-gui.h gui/main.cpp commit 66cdb7ec98e86f9c8565eae79331629424c2f85a Author: Picca Frédéric-Emmanuel Date: Tue Sep 14 18:38:12 2010 +0200 * remove useless code gui/ghkl.vala | 6 ------ 1 file changed, 6 deletions(-) commit 90ccacd8bbd4bdc2fbaf50fd1eace9e74417e2f7 Author: Picca Frédéric-Emmanuel Date: Sun Sep 12 12:26:08 2010 +0200 * finish the transition to vala code for the interface gui/Makefile.am | 3 +- gui/ghkl-callbacks.c | 1262 ------------------------------------------------- gui/ghkl-callbacks.h | 199 -------- gui/ghkl.h | 243 ---------- gui/ghkl.vala | 9 + gui/main.c | 39 -- gui/pseudoaxesframe.h | 55 --- 7 files changed, 10 insertions(+), 1800 deletions(-) commit c9960f95ec610541ab49b1ff0c00ed612d5888e5 Author: Picca Frédéric-Emmanuel Date: Sun Sep 12 10:53:34 2010 +0200 * fix the pseudo axes frames gui/ghkl.vala | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 34ee59fa605d8321ae03e8ccba5c53f7c657e976 Author: Picca Frédéric-Emmanuel Date: Fri Sep 10 11:35:27 2010 +0200 * work in progress gui/ghkl.vala | 255 +++++++++++++++++++++++------------------------ gui/hkl.vapi | 8 +- gui/pseudoaxesframe.vala | 10 +- 3 files changed, 134 insertions(+), 139 deletions(-) commit 7402e4e761d2730005337bdf03b121c28e54d81d Author: Picca Frédéric-Emmanuel Date: Tue Sep 7 10:17:04 2010 +0200 * now the bench test take an argument for the number of iteration bench-t n test/hkl/bench-t.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) commit 3f6f13f2a409a40eb83765eb1ff0dd2d241f0947 Author: Picca Frédéric-Emmanuel Date: Mon Sep 6 07:44:55 2010 +0200 * still work in progress configure.ac | 1 + gui/Makefile.am | 8 +- gui/ghkl.vala | 1161 +++++++++++++++++++++------------------------- gui/hkl.vapi | 99 ++-- gui/main.c | 2 +- gui/pseudoaxesframe.vala | 4 + 6 files changed, 602 insertions(+), 673 deletions(-) commit dc78a4db56705a166031a02cc399f1b97363269b Author: Picca Frédéric-Emmanuel Date: Thu Sep 2 23:26:15 2010 +0200 * still working gui/ghkl.vala | 371 ++++++++++++++++++++++++----------------------------- gui/hkl.vapi | 31 ++++- hkl/hkl-interval.c | 2 +- 3 files changed, 198 insertions(+), 206 deletions(-) commit b4f0936b93dee22d50b5478f89c713d01273605c Author: Picca Frédéric-Emmanuel Date: Wed Sep 1 22:46:29 2010 +0200 * still working gui/ghkl.vala | 518 +++++++++++++++++++++++++--------------------------------- gui/hkl.vapi | 32 +++- 2 files changed, 256 insertions(+), 294 deletions(-) commit 942a49a3e34d929a987ef42756ca18b0a3125f64 Author: Picca Frédéric-Emmanuel Date: Tue Aug 31 22:59:31 2010 +0200 * still working gui/ghkl.vala | 60 +++++++++++++++++++++++++++-------------------------------- gui/hkl.vapi | 2 ++ 2 files changed, 29 insertions(+), 33 deletions(-) commit 93d19e6182a143bbac4adcbc4080330124bf6645 Author: Picca Frédéric-Emmanuel Date: Mon Aug 30 22:47:07 2010 +0200 * DELETE work in progress gui/ghkl.vala | 761 ++++++++++++++++++++++------------------------------------ gui/hkl.vapi | 36 +++ 2 files changed, 322 insertions(+), 475 deletions(-) commit 703e8046a9d57f58aa944506b83ffaedc3aa768a Author: Frédéric-Emmanuel PICCA Date: Mon Aug 30 18:24:51 2010 +0200 * TO DELETE work in progress gui/Makefile.am | 3 +- gui/ghkl.c | 1349 ------------------------------------------------------- gui/ghkl.vala | 1289 +++++++++++++++++++++++++++++++++++++++++++++------- gui/hkl.vapi | 68 +++ 4 files changed, 1191 insertions(+), 1518 deletions(-) commit f35055c053d0713c8b939b81d2ea69b63676bdef Author: Frédéric-Emmanuel PICCA Date: Mon Aug 30 16:31:25 2010 +0200 * release the 4.0.3 for soleil hkl/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b23aa06dd7941f1fa60e13d6284999ef925b95c5 Author: Picca Frédéric-Emmanuel Date: Sun Aug 29 23:19:30 2010 +0200 * work in progress configure.ac | 1 + gui/Makefile.am | 8 +- gui/ghkl.c | 5 +- gui/ghkl.vala | 1453 +++++++++++++++++++++++++++++++++++++++++++++- gui/hkl.vapi | 71 +++ gui/modelcolumns.h | 161 ----- gui/pseudoaxesframe.c | 234 -------- gui/pseudoaxesframe.vala | 213 +++++++ 8 files changed, 1720 insertions(+), 426 deletions(-) commit be344c27456256f466bae55ebea866ea6eae0d9b Author: Picca Frédéric-Emmanuel Date: Sun Aug 29 13:15:31 2010 +0200 * typo hkl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4e1415b78d28dadeccb711e860610a76a6cb7e46 Author: Picca Frédéric-Emmanuel Date: Sun Aug 29 13:12:04 2010 +0200 * refactoring of the hkl3d tests test/Makefile.am | 4 +- test/TESTS | 18 ++ test/hkl/Makefile.am | 55 +++-- test/hkl/{hkl-test-axis.c => axis-t.c} | 105 ++++----- test/hkl/{bench.c => bench-t.c} | 7 +- test/hkl/{hkl-test-detector.c => detector-t.c} | 47 ++-- test/hkl/{hkl-test-error.c => error-t.c} | 69 +++--- test/hkl/{hkl-test-geometry.c => geometry-t.c} | 137 +++++------- test/hkl/hkl-test-lattice.c | 237 --------------------- test/hkl/hkl-test-parameter.c | 141 ------------ test/hkl/hkl-test.c | 108 ---------- test/hkl/hkl-test.h | 115 ---------- test/hkl/{hkl-test-interval.c => interval-t.c} | 188 +++++++--------- test/hkl/lattice-t.c | 222 +++++++++++++++++++ test/hkl/{main.c => main-t.c} | 0 test/hkl/{hkl-test-matrix.c => matrix-t.c} | 101 ++++----- test/hkl/parameter-t.c | 130 +++++++++++ ...-test-pseudoaxis-e4cv.c => pseudoaxis-e4cv-t.c} | 99 ++++----- ...kl-test-pseudoaxis-e6c.c => pseudoaxis-e6c-t.c} | 55 ++--- ...-test-pseudoaxis-k4cv.c => pseudoaxis-k4cv-t.c} | 67 +++--- ...kl-test-pseudoaxis-k6c.c => pseudoaxis-k6c-t.c} | 76 +++---- test/hkl/{hkl-test-pseudoaxis.c => pseudoaxis-t.c} | 56 ++--- test/hkl/{hkl-test-quaternion.c => quaternion-t.c} | 109 ++++------ test/hkl/{hkl-test-sample.c => sample-t.c} | 215 ++++++++----------- test/hkl/{hkl-test-source.c => source-t.c} | 65 +++--- test/hkl/{hkl-test-vector.c => vector-t.c} | 143 +++++-------- test/hkl3d/Makefile.am | 4 +- test/hkl3d/{main.c => test-t.c} | 0 test/tap/basic.c | 26 +++ test/tap/basic.h | 2 + 30 files changed, 1064 insertions(+), 1537 deletions(-) commit 6a97e3558f1ec75575f025d7427eed5d121171e7 Author: Picca Frédéric-Emmanuel Date: Sat Aug 28 14:59:18 2010 +0200 * remove a dependency to glut configure.ac | 4 +--- gui/hkl3d/Makefile.am | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) commit 329c7062d4772264c7d493bf25df2cf873575a80 Author: Picca Frédéric-Emmanuel Date: Sat Aug 28 14:08:09 2010 +0200 * import c-tap-hardness 1.5 test/runtests.c | 2 +- test/tap/libtap.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6af0f383fe5e796eb8803b742f541335670b2ca0 Author: Picca Frédéric-Emmanuel Date: Wed Aug 25 22:28:28 2010 +0200 * reduce the size of the hkl3d_xxx_free methods hkl3d/hkl3d.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) commit c3d20a93466d6626d260f5c470d7e6fa2a7d15ff Author: Picca Frédéric-Emmanuel Date: Wed Aug 25 22:27:59 2010 +0200 * better check in hkl3d_config_add_object hkl3d/hkl3d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8d0f4c5992ffcdde3711d29ac5981cb8ee87d4d4 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 18:27:14 2010 +0200 * remove a few memory leaks (still one in g3d) hkl3d/hkl3d.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit a7d853d115a3578a0981ae59e28cdf9b08d41910 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 18:09:47 2010 +0200 * remove a valgrind warning hkl3d/hkl3d.cpp | 97 +++++++++++++++++++++++++++------------------------------ 1 file changed, 46 insertions(+), 51 deletions(-) commit e1ebd20e48a9048361752d23bf8beb9cc410e903 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 16:43:34 2010 +0200 * now we can remove object from ghkl gui/hkl-gui-3d.cpp | 17 +++++++++++++++++ hkl3d/hkl3d.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d.h | 3 ++- 3 files changed, 70 insertions(+), 1 deletion(-) commit 491109a5b6c75d908cd2c35886c7da953234066d Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 16:23:42 2010 +0200 * doc hkl3d/hkl3d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a8832b4fd39fc816de4e426619c15f70405db567 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 15:32:00 2010 +0200 * add the fprintf method for all structures hkl3d/hkl3d.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ hkl3d/hkl3d.h | 2 ++ 2 files changed, 48 insertions(+) commit 4af730a5b3991e1d8d53231d58cb940e62ee8e16 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 15:31:18 2010 +0200 * typo hkl3d/hkl3d.cpp | 1 - 1 file changed, 1 deletion(-) commit 36af9ab091f83eb0371c70a556eddc25fbac3fb9 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 15:30:45 2010 +0200 * remove a memory leak hkl3d/hkl3d.cpp | 2 ++ 1 file changed, 2 insertions(+) commit f25ffa571aef39746d317d7ed85bad56c7a3e24d Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 14:58:52 2010 +0200 * change the Hkl3DConfig internals and add a test to verify thaht everithings is ok gui/hkl-gui-3d.cpp | 10 +- gui/hkl3d/hkl3d-gui-model.cpp | 22 ++--- hkl3d/hkl3d.cpp | 217 +++++++++++++++++++++--------------------- hkl3d/hkl3d.h | 2 +- test/hkl3d/main.c | 13 ++- 5 files changed, 132 insertions(+), 132 deletions(-) commit b10c562e70454c22b72494671a6229396920c795 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 25 11:57:35 2010 +0200 * change the Hkl3DConfigs structure. gui/hkl-gui-3d.cpp | 18 +++++++------- gui/hkl3d/hkl3d-gui-model.cpp | 26 +++++++++---------- hkl3d/hkl3d.cpp | 58 +++++++++++++++++++++++++++---------------- hkl3d/hkl3d.h | 2 +- test/hkl3d/main.c | 12 ++++----- 5 files changed, 66 insertions(+), 50 deletions(-) commit cd6a1664a8373e83e826eb0a2d22db7fa3c76d46 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 17:59:42 2010 +0200 * remove the standalone ghkl3d application gui/hkl3d/Makefile.am | 10 -- gui/hkl3d/ghkl3d.ui | 218 ------------------------------------ gui/hkl3d/hkl3d-gui-application.cpp | 201 --------------------------------- gui/hkl3d/hkl3d-gui-application.h | 81 -------------- gui/hkl3d/main.cpp | 64 ----------- 5 files changed, 574 deletions(-) commit 535978c05b1e1730df37ff98ac6e28cbda76ef48 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 17:34:53 2010 +0200 * remove the convex decomposition, (does not work for now) configure.ac | 2 - hkl3d/ConvexDecomposition/ConvexBuilder.cpp | 373 --- hkl3d/ConvexDecomposition/ConvexBuilder.h | 112 - hkl3d/ConvexDecomposition/ConvexDecomposition.cpp | 375 --- hkl3d/ConvexDecomposition/ConvexDecomposition.h | 220 -- hkl3d/ConvexDecomposition/Makefile.am | 43 - hkl3d/ConvexDecomposition/bestfit.cpp | 466 --- hkl3d/ConvexDecomposition/bestfit.h | 65 - hkl3d/ConvexDecomposition/bestfitobb.cpp | 173 -- hkl3d/ConvexDecomposition/bestfitobb.h | 43 - hkl3d/ConvexDecomposition/cd_hull.cpp | 3257 -------------------- hkl3d/ConvexDecomposition/cd_hull.h | 153 - hkl3d/ConvexDecomposition/cd_vector.h | 1185 ------- hkl3d/ConvexDecomposition/cd_wavefront.cpp | 860 ------ hkl3d/ConvexDecomposition/cd_wavefront.h | 62 - hkl3d/ConvexDecomposition/concavity.cpp | 795 ----- hkl3d/ConvexDecomposition/concavity.h | 60 - hkl3d/ConvexDecomposition/fitsphere.cpp | 202 -- hkl3d/ConvexDecomposition/fitsphere.h | 43 - hkl3d/ConvexDecomposition/float_math.cpp | 257 -- hkl3d/ConvexDecomposition/float_math.h | 72 - hkl3d/ConvexDecomposition/meshvolume.cpp | 128 - hkl3d/ConvexDecomposition/meshvolume.h | 45 - hkl3d/ConvexDecomposition/planetri.cpp | 238 -- hkl3d/ConvexDecomposition/planetri.h | 58 - hkl3d/ConvexDecomposition/raytri.cpp | 134 - hkl3d/ConvexDecomposition/raytri.h | 45 - hkl3d/ConvexDecomposition/splitplane.cpp | 306 -- hkl3d/ConvexDecomposition/splitplane.h | 59 - hkl3d/ConvexDecomposition/vlookup.cpp | 307 -- hkl3d/ConvexDecomposition/vlookup.h | 119 - hkl3d/GIMPACTUtils/Makefile.am | 18 - .../btGImpactConvexDecompositionShape.cpp | 234 -- .../btGImpactConvexDecompositionShape.h | 87 - hkl3d/Makefile.am | 8 +- 35 files changed, 2 insertions(+), 10602 deletions(-) commit 65c80bb849da385e006d633b402e41c0097ede7e Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 12:00:53 2010 +0200 * typo hkl3d/hkl3d.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit b37719a168b4540d92eed83575037a401a72cf65 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 11:39:10 2010 +0200 * remove useless code hkl3d/hkl3d.cpp | 2 -- 1 file changed, 2 deletions(-) commit f9fd5b895f4cb07384f32500d99c430a36e792a3 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 11:30:05 2010 +0200 * refactor the hkl3d test methods test/hkl3d/main.c | 151 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 86 insertions(+), 65 deletions(-) commit 5f2a8a8ee65f7b3706da5601bbc5193824a6511e Author: Frédéric-Emmanuel PICCA Date: Tue Aug 24 10:21:18 2010 +0200 * add a method to get the collision calculation time in millisecond hkl3d/hkl3d.cpp | 9 +++++++-- hkl3d/hkl3d.h | 1 + test/hkl3d/main.c | 9 ++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) commit 99a62466b0a463340003d0b63938237af3061a68 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 23 16:06:34 2010 +0200 * add a few DIFFABS model validation tests test/hkl3d/main.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) commit 7bbd3c70f2c940256680cbeab26c553c813c37ad Author: Frédéric-Emmanuel PICCA Date: Mon Aug 23 15:33:09 2010 +0200 * better test for the collision. test/hkl3d/main.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) commit 79d7246d60f1fb570b74708b067c8c26af1b3093 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 23 15:10:41 2010 +0200 * fix a bug in the save config method hkl3d/hkl3d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9bf19d187656ac639860b99a0adbdb12f01b4723 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 23 15:10:00 2010 +0200 * update the DIFFABS MODEL to pass all the tests data/diffabs.dae | 266 +++++++++++++++++++++++++++--------------------------- data/diffabs.yaml | 22 ++--- 2 files changed, 144 insertions(+), 144 deletions(-) commit d85f06702c044d985eb1d0c7f0f63b89e6854360 Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 16:27:37 2010 +0200 * add an lcov target to check the coverage of hkl Makefile.am | 23 +++++++++++++++++++ configure.ac | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) commit a3516e201274ca21ea07869b802bc1d27be9b215 Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 11:34:49 2010 +0200 * no need to check for enable_xxx values. configure.ac | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) commit 936e7e66956879b5c4917384792f912517e0fbae Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 10:46:42 2010 +0200 * really check for the yaml usability configure.ac | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 838d6f296af375dedd10dcc4f22c35da680013d7 Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 10:46:20 2010 +0200 * better presentation of the configure.ac configure.ac | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) commit 84fc138155c6f236b08dd825e2e3e44a0c8036c5 Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 10:29:23 2010 +0200 * update to autoconf 2.67 configure.ac | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 9af196bc82163193f8c446858a931515b973542b Author: Picca Frédéric-Emmanuel Date: Sun Aug 22 10:28:13 2010 +0200 * autoupdate a part of the configure.ac configure.ac | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit d0ff750037b5a8365c5ad54a2c593d6c0cdc5629 Author: Picca Frédéric-Emmanuel Date: Sat Aug 21 14:08:06 2010 +0200 * remove a bunch of clang warnings hkl/hkl-sample.c | 2 +- test/hkl/hkl-test-axis.c | 12 ++++++------ test/hkl/hkl-test-geometry.c | 2 +- test/hkl/hkl-test-interval.c | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) commit 84669e2c7228dc94c61eaa43524d03700c693c41 Author: Picca Frédéric-Emmanuel Date: Sat Aug 21 11:53:36 2010 +0200 * remove two memory leaks. still one memory leak in the add_model_from_file, when we concatenate two G3DModels. hkl3d/hkl3d.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit aefe7ec0f60d90492916260c924fd66bb1e594e5 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 17:11:34 2010 +0200 * write the unit test for the diffabs diffractometer. for now the test failed but, I need to understand what is the problem with the 3D model. test/hkl3d/main.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit 53ff9d7b6bcdfea9d9b6a4e7fcb4b806672905f6 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 17:00:59 2010 +0200 * remove useless code. hkl3d/hkl3d.cpp | 4 ---- 1 file changed, 4 deletions(-) commit da26280098cb73ae4ebf856987757649afc8936f Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 16:47:08 2010 +0200 *correct a bug in the check collision part hkl3d/hkl3d.cpp | 59 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) commit 406d12f580dfac5b9375fcba679eae9c73cddf16 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 15:59:42 2010 +0200 * forgot the is_colliding in the hkl3d_object_fprintf hkl3d/hkl3d.cpp | 1 + 1 file changed, 1 insertion(+) commit 17bf9a7366eb00de570ee0eac4b16ff6ea4df218 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 11:30:46 2010 +0200 * reduce the number of bench cycles test/hkl/bench.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 6220867bd3ace2df267a1bd7f7e3f3b02696942d Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 11:30:07 2010 +0200 * switch the hkl3d test from c++ to C now we can use hkl3d from hkl. test/hkl3d/Makefile.am | 9 ++++----- test/hkl3d/{main.cpp => main.c} | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) commit 48b940e21bdab3681c51f9524f774afd98449874 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 11:29:26 2010 +0200 * fix last missing C++ horrors :) gui/hkl3d/hkl3d-gui-model.cpp | 4 ++-- hkl3d/hkl3d.cpp | 8 ++++---- hkl3d/hkl3d.h | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) commit 3b3e8f8288dab81bc828cc3fb8d25d2cbd9b2e29 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 10:49:51 2010 +0200 * hkl3d C++ -> C full transition. hkl3d/hkl3d.h | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) commit fa2034219a823998ea4b3ed6cd52ab21b4d64821 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 20 10:42:01 2010 +0200 * witch the Hkl3D class -> C gui/hkl-gui-3d.cpp | 4 +- gui/hkl3d/hkl3d-gui-application.cpp | 52 ++++++++++++------------- gui/hkl3d/hkl3d-gui-application.h | 4 +- gui/hkl3d/hkl3d-gui-model.cpp | 51 ++++++++++++------------- gui/hkl3d/hkl3d-gui-model.h | 10 +++-- gui/hkl3d/hkl3d-gui-scene.cpp | 4 +- gui/hkl3d/hkl3d-gui-scene.h | 4 +- gui/hkl3d/main.cpp | 3 +- hkl3d/hkl3d.cpp | 75 ++++++++++++++++++++++--------------- hkl3d/hkl3d.h | 6 +-- test/hkl3d/main.cpp | 18 +++++---- 11 files changed, 126 insertions(+), 105 deletions(-) commit b38f3e42873e6805de8e3a8fdc05ac631bb5c1dd Author: Picca Frédéric-Emmanuel Date: Thu Aug 19 21:21:37 2010 +0200 * no more methods in Hkl3D. gui/hkl-gui-3d.cpp | 4 +-- gui/hkl3d/hkl3d-gui-application.cpp | 12 +++---- hkl3d/hkl3d.cpp | 67 +++++++++++++++++++------------------ hkl3d/hkl3d.h | 11 +++--- test/hkl3d/main.cpp | 4 +-- 5 files changed, 51 insertions(+), 47 deletions(-) commit bb33e6d122a20b01777b319473493cb2158a5924 Author: Picca Frédéric-Emmanuel Date: Thu Aug 19 09:01:41 2010 +0200 * still removing hkl3d methods hkl3d/hkl3d.cpp | 22 ++++++++++++---------- hkl3d/hkl3d.h | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) commit c3b07520986c966d7e6462c0a11f667b8de4e80d Author: Picca Frédéric-Emmanuel Date: Thu Aug 19 08:50:59 2010 +0200 * remove a bunch of Hkl3D methods gui/hkl-gui-3d.cpp | 4 ++-- gui/hkl3d/hkl3d-gui-model.cpp | 11 ++++++----- hkl3d/hkl3d.cpp | 27 ++++++++++++++------------- hkl3d/hkl3d.h | 17 +++++++++-------- 4 files changed, 31 insertions(+), 28 deletions(-) commit 781ab69ea740a799d4227d1f2a40be17f2690ecb Author: Picca Frédéric-Emmanuel Date: Thu Aug 19 08:31:25 2010 +0200 * remove the hkl3d::apply_transformation hkl3d/hkl3d.cpp | 79 ++++++++++++++++++++++++++++----------------------------- hkl3d/hkl3d.h | 2 -- 2 files changed, 39 insertions(+), 42 deletions(-) commit 0bd7f57bcef4ee77b45f30ff24309caf9470a0e0 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 17:30:00 2010 +0200 * remove hkl3d::connect_all_axes gui/hkl-gui-3d.cpp | 2 +- hkl3d/hkl3d.cpp | 26 +++++++++++++------------- hkl3d/hkl3d.h | 11 ++++++++++- 3 files changed, 24 insertions(+), 15 deletions(-) commit eacbea533f76c27985107e392760220f0d8d5564 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 17:05:53 2010 +0200 * remove a method from the class hkl3d/hkl3d.cpp | 92 ++++++++++++++++++++++++++++----------------------------- hkl3d/hkl3d.h | 3 +- 2 files changed, 47 insertions(+), 48 deletions(-) commit 680ccca7c332f18f5cddcdfe6b8edd63abfc1423 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 16:58:42 2010 +0200 * remove all c++ specific keywords of the headers hkl3d/hkl3d.h | 54 +++++++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 29 deletions(-) commit 6951a991e6ac89de8ef23392132056be892fcede Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 16:00:34 2010 +0200 * no more reference c++ -> c is in good way hkl3d/hkl3d.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++------ hkl3d/hkl3d.h | 28 ++++++++++++--- 2 files changed, 118 insertions(+), 16 deletions(-) commit 050e172de3c0a5d57ed6e72365f4842154950a54 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 15:53:40 2010 +0200 * be c++ friendly hkl/hkl-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e083f53a56afa0e7f4150763cdc1d83625b129de Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 14:03:39 2010 +0200 * remove a memory leak in the load_config method hkl3d/hkl3d.cpp | 276 +++++++++++++++++++++++++++++++++----------------------- hkl3d/hkl3d.h | 2 +- 2 files changed, 163 insertions(+), 115 deletions(-) commit 5b6319afd0080c00f1b8608475e9beb756929baf Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 11:22:06 2010 +0200 * add a few test cases test/hkl3d/main.cpp | 51 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) commit 7c80d79ababe11fe5a38c9fb65366824b32ae2f6 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 11:21:17 2010 +0200 * add a few fprintf methods for the different objects hkl3d/hkl3d.cpp | 18 +++++++++++++++++- hkl3d/hkl3d.h | 6 ++++++ 2 files changed, 23 insertions(+), 1 deletion(-) commit c74b29c8c24cf5494aa4f5b1b50d8275217f3c48 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 18 11:16:42 2010 +0200 * one less vector reference gui/hkl-gui-3d.cpp | 22 +++++------ gui/hkl3d/hkl3d-gui-model.cpp | 34 ++++++++--------- hkl3d/hkl3d.cpp | 89 ++++++++++++++++++++++++++++++++++--------- hkl3d/hkl3d.h | 12 +++++- 4 files changed, 109 insertions(+), 48 deletions(-) commit f773d466c472eef723a02f3083134617ab000642 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 17:17:43 2010 +0200 * one less reference to gui/hkl-gui-3d.cpp | 4 +-- gui/hkl3d/hkl3d-gui-model.cpp | 8 +++--- hkl3d/hkl3d.cpp | 59 ++++++++++++++++++++++++++++--------------- hkl3d/hkl3d.h | 10 +++++--- 4 files changed, 50 insertions(+), 31 deletions(-) commit 4137bb2c41953db4ad3e70ad58bba590d2fb3647 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 16:46:32 2010 +0200 * still some refactoring hkl3d/hkl3d.h | 75 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 33 deletions(-) commit e81ab4a6b6659e3320c0f1f6f2a67031e7236951 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 16:28:02 2010 +0200 * doc :) hkl3d/hkl3d.h | 4 ++++ 1 file changed, 4 insertions(+) commit b7bda46bccfeecd071c83ce40f5312601ee48fc0 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 16:27:53 2010 +0200 * reorganize a bit the code hkl3d/hkl3d.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit 56766fb4cf83052c4fe09d5b854444a2005a843e Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 16:10:32 2010 +0200 * add the Hkl3DStats structure to store a few interesting values. hkl3d/hkl3d.cpp | 25 ++++++++++++++++++------- hkl3d/hkl3d.h | 17 +++++++++++++++++ 2 files changed, 35 insertions(+), 7 deletions(-) commit 5ae5aab55d37f3898e3dbad1060af0b2cddc5168 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 15:58:47 2010 +0200 * fileNameModel -> filename gui/hkl-gui-3d.cpp | 2 +- hkl3d/hkl3d.cpp | 6 +++--- hkl3d/hkl3d.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) commit 8781f8d5e9622479215cf6198775caec77e33fb0 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 14:50:18 2010 +0200 * remove more useless code hkl3d/hkl3d.h | 16 ---------------- 1 file changed, 16 deletions(-) commit 13582382ae7a2204eb234e9af191688c4012143b Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 14:42:50 2010 +0200 * remove the serialization code configure.ac | 3 - hkl3d/Makefile.am | 8 +- hkl3d/Serialize/BulletFileLoader/Makefile.am | 74 -- hkl3d/Serialize/BulletFileLoader/bChunk.cpp | 75 -- hkl3d/Serialize/BulletFileLoader/bChunk.h | 90 -- hkl3d/Serialize/BulletFileLoader/bCommon.h | 39 - hkl3d/Serialize/BulletFileLoader/bDNA.cpp | 636 ---------- hkl3d/Serialize/BulletFileLoader/bDNA.h | 110 -- hkl3d/Serialize/BulletFileLoader/bDefines.h | 140 --- hkl3d/Serialize/BulletFileLoader/bFile.cpp | 1322 -------------------- hkl3d/Serialize/BulletFileLoader/bFile.h | 153 --- hkl3d/Serialize/BulletFileLoader/btBulletFile.cpp | 384 ------ hkl3d/Serialize/BulletFileLoader/btBulletFile.h | 78 -- hkl3d/Serialize/BulletFileLoader/bullet.h | 69 - hkl3d/Serialize/BulletFileLoader/bullet_Common.h | 77 -- hkl3d/Serialize/BulletFileLoader/bullet_ListBase.h | 40 - .../BulletFileLoader/bullet_PointerArray.h | 41 - .../BulletFileLoader/bullet_btBvhSubtreeInfoData.h | 42 - .../BulletFileLoader/bullet_btCapsuleShapeData.h | 42 - .../bullet_btCollisionObjectDoubleData.h | 64 - .../bullet_btCollisionObjectFloatData.h | 63 - .../BulletFileLoader/bullet_btCollisionShapeData.h | 41 - .../bullet_btCompoundShapeChildData.h | 43 - .../BulletFileLoader/bullet_btCompoundShapeData.h | 43 - .../bullet_btConeTwistConstraintData.h | 51 - .../BulletFileLoader/bullet_btConstraintInfo1.h | 40 - .../bullet_btConvexHullShapeData.h | 44 - .../bullet_btConvexInternalShapeData.h | 45 - .../BulletFileLoader/bullet_btCylinderShapeData.h | 42 - .../bullet_btGImpactMeshShapeData.h | 46 - .../bullet_btGeneric6DofConstraintData.h | 50 - .../bullet_btHingeConstraintDoubleData.h | 53 - .../bullet_btHingeConstraintFloatData.h | 53 - .../BulletFileLoader/bullet_btIntIndexData.h | 39 - .../bullet_btMatrix3x3DoubleData.h | 40 - .../BulletFileLoader/bullet_btMatrix3x3FloatData.h | 40 - .../BulletFileLoader/bullet_btMeshPartData.h | 45 - .../bullet_btMultiSphereShapeData.h | 43 - .../bullet_btOptimizedBvhNodeDoubleData.h | 45 - .../bullet_btOptimizedBvhNodeFloatData.h | 45 - .../BulletFileLoader/bullet_btPhysicsSystem.h | 42 - .../bullet_btPoint2PointConstraintDoubleData.h | 43 - .../bullet_btPoint2PointConstraintFloatData.h | 43 - .../BulletFileLoader/bullet_btPositionAndRadius.h | 41 - .../bullet_btQuantizedBvhDoubleData.h | 51 - .../bullet_btQuantizedBvhFloatData.h | 51 - .../bullet_btQuantizedBvhNodeData.h | 41 - .../bullet_btRigidBodyDoubleData.h | 63 - .../BulletFileLoader/bullet_btRigidBodyFloatData.h | 62 - .../BulletFileLoader/bullet_btShortIntIndexData.h | 40 - .../bullet_btShortIntIndexTripletData.h | 40 - .../bullet_btSliderConstraintData.h | 49 - .../bullet_btStaticPlaneShapeData.h | 45 - .../bullet_btStridingMeshInterfaceData.h | 43 - .../bullet_btTransformDoubleData.h | 42 - .../BulletFileLoader/bullet_btTransformFloatData.h | 42 - .../BulletFileLoader/bullet_btTriangleInfoData.h | 42 - .../bullet_btTriangleInfoMapData.h | 52 - .../bullet_btTriangleMeshShapeData.h | 47 - .../bullet_btTypedConstraintData.h | 49 - .../BulletFileLoader/bullet_btVector3DoubleData.h | 39 - .../BulletFileLoader/bullet_btVector3FloatData.h | 39 - hkl3d/Serialize/BulletWorldImporter/Makefile.am | 18 - .../BulletWorldImporter/btBulletWorldImporter.cpp | 1205 ------------------ .../BulletWorldImporter/btBulletWorldImporter.h | 180 --- hkl3d/Serialize/Makefile.am | 1 - hkl3d/hkl3d.cpp | 7 +- hkl3d/hkl3d.h | 3 - 68 files changed, 6 insertions(+), 6812 deletions(-) commit e90b41ed86ba70ca7c79bfcbe890f5b0ec351169 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 14:00:02 2010 +0200 * for now restore the old diffabs model. data/diffabs.dae | 305 +++++++++++++++++++++++------------------------------- data/diffabs.yaml | 2 +- 2 files changed, 133 insertions(+), 174 deletions(-) commit 0b3bdf8e0af37b3178e888b6a066b097fb763587 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 13:31:46 2010 +0200 * update the hklGui3d to connect axes after an add_from_file call gui/hkl-gui-3d.cpp | 2 ++ hkl3d/hkl3d.cpp | 24 ++++++++++++------------ hkl3d/hkl3d.h | 1 + 3 files changed, 15 insertions(+), 12 deletions(-) commit e2d276f05b1546538ecb2098000bf57cd7ecf33a Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 13:15:04 2010 +0200 * rework the load_config, add a connect_axis method and more... Conflicts: hkl3d/hkl3d.h gui/hkl-gui-3d.cpp | 2 +- hkl3d/hkl3d.cpp | 678 +++++++++-------------------------------------------- hkl3d/hkl3d.h | 16 +- 3 files changed, 125 insertions(+), 571 deletions(-) commit 542c0c5a590e5b73bd90d1a094a4859a965dc9b4 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 13:31:06 2010 +0200 *fix the the loadConfig bug data/diffabs.yaml | 40 +++++++++++++-------------- gui/hkl3d/main.cpp | 2 -- hkl3d/hkl3d.cpp | 79 ++++++++++++++++++++++++++++++++++++++++-------------- hkl3d/hkl3d.h | 3 +++ 4 files changed, 82 insertions(+), 42 deletions(-) commit 945c741918ada8d363db1acc74d49afd8effe215 Author: Oussama Sboui Date: Wed Aug 4 10:57:53 2010 +0200 * fixe typos hkl3d/hkl3d.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b64a0f50627fe32f673a913325ed82f7d1b689d2 Author: Oussama Sboui Date: Wed Aug 4 10:56:32 2010 +0200 * add an fprintf method for the Hkl3DObject hkl3d/hkl3d.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit a6b94de0548b2e9934f0ad24f0d7a88cb27213b7 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 13:28:26 2010 +0200 * applicate name method transform Conflicts: gui/hkl3d/main.cpp gui/hkl-gui-3d.cpp | 2 +- gui/hkl3d/main.cpp | 1 - hkl3d/hkl3d.cpp | 426 +++++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 366 insertions(+), 63 deletions(-) commit 11e6324f044d7375c99db40c6c2a1e945d8a2fdd Author: Oussama Sboui Date: Tue Aug 3 11:47:45 2010 +0200 * choose suitable name for a method hkl3d/hkl3d.h | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) commit 1cba9dfecb5325df58f6350ee54de0dc2d2bfaa4 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 13:00:28 2010 +0200 * perform the config's load by using events (see load_config_model method) hkl3d/hkl3d.cpp | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- hkl3d/hkl3d.h | 1 + 2 files changed, 81 insertions(+), 1 deletion(-) commit a919de683a82bbbd2bb641a8354571174f235a64 Author: Oussama Sboui Date: Thu Jul 8 14:01:02 2010 +0200 * set the init scale to 7 and the scale min to 1 gui/hkl3d/hkl3d-gui-view.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9d93b0340f000c8328a78c0aa885d9358bcd1609 Author: Oussama Sboui Date: Thu Jul 8 13:57:52 2010 +0200 * rectify orthoView method gui/hkl3d/hkl3d-gui-scene.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 189c972f73097ad94097a6008d9f765e82b88d4e Author: Frédéric-Emmanuel PICCA Date: Tue Aug 17 11:50:57 2010 +0200 * fix the hkl3d test test/hkl3d/main.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 6aa6c9721c0f6be27c3d605447131744121700aa Author: Frédéric-Emmanuel PICCA Date: Thu Aug 12 16:54:55 2010 +0200 * correct the is colliding method. hkl3d/hkl3d.cpp | 2 +- test/hkl3d/main.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) commit 387229cffd607cad5479d5bfb8475972e3eb2aeb Author: Frédéric-Emmanuel PICCA Date: Thu Aug 12 16:54:19 2010 +0200 * remove a memory leak hkl3d/hkl3d.cpp | 2 -- 1 file changed, 2 deletions(-) commit ca3fcbd8d803cddb9670572d5748fc3329ddbac9 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 12 15:52:23 2010 +0200 * instrument the hkl3d unit test with c-tap-hadness you can find c-tap-hardness here: http://www.eyrie.org/~eagle/software/c-tap-harness/ NEWS | 1 + configure.ac | 1 + data/Makefile.am | 4 +- data/diffabs.dae | 305 +++++++------ hkl3d/hkl3d.cpp | 10 +- test/Makefile.am | 16 +- test/TESTS | 1 + test/hkl3d/Makefile.am | 19 +- test/hkl3d/main.cpp | 18 +- test/runtests.c | 1116 ++++++++++++++++++++++++++++++++++++++++++++++++ test/tap/Makefile.am | 14 + test/tap/basic.c | 484 +++++++++++++++++++++ test/tap/basic.h | 125 ++++++ test/tap/libtap.sh | 178 ++++++++ 14 files changed, 2138 insertions(+), 154 deletions(-) commit 448bf08f1ccdfe4411018f085d8b73f3dbd83bbd Author: Picca Frédéric-Emmanuel Date: Wed Aug 11 22:44:49 2010 +0200 * reduce the exposition of bullet in the hkl3d library gui/hkl3d/hkl3d-gui-model.cpp | 28 +++++++++++----------------- hkl3d/hkl3d.cpp | 33 +++++++++++++++++++++++++++++++++ hkl3d/hkl3d.h | 7 ++++++- 3 files changed, 50 insertions(+), 18 deletions(-) commit a295ce16faa1c0bee63d43ad3c5c780475495796 Author: Picca Frédéric-Emmanuel Date: Fri Aug 6 22:26:51 2010 +0200 * doc hkl/hkl-unit.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 4224d2f341d8b34f08ed7204f6671fc8d66411c7 Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 17:46:47 2010 +0200 * bugs bugs/issue-80f8e725bce85678418b7d3601247605d2162982.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit b50ca091026fbdf32f9e61aea2c710e57fd4c764 Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 17:43:52 2010 +0200 * update the author list AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6d7130c6c24acf29c10be49105261741fbb87fca Author: Picca Frédéric-Emmanuel Date: Wed Aug 4 17:40:02 2010 +0200 * bugs ...ue-80f8e725bce85678418b7d3601247605d2162982.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit e688947e216336ab5b38b312b038d6886b0b3fd7 Author: Picca Frédéric-Emmanuel Date: Fri Jul 30 21:47:45 2010 +0200 * put the right figure names Documentation/figures/{3S+1D_pov.pov => 3S+1D.pov} | 0 Documentation/figures/{4S+2D_pov.pov => 4S+2D.pov} | 0 ...+2D_reciproque_pov.pov => 4S+2D_reciproque.pov} | 0 ...D_reciproque2_pov.pov => 4S+2D_reciproque2.pov} | 0 ...D_reciproque3_pov.pov => 4S+2D_reciproque3.pov} | 0 ...D_reciproque4_pov.pov => 4S+2D_reciproque4.pov} | 0 Documentation/figures/Makefile.am | 24 +++++++++++----------- Documentation/hkl.lyx | 14 ++++++------- 8 files changed, 19 insertions(+), 19 deletions(-) commit 35f3a106aa2e1cb6cb60eca4b2f15e1619272748 Author: Picca Frédéric-Emmanuel Date: Mon Aug 9 22:40:22 2010 +0200 * work in progress gui/ghkl-callbacks.c | 98 +++++----- gui/ghkl.c | 517 ++++++++++++++++++++++++++++++-------------------- gui/ghkl.h | 16 +- gui/pseudoaxesframe.c | 1 + 4 files changed, 372 insertions(+), 260 deletions(-) commit 59f03f1629eada7ada70a45e4a76d4d2685f3805 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 3 17:27:37 2010 +0200 * start to implemente a generic freecad diffractometer generator Documentation/figures/diffractometers.py | 157 +++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) commit 714bf39a6cd7efae95bd5f4bfcfb692672cf61c5 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 3 16:21:36 2010 +0200 * add more freecad figures Documentation/figures/B_a.py | 43 +++++++++++++++++++++++++++++++++++++++++++ Documentation/figures/B_b.py | 25 +++++++++++++++++++++++++ 2 files changed, 68 insertions(+) commit 4a3d5f307f31ddd223977c1aa53da3204a446dee Author: Frédéric-Emmanuel PICCA Date: Tue Aug 3 15:06:20 2010 +0200 * switch from FCMcro to .py Documentation/figures/crystal.FCMacro | 76 ----------------------------------- Documentation/figures/crystal.py | 36 +++++++++++++++++ 2 files changed, 36 insertions(+), 76 deletions(-) commit d16830f31c8dbc349b3071fdb46fbc068f1fb395 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 2 17:55:28 2010 +0200 * still working on the FreeCAD transition. .../figures/{arrows.FCMacro => arrows.py} | 16 +++-- Documentation/figures/bravais.py | 35 ++++++++++ Documentation/figures/crystal.FCMacro | 76 ++++++++++++++++++++++ 3 files changed, 120 insertions(+), 7 deletions(-) commit 1a4f65672108c7684d98202f65c3064f08d42258 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 2 16:19:28 2010 +0200 * start to translate the povray scripts in freecad Macros (python) this way it will be possible to use the freecad 3D models for the anticollision system, I will use also thoses macros to generate screenshoot for the documentation. Documentation/figures/arrows.FCMacro | 112 +++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) commit 487e5de9f1d066d1335c886eed153e1f5ab8b17a Author: Frédéric-Emmanuel PICCA Date: Fri Jul 30 18:19:41 2010 +0200 * set up properly the camera instead of defining a, b, c Documentation/figures/test.pov | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) commit 5671ced4cd25ca5e476474fd82b3d9423c73cd37 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 30 18:09:56 2010 +0200 * define the soleil coordinates a = -x b = -z c = y Signed-off-by: Frédéric-Emmanuel PICCA Documentation/figures/test.pov | 42 ++++++++++++++---------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) commit a1a059d8a6f79c5529d9e083c0a192a967641716 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 30 17:24:47 2010 +0200 * add the povray figures and the begining of a Makefile.am rules Documentation/Makefile.am | 2 +- Documentation/figures/3S+1D_pov.pov | 164 +++++++++++++++++++++ Documentation/figures/4S+2D_pov.pov | 187 ++++++++++++++++++++++++ Documentation/figures/4S+2D_reciproque2_pov.pov | 100 +++++++++++++ Documentation/figures/4S+2D_reciproque3_pov.pov | 112 ++++++++++++++ Documentation/figures/4S+2D_reciproque4_pov.pov | 127 ++++++++++++++++ Documentation/figures/4S+2D_reciproque_pov.pov | 101 +++++++++++++ Documentation/figures/B_a.pov | 73 +++++++++ Documentation/figures/B_b.pov | 58 ++++++++ Documentation/figures/B_b3_y.pov | 72 +++++++++ Documentation/figures/Makefile.am | 31 ++++ Documentation/figures/arrows.inc | 139 ++++++++++++++++++ Documentation/figures/bravais.inc | 35 +++++ Documentation/figures/cristal.ini | 8 + Documentation/figures/cristal.pov | 72 +++++++++ Documentation/figures/test.pov | 43 ++++++ configure.ac | 4 + 17 files changed, 1327 insertions(+), 1 deletion(-) commit 8fe4b115a063b423e2b69d1c827fbea72a1b2c75 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 30 17:23:12 2010 +0200 * use ditz to keep the bug list in a human readable format. ...e-66160af59e044b15e5d662aa382c2805d516d7d2.yaml | 22 ++++++++++++++++++++++ bugs/project.yaml | 12 ++++++++++++ 2 files changed, 34 insertions(+) commit cdcc17584183d23ba49cd14f43b10d1c5bcdd68d Author: Frédéric-Emmanuel PICCA Date: Tue Jul 27 09:26:36 2010 +0200 * update the NEWS file NEWS | 1 + 1 file changed, 1 insertion(+) commit 72db6d701fac9730606032ee19f67a4cc9279913 Author: Frédéric-Emmanuel PICCA Date: Mon Jul 26 11:26:03 2010 +0200 * update the documentation to reflect the new HklGeometryConfig. Documentation/hkl.texi | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit e6488ff1a793cfec0ba2a05dd4dfbc584c64ecb2 Author: Picca Frédéric-Emmanuel Date: Sat Jul 24 22:07:05 2010 +0200 * add the Eulerian 4 circles horizontal geometry refactor also the eulerian 4 circles vertical to use the same code for vertical and horizontal. Documentation/hkl.texi | 101 ++++++++++++++++++++- hkl/Makefile.am | 6 +- hkl/hkl-geometry-factory.c | 18 ++++ hkl/hkl-geometry-factory.h | 1 + hkl/hkl-geometry.h | 3 +- hkl/hkl-pseudoaxis-common-q.c | 13 +-- ...udoaxis-e4cv-hkl.c => hkl-pseudoaxis-e4c-hkl.c} | 4 +- ...udoaxis-e4cv-psi.c => hkl-pseudoaxis-e4c-psi.c} | 4 +- ...{hkl-pseudoaxis-e4cv.h => hkl-pseudoaxis-e4c.h} | 10 +- hkl/hkl-pseudoaxis-factory.c | 7 +- test/hkl/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl/hkl-test-pseudoaxis.c | 12 ++- 12 files changed, 151 insertions(+), 30 deletions(-) commit 3271a5ed2d5368f09c780c5d5b3fe10447947b09 Author: Frédéric-Emmanuel PICCA Date: Wed Jul 7 10:29:19 2010 +0200 * real select comportement. we must unselect all configs's objects. gui/hkl-gui-3d.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit 309163a0c24d4005ed53edc30dc188db71378e65 Author: Frédéric-Emmanuel PICCA Date: Wed Jul 7 10:18:53 2010 +0200 * fix the hide when an object was selected. do not show an hidden selected object. gui/hkl3d/hkl3d-gui-model.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d7eb663d16e8736f8ae4574893d5b0913cf979e0 Author: Frédéric-Emmanuel PICCA Date: Wed Jul 7 10:18:26 2010 +0200 * fix the build of ghkl to relinkg if a depending library was modify. use the _LDADD for this purpose. gui/Makefile.am | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 1bce817ac3edf29e1ceca2e974f7cbb1f93b4e24 Author: Frédéric-Emmanuel PICCA Date: Wed Jul 7 10:17:47 2010 +0200 *use the highlight mode in ghkl gui/hkl-gui-3d.cpp | 30 +++++++++++++++++++++++++++++- gui/hkl-gui-3d.h | 1 + 2 files changed, 30 insertions(+), 1 deletion(-) commit ce35c4a4d383886cc03dec34b427ba73a773af22 Author: Oussama Sboui Date: Tue Jul 6 18:20:44 2010 +0200 * first highlight version gui/hkl3d/hkl3d-gui-model.cpp | 93 +++++++++++++++++++++++++++++++++++++++---- gui/hkl3d/hkl3d-gui-model.h | 8 ++-- hkl3d/hkl3d.cpp | 1 + hkl3d/hkl3d.h | 1 + 4 files changed, 92 insertions(+), 11 deletions(-) commit 323bffef0b8d3545bf069b8b162a664e8592b495 Author: Frédéric-Emmanuel PICCA Date: Tue Jul 6 12:09:51 2010 +0200 * do not save the config file (not yet ready) data/cristal4C.yaml | 114 ++++++++++++++++++++++++++-------------------------- gui/hkl-gui-3d.cpp | 4 +- 2 files changed, 59 insertions(+), 59 deletions(-) commit 6ac0d6ccd894eb4ce868ee68b0cd5fdd59ac0256 Author: Frédéric-Emmanuel PICCA Date: Mon Jul 5 16:21:32 2010 +0200 * save the config file each time a modification is done. gui/hkl-gui-3d.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 06d54e2cdca89afeadcc4316fa5b9d58809029f8 Author: Frédéric-Emmanuel PICCA Date: Mon Jul 5 16:20:50 2010 +0200 * save the config filename in the hkl3d structure. hkl3d/hkl3d.cpp | 39 +++++++++++++++++++++++++-------------- hkl3d/hkl3d.h | 1 + 2 files changed, 26 insertions(+), 14 deletions(-) commit 85b06ef9d57f583a884b600ce6ec59cc2d29833a Author: Picca Frédéric-Emmanuel Date: Sun Jul 4 23:15:52 2010 +0200 * still working on the C++ -> C conversion gui/ghkl-callbacks.c | 1565 ++++++++++++++++++++++++++++---------------------- gui/ghkl-callbacks.h | 243 +++++--- gui/ghkl.c | 763 +++++++++++++++--------- gui/ghkl.h | 146 +++-- 4 files changed, 1616 insertions(+), 1101 deletions(-) commit dc668d9829bedede5677230313cf520ebcb931b0 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 2 14:17:47 2010 +0200 * now we can hide all models from a file model at once. gui/hkl-gui-3d.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit 41f24839ea99715b907f2ff986d30882cf064913 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 2 12:31:29 2010 +0200 * now we can add pieces from the ghkl interface gui/3d.ui | 138 +++++++++++++++++++++++++++++++++++++++++++++-------- gui/hkl-gui-3d.cpp | 46 ++++++++++++++++++ gui/hkl-gui-3d.h | 9 ++++ 3 files changed, 174 insertions(+), 19 deletions(-) commit eca2dc9e68a1a79561a78b0ef827a88b939f581d Author: Frédéric-Emmanuel PICCA Date: Fri Jul 2 11:59:57 2010 +0200 * no more segfault when adding a model file. hkl3d/hkl3d.cpp | 3 ++- hkl3d/hkl3d.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) commit c4b62a8770524c54f5258346a6c0d1cbeda4ef64 Author: Frédéric-Emmanuel PICCA Date: Fri Jul 2 08:58:49 2010 +0200 * fix a crash when we can not read the 3d model file. hkl3d/hkl3d.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) commit 6cbcfcd8af8787fc1a56796b6e2c1acbd8da86fb Author: Picca Frédéric-Emmanuel Date: Thu Jul 1 23:32:15 2010 +0200 * work in progress gui/ghkl-callbacks.c | 661 +++++++++++++++++++++++++++++---------------------- gui/ghkl-callbacks.h | 80 +++++-- 2 files changed, 436 insertions(+), 305 deletions(-) commit f51567e641a3349e64f9ab5147e7d9e906652f67 Author: Frédéric-Emmanuel PICCA Date: Thu Jul 1 15:12:57 2010 +0200 * create an Hkl3D::hide_object method. gui/hkl-gui-3d.cpp | 2 +- gui/hkl3d/hkl3d-gui-model.cpp | 3 --- hkl3d/hkl3d.cpp | 58 +++++++++++++++++++------------------------ hkl3d/hkl3d.h | 2 +- 4 files changed, 27 insertions(+), 38 deletions(-) commit 8e1256fce5718509126c89be8f915caeee6a1498 Author: Oussama Sboui Date: Fri Jun 25 13:55:31 2010 +0100 *rectify mistakes in orthoview method Conflicts: TODO gui/ghkl3d/hkl3d-gui-model.cpp gui/hkl3d/hkl3d-gui-scene.cpp gui/hkl3d/hkl3d-gui-scene.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 73081127557518da2d6e90e95756512cdf86239d Author: Oussama Sboui Date: Fri Jun 25 10:46:38 2010 +0200 *add the zoom mouse scroll gui/hkl3d/hkl3d-gui-scene.cpp | 2 ++ gui/hkl3d/hkl3d-gui-view.cpp | 28 ++++++++++++++++++++++++++++ gui/hkl3d/hkl3d-gui-view.h | 1 + 3 files changed, 31 insertions(+) commit 17aa5f7c479c6eb71cdbdf838d6cea1c4e2d3633 Author: Oussama Sboui Date: Fri Jun 25 09:58:17 2010 +0200 *add translation view gui/hkl3d/hkl3d-gui-view.cpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) commit 0709bb42492e7afe4a88e269d5e107689dd41747 Author: Oussama Sboui Date: Wed Jun 23 17:11:40 2010 +0100 * add orth view Conflicts: gui/ghkl3d/hkl3d-gui-model.cpp gui/ghkl3d/main.cpp gui/hkl3d/hkl3d-gui-model.h gui/hkl3d/hkl3d-gui-model.cpp | 6 ++++-- gui/hkl3d/hkl3d-gui-model.h | 4 +++- gui/hkl3d/hkl3d-gui-scene.cpp | 21 ++++++++++++++++++--- gui/hkl3d/hkl3d-gui-scene.h | 3 ++- gui/hkl3d/hkl3d-gui-view.cpp | 9 +++++++++ gui/hkl3d/hkl3d-gui-view.h | 2 +- 6 files changed, 37 insertions(+), 8 deletions(-) commit 2f8785c760d689223e0d7cea9efdad73559c9d28 Author: Picca Frédéric-Emmanuel Date: Sun Jun 27 13:10:00 2010 +0200 * start to implement the pseudo axes frames. gui/ghkl.c | 66 +++++++++++++++++++++++++++++++++++++------------------------- gui/ghkl.h | 3 ++- 2 files changed, 41 insertions(+), 28 deletions(-) commit b60f3bfd604028ba4415f9bbaded3469401d5404 Author: Picca Frédéric-Emmanuel Date: Sun Jun 27 13:09:28 2010 +0200 * add the signals gui/ghkl.c | 265 +++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 151 insertions(+), 114 deletions(-) commit d26d5adee35888aade6fb6ba1fb1ea72d32c371c Author: Picca Frédéric-Emmanuel Date: Sun Jun 27 12:43:57 2010 +0200 * put all the ghkl.h callbacks in their own file ghkl-callbacks.h gui/ghkl-callbacks.h | 102 ++++++++++++++++++++++++++++++++++++++ gui/ghkl.c | 1 + gui/ghkl.h | 135 +++++++++++---------------------------------------- 3 files changed, 132 insertions(+), 106 deletions(-) commit bc038ed8003dc9947ecbbac085dc7767a294d5ee Author: Picca Frédéric-Emmanuel Date: Sat Jun 26 15:46:11 2010 +0200 * work in progress configure.ac | 6 +- gui/Makefile.am | 18 +- gui/ghkl-callbacks.c | 962 +++++++++++++++++++++++++++++++++++++++++++++++ gui/ghkl-callbacks.cpp | 962 ----------------------------------------------- gui/{ghkl.cpp => ghkl.c} | 329 +++++++++------- gui/ghkl.h | 433 +++++++++++---------- gui/ghkl.vala | 32 ++ gui/{main.cpp => main.c} | 14 +- gui/pseudoaxesframe.c | 233 ++++++++++++ gui/pseudoaxesframe.cpp | 202 ---------- gui/pseudoaxesframe.h | 90 +---- 11 files changed, 1674 insertions(+), 1607 deletions(-) commit 2ad80d55f7a924d3977c6145100b505735495dc5 Author: Picca Frédéric-Emmanuel Date: Sat Jun 26 11:33:07 2010 +0200 * increase the timeout. need to figure out why I need to increase it all the time depending on the computer. gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b96a7591db6db9e0ca8b52d91e75759753cff6b7 Author: Picca Frédéric-Emmanuel Date: Sat Jun 26 11:32:11 2010 +0200 * add the Treeview for the configuration. now we can select pieces one by one. gui/3d.ui | 70 ++++++++++++++++++++++++++++++++++++++++++++---------- gui/hkl-gui-3d.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++---- gui/hkl-gui-3d.h | 24 +++++++------------ 3 files changed, 128 insertions(+), 32 deletions(-) commit 9619c50069ec0d667b98357b9c98190f6c514f36 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 23 11:18:54 2010 +0200 * start to implement a dedicated 3d view with it's own .ui file gui/3d.ui | 45 ++++++++++++++++++++++ gui/Makefile.am | 22 ++++++----- gui/hkl-gui-3d.cpp | 74 +++++++++++++++++++++++++++++++++++ gui/hkl-gui-3d.h | 89 +++++++++++++++++++++++++++++++++++++++++++ gui/hkl-gui-callbacks.cpp | 30 +++++++-------- gui/hkl-gui.cpp | 13 ++----- gui/hkl-gui.h | 6 +-- gui/hkl3d/hkl3d-gui-scene.cpp | 2 +- 8 files changed, 243 insertions(+), 38 deletions(-) commit 0ce5ef58537fcaabee3acace86d740e90921486b Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 16:52:54 2010 +0200 * only indentation gui/hkl3d/GL_ShapeDrawer.cpp | 869 +++++++++++++++++-------------------------- gui/hkl3d/GL_ShapeDrawer.h | 98 +++-- 2 files changed, 413 insertions(+), 554 deletions(-) commit 551f7cad89520ed096587f7f910eaae76d156616 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 16:10:11 2010 +0200 * remove plenty of useless code. configure.ac | 1 - gui/Makefile.am | 2 +- gui/OpenGL/DebugCastResult.h | 88 --- gui/OpenGL/DemoApplication.cpp | 1316 --------------------------------- gui/OpenGL/DemoApplication.h | 246 ------ gui/OpenGL/GLDebugDrawer.cpp | 140 ---- gui/OpenGL/GLDebugDrawer.h | 38 - gui/OpenGL/GLDebugFont.cpp | 987 ------------------------- gui/OpenGL/GLDebugFont.h | 27 - gui/OpenGL/GL_DialogDynamicsWorld.cpp | 739 ------------------ gui/OpenGL/GL_DialogDynamicsWorld.h | 91 --- gui/OpenGL/GL_DialogWindow.cpp | 336 --------- gui/OpenGL/GL_DialogWindow.h | 283 ------- gui/OpenGL/GL_ShapeDrawer.cpp | 985 ------------------------ gui/OpenGL/GL_ShapeDrawer.h | 70 -- gui/OpenGL/GL_Simplex1to4.cpp | 73 -- gui/OpenGL/GL_Simplex1to4.h | 40 - gui/OpenGL/GlutDemoApplication.cpp | 71 -- gui/OpenGL/GlutDemoApplication.h | 34 - gui/OpenGL/GlutStuff.cpp | 109 --- gui/OpenGL/GlutStuff.h | 84 --- gui/OpenGL/Makefile.am | 33 - gui/OpenGL/RenderTexture.cpp | 86 --- gui/OpenGL/RenderTexture.h | 73 -- gui/OpenGL/Win32AppMain.cpp | 402 ---------- gui/OpenGL/Win32DemoApplication.cpp | 79 -- gui/OpenGL/Win32DemoApplication.h | 40 - 27 files changed, 1 insertion(+), 6472 deletions(-) commit 70a654a7d8038c8e5890f8716eadbde9a5df3c98 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 16:08:21 2010 +0200 * remove a reference to libbulletdynamics in the hkl3d-gui part. bullet dynamic is still necessary due to the GL_shapeDrawer. gui/Makefile.am | 1 + gui/hkl3d/Makefile.am | 3 ++- gui/hkl3d/hkl3d-gui-model.cpp | 10 +++++----- 3 files changed, 8 insertions(+), 6 deletions(-) commit 906c5a5b1b9e6bc833a160c3c1d740c1f7f67879 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 15:20:40 2010 +0200 * prepare for the OpenGL (libbulletopenglsupport) supression. gui/hkl3d/GL_ShapeDrawer.cpp | 972 +++++++++++++++++++++++++++++++++++++++++++ gui/hkl3d/GL_ShapeDrawer.h | 86 ++++ gui/hkl3d/Makefile.am | 6 +- 3 files changed, 1061 insertions(+), 3 deletions(-) commit 89e42c2255400866d7f407784e7bfe0bc25ac12d Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 14:59:12 2010 +0200 * typo gui/hkl3d/hkl3d-gui-model.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit c0ac8d254a917ebd8068575e2ad8890369ba8510 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 14:59:07 2010 +0200 * remove the GLDebugDrawer dependency. gui/hkl3d/hkl3d-gui-model.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit a8e95580bd9e3661fe2ad63c589a1894ff3a907f Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 14:39:47 2010 +0200 * prepare for removing of the GLDebug code. gui/hkl3d/hkl3d-gui-model.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ gui/hkl3d/hkl3d-gui-model.h | 6 ++++++ 2 files changed, 49 insertions(+) commit 87527ef7d4a1f7d071f47d06942d316f790782e9 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 11:03:22 2010 +0200 * remove an useless dependency gui/hkl3d/hkl3d-gui-model.cpp | 4 ---- 1 file changed, 4 deletions(-) commit a8fad9a8f92bbc61beb5e438c1bb35dfb79ff138 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 10:48:17 2010 +0200 * remove another bunch of useless method from hkl3d-gui-model gui/hkl3d/hkl3d-gui-model.cpp | 15 ++++++--------- gui/hkl3d/hkl3d-gui-model.h | 45 +++++-------------------------------------- gui/hkl3d/hkl3d-gui-scene.cpp | 24 ++++++++++------------- gui/hkl3d/hkl3d-gui-scene.h | 6 +++--- 4 files changed, 24 insertions(+), 66 deletions(-) commit 82b87b205d3909f30d6d32de49f5c47fcf972654 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 10:29:20 2010 +0200 * now Hkl3D::_btWorld can becomes private. hkl3d/hkl3d.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a81516c1e8599157ed9ddad8f113711c49fee3f8 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 10:23:41 2010 +0200 * remoce the home made draw_sphere method in favor of the GL_ShapeDrawer. gui/hkl3d/hkl3d-gui-model.cpp | 34 ++-------------------------------- gui/hkl3d/hkl3d-gui-model.h | 1 - 2 files changed, 2 insertions(+), 33 deletions(-) commit 034b7831e212769cd54e813fc16056e5b3b5cd79 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 10:11:14 2010 +0200 * remove the GlutDemoApplication dependency gui/hkl3d/hkl3d-gui-model.cpp | 20 +++++++------------- gui/hkl3d/hkl3d-gui-model.h | 13 +++++-------- 2 files changed, 12 insertions(+), 21 deletions(-) commit d6773ec4f6279441247ebf5ef8d7416b9a3e5b7b Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 09:42:52 2010 +0200 * rename a bunch of methods. gui/hkl3d/hkl3d-gui-model.cpp | 24 ++++++++++++------------ gui/hkl3d/hkl3d-gui-model.h | 11 ++++++----- 2 files changed, 18 insertions(+), 17 deletions(-) commit 90efbe57ce2a3f230b5290f330e687d5d4febc1a Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 09:31:10 2010 +0200 * remove useless code. gui/hkl3d/hkl3d-gui-model.h | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) commit ddf76bf4d214e00be28f91b9a5af8fcda2993bcd Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 09:22:54 2010 +0200 * create the DrawingTools only once. gui/hkl3d/hkl3d-gui-model.cpp | 3 ++- gui/hkl3d/hkl3d-gui-model.h | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) commit 5bc3f13c944b920a65f12545a7a9aec80b4b02bc Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 09:11:35 2010 +0200 * small optimization call update_objects_visibility only once. gui/hkl3d/hkl3d-gui-model.cpp | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) commit b4fb3b404186c6184e233f3d03a684c113d65cf9 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 09:11:06 2010 +0200 * typo gui/hkl3d/hkl3d-gui-model.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) commit e4d46bd2b60b92aad9141dafe6cdd99037223f51 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 08:52:16 2010 +0200 * rename update_object_visibility_in_world -> update_objects_visibility now update all the object visibility in the Hkl3D class it simplify a bit the hkl3d-model code. gui/hkl3d/hkl3d-gui-model.cpp | 6 ++---- hkl3d/hkl3d.cpp | 38 +++++++++++++++++++++++--------------- hkl3d/hkl3d.h | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) commit 982dc8ea17564b30427a999ab85b887d55812afd Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 08:35:48 2010 +0200 * typo gui/hkl3d/hkl3d-gui-model.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit 7d4e51370e78a4e3b42ad0deac08aa7a6110c3d5 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 22 08:35:41 2010 +0200 * use the Hkl3D::update_object_visibility_in_world gui/hkl3d/hkl3d-gui-model.cpp | 45 ++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) commit b7f3b7789b2a404752617c3a8ae15f3719fc2c82 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 21 09:30:31 2010 +0200 * add a method to update the visibility of an hkl3dObject in the world hkl3d/hkl3d.cpp | 25 +++++++++++++++++++++++++ hkl3d/hkl3d.h | 1 + 2 files changed, 26 insertions(+) commit b390aac4e858dd164e9c26103f6e91706ee2cf69 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 21 09:11:00 2010 +0200 * more work to push Hkl3D::_btWorld to a private area. gui/hkl3d/hkl3d-gui-model.cpp | 6 ++---- hkl3d/hkl3d.cpp | 12 ++++++++++++ hkl3d/hkl3d.h | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) commit e0257c7e08773b04efd63f795016989b9ca3fce9 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 13:00:15 2010 +0200 * typo gui/hkl3d/hkl3d-gui-model.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit a5b3dcac159a10e616099a30ee5cae344045ecb6 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:56:31 2010 +0200 * remove useless code gui/hkl3d/hkl3d-gui-model.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) commit d129853e714941ca685dbec36490b46645db3d41 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:39:53 2010 +0200 * rename Hkl3D.._hkl3dConfigs -> configs gui/hkl3d/hkl3d-gui-model.cpp | 58 +++++++++++++++++++++---------------------- hkl3d/hkl3d.cpp | 34 ++++++++++++------------- hkl3d/hkl3d.h | 2 +- 3 files changed, 47 insertions(+), 47 deletions(-) commit b6067239a860d10437f313d09897a77c46b26328 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:27:42 2010 +0200 rename Hkl3d::_geometry -> geometry gui/hkl3d/hkl3d-gui-application.cpp | 36 ++++++++++++++++++------------------ hkl3d/hkl3d.cpp | 12 ++++++------ hkl3d/hkl3d.h | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) commit e59beb5270e256cd286dcbb0b80f95d8f67efdcd Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:19:11 2010 +0200 * rename _model -> model (public member) gui/hkl3d/hkl3d-gui-model.cpp | 2 +- hkl3d/hkl3d.cpp | 8 ++++---- hkl3d/hkl3d.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) commit 93d6ca999444d7c342ba6e41b59922c9e9c163d1 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:10:56 2010 +0200 * no more bullet members exposed from hkl3d.h next step will be to do the same for g3d. hkl3d/hkl3d.cpp | 9 ++++++--- hkl3d/hkl3d.h | 10 +++------- test/hkl3d/Makefile.am | 5 ++--- 3 files changed, 11 insertions(+), 13 deletions(-) commit d077821dd67d28eb95d3755b7dd8fdd240354d92 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 12:09:54 2010 +0200 * fix the hkl3d test test/hkl3d/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9bf1de2444d2870e48a254e572bd64d9089edd9e Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 00:57:52 2010 +0200 * typo hkl3d/hkl3d.cpp | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) commit 41a3772412ed4d43ea11ce40ab162d44259c9f42 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 00:46:55 2010 +0200 * indentation hkl3d/hkl3d.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit f36fe81dbd0a6f5a2e815c8006be7dceb14b5a68 Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 00:45:57 2010 +0200 * simplify the callback hkl3d/hkl3d.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) commit 1048ea358248e7e23b08cb84c950c97264f9d9aa Author: Picca Frédéric-Emmanuel Date: Sun Jun 20 00:37:06 2010 +0200 * move the static part on top of the file and the serialized at the end hkl3d/hkl3d.cpp | 326 ++++++++++++++++++++++++++++---------------------------- hkl3d/hkl3d.h | 8 +- 2 files changed, 171 insertions(+), 163 deletions(-) commit 45f0eb3cc2e7a9a1532679ef0652183da2a56d1c Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:57:21 2010 +0200 * more rename hkl3d/hkl3d.cpp | 6 +++--- hkl3d/hkl3d.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) commit 7e0ae05a879882aa532889b8c5e9623d0a59591a Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:52:24 2010 +0200 * one more rename hkl3d/hkl3d.cpp | 4 ++-- hkl3d/hkl3d.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) commit f928a77189d3fa2fdfce5dd8f740709dac73d486 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:43:05 2010 +0200 * more renames gui/hkl3d/hkl3d-gui-model.cpp | 26 +++++++++++++------------- hkl3d/hkl3d.cpp | 22 +++++++++++----------- hkl3d/hkl3d.h | 17 +++++++++-------- 3 files changed, 33 insertions(+), 32 deletions(-) commit 9980e76c9c43fa23cb74ca553acbfd24fa6e7999 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:22:08 2010 +0200 * move initHkl3D to private and rename hkl3d/hkl3d.cpp | 4 ++-- hkl3d/hkl3d.h | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) commit 7b1a51fc5ca87721d4db457081802b26fc5a9221 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:15:16 2010 +0200 * more rename gui/hkl3d/hkl3d-gui-model.cpp | 12 ++++++------ hkl3d/hkl3d.cpp | 8 ++++---- hkl3d/hkl3d.h | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) commit 4f5803c4f9fbfa2cc1f6493cfeec2ef746a8286c Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 23:06:30 2010 +0200 * more rename gui/hkl3d/hkl3d-gui-model.cpp | 20 ++++++++++---------- hkl3d/hkl3d.cpp | 18 +++++++++--------- hkl3d/hkl3d.h | 6 +++--- 3 files changed, 22 insertions(+), 22 deletions(-) commit 13076f8c85f2029812ba0c5ed64822bf84cf2014 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 22:57:03 2010 +0200 * rename the Hkl3DConfig::hkl3dObjects -> objects gui/hkl3d/hkl3d-gui-model.cpp | 50 +++++++++---------- hkl3d/hkl3d.cpp | 113 ++++++++++++++++++++++++++---------------- hkl3d/hkl3d.h | 4 +- 3 files changed, 96 insertions(+), 71 deletions(-) commit 5d4bf6cbcfcdaab4988cfc9cd9c9443dd61c7329 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 22:01:31 2010 +0200 * only typo hkl3d/hkl3d.cpp | 105 ++++++++++++++++++++++++++++++-------------------------- hkl3d/hkl3d.h | 30 ++++++++-------- 2 files changed, 72 insertions(+), 63 deletions(-) commit b1b22edaf5e51e68ad368ce865a671c082aae432 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 21:44:27 2010 +0200 * remove useless constructor hkl3d/hkl3d.cpp | 6 ------ hkl3d/hkl3d.h | 1 - 2 files changed, 7 deletions(-) commit 8c5054e2b3df89238d08a62516a1830163e5821c Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 21:32:26 2010 +0200 * use autoscan to update the configure.ac file configure.ac | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) commit 434a7f4aa49f46475976f5c14146d9468d352d12 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 20:54:20 2010 +0200 * update the README add a few dependencies README | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 2267e369e2bc6d2c520a113e482a18978cd30302 Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 20:31:33 2010 +0200 * remove the DiffabsDemo useless files configure.ac | 1 - gui/DiffabsDemo/DiffabsDemo.cpp | 217 ---------------------------------------- gui/DiffabsDemo/DiffabsDemo.h | 75 -------------- gui/DiffabsDemo/Makefile.am | 34 ------- gui/DiffabsDemo/main.cpp | 50 --------- gui/Makefile.am | 2 +- 6 files changed, 1 insertion(+), 378 deletions(-) commit 1eb65c0534c649c3cb88414d88f5383100a5965c Author: Picca Frédéric-Emmanuel Date: Sat Jun 19 10:25:30 2010 +0200 reorganize a bit the ghkl code .gitignore | 18 ++++++++++++++++++ configure.ac | 2 +- gui/Makefile.am | 18 +++++++++--------- gui/{ghkl-callbacks.cpp => hkl-gui-callbacks.cpp} | 2 +- gui/{modelcolumns.h => hkl-gui-modelcolumns.h} | 0 gui/{pseudoaxesframe.cpp => hkl-gui-pseudoaxes.cpp} | 2 +- gui/{pseudoaxesframe.h => hkl-gui-pseudoaxes.h} | 0 gui/{ghkl.cpp => hkl-gui.cpp} | 2 +- gui/{ghkl.h => hkl-gui.h} | 4 ++-- gui/{ghkl3d => hkl3d}/Makefile.am | 0 gui/{ghkl3d => hkl3d}/ghkl3d.ui | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-application.cpp | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-application.h | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-gl.c | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-gl.h | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-model.cpp | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-model.h | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-scene.cpp | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-scene.h | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-view.cpp | 0 gui/{ghkl3d => hkl3d}/hkl3d-gui-view.h | 0 gui/{ghkl3d => hkl3d}/main.cpp | 0 gui/{ghkl3d => hkl3d}/texture.c | 0 gui/{ghkl3d => hkl3d}/texture.h | 0 gui/{ghkl3d => hkl3d}/trackball.c | 0 gui/{ghkl3d => hkl3d}/trackball.h | 0 gui/main.cpp | 2 +- 27 files changed, 34 insertions(+), 16 deletions(-) commit 1ef22172550e5383c461a30e0a9e2e455c9cdff3 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 18 13:55:21 2010 +0200 correct the diffabs.yaml config file. data/diffabs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b8259f1a807cb13edbfe5d16ed36158a3658b8cd Merge: 6869615a 7cf255f8 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 18 13:48:03 2010 +0200 Merge branch 'next' of ssh://dent-de-scie/home/oussama/hkl into next Conflicts: TODO configure.ac hkl3d/hkl3d.cpp commit 6869615a2cfafc473fb27c862792c0e6bf8ab9dc Author: Frédéric-Emmanuel PICCA Date: Fri Jun 18 08:23:41 2010 +0200 correct the --enable-hkl3d default [true] configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7cf255f897133ec009fde369be6ef365979ffb0e Author: Oussama Sboui Date: Thu Jun 17 15:52:28 2010 +0200 * replace the LogoModel namespace by something else. TODO | 3 +-- gui/ghkl3d/hkl3d-gui-application.cpp | 4 +-- gui/ghkl3d/hkl3d-gui-application.h | 4 +-- gui/ghkl3d/hkl3d-gui-model.cpp | 50 ++++++++++++++++++------------------ gui/ghkl3d/hkl3d-gui-model.h | 30 ++++++++++------------ gui/ghkl3d/hkl3d-gui-scene.cpp | 4 +-- gui/ghkl3d/hkl3d-gui-scene.h | 6 ++--- gui/ghkl3d/hkl3d-gui-view.cpp | 4 +-- gui/ghkl3d/hkl3d-gui-view.h | 4 +-- gui/ghkl3d/main.cpp | 2 +- 10 files changed, 53 insertions(+), 58 deletions(-) commit d754f059ae8b48abc5355f32a4e2b1233a70a9bd Author: Oussama Sboui Date: Thu Jun 17 14:08:42 2010 +0200 all removed TODO's * REMOVE std::vector _hkl3dObjects from the Hkl3D class * put ifdef for Serialization in the Hkl3D::loadModelInCollisionWorld * verification that G3DContex in Hkl3D::addFromFile do not leak. * remove the isModelFilecompatible. * split loadModelInCollisionWorld -> - convertion de G3DObject -> Bullet - create the Hkl3DObject from G3DModel and bullet. - update the collision world. - bullet serialization * why this hide problem with the base ? * can we remove the AddedInWorldCollision <-> !hide ??? * how to move from drawModel/Bullet the world collision update ? TODO | 16 +- gui/DiffabsDemo/DiffabsDemo.cpp | 31 +- gui/ghkl3d/cristal4C.yaml | 930 +++++++++++++++++++++------------------- gui/ghkl3d/hkl3d-gui-model.cpp | 38 +- gui/ghkl3d/main.cpp | 6 +- hkl3d/hkl3d.cpp | 366 +++++++++------- hkl3d/hkl3d.h | 7 +- 7 files changed, 737 insertions(+), 657 deletions(-) commit ecc50d829b3f220d176f3d8c62fd3836c1763d14 Author: unknown Date: Thu Jun 17 13:23:37 2010 +0200 typo hkl/hkl-macros.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1ca79d7293427f6e4d00762f946d87a111a85102 Author: unknown Date: Thu Jun 17 13:15:56 2010 +0200 try to solve the vasprintf problem with win32 (UGLY) hkl/hkl-macros.c | 13 +++++++++++++ hkl/hkl-macros.h | 3 +++ 2 files changed, 16 insertions(+) commit bc25a2c76b57b3b8cc8bf1266235685a4a30f1ac Author: unknown Date: Thu Jun 17 11:17:39 2010 +0200 * modifications for Visual C++ 2008 hkl/hkl-error.c | 11 ++++++++--- hkl/hkl-geometry.c | 4 +++- hkl/hkl-macros.c | 3 ++- hkl/hkl-macros.h | 7 +++++-- hkl/hkl-pseudoaxis-auto.c | 4 +++- hkl/hkl-pseudoaxis.c | 4 +++- 6 files changed, 24 insertions(+), 9 deletions(-) commit ef368d3084b5f0536d9e7b4db2c48a15519639c3 Author: Oussama Sboui Date: Wed Jun 16 18:50:56 2010 +0200 * first working version with the new config file system. TODO | 17 + gui/ghkl3d/cristal4C.yaml | 1306 ++++++++++++++++++++++++++++++++++++++++ gui/ghkl3d/diffabs.yaml | 46 ++ gui/ghkl3d/hkl3d-gui-gl.c | 4 +- gui/ghkl3d/hkl3d-gui-model.cpp | 117 ++-- gui/ghkl3d/hkl3d-gui-view.cpp | 2 +- gui/ghkl3d/main.cpp | 11 +- hkl3d/hkl3d.cpp | 197 +++--- hkl3d/hkl3d.h | 20 +- 9 files changed, 1562 insertions(+), 158 deletions(-) commit d8cf48fa2972f8943ad79993529df4993e408acf Author: Oussama Sboui Date: Tue Jun 15 17:23:02 2010 +0200 * add the yaml file config (work in progress) and other stuffs... gui/DiffabsDemo/Makefile.am | 4 +- gui/ghkl3d/hkl3d-gui-model.cpp | 4 +- gui/ghkl3d/hkl3d-gui-scene.cpp | 2 +- gui/ghkl3d/hkl3d-gui-view.cpp | 2 +- gui/ghkl3d/main.cpp | 26 ++- hkl3d/Makefile.am | 11 +- hkl3d/hkl3d.cpp | 439 ++++++++++++++++++++++++++++++----------- hkl3d/hkl3d.h | 29 ++- 8 files changed, 384 insertions(+), 133 deletions(-) commit 58403317f50633fdfc71970c25dbe5eadf9bea5d Author: Frédéric-Emmanuel PICCA Date: Tue Jun 8 14:06:41 2010 +0200 fix a compilation error in hkl3d hkl3d/hkl3d.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1c0129a8dafa1354aa8457a408004938452da783 Author: Oussama Sboui Date: Mon Jun 7 11:22:09 2010 +0200 * juste add flags to prepare the yaml integration configure.ac | 6 ++++++ 1 file changed, 6 insertions(+) commit db50c61277ad813e9c82672173e972274c8cf63b Merge: e4530461 338f69cd Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:56:39 2010 +0200 Merge branch 'maint' into next Conflicts: NEWS configure.ac commit 338f69cdf5a4fb7612bce359a459d421d50d6bbe Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:50:51 2010 +0200 update also the pom.xml file hkl/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ebf1bfba4694543337489551d85d4843bc515f25 Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:45:08 2010 +0200 * update the NEWS and prepare for release NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) commit e4530461ec51477a05c80434cec378b36c047614 Merge: dba19995 fc66cc69 Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:40:15 2010 +0200 Merge branch 'maint' into next commit fc66cc69da79c4adc47dddf8a9860191aa7c769d Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:35:55 2010 +0200 * update the documentation Documentation/api/hkl-sections.txt | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) commit f0cba10fae45742b6ba717eee2c6d43014705a08 Author: Picca Frédéric-Emmanuel Date: Sat Jun 5 19:37:55 2010 +0200 * remove all clang warnings hkl/hkl-error.c | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-sample.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 5b3661b44d0c20a7108640f327b7e3580d9ee7e9 Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:08:00 2010 +0200 * remove all git code to avoid a GPL2 GPL3+ incompatibility hkl/Makefile.am | 4 +-- hkl/hkl-geometry.c | 8 +++-- hkl/{usage.c => hkl-macros.c} | 66 ++++------------------------------------- hkl/hkl-macros.h | 9 ------ hkl/hkl-pseudoaxis-common-psi.c | 6 ++-- test/hkl-test.c | 6 ++-- 6 files changed, 20 insertions(+), 79 deletions(-) commit dba19995009ac71e7671b422a2feeb7d364dce97 Merge: f92337db 1c7c172f Author: Picca Frédéric-Emmanuel Date: Sat Jun 5 15:52:33 2010 +0200 Merge branch 'maint' into next Conflicts: NEWS configure.ac gui/ghkl.cpp gui/ghkl.h commit 1c7c172fb9fc51e5d7e5dfb3995a0a80fa5ee51d Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:27:53 2010 +0200 * Fix source and include directories hkl/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 41604e0e53c52633356d1cd1c8af15f27e8d136c Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:21:20 2010 +0200 * update the pom.xml hkl/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit edf72c24cfb39741754af6fcb2f2a34f162c8611 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:18:07 2010 +0200 * move the hkl.h file to be SOLEIL hudson friendly ;) Makefile.am | 2 ++ hkl/hkl.h => hkl.h | 0 hkl/Makefile.am | 3 --- 3 files changed, 2 insertions(+), 3 deletions(-) commit 4cd1fc24832c7270c567334d0d83262b4e255e8e Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 11:07:16 2010 +0200 * add the pom.xml for soleil compilation hkl/pom.xml | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) commit 8e2e695803843ed43acf9026571b9386e92ec8a9 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 15:08:05 2010 +0200 * forgot to distribut the file ;) gui/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ccd7c82b1a5ad0b8caa74450d17fd321660fa04c Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 15:00:04 2010 +0200 * install the .desktop file at the right place. NEWS | 4 ++++ gui/Makefile.am | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) commit 810ec16c0745f0777821dd010c505fa125e2ba01 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:22:48 2010 +0200 * add the ghkl man page and the .desktop file. Documentation/Makefile.am | 2 ++ Documentation/ghkl.1 | 53 +++++++++++++++++++++++++++++++++++++++++++++++ gui/Makefile.am | 2 +- gui/ghkl.desktop | 10 +++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) commit 4702e6053fc4f26e6ec65726c1998518524ae3b2 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:21:08 2010 +0200 * connect the quit menu item with the gtk_main_quit method gui/ghkl.cpp | 3 +++ gui/ghkl.h | 1 + 2 files changed, 4 insertions(+) commit 524477c58f7e69b54b9b57a7d5691bf83ce59ec7 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:20:32 2010 +0200 * post release revision number bump configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f92337dbc8221e08be95bd11c61891cd9abf1acf Author: Picca Frédéric-Emmanuel Date: Mon May 31 23:38:27 2010 +0200 * lets reduce number of copy of the holder idx (common to geometries) hkl/hkl-geometry.c | 67 ++++++++++++++++++++++++++++++++++++++++-------------- hkl/hkl-geometry.h | 8 +++++-- 2 files changed, 56 insertions(+), 19 deletions(-) commit 89d43925c6d3021d145fb9006e41b8abf33a749a Author: Frédéric-Emmanuel PICCA Date: Mon May 31 18:00:48 2010 +0200 * remove for real the hkl-list.h file hkl/Makefile.am | 1 - hkl/hkl-geometry.h | 1 - hkl/hkl-list.h | 88 ------------------------------------------------------ hkl/hkl-sample.h | 1 - 4 files changed, 91 deletions(-) commit 7d627f49fb1ddaae9eee44995890d03f5debfbf5 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 17:53:08 2010 +0200 * remove a memory leak hkl/hkl-pseudoaxis.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 41865ed6b8cf2ed96249d51002843931c325ce2f Author: Frédéric-Emmanuel PICCA Date: Mon May 31 17:47:48 2010 +0200 * one less gui/ghkl.cpp | 2 +- hkl/hkl-sample.c | 74 ++++++++++++++++++++++++++++++++++++++------------------ hkl/hkl-sample.h | 4 ++- 3 files changed, 54 insertions(+), 26 deletions(-) commit a4104c18b6bb15425ab7616ea0bec0f9c7bd541e Author: Frédéric-Emmanuel PICCA Date: Mon May 31 17:08:59 2010 +0200 * one less gui/ghkl.cpp | 2 +- hkl/hkl-sample.c | 51 +++++++++++++++++++++++++++++----------------- hkl/hkl-sample.h | 3 ++- test/hkl/hkl-test-sample.c | 4 ++-- 4 files changed, 37 insertions(+), 23 deletions(-) commit c8069a60b47c424401051b5550047024b8c310ef Author: Frédéric-Emmanuel PICCA Date: Mon May 31 16:46:19 2010 +0200 * one less gui/ghkl.cpp | 4 ++-- hkl/hkl-pseudoaxis.c | 23 +++++++++++++++-------- hkl/hkl-pseudoaxis.h | 3 ++- test/hkl/hkl-test-pseudoaxis.c | 2 +- 4 files changed, 20 insertions(+), 12 deletions(-) commit 3de4d27eae53770ed9721b27ead83fa6b5d599d7 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 16:32:44 2010 +0200 * still working on the removal gui/ghkl.cpp | 2 +- gui/pseudoaxesframe.cpp | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis.c | 13 +++++++++---- hkl/hkl-pseudoaxis.h | 3 ++- test/hkl/hkl-test-pseudoaxis.c | 4 ++-- 6 files changed, 16 insertions(+), 10 deletions(-) commit a117edfb8e269ee14236ac01ceb2346e354c5214 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 16:19:26 2010 +0200 * one more hkl/hkl-pseudoaxis-auto.c | 4 ++-- hkl/hkl-pseudoaxis-common-hkl.c | 6 +++--- hkl/hkl-pseudoaxis-common-psi.c | 2 +- hkl/hkl-pseudoaxis-common-q.c | 4 ++-- hkl/hkl-pseudoaxis.c | 10 ++++++---- hkl/hkl-pseudoaxis.h | 3 ++- 6 files changed, 16 insertions(+), 13 deletions(-) commit 3c84ba1924c53f28b738844c8d3991d45c2d7744 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 16:07:32 2010 +0200 * one more gui/pseudoaxesframe.cpp | 4 ++-- hkl/hkl-pseudoaxis.c | 15 +++++++++++---- hkl/hkl-pseudoaxis.h | 3 ++- test/hkl/bench.c | 4 ++-- test/hkl/hkl-test-pseudoaxis-e4cv.c | 6 +++--- test/hkl/hkl-test-pseudoaxis-e6c.c | 4 ++-- test/hkl/hkl-test-pseudoaxis-k4cv.c | 6 +++--- test/hkl/hkl-test-pseudoaxis-k6c.c | 6 +++--- test/hkl/hkl-test-pseudoaxis.c | 2 +- 9 files changed, 29 insertions(+), 21 deletions(-) commit f9e045de397cfd52b811ad5775b63b519165b675 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 15:53:27 2010 +0200 * one more HKL_LIST removal hkl/hkl-pseudoaxis.c | 12 +++++++----- hkl/hkl-pseudoaxis.h | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) commit 63784e2a981ea912ef00032f5502dfdf5ca7a305 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 15:43:24 2010 +0200 * still removing the HKL_LIST gui/ghkl.cpp | 4 ++-- gui/pseudoaxesframe.cpp | 2 +- hkl/hkl-list.h | 2 +- hkl/hkl-pseudoaxis.c | 12 +++++++----- hkl/hkl-pseudoaxis.h | 3 ++- test/hkl/bench.c | 2 +- test/hkl/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl/hkl-test-pseudoaxis-k6c.c | 2 +- test/hkl/hkl-test-pseudoaxis.c | 2 +- 10 files changed, 18 insertions(+), 15 deletions(-) commit 434df505036ca1f1e8eac2bc1f0063ac19c40c66 Author: Frédéric-Emmanuel PICCA Date: Mon May 31 15:43:04 2010 +0200 * correct the gui part due to the HKL_LIST removal gui/ghkl-callbacks.cpp | 4 ++-- gui/ghkl.cpp | 8 ++++---- gui/modelcolumns.h | 2 +- gui/pseudoaxesframe.cpp | 2 +- hkl3d/hkl3d.cpp | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) commit 97220cc65aab9dab098b47ca089862f67765fd8a Author: Picca Frédéric-Emmanuel Date: Sun May 30 12:25:07 2010 +0200 * still removing HKL_LIST hkl/hkl-pseudoaxis-auto.c | 2 +- hkl/hkl-pseudoaxis.c | 10 ++++++---- hkl/hkl-pseudoaxis.h | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) commit 6e1a525bf5c186d3d121ea09751a7bbfff7d2ca2 Author: Picca Frédéric-Emmanuel Date: Sun May 30 10:05:41 2010 +0200 * make the hkl_geometry_list_item method private hkl/hkl-geometry.c | 71 ++++++++++++++++--------------------- hkl/hkl-geometry.h | 10 +----- hkl/hkl-pseudoaxis-factory.c | 4 +-- test/hkl/bench.c | 2 +- test/hkl/hkl-test-geometry.c | 6 ++-- test/hkl/hkl-test-pseudoaxis-e4cv.c | 8 ++--- test/hkl/hkl-test-pseudoaxis-e6c.c | 4 +-- test/hkl/hkl-test-pseudoaxis-k4cv.c | 8 ++--- test/hkl/hkl-test-pseudoaxis-k6c.c | 14 ++++---- test/hkl/hkl-test-pseudoaxis.c | 2 +- 10 files changed, 55 insertions(+), 74 deletions(-) commit 7529b59bf624d2fbb4afc348e910d0b1db216dfa Author: Picca Frédéric-Emmanuel Date: Sun May 30 09:45:58 2010 +0200 * still removing HKL_LIST hkl/hkl-geometry.c | 82 ++++++++++++++++++++++++++++---------------- hkl/hkl-geometry.h | 4 ++- test/hkl/hkl-test-geometry.c | 10 +++--- 3 files changed, 60 insertions(+), 36 deletions(-) commit b2e663ff322ae47dfca3b95952758c70c2c590ef Author: Picca Frédéric-Emmanuel Date: Sat May 29 22:39:12 2010 +0200 * still removing HKL_LIST hkl/hkl-geometry.c | 72 +++++++++++++++++++++++++----------------------------- hkl/hkl-geometry.h | 3 ++- hkl/hkl-sample.c | 7 ++---- 3 files changed, 37 insertions(+), 45 deletions(-) commit 3e32ddcdf573913289c49d0dfb97291e5c776c67 Author: Picca Frédéric-Emmanuel Date: Sat May 29 22:19:43 2010 +0200 * more HKL_LIST remove hkl/hkl-geometry.c | 32 +++++++++++++------------------- hkl/hkl-geometry.h | 3 ++- test/hkl/hkl-test-geometry.c | 6 +++--- 3 files changed, 18 insertions(+), 23 deletions(-) commit 08a1cf7f125aaea651113773fd389dce8d4817f5 Author: Picca Frédéric-Emmanuel Date: Sat May 29 22:05:21 2010 +0200 * remove the HKL_LIST from HklHolder hkl/hkl-geometry.c | 23 +++++++++++++---------- hkl/hkl-geometry.h | 3 ++- 2 files changed, 15 insertions(+), 11 deletions(-) commit c802593fbc8b460d7a304f5ef04cc780af3cdbd6 Author: Oussama Sboui Date: Tue May 25 17:05:36 2010 +0200 * add the addFromFile method. gui/ghkl3d/hkl3d-gui-model.cpp | 14 ++++-- gui/ghkl3d/hkl3d-gui-scene.cpp | 2 +- hkl3d/hkl3d.cpp | 101 ++++++++++++++++++++++++++++++++--------- hkl3d/hkl3d.h | 5 +- 4 files changed, 93 insertions(+), 29 deletions(-) commit a7f648c78eed50c5c97f6d1696704b2bd242016a Author: Oussama Sboui Date: Fri May 21 12:26:35 2010 +0200 * decrease the World boundaries. hkl3d/hkl3d.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 00125d483c6218ce3a9c3f53268de964a78ebc34 Author: Oussama Sboui Date: Fri May 21 12:25:50 2010 +0200 * add the serialization configure.ac | 3 + hkl3d/Makefile.am | 10 +- hkl3d/Serialize/BulletFileLoader/Makefile.am | 74 ++ hkl3d/Serialize/BulletFileLoader/bChunk.cpp | 75 ++ hkl3d/Serialize/BulletFileLoader/bChunk.h | 90 ++ hkl3d/Serialize/BulletFileLoader/bCommon.h | 39 + hkl3d/Serialize/BulletFileLoader/bDNA.cpp | 636 ++++++++++ hkl3d/Serialize/BulletFileLoader/bDNA.h | 110 ++ hkl3d/Serialize/BulletFileLoader/bDefines.h | 140 +++ hkl3d/Serialize/BulletFileLoader/bFile.cpp | 1322 ++++++++++++++++++++ hkl3d/Serialize/BulletFileLoader/bFile.h | 153 +++ hkl3d/Serialize/BulletFileLoader/btBulletFile.cpp | 384 ++++++ hkl3d/Serialize/BulletFileLoader/btBulletFile.h | 78 ++ hkl3d/Serialize/BulletFileLoader/bullet.h | 69 + hkl3d/Serialize/BulletFileLoader/bullet_Common.h | 77 ++ hkl3d/Serialize/BulletFileLoader/bullet_ListBase.h | 40 + .../BulletFileLoader/bullet_PointerArray.h | 41 + .../BulletFileLoader/bullet_btBvhSubtreeInfoData.h | 42 + .../BulletFileLoader/bullet_btCapsuleShapeData.h | 42 + .../bullet_btCollisionObjectDoubleData.h | 64 + .../bullet_btCollisionObjectFloatData.h | 63 + .../BulletFileLoader/bullet_btCollisionShapeData.h | 41 + .../bullet_btCompoundShapeChildData.h | 43 + .../BulletFileLoader/bullet_btCompoundShapeData.h | 43 + .../bullet_btConeTwistConstraintData.h | 51 + .../BulletFileLoader/bullet_btConstraintInfo1.h | 40 + .../bullet_btConvexHullShapeData.h | 44 + .../bullet_btConvexInternalShapeData.h | 45 + .../BulletFileLoader/bullet_btCylinderShapeData.h | 42 + .../bullet_btGImpactMeshShapeData.h | 46 + .../bullet_btGeneric6DofConstraintData.h | 50 + .../bullet_btHingeConstraintDoubleData.h | 53 + .../bullet_btHingeConstraintFloatData.h | 53 + .../BulletFileLoader/bullet_btIntIndexData.h | 39 + .../bullet_btMatrix3x3DoubleData.h | 40 + .../BulletFileLoader/bullet_btMatrix3x3FloatData.h | 40 + .../BulletFileLoader/bullet_btMeshPartData.h | 45 + .../bullet_btMultiSphereShapeData.h | 43 + .../bullet_btOptimizedBvhNodeDoubleData.h | 45 + .../bullet_btOptimizedBvhNodeFloatData.h | 45 + .../BulletFileLoader/bullet_btPhysicsSystem.h | 42 + .../bullet_btPoint2PointConstraintDoubleData.h | 43 + .../bullet_btPoint2PointConstraintFloatData.h | 43 + .../BulletFileLoader/bullet_btPositionAndRadius.h | 41 + .../bullet_btQuantizedBvhDoubleData.h | 51 + .../bullet_btQuantizedBvhFloatData.h | 51 + .../bullet_btQuantizedBvhNodeData.h | 41 + .../bullet_btRigidBodyDoubleData.h | 63 + .../BulletFileLoader/bullet_btRigidBodyFloatData.h | 62 + .../BulletFileLoader/bullet_btShortIntIndexData.h | 40 + .../bullet_btShortIntIndexTripletData.h | 40 + .../bullet_btSliderConstraintData.h | 49 + .../bullet_btStaticPlaneShapeData.h | 45 + .../bullet_btStridingMeshInterfaceData.h | 43 + .../bullet_btTransformDoubleData.h | 42 + .../BulletFileLoader/bullet_btTransformFloatData.h | 42 + .../BulletFileLoader/bullet_btTriangleInfoData.h | 42 + .../bullet_btTriangleInfoMapData.h | 52 + .../bullet_btTriangleMeshShapeData.h | 47 + .../bullet_btTypedConstraintData.h | 49 + .../BulletFileLoader/bullet_btVector3DoubleData.h | 39 + .../BulletFileLoader/bullet_btVector3FloatData.h | 39 + hkl3d/Serialize/BulletWorldImporter/Makefile.am | 18 + .../BulletWorldImporter/btBulletWorldImporter.cpp | 1205 ++++++++++++++++++ .../BulletWorldImporter/btBulletWorldImporter.h | 180 +++ hkl3d/Serialize/Makefile.am | 1 + hkl3d/hkl3d.cpp | 126 +- hkl3d/hkl3d.h | 1 + 68 files changed, 6925 insertions(+), 12 deletions(-) commit b4c86f9e05bbccdbc1de8c554b5fd6eb8f8ff19d Author: Oussama Sboui Date: Fri May 21 12:20:18 2010 +0200 * indentation hkl3d/ConvexDecomposition/ConvexDecomposition.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 53ebf2b6dad5baf5da6209f99ac1303c34a6634b Author: Oussama Sboui Date: Fri May 21 12:20:05 2010 +0200 * increase the timeout gui/ghkl3d/hkl3d-gui-scene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bb0ec310be0cedd336d4b03f3316bb089d4bd111 Author: Oussama Sboui Date: Fri May 21 12:17:03 2010 +0200 *split isColliding method on isColliding and applyTransformation hkl3d/hkl3d.cpp | 16 +++++++++++----- hkl3d/hkl3d.h | 6 +++--- 2 files changed, 14 insertions(+), 8 deletions(-) commit 7c75685d6ad85649b91d358903c3cf8091eaccea Merge: 44e36d54 031ac8b8 Author: Frédéric-Emmanuel PICCA Date: Mon May 17 17:51:39 2010 +0200 Merge branch 'next' of ssh://dent-de-scie/home/oussama/hkl into next commit 44e36d54d3a2d6edaad41b7535c68afd457b0d9a Author: Frédéric-Emmanuel PICCA Date: Mon May 17 15:08:15 2010 +0200 * add an --enable-hkl3d option Makefile.am | 2 +- NEWS | 1 + configure.ac | 10 ++++++---- gui/Makefile.am | 23 ++++++++++++++++------- gui/ghkl-callbacks.cpp | 15 +++++++++++++++ gui/ghkl.cpp | 6 ++++++ gui/ghkl.h | 9 +++++++-- gui/main.cpp | 2 ++ 8 files changed, 54 insertions(+), 14 deletions(-) commit eded4593a511dd6c3211f389cbe981021c9073e3 Author: Frédéric-Emmanuel PICCA Date: Mon May 17 14:20:25 2010 +0200 * use the right SUBDIRS order Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 77fd2b9461a87b21be5712f7a4726107ddf9f4c4 Merge: 2f3a1dc1 af18474e Author: Frédéric-Emmanuel PICCA Date: Mon May 17 11:19:41 2010 +0200 Merge branch 'master' into next Conflicts: Makefile.am NEWS configure.ac gui/Makefile.am commit 031ac8b8132c0dca4bf457be57eb2a9573396ad1 Author: Oussama Sboui Date: Mon May 17 09:19:44 2010 +0200 *Perform colors for Bullet render gui/DiffabsDemo/DiffabsDemo.cpp | 3 +-- gui/ghkl3d/hkl3d-gui-model.cpp | 5 +---- hkl3d/GIMPACTUtils/btGImpactConvexDecompositionShape.cpp | 4 ++-- hkl3d/hkl3d.cpp | 10 ++-------- hkl3d/hkl3d.h | 7 +------ 5 files changed, 7 insertions(+), 22 deletions(-) commit 2f3a1dc17ae8581ce6266f2d3743b9218defb325 Merge: 2f445b8d ee5f6d02 Author: Frédéric-Emmanuel PICCA Date: Mon May 17 09:09:29 2010 +0200 Merge branch 'next' of ssh://dent-de-scie/home/oussama/hkl into next Conflicts: hkl3d/hkl3d.cpp commit ee5f6d0205d0ea3517211fc474ad256e50838102 Author: Oussama Sboui Date: Wed May 12 17:32:21 2010 +0200 *In drawSphere method use GL_QUADS instead of GL LINES in order to perform sphere render gui/ghkl3d/hkl3d-gui-model.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit e155dfbaf3171ea10905e54e5931ef5a2c45621c Author: Oussama Sboui Date: Wed May 12 16:56:59 2010 +0200 * Collect all hkl3D vectors in one structure hkl3dObject structure and move the render test callback to isColliding method gui/DiffabsDemo/DiffabsDemo.cpp | 27 ++----------- gui/ghkl3d/hkl3d-gui-model.cpp | 90 ++++++++++++++++------------------------- gui/ghkl3d/hkl3d-gui-model.h | 1 - hkl3d/hkl3d.cpp | 62 +++++++++++++++++++++------- hkl3d/hkl3d.h | 19 +++++---- 5 files changed, 98 insertions(+), 101 deletions(-) commit 2f445b8d65709965644c563a3d9b5f0e37f81456 Author: Frédéric-Emmanuel PICCA Date: Wed May 12 13:17:26 2010 +0200 * update the TODO and NEWS fles NEWS | 2 ++ TODO | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) commit 6376c000e8ede16835bc3cf758da34ecd3012764 Author: Frédéric-Emmanuel PICCA Date: Wed May 12 13:13:35 2010 +0200 * add the 3D view to ghkl gui/Makefile.am | 12 +++++++-- gui/ghkl-callbacks.cpp | 21 ++++++++++++++++ gui/ghkl.cpp | 38 +++++++++++++++++++++++++++-- gui/ghkl.h | 7 ++++++ gui/ghkl.ui | 66 +++++++++++++++++++++++++++++++++----------------- gui/ghkl3d/Makefile.am | 9 ++++--- gui/main.cpp | 1 + hkl3d/hkl3d.cpp | 9 ++++--- 8 files changed, 130 insertions(+), 33 deletions(-) commit e8467ad9360312af35c54a1ce50573e586ec78e8 Author: Oussama Sboui Date: Wed May 12 10:43:12 2010 +0200 * one more missing file. gui/ghkl3d/ghkl3d.ui | 218 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) commit f93d79b01f9a3391a064f9aed800fdaae1a074d8 Author: Oussama Sboui Date: Wed May 12 10:37:47 2010 +0200 * forgotten file hkl3d/ConvexDecomposition/concavity.cpp | 795 ++++++++++++++++++++++++++++++++ 1 file changed, 795 insertions(+) commit a6167affcbfd01997791d0706fadcd39dcb7cb8e Author: Oussama Sboui Date: Wed May 12 10:29:09 2010 +0200 Perform rendering(alpha=0.5 if object collide else alpha=1) gui/ghkl3d/hkl3d-gui-gl.c | 2 +- gui/ghkl3d/hkl3d-gui-model.cpp | 75 +++++++++++++++++----- gui/ghkl3d/hkl3d-gui-model.h | 5 +- .../btGImpactConvexDecompositionShape.cpp | 2 +- hkl3d/hkl3d.cpp | 18 ++++-- hkl3d/hkl3d.h | 7 +- 6 files changed, 83 insertions(+), 26 deletions(-) commit b4c6b60a341517d468fc7dd3000f16bee1716217 Author: Frédéric-Emmanuel PICCA Date: Wed May 12 10:26:00 2010 +0200 * correct the hkl3d test method to catch collision and no-collision test/hkl3d/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 3757e599cadac6e9a16a2c32c819dfe2db831c4c Author: Frédéric-Emmanuel PICCA Date: Mon May 10 16:47:26 2010 +0200 * create the libhkl3d-gui library for inclusion in the ghkl program gui/ghkl3d/Makefile.am | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 98f1775e1b21c80cf84b451782b6e4e2321686ea Merge: be6187a2 5764e2c6 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 16:23:24 2010 +0200 Merge remote branch 'oussama/next' into next commit af18474e605e5b49db3ad71071d96ebabadd9402 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 16:11:26 2010 +0200 * show the preference dialogue from the begining. NEWS | 1 + gui/ghkl.ui | 1 + 2 files changed, 2 insertions(+) commit 5764e2c61103e04eced290dd1aba62811e64bb69 Author: Oussama Sboui Date: Mon May 10 14:01:58 2010 +0200 Render coordinate system and perform aabb box rendering gui/ghkl3d/hkl3d-gui-application.cpp | 4 +- gui/ghkl3d/hkl3d-gui-model.cpp | 178 +++++++-------------- gui/ghkl3d/hkl3d-gui-model.h | 21 ++- gui/ghkl3d/hkl3d-gui-scene.cpp | 44 +++-- gui/ghkl3d/hkl3d-gui-scene.h | 11 +- .../btGImpactConvexDecompositionShape.cpp | 6 - 6 files changed, 118 insertions(+), 146 deletions(-) commit fdfdb36e63f1c1cd646f613f68d1f395b3ad5e22 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 13:31:32 2010 +0200 * add the --enable-ghkl flag to the configure script. Makefile.am | 6 +++++- NEWS | 5 +++++ configure.ac | 14 +++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) commit b3ed054335cb856f9a086c18ac46c99c5f6603c1 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:50:11 2010 +0200 * add the gsl dependencies to the ghkl program. gui/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit 6568016fe9a6d0f9b283411222133ee3284c797b Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:49:45 2010 +0200 * bump the version configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a34b077e576f72c3e895e2f53c58368e26bd3c6d Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:46:17 2010 +0200 * fix the ghkl .ui load exception. gui/ghkl.cpp | 4 +++- gui/pseudoaxesframe.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) commit b25b29a535d8589441f4f5d5056b2cce64c9ed05 Author: Oussama Sboui Date: Fri May 7 18:49:45 2010 +0200 delete space gui/DiffabsDemo/DiffabsDemo.cpp | 4 ---- 1 file changed, 4 deletions(-) commit a12af7ab848af3a91932cae06acfbbfb63880e8f Author: Oussama Sboui Date: Fri May 7 18:46:00 2010 +0200 Raise Time out and achieve the AAbbBox render gui/DiffabsDemo/DiffabsDemo.cpp | 18 ++-- gui/ghkl3d/hkl3d-gui-model.cpp | 100 +++++++++++++++------ gui/ghkl3d/hkl3d-gui-model.h | 4 +- gui/ghkl3d/hkl3d-gui-scene.cpp | 2 +- .../btGImpactConvexDecompositionShape.cpp | 2 +- 5 files changed, 91 insertions(+), 35 deletions(-) commit be6187a29dfb18cf0fb3ecf665360fd9d3f18b4b Author: Frédéric-Emmanuel PICCA Date: Fri May 7 13:16:47 2010 +0200 * update the news file NEWS | 3 +++ 1 file changed, 3 insertions(+) commit 459d644348d961bb5a7700414a0108069bbd8638 Author: Frédéric-Emmanuel PICCA Date: Fri May 7 11:05:28 2010 +0200 * add one mode missing file. gui/ghkl3d/ghkl3d.ui | 218 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) commit 3c27e8e6d232ddfa7df96e193d061755de82f7d0 Author: Frédéric-Emmanuel PICCA Date: Fri May 7 10:47:58 2010 +0200 * forgot a file hkl3d/ConvexDecomposition/concavity.cpp | 795 ++++++++++++++++++++++++++++++++ 1 file changed, 795 insertions(+) commit 26a23e3e2f3aa56047418cb8338376900bdc5d0e Author: Frédéric-Emmanuel PICCA Date: Fri May 7 10:32:34 2010 +0200 * reduce the dependency gui/DiffabsDemo/Makefile.am | 1 - 1 file changed, 1 deletion(-) commit 46fa1e0664206954290a281cd040f1f2ad1f4103 Author: Frédéric-Emmanuel PICCA Date: Fri May 7 09:57:20 2010 +0200 * add all the hkl3d gui part. configure.ac | 5 + gui/DiffabsDemo/DiffabsDemo.cpp | 234 ++++++ gui/DiffabsDemo/DiffabsDemo.h | 75 ++ gui/DiffabsDemo/Makefile.am | 33 + gui/DiffabsDemo/main.cpp | 50 ++ gui/Makefile.am | 2 + gui/OpenGL/DebugCastResult.h | 88 +++ gui/OpenGL/DemoApplication.cpp | 1316 +++++++++++++++++++++++++++++++++ gui/OpenGL/DemoApplication.h | 246 ++++++ gui/OpenGL/GLDebugDrawer.cpp | 140 ++++ gui/OpenGL/GLDebugDrawer.h | 38 + gui/OpenGL/GLDebugFont.cpp | 987 +++++++++++++++++++++++++ gui/OpenGL/GLDebugFont.h | 27 + gui/OpenGL/GL_DialogDynamicsWorld.cpp | 739 ++++++++++++++++++ gui/OpenGL/GL_DialogDynamicsWorld.h | 91 +++ gui/OpenGL/GL_DialogWindow.cpp | 336 +++++++++ gui/OpenGL/GL_DialogWindow.h | 283 +++++++ gui/OpenGL/GL_ShapeDrawer.cpp | 985 ++++++++++++++++++++++++ gui/OpenGL/GL_ShapeDrawer.h | 70 ++ gui/OpenGL/GL_Simplex1to4.cpp | 73 ++ gui/OpenGL/GL_Simplex1to4.h | 40 + gui/OpenGL/GlutDemoApplication.cpp | 71 ++ gui/OpenGL/GlutDemoApplication.h | 34 + gui/OpenGL/GlutStuff.cpp | 109 +++ gui/OpenGL/GlutStuff.h | 84 +++ gui/OpenGL/Makefile.am | 33 + gui/OpenGL/RenderTexture.cpp | 86 +++ gui/OpenGL/RenderTexture.h | 73 ++ gui/OpenGL/Win32AppMain.cpp | 402 ++++++++++ gui/OpenGL/Win32DemoApplication.cpp | 79 ++ gui/OpenGL/Win32DemoApplication.h | 40 + gui/ghkl3d/Makefile.am | 53 ++ gui/ghkl3d/hkl3d-gui-application.cpp | 201 +++++ gui/ghkl3d/hkl3d-gui-application.h | 81 ++ gui/ghkl3d/hkl3d-gui-gl.c | 814 ++++++++++++++++++++ gui/ghkl3d/hkl3d-gui-gl.h | 64 ++ gui/ghkl3d/hkl3d-gui-model.cpp | 316 ++++++++ gui/ghkl3d/hkl3d-gui-model.h | 157 ++++ gui/ghkl3d/hkl3d-gui-scene.cpp | 403 ++++++++++ gui/ghkl3d/hkl3d-gui-scene.h | 112 +++ gui/ghkl3d/hkl3d-gui-view.cpp | 171 +++++ gui/ghkl3d/hkl3d-gui-view.h | 108 +++ gui/ghkl3d/main.cpp | 66 ++ gui/ghkl3d/texture.c | 43 ++ gui/ghkl3d/texture.h | 30 + gui/ghkl3d/trackball.c | 324 ++++++++ gui/ghkl3d/trackball.h | 78 ++ 47 files changed, 9890 insertions(+) commit 60245c6e789557697dc75c460e35eff3713e7673 Author: Frédéric-Emmanuel PICCA Date: Fri May 7 09:33:40 2010 +0200 * resynchronize with the hkl3d project. configure.ac | 2 + hkl3d/ConvexDecomposition/ConvexBuilder.cpp | 373 +++ hkl3d/ConvexDecomposition/ConvexBuilder.h | 112 + hkl3d/ConvexDecomposition/ConvexDecomposition.cpp | 375 +++ hkl3d/ConvexDecomposition/ConvexDecomposition.h | 220 ++ hkl3d/ConvexDecomposition/Makefile.am | 43 + hkl3d/ConvexDecomposition/bestfit.cpp | 466 +++ hkl3d/ConvexDecomposition/bestfit.h | 65 + hkl3d/ConvexDecomposition/bestfitobb.cpp | 173 ++ hkl3d/ConvexDecomposition/bestfitobb.h | 43 + hkl3d/ConvexDecomposition/cd_hull.cpp | 3257 ++++++++++++++++++++ hkl3d/ConvexDecomposition/cd_hull.h | 153 + hkl3d/ConvexDecomposition/cd_vector.h | 1185 +++++++ hkl3d/ConvexDecomposition/cd_wavefront.cpp | 860 ++++++ hkl3d/ConvexDecomposition/cd_wavefront.h | 62 + hkl3d/ConvexDecomposition/concavity.h | 60 + hkl3d/ConvexDecomposition/fitsphere.cpp | 202 ++ hkl3d/ConvexDecomposition/fitsphere.h | 43 + hkl3d/ConvexDecomposition/float_math.cpp | 257 ++ hkl3d/ConvexDecomposition/float_math.h | 72 + hkl3d/ConvexDecomposition/meshvolume.cpp | 128 + hkl3d/ConvexDecomposition/meshvolume.h | 45 + hkl3d/ConvexDecomposition/planetri.cpp | 238 ++ hkl3d/ConvexDecomposition/planetri.h | 58 + hkl3d/ConvexDecomposition/raytri.cpp | 134 + hkl3d/ConvexDecomposition/raytri.h | 45 + hkl3d/ConvexDecomposition/splitplane.cpp | 306 ++ hkl3d/ConvexDecomposition/splitplane.h | 59 + hkl3d/ConvexDecomposition/vlookup.cpp | 307 ++ hkl3d/ConvexDecomposition/vlookup.h | 119 + hkl3d/GIMPACTUtils/Makefile.am | 18 + .../btGImpactConvexDecompositionShape.cpp | 240 ++ .../btGImpactConvexDecompositionShape.h | 87 + hkl3d/Makefile.am | 8 +- hkl3d/hkl3d.cpp | 31 +- 35 files changed, 9829 insertions(+), 17 deletions(-) commit bd24ad05b233bd93160dba47d53c7ccb8b71ac38 Author: Frédéric-Emmanuel PICCA Date: Fri May 7 09:02:19 2010 +0200 * put the models in to my opinion, the right place data/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d0d160df5adc46e32c8587a3a72fdf3bee53d509 Author: Frédéric-Emmanuel PICCA Date: Tue May 4 12:29:17 2010 +0200 * add the hkl3d library Makefile.am | 6 +- configure.ac | 102 +- data/Makefile.am | 2 + data/diffabs.dae | 701 +++++ gui/ghkl.cpp | 6 +- hkl3d.pc.in | 12 + hkl3d/Makefile.am | 36 + hkl3d/bullet/AUTHORS | 22 + hkl3d/bullet/BulletLicense.txt | 18 + hkl3d/bullet/COPYING | 674 +++++ hkl3d/bullet/ChangeLog | 755 +++++ hkl3d/bullet/Doxyfile | 768 +++++ hkl3d/bullet/LICENSE | 19 + hkl3d/bullet/Makefile.am | 3 + hkl3d/bullet/NEWS | 4 + hkl3d/bullet/README | 7 + hkl3d/bullet/RELEASING.TXT | 34 + hkl3d/bullet/VERSION | 1 + hkl3d/bullet/bullet.pc | 11 + hkl3d/bullet/src/Bullet-C-Api.h | 176 ++ .../BroadphaseCollision/btAxisSweep3.cpp | 37 + .../BroadphaseCollision/btAxisSweep3.h | 1051 +++++++ .../BroadphaseCollision/btBroadphaseInterface.h | 82 + .../BroadphaseCollision/btBroadphaseProxy.cpp | 17 + .../BroadphaseCollision/btBroadphaseProxy.h | 270 ++ .../BroadphaseCollision/btCollisionAlgorithm.cpp | 23 + .../BroadphaseCollision/btCollisionAlgorithm.h | 80 + .../BulletCollision/BroadphaseCollision/btDbvt.cpp | 1295 +++++++++ .../BulletCollision/BroadphaseCollision/btDbvt.h | 1256 +++++++++ .../BroadphaseCollision/btDbvtBroadphase.cpp | 796 ++++++ .../BroadphaseCollision/btDbvtBroadphase.h | 146 + .../BroadphaseCollision/btDispatcher.cpp | 22 + .../BroadphaseCollision/btDispatcher.h | 106 + .../BroadphaseCollision/btMultiSapBroadphase.cpp | 489 ++++ .../BroadphaseCollision/btMultiSapBroadphase.h | 151 + .../BroadphaseCollision/btOverlappingPairCache.cpp | 633 +++++ .../BroadphaseCollision/btOverlappingPairCache.h | 469 ++++ .../btOverlappingPairCallback.h | 40 + .../BroadphaseCollision/btQuantizedBvh.cpp | 1375 +++++++++ .../BroadphaseCollision/btQuantizedBvh.h | 579 ++++ .../BroadphaseCollision/btSimpleBroadphase.cpp | 349 +++ .../BroadphaseCollision/btSimpleBroadphase.h | 171 ++ .../CollisionDispatch/SphereTriangleDetector.cpp | 209 ++ .../CollisionDispatch/SphereTriangleDetector.h | 51 + .../btActivatingCollisionAlgorithm.cpp | 47 + .../btActivatingCollisionAlgorithm.h | 36 + .../btBox2dBox2dCollisionAlgorithm.cpp | 435 +++ .../btBox2dBox2dCollisionAlgorithm.h | 66 + .../btBoxBoxCollisionAlgorithm.cpp | 85 + .../CollisionDispatch/btBoxBoxCollisionAlgorithm.h | 66 + .../CollisionDispatch/btBoxBoxDetector.cpp | 704 +++++ .../CollisionDispatch/btBoxBoxDetector.h | 44 + .../CollisionDispatch/btCollisionConfiguration.h | 47 + .../CollisionDispatch/btCollisionCreateFunc.h | 45 + .../CollisionDispatch/btCollisionDispatcher.cpp | 303 ++ .../CollisionDispatch/btCollisionDispatcher.h | 159 ++ .../CollisionDispatch/btCollisionObject.cpp | 115 + .../CollisionDispatch/btCollisionObject.h | 508 ++++ .../CollisionDispatch/btCollisionWorld.cpp | 1416 ++++++++++ .../CollisionDispatch/btCollisionWorld.h | 470 ++++ .../btCompoundCollisionAlgorithm.cpp | 351 +++ .../btCompoundCollisionAlgorithm.h | 86 + .../btConvex2dConvex2dAlgorithm.cpp | 247 ++ .../btConvex2dConvex2dAlgorithm.h | 95 + .../btConvexConcaveCollisionAlgorithm.cpp | 321 +++ .../btConvexConcaveCollisionAlgorithm.h | 116 + .../CollisionDispatch/btConvexConvexAlgorithm.cpp | 574 ++++ .../CollisionDispatch/btConvexConvexAlgorithm.h | 109 + .../btConvexPlaneCollisionAlgorithm.cpp | 155 ++ .../btConvexPlaneCollisionAlgorithm.h | 84 + .../btDefaultCollisionConfiguration.cpp | 298 ++ .../btDefaultCollisionConfiguration.h | 135 + .../btEmptyCollisionAlgorithm.cpp | 34 + .../CollisionDispatch/btEmptyCollisionAlgorithm.h | 54 + .../CollisionDispatch/btGhostObject.cpp | 171 ++ .../CollisionDispatch/btGhostObject.h | 175 ++ .../CollisionDispatch/btInternalEdgeUtility.cpp | 772 ++++++ .../CollisionDispatch/btInternalEdgeUtility.h | 46 + .../CollisionDispatch/btManifoldResult.cpp | 134 + .../CollisionDispatch/btManifoldResult.h | 128 + .../btSimulationIslandManager.cpp | 392 +++ .../CollisionDispatch/btSimulationIslandManager.h | 81 + .../btSphereBoxCollisionAlgorithm.cpp | 260 ++ .../btSphereBoxCollisionAlgorithm.h | 75 + .../btSphereSphereCollisionAlgorithm.cpp | 105 + .../btSphereSphereCollisionAlgorithm.h | 66 + .../btSphereTriangleCollisionAlgorithm.cpp | 84 + .../btSphereTriangleCollisionAlgorithm.h | 69 + .../CollisionDispatch/btUnionFind.cpp | 81 + .../CollisionDispatch/btUnionFind.h | 126 + .../CollisionShapes/btBox2dShape.cpp | 42 + .../BulletCollision/CollisionShapes/btBox2dShape.h | 363 +++ .../BulletCollision/CollisionShapes/btBoxShape.cpp | 41 + .../BulletCollision/CollisionShapes/btBoxShape.h | 318 +++ .../CollisionShapes/btBvhTriangleMeshShape.cpp | 466 ++++ .../CollisionShapes/btBvhTriangleMeshShape.h | 139 + .../CollisionShapes/btCapsuleShape.cpp | 171 ++ .../CollisionShapes/btCapsuleShape.h | 173 ++ .../CollisionShapes/btCollisionMargin.h | 26 + .../CollisionShapes/btCollisionShape.cpp | 119 + .../CollisionShapes/btCollisionShape.h | 150 + .../CollisionShapes/btCompoundShape.cpp | 323 +++ .../CollisionShapes/btCompoundShape.h | 206 ++ .../CollisionShapes/btConcaveShape.cpp | 27 + .../CollisionShapes/btConcaveShape.h | 60 + .../CollisionShapes/btConeShape.cpp | 133 + .../BulletCollision/CollisionShapes/btConeShape.h | 100 + .../CollisionShapes/btConvex2dShape.cpp | 92 + .../CollisionShapes/btConvex2dShape.h | 80 + .../CollisionShapes/btConvexHullShape.cpp | 223 ++ .../CollisionShapes/btConvexHullShape.h | 120 + .../CollisionShapes/btConvexInternalShape.cpp | 151 + .../CollisionShapes/btConvexInternalShape.h | 202 ++ .../CollisionShapes/btConvexPointCloudShape.cpp | 157 ++ .../CollisionShapes/btConvexPointCloudShape.h | 105 + .../CollisionShapes/btConvexShape.cpp | 429 +++ .../CollisionShapes/btConvexShape.h | 82 + .../CollisionShapes/btConvexTriangleMeshShape.cpp | 315 +++ .../CollisionShapes/btConvexTriangleMeshShape.h | 75 + .../CollisionShapes/btCylinderShape.cpp | 222 ++ .../CollisionShapes/btCylinderShape.h | 192 ++ .../CollisionShapes/btEmptyShape.cpp | 50 + .../BulletCollision/CollisionShapes/btEmptyShape.h | 70 + .../CollisionShapes/btHeightfieldTerrainShape.cpp | 411 +++ .../CollisionShapes/btHeightfieldTerrainShape.h | 161 ++ .../BulletCollision/CollisionShapes/btMaterial.h | 35 + .../CollisionShapes/btMinkowskiSumShape.cpp | 60 + .../CollisionShapes/btMinkowskiSumShape.h | 60 + .../CollisionShapes/btMultiSphereShape.cpp | 167 ++ .../CollisionShapes/btMultiSphereShape.h | 99 + .../btMultimaterialTriangleMeshShape.cpp | 45 + .../btMultimaterialTriangleMeshShape.h | 121 + .../CollisionShapes/btOptimizedBvh.cpp | 391 +++ .../CollisionShapes/btOptimizedBvh.h | 65 + .../CollisionShapes/btPolyhedralConvexShape.cpp | 193 ++ .../CollisionShapes/btPolyhedralConvexShape.h | 98 + .../btScaledBvhTriangleMeshShape.cpp | 121 + .../CollisionShapes/btScaledBvhTriangleMeshShape.h | 62 + .../CollisionShapes/btShapeHull.cpp | 170 ++ .../BulletCollision/CollisionShapes/btShapeHull.h | 59 + .../CollisionShapes/btSphereShape.cpp | 71 + .../CollisionShapes/btSphereShape.h | 73 + .../CollisionShapes/btStaticPlaneShape.cpp | 107 + .../CollisionShapes/btStaticPlaneShape.h | 103 + .../CollisionShapes/btStridingMeshInterface.cpp | 331 +++ .../CollisionShapes/btStridingMeshInterface.h | 154 + .../CollisionShapes/btTetrahedronShape.cpp | 218 ++ .../CollisionShapes/btTetrahedronShape.h | 74 + .../CollisionShapes/btTriangleBuffer.cpp | 35 + .../CollisionShapes/btTriangleBuffer.h | 69 + .../CollisionShapes/btTriangleCallback.cpp | 28 + .../CollisionShapes/btTriangleCallback.h | 42 + .../CollisionShapes/btTriangleIndexVertexArray.cpp | 95 + .../CollisionShapes/btTriangleIndexVertexArray.h | 131 + .../btTriangleIndexVertexMaterialArray.cpp | 86 + .../btTriangleIndexVertexMaterialArray.h | 84 + .../CollisionShapes/btTriangleInfoMap.h | 238 ++ .../CollisionShapes/btTriangleMesh.cpp | 140 + .../CollisionShapes/btTriangleMesh.h | 69 + .../CollisionShapes/btTriangleMeshShape.cpp | 211 ++ .../CollisionShapes/btTriangleMeshShape.h | 89 + .../CollisionShapes/btTriangleShape.h | 182 ++ .../CollisionShapes/btUniformScalingShape.cpp | 115 + .../CollisionShapes/btUniformScalingShape.h | 87 + hkl3d/bullet/src/BulletCollision/Doxyfile | 746 +++++ .../src/BulletCollision/Gimpact/btBoxCollision.h | 647 +++++ .../src/BulletCollision/Gimpact/btClipPolygon.h | 182 ++ .../Gimpact/btContactProcessing.cpp | 181 ++ .../BulletCollision/Gimpact/btContactProcessing.h | 145 + .../src/BulletCollision/Gimpact/btGImpactBvh.cpp | 498 ++++ .../src/BulletCollision/Gimpact/btGImpactBvh.h | 396 +++ .../Gimpact/btGImpactCollisionAlgorithm.cpp | 904 ++++++ .../Gimpact/btGImpactCollisionAlgorithm.h | 306 ++ .../BulletCollision/Gimpact/btGImpactMassUtil.h | 60 + .../Gimpact/btGImpactQuantizedBvh.cpp | 528 ++++ .../Gimpact/btGImpactQuantizedBvh.h | 372 +++ .../src/BulletCollision/Gimpact/btGImpactShape.cpp | 203 ++ .../src/BulletCollision/Gimpact/btGImpactShape.h | 1171 ++++++++ .../Gimpact/btGenericPoolAllocator.cpp | 283 ++ .../Gimpact/btGenericPoolAllocator.h | 163 ++ .../BulletCollision/Gimpact/btGeometryOperations.h | 212 ++ .../src/BulletCollision/Gimpact/btQuantization.h | 88 + .../BulletCollision/Gimpact/btTriangleShapeEx.cpp | 218 ++ .../BulletCollision/Gimpact/btTriangleShapeEx.h | 180 ++ .../bullet/src/BulletCollision/Gimpact/gim_array.h | 326 +++ .../Gimpact/gim_basic_geometry_operations.h | 543 ++++ .../src/BulletCollision/Gimpact/gim_bitset.h | 123 + .../BulletCollision/Gimpact/gim_box_collision.h | 590 ++++ .../src/BulletCollision/Gimpact/gim_box_set.cpp | 182 ++ .../src/BulletCollision/Gimpact/gim_box_set.h | 674 +++++ .../src/BulletCollision/Gimpact/gim_clip_polygon.h | 210 ++ .../src/BulletCollision/Gimpact/gim_contact.cpp | 146 + .../src/BulletCollision/Gimpact/gim_contact.h | 164 ++ .../src/BulletCollision/Gimpact/gim_geom_types.h | 97 + .../src/BulletCollision/Gimpact/gim_geometry.h | 42 + .../src/BulletCollision/Gimpact/gim_hash_table.h | 902 ++++++ .../src/BulletCollision/Gimpact/gim_linear_math.h | 1573 +++++++++++ .../bullet/src/BulletCollision/Gimpact/gim_math.h | 157 ++ .../src/BulletCollision/Gimpact/gim_memory.cpp | 135 + .../src/BulletCollision/Gimpact/gim_memory.h | 190 ++ .../src/BulletCollision/Gimpact/gim_radixsort.h | 406 +++ .../BulletCollision/Gimpact/gim_tri_collision.cpp | 640 +++++ .../BulletCollision/Gimpact/gim_tri_collision.h | 379 +++ .../btContinuousConvexCollision.cpp | 236 ++ .../btContinuousConvexCollision.h | 52 + .../NarrowPhaseCollision/btConvexCast.cpp | 20 + .../NarrowPhaseCollision/btConvexCast.h | 73 + .../btConvexPenetrationDepthSolver.h | 42 + .../btDiscreteCollisionDetectorInterface.h | 89 + .../NarrowPhaseCollision/btGjkConvexCast.cpp | 176 ++ .../NarrowPhaseCollision/btGjkConvexCast.h | 50 + .../NarrowPhaseCollision/btGjkEpa2.cpp | 989 +++++++ .../NarrowPhaseCollision/btGjkEpa2.h | 73 + .../btGjkEpaPenetrationDepthSolver.cpp | 66 + .../btGjkEpaPenetrationDepthSolver.h | 43 + .../NarrowPhaseCollision/btGjkPairDetector.cpp | 456 +++ .../NarrowPhaseCollision/btGjkPairDetector.h | 103 + .../NarrowPhaseCollision/btManifoldPoint.h | 138 + .../btMinkowskiPenetrationDepthSolver.cpp | 362 +++ .../btMinkowskiPenetrationDepthSolver.h | 40 + .../NarrowPhaseCollision/btPersistentManifold.cpp | 260 ++ .../NarrowPhaseCollision/btPersistentManifold.h | 208 ++ .../NarrowPhaseCollision/btPointCollector.h | 64 + .../NarrowPhaseCollision/btRaycastCallback.cpp | 175 ++ .../NarrowPhaseCollision/btRaycastCallback.h | 71 + .../btSimplexSolverInterface.h | 63 + .../btSubSimplexConvexCast.cpp | 160 ++ .../NarrowPhaseCollision/btSubSimplexConvexCast.h | 50 + .../btVoronoiSimplexSolver.cpp | 609 ++++ .../NarrowPhaseCollision/btVoronoiSimplexSolver.h | 178 ++ .../Character/btCharacterControllerInterface.h | 45 + .../Character/btKinematicCharacterController.cpp | 553 ++++ .../Character/btKinematicCharacterController.h | 145 + .../ConstraintSolver/btConeTwistConstraint.cpp | 1117 ++++++++ .../ConstraintSolver/btConeTwistConstraint.h | 332 +++ .../ConstraintSolver/btConstraintSolver.h | 52 + .../ConstraintSolver/btContactConstraint.cpp | 134 + .../ConstraintSolver/btContactConstraint.h | 68 + .../ConstraintSolver/btContactSolverInfo.h | 87 + .../ConstraintSolver/btGeneric6DofConstraint.cpp | 1012 +++++++ .../ConstraintSolver/btGeneric6DofConstraint.h | 588 ++++ .../btGeneric6DofSpringConstraint.cpp | 146 + .../btGeneric6DofSpringConstraint.h | 54 + .../ConstraintSolver/btHinge2Constraint.cpp | 66 + .../ConstraintSolver/btHinge2Constraint.h | 58 + .../ConstraintSolver/btHingeConstraint.cpp | 992 +++++++ .../ConstraintSolver/btHingeConstraint.h | 332 +++ .../ConstraintSolver/btJacobianEntry.h | 156 ++ .../ConstraintSolver/btPoint2PointConstraint.cpp | 229 ++ .../ConstraintSolver/btPoint2PointConstraint.h | 161 ++ .../btSequentialImpulseConstraintSolver.cpp | 1174 ++++++++ .../btSequentialImpulseConstraintSolver.h | 132 + .../ConstraintSolver/btSliderConstraint.cpp | 857 ++++++ .../ConstraintSolver/btSliderConstraint.h | 321 +++ .../ConstraintSolver/btSolve2LinearConstraint.cpp | 255 ++ .../ConstraintSolver/btSolve2LinearConstraint.h | 107 + .../BulletDynamics/ConstraintSolver/btSolverBody.h | 191 ++ .../ConstraintSolver/btSolverConstraint.h | 96 + .../ConstraintSolver/btTypedConstraint.cpp | 136 + .../ConstraintSolver/btTypedConstraint.h | 302 ++ .../ConstraintSolver/btUniversalConstraint.cpp | 63 + .../ConstraintSolver/btUniversalConstraint.h | 60 + .../src/BulletDynamics/Dynamics/Bullet-C-API.cpp | 405 +++ .../BulletDynamics/Dynamics/btActionInterface.h | 50 + .../Dynamics/btContinuousDynamicsWorld.cpp | 196 ++ .../Dynamics/btContinuousDynamicsWorld.h | 46 + .../Dynamics/btDiscreteDynamicsWorld.cpp | 1161 ++++++++ .../Dynamics/btDiscreteDynamicsWorld.h | 198 ++ .../src/BulletDynamics/Dynamics/btDynamicsWorld.h | 148 + .../src/BulletDynamics/Dynamics/btRigidBody.cpp | 400 +++ .../src/BulletDynamics/Dynamics/btRigidBody.h | 670 +++++ .../Dynamics/btSimpleDynamicsWorld.cpp | 253 ++ .../Dynamics/btSimpleDynamicsWorld.h | 81 + .../BulletDynamics/Vehicle/btRaycastVehicle.cpp | 758 +++++ .../src/BulletDynamics/Vehicle/btRaycastVehicle.h | 236 ++ .../BulletDynamics/Vehicle/btVehicleRaycaster.h | 35 + .../src/BulletDynamics/Vehicle/btWheelInfo.cpp | 56 + .../src/BulletDynamics/Vehicle/btWheelInfo.h | 119 + .../src/BulletMultiThreaded/Makefile.original | 187 ++ hkl3d/bullet/src/BulletMultiThreaded/MiniCL.cpp | 517 ++++ .../BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp | 74 + .../BulletMultiThreaded/MiniCLTask/MiniCLTask.h | 62 + .../BulletMultiThreaded/MiniCLTaskScheduler.cpp | 519 ++++ .../src/BulletMultiThreaded/MiniCLTaskScheduler.h | 194 ++ .../src/BulletMultiThreaded/PlatformDefinitions.h | 84 + .../src/BulletMultiThreaded/PosixThreadSupport.cpp | 249 ++ .../src/BulletMultiThreaded/PosixThreadSupport.h | 124 + .../src/BulletMultiThreaded/PpuAddressSpace.h | 20 + .../SequentialThreadSupport.cpp | 93 + .../BulletMultiThreaded/SequentialThreadSupport.h | 92 + .../SpuCollisionObjectWrapper.cpp | 48 + .../SpuCollisionObjectWrapper.h | 40 + .../SpuCollisionTaskProcess.cpp | 318 +++ .../BulletMultiThreaded/SpuCollisionTaskProcess.h | 163 ++ .../SpuContactManifoldCollisionAlgorithm.cpp | 69 + .../SpuContactManifoldCollisionAlgorithm.h | 120 + .../src/BulletMultiThreaded/SpuDoubleBuffer.h | 110 + .../bullet/src/BulletMultiThreaded/SpuFakeDma.cpp | 211 ++ hkl3d/bullet/src/BulletMultiThreaded/SpuFakeDma.h | 135 + .../SpuGatheringCollisionDispatcher.cpp | 251 ++ .../SpuGatheringCollisionDispatcher.h | 72 + .../src/BulletMultiThreaded/SpuLibspe2Support.cpp | 257 ++ .../src/BulletMultiThreaded/SpuLibspe2Support.h | 180 ++ .../SpuNarrowPhaseCollisionTask/Box.h | 172 ++ .../SpuCollisionShapes.cpp | 302 ++ .../SpuCollisionShapes.h | 126 + .../SpuContactResult.cpp | 242 ++ .../SpuNarrowPhaseCollisionTask/SpuContactResult.h | 106 + .../SpuConvexPenetrationDepthSolver.h | 51 + .../SpuGatheringCollisionTask.cpp | 1381 +++++++++ .../SpuGatheringCollisionTask.h | 140 + .../SpuNarrowPhaseCollisionTask/SpuLocalSupport.h | 19 + .../SpuMinkowskiPenetrationDepthSolver.cpp | 348 +++ .../SpuMinkowskiPenetrationDepthSolver.h | 48 + .../SpuPreferredPenetrationDirections.h | 70 + .../SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp | 1155 ++++++++ .../SpuNarrowPhaseCollisionTask/boxBoxDistance.h | 66 + .../SpuNarrowPhaseCollisionTask/readme.txt | 1 + .../SpuSampleTask/SpuSampleTask.cpp | 214 ++ .../SpuSampleTask/SpuSampleTask.h | 54 + .../BulletMultiThreaded/SpuSampleTask/readme.txt | 1 + .../BulletMultiThreaded/SpuSampleTaskProcess.cpp | 222 ++ .../src/BulletMultiThreaded/SpuSampleTaskProcess.h | 153 + hkl3d/bullet/src/BulletMultiThreaded/SpuSync.h | 148 + .../src/BulletMultiThreaded/Win32ThreadSupport.cpp | 262 ++ .../src/BulletMultiThreaded/Win32ThreadSupport.h | 132 + .../BulletMultiThreaded/btGpu3DGridBroadphase.cpp | 590 ++++ .../BulletMultiThreaded/btGpu3DGridBroadphase.h | 138 + .../btGpu3DGridBroadphaseSharedCode.h | 430 +++ .../btGpu3DGridBroadphaseSharedDefs.h | 61 + .../btGpu3DGridBroadphaseSharedTypes.h | 67 + .../bullet/src/BulletMultiThreaded/btGpuDefines.h | 211 ++ .../src/BulletMultiThreaded/btGpuUtilsSharedCode.h | 55 + .../src/BulletMultiThreaded/btGpuUtilsSharedDefs.h | 52 + .../btParallelConstraintSolver.cpp | 74 + .../btParallelConstraintSolver.h | 42 + .../btThreadSupportInterface.cpp | 22 + .../BulletMultiThreaded/btThreadSupportInterface.h | 50 + .../vectormath/scalar/cpp/boolInVec.h | 225 ++ .../vectormath/scalar/cpp/floatInVec.h | 343 +++ .../vectormath/scalar/cpp/mat_aos.h | 1630 +++++++++++ .../vectormath/scalar/cpp/quat_aos.h | 433 +++ .../vectormath/scalar/cpp/vec_aos.h | 1426 ++++++++++ .../vectormath/scalar/cpp/vectormath_aos.h | 1872 +++++++++++++ .../src/BulletMultiThreaded/vectormath2bullet.h | 80 + hkl3d/bullet/src/BulletSoftBody/btSoftBody.cpp | 2931 ++++++++++++++++++++ hkl3d/bullet/src/BulletSoftBody/btSoftBody.h | 891 ++++++ .../btSoftBodyConcaveCollisionAlgorithm.cpp | 368 +++ .../btSoftBodyConcaveCollisionAlgorithm.h | 153 + .../src/BulletSoftBody/btSoftBodyHelpers.cpp | 1019 +++++++ .../bullet/src/BulletSoftBody/btSoftBodyHelpers.h | 143 + .../src/BulletSoftBody/btSoftBodyInternals.h | 931 +++++++ .../btSoftBodyRigidBodyCollisionConfiguration.cpp | 134 + .../btSoftBodyRigidBodyCollisionConfiguration.h | 48 + .../btSoftRigidCollisionAlgorithm.cpp | 82 + .../BulletSoftBody/btSoftRigidCollisionAlgorithm.h | 75 + .../BulletSoftBody/btSoftRigidDynamicsWorld.cpp | 292 ++ .../src/BulletSoftBody/btSoftRigidDynamicsWorld.h | 97 + .../btSoftSoftCollisionAlgorithm.cpp | 46 + .../BulletSoftBody/btSoftSoftCollisionAlgorithm.h | 69 + hkl3d/bullet/src/BulletSoftBody/btSparseSDF.h | 306 ++ hkl3d/bullet/src/LinearMath/btAabbUtil2.h | 236 ++ hkl3d/bullet/src/LinearMath/btAlignedAllocator.cpp | 205 ++ hkl3d/bullet/src/LinearMath/btAlignedAllocator.h | 107 + hkl3d/bullet/src/LinearMath/btAlignedObjectArray.h | 464 ++++ hkl3d/bullet/src/LinearMath/btConvexHull.cpp | 1174 ++++++++ hkl3d/bullet/src/LinearMath/btConvexHull.h | 241 ++ hkl3d/bullet/src/LinearMath/btDefaultMotionState.h | 40 + hkl3d/bullet/src/LinearMath/btGeometryUtil.cpp | 185 ++ hkl3d/bullet/src/LinearMath/btGeometryUtil.h | 42 + hkl3d/bullet/src/LinearMath/btHashMap.h | 434 +++ hkl3d/bullet/src/LinearMath/btIDebugDraw.h | 316 +++ hkl3d/bullet/src/LinearMath/btList.h | 73 + hkl3d/bullet/src/LinearMath/btMatrix3x3.h | 688 +++++ hkl3d/bullet/src/LinearMath/btMinMax.h | 69 + hkl3d/bullet/src/LinearMath/btMotionState.h | 40 + hkl3d/bullet/src/LinearMath/btPoolAllocator.h | 102 + hkl3d/bullet/src/LinearMath/btQuadWord.h | 180 ++ hkl3d/bullet/src/LinearMath/btQuaternion.h | 433 +++ hkl3d/bullet/src/LinearMath/btQuickprof.cpp | 346 +++ hkl3d/bullet/src/LinearMath/btQuickprof.h | 370 +++ hkl3d/bullet/src/LinearMath/btRandom.h | 42 + hkl3d/bullet/src/LinearMath/btScalar.h | 517 ++++ hkl3d/bullet/src/LinearMath/btSerializer.cpp | 577 ++++ hkl3d/bullet/src/LinearMath/btSerializer.h | 604 ++++ hkl3d/bullet/src/LinearMath/btStackAlloc.h | 116 + hkl3d/bullet/src/LinearMath/btTransform.h | 307 ++ hkl3d/bullet/src/LinearMath/btTransformUtil.h | 228 ++ hkl3d/bullet/src/LinearMath/btVector3.h | 744 +++++ hkl3d/bullet/src/Makefile.am | 364 +++ hkl3d/bullet/src/MiniCL/cl.h | 865 ++++++ hkl3d/bullet/src/MiniCL/cl_MiniCL_Defs.h | 265 ++ hkl3d/bullet/src/MiniCL/cl_gl.h | 113 + hkl3d/bullet/src/MiniCL/cl_platform.h | 254 ++ hkl3d/bullet/src/btBulletCollisionCommon.h | 68 + hkl3d/bullet/src/btBulletDynamicsCommon.h | 49 + hkl3d/hkl3d.cpp | 290 ++ hkl3d/hkl3d.h | 78 + test/Makefile.am | 43 +- test/hkl/Makefile.am | 42 + test/{ => hkl}/bench.c | 0 test/{ => hkl}/hkl-test-axis.c | 0 test/{ => hkl}/hkl-test-detector.c | 0 test/{ => hkl}/hkl-test-error.c | 0 test/{ => hkl}/hkl-test-geometry.c | 0 test/{ => hkl}/hkl-test-interval.c | 0 test/{ => hkl}/hkl-test-lattice.c | 0 test/{ => hkl}/hkl-test-matrix.c | 0 test/{ => hkl}/hkl-test-parameter.c | 0 test/{ => hkl}/hkl-test-pseudoaxis-e4cv.c | 0 test/{ => hkl}/hkl-test-pseudoaxis-e6c.c | 0 test/{ => hkl}/hkl-test-pseudoaxis-k4cv.c | 0 test/{ => hkl}/hkl-test-pseudoaxis-k6c.c | 0 test/{ => hkl}/hkl-test-pseudoaxis.c | 0 test/{ => hkl}/hkl-test-quaternion.c | 0 test/{ => hkl}/hkl-test-sample.c | 0 test/{ => hkl}/hkl-test-source.c | 0 test/{ => hkl}/hkl-test-vector.c | 0 test/{ => hkl}/hkl-test.c | 0 test/{ => hkl}/hkl-test.h | 0 test/{ => hkl}/main.c | 0 test/hkl3d/Makefile.am | 24 + test/hkl3d/main.cpp | 50 + 423 files changed, 104557 insertions(+), 53 deletions(-) commit 1d38eebc336ab3b5059b397b52f580fc6ee31e82 Author: Frédéric-Emmanuel PICCA Date: Tue Apr 20 10:50:53 2010 +0200 * add a new method for the hkl3d library hkl/hkl-geometry.c | 26 ++++++++++++++++++++++++++ hkl/hkl-geometry.h | 3 +++ 2 files changed, 29 insertions(+) commit ab3ed9088ce3346ddc271f221406017bd03404cf Author: Frédéric-Emmanuel PICCA Date: Wed Apr 14 14:18:15 2010 +0200 * prepare for release NEWS | 7 ++++--- configure.ac | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) commit 7cefeb6687df94811555a5506955b9ce6fb61096 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 14:33:55 2010 +0200 * switch to c89 instead of c99 to ease compilation on windows. also use alloca instead of variable length arrays configure.ac | 10 ++-- hkl/Makefile.am | 4 +- hkl/hkl-axis.c | 4 +- hkl/hkl-axis.h | 2 +- hkl/hkl-detector-factory.h | 2 +- hkl/hkl-detector.c | 4 +- hkl/hkl-geometry.c | 57 +++++++++++-------- hkl/hkl-geometry.h | 2 +- hkl/hkl-lattice.c | 52 +++++++++-------- hkl/hkl-macros.h | 19 ++++--- hkl/hkl-pseudoaxis-auto.c | 42 ++++++++------ hkl/hkl-pseudoaxis-common-eulerians.c | 8 +-- hkl/hkl-pseudoaxis-common-hkl.c | 62 ++++++++++---------- hkl/hkl-pseudoaxis-common-psi.c | 69 +++++++++++----------- hkl/hkl-pseudoaxis-common-q.c | 20 +++---- hkl/hkl-pseudoaxis-common.c | 2 +- hkl/hkl-pseudoaxis-e4cv-hkl.c | 10 ++-- hkl/hkl-pseudoaxis-e4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 10 ++-- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 10 ++-- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 10 ++-- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis.c | 31 +++++----- hkl/hkl-quaternion.c | 18 +++--- hkl/hkl-sample.c | 38 +++++++------ hkl/hkl-unit.c | 2 +- hkl/hkl-unit.h | 2 +- hkl/hkl-vector.c | 2 +- test/Makefile.am | 2 +- test/bench.c | 16 +++--- test/hkl-test-axis.c | 4 +- test/hkl-test-geometry.c | 6 +- test/hkl-test-interval.c | 104 +++++++++++++++++----------------- test/hkl-test-lattice.c | 28 ++++----- test/hkl-test-pseudoaxis-e4cv.c | 41 +++++++------- test/hkl-test-pseudoaxis-e6c.c | 22 +++---- test/hkl-test-pseudoaxis-k4cv.c | 32 +++++------ test/hkl-test-pseudoaxis-k6c.c | 42 +++++++------- test/hkl-test-pseudoaxis.c | 39 ++++++------- test/hkl-test-quaternion.c | 6 +- test/hkl-test-sample.c | 17 +++--- test/hkl-test.c | 3 +- test/hkl-test.h | 2 +- test/main.c | 2 +- 46 files changed, 449 insertions(+), 417 deletions(-) commit a7a097f3c5550f4a508cfc5ff2731b2db3ab608e Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 10:17:23 2010 +0200 * do not initialize a geometry from another geometry type hkl/hkl-geometry.c | 4 ++++ 1 file changed, 4 insertions(+) commit 2b78a6dbfb239d4a0bad673d177f9eed7bd57c45 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 09:33:22 2010 +0200 * update the TODO list TODO | 2 ++ 1 file changed, 2 insertions(+) commit 55bbdb7a0b082d9769058185dac5506b32b9dda6 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 09:31:30 2010 +0200 * add the HklGeometryListItem that way it will be possible to associate information to geometries like (distance, exclusion information) gui/ghkl-callbacks.cpp | 6 ++- gui/ghkl.cpp | 4 +- gui/pseudoaxesframe.cpp | 3 +- hkl/hkl-geometry.c | 89 +++++++++++++++++++++++++++++------------ hkl/hkl-geometry.h | 20 ++++++++- hkl/hkl-pseudoaxis-factory.c | 4 +- hkl/hkl-pseudoaxis.c | 4 +- test/bench.c | 5 ++- test/hkl-test-geometry.c | 22 ++++++---- test/hkl-test-pseudoaxis-e4cv.c | 20 +++++---- test/hkl-test-pseudoaxis-e6c.c | 10 +++-- test/hkl-test-pseudoaxis-k4cv.c | 18 +++++---- test/hkl-test-pseudoaxis-k6c.c | 31 ++++++++------ test/hkl-test-pseudoaxis.c | 5 ++- 14 files changed, 163 insertions(+), 78 deletions(-) commit 6c38b669163e033762ef34f87aa51d2cfc310316 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 24 17:09:16 2010 +0100 * update the readme and news files. NEWS | 11 +++++++---- README | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) commit dda22cb3fcd41e2245ddb1d30f5641f104341f7c Author: Frédéric-Emmanuel PICCA Date: Wed Mar 24 17:02:45 2010 +0100 * add an HklGeometryConfig struct which contain all common part of the equivalent geometries. gui/ghkl-callbacks.cpp | 8 +++--- hkl/hkl-geometry-factory.c | 64 +++++++++++++++++++++++++++-------------- hkl/hkl-geometry-factory.h | 25 +++------------- hkl/hkl-geometry.c | 4 +-- hkl/hkl-geometry.h | 21 ++++++++++++-- hkl/hkl-pseudoaxis-factory.c | 4 +-- hkl/hkl-pseudoaxis-factory.h | 2 +- test/bench.c | 12 +++++--- test/hkl-test-pseudoaxis-e4cv.c | 36 +++++++++++++++-------- test/hkl-test-pseudoaxis-e6c.c | 18 ++++++++---- test/hkl-test-pseudoaxis-k4cv.c | 18 ++++++++---- test/hkl-test-pseudoaxis-k6c.c | 30 ++++++++++++------- test/hkl-test-pseudoaxis.c | 26 ++++++++++------- test/hkl-test-sample.c | 28 +++++++++++++----- 14 files changed, 187 insertions(+), 109 deletions(-) commit cd73f424416727c2069773a688b1aff22bf31bd0 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 22:13:07 2010 +0100 * fix a possible segfault gui/ghkl-callbacks.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit d8c58cb009a9da9ab591d2453999d49d2272abfc Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 22:12:48 2010 +0100 * remove useless code gui/ghkl-callbacks.cpp | 161 ------------------------------------------------- gui/ghkl.h | 15 +---- 2 files changed, 1 insertion(+), 175 deletions(-) commit 1c9734a9c376de903c09fad4fdcaefe7fa900cf6 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 21:43:43 2010 +0100 * now we can switch from one diffractometer to another one. gui/ghkl-callbacks.cpp | 20 +++++++++ gui/ghkl.cpp | 101 +++++++++++++++++++++++++++------------------ gui/ghkl.h | 8 ++-- gui/main.cpp | 2 +- hkl/hkl-geometry-factory.h | 17 ++++++++ 5 files changed, 102 insertions(+), 46 deletions(-) commit 3ffa80e697ed5c52e3bcb60cbb1b827cd7057b23 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 10:44:16 2010 +0100 * refactoring of the ghkl sample set parameters TODO | 3 + gui/ghkl-callbacks.cpp | 271 +++-------- gui/ghkl.cpp | 39 +- gui/ghkl.h | 2 + gui/ghkl.ui | 1255 +++++++++++++++++++++++++----------------------- 5 files changed, 717 insertions(+), 853 deletions(-) commit 9675896e5797db67da66cbcb3638dc3955c65dc4 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 09:16:46 2010 +0100 * add also LOG in the callbacks gui/ghkl-callbacks.cpp | 134 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) commit c9f76ab5bf93a04096b8b6d5f34c58720cdbfd48 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:47:07 2010 +0100 * add a log to help dealing with callbacks gui/ghkl.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- gui/ghkl.h | 3 +++ 2 files changed, 58 insertions(+), 4 deletions(-) commit 3f3e581aa138691c84ae12ec637b254b24db522a Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:31:49 2010 +0100 * small refactoring of the ghkl constructor gui/ghkl.cpp | 40 ++++++++++++++++++++++++---------------- gui/ghkl.h | 3 ++- 2 files changed, 26 insertions(+), 17 deletions(-) commit 24562b1bc6e3aac7a97563256880df649ef2a4e3 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:21:49 2010 +0100 * typo gui/ghkl.cpp | 33 ++++++++++++++++++++++----------- gui/ghkl.h | 48 ++++++++++++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 27 deletions(-) commit 03e576066bf8939e7986999955ac41e730d251b3 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:18:34 2010 +0100 * remove useless code gui/ghkl.cpp | 5 ----- gui/ghkl.h | 2 -- 2 files changed, 7 deletions(-) commit 86e24bcedec33a948989321c0ec362fe62a287cc Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:11:11 2010 +0100 * refactoring of the ghkl part gui/Makefile.am | 7 +- gui/ghkl-callbacks.cpp | 1118 ++++++++++++++++++++++++ gui/ghkl.cpp | 874 +++++++++++++++++++ gui/{hklwindow.h => ghkl.h} | 13 +- gui/{hkl.ui => ghkl.ui} | 0 gui/hklwindow.cpp | 1976 ------------------------------------------- gui/main.cpp | 2 +- 7 files changed, 2006 insertions(+), 1984 deletions(-) commit ed070a9f4a048855731c4192bb40c002469ced93 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:23:08 2010 +0100 * add the TAU = 1 define hkl/hkl-macros.h | 2 ++ 1 file changed, 2 insertions(+) commit f44d1d5a5450e1032c689b0710d6844b5732bfa3 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:22:52 2010 +0100 * remove unneeded fprintf message test/hkl-test-sample.c | 1 - 1 file changed, 1 deletion(-) commit a13828b04f289543635262030ef4c91ba0892b43 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:22:36 2010 +0100 * refactor the sample set_UB and afine methods hkl/hkl-sample.c | 178 +++++++++++++++++++++++++++++++++++-------------------- hkl/hkl-sample.h | 2 +- 2 files changed, 115 insertions(+), 65 deletions(-) commit 9d960ae760934c6b14a2b5cc03b174833bd2271a Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 16:04:49 2010 +0100 * add the setUB toolbutton and reorganize the ui gui/hkl.ui | 2950 ++++++++++++++++++++++++++++------------------------- gui/hklwindow.cpp | 36 + gui/hklwindow.h | 11 + 3 files changed, 1598 insertions(+), 1399 deletions(-) commit 13540127467181511b743aa4bfc3f86a122e456b Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 11:01:07 2010 +0100 * remove a memory leak gui/hklwindow.cpp | 21 ++++++++++++--------- gui/hklwindow.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) commit 69a387ab3952daeb829e3971e7904777910ea376 Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 10:14:35 2010 +0100 * remove unneeded columns in treeviews gui/hklwindow.cpp | 13 ------------- gui/modelcolumns.h | 6 ------ 2 files changed, 19 deletions(-) commit fe708c4181a5607446e9fdf16602734f98784c49 Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 10:13:56 2010 +0100 * better look of the UB matrix gui/hklwindow.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) commit 1120eddb42decb5ec27fd50709e1facf9221fc3b Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:08:55 2010 +0100 * typo test/hkl-test-lattice.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 93d961238a8fbe61b996e7061795d8af9778f9d7 Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:07:34 2010 +0100 * set the UB matrix from an external one. hkl/hkl-sample.c | 24 ++++++++++++++++++++++++ hkl/hkl-sample.h | 4 +++- test/hkl-test-sample.c | 25 +++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) commit efd8b767eaff8ab30d0fec12bf62e1a15a47c7f8 Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:06:35 2010 +0100 * add the get_1_B method to the HklLattice. hkl/hkl-lattice.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-lattice.h | 2 ++ test/hkl-test-lattice.c | 26 +++++++++++++++++++++++ 3 files changed, 83 insertions(+) commit b9685cf4526319a9313a426d39b65a535b5a7368 Author: picca Date: Mon Mar 15 18:50:22 2010 +0100 * use the ux uy and uz sample parameters in the gui gui/hkl.ui | 445 ++++++++++++++++++++++++++++++------------------------ gui/hklwindow.cpp | 52 +++++-- gui/hklwindow.h | 8 +- 3 files changed, 293 insertions(+), 212 deletions(-) commit 1f7b0557427ffa698d1d0f918e7b6b41adc97c95 Author: picca Date: Mon Mar 15 18:46:35 2010 +0100 * add the ux uy and uz HklParameter into HklSample hkl/hkl-sample.c | 54 ++++++++++++++++++++++++++++++++++++++++++++------ hkl/hkl-sample.h | 3 +++ test/hkl-test-sample.c | 12 +++++++++++ 3 files changed, 63 insertions(+), 6 deletions(-) commit 2b0d3f55236b76a0f85b8e68baa79bddf301a917 Author: picca Date: Mon Mar 15 18:45:58 2010 +0100 * remove debug stream hkl/hkl-pseudoaxis-auto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fb5cc8a2f438c41cbab1a160214807ccce593950 Author: picca Date: Mon Mar 15 16:05:26 2010 +0100 * bug when setting the sample c values in the treeview. gui/hklwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b93f76251c0917288b5d15eccedccaf7f2f7b65b Author: picca Date: Mon Mar 15 15:56:37 2010 +0100 * remove a few lines in the hkl.ui interface gui/hkl.ui | 4 ++++ 1 file changed, 4 insertions(+) commit 9ce86ec1c0f09b0bbddbf6097ec00e0f6deac995 Author: picca Date: Mon Mar 15 15:56:07 2010 +0100 * set the right unit for ux, uy and uz gui/hklwindow.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 196e15a0fa6f72a56e3e0423f2ad5ea04e33063b Author: picca Date: Mon Mar 15 11:25:33 2010 +0100 * remove all the useless affinement part. gui/hkl.ui | 1316 +++++++++++++++++++++++------------------------------ gui/hklwindow.cpp | 74 +-- gui/hklwindow.h | 9 - 3 files changed, 583 insertions(+), 816 deletions(-) commit 1a9b20091ee0d5286fe555e6e90091d1c63c7510 Author: picca Date: Fri Mar 12 18:56:30 2010 +0100 * do not use relection if the flag is unset hkl/hkl-sample.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) commit 0ea8b3e3524baf4bc661f60f2f87dc8554b12cd4 Author: Picca Frédéric-Emmanuel Date: Sun Mar 7 16:38:35 2010 +0100 * update the TODO list for the foating comparison TODO | 2 ++ 1 file changed, 2 insertions(+) commit 5a24f66bf31a5ee081a0be1be173e690360f637d Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 11:51:26 2010 +0100 * remove the empty window. gui/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6e234b1bc92175e119b4a6609b911824a4015962 Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 11:03:40 2010 +0100 * add the liststore to contain all the diffractometers gui/hkl.ui | 15 +++++++++++++++ gui/hklwindow.cpp | 4 ++++ gui/hklwindow.h | 3 +++ gui/modelcolumns.h | 13 +++++++++++++ 4 files changed, 35 insertions(+) commit f880e2dd4e9ad6ae25b4d9b9ee1608cf549f731c Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 10:44:28 2010 +0100 * add the preference dialog gui/hkl.ui | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++---- gui/hklwindow.cpp | 30 +++++++++++++++++++ gui/hklwindow.h | 11 +++++++ 3 files changed, 123 insertions(+), 6 deletions(-) commit 69f21adbbc6f21c84520548928dc12876eb858a9 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 4 15:58:07 2010 +0100 * the missing part of the rename '* _' -> '*_' gui/hklwindow.h | 118 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 59 insertions(+), 59 deletions(-) commit d05449bb19cd366e6cafd9041221ca807e467229 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 16:54:52 2010 +0100 * add some DEBUG capability in the pseudo axes auto file to ease the debugging. hkl/hkl-pseudoaxis-auto.c | 78 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 25 deletions(-) commit a9f431588685700e6a3c3758150a86109c6daa66 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 15:39:03 2010 +0100 * solve a bug in the pseudo axes set method now if only one of the solved function sucess, return success. hkl/hkl-pseudoaxis-auto.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 42fd3962ce6e04694b5c48eef9cb6300bcc17798 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 15:36:30 2010 +0100 * doc :) gui/pseudoaxesframe.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 08c8af0b8c92b954a68da858f65f0558967fdc0a Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 13:54:40 2010 +0100 * fix a typo in the pseudo.ui file gui/hkl.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bfc4a4ecb3c0ad8ec53f43716739a6824b7e1c63 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 08:42:27 2010 +0100 * rename members m_ -> _ gui/hklwindow.cpp | 794 +++++++++++++++++++++++++++--------------------------- gui/hklwindow.h | 156 +++++------ 2 files changed, 475 insertions(+), 475 deletions(-) commit 9cf926035e9cb53e546717e70bd3c047fdd25ce4 Author: Picca Frédéric-Emmanuel Date: Mon Mar 1 19:50:45 2010 +0100 * add a new compilation flag -Wmissing-declarations to avoid futur bugs like functions signature discripencies hkl/Makefile.am | 2 +- hkl/hkl-macros.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) commit 6de06ff4a5afd0be6d6c6bc83fd5321587e9bd03 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 17:18:06 2010 +0100 * reorganisation of the gui gui/hkl.ui | 1911 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 945 insertions(+), 966 deletions(-) commit 51f2311af71ba10ec06736c7a1fa07eac655438c Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 17:09:43 2010 +0100 * add the uxuyuz part gui/hkl.ui | 206 +++++++++++++++++++++++++++++++++++++++++++++--------- gui/hklwindow.cpp | 37 ++++++++++ gui/hklwindow.h | 5 ++ 3 files changed, 216 insertions(+), 32 deletions(-) commit 9babf4c95577b356653e4652915d6f3fe0052b95 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 15:07:53 2010 +0100 * another bunch of dead code. gui/Makefile.am | 2 - gui/axespinbutton.cpp | 179 -------------------------------------------------- gui/axespinbutton.h | 74 --------------------- gui/hklwindow.cpp | 2 - gui/hklwindow.h | 2 - 5 files changed, 259 deletions(-) commit 95a228eaf2396cb7f51be2c829d25bb9c42c78e9 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 15:04:13 2010 +0100 * remove dead code gui/hkl.ui | 198 ++++++------------------------------------------------ gui/hklwindow.cpp | 100 ++------------------------- gui/hklwindow.h | 8 --- 3 files changed, 27 insertions(+), 279 deletions(-) commit 1ec9a447169d5c50370ba95b280fe6d83c8ecbe1 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 11:52:03 2010 +0100 * add the solution treeview gui/hkl.ui | 10 +++++- gui/hklwindow.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ gui/hklwindow.h | 7 ++++ gui/modelcolumns.h | 20 ++++++++++++ 4 files changed, 130 insertions(+), 1 deletion(-) commit e323cae729cc8735d4b43673ca05c3b38c45824d Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:49:29 2010 +0100 * add a test method for the mantis bug #15110 the signature of the hkl_pseudo_axis_engine_init method was wrong. test/hkl-test-pseudoaxis-k6c.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit b933a5a1ca2de6d5fb26848760844fd147176e75 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:16:52 2010 +0100 * connect the initialize button gui/pseudoaxesframe.cpp | 13 +++++++++++++ gui/pseudoaxesframe.h | 2 ++ 2 files changed, 15 insertions(+) commit 2dab8cea9a7dbcf605ccec050c20e0515cec6096 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:16:34 2010 +0100 * bug in the initialize part of the core really strange, the compiler did not complain about the wrong hkl_pseudo_axis_engine_init_func signature. hkl/hkl-pseudoaxis-common.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) commit d71dec87ca9e87113a95637fd53f175fcf92c801 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:15:43 2010 +0100 * remove a warning hkl/hkl-sample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 10ffa2ad957f51cf9787c87f159170cfade7c9d7 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 16:06:56 2010 +0100 * the pseudoAxesFrame PseudoAxes value celles becomes red after edition that way the users know that it must apply the new pseudoAxes values. gui/hkl.ui | 2 ++ gui/pseudoaxesframe.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) commit eeac4d21b4d7fe399e8fe962d66818e1720270f6 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 15:20:52 2010 +0100 * now the PseudoAxesFrames are updated when changing an Axis value. gui/hklwindow.cpp | 33 ++++++++++++++++++++++++++++++--- gui/hklwindow.h | 2 ++ gui/pseudoaxesframe.cpp | 29 ++++++++++++++++++++++++++++- gui/pseudoaxesframe.h | 14 ++++++++++++++ 4 files changed, 74 insertions(+), 4 deletions(-) commit c700e3c503994a70d26ab32b825620c23344c73e Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 14:26:17 2010 +0100 * now the PseudoAxisFrame PseudoAxis is connected to the hkl part. gui/pseudo.ui | 10 ++++++---- gui/pseudoaxesframe.cpp | 49 +++++++++++++++++++++++++++++++++++++++++-------- gui/pseudoaxesframe.h | 11 ++++++++--- 3 files changed, 55 insertions(+), 15 deletions(-) commit 31a3bbcf32d9340699494e54108f22541e1e69b2 Author: Picca Frédéric-Emmanuel Date: Sun Feb 28 23:05:49 2010 +0100 * re-work the gui interface gui/Makefile.am | 6 +- gui/hkl.ui | 510 ++++++++++++++++++++++++-------------------- gui/hklwindow.cpp | 10 + gui/hklwindow.h | 397 +++++++++++++++++----------------- gui/pseudo.ui | 206 ++++++++++++++++++ gui/pseudoaxesframe.cpp | 119 +++++++++++ gui/pseudoaxesframe.h | 84 ++++++++ gui/pseudoaxespinbutton.cpp | 160 -------------- gui/pseudoaxespinbutton.h | 68 ------ 9 files changed, 900 insertions(+), 660 deletions(-) commit b7f0da76bdacca56ed55c05fdb0e5680076bdcc8 Author: Picca Frédéric-Emmanuel Date: Sun Feb 28 15:00:31 2010 +0100 * add the copyright headers gui/axespinbutton.cpp | 21 +++++++++++++++++++++ gui/axespinbutton.h | 21 +++++++++++++++++++++ gui/hklwindow.cpp | 21 +++++++++++++++++++++ gui/hklwindow.h | 21 +++++++++++++++++++++ gui/main.cpp | 21 +++++++++++++++++++++ gui/modelcolumns.h | 21 +++++++++++++++++++++ gui/pseudoaxespinbutton.cpp | 21 +++++++++++++++++++++ gui/pseudoaxespinbutton.h | 21 +++++++++++++++++++++ 8 files changed, 168 insertions(+) commit 679245a19aee30c3ee6a34d590d3729ed456a841 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 23:32:18 2010 +0100 * reorganize the hkl.ui gui/hkl.ui | 1931 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 986 insertions(+), 945 deletions(-) commit 9e3fba61b59559856697b8ec97d2aa66b6b076a1 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 23:32:05 2010 +0100 * fix the sample alpha beta and gamma set values gui/hklwindow.cpp | 87 +++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 44 deletions(-) commit f0ce182d27d94dd431c6190f49cb3b1ddb80b19d Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 21:52:45 2010 +0100 * now the ghkl also look for the pkgdatadir file for hkl.ui gui/Makefile.am | 1 + gui/hklwindow.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) commit d921844b9a690d0460b45106467939e946214448 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 19:40:01 2010 +0100 * fix the gui Makefile.am gui/Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) commit a8865210f03c25279b01b4ac19523269de5030b1 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 19:08:14 2010 +0100 * rename the sample type enum gui/hklwindow.cpp | 4 ++-- hkl/hkl-sample.h | 2 +- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 12 ++++++------ test/hkl-test-pseudoaxis-e6c.c | 6 +++--- test/hkl-test-pseudoaxis-k4cv.c | 6 +++--- test/hkl-test-pseudoaxis-k6c.c | 8 ++++---- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-sample.c | 26 +++++++++++++------------- 9 files changed, 35 insertions(+), 35 deletions(-) commit 45783d41cef824a954089ffd72492c9c80e536ae Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 18:55:08 2010 +0100 * remove a bug hkl/hkl-vector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e248f8f76f455060845bc67ca4257c772407de7b Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 18:47:06 2010 +0100 * add the ghkl gui interface Makefile.am | 2 +- configure.ac | 4 + gui/Makefile.am | 23 + gui/axespinbutton.cpp | 158 ++++ gui/axespinbutton.h | 53 ++ gui/hkl.ui | 2053 +++++++++++++++++++++++++++++++++++++++++++ gui/hklwindow.cpp | 1833 ++++++++++++++++++++++++++++++++++++++ gui/hklwindow.h | 211 +++++ gui/main.cpp | 12 + gui/modelcolumns.h | 113 +++ gui/pseudoaxespinbutton.cpp | 139 +++ gui/pseudoaxespinbutton.h | 47 + 12 files changed, 4647 insertions(+), 1 deletion(-) commit 4ef0743dcd076a784438520d63186dfa42d90e13 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:42:05 2010 +0100 * fix a bunch or gtk-doc warning for the HklError hkl/hkl-error.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 708844de310afdd8a5bd5e7330216c4e7e5fcce1 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:36:36 2010 +0100 * remove a warning during the gtk-doc generation process Documentation/api/hkl-sections.txt | 6 ++---- hkl/hkl-matrix.c | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) commit ed1bd4c108586fc7d0b432e9b576da083c1bf9fd Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:31:10 2010 +0100 * update the HklVector files Documentation/api/hkl-sections.txt | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 4 +-- hkl/hkl-pseudoaxis-common-psi.c | 4 +-- hkl/hkl-vector.c | 50 ++++++++++++++++---------------- hkl/hkl-vector.h | 58 +++++++++++++++++++------------------- test/hkl-test-vector.c | 6 ++-- 6 files changed, 62 insertions(+), 62 deletions(-) commit 63c68d876157e5d40eef27651e56fa4ac46f37b9 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:21:05 2010 +0100 * add the Hklquaternnion documentation Documentation/api/hkl-sections.txt | 6 +- hkl/hkl-axis.c | 7 ++- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-quaternion.c | 124 +++++++++++++++++++++++++++++-------- hkl/hkl-quaternion.h | 63 +++---------------- test/hkl-test-quaternion.c | 22 +++---- 7 files changed, 129 insertions(+), 99 deletions(-) commit 6dd1ca45bd0760b2c4fdfff8d795ee09b78ab931 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 13:47:57 2010 +0100 * add doc for HklMatrix and rename a bunch of methods Documentation/api/hkl-sections.txt | 6 +- hkl/hkl-matrix.c | 136 ++++++++++++++++++++++++++++++++----- hkl/hkl-matrix.h | 27 ++++---- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-sample.c | 14 ++-- test/hkl-test-matrix.c | 18 ++--- test/hkl-test-pseudoaxis-k6c.c | 4 +- 8 files changed, 158 insertions(+), 53 deletions(-) commit 64d65316fbca4432acfe291c4497460df1df3923 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 12:59:16 2010 +0100 * correct the api Makefile dependencies. Documentation/api/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 14b8749a29cd2fbc31cc27b7283c63e7a74fef93 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 12:58:54 2010 +0100 * correcte a few spelling errors. hkl/hkl-vector.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 51704dec42bba17284400f5ccdd5e34f6ed3ac28 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 09:09:31 2010 +0100 * add the HklVector documentation hkl/hkl-vector.c | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++---- hkl/hkl-vector.h | 2 +- 2 files changed, 201 insertions(+), 16 deletions(-) commit a210f5ad539e7bdcbad33f6ce78ab50d33ef50b0 Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 10:36:29 2010 +0100 * update the NEWS file NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 7693ade54031c56d4dbedb9e63bec2ac2e994654 Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 09:59:38 2010 +0100 * update the dependencies for the build README | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) commit d34cf43596e0f5f7d5e0900a4e2d8b4408126bde Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 09:18:04 2010 +0100 * add a few gtk-doc files Documentation/api/hkl-docs.sgml | 61 ++++++ Documentation/api/hkl-sections.txt | 431 +++++++++++++++++++++++++++++++++++++ Documentation/api/hkl.types | 0 3 files changed, 492 insertions(+) commit acfa07b7ad660cc337b22eaf1217ff264b11afd0 Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:48:08 2010 +0100 * add a missong file hkl/usage.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) commit da3e130d5226c0a62a98f3b82f98c427300b09ff Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:36:01 2010 +0100 * add the m library in the Libs.private hkl.pc.in | 1 + 1 file changed, 1 insertion(+) commit 2db8aceb5b2bebc673303a25fdfc89cc4bf6b00e Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:30:46 2010 +0100 * clean and rename gtk-doc -> api Documentation/Doxyfile | 1342 -- Documentation/Makefile.am | 2 +- Documentation/Maxima/E4C_bissector.max | 12 - Documentation/Maxima/E4C_constant_chi.max | 12 - Documentation/Maxima/E4C_constant_chi_phi.max | 12 - Documentation/Maxima/E4C_constant_omega.max | 12 - Documentation/Maxima/E4C_delta_omega.max | 12 - Documentation/{gtk-doc => api}/Makefile.am | 0 Documentation/example/SConscript | 15 - Documentation/example/plot.gnuplot | 85 - Documentation/example/psi.cpp | 50 - Documentation/uml/hkl.dia | 22193 ----------------------- Documentation/uml/next_hkl.dia | 22726 ------------------------ configure.ac | 2 +- fbuildroot.py | 29 - test/wscript_build | 27 - waf | Bin 84763 -> 0 bytes wscript | 59 - 18 files changed, 2 insertions(+), 46588 deletions(-) commit b32692c84d5275a6318f6ca043f6eef2a37fa36b Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:15:59 2010 +0100 * reorganize the code to be more gtk-doc compatible Documentation/Makefile.am | 2 + Documentation/gtk-doc/Makefile.am | 101 ++++++++ INSTALL | 254 ++++++++++++++++----- Makefile.am | 3 +- autogen.sh | 3 +- configure.ac | 11 +- {src => hkl}/Makefile.am | 49 +++- {src => hkl}/hkl-axis.c | 0 {include/hkl => hkl}/hkl-axis.h | 0 {src => hkl}/hkl-detector-factory.c | 0 {include/hkl => hkl}/hkl-detector-factory.h | 0 {src => hkl}/hkl-detector.c | 0 {include/hkl => hkl}/hkl-detector.h | 0 {src => hkl}/hkl-error.c | 0 {include/hkl => hkl}/hkl-error.h | 0 {src => hkl}/hkl-geometry-factory.c | 0 {include/hkl => hkl}/hkl-geometry-factory.h | 0 {src => hkl}/hkl-geometry.c | 0 {include/hkl => hkl}/hkl-geometry.h | 0 {src => hkl}/hkl-interval.c | 0 {include/hkl => hkl}/hkl-interval.h | 0 {src => hkl}/hkl-lattice.c | 0 {include/hkl => hkl}/hkl-lattice.h | 0 {include/hkl => hkl}/hkl-list.h | 0 {include/hkl => hkl}/hkl-macros.h | 0 {src => hkl}/hkl-matrix.c | 0 {include/hkl => hkl}/hkl-matrix.h | 0 {src => hkl}/hkl-parameter.c | 0 {include/hkl => hkl}/hkl-parameter.h | 0 {src => hkl}/hkl-pseudoaxis-auto.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-auto.h | 0 {src => hkl}/hkl-pseudoaxis-common-eulerians.c | 0 .../hkl => hkl}/hkl-pseudoaxis-common-eulerians.h | 0 {src => hkl}/hkl-pseudoaxis-common-hkl.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-common-hkl.h | 0 {src => hkl}/hkl-pseudoaxis-common-psi.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-common-psi.h | 0 {src => hkl}/hkl-pseudoaxis-common-q.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-common-q.h | 0 {src => hkl}/hkl-pseudoaxis-common.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-common.h | 0 {src => hkl}/hkl-pseudoaxis-e4cv-hkl.c | 0 {src => hkl}/hkl-pseudoaxis-e4cv-psi.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-e4cv.h | 0 {src => hkl}/hkl-pseudoaxis-e6c-hkl.c | 0 {src => hkl}/hkl-pseudoaxis-e6c-psi.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-e6c.h | 0 {src => hkl}/hkl-pseudoaxis-factory.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-factory.h | 0 {src => hkl}/hkl-pseudoaxis-k4cv-hkl.c | 0 {src => hkl}/hkl-pseudoaxis-k4cv-psi.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-k4cv.h | 0 {src => hkl}/hkl-pseudoaxis-k6c-hkl.c | 0 {src => hkl}/hkl-pseudoaxis-k6c-psi.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-k6c.h | 0 {src => hkl}/hkl-pseudoaxis-zaxis-hkl.c | 0 {include/hkl => hkl}/hkl-pseudoaxis-zaxis.h | 0 {src => hkl}/hkl-pseudoaxis.c | 0 {include/hkl => hkl}/hkl-pseudoaxis.h | 0 {src => hkl}/hkl-quaternion.c | 0 {include/hkl => hkl}/hkl-quaternion.h | 0 {src => hkl}/hkl-sample.c | 0 {include/hkl => hkl}/hkl-sample.h | 0 {src => hkl}/hkl-source.c | 0 {include/hkl => hkl}/hkl-source.h | 0 {src => hkl}/hkl-unit.c | 0 {include/hkl => hkl}/hkl-unit.h | 0 {src => hkl}/hkl-vector.c | 0 {include/hkl => hkl}/hkl-vector.h | 0 {include => hkl}/hkl.h | 0 include/Makefile.am | 32 --- include/hkl/SConscript | 26 --- src/usage.c | 110 --------- src/wscript_build | 12 - test/Makefile.am | 14 +- 75 files changed, 357 insertions(+), 260 deletions(-) commit 25072b4420d63fbf031a6424af735fdb4c6d2171 Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 19:10:43 2010 +0100 * correct a few warnings include/hkl/hkl-pseudoaxis-auto.h | 3 ++- include/hkl/hkl-pseudoaxis-common-hkl.h | 6 ++++-- include/hkl/hkl-pseudoaxis-common-psi.h | 4 ++-- src/hkl-pseudoaxis-auto.c | 3 ++- src/hkl-pseudoaxis-common-eulerians.c | 6 ++++-- src/hkl-pseudoaxis-common-hkl.c | 6 ++++-- src/hkl-pseudoaxis-common-psi.c | 6 ++++-- src/hkl-pseudoaxis-common-q.c | 6 ++++-- 8 files changed, 26 insertions(+), 14 deletions(-) commit 45a9e3cec68b45d657f3ba741ed0d84b6df921fe Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 18:13:39 2010 +0100 * prepare for Error handling in the pseudo axes part include/hkl/hkl-pseudoaxis.h | 10 ++++---- src/hkl-pseudoaxis.c | 52 +++++++++++++++++++++++++++++------------ test/bench.c | 6 ++--- test/hkl-test-pseudoaxis-e4cv.c | 46 ++++++++++++++++++------------------ test/hkl-test-pseudoaxis-e6c.c | 20 ++++++++-------- test/hkl-test-pseudoaxis-k4cv.c | 16 ++++++------- test/hkl-test-pseudoaxis-k6c.c | 22 ++++++++--------- test/hkl-test-pseudoaxis.c | 6 ++--- 8 files changed, 101 insertions(+), 77 deletions(-) commit ee4a447a87d9de7c6dc66fdeed53d04ee3f77345 Author: Picca Frederic-Emmanuel Date: Wed Feb 10 15:53:13 2010 +0100 * use the right dircategory for the texinfo documentation Documentation/hkl.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f6e92376f3bbed247227c853fbb129697f9c96d3 Author: Picca Frederic-Emmanuel Date: Tue Feb 9 13:39:15 2010 +0100 * update the authors list AUTHORS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit d36f012b712a7e5e94cad397c07a6eb8a0ab42b6 Author: Picca Frederic-Emmanuel Date: Mon Feb 8 14:42:35 2010 +0100 * fix the texindo documentation Documentation/hkl.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28d63c951adbbae155ee82b5e2978e7382409212 Author: Picca Frederic-Emmanuel Date: Mon Feb 8 14:40:21 2010 +0100 * use LIBADD instead of LIBS src/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f896c5dbf9ded04de6fec34d1251665113b4346d Author: Picca Frederic-Emmanuel Date: Sat Feb 6 10:39:56 2010 +0100 * extract the waf VERSION from the configure.ac wscript | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) commit 07619a50136a1fe1a6245945b1f80d57b7930b55 Author: Picca Frédéric-Emmanuel Date: Tue Feb 2 13:39:46 2010 +0100 * update the test makefile to compile correctly. test/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 84db9c2a18433ba9b7fe75f92e80a376fef50f34 Author: System User Date: Fri Jan 22 16:01:34 2010 +0100 * add a dist-hook to generate the changelog from the git repository. Makefile.am | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 653355321c6c2fcc98ae449a8237ab3579080493 Author: System User Date: Tue Jan 19 11:52:08 2010 +0100 * downgrad autoconf 2.65 -> 2.59 to allow working with the brand new RHEL 4!!! INSTALL | 169 +++++++++++++++++------------------------------------------ configure.ac | 13 +++-- 2 files changed, 58 insertions(+), 124 deletions(-) commit b6cf1d7bdb5ed74df8e3dcd3bcf670467de9fa7c Author: Picca Frederic-Emmanuel Date: Wed Jan 20 22:12:18 2010 +0100 * add the fbuild buildsystem. fbuildroot.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) commit 58ac27a28ae1c5356cc877ce91a9d12493d1ebc3 Author: System User Date: Thu Jan 14 15:19:32 2010 +0100 * small optimization to avoid geometry copy if just updating the current reflection geometry. src/hkl-sample.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 28d37361ce776a40054f28732973fe9f8e554fac Author: Frédéric-Emmanuel PICCA Date: Tue Jan 19 10:12:25 2010 +0100 * doc of the eulerian 4 circle "hkl" pseudo axes. Documentation/hkl.texi | 78 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) commit 6dccb39b8a98fa0d658df8be8f00c61480706708 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 18 16:33:04 2010 +0100 * update the documentation Licence GPL-3 Documentation/hkl.texi | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) commit 48a6d23fd95524f98a037b27bf5115a2ee226b3a Author: Frédéric-Emmanuel PICCA Date: Mon Jan 18 13:42:28 2010 +0100 * wrote the documentation of all the diffractometer geometries Documentation/hkl.texi | 163 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 151 insertions(+), 12 deletions(-) commit 8233620a251b9f0b81d09c52f670443a989b24c1 Author: Picca Frederic-Emmanuel Date: Sun Jan 17 19:39:06 2010 +0100 * add the texinfo doc Documentation/Makefile.am | 1 + Documentation/SConscript | 10 - Documentation/{user-guide.txt => hkl.texi} | 359 +++++++++++++++++------------ Makefile.am | 2 +- configure.ac | 3 +- 5 files changed, 213 insertions(+), 162 deletions(-) commit 674b41687256469e016c1e56119939ccd9f582a5 Author: Picca Frederic-Emmanuel Date: Fri Jan 15 23:34:57 2010 +0100 * fix for real the inline problem. include/hkl/hkl-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 02525fabaa3e37920f9dedb0c95a249137767e1e Author: Frédéric-Emmanuel PICCA Date: Fri Jan 15 17:18:27 2010 +0100 * correct the generation of the hkl.pc file hkl.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3388bc4fd288aa49fe693e6dab9de129f67e1d57 Author: System User Date: Thu Jan 14 15:06:06 2010 +0100 * add a method to set the HklSampleReflection geometry part. include/hkl/hkl-sample.h | 2 ++ src/hkl-parameter.c | 10 +++++--- src/hkl-sample.c | 44 ++++++++++++++++++++++++--------- test/hkl-test-sample.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 16 deletions(-) commit f0441ebe3febbf8d3aea1b1502b40df262a5ceff Author: System User Date: Tue Jan 12 10:14:18 2010 +0100 * solve an inline problem with the gcc3.4 compiler used at SOLEIL include/hkl/hkl-macros.h | 11 +---------- src/usage.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) commit ef917fcb81effb14a51dbe721c677c2025d0d712 Author: System User Date: Mon Jan 11 14:51:07 2010 +0100 * remove an unused variable src/hkl-error.c | 1 - 1 file changed, 1 deletion(-) commit 621cb73f742af96eab421301e0fa0a58588a4ecf Author: Frédéric-Emmanuel PICCA Date: Mon Jan 11 17:12:37 2010 +0100 * indentation include/hkl/hkl-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 046776c0b46431b7415e03fbe7d8b6ce6c8f67b0 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 11 17:12:04 2010 +0100 * use an optimized vector_rotated_quaternion method. src/hkl-vector.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) commit 041fedff1fdce0eb5507d4361ae6b3503c7f6762 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 19:52:39 2010 +0100 * remove clang warning include/hkl/hkl-macros.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit fad99b91f53c9ab4c0bea768ddc368c442070c21 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 18:58:56 2010 +0100 * few optimizations src/hkl-pseudoaxis-k4cv-hkl.c | 5 ++--- src/hkl-quaternion.c | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) commit c19e2fbdfd9abadecdf6b3f652e3db3a05059041 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:34:05 2010 +0100 * rename getter -> get in HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) commit 2ec04b89ccea50a0c4b0c2dfd2a8d08dc35d97f0 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:26:34 2010 +0100 * rename init -> initialize in HklPseudoAxisEngineMode include/hkl/hkl-pseudoaxis.h | 12 +++++------ src/hkl-pseudoaxis.c | 20 +++++++++--------- test/bench.c | 6 +++--- test/hkl-test-pseudoaxis-e4cv.c | 46 ++++++++++++++++++++--------------------- test/hkl-test-pseudoaxis-e6c.c | 20 +++++++++--------- test/hkl-test-pseudoaxis-k4cv.c | 16 +++++++------- test/hkl-test-pseudoaxis-k6c.c | 22 ++++++++++---------- test/hkl-test-pseudoaxis.c | 8 +++---- 8 files changed, 75 insertions(+), 75 deletions(-) commit ec5b3b163bc8c839e2253dbcd19c2fa5d0b21fb1 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:08:38 2010 +0100 * remove useless lines src/hkl-pseudoaxis-common-eulerians.c | 9 --------- 1 file changed, 9 deletions(-) commit 8a3e0bfc3b73c464166fd3a491da9256a34d093e Author: Picca Frederic-Emmanuel Date: Sun Jan 10 16:51:07 2010 +0100 * use the init method of HklPseudoAxisEngineMode in the constructor method include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 34 +++++++++++++--------- src/hkl-pseudoaxis-e4cv-hkl.c | 4 +-- src/hkl-pseudoaxis-e6c-hkl.c | 6 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 10 +++---- src/hkl-pseudoaxis-k6c-hkl.c | 14 ++++----- src/hkl-pseudoaxis.c | 54 +++++++++++++++++------------------ 8 files changed, 65 insertions(+), 61 deletions(-) commit 85c3e8efd6cbcfd9fd02ce95aaa388eec0254804 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:22:05 2010 +0100 * indentation src/hkl-error.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit a2ce285ec88593c6b614ce753421f8469900fe9f Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:19:22 2010 +0100 * doc include/hkl/hkl-macros.h | 1 + 1 file changed, 1 insertion(+) commit ca814c452952270aaad5f3bb4f251b2543149edc Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:19:07 2010 +0100 * standardise the memory allocation with the HKL_MALLOC macro include/hkl/hkl-macros.h | 19 +++++++++++++++++-- src/hkl-axis.c | 4 +--- src/hkl-detector.c | 8 ++------ src/hkl-error.c | 8 +++----- src/hkl-geometry.c | 12 +++--------- src/hkl-lattice.c | 8 ++------ src/hkl-parameter.c | 8 ++------ src/hkl-pseudoaxis-common-psi.c | 4 +--- src/hkl-pseudoaxis.c | 17 +++++------------ src/hkl-sample.c | 20 +++++--------------- 10 files changed, 41 insertions(+), 67 deletions(-) commit 08ec35fecde509b250f31a691b25c31a00a99999 Author: Picca Frederic-Emmanuel Date: Sat Jan 9 11:05:17 2010 +0100 * refactoring of the HklPseudoAxisModeFunc include/hkl/hkl-pseudoaxis-auto.h | 3 ++- include/hkl/hkl-pseudoaxis-common-hkl.h | 14 ++++++----- include/hkl/hkl-pseudoaxis-common.h | 3 ++- include/hkl/hkl-pseudoaxis.h | 41 +++++++++++++-------------------- src/hkl-pseudoaxis-auto.c | 11 +++++---- src/hkl-pseudoaxis-common-eulerians.c | 14 ++++++----- src/hkl-pseudoaxis-common-hkl.c | 30 +++++++++++++----------- src/hkl-pseudoaxis-common-psi.c | 27 ++++++++++------------ src/hkl-pseudoaxis-common-q.c | 14 ++++++----- src/hkl-pseudoaxis.c | 27 +++++++++++----------- 10 files changed, 92 insertions(+), 92 deletions(-) commit 93af3bdef8aee90b70223c61acd0af5db0a4642a Author: Picca Frederic-Emmanuel Date: Fri Jan 8 22:30:03 2010 +0100 * simplification using an array to store the function to solve. include/hkl/hkl-pseudoaxis-auto.h | 7 +- include/hkl/hkl-pseudoaxis-common-hkl.h | 72 ++------------ include/hkl/hkl-pseudoaxis-common.h | 1 + include/hkl/hkl-pseudoaxis.h | 4 + src/hkl-pseudoaxis-auto.c | 21 +++- src/hkl-pseudoaxis-common-eulerians.c | 3 +- src/hkl-pseudoaxis-common-hkl.c | 32 +----- src/hkl-pseudoaxis-common-psi.c | 14 +-- src/hkl-pseudoaxis-common-q.c | 26 ++--- src/hkl-pseudoaxis-e4cv-hkl.c | 40 ++++---- src/hkl-pseudoaxis-e6c-hkl.c | 74 +++++++------- src/hkl-pseudoaxis-k4cv-hkl.c | 90 ++++------------- src/hkl-pseudoaxis-k6c-hkl.c | 168 ++++++++------------------------ src/hkl-pseudoaxis-zaxis-hkl.c | 18 ++-- src/hkl-pseudoaxis.c | 21 +++- 15 files changed, 184 insertions(+), 407 deletions(-) commit e635c89c750d01517448921bbb644f7a5d2af3d2 Author: System User Date: Fri Jan 8 15:39:07 2010 +0100 * add the reflectivity mode for the zaxis geometry. NEWS | 4 ++++ src/hkl-pseudoaxis-zaxis-hkl.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) commit 830eb71d6ba16465da38329187fc45db4eebca79 Author: System User Date: Thu Jan 7 17:13:37 2010 +0100 * the HklPseudoAxisEngine setter method fail if there is 0 geometries computed src/hkl-pseudoaxis.c | 3 +++ 1 file changed, 3 insertions(+) commit c72eeb00a35409fd19414977cc65f7f63fcd4ff0 Author: System User Date: Thu Jan 7 14:08:14 2010 +0100 * solve temporarly a bug during the set. We need to transfert the starting point of the geometry from engine->engines->geometry to engine->geometry do do the right calculation. src/hkl-pseudoaxis.c | 2 ++ 1 file changed, 2 insertions(+) commit b1138cae1e37256e394c73594e91c3486e6402dd Author: System User Date: Thu Jan 7 14:06:47 2010 +0100 * add the q2 pseudo axis to the zaxis geometry. src/hkl-pseudoaxis-factory.c | 1 + 1 file changed, 1 insertion(+) commit 04b6c34010478a811000e1bf9bfb3e6db99d0072 Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:14:13 2010 +0100 * add the geometry_list_remove_invalid test. thus correction of the geometry validity check. src/hkl-parameter.c | 3 ++- test/hkl-test-geometry.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) commit 3423bdbfe0873be8ce9c0db286b53ec83ab90b8f Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:07:54 2010 +0100 * remove wrong authors for the zaxis geometry src/hkl-pseudoaxis-zaxis-hkl.c | 2 -- 1 file changed, 2 deletions(-) commit ba89b16abf616e408642ac5b20bafef5af92e91b Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:06:56 2010 +0100 * better presentation of the Makefile.am of the include files. include/Makefile.am | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) commit b7f7fffea82612d705e7349d305e50768c593e1a Author: System User Date: Wed Jan 6 17:47:32 2010 +0100 * now HklGeometryList::remove_invalid is ok. src/hkl-geometry.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f66f33c6f42148ae4537ec46de9562d0ccfce523 Author: System User Date: Wed Jan 6 17:45:31 2010 +0100 * add the zaxis geometry include/Makefile.am | 2 +- include/hkl/hkl-geometry-factory.h | 1 + include/hkl/hkl-pseudoaxis-zaxis.h | 33 +++++++++++++++++++++++ src/Makefile.am | 1 + src/hkl-geometry-factory.c | 17 ++++++++++++ src/hkl-pseudoaxis-factory.c | 4 +++ src/hkl-pseudoaxis-zaxis-hkl.c | 54 ++++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 7 +++++ 8 files changed, 118 insertions(+), 1 deletion(-) commit 5206c73b460efda8d01d45c6b2e301870d3fb0c0 Author: Picca Frederic-Emmanuel Date: Tue Jan 5 22:56:24 2010 +0100 * remove all warning due to clang src/hkl-axis.c | 2 +- src/hkl-matrix.c | 3 ++- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 2 -- src/hkl-pseudoaxis-k4cv-hkl.c | 6 ------ src/hkl-pseudoaxis-k6c-hkl.c | 46 +++++------------------------------------ 6 files changed, 9 insertions(+), 52 deletions(-) commit 72fa2115662feedddb316967fdfc680d5cfdff1e Author: Picca Frederic-Emmanuel Date: Tue Jan 5 19:57:14 2010 +0100 * remove warning from gcc 4.4.2 and switch to c99 configure.ac | 2 +- src/hkl-error.c | 3 ++- src/hkl-pseudoaxis-common-q.c | 1 + test/bench.c | 4 ++-- test/hkl-test.h | 15 ++++++++------- 5 files changed, 14 insertions(+), 11 deletions(-) commit 1928f66d8fe460120c931f9f77e694b69558726f Author: Picca Frederic-Emmanuel Date: Tue Jan 5 19:55:55 2010 +0100 * better printf for HklGeometry src/hkl-geometry.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit f6141c5f67379561faa054f73285cd1d01a26c43 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:55:47 2010 +0100 * the number of randomize test per PseudoAxisEngine is now define using a constant. test/hkl-test-pseudoaxis.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7e1c13a54c7f20be4b4d3f8f0d1415f337827fa0 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:47:53 2010 +0100 * use the new HKL_ASSERT_STRING_EQUAL everywhere :) test/hkl-test-axis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2c5f7691d3fc1ead52038f46ac453ebe3d7e1b66 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:43:54 2010 +0100 * indent test/hkl-test.h | 60 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) commit af91ea7658d731fd4bdfa86edb67bc20bd4e7046 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:42:27 2010 +0100 * forgot the 2009 -> 2010 copyright change of the test part. test/bench.c | 2 +- test/hkl-test-axis.c | 2 +- test/hkl-test-detector.c | 2 +- test/hkl-test-geometry.c | 2 +- test/hkl-test-interval.c | 2 +- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 2 +- test/hkl-test-parameter.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 2 +- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-quaternion.c | 2 +- test/hkl-test-sample.c | 2 +- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 2 +- test/hkl-test.c | 2 +- test/hkl-test.h | 2 +- test/main.c | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) commit 55e7bab1ed489b0329c604f785d10f5a4e70154e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:39:46 2010 +0100 * add the test methods for HklError test/Makefile.am | 2 + test/hkl-test-error.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 3 files changed, 138 insertions(+) commit c46d337eb25130de53b7338c81cbeff18a5e725d Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:38:43 2010 +0100 * rename functions to follow the hkl convention. include/hkl.h | 1 + include/hkl/hkl-error.h | 14 +++++++------- src/hkl-error.c | 33 +++++++++++++++++++-------------- 3 files changed, 27 insertions(+), 21 deletions(-) commit a14d9979ec63868b4a66acde8e26c680ef52f3a2 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 11:09:03 2010 +0100 * add the HKL_ASSERT_STRING_EQUAL macro test/hkl-test.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit 0cc5e087f24c818ac46f86a2a4151f4a3387cb3f Author: Picca Frederic-Emmanuel Date: Mon Jan 4 21:39:43 2010 +0100 * add the HklError class. include/Makefile.am | 2 +- include/hkl/hkl-error.h | 72 +++++++++++ include/hkl/hkl-macros.h | 4 + src/Makefile.am | 1 + src/hkl-error.c | 321 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 399 insertions(+), 1 deletion(-) commit a6e309cd9e016e8f2892aa90af071feac3fdca86 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:25:47 2010 +0100 * update the copyright year include/hkl/hkl-axis.h | 2 +- include/hkl/hkl-detector-factory.h | 2 +- include/hkl/hkl-detector.h | 2 +- include/hkl/hkl-geometry-factory.h | 2 +- include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-interval.h | 2 +- include/hkl/hkl-lattice.h | 2 +- include/hkl/hkl-list.h | 2 +- include/hkl/hkl-macros.h | 2 +- include/hkl/hkl-matrix.h | 2 +- include/hkl/hkl-parameter.h | 2 +- include/hkl/hkl-pseudoaxis-auto.h | 2 +- include/hkl/hkl-pseudoaxis-common-eulerians.h | 2 +- include/hkl/hkl-pseudoaxis-common-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-common-psi.h | 2 +- include/hkl/hkl-pseudoaxis-common-q.h | 2 +- include/hkl/hkl-pseudoaxis-common.h | 2 +- include/hkl/hkl-pseudoaxis-e4cv.h | 2 +- include/hkl/hkl-pseudoaxis-e6c.h | 2 +- include/hkl/hkl-pseudoaxis-factory.h | 2 +- include/hkl/hkl-pseudoaxis-k4cv.h | 2 +- include/hkl/hkl-pseudoaxis-k6c.h | 2 +- include/hkl/hkl-pseudoaxis.h | 2 +- include/hkl/hkl-quaternion.h | 2 +- include/hkl/hkl-sample.h | 2 +- include/hkl/hkl-source.h | 2 +- include/hkl/hkl-unit.h | 2 +- include/hkl/hkl-vector.h | 2 +- src/hkl-axis.c | 2 +- src/hkl-detector-factory.c | 2 +- src/hkl-detector.c | 2 +- src/hkl-geometry-factory.c | 2 +- src/hkl-geometry.c | 2 +- src/hkl-interval.c | 2 +- src/hkl-lattice.c | 2 +- src/hkl-matrix.c | 2 +- src/hkl-parameter.c | 2 +- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-hkl.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 2 +- src/hkl-pseudoaxis-common-q.c | 2 +- src/hkl-pseudoaxis-common.c | 2 +- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-factory.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-quaternion.c | 2 +- src/hkl-sample.c | 2 +- src/hkl-source.c | 2 +- src/hkl-unit.c | 2 +- src/hkl-vector.c | 2 +- src/usage.c | 2 +- 59 files changed, 59 insertions(+), 59 deletions(-) commit 833c91a2e3c539d531cb523b3cdfb59323be2880 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:24:19 2010 +0100 * update the NEWS file NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4104f391c39dfa9061de2fd1e77e92e21d1da942 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:13:35 2010 +0100 * fix for 64bit machines thanks Jens Krüger src/hkl-pseudoaxis-common-eulerians.c | 3 ++- src/hkl-pseudoaxis-common-q.c | 5 +++-- src/hkl-pseudoaxis-e4cv-hkl.c | 13 +++++++------ src/hkl-pseudoaxis-e6c-hkl.c | 23 ++++++++++++----------- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +++++++------ src/hkl-pseudoaxis-k6c-hkl.c | 27 ++++++++++++++------------- 6 files changed, 45 insertions(+), 39 deletions(-) commit 97186a53710c8561b8beb65f05ea3614f3fbfe10 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:02:34 2010 +0100 * fix the installation of the hkl.h files thanks Jens Krüger wscript | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 19102358345b9bb858a5aa9caa7f24cfc441a9f4 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 16:49:18 2010 +0100 * need to fix test suit for -O0 vs -O2 ??? the test pass in -O0 mode but not in -O2 In fact the rounding is not the same between -O0 and -O2 so when I sort the geometries, there is a difference. Now I also check thah the distance between two geometries is greater than HKL_EPSILON to sort them. that way I avoid this rounding problem present on the 13th digits. src/hkl-geometry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eb5e5d34aa0aa77da882863e92a6a87d535b6cf6 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 18:41:27 2009 +0100 * remove a valgrind warning test/hkl-test.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit dc18121dc35034b4518b97e4ab99c8c8a38f1baf Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 18:30:01 2009 +0100 * now the pseudo axes test stop immediatly to avoid multiple error messages. Conflicts: test/hkl-test-pseudoaxis.c test/hkl-test-pseudoaxis.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) commit 5d2edcb2aa2cdc8add5d6bb88e061b8f361ee285 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:56:21 2009 +0100 * improve the output of the test methods. Conflicts: test/hkl-test.c test/hkl-test.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) commit 441ed39a55a2359af9d125c1c7476971120098a3 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:30:01 2009 +0100 * solve a bug in the q pseudo axis. src/hkl-pseudoaxis-common-q.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6165ae2823ed0e6a2f85d969faa0b808d11a190e Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:27:11 2009 +0100 * add a debug section in the pseudo_axis_auto part. src/hkl-pseudoaxis-auto.c | 6 ++++++ 1 file changed, 6 insertions(+) commit 44968237a7a11a6a6df0b176f40e358e530bc195 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 15:23:45 2009 +0100 * be less strict when comparing double. test/hkl-test.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 85eae3b9ba4be48ad171c0d2da21d66fbe9b780e Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 15:22:54 2009 +0100 * better precision in the parameter fprintf method src/hkl-parameter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 98fc860becb5af5979e8763bb33e661d30d6da7a Author: Picca Frederic-Emmanuel Date: Sun Jan 3 11:47:59 2010 +0100 * bench all engines of the k6c geometry test/bench.c | 118 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 30 deletions(-) commit 27608d38b69d75bfa244f9deb6f7e3eb2c7a5874 Author: Picca Frederic-Emmanuel Date: Sun Jan 3 11:16:15 2010 +0100 * use fit instead of not_to_fit in HklParameter (less error prone) include/hkl/hkl-parameter.h | 8 +++----- src/hkl-axis.c | 2 +- src/hkl-lattice.c | 26 +++++++++++++------------- src/hkl-parameter.c | 10 +++++----- src/hkl-pseudoaxis-common-eulerians.c | 6 +++--- src/hkl-pseudoaxis-common-hkl.c | 6 +++--- src/hkl-pseudoaxis-common-psi.c | 8 ++++---- src/hkl-pseudoaxis-common-q.c | 6 +++--- src/hkl-pseudoaxis-e4cv-hkl.c | 14 +++++++------- src/hkl-pseudoaxis-e6c-hkl.c | 8 ++++---- src/hkl-pseudoaxis-k4cv-hkl.c | 8 ++++---- src/hkl-pseudoaxis-k6c-hkl.c | 8 ++++---- src/hkl-sample.c | 12 ++++++------ test/hkl-test-axis.c | 2 +- test/hkl-test-parameter.c | 32 ++++++++++++++++---------------- 15 files changed, 77 insertions(+), 79 deletions(-) commit c88d0783d6483d2b5300759d6559f2eff76d4db5 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 18:02:45 2010 +0100 * typo test/hkl-test-pseudoaxis-e4cv.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis-e6c.c | 24 ++++++++++++------------ test/hkl-test-pseudoaxis-k4cv.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis-k6c.c | 18 +++++++++--------- 4 files changed, 41 insertions(+), 41 deletions(-) commit b9ff314b339a14d622921a7822559a4e2479e091 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:47:15 2010 +0100 * now all tests are ok test/hkl-test-pseudoaxis.c | 21 ++++++++++++--------- test/main.c | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) commit bebd5e4b375416114aa8bf3510766c2bbf818e8f Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:36:46 2010 +0100 * stop when a test failed. test/hkl-test.c | 1 + 1 file changed, 1 insertion(+) commit 8e7f5e9dbb6e34d3911eb3202520b1f1e52a5194 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:34:46 2010 +0100 * restor a part of the tests src/hkl-pseudoaxis.c | 10 ++++++++-- test/hkl-test-pseudoaxis-e4cv.c | 6 +++--- test/hkl-test-pseudoaxis-e6c.c | 11 +++++------ test/hkl-test-pseudoaxis-k4cv.c | 8 ++++---- test/hkl-test-pseudoaxis-k6c.c | 10 +++++----- 5 files changed, 25 insertions(+), 20 deletions(-) commit afa3ffe47c9f6a8795c8a053bb265ef49058e1e3 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 12:48:18 2010 +0100 add the support for flymake src/Makefile.am | 7 +++++++ test/Makefile.am | 7 +++++++ 2 files changed, 14 insertions(+) commit 364260eb3596ed7e68665a8f2c38ddc13a8934ed Author: Picca Frederic-Emmanuel Date: Thu Dec 24 21:59:47 2009 +0100 * use HKL_GEOMETRY_TYPE_* instead of HKL_GEOMETRY_* include/hkl/hkl-geometry-factory.h | 10 +++++----- src/hkl-geometry-factory.c | 10 +++++----- src/hkl-pseudoaxis-factory.c | 10 +++++----- test/bench.c | 8 ++++---- test/hkl-test-pseudoaxis-e4cv.c | 24 ++++++++++++------------ test/hkl-test-pseudoaxis-e6c.c | 12 ++++++------ test/hkl-test-pseudoaxis-k4cv.c | 12 ++++++------ test/hkl-test-pseudoaxis-k6c.c | 16 ++++++++-------- test/hkl-test-pseudoaxis.c | 16 ++++++++-------- test/hkl-test-sample.c | 12 ++++++------ 10 files changed, 65 insertions(+), 65 deletions(-) commit c08d68fb4edf31ab36d2d9eb52db28024601a15c Author: Frédéric-Emmanuel PICCA Date: Fri Dec 11 16:59:52 2009 +0100 * WORK IN PROGRESS include/hkl/hkl-pseudoaxis.h | 26 ++------ src/hkl-pseudoaxis-common-eulerians.c | 14 ++-- src/hkl-pseudoaxis-common-hkl.c | 10 --- src/hkl-pseudoaxis-common-psi.c | 3 - src/hkl-pseudoaxis-common-q.c | 6 -- src/hkl-pseudoaxis-e4cv-hkl.c | 3 - src/hkl-pseudoaxis-e6c-hkl.c | 6 -- src/hkl-pseudoaxis-k4cv-hkl.c | 12 ---- src/hkl-pseudoaxis-k6c-hkl.c | 24 ------- src/hkl-pseudoaxis.c | 120 +++++++++++++++++++--------------- test/bench.c | 6 +- test/hkl-test-detector.c | 4 +- test/hkl-test-pseudoaxis-e4cv.c | 48 +++++++------- test/hkl-test-pseudoaxis-e6c.c | 20 +++--- test/hkl-test-pseudoaxis-k4cv.c | 17 ++--- test/hkl-test-pseudoaxis-k6c.c | 26 ++++---- test/hkl-test-pseudoaxis.c | 6 +- test/main.c | 2 +- 18 files changed, 142 insertions(+), 211 deletions(-) commit 07c848a8ba2dbf6e19289b637ba619a76ff2f277 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 16:12:31 2009 +0100 * typo include/hkl/hkl-pseudoaxis.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5d4825cc9b87ec92f47a47dbc4afb16d2ef0c219 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 16:05:03 2009 +0100 * include geometry, detector and sample in the HklPseudoAxisList this is to prepare the HklPseudoAxisList -> HklDiffractometer. add the hkl_pseudo_axis_engine_list_init method to initialize thoses new members. include/hkl/hkl-pseudoaxis.h | 8 ++++++++ src/hkl-pseudoaxis.c | 14 ++++++++++++++ test/bench.c | 2 ++ test/hkl-test-pseudoaxis-e4cv.c | 12 ++++++++++++ test/hkl-test-pseudoaxis-e6c.c | 6 ++++++ test/hkl-test-pseudoaxis-k4cv.c | 6 ++++++ test/hkl-test-pseudoaxis-k6c.c | 7 +++++++ test/hkl-test-pseudoaxis.c | 31 ++++++++++++++++--------------- 8 files changed, 71 insertions(+), 15 deletions(-) commit a2aa2680ed99373f2984e6a0a63bcae0859689dc Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:51:04 2009 +0100 * optimisation, only one detector new/free for all pseudoaxes tests. test/hkl-test-pseudoaxis.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit 786d21c44703b4e358a3f4b5b0c9ca6e77ffbe1e Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:36:50 2009 +0100 * use the detector factory in the test methods test/bench.c | 16 ++++++--- test/hkl-test-detector.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 12 +++---- test/hkl-test-pseudoaxis-e6c.c | 6 ++-- test/hkl-test-pseudoaxis-k4cv.c | 6 ++-- test/hkl-test-pseudoaxis-k6c.c | 8 ++--- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-sample.c | 77 ++++++++++++++++++++++++++++------------- 8 files changed, 81 insertions(+), 48 deletions(-) commit 02eb9d91ee62074f3f14dad5b1a330e5a03e1274 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:20:22 2009 +0100 * add the detector factory. include/Makefile.am | 3 ++- include/hkl.h | 1 + include/hkl/hkl-detector-factory.h | 41 ++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 1 + src/hkl-detector-factory.c | 37 ++++++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 1 deletion(-) commit 74613a034057088c430d03fa829d1c24d589b4b7 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 13:50:42 2009 +0100 * remove a memory leak include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis-common.c | 4 +++- src/hkl-pseudoaxis.c | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) commit ffde8218cf281b9b096c340fe68fd426a5204db9 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 13:22:04 2009 +0100 * do not modify the Holder from the HklDetector struct include/hkl/hkl-detector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit df9658b076c0fc6524ea79841b6b3182a4b7766e Author: Picca Frederic-Emmanuel Date: Tue Nov 24 21:59:37 2009 +0100 * use the HklDetector new/free methods. NEWS | 4 ++ test/hkl-test-pseudoaxis-e4cv.c | 82 ++++++++++++++++++++++++++--------------- test/hkl-test-pseudoaxis-e6c.c | 42 +++++++++++++-------- test/hkl-test-pseudoaxis-k4cv.c | 38 ++++++++++++------- test/hkl-test-pseudoaxis-k6c.c | 54 +++++++++++++++++---------- test/hkl-test-pseudoaxis.c | 13 +++++-- 6 files changed, 153 insertions(+), 80 deletions(-) commit 06f05dcf2dc5dd605db6b52cded9023b9aabb160 Author: Picca Frederic-Emmanuel Date: Sun Nov 22 12:34:34 2009 +0100 * add the HklDetector constructor / destructor / attach to holder include/hkl/hkl-detector.h | 9 +++++++ src/hkl-detector.c | 42 ++++++++++++++++++++++++++++++- test/hkl-test-detector.c | 61 ++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 103 insertions(+), 9 deletions(-) commit 942d52772b5c473358a8fef245cb3773336323aa Author: Picca Frederic-Emmanuel Date: Sun Nov 22 11:29:35 2009 +0100 * typo include/hkl/hkl-detector.h | 2 +- src/hkl-geometry-factory.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) commit 109bb176d86500dc1e011fc6cd974b55643c388e Author: Picca Frederic-Emmanuel Date: Sun Nov 8 10:00:19 2009 +0100 * add the autogen.sh script autogen.sh | 4 ++++ 1 file changed, 4 insertions(+) commit 9c84b23ff8ff333ccd293863ba00389befa4b0d5 Author: Picca Frederic-Emmanuel Date: Tue Nov 3 22:17:47 2009 +0100 * do not stopthe test if an error occured. test/hkl-test.c | 2 -- 1 file changed, 2 deletions(-) commit 0497e74e6c06c01436a9ac0236370b2003ab93ae Author: Picca Frederic-Emmanuel Date: Tue Nov 3 22:17:24 2009 +0100 * correct the test suite test/hkl-test-pseudoaxis-k4cv.c | 6 ++++-- test/hkl-test-pseudoaxis-k6c.c | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) commit 6c183bb90c230f9a85dc4ec15a9be2959d8452b5 Author: Picca Frederic-Emmanuel Date: Sat Oct 24 14:29:10 2009 +0200 * add the autoconf/automake files .gitignore | 8 + AUTHORS | 1 + COPYING | 675 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ChangeLog | 2 + INSTALL | 302 +++++++++++++++++++++++ Makefile.am | 10 + configure.ac | 45 ++++ hkl.pc.in | 2 +- include/Makefile.am | 10 + src/Makefile.am | 43 ++++ src/Makefile.linux | 157 ------------ src/Makefile.vc | 90 ------- test/Makefile.am | 33 +++ wscript | 4 +- 14 files changed, 1132 insertions(+), 250 deletions(-) commit 504e27f5b84999bfc4f3bb92e6e92a1688b4c1a6 Merge: 36e37104 7876bc05 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:33:39 2009 +0200 Merge branch 'next' commit 7876bc05c3f9daf0756116c4bd96e066f9a5205a Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:32:30 2009 +0200 * prepare for the 3.0.1 release. NEWS | 10 +++++++++- README | 4 ++-- TODO | 4 +--- wscript | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) commit 9b8f9b3ab90408d308956aa5da53659edd566a12 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:11:20 2009 +0200 * add Maria Teresa as autor for the psi_constant mode. include/hkl/hkl-pseudoaxis-common-hkl.h | 1 + src/hkl-pseudoaxis-common-hkl.c | 1 + src/hkl-pseudoaxis-e4cv-hkl.c | 1 + src/hkl-pseudoaxis-e6c-hkl.c | 1 + src/hkl-pseudoaxis-k4cv-hkl.c | 1 + src/hkl-pseudoaxis-k6c-hkl.c | 1 + 6 files changed, 6 insertions(+) commit 83ee906e0a6e35511d21cb2c7079709f938fa85c Author: Frédéric-Emmanuel PICCA Date: Wed Oct 14 16:35:32 2009 +0200 * now remove the non valid geometry from the geometryList a non valid geometry is a geometry with an axis values out of range. include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-geometry.h | 4 ++++ include/hkl/hkl-list.h | 6 ++++++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 5 +++++ src/hkl-geometry.c | 29 +++++++++++++++++++++++++++-- src/hkl-parameter.c | 8 ++++++++ src/hkl-pseudoaxis.c | 1 + test/hkl-test-geometry.c | 23 +++++++++++++++++++++++ test/hkl-test-parameter.c | 16 ++++++++++++++++ 10 files changed, 94 insertions(+), 2 deletions(-) commit f141954ca418bc7af40f80399eb88dce80a8fdcf Author: Picca Frédéric-Emmanuel Date: Wed Sep 23 09:45:29 2009 +0200 * no need to put vertical in mode names for the vertical geometries src/hkl-pseudoaxis-e4cv-hkl.c | 4 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 644aabb27587fda190a37b0a2062c4920882a637 Author: Picca Frédéric-Emmanuel Date: Mon Sep 21 11:37:20 2009 +0200 * omega = +/-pi is also valid for the horizontal modes. src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) commit 8455255dc4e8d0a838199e60bad793c891da10c6 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:35:09 2009 +0200 * forgot a fprintf test/hkl-test-pseudoaxis-e4cv.c | 1 - 1 file changed, 1 deletion(-) commit fd77ff95f115357f87bdab9f2b18126215108236 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:28:08 2009 +0200 * typo src/hkl-pseudoaxis-common-hkl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 13c2acacabcc672d2bd92c4d097f18560dfc43dc Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:26:35 2009 +0200 * better presentation of the PseduoAxis fprintf method src/hkl-pseudoaxis.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit a2cf58268e983b602e43f7e35730754fff4e83c4 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:26:12 2009 +0200 * add a test method for the psi_constant_vertical mode nd correct the init method src/hkl-pseudoaxis-common-hkl.c | 10 +++---- test/hkl-test-pseudoaxis-e4cv.c | 65 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 5 deletions(-) commit 2211fe2f1d51309f355f4306718af98e4e1534ab Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 10:12:42 2009 +0200 * indent nothing more include/hkl/hkl-pseudoaxis-common-hkl.h | 12 ++++----- src/hkl-pseudoaxis-common-hkl.c | 46 +++++++++++++++++++-------------- src/hkl-pseudoaxis-common-psi.c | 34 ++++++++++++------------ src/hkl-pseudoaxis-e4cv-hkl.c | 31 ++++++---------------- src/hkl-pseudoaxis-e6c-hkl.c | 28 +++++--------------- src/hkl-pseudoaxis-k4cv-hkl.c | 17 +++--------- src/hkl-pseudoaxis-k6c-hkl.c | 45 ++++++++++---------------------- 7 files changed, 82 insertions(+), 131 deletions(-) commit d3ad49784201fbdc3b8889869c9f431447c71b90 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 10:08:59 2009 +0200 * correct the psi_constant init method include/hkl/hkl-pseudoaxis-common-hkl.h | 4 ++-- src/hkl-pseudoaxis-common-hkl.c | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) commit f5c83725f3cc354566f13b7501f0f6896d4f893b Author: teresa Date: Mon Sep 21 14:59:05 2009 +0200 "Again psi constant (4)' include/hkl/hkl-pseudoaxis-common-hkl.h | 25 +++++++ src/hkl-pseudoaxis-common-hkl.c | 114 +++++++++++++++++++++++++++++++- src/hkl-pseudoaxis-e4cv-hkl.c | 27 ++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 27 ++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 30 +++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 28 ++++++++ 6 files changed, 250 insertions(+), 1 deletion(-) commit 105a5f062f42d9e303c6ad502bfd1a4804595e65 Author: teresa Date: Mon Sep 14 14:21:31 2009 +0200 Change of the explanation of the bissector horizontal method (and some small other changes)' Documentation/user-guide.txt | 48 ++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 17 deletions(-) commit 71b934ee4264b937c80b0cebe4e2007e40bd72a6 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 11 16:11:06 2009 +0200 * add more documentation Documentation/user-guide.txt | 87 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) commit df3db041c4742173ae9f953486442c26bdf2d9fb Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 17:56:28 2009 +0200 * still working on the pseudo axis tutorial Documentation/user-guide.txt | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) commit cd96c35997040addfdd3441fd930c3eec3939b47 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 17:56:09 2009 +0200 * correction thanks to teresa Documentation/user-guide.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bf32ee581d7b55f6df2771ac205e8d8815518ab6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 09:49:28 2009 +0200 * start working on the hkl user-guide. Documentation/user-guide.txt | 196 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 195 insertions(+), 1 deletion(-) commit fa5c98d2f47d8a051de16921700c5cdfce26a8d6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 09:54:59 2009 +0200 * post merge version increment NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6e5215cc770ddb95eb2ae68c8d5247af33efef6d Author: System User Date: Thu Jul 16 14:43:06 2009 +0200 * switch to waf 1.5.8 to prepare the windows compilation. src/wscript_build | 16 ++++++++-------- test/wscript_build | 40 +++++++++++++++++++++------------------- waf | Bin 75487 -> 84763 bytes wscript | 12 +++--------- 4 files changed, 32 insertions(+), 36 deletions(-) commit 36e37104c318d56670e42e1f578a4d0ff81e357e Merge: af1efa92 07174529 Author: System User Date: Wed Jul 15 18:52:43 2009 +0200 Merge branch 'next' Conflicts: README include/hkl/HKLException.h include/hkl/HolderList.h include/hkl/affinement.h include/hkl/affinement_simplex.h include/hkl/affinementlist.h include/hkl/axe.h include/hkl/axe_rotation.h include/hkl/axefactory.h include/hkl/constant.h include/hkl/convenience.h include/hkl/derived_mode.h include/hkl/derived_pseudoaxeengine.h include/hkl/diffractometer.h include/hkl/diffractometerfactory.h include/hkl/eulerian4C_vertical_diffractometer.h include/hkl/eulerian4C_vertical_geometry.h include/hkl/eulerian4C_vertical_mode.h include/hkl/eulerian4C_vertical_pseudoaxeengine.h include/hkl/eulerian6C_diffractometer.h include/hkl/eulerian6C_geometry.h include/hkl/eulerian6C_mode.h include/hkl/eulerian6C_pseudoaxeengine.h include/hkl/fitparameter.h include/hkl/fitparameterlist.h include/hkl/geometry.h include/hkl/geometry_kappa.h include/hkl/hklobject.h include/hkl/holder.h include/hkl/interval.h include/hkl/kappa4C_vertical_diffractometer.h include/hkl/kappa4C_vertical_geometry.h include/hkl/kappa4C_vertical_mode.h include/hkl/kappa4C_vertical_pseudoaxeengine.h include/hkl/kappa6C_diffractometer.h include/hkl/kappa6C_geometry.h include/hkl/kappa6C_mode.h include/hkl/kappa6C_pseudoaxeengine.h include/hkl/lattice.h include/hkl/mode.h include/hkl/modelist.h include/hkl/mymap.h include/hkl/object.h include/hkl/observer.h include/hkl/parameter.h include/hkl/parameterlist.h include/hkl/portability.h include/hkl/pseudoaxe.h include/hkl/pseudoaxeengine.h include/hkl/pseudoaxeenginelist.h include/hkl/pseudoaxelist.h include/hkl/quaternion.h include/hkl/range.h include/hkl/reflection.h include/hkl/reflection_monocrystal.h include/hkl/reflectionfactory.h include/hkl/reflectionlist.h include/hkl/sample.h include/hkl/sample_monocrystal.h include/hkl/samplefactory.h include/hkl/samplelist.h include/hkl/source.h include/hkl/strbuf.h include/hkl/svector.h include/hkl/twoC_vertical_diffractometer.h include/hkl/twoC_vertical_geometry.h include/hkl/twoC_vertical_mode.h include/hkl/twoC_vertical_pseudoaxeengine.h include/hkl/value.h src/HKLException.cpp src/affinement.cpp src/affinement_simplex.cpp src/affinementlist.cpp src/axe.cpp src/axe_rotation.cpp src/axefactory.cpp src/constant.cpp src/convenience.cpp src/diffractometer.cpp src/diffractometerfactory.cpp src/eulerian4C_vertical_diffractometer.cpp src/eulerian4C_vertical_geometry.cpp src/eulerian4C_vertical_mode.cpp src/eulerian4C_vertical_pseudoaxeengine.cpp src/eulerian6C_diffractometer.cpp src/eulerian6C_geometry.cpp src/eulerian6C_pseudoaxeengine.cpp src/fitparameter.cpp src/fitparameterlist.cpp src/geometry.cpp src/geometry_kappa.cpp src/hklobject.cpp src/holder.cpp src/interval.cpp src/kappa4C_vertical_diffractometer.cpp src/kappa4C_vertical_geometry.cpp src/kappa4C_vertical_pseudoaxeengine.cpp src/kappa6C_diffractometer.cpp src/kappa6C_geometry.cpp src/lattice.cpp src/mode.cpp src/modelist.cpp src/object.cpp src/observer.cpp src/parameter.cpp src/parameterlist.cpp src/pseudoaxe.cpp src/pseudoaxeengine.cpp src/pseudoaxeenginelist.cpp src/pseudoaxelist.cpp src/quaternion.cpp src/range.cpp src/reflection.cpp src/reflection_monocrystal.cpp src/reflectionfactory.cpp src/reflectionlist.cpp src/sample.cpp src/sample_monocrystal.cpp src/samplefactory.cpp src/samplelist.cpp src/source.cpp src/strbuf.cpp src/svector.cpp src/twoC_vertical_diffractometer.cpp src/twoC_vertical_geometry.cpp src/twoC_vertical_mode.cpp src/twoC_vertical_pseudoaxeengine.cpp src/value.cpp test/affinement_simplex_test.cpp test/affinement_simplex_test.h test/axe_rotation_test.cpp test/axe_rotation_test.h test/diffractometer_eulerian4C_test.cpp test/diffractometer_eulerian4C_test.h test/diffractometer_kappa4C_test.cpp test/diffractometer_kappa4C_test.h test/diffractometer_kappa6C_test.cpp test/diffractometer_kappa6C_test.h test/diffractometer_test.cpp test/diffractometer_test.h test/diffractometer_twoC_test.cpp test/diffractometer_twoC_test.h test/fitparameter_test.cpp test/fitparameter_test.h test/geometry_eulerian4C_test.cpp test/geometry_eulerian4C_test.h test/geometry_eulerian6C_test.cpp test/geometry_eulerian6C_test.h test/geometry_kappa4C_test.cpp test/geometry_kappa4C_test.h test/geometry_kappa6C_test.cpp test/geometry_kappa6C_test.h test/geometry_test.cpp test/geometry_test.h test/geometry_twoC_test.cpp test/geometry_twoC_test.h test/hklobject_test.cpp test/hklobject_test.h test/holder_test.cpp test/holder_test.h test/holderlist_test.cpp test/holderlist_test.h test/interval_test.cpp test/interval_test.h test/lattice_test.cpp test/lattice_test.h test/libHKL_test.cpp test/main.cpp test/mode_eulerian4C_test.cpp test/mode_eulerian4C_test.h test/mode_kappa4C_test.cpp test/mode_kappa4C_test.h test/mode_kappa6C_test.cpp test/mode_kappa6C_test.h test/mode_twoC_test.cpp test/mode_twoC_test.h test/object_test.cpp test/object_test.h test/parameter_test.cpp test/parameter_test.h test/pseudoaxe_eulerian4C_test.cpp test/pseudoaxe_eulerian4C_test.h test/pseudoaxe_eulerian6C_test.cpp test/pseudoaxe_eulerian6C_test.h test/pseudoaxe_kappa4C_test.cpp test/pseudoaxe_kappa4C_test.h test/pseudoaxe_kappa6C_test.cpp test/pseudoaxe_kappa6C_test.h test/pseudoaxe_twoC_test.cpp test/pseudoaxe_twoC_test.h test/quaternion_test.cpp test/quaternion_test.h test/range_test.cpp test/range_test.h test/reflection_test.cpp test/reflection_test.h test/reflectionlist_test.cpp test/reflectionlist_test.h test/sample_test.cpp test/sample_test.h test/samplelist_test.cpp test/samplelist_test.h test/source_test.cpp test/source_test.h test/svecmat_test.cpp test/svecmat_test.h test/value_test.cpp test/value_test.h commit 0717452972b752f34ce8a0ab47ffada980f9bf72 Author: Picca Frédéric-Emmanuel Date: Fri Jun 5 16:42:27 2009 +0200 * better initialization of the Psi pseudoAxisEngine parameters src/hkl-pseudoaxis-common-psi.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) commit 4c2a571f8985e7032333b09dda46708854b1ec19 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:50:04 2009 +0200 * add the q2 pseudo axis engine for the 6 circles geometries. include/hkl/hkl-pseudoaxis-common-q.h | 1 + src/hkl-pseudoaxis-common-q.c | 129 ++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 2 + test/hkl-test-pseudoaxis-e6c.c | 63 +++++++++++++++++ test/hkl-test-pseudoaxis-k6c.c | 63 +++++++++++++++++ 5 files changed, 258 insertions(+) commit d3d7541260b2f88eb4165fca5477a3d9b46690a6 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:49:13 2009 +0200 * move around comments src/hkl-pseudoaxis-common-q.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 6b508c9263a1709a9811407008a90f1a015d8c46 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:48:55 2009 +0200 * add also the q test in the k4c geometry test/hkl-test-pseudoaxis-k4cv.c | 57 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) commit 427c663d6b1844756ae57c028a5501596f966e11 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 09:53:04 2009 +0200 ** add the q HklPseudoAxisEngine for e4cv and k4cv geometries. include/hkl/hkl-pseudoaxis-common-q.h | 29 ++++++++ src/hkl-pseudoaxis-common-q.c | 130 ++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 3 + test/hkl-test-pseudoaxis-e4cv.c | 56 +++++++++++++++ 4 files changed, 218 insertions(+) commit e7955991bac2ae40506daf7f9698ba50dfd6fbe8 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 09:22:31 2009 +0200 * add the get_wavelength to the HklSource class. include/hkl/hkl-source.h | 2 ++ src/hkl-source.c | 5 +++++ test/hkl-test-source.c | 12 ++++++++++++ 3 files changed, 19 insertions(+) commit 626b4896ade2cb0cbd9e1261e642f875c94ee0d0 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 4 11:42:21 2009 +0200 * update the "eulerians" pseudo axis test method. test/hkl-test-pseudoaxis-k4cv.c | 26 ++++++++++++++------------ test/hkl-test-pseudoaxis-k6c.c | 25 ++++++++++++++----------- test/hkl-test-pseudoaxis.c | 3 +++ 3 files changed, 31 insertions(+), 23 deletions(-) commit 23117b990d103fd164b21910f84228d2498b4a56 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 4 10:10:54 2009 +0200 * first working version of the cut problem include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 1 + test/hkl-test-geometry.c | 35 ++++++++++++++++++++++++ 4 files changed, 104 insertions(+) commit d7f4f0a85063a8a93677e4bb9220b47e1ddc500c Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 18:03:24 2009 +0200 * add the HklAxis get_max method include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 5 +++++ src/hkl-parameter.c | 6 ++++++ 4 files changed, 15 insertions(+) commit dfe3916cb0b0fdd4a0ad384005f5ee2fe5319510 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:28:49 2009 +0200 * add the HklAxis set_value_smallest_in_range method with test. include/hkl/hkl-axis.h | 2 ++ src/hkl-axis.c | 13 +++++++++++++ test/hkl-test-axis.c | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) commit 1f0255022c3b79f7df038159471e8a6b5f875e9f Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:08:15 2009 +0200 * add the extern keyword in the HklInterval struct include/hkl/hkl-interval.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 0fb60655442844d20c02b7b8da802844df856fb8 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:07:44 2009 +0200 * remove a bug in the HklAxis is_value_compatible_with_range. include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-interval.h | 2 ++ src/hkl-axis.c | 40 ++++++++++++++++++++++++---------------- src/hkl-interval.c | 7 +++++++ test/hkl-test-axis.c | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 16 deletions(-) commit 0679e0da81c06d926820daed8dd2d811a760f8aa Author: Frédéric-Emmanuel PICCA Date: Tue Jun 2 15:18:19 2009 +0200 * more axis methods. get_name, get/set_changed and _get_value. include/hkl/hkl-axis.h | 10 +++++++- src/hkl-axis.c | 58 +++++++++++++++++++++++++++++--------------- src/hkl-geometry.c | 30 +++++++++++------------ src/hkl-pseudoaxis-auto.c | 4 +-- src/hkl-pseudoaxis-factory.c | 12 ++++----- src/hkl-sample.c | 2 +- test/hkl-test-geometry.c | 16 ++++++------ 7 files changed, 80 insertions(+), 52 deletions(-) commit 66a1fa468f7366393266bab31e2f54e08612cd0b Author: Picca Frédéric-Emmanuel Date: Sun May 24 14:18:23 2009 +0200 * add the hkl.h files. Just #include to use the hkl library include/hkl.h | 5 +++++ test/bench.c | 5 +---- test/hkl-test-axis.c | 5 +---- test/hkl-test-detector.c | 4 +--- test/hkl-test-geometry.c | 4 +--- test/hkl-test-interval.c | 4 +--- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 5 +---- test/hkl-test-parameter.c | 4 +--- test/hkl-test-pseudoaxis-e4cv.c | 5 +---- test/hkl-test-pseudoaxis-e6c.c | 5 +---- test/hkl-test-pseudoaxis-k4cv.c | 5 +---- test/hkl-test-pseudoaxis-k6c.c | 5 +---- test/hkl-test-pseudoaxis.c | 3 +-- test/hkl-test-quaternion.c | 6 +----- test/hkl-test-sample.c | 5 +---- test/hkl-test-source.c | 4 +--- test/hkl-test-vector.c | 5 +---- test/hkl-test.c | 5 +---- wscript | 1 + 20 files changed, 24 insertions(+), 63 deletions(-) commit c6f782d0b1499f2ca8f276fab4853c68ba540b41 Author: Picca Frédéric-Emmanuel Date: Sat May 23 22:05:36 2009 +0200 * add the sample set_name method include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 10 ++++++++++ 2 files changed, 12 insertions(+) commit 666d953cf77cf9629a55c7b5d9979cf19a828e44 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:46:09 2009 +0200 * we can create a sample reflection with null vector src/hkl-sample.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 6f348abff9ec1934943588b079c9f4abbc6effb1 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:45:42 2009 +0200 * bug in the get reflection parameter check src/hkl-sample.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 787b32c8b122376cc35b2ea3488f34f8029227a0 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:45:12 2009 +0200 * do not add the reflection if it is NULL src/hkl-sample.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 413fbe337800a0ef18295cc15b17b0bd5d126cfb Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:44:45 2009 +0200 * remove a valgrind warning. src/hkl-sample.c | 2 ++ 1 file changed, 2 insertions(+) commit 1dffbcccdad87a3d1450cf382d603711d761b95e Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:44:12 2009 +0200 * no more assert in the vector angle method src/hkl-vector.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 5526c2d9273725e329c89524174982aae92687a9 Author: Picca Frédéric-Emmanuel Date: Fri May 15 16:20:58 2009 +0200 * now the HklSample compute_UB matrix update also the UB matrix !!! src/hkl-sample.c | 1 + 1 file changed, 1 insertion(+) commit c4ee40c1e0df7235618a4ebc075cb71f5dab2ba5 Author: Picca Frédéric-Emmanuel Date: Thu May 14 16:18:33 2009 +0200 * print a backtrace when an assert failed. include/hkl/hkl-macros.h | 12 ++++++++++++ src/hkl-quaternion.c | 5 ++--- src/hkl-vector.c | 5 ++--- src/usage.c | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) commit 8fadc24c74696d71e79a1d2ac28e3fb971095340 Author: Picca Frédéric-Emmanuel Date: Thu May 14 15:19:04 2009 +0200 * add the HklSampleList fprintf method include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 7 +++++++ 2 files changed, 9 insertions(+) commit 22b15be7816c910237d81400cead68450b0d3bc3 Author: Picca Frédéric-Emmanuel Date: Thu May 14 14:52:46 2009 +0200 * split the factory.h files into .c and .h part include/hkl/hkl-geometry-factory.h | 107 +--------------------------- include/hkl/hkl-pseudoaxis-factory.h | 107 +--------------------------- src/hkl-geometry-factory.c | 132 +++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 130 ++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-e4cv.c | 1 + test/hkl-test-pseudoaxis-e6c.c | 1 + test/hkl-test-pseudoaxis-k4cv.c | 1 + test/hkl-test-pseudoaxis-k6c.c | 1 + 8 files changed, 269 insertions(+), 211 deletions(-) commit 391b0fef4efb6a3774f50d581ef95f5e7edd3477 Author: Picca Frédéric-Emmanuel Date: Thu May 14 10:13:31 2009 +0200 * add an rpath in the test part instead of modifing the LD_LIBRARY_PATH test/wscript_build | 2 ++ wscript | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) commit 746f612b1184c8f3e2923474f6a32e239d694425 Author: Picca Frédéric-Emmanuel Date: Thu May 14 10:08:08 2009 +0200 * add the clear and test method to the HklSampleList include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 9 +++++++++ test/hkl-test-sample.c | 25 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+) commit 0a63cf49d6fda50cc8719f1eea00c3baec9f98ac Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:58:10 2009 +0200 * update the HklSample get_reflection test method test/hkl-test-sample.c | 2 ++ 1 file changed, 2 insertions(+) commit b89520c560dc86a47832406a0c5145361170c081 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:56:36 2009 +0200 * add lifting detector mode with different sample axes. - e6c omega, phi, mu - k6c komega, kphi, mu src/hkl-pseudoaxis-e6c-hkl.c | 24 ++++++++++++++++++++++-- src/hkl-pseudoaxis-k6c-hkl.c | 24 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) commit f850c1def2baa1de27760129186cf7dc0935f4c1 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:50:52 2009 +0200 * add the SampleReflection print in the Sample fprintf method include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) commit 866faed1fbc38cb738941467ce6633dfe9618331 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:36:56 2009 +0200 * remove a memory leak in the geometry multiplication include/hkl/hkl-pseudoaxis-factory.h | 2 ++ 1 file changed, 2 insertions(+) commit 2b2b4ffa125d0bf6df00dc27cc80f2f8ad7de259 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:25:34 2009 +0200 * no more restriction in the eulerian kappa conversion src/hkl-pseudoaxis-common-eulerians.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit f14f7dec81fd31f9eed366a7f76a837707162fa9 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:25:12 2009 +0200 * remove a bug in the eulerian kappa conversion src/hkl-pseudoaxis-common-eulerians.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 3c654e5091f43849b8d392551e14df8ab4df9218 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:23:53 2009 +0200 * the axis distance is equal to the real distance not the orthodromic src/hkl-geometry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b539a9bf177daf122c787d07652c80b98b3adbb5 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 09:25:19 2009 +0200 * print the geometries with more digits. src/hkl-geometry.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 1c671cacd687933d61fa297667952da6dfd58763 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 09:17:09 2009 +0200 * wrong test_sector criterium src/hkl-pseudoaxis-auto.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 85c3cbb2e67983aff2df4f86740a3727400452f0 Author: Picca Frédéric-Emmanuel Date: Fri Apr 17 11:13:08 2009 +0200 * add get_value_closest_unit include/hkl/hkl-axis.h | 6 ++++++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 18 ++++++++++++++++++ src/hkl-parameter.c | 9 +++++++++ src/hkl-pseudoaxis-auto.c | 11 +++++++++-- src/wscript_build | 3 ++- 6 files changed, 46 insertions(+), 3 deletions(-) commit 4f03fe73063080531fd945cb415817cbbf059186 Author: System User Date: Fri Apr 10 19:29:42 2009 +0200 * smae things for an all geometry. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) commit 608d115603d416815d7457c3422e429c9d66c741 Author: System User Date: Fri Apr 10 19:28:59 2009 +0200 * add the hklAxis cut code. now with get_value_closest you can get the angle of the Axis1 closest to the axis2 position taking into account the axis1 range. include/hkl/hkl-axis.h | 6 ++++ src/hkl-axis.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-axis.c | 29 ++++++++++++++++ 3 files changed, 124 insertions(+) commit 3ff90643d91490e423620c9a1d0e325084cd441a Author: System User Date: Fri Apr 10 19:26:54 2009 +0200 * add the HklParameter set_range methodes. include/hkl/hkl-parameter.h | 4 ++++ src/hkl-parameter.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+) commit 776bafd497c755b43b8987e0ce3d6992cca17be0 Author: System User Date: Fri Apr 10 18:15:40 2009 +0200 * add the interval length method include/hkl/hkl-interval.h | 2 ++ src/hkl-interval.c | 5 +++++ test/hkl-test-interval.c | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) commit 918ea7febc6cfbea081c6fad11ab4250c5f63c87 Author: System User Date: Fri Apr 10 12:44:38 2009 +0200 * add the orthodromic geometry distance computation use it in the HklGeometryList add method. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) commit 99692680c3c0c4cddcc7e260cb1756ce672f7db3 Author: System User Date: Thu Apr 9 18:09:56 2009 +0200 * now the geometry multiplication is working include/hkl/hkl-geometry.h | 6 +- include/hkl/hkl-pseudoaxis-factory.h | 69 +++++++++++++ src/hkl-geometry.c | 11 +- src/hkl-pseudoaxis-k6c-hkl.c | 190 ++--------------------------------- src/hkl-pseudoaxis.c | 1 + 5 files changed, 89 insertions(+), 188 deletions(-) commit 05916707d0f31327857498e3ddae847a57f2affa Author: Frédéric-Emmanuel PICCA Date: Wed Apr 8 10:43:14 2009 +0200 * add a multiply function to add special sytmetries to a diffractometer. for now only the bissector vertical system. include/hkl/hkl-geometry.h | 5 +++++ src/hkl-geometry.c | 14 ++++++++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 37 ++++++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 1 deletion(-) commit ef5f8240879e26cdf5905d19a31ec9e235e2d379 Author: Frédéric-Emmanuel PICCA Date: Mon Apr 6 10:40:07 2009 +0200 * reoarganize a little bit the hkl-test-pseudoAxis methods test/hkl-test-pseudoaxis.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 912953c5f204bc62ae9d03ef9614a23e3e42b1f8 Author: System User Date: Fri Apr 3 15:52:14 2009 +0200 * update the bissector modes for the kappa geometries. src/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) commit 96611cab46574f0f2bfc6f33a0b22c2515d5d718 Author: System User Date: Wed Apr 1 09:57:06 2009 +0200 * add the HklAxis get/set_value_unit. include/hkl/hkl-axis.h | 4 ++++ src/hkl-axis.c | 11 +++++++++++ 2 files changed, 15 insertions(+) commit 4dbcdb93cb8a8ff5ce857133b83d89058802639f Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:12:08 2009 +0100 * sort the geometries after an hkl_pseudo_axis_engine_setter. src/hkl-pseudoaxis.c | 2 ++ 1 file changed, 2 insertions(+) commit 8b3b1561b55eb119a28f389e2dd91d088d5af9a9 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:11:13 2009 +0100 * add the hkl_geometry_list_fprintf method use it in the hkl_pseudo_axis_engine_fprintf method. include/hkl/hkl-geometry.h | 3 +++ src/hkl-geometry.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 41 +++++------------------------------------ 3 files changed, 49 insertions(+), 36 deletions(-) commit af98c37c2b39a37cba7901349c1374dbbf85b53b Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:10:06 2009 +0100 * typo src/hkl-geometry.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 3ecc49b8811057581a44edb01d88ebc97ac494dd Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:08:54 2009 +0100 * remove a bug in the sort method src/hkl-geometry.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 52c101ee34917220dd2076f113954b02205061d5 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 15:42:46 2009 +0100 * add the hkl_geometry_list_sort method include/hkl/hkl-geometry.h | 1 + src/hkl-geometry.c | 40 +++++++++++++++++++++++++++++++++++++--- test/hkl-test-geometry.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) commit 41270cb713360307a49e6425b39d75373bb80b42 Author: Picca Frédéric-Emmanuel Date: Sat Mar 21 19:05:07 2009 +0100 * typo include/hkl/hkl-geometry-factory.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f1abf875bdc99748d7244594fe0e5193cbd5d387 Author: Picca Frédéric-Emmanuel Date: Sat Mar 21 14:03:54 2009 +0100 * add the documentation for the HklGeometry Documentation/user-guide.txt | 146 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 122 insertions(+), 24 deletions(-) commit 6f581645f736f37b6e28ddee1beb1a5c0fcf9c07 Author: Picca Frédéric-Emmanuel Date: Thu Mar 19 12:14:19 2009 +0100 * explain in the userg-guide howto build and hack hkl Documentation/user-guide.txt | 69 ++++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 19 deletions(-) commit a789dd7b34bc9d9b0bdd06cb92f1c08aaa6eeb1f Author: Picca Frédéric-Emmanuel Date: Thu Mar 19 11:23:18 2009 +0100 * update the TODO and the README files explain how to compile with waf and the roadmap. README | 27 ++++++++-------------- TODO | 83 +++++++++++++++++------------------------------------------------- 2 files changed, 31 insertions(+), 79 deletions(-) commit 01f32726bfd2daf70e0e95f5a619bc9ab6e263b9 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 16:41:08 2009 +0100 * update the NEWS file NEWS | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) commit edd9b90835f76464d7dc1e5c4b0fcc30f11a999b Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 15:51:33 2009 +0100 * add the GPL header include/hkl/hkl-axis.h | 21 +++++++++++++++++++++ include/hkl/hkl-detector.h | 21 +++++++++++++++++++++ include/hkl/hkl-geometry-factory.h | 21 +++++++++++++++++++++ include/hkl/hkl-geometry.h | 21 +++++++++++++++++++++ include/hkl/hkl-interval.h | 21 +++++++++++++++++++++ include/hkl/hkl-lattice.h | 21 +++++++++++++++++++++ include/hkl/hkl-list.h | 21 +++++++++++++++++++++ include/hkl/hkl-macros.h | 21 +++++++++++++++++++++ include/hkl/hkl-matrix.h | 21 +++++++++++++++++++++ include/hkl/hkl-parameter.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-auto.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-eulerians.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-hkl.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-psi.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-e4cv.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-e6c.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-factory.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-k4cv.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-k6c.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis.h | 21 +++++++++++++++++++++ include/hkl/hkl-quaternion.h | 21 +++++++++++++++++++++ include/hkl/hkl-sample.h | 21 +++++++++++++++++++++ include/hkl/hkl-source.h | 21 +++++++++++++++++++++ include/hkl/hkl-unit.h | 21 +++++++++++++++++++++ include/hkl/hkl-vector.h | 21 +++++++++++++++++++++ src/hkl-axis.c | 21 +++++++++++++++++++++ src/hkl-detector.c | 21 +++++++++++++++++++++ src/hkl-geometry.c | 21 +++++++++++++++++++++ src/hkl-interval.c | 21 +++++++++++++++++++++ src/hkl-lattice.c | 21 +++++++++++++++++++++ src/hkl-matrix.c | 21 +++++++++++++++++++++ src/hkl-parameter.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-auto.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-eulerians.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e6c-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k4cv-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k6c-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis.c | 21 +++++++++++++++++++++ src/hkl-quaternion.c | 21 +++++++++++++++++++++ src/hkl-sample.c | 21 +++++++++++++++++++++ src/hkl-source.c | 21 +++++++++++++++++++++ src/hkl-unit.c | 21 +++++++++++++++++++++ src/hkl-vector.c | 21 +++++++++++++++++++++ src/usage.c | 21 +++++++++++++++++++++ test/bench.c | 21 +++++++++++++++++++++ test/hkl-test-axis.c | 21 +++++++++++++++++++++ test/hkl-test-detector.c | 21 +++++++++++++++++++++ test/hkl-test-geometry.c | 21 +++++++++++++++++++++ test/hkl-test-interval.c | 21 +++++++++++++++++++++ test/hkl-test-lattice.c | 21 +++++++++++++++++++++ test/hkl-test-matrix.c | 21 +++++++++++++++++++++ test/hkl-test-parameter.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-e4cv.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-e6c.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-k4cv.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-k6c.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 21 +++++++++++++++++++++ test/hkl-test-quaternion.c | 21 +++++++++++++++++++++ test/hkl-test-sample.c | 21 +++++++++++++++++++++ test/hkl-test-source.c | 21 +++++++++++++++++++++ test/hkl-test-vector.c | 21 +++++++++++++++++++++ test/hkl-test.c | 21 +++++++++++++++++++++ test/hkl-test.h | 21 +++++++++++++++++++++ test/main.c | 21 +++++++++++++++++++++ 73 files changed, 1533 insertions(+) commit fb5b7b93eaf3ee04a6d1ddb7bbf32722e6a7a4a3 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:38:15 2009 +0100 * reordon the pseudoAxes Modes in the e6c and k6c geometries. src/hkl-pseudoaxis-e6c-hkl.c | 20 ++++++------- src/hkl-pseudoaxis-k6c-hkl.c | 68 ++++++++++++++++++++++---------------------- 2 files changed, 44 insertions(+), 44 deletions(-) commit a22e4329dac984a8bc8f5d61880380157ee6daa6 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:09:27 2009 +0100 * remove valgrind warning about uninitialized values. src/hkl-pseudoaxis.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit 251d243b133b956806ce13ed30d633cdffd460ea Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:08:56 2009 +0100 * remove the unneeded len member of HklGeometryList include/hkl/hkl-geometry.h | 1 - src/hkl-geometry.c | 5 +---- test/bench.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 4 ++-- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis.c | 6 ++++-- 8 files changed, 21 insertions(+), 23 deletions(-) commit 05fd3fe6f030d376a8e55c4366cfb0367e1faa2f Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 10:56:47 2009 +0100 * remove a memory leak src/hkl-geometry.c | 1 + 1 file changed, 1 insertion(+) commit 5ad1d77a9f0ee3ca8e261c1eeab960372e2d2ae1 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 10:56:37 2009 +0100 * Now the HklPseudoAxisEngine Has a reference on an HklPseudoAxisEngineList As this List contain the HklGeometryList all engines of this List refer to this geometry list. include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 17 ++++++-------- test/bench.c | 26 +++++++++++----------- test/hkl-test-pseudoaxis-e4cv.c | 44 +++++++++++++++++++----------------- test/hkl-test-pseudoaxis-e6c.c | 22 +++++++++--------- test/hkl-test-pseudoaxis-k4cv.c | 28 ++++++++++++----------- test/hkl-test-pseudoaxis-k6c.c | 49 ++++++++++++++++++++--------------------- test/hkl-test-pseudoaxis.c | 4 ++-- 8 files changed, 98 insertions(+), 94 deletions(-) commit a242d8fc19db357baba22a35fe7d3c0e0cdd1e08 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 09:50:56 2009 +0100 * add an HklGeometryList in the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 3 +++ 2 files changed, 4 insertions(+) commit f19386200eba38ce472f3950cf9993a38421e24a Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 09:39:06 2009 +0100 * add an HklGeometryList to put in the HklPseudoAxisEngineList this is to share beetween all PseudoAxesEngine the same geometry list. include/hkl/hkl-geometry.h | 27 +++++++++++++++++-- include/hkl/hkl-pseudoaxis.h | 4 +-- src/hkl-geometry.c | 57 +++++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 51 ++++++++---------------------------- test/bench.c | 4 +-- test/hkl-test-pseudoaxis-e4cv.c | 8 +++--- test/hkl-test-pseudoaxis-e6c.c | 4 +-- test/hkl-test-pseudoaxis-k4cv.c | 8 +++--- test/hkl-test-pseudoaxis-k6c.c | 18 ++++++------- test/hkl-test-pseudoaxis.c | 4 +-- 10 files changed, 117 insertions(+), 68 deletions(-) commit 31d3a73a7640b653117051dc92dd71382455c621 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 16:45:53 2009 +0100 * put the holder part in the hkl-geometry.c file include/hkl/hkl-geometry.h | 5 --- src/hkl-geometry.c | 102 +++++++++++++++++++++++++++++++++++++++++++-- src/hkl-holder.c | 93 ----------------------------------------- test/hkl-test-holder.c | 47 --------------------- test/main.c | 1 - 5 files changed, 98 insertions(+), 150 deletions(-) commit 7b4feba042da13a871dd088ae0808342eb7c52ab Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 16:22:51 2009 +0100 * optimize the computation 4% (speedup :) include/hkl/hkl-axis.h | 5 +++++ src/hkl-axis.c | 19 ++++++++++++++++ src/hkl-geometry.c | 14 +++++------- src/hkl-pseudoaxis-auto.c | 8 ++----- src/hkl-pseudoaxis-common-hkl.c | 4 ++-- src/hkl-pseudoaxis-common-psi.c | 2 +- test/hkl-test-detector.c | 4 ++-- test/hkl-test-geometry.c | 2 +- test/hkl-test-sample.c | 48 ++++++++++++++++------------------------- 9 files changed, 56 insertions(+), 50 deletions(-) commit 7487feee314f12cc79fbfe041329bceb56b924da Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 13:53:21 2009 +0100 * rename old get_set method -> mode include/hkl/hkl-pseudoaxis.h | 4 ++-- src/hkl-pseudoaxis-common-eulerians.c | 4 ++-- src/hkl-pseudoaxis-e4cv-hkl.c | 12 ++++++------ src/hkl-pseudoaxis-e4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-e6c-hkl.c | 18 +++++++++--------- src/hkl-pseudoaxis-e6c-psi.c | 4 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 12 ++++++------ src/hkl-pseudoaxis-k4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 22 +++++++++++----------- src/hkl-pseudoaxis-k6c-psi.c | 4 ++-- src/hkl-pseudoaxis.c | 4 ++-- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 10 +++++----- test/hkl-test-pseudoaxis-e6c.c | 4 ++-- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 8 ++++---- test/hkl-test-pseudoaxis.c | 2 +- 17 files changed, 62 insertions(+), 62 deletions(-) commit 742c9a92ee7c600446585d026d1ffb462da9015c Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:44:05 2009 +0100 * renames getset -> mode include/hkl/hkl-pseudoaxis.h | 6 ++-- src/hkl-pseudoaxis-common-eulerians.c | 10 +++--- src/hkl-pseudoaxis-common-hkl.c | 6 ++-- src/hkl-pseudoaxis-common-psi.c | 20 ++++++------ src/hkl-pseudoaxis-common.c | 20 ++++++------ src/hkl-pseudoaxis-e4cv-hkl.c | 22 ++++++------- src/hkl-pseudoaxis-e4cv-psi.c | 6 ++-- src/hkl-pseudoaxis-e6c-hkl.c | 34 ++++++++++---------- src/hkl-pseudoaxis-e6c-psi.c | 6 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 34 ++++++++++---------- src/hkl-pseudoaxis-k4cv-psi.c | 6 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 58 +++++++++++++++++------------------ src/hkl-pseudoaxis-k6c-psi.c | 6 ++-- src/hkl-pseudoaxis.c | 46 +++++++++++++-------------- test/bench.c | 12 ++++---- test/hkl-test-pseudoaxis-e4cv.c | 20 ++++++------ test/hkl-test-pseudoaxis-e6c.c | 6 ++-- test/hkl-test-pseudoaxis-k4cv.c | 8 ++--- test/hkl-test-pseudoaxis-k6c.c | 16 +++++----- test/hkl-test-pseudoaxis.c | 8 ++--- 20 files changed, 175 insertions(+), 175 deletions(-) commit 5b93c9db781295504b37d88a3274501ad3a8b560 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:42:17 2009 +0100 * rename hkl_pseudo_axis_engine_get_set -> hkl_pseudo_axis_engine_mode include/hkl/hkl-pseudoaxis-common-hkl.h | 6 ++--- include/hkl/hkl-pseudoaxis-common-psi.h | 2 +- include/hkl/hkl-pseudoaxis.h | 6 ++--- src/hkl-pseudoaxis-common-eulerians.c | 10 +++---- src/hkl-pseudoaxis-common-hkl.c | 6 ++--- src/hkl-pseudoaxis-common-psi.c | 16 +++++------ src/hkl-pseudoaxis-e4cv-hkl.c | 28 +++++++++---------- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 44 +++++++++++++++--------------- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 22 +++++++-------- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 48 ++++++++++++++++----------------- src/hkl-pseudoaxis-k6c-psi.c | 2 +- src/hkl-pseudoaxis.c | 12 ++++----- 15 files changed, 104 insertions(+), 104 deletions(-) commit 509b7d069a8f77240fdb19de8af9bf730335c1d0 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:39:02 2009 +0100 * rename the HklPseudoAxisEngineGetSet ->HklPseudoAxisEngineMode include/hkl/hkl-pseudoaxis-common-psi.h | 8 ++++---- include/hkl/hkl-pseudoaxis.h | 18 +++++++++--------- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 22 +++++++++++----------- src/hkl-pseudoaxis-common.c | 2 +- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 4 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 4 ++-- src/hkl-pseudoaxis.c | 32 ++++++++++++++++---------------- 14 files changed, 54 insertions(+), 54 deletions(-) commit dcaa59f88283f498a3668c477d6ca4c56c044a5a Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:30:36 2009 +0100 * remove the HKLList include/hkl/hkl-list.h | 36 --------- src/hkl-list.c | 138 --------------------------------- test/hkl-test-list.c | 203 ------------------------------------------------- test/main.c | 1 - 4 files changed, 378 deletions(-) commit afd5a5fa948ae447ed6ef097c7682b2980008610 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:22:12 2009 +0100 * use the HKL_LISt in the Sample part include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 160 +++++++++++++++++++++++++---------------------- test/hkl-test-sample.c | 2 +- 3 files changed, 86 insertions(+), 78 deletions(-) commit e8254ce6a3f3955d95efff4703cf12131dc96b88 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:47:17 2009 +0100 * typo src/hkl-sample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 44a1d7503fadd8b2222b2f599956a03eb492bfd3 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:42:26 2009 +0100 * remove an error in the detector test method test/hkl-test-detector.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 5178184fa824078145cc27343b4f4907bf64d742 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:30:21 2009 +0100 * use the HKL_LIST in the HklSampleList include/hkl/hkl-list.h | 15 +++++++++++++++ include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 37 ++++++++++++------------------------- 3 files changed, 28 insertions(+), 26 deletions(-) commit 37bd79de6bb3d30731399ce3412dda9aae0a1f90 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:59:29 2009 +0100 * use the HKL_LIST in the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 26 +++++++------------------- test/hkl-test-pseudoaxis.c | 2 +- 3 files changed, 9 insertions(+), 22 deletions(-) commit 69838d345b10d1368200312cf6da2ed8943bd4ec Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:52:22 2009 +0100 * use the HKL_LIST for the pseudoAxes list in the HklPseudoAxisEngine. include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis-common-hkl.c | 2 +- src/hkl-pseudoaxis.c | 32 ++++++++++++-------------------- test/hkl-test-pseudoaxis.c | 11 +++++++---- 4 files changed, 21 insertions(+), 27 deletions(-) commit 6b292ce7532a7507de5e4f38b485b150126d1899 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:39:55 2009 +0100 * use the HKL_LIST for the axes in the HklPseudoAxisEngine include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis-auto.c | 39 ++++++++++++++++++++------------------- src/hkl-pseudoaxis-common-hkl.c | 4 ++-- src/hkl-pseudoaxis-common-psi.c | 4 +++- src/hkl-pseudoaxis.c | 18 +++++++----------- 5 files changed, 33 insertions(+), 35 deletions(-) commit c99ad8b43acf04654acbbe8727a7449a514745d8 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 18:24:54 2009 +0100 * more HKl_LIST replacement include/hkl/hkl-list.h | 9 +++++++++ include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 14 +++----------- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 4 ++-- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 4 ++-- test/hkl-test-pseudoaxis.c | 2 +- 9 files changed, 23 insertions(+), 23 deletions(-) commit 3bdd1c269a72034a42c73b4cfe0fb6ab051f316c Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 18:06:05 2009 +0100 * use the HKL_LIST macros for the HklPseudoAxisEngineGetSet->axes_names include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 16 ++++------------ 2 files changed, 5 insertions(+), 14 deletions(-) commit c327909a518d9e34dd4b02dd7ace5fdf8ccea39e Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 17:11:50 2009 +0100 * use the LIST in the PseudoAxisEngineGetSet include/hkl/hkl-list.h | 15 ++++++++------- include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-geometry.c | 2 +- src/hkl-pseudoaxis.c | 15 ++++----------- test/bench.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 2 +- test/hkl-test-pseudoaxis.c | 2 +- 9 files changed, 19 insertions(+), 26 deletions(-) commit f9bd4c312f34ab3774c2a9f3f71bd287b92120ab Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 16:32:50 2009 +0100 * remove the HklAxis list in the Holder. include/hkl/hkl-geometry.h | 1 - src/hkl-geometry.c | 6 ++++-- src/hkl-holder.c | 19 +------------------ test/hkl-test-holder.c | 6 +++--- test/wscript_build | 2 +- 5 files changed, 9 insertions(+), 25 deletions(-) commit 2edc1c932ab133466a433789c0b4022d02fa7f12 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 16:06:20 2009 +0100 * add the bench test test/bench.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++ test/wscript_build | 11 +++++ 2 files changed, 141 insertions(+) commit 48244049f3ea725cebddb61888ce8067ce88a77a Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 14:38:26 2009 +0100 * use a verctor of axis in the geometry instead of *axis. include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-list.h | 13 +++++----- src/hkl-axis.c | 17 ++++++++----- src/hkl-geometry.c | 60 ++++++++++++++++++++-------------------------- src/hkl-holder.c | 25 +++++++++++++------ src/hkl-pseudoaxis.c | 15 ++++++------ test/hkl-test-geometry.c | 38 +++++++++++++++-------------- test/hkl-test-holder.c | 6 ++--- test/hkl-test-sample.c | 8 +++---- 10 files changed, 100 insertions(+), 86 deletions(-) commit f7427db677e141c24bf03b1bf8b533a78b53bf19 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:39:13 2009 +0100 * small optimization src/hkl-holder.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 3f7687c7eaca451a2dec8e511f69ef2687e99d74 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:23:15 2009 +0100 * use list macros in all geometry and add an idx array in the holder include/hkl/hkl-geometry.h | 1 + include/hkl/hkl-list.h | 9 +++++++ src/hkl-geometry.c | 50 +++++++++++++++++------------------ src/hkl-holder.c | 65 +++++++++++++++++++++++++--------------------- 4 files changed, 70 insertions(+), 55 deletions(-) commit b8d509221a2cbc6409b647f9c901b38a7d276e40 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:22:05 2009 +0100 * use also debug in the test test/wscript_build | 1 + 1 file changed, 1 insertion(+) commit 4c9ccbe2b28bb2abcd7e2ff5e2ced020f18590a0 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 17:14:34 2009 +0100 * use the list macros in the geometry include/hkl/hkl-geometry.h | 6 ++---- src/hkl-geometry.c | 8 +++----- src/hkl-holder.c | 16 +++++++--------- 3 files changed, 12 insertions(+), 18 deletions(-) commit 481c4d430ad664e0d0c3b89d8a02585d4e39d127 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 17:02:17 2009 +0100 * start working on an HKL_LIST macros include/hkl/hkl-geometry.h | 3 +-- include/hkl/hkl-list.h | 15 +++++++++++++++ src/hkl-geometry.c | 32 +++++++++++++++----------------- 3 files changed, 31 insertions(+), 19 deletions(-) commit 659fa88a581e5d2c6bf07ff019ef50f2169646a9 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 10 10:16:57 2009 +0100 * work done when updating the Diffractometer device. include/hkl/hkl-parameter.h | 8 ++++++-- include/hkl/hkl-sample.h | 10 +++++++++- src/hkl-parameter.c | 15 ++++++++++++--- src/hkl-pseudoaxis-e4cv-hkl.c | 16 +++++++++++++--- src/hkl-pseudoaxis-e6c-hkl.c | 16 +++++++++++++--- src/hkl-pseudoaxis-k4cv-hkl.c | 27 ++++++++++++++++++++------- src/hkl-pseudoaxis-k6c-hkl.c | 41 ++++++++++++++++++++++++++++++++--------- src/hkl-pseudoaxis.c | 21 +++++++++++++++------ src/hkl-sample.c | 26 ++++++++++++++++++++++++-- wscript | 2 +- 10 files changed, 145 insertions(+), 37 deletions(-) commit 83976b781db2e1b91a56db4b46db6f97232d5c58 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 16 15:44:17 2009 +0100 * add the soleil compile options src/wscript_build | 1 + wscript | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) commit 52f9e8bbfba5b75a0e52aa6ff04b3c94e802f52a Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 17:15:13 2009 +0100 * typo test/hkl-test-sample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28e6b8b6db347d09ea5dc904846947113f620f25 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 17:15:03 2009 +0100 * add to HklPseudoAxisEngineList an get_pseudo_axis_by_name method. include/hkl/hkl-pseudoaxis.h | 3 +++ src/hkl-pseudoaxis.c | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) commit 6193374546e2921db6c669c5e900fa0152d77e1f Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 15:14:25 2009 +0100 * change the HklSampleList append method signature. include/hkl/hkl-sample.h | 3 +-- src/hkl-sample.c | 15 ++++----------- test/hkl-test-sample.c | 31 +++++++++++++++---------------- 3 files changed, 20 insertions(+), 29 deletions(-) commit 9f9d616618874a6b077c30ddbf26065aeb0ceef6 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 9 17:03:16 2009 +0100 * just typo in the HklSample struct src/hkl-sample.c | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) commit 1992293424283dc6e611e7c434011513079f6935 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 9 17:02:58 2009 +0100 * add a get_value using the unit to the HklParameter class. include/hkl/hkl-parameter.h | 2 ++ src/hkl-parameter.c | 8 ++++++++ 2 files changed, 10 insertions(+) commit afe988852b5b21cbb02487cbc620b7e6f5d47c11 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 15:52:59 2009 +0100 * add the hkl_sample_list_del method to remove a sample include/hkl/hkl-list.h | 3 +++ include/hkl/hkl-sample.h | 2 ++ src/hkl-list.c | 14 +++++++++++++- src/hkl-sample.c | 9 +++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) commit daabe75da94e7939eed7931fa57507c72d2c65a1 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 14:47:54 2009 +0100 * now the HklSample::affine method return the size of the simplex. include/hkl/hkl-sample.h | 5 ++++- src/hkl-sample.c | 22 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) commit f407f99a2effc6fb605a1ea79035ebba4a0f4f1a Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 13:47:48 2009 +0100 * rename the hkl_sample_list_append_sample -> hkl_sample_list_append include/hkl/hkl-sample.h | 6 +++--- src/hkl-sample.c | 4 ++-- test/hkl-test-sample.c | 20 ++++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) commit 820c26a7ada6d0e75764a3df597ab0818dcd41f0 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 16:06:09 2009 +0100 * rename the hkl_sample_(get_reflection -> get_ith_reflection) include/hkl/hkl-sample.h | 5 +++-- src/hkl-sample.c | 2 +- test/hkl-test-sample.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) commit 7936b1b04e2647f8e73c0a8b8dc087f2a0ab9df9 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 15:49:29 2009 +0100 * add the get_ith and len to the HklSampleList include/hkl/hkl-sample.h | 4 ++++ src/hkl-sample.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) commit 73404b4ae11d91dac95475aeb83c13e755141ff2 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 15:14:42 2009 +0100 * add a method to set U from the eulerian angles include/hkl/hkl-sample.h | 3 +++ src/hkl-sample.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) commit 6fc71956a1c0f1cd25fd016fd70b2bcc24137bd2 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 12:22:06 2009 +0100 * add the SampleReflection mesured and theoretical angles. include/hkl/hkl-sample.h | 10 ++++++++-- src/hkl-sample.c | 35 ++++++++++++++++++++++++++++++++ test/hkl-test-sample.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 2 deletions(-) commit a652ecb7ec1b3929953c525672ec4a8379d2c67b Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 18:03:59 2009 +0100 * add the HklSampleList TODO | 1 + include/hkl/hkl-sample.h | 28 +++++++++++++++ src/hkl-sample.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++- test/hkl-test-sample.c | 60 +++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 1 deletion(-) commit a5e3d24519eb7f0242f9e987d16cf83d0f154db5 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 18:02:40 2009 +0100 * remove a memory leak. src/hkl-pseudoaxis.c | 4 ++++ 1 file changed, 4 insertions(+) commit cfe77654ec061f543e298c2c1713b79344f0433d Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 16:02:06 2009 +0100 * no more enum problem with g++ include/hkl/hkl-geometry-factory.h | 4 ++-- include/hkl/hkl-sample.h | 3 ++- include/hkl/hkl-unit.h | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) commit 882701fe4dff2b930eab5fb52108ecba3b221223 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 26 14:35:38 2009 +0100 * rename the hkl-test-pseudoaxes-xxx files E4CV -> e4cv etc... test/{hkl-test-pseudoaxis-E4CV.c => hkl-test-pseudoaxis-e4cv.c} | 0 test/{hkl-test-pseudoaxis-E6C.c => hkl-test-pseudoaxis-e6c.c} | 0 test/{hkl-test-pseudoaxis-K4CV.c => hkl-test-pseudoaxis-k4cv.c} | 0 test/{hkl-test-pseudoaxis-K6C.c => hkl-test-pseudoaxis-k6c.c} | 0 4 files changed, 0 insertions(+), 0 deletions(-) commit 972575c825f312f58f5cdebe5c6c721adb05a12a Author: Frédéric-Emmanuel PICCA Date: Mon Jan 26 14:18:51 2009 +0100 * add the pseudoAxisEngineList factory and use it in the pseudoaxis tests. also reactive the eulerians pseudoaxis tests. include/hkl/hkl-pseudoaxis-factory.h | 70 ++++++++++++++++++----------------- include/hkl/hkl-pseudoaxis-k4cv.h | 1 - src/hkl-pseudoaxis-common-eulerians.c | 9 +++++ test/hkl-test-pseudoaxis.c | 32 +++++----------- 4 files changed, 56 insertions(+), 56 deletions(-) commit 8c640f6617d778993a4c50bd48a5a0245e0fd6c8 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 11:04:23 2009 +0100 * clean up the #include src/hkl-pseudoaxis-e4cv-hkl.c | 2 -- src/hkl-pseudoaxis-e4cv-psi.c | 4 ---- src/hkl-pseudoaxis-e6c-hkl.c | 3 --- src/hkl-pseudoaxis-e6c-psi.c | 4 ---- src/hkl-pseudoaxis-k4cv-hkl.c | 2 -- src/hkl-pseudoaxis-k4cv-psi.c | 4 ---- src/hkl-pseudoaxis-k6c-hkl.c | 6 ++---- src/hkl-pseudoaxis-k6c-psi.c | 4 ---- 8 files changed, 2 insertions(+), 27 deletions(-) commit 77242bb2b2805f11751eb467adba6bf031df8ea9 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 10:44:57 2009 +0100 * no more warning include/hkl/hkl-pseudoaxis-common.h | 15 +++++++++++++++ src/hkl-pseudoaxis-common-hkl.c | 29 +---------------------------- src/hkl-pseudoaxis-common-psi.c | 1 + src/hkl-pseudoaxis-common.c | 29 +++++++++++++++++++++++++++++ src/wscript_build | 2 +- 5 files changed, 47 insertions(+), 29 deletions(-) commit 4e00de6bec3f2834c19d1c1a2d49e23011d850b0 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 10:18:20 2009 +0100 * remove few more warnings include/hkl/hkl-unit.h | 6 +++--- src/hkl-unit.c | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) commit 171a4145fdacec78ea9642dc7c7700fe2f0b4563 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 17:24:45 2009 +0100 * typo and warning clean include/hkl/hkl-pseudoaxis.h | 10 +++++----- src/hkl-axis.c | 1 - src/hkl-geometry.c | 2 -- src/hkl-parameter.c | 2 ++ src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-hkl.c | 1 + src/hkl-pseudoaxis-common-psi.c | 4 +--- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 1 - src/hkl-pseudoaxis-e6c-hkl.c | 3 ++- src/hkl-pseudoaxis-e6c-psi.c | 1 - src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 1 - src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 1 - src/hkl-pseudoaxis.c | 32 +++++++++++++++++++++++--------- src/wscript_build | 2 +- 17 files changed, 39 insertions(+), 30 deletions(-) commit af9976834c8df28cee39078957d757041ed93984 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 16:59:14 2009 +0100 * now all pseudoAxes are usable after construction. src/hkl-pseudoaxis-e4cv-hkl.c | 2 ++ src/hkl-pseudoaxis-e4cv-psi.c | 2 ++ src/hkl-pseudoaxis-e6c-hkl.c | 2 ++ src/hkl-pseudoaxis-e6c-psi.c | 2 ++ src/hkl-pseudoaxis-k4cv-hkl.c | 2 ++ src/hkl-pseudoaxis-k4cv-psi.c | 2 ++ src/hkl-pseudoaxis-k6c-hkl.c | 2 ++ 7 files changed, 14 insertions(+) commit 0641359ca13bff057f330d645319e7a1d34bfaf8 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 16:48:48 2009 +0100 * use the HklParameter in the HklAxis include/hkl/hkl-axis.h | 31 ++---------- include/hkl/hkl-parameter.h | 2 + src/hkl-axis.c | 66 ++++++++------------------ src/hkl-geometry.c | 35 ++++++-------- src/hkl-holder.c | 5 +- src/hkl-parameter.c | 7 +++ src/hkl-pseudoaxis-auto.c | 17 +++---- src/hkl-pseudoaxis-common-eulerians.c | 6 +-- src/hkl-pseudoaxis-common-hkl.c | 14 ++---- src/hkl-pseudoaxis-common-psi.c | 7 +-- src/hkl-pseudoaxis.c | 26 +++++++---- test/hkl-test-axis.c | 88 +++++++---------------------------- test/hkl-test-detector.c | 7 +-- test/hkl-test-geometry.c | 15 +++--- test/hkl-test-sample.c | 67 +++++++------------------- 15 files changed, 130 insertions(+), 263 deletions(-) commit 4cdb573258f14fa4cf5a601bd76fb10eec356bd0 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:46:00 2009 +0100 * add the changed member to HklParameter include/hkl/hkl-parameter.h | 5 +++-- src/hkl-lattice.c | 18 ++++++++++----- src/hkl-parameter.c | 11 ++++++---- src/hkl-pseudoaxis-common-eulerians.c | 6 ++--- src/hkl-pseudoaxis-common-hkl.c | 6 ++--- src/hkl-pseudoaxis-common-psi.c | 2 +- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-parameter.c | 41 ++++++++++++++++++++++++----------- 8 files changed, 58 insertions(+), 33 deletions(-) commit 47a75c86a39efeb641406c688d3fb3b30205f0af Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:27:24 2009 +0100 * factorize the "psi" HklPseudoAxisEngine construction. include/hkl/hkl-pseudoaxis-common-psi.h | 2 ++ src/hkl-pseudoaxis-common-psi.c | 16 ++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 9 +-------- src/hkl-pseudoaxis-e6c-psi.c | 9 +-------- src/hkl-pseudoaxis-k4cv-psi.c | 9 +-------- src/hkl-pseudoaxis-k6c-psi.c | 9 +-------- 6 files changed, 22 insertions(+), 32 deletions(-) commit e7eb9ef5d2574016a3b151aed00c7706e36798e9 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:23:25 2009 +0100 * factorize the "hkl" HklPseudoAxisEngine construction include/hkl/hkl-pseudoaxis-common-hkl.h | 2 ++ src/hkl-pseudoaxis-common-hkl.c | 28 ++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-e6c-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-k4cv-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-k6c-hkl.c | 21 +-------------------- 6 files changed, 34 insertions(+), 80 deletions(-) commit 2b7b1fc085f44a69dd93826a673a94c146127def Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:22:35 2009 +0100 * use directly pointers for the PseudoAxes in the HklPseudoAxisEngine. include/hkl/hkl-parameter.h | 8 ++++---- include/hkl/hkl-pseudoaxis.h | 9 +++++++-- src/hkl-parameter.c | 10 +++++---- src/hkl-pseudoaxis-common-eulerians.c | 38 ++++++++++++++++++++++++----------- src/hkl-pseudoaxis-common-hkl.c | 18 +++++++---------- src/hkl-pseudoaxis-common-psi.c | 4 ++-- src/hkl-pseudoaxis-e4cv-hkl.c | 23 ++++++++++++++++----- src/hkl-pseudoaxis-e4cv-psi.c | 11 +++++----- src/hkl-pseudoaxis-e6c-hkl.c | 25 +++++++++++++++++------ src/hkl-pseudoaxis-e6c-psi.c | 11 +++++----- src/hkl-pseudoaxis-k4cv-hkl.c | 23 ++++++++++++++++----- src/hkl-pseudoaxis-k4cv-psi.c | 11 +++++----- src/hkl-pseudoaxis-k6c-hkl.c | 23 ++++++++++++++++----- src/hkl-pseudoaxis-k6c-psi.c | 11 +++++----- src/hkl-pseudoaxis.c | 31 +++++++++++++++++++++++----- test/hkl-test-parameter.c | 32 ++++++++++++++--------------- test/hkl-test-pseudoaxis-E4CV.c | 16 +++++++-------- test/hkl-test-pseudoaxis-E6C.c | 12 +++++------ test/hkl-test-pseudoaxis-K4CV.c | 18 ++++++++--------- test/hkl-test-pseudoaxis-K6C.c | 19 +++++++++--------- test/hkl-test-pseudoaxis.c | 6 +++--- 21 files changed, 227 insertions(+), 132 deletions(-) commit d20a530dcccc739a8ebeb467912c14a25ae4a322 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 10:38:55 2009 +0100 * remove a bug in the HklParameter fprintf method the unit and punit can be NULL so we need to take this into account. src/hkl-parameter.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) commit 5608c8c6e0d2b5b442fee2a497192e8447d1708a Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 10:30:07 2009 +0100 * use HklParameter in the HklPseudoAxis include/hkl/hkl-pseudoaxis.h | 7 +-- src/hkl-pseudoaxis-common-eulerians.c | 23 ++++---- src/hkl-pseudoaxis-common-hkl.c | 27 ++++----- src/hkl-pseudoaxis-common-psi.c | 4 +- src/hkl-pseudoaxis-e4cv-hkl.c | 4 +- src/hkl-pseudoaxis-e4cv-psi.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 4 +- src/hkl-pseudoaxis-e6c-psi.c | 4 +- src/hkl-pseudoaxis-k4cv-hkl.c | 4 +- src/hkl-pseudoaxis-k4cv-psi.c | 4 +- src/hkl-pseudoaxis-k6c-hkl.c | 4 +- src/hkl-pseudoaxis-k6c-psi.c | 4 +- src/hkl-pseudoaxis.c | 21 ++++--- src/hkl-unit.c | 104 ++++++++++++++++++---------------- test/hkl-test-pseudoaxis-E4CV.c | 28 ++++----- test/hkl-test-pseudoaxis-E6C.c | 24 ++++---- test/hkl-test-pseudoaxis-K4CV.c | 30 +++++----- test/hkl-test-pseudoaxis-K6C.c | 18 +++--- test/hkl-test-pseudoaxis.c | 11 ++-- 19 files changed, 166 insertions(+), 163 deletions(-) commit 988dcb204ac34aa77b19b22ded4ae9b85817ff88 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 16:37:12 2009 +0100 * print also the range with the right unit src/hkl-parameter.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 4b390fdc3b75ba1832cb98c97fe227bc9700d9f1 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 14:19:39 2009 +0100 * first version of the unit system include/hkl/hkl-parameter.h | 12 +++++-- include/hkl/hkl-unit.h | 35 ++++++++++++++++++++ src/hkl-lattice.c | 25 ++++++++++---- src/hkl-parameter.c | 20 ++++++++---- src/hkl-unit.c | 80 +++++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-parameter.c | 45 ++++++++++++++++++------- 6 files changed, 191 insertions(+), 26 deletions(-) commit 9e9522ff4fec38bf7063e36faa45429e06195ddc Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 11:27:06 2009 +0100 * update the gitignore file .gitignore | 4 ++++ 1 file changed, 4 insertions(+) commit c84bd9aafdd1b0578256fd1816ec69df6d3b8ab5 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 11:17:58 2009 +0100 * add the eulerians test method but unactive them for now. test/hkl-test-pseudoaxis-K4CV.c | 1 + test/hkl-test-pseudoaxis-K6C.c | 137 ++++++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 4 +- 3 files changed, 141 insertions(+), 1 deletion(-) commit 7d85c97fe5601be288363228b8cb48f404a7d858 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 10:49:02 2009 +0100 * add the common eulerians pseudo axes include/hkl/hkl-pseudoaxis-common-eulerians.h | 12 ++++++++++ ...lerians.c => hkl-pseudoaxis-common-eulerians.c} | 27 +++++++++++----------- test/hkl-test-pseudoaxis-K4CV.c | 2 +- 3 files changed, 27 insertions(+), 14 deletions(-) commit 6a5ba8be5f9230125987559ea81158309432239f Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 15:36:40 2009 +0100 * rename the hkl get set include/hkl/hkl-pseudoaxis-common-hkl.h | 16 ++++++++-------- src/hkl-pseudoaxis-common-hkl.c | 16 ++++++++-------- src/hkl-pseudoaxis-e4cv-hkl.c | 16 ++++++++-------- src/hkl-pseudoaxis-e6c-hkl.c | 24 ++++++++++++------------ src/hkl-pseudoaxis-k4cv-hkl.c | 10 +++++----- src/hkl-pseudoaxis-k6c-hkl.c | 22 +++++++++++----------- 6 files changed, 52 insertions(+), 52 deletions(-) commit 3b49422eb08cdf0a32b96be5c126ef64b694fdb5 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 15:27:02 2009 +0100 * add the vertical and horizontal double diffraction. include/hkl/hkl-pseudoaxis-common-hkl.h | 30 ++++++---- src/hkl-pseudoaxis-common-hkl.c | 73 ++++++----------------- src/hkl-pseudoaxis-e4cv-hkl.c | 13 +++- src/hkl-pseudoaxis-e6c-hkl.c | 27 +++++++-- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +++- src/hkl-pseudoaxis-k6c-hkl.c | 101 ++++++++++++++++++++++++++++++-- src/hkl-pseudoaxis.c | 5 +- 7 files changed, 179 insertions(+), 83 deletions(-) commit dc58d486193f1e579672794598e9a8b123d2f52a Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:14:37 2009 +0100 * now the k6c psi pseudoaxes is working even if not initialized. src/hkl-pseudoaxis-k6c-psi.c | 2 ++ 1 file changed, 2 insertions(+) commit a3c2939ba23053134e03ab40b048b9331db7e07c Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:13:52 2009 +0100 * remove a bug in the double_diffraction_func src/hkl-pseudoaxis-common-hkl.c | 1 + 1 file changed, 1 insertion(+) commit 10629f5da40a96622214c77d3ff0c23a2b0f3081 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:12:51 2009 +0100 add the -g flag to build with the debug symbols src/wscript_build | 1 + 1 file changed, 1 insertion(+) commit 0fa594896944c45efc99b304f4aaf72d076c1f9e Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:12:22 2009 +0100 * remove a bug in the sample_set_lattice method The UB matrix was not updated. src/hkl-sample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 18db4171124eea3dd61d98b1f74436160a8a598b Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:11:31 2009 +0100 * add a bunch of fprintf methods NEWS | 3 +++ TODO | 7 +++++++ include/hkl/hkl-lattice.h | 2 ++ include/hkl/hkl-sample.h | 2 ++ include/hkl/hkl-source.h | 2 ++ src/hkl-lattice.c | 16 ++++++++++++++++ src/hkl-sample.c | 26 ++++++++++++++++++++------ src/hkl-source.c | 7 +++++++ 8 files changed, 59 insertions(+), 6 deletions(-) commit 2017043c6c42d89e761af551283c6a555817f7bf Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 15:54:56 2009 +0100 * use the HklPseudoAxisEgnineList in the tests test/hkl-test-pseudoaxis.c | 77 +++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 49 deletions(-) commit 432290d96a33da1476fe600f967890be3fbb3ab6 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 15:54:30 2009 +0100 * add the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 30 +++++++++++++++ src/hkl-pseudoaxis.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) commit 35a124fcbb06b3fe772920002306c0917b09a58e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 14:43:40 2009 +0100 * typo include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) commit a09625afcd6e2e8f6f13c5911802a41081a8b511 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 13:19:11 2009 +0100 * update the wscript to let the test run (hugly hack) wscript | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 932422f06c1e4b998f6d0f964d0810096e92e2fc Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 16:44:32 2009 +0100 * better gestion of the VERSION number VERSION | 1 - hkl.pc.in | 2 +- src/wscript_build | 2 +- wscript | 5 ++--- 4 files changed, 4 insertions(+), 6 deletions(-) commit c243a721edc390ef13680f687132577e21b4bbb4 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 15:40:54 2009 +0100 * add the pkgconfig file hkl.pc.in | 12 ++++++++++++ wscript | 15 +++++++++++++++ 2 files changed, 27 insertions(+) commit 61e437f35363aa0be45a80abeaa33e1d45b3b4ab Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 15:40:37 2009 +0100 * update the waf script with the 1.5.2 version src/wscript_build | 1 + waf | Bin 76581 -> 75487 bytes 2 files changed, 1 insertion(+) commit 4050f4a2dbde9e999295dba6606d7653aa47988f Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 23:49:21 2009 +0100 * first waf build version CMakeLists.txt | 7 --- SConstruct | 147 -------------------------------------------------- src/CMakeLists.txt | 5 -- src/README-compil.txt | 6 --- src/SConscript | 40 -------------- src/wscript_build | 8 +++ test/CMakeLists.txt | 6 --- test/SConscript | 46 ---------------- test/wscript_build | 11 ++++ waf | Bin 0 -> 76581 bytes wscript | 32 +++++++++++ 11 files changed, 51 insertions(+), 257 deletions(-) commit 7982ac2b32c3fee16655ec82fb111174fb4bdf47 Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:51:09 2009 +0100 * rename hkl-pseudoaxis-common -> hkl-pseudoaxis-common-hkl .../hkl/{hkl-pseudoaxis-common.h => hkl-pseudoaxis-common-hkl.h} | 0 src/{hkl-pseudoaxis-common.c => hkl-pseudoaxis-common-hkl.c} | 2 +- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 6 +++--- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) commit 94743046909a70c00e6ce7fc8746c3e5624871cf Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:39:10 2009 +0100 * refactor a part of the double_diffraction include/hkl/hkl-pseudoaxis-common.h | 26 +++--- src/hkl-pseudoaxis-common.c | 160 +++++++++++++++++++++++------------- src/hkl-pseudoaxis-e4cv-hkl.c | 13 +-- src/hkl-pseudoaxis-e6c-hkl.c | 15 +--- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +-- src/hkl-pseudoaxis-k6c-hkl.c | 13 +-- 6 files changed, 126 insertions(+), 114 deletions(-) commit 1da570b3127a08ec9a7c714ba25bb024fe4b14a0 Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:06:29 2009 +0100 * add the double diffraction mode to all geoemtries VERSION | 2 +- include/hkl/hkl-pseudoaxis-common.h | 22 +++++++++++-- include/hkl/hkl-vector.h | 2 ++ src/hkl-pseudoaxis-common.c | 63 +++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 14 +++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 14 +++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 14 +++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 14 +++++++++ src/hkl-vector.c | 7 +++++ 9 files changed, 149 insertions(+), 3 deletions(-) commit 0f541101e104da19c1771c91a8933074d2522dc9 Author: Picca Frédéric-Emmanuel Date: Sat Jan 10 10:59:28 2009 +0100 * reduce the number of headers for the pseudoAxisengines include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-e4cv-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-e4cv.h | 13 +++++++++++++ include/hkl/hkl-pseudoaxis-e6c-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-e6c-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-e6c.h | 13 +++++++++++++ include/hkl/hkl-pseudoaxis-k4cv-eulerians.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv.h | 14 ++++++++++++++ include/hkl/hkl-pseudoaxis-k6c-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-k6c-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-k6c.h | 13 +++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 2 +- test/hkl-test-pseudoaxis-E4CV.c | 3 +-- test/hkl-test-pseudoaxis-E6C.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 3 +-- test/hkl-test-pseudoaxis-K6C.c | 2 +- test/hkl-test-pseudoaxis.c | 13 ++++--------- 27 files changed, 70 insertions(+), 132 deletions(-) commit 4b55504dd4b564bdf1392eb430d8d9d972010379 Author: Picca Frédéric-Emmanuel Date: Fri Jan 9 21:29:31 2009 +0100 * function name consistency in the pseudo axes part include/hkl/hkl-pseudoaxis-auto.h | 4 +- include/hkl/hkl-pseudoaxis-e6c-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-k6c-hkl.h | 2 +- src/hkl-pseudoaxis-auto.c | 6 +-- src/hkl-pseudoaxis-common-psi.c | 6 +-- src/hkl-pseudoaxis-common.c | 6 +-- src/hkl-pseudoaxis-e4cv-hkl.c | 8 ++-- src/hkl-pseudoaxis-e4cv-psi.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 31 +++++++------- src/hkl-pseudoaxis-e6c-psi.c | 4 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 16 ++++---- src/hkl-pseudoaxis-k4cv-hkl.c | 66 ++++++++++-------------------- src/hkl-pseudoaxis-k4cv-psi.c | 4 +- src/hkl-pseudoaxis-k6c-hkl.c | 76 +++++++++++++++++------------------ src/hkl-pseudoaxis-k6c-psi.c | 4 +- src/hkl-pseudoaxis.c | 40 +++++++++--------- test/hkl-test-pseudoaxis-E4CV.c | 68 +++++++++++++++---------------- test/hkl-test-pseudoaxis-E6C.c | 34 ++++++++-------- test/hkl-test-pseudoaxis-K4CV.c | 28 ++++++------- test/hkl-test-pseudoaxis-K6C.c | 18 ++++----- test/hkl-test-pseudoaxis.c | 36 ++++++++--------- 22 files changed, 222 insertions(+), 243 deletions(-) commit a169da5f6c5bd130803af7e83d12b43a86b7c2ec Author: Picca Frédéric-Emmanuel Date: Mon Jan 5 09:35:10 2009 +0100 * update the CMakeList.txt file CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) commit 5250d22489a21d5f99d6ff674676b523cdd544e0 Author: Picca Frédéric-Emmanuel Date: Fri Dec 5 14:48:42 2008 +0100 * remove a bug in the psi pseudo axis method. src/hkl-pseudoaxis-common-psi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4bef14134f62fe1e0280c6d88b440d3294e52c9d Author: Picca Frédéric-Emmanuel Date: Fri Dec 5 13:00:01 2008 +0100 * add a kphi and phi constant mode. src/hkl-pseudoaxis-k6c-hkl.c | 179 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) commit b0be5acd46bef5e682daca66b824e6b3b201419f Author: Picca Frédéric-Emmanuel Date: Wed Dec 3 14:08:32 2008 +0100 * only add a solution to the pseudoAxes geometries if it is different. src/hkl-pseudoaxis.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) commit 090fa9651fafe17630ff57045328e5e41e582c24 Author: Picca Frédéric-Emmanuel Date: Wed Dec 3 13:46:29 2008 +0100 * use and update the set_values_v geometry method. src/hkl-geometry.c | 6 ++++-- test/hkl-test-pseudoaxis-E4CV.c | 29 +++++++++-------------------- test/hkl-test-pseudoaxis-E6C.c | 33 ++++++++------------------------- test/hkl-test-pseudoaxis-K4CV.c | 25 +++++++------------------ test/hkl-test-pseudoaxis-K6C.c | 10 ++++++++++ 5 files changed, 38 insertions(+), 65 deletions(-) commit 580d38baf59f0a2bb0c5a1d09fb0e28e4d583932 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 13:55:02 2008 +0100 * the set_values_v and distance method to the geometry. include/hkl/hkl-geometry.h | 6 +++- src/hkl-geometry.c | 38 ++++++++++++++++++++++++- test/hkl-test-geometry.c | 71 ++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 101 insertions(+), 14 deletions(-) commit 053359a203feaedf3bc85b2265f54158611c1d97 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 10:56:20 2008 +0100 * indent the geometry part include/hkl/hkl-geometry.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit e5651705af8f98436dbf7990bb7378fa5b21e843 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 10:54:59 2008 +0100 * ensure all sample operations. include/hkl/hkl-sample.h | 6 ++- src/hkl-sample.c | 106 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 77 insertions(+), 35 deletions(-) commit 5fc495bf546eba65f1fe1b248386459ff5c7f201 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 9 17:40:57 2009 +0100 * work in progress include/hkl/hkl-pseudoaxis-auto.h | 4 +-- include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-e6c-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-factory.h | 6 ++--- include/hkl/hkl-pseudoaxis.h | 48 +++++++++++++++++------------------ src/hkl-pseudoaxis-e4cv-hkl.c | 12 ++++----- 6 files changed, 37 insertions(+), 37 deletions(-) commit 0f5cb6efc3fa97635a6078604902dcfe51e4e01a Author: Frédéric-Emmanuel PICCA Date: Fri Nov 28 17:47:26 2008 +0100 * first version of the eulerians pseudo axes. include/hkl/hkl-pseudoaxis-k4cv-eulerians.h | 12 +++ src/hkl-pseudoaxis-k4cv-eulerians.c | 120 ++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-K4CV.c | 61 +++++++++++++- test/hkl-test-pseudoaxis.c | 8 ++ 4 files changed, 200 insertions(+), 1 deletion(-) commit dc67f5082dd51be73f17a1d91edecbe6efe1116d Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 15:10:33 2008 +0100 * remove non necessary method in the k4cv hkl pseudo axis. include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 1 - 1 file changed, 1 deletion(-) commit 0c3a5f5aa293da1aa06784de33394a99e419f4c6 Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 14:28:23 2008 +0100 * update the psi pseudo axis engine test test/hkl-test-pseudoaxis-E4CV.c | 43 ++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) commit ea1a653ae3d860b8304afd10bb4fb29775c10d0b Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 11:08:47 2008 +0100 * refactor the psi pseudo axes engine. include/hkl/hkl-pseudoaxis-common-psi.h | 17 ++------- src/hkl-pseudoaxis-common-psi.c | 65 +++++++++++++++++++++++++++------ src/hkl-pseudoaxis-e4cv-psi.c | 42 +-------------------- src/hkl-pseudoaxis-e6c-psi.c | 42 +-------------------- src/hkl-pseudoaxis-k4cv-psi.c | 42 +-------------------- src/hkl-pseudoaxis-k6c-psi.c | 42 +-------------------- 6 files changed, 64 insertions(+), 186 deletions(-) commit 3ae4d7033610db98f3807116ec23e69e69aa217b Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 17:07:23 2008 +0100 * rename the "psi e4cv" -> "psi vertical" pseudo axis engine src/hkl-pseudoaxis-e6c-psi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ffc9a49669e0435f9df6a7889aad8d7f4230005c Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 17:01:37 2008 +0100 * add to k6c the "psi vertical" pseudo axis engine include/hkl/hkl-pseudoaxis-k6c-psi.h | 12 +++++++ src/hkl-pseudoaxis-k6c-psi.c | 66 ++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 8 +++++ 3 files changed, 86 insertions(+) commit 9e9d69b2b4dce5504f7ef9f355836e840d8f6bab Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 16:52:49 2008 +0100 * add to e6c the "psi e4cv" pseudo axis engine include/hkl/hkl-pseudoaxis-e6c-psi.h | 12 +++++++ src/SConscript | 1 + src/hkl-pseudoaxis-e6c-psi.c | 66 ++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 10 +++++- 4 files changed, 88 insertions(+), 1 deletion(-) commit ab3b1fd02340070d945442bd9b175c0f9185ec0e Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 16:37:14 2008 +0100 * now add the K4C psi pseudo axis engine include/hkl/hkl-pseudoaxis-common-psi.h | 38 ++++++ include/hkl/hkl-pseudoaxis-k4cv-psi.h | 12 ++ src/SConscript | 2 + src/hkl-pseudoaxis-common-psi.c | 201 +++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 216 +------------------------------- src/hkl-pseudoaxis-k4cv-psi.c | 66 ++++++++++ test/hkl-test-pseudoaxis.c | 10 +- 7 files changed, 334 insertions(+), 211 deletions(-) commit e623473a01cdfd0e98b13cf3e3ecf02429d7ccd8 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 15:57:21 2008 +0100 * refactor the file names. include/hkl/hkl-pseudoaxis-E4CV.h | 13 --- include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 12 +++ include/hkl/hkl-pseudoaxis-e4cv-psi.h | 12 +++ ...l-pseudoaxis-E6C.h => hkl-pseudoaxis-e6c-hkl.h} | 6 +- ...pseudoaxis-K4CV.h => hkl-pseudoaxis-k4cv-hkl.h} | 6 +- ...l-pseudoaxis-K6C.h => hkl-pseudoaxis-k6c-hkl.h} | 6 +- src/SConscript | 9 +- src/hkl-pseudoaxis-e4cv-hkl.c | 94 +++++++++++++++++++++ ...pseudoaxis-E4CV.c => hkl-pseudoaxis-e4cv-psi.c} | 97 +--------------------- ...l-pseudoaxis-E6C.c => hkl-pseudoaxis-e6c-hkl.c} | 2 +- ...pseudoaxis-K4CV.c => hkl-pseudoaxis-k4cv-hkl.c} | 2 +- ...l-pseudoaxis-K6C.c => hkl-pseudoaxis-k6c-hkl.c} | 2 +- test/hkl-test-pseudoaxis-E4CV.c | 7 +- test/hkl-test-pseudoaxis-E6C.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 2 +- test/hkl-test-pseudoaxis-K6C.c | 2 +- test/hkl-test-pseudoaxis.c | 11 +-- 17 files changed, 150 insertions(+), 135 deletions(-) commit 89c7a9f58fa2e1930bee9dc37da1bc0a27a8f165 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 13:44:21 2008 +0100 * typo src/hkl-pseudoaxis-E4CV.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 95a8a33ee43195a700adc23df91b9d61077fade3 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 24 17:08:38 2008 +0100 * now psi seems to work correctly src/hkl-pseudoaxis-E4CV.c | 111 +++++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 51 deletions(-) commit 76279d34ee16edbdd9c2cc33809caa9e3a759e26 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 24 16:15:48 2008 +0100 * better psi initialization and getter src/hkl-pseudoaxis-E4CV.c | 59 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 25 deletions(-) commit ca174ba55becfc8e1da160a3f17da1ceae67037f Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 22:18:07 2008 +0100 * set the random test for the psi pseudoaxe src/hkl-pseudoaxis-E4CV.c | 11 +++++++++++ test/hkl-test-pseudoaxis.c | 20 +++++++++++++++----- test/main.c | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) commit 81b2dac096a76f27a999db1b935fa03f6958a7b3 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 17:56:21 2008 +0100 * first version of psi for e4c include/hkl/hkl-pseudoaxis-E4CV.h | 1 + include/hkl/hkl-pseudoaxis.h | 17 ++- src/hkl-pseudoaxis-E4CV.c | 254 ++++++++++++++++++++++++++++++++++++-- src/hkl-pseudoaxis-common.c | 28 +++++ src/hkl-pseudoaxis.c | 71 ++++++++++- test/hkl-test-pseudoaxis-E4CV.c | 144 ++++++++++++++++++++- test/main.c | 2 +- 7 files changed, 495 insertions(+), 22 deletions(-) commit c9923fb4aa08dcffe176aefa15562cc362c2ef72 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 17:07:00 2008 +0100 * add the vector oriented_angle method TODO | 1 + include/hkl/hkl-vector.h | 4 ++++ src/hkl-vector.c | 19 +++++++++++++++++++ test/hkl-test-vector.c | 25 +++++++++++++++++++++++++ 4 files changed, 49 insertions(+) commit 3f6a8af31129497083122584edce11e13aa168d0 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 16:04:41 2008 +0100 * add the vector project_on_plan method include/hkl/hkl-vector.h | 3 +++ src/hkl-vector.c | 11 +++++++++++ test/hkl-test-vector.c | 15 +++++++++++++++ 3 files changed, 29 insertions(+) commit ff394f5cd27e87836a2b4e7d27d4e4b11693165b Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 15:32:16 2008 +0100 * update the TODO list TODO | 5 +++++ 1 file changed, 5 insertions(+) commit 5c668bb12ad5e5743d9751b2c6f8b1d0a4decb0a Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 15:31:35 2008 +0100 * update the vector angle test test/hkl-test-vector.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit 2933142c18370fcd45d6e8416725a904b75648b4 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:49:42 2008 +0100 * update the TODO liste TODO | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit c7774f9e8507707f528de8ef21cbdfc5fa607da6 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:49:32 2008 +0100 * add the init infracstructure for the pseudoAxes engines. include/hkl/hkl-pseudoaxis.h | 10 ++++++++++ src/hkl-pseudoaxis-E4CV.c | 4 ++++ src/hkl-pseudoaxis-E6C.c | 6 ++++++ src/hkl-pseudoaxis-K4CV.c | 4 ++++ src/hkl-pseudoaxis-K6C.c | 6 ++++++ src/hkl-pseudoaxis.c | 29 +++++++++++++++++++++++++++-- 6 files changed, 57 insertions(+), 2 deletions(-) commit 41de52319b0f0e2ed59069225778a0b8b4b4ac71 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:02:40 2008 +0100 * update the TODO liste TODO | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit c42474726338390342a17373e95bb31e9a4595d5 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:40:44 2008 +0100 * remove the fprintf from the degenerated tests. test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) commit 3249774a4b8da0a693454a35688d20ba9ad9fead Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:38:25 2008 +0100 * add a degenerated case for the E6CV pseudoAxes. test/hkl-test-pseudoaxis-E6C.c | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) commit 1a600718805e7e8805179a93b9f18f7d3c60ac02 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:28:12 2008 +0100 * add a degenerated case for the E4CV geometry. test/hkl-test-pseudoaxis-E4CV.c | 59 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) commit 82a46e0502cd3df01fc35f93518b6af157ac8217 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 3 18:36:49 2008 +0100 * now degenerated axes are not used during the permutations. src/hkl-pseudoaxis-auto.c | 48 +++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) commit 71f9c9ef8e0b262a64b6bbfc8c37ba3c9727eb2a Author: Picca Frédéric-Emmanuel Date: Sat Oct 25 16:01:23 2008 +0200 * the vector part include/hkl/hkl-vector.h | 58 ++++++++++++------- src/hkl-vector.c | 147 ++++++++++++++++++++++++----------------------- 2 files changed, 112 insertions(+), 93 deletions(-) commit e6c89b340c7b4b9d4c99c29d54c8b8847efcc47b Author: Picca Frédéric-Emmanuel Date: Sat Oct 25 15:38:27 2008 +0200 * the source part was reindent include/hkl/hkl-source.h | 2 +- src/hkl-source.c | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) commit f604d42204b03cac6403892f0539c63aa85255e9 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:26:53 2008 +0200 * the sample part include/hkl/hkl-sample.h | 23 +++++------ src/hkl-sample.c | 101 +++++++++++++++++++++++------------------------ 2 files changed, 62 insertions(+), 62 deletions(-) commit 83f7801416989188ea3f5dc18eeef4ac6b5da85d Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:17:55 2008 +0200 * now the quaternion part include/hkl/hkl-quaternion.h | 45 ++++++++++++------------ src/hkl-quaternion.c | 81 ++++++++++++++++++++++---------------------- 2 files changed, 65 insertions(+), 61 deletions(-) commit 4bb227fea5784d8e8fef77425beaaa057664e2ba Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:14:27 2008 +0200 * now the pseudoAxes and add an Init method include/hkl/hkl-pseudoaxis.h | 45 ++++++++++++++++++++++++++++---------------- src/hkl-pseudoaxis.c | 12 ++++++------ 2 files changed, 35 insertions(+), 22 deletions(-) commit fa40963ce2ad341dfe3fbc422eb59f631009434f Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:04:30 2008 +0200 * all remaining pseudoaxes classes. src/hkl-pseudoaxis-E4CV.c | 47 +++++++++++------------ src/hkl-pseudoaxis-K6C.c | 95 +++++++++++++++++++++++++---------------------- 2 files changed, 74 insertions(+), 68 deletions(-) commit e6b2f939adbd06276f860aba94020756246769a2 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:02:36 2008 +0200 * now the K4C part src/hkl-pseudoaxis-K4CV.c | 106 ++++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 51 deletions(-) commit da19220525f23e72552a9baf0538f14a6336d411 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:00:21 2008 +0200 * update the E6C pseudoAxes part. src/hkl-pseudoaxis-E6C.c | 72 ++++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 36 deletions(-) commit acb77019e986ef29bce3d909f01b236c95b4cd1e Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:58:08 2008 +0200 * now the common part include/hkl/hkl-pseudoaxis-common.h | 10 ++++++---- src/hkl-pseudoaxis-common.c | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) commit e2d69bce0993e22edb7f854154b0f9667deb7f0d Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:55:47 2008 +0200 * update the pseudoAxis auto part. include/hkl/hkl-pseudoaxis-auto.h | 2 +- src/hkl-pseudoaxis-auto.c | 62 +++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 32 deletions(-) commit ab5be360f38bb68757b2e6a1a98abb3fa44e96ca Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:52:56 2008 +0200 * update HklParameter class. include/hkl/hkl-parameter.h | 13 ++++++----- src/hkl-parameter.c | 54 +++++++++++++++++++++++---------------------- 2 files changed, 35 insertions(+), 32 deletions(-) commit 4507c791459bc95901ebeb5cd7fce6fd13f310f1 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:47:24 2008 +0200 * update the HklMatrix class include/hkl/hkl-matrix.h | 38 ++++++++++++------------- src/hkl-matrix.c | 74 ++++++++++++++++++++++++------------------------ 2 files changed, 56 insertions(+), 56 deletions(-) commit d572e585c6920fde5da31f2fc5d915b2e7b4c092 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:36:55 2008 +0200 * update the list class include/hkl/hkl-list.h | 18 +++++----- src/hkl-list.c | 96 +++++++++++++++++++++++++------------------------- test/hkl-test-list.c | 20 +++++------ 3 files changed, 67 insertions(+), 67 deletions(-) commit c5c4ef2ae2348a9887af6ea6651d784c8fb1a958 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:24:15 2008 +0200 * update the lattice class include/hkl/hkl-lattice.h | 17 +-- src/hkl-lattice.c | 313 +++++++++++++++++++++++----------------------- 2 files changed, 168 insertions(+), 162 deletions(-) commit ee47835c8ba94ddab171e5e60f870510ec6c5f5a Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:13:55 2008 +0200 * indentation src/hkl-axis.c | 4 ++-- src/hkl-detector.c | 2 +- src/hkl-geometry.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit de802720ed6cbb3a5ea3f5465b780b02a4017090 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:13:43 2008 +0200 * update the interval class include/hkl/hkl-interval.h | 30 +-- src/hkl-interval.c | 547 ++++++++++++++++++++++----------------------- 2 files changed, 288 insertions(+), 289 deletions(-) commit 6bbd6810c790c40559252cf94979059e971ce220 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 16:29:47 2008 +0200 * just typo and indentation src/hkl-axis.c | 1 - src/hkl-pseudoaxis.c | 39 ++++++++++++++++++++------------------- test/hkl-test-pseudoaxis-K6C.c | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) commit 4d9fcb2f23b4aaed651596b19790ac082c617f50 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 18:28:42 2008 +0200 * separate test printout for each geometry. test/hkl-test-pseudoaxis.c | 1 + 1 file changed, 1 insertion(+) commit a2932b156ffbcad4bc55a4a1fcf4e59488901341 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 18:27:51 2008 +0200 * add all the default range for the hkl pseudoAxes. src/hkl-pseudoaxis-E4CV.c | 7 +++++++ src/hkl-pseudoaxis-E6C.c | 7 +++++++ src/hkl-pseudoaxis-K4CV.c | 7 +++++++ 3 files changed, 21 insertions(+) commit 59f65ba2a7ff730cb7b9d931bb7aa2576010ca88 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 17:44:39 2008 +0200 * do the random tests on only 100 iterations. test/hkl-test-pseudoaxis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 228bbaf89de83530b81b16d026498c1139cd9c58 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:59:08 2008 +0200 * put a default range for the K6C_HKL pseudo axis. src/hkl-pseudoaxis-K6C.c | 7 +++++++ 1 file changed, 7 insertions(+) commit 3723a3fcf3a321708080daeb5680e4ba0cd22bd9 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:49:23 2008 +0200 * add the hkl_pseudo_axis_init and hkl_pseudo_axis_fprintf method use the fprintf method in the hkl_pseudoAxisEngine_fprintf include/hkl/hkl-pseudoaxis.h | 11 ++++++++++- src/hkl-pseudoaxis.c | 38 +++++++++++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 8 deletions(-) commit b7ea0130392db7796d07be4e16c25e9c4dbfdf19 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:45:14 2008 +0200 * add the hkl_parameter_fprintf method include/hkl/hkl-parameter.h | 3 +++ src/hkl-parameter.c | 9 +++++++++ 2 files changed, 12 insertions(+) commit c733540c9f817cd8e73ab38c299c151a367ac278 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:44:39 2008 +0200 * add the hkl_axis_config_fprintf method include/hkl/hkl-axis.h | 6 ++++-- src/hkl-axis.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) commit 58da4becd54354dbe0832a181fbc647931a336e8 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 22 15:02:43 2008 +0200 * use the parameter randomize method in the pseudoAxis tests. test/hkl-test-pseudoaxis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f5d545b44444757df2fdbb4b7daf4e7a8bb43066 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 22 14:53:30 2008 +0200 * add the "lifting_detector" mode for E6C and K6C src/hkl-pseudoaxis-E6C.c | 9 +++++++++ src/hkl-pseudoaxis-K6C.c | 9 +++++++++ test/hkl-test-pseudoaxis-K6C.c | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) commit 958b658012de849038f935714eab0a2deda59fb9 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 17:18:01 2008 +0200 * now the getter of the pseudoAxesEngine must also set the min and max. This min and max is used in the random test. so put a dummy min and max for the hkl getter. include/hkl/hkl-axis.h | 3 +++ src/hkl-axis.c | 9 +++++++++ src/hkl-pseudoaxis-common.c | 18 ++++++++++++++---- test/hkl-test-pseudoaxis.c | 7 +++++-- 4 files changed, 31 insertions(+), 6 deletions(-) commit 2ad1283a8e8aa4972dcead9a471483e31fe2d0d4 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 16:03:35 2008 +0200 * add the hkl_geometry_randomize method. This methode randomize all axis of a geometry. include/hkl/hkl-axis.h | 10 ++++++++++ include/hkl/hkl-geometry.h | 2 ++ src/hkl-axis.c | 15 +++++++++++++++ src/hkl-geometry.c | 9 +++++++++ test/hkl-test-pseudoaxis.c | 4 +--- 5 files changed, 37 insertions(+), 3 deletions(-) commit 3d2ebf580e70ed6bfa168a7bc1926c1283a4d728 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 15:20:32 2008 +0200 * update the README for cmake README | 56 ++++++++++++++++++++------------------------------------ 1 file changed, 20 insertions(+), 36 deletions(-) commit 757e6ce924ae77bdd67ac98edbabb2d0e368af80 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 14:55:38 2008 +0200 * update the test with cmake CMakeLists.txt | 3 ++- test/CMakeLists.txt | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit 6a6f925dea36b51797782609352d90ccf3a9c495 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:52:52 2008 +0200 * remove config files from scons config-linux2.py | 1 - config-win32.py | 2 -- 2 files changed, 3 deletions(-) commit 1080eb819a7f027747c93ab61dc5381e3659f0fc Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:27:38 2008 +0200 * start working on the eulerian pseudoaxes include/hkl/hkl-pseudoaxis-K4CV.h | 1 + src/hkl-pseudoaxis-K4CV.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) commit a089f651520261576e9048b3c4bda55c8af00df5 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:19:37 2008 +0200 * add comments src/hkl-pseudoaxis-K4CV.c | 4 ++++ 1 file changed, 4 insertions(+) commit 732715b3ce66da01bd5686a9ef3b7dd677f76c37 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 18:15:46 2008 +0200 * factorize all the random pseudoAxes tests include/hkl/hkl-geometry-factory.h | 5 ++ include/hkl/hkl-geometry.h | 1 + src/hkl-geometry.c | 2 + test/SConscript | 1 + test/hkl-test-pseudoaxis-E4CV.c | 63 ------------------- test/hkl-test-pseudoaxis-E6C.c | 62 ------------------- test/hkl-test-pseudoaxis-K4CV.c | 62 ------------------- test/hkl-test-pseudoaxis-K6C.c | 64 -------------------- test/hkl-test-pseudoaxis.c | 121 +++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 10 files changed, 131 insertions(+), 251 deletions(-) commit 704e0d021675926e7f6da2cdf53e3c3813465975 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 16:47:14 2008 +0200 * build a share lib with cmake CMakeLists.txt | 1 - src/CMakeLists.txt | 4 +++- test/CMakeLists.txt | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) commit 2815f66e89a9372a2c7384a54c43b2c944231c48 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 15:41:26 2008 +0200 * add the cmake build system CMakeLists.txt | 5 +++++ src/CMakeLists.txt | 3 +++ test/CMakeLists.txt | 6 ++++++ 3 files changed, 14 insertions(+) commit 6b59f9efa971da03eff2939d167ea75004a536ee Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 11:14:17 2008 +0200 * update the TODO list TODO | 147 +++++++++++++++++++++++-------------------------------------------- 1 file changed, 49 insertions(+), 98 deletions(-) commit 27f113607d07d9661226139f61fa01e26fa8abc6 Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 10:49:38 2008 +0200 * add and update documentation src/hkl-pseudoaxis.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 6 deletions(-) commit 51baa88538511145756e4fcc7606092237b74623 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 14:53:55 2008 +0200 * add some doc for the pseudoaxis-common part. include/hkl/hkl-pseudoaxis-common.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit 976d9a675801346f6677770006ff825eb96c031d Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 14:24:43 2008 +0200 * remove all warnings include/hkl/hkl-pseudoaxis-common.h | 4 ++-- src/hkl-pseudoaxis-E4CV.c | 1 - src/hkl-pseudoaxis-E6C.c | 1 - src/hkl-pseudoaxis-common.c | 4 ++-- 4 files changed, 4 insertions(+), 6 deletions(-) commit 4bebd89c88c9ac7584e006acf1bb51ac40d3b88c Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 13:28:25 2008 +0200 * factorization of the standdard hkl setter. include/hkl/hkl-pseudoaxis-common.h | 4 ++++ src/hkl-pseudoaxis-E4CV.c | 28 +++------------------------- src/hkl-pseudoaxis-E6C.c | 28 +++------------------------- src/hkl-pseudoaxis-common.c | 29 ++++++++++++++++++++++++++--- 4 files changed, 36 insertions(+), 53 deletions(-) commit a7667ec4fcc747556c2066df76a26801d525db57 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 13:20:48 2008 +0200 * simplification of the E6C pseudoAxes. src/hkl-pseudoaxis-E6C.c | 80 +++++++----------------------------------- test/hkl-test-pseudoaxis-E6C.c | 3 +- 2 files changed, 13 insertions(+), 70 deletions(-) commit 38f21be94dece5b86706aea6f2f81466bac73e7b Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 12:13:23 2008 +0200 * simplification of the E4CV modes (faster and less code) src/hkl-pseudoaxis-E4CV.c | 80 +++++++---------------------------------- test/hkl-test-pseudoaxis-E4CV.c | 4 +-- 2 files changed, 14 insertions(+), 70 deletions(-) commit 2a75499c2d263c8d14b9500c09aae605792883c2 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 24 17:24:46 2008 +0200 * add the E6C diffractometer. include/hkl/hkl-pseudoaxis-E6C.h | 12 +++ src/SConscript | 1 + src/hkl-pseudoaxis-E6C.c | 206 +++++++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-pseudoaxis-E6C.c | 167 +++++++++++++++++++++++++++++++ test/main.c | 1 + 6 files changed, 388 insertions(+) commit a5c32b134959b2670bbfb3b278e254d8db4dd253 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 17 12:01:20 2008 +0200 * add the constant mode to the K4CV diffractometer. src/hkl-pseudoaxis-K4CV.c | 224 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) commit 33e5a6f397b6e3d6d7efaba052d938fa1807ef0b Author: Frédéric-Emmanuel PICCA Date: Wed Sep 17 11:49:40 2008 +0200 * rework the K4C bissector mode equations src/hkl-pseudoaxis-K4CV.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) commit 605b8f7dbc9db13aacf50372bf5ab1cfdc7a6e3b Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 17:08:46 2008 +0200 * add the constant phi vertical mode to the K6C geometry. src/hkl-pseudoaxis-K6C.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) commit e6f35e119ad9ceea80a15cf9d1d247396bdcdc25 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 17:02:49 2008 +0200 * add the constant chi vertical mode to the K6C diffractometer. src/hkl-pseudoaxis-K6C.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) commit 34c5514074b764b0d97a955ed58862a174043d36 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 08:56:42 2008 +0200 * add the constant omega vertical mode to the K6C diffractometer. src/hkl-pseudoaxis-K6C.c | 84 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 4 deletions(-) commit b9bce4641aba35e10c60c6201dead3b467129af8 Author: Frédéric-Emmanuel PICCA Date: Mon Sep 15 15:22:20 2008 +0200 * add the bissector vertical mode. src/hkl-pseudoaxis-K6C.c | 95 ++++++++++++++++++++++++++++++++++++++---- test/hkl-test-pseudoaxis-K6C.c | 4 +- 2 files changed, 89 insertions(+), 10 deletions(-) commit 3eec3944db4fc247fed43b44c0e6dd76a5beaf84 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 18:25:43 2008 +0200 * no more gsl_vector_prt function use the data member of gsl_vector. src/hkl-pseudoaxis-K6C.c | 8 ++++---- src/hkl-pseudoaxis-auto.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 8982c2feead9ee0230f40294f3b28a56decea485 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 18:06:09 2008 +0200 * better E4CV bissector mode function. src/hkl-pseudoaxis-E4CV.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit ea788d5ce0cefaa006728e1bd0a74d7768cef911 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:04:09 2008 +0200 * typo src/hkl-pseudoaxis-auto.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) commit 48672b6efa87d67f1fbd85cba81022972407bc06 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:03:59 2008 +0200 * better K6C bissector horizontal function src/hkl-pseudoaxis-K6C.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 97e77a1d5db8f8d11ac48221c75cceb0e5f7e2c8 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:03:27 2008 +0200 * do not restrict the angle after the search. src/hkl-pseudoaxis-auto.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 60a136dd38bb5bbcd136644a0d79149d42b3b676 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 16:59:11 2008 +0200 * fprintf of a pseudoAxes also return the restricted symm angle src/hkl-pseudoaxis.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit c14e22930a719af90270306b58d106300818ca4a Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 14:37:23 2008 +0200 * remove un unnecessary variable in the test_sector function. src/hkl-pseudoaxis-auto.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit e58f8a4cecb8a207cfe91c124678a58cd89456d6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:33:51 2008 +0200 * small documentation improvement. src/hkl-pseudoaxis.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 1ad5ec21c3cf78cac779f4a47db48da8cc11e370 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:24:58 2008 +0200 * no more miss computation of the missed mode computation during tests src/hkl-pseudoaxis-K6C.c | 8 ++++---- src/hkl-pseudoaxis-auto.c | 24 ++++++++++++++++++------ test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 4 ++-- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 5 files changed, 27 insertions(+), 14 deletions(-) commit 4437886435c231aa51bcd63bf2a5c15ea121bccb Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:02:27 2008 +0200 * use op_len instead of op_max in the perm_r It seems easier to understrand. src/hkl-pseudoaxis-auto.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 82a2ad63d3dea403c956017949025cf9227aeb91 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:00:16 2008 +0200 * small bug in the permutation calculation. src/hkl-pseudoaxis-auto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dc8c0b8d1ceca59bfb19ef6c7b441dc2a14f25a9 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 17:45:41 2008 +0200 * print the miss calculated pseudoAxes for each mode. test/hkl-test-pseudoaxis-E4CV.c | 3 ++- test/hkl-test-pseudoaxis-K4CV.c | 3 ++- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit 468aff0f9daaf360f09c9af967bb99ba0aaff9aa Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 17:19:18 2008 +0200 * first kappa6C pseudoAxeEngine. include/hkl/hkl-pseudoaxis-K6C.h | 12 ++++ src/SConscript | 1 + src/hkl-pseudoaxis-K6C.c | 113 ++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 3 +- test/SConscript | 1 + test/hkl-test-pseudoaxis-K6C.c | 145 +++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 7 files changed, 275 insertions(+), 1 deletion(-) commit d84ab9d6a1f790b7befa206693dd6f57537f1359 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 09:57:32 2008 +0200 * use the right mode in the kappa pseudoAxesEngine src/hkl-pseudoaxis-K4CV.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 849392b81bc461bed8c1e65882d59f8e0a0f8f8a Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 16:51:57 2008 +0200 * no more HklPseudoAxeEngineFunc use only getter and setter. split the pseudoAxeEngine.c in an auto part use only for numerical pseudoAxes. As self->geometry is set each time we call the setter, the solver is slover. include/hkl/hkl-pseudoaxis-E4CV.h | 125 +--------- include/hkl/hkl-pseudoaxis-K4CV.h | 91 +------- include/hkl/hkl-pseudoaxis-auto.h | 14 ++ include/hkl/hkl-pseudoaxis.h | 49 +--- src/SConscript | 3 + src/hkl-pseudoaxis-E4CV.c | 170 ++++++++++++++ src/hkl-pseudoaxis-K4CV.c | 108 +++++++++ src/hkl-pseudoaxis-auto.c | 250 ++++++++++++++++++++ src/hkl-pseudoaxis-common.c | 4 + src/hkl-pseudoaxis.c | 472 ++++++-------------------------------- test/hkl-test-pseudoaxis-E4CV.c | 8 +- test/hkl-test-pseudoaxis-K4CV.c | 18 +- 12 files changed, 649 insertions(+), 663 deletions(-) commit 4a9cb31dd474dda40135528009e1be029986c1f5 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 09:04:04 2008 +0200 * remove the to_pseudoAxes from PseudoAxesEngine. include/hkl/hkl-pseudoaxis-K4CV.h | 10 ++++++++ include/hkl/hkl-pseudoaxis.h | 2 -- src/hkl-pseudoaxis.c | 30 ------------------------ test/hkl-test-pseudoaxis-E4CV.c | 3 ++- test/hkl-test-pseudoaxis-K4CV.c | 48 ++++----------------------------------- 5 files changed, 16 insertions(+), 77 deletions(-) commit 40d89e587d47577e75627bd74c0c32ce589e4279 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 08:53:46 2008 +0200 * no more crash of fprintf if the geometry was no set in PseudoAxesEngine. src/hkl-pseudoaxis.c | 44 +++++++++++++++++++++++------------------ test/hkl-test-pseudoaxis-E4CV.c | 26 ++++++++++++------------ 2 files changed, 38 insertions(+), 32 deletions(-) commit 5f342e4330da4452c6e88027fe4905a47de83d4c Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 08:10:05 2008 +0200 * start to use the get set in the E4CV pseudoAxeEngine. include/hkl/hkl-pseudoaxis-E4CV.h | 10 ++++++++++ include/hkl/hkl-pseudoaxis.h | 4 ++-- src/hkl-pseudoaxis.c | 11 +++++------ 3 files changed, 17 insertions(+), 8 deletions(-) commit b004305209632113451d5f2d5cbff2daf0ea3992 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 17:57:44 2008 +0200 * create a common part for the pseudoAxeEngine. include/hkl/hkl-pseudoaxis-E4CV.h | 1 + include/hkl/hkl-pseudoaxis-K4CV.h | 1 + include/hkl/hkl-pseudoaxis-common.h | 7 ++++ include/hkl/hkl-pseudoaxis.h | 4 +- src/SConscript | 1 + src/hkl-pseudoaxis-common.c | 80 +++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 45 --------------------- 7 files changed, 91 insertions(+), 48 deletions(-) commit 95cb64e01583e346302b40027fd160f1e5e3bc57 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 17:31:30 2008 +0200 * refactor the getset part of the pseudoAxesEngine include/hkl/hkl-pseudoaxis.h | 51 +++++++++------------ src/hkl-pseudoaxis.c | 104 ++++++++++++++++++++++++++++++++----------- 2 files changed, 99 insertions(+), 56 deletions(-) commit 7feb06b7d190f1b9032e71446f6356839562df5e Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 16:54:29 2008 +0200 * start to add the Getter and Setter in the PseudoAxisEngine. also refactoring of the PseudoAxis geometry specific constructors. include/hkl/hkl-pseudoaxis-E4CV.h | 85 +++++++------ include/hkl/hkl-pseudoaxis-K4CV.h | 30 +++-- include/hkl/hkl-pseudoaxis.h | 84 +++++++++++-- src/hkl-pseudoaxis.c | 256 ++++++++++++++++++++++++++++++-------- test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 4 +- 6 files changed, 335 insertions(+), 126 deletions(-) commit d0aca04cc00766f8ece48497d29887776f2f7976 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 10:51:09 2008 +0200 * revert all inlining till I understand well the inlining... include/hkl/hkl-axis.h | 7 +------ include/hkl/hkl-quaternion.h | 41 +++-------------------------------------- include/hkl/hkl-vector.h | 6 +----- src/hkl-axis.c | 7 +++++++ src/hkl-quaternion.c | 38 ++++++++++++++++++++++++++++++++++++++ src/hkl-vector.c | 5 +++++ 6 files changed, 55 insertions(+), 49 deletions(-) commit c00fc96aaadd7b4a3b094843916c14674b72a2c0 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 15:03:47 2008 +0200 * documentation. src/hkl-pseudoaxis.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 8d7c11a002ca19931d2543d3152c1139358abc28 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 14:31:36 2008 +0200 * inline a few more methods to speed calculation. include/hkl/hkl-axis.h | 15 ++++++++++++- include/hkl/hkl-quaternion.h | 53 +++++++++++++++++++++++++++++++++++++++++--- include/hkl/hkl-vector.h | 7 +++++- src/hkl-axis.c | 6 ----- src/hkl-quaternion.c | 40 --------------------------------- src/hkl-vector.c | 6 ----- 6 files changed, 70 insertions(+), 57 deletions(-) commit 811236af9a8b3006b3f65418192a8234abbe5c76 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 11:48:56 2008 +0200 * the geometry_init_geometry now also copy the holders no more dirty axes. src/hkl-geometry.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 742b8b08a46e0fd4f33ed399006f24db9cf4ff2d Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 11:02:31 2008 +0200 * use the x[] instead of *x notation in the method decalrations. src/hkl-pseudoaxis.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 8b829b7d80ec7f0c89e95ff5f6f4aaa96abb5762 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:50:06 2008 +0200 * comments updated src/hkl-pseudoaxis.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 92e18ce57b340078df0b5aead6ab8bc106034a55 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:46:04 2008 +0200 * add the find_first_geometry documentation src/hkl-pseudoaxis.c | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 8b4358a346d33151c8395577987424b54bdc27f6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:39:52 2008 +0200 * add documentation src/hkl-pseudoaxis.c | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 2b2c2d5d7074a1b4d4c0fdf1b47d3be2adc7be5c Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:39:29 2008 +0200 * use self instead of engine in the add_geometry method. src/hkl-pseudoaxis.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit b3f24cec4a1519bade3abd839225bef38f420ba2 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:31:20 2008 +0200 * use the variable array length of C99 in the to_geometry. src/hkl-pseudoaxis.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) commit b44e9b99e983450d5826f82561275e70a7c8f0d6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:21:02 2008 +0200 * fix indentation src/hkl-pseudoaxis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4f40c28710b151fc33ecfb1c59c1c73341bec3f9 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:20:35 2008 +0200 * rename jacobian into find_degenerated src/hkl-pseudoaxis.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) commit 46df53194eb957bc33652ac69748603fa02e6e74 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 09:36:55 2008 +0200 rename the find_geoemtry method to be more explicite src/hkl-pseudoaxis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b3d22b2e0c53478bc9d8c86cafd35d73587807fd Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 09:36:34 2008 +0200 * use the right signature for the compute_jacobian function src/hkl-pseudoaxis.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 0c93e56099932a3da1bc43b87e24c74247ee0d46 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:57:52 2008 +0200 * add a degenerated case in the K4CV pseudoAxesEngine. test/hkl-test-pseudoaxis-K4CV.c | 65 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 7 deletions(-) commit 7fa62fdb8bf540981ac097630231a519327c25c5 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:49:23 2008 +0200 * add a compute_jacobian method to work on degenerated axes. src/hkl-pseudoaxis.c | 55 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 19 deletions(-) commit 563378cd78bb1fe252a9089b0292cc350f067ab1 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:30:34 2008 +0200 * use fprintf to stderr instead of stdout in the test methods test/hkl-test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 112b986c20506d2299e55e8cf75907c0e4cc48cf Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:30:08 2008 +0200 * print the number of missed calculated pseudoAxes. test/hkl-test-pseudoaxis-E4CV.c | 5 ++++- test/hkl-test-pseudoaxis-K4CV.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) commit bd9d6010ecab0c53a7751b2831a2cef81754e2c9 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:29:42 2008 +0200 *small optimisation of the solver src/hkl-pseudoaxis.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit b94a3b99c558a1ecb71790f0963efca861c06598 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:17:12 2008 +0200 * update the fdjacobian in the test sector method. src/hkl-pseudoaxis.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) commit 4fbe97da009f017c1c385d1ccd9587110808def6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:16:38 2008 +0200 * remove a memory leak from the PseudoAxisengine solver. leak when the solution could not be found -> status = GSL_CONTINUE return without deallocating the memory. src/hkl-pseudoaxis.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) commit 1528f75b705605ce9c8e9a52902e4587c51a3ef1 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 17:43:54 2008 +0200 * remove un-needed method src/hkl-holder.c | 6 ------ test/hkl-test-holder.c | 6 +++--- 2 files changed, 3 insertions(+), 9 deletions(-) commit acfa0f8bb65c121d2a226cd76c1eea6ce195b36c Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 17:38:18 2008 +0200 * first kappa4C working HKL pseudoAxesEngine. include/hkl/hkl-pseudoaxis-K4CV.h | 90 ++++++++++++ src/hkl-pseudoaxis.c | 26 ++-- test/SConscript | 3 +- ...est-pseudoaxis.c => hkl-test-pseudoaxis-E4CV.c} | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 161 +++++++++++++++++++++ test/main.c | 3 +- 6 files changed, 266 insertions(+), 19 deletions(-) commit 4030c3a55495d2e408536fecb814ad6fcfa922fd Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 15:11:49 2008 +0200 * compact the E4CV pseudoAxes initialization include/hkl/hkl-pseudoaxis-E4CV.h | 44 ++++++++------------------------------- 1 file changed, 9 insertions(+), 35 deletions(-) commit 4cfa20f3cc15727a5390a7ed0054827826f3de45 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 15:00:33 2008 +0200 * now use directly the right function instead of a copy include/hkl/hkl-pseudoaxis-E4CV.h | 6 +++--- include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 6 +++--- test/hkl-test-pseudoaxis.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) commit 0d61c9b9cb8b8c0dc3f73f4ad1aadc5a57149cf3 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 14:55:38 2008 +0200 * add a name to the pseudoAxesEngineFunc and most of the E4CV functions. also reduce the number of iteration before stopping looking for a solution. include/hkl/hkl-pseudoaxis-E4CV.h | 105 +++++++++++++++++++++++++++++--------- include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 2 +- test/hkl-test-pseudoaxis.c | 53 ++++++++++--------- 4 files changed, 113 insertions(+), 48 deletions(-) commit 1b13f88466aa89d32e1071622abe2eba9ef72480 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 13:00:26 2008 +0200 * better fprintf in the PseudoAxesengine. src/hkl-pseudoaxis.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 13e0866b82136ab35c962ba4eea8b7ee62036065 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 11:46:21 2008 +0200 refactoring of the PseudoAxesEngien test test/hkl-test-pseudoaxis.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) commit e0eacc5049c48fa1b93abe01bb343f2c46d69c83 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 11:42:31 2008 +0200 * remove a bug in the new hkl_geometry_init_geometry add also the pseudoAxes fprintf method. include/hkl/hkl-pseudoaxis-E4CV.h | 17 ++++++++++------- include/hkl/hkl-pseudoaxis.h | 4 +++- src/hkl-geometry.c | 6 ++++-- src/hkl-pseudoaxis.c | 38 ++++++++++++++++++++++++++++++-------- test/hkl-test-pseudoaxis.c | 25 ++++++++++++++----------- 5 files changed, 61 insertions(+), 29 deletions(-) commit 2d62bdd073a1e35cd43e32a3eb8f4280b85fc70a Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 10:39:49 2008 +0200 * optimization src/hkl-pseudoaxis.c | 64 +++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 31 deletions(-) commit 9bbc2206e4df3aec6d36aa75df63a1349a6aea88 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 10:00:21 2008 +0200 * optimization of the geometries allocation in the pseudoAxeEngine We now allocate everything in the add_geometry method then we just copy the axes config part from the engine->geometry to the engine->geometries with the new hkl_geometry_init_geometry method. include/hkl/hkl-geometry.h | 3 +++ include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-geometry.c | 16 ++++++++++++++++ src/hkl-pseudoaxis.c | 45 ++++++++++++++++++++++++-------------------- 4 files changed, 45 insertions(+), 20 deletions(-) commit d9f14f10cffff3b03f26afe7e5fd934a1c0e01b5 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 09:22:49 2008 +0200 * now all geometries are provided. src/hkl-pseudoaxis.c | 465 ++++++++++++++++++++++----------------------- test/hkl-test-pseudoaxis.c | 2 +- 2 files changed, 231 insertions(+), 236 deletions(-) commit bbbb9105b407efb0145d3fe9975f42f0502d1696 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 26 14:48:16 2008 +0200 * refactoring of all the PseudoAxes SConstruct | 2 +- config-linux2.py | 1 + include/hkl/hkl-geometry.h | 3 + include/hkl/hkl-pseudoaxis-E4CV.h | 38 +++- include/hkl/hkl-pseudoaxis.h | 91 +++----- src/SConscript | 1 - src/hkl-geometry.c | 13 ++ src/hkl-pseudoaxis-auto.c | 339 --------------------------- src/hkl-pseudoaxis.c | 466 ++++++++++++++++++++++++++------------ test/hkl-test-pseudoaxis.c | 200 ++++------------ test/main.c | 2 +- 11 files changed, 452 insertions(+), 704 deletions(-) commit acfd67299960d732b457f75f24d97280ca3e6c91 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 18:06:49 2008 +0200 * reorganize a little bit the geometry + holder to improve speed. include/hkl/hkl-geometry.h | 8 -------- src/hkl-geometry.c | 35 +++++++++++++++++++++++++++++------ src/hkl-holder.c | 24 ------------------------ test/hkl-test-geometry.c | 4 ++++ test/hkl-test-holder.c | 36 ------------------------------------ 5 files changed, 33 insertions(+), 74 deletions(-) commit a91150cd8c10e17df16786b42362ed64cf20cd4e Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 17:45:12 2008 +0200 * now Detector is normal struct no more new/free include/hkl/hkl-detector.h | 7 +----- include/hkl/hkl-sample.h | 2 +- src/hkl-detector.c | 33 +++----------------------- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 5 ++-- test/hkl-test-detector.c | 35 ++++----------------------- test/hkl-test-pseudoaxis.c | 21 +++++------------ test/hkl-test-sample.c | 59 +++++++++++++++------------------------------- 9 files changed, 38 insertions(+), 128 deletions(-) commit fb019aa91616bf61cb04e50959d3605126464149 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 17:42:44 2008 +0200 * optimization in the holder part. src/hkl-holder.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 1fe5c074edaa948556984f93af3b588ecdfeb3c5 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 14:09:19 2008 +0200 * small refactoring of the geometry add holder class src/hkl-geometry.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 30d0f50331b1d04e8fdee6d79beae442f210b633 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 14:08:40 2008 +0200 * just a refactoring of the geometry factory include/hkl/hkl-geometry-factory.h | 40 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) commit 5b35453ab6735910b26ff84892e27d7c6b04a70a Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 13:48:15 2008 +0200 * remove a leak in the Geometry. src/hkl-geometry.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) commit 3dc4907085bb73661e5094087a8d6411f1ee4410 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 13:33:31 2008 +0200 * use sel fin the geometry class include/hkl/hkl-geometry.h | 23 ++++++++-------- src/hkl-geometry.c | 38 +++++++++++++-------------- src/hkl-holder.c | 65 ++++++++++++++++++++++------------------------ 3 files changed, 62 insertions(+), 64 deletions(-) commit 658e2a265361ce8008f7de7c64edda77ff5eb6ca Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 17:27:58 2008 +0200 * no more list in the Geometry include/hkl/hkl-axis.h | 5 +--- include/hkl/hkl-geometry.h | 7 ++--- src/hkl-axis.c | 36 +++------------------- src/hkl-geometry.c | 45 ++++++++++------------------ src/hkl-holder.c | 30 +++++++++---------- src/hkl-pseudoaxis-auto.c | 11 +++---- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-axis.c | 75 ++++++++++++++++++++-------------------------- test/hkl-test-geometry.c | 6 ++-- test/hkl-test-pseudoaxis.c | 8 ++--- test/hkl-test-sample.c | 16 +++++----- 11 files changed, 91 insertions(+), 150 deletions(-) commit 89f2689eeeaad0e0af83c108c0c413500b91d902 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 16:33:12 2008 +0200 * no more HklList in the holder include/hkl/hkl-geometry.h | 3 ++- src/hkl-holder.c | 34 ++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 17 deletions(-) commit 2687356c7b704469d9c64d60714477bb2274d135 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 16:07:42 2008 +0200 * now holder and geometry are thigten include/hkl/hkl-geometry.h | 31 ++++++++- include/hkl/hkl-holder.h | 32 --------- src/hkl-geometry.c | 4 +- src/hkl-holder.c | 18 ++--- test/hkl-test-holder.c | 161 +++------------------------------------------ 5 files changed, 50 insertions(+), 196 deletions(-) commit ee6cdb5eee2f161d578ad575d62b59d0c68ad904 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 14:28:52 2008 +0200 * change the type of the HklHolder list in the HklGeometry include/hkl/hkl-geometry.h | 3 +- include/hkl/hkl-holder.h | 7 ++--- src/hkl-detector.c | 2 +- src/hkl-geometry.c | 40 +++++++++++--------------- src/hkl-holder.c | 46 +++++++++++------------------- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 4 +-- test/hkl-test-geometry.c | 9 +++--- test/hkl-test-holder.c | 70 ++++++++++++++++++++++------------------------ test/main.c | 2 +- 11 files changed, 82 insertions(+), 105 deletions(-) commit f601b9cdd4f19bc8924c913d4f72c730f57b56e7 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 13:41:45 2008 +0200 * idem for the source include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-source.h | 12 ++------ src/hkl-detector.c | 2 +- src/hkl-geometry.c | 6 ++-- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 2 +- src/hkl-source.c | 75 +++++++++----------------------------------- test/hkl-test-source.c | 77 +++++++++++++++------------------------------- 9 files changed, 48 insertions(+), 132 deletions(-) commit 41c7c35790f7f162483d6ac8e79fae97c5c938f7 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 10:07:49 2008 +0200 * idem for quaternions include/hkl/hkl-holder.h | 2 +- include/hkl/hkl-quaternion.h | 10 ++-------- src/hkl-detector.c | 2 +- src/hkl-holder.c | 9 ++++----- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-quaternion.c | 32 +------------------------------- src/hkl-sample.c | 4 ++-- test/hkl-test-holder.c | 16 ++++++++-------- test/hkl-test-quaternion.c | 33 ++++++++------------------------- 10 files changed, 29 insertions(+), 83 deletions(-) commit 0656b8f4b7386dd6ae3b7947758b89f9ff171750 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 10:00:58 2008 +0200 *idem for the HklMatrix include/hkl/hkl-matrix.h | 11 ++------- include/hkl/hkl-sample.h | 4 ++-- src/hkl-matrix.c | 48 +++++--------------------------------- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 24 +++++++++---------- test/hkl-test-matrix.c | 59 +++++++++++++++-------------------------------- test/hkl-test-sample.c | 6 ++--- 8 files changed, 44 insertions(+), 112 deletions(-) commit a2f666a279147533a4af3f32a93457377848fe38 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 09:36:23 2008 +0200 * use Hklvector as a struct no more pointer in other struct. include/hkl/hkl-source.h | 2 +- include/hkl/hkl-vector.h | 7 +------ src/hkl-detector.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-source.c | 13 ++++++------- src/hkl-vector.c | 35 +---------------------------------- test/hkl-test-axis.c | 24 ++++++++---------------- test/hkl-test-holder.c | 10 ++++------ test/hkl-test-source.c | 14 +++++++------- test/hkl-test-vector.c | 40 +++------------------------------------- 10 files changed, 33 insertions(+), 116 deletions(-) commit 4314c1f5b42ed3187a964bd7c682c097773c4d0d Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 15:30:23 2008 +0200 * move the hkl common part to the pseudoAxis.c file include/hkl/hkl-pseudoaxis-E4CV.h | 56 ++------------------------------------- include/hkl/hkl-pseudoaxis.h | 2 ++ src/hkl-pseudoaxis-auto.c | 6 ++--- src/hkl-pseudoaxis.c | 52 ++++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 57 deletions(-) commit 1495158d7f152769ff977850ca25d6f705075f0d Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 15:46:28 2008 +0200 * add the pseudoAxisEngineFunc class to help deal with more pseudoAxes. include/hkl/hkl-pseudoaxis-E4CV.h | 109 +++++++++++++++++++++++++++++ include/hkl/hkl-pseudoaxis.h | 27 +++++-- src/hkl-pseudoaxis-auto.c | 143 +++++++------------------------------- src/hkl-pseudoaxis.c | 15 ++-- test/hkl-test-pseudoaxis.c | 14 ++-- 5 files changed, 175 insertions(+), 133 deletions(-) commit 999a74ed397bb2cc32573f77f5aa01357f3a3eb5 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 13:53:26 2008 +0200 * split the auto_equiv_geometries in 4 functions. src/hkl-pseudoaxis-auto.c | 252 +++++++++++++++++++++++++++++----------------- 1 file changed, 157 insertions(+), 95 deletions(-) commit c2717261e06481b77c2357d029205de363a3b1ec Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 11:49:38 2008 +0200 * add a get_axis_const to the HklGeometry class. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 9 +++++++++ 2 files changed, 11 insertions(+) commit 667e007db7162bd6374f3d92b270c6d78d4e3b57 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 10:08:53 2008 +0200 * bug in the holder test suite test/hkl-test-holder.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 4bc1df996dfa200dac8e69c9bdd149b30aba6d64 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 09:20:29 2008 +0200 * add an equiv_geometry to the pseudoAxeEngine class. Now from one solution the equiv_geometry gives you the other solutions in the different quadrant of [0 2pi] for each axis. include/hkl/hkl-pseudoaxis.h | 3 + src/SConscript | 3 +- src/hkl-pseudoaxis-auto.c | 152 ++++++++++++++++++++++++++++++++++++++++--- src/hkl-pseudoaxis.c | 5 ++ test/hkl-test-pseudoaxis.c | 150 +++++++++++++++++++++++++++--------------- 5 files changed, 252 insertions(+), 61 deletions(-) commit e9e449928e3a3e6126c7da9e98c79cada4c5bf5d Author: Frédéric-Emmanuel PICCA Date: Thu Jun 12 17:55:22 2008 +0200 * the fprintf method of the geometry now print the real value of the axes. No more [-pi pi] conversion of the angles. src/hkl-geometry.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 82d18573131af57907dc38996d6f3ab27ef5cd79 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 12 17:53:51 2008 +0200 * correct the kappa geometries include/hkl/hkl-geometry-factory.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 232aaa388e9e94edd8b8cdcd059bac9203000864 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 10 13:36:28 2008 +0200 * add a printf method to the Geometry class. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) commit 3423efbc9ce2807c52dfdf72350e5e4bfefc12de Author: Frédéric-Emmanuel PICCA Date: Tue Jun 10 09:43:28 2008 +0200 * remove an unneeded part in the pseudoAxis src/hkl-pseudoaxis-auto.c | 1 - 1 file changed, 1 deletion(-) commit 92c8bf89b4020498d845e355964498ca3e797756 Merge: 6da710f4 7b690cbb Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 18:20:32 2008 +0200 Merge branch 'next' of /media/sdb1/hkl into next commit 6da710f4324990c8929d858728536972c0492d7f Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 15:27:58 2008 +0200 *remove useless method in the PseudoAxesEngine class include/hkl/hkl-pseudoaxis.h | 5 ----- 1 file changed, 5 deletions(-) commit 5e3bace68d4ec7b4747244a1e537715c336e8e39 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 14:48:20 2008 +0200 * instead of a current and consign part use only a value. now the library is only a sort of calculator for diffractometers. If you have de current and consign part you need to use two different geometry to store the current value and the consign values. include/hkl/hkl-axis.h | 6 ++--- include/hkl/hkl-detector.h | 2 +- include/hkl/hkl-holder.h | 4 +-- src/hkl-axis.c | 9 +++---- src/hkl-detector.c | 6 ++--- src/hkl-holder.c | 21 ++++------------ src/hkl-pseudoaxis-auto.c | 60 ++++++++++++-------------------------------- test/hkl-test-axis.c | 32 +++++++----------------- test/hkl-test-detector.c | 10 +++----- test/hkl-test-geometry.c | 3 +-- test/hkl-test-holder.c | 62 +--------------------------------------------- test/hkl-test-pseudoaxis.c | 46 ++++++++++------------------------ test/hkl-test-sample.c | 16 ++++++------ 13 files changed, 65 insertions(+), 212 deletions(-) commit ab6a91e74cc7b6a734179b02f3616e6f16746663 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 14:23:36 2008 +0200 * remove useless files binding/python/SConscript | 21 - binding/python/diffractometer.gazpacho | 2016 ------------ binding/python/diffractometer.glade | 3423 --------------------- binding/python/diffractometer.py | 680 ---- binding/python/diffractometer2.py | 736 ----- binding/python/diffractometer_eulerian4C_wrap.cpp | 39 - binding/python/diffractometer_eulerian4C_wrap.h | 18 - binding/python/diffractometer_kappa4C_wrap.cpp | 45 - binding/python/diffractometer_kappa4C_wrap.h | 18 - binding/python/diffractometer_kappa_wrap.cpp | 8 - binding/python/diffractometer_kappa_wrap.h | 18 - binding/python/diffractometer_wrap.cpp | 309 -- binding/python/diffractometer_wrap.h | 91 - binding/python/hkl_wrap.cpp | 76 - binding/python/reflection_wrap.h | 18 - include/hkl/HKLException.h | 76 - include/hkl/affinement.h | 95 - include/hkl/affinement_simplex.h | 48 - include/hkl/affinementlist.h | 147 - include/hkl/convenience.h | 37 - include/hkl/derived_mode.h | 95 - include/hkl/derived_pseudoaxeengine.h | 527 ---- include/hkl/diffractometerfactory.h | 49 - include/hkl/eulerian4C_vertical_diffractometer.h | 33 - include/hkl/eulerian4C_vertical_geometry.h | 161 - include/hkl/eulerian4C_vertical_mode.h | 148 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 156 - include/hkl/eulerian6C_diffractometer.h | 60 - include/hkl/eulerian6C_geometry.h | 191 -- include/hkl/eulerian6C_mode.h | 29 - include/hkl/eulerian6C_pseudoaxeengine.h | 236 -- include/hkl/fitparameterlist.h | 136 - include/hkl/geometry_kappa.h | 47 - include/hkl/hklobject.h | 61 - include/hkl/kappa4C_vertical_diffractometer.h | 123 - include/hkl/kappa4C_vertical_geometry.h | 297 -- include/hkl/kappa4C_vertical_mode.h | 34 - include/hkl/kappa4C_vertical_pseudoaxeengine.h | 150 - include/hkl/kappa6C_diffractometer.h | 28 - include/hkl/kappa6C_geometry.h | 192 -- include/hkl/kappa6C_mode.h | 29 - include/hkl/kappa6C_pseudoaxeengine.h | 30 - include/hkl/mode.h | 207 -- include/hkl/modelist.h | 147 - include/hkl/mymap.h | 243 -- include/hkl/object.h | 155 - include/hkl/observer.h | 69 - include/hkl/parameterlist.h | 104 - include/hkl/portability.h | 19 - include/hkl/pseudoaxe.h | 150 - include/hkl/pseudoaxeengine.h | 353 --- include/hkl/pseudoaxeenginelist.h | 57 - include/hkl/pseudoaxelist.h | 79 - include/hkl/quaternion.h | 79 - include/hkl/range.h | 181 -- include/hkl/reflection.h | 15 - include/hkl/reflection_monocrystal.h | 68 - include/hkl/reflectionfactory.h | 47 - include/hkl/reflectionlist.h | 153 - include/hkl/sample.h | 122 - include/hkl/sample_monocrystal.h | 127 - include/hkl/samplefactory.h | 48 - include/hkl/samplelist.h | 176 -- include/hkl/strbuf.h | 19 - include/hkl/twoC_vertical_diffractometer.h | 97 - include/hkl/twoC_vertical_geometry.h | 127 - include/hkl/twoC_vertical_mode.h | 74 - include/hkl/twoC_vertical_pseudoaxeengine.h | 128 - include/hkl/value.h | 127 - src/HKLException.cpp | 132 - src/affinement.cpp | 57 - src/affinement_simplex.cpp | 321 -- src/affinementlist.cpp | 249 -- src/convenience.cpp | 50 - src/diffractometerfactory.cpp | 54 - src/eulerian4C_vertical_diffractometer.cpp | 46 - src/eulerian4C_vertical_geometry.cpp | 350 --- src/eulerian4C_vertical_mode.cpp | 290 -- src/eulerian4C_vertical_pseudoaxeengine.cpp | 271 -- src/eulerian6C_diffractometer.cpp | 35 - src/eulerian6C_geometry.cpp | 392 --- src/eulerian6C_pseudoaxeengine.cpp | 399 --- src/fitparameter.cpp | 120 - src/fitparameterlist.cpp | 138 - src/geometry.cpp | 347 --- src/geometry_kappa.cpp | 35 - src/gui/SConscript | 30 - src/gui/axespinbutton.cpp | 155 - src/gui/axespinbutton.h | 53 - src/gui/diffractometer2.glade | 2798 ----------------- src/gui/hklwindow.cpp | 2108 ------------- src/gui/hklwindow.h | 209 -- src/gui/main.cpp | 76 - src/gui/modelcolumns.h | 112 - src/gui/pseudoaxespinbutton.cpp | 156 - src/gui/pseudoaxespinbutton.h | 47 - src/hklobject.cpp | 47 - src/kappa4C_vertical_diffractometer.cpp | 47 - src/kappa4C_vertical_geometry.cpp | 357 --- src/kappa4C_vertical_pseudoaxeengine.cpp | 129 - src/kappa6C_diffractometer.cpp | 41 - src/kappa6C_geometry.cpp | 388 --- src/mode.cpp | 23 - src/modelist.cpp | 251 -- src/object.cpp | 193 -- src/observer.cpp | 91 - src/parameterlist.cpp | 147 - src/pseudoaxe.cpp | 215 -- src/pseudoaxeengine.cpp | 37 - src/pseudoaxeenginelist.cpp | 83 - src/pseudoaxelist.cpp | 107 - src/range.cpp | 197 -- src/reflection.c | 123 - src/reflection.cpp | 123 - src/reflection_monocrystal.cpp | 61 - src/reflectionfactory.cpp | 45 - src/reflectionlist.cpp | 278 -- src/sample.cpp | 169 - src/sample_monocrystal.cpp | 316 -- src/samplefactory.cpp | 48 - src/samplelist.cpp | 307 -- src/source.cpp | 157 - src/strbuf.cpp | 27 - src/twoC_vertical_diffractometer.cpp | 43 - src/twoC_vertical_geometry.cpp | 280 -- src/twoC_vertical_mode.cpp | 74 - src/twoC_vertical_pseudoaxeengine.cpp | 286 -- src/value.cpp | 142 - test/affinement_simplex_test.cpp | 165 - test/affinement_simplex_test.h | 36 - test/diffractometer_eulerian4C_test.cpp | 456 --- test/diffractometer_eulerian4C_test.h | 60 - test/diffractometer_kappa4C_test.cpp | 46 - test/diffractometer_kappa4C_test.h | 21 - test/diffractometer_kappa6C_test.cpp | 85 - test/diffractometer_kappa6C_test.h | 30 - test/diffractometer_test.cpp | 364 --- test/diffractometer_test.h | 55 - test/fitparameter_test.cpp | 42 - test/fitparameter_test.h | 26 - test/geometry_eulerian4C_test.cpp | 201 -- test/geometry_eulerian4C_test.h | 40 - test/geometry_eulerian6C_test.cpp | 300 -- test/geometry_eulerian6C_test.h | 44 - test/geometry_kappa4C_test.cpp | 280 -- test/geometry_kappa4C_test.h | 43 - test/geometry_kappa6C_test.cpp | 222 -- test/geometry_kappa6C_test.h | 39 - test/geometry_test.cpp | 63 - test/geometry_test.h | 29 - test/hklobject_test.cpp | 27 - test/hklobject_test.h | 24 - test/holderlist_test.cpp | 68 - test/holderlist_test.h | 34 - test/mode_eulerian4C_test.cpp | 260 -- test/mode_eulerian4C_test.h | 37 - test/mode_kappa4C_test.cpp | 246 -- test/mode_kappa4C_test.h | 37 - test/mode_kappa6C_test.cpp | 266 -- test/mode_kappa6C_test.h | 37 - test/object_test.cpp | 55 - test/object_test.h | 32 - test/pseudoaxe_eulerian4C_test.cpp | 301 -- test/pseudoaxe_eulerian4C_test.h | 38 - test/pseudoaxe_eulerian6C_test.cpp | 331 -- test/pseudoaxe_eulerian6C_test.h | 33 - test/pseudoaxe_kappa4C_test.cpp | 612 ---- test/pseudoaxe_kappa4C_test.h | 41 - test/pseudoaxe_kappa6C_test.cpp | 508 --- test/pseudoaxe_kappa6C_test.h | 41 - test/range_test.cpp | 67 - test/range_test.h | 30 - test/reflection_test.cpp | 117 - test/reflection_test.h | 44 - test/reflectionlist_test.cpp | 104 - test/reflectionlist_test.h | 39 - test/sample_test.cpp | 152 - test/sample_test.h | 38 - test/samplelist_test.cpp | 32 - test/samplelist_test.h | 27 - test/twoC_vertical_diffractometer_test.cpp | 368 --- test/twoC_vertical_diffractometer_test.h | 58 - test/twoC_vertical_geometry_test.cpp | 246 -- test/twoC_vertical_geometry_test.h | 44 - test/twoC_vertical_mode_test.cpp | 125 - test/twoC_vertical_mode_test.h | 34 - test/twoC_vertical_pseudoaxeengine_test.cpp | 289 -- test/twoC_vertical_pseudoaxeengine_test.h | 32 - test/value_test.cpp | 105 - test/value_test.h | 39 - 190 files changed, 35429 deletions(-) commit f22e9f09857904521d6f4a17a121979090692110 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 16:53:10 2008 +0200 * split the bissector mode in two parts hkl + mode src/hkl-pseudoaxis-auto.c | 161 +++++++++++++++++++++++----------------------- 1 file changed, 81 insertions(+), 80 deletions(-) commit 3b2b4b28ad6d143d9678b2af2c75f3c01ad0a4d9 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 15:18:29 2008 +0200 * now the pseudoAxes works for on the current and consign part. src/hkl-pseudoaxis-auto.c | 60 +++++++++++++++++++++++++++++++++++++--------- test/hkl-test-pseudoaxis.c | 22 +++++++++++++++-- 2 files changed, 69 insertions(+), 13 deletions(-) commit 784ec30dcdec2c3ee17105c274d81f0ac2403cd4 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 13:46:48 2008 +0200 * next refactoring part fuzion of set and set_pseudoAxes in the HklPseudoAxesEngine class. include/hkl/hkl-pseudoaxis.h | 4 +--- src/hkl-pseudoaxis.c | 44 +++++++++++++++++++++----------------------- test/hkl-test-pseudoaxis.c | 7 +++---- 3 files changed, 25 insertions(+), 30 deletions(-) commit e5b404294127c44068eaf0e48613d361c809839b Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 10:42:09 2008 +0200 * start refactoring the pseudoAxes code. include/hkl/hkl-pseudoaxis.h | 49 ++++---- src/SConscript | 1 + src/hkl-pseudoaxis-auto.c | 223 +++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 272 +++++++++---------------------------------- test/hkl-test-pseudoaxis.c | 53 +++++---- 5 files changed, 336 insertions(+), 262 deletions(-) commit 220d4461fc1e8bc7f3d24d915deee320ee0c4f03 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 10:57:48 2008 +0200 * add a todo for optimizing the quaternion to matrix. src/hkl-quaternion.c | 1 + 1 file changed, 1 insertion(+) commit d201fa3a264b57b85036c3e98c0ca317363848c4 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 10:52:34 2008 +0200 * trivial refactoring in the quaternion class src/hkl-quaternion.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 632aef6586d54304a06b575ad464f3551a3320a1 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 09:37:27 2008 +0200 * more readable quaternin to matrix method src/hkl-quaternion.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) commit 86812ee058cb5dde446209be2c73b2b8f6ffec05 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 09:32:28 2008 +0200 * modification of the quaternion times quaternion method to be readable. src/hkl-quaternion.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) commit 5bc9efbd69efaa0357f593fdad2d8435b25d464e Author: Frédéric-Emmanuel PICCA Date: Mon Jun 2 18:21:24 2008 +0200 * small optimization in the quaternion class src/hkl-quaternion.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 62ade124087dc34efcfa5c1cf3b8661fe92cef08 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 2 17:54:05 2008 +0200 * first working version of the pseudoAxeEngine set method. src/hkl-pseudoaxis.c | 52 ++++++++++++++++++++++++++++------------------ test/hkl-test-pseudoaxis.c | 2 +- 2 files changed, 33 insertions(+), 21 deletions(-) commit 7b690cbb90a247db980b3935d749fdc7986ef524 Author: Frédéric-Emmanuel PICCA Date: Thu May 8 11:21:25 2008 +0200 * add the path options for the gsl libraries gsl_inc_path and gsl_lib_path SConstruct | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) commit 56094b1c338b85aae82fb98e05e854e23e7c4dbe Author: Frédéric-Emmanuel PICCA Date: Thu May 8 11:09:08 2008 +0200 * remove unneeded part of the Sconsfiles and build a shared library SConstruct | 15 ++++----------- src/SConscript | 57 +++------------------------------------------------------ test/SConscript | 6 ++---- 3 files changed, 9 insertions(+), 69 deletions(-) commit ee71ea3938c3c6d7508b379bd7043e1ba0dff9a0 Author: Frédéric-Emmanuel PICCA Date: Mon May 5 17:22:44 2008 +0200 * first "working" version of the new pseudoAxes. it seems that the hybrid version of the gsl multiroots works better than the hybrids one. The algo is not robust enought for now. If I take 1000 instead of 100 random test they fail. Need to find a better algo. include/hkl/hkl-pseudoaxis.h | 5 ++- src/hkl-pseudoaxis.c | 103 +++++++++++++++++++++--------------------- test/hkl-test-pseudoaxis.c | 105 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 53 deletions(-) commit aaf2e6309abf9ca76123b8fe34b5b5f13ab1982a Author: Frédéric-Emmanuel PICCA Date: Thu May 1 12:51:48 2008 +0200 * add the doc sconscript Documentation/SConscript | 10 +++++++++- SConstruct | 6 ++++-- include/{ => hkl}/SConscript | 3 +-- 3 files changed, 14 insertions(+), 5 deletions(-) commit 522188b4dbd4a20c2c8da398f3ac55bdef195e1c Author: Frédéric-Emmanuel PICCA Date: Thu May 1 12:22:57 2008 +0200 * now the package part seems to work. need more work to install files at the right place SConstruct | 22 ++++-- include/SConscript | 27 +++++++ src/SConscript | 2 +- test/SConscript | 40 +---------- tool/doxygen.py | 203 ----------------------------------------------------- 5 files changed, 48 insertions(+), 246 deletions(-) commit 4238087b43024b756a44357108bd0ceb83254cbb Author: Frédéric-Emmanuel PICCA Date: Tue Apr 29 17:41:53 2008 +0200 * now the update part of the pseudoAxis seems to work. I added the test for the hkl pseudoAxes. README | 3 +- include/hkl/hkl-pseudoaxis-factory.h | 8 +- include/hkl/hkl-pseudoaxis.h | 38 ++++-- src/hkl-pseudoaxis.c | 217 ++++++++++++++++++++++++++++++++++- test/hkl-test-pseudoaxis.c | 96 ++++++++++++++++ 5 files changed, 344 insertions(+), 18 deletions(-) commit 745edd33148a0d9d3758e5b146a4f9d6c169eacb Author: Frédéric-Emmanuel PICCA Date: Tue Apr 29 16:26:17 2008 +0200 * add a HKL_ASSERT_POINTER_EQUAL and print the result of the failed test. test/hkl-test-axis.c | 68 +++++++++++++++++++++++----------------------- test/hkl-test-geometry.c | 10 +++---- test/hkl-test-holder.c | 4 +-- test/hkl-test-lattice.c | 2 +- test/hkl-test-list.c | 12 ++++---- test/hkl-test-matrix.c | 36 ++++++++++++------------ test/hkl-test-parameter.c | 22 +++++++-------- test/hkl-test-quaternion.c | 18 ++++++------ test/hkl-test-sample.c | 2 +- test/hkl-test-source.c | 28 +++++++++---------- test/hkl-test-vector.c | 18 ++++++------ test/hkl-test.h | 17 ++++++++++-- 12 files changed, 124 insertions(+), 113 deletions(-) commit 0d30f6d95868a70a09d3f2134743b877b680a473 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 23 16:17:00 2008 +0100 * first version of the HklPseudoAxisEngine include/hkl/hkl-pseudoaxis-factory.h | 42 ++++++++++++++++ include/hkl/hkl-pseudoaxis.h | 56 ++++++++++++++++++++++ src/SConscript | 1 + src/hkl-pseudoaxis.c | 93 ++++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-pseudoaxis.c | 27 +++++++++++ test/main.c | 1 + 7 files changed, 221 insertions(+) commit a27341b1f4aea7adbb3a36a5dcb6ab1913170fa7 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 23 15:33:26 2008 +0100 * remove un-needed files include/hkl/hkl-diffractometer.h | 33 ------------------------- include/hkl/hkl-diffractometer_2C.h | 30 ----------------------- src/SConscript | 1 - src/hkl-diffractometer.c | 49 ------------------------------------- 4 files changed, 113 deletions(-) commit 33283de9e18eb2caece98323f386637e474072cf Author: Frédéric-Emmanuel PICCA Date: Fri Mar 21 20:59:39 2008 +0100 * better stop condition in the simplex affinement for now the default simplex method works when the setarting point is not to far from the solution. src/hkl-sample.c | 18 +----------------- test/hkl-test-sample.c | 6 +++--- 2 files changed, 4 insertions(+), 20 deletions(-) commit 8f4855b291865203e346f57635ee96b08a2203ee Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 21:50:45 2008 +0100 * change the meaning of HKL_FAIL add the affine method now the HKL_FAIL = -1 and HKL_SUCCESS = 0, the affinement do not handle the case of a wrong lattice computation during the simplex affinement. include/hkl/hkl-macros.h | 4 +-- src/hkl-lattice.c | 13 +++++--- src/hkl-parameter.c | 8 ++--- src/hkl-sample.c | 77 +++++++++++++++++++++++++++++++++++------------- test/hkl-test-sample.c | 33 +++++++++++++++++++-- 5 files changed, 102 insertions(+), 33 deletions(-) commit 98dfdc59ae9b72784f9c6a759914d0c791cf4a44 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 14:23:06 2008 +0100 * add the first affinement method using GSL (simplex method) include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 90 ++++++++++++++++++++++++------------------------ test/SConscript | 2 +- test/hkl-test-sample.c | 56 ++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 47 deletions(-) commit 782780d56c8991efd6699732e28bd91bbbe14288 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 12:47:14 2008 +0100 * remove some warnings include/hkl/hkl-diffractometer_2C.h | 12 ++++++------ src/hkl-diffractometer.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) commit bd3e167f77c7380a098c35ba34ea8d98a823f067 Author: Frédéric-Emmanuel PICCA Date: Sat Mar 15 13:22:44 2008 +0100 * hkl_smatrix -> hkl_matrix include/hkl/hkl-matrix.h | 30 +++++++++++++++--------------- src/hkl-matrix.c | 34 +++++++++++++++++----------------- src/hkl-sample.c | 32 ++++++++++++++++---------------- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 38 +++++++++++++++++++------------------- test/hkl-test-quaternion.c | 2 +- test/hkl-test-sample.c | 4 ++-- 7 files changed, 71 insertions(+), 71 deletions(-) commit b502da0fddd6e72e41ac129d256d4bce260d9eba Author: Frédéric-Emmanuel PICCA Date: Fri Mar 14 17:04:32 2008 +0100 * refactoring of the HklMatrix struct clearer to read. src/hkl-matrix.c | 161 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 92 insertions(+), 69 deletions(-) commit 4f21544482b1b2d1cdd56a4351e8fbf982244c0e Author: Frédéric-Emmanuel PICCA Date: Fri Mar 14 15:10:21 2008 +0100 * now the busing et levy computation is working include/hkl/hkl-sample.h | 10 ++- src/hkl-sample.c | 157 ++++++++++++++++++++++++++++++++--------------- test/hkl-test-sample.c | 70 ++++++++++++++++++++- 3 files changed, 183 insertions(+), 54 deletions(-) commit 244374b573bbef69fe5b43d48f9e7bf8d161f119 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 13 16:59:11 2008 +0100 * remove a bad bug in HklHolder src/hkl-holder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9f210900302ffacd34c5eac9d89a35d06058ce72 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 13 12:04:57 2008 +0100 * add the new/free/copy method to the HklMatric struct. add also the test functions, and some refactoring. include/hkl/hkl-matrix.h | 24 +++++++++++++++++---- src/hkl-matrix.c | 47 ++++++++++++++++++++++++++++++++++++++++ test/hkl-test-matrix.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 4 deletions(-) commit ea8a14de604703fa07691582e8127b1ae7153dad Author: Frédéric-Emmanuel PICCA Date: Wed Mar 12 14:46:02 2008 +0100 * add the first HklSample structure. include/hkl/hkl-sample.h | 45 ++++++----- src/hkl-sample.c | 200 ++++++++++++++++++++++++++++++++++++++++++----- test/SConscript | 1 + test/hkl-test-sample.c | 106 +++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 316 insertions(+), 37 deletions(-) commit 61992ee06ad1b4491a2ec61f8f9ab32d8d44dc4d Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 15:47:34 2008 +0100 * add the hkl_list_get_by_idx method include/hkl/hkl-list.h | 2 ++ src/hkl-list.c | 7 +++++++ test/hkl-test-list.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) commit 8c29b7d9c05451979a6e84079dbe19c3ed6660a3 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 15:32:24 2008 +0100 * modification of the managed list to allow easy new_copy. include/hkl/hkl-list.h | 5 ++++- src/hkl-list.c | 24 ++++++++++++++++++++++- test/hkl-test-list.c | 53 +++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 75 insertions(+), 7 deletions(-) commit 148843ad1bea637a7f0193809a973e1c4366874a Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 13:42:05 2008 +0100 * the new_copy method to the HklDetector structure include/hkl/hkl-detector.h | 1 + src/hkl-detector.c | 10 ++++++++++ 2 files changed, 11 insertions(+) commit b5b48196313238f6eae61423e226255cf4686ab4 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 16:21:49 2008 +0100 * add all geometry in a factory header. use the hkl_geometry_factory_new(type, ...) to create the proper geometry. you can use the type: HKL_GEOMETRY_TWOC_VERTICAL, HKL_GEOMETRY_EULERIAN4C_VERTICAL, HKL_GEOMETRY_KAPPA4C_VERTICAL, HKL_GEOMETRY_EULERIAN6C, HKL_GEOMETRY_KAPPA6C include/hkl/hkl-geometry-factory.h | 124 +++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) commit f61000fcd3c9ea4e0c75c353d15ba7840acd5939 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 14:49:59 2008 +0100 * add the HklDetector class with test methods only 0D detector now. include/hkl/hkl-detector.h | 24 +++++++++++++++ src/SConscript | 2 +- src/hkl-detector.c | 37 ++++++++++++++++++++++ test/SConscript | 2 +- test/hkl-test-detector.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 2 +- 6 files changed, 140 insertions(+), 3 deletions(-) commit 3485666cd6ccd0481b0ccb2f14dfbda3f3da9366 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 14:10:12 2008 +0100 * add get_axis and update to the HklGeometry struct with test methods include/hkl/hkl-geometry.h | 6 ++++- src/hkl-geometry.c | 20 ++++++++++++++++ test/hkl-test-geometry.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) commit d40b4429052124fa61b9153d1d676e998abae4a6 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 13:48:05 2008 +0100 * complete the holder test suite. hkl_vector_cmp return 0 is both vector are equals 1 otherwise include/hkl/hkl-holder.h | 7 +++ src/hkl-holder.c | 50 +++++++++++++++++-- src/hkl-vector.c | 8 +-- test/hkl-test-holder.c | 118 +++++++++++++++++++++++++++++++++++++-------- test/hkl-test-matrix.c | 2 +- test/hkl-test-quaternion.c | 4 +- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 12 ++--- 8 files changed, 166 insertions(+), 37 deletions(-) commit 7147a7f14b2d8269a10d358ae631032d9a5d0016 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:21:06 2008 +0100 * indentation src/usage.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) commit 307a972dd1fecb5503a5df14d4b0bf6c917c4dc4 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:20:28 2008 +0100 lest hkl-macros.h be compatible with c++ include/hkl/hkl-macros.h | 4 ++++ 1 file changed, 4 insertions(+) commit cd34319de875c55a7d068fe65a319717b02887be Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:15:23 2008 +0100 * add the hkl-axis test methods now an axis config contain a dirty flag that set by the set_config method. this flag is used to recompute or not the holders quaternions. include/hkl/hkl-axis.h | 10 ++++ src/hkl-axis.c | 28 +++++++++- test/SConscript | 1 + test/hkl-test-axis.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 185 insertions(+), 1 deletion(-) commit f2e19227d85247d9aad32f3a96141458193f705c Author: Frédéric-Emmanuel PICCA Date: Wed Feb 20 17:27:18 2008 +0100 * add the new new_copy and set method to the Hklquaternion include/hkl/hkl-quaternion.h | 9 +++++++++ src/hkl-quaternion.c | 42 ++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-quaternion.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) commit 2a3bd9739f85661ff4e19b3bc835f734abd6c951 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 11 17:32:00 2008 +0100 * add a get_holder method to the geometry include/hkl/hkl-geometry.h | 1 + src/SConscript | 3 ++- src/hkl-geometry.c | 9 +++++++++ test/SConscript | 1 + test/hkl-test-geometry.c | 3 +++ test/main.c | 1 + 6 files changed, 17 insertions(+), 1 deletion(-) commit 755158dd5431598bc71d1ccc061ede35bccef7e8 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 15:35:14 2008 +0100 * remove the HklHolders an put directly in the HklGeometry include/hkl/hkl-geometry.h | 15 +++-- include/hkl/hkl-holders.h | 24 -------- src/SConscript | 1 - src/hkl-geometry.c | 73 ++++++++++++++++++++---- src/hkl-holders.c | 63 -------------------- test/SConscript | 2 +- test/{hkl-test-holders.c => hkl-test-geometry.c} | 20 +++---- test/main.c | 2 +- 8 files changed, 84 insertions(+), 116 deletions(-) commit 62efc16c24039ca5b38df67624104275f34d686c Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 15:08:35 2008 +0100 * add the copy constructor for HklHolder and HklHolders include/hkl/hkl-holder.h | 1 + include/hkl/hkl-holders.h | 5 +++-- src/hkl-holder.c | 50 ++++++++++++++++++++++++++++++++++++---------- src/hkl-holders.c | 33 ++++++++++++++++++++++++++---- src/usage.c | 22 +++++++++++++++++++- test/hkl-test-holder.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 144 insertions(+), 18 deletions(-) commit 72e02496a62b0404dd4f5a24f3e5f4e8c8105a7c Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 13:54:57 2008 +0100 * add get_idx in the HklList + test include/hkl/hkl-list.h | 2 ++ src/hkl-list.c | 11 +++++++++++ test/hkl-test-list.c | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+) commit b90077da68d58d8d208a603d00e8d2a89d915181 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 13:45:58 2008 +0100 * add a copy contructor to HklAxis include/hkl/hkl-axis.h | 1 + src/hkl-axis.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) commit ab6a17715499959f1ce43e5ae55c72eb4ccc6cc2 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 09:07:09 2008 +0100 * add the gitignore file .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) commit 1c208475db11937a574c49639e655cb3f1c9f316 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 17:28:17 2008 +0100 * now the managed list take a deallocator pointer function include/hkl/hkl-list.h | 4 ++-- src/hkl-list.c | 14 +++++++------- test/hkl-test-list.c | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) commit 7a8e32b4a39ebab38d167c0c313f64b6ca596e69 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 14:33:43 2008 +0100 * remove the HklAxes struct include/hkl/hkl-axes.h | 25 --------- include/hkl/hkl-holder.h | 11 ++-- include/hkl/hkl-holders.h | 3 +- src/SConscript | 5 +- src/hkl-axes.c | 55 ------------------ src/hkl-holder.c | 54 +++++++++++++++--- src/hkl-holders.c | 8 +-- test/SConscript | 1 - test/hkl-test-axis.c | 140 ---------------------------------------------- test/hkl-test-holder.c | 107 +++++++++++++++++++++++++++++++++-- test/main.c | 1 - 11 files changed, 162 insertions(+), 248 deletions(-) commit 01c0e705098639320a1da1cf44bb4266cf689758 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 13:58:07 2008 +0100 * use HklList in the HklHolder and HklHolders struct. include/hkl/hkl-holder.h | 8 +------- include/hkl/hkl-holders.h | 5 ++--- src/hkl-holder.c | 39 ++++++++------------------------------- src/hkl-holders.c | 35 ++++++++++------------------------- test/hkl-test-holders.c | 6 +++--- 5 files changed, 24 insertions(+), 69 deletions(-) commit 4e4d869d9498549380719006f5e58d1a7011eaac Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 13:35:04 2008 +0100 * refactoring of axes using the HklList The aim of this refactoring is to supress HklAxes. include/hkl/hkl-axes.h | 12 ++++------- include/hkl/hkl-axis.h | 4 +++- include/hkl/hkl-holder.h | 5 +++-- include/hkl/hkl-holders.h | 6 +----- src/hkl-axes.c | 51 +++++++++++++---------------------------------- src/hkl-axis.c | 16 ++++++++++++++- src/hkl-holders.c | 25 ++++++++++------------- test/hkl-test-axis.c | 31 +++++++++++++++------------- test/hkl-test-holder.c | 3 +++ 9 files changed, 70 insertions(+), 83 deletions(-) commit ed89e10b8217b898b352e198afe3cd54cfb32f7e Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 17:18:25 2008 +0100 * [Hklsource] change the set signature. Now return 0 if success -1 otherwise. include/hkl/hkl-source.h | 9 +++++---- src/hkl-source.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) commit 19ac276128bae56edfc41a63af2dbb2fb442948f Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 17:08:40 2008 +0100 * HklSource add new / new_copy now the direction member is a pointer. include/hkl/hkl-source.h | 10 +++--- src/hkl-source.c | 74 ++++++++++++++++++++++++++----------------- test/hkl-test-source.c | 82 ++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 117 insertions(+), 49 deletions(-) commit d342aa0eb04e735f07fb05a6ef059fe1f1360dbe Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 14:28:40 2008 +0100 * update the HklLattice struct now it use HklParameters* instead of HklParameter. include/hkl/hkl-lattice.h | 28 +++-- src/hkl-lattice.c | 310 +++++++++++++++++++++++++++------------------- test/SConscript | 2 +- test/hkl-test-lattice.c | 199 +++++++++++++++++------------ test/main.c | 2 +- 5 files changed, 325 insertions(+), 216 deletions(-) commit 38eb424e1536c766c82c7e3b289234820075ac4c Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 11:37:37 2008 +0100 * svector -> vector normalization include/hkl/hkl-matrix.h | 4 +- include/hkl/hkl-quaternion.h | 4 +- include/hkl/hkl-vector.h | 49 ++++++++++--------- src/SConscript | 2 +- src/hkl-axes.c | 2 +- src/hkl-matrix.c | 14 +++--- src/hkl-quaternion.c | 8 +-- src/hkl-source.c | 10 ++-- src/hkl-vector.c | 114 +++++++++++++++++++++++++++---------------- test/SConscript | 2 +- test/hkl-test-matrix.c | 14 +++--- test/hkl-test-quaternion.c | 12 ++--- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 104 ++++++++++++++++++++++++++++----------- test/main.c | 4 +- 15 files changed, 215 insertions(+), 130 deletions(-) commit 768f2403b92c34f39544a8d975f3a4a78eb6180d Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 11:12:19 2008 +0100 * add a new_copy method to the HklParameter struct include/hkl/hkl-parameter.h | 13 +++++----- src/hkl-parameter.c | 58 ++++++++++++++++++++++++++++----------------- test/hkl-test-parameter.c | 48 +++++++++++++++++++++++++++---------- 3 files changed, 79 insertions(+), 40 deletions(-) commit 0af0377c2714a6162cd9ef12d55ccac5e9886bc4 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 10:35:02 2008 +0100 * HklList can manage or not the memory, add a foreach method For now the HklList can only managed memory that must be release with a simple free. include/hkl/hkl-list.h | 9 +++++++++ src/hkl-list.c | 31 +++++++++++++++++++++++++++---- test/hkl-test-list.c | 37 +++++++++++++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 6 deletions(-) commit 792c1634693c14e2214bc0c284dcda6b6637d149 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 17:40:47 2008 +0100 * add the hklList struct include/hkl/hkl-list.h | 28 +++++++++++++++++ src/SConscript | 2 ++ src/hkl-list.c | 63 +++++++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-list.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 6 files changed, 176 insertions(+) commit af1efa92f594a8e8e9c32dc7905f34542b249dbf Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 13:23:10 2008 +0100 * update the README file to explain the compilation procedure README | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) commit 0eead3f93fd48ed362aa582186e45b5f890a7dc7 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 11:56:59 2008 +0100 * switch to 2008 year in the copyright include/hkl/HKLException.h | 2 +- include/hkl/HolderList.h | 2 +- include/hkl/affinement.h | 2 +- include/hkl/affinement_simplex.h | 2 +- include/hkl/affinementlist.h | 2 +- include/hkl/axe.h | 2 +- include/hkl/axe_rotation.h | 2 +- include/hkl/axefactory.h | 2 +- include/hkl/constant.h | 2 +- include/hkl/convenience.h | 2 +- include/hkl/derived_mode.h | 2 +- include/hkl/derived_pseudoaxeengine.h | 2 +- include/hkl/diffractometer.h | 2 +- include/hkl/diffractometerfactory.h | 2 +- include/hkl/eulerian4C_vertical_diffractometer.h | 2 +- include/hkl/eulerian4C_vertical_geometry.h | 2 +- include/hkl/eulerian4C_vertical_mode.h | 2 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 2 +- include/hkl/eulerian6C_diffractometer.h | 2 +- include/hkl/eulerian6C_geometry.h | 2 +- include/hkl/eulerian6C_mode.h | 2 +- include/hkl/eulerian6C_pseudoaxeengine.h | 2 +- include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 2 +- include/hkl/geometry.h | 2 +- include/hkl/geometry_kappa.h | 2 +- include/hkl/hklobject.h | 2 +- include/hkl/holder.h | 2 +- include/hkl/interval.h | 2 +- include/hkl/kappa4C_vertical_diffractometer.h | 2 +- include/hkl/kappa4C_vertical_geometry.h | 2 +- include/hkl/kappa4C_vertical_mode.h | 2 +- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 2 +- include/hkl/kappa6C_diffractometer.h | 2 +- include/hkl/kappa6C_geometry.h | 2 +- include/hkl/kappa6C_mode.h | 2 +- include/hkl/kappa6C_pseudoaxeengine.h | 2 +- include/hkl/lattice.h | 2 +- include/hkl/mode.h | 2 +- include/hkl/modelist.h | 2 +- include/hkl/mymap.h | 2 +- include/hkl/object.h | 2 +- include/hkl/observer.h | 2 +- include/hkl/parameter.h | 2 +- include/hkl/parameterlist.h | 2 +- include/hkl/portability.h | 2 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxeengine.h | 2 +- include/hkl/pseudoaxeenginelist.h | 2 +- include/hkl/pseudoaxelist.h | 2 +- include/hkl/quaternion.h | 2 +- include/hkl/range.h | 2 +- include/hkl/reflection.h | 2 +- include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionfactory.h | 2 +- include/hkl/reflectionlist.h | 2 +- include/hkl/sample.h | 2 +- include/hkl/sample_monocrystal.h | 2 +- include/hkl/samplefactory.h | 2 +- include/hkl/samplelist.h | 2 +- include/hkl/source.h | 2 +- include/hkl/strbuf.h | 2 +- include/hkl/svector.h | 2 +- include/hkl/twoC_vertical_diffractometer.h | 2 +- include/hkl/twoC_vertical_geometry.h | 2 +- include/hkl/twoC_vertical_mode.h | 2 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 2 +- include/hkl/value.h | 2 +- src/HKLException.cpp | 2 +- src/affinement.cpp | 2 +- src/affinement_simplex.cpp | 2 +- src/affinementlist.cpp | 2 +- src/axe.cpp | 2 +- src/axe_rotation.cpp | 2 +- src/axefactory.cpp | 2 +- src/constant.cpp | 2 +- src/convenience.cpp | 2 +- src/diffractometer.cpp | 2 +- src/diffractometerfactory.cpp | 2 +- src/eulerian4C_vertical_diffractometer.cpp | 2 +- src/eulerian4C_vertical_geometry.cpp | 2 +- src/eulerian4C_vertical_mode.cpp | 2 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 2 +- src/eulerian6C_diffractometer.cpp | 2 +- src/eulerian6C_geometry.cpp | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 2 +- src/fitparameter.cpp | 2 +- src/fitparameterlist.cpp | 2 +- src/geometry.cpp | 2 +- src/geometry_kappa.cpp | 2 +- src/hklobject.cpp | 2 +- src/holder.cpp | 2 +- src/interval.cpp | 2 +- src/kappa4C_vertical_diffractometer.cpp | 2 +- src/kappa4C_vertical_geometry.cpp | 2 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 2 +- src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 2 +- src/lattice.cpp | 2 +- src/mode.cpp | 2 +- src/modelist.cpp | 2 +- src/object.cpp | 2 +- src/observer.cpp | 2 +- src/parameter.cpp | 2 +- src/parameterlist.cpp | 2 +- src/pseudoaxe.cpp | 2 +- src/pseudoaxeengine.cpp | 2 +- src/pseudoaxeenginelist.cpp | 2 +- src/pseudoaxelist.cpp | 2 +- src/quaternion.cpp | 2 +- src/range.cpp | 2 +- src/reflection.cpp | 2 +- src/reflection_monocrystal.cpp | 2 +- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 2 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 2 +- src/samplefactory.cpp | 2 +- src/samplelist.cpp | 2 +- src/source.cpp | 2 +- src/strbuf.cpp | 2 +- src/svector.cpp | 2 +- src/twoC_vertical_diffractometer.cpp | 2 +- src/twoC_vertical_geometry.cpp | 2 +- src/twoC_vertical_mode.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 2 +- src/value.cpp | 2 +- test/affinement_simplex_test.cpp | 2 +- test/affinement_simplex_test.h | 2 +- test/axe_rotation_test.cpp | 2 +- test/axe_rotation_test.h | 2 +- test/diffractometer_eulerian4C_test.cpp | 2 +- test/diffractometer_eulerian4C_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 2 +- test/diffractometer_kappa4C_test.h | 2 +- test/diffractometer_kappa6C_test.cpp | 2 +- test/diffractometer_kappa6C_test.h | 2 +- test/diffractometer_test.cpp | 2 +- test/diffractometer_test.h | 2 +- test/diffractometer_twoC_test.cpp | 2 +- test/diffractometer_twoC_test.h | 2 +- test/fitparameter_test.cpp | 2 +- test/fitparameter_test.h | 2 +- test/geometry_eulerian4C_test.cpp | 2 +- test/geometry_eulerian4C_test.h | 2 +- test/geometry_eulerian6C_test.cpp | 2 +- test/geometry_eulerian6C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 2 +- test/geometry_kappa4C_test.h | 2 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_kappa6C_test.h | 2 +- test/geometry_test.cpp | 2 +- test/geometry_test.h | 2 +- test/geometry_twoC_test.cpp | 2 +- test/geometry_twoC_test.h | 2 +- test/hklobject_test.cpp | 2 +- test/hklobject_test.h | 2 +- test/holder_test.cpp | 2 +- test/holder_test.h | 2 +- test/holderlist_test.cpp | 2 +- test/holderlist_test.h | 2 +- test/interval_test.cpp | 2 +- test/interval_test.h | 2 +- test/lattice_test.cpp | 2 +- test/lattice_test.h | 2 +- test/libHKL_test.cpp | 2 +- test/main.cpp | 2 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_eulerian4C_test.h | 2 +- test/mode_kappa4C_test.cpp | 2 +- test/mode_kappa4C_test.h | 2 +- test/mode_kappa6C_test.cpp | 2 +- test/mode_kappa6C_test.h | 2 +- test/mode_twoC_test.cpp | 2 +- test/mode_twoC_test.h | 2 +- test/object_test.cpp | 2 +- test/object_test.h | 2 +- test/parameter_test.cpp | 2 +- test/parameter_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 2 +- test/pseudoaxe_eulerian4C_test.h | 2 +- test/pseudoaxe_eulerian6C_test.cpp | 2 +- test/pseudoaxe_eulerian6C_test.h | 2 +- test/pseudoaxe_kappa4C_test.cpp | 2 +- test/pseudoaxe_kappa4C_test.h | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- test/pseudoaxe_kappa6C_test.h | 2 +- test/pseudoaxe_twoC_test.cpp | 2 +- test/pseudoaxe_twoC_test.h | 2 +- test/quaternion_test.cpp | 2 +- test/quaternion_test.h | 2 +- test/range_test.cpp | 2 +- test/range_test.h | 2 +- test/reflection_test.cpp | 2 +- test/reflection_test.h | 2 +- test/reflectionlist_test.cpp | 2 +- test/reflectionlist_test.h | 2 +- test/sample_test.cpp | 2 +- test/sample_test.h | 2 +- test/samplelist_test.cpp | 2 +- test/samplelist_test.h | 2 +- test/source_test.cpp | 2 +- test/source_test.h | 2 +- test/svecmat_test.cpp | 2 +- test/svecmat_test.h | 2 +- test/value_test.cpp | 2 +- test/value_test.h | 2 +- 207 files changed, 207 insertions(+), 207 deletions(-) commit cb0e45c867e5cb8322a064d1c94c8060c186d6b4 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 11:45:47 2008 +0100 * add GPL 3 or + licence include/hkl/HKLException.h | 21 +++++++++++++++++++++ include/hkl/HolderList.h | 21 +++++++++++++++++++++ include/hkl/affinement.h | 21 +++++++++++++++++++++ include/hkl/affinement_simplex.h | 21 +++++++++++++++++++++ include/hkl/affinementlist.h | 21 +++++++++++++++++++++ include/hkl/axe.h | 21 +++++++++++++++++++++ include/hkl/axe_rotation.h | 21 +++++++++++++++++++++ include/hkl/axefactory.h | 21 +++++++++++++++++++++ include/hkl/constant.h | 21 +++++++++++++++++++++ include/hkl/convenience.h | 21 +++++++++++++++++++++ include/hkl/derived_mode.h | 21 +++++++++++++++++++++ include/hkl/derived_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/diffractometer.h | 21 +++++++++++++++++++++ include/hkl/diffractometerfactory.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_geometry.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_mode.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/fitparameter.h | 21 +++++++++++++++++++++ include/hkl/fitparameterlist.h | 21 +++++++++++++++++++++ include/hkl/geometry.h | 21 +++++++++++++++++++++ include/hkl/geometry_kappa.h | 21 +++++++++++++++++++++ include/hkl/hklobject.h | 21 +++++++++++++++++++++ include/hkl/holder.h | 21 +++++++++++++++++++++ include/hkl/interval.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_geometry.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_mode.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/lattice.h | 21 +++++++++++++++++++++ include/hkl/mode.h | 21 +++++++++++++++++++++ include/hkl/modelist.h | 21 +++++++++++++++++++++ include/hkl/mymap.h | 21 +++++++++++++++++++++ include/hkl/object.h | 21 +++++++++++++++++++++ include/hkl/observer.h | 21 +++++++++++++++++++++ include/hkl/parameter.h | 21 +++++++++++++++++++++ include/hkl/parameterlist.h | 21 +++++++++++++++++++++ include/hkl/portability.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxe.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxeenginelist.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxelist.h | 21 +++++++++++++++++++++ include/hkl/quaternion.h | 21 +++++++++++++++++++++ include/hkl/range.h | 21 +++++++++++++++++++++ include/hkl/reflection.h | 21 +++++++++++++++++++++ include/hkl/reflection_monocrystal.h | 21 +++++++++++++++++++++ include/hkl/reflectionfactory.h | 21 +++++++++++++++++++++ include/hkl/reflectionlist.h | 21 +++++++++++++++++++++ include/hkl/sample.h | 21 +++++++++++++++++++++ include/hkl/sample_monocrystal.h | 21 +++++++++++++++++++++ include/hkl/samplefactory.h | 21 +++++++++++++++++++++ include/hkl/samplelist.h | 21 +++++++++++++++++++++ include/hkl/source.h | 21 +++++++++++++++++++++ include/hkl/strbuf.h | 21 +++++++++++++++++++++ include/hkl/svector.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/value.h | 21 +++++++++++++++++++++ src/HKLException.cpp | 21 +++++++++++++++++++++ src/affinement.cpp | 21 +++++++++++++++++++++ src/affinement_simplex.cpp | 21 +++++++++++++++++++++ src/affinementlist.cpp | 21 +++++++++++++++++++++ src/axe.cpp | 21 +++++++++++++++++++++ src/axe_rotation.cpp | 21 +++++++++++++++++++++ src/axefactory.cpp | 21 +++++++++++++++++++++ src/constant.cpp | 21 +++++++++++++++++++++ src/convenience.cpp | 21 +++++++++++++++++++++ src/diffractometer.cpp | 21 +++++++++++++++++++++ src/diffractometerfactory.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_mode.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/eulerian6C_diffractometer.cpp | 21 +++++++++++++++++++++ src/eulerian6C_geometry.cpp | 21 +++++++++++++++++++++ src/eulerian6C_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/fitparameter.cpp | 21 +++++++++++++++++++++ src/fitparameterlist.cpp | 21 +++++++++++++++++++++ src/geometry.cpp | 21 +++++++++++++++++++++ src/geometry_kappa.cpp | 21 +++++++++++++++++++++ src/hklobject.cpp | 21 +++++++++++++++++++++ src/holder.cpp | 21 +++++++++++++++++++++ src/interval.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/kappa6C_diffractometer.cpp | 21 +++++++++++++++++++++ src/kappa6C_geometry.cpp | 21 +++++++++++++++++++++ src/lattice.cpp | 21 +++++++++++++++++++++ src/mode.cpp | 21 +++++++++++++++++++++ src/modelist.cpp | 21 +++++++++++++++++++++ src/object.cpp | 21 +++++++++++++++++++++ src/observer.cpp | 21 +++++++++++++++++++++ src/parameter.cpp | 21 +++++++++++++++++++++ src/parameterlist.cpp | 21 +++++++++++++++++++++ src/pseudoaxe.cpp | 21 +++++++++++++++++++++ src/pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/pseudoaxeenginelist.cpp | 21 +++++++++++++++++++++ src/pseudoaxelist.cpp | 21 +++++++++++++++++++++ src/quaternion.cpp | 21 +++++++++++++++++++++ src/range.cpp | 21 +++++++++++++++++++++ src/reflection.cpp | 21 +++++++++++++++++++++ src/reflection_monocrystal.cpp | 21 +++++++++++++++++++++ src/reflectionfactory.cpp | 21 +++++++++++++++++++++ src/reflectionlist.cpp | 21 +++++++++++++++++++++ src/sample.cpp | 21 +++++++++++++++++++++ src/sample_monocrystal.cpp | 21 +++++++++++++++++++++ src/samplefactory.cpp | 21 +++++++++++++++++++++ src/samplelist.cpp | 21 +++++++++++++++++++++ src/source.cpp | 21 +++++++++++++++++++++ src/strbuf.cpp | 21 +++++++++++++++++++++ src/svector.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_mode.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/value.cpp | 21 +++++++++++++++++++++ test/affinement_simplex_test.cpp | 21 +++++++++++++++++++++ test/affinement_simplex_test.h | 21 +++++++++++++++++++++ test/axe_rotation_test.cpp | 21 +++++++++++++++++++++ test/axe_rotation_test.h | 21 +++++++++++++++++++++ test/diffractometer_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_eulerian4C_test.h | 21 +++++++++++++++++++++ test/diffractometer_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_kappa4C_test.h | 21 +++++++++++++++++++++ test/diffractometer_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_kappa6C_test.h | 21 +++++++++++++++++++++ test/diffractometer_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_test.h | 21 +++++++++++++++++++++ test/diffractometer_twoC_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_twoC_test.h | 21 +++++++++++++++++++++ test/fitparameter_test.cpp | 21 +++++++++++++++++++++ test/fitparameter_test.h | 21 +++++++++++++++++++++ test/geometry_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/geometry_eulerian4C_test.h | 21 +++++++++++++++++++++ test/geometry_eulerian6C_test.cpp | 21 +++++++++++++++++++++ test/geometry_eulerian6C_test.h | 21 +++++++++++++++++++++ test/geometry_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/geometry_kappa4C_test.h | 21 +++++++++++++++++++++ test/geometry_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/geometry_kappa6C_test.h | 21 +++++++++++++++++++++ test/geometry_test.cpp | 21 +++++++++++++++++++++ test/geometry_test.h | 21 +++++++++++++++++++++ test/geometry_twoC_test.cpp | 21 +++++++++++++++++++++ test/geometry_twoC_test.h | 21 +++++++++++++++++++++ test/hklobject_test.cpp | 21 +++++++++++++++++++++ test/hklobject_test.h | 21 +++++++++++++++++++++ test/holder_test.cpp | 21 +++++++++++++++++++++ test/holder_test.h | 21 +++++++++++++++++++++ test/holderlist_test.cpp | 21 +++++++++++++++++++++ test/holderlist_test.h | 21 +++++++++++++++++++++ test/interval_test.cpp | 21 +++++++++++++++++++++ test/interval_test.h | 21 +++++++++++++++++++++ test/lattice_test.cpp | 21 +++++++++++++++++++++ test/lattice_test.h | 21 +++++++++++++++++++++ test/libHKL_test.cpp | 21 +++++++++++++++++++++ test/main.cpp | 21 +++++++++++++++++++++ test/mode_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/mode_eulerian4C_test.h | 21 +++++++++++++++++++++ test/mode_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/mode_kappa4C_test.h | 21 +++++++++++++++++++++ test/mode_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/mode_kappa6C_test.h | 21 +++++++++++++++++++++ test/mode_twoC_test.cpp | 21 +++++++++++++++++++++ test/mode_twoC_test.h | 21 +++++++++++++++++++++ test/object_test.cpp | 21 +++++++++++++++++++++ test/object_test.h | 21 +++++++++++++++++++++ test/parameter_test.cpp | 21 +++++++++++++++++++++ test/parameter_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_kappa4C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_kappa6C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_twoC_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_twoC_test.h | 21 +++++++++++++++++++++ test/quaternion_test.cpp | 21 +++++++++++++++++++++ test/quaternion_test.h | 21 +++++++++++++++++++++ test/range_test.cpp | 21 +++++++++++++++++++++ test/range_test.h | 21 +++++++++++++++++++++ test/reflection_test.cpp | 21 +++++++++++++++++++++ test/reflection_test.h | 21 +++++++++++++++++++++ test/reflectionlist_test.cpp | 21 +++++++++++++++++++++ test/reflectionlist_test.h | 21 +++++++++++++++++++++ test/sample_test.cpp | 21 +++++++++++++++++++++ test/sample_test.h | 21 +++++++++++++++++++++ test/samplelist_test.cpp | 21 +++++++++++++++++++++ test/samplelist_test.h | 21 +++++++++++++++++++++ test/source_test.cpp | 21 +++++++++++++++++++++ test/source_test.h | 21 +++++++++++++++++++++ test/svecmat_test.cpp | 21 +++++++++++++++++++++ test/svecmat_test.h | 21 +++++++++++++++++++++ test/value_test.cpp | 21 +++++++++++++++++++++ test/value_test.h | 21 +++++++++++++++++++++ 207 files changed, 4347 insertions(+) commit 0c063b778173c61c57aadc35769f5c191d24097a Author: Frédéric-Emmanuel PICCA Date: Tue Jan 8 16:47:41 2008 +0100 * add the new/free method to the HklParameter struct include/hkl/hkl-parameter.h | 6 ++++++ src/hkl-parameter.c | 24 ++++++++++++++++++++++++ test/hkl-test-parameter.c | 17 +++++++++++++++++ 3 files changed, 47 insertions(+) commit 582eb906fd9db4ec1bd4b61d5716f1440ddb84d1 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 25 18:24:54 2007 +0100 * add new and free method to the HKLSource struct and test methods refactor a part of geometry and diffractometer to use new and free method of most structures. include/hkl/hkl-diffractometer.h | 8 +++++--- include/hkl/hkl-diffractometer_2C.h | 30 +++++++++++++++--------------- include/hkl/hkl-geometry.h | 10 ++++------ include/hkl/hkl-source.h | 4 ++++ src/hkl-diffractometer.c | 16 +++++++++++++--- src/hkl-geometry.c | 18 ++++++++++++++---- src/hkl-source.c | 16 ++++++++++++++++ test/hkl-test-source.c | 12 ++++++++++++ 8 files changed, 83 insertions(+), 31 deletions(-) commit 36650f8c47349bda49e4f6426c1e4e861e7c408c Author: Frédéric-Emmanuel PICCA Date: Tue Dec 25 17:34:40 2007 +0100 * remove unecessary files and small typo include/hkl/hkl-holder.h | 2 -- test/hkl-test-holder.c | 1 - test/holder_test.cpp | 78 ------------------------------------------------ test/holder_test.h | 33 -------------------- 4 files changed, 114 deletions(-) commit 73ac85afb08b655480fa8c02dfce3da2b0fad56b Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 11:27:24 2007 +0100 * add the HklHolders tests. include/hkl/hkl-holders.h | 2 -- src/hkl-holders.c | 13 +++++++++---- test/SConscript | 3 +-- test/hkl-test-holders.c | 39 +++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 50 insertions(+), 8 deletions(-) commit b0b46ec7e034b6422abacb843e5ad85934949979 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 09:21:40 2007 +0100 * minor typo changes src/hkl-holders.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 7be4b4fe77a519eb580b8074347ea329911096e8 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 00:22:20 2007 +0100 * add the HklHolder tests src/hkl-holder.c | 16 +++++-------- test/SConscript | 1 + test/hkl-test-holder.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 4 files changed, 69 insertions(+), 10 deletions(-) commit 289ae5d418cb4f060ac300eeb740982831407850 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 00:20:24 2007 +0100 *die if you try to add two axis with the same name but a different axis_v. src/hkl-axes.c | 7 +++++-- test/hkl-test-axis.c | 5 ----- 2 files changed, 5 insertions(+), 7 deletions(-) commit c0f0f1ac56ec44a5ec4e1de7bd967a70d339cab5 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 23:57:47 2007 +0100 * remove a bug in the Hklholder class src/hkl-holder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8e4184f78b44623f4e39b73c963abe9bef4132e2 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 23:56:29 2007 +0100 * indentation include/hkl/hkl-macros.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c7845549930f423dfde84e9b9151f987c8be8d7a Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 21:08:29 2007 +0100 * remove a bug in the axes list and put a test for it src/hkl-axes.c | 2 +- test/hkl-test-axis.c | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) commit 64e5182ac58601fb1d69b40a246e4b1b02192ddb Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 20:14:08 2007 +0100 * add the new/free axes tests. include/hkl/hkl-axes.h | 2 -- test/hkl-test-axis.c | 16 ++++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) commit eb6c657ce67645d92f1a31c4ef11dbb287602573 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 19:59:25 2007 +0100 * rename all test files with the right convention test/SConscript | 18 +++++++++--------- test/{axis_test.c => hkl-test-axis.c} | 2 +- test/{interval_test.c => hkl-test-interval.c} | 2 +- test/{lattice_test.c => hkl-test-lattice.c} | 2 +- test/{smatrix_test.c => hkl-test-matrix.c} | 2 +- test/{parameter_test.c => hkl-test-parameter.c} | 2 +- test/{quaternion_test.c => hkl-test-quaternion.c} | 2 +- test/{source_test.c => hkl-test-source.c} | 2 +- test/{svector_test.c => hkl-test-vector.c} | 2 +- test/{test.c => hkl-test.c} | 2 +- test/{test.h => hkl-test.h} | 6 +++--- test/main.c | 2 +- 12 files changed, 22 insertions(+), 22 deletions(-) commit 62904e51058a456303a8d16b8f8cccf7b0344e9c Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 19:51:37 2007 +0100 * now all tests are OK. test/axis_test.c | 5 ++- test/interval_test.c | 26 ++++++++++++ test/lattice_test.c | 105 ++++++++++++++++++++++++++----------------------- test/parameter_test.c | 2 + test/quaternion_test.c | 16 ++++++++ test/smatrix_test.c | 12 ++++++ test/source_test.c | 30 ++++++++------ test/svector_test.c | 18 +++++++++ test/test.h | 8 +--- 9 files changed, 152 insertions(+), 70 deletions(-) commit c8d26b6c045be29765093335c1ac4f9132f886b5 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 16:17:22 2007 +0100 * add the new and free method to the axes holder and holders struct try to find a memory leak but the problem in test suit comes from the HKL_ASSERT_EQUAL macro. It return True if the test pass so I can put only one test per funvtion, this is not good. include/hkl/hkl-axes.h | 6 ++++++ include/hkl/hkl-holder.h | 6 ++++++ src/hkl-axes.c | 18 ++++++++++++++++++ src/hkl-holder.c | 15 +++++++++++++++ src/hkl-holders.c | 15 +++++++++++++++ test/axis_test.c | 45 ++++++++++++++++++++++++--------------------- 6 files changed, 84 insertions(+), 21 deletions(-) commit 15ef7cfedf958161e011f22485a2ace10537dec6 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 15:14:38 2007 +0100 * remove the print env.Dump (debugging) test/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5bcd7e3f16e0f5fff048a8dd8ecbe3b47ee9b982 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 15:13:24 2007 +0100 use a better convention for file names. It clearer to read hkl-myclass instead of hklmyclass config-win32.py | 2 - include/hkl/{hklaxes.h => hkl-axes.h} | 2 +- include/hkl/{hklaxis.h => hkl-axis.h} | 6 +-- .../{hkldiffractometer.h => hkl-diffractometer.h} | 2 +- ...diffractometer_2C.h => hkl-diffractometer_2C.h} | 2 +- include/hkl/{hklgeometry.h => hkl-geometry.h} | 4 +- include/hkl/{hklholder.h => hkl-holder.h} | 4 +- include/hkl/{hklholders.h => hkl-holders.h} | 8 +++- include/hkl/{hklinterval.h => hkl-interval.h} | 2 +- include/hkl/{hkllattice.h => hkl-lattice.h} | 4 +- include/hkl/{hklmacros.h => hkl-macros.h} | 0 include/hkl/{hklmatrix.h => hkl-matrix.h} | 4 +- include/hkl/{hklparameter.h => hkl-parameter.h} | 2 +- include/hkl/{hklquaternion.h => hkl-quaternion.h} | 6 +-- include/hkl/hkl-sample.h | 45 ++++++++++++++++++++ include/hkl/{hklsource.h => hkl-source.h} | 2 +- include/hkl/{hklvector.h => hkl-vector.h} | 2 +- src/SConscript | 26 ++++++------ src/{hklaxes.c => hkl-axes.c} | 2 +- src/{hklaxis.c => hkl-axis.c} | 2 +- src/{hkldiffractometer.c => hkl-diffractometer.c} | 4 +- src/{hklgeometry.c => hkl-geometry.c} | 2 +- src/{hklholder.c => hkl-holder.c} | 2 +- src/{hklholders.c => hkl-holders.c} | 2 +- src/{hklinterval.c => hkl-interval.c} | 2 +- src/{hkllattice.c => hkl-lattice.c} | 2 +- src/{hklmatrix.c => hkl-matrix.c} | 6 +-- src/{hklparameter.c => hkl-parameter.c} | 2 +- src/{hklquaternion.c => hkl-quaternion.c} | 8 ++-- src/hkl-sample.c | 48 ++++++++++++++++++++++ src/{hklsource.c => hkl-source.c} | 2 +- src/{hklvector.c => hkl-vector.c} | 6 +-- src/usage.c | 2 +- test/SConscript | 2 +- test/axis_test.c | 2 +- test/interval_test.c | 2 +- test/lattice_test.c | 2 +- test/main.c | 1 + test/parameter_test.c | 2 +- test/quaternion_test.c | 6 +-- test/smatrix_test.c | 4 +- test/source_test.c | 2 +- test/svector_test.c | 4 +- test/test.c | 3 +- 44 files changed, 172 insertions(+), 73 deletions(-) commit d8323e8373f81f632d21d4afae3a717aabcc7d19 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 18 17:53:36 2007 +0100 * now compile with VC6. SConstruct | 2 +- test/SConscript | 23 ++++++++++++----------- test/axis_test.c | 2 ++ test/test.h | 9 +++++---- 4 files changed, 20 insertions(+), 16 deletions(-) commit 2e7e05e38a327038184935b541a838a019597f2b Author: Frédéric-Emmanuel PICCA Date: Fri Dec 14 07:38:48 2007 +0100 * juste add the reflection file src/reflection.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) commit 3d497b2f984cca43e0823568e0d09af468b70c66 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 9 22:40:22 2007 +0100 * use the gtk style for the source files. include/hkl/axes.h | 33 ---- include/hkl/axis.h | 31 ---- include/hkl/diffractometer.h | 36 ---- include/hkl/diffractometer_2C.h | 38 ---- include/hkl/geometry.h | 33 ---- include/hkl/hklaxes.h | 25 +++ include/hkl/hklaxis.h | 29 +++ include/hkl/hkldiffractometer.h | 31 ++++ include/hkl/hkldiffractometer_2C.h | 30 +++ include/hkl/hklgeometry.h | 24 +++ include/hkl/hklholder.h | 25 +++ include/hkl/hklholders.h | 25 +++ include/hkl/hklinterval.h | 48 +++++ include/hkl/hkllattice.h | 31 ++++ include/hkl/{config.h => hklmacros.h} | 18 +- include/hkl/hklmatrix.h | 39 ++++ include/hkl/hklparameter.h | 23 +++ include/hkl/hklquaternion.h | 71 +++++++ include/hkl/hklsource.h | 26 +++ include/hkl/hklvector.h | 64 +++++++ include/hkl/holder.h | 33 ---- include/hkl/holders.h | 33 ---- include/hkl/interval.h | 50 ----- include/hkl/lattice.h | 38 ---- include/hkl/parameter.h | 27 --- include/hkl/reflection.h | 184 ++---------------- include/hkl/smatrix.h | 46 ----- include/hkl/source.h | 30 --- include/hkl/svector.h | 71 ------- src/SConscript | 30 +-- src/axis.c | 13 -- src/geometry.c | 12 -- src/{axes.c => hklaxes.c} | 14 +- src/hklaxis.c | 12 ++ src/{diffractometer.c => hkldiffractometer.c} | 10 +- src/hklgeometry.c | 12 ++ src/{holder.c => hklholder.c} | 22 +-- src/{holders.c => hklholders.c} | 13 +- src/{interval.c => hklinterval.c} | 33 ++-- src/{lattice.c => hkllattice.c} | 19 +- src/hklmatrix.c | 180 ++++++++++++++++++ src/{parameter.c => hklparameter.c} | 7 +- src/hklquaternion.c | 164 +++++++++++++++++ src/{source.c => hklsource.c} | 13 +- src/hklvector.c | 256 ++++++++++++++++++++++++++ src/quaternion.c | 164 ----------------- src/smatrix.c | 180 ------------------ src/svector.c | 256 -------------------------- src/usage.c | 2 +- test/axis_test.c | 23 +-- test/interval_test.c | 59 +++--- test/lattice_test.c | 20 +- test/parameter_test.c | 5 +- test/quaternion_test.c | 53 +++--- test/smatrix_test.c | 35 ++-- test/source_test.c | 15 +- test/svector_test.c | 51 +++-- test/test.c | 2 +- 58 files changed, 1342 insertions(+), 1525 deletions(-) commit cb81cfb13de08f368c2d350c5ecca30fc30fec28 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 2 23:22:43 2007 +0100 * add the parameter an lattice C part with tests include/hkl/fitparameter.h | 118 ---------- include/hkl/lattice.h | 250 +++----------------- include/hkl/parameter.h | 75 ++---- src/SConscript | 5 +- src/lattice.c | 238 +++++++++++++++++++ src/lattice.cpp | 571 --------------------------------------------- src/parameter.c | 25 ++ src/parameter.cpp | 46 ---- test/SConscript | 4 +- test/lattice_test.c | 142 +++++++++++ test/lattice_test.cpp | 204 ---------------- test/lattice_test.h | 37 --- test/main.c | 14 +- test/parameter_test.c | 28 +++ test/parameter_test.cpp | 22 -- test/parameter_test.h | 24 -- 16 files changed, 493 insertions(+), 1310 deletions(-) commit b8b7db6212989abf427b24155426d99678c0a35a Author: Frédéric-Emmanuel PICCA Date: Sat Dec 1 22:59:46 2007 +0100 * all tests are OK now. src/SConscript | 1 + src/axes.c | 2 +- src/axis.c | 4 +++- src/diffractometer.c | 1 - test/axis_test.c | 9 ++++++--- 5 files changed, 11 insertions(+), 6 deletions(-) commit b48dd2da540a992e22c7b128895d7bf087eb9bdb Author: Frédéric-Emmanuel PICCA Date: Sat Dec 1 00:47:27 2007 +0100 * refactoring of the C version test do not compile. include/hkl/axes.h | 33 ++ include/hkl/axis.h | 55 +-- include/hkl/config.h | 19 +- include/hkl/diffractometer.h | 341 ++-------------- include/hkl/diffractometer_2C.h | 38 ++ include/hkl/geometry.h | 223 +--------- include/hkl/holder.h | 43 +- include/hkl/holders.h | 33 ++ include/hkl/new_diffractometer.h | 48 --- include/hkl/new_diffractometer_2C.h | 40 -- include/hkl/new_geometry.h | 45 -- include/hkl/source.h | 20 +- src/SConscript | 18 +- src/axes.c | 59 +++ src/axis.c | 165 +------- src/diffractometer.c | 40 ++ src/diffractometer.cpp | 49 --- src/geometry.c | 12 + src/holder.c | 114 ++---- src/holders.c | 41 ++ src/interval.c | 792 +++++++++++++++++------------------- src/new_diffractometer.c | 74 ---- src/new_geometry.c | 36 -- src/quaternion.c | 161 ++++---- src/smatrix.c | 236 ++++++----- src/source.c | 56 +-- 26 files changed, 980 insertions(+), 1811 deletions(-) commit cb89c56cb060e63da61134ac9f0385e59b3c85ee Author: Frédéric-Emmanuel PICCA Date: Wed Nov 21 17:15:27 2007 +0100 * add the axis source test test/SConscript | 2 +- test/axis_test.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++ test/axis_test.cpp | 120 --------------------------------------------------- test/axis_test.h | 25 ----------- test/main.c | 1 + 5 files changed, 126 insertions(+), 146 deletions(-) commit 144be6c394472ce6a0612ffc8a742f31c51ea906 Author: Frédéric-Emmanuel PICCA Date: Wed Nov 21 17:01:25 2007 +0100 * add more C tests (interval + source) include/hkl/config.h | 1 + test/SConscript | 7 +- test/interval_test.c | 285 ++++++++++++++++++++++++++++++++++++++++++++++++ test/interval_test.cpp | 291 ------------------------------------------------- test/interval_test.h | 51 --------- test/libHKL_test.cpp | 16 --- test/main.c | 5 +- test/quaternion_test.c | 42 +++---- test/quaternion_test.h | 6 - test/smatrix_test.c | 107 ++++++++++++++++++ test/source_test.c | 42 +++++++ test/source_test.cpp | 36 ------ test/source_test.h | 27 ----- test/svecmat_test.c | 207 ----------------------------------- test/svecmat_test.h | 6 - test/svector_test.c | 122 +++++++++++++++++++++ test/test.h | 19 +++- 17 files changed, 600 insertions(+), 670 deletions(-) commit 4d992f063aa068fd159cf4cbecce94d3d4c86ed5 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 20 16:36:47 2007 +0100 * refactor the quaternion tests test/SConscript | 2 +- test/main.c | 2 + test/quaternion_test.c | 128 ++++++++++++++++++++++++++++++++++++++++++++++ test/quaternion_test.cpp | 130 ----------------------------------------------- test/quaternion_test.h | 35 +------------ test/svecmat_test.c | 32 ++++++------ test/test.h | 2 +- 7 files changed, 150 insertions(+), 181 deletions(-) commit bcb5b74ed3edc54c2061bfbb392545f0c4b0682a Author: Frédéric-Emmanuel PICCA Date: Tue Nov 20 16:01:13 2007 +0100 * remove the cppunit dependency Add an home made test system. SConstruct | 4 +- src/svector.c | 248 +++++++++++++++++++++++++------------------------- test/SConscript | 32 +++---- test/main.c | 19 ++++ test/main.cpp | 16 ---- test/svecmat_test.c | 205 +++++++++++++++++++++++++++++++++++++++++ test/svecmat_test.cpp | 210 ------------------------------------------ test/svecmat_test.h | 54 +---------- test/test.c | 68 ++++++++++++++ test/test.h | 67 ++++++++++++++ 10 files changed, 498 insertions(+), 425 deletions(-) commit 67931efdc5dd90a5a05eaef33e8c42d19b5f3274 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 30 22:18:33 2007 +0100 * pass all axis tests include/hkl/axis.h | 4 +- src/geometry.cpp | 4 +- test/axis_test.cpp | 131 ++++++++++++++++++++++++++++------------------------- 3 files changed, 74 insertions(+), 65 deletions(-) commit acd06ff9f217bf1fd422c868a55d6b31bf4e0d2a Author: Frédéric-Emmanuel PICCA Date: Tue Oct 30 21:43:37 2007 +0100 * the first part of the axis test is OK config-linux2.py | 1 - src/axis.c | 7 ++++--- test/SConscript | 7 ++++--- test/axis_test.cpp | 36 ++++++++++++++++++++++-------------- 4 files changed, 30 insertions(+), 21 deletions(-) commit d39479e206a97e98894893e4a137bff5e9707a30 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 29 22:02:57 2007 +0100 * work on the axis test (do not compile) include/hkl/axis.h | 4 +- src/axis.c | 34 ++++++++++ test/axis_test.cpp | 189 +++++++++++++++++++++++------------------------------ test/axis_test.h | 12 ++-- 4 files changed, 122 insertions(+), 117 deletions(-) commit 0f17ffcc448678b34bd0cd5fb47165ea7f34db38 Author: Frédéric-Emmanuel PICCA Date: Sun Oct 28 23:07:44 2007 +0100 * start the work on the axis, holder parte. include/hkl/HolderList.h | 34 - include/hkl/axis.h | 4 + include/hkl/derived_pseudoaxeengine.h | 1007 ++++++++++---------- include/hkl/eulerian4C_vertical_geometry.h | 331 +++---- include/hkl/eulerian6C_geometry.h | 391 ++++---- include/hkl/geometry.h | 366 ++++--- include/hkl/holder.h | 208 +--- include/hkl/kappa4C_vertical_geometry.h | 547 ++++++----- include/hkl/kappa6C_geometry.h | 396 ++++---- include/hkl/new_geometry.h | 4 +- include/hkl/new_holder.h | 41 - include/hkl/pseudoaxe.h | 270 +++--- include/hkl/pseudoaxeengine.h | 13 +- include/hkl/twoC_vertical_geometry.h | 263 +++-- include/hkl/twoC_vertical_pseudoaxeengine.h | 187 ++-- src/SConscript | 11 +- src/geometry.cpp | 613 ++++++------ src/{new_holder.c => holder.c} | 2 +- src/holder.cpp | 248 ----- src/pseudoaxe.cpp | 4 +- src/reflection.cpp | 232 ++--- src/sample.cpp | 297 +++--- src/twoC_vertical_geometry.cpp | 564 ++++++----- src/twoC_vertical_mode.cpp | 146 ++- src/twoC_vertical_pseudoaxeengine.cpp | 576 ++++++----- test/SConscript | 18 +- test/{axe_rotation_test.cpp => axis_test.cpp} | 15 +- test/{axe_rotation_test.h => axis_test.h} | 14 +- ...t.cpp => twoC_vertical_diffractometer_test.cpp} | 0 ..._test.h => twoC_vertical_diffractometer_test.h} | 0 ...oC_test.cpp => twoC_vertical_geometry_test.cpp} | 0 ...y_twoC_test.h => twoC_vertical_geometry_test.h} | 0 ...e_twoC_test.cpp => twoC_vertical_mode_test.cpp} | 0 ...{mode_twoC_test.h => twoC_vertical_mode_test.h} | 0 ....cpp => twoC_vertical_pseudoaxeengine_test.cpp} | 0 ...test.h => twoC_vertical_pseudoaxeengine_test.h} | 0 36 files changed, 3066 insertions(+), 3736 deletions(-) commit c3b72d16ef1a97a26e8794253dfea2f994f2b0c2 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 26 16:18:41 2007 +0200 * start working on the axe C++ -> C transition include/hkl/axe.h | 256 --------------------- include/hkl/axe_rotation.h | 150 ------------ include/hkl/axefactory.h | 34 --- include/hkl/{new_axe.h => axis.h} | 6 + include/hkl/holder.h | 424 +++++++++++++--------------------- src/SConscript | 5 +- src/axe.cpp | 279 ----------------------- src/axe_rotation.cpp | 149 ------------ src/axefactory.cpp | 34 --- src/{new_axe.c => axis.c} | 15 +- src/holder.cpp | 465 ++++++++++++++++++++------------------ 11 files changed, 422 insertions(+), 1395 deletions(-) commit 621048230d4eb2041a6c7b394de5b0802c84cb70 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 24 13:54:03 2007 +0200 * working on the C version of the geometry include/hkl/new_axe.h | 51 ++++---- include/hkl/new_diffractometer.h | 48 +++++++ include/hkl/new_diffractometer_2C.h | 40 ++++++ include/hkl/new_geometry.h | 255 +++--------------------------------- include/hkl/new_holder.h | 42 +++--- src/SConscript | 1 + src/new_axe.c | 138 +++++++++++++------ src/new_diffractometer.c | 74 +++++++++++ src/new_geometry.c | 36 +++++ src/new_holder.c | 136 ++++++++++++------- 10 files changed, 449 insertions(+), 372 deletions(-) commit 22cbd15ea9c4d9890f320ed05af1cf12592d8cdd Author: Frédéric-Emmanuel PICCA Date: Thu Oct 4 17:54:49 2007 +0200 * start adding the holder and axe C version include/hkl/config.h | 32 ++++++ include/hkl/new_axe.h | 43 ++++++++ include/hkl/new_geometry.h | 264 +++++++++++++++++++++++++++++++++++++++++++++ include/hkl/new_holder.h | 41 +++++++ src/SConscript | 4 + src/new_axe.c | 72 +++++++++++++ src/new_holder.c | 74 +++++++++++++ src/usage.c | 41 +++++++ 8 files changed, 571 insertions(+) commit 601317ef9c914de05f53531b28a4db0fde448af0 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 17:09:54 2007 +0200 * remove gcc warnings src/interval.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 6aafd1c470b22ed7f1f12657521c0d96496f7ef3 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 15:53:18 2007 +0200 * source c++ -> source (simpler) win32 compilation is ok now config-linux2.py | 1 + include/hkl/geometry.h | 50 +++---------- include/hkl/mode.h | 5 +- include/hkl/source.h | 130 +++++----------------------------- include/hkl/svector.h | 1 + src/SConscript | 2 +- src/axefactory.cpp | 1 + src/eulerian4C_vertical_geometry.cpp | 18 ++--- src/eulerian6C_geometry.cpp | 14 ++-- src/eulerian6C_pseudoaxeengine.cpp | 8 +-- src/geometry.cpp | 61 ++++++++++------ src/holder.cpp | 2 +- src/interval.c | 20 ++++-- src/kappa4C_vertical_geometry.cpp | 14 ++-- src/kappa6C_geometry.cpp | 14 ++-- src/reflection.cpp | 2 +- src/source.c | 44 ++++++++++++ src/svector.c | 31 +++++++- src/twoC_vertical_geometry.cpp | 20 +++--- src/twoC_vertical_pseudoaxeengine.cpp | 8 +-- test/affinement_simplex_test.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian6C_test.cpp | 7 +- test/geometry_kappa4C_test.cpp | 4 +- test/geometry_kappa6C_test.cpp | 4 +- test/geometry_twoC_test.cpp | 5 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_twoC_test.cpp | 6 +- test/pseudoaxe_eulerian6C_test.cpp | 6 +- test/pseudoaxe_kappa4C_test.cpp | 10 +-- test/pseudoaxe_kappa6C_test.cpp | 8 +-- test/pseudoaxe_twoC_test.cpp | 4 +- test/reflection_test.cpp | 3 +- test/reflection_test.h | 2 +- test/reflectionlist_test.cpp | 10 +-- test/sample_test.cpp | 2 +- test/sample_test.h | 2 +- test/source_test.cpp | 90 +++++------------------ test/source_test.h | 23 ++---- 39 files changed, 278 insertions(+), 361 deletions(-) commit ee4bcceeb75ec2fd5c77a2c8ce4bd6ee82f63b45 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 13:09:14 2007 +0200 * add forgotten files include/hkl/smatrix.h | 46 +++++ include/hkl/svector.h | 70 +++++++ src/interval.c | 492 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 608 insertions(+) commit 707e123fd2820f379950e5c2b305b45a0a0afe62 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 11:56:35 2007 +0200 * rafactoring de interval C++ -> C (cleaner) include/hkl/config.h | 2 +- include/hkl/interval.h | 242 ++---------- include/hkl/kappa4C_vertical_geometry.h | 50 ++- src/SConscript | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 75 ++-- src/interval.cpp | 639 ------------------------------- src/kappa4C_vertical_pseudoaxeengine.cpp | 14 +- src/twoC_vertical_pseudoaxeengine.cpp | 20 +- test/interval_test.cpp | 439 ++++++++------------- test/interval_test.h | 53 +-- 10 files changed, 331 insertions(+), 1205 deletions(-) commit 4b80bee8317c4ce53629f7e29e4b89ad09685653 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 16:58:47 2007 +0200 * split svectmat.h in svector.h and smatrix.h try to have a nicer separation beetween svector and smatrix include/hkl/axe_rotation.h | 2 +- include/hkl/derived_mode.h | 2 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 25 ++---- include/hkl/eulerian6C_pseudoaxeengine.h | 21 ++--- include/hkl/geometry.h | 3 +- include/hkl/kappa4C_vertical_geometry.h | 48 ++--------- include/hkl/lattice.h | 6 +- include/hkl/mode.h | 4 +- include/hkl/quaternion.h | 7 +- include/hkl/reflection.h | 2 +- include/hkl/sample.h | 14 ++-- include/hkl/sample_monocrystal.h | 2 +- include/hkl/source.h | 2 +- include/hkl/svecmat.h | 99 ----------------------- src/axe.cpp | 2 +- src/axe_rotation.cpp | 1 + src/eulerian4C_vertical_mode.cpp | 3 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 2 +- src/holder.cpp | 2 +- src/lattice.cpp | 2 + src/quaternion.c | 4 + src/reflection.cpp | 2 +- src/reflection_monocrystal.cpp | 4 +- src/reflectionlist.cpp | 2 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 1 + src/smatrix.c | 6 +- src/source.cpp | 1 + src/svector.c | 6 +- src/twoC_vertical_mode.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 2 +- test/affinement_simplex_test.cpp | 1 + test/axe_rotation_test.cpp | 3 + test/geometry_kappa6C_test.cpp | 1 + test/holder_test.cpp | 1 + test/lattice_test.cpp | 1 + test/pseudoaxe_eulerian4C_test.cpp | 4 +- test/pseudoaxe_eulerian6C_test.cpp | 4 +- test/pseudoaxe_twoC_test.cpp | 4 +- test/quaternion_test.cpp | 5 ++ test/reflection_test.cpp | 1 + test/sample_test.cpp | 1 + test/source_test.cpp | 1 + test/svecmat_test.cpp | 24 +++--- test/svecmat_test.h | 2 +- 46 files changed, 110 insertions(+), 226 deletions(-) commit f75f49bad64f0a73205d31160625a058c6c00bfa Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 16:20:06 2007 +0200 * remove all serialization code include/hkl/affinement.h | 17 +--- include/hkl/affinementlist.h | 17 +--- include/hkl/axe.h | 33 +------ include/hkl/axe_rotation.h | 16 +--- include/hkl/derived_pseudoaxeengine.h | 95 +------------------ include/hkl/diffractometer.h | 16 +--- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 16 ---- include/hkl/eulerian6C_pseudoaxeengine.h | 32 ------- include/hkl/fitparameter.h | 14 --- include/hkl/fitparameterlist.h | 14 --- include/hkl/geometry.h | 16 +--- include/hkl/geometry_kappa.h | 16 +--- include/hkl/hklobject.h | 15 --- include/hkl/holder.h | 31 ------- include/hkl/interval.h | 14 --- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 15 --- include/hkl/lattice.h | 16 ---- include/hkl/modelist.h | 15 --- include/hkl/mymap.h | 63 ------------- include/hkl/object.h | 15 --- include/hkl/parameter.h | 14 --- include/hkl/parameterlist.h | 14 --- include/hkl/pseudoaxeengine.h | 48 ---------- include/hkl/pseudoaxeenginelist.h | 15 --- include/hkl/range.h | 14 --- include/hkl/reflection.h | 15 --- include/hkl/reflectionlist.h | 15 --- include/hkl/sample.h | 15 --- include/hkl/sample_monocrystal.h | 15 --- include/hkl/samplelist.h | 15 --- include/hkl/twoC_vertical_pseudoaxeengine.h | 45 --------- include/hkl/value.h | 13 --- src/affinement.cpp | 34 ------- src/affinementlist.cpp | 38 -------- src/axe.cpp | 73 --------------- src/axe_rotation.cpp | 25 ----- src/diffractometer.cpp | 40 -------- src/eulerian4C_vertical_pseudoaxeengine.cpp | 27 ------ src/eulerian6C_pseudoaxeengine.cpp | 57 ------------ src/fitparameter.cpp | 31 ------- src/fitparameterlist.cpp | 35 ------- src/geometry.cpp | 26 ------ src/geometry_kappa.cpp | 26 ------ src/hklobject.cpp | 28 ------ src/holder.cpp | 108 ---------------------- src/interval.cpp | 25 ----- src/kappa4C_vertical_pseudoaxeengine.cpp | 28 ------ src/lattice.cpp | 42 --------- src/modelist.cpp | 38 -------- src/object.cpp | 27 ------ src/parameter.cpp | 25 ----- src/parameterlist.cpp | 35 ------- src/pseudoaxeenginelist.cpp | 38 -------- src/range.cpp | 31 ------- src/reflection.cpp | 28 ------ src/reflectionlist.cpp | 46 --------- src/sample.cpp | 30 ------ src/sample_monocrystal.cpp | 32 ------- src/samplelist.cpp | 56 ----------- src/twoC_vertical_pseudoaxeengine.cpp | 82 ---------------- src/value.cpp | 24 ----- test/fitparameter_test.cpp | 29 ------ test/fitparameter_test.h | 2 - test/geometry_eulerian6C_test.cpp | 16 ---- test/geometry_eulerian6C_test.h | 2 - test/geometry_kappa4C_test.cpp | 20 ---- test/geometry_kappa4C_test.h | 2 - test/geometry_kappa6C_test.cpp | 20 ---- test/geometry_kappa6C_test.h | 2 - test/geometry_test.cpp | 16 ---- test/geometry_test.h | 2 - test/geometry_twoC_test.cpp | 16 ---- test/geometry_twoC_test.h | 2 - test/hklobject_test.cpp | 19 ---- test/hklobject_test.h | 2 - test/holderlist_test.cpp | 2 - test/interval_test.cpp | 19 ---- test/interval_test.h | 2 - test/lattice_test.cpp | 18 ---- test/lattice_test.h | 2 - test/object_test.cpp | 18 ---- test/object_test.h | 2 - test/parameter_test.cpp | 18 ---- test/parameter_test.h | 2 - test/range_test.cpp | 19 ---- test/range_test.h | 2 - test/samplelist_test.cpp | 16 ---- test/samplelist_test.h | 2 - test/value_test.cpp | 19 ---- test/value_test.h | 3 - 90 files changed, 9 insertions(+), 2144 deletions(-) commit 8cd30e8a7ff4c9ab59f3a10227946b0e9c17d6cf Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 15:42:54 2007 +0200 * pass all tests include/hkl/svecmat.h | 2 + src/eulerian4C_vertical_pseudoaxeengine.cpp | 54 ++-- src/eulerian6C_pseudoaxeengine.cpp | 7 +- src/quaternion.c | 68 +++-- src/quaternion.cpp | 374 ---------------------------- src/svector.c | 34 ++- test/SConscript | 10 +- test/diffractometer_eulerian4C_test.cpp | 169 ++++--------- test/diffractometer_eulerian4C_test.h | 2 - test/diffractometer_kappa4C_test.cpp | 65 +---- test/diffractometer_kappa4C_test.h | 2 - test/diffractometer_kappa6C_test.cpp | 75 +----- test/diffractometer_kappa6C_test.h | 2 - test/diffractometer_twoC_test.cpp | 107 +++----- test/diffractometer_twoC_test.h | 2 - test/pseudoaxe_eulerian4C_test.cpp | 182 ++++++-------- test/pseudoaxe_eulerian4C_test.h | 2 - test/pseudoaxe_eulerian6C_test.cpp | 263 +++++++++---------- test/pseudoaxe_eulerian6C_test.h | 2 - test/pseudoaxe_kappa4C_test.cpp | 370 +++++++++++++-------------- test/pseudoaxe_kappa4C_test.h | 2 - test/pseudoaxe_kappa6C_test.cpp | 303 ++++++++++------------ test/pseudoaxe_kappa6C_test.h | 2 - test/pseudoaxe_twoC_test.cpp | 149 +++++------ test/pseudoaxe_twoC_test.h | 2 - test/quaternion_test.cpp | 71 ++++-- test/svecmat_test.cpp | 11 + test/svecmat_test.h | 2 + 28 files changed, 827 insertions(+), 1507 deletions(-) commit f44523ed65c1da302a03ef7aef99d658051e8cba Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:56:53 2007 +0200 * the kappa6c modes are ok test/SConscript | 2 +- test/mode_kappa6C_test.cpp | 307 +++++++++++++++++++++------------------------ test/mode_kappa6C_test.h | 2 - 3 files changed, 145 insertions(+), 166 deletions(-) commit 0d1433eb9feb572fce8c2afc428f2d52f3daae33 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:52:13 2007 +0200 * the kappa4c modes are ok test/SConscript | 2 +- test/mode_kappa4C_test.cpp | 270 +++++++++++++++++++++------------------------ test/mode_kappa4C_test.h | 2 - 3 files changed, 127 insertions(+), 147 deletions(-) commit f124d703565098a33f8a459e17b902179da6ec5d Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:44:04 2007 +0200 * eulerian4C vertical mode are ok include/hkl/svecmat.h | 2 + src/svector.c | 8 ++ test/SConscript | 2 +- test/mode_eulerian4C_test.cpp | 265 ++++++++++++++++++++---------------------- test/mode_eulerian4C_test.h | 2 - 5 files changed, 134 insertions(+), 145 deletions(-) commit 95a43361e65cf9bb0f1f47cd064d525be273856c Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 14:40:45 2007 +0200 * twoC modes are ok include/hkl/config.h | 7 +-- test/SConscript | 2 +- test/mode_twoC_test.cpp | 124 ++++++++++++++++++++++-------------------------- test/mode_twoC_test.h | 2 - 4 files changed, 63 insertions(+), 72 deletions(-) commit aca10eff44c0c1a97d3c08d79625e22589efb4c1 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:58:19 2007 +0200 * the affinement Tests are ok test/SConscript | 4 +- test/affinement_simplex_test.cpp | 141 +++++++++++++++++++-------------------- test/affinement_simplex_test.h | 2 - 3 files changed, 70 insertions(+), 77 deletions(-) commit 2dfb17954d44eedf08f16157d49bbcfda39fd0a4 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:51:40 2007 +0200 * the SampleTest are ok src/sample_monocrystal.cpp | 4 +- test/SConscript | 2 +- test/sample_test.cpp | 150 +++++++++++++++++---------------------------- test/sample_test.h | 2 - 4 files changed, 59 insertions(+), 99 deletions(-) commit bd0857f8a63f9654725d08396d187308e2565539 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:32:27 2007 +0200 * the ReflectionList test are ok. src/reflectionfactory.cpp | 4 +++- src/reflectionlist.cpp | 2 +- test/SConscript | 2 +- test/reflectionlist_test.cpp | 50 ++++++++++++++++++++++---------------------- test/reflectionlist_test.h | 2 -- 5 files changed, 30 insertions(+), 30 deletions(-) commit 98d8c0bb11c2902f00a9e4a28769287eff01d4ec Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:18:32 2007 +0200 * the reflection tests passed src/eulerian4C_vertical_pseudoaxeengine.cpp | 7 ++- src/svector.c | 10 +--- test/SConscript | 2 +- test/reflection_test.cpp | 92 ++++++++++++++--------------- test/reflection_test.h | 2 - 5 files changed, 54 insertions(+), 59 deletions(-) commit 7ec138a22b19ca89f26db7c7e0c78038e545d677 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:32:28 2007 +0200 * now geometry kappa6c is ok test/SConscript | 2 +- test/geometry_kappa6C_test.cpp | 249 +++++++++++++++++++++++------------------ test/geometry_kappa6C_test.h | 4 +- 3 files changed, 140 insertions(+), 115 deletions(-) commit b05db879601d4312733a5f443c34417fdda141b3 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:15:29 2007 +0200 * now kappa4C geometry is ok test/SConscript | 2 +- test/geometry_kappa4C_test.cpp | 297 ++++++++++++++++++++++------------------- test/geometry_kappa4C_test.h | 4 +- 3 files changed, 164 insertions(+), 139 deletions(-) commit 4c7ae82a6a6973c16d15dfd58171ebe28bed6a71 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:00:14 2007 +0200 * eulerian6C geometry is ok test/SConscript | 2 +- test/geometry_eulerian6C_test.cpp | 281 ++++++++++++++++++++++---------------- 2 files changed, 161 insertions(+), 122 deletions(-) commit 6a2adb9853e8fa7132b5b38c9c8f1af4c07ea5df Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 10:43:00 2007 +0200 eulerian4C vertical geometry is ok + remove of constant.h include/hkl/config.h | 3 + include/hkl/constant.h | 43 ------- include/hkl/kappa4C_vertical_geometry.h | 65 +++++----- include/hkl/svecmat.h | 36 ------ include/hkl/value.h | 6 +- src/SConscript | 1 - src/affinement.cpp | 8 +- src/affinement_simplex.cpp | 7 +- src/axe.cpp | 2 +- src/axe_rotation.cpp | 8 +- src/axefactory.cpp | 2 +- src/constant.cpp | 22 ---- src/convenience.cpp | 17 ++- src/eulerian4C_vertical_mode.cpp | 8 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 18 +-- src/eulerian6C_pseudoaxeengine.cpp | 26 ++-- src/holder.cpp | 2 +- src/lattice.cpp | 36 +++--- src/reflection.cpp | 2 +- src/sample.cpp | 6 +- src/sample_monocrystal.cpp | 6 +- src/source.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 24 ++-- src/value.cpp | 19 +-- test/SConscript | 2 +- test/axe_rotation_test.cpp | 13 +- test/geometry_eulerian4C_test.cpp | 190 ++++++++++++++-------------- test/geometry_eulerian4C_test.h | 2 - test/geometry_twoC_test.cpp | 54 ++++---- test/holder_test.cpp | 2 +- test/interval_test.cpp | 31 ++--- test/lattice_test.cpp | 84 ++++++------ test/value_test.cpp | 5 +- 33 files changed, 327 insertions(+), 425 deletions(-) commit 9f1f67a314b9d37d8c904b21cd6af4db2b27d6e0 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 27 19:23:12 2007 +0200 Documentation is the directory of the documentation start to write the user-guide using asciidoc {doc => Documentation}/Doxyfile | 0 {doc => Documentation}/Maxima/E4C_bissector.max | 0 {doc => Documentation}/Maxima/E4C_constant_chi.max | 0 .../Maxima/E4C_constant_chi_phi.max | 0 .../Maxima/E4C_constant_omega.max | 0 {doc => Documentation}/Maxima/E4C_delta_omega.max | 0 {doc => Documentation}/SConscript | 0 {doc => Documentation}/example/SConscript | 0 {doc => Documentation}/example/plot.gnuplot | 0 {doc => Documentation}/example/psi.cpp | 0 {doc => Documentation}/hkl.lyx | 0 {doc => Documentation}/uml/hkl.dia | 0 {doc => Documentation}/uml/next_hkl.dia | 0 Documentation/user-guide.txt | 79 ++++++++++++++++++++++ 14 files changed, 79 insertions(+) commit 8ada71a3c00d92199ac4a30b29bd5fa04e60f11e Author: Frédéric-Emmanuel PICCA Date: Thu Sep 27 19:01:52 2007 +0200 * now the twoC geometry pass the tests. include/hkl/source.h | 17 +------- src/geometry.cpp | 8 +++- src/lattice.cpp | 40 ++++++++---------- src/source.cpp | 27 ++---------- src/svector.c | 4 +- test/SConscript | 8 ++-- test/geometry_twoC_test.cpp | 100 ++++++++++++++++++++++---------------------- test/lattice_test.cpp | 4 +- test/source_test.cpp | 34 ++------------- test/source_test.h | 2 - 10 files changed, 90 insertions(+), 154 deletions(-) commit 27e1d0e96570392dd7e7974fea06d139f1628cc8 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 20 18:38:33 2007 +0200 * now more unit test are working with the C files include/hkl/config.h | 4 + include/hkl/derived_mode.h | 6 +- include/hkl/eulerian4C_vertical_mode.h | 10 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/eulerian6C_pseudoaxeengine.h | 4 +- include/hkl/mode.h | 33 +++-- include/hkl/svecmat.h | 45 ++++++- include/hkl/twoC_vertical_mode.h | 4 +- src/eulerian4C_vertical_geometry.cpp | 28 ++-- src/eulerian4C_vertical_mode.cpp | 72 +++++------ src/eulerian4C_vertical_pseudoaxeengine.cpp | 103 ++++++++------- src/eulerian6C_geometry.cpp | 36 ++++-- src/eulerian6C_pseudoaxeengine.cpp | 46 ++++--- src/kappa4C_vertical_geometry.cpp | 28 ++-- src/kappa6C_geometry.cpp | 38 ++++-- src/sample_monocrystal.cpp | 73 +++++++++-- src/smatrix.c | 23 ++-- src/svector.c | 62 +++++---- src/twoC_vertical_geometry.cpp | 18 ++- src/twoC_vertical_mode.cpp | 14 +- test/SConscript | 9 +- test/axe_rotation_test.cpp | 149 ++++++++++------------ test/axe_rotation_test.h | 2 - test/geometry_twoC_test.cpp | 74 ++++++++--- test/holder_test.cpp | 62 ++++----- test/holder_test.h | 2 - test/holderlist_test.cpp | 30 +---- test/holderlist_test.h | 2 - test/lattice_test.cpp | 45 +++---- test/source_test.cpp | 55 +++++--- test/source_test.h | 2 +- 31 files changed, 635 insertions(+), 452 deletions(-) commit 33df56287ffe4361713204f94e83141b1000c3b5 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 20 13:59:10 2007 +0200 * add the c files svector.c smatrix.c quaternion.c include/hkl/config.h | 26 +++++++ include/hkl/svecmat.h | 88 +++++++++++++++++++++++ src/geometry.cpp | 8 +-- src/lattice.cpp | 4 +- src/quaternion.c | 131 +++++++++++++++++++++++++++++++++ src/smatrix.c | 179 +++++++++++++++++++++++++++++++++++++++++++++ src/source.cpp | 4 +- src/svector.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 627 insertions(+), 8 deletions(-) commit dfa4716bb49ec441ee3647166330ad56b7156982 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 14 18:54:38 2007 +0200 * working on the C version SConstruct | 13 +- config-win32.py | 1 + include/hkl/axe.h | 11 +- include/hkl/axe_rotation.h | 33 +- include/hkl/geometry.h | 24 +- include/hkl/holder.h | 16 +- include/hkl/lattice.h | 8 +- include/hkl/pseudoaxe.h | 1 + include/hkl/quaternion.h | 264 ++++------------ include/hkl/reflection.h | 24 +- include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionlist.h | 2 +- include/hkl/sample.h | 4 +- include/hkl/sample_monocrystal.h | 12 +- include/hkl/source.h | 34 +- include/hkl/svector.h | 188 ----------- src/SConscript | 5 +- src/axe_rotation.cpp | 56 ++-- src/axefactory.cpp | 4 +- src/geometry.cpp | 202 ++++++------ src/holder.cpp | 8 +- src/lattice.cpp | 155 +++++++--- src/reflection.cpp | 30 +- src/reflection_monocrystal.cpp | 12 +- src/reflectionfactory.cpp | 7 +- src/reflectionlist.cpp | 4 +- src/sample_monocrystal.cpp | 27 +- src/source.cpp | 108 +++---- src/svector.cpp | 584 ----------------------------------- test/SConscript | 8 +- test/quaternion_test.cpp | 214 ++++--------- test/quaternion_test.h | 59 +--- test/svecmat_test.cpp | 351 +++++++-------------- test/svecmat_test.h | 96 ++---- 34 files changed, 695 insertions(+), 1872 deletions(-) commit 583660448352c5f4890c94844b5e6b68954f8583 Merge: 008cf44e 8e803aaf Author: Frédéric-Emmanuel PICCA Date: Wed Sep 12 10:32:07 2007 +0200 Merge branch 'bouml' Conflicts: include/hkl/portability.h test/SConscript commit 8e803aaf1fd1bb8499b0c4c329da467f6c8418be Author: Frédéric-Emmanuel PICCA Date: Wed Sep 12 10:18:28 2007 +0200 * end of the bouml branch. now it compiles on both linux and win32. bouml/hkl/2.session | 2 +- bouml/hkl/hkl.prj | 11 +- include/hkl/HKLException.h | 70 +- include/hkl/HolderList.h | 27 +- include/hkl/affinement.h | 129 +-- include/hkl/affinement_simplex.h | 46 +- include/hkl/affinementlist.h | 283 +++--- include/hkl/axe.h | 495 +++++----- include/hkl/axe_rotation.h | 260 +++--- include/hkl/axefactory.h | 33 +- include/hkl/constant.h | 42 +- include/hkl/derived_mode.h | 125 +-- include/hkl/derived_pseudoaxeengine.h | 952 +++++++++---------- include/hkl/diffractometer.h | 629 ++++++------- include/hkl/diffractometerfactory.h | 66 +- include/hkl/eulerian4C_vertical_diffractometer.h | 24 +- include/hkl/eulerian4C_vertical_geometry.h | 328 ++++--- include/hkl/eulerian4C_vertical_mode.h | 194 ++-- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 320 ++++--- include/hkl/eulerian6C_diffractometer.h | 93 +- include/hkl/eulerian6C_geometry.h | 390 ++++---- include/hkl/eulerian6C_mode.h | 23 +- include/hkl/eulerian6C_pseudoaxeengine.h | 507 +++++----- include/hkl/fitparameter.h | 210 ++--- include/hkl/fitparameterlist.h | 253 ++--- include/hkl/geometry.h | 465 +++++----- include/hkl/geometry_kappa.h | 71 +- include/hkl/hklobject.h | 80 +- include/hkl/holder.h | 552 +++++------ include/hkl/interval.h | 410 ++++---- include/hkl/kappa4C_vertical_diffractometer.h | 204 ++-- include/hkl/kappa4C_vertical_geometry.h | 553 ++++++----- include/hkl/kappa4C_vertical_mode.h | 28 +- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 281 +++--- include/hkl/kappa6C_diffractometer.h | 19 +- include/hkl/kappa6C_geometry.h | 394 ++++---- include/hkl/kappa6C_mode.h | 23 +- include/hkl/kappa6C_pseudoaxeengine.h | 21 +- include/hkl/lattice.h | 430 ++++----- include/hkl/mode.h | 343 +++---- include/hkl/modelist.h | 283 +++--- include/hkl/mymap.h | 528 +++++------ include/hkl/mystring.h | 54 -- include/hkl/object.h | 307 +++--- include/hkl/observer.h | 85 +- include/hkl/parameter.h | 83 +- include/hkl/parameterlist.h | 181 ++-- include/hkl/portability.h | 22 +- include/hkl/pseudoaxe.h | 265 +++--- include/hkl/pseudoaxeengine.h | 715 +++++++------- include/hkl/pseudoaxeenginelist.h | 77 +- include/hkl/pseudoaxelist.h | 75 +- include/hkl/quaternion.h | 368 ++++---- include/hkl/range.h | 340 +++---- include/hkl/reflection.h | 325 +++---- include/hkl/reflection_monocrystal.h | 87 +- include/hkl/reflectionfactory.h | 52 +- include/hkl/reflectionlist.h | 282 +++--- include/hkl/sample.h | 221 ++--- include/hkl/sample_monocrystal.h | 241 ++--- include/hkl/samplefactory.h | 50 +- include/hkl/samplelist.h | 333 +++---- include/hkl/source.h | 222 ++--- include/hkl/strbuf.h | 19 + include/hkl/svector.h | 187 ++-- include/hkl/twoC_vertical_diffractometer.h | 94 +- include/hkl/twoC_vertical_geometry.h | 260 +++--- include/hkl/twoC_vertical_mode.h | 86 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 262 +++--- include/hkl/value.h | 136 +-- src/HKLException.cpp | 259 +++--- src/SConscript | 2 +- src/affinement.cpp | 159 ++-- src/affinement_simplex.cpp | 134 ++- src/affinementlist.cpp | 491 +++++----- src/axe.cpp | 667 +++++++------ src/axe_rotation.cpp | 346 ++++--- src/axefactory.cpp | 49 +- src/constant.cpp | 19 +- src/diffractometer.cpp | 123 ++- src/diffractometerfactory.cpp | 99 +- src/eulerian4C_vertical_diffractometer.cpp | 83 +- src/eulerian4C_vertical_geometry.cpp | 661 +++++++------ src/eulerian4C_vertical_mode.cpp | 564 ++++++----- src/eulerian4C_vertical_pseudoaxeengine.cpp | 532 ++++++----- src/eulerian6C_diffractometer.cpp | 28 +- src/eulerian6C_geometry.cpp | 760 +++++++-------- src/eulerian6C_pseudoaxeengine.cpp | 797 ++++++++-------- src/fitparameter.cpp | 285 +++--- src/fitparameterlist.cpp | 267 +++--- src/geometry.cpp | 715 +++++++------- src/geometry_kappa.cpp | 110 +-- src/hklobject.cpp | 123 ++- src/holder.cpp | 606 ++++++------ src/interval.cpp | 663 +++++++------ src/kappa4C_vertical_diffractometer.cpp | 85 +- src/kappa4C_vertical_geometry.cpp | 663 +++++++------ src/kappa4C_vertical_pseudoaxeengine.cpp | 306 +++--- src/kappa6C_diffractometer.cpp | 62 +- src/kappa6C_geometry.cpp | 626 ++++++------- src/lattice.cpp | 1033 ++++++++++----------- src/mode.cpp | 31 +- src/modelist.cpp | 495 +++++----- src/mystring.cpp | 87 -- src/object.cpp | 423 ++++----- src/observer.cpp | 153 ++- src/parameter.cpp | 109 +-- src/parameterlist.cpp | 289 +++--- src/pseudoaxe.cpp | 379 ++++---- src/pseudoaxeengine.cpp | 59 +- src/pseudoaxeenginelist.cpp | 165 ++-- src/pseudoaxelist.cpp | 161 ++-- src/quaternion.cpp | 661 ++++++------- src/range.cpp | 363 ++++---- src/reflection.cpp | 267 +++--- src/reflection_monocrystal.cpp | 102 +- src/reflectionfactory.cpp | 71 +- src/reflectionlist.cpp | 545 +++++------ src/sample.cpp | 237 +++-- src/sample_monocrystal.cpp | 324 +++---- src/samplefactory.cpp | 79 +- src/samplelist.cpp | 646 ++++++------- src/source.cpp | 335 ++++--- src/strbuf.cpp | 27 + src/svector.cpp | 963 +++++++++---------- src/twoC_vertical_diffractometer.cpp | 73 +- src/twoC_vertical_geometry.cpp | 535 +++++------ src/twoC_vertical_mode.cpp | 146 ++- src/twoC_vertical_pseudoaxeengine.cpp | 758 +++++++-------- src/value.cpp | 312 +++---- test/SConscript | 1 - test/geometry_eulerian6C_test.cpp | 97 +- test/geometry_kappa4C_test.cpp | 38 +- test/interval_test.cpp | 2 +- test/mystring_test.cpp | 27 - test/mystring_test.h | 24 - test/pseudoaxe_kappa4C_test.cpp | 18 +- test/pseudoaxe_kappa6C_test.cpp | 16 +- 138 files changed, 17577 insertions(+), 18384 deletions(-) commit 2a965af9b7b06452ae4c87f51aa79936590fef4a Author: Frédéric-Emmanuel PICCA Date: Tue Sep 11 10:20:04 2007 +0200 * compile and all test pass on linux bouml/hkl/128258.diagram | 10 +- bouml/hkl/128642.diagram | 34 +- bouml/hkl/132482 | 34 +- bouml/hkl/133122 | 6 +- bouml/hkl/133378 | 154 ++++----- bouml/hkl/136834.bodies | 41 ++- bouml/hkl/136962.bodies | 76 +++-- bouml/hkl/hkl.prj | 2 +- include/hkl/eulerian6C_pseudoaxeengine.h | 38 ++- include/hkl/kappa4C_vertical_geometry.h | 2 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 1 + src/SConscript | 6 +- src/eulerian6C_pseudoaxeengine.cpp | 349 +++++++++----------- src/holder.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 14 +- test/SConscript | 10 +- test/axe_rotation_test.cpp | 6 +- test/diffractometer_eulerian4C_test.cpp | 10 +- test/diffractometer_kappa4C_test.cpp | 28 +- test/diffractometer_kappa6C_test.cpp | 28 +- test/diffractometer_test.cpp | 3 +- test/diffractometer_twoC_test.cpp | 4 +- test/fitparameter_test.cpp | 6 +- test/geometry_eulerian4C_test.cpp | 6 +- test/geometry_eulerian6C_test.cpp | 6 +- test/geometry_kappa4C_test.cpp | 22 +- test/geometry_kappa6C_test.cpp | 6 +- test/geometry_twoC_test.cpp | 6 +- test/hklobject_test.cpp | 6 +- test/holder_test.cpp | 2 +- test/interval_test.cpp | 3 +- test/lattice_test.cpp | 6 +- test/mode_eulerian4C_test.cpp | 12 +- test/mode_kappa4C_test.cpp | 26 +- test/mode_kappa4C_test.h | 10 +- test/mode_kappa6C_test.cpp | 27 +- test/mystring_test.cpp | 6 +- test/object_test.cpp | 3 +- test/parameter_test.cpp | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 36 +-- test/pseudoaxe_eulerian6C_test.cpp | 326 +++++++------------ test/pseudoaxe_kappa4C_test.cpp | 40 +-- test/pseudoaxe_kappa6C_test.cpp | 475 ++++++++++------------------ test/quaternion_test.cpp | 6 +- test/range_test.cpp | 3 +- test/sample_test.cpp | 24 +- test/source_test.cpp | 3 +- test/svecmat_test.cpp | 6 +- test/value_test.cpp | 3 +- 49 files changed, 819 insertions(+), 1120 deletions(-) commit ff95a17d5498b7475e0eda8700d787d98e07586f Author: Frédéric-Emmanuel PICCA Date: Wed Sep 5 17:16:04 2007 +0200 * add the Interval class and his test methods bouml/hkl/128060.bodies | 3 + bouml/hkl/128188.diagram | 24 +- bouml/hkl/129794.bodies | 343 ------------- bouml/hkl/130306.diagram | 44 +- bouml/hkl/132994 | 3 +- bouml/hkl/133122 | 85 +--- bouml/hkl/136706.bodies | 51 +- bouml/hkl/153474.bodies | 475 ++++++++++++++++++ bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 823 +++++++++++++++++++++---------- include/hkl/interval.h | 224 +++++++++ include/hkl/kappa4C_vertical_geometry.h | 65 +-- include/hkl/range.h | 125 ----- src/SConscript | 1 + src/interval.cpp | 705 ++++++++++++++++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 53 +- src/range.cpp | 467 ------------------ src/value.cpp | 3 + test/SConscript | 9 +- test/geometry_kappa4C_test.cpp | 11 +- test/interval_test.cpp | 423 ++++++++++++++++ test/interval_test.h | 44 ++ test/pseudoaxe_kappa4C_test.cpp | 56 +-- test/range_test.cpp | 347 ------------- test/range_test.h | 14 - 25 files changed, 2621 insertions(+), 1788 deletions(-) commit fe0cfa4c3f1c0b6d2ec642502713e32c88c872bb Author: Frédéric-Emmanuel PICCA Date: Fri Aug 31 18:01:38 2007 +0200 * add the Range computation and trigonometric methods. do not pass all tests. bouml/hkl/128188.diagram | 68 +- bouml/hkl/128770 | 14 +- bouml/hkl/129794.bodies | 291 +++++++ bouml/hkl/130050.bodies | 18 +- bouml/hkl/131458.diagram | 2 +- bouml/hkl/131842 | 14 +- bouml/hkl/131842.bodies | 8 +- bouml/hkl/132610.bodies | 8 +- bouml/hkl/132866.bodies | 8 +- bouml/hkl/132994 | 95 +-- bouml/hkl/132994.bodies | 8 +- bouml/hkl/133122 | 313 ++++++- bouml/hkl/133250 | 26 +- bouml/hkl/133634 | 28 +- bouml/hkl/134146 | 16 +- bouml/hkl/136706.bodies | 94 +- bouml/hkl/145026.bodies | 8 +- bouml/hkl/2.session | 11 +- bouml/hkl/generation_settings | 34 +- bouml/hkl/hkl.prj | 587 +++++++------ doc/Doxyfile | 1089 +++++++++++++++++++++++- include/hkl/constant.h | 79 +- include/hkl/derived_pseudoaxeengine.h | 8 +- include/hkl/kappa4C_vertical_diffractometer.h | 90 ++ include/hkl/kappa4C_vertical_geometry.h | 161 ++++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 15 - include/hkl/pseudoaxeengine.h | 2 +- include/hkl/range.h | 206 ++--- src/SConscript | 4 +- src/axe_rotation.cpp | 18 +- src/constant.cpp | 2 + src/eulerian4C_vertical_geometry.cpp | 8 +- src/eulerian6C_geometry.cpp | 8 +- src/kappa4C_vertical_geometry.cpp | 8 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 101 +-- src/kappa6C_geometry.cpp | 8 +- src/pseudoaxeengine.cpp | 2 +- src/range.cpp | 390 ++++++++- test/SConscript | 10 +- test/mode_kappa4C_test.cpp | 8 +- test/mode_kappa4C_test.h | 10 +- test/pseudoaxe_kappa4C_test.cpp | 446 ++++------ test/range_test.cpp | 347 ++++++++ test/range_test.h | 14 + 44 files changed, 3504 insertions(+), 1181 deletions(-) commit 613c3d1a7bee5ba89fbb71fb78d1c7c92431d50b Author: Frédéric-Emmanuel PICCA Date: Tue Aug 28 15:28:49 2007 +0200 * now the Eulerian4C::Vertical pseudoAxes are OK. bouml/hkl/128770 | 28 +- bouml/hkl/131202.bodies | 2 +- bouml/hkl/131970 | 72 ++-- bouml/hkl/132482 | 2 +- bouml/hkl/134786.bodies | 15 +- bouml/hkl/135042.bodies | 2 +- bouml/hkl/135170.bodies | 10 +- bouml/hkl/136194.bodies | 25 +- bouml/hkl/136322.bodies | 23 +- bouml/hkl/136450.bodies | 1 - bouml/hkl/136578.bodies | 316 +++++++--------- bouml/hkl/137090.bodies | 2 - bouml/hkl/145026.bodies | 2 - bouml/hkl/2.session | 3 +- bouml/hkl/hkl.prj | 2 +- include/hkl/derived_pseudoaxeengine.h | 20 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 21 +- include/hkl/pseudoaxeengine.h | 10 +- src/SConscript | 5 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 339 +++++++---------- src/hklobject.cpp | 2 +- src/pseudoaxe.cpp | 15 +- src/pseudoaxelist.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 51 +-- test/SConscript | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 425 ++++++---------------- 26 files changed, 491 insertions(+), 906 deletions(-) commit 0b0ca9a49df717ae85cee6652bff9b8ea7b44b2f Author: Frédéric-Emmanuel PICCA Date: Tue Aug 28 10:16:48 2007 +0200 * the twoC vertical pseudoAxes are working. bouml/hkl/131458.diagram | 4 +- bouml/hkl/132482 | 34 +-- bouml/hkl/134786.bodies | 50 ++-- bouml/hkl/134914.bodies | 5 +- bouml/hkl/135042.bodies | 8 - bouml/hkl/136194.bodies | 81 +++--- bouml/hkl/136322.bodies | 74 +++--- bouml/hkl/136450.bodies | 45 ++-- bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 72 ++--- include/hkl/pseudoaxe.h | 12 +- include/hkl/pseudoaxeengine.h | 3 +- include/hkl/pseudoaxelist.h | 2 - include/hkl/twoC_vertical_pseudoaxeengine.h | 8 +- src/axe.cpp | 3 +- src/pseudoaxe.cpp | 57 ++-- src/pseudoaxeengine.cpp | 6 +- src/pseudoaxelist.cpp | 13 - src/twoC_vertical_pseudoaxeengine.cpp | 220 ++++++++-------- test/SConscript | 3 +- test/affinement_simplex_test.cpp | 2 +- test/axe_rotation_test.cpp | 34 +-- test/diffractometer_eulerian4C_test.cpp | 196 +++++++------- test/diffractometer_kappa4C_test.cpp | 4 +- test/diffractometer_kappa6C_test.cpp | 12 +- test/diffractometer_test.cpp | 40 +-- test/diffractometer_twoC_test.cpp | 164 ++++++------ test/geometry_eulerian4C_test.cpp | 124 ++++----- test/geometry_eulerian6C_test.cpp | 70 ++--- test/geometry_kappa4C_test.cpp | 390 ++++++++++++++-------------- test/geometry_kappa6C_test.cpp | 302 ++++++++++----------- test/geometry_test.cpp | 8 +- test/geometry_twoC_test.cpp | 48 ++-- test/holderlist_test.cpp | 14 +- test/lattice_test.cpp | 2 +- test/mode_eulerian4C_test.cpp | 24 +- test/mode_kappa4C_test.cpp | 20 +- test/mode_kappa6C_test.cpp | 20 +- test/mode_twoC_test.cpp | 176 ++++++------- test/pseudoaxe_eulerian4C_test.cpp | 28 +- test/pseudoaxe_eulerian6C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.cpp | 22 +- test/pseudoaxe_kappa6C_test.cpp | 18 +- test/pseudoaxe_twoC_test.cpp | 265 ++++++++----------- test/reflectionlist_test.cpp | 22 +- test/sample_test.cpp | 284 ++++++++++---------- 46 files changed, 1459 insertions(+), 1550 deletions(-) commit ba51e6c59239bf0d5d520c5664a2ae3bf5b3f26b Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 15:20:59 2007 +0200 * now all mode Test pass. Remove a bug in the eulerian4C -> kappa6C Geometry conversion. Add the compute_HKL_consign to the Geometry class. bouml/hkl/129154.bodies | 16 ++-- bouml/hkl/131714.bodies | 38 ++++++++- bouml/hkl/132098 | 2 +- bouml/hkl/132610 | 2 +- bouml/hkl/132994.bodies | 6 +- bouml/hkl/133634 | 2 +- bouml/hkl/139522.bodies | 12 +-- bouml/hkl/139650.bodies | 12 +-- bouml/hkl/139778.bodies | 12 +-- bouml/hkl/139906.bodies | 12 +-- bouml/hkl/140034.bodies | 12 +-- bouml/hkl/140162.bodies | 8 +- bouml/hkl/140290.bodies | 6 +- bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 50 ++++++++--- include/hkl/geometry.h | 11 ++- src/eulerian4C_vertical_mode.cpp | 60 ++++++------- src/geometry.cpp | 50 ++++++++++- src/kappa6C_geometry.cpp | 6 +- src/mystring.cpp | 4 + src/object.cpp | 16 ++-- src/twoC_vertical_mode.cpp | 14 ++-- test/SConscript | 7 +- test/geometry_twoC_test.cpp | 11 ++- test/geometry_twoC_test.h | 4 +- test/mode_eulerian4C_test.cpp | 102 +++++++++++------------ test/mode_kappa4C_test.cpp | 114 ++++++++++++------------- test/mode_kappa6C_test.cpp | 158 +++++++++++++++++------------------ test/mode_twoC_test.cpp | 176 +++++++++++++++++++-------------------- 29 files changed, 527 insertions(+), 401 deletions(-) commit 16f9e073698e8fe0e2003974c8f21c16890d8972 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 11:51:52 2007 +0200 * added all Geometries test method for the consign. Now need to do the same for the modes. bouml/hkl/128514 | 2 +- bouml/hkl/131714.bodies | 90 +------- bouml/hkl/131842 | 44 +++- bouml/hkl/131842.bodies | 18 +- bouml/hkl/132354 | 36 ++- bouml/hkl/132482.bodies | 48 ++-- bouml/hkl/132610.bodies | 18 +- bouml/hkl/132866.bodies | 36 ++- bouml/hkl/132994.bodies | 24 +- bouml/hkl/133122 | 44 +++- bouml/hkl/133250 | 31 ++- bouml/hkl/133634 | 52 +++-- bouml/hkl/133890.bodies | 4 +- bouml/hkl/134146 | 2 +- bouml/hkl/145282.bodies | 2 +- bouml/hkl/148482.bodies | 2 +- bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 91 ++------ include/hkl/eulerian4C_vertical_geometry.h | 13 +- include/hkl/eulerian6C_geometry.h | 13 +- include/hkl/geometry.h | 34 +-- include/hkl/kappa4C_vertical_geometry.h | 19 +- include/hkl/kappa6C_geometry.h | 21 +- include/hkl/twoC_vertical_geometry.h | 11 +- src/axe.cpp | 2 +- src/eulerian4C_vertical_geometry.cpp | 36 +-- src/eulerian6C_geometry.cpp | 54 +++-- src/geometry.cpp | 139 ++--------- src/holder.cpp | 2 +- src/kappa4C_vertical_geometry.cpp | 42 ++-- src/kappa6C_geometry.cpp | 48 ++-- src/reflection_monocrystal.cpp | 4 +- src/twoC_vertical_geometry.cpp | 64 ++--- test/SConscript | 8 +- test/geometry_eulerian4C_test.cpp | 142 ++++++++---- test/geometry_eulerian4C_test.h | 12 +- test/geometry_eulerian6C_test.cpp | 151 ++++++++---- test/geometry_eulerian6C_test.h | 16 +- test/geometry_kappa4C_test.cpp | 359 ++++++++++++++++------------- test/geometry_kappa4C_test.h | 16 +- test/geometry_kappa6C_test.cpp | 245 +++++++++++--------- test/geometry_kappa6C_test.h | 12 +- test/geometry_twoC_test.cpp | 15 +- test/sample_test.cpp | 284 +++++++++++------------ 44 files changed, 1230 insertions(+), 1081 deletions(-) commit 52b0f1da87e2a53259023cf74e8e8616124843b6 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 16:46:59 2007 +0200 * Now Geometries are aware of the consign. The conversion method take into account the consign. I added the test methos to the TwoC geometry but not the rest of the geometries. So need to add them, and to remove the unwanted method of Geometry that where renamed : getQ -> get_Q and get_Q_consign getSampleQuaternion -> get_sample_quaternion, get_sample_quaternion_consign getSampleRotationMatrix -> get_sample_rotation_matrix, get_sample_rotation_matrix_consign bouml/hkl/128060.bodies | 2 + bouml/hkl/131714.bodies | 122 +++++++++++++++----- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 179 +++++++++++++++++++---------- bouml/hkl/132354 | 2 +- bouml/hkl/132482.bodies | 173 ++++++++++++++++++++--------- bouml/hkl/132610.bodies | 189 ++++++++++++++++++------------- bouml/hkl/132866.bodies | 177 +++++++++++++++++++---------- bouml/hkl/132994.bodies | 138 ++++++++++++++++------- bouml/hkl/133122 | 2 +- bouml/hkl/133250 | 2 +- bouml/hkl/133634 | 2 +- bouml/hkl/134146 | 2 +- bouml/hkl/145410.bodies | 12 ++ bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 196 +++++++++++++++++++++++++++++++- include/hkl/axe.h | 9 +- include/hkl/geometry.h | 61 ++++++++++ include/hkl/value.h | 2 + src/axe.cpp | 24 +++- src/eulerian4C_vertical_geometry.cpp | 183 ++++++++++++++++++++---------- src/eulerian6C_geometry.cpp | 181 +++++++++++++++++++----------- src/geometry.cpp | 210 ++++++++++++++++++++++++++++++----- src/kappa4C_vertical_geometry.cpp | 197 ++++++++++++++++++-------------- src/kappa6C_geometry.cpp | 144 ++++++++++++++++-------- src/twoC_vertical_geometry.cpp | 177 ++++++++++++++++++++--------- src/value.cpp | 7 ++ test/geometry_twoC_test.cpp | 96 ++++++++++------ test/geometry_twoC_test.h | 12 +- 29 files changed, 1809 insertions(+), 700 deletions(-) commit bf771c516b5b3c056c09b54bb27377d43d40e18c Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 14:21:00 2007 +0200 * add the consign to the Axe classes and the Holder. It is time to make the modifications in the Geometry class. bouml/hkl/130050.bodies | 61 ++++++++++++++++++++++---------- bouml/hkl/131330.diagram | 16 +++++---- bouml/hkl/131458.diagram | 10 +++--- bouml/hkl/134146 | 80 ++++++++++++++++++++++++++++++++++++++++- bouml/hkl/145282.bodies | 24 ++++++------- bouml/hkl/148482.bodies | 12 ++++++- bouml/hkl/2.session | 11 +++--- bouml/hkl/hkl.prj | 64 +++++++++++++++++++++++++++++++-- include/hkl/axe.h | 38 ++++++++++++++++---- include/hkl/axe_rotation.h | 27 ++++++++++++++ include/hkl/holder.h | 8 +++++ src/axe.cpp | 12 ++----- src/axe_rotation.cpp | 88 ++++++++++++++++++++++++++++++++++++---------- src/holder.cpp | 23 +++++++++++- test/axe_rotation_test.cpp | 45 ++++++++++++++++++++++++ test/holder_test.cpp | 2 ++ 16 files changed, 432 insertions(+), 89 deletions(-) commit 25e3d60cdd4543877880fca14213b18dcc494105 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 12:08:39 2007 +0200 * add the consign to the Range class begining of the pseudoAxes refactoring but before we must add the consign to the Axes. bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 6 +- bouml/hkl/128060.bodies | 14 +- bouml/hkl/128130.diagram | 30 +- bouml/hkl/128514.bodies | 68 ++--- bouml/hkl/128642 | 2 +- bouml/hkl/128770.bodies | 6 +- bouml/hkl/128898.bodies | 6 +- bouml/hkl/129154.bodies | 8 +- bouml/hkl/129794.bodies | 112 ++++--- bouml/hkl/129922.bodies | 1 + bouml/hkl/130178.bodies | 15 +- bouml/hkl/131074.bodies | 29 +- bouml/hkl/131330.bodies | 27 +- bouml/hkl/131586.bodies | 24 +- bouml/hkl/131970 | 2 +- bouml/hkl/132482 | 82 +----- bouml/hkl/132610.bodies | 4 +- bouml/hkl/132738.bodies | 4 +- bouml/hkl/133122 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 20 +- bouml/hkl/133634.bodies | 48 +-- bouml/hkl/134146.bodies | 10 +- bouml/hkl/134274.bodies | 4 +- bouml/hkl/134402.bodies | 8 +- bouml/hkl/134786.bodies | 38 ++- bouml/hkl/134914.bodies | 5 + bouml/hkl/135042.bodies | 4 +- bouml/hkl/135170.bodies | 8 +- bouml/hkl/135426.bodies | 22 +- bouml/hkl/136194.bodies | 34 +-- bouml/hkl/136322.bodies | 18 +- bouml/hkl/136450.bodies | 21 +- bouml/hkl/136578.bodies | 2 +- bouml/hkl/136834.bodies | 2 +- bouml/hkl/139138.bodies | 6 +- bouml/hkl/142466.bodies | 4 +- bouml/hkl/142978.bodies | 6 +- bouml/hkl/143362.bodies | 4 +- bouml/hkl/145410.bodies | 2 +- bouml/hkl/148482.bodies | 35 +-- bouml/hkl/149762.bodies | 196 ++++++------- bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 434 ++++++++++++++++------------ include/hkl/lattice.h | 1 + include/hkl/pseudoaxe.h | 25 +- include/hkl/pseudoaxeengine.h | 13 +- include/hkl/range.h | 127 ++++---- include/hkl/twoC_vertical_pseudoaxeengine.h | 17 -- src/SConscript | 15 +- src/fitparameter.cpp | 11 +- src/fitparameterlist.cpp | 1 + src/lattice.cpp | 25 +- src/object.cpp | 4 +- src/parameter.cpp | 3 +- src/parameterlist.cpp | 1 + src/pseudoaxe.cpp | 42 +-- src/pseudoaxeengine.cpp | 17 ++ src/range.cpp | 160 ++++++---- src/twoC_vertical_pseudoaxeengine.cpp | 106 +++---- src/value.cpp | 10 +- test/SConscript | 2 +- test/pseudoaxe_twoC_test.cpp | 43 +-- test/range_test.cpp | 16 +- 65 files changed, 1023 insertions(+), 1001 deletions(-) commit c61e9bc574bdd6a340b41e287acaa9a43d82a784 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 23 14:32:51 2007 +0200 * end of the Holder Refactoring. The holder have a pointer on the HolderList so it can access all others Holder and the axeList. Remove all using namespace std from the code, so we must put std:: in front of all methods of the std library. bouml/hkl/128002 | 14 +- bouml/hkl/128130.diagram | 36 +- bouml/hkl/128258.diagram | 28 +- bouml/hkl/128514 | 2 +- bouml/hkl/128642 | 10 +- bouml/hkl/128770 | 30 +- bouml/hkl/128770.diagram | 44 +- bouml/hkl/129922 | 2 +- bouml/hkl/131074 | 2 +- bouml/hkl/131970 | 10 +- bouml/hkl/132482 | 26 +- bouml/hkl/132738.diagram | 46 +- bouml/hkl/132994 | 10 +- bouml/hkl/133378 | 18 +- bouml/hkl/134018 | 37 +- bouml/hkl/134146 | 14 +- bouml/hkl/2.session | 10 +- bouml/hkl/cpp_includes | 6 +- bouml/hkl/generation_settings | 3 +- bouml/hkl/hkl.prj | 683 +++++++++++----------- include/hkl/HKLException.h | 2 - include/hkl/affinement.h | 15 +- include/hkl/affinementlist.h | 19 +- include/hkl/axe.h | 31 +- include/hkl/axe_rotation.h | 11 +- include/hkl/axefactory.h | 1 - include/hkl/derived_mode.h | 1 - include/hkl/derived_pseudoaxeengine.h | 32 +- include/hkl/diffractometer.h | 11 +- include/hkl/eulerian4C_vertical_mode.h | 1 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/eulerian6C_pseudoaxeengine.h | 12 +- include/hkl/fitparameter.h | 15 +- include/hkl/fitparameterlist.h | 20 +- include/hkl/geometry.h | 18 +- include/hkl/geometry_kappa.h | 11 +- include/hkl/hklobject.h | 15 +- include/hkl/holder.h | 163 +++++- include/hkl/holderlist.h | 139 ----- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/lattice.h | 14 +- include/hkl/mode.h | 1 - include/hkl/modelist.h | 19 +- include/hkl/mymap.h | 19 +- include/hkl/mystring.h | 9 +- include/hkl/object.h | 14 +- include/hkl/parameter.h | 15 +- include/hkl/parameterlist.h | 23 +- include/hkl/pseudoaxe.h | 10 +- include/hkl/pseudoaxeengine.h | 28 +- include/hkl/pseudoaxeenginelist.h | 10 +- include/hkl/pseudoaxelist.h | 18 +- include/hkl/quaternion.h | 13 +- include/hkl/range.h | 14 +- include/hkl/reflection.h | 10 +- include/hkl/reflectionlist.h | 14 +- include/hkl/sample.h | 11 +- include/hkl/sample_monocrystal.h | 9 +- include/hkl/samplefactory.h | 4 +- include/hkl/samplelist.h | 21 +- include/hkl/source.h | 14 +- include/hkl/svector.h | 32 +- include/hkl/twoC_vertical_mode.h | 1 - include/hkl/twoC_vertical_pseudoaxeengine.h | 16 +- include/hkl/value.h | 10 +- src/SConscript | 2 +- src/affinement.cpp | 10 +- src/affinementlist.cpp | 12 +- src/axe.cpp | 14 +- src/axe_rotation.cpp | 6 +- src/diffractometer.cpp | 10 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 6 +- src/eulerian6C_pseudoaxeengine.cpp | 10 +- src/fitparameter.cpp | 14 +- src/fitparameterlist.cpp | 32 +- src/geometry.cpp | 10 +- src/geometry_kappa.cpp | 10 +- src/hklobject.cpp | 6 +- src/holder.cpp | 237 +++++++- src/holderlist.cpp | 195 ------ src/kappa4C_vertical_geometry.cpp | 4 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 4 +- src/lattice.cpp | 6 +- src/modelist.cpp | 12 +- src/mystring.cpp | 18 +- src/object.cpp | 14 +- src/parameter.cpp | 6 +- src/parameterlist.cpp | 34 +- src/pseudoaxe.cpp | 16 +- src/pseudoaxeenginelist.cpp | 28 +- src/pseudoaxelist.cpp | 6 +- src/quaternion.cpp | 12 +- src/range.cpp | 12 +- src/reflection.cpp | 6 +- src/reflectionlist.cpp | 54 +- src/sample.cpp | 26 +- src/sample_monocrystal.cpp | 14 +- src/samplefactory.cpp | 4 +- src/samplelist.cpp | 14 +- src/source.cpp | 6 +- src/svector.cpp | 138 ++--- src/twoC_vertical_pseudoaxeengine.cpp | 20 +- src/value.cpp | 10 +- test/SConscript | 10 +- test/axe_rotation_test.cpp | 2 +- test/fitparameter_test.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 2 +- test/geometry_eulerian6C_test.cpp | 2 +- test/geometry_kappa4C_test.cpp | 2 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_twoC_test.cpp | 2 +- test/hklobject_test.cpp | 6 +- test/holder_test.cpp | 18 +- test/holder_test.h | 2 +- test/holderlist_test.cpp | 2 +- test/holderlist_test.h | 2 +- test/lattice_test.cpp | 2 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_kappa4C_test.cpp | 2 +- test/mode_kappa6C_test.cpp | 2 +- test/mode_twoC_test.cpp | 2 +- test/mystring_test.cpp | 2 +- test/object_test.cpp | 8 +- test/parameter_test.cpp | 2 +- test/pseudoaxe_twoC_test.cpp | 2 +- test/quaternion_test.cpp | 2 +- test/range_test.cpp | 2 +- test/reflection_test.cpp | 2 +- test/reflectionlist_test.cpp | 2 +- test/sample_test.cpp | 4 +- test/samplelist_test.cpp | 4 +- test/source_test.cpp | 2 +- test/svecmat_test.cpp | 4 +- test/value_test.cpp | 2 +- 134 files changed, 1485 insertions(+), 1568 deletions(-) commit cfc73d10502550c0199db91e59d91e97b77afc42 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 17:14:11 2007 +0200 * End of the geometry refactoring. (do not compile) Working on the PseudoAxes to set a correct min and max range. bouml/hkl/128188.diagram | 52 ++++--- bouml/hkl/128770 | 18 ++- bouml/hkl/129794.bodies | 12 +- bouml/hkl/131458.diagram | 48 ++---- bouml/hkl/131714.bodies | 8 +- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 21 +-- bouml/hkl/132482 | 2 +- bouml/hkl/132610.bodies | 62 +++----- bouml/hkl/132866.bodies | 20 ++- bouml/hkl/132994 | 2 +- bouml/hkl/132994.bodies | 129 ++++++++-------- bouml/hkl/133122 | 2 +- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133634 | 2 +- bouml/hkl/136194.bodies | 49 +++---- bouml/hkl/136322.bodies | 63 ++++---- bouml/hkl/136706.bodies | 57 ++----- bouml/hkl/136834.bodies | 89 +++++------ bouml/hkl/137090.bodies | 109 +++++++++----- bouml/hkl/144130.bodies | 16 +- bouml/hkl/144258.bodies | 24 +-- bouml/hkl/145026.bodies | 78 +++++----- bouml/hkl/145282.bodies | 16 +- bouml/hkl/148482.bodies | 4 +- bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 245 +++++++++++++++---------------- include/hkl/axe.h | 59 +++----- include/hkl/constant.h | 82 +++++++++++ include/hkl/derived_pseudoaxeengine.h | 182 ++++++++++++++--------- src/axe.cpp | 9 +- src/eulerian4C_vertical_geometry.cpp | 21 +-- src/eulerian6C_geometry.cpp | 20 ++- src/eulerian6C_pseudoaxeengine.cpp | 28 ++-- src/geometry.cpp | 8 +- src/holder.cpp | 4 +- src/kappa4C_vertical_geometry.cpp | 62 +++----- src/kappa4C_vertical_pseudoaxeengine.cpp | 57 ++----- src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 68 ++++----- src/pseudoaxe.cpp | 1 + src/range.cpp | 12 +- src/twoC_vertical_pseudoaxeengine.cpp | 151 ++++++++++--------- test/SConscript | 21 ++- test/affinement_simplex_test.cpp | 80 +++++----- test/affinement_simplex_test.h | 2 +- test/axe_rotation_test.cpp | 6 +- test/geometry_eulerian4C_test.cpp | 49 ++++--- test/geometry_eulerian4C_test.h | 2 +- test/geometry_eulerian6C_test.cpp | 137 ++++++++--------- test/geometry_eulerian6C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 60 ++++---- test/geometry_kappa6C_test.cpp | 55 +++---- test/geometry_twoC_test.cpp | 48 +++--- test/geometry_twoC_test.h | 2 +- test/holderlist_test.cpp | 4 +- test/mode_kappa4C_test.cpp | 126 ++++++++-------- test/mode_kappa4C_test.h | 2 +- test/mode_kappa6C_test.cpp | 170 ++++++++++----------- test/mode_kappa6C_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 154 +++++++++---------- test/pseudoaxe_eulerian4C_test.h | 2 +- test/pseudoaxe_eulerian6C_test.cpp | 133 ++++++++--------- test/pseudoaxe_eulerian6C_test.h | 2 +- test/pseudoaxe_kappa4C_test.cpp | 211 +++++++++++++------------- test/pseudoaxe_kappa4C_test.h | 4 +- test/pseudoaxe_kappa6C_test.cpp | 183 ++++++++++++----------- test/pseudoaxe_kappa6C_test.h | 10 +- test/pseudoaxe_twoC_test.cpp | 119 +++++++++------ test/pseudoaxe_twoC_test.h | 2 +- test/reflection_test.cpp | 34 +++-- test/reflection_test.h | 2 +- test/sample_test.cpp | 54 +++---- 74 files changed, 1863 insertions(+), 1727 deletions(-) commit 58c71caa93f3fe82caf53f45934bba4545f52d2d Author: Frédéric-Emmanuel PICCA Date: Sun Aug 19 19:11:53 2007 +0200 * ready to deal with the Geometry Assignation problem. bouml/hkl/128770 | 6 +-- bouml/hkl/2.session | 6 +-- include/hkl/derived_pseudoaxeengine.h | 24 +++++----- src/eulerian6C_diffractometer.cpp | 16 +++---- src/eulerian6C_pseudoaxeengine.cpp | 85 ++++++++++++++++++----------------- src/kappa6C_diffractometer.cpp | 24 +++++----- src/kappa6C_geometry.cpp | 57 ++++++++++++++--------- test/geometry_twoC_test.cpp | 6 ++- 8 files changed, 124 insertions(+), 100 deletions(-) commit 2f65d53e5bdfd92d92710ea37c848d510c4fcae5 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 17 18:04:35 2007 +0200 * close to the end of the refactoring of the geometry. (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128060.bodies | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/129922.diagram | 33 ++- bouml/hkl/130050.bodies | 15 +- bouml/hkl/131330.diagram | 34 +-- bouml/hkl/131458.diagram | 34 +-- bouml/hkl/131842 | 6 +- bouml/hkl/131842.bodies | 91 ++++---- bouml/hkl/131970 | 2 +- bouml/hkl/132354 | 2 +- bouml/hkl/132482.bodies | 17 +- bouml/hkl/132610.bodies | 51 +++-- bouml/hkl/132738.diagram | 50 +++-- bouml/hkl/132866.bodies | 61 ++++-- bouml/hkl/133122 | 42 ++-- bouml/hkl/133250 | 9 +- bouml/hkl/133634 | 46 ++-- bouml/hkl/134146 | 21 +- bouml/hkl/136578.bodies | 4 +- bouml/hkl/137090.bodies | 2 +- bouml/hkl/143490.bodies | 10 +- bouml/hkl/143618.bodies | 10 +- bouml/hkl/143746.bodies | 18 +- bouml/hkl/143874.bodies | 20 +- bouml/hkl/145026.bodies | 2 +- bouml/hkl/145282.bodies | 6 - bouml/hkl/145410.bodies | 44 +--- bouml/hkl/148482.bodies | 64 +----- bouml/hkl/149762.bodies | 38 +++- bouml/hkl/150914.bodies | 13 ++ bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 329 +++++++++++++++++++++------- include/hkl/axe.h | 36 ++- include/hkl/axe_rotation.h | 13 +- include/hkl/axefactory.h | 30 +++ include/hkl/derived_pseudoaxeengine.h | 4 +- include/hkl/diffractometer.h | 21 +- include/hkl/holder.h | 87 +++++++- include/hkl/holderlist.h | 3 + include/hkl/kappa4C_vertical_geometry.h | 18 +- include/hkl/kappa6C_geometry.h | 22 +- src/HKLException.cpp | 2 +- src/SConscript | 14 +- src/axe.cpp | 124 ++--------- src/axe_rotation.cpp | 24 +- src/axefactory.cpp | 34 +++ src/eulerian4C_vertical_diffractometer.cpp | 18 +- src/eulerian4C_vertical_geometry.cpp | 94 ++++---- src/eulerian4C_vertical_pseudoaxeengine.cpp | 4 +- src/eulerian6C_geometry.cpp | 65 ++++-- src/holder.cpp | 68 +----- src/holderlist.cpp | 40 +++- src/kappa4C_vertical_diffractometer.cpp | 22 +- src/kappa4C_vertical_geometry.cpp | 69 +++--- src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 26 ++- src/twoC_vertical_diffractometer.cpp | 10 +- src/twoC_vertical_geometry.cpp | 16 +- src/value.cpp | 2 +- test/SConscript | 12 +- test/axe_test.cpp | 97 -------- test/axe_test.h | 33 --- test/geometry_test.cpp | 45 +--- test/geometry_test.h | 2 - test/holder_test.cpp | 52 ++--- test/holderlist_test.cpp | 28 ++- test/holderlist_test.h | 5 + 68 files changed, 1184 insertions(+), 1050 deletions(-) commit d6a66ab0ddfc6441c9acf9f77b2fdf2d647be437 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 14 17:51:16 2007 +0200 * start working on the HolderList and its TestCase The holderList must properly manage its memory. The serialization via from/to Stream must be tune. bouml/hkl/128060.bodies | 2 +- bouml/hkl/130050.bodies | 73 ++++++++-------- bouml/hkl/132738.diagram | 18 ++-- bouml/hkl/134146 | 2 +- bouml/hkl/145410.bodies | 3 +- bouml/hkl/148482.bodies | 27 +++--- bouml/hkl/149762.bodies | 67 ++++++++++++--- bouml/hkl/2.session | 12 +-- bouml/hkl/hkl.prj | 218 ++++++++++++++++++++++++++++------------------- include/hkl/holder.h | 6 +- include/hkl/holderlist.h | 24 ++++++ src/axe_rotation.cpp | 139 +++++++++++++++--------------- src/holder.cpp | 32 +++---- src/holderlist.cpp | 86 ++++++++++++++++--- src/value.cpp | 2 +- test/SConscript | 3 +- test/holder_test.cpp | 6 +- test/holderlist_test.cpp | 74 ++++++++++++++++ test/holderlist_test.h | 31 +++++++ 19 files changed, 551 insertions(+), 274 deletions(-) commit b5aa59ffae74482079843b69615288fa796eb654 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 14 10:39:18 2007 +0200 * Holder is working Add the test case of the Holder class. bouml/hkl/132738.diagram | 30 +++---- bouml/hkl/145410.bodies | 85 +++++++++++-------- bouml/hkl/148482.bodies | 22 ++++- bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 14 +++- include/hkl/axe.h | 9 ++ src/axe.cpp | 5 +- src/axe_rotation.cpp | 210 ++++++++++++++++++++++++----------------------- src/holder.cpp | 1 + test/holder_test.cpp | 1 - 10 files changed, 223 insertions(+), 161 deletions(-) commit 70de209fa1673f9086ccd57e1740a08f1e809336 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 13 22:36:15 2007 +0200 * start adding test case of the holder class. bouml/hkl/128002 | 13 +- bouml/hkl/128770 | 2 +- bouml/hkl/130050.bodies | 3 + bouml/hkl/131714.bodies | 95 ++------- bouml/hkl/132354 | 6 +- bouml/hkl/132482.bodies | 34 ++-- bouml/hkl/132738.diagram | 38 ++-- bouml/hkl/133122.bodies | 12 +- bouml/hkl/133378.bodies | 6 +- bouml/hkl/134146 | 2 +- bouml/hkl/137090.bodies | 12 +- bouml/hkl/145026.bodies | 70 +++---- bouml/hkl/145410.bodies | 20 +- bouml/hkl/148482.bodies | 72 +++++-- bouml/hkl/149762.bodies | 32 ++- bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 358 ++++++++++++++++++++++++---------- include/hkl/axe.h | 13 +- include/hkl/derived_pseudoaxeengine.h | 82 ++++---- include/hkl/geometry.h | 64 +++--- include/hkl/geometry_kappa.h | 2 +- include/hkl/holder.h | 39 +++- include/hkl/holderlist.h | 88 ++++++++- src/HKLException.cpp | 2 +- src/SConscript | 24 +-- src/axe.cpp | 124 +++++++----- src/axe_rotation.cpp | 2 + src/geometry.cpp | 116 ++--------- src/geometry_kappa.cpp | 6 +- src/holder.cpp | 125 +++++++++--- src/holderlist.cpp | 70 ++++++- src/reflection.cpp | 12 +- src/sample.cpp | 6 +- src/twoC_vertical_geometry.cpp | 38 ++-- test/SConscript | 3 +- test/geometry_test.cpp | 4 +- test/holder_test.cpp | 100 ++++++++++ test/holder_test.h | 35 ++++ 38 files changed, 1117 insertions(+), 621 deletions(-) commit f773c89502eda9d614357202334ab18dc4da56d1 Author: Frédéric-Emmanuel PICCA Date: Sun Aug 12 23:43:17 2007 +0200 * add all the .h autogenerated files include/hkl/HKLException.h | 74 +++ include/hkl/HolderList.h | 29 ++ include/hkl/affinement.h | 106 ++++ include/hkl/affinement_simplex.h | 42 ++ include/hkl/affinementlist.h | 160 ++++++ include/hkl/axe.h | 268 ++++++++++ include/hkl/axe_rotation.h | 126 +++++ include/hkl/constant.h | 34 ++ include/hkl/convenience.h | 37 ++ include/hkl/derived_mode.h | 93 ++++ include/hkl/derived_pseudoaxeengine.h | 581 ++++++++++++++++++++++ include/hkl/diffractometer.h | 324 ++++++++++++ include/hkl/diffractometerfactory.h | 43 ++ include/hkl/eulerian4C_vertical_diffractometer.h | 29 ++ include/hkl/eulerian4C_vertical_geometry.h | 149 ++++++ include/hkl/eulerian4C_vertical_mode.h | 131 +++++ include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 164 ++++++ include/hkl/eulerian6C_diffractometer.h | 57 +++ include/hkl/eulerian6C_geometry.h | 177 +++++++ include/hkl/eulerian6C_mode.h | 26 + include/hkl/eulerian6C_pseudoaxeengine.h | 256 ++++++++++ include/hkl/fitparameter.h | 131 +++++ include/hkl/fitparameterlist.h | 147 ++++++ include/hkl/geometry.h | 210 ++++++++ include/hkl/geometry_kappa.h | 59 +++ include/hkl/hklobject.h | 75 +++ include/hkl/holder.h | 66 +++ include/hkl/holderlist.h | 32 ++ include/hkl/kappa4C_vertical_diffractometer.h | 29 ++ include/hkl/kappa4C_vertical_geometry.h | 149 ++++++ include/hkl/kappa4C_vertical_mode.h | 30 ++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 163 ++++++ include/hkl/kappa6C_diffractometer.h | 25 + include/hkl/kappa6C_geometry.h | 177 +++++++ include/hkl/kappa6C_mode.h | 26 + include/hkl/kappa6C_pseudoaxeengine.h | 27 + include/hkl/lattice.h | 239 +++++++++ include/hkl/mode.h | 199 ++++++++ include/hkl/modelist.h | 160 ++++++ include/hkl/mymap.h | 307 ++++++++++++ include/hkl/mystring.h | 55 ++ include/hkl/object.h | 169 +++++++ include/hkl/observer.h | 66 +++ include/hkl/parameter.h | 72 +++ include/hkl/parameterlist.h | 116 +++++ include/hkl/portability.h | 5 + include/hkl/pseudoaxe.h | 151 ++++++ include/hkl/pseudoaxeengine.h | 381 ++++++++++++++ include/hkl/pseudoaxeenginelist.h | 67 +++ include/hkl/pseudoaxelist.h | 80 +++ include/hkl/quaternion.h | 203 ++++++++ include/hkl/range.h | 315 ++++++++++++ include/hkl/reflection.h | 187 +++++++ include/hkl/reflection_monocrystal.h | 59 +++ include/hkl/reflectionfactory.h | 39 ++ include/hkl/reflectionlist.h | 156 ++++++ include/hkl/sample.h | 133 +++++ include/hkl/sample_monocrystal.h | 134 +++++ include/hkl/samplefactory.h | 42 ++ include/hkl/samplelist.h | 183 +++++++ include/hkl/source.h | 135 +++++ include/hkl/svector.h | 185 +++++++ include/hkl/twoC_vertical_diffractometer.h | 33 ++ include/hkl/twoC_vertical_geometry.h | 117 +++++ include/hkl/twoC_vertical_mode.h | 63 +++ include/hkl/twoC_vertical_pseudoaxeengine.h | 190 +++++++ include/hkl/value.h | 138 +++++ 67 files changed, 8631 insertions(+) commit dab80e547f3adaf24cc146727b7dc0e21cde499d Author: Frédéric-Emmanuel PICCA Date: Sun Aug 12 23:41:36 2007 +0200 * redo the refoactoring work and add the autogenerates files. bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 ++++++------ bouml/hkl/128060.bodies | 78 ++-- bouml/hkl/128182.bodies | 50 +- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 12 +- bouml/hkl/128514.bodies | 356 +++++++-------- bouml/hkl/128642 | 12 +- bouml/hkl/128770 | 14 +- bouml/hkl/128770.bodies | 270 +++++------ bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++-- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +- bouml/hkl/129794.bodies | 222 ++++----- bouml/hkl/129922 | 14 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 80 ++-- bouml/hkl/130178.bodies | 76 ++-- bouml/hkl/130306.bodies | 272 +++++------ bouml/hkl/131074 | 14 +- bouml/hkl/131074.bodies | 146 +++--- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 +++--- bouml/hkl/131458.bodies | 140 +++--- bouml/hkl/131458.diagram | 16 +- bouml/hkl/131586.bodies | 630 +++++++++++++------------- bouml/hkl/131714.bodies | 445 ++++++++---------- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 206 ++++----- bouml/hkl/131970 | 14 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 2 +- bouml/hkl/132482 | 14 +- bouml/hkl/132482.bodies | 155 ++++--- bouml/hkl/132610 | 16 +- bouml/hkl/132610.bodies | 270 +++++------ bouml/hkl/132738.bodies | 20 +- bouml/hkl/132738.diagram | 12 + bouml/hkl/132866.bodies | 192 ++++---- bouml/hkl/132994 | 14 +- bouml/hkl/132994.bodies | 230 +++++----- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 ++-- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 ++++----- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146 | 2 +- bouml/hkl/134146.bodies | 302 ++++++------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++------- bouml/hkl/134786.bodies | 104 ++--- bouml/hkl/135042.bodies | 96 ++-- bouml/hkl/135170.bodies | 42 +- bouml/hkl/135426.bodies | 126 +++--- bouml/hkl/136194.bodies | 178 ++++---- bouml/hkl/136322.bodies | 168 +++---- bouml/hkl/136450.bodies | 116 ++--- bouml/hkl/136578.bodies | 486 ++++++++++---------- bouml/hkl/136706.bodies | 262 +++++------ bouml/hkl/136834.bodies | 448 +++++++++--------- bouml/hkl/136962.bodies | 220 ++++----- bouml/hkl/137090.bodies | 134 +++--- bouml/hkl/138882.bodies | 58 +-- bouml/hkl/139138.bodies | 238 +++++----- bouml/hkl/139522.bodies | 58 +-- bouml/hkl/139650.bodies | 68 +-- bouml/hkl/139778.bodies | 64 +-- bouml/hkl/139906.bodies | 66 +-- bouml/hkl/140034.bodies | 64 +-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +- bouml/hkl/142594.bodies | 496 ++++++++++---------- bouml/hkl/142978.bodies | 236 +++++----- bouml/hkl/143362.bodies | 70 +-- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 +- bouml/hkl/145026.bodies | 134 +++--- bouml/hkl/145282.bodies | 39 +- bouml/hkl/145410.bodies | 296 ++++++------ bouml/hkl/148482.bodies | 113 +++-- bouml/hkl/149762.bodies | 20 + bouml/hkl/2.session | 14 +- bouml/hkl/hkl.prj | 109 ++++- src/HKLException.cpp | 161 +++++++ src/SConscript | 1 + src/affinement.cpp | 102 +++++ src/affinement_simplex.cpp | 330 ++++++++++++++ src/affinementlist.cpp | 324 +++++++++++++ src/axe.cpp | 440 ++++++++++++++++++ src/axe_rotation.cpp | 162 +++++++ src/constant.cpp | 21 + src/convenience.cpp | 51 +++ src/diffractometer.cpp | 100 ++++ src/diffractometerfactory.cpp | 59 +++ src/eulerian4C_vertical_diffractometer.cpp | 47 ++ src/eulerian4C_vertical_geometry.cpp | 303 +++++++++++++ src/eulerian4C_vertical_mode.cpp | 317 +++++++++++++ src/eulerian4C_vertical_pseudoaxeengine.cpp | 355 +++++++++++++++ src/eulerian6C_diffractometer.cpp | 37 ++ src/eulerian6C_geometry.cpp | 336 ++++++++++++++ src/eulerian6C_pseudoaxeengine.cpp | 515 +++++++++++++++++++++ src/fitparameter.cpp | 177 ++++++++ src/fitparameterlist.cpp | 195 ++++++++ src/geometry.cpp | 391 ++++++++++++++++ src/geometry_kappa.cpp | 69 +++ src/hklobject.cpp | 86 ++++ src/holder.cpp | 139 ++++++ src/holderlist.cpp | 47 ++ src/kappa4C_vertical_diffractometer.cpp | 48 ++ src/kappa4C_vertical_geometry.cpp | 336 ++++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 226 ++++++++++ src/kappa6C_diffractometer.cpp | 43 ++ src/kappa6C_geometry.cpp | 355 +++++++++++++++ src/lattice.cpp | 600 ++++++++++++++++++++++++ src/mode.cpp | 26 ++ src/modelist.cpp | 326 ++++++++++++++ src/mystring.cpp | 83 ++++ src/object.cpp | 257 +++++++++++ src/observer.cpp | 108 +++++ src/parameter.cpp | 79 ++++ src/parameterlist.cpp | 204 +++++++++ src/pseudoaxe.cpp | 245 ++++++++++ src/pseudoaxeengine.cpp | 23 + src/pseudoaxeenginelist.cpp | 134 ++++++ src/pseudoaxelist.cpp | 139 ++++++ src/quaternion.cpp | 431 ++++++++++++++++++ src/range.cpp | 306 +++++++++++++ src/reflection.cpp | 178 ++++++++ src/reflection_monocrystal.cpp | 61 +++ src/reflectionfactory.cpp | 45 ++ src/reflectionlist.cpp | 353 +++++++++++++++ src/sample.cpp | 213 +++++++++ src/sample_monocrystal.cpp | 319 +++++++++++++ src/samplefactory.cpp | 53 +++ src/samplelist.cpp | 405 +++++++++++++++++ src/source.cpp | 196 ++++++++ src/svector.cpp | 677 ++++++++++++++++++++++++++++ src/twoC_vertical_diffractometer.cpp | 44 ++ src/twoC_vertical_geometry.cpp | 232 ++++++++++ src/twoC_vertical_mode.cpp | 92 ++++ src/twoC_vertical_pseudoaxeengine.cpp | 468 +++++++++++++++++++ src/value.cpp | 191 ++++++++ 156 files changed, 17675 insertions(+), 5375 deletions(-) commit d3f99bbaec09cac0adea16d6aab2588607e6e0bd Author: Frédéric-Emmanuel PICCA Date: Fri Aug 10 18:06:03 2007 +0200 * refactoring of the Axe class and the Geometry not yet ok but it compiles. SConstruct | 3 +- bouml/hkl/128002 | 23 +- bouml/hkl/128002.diagram | 48 +- bouml/hkl/128130.diagram | 33 +- bouml/hkl/128188.diagram | 126 +++-- bouml/hkl/128386.diagram | 58 +- bouml/hkl/129154.diagram | 21 +- bouml/hkl/129794.bodies | 17 - bouml/hkl/130050.bodies | 43 +- bouml/hkl/130050.diagram | 63 ++- bouml/hkl/130946.diagram | 64 ++- bouml/hkl/131074.diagram | 49 +- bouml/hkl/131458.diagram | 62 +-- bouml/hkl/131714.bodies | 36 +- bouml/hkl/131842 | 147 +++--- bouml/hkl/131842.bodies | 55 +- bouml/hkl/132098 | 14 +- bouml/hkl/132354 | 26 +- bouml/hkl/132482.bodies | 28 +- bouml/hkl/132610 | 6 +- bouml/hkl/132610.bodies | 9 - bouml/hkl/132738.diagram | 31 ++ bouml/hkl/132866.bodies | 9 - bouml/hkl/132994.bodies | 9 - bouml/hkl/133122 | 37 +- bouml/hkl/133250 | 45 +- bouml/hkl/133378 | 22 +- bouml/hkl/133634 | 45 +- bouml/hkl/134018 | 40 +- bouml/hkl/134146 | 151 +++--- bouml/hkl/145282.bodies | 14 +- bouml/hkl/145410.bodies | 75 ++- bouml/hkl/148482.bodies | 43 ++ bouml/hkl/2.session | 17 +- bouml/hkl/cpp_includes | 6 +- bouml/hkl/generation_settings | 8 +- bouml/hkl/hkl.prj | 902 ++++++++++++++++++++------------ config-linux2.py | 1 - src/SConscript | 1 + test/SConscript | 12 +- test/affinement_simplex_test.cpp | 40 +- test/axe_rotation_test.cpp | 91 ++++ test/axe_rotation_test.h | 33 ++ test/axe_test.cpp | 95 ++-- test/axe_test.h | 10 +- test/diffractometer_eulerian4C_test.cpp | 246 ++++----- test/diffractometer_eulerian4C_test.h | 3 - test/diffractometer_kappa4C_test.cpp | 40 +- test/diffractometer_kappa6C_test.cpp | 60 +-- test/diffractometer_twoC_test.cpp | 20 +- test/geometry_eulerian4C_test.cpp | 116 ++-- test/geometry_eulerian4C_test.h | 8 +- test/geometry_eulerian6C_test.cpp | 82 ++- test/geometry_eulerian6C_test.h | 6 +- test/geometry_kappa4C_test.cpp | 72 ++- test/geometry_kappa4C_test.h | 6 +- test/geometry_kappa6C_test.cpp | 64 +-- test/geometry_kappa6C_test.h | 6 +- test/geometry_test.cpp | 54 +- test/geometry_test.h | 2 - test/geometry_twoC_test.cpp | 47 +- test/geometry_twoC_test.h | 6 +- test/pseudoaxe_twoC_test.cpp | 24 +- 63 files changed, 2002 insertions(+), 1528 deletions(-) commit 34cce5bc1f4447713517e1a750f391f0e6ff9cac Author: Frédéric-Emmanuel PICCA Date: Fri Jun 8 17:59:06 2007 +0200 * start refactoring the Geometry (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 294 +++++++++--------- bouml/hkl/128002.diagram | 70 ++--- bouml/hkl/128060.bodies | 78 ++--- bouml/hkl/128182.bodies | 52 ++-- bouml/hkl/128310.bodies | 18 +- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++----------- bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/128770.bodies | 267 +++++++++-------- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 40 +-- bouml/hkl/129794.bodies | 256 ++++++++-------- bouml/hkl/129922 | 2 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 105 ++++--- bouml/hkl/130178.bodies | 76 ++--- bouml/hkl/130306.bodies | 242 +++++++-------- bouml/hkl/130306.diagram | 2 +- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 140 ++++----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 122 ++++---- bouml/hkl/131330.diagram | 28 +- bouml/hkl/131458.bodies | 132 ++++---- bouml/hkl/131458.diagram | 28 +- bouml/hkl/131586.bodies | 574 +++++++++++++++++------------------ bouml/hkl/131714.bodies | 592 +++++++++++++++++------------------- bouml/hkl/131842 | 26 +- bouml/hkl/131842.bodies | 194 ++++++------ bouml/hkl/131970 | 10 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 21 +- bouml/hkl/132482 | 12 +- bouml/hkl/132482.bodies | 163 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 258 ++++++++-------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 232 +++++++-------- bouml/hkl/132994 | 8 +- bouml/hkl/132994.bodies | 260 ++++++++-------- bouml/hkl/133122 | 26 +- bouml/hkl/133122.bodies | 76 ++--- bouml/hkl/133250 | 38 +-- bouml/hkl/133378 | 10 +- bouml/hkl/133378.bodies | 190 ++++++------ bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 38 +-- bouml/hkl/133634.bodies | 296 +++++++++--------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146 | 184 +++++++++--- bouml/hkl/134146.bodies | 288 +++++++++--------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 314 +++++++++---------- bouml/hkl/134786.bodies | 104 +++---- bouml/hkl/135042.bodies | 98 +++--- bouml/hkl/135170.bodies | 42 +-- bouml/hkl/135426.bodies | 116 ++++---- bouml/hkl/136194.bodies | 172 +++++------ bouml/hkl/136322.bodies | 162 +++++----- bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 406 ++++++++++++------------- bouml/hkl/136706.bodies | 246 +++++++-------- bouml/hkl/136834.bodies | 390 ++++++++++++------------ bouml/hkl/136962.bodies | 218 +++++++------- bouml/hkl/137090.bodies | 134 ++++----- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 220 +++++++------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++--- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +-- bouml/hkl/142594.bodies | 460 ++++++++++++++-------------- bouml/hkl/142978.bodies | 218 +++++++------- bouml/hkl/143362.bodies | 70 ++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +-- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +-- bouml/hkl/144386.bodies | 46 +-- bouml/hkl/145026.bodies | 134 ++++----- bouml/hkl/145282.bodies | 57 ++-- bouml/hkl/145410.bodies | 117 ++++++++ bouml/hkl/2.session | 15 +- bouml/hkl/generation_settings | 17 +- bouml/hkl/hkl.prj | 679 +++++++++++++++++++++++++----------------- 98 files changed, 5774 insertions(+), 5463 deletions(-) commit 414ae42cd4a668395ea785316ce38c4fb4fb1aa5 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 21:58:21 2007 +0200 * start refactoring of the Axes (do not compile) TODO | 8 +- bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 +++++++++---------- bouml/hkl/128060.bodies | 78 ++--- bouml/hkl/128182.bodies | 50 ++-- bouml/hkl/128188.diagram | 50 ++-- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++------------ bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/128770.bodies | 262 ++++++++--------- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +-- bouml/hkl/129794.bodies | 256 ++++++++--------- bouml/hkl/129922 | 2 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 94 +++--- bouml/hkl/130178.bodies | 76 ++--- bouml/hkl/130306.bodies | 272 +++++++++--------- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 146 +++++----- bouml/hkl/131202 | 61 ---- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 ++++----- bouml/hkl/131330.diagram | 15 + bouml/hkl/131458.bodies | 140 ++++----- bouml/hkl/131458.diagram | 55 ++++ bouml/hkl/131586.bodies | 630 ++++++++++++++++++++-------------------- bouml/hkl/131714.bodies | 648 +++++++++++++++++++++--------------------- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 184 ++++++------ bouml/hkl/131970 | 2 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 14 +- bouml/hkl/132482 | 2 +- bouml/hkl/132482.bodies | 148 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 286 +++++++++---------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 +++++++------- bouml/hkl/132994 | 2 +- bouml/hkl/132994.bodies | 246 ++++++++-------- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 ++--- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 +++++++------- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++++++----------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134018 | 9 +- bouml/hkl/134146 | 273 ++++++++++++++++++ bouml/hkl/134146.bodies | 302 ++++++++++---------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++++----------- bouml/hkl/134786.bodies | 104 +++---- bouml/hkl/135042.bodies | 96 +++---- bouml/hkl/135170.bodies | 42 +-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 ++++++------ bouml/hkl/136322.bodies | 168 +++++------ bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 486 +++++++++++++++---------------- bouml/hkl/136706.bodies | 262 ++++++++--------- bouml/hkl/136834.bodies | 446 ++++++++++++++--------------- bouml/hkl/136962.bodies | 220 +++++++------- bouml/hkl/137090.bodies | 134 ++++----- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 ++++++++-------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++--- bouml/hkl/139778.bodies | 64 ++--- bouml/hkl/139906.bodies | 66 ++--- bouml/hkl/140034.bodies | 64 ++--- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +-- bouml/hkl/142594.bodies | 496 ++++++++++++++++---------------- bouml/hkl/142978.bodies | 236 +++++++-------- bouml/hkl/143362.bodies | 70 ++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +-- bouml/hkl/143874.bodies | 34 +-- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +-- bouml/hkl/144386.bodies | 46 +-- bouml/hkl/145026.bodies | 134 ++++----- bouml/hkl/145282.bodies | 41 +++ bouml/hkl/2.session | 17 +- bouml/hkl/generation_settings | 8 +- bouml/hkl/hkl.prj | 370 ++++++++++++++++-------- src/SConscript | 1 + 100 files changed, 5852 insertions(+), 5390 deletions(-) commit 45d2357ae3f6311fe10716bc89413bf2bca35e27 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 17:11:08 2007 +0200 * now PseudoAxeEngineWithSample is working. bouml/hkl/128002 | 8 +- bouml/hkl/128002.bodies | 298 ++++++++--------- bouml/hkl/128060.bodies | 78 ++--- bouml/hkl/128182.bodies | 50 +-- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 8 +- bouml/hkl/128514.bodies | 356 ++++++++++---------- bouml/hkl/128514.diagram | 41 ++- bouml/hkl/128642 | 8 +- bouml/hkl/128642.diagram | 35 +- bouml/hkl/128770 | 12 +- bouml/hkl/128770.bodies | 262 +++++++-------- bouml/hkl/128770.diagram | 18 +- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +-- bouml/hkl/129794.bodies | 256 +++++++-------- bouml/hkl/129922 | 10 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 86 ++--- bouml/hkl/130178.bodies | 76 ++--- bouml/hkl/130306.bodies | 272 ++++++++-------- bouml/hkl/130818.diagram | 31 +- bouml/hkl/131074 | 10 +- bouml/hkl/131074.bodies | 146 ++++----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 ++++---- bouml/hkl/131458.bodies | 140 ++++---- bouml/hkl/131586.bodies | 630 ++++++++++++++++++------------------ bouml/hkl/131714.bodies | 648 ++++++++++++++++++------------------- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 184 +++++------ bouml/hkl/131970 | 2 +- bouml/hkl/132098 | 10 +- bouml/hkl/132354 | 10 +- bouml/hkl/132482 | 10 +- bouml/hkl/132482.bodies | 148 ++++----- bouml/hkl/132610 | 10 +- bouml/hkl/132610.bodies | 286 ++++++++-------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 ++++++------ bouml/hkl/132994 | 18 +- bouml/hkl/132994.bodies | 246 +++++++------- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 ++--- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 22 +- bouml/hkl/133378.bodies | 210 ++++++------ bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++++---------- bouml/hkl/133762 | 22 +- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146.bodies | 302 ++++++++--------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++---------- bouml/hkl/134786.bodies | 104 +++--- bouml/hkl/135042.bodies | 96 +++--- bouml/hkl/135170.bodies | 42 +-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 +++++----- bouml/hkl/136322.bodies | 168 +++++----- bouml/hkl/136450.bodies | 116 +++---- bouml/hkl/136578.bodies | 488 ++++++++++++++-------------- bouml/hkl/136706.bodies | 262 +++++++-------- bouml/hkl/136834.bodies | 446 ++++++++++++------------- bouml/hkl/136962.bodies | 220 ++++++------- bouml/hkl/137090.bodies | 134 ++++---- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 +++++++------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++-- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +-- bouml/hkl/142594.bodies | 496 ++++++++++++++-------------- bouml/hkl/142978.bodies | 236 +++++++------- bouml/hkl/143362.bodies | 70 ++-- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 +-- bouml/hkl/145026.bodies | 134 ++++---- bouml/hkl/2.session | 17 +- bouml/hkl/hkl.prj | 11 +- test/pseudoaxe_eulerian4C_test.cpp | 13 +- test/pseudoaxe_eulerian4C_test.h | 1 + test/pseudoaxe_eulerian6C_test.cpp | 12 +- test/pseudoaxe_eulerian6C_test.h | 1 + test/pseudoaxe_kappa4C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.h | 1 + test/pseudoaxe_kappa6C_test.cpp | 12 +- test/pseudoaxe_kappa6C_test.h | 1 + 103 files changed, 5354 insertions(+), 5302 deletions(-) commit 0eea12680d26b863d83a988588a2b589fcb38493 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 08:14:49 2007 +0200 * start working on the PseudoAxeEngineWithSample (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 +++++++++---------- bouml/hkl/128002.diagram | 52 ++-- bouml/hkl/128060.bodies | 78 ++--- bouml/hkl/128182.bodies | 50 ++-- bouml/hkl/128188.diagram | 112 +++++--- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128386.diagram | 59 ++-- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++------------ bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 277 +++++++++++++++++- bouml/hkl/128770.bodies | 262 ++++++++--------- bouml/hkl/128770.diagram | 64 ++++- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +-- bouml/hkl/129794.bodies | 256 ++++++++--------- bouml/hkl/129922 | 3 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/129922.diagram | 20 +- bouml/hkl/130050.bodies | 86 +++--- bouml/hkl/130178.bodies | 76 ++--- bouml/hkl/130306.bodies | 272 +++++++++--------- bouml/hkl/130306.diagram | 44 ++- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 146 +++++----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131202.diagram | 20 +- bouml/hkl/131330.bodies | 132 ++++----- bouml/hkl/131458.bodies | 140 ++++----- bouml/hkl/131586.bodies | 630 ++++++++++++++++++++-------------------- bouml/hkl/131714.bodies | 648 +++++++++++++++++++++--------------------- bouml/hkl/131842 | 13 +- bouml/hkl/131842.bodies | 184 ++++++------ bouml/hkl/131970 | 29 +- bouml/hkl/132098 | 3 +- bouml/hkl/132354 | 15 +- bouml/hkl/132482 | 2 +- bouml/hkl/132482.bodies | 148 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 286 +++++++++---------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 +++++++------- bouml/hkl/132994 | 10 +- bouml/hkl/132994.bodies | 246 ++++++++-------- bouml/hkl/133122 | 10 +- bouml/hkl/133122.bodies | 78 ++--- bouml/hkl/133250 | 10 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 +++++++------- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 29 +- bouml/hkl/133634.bodies | 332 +++++++++++----------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134018 | 85 ++++++ bouml/hkl/134146.bodies | 302 ++++++++++---------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++++----------- bouml/hkl/134786.bodies | 104 +++---- bouml/hkl/135042.bodies | 96 +++---- bouml/hkl/135170.bodies | 42 +-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 ++++++------ bouml/hkl/136322.bodies | 168 +++++------ bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 486 +++++++++++++++---------------- bouml/hkl/136706.bodies | 262 ++++++++--------- bouml/hkl/136834.bodies | 445 ++++++++++++++--------------- bouml/hkl/136962.bodies | 220 +++++++------- bouml/hkl/137090.bodies | 134 ++++----- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 ++++++++-------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 70 ++--- bouml/hkl/139778.bodies | 66 ++--- bouml/hkl/139906.bodies | 68 ++--- bouml/hkl/140034.bodies | 66 ++--- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +-- bouml/hkl/142594.bodies | 496 ++++++++++++++++---------------- bouml/hkl/142978.bodies | 236 +++++++-------- bouml/hkl/143362.bodies | 70 ++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +-- bouml/hkl/143874.bodies | 34 +-- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +-- bouml/hkl/144386.bodies | 46 +-- bouml/hkl/145026.bodies | 81 ++++++ bouml/hkl/2.session | 13 +- bouml/hkl/generation_settings | 18 +- bouml/hkl/hkl.prj | 146 ++++++---- 99 files changed, 5926 insertions(+), 5354 deletions(-) commit bbf71d0a147d47de061f811eee0236d3e9068ae5 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 1 17:18:45 2007 +0200 * now eulerian6C::pseudoAxeEngine::Tth is working. bouml/hkl/133378 | 2 +- bouml/hkl/136834.bodies | 81 ++++++++++++++++++++++++++++++++----------------- bouml/hkl/hkl.prj | 4 +-- 3 files changed, 56 insertions(+), 31 deletions(-) commit 014738530b905c08706f30f7456e0c3e46b84d24 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 1 15:34:12 2007 +0200 * now parameters of the pseudoAxes can be used. src/gui/diffractometer2.glade | 54 +++++++++++++++++----- src/gui/hklwindow.cpp | 102 ++++++++++++++++++++++++++++++++++++++++-- src/gui/hklwindow.h | 8 ++++ src/gui/modelcolumns.h | 15 +++++++ 4 files changed, 165 insertions(+), 14 deletions(-) commit 32f0f6df9bf2955f7a4b74ef552b1a3d28809d68 Author: Frédéric-Emmanuel PICCA Date: Thu May 31 16:59:09 2007 +0200 * rewamp the gui interface to be space econome. bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 4 +- src/gui/diffractometer2.glade | 217 ++++++++++----------- src/gui/hklwindow.cpp | 430 ++++++++++++++++++++++++++++++++---------- src/gui/hklwindow.h | 38 ++-- src/gui/modelcolumns.h | 47 +++++ 6 files changed, 514 insertions(+), 229 deletions(-) commit 0d73aa8f2597164d365bc185e3ede943c7955eb0 Author: Frédéric-Emmanuel PICCA Date: Fri May 25 17:13:00 2007 +0200 * now the gui is working bouml/hkl/135042.bodies | 2 + bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 19 ++- src/gui/hklwindow.cpp | 292 +++++++++++++++++++--------------------- src/gui/hklwindow.h | 2 +- src/gui/main.cpp | 15 ++- src/gui/pseudoaxespinbutton.cpp | 12 +- 7 files changed, 174 insertions(+), 173 deletions(-) commit d53537a617822c9f154e54bf7d59bb62e8bd4fe9 Author: Frédéric-Emmanuel PICCA Date: Thu May 24 16:56:23 2007 +0200 * update the hkl::eulerian6C::pseudoAxeEngine::Tth documentation bouml/hkl/133378 | 77 +++++++++++++++++++------------------------ bouml/hkl/2.session | 10 ++---- bouml/hkl/generation_settings | 1 + bouml/hkl/hkl.prj | 14 ++++---- doc/Doxyfile | 4 +-- 5 files changed, 47 insertions(+), 59 deletions(-) commit 4e8bb16e9bad46b9e8bb3fb5256199064a75f4f3 Author: Frédéric-Emmanuel PICCA Date: Fri May 11 17:00:36 2007 +0200 * refactoring of the code to be diffractometer directory closer (waiting for bouml to have a relativ path to a specific directory) bouml/hkl/128002 | 1198 +++---------------------------- bouml/hkl/128002.bodies | 298 ++++---- bouml/hkl/128060.bodies | 78 +- bouml/hkl/128182.bodies | 60 +- bouml/hkl/128258.diagram | 20 +- bouml/hkl/128310.bodies | 18 +- bouml/hkl/128386.diagram | 79 +- bouml/hkl/128514 | 42 +- bouml/hkl/128514.bodies | 356 ++++----- bouml/hkl/128514.diagram | 45 +- bouml/hkl/128642 | 42 +- bouml/hkl/128642.diagram | 22 +- bouml/hkl/128770 | 55 +- bouml/hkl/128770.bodies | 262 +++---- bouml/hkl/128898 | 30 - bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 80 +-- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +- bouml/hkl/129794 | 137 ---- bouml/hkl/129794.bodies | 256 +++---- bouml/hkl/129922 | 53 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 86 +-- bouml/hkl/130050.diagram | 47 +- bouml/hkl/130178.bodies | 76 +- bouml/hkl/130178.diagram | 12 +- bouml/hkl/130306 | 30 - bouml/hkl/130306.bodies | 272 +++---- bouml/hkl/130306.diagram | 98 ++- bouml/hkl/130562 | 30 - bouml/hkl/130562.diagram | 76 +- bouml/hkl/130690.diagram | 27 + bouml/hkl/130818.diagram | 34 + bouml/hkl/130946.diagram | 73 ++ bouml/hkl/131074 | 44 +- bouml/hkl/131074.bodies | 146 ++-- bouml/hkl/131074.diagram | 76 ++ bouml/hkl/131202 | 225 +----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131202.diagram | 41 ++ bouml/hkl/131330 | 165 ----- bouml/hkl/131330.bodies | 140 ++-- bouml/hkl/131458 | 238 ------ bouml/hkl/131458.bodies | 140 ++-- bouml/hkl/131586 | 227 ------ bouml/hkl/131586.bodies | 632 ++++++++-------- bouml/hkl/{130050 => 131714} | 27 +- bouml/hkl/131714.bodies | 648 ++++++++--------- bouml/hkl/{128130 => 131842} | 188 +++-- bouml/hkl/131842.bodies | 202 +++--- bouml/hkl/{129282 => 131970} | 136 ++-- bouml/hkl/{130178 => 132098} | 117 +-- bouml/hkl/{129154 => 132226} | 24 +- bouml/hkl/{128258 => 132354} | 257 +++++-- bouml/hkl/{129026 => 132482} | 168 ++--- bouml/hkl/132482.bodies | 166 ++--- bouml/hkl/{130434 => 132610} | 70 +- bouml/hkl/132610.bodies | 304 ++++---- bouml/hkl/{129410 => 132738} | 27 +- bouml/hkl/132738.bodies | 20 +- bouml/hkl/{130690 => 132866} | 89 ++- bouml/hkl/132866.bodies | 226 +++--- bouml/hkl/{129538 => 132994} | 166 +++-- bouml/hkl/132994.bodies | 264 +++---- bouml/hkl/{128386 => 133122} | 260 +++++-- bouml/hkl/133122.bodies | 78 +- bouml/hkl/133250 | 743 +++++++++++++++++++ bouml/hkl/{129666 => 133378} | 120 ++-- bouml/hkl/133378.bodies | 210 +++--- bouml/hkl/{130818 => 133506} | 84 +-- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 726 +++++++++++++++++++ bouml/hkl/133634.bodies | 332 ++++----- bouml/hkl/133762 | 183 +++++ bouml/hkl/{130946 => 133890} | 84 +-- bouml/hkl/133890.bodies | 8 +- bouml/hkl/134146.bodies | 302 ++++---- bouml/hkl/134274.bodies | 32 +- bouml/hkl/134402.bodies | 334 ++++----- bouml/hkl/134786.bodies | 104 +-- bouml/hkl/135042.bodies | 92 +-- bouml/hkl/135170.bodies | 42 +- bouml/hkl/135426.bodies | 126 ++-- bouml/hkl/136194.bodies | 180 ++--- bouml/hkl/136322.bodies | 170 ++--- bouml/hkl/136450.bodies | 118 +-- bouml/hkl/136578.bodies | 488 ++++++------- bouml/hkl/136706.bodies | 264 +++---- bouml/hkl/136834.bodies | 410 +++++------ bouml/hkl/136962.bodies | 222 +++--- bouml/hkl/137090.bodies | 134 ++-- bouml/hkl/138882.bodies | 58 +- bouml/hkl/139138.bodies | 241 +++---- bouml/hkl/139522.bodies | 58 +- bouml/hkl/139650.bodies | 70 +- bouml/hkl/139778.bodies | 66 +- bouml/hkl/139906.bodies | 68 +- bouml/hkl/140034.bodies | 66 +- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +- bouml/hkl/142594.bodies | 496 ++++++------- bouml/hkl/142978.bodies | 242 +++---- bouml/hkl/143362.bodies | 70 +- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 30 +- bouml/hkl/143746.bodies | 38 +- bouml/hkl/143874.bodies | 40 +- bouml/hkl/144130.bodies | 32 +- bouml/hkl/144258.bodies | 40 +- bouml/hkl/144386.bodies | 48 +- bouml/hkl/2.session | 10 +- bouml/hkl/generation_settings | 1 + bouml/hkl/hkl.prj | 454 +++++++----- src/SConscript | 32 +- test/affinement_simplex_test.cpp | 110 +-- test/affinement_simplex_test.h | 9 +- test/diffractometer_eulerian4C_test.cpp | 4 +- test/diffractometer_eulerian4C_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 80 +-- test/diffractometer_kappa4C_test.h | 4 +- test/diffractometer_kappa6C_test.cpp | 108 +-- test/diffractometer_kappa6C_test.h | 4 +- test/diffractometer_twoC_test.cpp | 136 ++-- test/diffractometer_twoC_test.h | 7 +- test/geometry_eulerian4C_test.cpp | 34 +- test/geometry_eulerian4C_test.h | 4 +- test/geometry_eulerian6C_test.cpp | 215 +++--- test/geometry_eulerian6C_test.h | 6 +- test/geometry_kappa4C_test.cpp | 176 ++--- test/geometry_kappa4C_test.h | 6 +- test/geometry_kappa6C_test.cpp | 144 ++-- test/geometry_kappa6C_test.h | 6 +- test/geometry_twoC_test.cpp | 120 ++-- test/geometry_twoC_test.h | 8 +- test/mode_eulerian4C_test.cpp | 100 +-- test/mode_eulerian4C_test.h | 4 +- test/mode_kappa4C_test.cpp | 192 ++--- test/mode_kappa4C_test.h | 7 +- test/mode_kappa6C_test.cpp | 236 +++--- test/mode_kappa6C_test.h | 7 +- test/mode_twoC_test.cpp | 84 +-- test/mode_twoC_test.h | 8 +- test/pseudoaxe_eulerian4C_test.cpp | 380 +++++----- test/pseudoaxe_eulerian4C_test.h | 7 +- test/pseudoaxe_eulerian6C_test.cpp | 362 +++++----- test/pseudoaxe_eulerian6C_test.h | 8 +- test/pseudoaxe_kappa4C_test.cpp | 528 +++++++------- test/pseudoaxe_kappa4C_test.h | 10 +- test/pseudoaxe_kappa6C_test.cpp | 516 ++++++------- test/pseudoaxe_kappa6C_test.h | 14 +- test/pseudoaxe_twoC_test.cpp | 180 ++--- test/pseudoaxe_twoC_test.h | 8 +- test/reflection_test.cpp | 2 +- test/reflection_test.h | 4 +- test/reflectionlist_test.h | 4 +- test/sample_test.h | 4 +- test/samplelist_test.h | 4 +- 162 files changed, 10942 insertions(+), 10329 deletions(-) commit cc030b9807c4c5c8f184931fba900fddc9f3ba17 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 15 14:41:47 2007 +0100 * add the PseudoAxeList::printToStream bouml/hkl/134786.bodies | 2 ++ bouml/hkl/135042.bodies | 9 +++++++++ bouml/hkl/2.session | 6 ++---- bouml/hkl/hkl.prj | 31 ++++++++++++++++++++++++++++++- 4 files changed, 43 insertions(+), 5 deletions(-) commit e8fb75079abc87d88bda61824cd7af2ffd337f74 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 13 10:53:19 2007 +0100 * add the tests for PseudoAxe::set_write_from_read bouml/hkl/128770 | 4 +- bouml/hkl/129026 | 8 +- bouml/hkl/129282 | 4 +- bouml/hkl/129538 | 4 +- bouml/hkl/129666 | 6 +- bouml/hkl/134786.bodies | 4 +- bouml/hkl/135042.bodies | 4 +- bouml/hkl/136194.bodies | 6 +- bouml/hkl/136322.bodies | 6 +- bouml/hkl/136450.bodies | 5 +- bouml/hkl/136578.bodies | 5 +- bouml/hkl/136706.bodies | 9 +- bouml/hkl/136834.bodies | 6 +- bouml/hkl/136962.bodies | 6 +- bouml/hkl/137090.bodies | 4 +- bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 8 +- config-linux2.py | 1 + test/pseudoaxe_eulerian4C_test.cpp | 111 +++++++++++++++++++++- test/pseudoaxe_eulerian6C_test.cpp | 91 +++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 182 +++++++++++++++++++++++++++++++++++++ test/pseudoaxe_kappa6C_test.cpp | 180 ++++++++++++++++++++++++++++++++++++ test/pseudoaxe_twoC_test.cpp | 66 ++++++++++++++ 23 files changed, 681 insertions(+), 46 deletions(-) commit 54ac249a1b1c3b1d5fac5567fdeb03c2169d6d12 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 12 16:17:16 2007 +0100 * add an operation to update the write part of pseudoAxes from the read part. * add an operation to PseudoAxe to get the read and the write part. bouml/hkl/128770 | 15 +++++++++++- bouml/hkl/129026 | 41 +++++++++++++++++++++++++++++++- bouml/hkl/129282 | 15 +++++++++++- bouml/hkl/129538 | 15 +++++++++++- bouml/hkl/129666 | 28 +++++++++++++++++++++- bouml/hkl/134786.bodies | 20 +++++++++++++--- bouml/hkl/135042.bodies | 8 +++++++ bouml/hkl/136194.bodies | 2 ++ bouml/hkl/136322.bodies | 2 ++ bouml/hkl/136450.bodies | 2 ++ bouml/hkl/136578.bodies | 2 ++ bouml/hkl/136706.bodies | 4 ++++ bouml/hkl/136834.bodies | 2 ++ bouml/hkl/136962.bodies | 2 ++ bouml/hkl/137090.bodies | 2 ++ bouml/hkl/2.session | 9 ++----- bouml/hkl/hkl.prj | 63 ++++++++++++++++++++++++++++++++++++++++++++++--- 17 files changed, 214 insertions(+), 18 deletions(-) commit 498f72e2739f18798bbb9c71203062ad732ed98b Author: Frédéric-Emmanuel PICCA Date: Tue Mar 6 15:38:38 2007 +0100 * check that all derived PseudoAxes of "psi" are working. bouml/hkl/2.session | 4 ++-- bouml/hkl/hkl.prj | 4 ++-- test/SConscript | 12 ++++++------ test/pseudoaxe_eulerian4C_test.cpp | 1 - 4 files changed, 10 insertions(+), 11 deletions(-) commit 3301696015b8ad67169a936b895d8186790e9d85 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 6 15:32:55 2007 +0100 * now the "psi" pseudoAxis is working with a desorientation parameter. bouml/hkl/128002.bodies | 4 +++- bouml/hkl/129282 | 2 +- bouml/hkl/136578.bodies | 31 +++++++++++++++++++++++-------- bouml/hkl/2.session | 5 +++-- bouml/hkl/hkl.prj | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 11 ++++------- 6 files changed, 35 insertions(+), 20 deletions(-) commit 9a0c3c99dec075d87d983e65d24c5ec622bdfb13 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 17:43:43 2007 +0100 * works on the Psi pseudoAxe. bouml/hkl/128386.diagram | 41 ++++++++++++++++++++++++-------------- bouml/hkl/129282 | 11 +++++++++- bouml/hkl/136578.bodies | 18 +++++++++++++---- bouml/hkl/2.session | 8 ++++---- bouml/hkl/hkl.prj | 6 +++--- config-linux2.py | 1 - test/SConscript | 12 +++++------ test/pseudoaxe_eulerian4C_test.cpp | 23 ++++++++++++--------- 8 files changed, 77 insertions(+), 43 deletions(-) commit 238b299f071a228c4d137caddf9858e96af7f0b9 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 12:05:38 2007 +0100 * add the CVS Makefile.vc src/Makefile.vc | 85 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 28 deletions(-) commit 68d5ecba8136571f1ff688b370a4fad7607da095 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 11:06:36 2007 +0100 * set _current = NULL in ModeList constructor. * add the relatedAxes in the PseudoAxeEngines bouml/hkl/128130 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/129026 | 2 +- bouml/hkl/129282 | 3 +- bouml/hkl/129538 | 2 +- bouml/hkl/129666 | 2 +- bouml/hkl/129922 | 2 +- bouml/hkl/136194.bodies | 4 +++ bouml/hkl/136322.bodies | 4 +++ bouml/hkl/136450.bodies | 3 ++ bouml/hkl/136578.bodies | 7 +++++ bouml/hkl/136706.bodies | 5 ++++ bouml/hkl/136834.bodies | 79 +++++++++++++++++++++++++------------------------ bouml/hkl/136962.bodies | 5 +++- bouml/hkl/137090.bodies | 9 ++++++ bouml/hkl/140418.bodies | 2 +- bouml/hkl/2.session | 5 +--- bouml/hkl/hkl.prj | 47 +++++++++++++++-------------- 18 files changed, 110 insertions(+), 75 deletions(-) commit 0e7fe107e916139c88f9bc7e118cab95f5b29889 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 27 15:44:22 2007 +0100 * small bug before 2.3.0 bouml/hkl/128258 | 2 +- bouml/hkl/134786.bodies | 2 ++ bouml/hkl/2.session | 7 ++++--- bouml/hkl/hkl.prj | 25 ++++++++++++++++++++++--- 4 files changed, 29 insertions(+), 7 deletions(-) commit f5eed0256c2fd59edcb708e19c3862445d9f843e Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:50:34 2007 +0100 * remove a bug in the eulerian4C diffractometer bouml/hkl/130178 | 2 +- bouml/hkl/131458 | 6 ++++-- bouml/hkl/131586 | 2 +- bouml/hkl/143746.bodies | 6 +++--- bouml/hkl/2.session | 6 ++++-- bouml/hkl/hkl.prj | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) commit 45bfdbda543d11511fc68eaf050493868e1cddab Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:40:31 2007 +0100 * remove unnecessary files. bouml/hkl/2.session | 5 +- include/hkl/enums.h | 38 --- include/hkl/myvector.h | 605 -------------------------------------- src/HKLException.cpp | 126 -------- src/diffractometer_eulerian4C.cpp | 42 --- 5 files changed, 2 insertions(+), 814 deletions(-) commit 5d2f339fa282de88d8ecc84a1311da92edd8c40f Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:13:15 2007 +0100 * Clean the SampleList bouml/hkl/128188.diagram | 4 ++-- bouml/hkl/134402.bodies | 18 ++---------------- bouml/hkl/2.session | 5 +++-- bouml/hkl/hkl.prj | 25 +++---------------------- 4 files changed, 10 insertions(+), 42 deletions(-) commit d85184ac45f855736bf4882a35955eb324e95b99 Author: Frederic-Emmanuel PICCA Date: Thu Feb 22 17:42:34 2007 +0100 * now all the library is on bouml except the test suite. bouml/hkl/128188.diagram | 14 +- bouml/hkl/129922.diagram | 62 + bouml/hkl/130050.diagram | 13 + bouml/hkl/130178.diagram | 13 + bouml/hkl/130306.diagram | 13 + bouml/hkl/130562.diagram | 20 + bouml/hkl/130818 | 2 +- bouml/hkl/131074.bodies | 20 +- bouml/hkl/131202 | 246 + bouml/hkl/131330 | 165 + bouml/hkl/131458 | 236 + bouml/hkl/131586 | 227 + bouml/hkl/131714.bodies | 2 + bouml/hkl/134402.bodies | 27 +- bouml/hkl/143362.bodies | 41 + bouml/hkl/143490.bodies | 6 + bouml/hkl/143618.bodies | 15 + bouml/hkl/143746.bodies | 19 + bouml/hkl/143874.bodies | 20 + bouml/hkl/144130.bodies | 16 + bouml/hkl/144258.bodies | 20 + bouml/hkl/144386.bodies | 25 + bouml/hkl/2.session | 10 +- bouml/hkl/hkl.prj | 8306 +++++++++++++++++-------------- include/hkl/diffractometer.h | 306 -- include/hkl/diffractometer_eulerian4C.h | 145 - include/hkl/diffractometer_eulerian6C.h | 74 - include/hkl/diffractometer_kappa4C.h | 137 - include/hkl/diffractometer_kappa6C.h | 42 - include/hkl/diffractometer_twoC.h | 74 - include/hkl/diffractometerfactory.h | 40 - src/diffractometer.cpp | 68 - src/diffractometer_eulerian6C.cpp | 35 - src/diffractometer_kappa4C.cpp | 43 - src/diffractometer_kappa6C.cpp | 39 - src/diffractometer_twoC.cpp | 37 - src/diffractometerfactory.cpp | 46 - test/diffractometer_eulerian4C_test.cpp | 14 +- test/diffractometer_kappa4C_test.cpp | 27 +- test/diffractometer_kappa6C_test.cpp | 22 +- test/diffractometer_twoC_test.cpp | 14 +- 41 files changed, 5793 insertions(+), 4908 deletions(-) commit 09463a8c9eb9f8f5219cdfdb52137a244de64703 Author: Frederic-Emmanuel PICCA Date: Wed Feb 21 15:14:46 2007 +0100 * Add the affinement part to bouml. bouml/hkl/128188.diagram | 39 +- bouml/hkl/129282 | 5 +- bouml/hkl/129794.diagram | 13 + bouml/hkl/131074 | 182 ++++++++++ bouml/hkl/142466.bodies | 25 ++ bouml/hkl/142594.bodies | 282 ++++++++++++++ bouml/hkl/142978.bodies | 137 +++++++ bouml/hkl/2.session | 9 +- bouml/hkl/cpp_includes | 3 + bouml/hkl/hkl.prj | 767 ++++++++++++++++++++++++++++++++++++++- include/hkl/affinement.h | 172 --------- include/hkl/affinementlist.h | 102 ------ src/affinement.cpp | 48 --- src/affinement_simplex.cpp | 313 ---------------- src/affinementlist.cpp | 134 ------- test/affinement_simplex_test.cpp | 10 +- test/affinement_simplex_test.h | 2 +- 17 files changed, 1443 insertions(+), 800 deletions(-) commit 1f547b2a818b33dff1fe378289732461d4caf463 Author: Frederic-Emmanuel PICCA Date: Tue Feb 20 14:30:17 2007 +0100 * remove a bug to compile with VC6 bouml/hkl/129922 | 4 ++-- bouml/hkl/130946 | 2 +- bouml/hkl/2.session | 2 +- bouml/hkl/hkl.prj | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit 94dd848f6507d898fb69823db99397fa6668c668 Author: Frederic-Emmanuel PICCA Date: Tue Feb 20 14:11:37 2007 +0100 * add all Modes to bouml bouml/hkl/128770 | 2 +- bouml/hkl/128898.diagram | 33 ++ bouml/hkl/129026.diagram | 66 +++ bouml/hkl/129154.diagram | 24 ++ bouml/hkl/129282.diagram | 15 + bouml/hkl/129410.diagram | 41 ++ bouml/hkl/129538 | 2 +- bouml/hkl/129538.diagram | 41 ++ bouml/hkl/129666.diagram | 41 ++ bouml/hkl/129922 | 191 +++++++++ bouml/hkl/130050 | 30 ++ bouml/hkl/130178 | 498 ++++++++++++++++++++++ bouml/hkl/130306 | 30 ++ bouml/hkl/130434 | 234 ++++++++++ bouml/hkl/130562 | 30 ++ bouml/hkl/130690 | 213 +++++++++ bouml/hkl/130818 | 213 +++++++++ bouml/hkl/130946 | 213 +++++++++ bouml/hkl/138882.bodies | 32 ++ bouml/hkl/139138.bodies | 137 ++++++ bouml/hkl/139522.bodies | 31 ++ bouml/hkl/139650.bodies | 38 ++ bouml/hkl/139778.bodies | 36 ++ bouml/hkl/139906.bodies | 37 ++ bouml/hkl/140034.bodies | 36 ++ bouml/hkl/140162.bodies | 11 + bouml/hkl/140290.bodies | 10 + bouml/hkl/140418.bodies | 10 + bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 877 +++++++++++++++++++++++++++++++++----- include/hkl/derivedmode.h | 56 --- include/hkl/mode.h | 162 ------- include/hkl/mode_eulerian4C.h | 112 ----- include/hkl/mode_eulerian6C.h | 74 ---- include/hkl/mode_kappa4C.h | 31 -- include/hkl/mode_kappa6C.h | 31 -- include/hkl/mode_twoC.h | 58 --- include/hkl/modelist.h | 102 ----- src/SConscript | 1 - src/diffractometer_eulerian6C.cpp | 10 +- src/diffractometer_kappa4C.cpp | 10 +- src/diffractometer_kappa6C.cpp | 10 +- src/mode.cpp | 14 - src/mode_eulerian4C.cpp | 268 ------------ src/mode_eulerian6C.cpp | 438 ------------------- src/mode_twoC.cpp | 68 --- src/modelist.cpp | 134 ------ test/mode_kappa4C_test.cpp | 20 +- test/mode_kappa6C_test.cpp | 20 +- 49 files changed, 3111 insertions(+), 1691 deletions(-) commit 0ac640f75188e070b51dea8b298a9e5f502fc67b Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 11:39:25 2007 +0100 * remove some VC6 bugs test/diffractometer_kappa6C_test.cpp | 12 ++++++------ test/pseudoaxe_twoC_test.cpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) commit b7aed1e90fb1943b08d7fddac590d91da7249521 Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 11:19:11 2007 +0100 * remove all warnings after adding the -Wall SConstruct | 6 +- bouml/hkl/128002 | 41 +- bouml/hkl/128002.bodies | 4 - bouml/hkl/128130 | 15 +- bouml/hkl/128258 | 15 +- bouml/hkl/128386 | 15 +- bouml/hkl/128514 | 19 +- bouml/hkl/128770 | 2 +- bouml/hkl/129026 | 7 +- bouml/hkl/129538 | 2 +- bouml/hkl/129666 | 6 +- bouml/hkl/131714.bodies | 1 - bouml/hkl/133378.bodies | 1 - bouml/hkl/135426.bodies | 21 +- bouml/hkl/hkl.prj | 6072 +++++++++++++++++----------------- config-linux2.py | 1 + include/hkl/affinementlist.h | 2 +- include/hkl/diffractometer.h | 4 +- include/hkl/modelist.h | 4 +- src/affinementlist.cpp | 1 - src/modelist.cpp | 1 - test/affinement_simplex_test.cpp | 1 - test/diffractometer_kappa4C_test.cpp | 6 - test/diffractometer_kappa6C_test.cpp | 6 - test/geometry_kappa6C_test.cpp | 1 - test/mode_kappa4C_test.cpp | 1 - test/mode_kappa6C_test.cpp | 1 - test/pseudoaxe_eulerian6C_test.cpp | 2 +- test/pseudoaxe_kappa4C_test.cpp | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- test/reflectionlist_test.cpp | 2 +- 31 files changed, 3202 insertions(+), 3062 deletions(-) commit 3cfe4a2431fd6c436fbcc3a3c7ef756631a0c759 Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 10:03:03 2007 +0100 * add all the pseudoAxes to bouml. bouml/hkl/128130.diagram | 74 ++ bouml/hkl/128188.diagram | 8 +- bouml/hkl/128258.diagram | 31 + bouml/hkl/128386.diagram | 64 ++ bouml/hkl/128514.diagram | 13 + bouml/hkl/128642.diagram | 20 + bouml/hkl/128770 | 348 +++++++ bouml/hkl/128770.diagram | 31 + bouml/hkl/128898 | 30 + bouml/hkl/129026 | 670 +++++++++++++ bouml/hkl/129154 | 30 + bouml/hkl/129282 | 436 +++++++++ bouml/hkl/129410 | 30 + bouml/hkl/129538 | 460 +++++++++ bouml/hkl/129666 | 666 +++++++++++++ bouml/hkl/129794 | 137 +++ bouml/hkl/130050.bodies | 4 +- bouml/hkl/134786.bodies | 51 + bouml/hkl/135042.bodies | 42 + bouml/hkl/135170.bodies | 32 + bouml/hkl/135426.bodies | 72 ++ bouml/hkl/136194.bodies | 90 ++ bouml/hkl/136322.bodies | 85 ++ bouml/hkl/136450.bodies | 61 ++ bouml/hkl/136578.bodies | 219 +++++ bouml/hkl/136706.bodies | 130 +++ bouml/hkl/136834.bodies | 207 ++++ bouml/hkl/136962.bodies | 113 +++ bouml/hkl/137090.bodies | 70 ++ bouml/hkl/2.session | 16 +- bouml/hkl/hkl.prj | 1504 +++++++++++++++++++++++++++--- config-linux2.py | 1 - include/hkl/derivedpseudoaxeengine.h | 199 ---- include/hkl/pseudoaxe.h | 150 --- include/hkl/pseudoaxeengine.h | 229 ----- include/hkl/pseudoaxeengine_eulerian4C.h | 148 --- include/hkl/pseudoaxeengine_eulerian6C.h | 107 --- include/hkl/pseudoaxeengine_kappa4C.h | 76 -- include/hkl/pseudoaxeengine_kappa6C.h | 46 - include/hkl/pseudoaxeengine_twoC.h | 113 --- include/hkl/pseudoaxeenginelist.h | 82 -- include/hkl/pseudoaxelist.h | 78 -- src/diffractometer.cpp | 1 + src/diffractometer_eulerian4C.cpp | 8 +- src/diffractometer_eulerian6C.cpp | 6 +- src/diffractometer_kappa4C.cpp | 10 +- src/diffractometer_kappa6C.cpp | 8 +- src/diffractometer_twoC.cpp | 6 +- src/pseudoaxe.cpp | 105 --- src/pseudoaxeengine.cpp | 13 - src/pseudoaxeengine_eulerian4C.cpp | 277 ------ src/pseudoaxeengine_eulerian6C.cpp | 343 ------- src/pseudoaxeengine_kappa4C.cpp | 158 ---- src/pseudoaxeengine_twoC.cpp | 347 ------- src/pseudoaxeenginelist.cpp | 105 --- src/pseudoaxelist.cpp | 112 --- test/diffractometer_kappa6C_test.cpp | 1 + test/pseudoaxe_eulerian4C_test.cpp | 86 +- test/pseudoaxe_eulerian6C_test.cpp | 74 +- test/pseudoaxe_kappa4C_test.cpp | 154 +-- test/pseudoaxe_kappa6C_test.cpp | 136 +-- test/pseudoaxe_twoC_test.cpp | 51 +- 62 files changed, 5876 insertions(+), 3098 deletions(-) commit e28e873c44b57a6b41b8e54f50359219ddedcc4a Author: Frederic-Emmanuel PICCA Date: Tue Feb 13 11:37:29 2007 +0100 * add the SampleList and SampleFactory to bouml bouml/hkl/128188.diagram | 30 +- bouml/hkl/128642 | 2 +- bouml/hkl/134274.bodies | 18 + bouml/hkl/134402.bodies | 186 +++++++ bouml/hkl/2.session | 9 +- bouml/hkl/hkl.prj | 924 ++++++++++++++++++++++++++------ include/hkl/samplefactory.h | 50 -- include/hkl/samplelist.h | 124 ----- src/samplefactory.cpp | 40 -- src/samplelist.cpp | 190 ------- test/diffractometer_eulerian4C_test.cpp | 2 +- test/diffractometer_kappa6C_test.cpp | 2 +- test/diffractometer_twoC_test.cpp | 2 +- test/samplelist_test.cpp | 2 +- 14 files changed, 1000 insertions(+), 581 deletions(-) commit 184df38ad347947957ed19ee7891983803cb8d05 Author: Frederic-Emmanuel PICCA Date: Fri Feb 9 18:09:17 2007 +0100 * add the reflection and part of the sample to bouml (memory leak for now) bouml/hkl/128188.diagram | 56 +- bouml/hkl/128514 | 172 +++++ bouml/hkl/128642 | 419 +++++++++++ bouml/hkl/133122.bodies | 48 ++ bouml/hkl/133378.bodies | 115 +++ bouml/hkl/133506.bodies | 13 + bouml/hkl/133634.bodies | 182 +++++ bouml/hkl/133890.bodies | 6 + bouml/hkl/134146.bodies | 168 +++++ bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 1358 +++++++++++++++++++++++++++++++--- include/hkl/diffractometerfactory.h | 1 + include/hkl/enums.h | 6 +- include/hkl/reflection.h | 190 ----- include/hkl/reflection_monocrystal.h | 61 -- include/hkl/reflectionfactory.h | 42 -- include/hkl/reflectionlist.h | 144 ---- include/hkl/sample.h | 146 ---- include/hkl/sample_monocrystal.h | 131 ---- src/reflection.cpp | 97 --- src/reflection_monocrystal.cpp | 36 - src/reflectionfactory.cpp | 32 - src/reflectionlist.cpp | 237 ------ src/sample.cpp | 150 ---- src/sample_monocrystal.cpp | 227 ------ src/samplelist.cpp | 2 +- test/affinement_simplex_test.cpp | 1 + test/mode_twoC_test.cpp | 1 + test/sample_test.cpp | 1 + 29 files changed, 2461 insertions(+), 1593 deletions(-) commit 636facbf7228f02179feefd4726a8459649805e2 Author: Frederic-Emmanuel PICCA Date: Fri Feb 9 13:52:05 2007 +0100 * add all Geometries to bouml bouml/hkl/128002 | 1200 ++++++++++++++++++++++++++++++ bouml/hkl/128002.diagram | 39 + bouml/hkl/128130 | 461 ++++++++++++ bouml/hkl/128258 | 369 +++++++++ bouml/hkl/128386 | 463 ++++++++++++ bouml/hkl/131842.bodies | 110 +++ bouml/hkl/132482.bodies | 88 +++ bouml/hkl/132610.bodies | 161 ++++ bouml/hkl/132738.bodies | 14 + bouml/hkl/132866.bodies | 126 ++++ bouml/hkl/132994.bodies | 145 ++++ bouml/hkl/2.session | 19 +- bouml/hkl/hkl.prj | 4 +- include/hkl/geometry_eulerian4C.h | 226 ------ include/hkl/geometry_eulerian6C.h | 232 ------ include/hkl/geometry_kappa.h | 73 -- include/hkl/geometry_kappa4C.h | 185 ----- include/hkl/geometry_kappa6C.h | 239 ------ include/hkl/geometry_twoC.h | 167 ----- include/hkl/pseudoaxeengine_eulerian4C.h | 8 +- include/hkl/pseudoaxeengine_eulerian6C.h | 8 +- src/geometry_eulerian4C.cpp | 183 ----- src/geometry_eulerian6C.cpp | 154 ---- src/geometry_kappa.cpp | 50 -- src/geometry_kappa4C.cpp | 201 ----- src/geometry_kappa6C.cpp | 174 ----- src/geometry_twoC.cpp | 132 ---- src/pseudoaxeengine_eulerian4C.cpp | 14 +- src/pseudoaxeengine_kappa4C.cpp | 6 +- src/pseudoaxeengine_twoC.cpp | 10 +- test/pseudoaxe_eulerian4C_test.cpp | 16 +- test/pseudoaxe_kappa4C_test.cpp | 16 +- test/pseudoaxe_twoC_test.cpp | 16 +- 33 files changed, 3229 insertions(+), 2080 deletions(-) commit 13d5574254374a5f914ec68290e4e877be191c5c Author: Frederic-Emmanuel PICCA Date: Wed Feb 7 13:44:14 2007 +0100 * add the portability.h file, manage with bouml Geometry bouml/hkl/128002.diagram | 10 + bouml/hkl/131330.bodies | 1 + bouml/hkl/131714.bodies | 343 +++ bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 5847 ++++++++++++++++++++----------------- include/hkl/geometry.h | 237 -- include/hkl/portability.h | 19 - src/geometry.cpp | 433 --- src/reflection.cpp | 2 +- src/sample.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 10 +- test/geometry_eulerian6C_test.cpp | 14 +- test/geometry_kappa4C_test.cpp | 10 +- test/geometry_kappa6C_test.cpp | 14 +- test/geometry_twoC_test.cpp | 6 +- 15 files changed, 3600 insertions(+), 3359 deletions(-) commit 7b1dcbae546d0d073e0cb7a5330a44216738837a Author: Frederic-Emmanuel PICCA Date: Wed Feb 7 10:53:21 2007 +0100 * add the Lattice class to bouml bouml/hkl/128002.diagram | 3 + bouml/hkl/128188.diagram | 2 + bouml/hkl/131458.bodies | 2 +- bouml/hkl/131586.bodies | 342 +++++++++++++++++++++++++ bouml/hkl/2.session | 13 +- bouml/hkl/hkl.prj | 645 ++++++++++++++++++++++++++++++++++++++++++++++- include/hkl/lattice.h | 259 ------------------- src/lattice.cpp | 391 ---------------------------- 8 files changed, 997 insertions(+), 660 deletions(-) commit 4881f3f69b3f0f7c87ac35d50e818baa380a94cd Author: Frederic-Emmanuel PICCA Date: Tue Feb 6 14:31:10 2007 +0100 * aFitParameterList and Source are bouml managed. bouml/hkl/128002.diagram | 29 ++ bouml/hkl/128188.diagram | 24 +- bouml/hkl/131330.bodies | 77 +++++ bouml/hkl/131458.bodies | 80 +++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 676 ++++++++++++++++++++++++++++++++++++++++- include/hkl/fitparameterlist.h | 160 ---------- include/hkl/source.h | 147 --------- src/fitparameterlist.cpp | 91 ------ src/source.cpp | 133 -------- 10 files changed, 877 insertions(+), 547 deletions(-) commit 2e1a3a48cadd744b63eb96c7e2a3b2ce7f8ee634 Author: Frederic-Emmanuel PICCA Date: Mon Feb 5 16:16:43 2007 +0100 * HKLObject an ParameterList are bouml managed. bouml/hkl/128188.diagram | 21 +- bouml/hkl/131074.bodies | 76 ++++ bouml/hkl/131202.bodies | 21 ++ bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 833 +++++++++++++++++++++++++++++++++----------- include/hkl/hklobject.h | 82 ----- include/hkl/parameterlist.h | 130 ------- src/hklobject.cpp | 47 --- src/parameterlist.cpp | 104 ------ 9 files changed, 756 insertions(+), 570 deletions(-) commit 50b9494bd0e6d702a65f813a3fac5325c56e0e2e Author: Frederic-Emmanuel PICCA Date: Mon Feb 5 11:43:00 2007 +0100 * now Axe, FitParameter and MyMap are bouml managed bouml/hkl/128002.bodies | 6 - bouml/hkl/128060.bodies | 4 - bouml/hkl/128188.diagram | 85 +- bouml/hkl/128514.bodies | 12 - bouml/hkl/128770.bodies | 7 - bouml/hkl/129154.bodies | 11 +- bouml/hkl/129794.bodies | 19 +- bouml/hkl/130050.bodies | 53 + bouml/hkl/130178.bodies | 50 + bouml/hkl/130306.bodies | 145 ++ bouml/hkl/2.session | 14 +- bouml/hkl/generation_settings | 10 +- bouml/hkl/hkl.prj | 4001 +++++++++++++++++++++++------------------ include/hkl/axe.h | 127 -- include/hkl/fitparameter.h | 140 -- include/hkl/mymap.h | 614 ------- src/axe.cpp | 90 - src/fitparameter.cpp | 74 - 18 files changed, 2624 insertions(+), 2838 deletions(-) commit 68ccd8720ac48484b25d20f162f8919be47e1d84 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 17:22:30 2007 +0100 * Parameter is now bouml managed. bouml/hkl/128188.diagram | 39 ++++++---- bouml/hkl/129922.bodies | 16 +++++ bouml/hkl/2.session | 4 +- bouml/hkl/hkl.prj | 180 ++++++++++++++++++++++++++++++++++++++++++++++- include/hkl/parameter.h | 73 ------------------- src/parameter.cpp | 45 ------------ 6 files changed, 222 insertions(+), 135 deletions(-) commit e490365fbaba4b6b3a80b1a6c229329e509426ee Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 16:25:05 2007 +0100 * Range is bouml managed bouml/hkl/128060.bodies | 2 + bouml/hkl/128188.diagram | 29 ++- bouml/hkl/129794.bodies | 150 +++++++++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 637 +++++++++++++++++++++++++++++++++++++++++++++++ include/hkl/range.h | 183 -------------- src/range.cpp | 314 ----------------------- 7 files changed, 818 insertions(+), 504 deletions(-) commit 2b5c38a07b61633fad9e58b762645ced3bf2aa35 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 14:57:46 2007 +0100 * Observer and Observable is bouml managed. bouml/hkl/128188.diagram | 12 +- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129538.bodies | 5 + bouml/hkl/129666.bodies | 29 + bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 2693 +++++++++++++++++++++++++--------------------- include/hkl/observer.h | 90 -- src/observer.cpp | 70 -- 8 files changed, 1505 insertions(+), 1403 deletions(-) commit 568483fbc7888a3e68e01cf040eb62496bc51ead Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 14:05:55 2007 +0100 Value is bouml managed bouml/hkl/128060.bodies | 19 +++-- bouml/hkl/128188.diagram | 2 +- bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 133 ++++++++++++++++++++++--------- include/hkl/value.h | 199 ----------------------------------------------- src/value.cpp | 129 ------------------------------ 6 files changed, 113 insertions(+), 375 deletions(-) commit aa975171751766a64a6a1fd7ca52d2886c6053b2 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 11:54:11 2007 +0100 * Object is bouml managed. bouml/hkl/128188.diagram | 27 ++- bouml/hkl/129154.bodies | 54 +++++ bouml/hkl/129282.bodies | 5 + bouml/hkl/129410.bodies | 5 + bouml/hkl/2.session | 7 +- bouml/hkl/generation_settings | 2 +- bouml/hkl/hkl.prj | 528 +++++++++++++++++++++++++++++++++++++++++- include/hkl/affinement.h | 2 +- include/hkl/object.h | 192 --------------- src/affinement.cpp | 4 +- src/affinement_simplex.cpp | 2 +- src/object.cpp | 95 -------- src/sample.cpp | 2 +- test/axe_test.cpp | 8 +- test/hklobject_test.cpp | 4 +- test/object_test.cpp | 9 +- test/sample_test.cpp | 2 +- 17 files changed, 637 insertions(+), 311 deletions(-) commit 838a48d419dc5ec791d6a0d79be902cd0cf1d9e3 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 18:19:00 2007 +0100 * MyString is now bouml managed. bouml/hkl/128188.diagram | 10 +++ bouml/hkl/128898.bodies | 16 ++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 199 ++++++++++++++++++++++++++++++++++++++++++++- include/hkl/HKLException.h | 74 ----------------- include/hkl/mystring.h | 51 ------------ src/mystring.cpp | 51 ------------ 7 files changed, 227 insertions(+), 181 deletions(-) commit 62aa9de3bb9a1c4d5d11614380c3a399a5381551 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 17:16:10 2007 +0100 * now convenience and Quaternion are bouml managed. bouml/hkl/128188.diagram | 21 +- bouml/hkl/128770.bodies | 164 +++++++++++ bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 697 +++++++++++++++++++++++++++++++++++++++++++++- include/hkl/convenience.h | 37 --- include/hkl/quaternion.h | 160 ----------- src/convenience.cpp | 55 ---- src/geometry.cpp | 4 +- src/quaternion.cpp | 224 --------------- test/quaternion_test.cpp | 40 +-- 10 files changed, 897 insertions(+), 511 deletions(-) commit ef0240a554f14f2a3b263ddcf2f8f2247f88a504 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 15:34:18 2007 +0100 * HKLException svector smatrix are bouml managed bouml/hkl/128002.bodies | 75 +++++- bouml/hkl/128188.diagram | 14 +- bouml/hkl/128514.bodies | 183 ++++++++++++++ bouml/hkl/2.session | 9 +- bouml/hkl/hkl.prj | 389 ++++++++++++++++++++++++++-- bouml/hkl/stereotypes | 2 +- include/hkl/axe.h | 1 - include/hkl/constants.h | 28 --- include/hkl/geometry.h | 4 - include/hkl/lattice.h | 2 +- include/hkl/mode.h | 10 +- include/hkl/quaternion.h | 4 +- include/hkl/source.h | 1 - include/hkl/svecmat.h | 475 ----------------------------------- include/hkl/value.h | 2 +- src/SConscript | 1 + src/convenience.cpp | 14 +- src/fitparameterlist.cpp | 1 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 8 +- src/geometry_kappa4C.cpp | 1 - src/geometry_twoC.cpp | 24 +- src/lattice.cpp | 8 +- src/mode_eulerian6C.cpp | 34 +-- src/pseudoaxeengine_eulerian4C.cpp | 14 +- src/pseudoaxeengine_twoC.cpp | 4 +- src/quaternion.cpp | 12 +- src/reflection.cpp | 2 +- src/smatrix.cpp | 310 ----------------------- src/source.cpp | 4 +- src/svector.cpp | 288 --------------------- src/value.cpp | 3 +- test/axe_test.cpp | 12 +- test/axe_test.h | 1 - test/diffractometer_kappa4C_test.cpp | 1 - test/diffractometer_kappa6C_test.cpp | 1 - test/geometry_eulerian4C_test.cpp | 5 +- test/geometry_eulerian6C_test.cpp | 29 ++- test/geometry_kappa4C_test.cpp | 13 +- test/geometry_kappa6C_test.cpp | 5 +- test/geometry_twoC_test.cpp | 11 +- test/lattice_test.h | 1 - test/mode_eulerian4C_test.cpp | 30 +-- test/mode_kappa4C_test.cpp | 30 +-- test/mode_kappa6C_test.cpp | 30 +-- test/mode_twoC_test.h | 1 - test/pseudoaxe_eulerian4C_test.cpp | 4 +- test/pseudoaxe_eulerian4C_test.h | 1 - test/pseudoaxe_eulerian6C_test.cpp | 8 +- test/pseudoaxe_eulerian6C_test.h | 1 - test/pseudoaxe_kappa4C_test.cpp | 17 +- test/pseudoaxe_kappa6C_test.cpp | 15 +- test/pseudoaxe_twoC_test.h | 1 - test/quaternion_test.cpp | 24 +- test/quaternion_test.h | 1 - test/reflection_test.cpp | 6 +- test/reflection_test.h | 1 - test/sample_test.cpp | 2 +- test/source_test.h | 2 - test/svecmat_test.cpp | 40 ++- test/svecmat_test.h | 5 +- test/value_test.cpp | 4 +- 62 files changed, 843 insertions(+), 1388 deletions(-) commit 008cf44e81d92b9317a8229c92bb846537d52339 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 10:32:03 2007 +0100 test of profilling with valgrind config-linux2.py | 1 - include/hkl/portability.h | 2 +- test/SConscript | 10 +++++----- 3 files changed, 6 insertions(+), 7 deletions(-) commit 529450d746bc50af97cf7db3cb8629ed04e0aaeb Author: Frédéric-Emmanuel PICCA Date: Sun Jan 28 12:04:56 2007 +0100 * 1st part of the bouml transition bouml/hkl/128002.bodies | 138 ++++ bouml/hkl/128060.bodies | 56 ++ bouml/hkl/128182.bodies | 40 ++ bouml/hkl/128188.diagram | 28 + bouml/hkl/128310.bodies | 11 + bouml/hkl/128514.bodies | 21 + bouml/hkl/2.session | 8 + bouml/hkl/cpp_includes | 19 + bouml/hkl/generation_settings | 222 ++++++ bouml/hkl/hkl.prj | 1549 +++++++++++++++++++++++++++++++++++++++++ bouml/hkl/idl_includes | 1 + bouml/hkl/java_imports | 1 + bouml/hkl/stereotypes | 54 ++ bouml/hkl/tools | 20 + include/hkl/HKLException.h | 280 ++------ src/HKLException.cpp | 154 ++-- src/SConscript | 1 - src/svector.cpp | 574 ++++++++------- test/geometry_test.h | 2 + test/lattice_test.h | 2 + test/reflectionlist_test.h | 2 + 21 files changed, 2575 insertions(+), 608 deletions(-) commit 04bd3b04a2e8f7c015f34f066e8a044d0e3149c0 Author: Frederic-Emmanuel PICCA Date: Thu Jan 25 10:40:58 2007 +0100 * now the gui is working. src/gui/hklwindow.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 563f72742a6438e1d396d2d55aeaafa1897a4786 Author: Frederic-Emmanuel PICCA Date: Wed Jan 24 15:02:34 2007 +0100 * update the uml diagrammes. * clean up the code. * add the NEWS file NEWS | 69 + TODO | 65 +- config-linux2.py | 1 + doc/uml/hkl.dia | 11001 ++++++++++++++++++++++----------------- doc/uml/next_hkl.dia | 7392 ++++++++++++++++---------- include/hkl/derivedmode.h | 3 +- include/hkl/fitparameterlist.h | 66 +- include/hkl/parameterlist.h | 56 +- include/hkl/pseudoaxe.h | 14 - include/hkl/pseudoaxelist.h | 17 - include/hkl/reflection.h | 24 +- include/hkl/samplelist.h | 1 - src/pseudoaxe.cpp | 14 - src/pseudoaxelist.cpp | 29 - 14 files changed, 11085 insertions(+), 7667 deletions(-) commit 1ccff1d7f69f8b2dceb5c8238e22625101c1e1a8 Author: Frederic-Emmanuel PICCA Date: Wed Jan 24 09:49:58 2007 +0100 * use astyle to format the code. include/hkl/pseudoaxe.h | 22 +++++++++++----------- include/hkl/pseudoaxeengine.h | 20 ++++++++++---------- include/hkl/pseudoaxeengine_eulerian4C.h | 6 +++--- include/hkl/pseudoaxelist.h | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) commit 6d4da713ff94bfe9e4a3d864c972d29b085c4bee Author: Frederic-Emmanuel PICCA Date: Mon Jan 22 14:01:58 2007 +0100 * update the documentation * remove some memory problem causing computation errors in the win32 port. * clean up the pseudoAxeEngine code. include/hkl/affinementlist.h | 2 +- include/hkl/axe.h | 2 +- include/hkl/derivedpseudoaxe.h | 220 --------------------- include/hkl/derivedpseudoaxeengine.h | 7 +- include/hkl/modelist.h | 2 +- include/hkl/pseudoaxe.h | 79 +++++++- include/hkl/pseudoaxeengine.h | 42 +++- include/hkl/pseudoaxeengine_eulerian4C.h | 23 ++- include/hkl/pseudoaxeengine_eulerian6C.h | 14 +- include/hkl/pseudoaxeengine_kappa4C.h | 20 +- include/hkl/pseudoaxeengine_kappa6C.h | 2 +- include/hkl/pseudoaxeengine_twoC.h | 20 +- include/hkl/pseudoaxeenginelist.h | 15 +- include/hkl/pseudoaxelist.h | 6 + include/hkl/reflectionlist.h | 2 +- include/hkl/samplelist.h | 2 +- src/pseudoaxe_kappa4C.cpp | 325 ------------------------------- src/pseudoaxe_twoC.cpp | 261 ------------------------- src/pseudoaxeengine_eulerian4C.cpp | 4 - src/pseudoaxeengine_eulerian6C.cpp | 4 +- src/pseudoaxeengine_twoC.cpp | 20 +- test/SConscript | 1 + test/pseudoaxe_eulerian4C_test.cpp | 25 ++- test/pseudoaxe_eulerian6C_test.cpp | 10 + test/pseudoaxe_kappa4C_test.cpp | 20 ++ test/pseudoaxe_kappa6C_test.cpp | 16 ++ test/pseudoaxe_twoC_test.cpp | 10 + 27 files changed, 261 insertions(+), 893 deletions(-) commit 59c84357baaaf7a5eebea2641e4206e870be2f3a Author: Frederic-Emmanuel PICCA Date: Fri Jan 19 14:37:53 2007 +0100 * update diffractometers with the PseudoAxeEngine include/hkl/diffractometer.h | 6 +++--- include/hkl/diffractometer_kappa4C.h | 2 -- include/hkl/diffractometer_kappa6C.h | 2 -- include/hkl/pseudoaxe.h | 3 +++ src/SConscript | 6 +++--- src/diffractometer.cpp | 8 ++++---- src/diffractometer_eulerian4C.cpp | 22 +++++++++++----------- src/diffractometer_eulerian6C.cpp | 20 ++++++++++---------- src/diffractometer_kappa4C.cpp | 34 +++++++++++++--------------------- src/diffractometer_kappa6C.cpp | 28 ++++++++++------------------ src/diffractometer_twoC.cpp | 14 +++++++------- src/pseudoaxe.cpp | 3 ++- test/SConscript | 8 ++++---- test/diffractometer_kappa4C_test.cpp | 10 +++++----- test/diffractometer_kappa6C_test.cpp | 10 +++++----- 15 files changed, 80 insertions(+), 96 deletions(-) commit c571ef78c48aafbf50b8e48f03266b6d2ef2a15d Author: Frederic-Emmanuel PICCA Date: Fri Jan 19 13:57:51 2007 +0100 * add the PseudoAxeEngineList class include/hkl/pseudoaxeengine.h | 9 ++-- include/hkl/pseudoaxeenginelist.h | 75 +++++++++++++++++++++++++++ include/hkl/pseudoaxelist.h | 2 + src/SConscript | 1 + src/pseudoaxeenginelist.cpp | 105 ++++++++++++++++++++++++++++++++++++++ src/pseudoaxelist.cpp | 6 +++ 6 files changed, 194 insertions(+), 4 deletions(-) commit 5778cc415731c45d99683c788ae9c7726f2e2adb Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:28:24 2007 +0100 * now all pseudoaxeengine seems to work include/hkl/derivedpseudoaxeengine.h | 8 +-- include/hkl/pseudoaxe_kappa4C.h | 116 ------------------------------ include/hkl/pseudoaxe_kappa6C.h | 49 ------------- src/pseudoaxeengine_eulerian4C.cpp | 136 +++++++++++++++++------------------ src/pseudoaxeengine_kappa4C.cpp | 2 + src/pseudoaxeengine_twoC.cpp | 52 +++++++------- test/SConscript | 10 +-- test/pseudoaxe_twoC_test.cpp | 2 +- 8 files changed, 106 insertions(+), 269 deletions(-) commit b638af06a4923a993d4d0999626de8751929b360 Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:25:07 2007 +0100 * pseudoaxe_kappa6C -> pseudoaxeengine_kappa6C include/hkl/pseudoaxeengine_kappa6C.h | 8 +++++--- test/SConscript | 4 ++-- test/pseudoaxe_kappa6C_test.cpp | 28 +++++++++++++++++----------- test/pseudoaxe_kappa6C_test.h | 2 +- 4 files changed, 25 insertions(+), 17 deletions(-) commit 31ae60f90fca7d49f6ffff723afd72956030603f Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:15:05 2007 +0100 * pseudoaxe_eulerian6C -> pseudoaxeengine_eulerian6C ...e_eulerian6C.h => pseudoaxeengine_eulerian6C.h} | 36 ++-- src/SConscript | 3 +- ...lerian6C.cpp => pseudoaxeengine_eulerian6C.cpp} | 198 +++++++++++---------- test/SConscript | 4 +- test/pseudoaxe_eulerian6C_test.cpp | 13 +- test/pseudoaxe_eulerian6C_test.h | 2 +- 6 files changed, 141 insertions(+), 115 deletions(-) commit 55424bddf60b7a448df6fef42ad9e23b7b78a5bd Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 17:29:10 2007 +0100 * pseudoaxe_kappa4C -> pseudoaxeengine_kappa4C include/hkl/pseudoaxeengine_kappa4C.h | 27 ++++++++++++--- src/pseudoaxeengine_kappa4C.cpp | 64 +++++++++++++++++++---------------- test/SConscript | 4 +-- test/pseudoaxe_kappa4C_test.cpp | 31 ++++++++++------- test/pseudoaxe_kappa4C_test.h | 2 +- 5 files changed, 79 insertions(+), 49 deletions(-) commit d263ca5dde243fd04049b6ab7ab3205698f1fecc Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 16:58:19 2007 +0100 * pseudoaxe_eulerian4C -> pseudoaxeengine_eulerian4C include/hkl/derivedpseudoaxeengine.h | 13 +++++- include/hkl/pseudoaxe.h | 1 + ...e_eulerian4C.h => pseudoaxeengine_eulerian4C.h} | 33 +++++++------ src/HKLException.cpp | 2 +- src/SConscript | 3 +- src/pseudoaxe.cpp | 8 +++- ...lerian4C.cpp => pseudoaxeengine_eulerian4C.cpp} | 54 ++++++++++++++++++---- test/SConscript | 4 +- test/pseudoaxe_eulerian4C_test.cpp | 16 ++++--- test/pseudoaxe_eulerian4C_test.h | 2 +- 10 files changed, 98 insertions(+), 38 deletions(-) commit 232ddefd7cb9ad0b620a755cba3e9c02f6ccb2d5 Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 14:19:17 2007 +0100 * pseudoAxe_twoC -> pseudoAxeEngine_twoC include/hkl/pseudoaxe.h | 245 ++------------ include/hkl/pseudoaxeengine.h | 9 +- .../{pseudoaxe_twoC.h => pseudoaxeengine_twoC.h} | 53 ++- include/hkl/pseudomultiaxe.h | 97 ------ src/SConscript | 17 +- src/pseudoaxe.cpp | 93 +++--- src/pseudoaxeengine_twoC.cpp | 355 +++++++++++++++++++++ src/pseudomultiaxe.cpp | 112 ------- test/SConscript | 6 +- test/pseudoaxe_twoC_test.cpp | 13 +- test/pseudoaxe_twoC_test.h | 2 +- 11 files changed, 504 insertions(+), 498 deletions(-) commit 3fc071e226f160b6f7be9062bce2de9795fea6e1 Author: Frederic-Emmanuel PICCA Date: Mon Jan 15 17:47:27 2007 +0100 * remove a memory leak in the PseudoAxeEngine class. doc/uml/next_hkl.dia | 364 ++++++++++++++--------------------- include/hkl/pseudoaxeengine.h | 2 + src/diffractometer_kappa6C.cpp | 2 + src/pseudoaxeengine.cpp | 3 + src/pseudoaxeengine_kappa4C.cpp | 3 - test/diffractometer_kappa4C_test.cpp | 4 - test/diffractometer_kappa6C_test.cpp | 14 +- 7 files changed, 167 insertions(+), 225 deletions(-) commit ae54470262416bec21952c8a5a91a6b17d064353 Author: Frederic-Emmanuel PICCA Date: Mon Jan 15 16:43:59 2007 +0100 * put the right eulerian <-> kappa conversion in the PseudoAxeEngine_kappa4C include/hkl/diffractometer_kappa4C.h | 2 +- src/pseudoaxeengine_kappa4C.cpp | 6 +++--- test/diffractometer_kappa4C_test.cpp | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) commit 0f10d45ac763753bdf817b01ac021d978008630c Author: Frédéric-Emmanuel PICCA Date: Sun Jan 14 17:43:51 2007 +0100 * add the DerivedPseudoAxeEngine doc/uml/next_hkl.dia | 236 +++++++++++----------------------- include/hkl/derivedpseudoaxeengine.h | 193 +++++++++++++++++++++++++++ include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 3 + include/hkl/pseudoaxeengine.h | 39 +++--- include/hkl/pseudoaxeengine_kappa4C.h | 7 + include/hkl/pseudoaxeengine_kappa6C.h | 44 +++++++ include/hkl/pseudomultiaxe.h | 5 +- src/diffractometer_eulerian6C.cpp | 4 +- src/diffractometer_kappa6C.cpp | 4 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 5 +- src/mode_eulerian6C.cpp | 24 ++-- src/pseudoaxe.cpp | 18 +-- src/pseudoaxeengine.cpp | 4 +- src/pseudoaxeengine_kappa4C.cpp | 79 +++++++----- src/pseudomultiaxe.cpp | 13 +- src/samplelist.cpp | 2 +- src/smatrix.cpp | 10 +- src/svector.cpp | 4 +- test/SConscript | 2 +- test/diffractometer_kappa4C_test.cpp | 11 +- test/diffractometer_kappa6C_test.cpp | 32 +++++ test/diffractometer_kappa6C_test.h | 2 + 24 files changed, 478 insertions(+), 267 deletions(-) commit 0bd1c2e4bdc0a1b1de5ea86c2220bb509de348e4 Author: Frederic-Emmanuel PICCA Date: Thu Jan 11 18:14:24 2007 +0100 * work on the pseudoAxeEngine (in progress) config-linux2.py | 1 - doc/uml/next_hkl.dia | 886 +++++++++++++-------- include/hkl/diffractometer_kappa4C.h | 6 +- include/hkl/pseudoaxeengine.h | 200 +++++ ...eengine_kappa4C.h => pseudoaxeengine_kappa4C.h} | 16 +- include/hkl/pseudomultiaxe.h | 27 +- include/hkl/pseudomultiaxeengine.h | 254 ------ src/SConscript | 4 +- src/diffractometer_kappa4C.cpp | 10 +- src/pseudoaxeengine.cpp | 10 + ...ine_kappa4C.cpp => pseudoaxeengine_kappa4C.cpp} | 39 +- src/pseudomultiaxe.cpp | 24 +- src/pseudomultiaxeengine.cpp | 62 -- test/diffractometer_kappa4C_test.cpp | 6 +- 14 files changed, 826 insertions(+), 719 deletions(-) commit 75a57cb3218148b3b03242ced00db1acbe071bae Author: Frederic-Emmanuel PICCA Date: Wed Jan 10 18:03:40 2007 +0100 begin of the pseudoAxes refactoring config-linux2.py | 1 + include/hkl/derivedpseudoaxe.h | 18 +- include/hkl/diffractometer_kappa4C.h | 3 + include/hkl/pseudoaxe.h | 6 +- include/hkl/pseudomultiaxe.h | 109 +++++++++++++ include/hkl/pseudomultiaxeengine.h | 254 +++++++++++++++++++++++++++++ include/hkl/pseudomultiaxeengine_kappa4C.h | 52 ++++++ src/HKLException.cpp | 2 +- src/SConscript | 3 + src/diffractometer_kappa4C.cpp | 13 +- src/gui/pseudoaxespinbutton.cpp | 1 - src/pseudoaxe.cpp | 18 +- src/pseudoaxelist.cpp | 2 +- src/pseudomultiaxe.cpp | 119 ++++++++++++++ src/pseudomultiaxeengine.cpp | 62 +++++++ src/pseudomultiaxeengine_kappa4C.cpp | 133 +++++++++++++++ src/sample_monocrystal.cpp | 10 +- test/SConscript | 14 +- test/diffractometer_kappa4C_test.cpp | 56 +++---- test/diffractometer_kappa4C_test.h | 13 +- 20 files changed, 814 insertions(+), 75 deletions(-) commit 7521ced3d553d598ac7974139c55a08065400726 Author: Frederic-Emmanuel PICCA Date: Mon Jan 8 10:43:28 2007 +0100 * changes to remove msvc6 warnings. now FitParameterList::ready_to_fit no more throw exception. include/hkl/derivedpseudoaxe.h | 1 - include/hkl/fitparameterlist.h | 2 +- include/hkl/sample_monocrystal.h | 2 +- src/HKLException.cpp | 2 +- src/sample_monocrystal.cpp | 19 +++++++++++-------- 5 files changed, 14 insertions(+), 12 deletions(-) commit 643d85b64312b0a5d3e29d431c407a2251a2df0a Author: Frédéric-Emmanuel PICCA Date: Sun Jan 7 17:37:23 2007 +0100 * work during the holidays config-linux2.py | 1 - include/hkl/affinement.h | 1 + include/hkl/affinementlist.h | 102 ++ include/hkl/axe.h | 1 + include/hkl/derivedpseudoaxe.h | 9 +- include/hkl/diffractometer.h | 11 + include/hkl/fitparameterlist.h | 2 +- include/hkl/geometry.h | 20 +- include/hkl/modelist.h | 39 +- include/hkl/mystring.h | 54 +- include/hkl/pseudoaxe.h | 14 +- include/hkl/pseudoaxelist.h | 22 +- include/hkl/reflectionlist.h | 1 + include/hkl/samplelist.h | 39 +- src/HKLException.cpp | 2 +- src/SConscript | 1 + src/affinementlist.cpp | 135 ++ src/diffractometer_eulerian6C.cpp | 2 +- src/fitparameterlist.cpp | 14 + src/geometry.cpp | 86 +- src/gui/axespinbutton.cpp | 198 +-- src/gui/axespinbutton.h | 4 +- src/gui/hklwindow.cpp | 2894 ++++++++++++++++++------------------- src/gui/hklwindow.h | 14 +- src/gui/main.cpp | 109 +- src/gui/modelcolumns.h | 29 +- src/gui/pseudoaxespinbutton.cpp | 239 ++- src/gui/pseudoaxespinbutton.h | 8 +- src/modelist.cpp | 70 +- src/mystring.cpp | 39 +- src/pseudoaxe.cpp | 6 +- src/pseudoaxe_kappa4C.cpp | 12 +- src/pseudoaxelist.cpp | 58 +- src/samplelist.cpp | 91 +- test/samplelist_test.cpp | 2 +- 35 files changed, 2237 insertions(+), 2092 deletions(-) commit a7add005a7fe136376ad9ba25bb6f81eef46caa0 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 17:05:09 2006 +0100 * start updating the uml diagram doc/uml/hkl.dia | 26504 ++++++++++++++++-------------------------------------- 1 file changed, 7640 insertions(+), 18864 deletions(-) commit 539424773790dcd3141326af5607ffb2260a9898 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 16:19:58 2006 +0100 * start refactoring of the frontend (gui). include/hkl/mystring.h | 7 +++++++ src/gui/axespinbutton.cpp | 16 ++++++++-------- src/gui/hklwindow.cpp | 2 +- src/gui/hklwindow.h | 4 ++-- src/gui/pseudoaxespinbutton.h | 4 ++-- 5 files changed, 20 insertions(+), 13 deletions(-) commit dc5db55efee0d37527686df1e834cb53aab452c6 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 14:37:11 2006 +0100 * add a parameter to the eulerian pseudoAxes to switch between the 2 possible solutions. TODO | 3 +- VERSION | 2 +- include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/pseudoaxe_kappa4C.h | 3 + src/pseudoaxe_kappa4C.cpp | 117 ++++++++++++++++++++++++++++------- 5 files changed, 101 insertions(+), 26 deletions(-) commit 293e58372246a02a653f60dbc3ed4f8bd9daca39 Author: Frederic-Emmanuel PICCA Date: Tue Dec 19 17:32:08 2006 +0100 * add the DiffractometerFactory include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 2 +- include/hkl/diffractometerfactory.h | 39 ++++++++++++++++++++++++++++++ include/hkl/enums.h | 11 +++++++++ src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 2 +- src/diffractometer_kappa6C.cpp | 2 +- src/diffractometerfactory.cpp | 46 ++++++++++++++++++++++++++++++++++++ test/diffractometer_kappa4C_test.cpp | 4 ++-- test/diffractometer_kappa6C_test.cpp | 4 ++-- 10 files changed, 105 insertions(+), 8 deletions(-) commit 893095ed322aa3c8b4f41ca54fd9cce24bb26dc9 Author: Frederic-Emmanuel PICCA Date: Tue Dec 19 16:30:57 2006 +0100 * second part of the documentation. include/hkl/HKLException.h | 18 +- include/hkl/affinement.h | 294 ++++++------ include/hkl/axe.h | 190 ++++---- include/hkl/constants.h | 40 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 76 +-- include/hkl/derivedpseudoaxe.h | 280 +++++------ include/hkl/diffractometer.h | 160 +++---- include/hkl/diffractometer_eulerian4C.h | 58 +-- include/hkl/diffractometer_eulerian6C.h | 52 +-- include/hkl/diffractometer_kappa4C.h | 60 +-- include/hkl/diffractometer_kappa6C.h | 52 +-- include/hkl/diffractometer_twoC.h | 58 +-- include/hkl/enums.h | 26 +- include/hkl/fitparameter.h | 220 ++++----- include/hkl/fitparameterlist.h | 264 +++++------ include/hkl/geometry.h | 402 ++++++++-------- include/hkl/geometry_eulerian4C.h | 385 ++++++++------- include/hkl/geometry_eulerian6C.h | 382 ++++++++------- include/hkl/geometry_kappa.h | 106 ++--- include/hkl/geometry_kappa4C.h | 312 +++++++------ include/hkl/geometry_kappa6C.h | 394 +++++++++------- include/hkl/geometry_twoC.h | 286 ++++++------ include/hkl/hklobject.h | 122 ++--- include/hkl/lattice.h | 454 +++++++++--------- include/hkl/mode.h | 228 ++++----- include/hkl/mode_eulerian4C.h | 204 ++++---- include/hkl/mode_eulerian6C.h | 112 ++--- include/hkl/mode_kappa4C.h | 36 +- include/hkl/mode_kappa6C.h | 36 +- include/hkl/mode_twoC.h | 96 ++-- include/hkl/modelist.h | 176 +++---- include/hkl/mymap.h | 788 +++++++++++++++---------------- include/hkl/mystring.h | 134 +++--- include/hkl/myvector.h | 802 ++++++++++++++++---------------- include/hkl/object.h | 318 ++++++------- include/hkl/observer.h | 152 +++--- include/hkl/parameter.h | 86 ++-- include/hkl/parameterlist.h | 194 ++++---- include/hkl/pseudoaxe.h | 430 +++++++++-------- include/hkl/pseudoaxe_eulerian4C.h | 234 +++++----- include/hkl/pseudoaxe_eulerian6C.h | 122 ++--- include/hkl/pseudoaxe_kappa4C.h | 142 +++--- include/hkl/pseudoaxe_kappa6C.h | 70 +-- include/hkl/pseudoaxe_twoC.h | 110 ++--- include/hkl/pseudoaxelist.h | 174 +++---- include/hkl/quaternion.h | 280 +++++------ include/hkl/range.h | 259 ++++++----- include/hkl/reflection.h | 322 ++++++------- include/hkl/reflection_monocrystal.h | 61 ++- include/hkl/reflectionfactory.h | 43 +- include/hkl/reflectionlist.h | 203 ++++---- include/hkl/sample.h | 175 ++++--- include/hkl/sample_monocrystal.h | 186 ++++---- include/hkl/samplefactory.h | 56 ++- include/hkl/samplelist.h | 150 ++++-- include/hkl/source.h | 238 +++++----- include/hkl/svecmat.h | 767 ++++++++++++++++-------------- include/hkl/value.h | 302 ++++++------ 59 files changed, 6505 insertions(+), 5920 deletions(-) commit 158dae8abe9b987b3e06214b3c5585485d040b58 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 17 16:16:28 2006 +0100 * first part of the documentation before release 2.3.0 doc/Doxyfile | 8 +- include/hkl/axe.h | 4 +- include/hkl/derivedmode.h | 11 +- include/hkl/derivedpseudoaxe.h | 319 ++++++++++++++++++-------------------- include/hkl/diffractometer.h | 215 ++++++++++++++----------- include/hkl/diffractometer_twoC.h | 2 +- include/hkl/enums.h | 6 + include/hkl/fitparameterlist.h | 71 ++++++++- include/hkl/geometry.h | 48 ++++-- include/hkl/hklobject.h | 46 +++--- include/hkl/lattice.h | 140 +++++++++++++++-- include/hkl/mode.h | 38 +++-- include/hkl/modelist.h | 70 ++++++++- include/hkl/mystring.h | 50 ++++-- include/hkl/myvector.h | 46 ++++++ include/hkl/object.h | 53 +++---- include/hkl/observer.h | 44 +++++- include/hkl/parameter.h | 9 ++ include/hkl/parameterlist.h | 56 ++++++- include/hkl/pseudoaxe.h | 58 +++++-- include/hkl/pseudoaxelist.h | 68 +++++++- include/hkl/reflection.h | 87 ++++++++++- src/object.cpp | 20 +-- 23 files changed, 1066 insertions(+), 403 deletions(-) commit 0d071da4ad04fd7289c84f3d68839ff2f511c4e5 Author: Frédéric-Emmanuel PICCA Date: Sat Dec 16 21:55:26 2006 +0100 * start updating the documentation include/hkl/HKLException.h | 18 +- include/hkl/affinement.h | 298 ++++++------ include/hkl/axe.h | 191 ++++---- include/hkl/constants.h | 42 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 58 +-- include/hkl/derivedpseudoaxe.h | 266 ++++++----- include/hkl/diffractometer.h | 86 ++-- include/hkl/diffractometer_eulerian4C.h | 58 +-- include/hkl/diffractometer_eulerian6C.h | 52 +-- include/hkl/diffractometer_kappa4C.h | 62 +-- include/hkl/diffractometer_kappa6C.h | 52 +-- include/hkl/diffractometer_twoC.h | 58 +-- include/hkl/enums.h | 14 +- include/hkl/fitparameter.h | 219 ++++----- include/hkl/fitparameterlist.h | 120 ++--- include/hkl/geometry.h | 360 +++++++-------- include/hkl/geometry_eulerian4C.h | 348 +++++++------- include/hkl/geometry_eulerian6C.h | 334 +++++++------- include/hkl/geometry_kappa.h | 106 ++--- include/hkl/geometry_kappa4C.h | 283 ++++++------ include/hkl/geometry_kappa6C.h | 347 +++++++------- include/hkl/geometry_twoC.h | 272 +++++------ include/hkl/hklobject.h | 118 ++--- include/hkl/lattice.h | 192 ++++---- include/hkl/mode.h | 194 ++++---- include/hkl/mode_eulerian4C.h | 204 ++++----- include/hkl/mode_eulerian6C.h | 113 +++-- include/hkl/mode_kappa4C.h | 36 +- include/hkl/mode_kappa6C.h | 36 +- include/hkl/mode_twoC.h | 96 ++-- include/hkl/modelist.h | 44 +- include/hkl/mymap.h | 785 ++++++++++++++++---------------- include/hkl/mystring.h | 76 ++-- include/hkl/myvector.h | 696 ++++++++++++++-------------- include/hkl/object.h | 316 ++++++------- include/hkl/observer.h | 56 +-- include/hkl/parameter.h | 69 ++- include/hkl/parameterlist.h | 66 +-- include/hkl/pseudoaxe.h | 306 +++++++------ include/hkl/pseudoaxe_eulerian4C.h | 226 ++++----- include/hkl/pseudoaxe_eulerian6C.h | 116 ++--- include/hkl/pseudoaxe_kappa4C.h | 142 +++--- include/hkl/pseudoaxe_kappa6C.h | 70 +-- include/hkl/pseudoaxe_twoC.h | 110 ++--- include/hkl/pseudoaxelist.h | 44 +- include/hkl/quaternion.h | 280 ++++++------ include/hkl/range.h | 221 ++++----- include/hkl/reflection.h | 166 ++++--- include/hkl/reflection_monocrystal.h | 38 +- include/hkl/reflectionfactory.h | 41 +- include/hkl/reflectionlist.h | 181 ++++---- include/hkl/sample.h | 92 ++-- include/hkl/sample_monocrystal.h | 103 +++-- include/hkl/samplefactory.h | 22 +- include/hkl/samplelist.h | 56 +-- include/hkl/source.h | 242 +++++----- include/hkl/svecmat.h | 702 ++++++++++++++-------------- include/hkl/value.h | 302 ++++++------ src/diffractometer_kappa.cpp | 17 - src/range.cpp | 12 +- src/sample.cpp | 9 - src/sample_monocrystal.cpp | 17 - 63 files changed, 5128 insertions(+), 5176 deletions(-) commit e47ae27c08352ceb7e93e705753404c4e336d3b9 Author: Frederic-Emmanuel Date: Fri Dec 15 16:30:13 2006 +0100 * update the diffractometer tests. include/hkl/samplelist.h | 3 + src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 12 +- src/diffractometer_kappa4C.cpp | 8 +- src/diffractometer_kappa6C.cpp | 12 +- src/samplelist.cpp | 22 +- test/SConscript | 8 +- test/diffractometer_eulerian4C_test.cpp | 234 ++++++++-------- test/diffractometer_eulerian4C_test.h | 75 ++--- test/diffractometer_kappa4C_test.cpp | 72 ++++- test/diffractometer_kappa4C_test.h | 17 +- test/diffractometer_kappa6C_test.cpp | 84 +++++- test/diffractometer_kappa6C_test.h | 17 +- test/diffractometer_twoC_test.cpp | 470 ++++++++++++++++---------------- test/diffractometer_twoC_test.h | 65 ++--- 15 files changed, 630 insertions(+), 475 deletions(-) commit b6f4df3cc3a11a599b42b357c9491fee868dc5f1 Author: picca Date: Thu Dec 14 17:03:21 2006 +0100 * add the ModeList and PseudoAxeList class * modification of all diffractometers class config-linux2.py | 1 + doc/uml/next_hkl.dia | 749 +++++++++++++-- include/hkl/diffractometer.h | 1506 +------------------------------ include/hkl/diffractometer_eulerian4C.h | 2 +- include/hkl/diffractometer_eulerian6C.h | 2 +- include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 2 +- include/hkl/diffractometer_twoC.h | 2 +- include/hkl/modelist.h | 39 + include/hkl/pseudoaxelist.h | 39 + src/SConscript | 7 +- src/diffractometer.cpp | 67 ++ src/diffractometer_eulerian4C.cpp | 34 +- src/diffractometer_eulerian6C.cpp | 25 +- src/diffractometer_kappa4C.cpp | 41 +- src/diffractometer_kappa6C.cpp | 38 +- src/diffractometer_twoC.cpp | 26 +- src/modelist.cpp | 153 ++++ src/pseudoaxelist.cpp | 153 ++++ src/samplelist.cpp | 26 +- 20 files changed, 1266 insertions(+), 1648 deletions(-) commit 14d2701a73d05e96470c8d24f4e2ff6fb24f00d5 Author: picca Date: Fri Dec 8 17:32:04 2006 +0100 * now all modes are ok include/hkl/derivedmode.h | 69 +++------ include/hkl/derivedpseudoaxe.h | 2 - include/hkl/geometry_kappa6C.h | 5 - include/hkl/mode_eulerian4C.h | 54 +++---- include/hkl/mode_eulerian6C.h | 11 +- include/hkl/parameterlist.h | 2 +- src/SConscript | 4 +- src/diffractometer_eulerian4C.cpp | 10 +- src/mode_eulerian4C.cpp | 193 ++++++++++++------------- src/mode_eulerian6C.cpp | 58 ++++---- src/parameterlist.cpp | 14 ++ test/SConscript | 6 +- test/mode_eulerian4C_test.cpp | 258 +++++++++++++++++----------------- test/mode_eulerian4C_test.h | 15 +- test/mode_kappa4C_test.cpp | 231 +++++++++++++++--------------- test/mode_kappa4C_test.h | 10 +- test/mode_kappa6C_test.cpp | 289 +++++++++++++++++++------------------- test/mode_kappa6C_test.h | 10 +- 18 files changed, 604 insertions(+), 637 deletions(-) commit 1c401e16f5ce16562079a081ea5d0f2f71a6fe3b Author: picca Date: Fri Dec 8 11:58:19 2006 +0100 * start refactoring of the mode part. include/hkl/mode.h | 197 +++++++++++++++++++++----------------------- include/hkl/mode_twoC.h | 20 ++--- include/hkl/pseudoaxe.h | 1 - src/SConscript | 3 +- src/diffractometer_twoC.cpp | 10 +-- src/mode.cpp | 14 ++++ src/mode_twoC.cpp | 44 +++++----- test/SConscript | 2 +- test/mode_twoC_test.cpp | 139 ++++++++++++++++--------------- test/mode_twoC_test.h | 7 +- 10 files changed, 221 insertions(+), 216 deletions(-) commit e641789b202fb6751499486f01448533ea819c7b Author: picca Date: Thu Dec 7 16:42:57 2006 +0100 * update to compile on win32 and add the axes method to the geometries SConstruct | 15 ++--- include/hkl/geometry_eulerian4C.h | 45 +++++++++++++-- include/hkl/geometry_eulerian6C.h | 35 ++++++++++-- include/hkl/geometry_kappa4C.h | 45 +++++++++++++-- include/hkl/geometry_kappa6C.h | 30 ++++++++++ include/hkl/geometry_twoC.h | 25 +++++++-- include/hkl/pseudoaxe_eulerian4C.h | 8 +-- include/hkl/pseudoaxe_twoC.h | 10 ++-- src/SConscript | 1 + src/geometry_eulerian4C.cpp | 36 ++++++------ src/geometry_eulerian6C.cpp | 40 +++++++------- src/geometry_kappa4C.cpp | 44 +++++++-------- src/geometry_kappa6C.cpp | 38 +++++++------ src/geometry_twoC.cpp | 40 +++++++------- src/gui/SConscript | 1 + src/pseudoaxe_eulerian4C.cpp | 39 ++++++------- src/pseudoaxe_twoC.cpp | 60 ++++++++++---------- src/range.cpp | 8 ++- test/pseudoaxe_eulerian4C_test.cpp | 88 ++++++++++------------------- test/pseudoaxe_eulerian6C_test.cpp | 110 +++++++++++++------------------------ test/pseudoaxe_kappa4C_test.cpp | 98 ++++++++++++--------------------- test/pseudoaxe_kappa6C_test.cpp | 42 +++++++------- 22 files changed, 449 insertions(+), 409 deletions(-) commit da12d2c27a5c64608140117722e6fbee640b36f5 Author: picca Date: Thu Dec 7 10:40:25 2006 +0100 * now all pseudoAxe are working. * add observer and observable class SConstruct | 5 +- config-linux2.py | 1 - doc/uml/next_hkl.dia | 2643 ++++++++++++++++++++++++++----- include/hkl/derivedpseudoaxe.h | 191 +-- include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 1 - include/hkl/geometry.h | 15 +- include/hkl/geometry_eulerian4C.h | 2 +- include/hkl/geometry_eulerian6C.h | 30 + include/hkl/geometry_kappa.h | 7 - include/hkl/geometry_kappa6C.h | 31 + include/hkl/hklobject.h | 10 +- include/hkl/observer.h | 56 + include/hkl/parameter.h | 16 +- include/hkl/parameterlist.h | 76 + include/hkl/pseudoaxe.h | 159 +- include/hkl/pseudoaxe_eulerian4C.h | 22 +- include/hkl/pseudoaxe_eulerian6C.h | 34 +- include/hkl/pseudoaxe_kappa4C.h | 48 +- include/hkl/pseudoaxe_kappa6C.h | 2 - include/hkl/pseudoaxe_twoC.h | 49 +- include/hkl/range.h | 17 +- include/hkl/source.h | 6 - include/hkl/svecmat.h | 4 + src/SConscript | 7 +- src/fitparameter.cpp | 4 +- src/geometry.cpp | 9 - src/geometry_eulerian4C.cpp | 6 +- src/geometry_kappa.cpp | 10 - src/geometry_kappa4C.cpp | 12 +- src/geometry_kappa6C.cpp | 8 +- src/geometry_twoC.cpp | 8 +- src/hklobject.cpp | 5 +- src/observer.cpp | 70 + src/parameter.cpp | 4 +- src/parameterlist.cpp | 90 ++ src/pseudoaxe.cpp | 93 ++ src/pseudoaxe_eulerian4C.cpp | 202 ++- src/pseudoaxe_eulerian6C.cpp | 415 ++--- src/pseudoaxe_kappa4C.cpp | 368 ++--- src/pseudoaxe_twoC.cpp | 377 ++--- src/range.cpp | 230 ++- src/reflection.cpp | 7 +- src/source.cpp | 14 +- src/svector.cpp | 25 + test/SConscript | 21 +- test/affinement_simplex_test.cpp | 138 +- test/affinement_simplex_test.h | 4 +- test/axe_test.cpp | 38 +- test/axe_test.h | 42 +- test/diffractometer_eulerian4C_test.cpp | 702 ++++---- test/diffractometer_eulerian4C_test.h | 5 +- test/diffractometer_kappa4C_test.cpp | 44 +- test/diffractometer_kappa4C_test.h | 27 +- test/diffractometer_kappa6C_test.cpp | 60 +- test/diffractometer_kappa6C_test.h | 31 +- test/diffractometer_test.cpp | 135 +- test/diffractometer_test.h | 45 +- test/diffractometer_twoC_test.cpp | 522 +++--- test/diffractometer_twoC_test.h | 77 +- test/fitparameter_test.cpp | 82 +- test/fitparameter_test.h | 30 +- test/geometry_eulerian4C_test.cpp | 179 ++- test/geometry_eulerian4C_test.h | 5 +- test/geometry_eulerian6C_test.cpp | 271 ++-- test/geometry_eulerian6C_test.h | 77 +- test/geometry_kappa4C_test.cpp | 305 ++-- test/geometry_kappa4C_test.h | 5 +- test/geometry_kappa6C_test.cpp | 241 +-- test/geometry_kappa6C_test.h | 5 +- test/geometry_test.cpp | 136 +- test/geometry_test.h | 7 +- test/geometry_twoC_test.cpp | 218 +-- test/geometry_twoC_test.h | 11 +- test/hklobject_test.cpp | 10 +- test/hklobject_test.h | 26 +- test/lattice_test.cpp | 364 +++-- test/lattice_test.h | 47 +- test/libHKL_test.cpp | 4 +- test/main.cpp | 12 +- test/mode_eulerian4C_test.cpp | 501 +++--- test/mode_eulerian4C_test.h | 49 +- test/mode_kappa4C_test.cpp | 459 +++--- test/mode_kappa4C_test.h | 47 +- test/mode_kappa6C_test.cpp | 507 +++--- test/mode_kappa6C_test.h | 47 +- test/mode_twoC_test.cpp | 165 +- test/mode_twoC_test.h | 37 +- test/mystring_test.cpp | 6 +- test/mystring_test.h | 22 +- test/object_test.cpp | 27 +- test/object_test.h | 42 +- test/parameter_test.cpp | 13 +- test/parameter_test.h | 26 +- test/pseudoaxe_eulerian4C_test.cpp | 789 +++++---- test/pseudoaxe_eulerian4C_test.h | 34 +- test/pseudoaxe_eulerian6C_test.cpp | 678 ++++---- test/pseudoaxe_eulerian6C_test.h | 4 +- test/pseudoaxe_kappa4C_test.cpp | 1033 ++++++------ test/pseudoaxe_kappa4C_test.h | 52 +- test/pseudoaxe_kappa6C_test.cpp | 757 +++++---- test/pseudoaxe_kappa6C_test.h | 52 +- test/pseudoaxe_twoC_test.cpp | 429 ++--- test/pseudoaxe_twoC_test.h | 30 +- test/quaternion_test.cpp | 34 +- test/quaternion_test.h | 90 +- test/range_test.cpp | 19 +- test/range_test.h | 37 +- test/reflection_test.cpp | 128 +- test/reflection_test.h | 57 +- test/reflectionlist_test.cpp | 106 +- test/reflectionlist_test.h | 55 +- test/sample_test.cpp | 290 ++-- test/sample_test.h | 51 +- test/samplelist_test.cpp | 48 +- test/samplelist_test.h | 31 +- test/source_test.cpp | 53 +- test/source_test.h | 55 +- test/svecmat_test.cpp | 101 +- test/svecmat_test.h | 143 +- test/value_test.cpp | 13 +- test/value_test.h | 53 +- tool/doxygen.py | 23 +- 123 files changed, 9583 insertions(+), 6927 deletions(-) commit 6fb04d11f854219e6713a97da7d0d4984168663c Author: picca Date: Thu Nov 9 17:23:22 2006 +0100 * add some throw to method declaration. include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionfactory.h | 2 +- include/hkl/reflectionlist.h | 2 +- src/reflection_monocrystal.cpp | 2 +- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) commit 28447f70ea71205cc903c119e0c1a865d23b5994 Author: picca Date: Thu Nov 9 16:45:20 2006 +0100 * made modifications to pass all tests. doc/uml/next_hkl.dia | 282 +++++++++++++++++++++++++++++------ include/hkl/lattice.h | 20 +-- include/hkl/range.h | 12 +- include/hkl/reflection.h | 6 +- include/hkl/reflection_monocrystal.h | 10 +- include/hkl/reflectionlist.h | 2 +- src/lattice.cpp | 129 ++++++++-------- src/range.cpp | 37 +++-- src/reflection.cpp | 17 +-- src/reflection_monocrystal.cpp | 48 ------ src/reflectionlist.cpp | 4 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 16 +- test/SConscript | 11 +- test/range_test.cpp | 14 +- test/reflection_test.cpp | 46 +++--- test/reflectionlist_test.cpp | 30 ++-- test/sample_test.cpp | 20 +-- test/svecmat_test.cpp | 12 +- 19 files changed, 430 insertions(+), 288 deletions(-) commit 7b19f1caecce6fe0fe79cc16bad40fdc91919015 Author: picca Date: Thu Nov 9 14:02:59 2006 +0100 * another fit optimization. SConstruct | 2 +- include/hkl/fitparameterlist.h | 4 ++ include/hkl/lattice.h | 4 +- include/hkl/sample_monocrystal.h | 6 ++- include/hkl/value.h | 4 +- src/affinement_simplex.cpp | 112 +++++++++++---------------------------- src/lattice.cpp | 11 ++-- src/sample_monocrystal.cpp | 32 ++++++++--- src/value.cpp | 2 +- 9 files changed, 76 insertions(+), 101 deletions(-) commit 61e92b7c8c21a4936fa20f3f7e2dc67ced762516 Author: picca Date: Wed Nov 8 19:13:58 2006 +0100 * new profiling day. config-win32.py | 1 + include/hkl/lattice.h | 11 ++- include/hkl/range.h | 2 + include/hkl/reflection.h | 56 ++++--------- include/hkl/reflection_monocrystal.h | 4 +- include/hkl/reflectionlist.h | 2 +- include/hkl/svecmat.h | 37 +++++++-- src/axe.cpp | 2 +- src/geometry.cpp | 18 ++-- src/lattice.cpp | 108 ++++++++++++++++-------- src/quaternion.cpp | 32 ++++---- src/range.cpp | 14 ++++ src/reflection.cpp | 56 +++---------- src/reflection_monocrystal.cpp | 10 ++- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 10 +-- src/sample_monocrystal.cpp | 11 ++- src/smatrix.cpp | 47 +++++++---- src/source.cpp | 8 +- src/svector.cpp | 155 ++++++++++++++++++----------------- test/affinement_simplex_test.cpp | 10 +-- 21 files changed, 328 insertions(+), 268 deletions(-) commit da02f6f255f8a3424d092d69bf38af3d53f06d80 Author: picca Date: Tue Nov 7 18:42:15 2006 +0100 * after refactoring of the svector code. config-linux2.py | 2 +- include/hkl/svecmat.h | 22 +++++-- src/sample_monocrystal.cpp | 7 ++- src/smatrix.cpp | 6 +- src/svector.cpp | 146 ++++++++++++++++++++++++++++----------------- 5 files changed, 118 insertions(+), 65 deletions(-) commit d5b2a6b68de660889f63cc047ee970f78f7bac20 Author: picca Date: Tue Nov 7 17:02:52 2006 +0100 * profiling of simplex before svector refactoring doc/uml/next_hkl.dia | 120 ++++++++-- include/hkl/affinement.h | 4 +- include/hkl/fitparameterlist.h | 3 + include/hkl/sample_monocrystal.h | 2 + include/hkl/svecmat.h | 7 +- src/affinement_simplex.cpp | 475 ++++++++++++++++++++------------------- src/sample_monocrystal.cpp | 53 ++--- src/svector.cpp | 2 +- 8 files changed, 386 insertions(+), 280 deletions(-) commit cd23eceacb7d0dcbaeb87ddda1d7bb8f64e11f34 Author: picca Date: Tue Nov 7 15:05:53 2006 +0100 * now affinement_simplex works. * add the config-*.py files. config-linux2.py | 1 + config-win32.py | 2 + include/hkl/fitparameterlist.h | 9 +++ include/hkl/lattice.h | 3 + include/hkl/sample_monocrystal.h | 2 + src/HKLException.cpp | 2 +- src/affinement_simplex.cpp | 118 ++++++++++++++++++++++++--------------- src/lattice.cpp | 101 +++++++++++++++------------------ src/range.cpp | 34 +++++------ src/reflection.cpp | 3 +- src/sample_monocrystal.cpp | 19 ++++--- src/smatrix.cpp | 2 + test/SConscript | 26 ++++++--- test/affinement_simplex_test.cpp | 4 +- 14 files changed, 187 insertions(+), 139 deletions(-) commit 8dbda93747238b72c6ffe5f1a7b1d5b930555db0 Author: picca Date: Mon Nov 6 16:13:05 2006 +0100 * remove a bug in the Reflection. _hkl_phi menber was declared in Reflection and reflection::MonoCrystal. include/hkl/reflection.h | 6 +++--- include/hkl/reflection_monocrystal.h | 9 --------- src/reflection.cpp | 6 ++++-- src/reflection_monocrystal.cpp | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) commit db64d690fe6b6f3e5edfea39126f13c413388883 Author: picca Date: Mon Nov 6 13:08:18 2006 +0100 * format all the files with astyle --style=gnu include/hkl/HKLException.h | 22 +- include/hkl/affinement.h | 56 +- include/hkl/axe.h | 37 +- include/hkl/constants.h | 16 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 93 +- include/hkl/derivedpseudoaxe.h | 361 ++-- include/hkl/diffractometer.h | 2881 ++++++++++++++++--------------- include/hkl/diffractometer_eulerian4C.h | 59 +- include/hkl/diffractometer_eulerian6C.h | 52 +- include/hkl/diffractometer_kappa4C.h | 63 +- include/hkl/diffractometer_kappa6C.h | 52 +- include/hkl/diffractometer_twoC.h | 57 +- include/hkl/enums.h | 19 +- include/hkl/fitparameter.h | 45 +- include/hkl/fitparameterlist.h | 33 +- include/hkl/geometry.h | 53 +- include/hkl/geometry_eulerian4C.h | 283 +-- include/hkl/geometry_eulerian6C.h | 231 +-- include/hkl/geometry_kappa.h | 115 +- include/hkl/geometry_kappa4C.h | 219 +-- include/hkl/geometry_kappa6C.h | 243 +-- include/hkl/geometry_twoC.h | 247 +-- include/hkl/hklobject.h | 28 +- include/hkl/lattice.h | 187 +- include/hkl/mode.h | 249 +-- include/hkl/mode_eulerian4C.h | 198 +-- include/hkl/mode_eulerian6C.h | 113 +- include/hkl/mode_kappa4C.h | 33 +- include/hkl/mode_kappa6C.h | 33 +- include/hkl/mode_twoC.h | 94 +- include/hkl/mymap.h | 966 +++++------ include/hkl/mystring.h | 17 +- include/hkl/myvector.h | 893 +++++----- include/hkl/object.h | 193 ++- include/hkl/parameter.h | 25 +- include/hkl/portability.h | 12 +- include/hkl/pseudoaxe.h | 309 ++-- include/hkl/pseudoaxe_eulerian4C.h | 219 +-- include/hkl/pseudoaxe_eulerian6C.h | 107 +- include/hkl/pseudoaxe_kappa4C.h | 120 +- include/hkl/pseudoaxe_kappa6C.h | 64 +- include/hkl/pseudoaxe_twoC.h | 90 +- include/hkl/quaternion.h | 15 +- include/hkl/range.h | 32 +- include/hkl/reflection.h | 189 +- include/hkl/reflection_monocrystal.h | 51 +- include/hkl/reflectionfactory.h | 43 +- include/hkl/reflectionlist.h | 203 +-- include/hkl/sample.h | 59 +- include/hkl/sample_monocrystal.h | 67 +- include/hkl/samplefactory.h | 23 +- include/hkl/samplelist.h | 49 +- include/hkl/source.h | 38 +- include/hkl/svecmat.h | 630 +++---- include/hkl/value.h | 35 +- src/HKLException.cpp | 108 +- src/affinement.cpp | 65 +- src/affinement_simplex.cpp | 504 +++--- src/axe.cpp | 161 +- src/convenience.cpp | 84 +- src/diffractometer_eulerian4C.cpp | 67 +- src/diffractometer_eulerian6C.cpp | 50 +- src/diffractometer_kappa.cpp | 20 +- src/diffractometer_kappa4C.cpp | 85 +- src/diffractometer_kappa6C.cpp | 78 +- src/diffractometer_twoC.cpp | 57 +- src/fitparameter.cpp | 105 +- src/fitparameterlist.cpp | 115 +- src/geometry.cpp | 710 ++++---- src/geometry_eulerian4C.cpp | 347 ++-- src/geometry_eulerian6C.cpp | 276 +-- src/geometry_kappa.cpp | 112 +- src/geometry_kappa4C.cpp | 357 ++-- src/geometry_kappa6C.cpp | 308 ++-- src/geometry_twoC.cpp | 247 +-- src/hklobject.cpp | 79 +- src/lattice.cpp | 631 +++---- src/mode_eulerian4C.cpp | 509 +++--- src/mode_eulerian6C.cpp | 861 ++++----- src/mode_twoC.cpp | 114 +- src/mystring.cpp | 99 +- src/object.cpp | 143 +- src/parameter.cpp | 71 +- src/pseudoaxe_eulerian4C.cpp | 412 ++--- src/pseudoaxe_eulerian6C.cpp | 499 +++--- src/pseudoaxe_kappa4C.cpp | 558 +++--- src/pseudoaxe_twoC.cpp | 522 +++--- src/quaternion.cpp | 399 ++--- src/range.cpp | 137 +- src/reflection.cpp | 228 +-- src/reflection_monocrystal.cpp | 128 +- src/reflectionfactory.cpp | 37 +- src/reflectionlist.cpp | 385 +++-- src/sample.cpp | 252 +-- src/sample_monocrystal.cpp | 394 ++--- src/samplefactory.cpp | 45 +- src/samplelist.cpp | 325 ++-- src/source.cpp | 239 +-- src/svector.cpp | 355 ++-- src/value.cpp | 237 +-- 101 files changed, 11320 insertions(+), 10864 deletions(-) commit 442cda584d275ef3f95e083a9bb3474e939f613c Author: picca frederic Date: Sat Nov 4 09:40:49 2006 +0100 * remove a bug in smatrix::operator == when nan src/smatrix.cpp | 564 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 279 insertions(+), 285 deletions(-) commit 26c7507a35ca2db6bb3ad91ed07ad6b3a1833c8b Author: picca Date: Thu Nov 2 18:20:04 2006 +0100 * work on affinement doc/uml/next_hkl.dia | 1003 ++++---------------------------------- include/hkl/crystal.h | 869 --------------------------------- include/hkl/crystallist.h | 87 ---- include/hkl/diffractometer.h | 301 ++++++------ include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 8 +- include/hkl/lattice.h | 2 + src/HKLException.cpp | 2 +- src/affinement_simplex.cpp | 14 +- src/fitparameter.cpp | 2 +- src/lattice.cpp | 38 +- src/range.cpp | 1 + test/SConscript | 3 +- test/affinement_simplex_test.cpp | 162 +++--- test/affinement_simplex_test.h | 40 +- test/crystallist_test.cpp | 80 --- test/crystallist_test.h | 40 -- 17 files changed, 419 insertions(+), 2235 deletions(-) commit 62514ef8dfba338c42efb78b6f7f47892493a3be Author: picca Date: Thu Nov 2 16:44:59 2006 +0100 * add the SampleList and SampleFactory classes. * add the SampleList tests. doc/uml/next_hkl.dia | 718 ++++++++++++++++++++++------ include/hkl/enums.h | 10 + include/hkl/reflection.h | 17 +- include/hkl/reflectionfactory_monocrystal.h | 35 -- include/hkl/sample.h | 2 + include/hkl/sample_monocrystal.h | 4 +- include/hkl/samplefactory.h | 29 ++ include/hkl/samplelist.h | 42 ++ src/SConscript | 2 + src/reflection.cpp | 20 +- src/reflectionfactory_monocrystal.cpp | 23 - src/samplefactory.cpp | 39 ++ src/samplelist.cpp | 190 ++++++++ test/SConscript | 1 + test/samplelist_test.cpp | 48 ++ test/samplelist_test.h | 28 ++ 16 files changed, 997 insertions(+), 211 deletions(-) commit d4e10584fb2683eae1c7739f51ea13fadafdfa42 Author: picca Date: Tue Oct 31 20:14:06 2006 +0100 * update the uml diagramme doc/uml/next_hkl.dia | 361 +++++++++++++++++++++++++++++++++++++++------------ include/hkl/sample.h | 6 +- test/SConscript | 2 +- 3 files changed, 279 insertions(+), 90 deletions(-) commit 132226fb106619ef700910cc663fe9bb1327aed5 Author: picca Date: Tue Oct 31 19:59:31 2006 +0100 * now the sample Class is ok. doc/uml/next_hkl.dia | 312 +++++++++++++++++++++++++++++------- include/hkl/fitparameterlist.h | 15 +- include/hkl/lattice.h | 9 +- include/hkl/mystring.h | 21 ++- include/hkl/sample.h | 11 +- include/hkl/sample_monocrystal.h | 6 +- src/fitparameter.cpp | 9 +- src/fitparameterlist.cpp | 33 +--- src/geometry_eulerian4C.cpp | 8 +- src/lattice.cpp | 24 ++- src/mystring.cpp | 38 ++++- src/range.cpp | 2 +- src/reflection.cpp | 13 +- src/reflectionlist.cpp | 5 +- src/sample.cpp | 334 +++------------------------------------ src/sample_monocrystal.cpp | 183 +++++++-------------- test/SConscript | 4 +- test/fitparameter_test.cpp | 11 ++ test/lattice_test.cpp | 18 +++ test/lattice_test.h | 2 + test/reflection_test.cpp | 9 ++ test/reflectionlist_test.cpp | 47 +++--- test/sample_test.cpp | 333 ++++---------------------------------- test/sample_test.h | 20 --- 24 files changed, 547 insertions(+), 920 deletions(-) commit 0ea586ae18cd488630dcc636f67ff173a478c709 Author: picca Date: Mon Oct 30 19:52:15 2006 +0100 * start working on the sample part and the fitparameterlist TODO | 1 + doc/uml/next_hkl.dia | 964 ++++++++++++++++++++++++----------- include/hkl/fitparameterlist.h | 135 ++--- include/hkl/reflection.h | 7 +- include/hkl/reflection_monocrystal.h | 2 + include/hkl/reflectionlist.h | 4 + include/hkl/sample.h | 75 +++ include/hkl/sample_monocrystal.h | 67 +++ include/hkl/svecmat.h | 2 + src/SConscript | 1 + src/affinement_simplex.cpp | 10 +- src/fitparameterlist.cpp | 133 +++-- src/reflection.cpp | 4 +- src/sample.cpp | 431 ++++++++++++++++ src/sample_monocrystal.cpp | 268 ++++++++++ src/smatrix.cpp | 23 + test/reflection_test.cpp | 2 +- test/sample_test.cpp | 465 +++++++++++++++++ test/sample_test.h | 59 +++ 19 files changed, 2191 insertions(+), 462 deletions(-) commit 4afe5d3fb464579b0f666b3e6090893e10a26ff3 Author: picca Date: Fri Oct 27 16:27:45 2006 +0200 * remove the relevance in the Reflection class. * update all the reflection test. doc/uml/next_hkl.dia | 100 +++++++++++++++++++++-------------- include/hkl/enums.h | 16 +++--- include/hkl/reflection.h | 9 +--- include/hkl/reflection_monocrystal.h | 1 - include/hkl/reflectionfactory.h | 1 - src/reflection.cpp | 17 +----- src/reflection_monocrystal.cpp | 22 ++++---- src/reflectionfactory.cpp | 2 +- test/SConscript | 2 +- test/reflection_test.cpp | 99 ++++++++++++++++++---------------- test/reflection_test.h | 5 +- test/reflectionlist_test.cpp | 4 +- 12 files changed, 140 insertions(+), 138 deletions(-) commit c087c58e900471cb4e99d870a7fd98e708454f7f Author: picca Date: Fri Oct 27 15:10:06 2006 +0200 * modification of the ReflectionFactory doc/uml/next_hkl.dia | 552 +++------------------------------------- include/hkl/enums.h | 6 + include/hkl/reflectionfactory.h | 18 +- include/hkl/reflectionlist.h | 1 - src/SConscript | 1 - src/reflectionfactory.cpp | 21 +- src/reflectionlist.cpp | 16 +- 7 files changed, 71 insertions(+), 544 deletions(-) commit a0de38547101f60ddc8c6730c2da0d9f47a59d54 Author: picca Date: Fri Oct 27 14:00:29 2006 +0200 * add many ReflectionList test methods. doc/uml/next_hkl.dia | 6 +++--- test/reflectionlist_test.cpp | 51 +++++++++++++++++++++++++++++++++++++++----- test/reflectionlist_test.h | 6 ++++++ 3 files changed, 55 insertions(+), 8 deletions(-) commit 588de2c474613ef4e9335a88211c644f6b34b6ea Author: picca Date: Fri Oct 27 13:32:44 2006 +0200 * add the forgotten reflectionlist test files. test/reflectionlist_test.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++ test/reflectionlist_test.h | 32 ++++++++++++++++++++++++ 2 files changed, 90 insertions(+) commit 5f62637397c7c185a77cf69d5d77316e46249f55 Author: picca Date: Fri Oct 27 13:24:46 2006 +0200 * remove a bug in the Value class * rename ReflectionListFactory into ReflectionList * add the enums header doc/uml/hkl.dia | 1679 +++++++++++++------- doc/uml/next_hkl.dia | 621 +------- include/hkl/enums.h | 4 + .../{reflectionlistfactory.h => reflectionlist.h} | 50 +- include/hkl/reflectionlistfactory_monocrystal.h | 28 - src/SConscript | 3 +- src/fitparameter.cpp | 2 +- ...eflectionlistfactory.cpp => reflectionlist.cpp} | 84 +- src/reflectionlistfactory_monocrystal.cpp | 33 - src/value.cpp | 8 +- test/SConscript | 2 +- test/lattice_test.cpp | 2 +- test/reflectionlistfactory_test.cpp | 39 - test/reflectionlistfactory_test.h | 28 - test/value_test.cpp | 24 + test/value_test.h | 4 + 16 files changed, 1276 insertions(+), 1335 deletions(-) commit 6edcbf8d8af06bdcbbe8a22932cb030b880ee902 Author: picca Date: Wed Oct 25 18:03:40 2006 +0200 * refactoring of the reflection part (cherry picked from 0484821076069bc9e86ebf8b73a85e74fb659383 commit) TODO | 1 + doc/uml/next_hkl.dia | 8943 ++++++++++++++++------- include/hkl/axe.h | 11 +- include/hkl/geometry.h | 29 +- include/hkl/geometry_eulerian4C.h | 38 +- include/hkl/geometry_eulerian6C.h | 25 +- include/hkl/geometry_kappa.h | 8 +- include/hkl/geometry_kappa4C.h | 21 +- include/hkl/geometry_kappa6C.h | 25 +- include/hkl/geometry_twoC.h | 17 +- include/hkl/mymap.h | 18 +- include/hkl/pseudoaxe.h | 8 +- include/hkl/reflection.h | 365 +- include/hkl/reflection_monocrystal.h | 55 + include/hkl/reflectionfactory.h | 38 + include/hkl/reflectionfactory_monocrystal.h | 35 + include/hkl/reflectionlist.h | 653 -- include/hkl/reflectionlistfactory.h | 111 + include/hkl/reflectionlistfactory_monocrystal.h | 28 + src/SConscript | 13 +- src/axe.cpp | 6 + src/geometry.cpp | 205 +- src/geometry_eulerian4C.cpp | 206 +- src/geometry_eulerian6C.cpp | 202 +- src/geometry_kappa.cpp | 16 +- src/geometry_kappa4C.cpp | 162 +- src/geometry_kappa6C.cpp | 201 +- src/geometry_twoC.cpp | 102 +- src/reflection.cpp | 142 + src/reflection_monocrystal.cpp | 82 + src/reflectionfactory.cpp | 14 + src/reflectionfactory_monocrystal.cpp | 23 + src/reflectionlistfactory.cpp | 223 + src/reflectionlistfactory_monocrystal.cpp | 33 + test/SConscript | 10 +- test/crystal_test.cpp | 462 -- test/crystal_test.h | 64 - test/geometry_eulerian4C_test.cpp | 38 +- test/geometry_test.cpp | 70 +- test/geometry_test.h | 5 +- test/reflection_test.cpp | 77 +- test/reflection_test.h | 5 +- test/reflectionlistfactory_test.cpp | 39 + test/reflectionlistfactory_test.h | 28 + 44 files changed, 7701 insertions(+), 5156 deletions(-) commit ad8d853aa33c066fc8b5f180fc99ae96b21adf8b Author: picca Date: Wed Oct 4 15:59:30 2006 +0200 * modification of the lyx doc doc/hkl.lyx | 2225 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 1198 insertions(+), 1027 deletions(-) commit f35e7ca54f65406989e734269661c07c7729f4be Author: picca Date: Wed Oct 4 15:58:54 2006 +0200 * add the Lattice tests TODO | 1 + doc/uml/next_hkl.dia | 5554 +++++++++++++++++++++++++------------------------ include/hkl/lattice.h | 15 +- src/lattice.cpp | 100 +- test/SConscript | 3 +- test/lattice_test.cpp | 288 ++- test/lattice_test.h | 30 +- 7 files changed, 3118 insertions(+), 2873 deletions(-) commit f89fbf519fdb1e1e28eb9fd6d71d816d35107159 Author: picca Date: Wed Oct 4 15:56:18 2006 +0200 * modification of a HKLException message of the set_current methode. src/range.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 0e087db1b5eca592cfc87c40a22a3803eea18618 Author: picca Date: Wed Oct 4 15:54:45 2006 +0200 * change the printToStream format of FitParameter src/fitparameter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 1f785b3d36631856cbe1b317ad8893e913835c23 Author: picca Date: Fri Sep 22 18:19:26 2006 +0200 * update the uml diagramme. doc/uml/newt_hkl.dia | 15134 ------------------------------------------------- doc/uml/next_hkl.dia | 14959 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 14932 insertions(+), 15161 deletions(-) commit c20a3234495f3530a3acd1abeda7d396f3d178e5 Author: picca Date: Thu Sep 7 18:53:47 2006 +0200 DO NOT COMPILE doc/uml/newt_hkl.dia | 15134 +++++++++++++++++++++++++++++++++++++++ include/hkl/axe.h | 4 +- include/hkl/crystal.h | 244 +- include/hkl/fitparameterlist.h | 142 +- include/hkl/geometry.h | 6 +- include/hkl/hklobject.h | 78 + include/hkl/lattice.h | 82 + include/hkl/parameter.h | 76 + include/hkl/portability.h | 19 + include/hkl/reflectionlist.h | 653 ++ include/hkl/source.h | 30 +- include/hkl/value.h | 39 + src/SConscript | 7 +- src/affinement.cpp | 2 + src/affinement_simplex.cpp | 6 +- src/axe.cpp | 2 +- src/fitparameterlist.cpp | 32 +- src/hklobject.cpp | 43 + src/lattice.cpp | 287 + src/parameter.cpp | 44 + src/source.cpp | 104 +- src/value.cpp | 12 + test/SConscript | 4 +- test/crystal_test.cpp | 60 +- test/hklobject_test.cpp | 48 + test/hklobject_test.h | 26 + test/parameter_test.cpp | 43 + test/parameter_test.h | 26 + test/source_test.cpp | 4 +- 29 files changed, 16939 insertions(+), 318 deletions(-) commit fe136dc24ab598e9124aacc5ffae37965cfb30b4 Author: picca Date: Fri Sep 1 18:47:03 2006 +0200 * begin of the refactoring DO NOT COMPILE yet SConstruct | 2 +- TODO | 11 +- doc/Doxyfile | 1 - doc/uml/next_hkl.dia | 26653 +----------------------------- include/hkl/axe.h | 204 +- include/hkl/config.h | 19 - include/hkl/constants.h | 2 + include/hkl/diffractometer.h | 94 +- include/hkl/diffractometer_eulerian6C.h | 2 +- include/hkl/fitparameter.h | 94 +- include/hkl/fitparameterlist.h | 128 +- include/hkl/mymap.h | 2 +- include/hkl/myvector.h | 2 +- include/hkl/objectwithparameters.h | 117 - include/hkl/pseudoaxe.h | 8 +- include/hkl/range.h | 115 +- include/hkl/svecmat.h | 2 +- include/hkl/value.h | 100 +- src/SConscript | 16 +- src/axe.cpp | 168 +- src/convenience.cpp | 2 +- src/diffractometer_eulerian6C.cpp | 10 +- src/fitparameter.cpp | 75 +- src/fitparameterlist.cpp | 11 - src/gui/axespinbutton.cpp | 150 +- src/gui/axespinbutton.h | 35 +- src/gui/diffractometer2.glade | 4 +- src/gui/hklwindow.cpp | 68 +- src/gui/hklwindow.h | 7 +- src/gui/main.cpp | 10 +- src/gui/pseudoaxespinbutton.cpp | 169 +- src/gui/pseudoaxespinbutton.h | 33 +- src/mystring.cpp | 2 +- src/objectwithparameters.cpp | 89 - src/pseudoaxe_eulerian6C.cpp | 32 +- src/pseudoaxe_twoC.cpp | 10 + src/range.cpp | 78 +- src/value.cpp | 98 +- test/SConscript | 13 +- test/axe_test.cpp | 124 +- test/axe_test.h | 2 - test/fitparameter_test.cpp | 89 +- test/fitparameter_test.h | 18 +- test/objectwithparameters_test.cpp | 66 - test/objectwithparameters_test.h | 28 - test/range_test.cpp | 63 +- test/range_test.h | 8 +- test/value_test.cpp | 75 +- test/value_test.h | 11 +- 49 files changed, 1207 insertions(+), 27913 deletions(-) commit a421ea546daf149771bfc3be131ef734ab6cd19b Author: picca Date: Thu Aug 31 18:54:30 2006 +0200 * add the ObjectReadOnly class. with this class you can only set the name and the description in the constructor. include/hkl/object.h | 197 +++++++++++++++++++++++++++++++++------------------ src/object.cpp | 89 +++++++++++------------ 2 files changed, 170 insertions(+), 116 deletions(-) commit d987346c3f727cfb4a25fd61c74085a793eba6d5 Author: picca Date: Wed Aug 23 17:21:08 2006 +0200 * add the PseudoAxeSpinbutton to the gui. * add the isValid method to the Geometry classes. * change the pseudoAxe interface + get_initialized() + get_min() + get_max() * add all the related test functions. TODO | 13 +- include/hkl/derivedpseudoaxe.h | 76 ++++++++-- include/hkl/diffractometer.h | 20 ++- include/hkl/geometry.h | 10 ++ include/hkl/geometry_kappa.h | 7 + include/hkl/pseudoaxe.h | 189 +++++++++++++---------- include/hkl/pseudoaxe_eulerian4C.h | 9 +- include/hkl/pseudoaxe_eulerian6C.h | 16 +- include/hkl/pseudoaxe_kappa4C.h | 24 +-- include/hkl/pseudoaxe_twoC.h | 32 ++-- src/axe.cpp | 4 +- src/geometry.cpp | 9 ++ src/geometry_kappa.cpp | 10 ++ src/gui/SConscript | 1 + src/gui/axespinbutton.cpp | 1 - src/gui/hklwindow.cpp | 81 ++++++++-- src/gui/hklwindow.h | 9 ++ src/gui/main.cpp | 9 +- src/gui/pseudoaxespinbutton.cpp | 89 +++++++++++ src/gui/pseudoaxespinbutton.h | 30 ++++ src/pseudoaxe_eulerian4C.cpp | 108 +++++++------- src/pseudoaxe_eulerian6C.cpp | 166 +++++++++++++-------- src/pseudoaxe_kappa4C.cpp | 187 +++++++++++++---------- src/pseudoaxe_twoC.cpp | 274 +++++++++++++++++----------------- test/axe_test.cpp | 8 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian4C_test.h | 64 ++++---- test/geometry_eulerian6C_test.cpp | 6 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_kappa6C_test.h | 62 ++++---- test/geometry_test.cpp | 12 ++ test/geometry_test.h | 2 + test/geometry_twoC_test.h | 70 ++++----- test/pseudoaxe_eulerian4C_test.cpp | 156 ++++++++++++++----- test/pseudoaxe_eulerian6C_test.cpp | 76 ++++++++-- test/pseudoaxe_kappa4C_test.cpp | 297 +++++++++++++++++++++++++++---------- test/pseudoaxe_kappa6C_test.cpp | 181 +++++++++++++++++----- test/pseudoaxe_twoC_test.cpp | 124 ++++++++++++---- 38 files changed, 1684 insertions(+), 753 deletions(-) commit a9980b3eaa90952072e1c17e3c40cb73ca805f8e Author: picca Date: Fri Aug 11 19:08:54 2006 +0200 *add the PseudoAxeInterface *add a gui base on gtkmm SConstruct | 2 +- include/hkl/derivedpseudoaxe.h | 70 +- include/hkl/diffractometer.h | 8 +- include/hkl/pseudoaxe.h | 72 +- include/hkl/pseudoaxe_eulerian4C.h | 10 +- include/hkl/pseudoaxe_eulerian6C.h | 28 +- include/hkl/pseudoaxe_kappa4C.h | 30 +- include/hkl/pseudoaxe_twoC.h | 51 +- src/SConscript | 2 +- src/diffractometer_eulerian4C.cpp | 8 +- src/diffractometer_eulerian6C.cpp | 6 +- src/diffractometer_kappa4C.cpp | 14 +- src/diffractometer_kappa6C.cpp | 12 +- src/diffractometer_twoC.cpp | 6 +- src/gui/SConscript | 28 + src/gui/axespinbutton.cpp | 48 + src/gui/axespinbutton.h | 28 + src/gui/diffractometer2.glade | 2775 ++++++++++++++++++++++++++++++++++++ src/gui/hklwindow.cpp | 1762 +++++++++++++++++++++++ src/gui/hklwindow.h | 173 +++ src/gui/main.cpp | 63 + src/gui/modelcolumns.h | 33 + src/pseudoaxe_eulerian4C.cpp | 59 +- src/pseudoaxe_eulerian6C.cpp | 81 +- src/pseudoaxe_kappa4C.cpp | 105 +- src/pseudoaxe_twoC.cpp | 107 +- test/pseudoaxe_eulerian4C_test.cpp | 113 +- test/pseudoaxe_eulerian6C_test.cpp | 97 +- test/pseudoaxe_kappa4C_test.cpp | 136 +- test/pseudoaxe_kappa6C_test.cpp | 90 +- test/pseudoaxe_twoC_test.cpp | 67 +- 31 files changed, 5492 insertions(+), 592 deletions(-) commit cc8358f44a2a70c4cb5db6df04cfa4d0067416b4 Author: picca Date: Fri Aug 11 15:39:19 2006 +0200 * resolv a bug in the simplex affinement method * add some usefull methode to the DiffractometerInterface: getAxe and setAxesFromCrystalReflection include/hkl/crystal.h | 137 ++++++++----- include/hkl/diffractometer.h | 157 ++++++++++++++- src/affinement_simplex.cpp | 66 ++++++- test/affinement_simplex_test.cpp | 151 +++++++------- test/crystal_test.cpp | 411 ++++++++++++++++++++------------------- 5 files changed, 593 insertions(+), 329 deletions(-) commit 94116eb4fc55be62962a7c405866595b598efa76 Author: picca Date: Wed Jul 26 18:34:39 2006 +0200 * add the pseudoAxes to the geometry::printToStream() include/hkl/diffractometer.h | 35 +++++++++++++++++++++++++++-------- include/hkl/pseudoaxe.h | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) commit 7b73c78de34324e6d4fb58516a492a5eaa6e7272 Author: picca Date: Wed Jul 26 17:32:05 2006 +0200 * update the TODO list TODO | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) commit 5d2db5585e4ed98197b3fcc749af358d46fae024 Author: picca Date: Wed Jul 26 16:55:11 2006 +0200 * update the unit test with non deprecated class test/main.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit b98373bcd1eb4f319cb777e2664320254f605d8f Author: picca Date: Wed Jul 26 16:34:45 2006 +0200 * add the profile option to the build system SConstruct | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) commit bbaff8ac1a2cd83456d599d6072dca5854b85687 Author: picca Date: Wed Jul 26 14:36:08 2006 +0200 * put all the myvector files into only one. include/hkl/linux/myvector.h | 503 --------------------------------------- include/hkl/myvector.h | 542 ++++++++++++++++++++++++++++++++++++++++++- include/hkl/win32/myvector.h | 444 ----------------------------------- 3 files changed, 540 insertions(+), 949 deletions(-) commit 1b77d370affa8238ff2fbcf5327367db2d9af8f3 Author: picca Date: Tue Jul 25 18:40:41 2006 +0200 now most of the library is based on templates. include/hkl/crystal.h | 46 +- include/hkl/derivedmode.h | 17 +- include/hkl/derivedpseudoaxe.h | 6 +- include/hkl/diffractometer.h | 370 +++++++------- include/hkl/linux/mymap.h | 541 --------------------- include/hkl/linux/myvector.h | 47 +- include/hkl/mode.h | 74 ++- include/hkl/mymap.h | 595 ++++++++++++++++++++++- include/hkl/object.h | 181 ++++--- include/hkl/pseudoaxe.h | 17 +- include/hkl/source.h | 197 +------- include/hkl/win32/mymap.h | 424 ---------------- src/HKLException.cpp | 21 +- src/SConscript | 6 +- src/diffractometer_eulerian4C.cpp | 4 +- src/diffractometer_kappa4C.cpp | 2 +- src/geometry.cpp | 33 +- src/geometry_eulerian4C.cpp | 4 + src/geometry_eulerian6C.cpp | 4 + src/geometry_kappa4C.cpp | 28 +- src/geometry_kappa6C.cpp | 12 +- src/geometry_twoC.cpp | 4 + src/mode_eulerian4C.cpp | 308 ++++++------ src/mode_twoC.cpp | 54 +-- src/mystring.cpp | 5 +- src/object.cpp | 16 +- src/pseudoaxe_eulerian4C.cpp | 162 ++++--- src/pseudoaxe_eulerian6C.cpp | 31 +- src/pseudoaxe_kappa4C.cpp | 14 +- src/pseudoaxe_twoC.cpp | 73 +-- src/quaternion.cpp | 9 +- src/source.cpp | 169 ++++--- src/svector.cpp | 13 +- src/value.cpp | 2 +- test/SConscript | 15 +- test/crystal_test.cpp | 2 + test/crystallist_test.cpp | 12 + test/crystallist_test.h | 2 + test/diffractometer_eulerian4C_test.cpp | 830 ++++++++++++++++---------------- test/diffractometer_kappa4C_test.cpp | 1 - test/geometry_eulerian4C_test.cpp | 12 +- test/geometry_kappa4C_test.cpp | 65 ++- test/geometry_kappa6C_test.cpp | 47 +- test/geometry_test.cpp | 31 +- test/geometry_twoC_test.cpp | 12 +- test/mode_eulerian4C_test.cpp | 115 +++-- test/mode_twoC_test.cpp | 70 +-- test/pseudoaxe_eulerian4C_test.cpp | 33 +- test/pseudoaxe_eulerian6C_test.cpp | 19 +- test/pseudoaxe_kappa4C_test.cpp | 235 ++++----- test/pseudoaxe_kappa4C_test.h | 4 +- test/pseudoaxe_kappa6C_test.cpp | 140 +++--- test/pseudoaxe_kappa6C_test.h | 8 +- test/pseudoaxe_twoC_test.cpp | 6 +- test/source_test.cpp | 18 +- test/source_test.h | 2 + test/svecmat_test.cpp | 2 +- 57 files changed, 2512 insertions(+), 2658 deletions(-) commit 8c63bafe19f3eddf38ae425c261f6e7cd197775e Author: picca Date: Thu Jun 29 14:37:20 2006 +0200 * DO NOT COMPILE include/hkl/axe.h | 13 +- include/hkl/crystal.h | 1038 +++++++++++++---- include/hkl/crystallist.h | 105 +- include/hkl/derivedmode.h | 67 ++ include/hkl/derivedpseudoaxe.h | 163 +++ include/hkl/diffractometer.h | 1840 ++++++++++++++++++++++--------- include/hkl/diffractometer_eulerian4C.h | 52 +- include/hkl/diffractometer_eulerian6C.h | 49 +- include/hkl/diffractometer_kappa.h | 42 - include/hkl/diffractometer_kappa4C.h | 60 +- include/hkl/diffractometer_kappa6C.h | 8 +- include/hkl/diffractometer_twoC.h | 23 +- include/hkl/geometry.h | 37 +- include/hkl/geometry_eulerian4C.h | 71 +- include/hkl/geometry_eulerian6C.h | 170 ++- include/hkl/geometry_kappa.h | 6 + include/hkl/geometry_kappa4C.h | 76 +- include/hkl/geometry_kappa6C.h | 91 +- include/hkl/geometry_twoC.h | 76 +- include/hkl/mode.h | 123 ++- include/hkl/mode_eulerian4C.h | 52 +- include/hkl/mode_eulerian6C.h | 153 +-- include/hkl/mode_kappa4C.h | 131 +-- include/hkl/mode_kappa6C.h | 143 +-- include/hkl/mode_twoC.h | 9 +- include/hkl/pseudoaxe.h | 170 ++- include/hkl/pseudoaxe_eulerian4C.h | 173 +-- include/hkl/pseudoaxe_eulerian6C.h | 104 +- include/hkl/pseudoaxe_kappa4C.h | 195 +--- include/hkl/pseudoaxe_kappa6C.h | 222 +--- include/hkl/pseudoaxe_twoC.h | 60 +- include/hkl/reflection.h | 697 ++++++------ src/SConscript | 28 +- src/crystal.cpp | 609 ---------- src/crystallist.cpp | 33 - src/diffractometer.cpp | 724 ------------ src/diffractometer_eulerian4C.cpp | 80 +- src/diffractometer_eulerian6C.cpp | 9 +- src/diffractometer_kappa4C.cpp | 81 +- src/diffractometer_kappa6C.cpp | 16 +- src/diffractometer_twoC.cpp | 8 +- src/geometry.cpp | 190 ++-- src/geometry_eulerian4C.cpp | 274 +++-- src/geometry_eulerian6C.cpp | 269 +++-- src/geometry_kappa.cpp | 8 + src/geometry_kappa4C.cpp | 265 +++-- src/geometry_kappa6C.cpp | 293 ++--- src/geometry_twoC.cpp | 158 ++- src/mode.cpp | 38 - src/mode_eulerian4C.cpp | 60 +- src/mode_eulerian6C.cpp | 191 +--- src/mode_kappa4C.cpp | 189 ---- src/mode_kappa6C.cpp | 194 ---- src/mode_twoC.cpp | 46 +- src/pseudoaxe.cpp | 18 - src/pseudoaxe_eulerian4C.cpp | 302 +---- src/pseudoaxe_eulerian6C.cpp | 215 +--- src/pseudoaxe_kappa4C.cpp | 420 +------ src/pseudoaxe_kappa6C.cpp | 488 -------- src/pseudoaxe_twoC.cpp | 119 +- src/reflection.cpp | 161 --- test/SConscript | 24 +- test/affinement_simplex_test.cpp | 22 +- test/affinement_simplex_test.h | 2 +- test/crystal_test.cpp | 333 +++--- test/crystal_test.h | 2 +- test/crystallist_test.cpp | 46 +- test/crystallist_test.h | 3 + test/diffractometer_eulerian4C_test.cpp | 472 ++++---- test/diffractometer_eulerian4C_test.h | 102 +- test/diffractometer_kappa4C_test.cpp | 41 +- test/diffractometer_kappa4C_test.h | 2 +- test/diffractometer_kappa6C_test.cpp | 54 +- test/diffractometer_kappa6C_test.h | 2 +- test/diffractometer_twoC_test.cpp | 30 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian6C_test.cpp | 5 +- test/geometry_kappa4C_test.cpp | 23 +- test/geometry_kappa6C_test.cpp | 24 +- test/geometry_twoC_test.cpp | 4 + test/geometry_twoC_test.h | 2 +- test/mode_eulerian4C_test.cpp | 8 +- test/mode_eulerian4C_test.h | 2 +- test/mode_kappa4C_test.cpp | 188 ++-- test/mode_kappa4C_test.h | 4 +- test/mode_kappa6C_test.cpp | 222 ++-- test/mode_kappa6C_test.h | 4 +- test/mode_twoC_test.cpp | 142 +-- test/mode_twoC_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 38 +- test/pseudoaxe_eulerian6C_test.cpp | 26 +- test/pseudoaxe_kappa4C_test.cpp | 17 +- test/pseudoaxe_kappa6C_test.cpp | 60 +- test/pseudoaxe_kappa6C_test.h | 2 +- test/reflection_test.cpp | 124 +-- 95 files changed, 5785 insertions(+), 7955 deletions(-) commit 2c89d376ca102d5ddef064f5b90d872351de58a5 Author: picca Date: Thu Jun 22 14:04:41 2006 +0200 * add the psi pseudoAxe to the kappa diffractometers TODO | 2 +- include/hkl/HKLException.h | 3 - include/hkl/svecmat.h | 185 ------------------------- src/HKLException.cpp | 300 ++++++++++++----------------------------- src/diffractometer_kappa4C.cpp | 1 + src/diffractometer_kappa6C.cpp | 1 + 6 files changed, 87 insertions(+), 405 deletions(-) commit 2ae66cf84550dd8cc7d3846ff926b57737f54dac Author: picca Date: Mon Jun 19 15:27:50 2006 +0200 * update the version of the library VERSION | 2 +- include/hkl/config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 1e4a35be57e58cb4760d163aee3ec0679c1de83b Author: picca Date: Mon Jun 19 15:19:29 2006 +0200 * modification of the pseudoAxe API (add the uninitialize method) * add the doc/SConscript file to generate the doc with : scons doc doc/SConscript | 2 ++ include/hkl/pseudoaxe.h | 28 ++++++++------------------- src/mystring.cpp | 6 +++--- src/pseudoaxe.cpp | 7 +++---- src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_eulerian6C.cpp | 7 +++---- src/pseudoaxe_kappa4C.cpp | 46 ++++++++++++++++++++++---------------------- src/pseudoaxe_twoC.cpp | 14 +++++++------- 8 files changed, 50 insertions(+), 62 deletions(-) commit 0ea3b21303830b11e066b7081d0150392cff5ea9 Author: picca Date: Thu Jun 8 16:11:28 2006 +0200 * Modification of the scons system - remove the bksys directory - add a tool directory with the doxygen tool SConstruct | 164 +++++++++++++++++++--------- binding/python/SConscript | 20 ++-- bksys/__init__.py | 116 -------------------- bksys/bksys.py | 170 ----------------------------- bksys/boost_python.py | 117 -------------------- bksys/cppunit.py | 127 ---------------------- bksys/generic.py | 191 --------------------------------- bksys/gtkmm.py | 132 ----------------------- bksys/gtkmm2.4.py | 130 ---------------------- bksys/linux2/detect_bksys.py | 34 ------ bksys/linux2/detect_boost_python.py | 17 --- bksys/linux2/detect_cppunit.py | 26 ----- bksys/linux2/detect_generic.py | 11 -- bksys/linux2/detect_python.py | 19 ---- bksys/python.py | 89 --------------- bksys/win32/detect_bksys.py | 36 ------- bksys/win32/detect_cppunit.py | 13 --- bksys/win32/detect_generic.py | 17 --- src/SConscript | 12 +-- test/SConscript | 26 +++-- tool/doxygen.py | 208 ++++++++++++++++++++++++++++++++++++ 21 files changed, 355 insertions(+), 1320 deletions(-) commit f63cfd1efc3e90f3e3e5424b96a2f19eb2313b0e Author: picca Date: Wed Jun 7 10:57:08 2006 +0200 * update the doc include/hkl/geometry_kappa6C.h | 6 +++--- include/hkl/geometry_twoC.h | 2 +- include/hkl/linux/mymap.h | 10 +++++----- include/hkl/objectwithparameters.h | 19 +++++++------------ test/pseudoaxe_kappa6C_test.cpp | 2 +- 5 files changed, 17 insertions(+), 22 deletions(-) commit ba96243587b546daae215fcd513ddf2d81f9c7ba Author: picca Date: Tue Jun 6 18:04:47 2006 +0200 * add the random test to the euleria4C and kappa4C pseudoAxe test/pseudoaxe_eulerian4C_test.cpp | 59 ++++++++++++++++++++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 61 +++++++++++++++++++++++++++++++++++++- 2 files changed, 119 insertions(+), 1 deletion(-) commit 14525001e82a37dc696e5fba8d18d1a89bb30d1c Author: picca Date: Tue Jun 6 17:15:05 2006 +0200 * add random test for all modes. * change the Value copy constructor to be correct * update the pseudoAxe::eulerian6C::Tth, add the direction parameter to deal with gamma = delta = 0. if direction = 1 choose the vertical diffraction plan if direction = 0 choose the horizontal one. TODO | 1 + binding/python/diffractometer_kappa_wrap.cpp | 3 +- binding/python/diffractometer_wrap.cpp | 2 +- include/hkl/affinement.h | 2 +- include/hkl/diffractometer.h | 8 +- include/hkl/geometry.h | 13 +- include/hkl/mode_eulerian6C.h | 426 +++++++++++------------ include/hkl/objectwithparameters.h | 10 +- include/hkl/pseudoaxe_eulerian6C.h | 63 ++-- src/SConscript | 1 + src/diffractometer.cpp | 36 +- src/diffractometer_kappa.cpp | 3 +- src/geometry.cpp | 39 +++ src/mode_eulerian4C.cpp | 19 +- src/mode_eulerian6C.cpp | 487 +++++++++------------------ src/objectwithparameters.cpp | 11 +- src/pseudoaxe_eulerian6C.cpp | 96 +++--- src/value.cpp | 2 +- test/affinement_simplex_test.cpp | 2 + test/diffractometer_eulerian4C_test.cpp | 8 +- test/diffractometer_twoC_test.cpp | 6 +- test/geometry_twoC_test.cpp | 20 +- test/geometry_twoC_test.h | 4 + test/mode_eulerian4C_test.cpp | 346 ++++++++++++------- test/mode_eulerian4C_test.h | 8 +- test/mode_kappa4C_test.cpp | 113 +++++++ test/mode_kappa4C_test.h | 6 + test/mode_kappa6C_test.cpp | 113 +++++++ test/mode_kappa6C_test.h | 6 + test/objectwithparameters_test.cpp | 10 +- test/pseudoaxe_eulerian6C_test.cpp | 6 +- 31 files changed, 1059 insertions(+), 811 deletions(-) commit 91a32a12d876ba9e91cc5f9a928fd96f514213fd Author: picca Date: Thu Jun 1 15:04:09 2006 +0200 * add the pseudoAxe::kappa6C "tth" and "q" + test functions TODO | 6 +- include/hkl/geometry_kappa4C.h | 6 ++ include/hkl/geometry_kappa6C.h | 13 ++++ include/hkl/pseudoaxe_kappa6C.h | 94 +++++++++++++++++++++++-- src/diffractometer_kappa6C.cpp | 2 + src/geometry_kappa4C.cpp | 4 ++ src/geometry_kappa6C.cpp | 38 ++++++++++ src/pseudoaxe_eulerian6C.cpp | 43 +++++++----- src/pseudoaxe_kappa6C.cpp | 152 ++++++++++++++++++++++++++++++++++++++++ test/SConscript | 2 +- test/pseudoaxe_kappa6C_test.cpp | 137 +++++++++++++++++++++++++++++------- test/pseudoaxe_kappa6C_test.h | 7 +- 12 files changed, 447 insertions(+), 57 deletions(-) commit 507a5b5d88f7ac7a23892c90b38e79af2516705d Author: picca Date: Wed May 31 16:22:18 2006 +0200 * add the pseudoAxe::eulerian6C::Tth, Q and eulerian4C::vertical::Psi + test functions TODO | 8 +- include/hkl/geometry.h | 6 + include/hkl/geometry_eulerian6C.h | 13 ++ include/hkl/pseudoaxe_eulerian6C.h | 129 +++++++++++ src/SConscript | 1 + src/affinement_simplex.cpp | 459 +++++++++++++++++++------------------ src/diffractometer_eulerian6C.cpp | 12 +- src/geometry.cpp | 19 ++ src/geometry_eulerian4C.cpp | 15 ++ src/geometry_eulerian6C.cpp | 22 ++ src/pseudoaxe_eulerian6C.cpp | 334 +++++++++++++++++++++++++++ src/svector.cpp | 20 +- test/SConscript | 1 + test/geometry_eulerian6C_test.cpp | 57 ++++- test/geometry_eulerian6C_test.h | 4 + test/pseudoaxe_eulerian6C_test.cpp | 297 ++++++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.h | 39 ++++ 17 files changed, 1190 insertions(+), 246 deletions(-) commit e5e4e3ffd1a9b10ee6fca12d8a2bcb6b0090967b Author: picca Date: Tue May 23 14:09:26 2006 +0200 * add the geometry::Eulerian6C::setFromGeometry method and its test function. include/hkl/geometry_eulerian6C.h | 8 +++ src/geometry_eulerian6C.cpp | 101 ++++++++++++++++++++++++++++++++++++++ test/geometry_eulerian6C_test.cpp | 39 +++++++++++++++ test/geometry_eulerian6C_test.h | 2 + 4 files changed, 150 insertions(+) commit 1ecb565292dba5fe75061e84a1f2945cd88175fa Author: picca Date: Tue May 23 10:59:20 2006 +0200 * clean the pseudoAxe code (remove the unnecessary dynamic_cast) src/pseudoaxe_eulerian4C.cpp | 6 +++--- src/pseudoaxe_kappa4C.cpp | 2 +- src/pseudoaxe_kappa6C.cpp | 20 +++----------------- 3 files changed, 7 insertions(+), 21 deletions(-) commit eaf5395c0f4ed24556f8c66c310fee5fba7862b1 Author: picca Date: Mon May 22 18:08:38 2006 +0200 * add the HKLEXCEPTION macro to take care of the location of the exception. * update all class to use HKLEXCEPTION. include/hkl/HKLException.h | 481 +++++------ include/hkl/linux/mymap.h | 43 +- include/hkl/linux/myvector.h | 732 ++++++++-------- include/hkl/win32/mymap.h | 43 +- include/hkl/win32/myvector.h | 798 +++++++++--------- src/convenience.cpp | 16 +- src/crystal.cpp | 146 ++-- src/diffractometer.cpp | 147 ++-- src/diffractometer_eulerian4C.cpp | 3 + src/diffractometer_eulerian6C.cpp | 189 +---- src/diffractometer_kappa4C.cpp | 49 +- src/diffractometer_kappa6C.cpp | 53 +- src/fitparameter.cpp | 140 +-- src/fitparameterlist.cpp | 188 ++--- src/geometry.cpp | 24 +- src/geometry_eulerian4C.cpp | 5 +- src/geometry_eulerian6C.cpp | 44 +- src/geometry_kappa4C.cpp | 10 +- src/geometry_kappa6C.cpp | 5 +- src/geometry_twoC.cpp | 23 +- src/mode.cpp | 10 +- src/mode_eulerian4C.cpp | 95 ++- src/mode_eulerian6C.cpp | 1687 ++++++++++++++++--------------------- src/mode_kappa4C.cpp | 60 +- src/mode_kappa6C.cpp | 60 +- src/mystring.cpp | 84 +- src/object.cpp | 164 ++-- src/objectwithparameters.cpp | 138 +-- src/pseudoaxe_eulerian4C.cpp | 9 +- src/pseudoaxe_kappa4C.cpp | 50 +- src/pseudoaxe_twoC.cpp | 50 +- src/range.cpp | 116 +-- src/smatrix.cpp | 701 ++++++--------- src/source.cpp | 5 +- src/svector.cpp | 180 ---- src/value.cpp | 152 ++-- 36 files changed, 2901 insertions(+), 3799 deletions(-) commit 3e5dff905fad96e0e06699ea576d13399f7527c5 Author: picca Date: Mon May 22 15:00:57 2006 +0200 * update the gtk frontend TODO | 6 +- binding/python/diffractometer.gazpacho | 152 ++++++++++++++++++++++++++++----- binding/python/diffractometer2.py | 101 ++++++++++++++-------- 3 files changed, 200 insertions(+), 59 deletions(-) commit 70b2fbbbf483fdb58cbbd3956c3da8468d4a5857 Author: picca Date: Fri May 19 15:33:08 2006 +0200 * add the pseudoAxe::kappa4C::vertical::twoC::Th2th, Q2th and Q with test functions. * now pseudoAxe::initialize throw an exception depending one pseudoAxe. * modification in the pseudoAxe to call correctly all virtual method with int the virtual method. TODO | 1 + include/hkl/geometry_kappa4C.h | 10 + include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxe_eulerian4C.h | 10 +- include/hkl/pseudoaxe_kappa4C.h | 96 +++++++- include/hkl/pseudoaxe_kappa6C.h | 8 +- include/hkl/pseudoaxe_twoC.h | 35 ++- src/geometry_kappa4C.cpp | 9 + src/pseudoaxe_eulerian4C.cpp | 49 +++-- src/pseudoaxe_kappa4C.cpp | 437 ++++++++++++++++++++++++++++++------- src/pseudoaxe_kappa6C.cpp | 8 +- src/pseudoaxe_twoC.cpp | 154 ++++++++----- test/SConscript | 5 +- test/geometry_kappa4C_test.cpp | 15 ++ test/geometry_kappa4C_test.h | 68 +++--- test/pseudoaxe_kappa4C_test.cpp | 232 +++++++++++++++++--- test/pseudoaxe_kappa4C_test.h | 8 +- test/pseudoaxe_twoC_test.cpp | 35 ++- 18 files changed, 936 insertions(+), 246 deletions(-) commit 53bd70219dd900673f763b420503477cf50a8e15 Author: picca Date: Thu May 18 17:18:39 2006 +0200 * add the th2th, q2th and q pseudoAxe::eulerian4C::Vertical * add the test function of thoses pseudoaxe. * modification of the setFromGeometry function, add a stric flag to deal with the extra axes when doing conversion between Geometries. TODO | 11 +- include/hkl/geometry.h | 3 +- include/hkl/geometry_eulerian4C.h | 8 +- include/hkl/geometry_kappa4C.h | 3 +- include/hkl/geometry_kappa6C.h | 3 +- include/hkl/geometry_twoC.h | 9 +- include/hkl/pseudoaxe_eulerian4C.h | 114 ++++++++++-------- src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 21 ++-- src/geometry_kappa4C.cpp | 19 ++- src/geometry_kappa6C.cpp | 37 ++++-- src/geometry_twoC.cpp | 20 ++-- src/mode_kappa4C.cpp | 20 ++-- src/mode_kappa6C.cpp | 20 ++-- src/pseudoaxe_eulerian4C.cpp | 213 ++++++++++++++++++++++++++++++++++ src/pseudoaxe_kappa4C.cpp | 22 ++-- src/pseudoaxe_kappa6C.cpp | 40 +++---- test/geometry_eulerian4C_test.cpp | 10 +- test/geometry_kappa4C_test.cpp | 6 +- test/geometry_kappa6C_test.cpp | 6 +- test/geometry_twoC_test.cpp | 16 +-- test/mode_kappa4C_test.cpp | 4 +- test/mode_kappa6C_test.cpp | 4 +- test/pseudoaxe_eulerian4C_test.cpp | 231 +++++++++++++++++++++++++++++++------ test/pseudoaxe_eulerian4C_test.h | 8 +- test/pseudoaxe_kappa4C_test.cpp | 10 +- test/pseudoaxe_kappa6C_test.cpp | 24 ++-- test/pseudoaxe_twoC_test.cpp | 84 +++++++------- test/pseudoaxe_twoC_test.h | 2 +- 29 files changed, 709 insertions(+), 261 deletions(-) commit 7d9a8c7b4e298b1e9a49b329e079fa51556b657c Author: picca Date: Wed May 17 16:28:25 2006 +0200 * update the setFromGeometry method of all geometries include/hkl/geometry_twoC.h | 22 ++--------- src/geometry_eulerian4C.cpp | 59 +++++++++++++++++----------- src/geometry_kappa4C.cpp | 54 ++++++++++++++++++-------- src/geometry_kappa6C.cpp | 60 +++++++++++++++++++---------- src/geometry_twoC.cpp | 94 ++++++++++++++++++++++++++------------------- src/pseudoaxe_kappa4C.cpp | 2 +- 6 files changed, 173 insertions(+), 118 deletions(-) commit a52d8862905d6246d56c65f54666d31ee0ec7e19 Author: picca Date: Wed May 17 14:06:34 2006 +0200 * update the TODO TODO | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) commit 0f0e44befc03e319e519420643a1d1c5850c7d2a Author: picca Date: Wed May 17 13:58:25 2006 +0200 * add the diffractometer::twoC::Vertical and test functions bksys/linux2/detect_bksys.py | 4 +- include/hkl/diffractometer_twoC.h | 58 ++++++ src/SConscript | 1 + src/diffractometer_twoC.cpp | 44 ++++ src/mode_twoC.cpp | 2 +- test/SConscript | 1 + test/diffractometer_twoC_test.cpp | 421 ++++++++++++++++++++++++++++++++++++++ test/diffractometer_twoC_test.h | 61 ++++++ 8 files changed, 589 insertions(+), 3 deletions(-) commit 571bf7231e5310c7fce4f3f133270fb7484fcecb Author: picca Date: Tue May 16 16:42:25 2006 +0200 * add the twoC modes "symetric" and "fix_incidence" and test functions TODO | 7 ++-- include/hkl/mode_twoC.h | 53 ++++++++++++++++++++++++ src/SConscript | 1 + src/mode_twoC.cpp | 72 ++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/mode_twoC_test.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ test/mode_twoC_test.h | 41 +++++++++++++++++++ 7 files changed, 278 insertions(+), 3 deletions(-) commit b0f9651709be4acb7b8f950b911b36af2eb5fafc Author: picca Date: Tue May 16 13:58:07 2006 +0200 * add the pseudoAxe::TwoC::Vertical with test functions. * add the setFromGeometry method to Geometries. * remove CVS header of some files. TODO | 12 +- include/hkl/constants.h | 145 +-------- include/hkl/crystal.h | 266 ---------------- include/hkl/geometry.h | 235 +------------- include/hkl/geometry_eulerian4C.h | 24 +- include/hkl/geometry_kappa4C.h | 23 +- include/hkl/geometry_kappa6C.h | 13 +- include/hkl/pseudoaxe.h | 4 +- include/hkl/pseudoaxe_eulerian4C.h | 85 ++++- include/hkl/pseudoaxe_kappa4C.h | 24 +- include/hkl/pseudoaxe_kappa6C.h | 16 +- include/hkl/pseudoaxe_twoC.h | 111 +++++++ src/SConscript | 1 + src/crystal.cpp | 303 +----------------- src/diffractometer.cpp | 9 +- src/geometry.cpp | 4 + src/geometry_eulerian4C.cpp | 117 +++---- src/geometry_kappa4C.cpp | 137 ++++---- src/geometry_kappa6C.cpp | 74 +++-- src/pseudoaxe_eulerian4C.cpp | 29 +- src/pseudoaxe_kappa4C.cpp | 48 +-- src/pseudoaxe_kappa6C.cpp | 71 +++-- src/pseudoaxe_twoC.cpp | 247 +++++++++++++++ src/reflection.cpp | 536 +++++++++----------------------- src/source.cpp | 364 +++++++--------------- test/SConscript | 1 + test/crystal_test.cpp | 36 +-- test/diffractometer_eulerian4C_test.cpp | 6 +- test/pseudoaxe_twoC_test.cpp | 152 +++++++++ test/pseudoaxe_twoC_test.h | 39 +++ 30 files changed, 1190 insertions(+), 1942 deletions(-) commit 2b17a2dead48bf0ba572ac93aecfe715c8c98d81 Author: picca Date: Thu May 11 15:31:06 2006 +0200 * add the twoC geometry and is test functions TODO | 4 ++ include/hkl/geometry_twoC.h | 79 +++++++++++++++++++++ src/SConscript | 1 + src/geometry_twoC.cpp | 90 ++++++++++++++++++++++++ test/SConscript | 1 + test/geometry_twoC_test.cpp | 163 ++++++++++++++++++++++++++++++++++++++++++++ test/geometry_twoC_test.h | 45 ++++++++++++ 7 files changed, 383 insertions(+) commit 3457b83d80db3dbf3fc3054595c971aa5b95d691 Author: picca Date: Tue May 9 17:47:29 2006 +0200 * update the TODO list * change the name of pseudoAxe::kappa6C::kappa4C::psi in "psi_v" TODO | 16 +++++++++++----- src/pseudoaxe_kappa6C.cpp | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) commit a6903bfeba68d9aab12b6acb071a1a0220de034c Author: picca Date: Tue May 9 16:59:50 2006 +0200 * add the pseudoAxe::kappa6C::kappa4C::vertical and their test functions include/hkl/geometry_eulerian4C.h | 2 +- include/hkl/geometry_kappa4C.h | 13 +- include/hkl/geometry_kappa6C.h | 7 ++ include/hkl/pseudoaxe_kappa4C.h | 9 +- include/hkl/pseudoaxe_kappa6C.h | 103 ++++++++++----- src/geometry_eulerian4C.cpp | 4 +- src/geometry_kappa4C.cpp | 40 +++++- src/geometry_kappa6C.cpp | 12 ++ src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_kappa6C.cpp | 256 +++++++++++++++++++++++++++++--------- test/SConscript | 1 + test/geometry_kappa6C_test.cpp | 1 - test/pseudoaxe_kappa6C_test.cpp | 179 ++++++++++++++++++++++++++ test/pseudoaxe_kappa6C_test.h | 41 ++++++ 14 files changed, 569 insertions(+), 101 deletions(-) commit dbbfc43f62ff6c5535b3d0dba0a881f4aeeb7272 Author: picca Date: Thu May 4 13:48:53 2006 +0200 * add the pseudoAxe::kappa4C::vertical::Psi and is test function TODO | 22 ++-- include/hkl/geometry_eulerian4C.h | 139 +++++++++++++++++-------- include/hkl/geometry_kappa4C.h | 47 ++++++++- include/hkl/pseudoaxe_kappa4C.h | 68 +++++++++---- include/hkl/pseudoaxe_kappa6C.h | 6 +- src/geometry_eulerian4C.cpp | 209 ++++++++++++++++++++++++++------------ src/geometry_kappa4C.cpp | 143 ++++++++++++++++++-------- src/pseudoaxe_eulerian4C.cpp | 18 ++-- src/pseudoaxe_kappa4C.cpp | 85 ++++++++++++++-- src/pseudoaxe_kappa6C.cpp | 27 +++-- test/pseudoaxe_kappa4C_test.cpp | 111 +++++++++++++++++--- test/pseudoaxe_kappa4C_test.h | 7 +- 12 files changed, 653 insertions(+), 229 deletions(-) commit 452fef17be32c9bd7346a3f9e099decd8a00f56b Author: picca Date: Wed Apr 26 15:20:11 2006 +0200 * now all vertical modes are working on win32 and linux include/hkl/mode_eulerian4C.h | 2 +- include/hkl/mode_kappa4C.h | 16 ++-- include/hkl/mode_kappa6C.h | 56 ++++++++++--- src/mode_kappa6C.cpp | 66 ++++++++++++---- test/SConscript | 1 + test/mode_kappa4C_test.cpp | 154 ++++++++++++++++++++++++++++++++++++ test/mode_kappa4C_test.h | 39 +++++++++ test/mode_kappa6C_test.cpp | 178 ++++++++++++++++++++++++++++++++++++++++++ test/mode_kappa6C_test.h | 39 +++++++++ 9 files changed, 514 insertions(+), 37 deletions(-) commit c97c726da8fea13916fc9e0bf7328780ba502824 Author: picca Date: Wed Apr 26 13:33:15 2006 +0200 * now mode::kappa4C works properly on windows include/hkl/mode_kappa4C.h | 44 ++++++++++++++++++- src/mode_kappa4C.cpp | 106 +++++++++++++++++++++++++++++++-------------- 2 files changed, 116 insertions(+), 34 deletions(-) commit 6445604fb1297a76d8f9b98a27d6a628d7ef5bc3 Author: picca Date: Wed Apr 26 10:29:57 2006 +0200 * update the mode::kappa4C before refactoring of the mode du to a bug of VC6 include/hkl/mode_eulerian4C.h | 24 ++++++++++++------------ include/hkl/mode_kappa4C.h | 30 +++++++++++++++--------------- src/mode_kappa4C.cpp | 3 ++- test/SConscript | 1 + 4 files changed, 30 insertions(+), 28 deletions(-) commit 6ca268ec4a66b3bb58dd7ed373a9b8767a6dab2c Author: picca Date: Mon Apr 24 13:32:16 2006 +0200 * add the test functions for the setFromGeometry of the kappa4C::Vertical and Kappa6C classes include/hkl/geometry_kappa4C.h | 8 ++++++- include/hkl/geometry_kappa6C.h | 9 +++++++- src/geometry_kappa4C.cpp | 43 +++++++++++++++++++++++------------- src/geometry_kappa6C.cpp | 49 ++++++++++++++++++++++++++---------------- test/geometry_kappa4C_test.cpp | 26 ++++++++++++++++++++++ test/geometry_kappa4C_test.h | 2 ++ test/geometry_kappa6C_test.cpp | 29 +++++++++++++++++++++++++ test/geometry_kappa6C_test.h | 2 ++ 8 files changed, 133 insertions(+), 35 deletions(-) commit f10e489f3815a2fde2dfb20700fe4a9484b301c4 Author: picca Date: Mon Apr 24 11:46:16 2006 +0200 * add the test functions for geometry::eulerian4C::Vertical::setFromGeometry TODO | 2 +- include/hkl/geometry_eulerian4C.h | 11 ++++++++++- src/geometry_eulerian4C.cpp | 36 ++++++++++++++++++++++-------------- test/geometry_eulerian4C_test.cpp | 37 +++++++++++++++++++++++++++++++++++++ test/geometry_eulerian4C_test.h | 2 ++ 5 files changed, 72 insertions(+), 16 deletions(-) commit 40066244225ec7ab1140bdc5ef819d66f2777639 Author: picca Date: Thu Apr 20 17:39:12 2006 +0200 * update the TODO list TODO | 20 ++++++++++++++------ src/pseudoaxe_kappa6C.cpp | 6 +++--- 2 files changed, 17 insertions(+), 9 deletions(-) commit 33b5e3ebc11e03ba3a514e1ba631d92a2977dafe Author: picca Date: Thu Apr 20 16:26:34 2006 +0200 * add the pseudoAxe::kappa6C::kappa4C::Vertical include/hkl/pseudoaxe_kappa4C.h | 4 +- include/hkl/pseudoaxe_kappa6C.h | 120 ++++++++++++++++++++++++ src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 6 +- src/diffractometer_kappa6C.cpp | 6 ++ src/pseudoaxe_kappa6C.cpp | 200 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 332 insertions(+), 5 deletions(-) commit 77e3988300d8ed4f0124a782e4a434d53e31615e Author: picca Date: Wed Apr 19 17:03:54 2006 +0200 * add the kappa6C modes using the mode::eulerian4C::Vertical include/hkl/geometry_eulerian4C.h | 7 +- include/hkl/geometry_kappa4C.h | 8 +- include/hkl/geometry_kappa6C.h | 3 + include/hkl/mode_eulerian6C.h | 463 +++++++++++++++++++------------------- include/hkl/mode_kappa6C.h | 119 ++++++++++ src/SConscript | 1 + src/diffractometer_kappa6C.cpp | 9 +- src/geometry_eulerian4C.cpp | 24 +- src/geometry_kappa4C.cpp | 2 +- src/geometry_kappa6C.cpp | 23 ++ src/mode_kappa4C.cpp | 20 +- src/mode_kappa6C.cpp | 160 +++++++++++++ 12 files changed, 585 insertions(+), 254 deletions(-) commit ee4176cf30d082dd0fa18204c33c4eee91121464 Author: picca Date: Wed Apr 19 15:05:21 2006 +0200 * add a free method to the MyMap class. binding/python/diffractometer_eulerian4C_wrap.cpp | 17 +- binding/python/diffractometer_kappa4C_wrap.cpp | 16 +- include/hkl/linux/mymap.h | 966 +++++++++++----------- include/hkl/win32/mymap.h | 747 +++++++++-------- src/diffractometer_eulerian4C.cpp | 17 +- src/diffractometer_kappa4C.cpp | 16 +- src/diffractometer_kappa6C.cpp | 10 +- 7 files changed, 890 insertions(+), 899 deletions(-) commit 189f3e1636869714943c893fef306e7657d64ff5 Author: picca Date: Wed Apr 19 12:45:56 2006 +0200 * small modifications to make it compile with MSVC6 bksys/win32/detect_generic.py | 2 +- src/mode_kappa4C.cpp | 11 ++++++----- src/pseudoaxe_eulerian4C.cpp | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) commit 034cea905926d8ad7910b96484c1c3c87ac0f272 Author: picca Date: Wed Apr 19 11:52:22 2006 +0200 * modification to separate vertical and horizontal diffractometers binding/python/diffractometer_eulerian4C_wrap.cpp | 14 +- binding/python/diffractometer_kappa4C_wrap.cpp | 18 +- doc/example/psi.cpp | 4 +- include/hkl/diffractometer_kappa4C.h | 6 +- include/hkl/geometry_eulerian4C.h | 21 +- include/hkl/geometry_kappa4C.h | 71 +-- include/hkl/mode_eulerian4C.h | 244 +++++----- include/hkl/mode_kappa4C.h | 123 ++--- include/hkl/pseudoaxe_eulerian4C.h | 249 +++++----- include/hkl/pseudoaxe_kappa4C.h | 141 +++--- src/diffractometer_eulerian4C.cpp | 14 +- src/diffractometer_kappa4C.cpp | 24 +- src/geometry_eulerian4C.cpp | 12 +- src/geometry_kappa4C.cpp | 10 +- src/mode_eulerian4C.cpp | 558 +++++++++++----------- src/mode_kappa4C.cpp | 240 +++++----- src/pseudoaxe_eulerian4C.cpp | 288 +++++------ src/pseudoaxe_kappa4C.cpp | 350 +++++++------- test/affinement_simplex_test.h | 2 +- test/crystal_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 4 +- test/diffractometer_kappa4C_test.h | 4 +- test/geometry_eulerian4C_test.cpp | 28 +- test/geometry_eulerian4C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 36 +- test/geometry_kappa4C_test.h | 2 +- test/mode_eulerian4C_test.cpp | 14 +- test/mode_eulerian4C_test.h | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 40 +- test/pseudoaxe_eulerian4C_test.h | 6 +- test/pseudoaxe_kappa4C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.h | 2 +- test/reflection_test.h | 2 +- 33 files changed, 1290 insertions(+), 1259 deletions(-) commit 10ed094e41256eee225f1afea84d9835407b200b Author: picca Date: Tue Apr 18 13:24:10 2006 +0200 * remove unnecessary members of the Kappa4C pseudoAxe. include/hkl/pseudoaxe_kappa4C.h | 4 ---- src/pseudoaxe_kappa4C.cpp | 4 ---- test/pseudoaxe_kappa4C_test.cpp | 3 ++- 3 files changed, 2 insertions(+), 9 deletions(-) commit d5dc5995bb5f13dc59d8bda16525d3133a4a3ad1 Author: picca Date: Wed Apr 12 14:52:11 2006 +0200 * now kappa4C is ready with all eulerian4C modes implemented. SConstruct | 1 + TODO | 15 ++- binding/python/diffractometer2.py | 2 +- binding/python/diffractometer_kappa4C_wrap.cpp | 7 +- include/hkl/geometry_eulerian4C.h | 61 ++++++----- include/hkl/geometry_kappa4C.h | 5 + include/hkl/mode_kappa4C.h | 133 ++++++++++++++--------- src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 7 +- src/geometry_eulerian4C.cpp | 80 +++++++++----- src/geometry_kappa4C.cpp | 21 ++++ src/mode_kappa4C.cpp | 145 +++++++++++++++++++++++++ 12 files changed, 363 insertions(+), 115 deletions(-) commit 54d87dcd37066cb290f3b1802e4aa4fbb81a21fd Author: picca Date: Mon Apr 10 10:58:42 2006 +0200 * add the Eulerian pseudoAxes and their test fonctions for the kappa4C geometry. binding/python/diffractometer_kappa4C_wrap.cpp | 6 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxe_eulerian4C.h | 4 +- include/hkl/pseudoaxe_kappa4C.h | 8 +- src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_kappa4C.cpp | 101 ++++++++++++++----------- test/pseudoaxe_kappa4C_test.cpp | 84 ++------------------ 7 files changed, 74 insertions(+), 133 deletions(-) commit 55879b90df4a5a416be1ba7abd9c27901bc472ca Author: picca Date: Thu Apr 6 16:14:06 2006 +0200 * start the pseudoaxe refactoring binding/python/diffractometer2.py | 12 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 3 +- binding/python/diffractometer_eulerian4C_wrap.h | 1 - binding/python/diffractometer_kappa4C_wrap.cpp | 52 ++++ binding/python/diffractometer_kappa4C_wrap.h | 18 ++ binding/python/diffractometer_kappa_wrap.cpp | 9 + binding/python/diffractometer_kappa_wrap.h | 18 ++ binding/python/diffractometer_wrap.cpp | 309 ++++++++++++++++++++++ binding/python/diffractometer_wrap.h | 91 +++++++ include/hkl/diffractometer_eulerian4C.h | 3 - include/hkl/pseudoaxe_kappa4C.h | 118 +++++++++ src/diffractometer_eulerian4C.cpp | 3 + src/diffractometer_kappa4C.cpp | 16 ++ src/pseudoaxe_kappa4C.cpp | 209 +++++++++++++++ test/SConscript | 1 + test/pseudoaxe_kappa4C_test.cpp | 162 ++++++++++++ test/pseudoaxe_kappa4C_test.h | 37 +++ 17 files changed, 1051 insertions(+), 11 deletions(-) commit e7766c9de99e8684dfdc3d5b730a1db3f4ed3b99 Author: picca Date: Wed Apr 5 17:19:21 2006 +0200 * add the kappa4C pseudoAxes binding/python/SConscript | 3 + binding/python/diffractometer.gazpacho | 50 +-- binding/python/diffractometer2.py | 74 ++--- binding/python/diffractometer_eulerian4C_wrap.cpp | 356 +++------------------- binding/python/diffractometer_eulerian4C_wrap.h | 78 +---- binding/python/hkl_wrap.cpp | 109 ++++--- include/hkl/diffractometer.h | 10 +- include/hkl/diffractometer_kappa4C.h | 92 ++++++ include/hkl/mode.h | 244 ++------------- src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 12 + src/diffractometer_kappa6C.cpp | 12 + src/mode.cpp | 16 + src/mode_eulerian4C.cpp | 203 ------------ 14 files changed, 338 insertions(+), 922 deletions(-) commit 4988b2292a9eb0420c85846c927b085d05b040d9 Author: picca Date: Wed Mar 29 09:05:39 2006 +0200 * add forgotten files include/hkl/diffractometer_kappa.h | 42 ++++++++++++++++++++++++++++++++++++ include/hkl/diffractometer_kappa6C.h | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) commit e07c6ce897716a702fd52994d95a540067e4c3f8 Author: picca Date: Mon Mar 27 18:28:55 2006 +0200 * add the diffractometer kappa 4c and 6C + test functions include/hkl/diffractometer.h | 1590 ++++++++++++++-------------------- include/hkl/diffractometer_kappa4C.h | 64 +- src/SConscript | 3 + src/diffractometer.cpp | 359 +------- src/diffractometer_eulerian6C.cpp | 76 +- src/diffractometer_kappa.cpp | 16 + src/diffractometer_kappa4C.cpp | 27 +- src/diffractometer_kappa6C.cpp | 26 + test/SConscript | 2 + test/diffractometer_kappa4C_test.cpp | 48 + test/diffractometer_kappa4C_test.h | 28 + test/diffractometer_kappa6C_test.cpp | 54 ++ test/diffractometer_kappa6C_test.h | 28 + 13 files changed, 934 insertions(+), 1387 deletions(-) commit d9d61711e0a2461cdcf91c2a56beabc76e75eb70 Author: picca Date: Mon Mar 27 15:26:27 2006 +0200 * add the geometry Eulerian 4C and 6C test functions include/hkl/geometry_eulerian6C.h | 12 +++ src/geometry_eulerian6C.cpp | 13 ++- test/SConscript | 2 + test/geometry_eulerian4C_test.cpp | 120 +++++++++++++++++++++++++ test/geometry_eulerian4C_test.h | 43 +++++++++ test/geometry_eulerian6C_test.cpp | 137 +++++++++++++++++++++++++++++ test/geometry_eulerian6C_test.h | 43 +++++++++ test/geometry_test.cpp | 181 ++++++++++---------------------------- test/geometry_test.h | 59 +++++-------- 9 files changed, 434 insertions(+), 176 deletions(-) commit 67443e81bab02d2d92c8d432d6f5d7486e650a9b Author: picca Date: Mon Mar 27 14:35:05 2006 +0200 * add the geometry kappa 4c and 6C test functions. src/geometry_kappa6C.cpp | 4 +- test/SConscript | 2 + test/geometry_kappa4C_test.cpp | 142 ++++++++++++++++++++++++++++++++++++++ test/geometry_kappa4C_test.h | 44 ++++++++++++ test/geometry_kappa6C_test.cpp | 150 +++++++++++++++++++++++++++++++++++++++++ test/geometry_kappa6C_test.h | 42 ++++++++++++ 6 files changed, 382 insertions(+), 2 deletions(-) commit b9b1d24672a0a615dc232b179e06010052b78067 Author: picca Date: Thu Mar 23 18:09:08 2006 +0100 * add the kappa geometry for the kappa4C and kappa6C include/hkl/geometry.h | 78 +++++++++++++++++++++--------------------- include/hkl/geometry_kappa.h | 60 ++++++++++++++++++++++++++++++++ include/hkl/geometry_kappa4C.h | 45 +++++++++++++++--------- include/hkl/geometry_kappa6C.h | 45 ++++++++++++++++++++++++ src/SConscript | 3 ++ src/geometry_kappa.cpp | 40 ++++++++++++++++++++++ src/geometry_kappa4C.cpp | 32 +++++++++++------ src/geometry_kappa6C.cpp | 38 ++++++++++++++++++++ 8 files changed, 274 insertions(+), 67 deletions(-) commit f971a98d6e1a88dbaeef3c3abdbe2f496e1f43a6 Author: picca Date: Wed Mar 22 17:43:38 2006 +0100 * update the TODO list and the Makefile.vc TODO | 2 +- src/Makefile.vc | 55 ++++++++++++++++++++++++++------------------------ src/diffractometer.cpp | 12 +++++------ 3 files changed, 36 insertions(+), 33 deletions(-) commit 5f049a439adc84a98879e62715d8da778868747f Author: picca Date: Thu Mar 2 17:59:39 2006 +0100 * clean the bksys files bksys/bksys.py | 1 - bksys/cppunit.py | 3 +-- bksys/win32/detect_cppunit.py | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) commit f855c54d964f184eaf351b86e71faef88cccc941 Author: picca Date: Thu Mar 2 14:02:46 2006 +0100 * add the detect_bksys.py file for win32 bksys/win32/detect_bksys.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) commit 3207b706e76238886ff35b937548c53c124395a7 Author: picca Date: Thu Mar 2 13:58:28 2006 +0100 * update to compile with MSVC6 SConstruct | 12 +- bksys/__init__.py | 190 +++++++++++------------ bksys/bksys.py | 302 +++++++++++++++++++------------------ bksys/win32/detect_cppunit.py | 15 +- bksys/win32/detect_generic.py | 2 +- include/hkl/affinement.h | 11 +- include/hkl/config.h | 2 +- include/hkl/mode.h | 2 +- include/hkl/mymap.h | 2 +- include/hkl/myvector.h | 2 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/win32/mymap.h | 2 - src/affinement.cpp | 82 +++++----- src/affinement_simplex.cpp | 15 +- src/convenience.cpp | 6 + src/mode.cpp | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 5 +- 17 files changed, 331 insertions(+), 327 deletions(-) commit af8a0bccc926937655e516c176447f50e608fb1c Author: picca Date: Tue Feb 28 17:42:18 2006 +0100 * modification of the uml diagramm SConstruct | 14 +- doc/uml/hkl.dia | 1835 ++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 1542 insertions(+), 307 deletions(-) commit e389307513cfc9937b0b1ac4fc0aaf8e1ac54a54 Author: picca Date: Fri Feb 24 17:25:10 2006 +0100 * update the documentation of quaternion.h include/hkl/quaternion.h | 287 +++++++++++++++++++++++------------------------ 1 file changed, 143 insertions(+), 144 deletions(-) commit c8fe7b59f732189d362c88200fe68f1dc24b15df Author: picca Date: Fri Feb 24 12:13:53 2006 +0100 * add the psi pseudomotor of the Eulerian4C diffractometer. TODO | 5 +- binding/python/diffractometer.gazpacho | 142 +-- binding/python/diffractometer.py | 1097 +++++++++++---------- binding/python/diffractometer2.py | 383 ++++--- binding/python/diffractometer_eulerian4C_wrap.cpp | 284 +++--- binding/python/diffractometer_eulerian4C_wrap.h | 17 +- binding/python/hkl_wrap.cpp | 12 +- doc/example/psi.cpp | 2 +- include/hkl/diffractometer.h | 218 ++-- include/hkl/geometry.h | 2 +- include/hkl/pseudoaxe.h | 29 +- include/hkl/pseudoaxe_eulerian4C.h | 8 +- include/hkl/quaternion.h | 17 +- src/diffractometer.cpp | 22 +- src/geometry.cpp | 550 ++++++----- src/pseudoaxe.cpp | 1 - src/pseudoaxe_eulerian4C.cpp | 32 +- src/quaternion.cpp | 361 +++---- src/svector.cpp | 426 ++++---- test/geometry_test.cpp | 22 +- test/pseudoaxe_eulerian4C_test.cpp | 44 +- test/quaternion_test.cpp | 51 +- test/quaternion_test.h | 7 +- 23 files changed, 2060 insertions(+), 1672 deletions(-) commit 0b2246ae6a5c90a18b37bb88e89c37203f85d04a Author: picca Date: Fri Feb 10 15:54:52 2006 +0100 * add the get_value of the Psi pseudoAxe * add the convenience function normalizeAngle * move the _atan2 and _asin in the hkl::convenience namespace and rename them atan2 and asin doc/hkl.lyx | 0 include/hkl/convenience.h | 35 + include/hkl/mode.h | 20 +- include/hkl/pseudoaxe.h | 45 +- include/hkl/pseudoaxe_eulerian4C.h | 192 ++--- include/hkl/quaternion.h | 4 +- src/SConscript | 1 + src/convenience.cpp | 49 ++ src/crystal.cpp | 1125 ++++++++++++++-------------- src/diffractometer.cpp | 1458 ++++++++++++++++++------------------ src/mode.cpp | 48 +- src/mode_eulerian4C.cpp | 568 +++++++------- src/pseudoaxe.cpp | 13 +- src/pseudoaxe_eulerian4C.cpp | 314 ++++---- src/quaternion.cpp | 71 +- test/pseudoaxe_eulerian4C_test.cpp | 129 ++-- test/pseudoaxe_eulerian4C_test.h | 9 +- 17 files changed, 2096 insertions(+), 1985 deletions(-) commit 62aa233b89e81ab33c46fe63da40434b13789258 Author: picca Date: Thu Feb 9 10:41:42 2006 +0100 * now the pseudoAxe::Psi::set_value is working bksys/linux2/detect_generic.py | 2 +- doc/example/plot.gnuplot | 48 ++++++++ doc/example/psi.cpp | 8 +- include/hkl/axe.h | 162 ++++++++++++++----------- include/hkl/geometry.h | 10 +- include/hkl/geometry_eulerian4C.h | 11 ++ include/hkl/pseudoaxe_eulerian4C.h | 15 ++- src/axe.cpp | 40 +++++-- src/geometry.cpp | 17 +++ src/geometry_eulerian4C.cpp | 10 ++ src/pseudoaxe_eulerian4C.cpp | 234 ++++++++++++++++++------------------- test/axe_test.cpp | 56 +++++++-- test/axe_test.h | 24 ++-- test/geometry_test.cpp | 39 +++++++ test/geometry_test.h | 4 + 15 files changed, 444 insertions(+), 236 deletions(-) commit 632172d34923318c0c1345cbf515e85f7b9d6345 Author: picca Date: Fri Feb 3 16:42:55 2006 +0100 * update comments and add the second solution to the psi pseudoAxe doc/Doxyfile | 6 ++-- doc/example/plot.gnuplot | 40 +++++++++++++++++++------ include/hkl/diffractometer.h | 4 +-- include/hkl/fitparameterlist.h | 26 ++++++++-------- include/hkl/geometry.h | 7 +++-- include/hkl/linux/mymap.h | 4 +-- include/hkl/pseudoaxe_eulerian4C.h | 9 +++--- include/hkl/range.h | 61 +++++++++++++++++++++----------------- src/pseudoaxe_eulerian4C.cpp | 36 ++++++++++++++-------- 9 files changed, 116 insertions(+), 77 deletions(-) commit fc9a5dd35f73c5b4364b2e9d82322b47e3b09361 Author: picca Date: Thu Feb 2 18:14:08 2006 +0100 * add the psi example use to compute curves * add the gnuplot script to plot these curves modified: SConstruct new file: doc/example/SConscript new file: doc/example/plot.gnuplot new file: doc/example/psi.cpp modified: include/hkl/diffractometer.h SConstruct | 2 +- doc/example/SConscript | 15 + doc/example/plot.gnuplot | 15 + doc/example/psi.cpp | 50 +++ include/hkl/diffractometer.h | 854 +++++++++++++++++++++---------------------- 5 files changed, 508 insertions(+), 428 deletions(-) commit 3ee6413b092193e97ace00790608b60ed45cca50 Author: picca Date: Thu Feb 2 14:30:23 2006 +0100 * modified: bksys/linux2/detect_cppunit.py to fill CXXFLAGS only if needed bksys/linux2/detect_cppunit.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit a221387369dfe8df34030e213d19708b3a7844c3 Merge: ef99b4b0 db5768a4 Author: picca Date: Thu Feb 2 11:30:48 2006 +0100 Merge branch 'cvshead' commit db5768a4bdabba2a0ea80bd3275183c3a903bb6d Author: picca Date: Thu Feb 2 09:48:32 2006 +0000 * bksys modification to compile only the python binding on linux * modification of the diffractometer_Euerlai4C_test to compile with MSVC6 SConstruct | 16 ++++++++++++---- bksys/cppunit.py | 6 ++++-- test/diffractometer_eulerian4C_test.cpp | 30 +++++++++++++++--------------- 3 files changed, 31 insertions(+), 21 deletions(-) commit ef99b4b00c1f3569d33854cf299f2360db8cd5d5 Author: picca Date: Wed Feb 1 16:20:21 2006 +0100 * add the clean target to the project. bksys/bksys.py | 5 +++++ bksys/generic.py | 7 +++++++ 2 files changed, 12 insertions(+) commit 5f096ba6ecf0ac3eed7328ddc03da66295f8c723 Author: picca Date: Wed Feb 1 14:42:17 2006 +0000 * add the affinement dialog to the gtk frontend binding/python/diffractometer.gazpacho | 842 +++++++++++++++++++++++++++++++-- binding/python/diffractometer2.py | 58 +-- 2 files changed, 825 insertions(+), 75 deletions(-) commit b05984f40c9adb35fbb83667e0f1a06e3926704d Author: picca Date: Wed Feb 1 14:42:08 2006 +0000 * add the new crystal dialog to the frontend binding/python/diffractometer.gazpacho | 541 +++++++++++++++++++-------------- binding/python/diffractometer2.py | 5 +- 2 files changed, 318 insertions(+), 228 deletions(-) commit 9f690807cedd350093d6e469fc9e70648563337b Author: picca Date: Wed Feb 1 14:41:59 2006 +0000 * update the gtk frontend to works with gazpacho binding/python/diffractometer.gazpacho | 1383 ++++----------------- binding/python/diffractometer.py | 15 +- binding/python/diffractometer2.py | 63 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 17 + 4 files changed, 329 insertions(+), 1149 deletions(-) commit ff9218190c47e4880ca21fe210d14e686fda3165 Author: picca Date: Wed Feb 1 14:41:21 2006 +0000 * update diffractometer.h to use string instead of MyString. * So python binding ca compile without modification. * add link to the hkl library for the binding. * the diffractometer application is working now. binding/python/diffractometer.py | 15 ++++++--------- binding/python/diffractometer_eulerian4C_wrap.cpp | 17 ----------------- include/hkl/diffractometer.h | 8 +++++++- src/diffractometer.cpp | 8 +++++++- 4 files changed, 20 insertions(+), 28 deletions(-) commit 228ea237199f7305483a201e54537ec3a88503b2 Author: picca Date: Wed Feb 1 15:28:06 2006 +0100 * add the affinement dialog to the gtk frontend binding/python/diffractometer.gazpacho | 842 +++++++++++++++++++++++++++++++-- binding/python/diffractometer2.py | 58 +-- 2 files changed, 825 insertions(+), 75 deletions(-) commit a3f5e98c1a3467eeac29ec0c5a464807e1db60fe Author: picca Date: Wed Feb 1 14:34:00 2006 +0100 * add the new crystal dialog to the frontend binding/python/diffractometer.gazpacho | 541 +++++++++++++++++++-------------- binding/python/diffractometer2.py | 5 +- 2 files changed, 318 insertions(+), 228 deletions(-) commit ac297c572a8b4fbf3a774bcc3570e55eeabb281c Author: picca Date: Wed Feb 1 14:18:15 2006 +0100 * update the gtk frontend to works with gazpacho binding/python/diffractometer.gazpacho | 1005 +++++++++++++++++++++ binding/python/diffractometer.glade | 32 +- binding/python/diffractometer.py | 15 +- binding/python/diffractometer2.py | 649 +++++++++++++ binding/python/diffractometer_eulerian4C_wrap.cpp | 17 + binding/python/diffractometer_eulerian4C_wrap.h | 4 + bksys/gtkmm.py | 132 +++ bksys/gtkmm2.4.py | 130 +++ 8 files changed, 1948 insertions(+), 36 deletions(-) commit 2a6bb45695d68cc879bacbd23f00a8fb12731244 Author: picca Date: Tue Jan 31 10:00:34 2006 +0100 * update diffractometer.h to use string instead of MyString. * So python binding ca compile without modification. * add link to the hkl library for the binding. * the diffractometer application is working now. SConstruct | 5 +- binding/python/SConscript | 13 +- binding/python/diffractometer.py | 2 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 12 +- include/hkl/diffractometer.h | 117 +++++------ src/diffractometer.cpp | 242 +++++++++++++++------- 6 files changed, 238 insertions(+), 153 deletions(-) commit 210598b734620fb333f3559b245f1c2daf387a5e Author: picca Date: Mon Jan 30 17:41:32 2006 +0100 * remove the construction of python binding by default * create a mymap.h and myvector.h deauling with the platform during compilation no more need to add include path depending on the platform. SConstruct | 3 +-- TODO | 2 +- include/hkl/linux/mymap.h | 6 +++--- include/hkl/linux/myvector.h | 6 +++--- include/hkl/mymap.h | 12 ++++++++++++ include/hkl/myvector.h | 12 ++++++++++++ include/hkl/win32/mymap.h | 6 +++--- include/hkl/win32/myvector.h | 6 +++--- src/SConscript | 6 ------ test/SConscript | 6 ------ 10 files changed, 38 insertions(+), 27 deletions(-) commit d462c6508b32b517161d93d81dfa8027658fa059 Author: picca Date: Mon Jan 30 16:38:17 2006 +0100 * update bksys to compile properly on linux SConstruct | 4 +- binding/python/diffractometer.py | 4 ++ binding/python/diffractometer_eulerian4C_wrap.cpp | 26 +++++---- binding/python/diffractometer_eulerian4C_wrap.h | 6 +- binding/python/hkl_wrap.cpp | 2 +- binding/python/reflection_wrap.cpp | 32 ----------- bksys/boost_python.py | 67 +++++++++++++---------- bksys/generic.py | 3 +- include/hkl/mystring.h | 6 ++ src/mystring.cpp | 3 + 10 files changed, 76 insertions(+), 77 deletions(-) commit 38b64182e3a6fbb2c8fc6afd7ba566ae95b89494 Author: picca Date: Mon Jan 30 14:56:28 2006 +0100 * update the bksys system to add the boost_python module SConstruct | 6 +- binding/SConscript | 2 - binding/python/SConscript | 27 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 8 +- binding/python/diffractometer_eulerian4C_wrap.h | 1 + bksys/boost_python.py | 108 +++++++ bksys/cppunit.py | 183 ++++++------ bksys/generic.py | 334 +++++++++++----------- bksys/linux2/detect_boost_python.py | 17 ++ bksys/linux2/detect_cppunit.py | 27 +- bksys/linux2/detect_python.py | 19 ++ bksys/python.py | 89 ++++++ bksys/win32/detect_generic.py | 2 +- 13 files changed, 539 insertions(+), 284 deletions(-) commit 3c003acf6608233c5ae412d302c9c183bbe50fb9 Author: picca Date: Fri Jan 27 16:46:59 2006 +0100 modified: bksys/linux2/detect_cppunit.py bksys/linux2/detect_cppunit.py | 3 +++ 1 file changed, 3 insertions(+) commit 71b4d48abde6a2827dd71deccaa6d4b00cc870be Author: picca Date: Fri Jan 27 15:28:40 2006 +0100 modified: bksys/linux2/detect_generic.py deleted: toto bksys/linux2/detect_generic.py | 2 +- toto | 0 2 files changed, 1 insertion(+), 1 deletion(-) commit c5722bcd78b9a8469cbc348e04b8805d4f2267c6 Author: picca Date: Fri Jan 27 15:18:51 2006 +0100 new file: toto toto | 0 1 file changed, 0 insertions(+), 0 deletions(-) commit 4b15fca5af9c73fcd35453a2600bc3c8b6205a02 Author: picca Date: Fri Jan 27 15:03:11 2006 +0100 deleted: release_notes.txt release_notes.txt | 16 ---------------- 1 file changed, 16 deletions(-) commit 696d941ed850130adfd23ea0edfc3b9221282203 Author: picca Date: Fri Jan 27 15:01:40 2006 +0100 new file: release_notes.txt release_notes.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 2cb7dba40c74462fe57c54a6c0453afb36fdaf90 Author: picca Date: Thu Jan 26 18:27:55 2006 +0100 include/hkl/linux/mymap.h | 530 +++++++++++++++++++++++++++++++++++++++++++ include/hkl/linux/myvector.h | 498 ++++++++++++++++++++++++++++++++++++++++ include/hkl/win32/mymap.h | 420 ++++++++++++++++++++++++++++++++++ include/hkl/win32/myvector.h | 458 +++++++++++++++++++++++++++++++++++++ 4 files changed, 1906 insertions(+) commit 9b7da4dcbd7de9c7a7088016743da2fd30e37713 Author: picca Date: Thu Jan 26 18:26:30 2006 +0100 release_notes.txt | 16 ---------------- 1 file changed, 16 deletions(-) commit a24fd18d4a8bb0398e3d0946a368b7ece9008123 Author: picca Date: Thu Jan 26 16:29:34 2006 +0000 * rename readme.txt README readme.txt => README | 0 1 file changed, 0 insertions(+), 0 deletions(-) commit e5f46b6b1959bdab857b81ecbae3a696073797dc Author: picca Date: Thu Jan 26 15:28:24 2006 +0000 * Add the VERSION file VERSION | 1 + 1 file changed, 1 insertion(+) commit c5a779e1e8eb67e45df3b9fced1e5ef5e5069140 Author: picca Date: Thu Jan 26 14:24:51 2006 +0000 * update documentation TODO | 6 +- doc/Doxyfile | 10 +- include/hkl/affinement.h | 104 +++++++------- include/hkl/axe.h | 6 +- include/hkl/crystal.h | 14 +- include/hkl/diffractometer.h | 52 ++++--- include/hkl/fitparameter.h | 102 +++++++------- include/hkl/geometry.h | 61 ++++----- include/hkl/mode.h | 72 ++++++---- include/hkl/mode_eulerian4C.h | 54 ++++---- include/hkl/mode_eulerian6C.h | 271 +++++++------------------------------ include/hkl/mystring.h | 24 +++- include/hkl/object.h | 69 ++++++---- include/hkl/objectwithparameters.h | 79 ++++++----- include/hkl/pseudoaxe.h | 13 +- include/hkl/pseudoaxe_eulerian4C.h | 55 ++------ include/hkl/quaternion.h | 113 ++++++++-------- include/hkl/range.h | 2 +- include/hkl/reflection.h | 39 +++--- include/hkl/value.h | 110 +++++++-------- src/diffractometer.cpp | 7 +- src/fitparameter.cpp | 4 +- src/geometry.cpp | 4 +- src/mode.cpp | 8 +- src/pseudoaxe_eulerian4C.cpp | 4 - src/value.cpp | 3 +- 26 files changed, 590 insertions(+), 696 deletions(-) commit c9124da9d415981c8a7b8daf8d200ea1fedbe970 Author: picca Date: Wed Jan 25 13:46:25 2006 +0000 * remove lattice.cpp and vertex.cpp src/lattice.cpp | 149 -------------------------------------------------------- src/vertex.cpp | 132 ------------------------------------------------- 2 files changed, 281 deletions(-) commit 0d5908c1a2ec450b7c63ef667be6c6900c2ea8e2 Author: picca Date: Wed Jan 25 13:44:39 2006 +0000 * remove constant.cpp superseded by constant.h src/constants.cpp | 141 ------------------------------------------------------ 1 file changed, 141 deletions(-) commit e1f7b6b260c6057beedb7a726a3c7cab51f909d3 Author: picca Date: Tue Jan 24 16:37:43 2006 +0000 * update scons files to compile with the new includes location src/SConscript | 6 +++--- test/SConscript | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) commit eacd28be00e69601062067084efac1ff4db0b22c Author: picca Date: Tue Jan 24 16:18:30 2006 +0000 *move the includes files include/{ => hkl}/HKLException.h | 7 +- include/{ => hkl}/affinement.h | 0 include/{ => hkl}/axe.h | 0 include/{ => hkl}/config.h | 0 include/{ => hkl}/constants.h | 7 +- include/{ => hkl}/crystal.h | 7 +- include/{ => hkl}/crystallist.h | 0 include/{ => hkl}/diffractometer.h | 7 +- include/{ => hkl}/diffractometer_eulerian4C.h | 0 include/{ => hkl}/diffractometer_eulerian6C.h | 0 include/{ => hkl}/diffractometer_kappa4C.h | 0 include/{ => hkl}/fitparameter.h | 0 include/{ => hkl}/fitparameterlist.h | 0 include/{ => hkl}/geometry.h | 7 +- include/{ => hkl}/geometry_eulerian4C.h | 0 include/{ => hkl}/geometry_eulerian6C.h | 0 include/{ => hkl}/geometry_kappa4C.h | 0 include/{ => hkl}/mode.h | 7 +- include/{ => hkl}/mode_eulerian4C.h | 0 include/{ => hkl}/mode_eulerian6C.h | 0 include/{ => hkl}/mode_kappa4C.h | 0 include/{ => hkl}/mystring.h | 0 include/{ => hkl}/object.h | 0 include/{ => hkl}/objectwithparameters.h | 0 include/{ => hkl}/pseudoaxe.h | 0 include/{ => hkl}/pseudoaxe_eulerian4C.h | 0 include/{ => hkl}/quaternion.h | 0 include/{ => hkl}/range.h | 0 include/{ => hkl}/reflection.h | 7 +- include/{ => hkl}/source.h | 7 +- include/{ => hkl}/svecmat.h | 7 +- include/{ => hkl}/value.h | 0 include/lattice.h | 52 --- include/linux/mymap.h | 452 ------------------------- include/linux/myvector.h | 447 ------------------------- include/vertex.h | 150 --------- include/win32/mymap.h | 420 ----------------------- include/win32/myvector.h | 458 -------------------------- 38 files changed, 45 insertions(+), 1997 deletions(-) commit a824eddf08228cb666f4be12850146ae3b8238ec Author: picca Date: Tue Jan 24 14:56:30 2006 +0000 *** empty log message *** include/{linux => }/mystring.h | 0 include/win32/mystring.h | 24 ------------------------ 2 files changed, 24 deletions(-) commit ac74a01e545b7bf065863740a946ebc50bcdae94 Author: picca Date: Tue Jan 24 14:54:09 2006 +0000 * now serialization works on win32 include/win32/mymap.h | 21 +++++++++++++++------ include/win32/myvector.h | 15 +++++++++++++-- 2 files changed, 28 insertions(+), 8 deletions(-) commit b859055bdecca48f19eaf200e42e2c04458349f4 Author: picca Date: Tue Jan 24 14:31:23 2006 +0000 * add the MyString class include/affinement.h | 4 +- include/axe.h | 6 +- include/crystal.h | 9 +- include/crystallist.h | 6 +- include/diffractometer.h | 126 +++--- include/fitparameter.h | 6 +- include/fitparameterlist.h | 3 +- include/geometry.h | 23 +- include/linux/mymap.h | 706 +++++++++++++++--------------- include/linux/mystring.h | 24 ++ include/linux/myvector.h | 737 ++++++++++++++++---------------- include/object.h | 18 +- include/objectwithparameters.h | 10 +- include/pseudoaxe.h | 5 +- include/range.h | 4 +- include/reflection.h | 15 +- include/value.h | 6 +- include/win32/mymap.h | 48 +-- include/win32/mystring.h | 24 ++ include/win32/myvector.h | 35 +- src/SConscript | 1 + src/affinement.cpp | 2 +- src/axe.cpp | 2 +- src/crystal.cpp | 9 +- src/crystallist.cpp | 2 +- src/diffractometer.cpp | 135 +++--- src/fitparameter.cpp | 2 +- src/geometry.cpp | 49 +-- src/mystring.cpp | 47 ++ src/object.cpp | 18 +- src/objectwithparameters.cpp | 8 +- src/range.cpp | 2 +- src/reflection.cpp | 11 +- src/value.cpp | 2 +- test/SConscript | 1 + test/axe_test.cpp | 4 +- test/crystal_test.cpp | 2 +- test/diffractometer_eulerian4C_test.cpp | 30 +- test/geometry_test.cpp | 10 +- test/mystring_test.cpp | 29 ++ test/mystring_test.h | 24 ++ test/object_test.cpp | 8 +- test/objectwithparameters_test.cpp | 6 +- test/reflection_test.cpp | 2 +- 44 files changed, 1201 insertions(+), 1020 deletions(-) commit 0c810e475098dcdc483fa70adf02f24b51966cd0 Author: picca Date: Tue Jan 24 09:06:46 2006 +0000 * update the win32 part include/linux/mymap.h | 30 ---------------------- include/win32/mymap.h | 70 ++++++++++++++++++++++++++++++++++++++++++-------- src/diffractometer.cpp | 6 ++--- 3 files changed, 63 insertions(+), 43 deletions(-) commit e6cff6276cd384a0b8d805b19848acbaf2a9ed12 Author: picca Date: Mon Jan 23 16:14:55 2006 +0000 * now diffractometer serialization works!!! SConstruct | 4 +- doc/uml/hkl.dia | 2248 ++++++++++++++++++++++++++----- include/affinement.h | 4 +- include/diffractometer.h | 14 +- include/diffractometer_eulerian4C.h | 2 +- include/linux/mymap.h | 213 ++- include/mode.h | 7 +- include/pseudoaxe.h | 4 +- include/reflection.h | 6 +- src/axe.cpp | 7 +- src/crystal.cpp | 104 +- src/diffractometer.cpp | 104 +- src/diffractometer_eulerian4C.cpp | 6 +- src/geometry.cpp | 59 +- src/reflection.cpp | 38 +- test/SConscript | 12 +- test/diffractometer_eulerian4C_test.cpp | 49 + 17 files changed, 2420 insertions(+), 461 deletions(-) commit 73cac96f3ca8743f640a86b7f467f4bba51e4432 Author: picca Date: Mon Jan 16 15:41:48 2006 +0000 * bksys update bksys/linux2/detect_cppunit.py | 3 +-- bksys/linux2/detect_generic.py | 2 +- bksys/win32/detect_cppunit.py | 7 ++++-- bksys/win32/detect_generic.py | 56 ++++-------------------------------------- 4 files changed, 12 insertions(+), 56 deletions(-) commit e9cd3b34472e706a53d68c11a0b1613942f51017 Author: picca Date: Mon Jan 16 15:30:09 2006 +0000 * update bksys SConstruct | 15 +- bksys/__init__.py | 56 +++-- bksys/bksys.py | 449 +++++++---------------------------------- bksys/cppunit.py | 13 +- bksys/generic.py | 66 +++--- bksys/linux2/detect_bksys.py | 10 +- bksys/linux2/detect_cppunit.py | 5 + bksys/linux2/detect_generic.py | 57 +----- 8 files changed, 175 insertions(+), 496 deletions(-) commit 25c7f3a17528e1d2bf7f7409042e0f4cfbf1791a Author: picca Date: Mon Jan 16 09:22:10 2006 +0000 *update bksys bksys/bksys.py | 8 ++++---- bksys/cppunit.py | 8 ++++---- bksys/generic.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) commit 85cea40d89cdab9c276161334235745365ca7736 Author: picca Date: Fri Jan 13 13:47:57 2006 +0000 * start refactoring of bksys SConstruct | 10 +---- bksys/__init__.py | 62 ++++++++++++++----------------- bksys/bksys.py | 87 +++++++++++++++++++++++++++++++++++++------- bksys/cppunit.py | 2 +- bksys/generic.py | 2 +- bksys/linux2/detect_bksys.py | 58 +++++++---------------------- test/SConscript | 3 +- 7 files changed, 119 insertions(+), 105 deletions(-) commit 3182ec44748769270c2562bffd5369902077771c Author: picca Date: Thu Jan 12 13:41:24 2006 +0000 * now it works on win32 and linux include/win32/mymap.h | 4 ++-- test/SConscript | 2 +- test/reflection_test.cpp | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-) commit 434377bdb8f9fcf84cc56fdebe3169f10f0f1b4e Author: picca Date: Thu Jan 12 13:06:54 2006 +0000 * modification of MyMap for win32 include/win32/mymap.h | 19 +++++++++++++++++++ src/geometry.cpp | 3 +-- test/reflection_test.cpp | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) commit 39c58d7bb71d8f4b0f0f8ba985cfb603974a7f42 Author: picca Date: Thu Jan 12 12:43:43 2006 +0000 * work on the persistance test/SConscript | 5 +++-- test/geometry_test.cpp | 8 ++++---- test/reflection_test.cpp | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) commit bd330b6fa56a742b1f088451884d3e16cc8bfda3 Author: picca Date: Thu Jan 12 09:52:13 2006 +0000 * clean the bksys files bksys/bksys.py | 1 - 1 file changed, 1 deletion(-) commit 8748a79f8e8e387fb7089e51678606a36c207881 Author: picca Date: Thu Jan 12 09:18:09 2006 +0000 * now bksys works on win32 bksys/bksys.py | 1 + bksys/generic.py | 2 +- bksys/win32/detect_cppunit.py | 2 + include/win32/mymap.h | 57 +++++++++++++++++++++++ include/win32/myvector.h | 104 +++++++++++++++++++++++++++++++++++++----- src/SConscript | 2 +- test/SConscript | 2 +- 7 files changed, 155 insertions(+), 15 deletions(-) commit 88ca1d1cd6240ba801580e29fcd5eddaaf71eb5b Author: picca Date: Wed Jan 11 16:34:08 2006 +0000 *** empty log message *** bksys/bksys.pyc | Bin 13026 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit ee7543951104e6474a233512d90cfbd8002f25d6 Author: picca Date: Wed Jan 11 16:33:24 2006 +0000 * add ToStream to MyStarMap bksys/bksys.pyc | Bin 11370 -> 13026 bytes include/win32/mymap.h | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+) commit efcb9e985aed4f755deef67e835eac65b3ca7b3b Author: picca Date: Wed Jan 11 15:30:55 2006 +0000 * update bksys to work on windows bksys/__init__.py | 25 +++++++++++++------------ bksys/bksys.py | 15 ++++++++++++--- bksys/bksys.pyc | Bin 12685 -> 11370 bytes bksys/cppunit.py | 25 +++++++++++++++---------- bksys/generic.py | 12 +++++++++++- bksys/linux2/detect_bksys.py | 12 ++++++++++++ bksys/linux2/detect_generic.py | 11 ----------- bksys/win32/detect_cppunit.py | 6 ++---- bksys/win32/detect_generic.py | 16 +--------------- 9 files changed, 66 insertions(+), 56 deletions(-) commit 5ea3753e54c4bc929d56aa43db0edb2bb641ea2a Author: picca Date: Wed Jan 11 13:44:01 2006 +0000 * refactoring of bksys bksys/linux2/detect_bksys.py | 54 +++++++++++++++++++++++++++++++++ bksys/linux2/detect_cppunit.py | 18 +++++++++++ bksys/linux2/detect_generic.py | 69 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) commit c7a4a07debfc10328d1a3d336608ac691f1c6d76 Author: picca Date: Wed Jan 11 13:41:42 2006 +0000 *remove the unix directory bksys/unix/detect_bksys.py | 54 ---------------- bksys/unix/detect_cppunit.py | 23 ------- bksys/unix/detect_generic.py | 142 ------------------------------------------- 3 files changed, 219 deletions(-) commit 268c92553f8351e391126fb0df0a0d736fcfb083 Author: picca Date: Wed Jan 11 13:12:37 2006 +0000 *update bksys SConstruct | 14 +- bksys/__init__.py | 109 ++++ bksys/bksys.py | 387 ++++++++++++++ bksys/bksys.pyc | Bin 0 -> 12685 bytes bksys/cppunit.py | 119 ++--- bksys/generic.py | 1159 +++-------------------------------------- bksys/unix/detect_bksys.py | 54 ++ bksys/win32/detect_generic.py | 90 +--- test/SConscript | 10 +- test/main.cpp | 16 + 10 files changed, 710 insertions(+), 1248 deletions(-) commit b19d05907c32c6947b001d1219f6a714d21d853f Author: picca Date: Fri Jan 6 17:13:24 2006 +0000 *** empty log message *** bksys/generic.py | 3 ++- bksys/win32/detect_cppunit.py | 3 ++- test/SConscript | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) commit 2e6e56fdf47dc95f6c2fbb0812115be888d81f5a Author: picca Date: Fri Jan 6 16:28:49 2006 +0000 * bksys modifications bksys/cppunit.py | 3 ++- bksys/win32/detect_cppunit.py | 26 +++++++------------------- 2 files changed, 9 insertions(+), 20 deletions(-) commit 596f6bfed6e5dd7716aca572bdc98409e52b7b3d Author: picca Date: Fri Jan 6 16:24:29 2006 +0000 * modification of the bksys files SConstruct | 3 +- TODO | 3 + bksys/cppunit.py | 35 +- bksys/unix/detect_cppunit.py | 13 +- bksys/win32/detect_cppunit.py | 17 +- include/affinement.h | 13 + include/config.h | 6 + include/crystal.h | 346 +++++----- include/crystallist.h | 8 - include/diffractometer.h | 982 +++++++++++++-------------- include/linux/mymap.h | 28 + include/mode.h | 13 +- include/pseudoaxe.h | 14 - include/pseudoaxe_eulerian4C.h | 29 +- include/reflection.h | 225 ++++--- include/svecmat.h | 6 +- src/affinement.cpp | 23 + src/crystal.cpp | 964 +++++++++++++------------- src/crystallist.cpp | 1 + src/diffractometer.cpp | 1114 ++++++++++++++++--------------- src/pseudoaxe.cpp | 12 - src/pseudoaxe_eulerian4C.cpp | 38 +- src/reflection.cpp | 41 +- src/smatrix.cpp | 7 +- src/svector.cpp | 7 +- test/affinement_simplex_test.cpp | 20 + test/affinement_simplex_test.h | 2 + test/crystal_test.cpp | 21 + test/crystal_test.h | 3 +- test/crystallist_test.cpp | 23 + test/crystallist_test.h | 2 + test/diffractometer_eulerian4C_test.cpp | 41 +- test/diffractometer_eulerian4C_test.h | 6 +- test/mode_eulerian4C_test.cpp | 28 + test/mode_eulerian4C_test.h | 3 + test/pseudoaxe_eulerian4C_test.cpp | 19 +- test/pseudoaxe_eulerian4C_test.h | 2 + test/reflection_test.cpp | 35 +- test/reflection_test.h | 6 +- 39 files changed, 2293 insertions(+), 1866 deletions(-) commit 9c2197a6bd75a3297e36986a64f9730ef2da670c Author: picca Date: Fri Jan 6 11:03:33 2006 +0000 *** empty log message *** bksys/cppunit.py | 25 +++++++++++++++---------- bksys/win32/detect_cppunit.py | 42 +++++++++++++++++++++++++++++------------- 2 files changed, 44 insertions(+), 23 deletions(-) commit 87aa14ce93593e46c96ea7116a5fe41c06954d19 Author: picca Date: Fri Jan 6 09:17:49 2006 +0000 * remove the unnecessary bksys files SConstruct | 2 +- bksys/compiler.py | 79 ---- bksys/lowlevel.py | 100 ----- bksys/unix/detect_lowlevel.py | 848 ----------------------------------------- bksys/win32/detect_lowlevel.py | 33 -- 5 files changed, 1 insertion(+), 1061 deletions(-) commit 04b04e48aca1bd6eea2d2b777e70b242fa0bdfc5 Author: picca Date: Thu Jan 5 16:34:57 2006 +0000 add the necessary files for bksys on win32 SConstruct | 2 +- bksys/compiler.py | 79 +++++++++++++++++++++++++++++++++++++++++++ bksys/win32/detect_cppunit.py | 20 +++++++++++ bksys/win32/detect_generic.py | 3 +- 4 files changed, 102 insertions(+), 2 deletions(-) commit 072562723169c3795076124582eddf1e1bdadaaf Author: picca Date: Thu Jan 5 15:55:09 2006 +0000 * modification of SCons files for bksys SConstruct | 92 ++++++++++++++++++++++++++++++--------------------------- src/SConscript | 76 +++++++++++++++++++++++------------------------ test/SConscript | 60 ++++++++++++++++--------------------- 3 files changed, 111 insertions(+), 117 deletions(-) commit b77566c628ed9fb2146f195c0d9ef03ba8901f2b Author: picca Date: Thu Jan 5 15:50:47 2006 +0000 add the bksys system for unix bksys/cppunit.py | 97 ++++ bksys/generic.py | 1173 ++++++++++++++++++++++++++++++++++++++++ bksys/lowlevel.py | 100 ++++ bksys/unix/detect_cppunit.py | 20 + bksys/unix/detect_generic.py | 142 +++++ bksys/unix/detect_lowlevel.py | 848 +++++++++++++++++++++++++++++ bksys/win32/detect_generic.py | 148 +++++ bksys/win32/detect_lowlevel.py | 33 ++ 8 files changed, 2561 insertions(+) commit cd83c021cccda61140dd302dc6e48ae9c617ef36 Author: picca Date: Tue Dec 13 16:58:26 2005 +0000 * now serialization is on the way. TODO | 1 + include/linux/mymap.h | 8 +++----- src/fitparameter.cpp | 6 +++--- src/geometry.cpp | 1 + src/object.cpp | 48 +++++++++--------------------------------------- src/range.cpp | 4 ++-- test/SConscript | 14 ++++++++++---- test/geometry_test.cpp | 8 +++++--- test/object_test.cpp | 19 +++++++++++++------ test/range_test.cpp | 2 +- test/value_test.cpp | 1 - 11 files changed, 48 insertions(+), 64 deletions(-) commit f9517dabb6210b6e9832bcb4f1f78f2512f4291e Author: picca Date: Tue Dec 13 12:44:24 2005 +0000 *** empty log message *** include/mymap.h | 300 ------------------------------- include/myvector.h | 506 ----------------------------------------------------- 2 files changed, 806 deletions(-) commit f6a5619c7b06a815ee61523e945c62d4c3526277 Author: picca Date: Tue Dec 13 10:57:25 2005 +0000 *now compile on windows include/win32/mymap.h | 123 ++++++++++++++++------------------------------- include/win32/myvector.h | 3 +- src/object.cpp | 10 ++-- test/object_test.cpp | 3 +- 4 files changed, 48 insertions(+), 91 deletions(-) commit 0d4dde6cdcd2538cc1f5e0ce442dcddea9d7f898 Author: picca Date: Tue Dec 13 09:57:59 2005 +0000 *** empty log message *** include/linux/mymap.h | 269 +++++++++++++++++++++++++++++ include/linux/myvector.h | 438 +++++++++++++++++++++++++++++++++++++++++++++++ include/win32/mymap.h | 306 +++++++++++++++++++++++++++++++++ include/win32/myvector.h | 367 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 1380 insertions(+) commit b54034f062a45d698a4a864911b9a37189c194c3 Author: picca Date: Tue Dec 13 09:56:34 2005 +0000 *for test include/crystallist.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++ src/crystallist.cpp | 32 ++++++++++++++++++++++++ test/crystallist_test.cpp | 49 +++++++++++++++++++++++++++++++++++++ test/crystallist_test.h | 33 +++++++++++++++++++++++++ 4 files changed, 176 insertions(+) commit a0ef632df1fdedae8b3998d7a6054de5f1d8b4e4 Author: picca Date: Tue Dec 13 09:53:53 2005 +0000 * fir windows test compile. TODO | 28 +- doc/uml/hkl.dia | 453 +++++++++++++++++++++++++--- include/axe.h | 162 +++++----- include/constants.h | 8 +- include/crystal.h | 9 +- include/diffractometer.h | 34 ++- include/fitparameter.h | 201 +++++++------ include/fitparameterlist.h | 6 +- include/geometry.h | 24 +- include/object.h | 59 ++-- include/objectwithparameters.h | 15 +- include/quaternion.h | 233 ++++++++------- include/range.h | 215 +++++++------- include/source.h | 194 ++++++------ include/svecmat.h | 31 +- include/value.h | 26 +- src/SConscript | 1 + src/axe.cpp | 133 +++++---- src/diffractometer.cpp | 69 ++++- src/fitparameter.cpp | 42 ++- src/fitparameterlist.cpp | 142 ++++----- src/geometry.cpp | 65 ++++ src/object.cpp | 110 ++++++- src/objectwithparameters.cpp | 18 ++ src/quaternion.cpp | 36 ++- src/range.cpp | 78 +++-- src/smatrix.cpp | 511 +++++++++++++++++--------------- src/source.cpp | 185 +++++++----- src/svector.cpp | 29 +- src/value.cpp | 30 +- test/SConscript | 7 +- test/axe_test.cpp | 31 +- test/axe_test.h | 17 +- test/diffractometer_eulerian4C_test.cpp | 94 +++++- test/diffractometer_eulerian4C_test.h | 6 + test/fitparameter_test.cpp | 15 + test/fitparameter_test.h | 17 +- test/geometry_test.cpp | 14 + test/geometry_test.h | 2 + test/object_test.cpp | 18 ++ test/object_test.h | 2 + test/objectwithparameters_test.cpp | 23 ++ test/objectwithparameters_test.h | 2 + test/quaternion_test.cpp | 23 ++ test/quaternion_test.h | 2 + test/range_test.cpp | 21 ++ test/range_test.h | 14 +- test/source_test.cpp | 40 ++- test/source_test.h | 18 +- test/svecmat_test.cpp | 93 ++++-- test/svecmat_test.h | 6 + test/value_test.cpp | 20 ++ test/value_test.h | 3 + 53 files changed, 2462 insertions(+), 1173 deletions(-) commit 9b45d9a830e2abc8015ed59381443d5b7ca74acf Author: picca Date: Tue Dec 6 09:31:00 2005 +0000 *** empty log message *** include/crystal.h | 9 ++++++--- src/crystal.cpp | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 11 deletions(-) commit 5fe7aa95f39f29078fd3428ce0d8d5300d7b65b1 Author: picca Date: Mon Dec 5 10:34:43 2005 +0000 * When adding a reflection with the same (hkl) than another one, the flag is automatically set to false. include/crystal.h | 8 +++- include/geometry.h | 11 ++++-- include/source.h | 13 +++++-- src/crystal.cpp | 34 +++++++++++++++-- src/geometry.cpp | 15 +++++--- src/quaternion.cpp | 3 +- src/source.cpp | 16 ++++++-- test/SConscript | 13 +++---- test/affinement_simplex_test.cpp | 41 +++++++++++--------- test/crystal_test.cpp | 34 +++++++++++++---- test/diffractometer_eulerian4C_test.cpp | 66 +++++++++++++++++++++++++++++++-- test/diffractometer_eulerian4C_test.h | 2 + test/source_test.cpp | 4 +- 13 files changed, 200 insertions(+), 60 deletions(-) commit 6f4b68bc0b1d54b7d83f8578cc023a780b5fb2cb Author: picca Date: Thu Dec 1 09:41:25 2005 +0000 * modification of the affineCrystal behaviour SConstruct | 3 ++- TODO | 3 ++- include/pseudoaxe_eulerian4C.h | 30 +++++++++++++++++++++++++++--- src/affinement.cpp | 6 +++--- src/affinement_simplex.cpp | 32 ++++++++++++++++---------------- src/diffractometer.cpp | 14 +++++++++++++- src/pseudoaxe_eulerian4C.cpp | 34 +++++++++++++++++----------------- test/SConscript | 1 + test/affinement_simplex_test.cpp | 18 ++++++++++++------ test/pseudoaxe_eulerian4C_test.cpp | 11 ++++++----- 10 files changed, 99 insertions(+), 53 deletions(-) commit 4c88b1b0777d1901a203fa3ffae70470140b4322 Author: picca Date: Fri Nov 25 14:01:46 2005 +0000 * add getCrystalParametersNames SConstruct | 6 +- TODO | 3 +- binding/python/SConscript | 2 +- doc/uml/hkl.dia | 348 ++++++++++---------------------- include/affinement.h | 3 + include/diffractometer.h | 125 +++++++----- include/diffractometer_eulerian4C.h | 1 + include/geometry.h | 223 +++++++++----------- include/geometry_eulerian4C.h | 21 +- include/mode.h | 11 +- include/objectwithparameters.h | 132 ++++++------ include/pseudoaxe.h | 20 +- include/pseudoaxe_eulerian4C.h | 16 +- src/SConscript | 7 + src/affinement_simplex.cpp | 2 - src/diffractometer.cpp | 116 ++++++----- src/diffractometer_eulerian4C.cpp | 43 ++-- src/geometry.cpp | 79 +++----- src/geometry_eulerian4C.cpp | 11 +- src/mode.cpp | 4 +- src/objectwithparameters.cpp | 27 +-- src/pseudoaxe.cpp | 16 +- src/pseudoaxe_eulerian4C.cpp | 68 +++++-- test/SConscript | 17 +- test/diffractometer_eulerian4C_test.cpp | 26 ++- test/diffractometer_eulerian4C_test.h | 2 + test/libHKL_test.cpp | 3 +- test/pseudoaxe_eulerian4C_test.cpp | 26 +-- test/pseudoaxe_eulerian4C_test.h | 8 +- 29 files changed, 657 insertions(+), 709 deletions(-) commit af98251755365205ec2f2ae0f756903542afd0f7 Author: picca Date: Wed Nov 16 14:30:07 2005 +0000 * update to compile with MSVC++6 include/affinement.h | 1 + include/fitparameter.h | 8 +++---- include/myvector.h | 39 ++++++++++++++++++++++++++++----- include/pseudoaxe.h | 5 ++--- include/svecmat.h | 12 +++++----- src/fitparameter.cpp | 59 +++++++++++++++++++++++--------------------------- src/svector.cpp | 34 ++++++++++------------------- 7 files changed, 82 insertions(+), 76 deletions(-) commit 8df4a173e78fe135272d45f9ff328705a4b6841c Author: picca Date: Wed Nov 16 12:52:38 2005 +0000 * add the pseudoAxe part doc/uml/hkl.dia | 135 ++++++++++++++++++++++++++++++++++--- include/pseudoaxe_eulerian4C.h | 113 +++++++++++++++++++++++++++++++ include/svecmat.h | 18 ++++- src/pseudoaxe_eulerian4C.cpp | 77 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.cpp | 79 ++++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.h | 32 +++++++++ 6 files changed, 440 insertions(+), 14 deletions(-) commit 9563ec09af71a977998e6b74aff1ddf65393ca4b Author: picca Date: Wed Nov 16 12:42:49 2005 +0000 * modified crystal::randomize to deal with different combination of alpha, beta and gamma fit. SConstruct | 2 +- TODO | 7 +- doc/uml/hkl.dia | 158 +++++- include/crystal.h | 365 +++++++------- include/svecmat.h | 555 +++++++++++---------- src/affinement_simplex.cpp | 21 +- src/crystal.cpp | 840 +++++++++++++++++--------------- src/svector.cpp | 320 +++++++----- test/affinement_simplex_test.cpp | 12 +- test/affinement_simplex_test.h | 2 +- test/diffractometer_eulerian4C_test.cpp | 36 -- test/diffractometer_eulerian4C_test.h | 30 +- test/svecmat_test.cpp | 10 + test/svecmat_test.h | 59 ++- 14 files changed, 1328 insertions(+), 1089 deletions(-) commit a9aaa0faea4de553a677662b3d958cdfa02dc6d5 Author: picca Date: Mon Nov 14 13:34:13 2005 +0000 * update the Simplex method. SConstruct | 2 +- binding/python/diffractometer.glade | 242 ++- binding/python/diffractometer.py | 82 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 8 +- binding/python/diffractometer_eulerian4C_wrap.h | 4 +- binding/python/hkl_wrap.cpp | 4 +- doc/Maxima/E4C_bissector.max | 12 +- doc/uml/hkl.dia | 2216 +++++++++++++-------- include/affinement.h | 14 +- include/diffractometer.h | 937 +++++---- include/geometry.h | 65 +- include/mode.h | 8 +- include/mode_eulerian4C.h | 13 +- include/mode_eulerian6C.h | 35 +- include/pseudoaxe.h | 29 +- include/quaternion.h | 20 + include/reflection.h | 62 +- src/affinement_simplex.cpp | 360 ++-- src/crystal.cpp | 25 +- src/diffractometer.cpp | 20 +- src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 7 +- src/geometry.cpp | 19 +- src/mode_eulerian4C.cpp | 413 ++-- src/mode_eulerian6C.cpp | 57 +- src/quaternion.cpp | 258 +-- src/reflection.cpp | 41 +- test/SConscript | 2 + test/affinement_simplex_test.cpp | 63 +- test/affinement_simplex_test.h | 12 +- test/crystal_test.cpp | 22 +- test/diffractometer_eulerian4C_test.cpp | 36 + test/diffractometer_eulerian4C_test.h | 2 + test/geometry_test.cpp | 26 +- test/geometry_test.h | 34 +- test/mode_eulerian4C_test.cpp | 32 +- test/quaternion_test.cpp | 47 +- test/quaternion_test.h | 66 +- test/reflection_test.cpp | 41 +- test/reflection_test.h | 4 - 40 files changed, 3113 insertions(+), 2233 deletions(-) commit 1197a2e955aec19ddadf3857d8f10b7ae7ade257 Author: picca Date: Fri Oct 28 12:59:26 2005 +0000 *** empty log message *** doc/uml/hkl.dia | 550 +++++++++++++++++++++--------------------- include/geometry_eulerian4C.h | 5 + include/pseudoaxe.h | 6 + src/SConscript | 1 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 8 +- 6 files changed, 296 insertions(+), 276 deletions(-) commit 91ba98316476ad4c6157e0dde624117b06664277 Author: picca Date: Thu Oct 27 09:40:42 2005 +0000 * add the PseudoAxe part to the library. * update the uml diagramm doc/uml/hkl.dia | 326 +++++++++++++++++++++++--------- include/diffractometer.h | 79 ++++++-- include/geometry.h | 27 ++- include/pseudoaxe.h | 9 +- src/diffractometer.cpp | 71 ++++++- src/geometry.cpp | 12 ++ test/diffractometer_eulerian4C_test.cpp | 96 +++++----- 7 files changed, 447 insertions(+), 173 deletions(-) commit 8db4880b37fdc8be47360521ce9fadc72704d9fa Author: picca Date: Wed Oct 26 15:54:50 2005 +0000 * derive Mode from ObjectwithParameters * update uml diagram doc/uml/hkl.dia | 124 ++++++++++++------------------------- include/mode.h | 54 +++------------- include/objectwithparameters.h | 2 +- src/mode.cpp | 43 ------------- src/mode_eulerian4C.cpp | 23 ++++--- src/objectwithparameters.cpp | 2 +- test/objectwithparameters_test.cpp | 2 +- 7 files changed, 63 insertions(+), 187 deletions(-) commit 5957a2347551110fad7f9f62ae87dacafbbb2b42 Author: picca Date: Wed Oct 26 15:14:20 2005 +0000 * remove AngleConfiguration include/angleconfiguration.h | 329 -------------------------------- include/angleconfiguration_eulerian4C.h | 32 ---- include/angleconfiguration_eulerian6C.h | 34 ---- include/angleconfiguration_kappa4C.h | 30 --- test/angleconfiguration_test.cpp | 113 ----------- test/angleconfiguration_test.h | 43 ----- 6 files changed, 581 deletions(-) commit 5eedac15f0dfdb35e50e44e9fdcf70af0963ab18 Author: picca Date: Wed Oct 26 15:11:41 2005 +0000 * AngleConfiguration -> Geometry * add PseudoAxe class doc/uml/hkl.dia | 349 ++++--- include/diffractometer.h | 20 +- include/diffractometer_eulerian4C.h | 2 +- include/diffractometer_eulerian6C.h | 2 +- include/geometry.h | 354 +++++++ include/geometry_eulerian4C.h | 30 + include/geometry_eulerian6C.h | 30 + include/geometry_kappa4C.h | 30 + include/mode.h | 14 +- include/mode_eulerian4C.h | 36 +- include/mode_eulerian6C.h | 78 +- include/mode_kappa4C.h | 7 +- include/pseudoaxe.h | 78 ++ include/reflection.h | 19 +- src/SConscript | 31 +- src/angleconfiguration.cpp | 184 ---- src/diffractometer.cpp | 24 +- src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 20 +- src/geometry.cpp | 192 ++++ ...tion_eulerian4C.cpp => geometry_eulerian4C.cpp} | 10 +- ...tion_eulerian6C.cpp => geometry_eulerian6C.cpp} | 13 +- ...figuration_kappa4C.cpp => geometry_kappa4C.cpp} | 13 +- src/mode.cpp | 136 +-- src/mode_eulerian4C.cpp | 62 +- src/mode_eulerian6C.cpp | 1078 ++++++++++---------- src/pseudoaxe.cpp | 31 + src/reflection.cpp | 43 +- test/SConscript | 2 +- test/affinement_simplex_test.cpp | 53 +- test/affinement_simplex_test.h | 4 +- test/crystal_test.cpp | 68 +- test/crystal_test.h | 4 +- test/geometry_test.cpp | 111 ++ test/geometry_test.h | 44 + test/mode_eulerian4C_test.cpp | 135 ++- test/mode_eulerian4C_test.h | 4 +- test/reflection_test.cpp | 26 +- test/reflection_test.h | 4 +- 39 files changed, 2075 insertions(+), 1272 deletions(-) commit 1395b2a7d5f06234726d2ca71d56cd7836bd3eed Author: picca Date: Wed Oct 26 08:50:38 2005 +0000 * the true add of ObjectWithParameter class test functions test/objectwithparameters_test.cpp | 41 ++++++++++++++++++++++++++++++++++++++ test/objectwithparameters_test.h | 26 ++++++++++++++++++++++++ 2 files changed, 67 insertions(+) commit 112a7ceff4cffa2483d8b17bcc227fb61734e6cb Author: picca Date: Wed Oct 26 08:48:11 2005 +0000 * add test functions for ObjectWithParameters class doc/uml/hkl.dia | 142 +++++++++++++++++++++++++++++++++++++++++++++++--------- test/SConscript | 1 + 2 files changed, 120 insertions(+), 23 deletions(-) commit 866d6ddfebfefb728c87d2d82774297650d8deeb Author: picca Date: Tue Oct 25 15:58:16 2005 +0000 * update implementation of the Value class src/value.cpp | 76 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 39 deletions(-) commit 37cc7afab93647b6d2ec8a3a0409b719c81c7563 Author: picca Date: Tue Oct 25 15:52:26 2005 +0000 * add the ObjectWithParameters class * documentation of the template MyVector * add overload << for the MyVector template class SConstruct | 2 +- TODO | 2 + doc/uml/hkl.dia | 104 +++++++++++++++++++++++++++++++++-------- include/myvector.h | 50 ++++++++++++++++++++ include/objectwithparameters.h | 90 +++++++++++++++++++++++++++++++++++ include/value.h | 1 - src/SConscript | 1 + src/objectwithparameters.cpp | 59 +++++++++++++++++++++++ src/value.cpp | 2 +- 9 files changed, 289 insertions(+), 22 deletions(-) commit 2caa117b43d1fb6628c24e1578648329b8f3b7aa Author: picca Date: Tue Oct 25 14:27:31 2005 +0000 * Object add m_description, accessor and test functions doc/uml/hkl.dia | 175 +++++++++++++++++++++++++++++++++++++-------------- include/crystal.h | 19 +++--- include/object.h | 117 +++++++++++++++++++++------------- src/crystal.cpp | 29 +++++---- src/object.cpp | 70 ++++++++++++--------- test/object_test.cpp | 23 ++++--- test/object_test.h | 17 ++--- 7 files changed, 294 insertions(+), 156 deletions(-) commit 6d6df56f4423fca74d5711d1e9fad4e9a3644a4a Author: picca Date: Tue Oct 25 12:29:38 2005 +0000 * in axes.cpp use m_axe and m_direction instead of get_axe and get_direction for now in a class I am using directly the menbers not the accessors is it good I don't know? doc/uml/hkl.dia | Bin 18771 -> 1003104 bytes doc/uml/next_hkl.dia | Bin 20274 -> 997320 bytes src/axe.cpp | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) commit 98d5c66b98482fe8cdcda228f539d5973f7b88de Author: picca Date: Tue Oct 25 11:34:22 2005 +0000 * oops forgot to modify in crystal_test.cpp: #include cristal_test.h test/crystal_test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit fca08247b750483498a65dd99d304648f58dba00 Author: picca Date: Tue Oct 25 11:32:11 2005 +0000 * rename cristal.h and cristal.cpp -> crystal.h crystal.cpp * same for the cristal_test suite. include/affinement.h | 6 +++--- include/diffractometer.h | 8 ++++++-- src/crystal.cpp | 8 ++++++-- test/SConscript | 2 +- test/affinement_simplex_test.h | 2 +- test/{cristal_test.cpp => crystal_test.cpp} | 0 test/{cristal_test.h => crystal_test.h} | 2 +- test/mode_eulerian4C_test.h | 2 +- 8 files changed, 19 insertions(+), 11 deletions(-) commit 255b0219fe4aa165eb0d25dcc08491e6642ef9fa Author: picca Date: Tue Oct 25 11:25:11 2005 +0000 *** empty log message *** include/cristal.h | 451 ------------------------------------------------------ 1 file changed, 451 deletions(-) commit f21ba9ca3285cf9a6e91ca206714239d5dbb146d Author: picca Date: Tue Oct 25 10:07:37 2005 +0000 * rename cristal.h -> crystal.h include/crystal.h | 454 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 454 insertions(+) commit 6fad31cc0abca6bbe5bbf2ab4308da18a7c81887 Author: picca Date: Tue Oct 25 10:05:42 2005 +0000 * cristal.cpp -> crystal.cpp src/SConscript | 2 +- src/{cristal.cpp => crystal.cpp} | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) commit 7f933c9e141a92da82b808cd6fc0789239d72313 Author: picca Date: Thu Oct 20 12:48:47 2005 +0000 * right calculation for the number of usable reflections close: #976 #977 TODO | 3 +- include/cristal.h | 28 +- include/reflection.h | 20 +- src/angleconfiguration.cpp | 14 +- src/cristal.cpp | 763 ++++++++++++++++++++------------------- src/diffractometer.cpp | 40 +- src/reflection.cpp | 258 +++++++------ test/angleconfiguration_test.cpp | 4 + test/cristal_test.cpp | 17 + test/cristal_test.h | 2 + test/reflection_test.cpp | 56 +-- test/reflection_test.h | 20 +- 12 files changed, 682 insertions(+), 543 deletions(-) commit 64938494797ff3cd54918aa153437f3e6a0fa617 Author: picca Date: Tue Oct 11 14:23:47 2005 +0000 *** empty log message *** SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c19565c57dfff97823fa7d2f87fd8d242a787c45 Author: picca Date: Tue Oct 11 14:14:26 2005 +0000 *** empty log message *** readme.txt | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) commit 6fbdd9c9d7bbb96ceb53f2f1ffbe5cfcf030027f Author: picca Date: Tue Oct 11 14:10:51 2005 +0000 *Modification to take care of the C4786 warning message for the debug version of the library SConstruct | 2 +- include/angleconfiguration.h | 7 ++++++- include/config.h | 5 +++++ include/cristal.h | 7 ++++++- include/diffractometer.h | 7 ++++++- 5 files changed, 24 insertions(+), 4 deletions(-) commit e7cf53df0b07d6c89d75fc0ff7b2846915fd195b Author: picca Date: Tue Oct 11 13:37:09 2005 +0000 * Add debug and profile option to the SConstruct file SConstruct | 31 +++++++++++++++++++++++++------ test/SConscript | 1 - 2 files changed, 25 insertions(+), 7 deletions(-) commit 880c2f25b8c7a1c52f56f2d770dadd42bb9b6fc8 Author: picca Date: Wed Oct 5 13:00:59 2005 +0000 futur uml digramme doc/uml/next_hkl.dia | Bin 0 -> 20274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 81887f08dab13fe57a4ef7fe658e1d9fb5771188 Author: picca Date: Wed Oct 5 12:57:47 2005 +0000 Add most of the figures in the doc doc/Doxyfile-to-tex | 248 - doc/Maxima/E4C_bissector.max | 12 + doc/Maxima/E4C_constant_chi.max | 12 + doc/Maxima/E4C_constant_chi_phi.max | 12 + doc/Maxima/E4C_constant_omega.max | 12 + doc/Maxima/E4C_delta_omega.max | 12 + doc/README.txt | 17 - doc/projetHKL_4C.doc | Bin 268288 -> 0 bytes doc/projetHKL_6C.doc | Bin 118784 -> 0 bytes doc/projetHKL_architecture.mdl | 8918 ----------------------------------- doc/projetHKL_architecture.pdf | Bin 218839 -> 0 bytes doc/projetHKL_reference_manual.pdf | Bin 466018 -> 0 bytes doc/uml/hkl.dia | Bin 0 -> 18771 bytes 13 files changed, 60 insertions(+), 9183 deletions(-) commit a4d4171f1dfdb3c641f9cdb8ef6b0969f6c969bd Author: picca Date: Wed Oct 5 09:02:33 2005 +0000 merge avec la branche head SConstruct | 24 + TODO | 70 + binding/SConscript | 2 + binding/python/SConscript | 14 + binding/python/diffractometer.glade | 3221 ++++++++++++++++++++ binding/python/diffractometer.py | 642 ++++ binding/python/diffractometer_eulerian4C_wrap.cpp | 222 ++ binding/python/diffractometer_eulerian4C_wrap.h | 67 + binding/python/hkl_wrap.cpp | 57 + binding/python/reflection_wrap.cpp | 32 + binding/python/reflection_wrap.h | 18 + doc/Doxyfile | 270 ++ doc/hkl.lyx | 3231 +++++++++++++++++++++ {src => include}/HKLException.h | 69 +- include/affinement.h | 137 + include/angleconfiguration.h | 324 +++ include/angleconfiguration_eulerian4C.h | 32 + include/angleconfiguration_eulerian6C.h | 34 + include/angleconfiguration_kappa4C.h | 30 + include/axe.h | 103 + include/config.h | 8 + include/constants.h | 156 + include/cristal.h | 430 +++ include/diffractometer.h | 906 ++++++ include/diffractometer_eulerian4C.h | 142 + include/diffractometer_eulerian6C.h | 73 + include/diffractometer_kappa4C.h | 41 + include/fitparameter.h | 123 + include/fitparameterlist.h | 92 + include/lattice.h | 52 + include/mode.h | 309 ++ include/mode_eulerian4C.h | 137 + include/mode_eulerian6C.h | 421 +++ include/mode_kappa4C.h | 70 + include/mymap.h | 300 ++ include/myvector.h | 429 +++ include/object.h | 63 + include/quaternion.h | 117 + include/range.h | 121 + include/reflection.h | 360 +++ include/source.h | 249 ++ include/svecmat.h | 472 +++ include/value.h | 116 + include/vertex.h | 150 + readme.txt | 41 +- src/HKLException.cpp | 68 +- src/LibUser.cpp | 208 -- src/{Makefile => Makefile.linux} | 0 src/Makefile.vc | 44 +- src/SConscript | 36 + src/affinement.cpp | 22 + src/affinement_simplex.cpp | 207 ++ src/angleconfig.h | 389 --- src/angleconfiguration.cpp | 184 ++ src/angleconfiguration_eulerian4C.cpp | 20 + src/angleconfiguration_eulerian6C.cpp | 22 + src/angleconfiguration_kappa4C.cpp | 19 + src/axe.cpp | 67 + src/constants.cpp | 113 +- src/constants.h | 170 -- src/cristal.cpp | 864 ++++-- src/cristal.h | 253 -- src/diffractometer.cpp | 3225 ++++---------------- src/diffractometer.h | 770 ----- src/diffractometer_eulerian4C.cpp | 41 + src/diffractometer_eulerian6C.cpp | 215 ++ src/diffractometer_kappa4C.cpp | 15 + src/eulerian_angleConfiguration6C.cpp | 212 -- src/eulerian_angleconfiguration4C.cpp | 163 -- src/eulerian_bissectormode4C.cpp | 588 ---- src/eulerian_diffractometer6C.cpp | 2010 ------------- src/eulerian_mode6C.cpp | 1166 -------- src/fitparameter.cpp | 74 + src/fitparameterlist.cpp | 106 + src/kappa_angleconfiguration4C.cpp | 151 - src/lattice.cpp | 149 + src/main.cpp | 910 ------ src/mode.cpp | 95 + src/mode.h | 676 ----- src/mode_eulerian4C.cpp | 489 ++++ src/mode_eulerian6C.cpp | 1009 +++++++ src/object.cpp | 35 + src/quaternion.cpp | 137 + src/range.cpp | 50 + src/reflection.cpp | 357 ++- src/reflection.h | 188 -- src/smatrix.cpp | 374 ++- src/source.cpp | 196 +- src/source.h | 159 - src/svecmat.h | 336 --- src/svector.cpp | 343 ++- src/value.cpp | 76 + src/vertex.cpp | 132 + test/SConscript | 44 + test/affinement_simplex_test.cpp | 73 + test/affinement_simplex_test.h | 37 + test/angleconfiguration_test.cpp | 109 + test/angleconfiguration_test.h | 43 + test/axe_test.cpp | 65 + test/axe_test.h | 35 + test/cristal_test.cpp | 373 +++ test/cristal_test.h | 61 + test/diffractometer_eulerian4C_test.cpp | 365 +++ test/diffractometer_eulerian4C_test.h | 51 + test/diffractometer_test.cpp | 366 +++ test/diffractometer_test.h | 54 + test/fitparameter_test.cpp | 54 + test/fitparameter_test.h | 31 + test/lattice_test.cpp | 146 + test/lattice_test.h | 39 + test/libHKL_test.cpp | 15 + test/mode_eulerian4C_test.cpp | 118 + test/mode_eulerian4C_test.h | 38 + test/object_test.cpp | 47 + test/object_test.h | 29 + test/quaternion_test.cpp | 169 ++ test/quaternion_test.h | 58 + test/range_test.cpp | 50 + test/range_test.h | 31 + test/reflection_test.cpp | 102 + test/reflection_test.h | 46 + test/source_test.cpp | 74 + test/source_test.h | 41 + test/svecmat_test.cpp | 282 ++ test/svecmat_test.h | 77 + test/value_test.cpp | 71 + test/value_test.h | 35 + 127 files changed, 22645 insertions(+), 11694 deletions(-) commit 7217579f8770d850ad2655a90d847d5afc7555d8 Author: picca Date: Fri Feb 11 15:52:45 2005 +0000 documentation src/mode.h | 766 +++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 469 insertions(+), 297 deletions(-) commit 6c21981ce6ebdf629a8cae305e445c9377d35827 Author: picca Date: Fri Feb 11 14:30:17 2005 +0000 documentation src/diffractometer.h | 850 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 573 insertions(+), 277 deletions(-) commit 62228a6dfb9a0e5cb410a7da8dd8982e17561aff Author: picca Date: Thu Feb 10 16:47:04 2005 +0000 documentation update src/angleconfig.h | 485 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 269 insertions(+), 216 deletions(-) commit dfd8f995709112a5af73bc2f88fa53eda64c2e73 Author: picca Date: Thu Feb 10 16:16:12 2005 +0000 mistake in the comment after #endif src/constants.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 592b14f52e925626aeb398bdf58a7e842a3769e5 Author: picca Date: Thu Feb 10 14:09:34 2005 +0000 documentation src/constants.h | 147 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 93 insertions(+), 54 deletions(-) commit a017ef29c534929359d01d31292eff3cc4f3b913 Author: picca Date: Thu Feb 10 13:20:07 2005 +0000 documentation src/cristal.h | 294 +++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 176 insertions(+), 118 deletions(-) commit e48580adab165f4bbd14342c7110ab882879a99c Author: picca Date: Thu Feb 10 09:19:49 2005 +0000 Rewrite of the documentation src/HKLException.h | 208 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 139 insertions(+), 69 deletions(-) commit 3c1951af5eeb823f6e10f2a62ba13ea045620ab5 Author: picca Date: Tue Feb 8 17:03:08 2005 +0000 update the documentation src/reflection.cpp | 32 +++++++++++++++-- src/reflection.h | 101 ++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 114 insertions(+), 19 deletions(-) commit 9f789cfe23bf64a2223fe0654acfa9e6c62fe33c Author: picca Date: Tue Feb 8 15:52:27 2005 +0000 update for doxygen src/Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit be81041247de60c08c9c88d450e3093a5ced60e3 Author: picca Date: Tue Feb 8 15:51:05 2005 +0000 update the documenattion src/reflection.h | 27 +++-- src/source.cpp | 43 ++++++-- src/source.h | 131 ++++++++++++++++++------ src/svecmat.h | 296 +++++++++++++++++++++++++++++++++++++++++++------------ src/svector.cpp | 14 ++- 5 files changed, 393 insertions(+), 118 deletions(-) commit 6959b190c9ce105309724b969ab76347a181ab02 Author: dupuy Date: Thu Jan 27 16:05:46 2005 +0000 modif pour release_0_5_2 doc/projetHKL_reference_manual.pdf | Bin 351240 -> 466018 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit fb1c91b1375bf149026bbafa0e69d255fc97c8b8 Author: delos Date: Thu Jan 27 09:23:53 2005 +0000 Commentaires pour CVS en tete des fichiers src/HKLException.cpp | 45 ++++++++ src/HKLException.h | 45 ++++++++ src/LibUser.cpp | 44 ++++++++ src/angleconfig.h | 46 +++++++- src/constants.cpp | 47 +++++++- src/constants.h | 44 ++++++++ src/cristal.cpp | 44 ++++++++ src/cristal.h | 44 ++++++++ src/diffractometer.cpp | 44 ++++++++ src/diffractometer.h | 44 ++++++++ src/eulerian_angleConfiguration6C.cpp | 44 ++++++++ src/eulerian_angleconfiguration4C.cpp | 44 ++++++++ src/eulerian_bissectormode4C.cpp | 60 ++++++++-- src/eulerian_diffractometer6C.cpp | 52 ++++++++- src/eulerian_mode6C.cpp | 199 ++++++++++++++++++++++++++++++++-- src/kappa_angleconfiguration4C.cpp | 44 ++++++++ src/mode.h | 49 ++++++++- src/reflection.cpp | 44 ++++++++ src/reflection.h | 44 ++++++++ src/smatrix.cpp | 44 ++++++++ src/source.cpp | 44 ++++++++ src/source.h | 44 ++++++++ src/svecmat.h | 44 ++++++++ src/svector.cpp | 44 ++++++++ 24 files changed, 1218 insertions(+), 29 deletions(-) commit 145d7d79f2fcd7bcbb6ac4b412120edc27f8a16e Author: dupuy Date: Wed Jan 26 11:10:41 2005 +0000 modification avant release 5.2 readme.txt | 15 ++++++++++----- release_notes.txt | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) commit 25da915ad165f49c1da49a82dd65b278f2c58384 Author: delos Date: Wed Jan 26 10:41:26 2005 +0000 Makefile Linux src/Makefile | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) commit fddadbe4c241f9d940138cc16c85873a1295d237 Author: delos Date: Tue Jan 25 15:08:19 2005 +0000 PREMIERE VERSION PORTABLE LINUX - WINDOWS !!! src/LibUser.cpp | 93 +++++----- src/diffractometer.cpp | 310 +++++++++++++++------------------- src/diffractometer.h | 15 +- src/eulerian_angleConfiguration6C.cpp | 28 +-- src/eulerian_angleconfiguration4C.cpp | 22 +-- src/eulerian_bissectormode4C.cpp | 7 - src/eulerian_diffractometer6C.cpp | 156 ++++++++--------- src/eulerian_mode6C.cpp | 22 +-- src/kappa_angleconfiguration4C.cpp | 14 +- src/mode.h | 25 +-- src/reflection.cpp | 75 +++----- src/smatrix.cpp | 22 ++- src/source.cpp | 8 +- src/svecmat.h | 5 +- src/svector.cpp | 6 +- 15 files changed, 378 insertions(+), 430 deletions(-) commit ad59582800ce14740f2b8e8f10d35ec2c23bd865 Author: delos Date: Mon Jan 24 16:49:09 2005 +0000 Ajout de eulerian_diffractometer6C.cpp (sans l'espace) src/eulerian_diffractometer6C.cpp | 1966 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1966 insertions(+) commit 15aebc18395aefcdb78377e08c3d836ff14de7d4 Author: delos Date: Mon Jan 24 16:47:01 2005 +0000 Suppression de eulerian_ diffractometer6C.cpp (suppression de l'espace) src/eulerian_ diffractometer6C.cpp | 1966 ------------------------------------ 1 file changed, 1966 deletions(-) commit 06665e99a36a37ef3609c81c1b97d9a0efc4c5af Author: delos Date: Fri Jan 21 16:15:55 2005 +0000 Corrections du mode 3C bras levant, nouvelle mthode de rsolution doc/projetHKL_6C.doc | Bin 112128 -> 118784 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit bc0ebca92da0ea8ddb1e09d5b2d2f2c4d50b2056 Author: dupuy Date: Thu Jan 20 15:37:02 2005 +0000 modif pour release_0_5_1 release_notes.txt | 4 ++++ 1 file changed, 4 insertions(+) commit d58a10ccf3e7f7d43d047060a5c2bc1fb1d46b33 Author: dupuy Date: Wed Jan 19 13:36:06 2005 +0000 modif pour compil linux src/Makefile | 11 ++++----- src/cristal.cpp | 74 ++++++++++++++++++++++++++++----------------------------- src/svecmat.h | 4 ++-- 3 files changed, 43 insertions(+), 46 deletions(-) commit f0ab86c0425fa78e3e9e454dca1a6b106c6e831d Author: dupuy Date: Wed Jan 19 11:23:24 2005 +0000 marche pas : svector.h src/Makefile | 93 ++++++++---------------------------------------------------- 1 file changed, 12 insertions(+), 81 deletions(-) commit 86ed62a00c213a1241fd44570425bfde9f19cd30 Author: dupuy Date: Wed Jan 19 11:06:42 2005 +0000 plus de repertoire pour les obj src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e38714f2e95bc2c6ef568f1187111123e0ee0d09 Author: dupuy Date: Wed Jan 19 11:03:41 2005 +0000 ajout des dependance src/Makefile | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) commit dcc99560be908024228e7accda6894041fda6344 Author: dupuy Date: Wed Jan 19 10:59:41 2005 +0000 pour la compil avec des makefile sous linux src/Makefile | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) commit 4e67d89aa9284b1fad34698d9b59c5bb1a4e6b1d Author: dupuy Date: Wed Jan 19 10:07:54 2005 +0000 pour la compil avec des makefile src/README-compil.txt | 6 ++++++ 1 file changed, 6 insertions(+) commit a38c388a2ba2e7e45c493e2802fcc8da5886778f Author: delos Date: Wed Jan 19 09:17:18 2005 +0000 Corrections mineures doc/projetHKL_4C.doc | Bin 268288 -> 268288 bytes doc/projetHKL_6C.doc | Bin 101888 -> 112128 bytes src/diffractometer.h | 76 +++++++------------ src/eulerian_ diffractometer6C.cpp | 5 +- src/eulerian_bissectormode4C.cpp | 7 +- src/eulerian_mode6C.cpp | 149 +++++++++++++++++++++++++++++++++++-- src/mode.h | 18 +++-- src/reflection.h | 41 ++++------ src/svecmat.h | 18 ++--- 9 files changed, 211 insertions(+), 103 deletions(-) commit 0dd1e4dc39a9424362b06a4ec05c91f5bd501c86 Author: delos Date: Fri Jan 14 15:05:48 2005 +0000 Ajout du mode omega constant 4C src/LibUser.cpp | 9 +- src/eulerian_bissectormode4C.cpp | 240 +++++++++++++++++++++++++++++++++++++-- src/mode.h | 67 +++++++++-- 3 files changed, 293 insertions(+), 23 deletions(-) commit 8ad996869b1acf91df7098e079f033b3966388cc Author: delos Date: Fri Jan 14 15:05:15 2005 +0000 no message doc/projetHKL_6C.doc | Bin 100864 -> 101888 bytes doc/projetHKL_architecture.mdl | 512 ++++++++++++++++++++++++----------------- 2 files changed, 303 insertions(+), 209 deletions(-) commit 73eda918c4689dd08b17c973ec5e176d53a430ce Author: delos Date: Fri Jan 14 13:15:20 2005 +0000 no message doc/projetHKL_4C.doc | Bin 267776 -> 268288 bytes doc/projetHKL_6C.doc | Bin 100864 -> 100864 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit f7826ca7e1159a969758f15cc9230f7e414f4cb9 Author: delos Date: Fri Jan 14 13:07:55 2005 +0000 Corrections du mode 3C bras levant src/angleconfig.h | 119 ++++++++++++-------- src/eulerian_ diffractometer6C.cpp | 216 +++++++++++++++++++++++++++++++------ src/eulerian_mode6C.cpp | 180 ++++++++++++++++--------------- src/mode.h | 65 +++++------ 4 files changed, 370 insertions(+), 210 deletions(-) commit 2f5a4fd1022ea1d2702e7934df4f55e78cbdeadc Author: dupuy Date: Tue Jan 11 10:17:13 2005 +0000 ajout du logo soleil doc/projetHKL_4C.doc | Bin 257536 -> 267776 bytes doc/projetHKL_6C.doc | Bin 91648 -> 100864 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit 987e74b2497a84a22a55091c9b76ad446bcecd7c Author: dupuy Date: Tue Jan 11 10:10:09 2005 +0000 ajout du logo soleil commit fab46612b382b55818ac53e9a01fab04edcc43ae Author: dupuy Date: Tue Jan 11 09:42:20 2005 +0000 mise jour pour la release_0_5 readme.txt | 12 ++++++++++++ release_notes.txt | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) commit 9a7cec8a984cb0afc7abbac4827a53dc569d95cb Author: dupuy Date: Tue Jan 11 09:32:36 2005 +0000 generation du pdf pour la release_0_5 doc/projetHKL_reference_manual.pdf | Bin 336602 -> 351240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit cccf4f25f2f59700111ce7874af26c304dd795ee Author: dupuy Date: Tue Jan 11 09:31:28 2005 +0000 correction (mauvais fichier commiter precedemment) : generation du pdf pour la release_0_5 doc/projetHKL_architecture.pdf | Bin 351240 -> 218839 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 7e4dc80d186efe38bc75489977e31d43fdcf5c35 Author: dupuy Date: Tue Jan 11 09:22:30 2005 +0000 generation du pdf pour la release_0_5 doc/projetHKL_architecture.pdf | Bin 218839 -> 351240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 722ed4a653887294c88539f902c4bbb0c50e2a8d Author: dupuy Date: Tue Jan 11 09:18:30 2005 +0000 generation du latex pour la release_0_5 doc/Doxyfile-to-tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 81ef03e2f43c0ccb5fadbf70e26b69888a46fc25 Author: dupuy Date: Mon Jan 10 18:19:09 2005 +0000 avant tag pour la release 0.5 release_notes.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit e0620f030fe563b4ef0a19edbb47a84ef5741645 Author: dupuy Date: Mon Jan 10 18:16:03 2005 +0000 nouveau pdf, en une seule page doc/projetHKL_architecture.pdf | Bin 406062 -> 218839 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit a72746ffbc801e85ef07dc52bb355e15fbfdfb1d Author: dupuy Date: Mon Jan 10 18:15:29 2005 +0000 mise a jour du repertoire doc (nettoyage) doc/README.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 88df7f170dc6c0cadc91a1cf7c82f9619a24bf9b Author: dupuy Date: Mon Jan 10 17:48:01 2005 +0000 mise a jour du repertoire doc (nettoyage) doc/README.txt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit 3eff6090e0f5b4d12af55995cd8e3c97e0ca3aea Author: dupuy Date: Mon Jan 10 17:40:13 2005 +0000 renommer en projetHKL_6C.doc doc/projetHKL_6C.doc | Bin 0 -> 91648 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit b0349d9949b58fcf43b8b82065d72aef52bbf2e9 Author: dupuy Date: Mon Jan 10 17:38:11 2005 +0000 renommer en projetHKL_4C.doc doc/projetHKL_4C.doc | Bin 0 -> 257536 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 0fa05ebdeac41a16ee2575ae60bb1794409fdd8b Author: dupuy Date: Mon Jan 10 17:07:52 2005 +0000 remplac par les fichiers projetHKL_4C.doc et projetHKL_6C.doc doc/pilotage-diffract.doc | Bin 347648 -> 0 bytes doc/projetHKL_1.doc | Bin 257536 -> 0 bytes doc/projetHKL_4C.doc | Bin 257536 -> 0 bytes doc/projetHKL_6C.doc | Bin 91648 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) commit 705227854f55c44424aade434b46e9c0aac5507e Author: delos Date: Mon Jan 10 15:37:20 2005 +0000 Test en 6C mode 4C horizontal et 4C vertical, implementation du 3C bras levant en cours doc/projetHKL_1.doc | Bin 258048 -> 257536 bytes doc/projetHKL_4C.doc | Bin 258048 -> 257536 bytes doc/projetHKL_6C.doc | Bin 90624 -> 91648 bytes src/eulerian_ diffractometer6C.cpp | 538 ++++++++++++++++++++++++++++++++++++- src/eulerian_mode6C.cpp | 306 +++++++++++++++++++++ src/mode.h | 131 +++++---- 6 files changed, 912 insertions(+), 63 deletions(-) commit 29c19c73cca2a42eca72320efa352e74e3c888a6 Author: delos Date: Thu Jan 6 14:46:17 2005 +0000 Corrections du 6-cercles en mode 4C horizontal et vertical doc/pilotage-diffract.doc | Bin 347648 -> 347648 bytes doc/projetHKL_1.doc | Bin 258048 -> 258048 bytes doc/projetHKL_4C.doc | Bin 258048 -> 258048 bytes doc/projetHKL_6C.doc | Bin 87040 -> 90624 bytes src/angleconfig.h | 8 +- src/eulerian_ diffractometer6C.cpp | 601 +++++++++++++++++++++++++++++++++- src/eulerian_angleconfiguration4C.cpp | 31 +- src/eulerian_bissectormode4C.cpp | 45 +-- src/eulerian_mode6C.cpp | 62 ++-- 9 files changed, 664 insertions(+), 83 deletions(-) commit d4105a569af4fb2ca7149ebae80e235c3e4d4196 Author: dupuy Date: Tue Jan 4 13:22:24 2005 +0000 regeneration du pdf avec la doc de l'implementation du 6C doc/projetHKL_reference_manual.pdf | Bin 154729 -> 336602 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit e61bdf5708fdcc0551313abfacffcb6f3d074222 Author: delos Date: Wed Dec 22 15:45:55 2004 +0000 Ajout du 6-cercles avec modes 4C horizontal et vertical doc/projetHKL_1.doc | Bin 257536 -> 258048 bytes doc/projetHKL_4C.doc | Bin 257536 -> 258048 bytes doc/projetHKL_6C.doc | Bin 86528 -> 87040 bytes doc/projetHKL_architecture.mdl | 765 ++++++++++++++++++++++------------ src/LibUser.cpp | 8 + src/angleconfig.h | 119 +++++- src/diffractometer.cpp | 12 +- src/diffractometer.h | 163 ++++++-- src/eulerian_ diffractometer6C.cpp | 696 +++++++++++++++++++++++++++++++ src/eulerian_angleConfiguration6C.cpp | 168 ++++++++ src/eulerian_mode6C.cpp | 546 ++++++++++++++++++++++++ src/mode.h | 124 +++++- src/source.h | 2 +- 13 files changed, 2267 insertions(+), 336 deletions(-) commit 952f7c271d694a285b013b929e9aa03414a13df7 Author: dupuy Date: Tue Dec 21 13:22:36 2004 +0000 ajout fichier release_notes.txt release_notes.txt | 2 ++ 1 file changed, 2 insertions(+) commit ca0bc8a80325ec8515f96f8885031cb30b7a86a1 Author: delos Date: Thu Dec 16 14:40:34 2004 +0000 no message doc/projetHKL_1.doc | Bin 254976 -> 257536 bytes doc/projetHKL_4C.doc | Bin 254976 -> 257536 bytes doc/projetHKL_6C.doc | Bin 86528 -> 86528 bytes 3 files changed, 0 insertions(+), 0 deletions(-) commit f867d357a6854040abcb3d31e596ca51274c6115 Author: delos Date: Wed Dec 15 16:35:44 2004 +0000 6C en 4C + Mathematica 5.1 doc/projetHKL_6C.doc | Bin 77312 -> 86528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit df98b020643c56784ea6af86120e55f92855ec29 Author: delos Date: Wed Dec 15 14:00:08 2004 +0000 Calcul de U en 6 cercles et calcul de qaz doc/projetHKL_6C.doc | Bin 64512 -> 77312 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 4c28fb0face989a32436e22f47e60084f71c6518 Author: delos Date: Wed Dec 15 10:55:14 2004 +0000 documentation src/diffractometer.h | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) commit 7af7bc15599ed8398bc3b263a1f9e9c675f92997 Author: delos Date: Wed Dec 15 10:52:53 2004 +0000 Nouvelle doc operationnelle en deux parties (remplace pilotage-diffract.doc) doc/projetHKL_1.doc | Bin 0 -> 254976 bytes doc/projetHKL_4C.doc | Bin 0 -> 254976 bytes doc/projetHKL_6C.doc | Bin 0 -> 64512 bytes 3 files changed, 0 insertions(+), 0 deletions(-) commit 5d9f669e9445b633b73a2c2ffa7f373e986d8a12 Author: delos Date: Tue Dec 7 14:42:34 2004 +0000 Calcul de (h,k,l) partir de (omga,phi,chi) refonte des signatures de fonctions src/diffractometer.cpp | 40 ++++++++++++++++++++-------------------- src/eulerian_bissectormode4C.cpp | 4 ++-- src/mode.h | 30 +++++++++++++++--------------- 3 files changed, 37 insertions(+), 37 deletions(-) commit 8eb0a271f2f3c4db5f1af5f16ff4c3096a905178 Author: delos Date: Tue Dec 7 14:25:16 2004 +0000 Calcul de (h,k,l) partir de (omga,phi,chi) src/diffractometer.cpp | 539 ++++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 88 +++++-- src/eulerian_bissectormode4C.cpp | 118 +++++++-- src/mode.h | 107 +++++++- 4 files changed, 793 insertions(+), 59 deletions(-) commit 76745d6a6ec606490db301a142a3f3680459edaa Author: delos Date: Thu Dec 2 14:05:16 2004 +0000 plus de doc src/cristal.h | 30 ++++++++++++++++++++++++++++-- src/eulerian_bissectormode4C.cpp | 6 +++--- src/source.h | 4 ++++ 3 files changed, 35 insertions(+), 5 deletions(-) commit c0c5d4e64c58156e59ea8650696eb7b1bcb5a26f Author: delos Date: Thu Dec 2 10:27:05 2004 +0000 plus de doc src/cristal.h | 6 +++--- src/diffractometer.h | 34 ++++++++++++++++++++++++++++++---- src/mode.h | 39 +++++++++++++++++++++++++++++++++++---- src/source.h | 7 +++---- 4 files changed, 71 insertions(+), 15 deletions(-) commit 35044ce57444ad4c62804e43ae89407f2591a5b2 Author: delos Date: Wed Dec 1 16:10:49 2004 +0000 6cercles mode bras levant doc/pilotage-diffract.doc | Bin 341504 -> 347648 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit ab75d9305774aaf9fd11545acccaef08c49137a6 Author: delos Date: Tue Nov 30 15:04:58 2004 +0000 6cercles intro+commentaires doc/pilotage-diffract.doc | Bin 337920 -> 341504 bytes src/source.h | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) commit 75f96240b5e7f4fad83e115ea2657988af1cd7a1 Author: delos Date: Tue Nov 30 11:15:55 2004 +0000 6cercles intro doc/pilotage-diffract.doc | Bin 332288 -> 337920 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit cf88b734108d8be840ee769b034ac34023960edf Author: delos Date: Fri Nov 26 10:34:01 2004 +0000 Ajout de tests (Rafin) + pb de Q dans (yOz) doc/pilotage-diffract.doc | Bin 328192 -> 332288 bytes src/Makefile.vc | 3 +- src/cristal.h | 28 +- src/diffractometer.cpp | 676 ++++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 86 +++-- src/eulerian_bissectormode4C.cpp | 13 +- src/mode.h | 47 ++- 7 files changed, 787 insertions(+), 66 deletions(-) commit 3f3058b293a29304d262f7807144910eb3bf3abc Author: buteau Date: Wed Nov 24 18:07:04 2004 +0000 added PDF version of class hierarchy doc/projetHKL_architecture.pdf | Bin 0 -> 406062 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit c1bdaae4100cde04e701aa4a2e4ef6a1dec175b6 Author: dupuy Date: Wed Nov 24 13:38:51 2004 +0000 ajout du fichier readme.txt dans le repertoire doc doc/README.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 93db9afe0d30b9ff86e6b65802491a9252bb42af Author: dupuy Date: Wed Nov 24 10:45:57 2004 +0000 ajout des fichiers doxyfile-to-tex et HKL-code-doc.pdf utilis et/ou gnr par doxygen doc/Doxyfile-to-tex | 248 +++++++++++++++++++++++++++++++++++++ doc/projetHKL_reference_manual.pdf | Bin 0 -> 154729 bytes 2 files changed, 248 insertions(+) commit 00c7b692b71912a88d2c1bc654a8f8d5d038df70 Author: buteau Date: Wed Nov 24 09:27:18 2004 +0000 added target in Makefile.VC for generation of library with standard SOLEIL Makefiles src/Makefile.vc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 1a2acf416649773db41080c958349334959f89a5 Author: buteau Date: Wed Nov 24 08:05:02 2004 +0000 added Makefile.VC to recompile library with standard SOLEIL Makefiles src/Makefile.vc | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) commit d9794be2cc988d497924e58b571b3a48f2486fce Author: delos Date: Tue Nov 23 13:46:54 2004 +0000 Ajout de documentation dans diffractometer.h .cpp src/diffractometer.cpp | 8 ++++---- src/diffractometer.h | 17 ++++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) commit 17356d157b7928925a791d1e6cb13c4fe77f2bf8 Author: delos Date: Tue Nov 23 13:23:42 2004 +0000 Ajout de documentation Introduction du 6-cercle dans la doc. doc/pilotage-diffract.doc | Bin 297984 -> 328192 bytes src/HKLException.h | 60 +++++++++++++++++----------------- src/angleconfig.h | 71 +++++++++++++++++++++++----------------- src/constants.cpp | 18 +++++++---- src/constants.h | 42 ++++++++++++++---------- src/cristal.cpp | 2 ++ src/cristal.h | 80 ++++++++++++++++++++++++++++------------------ src/diffractometer.h | 10 ++++-- src/mode.h | 46 +++++++++++++------------- src/reflection.h | 36 ++++++++++----------- src/source.h | 12 +++---- src/svecmat.h | 60 +++++++++++++++++----------------- 12 files changed, 243 insertions(+), 194 deletions(-) commit bef5331a75dbeae8e64f55856b0d5096fab6738a Author: delos Date: Wed Nov 17 15:30:02 2004 +0000 First new project release src/Exception_hkl.h | 0 src/LibUser.cpp | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/test_cristal.cpp | 19 ------ 3 files changed, 160 insertions(+), 19 deletions(-) commit 34aadf99f2be0badc07addacb3f7a8d5e8e0187e Author: delos Date: Wed Nov 17 15:01:59 2004 +0000 Architecture de base4 Modif eulerian bisector mode src/eulerian_bissectormode4C.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit a36be9db2cf48dcf8c1f94700bbaf1ead4e2987f Author: delos Date: Wed Nov 17 14:27:34 2004 +0000 Architecture de base4 Construction de diffractomtres avec settings diffrs src/cristal.cpp | 30 ++ src/cristal.h | 7 +- src/diffractometer.cpp | 657 ++++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 62 +++- src/eulerian_bissectormode4C.cpp | 8 +- 5 files changed, 735 insertions(+), 29 deletions(-) commit 3788ff7d571cfdcc30a7f2a01c23d33b9f168030 Author: delos Date: Wed Nov 17 10:21:29 2004 +0000 Architecture de base3+constantes commit 68b0389fa4d73a9988d8fedc044264ef068317b0 Author: delos Date: Wed Nov 17 10:09:59 2004 +0000 Architecture de base3+constantes doc/projetHKL_architecture.mdl | 348 ++++++++++++++++++++++++++++++++------- src/angleconfig.h | 2 +- src/constants.cpp | 19 +++ src/constants.h | 76 +++++++++ src/cristal.cpp | 56 +++++-- src/diffractometer.cpp | 198 +++++++++++++++------- src/diffractometer.h | 89 +++++----- src/eulerian_bissectormode4C.cpp | 43 +++-- src/main.cpp | 5 +- src/mode.h | 32 ++-- src/reflection.cpp | 93 ++++++++++- src/reflection.h | 56 ++++--- 12 files changed, 784 insertions(+), 233 deletions(-) commit 5fdbdb6a33b117f941446ce191572dde33672886 Author: delos Date: Mon Nov 8 16:53:53 2004 +0000 Architecture de base2 doc/archi4.mdl | 8333 -------------------------------- doc/archi9.mdl | 8369 --------------------------------- doc/pilotage-diffract17.doc | Bin 262144 -> 0 bytes src/Exception_hkl.h | 0 src/HKLException.cpp | 204 + src/HKLException.h | 193 + src/angleconfig.h | 1 + src/cristal.cpp | 132 + src/cristal.h | 10 + src/diffractometer.cpp | 510 +- src/diffractometer.h | 4 + src/eulerian_angleconfiguration4C.cpp | 12 + src/eulerian_bissectormode4C.cpp | 114 +- src/main.cpp | 395 +- src/mode.h | 26 + src/smatrix.cpp | 24 + src/source.h | 5 +- src/svecmat.h | 2 + 18 files changed, 1600 insertions(+), 16734 deletions(-) commit a3900e250b93498e3814cddc4271f2382a5e31ff Author: delos Date: Tue Nov 2 13:11:27 2004 +0000 Architecture de base2 doc/pilotage-diffract.doc | Bin 299520 -> 297984 bytes src/cristal.cpp | 73 ++++++++++++++++-- src/cristal.h | 42 ++++++++--- src/diffractometer.cpp | 106 +++++++++++++++++++++----- src/diffractometer.h | 32 ++++++-- src/eulerian_bissectormode4C.cpp | 66 ++++++++++++++-- src/main.cpp | 157 +++++++++++++++++++++++++++++++-------- src/mode.h | 8 ++ src/smatrix.cpp | 6 +- src/svecmat.h | 4 + src/svector.cpp | 17 ++++- 11 files changed, 425 insertions(+), 86 deletions(-) commit c1bebd3cc88f17ea07caaf19246f463636cc87e4 Author: delos Date: Wed Oct 27 10:04:58 2004 +0000 Architecture de base doc/archi9.mdl | 8369 ++++++++++++++++++++++++++++++++++++++++ doc/pilotage-diffract.doc | Bin 0 -> 299520 bytes doc/projetHKL_architecture.mdl | 8369 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 16738 insertions(+) commit ed4a1031b25909b701420bbd8484ca0f9e31995c Author: delos Date: Wed Oct 27 09:58:10 2004 +0000 Architecture de base src/angleconfig.h | 168 +++++++++++++ src/cristal.cpp | 72 ++++++ src/cristal.h | 68 +++++ src/diffractometer.cpp | 322 ++++++++++++++++++++++++ src/diffractometer.h | 171 +++++++++++++ src/eulerian_angleconfiguration4C.cpp | 110 ++++++++ src/eulerian_bissectormode4C.cpp | 77 ++++++ src/kappa_angleconfiguration4C.cpp | 107 ++++++++ src/main.cpp | 459 ++++++++++++++++++++++++++++++++++ src/mode.h | 118 +++++++++ src/reflection.cpp | 56 +++++ src/reflection.h | 69 +++++ src/smatrix.cpp | 149 +++++++++++ src/source.cpp | 32 +++ src/source.h | 42 ++++ src/svecmat.h | 197 ++++++--------- src/svector.cpp | 138 ++++++++++ src/test_cristal.cpp | 19 ++ 18 files changed, 2253 insertions(+), 121 deletions(-) commit 6dd18d2a81df01d5433979d7850187599f2c4548 Author: petit Date: Thu Oct 14 15:35:59 2004 +0000 Initial revision doc/archi4.mdl | 8333 +++++++++++++++++++++++++++++++++++++++++++ doc/pilotage-diffract17.doc | Bin 0 -> 262144 bytes src/svecmat.h | 158 + 3 files changed, 8491 insertions(+) hkl-5.1.7/NEWS0000664000175000017500000004642215144640354012001 0ustar00piccapicca# -*- org -*- * 5.1.7 <2026-02-16 lun.> ** Tests - fixes typo when checking for arch (arm64 and ppc64el) * 5.1.6 <2026-02-16 lun.> ** Tests - updated the sha256 for the =CIRPAD= detector on numerous architectures. It i snow possible to skip these test or an architecture by using the =NULL= sha256. * 5.1.5 <2026-02-13 ven.> ** Binoculars-ng (Haskell program) - Build with ghc 9.10 (Debian unstable) ** Ghkl (Gui) - add toggled buttons in order to display bullet internal and/or openGL model. It helps when debuging collision issues. ** Hkl (C-library) - Added the =SOLEIL CRISTAL K4C= diffractometer. * 5.1.4 <2026-01-20 mar.> ** Build system - It is now possible to gives a CABALFLAGS on the command line. The haskell code was instrumented to support a new option useThreaded. This options is activated by default, but some architecture do not supporte threading, so in order to allow build and test on these architectures, is is possible to call configure like this. ./configure CABALFLAGS="-f -useThreaded" - remove old ICA files, used by the old maven build system. ** Binoculars (C-library) - Added support for double images. - Added the `hkl_binoculars_detectors_2d_img_load` in order to load rigaku img files. For now only uint16_t images. - Added the Rigaku XSPA 1M detector (RigakuXspa1M). - fixed the polarisation correction. - switch the photons array to float in order to deal with small corrections. (polarisation) - limit the stereo projection to the north pole. ** Binoculars-ng (Haskell program) - dispatcher.ncores = 0 mean: use all capabilities of the CPU hardware. The default remains equal to `4` if this property is not defined. - Projections - 'q_thetax_phix' -> latitude and longitude of q with qx as reference. - 'q_thetay_phiy' -> latitude and longitude of q with qy as reference. - 'q_thetaz_phiz' -> latitude and longitude of q with qz as reference. - DataSource - better error message when we do not find the data's. It display the faulty DataSourcePaths. - When opening a datafile, display the real DataSource of the DataFrame. - DataSource Image - support for double image from hdf5 files. - Added a constructor in order to read the Rigaku images. `DataSourcePath'Image'Img (Detector Hkl DIM2) (DataSourcePath Attenuation) Text Scannumber` - Added a new constructor for dummy images. DataSourcePath'Image'Dummy. this is usefull if you want to obtain a cube with the intensity corrections (polarisation) . Just set all the image pixels values to 1.0 and voilà. ** Documentation - Updated thanks to Didier Weirmeille from the ESRF ** Hkl3D (Anticollision) - switch from the g3d un-maintained library to assimp in order to read model files. - full rewrite of the configure file parser. (it should be more robust now). ** Gui - migrated from gtk3 to gtk4. ** Tests - binoculars-ng detectors tests are using sha256 in order to check mask and coordinates integrity. If you change a detector definition you need to update the sha256 fingerprint in the hkl-binoculars_t.c file. example of a failure: detector 9 fingerpring: 5c747478f67ad54485bc3502c825bff41c0934c94a0160179909c483d75f541a , expected: 49885be2c9cfea697b8f6a6e0c00f9dec687760a8b4cfdb4eda94af1014322ce not ok 3 - mask_get * 5.1.3 <2025-01-15 mer.> ** Lib binoculars - it is now possible to mask a ring of n pixels around each module. Most of the times these pixel's statistics are bad. ** Binoculars-ng - Added float64 support for masks - It is possible to define a fall back for mask location with this syntax. `my_first_mask.npy | my_second_mask.npy` * 5.1.0 <2024-10-15 mar.> ** General - 5.x runtime can be co-installed with the 4.x series. - hkl.h contain all the Public API. - A clear separation between the public and private API was achieved, in order to propose a Long Time Support of the 5.x series. - c-tap-hardness library was embeded to provide the unit test framework. - gobject-instrospection provide the binding support. Look at this [[https://gi.readthedocs.io/en/latest/][page]] for more informations. - Documentation was generated with org-mode and asymptote for the figures. - New diffractometers added - APS POLAR thanks to Pete R. Jemian . - E4CH (eulerian 4 circles horizontal) geometry. - MARS beamline (SOLEIL) eulerian 4 circles vertical geometry. - SOLEIL SIRIUS KAPPA - SOLEIL SIRIUS TURRET - New Pseudo Axes engines. - qper_qpar - A not yet public hkl3d library used only by the gui allow to compute (Bullet) and display (OpenGL) collision for model described using the COLLADA file format. - all private symbols are now hidden. ** Binoculars-ng - Added this new program in order to project 2D Detectors images in the hkl reciprocal space, qxqyqz, etc... It support for now a bunch of Soleil beamlines experiments (all SIXS geometries, MARS, CRISTAL and DIFFABS). - make it compile with ghc 9.6 - Added support for mask per scan. ** Buildsystem - add a --disable-hkl3d flag to avoid hkl3d library compilation. - replace the --enable-ghkl with a --disable-gui. - use ./configure --help for all the options ** Gui - Rewriten using Gtk instead of Gtkmm, in order to minimise the required dependencies. - Added a 3D view to display diffractometers and collisions. - Added the K6C 3D model. ** Bindings - Provide the garantie via unit tests that the python API will be stable during all the 5.x lifetime. - For other languages look at [[https://gi.readthedocs.io/en/latest/users.html][here]]. * 5.0.0.3381 <2023-11-21 mar.> - fix for real the HklLattice segfault <2023-11-21 mar.> - added the [qx_qy|qx_qz|qy_qz]_timestamp custom projection to binoculars-ng <2023-11-20 Mon> - added the q_sampleaxis_timestamp custom projection to binoculars-ng <2023-11-17 Fri> - fix the segfault when trying to create a non valid HklLattice <2023-11-17 Fri> * 5.0.0.2661 <2020-10-02 Fri> ** Only finite float values are allow when setting an HklParameter value or range. When using =hkl_parameter_value_set= or =hkl_parameter_min_max_set= functions it is not allowed to use the float =NaN=, =-Inf=, =+Inf= value. ** use python3 instead of python2 for unit tests In order to prepare the removal of python2 for Debian 11, we switched the unit test. The remaining part is during the build of the documentation. The best would be to report a bug against emacs in order to set python3 as default python interpreter. ** Added the Soleil Nanoscopium robot setup. * 5.0.0.2456 <2018-02-22 Thu> ** add emergence on all e4c diffractometers <2017-03-16 Thu> The emergence pseudo axis was added to =SOLEIL MARS= and =E4CV= ** Fix for multiarch (headers) <2016-05-04 mer.> The =ccan_config.h= generated file is arch specific. It is then necessary to install this file under /usr/include/ on Debian like systems. This way it will be possible to co-installa 32/64 bit version of hkl, or to do cross-compilation (arm on x86_64, etc...) ** Fix the FTBFS with the new bullet 2.86.1 version <2017-08-13 dim.> In order to update the internal structures of =Hkl3DObject= (the =is-colliding= member), we were using a callback which became un-effective with this new version of bullet. The logic was rewritten in order to be much more efficient using the manifold informations. Now we iterate on =Hkl3DObject= object only once (n) complexity instead of (n²) with the previous one. ** Added "SOLEIL SIXS MED2+3 v2" geometry <2019-03-29 Fri> This diffractometer contains a global HklEngineList parameter in order to activate or not the rotation of the Detector. A new public API was added in order to deal with these parameters. #+begin_src c const darray_string *hkl_engine_list_parameters_names_get(const HklEngineList *self); const HklParameter *hkl_engine_list_parameter_get(const HklEngineList *self, const char *name, GError **error); int hkl_engine_list_parameter_set(HklEngineList *self, const char *name, const HklParameter *parameter, GError **error); void hkl_engine_list_parameters_values_get(const HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type); int hkl_engine_list_parameters_values_set(HklEngineList *self, double values[], size_t n_values, HklUnitEnum unit_type, GError **error); #+end_src And also available via the Python binding. #+begin_src python :export code engines = factory.create_new_engine_list() # get parameters names names = engines.parameters_names_get() # get the parameters values values = engines.parameters_values_get(Hkl.UnitEnum.USER) # set the parameters values engines.parameters_values_set(values, Hkl.UnitEnum.USER) #+end_src * 5.0.0.2080 <2016-04-27 mer.> ** =HklEngine= <2016-01-20 mer.> emergence_fixed for the SOLEIL SIX MED 2+2 geometry. ** =HklVector= <2016-02-09 mar.> The hkl_vector_init method is now public. ** =HklParameter= <2016-02-25 Thu> At the end of the computation all solutions are filtered in order to check that they are valid (min < value < range). BUT for a rotation axis this check was instead (min < value % 2pi < max). ** =HklGeometry= <2016-04-20 mer.> Add hkl_geometry_[sample/detector]_rotation_get method. It is now possible to get the sample or the detector rotation expressed as a =HklQuaternion=. #+begin_src python :export code qr = geometry.sample_rotation_get(sample) qd = geometry.detector_rotation_get(detector) #+end_src ** =HklQuaternion= <2016-04-20 mer.> Add hkl_quaternion_to_matrix in order to convert a =HklQuaternion= into a =HklMatrix=. Then you just need to convert this HklMatrix into a numpy array when used from the python binding #+begin_src python :export code def hkl_matrix_to_numpy(m): M = empty((3, 3)) for i in range(3): for j in range(3): M[i, j] = m.get(i, j) return M M = hkl_matrix_to_numpy(q.to_matrix()) #+end_src ** Soleil Sirius Turret <2016-04-26 mar.> Add the =basepitch= axis which rotate around $\vec{y}$ in mrad. * 4.99.99.1955 <2015-07-15 mer.> Add the ccan_config.h public header. This header is generated with the ccan configurator program. * 4.99.99.1950 <2015-07-07 mar.> Fix an FTBFS observed on the sparc arch * 4.99.99.1949 <2015-07-03 ven.> ** =HklInterval= <2015-07-03 ven.> =hkl_interval_cmp= was wrong. Now the comparison is done between =HKL_EPSILON= and the distance between minimum and maximum. This problem was triggered first on ppc64el architecture. ** PATH_MAX <2015-07-03 ven.> Replace getcwd called by get_current_dir_path instead in order to avoid PATH_MAX which is not available on hurd. * 4.99.99.1946 <2015-06-30 mar.> ** =HklEngine= *** "emergence" <2015-06-22 lun.> Add a new emergence engine which contains only one pseudo axis. + =emergence= the outgoing beam emergence from the sample's surface. + =azimuth= the sample's surface azimuth. * 4.99.99.1940 <2015-05-04 lun.> ** =HklLattice= add an =hkl_lattice_volume_get= #+begin_src c volume = hkl_lattice_volume_get(lattice); #+end_src ** =HklEngine= *** "nrj, sample, ... dependencies" <2015-03-24 mar.> Add the =hkl_engine_dependencies_get= method which return if the =HklEngine= depends of the axes, the energy, or the sample. the possible values are stored in the =HklEngineDependencies= enum. #+begin_src c dependencies = hkl_engine_dependencies_get(engine); if (dependencies & HKL_ENGINE_DEPENDENCIES_ENERGY) { ... } if (dependencies & HKL_ENGINE_DEPENDENCIES_SAMPLE) { ... } ... #+end_src *** "tth2" <2015-04-03 ven> Add a new hkl engine which contains two pseudo axes. + =tth= two times the diffraction angle $\theta$ + =alpha= the azimuth of q in the zOy plan. *** "incidence" <2015-04-21 mar.> Add a new incidence engine which contain only one pseudo axis. + =incidence= the incoming beam incidence on the sample surface. + =azimuth= the sample surface azimuth. *** =hkl_engine_parameter_set= <2015-05-04 lun.> Fix a bug and expose the method in the binding. *** general - use #define AXIS "axis_name" in all the code to set the axes names at only one place. <2015-04-23 jeu.> ** =HklLattice= expose in the binding the _x_get/set methods <2015-03-24 mar.> Now you can use hkl_lattice_x_get where x=a, b, c, alpha, beta, gamma in the bindings. #+begin_src python :export code a = lattice.a_get() lattice.a_set(a) #+end_src ** =HklSampleReflection= expose the flag_get/set and geometry_get/set method <2015-03-24 mar.> It is now possible to change the geometry stored in a reflection via the bindings. #+begin_src python :export code flag = reflection.flag_get() reflection.flag_set(flag) geometry = reflection.geometry_get() geometry.axes_values_set([omega, chi, phi, ...]) reflection.geometry_set(geometry) #+end_src * 4.0.4 UNRELEASED * add the SOLEIL SIXS MED2+2 diffractometer - engine: hkl - mode: reflectivity. - engine: qper_qpar * add the SOLEIL MARS diffractometer - engine: qper_qpar * add the PETRA3 P09 EH2 diffractometer - engine: qper_qpar * modified E6C - engine: qper_qpar - add modes : hkl psi_constant_horizontal, constant_mu_horizontal * K6C - engine hkl: - add the constant_incidence mode - engine: qper_qpar * add the sphinx documentation * 4.0.3 <2010-06-06 dim.> * remove the usage.c file to avoid a GPL2-GPL3+ incompatibility * update the documentation * fix warning catched by clang * 4.0.2 <2010-06-01 mar.> * add the ghkl manpage and .desktop file * fix the ghkl quit menuitem bugs * 4.0.1 <2010-05-10 lun.> * fix a few ghkl bugs (.ui files installation) * add a --enable-ghkl=[yes,no] flag to allow compiling the gui interface * do not forgot to link ghkl against gsl. * display by default the preference panel of ghkl. * 4.0.0 <2010-04-14 mer.> * add the autotools buildsystem and remove all other systems. * add a GUI ghkl for testing purpose based on gtkmm. * add the GNU info doc * add the gtk-doc to document the api (work in progress) * new structure for the HklDetector (prepare for 2D detectors) * HklGeometryConfig shared between all equivalent HklGeometries. * fix for 64 bits computers runtime error. * add the GError class to report calculation errors (not yet used) * new way to set the UB matrix of a sample (hkl_sample_set_UB). * new ZAxis geometry - mode zaxis - mode reflectivity (mu = gamma) * 3.0.1 <2009-10-23 ven.> * add the psi_constant mode to the e4cv, e6c, k4cv and k6c geometries. (thanks teresa) * upgrade the user guide to explain how to add a mode. * the horizontal modes are also valid if omega = +-PI. (e6c, k6c) * remove geometries with an invalid range from the list of solutions. * 3.0.0 <2009-07-15 mer.> * Rewrote from scratch in C with the GSL library. - now most of pseudo axes modes are numeric. So a 6 circles mode is now a real 6 circles mode. * Eulerian 4 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector" * Mode "constant_omega" * Mode "constant_chi" * Mode "constant_phi" * Mode "double_diffraction" - PseudoAxisEngine "psi": "psi" * Mode "psi" * Kappa 4 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector" * Mode "constant_omega" * Mode "constant_chi" * Mode "constant_phi" * Mode "double_diffraction" - PseudoAxisEngine "psi": "psi" * Mode "psi" - PseudoAxisEngien "eulerians": "omega", "chi", "phi" * mode "eulerians" * Eulerian 6 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector_vertical" * Mode "constant_omega_vertical" * Mode "constant_chi_vertical" * Mode "constant_phi_vertical" * Mode "double_diffraction_vertical" * Mode "lifting_detector" * Mode "bissector_horizontal" * Mode "double_diffraction_horizontal" - PseudoAxisEngine "psi": "psi" * Mode "psi" * Kappa 6 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector_vertical" * Mode "constant_omega_vertical" * Mode "constant_chi_vertical" * Mode "constant_phi_vertical" * Mode "double_diffraction_vertical" * Mode "lifting_detector" * Mode "bissector_horizontal" * Mode "constant_phi_horizontal" * Mode "constant_kphi_horizontal" * Mode "double_diffraction_horizontal" - PseudoAxisEngine "psi": "psi" * Mode "psi" - PseudoAxisEngien "eulerians": "omega", "chi", "phi" * mode "eulerians" * 2.3.0 <2007-01-24 mer.> * Refactoring of the sample part. - It is now possible to create different kind of samples easily. - MonoCrystal type. * Diffractometers: - Eulerian 6 Circles. - kappa 4 Circles Vertical. * Refactoring of the PseudoAxe part. - Derived PseudoAxe can be created from an already existing PseudoAxe if the Geometry conversion exist. - Better related PseudoAxes (ex Eulerians on a Kappa) - The PseudoAxe is just a interface, computation is done by the PseudoAxeEngine. - Eulerian 4 Circles Vertical - "th2th" : derived from the twoC - "q2th" : derived from the twoC - "q" : derived from the twoC - kappa 4 Circles Vertical - "omega", "chi", "phi" : eulerian 4 circles Vertical pseudoAxes. - "th2th" : derived from the twoC - "q2th" : derived from the twoC - "q" : derived from the twoC - "psi" : derived from the Eulerian 4 Circlers Vertical. - Eulerian 6 Circles: - "tth" : 2 * theta - "q" : 2 * tau * sin(theta) / lambda - "psi" : derived from the Eulerian 4 Circlers Vertical. - Kappa6C - "omega", "chi", "phi" : derived from the Kappa 4 Circles Vertical. - "tth" derived from the Eulerian6C. - "q" derived from the Eulerian6C. - "psi" : derived from the Eulerian 4 Circlers Vertical. * Refactoring of the Modes. - Derived Mode can be created from an already existing Mode if the Geometry conversion exist. - all Eulerian 4 Circles on the kappa4C, Eulerian6c and Kappa6C diffractometers. * 2.2.0 <2006-06-19 lun.> * Diffractometers: - twoC Vertical. - Eulerian 4 Circles Vertical. - Kappa 6 Circles. * PseudoAxes - twoC - "th2th": omega - 2theta (domega = d2theta / 2) - "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda - "q" : 2 * tau * sin(theta) / lambda - Eulerian 4 Circles Vertical - "th2th": omega - 2theta (domega = d2theta / 2) - "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda - "q" : 2 * tau * sin(theta) / lambda - "psi" : Rotation of the sample oaround the Q vector. * Modes - twoC - "symetric" (omega = theta, 2theta = 2 * theta) - "fix incidence" (omega = free, 2theta = 2 * theta) - Eulerian 4 circles: - "Bissector" - "Delta Theta" - "Constant Omega" - "Constant Chi" - 'Constant Phi" - Kappa6C - all Eulerian 4 Circles modes. hkl-5.1.7/hkl.pc.in0000664000175000017500000000045514677222567013021 0ustar00piccapiccaprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: hkl Description: Library for hkl Diffractometer computation Version: @VERSION@ URL: http://repo.or.cz/w/hkl.git Requires: gsl glib-2.0 Libs: -L${libdir} -lhkl Libs.private: -lm Cflags: -I${includedir}/hkl-@VMAJ@ hkl-5.1.7/gui/0000775000175000017500000000000015144640566012063 5ustar00piccapiccahkl-5.1.7/gui/hkl-gui-macros.h0000664000175000017500000000353615143645056015063 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GUI_MACROS_H__ #define __HKL_GUI_MACROS_H__ #include #include "hkl.h" #define add_column(column_view, name, item_factory, ...) do { \ GtkListItemFactory *factory; \ GtkColumnViewColumn *column; \ \ factory = hkl_gui_item_factory_new_ ## item_factory (__VA_ARGS__); \ column = gtk_column_view_column_new((name), factory); \ gtk_column_view_append_column ( GTK_COLUMN_VIEW (column_view), column); \ } while (0) #define get_model(filename) \ (0 == access(filename, R_OK)) ? filename : \ ((0 == access("../data/" filename, R_OK)) ? "../data/" filename : \ ((0 == access(PKGDATA "/hkl3d/" filename, R_OK)) ? PKGDATA "/hkl3d/" filename : NULL)) #define set_label_from_double(label, value) do { \ char *buf = g_strdup_printf ("%0.*f", 6, value); \ gtk_label_set_label (GTK_LABEL (label), buf); \ g_free(buf); \ } while (0) #endif /* __HKL_GUI_MACROS_H__ */ hkl-5.1.7/gui/hkl-gui-geometry.c0000664000175000017500000001315415143645056015422 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-macros.h" /***********/ /* Factory */ /***********/ enum { PROP_0, PROP_GEOMETRY, NUM_PROPERTIES, }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; typedef struct _HklGuiGeometry HklGuiGeometry; struct _HklGuiGeometry { GObject parent_instance; /* instance members */ HklGeometry *geometry; /* not owned */ }; G_DEFINE_FINAL_TYPE(HklGuiGeometry, hkl_gui_geometry, G_TYPE_OBJECT); static void hkl_gui_geometry_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiGeometry *self = HKL_GUI_GEOMETRY (object); switch (prop_id) { case PROP_GEOMETRY: { self->geometry = g_value_get_pointer (value); g_object_notify_by_pspec (object, pspec); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_geometry_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiGeometry *self = HKL_GUI_GEOMETRY (object); switch (prop_id) { case PROP_GEOMETRY: g_value_set_pointer (value, self->geometry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_geometry_dispose (GObject *gobject) { /* HklGuiGeometry *self = HKL_GUI_GEOMETRY (gobject); */ /* In dispose(), you are supposed to free all types referenced from this * object which might themselves hold a reference to self. Generally, * the most simple solution is to unref all members on which you own a * reference. */ /* dispose() might be called multiple times, so we must guard against * calling g_object_unref() on an invalid GObject by setting the member * NULL; g_clear_object() does this for us. */ /* Always chain up to the parent class; there is no need to check if * the parent class implements the dispose() virtual function: it is * always guaranteed to do so */ G_OBJECT_CLASS (hkl_gui_geometry_parent_class)->dispose (gobject); } static void hkl_gui_geometry_finalize (GObject *gobject) { /* HklGuiGeometry *self = HKL_GUI_GEOMETRY(gobject); */ /* Always chain up to the parent class; as with dispose(), finalize() * is guaranteed to exist on the parent's class virtual function table */ G_OBJECT_CLASS (hkl_gui_geometry_parent_class)->finalize (gobject); } static void hkl_gui_geometry_init(HklGuiGeometry *geometry) { geometry->geometry = NULL; } static void hkl_gui_geometry_class_init (HklGuiGeometryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = hkl_gui_geometry_dispose; object_class->finalize = hkl_gui_geometry_finalize; object_class->get_property = hkl_gui_geometry_get_property; object_class->set_property = hkl_gui_geometry_set_property; props[PROP_GEOMETRY] = g_param_spec_pointer ("geometry", "Geometry", "the embeded HklGeometry.", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); g_object_class_install_properties (object_class, NUM_PROPERTIES, props); } HklGuiGeometry * hkl_gui_geometry_new(const HklGeometry *geometry) { return g_object_new (HKL_GUI_TYPE_GEOMETRY, "geometry", geometry, NULL); } gdouble hkl_gui_geometry_get_axis_value(HklGuiGeometry *self, gint idx) { gint n_values; n_values = darray_size(*hkl_geometry_axis_names_get(self->geometry)); double values[n_values]; hkl_geometry_axis_values_get(self->geometry, values, n_values, HKL_UNIT_USER); return values[idx]; } HklGeometry * hkl_gui_geometry_get_geometry(HklGuiGeometry *self) { return self->geometry; } /****************/ /* The Gui Part */ /****************/ static void bind_item_factory_label__geometry_axis_value_cb(GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { GtkWidget *label; gint idx = GPOINTER_TO_INT(user_data); HklGuiGeometry *self; label = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_return_if_fail(NULL != self->geometry); set_label_from_double(label, hkl_gui_geometry_get_axis_value(self, idx)); } GtkListItemFactory * hkl_gui_geometry_axis_value_factory_new(gint idx) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_label_cb), GINT_TO_POINTER(idx)); g_signal_connect (factory, "bind", G_CALLBACK (bind_item_factory_label__geometry_axis_value_cb), GINT_TO_POINTER(idx)); return factory; } hkl-5.1.7/gui/hkl-gui-diffractometer.c0000664000175000017500000000775615133711150016564 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui-diffractometer-private.h" struct diffractometer_t *create_diffractometer(HklFactory *factory) { struct diffractometer_t *self = g_new(struct diffractometer_t, 1); self->factory = factory; self->geometry = hkl_factory_create_new_geometry (factory); self->engines = hkl_factory_create_new_engine_list (factory); self->detector = hkl_detector_factory_new (HKL_DETECTOR_TYPE_0D); self->solutions = NULL; return self; } void diffractometer_fprintf(FILE *f, struct diffractometer_t *self) { hkl_geometry_fprintf(f, self->geometry); hkl_detector_fprintf(f, self->detector); hkl_engine_list_fprintf(f, self->engines); /* hkl_geometry_list_fprintf(f, self->solutions); */ } void diffractometer_free(struct diffractometer_t *self) { if (NULL != self->geometry) { hkl_geometry_free(self->geometry); self->geometry = NULL; } if (NULL != self->engines){ hkl_engine_list_free(self->engines); self->engines = NULL; } if(NULL != self->detector){ hkl_detector_free(self->detector); self->detector = NULL; } g_free(self); } void diffractometer_update(struct diffractometer_t *self) { g_return_if_fail(NULL != self); g_return_if_fail(NULL != self->engines); hkl_engine_list_get(self->engines); } void diffractometer_set_sample(struct diffractometer_t *self, HklSample *sample) { g_return_if_fail(NULL != self); g_return_if_fail(NULL != sample); hkl_engine_list_init(self->engines, self->geometry, self->detector, sample); diffractometer_update(self); } gdouble diffractometer_get_wavelength(const struct diffractometer_t *self) { g_return_val_if_fail(NULL != self, 0); return hkl_geometry_wavelength_get(self->geometry, HKL_UNIT_USER); } void diffractometer_set_wavelength(struct diffractometer_t *self, double wavelength) { g_return_if_fail(NULL != self); if(hkl_geometry_wavelength_set(self->geometry, wavelength, HKL_UNIT_USER, NULL)){ diffractometer_update(self); } } gboolean diffractometer_set_solutions(struct diffractometer_t *self, HklGeometryList *solutions) { g_return_val_if_fail(NULL != self, FALSE); g_return_val_if_fail(NULL != solutions, FALSE); self->solutions = solutions; return TRUE; } gboolean diffractometer_pseudo_axis_values_set(struct diffractometer_t *self, HklEngine *engine, gdouble values[], guint n_values, GError **error) { g_return_val_if_fail(NULL != self, FALSE); g_return_val_if_fail(NULL != engine, FALSE); HklGeometryList *solutions; solutions = hkl_engine_pseudo_axis_values_set(engine, values, n_values, HKL_UNIT_USER, error); return diffractometer_set_solutions(self, solutions); } void diffractometer_set_geometry(struct diffractometer_t *self, const HklGeometry *geometry) { g_return_if_fail(NULL != self); g_return_if_fail(NULL != geometry); hkl_geometry_set(self->geometry, geometry); hkl_engine_list_geometry_set(self->engines, geometry); } hkl-5.1.7/gui/hkl-gui-item-factories.c0000664000175000017500000002320315133711150016462 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include /****************/ /* Check Button */ /****************/ void hkl_gui_setup_item_factory_check_button_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *widget; widget = gtk_check_button_new (); gtk_list_item_set_child (list_item, widget); } /*********/ /* Entry */ /*********/ /* entry */ void hkl_gui_setup_item_factory_entry_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *entry; entry = gtk_entry_new (); gtk_list_item_set_child (list_item, entry); } void hkl_gui_bind_item_factory_entry_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *source_property) { GtkWidget *entry; GtkEntryBuffer *buffer; GObject *self; GValue value = G_VALUE_INIT; g_return_if_fail (GTK_IS_LIST_ITEM_FACTORY (factory)); g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); g_return_if_fail (source_property != NULL); g_return_if_fail (g_param_spec_is_valid_name (source_property)); entry = gtk_list_item_get_child (list_item); g_return_if_fail (GTK_IS_ENTRY (entry)); buffer = gtk_entry_get_buffer (GTK_ENTRY (entry)); self = gtk_list_item_get_item (list_item); g_return_if_fail (G_IS_OBJECT (self)); g_object_get_property(self, source_property, &value); g_object_set_property (G_OBJECT (buffer), "text", &value); g_object_bind_property(self, source_property, G_OBJECT (buffer), "text", G_BINDING_BIDIRECTIONAL); } GtkListItemFactory * hkl_gui_item_factory_new_entry_property(char *property) { GtkListItemFactory *item_factory; item_factory = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_entry_cb), NULL); g_signal_connect (item_factory, "bind", G_CALLBACK (hkl_gui_bind_item_factory_entry_property_cb), property); return item_factory; } /* entry numeric */ void entry_numeric_insert_text (GtkEditable *editable, const char *new_text, int new_text_length, int *position, gpointer data) { g_signal_stop_emission_by_name (editable, "insert-text"); struct lconv *lc; gboolean sign; int dotpos = -1; int i; int entry_length; const char *entry_text; int digits = 20; entry_text = gtk_editable_get_text (editable); entry_length = g_utf8_strlen (entry_text, -1); lc = localeconv (); for (sign = FALSE, i = 0; idecimal_point)) { dotpos = i; break; } if (dotpos > -1 && *position > dotpos && digits - entry_length + dotpos - new_text_length + 1 < 0) return; for (i = 0; i < new_text_length; i++) { if (new_text[i] == '-' || new_text[i] == '+') { if (sign || (*position) || i) return; sign = TRUE; } else if (new_text[i] == *(lc->decimal_point)) { if (!digits || dotpos > -1 || (new_text_length - 1 - i + entry_length - *position > digits)) return; dotpos = *position + i; } else if (new_text[i] < 0x30 || new_text[i] > 0x39) return; } g_signal_handlers_block_by_func (editable, entry_numeric_insert_text, data); gtk_editable_insert_text (editable, new_text, new_text_length, position); g_signal_handlers_unblock_by_func (editable, entry_numeric_insert_text, data); } void hkl_gui_setup_item_factory_entry_numeric_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *entry; entry = gtk_entry_new (); gtk_entry_set_input_purpose(GTK_ENTRY(entry), GTK_INPUT_PURPOSE_NUMBER); g_signal_connect (gtk_editable_get_delegate(GTK_EDITABLE(entry)), "insert-text", G_CALLBACK (entry_numeric_insert_text), entry); gtk_list_item_set_child (list_item, entry); } static gint string_to_double(GBinding *binding, const GValue * value_a, GValue *value_b, gpointer user_data) { g_assert (G_VALUE_HOLDS_STRING (value_a)); g_assert (G_VALUE_HOLDS_DOUBLE (value_b)); g_value_set_double(value_b, atof(g_value_get_string(value_a))); return TRUE; } void hkl_gui_bind_item_factory_entry_numeric_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *source_property) { GtkWidget *entry; GtkEntryBuffer *buffer; GObject *self; GValue value = G_VALUE_INIT; g_return_if_fail (GTK_IS_LIST_ITEM_FACTORY (factory)); g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); g_return_if_fail (source_property != NULL); g_return_if_fail (g_param_spec_is_valid_name (source_property)); entry = gtk_list_item_get_child (list_item); g_return_if_fail (GTK_IS_ENTRY (entry)); buffer = gtk_entry_get_buffer (GTK_ENTRY (entry)); self = gtk_list_item_get_item (list_item); g_return_if_fail (G_IS_OBJECT (self)); /* synchrotronise the object at first */ g_object_get_property(self, source_property, &value); g_object_set_property (G_OBJECT (buffer), "text", &value); g_object_bind_property_full(self, source_property, G_OBJECT (buffer), "text", G_BINDING_BIDIRECTIONAL, NULL, string_to_double, NULL, NULL); } GtkListItemFactory * hkl_gui_item_factory_new_entry_numeric_property(char *property) { GtkListItemFactory *item_factory; item_factory = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_entry_numeric_cb), NULL); g_signal_connect (item_factory, "bind", G_CALLBACK (hkl_gui_bind_item_factory_entry_numeric_property_cb), property); return item_factory; } /*********/ /* Label */ /*********/ void hkl_gui_setup_item_factory_label_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *label; label = gtk_label_new (""); gtk_list_item_set_child (list_item, label); } void hkl_gui_bind_item_factory_label_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *property) { GtkWidget *label; GObject *self; label = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_return_if_fail(NULL != self); g_object_bind_property(self, property, label, "label", G_BINDING_SYNC_CREATE); } GtkListItemFactory * hkl_gui_item_factory_new_label_property(char *property) { GtkListItemFactory *item_factory; item_factory = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_label_cb), NULL); g_signal_connect (item_factory, "bind", G_CALLBACK (hkl_gui_bind_item_factory_label_property_cb), property); return item_factory; } /***************/ /* Spin Button */ /***************/ void hkl_gui_setup_item_factory_spin_button_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *spin_button; spin_button = gtk_spin_button_new_with_range (-G_MAXDOUBLE, G_MAXDOUBLE, 0.0001); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (spin_button), 1, 10); gtk_list_item_set_child (list_item, spin_button); } void hkl_gui_setup_item_factory_spin_button_vertical_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *spin_button; spin_button = gtk_spin_button_new_with_range (-G_MAXDOUBLE, G_MAXDOUBLE, 0.0001); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (spin_button), 1, 10); gtk_orientable_set_orientation (GTK_ORIENTABLE (spin_button), GTK_ORIENTATION_VERTICAL); gtk_list_item_set_child (list_item, spin_button); } void hkl_gui_bind_item_factory_spin_button_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *source_property) { GtkWidget *spin_button; GObject *self; GValue value = G_VALUE_INIT; g_return_if_fail (GTK_IS_LIST_ITEM_FACTORY (factory)); g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); g_return_if_fail (source_property != NULL); g_return_if_fail (g_param_spec_is_valid_name (source_property)); spin_button = gtk_list_item_get_child (list_item); g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button)); self = gtk_list_item_get_item (list_item); g_return_if_fail (G_IS_OBJECT (self)); g_object_get_property(self, source_property, &value); g_object_set_property (G_OBJECT (spin_button), "value", &value); g_object_bind_property(self, source_property, G_OBJECT (spin_button), "value", G_BINDING_BIDIRECTIONAL); } GtkListItemFactory * hkl_gui_item_factory_new_spin_button_vertical_property(char *property) { GtkListItemFactory *item_factory; item_factory = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_spin_button_vertical_cb), NULL); g_signal_connect (item_factory, "bind", G_CALLBACK (hkl_gui_bind_item_factory_spin_button_property_cb), property); return item_factory; } hkl-5.1.7/gui/hkl-gui.h0000664000175000017500000002700615143645056013577 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include "hkl.h" #define HKL_GUI_TYPE_ENGINE (hkl_gui_engine_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiEngine, hkl_gui_engine, HKL_GUI, ENGINE, GObject) #define HKL_GUI_TYPE_FACTORY (hkl_gui_factory_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiFactory, hkl_gui_factory, HKL_GUI, FACTORY, GObject) #define HKL_GUI_TYPE_GEOMETRY (hkl_gui_geometry_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiGeometry, hkl_gui_geometry, HKL_GUI, GEOMETRY, GObject) #define HKL_GUI_TYPE_PARAMETER (hkl_gui_parameter_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiParameter, hkl_gui_parameter, HKL_GUI, PARAMETER, GObject) #define HKL_GUI_TYPE_SAMPLE (hkl_gui_sample_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiSample, hkl_gui_sample, HKL_GUI, SAMPLE, GObject) #define HKL_GUI_TYPE_SAMPLE_REFLECTION (hkl_gui_sample_reflection_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiSampleReflection, hkl_gui_sample_reflection, HKL_GUI, SAMPLE_REFLECTION, GObject) #define HKL_GUI_TYPE_WINDOW (hkl_gui_window_get_type ()) G_DECLARE_FINAL_TYPE (HklGuiWindow, hkl_gui_window, HKL_GUI, WINDOW, GtkApplication) /**********/ /* engine */ /**********/ HKLAPI HklGuiEngine* hkl_gui_engine_new (HklEngine* engine); HKLAPI HklEngine* hkl_gui_engine_get_engine (HklGuiEngine *gui_engine); HKLAPI GError* hkl_gui_engine_get_error (HklGuiEngine *gui_engine); HKLAPI GtkWidget* hkl_gui_engine_get_frame(HklGuiEngine *self); HKLAPI gboolean hkl_gui_engine_get_initialized (HklGuiEngine *gui_engine); HKLAPI const char* hkl_gui_engine_get_mode (HklGuiEngine *gui_engine); HKLAPI HklGeometryList *hkl_gui_engine_get_solutions(HklGuiEngine *self); HKLAPI void hkl_gui_engine_set_engine (HklGuiEngine *gui_engine, HklEngine *engine); HKLAPI void hkl_gui_engine_set_initialized (HklGuiEngine *gui_engine, gboolean initialized); HKLAPI void hkl_gui_engine_set_mode (HklGuiEngine *gui_engine, const char *mode); HKLAPI void hkl_gui_engine_update (HklGuiEngine* self); /***********/ /* factory */ /***********/ HKLAPI HklGuiFactory* hkl_gui_factory_new(const HklFactory *factory); HKLAPI void hkl_gui_factory_add_reflection(HklGuiFactory *self, HklGuiSample *sample); HKLAPI void hkl_gui_factory_del_reflection(HklGuiFactory *self, HklGuiSample *sample, GtkBitset *selected); HKLAPI void hkl_gui_factory_compute_ub(HklGuiFactory *self, HklGuiSample* sample); HKLAPI struct diffractometer_t* hkl_gui_factory_get_diffractometer(HklGuiFactory *self); HKLAPI GError* hkl_gui_factory_get_error(HklGuiFactory *self); HKLAPI HklFactory* hkl_gui_factory_get_factory(HklGuiFactory *self); HKLAPI const char * hkl_gui_factory_get_name(HklGuiFactory *self); HKLAPI HklGuiSample * hkl_gui_factory_get_sample(HklGuiFactory *self); HKLAPI gdouble hkl_gui_factory_get_wavelength(HklGuiFactory *self); HKLAPI GListStore* hkl_gui_factory_get_liststore_axes(HklGuiFactory *self); HKLAPI GListStore* hkl_gui_factory_get_liststore_engines(HklGuiFactory *self); HKLAPI GListStore* hkl_gui_factory_get_liststore_pseudo_axes(HklGuiFactory *self); HKLAPI GListStore* hkl_gui_factory_get_liststore_solutions(HklGuiFactory *self); HKLAPI void hkl_gui_factory_set_error(HklGuiFactory *self, GError* error); HKLAPI void hkl_gui_factory_set_geometry(HklGuiFactory *self, HklGuiGeometry *ggeometry); HKLAPI void hkl_gui_factory_set_sample(HklGuiFactory *self, HklGuiSample *sample); HKLAPI void hkl_gui_factory_set_wavelength(HklGuiFactory *self, gdouble wavelength); HKLAPI void hkl_gui_factory_setup_3d(HklGuiFactory *old, HklGuiFactory *new, GtkBox *box); HKLAPI void hkl_gui_factory_setup_column_view_sample_reflections(HklGuiFactory *self, GtkSingleSelection *samples, GtkColumnView *column_view); HKLAPI void hkl_gui_factory_setup_column_view_solutions(HklGuiFactory *self, GtkColumnView *column_view); /* geometry */ HKLAPI HklGuiGeometry* hkl_gui_geometry_new(const HklGeometry *geometry); HKLAPI HklGeometry* hkl_gui_geometry_get_geometry(HklGuiGeometry *geometry); HKLAPI gdouble hkl_gui_geometry_get_axis_value(HklGuiGeometry *geometry, gint idx); /*************/ /* parameter */ /*************/ HKLAPI HklGuiParameter* hkl_gui_parameter_new(const HklParameter *parameter); HKLAPI gdouble hkl_gui_parameter_get_maximum(HklGuiParameter *self); HKLAPI gdouble hkl_gui_parameter_get_minimum(HklGuiParameter *self); HKLAPI const char * hkl_gui_parameter_get_name(HklGuiParameter *self); HKLAPI gdouble hkl_gui_parameter_get_value(HklGuiParameter *self); HKLAPI void hkl_gui_parameter_set_maximum(HklGuiParameter *self, gdouble value); HKLAPI void hkl_gui_parameter_set_minimum(HklGuiParameter *self, gdouble value); HKLAPI void hkl_gui_parameter_set_value(HklGuiParameter *self, gdouble value); HKLAPI void hkl_gui_parameter_update(HklGuiParameter *self); /**********/ /* Sample */ /**********/ HKLAPI HklGuiSample* hkl_gui_sample_new(const char *name); HKLAPI HklGuiSample* hkl_gui_sample_new_copy(const HklGuiSample *gsample); /* get */ HKLAPI GError *hkl_gui_sample_get_error(HklGuiSample *self); HKLAPI const char *hkl_gui_sample_get_name(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_a(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_b(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_c(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_alpha(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_beta(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_gamma(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_ux(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_uy(HklGuiSample *self); HKLAPI gdouble hkl_gui_sample_get_uz(HklGuiSample *self); HKLAPI GListStore *hkl_gui_sample_get_reflections(HklGuiSample *self); HKLAPI HklSample *hkl_gui_sample_get_sample(HklGuiSample *self); HKLAPI HklGuiSampleReflection *hkl_gui_sample_get_or0(HklGuiSample *self); HKLAPI HklGuiSampleReflection *hkl_gui_sample_get_or1(HklGuiSample *self); /* set */ HKLAPI void hkl_gui_sample_set_error(HklGuiSample *self, GError *error); HKLAPI void hkl_gui_sample_set_name(HklGuiSample *self, const char *name); HKLAPI void hkl_gui_sample_set_a(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_b(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_c(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_alpha(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_beta(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_gamma(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_ux(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_uy(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_uz(HklGuiSample *self, gdouble value); HKLAPI void hkl_gui_sample_set_or0(HklGuiSample *self, HklGuiSampleReflection *reflection); HKLAPI void hkl_gui_sample_set_or1(HklGuiSample *self, HklGuiSampleReflection *reflection); /* methods */ HKLAPI gboolean hkl_gui_sample_compute_ub(HklGuiSample* sample); HKLAPI void hkl_gui_sample_add_reflection(HklGuiSample *self, HklGeometry *goemetry, HklDetector *detector, gdouble h, gdouble k, gdouble l); HKLAPI void hkl_gui_sample_del_reflection(HklGuiSample *self, const GtkBitset *selected); /*********************/ /* Sample Reflection */ /*********************/ HKLAPI HklGuiSampleReflection* hkl_gui_sample_reflection_new(HklSampleReflection *reflection); HklSampleReflection *hkl_gui_sample_reflection_get_reflection(HklGuiSampleReflection* self); HKLAPI gdouble hkl_gui_sample_reflection_get_h(HklGuiSampleReflection* self); HKLAPI gdouble hkl_gui_sample_reflection_get_k(HklGuiSampleReflection* self); HKLAPI gdouble hkl_gui_sample_reflection_get_l(HklGuiSampleReflection* self); void hkl_gui_sample_reflection_set_reflection(HklGuiSampleReflection* self, HklSampleReflection *reflection); HKLAPI void hkl_gui_sample_reflection_set_h(HklGuiSampleReflection* self, gdouble h); HKLAPI void hkl_gui_sample_reflection_set_k(HklGuiSampleReflection* self, gdouble k); HKLAPI void hkl_gui_sample_reflection_set_l(HklGuiSampleReflection* self, gdouble l); /******************/ /* item factories */ /******************/ /* gui geometry */ HKLAPI GtkListItemFactory* hkl_gui_geometry_axis_value_factory_new(gint idx); HKLAPI void hkl_gui_bind_item_factory_label__geometry_axis_value_cb(GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data); /* gobject */ HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_entry_property(char *property); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_entry_numeric_property(char *property); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_label_property(char *property); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_spin_button_vertical_property(char *property); /* parameter */ HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_spin_button_parameter_value(void); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_spin_button_parameter_min(void); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_spin_button_parameter_max(void); /* sample reflection */ HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_label__sample_reflection_geometry_axis(int idx); HKLAPI GtkListItemFactory *hkl_gui_item_factory_new_check_button__sample_orX(GtkSingleSelection *single_selection, const char *property); HKLAPI void hkl_gui_setup_item_factory_check_button_cb (GtkListItemFactory *factory, GtkListItem *list_item); HKLAPI void hkl_gui_setup_item_factory_entry_cb (GtkListItemFactory *factory, GtkListItem *list_item); HKLAPI void hkl_gui_setup_item_factory_label_cb (GtkListItemFactory *factory, GtkListItem *list_item); HKLAPI void hkl_gui_setup_item_factory_spin_button_cb (GtkListItemFactory *factory, GtkListItem *list_item); HKLAPI void hkl_gui_setup_item_factory_spin_button_vertical_cb (GtkListItemFactory *factory, GtkListItem *list_item); HKLAPI void hkl_gui_bind_item_factory_entry_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *property); HKLAPI void hkl_gui_bind_item_factory_label_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *property); HKLAPI void hkl_gui_bind_item_factory_spin_button_property_cb (GtkListItemFactory *factory, GtkListItem *list_item, const char *property); /* GuiParameter */ void hkl_gui_parameter_bind_factory_label_name_cb (GtkListItemFactory *factory, GtkListItem *list_item); void hkl_gui_parameter_bind_factory_label_value_cb (GtkListItemFactory *factory, GtkListItem *list_item); void hkl_gui_parameter_bind_factory_spin_button_value_cb (GtkListItemFactory *factory, GtkListItem *list_item); hkl-5.1.7/gui/hkl-gui-parameter.c0000664000175000017500000002420115143645056015542 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-diffractometer-private.h" #include "hkl-gui-macros.h" enum { PROP_0, PROP_MAXIMUM, PROP_MINIMUM, PROP_NAME, PROP_PARAMETER, PROP_VALUE, NUM_PROPERTIES, }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; typedef struct _HklGuiParameter HklGuiParameter; struct _HklGuiParameter { GObject parent_instance; /* instance members */ HklParameter *parameter; }; G_DEFINE_FINAL_TYPE(HklGuiParameter, hkl_gui_parameter, G_TYPE_OBJECT); void hkl_gui_parameter_set_parameter (HklGuiParameter *self, HklParameter *parameter); HklParameter *hkl_gui_parameter_get_parameter (HklGuiParameter *self); static void hkl_gui_parameter_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiParameter *self = HKL_GUI_PARAMETER (object); switch (prop_id) { case PROP_MAXIMUM: hkl_gui_parameter_set_maximum(self, g_value_get_double (value)); break; case PROP_MINIMUM: hkl_gui_parameter_set_minimum(self, g_value_get_double (value)); break; case PROP_PARAMETER: hkl_gui_parameter_set_parameter(self, g_value_get_pointer (value)); break; case PROP_VALUE: hkl_gui_parameter_set_value(self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_parameter_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiParameter *self = HKL_GUI_PARAMETER (object); switch (prop_id) { case PROP_MAXIMUM: g_value_set_double (value, hkl_gui_parameter_get_maximum(self)); break; case PROP_MINIMUM: g_value_set_double (value, hkl_gui_parameter_get_minimum(self)); break; case PROP_NAME: g_value_set_string (value, hkl_gui_parameter_get_name(self)); break; case PROP_PARAMETER: g_value_set_pointer (value, hkl_gui_parameter_get_parameter(self)); break; case PROP_VALUE: g_value_set_double (value, hkl_gui_parameter_get_value(self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_parameter_init(HklGuiParameter *parameter) { parameter->parameter = NULL; } static void hkl_gui_parameter_class_init (HklGuiParameterClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = hkl_gui_parameter_set_property; object_class->get_property = hkl_gui_parameter_get_property; props[PROP_MAXIMUM] = g_param_spec_double ("maximum", "Maximum", "the parameter maximum value", -361, 361, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_MINIMUM] = g_param_spec_double ("minimum", "Minimum", "the parameter minimum value", -361, 361, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_NAME] = g_param_spec_string ("name", "Name", "the HklParameter name.", "", G_PARAM_STATIC_NAME | G_PARAM_READABLE); props[PROP_PARAMETER] = g_param_spec_pointer ("parameter", "Parameter", "the embeded HklParameter.", G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_VALUE] = g_param_spec_double ("value", "Value", "the parameter value", -361, 361, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); g_object_class_install_properties (object_class, NUM_PROPERTIES, props); } HklGuiParameter *hkl_gui_parameter_new(const HklParameter *parameter) { return g_object_new (HKL_GUI_TYPE_PARAMETER, "parameter", parameter, NULL); } /* getter */ gdouble hkl_gui_parameter_get_maximum(HklGuiParameter *self) { gdouble min; gdouble max; hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); return max; } gdouble hkl_gui_parameter_get_minimum(HklGuiParameter *self) { gdouble min; gdouble max; hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); return min; } const char * hkl_gui_parameter_get_name (HklGuiParameter *self) { return hkl_parameter_name_get(self->parameter); } HklParameter * hkl_gui_parameter_get_parameter (HklGuiParameter *self) { return self->parameter; } gdouble hkl_gui_parameter_get_value (HklGuiParameter *self) { return hkl_parameter_value_get(self->parameter, HKL_UNIT_USER); } /* setters */ void hkl_gui_parameter_set_maximum (HklGuiParameter *self, gdouble value) { gdouble min; gdouble max; hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); if (TRUE == hkl_parameter_min_max_set(self->parameter, min, value, HKL_UNIT_USER, NULL)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MAXIMUM]); } } void hkl_gui_parameter_set_minimum (HklGuiParameter *self, gdouble value) { gdouble min; gdouble max; hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); if (TRUE == hkl_parameter_min_max_set(self->parameter, value, max, HKL_UNIT_USER, NULL)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MINIMUM]); } } void hkl_gui_parameter_set_parameter (HklGuiParameter *self, HklParameter *parameter) { self->parameter = parameter; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PARAMETER]); } void hkl_gui_parameter_set_value (HklGuiParameter *self, gdouble value) { if (TRUE == hkl_parameter_value_set(self->parameter, value, HKL_UNIT_USER, NULL)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VALUE]); } } void hkl_gui_parameter_update(HklGuiParameter *self) { g_return_if_fail (HKL_GUI_IS_PARAMETER (self)); gdouble value = hkl_gui_parameter_get_value(self); gdouble minimum = hkl_gui_parameter_get_minimum(self); gdouble maximum = hkl_gui_parameter_get_maximum(self); hkl_gui_parameter_set_minimum(self, minimum); hkl_gui_parameter_set_maximum(self, maximum); hkl_gui_parameter_set_value(self, value); } /**********************/ /* GtkListItemFactory */ /**********************/ void hkl_gui_parameter_bind_factory_spin_button_value_cb (GtkListItemFactory *factory, GtkListItem *list_item) { gdouble min; gdouble max; gdouble value; GtkWidget *widget; GtkAdjustment *adjustment; HklGuiParameter *self; widget = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_assert(NULL != self->parameter); hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); value = hkl_parameter_value_get(self->parameter, HKL_UNIT_USER); gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), min, max); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value); adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widget)); g_object_bind_property(self, "value", widget, "value", G_BINDING_BIDIRECTIONAL); g_object_bind_property(self, "minimum", adjustment, "lower", G_BINDING_BIDIRECTIONAL); g_object_bind_property(self, "maximum", adjustment, "upper", G_BINDING_BIDIRECTIONAL); } GtkListItemFactory * hkl_gui_item_factory_new_spin_button_parameter_value(void) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_spin_button_cb), NULL); g_signal_connect (factory, "bind", G_CALLBACK (hkl_gui_parameter_bind_factory_spin_button_value_cb), NULL); return factory; } static void bind_factory_axis_min_cb (GtkListItemFactory *factory, GtkListItem *list_item) { gdouble min; gdouble max; GtkWidget *widget; HklGuiParameter *self; widget = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_assert(NULL != self->parameter); hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), min, max); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), min); g_object_bind_property(self, "minimum", widget, "value", G_BINDING_BIDIRECTIONAL); } GtkListItemFactory * hkl_gui_item_factory_new_spin_button_parameter_min(void) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_spin_button_cb), NULL); g_signal_connect (factory, "bind", G_CALLBACK (bind_factory_axis_min_cb), NULL); return factory; } static void bind_factory_axis_max_cb (GtkListItemFactory *factory, GtkListItem *list_item) { gdouble min; gdouble max; GtkWidget *widget; HklGuiParameter *self; widget = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_assert(NULL != self->parameter); hkl_parameter_min_max_get(self->parameter, &min, &max, HKL_UNIT_USER); gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), min, max); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), max); g_object_bind_property(self, "maximum", widget, "value", G_BINDING_BIDIRECTIONAL); } GtkListItemFactory * hkl_gui_item_factory_new_spin_button_parameter_max(void) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_spin_button_cb), NULL); g_signal_connect (factory, "bind", G_CALLBACK (bind_factory_axis_max_cb), NULL); return factory; } hkl-5.1.7/gui/ghkl.10000664000175000017500000000335414677222567013106 0ustar00piccapicca.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH GHKL 1 "June 1, 2010" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ghkl \- program to do diffractometer computation .SH SYNOPSIS .B ghkl .RI [ options ] .SH DESCRIPTION This manual page documents briefly the .B ghkl commands. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. \fBghkl\fP is a program that gives you access to all the hkl library functionalities. .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .SH SEE ALSO .BR ghkl (1), .br The programs are documented fully by .IR "The hkl library Documentation" , available via the Info system. .SH AUTHOR ghkl was written by Picca Frédéric-Emmanuel .PP This manual page was written by Picca Frédéric-Emmanuel , for the Debian project (and may be used by others). hkl-5.1.7/gui/hkl-gui-3d.h0000664000175000017500000000262315133711150014065 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GUI_3D_H__ #define __HKL_GUI_3D_H__ #include #include "hkl.h" G_BEGIN_DECLS #define HKL_GUI_TYPE_3D (hkl_gui_3d_get_type ()) G_DECLARE_FINAL_TYPE (HklGui3D, hkl_gui_3d, HKL_GUI, 3D, GObject); HklGui3D *hkl_gui_3d_new (const char *filename, HklGeometry *geometry); void hkl_gui_3d_update(HklGui3D *self); void hkl_gui_3d_invalidate(HklGui3D *self); GtkFrame *hkl_gui_3d_get_frame(HklGui3D *self); G_END_DECLS #endif // __HKL_GUI_3D_H__ hkl-5.1.7/gui/hkl-gui-sample-reflection.c0000664000175000017500000002114715133711150017165 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-macros.h" /**********/ /* Sample */ /**********/ enum { PROP_0, PROP_H, PROP_K, PROP_L, PROP_REFLECTION, NUM_PROPERTIES, }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; typedef struct _HklGuiSampleReflection HklGuiSampleReflection; struct _HklGuiSampleReflection { GObject parent_instance; /* instance members */ HklSampleReflection *reflection; HklGuiGeometry *geometry; }; G_DEFINE_FINAL_TYPE(HklGuiSampleReflection, hkl_gui_sample_reflection, G_TYPE_OBJECT); static void hkl_gui_sample_reflection_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiSampleReflection *self = HKL_GUI_SAMPLE_REFLECTION (object); switch (prop_id) { case PROP_H: hkl_gui_sample_reflection_set_h (self, g_value_get_double (value)); break; case PROP_K: hkl_gui_sample_reflection_set_k (self, g_value_get_double (value)); break; case PROP_L: hkl_gui_sample_reflection_set_l (self, g_value_get_double (value)); break; case PROP_REFLECTION: hkl_gui_sample_reflection_set_reflection (self, g_value_get_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_sample_reflection_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiSampleReflection *self = HKL_GUI_SAMPLE_REFLECTION (object); switch (prop_id) { case PROP_H: g_value_set_double (value, hkl_gui_sample_reflection_get_h(self)); break; case PROP_K: g_value_set_double (value, hkl_gui_sample_reflection_get_k(self)); break; case PROP_L: g_value_set_double (value, hkl_gui_sample_reflection_get_l(self)); break; case PROP_REFLECTION: g_value_set_pointer (value, hkl_gui_sample_reflection_get_reflection(self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_sample_reflection_dispose (GObject *gobject) { /* HklGuiSampleReflection *self = HKL_GUI_SAMPLE_REFLECTION (gobject); */ /* In dispose(), you are supposed to free all types referenced from this * object which might themselves hold a reference to self. Generally, * the most simple solution is to unref all members on which you own a * reference. */ /* dispose() might be called multiple times, so we must guard against * calling g_object_unref() on an invalid GObject by setting the member * NULL; g_clear_object() does this for us. */ /* Always chain up to the parent class; there is no need to check if * the parent class implements the dispose() virtual function: it is * always guaranteed to do so */ G_OBJECT_CLASS (hkl_gui_sample_reflection_parent_class)->dispose (gobject); } static void hkl_gui_sample_reflection_finalize (GObject *gobject) { //HklGuiSampleReflection *self = HKL_GUI_SAMPLE_REFLECTION(gobject); /* Always chain up to the parent class; as with dispose(), finalize() * is guaranteed to exist on the parent's class virtual function table */ G_OBJECT_CLASS (hkl_gui_sample_reflection_parent_class)->finalize (gobject); } static void hkl_gui_sample_reflection_init(HklGuiSampleReflection *self) { self->reflection = NULL; self->geometry = NULL; } static void hkl_gui_sample_reflection_class_init (HklGuiSampleReflectionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = hkl_gui_sample_reflection_dispose; object_class->finalize = hkl_gui_sample_reflection_finalize; object_class->get_property = hkl_gui_sample_reflection_get_property; object_class->set_property = hkl_gui_sample_reflection_set_property; props[PROP_H] = g_param_spec_double ("h", "H", "The h miller coordinate", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); props[PROP_K] = g_param_spec_double ("k", "K", "The k miller coordinate ", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); props[PROP_L] = g_param_spec_double ("l", "L", "The l miller coordinate", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); props[PROP_REFLECTION] = g_param_spec_pointer ("reflection", "Reflection", "A HklSamplereflection", G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); g_object_class_install_properties (object_class, NUM_PROPERTIES, props); } HklGuiSampleReflection * hkl_gui_sample_reflection_new(HklSampleReflection *reflection) { return g_object_new (HKL_GUI_TYPE_SAMPLE_REFLECTION, "reflection", reflection, NULL); } /* getters */ gdouble hkl_gui_sample_reflection_get_h(HklGuiSampleReflection* self) { gdouble h, k, l; hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); return h; } gdouble hkl_gui_sample_reflection_get_k(HklGuiSampleReflection* self) { gdouble h, k, l; hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); return k; } gdouble hkl_gui_sample_reflection_get_l(HklGuiSampleReflection* self) { gdouble h, k, l; hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); return l; } HklSampleReflection * hkl_gui_sample_reflection_get_reflection(HklGuiSampleReflection *self) { return self->reflection; } /* setters */ void hkl_gui_sample_reflection_set_h(HklGuiSampleReflection* self, gdouble h_new) { gdouble h, k, l; /* TODO error */ hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); if (TRUE == hkl_sample_reflection_hkl_set(self->reflection, h_new, k ,l, NULL)) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_H]); } void hkl_gui_sample_reflection_set_k(HklGuiSampleReflection* self, gdouble k_new) { gdouble h, k, l; /* TODO error */ hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); if (TRUE == hkl_sample_reflection_hkl_set(self->reflection, h, k_new ,l, NULL)) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_K]); } void hkl_gui_sample_reflection_set_l(HklGuiSampleReflection* self, gdouble l_new) { gdouble h, k, l; /* TODO error */ hkl_sample_reflection_hkl_get(self->reflection, &h, &k, &l); if (TRUE == hkl_sample_reflection_hkl_set(self->reflection, h, k ,l_new, NULL)) g_object_notify_by_pspec (G_OBJECT (self), props[PROP_L]); } void hkl_gui_sample_reflection_set_reflection(HklGuiSampleReflection *self, HklSampleReflection *reflection) { self->reflection = reflection; self->geometry = hkl_gui_geometry_new(hkl_sample_reflection_geometry_get(reflection)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_REFLECTION]); } /*********************/ /* List item factory */ /*********************/ static void bind_label__sample_reflection_geometry_axis_value_cb (GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { GtkWidget *label; HklGuiSampleReflection *self; gint idx = GPOINTER_TO_INT(user_data); label = gtk_list_item_get_child (list_item); self = gtk_list_item_get_item (list_item); g_return_if_fail(NULL != self->geometry); set_label_from_double(label, hkl_gui_geometry_get_axis_value(self->geometry, idx)); } GtkListItemFactory * hkl_gui_item_factory_new_label__sample_reflection_geometry_axis(gint idx) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_label_cb), NULL); g_signal_connect (factory, "bind", G_CALLBACK (bind_label__sample_reflection_geometry_axis_value_cb), GINT_TO_POINTER(idx)); return factory; } hkl-5.1.7/gui/hkl-gui-diffractometer-private.h0000664000175000017500000000407415133711150020227 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include "hkl.h" struct diffractometer_t { HklFactory *factory; HklGeometry *geometry; HklDetector *detector; HklEngineList *engines; HklGeometryList *solutions; /* not owned */ }; struct diffractometer_t * create_diffractometer(HklFactory *factory); void diffractometer_fprintf(FILE *f, struct diffractometer_t *self); void diffractometer_free(struct diffractometer_t *self); void diffractometer_update(struct diffractometer_t *self); void diffractometer_set_sample(struct diffractometer_t *self, HklSample *sample); gdouble diffractometer_get_wavelength(const struct diffractometer_t *self); void diffractometer_set_wavelength(struct diffractometer_t *self, double wavelength); gboolean diffractometer_set_solutions(struct diffractometer_t *self, HklGeometryList *solutions); gboolean diffractometer_pseudo_axis_values_set(struct diffractometer_t *self, HklEngine *engine, gdouble values[], guint n_values, GError **error); void diffractometer_set_geometry(struct diffractometer_t *self, const HklGeometry *geometry); hkl-5.1.7/gui/hkl-gui-sample.c0000664000175000017500000005324015143645056015050 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" /**********/ /* Sample */ /**********/ enum { PROP_0, PROP_ERROR, PROP_NAME, PROP_A, PROP_B, PROP_C, PROP_ALPHA, PROP_BETA, PROP_GAMMA, PROP_UX, PROP_UY, PROP_UZ, PROP_REFLECTIONS, PROP_OR0, PROP_OR1, NUM_PROPERTIES, }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; typedef struct _HklGuiSample HklGuiSample; struct _HklGuiSample { GObject parent_instance; /* instance members */ GError *error; GListStore *liststore_reflections; HklSample *sample; HklGuiSampleReflection *or0; HklGuiSampleReflection *or1; }; G_DEFINE_FINAL_TYPE(HklGuiSample, hkl_gui_sample, G_TYPE_OBJECT); static void hkl_gui_sample_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiSample *self = HKL_GUI_SAMPLE (object); switch (prop_id) { case PROP_NAME: hkl_gui_sample_set_name(self, g_value_get_string (value)); break; case PROP_A: hkl_gui_sample_set_a(self, g_value_get_double (value)); break; case PROP_B: hkl_gui_sample_set_b(self, g_value_get_double (value)); break; case PROP_C: hkl_gui_sample_set_c(self, g_value_get_double (value)); break; case PROP_ALPHA: hkl_gui_sample_set_alpha(self, g_value_get_double (value)); break; case PROP_BETA: hkl_gui_sample_set_beta(self, g_value_get_double (value)); break; case PROP_GAMMA: hkl_gui_sample_set_gamma(self, g_value_get_double (value)); break; case PROP_UX: hkl_gui_sample_set_ux(self, g_value_get_double (value)); break; case PROP_UY: hkl_gui_sample_set_uy(self, g_value_get_double (value)); break; case PROP_UZ: hkl_gui_sample_set_uz(self, g_value_get_double (value)); break; case PROP_OR0: hkl_gui_sample_set_or0(self, g_value_get_object (value)); break; case PROP_OR1: hkl_gui_sample_set_or1(self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_sample_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiSample *self = HKL_GUI_SAMPLE (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, hkl_gui_sample_get_name (self));; break; case PROP_A: g_value_set_double (value, hkl_gui_sample_get_a (self));; break; case PROP_B: g_value_set_double (value, hkl_gui_sample_get_b (self));; break; case PROP_C: g_value_set_double (value, hkl_gui_sample_get_c (self));; break; case PROP_ALPHA: g_value_set_double (value, hkl_gui_sample_get_alpha (self));; break; case PROP_BETA: g_value_set_double (value, hkl_gui_sample_get_beta (self));; break; case PROP_GAMMA: g_value_set_double (value, hkl_gui_sample_get_gamma (self));; break; case PROP_UX: g_value_set_double (value, hkl_gui_sample_get_ux (self));; break; case PROP_UY: g_value_set_double (value, hkl_gui_sample_get_uy (self));; break; case PROP_UZ: g_value_set_double (value, hkl_gui_sample_get_uz (self));; break; case PROP_REFLECTIONS: g_value_set_object (value, hkl_gui_sample_get_reflections (self));; break; case PROP_OR0: g_value_set_object (value, hkl_gui_sample_get_or0 (self));; break; case PROP_OR1: g_value_set_object (value, hkl_gui_sample_get_or1 (self));; break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_sample_dispose (GObject *gobject) { /* HklGuiSample *self = HKL_GUI_SAMPLE (gobject); */ /* In dispose(), you are supposed to free all types referenced from this * object which might themselves hold a reference to self. Generally, * the most simple solution is to unref all members on which you own a * reference. */ /* dispose() might be called multiple times, so we must guard against * calling g_object_unref() on an invalid GObject by setting the member * NULL; g_clear_object() does this for us. */ /* Always chain up to the parent class; there is no need to check if * the parent class implements the dispose() virtual function: it is * always guaranteed to do so */ G_OBJECT_CLASS (hkl_gui_sample_parent_class)->dispose (gobject); } static void hkl_gui_sample_finalize (GObject *gobject) { HklGuiSample *self = HKL_GUI_SAMPLE(gobject); hkl_sample_free(self->sample); /* Always chain up to the parent class; as with dispose(), finalize() * is guaranteed to exist on the parent's class virtual function table */ G_OBJECT_CLASS (hkl_gui_sample_parent_class)->finalize (gobject); } static void hkl_gui_sample_init(HklGuiSample *self) { self->error = NULL; self->sample = hkl_sample_new("toto"); self->liststore_reflections = g_list_store_new(HKL_GUI_TYPE_SAMPLE_REFLECTION); } static void hkl_gui_sample_set_sample(HklGuiSample *self, HklSample *sample) { hkl_sample_free(self->sample); self->sample = hkl_sample_new_copy(sample); } static void hkl_gui_sample_class_init (HklGuiSampleClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = hkl_gui_sample_dispose; object_class->finalize = hkl_gui_sample_finalize; object_class->get_property = hkl_gui_sample_get_property; object_class->set_property = hkl_gui_sample_set_property; props[PROP_ERROR] = g_param_spec_pointer ("error", "Error", "the last GError", G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_NAME] = g_param_spec_string ("name", "Name", "the name of the sample", "toto", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); props[PROP_A] = g_param_spec_double ("a", "A", "the a sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_B] = g_param_spec_double ("b", "B", "the b sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_C] = g_param_spec_double ("c", "C", "the c sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_ALPHA] = g_param_spec_double ("alpha", "Alpha", "the alpha sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_BETA] = g_param_spec_double ("beta", "Beta", "the beta sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_GAMMA] = g_param_spec_double ("gamma", "Gamma", "the gamma sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_UX] = g_param_spec_double ("ux", "Ux", "the ux sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_UY] = g_param_spec_double ("uy", "Uy", "the uy sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_UZ] = g_param_spec_double ("uz", "Uz", "the uz sample parameter", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_REFLECTIONS] = g_param_spec_object ("reflections", "Reflections", "the sample reflections model", G_TYPE_LIST_STORE, G_PARAM_STATIC_NAME | G_PARAM_READABLE); props[PROP_OR0] = g_param_spec_object ("or0", "Or0", "the or0 reflection used to compute UB", HKL_GUI_TYPE_SAMPLE_REFLECTION, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_OR1] = g_param_spec_object ("or1", "Or1", "the or1 reflection used to compute UB", HKL_GUI_TYPE_SAMPLE_REFLECTION, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); g_object_class_install_properties (object_class, NUM_PROPERTIES, props); } /* constructors */ HklGuiSample * hkl_gui_sample_new(const char *name) { return g_object_new (HKL_GUI_TYPE_SAMPLE, "name", name, NULL); } HklGuiSample * hkl_gui_sample_new_copy(const HklGuiSample *gsample) { HklGuiSample *self; self = hkl_gui_sample_new("toto"); hkl_gui_sample_set_sample(self, gsample->sample); return self; } /* getters */ GError * hkl_gui_sample_get_error(HklGuiSample *self) { return self->error; } const char * hkl_gui_sample_get_name(HklGuiSample *self) { return hkl_sample_name_get(self->sample); } gdouble hkl_gui_sample_get_a(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_a_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_b(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_b_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_c(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_c_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_alpha(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_alpha_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_beta(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_beta_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_gamma(HklGuiSample *self) { return hkl_parameter_value_get (hkl_lattice_gamma_get (hkl_sample_lattice_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_ux(HklGuiSample *self) { return hkl_parameter_value_get ( (hkl_sample_ux_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_uy(HklGuiSample *self) { return hkl_parameter_value_get ( (hkl_sample_uy_get (self->sample)), HKL_UNIT_USER); } gdouble hkl_gui_sample_get_uz(HklGuiSample *self) { return hkl_parameter_value_get ( (hkl_sample_uz_get (self->sample)), HKL_UNIT_USER); } HklSample * hkl_gui_sample_get_sample(HklGuiSample *self) { return self->sample; } GListStore * hkl_gui_sample_get_reflections(HklGuiSample *self) { return self->liststore_reflections; } HklGuiSampleReflection * hkl_gui_sample_get_or0(HklGuiSample *self) { return self->or0; } HklGuiSampleReflection * hkl_gui_sample_get_or1(HklGuiSample *self) { return self->or1; } /* setters */ void hkl_gui_sample_set_error(HklGuiSample *self, GError *error) { g_clear_error(&self->error); self->error = g_error_copy(error); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ERROR]); } void hkl_gui_sample_set_name(HklGuiSample *self, const char *name) { hkl_sample_name_set(self->sample, name); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_NAME]); } void hkl_gui_sample_set_a(HklGuiSample *self, gdouble new_a) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, new_a, b, c, alpha, beta, gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_A]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_b(HklGuiSample *self, gdouble new_b) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, a, new_b, c, alpha, beta, gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_B]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_c(HklGuiSample *self, gdouble new_c) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, a, b, new_c, alpha, beta, gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_C]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_alpha(HklGuiSample *self, gdouble new_alpha) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, a, b, c, new_alpha, beta, gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ALPHA]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_beta(HklGuiSample *self, gdouble new_beta) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, a, b, c, alpha, new_beta, gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_BETA]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_gamma(HklGuiSample *self, gdouble new_gamma) { double a, b, c, alpha, beta, gamma; HklLattice *lattice; g_clear_error(&self->error); lattice = hkl_lattice_new_copy (hkl_sample_lattice_get (self->sample)); g_return_if_fail (NULL != lattice); hkl_lattice_get(lattice, &a, &b, &c, &alpha, &beta, &gamma, HKL_UNIT_USER); if (TRUE == hkl_lattice_set(lattice, a, b, c, alpha, beta, new_gamma, HKL_UNIT_USER, &self->error)){ hkl_sample_lattice_set(self->sample, lattice); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GAMMA]); } hkl_lattice_free(lattice); } void hkl_gui_sample_set_ux(HklGuiSample *self, gdouble new_value) { HklParameter *parameter; g_clear_error(&self->error); parameter = hkl_parameter_new_copy (hkl_sample_ux_get (self->sample)); g_return_if_fail (NULL != parameter); if (TRUE == hkl_parameter_value_set(parameter, new_value, HKL_UNIT_USER, &self->error)){ if (TRUE == hkl_sample_ux_set(self->sample, parameter, &self->error)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UX]); } } hkl_parameter_free(parameter); } void hkl_gui_sample_set_uy(HklGuiSample *self, gdouble new_value) { HklParameter *parameter; g_clear_error(&self->error); parameter = hkl_parameter_new_copy (hkl_sample_uy_get (self->sample)); g_return_if_fail (NULL != parameter); if (TRUE == hkl_parameter_value_set(parameter, new_value, HKL_UNIT_USER, &self->error)){ if (TRUE == hkl_sample_uy_set(self->sample, parameter, &self->error)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UY]); } } hkl_parameter_free(parameter); } void hkl_gui_sample_set_uz(HklGuiSample *self, gdouble new_value) { HklParameter *parameter; g_clear_error(&self->error); parameter = hkl_parameter_new_copy (hkl_sample_uz_get (self->sample)); g_return_if_fail (NULL != parameter); if (TRUE == hkl_parameter_value_set(parameter, new_value, HKL_UNIT_USER, &self->error)){ if (TRUE == hkl_sample_uz_set(self->sample, parameter, &self->error)){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UZ]); } } hkl_parameter_free(parameter); } void hkl_gui_sample_set_or0(HklGuiSample *self, HklGuiSampleReflection* reflection) { g_clear_error(&self->error); if (true == g_list_store_find (self->liststore_reflections, reflection, NULL)){ self->or0 = reflection; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_OR0]); } } void hkl_gui_sample_set_or1(HklGuiSample *self, HklGuiSampleReflection* reflection) { g_clear_error(&self->error); if (true == g_list_store_find (self->liststore_reflections, reflection, NULL)){ self->or1 = reflection; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_OR1]); } } /* methodes */ gboolean hkl_gui_sample_compute_ub(HklGuiSample* self) { gboolean res; GError *error = NULL; g_return_val_if_fail (HKL_GUI_IS_SAMPLE (self), false); g_return_val_if_fail (NULL != self->or0, false); g_return_val_if_fail (NULL != self->or1, false); res = hkl_sample_compute_UB_busing_levy (self->sample, hkl_gui_sample_reflection_get_reflection(self->or0), hkl_gui_sample_reflection_get_reflection(self->or1), &error); if (true == res){ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UX]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UY]); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_UZ]); }else{ hkl_gui_sample_set_error(self, error); } return res; } void hkl_gui_sample_add_reflection(HklGuiSample *self, HklGeometry *geometry, HklDetector *detector, gdouble h, gdouble k, gdouble l) { HklSampleReflection *reflection; /* TODO error */ reflection = hkl_sample_reflection_new(geometry, detector, h,k, l, NULL); hkl_sample_add_reflection(self->sample, reflection); g_list_store_append(self->liststore_reflections, hkl_gui_sample_reflection_new(reflection)); } void hkl_gui_sample_del_reflection(HklGuiSample *self, const GtkBitset *selected) { guint i; guint j=0; GtkBitsetIter iter; guint n = gtk_bitset_get_size(selected); guint is[n]; /* it seems that removing element of the listtore invalidate the iterator */ for (gtk_bitset_iter_init_last (&iter, selected, &i); gtk_bitset_iter_is_valid (&iter); gtk_bitset_iter_previous (&iter, &i)) { is[j++] = i; } for(i=0; iliststore_reflections), is[i]); hkl_sample_del_reflection(self->sample, hkl_gui_sample_reflection_get_reflection(reflection)); g_list_store_remove(self->liststore_reflections, is[i]); } } /****************/ /* Item factory */ /****************/ static gint reflection_to_boolean(GBinding *binding, const GValue * value_a, GValue *value_b, gpointer user_data) { g_assert (G_VALUE_HOLDS_OBJECT (value_a)); g_assert (G_VALUE_HOLDS_BOOLEAN (value_b)); g_assert (HKL_GUI_IS_SAMPLE_REFLECTION (user_data)); g_value_set_boolean(value_b, g_value_get_object(value_a) == user_data); return TRUE; } static gint boolean_to_reflection(GBinding *binding, const GValue * value_a, GValue *value_b, gpointer user_data) { g_assert (G_VALUE_HOLDS_BOOLEAN (value_a)); g_assert (G_VALUE_HOLDS_OBJECT (value_b)); g_assert (HKL_GUI_IS_SAMPLE_REFLECTION (user_data)); if(g_value_get_boolean(value_a)) g_value_set_object(value_b, user_data); return TRUE; } static void _bind_factory_check_button_orX_cb (GtkListItem *list_item, HklGuiSample *sample, const char *property) { GtkCheckButton *check_button; HklGuiSampleReflection *or; HklGuiSampleReflection *reflection; check_button = GTK_CHECK_BUTTON (gtk_list_item_get_child (list_item)); reflection = HKL_GUI_SAMPLE_REFLECTION (gtk_list_item_get_item (list_item)); g_object_get (G_OBJECT (sample), property, &or, NULL); gtk_check_button_set_active (check_button, reflection == or); g_object_bind_property_full(G_OBJECT (sample), property, G_OBJECT (check_button), "active", G_BINDING_BIDIRECTIONAL, reflection_to_boolean, boolean_to_reflection, reflection, NULL); } static void bind_factory_check_button_or0_cb (GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { _bind_factory_check_button_orX_cb (list_item, user_data, "or0"); } static void bind_factory_check_button_or1_cb (GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { _bind_factory_check_button_orX_cb (list_item, user_data, "or1"); } GtkListItemFactory * hkl_gui_item_factory_new_check_button__sample_orX(GtkSingleSelection *samples, const char *property) { HklGuiSample *sample; GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (hkl_gui_setup_item_factory_check_button_cb), NULL); sample = gtk_single_selection_get_selected_item(samples); if (!strcmp("or0", property)){ g_signal_connect (factory, "bind", G_CALLBACK (bind_factory_check_button_or0_cb), sample); }else if (!strcmp("or1", property)) { g_signal_connect (factory, "bind", G_CALLBACK (bind_factory_check_button_or1_cb), sample); } return factory; } hkl-5.1.7/gui/Makefile.in0000664000175000017500000007747315144640451014143 0ustar00piccapicca# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = ghkl$(EXEEXT) @HKL3D_TRUE@am__append_1 = \ @HKL3D_TRUE@ -I$(top_srcdir)/hkl3d \ @HKL3D_TRUE@ -I$(top_srcdir)/hkl3d/bullet/src \ @HKL3D_TRUE@ -DHKL3D \ @HKL3D_TRUE@ $(EPOXY_CFLAGS) \ @HKL3D_TRUE@ $(G3D_CFLAGS) \ @HKL3D_TRUE@ $(BULLET_CFLAGS) @HKL3D_TRUE@am__append_2 = -lstdc++\ @HKL3D_TRUE@ $(EPOXY_LIBS) \ @HKL3D_TRUE@ $(G3D_LIBS) \ @HKL3D_TRUE@ $(BULLET_LIBS) @HKL3D_TRUE@am__append_3 = \ @HKL3D_TRUE@ $(top_builddir)/hkl3d/libhkl3d.la @HKL3D_TRUE@am__append_4 = \ @HKL3D_TRUE@ hkl-gui-3d.c \ @HKL3D_TRUE@ hkl-gui-3d.h subdir = gui ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_appl_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(appldir)" PROGRAMS = $(bin_PROGRAMS) am__ghkl_SOURCES_DIST = hkl-gui-diffractometer.c \ hkl-gui-diffractometer-private.h hkl-gui-engine.c \ hkl-gui-factory.c hkl-gui-geometry.c hkl-gui-item-factories.c \ hkl-gui-macros.h hkl-gui-parameter.c hkl-gui-sample.c \ hkl-gui-sample-reflection.c hkl-gui.c hkl-gui.h hkl-gui-3d.c \ hkl-gui-3d.h @HKL3D_TRUE@am__objects_1 = hkl-gui-3d.$(OBJEXT) am_ghkl_OBJECTS = hkl-gui-diffractometer.$(OBJEXT) \ hkl-gui-engine.$(OBJEXT) hkl-gui-factory.$(OBJEXT) \ hkl-gui-geometry.$(OBJEXT) hkl-gui-item-factories.$(OBJEXT) \ hkl-gui-parameter.$(OBJEXT) hkl-gui-sample.$(OBJEXT) \ hkl-gui-sample-reflection.$(OBJEXT) hkl-gui.$(OBJEXT) \ $(am__objects_1) ghkl_OBJECTS = $(am_ghkl_OBJECTS) ghkl_DEPENDENCIES = $(top_builddir)/hkl/libhkl.la $(am__append_3) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/dummy.Po ./$(DEPDIR)/hkl-gui-3d.Po \ ./$(DEPDIR)/hkl-gui-diffractometer.Po \ ./$(DEPDIR)/hkl-gui-engine.Po ./$(DEPDIR)/hkl-gui-factory.Po \ ./$(DEPDIR)/hkl-gui-geometry.Po \ ./$(DEPDIR)/hkl-gui-item-factories.Po \ ./$(DEPDIR)/hkl-gui-parameter.Po \ ./$(DEPDIR)/hkl-gui-sample-reflection.Po \ ./$(DEPDIR)/hkl-gui-sample.Po ./$(DEPDIR)/hkl-gui.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(ghkl_SOURCES) $(nodist_EXTRA_ghkl_SOURCES) DIST_SOURCES = $(am__ghkl_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man_MANS) DATA = $(dist_appl_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASSIMP_CFLAGS = @ASSIMP_CFLAGS@ ASSIMP_LIBS = @ASSIMP_LIBS@ ASY = @ASY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLENDER = @BLENDER@ BLENDER_THUMBNAILER = @BLENDER_THUMBNAILER@ BULLET_CFLAGS = @BULLET_CFLAGS@ BULLET_LIBS = @BULLET_LIBS@ CABAL = @CABAL@ CABALFLAGS = @CABALFLAGS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CGLM_CFLAGS = @CGLM_CFLAGS@ CGLM_LIBS = @CGLM_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATATYPE99_CFLAGS = @DATATYPE99_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMACS = @EMACS@ EPOXY_CFLAGS = @EPOXY_CFLAGS@ EPOXY_LIBS = @EPOXY_LIBS@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GNUPLOT = @GNUPLOT@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HDF5_CFLAGS = @HDF5_CFLAGS@ HDF5_LIBS = @HDF5_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHJAX_PATH = @MATHJAX_PATH@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VMAJ = @VMAJ@ XVFB_RUN = @XVFB_RUN@ YAML_CFLAGS = @YAML_CFLAGS@ YAML_LIBS = @YAML_LIBS@ _GI_EXP_DATADIR = @_GI_EXP_DATADIR@ _GI_EXP_LIBDIR = @_GI_EXP_LIBDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ release_info = @release_info@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ version_info = @version_info@ dist_man_MANS = ghkl.1 AM_CFLAGS = -DPKGDATA=\""$(pkgdatadir)"\" \ -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED \ -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE -I$(top_srcdir) \ -I$(top_srcdir)/hkl -Wno-misleading-indentation \ $(DATATYPE99_CFLAGS) $(GLIB_CFLAGS) $(GSL_CFLAGS) \ $(GTK_CFLAGS) $(am__append_1) AM_LDFLAGS = -Wl,--export-dynamic $(GLIB_LIBS) $(GSL_LIBS) $(GTK_LIBS) \ $(am__append_2) ghkl_LDADD = $(top_builddir)/hkl/libhkl.la $(am__append_3) ghkl_SOURCES = hkl-gui-diffractometer.c \ hkl-gui-diffractometer-private.h hkl-gui-engine.c \ hkl-gui-factory.c hkl-gui-geometry.c hkl-gui-item-factories.c \ hkl-gui-macros.h hkl-gui-parameter.c hkl-gui-sample.c \ hkl-gui-sample-reflection.c hkl-gui.c hkl-gui.h \ $(am__append_4) appldir = ${datadir}/applications dist_appl_DATA = ghkl.desktop # force linkage using g++ for libhkl3d.la @HKL3D_TRUE@nodist_EXTRA_ghkl_SOURCES = dummy.cxx all: all-am .SUFFIXES: .SUFFIXES: .c .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu gui/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files clean-binPROGRAMS: $(am__rm_f) $(bin_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=) ghkl$(EXEEXT): $(ghkl_OBJECTS) $(ghkl_DEPENDENCIES) $(EXTRA_ghkl_DEPENDENCIES) @rm -f ghkl$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(ghkl_OBJECTS) $(ghkl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-3d.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-diffractometer.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-engine.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-factory.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-geometry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-item-factories.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-parameter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-sample-reflection.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui-sample.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-gui.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-dist_applDATA: $(dist_appl_DATA) @$(NORMAL_INSTALL) @list='$(dist_appl_DATA)'; test -n "$(appldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appldir)" || exit $$?; \ done uninstall-dist_applDATA: @$(NORMAL_UNINSTALL) @list='$(dist_appl_DATA)'; test -n "$(appldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appldir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(appldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/dummy.Po -rm -f ./$(DEPDIR)/hkl-gui-3d.Po -rm -f ./$(DEPDIR)/hkl-gui-diffractometer.Po -rm -f ./$(DEPDIR)/hkl-gui-engine.Po -rm -f ./$(DEPDIR)/hkl-gui-factory.Po -rm -f ./$(DEPDIR)/hkl-gui-geometry.Po -rm -f ./$(DEPDIR)/hkl-gui-item-factories.Po -rm -f ./$(DEPDIR)/hkl-gui-parameter.Po -rm -f ./$(DEPDIR)/hkl-gui-sample-reflection.Po -rm -f ./$(DEPDIR)/hkl-gui-sample.Po -rm -f ./$(DEPDIR)/hkl-gui.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_applDATA install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/dummy.Po -rm -f ./$(DEPDIR)/hkl-gui-3d.Po -rm -f ./$(DEPDIR)/hkl-gui-diffractometer.Po -rm -f ./$(DEPDIR)/hkl-gui-engine.Po -rm -f ./$(DEPDIR)/hkl-gui-factory.Po -rm -f ./$(DEPDIR)/hkl-gui-geometry.Po -rm -f ./$(DEPDIR)/hkl-gui-item-factories.Po -rm -f ./$(DEPDIR)/hkl-gui-parameter.Po -rm -f ./$(DEPDIR)/hkl-gui-sample-reflection.Po -rm -f ./$(DEPDIR)/hkl-gui-sample.Po -rm -f ./$(DEPDIR)/hkl-gui.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_applDATA \ uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dist_applDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-dist_applDATA \ uninstall-man uninstall-man1 .PRECIOUS: Makefile # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% hkl-5.1.7/gui/hkl-gui-factory.c0000664000175000017500000004572415143645056015246 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-diffractometer-private.h" #include "hkl-gui-macros.h" #if HKL3D # include "hkl3d.h" # include "hkl-gui-3d.h" #endif /***********/ /* Factory */ /***********/ enum { PROP_0, PROP_ERROR, PROP_FACTORY, PROP_NAME, PROP_SAMPLE, PROP_WAVELENGTH, NUM_PROPERTIES, }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; typedef struct _HklGuiFactory HklGuiFactory; struct _HklGuiFactory { GObject parent_instance; /* instance members */ GError *error; GListStore *liststore_axes; GListStore *liststore_engines; GListStore *liststore_pseudo_axes; GListStore *liststore_solutions; HklGuiSample *gsample; /* not owned */ struct diffractometer_t *diffractometer; #if HKL3D HklGui3D *gui3d; #endif }; G_DEFINE_FINAL_TYPE(HklGuiFactory, hkl_gui_factory, G_TYPE_OBJECT); static void update_diffractometer_cb(HklGuiParameter *parameter, GParamSpec* pspec, gpointer *user_data) { HklGuiFactory *self = HKL_GUI_FACTORY(user_data); diffractometer_update(self->diffractometer); } static void update_pseudo_axes_cb(HklGuiParameter *parameter, GParamSpec* pspec, gpointer *user_data) { HklGuiParameter *self = HKL_GUI_PARAMETER(user_data); hkl_gui_parameter_update(self); } static void update_engines_cb(HklGuiParameter *parameter, GParamSpec* pspec, gpointer *user_data) { HklGuiEngine *self = HKL_GUI_ENGINE(user_data); hkl_gui_engine_update(self); } static void update_liststore_axes(HklGuiFactory *self) { guint i; guint n_items = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_axes)); for(i=0; iliststore_axes), i)); hkl_gui_parameter_update(item); } } static void update_liststore_engines(HklGuiFactory *self) { guint i; guint n_items = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_engines)); for(i=0; iliststore_engines), i)); hkl_gui_engine_update(item); } } static void update_liststore_pseudo_axes(HklGuiFactory *self) { guint i; guint n_items = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_pseudo_axes)); for(i=0; iliststore_pseudo_axes), i)); hkl_gui_parameter_update(item); } } static void update_liststore_solutions(HklGuiFactory *self) { const HklGeometryListItem *item; if(NULL != self->diffractometer->solutions){ g_list_store_remove_all(self->liststore_solutions); HKL_GEOMETRY_LIST_FOREACH(item, self->diffractometer->solutions){ const HklGeometry *geometry = hkl_geometry_list_item_geometry_get(item); g_list_store_append (self->liststore_solutions, hkl_gui_geometry_new(geometry)); } } } static void engine_changed_cb(HklGuiEngine *engine, gpointer user_data) { g_return_if_fail(HKL_GUI_IS_ENGINE(engine)); g_return_if_fail(HKL_GUI_IS_FACTORY(user_data)); HklGuiFactory *self = HKL_GUI_FACTORY(user_data); HklGeometryList *solutions = hkl_gui_engine_get_solutions(engine); if (NULL != solutions){ diffractometer_set_solutions(self->diffractometer, solutions); update_liststore_solutions(self); } hkl_gui_factory_set_error(self, hkl_gui_engine_get_error(engine)); } static void update_sample_cb(HklGuiSample *gsample, GParamSpec* pspec, gpointer *user_data) { HklGuiFactory *self = HKL_GUI_FACTORY (user_data); diffractometer_update(self->diffractometer); update_liststore_pseudo_axes(self); update_liststore_engines(self); } #if HKL3D static void update_3d_cb(HklGuiSample *gsample, GParamSpec* pspec, gpointer *user_data) { HklGuiFactory *self = HKL_GUI_FACTORY (user_data); if (NULL != self->gui3d){ hkl_gui_3d_update(self->gui3d); } } #endif static void hkl_gui_factory_set_factory(HklGuiFactory *self, HklFactory *factory) { HklGuiParameter *g_axis; HklGuiEngine *g_engine; guint n_engines; /* diffractometer */ self->diffractometer = create_diffractometer(factory); /* liststore_axes */ self->liststore_axes = g_list_store_new(HKL_GUI_TYPE_PARAMETER); const darray_string *names; const char **name; names = hkl_geometry_axis_names_get(self->diffractometer->geometry); darray_foreach(name, *names){ const HklParameter *parameter = hkl_geometry_axis_get(self->diffractometer->geometry, *name, NULL); g_list_store_append (self->liststore_axes, hkl_gui_parameter_new(parameter)); } /* liststore_engines and pseudo_axes */ self->liststore_engines = g_list_store_new(HKL_GUI_TYPE_ENGINE); self->liststore_pseudo_axes = g_list_store_new(HKL_GUI_TYPE_PARAMETER); const darray_engine *engines; HklEngine **engine; engines = hkl_engine_list_engines_get(self->diffractometer->engines); n_engines = darray_size(*engines); darray_foreach(engine, *engines){ g_engine = hkl_gui_engine_new(*engine); g_list_store_append (self->liststore_engines, g_engine); const darray_string *pseudo_axes = hkl_engine_pseudo_axis_names_get(*engine); darray_foreach(name, *pseudo_axes){ const HklParameter *parameter = hkl_engine_pseudo_axis_get(*engine, *name, NULL); g_list_store_append (self->liststore_pseudo_axes, hkl_gui_parameter_new(parameter)); } g_signal_connect(g_engine, "changed", G_CALLBACK(engine_changed_cb), self); } #if HKL3D char *filename = NULL; const char *dname = hkl_gui_factory_get_name(self); if(!strcmp("K6C", dname)) filename = get_model(SOLEIL_DIFFABS_MODEL); else if (!strcmp("SOLEIL CRISTAL K4C", dname)) filename = get_model(SOLEIL_CRISTAL_K4C_MODEL); if (filename){ self->gui3d = hkl_gui_3d_new(filename, self->diffractometer->geometry); } #endif /* connect pseudo axes and engines parameters to axes */ guint n_axes = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_axes)); guint n_pseudo_axes = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_pseudo_axes)); guint i; guint j; for(i=0; iliststore_axes), i); /* update the diffractometer */ g_signal_connect(g_axis, "notify::value", G_CALLBACK(update_diffractometer_cb), self); #if HKL3D /* update the 3d */ g_signal_connect(g_axis, "notify::value", G_CALLBACK(update_3d_cb), self); #endif /* update the pseudo axes */ for(j=0; jliststore_pseudo_axes), j); g_signal_connect(g_axis, "notify::value", G_CALLBACK(update_pseudo_axes_cb), g_pseudo_axis); } /* update the gui engines */ for(j=0; jliststore_engines), j); g_signal_connect(g_axis, "notify::value", G_CALLBACK(update_engines_cb), g_engine); } } /* liststore_solutions */ self->liststore_solutions = g_list_store_new(HKL_GUI_TYPE_GEOMETRY); update_liststore_solutions(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FACTORY]); } static void hkl_gui_factory_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiFactory *self = HKL_GUI_FACTORY (object); switch (prop_id) { case PROP_ERROR: hkl_gui_factory_set_error(self, g_value_get_pointer(value)); break; case PROP_FACTORY: hkl_gui_factory_set_factory(self, g_value_get_pointer(value)); break; case PROP_SAMPLE: hkl_gui_factory_set_sample(self, g_value_get_object (value)); break; case PROP_WAVELENGTH: hkl_gui_factory_set_wavelength(self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_factory_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiFactory *self = HKL_GUI_FACTORY (object); switch (prop_id) { case PROP_ERROR: g_value_set_pointer (value, hkl_gui_factory_get_error(self)); break; case PROP_FACTORY: g_value_set_pointer (value, hkl_gui_factory_get_factory(self)); break; case PROP_NAME: g_value_set_string (value, hkl_gui_factory_get_name(self)); break; case PROP_SAMPLE: g_value_set_object (value, hkl_gui_factory_get_sample(self)); break; case PROP_WAVELENGTH: g_value_set_double (value, hkl_gui_factory_get_wavelength(self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void hkl_gui_factory_dispose (GObject *gobject) { HklGuiFactory *self = HKL_GUI_FACTORY (gobject); /* In dispose(), you are supposed to free all types referenced from this * object which might themselves hold a reference to self. Generally, * the most simple solution is to unref all members on which you own a * reference. */ /* dispose() might be called multiple times, so we must guard against * calling g_object_unref() on an invalid GObject by setting the member * NULL; g_clear_object() does this for us. */ g_clear_object (&self->liststore_pseudo_axes); g_clear_object (&self->liststore_axes); /* Always chain up to the parent class; there is no need to check if * the parent class implements the dispose() virtual function: it is * always guaranteed to do so */ G_OBJECT_CLASS (hkl_gui_factory_parent_class)->dispose (gobject); } static void hkl_gui_factory_finalize (GObject *gobject) { HklGuiFactory *self = HKL_GUI_FACTORY(gobject); if (NULL != self->diffractometer) diffractometer_free(self->diffractometer); /* Always chain up to the parent class; as with dispose(), finalize() * is guaranteed to exist on the parent's class virtual function table */ G_OBJECT_CLASS (hkl_gui_factory_parent_class)->finalize (gobject); } static void hkl_gui_factory_init(HklGuiFactory *self) { self->diffractometer = NULL; self->error = NULL; #if HKL3D self->gui3d = NULL; #endif } static void hkl_gui_factory_class_init (HklGuiFactoryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = hkl_gui_factory_dispose; object_class->finalize = hkl_gui_factory_finalize; object_class->get_property = hkl_gui_factory_get_property; object_class->set_property = hkl_gui_factory_set_property; props[PROP_ERROR] = g_param_spec_pointer ("error", "Error", "the last GError", G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_FACTORY] = g_param_spec_pointer ("factory", "Factory", "the embeded HklFactory.", G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_NAME] = g_param_spec_string ("name", "Name", "the HklFactory name.", "", G_PARAM_STATIC_NAME | G_PARAM_READABLE); props[PROP_SAMPLE] = g_param_spec_object ("sample", "Sample", "the embeded HklGuiSample.", HKL_GUI_TYPE_SAMPLE, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); props[PROP_WAVELENGTH] = g_param_spec_double ("wavelength", "Wavelength", "the diffractometer wavelength", 0.0, 100.0, 1.54, G_PARAM_STATIC_NAME | G_PARAM_READWRITE); g_object_class_install_properties (object_class, NUM_PROPERTIES, props); } /* constructors */ HklGuiFactory * hkl_gui_factory_new(const HklFactory *factory) { return g_object_new (HKL_GUI_TYPE_FACTORY, "factory", factory, NULL); } /* getters */ GError * hkl_gui_factory_get_error(HklGuiFactory *self) { return self->error; } HklFactory * hkl_gui_factory_get_factory(HklGuiFactory *self) { return self->diffractometer->factory; } const char * hkl_gui_factory_get_name(HklGuiFactory *self) { return hkl_factory_name_get(self->diffractometer->factory); } HklGuiSample * hkl_gui_factory_get_sample(HklGuiFactory *self) { return self->gsample; } gdouble hkl_gui_factory_get_wavelength(HklGuiFactory *self) { return diffractometer_get_wavelength(self->diffractometer); } GListStore * hkl_gui_factory_get_liststore_axes(HklGuiFactory *self) { return self->liststore_axes; } GListStore * hkl_gui_factory_get_liststore_engines(HklGuiFactory *self) { return self->liststore_engines; } GListStore * hkl_gui_factory_get_liststore_pseudo_axes(HklGuiFactory *self) { return self->liststore_pseudo_axes; } GListStore * hkl_gui_factory_get_liststore_solutions(HklGuiFactory *self) { return self->liststore_solutions; } /* setters */ void hkl_gui_factory_set_error(HklGuiFactory *self, GError *error) { g_clear_error(&self->error); self->error = g_error_copy(error); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ERROR]); } void hkl_gui_factory_set_geometry(HklGuiFactory *self, HklGuiGeometry *geometry) { diffractometer_set_geometry(self->diffractometer, hkl_gui_geometry_get_geometry(geometry)); update_liststore_axes(self); } void hkl_gui_factory_set_sample(HklGuiFactory *self, HklGuiSample *gsample) { g_return_if_fail (HKL_GUI_IS_FACTORY (self)); g_return_if_fail (HKL_GUI_IS_SAMPLE (gsample)); self->gsample = gsample; diffractometer_set_sample(self->diffractometer, hkl_gui_sample_get_sample (gsample)); g_signal_connect(gsample, "notify::a", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::b", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::c", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::alpha", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::beta", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::gamma", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::ux", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::ux", G_CALLBACK(update_sample_cb), self); g_signal_connect(gsample, "notify::uz", G_CALLBACK(update_sample_cb), self); update_liststore_pseudo_axes(self); update_liststore_engines(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SAMPLE]); } void hkl_gui_factory_set_wavelength(HklGuiFactory *self, gdouble wavelength) { diffractometer_set_wavelength(self->diffractometer, wavelength); update_liststore_pseudo_axes(self); update_liststore_engines(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WAVELENGTH]); } /* methods */ void hkl_gui_factory_add_reflection(HklGuiFactory *self, HklGuiSample *sample) { hkl_gui_sample_add_reflection(sample, self->diffractometer->geometry, self->diffractometer->detector, 0, 0, 0); } void hkl_gui_factory_compute_ub(HklGuiFactory *self, HklGuiSample* sample) { if(!hkl_gui_sample_compute_ub (sample)) { hkl_gui_factory_set_error(self, hkl_gui_sample_get_error(sample)); }else{ update_liststore_pseudo_axes(self); update_liststore_engines(self); /* if(priv->diffractometer) */ /* diffractometer_set_sample(priv->diffractometer, */ /* priv->sample); */ /* update_UB (self); */ /* update_ux_uy_uz (self); */ /* update_pseudo_axes (self); */ /* update_pseudo_axes_frames (self); */ } } void hkl_gui_factory_del_reflection(HklGuiFactory *self, HklGuiSample *sample, GtkBitset *selected) { hkl_gui_sample_del_reflection(sample, selected); } void hkl_gui_factory_setup_3d(HklGuiFactory *old, HklGuiFactory *new, GtkBox *box) { #if HKL3D if (NULL != old && NULL != old->gui3d){ gtk_box_remove (box, GTK_WIDGET (hkl_gui_3d_get_frame (old->gui3d))); } if (NULL != new && NULL != new->gui3d){ GtkWidget *frame = GTK_WIDGET (hkl_gui_3d_get_frame(new->gui3d)); g_object_ref (frame); gtk_box_append (box, GTK_WIDGET (hkl_gui_3d_get_frame(new->gui3d))); } #endif } void hkl_gui_factory_setup_column_view_solutions(HklGuiFactory *self, GtkColumnView *column_view) { g_return_if_fail(HKL_GUI_IS_FACTORY(self)); g_return_if_fail(GTK_IS_COLUMN_VIEW(column_view)); gint idx, n_columns; GListModel *columns; GMenu *menu; GMenuItem *item; GtkColumnViewColumn *column; const darray_string *names = hkl_geometry_axis_names_get(self->diffractometer->geometry); const char **name; /* menu */ menu = g_menu_new (); item = g_menu_item_new ("GoTo position", "app.go-to-position"); g_menu_append_item (menu, item); /* remove all columns */ columns = gtk_column_view_get_columns(column_view); n_columns = g_list_model_get_n_items(columns); for(idx=n_columns-1; idx>=0; --idx){ gtk_column_view_remove_column(column_view, g_list_model_get_item(columns, idx)); } /* Add the right columns */ idx=0; darray_foreach(name, *names){ column = gtk_column_view_column_new(*name, hkl_gui_geometry_axis_value_factory_new(idx)); gtk_column_view_column_set_header_menu(column, G_MENU_MODEL(menu)); gtk_column_view_append_column(column_view, column); ++idx; } } void hkl_gui_factory_setup_column_view_sample_reflections(HklGuiFactory *self, GtkSingleSelection *samples, GtkColumnView *column_view) { g_return_if_fail(HKL_GUI_IS_FACTORY(self)); g_return_if_fail(GTK_IS_COLUMN_VIEW(column_view)); gint idx, n_columns; GListModel *columns; const darray_string *names = hkl_geometry_axis_names_get(self->diffractometer->geometry); const char **name; /* remove all columns */ columns = gtk_column_view_get_columns(column_view); n_columns = g_list_model_get_n_items(columns); for(idx=n_columns-1; idx>=0; --idx){ gtk_column_view_remove_column(column_view, g_list_model_get_item(columns, idx)); } /* Add the right columns */ add_column(column_view, "or0", check_button__sample_orX, samples, "or0"); add_column(column_view, "or1", check_button__sample_orX, samples, "or1"); add_column(column_view, "h", entry_numeric_property, "h"); add_column(column_view, "k", entry_numeric_property, "k"); add_column(column_view, "l", entry_numeric_property, "l"); idx=0; darray_foreach(name, *names){ add_column(column_view, *name, label__sample_reflection_geometry_axis, idx); ++idx; } } struct diffractometer_t * hkl_gui_factory_get_diffractometer(HklGuiFactory *self) { return self->diffractometer; } hkl-5.1.7/gui/hkl-gui-engine.c0000664000175000017500000003243615143645056015040 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2013, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-macros.h" enum { PROP_0, PROP_ENGINE, PROP_MODE, PROP_INITIALIZED, NUM_PROPERTIES }; static GParamSpec *props[NUM_PROPERTIES] = { NULL, }; enum { CHANGED, NUM_SIGNALS }; static guint signals[NUM_SIGNALS] = { 0 }; struct _HklGuiEngine { GObject parent_instance; GError *error; HklEngine *engine; HklGeometryList *solutions; GListStore *liststore_mode_parameters; GListStore *liststore_modes; GListStore *liststore_pseudo_axes; GtkWidget *button_apply; GtkWidget *button_init; GtkWidget *column_view_parameters; GtkWidget *column_view_pseudo_axes; GtkWidget *dropdown; GtkWidget *frame; }; G_DEFINE_FINAL_TYPE (HklGuiEngine, hkl_gui_engine, G_TYPE_OBJECT); static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGuiEngine *self = HKL_GUI_ENGINE (object); switch (prop_id) { case PROP_ENGINE: hkl_gui_engine_set_engine(self, g_value_get_pointer (value)); break; case PROP_MODE: hkl_gui_engine_set_mode(self, g_value_get_string (value)); break; case PROP_INITIALIZED: hkl_gui_engine_set_initialized(self, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGuiEngine *self = HKL_GUI_ENGINE (object); switch (prop_id) { case PROP_ENGINE: g_value_set_pointer (value, hkl_gui_engine_get_engine (self)); break; case PROP_MODE: g_value_set_string (value, hkl_gui_engine_get_mode (self)); break; case PROP_INITIALIZED: g_value_set_boolean (value, hkl_gui_engine_get_initialized (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void finalize (GObject* object) { G_OBJECT_CLASS (hkl_gui_engine_parent_class)->finalize (object); } static void button_apply_clicked_cb (GtkButton* button, HklGuiEngine* self) { HklGeometryList *solutions; g_clear_error(&self->error); solutions = hkl_engine_pseudo_axis_values_set(self->engine, NULL, 0, HKL_UNIT_USER, &self->error); if (NULL != solutions){ if (NULL != self->solutions) hkl_geometry_list_free(self->solutions); self->solutions = solutions; } g_signal_emit(self, signals[CHANGED], 0); } static void button_init_clicked_cb (GtkButton* button, HklGuiEngine* self) { g_return_if_fail (GTK_IS_BUTTON(button)); g_return_if_fail (HKL_GUI_IS_ENGINE(self)); hkl_gui_engine_set_initialized(self, true); g_signal_emit(self, signals[CHANGED], 0); } static void update_liststore_mode_parameters(HklGuiEngine *self) { const char * *name; g_list_store_remove_all(self->liststore_mode_parameters); darray_foreach(name, *hkl_engine_parameters_names_get(self->engine)){ const HklParameter *parameter = hkl_engine_parameter_get(self->engine, *name, NULL); g_list_store_append(self->liststore_mode_parameters, hkl_gui_parameter_new(parameter)); } } static void dropdown_notify_selected_item_cb(GtkDropDown *dropdown, GParamSpec* pspec, gpointer *user_data) { HklGuiEngine *self = HKL_GUI_ENGINE(user_data); guint mode; mode = gtk_drop_down_get_selected(dropdown); g_return_if_fail(GTK_INVALID_LIST_POSITION != mode); const char *name = gtk_string_list_get_string(GTK_STRING_LIST(self->liststore_modes), mode); hkl_gui_engine_set_mode(self, name); } static void setup_factory_pseudo_axis_cb (GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { HklGuiEngine *self = HKL_GUI_ENGINE(user_data); guint capabilities = hkl_engine_capabilities_get(self->engine); if (HKL_ENGINE_CAPABILITIES_WRITABLE & capabilities){ hkl_gui_setup_item_factory_spin_button_cb(factory, list_item); } else { hkl_gui_setup_item_factory_label_cb(factory, list_item); } } static void bind_factory_pseudo_axis_cb (GtkListItemFactory *factory, GtkListItem *list_item, gpointer user_data) { HklGuiEngine *self = HKL_GUI_ENGINE(user_data); guint capabilities = hkl_engine_capabilities_get(self->engine); if (HKL_ENGINE_CAPABILITIES_WRITABLE & capabilities){ hkl_gui_parameter_bind_factory_spin_button_value_cb(factory, list_item); } else { hkl_gui_bind_item_factory_label_property_cb(factory, list_item, "value"); } } static GtkListItemFactory * hkl_gui_item_factory_new_engine_pseudo_axis(HklGuiEngine *self) { GtkListItemFactory *factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (setup_factory_pseudo_axis_cb), self); g_signal_connect (factory, "bind", G_CALLBACK (bind_factory_pseudo_axis_cb), self); return factory; } static void hkl_gui_engine_init (HklGuiEngine *self) { GtkWidget *hbox; GtkWidget *label_mode; GtkWidget *vbox; self->engine = NULL; self->error = NULL; self->solutions = NULL; self->button_apply = gtk_button_new_with_label("Apply"); self->button_init = gtk_button_new_with_label("Initialize"); self->liststore_modes = G_LIST_STORE(gtk_string_list_new(NULL)); self->liststore_pseudo_axes = g_list_store_new(HKL_GUI_TYPE_PARAMETER); self->liststore_mode_parameters = g_list_store_new(HKL_GUI_TYPE_PARAMETER); self->frame = g_object_ref(gtk_frame_new("")); self->dropdown = gtk_drop_down_new_from_strings(NULL); self->column_view_parameters = gtk_column_view_new( GTK_SELECTION_MODEL(gtk_no_selection_new(G_LIST_MODEL(self->liststore_mode_parameters)))); self->column_view_pseudo_axes = gtk_column_view_new( GTK_SELECTION_MODEL(gtk_no_selection_new(G_LIST_MODEL(self->liststore_pseudo_axes)))); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); label_mode = gtk_label_new("Mode: "); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); /* button apply */ g_signal_connect (self->button_apply, "clicked", G_CALLBACK (button_apply_clicked_cb), self); /* button init */ g_signal_connect (self->button_init, "clicked", G_CALLBACK (button_init_clicked_cb), self); /* column_view parameters */ add_column(self->column_view_parameters, "name", label_property, "name"); add_column(self->column_view_parameters, "value", spin_button_parameter_value); /* column_view pseudo_axes */ add_column(self->column_view_pseudo_axes, "name", label_property, "name"); add_column(self->column_view_pseudo_axes, "value", engine_pseudo_axis, self); /* dropdown */ gtk_drop_down_set_model(GTK_DROP_DOWN(self->dropdown), G_LIST_MODEL(self->liststore_modes)); g_signal_connect (self->dropdown, "notify::selected-item", G_CALLBACK (dropdown_notify_selected_item_cb), self); /* frame */ gtk_frame_set_child(GTK_FRAME(self->frame), vbox); /* hbox */ gtk_box_append(GTK_BOX(hbox), label_mode); gtk_box_append(GTK_BOX(hbox), self->dropdown); gtk_box_append(GTK_BOX(hbox), self->button_init); /* vbox */ gtk_box_append(GTK_BOX(vbox), self->column_view_pseudo_axes); gtk_box_append(GTK_BOX(vbox), self->button_apply); gtk_box_append(GTK_BOX(vbox), hbox); gtk_box_append(GTK_BOX(vbox), self->column_view_parameters); } static void hkl_gui_engine_class_init (HklGuiEngineClass * class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); /* virtual methods */ gobject_class->finalize = finalize; gobject_class->set_property = set_property; gobject_class->get_property = get_property; /* properties */ props[PROP_ENGINE] = g_param_spec_pointer ("engine", "Engine", "The Hkl Engine used underneath", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_MODE] = g_param_spec_string ("mode", "Mode", "The curren tmode name of the engine", "invalid-mode", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_INITIALIZED] = g_param_spec_boolean ("initialized", "Initialized", "The current mode was initialized or not.", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, NUM_PROPERTIES, props); /* signals */ signals[CHANGED] = g_signal_new ("changed", HKL_GUI_TYPE_ENGINE, G_SIGNAL_RUN_LAST, 0, /* class offset */ NULL, /* accumulator */ NULL, /* accu_data */ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, /* return_type */ 0); } HklGuiEngine* hkl_gui_engine_new (HklEngine* engine) { return g_object_new (HKL_GUI_TYPE_ENGINE, "engine", engine, NULL); } HklEngine* hkl_gui_engine_get_engine (HklGuiEngine *self) { return self->engine; } GError* hkl_gui_engine_get_error (HklGuiEngine *self) { return self->error; } GtkWidget * hkl_gui_engine_get_frame(HklGuiEngine *self) { return self->frame; } gboolean hkl_gui_engine_get_initialized (HklGuiEngine *self) { return hkl_engine_initialized_get(self->engine); } const char * hkl_gui_engine_get_mode (HklGuiEngine *self) { return hkl_engine_current_mode_get(self->engine); } HklGeometryList * hkl_gui_engine_get_solutions(HklGuiEngine *self) { return self->solutions; } void hkl_gui_engine_set_engine (HklGuiEngine *self, HklEngine *engine) { const char *current_mode; const char **mode; const darray_string *modes; const char **name; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); self->engine = engine; /* engine name */ const char *engine_name = hkl_engine_name_get(engine); char *buf; guint capabilities = hkl_engine_capabilities_get(engine); if (HKL_ENGINE_CAPABILITIES_WRITABLE & capabilities){ buf = g_strdup_printf ("%s", engine_name); }else{ buf = g_strdup_printf ("%s (Read Only)", engine_name); } gtk_frame_set_label (GTK_FRAME (self->frame), buf); g_free(buf); /* pseudo axes only once */ darray_foreach(name, *hkl_engine_pseudo_axis_names_get(engine)){ const HklParameter *parameter = hkl_engine_pseudo_axis_get(self->engine, *name, NULL); g_list_store_append(self->liststore_pseudo_axes, hkl_gui_parameter_new(parameter)); } /* modes names only once */ modes = hkl_engine_modes_names_get(engine); darray_foreach(mode, *modes){ gtk_string_list_append(GTK_STRING_LIST(self->liststore_modes), *mode); } gtk_drop_down_set_model(GTK_DROP_DOWN(self->dropdown), G_LIST_MODEL(self->liststore_modes)); if(darray_size(*modes) == 1) gtk_widget_set_sensitive(self->dropdown, false); current_mode = hkl_engine_current_mode_get(self->engine); hkl_gui_engine_set_mode(self, current_mode); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENGINE]); } void hkl_gui_engine_set_mode (HklGuiEngine *self, const char *mode) { g_return_if_fail (self != NULL); g_return_if_fail (mode != NULL); g_return_if_fail(TRUE == hkl_engine_current_mode_set(self->engine, mode, NULL)); update_liststore_mode_parameters(self); guint capabilities = hkl_engine_capabilities_get(self->engine); gtk_widget_set_sensitive(self->button_init, HKL_ENGINE_CAPABILITIES_INITIALIZABLE & capabilities); gtk_widget_set_sensitive(self->button_apply, HKL_ENGINE_CAPABILITIES_WRITABLE & capabilities); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODE]); } void hkl_gui_engine_set_initialized (HklGuiEngine *self, gboolean initialized) { g_return_if_fail (self != NULL); g_return_if_fail (TRUE == hkl_engine_initialized_set(self->engine, initialized, NULL)); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_MODE]); } void hkl_gui_engine_update(HklGuiEngine *self) { guint i; guint n_parameters; HklGuiParameter *parameter; n_parameters = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_pseudo_axes)); for(i=0; iliststore_pseudo_axes), i); hkl_gui_parameter_update(parameter); } n_parameters = g_list_model_get_n_items(G_LIST_MODEL(self->liststore_mode_parameters)); for(i=0; iliststore_mode_parameters), i); hkl_gui_parameter_update(parameter); } } /* static void */ /* button2_clicked_cb (GtkButton* button, HklGuiEngine* self) */ /* { */ /* HklGuiEnginePrivate *priv = hkl_gui_engine_get_instance_private(self); */ /* if (HKL_ENGINE_CAPABILITIES_INITIALIZABLE & hkl_engine_capabilities_get(priv->engine)){ */ /* if(hkl_engine_initialized_set(priv->engine, TRUE, NULL)){ */ /* /\* some init method update the parameters *\/ */ /* update_mode_parameters(self); */ /* } */ /* } */ /* } */ hkl-5.1.7/gui/Makefile.am0000664000175000017500000000261715133711150014107 0ustar00piccapiccabin_PROGRAMS = ghkl dist_man_MANS = ghkl.1 AM_CFLAGS = \ -DPKGDATA=\""$(pkgdatadir)"\" \ -DGTK_DISABLE_SINGLE_INCLUDES \ -DGDK_DISABLE_DEPRECATED \ -DGTK_DISABLE_DEPRECATED \ -DGSEAL_ENABLE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -Wno-misleading-indentation \ $(DATATYPE99_CFLAGS) \ $(GLIB_CFLAGS) \ $(GSL_CFLAGS) \ $(GTK_CFLAGS) AM_LDFLAGS = \ -Wl,--export-dynamic \ $(GLIB_LIBS) \ $(GSL_LIBS) \ $(GTK_LIBS) ghkl_LDADD = \ $(top_builddir)/hkl/libhkl.la ghkl_SOURCES = \ hkl-gui-diffractometer.c \ hkl-gui-diffractometer-private.h \ hkl-gui-engine.c \ hkl-gui-factory.c \ hkl-gui-geometry.c \ hkl-gui-item-factories.c \ hkl-gui-macros.h \ hkl-gui-parameter.c \ hkl-gui-sample.c \ hkl-gui-sample-reflection.c \ hkl-gui.c \ hkl-gui.h appldir = ${datadir}/applications dist_appl_DATA = ghkl.desktop if HKL3D AM_CFLAGS += \ -I$(top_srcdir)/hkl3d \ -I$(top_srcdir)/hkl3d/bullet/src \ -DHKL3D \ $(EPOXY_CFLAGS) \ $(G3D_CFLAGS) \ $(BULLET_CFLAGS) AM_LDFLAGS += -lstdc++\ $(EPOXY_LIBS) \ $(G3D_LIBS) \ $(BULLET_LIBS) # force linkage using g++ for libhkl3d.la nodist_EXTRA_ghkl_SOURCES = dummy.cxx ghkl_LDADD += \ $(top_builddir)/hkl3d/libhkl3d.la ghkl_SOURCES += \ hkl-gui-3d.c \ hkl-gui-3d.h endif # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-5.1.7/gui/ghkl.desktop0000664000175000017500000000030614677222567014411 0ustar00piccapicca[Desktop Entry] Version=1.0 Type=Application Name=ghkl GenericName=Diffractometer Calculation Comment=hkl library graphical interface. TryExec=ghkl Exec=ghkl Categories=Education;Science;Physics;GTKhkl-5.1.7/gui/hkl-gui-3d.c0000664000175000017500000006320315143645056014075 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2025, 2026 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Oussama Sboui */ #include #include #include #include #include #include "hkl3d.h" #include "hkl/ccan/compiler/compiler.h" #include "hkl-gui.h" #include "hkl-gui-macros.h" #include "hkl-gui-3d.h" /************/ /* HklGui3d */ /************/ enum { PROP_0, PROP_FILENAME, PROP_GEOMETRY, PROP_SHOW_BULLET, PROP_SHOW_MODEL, N_PROPERTIES }; /* Keep a pointer to the properties definition */ static GParamSpec *props[N_PROPERTIES] = { NULL, }; enum { CHANGED, N_SIGNALS }; static NEEDED guint signals[N_SIGNALS] = { 0 }; typedef struct _HklGui3DPrivate HklGui3DPrivate; struct _HklGui3DPrivate { /* Properties */ char *filename; HklGeometry *geometry; /* Properties */ GtkBuilder *builder; GtkFrame *frame1; GtkBox *vbox1; GtkTreeView *treeview1; /* GtkToolButton *toolbutton1; */ /* GtkToolButton *toolbutton2; */ /* GtkToolButton *toolbutton3; */ GtkFileChooserDialog *filechooserdialog1; GtkButton *button1; GtkButton *button2; GtkTreeStore *treestore1; /* opengl connected to the drawingarea1 */ struct { gint32 beginx; gint32 beginy; } mouse; gboolean show_bullet; gboolean show_model; }; struct _HklGui3D { GObject parent_instance; HklGui3DPrivate * priv; Hkl3D *hkl3d; GtkGLArea *gl_area; GtkWidget *toggle_button_show_bullet; GtkWidget *toggle_button_show_model; }; G_DEFINE_TYPE_WITH_PRIVATE (HklGui3D, hkl_gui_3d, G_TYPE_OBJECT); /* static void hkl_gui_3d_update_hkl3d_objects_TreeStore(HklGui3D *self) */ /* { */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); */ /* size_t i; */ /* size_t j; */ /* gtk_tree_store_clear(priv->treestore1); */ /* for(i=0; ihkl3d->config->len; ++i){ */ /* GtkTreeIter iter = {0}; */ /* gtk_tree_store_append(priv->treestore1, &iter, NULL); */ /* gtk_tree_store_set(priv->treestore1, &iter, */ /* HKL_GUI_3D_COL_NAME, self->hkl3d->config->models[i]->filename, */ /* HKL_GUI_3D_COL_MODEL, self->hkl3d->config->models[i], */ /* HKL_GUI_3D_COL_OBJECT, NULL, */ /* -1); */ /* for(j=0; jhkl3d->config->models[i]->len; ++j){ */ /* GtkTreeIter citer = {0}; */ /* gtk_tree_store_append(priv->treestore1, &citer, &iter); */ /* gtk_tree_store_set(priv->treestore1, &citer, */ /* HKL_GUI_3D_COL_NAME, self->hkl3d->config->models[i]->objects[j]->axis_name, */ /* HKL_GUI_3D_COL_HIDE, self->hkl3d->config->models[i]->objects[j]->hide, */ /* HKL_GUI_3D_COL_MODEL, self->hkl3d->config->models[i], */ /* HKL_GUI_3D_COL_OBJECT, self->hkl3d->config->models[i]->objects[j], */ /* -1); */ /* } */ /* } */ /* } */ /* properties */ static const char * hkl_gui_3d_get_filename(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); return priv->filename; } static HklGeometry * hkl_gui_3d_get_geometry(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); return priv->geometry; } static gboolean hkl_gui_3d_get_show_bullet(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); return priv->show_bullet; } static gboolean hkl_gui_3d_get_show_model(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); return priv->show_model; } static void _filename_and_geometry(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); if(priv->filename && priv->geometry){ if (self->hkl3d) hkl3d_free(self->hkl3d); self->hkl3d = hkl3d_new(priv->filename, priv->geometry); } } static void hkl_gui_3d_set_filename(HklGui3D *self, const char *filename) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); if(priv->filename) g_free(priv->filename); priv->filename = g_strdup(filename); _filename_and_geometry(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FILENAME]); } static void hkl_gui_3d_set_geometry(HklGui3D *self, HklGeometry *geometry) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); priv->geometry = geometry; _filename_and_geometry(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GEOMETRY]); } static void hkl_gui_3d_set_show_bullet(HklGui3D *self, gboolean show_bullet) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); g_return_if_fail(show_bullet != priv->show_bullet); priv->show_bullet = show_bullet; hkl_gui_3d_invalidate(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SHOW_BULLET]); } static void hkl_gui_3d_set_show_model(HklGui3D *self, gboolean show_model) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); g_return_if_fail(show_model != priv->show_model); priv->show_model = show_model; hkl_gui_3d_invalidate(self); g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SHOW_BULLET]); } static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HklGui3D *self = HKL_GUI_3D (object); switch (prop_id) { case PROP_FILENAME: hkl_gui_3d_set_filename(self, g_value_get_string (value)); break; case PROP_GEOMETRY: hkl_gui_3d_set_geometry(self, g_value_get_pointer (value)); break; case PROP_SHOW_BULLET: hkl_gui_3d_set_show_bullet(self, g_value_get_boolean (value)); break; case PROP_SHOW_MODEL: hkl_gui_3d_set_show_model(self, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HklGui3D *self = HKL_GUI_3D (object); switch (prop_id) { case PROP_FILENAME: g_value_set_string (value, hkl_gui_3d_get_filename (self)); break; case PROP_GEOMETRY: g_value_set_pointer (value, hkl_gui_3d_get_geometry (self)); break; case PROP_SHOW_BULLET: g_value_set_boolean (value, hkl_gui_3d_get_show_bullet (self)); break; case PROP_SHOW_MODEL: g_value_set_boolean (value, hkl_gui_3d_get_show_model (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void finalize (GObject* object) { HklGui3D *self = HKL_GUI_3D (object); HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(HKL_GUI_3D(self)); g_free(priv->filename); g_object_unref(priv->builder); hkl3d_free(self->hkl3d); G_OBJECT_CLASS (hkl_gui_3d_parent_class)->finalize (object); } HklGui3D* hkl_gui_3d_new (const char *filename, HklGeometry *geometry) { return g_object_new (HKL_GUI_TYPE_3D, "filename", filename, "geometry", geometry, NULL); } GtkFrame *hkl_gui_3d_get_frame(HklGui3D *self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); return priv->frame1; } void hkl_gui_3d_update(HklGui3D *self) { if(self->hkl3d){ hkl3d_is_colliding(self->hkl3d); hkl_gui_3d_invalidate(self); } } /************/ /* Callback */ /************/ /* void hkl_gui_3d_cellrenderertext2_toggled_cb(GtkCellRendererToggle* renderer, */ /* const gchar* path, gpointer user_data) */ /* { */ /* HklGui3D *self = HKL_GUI_3D(user_data); */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* guint hide; */ /* Hkl3DObject *object; */ /* GtkTreeIter iter = {0}; */ /* gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL(priv->treestore1), */ /* &iter, path); */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->treestore1), */ /* &iter, */ /* HKL_GUI_3D_COL_OBJECT, &object, */ /* -1); */ /* hide = !gtk_cell_renderer_toggle_get_active(renderer); */ /* if(object){ */ /* hkl3d_hide_object(self->hkl3d, object, hide); */ /* gtk_tree_store_set (priv->treestore1, */ /* &iter, */ /* HKL_GUI_3D_COL_HIDE, hide, */ /* -1); */ /* hkl_gui_3d_is_colliding(self); */ /* hkl_gui_3d_invalidate(self); */ /* }else{ */ /* Hkl3DModel *model; */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->treestore1), */ /* &iter, */ /* HKL_GUI_3D_COL_MODEL, &model, */ /* -1); */ /* if(model){ */ /* GtkTreeIter children = {0}; */ /* gboolean valid; */ /* size_t i = 0; */ /* gtk_tree_store_set (priv->treestore1, */ /* &iter, */ /* HKL_GUI_3D_COL_HIDE, hide, */ /* -1); */ /* /\* set all the children rows *\/ */ /* valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(priv->treestore1), */ /* &children, &iter); */ /* while(valid){ */ /* hkl3d_hide_object(self->hkl3d, model->objects[i++], hide); */ /* gtk_tree_store_set (priv->treestore1, */ /* &children, */ /* HKL_GUI_3D_COL_HIDE, hide, */ /* -1); */ /* valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(priv->treestore1), &children); */ /* } */ /* hkl_gui_3d_is_colliding(self); */ /* hkl_gui_3d_invalidate(self); */ /* } */ /* } */ /* } */ /* void hkl_gui_3d_treeview1_cursor_changed_cb(GtkTreeView *tree_view, */ /* gpointer user_data) */ /* { */ /* int i; */ /* int j; */ /* HklGui3D *self = user_data; */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* GtkTreeIter iter = {0}; */ /* Hkl3DObject *object; */ /* GtkTreePath *path; */ /* GtkTreeViewColumn * column; */ /* gtk_tree_view_get_cursor(priv->treeview1, &path, &column); */ /* gtk_tree_model_get_iter(GTK_TREE_MODEL(priv->treestore1), &iter, path); */ /* gtk_tree_path_free(path); */ /* /\* need to unselect of objects of all 3d models *\/ */ /* for(i=0; ihkl3d->config->len; ++i) */ /* for(j=0; jhkl3d->config->models[i]->len; ++j) */ /* self->hkl3d->config->models[i]->objects[j]->selected = FALSE; */ /* /\* now select the right object *\/ */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->treestore1), */ /* &iter, */ /* HKL_GUI_3D_COL_OBJECT, &object, */ /* -1); */ /* if(object) */ /* object->selected = TRUE; */ /* hkl_gui_3d_invalidate(self); */ /* } */ /* void hkl_gui_3d_toolbutton1_clicked_cb(GtkToolButton *toolbutton, */ /* gpointer user_data) */ /* { */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* gtk_widget_show(GTK_WIDGET(priv->filechooserdialog1)); */ /* } */ /* /\* remove an object from the model *\/ */ /* void hkl_gui_3d_toolbutton2_clicked_cb(GtkToolButton *toolbutton, */ /* gpointer user_data) */ /* { */ /* HklGui3D *self = user_data; */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* GtkTreeIter iter = {0}; */ /* GtkTreePath *path; */ /* GtkTreeViewColumn * column; */ /* Hkl3DObject *object; */ /* gtk_tree_view_get_cursor(priv->treeview1, &path, &column); */ /* gtk_tree_model_get_iter(GTK_TREE_MODEL(priv->treestore1), &iter, path); */ /* gtk_tree_path_free(path); */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->treestore1), */ /* &iter, */ /* HKL_GUI_3D_COL_OBJECT, &object, */ /* -1); */ /* if(object){ */ /* hkl3d_remove_object(self->hkl3d, object); */ /* hkl_gui_3d_update_hkl3d_objects_TreeStore(self); */ /* hkl_gui_3d_invalidate(self); */ /* } */ /* } */ /* static void */ /* reset_3d(G3DGLRenderOptions *renderoptions) */ /* { */ /* /\* renderoptions *\/ */ /* renderoptions->updated = TRUE; */ /* renderoptions->initialized = FALSE; */ /* renderoptions->zoom = 7; */ /* renderoptions->bgcolor[0] = 0.9; */ /* renderoptions->bgcolor[1] = 0.8; */ /* renderoptions->bgcolor[2] = 0.6; */ /* renderoptions->bgcolor[3] = 1.0; */ /* renderoptions->glflags = */ /* /\* G3D_FLAG_GL_ISOMETRIC | *\/ */ /* G3D_FLAG_GL_SPECULAR | */ /* G3D_FLAG_GL_SHININESS | */ /* G3D_FLAG_GL_TEXTURES | */ /* G3D_FLAG_GL_COLORS| */ /* G3D_FLAG_GL_COORD_AXES; */ /* g3d_quat_trackball(renderoptions->quat, 0.0, 0.0, 0.0, 0.0, 0.8); */ /* /\* rotate a little bit *\/ */ /* gfloat q1[4], q2[4]; */ /* gfloat a1[3] = { 0.0, 1.0, 0.0 }; */ /* gfloat a2[3] = { 1.0, 0.0, 1.0 }; */ /* g3d_quat_rotate(q1, a1, - 45.0 * G_PI / 180.0); */ /* g3d_quat_rotate(q2, a2, - 45.0 * G_PI / 180.0); */ /* g3d_quat_add(renderoptions->quat, q1, q2); */ /* } */ /***************/ /* OpenGL part */ /***************/ /* void hkl_gui_3d_draw_selected(HklGui3D *self) */ /* { */ /* int i; */ /* int j; */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); */ /* /\* glDisable(GL_LIGHTING); *\/ */ /* for(i=0; ihkl3d->config->len; i++) */ /* for(j=0; jhkl3d->config->models[i]->len; j++){ */ /* if(self->hkl3d->config->models[i]->objects[j]->selected */ /* && !self->hkl3d->config->models[i]->objects[j]->hide){ */ /* // Push the GL attribute bits so that we don't wreck any settings */ /* glPushAttrib( GL_ALL_ATTRIB_BITS ); */ /* // Enable polygon offsets, and offset filled polygons forward by 2.5 */ /* glEnable( GL_POLYGON_OFFSET_FILL ); */ /* glPolygonOffset( -2.5, -2.5); */ /* // Set the render mode to be line rendering with a thick line width */ /* glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); */ /* glLineWidth( 3.f ); */ /* // Set the colour to be pink */ /* glColor3f( 1.f, .0f, 1.f ); */ /* // Render the object */ /* draw_g3dObject(self->hkl3d->config->models[i]->objects[j]->g3d); */ /* // Set the polygon mode to be filled triangles */ /* glLineWidth( 1.f ); */ /* glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); */ /* // Set the colour to the background */ /* glCullFace(GL_FRONT); */ /* glColor3f( 0.0f, 0.0f, 0.0f ); */ /* // Render the object */ /* draw_g3dObject(self->hkl3d->config->models[i]->objects[j]->g3d); */ /* // Pop the state changes off the attribute */ /* // to set things back how they were */ /* glPopAttrib(); */ /* } */ /* } */ /* /\* glEnable(GL_LIGHTING); *\/ */ /* } */ /* static void draw_sphere(float radius, int lats, int longs) */ /* { */ /* int i, j; */ /* for(i=0;i<=lats;i++){ */ /* float lat0 = M_PI * (-0.5 + (float) (i - 1) / lats); */ /* float z0 = radius * sin(lat0); */ /* float zr0 = radius * cos(lat0); */ /* float lat1 = M_PI * (-0.5 + (float) i / lats); */ /* float z1 = radius * sin(lat1); */ /* float zr1 = radius * cos(lat1); */ /* glBegin(GL_QUAD_STRIP); */ /* for(j=0;j<=longs;j++) { */ /* float lng = 2 * M_PI * (float) (j - 1) / longs; */ /* float x = cos(lng); */ /* float y = sin(lng); */ /* glNormal3f(x * zr1, y * zr1, z1); */ /* glVertex3f(x * zr1, y * zr1, z1); */ /* glNormal3f(x * zr0, y * zr0, z0); */ /* glVertex3f(x * zr0, y * zr0, z0); */ /* } */ /* glEnd(); */ /* } */ /* } */ /* void hkl_gui_3d_draw_collisions(HklGui3D *self) */ /* { */ /* int i; */ /* int numManifolds; */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); */ /* /\* glDisable(GL_LIGHTING); *\/ */ /* ///one way to draw all the contact points is iterating over contact manifolds / points: */ /* numManifolds = hkl3d_get_nb_manifolds(self->hkl3d); */ /* for (i=0; ihkl3d, i); */ /* for (j=0; jhkl3d, i, j, */ /* &xa, &ya, &za, &xb, &yb, &zb); */ /* glDisable(GL_DEPTH_TEST); */ /* glBegin(GL_LINES); */ /* glColor4f(0, 0, 0, 1); */ /* glVertex3d(xa, ya, za); */ /* glVertex3d(xb, yb, zb); */ /* glEnd(); */ /* glColor4f(1, 0, 0, 1); */ /* glPushMatrix(); */ /* glTranslatef (xb, yb, zb); */ /* glScaled(0.05,0.05,0.05); */ /* draw_sphere(1, 10, 10); */ /* glPopMatrix(); */ /* glColor4f(1, 1, 0, 1); */ /* glPushMatrix(); */ /* glTranslatef (xa, ya, za); */ /* glScaled(0.05,0.05,0.05); */ /* draw_sphere(1, 10, 10); */ /* glPopMatrix(); */ /* glEnable(GL_DEPTH_TEST); */ /* } */ /* } */ /* glFlush(); */ /* } */ static gboolean hkl_gui_3d_gl_area_render_cb(GtkGLArea *area, GdkGLContext *context, gpointer user_data) { HklGui3D *self = HKL_GUI_3D (user_data); HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); gtk_gl_area_make_current (area); if (gtk_gl_area_get_error (area) != NULL) return FALSE; /* Clear the viewport */ glClearColor (0.9, 0.8, 0.6, 1.0); /* black */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* Draw scenes */ hkl3d_gl_draw (self->hkl3d, priv->show_bullet, priv->show_model); /* Flush the contents of the pipeline */ glFlush (); return TRUE; } static gboolean hkl_gui_3d_gl_area_resize_cb(GtkGLArea *area, gint width, gint height, gpointer user_data) { HklGui3D *self = HKL_GUI_3D (user_data); gtk_gl_area_make_current (area); if (gtk_gl_area_get_error (area) != NULL) return FALSE; hkl3d_gl_resize(self->hkl3d, width, height); return true; } void hkl_gui_3d_invalidate(HklGui3D *self) { /* queue a redraw on the GtkGLArea */ /* hkl_gui_3d_gl_area_render_cb(self->gl_area, */ /* gtk_gl_area_get_context (self->gl_area), */ /* self); */ /* apply the transformation */ gtk_gl_area_queue_render (self->gl_area); } /* static gboolean */ /* hkl_gui_3d_gl_area_button_press_event_cb(GtkWidget *gl_area, */ /* GdkEventButton* event, */ /* gpointer user_data) */ /* { */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* /\* left mouse buttom: rotate object *\/ */ /* if(event->button == 1) */ /* { */ /* priv->mouse.beginx = event->x; */ /* priv->mouse.beginy = event->y; */ /* return TRUE; */ /* } */ /* // don't block */ /* return FALSE; */ /* } */ /* gboolean */ /* hkl_gui_3d_gl_area_scroll_event_cb(GtkWidget *gl_area, */ /* GdkEventScroll *event, */ /* gpointer user_data) */ /* { */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* #define ZOOM_BY 10 */ /* if(event->direction == GDK_SCROLL_DOWN) */ /* priv->renderoptions.zoom += ZOOM_BY; */ /* else */ /* priv->renderoptions.zoom -= ZOOM_BY; */ /* #undef ZOOM_BY */ /* if(priv->renderoptions.zoom < 1) */ /* priv->renderoptions.zoom = 1; */ /* if(priv->renderoptions.zoom > 120) */ /* priv->renderoptions.zoom = 120; */ /* /\* queue a redraw on the GtkGLArea *\/ */ /* gtk_widget_queue_draw (gl_area); */ /* return FALSE; */ /* } */ /* gboolean */ /* hkl_gui_3d_gl_area_motion_notify_event_cb(GtkWidget *gl_area, */ /* GdkEventMotion* event, */ /* gpointer user_data) */ /* { */ /* HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(user_data); */ /* GtkAllocation alloc; */ /* gint x, y; */ /* GdkModifierType state; */ /* gtk_widget_get_allocation(gl_area, &alloc); */ /* if(event->is_hint){ */ /* gdk_window_get_device_position(event->window, */ /* event->device, */ /* &x, &y, &state); */ /* }else{ */ /* x = event->x; */ /* y = event->y; */ /* state = event->state; */ /* } */ /* /\* left button pressed *\/ */ /* if(state & GDK_BUTTON1_MASK) */ /* { */ /* if(state & GDK_SHIFT_MASK) */ /* { */ /* /\* shift pressed, translate view *\/ */ /* priv->renderoptions.offx += (float)(x - priv->mouse.beginx) / alloc.width / priv->renderoptions.zoom; */ /* priv->renderoptions.offy -= (float)(y - priv->mouse.beginy) / alloc.height / priv->renderoptions.zoom; */ /* } */ /* else */ /* { */ /* /\* rotate view *\/ */ /* gfloat spin_quat[4]; */ /* g3d_quat_trackball(spin_quat, */ /* (2.0 * priv->mouse.beginx - alloc.width) / alloc.width, */ /* (alloc.height - 2.0 * priv->mouse.beginy) / alloc.height, */ /* (2.0 * x - alloc.width) / alloc.width, */ /* (alloc.height - 2.0 * y) / alloc.height, */ /* 0.8 /\* trackball radius *\/); */ /* g3d_quat_add(priv->renderoptions.quat, */ /* spin_quat, priv->renderoptions.quat); */ /* /\* normalize quat some times *\/ */ /* priv->renderoptions.norm_count ++; */ /* if(priv->renderoptions.norm_count > 97) { */ /* priv->renderoptions.norm_count = 0; */ /* g3d_quat_normalize(priv->renderoptions.quat); */ /* } */ /* /\* g3d_quat_to_rotation_xyz(priv->renderoptions.quat, *\/ */ /* /\* &rx, &ry, &rz); *\/ */ /* /\* text = g_strdup_printf("%-.2f°, %-.2f°, %-.2f°", *\/ */ /* /\* rx * 180.0 / G_PI, ry * 180.0 / G_PI, rz * 180.0 / G_PI); *\/ */ /* /\* gui_glade_status(priv, text); *\/ */ /* /\* g_free(text); *\/ */ /* } */ /* } */ /* /\* middle mouse button *\/ */ /* if(state & GDK_BUTTON2_MASK) */ /* { */ /* priv->renderoptions.zoom += */ /* ((y - priv->mouse.beginy) / (gfloat)alloc.height) * 40; */ /* if(priv->renderoptions.zoom < 1) */ /* priv->renderoptions.zoom = 1; */ /* if(priv->renderoptions.zoom > 120) */ /* priv->renderoptions.zoom = 120; */ /* } */ /* priv->mouse.beginx = x; */ /* priv->mouse.beginy = y; */ /* /\* queue a redraw on the GtkGLArea *\/ */ /* gtk_widget_queue_draw (gl_area); */ /* return FALSE; */ /* } */ /*********************************************/ /* HklGui3D and HklGui3DClass initialization */ /*********************************************/ static void hkl_gui_3d_class_init (HklGui3DClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); /* virtual method */ gobject_class->finalize = finalize; gobject_class->set_property = set_property; gobject_class->get_property = get_property; /* properties */ props[PROP_FILENAME] = g_param_spec_string ("filename", "Filename", "The confuration filename", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_GEOMETRY] = g_param_spec_pointer ("geometry", "Geometry", "The Hkl Geometry used underneath", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_SHOW_BULLET] = g_param_spec_boolean ("show-bullet", "Show-Bullet", "Draw the bullet debug internals", false, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); props[PROP_SHOW_MODEL] = g_param_spec_boolean ("show-model", "Show-Model", "Draw the model", true, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, N_PROPERTIES, props); } static void gl_area_on_realize_cb (GtkGLArea *area, gpointer user_data) { HklGui3D *self = HKL_GUI_3D (user_data); gtk_gl_area_make_current (area); if (gtk_gl_area_get_error (area) != NULL) return; hkl3d_gl_init(self->hkl3d); glEnable(GL_DEPTH_TEST); glDisable(GL_STENCIL_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } static void hkl_gui_3d_init (HklGui3D * self) { HklGui3DPrivate *priv = hkl_gui_3d_get_instance_private(self); GtkWidget *vbox; GtkWidget *hbox; /* properties */ priv->filename = NULL; priv->geometry = NULL; priv->show_bullet = false; priv->show_model = true; /* widgets instances */ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); priv->frame1 = GTK_FRAME (gtk_frame_new("3d")); self->gl_area = GTK_GL_AREA (gtk_gl_area_new ()); self->toggle_button_show_bullet = gtk_toggle_button_new_with_label("Bullet"); self->toggle_button_show_model = gtk_toggle_button_new_with_label("Model"); /* frame1 */ gtk_frame_set_child(priv->frame1, vbox); /* button_show_bullet */ g_object_bind_property(self, "show_bullet", self->toggle_button_show_bullet, "active", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL); /* button_show_model */ g_object_bind_property(self, "show_model", self->toggle_button_show_model, "active", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL); /* gl_area */ gtk_gl_area_set_has_depth_buffer (self->gl_area, true); gtk_gl_area_set_auto_render (self->gl_area, true); gtk_widget_set_hexpand( GTK_WIDGET (self->gl_area), true); gtk_widget_set_vexpand( GTK_WIDGET (self->gl_area), true); gtk_widget_set_can_focus (GTK_WIDGET (self->gl_area), true); g_signal_connect(self->gl_area, "realize", G_CALLBACK(gl_area_on_realize_cb), self); g_signal_connect(self->gl_area, "resize", G_CALLBACK(hkl_gui_3d_gl_area_resize_cb), self); g_signal_connect(self->gl_area, "render", G_CALLBACK(hkl_gui_3d_gl_area_render_cb), self); /* hbox */ gtk_box_append (GTK_BOX (hbox), self->toggle_button_show_bullet); gtk_box_append (GTK_BOX (hbox), self->toggle_button_show_model); /* vbox */ gtk_box_append (GTK_BOX (vbox), GTK_WIDGET (self->gl_area)); gtk_box_append (GTK_BOX (vbox), hbox); /* gtk_box_pack_end(priv->vbox1, GTK_WIDGET(self->gl_area), TRUE, TRUE, 0); */ /* add events to the GtkGLArea */ /* gtk_widget_add_events(GTK_WIDGET(self->gl_area), */ /* GDK_BUTTON1_MOTION_MASK | */ /* GDK_BUTTON2_MOTION_MASK | */ /* GDK_BUTTON_PRESS_MASK | */ /* GDK_VISIBILITY_NOTIFY_MASK); */ /* connect the GL callbacks */ /* g_signal_connect(self->gl_area, "button-press-event", */ /* G_CALLBACK(hkl_gui_3d_gl_area_button_press_event_cb), self); */ /* g_signal_connect(self->gl_area, "motion-notify-event", */ /* G_CALLBACK(hkl_gui_3d_gl_area_motion_notify_event_cb), self); */ /* gtk_widget_set_visible (GTK_WIDGET (priv->frame1), true); */ } hkl-5.1.7/gui/hkl-gui.c0000664000175000017500000010635615143645056013600 0ustar00piccapicca/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2019, 2022, 2024, 2025 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include #include "hkl.h" #include "hkl-gui.h" #include "hkl-gui-diffractometer-private.h" #include "hkl-gui-macros.h" /****************/ /* HklGuiWindow */ /****************/ struct _HklGuiWindow { GtkApplication parent_instance; GListStore *liststore_samples; GtkAdjustment *adjustment_wavelength; GtkAlertDialog *alert_dialog_solutions; GBinding *adjustement_wavelength_binding; GtkMultiSelection *multi_selection_sample_reflections; GtkSingleSelection *single_selection_axes; GtkSingleSelection *single_selection_pseudo_axes; GtkSingleSelection *single_selection_samples; GtkSingleSelection *single_selection_solutions; GtkWidget *button_delete_sample; GtkWidget *button_delete_sample_reflection; GtkWidget *column_view_axes; GtkWidget *column_view_pseudo_axes; GtkWidget *column_view_sample_reflections; GtkWidget *column_view_samples; GtkWidget *column_view_solutions; GtkWidget *drop_down_samples; GtkWidget *flowbox_engines; GtkWidget *notebook1; GtkWidget *spinbutton_wavelength; GtkWidget *vbox_3d; GtkWidget *window1; HklGuiFactory *factory; /* not owned */ }; G_DEFINE_FINAL_TYPE (HklGuiWindow, hkl_gui_window, GTK_TYPE_APPLICATION); /* static gboolean */ /* finalize_liststore_samples(GtkTreeModel *model, */ /* GtkTreePath *path, */ /* GtkTreeIter *iter, */ /* gpointer data) */ /* { */ /* HklSample *sample = NULL; */ /* gtk_tree_model_get(model, iter, */ /* SAMPLE_COL_SAMPLE, &sample, */ /* -1); */ /* hkl_sample_free(sample); */ /* return FALSE; */ /* } */ static void finalize (GObject* object) { G_OBJECT_CLASS (hkl_gui_window_parent_class)->finalize (object); } static void raise_error(HklGuiWindow *self, GError *error) { g_return_if_fail (error != NULL); /* show an error message */ gtk_alert_dialog_set_message(self->alert_dialog_solutions, error->message); gtk_alert_dialog_show(self->alert_dialog_solutions, GTK_WINDOW(self->window1)); } /* static void */ /* update_3d(HklGuiWindow *self) */ /* { */ /* #ifdef HKL3D */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(self); */ /* if(priv->frame3d){ */ /* hkl_gui_3d_is_colliding(priv->frame3d); */ /* hkl_gui_3d_invalidate(priv->frame3d); */ /* } */ /* #endif */ /* } */ static void factory_notify_error_cb(HklGuiFactory *factory, GParamSpec* pspec, gpointer *user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); raise_error(self, hkl_gui_factory_get_error(factory)); } static void column_view_samples_selection_changed_cb (GtkSelectionModel* model, guint position, guint n_items, gpointer user_data) { GListStore *liststore; HklGuiWindow* self = HKL_GUI_WINDOW(user_data); HklGuiSample *sample; sample = HKL_GUI_SAMPLE (gtk_single_selection_get_selected_item (self->single_selection_samples)); liststore = hkl_gui_sample_get_reflections (sample); gtk_multi_selection_set_model (self->multi_selection_sample_reflections, G_LIST_MODEL (liststore)); } /* select diffractometer */ static void dropdown1_notify_selected_item_cb(GtkDropDown *dropdown, GParamSpec* pspec, gpointer *user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); HklGuiFactory *factory; factory = gtk_drop_down_get_selected_item(dropdown); if (NULL != factory) { guint i; guint n_items; GListStore *liststore; HklGuiSample *gsample; HklGuiFactory *old_factory = self->factory; self->factory = factory; /* setup spinbutton_wavelength */ if(self->adjustement_wavelength_binding) g_binding_unbind(self->adjustement_wavelength_binding); gtk_adjustment_set_value(self->adjustment_wavelength, hkl_gui_factory_get_wavelength(factory)); gtk_widget_set_sensitive(self->spinbutton_wavelength, TRUE); self->adjustement_wavelength_binding = g_object_bind_property(factory, "wavelength", self->adjustment_wavelength, "value", G_BINDING_BIDIRECTIONAL); /* sample */ g_object_bind_property(self->drop_down_samples, "selected-item", factory, "sample", G_BINDING_SYNC_CREATE); /* set column view axes model */ liststore = hkl_gui_factory_get_liststore_axes (factory); gtk_single_selection_set_model (self->single_selection_axes, G_LIST_MODEL (liststore)); /* set column view pseudo axes model */ liststore = hkl_gui_factory_get_liststore_pseudo_axes(factory); gtk_single_selection_set_model(self->single_selection_pseudo_axes, G_LIST_MODEL(liststore)); /* set column view solutions model and columns */ hkl_gui_factory_setup_column_view_solutions(factory, GTK_COLUMN_VIEW(self->column_view_solutions)); liststore = hkl_gui_factory_get_liststore_solutions(factory); gtk_single_selection_set_model(self->single_selection_solutions, G_LIST_MODEL(liststore)); /* add the engines frames to the flowbox engines */ gtk_flow_box_remove_all(GTK_FLOW_BOX(self->flowbox_engines)); liststore = hkl_gui_factory_get_liststore_engines(factory); n_items = g_list_model_get_n_items(G_LIST_MODEL(liststore)); for (i=0;iflowbox_engines), hkl_gui_engine_get_frame(gengine)); } /* set column view sample reflections */ hkl_gui_factory_setup_column_view_sample_reflections(factory, self->single_selection_samples, GTK_COLUMN_VIEW(self->column_view_sample_reflections)); gsample = hkl_gui_factory_get_sample(factory); liststore = hkl_gui_sample_get_reflections(gsample); gtk_multi_selection_set_model (self->multi_selection_sample_reflections, G_LIST_MODEL (liststore)); /* setup the 3d part when relevant */ hkl_gui_factory_setup_3d(old_factory, factory, GTK_BOX (self->vbox_3d)); } } /* select sample */ static void drop_down_samples_notify_selected_item_cb(GtkDropDown *dropdown, GParamSpec* pspec, gpointer *user_data) { //HklGuiWindow *self = HKL_GUI_WINDOW(user_data); //HklGuiSample *gsample; //GtkWidget *frame; // gsample = gtk_drop_down_get_selected_item(dropdown); } static void column_view_solutions_activate_cb (GtkColumnView *column_view, guint position, gpointer user_data) { HklGuiWindow* self = HKL_GUI_WINDOW(user_data); HklGuiGeometry *ggeometry; ggeometry = HKL_GUI_GEOMETRY (gtk_single_selection_get_selected_item (self->single_selection_solutions)); hkl_gui_factory_set_geometry(self->factory, ggeometry); /* if (gtk_tree_model_get_iter (GTK_TREE_MODEL(priv->liststore_solutions), &iter, path)) { */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->liststore_solutions), &iter, */ /* SOLUTION_COL_HKL_GEOMETRY_LIST_ITEM, &solution, */ /* -1); */ /* diffractometer_set_solution(priv->diffractometer, solution); */ /* update_axes (self); */ /* update_pseudo_axes (self); */ /* update_pseudo_axes_frames (self); */ /* update_3d(self); */ /* gtk_tree_path_free (path); */ /* } */ } /* /\* reflection flag *\/ */ /* void */ /* hkl_gui_window_cellrenderertoggle1_toggled_cb (GtkCellRendererToggle* renderer, const gchar* path, */ /* gpointer self) */ /* { */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(self); */ /* g_return_if_fail (self != NULL); */ /* g_return_if_fail (path != NULL); */ /* if (priv->sample){ */ /* gboolean flag; */ /* HklSampleReflection* reflection = NULL; */ /* GtkTreeIter iter = {0}; */ /* gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL(priv->liststore_reflections), */ /* &iter, path); */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->liststore_reflections), */ /* &iter, */ /* REFLECTION_COL_REFLECTION, &reflection, */ /* -1); */ /* flag = gtk_cell_renderer_toggle_get_active(renderer); */ /* hkl_sample_reflection_flag_set (reflection, flag); */ /* gtk_list_store_set (priv->liststore_reflections, */ /* &iter, */ /* REFLECTION_COL_FLAG, flag, */ /* -1); */ /* } */ /* } */ /* gboolean */ /* hkl_gui_window_treeview_reflections_key_press_event_cb (GtkWidget* _sender, GdkEvent* event, */ /* gpointer self) */ /* { */ /* return TRUE; */ /* } */ /* void */ /* hkl_gui_window_toolbutton_goto_reflection_clicked_cb (GtkButton* _sender, gpointer user_data) */ /* { */ /* HklGuiWindow *self = HKL_GUI_WINDOW(user_data); */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(user_data); */ /* g_return_if_fail (self != NULL); */ /* if (priv->sample) { */ /* GtkTreeSelection* selection = NULL; */ /* guint nb_rows = 0U; */ /* selection = gtk_tree_view_get_selection (priv->treeview_reflections); */ /* nb_rows = gtk_tree_selection_count_selected_rows (selection); */ /* if (nb_rows == 1) { */ /* HklSampleReflection *reflection; */ /* GtkTreeIter iter = {0}; */ /* GtkTreeModel* model = NULL; */ /* GtkTreePath *treepath; */ /* GList* list; */ /* model = GTK_TREE_MODEL(priv->liststore_reflections); */ /* list = gtk_tree_selection_get_selected_rows (selection, */ /* &model); */ /* treepath = g_list_nth_data(list, 0); */ /* gtk_tree_model_get_iter (GTK_TREE_MODEL(priv->liststore_reflections), */ /* &iter, treepath); */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->liststore_reflections), */ /* &iter, */ /* REFLECTION_COL_REFLECTION, &reflection, */ /* -1); */ /* hkl_geometry_set (priv->diffractometer->geometry, */ /* hkl_sample_reflection_geometry_get(reflection)); */ /* update_source (self); */ /* update_axes (self); */ /* update_pseudo_axes (self); */ /* update_3d(self); */ /* g_list_free_full (list, (GDestroyNotify) gtk_tree_path_free); */ /* } else */ /* if (nb_rows > 1) */ /* gtk_statusbar_push (priv->statusbar, 0, */ /* "Please select only one reflection."); */ /* else */ /* gtk_statusbar_push (priv->statusbar, 0, */ /* "Please select at least one reflection."); */ /* } */ /* } */ /* #define set_reciprocal_lattice(lattice, parameter) do{ \ */ /* const HklParameter *p; \ */ /* gdouble value; \ */ /* p = hkl_lattice_## parameter ##_get((lattice)); \ */ /* value = hkl_parameter_value_get(p, HKL_UNIT_USER); \ */ /* gtk_spin_button_set_value(priv->spinbutton_## parameter ##_star, value); \ */ /* }while(0) */ /* static void */ /* update_reciprocal_lattice (HklGuiWindow* self) */ /* { */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(self); */ /* g_return_if_fail (self != NULL); */ /* if (priv->sample != NULL) { */ /* hkl_lattice_reciprocal (hkl_sample_lattice_get(priv->sample), */ /* priv->reciprocal); */ /* set_reciprocal_lattice(priv->reciprocal, a); */ /* set_reciprocal_lattice(priv->reciprocal, b); */ /* set_reciprocal_lattice(priv->reciprocal, c); */ /* set_reciprocal_lattice(priv->reciprocal, alpha); */ /* set_reciprocal_lattice(priv->reciprocal, beta); */ /* set_reciprocal_lattice(priv->reciprocal, gamma); */ /* } */ /* } */ /* #define set_UB(i, j) do{ \ */ /* gdouble value = hkl_matrix_get(UB, i - 1, j - 1); \ */ /* const char *format = " %+.4f "; \ */ /* gchar *markup; \ */ /* markup = g_markup_printf_escaped (format, value); \ */ /* gtk_label_set_markup(GTK_LABEL (priv->label_UB ## i ## j), \ */ /* markup); \ */ /* g_free(markup); \ */ /* }while(0) */ /* static void */ /* update_UB (HklGuiWindow* self) */ /* { */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(self); */ /* g_return_if_fail (self != NULL); */ /* if (priv->sample != NULL) { */ /* const HklMatrix *UB = hkl_sample_UB_get (priv->sample); */ /* gchar *text = g_new0 (gchar, G_ASCII_DTOSTR_BUF_SIZE); */ /* set_UB(1, 1); */ /* set_UB(1, 2); */ /* set_UB(1, 3); */ /* set_UB(2, 1); */ /* set_UB(2, 2); */ /* set_UB(2, 3); */ /* set_UB(3, 1); */ /* set_UB(3, 2); */ /* set_UB(3, 3); */ /* g_free(text); */ /* } */ /* } */ /* void */ /* hkl_gui_window_treeview_crystals_cursor_changed_cb (GtkTreeView* _sender, gpointer user_data) */ /* { */ /* GtkTreePath* path = NULL; */ /* GtkTreeViewColumn* column = NULL; */ /* GtkTreeIter iter = {0}; */ /* HklGuiWindow *self = HKL_GUI_WINDOW(user_data); */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(user_data); */ /* HklSample *sample; */ /* g_return_if_fail (user_data != NULL); */ /* gtk_tree_view_get_cursor (priv->treeview_crystals, &path, &column); */ /* if(path){ */ /* if (gtk_tree_model_get_iter (GTK_TREE_MODEL(priv->liststore_crystals), */ /* &iter, path) == TRUE){ */ /* gtk_tree_model_get (GTK_TREE_MODEL(priv->liststore_crystals), */ /* &iter, */ /* SAMPLE_COL_SAMPLE, &sample, */ /* -1); */ /* if(sample && sample != priv->sample){ */ /* priv->sample = sample; */ /* update_reflections(self); */ /* update_lattice(self); */ /* update_reciprocal_lattice (self); */ /* update_ux_uy_uz (self); */ /* update_UB (self); */ /* if(priv->diffractometer){ */ /* diffractometer_set_sample(priv->diffractometer, */ /* priv->sample); */ /* update_pseudo_axes (self); */ /* update_pseudo_axes_frames (self); */ /* update_solutions(self); */ /* } */ /* } */ /* } */ /* gtk_tree_path_free (path); */ /* } */ /* } */ /* void */ /* hkl_gui_window_toolbutton_setUB_clicked_cb(GtkButton* _sender, gpointer user_data) */ /* { */ /* HklGuiWindow *self = HKL_GUI_WINDOW(user_data); */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(user_data); */ /* HklMatrix *UB; */ /* GError *error = NULL; */ /* UB = hkl_matrix_new_full(gtk_spin_button_get_value(priv->spinbutton_U11), */ /* gtk_spin_button_get_value(priv->spinbutton_U12), */ /* gtk_spin_button_get_value(priv->spinbutton_U13), */ /* gtk_spin_button_get_value(priv->spinbutton_U21), */ /* gtk_spin_button_get_value(priv->spinbutton_U22), */ /* gtk_spin_button_get_value(priv->spinbutton_U23), */ /* gtk_spin_button_get_value(priv->spinbutton_U31), */ /* gtk_spin_button_get_value(priv->spinbutton_U32), */ /* gtk_spin_button_get_value(priv->spinbutton_U33)); */ /* if(!hkl_sample_UB_set (priv->sample, UB, &error)) */ /* raise_error(self, &error); */ /* else{ */ /* if(priv->diffractometer){ */ /* diffractometer_set_sample(priv->diffractometer, */ /* priv->sample); */ /* update_lattice (self); */ /* update_crystal_model (self); */ /* update_reciprocal_lattice (self); */ /* update_UB (self); */ /* update_ux_uy_uz (self); */ /* update_pseudo_axes (self); */ /* update_pseudo_axes_frames (self); */ /* } */ /* } */ /* hkl_matrix_free(UB); */ /* } */ /* void */ /* hkl_gui_window_toolbutton_affiner_clicked_cb (GtkButton* _sender, gpointer user_data) */ /* { */ /* HklGuiWindow *self = HKL_GUI_WINDOW(user_data); */ /* HklGuiWindowPrivate *priv = hkl_gui_window_get_instance_private(user_data); */ /* GError *error = NULL; */ /* if(!hkl_sample_affine (priv->sample, &error)){ */ /* raise_error(self, &error); */ /* }else{ */ /* if(priv->diffractometer) */ /* diffractometer_set_sample(priv->diffractometer, */ /* priv->sample); */ /* update_lattice (self); */ /* update_crystal_model (self); */ /* update_reciprocal_lattice (self); */ /* update_UB (self); */ /* update_ux_uy_uz (self); */ /* update_pseudo_axes (self); */ /* update_pseudo_axes_frames (self); */ /* } */ /* } */ /* /\* */ static void add_sample_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); gint n_items; g_list_store_append(self->liststore_samples, hkl_gui_sample_new("")); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->single_selection_samples)); gtk_single_selection_set_selected (self->single_selection_samples, n_items - 1); if(n_items > 1) gtk_widget_set_sensitive(self->button_delete_sample, true); /* TODO go to the sample name in edit mode */ } static void add_sample_reflection_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); HklGuiSample *sample; sample = HKL_GUI_SAMPLE (gtk_single_selection_get_selected_item (self->single_selection_samples)); g_return_if_fail (NULL != sample); hkl_gui_factory_add_reflection(self->factory, sample); } static void copy_sample_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); HklGuiSample *gsample; gint n_items; gsample = gtk_single_selection_get_selected_item (self->single_selection_samples); g_list_store_append(self->liststore_samples, hkl_gui_sample_new_copy(gsample)); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->single_selection_samples)); if(n_items > 1) gtk_widget_set_sensitive(self->button_delete_sample, true); /* TODO go to the edit name */ } static void delete_sample_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); gint n_items; gint selected; selected = gtk_single_selection_get_selected(self->single_selection_samples); g_list_store_remove(self->liststore_samples, selected); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->single_selection_samples)); if (1 == n_items) gtk_widget_set_sensitive(self->button_delete_sample, false); } static void delete_sample_reflection_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); HklGuiSample *sample; GtkBitset *selected; sample = HKL_GUI_SAMPLE (gtk_single_selection_get_selected_item (self->single_selection_samples)); g_return_if_fail (NULL != sample); selected = gtk_selection_model_get_selection (GTK_SELECTION_MODEL (self->multi_selection_sample_reflections)); if (gtk_bitset_is_empty(selected) == false) hkl_gui_factory_del_reflection(self->factory, sample, selected); gtk_bitset_unref(selected); } static void compute_ub_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { HklGuiWindow *self = HKL_GUI_WINDOW(user_data); HklGuiSample *sample; sample = gtk_single_selection_get_selected_item (self->single_selection_samples); g_return_if_fail (NULL != sample); hkl_gui_factory_compute_ub(self->factory, sample); } static GActionEntry win_entries[] = { { "add-sample", add_sample_activated, NULL, NULL, NULL }, { "add-sample-reflection", add_sample_reflection_activated, NULL, NULL, NULL }, { "compute-ub", compute_ub_activated, NULL, NULL, NULL }, { "copy-sample", copy_sample_activated, NULL, NULL, NULL }, { "delete-sample", delete_sample_activated, NULL, NULL, NULL }, { "delete-sample-reflection", delete_sample_reflection_activated, NULL, NULL, NULL }, }; static void new_window (GApplication *app, GFile *file) { size_t i; size_t n; GListStore *liststore1; GtkListItemFactory *item_factory_drop_down_factories; GtkListItemFactory *item_factory_drop_down_samples; GtkWidget *button_add_sample; GtkWidget *button_add_sample_reflection; GtkWidget *button_compute_ub; GtkWidget *button_copy_sample; GtkWidget *dropdown1; GtkWidget *frame_diffractometer; GtkWidget *frame_wavelength; GtkWidget *frame_axes; GtkWidget *frame_pseudo_axes; GtkWidget *frame_sample; GtkWidget *frame_sample_reflections; GtkWidget *frame_samples; GtkWidget *frame_solutions; GtkWidget *hbox1; GtkWidget *hbox2; GtkWidget *hbox3; GtkWidget *label; GtkWidget *scrolledwindow1; GtkWidget *scrolledwindow2; GtkWidget *scrolledwindow3; GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *vbox3; GtkWidget *vbox4; GtkWidget *vbox5; HklFactory **factories; HklGuiWindow *self = HKL_GUI_WINDOW(app); /**********/ /* Models */ /**********/ /* liststore1 factories */ liststore1 = g_list_store_new (HKL_GUI_TYPE_FACTORY); factories = hkl_factory_get_all(&n); for(i=0; iliststore_samples = g_list_store_new (HKL_GUI_TYPE_SAMPLE); g_list_store_append(self->liststore_samples, hkl_gui_sample_new("default")); /*********************/ /* ListItemFactories */ /*********************/ /* drop down factories */ item_factory_drop_down_factories = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory_drop_down_factories, "setup", G_CALLBACK (hkl_gui_setup_item_factory_label_cb), NULL); g_signal_connect (item_factory_drop_down_factories, "bind", G_CALLBACK (hkl_gui_bind_item_factory_label_property_cb), "name"); /* drop down samples */ item_factory_drop_down_samples = gtk_signal_list_item_factory_new (); g_signal_connect (item_factory_drop_down_samples, "setup", G_CALLBACK (hkl_gui_setup_item_factory_label_cb), NULL); g_signal_connect (item_factory_drop_down_samples, "bind", G_CALLBACK (hkl_gui_bind_item_factory_label_property_cb), "name"); /*********************/ /* Selections */ /*********************/ self->multi_selection_sample_reflections = gtk_multi_selection_new(NULL); self->single_selection_axes = gtk_single_selection_new(NULL); self->single_selection_pseudo_axes = gtk_single_selection_new(NULL); self->single_selection_samples = gtk_single_selection_new (G_LIST_MODEL (self->liststore_samples)); self->single_selection_solutions = gtk_single_selection_new(NULL); /***********/ /* widgets */ /***********/ self->alert_dialog_solutions = gtk_alert_dialog_new("Solutions"); self->button_delete_sample = gtk_button_new(); self->button_delete_sample_reflection = gtk_button_new(); self->column_view_axes = gtk_column_view_new (GTK_SELECTION_MODEL (self->single_selection_axes)); self->column_view_pseudo_axes = gtk_column_view_new (GTK_SELECTION_MODEL (self->single_selection_pseudo_axes)); self->column_view_sample_reflections = gtk_column_view_new (GTK_SELECTION_MODEL (self->multi_selection_sample_reflections)); self->column_view_samples = gtk_column_view_new (GTK_SELECTION_MODEL (self->single_selection_samples)); self->column_view_solutions = gtk_column_view_new (GTK_SELECTION_MODEL (self->single_selection_solutions)); self->drop_down_samples = gtk_drop_down_new(G_LIST_MODEL(self->liststore_samples), NULL); self->flowbox_engines = gtk_flow_box_new(); self->notebook1 = gtk_notebook_new(); self->spinbutton_wavelength = gtk_spin_button_new(self->adjustment_wavelength, 0.0001, 4); self->vbox_3d = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); self->window1 = gtk_application_window_new (GTK_APPLICATION (app)); button_add_sample = gtk_button_new(); button_add_sample_reflection = gtk_button_new(); button_compute_ub = gtk_button_new_with_label("Compute UB"); button_copy_sample = gtk_button_new(); dropdown1 = gtk_drop_down_new(G_LIST_MODEL(liststore1), NULL); frame_diffractometer = gtk_frame_new("Diffractometer"); frame_wavelength = gtk_frame_new("Wavelength"); frame_axes = gtk_frame_new("Axes"); frame_pseudo_axes = gtk_frame_new("Pseudo Axes"); frame_sample = gtk_frame_new("Sample"); frame_sample_reflections = gtk_frame_new("Reflections"); frame_samples = gtk_frame_new("Samples"); frame_solutions = gtk_frame_new("Solutions"); hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); hbox3 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); scrolledwindow1 = gtk_scrolled_window_new(); scrolledwindow2 = gtk_scrolled_window_new(); scrolledwindow3 = gtk_scrolled_window_new(); vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); vbox3 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); vbox4 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); vbox5 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); /* button_add_sample */ gtk_widget_set_tooltip_text(button_add_sample, "Add a new sample"); gtk_button_set_icon_name (GTK_BUTTON (button_add_sample), "list-add-symbolic"); gtk_actionable_set_action_name (GTK_ACTIONABLE (button_add_sample), "win.add-sample"); /* button_add_sample_reflection */ gtk_widget_set_tooltip_text(button_add_sample_reflection, "Add a new reflection"); gtk_button_set_icon_name (GTK_BUTTON (button_add_sample_reflection), "list-add-symbolic"); gtk_actionable_set_action_name (GTK_ACTIONABLE (button_add_sample_reflection), "win.add-sample-reflection"); /* button_compute_ub */ gtk_widget_set_tooltip_text(button_compute_ub, "Compute the UB matrix with or0 and or1 reflections"); gtk_actionable_set_action_name (GTK_ACTIONABLE (button_compute_ub), "win.compute-ub"); /* button_copy_sample */ gtk_widget_set_tooltip_text(button_copy_sample, "Copy the selected sample"); gtk_button_set_icon_name (GTK_BUTTON (button_copy_sample), "edit-copy-symbolic"); gtk_actionable_set_action_name (GTK_ACTIONABLE (button_copy_sample), "win.copy-sample"); /* button_delete_sample */ gtk_widget_set_tooltip_text(self->button_delete_sample, "Delete the selected sample"); gtk_button_set_icon_name (GTK_BUTTON (self->button_delete_sample), "list-remove-symbolic"); gtk_actionable_set_action_name (GTK_ACTIONABLE (self->button_delete_sample), "win.delete-sample"); /* button_delete_sample_reflection */ gtk_widget_set_tooltip_text(self->button_delete_sample_reflection, "Delete the selected reflection"); gtk_button_set_icon_name (GTK_BUTTON (self->button_delete_sample_reflection), "list-remove-symbolic"); gtk_actionable_set_action_name (GTK_ACTIONABLE (self->button_delete_sample_reflection), "win.delete-sample-reflection"); /* column view axes */ add_column(self->column_view_axes, "name", label_property, "name"); add_column(self->column_view_axes, "value", spin_button_parameter_value); add_column(self->column_view_axes, "min", spin_button_parameter_min); add_column(self->column_view_axes, "max", spin_button_parameter_max); /* column view pseudo axes */ add_column(self->column_view_pseudo_axes, "name", label_property, "name"); add_column(self->column_view_pseudo_axes, "value", label_property, "value"); /* column view sample reflections */ gtk_widget_set_vexpand(self->column_view_sample_reflections, true); /* column view samples */ gtk_widget_set_vexpand(self->column_view_samples, true); add_column(self->column_view_samples, "name", entry_property, "name"); add_column(self->column_view_samples, "a", entry_numeric_property, "a"); add_column(self->column_view_samples, "b", entry_numeric_property, "b"); add_column(self->column_view_samples, "c", entry_numeric_property, "c"); add_column(self->column_view_samples, "alpha", entry_numeric_property, "alpha"); add_column(self->column_view_samples, "beta", entry_numeric_property, "beta"); add_column(self->column_view_samples, "gamma", entry_numeric_property, "gamma"); add_column(self->column_view_samples, "ux", entry_numeric_property, "ux"); add_column(self->column_view_samples, "uy", entry_numeric_property, "uy"); add_column(self->column_view_samples, "uz", entry_numeric_property, "uz"); g_signal_connect (self->single_selection_samples, "selection-changed", G_CALLBACK (column_view_samples_selection_changed_cb), self); /* column view solutions */ g_signal_connect (self->column_view_solutions, "activate", G_CALLBACK (column_view_solutions_activate_cb), self); /* dropdown1 */ gtk_widget_set_tooltip_text(dropdown1, "Select a diffractometer"); gtk_drop_down_set_show_arrow(GTK_DROP_DOWN(dropdown1), true); gtk_drop_down_set_factory(GTK_DROP_DOWN(dropdown1), item_factory_drop_down_factories); g_signal_connect (dropdown1, "notify::selected-item", G_CALLBACK (dropdown1_notify_selected_item_cb), self); /* drop_down_samples */ gtk_widget_set_tooltip_text(self->drop_down_samples, "Select a sample"); gtk_drop_down_set_show_arrow(GTK_DROP_DOWN(self->drop_down_samples), true); gtk_drop_down_set_factory(GTK_DROP_DOWN(self->drop_down_samples), item_factory_drop_down_samples); g_signal_connect (self->drop_down_samples, "notify::selected-item", G_CALLBACK (drop_down_samples_notify_selected_item_cb), self); /* flowbox engines */ gtk_flow_box_set_homogeneous(GTK_FLOW_BOX(self->flowbox_engines), FALSE); gtk_flow_box_set_selection_mode(GTK_FLOW_BOX(self->flowbox_engines), GTK_SELECTION_NONE); /* frame diffractometer */ gtk_frame_set_child(GTK_FRAME(frame_diffractometer), dropdown1); /* frame wavelength */ gtk_frame_set_child(GTK_FRAME(frame_wavelength), self->spinbutton_wavelength); /* frame axes */ gtk_frame_set_child(GTK_FRAME(frame_axes), self->column_view_axes); /* frame pseudo axes */ // gtk_frame_set_child(GTK_FRAME(frame_pseudo_axes), scrolledwindow1); gtk_frame_set_child(GTK_FRAME(frame_pseudo_axes), self->column_view_pseudo_axes); /* frame sample */ gtk_frame_set_child(GTK_FRAME(frame_sample), self->drop_down_samples); /* frame sample reflections */ gtk_frame_set_child(GTK_FRAME(frame_sample_reflections), vbox5); /* frame samples */ gtk_frame_set_child(GTK_FRAME(frame_samples), vbox4); /* frame solutions*/ gtk_frame_set_child(GTK_FRAME(frame_solutions), self->column_view_solutions); /* hbox1 */ gtk_box_append(GTK_BOX(hbox1), vbox2); gtk_box_append(GTK_BOX(hbox1), self->notebook1); /* hbox2 */ gtk_box_append(GTK_BOX(hbox2), button_add_sample); gtk_box_append(GTK_BOX(hbox2), button_copy_sample); gtk_box_append(GTK_BOX(hbox2), self->button_delete_sample); /* hbox3 */ gtk_box_append(GTK_BOX(hbox3), button_add_sample_reflection); gtk_box_append(GTK_BOX(hbox3), self->button_delete_sample_reflection); gtk_box_append(GTK_BOX(hbox3), button_compute_ub); /* notebook1 */ gtk_widget_set_hexpand(self->notebook1, true); label = gtk_label_new("Pseudo Axes"); gtk_notebook_append_page (GTK_NOTEBOOK (self->notebook1), scrolledwindow1, label); label = gtk_label_new("Samples Configuration"); gtk_notebook_append_page (GTK_NOTEBOOK (self->notebook1), vbox3, label); #if HKL3D label = gtk_label_new("Diffractometer 3D"); gtk_notebook_append_page (GTK_NOTEBOOK (self->notebook1), self->vbox_3d, label); #endif /* scrolledwindow1 */ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scrolledwindow1), self->flowbox_engines); /* scrolledwindow2 */ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scrolledwindow2), self->column_view_samples); /* scrolledwindow3 */ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scrolledwindow3), self->column_view_sample_reflections); /* spinbutton_wavelength */ gtk_widget_set_sensitive(self->spinbutton_wavelength, FALSE); /* vbox1 */ gtk_box_append(GTK_BOX(vbox1), hbox1); gtk_box_set_homogeneous(GTK_BOX (vbox1), true); /* vbox2 */ gtk_box_append(GTK_BOX(vbox2), frame_diffractometer); gtk_box_append(GTK_BOX(vbox2), frame_wavelength); gtk_box_append(GTK_BOX(vbox2), frame_sample); gtk_box_append(GTK_BOX(vbox2), frame_axes); gtk_box_append(GTK_BOX(vbox2), frame_solutions); /* vbox3 */ gtk_box_append(GTK_BOX(vbox3), frame_samples); gtk_box_append(GTK_BOX(vbox3), frame_sample_reflections); /* vbox4 */ gtk_box_append(GTK_BOX(vbox4), hbox2); gtk_box_append(GTK_BOX(vbox4), scrolledwindow2); /* vbox5 */ gtk_box_append(GTK_BOX(vbox5), hbox3); gtk_box_append(GTK_BOX(vbox5), scrolledwindow3); /* gtk_paned_set_start_child (GTK_PANED (hpaned1), vbox2); */ /* gtk_paned_set_shrink_start_child (GTK_PANED (hpaned1), false); */ /* gtk_paned_set_end_child (GTK_PANED (hpaned1), notebook1); */ /* gtk_paned_set_shrink_end_child (GTK_PANED (hpaned1), false); */ /* window1 */ gtk_window_set_default_size (GTK_WINDOW(self->window1), 1024, 768); g_action_map_add_action_entries (G_ACTION_MAP (self->window1), win_entries, G_N_ELEMENTS (win_entries), self); gtk_window_set_title (GTK_WINDOW (self->window1), "hkl library GUI"); gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (self->window1), TRUE); gtk_window_set_child (GTK_WINDOW (self->window1), vbox1); gtk_window_present (GTK_WINDOW (self->window1)); } static void hkl_gui_window_startup (GApplication *application) { G_APPLICATION_CLASS (hkl_gui_window_parent_class)->startup (application); /* priv->diffractometer = NULL; */ /* priv->sample = hkl_sample_new("default"); */ /* darray_init(priv->pseudo_frames); */ /* priv->reciprocal = hkl_lattice_new_default (); */ /* hkl_gui_window_get_widgets_and_objects_from_ui (ghkl); */ /* set_up_diffractometer_model (ghkl); */ /* set_up_tree_view_crystals (ghkl); */ /* set_up_tree_view_reflections(ghkl); */ } static void hkl_gui_window_shutdown (GApplication *application) { G_APPLICATION_CLASS (hkl_gui_window_parent_class)->shutdown (application); } static void hkl_gui_window_activate (GApplication *application) { G_APPLICATION_CLASS (hkl_gui_window_parent_class)->activate (application); new_window (application, NULL); } static void hkl_gui_window_open (GApplication *application, GFile **files, int n_files, const char *hint) { } static void hkl_gui_window_init (HklGuiWindow * self) { self->adjustment_wavelength = gtk_adjustment_new (0.0, 0.0, G_MAXDOUBLE, 0.0001, 0.01, 0.0); self->adjustement_wavelength_binding = NULL; } static void hkl_gui_window_class_init (HklGuiWindowClass *class) { GApplicationClass *application_class = G_APPLICATION_CLASS (class); GObjectClass *object_class = G_OBJECT_CLASS (class); application_class->startup = hkl_gui_window_startup; application_class->shutdown = hkl_gui_window_shutdown; application_class->activate = hkl_gui_window_activate; application_class->open = hkl_gui_window_open; /* virtual method */ object_class->finalize = finalize; } static HklGuiWindow* hkl_gui_window_new (void) { HklGuiWindow *ghkl; g_set_application_name ("Ghkl"); ghkl = g_object_new (HKL_GUI_TYPE_WINDOW, "application-id", "fr.synchrotron-soleil.ghkl", "flags", G_APPLICATION_HANDLES_OPEN, "inactivity-timeout", 30000, "register-session", TRUE, NULL); return ghkl; } int main (int argc, char ** argv) { HklGuiWindow *ghkl; int status; const char *accels[] = { "F11", NULL }; ghkl = hkl_gui_window_new (); gtk_application_set_accels_for_action (GTK_APPLICATION (ghkl), "win.fullscreen", accels); status = g_application_run (G_APPLICATION (ghkl), argc, argv); g_object_unref (ghkl); return status; } hkl-5.1.7/aclocal.m40000664000175000017500000027674015144640446013154 0ustar00piccapicca# generated automatically by aclocal 1.18.1 -*- Autoconf -*- # Copyright (C) 1996-2025 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, [m4_warning([this file was generated for autoconf 2.72. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html # =========================================================================== # # SYNOPSIS # # AX_CFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] # AX_CXXFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] # AX_FCFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] # # DESCRIPTION # # Specify compiler options that enable most reasonable warnings. For the # GNU Compiler Collection (GCC), for example, it will be "-Wall". The # result is added to shellvar, one of CFLAGS, CXXFLAGS or FCFLAGS if the # first parameter is not specified. # # Each of these macros accepts the following optional arguments: # # - $1 - shellvar # shell variable to use (CFLAGS, CXXFLAGS or FCFLAGS if not # specified, depending on macro) # # - $2 - default # value to use for flags if compiler vendor cannot be determined (by # default, "") # # - $3 - action-if-found # action to take if the compiler vendor has been successfully # determined (by default, add the appropriate compiler flags to # shellvar) # # - $4 - action-if-not-found # action to take if the compiler vendor has not been determined or # is unknown (by default, add the default flags, or "" if not # specified, to shellvar) # # These macros use AX_COMPILER_VENDOR to determine which flags should be # returned for a given compiler. Not all compilers currently have flags # defined for them; patches are welcome. If need be, compiler flags may # be made language-dependent: use a construct like the following: # # [vendor_name], [m4_if(_AC_LANG_PREFIX,[C], VAR="--relevant-c-flags",dnl # m4_if(_AC_LANG_PREFIX,[CXX], VAR="--relevant-c++-flags",dnl # m4_if(_AC_LANG_PREFIX,[FC], VAR="--relevant-fortran-flags",dnl # VAR="$2"; FOUND="no")))], # # Note: These macros also depend on AX_PREPEND_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2010 Rhys Ulerich # Copyright (c) 2018 John Zaitseff # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 25 AC_DEFUN([AX_FLAGS_WARN_ALL], [ AX_REQUIRE_DEFINED([AX_PREPEND_FLAG])dnl AC_REQUIRE([AX_COMPILER_VENDOR])dnl AS_VAR_PUSHDEF([FLAGS], [m4_default($1,_AC_LANG_PREFIX[]FLAGS)])dnl AS_VAR_PUSHDEF([VAR], [ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl AS_VAR_PUSHDEF([FOUND], [ac_save_[]_AC_LANG_ABBREV[]flags_warn_all_found])dnl AC_CACHE_CHECK([FLAGS for most reasonable warnings], VAR, [ VAR="" FOUND="yes" dnl Cases are listed in the order found in ax_compiler_vendor.m4 AS_CASE("$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor", [intel], [VAR="-w2"], [ibm], [VAR="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"], [pathscale], [], [clang], [VAR="-Wall"], [cray], [VAR="-h msglevel 2"], [fujitsu], [], [sdcc], [], [sx], [VAR="-pvctl[,]fullmsg"], [portland], [], [gnu], [VAR="-Wall"], [sun], [VAR="-v"], [hp], [VAR="+w1"], [dec], [VAR="-verbose -w0 -warnprotos"], [borland], [], [comeau], [], [kai], [], [lcc], [], [sgi], [VAR="-fullwarn"], [microsoft], [], [metrowerks], [], [watcom], [], [tcc], [], [unknown], [ VAR="$2" FOUND="no" ], [ AC_MSG_WARN([Unknown compiler vendor returned by [AX_COMPILER_VENDOR]]) VAR="$2" FOUND="no" ] ) AS_IF([test "x$FOUND" = "xyes"], [dnl m4_default($3, [AS_IF([test "x$VAR" != "x"], [AX_PREPEND_FLAG([$VAR], [FLAGS])])]) ], [dnl m4_default($4, [m4_ifval($2, [AX_PREPEND_FLAG([$VAR], [FLAGS])], [true])]) ])dnl ])dnl AS_VAR_POPDEF([FOUND])dnl AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ])dnl AX_FLAGS_WARN_ALL AC_DEFUN([AX_CFLAGS_WARN_ALL], [dnl AC_LANG_PUSH([C]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C]) ])dnl AC_DEFUN([AX_CXXFLAGS_WARN_ALL], [dnl AC_LANG_PUSH([C++]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C++]) ])dnl AC_DEFUN([AX_FCFLAGS_WARN_ALL], [dnl AC_LANG_PUSH([Fortran]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([Fortran]) ])dnl # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html # =========================================================================== # # SYNOPSIS # # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) # # DESCRIPTION # # Check whether the given FLAG works with the current language's compiler # or gives an error. (Warnings, however, are ignored) # # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # # If EXTRA-FLAGS is defined, it is added to the current language's default # flags (e.g. CFLAGS) when the check is done. The check is thus made with # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to # force the compiler to issue an error when a bad flag is given. # # INPUT gives an alternative input source to AC_COMPILE_IFELSE. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 11 AC_DEFUN([AX_CHECK_COMPILE_FLAG], [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl AC_CACHE_CHECK([whether the _AC_LANG compiler accepts $1], CACHEVAR, [ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS if test x"m4_case(_AC_LANG, [C], [$GCC], [C++], [$GXX], [Fortran], [$GFC], [Fortran 77], [$G77], [Objective C], [$GOBJC], [Objective C++], [$GOBJCXX], [no])" = xyes ; then add_gnu_werror="-Werror" fi _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1 $add_gnu_werror" AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], [AS_VAR_SET(CACHEVAR,[yes])], [AS_VAR_SET(CACHEVAR,[no])]) _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) AS_VAR_IF(CACHEVAR,yes, [m4_default([$2], :)], [m4_default([$3], :)]) AS_VAR_POPDEF([CACHEVAR])dnl ])dnl AX_CHECK_COMPILE_FLAGS # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html # =========================================================================== # # SYNOPSIS # # AX_COMPILER_VENDOR # # DESCRIPTION # # Determine the vendor of the C, C++ or Fortran compiler. The vendor is # returned in the cache variable $ax_cv_c_compiler_vendor for C, # $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for # (modern) Fortran. The value is one of "intel", "ibm", "pathscale", # "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "nvhpc" (NVIDIA HPC # Compiler), "portland" (PGI), "gnu" (GCC), "sun" (Oracle Developer # Studio), "hp", "dec", "borland", "comeau", "kai", "lcc", "sgi", # "microsoft", "metrowerks", "watcom", "tcc" (Tiny CC) or "unknown" (if # the compiler cannot be determined). # # To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT # with an appropriate preprocessor-enabled extension. For example: # # AC_LANG_PUSH([Fortran]) # AC_PROG_FC # AC_FC_PP_SRCEXT([F]) # AX_COMPILER_VENDOR # AC_LANG_POP([Fortran]) # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # Copyright (c) 2018-19 John Zaitseff # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 32 AC_DEFUN([AX_COMPILER_VENDOR], [dnl AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl dnl If you modify this list of vendors, please add similar support dnl to ax_compiler_version.m4 if at all possible. dnl dnl Note: Do NOT check for GCC first since some other compilers dnl define __GNUC__ to remain compatible with it. Compilers that dnl are very slow to start (such as Intel) are listed first. vendors=" intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ cray: _CRAYC fujitsu: __FUJITSU sdcc: SDCC,__SDCC sx: _SX nvhpc: __NVCOMPILER portland: __PGI gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ comeau: __COMO__ kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ tcc: __TINYC__ unknown: UNKNOWN " for ventest in $vendors; do case $ventest in *:) vendor=$ventest continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ #if !($vencpp) thisisanerror; #endif ]])], [break]) done ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` ]) ])dnl # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_prepend_flag.html # =========================================================================== # # SYNOPSIS # # AX_PREPEND_FLAG(FLAG, [FLAGS-VARIABLE]) # # DESCRIPTION # # FLAG is added to the front of the FLAGS-VARIABLE shell variable, with a # space added in between. # # If FLAGS-VARIABLE is not specified, the current language's flags (e.g. # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly # FLAG. # # NOTE: Implementation based on AX_APPEND_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # Copyright (c) 2018 John Zaitseff # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 2 AC_DEFUN([AX_PREPEND_FLAG], [dnl AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) AS_VAR_SET_IF(FLAGS,[ AS_CASE([" AS_VAR_GET(FLAGS) "], [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], [ FLAGS="$1 $FLAGS" AC_RUN_LOG([: FLAGS="$FLAGS"]) ]) ], [ AS_VAR_SET(FLAGS,[$1]) AC_RUN_LOG([: FLAGS="$FLAGS"]) ]) AS_VAR_POPDEF([FLAGS])dnl ])dnl AX_PREPEND_FLAG # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_require_defined.html # =========================================================================== # # SYNOPSIS # # AX_REQUIRE_DEFINED(MACRO) # # DESCRIPTION # # AX_REQUIRE_DEFINED is a simple helper for making sure other macros have # been defined and thus are available for use. This avoids random issues # where a macro isn't expanded. Instead the configure script emits a # non-fatal: # # ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found # # It's like AC_REQUIRE except it doesn't expand the required macro. # # Here's an example: # # AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) # # LICENSE # # Copyright (c) 2014 Mike Frysinger # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 2 AC_DEFUN([AX_REQUIRE_DEFINED], [dnl m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) ])dnl AX_REQUIRE_DEFINED # Configure paths for GLIB # Owen Taylor 1997-2001 # Increment this whenever this file is changed. #serial 4 dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, dnl gthread, or gio is specified in MODULES, pass to pkg-config dnl AC_DEFUN([AM_PATH_GLIB_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl dnl We can't use PKG_PREREQ because that needs 0.29. m4_ifndef([PKG_PROG_PKG_CONFIG], [pkg.m4 version 0.28 or later is required]) AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], , enable_glibtest=yes) min_glib_version=ifelse([$1], [], [2.0.0], [$1]) pkg_config_args="glib-2.0 >= $min_glib_version" for module in . $4 do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done PKG_PROG_PKG_CONFIG([0.16]) no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi dnl For GLIB_CFLAGS and GLIB_LIBS PKG_CHECK_MODULES([GLIB], [$pkg_config_args], [:], [:]) dnl For the tools PKG_CHECK_VAR([GLIB_GENMARSHAL], [glib-2.0], [glib_genmarshal]) PKG_CHECK_VAR([GOBJECT_QUERY], [glib-2.0], [gobject_query]) PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums]) PKG_CHECK_VAR([GLIB_COMPILE_RESOURCES], [gio-2.0], [glib_compile_resources]) AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" dnl dnl Now check if the installed GLib is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.glibtest AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include int main (void) { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLib header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ]])],[],[no_glib=yes],[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLib test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ]])], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLib or finding the wrong" echo "*** version of GLib. If it is not finding GLib, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occurred. This usually means GLib is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" ifelse([$3], , :, [$3]) fi rm -f conf.glibtest ]) # Configure path for the GNU Scientific Library # Christopher R. Gabriel , April 2000 AC_DEFUN([AX_PATH_GSL], [ AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is installed (optional)], gsl_prefix="$withval", gsl_prefix="") AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)], gsl_exec_prefix="$withval", gsl_exec_prefix="") AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to compile and run a test GSL program], , enable_gsltest=yes) if test "x${GSL_CONFIG+set}" != xset ; then if test "x$gsl_prefix" != x ; then GSL_CONFIG="$gsl_prefix/bin/gsl-config" fi if test "x$gsl_exec_prefix" != x ; then GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" fi fi AC_PATH_PROG(GSL_CONFIG, gsl-config, no) min_gsl_version=ifelse([$1], ,0.2.5,$1) AC_MSG_CHECKING(for GSL - version >= $min_gsl_version) no_gsl="" if test "$GSL_CONFIG" = "no" ; then no_gsl=yes else GSL_CFLAGS=`$GSL_CONFIG --cflags` GSL_LIBS=`$GSL_CONFIG --libs` gsl_major_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\).*/\1/'` if test "x${gsl_major_version}" = "x" ; then gsl_major_version=0 fi gsl_minor_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'` if test "x${gsl_minor_version}" = "x" ; then gsl_minor_version=0 fi gsl_micro_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'` if test "x${gsl_micro_version}" = "x" ; then gsl_micro_version=0 fi if test "x$enable_gsltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" rm -f conf.gsltest AC_TRY_RUN([ #include #include #include char* my_strdup (const char *str); char* my_strdup (const char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (void) { int major = 0, minor = 0, micro = 0; int n; char *tmp_version; system ("touch conf.gsltest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_gsl_version"); n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; if (n != 2 && n != 3) { printf("%s, bad version string\n", "$min_gsl_version"); exit(1); } if (($gsl_major_version > major) || (($gsl_major_version == major) && ($gsl_minor_version > minor)) || (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) { exit(0); } else { exit(1); } } ],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gsl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$GSL_CONFIG" = "no" ; then echo "*** The gsl-config script installed by GSL could not be found" echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GSL_CONFIG environment variable to the" echo "*** full path to gsl-config." else if test -f conf.gsltest ; then : else echo "*** Could not run GSL test program, checking why..." CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" AC_TRY_LINK([ #include ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GSL or finding the wrong" echo "*** version of GSL. If it is not finding GSL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GSL was incorrectly installed" echo "*** or that you have moved GSL since it was installed. In the latter case, you" echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi # GSL_CFLAGS="" # GSL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GSL_CFLAGS) AC_SUBST(GSL_LIBS) rm -f conf.gsltest ]) AU_ALIAS([AM_PATH_GSL], [AX_PATH_GSL]) dnl -*- mode: autoconf -*- dnl Copyright 2009 Johan Dahlin dnl dnl This file is free software; the author(s) gives unlimited dnl permission to copy and/or distribute it, with or without dnl modifications, as long as this notice is preserved. dnl # serial 1 dnl This is a copy of AS_AC_EXPAND dnl dnl (C) 2003, 2004, 2005 Thomas Vander Stichele dnl Copying and distribution of this file, with or without modification, dnl are permitted in any medium without royalty provided the copyright dnl notice and this notice are preserved. m4_define([_GOBJECT_INTROSPECTION_AS_AC_EXPAND], [ EXP_VAR=[$1] FROM_VAR=[$2] dnl first expand prefix and exec_prefix if necessary prefix_save=$prefix exec_prefix_save=$exec_prefix dnl if no prefix given, then use /usr/local, the default prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi dnl if no exec_prefix given, then use prefix if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" dnl loop until it doesn't change anymore while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done dnl clean up full_var=$new_full_var AC_SUBST([$1], "$full_var") dnl restore prefix and exec_prefix prefix=$prefix_save exec_prefix=$exec_prefix_save ]) m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([LT_INIT],[$0])dnl setup libtool first dnl enable/disable introspection m4_if([$2], [require], [dnl enable_introspection=yes ],[dnl AC_ARG_ENABLE(introspection, AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], [Enable introspection for this build]),, [enable_introspection=auto]) ])dnl AC_MSG_CHECKING([for gobject-introspection]) dnl presence/version checking AS_CASE([$enable_introspection], [no], [dnl found_introspection="no (disabled, use --enable-introspection to enable)" ],dnl [yes],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0],, AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) ],dnl [auto],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) dnl Canonicalize enable_introspection enable_introspection=$found_introspection ],dnl [dnl AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) ])dnl AC_MSG_RESULT([$found_introspection]) dnl expand datadir/libdir so we can pass them to pkg-config dnl and get paths relative to our target directories _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_DATADIR, "$datadir") _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_LIBDIR, "$libdir") INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --define-variable=datadir="${_GI_EXP_DATADIR}" --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --define-variable=libdir="${_GI_EXP_LIBDIR}" --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) AC_SUBST(INTROSPECTION_GENERATE) AC_SUBST(INTROSPECTION_GIRDIR) AC_SUBST(INTROSPECTION_TYPELIBDIR) AC_SUBST(INTROSPECTION_CFLAGS) AC_SUBST(INTROSPECTION_LIBS) AC_SUBST(INTROSPECTION_MAKEFILE) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") ]) dnl Usage: dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) ]) dnl Usage: dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) ]) # pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- # serial 13 (pkgconf) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, see . dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION], [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. dnl dnl If pkg-config is not found or older than specified, it will result dnl in an empty PKG_CONFIG variable. To avoid widespread issues with dnl scripts not checking it, ACTION-IF-NOT-FOUND defaults to aborting. dnl You can specify [PKG_CONFIG=false] as an action instead, which would dnl result in pkg-config tests failing, but no bogus error messages. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then m4_default([$2], [AC_MSG_ERROR([pkg-config not found])]) fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES # Copyright (C) 2002-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.18' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.18.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.18.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], [_AM_PROG_TAR([ustar])])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([_AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl AC_REQUIRE([_AM_PROG_RM_F]) AC_REQUIRE([_AM_PROG_XARGS_N]) dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done # aligned with autoconf, so not including core; see bug#72225. rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2022-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_RM_F # --------------- # Check whether 'rm -f' without any arguments works. # https://bugs.gnu.org/10828 AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) AC_SUBST(am__rm_f_notfound) ]) # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SLEEP_FRACTIONAL_SECONDS # ---------------------------- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl AC_CACHE_CHECK([whether sleep supports fractional seconds], am_cv_sleep_fractional_seconds, [dnl AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], [am_cv_sleep_fractional_seconds=no]) ])]) # _AM_FILESYSTEM_TIMESTAMP_RESOLUTION # ----------------------------------- # Determine the filesystem's resolution for file modification # timestamps. The coarsest we know of is FAT, with a resolution # of only two seconds, even with the most recent "exFAT" extensions. # The finest (e.g. ext4 with large inodes, XFS, ZFS) is one # nanosecond, matching clock_gettime. However, it is probably not # possible to delay execution of a shell script for less than one # millisecond, due to process creation overhead and scheduling # granularity, so we don't check for anything finer than that. (See below.) AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) AC_CACHE_CHECK([filesystem timestamp resolution], am_cv_filesystem_timestamp_resolution, [dnl # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `[ls -t conftest.ts[12]]` && { test "$[]*" != "X conftest.ts1 conftest.ts2" || test "$[]*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". _AS_ECHO_UNQUOTED( ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], [AS_MESSAGE_LOG_FD]) AC_MSG_FAILURE([ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment.]) fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$[]2" = conftest.ts3 && test "$[]3" = conftest.ts2 && test "$[]4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ])]) # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) # This check should not be cached, as it may vary across builds of # different projects. AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_RESULT([no]) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_RESULT([no]) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[]*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$[]2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done AC_MSG_RESULT([$am_build_env_is_sane]) if test "$am_build_env_is_sane" = no; then AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ]) AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SILENT_RULES # ---------------- # Enable less verbose build rules support. AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls dnl to AM_SILENT_RULES to change the default value. AC_CONFIG_COMMANDS_PRE([dnl case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi ])dnl ]) # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or # empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline dnl We intentionally force a newline after the assignment, since a) nothing dnl good can come of more text following, and b) that was the behavior dnl before 1.17. See https://bugs.gnu.org/72267. ]) # Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test x$am_uid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) elif test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test x$gm_gid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) elif test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR # Copyright (C) 2022-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_XARGS_N # ---------------- # Check whether 'xargs -n' works. It should work everywhere, so the fallback # is not optimized at all as we never expect to use it. AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' ])dnl AC_SUBST(am__xargs_n) ]) m4_include([m4/gtk-doc.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) hkl-5.1.7/config/0000775000175000017500000000000015144640565012543 5ustar00piccapiccahkl-5.1.7/config/compile0000755000175000017500000001760015144640450014114 0ustar00piccapicca#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2025-06-18.21; # UTC # Copyright (C) 1999-2025 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file unneeded_conversions # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no # conversion will take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then # MSYS2 environment. file_conv=cygwin else # Original MinGW environment. file_conv=mingw fi ;; MSYS*) # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. file_conv=cygwin ;; CYGWIN*) # Cygwin environment. file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) # This is the optimization mentioned above: # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -w "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.lo | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . GNU Automake home page: . General help using GNU software: . EOF exit $? ;; -v | --v*) echo "compile (GNU Automake) $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hkl-5.1.7/config/missing0000755000175000017500000001706515144640450014142 0ustar00piccapicca#! /bin/sh # Common wrapper for a few potentially missing GNU and other programs. scriptversion=2025-06-18.21; # UTC # shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells # Copyright (C) 1996-2025 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autogen autoheader autom4te automake autoreconf bison flex help2man lex makeinfo perl yacc Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Report bugs to . GNU Automake home page: . General help using GNU software: ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing (GNU Automake) $scriptversion" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake|autoreconf) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; *) : ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" autoheader_deps="'acconfig.h'" automake_deps="'Makefile.am'" aclocal_deps="'acinclude.m4'" case $normalized_program in aclocal*) echo "You should only need it if you modified $aclocal_deps or" echo "$configure_deps." ;; autoconf*) echo "You should only need it if you modified $configure_deps." ;; autogen*) echo "You should only need it if you modified a '.def' or '.tpl' file." echo "You may want to install the GNU AutoGen package:" echo "<$gnu_software_URL/autogen/>" ;; autoheader*) echo "You should only need it if you modified $autoheader_deps or" echo "$configure_deps." ;; automake*) echo "You should only need it if you modified $automake_deps or" echo "$configure_deps." ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." ;; autoreconf*) echo "You should only need it if you modified $aclocal_deps or" echo "$automake_deps or $autoheader_deps or $automake_deps or" echo "$configure_deps." ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; perl*) echo "You should only need it to run GNU Autoconf, GNU Automake, " echo " assorted other tools, or if you modified a Perl source file." echo "You may want to install the Perl 5 language interpreter:" echo "<$perl_URL>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac program_details "$normalized_program" } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hkl-5.1.7/config/depcomp0000755000175000017500000005622415144640451014121 0ustar00piccapicca#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2025-06-18.21; # UTC # Copyright (C) 1999-2025 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . GNU Automake home page: . General help using GNU software: . EOF exit $? ;; -v | --v*) echo "depcomp (GNU Automake) $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interference from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. ## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hkl-5.1.7/config/test-driver0000755000175000017500000001214415144640451014733 0ustar00piccapicca#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2025-06-18.21; # UTC # Copyright (C) 2011-2025 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <. GNU Automake home page: . General help using GNU software: . END } test_name= # Used for reporting. log_file= # Where to save the output of the test script. trs_file= # Where to save the metadata of the test run. expect_failure=no color_tests=no collect_skipped_logs=yes enable_hard_errors=yes while test $# -gt 0; do case $1 in --help) print_usage; exit $?;; --version) echo "test-driver (GNU Automake) $scriptversion"; exit $?;; --test-name) test_name=$2; shift;; --log-file) log_file=$2; shift;; --trs-file) trs_file=$2; shift;; --color-tests) color_tests=$2; shift;; --collect-skipped-logs) collect_skipped_logs=$2; shift;; --expect-failure) expect_failure=$2; shift;; --enable-hard-errors) enable_hard_errors=$2; shift;; --) shift; break;; -*) usage_error "invalid option: '$1'";; *) break;; esac shift done missing_opts= test x"$test_name" = x && missing_opts="$missing_opts --test-name" test x"$log_file" = x && missing_opts="$missing_opts --log-file" test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" if test x"$missing_opts" != x; then usage_error "the following mandatory options are missing:$missing_opts" fi if test $# -eq 0; then usage_error "missing argument" fi if test $color_tests = yes; then # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. red='' # Red. grn='' # Green. lgn='' # Light green. blu='' # Blue. mgn='' # Magenta. std='' # No color. else red= grn= lgn= blu= mgn= std= fi do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' trap "st=129; $do_exit" 1 trap "st=130; $do_exit" 2 trap "st=141; $do_exit" 13 trap "st=143; $do_exit" 15 # Test script is run here. We create the file first, then append to it, # to ameliorate tests themselves also writing to the log file. Our tests # don't, but others can (automake bug#35762). : >"$log_file" "$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=$collect_skipped_logs;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hkl-5.1.7/config/install-sh0000755000175000017500000003612215144640450014542 0ustar00piccapicca#!/bin/sh # install - install a program, script, or datafile scriptversion=2025-06-18.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Report bugs to . GNU Automake home page: . General help using GNU software: ." while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibility with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hkl-5.1.7/config/config.guess0000755000175000017500000014306715144640450015065 0ustar00piccapicca#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2024-07-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still # use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #if defined(__ANDROID__) LIBC=android #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #elif defined(__LLVM_LIBC__) LIBC=llvm #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __ARM_EABI__ #ifdef __ARM_PCS_VFP ABI=eabihf #else ABI=eabi #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; esac fi GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:cos:*:*) GUESS=$UNAME_MACHINE-unknown-cos ;; kvx:mbr:*:*) GUESS=$UNAME_MACHINE-unknown-mbr ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; *:Ironclad:*:*) GUESS=$UNAME_MACHINE-unknown-ironclad ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif int main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hkl-5.1.7/config/config.sub0000755000175000017500000011544115144640450014523 0ustar00piccapicca#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale timestamp='2024-05-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in cloudabi*-eabi* \ | kfreebsd*-gnu* \ | knetbsd*-gnu* \ | kopensolaris*-gnu* \ | linux-* \ | managarm-* \ | netbsd*-eabi* \ | netbsd*-gnu* \ | nto-qnx* \ | os2-emx* \ | rtmk-nova* \ | storm-chaos* \ | uclinux-gnu* \ | uclinux-uclibc* \ | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) case $field1-$field2 in # Shorthands that happen to contain a single dash convex-c[12] | convex-c3[248]) basic_machine=$field2-convex basic_os= ;; decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Do not treat sunos as a manufacturer sun*os*) basic_machine=$field1 basic_os=$field2 ;; # Manufacturers 3100* \ | 32* \ | 3300* \ | 3600* \ | 7300* \ | acorn \ | altos* \ | apollo \ | apple \ | atari \ | att* \ | axis \ | be \ | bull \ | cbm \ | ccur \ | cisco \ | commodore \ | convergent* \ | convex* \ | cray \ | crds \ | dec* \ | delta* \ | dg \ | digital \ | dolphin \ | encore* \ | gould \ | harris \ | highlevel \ | hitachi* \ | hp \ | ibm* \ | intergraph \ | isi* \ | knuth \ | masscomp \ | microblaze* \ | mips* \ | motorola* \ | ncr* \ | news \ | next \ | ns \ | oki \ | omron* \ | pc533* \ | rebel \ | rom68k \ | rombug \ | semi \ | sequent* \ | siemens \ | sgi* \ | siemens \ | sim \ | sni \ | sony* \ | stratus \ | sun \ | sun[234]* \ | tektronix \ | tti* \ | ultra \ | unicom* \ | wec \ | winbond \ | wrs) basic_machine=$field1-$field2 basic_os= ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) cpu=m68k vendor=motorola ;; # This used to be dpx2*, but that gets the RS6000-based # DPX/20 and the x86-based DPX/2-100 wrong. See # https://oldskool.silicium.org/stations/bull_dpx20.htm # https://www.feb-patrimoine.com/english/bull_dpx2.htm # https://www.feb-patrimoine.com/english/unix_and_bull.htm dpx2 | dpx2[23]00 | dpx2[23]xx) cpu=m68k vendor=bull ;; dpx2100 | dpx21xx) cpu=i386 vendor=bull ;; dpx20) cpu=rs6000 vendor=bull ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x"$basic_os" != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. obj= case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) saved_IFS=$IFS IFS="-" read kernel os <&2 fi ;; *) echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 exit 1 ;; esac case $obj in aout* | coff* | elf* | pe*) ;; '') # empty is fine ;; *) echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 exit 1 ;; esac # Here we handle the constraint that a (synthetic) cpu and os are # valid only in combination with each other and nowhere else. case $cpu-$os in # The "javascript-unknown-ghcjs" triple is used by GHC; we # accept it here in order to tolerate that, but reject any # variations. javascript-ghcjs) ;; javascript-* | *-ghcjs) echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os-$obj in linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ | linux-mlibc*- | linux-musl*- | linux-newlib*- \ | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) ;; uclinux-uclibc*- | uclinux-gnu*- ) ;; managarm-mlibc*- | managarm-kernel*- ) ;; windows*-msvc*-) ;; -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel*- ) echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel*- ) echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; *-msvc*- ) echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; nto-qnx*-) ;; os2-emx-) ;; rtmk-nova-) ;; *-eabi*- | *-gnueabi*-) ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format ;; -*-) # Blank kernel with real OS is always fine. ;; --*) # Blank kernel and OS with real machine code file format is always fine. ;; *-*-*) echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hkl-5.1.7/config/ltmain.sh0000755000175000017500000122276515144640442014375 0ustar00piccapicca#! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 # libtool (GNU libtool) 2.5.4 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.5.4 Debian-2.5.4-9" package_revision=2.5.4 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2024-12-01.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # These NLS vars are set unconditionally (bootstrap issue #24). Unset those # in case the environment reset is needed later and the $save_* variant is not # defined (see the code above). LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" # require_check_ifs_backslash # --------------------------- # Check if we can use backslash as IFS='\' separator, and set # $check_ifs_backshlash_broken to ':' or 'false'. require_check_ifs_backslash=func_require_check_ifs_backslash func_require_check_ifs_backslash () { _G_save_IFS=$IFS IFS='\' _G_check_ifs_backshlash='a\\b' for _G_i in $_G_check_ifs_backshlash do case $_G_i in a) check_ifs_backshlash_broken=false ;; '') break ;; *) check_ifs_backshlash_broken=: break ;; esac done IFS=$_G_save_IFS require_check_ifs_backslash=: } ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # usable or anything else if it does not work. if test -z "$_G_HAVE_PLUSEQ_OP" && \ __PLUSEQ_TEST="a" && \ __PLUSEQ_TEST+=" b" 2>/dev/null && \ test "a b" = "$__PLUSEQ_TEST"; then _G_HAVE_PLUSEQ_OP=yes fi if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value returned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list in case some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd $require_check_ifs_backslash func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string # contains the shell wildcard characters. case $check_ifs_backshlash_broken$func_quote_portable_result in :*|*[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd _G_rc_run_hooks=false case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.5.4' # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd year=`date +%Y` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Originally written by Gordon Matzigkeit, 1996 (See AUTHORS for complete contributor listing) EOF exit $? } # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information --finish use operation '--mode=finish' --mode=MODE use operation mode MODE --no-finish don't update shared library cache --no-quiet, --no-silent print default informational messages --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --reorder-cache=DIRS reorder shared library cache for preferred DIRS --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.5.4-9 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_reorder_cache=false opt_preserve_dup_deps=false opt_quiet=false opt_finishing=true opt_warning= nonopt= preserve_args= _G_rc_lt_options_prep=: _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument '$1' for $_G_opt" exit_cmd=exit ;; esac shift ;; --no-finish) opt_finishing=false func_append preserve_args " $_G_opt" ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --reorder-cache) opt_reorder_cache=true shared_lib_dirs=$1 if test -n "$shared_lib_dirs"; then case $1 in # Must begin with /: /*) ;; # Catch anything else as an error (relative paths) *) func_error "invalid argument '$1' for $_G_opt" func_error "absolute paths are required for $_G_opt" exit_cmd=exit ;; esac fi shift ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { if $opt_warning; then $debug_cmd $warning_func ${1+"$@"} fi } # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host_os in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, windows, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. Assumes ARG has no leading or trailing path separator # characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep # func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER # Replaces a delimiter for a given path. func_convert_delimited_path () { converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` } # end func_convert_delimited_path ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_reorder_shared_lib_cache DIRS # Reorder the shared library cache by unconfiguring previous shared library cache # and configuring preferred search directories before previous search directories. # Previous shared library cache: /usr/lib /usr/local/lib # Preferred search directories: /tmp/testing # Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib func_reorder_shared_lib_cache () { $debug_cmd case $host_os in openbsd*) get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' save_search_directories=$converted_path func_convert_delimited_path "$1" ':' '\ ' # Ensure directories exist for dir in $converted_path; do # Ensure each directory is an absolute path case $dir in /*) ;; *) func_error "Directory '$dir' is not an absolute path" exit $EXIT_FAILURE ;; esac # Ensure no trailing slashes func_stripname '' '/' "$dir" dir=$func_stripname_result if test -d "$dir"; then if test -n "$preferred_search_directories"; then preferred_search_directories="$preferred_search_directories $dir" else preferred_search_directories=$dir fi else func_error "Directory '$dir' does not exist" exit $EXIT_FAILURE fi done PATH="$PATH:/sbin" ldconfig -U $save_search_directories PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' reordered_search_directories=$converted_path $ECHO "Original: $save_search_directories" $ECHO "Reordered: $reordered_search_directories" exit $EXIT_SUCCESS ;; *) func_error "--reorder-cache is not supported for host_os=$host_os." exit $EXIT_FAILURE ;; esac } # end func_reorder_shared_lib_cache # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wa,FLAG -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # If option '--reorder-cache', reorder the shared library cache and exit. if $opt_reorder_cache; then func_reorder_shared_lib_cache $shared_lib_dirs fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done if test "false" = "$opt_finishing"; then echo echo "NOTE: finish_cmds were not executed during testing, so you must" echo "manually run ldconfig to add a given test directory, LIBDIR, to" echo "the search path for generated executables." fi echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Strip any trailing slash from the destination. func_stripname '' '/' "$libdir" destlibdir=$func_stripname_result func_stripname '' '/' "$destdir" s_destdir=$func_stripname_result # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw* | *windows*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 case $host in i[3456]86-*-mingw32*) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" ;; *) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" ;; esac } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw/windows # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw/windows-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw/windows when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #if defined _WIN32 && !defined __GNUC__ # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ _CRTIMP int __cdecl _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw* | windows*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= compile_rpath_tail= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= temp_rpath_tail= thread_safe=no vinfo= vinfo_number=no weak_libs= rpath_arg= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "argument to -rpath is not absolute: $arg" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xassembler) func_append compiler_flags " -Xassembler $qarg" prev= func_append compile_command " -Xassembler $qarg" func_append finalize_command " -Xassembler $qarg" continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. # -q

?>4hy>Ap)f>Ap ><>4hf>Ap ><>L7yQ8<>4hh} eAp =ԍthq,eAp /Ap>'=ԍthq,RԀthqZ#mthqUZ#h} mthqUvApU]ApmthqU]ApRԀthqmthqU-0>F>647>Fr>Ƃ4>FXx>3=FZ/F>G>Fr+>s>F:>C=FCX>.=FBS>+=FU>YFi>3F~$<ZYFi>Z3Fk>3F~$FGw>647>Fr>-0>F>ec>F,s=3F~$F~$<3=FZ/F>3F~$Fr+>h} Z#Z>#Z>#o}> h} o}>1{jh} h} o}> o}>o}>^>1{jo}>3F~$<&=FA`>L=FC f>L=FC f>Z3F~$F~$<3F~$<^>jk>F~$<3=FZ/F>.=FBS>C=FCX>C=FCX>3F~$<3=FZ/F>ec>F,s=Q>Fמ=09>FGw>09>FGw>3F~$F,s=3QFn=UcF,s=jkF~$4FXx>3QFn=3QFn=3F~$CFCX>*ǽFU>sF:>sF:>3F~$YFi>wLFC f>CFCX>CFCX>3F~$G>Fr+>3F~$<09>FGw>09>FGw>-0>F>G>Fr+>L*xI֊}kp=J聾R^p=JL>-p=J>R^p=J#|>ƅkp=J>R^p=JL>-p=J>R^xI聾R^xIL*xI聾R^p=J聾R^p=J>R^p=J聾R^xI聾R^xI>R^p=J>R^xI }ƅk;…#|>ƅk…#|>ƅkp=J#|>ƅkp=J֊}kp=J }ƅk;…#|>ƅkp=J>R^p=J聾R^p=J聾R^p=J֊}kp=J#|>ƅkp=J`V>H?…DE?…@E?p=J@E?p=J[H?p=J`V>H?…`=H?…_H?…_H?p=J_H?p=J`=+ H?p=J`=H?…Q>#@E?…`=H?…`=+ H?p=J`=+ H?p=J>sAE?p=JQ>#@E?…:d>Υ@?…Q>#@E?…>sAE?p=J>sAE?p=Jڵd>ç@?p=J:d>Υ@?…_H?p=J_H?…`V>H?…`V>H?…[H?p=J_H?p=Jd@?…d@?p=J@E?p=J@E?p=JDE?…d@?…d@?p=Jd@?…g9?…g9?…&z9?p=Jd@?p=J:d>Υ@?…ڵd>ç@?p=J>g9?xI>g9?xI>9?…:d>Υ@?…>ռp=J>ռʡ><ʡ><ʡ>ռp=J'N>->G>P(>p=Jx >=p=Jx >=p=J >m=ʡ'N>-> >؟ʡ( >؟p=JL>-p=JL>-p=JL>* >؟ʡ( ݟ=ʡ( ݟ=p=JK&0>p=JK&0>p=J'N->ʡ( ݟ=ʡL*ʡL*xI( ؟p=J( ؟p=Jw ݟʡL*ʡռʡռp=J->>9?…>g9?xI>g9?xIG>P(>p=J'N>->><ʡ >m=ʡx >=p=Jx >=p=J><ʡ>ռʡ>ռp=J( >؟p=J( >؟p=J >؟ʡ>ռʡL>*L>-p=J#|>ƅkp=J#|>ƅkp=J#|>ƅk…L>*g9?…'N->ʡK&0>p=JK&0>p=J&z9?p=Jg9?…( ݟ=p=J( ݟ=ʡ<ʡ<ʡ*#|>ƅk… }ƅk;… }ƅk;…L*ʡL>* >؟ʡL>*L*ʡL*ʡw ݟʡ >؟ʡ>ռʡ >؟ʡw ݟʡw ݟʡռʡ>ռʡ>ռʡռʡ<ʡ<ʡ><ʡ>ռʡ><ʡ<ʡ( ݟ=ʡ( ݟ=ʡ >m=ʡ><ʡ >m=ʡ( ݟ=ʡ'N->ʡ'N->ʡ'N>-> >m=ʡ89?…'N>->'N->ʡg9?…89?…'N->ʡ89?…>9?…'N>->d@?…89?…g9?…DE?…89?…d@?…`V>H?…89?…DE?…_H?…89?…`V>H?…`=H?…89?…_H?…Q>#@E?…89?…`=H?…:d>Υ@?…89?…Q>#@E?…>9?…89?…:d>Υ@?…L>-p=JL*xI聾R^xI聾R^xI>R^xIL>-p=J( >؟p=J( ؟p=JL*xIL*xIL>-p=J( >؟p=J>ռp=Jռp=J( ؟p=J( ؟p=J( >؟p=J>ռp=J>ռp=J>ռp=J>=p=J( ݟ=p=J( ݟ=p=J=p=JG>P(>p=JK&0>p=JK&0>p=J( ݟ=p=Jx >=p=Jx9 9?"IK&0>p=JG>P(>p=J>g9?xIx9 9?"IG>P(>p=Jx9 9?"I&z9?p=JK&0>p=Jd@?p=J&z9?p=Jx9 9?"I@E?p=Jd@?p=Jx9 9?"I[H?p=J@E?p=Jx9 9?"I_H?p=J[H?p=Jx9 9?"I`=+ H?p=J_H?p=Jx9 9?"I>sAE?p=J`=+ H?p=Jx9 9?"Iڵd>ç@?p=J>sAE?p=Jx9 9?"I>g9?xIڵd>ç@?p=Jx9 9?"IfP>d\BfP>dZDfP>hmZD+1>dZD+1>d\B+1>hmZD"1d\B"1dZD"1hmZD[PdZD[Pd\B[PhmZDZPthq'1H"1thq'1H"1hm'1H"1hm'1H[Phm'1HZPthq'1H[Phm'1H"1hm'1H"1hmZD"1hmZD[PhmZD[Phm'1H[PhmZD"1hmZD"1dZD"1dZD[PdZD[PhmZD[PdZD"1dZD"1d\B"1d\B[Pd\B[PdZD[Pd\B"1d\B"1Il."1Il.[PIl.[Pd\BZPthq.[PIl."1Il."1Il."1thq.ZPthq.ZPthq'1HZPthq."1thq."1thq."1thq'1HZPthq'1H[PhmZDZPthq.ZPthq'1HZPthq'1H[Phm'1H[PhmZD[PIl.ZPthq.[PhmZD[PhmZD[Pd\B[PIl."1hm'1H"1thq'1H"1thq."1thq."1hmZD"1hm'1H"1hmZD"1thq."1Il."1Il."1d\B"1hmZD+1>thq'1HgP>thq'1HfP>hm'1HfP>hm'1H+1>hm'1H+1>thq'1H+1>thq'1H+1>thq.gP>thq.gP>thq.gP>thq'1H+1>thq'1H+1>d\BfP>d\BfP>Il.fP>Il.+1>Il.+1>d\B+1>dZDfP>dZDfP>d\BfP>d\B+1>d\B+1>dZD+1>hmZDfP>hmZDfP>dZDfP>dZD+1>dZD+1>hmZD+1>hm'1HfP>hm'1HfP>hmZDfP>hmZD+1>hmZD+1>hm'1H+1>thq'1H+1>hm'1H+1>hmZD+1>hmZD+1>thq.+1>thq'1H+1>Il.+1>thq.+1>hmZD+1>hmZD+1>d\B+1>Il.fP>hm'1HgP>thq'1HgP>thq.gP>thq.fP>hmZDfP>hm'1HfP>hmZDgP>thq.fP>Il.fP>Il.fP>d\BfP>hmZD+1>thq.+1>Il.fP>Il.fP>Il.gP>thq.+1>thq.55?i?iiiii5555?55?i?iiiii5555?i?ii?iiiiiiii?i55iiiiii555555?55?i?ii?iii?55?55?55?i?ii?iii?55?55iiiiii5555i?ii?iiiiiiii?i55?i?iiiii5555?55?i?iii  5555?55?55?i?ii?iii?55?55iiiiii5555i?ii?iiiiiiii?i55?i?iiiii5555?55?i?iiiii5555?55?i?iiiii5555?55?i?iiiii5555?i?ii?iiiiiiii?i55iiiiii555555?55?i?ii?iii?55?ii?ii?i?i?i?i?i?i?ii?iii?ii?ii?iiiiii?i?i?i?i?ii?iii?ii??ii?ii??ii?i?iiiii?ii?ii??ii?i?iiiii?ii?ii??ii?i?iiiii?ii?ii??ii?i?iiiii?i?i?i?i?i?ii?iii?ii??iii?ii?ii?iiiiiii?ii?i?i?i?i?i?i?ii?iiiiii?ii?ii?iiii?ii?iiiiiiii?  ?  ?  ?iiiiii ? ? ? ? ? ? ? ? ? ? ? ?i?ii?ii?i?ii?ii?ii? ? ?? ? ?? ? ??i?i?i?i?i?ii?ii?ii?i?i?i?i?i?i?iiiiiiii?i?i?i?i?i?i??i?i??i?i??i??ii?ii?iiii?ii?ii?i?i?i?i?i?i???????5?55?55?55?55?55?55?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55555555555555?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?55555555555555555555555555?55?55?55?55?55?55?55?55?55?55?55???????5?55?55?55?55?55?55?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55555555555555?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?55?55555555555555555555555555?55?55?55?55?55?55?55?55?55?55?55???????????????????0?"t8?0?"t8?0?"t8?N>ĸsq?N>ĸsq?N>ĸsq?8Q98Q98Q9???@+?ʃE2?@+?ʃE2?@+?ʃE2?u?pu?pu?p_g?y>_g?y>_g?y>&\ՅES?&\ՅES?&\ՅES?uu q?>uu q?>uu q?>Sgz)->Sgz)->Sgz)->!?f<3{>!?f<3{>!?f<3{> ?i<> ?i<> ?i<>>td>td>td#г>c<2?#г>c<2?#г>c<2?^>^<,$?^>^<,$?^>^<,$?#гc<2?#гc<2?#гc<2?tdtdtd i<> i<> i<>!f<3{>!f<3{>!f<3{>x/cex/cex/cex hx hx hx?/cex?/cex?/ce^x?^h^x?^h^x?^hѸѸѸw}?Fw}?Fw}?Fw}?Fw}?Fw}?Fl?þl?þl?þl?þl?þl?þTK?TK?TK?*K?*K?*K??K?K?K?TK?TK?TK>l>l>l>l>l>lF>w}F>w}F>w}F>w}F>w}F>w} =wa~? =wa~? =wa~?=f~?=f~?=f~?m>q?m>q?m>q?(#?X?(#?X?(#?X?5?5?5?5?5?5?X?(#?X?(#?X?(#?q?>q?>q?>e~?j=e~?j=e~?j=w}?Fw}?Fw}?Fw}?Fw}?Fw}?Fl?þl?þl?þl?þl?þl?þK?K?K??K?K?K>чl>чl>чl>}>}>}??????(}R>(}R>(}R>l>l>l>K?K?K?TK?TK?TK? ľ}l? ľ}l? ľ}l?R(}?R(}?R(}?R(}?R(}?R(}?je~je~je~F2b~F2b~F2b~qqqmqmqmq(#X(#X(#X(#X(#X(#X555555555555X(#X(#X(#X(#X(#X(#qqqqqqe~je~je~je~je~je~j???w}Fw}Fw}F4}4}4}4}4}4}þlþlþl2K2K2KIKIKIKlþlþlþQ} A Q} A Q} A 8Q98Q98Q9Q9Q9Q9Q9Q9Q9??????þlþlþl?????????????8?8?8??????????Ѹ?Ѹ?Ѹ????????????????????????xaerxaerxaer?Ѹ?Ѹ?Ѹ????????????????????????????Ѹ?Ѹ?Ѹ????????????????????????????????????????????????????8?8?8???????8?8?8????????????????????????KKKIKIKIK}l ľ}l ľ}l ľþ.l?þ.l?þ.l?K?K?K?K?K?K?l>l>l>(}R>(}R>(}R>???q?m>q?m>q?m>X?(#?X?(#?X?(#?5?5?5?5?5?5?(#?X?(#?X?(#?X?>q?>q?>q?K?K?K?e~?j=e~?j=e~?j=???????????????????????????????????????????????????(x?zeq(x?zeq(x?zeq/'\!tdr?/'\!tdr?/'\!tdr?????????????????????????????????????????????????????????????????????????????????????????Q??Q9??????????????????????????????????????????????????????????????????????????????????????????????????????ƞzi?ƞzi?ƞzi?^^<,$?^^<,$?^^<,$?-n?ht20>-n?ht20>-n?ht20>%,n?s;>%,n?s;>%,n?s;>=εs~?=εs~?=εs~?$=t~?$=t~?$=t~????ǯ+?ǯ+?ǯ+?$޽t~?$޽t~?$޽t~?޽εs~?޽εs~?޽εs~? tvZ? tvZ? tvZ? tvZ? tvZ? tvZ?yy?_eyy?_eyy?_eay?>Ugay?>Ugay?>Ugx?_zeҥx?_zeҥx?_zeҥęx?gOqęx?gOqęx?gOqv?f6>v?f6>v?f6>u? q>u? q>u? q>x?7gsx?7gsx?7gsx?V hxrx?V hxrx?V hxr x?cvdr x?cvdr x?cvdrx?WdҚx?WdҚx?WdҚZg?z>Zg?z>Zg?z>j?]>j?]>j?]>y?gϊ0=y?gϊ0=y?gϊ0=y? hs"0=y? hs"0=y? hs"0=B+?!?k!?k!?b!?b!?b^6?M!,?^6?M!,?^6?M!,?N?? ?N?? ?N?? ?&?ij<>&?ij<>&?ij<>&?ij<>&?ij<>&?ij<>yT?t ?yT?t ?yT?t ?HwT?%sj ?HwT?%sj ?HwT?%sj ?]3?`)?]3?`)?]3?`)?,?]c4?,?]c4?,?]c4????yT?t ?yT?t ?yT?t ?O>\O>\O>\>b>b>b?bH9M??bH9M??bH9M?4?ㅾ}:S?4?ㅾ}:S?4?ㅾ}:S?0?!t8?0?!t8?0?!t8?V0?tʘ8?V0?tʘ8?V0?tʘ8?????4zJ??4zJ??4zJ?I޳>d<,?I޳>d<,?I޳>d<,?hϳ>]i]i]iEb?>Eb?>Eb??K@~V??K@~V??K@~V??v"ttZ??v"ttZ??v"ttZ?? tvZ?? tvZ?? tvZ?a>Z~j?a>Z~j?a>Z~j?9>=Ef?9>=Ef?9>=Ef?&&>y1k?&&>y1k?&&>y1k??8?8?8^>c<$$?^>c<$$?^>c<$$?^>8j<$?^>8j<$?^>8j<$?qZ>ösq?qZ>ösq?qZ>ösq?>>[tlq?>>[tlq?>>[tlq?6>6І׾b?6>6І׾b?6>6І׾b?ƞ>zi?ƞ>zi?ƞ>zi?=bSu?=bSu?=bSu?CK>B($v?CK>B($v?CK>B($v?=ao2b2btdtdtd,z]4?,z]4?,z]4?]3`)?]3`)?]3`)?LzTs ?LzTs ?LzTs ?PT8x ?PT8x ?PT8x ? l6 N ,? l6 N ,? l6 N ,?N? ?N? ?N? ?Wq<>Wq<>Wq<> i<> i<> i<>C+nxsG@>C+nxsG@>C+nxsG@>)n6sK>)n6sK>)n6sK>UT8z?UT8z?UT8z?' N驀 ?' N驀 ?' N驀 ?!k!k!k!b!b!bj\ >j\ >j\ >T`gzd>T`gzd>T`gzd>vdfɕ>vdfɕ>vdfɕ>ub qX>ub qX>ub qX>x!2s+Q;x!2s+Q;x!2s+Q;[y4g[y4g[y4gyy_eyy_eyy_eExoq=Exoq=Exoq=-"yggv.=-"yggv.=-"yggv.=d y g.=d y g.=d y g.=LytU+2=LytU+2=LytU+2=?NrY2=?NrY2=?NrY2= |si> |si> |si>|ms2r>|ms2r>|ms2r>2L?Vu+2=2L?Vu+2=2L?Vu+2=2L?Vu+2=2L?Vu+2=2L?Vu+2=|?zs͋>|?zs͋>|?zs͋>|?tq>|?tq>|?tq>]*; >]*; >]*; >7+ ; >7+ ; >7+ ; >P+Ed<=P+Ed<=P+Ed<=J+k<̽=J+k<̽=J+k<̽=]*?; >]*?; >]*?; >0+?;J >0+?;J >0+?;J > y?Hgu.= y?Hgu.= y?Hgu.= y?Hgu.= y?Hgu.= y?Hgu.=x_zeҥx_zeҥx_zeҥSxghpSxghpSxghp xcvdr xcvdr xcvdrxWdҚxWdҚxWdҚxV hxrxV hxrxV hxręxgOqęxgOqęxgOqѸѸѸѸѸѸtY;tY;tY;QQQtY;tY;tY;tY;tY;tY;888(< D;?(< D;?(< D;????&v?&v?&v?&v&v&v??????U]_}?8U]_}?8U]_}?8ɢ\}?ɢ\}?ɢ\}?D=t?D=t?D=t?D=t?D=t?D=t?U}?ѸU}?ѸU}?ѸU}?ѸU}?ѸU}?Ѹht> x?Ѹht> x?Ѹht> x?Ѹs>x?6Ѹs>x?6Ѹs>x?6ѸF?F?F?E?E?E?sx?5Q9sx?5Q9sx?5Q9)sx?FQ9)sx?FQ9)sx?FQ9q?Q9q?Q9q?Q9|vq?9|vq?9|vq?9M>q?ѸM>q?ѸM>q?Ѹ٨>q?٨>q?٨>q???????z?B\>8z?B\>8z?B\>8z?\>z?\>z?\># z?6[28# z?6[28# z?6[28Vz?)\Vz?)\Vz?)\z9[>z9[>z9[> z2[>8 z2[>8 z2[>8# z6[# z6[# z6[ez;[ez;[ez;[888%v?H>%v?H>%v?H>%v?H>zQ9%v?H>zQ9%v?H>zQ9j~?=j~?=j~?=~?1=~?1=~?1=}~?=޽}~?=޽}~?=޽~?X,ݽy8~?X,ݽy8~?X,ݽy8%v?H%v?H%v?H%v?H%v?H%v?Hv+>Y8v+>Y8v+>Y8év>9év>9év>9~e=~e=~e=҂~=58҂~=58҂~=58:~ݽ:~ݽ:~ݽ~X,ݽ~X,ݽ~X,ݽv9v9v9vㇾvㇾvㇾHI9):HI9):HI9):8:8:8:̶Q9DX̶Q9DX̶Q9DX̶Q9DX̶Q9DX̶Q9DX̶Q9DX;̶Q9DX;̶Q9DX;̶Q9DX;̶Q9DX;̶Q9DX;9^9^9^t޺t޺t޺--- ;K;? ;K;? ;K;? ;K;? ;K;? ;K;?K:4<?K:4<?K:4<?K:4<?K:4<?K:4<?????????????????????????#?#?#?գSѻ?գSѻ?գSѻ?y֣:?y֣:?y֣:?|֣Th<?|֣Th<?|֣Th<?ud<>?ud<>?ud<>?GXS< ?GXS< ?GXS< ?{H@<?{H@<?{H@<?{H:@<?{H:@<?{H:@<?GX;S< ?GX;S< ?GX;S< ?u;d<>?u;d<>?u;d<>?vգr=~?vգr=~?vգr=~???????????????????n?з>n?з>n?з>n?з>n?з>n?з>??????????????????n?з>n?з>n?з>n?з>n?з>n?з>??????????????????????????????  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]m=w-$b="U=w-ᾊd=jp=w-=TAw-=+w-U0=Ep1w-Z=Ep1w-Z=+w-U0=[Uټw-U=[Uټw-U=+w-U0=]w-ᾄ=[Uټw-U=]w-ᾄ=2w-ᾈF="U=w-ᾊd===w-x=jp=w-=jp=w-W{=w-]Ku=w-ᾑ|jp=w-Wu=w-ᾑ|p=w-ᾤڧp=w-ᾤڧu=w-ᾑ|TA=w-Ᾱǒp=w-ᾤڧTA=w-ᾹǒYp1=w-ᾈ$Yp1=w-ᾈ$TA=w-Ᾱǒ?=w-Yp1=w-ᾈ$?=w-Db_)۾/=:żA߾O>:żA߾O>Db_)۾/=DbA߾/==A߾ ==_)۾ ==A߾:X==A߾:X==_)۾ ==_)۾:X==A߾:X==_)۾:X=:żA߾O>:żA߾O>=_)۾:X=:ż_)۾O>|z=_)۾,Ԛ==_)۾ =|z=A߾,Ԛ=|z=A߾,Ԛ==_)۾ ==A߾ =|z=_)۾,Ԛ=|z=A߾,Ԛ==A߾ʉ=|z=_)۾,Ԛ==A߾ʉ==_)۾ʉ==_)۾ʉ==A߾ʉ==A߾8==A߾8==_)۾8==_)۾ʉ=I>A߾ܝI>_)۾ܝ=A߾8==A߾8=I>_)۾ܝ=_)۾8=okA߾ok_)۾;_)۾rI>_)۾ܝI>A߾ܝ=_)۾=_)۾I>A߾ܝ=A߾=_)۾=A߾=A߾Mg=_)۾=A߾Mg=_)۾Mg=_)۾Mg=A߾Mg=A߾W =_)۾Mg=A߾W =_)۾W =_)۾W =A߾W =A߾ᴽ=_)۾W =A߾ᴽ =_)۾ᴽ =_)۾ᴽ =A߾ᴽ=A߾`vϽ =_)۾ᴽ=A߾`vϽ=_)۾`vϽ=_)۾`vϽ=A߾`vϽY;|=A߾P6彫=_)۾`vϽY;|=A߾P6Y;|=_)۾P6Y;|=_)۾P6Y;|=A߾P62=_)۾2=_)۾Y;|=A߾P62=A߾2=_)۾2=A߾<_)۾<_)۾2=A߾)K<_)۾=uݾ={ݾ*=mݾaÓ=өqݾ:ݾaSb<ݾ½Sb<ݾ½:ݾa<ݾݾ<ުݾF=_)۾Vq,1=ݾ2;2>=_)۾Vq2>=ݾVq2>=ݾVq2>=_)۾Vq=ݾ=ݾ2>=_)۾Vq=_)۾=ݾ=_)۾A=_)۾\B=ݾA=_)۾\BA=ݾ\BA=ݾ\BA=_)۾\B=ݾ |=ݾ |A=_)۾\B=_)۾ |=ݾ |=_)۾ |n{=ݾWx=_)۾ |n{=_)۾Wxn{=ݾWxn{=ݾWxn{=_)۾Wx+Y@=_)۾zn{=ݾWx+Y@=_)۾z+Y@=ݾz+Y@=ݾz+Y@=_)۾z"<ݾй+Y@=_)۾z"<_)۾й"<ݾй"<ݾй"<_)۾йSb<ݾ½Sb<ݾ½"<_)۾йRb<_)۾½Sb<ݾ½Rb<_)۾½o_)۾ý\_)۾goݾýo_)۾ýo_)۾ýoݾýSb<ݾ½8_)۾y\ݾg\_)۾g\_)۾g\ݾgoݾý%Z_)۾̣8ݾy8_)۾y8_)۾y8ݾy\ݾgA_)۾Aݾ%Z_)۾̣%Z_)۾̣Aݾ%Zݾ̣%Z_)۾̣%Zݾ̣8ݾyȒ_)۾lʼ@ݾ9(@_)۾9(@_)۾9(@ݾ9(:ݾ3e@_)۾9(:ݾ3e:_)۾3e:_)۾3e:ݾ3eAݾ:_)۾3eAݾA_)۾A__)۾?=ݾVq=ݾ=ݾ8_)۾333="_)۾ vC=#_)۾$=ok_)۾o_)۾ý;_)۾rʽ_)۾3Y._)۾c:_)۾3e=_)۾8==_)۾P<=_)۾Ŭ=,1=_)۾2;=_)۾P<=_)۾8==_)۾Mg=_)۾W A=_)۾\B=_)۾=_)۾Mg=_)۾=_)۾MgA=_)۾\B=_)۾I>_)۾ܝ=_)۾2>=_)۾Vq=_)۾=_)۾2>=_)۾Vq2>=_)۾Vq,1=_)۾2;I>_)۾ܝ,1=_)۾2;=_)۾8=I>_)۾ܝQ}_)۾ýʽ_)۾3A_)۾ʽ_)۾3:_)۾3eA_)۾=_)۾ | =_)۾ᴽn{=_)۾Wx =_)۾ᴽ=_)۾`vϽn{=_)۾Wx,U_)۾ 8_)۾y _)۾8_)۾y\_)۾g _)۾K_)۾۽%Z_)۾̣,U_)۾ %Z_)۾̣8_)۾y,U_)۾ =_)۾ᴽ=_)۾ |=_)۾W =_)۾ |A=_)۾\B=_)۾W K_)۾۽Q}_)۾ý%Z_)۾̣Q}_)۾ýA_)۾%Z_)۾̣ _)۾\_)۾gok_)۾\_)۾go_)۾ýok_)۾=_)۾ =|z=_)۾,Ԛ=Fw=_)۾֋=|z=_)۾,Ԛ=2ŕ=_)۾#=Fw=_)۾֋=:ż_)۾O>\ŧ_)۾=Db_)۾/=\ŧ_)۾=_)۾U=Db_)۾/= <_)۾=)K<_)۾==_)۾:X=)K<_)۾=:ż_)۾O>=_)۾:X==_)۾ =;=_)۾==_)۾:X=;=_)۾= <_)۾==_)۾:X=2ŕ=_)۾#=|z=_)۾,Ԛ= =_)۾X=|z=_)۾,Ԛ==_)۾ʉ= =_)۾X=n{=_)۾Wx=_)۾`vϽ+Y@=_)۾z=_)۾`vϽY;|=_)۾P6+Y@=_)۾z _)۾Ș=i__)۾FZ=Db_)۾/=i__)۾FZ=-r_)۾=Db_)۾/=m_)۾aÓ=_)۾lC=i__)۾FZ=_)۾lC=-r_)۾=i__)۾FZ=֢_)۾!q=н_)۾}=m_)۾aÓ=н_)۾}=_)۾lC=m_)۾aÓ=_)۾333=#_)۾$=֢_)۾!q=#_)۾$=н_)۾}=֢_)۾!q==_)۾8==_)۾Ŭ==_)۾ʉ==_)۾Ŭ= =_)۾X==_)۾ʉ=_)۾&?ǽ_)۾nF_)۾?ǽ_)۾nȒ_)۾lʼF_)۾_)۾&d_)۾I=ݾVq課=ݾ2>=ݾVq=ݾ8課=ݾ=ݾP<,1=ݾ2;'=ݾ;<,1=ݾ2;課=ݾ'=ݾ;<2ŕ=ݾ#= =ݾX="U=ݾd= =ݾX=+=ݾe,="U=ݾd=Fw=ݾ֋=2ŕ=ݾ#=]m=ݾ$b=2ŕ=ݾ#="U=ݾd=]m=ݾ$b=]m=ݾ$b=7=ݾ=Fw=ݾ֋=7=ݾ=;=ݾ=Fw=ݾ֋=+Y@=ݾzTA=ݾǒn{=ݾWxTA=ݾǒu=ݾ|n{=ݾWx"<ݾй?=ݾ+Y@=ݾz?=ݾTA=ݾǒ+Y@=ݾzSb<ݾ½<ݾ"<ݾй<ݾ?=ݾ"<ݾйݾU=[ŧݾ=^ݾ=[ŧݾ=7񰺻ݾF=^ݾ=7ݾ5%Zݾ̣\mݾ+%Zݾ̣Aݾ\mݾ+mݾaÓ=i_ݾFZ=uݾ=i_ݾFZ=TAݾ=uݾ=qݾ[=ɠݾ"=֢ݾ!q=ɠݾ"=ݾ333=֢ݾ!q=@ݾ9(+ݾw:ݾ3e+ݾwUݾ<,T:ݾ3eȒݾlʼԔݾa@ݾ9(Ԕݾa+ݾw@ݾ9(?ǽݾn'ݾȒݾlʼ'ݾԔݾaȒݾlʼ'=ݾ;<ޔ=ݾl&<=ݾP<ޔ=ݾl&<=ݾŬ==ݾP<ޔ=ݾl&<+=ݾe,==ݾŬ=+=ݾe,= =ݾX==ݾŬ=n{=ݾWxu=ݾ|=ݾ |u=ݾ|{=ݾ]K=ݾ |:ݾ3eUݾ<,TAݾUݾ<,T\mݾ+Aݾ ݾȘ=ݾU=+ݾU0=ݾU=^ݾ=+ݾU0=֢ݾ!q={ݾ*=qݾ[={ݾ*=uݾ=qݾ[=i_ݾFZ= ݾȘ=TAݾ= ݾȘ=+ݾU0=TAݾ==ݾ8=ݾӠ=ݾ=ݾA=ݾ\BӠ=ݾӠ=ݾA=ݾ\B{=ݾ]KA=ݾ\B=ݾ |{=ݾ]K%Zݾ̣7ݾ58ݾy7ݾ5{ݾ8ݾy8ݾy{ݾ\ݾg{ݾөqݾ\ݾg\ݾgөqݾoݾýөqݾSb<ݾ½oݾýɠݾ"=ݾ<ݾ333=ݾA߾ܝ=A߾=3<=A߾ |z=A߾,Ԛ=jp=A߾===A߾x=VBA߾w9=#A߾$="A߾ vC=\UټA߾U=DbA߾/=Ep1A߾Z=:żA߾O>DbA߾/=\UټA߾U=NA߾7=:żA߾O>\UټA߾U=KONA߾7=dA߾<ʽA߾<"A߾ vC=ʽA߾A߾ܝ=A߾8=`B=A߾w9==A߾ʉ===A߾x==A߾ʉ=|z=A߾,Ԛ===A߾x==A߾<=A߾8=`B=A߾w9==A߾8==A߾ʉ=`B=A߾w9==A߾I>A߾ܝ=A߾"ȼI>A߾ܝ=A߾ =A߾"ȼ=A߾Mg=A߾`B=A߾)?)=A߾=A߾"ȼ`B=A߾)?)=A߾W =A߾Mg==A߾h=A߾Mg`B=A߾)?)==A߾hjp=A߾W =A߾ᴽ==A߾h =A߾ᴽ=A߾W ==A߾hp=A߾ڧ=A߾`vϽjp=A߾W=A߾`vϽ =A߾ᴽjp=A߾WYp1=A߾$Y;|=A߾P6p=A߾ڧY;|=A߾P6彫=A߾`vϽp=A߾ڧ;A߾rKOy"=t<>y=X="=X="=t<>y=t<= ><>y><><>y> >>y >>"=>y>>y>"=">y=t<=">y="=t<>y=">y=t<=>y >>y><>y><>y>>y>">y=">y=Y=>y"=<>y>Y=>y"=">y=t<>y=X="=t<=<><>t<="=<>"= > >"=><>Y=>y"=X="=Y=>y"=<><>y> >>>y >>y >>>y>&=_ؽ&=ş_ؽˊ=ˊ=齚&=ş_ؽˊ=ş齝9]=ş'9]='ˊ=şˊ=ş齝9]='ˊ==B==şB=\*=PŒ=\*=PŒ==şB=]*=şPŒ=\*=PŒ=]*=şPŒ=wA=O`=]*=şPŒ=xA=şO`=wA=O`=^2^ş2SşN^2SşNTNWΥY=VΥşY=\)=\)=VΥşY=[)ş=\)=[)ş=9]0/>9]0/>[)ş=9]ş0/>9]=ş'ݽş4 ݽ4 9]=ş'ݽ4 9]='=şB==B=9]0/>=şB=9]0/>9]ş0/>VΥşY=WΥY=TNTNSşNVΥşY=xA=şO`=&=ş_ؽwA=O`=&=ş_ؽ&=_ؽwA=O`=ݽş4 ^ş2^2ݽş4 ^2ݽ4 \*=PŒ=\)=9]0/>\*=PŒ=9]0/>=B=wA=O`=WΥY=\)=wA=O`=\)=\*=PŒ=&=_ؽˊ=^2&=_ؽ^2TNݽ4 ^2ˊ=ݽ4 ˊ=齝9]='WΥY=wA=O`=&=_ؽWΥY=&=_ؽTN]*=şPŒ==şB=9]ş0/>]*=şPŒ=9]ş0/>[)ş=xA=şO`=]*=şPŒ=[)ş=xA=şO`=[)ş=VΥşY=xA=şO`=VΥşY=&=ş_ؽVΥşY=SşN&=ş_ؽ&=ş_ؽSşN^ş2&=ş_ؽ^ş2ˊ=şˊ=ş^ş2ݽş4 ˊ=şݽş4 9]=ş'Õ=;"%=;|&>;D >;㈵;nM=;<>;Vh=ؼ7=ؼ7=S7A>h= 7x=ؼ7= 7x=$オ7ȵ=.G7~V71;i>7q<.G7~i>7q< 7~=.G7~ 7~=a77=.G7~a77=ؼ7=$Ǻȵ= Ǻx=SǺA>h=-؍Ǻ{=.GǺ~ͽǺO*Ǻ}=ؼǺ=VϽǺ-=ؼǺ=.GǺ~-؍Ǻ{=*Ǻ}=$Ǻȵ=ؼǺ=ؼǺ=$Ǻȵ=SǺA>h=ؼǺ=SǺA>h=aǺ7=.GǺ~ؼǺ=VǺ1;VǺ1;ؼǺ=i>ǺqǺq<ؼǺ=aǺ7=i>ǺqǺqǺq7q7qǺq< Ǻ~=i>7q< Ǻ~= 7~= 7~= Ǻ~=aǺ7= 7~=aǺ7=a77=a77=aǺ7=SǺA>h=a77=SǺA>h=S7A>h=S7A>h=SǺA>h= Ǻx=S7A>h= Ǻx= 7x= 7x= Ǻx=$Ǻȵ= 7x=$Ǻȵ=$オ7ȵ=$オ7ȵ=$Ǻȵ=*Ǻ}=$オ7ȵ=*Ǻ}=*ཱུ7}=*ཱུ7}=*Ǻ}=VϽǺ-=*ཱུ7}=VϽǺ-=VϽ7-=VϽ7-=VϽǺ-=ؼǺ=VϽ7-=ؼǺ=ؼ7=ۋޓL=߉ޓj=ۋ=L=ۋ=L=߉ޓj=߉=j=ۋ=L=߉=j=X닽=X닽=߉=j=yu=X닽=yu=PF=PF=yu=_gǺ=PF=_gǺ=kn?=kn?=_gǺ= =kn?= =F׌ˈv7=F׌ˈv7= =ۋ[L=F׌ˈv7=ۋ[L=UV=UV=ۋ[L=Ҍ@v7=UV=Ҍ@v7=-؍Ǻ{=-؍Ǻ{=Ҍ@v7=-؍7{=-؍Ǻ{=-؍7{=ؼǺ=ؼǺ=-؍7{=ؼ7=߉ޓj=ʽޓ4ʽ=4߉ޓj=ʽ=4߉=j=.GǺ~.G7~ͽǺOͽǺO.G7~ͽ7OͽǺOͽ7Otͽ| tͽ| ͽ7O|̽@Itͽ| |̽@I̽ˈI̽ˈI|̽@IQ̽[뭁̽ˈIQ̽[뭁̽%̽%Q̽[뭁.˽̽%.˽xD̽PZxD̽PZ.˽ʽǺg'xD̽PZʽǺg' ̽򘁼 ̽򘁼ʽǺg't(ʽ< ̽򘁼t(ʽA߾ܝI>ܝ|=A߾B|=A߾BI>ܝ\=5|=A߾B\=5i=A߾Y4i=A߾Y4\=5,N=`= ;$A=p<$A=p ;3=֨<$A=p<3=֨<=<3=Vq>X)?)R=j R=j >X)?)W5>t쾩0R=j W5>t쾩0a=フ;a=フ;W5>t쾩0>Xh;a=フ;>Xh;?f> ;Z0=TI>ܝ3=Vq3=VqI>ܝ>"YQ3=Vq>"YQ>X)?)rン=6=,ޓ=,ޓ=6=,Ο=Ƚr=ңZ=_ٽ꾿=_ٽ꾿=ңZ=Zᄑ꾕+=Zᄑ꾕+=ңZ=,Ο=,Ο=ңZ=,ޓ=Ƚr=_ٽ꾿=rdp=Ƚr=rdp=8ܽヨ^=8ܽヨ^=rdp=K"=8ܽヨ^=K"=J꽭t$=J꽭t$=K"=S/nܝ*GϽA߾΍=ճA߾ =rA߾=QA߾G=TA߾_^A߾)=A߾oTA߾_^_A߾k)TA߾_^A߾0Ӷl˽A߾ɥAI=%g4=Ӄ=# =,=j쾠OܝI>A߾ܝ>"YQ>"YQI>A߾ܝ>X)?)>X)?)I>A߾ܝ=A߾8=>X)?)=A߾8=W5>t쾩0W5>t쾩0=A߾8==꾸8=W5>t쾩0=꾸8=>Xh;>Xh;=꾸8=3=֨<>Xh;3=֨ ;nM=㈵;&>D&>;D&>;D >;㈵; >㈵;>V< >㈵; >;㈵; >;㈵;>;V<>V<>V<Õ="&>D&>D >㈵;>V<>;VV<>;VV;㈵; >;㈵;&>;D%=;|&>DÕ="Õ=;"Õ=;"&>;D&>DÕ="%=|%=;|%=;|Õ=;"Õ=".Aᾶ(3>e?vT5> ?⾬3>u/=w =#V/k=#V/k=w =DX =g)/73>,/2>d vT5>,/2> 3>d vT5>2`v.4>?=`v: >2.޾.4>2.޾.4>?=`v: >?=.޾: >cK q=c`v q=7K2>c`v q=2`v.4>7K2>7K2>2`v.4>8.޾2>8.޾2>2`v.4>2.޾.4>=Ke1==`ve1=H&=KI=H&=KI==`ve1=H&=WI=H&=WI==`ve1=w(W~=w(W~==`ve1=c`v q=w(W~=c`v q=w(K~=w(K~=c`v q=cK q==`ve1=! > >=R>`v"7C=R>.޾"7C=! >ڊ>==.޾ :=! >ڊ>=R=6Ǻ8=<=a9=<=a9=T=0:=! >ڊ>=! >ڊ>=T=0:==ڊ :=! >ڊ>==ڊ :==.޾ :==K3=! > >==Ke1==Ke1=! > >==`ve1=! >ڊ>=R>`v"7C=! > >=R>`v"7C=! >ڊ>=R>.޾"7C=>`v=R>`v"7C=>.޾=>.޾=R>`v"7C=R>.޾"7C=>`v=>.޾=?=.޾: >?=`v: >>`v=?=.޾: >>`v==`ve1=R>`v"7C=?=`v: >=`ve1=>`v=c`v q==`ve1=2`v.4>2`v.4>=`ve1=?=`v: >rン=6A߾=6==ʉ==A߾ʉ=B=ᄁ=ܵA߾ܝܣ=A߾8g==A߾8=ܵA߾ܝ|=A߾BTA߾_^TA߾_^< {=A߾Ҙ;=A߾ЖTA߾_^Ҙ;=A߾ЖȚ=A߾ TA߾_^Ț=A߾ OA߾ܝTA߾_^ܣ=A߾8g=TA߾_^=A߾ʉ==A߾ʉ=TA߾_^ܵ.Aᾶ(3>./(3>e?vT5>./(3>g)/73>d vT5>e?vT5>g)/73> 3> ?⾬3>e?vT5>e?vT5>d vT5> 3> ?⾬3>25۾#>2'=5۾Z%>2'=5۾Z%>.Aᾶ(3> ?⾬3>#V5۾k=DX[ܾ=w[ܾ=w[ܾ=u5۾=#V5۾k=25۾#>#V5۾k=u5۾=u5۾=2'=5۾Z%>25۾#>DX =w =w[ܾ=w[ܾ=DX[ܾ=DX =,/2>./(3>u/=u/=#V/k=,/2>,/2>g)/73>./(3>./(3>.Aᾶ(3>2'=5۾Z%>./(3>2'=5۾Z%>u/=2'=5۾Z%>w =u/=2'=5۾Z%>w[ܾ=w =2'=5۾Z%>u5۾=w[ܾ= ?⾬3>#V5۾k=25۾#> ?⾬3>DX[ܾ=#V5۾k= ?⾬3> 3>,/2>DX[ܾ=#V/k=DX =,/2>#V/k= ?⾬3>#V/k=DX[ܾ= ?⾬3>! >ڊ>=! > >=R=6Ǻ8=! > >=N=iJA7=R=6Ǻ8=! > >=ny=*o5=N=iJA7=! > >==K3=ny=*o5=!(%=LϽ=!(ޓ%=£/=3^=£ޓ/=£ޓ/=3^=3ޓ^=<=!< O=<!<<!< O= O{ =<{ =.=>=.==.=LϽ=>=.=LϽ=MϽ==MϽ==LϽ=!(%=MϽ==!(%==:=C=C==:=:=C===:=ZdZ6QV}. O=*սQ1 cnM׽}tj'Ͻ=9z|'Ͻ=9z|M׽}tj`ڽdd'Ͻ=9z|`ڽdd޽ZdT\'Ͻޓ9z|'սޓo'Ͻ=9z|'Ͻ=9z|'սޓo'սbo'Ͻ=9z|'սbo*սQ1 cn޽ZdT\KX⽲ZS'Ͻ=9z|'Ͻ=9z|KX⽲ZSNJI'Ͻ=9z|NJI O= O=NJI뽲i? O=뽲i?ZdZ6QV}._rm( O= O=_rm('Q1$ O='Q1$@b5Y#ޓ''ޓޓ' O O=Mux l&߻< 2Dػ@b5Y#@]5Y# O= O=@]5Y#] O=]Mux l&߻ )+Ȼ O +Ȼ +Ȼ O O= +Ȼ O=W &ʻ )+ȻW kʻ O OW kʻy ͖uͻ Oy ͖uͻ+ ^һ+ ^һ< p_Dػ O O< p_DػMu†l&߻ OMu†l&߻ޓ滈< 2Dػ+ q^һ O= O=+ q^һy HĔuͻ O=y HĔuͻW &ʻ:==:==:=:==:=!(%=£/=£ޓ/=[ޓ=£/=[ޓ=Z=Z=[ޓ=!(ޓ%=Z=!(ޓ%=LϽ={ <{ =<<=!<{ <<=!<<!<؈ lսa[<D͵><Dz<D7x< #2콨@<< 5꽨@<< 57x< #25woڇ<ۇ+oڇڇE轎<ۇ+ڇEڇٽ<ۇ+ڇٽ̃ڇe6Ƚ<ۇ+̃ڇe6Ƚ`νڇ%̴[Ƚxч|<ۇ+Խۇ)[Ƚ8|<ۇ+[Ƚxч|[Ƚ8|<8+<ۇ+&߽8ę_ν)%̴%߽)ęԽ8솭_ν)%̴&߽8ę;ۇ4h;)4hG=)4h;ۇ4hG=)4hS=ڇ4hS=ڇ4hG=)4h識)S=ڇ4h識)識ڇ識ڇ識)k )$E識ڇk )$Ek ڇ$Ek ڇ$Ek )$E=)>k ڇ$E=)>=ڇ>=ڇ>=)>o)=ڇ>o)oڇoڇo))E轖oڇ)EڇEڇE)E)ٽڇE)ٽڇٽڇٽ)ٽ˃)e6Ƚڇٽ˃)e6Ƚ̃ڇe6Ƚ̃ڇe6Ƚ˃)e6Ƚ_ν)%̴̃ڇe6Ƚ_ν)%̴`νڇ%̴`νڇ%̴_ν)%̴Խ8솭`νڇ%̴Խ8솭Խۇ)[Ƚ8|Խۇ)Խ8솭Խۇ)[Ƚ8|[Ƚxч|C<8C<)콦;)4hC<8콦;)4h;ۇ4h<ۇ+C<8콚;ۇ4h<ۇ+k ڇ$E=ڇ><ۇ+識ڇk ڇ$E<ۇ+S=ڇ4h識ڇ<ۇ+;ۇ4hS=ڇ4h5~<-!0ܽ<钾ֽ 1Km>1Km>1Km>1Km>1Km>]=~]=~]=~?)=9~?)=9~?)=9~>u>u>u>u>u>uR>[cR>[cR>[cR>[cR>[cR>[cb?Ib?Ib?Ib?Ib?Ib?I@??)@??)@??)@??)@??)@??)q[?gq[?gq[?gq[?gq[?gq[?gVp?Vp?Vp?eR|?,eR|?,eR|?,T|?F,T|?F,T|?F,"?i}<"?i}<"?i}<"?i}<"?i}<"?i}Xz?uK>Xz?uK>Xz?uK>Xz?uK>Xz?uK>NFm?L7>NFm?L7>NFm?L7>NFm?L7>NFm?L7>NFm?L7>W? ?W? ?W? ?W? ?W? ?W? ?5}:? a/?5}:? a/?5}:? a/?5}:? a/?5}:? a/?5}:? a/?W ?N?W ?N?W ?N?W ?N?W ?N?W ?N?#>f?#>f?#>f?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?惞=g;?惞=g;?惞=g;?惞=g;?惞=g;?惞=g;?ܽ~?ܽ~?ܽ~?ܽ~?ܽ~?ܽ~?u?u?u?ہL%u?ہL%u?ہL%u?R[c?R[c?R[c?R[c?R[c?R[c?^I?^I?^I?^I?^I?^I?@?)?@?)?@?)?@?)?@?)?@?)?q[g?q[g?q[g?q[g?q[g?q[g?dp>dp>dp>V|V,>V|V,>V|V,>V|V,>V|V,>V|V,>"i}"i}"i}Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>的>Cw?的>Cw?的>Cw?的>Cw?的>Cw?的>Cw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?zEw?zEw?zEw?zEw?zEw?zEw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?jDh?iK>jDh?iK>jDh?iK>jDh?iK>jDh?iK>jDh?iK>?xa=?xa=?xa=?xa=?xa=?xa=&-d&-d&-dx?5tx?5tx?5tx?5tx?5tx?5tчl?þчl?þчl?þчl?þчl?þчl?þ[?[?[?Z?ɢZ?ɢZ?ɢzgD?3$zgD?3$zgD?3$u|D?$u|D?$u|D?$x`)??x`)??x`)??x`)??x`)??x`)?? ?LW ?LW ?LW ?LW ?LW ?LW>;i>;i>;iվ>iվ>iվ>i*>v*>v*>vZ>9vZ>9vZ>9v=D~=D~=D~=D~=D~=D~&-d&-d&-dz>{z>{z>{z>{z>{z>{zqzqzqөɁqөɁqөɁqBaBaBa-a-a-aYLYLYLYLYLYLĂ63Ă63Ă63Ă63Ă63Ă63O)O)O)șOșOșOcwcwcwcwcwcwr3r3r3r3r3r3O|A-O|A-O|A-O|A-O|A-O|A-oooooo}>}>}>}>}>}>uC>uC>uC>uC>uC>uC>g>g>g>g>g>g>T?T?T?Y<y,?Y<y,?Y<y,?8T?8T?8T?Y<y,?Y<y,?Y<y,?a -G?a -G?a -G?a -G?a -G?a -G?>zEw?>zEw?>zEw?>zEw?>zEw?>zEw????????RI9?RI9?RI9????????????dOp?}dOp?}dOp?}dOp?}dOp?}dOp?}\?e\?e\?e,\?,\?,\?B?&B?&B?& B?& B?& B?&YA?0'YA?0'YA?0'!?F!?F!?F!?F!?F!?F>΂`>΂`>΂`>΂`>΂`>΂`ء>rء>rء>rء>rء>rء>r...x>k}x>k}x>k}x>k}x>k}x>k} /aZ: /aZ: /aZ:C/P:C/P:C/P:j ܴVj ܴVj ܴVj ܴVj ܴVj ܴVž@#lž@#lž@#lž@#lž@#lž@#l[\z[\z[\z[\z[\z[\z...@NM@NM@NM@NM@NM@NMeeeeee?v?v?v?v?v?v~&ƽ~&ƽ~&ƽ~&ƽ~&ƽ~&ƽ6"(Y=6"(Y=6"(Y=6"(Y=6"(Y=6"(Y=Cw的>Cw的>Cw的>Cw的>Cw的>Cw的>k|g[>k|g[>k|g[>k|g[>k|g[>k|g[>5P?5P?5P?5P?5P?5P?iL2-7?iL2-7?iL2-7?iL2-7?iL2-7?iL2-7?T?T?T?T?T?T?ߗ̾Gj?ߗ̾Gj?ߗ̾Gj?ߗ̾Gj?ߗ̾Gj?ߗ̾Gj?kk$y?kk$y?kk$y?kk$y?kk$y?kk$y?d W?d W?d W?>}?>}?>}?d W?d W?d W? > t? > t? > t?>}?>}?>}?:2>uXb?:2>uXb?:2>uXb? > t? > t? > t??ZI??ZI??ZI?"?RI?"?RI?"?RI?:2>uXb?:2>uXb?:2>uXb?n?~>n?~>n?~>\Z??\Z??\Z??Z?O?Z?O?Z?O???I)???I)???I)???I)???I)???I)?`8|?P/`8|?P/`8|?P/`8|?P/`8|?P/`8|?P/6?z;6?z;6?z;6?z;6?z;6?z;{?t(>>{?t(>>{?t(>>{?t(>>{?t(>>{?t(>>n?~>n?~>n?~>>]?>]?>]?|1>|1>|1>|12>|12>|12>& |3& |3& |3|1|1|1.p.p.pNpi*Npi*Npi*a]oa]oa]oa]oa]oa]oD$D$D$D~Q9$D~Q9$D~Q9$}${D}${D}${D]]]]]].p.p.p.p.p.p/23|/23|/23|/23|/23|/23|3>& |3>& |3>& |1>y|1>y|1>y|>8.p>8.p>8.p >Hp >Hp >Hp>]>]>]>]>]>]$?D$?D$?D}$?(D}$?(D}$?(DD?$D?$D?$(D?}$(D?}$(D?}$a]?oa]?oa]?o.p?.p?.p?.p?.p?.p?a]?oa]?oa]?o???|?1|?1|?1|?1|?1|?1|?12>|?12>|?12>|?1>|?1>|?1>???.p?>.p?>.p?>.p?>.p?>.p?>a]?o>a]?o>a]?o>a]?o>a]?o>a]?o>(D?}$?(D?}$?(D?}$?D?$?D?$?D?$?}$?D?}$?D?}$?D?}$?D?}$?D?}$?D?>]?>]?>]?>.p?>.p?>.p?>.p?>.p?>.p?1>|?1>|?1>|?1>|?1>|?1>|???????1|?1|?1|?1|?1|?1|?.p?.p?.p?.p?.p?.p?]?]?]?a]o>a]o>a]o>$Է8D?$Է8D?$Է8D?~$%D?~$%D?~$%D?]?]?]?.p>.p>.p>.p>.p>.p>a]o>a]o>a]o>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????C|r$?C|r$?C|r$?C|r$?C|r$?C|r$?0Hݾ.f0Hݾ.f0Hݾ.f5p>5p>5p>U>f?U>f?U>f?$C$C$CVp?Vp?Vp?Gw?rGw?rGw?rGw?rGw?rGw?rr>2Iw?r>2Iw?r>2Iw?r>2Iw?r>2Iw?r>2Iw?2Iwr>2Iwr>2Iwr>2Iwr>2Iwr>2Iwr>rGwrGwrGwrGwrGwrGw????????????]?>]?>]?>]?c ?]?c ?]?c ?]?]?]?c ]?c ]?c ]?&} ?XU&} ?XU&} ?XUu ?]Uu ?]Uu ?]Ul$>,dl$>,dl$>,dl$>,dl$>,dl$>,d)V? ?)V? ?)V? ?V?~ ?V?~ ?V?~ ?*e?1>*e?1>*e?1>*e?1>*e?1>*e?1>{eL⾫{eL⾫{eL⾬ne 㾬ne 㾬ne HU? HU? HU? HU? HU? HU?|d?|d?|d?J\d?J\d?J\d?rGwrGwrGwrGwrGwrGwr>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>Gw?rGw?rGw?rGw?rGw?rGw?r̹V/c ̹V/c ̹V/c ̹V/c ̹V/c ̹V/c ?????????????????????????????????????Ѹ?Ѹ?Ѹ??????????????????????????????HHHHHH|w=|w=|w=|w=|w=|w=|32>|32>|32>|32>|32>|32>w>w>w>wvg>wvg>wvg>{oS>{oS>{oS>.o˕>.o˕>.o˕>f->f->f->f->f->f->\?\?\?\?\?\?>OO2?>OO2?>OO2?IO9?IO9?IO9?@Z(?@Z(?@Z(?@iW(?@iW(?@iW(?088?088?088?088?088?088?>zEw?>zEw?>zEw?>zEw?>zEw?>zEw?>yIwEw?>yIwEw?>yIwEw?暄>oHCw?暄>oHCw?暄>oHCw?䚄>kCw?䚄>kCw?䚄>kCw? >ѹ0Bw? >ѹ0Bw? >ѹ0Bw?>>?Q:(Pw?>>?Q:(Pw?>>?Q:(Pw?{Z>I9wLw?{Z>I9wLw?{Z>I9wLw?@>,5w?@>,5w?@>,5w?>yI:wEw?q>J:Gw?q>J:Gw?>}:k\w?>}:k\w?>}:k\w?的>ѸCw?的>ѸCw?的>ѸCw?>zEw?>zEw?>zEw?>zEw?>zEw?>zEw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?zEw?zEw?zEw?zEw?zEw?zEw?的Cw的Cw的Cw的Cw的Cw的Cw!2Bw!2Bw!2BwzEwzEwzEwڽѹ^awڽѹ^awڽѹ^awQѹ@wQѹ@wQѹ@w-SZI9+w-SZI9+w-SZI9+w{ZQwLw{ZQwLw{ZQwLw2HQw2HQw2HQwfIѹJwfIѹJwfIѹJw„k:s>w„k:s>w„k:s>w:xEw:xEw:xEwyI:wEwyI:wEwyI:wEwyI:wEwyI:wEwyI:wEw的Cw的Cw的CwzEwzEwzEwGwr>Gwr>Gwr>Gwr>Gwr>Gwr>&u za>&u za>&u za>5%u$ a>5%u$ a>&u%T>dFþ u>EdrDþudFþ u>dbþ#t>dbþ#t>dbþ#t>-C(R>-C(R>-C(R>C!R>C!R>C!R>ݍKG!>ݍKG!>ݍKG!>BKfa!>BKfa!>BKfa!> rXylp= rXylp= rXylp=|vln(=|vln(=|vln(=)}k =k} =)}k =)}k =)}k =)}k =)>}?k )>}?k )>}?k )>}?k )>}?k )>}?k >b>|l?ʽ>b>|l?ʽ>b>|l?ʽ>b>|l?ʽ>b>|l?ʽ>b>|l?ʽ? K?c!? K?I!? K?c!U?H K?|!U?H K?|!U?H K?|! D??;R D??;R D??;R5,D?K?":R5,D?K?":R5,D?K?":Rhd?&> thd?&> thd?&> thd?&> thd?&> thd?&> t&u? >za&u? >za&u? >za&u? >za&u? >za&u? >zaN(,IS3Et>N(,IS3Et>N(,IS3Et>z3E3v >z3E3v >z3E3v >vӾ 4`N?vӾ 4`N?vӾ 4`N?MӾY4M?MӾY4M?MӾY4M?:q4?:q4?:q4?s4?s4?s4?54?54?54?14 >14 >14 >49>49>49>>4>>4>>4>4>4>4>r4S>r4S>r4S>T4>T4>T4>o%5!4ދ.4>.4>|.T4*>|.T4*>|.T4*>.4>.4>.4>%4$%4$%4$%4u%4u%4u%4F%%4F%%4F%4,4þ4,4þ4,4þ"y4ユ"y4ユ"y4!ܲ4!ܲ4!ܲ44*4*4*T㾯w8T㾯w8T㾯w8o74o74o74]\4B ]\4B ]\4B (b4x(b4x(b4x&4&4&4l4Z'l4Z'l4Z'4nl'4nl'4nl'l4g'l4g'l4g'414141V,&4N 0V,&4N 0V,&4N 0?˺4y4?˺4y4?˺4y4 ͷ44 ͷ44 ͷ44K yn44K yn44K yn44:4=f44:4=f44:4=f44:4=f44:4=f44:4=f44.>411.>411.>411K>4+1K>4+1K>4+1>941>941>941p>z4R)p>z4R)p>z4R)!ބ>4ġ(!ބ>4ġ(!ބ>4ġ(>6:J'>6:J'>6:J'>45>45>45>%4(>%4(>%4( >4W( >4W( >4W(?4?4?4a?-4 a?-4 a?-4 ?4 ?4 ?4 ?O4g̾?O4g̾?O4g̾?4˾?4˾?4˾8?m47˾8?m47˾8?m47˾͏#?[4Ok͏#?[4Ok͏#?[4Okg#?x4Pg#?x4Pg#?x4Pg#?x4Pg#?x4Pg#?x4Pg#?x4Pg#?x4Pg#?x4Pr3?'4ͽr3?'4ͽr3?'4ͽw3?̾4lͽw3?̾4lͽw3?̾4lͽ&3?4̽&3?4̽&3?4̽OE5?<4T_;OE5?<4T_;OE5?<4T_;WE5?E4;WE5?E4;WE5?E4;785?\4Y_;785?\4Y_;785?\4Y_;o2?/4D=o2?/4D=o2?/4D=2?4PH=2?4PH=2?4PH= k,?4_> k,?4_> k,?4_>r,?a4_>r,?a4_>r,?a4_>r,?a4_>r,?a4_>r,?a4_>^2?:4O=^2?:4O=^2?:4O=x.]?x.]?x.]? ?>jR? ?>jR? ?>jR?,#9P?,#9P?,#9P?r 3R?r 3R?r 3R?s4*L?s4*L?s4*L?(7>:?(7>:?(7>:?1C#5?1C#5?1C#5?)N-LX;?)N-LX;?)N-LX;?\0C-n4?\0C-n4?\0C-n4?C$1>g?C$1>g?C$1>g?fk* >F{>fk* >F{>fk* >F{>^}i>^}i>^}i>`ZU>`ZU>`ZU>\9V>a>\9V>a>\9V>a>LZ9,)>R>LZ9,)>R>LZ9,)>R>TIl%?TIl%?TIl%?eI%?eI%?eI%?w2,>F+\>w2,>F+\>w2,>F+\>n>n>n>n>n>n>|>rF=|>rF=|>rF=y= >>y= >>Uyl >>y >>y >>y >>cAdH=%cAdH=%cAdH=% Vp Vp Vp +Yq+Yq+YqjDWsMQG jDWsMQG jDWsMQG X=X=X=h hĽξh hĽξh hĽξj\1Ľužj\1Ľužj\1Ľuži{.Ͼi{.Ͼi{.Ͼj9j=zžj9j=zžj9j=zž:u̇ڽʅ:u̇ڽʅ:u̇ڽʅVwSڽ.uVwSڽ.uVwSڽ.uDv[ܵ |}>ܵ |}>ܵؿ} =ؿ} =ؿ} =}t 8_=}t 8_=}t 8_=u=6Yu=6Yu=6Y$TqC$TqC$TqCg&qAg&qAg&qA&a$:D;z@D&a$:D;z@D&a$:D;z@DL&=AL&=AL&=Ar?@֩(r?@֩(r?@֩(Ϋ?ɣ(Ϋ?ɣ(Ϋ?ɣ(#y=*x#y=*x#y=*xľK/lľK/lľK/l&zǾ k&zǾ k&zǾ kKľ4H_olKľ4H_olKľ4H_ol+_Ǿv>=@~k+_Ǿv>=@~k+_Ǿv>=@~k\V2;Z\V2;Z\V2;Z٩w1;Z٩w1;Z٩w1;ZfK< ~fK< ~fK< ~8tRx8tRx8tRx upՅx upՅx upՅxg=D222+K4&zMY>+K4&zMY>+K4&zszX>I1zszX>I1zszX>I1z:?͈ .:?͈ .:?͈ . ?壘=4F ?壘=4F ?壘=4F?GRZsH?GRZsH?GRZsH. ?[8G. ?[8G. ?[8G?[H?[H?[HU?Ha=]U?Ha=]U?Ha=]w!>%qH^w!>%qH^>%AK^>$CLn>$CLn>$CLn:>'=CTn>'=CTn>'=CTn >Fؼ#n >Fؼ#n >Fؼ#nD> 0|?> 0|?>{?k{?k{?kn{?Scn{?Scn{?ScLx?_>7?>Lx?_>7?>Lx?_>7?>nz?R#>nz?R#>nz?R#>}?%r=}?%r=}?%r=m?4>>m?4>>m?4>>Oq}?Ϭ >:=Oq}?Ϭ >:=Oq}?Ϭ >:=~?T@H<~?T@H<~?T@H<~?T <~?T <~?T >]?FJ&>>]?FJ&>> c?Pɽ> c?Pɽ> c?Pɽ>U<^?e:>U<^?e:>U<^?e:>2b?>2b?>2b?>tn?g> >tn?g> >tn?g> >>q?-D>>q?-D>>q?-D>q?:4>q?:4>q?:4>?Q?Q?Qr>Gw?r>Gw?r>Gw?m?>m?>m?>*]j?Ym">*]j?Ym">*]j?Ym">_ej?v5oD>_ej?v5oD>_ej?v5oD>3b?T;>3b?T;>3b?T;>_?>_?>_?>8aP?8aP?8aP?3yf*<>f*<>h\°?h\°?h\°?,{,{,{y:.]>y:.]>y:.]>/u<>/u<>/u<>6n.XK>6n.XK>6n.XK>Έ<4O/Έ<4O/Έ<4O/}{\C8x=}{\C8x=}{\C8x=wOwOwOh|<&h|<&h|<&1~֠Ž1~֠Ž1~֠ŽBaso<Baso<Baso<Ʒj]F}-n՗>F}-n՗>F}-nyk-yk-yk-' ; ' ; ' ; =,HZ~=,HZ~=,HZ~r=;~r=;~r=;~J>wJ>wJ>w >Ѻw >Ѻw >Ѻw5F>yMjE>yMjE>yMjZ>8jZ>8jZ>8j` ?. W` ?. W` ?. W1D?,;>s$1D?,;>s$1D?,;>s$_ )?zA@_ )?zA@_ )?zA@)??)??)??ƥ??Nƥ??Nƥ??N ?{W ?{W ?{WVZ?e;VZ?e;VZ?e;uE?T茻"uE?T茻"uE?T茻"wl?ƺ;0%ľwl?ƺ;0%ľwl?ƺ;0%ľx\?Ux\?Ux\?Ux?tx?tx?t2y?y;fj2y?y;fj2y?y;fj.x?J;Rt.x?J;Rt.x?J;Rtn?em4򻾣n?em4򻾣n?em4򻾲3?x3=3?x3=3?x3="? :S>"? :S>"? :S>0?835>0?835>0?835>H*?5&=,?8P1>&=,?8P1>{,?y8F.>{,?y8F.>{,?y8F.>O+?X80>O+?X80>O+?X80>>,?4 \>>,?4 \>>,?4 \>&?4z>&?4z>&?4z>OL(?B8#^>OL(?B8#^>OL(?B8#^>%?>5h>%?>5h>%?>5h>%?4‘>%?4‘>%?4‘>%?4x>%?4x>%?4x>b0?4>b0?4>b0?4>?#6c>?#6c>?#6c>] 1?"8)=] 1?"8)=] 1?"8)=/-?;B0]=/-?;B0]=/-?;B0]=U1?6]=U1?6]=U1?6]=ij1?98۹/ij1?98۹/ij1?98۹/@1?Q8@@1?Q8@@1?Q8@0?8.0?8.0?8.6?!3;6?!3;6?!3;e#6?3C;e#6?3C;e#6?3C;/?]6/?]6/?]6 ,4?Y4/ ,4?Y4/ ,4?Y4/+4?~Y4c+4?~Y4c+4?~Y4cľ7m?ľ7m?ľ7m?iSҾ4e`?iSҾ4e`?iSҾ4e`?H 4g>H 4g>H 4g>3 4Av>3 4Av>3 4Av>G|5y?G|5y?G|5y?񾯳4x?񾯳4x?񾯳4x?GW4O>GW4O>GW4O>J׶4ܷ>J׶4ܷ>J׶4ܷ>(49>(49>(49>`(G4wЄ>`(G4wЄ>`(G4wЄ>14lx>14lx>14lx>143>143>143>k44O/=k44O/=k44O/=4x4.=4x4.=4x4.=n4P4#ዽn4P4#ዽn4P4#ዽt4ļ4$ዽt4ļ4$ዽt4ļ4$ዽ/45/45/451/|451/|451/|45y@&a4Ey@&a4Ey@&a4E9&49&49&4 4¾ 4¾ 4¾D:4t¾D:4t¾D:4t¾4V4V4V24X24X24XUQ8FUQ8FUQ8Fƙ 4 ƙ 4 ƙ 4 g4H g4H g4H 4s4<4s4<4s4<4 >4 >4 >u4Л(u4Л(u4Л(^܄4(^܄4(^܄4(440440440Q41Q41Q411v441v441v44E044E044E044B=4]r4B=4]r4B=4]r4#==4{z4#==4{z4#==4{z4Z5>ļ4`/Z5>ļ4`/Z5>ļ4`/[>4!%[>4!%[>4!%@5> 4ё/@5> 4ё/@5> 4ё/U>4U>4U>4.> 4.> 4.> 4f>$5>"5-f>$5>t4 >t4 >t4  >̻4 >̻4 >̻42>3"'2>3"'2>3"' ?4 ?4 ?4澉 ?4澉 ?4澉 ?4澾 ? 4B ? 4B ? 4B?&4* ?&4* ?&4* ە(?4ە(?4ە(?4s(?4}s(?4}s(?4}q\0?4%q\0?4%q\0?4%?????????????e=?e=?.}1= ?{~r;(= ?{~r;(= ?{~r;(=?MI9va=?MI9va=?MI9va=? ;M=? ;M=? ;M=?be=?be=?be=^?=^?=^?=;?Q9=;?Q9=;?Q9=?8xa=?8xa=?8xa=?I9n-=?I9n-=?I9n-=?xa=?xa=?xa=Z?Q|=Z?Q|=Z?Q|=?9va=?9va=?9va=&?7d*;X=&?7d*;X=&?7d*;X=Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>2Bw?!2Bw?!2Bw?!2Bw?!2Bw?!2Bw?!ˤ]??ˤ]??ˤ]??ˤ]??ˤ]??ˤ]??的>Cw?的>Cw?的>Cw?的>Cw?的>Cw?的>Cw???????>]>]>]>]>]>]zEwzEwzEwzEwzEwzEwL*>_D??L*>_D??L*>_D??a;5K.a;5K.a;5K.bH;] 5t.bH;] 5t.bH;] 5t.e;><5.?e;><5.?e;><5.?e;><5.?e;><5.?e;><5.?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?Gwr>Gwr>Gwr>GwѸr>GwѸr>GwѸr>{>w„>{>w„>{>w„>{>w„>{>w„>{>w„>的Cw的Cw的Cwr2Iwr2Iwr2IwrѹGwrѹGwrѹGwrQ9GwrQ9GwrQ9Gwr2Iwr2Iwr2Iwr2Iwr2Iwr2Iw=^=^=^^ű=^ű=^ű=R=J:2 R=J:2 R=J:2 xa=xa=xa=xa=xa=xa=g=g=g=|=7:Z|=7:Z|=7:Zxa=xa=xa=o-=o-=o-=o-=o-=o-=?xa=?xa=?xa=?xa=?xa=?xa= 5?f4? 5?f4? 5?f4? 5?f4? 5?f4? 5?f4?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?4]>H:y?4]>H:y?4]>H:y?(d>O}}y?(d>O}}y?(d>O}}y??d> U*!4w>U*!4w>X-H4HZ>X-H4HZ>X-H4HZ>]-F4ykZ>]-F4ykZ>]-F4ykZ>24d>24d>24d>2y4>2y4>2y4>/4\þ/4\þ/4\þ;4ϡþ;4ϡþ;4ϡþ-,4/-,4/-,4/=-)4 0=-)4 0=-)4 0-R>3a-R>3a-R>3aX>3LX>3LX>3LkZ>4ĊkZ>4ĊkZ>4Ċ-}-?һ4SR-}-?һ4SR-}-?һ4SR_-?|4?:R_-?|4?:R_-?|4?:R`|-?4R`|-?4R`|-?4R"?4F>"?4F>"?4F>6?D7>6?D7>6?D7>?:|OD>?:|OD>?:|OD>?16z>?16z>?16z>¾_50?¾_50?¾_50?vg7D?vg7D?vg7D?-Y6v?-Y6v?-Y6v?z?J>(?z?J>(?z?J>(?띂>.>Qs?띂>.>Qs?띂>.>Qs?M&`>o>=w?M&`>o>=w?M&`>o>=w?M&`>o>=w?M&`>o>=w?M&`>o>=w?T~>$.>\u?T~>$.>\u?T~>$.>\u?_3=_3=_3=PBzEb=PBzEb=PBzEb=oa]?oa]?oa]?c ]?c ]?c ]?]?]?]?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?e*>D??e*>D??e*>D??s~*>D?C?s~*>D?C?s~*>D?C?"n$?l ? ᾍt2?՝M>30*_>RԾL)_U>Ծ P?ϣN"n$?l ? )?G^T?,.>"n$?l ? ᾲ eP?AN eP?AN~_R>>)?G^T?,.>的Cw的Cw的Cw的Cw的Cw的CwxLw|Z>xLw|Z>xLw|Z>zEwN8>zEwN8>zEwN8>zEw>zEw>zEw>Gwr>Gwr>Gwr>Gw8r>Gw8r>Gw8r>Gw?ѸrGw?ѸrGw?ѸrHw?K97vHw?K97vHw?K97vzEw?zEw?zEw?xLw?|ZxLw?|ZxLw?|ZGw?ѸrGw?ѸrGw?ѸrGw?8rGw?8rGw?8rxa=xa=xa==Ѹ^=Ѹ^=Ѹ^ɲ=!ѹɲ=!ѹɲ=!ѹva=Qva=Qva=Q̇16q8?̇16q8?̇16q8?n=\Y?n=\Y?n=\Y?n=\Y?n=\Y?n=\Y?H;H;H;.֣;.֣;.֣;dzUlR>dzUlR>dzUlR>dzUlR>dzUlR>dzUlR>@sv">@sv">@sv">@sv">@sv">@sv">j:>j:>j:>j:>j:>j:>z_n>z_n>z_n>z_n>z_n>z_n>jQ?jQ?jQ?Q?Q?Q?tA'?tA'?tA'?tA'?tA'?tA'?&1\d8?&1\d8?&1\d8?y1Ѹj8?y1Ѹj8?y1Ѹj8?的>Cw?的>Cw?的>Cw?f>Jw?f>Jw?f>Jw?,:Mݳw,:Mݳw,:MݳwzEwzEwzEwr2Iwr2Iwr2IwrQ0IwrQ0IwrQ0IwiAwiAwiAw的Cw的Cw的Cw{ZѸwLw{ZѸwLw{ZѸwLwr8Gwr8Gwr8GwN8zEwN8zEwN8zEwa%-wa%-wa%-wkwkwkw_^ew_^ew_^ewŀ5;Mwŀ5;Mwŀ5;Mw1v^Hw1v^Hw1v^Hw 'w 'w 'wfJwfJwfJwW0;wW0;wW0;w낾.{w낾.{w낾.{wbwbwbwټ@wټ@wټ@w .Rw .Rw .RwB\zB\zB\z?z\y?z\y?z\yEu]s xEu]s xEu]s xl|7;Sxl|7;Sxl|7;SxʶCX;wʶCX;wʶCX;wSyr;wSyr;wSyr;wy;iwy;iwy;iw;bw;bw;bw/Z:;Kw/Z:;Kw/Z:;Kwp3Owp3Owp3Ow5L޻w5L޻w5L޻w| x| x| x???08?08?08?fJ?fJ?fJ?fJ?fJ?fJ?A ( A?A ( A?A ( A? 0 9? 0 9? 0 9?/~=/~=/~=Y~ށ=Y~ށ=Y~ށ=r>2Iw?r>2Iw?r>2Iw?bsH;bsH;bsH;yH4yH4yH489C089C089C0190190190Xe(r@Xe(r@Xe(r@Nl([@Nl([@Nl([@@DO@DO@DOh6"LOh6"LOh6"LO9 \9 \9 \9 \9 \9 \ܾfܾfܾfܾfܾfܾf1 p1 p1 p1 p1 p1 pDžQwDžQwDžQwDžQwDžQwDžQwԊ0*|Ԋ0*|Ԋ0*|Ԋ0*|Ԋ0*|Ԋ0*|s) s) s) s) s) s) ';';';<<<???Gw?rGw?rGw?rGw?rGw?rGw?r>zEw?>zEw?>zEw?r>Gw?r>Gw?r>Gw???????????????????????????????WZ1 p{?I;WZ1 p{?I;WZ1 p{?I;Hl?ٽHl?ٽHl?ٽHl?ٽHl?ٽHl?ٽT?H T?H T?H I %T? I %T? I %T? 882?O1882?O1882?O1ok82?9a1ok82?9a1ok82?9a1ZX\ ?_PZX\ ?_PZX\ ?_P8ZPR ? dP8ZPR ? dP8ZPR ? dP1st>bg1st>bg1st>bg1st>bg1st>bg1st>bg)>^t)>^t)>^t7(>ft7(>ft7(>ftHaBwHaBwHaBwHaBwHaBwEBwus@pus@pus@ps1Bps1Bps1BpgoH۾t_goH۾t_goH۾t_Z8o ۾Æ_Z8o ۾Æ_Z8o ۾Æ_PT:EPT:EPT:ET kET kET kE1?h#1?h#1?h#1!?u#1!?u#1!?u#^p^p^p(^Cv(^Cv(^Cv7va8s7va8s7va8s Ef6s Й Ef6s Й Ef6s Йk }Q~߽k }Q~߽k }Q~߽ 2R~9r߽ 2R~9r߽ 2R~9r߽\]<V=\]<V=\]<V=/ij=Au~>ij=Au~>ò=?u>ò=?u>ò=?u>=a>=a>=a>C=_aW>C=_aW>C=_aW>u$>moD?u$>moD?u$>moD?u$>>uD?u$>>uD?u$>>uD?B|bA?B|bA?B|bA?B|bA?B|bA?B|bA?g>\?g>\?g>\?g>\?g>\?g>\?A{>,n?A{>,n?A{>,n?{>ꆾn?{>ꆾn?{>ꆾn?ʴ>v?ʴ>v?ʴ>v?ނ>v?ނ>v?ނ>v?[> >u?[> >u?[> >u?[> >u?[> >u?[> >u?F$y>!Q>i?F$y>!Q>i?F$y>!Q>i?gx>> i?gx>> i?gx>> i?c>y?sS?c>y?sS?c>y?sS?B:c>,{?kS?B:c>,{?kS?B:c>,{?kS?D>-?Z5?D>-?Z5?D>-?Z5?2D>'-?]`5?2D>'-?]`5?2D>'-?]`5?>%P??>%P??>%P??~>\P?f?~>\P?f?~>\P?f?C=hi?Ù>C=hi?Ù>C=hi?Ù>=i?ܤ>=i?ܤ>=i?ܤ>t= z?R>t= z?R>t= z?R>t= z?R>t= z?R>t= z?R> <4?-?< <4?-?< <4?-?< < ?TA< < ?TA< < ?TA8Gw?r>8Gw?r>8Gw?r>Gw?r>Gw?r>Gw?F@5!F@5!F@5!I'˻.I'˻.I'˻.ҽˤ~ҽˤ~ҽˤ~ҽˤ~ҽˤ~ҽˤ~lL3zlL3zlL3zlL3zlL3zlL3z# |t# |t# |t# |t# |t# |tYƾKlYƾKlYƾKlƾIkƾIkƾIkaaaaaao To To To To To T#pD#pD#pDҜ#DҜ#DҜ#D6{36{36{36{36{36{3޵Aa^'޵Aa^'޵Aa^'AkQ9\s'AkQ9\s'AkQ9\s'zEwN8>zEwN8>zEwN8>2IwѸr>2IwѸr>2IwѸr>2Iw?r2Iw?r2Iw?r2Iw?r2Iw?r2Iw?rzEw?NѸzEw?NѸzEw?NѸ8?Q98?Q98?Q9?Q9?Q9?Q9?Q9?Q9?Q98?8?8?@w?RѸ@w?RѸ@w?RѸyEw?{IyEw?{IyEw?{ICw?8的Cw?8的Cw?8的Cw?8的Cw?8的Cw?8的Gw?8rGw?8rGw?8r@w?RQ@w?RQ@w?RQGw?8rGw?8rGw?8rCw?Ѹ的Cw?Ѹ的Cw?Ѹ的Jw?IQ9fJw?IQ9fJw?IQ9f2Iw?8r2Iw?8r2Iw?8rCw?pH的Cw?pH的Cw?pH的xLw?Ѹ|ZxLw?Ѹ|ZxLw?Ѹ|ZJw?JѸfJw?JѸfJw?JѸf2Iw?r2Iw?r2Iw?rGw?rGw?rGw?rzEw?NѸzEw?NѸzEw?NѸ0Iw?Qr0Iw?Qr0Iw?QrHw?8vHw?8vHw?8vGw?rGw?rGw?rCw?Q9的Cw?Q9的Cw?Q9的zEw?NQ9zEw?NQ9zEw?NQ9Gw?rGw?rGw?rzEw?NQ9zEw?NQ9zEw?NQ9Gw?rGw?rGw?rGw?ѸrGw?ѸrGw?Ѹr0Iw?Gr0Iw?Gr0Iw?GrzEw?zEw?zEw?Cw?的Cw?的Cw?的Gw?ѸrGw?ѸrGw?Ѹr2Bw?!2Bw?!2Bw?! 9>9;Z(茻7;?ؘ. _)?'J>+ 9>9;Z( _)?'J>+ Q?:Tl6_?>=>6;??z>7;S[>8_?>W=z>7;S[>5,?stۼ6_>-оQ?/ξtۼ-оQ?/ξ'lQWtۼPR0?5?>tۼ5?>5_`>SQ0-оQ?/ξ茻7;?ؘ.'lQW茻7;?ؘ.8>6;X_(#:_?̧>=<,?1S=ڇQ?Hn])?U>+y;w?P?z>7;S[>>E5;??;!BP?>6;??d\?iH?d\?iH?Y> 4;?S?о#Q?<ξ>6;??医4;?Z.-оQ?/ξe;BP?Q0w>k5;le>Q09>5;^(>c5;FX>*d)?U>+医4;?Z.6_?>=医4;?Z.Y> 4;?S?5_?`>S= Q?:Tl=,?6;X_(<,?1k5;le>9>5;^(;!BP?~TL2?Q0V.?LuJ*Q0c\?MH?о#Q?<ξ5?>-оQ?/ξ5_`>S5?>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~z>6kþz>S7Cɾz>|o3aƾz>S7Cɾz>6kþz>/>`Ǿz6kþzo3aƾz0>`Ǿz0>`Ǿzo3aƾzW7Cɾͽ]u=]u$b=Yʉvͽ]u$b=Yʉv"bʽYʉv"bʽYʉv$b=YʉvGZ=ON4[B~"bʽYʉvGZ=ON4[B~EZSN4[B~EZSN4[B~GZ=ON4[B~#=MLEZSN4[B~#=ML#QL#QL#=MLD=|#QLD=|D|D|D=|<޼[D|<޼[޼[޼[<޼[\ <ϼ.޼[\ <ϼ.X ϼ.n>RP8 ۾t>XX׾`p>XX׾ %ֽRjFZX׾tZX׾nRP8 ۾ =R=j'=ֽ'=ֽR=jKFN=r{ɽDKFN=r{ɽDR=jG<Ѯ½G<Ѯ½R=jRjG<Ѯ½RjGѮ½Rj%ֽGFNt{ɽDRjGFNt{ɽDGѮ½n>RP8 ۾`p>XX׾\>v9*\>v9*`p>XX׾F>XX׾\>v9*F>XX׾bG>.$HbG>.$HF>XX׾R=jbG>.$HR=j.>dp.>dpR=j =.>dp =;>9 .dp.dp Rj.dpRj`G0$H`G0$HRjFZX׾`G0$HFZX׾\x9*\x9*FZX׾nRP8 ۾zW7Cɾzo3aƾ$(q"#Ҿ$(q"#Ҿzo3aƾ$(G+Ͼ$(q"#Ҿ$(G+Ͼhվhվ$(G+ϾziҾhվziҾ󎃾wyݾ󎃾wyݾziҾ󎃾?ھ󎃾wyݾ󎃾?ھr r 󎃾?ھrjX޾r rjX޾ǎmݽǎmݽrjX޾ǎmս7ǎmݽǎmս7徆cXνl꾆cXνlǎmս7徆c ƽ]辆cXνl꾆c ƽ]辧P㱽?P㱽?񾆀c ƽ]辨PqP㱽?PqC\C\PqC(\C\C(\'/.'/.C(\'/bZiPS >ZiG=Fc4PS >UHPS >ZiPS >UH!>ٔ!>ٔPS >UH!>@m"!>ٔ!>@m"'/> .'/> .!>@m"'/>^ .'/>^\C>\'/>^ (\C>\C> (\P>㱽?P>㱽?C> (\P>qP>㱽?P>qc>Rνl꾈c>Rνl꾨P>qc> ƽ]辈c>Rνl꾈c> ƽ]Ɏm>ݽɎm>ݽ羈c> ƽ]Ɏm>ս7Ɏm>ݽɎm>ս7t> t> Ɏm>ս7t>dX޾t> t>dX޾>syݾ>syݾt>dX޾>>ھ>syݾ>>ھ>hվ>hվ>>ھ>ziҾ>hվ>ziҾ$(>m"#Ҿ$(>m"#Ҿ>ziҾ$(>G+Ͼ$(>G+Ͼz>S7Cɾ$(>m"#Ҿz>S7Cɾ$(>G+Ͼz>|o3aƾ1#󎃾?ھ%,!Yzo3aƾz6kþ,h#zo3aƾ,h#$(G+Ͼ$(G+Ͼ,h#!w@jLl$(G+Ͼ!w@jLl>t5cF8>t5cF8Q[7v$(G+Ͼ$(G+ϾQ[7v/Z$(G+Ͼ/ZziҾziҾ/ZNC[ziҾNC[󎃾?ھ󎃾?ھNC[[4Oͽ󎃾?ھ[4Oͽ%,!Y`p>Qګ$(>G+Ͼm> m> $(>G+Ͼ[> 5z>6kþz>|o3aƾQ>8@0Q>8@0z>|o3aƾ$(>G+ϾQ>8@0$(>G+Ͼw>>jLlw>>jLl$(>G+Ͼ`p>Qګ[> 5$(>G+Ͼ%B>߽+%B>߽+$(>G+Ͼ>ziҾ%B>߽+>ziҾ&4>Oͽ&4>Oͽ>ziҾ>>ھ&4>Oͽ>>ھ|I#>L>>ھ ">9lό|I#>L#=MLPS >UHG=Fc4#=MLG=Fc4D=|G=Fc4bg=D=|D=|bg=BϦ=Y| 1D=|BϦ=Y| 1<޼[BϦ=Y| 1u=񼽟<޼[<޼[u=񼽟C(=\.⼣<޼[C(=\.⼣\ <ϼ.C(=\.⼣¨LCʾt>XX׾n>RP8 ۾$(>m"#Ҿz>S7Cɾz>/>`Ǿz0>`ǾzW7Cɾ9XLCʾ9XLCʾzW7Cɾ$(q"#Ҿ9XLCʾ$(q"#ҾtZX׾tZX׾$(q"#ҾnRP8 ۾nRP8 ۾$(q"#ҾhվnRP8 ۾hվ\x9*侤hվ󎃾wyݾ\x9*\x9*󎃾wyݾr \x9*r `G0$Hr ǎmݽ`G0$H`G0$Hǎmݽ羆cXνl`G0$HcXνl.dpcXνl꾧P㱽?.dp.dpP㱽?C\.dpC\9C\'/.99'/.!ٔ9!ٔ !ٔPS Zi  PS ZiE F E F%ֽE Fbgʽ:*_A%ֽ%ֽbgʽ:*_ABϦ6. %ֽBϦ6. GFNt{ɽDBϦ6. ucg GFNt{ɽDGFNt{ɽDucg C(~WGFNt{ɽDC(~WGѮ½C(~WsGѮ½GѮ½sD31sGѮ½D31sG<Ѯ½D31s¨<sG<Ѯ½G<Ѯ½¨<sC(=~WG<Ѯ½C(=~WKFN=r{ɽDC(=~Wu=ag KFN=r{ɽDKFN=r{ɽDu=ag BϦ=2. KFN=r{ɽDBϦ=2. '=ֽBϦ=2. bg=6*_A'=ֽ'=ֽbg=6*_AG= F'=ֽG= F =G= FPS >Zi = =PS >Zi!>ٔ =!>ٔ;>!>ٔ'/> .;>;>'/> .C>\;>C>\.>dpC>\P>㱽?.>dp.>dpP>㱽?񾈀c>Rνl.>dpc>RνlbG>.$Hc>RνlɎm>ݽbG>.$HbG>.$HɎm>ݽt> bG>.$Ht> \>v9*z>/>`Ǿ;X>LCʾ$(>m"#Ҿ$(>m"#Ҿ;X>LCʾn>RP8 ۾$(>m"#Ҿn>RP8 ۾>hվ>hվn>RP8 ۾\>v9*侤>hվ\>v9*>syݾ>syݾ\>v9*t> FZX׾RjFLCʾF>LCʾR=jF>XX׾m=ftrv=]u|z1itrv|z1itrv=]uͽ]u|z1itrvͽ]ukltrvftՕᆭ*ft龚@龚ftՕᆭ*@龚@֕ᆭ*BĽھ2pھy3@ ھ3@ ھ3pھy35ھ3@ ھ35ھ3Q ھ3@龚ft龚@ ھ3@ ھ3ft龚\ǽU۾1@ ھ3\ǽU۾1BĽھ2>*Ͼs.E>*Ͼ`=><^><^>*Ͼ`=>`=`=*Ͼ`=<^@j@<6>@<^@<^@<6>@h@<^@h@`=@<^@!m@j$=3;c=%*C=ྤCQ=1ྸC$=3;c=ྤClt>Օᆭ*(=6ᾫA>3;c6#JIu <ػmʥ@6D˾Q1ྸCྤC$3;c~3;c@֕ᆭ*@6D˾Œ= ھ`= > ھ!= > ھ`=@龚@ ھ3@ ھ!=@6D˾@Ƨ<@HNѾ@龚@ ھ!=@Ƨ!=@龚@Ƨ!=@֕ᆭ*@֕ᆭ*@Ƨ!=@Ƨ<@֕ᆭ*@Ƨ<@6D˾@>`=@>f@><^@><^@>f@>:6>@>m@><^@>j@>j@><^@>:6>@>4D˾@>FNѾ@>ħ<@>4D˾@>ħ<@>ԕᆭ*@>ԕᆭ*@>ħ<@>ħ!=@>ԕᆭ*@>ħ!=@>龚@>龚@>ħ!=@> ھ!=@>龚@> ھ!=@> ھ3= ھ==Ҿ=J<Ҿ=bJ ھ=cJҾ=Ҿ=Ҿ`= ھ`=rҾ=rҾ= ھ`=r ھ=rҾ=r ھ={w9ҾmQ={w9ҾmQ=r ھ={w9 ھmQ={w9ҾmQ={w9 ھmQ=Ҿ=Ҿ={w9 ھmQ= ھ=Ҿ= ھ=bJ ھ=cJҾ=bJ ھ=L3Ҿ=L3Ҿ=bJ ھ=3 ھ=L3Ҿ=3 ھ=J<Ҿ=J<Ҿ=3 ھ=J< ھ=J<Ҿ=J< ھ== ھ==Ҿ== ھ=w9=ҾmQ=w9=ҾmQ== ھ=w9= ھmQ=w9=ҾmQ=w9= ھmQ=1r=Ҿ=Œ= ھ`=Œ=Ҿ`=1r=Ҿ=Œ= ھ`=1r=Ҿ=1r= ھ=1r= ھ=1r=Ҿ=w9= ھmQ=]d;>ħ`=L>ħ`= > ھ`= > ھ`=L>ħ`=L>`= > ھ`=L>`=@>`=Œ=Ҿ`=Œ= ھ`= > ھ`=Œ=Ҿ`= > ھ`=>*Ͼ`=>*Ͼ`= > ھ`=@>`=>*Ͼ`=@>`=>`=@>ԕᆭ*@>龚lt>Օᆭ*lt>Օᆭ*@>龚lt>龚=pھy3@> ھ3=5ھ3=5ھ3@> ھ3Q= ھ3lt>龚@>龚(=U۾1(=U۾1@>龚@> ھ3(=U۾1@> ھ3B=ھ2B=ھ2@> ھ3=pھy3Ҿ`=*Ͼ`= ھ`=Ҿ`= ھ`= ھ`=LƧ`=Wd;Ƨ`=L`=L`=Wd;Ƨ`= ھ`=L`= ھ`=@`=@`= ھ`=*Ͼ`=@`=*Ͼ`=`=w9=ҾmQ=L3Ҿ`==Ҿ==Ҿ=L3Ҿ`=J<Ҿ=J<Ҿ=L3Ҿ`=L3Ҿ=Œ=Ҿ`=L3Ҿ`=1r=Ҿ=1r=Ҿ=L3Ҿ`=w9=ҾmQ=cJҾ=L3Ҿ`=Ҿ=Ҿ=L3Ҿ`={w9ҾmQ=L3Ҿ=L3Ҿ`=cJҾ=rҾ={w9ҾmQ=Ҿ`=Ҿ`={w9ҾmQ=L3Ҿ`=L>FNѾL>ħ<@>FNѾ@>FNѾL>ħ<@>ħʛB@>m@>jL>ʛB@>jL>jL>j@>j@>:6>L>j@>:6>L>:6>L>:6>@>:6>@>fL>:6>@>fL>fL>`=L>f@>`=@>`=L>f@>f@>ħħ<@>ħ!=@>ħ!=L>ħħ`=@>ħ!=L>ħ`=]d;>ħ!=]d;>ħ!=L>ħ`=]d;>ħ`=L>ħ>КL>ʛBL>ħʛBL>jL>`=L>ħ`=L>fL>fL>ħ`=L>ħfL>ħ:6>L>:6>L>ħj@> ھ!=@>ħ!= > ھ!= > ھ!=@>ħ!=]d;>ħ!= > ھ!=]d;>ħ!= > ھ`= > ھ`=]d;>ħ!=]d;>ħ`=@><^><^@>`=@`=`=@<^@<^`=<^@>`=><^>`=LƧLh@<6>L<6>L<6>@<6>@jL<6>@jLjLj@j@!mLj@!mLʛBLƧ`=L`=LƧLʛBLHNѾLƧ ھ!=Wd;Ƨ!=@ ھ!=@ ھ!=Wd;Ƨ!=@Ƨ!=Wd;Ƨ!= ھ!=Wd;Ƨ`=Wd;Ƨ`= ھ!= ھ`=ft龚ftՕᆭ*\ǽU۾1\ǽU۾1ftՕᆭ*\ǽ6ᾫAQ1ྸCQ ھ35ھ3Q1ྸC5ھ3ྤCྤC5ھ3pھy3ྤCpھy3%*C%*Cpھy3BĽھ2%*CBĽھ2BĽ#gBBĽ#gBBĽھ2\ǽU۾1BĽ#gB\ǽU۾1\ǽ6ᾫA$=1ྸCQ=1ྸCQ= ھ3Q ھ3Q1ྸC$1ྸCQ ھ3$1ྸC%$31ྸC$=1ྸCQ= ھ3%$31ྸC%$31ྸCQ= ھ3Q ھ3(=6ᾫA(=U۾1B=ھ2(=6ᾫAB=ھ2B=#gBB=#gBB=ھ2=pھy3B=#gB=pھy3=%*C=%*C=pھy3=5ھ3=%*C=5ھ3=ྤC=ྤC=5ھ3Q= ھ3=ྤCQ= ھ3Q=1ྸC(=U۾1(=6ᾫAlt>龚lt>龚(=6ᾫAlt>Օᆭ*L3Ҿ`=Œ=Ҿ`=>*Ͼ`=*Ͼ`=L3Ҿ`=>*Ͼ`=*Ͼ`=Ҿ`=L3Ҿ`=>*Ͼ`=>*Ͼs.E*Ͼ`=3 ھ=bJ ھ=8 ھ5= ھ`=Q ھ38 ھ5={w9 ھmQ=8 ھ5= ھ=8 ھ5=bJ ھ= ھ=Q ھ3 ھ!=@ ھ3 ھ!=@ ھ!=@ ھ3 ھ`=8 ھ5=r ھ=8 ھ5={w9 ھmQ=r ھ=w9= ھmQ=8 ھ5=1r= ھ=8 ھ5=Œ= ھ`=1r= ھ=@> ھ!= > ھ!=@> ھ3 > ھ!=Q= ھ3@> ھ3J< ھ=3 ھ=8 ھ5=Q= ھ38 ھ5=Q ھ3 ھ`= ھ!= ھ`= ھ!=Q ھ3 ھ`=Q= ھ3 > ھ!=Œ= ھ`=Q= ھ3Œ= ھ`=8 ھ5== ھ=J< ھ=8 ھ5== ھ=8 ھ5=w9= ھmQ=!>@m"PS >UH#=ML!>@m"#=MLGZ=ON4[B~'/>^@m"GZ=ON4[B~C> (\'/>^ (\GZ=ON4[B~$b=YʉvP>qC> (\$b=Yʉvc> ƽ]辨P>q$b=Yʉv>>ھ >Ʉ ">9lό>>ھt>dX޾ >Ʉc> ƽ]$b=Yʉv=]uc> ƽ]辴=]um=ftrvɎm>ս7很c> ƽ]m=ftrvɎm>ս7m=ftrv$=xNzwɎm>ս7$=xNzw=Y ~t>dX޾Ɏm>ս7徤=Y ~t>dX޾=Y ~Z >|kt>dX޾Z >|k >Ʉ#QLPS UH!Hm"#QL!Hm"EZSN4[B~EZSN4[B~!Hm"'/bLCʾF> 7þF>LCʾ[> 5%B>߽+ >>jLl OͽN "΄=Y ~ >OͽZ >|kkltrvI~2Oͽ$=xNzw >Oͽ=Y ~`p>>jLlm> [> 5 >>jLlz&> 7þF> 7þkltrv2Oͽ|z1itrv >>jLl2Oͽz&> 7þ`p>>jLl[> 5F> 7þ[> 5 >>jLlF> 7þ&4>Oͽ >Oͽ%B>߽+ >Oͽ >>jLl%B>߽+[4OͽNC[ OͽNC[ @jLl Oͽm> `p>>jLl`p>Qګ`p>>jLlw>>jLl`p>Qګ;X>LCʾQ>8@0`p>LCʾQ>8@0w>>jLl`p>LCʾQ>8@0;X>LCʾz>6kþ;X>LCʾz>/>`Ǿz>6kþ`p>LCʾF>LCʾF>XX׾`p>LCʾF>XX׾`p>XX׾;X>LCʾ`p>LCʾt>XX׾`p>LCʾ`p>XX׾t>XX׾NC[/ZQ[7vNC[Q[7v @jLlz0>`Ǿ9XLCʾz6kþ9XLCʾ,h#z6kþF> 7þ`p>LCʾ`p>>jLl`p>LCʾw>>jLl`p>>jLlF 7þQ[7v>t5cF89XLCʾtZX׾F 7þ9XLCʾF 7þ,h#FLCʾF 7þtZX׾FLCʾtZX׾FZX׾-\Υ1# Oͽ-\Υ Oͽ "΄ >ɄZ >|k >Oͽ >Ʉ >Oͽ ">9lόN Oͽ2OͽN2OͽI~ Oͽ1#%,!Y Oͽ%,!Y[4Oͽ|I#>L ">9lό >Oͽ|I#>L >Oͽ&4>Oͽ2Oͽ$=xNzwm=ftrv2Oͽm=ftrv|z1itrv!w@jLl,h#F 7þ!w@jLlF 7þ>t5cF8 >Oͽ$=xNzw2Oͽ >Oͽ2Oͽ >>jLl@>4D˾@>ԕᆭ*_K(>3;c<^*Ͼs.E>*Ͼs.E<^>*Ͼs.E><^$=3;cB=#gB=%*C%*C$3;cྤC>3;c@>4D˾_K(>3;cBĽ#gB$3;c%*Cu <ػmʥ$=3;c$3;c$=3;c%$31ྸC$3;c$=3;cu <ػmʥ>3;cu <ػmʥ@>4D˾>3;c$3;c~3;cu <ػmʥ~3;c@6D˾u <ػmʥ<#J=Iu <ػmʥ6#JI@>4D˾u <ػmʥ<#J=I\ǽ6ᾫAftՕᆭ*~3;cftՕᆭ*@֕ᆭ*~3;c\ǽ6ᾫA~3;c$3;c\ǽ6ᾫA$3;cBĽ#gBQ1ྸC$3;c$1ྸC$3;c%$31ྸC$1ྸCQ=1ྸC$=1ྸC$=3;c$=1ྸC%$31ྸC$=3;c(=6ᾫAB=#gB$=3;c(=6ᾫA$=3;c>3;c>3;c_K(>3;clt>Օᆭ*_K(>3;c@>ԕᆭ*lt>Օᆭ*mUjj>/׾M>(}~>yƾ2>/׾M>YNEʾ89>YNEʾ89>/׾M> c̾U=>m/׾==y>/׾=lվףP>l/׾ףP>N6վIR>Q&վzV>/׾\>oվ\>,QKOX>="VqW>"VqW>=ռV>=7>= 0>v@h#>33þr)>ֱAC>Zvþo*>yƾ2>(>"VqW>Dގt\>OyQlϼ\>~{KOX>7ۻ缾\>7ۻ缾\>~{KOX>"VqW>7ۻ缾\>"VqW>Y{,\>Y{,\>"VqW>ODގt\>"VqW>㽼꽾\>㽼꽾\>"VqW>ռV>㽼꽾\>ռV>vc\>vc\>ռV>qZ\>qZ\>ռV>\>\>ռV>T>\>T>!7O\>!7O\>T>SwQ>!7O\>SwQ>T`T¾\>08EǾ\>rƾ\>pN>pN>rƾ\>CJž\>pN>CJž\>rþ\>T`T¾\>SwQ>_YK¾\>_YK¾\>SwQ>rþ\>rþ\>SwQ>pN>ܻ;\>ͰN˾\>bJD>bJD>ͰN˾\>ɾ\>08EǾ\>pN>ɾ\>ɾ\>pN>͑/I>ɾ\>͑/I>bJD>oվ\>bJD>=̽8J>> 0>W wѾH>=7>=7>W wѾH>lվףP>=7>lվףP>N6վIR>=7>N6վIR>Q&վzV>=7>Q&վzV>=̽8J>>=̽8J>>Q&վzV>oվ\>(>yƾ2> 0>yƾ2>YNEʾ89> 0> 0>YNEʾ89> c̾U=> 0> c̾U=>X ;A> 0>X ;A>W wѾH>Zvþo*>(>33þr)>33þr)>(>ֱAC>>>mUjj>ֱAC>>>ֱAC>>>ֱAC>mUjj>(}~>ֱAC>(}~>v@h#>>>/׾M>mUjj>bJD>͑/I>͑/I>pN>pN>SwQ>̽8J>>=7>=7>,QKOX>"VqW>"VqW>,QKOX>"VqW>~{KOX>ռV>ռV>"VqW>"VqW>ռV>"VqW>ռV>T>ռV>pN>SwQ>SwQ>SwQ>SwQ>T>T>SwQ>T>T>T>ռV>͑/I>pN>͑/I>͑/I>pN>pN>͑/I>bJD>bJD>=7>=̽8J>>̽8J>>̽8J>>=̽8J>>bJD>̽8J>>bJD>bJD> 0>=7> 0> 0>=7>=7>(> 0>(>(> 0> 0>ֱAC>>>ֱAC>(>ֱAC>ֱAC>(>ֱAC>(>J=վ\>= <>Jd=iҾ\>Jd=iҾ\>= <>6=B>Jd=iҾ\>6=B>=Ͼ\>=Ͼ\>6=B>#=VϾ\>#=VϾ\>6=B>=F8;\>=F8;\>6=B>Т=@H>=F8;\>Т=@H>J=Ȱʾ\>Bue=`<þ\>=ľ\>=M>=ľ\>o0=!vƾ\>=M>=M>o0=!vƾ\>6=l!Ⱦ\>=M>6=l!Ⱦ\>Т=@H>Т=@H>6=l!Ⱦ\>=*WȾ\>Т=@H>=*WȾ\>J=Ȱʾ\>V%=5AT>Q=\>7=\>V%=5AT>7=\>z3\= Q>z3\= Q>7=\>Q0=\>Bue=`<þ\>=M>z3\= Q>Bue=`<þ\>z3\= Q>a= þ\>a= þ\>z3\= Q>J=+\>J=+\>z3\= Q>Q0=\>}~^<]\><]\>~^0; Ҽ\>0; Ҽ\>~^~{KOX>0; Ҽ\>~{KOX>yQlϼ\>}+<`\>~^~^+<`\><^\>~^<^\><^\><(\><(\>V%=5AT>V%=5AT><(\>^V%=5AT>^Q=\>y> u>y>K>&>lx>&>lx>\>mL >>o>y> u>&>lx>>o>\>mL >&>lx>>DQ #>>DQ #>&>lx>&>s¾A)>&>s¾A)>&>lx>f >#>&>s¾A)>f >#>43>ƾ1%2>43>ƾ1%2>f >#>6>ɾfN7>6>ɾfN7>f >#>>ʾ+5;>>ʾ+5;>f >#>>,>>ʾ+5;>>,>G* >ϾyD>G* >ϾyD>>,>{=j4>G* >ϾyD>{=j4>i>վEP>= <>J=վ\>i>վEP>i>վEP>{=j4>= <>0; Ҽ\>yQlϼ\>Q/׾\>a= þ\>J=+\>Q/׾\>=F8;\>Q/׾\>#=VϾ\>o0=!vƾ\>Q/׾\>6=l!Ⱦ\>>DQ #>y>/׾u>\>mL >\>mL >y>/׾u>y> u>\>mL >y> u>>o>i>վEP>l>/׾EP>y>/׾u>i>վEP>y>/׾u>G* >ϾyD>>ʾ+5;>G* >ϾyD>6>ɾfN7>6>ɾfN7>G* >ϾyD>y>/׾u>6>ɾfN7>y>/׾u>43>ƾ1%2>43>ƾ1%2>y>/׾u>>DQ #>43>ƾ1%2>>DQ #>&>s¾A)>=,QKOX>~^<W>y>=y> u>y>/׾=y>/׾=y> u>y>/׾u>=y>=y>/׾=J=վ\>I=/׾\>l>/׾EP>J=վ\>l>/׾EP>i>վEP>~^<W>,QKOX>~{KOX>~{KOX>~^~^<W>~^<W>~^<V>~^<V><V>V%=5AT><V>V%=5AT>U%=5AT>U%=5AT>V%=5AT>z3\= Q>U%=5AT>z3\= Q>y3\= Q>y3\= Q>z3\= Q>=M>z3\= Q>=M>=M>=M>=M>Т=@H>=M>Т=@H>Т=@H>Т=@H>Т=@H>6=B>Т=@H>6=B>6=B>6=B>6=B>= <>6=B>= <>= <>= <>= <>ʀ=j4>= <>{=j4>ʀ=j4>ʀ=j4>{=j4>>,>{=j4>>,>>,>>,>>,>f >#>>,>f >#>f >#>&>lx>y>K>&>lx>&>lx>&>lx>f >#>&>lx>f >#>f >#>y>=y>K>y> u>=m/׾=/׾M>=>>>>=/׾M>>>/׾M>/׾\>l/׾ףP>Q/׾\>/׾\>/׾M>Q/׾\>/׾M>m/׾=Q/׾\>m/׾=y>/׾=y>/׾u>l>/׾EP>I=/׾\>Q/׾\>y>/׾=y>/׾u>Q/׾\>y>/׾u>I=/׾\>=T>ռV>=>>ֱAC>y>=&>lx>y>K>̽8J>>==7>=~^<W><V>(>=ֱAC>f >#>&>lx>y>= 0>=(>>,>f >#>y>=pN>=͑/I>T>=SwQ>SwQ>=pN>͑/I>=bJD>bJD>=̽8J>>ʀ=j4>>,>y>== <>ʀ=j4>y>=6=B>= <>y>=Т=@H>6=B>y>==M>Т=@H>y>=y3\= Q>=M>y>=U%=5AT>y3\= Q>y>=<V>U%=5AT>y>=y>==<V>X ;A> c̾U=>/׾M>X ;A>/׾M>W wѾH>Zvþo*>33þr)>/׾M>Zvþo*>/׾M>yƾ2>/׾M>33þr)>v@h#>/׾M>v@h#>(}~>W wѾH>/׾M>l/׾ףP>W wѾH>l/׾ףP>lվףP>l/׾ףP>/׾\>Q&վzV>l/׾ףP>Q&վzV>N6վIR>TӽiѾ\>oվ\>/׾\>bJD>0½ξ\>ܻ;\>bJD>TӽiѾ\>0½ξ\>bJD>oվ\>TӽiѾ\>=Ͼ\>#=VϾ\>Q/׾\>=*WȾ\>6=l!Ⱦ\>Q/׾\>Bue=`<þ\>a= þ\>Q/׾\>Jd=iҾ\>I=/׾\>J=վ\>T`T¾\>_YK¾\>Q/׾\>Q/׾\>I=/׾\>=Ͼ\>I=/׾\>Jd=iҾ\>=Ͼ\>TӽiѾ\>/׾\>0½ξ\>/׾\>Q/׾\>0½ξ\>Q/׾\>Y{,\>OQ/׾\>ODގt\>7ۻ缾\>Y{,\>Q/׾\>7ۻ缾\>Q/׾\>yQlϼ\>㽼꽾\>vc\>Q/׾\>㽼꽾\>Q/׾\>Dގt\>Q/׾\>\>!7O\>Q/׾\>!7O\>T`T¾\>Q/׾\>vc\>qZ\>Q/׾\>qZ\>\>Q/׾\>_YK¾\>rþ\>Q/׾\>rþ\>CJž\>Q/׾\>}<]\>Q/׾\><]\>0; Ҽ\>Q/׾\>^<(\>Q/׾\><(\><^\>Q/׾\>CJž\>rƾ\>Q/׾\>rƾ\>08EǾ\>Q/׾\>08EǾ\>ɾ\>Q/׾\>ɾ\>ͰN˾\>Q/׾\>ͰN˾\>ܻ;\>Q/׾\>ܻ;\>0½ξ\>Q/׾\><^\>+<`\>Q/׾\>+<`\>}Q/׾\>7=\>Q=\>Q/׾\>Q=\>^Q0=\>7=\>Q/׾\>Q0=\>Q/׾\>J=+\>=ľ\>Bue=`<þ\>Q/׾\>=ľ\>Q/׾\>o0=!vƾ\>J=Ȱʾ\>=*WȾ\>Q/׾\>J=Ȱʾ\>Q/׾\>=F8;\>*Ͼ`=*Ͼs.E<^>*Ͼs.E*Ͼs.E*Ͼ`= @jLlQ[7vF 7þL>КLHNѾLʛB2Oͽ Oͽ @jLlL>FNѾL>>КL>ħКLʛB@!mL>>КL>К@!mL>>К@!m@>mL>>К@>mL>ʛB@><^@>m><^@>m@!m><^><^@!m<^<^@!m@<^??????$?D?$?D?$?D?$?D?$?D?$?D?ɝ$?D?ɝ$?D?$?D?ɝ$?D?j$?D?j$?D?j$?D?j$?D?j$?D?j$?D?j$?D?j$?D?~$?%D?~$?%D?~$?%D?~$?%D?~$?%D?~$?%D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?$?D?}$D}$D}$DԷQ9$DԷQ9$DԷQ9$D$D$D$DԷQ$DԷQ$DԷQ$D Q9}$D Q9}$D Q9}$DԷ8$DԷ8$DԷ8$Dj$Dj$Dj$Dj$Dj$Dj$D Q}$D Q}$D Q}$D Q9}$D Q9}$D Q9}$D$D$D$D$D$D$Db8j$Db8j$Db8j$Dj$Dj$Dj$D$D$D$D$D$D$D$D$D$DԷѸ$DԷѸ$DԷѸ$D$D$D$D$D$D$Dj$Dj$Dj$DbѸj$DbѸj$DbѸj$D~Q$D~Q$D~Q$DxhT>nxhT>nxhT>nxhT>nxhT>nxhT>nCj[k>Cj[k>Cj[k>Cj[k>Cj[k>Cj[k>k[>~yk[>~yk[>~yl[! >l[! >l[! >FHs>U̾FHs>U̾FHs>U̾xHb>{G̾xHb>{G̾xHb>{G̾HϪ>7X̾HϪ>7X̾HϪ>7X̾ZH>tL̾ZH>tL̾ZH>tL̾ԣ2%zB?1#t>%zB?1#t>%zB?1#La>yuB?:#La>yuB?:#La>yuB?:#5b>{B? #5b>{B? #5b>{B? #5b>{B? #5b>{B? #5b>{B? #>=? >=? >=? t[>H=?_(t[>H=?_(t[>H=?_([>A=?U![>A=?U![>A=?U!h>=?1h>=?1h>=?1>5?]>5?]>5?]>5?]>5?]>5?]6>Ш5?s6>Ш5?s6>Ш5?s>֮5?l>֮5?l>֮5?lF>#*?;F>#*?;F>#*?;n(>*?n'n(>*?n'n(>*?n'F>#*?;F>#*?;F>#*?;>*?<)>*?<)>*?<)??#??#??#??#??#??#J?E?J?E?J?E?J?E?J?E?J?E?2? ?뾓2? ?뾓2? ?\2?y ?'\2?y ?'\2?y ?'뾹2?v ?뾹2?v ?뾹2?v ?ԣ2?b̾@H?>b̾@H?>b̾H?E>K̾H?E>K̾H?E>K̾ZH?>tL̾ZH?>tL̾ZH?>tL̾mH?:Z>̾mH?:Z>̾mH?:Z>̾/m[?>/m[?>/m[?>q[? >kq[? >kq[? >kgh[?>7gh[?>7gh[?>7q[? >kq[? >kq[? >kxh?T>nxh?T>nxh?T>nxh?T>nxh?T>nxh?T>n ?? ?? ??\l6l ?qu>\l6l ?qu>\l6l ?qu>2D(?4ё>2D(?4ё>2D(?4ё>"2 (? ё>"2 (? ё>"2 (? ё>02(?ܑ>02(?ܑ>02(?ܑ>~N0+?.>~N0+?.>~N0+?.>O,;1?f>O,;1?f>O,;1?f>8(7?s>8(7?s>8(7?s>׫+)2?3>׫+)2?3>׫+)2?3>R(6?tq>R(6?tq>R(6?tq>&8? m>&8? m>&8? m>{&X8?; m>{&X8?; m>{&X8?; m>O3?@'?>O3?@'?>O3?@'?>.?p.?O>.?p.?O>.?p.?O>46?: ?N>46?: ?N>46?: ?N>`1?(? >`1?(? >`1?(? >\3?-'?4>\3?-'?4>\3?-'?4>n3?L'?Z>n3?L'?Z>n3?L'?Z> .?-.?!> .?-.?!> .?-.?!>R(?6?tq>R(?6?tq>R(?6?tq>G$?2;?Ia>G$?2;?Ia>G$?2;?Ia>e(?7?^r>e(?7?^r>e(?7?^r>%?w:?2j>%?w:?2j>%?w:?2j>B?єD?LF>B?єD?LF>B?єD?LF>[ϓ>t?=[ϓ>t?=[ϓ>t?=_ۓ>)t?=_ۓ>)t?=_ۓ>)t?=ޓ>t?=ޓ>t?=ޓ>t?=YG>={?y={?y={?y<G>: {? y<G>: {? y {?Ey! {?az={?y={?y<O=U~?CD;O=U~?CD;O=U~?CD;O=U~?CD;O=U~?CD;O=U~?CD;=~?ƝD;=~?ƝD;=~?ƝD;?k?k?k?k?k?k?k?k?kɽ~?ƝD;ɽ~?ƝD;ɽ~?ƝD;OɽU~?CD;OɽU~?CD;OɽU~?CD;OɽU~?CD;OɽU~?CD;OɽU~?CD;G! {?azW4w>W4w>W,u>qW,u>qW,u>qW'\(>5W'\(>5W'\(>5W:qa:qa:qa!a!a!a Ia Ia Iaž?ǽjž?ǽjž?ǽjž?ǽjž?ǽjž?ǽjžLȽjžLȽjžLȽjLrLrLr^KπCr^KπCr^KπCr?ЀEr?ЀEr?ЀEr1x,h5x1x,h5x1x,h5x:x9/x3x:x9/x3x:x9/x3xzRx1xzRx1xzRx1x0'y5|0'y5|0'y5|'yF|'yF|'yF|R'R||R'R||R'R||:)Q:)Q:)QO]'K5O]'K5O]'K5dD dD dD -:-:-:-:-:-:-:-:-:=dD =dD =dD O]='K5O]='K5O]='K5:)=Q:)=Q:)=QR'>R||R'>R||R'>R||'>yF|'>yF|'>yF|0'>y5|0'>y5|0'>y5|zRx>1xzRx>1xzRx>1x:x>9/x3x:x>9/x3x:x>9/x3x1x>,h5x1x>,h5x1x>,h5x?>ЀEr?>ЀEr?>ЀEr^K>πCr^K>πCr^K>πCr>Lr>Lr>Lr>LȽj>LȽj>LȽj>?ǽj>?ǽj>?ǽj>?ǽj>?ǽj>?ǽj> Ia> Ia> Ia>!a>!a>!a>:qa>:qa>:qad'?>4Wd'?>4Wd'?>4W,?u>qW,?u>qW,?u>qWt%?듾5@t%?듾5@t%?듾5@<?A<?A<?A0 ?s_L0 ?s_L#- ?sL-; ?}sL-; ?}sL-; ?}sL4 ?7s{L4 ?7s{L4 ?7s{L ?p]>W ?p]>W ?p]>W>**?>**?>**?**?**?**?ɲ?ɲ?ɲ?o-?o-?o-?^?^?^?%D~$?%D~$?%D~$?%D~$?%D~$?%D~$?$?D?$?D?$?D?į$?C?į$?C?į$?C?-#?D?-#?D?-#?D?$?D?$?D?$?D?$?D?$?D?$?D?j$?D?j$?D?j$?D????????????????I9$DI9$DI9$D$D$D$DbѸj$DbѸj$DbѸj$Dj$Dj$Dj$D$D$D$D8$D8$D8$D??????????????????Q>@z?Q>@z?Q>@z?Q@z?Q@z?Q@z?rP?rP?rP?rP?rP?rP?p;xj?p;xj?p;xj?p;xj?p;xj?p;xj?^;݀j?^;݀j?^;݀j?p;-vj?p;-vj?p;-vj?Q@z?Q@z?Q@z?????????????Q>@z?Q>@z?Q>@z?i>t~j?i>t~j?i>t~j?p>-vj?p>-vj?p>-vj?p>xj?p>xj?p>xj??rP??rP??rP??rP??rP??rP?p>xj?p>xj?p>xj??????????????????????%D~$?%D~$?%D~$?%D~$?%D~$?%D~$?į$?C?į$?C?į$?C?E#?D?E#?D?E#?D?$?D?$?D?$?D?$?D?$?D?$?D?j$?D?j$?D?j$?D?$?D?$?D?$?D????????????????????????????????????????????????????$D$D$D$D$D$Ds;6?Q3?s;6?Q3?s;6?Q3?D7?Y2?D7?Y2?D7?Y2?W?; ?W?; ?W?; ?W?; ?W?; ?W?; ?Ao?Q>Ao?Q>Ao?Q>Ao?Q>Ao?Q>Ao?Q>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>??????????????????f\m;f\m;f\m;f\m;f\m;f\m;????????????$D$D$D$D$D$DGw?r>Gw?r>Gw?r>Gw?r>Gw?r>Gw?r>Ao?Q>Ao?Q>Ao?Q>Ao?Q>Ao?Q>Ao?Q>W?; ?W?; ?W?; ?W?; ?W?; ?W?; ?t6?iR3?t6?iR3?t6?iR3?ua7?[2?ua7?[2?ua7?[2?f\?m;f\?m;f\?m;f\?m;f\?m;f\?m;5?z ש>5?z ש>5?z ש>5?z ש>5?z ש>5?z ש>U=*C#?U=*C#?U=*C#?=>-C#?=>-C#?=>-C#?}>=;y?}>=;y?}>=;y?>֔>f;;p?>֔>f;;p?>֔>f;;p?>,b?>,b?>,b?A>8, ?A>8, ?A>8, ?O"?jy>O"?jy>O"?jy>l"?Ef>l"?Ef>l"?Ef>D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?Q">Q">Q">_}"ߎD>_}"ߎD>_}"ߎD>f,m?f,m?f,m?a>,B%?a>,B%?a>,B%?zH;}?zH;}?zH;}?>֔f;;p?>֔f;;p?>֔f;;p?UȽ*C#?UȽ*C#?UȽ*C#?ȽE,C#?ȽE,C#?ȽE,C#?4 8>4 8>4 8>4 8>4 8>4 8>????????????)V>l?Ҁ=)V>l?Ҁ=)V>l?Ҁ=l;>l?ٝ=l;>l?ٝ=l;>l?ٝ=l;>l?ٝ=fa>}l?bр=l;>l?ٝ=q>a?Ϋ=q>a?Ϋ=q>a?Ϋ= i>a?x= i>a?x= i>a?x=q>a?Ϋ=q>a?Ϋ=q>a?Ϋ=?!^U?>?!^U?>?!^U?>?0D?McH>?0D?McH>?0D?McH>!?F?X=>!?F?X=>!?F?X=>?f[?==?f[?==?f[?==&?uW?>&?uW?>&?uW?> ?KU?dO > ?KU?dO > ?KU?dO > ? S?&> ? S?&> ? S?&>j'?M?+(>j'?M?+(>j'?M?+(>c?'G?>>c?'G?>>c?'G?>>V?\O?x>V?\O?x>V?\O?x>d?ڈD? F>d?ڈD? F>d?ڈD? F>)Vl?Ҁ=)Vl?Ҁ=)Vl?Ҁ=l;l?ٝ=l;l?ٝ=l;l?ٝ=l;l?ٝ=fa}l?bр=l;l?ٝ=q뾁a?Ϋ=q뾁a?Ϋ=q뾁a?Ϋ= ia?x= ia?x= ia?x=q뾁a?Ϋ=q뾁a?Ϋ=q뾁a?Ϋ==,[?Q5==,[?Q5=#)[?"2=#YdW?Ւ>#YdW?Ւ>#YdW?Ւ>F zTU?6 >F zTU?6 >F zTU?6 > KU?dO > KU?dO > KU?dO > G?~>> G?~>> G?~>>G @?R>G @?R>G @?R>I?/5>I?/5>I?/5>F?W=>F?W=>F?W=>YY=J?h94>YY=J?h94>YY=J?h94>P?U>P?U>P?U>D$?D$?D$?Է8D$?Է8D$?Է8D$? 8D}$? 8D}$? 8D}$?ѸD$?ѸD$?ѸD$?8D$?8D$?8D$?8D$?8D$?8D$? 8D}$? 8D}$? 8D}$?D$?D$?D$?D$?D$?D$?Ѹ"DX$?Ѹ"DX$?Ѹ"DX$?`QDi$?`QDi$?`QDi$?Է8D$?Է8D$?Է8D$?D}$?D}$?D}$?D$?D$?D$?D$?D$?D$?ѸD$?ѸD$?ѸD$? 8D}$? 8D}$? 8D}$?D$?D$?D$?D$?D$?D$?Dj$?Dj$?Dj$?D$?D$?D$?ԷѸD$?ԷѸD$?ԷѸD$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?D$?r8O> >l8>>f8>z>ѸD$?ѸD$?ѸD$?Է8D$?Է8D$?Է8D$?Է8D$?Է8D$?Է8D$?~Q9D$?~Q9D$?~Q9D$?Dj$?Dj$?Dj$?8D$?8D$?8D$?b8Dj$?b8Dj$?b8Dj$?D}$?D}$?D}$?FHD$?FHD$?FHD$?D$?D$?D$?D$?D$?D$? QD}$? QD}$? QD}$?8D$?8D$?8D$?bѸDj$?bѸDj$?bѸDj$?D$?D$?D$?Ѹ"DX$?Ѹ"DX$?Ѹ"DX$?H+Dkz$?H+Dkz$?H+Dkz$?Dj$?Dj$?Dj$?'ѸD$?'ѸD$?'ѸD$?%D~$?%D~$?%D~$?*8%D~$?*8%D~$?*8%D~$?D$?D$?D$?*Ѹ%D~$?*Ѹ%D~$?*Ѹ%D~$?D$?D$?D$?D$?D$?D$?D$?D$?D$?~Q$D~Q$D~Q$D~$?%D?~$?%D?~$?%D?}$?D?}$?D?}$?D?_J$D~Q$D_J$DI$DI$DI$D$D$D$D~Q9$D~Q9$D~Q9$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$Dj$Dj$Dj$Db8j$Db8j$Db8j$Dj$Dj$Dj$D$D$D$DԷQ$DԷQ$DԷQ$D$D$D$D$D$D$D$D$D$D$D$D$DF:U$"DF:U$"DF:U$"D$D$D$Dj$Dj$Dj$Dj$Dj$Dj$DGoQ >GoQ >GoQ >lo`k!>lo`k!>lo`k!>o&>o&>o&> )V? )V? )V?;H\?;H\?;H\??????????Gr`>n #?Gr`>n #?Gr`>n #?jT?'?jT?'?jT?'?9a?_[?9a?_[?9a?_[?HYO>]?HYO>]?HYO>]? \ܼu?!\? \ܼu?!\? \ܼu?!\?W@$y>W~]?W@$y>W~]?W@$y>W~]?0r/?l/]?0r/?l/]?0r/?l/]?ma?[?ma?[?ma?[?{_?[?{_?[?{_?[? W۽>P\? W۽>P\? W۽>P\? K ?Z? K ?Z? K ?Z? O?Y? O?Y? O?Y?~P ?[}Z?~P ?[}Z?~P ?[}Z? :'X>Y? :'X>Y? :'X>Y?`I?.?W?`I?.?W?`I?.?W?q3DIi?W?q3DIi?W?q3DIi?W?)?nQ?)?nQ?)?nQ?h>2S?h>2S?h>2S?L{5?}T?L{5?}T?L{5?}T?_ۉ>VV?_ۉ>VV?_ۉ>VV?n_>ˬV?n_>ˬV?n_>ˬV?t,?|T?t,?|T?t,?|T?뭾M?K?뭾M?K?뭾M?K?ږ?]M?ږ?]M?ږ?]M?V?tQ?V?tQ?V?tQ?˃?ZP?˃?ZP?˃?ZP? \n>Q|L? \n>Q|L? \n>Q|L?t_Ǿ5U?E?t_Ǿ5U?E?t_Ǿ5U?E?2?7?2?7?2?7?b|?E5?b|?E5?b|?E5?rx޾d>??rx޾d>??rx޾d>??Ґྩ}>'V??Ґྩ}>'V??Ґྩ}>'V??2߾>Ճ??2߾>Ճ??2߾>Ճ??1⾬>a>?1⾬>a>?1⾬>a>? +>NO0? +>NO0? +>NO0? T?+,? T?+,? T?+,?;?\0?;?\0?;?\0?+A?N0?+A?N0?+A?N0?*>3?*>3?*>3?h ?#?h ?#?h ?#?)B¤?S&?)B¤?S&?)B¤?S&?> ???> ???> ???v3:Z6?v3:Z6?v3:Z6?c?>'P2?c?>'P2?c?>'P2?$ ?]Z?$ ?]Z?$ ?]Z?ѸѹѸѹѸѹɾk:8Vk?ɾk:8Vk?ɾk:8Vk?DžGQv?DžGQv?DžGQv? ,M~7}]? ,M~7}]? ,M~7}]?˷ѹ?˷ѹ?˷ѹ?I:?I:?I:?᾽Q~?᾽Q~?᾽Q~?ѹ~?ѹ~?ѹ~?݀7|?݀7|?݀7|?9Ѻv?9Ѻv?9Ѻv?G]Ѻzy?G]Ѻzy?G]Ѻzy?;]Pyy?;]Pyy?;]Pyy?Pѹ|?Pѹ|?Pѹ|?߫Q:%q?߫Q:%q?߫Q:%q?X﫾¸QG"q?X﫾¸QG"q?X﫾¸QG"q?yɾ;JXk?yɾ;JXk?yɾ;JXk?3ٶQ9]?3ٶQ9]?3ٶQ9]?gvQ9$d?[r Q9d?[r Q9d?gI"d?gI"d?gI"d?ၷT?ၷT?ၷT?~7T?~7T?~7T?NG@K?NG@K?NG@K?>K?>K?>K?x3G[6?x3G[6?x3G[6?L',A?L',A?L',A?H(&A?H(&A?H(&A?ʿ>+?P*E?ʿ>+?P*E?ʿ>+?P*E?G?/C?G?/C?G?/C?E>>U H?E>>U H?E>>U H?mS>Qo?CJ?mS>Qo?CJ?mS>Qo?CJ?F>h?JJ?F>h?JJ?F>h?JJ?>DC?J?>DC?J?>DC?J?a>>_M?a>>_M?a>>_M?p>U?KT?p>U?KT?p>U?KT?>G?S?>G?S?>G?S?:>>KR?:>>KR?:>>KR?q>T?O?q>T?O?q>T?O?S>H?zP?S>H?zP?S>H?zP?>i?~qO?>i?~qO?>i?~qO? >?Y? >?Y? >?Y?I>>Y?I>>Y?I>>Y?(>9?o{V?(>9?o{V?(>9?o{V?>>hT?>>hT?>>hT?U>?)W?U>?)W?U>?)W?MU>M?%W?MU>M?%W?MU>M?%W?>>n?LyW?>>n?LyW?>>n?LyW?J= >]?J= >]?J= >]?Ⱥ<?U[?Ⱥ<?U[?Ⱥ<?U[?`<|?\?`<|?\?`<|?\?+;>ӻ]?+;>ӻ]?+;>ӻ]?Q=9?\?Q=9?\?Q=9?\?=N?0[?=N?0[?=N?0[?(h=Y?[?(h=Y?[?(h=Y?[?]=3?=~[?]=3?=~[?]=3?=~[?> +>\?> +>\?> +>\?0=?LW?0=?LW?0=?LW?q >[?Y?q >[?Y?q >[?Y?uE4?҃k=*5?uE4?҃k=*5?uE4?҃k=*5?X?9>H?X?9>H?X?9>H? ?Z?b? ?Z?b? ?Z?b?Ɯ??("?Ɯ??("?Ɯ??("? ??."? ??."? ??."?L??Z"?L??Z"?L??Z"??cq>L'??cq>L'??cq>L'?q ?G?-?q ?G?-?q ?G?-?K ?I?,?K ?I?,?K ?I?,? ?EI? ,? ?EI? ,? ?EI? ,??>w1??>w1??>w1?. ?{n?4?. ?{n?4?. ?{n?4?6>?S6?6>?S6?6>?S6?>>->?>>->?>>->?Og>F(?F(?F(?n?~>n?~>\n? >\n? >\n? >o?c5>o?c5>o?c5>o?:Ts>o?:Ts>o?:Ts>n?}Q~>n?}Q~>n?}Q~>3o?HMԶ>3o?HMԶ>3o?HMԶ>o?K9g>o?K9g>o?K9g>n?Q>n?Q>n?Q>o?bs>o?bs>o?bs>hn?e:>hn?e:>hn?e:>??????????x|?Z%>x|?Z%>x|?W%>Vks|?W%>Vks|?W%>Vks|?if>Tk ky?if>Tk ky?if>Tk ky?Of>~7iy?Of>~7iy?Of>~7iy?ف>57H%u?ف>57H%u?ف>57H%u?؁>QF%u?؁>QF%u?؁>QF%u?>'7o?>'7o?>'7o?>BIo?>BIo?>BIo?>dHi?>dHi?>dHi?%>i?%>i?%>i?0>e;b?0>e;b?0>e;b?ə>+=b?ə>+=b?ə>+=b?E?..Y?E?..Y?E?..Y?0A?b8Y?0A?b8Y?0A?b8Y??R8P??R8P??R8P??gP??gP??gP?Y!?G5F?Y!?G5F?Y!?G5F?U!?.kF?U!?.kF?U!?.kF?m5?4?m5?4?m5?4?-?t ;?-?t ;?-?t ;?K-?,t;?K-?,t;?K-?,t;??)?)?)Q9Q9Q9Q9Q9Q9n:n:n:?????????????????????????????????????????????????????????????????????o7<>o7<>o7<>o&>o&>o&>)o.L>)o.L>)o.L>o~7>o~7>o~7>ok >ok >ok >ok;>ok;>ok;>o/&>o/&>o/&>n۷>n۷>n۷>~^\?~^\?~^\?gp%K\?gp%K\?gp%K\????ҭT?K?ҭT?K?ҭT?K?Ÿ}>0I?Ÿ}>0I?Ÿ}>0I?Wƾ:?t#F?Wƾ:?t#F?Wƾ:?t#F??????????07NI?07NI?07NI????????????????????????????????????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ????????????????????????????ѸD$?ѸD$?ѸD$?D$?D$?D$????]6+=g$?C?]6+=g$?C?]6+=g$?C?$$?QsD?$$?QsD?$$?QsD?$$?QsD?$$?QsD?$$?QsD?]6+g$?C?]6+g$?C?]6+g$?C?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?DH1H8?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y {>23|>{43|>a>23ϛ>a>23ϛ>{43|>|a43ϛ>a>23ϛ>|a43ϛ>B>23>B>23>|a43ϛ>B43>B>23>B43>dz">33>dz">33>B43>`z"33>dz">33>`z"33>hI>33̦>hI>33̦>`z"33>dI33̦>hI>33̦>dI33̦>R=33>R=33>dI33̦>R33>R=33>R33># `=33ݎ># `=33ݎ>R33> `33ݎ># `=33ݎ> `33ݎ><33><33> `33ݎ>镼33>G὚߉>nZ_>G὚|>G὚|>nZ_>M|>*>%Sz>N<@>f|>>%S>>%S>N<@>f|>M>||>>%S>M>||>>sh :>>sh :>M>||>ee>|>>sh :>ee>|>> VH>> VH>ee>|>;J~>|>> VH>;J~>|>>G8 {N>>G8 {N>;J~>|>ׅ>u|>ׅ>u|>>f|>>G8 {N> />%S>G=GI>]>%S%z>G=GI>G=߉>?>>]>%S%z>G=GI>?>>]>%S%z>?>>*>%Sz>*>%Sz>?>>U>|>*>%Sz>U>|>$>|>*>%Sz>$>|>N<@>f|>G=GI> />%S>{=/>{=/> />%S>٠=v2^>٠=v2^> />%S>`=%S>٠=v2^>`=%S>=>=i>=>=i>`=%S>eҘ=%S2>=>=i>eҘ=%S2>T|T|eҘ=%S2><%S>T|<%S>|!><%S> ͼ%S>|!>|!> ͼ%S>A.!v>A.!v> ͼ%S>YҘ%S2>A.!v>YҘ%S2>Q >Q >YҘ%S2>%S$>Q >%S$>GGI>GGI>%S$>/%S >GGI>/%S >G὚߉>G὚߉>/%S >sO^%SV>G὚߉>sO^%SV>nZ_>nZ_>sO^%SV>M|>M|>sO^%SV>5O%Snn>M|>5O%Snn>x$|>x$|>5O%Snn>r@h|>r@h|>5O%Snn>%S>r@h|>%S>Mx|>f|>D)|>G8 {N>G8 {N>D)|>ژ~|>G8 {N>ژ~|> VH> VH>ژ~|>Sk'k|> VH>Sk'k|>#g >#g >Sk'k|>Mx|>#g >Mx|>%S>eҘ="2>eҘ=%S2>`=">`=">eҘ=%S2>`=%S>`=">`=%S> />!> />!>`=%S> />%S> />!> />%S>]>!%z>]>!%z> />%S>]>%S%z>]>!%z>]>%S%z>)>!z>)>!z>]>%S%z>*>%Sz>)>!z>*>%Sz>>!>>!>*>%Sz>>%S>eҘ=%S2>eҘ="2><%S><%S>eҘ="2><"><%S><"> ͼ">E"0>YҘ%S2> ͼ"> ͼ">YҘ%S2> ͼ%S> ͼ"> ͼ%S><%S>"$>YҘ%S2>E"0>%S$>YҘ%S2>"$>%S$>"$>/%S >/%S >"$>/# >/%S >/# >sO^%SV>sO^%SV>/# >sO^#V>sO^%SV>sO^#V>5O%Snn>5O%Snn>sO^#V>6O#nn>5O%Snn>6O#nn>%S>%S>6O#nn>#>#>6O#nn>B43>#>B43>|a43ϛ>ϾL>[ھ('>{43|>{43|>[ھ('>|a43ϛ>|a43ϛ>[ھ('>ՂYL>|a43ϛ>ՂYL>#>ϾL>{43|>Ae̾>Ae̾>{43|>Ǿ|>> Ǿ|>We>|>>?e̾>>?e̾>We>|>{>23|>>?e̾>{>23|>>پP>B43>6O#nn>`z"33>`z"33>6O#nn>sO^#V>`z"33>sO^#V>dI33̦>dI33̦>sO^#V>/# >dI33̦>/# >R33>R33>/# >"$>"$>E"0>R33>R33>E"0> `33ݎ> `33ݎ>E"0>镼33>镼33>E"0> ͼ">镼33> ͼ"><33><33> ͼ"><">eҘ="2>`="># `=33ݎ>eҘ="2># `=33ݎ><33>eҘ="2><33><"># `=33ݎ>`=">R=33>R=33>`="> />!>R=33> />!>hI>33̦>]>!%z>dz">33>hI>33̦>]>!%z>hI>33̦> />!>B>23>)>!z>>!>B>23>>!>a>23ϛ>a>23ϛ>>!>>iҪ>a>23ϛ>>iҪ>{>23|>{>23|>>iҪ>>پP>]>!%z>)>!z>dz">33>dz">33>)>!z>B>23>G὚߉>G὚|>GGI>GGI>G὚|>GMム|>G=GI>G=Mム|>G=|>G=GI>G=|>G=߉>>f|>> Ǿ|>>G8 {N>>G8 {N>> Ǿ|>>?e̾>>G8 {N>>?e̾>> VH>>?e̾>>پP>> VH>> VH>>پP>>sh :>>sh :>>پP>>iҪ>>sh :>>iҪ>>%S>>%S>>iҪ>>!>Ae̾>Ǿ|>f|>ϾL>Ae̾>[ھ('>[ھ('>Ae̾>f|>[ھ('>f|>G8 {N>G8 {N> VH>[ھ('>[ھ('> VH>#g >[ھ('>#g >%S>[ھ('>%S>ՂYL>ՂYL>%S>#>{>23|>G=Mム|>{43|>{43|>G=Mム|>GMム|>;J~>|>>&|>ׅ>u|>>&|>>f|>ׅ>u|>>&|>{>23|>We>|>>&|>We>|>> Ǿ|>>f|>>&|>> Ǿ|>G=Mム|>>&|>G=|>&|>Ǿ|>{43|>Ǿ|>&|>f|>f|>&|>D)|>D)|>&|>ژ~|>ژ~|>&|>Sk'k|>Sk'k|>&|>Mx|>Mx|>&|>r@h|>{>23|>>&|>G=Mム|>U>|>G=|>$>|>$>|>G=|>>&|>$>|>>&|>N<@>f|>N<@>f|>>&|>M>||>M>||>>&|>ee>|>ee>|>>&|>;J~>|>r@h|>&|>x$|>x$|>&|>M|>GMム|>&|>{43|>M|>&|>G὚|>G὚|>&|>GMム|>y>Q>=Q`=QSpq= -"X BVq= -Vq= -Gz 1s馽 hJ= -<=z ёW=q= -W=q= -<=z ё=X 1W=q= -=X 1p=q= -p=q= -=X 1K=$ ͗q= `=Q`=y Q=* q= ] >~, >^ y x>^ y x> kۿ >* q= ] >* q= ] > kۿ >z6"O ,>* q= ] >z6"O ,>Y> 8>PH >ۋlC >VQ=VQ=ۋlC >@Lq >VQ=@Lq >ZQt=ZQt=@Lq >Q[_ >ZQt=Q[_ >ُ3 >r >Byu >枼q= F=r >枼q= F=r_ > >Vq= =; GZ >; GZ >Vq= =枼q= F=; GZ >枼q= F=ԏz >ԏz >枼q= F=Byu > >2Ed >Vq= =Vq= =2Ed >F 6T >Vq= =F 6T >* q= ] >* q= ] >F 6T >* >* q= ] >* >~, > 4tff>g4I# >) Q] >g4I# >ȁ.9cE >) Q] >) Q] >ȁ.9cE >VQ=VQ=ȁ.9cE >C >VQ=C >PH >h3Q>r׼E>Q# >Q# >r׼E>> ^>Q# >> ^>k:]>Q# >k:]>) Q] >) Q] >k:]>6pe)\>) Q] >6pe)\> 4tff>7 =Q] >=P >A}=V >A}=V >ax=xbr>7 =Q] >7 =Q] >ax=xbr>%k=:]>7 =Q] >%k=:]>N=QM>%k=:]>}=?i>N=QM>N=QM>}=?i>=N=QM>=-=Q# >-=Q# >=E;Ln>-=Q# >E;Ln>h3Q>h3Q>E;Ln>]'8WU>h3Q>]'8WU>r׼E>W=q= ==f $ >=, >W=q= ==, >D=q= r=D=q= r==, >ӎ=r  >D=q= r=ӎ=r  >=W >r= >r=_ >h=Qt=r=_ >l= >h=Qt=h=Qt=l= >`=|D >h=Qt=`=|D >َ= >h=Qt=َ= >x=&L >x=&L >=u >h=Qt=h=Qt==u >ldž=M >h=Qt=ldž=M >7 =Q] >7 =Q] >ldž=M >=P >uq=, I>bHy= ;p>6 =q= ] >E=q= E>z6="O ,>6 =q= ] >6 =q= ] >z6="O ,>#k=ۿ >6 =q= ] >#k=ۿ >uq=, I>bHy= ;p>6 =A} ] >6 =q= ] >6 =q= ] >6 =A} ] >W=q= =W=q= =6 =A} ] >#= x >W=q= =#= x >=f $ >>Q%;>q= %;">Q`=">Q`=>q= %;!>q= `=">Q`=!>q= `= >q= ==W >r= >D=q= r=D=q= r=r= >h=Qt=D=q= r=h=Qt=\=q= y=\=q= y=h=Qt=]=Qy=\=q= y=]=Qy= >q= = >q= =]=Qy= >Q= >q= = >Q=">Q`=ُ3 >r_ >ZQt=ZQt=r_ >枼q= F=ZQt=枼q= F=OQy=枼q= F=Pq= y=OQy=OQy=Pq= y=y Q=y Q=Pq= y=z q= =y Q=z q= =q= `=Q`=q= `=ۉQ%;ۉQ%;q= `=܉q= %;񵽋;KEG¾}Qx"޾񵽋;Qx"޾2424Qx"޾Q= *Xɺǹ cSǹ cSXɺV$ǹ cSV$U@e|bȾǹ cS⾭U@e|bȾwo߾Q8.q̾w8䅾ܾU@e|bȾU@e|bȾw8䅾ܾwo߾2gо 2)vپʾ jϾ 2)vپXxپʾ jϾʾ jϾXxپ)t~ھʾ jϾ)t~ھQ8.q̾Q8.q̾)t~ھw8䅾ܾ 2)vپ2gоgVH=(н< >㽽<(>㽽<(>㽹< >Y컃 潽<(>Y컃 L(L(Y컃 W ۽L(W ۽V(۽V(۽W ۽3e| ½V(۽3e| ½2e|(½2e|(½3e| ½ `2e|(½ ` (` (` `eν Z (`eν Zeν(Zeν(Zeν Zj 佃 >ټeν(Zj 佃 >ټi (>ټi (>ټj 佃 >ټ뽃 o;i (>ټ뽃 o;(o;(o;뽃 o;j 佃 ڬ<(o;j 佃 ڬټu(Uu(x<(o;i (ڬ<Nj=(r=(=(V=V=(=V(=<(=CQ(w=;((,A=(j彽<(>VH=(н=(Ih˽V=(`(m=R|>Y> 8>z6"O ,>(m=R|>z6"O ,> kۿ >#k=ۿ >z6="O ,>(m==R|>(m==R|>z6="O ,>E=q= E>(m==R|>E=q= E>(m=R|>(m=R|>E=q= E>Y> 8>uq=, I>#k=ۿ >(m==R|>uq=, I>(m==R|>bHy= ;p>bHy= ;p>(m==R|>C-x=Po|>bHy= ;p>C-x=Po|>6 =A} ] >6 =A} ] >C-x=Po|>T=a|>=XV}>#= x >n=a>}>n=a>}>#= x >6 =A} ] >n=a>}>6 =A} ] >T=a|>澎=0>ӎ=r  > =R~> =R~>ӎ=r  >=, > =R~>=, >=XV}>=XV}>=, >=f $ >=XV}>=f $ >#= x >/\=&H>r= >澎=0>澎=0>r= >=W >澎=0>=W >ӎ=r  >0\=+L>r=_ >/\=&H>/\=&H>r=_ >r= >r=_ >0\=+L>l= >l= >0\=+L>;=W<ڈ> =[>َ= >;=W<ڈ>;=W<ڈ>َ= >`=|D >;=W<ڈ>`=|D >l= >5=:̉>=u > =[> =[>=u >x=&L > =[>x=&L >َ= >y=@X>ax=xbr>A}=V >y=@X>A}=V >>=0:#>>=0:#>A}=V >=P >>=0:#>=P >ldž=M >>=0:#>ldž=M >5=:̉>5=:̉>ldž=M >=u >ax=xbr>y=@X>(m=Qk>ax=xbr>(m=Qk>%k=:]>%k=:]>(m=Qk>}=?i>}=?i>(m=Qk>E;Ln>E;Ln>(m=Qk>r׼E>r׼E>(m=Qk>(mQk>r׼E>(mQk>k:]>r >#\&H>Byu >Byu >#\&H>ھ0>XV}>2Ed > >XV}> >挽R~>挽R~> >; GZ >挽R~>; GZ >ھ0>ھ0>; GZ >ԏz >ھ0>ԏz >Byu >(m=R|> kۿ >+-xPo|>+-xPo|> kۿ >^ y x>+-xPo|>^ y x>Ta|>Ta|>^ y x>~, >Ta|>~, >* >Ta|>* >ba>}>ba>}>* >F 6T >ba>}>F 6T >XV}>XV}>F 6T >2Ed >k:]>(mQk>6pe)\>6pe)\>(mQk>*-xu5^>6pe)\>*-xu5^> 4tff> 4tff>*-xu5^>g4I# >g4I# >*-xu5^>Tg5>g4I# >Tg5>ȁ.9cE >ȁ.9cE >Tg5>aGrZ>ȁ.9cE >aGrZ>C >C >aGrZ>P؞>C >P؞>PH >挽n8>@Lq >ۋlC >挽n8>ۋlC >P؞>P؞>ۋlC >PH >@Lq >挽n8>Q[_ >Q[_ >挽n8>پxƈ>Q[_ >پxƈ>ُ3 >ُ3 >پxƈ>"\+L>ُ3 >"\+L>r_ >#\&H>r >"\+L>"\+L>r >r_ >̽Tx>̽ʁ>=Tx>=Tx>̽ʁ>=ʁ>=Tx>=ʁ>=Tx>=Tx>=ʁ>= ń>= ń>=ʁ>=;jM>= ń>=;jM>=속>=속>=;jM>0=) G>0=) G>=;jM>̽;jM>0=) G>̽;jM>̽속>̽속>̽;jM>̽ ń>̽ ń>̽;jM>̽ʁ>̽ ń>̽ʁ>̽Tx>-3 {>#\&H>mh ń>̽ ń>-3 {>mh ń>=Tx>-3 {>̽Tx>̽Tx>-3 {>̽ ń>=Tx>C-x=Po|>(m==R|>(m==R|>(m=R|>-3 {>-3 {>(m=R|>+-xPo|>-3 {>+-xPo|>Ta|>Ta|>ba>}>-3 {>-3 {>ba>}>XV}>-3 {>XV}>挽R~>-3 {>挽R~>ھ0>-3 {>ھ0>#\&H>(m==R|>-3 {>=Tx>澎=0> =R~>=Tx>=Tx> =R~>=XV}>=XV}>n=a>}>=Tx>=Tx>n=a>}>T=a|>=Tx>T=a|>C-x=Po|>mh ń> |>̽ ń>̽ ń> |>̽속>*-xu5^> |>Tg5>Tg5> |>aGrZ>mh ń>"\+L> |> |>"\+L>پxƈ> |>پxƈ>挽n8> |>挽n8>P؞> |>P؞>aGrZ>>=0:#>5=:̉>0=) G>0=) G>5=:̉> =[>0=) G>y=@X>>=0:#> =[>;=W<ڈ>0=) G>0=) G>;=W<ڈ>0\=+L>= ń>0\=+L>yh= ń>= ń>yh= ń>=Tx>=Tx>yh= ń>/\=&H>=Tx>/\=&H>澎=0>= ń>=Tx>= ń>=Tx>=Tx>= ń>>ݽQ`ٽ?5=\Q޼Q޼ٽ?5=\Ü?5ڼQ޼Ü?5ڼ?5o;Q޼?5o;Qo;Ü?5<ٽ?5ݽQiop=Qo;?5o;Ü?5<Qo;Ü?5ݽQiop=ٽ?5ݽQiop=?5j=Qzǩ=Qzǩ=?5j=?5B[=Qzǩ=?5B[="퍽QV="퍽QV=?5B[=H.?5="퍽QV=H.?5=W11Q=W11Q=H.?5=qQ!=qQ!=H.?5=hl?5=qQ!=hl?5=l=Qiop=>=Qiop=ޞ=?5ݽQ`QSٽ?5=\QS?5ݞ?5ݞQS?5*ƽ?5*ƽQS"퍽Qɽ?5*ƽ"퍽QɽH.?5H.?5"퍽QɽW11QH.?5W11Qhl?5hl?5W11QqQhl?5qQl=Q`ޞ=?5=\>=Q`.=Q޼ޞ=?5=\.=Q޼ќ=?5ڼќ=?5ڼ.=Q޼=?5o;=?5o;.=Q޼)=Qo;=?5o;)=Qo;ќ=?5<ќ=?5<)=Qo;.=Q$㽹< >㽪ټj 佃 >ټKq= ޼뽃 o;뽃 o;Kq= ޼q= o;뽃 o;q= o;j 佃 ڬh=V$U=@e|bȾ=V$=->h^=ɺ^=ɺ=->h~=hԹQ8=.q̾]94=B9qj˾U=@e|bȾU=@e|bȾ]94=B9qj˾k~=0|ƾU=@e|bȾk~=0|ƾ=->h2gо*h->hU@e|bȾV$Qc(:xhԹXɺXɺxhԹV$V$xhԹ->hWLtwn֪Qc(:Qc(:wn֪T9UQc(:T9UxhԹ]~箾ڝڣU&a-U&a-ڣpΨOpΨOڣWLtWLtڣwn֪]~箾ڝU&a-O94dx@O94dx@U&a-Q8w0<ַ[Ǯ3.A`׽3u׽3uǮ3.A`ַ[׽3uַ[ʾA큖ʾA큖ַ[Q8wQ8wַ[O94dx@KEG¾}8˳PžH㷽ܵľTtX[(3Ⱦ<[_9˾;Q1޾d[Z;3ݾ>;Q1޾77Oվڅ־77Oվڅ־>;Q1޾վ&׾77Oվڅ־վ&׾vuE*ܾҾyh= ń>0\=+L>/\=&H>mh ń>#\&H>"\+L>~, >* >F 6T >E;Ln>=}=?i>r׼E>]'8WU>E;Ln>k:]>> ^>r׼E>QV҇޾QV҇޾Qx"޾yܾQV޾QV޾QV޾QV޾Qx"޾QV҇޾QV҇޾Qx"޾QV҇޾QV҇޾Qx"޾QV҇޾QV҇޾Qx"޾yܾQV޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾yܾQV҇޾QV҇޾QV҇޾QV޾Qx"޾Gz 1Vq= -"X BxhԹ\;#-r->h_~0|ƾ->h\;#-r_~0|ƾ\;#-rQ94B9qj˾O94dx@ַ[\;#-rQ94B9qj˾\;#-rhRjvOξ0<ַ[_94=dx@\;#-r\;#-r_94=dx@m~=箾ڝ\;#-rm~=箾ڝ=ڣk~=0|ƾ]94=B9qj˾\;#-rk~=0|ƾ\;#-r=->h~=hԹ=->h\;#-r=ڣ=n֪\;#-r\;#-r]94=B9qj˾*;Q1޾8˳PžHfU 3;뾹վ&׾>;Q1޾fU 3;vuE*ܾҾվ&׾fU 3;S,T5 ;vuE*ܾҾfU 3;Օ[_9˾S,T5 ;fU 3;FD(3riRʾՕ[_9˾fU 3;<[_9˾FD(3riRʾfU 3;g,=T5 ;<[_9˾fU 3;H=;Q1޾=վ&׾fU 3;B˳=PžHH=;Q1޾fU 3;K=EG¾}B˳=PžHfU 3;K=EG¾}fU 3;=;.~== \2Q˄_ ~̽= \2=Q˄_2Q˄_.~== \.~== \ ~̽= \p -.~== \p -p= -=ʁ>̽ʁ>̽;jM>̽;jM>=;jM>=ʁ> |>0=) G>̽속>= ń>0=) G>0\=+L>= ń>0=) G>= ń>= ń>=속>0=) G>U>|>?>>G=|>?>>G=߉>G=|>\;#-rڣ]~箾ڝ\;#-r]~箾ڝO94dx@=վ&׾u=E*ܾҾfU 3;뾊u=E*ܾҾg,=T5 ;fU 3;pqQ!<ڼ.=Q޼>=Q`QSyQ"퍽QɽZQt="퍽QV=VQ=N=QM>-=Q# >pqh3Q>pqW11Q=Q# >W11Q=qQ!=Q# >QS>ݽQ`yQ>ݽQ`|! Ql>yQ>Q%;)=Qo;>Q!<ڼ)=Qo;.=Q޼>Q!<ڼ">Q`= >Q=.=Q$< >Q=>=Qiop=.=Q$<Qzǩ=OQy=>ݽQiop=OQy=y Q=>ݽQiop=Q`=Q$ݽQiop=y Q=OQy=Qzǩ=ZQt=Qzǩ="퍽QV=ZQt=Q޼Qo; QQo;ۉQ%; Q=Qzǩ=>=Qiop=]=Qy=>=Qiop= >Q=]=Qy=7 =Q] >N=QM>u11=Q=N=QM>pq"퍽QV=) Q] >VQ="퍽QV=">Q`=.=Q$<>Q%;.=Q$<)=Qo;>Q%;Qo;Q$<ۉQ%;Q$<Q`=ۉQ%;]=Qy=h=Qt==Qzǩ=h=Qt=0=QV==Qzǩ=u11=Q=0=QV=7 =Q] >0=QV=h=Qt=7 =Q] >>Q!<ڼ>=Q`! >Ql>>=Q`y>Q! >Ql>|! Ql>>ݽQ` Q>ݽQ`Q޼ Q0=Qɽy>Q=QS0=Qɽu11=Q录y>Qu11=Q彼2=Q˄_y>QQ# >qQ!=h3Q>qQ!=pqW11Q彮2Q˄_qQ2=Q˄_u11=Qpq:ѽq= ^q= ퟽q= 뽪q= !<ڼ=q= 9(`=q= kO"=v $ =" 4ȟ=1% E"=v $ȟ=1% E>q= "X Bpq= -~$ Kȗpq= -Q a~$ Kȗ" 4Vq= % Q" 4% Qȟ1% EQ= 8gQ= t0=q= 8Q= t0= )=q= 8* q= ] >Y> 8>uq= X=Y> 8>q= ==uq= X=Vq= =cq= j=枼q= F=E=q= E>6 =q= ] >L=q= =E=q= E>L=q= =q= ==Y> 8>=q= o;`=q= <>q= %;`=q= q= `=>q= %;l=q= >q= ȟ=1% EKq= ޼:ѽq= ^ q= :ѽq= ^}! q= l> q= Kq= ޼ q= q= o; q= ܉q= %;q= o;܉q= %;q= `=Kq= l<܉q= %;Kq= lq= =q= ! >q= l>>q= >q= %;>q= !<ڼ`=q= kO>q= %;`=q= kO=q= o;`=q= <=q= R8=!>q= `==q= R8= >q= =!>q= `== )"=v $=q= 8"=v $>q= =q= 8Vq= cq= 4ƽuq= ߽Vq= uq= ߽% QQ t0؎q= 8"v $؎q= 8q= "v $uq= ߽q= 뽔% Qq= 뽠=% Q% Q=q= =q= 9(! >q= l>=q= 9(>q= !<ڼ! >q= l>\=q= y= >q= ==q= = >q= ==q= R8==q= =l=q= ȟ=1% E=% Ql=q= =% QL=q= Խl=q= $=\=q= y==q= =L=q= =6 =q= ] >W=q= =L=q= =W=q= =l=q= $=* q= ] >uq= X=cq= j=* q= ] >cq= j=Vq= =q= ퟽Vq= q= q= ퟽q= }! q= l>D=q= r=\=q= y=l=q= $=D=q= r=l=q= $=W=q= =>Q!<ڼ>q= !<ڼ>q= %;>Q!<ڼ>q= %;>Q%;! >q= l>! >Ql>>q= ! >Ql>y>Q>q= p= -p=q= -.~== \p=q= -=q= 8.~== \>q= y>Q=q= 8y>Q2=Q˄_=q= 8>Q!<ڼ! >Ql>! >q= l>>Q!<ڼ! >q= l>>q= !<ڼ؎q= 82Q˄_yQ؎q= 8yQq= yQ|! Ql>q= |! Ql>}! q= l>q= QۉQ%;܉q= %; Q܉q= %; q= Q q= }! q= l> Q}! q= l>|! Ql>pq= -p - ~̽= \pq= - ~̽= \؎q= 8nW=ٱѾ8־&=Aξ׾<=z ё9*: -dWٱѾ8־뗽@Ծ' ԾeھަϾ9*: -뗽@Ծ' Ծ<=z ё=@Ծ' ԾnW=ٱѾ8־lJA[޾̾9*: -eھަϾN cɾ9*: -lJA[޾̾<=z ёo=ھަϾ=@Ծ' ԾlJ=A[޾̾o=ھަϾ<=z ё=h -h - R'3M(侐1Ǿh -9Ǿ R'3M(侐1Ǿ9Ǿh -N cɾh -9*: -N cɾ<9ǾN =cɾ=h -N =cɾhJ= -=h -hJ= -N =cɾlJ=A[޾̾hJ= -lJ=A[޾̾<=z ёp=q= -K=$ ͗Q= 8g=q= 8p=q= -Q= 8gi (>ټ(o;u(U(o;u(xټæ(C (`ƽ(uY (`eν(Zƽ(uY2e|(=æ(?t= (P=æ(?t=ƽ(ڏ= (P=2e|(=V(=CQ(w=2e|(=CQ(w=æ(?t=CQ(FڽV(۽2e|(½CQ(Fڽ2e|(½æ(CL(V(۽<(@MV(۽CQ(Fڽ<(@M;(N]=<(=L(%=<(=V(=L(%=A=(=;(N]=<(&p=;(N]=L(%=<(&p=;((,񽽉<(>L(潫;((,L(<(@M=(o=A=(=VH=(5=A=(=<(&p=VH=(5=A=(j彿=(Ih˽VH=(нA=(jVH=(н<(>㽽(=(V==(o=V=(==(o=VH=(5=V=(=V=(`=(Ih˽(=(q V=(`(=(q Nj=( T=(۝5='^=(Ut=Nj=(r='^=(Ut=(=(V=Nj=(r=Nj=( T(=(q '^=(dNj=( T'^=(d=(1%=(1%'^=(d =(=(1% =( =(PSK =(<< =(j==(۝5= =(j='^=(Ut==(۝5= =(PSK =(伖=(o; =(PSK=(o;&=(o;&=(o;=(o; =(<<=(o; =(j= =(<<??????????????????????????????????????????_l>:kw>_l>:kw>_l>:kw>>sk >>sk >>sk >b>ikH>b>ikH>b>ikH>u>M~kP>u>M~kP>u>M~kP>ؿ>kNj>ؿ>kNj>ؿ>kNj>>>k>>>k>>>k>F>Ғkˬ>F>Ғkˬ>F>Ғkˬ>r>_k>r>_k>r>_k>>\k>>\k>>\k>#>kŶ>#>kŶ>#>kŶ> V=>jǸ> V=>jǸ> V=>jǸ>n+>k_>n+>k_>n+>k_>2H>k~>2H>k~>2H>k~>8>Rk\>8>Rk\>8>Rk\>c>kg>c>kg>c>kg> d>k?> d>k?> d>k?>g=2k㞾>g=2k㞾>g=2k㞾>F:={j>F:={j>F:={j>=˘ki>=˘ki>=˘ki>M=k>M=k>M=k>tQ=k>tQ=k>tQ=k>R'=k]>R'=k]>R'=k]>X(=k>X(=k>X(=k>Hўk0>Hўk0>Hўk0>-k%>-k%>-k%>Ǥk-7>Ǥk-7>Ǥk-7>2(Fka>2(Fka>2(Fka>>ۛIk3>>ۛIk3>>ۛIk3>kz>kz>kz>|𽷩k>|𽷩k>|𽷩k>rkw>rkw>rkw>KuǦk>KuǦk>KuǦk>j@$jk>j@$jk>j@$jk>(kx>(kx>(kx>SE,k.>SE,k.>SE,k.>fI kN>fI kN>fI kN>kckW>kckW>kckW>cZk4>cZk4>cZk4>mk}>mk}>mk}>k>k>k>\_Kkv>\_Kkv>\_Kkv>41kw>41kw>41kw>oA k>oA k>oA k>"kA>"kA>"kA>AkӋ>AkӋ>AkӋ>+kӘ>+kӘ>+kӘ>dSk>dSk>dSk>U>Yz?U>Yz?U>Yz?U>Yz?U>Yz?U>Yz?>Xs?>Xs?>Xs?>Xs?>Xs?>Xs?4>si?4>si?4>si?4>si?4>si?4>si?&?h]?&?h]?&?h]?&?h]?&?h]?&?h]??N??N??N??N??N??N?jp=b~?jp=b~?jp=b~?jp=b~?jp=b~?jp=b~????u׽ѹѸO~?u׽ѹѸO~?u׽ѹѸO~?׽~?׽~?׽~????VIQz?VIQz?VIQz?UYz?UYz?UYz?oEs?oEs?oEs?GLs?GLs?GLs?{Ѿ i?{Ѿ i?{Ѿ i?{Ѿ i?{Ѿ i?{Ѿ i?Y1]?Y1]?Y1]?Y1]?Y1]?Y1]?7N?7N?7N?7N?7N?7N?־4?%,?־4?%,?־4?%,?9־]4?' ?9־]4?' ?9־]4?' ?mR4?0>mR4?0>mR4?0>s4?}1?s4?}1?s4?}1?5?d?5?d?5?d?_4? ?_4? ?_4? ?fh5?H>fh5?H>fh5?H>}6?>}6?>}6?>j ?5?>j ?5?>j ?5?> ?4?> ?4?> ?4?>&?5?>&?5?>&?5?>4R54?ϊ?4R54?ϊ?4R54?ϊ?`c4?F?`c4?F?`c4?F?a-4?@%?a-4?@%?a-4?@%?a-4?@%?a-4?@%?a-4?@%?N{a4?Y(,?N{a4?Y(,?N{a4?Y(,?]ba4?Q),?]ba4?Q),?]ba4?Q),?G`4? 1?G`4? 1?G`4? 1?4?P 1?4?P 1?4?P 1?^r4?d%4?^r4?d%4?^r4?d%4?쒘4? %4?쒘4? %4?쒘4? %4?,4?%5?,4?%5?,4?%5?,4?%5?,4?%5?,4?%5?Y>m4?-1?Y>m4?-1?Y>m4?-1?^=r4?d%4?^=r4?d%4?^=r4?d%4?^=r4?d%4?^=r4?d%4?^=r4?d%4?>4?P 1?>4?P 1?>4?P 1?`>4?|7,?`>4?|7,?`>4?|7,?N{a>4?Y(,?N{a>4?Y(,?N{a>4?Y(,?a>-4?@%?a>-4?@%?a>-4?@%?:>4?@^%?:>4?@^%?:>4?@^%?>H4?b?>H4?b?>H4?b?9>]4?' ?9>]4?' ?9>]4?' ?>l4?1e ?>l4?1e ?>l4?1e ?Ю>al5?c?Ю>al5?c?Ю>al5?c?9>4?u?9>4?u?9>4?u?>4?{?>4?{?>4?{?4R>54?ϊ?4R>54?ϊ?4R>54?ϊ???????????????????????????????Ԗy?KcԖy?KcԖy?Kciȃ5al?ܑiȃ5al?ܑiȃ5al?ܑ\=a?\=a?\=a?v>l?~Rv>l?~Rv>l?~R$y?Fe$y?Fe$y?Fe*G>z?H?*G>z?H?*G>z?H?oų>oų>oų>Ӿ#;Sk?P2_->Sk?P2_->Sk?P#/O?x ?P#/O?x ?P#/O?x ?+Y?+Y?+Y?Ul{Y?Ul{Y?Ul{Y?t@僽9Y?t@僽9Y?t@僽9Y?UzX?UzX?UzX?D ,#X?D ,#X?D ,#X?ӆ أ;w:Fh?@>w:Fh?@>w:Fh?;>`wi?;>`wi?;>`wi?lg>WƏpj?lg>WƏpj?lg>WƏpj?S>Tξ]?S>Tξ]?S>Tξ]?">aὠr?">aὠr?">aὠr?&h>ּ=z?&h>ּ=z?&h>ּ=z?n==||?n==||?n==||?>Pz=>{?>Pz=>{?>Pz=>{?=Fʽ2}?=Fʽ2}?=Fʽ2}?(P=[~?(P=[~?(P=[~?wT=D~?wT=D~?wT=D~??V^=QZ??V^=QZ??V^=QZ??bL1T??bL1T??bL1T?@?E-=uX?@?E-=uX?@?E-=uX?c ?)Ѻf?q>)Ѻf?q>)Ѻf?>S y<%j?>S y<%j?>S y<%j?jfY>yJ??jfY>yJ??jfY>yJ??P>2_->Sk?P>2_->Sk?P>2_->Sk?<>=j?<>=j?<>=j?\>h?\>h?\>h? ?Z? ?Z? ?Z?R?|R=yi[?R?|R=yi[?R?|R=yi[??Ӛ=[??Ӛ=[??Ӛ=[?Ӎ}?O7 >Ӎ}?O7 >Ӎ}?O7 >Ӎ}?O7 >Ӎ}?O7 >Ӎ}?O7 >o?ų>o?ų>o?ų>^ ?=7o?ų>o?ų>?j ]8WW??j ]8WW??j ]8WW?j QڴV?j QڴV?j QڴV?z27?z27?z27?z27?z27?z27?MV, ?MV, ?MV, ?MV, ?MV, ?MV, ?oų>oų>oų>Ӎ}O7 >Ӎ}O7 >Ӎ}O7 >Ӎ}O7 >Ӎ}O7 >Ӎ}O7 >1vhwv{~4>hwv{~4>hw*}==TȽ*}==TȽ*}==TȽCDaݒ>*CDaݒ>*CDaݒ>*rl">甇rl">甇rl">甇+K;[>+ž+K;[>+ž+K;[>+žH>?(޾H>?(޾H>?(޾M*?M*?M*?e?]e?]e?]0GB?S#0GB?S#0GB?S#?L?R?L?R?L?RUgz=?*"Ugz=?*"Ugz=?*"þ7?þ7?þ7?Ҿ2?X~Ҿ2?X~Ҿ2?X~B=PSC?S$B=PSC?S$B=PSC?S$ؠ>CG?4ؠ>CG?4ؠ>CG?4>B8?mK>B8?mK>B8?mKAq>aaa#t2?ݚ>#t2?ݚ>#t2?@??Qھ@??Qھ@??Qھ&K?>>ž&K?>>ž&K?>>žMl?˄>vMl?˄>vMl?˄>v`?>"`?>"`?>"v%Y?>v%Y?>v%Y?>|?n=ɽ|?n=ɽ|?n=ɽ6l{?86>Ggw6l{?86>Ggw6l{?86>GgwEY?oǾ>EY?oǾ>EY?oǾ>wD?LX 2>wD?LX 2>wD?LX 2>n?q>n?q>n?q>e?#ʾoE>e?#ʾoE>e?#ʾoE>Ze?V4˾*C>Ze?V4˾*C>Ze?V4˾*C>?pG<kE?pG<kE?pG<kE?1v9x?TAb8>9x?TAb8>j?D[$=j?D[$=j?D[$=}?=K }?=K }?=K }?5=cQ}?5=cQ}?5=cQ7v?%S>77v?%S>77v?%S>7*i?:Iવ>*i?:Iવ>*i?:Iવ>`kn?Bq/>`kn?Bq/>`kn?Bq/>f}?k4o=f}?k4o=f}?k4o=y?%1*X>y?%1*X>y?%1*X>*}?fu=*}?fu=*}?fu=J?j0ʾ1?J?j0ʾ1?J?j0ʾ1??|Tk%??|Tk%??|Tk%?qH?ƺa?qH?ƺa?qH?ƺa?^9?gm#?^9?gm#?^9?gm#?+!]?>+!]?>+!]?>>J R&?>J R&?>J R&?#>ΠVJK?#>ΠVJK?#>ΠVJK?絑>c)1?絑>c)1?絑>c)1?>Q?>Q?>Q?.=#S C?.=#S C?.=#S C?.ý#S C?.ý#S C?.ý#S C?Q?Q?Q?ґBS)1?ґBS)1?ґBS)1?#ΠVJK?#ΠVJK?#ΠVJK?{30&?{30&?{30&?#L}׾0?#L}׾0?#L}׾0?"?"?"?+!]>+!]>+!]>"CH?"CH?"CH?nyA]ž?nyA]ž?nyA]ž?h#[e>h#[e>h#[e>XiXiXiݿq]`qL{>ݿq]`qL{>ݿq]`qL{>Cu]>C?Cu]>C?Cu]>C?}y6=]}y6=]}y6=]}=K }=K }=K jD[$=jD[$=jD[$=*}fu=*}fu=*}fu=v}LJ5=v}LJ5=v}LJ5=uayҎ- >uayҎ- >uayҎ- >&{c!6=&{c!6=&{c!6=EyXr=EyXr=EyXr=X} ۻ=X} ۻ=X} ۻ=HVː=bEXe`'˾%D>e`'˾%D>reˋʾE>reˋʾE>reˋʾE>nq>nq>nq>oYܯǾ>oYܯǾ>oYܯǾ>iC>_ &>iC>_ &>iC>_ &>WD >WD >WD >t ;5k?t ;5k?t ;5k? o£4k> o£4k> o£4k>]"#?]"#?]"#? {h-> {h-> {h->󼸾M9?󼸾M9?󼸾M9?e4 T ?e4 T ?e4 T ?>C?N>>C?N>>C?N>t ?;5k?t ?;5k?t ?;5k? o?£4k> o?£4k> o?£4k>5Y>u#?5Y>u#?5Y>u#?GM>rNCl>GM>rNCl>GM>rNCl>G:>f-,?G:>f-,?G:>f-,?e=4 T ?e=4 T ?e=4 T ?d=Z4CY#?d=Z4CY#?d=Z4CY#?dŽZ4CY#?dŽZ4CY#?dŽZ4CY#?Q:&BQ:&BQ:&BO ?5HeO ?5HeO ?5Hey5?0 y5?0 y5?0 vTU?8ؾvTU?8ؾvTU?8ؾVa?jVa?jVa?j%e|?)==->e|?)==-> |?!=C?= |?!=C?= |?!=C?=m?ts>2[>m?ts>2[>m?ts>2[>qT?a>39>qT?a>39>qT?a>39>da?y>>da?y>>da?y>>5?>!( ?5?>!( ?5?>!( ?t?X ?u &?t?X ?u &?t?X ?u &?u? ?(?u? ?(?u? ?(?>?K:?>?K:?>?K:?3>"?A?3>"?A?3>"?A?Q=#?C?Q=#?C?Q=#?C?$?D?$?D?$?D?8$?D?8$?D?8$?D?$?D?$?D?$?D?$?D?$?D?$?D?Ѹ$?D?Ѹ$?D?Ѹ$?D?$?D?$?D?$?D?$?D?$?D?$?D?~Q9$?D?~Q9$?D?~Q9$?D?$?D?$?D?$?D?~Q$?D?~Q$?D?~Q$?D?$?D?$?D?$?D?Qν#?C?Qν#?C?Qν#?C?3"?A?3"?A?3"?A?盾?K:?盾?K:?盾?K:?sɾQ?24?sɾQ?24?sɾQ?24?9w ?-(?9w ?-(?9w ?-(?6? ?6? ?6? ?5>" ?5>" ?5>" ?ST>>ST>>ST>>ca>7 >ca>7 >ca>7 >gmzs>@>gmzs>@>gmzs>@>yf|N=->yf|N=->yf|N=->|[==|[==|[==e|)ܽ=-e|)ܽ=-e|)ܽ=-\k;|f*<\k;|f*<\k;|f*ؾ%RU>ؾ%RU>ؾv5c v5c v5c O 5HeO 5HeO 5HeW.W 'W.W 'W.W 'ξo,2ξo,2ξo,2ptCK7ptCK7ptCK7}=}=}=}}}}=}=}=w~>w~>w~>w~>w~>w~>O` >O` >O` >O` >O` >O` >:L?/?:L?/?:L?/?:L?/?:L?/?:L?/?# *X?# *X?# *X?# *X?# *X?# *X?|s?|s?|s?C}vs?C}vs?C}vs?%~?%~?%~?%~?%~?%~??>0x{??>0x{??>0x{??>0x{??>0x{??>0x{?>g?>g?>g?>g?>g?>g?8#?7E?8#?7E?8#?7E?8#?7E?8#?7E?8#?7E?O??O??O??O??O??O??n?v>n?v>n?v>n?v>n?v>n?v>M}?u5>M}?u5>M}?u5>M}?u5>M}?u5>M}?u5> }? }? }? }? }? }?n?vn?vn?vn?vn?vn?vO?O?O?O?O?O?8#?7E8#?7E8#?7E#?LE#?LE#?LE>g>g>g>g>g>g?>0x{?>0x{?>0x{?>0x{?>0x{?>0x{%~%~%~%~%~%~C}vsC}vsC}vs|s|s|s20 .#X20 .#X20 .#X20 .#X20 .#X20 .#X:RI/:RI/:RI/:5/:5/:5/O` O` O` N[`ɓN[`ɓN[`ɓw~w~w~w~w~w~}}}I{CI{CI{Cx=Awt>=Awt>=Awo>3ͽ>>ro>3ͽ>>ro>3ͽ>>ri>#=Oai>#=Oai>#=OaUf?pٽVUf?pٽVUf?pٽV(?6=ǥ>(?6=ǥ>(?6=ǥ>w9?㽀&.w9?㽀&.w9?㽀&.^Q?;=^Q?;=^Q?;=^?G?^?G?^?G?m? =m? =m? =1Dv?p3|1Dv?p3|1Dv?p3||?k=5\|?k=5\|?k=5\:~?zn:~?zn:~?zn|?k=5\=|?k=5\=|?k=5\=Dv?~|>Dv?~|>Dv?~|>m?=>m?=>m?=>^?Ӏ >^?Ӏ >^?Ӏ >Q?=?Q?=?Q?=?Oz9?".?Oz9?".?Oz9?".?"(? =e>?"(? =e>?"(? =e>?7e?ڽV?7e?ڽV?7e?ڽV?G>=a?G>=a?G>=a? r>VͽOVͽOVͽO19=5w?t>19=5w?t>19=5w?=d~?=d~?=d~??=1??=1??=1?p0?luz?p0?luz?p0?luz?9lt&=w?9lt&=w?9lt&=w?^pپg?^pپg?^pپg?@mo=Pb?@mo=Pb?@mo=Pb?"| D?"| D?"| D?|)==]??|)==]??|)==]??NylEK?NylEK?NylEK?DR=$a?DR=$a?DR=$a?m Z[>m Z[>m Z[>So<>So<>So<>}匼M>}匼M>}匼M>!~5=!~5=!~5=!~5!~5!~5ݵ=q?Z ݵ=q?Z ݵ=q?Z #󰻩q?uy#󰻩q?uy#󰻩q?uy#;q?uy#;q?uy#;q?uyBKq?BKq?BKq?#m?ʥ` E>#m?ʥ` E>#m?ʥ`=o?L`=o?L`=o?L *>т^?O *>т^?O *>т^?O>c?3>c?3>c?34?F*?)%q4?F*?)%q4?F*?)%q ?J?Gd ?J?Gd ?J?Gd8?L?«8?L?«8?L?«ӟq?>Ӽ۽ӟq?>Ӽ۽ӟq?>Ӽ۽Tnc?l>kTnc?l>kTnc?l>k X?5?3 X?5?3 X?5?3jM?'?[XJjM?'?[XJjM?'?[XJ0?x.?9v0?x.?9v0?x.?9vtd~?>R=PD td~?>R=PD td~?>R=PD i:~?&=si:~?&=si:~?&=sPFu?>vPFu?>vPFu?>v?rd:k;?rd:k;?rd:k;N?0;N?0;N?0;I? TA9l?ZԻ >9l?ZԻ >zQt?hCq=zQt?hCq=zQt?hCq=|?bֽc=|?bֽc=|?bֽc=K?X>K?X>K?X>Q? yK>Q? yK>Q? yK>Gf?_о|>Gf?_о|>Gf?_о|>[g>f>[g>f>[g>f>>+]b>>+]b>>+]b>>X;>>X;>>X;>r?LB>r?LB>r?LB>D? v>x>D? v>x>D? v>x>D7?n'w>D7?n'w>D7?n'w>l>un7߯>l>un7߯>l>un7߯><=jXn8><=jXn8><=jXn8>$7:ap>$7:ap>$7:ap>:bp>:bp>:bp>VѸ5p>VѸ5p>VѸ5p>Vp>Vp>Vp>޵Q_p>޵Q_p>޵Q_p>U1f=(U1f=(U1f=(d~9=_fd~9=_fd~9=_fWA΂?ǁ^WA΂?ǁ^WA΂?ǁ^uXx?3uXx?3uXx?3$^Lr>}&$^Lr>}&$^Lr>}&q7˟>.ݽq7˟>.ݽq7˟>.ݽqݞ>۽qݞ>۽qݞ>۽~|[ >T~|[ >T~|[ >T^8p?^^8p?^^8p?^ZQ No?ceZQ No?ceZQ No?ce2c?42c?42c?4vҠ6Te?vҠ6Te?vҠ6Te?`R?¡`R?¡`R?¡>dL?I.>dL?I.>dL?I./ZnR?/ZnR?/ZnR?4R*?p4R*?p4R*?p"%:? 5"%:? 5"%:? 5Q}P o4>Q}P o4>Q}P o4>,彩nW}>,彩nW}>,彩nW}>Ջ n>Ջ n>Ջ n>TJfUթ>TJfUթ>TJfUթ>bQ_>bQ_>bQ_>>ؾY;v>>ؾY;v>>ؾY;v>DPK>DPK>DPK>C PH>C PH>C PH>'4*)Qz>'4*)Qz>'4*)Qz>+?2"g>+?2"g>+?2"g><[`8><[`8><[`8>XfV=>XfV=>XfV=>FDt c>FDt c>FDt c>lxd>lxd>lxd>qP=qP=qP=wͫm{9=wͫm{9=wͫm{9=e~bԽlf*=e~bԽlf*=e~bԽlf*=T~҃ɽ1"=T~҃ɽ1"=T~҃ɽ1"=h1:!;h1:!;h1:!;z*;z*;z*;Hp? Hp? Hp? Hp? Hp? Hp? (p?C(p?C(p?C?????????wpk=wpk=wpk=)&B&)&B&)&B&@m>j I>@m>j I>@m>j I>Qaý kQaý kQaý k.p.p.p Hp Hp HpQ9.pQ9.pQ9.pF;咾5;uF;咾5;uF;咾5;u}}}Q-]vi;yQ-]vi;yQ-]vi;y$¼  u$¼  u$¼  u `]It `]It `]It G`"? >?O[>`"? >?O[>`"? >?}<{?O|C}<{?O|C}<{?O|Cv~?S=>v~?S=>v~?S=>KV?S>%>KV?S>%>KV?S>%>??J???J???J?*>V!?9H0?*>V!?9H0?*>V!?9H0?XK?>XK?>XK?>Iz)?XIz)?XIz)?XLY D?^?LY D?^?LY D?^?5SO.> 5SO.> 5SO.> C2N 2C2N 2C2N 2"꙾(t"꙾(t"꙾(t.p.p.p >FVe >FVe >FVekK=[pkK=[pkK=[p.p.p.p.p.p.p:)?`4р>:)?`4р>:)?`4р>)?)?)?^4?X4=^4?X4=^4?X4=vZ4?vZ4у=vZ4?vZ4у=vZ4?vZ4у=;)?XK4ꀾ;)?XK4ꀾ;)?XK4ꀾ)?(S4>(S4>(S4 >M4 >M4 >M4>,Y4 >,Y4 >,Y4 > a4( > a4( > a4( U->A\4fd0U->A\4fd0U->A\4fd0->W`4a0->W`4a0->W`4a0`45`45`45`45`45`45-c4^0-c4^0-c4^0-T4p0-T4p0-T4p0 a4( a4( a4( 稾,Y4 稾,Y4 稾,Y4 M4 M4 M4(S4(S4(S4}M4}ξ}M4}ξ}M4}ξ}S4A}ξ}S4A}ξ}S4A}ξ)R4Uހ)R4Uހ)R4Uހ:)`4р:)`4р:)`4р^?X4n>^?X4n>^?X4n>?`4b>?`4b>?Z4c>>[4t?>[4t?>[4t?>[4t?>[4t?>[4t?ܨ>Z4W ?ܨ>Z4W ?ܨ>Z4W ?ۨ>`4z ?ۨ>`4z ?ۨ>`4z ?->W`4a0?->W`4a0?->W`4a0?->_S4:o0?->_S4:o0?->_S4:o0?>Z45?>Z45?>Z45?-V4k0?-V4k0?-V4k0?X-Z4`i0?X-Z4`i0?X-Z4`i0?\ͨ_4 ?\ͨ_4 ?\ͨ_4 ?ܨZ4W ?ܨZ4W ?ܨZ4W ?X4?[4t?[4t?[4t?[4t?[4t?^X4n>^X4n>^X4n>ZU4Hr>ZU4Hr>^X4n>:)`4р>:)`4р>:)`4р>)))eZ4р>X4^4=X4^4=X4^4=[4[4=[4[4=[4[4=Z4Z4OZ4Z4OZ4Z4OX4^4X4^4X4^4?Z4?$>?Z4?$>?Z4?$>7>rO4? ?7>rO4? ?7>rO4? ?1>G4?߉2?1>G4?߉2?1>G4?߉2?Ț>A4?{$?Ț>A4?{$?Ț>A4?{$?MŚ>eD4?y$?MŚ>eD4?y$?MŚ>eD4?y$?>L4?! ?>L4?! ?>L4?! ?`D4? ,?`D4? ,?`D4? ,?y6pF4?f5?y6pF4?f5?y6pF4?f5?~6M4?C`5?~6M4?C`5?~6M4?C`5?1> N4?I2?1> N4?I2?1> N4?I2?0zL4?>0zL4?>0zL4?>{ON4?>{ON4?>{ON4?>¾-a4?e?¾-a4?e?¾-a4?e?¾gF4?x?¾gF4?x?¾gF4?x?C`R4?,?C`R4?,?C`R4?,?AL4?b>AL4?b>AL4?b>].Og4?c>].Og4?c>].Og4?c>/`4?4>/`4?4>/`4?4> 4 4? F6= 4 4? F6= 4 4? F6=44?6=44?6=44?6=44?644?644?6@4@4?f5@4@4?f5@4@4?f5 0F4?@4 0F4?@4 0F4?@40]M4?Ƽ40]M4?Ƽ40]M4?Ƽ4AL4?bAL4?bAL4?bAL4?bAL4?bAL4?b|H4?/|H4?/|H4?/tT4?~tT4?~tT4?~C`R4?,C`R4?,C`R4?,C`R4?,C`R4?,C`R4?,8¾zL4?q8¾zL4?q8¾zL4?q¾R4?j¾R4?j¾R4?j1> N4?I21> N4?I21> N4?I21> N4?I21> N4?I21> N4?I26S4?Y56S4?Y56S4?Y56S4?Y56S4?Y56S4?Y5>L4?! >L4?! >L4?! e>J4? e>J4? e>J4? 渚>SR4?l$渚>SR4?l$渚>SR4?l$>O4?o$>O4?o$>O4?o$R?h4?վR?h4?վR?h4?վ0(?cG4?օ0(?cG4?օ0(?cG4?օg(?M4?g(?M4?g(?M4?f ?G4?վf ?G4?վf ?G4?վ?T4?ܜ>?T4?ܜ>?T4?ܜ>(?IU4?eʅ>(?IU4?eʅ>(?IU4?eʅ>(?N4?ʅ>(?N4?ʅ>(?N4?ʅ>M4?M4?E=M4?M4?E=M4?M4?E=L4?L4?y=L4?L4?y=L4?L4?y=wM4?wM4?wM4?wM4?wM4?wM4?M4?M4?EM4?M4?EM4?M4?Eٽ=[ıb}?ٽ=[ıb}?ٽ=[ıb}?'>3Mv?'>3Mv?'>3Mv?v6>Nv?v6>Nv?v6>Nv?U>5< f?U>5< f?U>5< f?M?;=,Q?M?;=,Q?M?;=,Q?3?s=G9Q?3?s=G9Q?3?s=G9Q?J>#۬^W?84?0`>^W?84?0`>^W?o'?q\z>6?o'?q\z>6?o'?q\z>6?I'?+Dz>6?I'?+Dz>6?I'?+Dz>6?N?4?5 ?n>N?4?5 ?n>N?4?5 ?n>=4??>=4??>=4??>J;4?/c>*S?J;4?/c>*S?J;4?/c>*S?2?H?>2?H?>2?H?>W'?z+)?}Ⱥ>W'?z+)?}Ⱥ>W'?z+)?}Ⱥ>`'?`')?ڶ>`'?`')?ڶ>`'?`')?ڶ>!r>XOb?Z5>!r>XOb?Z5>!r>XOb?Z5>Y>Wb?z\5>Y>Wb?z\5>Y>Wb?z\5>-<?:H?Uׅ>-<?:H?Uׅ>-<?:H?Uׅ>ڽ=}?R=ڽ=}?R=ڽ=}?R='>8t?='>8t?='>8t?=>t?ʢ=>t?ʢ=>t?ʢ=ڽ}?H\=ڽ}?H\=ڽ}?H\=>ٽ}?d=>ٽ}?d=>ٽ}?d=>ٽ=}?d=>ٽ=}?d=>ٽ=}?d=!rݾXOb?Z5>!rݾXOb?Z5>!rݾXOb?Z5>xdݾVUb?xZ5>xdݾVUb?xZ5>xdݾVUb?xZ5>7t?q=7t?q=7t?q='8t?='8t?='8t?=-<:H?Uׅ>-<:H?Uׅ>-<:H?Uׅ>2H?>2H?>2H?>=4?>=4?>=4?>'7*)?>|'&)?%>|'&)?%>'()?[ź>'()?[ź>'()?[ź>840`>^W?840`>^W?840`>^W?840`>^W?840`>^W?840`>^W?=4?>=4?>=4?>3=8Q?3=8Q?3=8Q?M;=,Q?M;=,Q?M;=,Q?V'+z>6?V'+z>6?V'+z>6?o'q\z>6?o'q\z>6?o'q\z>6?Jݾ#۬+kuQ>+kuQ>+ku꽎7>ju뽎7>ju뽎7>ju뽉>nd..>nd..>nd..(>d{-(>d{-(>d{-ʘ ?MpV}ʘ ?MpV}ʘ ?MpV}$ ?M|?}$ ?M|?}$ ?M|?}$?/$?/$?/$?/ $?/ $?/ hS2?hS2?hS2?U2?!U2?!U2?!vo5?t2۾vo5?t2۾vo5?t2۾ʘ MpV}ʘ MpV}ʘ MpV}(Ծd{-(Ծd{-(Ծd{-<Ծd-<Ծd-<Ծd-8luWP뽼8luWP뽼8luWP뽑Qsjuy뽑Qsjuy뽑Qsjuy"~&"~&"~&re~>re~>re~>r=e~>r=e~>r=e~>M22+M22+M22+U2!U2!U2!$/$/$/$/$/$/ M} M} M}4? w#*4? w#*4? w#*u4w&*u4w&*u4w&*>MБ[%a_>8g`B>RW`8:(E 8}e:=}N)5Oo$ Ox>F O cx>O ????????????????8yyy?????????v?vl?Rl?Rl?R$?D?$?D?$?D?'8$?D?'8$?D?'8$?D? 8}$?D? 8}$?D? 8}$?D?Ѹ$?D?Ѹ$?D?Ѹ$?D?_J9$?D?_J9$?D?_J9$?D?8$?D?8$?D?8$?D?ԷQ$?D?8$?D?8$?D?'8$?D?'8$?D?'8$?D? Ѹ}$?D? Ѹ}$?D? Ѹ}$?D?*Q9~$?%D?*Q9~$?%D?*Q9~$?%D?$?D?$?D?$?D?ԷѸ$?D?ԷѸ$?D?ԷѸ$?D?Ѹ$?D?Ѹ$?D?Ѹ$?D?Է8$?D?Է8$?D?Է8$?D?ԷQ$?D?ԷQ$?D?G9}$?D?b8j$?D?_J$?D?b8j$?D?$?D?$?D?$?D?$?D?$?D?$?D?I9$?D?I9$?D?I9$?D?$?D?$?D?8$?D?*Ѹ~$?%D?*Ѹ~$?%D?*Ѹ~$?%D?$?D?$?D?$?D?的>Cw的>Cw的>Cwr>Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>Gwr>GwQ的>CwQ的>CwQ的>Cwr>Gwr>Gwr>Gw8r>Gw8r>Gw8r>GwNQ>zEwNQ>zEwNQ>zEwr>Gwr>Gwr>Gwr>Gwr>Gwr>GwNQ9>zEwNQ9>zEwNQ9>zEw>zEw>zEw>zEwQr>GwQr>GwQr>Gw8的>Cw8的>Cw8的>Cw>zEw>zEw>zEwr>2Iwr>2Iwr>2Iw的>Cw的>Cw的>Cw$D$D$DFHþXRlFHþXRlFHþXRl<#D<#D<#D<"֍E<"֍E<"֍E@F@F@F7D<V!.F7D<V!.F7D<V!.F; G; G; GG;e IGG;e IGG;e IGGe IGGe IGGe IG軥 G軥 G軥 G잼"֍E잼"֍E잼"֍E#D#D#DF=HþXRlF=HþXRlF=HþXRl$D$D$Dm]m]m]m]m]m]$D$D$D$D$D$D>.p?>.p?>.p?>.p?>.p?>.p?'g #W'g #W'g #WwHv=F@n!>F@n!>F7DV!.F7DV!.F7DV!.FS45?S45?S45?b*<?0]M4?Ƽ4>0]M4?Ƽ4>???GGG5Z?h<5Z?h<5Z?hGz?8 >Gz?8 >z(s?z(s?z(s?倷;i?UA<倷;i?UA<倷;i?UA<8EL8EL8EL=?=?=?>=C?W=>=C?W=>=C?W=Q9?Q9Q9?Q9Q9?Q9Ѹ?RI9Ѹ?RI9Ѹ?RI9????????????Q?Q9Q?Q9Q?Q9??????D;?S;D;?S;D;?S;????????????????????????????????????[ ?;[ ?;[ ?;6'n|??6'n|??6'n|?????{r<?ZY<{r<?ZY<{r<?ZY< ?G< ?G< ?G<??????????????????h^=@?֊[=h^=@?֊[=h^=@?֊[=ґ<7?Vbeґ<7?Vbeґ<7?Vbe???b?oG?[;~:>?[;~:>?[;?xG<?xG<?xG<????????????^e?.;^e?.;^e?.;k?);k?);k?);???????????????????????????#?#?#?#?#?#?HH{?FCHH{?FCHH{?FCI{?CI{?CI{?CHH{?FCHH{?FCHH{?FCI{?8CI{?8CI{?8CJ{?{CJ{?{CJ{?{CJ{?{CJ{?{CJ{?{CI{?CI{?CI{?CI{?CI{?CI{?CJ{{CJ{{CJ{{CJ{{CJ{{CJ{{CI{CI{CI{CHH{FCHH{FCHH{FC~4~4~4~4~4~4I{CI{CI{CI{CI{CI{CHH{FCHH{FCHH{FCI{8CI{8CI{8C> R_32> R_32> R_32l#7@l#7@l#7@zc*E7&Bzc*E7&Bzc*E7&BL/>$Z>L/>$Z>L/>$Z>]⻣M&*B]⻣M&*B]⻣M&*B_&hB_&hB_&hBu<)&@u<)&@u<)&@<&C)?<&C)?<&C)?u&XBu&XBu&XBQ&BQ&BQ&B %B %B %B#3mwG#3mwG#3mwG :%B :%B :%B+>JHH+>JHH+>JHHQ;4&BQ;4&BQ;4&B>A9>A9>A9>J>s?>J>s?>J>s?m'>tl|?Am'>tl|?Am'>tl|?A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y L1ھZLQwEL+پZL=+پZL=QwEL=1ھZ>">͒>&%>v>&%>v>&%>v>">͒>">͒> >>">͒>">͒>">͒> >> >>>> >> >> >>>>>>>>x>>>>>>>>>x>>>x>>|>>>x>>>x>>>x>>|>>|>>o>>|>>|>>|>>o>>o>0>>0>>I1>V>I1>V>I1>V>0>>/>i>/>i>0>>0>>0>>/>i>O->]>O->]>/>i>/>i>/>i>O->]>+>A>+>A>O->]>O->]>O->]>+>A>)>pw>)>pw>+>A>+>A>+>A>)>pw>9'>>9'>>)>pw>)>pw>)>pw>9'>>G`%>>9'>>9'>>9'>>G`%>>G`%>>$#>^{>G`%>>G`%>>G`%>>$#>^{>$#>^{>+!>@H>$#>^{>$#>^{>$#>^{>+!>@H>+!>@H>>>+!>@H>+!>@H>+!>@H>>>>>*f>>>>>>>>*f>>*f>>E>4)>*f>>*f>>*f>>E>4)>E>4)>>>E>4)>E>4)>E>4)>>>>>I1>V>2>>2>>2>>I1>V>I1>V>ZV>)>>>>>>>ZV>)>ZV>)>2>>'2>}>'2>}>'2>}>2>>2>>>T>ZV>)>ZV>)>ZV>)>>T>>T>'2>}>yv2>>yv2>>yv2>>'2>}>'2>}>K>&>>T>>T>>T>K>&>K>&>yv2>>S1>#b>S1>#b>S1>#b>yv2>>yv2>>>o>K>&>K>&>K>&>>o>>o>S1>#b>0>>0>>0>>S1>#b>S1>#b>0>>f/>Xn>f/>Xn>f/>Xn>0>>0>>f/>Xn>->Z >->Z >->Z >f/>Xn>f/>Xn>->Z >+>>+>>+>>->Z >->Z >+>> )>ގ> )>ގ> )>ގ>+>>+>> )>ގ>l'>Ou>l'>Ou>l'>Ou> )>ގ> )>ގ>l'>Ou>&%>v>&%>v>&%>v>l'>Ou>l'>Ou>G`%>>>9'>>>9'>>>9'>>>G`%>>>G`%>>>$#>_{>>G`%>>>G`%>>>G`%>>>$#>_{>>$#>_{>>+!>@H>>$#>_{>>$#>_{>>$#>_{>>+!>@H>>+!>@H>>>=>+!>@H>>+!>@H>>+!>@H>>>=>>=>*f>=>>=>>=>>=>*f>=>*f>=>E>4)=>*f>=>*f>=>*f>=>E>4)=>E>4)=>><>E>4)=>E>4)=>E>4)=>><>><>I1>V<>2><>2><>2><>I1>V<>I1>V<>ZV>*<>><>><>><>ZV>*<>ZV>*<>2><>'2>};>'2>};>'2>};>2><>2><>>T;>ZV>*<>ZV>*<>ZV>*<>>T;>>T;>'2>};>yv2>:>yv2>:>yv2>:>'2>};>'2>};>K>&:>>T;>>T;>>T;>K>&:>K>&:>yv2>:>S1>$b:>S1>$b:>S1>$b:>yv2>:>yv2>:>>o:>K>&:>K>&:>K>&:>>o:>>o:>S1>$b:>0> 9>0> 9>0> 9>S1>$b:>S1>$b:>0> 9>f/>Xn9>f/>Xn9>f/>Xn9>0> 9>0> 9>f/>Xn9>->Z 9>->Z 9>->Z 9>f/>Xn9>f/>Xn9>->Z 9>+>8>+>8>+>8>->Z 9>->Z 9>+>8> )>ގ8> )>ގ8> )>ގ8>+>8>+>8> )>ގ8>l'>Ou8>l'>Ou8>l'>Ou8> )>ގ8> )>ގ8>l'>Ou8>&%>v8>&%>v8>&%>v8>l'>Ou8>l'>Ou8>">͒8>&%>v8>&%>v8>&%>v8>">͒8>">͒8> >8>">͒8>">͒8>">͒8> >8> >8>>9> >8> >8> >8>>9>>9>>>x9>>9>>9>>9>>>x9>>>x9>>|9>>>x9>>>x9>>>x9>>|9>>|9>>o:>>|9>>|9>>|9>>o:>>o:>0>=>0>=>I1>V<>I1>V<>I1>V<>0>=>/>h=>/>h=>0>=>0>=>0>=>/>h=>O->^=>O->^=>/>h=>/>h=>/>h=>O->^=>+>A>>+>A>>O->^=>O->^=>O->^=>+>A>>)>pw>>)>pw>>+>A>>+>A>>+>A>>)>pw>>9'>>>9'>>>)>pw>>)>pw>>)>pw>>9'>>>G`%>>9'>>jf&>>$#>^{>G`%>>jf&>>9'>>)>pw>jf&>>+!>@H>$#>^{>jf&>>)>pw>+>A>jf&>>>>+!>@H>jf&>>+>A>O->]>jf&>>*f>>>>jf&>>O->]>/>i>jf&>>E>4)>*f>>jf&>>/>i>0>>jf&>>>>E>4)>jf&>>0>>I1>V>jf&>>ZV>)>>>jf&>>I1>V>2>>jf&>>>T>ZV>)>jf&>>2>>'2>}>jf&>>K>&>>T>jf&>>'2>}>yv2>>jf&>>>o>K>&>jf&>>yv2>>S1>#b>jf&>>>|>>o>jf&>>S1>#b>0>>jf&>>>>x>>|>jf&>>0>>f/>Xn>jf&>>>>>>x>jf&>>f/>Xn>->Z >jf&>> >>>>jf&>>->Z >+>>jf&>>">͒> >>jf&>>+>> )>ގ>jf&>>&%>v>">͒>jf&>> )>ގ>l'>Ou>jf&>>l'>Ou>&%>v>jf&>>9'>>G`%>>jf&>>G`%>>$#>^{>jf&>>)>pw>9'>>jf&>>$#>^{>+!>@H>jf&>>+>A>)>pw>jf&>>+!>@H>>>jf&>>O->]>+>A>jf&>>>>*f>>jf&>>/>i>O->]>jf&>>*f>>E>4)>jf&>>0>>/>i>jf&>>E>4)>>>jf&>>I1>V>0>>jf&>>>>ZV>)>jf&>>2>>I1>V>jf&>>ZV>)>>T>jf&>>'2>}>2>>jf&>>>T>K>&>jf&>>yv2>>'2>}>jf&>>K>&>>o>jf&>>S1>#b>yv2>>jf&>>>o>>|>jf&>>0>>S1>#b>jf&>>>|>>>x>jf&>>f/>Xn>0>>jf&>>>>x>>>jf&>>->Z >f/>Xn>jf&>>>> >>jf&>>+>>->Z >jf&>> >>">͒>jf&>> )>ގ>+>>jf&>>">͒>&%>v>jf&>>l'>Ou> )>ގ>jf&>>&%>v>l'>Ou>jf&>>G`%>>>9'>>>jf&>;>jf&>;>jf&>;>G`%>>>$#>_{>>G`%>>>jf&>;>jf&>;>jf&>;>$#>_{>>9'>>>)>pw>>jf&>;>jf&>;>jf&>;>9'>>>+!>@H>>$#>_{>>jf&>;>jf&>;>jf&>;>+!>@H>>)>pw>>+>A>>jf&>;>jf&>;>jf&>;>)>pw>>>=>+!>@H>>jf&>;>jf&>;>jf&>;>>=>+>A>>O->^=>jf&>;>jf&>;>jf&>;>+>A>>*f>=>>=>jf&>;>jf&>;>jf&>;>*f>=>O->^=>/>h=>jf&>;>jf&>;>jf&>;>O->^=>E>4)=>*f>=>jf&>;>jf&>;>jf&>;>E>4)=>/>h=>0>=>jf&>;>jf&>;>jf&>;>/>h=>><>E>4)=>jf&>;>jf&>;>jf&>;>><>0>=>I1>V<>jf&>;>jf&>;>jf&>;>0>=>ZV>*<>><>jf&>;>jf&>;>jf&>;>ZV>*<>I1>V<>2><>jf&>;>jf&>;>jf&>;>I1>V<>>T;>ZV>*<>jf&>;>jf&>;>jf&>;>>T;>2><>'2>};>jf&>;>jf&>;>jf&>;>2><>K>&:>>T;>jf&>;>jf&>;>jf&>;>K>&:>'2>};>yv2>:>jf&>;>jf&>;>jf&>;>'2>};>>o:>K>&:>jf&>;>jf&>;>jf&>;>>o:>yv2>:>S1>$b:>jf&>;>jf&>;>jf&>;>yv2>:>>|9>>o:>jf&>;>jf&>;>jf&>;>>|9>S1>$b:>0> 9>jf&>;>jf&>;>jf&>;>S1>$b:>>>x9>>|9>jf&>;>jf&>;>jf&>;>>>x9>0> 9>f/>Xn9>jf&>;>jf&>;>jf&>;>0> 9>>9>>>x9>jf&>;>jf&>;>jf&>;>>9>f/>Xn9>->Z 9>jf&>;>jf&>;>jf&>;>f/>Xn9> >8>>9>jf&>;>jf&>;>jf&>;> >8>->Z 9>+>8>jf&>;>jf&>;>jf&>;>->Z 9>">͒8> >8>jf&>;>jf&>;>jf&>;>">͒8>+>8> )>ގ8>jf&>;>jf&>;>jf&>;>+>8>&%>v8>">͒8>jf&>;>jf&>;>jf&>;>&%>v8> )>ގ8>l'>Ou8>jf&>;>jf&>;>jf&>;> )>ގ8>l'>Ou8>&%>v8>jf&>;>jf&>;>jf&>;>l'>Ou8>9'>>>G`%>>>jf&>;>jf&>;>jf&>;>9'>>>G`%>>>$#>_{>>jf&>;>jf&>;>jf&>;>G`%>>>)>pw>>9'>>>jf&>;>jf&>;>jf&>;>)>pw>>$#>_{>>+!>@H>>jf&>;>jf&>;>jf&>;>$#>_{>>+>A>>)>pw>>jf&>;>jf&>;>jf&>;>+>A>>+!>@H>>>=>jf&>;>jf&>;>jf&>;>+!>@H>>O->^=>+>A>>jf&>;>jf&>;>jf&>;>O->^=>>=>*f>=>jf&>;>jf&>;>jf&>;>>=>/>h=>O->^=>jf&>;>jf&>;>jf&>;>/>h=>*f>=>E>4)=>jf&>;>jf&>;>jf&>;>*f>=>0>=>/>h=>jf&>;>jf&>;>jf&>;>0>=>E>4)=>><>jf&>;>jf&>;>jf&>;>E>4)=>I1>V<>0>=>jf&>;>jf&>;>jf&>;>I1>V<>><>ZV>*<>jf&>;>jf&>;>jf&>;>><>2><>I1>V<>jf&>;>jf&>;>jf&>;>2><>ZV>*<>>T;>jf&>;>jf&>;>jf&>;>ZV>*<>'2>};>2><>jf&>;>jf&>;>jf&>;>'2>};>>T;>K>&:>jf&>;>jf&>;>jf&>;>>T;>yv2>:>'2>};>jf&>;>jf&>;>jf&>;>yv2>:>K>&:>>o:>jf&>;>jf&>;>jf&>;>K>&:>S1>$b:>yv2>:>jf&>;>jf&>;>jf&>;>S1>$b:>>o:>>|9>jf&>;>jf&>;>jf&>;>>o:>0> 9>S1>$b:>jf&>;>jf&>;>jf&>;>0> 9>>|9>>>x9>jf&>;>jf&>;>jf&>;>>|9>f/>Xn9>0> 9>jf&>;>jf&>;>jf&>;>f/>Xn9>>>x9>>9>jf&>;>jf&>;>jf&>;>>>x9>->Z 9>f/>Xn9>jf&>;>jf&>;>jf&>;>->Z 9>>9> >8>jf&>;>jf&>;>jf&>;>>9>+>8>->Z 9>jf&>;>jf&>;>jf&>;>+>8> >8>">͒8>jf&>;>jf&>;>jf&>;> >8> )>ގ8>+>8>jf&>;>jf&>;>jf&>;> )>ގ8>">͒8>&%>v8>jf&>;>jf&>;>jf&>;>">͒8>l'>Ou8> )>ގ8>jf&>;>jf&>;>jf&>;>l'>Ou8>&%>v8>l'>Ou8>jf&>;>jf&>;>jf&>;>&%>v8>'v8>]%Ou8>c&;>c&;>c&;>'v8>]%Ou8>%"#ގ8>c&;>c&;>c&;>]%Ou8>m)͒8>'v8>c&;>c&;>c&;>m)͒8>%"#ގ8>!8>c&;>c&;>c&;>%"#ގ8>r+8>m)͒8>c&;>c&;>c&;>r+8>!8>Z 9>c&;>c&;>c&;>!8>-9>r+8>c&;>c&;>c&;>-9>Z 9>cXn9>c&;>c&;>c&;>Z 9>S/x9>-9>c&;>c&;>c&;>S/x9>cXn9> 9>c&;>c&;>c&;>cXn9>\0|9>S/x9>c&;>c&;>c&;>\0|9> 9>$b:>c&;>c&;>c&;> 9>1o:>\0|9>c&;>c&;>c&;>1o:>$b:>TV:>c&;>c&;>c&;>$b:>M~2&:>1o:>c&;>c&;>c&;>M~2&:>TV:> };>c&;>c&;>c&;>TV:>|2T;>M~2&:>c&;>c&;>c&;>|2T;> };>8I<>c&;>c&;>c&;> };>s2*<>|2T;>c&;>c&;>c&;>s2*<>8I<>V<>c&;>c&;>c&;>8I<>1<>s2*<>c&;>c&;>c&;>1<>V<>)=>c&;>c&;>c&;>V<>04)=>1<>c&;>c&;>c&;>04)=>)=>1<h=>c&;>c&;>c&;>)=>d/=>04)=>c&;>c&;>c&;>d/=>1<h=>^=>c&;>c&;>c&;>1<h=>v-=>d/=>c&;>c&;>c&;>v-=>^=> A>>c&;>c&;>c&;>^=>+@H>>v-=>c&;>c&;>c&;>+@H>> A>>"pw>>c&;>c&;>c&;> A>>`)_{>>+@H>>c&;>c&;>c&;>`)_{>>"pw>>#%>>c&;>c&;>c&;>"pw>>i'>>`)_{>>c&;>c&;>c&;>i'>>#%>>i'>>c&;>c&;>c&;>#%>>]%Ou8>'v8>c&;>c&;>c&;>]%Ou8>%"#ގ8>]%Ou8>c&;>c&;>c&;>%"#ގ8>'v8>m)͒8>c&;>c&;>c&;>'v8>!8>%"#ގ8>c&;>c&;>c&;>!8>m)͒8>r+8>c&;>c&;>c&;>m)͒8>Z 9>!8>c&;>c&;>c&;>Z 9>r+8>-9>c&;>c&;>c&;>r+8>cXn9>Z 9>c&;>c&;>c&;>cXn9>-9>S/x9>c&;>c&;>c&;>-9> 9>cXn9>c&;>c&;>c&;> 9>S/x9>\0|9>c&;>c&;>c&;>S/x9>$b:> 9>c&;>c&;>c&;>$b:>\0|9>1o:>c&;>c&;>c&;>\0|9>TV:>$b:>c&;>c&;>c&;>TV:>1o:>M~2&:>c&;>c&;>c&;>1o:> };>TV:>c&;>c&;>c&;> };>M~2&:>|2T;>c&;>c&;>c&;>M~2&:>8I<> };>c&;>c&;>c&;>8I<>|2T;>s2*<>c&;>c&;>c&;>|2T;>V<>8I<>c&;>c&;>c&;>V<>s2*<>1<>c&;>c&;>c&;>s2*<>)=>V<>c&;>c&;>c&;>)=>1<>04)=>c&;>c&;>c&;>1<>1<h=>)=>c&;>c&;>c&;>1<h=>04)=>d/=>c&;>c&;>c&;>04)=>^=>1<h=>c&;>c&;>c&;>^=>d/=>v-=>c&;>c&;>c&;>d/=> A>>^=>c&;>c&;>c&;> A>>v-=>+@H>>c&;>c&;>c&;>v-=>"pw>> A>>c&;>c&;>c&;>"pw>>+@H>>`)_{>>c&;>c&;>c&;>+@H>>#%>>"pw>>c&;>c&;>c&;>#%>>`)_{>>i'>>c&;>c&;>c&;>`)_{>>i'>>#%>>c&;>c&;>c&;>i'>>'v>]%Ou>c&>]%Ou>%"#ގ>c&>m)͒>'v>c&>%"#ގ>!>c&>r+>m)͒>c&>!>Z >c&>->r+>c&>Z >cXn>c&>S/x>->c&>cXn>>c&>\0|>S/x>c&>>#b>c&>1o>\0|>c&>#b>TV>c&>M~2&>1o>c&>TV> }>c&>|2T>M~2&>c&> }>8I>c&>s2)>|2T>c&>8I>V>c&>1>s2)>c&>V>)>c&>04)>1>c&>)>1<i>c&>d/>04)>c&>1<i>]>c&>v->d/>c&>]> A>c&>+@H>v->c&> A>"pw>c&>`)^{>+@H>c&>"pw>#%>c&>i'>`)^{>c&>#%>i'>c&>]%Ou>'v>c&>%"#ގ>]%Ou>c&>'v>m)͒>c&>!>%"#ގ>c&>m)͒>r+>c&>Z >!>c&>r+>->c&>cXn>Z >c&>->S/x>c&>>cXn>c&>S/x>\0|>c&>#b>>c&>\0|>1o>c&>TV>#b>c&>1o>M~2&>c&> }>TV>c&>M~2&>|2T>c&>8I> }>c&>|2T>s2)>c&>V>8I>c&>s2)>1>c&>)>V>c&>1>04)>c&>1<i>)>c&>04)>d/>c&>]>1<i>c&>d/>v->c&> A>]>c&>v->+@H>c&>"pw> A>c&>+@H>`)^{>c&>#%>"pw>c&>`)^{>i'>c&>i'>#%>c&>#%>>#%>>"pw>>"pw>>"pw>>#%>>"pw>>"pw>> A>> A>> A>>"pw>> A>> A>>^=>^=>^=> A>>^=>^=>1<h=>1<h=>1<h=>^=>1<h=>1<h=>)=>)=>)=>1<h=>)=>)=>V<>V<>V<>)=>1o:>\0|9>\0|9>\0|9>1o:>1o:>\0|9>S/x9>S/x9>S/x9>\0|9>\0|9>S/x9>-9>-9>-9>S/x9>S/x9>-9>r+8>r+8>r+8>-9>-9>r+8>m)͒8>m)͒8>m)͒8>r+8>r+8>m)͒8>'v8>'v8>'v8>m)͒8>m)͒8>]%Ou8>'v8>'v8>'v8>]%Ou8>]%Ou8>%"#ގ8>]%Ou8>]%Ou8>]%Ou8>%"#ގ8>%"#ގ8>!8>%"#ގ8>%"#ގ8>%"#ގ8>!8>!8>Z 9>!8>!8>!8>Z 9>Z 9>cXn9>Z 9>Z 9>Z 9>cXn9>cXn9> 9>cXn9>cXn9>cXn9> 9> 9>$b:> 9> 9> 9>$b:>$b:>1o:>M~2&:>M~2&:>M~2&:>1o:>1o:>TV:>$b:>$b:>$b:>TV:>TV:>M~2&:>|2T;>|2T;>|2T;>M~2&:>M~2&:> };>TV:>TV:>TV:> };> };>|2T;>s2*<>s2*<>s2*<>|2T;>|2T;>8I<> };> };> };>8I<>8I<>s2*<>1<>1<>1<>s2*<>s2*<>V<>8I<>8I<>8I<>V<>V<>1<>04)=>04)=>04)=>1<>1<>04)=>d/=>d/=>d/=>04)=>04)=>d/=>v-=>v-=>v-=>d/=>d/=>v-=>+@H>>+@H>>+@H>>v-=>v-=>+@H>>`)_{>>`)_{>>`)_{>>+@H>>+@H>>`)_{>>i'>>i'>>i'>>`)_{>>`)_{>>i'>>#%>>#%>>#%>>i'>>i'>>]%Ou>'v>'v>'v>]%Ou>]%Ou>%"#ގ>]%Ou>]%Ou>]%Ou>%"#ގ>%"#ގ>!>%"#ގ>%"#ގ>%"#ގ>!>!>Z >!>!>!>Z >Z >cXn>Z >Z >Z >cXn>cXn>>cXn>cXn>cXn>>>#b>>>>#b>#b>1o>M~2&>M~2&>M~2&>1o>1o>TV>#b>#b>#b>TV>TV>M~2&>|2T>|2T>|2T>M~2&>M~2&> }>TV>TV>TV> }> }>|2T>s2)>s2)>s2)>|2T>|2T>8I> }> }> }>8I>8I>s2)>1>1>1>s2)>s2)>V>8I>8I>8I>V>V>1>04)>04)>04)>1>1>04)>d/>d/>d/>04)>04)>d/>v->v->v->d/>d/>v->+@H>+@H>+@H>v->v->+@H>`)^{>`)^{>`)^{>+@H>+@H>`)^{>i'>i'>i'>`)^{>`)^{>i'>#%>#%>#%>i'>i'>#%>#%>"pw>"pw>"pw>#%>"pw>"pw> A> A> A>"pw> A> A>]>]>]> A>]>]>1<i>1<i>1<i>]>1<i>1<i>)>)>)>1<i>)>)>V>V>V>)>1o>\0|>\0|>\0|>1o>1o>\0|>S/x>S/x>S/x>\0|>\0|>S/x>->->->S/x>S/x>->r+>r+>r+>->->r+>m)͒>m)͒>m)͒>r+>r+>m)͒>'v>'v>'v>m)͒>m)͒>s)͒>澚'v'v'vs)͒>s)͒>x+>s)͒s)͒s)͒x+>x+>澮->x+x+x+->澮-=Y/x>澮---Y/x=Y/x=b0|=Y/xY/xY/xb0|=b0|=澩1o=b0|b0|b0|1o=澩1o>//VV>V>/>7<i7<i//>/>7<i>]]7<i7<i>7<i>]> A A]]>]> A>"pw"pw A A> A>"pw>#%#%"pw"pw>"pw>#%i'#%>#%>#%>i'i'f)^{i'>i'>i'>f)^{f)^{ +@Hf)^{>f)^{>f)^{> +@H +@H|- +@H> +@H> +@H>|-|-d/|->|->|-=d/d/04)d/=d/=d/=04)04)104)=04)=04)=澲11V>I>>I>>I>VVs2)1=澲1=澲1=s2)s2)>I}>}>}>>I>I2Ts2)=s2)=s2)=澂2T2T}ZV>ZV>ZV>}}S~2&2T=澂2T=澂2T=S~2&S~2&ZV#b>#b>#b>ZVZV1oS~2&=S~2&=S~2&=澩1o1o#b>澥>澥>#b#bcXn>澉cXn>澉cXn>澥cXnZ >Z >Z >澉cXncXnZ !>澈!>澈!>Z Z !+"#ގ>+"#ގ>+"#ގ>澈!!+"#ގ]%Ou>澣]%Ou>澣]%Ou>+"#ގ+"#ގ]%Ou'v>澚'v>澚'v>澣]%Ou]%Oui'>#%>>#%>>#%>>i'>i'>f)_{>i'>>i'>>i'>>f)_{>f)_{> +@H>f)_{>>f)_{>>f)_{>> +@H> +@H>|-= +@H>> +@H>> +@H>>|-=|-=d/=|-=>|-=>|-==d/=d/=04)=d/==d/==d/==04)=04)=1<04)==04)==04)==澲1<1<V<>I<>>I<>>I<>V<VI<};>};>};>>I<>I<2T;s2*<=s2*<=s2*<=澂2T;2T;};ZV:>ZV:>ZV:>};};S~2&:2T;=澂2T;=澂2T;=S~2&:S~2&:ZV:$b:>$b:>$b:>ZV:ZV:1o:S~2&:=S~2&:=S~2&:=澩1o:1o:$b: 9>澥 9>澥 9>$b:$b: 9cXn9>澉cXn9>澉cXn9>澥 9 9cXn9Z 9>Z 9>Z 9>澉cXn9cXn9Z 9!8>澈!8>澈!8>Z 9Z 9!8+"#ގ8>+"#ގ8>+"#ގ8>澈!8!8+"#ގ8]%Ou8>澣]%Ou8>澣]%Ou8>+"#ގ8+"#ގ8]%Ou8'v8>澚'v8>澚'v8>澣]%Ou8]%Ou8>s)͒8>澚'v8'v8'v8s)͒8>s)͒8>x+8>s)͒8s)͒8s)͒8x+8>x+8>澮-9>x+8x+8x+8-9>澮-9=Y/x9>澮-9-9-9Y/x9=Y/x9=b0|9=Y/x9Y/x9Y/x9b0|9=b0|9=澩1o:=b0|9b0|9b0|91o:=澩1o:>/=/=V<V<>V<>/=>7<h=7<h=/=/=>/=>7<h=>^=^=7<h=7<h=>7<h=>^=> A> A>^=^=>^=> A>>"pw>"pw> A> A>> A>>"pw>>#%>#%>"pw>"pw>>"pw>>#%>>i'>#%>c&>f)^{>i'>c&>#%>"pw>c&> +@H>f)^{>c&>"pw> A>c&>|-> +@H>c&> A>]>c&=d/>|->c&>]>7<i>c&=04)=d/>c&>7<i>/>c&=澲1=04)>c&>/>V>c&=s2)=澲1>c&>V>>I>c&=澂2T=s2)>c&>>I>}>c&=S~2&=澂2T>c&>}>ZV>c&=澩1o=S~2&>c&>ZV>#b>c&=b0|=澩1o>c&>#b>澥>c&=Y/x=b0|>c&>澥>澉cXn>c&>澮-=Y/x>c&>澉cXn>Z >c&>x+>澮->c&>Z >澈!>c&>s)͒>x+>c&>澈!>+"#ގ>c&>澚'v>s)͒>c&>+"#ގ>澣]%Ou>c&>澣]%Ou>澚'v>c&#%i'c&i'f)^{c&"pw#%c&f)^{ +@Hc& A"pwc& +@H|-c&] Ac&|-d/c&7<i]c&d/04)c&/7<ic&04)1c&V/c&1s2)c&>IVc&s2)2Tc&}>Ic&2TS~2&c&ZV}c&S~2&1oc&#bZVc&1ob0|c&#bc&b0|Y/xc&cXnc&Y/x-c&Z cXnc&-x+c&!Z c&x+s)͒c&+"#ގ!c&s)͒'vc&]%Ou+"#ގc&'v]%Ouc&>i'>>#%>>c&;>c&;>c&;>i'>>f)_{>>i'>>c&;>c&;>c&;>f)_{>>#%>>"pw>>c&;>c&;>c&;>#%>> +@H>>f)_{>>c&;>c&;>c&;> +@H>>"pw>> A>>c&;>c&;>c&;>"pw>>|-=> +@H>>c&;>c&;>c&;>|-=> A>>^=>c&;>c&;>c&;> A>=d/=>|-=>c&;>c&;>c&;=d/=>^=>7<h=>c&;>c&;>c&;>^==04)==d/=>c&;>c&;>c&;=04)=>7<h=>/=>c&;>c&;>c&;>7<h==澲1<=04)=>c&;>c&;>c&;=澲1<>/=>V<>c&;>c&;>c&;>/==s2*<=澲1<>c&;>c&;>c&;=s2*<>V<>>I<>c&;>c&;>c&;>V<=澂2T;=s2*<>c&;>c&;>c&;=澂2T;>>I<>};>c&;>c&;>c&;>>I<=S~2&:=澂2T;>c&;>c&;>c&;=S~2&:>};>ZV:>c&;>c&;>c&;>};=澩1o:=S~2&:>c&;>c&;>c&;=澩1o:>ZV:>$b:>c&;>c&;>c&;>ZV:=b0|9=澩1o:>c&;>c&;>c&;=b0|9>$b:>澥 9>c&;>c&;>c&;>$b:=Y/x9=b0|9>c&;>c&;>c&;=Y/x9>澥 9>澉cXn9>c&;>c&;>c&;>澥 9>澮-9=Y/x9>c&;>c&;>c&;>澮-9>澉cXn9>Z 9>c&;>c&;>c&;>澉cXn9>x+8>澮-9>c&;>c&;>c&;>x+8>Z 9>澈!8>c&;>c&;>c&;>Z 9>s)͒8>x+8>c&;>c&;>c&;>s)͒8>澈!8>+"#ގ8>c&;>c&;>c&;>澈!8>澚'v8>s)͒8>c&;>c&;>c&;>澚'v8>+"#ގ8>澣]%Ou8>c&;>c&;>c&;>+"#ގ8>澣]%Ou8>澚'v8>c&;>c&;>c&;>澣]%Ou8#%>i'>c&;c&;c&;#%>i'>f)_{>c&;c&;c&;i'>"pw>#%>c&;c&;c&;"pw>f)_{> +@H>c&;c&;c&;f)_{> A>"pw>c&;c&;c&; A> +@H>|-=c&;c&;c&; +@H>^= A>c&;c&;c&;^=|-=d/=c&;c&;c&;|-=7<h=^=c&;c&;c&;7<h=d/=04)=c&;c&;c&;d/=/=7<h=c&;c&;c&;/=04)=1I<VIIv8l'>Ou8df&>;df&>;df&>;&%>v8l'>Ou8)>ގ8df&>;df&>;df&>;l'>Ou8">͒8&%>v8df&>;df&>;df&>;">͒8)>ގ8+>8df&>;df&>;df&>;)>ގ8 >8">͒8df&>;df&>;df&>; >8+>8->Z 9df&>;df&>;df&>;+>8>9 >8df&>;df&>;df&>;>9->Z 9f/>Xn9df&>;df&>;df&>;->Z 9>>x9>9df&>;df&>;df&>;>>x9f/>Xn90> 9df&>;df&>;df&>;f/>Xn9>|9>>x9df&>;df&>;df&>;>|90> 9M1>$b:df&>;df&>;df&>;0> 9>o:>|9df&>;df&>;df&>;>o:M1>$b:sv2>:df&>;df&>;df&>;M1>$b:K>&:>o:df&>;df&>;df&>;K>&:sv2>:!2>};df&>;df&>;df&>;sv2>:>T;K>&:df&>;df&>;df&>;>T;!2>};2>;df&>;df&>;!2>};TV>*<>T;df&>;df&>;df&>;TV>*<2>V;df&>;df&>;2><}>*;df&>;df&>;}>V<0>=df&>;df&>;df&>;C1>V4)=}>;df&>;df&>;?>4)=0>=/>h=df&>;df&>;df&>;0>=$f>=?>4)=df&>;df&>;df&>;$f>=/>h=I->^=df&>;df&>;df&>;/>h=>=$f>=df&>;df&>;df&>;>=I->^=+>A>df&>;df&>;df&>;I->^=%!>@H>>=df&>;df&>;df&>;%!>@H>+>A>)>pw>df&>;df&>;df&>;+>A>$#>_{>%!>@H>df&>;df&>;df&>;$#>_{>)>pw>3'>>df&>;df&>;df&>;)>pw>A`%>>$#>_{>df&>;df&>;df&>;A`%>>3'>>A`%>>df&>;df&>;df&>;3'>>>澉l'>Ou8>澔&%>v8>df&>;>df&>;>df&>;>澉l'>Ou8>)>ގ8>澉l'>Ou8>df&>;>df&>;>df&>;>)>ގ8>澔&%>v8>澸">͒8>df&>;>df&>;>df&>;>澔&%>v8>澥+>8>)>ގ8>df&>;>df&>;>df&>;>澥+>8>澸">͒8>澴 >8>df&>;>df&>;>df&>;>澸">͒8>->Z 9>澥+>8>df&>;>df&>;>df&>;>->Z 9>澴 >8>澁>9>df&>;>df&>;>df&>;>澴 >8?澣f/>Xn9>->Z 9>df&>;>df&>;>df&>;?澣f/>Xn9>澁>9>>>x9>df&>;>df&>;>df&>;>澁>9?澈0> 9?澣f/>Xn9>df&>;>df&>;>df&>;?澈0> 9>>>x9>>|9>df&>;>df&>;>df&>;>>>x9?M1>$b:?澈0> 9>df&>;>df&>;>df&>;?M1>$b:>>|9>澄>o:>df&>;>df&>;>df&>;>>|9?sv2>:?M1>$b:>df&>;>df&>;>df&>;?sv2>:>澄>o:>K>&:>df&>;>df&>;>df&>;>澄>o:?!2>};?sv2>:>df&>;>df&>;>df&>;?!2>};>K>&:>澩>T;>df&>;>df&>;>df&>;>K>&:?2>};>df&>;>df&>;>df&>;?2><>澩>T;>TV>*<>df&>;>df&>;>df&>;>澩>T;?C1>V<>df&>;>df&>;>df&>;?C1>V<>TV>*<>}><>df&>;>df&>;>df&>;>TV>*=?C1>V<>df&>;>df&>;>df&>;?0>=>}><>?>4)=>df&>;>df&>;>df&>;>}>h=?0>=>df&>;>df&>;>df&>;?/>h=>?>4)=>$f>=>df&>;>df&>;>df&>;>?>4)=>I->^=?/>h=>df&>;>df&>;>df&>;>I->^=>$f>=>澯>=>df&>;>df&>;>df&>;>$f>=>+>A>>I->^=>df&>;>df&>;>df&>;>+>A>>澯>=>%!>@H>>df&>;>df&>;>df&>;>澯>=>)>pw>>+>A>>df&>;>df&>;>df&>;>)>pw>>%!>@H>>$#>_{>>df&>;>df&>;>df&>;>%!>@H>>3'>>>)>pw>>df&>;>df&>;>df&>;>3'>>>$#>_{>>A`%>>>df&>;>df&>;>df&>;>$#>_{>>A`%>>>3'>>>df&>;>df&>;>df&>;>A`%>>&%>vl'>Oudf&>l'>Ou)>ގdf&>">͒&%>vdf&>)>ގ+>df&> >">͒df&>+>->Z df&>> >df&>->Z f/>Xndf&>>>x>df&>f/>Xn0>df&>>|>>xdf&>0>M1>#bdf&>>o>|df&>M1>#bsv2>df&>K>&>odf&>sv2>!2>}df&>>TK>&df&>!2>}2>df&>TV>)>Tdf&>2>C1>Vdf&>}>TV>)df&>C1>V0>df&>?>4)}>df&>0>/>idf&>$f>?>4)df&>/>iI->]df&>>$f>df&>I->]+>Adf&>%!>@H>df&>+>A)>pwdf&>$#>^{%!>@Hdf&>)>pw3'>df&>A`%>$#>^{df&>3'>A`%>df&>>澉l'>Ou>澔&%>v>df&>>)>ގ>澉l'>Ou>df&>>澔&%>v>澸">͒>df&>>澥+>>)>ގ>df&>>澸">͒>澴 >>df&>>->Z >澥+>>df&>>澴 >>澁>>df&>?澣f/>Xn>->Z >df&>>澁>>>>x>df&>?澈0>?澣f/>Xn>df&>>>>x>>|>df&>?M1>#b?澈0>>df&>>>|>澄>o>df&>?sv2>?M1>#b>df&>>澄>o>K>&>df&>?!2>}?sv2>>df&>>K>&>澩>T>df&>?2>?!2>}>df&>>澩>T>TV>)>df&>?C1>V?2>>df&>>TV>)>}>>df&>?0>?C1>V>df&>>}>>?>4)>df&>?/>i?0>>df&>>?>4)>$f>>df&>>I->]?/>i>df&>>$f>>澯>>df&>>+>A>I->]>df&>>澯>>%!>@H>df&>>)>pw>+>A>df&>>%!>@H>$#>^{>df&>>3'>>)>pw>df&>>$#>^{>A`%>>df&>>A`%>>3'>>df&>>3'>>3'>>)>pw>)>pw>>)>pw>>3'>>>)>pw>)>pw>+>A>+>A>>+>A>>)>pw>>+>A>+>A>I->^=I->^=>I->^=>+>A>>I->^=I->^=/>h=/>h=?/>h=>I->^=?/>h=/>h=0>=0>=?0>=?/>h=?0>=0>=C1>VVV=>澄>o:>>|9>|9>|9>o:>澄>o:>>|9>>>x9>>x9>>x9>|9>>|9>>>x9>澁>9>9>9>>x9>>>x9>澁>9>澴 >8 >8 >8>9>澁>9>澴 >8>澸">͒8">͒8">͒8 >8>澴 >8>澸">͒8>澔&%>v8&%>v8&%>v8">͒8>澸">͒8l'>Ou8&%>v8>澔&%>v8>澔&%>v8>澉l'>Ou8l'>Ou8)>ގ8l'>Ou8>澉l'>Ou8>澉l'>Ou8>)>ގ8)>ގ8+>8)>ގ8>)>ގ8>)>ގ8>澥+>8+>8->Z 9+>8>澥+>8>澥+>8>->Z 9->Z 9f/>Xn9->Z 9>->Z 9>->Z 9?澣f/>Xn9f/>Xn90> 9f/>Xn9?澣f/>Xn9?澣f/>Xn9?澈0> 90> 9M1>$b:0> 9?澈0> 9?澈0> 9?M1>$b:M1>$b:>o:K>&:>K>&:>K>&:>澄>o:>o:sv2>:M1>$b:?M1>$b:?M1>$b:?sv2>:sv2>:K>&:>T;>澩>T;>澩>T;>K>&:K>&:!2>};sv2>:?sv2>:?sv2>:?!2>};!2>};>T;TV>*<>TV>*<>TV>*<>澩>T;>T;2>};?!2>};?!2>};?2><2>*<}><>}><>}><>TV>**V<2>VV<}>4)=>?>4)=>?>4)=>}><}>4)=$f>=>$f>=>$f>=>?>4)=?>4)=$f>=>=>澯>=>澯>=>$f>=$f>=>=%!>@H>>%!>@H>>%!>@H>>澯>=>=%!>@H>$#>_{>>$#>_{>>$#>_{>>%!>@H>%!>@H>$#>_{>A`%>>>A`%>>>A`%>>>$#>_{>$#>_{>A`%>>3'>>>3'>>>3'>>>A`%>>A`%>>l'>Ou&%>v>澔&%>v>澔&%>v>澉l'>Oul'>Ou)>ގl'>Ou>澉l'>Ou>澉l'>Ou>)>ގ)>ގ+>)>ގ>)>ގ>)>ގ>澥+>+>->Z +>>澥+>>澥+>>->Z ->Z f/>Xn->Z >->Z >->Z ?澣f/>Xnf/>Xn0>f/>Xn?澣f/>Xn?澣f/>Xn?澈0>0>M1>#b0>?澈0>?澈0>?M1>#bM1>#b>oK>&>K>&>K>&>澄>o>osv2>M1>#b?M1>#b?M1>#b?sv2>sv2>K>&>T>澩>T>澩>T>K>&K>&!2>}sv2>?sv2>?sv2>?!2>}!2>}>TTV>)>TV>)>TV>)>澩>T>T2>!2>}?!2>}?!2>}?2>2>TV>)}>>}>>}>>TV>)TV>)C1>V2>?2>?2>?C1>VC1>V}>?>4)>?>4)>?>4)>}>}>?>4)$f>>$f>>$f>>?>4)?>4)$f>>>澯>>澯>>$f>$f>>%!>@H>%!>@H>%!>@H>澯>>%!>@H$#>^{>$#>^{>$#>^{>%!>@H%!>@H$#>^{A`%>>A`%>>A`%>>$#>^{$#>^{A`%>3'>>3'>>3'>>A`%>A`%>>3'>3'>)>pw)>pw>)>pw>3'>>)>pw)>pw+>A+>A>+>A>)>pw>+>A+>AI->]I->]>I->]>+>A>I->]I->]/>i/>i?/>i>I->]?/>i/>i0>0>?0>?/>i?0>0>C1>VC1>V?C1>V?0>>澄>o>>|>|>|>o>澄>o>>|>>>x>>x>>x>|>>|>>>x>澁>>>>>x>>>x>澁>>澴 > > >>>澁>>澴 >>澸">͒">͒">͒ >>澴 >>澸">͒>澔&%>v&%>v&%>v">͒>澸">͒L=+پ~ L+پ~ Ld~ Ld~ L=d~ L=+پ~ L=+پ~ L=+پZL+پZL+پZL+پ~ L=+پ~ L= L=d~ Ld~ Ld~ L L= /\=kA`#\kA`$\1ھA`$\1ھA`.\=1ھA`/\=kA`/\=kA`/\=k/T=k/Tk/#\k/#\kA`/\=kA`T=k/Tk/Tk/#\kA`/\=kA`T=k/L=kZLkZLkZTk/T=k/L=kZL=kELkELkELkZL=kZT1ھ/$\1ھA`$\1ھ/.\=1ھA`T=1ھ/.\=1ھ/.\=1ھA`$\1ھA`T1ھ/T1ھ/T=1ھ/.\=1ھA`T=1ھ/T1ھ/L1ھZL1ھZL=1ھZT=1ھ/L=1ھZL1ھZL+پZL+پZL=+پZL=1ھZL= L LK LK L=K L= L=K LK LQwELQwEL=QwEL=K L=kEL=QwELQwELQwELkEL=kE/\=k//\=kA`.\=1ھA`.\=1ھA`.\=1ھ//\=k/L= L=K L=QwEL=QwEL=d~ L= L=d~ L=QwEL=+پZL=+پZL=+پ~ L=d~ L=QwEL=kEL=kZL=kZL=1ھZL=QwELQwELd~ L+پ~ L+پ~ L+پZLQwETk/LkZL1ھZL1ھZT1ھ/Tk/$\1ھ/$\1ھA`#\kA`#\kA`#\k/$\1ھ/L=kZT=k/T=1ھ/T=1ھ/L=1ھZL=kZLkZLkELQwELQwEL1ھZLkZLK L Ld~ Ld~ LQwELK ̾I B?lG̾&1?lG̾I B?!̾I B?!̾&1?lG̾&1?!>K B?G>&1?G˾I B?G˾I B?G>&1?G˾&1?G>K B?!>&1?!>K B?lG>&1?!>&1?lG>K B?lG>٣0?!>&1?-˾ף0?!˾ף0?!>&1?-˾&1?-˾ף0?!˾&1?-̾&1?!>&1?->٣0?!>&1?!˾I B?-̾I B?!˾&1?-˾&1?-̾I B?!̾&1?!̾&1?lG˾ף0?lG̾&1?!̾&1?!˾ף0?lG˾ף0?!˾ף0?lG˾&1?G>٣0?lG>٣0?lG˾&1?G>&1?G>٣0?lG>&1?lG>٣0?!>٣0?!>&1?lG>&1?!>K B?!>K B?->&1?!>&1?!>K B?->&1?->K B?->]B?!˾I B?-˾I B?->]B?!˾[B?!˾I B?-˾[B?!̾I B?!˾ף0?lG̾&1?lG˾&1?G>&1?G>&1?lG>٣0?lG>K B?->K B?!>]B?!˾[B?lG̾I B?lG˾[B?!˾[B?!̾I B?lG̾I B?!̾I B?lG˾I B?G̾&1?lG̾&1?lG˾I B?G˾&1?G>K B?G>K B?lG>&1?G>K B?lG>&1?lG>&1?G>K B?lG>]B?lG>K B?!>K B?!>]B?lG>]B?!̾I B?lG˾[B?lG˾I B?G>K B?lG>K B?G>]B?lG>]B?lG>K B?G˾[B?lG˾[B?lG>K B?G˾I B?GL>T?lGL>Sc?lGL>T?!L>T?!L>Sc?lGL>Sc?!JT?GJSc?G~J>T?G~J>T?GJSc?G~J>Sc?GLT?!LSc?!LT?lGLT?lGLSc?!LSc?lGJ c?!JSc?-~J> c?!~J> c?!JSc?-~J>Sc?-~J> c?!~J>Sc?-L>Sc?!JSc?-J c?!LSc?!~J>T?-L>T?!~J>Sc?-~J>Sc?-L>T?!L>Sc?!L>Sc?lG~J> c?lGL>Sc?!L>Sc?!~J> c?lG~J> c?!~J> c?lG~J>Sc?GJ c?lGJ c?lG~J>Sc?GJSc?GJ c?lGLSc?lGJ c?!J c?!LSc?lGLSc?!LT?!JT?-LSc?!LSc?!JT?-JSc?-~J>T?-~J>zT?!L>T?!~J> c?lGL>Sc?lG~J>Sc?GJ c?lGJSc?GLSc?lGJT?-LT?!JzT?!~J>zT?lGL>T?lG~J>zT?!~J>zT?!L>T?lGL>T?!L>T?lG~J>T?GL>Sc?lGL>Sc?lG~J>T?G~J>Sc?GJT?GLT?lGJSc?GJSc?GLT?lGLSc?lGLT?lGJzT?lGLT?!LT?!JzT?lGJzT?!L>T?lG~J>zT?lG~J>T?GLT?lGJT?GJzT?lGJzT?lGJT?G~J>zT?lG~J>zT?lGJT?G~J>T?G(>pC?lG(>S?lG(>pC?!(>pC?!(>S?lG(>S?!"nC?G"S?G">pC?G">pC?G"S?G">S?G(nC?!(S?!(nC?lG(nC?lG(S?!(S?lG"zT?!"S?-">zT?!">zT?!"S?-">S?-">zT?!">S?-(>S?!"S?-"zT?!(S?!">pC?-(>pC?!">S?-">S?-(>pC?!(>S?!(>S?lG">zT?lG(>S?!(>S?!">zT?lG">zT?!">zT?lG">S?G"zT?lG"zT?lG">S?G"S?G"zT?lG(S?lG"zT?!"zT?!(S?lG(S?!(nC?!"nC?-(S?!(S?!"nC?-"S?-"nC?-"[B?!">pC?-">pC?-"[B?!">]B?!">pC?-">]B?!(>pC?!">zT?lG(>S?lG">S?G"zT?lG"S?G(S?lG"nC?-(nC?!"[B?!">]B?lG(>pC?lG">]B?!">]B?!(>pC?lG(>pC?!(>pC?lG">pC?G(>S?lG(>S?lG">pC?G">S?G"nC?G(nC?lG"S?G"S?G(nC?lG(S?lG(nC?lG"[B?lG(nC?!(nC?!"[B?lG"[B?!(>pC?lG">]B?lG">pC?G(nC?lG"nC?G"[B?lG"[B?lG"nC?G">]B?lG">]B?lG"nC?G">pC?G~J>zT?lG~J>zT?!JzT?!JzT?!JzT?lG~J>zT?lG~J>zT?!~J>T?-JT?-JT?-JzT?!~J>zT?!~J>T?-~J>Sc?-JSc?-JSc?-JT?-~J>T?-~J> c?lGJ c?lGJ c?!J c?!~J> c?!~J> c?lG~J> c?lGJ c?lGJ c?!J c?!~J> c?!~J> c?lG~J>T?-~J>Sc?-JSc?-JSc?-JT?-~J>T?-~J>zT?!~J>T?-JT?-JT?-JzT?!~J>zT?!~J>zT?lG~J>zT?!JzT?!JzT?!JzT?lG~J>zT?lG~J>zT?lGJT?G~J>T?GJzT?lGJT?G~J>zT?lGLT?lGJT?GJzT?lGL>T?lG~J>zT?lG~J>T?GLT?!JzT?lGJzT?!LT?lGJzT?lGLT?!JSc?GLT?lGLSc?lGJT?GLT?lGJSc?GL>Sc?lG~J>T?G~J>Sc?GL>T?lG~J>T?GL>Sc?lG~J>zT?!L>T?lGL>T?!~J>zT?lGL>T?lG~J>zT?!JT?-LT?!JzT?!J c?lGJSc?GLSc?lG~J> c?lGL>Sc?lG~J>Sc?G~J>T?-~J>zT?!L>T?!LSc?!JT?-JSc?-LT?!JT?-LSc?!J c?!LSc?lGLSc?!J c?lGLSc?lGJ c?!J c?lG~J>Sc?GJSc?G~J> c?lG~J>Sc?GJ c?lGL>Sc?!~J> c?lG~J> c?!L>Sc?lG~J> c?lGL>Sc?!~J>Sc?-L>T?!L>Sc?!~J>T?-L>T?!~J>Sc?-JSc?-J c?!LSc?!~J> c?!~J>Sc?-L>Sc?!~J> c?!JSc?-~J>Sc?-J c?!JSc?-~J> c?!LT?lGLSc?!LSc?lGLT?!LSc?!LT?lG~J>T?GJSc?G~J>Sc?GJT?GJSc?G~J>T?GL>T?!L>Sc?lGL>Sc?!L>T?lGL>Sc?lGL>T?!">zT?lG"zT?lG"zT?!"zT?!">zT?!">zT?lG">]B?lG">]B?!"[B?!"[B?!"[B?lG">]B?lG">pC?-">S?-"S?-"S?-"nC?-">pC?->]B?lG˾[B?lG˾[B?!˾[B?!>]B?!>]B?lG>&1?lG>٣0?!˾ף0?!˾ף0?!˾ף0?lG>&1?lG>&1?->K B?-˾I B?-˾I B?-˾&1?->&1?->n9?->0?-˾0?-˾0?-˾l9?->n9?->n9?lG>]?!˾[?!˾[?!˾[?lG>n9?lG>0?lG˾ޡ0?lG˾ޡ0?!˾ޡ0?!>0?!>0?lG˾ޡ0?lG>0?G˾0?G>0?lG>0?G˾ޡ0?lG>0?lG>0?G>0?lG̾0?lG˾ޡ0?lG˾0?G>0?!>0?lG>0?!>0?lG>0?lG>0?!>0?lG>n9?lG>n9?G>0?G>0?lG>n9?G̾l9?lG˾0?G˾l9?G̾0?lG˾0?G̾l9?lG˾ޡ0?!̾0?lG̾0?!˾ޡ0?lG̾0?lG˾ޡ0?!>0?->0?!>0?!>n9?G>n9?lG>]?lG˾[?lG̾l9?lG˾l9?G˾0?-˾ޡ0?!̾0?!˾0?->0?!˾ޡ0?!>0?->0?!˾0?->n9?!>0?->n9?->0?!>0?->n9?!>]?!>n9?lG>n9?!>]?lG>n9?lG>]?!>]?lG˾l9?G>n9?G˾[?lG˾l9?G>]?lG̾l9?!˾[?lG˾[?!̾l9?lG˾[?lG̾l9?!˾l9?-̾0?!̾l9?!˾0?-̾0?!˾l9?->n9?->]?!>n9?!˾[?!˾l9?-̾l9?!˾[?!>n9?-˾l9?->]?!>n9?-˾[?!>n9?!>n9?lG>0?lG>0?!>n9?!>0?lG˾0?G>n9?G˾l9?G>0?G>n9?G˾0?G̾0?!̾l9?lG̾l9?!̾0?lG̾l9?lG̾0?!>QHk>QH?,>ף@k?,>ף@k>QH>?,>ף@k>>kD>$3Pɐ>xIQy> Y)t-Jp Oo vk Oo vkJp==Di Oo vk Oo vkDi/> Oo vk/>(&x(&x <j Oo vk Oo vk <jK Oo vkK¡¡ۀ Oo vk Oo vkۀ?xۀ Oo vk?xۀ|Vۢk|Vۢk?xۀ4[|Vۢk4[p=kp=k4[2)%[k4[ӂ2)%[k2)%[kӂʄp2)%[kʄp&\$ТH3 [UAk=B>k€=Т#>Nk#>Nk€=Тl=dТ#>Nkl=dТk$>"kk$>"kl=dТ=Тk$>"k=Т,\>$Т,\>$Т>ʄpk$>"kk$>"k>ʄp>ӂk$>"k>ӂp=>kݏ>ۀ%o>kz>ۀz>ۀ%o>kp=>kz>ۀp=>k>ۀ>ۀp=>k>ӂݏ>ۀa>ʄ֡%o>k%o>ka>ʄ֡>K%o>k>K>˗>˗ >H%o>k%o>k >H*>R=%o>k*>R=> > >]P%o>k%o>k>]P`3>W%o>k`3>W>s >s >t-%o>k%o>k>t->B>%o>k>B>#^w>&kB1>02>W#s=>~].>2'՞ah.>z>B>>B>ah.>z.>{>B>.>{\*/>?矾\*/>?矾/>z>B>>B>/>zR0>j⠾>B>R0>j⠾;0>]2>W#3>>s=>~s=>~3>>3>3Ks=>~3>3K5> 25> 2 6>lЮs=>~s=>~ 6>lЮ17>öɢs=>~꾓17>öɢoV>?~oV>?~꾓17>öɢQ8>ТoV>?~Q8>Т>~>~Q8>Т&O>/iТ>~&O>/iТW>Т;0>]B1>0>B>>B>B1>0s=>~꾝>B>s=>~#^w>&k#^w>&ks=>~r=>+/#^w>&kr=>+/r=>(kW>Т#>Т>~>~#>Т\؃>Ю>~\؃>Ю>=>=K>[>~>~꾴K>[->0>~->0V>s~V>s~->0'S>V>s~'S>>T |a'S>0Ņ>qɡ>T |a>T |a0Ņ>qɡ>Uv>Uv薆>>T |a>T |a薆>>37>T |a>37 > >,o>#>T |a>T |a,o>#ւ>Di>T |aւ>Di>u7>u7Ň>".>T |a>T |aŇ>".<̇>8(>T |a<̇>8(·>7Qy> Y)ɐ>xI.>>/R.>>/Rɐ>xI~>g·>7p>hW>T |a>T |ap>hWU>e>T |aU>e>ra>raU>eƒ>W }>raƒ>W }s>s>ƒ>W }~>gs>~>g&>4a&>4a~>gɐ>xIOr>֣ EB>֣ 0>KڽQy> Y)x>]"D>$3PD>$3Px>]"r>֣ D>$3Pr>֣ Or>֣ ED>$3POr>֣ E0>Kڽ>Q N>) a->֣ z^->֣ z^N>) a+>}@>h->֣ z^+>}@>hB>֣ B>֣ +>}@>hꂊ>8q B>֣ ꂊ>8q 0>Kڽ->֣ z^>֣ >Q >Q >֣ ,W>֣ ߎ:>'nh>֣ ^.>֣ sO.>֣ sO.>:yd>'nh>'nh.>:yd.>x >'nh.>x >>.>x .>FZ)>.>FZ)>B>>B>.>FZ)~.> ->B>~.> -].>2'՞ Oo vkp=(kp=+/򾗙t- Oo vkB>B> Oo vkp=+/򾗙B>p=+/o=~Q8Тo=~LA{,ТLA{,Тo=~~Q8Т 6lЮo=~o=~ 6lЮ5do=~5d4/4/3Eo=~o=~꾰3EA2o=~A2B>B>A21 .ǵB>1 .ǵ1Y/(1Y/(/U0jqᠾB>B>/U0jqᠾ%02r:ǠB>%02r:Ǡ/h/hV*/?矾B>B>V*/?矾n.u7B>n.u7X.'՞X.'՞GF.ñB>B>GF.ñx. -B>x. -x. -w.FZ)w.FZ)'nh'nhw.FZ)w.=C'nhw.=C֣ ^֣ ^w.=Cw.THY֣ ^w.THYw.֣ sOQ#glhWT |aT |alhWɇ#$(ɇ#$(IȇR"0T |aT |aIȇR"0T |aC|YgC|Yg`T |aT |a`JT |aJzzle1T |aT |ale1 |T |a | , |^R , ,^R4 ,4Vs~Vs~4D8Vs~꾊D8 ~ ~꾊D8~~꾊D8 *Hm~ *HmP탾P탾j~~꾳j̢~꾈̢ТТsC4Т~~sC4ТXaТ~XaТLA{,ТQ#gT |a=t=tT |ara=traiŧeN) a(W֣ ߎ:֣ N) a֣ )֣ z^B֣ 悊8q )֣ z^)֣ z^悊8q N) arasiŧeiŧes~&4aiŧe~&4a][e][e~&4aNMD][eNMDyvg[)yvg[)NMDVyt(Vyt(NMDD$3PVyt(D$3Pr֣ 󽌃r֣ D$3PGr֣ EGr֣ ED$3P0KڽGr֣ E0KڽB֣ B֣ 0Kڽ悊8q (W֣ ߎ:N) a胾)jY<(W֣ ߎ:胾)jY<`֣ b^<悊8q & 5m胾)jY<悊8q 胾)jY֣ ߎ:d>֣ b^<>)jY<>kZ>:~?,>ף@k?,>ף@kZ>:~V>s~꾓>T |a>7tV>s~+>}@>hN>) a>7t&>4a>7ts>s>>7t>ra>ra>7t>T |aɐ>xI>7t&>4aV>s~>7t?,>ף@k>7t#>!=Ӿ?,>ף@k>Q ,W>֣ ߎ:>)jY<>Q >)jY) aN>) a>)jY<>7t>7t0>Kڽꂊ>8q >7tꂊ>8q +>}@>hɐ>xID>$3P>7t>7tD>$3P0>KڽB}>Bk^>1kp=>kp=>k^>1k>kp=>k>k>k#^w>&kr=>(k%o>k%o>kr=>(kr=>(k%o>kr=>(kp=>kp=>kr=>(k>ukp=>k>ukB}>Bk]n>;:GQ.[I< k>Q.h=1e>G4c= k>Q.h=|\>Q.<=jk>GjCE<]n>;:G<1e>G4c=1e>G4c=]n>;:G< k>Q.h='>Q.0>kI@>G@ >3E>Q.Z >3E>Q.Z >kI@>G@ >|\>Q.<=|\>Q.<=kI@>G@ >V>G6=|\>Q.<=V>G6=1e>G4c=>Q.%M>">GzD,>'>Q.0>'>Q.0>">GzD,>kI@>G@ >=Q.sPb>}=G$\>b=GH>=Q.sPb>b=GH>>Q.%M>>Q.%M>b=GH>">GzD,>Lk7=Q.Qo>}=G$\>=Q.sPb>!3Q.Es>2=Gii>Lk7=Q.Qo>Lk7=Q.Qo>2=Gii>}=G$\>,k7Q.Qo>3Gݰm>!3Q.Es>!3Q.Es>3Gݰm>2=Gii>Q.%M>ͶG Z>Q.sPb>Q.sPb>ͶG Z>,k7Q.Qo>,k7Q.Qo>ͶG Z>2Gii>,k7Q.Qo>2Gii>3Gݰm>'Q.0>"GzD,>bGH>'Q.0>bGH>Q.%M>Q.%M>bGH>ͶG Z>"GzD,>'Q.0>3EQ.Z >t\Q.<=aI@G@ >3EQ.Z >3EQ.Z >aI@G@ >"GzD,> 1eG4c=VG6= kQ.h= kQ.h=VG6=t\Q.<=t\Q.<=VG6=aI@G@ >h@v>QHnt*r>tHq[t>3KRs˾h@v>QHnq[t>3KRs˾>QHk>QHkq[t>3KRs˾Rw>3KRkF.>0NF.>0Nk,>uMkF.>0N,>uMk,>uM,>uM,>uMk%*>Mk,>uM%*>Mk%*>M%*>M%*>Mk~'>pMk%*>M~'>pMk~'>pM~'>pMk~'pMk~'>pM~'>pM~'pMk~'pM~'pM~'pMk~)}Mk~'pM~)}Mk~)}M~)}M~)}Mkj+rMk~)}Mj+rMkj+rMj+rMj+rMke0-Mkj+rMe0-Mke0-Me0-Me0-Mk<.0Nke0-M<.0Nk<.0Nk;,ף@k;,ף@kQH;,ף@kQHQHkRw>3KRkq[t>3KRs˾c>"Qkzc"Qkg[t3KRs˾Hw3KRk =֣ Т|v=֣ Т|v=֣ ǜk3֣ "yT^<֣ z~x|v=֣ z~x =֣ I[ =֣ ?a4=֣ ?a2֣ >,4>G֣ >G֣ :>G֣ :>G֣ >hsc֣ >hsc֣ >G֣ >rQ֣ >hsc֣ >rQ֣ >z֣ =z֣ =rQ֣ >sh֣ =z֣ =sh֣ =Є֣ Mry=Є֣ Mry=sh֣ =xw֣ PL=Є֣ Mry=xw֣ PL=`֣ b^r֣ j><֣ hw><֣ hw>r֣ j>-֣ `g>G֣ :>>D֣ %>>2֣ >,4>2֣ >,4>>D֣ %>> 7 ֣ T^>2֣ >,4> 7 ֣ T^>-֣ P>-֣ P> 7 ֣ T^>-֣ `g>-֣ P>-֣ `g>4 ֣ :S>4 ֣ :S>-֣ `g>r֣ j>G>֣ ?aG>֣ CrQ>֣ Є>֣ Mry=w>֣ PL={h>֣ =<֣ hw> ֣ M>D֣ y>D֣ y> ֣ M>uü֣ >D֣ y>uü֣ >$֣ 8{>$֣ 8{>uü֣ >$֣ >$֣ 8{>$֣ >ǜk3֣ }>ǜk3֣ }>$֣ >)v<֣ >ǜk3֣ }>)v<֣ >9D=֣ y>9D=֣ y>)v<֣ > =֣ M>9D=֣ y> =֣ M>|v=֣ l>|v=֣ l> =֣ M>|v=֣ )>|v=֣ l>|v=֣ )>=֣ j>=֣ j>|v=֣ )> =֣ x>=֣ j> =֣ x> =֣ >`> =֣ >`> =֣ x>J=֣ hw> =֣ >`>J=֣ hw>< >֣ :S>< >֣ :S>J=֣ hw>7 >֣ T^>< >֣ :S>7 >֣ T^>2>֣ >,4>2>֣ >,4>7 >֣ T^>E>֣ %>>2>֣ >,4>E>֣ %>>G>֣ >G>֣ >E>֣ %>>G>֣ F:>G>֣ >G>֣ F:>rQ>֣ >rQ>֣ >G>֣ F:>pc>֣ >rQ>֣ >pc>֣ >{h>֣ ={h>֣ =pc>֣ >z>֣ ={h>֣ =z>֣ =Є>֣ Mry=rQ>֣ {h>֣ 㳼Or>֣ EЄ>֣ Mry=d>֣ b^<w>֣ PL=w>֣ PL=d>֣ b^<,W>֣ ߎ:w>֣ PL=,W>֣ ߎ:q{>֣ ;q{>֣ ;,W>֣ ߎ:>֣ q{>֣ ;>֣ w>֣ `<w>֣ `<>֣ ->֣ z^w>֣ `<->֣ z^{h>֣ 㳼{h>֣ 㳼->֣ z^B>֣ {h>֣ 㳼B>֣ Or>֣ E.>֣ ?a.>֣ sOG>֣ C>֣ ?a>֣ a>֣ ^ =֣ I[>֣ a =֣ ?a< >֣ fO>֣ a =֣ I[>֣ ^>֣ a< >֣ fO>֣ ^< >֣ fO.>֣ sO.>֣ sO< >֣ fO2>֣ 0.>֣ sO2>֣ 0G>֣ C=֣ i\j=֣ \qLU=֣ s4=֣ ?a =֣ ?a=֣ ̯f=֣ ̯f =֣ ?a =֣ i=֣ ̯f =֣ i|v=֣ h|v=֣ h =֣ i|v=֣ i|v=֣ h|v=֣ i=֣ i=֣ i|v=֣ i\j=֣ \qLU=֣ s\j=֣ \q9D=֣ u9D=֣ u\j=֣ \qT^<֣ z~xT^<֣ z~x\j=֣ \q|v=֣ z~x-֣ s.U֣ s-֣ z~x-֣ z~x.U֣ sD֣ u ֣ oj-֣ s-֣ i.U֣ s ֣ oj֣ i-֣ s ֣ oj.U֣ s-֣ ?a ֣ oj-֣ i֣ i ֣ ojr֣ ̯fr֣ ̯f ֣ oj&ս֣ ?a&ս֣ ?a ֣ oj-֣ ?a&ս֣ ?a6֣ uW4 ֣ fO6֣ uW-֣ K4 ֣ fO-֣ ?a6֣ uW&ս֣ ?a6֣ uW֣ ?a֣ ^-֣ K6֣ uW2֣ 02֣ 06֣ uWw.֣ sO2֣ 0w.֣ sOG֣ G֣ w.֣ sOG֣ ?aw.֣ sO6֣ uW֣ ^G֣ $֣ 7|G֣ 7|G֣ 7|$֣ 7|Ђ֣ z~xG֣ 7|Ђ֣ z~xG֣ z~xG֣ z~xЂ֣ z~xs֣ sG֣ z~xs֣ sG֣ sG֣ ss֣ s֣ iG֣ s֣ iG֣ iG֣ i֣ ia ֣ ?aG֣ ia ֣ ?aG֣ ?aG֣ ?aa ֣ ?arQ֣ G֣ ?arQ֣ G֣ ҂֣ DiIȇ֣ 0l֣ G֣ Тl֣ G֣ G֣ l֣ df֣ G֣ df֣ $֣ 7| ֣ |֣ ֣ ;6֣ ;6֣ ҂֣ Di֣ ;6҂֣ Di֣ ֣ ҂֣ Dil֣ ֣ l֣ ֣ Т֣ Тl֣ G֣ Т33֣ #OS 6֣ Q8֣ ТO0֣ 䠾1֣ (33֣ #O/֣ 럾O0֣ 䠾V.֣ w֞V.֣ w֞O0֣ 䠾33֣ #OV.֣ w֞33֣ #Ow.֣ -w.֣ -33֣ #OQ8֣ Тw.֣ -Q8֣ Тw.֣ w.֣ sOw.֣ ?aG֣ ?aG֣ ?aw.֣ ?aw.֣ iG֣ ?aw.֣ iG֣ iG֣ iw.֣ iw.֣ sG֣ iw.֣ sG֣ sG֣ sw.֣ sw.֣ z~xG֣ sw.֣ z~xG֣ z~xG֣ z~xw.֣ z~xw.֣ 7|G֣ z~xw.֣ 7|G֣ 7|G֣ 7|w.֣ 7|w.֣ G֣ 7|w.֣ G֣ G֣ w.֣ Q8֣ ТG֣ Q8֣ ТG֣ Т-֣ ֣ 7|-֣ 7|-֣ 7|֣ 7|֣ z~x-֣ 7|֣ z~x-֣ z~x-֣ z~x֣ z~x֣ s-֣ z~x֣ s-֣ s-֣ s֣ s֣ i-֣ s֣ i-֣ i-֣ i֣ i֣ ?a-֣ i֣ ?a-֣ ?a-֣ ?a֣ ?a6֣ uWP:֣ At@֣ ֣ -z֣ A!֣ P֣ T֣ T֣ PP:֣ A֣ TP:֣ A-֣ â-֣ âP:֣ A֣ --֣ â֣ --֣ -֣ ֣ -֣ -֣ ֣ ֣ 7|֣֣ Т$֣ Т$֣ $֣ $֣ Т%\֣ ТG֣ #֣ #֣ -G֣ #֣ -II֣ #OII֣ #O#֣ -c'֣ w֞II֣ #Oc'֣ w֞Va֣ (Va֣ (c'֣ w֞,4֣ 럾Va֣ (,4֣ 럾dG֣ 䠾G֣ ֣֣ Т#֣ #֣ ֣֣ Т$֣ #֣ $֣ #֣ #֣ $֣ $֣ 7|#֣ $֣ 7|E#<֣ E#<֣ $֣ 7||v=֣ 7|E#<֣ |v=֣ 7|E#<֣ E#<֣ |v=֣ 7||v=֣ |v=֣ |v=֣ ТE#<֣ E#<֣ |v=֣ Т'ף<֣ ТE#<֣ 'ף<֣ ТE#<֣ -E#<֣ -'ף<֣ Т<֣ E#<֣ -<֣ '<֣ w֞'<֣ w֞<֣ I<֣ #O'<֣ w֞I<֣ #O4<֣ 럾4<֣ 럾I<֣ #Ơa<֣ (4<֣ 럾̛a<֣ (ڎG<֣ 䠾 =֣ 7|>֣ 7|>֣ =֣ 7| >֣ "u>֣ 7| >֣ "u>֣ z~x>֣ 7|>֣ z~x >֣ "u>֣ s>֣ s >֣ "u>֣ i =֣ i>֣ i >֣ "u =֣ i >֣ "u =֣ s>֣ a =֣ i =֣ ?a>֣ i>֣ a>֣ ?a =֣ i>֣ a>֣ iG>֣ CG>֣ ?a.>֣ ?a.>֣ ?aG>֣ ?aG>֣ i.>֣ ?aG>֣ i.>֣ i.>֣ iG>֣ iG>֣ s.>֣ iG>֣ s.>֣ s.>֣ sG>֣ sG>֣ z~x.>֣ sG>֣ z~x.>֣ z~x.>֣ z~xG>֣ z~xG>֣ 7|.>֣ z~xG>֣ 7|.>֣ 7|.>֣ 7|G>֣ 7|G>֣ .>֣ 7|G>֣ .>֣ G>֣ G>֣ Т.>֣ .>֣ G>֣ ТQ8>֣ Т.>֣ Q8>֣ Т.>֣ -.>֣ -Q8>֣ Т[ 6>֣ .>֣ -[ 6>֣ V.>֣ w֞V.>֣ w֞[ 6>֣ ;3>֣ #OV.>֣ w֞;3>֣ #O/>֣ 럾/>֣ 럾;3>֣ #O1>֣ (/>֣ 럾1>֣ (O0>֣ 䠾>֣ ;6>֣ #>֣ ТMȇ>֣ 0ւ>֣ Di>֣ hf>֣ p>֣ #>֣ Т#>֣ Тp>֣ Mȇ>֣ 0#>֣ ТMȇ>֣ 0>֣ ;6>֣ ;6Mȇ>֣ 0>֣ >֣ ;6>֣ >֣ |Or>֣ E󽔃r>֣ rQ>֣ rQ>֣ r>֣ e >֣ ?arQ>֣ e >֣ ?aG>֣ ?aG>֣ ?ae >֣ ?a>֣ iG>֣ ?a>֣ iG>֣ iG>֣ i>֣ is>֣ sG>֣ is>֣ sG>֣ sG>֣ ss>֣ sЂ>֣ z~xG>֣ sЂ>֣ z~xG>֣ z~xG>֣ z~xЂ>֣ z~x$>֣ 7|G>֣ z~x$>֣ 7|G>֣ 7|G>֣ 7|$>֣ 7|hf>֣ G>֣ 7|hf>֣ G>֣ G>֣ hf>֣ #>֣ ТG>֣ #>֣ ТG>֣ Т =֣ i\j=֣ \q|v=֣ i =֣ s\j=֣ \q =֣ i|v=֣ z~x\j=֣ \q =֣ z~x =֣ z~x\j=֣ \q =֣ s =֣ s >֣ "u =֣ z~x =֣ 7|"=֣ ]|v=֣ 7| =֣ Т|v=֣ =֣ =֣ |v=֣ "=֣ ]>֣ Pz>֣ A!X:>֣ AX:>֣ Az>֣ A!!>֣ TX:>֣ A!>֣ T|@>֣ |@>֣ !>֣ T-\>֣ Т|@>֣ -\>֣ Т>֣ ->֣ --\>֣ Т =֣ Т>֣ - =֣ Т>֣ >֣ =֣ Т =֣ >֣ =֣ =֣ 7| =֣ 7| =֣ "=֣ ]|v=֣ 7|"=֣ ]|v=֣ D֣ u$֣ w$֣ z~x$֣ z~x$֣ wzT^֣ z~x$֣ z~xzT^֣ z~x$֣ 7|$֣ 7|zT^֣ z~xǜk3֣ "y$֣ 7|ǜk3֣ "y|v=֣ 7||v=֣ 7|ǜk3֣ "y|v=֣ z~x|v=֣ 7||v=֣ z~x =֣ 7| =֣ 7||v=֣ z~x =֣ z~x =֣ 7| =֣ z~x >֣ "uD֣ u$֣ z~x-֣ z~x-֣ z~x$֣ z~x$֣ 7|-֣ z~x$֣ 7|-֣ 7|-֣ 7|$֣ 7|$֣ -֣ 7|$֣ -֣ -֣ $֣ %\֣ Т-֣ %\֣ Т-֣ âЄ֣ Mry=`֣ b^<胾)jY<Є>֣ Mry=z>֣ =nr>)=>)jY֣ b^<>)[q=>)[q=d>֣ b^<Є>֣ Mry=>)[q=Є>֣ Mry=-j>)}=-j>)}=Є>֣ Mry=nr>)=E>֣ %>>T>>)7>G>֣ F:>G>֣ F:>T>>)7>zW>)z>G>֣ F:>zW>)z>pc>֣ >pc>֣ >zW>)z>[>)&>pc>֣ >[>)&>z>֣ =z>֣ =[>)&>p>)P =z>֣ =p>)P =nr>)=O=)n>>)"_>7 >֣ T^>7 >֣ T^>>)"_>>)V>7 >֣ T^>>)V>E>֣ %>>E>֣ %>>>)V>6>)@>E>֣ %>>6>)@>T>>)7> =֣ M>=)u>|v=֣ )>|v=֣ )>=)u>=)\w>|v=֣ )>=)\w> =֣ x> =֣ x>=)\w>O=)n> =֣ x>O=)n>J=֣ hw>J=֣ hw>O=)n>7 >֣ T^> ֣ M>jH)>uü֣ >uü֣ >jH)>Q)>uü֣ >Q)>$֣ >$֣ >Q)>x3) >$֣ >x3) >)v<֣ >)v<֣ >x3) ><)>)v<֣ ><)> =֣ M> =֣ M><)>jH=)> =֣ M>jH=)>=)u><֣ hw>Ľ)\w> ֣ M> ֣ M>Ľ)\w>)u> ֣ M>)u>jH)>hsc֣ >zW)z>G֣ :>G֣ :>zW)z>T>)7>G֣ :>T>)7>>D֣ %>>>D֣ %>>T>)7>6)@>>D֣ %>>6)@> 7 ֣ T^> 7 ֣ T^>6)@>)V> 7 ֣ T^>)V>-֣ `g>-֣ `g>)V>)"_>-֣ `g>)"_><֣ hw><֣ hw>)"_>O余)n><֣ hw>O余)n>Ľ)\w>z֣ =p)P =hsc֣ >hsc֣ >p)P =[)&>hsc֣ >[)&>zW)z>胾)jY<)[q=Є֣ Mry=Є֣ Mry=)[q=)j)}=Є֣ Mry=)j)}=z֣ =z֣ =)j)}=nr)=z֣ =nr)=p)P =胾)jYQ.h=mq>Q.[I<>)[q=>)[q=mq>Q.[I<|>(,"9Q<>)[q=|>(,"9Q<>)jY<>)[q=-j>)}= k>Q.h= k>Q.h=-j>)}=nr>)= k>Q.h=nr>)=|\>Q.<=nr>)=p>)P =|\>Q.<=|\>Q.<=p>)P =[>)&>|\>Q.<=[>)&>3E>Q.Z >[>)&>zW>)z>3E>Q.Z >3E>Q.Z >zW>)z>T>>)7>3E>Q.Z >T>>)7>'>Q.0>T>>)7>6>)@>'>Q.0>'>Q.0>6>)@>>)V>'>Q.0>>)V>>Q.%M>>)V>>)"_>>Q.%M>>Q.%M>>)"_>O=)n>>Q.%M>O=)n>=Q.sPb>O=)n>=)\w>=Q.sPb>=Q.sPb>=)\w>=)u>=Q.sPb>=)u>Lk7=Q.Qo>=)u>jH=)>Lk7=Q.Qo>Lk7=Q.Qo>jH=)><)>Lk7=Q.Qo><)>!3Q.Es><)>x3) >!3Q.Es>!3Q.Es>x3) >Q)>!3Q.Es>Q)>,k7Q.Qo>Q)>jH)>,k7Q.Qo>,k7Q.Qo>jH)>)u>,k7Q.Qo>)u>Q.sPb>)u>Ľ)\w>Q.sPb>Q.sPb>Ľ)\w>O余)n>Q.sPb>O余)n>Q.%M>O余)n>)"_>Q.%M>Q.%M>)"_>)V>Q.%M>)V>'Q.0>)V>6)@>'Q.0>'Q.0>6)@>T>)7>'Q.0>T>)7>3EQ.Z >T>)7>zW)z>3EQ.Z >3EQ.Z >zW)z>[)&>3EQ.Z >[)&>t\Q.<=[)&>p)P =t\Q.<=t\Q.<=p)P =nr)=t\Q.<=nr)= kQ.h=)[q=胾)jY< kQ.h=)[q= kQ.h=)j)}=)j)}= kQ.h=nr)=Hw3KRkQHk1{Uk;{>Uk>QHkRw>3KRk%*>Mkc>"Qk'l>QHk%*>Mklg>Ukc>"Qkc>"Qklg>UkRw>3KRkzc"QklgUk<.0Nkzc"Qk<.0Nk'lQHk'lQHk<.0Nke0-Mk'lQHke0-Mkj+rMkX>eXklg>UkF.>0NkF.>0Nklg>Uk,>uMk,>uMklg>Uk%*>Mkj+rMk~)}Mk'lQHk'lQHk~)}Mk~'pMk'lQHk~'pMk'l>QHk'l>QHk~'pMk~'>pMk'l>QHk~'>pMk%*>MkHw3KRklgUkzc"QkRw>3KRklg>Uk;{>Uk;{>Uklg>Ukz>CVkz>CVklg>UkLx>=XkLx>=Xklg>Ukat>Xkat>Xklg>Ukzp>Ykzp>Yklg>Ukk>Zkk>Zklg>Ukf>Uka> Zka> Zklg>UkQ\>YkQ\>Yklg>UkX>eXk<.0NklgUkXeXkXeXklgUkG\YkG\YklgUka Zka ZklgUkf&M'ף< gkp=>1>p=>k1>k$>"kk$>"k1>a#>ۅk$>"ka#>ۅ#>Nk#>Nka#>ۅs=R#>Nks=R=B>k=B>ks=R&^==B>k&^=cc=Ckcc=Ck&^=U=cc=CkU=ZCp=>k>>p=>k>k>>kD9>s~>>D9>s򾦛D9>s~꾖>k>~D9>s򾦛>󾦛>>>󾦛^>1>^>1^>1^>1^>1B}>B^>1B}>BB}>BB}>BB}>B>uB}>B>u>u>u>ur=>(>ur=>(r=>(>k>k>~>~>k^>1k>~^>1k^>1~^>1~^>1kB}>Bk^>1~B}>BkB}>B~B}>B~B}>Bk>ukB}>B~꾵>uk>u~꾵>u~꾵>ukr=>(k>u~r=>(kr=>(~꾖>D9>s~D9>s򾦛D9>s򾦛D9>s~渓>`~D9>s򾦛渓>`~渓>`񾦛渓>`񾦛渓>`~C>%~渓>`񾦛C>%~C>%򾦛C>%򾦛C>%~겘>~C>%򾦛겘>~겘>򾦛겘>򾦛겘>~꾪ޚ>M(~겘>򾦛ޚ>M(~꾪ޚ>M(ޚ>M(ޚ>M(~{>:~꾪ޚ>M({>:~{>:>{>:>k>k{>:{>:~>k{>:~Z>:~;{>U>QH;{>Uk;{>Uk>QH>QHk;{>U;{>Ukz>CVk;{>Uz>CVkz>CVz>CVz>CVkLx>=Xkz>CVLx>=XkLx>=XLx>=XLx>=Xkat>XkLx>=Xat>Xkat>Xat>Xat>Xkzp>Ykat>Xzp>Ykzp>Yzp>Yzp>Ykk>Zkzp>Yk>Zkk>Zk>Zk>Zkf>Zf> Zkf> Zka> Za> Za> ZkQ\>Yka> ZQ\>YkQ\>YQ\>YQ\>YkX>eXkQ\>YX>eXkX>eXg0NF.>0NgeXF.>0NX>eXF.>0NkF.>0NkX>eXX>eXk<.0NkXeXk<.0N<.0NXeXkXeX<.0NXeX8gF &8gF &XeX8gF &<"<"'ף< <"'ף< 'ף< 'ף< 'ף< G)<'ף< G)<G)<G)<G)<i3G)<i3i3i3i3ђ)i3ђ)ђ)ђ)ђ)֣ ђ)֣ ֣ ֣ ֣ W"֣ W"W"<"G>&M<"<"G>&MG>&MLi>ȰJLi>ȰJUh>KLi>ȰJUh>KUh>KUh>KUh>KLe>QLUh>KLe>QLLe>QLLe>QLLe>QL#b>WMLe>QL#b>WM#b>WM#b>WM#b>WM]>b@N#b>WM]>b@N]>b@N]>b@N]>b@NJY>N]>b@NJY>NJY>NJY>NJY>NFxT>NJY>NFxT>NFxT>NFxT>NFxT>NO> gNFxT>NO> gNO> gNO> gNO> gNUK>MO> gNUK>MUK>MUK>MUK>MG>&MUK>MG>&MG>&MLi>ȰJs=>TLi>ȰJLi>ȰJs=>Ts=>Ts=>Tr=>(s=>Ts=>Tr=>(r=>(p=(o=Tp=(p=(o=To=To=TBiȰJo=To=TBiȰJBiȰJG&MG&MUKMG&MUKMUKMUKMUKMO gNUKMO gNO gNO gNO gN(s=>TLi>ȰJBeQLUhKBiȰJp=(wp=p=w@}B@}B\1p=p=\1쎾p=쎾^>1p=>>>p=>>^>1B}>Bp=>p=>B}>B>up=>>ur=>(1>JY>NFxT>Nr=>(Li>ȰJp=>p=>Li>ȰJUh>Kp=>Uh>K1>]>b@NJY>N#b>WM#b>WMJY>N1>#b>WM1>Le>QLLe>QL1>Uh>K zBiȰJp=p=BiȰJo=Tp=o=Tp=('ף< &^=<"<"&^=s=R<"s=RG>&MG>&Ms=Ra#>ۅG>&Ma#>ۅUK>MUK>Ma#>ۅ1>UK>M1>O> gNO> gN1>FxT>NUKMBiȰJG&MG&MBiȰJ zG&M zW"W" z"վ YW""վ Y֣ ֣ "վ Y/ض֣ /ضђ)ђ)/ضVӼO ђ)VӼO i3i3VӼO ;@2P i3;@2P G)<G)<;@2P Ɔ<*R G)<Ɔ<*R 'ף< 'ף< Ɔ<*R U='ף< U=&^=#bWMBeQL]b@N]b@NBeQLBiȰJ]b@NBiȰJJYNJYNBiȰJUKMJYNUKM0N,>uM%*>M~'>pM8gF &guq3;$v;$$$v;$G#uM8gF &,>uM%*>M<.0N8gF &e0-Me0-M8gF &j+rM~'>pM~'pM8gF &8gF &~'pM~)}M8gF &~)}Mj+rM],Ak;,ף@kQHk;,ף@k],Ak& 5m& 5m],Ak胾)jY<胾)jY<],AkmqQ.[I<>QHk?,>ף@k>_Ekh@v>QHn>QHk>_Ek5>1Z?)"Ӿ |> {:t>_Ek5>1Z?)"Ӿ>_Ek]>,Akjk>GjCEG B;]n>;:G<]n>;:GG B;&n>GH]n>;:G<&n>GHo>G`IGr>GS*x>Q@n4q>Gi`4q>Gi`뽝*x>Q@n]n>;:G<4q>Gi`]n>;:GG`>_Ek |> {:t*x>Q@n>_Ek*x>Q@nh@v>QHnh@v>QHn*x>Q@nIGr>GSh@v>QHnIGr>GSt*r>tHmq>Q.[I<]n>;:G<v>Ҥ4IFv>Ҥ4IF]n>;:G<*x>Q@nv>Ҥ4IF*x>Q@nz>R8rnz>R8rn*x>Q@n |> {:tw.FZ)x. -w.֣ -w.֣ z~xw.=Cw.֣ 7|w.֣ 7|w.=Cw.FZ)w.֣ 7|w.FZ)w.֣ w.֣ w.FZ)w.֣ -w.֣ z~xw.֣ sw.=Cw.=Cw.֣ sw.֣ iw.=Cw.֣ iw.THYw.THYw.֣ iw.֣ ?aw.THYw.֣ ?aw.֣ sO1Y/(1֣ (O0֣ 䠾Q8֣ ТS 6֣ Q8ТQ8ТS 6֣ 6lЮ 6lЮS 6֣ 5d5dS 6֣ 33֣ #O5d33֣ #O4/1Y/(1 .ǵ1֣ (1֣ (1 .ǵA21֣ (A233֣ #O33֣ #OA23E33֣ #O3E4/V*/?矾/h/֣ 럾/֣ 럾/h%02r:Ǡ/֣ 럾%02r:ǠO0֣ 䠾O0֣ 䠾%02r:Ǡ/U0jqᠾO0֣ 䠾/U0jqᠾ1Y/(V.֣ w֞w.֣ -x. -x. -GF.ñV.֣ w֞V.֣ w֞GF.ñX.'՞V.֣ w֞X.'՞/֣ 럾/֣ 럾X.'՞n.u7/֣ 럾n.u7V*/?矾G֣ ТQ8֣ ТQ8ТQ8ТLA{,ТG֣ ТG֣ ТLA{,ТXaТG֣ ТXaТ֣ Т֣ ТXaТsC4Т֣ ТsC4ТТlhWl֣ ɇ#$(ɇ#$(l֣ Iȇ֣ 0ɇ#$(Iȇ֣ 0IȇR"0IȇR"0Iȇ֣ 0Iȇ֣ 0҂֣ Di҂֣ DiC|YgC|Yg҂֣ Di``҂֣ Di֣ `֣ J ֣ |le1֣ ֣ le1z֣ zJD84֣ ;6֣ ;64^R֣ ;6^R ֣ | ֣ |^R | ֣ | |le1֣ ТТ֣ ֣ Т̢̢j֣ ֣ jP탾֣ P탾֣ ;6֣ ;6P탾 *Hm֣ ;6 *HmD8$֣ 7|=tЂ֣ z~xЂ֣ z~x=tiŧeЂ֣ z~xiŧes֣ ss֣ siŧe][es֣ s][e֣ i֣ i][eyvg[)֣ iyvg[)a ֣ ?aa ֣ ?ayvg[)Vyt(a ֣ ?aVyt(r֣ $֣ 7|df֣ =t=tdf֣ l֣ =tl֣ Q#gQ#gl֣ lhW>֣ ?a>֣ ^>'nh>t->֣ ->B>>B>>֣ ->֣ >B>>֣ >>>֣ >֣ 7|>֣ 7|>֣ z~x>>>֣ z~x>֣ s>>֣ s>'nh>'nh>֣ s>֣ i>'nh>֣ i>֣ ?a,\>$Т-\>֣ Т>ʄp>ʄp-\>֣ Т!>֣ Tz>֣ A!>ۀ!>֣ T!>֣ T>ۀ>ӂ!>֣ T>ӂ>ʄpa>ʄ֡ݏ>ۀz>֣ A!z>֣ A!ݏ>ۀz>ۀz>֣ A!z>ۀ>ۀa>ʄ֡z>֣ A!>K>Kz>֣ A!>֣ P>K>֣ P>˗>˗>֣ PX:>֣ A>˗X:>֣ A >H`3>W>]P|@>֣ |@>֣ >]P> |@>֣ > X:>֣ AX:>֣ A> *>R=X:>֣ A*>R= >H`3>W|@>֣ >s >s |@>֣ >֣ ->s >֣ ->t-&ף<Т'ף<֣ Т!<Т!<Т'ף<֣ Т|v=֣ Т,\>$Т=Т-\>֣ Т-\>֣ Т=Т =֣ Т=Тl=dТ =֣ Т =֣ Тl=dТ€=Т =֣ Т€=Т|v=֣ Т|v=֣ Т€=Тiws=-Т|v=֣ Тiws=-Т!<ТE#<֣ -'<֣ w֞C#< -C#< -'<֣ w֞(P:֣ A/>DiK֣ P¡¡֣ Pz֣ A!¡z֣ A!ۀ֣ T4[z֣ A!z֣ A!4[?xۀz֣ A!?xۀۀ%\֣ Т&\$Т-֣ â-֣ â&\$Тʄp-֣ âʄp֣ T֣ Tʄpӂ֣ Tӂ4[֣ 7|֣ ֣ B>B>֣ ֣ -B>֣ -t-'nh֣ ^֣ ?a֣ ?a֣ i'nh'nh֣ i֣ s'nh֣ s֣ s֣ z~x֣ z~x֣ 7|e >֣ ?ar>֣ x>]"p>hWp>֣ U>eU>ep>֣ hf>֣ U>ehf>֣ ƒ>W }x>]"Qy> Y)e >֣ ?ae >֣ ?aQy> Y).>>/Re >֣ ?a.>>/R>֣ i>֣ i.>>/R~>ghf>֣ $>֣ 7|ƒ>W }ƒ>W }$>֣ 7|Ђ>֣ z~xƒ>W }Ђ>֣ z~x~>g~>gЂ>֣ z~xs>֣ s~>gs>֣ s>֣ i#>Т#>֣ Т\؃>Ю\؃>Ю#>֣ Т>֣ >֣ ;6K>[>֣ >֣ K>[>=>֣ >=\؃>Ю>Uv0Ņ>qɡ >֣ | >֣ |0Ņ>qɡ'S> >֣ |'S>>֣ ;6>֣ ;6'S>->0>֣ ;6->0K>[>Uv >֣ |薆>薆> >֣ |>֣ 薆>>֣ >37ւ>֣ Di,o>#>֣ >֣ ,o># >>֣ >>37Mȇ>֣ 0>u7ւ>֣ Diւ>֣ Di>u7ւ>Diւ>֣ Diւ>Di,o>#p>֣ p>hWMȇ>֣ 0Mȇ>֣ 0p>hW·>7·>7<̇>8(Mȇ>֣ 0Mȇ>֣ 0<̇>8(Ň>".Mȇ>֣ 0Ň>".>u7Q8>ТQ8>֣ Т&O>/iТ&O>/iТQ8>֣ ТG>֣ Т&O>/iТG>֣ ТW>ТW>ТG>֣ Т#>֣ ТW>Т#>֣ Т#>Т.>֣ -V.>֣ w֞~.> -~.> -V.>֣ w֞].>2'՞].>2'՞V.>֣ w֞ah.>zah.>zV.>֣ w֞/>֣ 럾ah.>z/>֣ 럾.>{O0>֣ 䠾/>z/>֣ 럾/>֣ 럾/>z\*/>?矾/>֣ 럾\*/>?矾.>{1>֣ (;0>]O0>֣ 䠾O0>֣ 䠾;0>]R0>j⠾O0>֣ 䠾R0>j⠾/>z3>3K3>>;3>֣ #O;3>֣ #O3>>2>W#;3>֣ #O2>W#1>֣ (1>֣ (2>W#B1>01>֣ (B1>0;0>]3>3K;3>֣ #O5> 25> 2;3>֣ #O[ 6>֣ 5> 2[ 6>֣ 6>lЮ 6>lЮ[ 6>֣ 17>öɢ17>öɢ[ 6>֣ Q8>֣ Т17>öɢQ8>֣ ТQ8>Т.>:yd.>֣ sO.>֣ ?a.>֣ ?a.>֣ i.>:yd.>:yd.>֣ i.>֣ s.>:yd.>֣ s.>x .>֣ -~.> -.>֣ .>֣ ~.> -.>FZ).>֣ .>FZ).>֣ 7|.>֣ 7|.>FZ).>x .>֣ 7|.>x .>֣ z~x.>֣ z~x.>x .>֣ ss=>~r=>(~r=>+/r=>+/r=>(~r=>(kr=>+/r=>(kr=>(kr=>(~s=>~z>(~r=>(~z>(~꾵>u~꾵>u~z>(~B}>B~B}>B~z>(~^>1~^>1~z>(~>~>~z>(~D9>s~D9>s~z>(~渓>`~渓>`~z>(~C>%~C>%~z>(~겘>~겘>~z>(~꾪ޚ>M(~꾪ޚ>M(~z>(~{>:~{>:~z>(~Z>:~Z>:~z>(~V>s~z>(~>~V>s~>~z>(~oV>?~oV>?~z>(~s=>~p=(kp=(kp=+/p=+/p=(kp=(~p=+/p=(~o=~~z(~ ~ ~z(~Vs~Vs~z(~Z<~Z<~z(~y<~y<~z(~꾨ޚO(~꾨ޚO(~z(~貘~貘~z(~C'~C'~z(~专b~专b~z(~B9s~B9s~z(~꾿쎾~꾿쎾~z(~\1~\1~z(~@}B~@}B~z(~꾳w~꾳w~z(~p=(~p=(~z(~o=~o=~z(~~꾀>c;_j>p=>ھGKھtbFA<_>c;_=>ھj>pGKھFA<_sbFA<_>c;_>c;_>c;_FA<_FA<_=>ھ=>ھGKھGKھGKھ=>ھ>c;_>c;_j>pj>pj>p>c;_j>p=>ھ=>ھ=>ھj>pj>ptbsbFA<_FA<_FA<_tb>c;_FA<_GKھGKھ=>ھ>c;_>c;_=>ھGKھGKھFA<_>c;_sbtbGKھGKھGKھsbq[t>3KRs˾t*r>tHj*rtHj*rtHg[t3KRs˾q[t>3KRs˾3GSj*rtHt*r>tHIGr>GS3GSt*r>tH3GS?GrGSj*rtH3GjCEGSjk>GjCE<3GjCEGSjk>GjCE<1e>G4c=3GjCE<1e>G4c=V>G6=3GjCE<V>G6=kI@>G@ >3GjCEG@ >">GzD,>3GjCE<">GzD,>b=GH>3GjCE}=G$\>3GjCE<}=G$\>2=Gii>3GjCE<2=Gii>3Gݰm>3GjCE<3Gݰm>2Gii>3GjCE<2Gii>ͶG Z>3GjCE<ͶG Z>bGH>3GjCE"GzD,>3GjCE<"GzD,>aI@G@ >3GjCEVG6=3GjCEף@k]>,Akmq>Q.[IQ.[I<>)jYף@k]>,Ak>QHkmq>Q.[I<>QHkIGr>GSt*r>tH>QHkIGr>GSmq>Q.[IGSmq>Q.[IGjCE3KRs˾F.>0Nkc>"Qkq[t>3KRs˾,>uMkF.>0Nkq[t>3KRs˾%*>Mk,>uMkq[t>3KRs˾~'>pMk%*>Mk~'>pMkq[t>3KRs˾g[t3KRs˾g[t3KRs˾~'pMk~'>pMk>?>>?mG> ?> ?>?mG> ?G> ?> ?Gҭ~>c?ҭ~>c?> ?Gҭ~>c?Gҭ~>c?ҭ~>c?G^lA>,?^lA>,?ҭ~>c?G^lA>,?GM΂ ?GM΂ ?hQ?GhQ?GM΂ ?hQ?dlA,?dlA,?Gح~c?ح~c?dlA,?Gح~c?Gح~c?ح~c?G ? ?ح~c?G ?G ? ?G?? ?G?G'N->'N->Gx ݟ=x ݟ='N->Gx ݟ=Gx ݟ=x ݟ=G<<x ݟ=G<G<<Gռռ<GռGռռGx ݟGx ݟx ݟGL-L-x ݟGL-Gx ݟGx ݟռkj> VGLc>_q9~ >`GK `GFc_q9| VGM΂ ?GhY?GhY?hY?M΂ ?M΂ ?GFc_Fc_q9K `GLc>_q9d>_k~ >`GK `G~ >`Gd>_kd>_kFc_K `G>sռG>sռx >؟x >؟x >؟G>sռG>sռG><G><><>sռ>sռG><Gx >؟=Gx >ݟ=x >ݟ=><><GL>->G>?mG>?>>?>L>->L>->GL>-L>-Gx >؟Gx >؟Gx >؟L>-x >ݟ=x >؟=GL>->GL>->GL>->x >ݟ=^lA>,?G`>Y?G`>Y?`>Y?^lA>,?^lA>,?G`>Y?G?΂= ?G?΂= ??΂= ?`>Y?`>Y?G?΂= ??΂= ?GhQ?GhQ?GhQ??΂= ?hY?GdlA,?GdlA,?dlA,?hY?hY?G?G'N->G'N->'N->??GFc_| VGFc_q9| VGFc_L-L-L-G| VGkj> VGd>_kLc>_q9L>-GL>-d>_kd>_kkj> VGL>-Gx >؟=Gx ݟ=G'N->G'N->GL>->Gx >؟=G><G<Gx ݟ=Gx ݟ=Gx >؟=G><G>sռGռG<G<G><G>sռG>sռGx >؟Gx ݟGx ݟGռG>sռGx >؟GL>-GL-GL-Gx ݟGx >؟Gق(?GL>->G'N->G?Gق(?G'N->Gق(?G>?mGL>->G>?mGق(?G> ?G> ?Gق(?Gҭ~>c?Gҭ~>c?Gق(?G^lA>,?G^lA>,?Gق(?G`>Y?G`>Y?Gق(?G?΂= ?G?΂= ?Gق(?GhQ?GhQ?Gق(?GM΂ ?GM΂ ?Gق(?GhY?GhY?Gق(?GdlA,?GdlA,?Gق(?Gح~c?Gح~c?Gق(?G ?G ?Gق(?G?GL>-Gkj> VG| VG| VGL-GL>-GK `G| VGkj> VGkj> VG~ >`GK `Gx >ݟ=L>->'N->'N->x ݟ=x >ݟ=><x >ݟ=x ݟ=x ݟ=<><>sռ><<<ռ>sռ>sռռx ݟx ݟx >؟>sռx >؟x ݟL-L-L>-x >؟L>-L-Fc_Fc_d>_kL>-ق(?v'N->L>->>?>ق(?vL>->ق(?v?'N-> ??ق(?vح~c? ?ق(?vdlA,?ح~c?ق(?vhY?dlA,?ق(?vM΂ ?hY?ق(?vhQ?M΂ ?ق(?v?΂= ?hQ?ق(?v`>Y??΂= ?ق(?v^lA>,?`>Y?ق(?vҭ~>c?^lA>,?ق(?v> ?ҭ~>c?ق(?v>?>> ?ق(?ve]~ ZI~ ZIA`ZIA`e]A`e]~ dIL~ [mF~ ZI~ ZI~ e]~ dIL~ dIL~ dILA`[mFA`[mFA`[mF~ dIL~ dILA`e]A`ZIA`ZIA`[mFA`dILA`dIL~ e]~ e]A`e]A`dILA`dIL~ [mF~ [mFA`ZIA`ZIA`ZI~ [mF~ fI>J~ _m>F~ _m>FA`_m>FA`fI>JA`fI>J~ g>[~ ^>I~ _m>F~ _m>F~ fI>J~ g>[~ g>[A`fI>JA`_m>FA`_m>FA`^>IA`g>[A`g>[~ g>[A`^>IA`^>IA`^>I~ g>[~ ^>I~ ^>IA`_m>FA`_m>FA`_m>F~ ^>I~ Ii>K~ >oY~ >oYA`>oYA`Ii>KA`Ii>K~ E>pP~ ue>^~ ue>^A`ue>^A`E>pPA`E>pP~ >oY~ ue>^~ ue>^A`ue>^A`>oYA`>oY~ Ii>K~ E>pP~ E>pPA`E>pPA`Ii>KA`Ii>K~ Ii>KA`>oYA`ue>^A`ue>^A`E>pPA`Ii>KA`Ii>K~ >oY~ ue>^~ ue>^~ E>pP~ Ii>K~ ke^A`EpPA`IiKA`IiKA` oYA`ke^A`ke^~ EpP~ IiK~ IiK~ oY~ ke^~ oY~ IiK~ IiKA`IiKA` oYA` oY~ ke^~ EpP~ EpPA`EpPA`ke^A`ke^~ EpP~ IiK~ IiKA`IiKA`EpPA`EpP~ ke^~ oY~ oYA` oYA`ke^A`ke^~ g>[~ fI>J~ fI>JA`fI>JA`g>[A`g>[~ 4^z>E|>x@X%x>ƧX%x>ƧE|>x@}>^\%xƧ}^E|x@\%xƧE|x@7^zE|l=}O={T={T=}O=~<E|>l={>T=}>O=ut~H~H{T=uv>7^z$(>7^z$(>uv>\%x c>!E|x@!}^!7^z!7^z!}^!~H#4^z>#}>^#E|>x@|H4^7|7#u>t6^u>Q#s>t6^u>Q>#u>v>#s>v>|u>Qu>ts>tE|>l=||>M={>T=||M=E|l={T=|u>Q>s>v>u>v>農Q-Q農Q農Q--Q農-農農-n-農n-n農n農n-[-n農[-[農[農[-W-[農W-W羲W羲W-il-W羲il-il羲il羲il-8-il羲8-8澲8澲8-͓#-8澲͓#-͓#澲͓#澲͓#-h-͓#澲h-h徲h徲h-P4-h徲P4-P4侲P4侲P4-N@ -P4侲N@ -N@ 㾲N@ 㾲N@ -P -N@ 㾲P -P 㾲P 㾲P -E-P 㾲E-E⾲E⾲E-͓-E⾲͓-͓ᾲ͓ᾲ͓-83-͓ᾲ83-83ྲ83ྲ83-iA-83ྲiA-iAྲiAྲiA-W'߾-iAྲW'߾-W'߾W'߾W'߾-R߾-W'߾R߾-R߾R߾R߾-X߾-R߾X߾-X߾X߾X߾-(޾-X߾(޾-(޾(޾(޾-Qn޾-(޾Qn޾-Qn޾Qn޾Qn޾-(޾-Qn޾(޾-(޾(޾(޾-♾X߾-(޾♾X߾-♾X߾♾X߾♾X߾-R߾-♾X߾R߾-R߾R߾R߾-L'߾-R߾L'߾-L'߾L'߾L'߾-l盾A-L'߾l盾A-l盾Aྲl盾Aྲl盾A-k3-l盾Aྲk3-k3ྲk3ྲk3-՜-k3ྲ՜-՜ᾲ՜ᾲ՜-N#E-՜ᾲN#E-N#E⾲N#E⾲N#E-S -N#E⾲S -S 㾲S 㾲S -c -S 㾲c -c 㾲c 㾲c -S4-c 㾲S4-S4侲S4侲S4-N#h-S4侲N#h-N#h徲N#h徲N#h-՜#-N#h徲՜#-՜#澲՜#澲՜#-k-՜#澲k-k澲k澲k-l盾l-k澲l盾l-l盾l羲l盾l羲l盾l-L-l盾l羲L-L羲L羲L-[-L羲[-[農[農[-♾n-[農♾n-♾n農♾n農♾n--♾n農-農農-Q-N@ -P4-Q -P -N@ -Q -P4-h-Q -E-P -Q -h-͓#-Q -͓-E-Q -͓#-8-Q -83-͓-Q -8-il-Q -iA-83-Q -il-W-Q -W'߾-iA-Q -W-[-Q -R߾-W'߾-Q -[-n-Q -X߾-R߾-Q -n--Q -(޾-X߾-Q --Q-Q -Qn޾-(޾-Q -Q--Q -(޾-Qn޾-Q --♾n-Q -♾X߾-(޾-Q -♾n-[-Q -R߾-♾X߾-Q -[-L-Q -L'߾-R߾-Q -L-l盾l-Q -l盾A-L'߾-Q -l盾l-k-Q -k3-l盾A-Q -k-՜#-Q -՜-k3-Q -՜#-N#h-Q -N#E-՜-Q -N#h-S4-Q -S -N#E-Q -S4-c -Q -c -S -Q -P4侲N@ 㾲Q 㾲N@ 㾲P 㾲Q 㾲h徲P4侲Q 㾲P 㾲E⾲Q 㾲͓#澲h徲Q 㾲E⾲͓ᾲQ 㾲8澲͓#澲Q 㾲͓ᾲ83ྲQ 㾲il羲8澲Q 㾲83ྲiAྲQ 㾲W羲il羲Q 㾲iAྲW'߾Q 㾲[農W羲Q 㾲W'߾R߾Q 㾲n農[農Q 㾲R߾X߾Q 㾲農n農Q 㾲X߾(޾Q 㾲Q農農Q 㾲(޾Qn޾Q 㾲農Q農Q 㾲Qn޾(޾Q 㾲♾n農農Q 㾲(޾♾X߾Q 㾲[農♾n農Q 㾲♾X߾R߾Q 㾲L羲[農Q 㾲R߾L'߾Q 㾲l盾l羲L羲Q 㾲L'߾l盾AྲQ 㾲k澲l盾l羲Q 㾲l盾Aྲk3ྲQ 㾲՜#澲k澲Q 㾲k3ྲ՜ᾲQ 㾲N#h徲՜#澲Q 㾲՜ᾲN#E⾲Q 㾲S4侲N#h徲Q 㾲N#E⾲S 㾲Q 㾲c 㾲S4侲Q 㾲S 㾲c 㾲Q 㾲hr#GG#GhG9u}~hrGh9uG& 9u}~G9u&HmGi5& G&HmirG8i5Gir8G]*t8G8\SGY ]*tG\SXG3ZY GX3Gm*3ZG3mPGo|m*GmPG]ׯ*o|G\ׯPGqZ]ׯ*G\ׯPpGV qZGpV G*tV GV SG *tGS G5 G qGx 5GqxGmG#ѫ|~x GxGm#ѫGq#ѫ|~G#ѫGꐫGqGꐫGG#G-hr-G-h-#G-G-hr-9u}~-G-9u-h-G-9u}~-& -G-&Hm-9u-G-& -i5-G-ir-&Hm-G-i5-8-G-8-ir-G-8-]*t-G-\S-8-G-]*t-Y -G-X-\S-G-Y -3Z-G-3-X-G-3Z-m*-G-mP-3-G-m*-o|-G--mP-G-o|-]ׯ*-G-\ׯP--G-]ׯ*-qZ-G-p-\ׯP-G-qZ-V -G-V -p-G-V -*t-G-S-V -G-*t- -G- -S-G- -5-G-q- -G-5-x -G-xGm-q-G-x -#ѫ|~-G-#ѫ-xGm-G-#ѫ|~-q-G--#ѫ-G-q-ꐫG-G-ꐫG--G-mPmP--3mP-mP33-mP-X3-3XX-3-\SX-X\S\S-X-8\S-\S88-\S-ir8-8irir-8-&Hmir-ir&Hm&Hm-ir-9u&Hm-&Hm9u9u-&Hm-h9u-9uhh-9u-#Gh-h#G#G-h-hr#G-#Ghrhr-#G-9u}~hr-hr9u}~9u}~-hr-& 9u}~-9u}~& & -9u}~-i5& -& i5i5-& -8i5-i588-i5-]*t8-8]*t]*t-8-Y ]*t-]*tY Y -]*t-3ZY -Y 3Z3Z-Y -m*3Z-3Zm*m*-3Z-o|m*-m*o|o|-m*-]ׯ*o|-o|]ׯ*]ׯ*-o|-qZ]ׯ*-]ׯ*qZqZ-]ׯ*-V qZ-qZV V -qZ-*tV -V *t*t-V - *t-*t  -*t-5 - 55- -x 5-5x x -5-#ѫ|~x -x #ѫ|~#ѫ|~-x -q#ѫ|~-#ѫ|~qq-#ѫ|~-ꐫGq-qꐫGꐫG-q-ꐫG-ꐫG-ꐫG-#ѫ-#ѫ#ѫ--xGm#ѫ-#ѫxGmxGm-#ѫ-qxGm-xGmqq-xGm- q-q  -q-S - SS- -V S-SV V -S-pV -V pp-V -\ׯPp-p\ׯP\ׯP-p-\ׯP-\ׯP-\ׯP-mP-⠄ԲUՃU-ՃUՃUՃU- ԲU-ՃU ԲU- ԲU ԲU ԲU-DU-懁sUڀ>U-ڀ>Uڀ>Uڀ>U-8@T-ڀ>U8@T-8@T8@T8@T-wMT-8@TwMT-wMTwMTwMT-T~XT-wMTT~XT-T~XTT~XTT~XT- ~nS-T~XT ~nS- ~nS ~nS ~nS-}xS- ~nS}xS-}xS}xS}xS-7}1S-}xS7}1S-7}1S7}1S7}1S-}NR-7}1S}NR-}NR}NR}NR- ~XiR-}NR ~XiR- ~XiR ~XiR ~XiR-T~ R- ~XiRT~ R-T~ RT~ RT~ R-wwQ-T~ RwwQ-wwQwwQwwQ-8@#gQ-wwQ8@#gQ-8@#gQ8@#gQ8@#gQ-ڀ$Q-8@#gQڀ$Q-ڀ$Qڀ$Qڀ$Q-懁P-ڀ$Q懁P-懁P懁P懁P-D2P-懁PD2P-D2PD2PD2P- P-D2P P- P P P-ՃP- PՃP-ՃPՃPՃP-⠄P-ՃP⠄P-⠄P⠄P⠄P-f2P-⠄Pf2P-f2Pf2Pf2P-<"P-f2P<"P-<"P<"P<"P-І$Q-<"PІ$Q-І$QІ$QІ$Q-:k#gQ-І$Q:k#gQ-:k#gQ:k#gQ:k#gQ-wQ-:k#gQwQ-wQwQwQ-Y R-wQY R-Y RY RY R-XiR-Y RXiR-XiRXiRXiR-׈NR-XiR׈NR-׈NR׈NR׈NR-V爾1S-׈NRV爾1S-V爾1SV爾1SV爾1S-׈xS-V爾1S׈xS-׈xS׈xS׈xS-nS-׈xSnS-nSnSnS-YXT-nSYXT-YXTYXTYXT-MT-YXTMT-MTMTMT-:kT-MT:kT-:kT:kT:kT-І>U-:kTІ>U-І>UІ>UІ>U-<"sU-І>U<"sU-<"sU<"sU<"sU-fU-Ճ1S-ڀ$Q-8@#gQ-Ճ1S-ڀ>U-懁sU-Ճ1S-懁P-ڀ$Q-Ճ1S-懁sU-DU-Ճ1S-І$Q-<"P-Ճ1S-І>U-:kT-Ճ1S-:k#gQ-І$Q-Ճ1S-:kT-MT-Ճ1S-wQ-:k#gQ-Ճ1S-MT-YXT-Ճ1S-Y R-wQ-Ճ1S-YXT-nS-Ճ1S-XiR-Y R-Ճ1S-nS-׈xS-Ճ1S-׈NR-XiR-Ճ1S-׈xS-V爾1S-Ճ1S-V爾1S-׈NR-Ճ1S-}xS7}1SՃ1S7}1S}NRՃ1S ~nS}xSՃ1S}NR ~XiRՃ1ST~XT ~nSՃ1S ~XiRT~ RՃ1SwMTT~XTՃ1ST~ RwwQՃ1S8@TwMTՃ1SwwQ8@#gQՃ1Sڀ>U8@TՃ1S8@#gQڀ$QՃ1S懁sUڀ>UՃ1Sڀ$Q懁PՃ1SDU<"sUՃ1S<"PІ$QՃ1S:kTІ>UՃ1SІ$Q:k#gQՃ1SMT:kTՃ1S:k#gQwQՃ1SYXTMTՃ1SwQY RՃ1SnSYXTՃ1SY RXiRՃ1S׈xSnSՃ1SXiR׈NRՃ1SV爾1S׈xSՃ1S׈NRV爾1SՃ1S,V[3Y?VYLY?VY,VYLYtVgX,V[3YLY,VYtV`ZLY!U rXtVgXLYtV`Z!U2ZLY-UX!U rXLY!U2Z-U[LYS1W-UXLY-U[Sc[LYRWS1WLYSc[R;[LY kQBVWRWLYR;[ kQ[LYO/W kQBVWLY kQ[O\LYeNWO/WLYO\eN:\LYL"WeNWLYeN:\L!\LY;KWL"WLYL!\;K:\LYܯI/W;KWLY;K:\ܯI\LY`6HBVWܯI/WLYܯI\`6H[LYXFW`6HBVWLY`6H[XF;[LYE1WXFWLYXF;[Ec[LY@DXE1WLYEc[@D[LYKC rX@DXLY@D[KC2ZLY,CgXKC rXLYKC2Z,C`ZLYAB[3Y,CgXLY,C`ZABYLY̮BYAB[3YLYABY̮BYLY?VY-,V[3Y-LY-,VY-?VY-LY-,V[3Y-tVgX-LY-tV`Z-,VY-LY-tVgX-!U rX-LY-!U2Z-tV`Z-LY-!U rX--UX-LY--U[-!U2Z-LY--UX-S1W-LY-Sc[--U[-LY-S1W-RW-LY-R;[-Sc[-LY-RW- kQBVW-LY- kQ[-R;[-LY- kQBVW-O/W-LY-O\- kQ[-LY-O/W-eNW-LY-eN:\-O\-LY-eNW-L"W-LY-L!\-eN:\-LY-L"W-;KW-LY-;K:\-L!\-LY-;KW-ܯI/W-LY-ܯI\-;K:\-LY-ܯI/W-`6HBVW-LY-`6H[-ܯI\-LY-`6HBVW-XFW-LY-XF;[-`6H[-LY-XFW-E1W-LY-Ec[-XF;[-LY-E1W-@DX-LY-@D[-Ec[-LY-@DX-KC rX-LY-KC2Z-@D[-LY-KC rX-,CgX-LY-,C`Z-KC2Z-LY-,CgX-AB[3Y-LY-ABY-,C`Z-LY-AB[3Y-̮BY-LY-̮BY-ABY-LY-eN:\eN:\-L!\-O\eN:\-eN:\O\O\-eN:\- kQ[O\-O\ kQ[ kQ[-O\-R;[ kQ[- kQ[R;[R;[- kQ[-Sc[R;[-R;[Sc[Sc[-R;[--U[Sc[-Sc[-U[-U[-Sc[-!U2Z-U[--U[!U2Z!U2Z--U[-tV`Z!U2Z-!U2ZtV`ZtV`Z-!U2Z-,VYtV`Z-tV`Z,VY,VY-tV`Z-?VY,VY-,VY?VY?VY-,VY-,V[3Y?VY-?VY,V[3Y,V[3Y-?VY-tVgX,V[3Y-,V[3YtVgXtVgX-,V[3Y-!U rXtVgX-tVgX!U rX!U rX-tVgX--UX!U rX-!U rX-UX-UX-!U rX-S1W-UX--UXS1WS1W--UX-RWS1W-S1WRWRW-S1W- kQBVWRW-RW kQBVW kQBVW-RW-O/W kQBVW- kQBVWO/WO/W- kQBVW-eNWO/W-O/WeNWeNW-O/W-L"WeNW-eNWL"WL"W-eNW-;KWL"W-L"W;KW;KW-L"W-ܯI/W;KW-;KWܯI/WܯI/W-;KW-`6HBVWܯI/W-ܯI/W`6HBVW`6HBVW-ܯI/W-XFW`6HBVW-`6HBVWXFWXFW-`6HBVW-E1WXFW-XFWE1WE1W-XFW-@DXE1W-E1W@DX@DX-E1W-KC rX@DX-@DXKC rXKC rX-@DX-,CgXKC rX-KC rX,CgX,CgX-KC rX-AB[3Y,CgX-,CgXAB[3YAB[3Y-,CgX-̮BYAB[3Y-AB[3Y̮BY̮BY-AB[3Y-ABY̮BY-̮BYABYABY-̮BY-,C`ZABY-ABY,C`Z,C`Z-ABY-KC2Z,C`Z-,C`ZKC2ZKC2Z-,C`Z-@D[KC2Z-KC2Z@D[@D[-KC2Z-Ec[@D[-@D[Ec[Ec[-@D[-XF;[Ec[-Ec[XF;[XF;[-Ec[-`6H[XF;[-XF;[`6H[`6H[-XF;[-ܯI\`6H[-`6H[ܯI\ܯI\-`6H[-;K:\ܯI\-ܯI\;K:\;K:\-ܯI\-L!\;K:\-;K:\L!\L!\-;K:\-eN:\L!\-L!\~6K>:\L>!\-L>!\L>!\L>!\-%cN>:\-L>!\%cN>:\-%cN>:\%cN>:\%cN>:\-O>\-%cN>:\O>\-O>\O>\O>\-eQ>P[-O>\eQ>P[-eQ>P[eQ>P[eQ>P[-~R>;[-eQ>P[~R>;[-~R>;[~R>;[~R>;[-S> c[-~R>;[S> c[-S> c[S> c[S> c[-U>[-S> c[U>[-U>[U>[U>[-U>2Z-U>[U>2Z-U>2ZU>2ZU>2Z-oV>`Z-U>2ZoV>`Z-oV>`ZoV>`ZoV>`Z-V>Y-oV>`ZV>Y-V>YV>YV>Y- V>IY-V>Y V>IY- V>IY V>IY V>IY-V>2Y- V>IYV>2Y-V>2YV>2YV>2Y-oV>X-V>2YoV>X-oV>XoV>XoV>X-U> rX-oV>XU> rX-U> rXU> rXU> rX-U>X-U> rXU>X-U>XU>XU>X-S>W-U>XS>W-S>WS>WS>W-~R>XW-S>W~R>XW-~R>XW~R>XW~R>XW-eQ>BVW-~R>XWeQ>BVW-eQ>BVWeQ>BVWeQ>BVW-O>/W-eQ>BVWO>/W-O>/WO>/WO>/W-%cN>W-O>/W%cN>W-%cN>W%cN>W%cN>W-L>{W-%cN>WL>{W-L>{WL>{WL>{W-~6K>W-L>{W~6K>W-~6K>W~6K>W~6K>W-I>/W-~6K>WI>/W-I>/WI>/WI>/W-,1H>BVW-I>/W,1H>BVW-,1H>BVW,1H>BVW,1H>BVW-#F>XW-,1H>BVW#F>XW-#F>XW#F>XW#F>XW-СE>W-#F>XWСE>W-СE>WСE>WСE>W- D>X-СE>W D>X- D>X D>X D>X-C> rX- D>XC> rX-C> rXC> rXC> rX-l'C>X-C> rXl'C>X-l'C>Xl'C>Xl'C>X- B>2Y-l'C>X B>2Y- B>2Y B>2Y B>2Y-B>IY- B>2YB>IY-B>IYB>IYB>IY- B>Y-B>IY B>Y- B>Y B>Y B>Y-l'C>`Z- B>Yl'C>`Z-l'C>`Zl'C>`Zl'C>`Z-C>2Z-l'C>`ZC>2Z-C>2ZC>2ZC>2Z- D>[-C>2Z D>[- D>[ D>[ D>[-СE> c[- D>[СE> c[-СE> c[СE> c[СE> c[-#F>;[-СE> c[#F>;[-#F>;[#F>;[#F>;[-,1H>P[-#F>;[,1H>P[-,1H>P[,1H>P[,1H>P[-I>\-,1H>P[I>\-I>\I>\I>\-~6K>:\-I>\~6K>:\-~6K>:\~6K>:\~6K>:\-L>!\- V>IY-V>Y-L>IY-V>2Y- V>IY-L>IY-V>Y-oV>`Z-L>IY-oV>X-V>2Y-L>IY-oV>`Z-U>2Z-L>IY-U> rX-oV>X-L>IY-U>2Z-U>[-L>IY-U>X-U> rX-L>IY-U>[-S> c[-L>IY-S>W-U>X-L>IY-S> c[-~R>;[-L>IY-~R>XW-S>W-L>IY-~R>;[-eQ>P[-L>IY-eQ>BVW-~R>XW-L>IY-eQ>P[-O>\-L>IY-O>/W-eQ>BVW-L>IY-O>\-%cN>:\-L>IY-%cN>W-O>/W-L>IY-%cN>:\-L>!\-L>IY-L>{W-%cN>W-L>IY-L>!\-~6K>:\-L>IY-~6K>W-L>{W-L>IY-~6K>:\-I>\-L>IY-I>/W-~6K>W-L>IY-I>\-,1H>P[-L>IY-,1H>BVW-I>/W-L>IY-,1H>P[-#F>;[-L>IY-#F>XW-,1H>BVW-L>IY-#F>;[-СE> c[-L>IY-СE>W-#F>XW-L>IY-СE> c[- D>[-L>IY- D>X-СE>W-L>IY- D>[-C>2Z-L>IY-C> rX- D>X-L>IY-C>2Z-l'C>`Z-L>IY-l'C>X-C> rX-L>IY-l'C>`Z- B>Y-L>IY- B>2Y-l'C>X-L>IY- B>Y-B>IY-L>IY-B>IY- B>2Y-L>IY-V>Y V>IYL>IY V>IYV>2YL>IYoV>`ZV>YL>IYV>2YoV>XL>IYU>2ZoV>`ZL>IYoV>XU> rXL>IYU>[U>2ZL>IYU> rXU>XL>IYS> c[U>[L>IYU>XS>WL>IY~R>;[S> c[L>IYS>W~R>XWL>IYeQ>P[~R>;[L>IY~R>XWeQ>BVWL>IYO>\eQ>P[L>IYeQ>BVWO>/WL>IY%cN>:\O>\L>IYO>/W%cN>WL>IYL>!\%cN>:\L>IY%cN>WL>{WL>IY~6K>:\L>!\L>IYL>{W~6K>WL>IYI>\~6K>:\L>IY~6K>WI>/WL>IY,1H>P[I>\L>IYI>/W,1H>BVWL>IY#F>;[,1H>P[L>IY,1H>BVW#F>XWL>IYСE> c[#F>;[L>IY#F>XWСE>WL>IY D>[СE> c[L>IYСE>W D>XL>IYC>2Z D>[L>IY D>XC> rXL>IYl'C>`ZC>2ZL>IYC> rXl'C>XL>IY B>Yl'C>`ZL>IYl'C>X B>2YL>IYB>IY B>YL>IY B>2YB>IYL>IY}>RA}>4SՃ>4SA}>4S}>SՃ>4S~>kR}>RՃ>4S}>S~> SՃ>4S^~> R~>kRՃ>4S~> S^~>ZTՃ>4Sw>Q^~> RՃ>4S^~>ZTw>TՃ>4S<@>iQw>QՃ>4Sw>T<@>BTՃ>4Sڀ>'Q<@>iQՃ>4S<@>BTڀ>sAUՃ>4Sꇁ>zPڀ>'QՃ>4Sڀ>sAUꇁ>vUՃ>4SD>)Pꇁ>zPՃ>4Sꇁ>vUD>4UՃ>4S >PD>)PՃ>4SD>4U >̴UՃ>4SՃ>P >PՃ>4S >̴UՃ>QUՃ>4S栄>PՃ>PՃ>4SՃ>QU栄>̴UՃ>4Sf>)P栄>PՃ>4S栄>̴Uf>4UՃ>4S@">zPf>)PՃ>4Sf>4U@">vUՃ>4SІ>'Q@">zPՃ>4S@">vUІ>sAUՃ>4S>k>iQІ>'QՃ>4SІ>sAU>k>BTՃ>4S>Q>k>iQՃ>4S>k>BT>TՃ>4SY> R>QՃ>4S>TY>ZTՃ>4S >kRY> RՃ>4SY>ZT > SՃ>4S׈>R >kRՃ>4S > S׈>SՃ>4SZ>4S׈>RՃ>4S׈>SZ>4SՃ>4SA}>4S-}>R-Ճ>4S-}>S-A}>4S-Ճ>4S-}>R-~>kR-Ճ>4S-~> S-}>S-Ճ>4S-~>kR-^~> R-Ճ>4S-^~>ZT-~> S-Ճ>4S-^~> R-w>Q-Ճ>4S-w>T-^~>ZT-Ճ>4S-w>Q-<@>iQ-Ճ>4S-<@>BT-w>T-Ճ>4S-<@>iQ-ڀ>'Q-Ճ>4S-ڀ>sAU-<@>BT-Ճ>4S-ڀ>'Q-ꇁ>zP-Ճ>4S-ꇁ>vU-ڀ>sAU-Ճ>4S-ꇁ>zP-D>)P-Ճ>4S-D>4U-ꇁ>vU-Ճ>4S-D>)P- >P-Ճ>4S- >̴U-D>4U-Ճ>4S- >P-Ճ>P-Ճ>4S-Ճ>QU- >̴U-Ճ>4S-Ճ>P-栄>P-Ճ>4S-栄>̴U-Ճ>QU-Ճ>4S-栄>P-f>)P-Ճ>4S-f>4U-栄>̴U-Ճ>4S-f>)P-@">zP-Ճ>4S-@">vU-f>4U-Ճ>4S-@">zP-І>'Q-Ճ>4S-І>sAU-@">vU-Ճ>4S-І>'Q->k>iQ-Ճ>4S->k>BT-І>sAU-Ճ>4S->k>iQ->Q-Ճ>4S->T->k>BT-Ճ>4S->Q-Y> R-Ճ>4S-Y>ZT->T-Ճ>4S-Y> R- >kR-Ճ>4S- > S-Y>ZT-Ճ>4S- >kR-׈>R-Ճ>4S-׈>S- > S-Ճ>4S-׈>R-Z>4S-Ճ>4S-Z>4S-׈>S-Ճ>4S- >̴U >̴U-Ճ>QU-D>4U >̴U- >̴UD>4UD>4U- >̴U-ꇁ>vUD>4U-D>4Uꇁ>vUꇁ>vU-D>4U-ڀ>sAUꇁ>vU-ꇁ>vUڀ>sAUڀ>sAU-ꇁ>vU-<@>BTڀ>sAU-ڀ>sAU<@>BT<@>BT-ڀ>sAU-w>T<@>BT-<@>BTw>Tw>T-<@>BT-^~>ZTw>T-w>T^~>ZT^~>ZT-w>T-~> S^~>ZT-^~>ZT~> S~> S-^~>ZT-}>S~> S-~> S}>S}>S-~> S-A}>4S}>S-}>SA}>4SA}>4S-}>S-}>RA}>4S-A}>4S}>R}>R-A}>4S-~>kR}>R-}>R~>kR~>kR-}>R-^~> R~>kR-~>kR^~> R^~> R-~>kR-w>Q^~> R-^~> Rw>Qw>Q-^~> R-<@>iQw>Q-w>Q<@>iQ<@>iQ-w>Q-ڀ>'Q<@>iQ-<@>iQڀ>'Qڀ>'Q-<@>iQ-ꇁ>zPڀ>'Q-ڀ>'Qꇁ>zPꇁ>zP-ڀ>'Q-D>)Pꇁ>zP-ꇁ>zPD>)PD>)P-ꇁ>zP- >PD>)P-D>)P >P >P-D>)P-Ճ>P >P- >PՃ>PՃ>P- >P-栄>PՃ>P-Ճ>P栄>P栄>P-Ճ>P-f>)P栄>P-栄>Pf>)Pf>)P-栄>P-@">zPf>)P-f>)P@">zP@">zP-f>)P-І>'Q@">zP-@">zPІ>'QІ>'Q-@">zP->k>iQІ>'Q-І>'Q>k>iQ>k>iQ-І>'Q->Q>k>iQ->k>iQ>Q>Q->k>iQ-Y> R>Q->QY> RY> R->Q- >kRY> R-Y> R >kR >kR-Y> R-׈>R >kR- >kR׈>R׈>R- >kR-Z>4S׈>R-׈>RZ>4SZ>4S-׈>R-׈>SZ>4S-Z>4S׈>S׈>S-Z>4S- > S׈>S-׈>S > S > S-׈>S-Y>ZT > S- > SY>ZTY>ZT- > S->TY>ZT-Y>ZT>T>T-Y>ZT->k>BT>T->T>k>BT>k>BT->T-І>sAU>k>BT->k>BTІ>sAUІ>sAU->k>BT-@">vUІ>sAU-І>sAU@">vU@">vU-І>sAU-f>4U@">vU-@">vUf>4Uf>4U-@">vU-栄>̴Uf>4U-f>4U栄>̴U栄>̴U-f>4U-Ճ>QU栄>̴U-栄>̴UՃ>QUՃ>QU-栄>̴U- >̴UՃ>QU-Ճ>QUٯ>)>{-)>{)>{)>{-o>-)>{o>-o>o>o>-4>-o>4>-4>4>4>->-4>>->>>->T->>T->T>T>T-:>m->T:>m-:>m:>m:>m->-:>m>->>>-6)>n->6)>n-6)>n6)>n6)>n-v>7-6)>nv>7-v>7v>7v>7->A-v>7>A->A>A>A-ö>G->Aö>G-ö>Gö>Gö>G->-ö>G>->>>-v>"->v>"-v>"v>"v>"-6)>k!-v>"6)>k!-6)>k!6)>k!6)>k!->-6)>k!>->>>-:>->:>-:>:>:>->wu-:>>wu->wu>wu>wu->M ->wu>M ->M >M >M -4>->M 4>-4>4>4>-o>x-4>o>x-o>xo>xo>x-(>}-o>x(>}-(>}(>}(>}-ٯ>x-(>}ٯ>x-ٯ>xٯ>xٯ>x->-ٯ>x>->>>-UW>M ->UW>M -UW>M UW>M UW>M -Q>wu-UW>M Q>wu-Q>wuQ>wuQ>wu->-Q>wu>->>>-E>->E>-E>E>E>->l!-E>>l!->l!>l!>l!-uҫ>#->l!uҫ>#-uҫ>#uҫ>#uҫ>#-E>-uҫ>#E>-E>E>E>->G-E>>G->G>G>G-E>B->GE>B-E>BE>BE>B-uҫ>8-E>Buҫ>8-uҫ>8uҫ>8uҫ>8->n-uҫ>8>n->n>n>n-E>->nE>-E>E>E>->n-E>>n->n>n>n-R>T->nR>T-R>TR>TR>T-VW>-R>TVW>-VW>VW>VW>->-VW>>->>>-ٯ>->ٯ>-ٯ>ٯ>ٯ>-)>{-ö>G->A-(>G->-ö>G-(>G->A-v>7-(>G-v>"->-(>G-v>7-6)>n-(>G-6)>k!-v>"-(>G-6)>n->-(>G->-6)>k!-(>G->-:>m-(>G-:>->-(>G-:>m->T-(>G->wu-:>-(>G->T->-(>G->M ->wu-(>G->-4>-(>G-4>->M -(>G-4>-o>-(>G-o>x-4>-(>G-o>-)>{-(>G-(>}-o>x-(>G-)>{-ٯ>-(>G-ٯ>x-(>}-(>G-ٯ>->-(>G->-ٯ>x-(>G->-VW>-(>G-UW>M ->-(>G-VW>-R>T-(>G-Q>wu-UW>M -(>G-R>T->n-(>G->-Q>wu-(>G->n-E>-(>G-E>->-(>G-E>->n-(>G->l!-E>-(>G->n-uҫ>8-(>G-uҫ>#->l!-(>G-uҫ>8-E>B-(>G-E>-uҫ>#-(>G-E>B->G-(>G->G-E>-(>G->Aö>G(>Gö>G>(>Gv>7>A(>G>v>"(>G6)>nv>7(>Gv>"6)>k!(>G>6)>n(>G6)>k!>(>G:>m>(>G>:>(>G>T:>m(>G:>>wu(>G>>T(>G>wu>M (>G4>>(>G>M 4>(>Go>4>(>G4>o>x(>G)>{o>(>Go>x(>}(>Gٯ>)>{(>G(>}ٯ>x(>G>ٯ>(>Gٯ>x>(>GVW>>(>G>UW>M (>GR>TVW>(>GUW>M Q>wu(>G>nR>T(>GQ>wu>(>GE>>n(>G>E>(>G>nE>(>GE>>l!(>Guҫ>8>n(>G>l!uҫ>#(>GE>Buҫ>8(>Guҫ>#E>(>G>GE>B(>GE>>G(>GYQ> 㾲A> 㾲 㾲A> 㾲YQ>2侲 㾲>E⾲YQ> 㾲 㾲YQ>2侲>h徲 㾲.ϓ>6ᾲ>E⾲ 㾲>h徲.ϓ>#澲 㾲Y9>1ྲ.ϓ>6ᾲ 㾲.ϓ>#澲Y9>澲 㾲>AྲY9>1ྲ 㾲Y9>澲>l羲 㾲dX>%߾>Aྲ 㾲>l羲dX>羲 㾲i>R߾dX>%߾ 㾲dX>羲i>[農 㾲(–>V߾i>R߾ 㾲i>[農(–>l農 㾲>&޾(–>V߾ 㾲(–>l農>農 㾲l޾>&޾ 㾲>農農 㾲e>&޾l޾ 㾲農e>農 㾲P>V߾e>&޾ 㾲e>農P>l農 㾲>R߾P>V߾ 㾲P>l農>[農 㾲N>%߾>R߾ 㾲>[農N>羲 㾲>AྲN>%߾ 㾲N>羲>l羲 㾲m>1ྲ>Aྲ 㾲>l羲m>澲 㾲Jל>6ᾲm>1ྲ 㾲m>澲Jל>#澲 㾲$>E⾲Jל>6ᾲ 㾲Jל>#澲$>h徲 㾲U> 㾲$>E⾲ 㾲$>h徲U>2侲 㾲d> 㾲U> 㾲 㾲U>2侲d> 㾲 㾲A> -YQ> - -YQ>2-A> - -YQ> ->E- ->h-YQ>2- ->E-.ϓ>6- -.ϓ>#->h- -.ϓ>6-Y9>1- -Y9>-.ϓ>#- -Y9>1->A- ->l-Y9>- ->A-dX>%߾- -dX>->l- -dX>%߾-i>R߾- -i>[-dX>- -i>R߾-(–>V߾- -(–>l-i>[- -(–>V߾->&޾- ->-(–>l- ->&޾-l޾- -->- -l޾-e>&޾- -e>-- -e>&޾-P>V߾- -P>l-e>- -P>V߾->R߾- ->[-P>l- ->R߾-N>%߾- -N>->[- -N>%߾->A- ->l-N>- ->A-m>1- -m>->l- -m>1-Jל>6- -Jל>#-m>- -Jל>6-$>E- -$>h-Jל>#- -$>E-U> - -U>2-$>h- -U> -d> - -d> -U>2- ->農>--(–>l農>->農(–>l農(–>l->-i>[農(–>l-(–>l農i>[農i>[-(–>l-dX>羲i>[-i>[農dX>羲dX>-i>[->l羲dX>-dX>羲>l羲>l-dX>-Y9>澲>l->l羲Y9>澲Y9>->l-.ϓ>#澲Y9>-Y9>澲.ϓ>#澲.ϓ>#-Y9>->h徲.ϓ>#-.ϓ>#澲>h徲>h-.ϓ>#-YQ>2侲>h->h徲YQ>2侲YQ>2->h-A> 㾲YQ>2-YQ>2侲A> 㾲A> -YQ>2-YQ> 㾲A> -A> 㾲YQ> 㾲YQ> -A> ->E⾲YQ> -YQ> 㾲>E⾲>E-YQ> -.ϓ>6ᾲ>E->E⾲.ϓ>6ᾲ.ϓ>6->E-Y9>1ྲ.ϓ>6-.ϓ>6ᾲY9>1ྲY9>1-.ϓ>6->AྲY9>1-Y9>1ྲ>Aྲ>A-Y9>1-dX>%߾>A->AྲdX>%߾dX>%߾->A-i>R߾dX>%߾-dX>%߾i>R߾i>R߾-dX>%߾-(–>V߾i>R߾-i>R߾(–>V߾(–>V߾-i>R߾->&޾(–>V߾-(–>V߾>&޾>&޾-(–>V߾-l޾>&޾->&޾l޾l޾->&޾-e>&޾l޾-l޾e>&޾e>&޾-l޾-P>V߾e>&޾-e>&޾P>V߾P>V߾-e>&޾->R߾P>V߾-P>V߾>R߾>R߾-P>V߾-N>%߾>R߾->R߾N>%߾N>%߾->R߾->AྲN>%߾-N>%߾>Aྲ>A-N>%߾-m>1ྲ>A->Aྲm>1ྲm>1->A-Jל>6ᾲm>1-m>1ྲJל>6ᾲJל>6-m>1-$>E⾲Jל>6-Jל>6ᾲ$>E⾲$>E-Jל>6-U> 㾲$>E-$>E⾲U> 㾲U> -$>E-d> 㾲U> -U> 㾲d> 㾲d> -U> -U>2侲d> -d> 㾲U>2侲U>2-d> -$>h徲U>2-U>2侲$>h徲$>h-U>2-Jל>#澲$>h-$>h徲Jל>#澲Jל>#-$>h-m>澲Jל>#-Jל>#澲m>澲m>-Jל>#->l羲m>-m>澲>l羲>l-m>-N>羲>l->l羲N>羲N>->l->[農N>-N>羲>[農>[-N>-P>l農>[->[農P>l農P>l->[-e>農P>l-P>l農e>農e>-P>l-農e>-e>農農-e>->農-農|(<|H~H~H~(<|(<|uQ>uv>s>v>s>v>|u>Q>|uQ>|>(<~>(<~>H~>H|>H|>(<|uQ|u>Qs>ts>tut|uQ!~4^uQ>6^u>Q>6^u>Q>#s>v>!uv>#~>(<6^>(<6^>H6^>H#~>H#~>(t6^u>Q6^u>Q4^uQ!ut#~>H#u>t#s>t|u>Qs>t~>HX%x> c>}>O=4^z>$(>4^z>$(>}>O={>T=#X%x> c>#4^z>$(>#}>O=#4^z>$(>#E|>l=#}>O=!\%x c>!}O=!7^z$(>!7^z$(>!}O=!E|l=#s>v>#~>(<#~>H#~>H#s>t#s>v>s>v>s>t~>H~>H~>(<s>v>uv>~(<~H~Hutuv>!uv>!ut4^74^7!~!uv>#s>v>#s>t#s>t!ut!uv>uv>uts>ts>ts>v>uv>4^uQ>!uv>!\%x c>!\%x c>4^ix >4^uQ>4^ix >!\%x c>!7^z$(>!7^z$(>4^Iz`>4^ix >#u>v>6^u>Q>6^ix> >6^ix> >#X%x> c>#u>v>4^Iz`>!7^z$(>!E|l=!E|l=4^|M=4^Iz`>#X%x> c>6^ix> >6^Ez>`>6^Ez>`>#4^z>$(>#X%x> c>#4^z>$(>6^Ez>`>6^|>M=6^|>M=#E|>l=#4^z>$(>4^~p=4^|M=!E|l=!E|l=!}O=4^~p=#E|>l=6^|>M=6^~>p=6^~>p=#}>O=#E|>l=6^ݦ><#~><#}>O=#}>O=6^~>p=6^ݦ><6^>(<#~>(<#~><#~><6^ݦ><6^>(<#u>t#~>H#~>H#~>H#X%x>Ƨ#u>t!7^z!~H!ut!ut!\%xƧ!7^z4^7!~H!}^!}^4^~4^7#X%x>Ƨ#~>H#}>^#}>^#4^z>#X%x>Ƨ6^ݦ>7#~>H#~>H#~>H6^>H6^ݦ>74^~!}^!E|x@!E|x@4^|4^~6^~>#}>^#~>H#~>H6^ݦ>76^~>4^|!E|x@!7^z!7^z4^Iz4^|6^|>#E|>x@#}>^#}>^6^~>6^|>4^Iz!7^z!\%xƧ!\%xƧ4^ix4h4^Iz6^Ez>#4^z>#E|>x@#E|>x@6^|>6^Ez>4^ix4h!\%xƧ!ut!ut4^uQ4^ix4h6^ix>4h#X%x>Ƨ#4^z>#4^z>6^Ez>6^ix>4h6^u>Q#u>t#X%x>Ƨ#X%x>Ƨ6^ix>4h6^u>Q4^uQ>|uQ>|u>Q>|u>Q>6^u>Q>4^uQ>6^ix> >6^u>Q>|u>Q>|u>Q>|ix> >6^ix> >4^uQ>4^ix >|ix >|ix >|uQ>4^uQ>6^Ez>`>6^ix> >|ix> >|ix> >|Ez>`>6^Ez>`>4^ix >4^Iz`>|Iz`>|Iz`>|ix >4^ix >6^|>M=6^Ez>`>|Ez>`>|Ez>`>||>M=6^|>M=4^Iz`>4^|M=||M=||M=|Iz`>4^Iz`>6^~>p=6^|>M=||>M=||>M=|~>p=6^~>p=4^|M=4^~p=|~p=|~p=||M=4^|M=6^ݦ><6^~>p=|~>p=|~>p=|ݦ><6^ݦ><4^~p=4^<|<|<|~p=4^~p=6^>(<6^ݦ><|ݦ><|ݦ><|>(<6^>(<6^>(<|>(<|>H|>H6^>H6^>(<6^ݦ>76^>H|>H|>H|ݦ>76^ݦ>76^~>6^ݦ>7|ݦ>7|ݦ>7|~>6^~>4^74^~|~|~|74^76^|>6^~>|~>|~>||>6^|>4^~4^||||||~4^~6^Ez>6^|>||>||>|Ez>6^Ez>4^|4^Iz|Iz|Iz||4^|6^ix>4h6^Ez>|Ez>|Ez>|ix>4h6^ix>4h4^Iz4^ix4h|ix4h|ix4h|Iz4^Iz6^u>Q6^ix>4h|ix>4h|ix>4h|u>Q6^u>Q4^ix4h4^uQ|uQ|uQ|ix4h4^ix4h6^u>Q|u>Q|uQ|uQ4^uQ6^u>Quv>|uQ>|ix >|ix >\%x c>uv>\%x c>|ix >|Iz`>|Iz`>7^z$(>\%x c>|u>Q>u>v>X%x> c>X%x> c>|ix> >|u>Q>7^z$(>|Iz`>||M=||M={T=7^z$(>|ix> >X%x> c>4^z>$(>4^z>$(>|Ez>`>|ix> >||>M=|Ez>`>4^z>$(>4^z>$(>{>T=||>M=|~p=}O=E|l=E|l=||M=|~p=|<~<}O=}O=|~p=|<}>O=|~>p=||>M=||>M=E|>l=}>O=|(<~(<~<~<|<|(<~><|ݦ><|~>p=|~>p=}>O=~><~>(<|>(<|ݦ><|ݦ><~><~>(<|7~H~H~H|H|7|~}^~H~H|7|~|>H~>H~>H~>H|ݦ>7|>H||E|x@}^}^|~|||ݦ>7~>H}>^}>^|~>|ݦ>7|Iz7^zE|x@E|x@|||Iz|~>}>^E|>x@E|>x@||>|~>|ix4h\%xƧ7^z7^z|Iz|ix4h||>E|>x@4^z>4^z>|Ez>||>|uQut\%xƧ\%xƧ|ix4h|uQ|Ez>4^z>X%x>ƧX%x>Ƨ|ix>4h|Ez>|ix>4hX%x>Ƨu>tu>t|u>Q|ix>4hu>t~>H~>H~>Hs>tu>t~H}^\%xƧ\%xƧut~HX%x>Ƨ}>^~>H~>Hu>tX%x>Ƨs>v>~>(<~><~><u>v>s>v>u>v>~><}>O=}>O=X%x> c>u>v>#~>(<#s>v>#u>v>#u>v>#~><#~>(<#u>v>#X%x> c>#}>O=#}>O=#~><#u>v>!uv>!~!uv>!~<4^<4^~p=4^~p=!}O=!~<{T=~<~(<~({T=?1^z$(>?V%x c>?E|l=?V%x c>?uv>?E|l=?E|l=?uv>?}O=?}O=?uv>?~<?E|x@?}^?~H?uv>?~(<?~<?E|x@?ut?1^z?1^z?ut?V%xƧ#>1^z#>V%xƧ#>E|x@#>E|x@#>V%xƧ#>ut#>E|l=#>}O=#>1^z$(>#>1^z$(>#>}O=#>~<#>1^z$(>#>~<#>V%x c>#>V%x c>#>~<#>~(<#>V%x c>#>~(<#>uv>!>}>O=!>E|>l=!>~><6^>(<|>(<6^>H6^>H|>(<|>H|>>H4^>>H4^>>7|>>H4^>>7|>>7|>>74^>>74^>~>|>>74^>~>|>~>|>~>4^>~>4^>|>|>~>4^>|>|>|>|>|>4^>|>4^>Kz>|>|>4^>Kz>|>Kz>|>Kz>4^>Kz>4^>ix>4h|>Kz>4^>ix>4h|>ix>4h|>ix>4h4^>ix>4h4^>u>Q|>ix>4h4^>u>Q|>u>Q|>uQ6^>ix4h|>ix4h|>ix4h6^>ix4h6^>Cz|>ix4h6^>Cz|>Cz|>Cz6^>Cz6^>||>Cz6^>||>||>|6^>|6^>~|>|6^>~|>~|>~6^>~6^>ڦ7|>~6^>ڦ7|>ڦ7|>ڦ76^>ڦ76^>H|>ڦ76^>H|>H|>(<6^>(<6^>ڦ<|>(<6^>ڦ<|>ڦ<|>ڦ<6^>ڦ<6^>~p=|>ڦ<6^>~p=|>~p=|>~p=6^>~p=6^>|M=|>~p=6^>|M=|>|M=|>|M=6^>|M=6^>Cz`>|>|M=6^>Cz`>|>Cz`>|>Cz`>6^>Cz`>6^>ix >|>Cz`>6^>ix >|>ix >|>ix >6^>ix >6^>uQ>|>u>Q>4^>ix> >|>ix> >|>ix> >4^>ix> >4^>Kz>`>|>ix> >4^>Kz>`>|>Kz>`>|>Kz>`>4^>Kz>`>4^>|>M=|>Kz>`>4^>|>M=|>|>M=|>|>M=4^>|>M=4^>~>p=|>|>M=4^>~>p=|>~>p=|>~>p=4^>~>p=4^>><|>~>p=4^>><|>><|>><4^>><4^>>(<|>><4^>>(<|>>(<6^>(<#>~(<6^>ڦ<6^>ڦ<#>~(<#>~<6^>ڦ<#>~<6^>~p=6^>~p=#>~<#>}O=6^>~p=#>}O=6^>|M=6^>|M=#>}O=#>E|l=6^>|M=#>E|l=6^>Cz`>6^>Cz`>#>E|l=#>1^z$(>6^>Cz`>#>1^z$(>6^>ix >6^>ix >#>1^z$(>#>V%x c>6^>ix >#>V%x c>6^>uQ>6^>uQ>#>V%x c>#>uv>#>~H6^>H#>~H#>~H6^>H6^>ڦ7#>~H6^>ڦ7#>}^#>}^6^>ڦ76^>~#>}^6^>~#>E|x@#>E|x@6^>~6^>|6^>uQ#>ut6^>ix4h6^>ix4h#>ut#>V%xƧ6^>ix4h#>V%xƧ6^>Cz6^>Cz#>V%xƧ#>1^z6^>Cz#>1^z6^>|6^>|#>1^z#>E|x@4^>u>Q>!>s>v>!>u>v>!>u>t!>s>t4^>u>Q4^>u>Q>!>u>v>4^>ix> >4^>ix> >!>u>v>!>^%x> c>4^>ix> >!>^%x> c>4^>Kz>`>4^>Kz>`>!>^%x> c>!>:^z>$(>4^>Kz>`>!>:^z>$(>4^>|>M=4^>|>M=!>:^z>$(>!>E|>l=4^>|>M=!>E|>l=4^>~>p=4^>~>p=!>E|>l=!>}>O=4^>~>p=!>}>O=4^>><4^>>}>O=!>~><4^>>~><4^>>(<4^>>(~>~>(u>t4^>u>Q!>^%x>Ƨ!>^%x>Ƨ4^>u>Q4^>ix>4h!>^%x>Ƨ4^>ix>4h!>:^z>!>:^z>4^>ix>4h4^>Kz>!>:^z>4^>Kz>!>E|>x@!>E|>x@4^>Kz>4^>|>!>E|>x@4^>|>!>}>^!>}>^4^>|>4^>~>4^>>H!>~>H4^>>74^>>7!>~>H!>~>H4^>>7!>~>H4^>~>4^>~>!>~>H!>}>^|>u>Q>>u>v>>s>v>|>><>~>(<>~><|>><>~><|>~>p=|>~>p=>~><>}>O=|>~>p=>}>O=|>|>M=|>|>M=>}>O=>E|>l=|>|>M=>E|>l=|>Kz>`>|>Kz>`>>E|>l=>:^z>$(>|>Kz>`>>:^z>$(>|>ix> >|>ix> >>:^z>$(>>^%x> c>|>ix> >>^%x> c>|>u>Q>|>u>Q>>^%x> c>>u>v>|>uQ>?uv>|>ix >|>ix >?uv>?V%x c>|>ix >?V%x c>|>Cz`>|>Cz`>?V%x c>?1^z$(>|>Cz`>?1^z$(>|>|M=|>|M=?1^z$(>?E|l=|>|M=?E|l=|>~p=|>~p=?E|l=?}O=|>~p=?}O=|>ڦ<|>ڦ<?}O=?~<|>ڦ<?~<|>(<|>(<?~<?~(<>~>H|>>H>~>H>~>H|>>H|>>7>~>H|>>7>}>^>}>^|>>7|>~>>}>^|>~>>E|>x@>E|>x@|>~>|>|>>E|>x@|>|>|>Kz>|>u>Q>u>t|>ix>4h|>ix>4h>u>t>^%x>Ƨ|>ix>4h>^%x>Ƨ|>Kz>|>Kz>>^%x>Ƨ>:^z>|>Kz>>:^z>>E|>x@?ut|>uQ?V%xƧ?V%xƧ|>uQ|>ix4h?V%xƧ|>ix4h?1^z?1^z|>ix4h|>Cz?1^z|>Cz?E|x@?E|x@|>Cz|>||>H?~H|>ڦ7|>ڦ7?~H?~H|>ڦ7?~H|>~|>~?~H?}^|>~?}^|>||>|?}^?E|x@ gff?V-)gff?('2+gff?-1 gff?V-+gff?-1-gff?/ gff?V--gff?/"/gff?~. gff?V-gff?+5'gff?H5'gff?H5l gff?4 gff?V- gff?V-l gff?4z!gff?x 4 gff?V-z!gff?x 4%gff?+3 gff?V-%gff?+3)gff?('2 gff?V-.? gff?e$gff?ۢ$ gff?V-gff?ۢ$gff?% gff?V-Ugff?$gff?$ gff?V-gff?$Sgff?c]$ gff?V-Sgff?c]$.? gff?e$ gff?V-]gff?ް5 gff?5 gff?V- gff?5gff?+5 gff?V-RPgff?4l'gff?ek5 gff?V-l'gff?ek5]gff?ް5 gff?V-Tgff?@2zgff?J{3 gff?V-zgff?J{3gff?M4 gff?V-gff?M4RPgff?4 gff?V-(2,gff?J))gff? $("/gff?~./gff?*- gff?V- gff?V-/gff?*-D/gff?b+ gff?V-D/gff?b+.gff?u* gff?V-.gff?u*(2,gff?J))gff? $(_/&gff?' gff?V- gff?V-_/&gff?'@"gff?3& gff?V-@"gff?3&gff?v% gff?V-gff?v%Ugff?$ gff?V-ؽgff?50Nݽgff?rh1 gff?V-Nݽgff?rh1Tgff?@2 gff?V-@AԽgff?G,Խgff?- gff?V-Խgff?-Hսgff?. gff?V-Hսgff?.ؽgff?50 gff?V-Zٽgff?()սgff?* gff?V-սgff?*@AԽgff?G,gff?%}gff?ݰ% gff?V- gff?V-}gff?ݰ%gff?|&gff?|& gff?V& gff?V- gff?V- gff?V&_tgff?*o' gff?V-_tgff?*o'J5޽gff?( gff?V-J5޽gff?(Zٽgff?() c?V-vZ c?ö5O c?5 c?V-c c? 5 c?xz5 c?V- c?xz5vZ c?ö5 c?V-R c?4&n c?[% c?V-ڽ c?0Nֽ c?ݓ/ c?V-Nֽ c?ݓ/Խ c?IF. c?V-ͱ c?c3L c?[3 c?V-L c?[3" c?H1 c?V-" c?H1ڽ c?0 c?V-F, c?i0~* c?1 c?V-)@- c?). c?.+ c?V-{q c?4)% c?% c?V-; c?vl$t c?F$ c?V-t c?F${q c?4)%n c?[%q c?$ c?V- c?V-q c?$ٚ c?}$ c?V-ٚ c?}$ c?Z$ c?V- c?Z$; c?vl$Խ c?IF.ӽ c?(, c?V- c?V-ӽ c?(,CԽ c?+ c?V-CԽ c?+}׽ c?S*O c?5 c?5 c?V- c?V- c?5N c?55 c?V-N c?55 c?"4 c?V- c?"4ͱ c?c3 c?%gJ$ c? & c?V- c?V-gJ$ c? &' c?' c?V-' c?'W* c?9( c?V-W* c?9()@- c?)~* c?1u_' c?)2 c?V- c?V-u_' c?)2# c?3 c?V-# c?3Z c?k4 c?V-Z c?k4c c? 5. c?.+^/ c?, c?V- c?V-^/ c?,y/ c?- c?V-y/ c?-. c?%/ c?V-. c?%/F, c?i0}׽ c?S*q۽ c?) c?V- c?V-q۽ c?)C( c?' c?V-C( c?' c?V& c?V- c?V&R c?4&)$f?M2N&$f?Y3O)(d?2O)(d?2)d?I2)$f?M2)$f?M2)d?I2p`+d?1)$f?M2p`+d?1ٷ,$f?S"1p`+d?1,d? 1ٷ,$f?S"1ٷ,$f?S"1,d? 1s-d?0ٷ,$f?S"1s-d?0.$f?/s-d?0.d?/.$f?/.$f?/.d?/ڕ/d?~5/.$f?/ڕ/d?~5/&0$f?".ڕ/d?~5/ 0d?z.&0$f?".&0$f?". 0d?z.)0d?-&0$f?".)0d?-ܣ0$f?+-)0d?-0d?+-ܣ0$f?+-ܣ0$f?+-0d?+-0d?0|,ܣ0$f?+-0d?0|,H0$f?5+0d?0|,-0d?+H0$f?5+H0$f?5+-0d?+/d?2 +H0$f?5+/d?2 +/$f?uv*/d?2 +n/d?lx*/$f?uv*/$f?uv*n/d?lx*6.d?)/$f?uv*6.d?)-$f?.)6.d?)}-d? 2)-$f?.)-$f?.)}-d? 2)g+d?u(-$f?.)g+d?u(_*$f?'g+d?u(J*d?(_*$f?'_*$f?'J*d?((d?q'_*$f?'(d?q'[&$f?&(d?q'b&d?V&[&$f?&[&$f?&b&d?V&$d?q&[&$f?&$d?q&D"$f?)&$d?q&"d?g&D"$f?)&D"$f?)&"d?g&i d?E%D"$f?)&i d?E%R$f?=%i d?E%Dd?kC%R$f?=%R$f?=%Dd?kC%d?$R$f?=%d?$X$f?$d?$Md?$X$f?$X$f?$Md?$d?\r$X$f?$d?\r$ $f?jH$d?\r$ d?N$ $f?jH$ $f?jH$ d?N$]d?+$ $f?jH$]d?+$p$f?$]d?+$pd?h"$p$f?$p$f?$pd?h"$ d?;$p$f?$ d?;$$ $f?%$ d?;$' d?+$$ $f?%$$ $f?%$' d?+$kd?G=$$ $f?%$kd?G=$w$f?Ic$kd?G=$d?i$w$f?Ic$w$f?Ic$d?i$d?$w$f?Ic$d?$$f?$d?$1d?$$f?$$f?$1d?$(d?W!%$f?$(d?W!%g$f?y%(d?W!% d?%g$f?y%g$f?y% d?%d?%g$f?y%d?%<$f?J&<$f?J&d?%꽔d?P&<$f?J&꽔d?P&$f?&$f?&꽔d?P&潔d?&$f?&潔d?&$f?D'潔d?& 㽔d?'I'$f?D'$f?D' 㽔d?'I'߽d?'$f?D'߽d?'wܽ$f?a(߽d?'ܽd?d(wܽ$f?a(wܽ$f?a(ܽd?d(ٽd?Y(wܽ$f?a(ٽd?Y(bx׽$f?A)ٽd?Y(׽d?)bx׽$f?A)bx׽$f?A)׽d?)սd?>*bx׽$f?A)սd?>*VԽ$f?.*սd?>*6Խd?%*VԽ$f?.*VԽ$f?.*6Խd?%*8ҽd?+VԽ$f?.*8ҽd?+4ҽ$f?A,8ҽd?+biҽd?B,4ҽ$f?A,4ҽ$f?A,biҽd?B,ѽd?,4ҽ$f?A,ѽd?,Bҽ$f?#-ѽd?,Dҽd?{-Bҽ$f?#-Bҽ$f?#-Dҽd?{-Нҽd?P.Bҽ$f?#-Нҽd?P.zӽ$f?z.Нҽd?P.ӽd?*.zӽ$f?z.zӽ$f?z.ӽd?*.Խd?ߦ/zӽ$f?z.Խd?ߦ/ֽ$f?L0Խd?ߦ/ֽd?J0ֽ$f?L0ֽ$f?L0ֽd?J0ؽd?0ֽ$f?L0ؽd?0y۽$f?61ؽd?0۽d?1y۽$f?61y۽$f?61۽d?14t޽d?2y۽$f?614t޽d?2$f?24t޽d?2ὔd?2$f?2$f?2ὔd?2P彔d?/3$f?2P彔d?/39$f?!3P彔d?/3^齔d?39$f?!39$f?!3^齔d?3ld?)49$f?!3ld?)4u$f?4ld?)4d?(~4u$f?4u$f?4d?(~4d?4u$f?4d?4 t$f?/5d?4d?4)5 t$f?/5 t$f?/5d?4)5Ad?Cs5 t$f?/5Ad?Cs5$f?P5Ad?Cs5d?£5$f?P5$f?P5d?£5d?A5$f?P5d?A5G>$f?5d?A5@d?15G>$f?5G>$f?5@d?154 d?z6G>$f?54 d?z6 $f?q64 d?z6! d?5 $f?q6 $f?q6! d?5td?L5 $f?q6td?L5-$f?e5td?L5(d?5-$f?e5-$f?e5(d?5d? 5-$f?e5d? 5{$f?5d? 5td?^5{$f?5{$f?5td?^5> d?YG5{$f?5> d?YG5$f?T4> d?YG5xd?n4$f?T4$f?T4xd?n4d?4$f?T4d?4$)"$f??4d?4j"d?:4$)"$f??4$)"$f??4j"d?:4M$d?t3$)"$f??4M$d?t3N&$f?Y3N&$f?Y3M$d?t39&d?GU3N&$f?Y39&d?GU3O)(d?2R c?4& c?V&꽔d?P&꽔d?P&d?%R c?4&R c?4&d?% d?%R c?4& d?%n c?[% d?%(d?W!%n c?[%n c?[%(d?W!%1d?$n c?[%1d?$q c?$1d?$d?$q c?$q c?$d?$d?i$q c?$d?i$ٚ c?}$d?i$kd?G=$ٚ c?}$ٚ c?}$kd?G=$' d?+$ٚ c?}$' d?+$ c?Z$' d?+$ d?;$ c?Z$ c?Z$ d?;$pd?h"$ c?Z$pd?h"$; c?vl$pd?h"$]d?+$; c?vl$; c?vl$]d?+$ d?N$; c?vl$ d?N$t c?F$ d?N$d?\r$t c?F$t c?F$d?\r$Md?$t c?F$Md?${q c?4)%Md?$d?${q c?4)%{q c?4)%d?$Dd?kC%{q c?4)%Dd?kC% c?%Dd?kC%i d?E% c?% c?%i d?E%"d?g& c?%"d?g&gJ$ c? &"d?g&$d?q&gJ$ c? &gJ$ c? &$d?q&b&d?V&gJ$ c? &b&d?V&' c?'b&d?V&(d?q'' c?'' c?'(d?q'J*d?(' c?'J*d?(W* c?9(J*d?(g+d?u(W* c?9(W* c?9(g+d?u(}-d? 2)W* c?9(}-d? 2))@- c?)}-d? 2)6.d?))@- c?))@- c?)6.d?)n/d?lx*)@- c?)n/d?lx*. c?.+n/d?lx*/d?2 +. c?.+. c?.+/d?2 +-0d?+. c?.+-0d?+^/ c?,-0d?+0d?0|,^/ c?,^/ c?,0d?0|,0d?+-^/ c?,0d?+-y/ c?-0d?+-)0d?-y/ c?-y/ c?-)0d?- 0d?z.y/ c?- 0d?z.. c?%/ 0d?z.ڕ/d?~5/. c?%/. c?%/ڕ/d?~5/.d?/. c?%/.d?/F, c?i0.d?/s-d?0F, c?i0F, c?i0s-d?0,d? 1F, c?i0,d? 1~* c?1,d? 1p`+d?1~* c?1~* c?1p`+d?1)d?I2~* c?1)d?I2u_' c?)2)d?I2O)(d?2u_' c?)2u_' c?)2O)(d?29&d?GU3u_' c?)29&d?GU3# c?39&d?GU3M$d?t3# c?3# c?3M$d?t3j"d?:4# c?3j"d?:4Z c?k4j"d?:4d?4Z c?k4Z c?k4d?4xd?n4Z c?k4xd?n4c c? 5xd?n4> d?YG5c c? 5c c? 5> d?YG5td?^5c c? 5td?^5 c?xz5td?^5d? 5 c?xz5 c?xz5d? 5(d?5 c?xz5(d?5vZ c?ö5(d?5td?L5vZ c?ö5vZ c?ö5td?L5! d?5vZ c?ö5! d?5O c?5! d?54 d?z6O c?5O c?54 d?z6@d?15O c?5@d?15 c?5@d?15d?A5 c?5 c?5d?A5d?£5 c?5d?£5N c?55d?£5Ad?Cs5N c?55N c?55Ad?Cs5d?4)5N c?55d?4)5 c?"4d?4)5d?4 c?"4 c?"4d?4d?(~4 c?"4d?(~4ͱ c?c3d?(~4ld?)4ͱ c?c3ͱ c?c3ld?)4^齔d?3ͱ c?c3^齔d?3L c?[3^齔d?3P彔d?/3L c?[3L c?[3P彔d?/3ὔd?2L c?[3ὔd?2" c?H1ὔd?24t޽d?2" c?H1" c?H14t޽d?2۽d?1" c?H1۽d?1ڽ c?0۽d?1ؽd?0ڽ c?0ڽ c?0ؽd?0ֽd?J0ڽ c?0ֽd?J0Nֽ c?ݓ/ֽd?J0Խd?ߦ/Nֽ c?ݓ/Nֽ c?ݓ/Խd?ߦ/ӽd?*.Nֽ c?ݓ/ӽd?*.Խ c?IF.ӽd?*.Нҽd?P.Խ c?IF.Խ c?IF.Нҽd?P.Dҽd?{-Խ c?IF.Dҽd?{-ӽ c?(,Dҽd?{-ѽd?,ӽ c?(,ӽ c?(,ѽd?,biҽd?B,ӽ c?(,biҽd?B,CԽ c?+biҽd?B,8ҽd?+CԽ c?+CԽ c?+8ҽd?+6Խd?%*CԽ c?+6Խd?%*}׽ c?S*6Խd?%*սd?>*}׽ c?S*}׽ c?S*սd?>*׽d?)}׽ c?S*׽d?)q۽ c?)׽d?)ٽd?Y(q۽ c?)q۽ c?)ٽd?Y(ܽd?d(q۽ c?)ܽd?d(C( c?'ܽd?d(߽d?'C( c?'C( c?'߽d?' 㽔d?'I'C( c?' 㽔d?'I' c?V& c?V& 㽔d?'I'潔d?& c?V&潔d?&꽔d?P&$)"$f??4z!gff?x 4$f?T4$f?T4z!gff?x 4l gff?4$f?T4l gff?4{$f?5{$f?5l gff?4'gff?H5{$f?5'gff?H5-$f?e5-$f?e5'gff?H5gff?+5-$f?e5gff?+5 $f?q6 $f?q6gff?+5 gff?5 $f?q6 gff?5G>$f?5G>$f?5 gff?5]gff?ް5G>$f?5]gff?ް5$f?P5$f?P5]gff?ް5l'gff?ek5$f?P5l'gff?ek5 t$f?/5 t$f?/5l'gff?ek5RPgff?4 t$f?/5RPgff?4u$f?4u$f?4RPgff?4gff?M4u$f?4gff?M49$f?!39$f?!3gff?M4zgff?J{39$f?!3zgff?J{3$f?2$f?2zgff?J{3Tgff?@2$f?2Tgff?@2y۽$f?61y۽$f?61Tgff?@2Nݽgff?rh1y۽$f?61Nݽgff?rh1ֽ$f?L0ֽ$f?L0Nݽgff?rh1ؽgff?50ֽ$f?L0ؽgff?50zӽ$f?z.zӽ$f?z.ؽgff?50Hսgff?.zӽ$f?z.Hսgff?.Bҽ$f?#-Bҽ$f?#-Hսgff?.Խgff?-Bҽ$f?#-Խgff?-4ҽ$f?A,4ҽ$f?A,Խgff?-@AԽgff?G,4ҽ$f?A,@AԽgff?G,VԽ$f?.*VԽ$f?.*@AԽgff?G,սgff?*VԽ$f?.*սgff?*bx׽$f?A)bx׽$f?A)սgff?*Zٽgff?()bx׽$f?A)Zٽgff?()wܽ$f?a(wܽ$f?a(Zٽgff?()J5޽gff?(wܽ$f?a(J5޽gff?($f?D'$f?D'J5޽gff?(_tgff?*o'$f?D'_tgff?*o'$f?&$f?&_tgff?*o' gff?V&$f?& gff?V&<$f?J&<$f?J& gff?V&gff?|&<$f?J&gff?|&g$f?y%g$f?y%gff?|&}gff?ݰ%g$f?y%}gff?ݰ%$f?$$f?$}gff?ݰ%gff?%$f?$gff?%w$f?Ic$w$f?Ic$gff?%gff?ۢ$w$f?Ic$gff?ۢ$$ $f?%$$ $f?%$gff?ۢ$.? gff?e$$ $f?%$.? gff?e$p$f?$p$f?$.? gff?e$Sgff?c]$p$f?$Sgff?c]$ $f?jH$ $f?jH$Sgff?c]$gff?$ $f?jH$gff?$X$f?$X$f?$gff?$Ugff?$X$f?$Ugff?$R$f?=%R$f?=%Ugff?$gff?v%R$f?=%gff?v%D"$f?)&D"$f?)&gff?v%@"gff?3&D"$f?)&@"gff?3&[&$f?&[&$f?&@"gff?3&_/&gff?'[&$f?&_/&gff?'_*$f?'_*$f?'_/&gff?')gff? $(_*$f?')gff? $(-$f?.)-$f?.))gff? $((2,gff?J)-$f?.)(2,gff?J)/$f?uv*/$f?uv*(2,gff?J).gff?u*/$f?uv*.gff?u*H0$f?5+H0$f?5+.gff?u*D/gff?b+H0$f?5+D/gff?b+ܣ0$f?+-ܣ0$f?+-D/gff?b+/gff?*-ܣ0$f?+-/gff?*-&0$f?".&0$f?"./gff?*-"/gff?~.&0$f?"."/gff?~..$f?/.$f?/"/gff?~.-gff?/.$f?/-gff?/ٷ,$f?S"1ٷ,$f?S"1-gff?/+gff?-1ٷ,$f?S"1+gff?-1)$f?M2)$f?M2+gff?-1)gff?('2)$f?M2)gff?('2N&$f?Y3N&$f?Y3)gff?('2%gff?+3N&$f?Y3%gff?+3$)"$f??4$)"$f??4%gff?+3z!gff?x 4 >gff?V-^=gff?U3LC=gff?W2 >gff?V-=gff?45=gff?4.4 >gff?V-5=gff?4.4^=gff?U3 >gff?V->gff?p$>gff?$ >gff?V-~=gff?(f-k=gff?^, >gff?V-!*>gff?DQ(ލ,>gff?|) >gff?V- >gff?`$k>gff?`$ >gff?V-k>gff?`$>gff?p$ >gff?V- =gff?$M>gff?$ >gff?V-M>gff?$ >gff?`$ >gff?V-=gff?%S=gff?B% >gff?V-S=gff?B% =gff?$LC=gff?W2w=gff?C91 >gff?V- >gff?V-w=gff?C91=gff?0 >gff?V-=gff?0B=gff?. >gff?V-B=gff?.~=gff?(f- >gff?V->gff?5U>gff?[5 >gff?V-U>gff?[5=gff?4 >gff?V->V>gff?[Z5'>gff?X5 >gff?V-'>gff?X5D >gff?5 >gff?V-D >gff?5>gff?5 >gff?V-Dh+>gff?41e(>gff?S2>gff?$\>gff?% >gff?V- >gff?V-\>gff?%">gff?V& >gff?V-">gff?V&&>gff?A' >gff?V-&>gff?A'!*>gff?DQ( >gff?V-e=gff?E'z==gff?JY& >gff?V-z==gff?JY&=gff?%e(>gff?S2a$>gff?R3 >gff?V- >gff?V-a$>gff?R3- >gff?+4 >gff?V-- >gff?+4fH>gff?4 >gff?V-fH>gff?4>V>gff?[Z5k=gff?^,l=gff?z* >gff?V- >gff?V-l=gff?z*=gff?Z) >gff?V-=gff?Z)=gff?2U( >gff?V-=gff?2U(e=gff?E' >gff?V-%.>gff?c.->gff?`/ >gff?V-->gff?`/Dh+>gff?41ލ,>gff?|)].>gff?* >gff?V- >gff?V-].>gff?*aa/>gff? , >gff?V-aa/>gff? ,o/>gff?a- >gff?V-o/>gff?a-%.>gff?c.>$f?5>$f?5<>d?\5<>d?\5>d?5>$f?5>$f?5>d?5>d?&5>$f?5>d?&5O>$f?:5>d?&5~L>d?5O>$f?:5O>$f?:5~L>d?5Е>d?5O>$f?:5Е>d?5D >$f?6Е>d?5D >d?5D >$f?6D >$f?6D >d?5 >d?5D >$f?6 >d?5k_>$f?5 >d?5 b>d?S5k_>$f?5k_>$f?5 b>d?S5Z>d?u5k_>$f?5Z>d?u5>$f?5Z>d?u5>d?`5>$f?5>$f?5>d?`5=d?^5>$f?5=d?^5V=$f?5=d?^5O=d?5V=$f?5V=$f?5O=d?5 =d?4V=$f?5 =d?4^o=$f?c4 =d?4=d?^4^o=$f?c4^o=$f?c4=d?^4d =d?3^o=$f?c4d =d?3=$f?3d =d?3=d?3=$f?3=$f?3=d?3%=d?3=$f?3%=d?3=$f?~2%=d?3=d? {2=$f?~2=$f?~2=d? {2wx=d?t1=$f?~2wx=d?t10=$f?X1wx=d?t1`=d?qU10=$f?X10=$f?X1`=d?qU1J:=d?o00=$f?X1J:=d?o0(=$f??0J:=d?o00]=d?0(=$f??0(=$f??00]=d?0=d?zp/(=$f??0=d?zp/D@=$f?m.=d?zp/t=d?.D@=$f?m.D@=$f?m.t=d?.d=d?.D@=$f?m.d=d?.5=$f?h-d=d?./=d?h-5=$f?h-5=$f?h-/=d?h-=d?$,5=$f?h-=d?$,d=$f?( ,=d?$,=d? ,d=$f?( ,d=$f?( ,=d? ,5=d?}\+d=$f?( ,5=d?}\+u=$f?p*5=d?}\+=d?*u=$f?p*u=$f?p*=d?*D=d? *u=$f?p*D=d? **=$f?{f)D=d? *Y=d?i)*=$f?{f)*=$f?{f)Y=d?i)8=d?2(*=$f?{f)8=d?2(}c=$f?1(8=d?2(=d?5(}c=$f?1(}c=$f?1(=d?5(=d?H'}c=$f?1(=d?H'm =$f?'=d?H'!0=d?'m =$f?'m =$f?'!0=d?']=d?|&m =$f?']=d?|&=$f?,&&]=d?|&=d?k+&=$f?,&&=$f?,&&=d?k+&J=d?%=$f?,&&J=d?%Q=$f?R\%Q=$f?R\%J=d?%=d?8b%Q=$f?R\%=d?8b%=$f?%=$f?%=d?8b%=d?%=$f?%=d?%=$f?$=d?%=d??$=$f?$=$f?$=d??$>d?$=$f?$>d?$>$f?U$>d?$@>d?\$>$f?U$>$f?U$@>d?\$rJ>d?4$>$f?U$rJ>d?4$ >$f?$rJ>d?4$_ >d?V&$ >$f?$ >$f?$_ >d?V&$K >d?$ >$f?$K >d?$׀>$f?!$K >d?$8~>d?%$׀>$f?!$׀>$f?!$8~>d?%$%:>d?q3$׀>$f?!$%:>d?q3$3>$f?6T$%:>d?q3$W>d?Z$3>$f?6T$3>$f?6T$W>d?Z$>d?$3>$f?6T$>d?$)>$f?a$>d?$F>d?H$)>$f?a$)>$f?a$F>d?H$>d?%)>$f?a$>d?% >$f?Y%>d?%>d?_% >$f?Y% >$f?Y%>d?_%a!>d?% >$f?Y%a!>d?%ݒ#>$f?#&a!>d?%#>d?$(&ݒ#>$f?#&ݒ#>$f?#&#>d?$(&'%>d?5&ݒ#>$f?#&'%>d?5&'>$f?''%>d?5&ct'>d?G''>$f?''>$f?'ct'>d?G'G)>d?''>$f?'G)>d?'S*>$f?8-(G)>d?'*>d?&1(S*>$f?8-(S*>$f?8-(*>d?&1(vD,>d?(S*>$f?8-(vD,>d?(k|->$f?a)vD,>d?(d->d?d)k|->$f?a)k|->$f?a)d->d?d)/.>d?*k|->$f?a)/.>d?*Y/>$f?2*/.>d?*N?/>d?)*Y/>$f?2*Y/>$f?2*N?/>d?)*m/>d??W+Y/>$f?2*m/>d??W+d0>$f?,m/>d??W+J0>d?,d0>$f?,d0>$f?,J0>d?,0>d?,d0>$f?,0>d?,0>$f?c-0>d?,0>d?c-0>$f?c-0>$f?c-0>d?c-g0>d?+.0>$f?c-g0>d?+./>$f?.g0>d?+.u/>d?./>$f?./>$f?.u/>d?.^/>d?k//>$f?.^/>d?k/l.>$f?0^/>d?k/r.>d? 0l.>$f?0l.>$f?0r.>d? 0H->d?10l.>$f?0H->d?10N,>$f?!T1H->d?10\7,>d?P1N,>$f?!T1N,>$f?!T1\7,>d?P1*>d?1N,>$f?!T1*>d?1T)>$f? {2*>d?1$?)>d?w2T)>$f? {2T)>$f? {2$?)>d?w2ٓ'>d?3T)>$f? {2ٓ'>d?3%>$f?03ٓ'>d?3%>d?|3%>$f?03%>$f?03%>d?|3#>d?3%>$f?03#>d?3:t!>$f?Ra4#>d?3d!>d?l[4:t!>$f?Ra4:t!>$f?Ra4d!>d?l[4g&>d?4:t!>$f?Ra4g&>d?4>$f?5>$f?5g&>d?4A>d?5>$f?5A>d?5<>d?\5z= c?%T= c?B%=d?8b%=d?8b%J=d?%z= c?%z= c?%J=d?%=d?k+&z= c?%=d?k+&\D= c?&=d?k+&]=d?|&\D= c?&\D= c?&]=d?|&!0=d?'\D= c?&!0=d?'T.= c?'!0=d?'=d?H'T.= c?'T.= c?'=d?H'=d?5(T.= c?'=d?5(b= c?(=d?5(8=d?2(b= c?(b= c?(8=d?2(Y=d?i)b= c?(Y=d?i) = c?*Y=d?i)D=d? * = c?* = c?*D=d? *=d?* = c?*=d?*<= c?h+=d?*5=d?}\+<= c?h+<= c?h+5=d?}\+=d? ,<= c?h+=d? ,A= c?»,=d? ,=d?$,A= c?»,A= c?»,=d?$,/=d?h-A= c?»,/=d?h-[p= c?./=d?h-d=d?.[p= c?.[p= c?.d=d?.t=d?.[p= c?.t=d?.|= c?o_/t=d?.=d?zp/|= c?o_/|= c?o_/=d?zp/0]=d?0|= c?o_/0]=d?0c= c?00]=d?0J:=d?o0c= c?0c= c?0J:=d?o0`=d?qU1c= c?0`=d?qU10= c?1`=d?qU1wx=d?t10= c?10= c?1wx=d?t1=d? {20= c?1=d? {2= c?2=d? {2%=d?3= c?2= c?2%=d?3=d?3= c?2=d?3\= c?O3=d?3d =d?3\= c?O3\= c?O3d =d?3=d?^4\= c?O3=d?^4h= c?C4=d?^4 =d?4h= c?C4h= c?C4 =d?4O=d?5h= c?C4O=d?5Ԧ= c?!5O=d?5=d?^5Ԧ= c?!5Ԧ= c?!5=d?^5>d?`5Ԧ= c?!5>d?`5> c?5>d?`5Z>d?u5> c?5> c?5Z>d?u5 b>d?S5> c?5 b>d?S5- > c?5 b>d?S5 >d?5- > c?5- > c?5 >d?5D >d?5- > c?5D >d?5׀> c?5D >d?5Е>d?5׀> c?5׀> c?5Е>d?5~L>d?5׀> c?5~L>d?5C> c?5~L>d?5>d?&5C> c?5C> c?5>d?&5>d?5C> c?5>d?5> c? 5>d?5<>d?\5> c? 5> c? 5<>d?\5A>d?5> c? 5A>d?5> c?4A>d?5g&>d?4> c?4> c?4g&>d?4d!>d?l[4> c?4d!>d?l[4"> c?3d!>d?l[4#>d?3"> c?3"> c?3#>d?3%>d?|3"> c?3%>d?|3&> c?r2%>d?|3ٓ'>d?3&> c?r2&> c?r2ٓ'>d?3$?)>d?w2&> c?r2$?)>d?w2 *> c?z1$?)>d?w2*>d?1 *> c?z1 *> c?z1*>d?1\7,>d?P1 *> c?z1\7,>d?P1,> c?0\7,>d?P1H->d?10,> c?0,> c?0H->d?10r.>d? 0,> c?0r.>d? 0c.> c?Z/r.>d? 0^/>d?k/c.> c?Z/c.> c?Z/^/>d?k/u/>d?.c.> c?Z/u/>d?.d/> c?N .u/>d?.g0>d?+.d/> c?N .d/> c?N .g0>d?+.0>d?c-d/> c?N .0>d?c-Е/> c?,0>d?c-0>d?,Е/> c?,Е/> c?,0>d?,J0>d?,Е/> c?,J0>d?,.> c?c+J0>d?,m/>d??W+.> c?c+.> c?c+m/>d??W+N?/>d?)*.> c?c+N?/>d?)*Î-> c?*N?/>d?)*/.>d?*Î-> c?*Î-> c?*/.>d?*d->d?d)Î-> c?*d->d?d)]+> c?(d->d?d)vD,>d?(]+> c?(]+> c?(vD,>d?(*>d?&1(]+> c?(*>d?&1(w(> c?'*>d?&1(G)>d?'w(> c?'w(> c?'G)>d?'ct'>d?G'w(> c?'ct'>d?G'F$> c?d&ct'>d?G''%>d?5&F$> c?d&F$> c?d&'%>d?5&#>d?$(&F$> c?d&#>d?$(&t > c?x%#>d?$(&a!>d?%t > c?x%t > c?x%a!>d?%>d?_%t > c?x%>d?_% 6> c?@%>d?_%>d?% 6> c?@% 6> c?@%>d?%F>d?H$ 6> c?@%F>d?H$C> c?$F>d?H$>d?$C> c?$C> c?$>d?$W>d?Z$C> c?$W>d?Z$> c?St$W>d?Z$%:>d?q3$> c?St$> c?St$%:>d?q3$8~>d?%$> c?St$8~>d?%$K > c?Z$8~>d?%$K >d?$K > c?Z$K > c?Z$K >d?$_ >d?V&$K > c?Z$_ >d?V&$q> c?t$_ >d?V&$rJ>d?4$q> c?t$q> c?t$rJ>d?4$@>d?\$q> c?t$@>d?\$RC> c?$@>d?\$>d?$RC> c?$RC> c?$>d?$=d??$RC> c?$=d??$T= c?B%T= c?B%=d??$=d?%T= c?B%=d?%=d?8b%:t!>$f?Ra4- >gff?+4%>$f?03%>$f?03- >gff?+4a$>gff?R3%>$f?03a$>gff?R3T)>$f? {2T)>$f? {2a$>gff?R3e(>gff?S2T)>$f? {2e(>gff?S2N,>$f?!T1N,>$f?!T1e(>gff?S2Dh+>gff?41N,>$f?!T1Dh+>gff?41l.>$f?0l.>$f?0Dh+>gff?41->gff?`/l.>$f?0->gff?`//>$f?./>$f?.->gff?`/%.>gff?c./>$f?.%.>gff?c.0>$f?c-0>$f?c-%.>gff?c.o/>gff?a-0>$f?c-o/>gff?a-d0>$f?,d0>$f?,o/>gff?a-aa/>gff? ,d0>$f?,aa/>gff? ,Y/>$f?2*Y/>$f?2*aa/>gff? ,].>gff?*Y/>$f?2*].>gff?*k|->$f?a)k|->$f?a)].>gff?*ލ,>gff?|)k|->$f?a)ލ,>gff?|)S*>$f?8-(S*>$f?8-(ލ,>gff?|)!*>gff?DQ(S*>$f?8-(!*>gff?DQ('>$f?''>$f?'!*>gff?DQ(&>gff?A''>$f?'&>gff?A'ݒ#>$f?#&ݒ#>$f?#&&>gff?A'">gff?V&ݒ#>$f?#&">gff?V& >$f?Y% >$f?Y%">gff?V&\>gff?% >$f?Y%\>gff?%)>$f?a$)>$f?a$\>gff?%>gff?$)>$f?a$>gff?$3>$f?6T$3>$f?6T$>gff?$>gff?p$3>$f?6T$>gff?p$׀>$f?!$׀>$f?!$>gff?p$k>gff?`$׀>$f?!$k>gff?`$ >$f?$ >$f?$k>gff?`$ >gff?`$ >$f?$ >gff?`$>$f?U$>$f?U$ >gff?`$M>gff?$>$f?U$M>gff?$=$f?$=$f?$M>gff?$ =gff?$=$f?$ =gff?$=$f?%=$f?% =gff?$S=gff?B%=$f?%S=gff?B%Q=$f?R\%Q=$f?R\%S=gff?B%=gff?%Q=$f?R\%=gff?%=$f?,&&=$f?,&&=gff?%z==gff?JY&=$f?,&&z==gff?JY&m =$f?'m =$f?'z==gff?JY&e=gff?E'm =$f?'e=gff?E'}c=$f?1(}c=$f?1(e=gff?E'=gff?2U(}c=$f?1(=gff?2U(*=$f?{f)*=$f?{f)=gff?2U(=gff?Z)*=$f?{f)=gff?Z)u=$f?p*u=$f?p*=gff?Z)l=gff?z*u=$f?p*l=gff?z*d=$f?( ,d=$f?( ,l=gff?z*k=gff?^,d=$f?( ,k=gff?^,5=$f?h-5=$f?h-k=gff?^,~=gff?(f-5=$f?h-~=gff?(f-D@=$f?m.D@=$f?m.~=gff?(f-B=gff?.D@=$f?m.B=gff?.(=$f??0(=$f??0B=gff?.=gff?0(=$f??0=gff?00=$f?X10=$f?X1=gff?0w=gff?C910=$f?X1w=gff?C91=$f?~2=$f?~2w=gff?C91LC=gff?W2=$f?~2LC=gff?W2=$f?3=$f?3LC=gff?W2^=gff?U3=$f?3^=gff?U3^o=$f?c4^o=$f?c4^=gff?U35=gff?4.4^o=$f?c45=gff?4.4V=$f?5V=$f?55=gff?4.4=gff?4V=$f?5=gff?4>$f?5>$f?5=gff?4U>gff?[5>$f?5U>gff?[5k_>$f?5k_>$f?5U>gff?[5>gff?5k_>$f?5>gff?5D >$f?6D >$f?6>gff?5D >gff?5D >$f?6D >gff?5O>$f?:5O>$f?:5D >gff?5'>gff?X5O>$f?:5'>gff?X5>$f?5>$f?5'>gff?X5>V>gff?[Z5>$f?5>V>gff?[Z5>$f?5>$f?5>V>gff?[Z5fH>gff?4>$f?5fH>gff?4:t!>$f?Ra4:t!>$f?Ra4fH>gff?4- >gff?+4#>}^#>E|x@#>ut#>~H#>}^#>ut#>~H#>~H#>ut#>uv>#>~(<#>~H#>~H#>ut#>uv>6^>(<6^>H#>~H#>~H#>~(<6^>(s>v>!>~>(u>v>!>u>v>!>~>(^%x> c>!>^%x> c>!>~>(~>^%x> c>!>~>:^z>$(>!>:^z>$(>!>~>E|>l=!>s>v>!>s>t!>~>H!>~>H!>~>(s>v>!>~>H!>s>t!>~>H!>~>H!>s>t!>u>t!>~>H!>u>t!>}>^!>}>^!>u>t!>^%x>Ƨ!>}>^!>^%x>Ƨ!>E|>x@!>E|>x@!>^%x>Ƨ!>:^z>4^>>(~>(~>H!>~>H4^>>H4^>>(<|>uQ>6^>uQ>4^>u>Q>4^>u>Q>|>u>Q>|>uQ>|>u>Q>4^>u>Q>4^>ix> >|>uQ>|>ix >6^>uQ>6^>uQ>#>uv>!>s>v>!>s>v>4^>u>Q>6^>uQ>?uv>|>uQ>|>u>Q>|>u>Q>>s>v>?uv>>~>(<|>><|>>(<>~>(<|>>(<|>>H|>>H>~>H>~>(<|>>(<4^>>(<4^>>H4^>>H|>>H|>>(<6^>uQ4^>u>Q!>s>t!>s>t#>ut6^>uQ|>uQ6^>uQ6^>ix4h|>uQ|>u>Q4^>u>Q4^>u>Q6^>uQ|>uQ>s>t>u>t|>u>Q?ut>s>t|>u>Q|>u>Q|>uQ?ut?~(<?~H|>H|>H|>(<?~(<?uv>>s>v>>s>t>s>t?ut?uv>>s>v>>u>v>>~>(<>u>v>>~><>~>(<>u>v>>^%x> c>>~><>^%x> c>>}>O=>~><>^%x> c>>:^z>$(>>}>O=>:^z>$(>>E|>l=>}>O=>s>v>>~>(<>~>H>~>H>s>t>s>v>>~>H>u>t>s>t>~>H>~>H>u>t>~>H>^%x>Ƨ>u>t>~>H>}>^>^%x>Ƨ>}>^>:^z>>^%x>Ƨ>}>^>E|>x@>:^z>?uv>?ut?~H?~H?~(<?uv>?~H?ut?~H?~H?ut?E|x@#>uv>#>ut!>s>t!>s>t!>s>v>#>uv>???E1{?E1{?E1{?E1{?E1{?E1{?V$m?V$m?V$m?V$m?V$m?V$m?i"mX?i"mX?i"mX?i"mX?i"mX?i"mX?!A.Z;?!A.Z;?!A.Z;?=.;?=.;?=.;?ОM?ОM?ОM?ОM?ОM?ОM?0=f>0=f>0=f>0=f>0=f>0=f>[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾M?{M?{M?{ެM?mެM?mެM?m=.?;=.?;=.?;!A.?Z;!A.?Z;!A.?Z; ?NhX ?NhX ?NhXi?"mXi?"mXi?"mXV>$mV>$mV>$mV>$mV>$mV>$mE>1{E>1{E>1{E>/{E>/{E>/{5sX*>X*>*>*>*>J)J)J).JI0.JI0.JI0dcdcdcdcdcdcjv?ȇjv?ȇjv?ȇv?仇v?仇v?仇uZuZuZuZuZuZ?]?]?]?]?]?]~)@Ͻ~)@Ͻ~)@Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~?D =:~?D =:~?D =:~?D =:~?D =:~?D = s)= s)= s)= s)= s)= s)=܌u?iʐ>܌u?iʐ>܌u?iʐ>u?x֐>u?x֐>u?x֐>v仇>v仇>v仇>v仇>v仇>v仇>d?c>d?c>d?c>Pd?_h>Pd?_h>Pd?_h>J?)?J?)?J?)?J?)?J?)?J?)?~*?>?~*?>?~*?>?~*?>?~*?>?~*?>??Z??Z??Z?G?UZ?G?UZ?G?UZ?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o?2>|?2>|?2>|?2> |?2> |?2> |? ? ? ?xG?xG?xG?5s*>*>*>*>*>J)J)J)J)J)J)dcdcdcdcdcdcv?仇v?仇v?仇jv?ȇjv?ȇjv?ȇuZuZuZuZuZuZ?]?]?] ?s) ?s) ?s)~)@Ͻ~)@Ͻ~)@Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~?D =:~?D =:~?D =:~?D =:~?D =:~?D = s)= s)= s)= s)= s)= s)=܌u?iʐ>܌u?iʐ>܌u?iʐ>܌u?iʐ>܌u?iʐ>܌u?iʐ>9vZ>9vZ>9vZ>9vZ>9vZ>9vZ>d?c>d?c>d?c>Pd?_h>Pd?_h>Pd?_h>dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?>*?>?>*?>?>*?>?~*?>?~*?>?~*?>??Z??Z??Z?G?UZ?G?UZ?G?UZ?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o?2>|?2>|?2>|?2>|?2>|?2>|?5sZ?5sZ?5sZ?5sZ?5sZ?5sZ?E1{?E1{?E1{?E1{?E1{?E1{?V$m?V$m?V$m?V$m?V$m?V$m?i"mX?i"mX?i"mX?i"mX?i"mX?i"mX?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?ОM?ОM?ОM?ОM?ОM?ОM?0=f>0=f>0=f>0=f>0=f>0=f>[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾ެM?mެM?mެM?mTM?eTM?eTM?e!A.?Z;!A.?Z;!A.?Z;=.?;=.?;=.?;i?"mXi?"mXi?"mX ?NhX ?NhX ?NhXV>$mV>$mV>$mV>$mV>$mV>$mE>/{E>/{E>/{E>1{E>1{E>1{??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ѹ??????????????????Ѹ???????????8?8???????????8?8??????Ѹ?????8?8??????Ѹ?????8?8Ѹ???????????8?8?????8?????8Ѹ?8???????????8?8?????8??????8?8???????????8?8???????????8???????????Ѹ?????Ѹ????????????8????????Ѹ?Ѹ???????Ѹ?Ѹ??ѸѸ???8????8?8?Ѹ????8ѸѸ?8Ѹ???ѸѸ??8?ѸѸ??ѸѸ?ѸѸѸ??ѸѸ??ѸѸѸ??ѸѸѸ?Ѹ?ѸѸ??ѸѸ??ѸѸ??Ѹ?Ѹ???????????8???????????Ѹ?????Ѹ????????????8??????????????????????????????????????????????????????8???????????????????Ѹ??????Ѹ????????????Ѹ??????????????????????????????Ѹ??????????????????Ѹ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????E>/{E>/{E>/{E>1{E>1{E>1{V>$mV>$mV>$mV>$mV>$mV>$mi?"mXi?"mXi?"mX ?NhX ?NhX ?NhX=.?;=.?;=.?;=.?;=.?;=.?;ެM?mެM?mެM?mTM?eTM?eTM?e[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾0=f>0=f>0=f>[9f>[9f>[9f>ОM?ОM?ОM?ОM?ОM?ОM?!A.Z;?!A.Z;?!A.Z;?=.;?=.;?=.;? NhX? NhX? NhX?soX?soX?soX?V$m?V$m?V$m?V$m?V$m?V$m?E/{?E/{?E/{?E1{?E1{?E1{?5sZ?5sZ?5sZ?5sZ?5sZ?5sZ?2>|?2>|?2>|?2>|?2>|?2>|?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o??mZ??mZ??mZ??mZ??mZ??mZ?>*?>?>*?>?>*?>?~*?>?~*?>?~*?>?J?)?J?)?J?)?dJ?!?dJ?!?dJ?!?d?c>d?c>d?c>Pd?_h>Pd?_h>Pd?_h>v>v>v>v仇>v仇>v仇>u?Z>u?Z>u?Z>u?Z>u?Z>u?Z> s)= s)= s)= s)= s)= s)=~?)@=~?)@=~?)@=~?)@=~?)@=~?)@=:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ ?s) ?s) ?s)?]?]?]uZuZuZuZuZuZv?仇v?仇v?仇jv?ȇjv?ȇjv?ȇdcdcdcdcdcdcJ)J)J)J)J)J)*>*>*>*>*>*>wZwZwZwZwZwZ߆o߆o߆o߆o߆o߆oɔ2|ɔ2|ɔ2|ɔ2|ɔ2|ɔ2|5s|?2>|?2>|?2> |?2> |?2> |?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o??mZ??mZ??mZ??mZ??mZ??mZ?~*?>?~*?>?~*?>?~*?>?~*?>?~*?>?dJ?!?dJ?!?dJ?!?J?)?J?)?J?)?d?c>d?c>d?c>Pd?_h>Pd?_h>Pd?_h>v仇>v仇>v仇>v仇>v仇>v仇>u?Z>u?Z>u?Z>u?Z>u?Z>u?Z> s)= s)= s)= s)= s)= s)=~?)@=~?)@=~?)@=~?)@=~?)@=~?)@=:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ ?s) ?s) ?s)?]?]?]uZuZuZuZuZuZv?仇v?仇v?仇v?仇v?仇v?仇dcdcdcdcdcdcJ)J)J)J)J)J)*>*>*>*>*>*>wZwZwZwZwZwZ߆o߆o߆o߆o߆o߆oɔ2|ɔ2|ɔ2|ɔ2|ɔ2|ɔ2|5s1{E>1{E>1{E>/{E>/{E>/{V>$mV>$mV>$mV>$mV>$mV>$mi?"mXi?"mXi?"mXi?"mXi?"mXi?"mX!A.?Z;!A.?Z;!A.?Z;=.?;=.?;=.?;FM?xFM?xFM?xެM?mެM?mެM?m[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f>[9f>[9f>[9f>[9f>[9f>ОM?ОM?ОM?ОM?ОM?ОM?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;? NhX? NhX? NhX?soX?soX?soX?V$m?V$m?V$m?V$m?V$m?V$m?E1{?E1{?E1{?E1{?E1{?E1{?E1{?E1{?E1{?E1{?E1{?E1{?V$m?V$m?V$m?V$m?V$m?V$m?i"mX?i"mX?i"mX? NhX? NhX? NhX?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?ОM?ОM?ОM?ОM?ОM?ОM?[9f>[9f>[9f>[9f>[9f>[9f>[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾FM?xFM?xFM?xTM?eTM?eTM?e!A.?Z;!A.?Z;!A.?Z;!A.?Z;!A.?Z;!A.?Z; ?NhX ?NhX ?NhX ?NhX ?NhX ?NhXV>$mV>$mV>$mV>$mV>$mV>$mE>1{E>1{E>1{E>1{E>1{E>1{5s*>*>*>*>*>J-J-J-J)J)J)Pd_hPd_hPd_hdcdcdcv?仇v?仇v?仇v?仇v?仇v?仇uZuZuZuZuZuZ ?s) ?s) ?s)?]?]?]:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ~?)@=~?)@=~?)@=~?)@=~?)@=~?)@=]=]=]= s)= s)= s)=u?Z>u?Z>u?Z>u?Z>u?Z>u?Z>v仇>v仇>v仇>v仇>v仇>v仇>Pd?_h>Pd?_h>Pd?_h>d?c>d?c>d?c>dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?>*?>?>*?>?>*?>?~*?>?~*?>?~*?>??mZ??mZ??mZ??mZ??mZ??mZ?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o?2> |?2> |?2> |?2>|?2>|?2>|?xG?xG?xG? ? ? ?5s*>*>*>*>*>J)J)J)J)J)J)Pd_hPd_hPd_hdcdcdcv?仇v?仇v?仇v?仇v?仇v?仇uZuZuZuZuZuZ ?s) ?s) ?s) ?s) ?s) ?s):~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ~?)@=~?)@=~?)@=~?)@=~?)@=~?)@=]=]=]= s)= s)= s)=܌u?iʐ>܌u?iʐ>܌u?iʐ>u?Z>u?Z>u?Z>v>v>v>v仇>v仇>v仇>Pd?_h>Pd?_h>Pd?_h>d?c>d?c>d?c>J?)?J?)?J?)?dJ?!?dJ?!?dJ?!?#*?W>?#*?W>?#*?W>?#*?W>?#*?W>?#*?W>??mZ??mZ??mZ??mZ??mZ??mZ?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o?2>|?2>|?2>|?2>|?2>|?2>|?5sZ?5sZ?5sZ????E1{?E1{?E1{?E1{?E1{?E1{?V$m?V$m?V$m?V$m?V$m?V$m?i"mX?i"mX?i"mX? NhX? NhX? NhX?!A.Z;?!A.Z;?!A.Z;?=.;?=.;?=.;?ОM?ОM?ОM?ОM?ОM?ОM?[9f>[9f>[9f>0=f>0=f>0=f>[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾TM?eTM?eTM?eОM?ОM?ОM?=.?;=.?;=.?;!A.?Z;!A.?Z;!A.?Z;i?"mXi?"mXi?"mXs?oXs?oXs?oXV>$mV>$mV>$mV>$mV>$mV>$mE>1{E>1{E>1{E>1{E>1{E>1{??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ѹ??????????????????Ѹ??????????????????????????????Ѹ????????????Ѹ??????Ѹ?????????????????8??????????????????????????????????????????????????????8???????????Ѹ?????Ѹ????????????8????????Ѹ?Ѹ??ѸѸ??ѸѸ??ѸѸ?Ѹ?ѸѸѸ??ѸѸѸ??ѸѸ??Ѹ8Ѹ??ѸѸ??ѸѸ?8?Ѹ????8ѸѸѸ?8???ѸѸ??8?8???Ѹ??Ѹ?Ѹ??Ѹ?Ѹ???????Ѹ?Ѹ???????????8???????????Ѹ?????Ѹ????????????8????????????8?8???????????8?8?????8??????8?8??????????8Ѹ?8?????8??????8?8???????????8?8Ѹ??????Ѹ?????8?8??????Ѹ?????8?8???????????8?8????????????Ѹ??????????????????Ѹ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????E>1{E>1{E>1{E>1{E>1{E>1{V>$mV>$mV>$mV>$mV>$mV>$m ?NhX ?NhX ?NhXi?"mXi?"mXi?"mX!A.?Z;!A.?Z;!A.?Z;=.?;=.?;=.?;TM?eTM?eTM?eОM?ОM?ОM?[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾0=f>0=f>0=f>0=f>0=f>0=f>ОM?ОM?ОM?ОM?ОM?ОM?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?!A.Z;?i"mX?i"mX?i"mX?i"mX?i"mX?i"mX?V$m?V$m?V$m?V$m?V$m?V$m?E1{?E1{?E1{?E1{?E1{?E1{?5sZ?5sZ?5sZ?5sZ?5sZ?5sZ?2>|?2>|?2>|?2>|?2>|?2>|?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o??mZ??mZ??mZ??mZ??mZ??mZ?#*?W>?#*?W>?#*?W>?#*?W>?#*?W>?#*?W>?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?d?c>d?c>d?c>d?c>d?c>d?c>9vZ>9vZ>9vZ>v*>v*>v*>u?x֐>u?x֐>u?x֐>܌u?iʐ>܌u?iʐ>܌u?iʐ>]=]=]= s)= s)= s)=:~?D =:~?D =:~?D =:~?D =:~?D =:~?D =:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ ?s) ?s) ?s)?]?]?]܌uiʐ܌uiʐ܌uiʐuZuZuZjv?ȇjv?ȇjv?ȇv?仇v?仇v?仇Pd_hPd_hPd_hPd_hPd_hPd_hJ)J)J)J)J)J)*>*>*>*>*>*>wZwZwZwZwZwZ߆o߆o߆o߆o߆o߆oɔ2|ɔ2|ɔ2|ɔ2|ɔ2|ɔ2|5s |?2> |?2> |?2>|?2>|?2>|?߆>o?߆>o?߆>o?߆>o?߆>o?߆>o??mZ??mZ??mZ??mZ??mZ??mZ?>*?>?>*?>?>*?>?~*?>?~*?>?~*?>?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?dJ?!?d?c>d?c>d?c>d?c>d?c>d?c>v仇>v仇>v仇>v>v>v>u?Z>u?Z>u?Z>܌u?iʐ>܌u?iʐ>܌u?iʐ>]=]=]= s)= s)= s)=:~?D =:~?D =:~?D =:~?D =:~?D =:~?D =:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ:~D Ͻ?]?]?]?]?]?]܌uiʐ܌uiʐ܌uiʐuZuZuZjv?ȇjv?ȇjv?ȇv?仇v?仇v?仇Pd_hPd_hPd_hPd_hPd_hPd_hJ-J-J-J)J)J)X*>X*>X*>*>*>*>wZwZwZwZwZwZ߆o߆o߆o߆o߆o߆oɔ2|ɔ2|ɔ2|ɔ2|ɔ2|ɔ2|5s1{E>1{E>1{E>1{E>1{E>1{V>$mV>$mV>$mV>$mV>$mV>$mi?"mXi?"mXi?"mX ?NhX ?NhX ?NhX!A.?Z;!A.?Z;!A.?Z;!A.?Z;!A.?Z;!A.?Z;M?{M?{M?{TM?eTM?eTM?e[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾[9f?߾0=f>0=f>0=f>0=f>0=f>0=f>ОM?ОM?ОM?ОM?ОM?ОM?!A.Z;?!A.Z;?!A.Z;?=.;?=.;?=.;?i"mX?i"mX?i"mX?i"mX?i"mX?i"mX?V$m?V$m?V$m?V$m?V$m?V$m?E1{?E1{?E1{?E1{?E1{?E1{?m]m]m]m]m]m]???????????????????m]?m]?m]?m]?m]?m]m]??m]??m]??m]??m]??m]????????????????????????????????55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?:::?:::?:::?:?::?:?::?:?::?55?55?55?55?55?55?5555555555555555555555555?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?::?:?::?:?::?:?iiiiii?ii?ii?iii?i??i?i??i?i??55?55?55?55?55?55?5555555555555?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?i?ii?ii?i ??  ??  ?? 5?55?55?55?55?55?5??????5?5?5?5?5?5?5?5?5?5?5?5?:?:?:?:?:?:?:?:?:? ? ? ? ? ? ?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?555?55?55?55?55?55?55?55?55?55?55?55?:?::?:?::?:?::?i??ii??ii??ii?ii?ii?i  ?  ?  ?5?55?55?55?55?55?55?55?55?55?55?55?5555555555555555555555555i?ii?ii?iiiiiii555555555555??????5?5?5?5?5?5?5?5?5?5?5?5? ?? ? ?? ? ?? ? ? ? ? ? ? ?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?555?55?55?55?55?55?55?55?55?55?55?55?55?55?55?55?55?55? ? ? ? ? ? ? ??  ??  ??  ?  ?  ?   ?  ?  ?5?55?55?55?55?55?55?55?55?55?55?55?5555555555555555555555555:?:::?:::?:::::::::::55555555555555?55?55?55?55?55?????????????????????????55?55?55?55?55?55?555555555555iiiiiii?ii?ii?i5555555555555555555555555?55?55?55?55?55?55?55?55?55?55?55?5  ?  ?  ?i?ii?ii?ii??ii??ii??i:?::?:?::?:?::?55?55?55?55?55?55?55?55?55?55?55?55?5?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?5? ? ? ? ? ? ?:?:?:?:?:?:?:?:?:?5?5?5?5?5?5?5?5?5?5?5?5?????????????????????????:d:2H:d:2H:d:2H:d:2H:d:2H:d:2H????????????:d:2H:d:2H:d:2H:d:2H:d:2H:d:2H??????5?55?55?55?55?55?5?i?i?i?i?i?ii?ii?ii?i5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?555555555555555?55?55?55?55?55??i?i??i?i??i?i? ?  ?  ?       i?i?i?i?i?i?5?5?5?5?5?5?;5?5?;5?5?;5?5?5?5?5?5?5?5?5?5?5?5?5?5?5?55?55?55?55?55?555555555555555555555555555?55?55?55?55?55? ? ? ? ? ? ?  ?  ?  ?55?55?55?55?55?55???????[y?g[y?g[y?g4Zy?eg84Zy?eg84Zy?eg8Xy?DgXy?DgXy?DgIk?S>Ik?S>Ik?S>D0>ik?5H>D0>ik?5H>D0>ik?5H>/>.uk?>/>.uk?>/>.uk?>~->k?>~->k?>~->k?>B->ek?*>B->ek?*>B->ek?*>,>9k?>,>9k?>,>9k?>h+>Qk?~>h+>Qk?~>h+>Qk?~>(>k?,>(>k?,>(>k?,>)>Dk?s>)>Dk?s>)>Dk?s>'>|k?(>'>|k?(>'>|k?(>R#>vk?ܘ>R#>vk?ܘ>R#>vk?ܘ>Pc2>k?ʐ>Pc2>k?ʐ>Pc2>k?ʐ>D*%>k?C>D*%>k?C>D*%>k?C>>5k?>>5k?>>5k?>2=8k?ʛ>2=8k?ʛ>2=8k?ʛ>T$>qj?e>T$>qj?e>T$>qj?e>*#> j?>*#> j?>*#> j?> ">j?Ӻ> ">j?Ӻ> ">j?Ӻ>NG_?9>NG_?9>NG_?9>uHj?}>uHj?}>uHj?}>yѸ*j?>yѸ*j?>yѸ*j?>Qj?B>Qj?B>Qj?B>k?>k?>k?>k?>k?>k?>k?>k?>k?>k?>k?>k?>|fk?9>|fk?9>|fk?9>k?g>k?g>k?g>8zk?P>8zk?P>8zk?P>dk?3D>dk?3D>dk?3D>uk?@>uk?@>uk?@>HѸB1k?{1>HѸB1k?{1>HѸB1k?{1> e?> e?> e?>|reh?7>|reh?7>|reh?7>怷i?H>怷i?H>怷i?H>%0:JGk?>%0:JGk?>%0:JGk?>Zi?##>Zi?##>Zi?##>cPj?,;>cPj?,;>cPj?,;>e??>e??>e??>:j?>:j?>:j?>;j?Dj>;j?Dj>;j?Dj>䝽b>m?䝽b>m?䝽b>m?мS??Ҽ΋S?j?"ѼS??:vj?V>:vj?V>:vj?V>(: Hj?`>(: Hj?`>(: Hj?`>J >_k?ͺ>J >_k?ͺ>J >_k?ͺ> >ak?~> >ak?~> >ak?~>L=s>k?4>L=s>k?4>L=s>k?4>3;=k?5>3;=k?5>3;=k?5>=9k?]>=9k?]>=9k?]>2=֘k?3>2=֘k?3>2=֘k?3>={k?>={k?>={k?>XJ=61k?>XJ=61k?>XJ=61k?>I=q/k?>I=q/k?>I=q/k?>J;i?&>ϼ;i?)>ϼ;i?)>I;i?3>I;i?3>I;i?3>Q;.k?H<>Q;.k?H<>Q;.k?H<>mNսj?.->mNսj?.->mNսj?.->_j?t>_j?t>_j?t>S|j?n>S|j?n>S|j?n>T=l?D>T=l?D>T=l?D>Sik?\>Sik?\>Sik?\>4qk?>4qk?>4qk?>'ik?{>'ik?{>'ik?{>y1Ok?>y1Ok?>y1Ok?>CcBk?d>CcBk?d>CcBk?d>CDk?vY>CDk?vY>CDk?vY>KKK0TVk?>0TVk?>0TVk?>8`k?s>8`k?s>8`k?s>lg`k?>lg`k?>lg`k?>Tqk?>Tqk?>Tqk?>k?*>k?*>k?*>b k?!>b k?!>b k?!>e ձk?.>e ձk?.>e ձk?.>",k?eU>",k?eU>",k?eU>1 $ k?2">1 $ k?2">1 $ k?2">DIk?c>DIk?c>DIk?c>%Lk?IǶ>%Lk?IǶ>%Lk?IǶ>"k?>"k?>"k?>m`%Axk?>m`%Axk?>m`%Axk?>#k?d>#k?d>#k?d>2i&k?b>2i&k?b>2i&k?b>?>(6k?>?>(6k?>?>(6k?>r(^k?ܵ>r(^k?ܵ>r(^k?ܵ>*̓k?Z>*̓k?Z>*̓k?Z>3+k?O>3+k?O>3+k?O>0+-k?4>0+-k?4>0+-k?4>.v-gk? >.v-gk? >.v-gk? >,k?iǴ>,k?iǴ>,k?iǴ>.-k?m>.-k?m>.-k?m>^<0k?9>^<0k?9>^<0k?9>6k?F>6k?F>6k?F>$3"k??K>$3"k??K>$3"k??K>b?k?:;>b?k?:;>b?k?:;>88h l?b>88h l?b>88h l?b>3e7k?$&>3e7k?$&>3e7k?$&>Q6Fk?d>Q6Fk?d>Q6Fk?d>6k?>6k?>6k?>5ek?>5ek?>5ek?>+6tk?ʲ>+6tk?ʲ>+6tk?ʲ>O@Ɵk?됯>O@Ɵk?됯>O@Ɵk?됯>p@k?>(@k?>p@k?>݆Ayk?L>݆Ayk?L>݆Ayk?L>@>gk?>@>gk?>@>gk?>0,CȞk?ˮ>0,CȞk?ˮ>0,CȞk?ˮ>Lڬk?G>Lڬk?G>Lڬk?G>gCk?F>gCk?F>gCk?F>FXk?֧>FXk?֧>FXk?֧>L҂k?>L҂k?>L҂k?>qhǤk?=ݢ>qhǤk?=ݢ>qhǤk?=ݢ>3!k?>3!k?>3!k?>,6xk? >,6xk? >,6xk? >?1k?ߩ>?1k?ߩ>?1k?ߩ><1l?.><1l?.><1l?.>P<l?p>P<l?p>P<l?p>Xh%k?/ޢ>Xh%k?/ޢ>Xh%k?/ޢ> zz:k?V> zz:k?V> zz:k?V>{Uk?0>{Uk?0>{Uk?0>2}j?AĞ>2}j?AĞ>2}j?AĞ>~j?`>~j?`>~j?`>@XE(l?E>@XE(l?E>@XE(l?E>Y~3k?Q >Y~3k?Q >Y~3k?Q >{Gk?>{Gk?>{Gk?>x~Lik? >x~Lik? >x~Lik? >Aykk?>Aykk?>Aykk?> 6jk?["> 6jk?["> 6jk?[">U뀾vk?>U뀾vk?>U뀾vk?>:xk?vΙ>:xk?vΙ>:xk?vΙ>awk?>awk?>awk?>dzk?>dzk?>dzk?>WNk?b>WNk?b>WNk?b>k{k?>k{k?>k{k?>z k?>z k?>z k?>8|k?3>8|k?3>8|k?3>׸k? o>׸k? o>׸k? o>ݠi?փ>ݠi?փ>ݠi?փ>F}k?>F}k?>F}k?>'uk?=">'uk?=">'uk?=">#rk?>#rk?>#rk?>10dk?;T>10dk?;T>10dk?;T> ^k?> ^k?> ^k?>-mGk?>-mGk?>-mGk?>OFk?>OFk?>OFk?>Om?q>Om?q>Om?q>d,l?ݏ>d,l?ݏ>d,l?ݏ>&i?mh>&i?mh>&i?mh>]6k?`J>]6k?`J>]6k?`J>7Mk?6>7Mk?6>hMk?')>hMk?')>hMk?')>s?8=s?8=s?8=˾+j?M;=˾+j?M;=˾+j?M;=Ǿ-#j?Z=Ǿ-#j?Z=Ǿ-#j?Z=~Fo?=~Fo?=~Fo?=%¾j?Ȇ=%¾j?Ȇ=%¾j?Ȇ=d?g=d?g=d?g=Sd?[S i?k7>S i?k7>b_L m?B>b_L m?B>b_L m?B>aTk? F>aTk? F>aTk? F>Ok?P>Ok?P>Ok?P> LDm?e> LDm?e> LDm?e>7I j?>7I j?>7I j?>|8el?x>|8el?x>|8el?x>7k?H>7k?H>7k?H>53>ml?>53>ml?>53>ml?>-98>k?;>-98>k?;>-98>k?;>+4>Æk?N>+4>Æk?N>+4>Æk?N>}mE>k?O>}mE>k?O>}mE>k?O>lG>ܤk?9\>lG>ܤk?9\>lG>ܤk?9\>U>*k?,7>U>*k?,7>U>*k?,7>-C>֠k?>-C>֠k?>-C>֠k?>j@>\k?Ư>j@>\k?Ư>j@>\k?Ư>B>k?*>B>k?*>B>k?*>@>k?x>@>k?x>@>k?x>xN@>k?>xN@>k?>xN@>k?>@6>|k?=ֲ>@6>|k?=ֲ>@6>|k?=ֲ>C/>mj?>C/>mj?>C/>mj?>N@>u1@>:Om?O>݄@>Dm?g>4>Fk?p>4>Fk?p>4>Fk?p>@5>/Rk?+>@5>/Rk?+>@5>/Rk?+>e6>ѐk?m>e6>ѐk?m>e6>ѐk?m>v6>ګk?б>v6>ګk?б>v6>ګk?б>Xg7>Ik?\>Xg7>Ik?\>Xg7>Ik?\>~7>k?U%>~7>k?U%>~7>k?U%>~7>k?U%>~7>k?U%>~7>k?U%>7>k?->7>k?->7>k?->0L7>k?:>0L7>k?:>0L7>k?:>+G>\k?>+G>\k?>+G>\k?>F>zl?>F>zl?>F>zl?>`g>~k?<>`g>~k?<>`g>~k?<>HgQ>΃k?5>HgQ>΃k?5>HgQ>΃k?5>Hn>"k?>Hn>"k?>Hn>"k?>k>l?͛>k>l?͛>k>l?͛>>}|k?>>}|k?>>}|k?>F>%}k?@>F>%}k?@>F>%}k?@>#>߂k?+K>#>߂k?+K>#>߂k?+K>߂>k?8>߂>k?8>߂>k?8>>Gyk?v$>>Gyk?v$>>Gyk?v$>4>Āk?Pɘ>4>Āk?Pɘ>4>Āk?Pɘ>>Xwk?~>>Xwk?~>>Xwk?~>À>ok?j>À>ok?j>À>ok?j>U>vk?>U>vk?>U>vk?>>jk?u>>jk?u>>jk?u>> k?>> k?>> k?>`>zk?>`>zk?>`>zk?>q}>k?3>q}>k?3>q}>k?3>Ct>@}k?e->Ct>@}k?e->Ct>@}k?e->gs>j?3>%f>j?!>gs>j?3>a>k?2o>a>k?2o>a>k?2o>V>U5l?b>V>U5l?b>V>U5l?b>be>Jj?Uk>be>Jj?Uk>be>Jj?Uk>|>yk?Aߞ>|>yk?Aߞ>|>yk?Aߞ>4|>Jk?>4|>Jk?>4|>Jk?>m2{>k?/>m2{>k?/>m2{>k?/>|!k?E>|!k?E>|!k?E>t>Kk?>t>Kk?>t>Kk?>]>0k?#>]>0k?#>]>0k?#>]>ظk?C>]>ظk?C>]>ظk?C>l>{}k?>l>{}k?>l>{}k?>j> Jk??ё>j> Jk??ё>j> Jk??ё>0>k?}>0>k?}>0>k?}>>+f?p<>+f?p<>+f?p<{>+/o?yX={>+/o?yX={>+/o?yX=:>Pl?r=:>Pl?r=:>Pl?r=(>#j?=(>#j?=(>#j?=>Qk?綂>>Qk?綂>>Qk?綂>>Qk?綂>>Qk?綂>>Qk?綂>>3j?;>>3j?;>>3j?;>[d>Ol?[m>[d>Ol?[m>[d>Ol?[m>v>xk?$v>v>xk?$v>v>xk?$v>w>yyk?tv>w>yyk?tv>w>yyk?tv>>rk?JAS>>rk?JAS>>rk?JAS>>k? M>>k? M>>k? M>A;>9k?6>A;>9k?6>A;>9k?6>h>Mk?')>h>Mk?')>h>Mk?')>d>,l?ݏ>d>,l?ݏ>d>,l?ݏ>%>j?Ȇ=%>j?Ȇ=%>j?Ȇ=#ylgx.=#ylgx.=#ylgx.= ỵgw.= ỵgw.= ỵgw.= yHgu.= yHgu.= yHgu.=%yE:g.=%yE:g.=%yE:g.=;ygq}.=;ygq}.=;ygq}.=ygt~.=ygt~.=ygt~.=!ygʩ-=!ygʩ-=!ygʩ-=yjgn|.=yjgn|.=yjgn|.=H!yȞg A-=H!yȞg A-=H!yȞg A-=d y g.=d y g.=d y g.=jygp/=jygp/=jygp/= ỵgw.= ỵgw.= ỵgw.= ỵgw.= ỵgw.= ỵgw.=yg.=yg.=yg.=!ygʩ-=!ygʩ-=!ygʩ-=!ygʩ-=!ygʩ-=!ygʩ-=???Q?Q?Q??????????????????? y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?̣gw.= y?Hgu.= y?Hgu.= y?Hgu.=y?jgn|.=y?jgn|.=y?jgn|.=y?gt~.=y?gt~.=y?gt~.= y?Mg-= y?Mg-= y?Mg-= y?Mg-= y?Mg-= y?Mg-=d y? g.=d y? g.=d y? g.=d y? g.=d y? g.=d y? g.==e>=hu3>i>4uC3>Wl>zu N3>?$y?Rg|O/=?$y?Rg|O/=?$y?Rg|O/=d y? g.=d y? g.=d y? g.=s"y?g˪-=s"y?g˪-=s"y?g˪-=s"y?g˪-=s"y?g˪-=s"y?g˪-=;y?gq}.=;y?gq}.=;y?gq}.= y?Hgu.= y?Hgu.= y?Hgu.=y?g.=y?g.=y?g.=??????8?8?8????????????????k}?t >k}?t >k}?t >q? "tģ>q? "tģ>q? "tģ>Q}?wtٷ >Q}?wtٷ >Q}?wtٷ >}?t >}?t >}?t >A?t&?A?t&?A?t&?]?#tS>]?#tS>]?#tS> ]?t[g> ]?t[g> ]?t[g>=q?)t>=q?)t>=q?)t>S?GtؖH?S?GtؖH?S?GtؖH?A?!t&?A?!t&?A?!t&?>tb?>tb?>tb?>s!t`b?>s!t`b?>s!t`b?xO?$tH?xO?$tH?xO?$tH?H>Ոt&u?H>Ոt&u?H>Ոt&u?=jtWa~?=jtWa~?=jtWa~?T>t$u?T>t$u?T>t$u?½jtWa~?½jtWa~?½jtWa~?=ta~?=ta~?=ta~?s!t`b?s!t`b?s!t`b?`<Չu?`<Չu?`<Չu?2ss?2ss?2ss?½ta~?½ta~?½ta~?xO$tH?xO$tH?xO$tH?SGtؖH?SGtؖH?SGtؖH?s!t`b?s!t`b?s!t`b?At&?At&?At&?]#tS>]#tS>]#tS>A!t&?A!t&?A!t&?=q)t>=q)t>=q)t>q "tģ>q "tģ>q "tģ> ]t[g> ]t[g> ]t[g>{ry?Nbx(={ry?Nbx(={ry?Nbx(=y?g.=y?g.=y?g.=y?g.=y?g.=y?g.=2K2K2KKKKþ.lþ.lþ.lþ.lþ.lþ.l4}4}4}}}}=~=~=~=~=~=~ۇ>tۇ>tۇ>tۇ>tۇ>tۇ>tL>`aL>`aL>`aL>`aL>`aL>`a3h"?E3h"?E3h"?EHd"?EHd"?EHd"?EXyDgXyDgXyDg4Zyeg84Zyeg84Zyeg8[yg[yg[ygw9g`y4"w9g`y4"w9g`y4"w9g>`y4"w9g>`y4"w9g>`y4"?????????????????????????????????????????????????QI:?QI:?QI:????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ?????????????Q:?Q:?Q:?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Q?Q?Q?n?n?n????8?8?8?????????????????????????????????????????????????????????????????????????????????????8?8?8??????????????????????????????????Ѹ?Ѹ?Ѹ?8?8?8??????????????????????????????????????????????Ѹ?Ѹ?Ѹ????????????????????????????????????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ?RI9?RI9?RI9??????????????????????RI9?RI9?RI9???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????z3wԶf>z3wԶf>z3wԶf>il?|s?>il?|s?>il?|s?>w?fhq >w?fhq >w?fhq >v?m_>v?m_>v?m_>v?mq >v?mq >v?mq >dl?˞^>dl?˞^>dl?˞^>EB?n},w?EB?n},w?EB?n},w?{pjW?oy>pjW?oy>IZ?Qx>IZ?Qx>IZ?Qx>x*Y?U#>x*Y?U#>x*Y?U#>20k?9t->20k?9t->20k?9t->A>S4_?A>S4_?A>S4_?}?πLB?}?πLB?}?πLB?+#??h:?+#??h:?+#??h:??i@KTE??i@KTE??i@KTE?q;? ~!?q;? ~!?q;? ~!?7>)պg?7>)պg?7>)պg?><#dfo?><#dfo?><#dfo?o>JLj?o>JLj?o>JLj?>[~<\?>[~<\?>[~<\? >Ag? >Ag? >Ag?*>T?*>T?*>T?e3 K9v?e3 K9v?e3 K9v?땃hFv?땃hFv?땃hFv?zs?0>zs?0>zs?1=&{?1=&{?1=&{?>Him?>Him?>Him?| /Lj?| /Lj?| /Lj?ԋdm?ԋdm?ԋdm?Him?Him?Him?CU?CU?CU?P^\RZ\>P^\RZ\>ZWy>ZWy>ZWy>~hWy>~hWy>~hWy>vm= >vm= >vm= >vmq >vmq >vmq >m< `*ٙ>m< `*ٙ>m< `*ٙ>2k;t!>2k;t!>2k;t!>20k9t->20k9t->20k9t->5x+<=5x+<=5x+<=+?<=+?<=+?<=w+?<=w+?<=w+?<=w+?<=w+?<=w+?<=+?4<=+?4<=+?4<=#?A<Ԑ`>#?A<Ԑ`>#?A<Ԑ`>b#?+<'`>b#?+<'`>b#?+<'`>n#?Pn#?Pn#?P2?2?2?A7?A7?A7?#>?<;>#>?<;>#>?<;> ?<4> ?<4> ?<4> ?<4> ?<4> ?<4>%?l<`@>%?l<`@>%?l<`@>>M<?>M<?>M<?%><?n><?n><?-><?-><?-><?!>7<?>7<?>7<?C><'&?C><'&?C><'&?UC><%&?UC><%&?UC><%&?yC>L<,*&?yC>L<,*&?yC>L<,*&?=%l<`@>%l<`@> <4> <4> <4> <4> <4> <4>o?o?o?A7A7A7222#A<Ԑ`>#A<Ԑ`>#A<Ԑ`>b#+<'`>b#+<'`>b#+<'`>+#A<Ԑ`>#A<Ԑ`>??????????????????????????????Ѹ?Ѹ?Ѹ??????????????????????????????????????????????????????????????????????????????????b?|:Jb?|:Jb?|:J?8J?8J?8J>j>j>j>j>j>j2">|2">|2">|2">|2">|2">|d~d~d~d~d~d~Sȫ@)qSȫ@)qSȫ@)qSȫ@)qSȫ@)qSȫ@)q 3RT 3RT 3RT 3RT 3RT 3RT,?B*,?B*,?B*8?4*8?4*8?4*UicUicUicUicUicUic:wye:wye:wyeG}yxeG}yxeG}yxe~`ν~`ν~`ν~`ν~`ν~`ν4Lc?Q4Lc?Q4Lc?Q$Ly?$Ly?$Ly?$Ly?$Ly?$Ly?}$?(D?}$?(D?}$?(D?;O?D{?;O?D{?;O?D{?O?s?O?s?O?s?In?R#>In?R#>In?R#>In?R#>In?R#>In?R#>~? =~? =~? =~? =~? =~? =1>^?c<1>^?c<1>^?c<>f?P>f?P>f?P>W^?>W^?>W^?kz$?+D?kz$?+D?kz$?+D?t>Wf?t>Wf?t>Wf?~$?%D?~$?%D?~$?%D?kz$?+D?kz$?+D?kz$?+D?O?s?O?s?O?s?;O?D{?;O?D{?;O?D{?Nn?'>Nn?'>Nn?'>In?R#>In?R#>In?R#>~? =~? =~? =~? =~? =~? =wb7k2?wb7k2?wb7k2?e7$2?e7$2?e7$2?;cZ?;cZ?;cZ?o^Z?o^Z?o^Z?1_t?1_t?1_t?1_t?1_t?1_t?+ N ?+ N ?+ N ?+ N ?+ N ?+ N ?oJ>z?oJ>z?oJ>z?=J>z?=J>z?=J>z?TG> l?TG> l?TG> l?>l?>l?>l?>e?>e?>e?>e?>e?>e?,=?aм,=?aм,=?aм&=~?.L<&=~?.L<&=~?.L<=4~?$)K<=4~?$)K<=4~?$)K}?p;s>}?p;s>}?pk=>~?k=>~?k=>~?6 7}?6 7}?6 7}?YMh}?ϵQYMh}?ϵQYMh}?ϵQ-*~?<-*~?<-*~?<|g}?y<|g}?y<|g}?y<)b~?ئ<)b~?ئ<)b~?ئ<˽~?E˽~?E˽~?EB ?ZtB ?ZtB ?Zt˽~?:˽~?:˽~?:O۬$?J:O۬$?J:O۬$?J:uD?uD?uD?g.?Ѽg.?Ѽg.?Ѽ???gQ:?Mv`InR#>InR#>InR#>InR#>InR#>~ =~ =~ =~ =~ =~ =W^?W^?W^?kz$+D?kz$+D?kz$+D?}$(D?}$(D?}$(D?;OD{?;OD{?;OD{?Os?Os?Os?InR#>InR#>InR#>Nn'>Nn'>Nn'>~ =~ =~ =~ =~ =~ =þl?þl?þl?=Jz?=Jz?=Jz?oJz?oJz?oJz?+ N= ?+ N= ?+ N= ?+ N= ?+ N= ?+ N= ?1>_t?1>_t?1>_t?1>_t?1>_t?1>_t?o?^Z?o?^Z?o?^Z??;cZ??;cZ??;cZ? l7?2? l7?2? l7?2?h7?ǘ2?h7?ǘ2?h7?ǘ2?$L?y?$L?y?$L?y?$L?y?$L?y?$L?y?4L?c?Q4L?c?Q4L?c?Q~?`ν~?`ν~?`ν~?`ν~?`ν~?`νG}y?xeG}y?xeG}y?xe:wy?e:wy?e:wy?eUic?Uic?Uic?cmc?Ucmc?Ucmc?U8??4*8??4*8??4*8??4*8??4*8??4* ?3RT ?3RT ?3RT?.'qӫ>.'qӫ>.'qӫ>.'qӫ>.'qӫ>.'qd=~d=~d=~=|~=|~=|~˲!|˲!|˲!|"|"|"|˾j˾j˾j̾j̾j̾jb|:Jb|:Jb|:J8J8J8J55555555I55I55If4 5f4 5f4 5f4 5f4 5f4 5f4? 5f4? 5f4? 5f4? 5f4? 5f4? 55?5ѹ5?5ѹ5?5ѹ5?55?55?5\?K?\?K?\?K?}?!K?}?!K?}?!K? >}l? >}l? >}l? >}l? >}l? >}l?l>P}?l>P}?l>P}?l>P}?l>P}?l>P}?lP}?lP}?lP}?lP}?lP}?lP}? ľ}l? ľ}l? ľ}l? ľ}l? ľ}l? ľ}l?}!K?}!K?}!K?K?K?K?5?5?5?5?5?5?5?5?5?5?5?5?p>p>p>p>p>p> UW ? UW ? UW ? U[ ? U[ ? U[ ?c.;?c.;?c.;?c.;?c.;?c.;?)^?)^?)^?)^?)^?)^?v?v?v?$v?$v?$v?-?-?-?-?-?-?5E>]-{?5E>]-{?5E>]-{? F>*{? F>*{? F>*{?˦>mh?˦>mh?˦>mh?6>h?6>h?6>h?:k?I?:k?I?:k?I?Eo?NI?Eo?NI?Eo?NI?4Zyeg>4Zyeg>4Zyeg>4Zyeg>4Zyeg>4Zyeg>??????4Zy?eg>4Zy?eg>4Zy?eg>4Zy?eg>4Zy?eg>4Zy?eg>vI?vI?vI?vI?vI?vI?˦վmh?˦վmh?˦վmh?6վh?6վh?6վh?hE+{?hE+{?hE+{?5E]-{?5E]-{?5E]-{?-=?-=?-=?-=?-=?-=?ʌ>|!v?ʌ>|!v?ʌ>|!v?ʌ>|!v?ʌ>|!v?ʌ>|!v?)>^?)>^?)>^?)>^?)>^?)>^?c.?;?c.?;?c.?;?c.?;?c.?;?c.?;? U?[ ? U?[ ? U?[ ? U?[ ? U?[ ? U?[ ?p?>p?>p?>p?>p?>p?>55?55?55?55?55?55?ѸѸѸѸѸѸѸѸѸ888}?!K}?!K}?!K?K?K?K>l>l>l>l>l>lo>}o>}o>}o>}o>}o>}o}o}o}o}o}o}þlþlþlþ.lþ.lþ.lKKK}!K}!K}!K???I+; >I+; >I+; >B+!; >B+!; >B+!; >}c*;p >}c*;p >}c*;p >???2L?Vu+2=2L?Vu+2=2L?Vu+2=L?t+2=L?t+2=L?t+2=L?ytU+2=L?ytU+2=L?ytU+2=J?[u:4=J?[u:4=J?[u:4=K?Vu2=K?Vu2=K?Vu2=L?ytU+2=L?ytU+2=L?ytU+2=K?Vu2=K?Vu2=K?Vu2=L?tC2=L?tC2=L?tC2=L?t+2=L?t+2=L?t+2=_K?0.v/2=_K?0.v/2=_K?0.v/2=L?ytU+2=L?ytU+2=L?ytU+2=L?ytU+2=L?ytU+2=L?ytU+2=y?A<]1=y?A<]1=y?A<]1=NL?5t2=NL?5t2=NL?5t2=K?nu*2=K?nu*2=K?nu*2=L?t1=L?t1=L?t1=zL?:Wug1=zL?:Wug1=zL?:Wug1=5Ѹ5?5Ѹ5?5Ѹ5?b~?b~?b~?.dh >dh >"R+0;9??"R+0;9??"R+0;9??X7:>?X7:>?X7:>?6>Q 3?6>Q 3?6>Q 3?>7FQ2?>7FQ2?>7FQ2?2b~F=2b~F=2b~F=~k:=~k:=~k:=xGf|>xGf|>xGf|>ԦqDG>ԦqDG>ԦqDG>w3J;Y~>w3J;Y~>w3J;Y~>hi =>hi =>hi =>???????????????????h?h?hI?#8_ܼI?#8_ܼI?#8_ܼ~?W=~?W=~?W="}?u >"}?u >"}?u >3y?I:^>3y?I:^>3y?I:^>t?Q>t?Q>t?Q>Ot?Q(>Ot?Q(>Ot?Q(>Yd?k:1|>Yd?k:1|>Yd?k:1|>Uc?Q:>Uc?Q:>Uc?Q:>B?.:&?B?.:&?B?.:&?q)M?7?q)M?7?q)M?7?GL?%Q?GL?%Q?GL?%Q??KѸQZT?{?JѸ[]T??KѸQZT??Ѹ S??Ѹ S??Ѹ S? ?J:l0Q? ?J:l0Q? ?J:l0Q?1?Q8?1?Q8?1?Q8?x0? Q9?x0? Q9?x0? Q9?=~?=~?=~?0=Q;~?0=Q;~?0=Q;~?:>:}?:>:}?:>:}?><v?><v?><v? >Jkn? >Jkn? >Jkn?>e*;u?>e*;u?>e*;u?(>$g?(>$g?(>$g? }?k }?k }?k{!}?8{!}?8{!}?8s"}?)s"}?)s"}?)y}?;9y}?;9y}?;9 }?k }?k }?k }?ܵѸk }?ܵѸk }?ܵѸk{!}?Q{!}?Q{!}?QI$}?޺֔I$}?޺֔I$}?޺֔ }?k }?k }?k{!}?8{!}?8{!}?8j#}?DѸj#}?DѸj#}?DѸ{!}?{!}?{!}?v}?.Lv}?.Lv}?.L^!k~?^!k~?^!k~?+J:}?+J:}?+J:}?þf:̀l?þf:̀l?þf:̀l?ʇJ>v?ʇJ>v?ʇJ>v?ۆHv?ۆHv?ۆHv? 8Q9 U? 8Q9 U? 88 U?ӾyH*i?ӾyH*i?ӾyH*i?:ҾIli?:ҾIli?:ҾIli?,H;zAѺ,J>zAѺ,J>4odG:k>4odG:k>4odG:k>Olt#;>Olt#;>Olt#;>u^1 ~>u^1 ~>u^1 ~>^y\>^y\>^y\>zѺVJ>zѺVJ>zѺVJ>\}á ;[>\}á ;[>\}á ;[>*=*=*=???????????????????????????wa~? =wa~? =wa~? =;}? S >;}? S >;}? S >]}? &>]}? &>]}? &>Ψq?:>Ψq?:>Ψq?:>s?;u>s?;u>s?;u>X?I;>?X?I;>?X?I;>?ۃb?WFX!>ۃb?WFX!>ۃb?WFX!>Xob?F^>Xob?F^>Xob?F^>5?$.;5?5?$.;5?5?$.;5?yH?k4?yH?k4?yH?k4?H?kE"?H?kE"?H?kE"?>,O{o?>,O{o?>,O{o??xk:̟[??xk:̟[??xk:̟[?*?sI;X?*?sI;X?*?sI;X?j)?c*u??j)?c*u??j)?c*u??K)?Qe*/@?K)?Qe*/@?K)?Qe*/@?>Y.HIo?>Y.HIo?>Y.HIo?0C>1H:$q?0C>1H:$q?0C>1H:$q?Bf{?Bf{?Bf{?$B>)\[{?$B>)\[{?$B>)\[{?K=/0;b~?K=/0;b~?K=/0;b~?=er?=er?=er??????????@m~?@m~?@m~?8b~?8b~?8b~?KѸdu?du?KѸdu?+9v?+9v?+9v?L0;ϡq?L0;ϡq?L0;ϡq?W׾Q77h?W׾Q77h?W׾Q77h?׾;7X%h?׾;7X%h?׾;7X%h?S2ȁ7;3X?S2ȁ7;3X?S2ȁ7;3X?|H:eT?|H:eT?|H:eT?55.:5?55.:5?55.:5?~B/ƙ:?~B/ƙ:?~B/ƙ:?;/s:?;/s:?;/s:?Xž ;oC?Xž ;oC?Xž ;oC?qJH?qJH?qJH?bJG?bJG?bJG?ϻ|D #>ϻ|D #>ϻ|D #>7r;G>7r;G>7r;G>q7;>q7;>q7;>mayCX>mayCX>mayCX>faCXO>faCXO>faCXO>z|*D!>z|*D!>z|*D!>Gd~ :,=Gd~ :,=Gd~ :,=<O|<<O|<<O|<????????????????????????~?=~?=~?=}?@G: >}?@G: >}?@G: > l?0 ;> l?0 ;> l?0 ;>|#u?Qߍ>|#u?Qߍ>|#u?Qߍ>@u?$Q˒>@u?$Q˒>@u?$Q˒>T1?޺kt8?T1?޺kt8?T1?޺kt8?MN?~7;?MN?0;?MN?0;?9K?:?9K?:?9K?:?#e?>gD>#e?>gD>#e?>gD>e?f>e?f>e?f>Vf1?޺C8?Vf1?޺C8?Vf1?޺C8??I;K??I;K??I;K??I9&S??I9&S??I9&S?>:l?>:l?>:l?>gѹh?>gѹh?>gѹh?0V>wѹAh?0V>wѹAh?0V>wѹAh?F>w}?F>w}?F>w}?=:r~?=:r~?=:r~?>e:}?>e:}?>e:}?m<>4Gbv?m<>4Gbv?m<>4Gbv?$X>Hv?$X>Hv?$X>Hv??????????????????????????????? }fHk }fHk }fHk}o}o}o{!}{!}{!}s"})s"})s"}) }k }k }k }ܵ8k }ܵ8k }ܵ8k}.}.}.v}ø8.L }kv}ø8.L}AѸ.}AѸ.}AѸ. }k }k }k }k }k }k{!}{!}{!}j#}j#}j#}W~?W~?W~?J9~?J9~?J9~?r:n?r:n?r:n?ۊgv?ۊgv?ۊgv?Ѹov?Ѹov?Ѹov?|/c:?|/c:?|/kc:?@~:*T?@~:*T?@~:*T?hQ:S-Q?hQ:S-Q?hQ:S-Q?Ծ87h?Ծ87h?Ծ87h?Lվ77h?Lվ77h?Lվ77h?x/Ek=:?x/Ek=:?x/Ek=:? BMJ:&? BMJ:&? BMJ:&?JQ9f?JQ9f?JQ9f?\d7:5|>\d7:5|>\d7:5|>`׶ѹES>`׶ѹES>`׶ѹES>4aԷѹu>4aԷѹu>4aԷѹu>uy~7:3^>uy~7:3^>uy~7:3^>jqSѸu>jqSѸu>jqSѸu>".qѸꬫ>".qѸꬫ>".qѸꬫ>I_ܼI_ܼI_ܼF-N-; F-N-; F-N-; kJ9ϥ<kJ9ϥ<kJ9ϥ<\{:>\{:>\{:>/{:>/{:>/{:>???????????????2b~?F=2b~?F=2b~?F=}?k>}?k>}?k>v}?k?O>v}?k?O>v}?k?O>٨q?Q:>٨q?Q:>٨q?Q:> s?G ;9̛> s?G ;9̛> s?G ;9̛>X?p.:>?X?p.:>?X?p.:>?a?>a?>a?>a?O D>a?O D>a?O D>5?5.:5?5?5.:5?5?5.:5?AH?H?AH?H?AH?H?H?WH?H?WH?H?WH?1>u7no?1>u7no?1>u7no?H&?:[?H&?:[?H&?:[?*?q:+X?*?q:+X?*?q:+X?*)?kѺL??*)?kѺL??*)?kѺL??s)?Ѻ??s)?Ѻ??s)?Ѻ??G>7o?G>7o?G>7o?7C>9.q?7C>9.q?7C>9.q?1>Q|?1>Q|?1>Q|?\3>\Q |?\3>\Q |?\3>\Q |?`=:c~?`=:c~?`=:c~?b=?b=?b=??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ѹ?17Ѹ?17Ѹ?17Ѹ?17Ѹ?17Ѹ?17v?ψv?ψv?ψv?ψv?ψv?ψ]?!;?Tѹ]?!;?Tѹ]?!;?Tѹ]? ;?]? ;?]? ;?cv8ŵ8cv8ŵ8cv8ŵ8cv8cv8cv8??????]c ?ѹ]c ?ѹ]c ?ѹ]?]?]?V-}x>V-}x>V-}x>V-}x>V-}x>V-}x>Ⱥ~?Ⱥ~?Ⱥ~?W~?W~?W~?E=~?E=~?E=~?*޷;?kV *޷;?kV *޷;?kV *;?X *;?X *;?X Ms=&,2Ms=&,2Ms=&,2x?HA.2=x?HA.2=x?HA.2=Lyt=U+2Lyt=U+2Lyt=U+2NL?5t2=NL?5t2=NL?5t2=Ӷm7u<Ӷm7u<Ӷm7u<}At} >}At} >}At} >yg.=yg.=yg.=8ye2.2=8ye2.2=8ye2.2=LytU+2=LytU+2=LytU+2=LytU+2=LytU+2=LytU+2=]?he*=]?he*=]?he*=|rg>|rg>|rg>UyBUyBUyB?j8ѷ>?j8ѷ>?j8ѷ>߹>\U=[>߹>\U=[>߹>\U=[>m>?tL&=m>?tL&=m>?tL&=t=)|] t=)|] t=)|] -?٬>-?٬>>¾~|j>>¾~|j>>¾~|j>5|_5|_5|_!yol!yol!yol!yol!yol!yol; ?W?; ?W?; ?W?; ?W?; ?W?; ?W?G>d?G>d?G>d?G>d?G>d?G>d?>X{o?>X{o?>X{o?>X{o?>X{o?>X{o?XS?XS?XS?XS?XS?XS?﴾X{o?﴾X{o?﴾X{o?﴾X{o?﴾X{o?﴾X{o?G征d?G征d?G征d?G征d?G征d?G征d? W? W? W? W? W? W?# z6[># z6[># z6[># z6[># z6[># z6[>~X,=~X,=~X,=~X,=~X,=~X,=~X,ݽ~X,ݽ~X,ݽez;[ez;[ez;[ez;[ez;[ez;[~X,ݽ~X,ݽ~X,ݽ 1f><V& 1f><V& 1f><V&-f[V -f[V -f[V 1|?1|?1|?1|?1|?1|?nnnn:n:n:RI9RI9RI9RI9RI9RI9~?X,ݽ~?X,ݽ~?X,ݽ~?X,ݽ~?X,ݽ~?X,ݽ??????~?X,=~?X,=~?X,=~?X,=~?X,=~?X,=%v?H>%v?H>%v?H>%v?H>%v?H>%v?H>z?9[z?9[z?9[z?9[z?9[z?9[z?9[>z?9[>z?9[>ez?;[>ez?;[>ez?;[>>Gw?>Gw?>Gw?>Gw?>Gw?>Gw?1>|?1>|?1>|?1>|?1>|?1>|?XS=?XS=?XS=?XS=?XS=?XS=?Gw?Gw?Gw?Gw?Gw?Gw?%vH>%vH>%vH>%vH>%vH>%vH> v v v vψ8Ѹvψ8Ѹvψ8ѸNv܈Nv܈Nv܈v?Æ;Ѹv?Æ;Ѹv?Æ;ѸLv?ۈLv?ۈLv?ۈLv?ۈǷѹLv?ۈǷѹLv?ۈǷѹѸO ѸO ѸO Ѹ^Ѹ^Ѹ^Ѹ^;Ѹ^;Ѹ^;Ѹ ;Ѹ ;Ѹ ;QQQQ9Q9Q9Q9Q9Q9?????????????????????????????????Q9Q?Q9Q?Q9Q?t:?t:?t:?:;h?:;h?:;h?:a?:a?:a?:7?:7?:7?!:!^?!:!^?!:!^?1:!h?1:!h?1:!h?H:<?H:<?H:<?YQ:)d?YQ:)d?YQ:)d?H98?H98?H98?H8?H8?H8?YQ)d?YQ)d?YQ)d?H<?H<?H<?1ĺ!h?1ĺ!h?1ĺ!h?!޺!^?!޺!^?!޺!^?:(?:(?:(?bq=>|Bp=1s=?|Bp=1?bq=>?n=>>n=?bq=?|Bp=1n=bq=>|>Bp=?1|>Bp=?1|>Bp=?1?n=??bq=??Bp=?|1>s=?|>Bp=?1?Bp=|>1?|Bp=1?|Bp=1?Bp=?|1?|>Bp=?1?|>Bp=?1s=>Bp=|>1?k=`>?>n=??>bq=?v=?n=??bq=?n=?n=s=?|Bp=?1bq=n=?bq=?v=??s=?n=?>|>Bp=1n=bq=|Bp=?1n=?>n=?>?n=??n=?n=?>n=?n=?>?bq=?>Bp=?|>1?>s=?|>Bp=1?|>Bp=1n=?>>n=>n=?s=?v=?n=>bq=I\X>I_X>}I\X>I_X>}I_X>}I_X>}I\X>I_X>}I\X>I_X>}I_X>}I_X>}I_X>}I_X>}I\X>I\X>I_X>}I_X>}rI zX> I_X>}I\X>I\X>I_X>}I_X>}ICX>IuX>I\X>I\X>IuX>I\X>ICX>IuX>I\X>I\X>IuX>I\X>I?\X>?I?uX>?I?\X>?I?CX>?I?uX>?I?\X>?I?\X>?I?uX>?I?\X>?I?FX>J?I?uX>?I?_X>}?I?_X>}?I?_X>}?I?_X>}?I?\X>?I?_X>}?I?\X>?I?_X>}?I?_X>}?I?_X>}?I?\X>?I?_X>}?I?\X>?I?\X>?I?_X>}?I?_X>}?rI? zX> ?I?_X>}?I?\X>?I?\X>?I?_X>}?I?_X>}?rI? zX> ?I?_X>}?I?\X>?k=?`>n=?bq=??|Bp=?1?s=?>?Bp=?|>1888????Ѹ?Ѹ?Ѹ?RI?RI?RI}4>}4>}4>5?5?5?5?5?5?5?55?55?555?55?55?7;4X>{<7;4X>{<7;4X>{<@4Jݾz;@4Jݾz;@4Jݾz;555555J?5J?5J?5J=?5J=?5J=?5J=?5J=?5J=?5Oo>2xOo>2xOo>2xOo>2xOo>2xOo>2xȮ>lȮ>lȮ>l>hl>hl>hl ?.Z ?.Z ?.ZI?1ZI?1ZI?1ZkK&?BkK&?BkK&?BG&?[BG&?[BG&?[BB?kK&B?kK&B?kK&B?kK&B?kK&B?kK&Q;Z?Q;Z?Q;Z?9Z?9Z?9Z?l?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþx?\hox?\hox?\hox?\hox?\hox?\ho5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>l?>l?>l?>l?>l?>l?>EZ??EZ??EZ??EZ??EZ??EZ??B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?G&?[B?G&?[B?G&?[B?kK&?B?kK&?B?kK&?B?y?BZ?y?BZ?y?BZ?y?BZ?y?BZ?y?BZ?>hl?>hl?>hl?>hl?>hl?>hl?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?J=?5?J=?5?J=?5?J=?5?J=?5?J=?5?J?5?J?5?J?5?J?5?J?5?J?5?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?þhl?þhl?þhl?þhl?þhl?þhl?(=>Z?(=>Z?(=>Z?(=>Z?(=>Z?(=>Z?G&[B?G&[B?G&[B?kK&B?kK&B?kK&B?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?EZ?EZ?EZ?GZ?GZ?GZ?ƈl>ƈl>ƈl>ƈl>ƈl>ƈl>2xOo>2xOo>2xOo>x\ho>x\ho>x\ho>50Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š50Š50Š50Šx\hox\hox\ho2xOo2xOo2xOolȮþlȮþlȮþ^lþ^lþ^lþQ;ZQ;ZQ;Z9Z9Z9ZBkK&BkK&BkK&BkK&BkK&BkK&kK&BkK&BkK&BG&[BG&[BG&[ByBZyBZyBZyBZyBZyBZþhlþhlþhlȮþlȮþlȮþlOo2xOo2xOo2xOo2xOo2xOo2xJ?5J?5J?5ѸѸѸ888ѸѸѸѸѸѸ888ѸѸѸѸѸѸ888888ѸѸѸ??????????????????????????????Ѹ?Ѹ?Ѹ??????????8?8?8???????????????????????????????????????????8?8?8?Ѹ?Ѹ?Ѹ???????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ????????????????Ѹ?Ѹ?Ѹ??????????8?8?8????Ѹ?Ѹ?Ѹ???????????????????????????????????????????????????????ѸѸѸ888ѸѸѸѸѸѸ888ѸѸѸ8888880Š50Š50Š5Oo2xOo2xOo2xOo2xOo2xOo2xȮþlȮþlȮþlþ^lþ^lþ^lyBZyBZyBZyBZyBZyBZ@&[B@&[B@&[BkK&BkK&BkK&BBkK&BkK&BkK&[BG&[BG&[BG&9Z9Z9ZQ;ZQ;ZQ;ZlȮþlȮþlȮþlȮþlȮþlȮþ2xOo2xOo2xOox\hox\hox\ho?5J?5J?5J50Š50Š50Š50Š=50Š=50Š=?5J=?5J=?5J=x\ho>x\ho>x\ho>2xOo>2xOo>2xOo>ƈl>ƈl>ƈl>ƈl>ƈl>ƈl>GZ?GZ?GZ?JZ?JZ?JZ?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?kK&B?kK&B?kK&B?G&[B?G&[B?G&[B?yBZ?yBZ?yBZ?yBZ?yBZ?yBZ?þhl?þhl?þhl?þhl?þhl?þhl?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?J?5?J?5?J?5?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?J=?5?J=?5?J=?5?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Ȯ>l?Ȯ>l?Ȯ>l?>^l?>^l?>^l??Q;Z??Q;Z??Q;Z??Q;Z??Q;Z??Q;Z?kK&?B?kK&?B?kK&?B?G&?[B?G&?[B?G&?[B?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?EZ??EZ??EZ??GZ??GZ??GZ??l?>l?>l?>l?>l?>l?>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š5?0Š5?0Š5?0Š5?0Š5?0Šx?\hox?\hox?\hox?\hox?\hox?\hol?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþ9Z?9Z?9Z?Q;Z?Q;Z?Q;Z?[B?G&[B?G&[B?G&B?dD&B?dD&B?dD&dD&?BdD&?BdD&?BkK&?BkK&?BkK&?B?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z>^l>^l>^l>l>l>lOo>2xOo>2xOo>2xOo>2xOo>2xOo>2x0Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š50Š50Š50Š50Š=50Š=50Š=50Š=50Š=50Š=56o>x6o>x6o>x6o>x6o>x6o>xȮ>lȮ>lȮ>l>^l>^l>^ly?BZy?BZy?BZ(?=>Z(?=>Z(?=>ZkK&?BkK&?BkK&?BwY&?BwY&?BwY&?B[B?G&[B?G&[B?G&B?pR&B?pR&B?pR&1Z?I1Z?I1Z?I1Z?I1Z?I1Z?Il?Ȯþl?Ȯþl?Ȯþ^l?þ^l?þ^l?þ2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>чl?>чl?>чl?>ƈl?>ƈl?>ƈl?>EZ??EZ??EZ??EZ??EZ??EZ??ZB?N&?ZB?N&?ZB?N&?ZB?N&?ZB?N&?ZB?N&?N&?ZB?N&?ZB?N&?ZB?kK&?B?kK&?B?kK&?B?(?=>Z?(?=>Z?(?=>Z?y?BZ?y?BZ?y?BZ?>^l?>^l?>^l?Ȯ>l?Ȯ>l?Ȯ>l?\ho>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>x?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?\hox?\hox?\hox?Oo2x?Oo2x?Oo2x?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Q;Z?Q;Z?Q;Z?6Z?6Z?6Z?kK&B?kK&B?kK&B?kK&B?kK&B?kK&B?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?EZ?EZ?EZ?JZ?JZ?JZ?ƈl>ƈl>ƈl>чl>чl>чl>x\ho>x\ho>x\ho>x\ho>x\ho>x\ho>50Š=50Š=50Š=?5J=?5J=?5J=?5J?5J?5J50Š50Š50Šx\hox\hox\hox\hox\hox\holȮþlȮþlȮþlȮþlȮþlȮþ1ZI1ZI1ZI1ZI1ZI1ZI[BG&[BG&[BG&BkK&BkK&BkK&kK&BkK&BkK&BpR&BpR&BpR&B6Z6Z6Z(=>Z(=>Z(=>ZȮþlȮþlȮþlþhlþhlþhl6ox6ox6ox6ox6ox6ox0Š50Š50Š5888888ѸѸѸѸѸѸ888ѸѸѸ888888ѸѸѸѸѸѸ??????????????????????????????Ѹ?Ѹ?Ѹ?Ѹ?Ѹ?Ѹ??????????8?8?8??????????Ѹ?Ѹ?Ѹ????8?8?8??????????Ѹ?Ѹ?Ѹ??????????8?8?8?????????????????????????????????????????????????????????????8?8?8???????8?8?8?8?8?8?Ѹ?Ѹ?Ѹ????8?8?8???????????????????Ѹ?Ѹ?Ѹ?8?8?8????Ѹ?Ѹ?Ѹ?????????????????????????????????????ѸѸѸ888888ѸѸѸѸѸѸ888888ѸѸѸѸѸѸ8880Š50Š50Š5Oo2xOo2xOo2xOo2xOo2xOo2xþhlþhlþhlþ^lþ^lþ^l9Z9Z9ZQ;ZQ;ZQ;ZkK&BkK&BkK&BkK&BkK&BkK&B[BG&[BG&[BG&BkK&BkK&BkK&9Z9Z9Z9Z9Z9ZlȮþlȮþlȮþhlþhlþhlþ2xOo2xOo2xOo2xOo2xOo2xOo50Š50Š50Š50Š50Š50Š50Š=50Š=50Š=50Š=50Š=50Š=2xOo>2xOo>2xOo>2xOo>2xOo>2xOo>чl>чl>чl>ƈl>ƈl>ƈl>EZ?EZ?EZ?EZ?EZ?EZ?BkK&?BkK&?BkK&?[BG&?[BG&?[BG&?G&[B?G&[B?G&[B?G&[B?G&[B?G&[B?9Z?9Z?9Z?9Z?9Z?9Z?þhl?þhl?þhl?þhl?þhl?þhl?6ox?6ox?6ox?Oo2x?Oo2x?Oo2x?F6?F6?F6?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Ȯ>l?Ȯ>l?Ȯ>l?>hl?>hl?>hl??Q;Z??Q;Z??Q;Z??9Z??9Z??9Z?kK&?B?kK&?B?kK&?B?G&?[B?G&?[B?G&?[B?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?EZ??EZ??EZ??EZ??EZ??EZ??ƈl?>ƈl?>ƈl?>ƈl?>ƈl?>ƈl?>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>?5?J=?5?J=?5?J=F6?=F6?=F6?=5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oohl?þhl?þhl?þ^l?þ^l?þ^l?þ6Z?6Z?6Z?9Z?9Z?9Z?B?kK&B?kK&B?kK&B?kK&B?kK&B?kK&kK&?BkK&?BkK&?BkK&?BkK&?BkK&?B?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z>hl>hl>hlȮ>lȮ>lȮ>lOo>2xOo>2xOo>2xOo>2xOo>2xOo>2x0Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š5J?5J?5J?50Š=50Š=50Š=50Š=50Š=50Š=5Oo>2xOo>2xOo>2xOo>2xOo>2xOo>2xȮ>lȮ>lȮ>lȮ>lȮ>lȮ>l?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z?Q;ZpR&?BpR&?BpR&?BkK&?BkK&?BkK&?BB?kK&B?kK&B?kK&B?kK&B?kK&B?kK&1Z?I1Z?I1Z?I=>Z?(=>Z?(=>Z?(l?Ȯþl?Ȯþl?Ȯþhl?þhl?þhl?þ2x?Oo2x?Oo2x?Oox?\hox?\hox?\hoF6?F6?F6??5?J?5?J?5?J?5?J=?5?J=?5?J=5?0Š=5?0Š=5?0Š=2x?Oo>2x?Oo>2x?Oo>x?\ho>x?\ho>x?\ho>l?>l?>l?>чl?>чl?>чl?>EZ??EZ??EZ??GZ??GZ??GZ??B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B??Q;Z??Q;Z??Q;Z??Q;Z??Q;Z??Q;Z?>hl?>hl?>hl?Ȯ>l?Ȯ>l?Ȯ>l?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?þhl?þhl?þhl?þhl?þhl?þhl?yBZ?yBZ?yBZ?(=>Z?(=>Z?(=>Z?kK&B?kK&B?kK&B?kK&B?kK&B?kK&B?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?GZ?GZ?GZ?EZ?EZ?EZ?ƈl>ƈl>ƈl>ƈl>ƈl>ƈl>2xOo>2xOo>2xOo>2xOo>2xOo>2xOo>50Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š?5J?5J?5J2xOo2xOo2xOo2xOo2xOox\holȮþlȮþlȮþlȮþlȮþlȮþ1ZI1ZI1ZI1ZI1ZI1ZIBkK&BkK&BkK&BkK&BkK&BkK&kK&BkK&BkK&BkK&BkK&BkK&ByBZyBZyBZ(=>Z(=>Z(=>ZȮþlȮþlȮþlȮþlȮþlȮþlOo2xOo2xOo2xOo2xOo2xOo2x0Š50Š50Š5ѸѸѸѸѸѸ888888ѸѸѸѸѸѸ888888??????????????????????????????Ѹ?Ѹ?Ѹ?????????????????????????Ѹ?Ѹ?Ѹ????8?8?8??????????????????????????????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ????????????????????????????8?8?8????Ѹ?Ѹ?Ѹ??????????????????????Ѹ?Ѹ?Ѹ???????????????????????????????ѸѸѸ888888ѸѸѸ888ѸѸѸ888ѸѸѸ888ѸѸѸ0Š50Š50Š5Oo2xOo2xOo2xOo2xOo2xOo2xȮþlȮþlȮþlȮþlȮþlȮþlyBZyBZyBZ(=>Z(=>Z(=>ZkK&BkK&BkK&BwY&BwY&BwY&BBkK&BkK&BkK&BkK&BkK&BkK&Q;ZQ;ZQ;ZQ;ZQ;ZQ;ZlȮþlȮþlȮþ^lþ^lþ^lþ2xOo2xOo2xOo2xOo2xOo2xOo?5J?5J?5J50Š50Š50Š50Š=50Š=50Š=50Š=50Š=50Š=2xOo>2xOo>2xOo>2xOo>2xOo>2xOo>ƈl>ƈl>ƈl>ƈl>ƈl>ƈl>BZy?BZy?BZy?BZy?BZy?BZy?BpR&?BpR&?BpR&?[BG&?[BG&?[BG&?kK&B?kK&B?kK&B?kK&B?kK&B?kK&B?(=>Z?(=>Z?(=>Z? .Z? .Z? .Z?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l??Q;Z??Q;Z??Q;Z??6Z??6Z??6Z?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?B?kK&?B?kK&?B?kK&?[B?G&?[B?G&?[B?G&?BZ?y?BZ?y?BZ?y?BZ?y?BZ?y?BZ?y?ƈl?>ƈl?>ƈl?>ƈl?>ƈl?>ƈl?>2x?Oo>2x?Oo>2x?Oo>x?\ho>x?\ho>x?\ho>5?0Š=5?0Š=5?0Š=?5?J=?5?J=?5?J=?5?J?5?J?5?J5?0Š5?0Š5?0Šx?\hox?\hox?\ho2x?Oo2x?Oo2x?Ool?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?ȮþQ;Z?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z?B?kK&B?kK&B?kK&B?kK&B?kK&B?kK&kK&?BkK&?BkK&?BwY&?BwY&?BwY&?B?9Z?9Z?9Z(?=>Z(?=>Z(?=>ZȮ>lȮ>lȮ>l>^l>^l>^lOo>2xOo>2xOo>2xOo>2xOo>2xOo>2x0Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š50Š50Š50Š5=F6=F6=F6=F6=F6=F6Oo>2xOo>2xOo>2xOo>2xOo>2xOo>2x>^l>^l>^l>^l>^l>^lI?1ZI?1ZI?1Zy?BZy?BZy?BZkK&?BkK&?BkK&?BkK&?BkK&?BkK&?B[B?G&[B?G&[B?G&B?kK&B?kK&B?kK&9Z?9Z?9Z?9Z?9Z?9Z?l?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþ2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>чl?>чl?>чl?>l?>l?>l?>EZ??EZ??EZ??GZ??GZ??GZ??B?kK&?B?kK&?B?kK&?[B?G&?[B?G&?[B?G&?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?(?=>Z?(?=>Z?(?=>Z?y?BZ?y?BZ?y?BZ?>hl?>hl?>hl?Ȯ>l?Ȯ>l?Ȯ>l?Oo>2x?Oo>2x?Oo>2x?\ho>x?\ho>x?\ho>x?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š=5?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?\hox?\hox?\hox?Oo2x?Oo2x?Oo2x?þhl?þhl?þhl?Ȯþl?Ȯþl?Ȯþl?(=>Z?(=>Z?(=>Z?yBZ?yBZ?yBZ?kK&B?kK&B?kK&B?kK&B?kK&B?kK&B?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?GZ?GZ?GZ?EZ?EZ?EZ?ƈl>ƈl>ƈl>чl>чl>чl>x6o>x6o>x6o>2xOo>2xOo>2xOo>50Š=50Š=50Š=50Š=50Š=50Š=50Š50Š50Š?5J?5J?5Jx6ox6ox6o2xOo2xOo2xOohlþhlþhlþlȮþlȮþlȮþ9Z9Z9Z9Z9Z9ZBkK&BkK&BkK&ZBN&ZBN&ZBN&kK&BkK&BkK&BkK&BkK&BkK&BI1ZI1ZI1ZyBZyBZyBZȮþlȮþlȮþlȮþlȮþlȮþlOo2xOo2xOo2xOo2xOo2xOo2x0Š50Š50Š5ѸѸѸ888ѸѸѸѸѸѸ888ѸѸѸ888ѸѸѸ888888???????????????????????????8?8?8?Ѹ?Ѹ?Ѹ?????????????????????????Ѹ?Ѹ?Ѹ????8?8?8??????????Ѹ?Ѹ?Ѹ?Ѹ?Ѹ?Ѹ???????8?8?8??????????????????????????????????????????????????????????Ѹ?Ѹ?Ѹ?8?8?8???????????????????????????????????????????8?8?8??????????Ѹ?Ѹ?Ѹ???????????????????????????????ѸѸѸ888888ѸѸѸѸѸѸ888ѸѸѸѸѸѸ888ѸѸѸ0Š50Š50Š5Oo2xOo2xOo2xOo2xOo2xOo2xȮþlȮþlȮþlþhlþhlþhlyBZyBZyBZyBZyBZyBZwY&BwY&BwY&BkK&BkK&BkK&BBkK&BkK&BkK&BkK&BkK&BkK&Q;ZQ;ZQ;ZQ;ZQ;ZQ;ZlȮþlȮþlȮþlȮþlȮþlȮþ2xOo2xOo2xOo2xOo2xOo2xOo50Š50Š50Š50Š50Š50Š50Š=50Š=50Š=50Š=50Š=50Š=2xOo>2xOo>2xOo>2xOo>2xOo>2xOo>чl>чl>чl>ƈl>ƈl>ƈl>JZ?JZ?JZ?EZ?EZ?EZ?BkK&?BkK&?BkK&?BkK&?BkK&?BkK&?G&[B?G&[B?G&[B?N&ZB?N&ZB?N&ZB?(=>Z?(=>Z?(=>Z?(=>Z?(=>Z?(=>Z?þhl?þhl?þhl?þ^l?þ^l?þ^l?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?Oo2x?0Š5?0Š5?0Š5?0Š5?0Š5?0Š5?=F6?=F6?=F6?=F6?=F6?=F6?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Oo>2x?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l?Ȯ>l??9Z??9Z??9Z??9Z??9Z??9Z?G&?[B?G&?[B?G&?[B?G&?[B?G&?[B?G&?[B?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?B?kK&?EZ??EZ??EZ??JZ??JZ??JZ??ƈl?>ƈl?>ƈl?>чl?>чl?>чl?>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>x?\ho>?5?J=?5?J=?5?J=5?0Š=5?0Š=5?0Š=5?0Š5?0Š5?0Š?5?J?5?J?5?J2x?Oo2x?Oo2x?Oox?\hox?\hox?\hol?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþl?Ȯþ9Z?9Z?9Z?Q;Z?Q;Z?Q;Z?B?kK&B?kK&B?kK&B?kK&B?kK&B?kK&kK&?BkK&?BkK&?BkK&?BkK&?BkK&?B?Q;Z?Q;Z?Q;Z?Q;Z?Q;Z?Q;ZȮ>lȮ>lȮ>lȮ>lȮ>lȮ>lOo>2xOo>2xOo>2xOo>2xOo>2xOo>2x=F6=F6=F6=F6=F6=F60Š50Š50Š555555555555555555555555555?55?55?55?55?55?55?55?55?55?55?55?-1?'8-1?'8-1?'81?81?81?8}4}4}4]D =]D =]D =]D =]D =]D =5?55?55?55?55?55?55?5?5?5?5?5?5?5?5?5?5?5?5?;5?5?;5?5?;5?5?5?5?5?5?5????wGb?򳙾wGb?򳙾wGb?򳙾????Ѹ?Ѹ?Ѹ?8?8?8??????????j^EX;?j^EX;?j^EX;?j^EX;?j^EX;?j^EX;??????94?MA@494?MA@494?MA@4A@4?M94A@4?M94A@4?M94;4?;';4?;';4?;'G74?''G74?''G74?''>4?:=>4>4?:=>4>4?:=>4=4? ==4=4? ==4=4? ==4>4?Tݾ9>4?Tݾ9>4?Tݾ97;4?Xݾ{<7;4?Xݾ{<7;4?Xݾ{<N:4?*>'N:4?*>'N:4?*>'>4?w>4'>4?w>4'>4?w>4'7;4?X>{<7;4?X>{<7;4?X>{<84?U>@84?U>@84?U>@Q34?A.dݾQ34?A.dݾQ34?A.dݾ>4?9Tݾ>4?9Tݾ>4?9Tݾ04?nF?`ݾ04?nF?`ݾ04?nF?`ݾ>4?9?Tݾ>4?9?Tݾ>4?9?Tݾ>4?4'?w>4?4'?w>4?4'?w84?'?84?'?84?'?A@4?94?MA@4?94?MA@4?94?M94?A@4?M94?A@4?M94?A@4?M????????????@4?N')>@4?N')>@4?N')>N:4?'*>N:4?'*>N:4?'*>??????A@4?94?M=A@4?94?M=A@4?94?M=94?A@4?M=94?A@4?M=94?A@4?M=>4?9T>>4?9T>>4?9T>>4?9T>>4?9T>>4?9T>N:4?'?*>N:4?'?*>N:4?'?*>N:4?'?*>N:4?'?*>N:4?'?*>84?Uݾ@?84?Uݾ@?84?Uݾ@?7;4?Xݾ{<?7;4?Xݾ{<?7;4?Xݾ{<?>4?9?T>>4?9?T>>4?9?T>>4?9?T>>4?9?T>>4?9?T>24?l6'?24?l6'?24?l6'?54?8'?54?8'?54?8'?84?U>@?84?U>@?84?U>@?84?U>@?84?U>@?84?U>@?34?Rڽ'?24?l6>'?24?l6>'?24?l6>'?24?l6>'?24?l6>'?34?Rڽ=}>}>}>}>}>}4}4}4}4}4}4}>.l>.l>.l>.l>.l>.lþlþlþlþ.lþ.lþ.l?TK?TK?TK?K?K?KKKKKKKK?K?K?K?K?K?KKKK2K2K2}l? ľ}l? ľ}l? ľl?þl?þl?þlþlþlþlþlþlþ}?}?}?}?4}?4}?4??????}?>}?>}?>}?4>}?4>}?4>l?>l?>l?>l?>l?>l?>.l>.l>.l>.l>.l>.l>K??K??K??K?2?K?2?K?2?K2?K2?K2?K2?K2?K2??K??K??K??TK??TK??TK?K?K?K?K?K?K?>l?>l?>l?>.l?>.l?>.l?þl?þl?þl?þl?þl?þl?>}?>}?>}?>}?>}?>}?o}?o}?o}?o}?o}?o}???????>4:>4>4:>4>4:>4A@4M94A@4M94A@4M94G74''G74''G74'';4;';4;';4;' :4Rڽ=@4 :4Rڽ=@4 :4Rڽ=@4A@4M=94A@4M=94A@4M=947;4Xݾ{<7;4Xݾ{<7;4Xݾ{<:4JݾB:4JݾB:4JݾB>4w>4'>4w>4'>4w>4';4>;';4>;';4>;'7;4X>{<7;4X>{<7;4X>{<84U>@84U>@84U>@@4z;Jݾ@4z;Jݾ@4z;Jݾ24HUVݾ24HUVݾ24HUVݾ1E4r'J1E4r'J1E4r'J>44'w>44'w>44'w:4B?Jݾ:4B?Jݾ:4B?Jݾ>49?Tݾ>49?Tݾ>49?TݾA@494MA@494MA@494MA@494MA@494MA@494M>44'?w>44'?w>44'?w>44'?w>44'?w>44'?wA@494?MA@494?MA@494?MA@494?MA@494?MA@494?MA@494M=A@494M=A@494M=>4>4:=>4>4:=>4>4:=@4N')>@4N')>@4N')>N:4'*>N:4'*>N:4'*>@4!:4?Rڽ=@4!:4?Rڽ=@4!:4?Rڽ=94A@4?M=94A@4?M=94A@4?M=>49T>>49T>>49T>84@U>84@U>84@U>@4N'?)>@4N'?)>@4N'?)>N:4'?*>N:4'?*>N:4'?*>84Uݾ@?84Uݾ@?84Uݾ@?>4Tݾ9?>4Tݾ9?>4Tݾ9?>49?T>>49?T>>49?T>84@?U>84@?U>84@?U>24l6'?24l6'?24l6'? 94?6'? 94?6'? 94?6'?7;4X>{<?7;4X>{<?7;4X>{<?84U>@?84U>@?84U>@?34WG4?34WG4?34WG4?34Rڽ'?24l6>'?24l6>'? 94?6>'? 94?6>'? 94?6>'?64ֽ=C4?64ֽ=C4?64ֽ=C4?>4:=>4?>4:=>4?>4:=>4?ѸѸѸ???????8?8?8?????????>4?4'w>4?4'w>4?4'w>4?4'w>4?4'w>4?4'w????????????????????????888ѸѸѸ}?4>}?4>}?4>}? >}? >}? >l?>l?>l?>l?>l?>l?>K??K??K??K?2?K?2?K?2??K??K??K??K??K??K?>.l?>.l?>.l?>l?>l?>l?4>}?4>}?4>}?>}?>}?>}?o}?o}?o}?þ.l?þ.l?þ.l?þl?þl?þl?K?K?K?K?K?K?K?K?K?K2?K2?K2?l>l>l>l>l>l>}4>}4>}4>}o>}o>}o>}4}4}4}4}4}4.lþ.lþ.lþ.lþ.lþ.lþKKKKKKKKKKKKþlþlþlþlþlþl4}4}4}>}>}>}>.l>.l>.l>.l>.l>.l?K?K?K?K?K?KK?K?K?K?K?K?.l?þ.l?þ.l?þ.l?þ.l?þ.l?þ}?4}?4}?4}? }? }? ?4F94HB?4F94HB?4F94HBbF424HBbF424HBbF424HB>44'w>44'w>44'w>44'w>44'w>44'w>49Tݾ>49Tݾ>49Tݾ84@Uݾ84@Uݾ84@Uݾ994bcݾ:994bcݾ:994bcݾ:>4Tݾ9>4Tݾ9>4Tݾ9G74''G74''G74''>4w4'>4w4'>4w4'A@4M94A@4M94A@4M9494MA@494MA@494MA@4A@494M=A@494M=A@494M=94A@4M=94A@4M=94A@4M==4 ''>=4 ''>=4 ''>>44'w>>44'w>>44'w>@4z;J>@4z;J>@4z;J>8;4{<X>8;4{<X>8;4{<X>F94HB?4?F94HB?4?F94HB?4?3*4좽Q4?3*4좽Q4?3*4좽Q4?-4t*(?-4t*(?-4t*(?b?46#'?b?46#'?b?46#'?>4Tݾ9?>4Tݾ9?>4Tݾ9?84Uݾ@?84Uݾ@?84Uݾ@?55555555?55?55??4HB=F94?4HB=F94?4HB=F94=4 ==4=4 ==4=4 ==4>4w>4'>4w>4'>4w>4'>4w>4'>4w>4'>4w>4'>4T>9>4T>9>4T>9:4J>B:4J>B:4J>BQ34A?.dݾQ34A?.dݾQ34A?.dݾ@4z;?Jݾ@4z;?Jݾ@4z;?Jݾ84'?84'?84'?1E4r'?J1E4r'?J1E4r'?JA@494?MA@494?MA@494?M?4F94?HB?4F94?HB?4F94?HBI>4n=I>4?I>4n=I>4?I>4n=I>4?&4K=S4?&4K=S4?&4K=S4?!+4B>>(?!+4B>>(?!+4B>>(?A4>y'?A4>y'?A4>y'?@4J>z;?@4J>z;?@4J>z;?994bc>:?994bc>:?994bc>:?:4B?J>:4B?J>:4B?J>A4i5?W>A4i5?W>A4i5?W>>4>4?:=>4>4?:=>4>4?:=A@494?M=A@494?M=A@494?M=N:4'?*>N:4'?*>N:4'?*>=4 '?'>=4 '?'>=4 '?'>5?55?55?5F4?%34?MF4?%34?MF4?%34?M>4?4'?w>4?4'?w>4?4'?wA4?y'?A4?y'?A4?y'?8;4?{<?Xݾ8;4?{<?Xݾ8;4?{<?Xݾ84?@?Uݾ84?@?Uݾ84?@?Uݾ64?0`>[?64?0`>[?64?0`>[?:4?J>B:4?J>B:4?J>B;4?>;';4?>;';4?>;'>4?w>4'>4?w>4'>4?w>4'C4? =s64C4?ֽ=64C4?ֽ=64F94?HB=?4F94?HB=?4F94?HB=?4F94?HB?4F94?HB?4F94?HB?4A@4?M94A@4?M94A@4?M94>4?w4'>4?w4'>4?w4';4?;';4?;';4?;'>4?Tݾ9>4?Tݾ9>4?Tݾ984?Uݾ@84?Uݾ@84?Uݾ@Q34?A.dݾQ34?A.dݾQ34?A.dݾ@4?z;Jݾ@4?z;Jݾ@4?z;JݾN:4?'*N:4?'*N:4?'*1E4?r'J1E4?r'J1E4?r'JC4?64ֽC4?64ֽC4?64ֽ?4?F94HB?4?F94HB?4?F94HBA@4?94?M=A@4?94?M=A@4?94?M=94?A@4?M=94?A@4?M=94?A@4?M==4? '?'>=4? '?'>=4? '?'>;4?;'?>;4?;'?>;4?;'?>@4?z;?J>@4?z;?J>@4?z;?J>84?@?U>84?@?U>84?@?U>84?U>@?84?U>@?84?U>@?F94?HB=?4?F94?HB=?4?F94?HB=?4?3*4?좽=Q4?3*4?좽=Q4?3*4?좽=Q4?-4?t*>(?-4?t*>(?-4?t*>(?b?4?6>#'?b?4?6>#'?b?4?6>#'?@4?J>z;?@4?J>z;?@4?J>z;?I>4?nI>4?I>4?nI>4?I>4?nI>4?,4?L[M4?,4?L[M4?,4?L[M4?,4?4QW'?,4?4QW'?,4?4QW'?A4?y'?A4?y'?A4?y'?@4?Jݾz;?>4?Tݾ9?@4?Jݾz;?>4?Tݾ9?>4?Tݾ9?>4?Tݾ9?>4?>4:=>4?>4:=>4?>4:=A@4?94M=A@4?94M=A@4?94M=84?'>84?'>84?'>@4?N')>@4?N')>@4?N')>84?@U>84?@U>84?@U>>4?9T>>4?9T>>4?9T>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????nCmZS<S%nCmZS<S%nCmZS<S%@OٵQq@OٵQq@OٵQq@OٵQq@OٵQq@OٵQqcSZ\S<1cSZ\S<1cSZ\S<1~cWS ~cWS ~cWS 6cfQo6cfQo6cfQo,.lSYS<>lž,.lSYS<>lž,.lSYS<>lžxsZSxsZSxsZS sZSs sZSs sZSs{xQ<_u{xQ<_u{xQ<_us|dQz`)s|dQz`)s|dQz`)Wy|Q(Wy|Q(Wy|Q(Z~ǸQ?r}[S>?r}[S>u}XSZ>u}XSZ>u}XSZ>y\S<\>y\S<\>y\S<\>uQ9>uQ9>uQ9>=u'QE>=u'QE>=u'QE>բn|Qբn|Qբn|Q fYSH> fYSH> fYSH>fuQH>fuQH>fuQH>:]2YS<?:]2YS<?:]2YS<?2SZS?2SZS?2SZS?@SQZS ?@SQZS ?@SQZS ?fG!QYSYSYSQw?`>Qw?`>Qw?`>Qw?`>Qw?`>Qw?>;Q<1q?>;Q<1q?>;Q<1q?u>Qkj?u>Qkj?u>Qkj?>Qj?>Qj?>Qj?>[S[S[S~c?WS< >~c?WS< >0l? Q%a>0l? Q%a>0l? Q%a>0l? Q%a>0l? Q%a>0l? Q%a> s? s? s?zx?շQv>zx?շQv>zx?շQv>+x?"Pu>+x?"Pu>+x?"Pu>Fx|?Q<6(>Fx|?Q<6(>Fx|?Q<6(>~?LQ=~?LQ=~?LQ=Z~?ǸQ=Z~?ǸQ=Z~?ǸQ=-?QWSWSWSйQ:h[>йQ:h[>йQ:hK>3Qa>hK>3Qa>hK>3Qa>h&>qZSqZSqZS([SuCƍ>([SuCƍ>([Suvލ>(XS(XS(XSd\Sd\Sd\S*ZS,}@>*ZS,}@>*ZS,}t>XS}t>XS}t>XS}DP=Q>4I?>>4I?>>4I?I>'4q?I>'4q?I>'4q?.>4l?.>4l?.>4l?fT>4q?fT>4q?fT>4q?)I>4ts?)I>4ts?)I>4ts?.>4`&?.>4`&?.>4`&?>4X&?>4X&?>4X&?>4D&?>4D&?>4D&?27>4P]/?27>4P]/?27>4P]/?%L7>4\/?%L7>4\/?%L7>4\/?/7>4n/?/7>4n/?/7>4n/?ۓ=߹4 ^4?ۓ=߹4 ^4?ۓ=߹4 ^4?/ޓ=4ca4?/ޓ=4ca4?/ޓ=4ca4?zF=4 M4?zF=4 M4?zF=4 M4?F45?F45?F45?\!4S5?\!4S5?\!4S5?ɮ45?ɮ45?ɮ45? 4؏1? 4؏1? 4؏1?%Ż41?%Ż41?%Ż41?X41?X41?X41?~}p4)?~}p4)?~}p4)?}'4$)?}'4$)?}'4$)?}4)?}4)?}4)?'4/?'4/?'4/? 4x? 4x? 4x? K4!? K4!? K4!?.#߾4~?.#߾4~?.#߾4~?G߾4L?G߾4L?G߾4L?G߾4e?G߾4e?G߾4e?-4>-4>-4>%g4>%g4>%g4>,4>,4>,4>PO49>PO49>PO49>w4=>w4=>w4=>Y4;>Y4;>Y4;>y#4t>y#4t>y#4t>{|#4H>{|#4H>{|#4H>y#4t>y#4t>y#4t>-4:R>-4:R>-4:R>l-4Q>l-4Q>l-4Q>y-.4Q>y-.4Q>y-.4Q>r314=r314=r314=Z34_^=Z34_^=Z34_^=R{34C=R{34C=R{34C=oD5]4]oD5]4]oD5]4]WN54WN54WN54D54sD54sD54s2c4d52c4d52c4d5f241f241f241242424a/,,4ca/,,4ca/,,4c\0,24c\0,24c\0,24cf,!4lcf,!4lcf,!4lca!4a!4a!4h!R4h!R4h!R4l!i4+l!i4+l!i4+4UԾ4UԾ4UԾ4DԾ4DԾ4DԾ4VԾ4VԾ4VԾ<x4 <x4 <x4 b4b4b4˷4&˷4&˷4&ؾۻ4ؾۻ4ؾۻ4ؾ}4qؾ}4qؾ}4qؾ}4qؾ}4qؾ}4q'<4SY '<4SY '<4SY 4V 4V 4V W*"4WU W*"4WU W*"4WU PTl4[+PTl4[+PTl4[+hql=4^+hql=4^+hql=4^+pl4P+pl4P+pl4P+4j\24j\24j\2s׼4vh2s׼4vh2s׼4vh2"4]2"4]2"4]2415415415415415415Dt4L5Dt4L5Dt4L5F=24y3F=24y3F=24y3=43=43=43=4=3=4=3=4=3KI>4/.KI>4/.KI>4/.I>Դ4:.I>Դ4:.I>Դ4:.H>4(.H>4(.H>4(.+z>4n$+z>4n$+z>4n$k>4s$k>4s$k>4s$wk>I4 m$wk>I4 m$wk>I4 m$>74>74>74J>K4J>K4J>K4>l4>l4>l4>4>4>4s>4s>4s>4D>4D>4D>4!B ?C4h!B ?C4h!B ?C4h2J ?4 2J ?4 2J ?4 \ ?ڵ4\ ?ڵ4\ ?ڵ4㾋?4mY?4d?4d ?Y4M ?Y4M ?Y4M?4X?4X?4X(?40?b43->0?b43->/?64-.>/?64-.>/?64-.>/?64-.>/?64-.>/?64-.>3'?4Nj>3'?4Nj>3'?4Nj>8'?4x>8'?4x>8'?4x>8'?4x>8'?4x>8'?4x>?4 ->?4 ->?4 ->B?40>B?40>B?40>?4<>?4<>?4<>1k ?@40>1k ?@40>1k ?@40> Q ?4`0> Q ?4`0> Q ?4`0>R ?:4&>R ?:4&>R ?:4&>>Z4q?>Z4q?>Z4q?9ɻ4?1k9ɻ4?1k9ɻ4?1kHм4?eHм4?eHм4?e{4?jW&{4?jW&{4?jW& 4?e& 4?e& 4?e&e7%4?i/e7%4?i/e7%4?i/t/74?%Z/t/74?%Z/t/74?%Z/Ub4?7D4Ub4?7D4Ub4?7D44?Zd44?Zd44?Zd4t=4? 5t=4? 5t=4? 5F=4? 5F=4? 5F=4? 5 >4?1 >4?1 >4?1y%>4?]{1y%>4?]{1y%>4?]{1}>4?U)}>4?U)}>4?U)~}>p4?)~}>p4?)~}>p4?)M>m4?P.M>m4?P.M>m4?P.xA>R4?!xA>R4?!xA>R4?!q>\4?q>\4?q>\4?[n>4?}[n>4?}[n>4?}7?4? 7?4? 7?4? x9?#4?x9?#4?x9?#4??V4?̾?V4?̾?V4?̾?Y4?;̾?Y4?;̾?Y4?;̾u#?4?u#?4?u#?4?{|#?4?H{|#?4?H{|#?4?H2-?c4?R2-?c4?R2-?c4?Rv-?w4?Qv-?w4?Qv-?w4?Qhr3?4?&˽hr3?4?&˽hr3?4?&˽3?74?Z˽3?74?Z˽3?74?Z˽AA5?4?9.,?4?c>9.,?4?c> ,?O4?Oc> ,?O4?Oc> ,?O4?Oc> n!?4?l> n!?4?l> n!?4?l>h!?R4?>h!?R4?>h!?R4?>)?4?`>)?4?`>)?4?`>?4?E>?4?E>?4?E> ?4?b> ?4?b> ?4?b>?5?T>?5?T>?5?T>>4??>4??>4??>F4?_?>F4?_?>F4?_?+>4??+>4??+>4??>}4?q?>}4?q?>}4?q?*>4?9\ ?*>4?9\ ?*>4?9\ ?B>4?Eg ?B>4?Eg ?B>4?Eg ?l>4?/q+?l>4?/q+?l>4?/q+?ql>x4?{k+?ql>x4?{k+?ql>x4?{k+?->4?lr2?->4?lr2?->4?lr2?>ү4?u2?>ү4?u2?>ү4?u2?<4?K5?<4?K5?<4?K5?E<4?15?E<4?15?E<4?15?;d4?Y3?;d4?Y3?;d4?Y3?߸74?3?߸74?3?߸74?3?I$4?.?I$4?.?I$4?.?IC4?#4.?IC4?#4.?IC4?#4.?wd4?ry$?wd4?ry$?wd4?ry$?ۆw4?$?ۆw4?$?ۆw4?$?ɾ4??ɾ4??ɾ4??Ⱦv4?7?Ⱦv4?7?Ⱦv4?7?΢j4?q?΢j4?q?΢j4?q?4?C?4?C?4?C?gO 4?>gO 4?>gO 4?>N $4?6>N $4?6>N $4?6>4?X>4?X>4?X>4?=>4?=>4?=>(4?!>(4?!>(4?!>) 4?SF>) 4?SF>) 4?SF>@ 14?\>@ 14?\>@ 14?\> 1Y4?(> 1Y4?(> 1Y4?(>4)4?59=4)4?59=4)4?59=@44?"9=@44?"9=@44?"9=|44? |44? |44? 4B4?w:4B4?w:4B4?w:/4?.1./4?.1./4?.1. /d4?0. /d4?0. /d4?0.8'4?x8'4?x8'4?x='g4?ŋ='g4?ŋ='g4?ŋ4? -4? -4? -˟4?F<˟4?F<˟4?F4?>4?>4?I'4?qI'4?qI'4?q??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>S[SS[SS[S+VsW>+VsW>+Vs>\Ss>\Ss>\Ssj>P<,yj>P<,yj>P<,yd>O\S|d>O\S|d>O\S|d>O\S|d>O\S|d>O\S| =ͶQ<}4 =ͶQ<}4 =ͶQ<}4y.:g[Sy.:g[Sy.:g[Sy.:g[Sy.:g[Sy.:g[S͙hPXS<Պ*>XS<Պ*>XS<Պ*^pKcYS\^pKcYS\^pKcYS\_K Qr_K Qr_K QrEV[S<^ EV[S<^ EV[S<^ O`dQZO`dQZO`dQZ `Q& `Q& `Q&Lpi{nN<ҾLpi{nN<ҾLpi{nN<ҾpQDžpQDžpQDž~p]T?~p]T?~p]T?vE[S<$vE[S<$vE[S<$>{QC>{QC>{QC>{:PC>{:PC>{:PC@~KYS<[@~KYS<[@~KYS<[-WS -WS -WS #E\S4"#E\S4"#E\S4"[S<=[S<=[S<=P~9Q;=P~9Q;=P~9Q;=S~TQO<=S~TQO<=S~TQO<=Y{QY{QY{QvQ>vQ>vQ>vQ>vQ>vQ>p-Q<>p-Q<>p-Q<>ԵiQ>ԵiQ>ԵiQ>}iP>}iP>}iP> a5Q<> a5Q<> a5Q<>7WQ ?7WQ ?7WQ ?hWQD ?hWQD ?hWQD ?KnN<?KnN<?KnN<?A? ZS"*?A? ZS"*?A? ZS"*?4W?J\Sn *?4W?J\Sn *?4W?J\Sn *?1\SQ<%}?!>Q<%}?!>Q<%}?;h>۴QNy?;h>۴QNy?;h>۴QNy?"h>QMPy?"h>QMPy?"h>QMPy?>XS<|#t?>XS<|#t?>XS<|#t?>BQm?>BQm?>BQm?>BQ\m?>BQ\m?>BQ\m?a>hYS<^e?a>hYS<^e?a>hYS<^e??޸Q`1\??޸Q`1\??޸Q`1\?U?DQ '\?U?DQ '\?U?DQ '\??FX?T"*?>?T"*?>?T"*?>?RTNJ*?>?RTNJ*?>?RTNJ*?GeK? Q#`?P#`?Pti?\S >ti?\S >ti?\S >ti?\S >ti?\S >ti?\S >p?[S<>p?[S<>p?[S<>Gv?7QJ@>Gv?7QJ@>Gv?7QJ@>v?Tԇ>v?Tԇ>v?Tԇ>>{?:P>{?:P>{?:PB~?tpNa=B~?tpNa=B~?tpNa=bB~?ZS%=bB~?ZS%=bB~?ZS%=?QQYSKeƔ>YSKeƔ>YSKe>Y\S:e>Y\S:e>Y\S:ef4?f4?f4? 4? 4? 4?z!4i ?z!4i ?z!4i ?澑4 ?澑4 ?澑4 ?羫4 ?羫4 ?羫4 ?4>4>4>+ۯ4Q>+ۯ4Q>+ۯ4Q>tƽ4g>tƽ4g>tƽ4g><4><4><4>?d4ɪ>?d4ɪ>?d4ɪ>W4>W4>W4>%4Z>%4Z>%4Z>t%4/ޓ>t%4/ޓ>t%4/ޓ>t%4/ޓ>t%4/ޓ>t%4/ޓ>(.4E?>(.4E?>(.4E?>{.x4b?>{.x4b?>{.x4b?>$.4b?>$.4b?>$.4b?>4 4=4 4=4 4=6 44=6 44=6 44= 4a4= 4a4= 4a4="5&40"5&40"5&40~5L4~5L4~5L4伧54⼧54⼧541 4 1 4 1 4 14QD 14QD 14QD 1W4# 1W4# 1W4# *54u*54u*54uƑ*4uƑ*4uƑ*4uǁ* 4wuǁ* 4wuǁ* 4wu?;42?;42?;42/*4/*4/*4/*4/*4/*4 -4)ܾ -4)ܾ -4)ܾ5L4`5ܾ5L4`5ܾ5L4`5ܾ4_ ܾ4_ ܾ4_ ܾf#c4f#c4f#c4)K4)K4)K4u 4u 4u 4wо4kSwо4kSwо4kSv.о4av.о4av.о4aо}4zо}4zо}4z|Ľ4"|Ľ4"|Ľ4"-4ׂ"-4ׂ"-4ׂ":u4":u4":u4"|YY4a,|YY4a,|YY4a,Z4=,Z4=,Z4=,*Z4L,*Z4L,*Z4L,۽4-3۽4-3۽4-3b۽b403b۽b403b۽b403۽4]43۽4]43۽4]43Q:ʼ4L5Q:ʼ4L5Q:ʼ4L5Q:4?5Q:4?5Q:4?5Q:Z4mF5Q:Z4mF5Q:Z4mF5=4)3=4)3=4)3=4>&3=4>&3=4>&3=4%3=4%3=4%3׎[>y4L,׎[>y4L,׎[>y4L,[>4,[>4,[>4,m[>s4O,m[>s4O,m[>s4O,)V>4O\")V>4O\")V>4O\"hE>Q4Nl"hE>Q4Nl"hE>Q4Nl"9>84_"9>84_"9>84_"]>4U]>4U]>4UW>4>$W>4>$W>4>$]>4U]>4U]>4U>G4|>G4|>G4|{>14#{>14#{>14#>4o|>4o|>4o|N?4۾N?4۾N?4۾G?4h~۾G?4h~۾G?4h~۾F?4o۾F?4o۾F?4o۾_\?54ͬ_\?54ͬ_\?54ͬ\?˼4a笾\?˼4a笾\?˼4a笾Ln?4]嬾Ln?4]嬾Ln?4]嬾*?׮4$mt*?׮4$mt*?׮4$mt*?׮4$mt*?׮4$mt*?׮4$mtX*?64ltX*?64ltX*?64lt 2?47 2?47 2?47 V 2?4Q V 2?4Q V 2?4Q 1?4.k 1?4.k 1?4.k 5?l4sּ5?l4sּ5?l4sּz,5?4Eؼz,5?4Eؼz,5?4Eؼ%5?4Eؼ%5?4Eؼ%5?4Eؼ3?H4=3?H4=3?H4=g 4?s4"=g 4?s4"=g 4?s4"=(4?46V=(4?46V=(4?46V=.?|4;@>.?|4;@>.?|4;@>:.?4V@>:.?4V@>:.?4V@> .?44A> .?44A> .?44A> M%?4> M%?4> M%?4>U%?4>U%?4>U%?4>nY%?4+>nY%?4+>nY%?4+>?m4R>?m4R>?m4R>0 ?P45E>0 ?P45E>0 ?P45E>2?m4Am>2?m4Am>2?m4Am>*?r4>*?r4>*?r4>:?4Q>:?4Q>:?4Q>>?4 >>?4 >>?4 >[>R4m ?[>R4m ?[>R4m ?N>c4 ?N>c4 ?N>c4 ?U>4 ?HL> 4 ?U>4 ?>,4?>,4?>,4?>4?>4?>4?>4?>4?>4?6>4I(?6>4I(?6>4I(?k*>4D(?k*>4D(?k*>4D(?[,>42(?[,>42(?[,>42(?Y$>40?Y$>40?Y$>40?Y$>n40?Y$>n40?Y$>n40?u$>Z4ۄ0?u$>Z4ۄ0?u$>Z4ۄ0?:QZ=/44?:QZ=/44?:QZ=/44?ʹZ=c4G4?ʹZ=c4G4?ʹZ=c4G4?Y"[=44?Y"[=44?Y"[=44? `W4ɻ4? `W4ɻ4? `W4ɻ4?a4G4?a4G4?a4G4?Fa44?Fa44?Fa44?%ļ4|0?%ļ4|0?%ļ4|0?%4o0?%4o0?%4o0?0&4t0?0&4t0?0&4t0?LJ<4A(?LJ<4A(?LJ<4A(?ڮ4<(?ڮ4<(?ڮ4<(?9⇾%4z (?9⇾%4z (?9⇾%4z (?4ɬ?4ɬ?4ɬ?>{4? >{4? >{4? A>24? A>24? A>24? x?4?x?4?x?4?x?T4?$x?T4?$x?T4?$PL?4?ľPL?4?ľPL?4?ľSE?4?ľSE?4?ľSE?4?ľ%?4?%?4?%?4? %?O4?gГ %?O4?gГ %?O4?gГ'.?24?0?'.?24?0?'.?24?0?N.?(4?|?N.?(4?|?N.?(4?|?F4?4?ݤF4?4?ݤF4?4?ݤ 4?4?u 4?4?u 4?4?u5?4?<5?4?<5?4?<5?!4?!<5?!4?!<5?!4?!<*1?4? >*1?4? >*1?4? >`1?4?. >`1?4?. >`1?4?. >!*?4?u>!*?4?u>!*?4?u>!*?4?u>!*?4?u>!*?4?u>3?I4?7>3?I4?7>3?I4?7> ?4?Ԑ> ?4?Ԑ> ?4?Ԑ>?74?>?74?>?74?>?74?>?74?>?74?>d>=4?g? >94?g? >94?g? >74?u? >74?u? >74?u?->4? Z?->4? Z?->4? Z?V>Ͻ4?a?V>Ͻ4?a?V>Ͻ4?a?=>4?"?=>4?"?=>4?"?V>4?"?V>4?"?V>4?"?OZ>4?,?OZ>4?,?OZ>4?,?Z>a4?,?Z>a4?,?Z>a4?,?=4?-3?=4?-3?=4?-3?[=4?33?[=4?33?[=4?33?I˼4?L5?I˼4?L5?I˼4?L5?7˼4?L5?7˼4?L5?7˼4?L5?߽4?%3?߽4?%3?߽4?%3?t߽4?3?t߽4?3?t߽4?3?Q[4?8,?Q[4?8,?Q[4?8,?[4?,?[+4?{,?[4?,?(yM4?)%?(yM4?)%?(yM4?)%?_{4?E%?_{4?E%?_{4?E%?j 5??j 5??j 5??]n4??]n4??]n4??оֻ4?P2?оֻ4?P2?оֻ4?P2?оz4?&?оz4?&?оz4?&?4?{?4?{?4?{?]4?&v?]4?&v?]4?&v?zM4?>zM4?>zM4?>G4?h~>G4?h~>G4?h~>Z4?J>Z4?J>Z4?J>k4?>k4?>k4?>*W4?t>*W4?t>*W4?t>c*Q4?,Tt>c*Q4?,Tt>c*Q4?,Tt>24?7 >24?7 >24?7 > 24?7 > 24?7 > 24?7 >954?E<954?E<954?E<25`4?%<25`4?%<25`4?%< 44? 44? 44?44?-%44?-%44?-%.4?@.4?@.4?@d.4?I@d.4?I@d.4?I@ M%4? M%4? M%4?K%4?K%4?K%4?w4?_žw4?_žw4?_ž0 d4?mž0 d4?mž0 d4?mž/4?L/4?L/4?LEW4?&EW4?&EW4?&tg4? tg4? tg4? Y}4?} Y}4?} Y}4?} i4?i4?i4?z񸾢4?z񸾢4?z񸾢4?4?7(4?7(4?7(#C4?TO(#C4?TO(#C4?TO(h$x4?0h$x4?0h$x4?0?$4?u0?$4?u0?$4?u0ʹZc4?G4ʹZc4?G4ʹZc4?G4Y4?4Y4?4Y4?4 `=ɻ4?W4 `=ɻ4?W4 `=ɻ4?W4Fa=4?4Fa=4?4Fa=4?4@&>4?n0@&>4?n0@&>4?n0w&>4?‚0w&>4?‚0w&>4?‚08>4?(8>4?(8>4?(>4?(>4?(>4?(>δ4?>δ4?>δ4?)>4?ξ)>4?ξ)>4?ξ55555555555555?55?55?55?55?55?>}>}>}4}4}4}5555555555555?55?55?55?55?55?594?A@4?M94?A@4?M94?A@4?M5?5?5?5?5?5?5?5?5?5?5?5???????55?55?55?55?55?55?o}?o}?o}???????5?5?5?5?5?5?5?;5?5?;5?5?;5?5?5?5?5?5?5?5?55?55?55?55?55?5???????????????????Ѹ?Ѹ?Ѹ???????????????????8?8?8????RI9?RI9?RI9????????????  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  !!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""######### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~##################################################################################################################################$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************************************************************************************************************************+++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------------------------------------------------------------------------------------------------......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..................................................................................................................................///////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;//?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<< < < < < <<<<<<<<<<<<<<<<<<< =?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================================================================================================================================>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAA A A A A AAAAAAAAAAAAAAAAAAA A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCC C C C C CCCCCCCCCCCCCCCCCCC C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChkl-5.1.7/data/blender_gltf_converter.py0000664000175000017500000000507015133711150017264 0ustar00piccapicca""" Run from the terminal: blender -b -P blender_gltf_converter.py -- -mp "path-to-file" If you're not in the same directory as the blender_gltf_converter.py file, provide full path to it. The "-b" flag runs Blender in headless mode. If you wish to see the UI after the script is done processing, skip it. The "-P" flag allows to pass script to Blender. """ import sys # bpy is the library you need to import to access Blender API # Link to the official documentation: https://docs.blender.org/api/current/index.html # You can also enable tooltips in Blender: Edit -> Preferences -> Interface -> Python Tooltips # You can also use Info window to see what API calls are made on each action performed in Blender import bpy # Custom logic may go here def runner(): import argparse parser = argparse.ArgumentParser(description='Convert supported file type to gltf format.') # Arguments go here, e.g. asset path, output path, other custom properties and flags parser.add_argument('-mp', '--model_path', help='Path to a model you want to convert.') # The -- is a separator between arguments passed to Blender directly and to your script argv = sys.argv if "--" not in argv: argv = [] else: # Get just the arguments passed to your script argv = argv[argv.index("--") + 1:] # Access passed arguments args = parser.parse_args(argv) # Assignment to a variable is just a convenience, it's not mandatory model_path = args.model_path # Clear default scene # bpy.ops.object.select_all(action='SELECT') # bpy.ops.object.delete() bpy.ops.wm.open_mainfile(filepath=model_path) # Custom logic may go here # You might want to e.g. support various file formats, this example works just with .obj files #we get the version number and compare it to version 4 as since version 4 scene_obj is removed # if (4, 0, 0) > bpy.app.version: # bpy.ops.import_scene.obj(filepath=model_path) # else : # bpy.ops.wm.obj_import(filepath=model_path) output_path = model_path.replace(".blend", "") # The list of all parameters for gltf export can be found here: # https://docs.blender.org/api/current/bpy.ops.export_scene.html#bpy.ops.export_scene.gltf # Parameters that you won't set will use your Blender settings bpy.ops.export_scene.gltf(filepath=output_path, export_yup=False, use_visible=True, #export_format='GLTF_SEPARATE', ) if __name__ == "__main__": runner() hkl-5.1.7/data/soleil-cristal-4c.png0000664000175000017500000020031115144553662016145 0ustar00piccapiccaPNG  IHDR>aIDATx T =N A? !*+,, 6}:;;:;;+,,% EGom-.W)*-X9:::;;;<<566$ * M $ZQ&'w%&LUVV q5668888999:: WR(:O;>TE4F7%%%_ /!""HII@AAD .//56667756GSTf[\^L_NVwXD]G$'%]000BCD89:566>??CDDMNNE$011566stumnplmnjkmS_UBXD354f#$%`:;;DEEOPPHIJ;<<,,-BCC A ]233ijk|}~yz{prsVXX9F:IJJ"##|677111DDEVVW))* ?;<<788g011bccdeftuvwyylmnIIJ NOO^__Z\\000,---..'''899 NCBTUUeggZ[[oppONN;;;,66 --45RSSikklnnQSS==>777 o,,,FGG C?@@567 778*))NOO@??=>>5efprefbddsttprrghhQPO20/MNO(()666JKK222:::JKL678 JA111789&::QQ[\ VWOOSUUQRRXYZjkl@?=:::QRSDEFCDC?@@<==ABB::;445 f Q/00##"'& 995354HPPhijEEEKKKjkl?>>DEEDFGCGHDGI,,=4T $<==?@@>??(() O L!BDCTUU@??VVWqss?>?JMNQWYPUWNSU3 5R:;;;<<667%%%5"##wEEG655 '''TTTNNNuww^__111?DE.23 .2 5899788/00'&&"##&223>>?100 ABNGGH@AA//0Y / , A]555344***778443;;9>>?<<= -2323?&&+ ;<>EEH8c111/00('&)()%$#'220[\]RST=>;l,2)+-+'(,^_bcdhbcg[\`()+  ~&''#"! B  Xh++ z*/&'*&wCDF]_acdhbcg`aeFGI9  I oVVWYXZ\acfbdg`beZ[^()+ 023UWYWXZ\^abcg`be^`cEFI:++,WXZUVXXY\abe`be_`dXY]`""#kWXZUVXTVXWY[\]`OPS789 '&&'}WXZPQSGGISTV567"$%&))+ S))*WXZQQSTUWMMO>/0178:578345./0$%(k2./0WXZRSUWXZIJL ^%%%789?@B@AC=?A:<>679234--.yJMRgjr`dj!#%i456WXZRSTWXZDDF 555>>?=>>>?@@ABABDABD<=?334,,-)))+ 4$&(RY[imuimu459567WXZOOQEEF.-.???MMNLLMCDD??@=>?AABABC789--.***(((&&& = "p /u! F /GYNHZP\89:WXZHHJ:9:*)*%%&QQRRRRQQRLLMFFGBBC789-..+++)))'''&%%%$#002$%( 1 "'8:;=Y[]2D6!;<>WXZGGH:9:&%& RRSRRSPQQFGG789...+,,***(((&&&%%$%#"#! 668Y[c/14 VWZbcgabf`bfEFH (>?AVXZFEG:9:"!"FGGQQR>??../,--+++)))'''&%%%$#$"!$! %" 667_bi[^eW^WXZ\]`bcgabfabfUVZMNPVXZDDF:9:444AAB233+,,***(((&&&%%$%#"$" $!# 3IZQ-H3)*+abf[\`YZ\bcfabfabfXY\VXZCCD99: h""!/00***)(('''&%%%$#$"!#! $ ' PjaaNOQabebcgXY\VXZAAB989v"$$#&&%%$#$#"#!  ~!DEG^_a[\_VWZ@@A989~$$#"#!  p"))*013,-.9:=?CCD/01 \ $-./78:79:567234./0013OPR3234461=HKPFHM "WILQTW^?)112<>?@AC?@C<>@9:<568223-./##$B359eipfjq\`fV!"%XSV]ehpbfn[^e9;@,!!!99:;<=>?@@ABABDACD?AC<=?567../***`6D;NRVgjrlpw"#%[+,/~dhp`dkJQQ?"\(###AABIJJABB>>?=>>>?@@ABCDF?@B334+,,)))''' ^!"$w;AGG-B2 .!C%,E2 0 "! >$$%OOOSSSMMNFGGABB>??@@ABCD788---***)(('&&&%$"""T!"#Cp +a8qjwO###SSSTTTSSTMNNGHHFGH;;<../+,,***((('&&&%$%#":;=HJP`""$O ^ 4Nwff NOOUUUQQQMMN??@/00,--+++)))(''&%%&$#%#!&#!>?B\_g[^eaN !# C <!O**+???IJJOPP223-..,,,***((('&&&%$&$#&#!'$!"!0E4Z^eZ]e@BFV- "_013.//:::=>>,--+++)))(''&&%&%$%#"&#!"ww)L/,M2_'DFJ>?C***000*)))((''&&%%%$#%#!"AC <(? qQ><(?n><(? qQ><(?n><(?n><(? qQ> q= qQ><(? q>q= qQ><(? q><(? q>q= qQ> q=nQ> q= q>q=nQ> q= q>q= q>q=nQ><(?nQ> q=n><(?nQ> q=n>q=n><(?nQ> q= qQ> q=nQ><(? qQ> q=nQ><(?nQ><(? q>q=n>q= q><(?n>q= q><(? q><(?n><(? q><(?nE><(? q><(?nE><(?nE><(? q>q= q><(? qH>q= q><(? qE><(? qH>q= q>q=n>q= qH>q=n>q= qH>q= qH>q=n><(?n>q=nE><(?n>q=nH>q=nE><(?n>q= q>q=n><(? q>q=n><(?n><(? qH>q=nH>q= qE><(?nH>q= qE><(? qE><(?ny?<(? qy?<(?nP?=(? qy?<(?nP?=(?nP?=(? q{?q= qy?<(? qR?q= qy?<(? qP?=(? qR?q= q{?q=n{?q= qR?q=n{?q= qR?q= qR?q=ny?<(?n{?q=nP?=(?n{?q=nR?q=nP?=(?n{?q= q{?q=ny?<(? q{?q=ny?<(?ny?<(? qR?q=nR?q= qP?=(?nR?q= qP?=(? qP?=(?nE><(? qE><(?ny?<(? qE><(?ny?<(?ny?<(? qH>q= qE><(? q{?q= qE><(? qy?<(? q{?q= qH>q=nH>q= q{?q=nH>q= q{?q= q{?q=nE><(?nH>q=ny?<(?nH>q=n{?q=ny?<(?nH>q= qH>q=nE><(? qH>q=nE><(?nE><(? q{?q=n{?q= qy?<(?n{?q= qy?<(? qy?<(?n>zIX=ΒKfuMT>yG>'R>p\hu]T>m`G>'R?>p\?'R>p\hu]Tm`GzY=KR?SꈾR]zY=KRS>R]'R?p\>zIXΒK>fuMTyG'Rp\?hu]Tm`G'R?p\'Rp\?hu]T>m`G>zYK>R?S>R]?zYK>RSꈾR]?'R?>p\?hu]Tm`G.zYZyK>.zY=ZyK.zYZyK>hu]T>m`G>.zY=ZyKRq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?'R>p\'R?>p\?'R>p\'R?>p\?'R?>p\?'R>p\R?SꈾR]'R>p\R?SꈾR]RS>R]RS>R]'R?p\'Rp\?'R?p\'Rp\?'R?p\'R?p\'Rp\?R?S>R]?'Rp\?R?S>R]?RSꈾR]?RSꈾR]?'R?>p\?R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]Rq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?'R>p\'R?>p\?'R>p\'R?>p\?'R?>p\?'R>p\R?SꈾR]'R>p\R?SꈾR]RS>R]RS>R]'R?p\'Rp\?'R?p\'Rp\?'R?p\'R?p\'Rp\?R?S>R]?'Rp\?R?S>R]?RSꈾR]?RSꈾR]?'R?>p\?R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]Rq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?'R>p\'R?>p\?hu?]T>m`G'R?>p\?>z?IX=ΒK>fu?MT>yGR?SꈾR]'R>p\z?YKRS>R]hu?]T>m`Gz?YK'Rp\?'R?p\hu?]Tm`G>'R?p\>z?IXΒKfu?MTyG>R?S>R]?'Rp\?z?Y=K>RSꈾR]?hu?]Tm`G>z?Y=K>R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]hu?]Tm`G>.z?YZyK.z?Y=ZyK>.z?YZyKhu?]T>m`G.z?Y=ZyK>>zIX=ΒKfuMT>yG>'R>p\hu]T>m`G>'R?>p\?'R>p\hu]Tm`GzY=KR?SꈾR]zY=KRS>R]'R?p\>zIXΒK>fuMTyG'Rp\?hu]Tm`G'R?p\'Rp\?hu]T>m`G>zYK>R?S>R]?zYK>RSꈾR]?'R?>p\?hu]Tm`G.zYZyK>.zY=ZyK.zYZyK>hu]T>m`G>.zY=ZyKRq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?'R>p\'R?>p\?'R>p\'R?>p\?'R?>p\?'R>p\R?SꈾR]'R>p\R?SꈾR]RS>R]RS>R]'R?p\'Rp\?'R?p\'Rp\?'R?p\'R?p\'Rp\?R?S>R]?'Rp\?R?S>R]?RSꈾR]?RSꈾR]?'R?>p\?R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]Rq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?'R>p\'R?>p\?hu?]T>m`G'R?>p\?>z?IX=ΒK>fu?MT>yGR?SꈾR]'R>p\z?YKRS>R]hu?]T>m`Gz?YK'Rp\?'R?p\hu?]Tm`G>'R?p\>z?IXΒKfu?MTyG>R?S>R]?'Rp\?z?Y=K>RSꈾR]?hu?]Tm`G>z?Y=K>R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]hu?]Tm`G>.z?YZyK.z?Y=ZyK>.z?YZyKhu?]T>m`G.z?Y=ZyK>'R>p\'R?>p\?'R>p\'R?>p\?'R?>p\?'R>p\R?SꈾR]'R>p\R?SꈾR]RS>R]RS>R]'R?p\'Rp\?'R?p\'Rp\?'R?p\'R?p\'Rp\?R?S>R]?'Rp\?R?S>R]?RSꈾR]?RSꈾR]?'R?>p\?R?q爾ZRSꈾR]?RS>R]RSꈾR]?R?q>Z?RS>R]Rq爾Z?R?SꈾR]R?S>R]?R?SꈾR]Rq>ZR?S>R]?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      ?K7)@>0 ?K7),h ?r@>0 ?K7),h ?r,h ?r@>0+\?K7)@>0 ?K7)@>0*\?r@>0 ?K7)@>0 ?r@>0*\?r@>0+\?K7),h+\?K7)@>0*\?r,h+\?K7)@>0*\?r@>0*\?r,h ?K7),h+\?K7),h ?r,h+\?K7),h*\?r,h ?r,h+\?K7)@>0+\?K7),h ?K7)@>0+\?K7),h ?K7),h ?K7)@>0*\?r,h*\?r@>0 ?r,h*\?r@>0 ?r@>0 ?r,h=V?1D xT?tB"?xT?tB<"xT?tB"?=V?1D= ?xT?tB<"D۴#<=V?1D 8cJ?=<=V?2D vT?B<*8cJ?=<>u؞ D#,%<ű?<޻D#<?=w<ű?<޻vT?B*?>u؞ =V?2D= ?>u؞ ű?<޻=V?1D= ?Dۭ#!<?u6 ;V?5D >u؞ vT?B*?=V?1D ?<?=w<;V?5D= ??=w`TR?ꕶR>`TR>ꕶR?ꕶl;_ ?`TR?`Tl;_ ?ꕶR?`TR?ꕶl;_ ?ꕶ. ?`Tl;_ ?`T. ?ꕶl;_ ?`Tl;_ ?ꕶ. ?ꕶ ?`T. ?`T ?ꕶ. ?`T. ?ꕶ ?ꕶ >`T ?`T >ꕶ ?`T ?ꕶ >ꕶ->`T >`T->ꕶ >`T >ꕶ->ꕶj;_>`T->`Tj;_>ꕶ->`T->ꕶj;_>ꕶR>`Tj;_>`TR>ꕶj;_>`Tj;_>ꕶR>ꕶ->`Tj;_>`T >`Tj;_>`TR>`T >`T >`TR>`T ?`TR>`TR?`T ?`T ?`TR?`T. ?`TR?`Tl;_ ?`T. ?`T. ?ꕶl;_ ?ꕶ ?ꕶl;_ ?ꕶR?ꕶ ?ꕶ ?ꕶR?ꕶ >ꕶR?ꕶR>ꕶ >ꕶ >ꕶR>ꕶ->ꕶR>ꕶj;_>ꕶ->ꕶ(>?`T(>>`T(>?ꕶ(>>`T(>>ꕶ(>?ꕶ> ?`T(>?`T> ?ꕶ(>?`T(>?ꕶ> ?ꕶ:5^> ?`T> ?`T:5^> ?ꕶ> ?`T> ?ꕶ:5^> ?ꕶQ>?`T:5^> ?`TQ>?ꕶ:5^> ?`T:5^> ?ꕶQ>?ꕶQ>>`TQ>?`TQ>>ꕶQ>?`TQ>?ꕶQ>>ꕶ<5^>>`TQ>>`T<5^>>ꕶQ>>`TQ>>ꕶ<5^>>ꕶ>>`T<5^>>`T>>ꕶ<5^>>`T<5^>>ꕶ>>ꕶ(>>`T>>`T(>>ꕶ>>`T>>ꕶ(>>ꕶ<5^>>`T>>`TQ>>`T>>`T(>>`TQ>>`TQ>>`T(>>`TQ>?`T(>>`T(>?`TQ>?`TQ>?`T(>?`T:5^> ?`T(>?`T> ?`T:5^> ?`T:5^> ?ꕶ> ?ꕶQ>?ꕶ> ?ꕶ(>?ꕶQ>?ꕶQ>?ꕶ(>?ꕶQ>>ꕶ(>?ꕶ(>>ꕶQ>>ꕶQ>>ꕶ(>>ꕶ<5^>>ꕶ(>>ꕶ>>ꕶ<5^>>ꕶC `TQؾC `TC ꕶQؾC `TQؾC ꕶC ꕶV`TC `TVꕶC `TC ꕶVꕶ!`TV`T!ꕶV`TVꕶ!ꕶ3$`T!`T3$ꕶ!`T!ꕶ3$ꕶQؾ2$`T3$`TQؾ2$ꕶ3$`T3$ꕶQؾ2$ꕶ -Ҿ!`TQؾ2$`T -Ҿ!ꕶQؾ2$`TQؾ2$ꕶ -Ҿ!ꕶ -ҾV`T -Ҿ!`T -ҾVꕶ -Ҿ!`T -Ҿ!ꕶ -ҾVꕶQؾC `T -ҾV`TQؾC ꕶ -ҾV`T -ҾVꕶQؾC ꕶ -Ҿ!`T -ҾV`TQؾ2$`T -ҾV`TQؾC `TQؾ2$`TQؾ2$`TQؾC `T3$`TQؾC `TC `T3$`T3$`TC `T!`TC `TV`T!`T!ꕶVꕶ3$ꕶVꕶC ꕶ3$ꕶ3$ꕶC ꕶQؾ2$ꕶC ꕶQؾC ꕶQؾ2$ꕶQؾ2$ꕶQؾC ꕶ -Ҿ!ꕶQؾC ꕶ -ҾVꕶ -Ҿ!ꕶ+`TQؾ+`T+ꕶQؾ+`TQؾ+ꕶ+ꕶR8`T+`TR8ꕶ+`T+ꕶR8ꕶ`TR8`TꕶR8`TR8ꕶꕶ-1`T`T-1ꕶ`Tꕶ-1ꕶQؾ+1`T-1`TQؾ+1ꕶ-1`T-1ꕶQؾ+1ꕶ-Ҿ`TQؾ+1`T-ҾꕶQؾ+1`TQؾ+1ꕶ-Ҿꕶ-ҾQ8`T-Ҿ`T-ҾQ8ꕶ-Ҿ`T-Ҿꕶ-ҾQ8ꕶQؾ+`T-ҾQ8`TQؾ+ꕶ-ҾQ8`T-ҾQ8ꕶQؾ+ꕶ-Ҿ`T-ҾQ8`TQؾ+1`T-ҾQ8`TQؾ+`TQؾ+1`TQؾ+1`TQؾ+`T-1`TQؾ+`T+`T-1`T-1`T+`T`T+`TR8`T`TꕶR8ꕶ-1ꕶR8ꕶ+ꕶ-1ꕶ-1ꕶ+ꕶQؾ+1ꕶ+ꕶQؾ+ꕶQؾ+1ꕶQؾ+1ꕶQؾ+ꕶ-ҾꕶQؾ+ꕶ-ҾQ8ꕶ-Ҿꕶ?*`TQ>*`T?*ꕶQ>*`TQ>*ꕶ?*ꕶ?`T?*`T?ꕶ?*`T?*ꕶ?ꕶ?A94`T?`T?A94ꕶ?`T?ꕶ?A94ꕶ?V`T?A94`T?Vꕶ?A94`T?A94ꕶ?VꕶQ>^`T?V`TQ>^ꕶ?V`T?VꕶQ>^ꕶ->I94`TQ>^`T->I94ꕶQ>^`TQ>^ꕶ->I94ꕶ->`T->I94`T->ꕶ->I94`T->I94ꕶ->ꕶQ>*`T->`TQ>*ꕶ->`T->ꕶQ>*ꕶ->I94`T->`TQ>^`T->`TQ>*`TQ>^`TQ>^`TQ>*`T?V`TQ>*`T?*`T?V`T?V`T?*`T?A94`T?*`T?`T?A94`T?A94ꕶ?ꕶ?Vꕶ?ꕶ?*ꕶ?Vꕶ?Vꕶ?*ꕶQ>^ꕶ?*ꕶQ>*ꕶQ>^ꕶQ>^ꕶQ>*ꕶ->I94ꕶQ>*ꕶ->ꕶ->I94ꕶ?$`TQ>$`T?$ꕶQ>$`TQ>$ꕶ?$ꕶ?7!`T?$`T?7!ꕶ?$`T?$ꕶ?7!ꕶ?y`T?7!`T?yꕶ?7!`T?7!ꕶ?yꕶ?  `T?y`T?  ꕶ?y`T?yꕶ?  ꕶQ>  `T?  `TQ>  ꕶ?  `T?  ꕶQ>  ꕶ->z`TQ>  `T->zꕶQ>  `TQ>  ꕶ->zꕶ->8!`T->z`T->8!ꕶ->z`T->zꕶ->8!ꕶQ>$`T->8!`TQ>$ꕶ->8!`T->8!ꕶQ>$ꕶ->z`T->8!`TQ>  `T->8!`TQ>$`TQ>  `TQ>  `TQ>$`T?  `TQ>$`T?$`T?  `T?  `T?$`T?y`T?$`T?7!`T?y`T?yꕶ?7!ꕶ?  ꕶ?7!ꕶ?$ꕶ?  ꕶ?  ꕶ?$ꕶQ>  ꕶ?$ꕶQ>$ꕶQ>  ꕶQ>  ꕶQ>$ꕶ->zꕶQ>$ꕶ->8!ꕶ->zꕶ0zLp?0zap?XXʼ?6>pXXp?|#<=~)˼"6>apfdI:? #=(~?0zW;uQ=~?XXʼ?6>pKH;O0zWu?ףPI:?ף17ף17:?0zW;uףPIXXʼ?6p?KHO?Q~0zWu?fdI #(~|#<~?)˼"6ap?XXp?|#=~?XXʼ?6>p|#<=~KC;S|#<=~ףLp?0zap?XXʼ?6>pXXp?|#<=~)˼"6>apfdI:? #=(~?0zW;uQ=~?XXʼ?6>pKH;O0zWu?ףPI:?ף17ף17:?0zW;uףPIXXʼ?6p?KHO?Q~0zWu?fdI #(~|#<~?)˼"6ap?XXp?|#=~?)˼"6>ap|#<=~KC;S|#<=~ףXXʼp?H;KO?=Q~W;0zu?I7:e= #(~=|#<~?"6>)˼ap??6>XXXXʼp?=|#~"6>)-(XXʼp?=|#<~?C;KS?=|#<~?PI:ף<?C;KS?C;KS?PI:ף<?PIף?PI:ף<?CKXXXXʼp?H;KO?=Q~C;KS?I7:e=|#~=|#<~?"6>)˼ap??6>XXXXʼp?=|#~"6>)XXXXʼp?=|#<~?C;KS?= #<(~?PI:ף<?C;KS?C;KS?PI:ף<?PIף?PI:ף<?CKXX)˼ap?W;0zu?=|#~C;KS?I7:e=Q~=|#<~?"6>)˼ap??6>XXXXʼp?=|#~"6>)XXXXʼp?=|#<~??6>XX-(˼Lp?W;0zu?= #(~C;KS?I7:e=Q~=|#<~?"6>)˼ap??6>XXXXʼp?=|#~"6>)XXXXʼp?=|#<~?"6>)?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Y,#Aq>U_Y,#Aq>`識#Aq>U_Y,#Aq>`識#Aq>`識#Aq>U_J,A>U_Y,#Aq>U_識A>U_Y,#Aq>U_識#Aq>U_識A>U_J,A>`J,A>U_識A>`J,A>U_識A>U_識A>`Y,#Aq>`J,A>`識#Aq>`J,A>`識A>`識#Aq>`J,A>U_J,A>`Y,#Aq>U_J,A>`Y,#Aq>`Y,#Aq>U_識A>`識A>U_識#Aq>`識A>U_識#Aq>U_識#Aq>`>A>U_>A>`>A>U_>A>`>A>`>A>U_>$Aq>U_>A>U_>%Aq>U_>A>U_>A>U_>%Aq>U_>$Aq>`>$Aq>U_>%Aq>`>$Aq>U_>%Aq>U_>%Aq>`>A>`>$Aq>`>A>`>$Aq>`>%Aq>`>A>`>$Aq>U_>$Aq>`>A>U_>$Aq>`>A>`>A>U_>%Aq>`>%Aq>U_>A>`>%Aq>U_>A>U_>A>`@F~?*T=q^=Hy?`P>zнIy3aP>F=Iy?3aP>Fн@F~*T=q^ԽHy`P>z=Iy?3aPF=|E~?U=Gc=@F~*Tq^=@F~?*T=q^=Iy3aP>F=|E~UGc=@F~?*Tq^ԽHy?`Pz=Iy3aPFнIy?3aPF=@F~*Tq^=Hy`PzнIy?3aP>Fн|E~?UGcԽ@F~*T=q^Խ@F~?*Tq^ԽIy3aPFн|E~U=GcԽIy?3aPF=E~?T*^ԽE~?T=*^=E~?T*^ԽIy?3aP>FнE~?T=*^=Iy3aPFнE~T*^=E~T=*^ԽE~T*^=Iy3aP>F=E~T=*^Խ@F~*Tq^=Hy`PzнIy?3aPF=Iy3aPFн@F~?*Tq^ԽHy?`Pz=Iy3aP>F=|E~UGc=@F~?*T=q^=@F~*Tq^=Iy?3aPF=|E~?U=Gc=@F~*T=q^ԽHy`P>z=Iy?3aP>FнIy3aP>F=@F~?*T=q^=Hy?`P>zнIy3aPFн|E~U=GcԽ@F~?*Tq^Խ@F~*T=q^ԽIy?3aP>Fн|E~?UGcԽIy3aP>F=E~T=*^ԽE~T*^=E~T=*^ԽIy3aPFнE~T*^=Iy?3aP>FнE~?T=*^=E~?T*^ԽE~?T=*^=Iy?3aPF=E~?T*^Խ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGc;>?jd;>>jL>?jd;>>jL>>jL>?jYB>X9?>cBX9?>YB>X9?ZcBX9?>cBX9?ZYB>X9?Zi;?ޓh; >ޓL?ޓh; >ޓL >ޓL?ޓcBX9?ZcBX9?>5E#?>cBX9?Z5E#?>5E#?Z5E#?>G?>5E#?Z5E#?ZG?>G?ZG?>Ify?>G?ZG?ZIfy?>Ify?ZIfy?>mK?>Ify?ZIfy?ZmK?>mK?ZmK?>sLS?>mK?ZmK?ZsLS?>sLS?ZsLS?>L?>sLS?ZsLS?ZL?>L?ZYB>X9?>YB>X9?Z5E>#?ZYB>X9?>5E>#?Z5E>#?>5E>#?ZG>?Z5E>#?>5E>#?>G>?ZG>?>G>?ZI>fy?ZG>?>G>?>I>fy?ZI>fy?>I>fy?ZmK>?ZI>fy?>I>fy?>mK>?ZmK>?>mK>?ZusL>S?ZmK>?>mK>?>usL>S?ZusL>S?>usL>S?ZL>?ZusL>S?>usL>S?>L>?ZL>?>d;>>jc;>?jd;>>ޓc;>?jc;>?ޓd;>>ޓL >jh; >jL?jh; >ji;?jL?jh; >ޓi;?ޓh; >ji;?ޓi;?jh; >jL>>ޓd;>>ޓL>?ޓd;>>ޓc;>?ޓL>?ޓL?ZL?ji;?jc;>?jL>?jc;>?ޓL>?jL>?Zc;>?ޓi;?ޓL?ޓL?>L>?ޓc;>?ޓL>?>c;>?ޓL>?ZL>?>L>?>L>?ZL?>L>?ZL?ZL?>L?>L?Zi;?ޓL?Zi;?ji;?ޓL>?ޓL>?>L>?>L>?ZL>?jL>?ZL>?jL>>jL>?ZL>?ZL>>jL>?>L>>jL>>ޓL>?>L>?>L>>ޓL>?ޓL>>ޓL>>jd;>>ޓL>>jd;>>jd;>>ޓL?jL?ZL?ZL?>L?ޓL?>L?ޓL >ޓL?>L?>L >ޓL?ZL >ޓL >jL?ZL?ZL >jL?jL >jL >ޓh; >jL >ޓh; >ޓh; >j N/ݼj+\Ͼgf+>hfUZgf+>gf+ZhfUZ$&ޓ(\Ͼ$&ޓb ޓ(\Ͼ$&ޓ(\Ͼa ޓb ޓgf+Zgf+>P>gf+ZP>PZP>r>PZPZr>rZr>rl>rZrZrl>rlZrl>b >rlZrlZb >b Zb > >b Zb Z > Z > a > Z Z a > a ZhfU>hfUZPZhfU>PZP>PZnZP>P>nZn>nZsOZn>n>sOZsO>sOZZsO>sO>Z>Z9 Z>>9 Z9 >9 Z O Z9 >9 > O Z O >+\Ͼ O ޓ N/ݼޓ O > N/ݼޓ O Z O > O > O Zb > O Zb Zb >b >b Z$&ޓb Z$&j$&ޓ O ޓ O > O > O Z O j O Z O j*\ϾO j O Z O Z*\ϾO j O >*\ϾO j*\ϾO ޓ O > O >*\ϾO ޓ O ޓ*\ϾO ޓ*\ϾO j+\Ͼb ޓ a >b ޓ(\Ͼa ޓ a > a >(\Ͼa ޓ a Z(\Ͼa ޓ(\Ͼa j a Z a Z(\Ͼa jb j(\Ͼa j(\Ͼa ޓ(\Ͼ$&j(\Ͼa ޓ(\Ͼ$&ޓ(\Ͼ$&j ?$&j.\>$&j ?^ j.\>$&j.\>_ j ?^ jif?+>hf?K>if?+Zhf?K>hf?KZif?+Z ?.ݼޓ+\>.ݼޓ ?O ޓ+\>.ݼޓ,\>O ޓ ?O ޓhf?KZhf?K>P?>hf?KZP?>P?ZP?>?n>P?ZP?Z?n>?nZ?n>s?O>?nZ?nZs?O>s?OZs?O>?>s?OZs?OZ?>?Z?>?/ >?Z?Z?/ >?/ Z?/ > ?O >?/ Z?/ Z ?O > ?O Zif?+>if?+ZP?Zif?+>P?ZP?>P?Z?rZP?>P?>?rZ?r>?rZt?jZ?r>?r>t?jZt?j>t?jZ?b Zt?j>t?j>?b Z?b >?b Z? Z?b >?b >? Z? >? Z ?_ Z? >? > ?_ Z ?_ >.\>$&j ?$&j.\>$&ޓ ?$&j ?$&ޓ.\>$&ޓ,\>O j+\>.ݼj ?O j+\>.ݼj ?.ݼj ?O j+\>.ݼޓ ?.ݼޓ+\>.ݼj ?.ݼޓ ?.ݼj+\>.ݼj.\>_ ޓ.\>$&ޓ ?^ ޓ.\>$&ޓ ?$&ޓ ?^ ޓ ?O Z ?O j ?.ݼj ?$&j ?^ j ?$&ޓ ?^ j ?^ Z ?$&ޓ ?.ݼޓ ?O ޓ ?O > ?^ ޓ ?$&ޓ ?^ > ?$&ޓ ?^ Z ?^ > ?^ > ?^ Z ?O > ?^ Z ?O Z ?O > ?O > ?O Z ?.ݼޓ ?O Z ?.ݼj ?.ݼޓ ?^ ޓ ?^ > ?_ > ?^ Z ?^ j ?_ Z ?^ j.\>_ j ?_ Z ?_ Z.\>_ j ?_ >.\>_ j.\>_ ޓ ?_ > ?_ >.\>_ ޓ ?^ ޓ.\>_ ޓ.\>_ j.\>$&ޓ.\>_ j.\>$&j.\>$&ޓ ?O j ?O Z ?O Z ?O > ?O ޓ ?O > ?O ޓ,\>O ޓ ?O > ?O >,\>O ޓ ?O Z,\>O ޓ,\>O j ?O Z ?O Z,\>O j ?O j,\>O j,\>O ޓ+\>.ݼj,\>O ޓ+\>.ݼޓ+\>.ݼjWs?oN>[R? >B-tbZ>=>u >B-tbg/?|a?Z=>Huꃏu?iQ9Z7Zv?i8Z7ZviѸZ7Zv?:ꃏuiQZ7Zvz?gqW>$T?]1>ɺ {?-^;-:?8w1>Ⱥ {?,>Yn?-^;-:?:ꃏui8Z7Zv?kc= ɾFj?I:郏ua=3ɾ,Dj?Ym=%ľ#Ejs=ɾFj?NM>x^ž/f?=ľhDjYm=%ľ#Ej2iM>KRžFf?jo>^-f2iM>KRžFf?x>׽+G]?jo>^-fp2o>斻f߭>MٽI]?X̽>DI]x>׽+G]?s?gF?Mٽ>߭I]Mٽ>߭I](?5kF??㔾FV?_F?M?3b ??㔾F?㔾FM?3b ?NQ?97  M?yn ?9?zFP/D-bWs?oN>[R?fꢾgp?Ws?oN>[R?.睾ф>i?<:pep?a?N\C7?m.2?N\m>7?52?8w1>Ⱥ {?2?ZXW>)%T?r\2?ZXW>)%T?m>r\|I  &C{?颾gp?-^-:?颾gp?䝾ku>~i?-^-:?e>xy7?12?m5>Ws?oN>[R?"[*=>nuL蝾x>]i?FZ=>uHٿ ?l#W؝v>Ti?2?ZXW>)%T?+^;I:?0-:ڿ ?n#W?+^I:?(w>i?fT=>{?؝v>Ti?0-ڿ ?n#WGcT=>{?GcT=>{?Hٿ ?l#W0-:ڿ ?n#W?0-ڿ ?n#W3I:e>xyH:ٿ ?l#W?H:ٿ ?l#W?7:e>xy2?ZXW>)%T?7:e>xym5>2?ZXW>)%T?-^-:?:~7cT=>{?͚ĺj;0-ڿ ?n#W [4=>ňu9zFP/ [4=>ňug/?|a?9zFP/9zFP/g/?|a?͚ĺj;ߧ#0~a?I _ HB{?͚ĺj;͚ĺj;I D{?-^-:?|I  &C{?浪>;Nza?Gdp?9axa?>@-b颾gp?7?52?7:e>xy?͚ĺj0-:ڿ ?n#W?-^;-:?9?zFP/<+^;I:?$/>\n?9?zFP/<9?zFP/hfn??͚ĺj$/>\n?a??͚ĺj?͚ĺja?7?52?ʔa?1$/>\n?r\$/>\n?8w1>Ⱥ {?r\oNWs?[R?B-> >tb>=ZuB-> >tb/>g?|a?=ZHuꃏ>u?Z7>iQ9Zv?Z7>i8ZvZ7>iѸZv?ꃏ>:uZ7>iQZvgqWz?$T?ɺ=]1> {?--^;?Ⱥ=8w1> {?Y>,>n?--^;?ꃏ>:uZ7>iQ9Zv?>=Cj?郏>I:u3>a=,Dj?%>Ym=#Ej>s=Fj?NS> PM>uf?>=hDj>=hDjs]>*gM>f?^>jo>-fKR>2iM>Ff?>8ޭ>F]?>o>Vf斻>p2o>fMٽ>߭>I]?x>׽>+G]׽>x>+G]?5k>(?F?߭>Mٽ>I]8ޭ>>F]>]> ?F?>?F(\>?PF?yn> M? ?ה>?=F>?Fyn> M? ?9>NQ?7 yn> M? ?VȺ;/??P/<9>NQ?7 9>NQ?7 VȺ;/??P/<͚:?j냏>ѹu?~C>Ѹ!Yv >kcFjw>Ju?3>a,Dj%>Ym#Ej?>sFjKR>2iMFf>hDj?>hDj?s]>*gMf^>jo-f?KR>2iMFf>8ޭF]^>jo-f?>oVf?Mٽ>߭I]>X̽DI]?X̽>DI]5k>(F߭>MٽI]?x>׽+G]?5k>(F>F?_>VFyn> M ה>=F?ה>=F?yn> M 9>NQ7 ?Dp>WM1 VȺ;/?P/9>NQ7 ?9>NQ7 ?VȺ;/?P/͚:j;D->>boNWs?[R?>fꢾgp?oNWs?[R?ф.睾i?:>a??N\m.2C7??N\m527?Ⱥ=8w1> {?ZXW2?)%T??r\ZXW2?)%T?m?r\ >|I &C{?>颾gp?--^?>颾gp?ku䝾~i?--^?exy127?5moNWs?[R?*="[nuxL蝾]i?=FZuٿ Hl#Wv؝Ti?ZXW2?)%T?I+^;?ڿ 0-:n#W?I+^?w(i?fT={?v؝Ti?ڿ 0-n#WcT=G{?cT=G{?ٿ Hl#Wڿ 0-:n#W?ڿ 0-n#We3I:xyٿ H:l#W?ڿ :n#W?e7:xyZXW2?)%T?e7:xy5mZXW2?)%T?--^?cT=:~7{?͚:j;ڿ 0-n#W4= [ňuz;9FP/4= [ňu/>g?|a?z;9FP/z;9FP//>g?|a?͚:j;#>ߧ0~a?_ >I HB{?͚:j;՚:8;g>c C{?--^? >|I &C{?>;>浪Nza?>Gdp?9>axa?@->>b>颾gp?527?e7:xy͚:?jڿ 0-:n#W?--^;?z;9?FP/<IǶQ;?YZ>>Xn?m;'?0L.>fn?͚:?j\>$/>n?>a?͚:?jƚ:?<ƺ>a?2Q527?ѸѸ1>ʔa?\>$/>n??r\\>$/>n?Ⱥ=8w1> {??r\oN>Ws[R?B- ܾtb>=>Z>uB- ܾtb/g>?|a?=>Z>Huꃏ:u?Z7iQZv?Z7iѸZvZ7i8Zv?ꃏuZ7iQ9ZvgqW>z$T?ɺ]1 {?-:-^?Ⱥ8w1 {?Y,n?-:-^?냏ѹu~CѸ!Yv? ɾkcFj?wJu3ɾa,Dj?%ľYm#EjɾsFj?KRž2iMFf?ľhDjľhDjs]ž*gMf?^jo-fKRž2iMFf?佾8ޭF]?oVfoVfMٽ߭I]?X̽DI]׽x뭾+G]?5k(F?߭MٽI]8ޭ佾F]>] F?F_VF?yn M ?ה=Fה=Fyn M ?9NQ7 DpWM1 ?VȺ/?P/<9NQ7 9NQ7 VȺ/?P/<͚ĺjꃏ:u?Z7i8Zv3ɾa=,Dj郏I:u?3ɾa=,Dj%ľYm=#Ej?ɾs=FjNSž PM>ufľ=hDj?ľ=hDj?s]ž*gM>f^jo>-f?KRž2iM>FfڽFԭ>K]o>Vf?斻p2o>f?Mٽ߭>I]x뭾׽>+G]?Mٽ߭>I]gs?F߭Mٽ>I]?8ޭ>F]?>] ?F┾P?4F?(\?PFyn M? ה?=F?ה?=F?yn M? ^99Q? ?DpWM?1 VȺ/??P/9NQ?7 ?9NQ?7 ?VȺ/??P/͚ĺ?j;D-ܾboN>Ws[R?f>gp?oN>Ws[R?ф>.>i?:<>pep?򾄗aN\?m.2?C7N\?>m?52?7Ⱥ8w1 {?ZXW>2)%T?r\?ZXW>2)%T?>m?r\? |I >&C{?>gp?-:-^;?>gp?ku>>~i?-:-^;?e>xy12?75>m?oN>Ws[R?*=>"[>nux>L>]i?=>FZ>uٿ ?H:l#Wv>؝>Ti?ZXW>2)%T?I:+^?ڿ ?0-n#W?I:+^;?w>(>i?fT=>{?v>؝>Ti?ڿ ?0-:n#WcT=>G:{?cT=>G:{?ٿ ?H:l#Wڿ ?0-n#W?ڿ ?0-:n#We>3Ixyٿ ?Hl#W?ٿ ?Hl#W?e>7xyZXW>2)%T?e>7xy5>m?ZXW>2)%T?-:-^;?cT=>:~7:{?͚ĺ?j;ڿ ?0-:n#W4=> [>ňuz9?FP/ =>;[>u4-薪>a?\?z ,z9?FP//g>?|a?͚ĺ?j;#ߧ>0~a?_ I >HB{?͚ĺ?j;ۚĺ?;gc > C{?-:_e;? |I >&C{?>;浪>Nza?>Gdp?9>axa?@-ܾb>gp?52?7e>7xy͚ĺjڿ ?0-n#W?-:-^?z9FP/<I:+^?[k;jn?z9FP/?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?/=U>S,=/>SE;T>S,=/>S;/>SE;T>S/=U>Hk/=U>SE;T>Hk/=U>SE;T>SE;T>Hk/=)>(m/=U>HkA;)>(m/=U>HkE;T>HkA;)>(m/=)>(mA;)>(m@;>m/=)>(m@;>m/=>m@;>m@;Ӹ>Lm/=>m/=>m@;Ӹ>Lm/=Ӹ>Lm@;Ӹ>Lm@;2>cl/=Ӹ>Lm/=Ӹ>Lm@;2>cl/=2>cl@;2>cl@;/+>P]k/=2>cl/=2>cl@;/+>P]k/=/+>P]k@;/+>P]k@;>{j/=/+>P]k/=/+>P]k@;>{j/=>{j/=>re/=>{jB;>re/=>{j@;>{jB;>re/=>85^/=>reB;>85^/=>reB;>reB;>85^/=j>85^/=>85^=;j>85^/=>85^B;>85^=;j>85^/=^">Zd/=j>85^<;]">Zd/=j>85^=;j>85^<;]">Zd.=]>Zd/=^">Zd);]>Zd/=^">Zd<;]">Zd);]>Zd-=d>85^.=]>Zd';d>85^.=]>Zd);]>Zd';d>85^-={>85^-=d>85^;{>85^-=d>85^';d>85^;{>85^-={>`m-={>85^;{>`m-={>85^;{>85^;{>`m-=c>`m-={>`m;c>`m-={>`m;{>`m;c>`m-=c>85^-=c>`m;c>85^-=c>`m;c>`m;c>85^,=/>85^-=c>85^;/>85^-=c>85^;c>85^;/>85^,=/>S,=/>85^;/>S,=/>85^;/>85^;/>S-=d>85^-={>85^,=/>S/=)>(m/=>{j/=U>Hk/=>{j/=>re/=U>Hk/=U>Hk/=>re/=U>S/=>re/=>85^/=U>S/=U>S/=>85^/=j>85^,=/>85^,=/>S-=c>85^,=/>S-={>85^-=c>85^-=c>85^-={>85^-=c>`m-={>85^-={>`m-=c>`m/=2>cl/=/+>P]k/=Ӹ>Lm/=/+>P]k/=>{j/=Ӹ>Lm/=Ӹ>Lm/=>{j/=>m/=>{j/=)>(m/=>m/=^">Zd.=]>Zd/=j>85^.=]>Zd-=d>85^/=j>85^/=j>85^-=d>85^/=U>S-=d>85^,=/>S/=U>S@;Ӹ>Lm@;>mA;)>(m;/>S;/>85^E;T>S;/>85^;c>85^E;T>S;c>`m;{>`m;c>85^;{>`m;{>85^;c>85^;c>85^;{>85^E;T>S;{>85^';d>85^E;T>S@;>{j@;/+>P]k@;2>cl@;2>cl@;Ӹ>Lm@;>{j@;Ӹ>LmA;)>(m@;>{j@;>{jA;)>(mB;>reA;)>(mE;T>HkB;>reB;>reE;T>HkB;>85^E;T>HkE;T>SB;>85^B;>85^E;T>S=;j>85^E;T>S';d>85^=;j>85^=;j>85^';d>85^<;]">Zd';d>85^);]>Zd<;]">Zd.R>HPn?=} =!~?PQc}?=} =!~?! >,{?PQc}?x=x;+R>_n?ý vR>_n?b}?ý v,=w>}9=6x;+v (|9=6x;+ýڒvv (|,=iZ?}v (| %x>Qx-,= ^?} %x>Qx+<>EiC y>QPx\{򼡾.? :+<>Ei+<>Ei\{򼡾.? :ё<5L?P{e.?:Us?dБ ;v}? ;v}?9 V;{?D>1;o?H׶>9 V;{?D>8>?jX*?ܖ;]o?>ܖ;]o?>?$9>?8X*?f=6?0?(Mf>;q?$y>E=6?0?[?L>E=6?0?!9A>?[*?[?L>9=B>aJu(Mf>;q?$y>9?Ŕ#(Mf>;q?$y>[?L>9?Ŕ#?9赾9=i=>Ju\⾒~.pa=>LuC9?ލ#[.oa=cH?ܵϳ98 l+ zs?뵾9g⾗|. na8 l+ z >h+> z=I`I=`=I` h+ zI=`N?V+=6fS8 >l+> z_>{ R8 >l+> zcH=_>{ R>Q@oN?V+=6fSw=B-oN?V+=6fS q> Rw=B-ok=n6>-N@`tPP+ 6>-N@`t=|,o|PP |P>P? k=ns4<>ns4=<n|PP k>nJ>?O+D|P>P? d?P>P?+ k>nd?d=ٝd?ٝ3'> ?('D'>@-3'> ?('Dɒd?'>@-=~ =~?d=ٝd?ٝ侺! >,{?d=ٝd?ٝW'>-] >a{?I?.=7iSb>kO@n߭= =t~?,=w>}f=6?0?9=6x;+v=h6?F0?df>Vq?;y>9=6x;+x=x;+ ff>׈q?@#y>R>TDtn? ff>׈q?@#y>g=ˊ>AIuR>_n?R>_n?l="ϊ>Hu?ߵ9d=-d?'=b =~?P$>?)D=~ =~?>L@(s3'> ?('Dz&>^?,Db>kO@n{P>+P?_ 6>FR@kk=n|P>P? ;v}?1;o?H׶>dБf=6?0?ё<5L?P_ӑ<8L?Lf=6?0?+<>EiX=6?0?r,=w>}"<ٜ>i=cH >h+> z_?굾9W >+>N zSJ?)=iS_?굾9?k;9I?.=7iS4R>Sǧn?I?.=7iS'=b =~?R>_n?{ݷ.?s:C y>QPxv (| >ծ{?W'>-PQc}?W'>-d? m}?k>n|PP md?{P+P_ =c+od?d?=c+oPQc}?={*o_>{ RPQc}?8>?jX*? <{?JD>Us?Us?\{򼡾.? :8>?Q_*?{e.?:v (|t8z>?\*?8>?Q_*?v (|e[?>v#(|ý ve[?>ý vu͆ 9?Ì#ý vPQc}?u͆ 9?Ì#φ_ 9?ʏ# m}?\⾒~.pa m}?_>{ R\⾒~.pa\⾒~.pa_>{ RW +N z_>{ RcH= h+ z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~e=c}>*Ge=.}>PF8`e=c}>*Ge=.}>PF8`e=/}>PF8`e=c}>*Ge=>*Ge=c}>*G=`e=>*Ge=c}>*G8`e=c}>*G=`e=>*Ge=>PFe=>*G=`e=>PFe=>*G=`e=>*G=`e=>PFe=>0e=>PF=`e=>0e=>PF=`e=>PF=`e=>0e=>`e=>0=`e=>`e=>0=`e=>0=`e=>`e=c}>`e=>`8`e=c}>`e=>`=`e=>`8`e=c}>`e=.}>0e=c}>`8`e=/}>0e=c}>`8`e=c}>`8`e=/}>0e=.}>PFe=.}>08`e=/}>PFe=.}>08`e=/}>08`e=/}>PFe=c}>*Ge=>*Ge=.}>PFe=>*Ge=>PFe=.}>PFe=.}>PFe=>PFe=.}>0e=>PFe=>0e=.}>0e=.}>0e=>0e=c}>`e=>0e=>`e=c}>`=`e=>*G8`e=c}>*G8`e=/}>PF=`e=>*G8`e=/}>PF=`e=>PF8`e=/}>PF8`e=/}>0=`e=>PF=`e=>PF8`e=/}>0=`e=>08`e=/}>08`e=c}>`=`e=>0=`e=>08`e=c}>`=`e=>`Cػc:ފ{A>>8kDX<ף;y܊{A>>o?>zV<ף;FؼأWCػc:{EXHGؼJgO~?yVku׼鑠Yk:{[>H o?J9{[>~?oBo?:CػkH?܊{A>:DX<ףy?܊{A>:o?:V>H9Fؼ͑;_?O~?yV=:du׼أ;?Y<;e:&?~?o=i9{[>>k{[>>H9 o?>J{[>>~?o=B:o?>Cػc:du׼أފ{A>>8kdu׼أ{A>pQފ{A>>8kފ{A>>8k{A>pQ{A>>pQ9{A>pQފ{A>8k:{A>>pQ9{A>>pQ9ފ{A>8k:du׼أ;?܊{A>:Cػc?du׼أ;?}EXʵѹ}EXʵѹ~?oBo?߆>ʵѹ~?o=B:~?oB~?oB~?o=B:o?߆ʵ9~?o=B:}EX?@ABCDEFGHIJKLMNOPQRS+<%`l9+<6}9+<6 9+<6}9+<cx:+<6 9+<6 9+<cx:+jsyb?50s>0Wps ?{py b?!vyb?L0Wps ?sykŭs@0$Eb?0]ַy?Hpy̙>ŭs4ry>s0]ַy?qqy+2=G0\7y?0=2='?qy2=Gqy2=G0=2='?vry1\y0=2='?0>s?oy0\|yoy0\|y40>s?ry2b0>s?0k ?ĴW?ry2bry2b0k ?ĴW?wsy,q<0x ?W?0GryyWX GryyWX &d^?>4rys$d^?t>aɽjv?|>tys򴙾4rysuɽ v?|>)qy[Gf3uɽ v?|>CQ?Ѹ)qy[Gf3oqyG*2CQ?8uy}|y\>CQ?KϽv?{{ty{y\>ty{y\>ϽRv?ab{1syb>mϽOv?9{g(Y?*1syb>1syb>Y?5#wsyq<,?g(Y?*`0,?<(oyn<6,?wsyq<,?R0,?Zbqy%D ZW?qy%D ZW?S0>Zb4rys?S0>Zb'0(J]>y4rys?4rys?'0(J]>yqqy+2G?"0*1]>#y03qy2G?qy2G?03vry1\>y?03A0,百sqy2\>3~y?oy0\>|y?0@ۙs1sy>b?40s0ps W1sy>b?Apy>Jb?0ps WsyЋ,?3xi0b '0y(J]tys?>4rys?>"0#y*1])qy[G?f3="0#y*1]0ރg3=)qy[G?f3=)qy[G?f3=0ރg3=oy|y?/\03=0 s>-syyy?]~㿽)Ǚĺ?]<}?lֽ `eg~Iuzi/<}?I׼z~t<]<}?]<}?~t<~㿽cG,?T;? =;.?I>׼z? =;.?; ? =;.? >;?; ?; ? >;?; ? >;? >;?; ?sf=y0]_?3>>D> v?y>e=;yI]E>v?y>jsy=b뾴E>v?y>2=8CZ?l?{py= b!vy=bLF=!FZ?h?-R?è~?=>Z?t?`0=,?Eb?:ty=_ tWny=\ vW@0=$>Eb?Hpy=̙ŭs@0=$>Eb?0=]>ַy?Hpy=̙ŭs4ry=s0=]>ַy??}~E?0=\>7y?0==2'???9??0==2'?vry=1\>y0==2'?0=s?oy=0\>|yoy=0\>|y40=s?ry=>2b0=s?0=k ĴW?ry=>2bry=>2b0=k ĴW?>Kcud0=x W?0=<,?>Kcud>KcudS0=<,?Gry=yW?X S0=<,?S0=Zb>Gry=yW?X Gry=yW?X <0=bg>4ry=s?S0=Zb>"0=#y*1]>ty=s?򴙾4ry=s?"0=#y*1]>I?׾ ."0=#y*1]>0=ރg3I?H׾0I?H׾00=ރg3uy=}|y?\>0=ރg3A0=s,百ty={y?\>ty={y?\>A0=s,百1sy=b?>A0=s,百0=Wx 1sy=b?>1sy=b?>0=Wps >=l0=W `0=,<>G=l>G=lR0=,s?S0=Zb'0=(J]y4ry=>s?4ry=>s?'0=(J]y ?9z?ט"0=*1]#y0=3= ??"?l~?0=3=vry=1\y?0=3=A0=,>sqy=2\3~y?oy=0\|y?0=@ۙ>s1sy=b?40=>s0=ps ?W1sy=b?Apy=Jb?0=ps ?W{>jc?=0=x ?W0=^Iic?=Y{>jc?=0= `=G_?=Rv?ab{ty=s>4ry=s>m=Ov?9{_?>w>=v?I{?w=g?8_?>w>_?>w>?w=g?E>v?y>aɽjv?|>$d^?t>mD;?OѸ; ?x=EZ?g?h,:r?bf>v=CZ?l?E>v?y>h,:r?bf>h,:r?bf>E>v?y>q:}?'>E>v?y>?w=g?:f}?a>=Rv?ab{0:i}?b?w=g?:k}?cd:?w=g??w=g?d:0:i}?b>d8Y;&Y? &,Pn?JY? &ϽRv?ab{t/mn?ƆdѸY;& ѸKI `=G_?-,:Pn?J!u`=G_?,!u`=G_?,t/:mn?Ɔ}=v?a{,:Pn?Jf.:qz?ɣR}=v?a{=Rv?ab{f.:qz?ɣR:k}?cI:?/X}?YϽRv?ab{q޺}?'f.qz?ɣRϽRv?ab{}нv?a{f.qz?ɣR,Pn?J >;?Iy?]>aɽjv?|>Iy?]>Ѻ}?(>aɽjv?|>aɽjv?|>0޺i}?b>I:?Ѻk}?c>dCQ?CQ?d0޺i}?bdѸY;&!u`=G_?,Y? &!u`=G_?,0=Zb0=ps ?W40=>sS0>ZbS0>Zb40=>s'0(J]>yA0=,>si[1=g3="0*1]>#y"0*1]>#yi[1=g3=0g3ރ0=g3=ރ"0=*1]#yi[1g3i[1g3"0=*1]#yA0,百s'0=(J]yS0=Zb40s40sS0=Zb0ps WS0=Zb`0=,<0x W0x W`0=,<0^0ރg3=0ރg3="0=#y*1]>A0s,>'0=y(J]>S0=Zb>\1@s>\1@s>Z1=b>*0ͱWyp ?S0=Zb>S0=<,?0Wps ?0Wps ?X1=iy?0=2='?0=2='?0=]>ַy?40>s?"0=*1]>#y?@0=$>Eb?0>s?0>s?@0=$>Eb?0k ?ĴW?)0=/>b?[1=,?v=CZ?l?O8; ?$d^?t>$d^?t>O8; ? >;?C,?V< W=S0= ;n?I>uz?I>׼z?~?tC,?T<W=~?t~?㿽 _?[>>)qy[Gf3 _?[>>e=;yI]yFf3)qy[Gf3e=;yI]tys򴙾e=;yI]{py= b4rys4rys{py= b뾴uy|WfS {py= bR?:}?GryyWX GryyWX KR? z?(oy6,n<R?’j?:ty=_ tW(oy6,n<(oy6,n<:ty=_ tWry2bHry=X yWHpy=̙ŭsry2bry2bHpy=̙ŭsqy2\3~y4ry=s?}~E?qy2\3~yqy2\3~y?^?qy2=G?l~?qy=2\>3~yqqy+2=Gqqy+2=Gqy=2\>3~y4ry>sqy=2\>3~yry=>2bHpy̙>ŭsHpy̙>ŭsry=>2bHryX ?yWry=>2b>Kcud:ty_ ?tW:ty_ ?tWX>'JcgAtyoeKcGry=yW?X syk)qy[G?f3=)qy[G?f3=uy=}|y?\>4rys?>ty={y?\>1sy=b?>4rys?>4rys?>1sy=b?>sy{W?K ?Apy=Jb?>f>X=lsy{W?K ?sy{W?K ?<>=#!lsyЋ,?3xE= lqy=%D ?ZW?syЋ,?3xb?qy=%D ?ZW?Hpy=̙>ŭs?1sy>b?1sy>b?Hpy=̙>ŭs?qy2\>3~y?4ry=>s??}~?Eqy2\>3~y?qy2\>3~y??x?\qy2G??l~?qy=2\3~y?qqy+2G?qqy+2G?qy=2\3~y?4rys?qy=2\3~y?1sy=b?Hpy̙ŭs?Hpy̙ŭs?1sy=b?qy%D ZW?1sy=b?{>jc?=qy%D ZW?qy%D ZW?>zic?=(oyn<6,?>Iic?=sy={WK ?wsyq<,?wsyq<,?sy={WK ?ApyJb>sy={WK ?4ry=s>1syb>1syb>4ry=s>ty{y\>4ry=s>_?>{>uy}|y\>lֽ `eg~]<}?C,?V< W=]<}? =;.?C,?V< W=; ?Q`z#NӠI>:uUz?Q`z#N~?hKI>uz?`z#NG:~&@Ͻ~?㿽}G~)@Ͻd:~?㿽~?hKKI:~?㿽<-_<ĺ`z#N>_<ĺ~?㿽Q`z#N>~?㿽}G; ?h,:r?bf>ѸzE0:i}?b>QzEG:~ tϽG:~&@Ͻ:}?>d:q:}?'>d: Ѹd:d:d::۰~Z=d::k}?ck:4~? =Nk:~t=:}?(QzE:}?(f.:qz?ɣRѸ`z#N>Q`z#N>f.:qz?ɣRdf.:qz?ɣR,:Pn?J-KIt/:mn?Ɔ-Y;&Q9`z#N>ӠI:uUz}J9_z#N>~t]H8~B =~hK<:~D =d~t<~hK;?_ĺ?`z#N_ĺ?~㿽Q9`z#NQ9`z#N~㿽}Gk~#@Ͻ~㿽dk~#@Ͻ֣;.t/mn?ƆY;&b-n?vf.qz?ɣR֣;.֣;.f.qz?ɣRQ9`z#N>(/Çz?Rq޺}?'8zE >;?7;?4y?.]> >;?Q9zE4y?.]>8`z#NѺk}?c>Q9zEѺk}?c>2~= Ͻd ѸI~!@Ͻdddd0޺i}?bd 8]H8~B =޺}?q޺}?'G~ t=8`z#N>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;ؘj H]=j(]=j( ) > H ) >jH ) > H"> @˽ ) >jH ) >jH"> @˽">j@˽"> @˽j 4> p]">j@˽">j@˽j 4> p]j 4>jp]j 4> p]7=> j 4>jp]j 4>jp]7=> 7=>j7=> ?> <7=>j7=>j?> j <9> `@=?>jj<9> `@=9>j`@=9> `@=`,> =9>j`@=9>j`@=`,> =`,>j=`,> =;> =`,>j=`,>j=;> =;>j =;> = = >;>j =;>j = = > =j> = >'[=!'> =j> =j>'[=!'>'[=j'>'[=!'>>e=!17>'[=j'>'[=j'>>e=!17>?e=j17>>e=!17>e?e=j17>?e=j17>e eed!?> e ed!?>dj?>d!?>"e!17>dj?>dj?>"e!17>!ej17>"e!17>[!'>!ej17>!ej17>[!'>[j'>[!'> ">[j'>[j'> "> j> ">3" = j> j>3" =3j =3" =`,"=3j =3j =`,"=`,j=`,"=9"`@=`,j=`,j=9"`@=9j`@=9"`@=?"<9j`@=9j`@=?"j?>j<:&>jj<9>j`@=:&>j<:&>j<9>j`@={>jey=9>j`@=`,>j={>jey={>jey=`,>j=1l >j=`,>j=;>j =1l >j=1l >j=;>j ==jЕ=;>j = =j>=jЕ==jЕ= =j>*=jV> =j>'[=j'>*=jV>*=jV>'[=j'>$W=j`>'[=j'>?e=j17>$W=j`>$W=j`>?e=j17>/?e=j17> e// e󲑼ju'> edj?>󲑼ju'>󲑼ju'>dj?>$Wj`>dj?>!ej17>$Wj`>$Wj`>!ej17>jV>!ej17>[j'>jV>jV>[j'>罁jЕ=[j'> j>罁jЕ=罁jЕ= j>)l j= j>3j =)l j=)l j=3j ={jey=3j =`,j={jey={jey=`,j=:&j<`,j=9j`@=:&j<9j`@=?j<:&j<:&jjڽ]=j( ) >jH~b>jڽ~b>jڽ ) >jHo>jΝ ) >jH">j@˽o>jΝo>jΝ">j@˽N">jB4">j@˽j 4>jp]N">jB4N">jB4j 4>jp]v3(>jj 4>jp]7=>jv3(>jv3(>j7=>j?>j<\%x$n3jr($~t3%r(n3jr(z=jx$$~t3%r($~t3%r(z=jx$z=%x$z=jx$u=jz=%x$z=%x$u=ju=%u=j=ju=%u=%=j=$=j~b>jڽ=$=$~b>jڽ~b>$ڽ~b>jڽo>jΝ~b>$ڽ~b>$ڽo>jΝo>$Νo>jΝN">jB4o>$Νo>$ΝN">jB4N">$B4N">jB4v3(>jN">$B4N">$B4v3(>jv3(>$v3(>j:&>j$v3(>$:&>j<:&>$<:&>j<{>jey=:&>$<:&>$<{>jey={>$ey={>jey=1l >j={>$ey={>$ey=1l >j=1l >$=1l >j==jЕ=1l >$=1l >$==jЕ==$Е==jЕ=*=jV>=$Е==$Е=*=jV>+=%V>*=jV>$W=j`>+=%V>+=%V>$W=j`>$W=%`>$W=j`>/$W=%`>$W=%`>/0<%u'>/󲑼ju'>0<%u'>0<%u'>󲑼ju'>򲑼%u'>󲑼ju'>$Wj`>򲑼%u'>򲑼%u'>$Wj`>$W%`>$Wj`>jV>$W%`>$W%`>jV>%V>jV>罁jЕ=%V>%V>罁jЕ=߮&Е=罁jЕ=)l j=߮&Е=߮&Е=)l j=)l &=)l j={jey=)l &=)l &={jey={&ey={jey=:&j<{&ey={&ey=:&j<:&&<:&jK ¾=J ¾Ȕ>%V>%V>J ¾Ȕ>$W%`>J ¾Ȕ>TJ ¾>$W%`>$W%`>TJ ¾>򲑼%u'>TJ ¾>v폼J ¾l%>򲑼%u'>򲑼%u'>v폼J ¾l%>0<%u'>v폼J ¾l%>0<%u'>0<%u'>$W=%`>T=J ¾>$W=%`>$W=%`>T=J ¾>+=%V>T=J ¾>=J ¾Ȕ>+=%V>+=%V>=J ¾Ȕ>=$Е==J ¾Ȕ>=I ¾==$Е==$Е==I ¾=1l >$==I ¾=? >I ¾`ú=1l >$=1l >$=? >I ¾`ú={>$ey=? >I ¾`ú=>I ¾@]v={>$ey={>$ey=>I ¾@]v=:&>$<>I ¾@]v=@5$>I ¾]<:&>$<:&>$<@5$>I ¾]$@5$>I ¾]<'&>I ¾#v3(>$v3(>$'&>I ¾#N">$B4'&>I ¾#U >I ¾2N">$B4N">$B4U >I ¾2o>$ΝU >I ¾28>I ¾⛽o>$Νo>$Ν8>I ¾⛽~b>$ڽ8>I ¾⛽ͥ=I ¾0s׽~b>$ڽ~b>$ڽͥ=I ¾0s׽=$ͥ=I ¾0s׽f=J ¾@x=$=$f=J ¾@xu=%f=J ¾@x>=J ¾8u=%u=%>=J ¾8z=%x$>=J ¾8=J ¾p"z=%x$z=%x$=J ¾p"$~t3%r(=J ¾p"/u3J ¾`f&$~t3%r($~t3%r(/u3J ¾`f&\%x$/u3J ¾`f&J ¾p"\%x$=J ¾Ȕ>T=J ¾>; =J ¾H>>T=J ¾>; =J ¾H>>; =J ¾H>>;u3J ¾ />v폼J ¾l%>;u3J ¾ />;u3J ¾ />v폼J ¾l%> J ¾H>>v폼J ¾l%>TJ ¾> J ¾H>> J ¾H>>TJ ¾>)fJ ¾8 >TJ ¾>J ¾Ȕ>)fJ ¾8 >)fJ ¾8 >J ¾Ȕ>QĽJ ¾p=J ¾Ȕ>K ¾=QĽJ ¾p=QĽJ ¾p=K ¾=_K ¾p=K ¾=7 K ¾`ú=_K ¾p=_K ¾p=7 K ¾`ú=+ K ¾@f=7 K ¾`ú=K ¾@]v=+ K ¾@f=+ K ¾@f=K ¾@]v=7>K ¾` =K ¾@]v=85$K ¾]<7>K ¾` =7>K ¾` =85$K ¾]</K ¾485$K ¾]<'&K ¾#/K ¾4/K ¾4'&K ¾#7>K ¾ '&K ¾#U K ¾27>K ¾ 7>K ¾ U K ¾2+ K ¾ fU K ¾20K ¾⛽+ K ¾ f+ K ¾ f0K ¾⛽_K ¾PĽ0K ¾⛽K ¾0s׽_K ¾PĽ_K ¾PĽK ¾0s׽QĽJ ¾PK ¾0s׽fɽJ ¾@xQĽJ ¾PQĽJ ¾PfɽJ ¾@x)fJ ¾( fɽJ ¾@x.J ¾8)fJ ¾( )fJ ¾( .J ¾8 J ¾8>.J ¾8J ¾p" J ¾8> J ¾8>J ¾p"/u3J ¾/J ¾p"/u3J ¾`f&/u3J ¾//u3J ¾//u3J ¾`f&; =J ¾8>/u3J ¾`f&=J ¾p"; =J ¾8>; =J ¾8>=J ¾p"9f=J ¾( =J ¾p">=J ¾89f=J ¾( 9f=J ¾( >=J ¾8a=J ¾P>=J ¾8f=J ¾@xa=J ¾Pa=J ¾Pf=J ¾@xo=I ¾PĽf=J ¾@xͥ=I ¾0s׽o=I ¾PĽo=I ¾PĽͥ=I ¾0s׽3 >I ¾ fͥ=I ¾0s׽8>I ¾⛽3 >I ¾ f3 >I ¾ f8>I ¾⛽?>>I ¾ 8>I ¾⛽U >I ¾2?>>I ¾ ?>>I ¾ U >I ¾2/>I ¾4U >I ¾2'&>I ¾#/>I ¾4/>I ¾4'&>I ¾#?>>I ¾` ='&>I ¾#@5$>I ¾]>I ¾` =?>>I ¾` =@5$>I ¾]<3 >I ¾@f=@5$>I ¾]<>I ¾@]v=3 >I ¾@f=3 >I ¾@f=>I ¾@]v=o=I ¾p=>I ¾@]v=? >I ¾`ú=o=I ¾p=o=I ¾p=? >I ¾`ú=a=J ¾p=? >I ¾`ú==I ¾=a=J ¾p=a=J ¾p==I ¾=9f=J ¾8 >=I ¾==J ¾Ȕ>9f=J ¾8 >9f=J ¾8 >=J ¾Ȕ>; =J ¾H>>; =J ¾8>Ub3!//u3J ¾/Ub3!/ !8>/u3J ¾//u3J ¾/ !8> J ¾8> !8>*f!(  J ¾8> J ¾8>*f!( )fJ ¾( *f!( RĽ!P)fJ ¾( )fJ ¾( RĽ!PQĽJ ¾PRĽ!P`"PĽQĽJ ¾PQĽJ ¾P`"PĽ_K ¾PĽ`"PĽ+ " f_K ¾PĽ_K ¾PĽ+ " f+ K ¾ f+ " f7>" + K ¾ f+ K ¾ f7>" 7>K ¾ 7>" /"47>K ¾ 7>K ¾ /"4/K ¾4/"47>"` =/K ¾4/K ¾47>"` =7>K ¾` =7>"` =+ "@f=7>K ¾` =7>K ¾` =+ "@f=+ K ¾@f=+ "@f=`"p=+ K ¾@f=+ K ¾@f=`"p=_K ¾p=`"p=RĽ!p=_K ¾p=_K ¾p=RĽ!p=QĽJ ¾p=RĽ!p=*f!8 >QĽJ ¾p=QĽJ ¾p=*f!8 >)fJ ¾8 >*f!8 > !H>>)fJ ¾8 >)fJ ¾8 > !H>> J ¾H>> !H>>Ub3! /> J ¾H>> J ¾H>>Ub3! />;u3J ¾ />Ub3! />: =!H>>;u3J ¾ />;u3J ¾ />: =!H>>; =J ¾H>>: =!H>>8f=!8 >; =J ¾H>>; =J ¾H>>8f=!8 >9f=J ¾8 >8f=!8 >`=!p=9f=J ¾8 >9f=J ¾8 >`=!p=a=J ¾p=`=!p=n= p=a=J ¾p=a=J ¾p=n= p=o=I ¾p=n= p=3 > @f=o=I ¾p=o=I ¾p=3 > @f=3 >I ¾@f=3 > @f=?>> ` =3 >I ¾@f=3 >I ¾@f=?>> ` =?>>I ¾` =?>> ` =/> 4?>>I ¾` =?>>I ¾` =/> 4/>I ¾4/> 4?>> />I ¾4/>I ¾4?>> ?>>I ¾ ?>> 3 > f?>>I ¾ ?>>I ¾ 3 > f3 >I ¾ f3 > fn= PĽ3 >I ¾ f3 >I ¾ fn= PĽo=I ¾PĽn= PĽ`=!Po=I ¾PĽo=I ¾PĽ`=!Pa=J ¾P`=!P8f=!( a=J ¾Pa=J ¾P8f=!( 9f=J ¾( 8f=!( : =!8>9f=J ¾( 9f=J ¾( : =!8>; =J ¾8>: =!8>Ub3!/; =J ¾8> !H>>d!?>Ub3! />d!?>eUb3! />Ub3! />e: =!H>>e>e=!17>: =!H>>: =!H>>>e=!17>8f=!8 >>e=!17>'[=!'>8f=!8 >8f=!8 >'[=!'>`=!p='[=!'> = >`=!p=`=!p= = >n= p= = >;> =n= p=n= p=;> =3 > @f=;> =`,> =3 > @f=3 > @f=`,> =?>> ` =`,> =9> `@=?>> ` =?>> ` =9> `@=/> 49> `@=?> </> 4/> 4?> > ?> <7=> ?>> ?>> 7=> 3 > f`"PĽ""@˽+ " f""@˽b 4"p]+ " f+ " fb 4"p]7>" b 4"p]/="7>" 7>" /="/"4/="?"</"4/"4?"<7>"` =?"<9"`@=7>"` =7>"` =9"`@=+ "@f=9"`@=`,"=+ "@f=+ "@f=`,"=`"p=`,"=3" =`"p=`"p=3" =RĽ!p=3" = ">RĽ!p=RĽ!p= ">*f!8 > ">[!'>*f!8 >*f!8 >[!'> !H>>[!'>"e!17> !H>> !H>>"e!17>d!?>7=> j 4> p]3 > fj 4> p]"> @˽3 > f3 > f"> @˽n= PĽ"> @˽ ) > Hn= PĽn= PĽ ) > H`=!P ) > H]= (`=!P`=!P]= (8f=!( ]= (n=!p08f=!( 8f=!( n=!p0: =!8>n=!p0=!<: =!8>: =!8>=!Ub3!?٘!< !8> !8>٘!<*f!( ٘!N2D =z]?)E):>]?G>p5D`8>4D9:>#]?cx>ވD{H+:>]?k>~]?o׾؆>jD)vƄ>Dzk>~]?o׾>WD #m>J]?׾>bp]?Z1>ED >ED >bp]?Z1>VIEؾ>bp]?Z1e>Sh]?@l>yKEUؾl>yKEUؾHZ>j]?UB ?MEe>Sh]?@t?˽E?I|vb ?E鏢b ?E鏢z?E?_vh?*FcLz?E?_vW>J^?őh?*FcL?)FI|L>Ķ^?ź4C?#X+>^?m>m^? <4C?#X3C?#挹m>m^? m^? <8>/^?H=a{%?B4w`={%?>B`=8>/^?H=dA?B2<>8>/^?H=>&]?Q>_=?B1<>dA?B2<>X>]?RQ>s?CB3>>]?3P>k>]?>&t?B'>n?B6>k>]?>E>C>Z>]?0>[>]?Ȫ>E>C>E>C>i>ƣ]?ҝ>4>%CN?[>]?Ȫ>C >Ԉ]?>4>%CN?:B>\&CG?/ >-]?~>Ѻ>RC4S?C >Ԉ]?>/*>@v]?XS>Ѻ>RC4S?Ѻ>RC4S?I*>Ou]?QR>wm0>?C1@?I*>Ou]?QR> s=l]?k>wm0>?C1@?wm0>?C1@?Q=k]?>f1=C$? s=l]?k> j]?f4?*2=CR$?f1=C$?q 9j]?4? D#? j]?f4?..KE?5?[% D #? D#?.LE?5?MY*\D?..KE?5?f.^?4c>MY*\D?EY;]Dg?f.^?4c>ΦDWw ?pfh^?VW>ҞtB^?FL>'Dx ?ΦDWw ?ҞtB^?FL>uݾE>B^??>ľ^?Ģ>uݾE>ݾE>ľ^?Ģ>E>e&ľ-^?E>Fo]?op>^d~Eu>^d~Eu>mm]?wp>E>yC]?lp>,]?>E>5E>]?>8@ڌ#+>,]?>"]?@-=;@#+>;@#+>?]?-=&B2<4]?,=y]?~rP &B2